changeset 103:711cc77da650

Releasing VIFF 0.4.
author Martin Geisler <mg@daimi.au.dk>
date Wed, 12 Mar 2008 20:52:09 +0100
parents 8a622bc9d73a
children 141b24b0d5c2
files api/0.4/api-objects.txt api/0.4/class-tree.html api/0.4/class_hierarchy_for_fieldeleme.gif api/0.4/class_hierarchy_for_gf256.gif api/0.4/class_hierarchy_for_matrix.gif api/0.4/class_hierarchy_for_prf.gif api/0.4/class_hierarchy_for_share.gif api/0.4/class_hierarchy_for_shareexcha.gif api/0.4/class_hierarchy_for_shareexcha_2.gif api/0.4/class_hierarchy_for_sharelist.gif api/0.4/crarr.png api/0.4/epydoc-log.html api/0.4/epydoc.css api/0.4/epydoc.js api/0.4/frames.html api/0.4/help.html api/0.4/identifier-index.html api/0.4/index.html api/0.4/module-tree.html api/0.4/redirect.html api/0.4/toc-everything.html api/0.4/toc-viff-module.html api/0.4/toc-viff.config-module.html api/0.4/toc-viff.field-module.html api/0.4/toc-viff.matrix-module.html api/0.4/toc-viff.prss-module.html api/0.4/toc-viff.runtime-module.html api/0.4/toc-viff.shamir-module.html api/0.4/toc-viff.util-module.html api/0.4/toc.html api/0.4/viff-module.html api/0.4/viff-pysrc.html api/0.4/viff.config-module.html api/0.4/viff.config-pysrc.html api/0.4/viff.config.Player-class.html api/0.4/viff.field-module.html api/0.4/viff.field-pysrc.html api/0.4/viff.field.FieldElement-class.html api/0.4/viff.field.GF256-class.html api/0.4/viff.matrix-module.html api/0.4/viff.matrix-pysrc.html api/0.4/viff.matrix.Matrix-class.html api/0.4/viff.prss-module.html api/0.4/viff.prss-pysrc.html api/0.4/viff.prss.PRF-class.html api/0.4/viff.runtime-module.html api/0.4/viff.runtime-pysrc.html api/0.4/viff.runtime.Runtime-class.html api/0.4/viff.runtime.Share-class.html api/0.4/viff.runtime.ShareExchanger-class.html api/0.4/viff.runtime.ShareExchangerFactory-class.html api/0.4/viff.runtime.ShareList-class.html api/0.4/viff.shamir-module.html api/0.4/viff.shamir-pysrc.html api/0.4/viff.util-module.html api/0.4/viff.util-pysrc.html release/viff-0.4.tar.bz2 release/viff-0.4.tar.gz release/viff-0.4.win32.exe release/viff-0.4.zip
diffstat 60 files changed, 15722 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/api-objects.txt	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,172 @@
+viff	viff-module.html
+viff.config	viff.config-module.html
+viff.config.generate_subsets	viff.prss-module.html#generate_subsets
+viff.config.generate_configs	viff.config-module.html#generate_configs
+viff.config.load_config	viff.config-module.html#load_config
+viff.field	viff.field-module.html
+viff.field._generate_tables	viff.field-module.html#_generate_tables
+viff.field._inv_table	viff.field-module.html#_inv_table
+viff.field.GF	viff.field-module.html#GF
+viff.field._field_cache	viff.field-module.html#_field_cache
+viff.field._exp_table	viff.field-module.html#_exp_table
+viff.field._log_table	viff.field-module.html#_log_table
+viff.matrix	viff.matrix-module.html
+viff.matrix.hyper	viff.matrix-module.html#hyper
+viff.prss	viff.prss-module.html
+viff.prss.prss	viff.prss-module.html#prss
+viff.prss.generate_subsets	viff.prss-module.html#generate_subsets
+viff.runtime	viff.runtime-module.html
+viff.runtime.prss	viff.prss-module.html#prss
+viff.runtime.wrapper	viff.util-module.html#wrapper
+viff.runtime.increment_pc	viff.runtime-module.html#increment_pc
+viff.runtime.create_runtime	viff.runtime-module.html#create_runtime
+viff.runtime.gather_shares	viff.runtime-module.html#gather_shares
+viff.runtime.println	viff.util-module.html#println
+viff.shamir	viff.shamir-module.html
+viff.shamir.share	viff.shamir-module.html#share
+viff.shamir._recombination_vectors	viff.shamir-module.html#_recombination_vectors
+viff.shamir.recombine	viff.shamir-module.html#recombine
+viff.shamir.verify_sharing	viff.shamir-module.html#verify_sharing
+viff.util	viff.util-module.html
+viff.util.deprecation	viff.util-module.html#deprecation
+viff.util.rand	viff.util-module.html#rand
+viff.util.dlift	viff.util-module.html#dlift
+viff.util._trace_counters	viff.util-module.html#_trace_counters
+viff.util.find_prime	viff.util-module.html#find_prime
+viff.util.trace	viff.util-module.html#trace
+viff.util.wrapper	viff.util-module.html#wrapper
+viff.util.dprint	viff.util-module.html#dprint
+viff.util._indent	viff.util-module.html#_indent
+viff.util._seed	viff.util-module.html#_seed
+viff.util.println	viff.util-module.html#println
+viff.util.clone_deferred	viff.util-module.html#clone_deferred
+viff.config.Player	viff.config.Player-class.html
+viff.config.Player.__init__	viff.config.Player-class.html#__init__
+viff.config.Player.__repr__	viff.config.Player-class.html#__repr__
+viff.config.Player.dealer_prfs	viff.config.Player-class.html#dealer_prfs
+viff.config.Player.prfs	viff.config.Player-class.html#prfs
+viff.field.FieldElement	viff.field.FieldElement-class.html
+viff.field.GF256	viff.field.GF256-class.html
+viff.field.GF256.__rtruediv__	viff.field.GF256-class.html#__rtruediv__
+viff.field.GF256.__str__	viff.field.GF256-class.html#__str__
+viff.field.GF256.__radd__	viff.field.GF256-class.html#__radd__
+viff.field.GF256.__truediv__	viff.field.GF256-class.html#__truediv__
+viff.field.GF256.__rsub__	viff.field.GF256-class.html#__rsub__
+viff.field.GF256.__rdiv__	viff.field.GF256-class.html#__rdiv__
+viff.field.GF256.__rmul__	viff.field.GF256-class.html#__rmul__
+viff.field.GF256.__init__	viff.field.GF256-class.html#__init__
+viff.field.GF256.field	viff.field.GF256-class.html
+viff.field.GF256.modulus	viff.field.GF256-class.html#modulus
+viff.field.GF256.__mul__	viff.field.GF256-class.html#__mul__
+viff.field.GF256.__invert__	viff.field.GF256-class.html#__invert__
+viff.field.GF256.__pow__	viff.field.GF256-class.html#__pow__
+viff.field.GF256.__add__	viff.field.GF256-class.html#__add__
+viff.field.GF256.__eq__	viff.field.GF256-class.html#__eq__
+viff.field.GF256.__rxor__	viff.field.GF256-class.html#__rxor__
+viff.field.GF256.__repr__	viff.field.GF256-class.html#__repr__
+viff.field.GF256.__nonzero__	viff.field.GF256-class.html#__nonzero__
+viff.field.GF256.__xor__	viff.field.GF256-class.html#__xor__
+viff.field.GF256.__div__	viff.field.GF256-class.html#__div__
+viff.field.GF256.__neg__	viff.field.GF256-class.html#__neg__
+viff.field.GF256.__sub__	viff.field.GF256-class.html#__sub__
+viff.matrix.Matrix	viff.matrix.Matrix-class.html
+viff.matrix.Matrix.determinant	viff.matrix.Matrix-class.html#determinant
+viff.matrix.Matrix.__add__	viff.matrix.Matrix-class.html#__add__
+viff.matrix.Matrix.__getitem__	viff.matrix.Matrix-class.html#__getitem__
+viff.matrix.Matrix.__str__	viff.matrix.Matrix-class.html#__str__
+viff.matrix.Matrix.transpose	viff.matrix.Matrix-class.html#transpose
+viff.matrix.Matrix.__radd__	viff.matrix.Matrix-class.html#__radd__
+viff.matrix.Matrix.__setitem__	viff.matrix.Matrix-class.html#__setitem__
+viff.matrix.Matrix._init_set	viff.matrix.Matrix-class.html#_init_set
+viff.matrix.Matrix._init_zeros	viff.matrix.Matrix-class.html#_init_zeros
+viff.matrix.Matrix.__rmul__	viff.matrix.Matrix-class.html#__rmul__
+viff.matrix.Matrix.__init__	viff.matrix.Matrix-class.html#__init__
+viff.matrix.Matrix.__mul__	viff.matrix.Matrix-class.html#__mul__
+viff.prss.PRF	viff.prss.PRF-class.html
+viff.prss.PRF.__call__	viff.prss.PRF-class.html#__call__
+viff.prss.PRF.__init__	viff.prss.PRF-class.html#__init__
+viff.runtime.Runtime	viff.runtime.Runtime-class.html
+viff.runtime.Runtime.num_players	viff.runtime.Runtime-class.html#num_players
+viff.runtime.Runtime._expect_data	viff.runtime.Runtime-class.html#_expect_data
+viff.runtime.Runtime.add_player	viff.runtime.Runtime-class.html#add_player
+viff.runtime.Runtime._finish_greater_than_equal	viff.runtime.Runtime-class.html#_finish_greater_than_equal
+viff.runtime.Runtime._exchange_shares	viff.runtime.Runtime-class.html#_exchange_shares
+viff.runtime.Runtime.greater_than_equalII	viff.runtime.Runtime-class.html#greater_than_equalII
+viff.runtime.Runtime.shutdown	viff.runtime.Runtime-class.html#shutdown
+viff.runtime.Runtime.threshold	viff.runtime.Runtime-class.html#threshold
+viff.runtime.Runtime.wait_for	viff.runtime.Runtime-class.html#wait_for
+viff.runtime.Runtime.open	viff.runtime.Runtime-class.html#open
+viff.runtime.Runtime.id	viff.runtime.Runtime-class.html#id
+viff.runtime.Runtime.__init__	viff.runtime.Runtime-class.html#__init__
+viff.runtime.Runtime.greater_than_equal	viff.runtime.Runtime-class.html#greater_than_equal
+viff.runtime.Runtime.xor	viff.runtime.Runtime-class.html#xor
+viff.runtime.Runtime.sub	viff.runtime.Runtime-class.html#sub
+viff.runtime.Runtime.synchronize	viff.runtime.Runtime-class.html#synchronize
+viff.runtime.Runtime.greater_than_equalII_online	viff.runtime.Runtime-class.html#greater_than_equalII_online
+viff.runtime.Runtime._bracha_delivered	viff.runtime.Runtime-class.html#_bracha_delivered
+viff.runtime.Runtime.add	viff.runtime.Runtime-class.html#add
+viff.runtime.Runtime.mul	viff.runtime.Runtime-class.html#mul
+viff.runtime.Runtime._diamond	viff.runtime.Runtime-class.html#_diamond
+viff.runtime.Runtime._broadcast	viff.runtime.Runtime-class.html#_broadcast
+viff.runtime.Runtime._recombine	viff.runtime.Runtime-class.html#_recombine
+viff.runtime.Runtime.add_options	viff.runtime.Runtime-class.html#add_options
+viff.runtime.Runtime._bracha_echo	viff.runtime.Runtime-class.html#_bracha_echo
+viff.runtime.Runtime.convert_bit_share	viff.runtime.Runtime-class.html#convert_bit_share
+viff.runtime.Runtime._expect_share	viff.runtime.Runtime-class.html#_expect_share
+viff.runtime.Runtime.broadcast	viff.runtime.Runtime-class.html#broadcast
+viff.runtime.Runtime.program_counter	viff.runtime.Runtime-class.html#program_counter
+viff.runtime.Runtime.prss_share_random	viff.runtime.Runtime-class.html#prss_share_random
+viff.runtime.Runtime.protocols	viff.runtime.Runtime-class.html#protocols
+viff.runtime.Runtime.greater_than_equalII_preproc	viff.runtime.Runtime-class.html#greater_than_equalII_preproc
+viff.runtime.Runtime.shamir_share	viff.runtime.Runtime-class.html#shamir_share
+viff.runtime.Runtime._shamir_share	viff.runtime.Runtime-class.html#_shamir_share
+viff.runtime.Runtime.players	viff.runtime.Runtime-class.html#players
+viff.runtime.Runtime.incoming_data	viff.runtime.Runtime-class.html#incoming_data
+viff.runtime.Runtime.convert_bit_share_II	viff.runtime.Runtime-class.html#convert_bit_share_II
+viff.runtime.Runtime.callback	viff.runtime.Runtime-class.html#callback
+viff.runtime.Runtime.prss_share	viff.runtime.Runtime-class.html#prss_share
+viff.runtime.Runtime._bracha_sent_ready	viff.runtime.Runtime-class.html#_bracha_sent_ready
+viff.runtime.Runtime._finish_greater_than_equalII	viff.runtime.Runtime-class.html#_finish_greater_than_equalII
+viff.runtime.Runtime._bracha_ready	viff.runtime.Runtime-class.html#_bracha_ready
+viff.runtime.Share	viff.runtime.Share-class.html
+viff.runtime.Share.__radd__	viff.runtime.Share-class.html#__radd__
+viff.runtime.Share.__rsub__	viff.runtime.Share-class.html#__rsub__
+viff.runtime.Share.__rmul__	viff.runtime.Share-class.html#__rmul__
+viff.runtime.Share.__lt__	viff.runtime.Share-class.html#__lt__
+viff.runtime.Share.__init__	viff.runtime.Share-class.html#__init__
+viff.runtime.Share.clone	viff.runtime.Share-class.html#clone
+viff.runtime.Share.__add__	viff.runtime.Share-class.html#__add__
+viff.runtime.Share.__gt__	viff.runtime.Share-class.html#__gt__
+viff.runtime.Share.__rxor__	viff.runtime.Share-class.html#__rxor__
+viff.runtime.Share.__xor__	viff.runtime.Share-class.html#__xor__
+viff.runtime.Share.__le__	viff.runtime.Share-class.html#__le__
+viff.runtime.Share.__mul__	viff.runtime.Share-class.html#__mul__
+viff.runtime.Share.__sub__	viff.runtime.Share-class.html#__sub__
+viff.runtime.Share.__ge__	viff.runtime.Share-class.html#__ge__
+viff.runtime.ShareExchanger	viff.runtime.ShareExchanger-class.html
+viff.runtime.ShareExchanger.connectionMade	viff.runtime.ShareExchanger-class.html#connectionMade
+viff.runtime.ShareExchanger.sendData	viff.runtime.ShareExchanger-class.html#sendData
+viff.runtime.ShareExchanger.stringReceived	viff.runtime.ShareExchanger-class.html#stringReceived
+viff.runtime.ShareExchanger.sendShare	viff.runtime.ShareExchanger-class.html#sendShare
+viff.runtime.ShareExchanger.loseConnection	viff.runtime.ShareExchanger-class.html#loseConnection
+viff.runtime.ShareExchanger.__init__	viff.runtime.ShareExchanger-class.html#__init__
+viff.runtime.ShareExchangerFactory	viff.runtime.ShareExchangerFactory-class.html
+viff.runtime.ShareExchangerFactory.protocol	viff.runtime.ShareExchanger-class.html
+viff.runtime.ShareExchangerFactory.identify_peer	viff.runtime.ShareExchangerFactory-class.html#identify_peer
+viff.runtime.ShareExchangerFactory.__init__	viff.runtime.ShareExchangerFactory-class.html#__init__
+viff.runtime.ShareList	viff.runtime.ShareList-class.html
+viff.runtime.Share.__radd__	viff.runtime.Share-class.html#__radd__
+viff.runtime.Share.__rsub__	viff.runtime.Share-class.html#__rsub__
+viff.runtime.Share.__rmul__	viff.runtime.Share-class.html#__rmul__
+viff.runtime.Share.__lt__	viff.runtime.Share-class.html#__lt__
+viff.runtime.ShareList.__init__	viff.runtime.ShareList-class.html#__init__
+viff.runtime.Share.clone	viff.runtime.Share-class.html#clone
+viff.runtime.Share.__add__	viff.runtime.Share-class.html#__add__
+viff.runtime.Share.__gt__	viff.runtime.Share-class.html#__gt__
+viff.runtime.Share.__rxor__	viff.runtime.Share-class.html#__rxor__
+viff.runtime.ShareList._callback_fired	viff.runtime.ShareList-class.html#_callback_fired
+viff.runtime.Share.__xor__	viff.runtime.Share-class.html#__xor__
+viff.runtime.Share.__le__	viff.runtime.Share-class.html#__le__
+viff.runtime.Share.__mul__	viff.runtime.Share-class.html#__mul__
+viff.runtime.Share.__sub__	viff.runtime.Share-class.html#__sub__
+viff.runtime.Share.__ge__	viff.runtime.Share-class.html#__ge__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/class-tree.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Class Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">&nbsp;</td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="class-tree.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Class Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink">twisted.internet.protocol.BaseProtocol</strong>:
+      <em class="summary">This is the abstract superclass of all protocols.</em>
+    <ul>
+    <li> <strong class="uidlink">twisted.internet.protocol.Protocol</strong>
+    <ul>
+    <li> <strong class="uidlink">twisted.protocols.basic.Int16StringReceiver</strong>:
+      <em class="summary">A receiver for int16-prefixed strings.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.runtime.ShareExchanger-class.html">viff.runtime.ShareExchanger</a></strong>:
+      <em class="summary">Send and receive shares.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">twisted.internet.defer.Deferred</strong>:
+      <em class="summary">This is a callback which will be put off until later.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.runtime.Share-class.html">viff.runtime.Share</a></strong>:
+      <em class="summary">A shared number.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.runtime.ShareList-class.html">viff.runtime.ShareList</a></strong>:
+      <em class="summary">Create a share that waits on a number of other shares.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">twisted.internet.protocol.Factory</strong>:
+      <em class="summary">This is a factory which produces protocols.</em>
+    <ul>
+    <li> <strong class="uidlink">twisted.internet.protocol.ClientFactory</strong>:
+      <em class="summary">A Protocol factory for clients.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.runtime.ShareExchangerFactory-class.html">viff.runtime.ShareExchangerFactory</a></strong>:
+      <em class="summary">Factory for creating ShareExchanger protocols.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">twisted.internet.protocol.ServerFactory</strong>:
+      <em class="summary">Subclass this to indicate that your protocol.Factory is only usable
+        for servers.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.runtime.ShareExchangerFactory-class.html">viff.runtime.ShareExchangerFactory</a></strong>:
+      <em class="summary">Factory for creating ShareExchanger protocols.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.config.Player-class.html">viff.config.Player</a></strong>:
+      <em class="summary">Wrapper for information about a player in the protocol.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.runtime.Runtime-class.html">viff.runtime.Runtime</a></strong>:
+      <em class="summary">The VIFF runtime.</em>
+    </li>
+    <li> <strong class="uidlink">twisted.protocols.basic._PauseableMixin</strong>
+    <ul>
+    <li> <strong class="uidlink">twisted.protocols.basic.Int16StringReceiver</strong>:
+      <em class="summary">A receiver for int16-prefixed strings.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.runtime.ShareExchanger-class.html">viff.runtime.ShareExchanger</a></strong>:
+      <em class="summary">Send and receive shares.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">object</strong>:
+      <em class="summary">The most base type</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.field.FieldElement-class.html">viff.field.FieldElement</a></strong>:
+      <em class="summary">Common base class for elements.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.field.GF256-class.html">viff.field.GF256</a></strong>:
+      <em class="summary">Models an element of the GF(2^8) field.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.matrix.Matrix-class.html">viff.matrix.Matrix</a></strong>:
+      <em class="summary">A matrix.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.prss.PRF-class.html">viff.prss.PRF</a></strong>:
+      <em class="summary">Models a pseudo random function (a PRF).</em>
+    </li>
+    </ul>
+    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Mar 12 20:49:07 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
Binary file api/0.4/class_hierarchy_for_fieldeleme.gif has changed
Binary file api/0.4/class_hierarchy_for_gf256.gif has changed
Binary file api/0.4/class_hierarchy_for_matrix.gif has changed
Binary file api/0.4/class_hierarchy_for_prf.gif has changed
Binary file api/0.4/class_hierarchy_for_share.gif has changed
Binary file api/0.4/class_hierarchy_for_shareexcha.gif has changed
Binary file api/0.4/class_hierarchy_for_shareexcha_2.gif has changed
Binary file api/0.4/class_hierarchy_for_sharelist.gif has changed
Binary file api/0.4/crarr.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/epydoc-log.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Epydoc Log</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="epydoc">Epydoc Log</h1>
+<p class="log">Epydoc started at Wed Mar 12 20:49:06 2008</p><div class="log-block"><h2 class="log-hdr">In /home/mg/src/viff/viff/test/__init__.py:
+No documentation available!</h2></div><div class="log-info">No warnings or errors!</div><div class="log-block"><h2 class="log-hdr">Epydoc Options</h2><div class="log-info">
+<table border="0" cellpadding="0" cellspacing="0">
+<tr valign="top" class="opt-changed"><td valign="top">configfiles</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>['epydoc.conf']</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">include_log</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">names</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>['viff']</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">prj_name</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'VIFF: Virtual Ideal Functionality Framework'</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">prj_url</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'http://viff.dk/'</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">target</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'doc/api'</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">verbose</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>2</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">verbosity</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>2</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">action</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'html'</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">css</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">debug</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">docformat</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'epytext'</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">dotpath</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">exclude</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>['test']</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">exclude_introspect</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">exclude_parse</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">external_api</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">external_api_file</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">external_api_root</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">fail_on</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">graph_font</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">graph_font_size</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">graphs</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>['classtree']</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">help_file</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">include_source_code</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">inheritance</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'listed'</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">introspect</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">list_classes_separately</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">load_pickle</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">parse</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">prj_link</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">profile</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">pstat_files</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">quiet</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>0</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">redundant_details</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">show_frames</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">show_imports</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">show_private</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">simple_term</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">src_code_tab_width</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>8</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">top_page</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr></table>
+</div>
+</div><p class="log">Epydoc finished at Wed Mar 12 20:49:09 2008</p>
+<p class="log">(Elapsed time: 2 seconds)</p></body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/epydoc.css	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,322 @@
+
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc's
+ * HTML output.
+ *
+ */
+
+/* Default Colors & Styles
+ *   - Set the default foreground & background color with 'body'; and 
+ *     link colors with 'a:link' and 'a:visited'.
+ *   - Use bold for decision list terms.
+ *   - The heading styles defined here are used for headings *within*
+ *     docstring descriptions.  All headings used by epydoc itself use
+ *     either class='epydoc' or class='toc' (CSS styles for both
+ *     defined below).
+ */
+body                        { background: #ffffff; color: #000000; }
+p                           { margin-top: 0.5em; margin-bottom: 0.5em; }
+a:link                      { color: #0000ff; }
+a:visited                   { color: #204080; }
+dt                          { font-weight: bold; }
+h1                          { font-size: +140%; font-style: italic;
+                              font-weight: bold; }
+h2                          { font-size: +125%; font-style: italic;
+                              font-weight: bold; }
+h3                          { font-size: +110%; font-style: italic;
+                              font-weight: normal; }
+code                        { font-size: 100%; }
+/* N.B.: class, not pseudoclass */
+a.link                      { font-family: monospace; }
+ 
+/* Page Header & Footer
+ *   - The standard page header consists of a navigation bar (with
+ *     pointers to standard pages such as 'home' and 'trees'); a
+ *     breadcrumbs list, which can be used to navigate to containing
+ *     classes or modules; options links, to show/hide private
+ *     variables and to show/hide frames; and a page title (using
+ *     <h1>).  The page title may be followed by a link to the
+ *     corresponding source code (using 'span.codelink').
+ *   - The footer consists of a navigation bar, a timestamp, and a
+ *     pointer to epydoc's homepage.
+ */ 
+h1.epydoc                   { margin: 0; font-size: +140%; font-weight: bold; }
+h2.epydoc                   { font-size: +130%; font-weight: bold; }
+h3.epydoc                   { font-size: +115%; font-weight: bold;
+                              margin-top: 0.2em; }
+td h3.epydoc                { font-size: +115%; font-weight: bold;
+                              margin-bottom: 0; }
+table.navbar                { background: #a0c0ff; color: #000000;
+                              border: 2px groove #c0d0d0; }
+table.navbar table          { color: #000000; }
+th.navbar-select            { background: #70b0ff;
+                              color: #000000; } 
+table.navbar a              { text-decoration: none; }  
+table.navbar a:link         { color: #0000ff; }
+table.navbar a:visited      { color: #204080; }
+span.breadcrumbs            { font-size: 85%; font-weight: bold; }
+span.options                { font-size: 70%; }
+span.codelink               { font-size: 85%; }
+td.footer                   { font-size: 85%; }
+
+/* Table Headers
+ *   - Each summary table and details section begins with a 'header'
+ *     row.  This row contains a section title (marked by
+ *     'span.table-header') as well as a show/hide private link
+ *     (marked by 'span.options', defined above).
+ *   - Summary tables that contain user-defined groups mark those
+ *     groups using 'group header' rows.
+ */
+td.table-header             { background: #70b0ff; color: #000000;
+                              border: 1px solid #608090; }
+td.table-header table       { color: #000000; }
+td.table-header table a:link      { color: #0000ff; }
+td.table-header table a:visited   { color: #204080; }
+span.table-header           { font-size: 120%; font-weight: bold; }
+th.group-header             { background: #c0e0f8; color: #000000;
+                              text-align: left; font-style: italic; 
+                              font-size: 115%; 
+                              border: 1px solid #608090; }
+
+/* Summary Tables (functions, variables, etc)
+ *   - Each object is described by a single row of the table with
+ *     two cells.  The left cell gives the object's type, and is
+ *     marked with 'code.summary-type'.  The right cell gives the
+ *     object's name and a summary description.
+ *   - CSS styles for the table's header and group headers are
+ *     defined above, under 'Table Headers'
+ */
+table.summary               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin-bottom: 0.5em; }
+td.summary                  { border: 1px solid #608090; }
+code.summary-type           { font-size: 85%; }
+table.summary a:link        { color: #0000ff; }
+table.summary a:visited     { color: #204080; }
+
+
+/* Details Tables (functions, variables, etc)
+ *   - Each object is described in its own div.
+ *   - A single-row summary table w/ table-header is used as
+ *     a header for each details section (CSS style for table-header
+ *     is defined above, under 'Table Headers').
+ */
+table.details               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin: .2em 0 0 0; }
+table.details table         { color: #000000; }
+table.details a:link        { color: #0000ff; }
+table.details a:visited     { color: #204080; }
+
+/* Fields */
+dl.fields                   { margin-left: 2em; margin-top: 1em;
+                              margin-bottom: 1em; }
+dl.fields dd ul             { margin-left: 0em; padding-left: 0em; }
+dl.fields dd ul li ul       { margin-left: 2em; padding-left: 0em; }
+div.fields                  { margin-left: 2em; }
+div.fields p                { margin-bottom: 0.5em; }
+
+/* Index tables (identifier index, term index, etc)
+ *   - link-index is used for indices containing lists of links
+ *     (namely, the identifier index & term index).
+ *   - index-where is used in link indices for the text indicating
+ *     the container/source for each link.
+ *   - metadata-index is used for indices containing metadata
+ *     extracted from fields (namely, the bug index & todo index).
+ */
+table.link-index            { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; }
+td.link-index               { border-width: 0px; }
+table.link-index a:link     { color: #0000ff; }
+table.link-index a:visited  { color: #204080; }
+span.index-where            { font-size: 70%; }
+table.metadata-index        { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; 
+                              margin: .2em 0 0 0; }
+td.metadata-index           { border-width: 1px; border-style: solid; }
+table.metadata-index a:link { color: #0000ff; }
+table.metadata-index a:visited  { color: #204080; }
+
+/* Function signatures
+ *   - sig* is used for the signature in the details section.
+ *   - .summary-sig* is used for the signature in the summary 
+ *     table, and when listing property accessor functions.
+ * */
+.sig-name                   { color: #006080; }
+.sig-arg                    { color: #008060; }
+.sig-default                { color: #602000; }
+.summary-sig                { font-family: monospace; }
+.summary-sig-name           { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:link
+                            { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:visited
+                            { color: #006080; font-weight: bold; }
+.summary-sig-arg            { color: #006040; }
+.summary-sig-default        { color: #501800; }
+
+/* Subclass list
+ */
+ul.subclass-list { display: inline; }
+ul.subclass-list li { display: inline; }
+
+/* To render variables, classes etc. like functions */
+table.summary .summary-name { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+     a.summary-name:link    { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+    a.summary-name:visited  { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+
+/* Variable values
+ *   - In the 'variable details' sections, each varaible's value is
+ *     listed in a 'pre.variable' box.  The width of this box is
+ *     restricted to 80 chars; if the value's repr is longer than
+ *     this it will be wrapped, using a backslash marked with
+ *     class 'variable-linewrap'.  If the value's repr is longer
+ *     than 3 lines, the rest will be ellided; and an ellipsis
+ *     marker ('...' marked with 'variable-ellipsis') will be used.
+ *   - If the value is a string, its quote marks will be marked
+ *     with 'variable-quote'.
+ *   - If the variable is a regexp, it is syntax-highlighted using
+ *     the re* CSS classes.
+ */
+pre.variable                { padding: .5em; margin: 0;
+                              background: #dce4ec; color: #000000;
+                              border: 1px solid #708890; }
+.variable-linewrap          { color: #604000; font-weight: bold; }
+.variable-ellipsis          { color: #604000; font-weight: bold; }
+.variable-quote             { color: #604000; font-weight: bold; }
+.variable-group             { color: #008000; font-weight: bold; }
+.variable-op                { color: #604000; font-weight: bold; }
+.variable-string            { color: #006030; }
+.variable-unknown           { color: #a00000; font-weight: bold; }
+.re                         { color: #000000; }
+.re-char                    { color: #006030; }
+.re-op                      { color: #600000; }
+.re-group                   { color: #003060; }
+.re-ref                     { color: #404040; }
+
+/* Base tree
+ *   - Used by class pages to display the base class hierarchy.
+ */
+pre.base-tree               { font-size: 80%; margin: 0; }
+
+/* Frames-based table of contents headers
+ *   - Consists of two frames: one for selecting modules; and
+ *     the other listing the contents of the selected module.
+ *   - h1.toc is used for each frame's heading
+ *   - h2.toc is used for subheadings within each frame.
+ */
+h1.toc                      { text-align: center; font-size: 105%;
+                              margin: 0; font-weight: bold;
+                              padding: 0; }
+h2.toc                      { font-size: 100%; font-weight: bold; 
+                              margin: 0.5em 0 0 -0.3em; }
+
+/* Syntax Highlighting for Source Code
+ *   - doctest examples are displayed in a 'pre.py-doctest' block.
+ *     If the example is in a details table entry, then it will use
+ *     the colors specified by the 'table pre.py-doctest' line.
+ *   - Source code listings are displayed in a 'pre.py-src' block.
+ *     Each line is marked with 'span.py-line' (used to draw a line
+ *     down the left margin, separating the code from the line
+ *     numbers).  Line numbers are displayed with 'span.py-lineno'.
+ *     The expand/collapse block toggle button is displayed with
+ *     'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not
+ *     modify the font size of the text.)
+ *   - If a source code page is opened with an anchor, then the
+ *     corresponding code block will be highlighted.  The code
+ *     block's header is highlighted with 'py-highlight-hdr'; and
+ *     the code block's body is highlighted with 'py-highlight'.
+ *   - The remaining py-* classes are used to perform syntax
+ *     highlighting (py-string for string literals, py-name for names,
+ *     etc.)
+ */
+pre.py-doctest              { padding: .5em; margin: 1em;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #708890; }
+table pre.py-doctest        { background: #dce4ec;
+                              color: #000000; }
+pre.py-src                  { border: 2px solid #000000; 
+                              background: #f0f0f0; color: #000000; }
+.py-line                    { border-left: 2px solid #000000; 
+                              margin-left: .2em; padding-left: .4em; }
+.py-lineno                  { font-style: italic; font-size: 90%;
+                              padding-left: .5em; }
+a.py-toggle                 { text-decoration: none; }
+div.py-highlight-hdr        { border-top: 2px solid #000000;
+                              border-bottom: 2px solid #000000;
+                              background: #d8e8e8; }
+div.py-highlight            { border-bottom: 2px solid #000000;
+                              background: #d0e0e0; }
+.py-prompt                  { color: #005050; font-weight: bold;}
+.py-more                    { color: #005050; font-weight: bold;}
+.py-string                  { color: #006030; }
+.py-comment                 { color: #003060; }
+.py-keyword                 { color: #600000; }
+.py-output                  { color: #404040; }
+.py-name                    { color: #000050; }
+.py-name:link               { color: #000050 !important; }
+.py-name:visited            { color: #000050 !important; }
+.py-number                  { color: #005000; }
+.py-defname                 { color: #000060; font-weight: bold; }
+.py-def-name                { color: #000060; font-weight: bold; }
+.py-base-class              { color: #000060; }
+.py-param                   { color: #000060; }
+.py-docstring               { color: #006030; }
+.py-decorator               { color: #804020; }
+/* Use this if you don't want links to names underlined: */
+/*a.py-name                   { text-decoration: none; }*/
+
+/* Graphs & Diagrams
+ *   - These CSS styles are used for graphs & diagrams generated using
+ *     Graphviz dot.  'img.graph-without-title' is used for bare
+ *     diagrams (to remove the border created by making the image
+ *     clickable).
+ */
+img.graph-without-title     { border: none; }
+img.graph-with-title        { border: 1px solid #000000; }
+span.graph-title            { font-weight: bold; }
+span.graph-caption          { }
+
+/* General-purpose classes
+ *   - 'p.indent-wrapped-lines' defines a paragraph whose first line
+ *     is not indented, but whose subsequent lines are.
+ *   - The 'nomargin-top' class is used to remove the top margin (e.g.
+ *     from lists).  The 'nomargin' class is used to remove both the
+ *     top and bottom margin (but not the left or right margin --
+ *     for lists, that would cause the bullets to disappear.)
+ */
+p.indent-wrapped-lines      { padding: 0 0 0 7em; text-indent: -7em; 
+                              margin: 0; }
+.nomargin-top               { margin-top: 0; }
+.nomargin                   { margin-top: 0; margin-bottom: 0; }
+
+/* HTML Log */
+div.log-block               { padding: 0; margin: .5em 0 .5em 0;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #000000; }
+div.log-error               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffb0b0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-warning             { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffffb0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-info               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #b0ffb0; color: #000000;
+                              border: 1px solid #000000; }
+h2.log-hdr                  { background: #70b0ff; color: #000000;
+                              margin: 0; padding: 0em 0.5em 0em 0.5em;
+                              border-bottom: 1px solid #000000; font-size: 110%; }
+p.log                       { font-weight: bold; margin: .5em 0 .5em 0; }
+tr.opt-changed              { color: #000000; font-weight: bold; }
+tr.opt-default              { color: #606060; }
+pre.log                     { margin: 0; padding: 0; padding-left: 1em; }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/epydoc.js	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,293 @@
+function toggle_private() {
+        // Search for any private/public links on this page.  Store
+        // their old text in "cmd," so we will know what action to
+        // take; and change their text to the opposite action.
+        var cmd = "?";
+        var elts = document.getElementsByTagName("a");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "privatelink") {
+            cmd = elts[i].innerHTML;
+            elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")?
+                                    "hide&nbsp;private":"show&nbsp;private");
+          }
+        }
+        // Update all DIVs containing private objects.
+        var elts = document.getElementsByTagName("div");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
+          }
+          else if (elts[i].className == "public") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"block":"none");
+          }
+        }
+        // Update all table rows containing private objects.  Note, we
+        // use "" instead of "block" becaue IE & firefox disagree on what
+        // this should be (block vs table-row), and "" just gives the
+        // default for both browsers.
+        var elts = document.getElementsByTagName("tr");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"");
+          }
+        }
+        // Update all list items containing private objects.
+        var elts = document.getElementsByTagName("li");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?
+                                        "none":"");
+          }
+        }
+        // Update all list items containing private objects.
+        var elts = document.getElementsByTagName("ul");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
+          }
+        }
+        // Set a cookie to remember the current option.
+        document.cookie = "EpydocPrivate="+cmd;
+      }
+function show_private() {
+        var elts = document.getElementsByTagName("a");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "privatelink") {
+            cmd = elts[i].innerHTML;
+            if (cmd && cmd.substr(0,4)=="show")
+                toggle_private();
+          }
+        }
+      }
+function getCookie(name) {
+        var dc = document.cookie;
+        var prefix = name + "=";
+        var begin = dc.indexOf("; " + prefix);
+        if (begin == -1) {
+          begin = dc.indexOf(prefix);
+          if (begin != 0) return null;
+        } else
+        { begin += 2; }
+        var end = document.cookie.indexOf(";", begin);
+        if (end == -1)
+        { end = dc.length; }
+        return unescape(dc.substring(begin + prefix.length, end));
+      }
+function setFrame(url1, url2) {
+          parent.frames[1].location.href = url1;
+          parent.frames[2].location.href = url2;
+      }
+function checkCookie() {
+        var cmd=getCookie("EpydocPrivate");
+        if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0)
+            toggle_private();
+      }
+function toggleCallGraph(id) {
+        var elt = document.getElementById(id);
+        if (elt.style.display == "none")
+            elt.style.display = "block";
+        else
+            elt.style.display = "none";
+      }
+function expand(id) {
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.style.display = "block";
+  var elt = document.getElementById(id+"-expanded-linenums");
+  if (elt) elt.style.display = "block";
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
+  var elt = document.getElementById(id+"-collapsed-linenums");
+  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
+  var elt = document.getElementById(id+"-toggle");
+  if (elt) { elt.innerHTML = "-"; }
+}
+
+function collapse(id) {
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.style.display = "none";
+  var elt = document.getElementById(id+"-expanded-linenums");
+  if (elt) elt.style.display = "none";
+  var elt = document.getElementById(id+"-collapsed-linenums");
+  if (elt) { elt.innerHTML = "<br />"; elt.style.display="block"; }
+  var elt = document.getElementById(id+"-toggle");
+  if (elt) { elt.innerHTML = "+"; }
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) {
+    elt.style.display = "block";
+    
+    var indent = elt.getAttribute("indent");
+    var pad = elt.getAttribute("pad");
+    var s = "<tt class='py-lineno'>";
+    for (var i=0; i<pad.length; i++) { s += "&nbsp;" }
+    s += "</tt>";
+    s += "&nbsp;&nbsp;<tt class='py-line'>";
+    for (var i=0; i<indent.length; i++) { s += "&nbsp;" }
+    s += "<a href='#' onclick='expand(\"" + id;
+    s += "\");return false'>...</a></tt><br />";
+    elt.innerHTML = s;
+  }
+}
+
+function toggle(id) {
+  elt = document.getElementById(id+"-toggle");
+  if (elt.innerHTML == "-")
+      collapse(id); 
+  else
+      expand(id);
+  return false;
+}
+
+function highlight(id) {
+  var elt = document.getElementById(id+"-def");
+  if (elt) elt.className = "py-highlight-hdr";
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.className = "py-highlight";
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) elt.className = "py-highlight";
+}
+
+function num_lines(s) {
+  var n = 1;
+  var pos = s.indexOf("\n");
+  while ( pos > 0) {
+    n += 1;
+    pos = s.indexOf("\n", pos+1);
+  }
+  return n;
+}
+
+// Collapse all blocks that mave more than `min_lines` lines.
+function collapse_all(min_lines) {
+  var elts = document.getElementsByTagName("div");
+  for (var i=0; i<elts.length; i++) {
+    var elt = elts[i];
+    var split = elt.id.indexOf("-");
+    if (split > 0)
+      if (elt.id.substring(split, elt.id.length) == "-expanded")
+        if (num_lines(elt.innerHTML) > min_lines)
+          collapse(elt.id.substring(0, split));
+  }
+}
+
+function expandto(href) {
+  var start = href.indexOf("#")+1;
+  if (start != 0 && start != href.length) {
+    if (href.substring(start, href.length) != "-") {
+      collapse_all(4);
+      pos = href.indexOf(".", start);
+      while (pos != -1) {
+        var id = href.substring(start, pos);
+        expand(id);
+        pos = href.indexOf(".", pos+1);
+      }
+      var id = href.substring(start, href.length);
+      expand(id);
+      highlight(id);
+    }
+  }
+}
+
+function kill_doclink(id) {
+  var parent = document.getElementById(id);
+  parent.removeChild(parent.childNodes.item(0));
+}
+function auto_kill_doclink(ev) {
+  if (!ev) var ev = window.event;
+  if (!this.contains(ev.toElement)) {
+    var parent = document.getElementById(this.parentID);
+    parent.removeChild(parent.childNodes.item(0));
+  }
+}
+
+function doclink(id, name, targets_id) {
+  var elt = document.getElementById(id);
+
+  // If we already opened the box, then destroy it.
+  // (This case should never occur, but leave it in just in case.)
+  if (elt.childNodes.length > 1) {
+    elt.removeChild(elt.childNodes.item(0));
+  }
+  else {
+    // The outer box: relative + inline positioning.
+    var box1 = document.createElement("div");
+    box1.style.position = "relative";
+    box1.style.display = "inline";
+    box1.style.top = 0;
+    box1.style.left = 0;
+  
+    // A shadow for fun
+    var shadow = document.createElement("div");
+    shadow.style.position = "absolute";
+    shadow.style.left = "-1.3em";
+    shadow.style.top = "-1.3em";
+    shadow.style.background = "#404040";
+    
+    // The inner box: absolute positioning.
+    var box2 = document.createElement("div");
+    box2.style.position = "relative";
+    box2.style.border = "1px solid #a0a0a0";
+    box2.style.left = "-.2em";
+    box2.style.top = "-.2em";
+    box2.style.background = "white";
+    box2.style.padding = ".3em .4em .3em .4em";
+    box2.style.fontStyle = "normal";
+    box2.onmouseout=auto_kill_doclink;
+    box2.parentID = id;
+
+    // Get the targets
+    var targets_elt = document.getElementById(targets_id);
+    var targets = targets_elt.getAttribute("targets");
+    var links = "";
+    target_list = targets.split(",");
+    for (var i=0; i<target_list.length; i++) {
+        var target = target_list[i].split("=");
+        links += "<li><a href='" + target[1] + 
+               "' style='text-decoration:none'>" +
+               target[0] + "</a></li>";
+    }
+  
+    // Put it all together.
+    elt.insertBefore(box1, elt.childNodes.item(0));
+    //box1.appendChild(box2);
+    box1.appendChild(shadow);
+    shadow.appendChild(box2);
+    box2.innerHTML =
+        "Which <b>"+name+"</b> do you want to see documentation for?" +
+        "<ul style='margin-bottom: 0;'>" +
+        links + 
+        "<li><a href='#' style='text-decoration:none' " +
+        "onclick='kill_doclink(\""+id+"\");return false;'>"+
+        "<i>None of the above</i></a></li></ul>";
+  }
+  return false;
+}
+
+function get_anchor() {
+          var href = location.href;
+          var start = href.indexOf("#")+1;
+          if ((start != 0) && (start != href.length))
+              return href.substring(start, href.length);
+      }
+function redirect_url(dottedName) {
+          // Scan through each element of the "pages" list, and check
+          // if "name" matches with any of them.
+          for (var i=0; i<pages.length; i++) {
+
+              // Each page has the form "<pagename>-m" or "<pagename>-c";
+              // extract the <pagename> portion & compare it to dottedName.
+              var pagename = pages[i].substring(0, pages[i].length-2);
+              if (pagename == dottedName.substring(0,pagename.length)) {
+
+                  // We've found a page that matches `dottedName`;
+                  // construct its URL, using leftover `dottedName`
+                  // content to form an anchor.
+                  var pagetype = pages[i].charAt(pages[i].length-1);
+                  var url = pagename + ((pagetype=="m")?"-module.html":
+                                                        "-class.html");
+                  if (dottedName.length > pagename.length)
+                      url += "#" + dottedName.substring(pagename.length+1,
+                                                        dottedName.length);
+                  return url;
+              }
+          }
+      }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/frames.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> VIFF: Virtual Ideal Functionality Framework </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="viff-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/help.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Help</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">&nbsp;</td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="help.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+
+<h1 class="epydoc"> API Documentation </h1>
+
+<p> This document contains the API (Application Programming Interface)
+documentation for VIFF: Virtual Ideal Functionality Framework.  Documentation for the Python
+objects defined by the project is divided into separate pages for each
+package, module, and class.  The API documentation also includes two
+pages containing information about the project as a whole: a trees
+page, and an index page.  </p>
+
+<h2> Object Documentation </h2>
+
+  <p>Each <strong>Package Documentation</strong> page contains: </p>
+  <ul>
+    <li> A description of the package. </li>
+    <li> A list of the modules and sub-packages contained by the
+    package.  </li>
+    <li> A summary of the classes defined by the package. </li>
+    <li> A summary of the functions defined by the package. </li>
+    <li> A summary of the variables defined by the package. </li>
+    <li> A detailed description of each function defined by the
+    package. </li>
+    <li> A detailed description of each variable defined by the
+    package. </li>
+  </ul>
+  
+  <p>Each <strong>Module Documentation</strong> page contains:</p>
+  <ul>
+    <li> A description of the module. </li>
+    <li> A summary of the classes defined by the module. </li>
+    <li> A summary of the functions defined by the module. </li>
+    <li> A summary of the variables defined by the module. </li>
+    <li> A detailed description of each function defined by the
+    module. </li>
+    <li> A detailed description of each variable defined by the
+    module. </li>
+  </ul>
+  
+  <p>Each <strong>Class Documentation</strong> page contains: </p>
+  <ul>
+    <li> A class inheritance diagram. </li>
+    <li> A list of known subclasses. </li>
+    <li> A description of the class. </li>
+    <li> A summary of the methods defined by the class. </li>
+    <li> A summary of the instance variables defined by the class. </li>
+    <li> A summary of the class (static) variables defined by the
+    class. </li> 
+    <li> A detailed description of each method defined by the
+    class. </li>
+    <li> A detailed description of each instance variable defined by the
+    class. </li> 
+    <li> A detailed description of each class (static) variable defined
+    by the class. </li> 
+  </ul>
+
+<h2> Project Documentation </h2>
+
+  <p> The <strong>Trees</strong> page contains the module and class hierarchies: </p>
+  <ul>
+    <li> The <em>module hierarchy</em> lists every package and module, with
+    modules grouped into packages.  At the top level, and within each
+    package, modules and sub-packages are listed alphabetically. </li>
+    <li> The <em>class hierarchy</em> lists every class, grouped by base
+    class.  If a class has more than one base class, then it will be
+    listed under each base class.  At the top level, and under each base
+    class, classes are listed alphabetically. </li>
+  </ul>
+  
+  <p> The <strong>Index</strong> page contains indices of terms and
+  identifiers: </p>
+  <ul>
+    <li> The <em>term index</em> lists every term indexed by any object's
+    documentation.  For each term, the index provides links to each
+    place where the term is indexed. </li>
+    <li> The <em>identifier index</em> lists the (short) name of every package,
+    module, class, method, function, variable, and parameter.  For each
+    identifier, the index provides a short description, and a link to
+    its documentation. </li>
+  </ul>
+
+<h2> The Table of Contents </h2>
+
+<p> The table of contents occupies the two frames on the left side of
+the window.  The upper-left frame displays the <em>project
+contents</em>, and the lower-left frame displays the <em>module
+contents</em>: </p>
+
+<table class="help summary" border="1" cellspacing="0" cellpadding="3">
+  <tr style="height: 30%">
+    <td align="center" style="font-size: small">
+       Project<br />Contents<hr />...</td>
+    <td align="center" style="font-size: small" rowspan="2" width="70%">
+      API<br />Documentation<br />Frame<br /><br /><br />
+    </td>
+  </tr>
+  <tr>
+    <td align="center" style="font-size: small">
+      Module<br />Contents<hr />&nbsp;<br />...<br />&nbsp;
+    </td>
+  </tr>
+</table><br />
+
+<p> The <strong>project contents frame</strong> contains a list of all packages
+and modules that are defined by the project.  Clicking on an entry
+will display its contents in the module contents frame.  Clicking on a
+special entry, labeled "Everything," will display the contents of
+the entire project. </p>
+
+<p> The <strong>module contents frame</strong> contains a list of every
+submodule, class, type, exception, function, and variable defined by a
+module or package.  Clicking on an entry will display its
+documentation in the API documentation frame.  Clicking on the name of
+the module, at the top of the frame, will display the documentation
+for the module itself. </p>
+
+<p> The "<strong>frames</strong>" and "<strong>no frames</strong>" buttons below the top
+navigation bar can be used to control whether the table of contents is
+displayed or not. </p>
+
+<h2> The Navigation Bar </h2>
+
+<p> A navigation bar is located at the top and bottom of every page.
+It indicates what type of page you are currently viewing, and allows
+you to go to related pages.  The following table describes the labels
+on the navigation bar.  Note that not some labels (such as
+[Parent]) are not displayed on all pages. </p>
+
+<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%">
+<tr class="summary">
+  <th>Label</th>
+  <th>Highlighted when...</th>
+  <th>Links to...</th>
+</tr>
+  <tr><td valign="top"><strong>[Parent]</strong></td>
+      <td valign="top"><em>(never highlighted)</em></td>
+      <td valign="top"> the parent of the current package </td></tr>
+  <tr><td valign="top"><strong>[Package]</strong></td>
+      <td valign="top">viewing a package</td>
+      <td valign="top">the package containing the current object
+      </td></tr>
+  <tr><td valign="top"><strong>[Module]</strong></td>
+      <td valign="top">viewing a module</td>
+      <td valign="top">the module containing the current object
+      </td></tr> 
+  <tr><td valign="top"><strong>[Class]</strong></td>
+      <td valign="top">viewing a class </td>
+      <td valign="top">the class containing the current object</td></tr>
+  <tr><td valign="top"><strong>[Trees]</strong></td>
+      <td valign="top">viewing the trees page</td>
+      <td valign="top"> the trees page </td></tr>
+  <tr><td valign="top"><strong>[Index]</strong></td>
+      <td valign="top">viewing the index page</td>
+      <td valign="top"> the index page </td></tr>
+  <tr><td valign="top"><strong>[Help]</strong></td>
+      <td valign="top">viewing the help page</td>
+      <td valign="top"> the help page </td></tr>
+</table>
+
+<p> The "<strong>show private</strong>" and "<strong>hide private</strong>" buttons below
+the top navigation bar can be used to control whether documentation
+for private objects is displayed.  Private objects are usually defined
+as objects whose (short) names begin with a single underscore, but do
+not end with an underscore.  For example, "<code>_x</code>",
+"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
+are private objects; but "<code>re.sub</code>",
+"<code>__init__</code>", and "<code>type_</code>" are not.  However,
+if a module defines the "<code>__all__</code>" variable, then its
+contents are used to decide which objects are private. </p>
+
+<p> A timestamp below the bottom navigation bar indicates when each
+page was last updated. </p>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Mar 12 20:49:07 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/identifier-index.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,654 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Identifier Index</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Indices&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">&nbsp;</td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="identifier-index.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table border="0" width="100%">
+<tr valign="bottom"><td>
+<h1 class="epydoc">Identifier Index</h1>
+</td><td>
+[
+ <a href="#A">A</a>
+ <a href="#B">B</a>
+ <a href="#C">C</a>
+ <a href="#D">D</a>
+  E
+ <a href="#F">F</a>
+ <a href="#G">G</a>
+ <a href="#H">H</a>
+ <a href="#I">I</a>
+  J
+  K
+ <a href="#L">L</a>
+ <a href="#M">M</a>
+  N
+ <a href="#O">O</a>
+ <a href="#P">P</a>
+  Q
+ <a href="#R">R</a>
+ <a href="#S">S</a>
+ <a href="#T">T</a>
+ <a href="#U">U</a>
+ <a href="#V">V</a>
+ <a href="#W">W</a>
+ <a href="#X">X</a>
+  Y
+  Z
+ <a href="#_">_</a>
+]
+</td></table>
+<table border="0" width="100%">
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="A">A</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#add">add()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#add_options">add_options()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#add_player">add_player()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="B">B</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#broadcast">broadcast()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="C">C</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#callback">callback()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.config-module.html">config</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#convert_bit_share_II">convert_bit_share_II()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#clone">clone()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html#connectionMade">connectionMade()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime-module.html#create_runtime">create_runtime()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.util-module.html#clone_deferred">clone_deferred()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#convert_bit_share">convert_bit_share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="D">D</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.config.Player-class.html#dealer_prfs">dealer_prfs()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config.Player-class.html">Player</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#determinant">determinant()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.util-module.html#dprint">dprint()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.util-module.html#deprecation">deprecation()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.util-module.html#dlift">dlift()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="F">F</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.field-module.html">field</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.FieldElement-class.html">FieldElement</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.util-module.html#find_prime">find_prime()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="G">G</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime-module.html#gather_shares">gather_shares()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field-module.html#GF">GF()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#greater_than_equalII">greater_than_equalII()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.config-module.html#generate_configs">generate_configs()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config-module.html">viff.config</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html">GF256</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#greater_than_equalII_online">greater_than_equalII_online()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.prss-module.html#generate_subsets">generate_subsets()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.prss-module.html">viff.prss</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#greater_than_equal">greater_than_equal()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#greater_than_equalII_preproc">greater_than_equalII_preproc()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="H">H</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.matrix-module.html#hyper">hyper()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix-module.html">viff.matrix</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="I">I</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchangerFactory-class.html#identify_peer">identify_peer()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchangerFactory-class.html">ShareExchangerFactory</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime-module.html#increment_pc">increment_pc()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="L">L</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.config-module.html#load_config">load_config()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config-module.html">viff.config</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html#loseConnection">loseConnection()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="M">M</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.matrix-module.html">matrix</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#modulus">modulus</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html">Matrix</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix-module.html">viff.matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#mul">mul()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="O">O</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#open">open()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="P">P</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.config.Player-class.html">Player</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config-module.html">viff.config</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.util-module.html#println">println()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#prss_share">prss_share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.prss.PRF-class.html">PRF</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.prss-module.html">viff.prss</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.prss-module.html">prss</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#prss_share_random">prss_share_random()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.config.Player-class.html#prfs">prfs()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config.Player-class.html">Player</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.prss-module.html#prss">prss()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.prss-module.html">viff.prss</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="R">R</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.util-module.html#rand">rand</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime-module.html">runtime</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.shamir-module.html#recombine">recombine()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.shamir-module.html">viff.shamir</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html">Runtime</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="S">S</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html#sendData">sendData()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.shamir-module.html#share">share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.shamir-module.html">viff.shamir</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html#stringReceived">stringReceived()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html#sendShare">sendShare()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#sub">sub()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.shamir-module.html">shamir</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchangerFactory-class.html">ShareExchangerFactory</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#synchronize">synchronize()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#shamir_share">shamir_share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareList-class.html">ShareList</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html">Share</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#shutdown">shutdown()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="T">T</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.util-module.html#trace">trace()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#transpose">transpose()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="U">U</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.util-module.html">util</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="V">V</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.shamir-module.html#verify_sharing">verify_sharing()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.shamir-module.html">viff.shamir</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff-module.html">viff</a></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="W">W</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#wait_for">wait_for()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.util-module.html#wrapper">wrapper()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="X">X</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#xor">xor()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="_">_</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__add__">__add__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__mul__">__mul__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareList-class.html#_callback_fired">_callback_fired()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareList-class.html">ShareList</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__add__">__add__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__mul__">__mul__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#_diamond">_diamond()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__add__">__add__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__mul__">__mul__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#_exchange_shares">_exchange_shares()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.prss.PRF-class.html#__call__">__call__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.prss.PRF-class.html">PRF</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__neg__">__neg__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field-module.html#_exp_table">_exp_table</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__div__">__div__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__nonzero__">__nonzero__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#_expect_data">_expect_data()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__eq__">__eq__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__pow__">__pow__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#_expect_share">_expect_share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__ge__">__ge__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__radd__">__radd__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field-module.html#_field_cache">_field_cache</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__getitem__">__getitem__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__radd__">__radd__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#_finish_greater_than_equal">_finish_greater_than_equal()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__gt__">__gt__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__rdiv__">__rdiv__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#_finish_greater_than_equalII">_finish_greater_than_equalII()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.config.Player-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config.Player-class.html">Player</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.config.Player-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config.Player-class.html">Player</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field-module.html#_generate_tables">_generate_tables()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.util-module.html#_indent">_indent</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__rmul__">__rmul__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#_init_set">_init_set()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.prss.PRF-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.prss.PRF-class.html">PRF</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__rmul__">__rmul__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#_init_zeros">_init_zeros()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__rsub__">__rsub__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field-module.html#_inv_table">_inv_table</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__rxor__">__rxor__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field-module.html#_log_table">_log_table</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__setitem__">__setitem__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.shamir-module.html#_recombination_vectors">_recombination_vectors</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.shamir-module.html">viff.shamir</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchangerFactory-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchangerFactory-class.html">ShareExchangerFactory</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#_recombine">_recombine()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareList-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareList-class.html">ShareList</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.util-module.html#_seed">_seed</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__invert__">__invert__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__sub__">__sub__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#_shamir_share">_shamir_share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__le__">__le__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__xor__">__xor__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.util-module.html#_trace_counters">_trace_counters</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__lt__">__lt__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#_broadcast">_broadcast()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+</table>
+<br /><br /><!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Indices&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Mar 12 20:49:07 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/index.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> VIFF: Virtual Ideal Functionality Framework </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="viff-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/module-tree.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Module Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">&nbsp;</td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="module-tree.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Module Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink"><a href="viff-module.html">viff</a></strong>: <em class="summary">Virtual Ideal Functionality Framework.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.config-module.html">viff.config</a></strong>: <em class="summary">Functions for loading and saving player configurations.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.field-module.html">viff.field</a></strong>: <em class="summary">Modeling of Galois (finite) fields.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.matrix-module.html">viff.matrix</a></strong>: <em class="summary">Basic matrix operations as well as a function to build square 
+        hyper-invertible matrices.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.prss-module.html">viff.prss</a></strong>: <em class="summary">Methods for pseudo-random secret sharing.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.runtime-module.html">viff.runtime</a></strong>: <em class="summary">VIFF runtime.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.shamir-module.html">viff.shamir</a></strong>: <em class="summary">Shamir secret sharing and recombination.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.util-module.html">viff.util</a></strong>: <em class="summary">Miscellaneous utility functions.</em>    </li>
+    </ul>
+    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Mar 12 20:49:07 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/redirect.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,38 @@
+<html><head><title>Epydoc Redirect Page</title>
+<meta http-equiv="cache-control" content="no-cache" />
+<meta http-equiv="expires" content="0" />
+<meta http-equiv="pragma" content="no-cache" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+<!--
+var pages = ["viff.runtime.ShareExchangerFactory-c", "viff.runtime.ShareExchanger-c", "viff.field.FieldElement-c", "viff.runtime.ShareList-c", "viff.runtime.Runtime-c", "viff.config.Player-c", "viff.matrix.Matrix-c", "viff.runtime.Share-c", "viff.field.GF256-c", "viff.prss.PRF-c", "viff.runtime-m", "viff.config-m", "viff.matrix-m", "viff.shamir-m", "viff.field-m", "viff.prss-m", "viff.util-m", "viff-m"];
+var dottedName = get_anchor();
+if (dottedName) {
+    var target = redirect_url(dottedName);
+    if (target) window.location.replace(target);
+}
+// -->
+</script>
+
+<h3>Epydoc Auto-redirect page</h3>
+
+<p>When javascript is enabled, this page will redirect URLs of
+the form <tt>redirect.html#<i>dotted.name</i></tt> to the
+documentation for the object with the given fully-qualified
+dotted name.</p>
+<p><a id="message"> &nbsp; </a></p>
+
+<script type="text/javascript">
+<!--
+if (dottedName) {
+    var msg = document.getElementById("message");
+    msg.innerHTML = "No documentation found for <tt>"+
+                    dottedName+"</tt>";
+}
+// -->
+</script>
+
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/toc-everything.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Everything</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Everything</h1>
+<hr />
+  <h2 class="toc">All Classes</h2>
+    <a target="mainFrame" href="viff.config.Player-class.html"
+     >viff.config.Player</a><br />    <a target="mainFrame" href="viff.field.FieldElement-class.html"
+     >viff.field.FieldElement</a><br />    <a target="mainFrame" href="viff.field.GF256-class.html"
+     >viff.field.GF256</a><br />    <a target="mainFrame" href="viff.matrix.Matrix-class.html"
+     >viff.matrix.Matrix</a><br />    <a target="mainFrame" href="viff.prss.PRF-class.html"
+     >viff.prss.PRF</a><br />    <a target="mainFrame" href="viff.runtime.Runtime-class.html"
+     >viff.runtime.Runtime</a><br />    <a target="mainFrame" href="viff.runtime.Share-class.html"
+     >viff.runtime.Share</a><br />    <a target="mainFrame" href="viff.runtime.ShareExchanger-class.html"
+     >viff.runtime.ShareExchanger</a><br />    <a target="mainFrame" href="viff.runtime.ShareExchangerFactory-class.html"
+     >viff.runtime.ShareExchangerFactory</a><br />    <a target="mainFrame" href="viff.runtime.ShareList-class.html"
+     >viff.runtime.ShareList</a><br />  <h2 class="toc">All Functions</h2>
+    <a target="mainFrame" href="viff.config-module.html#generate_configs"
+     >viff.config.generate_configs</a><br />    <a target="mainFrame" href="viff.config-module.html#load_config"
+     >viff.config.load_config</a><br />    <a target="mainFrame" href="viff.field-module.html#GF"
+     >viff.field.GF</a><br />  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_generate_tables"
+     >viff.field._generate_tables</a><br />  </div>
+    <a target="mainFrame" href="viff.matrix-module.html#hyper"
+     >viff.matrix.hyper</a><br />    <a target="mainFrame" href="viff.prss-module.html#generate_subsets"
+     >viff.prss.generate_subsets</a><br />    <a target="mainFrame" href="viff.prss-module.html#prss"
+     >viff.prss.prss</a><br />    <a target="mainFrame" href="viff.runtime-module.html#create_runtime"
+     >viff.runtime.create_runtime</a><br />    <a target="mainFrame" href="viff.runtime-module.html#gather_shares"
+     >viff.runtime.gather_shares</a><br />    <a target="mainFrame" href="viff.runtime-module.html#increment_pc"
+     >viff.runtime.increment_pc</a><br />    <a target="mainFrame" href="viff.shamir-module.html#recombine"
+     >viff.shamir.recombine</a><br />    <a target="mainFrame" href="viff.shamir-module.html#share"
+     >viff.shamir.share</a><br />    <a target="mainFrame" href="viff.shamir-module.html#verify_sharing"
+     >viff.shamir.verify_sharing</a><br />    <a target="mainFrame" href="viff.util-module.html#clone_deferred"
+     >viff.util.clone_deferred</a><br />    <a target="mainFrame" href="viff.util-module.html#deprecation"
+     >viff.util.deprecation</a><br />    <a target="mainFrame" href="viff.util-module.html#dlift"
+     >viff.util.dlift</a><br />    <a target="mainFrame" href="viff.util-module.html#dprint"
+     >viff.util.dprint</a><br />    <a target="mainFrame" href="viff.util-module.html#find_prime"
+     >viff.util.find_prime</a><br />    <a target="mainFrame" href="viff.util-module.html#println"
+     >viff.util.println</a><br />    <a target="mainFrame" href="viff.util-module.html#trace"
+     >viff.util.trace</a><br />    <a target="mainFrame" href="viff.util-module.html#wrapper"
+     >viff.util.wrapper</a><br />  <h2 class="toc">All Variables</h2>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_exp_table"
+     >viff.field._exp_table</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_field_cache"
+     >viff.field._field_cache</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_inv_table"
+     >viff.field._inv_table</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_log_table"
+     >viff.field._log_table</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.shamir-module.html#_recombination_vectors"
+     >viff.shamir._recombination_vectors</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.util-module.html#_indent"
+     >viff.util._indent</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.util-module.html#_seed"
+     >viff.util._seed</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.util-module.html#_trace_counters"
+     >viff.util._trace_counters</a><br />  </div>
+    <a target="mainFrame" href="viff.util-module.html#rand"
+     >viff.util.rand</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/toc-viff-module.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module viff</h1>
+<hr />
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/toc-viff.config-module.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>config</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module config</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.config.Player-class.html"
+     >Player</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.config-module.html#generate_configs"
+     >generate_configs</a><br />    <a target="mainFrame" href="viff.config-module.html#load_config"
+     >load_config</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/toc-viff.field-module.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>field</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module field</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.field.FieldElement-class.html"
+     >FieldElement</a><br />    <a target="mainFrame" href="viff.field.GF256-class.html"
+     >GF256</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.field-module.html#GF"
+     >GF</a><br />  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_generate_tables"
+     >_generate_tables</a><br />  </div>
+  <h2 class="toc">Variables</h2>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_exp_table"
+     >_exp_table</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_field_cache"
+     >_field_cache</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_inv_table"
+     >_inv_table</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_log_table"
+     >_log_table</a><br />  </div>
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/toc-viff.matrix-module.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>matrix</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module matrix</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.matrix.Matrix-class.html"
+     >Matrix</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.matrix-module.html#hyper"
+     >hyper</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/toc-viff.prss-module.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>prss</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module prss</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.prss.PRF-class.html"
+     >PRF</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.prss-module.html#generate_subsets"
+     >generate_subsets</a><br />    <a target="mainFrame" href="viff.prss-module.html#prss"
+     >prss</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/toc-viff.runtime-module.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>runtime</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module runtime</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.runtime.Runtime-class.html"
+     >Runtime</a><br />    <a target="mainFrame" href="viff.runtime.Share-class.html"
+     >Share</a><br />    <a target="mainFrame" href="viff.runtime.ShareExchanger-class.html"
+     >ShareExchanger</a><br />    <a target="mainFrame" href="viff.runtime.ShareExchangerFactory-class.html"
+     >ShareExchangerFactory</a><br />    <a target="mainFrame" href="viff.runtime.ShareList-class.html"
+     >ShareList</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.runtime-module.html#create_runtime"
+     >create_runtime</a><br />    <a target="mainFrame" href="viff.runtime-module.html#gather_shares"
+     >gather_shares</a><br />    <a target="mainFrame" href="viff.runtime-module.html#increment_pc"
+     >increment_pc</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/toc-viff.shamir-module.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>shamir</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module shamir</h1>
+<hr />
+  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.shamir-module.html#recombine"
+     >recombine</a><br />    <a target="mainFrame" href="viff.shamir-module.html#share"
+     >share</a><br />    <a target="mainFrame" href="viff.shamir-module.html#verify_sharing"
+     >verify_sharing</a><br />  <h2 class="toc">Variables</h2>
+  <div class="private">
+    <a target="mainFrame" href="viff.shamir-module.html#_recombination_vectors"
+     >_recombination_vectors</a><br />  </div>
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/toc-viff.util-module.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>util</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module util</h1>
+<hr />
+  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.util-module.html#clone_deferred"
+     >clone_deferred</a><br />    <a target="mainFrame" href="viff.util-module.html#deprecation"
+     >deprecation</a><br />    <a target="mainFrame" href="viff.util-module.html#dlift"
+     >dlift</a><br />    <a target="mainFrame" href="viff.util-module.html#dprint"
+     >dprint</a><br />    <a target="mainFrame" href="viff.util-module.html#find_prime"
+     >find_prime</a><br />    <a target="mainFrame" href="viff.util-module.html#println"
+     >println</a><br />    <a target="mainFrame" href="viff.util-module.html#trace"
+     >trace</a><br />    <a target="mainFrame" href="viff.util-module.html#wrapper"
+     >wrapper</a><br />  <h2 class="toc">Variables</h2>
+  <div class="private">
+    <a target="mainFrame" href="viff.util-module.html#_indent"
+     >_indent</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.util-module.html#_seed"
+     >_seed</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.util-module.html#_trace_counters"
+     >_trace_counters</a><br />  </div>
+    <a target="mainFrame" href="viff.util-module.html#rand"
+     >rand</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/toc.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Table of Contents</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Table&nbsp;of&nbsp;Contents</h1>
+<hr />
+  <a target="moduleFrame" href="toc-everything.html">Everything</a>
+  <br />
+  <h2 class="toc">Modules</h2>
+    <a target="moduleFrame" href="toc-viff-module.html"
+     onclick="setFrame('toc-viff-module.html','viff-module.html');"     >viff</a><br />    <a target="moduleFrame" href="toc-viff.config-module.html"
+     onclick="setFrame('toc-viff.config-module.html','viff.config-module.html');"     >viff.config</a><br />    <a target="moduleFrame" href="toc-viff.field-module.html"
+     onclick="setFrame('toc-viff.field-module.html','viff.field-module.html');"     >viff.field</a><br />    <a target="moduleFrame" href="toc-viff.matrix-module.html"
+     onclick="setFrame('toc-viff.matrix-module.html','viff.matrix-module.html');"     >viff.matrix</a><br />    <a target="moduleFrame" href="toc-viff.prss-module.html"
+     onclick="setFrame('toc-viff.prss-module.html','viff.prss-module.html');"     >viff.prss</a><br />    <a target="moduleFrame" href="toc-viff.runtime-module.html"
+     onclick="setFrame('toc-viff.runtime-module.html','viff.runtime-module.html');"     >viff.runtime</a><br />    <a target="moduleFrame" href="toc-viff.shamir-module.html"
+     onclick="setFrame('toc-viff.shamir-module.html','viff.shamir-module.html');"     >viff.shamir</a><br />    <a target="moduleFrame" href="toc-viff.util-module.html"
+     onclick="setFrame('toc-viff.util-module.html','viff.util-module.html');"     >viff.util</a><br /><hr />
+  <span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/viff-module.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Package&nbsp;viff
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff-module.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PACKAGE DESCRIPTION ==================== -->
+<h1 class="epydoc">Package viff</h1><p class="nomargin-top"><span class="codelink"><a href="viff-pysrc.html">source&nbsp;code</a></span></p>
+<p>Virtual Ideal Functionality Framework.</p>
+  <p>VIFF is a Python framework for writing multi-party computations (MPC) 
+  in an easy, efficient, and secure way.</p>
+  <h1 class="heading">Overview</h1>
+    <p>VIFF allows you to write a program which will interact with other 
+    programs in order to execute a joint computation. This is called a 
+    multi-party computation, MPC for short.</p>
+    <p>The programs will implement what we call a virtual ideal 
+    functionality (IF). The idea is that the behavior of the programs 
+    should be indistinguishable from the behavior of programs interacting 
+    with a so-called ideal functionality. An ideal functionality is a 
+    player that cannot be corrupted, also known as a trusted third party 
+    (TTP).</p>
+    <p>Interacting with an IF is easy: all players give their inputs to the
+    IF, which computes the results. The results are then distributed to the
+    correct players. The inputs and the results are sent over secure 
+    channels, and since the IF cannot be corrupted, this ideal protocol 
+    must be secure.</p>
+    <p>In the real world there is no IF, but VIFF allows you to implement a
+    virtual ideal functionality. The behavior of a bunch of programs using 
+    VIFF is indistinguishable from program running in the ideal world. It 
+    is indistinguishable in the sense that everything that can happen in 
+    the real world protocol could happen in the ideal world too. And since 
+    no attacks can occur in the ideal world, no attacks can occur in the 
+    real world as well. Such a multi-party computation (MPC) is called a 
+    secure multi-party computation (SMPC).</p>
+    <h2 class="heading">Security Assumptions</h2>
+      <p>Please note that like all cryptographic systems, VIFF is only 
+      secure as long as certain assumptions are fulfilled. These 
+      assumptions include:</p>
+      <ul>
+        <li>
+          The adversary can only corrupt up to a certain threshold of the 
+          total number of players. The threshold will normally be 1/2 of 
+          the players, so for three players, at most one player may be 
+          corrupted (there must be an honest majority).
+        </li>
+        <li>
+          The adversary is computationally bounded. The protocols used by 
+          VIFF rely on certain computational hardness assumptions, and 
+          therefore only polynomial time adversaries are allowed.
+        </li>
+        <li>
+          The adversary is passive. Being passive means that the adversary 
+          only monitors the network traffic, but still follows the 
+          protocol. We plan to add support for active (Byzantine) 
+          adversaries in a future version.
+        </li>
+      </ul>
+      <p>The precise assumptions for each protocol will eventually be 
+      included in the documentation for the corresponding method, but this 
+      has not yet been done.</p>
+  <h1 class="heading">Architecture</h1>
+    <p>VIFF consists of several modules. The <a 
+    href="viff.runtime-module.html" class="link">runtime</a> module 
+    contains the <a href="viff.runtime.Runtime-class.html" 
+    class="link">Runtime</a> and <a href="viff.runtime.Share-class.html" 
+    class="link">Share</a> classes, in which the main functionality is 
+    implemented. The <a href="viff.field-module.html" 
+    class="link">field</a> module contains implementations of finite fields
+    --- these are the values inside the shares. Other modules provide 
+    support functions.</p>
+    <h2 class="heading">Layers</h2>
+      <p>The main functionality in VIFF is implemented in the <a 
+      href="viff.runtime.Runtime-class.html" class="link">Runtime</a> 
+      class. This class offers methods to do addition, multiplication, etc.
+      These methods operate on <a href="viff.runtime.Share-class.html" 
+      class="link">Share</a> instances.</p>
+      <p>Shares hold either <a href="viff.field-module.html#GF" 
+      class="link">field.GF</a> or <a href="viff.field.GF256-class.html" 
+      class="link">GF256</a> elements and are created from the 
+      <code>shamir_share</code> or <code>prss_share</code> Runtime methods.
+      Shares overload the standard arithmetic operators, so you can write 
+      <code>a + b - c * d</code> with four shares, and it will be 
+      translated correctly into the appropriate method calls on the Runtime
+      instance associated with the shares.</p>
+      <p>A field element contain the concrete value on which we do 
+      calculations. This is just a normal Python (long) integer. The value 
+      is wrapped in an object that will keep track of doing modulo 
+      reductions as appropriate.</p>
+      <p>So in a nutshell, VIFF has these layers:</p>
+      <ul>
+        <li>
+          Top-level layer for application programs: There you manipulate 
+          Python integers or <a href="viff.runtime.Share-class.html" 
+          class="link">Share</a> instances.
+        </li>
+        <li>
+          Runtime layer: The runtime deals with Python integers or shares.
+        </li>
+        <li>
+          Field elements: Deals with arithmetic over Python integers, but 
+          with modulo reductions as needed.
+        </li>
+      </ul>
+  <h1 class="heading">Getting into VIFF</h1>
+    <p>As explained above, the main functionality in VIFF is the <a 
+    href="viff.runtime.Runtime-class.html" class="link">Runtime</a> class, 
+    so please start there. Also, be sure to checkout the example 
+    applications distributed in the <code>apps</code> directory.</p>
+
+<hr />
+<div class="fields">      <p><strong>Author:</strong>
+        <a href="mailto:viff-devel@viff.dk" target="_top">VIFF Development 
+        Team</a>
+      </p>
+      <p><strong>See Also:</strong>
+        <a href="http://viff.dk/" target="_top">http://viff.dk/</a>
+      </p>
+      <p><strong>Version:</strong>
+        0.4
+      </p>
+      <p><strong>License:</strong>
+        GNU GPL
+      </p>
+</div><!-- ==================== SUBMODULES ==================== -->
+<a name="section-Submodules"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Submodules</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Submodules"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr><td class="summary">
+  <ul class="nomargin">
+    <li> <strong class="uidlink"><a href="viff.config-module.html">viff.config</a></strong>: <em class="summary">Functions for loading and saving player configurations.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.field-module.html">viff.field</a></strong>: <em class="summary">Modeling of Galois (finite) fields.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.matrix-module.html">viff.matrix</a></strong>: <em class="summary">Basic matrix operations as well as a function to build square 
+        hyper-invertible matrices.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.prss-module.html">viff.prss</a></strong>: <em class="summary">Methods for pseudo-random secret sharing.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.runtime-module.html">viff.runtime</a></strong>: <em class="summary">VIFF runtime.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.shamir-module.html">viff.shamir</a></strong>: <em class="summary">Shamir secret sharing and recombination.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.util-module.html">viff.util</a></strong>: <em class="summary">Miscellaneous utility functions.</em>    </li>
+  </ul></td></tr>
+</table>
+
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Mar 12 20:49:07 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/viff-pysrc.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Package&nbsp;viff
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff-pysrc.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="viff-module.html">Package viff</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># Copyright 2007, 2008 VIFF Development Team.</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of VIFF, the Virtual Ideal Functionality Framework.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># VIFF is free software; you can redistribute it and/or modify it</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># under the terms of the GNU General Public License as published by</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># the Free Software Foundation; either version 2 of the License, or</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (at your option) any later version.</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># VIFF is distributed in the hope that it will be useful, but</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># General Public License for more details.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU General Public License</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with VIFF in the file COPYING; if not, write to the Free</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 02110-1301 USA</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring">Virtual Ideal Functionality Framework.</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring">VIFF is a Python framework for writing multi-party computations (MPC)</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring">in an easy, efficient, and secure way.</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring">Overview</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring">========</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring">VIFF allows you to write a program which will interact with other</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring">programs in order to execute a joint computation. This is called a</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-docstring">multi-party computation, MPC for short.</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-docstring">The programs will implement what we call a virtual ideal functionality</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-docstring">(IF). The idea is that the behavior of the programs should be</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-docstring">indistinguishable from the behavior of programs interacting with a</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-docstring">so-called ideal functionality. An ideal functionality is a player that</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-docstring">cannot be corrupted, also known as a trusted third party (TTP).</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-docstring">Interacting with an IF is easy: all players give their inputs to the</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-docstring">IF, which computes the results. The results are then distributed to</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring">the correct players. The inputs and the results are sent over secure</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring">channels, and since the IF cannot be corrupted, this ideal protocol</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring">must be secure.</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring">In the real world there is no IF, but VIFF allows you to implement a</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring">virtual ideal functionality. The behavior of a bunch of programs using</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring">VIFF is indistinguishable from program running in the ideal world. It</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring">is indistinguishable in the sense that everything that can happen in</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring">the real world protocol could happen in the ideal world too. And since</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring">no attacks can occur in the ideal world, no attacks can occur in the</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring">real world as well. Such a multi-party computation (MPC) is called a</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring">secure multi-party computation (SMPC).</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring">Security Assumptions</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">--------------------</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">Please note that like all cryptographic systems, VIFF is only secure</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">as long as certain assumptions are fulfilled. These assumptions</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">include:</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring">  - The adversary can only corrupt up to a certain threshold of the</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-docstring">    total number of players. The threshold will normally be 1/2 of the</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring">    players, so for three players, at most one player may be</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-docstring">    corrupted (there must be an honest majority).</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-docstring">  - The adversary is computationally bounded. The protocols used by</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-docstring">    VIFF rely on certain computational hardness assumptions, and</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-docstring">    therefore only polynomial time adversaries are allowed.</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-docstring">  - The adversary is passive. Being passive means that the adversary</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-docstring">    only monitors the network traffic, but still follows the protocol.</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring">    We plan to add support for active (Byzantine) adversaries in a</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-docstring">    future version.</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring">The precise assumptions for each protocol will eventually be included</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-docstring">in the documentation for the corresponding method, but this has not</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring">yet been done.</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-docstring">Architecture</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-docstring">============</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-docstring">VIFF consists of several modules. The L{runtime} module contains the</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-docstring">L{Runtime} and L{Share} classes, in which the main functionality is</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-docstring">implemented. The L{field} module contains implementations of finite</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-docstring">fields --- these are the values inside the shares. Other modules</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-docstring">provide support functions.</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-docstring">Layers</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">------</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-docstring">The main functionality in VIFF is implemented in the L{Runtime} class.</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-docstring">This class offers methods to do addition, multiplication, etc. These</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-docstring">methods operate on L{Share} instances.</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-docstring">Shares hold either L{field.GF} or L{GF256} elements and are created</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-docstring">from the C{shamir_share} or C{prss_share} Runtime methods. Shares</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-docstring">overload the standard arithmetic operators, so you can write C{a + b -</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring">c * d} with four shares, and it will be translated correctly into the</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring">appropriate method calls on the Runtime instance associated with the</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring">shares.</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring">A field element contain the concrete value on which we do</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring">calculations. This is just a normal Python (long) integer. The value</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-docstring">is wrapped in an object that will keep track of doing modulo</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-docstring">reductions as appropriate.</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-docstring">So in a nutshell, VIFF has these layers:</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-docstring">  - Top-level layer for application programs: There you manipulate</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-docstring">    Python integers or L{Share} instances.</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"><tt class="py-docstring">  - Runtime layer: The runtime deals with Python integers or shares.</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-docstring">  - Field elements: Deals with arithmetic over Python integers, but</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-docstring">    with modulo reductions as needed.</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-docstring">Getting into VIFF</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-docstring">=================</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-docstring">As explained above, the main functionality in VIFF is the L{Runtime}</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-docstring">class, so please start there. Also, be sure to checkout the example</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-docstring">applications distributed in the C{apps} directory.</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"><tt class="py-docstring">@authors: U{VIFF Development Team &lt;mailto:viff-devel@viff.dk&gt;}</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"><tt class="py-docstring">@see: U{http://viff.dk/}</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-name">__version__</tt> <tt class="py-op">=</tt> <tt class="py-string">'0.4'</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-name">__license__</tt> <tt class="py-op">=</tt> <tt class="py-string">'GNU GPL'</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Mar 12 20:49:09 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/viff.config-module.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,292 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff.config</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="viff-module.html">Package&nbsp;viff</a> ::
+        Module&nbsp;config
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff.config-module.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module config</h1><p class="nomargin-top"><span class="codelink"><a href="viff.config-pysrc.html">source&nbsp;code</a></span></p>
+<p>Functions for loading and saving player configurations.</p>
+  <p>Each player participating in a protocol execution must know some 
+  information about the other players, namely their hostname and port 
+  number. The player also needs to know something about itself, namely the 
+  keys used for pseudo-random secret sharing (PRSS).</p>
+  <p>The <a href="viff.config.Player-class.html" class="link">Player</a> 
+  class encapsulates this information. Generating a player configuration is
+  done using the <a href="viff.config-module.html#generate_configs" 
+  class="link">generate_configs</a> function. The 
+  <code>apps/generate_config_files.py</code> script uses that function to 
+  generate a player config and save it in a number of .ini files. Such a 
+  .ini file can be loaded with the <a 
+  href="viff.config-module.html#load_config" class="link">load_config</a> 
+  function.</p>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="viff.config.Player-class.html" class="summary-name">Player</a><br />
+      Wrapper for information about a player in the protocol.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code>, <code>dict</code> from <code>int</code> to <a 
+      href="viff.config.Player-class.html" class="link">Player</a> 
+      instances.</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.config-module.html#load_config" class="summary-sig-name">load_config</a>(<span class="summary-sig-arg">source</span>)</span><br />
+      Load a player configuration file.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.config-pysrc.html#load_config">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>dict</code> from <code>int</code> to <code>ConfigObj</code>.</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.config-module.html#generate_configs" class="summary-sig-name">generate_configs</a>(<span class="summary-sig-arg">n</span>,
+        <span class="summary-sig-arg">t</span>,
+        <span class="summary-sig-arg">addresses</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">prefix</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Generate player configurations.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.config-pysrc.html#generate_configs">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="load_config"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">load_config</span>(<span class="sig-arg">source</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="viff.config-pysrc.html#load_config">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Load a player configuration file.</p>
+  <p>Configuration files are simple INI-files containing information 
+  (hostname and port number) about the other players in the protocol.</p>
+  <p>One of the players own the config file and for this player additional 
+  information on PRSS keys is available.</p>
+  <dl class="fields">
+    <dt>Returns: <code>int</code>, <code>dict</code> from <code>int</code> to <a 
+      href="viff.config.Player-class.html" class="link">Player</a> 
+      instances.</dt>
+        <dd>owner ID and a mapping of player IDs to players.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="generate_configs"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">generate_configs</span>(<span class="sig-arg">n</span>,
+        <span class="sig-arg">t</span>,
+        <span class="sig-arg">addresses</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">prefix</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="viff.config-pysrc.html#generate_configs">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Generate player configurations.</p>
+  <p>The configurations are returned as <code>ConfigObj</code>s and can be 
+  saved to disk if desired.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>n</code></strong> - number of players.</li>
+        <li><strong class="pname"><code>t</code></strong> - threshold.</li>
+        <li><strong class="pname"><code>addresses</code></strong> - list of (host, port) pairs.</li>
+        <li><strong class="pname"><code>prefix</code></strong> - filename prefix.</li>
+    </ul></dd>
+    <dt>Returns: <code>dict</code> from <code>int</code> to <code>ConfigObj</code>.</dt>
+        <dd>mapping from player id to player configuration.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Mar 12 20:49:07 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/viff.config-pysrc.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,354 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff.config</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="viff-module.html">Package&nbsp;viff</a> ::
+        Module&nbsp;config
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff.config-pysrc.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="viff.config-module.html">Module viff.config</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># Copyright 2007, 2008 VIFF Development Team.</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of VIFF, the Virtual Ideal Functionality Framework.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># VIFF is free software; you can redistribute it and/or modify it</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># under the terms of the GNU General Public License as published by</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># the Free Software Foundation; either version 2 of the License, or</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (at your option) any later version.</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># VIFF is distributed in the hope that it will be useful, but</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># General Public License for more details.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU General Public License</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with VIFF in the file COPYING; if not, write to the Free</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 02110-1301 USA</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring">"""Functions for loading and saving player configurations.</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring">Each player participating in a protocol execution must know some</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring">information about the other players, namely their hostname and port</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring">number. The player also needs to know something about itself, namely</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring">the keys used for pseudo-random secret sharing (PRSS).</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring">The L{Player} class encapsulates this information. Generating a player</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring">configuration is done using the L{generate_configs} function. The</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring">C{apps/generate_config_files.py} script uses that function to generate</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring">a player config and save it in a number of .ini files. Such a .ini</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-docstring">file can be loaded with the L{load_config} function.</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">configobj</tt> <tt class="py-keyword">import</tt> <tt class="py-name">ConfigObj</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package viff=viff-module.html"><a title="viff" class="py-name" href="#" onclick="return doclink('link-0', 'viff', 'link-0');">viff</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module viff.prss=viff.prss-module.html,Function viff.prss.prss()=viff.prss-module.html#prss"><a title="viff.prss
+viff.prss.prss" class="py-name" href="#" onclick="return doclink('link-1', 'prss', 'link-1');">prss</a></tt> <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Function viff.prss.generate_subsets()=viff.prss-module.html#generate_subsets"><a title="viff.prss.generate_subsets" class="py-name" href="#" onclick="return doclink('link-2', 'generate_subsets', 'link-2');">generate_subsets</a></tt><tt class="py-op">,</tt> <tt id="link-3" class="py-name" targets="Class viff.prss.PRF=viff.prss.PRF-class.html"><a title="viff.prss.PRF" class="py-name" href="#" onclick="return doclink('link-3', 'PRF', 'link-3');">PRF</a></tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-4" class="py-name"><a title="viff" class="py-name" href="#" onclick="return doclink('link-4', 'viff', 'link-0');">viff</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Module viff.util=viff.util-module.html"><a title="viff.util" class="py-name" href="#" onclick="return doclink('link-5', 'util', 'link-5');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-6" class="py-name" targets="Variable viff.util.rand=viff.util-module.html#rand"><a title="viff.util.rand" class="py-name" href="#" onclick="return doclink('link-6', 'rand', 'link-6');">rand</a></tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"> </tt>
+<a name="Player"></a><div id="Player-def"><a name="L40"></a><tt class="py-lineno"> 40</tt> <a class="py-toggle" href="#" id="Player-toggle" onclick="return toggle('Player');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="viff.config.Player-class.html">Player</a><tt class="py-op">:</tt> </tt>
+</div><div id="Player-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Player-expanded"><a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">    <tt class="py-docstring">"""Wrapper for information about a player in the protocol."""</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"> </tt>
+<a name="Player.__init__"></a><div id="Player.__init__-def"><a name="L43"></a><tt class="py-lineno"> 43</tt> <a class="py-toggle" href="#" id="Player.__init__-toggle" onclick="return toggle('Player.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.config.Player-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">id</tt><tt class="py-op">,</tt> <tt class="py-param">host</tt><tt class="py-op">,</tt> <tt class="py-param">port</tt><tt class="py-op">,</tt> <tt class="py-param">keys</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">dealer_keys</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Player.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Player.__init__-expanded"><a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">        <tt class="py-docstring">"""Initialize a player."""</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-op">=</tt> <tt class="py-name">id</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host</tt> <tt class="py-op">=</tt> <tt class="py-name">host</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">port</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt> <tt class="py-op">=</tt> <tt class="py-name">keys</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dealer_keys</tt> <tt class="py-op">=</tt> <tt class="py-name">dealer_keys</tt> </tt>
+</div><a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"> </tt>
+<a name="Player.prfs"></a><div id="Player.prfs-def"><a name="L51"></a><tt class="py-lineno"> 51</tt> <a class="py-toggle" href="#" id="Player.prfs-toggle" onclick="return toggle('Player.prfs');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.config.Player-class.html#prfs">prfs</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">modulus</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Player.prfs-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Player.prfs-expanded"><a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">        <tt class="py-docstring">"""Retrieve PRSS PRFs.</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring">        The pseudo-random functions are used when this player is part</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">        of a pseudo-random secret sharing for sharing an element</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring">        random to all players.</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">        @return: mapping from player subsets to L{PRF} instances.</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">        @returntype: L{dict} from L{frozenset} to L{PRF} instances.</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">        <tt id="link-7" class="py-name" targets="Method viff.config.Player.prfs()=viff.config.Player-class.html#prfs"><a title="viff.config.Player.prfs" class="py-name" href="#" onclick="return doclink('link-7', 'prfs', 'link-7');">prfs</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">subset</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">            <tt id="link-8" class="py-name"><a title="viff.config.Player.prfs" class="py-name" href="#" onclick="return doclink('link-8', 'prfs', 'link-7');">prfs</a></tt><tt class="py-op">[</tt><tt class="py-name">subset</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-9" class="py-name"><a title="viff.prss.PRF" class="py-name" href="#" onclick="return doclink('link-9', 'PRF', 'link-3');">PRF</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt id="link-10" class="py-name" targets="Variable viff.field.GF256.modulus=viff.field.GF256-class.html#modulus"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-10', 'modulus', 'link-10');">modulus</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">        <tt class="py-comment"># TODO: the PRFs ought to be cached</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt id="link-11" class="py-name"><a title="viff.config.Player.prfs" class="py-name" href="#" onclick="return doclink('link-11', 'prfs', 'link-7');">prfs</a></tt> </tt>
+</div><a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"> </tt>
+<a name="Player.dealer_prfs"></a><div id="Player.dealer_prfs-def"><a name="L67"></a><tt class="py-lineno"> 67</tt> <a class="py-toggle" href="#" id="Player.dealer_prfs-toggle" onclick="return toggle('Player.dealer_prfs');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.config.Player-class.html#dealer_prfs">dealer_prfs</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">modulus</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Player.dealer_prfs-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Player.dealer_prfs-expanded"><a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">        <tt class="py-docstring">"""Retrieve dealer PRSS PRFs.</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-docstring">        The pseudo-random functions are used when this player is the</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-docstring">        dealer in a pseudo-random secret sharing.</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-docstring">        @return: mapping from player subsets to L{PRF} instances.</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-docstring">        @returntype: L{dict} from L{frozenset} to L{PRF} instances.</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">        <tt class="py-name">dealers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">dealer</tt><tt class="py-op">,</tt> <tt class="py-name">keys</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dealer_keys</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">            <tt id="link-12" class="py-name"><a title="viff.config.Player.prfs" class="py-name" href="#" onclick="return doclink('link-12', 'prfs', 'link-7');">prfs</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">subset</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">keys</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">                <tt id="link-13" class="py-name"><a title="viff.config.Player.prfs" class="py-name" href="#" onclick="return doclink('link-13', 'prfs', 'link-7');">prfs</a></tt><tt class="py-op">[</tt><tt class="py-name">subset</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-14" class="py-name"><a title="viff.prss.PRF" class="py-name" href="#" onclick="return doclink('link-14', 'PRF', 'link-3');">PRF</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt id="link-15" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-15', 'modulus', 'link-10');">modulus</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">                <tt class="py-name">dealers</tt><tt class="py-op">[</tt><tt class="py-name">dealer</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-16" class="py-name"><a title="viff.config.Player.prfs" class="py-name" href="#" onclick="return doclink('link-16', 'prfs', 'link-7');">prfs</a></tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">        <tt class="py-comment"># TODO: the PRFs ought to be cached</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">dealers</tt> </tt>
+</div><a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"> </tt>
+<a name="Player.__repr__"></a><div id="Player.__repr__-def"><a name="L85"></a><tt class="py-lineno"> 85</tt> <a class="py-toggle" href="#" id="Player.__repr__-toggle" onclick="return toggle('Player.__repr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.config.Player-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Player.__repr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Player.__repr__-expanded"><a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">        <tt class="py-docstring">"""Simple string representation of the player."""</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"&lt;Player %d: %s:%d&gt;"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">port</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"> </tt>
+<a name="load_config"></a><div id="load_config-def"><a name="L90"></a><tt class="py-lineno"> 90</tt> <a class="py-toggle" href="#" id="load_config-toggle" onclick="return toggle('load_config');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.config-module.html#load_config">load_config</a><tt class="py-op">(</tt><tt class="py-param">source</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="load_config-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="load_config-expanded"><a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">    <tt class="py-docstring">"""Load a player configuration file.</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-docstring">    Configuration files are simple INI-files containing information</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-docstring">    (hostname and port number) about the other players in the</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-docstring">    protocol.</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-docstring">    One of the players own the config file and for this player</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring">    additional information on PRSS keys is available.</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring">    @return: owner ID and a mapping of player IDs to players.</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring">    @returntype: C{int}, C{dict} from C{int} to L{Player} instances.</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">s_unstr</tt><tt class="py-op">(</tt><tt class="py-param">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">        <tt class="py-docstring">"""Convert a string to a subset ID."""</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">frozenset</tt><tt class="py-op">(</tt><tt class="py-name">map</tt><tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">p_unstr</tt><tt class="py-op">(</tt><tt class="py-param">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">        <tt class="py-docstring">"""Convert a string to a player ID."""</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">[</tt><tt class="py-number">7</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">d_unstr</tt><tt class="py-op">(</tt><tt class="py-param">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">        <tt class="py-docstring">"""Convert a string to a dealer ID."""</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">[</tt><tt class="py-number">7</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">,</tt> <tt class="py-name">ConfigObj</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">        <tt id="link-17" class="py-name" targets="Module viff.config=viff.config-module.html"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-17', 'config', 'link-17');">config</a></tt> <tt class="py-op">=</tt> <tt class="py-name">source</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">        <tt id="link-18" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-18', 'config', 'link-17');">config</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ConfigObj</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">,</tt> <tt class="py-name">file_error</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">    <tt class="py-name">players</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">player</tt> <tt class="py-keyword">in</tt> <tt id="link-19" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-19', 'config', 'link-17');">config</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">        <tt class="py-name">id</tt> <tt class="py-op">=</tt> <tt class="py-name">p_unstr</tt><tt class="py-op">(</tt><tt class="py-name">player</tt><tt class="py-op">)</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">        <tt class="py-name">host</tt> <tt class="py-op">=</tt> <tt id="link-20" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-20', 'config', 'link-17');">config</a></tt><tt class="py-op">[</tt><tt class="py-name">player</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'host'</tt><tt class="py-op">]</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">        <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt id="link-21" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-21', 'config', 'link-17');">config</a></tt><tt class="py-op">[</tt><tt class="py-name">player</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'port'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'prss_keys'</tt> <tt class="py-keyword">in</tt> <tt id="link-22" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-22', 'config', 'link-17');">config</a></tt><tt class="py-op">[</tt><tt class="py-name">player</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">            <tt class="py-name">keys</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">subset</tt> <tt class="py-keyword">in</tt> <tt id="link-23" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-23', 'config', 'link-17');">config</a></tt><tt class="py-op">[</tt><tt class="py-name">player</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'prss_keys'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">                <tt class="py-name">keys</tt><tt class="py-op">[</tt><tt class="py-name">s_unstr</tt><tt class="py-op">(</tt><tt class="py-name">subset</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-24" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-24', 'config', 'link-17');">config</a></tt><tt class="py-op">[</tt><tt class="py-name">player</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'prss_keys'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">subset</tt><tt class="py-op">]</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">            <tt class="py-name">dealer_keys</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">dealer</tt> <tt class="py-keyword">in</tt> <tt id="link-25" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-25', 'config', 'link-17');">config</a></tt><tt class="py-op">[</tt><tt class="py-name">player</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'prss_dealer_keys'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">                <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">d_unstr</tt><tt class="py-op">(</tt><tt class="py-name">dealer</tt><tt class="py-op">)</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">                <tt class="py-name">dealer_keys</tt><tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">                <tt class="py-comment"># TODO: rewrite with shorter lines</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">for</tt> <tt class="py-name">subset</tt> <tt class="py-keyword">in</tt> <tt id="link-26" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-26', 'config', 'link-17');">config</a></tt><tt class="py-op">[</tt><tt class="py-name">player</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'prss_dealer_keys'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">dealer</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">                    <tt class="py-name">dealer_keys</tt><tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">s_unstr</tt><tt class="py-op">(</tt><tt class="py-name">subset</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-27" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-27', 'config', 'link-17');">config</a></tt><tt class="py-op">[</tt><tt class="py-name">player</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'prss_dealer_keys'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">dealer</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">subset</tt><tt class="py-op">]</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">            <tt class="py-name">players</tt><tt class="py-op">[</tt><tt class="py-name">id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-28" class="py-name" targets="Class viff.config.Player=viff.config.Player-class.html"><a title="viff.config.Player" class="py-name" href="#" onclick="return doclink('link-28', 'Player', 'link-28');">Player</a></tt><tt class="py-op">(</tt><tt class="py-name">id</tt><tt class="py-op">,</tt> <tt class="py-name">host</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">,</tt> <tt class="py-name">keys</tt><tt class="py-op">,</tt> <tt class="py-name">dealer_keys</tt><tt class="py-op">)</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">            <tt class="py-comment"># ID of player for which this config file was made</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">owner_id</tt> <tt class="py-op">=</tt> <tt class="py-name">id</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">            <tt class="py-name">players</tt><tt class="py-op">[</tt><tt class="py-name">id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-29" class="py-name"><a title="viff.config.Player" class="py-name" href="#" onclick="return doclink('link-29', 'Player', 'link-28');">Player</a></tt><tt class="py-op">(</tt><tt class="py-name">id</tt><tt class="py-op">,</tt> <tt class="py-name">host</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">owner_id</tt><tt class="py-op">,</tt> <tt class="py-name">players</tt> </tt>
+</div><a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"> </tt>
+<a name="generate_configs"></a><div id="generate_configs-def"><a name="L151"></a><tt class="py-lineno">151</tt> <a class="py-toggle" href="#" id="generate_configs-toggle" onclick="return toggle('generate_configs');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.config-module.html#generate_configs">generate_configs</a><tt class="py-op">(</tt><tt class="py-param">n</tt><tt class="py-op">,</tt> <tt class="py-param">t</tt><tt class="py-op">,</tt> <tt class="py-param">addresses</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">prefix</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="generate_configs-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="generate_configs-expanded"><a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">    <tt class="py-docstring">"""Generate player configurations.</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-docstring">    The configurations are returned as C{ConfigObj}s and can be saved</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-docstring">    to disk if desired.</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-docstring">    @param n: number of players.</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-docstring">    @param t: threshold.</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-docstring">    @param addresses: list of (host, port) pairs.</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-docstring">    @param prefix: filename prefix.</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"><tt class="py-docstring">    @return: mapping from player id to player configuration.</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"><tt class="py-docstring">    @returntype: C{dict} from C{int} to C{ConfigObj}.</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">    <tt class="py-name">players</tt> <tt class="py-op">=</tt> <tt class="py-name">frozenset</tt><tt class="py-op">(</tt><tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">n</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">    <tt class="py-name">max_unqualified_subsets</tt> <tt class="py-op">=</tt> <tt id="link-30" class="py-name"><a title="viff.prss.generate_subsets" class="py-name" href="#" onclick="return doclink('link-30', 'generate_subsets', 'link-2');">generate_subsets</a></tt><tt class="py-op">(</tt><tt class="py-name">players</tt><tt class="py-op">,</tt> <tt class="py-name">n</tt><tt class="py-op">-</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">generate_key</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">        <tt class="py-comment"># TODO: is a 40 byte hex string as good as a 20 byte binary</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># string when it is used for SHA1 hashing? It ought to be</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># since they contain the same entropy.</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">        <tt class="py-comment"># A SHA1 hash is 160 bit</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">hex</tt><tt class="py-op">(</tt><tt id="link-31" class="py-name"><a title="viff.util.rand" class="py-name" href="#" onclick="return doclink('link-31', 'rand', 'link-6');">rand</a></tt><tt class="py-op">.</tt><tt class="py-name">randint</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-number">160</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">s_str</tt><tt class="py-op">(</tt><tt class="py-param">subset</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">        <tt class="py-docstring">"""Convert a subset to a string."""</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">" "</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">map</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">,</tt> <tt class="py-name">subset</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">p_str</tt><tt class="py-op">(</tt><tt class="py-param">player</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">        <tt class="py-docstring">"""Convert a player ID to a string."""</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"Player "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">player</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">d_str</tt><tt class="py-op">(</tt><tt class="py-param">dealer</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">        <tt class="py-docstring">"""Convert a dealer ID to a string."""</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"Dealer "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">dealer</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">    <tt class="py-name">configs</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">p</tt> <tt class="py-keyword">in</tt> <tt class="py-name">players</tt><tt class="py-op">:</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">        <tt id="link-32" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-32', 'config', 'link-17');">config</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ConfigObj</tt><tt class="py-op">(</tt><tt class="py-name">indent_type</tt><tt class="py-op">=</tt><tt class="py-string">'  '</tt><tt class="py-op">)</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">        <tt id="link-33" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-33', 'config', 'link-17');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt class="py-string">"%s-%d.ini"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">prefix</tt><tt class="py-op">,</tt> <tt class="py-name">p</tt><tt class="py-op">)</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">        <tt id="link-34" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-34', 'config', 'link-17');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">initial_comment</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'VIFF config file for Player %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">p</tt><tt class="py-op">]</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">        <tt id="link-35" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-35', 'config', 'link-17');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">final_comment</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-string">'End of config'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">]</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">        <tt class="py-name">configs</tt><tt class="py-op">[</tt><tt class="py-name">p</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-36" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-36', 'config', 'link-17');">config</a></tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line"> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">p</tt> <tt class="py-keyword">in</tt> <tt class="py-name">players</tt><tt class="py-op">:</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">addresses</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">            <tt class="py-name">host</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-string">'no-host'</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">            <tt class="py-name">host</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">addresses</tt><tt class="py-op">[</tt><tt class="py-name">p</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">player</tt><tt class="py-op">,</tt> <tt id="link-37" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-37', 'config', 'link-17');">config</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">configs</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">            <tt id="link-38" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-38', 'config', 'link-17');">config</a></tt><tt class="py-op">[</tt><tt class="py-name">p_str</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">host</tt><tt class="py-op">=</tt><tt class="py-name">host</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">=</tt><tt class="py-name">port</tt><tt class="py-op">)</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">            <tt class="py-comment"># Attaching an empty string as a comment will result in a newline</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># in the configuration file, making it slightly easier to read</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-39" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-39', 'config', 'link-17');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">comments</tt><tt class="py-op">[</tt><tt class="py-name">p_str</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">''</tt><tt class="py-op">]</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line"> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">player</tt> <tt class="py-op">==</tt> <tt class="py-name">p</tt><tt class="py-op">:</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">                <tt class="py-comment"># Prepare the config file for the keys</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt id="link-40" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-40', 'config', 'link-17');">config</a></tt><tt class="py-op">[</tt><tt class="py-name">p_str</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'prss_keys'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">                <tt id="link-41" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-41', 'config', 'link-17');">config</a></tt><tt class="py-op">[</tt><tt class="py-name">p_str</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'prss_dealer_keys'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line"> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">d</tt> <tt class="py-keyword">in</tt> <tt class="py-name">players</tt><tt class="py-op">:</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">                    <tt id="link-42" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-42', 'config', 'link-17');">config</a></tt><tt class="py-op">[</tt><tt class="py-name">p_str</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'prss_dealer_keys'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">d_str</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">subset</tt> <tt class="py-keyword">in</tt> <tt class="py-name">max_unqualified_subsets</tt><tt class="py-op">:</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">        <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">generate_key</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">player</tt> <tt class="py-keyword">in</tt> <tt class="py-name">subset</tt><tt class="py-op">:</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">            <tt id="link-43" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-43', 'config', 'link-17');">config</a></tt> <tt class="py-op">=</tt> <tt class="py-name">configs</tt><tt class="py-op">[</tt><tt class="py-name">player</tt><tt class="py-op">]</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">            <tt id="link-44" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-44', 'config', 'link-17');">config</a></tt><tt class="py-op">[</tt><tt class="py-name">p_str</tt><tt class="py-op">(</tt><tt class="py-name">player</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'prss_keys'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">s_str</tt><tt class="py-op">(</tt><tt class="py-name">subset</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">dealer</tt> <tt class="py-keyword">in</tt> <tt class="py-name">players</tt><tt class="py-op">:</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">d_str</tt><tt class="py-op">(</tt><tt class="py-name">dealer</tt><tt class="py-op">)</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">subset</tt> <tt class="py-keyword">in</tt> <tt class="py-name">max_unqualified_subsets</tt><tt class="py-op">:</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">s_str</tt><tt class="py-op">(</tt><tt class="py-name">subset</tt><tt class="py-op">)</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">            <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">generate_key</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">player</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">subset</tt> <tt class="py-op">|</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">dealer</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">                <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">p_str</tt><tt class="py-op">(</tt><tt class="py-name">player</tt><tt class="py-op">)</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">                <tt class="py-name">configs</tt><tt class="py-op">[</tt><tt class="py-name">player</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">p</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'prss_dealer_keys'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">s</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">configs</tt> </tt>
+</div><a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Mar 12 20:49:08 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/viff.config.Player-class.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff.config.Player</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="viff-module.html">Package&nbsp;viff</a> ::
+        <a href="viff.config-module.html">Module&nbsp;config</a> ::
+        Class&nbsp;Player
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff.config.Player-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Player</h1><p class="nomargin-top"><span class="codelink"><a href="viff.config-pysrc.html#Player">source&nbsp;code</a></span></p>
+<p>Wrapper for information about a player in the protocol.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">id</span>,
+        <span class="summary-sig-arg">host</span>,
+        <span class="summary-sig-arg">port</span>,
+        <span class="summary-sig-arg">keys</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">dealer_keys</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Initialize a player.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.config-pysrc.html#Player.__init__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code class="link">dict</code> from <code 
+      class="link">frozenset</code> to <a href="viff.prss.PRF-class.html" 
+      class="link">PRF</a> instances.</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.config.Player-class.html#prfs" class="summary-sig-name">prfs</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">modulus</span>)</span><br />
+      Retrieve PRSS PRFs.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.config-pysrc.html#Player.prfs">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code class="link">dict</code> from <code 
+      class="link">frozenset</code> to <a href="viff.prss.PRF-class.html" 
+      class="link">PRF</a> instances.</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.config.Player-class.html#dealer_prfs" class="summary-sig-name">dealer_prfs</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">modulus</span>)</span><br />
+      Retrieve dealer PRSS PRFs.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.config-pysrc.html#Player.dealer_prfs">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__repr__"></a><span class="summary-sig-name">__repr__</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Simple string representation of the player.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.config-pysrc.html#Player.__repr__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="prfs"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">prfs</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">modulus</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="viff.config-pysrc.html#Player.prfs">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Retrieve PRSS PRFs.</p>
+  <p>The pseudo-random functions are used when this player is part of a 
+  pseudo-random secret sharing for sharing an element random to all 
+  players.</p>
+  <dl class="fields">
+    <dt>Returns: <code class="link">dict</code> from <code 
+      class="link">frozenset</code> to <a href="viff.prss.PRF-class.html" 
+      class="link">PRF</a> instances.</dt>
+        <dd>mapping from player subsets to <a href="viff.prss.PRF-class.html"
+          class="link">PRF</a> instances.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="dealer_prfs"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">dealer_prfs</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">modulus</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="viff.config-pysrc.html#Player.dealer_prfs">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Retrieve dealer PRSS PRFs.</p>
+  <p>The pseudo-random functions are used when this player is the dealer in
+  a pseudo-random secret sharing.</p>
+  <dl class="fields">
+    <dt>Returns: <code class="link">dict</code> from <code 
+      class="link">frozenset</code> to <a href="viff.prss.PRF-class.html" 
+      class="link">PRF</a> instances.</dt>
+        <dd>mapping from player subsets to <a href="viff.prss.PRF-class.html"
+          class="link">PRF</a> instances.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Mar 12 20:49:07 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/viff.field-module.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,535 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff.field</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="viff-module.html">Package&nbsp;viff</a> ::
+        Module&nbsp;field
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff.field-module.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module field</h1><p class="nomargin-top"><span class="codelink"><a href="viff.field-pysrc.html">source&nbsp;code</a></span></p>
+<p>Modeling of Galois (finite) fields.</p>
+  <p>The GF function creates classes which implements Galois (finite) 
+  fields of prime order whereas the GF256 class implements the the GF(2^8) 
+  field with characteristic 2.</p>
+  <p>All fields work the same: instantiate an object from a field to get 
+  hold of an element of that field. Elements implement the normal 
+  arithmetic one would expect: addition, multiplication, etc.</p>
+  <p>Defining a field:</p>
+<pre class="py-doctest">
+<span class="py-prompt">&gt;&gt;&gt; </span>Zp = GF(19)</pre>
+  <p>Defining field elements:</p>
+<pre class="py-doctest">
+<span class="py-prompt">&gt;&gt;&gt; </span>x = Zp(10)
+<span class="py-prompt">&gt;&gt;&gt; </span>y = Zp(15)</pre>
+  <p>Addition and subtraction (with modulo reduction):</p>
+<pre class="py-doctest">
+<span class="py-prompt">&gt;&gt;&gt; </span>x + y
+<span class="py-output">{6}</span>
+<span class="py-output"></span><span class="py-prompt">&gt;&gt;&gt; </span>x - y
+<span class="py-output">{14}</span></pre>
+  <p>Exponentiation:</p>
+<pre class="py-doctest">
+<span class="py-prompt">&gt;&gt;&gt; </span>x**3
+<span class="py-output">{12}</span></pre>
+  <p>Square roots can be found for elements based on GF fields with a Blum 
+  prime modulus (see <a href="viff.field-module.html#GF" 
+  class="link">GF</a> for more information):</p>
+<pre class="py-doctest">
+<span class="py-prompt">&gt;&gt;&gt; </span>x.sqrt()
+<span class="py-output">{3}</span></pre>
+  <p>Field elements from different fields cannot be mixed, you will get a 
+  type error if you try:</p>
+<pre class="py-doctest">
+<span class="py-prompt">&gt;&gt;&gt; </span>Zq = GF(17)
+<span class="py-prompt">&gt;&gt;&gt; </span>z = Zq(2)
+<span class="py-prompt">&gt;&gt;&gt; </span>x + z
+<span class="py-except">Traceback (most recent call last):</span>
+<span class="py-except">    ...</span>
+<span class="py-except">TypeError: unsupported operand type(s) for +: 'GFElement' and 'GFElement'</span></pre>
+  <p>The reason for the slightly confusing error message is that 
+  <code>x</code> and <code>z</code> are instances of two <i>different</i> 
+  classes called <code>GFElement</code>.</p>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="viff.field.FieldElement-class.html" class="summary-name">FieldElement</a><br />
+      Common base class for elements.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="viff.field.GF256-class.html" class="summary-name">GF256</a><br />
+      Models an element of the GF(2^8) field.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.field-module.html#_generate_tables" class="summary-sig-name" onclick="show_private();">_generate_tables</a>()</span><br />
+      Generate tables with logarithms, antilogarithms (exponentials) and 
+      inverses.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.field-pysrc.html#_generate_tables">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.field-module.html#GF" class="summary-sig-name">GF</a>(<span class="summary-sig-arg">modulus</span>)</span><br />
+      Generate a Galois (finite) field with the given modulus.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.field-pysrc.html#GF">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="viff.field-module.html#_log_table" class="summary-name" onclick="show_private();">_log_table</a> = <code title="{0: 0,
+ 1: 0,
+ 2: 25,
+ 3: 1,
+ 4: 50,
+ 5: 2,
+ 6: 26,
+ 7: 198,
+..."><code class="variable-group">{</code>0<code class="variable-op">: </code>0<code class="variable-op">, </code>1<code class="variable-op">: </code>0<code class="variable-op">, </code>2<code class="variable-op">: </code>25<code class="variable-op">, </code>3<code class="variable-op">: </code>1<code class="variable-op">, </code>4<code class="variable-op">: </code>50<code class="variable-op">, </code>5<code class="variable-op">: </code>2<code class="variable-op">, </code>6<code class="variable-op">: </code>26<code class="variable-op">, </code>7<code class="variable-op">: </code><code class="variable-ellipsis">...</code></code><br />
+      Logarithm table.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="viff.field-module.html#_exp_table" class="summary-name" onclick="show_private();">_exp_table</a> = <code title="{0: 1,
+ 1: 3,
+ 2: 5,
+ 3: 15,
+ 4: 17,
+ 5: 51,
+ 6: 85,
+ 7: 255,
+..."><code class="variable-group">{</code>0<code class="variable-op">: </code>1<code class="variable-op">, </code>1<code class="variable-op">: </code>3<code class="variable-op">, </code>2<code class="variable-op">: </code>5<code class="variable-op">, </code>3<code class="variable-op">: </code>15<code class="variable-op">, </code>4<code class="variable-op">: </code>17<code class="variable-op">, </code>5<code class="variable-op">: </code>51<code class="variable-op">, </code>6<code class="variable-op">: </code>85<code class="variable-op">, </code>7<code class="variable-op">:</code><code class="variable-ellipsis">...</code></code><br />
+      Exponentiation table.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="viff.field-module.html#_inv_table" class="summary-name" onclick="show_private();">_inv_table</a> = <code title="{1: 1,
+ 2: 141,
+ 3: 246,
+ 4: 203,
+ 5: 82,
+ 6: 123,
+ 7: 209,
+ 8: 232,
+..."><code class="variable-group">{</code>1<code class="variable-op">: </code>1<code class="variable-op">, </code>2<code class="variable-op">: </code>141<code class="variable-op">, </code>3<code class="variable-op">: </code>246<code class="variable-op">, </code>4<code class="variable-op">: </code>203<code class="variable-op">, </code>5<code class="variable-op">: </code>82<code class="variable-op">, </code>6<code class="variable-op">: </code>123<code class="variable-op">, </code>7<code class="variable-op">: </code><code class="variable-ellipsis">...</code></code><br />
+      Inversion table.
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="viff.field-module.html#_field_cache" class="summary-name" onclick="show_private();">_field_cache</a> = <code title="{256: &lt;class 'viff.field.GF256'&gt;}"><code class="variable-group">{</code>256<code class="variable-op">: </code>&lt;class 'viff.field.GF256'&gt;<code class="variable-group">}</code></code><br />
+      Cached fields.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="_generate_tables"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_generate_tables</span>()</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="viff.field-pysrc.html#_generate_tables">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Generate tables with logarithms, antilogarithms (exponentials) and 
+  inverses.</p>
+  <p>This updates the <a href="viff.field-module.html#_log_table" 
+  class="link" onclick="show_private();">_log_table</a>, <a 
+  href="viff.field-module.html#_exp_table" class="link" 
+  onclick="show_private();">_exp_table</a>, and <a 
+  href="viff.field-module.html#_inv_table" class="link" 
+  onclick="show_private();">_inv_table</a> fields. The generator used is 
+  0x03.</p>
+  <p>Code adapted from <a href="http://www.samiam.org/galois.html" 
+  target="_top">http://www.samiam.org/galois.html</a>.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="GF"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">GF</span>(<span class="sig-arg">modulus</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="viff.field-pysrc.html#GF">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Generate a Galois (finite) field with the given modulus.</p>
+  <p>The modulus must be a prime:</p>
+<pre class="py-doctest">
+<span class="py-prompt">&gt;&gt;&gt; </span>Z23 = GF(23) <span class="py-comment"># works</span>
+<span class="py-prompt">&gt;&gt;&gt; </span>Z10 = GF(10) <span class="py-comment"># not a prime</span>
+<span class="py-except">Traceback (most recent call last):</span>
+<span class="py-except">    ...</span>
+<span class="py-except">ValueError: 10 is not a prime</span></pre>
+  <p>A modulus of 256 is special since it returns the GF(2^8) field even 
+  though 256 is no prime:</p>
+<pre class="py-doctest">
+<span class="py-prompt">&gt;&gt;&gt; </span>GF256 = GF(256)
+<span class="py-prompt">&gt;&gt;&gt; </span><span class="py-keyword">print</span> GF256(1)
+<span class="py-output">[1]</span></pre>
+  <p>Please note, that if you wish to calculate square roots, the modulus 
+  must be a Blum prime (congruent to 3 mod 4):</p>
+<pre class="py-doctest">
+<span class="py-prompt">&gt;&gt;&gt; </span>Z17 = GF(17) <span class="py-comment"># 17 % 4 == 1, so 17 is no Blum prime</span>
+<span class="py-prompt">&gt;&gt;&gt; </span>x = Z17(10)
+<span class="py-prompt">&gt;&gt;&gt; </span>x.sqrt()
+<span class="py-except">Traceback (most recent call last):</span>
+<span class="py-except">    ...</span>
+<span class="py-except">AssertionError: Cannot compute square root of {10} with modulus 17</span></pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-VariablesDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="_log_table"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_log_table</h3>
+  <p>Logarithm table.</p>
+  <p>Maps a value <i class="math">x</i> to <i class="math">log3(x)</i>. See
+  <a href="viff.field-module.html#_generate_tables" class="link" 
+  onclick="show_private();">_generate_tables</a>.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code>0<code class="variable-op">: </code>0<code class="variable-op">,</code>
+ 1<code class="variable-op">: </code>0<code class="variable-op">,</code>
+ 2<code class="variable-op">: </code>25<code class="variable-op">,</code>
+ 3<code class="variable-op">: </code>1<code class="variable-op">,</code>
+ 4<code class="variable-op">: </code>50<code class="variable-op">,</code>
+ 5<code class="variable-op">: </code>2<code class="variable-op">,</code>
+ 6<code class="variable-op">: </code>26<code class="variable-op">,</code>
+ 7<code class="variable-op">: </code>198<code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_exp_table"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_exp_table</h3>
+  <p>Exponentiation table.</p>
+  <p>Maps a value <i class="math">y</i> to <i class="math">3^y</i>. See <a 
+  href="viff.field-module.html#_generate_tables" class="link" 
+  onclick="show_private();">_generate_tables</a>.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code>0<code class="variable-op">: </code>1<code class="variable-op">,</code>
+ 1<code class="variable-op">: </code>3<code class="variable-op">,</code>
+ 2<code class="variable-op">: </code>5<code class="variable-op">,</code>
+ 3<code class="variable-op">: </code>15<code class="variable-op">,</code>
+ 4<code class="variable-op">: </code>17<code class="variable-op">,</code>
+ 5<code class="variable-op">: </code>51<code class="variable-op">,</code>
+ 6<code class="variable-op">: </code>85<code class="variable-op">,</code>
+ 7<code class="variable-op">: </code>255<code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_inv_table"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_inv_table</h3>
+  <p>Inversion table.</p>
+  <p>Maps a value <i class="math">x</i> to <i class="math">x^-1</i>. See <a
+  href="viff.field-module.html#_generate_tables" class="link" 
+  onclick="show_private();">_generate_tables</a>.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code>1<code class="variable-op">: </code>1<code class="variable-op">,</code>
+ 2<code class="variable-op">: </code>141<code class="variable-op">,</code>
+ 3<code class="variable-op">: </code>246<code class="variable-op">,</code>
+ 4<code class="variable-op">: </code>203<code class="variable-op">,</code>
+ 5<code class="variable-op">: </code>82<code class="variable-op">,</code>
+ 6<code class="variable-op">: </code>123<code class="variable-op">,</code>
+ 7<code class="variable-op">: </code>209<code class="variable-op">,</code>
+ 8<code class="variable-op">: </code>232<code class="variable-op">,</code>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_field_cache"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_field_cache</h3>
+  <p>Cached fields.</p>
+  <p>Calls to GF with identical modulus must return the same class (field),
+  so we cache them here. The cache is seeded with the GF256 class which is 
+  always defined.</p>
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+<code class="variable-group">{</code>256<code class="variable-op">: </code>&lt;class 'viff.field.GF256'&gt;<code class="variable-group">}</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Mar 12 20:49:07 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/viff.field-pysrc.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,642 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff.field</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="viff-module.html">Package&nbsp;viff</a> ::
+        Module&nbsp;field
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff.field-pysrc.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="viff.field-module.html">Module viff.field</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># Copyright 2007, 2008 VIFF Development Team.</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of VIFF, the Virtual Ideal Functionality Framework.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># VIFF is free software; you can redistribute it and/or modify it</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># under the terms of the GNU General Public License as published by</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># the Free Software Foundation; either version 2 of the License, or</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (at your option) any later version.</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># VIFF is distributed in the hope that it will be useful, but</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># General Public License for more details.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU General Public License</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with VIFF in the file COPYING; if not, write to the Free</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># 02110-1301 USA</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring">"""Modeling of Galois (finite) fields.</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring">The GF function creates classes which implements Galois (finite)</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring">fields of prime order whereas the GF256 class implements the the</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring">GF(2^8) field with characteristic 2.</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring">All fields work the same: instantiate an object from a field to get</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring">hold of an element of that field. Elements implement the normal</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring">arithmetic one would expect: addition, multiplication, etc.</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring">Defining a field:</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; Zp = GF(19)</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-docstring">Defining field elements:</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; x = Zp(10)</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; y = Zp(15)</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-docstring">Addition and subtraction (with modulo reduction):</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; x + y</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring">{6}</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; x - y</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring">{14}</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring">Exponentiation:</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; x**3</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring">{12}</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring">Square roots can be found for elements based on GF fields with a Blum</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring">prime modulus (see L{GF} for more information):</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; x.sqrt()</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">{3}</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">Field elements from different fields cannot be mixed, you will get a</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">type error if you try:</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; Zq = GF(17)</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; z = Zq(2)</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-docstring">&gt;&gt;&gt; x + z</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring">Traceback (most recent call last):</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-docstring">    ...</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-docstring">TypeError: unsupported operand type(s) for +: 'GFElement' and 'GFElement'</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-docstring">The reason for the slightly confusing error message is that C{x} and</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-docstring">C{z} are instances of two I{different} classes called C{GFElement}.</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">gmpy</tt> <tt class="py-keyword">import</tt> <tt class="py-name">mpz</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"> </tt>
+<a name="FieldElement"></a><div id="FieldElement-def"><a name="L74"></a><tt class="py-lineno"> 74</tt> <a class="py-toggle" href="#" id="FieldElement-toggle" onclick="return toggle('FieldElement');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="viff.field.FieldElement-class.html">FieldElement</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FieldElement-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="FieldElement-expanded"><a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">    <tt class="py-docstring">"""Common base class for elements."""</tt> </tt>
+</div><a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-comment">#: Logarithm table.</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#:</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#: Maps a value M{x} to M{log3(x)}. See L{_generate_tables}.</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-0" class="py-name" targets="Variable viff.field._log_table=viff.field-module.html#_log_table"><a title="viff.field._log_table" class="py-name" href="#" onclick="return doclink('link-0', '_log_table', 'link-0');">_log_table</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-comment">#: Exponentiation table.</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#:</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#: Maps a value M{y} to M{3^y}. See L{_generate_tables}.</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-1" class="py-name" targets="Variable viff.field._exp_table=viff.field-module.html#_exp_table"><a title="viff.field._exp_table" class="py-name" href="#" onclick="return doclink('link-1', '_exp_table', 'link-1');">_exp_table</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-comment">#: Inversion table.</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#:</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#: Maps a value M{x} to M{x^-1}. See L{_generate_tables}.</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-2" class="py-name" targets="Variable viff.field._inv_table=viff.field-module.html#_inv_table"><a title="viff.field._inv_table" class="py-name" href="#" onclick="return doclink('link-2', '_inv_table', 'link-2');">_inv_table</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"> </tt>
+<a name="_generate_tables"></a><div id="_generate_tables-def"><a name="L92"></a><tt class="py-lineno"> 92</tt> <a class="py-toggle" href="#" id="_generate_tables-toggle" onclick="return toggle('_generate_tables');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.field-module.html#_generate_tables">_generate_tables</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_generate_tables-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_generate_tables-expanded"><a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">    <tt class="py-docstring">"""Generate tables with logarithms, antilogarithms (exponentials)</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-docstring">    and inverses.</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-docstring">    This updates the L{_log_table}, L{_exp_table}, and L{_inv_table}</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-docstring">    fields. The generator used is 0x03.</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring">    Code adapted from U{http://www.samiam.org/galois.html}.</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">    <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">255</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">&amp;=</tt> <tt class="py-number">0xff</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">        <tt id="link-3" class="py-name"><a title="viff.field._exp_table" class="py-name" href="#" onclick="return doclink('link-3', '_exp_table', 'link-1');">_exp_table</a></tt><tt class="py-op">[</tt><tt class="py-name">c</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">a</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">a</tt> <tt class="py-op">&amp;</tt> <tt class="py-number">0x80</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">&lt;&lt;=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">d</tt> <tt class="py-op">==</tt> <tt class="py-number">0x80</tt><tt class="py-op">:</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">            <tt class="py-name">a</tt> <tt class="py-op">^=</tt> <tt class="py-number">0x1b</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">^=</tt> <tt id="link-4" class="py-name"><a title="viff.field._exp_table" class="py-name" href="#" onclick="return doclink('link-4', '_exp_table', 'link-1');">_exp_table</a></tt><tt class="py-op">[</tt><tt class="py-name">c</tt><tt class="py-op">]</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">        <tt id="link-5" class="py-name"><a title="viff.field._log_table" class="py-name" href="#" onclick="return doclink('link-5', '_log_table', 'link-0');">_log_table</a></tt><tt class="py-op">[</tt><tt id="link-6" class="py-name"><a title="viff.field._exp_table" class="py-name" href="#" onclick="return doclink('link-6', '_exp_table', 'link-1');">_exp_table</a></tt><tt class="py-op">[</tt><tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">c</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">    <tt id="link-7" class="py-name"><a title="viff.field._exp_table" class="py-name" href="#" onclick="return doclink('link-7', '_exp_table', 'link-1');">_exp_table</a></tt><tt class="py-op">[</tt><tt class="py-number">255</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-8" class="py-name"><a title="viff.field._exp_table" class="py-name" href="#" onclick="return doclink('link-8', '_exp_table', 'link-1');">_exp_table</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">    <tt id="link-9" class="py-name"><a title="viff.field._log_table" class="py-name" href="#" onclick="return doclink('link-9', '_log_table', 'link-0');">_log_table</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">    <tt class="py-comment">#_inv_table[0] = 0</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-number">255</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">        <tt id="link-10" class="py-name"><a title="viff.field._inv_table" class="py-name" href="#" onclick="return doclink('link-10', '_inv_table', 'link-2');">_inv_table</a></tt><tt class="py-op">[</tt><tt class="py-name">c</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-11" class="py-name"><a title="viff.field._exp_table" class="py-name" href="#" onclick="return doclink('link-11', '_exp_table', 'link-1');">_exp_table</a></tt><tt class="py-op">[</tt><tt class="py-number">255</tt> <tt class="py-op">-</tt> <tt id="link-12" class="py-name"><a title="viff.field._log_table" class="py-name" href="#" onclick="return doclink('link-12', '_log_table', 'link-0');">_log_table</a></tt><tt class="py-op">[</tt><tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt id="link-13" class="py-name" targets="Function viff.field._generate_tables()=viff.field-module.html#_generate_tables"><a title="viff.field._generate_tables" class="py-name" href="#" onclick="return doclink('link-13', '_generate_tables', 'link-13');">_generate_tables</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-comment"># The class name is slightly wrong since the class instances cannot be</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># said to be represent a field. Instead they represent instances of</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># GF256 elements. But the shorter name is better, though, in the</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># common case where one talks about the class as a field.</tt> </tt>
+<a name="GF256"></a><div id="GF256-def"><a name="L124"></a><tt class="py-lineno">124</tt> <a class="py-toggle" href="#" id="GF256-toggle" onclick="return toggle('GF256');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">class</tt> <a class="py-def-name" href="viff.field.GF256-class.html">GF256</a><tt class="py-op">(</tt><tt class="py-base-class">FieldElement</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GF256-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="GF256-expanded"><a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">    <tt class="py-docstring">"""Models an element of the GF(2^8) field."""</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">    <tt id="link-14" class="py-name" targets="Variable viff.field.GF256.modulus=viff.field.GF256-class.html#modulus"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-14', 'modulus', 'link-14');">modulus</a></tt> <tt class="py-op">=</tt> <tt class="py-number">256</tt> <tt class="py-comment">#: GF(2^8) modulus, always 256.</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"> </tt>
+<a name="GF256.__init__"></a><div id="GF256.__init__-def"><a name="L129"></a><tt class="py-lineno">129</tt> <a class="py-toggle" href="#" id="GF256.__init__-toggle" onclick="return toggle('GF256.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.field.GF256-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GF256.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GF256.__init__-expanded"><a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">        <tt class="py-docstring">"""Initialize new element.</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line"><tt class="py-docstring">        The value given is modulo reduced so the following holds:</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; GF256(1) == GF256(257)</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-docstring">        True</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-15', 'modulus', 'link-14');">modulus</a></tt> </tt>
+</div><a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"> </tt>
+<a name="GF256.__add__"></a><div id="GF256.__add__-def"><a name="L139"></a><tt class="py-lineno">139</tt> <a class="py-toggle" href="#" id="GF256.__add__-toggle" onclick="return toggle('GF256.__add__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.field.GF256-class.html#__add__">__add__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GF256.__add__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GF256.__add__-expanded"><a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">        <tt class="py-docstring">"""Add this and another GF256 element.</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; GF256(0x01) + GF256(0x01)</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"><tt class="py-docstring">        [0]</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; GF256(0x01) + GF256(0x02)</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"><tt class="py-docstring">        [3]</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-docstring">        Adding integers works too, the other operand is coerced into a</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-docstring">        GF256 element automatically:</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; GF256(0x01) + 1</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-docstring">        [0]</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-16" class="py-name" targets="Class viff.field.GF256=viff.field.GF256-class.html"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-16', 'GF256', 'link-16');">GF256</a></tt><tt class="py-op">,</tt> <tt class="py-name">int</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">            <tt class="py-comment"># This occurs with code like 'a + b' where b is a Share.</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># In that case we must return NotImplemented to signal</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># that b.__radd__(a) should be run instead. The Share will</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># then schedule things correctly.</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">return</tt> <tt class="py-name">NotImplemented</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-17" class="py-name"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-17', 'GF256', 'link-16');">GF256</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-18" class="py-name"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-18', 'GF256', 'link-16');">GF256</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">^</tt> <tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">    <tt class="py-comment">#: Add this and another GF256 element (reflected argument version).</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-19" class="py-name" targets="Method viff.matrix.Matrix.__radd__()=viff.matrix.Matrix-class.html#__radd__,Method viff.runtime.Share.__radd__()=viff.runtime.Share-class.html#__radd__"><a title="viff.matrix.Matrix.__radd__
+viff.runtime.Share.__radd__" class="py-name" href="#" onclick="return doclink('link-19', '__radd__', 'link-19');">__radd__</a></tt> <tt class="py-op">=</tt> <tt id="link-20" class="py-name" targets="Method viff.field.GF256.__add__()=viff.field.GF256-class.html#__add__,Method viff.matrix.Matrix.__add__()=viff.matrix.Matrix-class.html#__add__,Method viff.runtime.Share.__add__()=viff.runtime.Share-class.html#__add__"><a title="viff.field.GF256.__add__
+viff.matrix.Matrix.__add__
+viff.runtime.Share.__add__" class="py-name" href="#" onclick="return doclink('link-20', '__add__', 'link-20');">__add__</a></tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">    <tt class="py-comment">#: Subtract this and another GF256 element.</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#:</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: Addition is its own inverse in GF(2^8) and so this is the same</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: as L{__add__}.</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-21" class="py-name" targets="Method viff.runtime.Share.__sub__()=viff.runtime.Share-class.html#__sub__"><a title="viff.runtime.Share.__sub__" class="py-name" href="#" onclick="return doclink('link-21', '__sub__', 'link-21');">__sub__</a></tt> <tt class="py-op">=</tt> <tt id="link-22" class="py-name"><a title="viff.field.GF256.__add__
+viff.matrix.Matrix.__add__
+viff.runtime.Share.__add__" class="py-name" href="#" onclick="return doclink('link-22', '__add__', 'link-20');">__add__</a></tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">    <tt class="py-comment">#: Subtract this and another GF256 element (reflected argument version).</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-23" class="py-name" targets="Method viff.runtime.Share.__rsub__()=viff.runtime.Share-class.html#__rsub__"><a title="viff.runtime.Share.__rsub__" class="py-name" href="#" onclick="return doclink('link-23', '__rsub__', 'link-23');">__rsub__</a></tt> <tt class="py-op">=</tt> <tt id="link-24" class="py-name"><a title="viff.runtime.Share.__sub__" class="py-name" href="#" onclick="return doclink('link-24', '__sub__', 'link-21');">__sub__</a></tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">    <tt class="py-comment">#: Exclusive-or.</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#:</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: This is just addition for GF256 elements.</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-25" class="py-name" targets="Method viff.runtime.Share.__xor__()=viff.runtime.Share-class.html#__xor__"><a title="viff.runtime.Share.__xor__" class="py-name" href="#" onclick="return doclink('link-25', '__xor__', 'link-25');">__xor__</a></tt> <tt class="py-op">=</tt> <tt id="link-26" class="py-name"><a title="viff.field.GF256.__add__
+viff.matrix.Matrix.__add__
+viff.runtime.Share.__add__" class="py-name" href="#" onclick="return doclink('link-26', '__add__', 'link-20');">__add__</a></tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">    <tt class="py-comment">#: Exclusive-or (reflected argument version).</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-27" class="py-name" targets="Method viff.runtime.Share.__rxor__()=viff.runtime.Share-class.html#__rxor__"><a title="viff.runtime.Share.__rxor__" class="py-name" href="#" onclick="return doclink('link-27', '__rxor__', 'link-27');">__rxor__</a></tt> <tt class="py-op">=</tt> <tt id="link-28" class="py-name"><a title="viff.runtime.Share.__xor__" class="py-name" href="#" onclick="return doclink('link-28', '__xor__', 'link-25');">__xor__</a></tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"> </tt>
+<a name="GF256.__mul__"></a><div id="GF256.__mul__-def"><a name="L182"></a><tt class="py-lineno">182</tt> <a class="py-toggle" href="#" id="GF256.__mul__-toggle" onclick="return toggle('GF256.__mul__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.field.GF256-class.html#__mul__">__mul__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GF256.__mul__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GF256.__mul__-expanded"><a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">        <tt class="py-docstring">"""Multiply this and another GF256.</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; GF256(0) * GF256(47)</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"><tt class="py-docstring">        [0]</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; GF256(2) * GF256(3)</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"><tt class="py-docstring">        [6]</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; GF256(16) * GF256(32)</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line"><tt class="py-docstring">        [54]</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-29" class="py-name"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-29', 'GF256', 'link-16');">GF256</a></tt><tt class="py-op">,</tt> <tt class="py-name">int</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">NotImplemented</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-30" class="py-name"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-30', 'GF256', 'link-16');">GF256</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt> <tt class="py-keyword">or</tt> <tt class="py-name">other</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-31" class="py-name"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-31', 'GF256', 'link-16');">GF256</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">            <tt class="py-name">log_product</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-32" class="py-name"><a title="viff.field._log_table" class="py-name" href="#" onclick="return doclink('link-32', '_log_table', 'link-0');">_log_table</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt id="link-33" class="py-name"><a title="viff.field._log_table" class="py-name" href="#" onclick="return doclink('link-33', '_log_table', 'link-0');">_log_table</a></tt><tt class="py-op">[</tt><tt class="py-name">other</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-number">255</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-34" class="py-name"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-34', 'GF256', 'link-16');">GF256</a></tt><tt class="py-op">(</tt><tt id="link-35" class="py-name"><a title="viff.field._exp_table" class="py-name" href="#" onclick="return doclink('link-35', '_exp_table', 'link-1');">_exp_table</a></tt><tt class="py-op">[</tt><tt class="py-name">log_product</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line"> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">    <tt class="py-comment">#: Multiply this and another GF256 element (reflected argument version).</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-36" class="py-name" targets="Method viff.matrix.Matrix.__rmul__()=viff.matrix.Matrix-class.html#__rmul__,Method viff.runtime.Share.__rmul__()=viff.runtime.Share-class.html#__rmul__"><a title="viff.matrix.Matrix.__rmul__
+viff.runtime.Share.__rmul__" class="py-name" href="#" onclick="return doclink('link-36', '__rmul__', 'link-36');">__rmul__</a></tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name" targets="Method viff.field.GF256.__mul__()=viff.field.GF256-class.html#__mul__,Method viff.matrix.Matrix.__mul__()=viff.matrix.Matrix-class.html#__mul__,Method viff.runtime.Share.__mul__()=viff.runtime.Share-class.html#__mul__"><a title="viff.field.GF256.__mul__
+viff.matrix.Matrix.__mul__
+viff.runtime.Share.__mul__" class="py-name" href="#" onclick="return doclink('link-37', '__mul__', 'link-37');">__mul__</a></tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line"> </tt>
+<a name="GF256.__pow__"></a><div id="GF256.__pow__-def"><a name="L206"></a><tt class="py-lineno">206</tt> <a class="py-toggle" href="#" id="GF256.__pow__-toggle" onclick="return toggle('GF256.__pow__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.field.GF256-class.html#__pow__">__pow__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">exponent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GF256.__pow__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GF256.__pow__-expanded"><a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">        <tt class="py-docstring">"""Exponentiation."""</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-38" class="py-name"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-38', 'GF256', 'link-16');">GF256</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">_</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">exponent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">            <tt class="py-name">result</tt> <tt class="py-op">*=</tt> <tt class="py-name">self</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line"> </tt>
+<a name="GF256.__div__"></a><div id="GF256.__div__-def"><a name="L213"></a><tt class="py-lineno">213</tt> <a class="py-toggle" href="#" id="GF256.__div__-toggle" onclick="return toggle('GF256.__div__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.field.GF256-class.html#__div__">__div__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GF256.__div__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GF256.__div__-expanded"><a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">        <tt class="py-docstring">"""Division.</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line"><tt class="py-docstring">        @param other: right-hand side.</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line"><tt class="py-docstring">        @type other: GF256 element</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> <tt class="py-op">*</tt> <tt class="py-op">~</tt><tt class="py-name">other</tt> </tt>
+</div><a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line"> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">    <tt class="py-name">__truediv__</tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name" targets="Method viff.field.GF256.__div__()=viff.field.GF256-class.html#__div__"><a title="viff.field.GF256.__div__" class="py-name" href="#" onclick="return doclink('link-39', '__div__', 'link-39');">__div__</a></tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line"> </tt>
+<a name="GF256.__rdiv__"></a><div id="GF256.__rdiv__-def"><a name="L223"></a><tt class="py-lineno">223</tt> <a class="py-toggle" href="#" id="GF256.__rdiv__-toggle" onclick="return toggle('GF256.__rdiv__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.field.GF256-class.html#__rdiv__">__rdiv__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GF256.__rdiv__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GF256.__rdiv__-expanded"><a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">        <tt class="py-docstring">"""Division (reflected argument version).</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line"><tt class="py-docstring">        @param other: the left-hand side.</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"><tt class="py-docstring">        @type other: integer</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-40" class="py-name"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-40', 'GF256', 'link-16');">GF256</a></tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt> <tt class="py-op">/</tt> <tt class="py-name">self</tt> </tt>
+</div><a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line">    <tt class="py-name">__rtruediv__</tt> <tt class="py-op">=</tt> <tt id="link-41" class="py-name" targets="Method viff.field.GF256.__rdiv__()=viff.field.GF256-class.html#__rdiv__"><a title="viff.field.GF256.__rdiv__" class="py-name" href="#" onclick="return doclink('link-41', '__rdiv__', 'link-41');">__rdiv__</a></tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line"> </tt>
+<a name="GF256.__neg__"></a><div id="GF256.__neg__-def"><a name="L233"></a><tt class="py-lineno">233</tt> <a class="py-toggle" href="#" id="GF256.__neg__-toggle" onclick="return toggle('GF256.__neg__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.field.GF256-class.html#__neg__">__neg__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GF256.__neg__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GF256.__neg__-expanded"><a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line">        <tt class="py-docstring">"""Negation."""</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>
+</div><a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line"> </tt>
+<a name="GF256.__invert__"></a><div id="GF256.__invert__-def"><a name="L237"></a><tt class="py-lineno">237</tt> <a class="py-toggle" href="#" id="GF256.__invert__-toggle" onclick="return toggle('GF256.__invert__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.field.GF256-class.html#__invert__">__invert__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GF256.__invert__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GF256.__invert__-expanded"><a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">        <tt class="py-docstring">"""Invertion.</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line"><tt class="py-docstring">        @raise ZeroDivisionError: if trying to inverse the zero</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line"><tt class="py-docstring">        element.</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ZeroDivisionError</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot invert zero"</tt><tt class="py-op">)</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-42" class="py-name"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-42', 'GF256', 'link-16');">GF256</a></tt><tt class="py-op">(</tt><tt id="link-43" class="py-name"><a title="viff.field._inv_table" class="py-name" href="#" onclick="return doclink('link-43', '_inv_table', 'link-2');">_inv_table</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line"> </tt>
+<a name="GF256.__repr__"></a><div id="GF256.__repr__-def"><a name="L247"></a><tt class="py-lineno">247</tt> <a class="py-toggle" href="#" id="GF256.__repr__-toggle" onclick="return toggle('GF256.__repr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.field.GF256-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GF256.__repr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GF256.__repr__-expanded"><a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"[%d]"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> </tt>
+</div><a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">        <tt class="py-comment">#return "GF256(%d)" % self.value</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="GF256.__str__"></a><div id="GF256.__str__-def"><a name="L251"></a><tt class="py-lineno">251</tt> <a class="py-toggle" href="#" id="GF256.__str__-toggle" onclick="return toggle('GF256.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.field.GF256-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GF256.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GF256.__str__-expanded"><a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"[%d]"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> </tt>
+</div><a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line"> </tt>
+<a name="GF256.__eq__"></a><div id="GF256.__eq__-def"><a name="L254"></a><tt class="py-lineno">254</tt> <a class="py-toggle" href="#" id="GF256.__eq__-toggle" onclick="return toggle('GF256.__eq__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.field.GF256-class.html#__eq__">__eq__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GF256.__eq__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GF256.__eq__-expanded"><a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line">        <tt class="py-docstring">"""Equality testing.</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line"><tt class="py-docstring">        Testing for equality with integers works as expected:</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; GF256(10) == 10</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line"><tt class="py-docstring">        True</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt> <tt id="link-44" class="py-name"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-44', 'GF256', 'link-16');">GF256</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line">            <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">==</tt> <tt class="py-name">other</tt> </tt>
+</div><a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line"> </tt>
+<a name="GF256.__nonzero__"></a><div id="GF256.__nonzero__-def"><a name="L266"></a><tt class="py-lineno">266</tt> <a class="py-toggle" href="#" id="GF256.__nonzero__-toggle" onclick="return toggle('GF256.__nonzero__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.field.GF256-class.html#__nonzero__">__nonzero__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GF256.__nonzero__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GF256.__nonzero__-expanded"><a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line">        <tt class="py-docstring">"""Truth value testing.</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line"><tt class="py-docstring">        Returns False if this element is zero, True otherwise. This</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line"><tt class="py-docstring">        allows GF256 elements to be used directly in Boolean formula:</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; bool(GF256(0))</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line"><tt class="py-docstring">        False</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; bool(GF256(1))</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line"><tt class="py-docstring">        True</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; x = GF256(1)</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line"><tt class="py-docstring">        &gt;&gt;&gt; not x</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line"><tt class="py-docstring">        False</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt> </tt>
+</div></div><a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line"> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line"><tt class="py-comment"># We provide the class here to make the construction of new elements</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># easy in a polymorphic context.</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-45" class="py-name"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-45', 'GF256', 'link-16');">GF256</a></tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Module viff.field=viff.field-module.html"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-46', 'field', 'link-46');">field</a></tt> <tt class="py-op">=</tt> <tt id="link-47" class="py-name"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-47', 'GF256', 'link-16');">GF256</a></tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line"> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line"> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line"><tt class="py-comment">#: Cached fields.</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#:</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#: Calls to GF with identical modulus must return the same class</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#: (field), so we cache them here. The cache is seeded with the</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#: GF256 class which is always defined.</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-48" class="py-name" targets="Variable viff.field._field_cache=viff.field-module.html#_field_cache"><a title="viff.field._field_cache" class="py-name" href="#" onclick="return doclink('link-48', '_field_cache', 'link-48');">_field_cache</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-number">256</tt><tt class="py-op">:</tt> <tt id="link-49" class="py-name"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-49', 'GF256', 'link-16');">GF256</a></tt><tt class="py-op">}</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line"> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line"> </tt>
+<a name="GF"></a><div id="GF-def"><a name="L295"></a><tt class="py-lineno">295</tt> <a class="py-toggle" href="#" id="GF-toggle" onclick="return toggle('GF');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.field-module.html#GF">GF</a><tt class="py-op">(</tt><tt class="py-param">modulus</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GF-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="GF-expanded"><a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line">    <tt class="py-docstring">"""Generate a Galois (finite) field with the given modulus.</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line"><tt class="py-docstring">    The modulus must be a prime:</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; Z23 = GF(23) # works</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; Z10 = GF(10) # not a prime</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line"><tt class="py-docstring">    Traceback (most recent call last):</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line"><tt class="py-docstring">        ...</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line"><tt class="py-docstring">    ValueError: 10 is not a prime</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line"><tt class="py-docstring">    A modulus of 256 is special since it returns the GF(2^8) field</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line"><tt class="py-docstring">    even though 256 is no prime:</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; GF256 = GF(256)</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; print GF256(1)</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line"><tt class="py-docstring">    [1]</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line"><tt class="py-docstring">    Please note, that if you wish to calculate square roots, the</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line"><tt class="py-docstring">    modulus must be a Blum prime (congruent to 3 mod 4):</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; Z17 = GF(17) # 17 % 4 == 1, so 17 is no Blum prime</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; x = Z17(10)</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line"><tt class="py-docstring">    &gt;&gt;&gt; x.sqrt()</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line"><tt class="py-docstring">    Traceback (most recent call last):</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line"><tt class="py-docstring">        ...</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line"><tt class="py-docstring">    AssertionError: Cannot compute square root of {10} with modulus 17</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-50" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-50', 'modulus', 'link-14');">modulus</a></tt> <tt class="py-keyword">in</tt> <tt id="link-51" class="py-name"><a title="viff.field._field_cache" class="py-name" href="#" onclick="return doclink('link-51', '_field_cache', 'link-48');">_field_cache</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-52" class="py-name"><a title="viff.field._field_cache" class="py-name" href="#" onclick="return doclink('link-52', '_field_cache', 'link-48');">_field_cache</a></tt><tt class="py-op">[</tt><tt id="link-53" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-53', 'modulus', 'link-14');">modulus</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line"> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">mpz</tt><tt class="py-op">(</tt><tt id="link-54" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-54', 'modulus', 'link-14');">modulus</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">is_prime</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"%d is not a prime"</tt> <tt class="py-op">%</tt> <tt id="link-55" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-55', 'modulus', 'link-14');">modulus</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line"> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line">    <tt class="py-comment"># Define a new class representing the field. This class will be</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># returned at the end of the function.</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">class</tt> <tt class="py-def-name">GFElement</tt><tt class="py-op">(</tt><tt class="py-base-class">FieldElement</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line"> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">__init__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-56', 'modulus', 'link-14');">modulus</a></tt> </tt>
+</div><a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line"> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">__add__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line">            <tt class="py-docstring">"""Addition."""</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">GFElement</tt><tt class="py-op">,</tt> <tt class="py-name">int</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">NotImplemented</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line">                <tt class="py-comment"># We can do a quick test using 'is' here since</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># there will only be one class representing this</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># field.</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-57', 'field', 'link-46');">field</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-58', 'field', 'link-46');">field</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Fields must be identical"</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">GFElement</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">+</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">GFElement</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">+</tt> <tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line"> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line">        <tt id="link-59" class="py-name"><a title="viff.matrix.Matrix.__radd__
+viff.runtime.Share.__radd__" class="py-name" href="#" onclick="return doclink('link-59', '__radd__', 'link-19');">__radd__</a></tt> <tt class="py-op">=</tt> <tt id="link-60" class="py-name"><a title="viff.field.GF256.__add__
+viff.matrix.Matrix.__add__
+viff.runtime.Share.__add__" class="py-name" href="#" onclick="return doclink('link-60', '__add__', 'link-20');">__add__</a></tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line"> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">__sub__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line">            <tt class="py-docstring">"""Subtraction."""</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">GFElement</tt><tt class="py-op">,</tt> <tt class="py-name">int</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">NotImplemented</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line">                <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-61', 'field', 'link-46');">field</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-62', 'field', 'link-46');">field</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Fields must be identical"</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">GFElement</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">-</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">GFElement</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">-</tt> <tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line"> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">__rsub__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line">            <tt class="py-docstring">"""Subtraction (reflected argument version)."""</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">GFElement</tt><tt class="py-op">(</tt><tt class="py-name">other</tt> <tt class="py-op">-</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line"> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">__mul__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line">            <tt class="py-docstring">"""Multiplication."""</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">GFElement</tt><tt class="py-op">,</tt> <tt class="py-name">int</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">NotImplemented</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line">                <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-63', 'field', 'link-46');">field</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-64', 'field', 'link-46');">field</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Fields must be identical"</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">GFElement</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">*</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">GFElement</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">*</tt> <tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line"> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line">        <tt id="link-65" class="py-name"><a title="viff.matrix.Matrix.__rmul__
+viff.runtime.Share.__rmul__" class="py-name" href="#" onclick="return doclink('link-65', '__rmul__', 'link-36');">__rmul__</a></tt> <tt class="py-op">=</tt> <tt id="link-66" class="py-name"><a title="viff.field.GF256.__mul__
+viff.matrix.Matrix.__mul__
+viff.runtime.Share.__mul__" class="py-name" href="#" onclick="return doclink('link-66', '__mul__', 'link-37');">__mul__</a></tt> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line"> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">__pow__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">exponent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line">            <tt class="py-docstring">"""Exponentiation."""</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">GFElement</tt><tt class="py-op">(</tt><tt class="py-name">pow</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">exponent</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-67', 'modulus', 'link-14');">modulus</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line"> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">__neg__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line">            <tt class="py-docstring">"""Negation."""</tt> </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">GFElement</tt><tt class="py-op">(</tt><tt class="py-op">-</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line"> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">__invert__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line">            <tt class="py-docstring">"""Inversion.</tt> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line"><tt class="py-docstring">            Note that zero cannot be inverted, trying to do so</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt>  <tt class="py-line"><tt class="py-docstring">            will raise a ZeroDivisionError.</tt> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line"><tt class="py-docstring">            """</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ZeroDivisionError</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot invert zero"</tt><tt class="py-op">)</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line"> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">extended_gcd</tt><tt class="py-op">(</tt><tt class="py-param">a</tt><tt class="py-op">,</tt> <tt class="py-param">b</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line">                <tt class="py-docstring">"""The extended Euclidean algorithm."""</tt> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line">                <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line">                <tt class="py-name">lastx</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line">                <tt class="py-name">y</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line">                <tt class="py-name">lasty</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line">                <tt class="py-keyword">while</tt> <tt class="py-name">b</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line">                    <tt class="py-name">quotient</tt> <tt class="py-op">=</tt> <tt class="py-name">a</tt> <tt class="py-op">//</tt> <tt class="py-name">b</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line">                    <tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt> <tt class="py-op">%</tt> <tt class="py-name">b</tt> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line">                    <tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">lastx</tt> <tt class="py-op">=</tt> <tt class="py-name">lastx</tt> <tt class="py-op">-</tt> <tt class="py-name">quotient</tt><tt class="py-op">*</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line">                    <tt class="py-name">y</tt><tt class="py-op">,</tt> <tt class="py-name">lasty</tt> <tt class="py-op">=</tt> <tt class="py-name">lasty</tt> <tt class="py-op">-</tt> <tt class="py-name">quotient</tt><tt class="py-op">*</tt><tt class="py-name">y</tt><tt class="py-op">,</tt> <tt class="py-name">y</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">lastx</tt><tt class="py-op">,</tt> <tt class="py-name">lasty</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line"> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line">            <tt class="py-name">inverse</tt> <tt class="py-op">=</tt> <tt class="py-name">extended_gcd</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-68', 'modulus', 'link-14');">modulus</a></tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">GFElement</tt><tt class="py-op">(</tt><tt class="py-name">inverse</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line"> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">__div__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt>  <tt class="py-line">            <tt class="py-docstring">"""Division."""</tt> </tt>
+<a name="L412"></a><tt class="py-lineno">412</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt>  <tt class="py-line">                <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-69', 'field', 'link-46');">field</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-70', 'field', 'link-46');">field</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Fields must be identical"</tt> </tt>
+<a name="L414"></a><tt class="py-lineno">414</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> <tt class="py-op">*</tt> <tt class="py-op">~</tt><tt class="py-name">other</tt> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> <tt class="py-op">*</tt> <tt class="py-op">~</tt><tt class="py-name">GFElement</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line"> </tt>
+<a name="L418"></a><tt class="py-lineno">418</tt>  <tt class="py-line">        <tt class="py-name">__truediv__</tt> <tt class="py-op">=</tt> <tt id="link-71" class="py-name"><a title="viff.field.GF256.__div__" class="py-name" href="#" onclick="return doclink('link-71', '__div__', 'link-39');">__div__</a></tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt>  <tt class="py-line"> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">__rdiv__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt>  <tt class="py-line">            <tt class="py-docstring">"""Division (reflected argument version)."""</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">GFElement</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">)</tt> <tt class="py-op">/</tt> <tt class="py-name">self</tt> </tt>
+</div><a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line"> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt>  <tt class="py-line">        <tt class="py-name">__rtruediv__</tt> <tt class="py-op">=</tt> <tt id="link-72" class="py-name"><a title="viff.field.GF256.__rdiv__" class="py-name" href="#" onclick="return doclink('link-72', '__rdiv__', 'link-41');">__rdiv__</a></tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt>  <tt class="py-line"> </tt>
+<a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">sqrt</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L427"></a><tt class="py-lineno">427</tt>  <tt class="py-line">            <tt class="py-docstring">"""Square root.</tt> </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L429"></a><tt class="py-lineno">429</tt>  <tt class="py-line"><tt class="py-docstring">            No attempt is made the to return the positive square root.</tt> </tt>
+<a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L431"></a><tt class="py-lineno">431</tt>  <tt class="py-line"><tt class="py-docstring">            Computing square roots is only possible when the modulus</tt> </tt>
+<a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line"><tt class="py-docstring">            is a Blum prime (congruent to 3 mod 4).</tt> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt>  <tt class="py-line"><tt class="py-docstring">            """</tt> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt>  <tt class="py-line">            <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-73', 'modulus', 'link-14');">modulus</a></tt> <tt class="py-op">%</tt> <tt class="py-number">4</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">,</tt> <tt class="py-string">"Cannot compute square "</tt> \ </tt>
+<a name="L435"></a><tt class="py-lineno">435</tt>  <tt class="py-line">                   <tt class="py-string">"root of %s with modulus %s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-74', 'modulus', 'link-14');">modulus</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L436"></a><tt class="py-lineno">436</tt>  <tt class="py-line"> </tt>
+<a name="L437"></a><tt class="py-lineno">437</tt>  <tt class="py-line">            <tt class="py-comment"># Because we assert that the modulus is a Blum prime</tt> </tt>
+<a name="L438"></a><tt class="py-lineno">438</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># (congruent to 3 mod 4), there will be no reminder in the</tt> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># division below.</tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">root</tt> <tt class="py-op">=</tt> <tt class="py-name">pow</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-75', 'modulus', 'link-14');">modulus</a></tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">//</tt><tt class="py-number">4</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-76', 'modulus', 'link-14');">modulus</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">GFElement</tt><tt class="py-op">(</tt><tt class="py-name">root</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L442"></a><tt class="py-lineno">442</tt>  <tt class="py-line"> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">bit</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">index</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line">            <tt class="py-docstring">"""Extract a bit (index is counted from zero)."""</tt> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">&gt;&gt;</tt> <tt class="py-name">index</tt><tt class="py-op">)</tt> <tt class="py-op">&amp;</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="L446"></a><tt class="py-lineno">446</tt>  <tt class="py-line"> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">__repr__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">"{%d}"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> </tt>
+</div><a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line">            <tt class="py-comment">#return "GFElement(%d)" % self.value</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">__str__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt>  <tt class="py-line">            <tt class="py-docstring">"""Informal string representation.</tt> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line"><tt class="py-docstring">            This is simply the value enclosed in curly braces.</tt> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt>  <tt class="py-line"><tt class="py-docstring">            """</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">"{%d}"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> </tt>
+</div><a name="L457"></a><tt class="py-lineno">457</tt>  <tt class="py-line"> </tt>
+<a name="L458"></a><tt class="py-lineno">458</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">__eq__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L459"></a><tt class="py-lineno">459</tt>  <tt class="py-line">            <tt class="py-docstring">"""Equality test."""</tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt>  <tt class="py-line">                <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-77', 'field', 'link-46');">field</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-78', 'field', 'link-46');">field</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Fields must be identical"</tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">==</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">==</tt> <tt class="py-name">other</tt> </tt>
+</div><a name="L465"></a><tt class="py-lineno">465</tt>  <tt class="py-line"> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">__cmp__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line">            <tt class="py-docstring">"""Comparison."""</tt> </tt>
+<a name="L468"></a><tt class="py-lineno">468</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L469"></a><tt class="py-lineno">469</tt>  <tt class="py-line">                <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-79', 'field', 'link-46');">field</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-80', 'field', 'link-46');">field</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Fields must be identical"</tt> </tt>
+<a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">cmp</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">other</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">cmp</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line"> </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">__hash__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L475"></a><tt class="py-lineno">475</tt>  <tt class="py-line">            <tt class="py-docstring">"""Hash value."""</tt> </tt>
+<a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">hash</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-81', 'field', 'link-46');">field</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L477"></a><tt class="py-lineno">477</tt>  <tt class="py-line"> </tt>
+<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">__nonzero__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L479"></a><tt class="py-lineno">479</tt>  <tt class="py-line">            <tt class="py-docstring">"""Truth value testing.</tt> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt>  <tt class="py-line"><tt class="py-docstring">            Returns False if this element is zero, True otherwise.</tt> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt>  <tt class="py-line"><tt class="py-docstring">            This allows GF elements to be used directly in Boolean</tt> </tt>
+<a name="L483"></a><tt class="py-lineno">483</tt>  <tt class="py-line"><tt class="py-docstring">            formula:</tt> </tt>
+<a name="L484"></a><tt class="py-lineno">484</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt>  <tt class="py-line"><tt class="py-docstring">            &gt;&gt;&gt; bool(GF256(0))</tt> </tt>
+<a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line"><tt class="py-docstring">            False</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line"><tt class="py-docstring">            &gt;&gt;&gt; bool(GF256(1))</tt> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt>  <tt class="py-line"><tt class="py-docstring">            True</tt> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line"><tt class="py-docstring">            &gt;&gt;&gt; x = GF256(1)</tt> </tt>
+<a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line"><tt class="py-docstring">            &gt;&gt;&gt; not x</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line"><tt class="py-docstring">            False</tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line"><tt class="py-docstring">            """</tt> </tt>
+<a name="L493"></a><tt class="py-lineno">493</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt> </tt>
+</div></div><a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line"> </tt>
+<a name="L495"></a><tt class="py-lineno">495</tt>  <tt class="py-line">    <tt class="py-name">GFElement</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-82', 'modulus', 'link-14');">modulus</a></tt> <tt class="py-op">=</tt> <tt id="link-83" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-83', 'modulus', 'link-14');">modulus</a></tt> </tt>
+<a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line">    <tt class="py-name">GFElement</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-84', 'field', 'link-46');">field</a></tt> <tt class="py-op">=</tt> <tt class="py-name">GFElement</tt> </tt>
+<a name="L497"></a><tt class="py-lineno">497</tt>  <tt class="py-line"> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line">    <tt id="link-85" class="py-name"><a title="viff.field._field_cache" class="py-name" href="#" onclick="return doclink('link-85', '_field_cache', 'link-48');">_field_cache</a></tt><tt class="py-op">[</tt><tt id="link-86" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-86', 'modulus', 'link-14');">modulus</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">GFElement</tt> </tt>
+<a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">GFElement</tt> </tt>
+</div><a name="L500"></a><tt class="py-lineno">500</tt>  <tt class="py-line"> </tt>
+<a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line"> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">"__main__"</tt><tt class="py-op">:</tt> </tt>
+<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">doctest</tt>    <tt class="py-comment">#pragma NO COVER</tt> </tt>
+<a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line">    <tt class="py-name">doctest</tt><tt class="py-op">.</tt><tt class="py-name">testmod</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment">#pragma NO COVER</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Mar 12 20:49:08 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/viff.field.FieldElement-class.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff.field.FieldElement</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="viff-module.html">Package&nbsp;viff</a> ::
+        <a href="viff.field-module.html">Module&nbsp;field</a> ::
+        Class&nbsp;FieldElement
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff.field.FieldElement-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class FieldElement</h1><p class="nomargin-top"><span class="codelink"><a href="viff.field-pysrc.html#FieldElement">source&nbsp;code</a></span></p>
+<center>
+<center>  <map id="class_hierarchy_for_fieldeleme" name="class_hierarchy_for_fieldeleme">
+<area shape="rect" href="viff.field.FieldElement&#45;class.html" title="FieldElement" alt="" coords="5,5,101,32"/>
+<area shape="rect" href="viff.field.GF256&#45;class.html" title="GF256" alt="" coords="24,61,83,88"/>
+</map>
+  <img src="class_hierarchy_for_fieldeleme.gif" alt='' usemap="#class_hierarchy_for_fieldeleme" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>Common base class for elements.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__init__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Properties</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Properties"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Mar 12 20:49:07 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.4/viff.field.GF256-class.html	Wed Mar 12 20:52:09 2008 +0100
@@ -0,0 +1,1045 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff.field.GF256</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="viff-module.html">Package&nbsp;viff</a> ::
+        <a href="viff.field-module.html">Module&nbsp;field</a> ::
+        Class&nbsp;GF256
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff.field.GF256-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class GF256</h1><p class="nomargin-top"><span class="codelink"><a href="viff.field-pysrc.html#GF256">source&nbsp;code</a></span></p>
+<center>
+<center>  <map id="class_hierarchy_for_gf256" name="class_hierarchy_for_gf256">
+<area shape="rect" href="viff.field.FieldElement&#45;class.html" title="FieldElement" alt="" coords="5,5,101,32"/>
+<area shape="rect" href="viff.field.GF256&#45;class.html" title="GF256" alt="" coords="24,61,83,88"/>
+</map>
+  <img src="class_hierarchy_for_gf256.gif" alt='' usemap="#class_hierarchy_for_gf256" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>Models an element of the GF(2^8) field.</p>
+
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Nested Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-NestedClasses"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="viff.field.GF256-class.html" class="summary-name">field</a><br />
+      Models an element of the GF(2^8) field.
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.field.GF256-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">value</span>)</span><br />
+      Initialize new element.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.field-pysrc.html#GF256.__init__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.field.GF256-class.html#__add__" class="summary-sig-name">__add__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">other</span>)</span><br />
+      Add this and another GF256 element.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.field-pysrc.html#GF256.__add__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.field.GF256-class.html#__radd__" class="summary-sig-name">__radd__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">other</span>)</span><br />
+      Add this and another GF256 element (reflected argument version).</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.field-pysrc.html#GF256.__add__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.field.GF256-class.html#__sub__" class="summary-sig-name">__sub__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">other</span>)</span><br />
+      Subtract this and another GF256 element.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.field-pysrc.html#GF256.__add__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.field.GF256-class.html#__rsub__" class="summary-sig-name">__rsub__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">other</span>)</span><br />
+      Subtract this and another GF256 element (reflected argument version).</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.field-pysrc.html#GF256.__add__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.field.GF256-class.html#__xor__" class="summary-sig-name">__xor__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">other</span>)</span><br />
+      Exclusive-or.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.field-pysrc.html#GF256.__add__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.field.GF256-class.html#__rxor__" class="summary-sig-name">__rxor__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">other</span>)</span><br />
+      Exclusive-or (reflected argument version).</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.field-pysrc.html#GF256.__add__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.field.GF256-class.html#__mul__" class="summary-sig-name">__mul__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">other</span>)</span><br />
+      Multiply this and another GF256.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.field-pysrc.html#GF256.__mul__">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.field.GF256-class.html#__rmul__" class="summary-sig-name">__rmul__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">other</span>)</span><br />