source: trunk/www/flare_alerts/index.php@ 20115

Last change on this file since 20115 was 19778, checked in by Daniela Dorner, 5 years ago
added links to visbility and GBM alerts
File size: 19.3 KB
Line 
1<!DOCTYPE HTML>
2<html>
3<head>
4 <link rel="stylesheet" type="text/css" href="checkstyle.css" />
5 <style>
6 .error {color: #FF0000;}
7 </style>
8
9 <script language="JavaScript" type="text/javascript">
10 if (document.getElementById) {
11 document.writeln('<style type="text/css"><!--')
12 document.writeln('.texter {display:none} @media print {.texter {display:block;}}')
13 document.writeln('//--></style>') }
14 function openClose(theID) {
15 if (document.getElementById(theID).style.display == "block") {
16 document.getElementById(theID).style.display = "none"
17 } else {
18 document.getElementById(theID).style.display = "block" }
19 }
20 </script>
21</head>
22<body>
23
24<?php
25
26 echo "<hr size='2px' style='border-width:5px'>\n";
27 echo "<h1>Flare Alerts</h1>\n";
28 echo "<hr>\n";
29 echo "<h2>Acknowledge Alerts</h2>\n";
30
31 if (!empty($_GET["date"]))
32 {
33 $today=$_GET["date"];
34 }
35 else
36 {
37 if (date("H")>18)
38 $today=date("Ymd", mktime(0,0,0,date("m"), date("d"), date("Y")));
39 else
40 $today=date("Ymd",strtotime(date("Y-m-d", mktime(0,0,0,date("m"), date("d"), date("Y")))." -1 day"));
41 }
42 if (!empty($_GET["date2"]))
43 {
44 $today2=$_GET["date2"];
45 }
46 else
47 {
48 $today2=date("Ymd", mktime(0,0,0,date("m"), date("d"), date("Y")));
49 }
50 if (!empty($_GET["trigger"]))
51 $trigger=$_GET["trigger"];
52 else
53 $trigger="New";
54 if (!empty($_GET["type"]))
55 $type=$_GET["type"];
56 else
57 $type=0;
58 $year=substr($today,0,4);
59 $month=substr($today,4,2);
60 $day=substr($today,6,2);
61
62 echo "<form method=\"post\" action=\"acknowledge_alerts.php\" enctype=\"multipart/form-data\" >\n";
63 //echo "<form method=\"get\" action=\"acknowledge_alerts.php\" enctype=\"multipart/form-data\" >\n";
64 echo "<p>\n";
65 echo "User Name: <input type='text' name='Uname' maxlength='50' /> <br>\n";
66 echo "Password: <input type='password' name='Passwd' maxlength='50' /> <br>\n";
67 echo "</p>\n";
68 //echo "<input type='text' name='link' value='test'\>\n";
69 echo "<input type='submit' name='submit' value='Acknowledge Alerts' />\n";
70 echo "<input type='hidden' name='link' value='".$_SERVER[REQUEST_URI]."'\>\n";
71 //echo "---".$_SERVER[REQUEST_URI]."---";
72 echo "</form>\n";
73 echo "<hr>\n";
74
75 echo "<h2>Display Alerts</h2>\n";
76 echo "<form method=\"get\" action=\"index.php\" enctype=\"multipart/form-data\" >\n";
77 echo "<p>\n";
78 echo "Date/Start: <input type='text' name='date' size='8' maxlength='8' value='".$today."'/>\n";
79 echo "Stop: <input type='text' name='date2' size='8' maxlength='8' value='".$today2."'/> <br>\n";
80 echo "Trigger:\n";
81 if ($trigger=="All")
82 {
83 echo "<input type='radio' name='trigger' id='All' value='All' checked='checked'/> <label for='All'>all</label>\n";
84 echo "<input type='radio' name='trigger' id='New' value='New' /> <label for='New'>new</label>\n";
85 }
86 else
87 {
88 echo "<input type='radio' name='trigger' id='All' value='All' /> <label for='All'>all</label>\n";
89 echo "<input type='radio' name='trigger' id='New' value='New' checked='checked'/> <label for='New'>new</label>\n";
90 }
91 echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type: <input type='text' name='type' size='2' maxlength='2' value='".$type."'/> <br>\n";
92 echo "</p>\n";
93 echo "<input type='submit' name='submit' value='Show Alerts' />\n";
94 echo "<input class='Width' type='button' value='Reset' onClick='self.location.href=\"index.php\"'>";
95 echo "</form>\n";
96 echo "<hr>\n";
97
98
99 echo "<h2>".$trigger." alert(s) from ".$today." to ".$today2.": </h2>";
100 if($_SERVER["HTTPS"] != "on")
101 {
102 header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
103 exit();
104 }
105 include('/home/fact/php_credentials/factweb.php');
106
107 $db = new PDO(
108 'mysql:host='.$host.';dbname=FlareAlerts;charset=utf8mb4',
109 $user,
110 $pass);
111
112 // table with alert from table FlareAlerts.FlareTriggers
113 echo "<table border='1' style='border-collapse:collapse'>\n";
114 $first_row = 0;
115 $colnames = "";
116
117 $query="SELECT CONCAT(fTriggerKey, '[', fTriggerType, ']') AS 'Trigger[Type]', if (isnull(fName), fSourceName, fName) AS 'Source', ";
118 $query.="fPacketTypeKey AS 'Packet', CONCAT(Round(fRa,2), '/', Round(fDec,2), '/', Round(fErr,2)) AS 'Ra/Dec/Err', ";
119 $query.="CONCAT(fNight, '_', fRunID) AS 'Run', ";
120 $query.="if (fBinning=-1, 'nightly', CONCAT(fBinning, ' min')) AS 'Binning', ";
121 $query.="fTriggerInserted AS 'Inserted', fTriggerAcknowledged AS 'Acknowledged', ";
122 //$query.="CONCAT('<a target=\"_blank\" href=\"http://fact-project.org/monitoring/index.php?y=".substr($today,0,4)."&m=".substr($today,4,2)."&d=".substr($today,6,2)."&source=', fSourceKey, '&timebin=3&plot=night\">20Min</a> ', ";
123 //$query.="'<a target=\"_blank\" href=\"http://fact-project.org/monitoring/index.php?y=".substr($today,0,4)."&m=".substr($today,4,2)."&d=".substr($today,6,2)."&source=', fSourceKey, '&timebin=12&plot=night\">Nightly</a>') as 'QLA', ";
124 $query.="CONCAT('<a target=\"_blank\" href=\"http://www.fact-project.org/run_db/db/fact_runinfo.php?fSourceKEY=', fSourceKey, '&fStartDate=', "
125 .$today.", '&fStopDate=', ".$today
126 .", '&fSourceName=On&fRunTypeName=On&fRunStart=On&fRunStop=On&fZenithDistanceMean=On&fAzimuthMean=On&fTriggerRateMedian=On&fThresholdMedian=On&fSourceName=On\">RunInfo</a>') as 'RunInfo', ";
127 $query.="CONCAT('<a target=\"_blank\" href=\"http://www.fact-project.org/run_db/db/fact_runinfo.php?fSourceKEY=', fSourceKey, '&fStartDate=', "
128 .$today.", '&fStopDate=', ".$today.", '&fSourceName=On&fRunTypeKEY=-1\">Summary</a>') AS 'Summary', ";
129 $query.="CONCAT('<image src=\"https://fact-project.org/lightcurves/', DATE_FORMAT(fNight, '%Y/%m/%d'), '/lightcurve', fSourceKey, '_20min_', fNight, '.root-2.png\" width=\"200\" height=\"200\"></image>\n <br>\n "
130 ."<a target=\"_blank\" href=\"http://fact-project.org/monitoring/index.php?y=', YEAR(fNight), '&m=', MONTH(fNight), '&d=', DAY(fNight), '&source=', fSourceKey, '&timebin=3&plot=night\">more details</a>\n') AS 'QLA 20min', ";
131 $query.="CONCAT('<image src=\"https://fact-project.org/lightcurves/', DATE_FORMAT(fNight, '%Y/%m/%d'), '/lightcurve', fSourceKey, '_1night_', fNight, '.root-2.png\" width=\"200\" height=\"200\"></image>\n <br>\n "
132 ."<a target=\"_blank\" href=\"http://fact-project.org/monitoring/index.php?y=', YEAR(fNight), '&m=', MONTH(fNight), '&d=', DAY(fNight), '&source=', fSourceKey, '&timebin=12&plot=night\">more details</a>\n') AS 'QLA 1night', ";
133 $query.="CONCAT('<image src=\"https://fact-project.org/lightcurves/', DATE_FORMAT(fNight, '%Y/%m/%d'), '/lightcurve', fSourceKey, '_1night_week.root-2.png\" width=\"200\" height=\"200\"></image>\n <br>\n "
134 ."<a target=\"_blank\" href=\"http://fact-project.org/monitoring/index.php?y=', YEAR(fNight), '&m=', MONTH(fNight), '&d=', DAY(fNight), '&source=', fSourceKey, '&timebin=12&plot=week\">more details</a>\n') AS 'QLA nightly last week' ";
135 $query.="FROM FlareTriggers LEFT JOIN factdata.Source USING (fSourceKey) WHERE fNight BETWEEN ".$today." AND ".$today2;
136 if ($trigger=="New")
137 $query.=" AND ISNULL(fTriggerAcknowledged) ";
138 if ($type)
139 $query.=" AND fTriggerType=".$type;
140 //echo $query;
141
142 $result = $db->query($query)->fetchAll(PDO::FETCH_ASSOC);
143 foreach($result as $row)
144 {
145 if ($first_row == 0)
146 {
147 $first_row = 1;
148 echo "<tr>\n";
149 $colnames = array_keys($row);
150 foreach($colnames as $colname){
151 echo "<th>".$colname."</th>\n";
152 }
153 echo "</tr>\n";
154 }
155 echo "<tr>\n";
156 foreach ($colnames as $key)
157 {
158 echo "<td>".$row[$key];
159 if ($key=="Ra/Dec/Err")
160 {
161 $coordinates=explode("/", $row[$key], 3);
162 $rahh=floor($coordinates[0]);
163 $ramm=floor(($coordinates[0]-$rahh)*60);
164 $rass=round((($coordinates[0]-$rahh)*60-$ramm)*60, 2);
165 //echo "RA: ".$rahh.":".$ramm.":".$rass;
166 $decdd=floor($coordinates[1]);
167 $decmm=floor(($coordinates[1]-$decdd)*60);
168 $decss=floor((($coordinates[1]-$decdd)*60-$decmm)*60);
169 $decss=round((($coordinates[1]-$decdd)*60-$decmm)*60, 2);
170 //echo "Dec: ".$decdd.":".$decmm.":".$decss;
171
172 //echo "<iframe width='100%' height='315' src='http://tevcat.uchicago.edu/visplot.cgi?tname=Sample-Crab&ra=19 24 00&dec=15 54 00&lat=28.76&date=24-10-2019&lon=-17.88&mode=1' frameborder='0' allowfullscreen></iframe>\n";
173 echo " <a target='_blank' rel='noopener' href='http://tevcat.uchicago.edu/visplot.cgi?tname=".str_replace("#", "", $row["Source"])."&ra=".$rahh." ".$ramm." ".$rass."&dec=".$decdd." ".$decmm." ".$decss."&lat=28.76&date=24-10-2019&lon=-17.88&mode=1'>vis</a>\n";
174 }
175 if ($key=="Source")
176 {
177 if (strpos($row[$key], "GBM")!==false)
178 echo " <a target='_blank' rel='noopener' href='https://gcn.gsfc.nasa.gov/other/".str_replace("GBM#", "", $row[$key]).".fermi'>gcn</a>\n";
179 }
180 echo "</td>\n";
181 }
182 echo "</tr>\n";
183 }
184 echo "</table>\n";
185 echo "<hr size='2px' style='border-width:5px'>\n";
186 echo "<h1>Additional Information</h1>\n";
187
188 //obs_summary.php
189 echo "<h2> From Observation-Summary: </h2>\n";
190 echo "<iframe width='100%' height='315' src='https://fact-project.org/dch/obs_summary.php?d=".$year."-".$month."-".$day."&nolegend=yes' frameborder='0' allowfullscreen></iframe>\n";
191
192 /*
193 $query="SELECT fSourceKey AS 'Source', fStart AS 'Start of Observation', fData AS 'Settings' FROM factdata.Schedule WHERE ";
194 $query.="fSTART BETWEEN DATE_ADD(DATE_FORMAT(".$today.", '%Y-%m-%d'), INTERVAL +18 HOUR) ";
195 $query.="AND DATE_ADD(DATE_FORMAT(".$today2.", '%Y-%m-%d'), INTERVAL +35 HOUR) ";
196 //$query.="AND fData='nodrs:true,grb:true'";
197 $query.="AND NOT ISNULL(fData)";
198 echo "<h2> ToO observations in schedule from ".$today." to ".$today2.": </h2>";
199 echo "<table border='1' style='border-collapse:collapse'>\n";
200 $first_row = 0;
201 $colnames = "";
202 $result = $db->query($query)->fetchAll(PDO::FETCH_ASSOC);
203 foreach($result as $row)
204 {
205 if ($first_row == 0)
206 {
207 $first_row = 1;
208 echo "<tr>\n";
209 $colnames = array_keys($row);
210 foreach($colnames as $colname){
211 echo "<th>".$colname."</th>\n";
212 }
213 echo "</tr>\n";
214 }
215 echo "<tr>\n";
216 foreach ($colnames as $key) {
217
218 echo "<td>".$row[$key]."</td>\n";
219 }
220 echo "</tr>\n";
221 }
222 echo "</table>\n";
223 */
224
225 $query="SELECT fSourceName AS 'Source', fStart AS 'Start of Observation', fData AS 'Settings', fUser AS 'User' ";
226 $query.="FROM factdata.Schedule LEFT JOIN factdata.Source USING (fSourceKey) WHERE ";
227 $query.="fSTART BETWEEN DATE_ADD(DATE_FORMAT(".$today.", '%Y-%m-%d'), INTERVAL +18 HOUR) ";
228 $query.="AND DATE_ADD(DATE_FORMAT(".$today2.", '%Y-%m-%d'), INTERVAL +35 HOUR) ";
229 //$query.="AND fData='nodrs:true,grb:true'";
230 $query.="AND fMeasurementTypeKey=4";
231 echo "<h2> Physics observations in schedule from ".$today." to ".$today2.": </h2>";
232 echo "<table border='1' style='border-collapse:collapse'>\n";
233 $first_row = 0;
234 $colnames = "";
235 $result = $db->query($query)->fetchAll(PDO::FETCH_ASSOC);
236 foreach($result as $row)
237 {
238 if ($first_row == 0)
239 {
240 $first_row = 1;
241 echo "<tr>\n";
242 $colnames = array_keys($row);
243 foreach($colnames as $colname){
244 echo "<th>".$colname."</th>\n";
245 }
246 echo "</tr>\n";
247 }
248 echo "<tr>\n";
249 foreach ($colnames as $key) {
250
251 echo "<td>".$row[$key]."</td>\n";
252 }
253 echo "</tr>\n";
254 }
255 echo "</table>\n";
256
257 // table with ToOs
258 $query="SELECT fSourceName AS 'Source', CONCAT(ToOs.fRightAscension, '/', Source.fRightAscension) AS 'RA (Satellite/FACT)', ";
259 $query.="CONCAT(ToOs.fDeclination, '/', Source.fDeclination) AS 'Dec (Satellite/FACT)', ";
260 $query.="fLastUpdate AS 'ToO time', fTypeID AS 'PaketType' FROM factdata.ToOs LEFT JOIN factdata.Source USING (fSourceKey) ";
261 $query.="WHERE fLastUpdate BETWEEN DATE_ADD(DATE_FORMAT(".$today.", '%Y-%m-%d'), INTERVAL +18 HOUR) ";
262 $query.="AND DATE_ADD(DATE_FORMAT(".$today2.", '%Y-%m-%d'), INTERVAL +35 HOUR) ";
263 echo "<h2> ToO observations in ToO-table from ".$today." to ".$today2.": </h2>";
264 echo "<table border='1' style='border-collapse:collapse'>\n";
265 $first_row = 0;
266 $colnames = "";
267 $result = $db->query($query)->fetchAll(PDO::FETCH_ASSOC);
268 foreach($result as $row)
269 {
270 if ($first_row == 0)
271 {
272 $first_row = 1;
273 echo "<tr>\n";
274 $colnames = array_keys($row);
275 foreach($colnames as $colname){
276 echo "<th>".$colname."</th>\n";
277 }
278 echo "</tr>\n";
279 }
280 echo "<tr>\n";
281 foreach ($colnames as $key) {
282
283 echo "<td>".$row[$key]."</td>\n";
284 }
285 echo "</tr>\n";
286 }
287 echo "</table>\n\n";
288
289 //weather:
290 echo "<h2>Weather Info:</h2>\n";
291 echo "<image src='http://www.gtc.iac.es/multimedia/netcam/camaraAllSky.jpg' frameborder='0' allowfullscreen></image>\n";
292
293 //visibility
294 echo "<h2>Visibility:</h2>\n";
295 echo "<image src='https://www.fact-project.org/scheduling/".$year."/".$month."/".$day."/".$today."-ZenithDistance.png' frameborder='0' allowfullscreen></image>\n";
296
297
298 echo "<hr>\n";
299 echo "<h2>Important Links for Flare Experts</h2>";
300 echo "<li><a href='https://trac.fact-project.org/wiki/Protected/FlareAlertInfo'>All information on flare alerts in FACT</a></li>\n";
301 echo "<ul>\n";
302
303 echo "<li> Sending ToOs: <ul>\n";
304 echo "<li><a href='https://trac.fact-project.org/wiki/Protected/FlareAlertInfo#Type1MoUpartners'>Alert to MoU partners</a></li>\n";
305 echo "<li><a href='https://www.swift.psu.edu/toop/too.php'>Swift-ToO</a></li>\n";
306 echo "<li>List of Previous Flare Alerts: <a href='https://trac.fact-project.org/wiki/FlareAlertsSent'>[old]</a> \n";
307 echo "<a href='https://fact-project.org/run_db/db/printtable.php?fTable=FlareAlerts.Sent'>[new, view-only]</a> (add alert to list)</li>\n";
308 echo "</li></ul>\n";
309
310 echo "<li> Data Quality and Weather: <ul>\n";
311 echo "<li><a href='https://www.fact-project.org/logbook/calendar.php?action=dayview&calendar=1&year=".$year."&month=".$month."&day=".$day."'>logbook ".$year."-".$month."-".$day."</a></li>\n";
312 echo "<li><a href='https://fact-project.org/overview_video/".$year."/".$month."/".$day."/images'>Overview Images</a></li>\n";
313 echo "<li>Weather info: <a href='http://www.magic.iac.es/site/weather/index.html'>MAGIC</a>, \n";
314 echo "<a href='http://tngweb.tng.iac.es/weather/current'>TNG</a>,\n";
315 echo "<a href='http://atmosportal.gtc.iac.es/'>GTC</a></li>\n";
316 echo "<li><a href='http://www.gtc.iac.es/multimedia/webcamPopup.php?webcam=skycam'>GTC allsky cam current image</a></li>\n";
317 echo "</li></ul>\n";
318
319 echo "<li> Visibility and Scheduling: <ul>\n";
320 echo "<li><a href='https://fact-project.org/showlog/?log=scheduler#bottom'>scheduler log</a>, ";
321 echo "<a href='https://fact-project.org/showlog/?log=gcn#bottom'>gcn log</a></li>\n";
322 echo "<li>FACT: <a href='https://www.fact-project.org/schedule'>Schedule</a>\n";
323 echo "<a href='https://www.fact-project.org/dch/scheduling.php'>Visibility</a> </li>\n";
324 echo "<li>Swift-XRT Schedule: \n";
325 echo "<a href='https://www.swift.psu.edu/operations/obsSchedule.php?d=".$year."-".$month."-".($day-1)."&a=0'>".$year."-".$month."-".($day-1)."</a>, \n";
326 echo "<a href='https://www.swift.psu.edu/operations/obsSchedule.php?d=".$year."-".$month."-".$day."&a=0'>".$year."-".$month."-".$day."</a>, \n";
327 echo "<a href='https://www.swift.psu.edu/operations/obsSchedule.php?d=".$year."-".$month."-".($day+1)."&a=0'>".$year."-".$month."-".($day+1)."</a> \n";
328 echo "(planned) \n";
329 echo "<a href='https://www.swift.psu.edu/operations/obsSchedule.php?d=".$year."-".$month."-".($day-1)."&a=1'>".$year."-".$month."-".($day-1)."</a>, \n";
330 echo "<a href='https://www.swift.psu.edu/operations/obsSchedule.php?d=".$year."-".$month."-".$day."&a=1'>".$year."-".$month."-".$day."</a>, \n";
331 echo "<a href='https://www.swift.psu.edu/operations/obsSchedule.php?d=".$year."-".$month."-".($day+1)."&a=1'>".$year."-".$month."-".($day+1)."</a> \n";
332 echo "(achieved)</li>\n";
333 echo "</li></ul>\n";
334 //XMM, NuStar, Integral
335
336 echo "<li> Other Information: <ul>\n";
337 echo "<li><a href='https://trac.fact-project.org/browser/trunk/FACT%2B%2B/src/HeadersGCN.h'> Explanation Paket Types in FACT++</a></li>\n";
338 echo "</li></ul>\n";
339
340 echo "<li> GRBs: <ul>\n";
341 echo "<li><a href='https://gcn.gsfc.nasa.gov/fermi_grbs.html'>Fermi-GBM GRBs</a> \n";
342 echo "(<a href='https://gcn.gsfc.nasa.gov/fermi.html'>Fermi</a>)</li>\n";
343 echo "<li><a href='https://gcn.gsfc.nasa.gov/swift_grbs.html'>Swift-BAT GRBs</a> \n";
344 echo "(<a href='https://gcn.gsfc.nasa.gov/swift.html'>Swift</a>)</li>\n";
345 echo "<li><a href='https://gcn.gsfc.nasa.gov/integral_grbs.html'>INTEGRAL GRBs</a>\n";
346 echo "(<a href='https://gcn.gsfc.nasa.gov/integral.html'>INTEGRAL</a>)</li>\n";
347 echo "<li><a href='https://gcn.gsfc.nasa.gov/agile_grbs.html'>AGILE GRBs</a>\n";
348 echo "(<a href='https://gcn.gsfc.nasa.gov/agile.html'>AGILE</a>)</li>\n";
349 echo "<li><a href='https://gcn.gsfc.nasa.gov/amon_hawc_events.html'>AMON HAWC Bursts</a>\n";
350 echo "(<a href='https://gcn.gsfc.nasa.gov/amon.html'>AMON</a>)</li>\n";
351 echo "</li></ul>\n";
352
353 echo "<li> Transients: <ul>\n";
354 echo "<li><a href='https://gcn.gsfc.nasa.gov/fermi_lat_mon_trans.html'>Fermi-LAT monitored and transient</a>\n";
355 echo "(<a href='https://gcn.gsfc.nasa.gov/fermi.html'>Fermi</a>)</li>\n";
356 echo "</li></ul>\n";
357
358 echo "<li> Neutrinos: <ul>\n";
359 echo "<li><a href='https://gcn.gsfc.nasa.gov/amon_ehe_events.html'>AMON EHE/HESE Events</a>\n";
360 echo "(<a href='https://gcn.gsfc.nasa.gov/amon.html'>AMON</a>)</li>\n";
361 echo "<li><a href='https://gcn.gsfc.nasa.gov/amon_icecube_gold_bronze_events.html'>AMON IceCube BRONZE/GOLD Events</a>\n";
362 echo "(<a href='https://gcn.gsfc.nasa.gov/amon.html'>AMON</a>)</li>\n";
363 echo "<li><a href='https://gcn.gsfc.nasa.gov/gcn3_archive.html'>GCN circulars</a></li>\n";
364 echo "</li></ul>\n";
365
366 echo "<li> GW: <ul>\n";
367 echo "<li><a href='https://gcn.gsfc.nasa.gov/lvc.html'>LVC</a></li>\n";
368 echo "<li><a href='https://gracedb.ligo.org/latest/'>latest GW-alerts</a></li>\n";
369 echo "<li><a href='https://gcn.gsfc.nasa.gov/gcn3_archive.html'>GCN circulars</a></li>\n";
370 echo "</li></ul>\n";
371 echo "</ul>\n";
372 // to be added
373 // email template
374 // flare summary (copy flare-alert files to gate)
375 // internal qla links: 10 min, 5 min, significance (20 min, nightly)
376 // make links dependent on flare type and if sourcekey is available
377 // link to visibility plot (+ create them)
378 // future dreams
379 // interface to send email directly to both too-lists
380 echo "<hr size='2px' style='border-width:5px'>\n";
381
382?>
383</body>
384</html>
Note: See TracBrowser for help on using the repository browser.