pytde/doc/classref/kdecore/KProcess.html

349 lines
20 KiB

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
"http://www.w3.org/TR/html4/loose.dtd"">
<html>
<head>
<title>class KProcess</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="wabbit dumphtml">
</head>
<body>
<h4>PyKDE - Python Bindings for KDE</h4>
<hr>
<table width="100%"><tr>
<td width ="70%">
<h1>class KProcess</h1><hr>
</td>
<td width="30%" valign="top" align="right">
<table>
<tr><td align="right"><a href="doc/index.html">Table of contents</a></td></tr>
<tr><td align="right"><a href="../index.html">Modules</a></td></tr>
<tr><td align="right"><a href="index.html">kdecore Classes</a></td></tr>
<tr><td align="right"><a href="../allclasses.html">All Classes</a></td></tr>
</table>
</td>
</tr></table>
<table>
<tr><td width="10%" align=left>Module</td>
<td width="30%" align=left>kdecore</td>
</tr>
<tr><td>Class</td>
<td>KProcess</td>
</tr>
<tr><td>Inherits</td>
<td>QObject </td>
</tr>
</table>
<h3>enums</h3><ul>
<li><b>(anonymous)</b> = {PrioLowest, PrioLow, PrioLower, PrioNormal, PrioHigher, PrioHigh, PrioHighest
}<li><b>Communication</b> = {NoCommunication, Stdin, Stdout, Stderr, AllOutput, All, NoRead, CTtyOnly, MergedStderr
}<li><b>Communication</b> = {NoCommunication, Stdin, Stdout, Stderr, AllOutput, All, NoRead
}<li><b>RunMode</b> = {DontCare, NotifyOnExit, Block, OwnGroup
}<li><b>RunMode</b> = {DontCare, NotifyOnExit, Block
}</ul>
<h3>methods</h3><ul>
<li><b>KProcess</b> (parent, name = 0)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KProcess instance</i></td></tr>
<tr><td>In versions KDE 3.2.0 and above only</td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>parent</td><td>QObject</td><td></td></tr>
<tr><td>name</td><td>char</td><td>0</td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>KProcess</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KProcess instance</i></td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>KProcess</b> (a0)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>a KProcess instance</i></td></tr>
<tr><td>In versions <i>less than</i> KDE 3.2.0 only</td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>a0</td><td>KProcess</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>args</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QValueList<QCString>)</i></td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>childError</b> (fdno)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>fdno</td><td>int</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>childOutput</b> (fdno)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>fdno</td><td>int</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>clearArguments</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>closeAll</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
<tr><td>In versions KDE 3.2.0 and above only</td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>closePty</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
<tr><td>In versions KDE 3.2.0 and above only</td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>closeStderr</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>closeStdin</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>closeStdout</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>commClose</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>commSetupDoneC</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>commSetupDoneP</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>coreDumped</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
<tr><td>In versions KDE 3.2.0 and above only</td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>detach</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>exitSignal</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
<tr><td>In versions KDE 3.2.0 and above only</td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>exitStatus</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>getPid</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>isRunning</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>kill</b> (signo = SIGTERM)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>signo</td><td>int</td><td>SIGTERM</td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>normalExit</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>pid</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(pid_t)</i></td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>processExited</b> (proc)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>proc</td><td>KProcess</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>processHasExited</b> (state)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>state</td><td>int</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>pty</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KPty)</i></td></tr>
<tr><td> In versions KDE 3.2.0 and above, but <i>less than </i> KDE 3.4.0</td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>quote</b> (arg)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(QString)</i></td></tr>
<tr><td>In versions KDE 3.1.0 and above only</td></tr>
<tr><td><i>static</i></td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>arg</td><td>QString</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>receivedStderr</b> (proc, buffer, buflen)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>proc</td><td>KProcess</td><td></td></tr>
<tr><td>buffer</td><td>char</td><td></td></tr>
<tr><td>buflen</td><td>int</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>receivedStdout</b> (proc, buffer, buflen)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>proc</td><td>KProcess</td><td></td></tr>
<tr><td>buffer</td><td>char</td><td></td></tr>
<tr><td>buflen</td><td>int</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>receivedStdout</b> (fd)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td><i>Not Implemented</i></td></tr></table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>resume</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>runPrivileged</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>setArguments</b> (arglist)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>arglist</td><td>a Python list of strings</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td>setArguments is the PyKDE equivalent of the stream operator methods (<<)
in KDE's KProcess class - provide with a list of strings representing
the arguments to the executable program set with setExecutable (PyKDE
will continue to provide setExecutable even though it's deprecated in
KDE (to also be replaced with stream operators)
</td></tr></table></td></tr></table></li><hr>
<li><b>setBinaryExecutable</b> (filename)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
<tr><td>In versions KDE 3.2.0 and above only</td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>filename</td><td>char</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>setEnvironment</b> (name, value)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>name</td><td>QString</td><td></td></tr>
<tr><td>value</td><td>QString</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>setExecutable</b> (proc)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>proc</td><td>QString</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>setPriority</b> (prio)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
<tr><td>In versions KDE 3.2.0 and above only</td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>prio</td><td>int</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>setRunPrivileged</b> (keepPrivileges)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>keepPrivileges</td><td>bool</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>setUsePty</b> (a0, a1)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
<tr><td> In versions KDE 3.2.0 and above, but <i>less than </i> KDE 3.4.0</td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>a0</td><td>KProcess.Communication</td><td></td></tr>
<tr><td>a1</td><td>bool</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>setUseShell</b> (useShell, shell = 0)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
<tr><td>In versions KDE 3.1.0 and above only</td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>useShell</td><td>bool</td><td></td></tr>
<tr><td>shell</td><td>char</td><td>0</td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>setWorkingDirectory</b> (dir)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>dir</td><td>QString</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>setupCommunication</b> (comm)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(int)</i></td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>comm</td><td>KProcess.Communication</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>setupEnvironment</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>signalled</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
<tr><td>In versions KDE 3.2.0 and above only</td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>slotChildError</b> (fdno)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>fdno</td><td>int</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>slotChildOutput</b> (fdno)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>fdno</td><td>int</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>slotSendData</b> (dummy)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>dummy</td><td>int</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>start</b> (runmode = NotifyOnExit, comm = NoCommunication)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>runmode</td><td>KProcess.RunMode</td><td>NotifyOnExit</td></tr>
<tr><td>comm</td><td>KProcess.Communication</td><td>NoCommunication</td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>suspend</b> ()
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
</table></td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>wait</b> (timeout = -1)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
<tr><td>In versions KDE 3.2.0 and above only</td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>timeout</td><td>int</td><td>-1</td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>writeStdin</b> (buffer, buflen)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(bool)</i></td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>buffer</td><td>char</td><td></td></tr>
<tr><td>buflen</td><td>int</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>wroteStdin</b> (proc)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>nothing</i></td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>proc</td><td>KProcess</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
</ul>
<h2>operators</h2><ul>
<li><b>operator &lt;&lt;</b> (a0)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KProcess)</i></td></tr>
<tr><td>In versions KDE 3.1.4 and above only</td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>a0</td><td>QString</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>operator &lt;&lt;</b> (a0)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KProcess)</i></td></tr>
<tr><td>In versions KDE 3.1.4 and above only</td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>a0</td><td>char</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>operator &lt;&lt;</b> (a0)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KProcess)</i></td></tr>
<tr><td>In versions KDE 3.1.4 and above only</td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>a0</td><td>QCString</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
<li><b>operator &lt;&lt;</b> (a0)
<table width = "100%"><tr><td width="50%" valign="top"><table><tr><td>returns <i>(KProcess)</i></td></tr>
<tr><td>In versions KDE 3.1.4 and above only</td></tr>
</table><table><tr bgcolor="#fff0ff"><th>Argument</th><th>Type</th><th>Default</th></tr>
<tr><td>a0</td><td>QStringList</td><td></td></tr>
</table>
</td><td width="50%"><table><tr><td></td></tr></table></td></tr></table></li><hr>
</ul>
</body>
</html>