Subversion Repositories LCARS

Compare Revisions

Last modification

Ignore whitespace Rev 197 → Rev 198

/branches/live/media/video/series/application/models/databases/seriometer/SeriOMeterDb.php
0,0 → 1,6
<?php
 
class SeriOMeterDb extends \PointedEars\PHPX\Db\MySQLDB
{
protected $_dbname = 'seriometer';
}
/branches/live/media/video/series/application/models/databases/seriometer/tables/SeriesTable.php
0,0 → 1,113
<?php
 
class SeriesTable extends \PointedEars\PHPX\Db\MySQLTable
{
/**
* (non-PHPdoc)
* @see \PointedEars\PHPX\Db\Table::$_name
*/
protected static $_name = 'series';
 
/**
* (non-PHPdoc)
* @see \PointedEars\PHPX\Db\Table::$_columns
*/
protected static $_columns = array(
/* UNSIGNED INT NOT NULL AUTO_INCREMENT */
'series_id' => array(
'type' => 'INT',
'unsigned' => true,
'not_null' => true,
'auto_inc' => true
),
 
/* VARCHAR(45) NOT NULL */
'title' => array(
'type' => 'VARCHAR(45)',
'not_null' => true
),
 
/* BIT NOT NULL DEFAULT 0 */
'ignore' => array(
'type' => 'BIT',
'not_null' => true,
'default' => 0
),
 
/* INT UNSIGNED NOT NULL */
'channel_id' => array(
'type' => 'INT',
'unsigned' => true,
'not_null' => true
),
 
/* DATETIME NULL */
'last_seen' => array(
'type' => 'DATETIME',
),
 
/* VARCHAR(45) NULL */
'seasons' => array(
'type' => 'VARCHAR(45)',
),
 
/* VARCHAR(45) NULL */
'url' => array(
'type' => 'VARCHAR(45)',
)
);
 
/**
* (non-PHPdoc)
* @see \PointedEars\PHPX\Db\Table::$_indexes
*/
protected static $_indexes = array(
/* UNIQUE INDEX `title_UNIQUE` (`title` ASC) */
'title_UNIQUE' => array(
'unique' => true,
'columns' => array('title' => 'ASC')
),
 
/* PRIMARY KEY (`series_id`) */
'PRIMARY' => array(
'columns' => array('series_id')
),
 
/* INDEX `fk_series_channel` (`channel_id` ASC) */
'fk_series_channel' => array(
'columns' => array('channel_id' => 'ASC')
)
);
 
/*
* CONSTRAINT `fk_series_channel`
* FOREIGN KEY (`channel_id` )
* REFERENCES `series`.`channel` (`channel_id` )
* ON DELETE NO ACTION
* ON UPDATE NO ACTION
*/
/**
* (non-PHPdoc)
* @see \PointedEars\PHPX\Db\Table::$_constraints
*/
protected static $_constraints = array(
'foreign_keys' => array(
'fk_series_channel' => array(
'columns' => array('channel_id'),
'references_table' => array('series', 'channel'),
'references_columns' => array('channel_id'),
'rules' => array(
'ON DELETE' => 'NO ACTION',
'ON UPDATE' => 'NO ACTION'
)
)
)
);
 
/* ENGINE = InnoDB */
/**
* (non-PHPdoc)
* @see \PointedEars\PHPX\Db\MySQLTable::$_engine
*/
protected static $_engine = 'InnoDB';
}
/branches/live/media/video/series/application/models/mappers/SeriesMapper.php
0,0 → 1,58
<?php
 
require_once 'application/models/Series.php';
 
class SeriesMapper extends \PointedEars\PHPX\Db\Mapper
{
private static $_instance;
 
protected function __construct ()
{
/* singleton */
}
 
/**
* @return SeriesMapper
*/
public static function getInstance ()
{
if (self::$_instance === null)
{
self::$_instance = new self();
}
 
return self::$_instance;
}
 
/**
* @param array $series
*/
public function importAll ($series)
{
foreach ($series as $key => &$data)
{
$data['title'] = $key;
$serie = new Series($data);
// var_dump($data);
var_dump($serie);
// $serie->save();
}
}
 
/**
* @param array $series
*/
public function getList ($series)
{
$series2 = array();
 
foreach ($series as $key => &$data)
{
$data['title'] = $key;
$serie = new Series($data);
$series2[] = $serie;
}
 
return $series2;
}
}
/branches/live/media/video/series/application/models/Series.php
0,0 → 1,273
<?php
 
require_once 'application/models/databases/seriometer/tables/SeriesTable.php';
 
class Series extends \PointedEars\PHPX\Model
{
/**
* (non-PHPdoc)
* @see \PointedEars\PHPX\Model::$_persistentTable
*/
protected static $_persistentTable = 'SeriesTable';
 
/**
* (non-PHPdoc)
* @see \PointedEars\PHPX\Model::$_persistentId
*/
protected static $_persistentId = 'series_id';
 
/**
* (non-PHPdoc)
* @see \PointedEars\PHPX\Model::$_persistentProperties
*/
protected static $_persistentProperties = array(
'title',
'ignore',
'channel_id',
'last_seen',
'seasons',
'showtimes',
'url'
);
 
protected static $_urns = array(
'wiki' => 'http://de.wikipedia.org/wiki/'
);
 
/**
* @var int
*/
protected $_series_id;
 
/**
* @var string
*/
protected $_title;
 
/**
* @var bool
*/
protected $_ignore = false;
 
/**
* @var string
*/
protected $_channel;
 
/**
* @var string
*/
protected $_showtimes;
 
/**
* @var array
*/
protected $_seen;
 
/**
* @var int
*/
protected $_last_seen;
 
/**
* @var array[string]
*/
protected $_seasons;
 
/**
* @var string
*/
protected $_episode_list;
 
/**
* @var array
*/
protected $_episodes;
 
/**
* @var string
*/
protected $_url;
 
/* Computed properties */
 
/**
* Number of seen episodes
* @var int
*/
protected $_count;
 
/**
* The total number of episodes of this series
* @var int
*/
protected $_total;
 
/**
* The percentage of seen episodes
* @var double
*/
protected $_percentage;
 
/**
* Season ranges, consisting of arrays of the number of
* the first and last episode of a season.
* @var array
*/
protected $_season_ranges;
 
public function setSeries_id ($value)
{
$this->_series_id = (int) $value;
return $this;
}
 
public function setTitle ($value)
{
$this->_title = trim((string) $value);
return $this;
}
 
public function setIgnore ($value)
{
$this->_ignore = (bool) $value;
return $this;
}
 
public function setChannel ($value)
{
$this->_channel = trim((string) $value);
return $this;
}
 
public function setShowtimes ($value)
{
$this->_showtimes = trim((string) $value);
return $this;
}
 
public function setLast_seen ($value)
{
$this->_last_seen = ($value === null
? $value
: (($time = strtotime($value . ' GMT')) !== false ? $time : null));
return $this;
}
 
public function setSeasons ($value)
{
$this->_seasons = is_array($value) ? $value : explode(',', $value);
return $this;
}
 
public function setEpisode_list ($value)
{
$episode_list = (string) $value;
 
if ($episode_list !== null)
{
foreach (self::$_urns as $prefix => $urn)
{
if (preg_match("/^{$prefix}:/", $episode_list))
{
$episode_list = preg_replace("/^{$prefix}:/", $urn,
str_replace(' ', '_', $episode_list));
}
}
}
 
$this->_episode_list = $episode_list;
 
return $this;
}
 
public function setEpisodes ($value)
{
$this->_episodes = is_array($value) ? $value : null;
return $this;
}
 
public function setUrl ($value)
{
$this->_url = (string) $value;
return $this;
}
 
public function getCount ()
{
if ($this->_count === null)
{
$count = 0;
$seen = $this->seen;
 
if (is_array($seen))
{
$count = count($seen);
 
foreach ($seen as $episode_or_range)
{
if (is_array($episode_or_range))
{
$count += $episode_or_range[1] - $episode_or_range[0];
}
}
}
 
$this->_count = $count;
}
 
return $this->_count;
}
 
/**
* Returns the number of episodes of this series,
* based on the season or episodes data, preferring the former.
*
* @return int
*/
public function getTotal ()
{
if ($this->_total === null)
{
if (is_array($this->seasons))
{
$total = array_sum($this->seasons);
$episode_count = 1;
$this->_season_ranges = array();
 
foreach ($this->seasons as $season_key => $season_length)
{
if (is_int($season_key))
{
$this->_season_ranges[$season_key + 1] =
array($episode_count, $episode_count + $season_length - 1);
}
 
$episode_count += $season_length;
}
}
else
{
$total = max(array_keys($this->episodes));
}
 
$this->_total = $total;
}
 
return $this->_total;
}
 
/**
* Returns the percentage of seen episodes
* @return double
*/
public function getPercentage ()
{
if ($this->_percentage === null)
{
$this->_percentage = $this->count / $this->total * 100;
}
 
return $this->_percentage;
}
}
/branches/live/media/video/series/application/layouts/index/index.phtml
0,0 → 1,362
<?php header('Content-Type: text/html; charset=UTF-8'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Seri-o-meter</title>
<?php
// require_once 'css/lessphp/lessc.inc.php';
// lessc::ccompile('style.less', 'style-less.css');
// require_once 'css/least/LEAST.php';
// de\pointedears\css\least\LEAST::compile('style.css', 'style-least.css');
?>
<link rel="stylesheet" href="style.css" type="text/css">
<script type="text/javascript" src="/scripts/builder.php?src=object"></script>
<script type="text/javascript">
/*
function setStyle(obj, style)
{
var styleProperties = Object.getOwnPropertyNames(style);
for (var i = styleProperties.length; i--;)
{
var prop = styleProperties[i];
obj.style[prop] = style[prop];
}
}
 
function editor()
{
var div = document.createElement("div");
setStyle(div, {
position: "fixed",
right: "0",
top: "0",
width: "200px",
bottom: "0",
backgroundColor: "#ccc"
});
document.body.appendChild(div);
 
function findRules(selectorText)
{
var slice = Array.prototype.slice;
function toArray(obj)
{
return slice.call(obj);
}
 
var rx = new RegExp("(^|\\s)" + selectorText.replace(/[^$.(){}\[\]]/, "\\$&") + "\\s*$");
var hits = toArray(document.styleSheets).map(function (styleSheet) {
return toArray(styleSheet.cssRules || styleSheet.rules).filter(function (rule) {
return rx.test(rule.selectorText);
});
}).filter(function (hit) {
return hit.length > 0;
});
 
return Array.prototype.concat.apply([], hits);
}
 
var afterRule = findRules(".heroes .o::after");
var rxBgImage = new RegExp(
"{RADIALGRADIENT}\\(\\s*({POSITION}\\s*,\\s*)?({SHAPE}\\s*,\\s*)?{COLORSTOP}(\\s*,\\s*{COLORSTOP})+\\s*\\)"
.replace(/\{RADIALGRADIENT\}/g, "(-(webkit|moz|o|ms)-)?radial-gradient")
.replace(/\{POSITION\}/g, "{LENGTH}(\\s+{LENGTH})?")
.replace(/\{SHAPE\}/g, "\\s*((circle|ellipse)(\\s+({EDGE}))?|{LENGTH}(\\s+{LENGTH}))")
.replace(/\{EDGE\}/g, "cover|closest-corner|closest-side|farthest-corner|farthest-side")
.replace(/\{COLORSTOP\}/g, "{COLOR}(\\s*{PERCENTAGE})?")
.replace(/\{LENGTH\}/g, "{NUMBER}{UNIT}")
.replace(/\{COLOR\}/g, "({COLORNAME}|{RGB}|{RGBA})")
.replace(/\{RGB\}/g, "rgb\\s*\\(\\s*{COLORCOMP}(\\s*,\\s*{COLORCOMP}){2}\\s*\\)")
.replace(/\{RGBA\}/g, "rgba\\s*\\(\\s*{COLORCOMP}(\\s*,\\s*{COLORCOMP}){2}\\s*,\\s*{PERCENTAGE}\\s*\\)")
.replace(/\{COLORCOMP\}/g, "{NUMBER}%?")
.replace(/\{COLORNAME\}/g, "black|transparent")
.replace(/\{PERCENTAGE\}/g, "{NUMBER}%?")
.replace(/\{NUMBER\}/g, "\\d+")
.replace(/\{UNIT\}/g, "(px|%|em|ex|pt)")
, "g");
console.log(rxBgImage);
var value = afterRule[0].style.getPropertyValue("background-image");
console.log(value);
var backgroundImages = value.match(rxBgImage);
console.log(backgroundImages);
}
*/
var _getProperty;
 
function net()
{
var map = {
"gene-roddenberry's-andromeda": "andromeda",
"battlestar-galactica-2004": "battlestar-galactica",
"battlestar-galactica-2004-de": "battlestar-galactica",
"buffy-the-vampire-slayer": "buffy",
"lois-clark-the-new-adventures-of-superman": "lois-clark-the-new-adventures-of-superman-1993",
};
 
var translations = {
"akte-x": "the-x-files",
};
 
var f = function (e) {
if (e && e.shiftKey && e.ctrlKey)
{
var key = this.textContent.toLowerCase()
.replace(/[&:.,()–]/g, "").replace(/\s+/g, "-")
.replace("-de", "");
 
if (typeof _getProperty == "undefined")
{
_getProperty = jsx.object.getProperty;
}
 
key = _getProperty(map, key, key);
 
if (e.altKey)
{
var baseURL = "http://serienjunkies.org/serie/";
}
else
{
key = _getProperty(translations, key, key).replace(/-/g, "_");
baseURL = "http://www.tubeplus.me/search/tv-shows/";
}
 
window.open(baseURL + encodeURIComponent(key));
 
e.preventDefault();
}
};
 
try
{
for (var a = document.links, i = a.length; i--;)
{
var e = a[i];
e.addEventListener("click", f, false);
}
}
catch (e) {}
}
</script>
</head>
 
<body onload="net() // editor()">
<h1 class="hidden">Seri-o-meter</h1>
<?php // var_dump($serien); ?>
<table>
<?php
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN')
{
function strftime_portable ($format, $timestamp = null)
{
if ($timestamp === null)
{
$timestamp = time();
}
 
$format = preg_replace('#(?<!%)((?:%%)*)%e#', '\1%#d', $format);
return strftime($format, $timestamp);
}
}
else
{
function strftime_portable ($format, $timestamp = null)
{
if ($timestamp === null)
{
$timestamp = time();
}
 
return strftime($format, $timestamp);
}
}
 
setlocale(LC_ALL, 'de_CH.UTF-8');
$this->setLanguage('de');
 
$min_series = $this->min_series;
foreach ($this->serien as $name => $serie)
{
?>
<tr>
<td style="text-align: center"><?php
$recommended = ($name === $min_series);
if ($serie->ignore)
{
?>&#9646;&#9646;<?php
}
else if ($recommended)
{
?>→<?php
}
?></td>
<th<?php if ($recommended) { ?> class="recommended"<?php } ?>><?php
$ep_list = $serie->episode_list;
if ($ep_list)
{
?><a href="<?php
echo $this->escape($serie->episode_list);
?>" title="<?php echo $this->escape($this->_('Episode list')); ?>"><?php
}
echo $serie->title;
if ($ep_list) { ?></a><?php }
?><br>
<span style="font-weight: normal"><?php
if ($serie->channel) echo $serie->channel;
 
if ($serie->showtimes)
{
echo ', ' . $serie->showtimes;
}
?></span></th>
<td<?php if ($recommended) { ?> class="recommended"<?php } ?>>
<div><?php echo $this->_('Watched:'); ?> <?php
echo $this->getCoverage($serie->seen) . ' ('. $serie->count;
?> von <?php $total = $serie->total; echo $total; ?> Episoden)<?php
if ($serie->last_seen)
{
?>; zuletzt am <?php
echo utf8_encode(strftime_portable('%A, %e. %B %Y %H:%M %z', $serie->last_seen));
}
?></div>
<div class="box">
<div class="meter"
style="width: <?php
$percentage = $serie->percentage;
echo $percentage; ?>%"
></div>
<?php
if ($serie->seasons)
{
$offset = 0;
foreach ($serie->seasons as $key => $season)
{
?>
<div class="season"
<?php
if (!is_numeric($key))
{
?> title="<?php echo $this->escape($key); ?>"<?php
}
?>
style="<?php
if ($key === 0)
{
?>border-left: none; <?php
}
?>left: <?php echo $offset; ?>%;
width: <?php echo $season / $total * 100; ?>%"
><?php
if (is_numeric($key))
{
echo ($key + 1);
}
else
{
echo $key;
}
?></div>
<?php
$offset += round($season / $total * 100, 1);
}
}
 
if ($serie->episodes)
{
$prevNumber = null;
foreach ($serie->episodes as $episode => $description)
{
$episode_str = $episode;
if (is_array($serie->season_ranges))
{
foreach ($serie->season_ranges as $season_key => $season_range)
{
if ($episode >= $season_range[0] && $episode <= $season_range[1])
{
$episode_str = sprintf("%u (%ux%02u)", $episode, $season_key, $episode - $season_range[0] + 1);
}
}
}
?>
<div class="coverage"
style="<?php
if (is_null($prevNumber) || $prevNumber !== $episode - 1)
{
?>border-left: 1px solid rgba(0, 218, 0, 0.5); <?php
}
?>
border-right: 1px solid rgba(0, 218, 0, 0.5);
background-color: transparent;
left: <?php echo ($episode - 1) / $total * 100; ?>%;
width: <?php echo 1 / $total * 100; ?>%"
title="<?php
echo "{$episode_str}: " . $this->escape($description);
?>"></div><?php
$prevNumber = $episode;
}
}
 
if ($serie->seen)
{
foreach ($serie->seen as $range)
{
if (!is_array($range))
{
$range = array($range, $range);
}
/*
for ($i = $episode[0]; $i < $episode[1]; ++$i)
{
?>
<div class="coverage"
style="left: <?php echo ($episode[0] - 1) / $total * 100; ?>%;
width: <?php echo ($episode[1] - $episode[0] + 1) / $total * 100; ?>%"
></div>
<?php
}
}
else
*/
 
for ($episode = $range[0]; $episode <= $range[1]; ++$episode)
{
$episode_str = $episode;
if ($serie->season_ranges)
{
foreach ($serie->season_ranges as $season_key => $season_range)
{
if ($episode >= $season_range[0] && $episode <= $season_range[1])
{
$episode_str = sprintf("%u (%ux%02u)", $episode, $season_key, $episode - $season_range[0] + 1);
}
}
}
?>
<div class="coverage"
style="left: <?php echo ($episode - 1) / $total * 100; ?>%;
width: <?php echo 1 / $total * 100; ?>%"
<?php
if ($serie->episodes && array_key_exists($episode, $serie->episodes))
{
?>title="<?php
echo "{$episode_str}: " . $this->escape($serie->episodes[$episode]);
?>"<?php
}
?>></div>
<?php
}
}
}
?>
<span class="percentage"><?php echo round($percentage, 1); ?>%</span>
</div>
</td>
</tr>
<?php
}
?>
</table>
</body>
</html>
/branches/live/media/video/series/application/controllers/IndexController.php
0,0 → 1,151
<?php
 
require_once 'application/views/IndexView.php';
require_once 'application/models/mappers/SeriesMapper.php';
 
class IndexController extends \PointedEars\PHPX\Controller
{
/**
* Creates a new controller for the index view
*
* @see Controller::__construct()
*/
public function __construct ()
{
parent::__construct('IndexView');
}
 
public function indexAction ()
{
require_once 'data.inc';
 
$min_percentage = 100;
$min_series = null;
 
$data = array(
'urns' => array(
'wiki' => 'http://de.wikipedia.org/wiki/'
)
);
 
$serien = SeriesMapper::getInstance()->getList($serien);
 
foreach ($serien as $key => &$serie)
{
if ($serie->total > 0)
{
if (!$serie->ignore && $serie->percentage < $min_percentage)
{
$min_percentage = $serie->percentage;
$min_series = $key;
}
}
}
 
$this->assign('serien', $serien);
$this->assign('min_series', $min_series);
$this->render();
}
 
private function oldIndexAction ()
{
require_once 'data.inc';
 
$min_percentage = 100;
$min_series = null;
 
$data = array(
'urns' => array(
'wiki' => 'http://de.wikipedia.org/wiki/'
),
'list' => &$serien
);
 
foreach ($serien as $key => &$serie)
{
$count = 0;
$serie['coverage'] = array();
 
if (isset($serie['seen']))
{
$count = count($serie['seen']);
 
foreach ($serie['seen'] as $episode)
{
if (is_array($episode))
{
$count += $episode[1] - $episode[0];
$serie['coverage'][] = $episode[0] . '&ndash;' . $episode[1];
}
else
{
$serie['coverage'][] = $episode;
}
}
}
 
$serie['count'] = $count;
 
$serie['total'] = 0;
if (isset($serie['seasons']) && is_array($serie['seasons']))
{
$serie['total'] = array_sum($serie['seasons']);
 
$episode_count = 1;
$serie['season_ranges'] = array();
foreach ($serie['seasons'] as $season_key => $season_length)
{
if (is_int($season_key))
{
$serie['season_ranges'][$season_key + 1] = array($episode_count, $episode_count + $season_length - 1);
}
 
$episode_count += $season_length;
}
}
else
{
$serie['total'] = max(array_keys($serie['episodes']));
}
 
$serie['percentage'] = 0;
if ($serie['total'] > 0)
{
$serie['percentage'] = $count / $serie['total'] * 100;
 
if ((!isset($serie['ignore']) || !$serie['ignore'])
&& $serie['percentage'] < $min_percentage)
{
$min_percentage = $serie['percentage'];
$min_series = $key;
}
}
 
if (isset($serie['episode_list']))
{
$episode_list =& $serie['episode_list'];
foreach ($data['urns'] as $prefix => $urn)
{
if (preg_match("/^{$prefix}:/", $episode_list))
{
$episode_list = preg_replace("/^{$prefix}:/", $urn,
str_replace(' ', '_', $episode_list));
}
}
}
}
 
// var_dump($serien['<span class="alf">ALF</span>']);
 
$this->assign('serien', $serien);
$this->assign('min_series', $min_series);
$this->render();
}
 
// public function importAction ()
// {
// require_once 'data.inc';
// header('Content-Type: text/html; charset=UTF-8');
// SeriesMapper::getInstance()->importAll($serien);
// }
}
/branches/live/media/video/series/application/views/IndexView.php
0,0 → 1,90
<?php
 
class IndexView extends \PointedEars\PHPX\View
{
/**
* @var \Zend\I18n\Translator\Translator
*/
private $_translator;
 
/**
* @var string
*/
private $_textDomain;
 
/**
* @var string
*/
private $_language;
 
/**
* Creates a new index view
*
* @see View::__construct()
*/
public function __construct ($template)
{
parent::__construct('application/layouts/index/index.phtml');
 
require_once 'Zend/Loader/StandardAutoloader.php';
$loader = new Zend\Loader\StandardAutoloader(array('autoregister_zf' => true));
$loader->register();
 
$translator = $this->_translator = new Zend\I18n\Translator\Translator();
// $translator->setCache(new Zend\Cache\Storage\*Adapter());
$type = 'gettext';
$base_dir = $_SERVER['DOCUMENT_ROOT'] . '/i18n/LocaleData';
$pattern = '%s/LC_MESSAGES/%1$s.pointedears.mo';
$text_domain = $this->_textDomain = 'de.pointedears';
$translator->addTranslationFilePattern($type, $base_dir, $pattern, $text_domain);
}
 
/**
* @param string $value
* @return IndexView
*/
public function setLanguage ($value)
{
$this->_language = $value;
return $this;
}
 
/**
* Returns the translation of the parameter, if any,
* using Zend Framework 2.1 Translate
*
* @param string $s
* @return string
*/
public function _ ($s)
{
return $this->_translator->translate($s, $this->_textDomain, $this->_language);
}
 
public function getCoverage ($seen)
{
if (!is_array($seen))
{
return '';
}
 
return implode(', ',
array_map(
function ($e) {
if (is_array($e))
{
if ($e[1] === $e[0] + 1)
{
return implode(', ', $e);
}
 
return $e[0] . '&ndash;' . $e[1];
}
 
return $e;
},
$seen
)
);
}
}
/branches/live/media/video/series/data.inc
0,0 → 1,1227
<?php
include_once 'includes/x-files.php';
include_once 'includes/alf.php';
include_once 'includes/andromeda.php';
include_once 'includes/battlestar-galactica.php';
include_once 'includes/big-bang-theory.php';
include_once 'includes/buffy.php';
include_once 'includes/castle.php';
include_once 'includes/charmed.php';
include_once 'includes/columbo.php';
include_once 'includes/dead-zone.php';
include_once 'includes/efc.php';
include_once 'includes/frasier.php';
include_once 'includes/futurama.php';
include_once 'includes/glee.php';
include_once 'includes/heroes.php';
include_once 'includes/house.php';
include_once 'includes/macgyver.php';
include_once 'includes/monk.php';
include_once 'includes/moonlighting.php';
include_once 'includes/numb3rs.php';
include_once 'includes/psych.php';
include_once 'includes/quantum-leap.php';
include_once 'includes/remington-steele.php';
include_once 'includes/scrubs.php';
include_once 'includes/seaquest.php';
include_once 'includes/simpsons.php';
include_once 'includes/sliders.php';
include_once 'includes/stargate.php';
include_once 'includes/star-trek-tos.php';
include_once 'includes/star-trek-tng.php';
include_once 'includes/superman.php';
include_once 'includes/time-trax.php';
include_once 'includes/true-blood.php';
 
$serien = array_merge($serien, array(
'<span class="buffy"><span class="title">Buffy</span><span class="hidden">'
. ' – </span><span class="subtitle">the Vampire Slayer</span></span>' => &$buffy,
 
'<span class="castle">Castle</span>' => &$castle,
 
'<span class="charmed"><span class="circle"></span><span class="arc3"></span><span class="c">C</span><span>harmed</span></span>' => &$charmed,
 
'<span class="columbo">Columbo</span>' => &$columbo,
// '<span class="columbo">Columbo</span> (de)' => &$columbo_de,
 
'<span class="countdown-x"><span class="title">Countdown X</span>'
. '&nbsp;&ndash;<span class="subtitle">Alarm im All</span></span>' => array(
'ignore' => true,
// 'channel' => 'Tele 5',
// 'showtimes' => 'Di–Sa 04:20',
'seen' => array(4, 6),
// 'last_seen' => mktime(3, 45, 0, 12, 21, 2010),
'seasons' => array(21),
'episode_list' => 'http://www.imdb.de/title/tt0115126/episodes',
'episodes' => array(
1 => 'Pilot',
2 => 'In Friends We Trust',
3 => 'No Fear',
4 => 'Gerüchte (Just a Rumor)',
5 => 'Play Astronaut for Me',
6 => 'Countdown mit Hindernissen (Lost in Space)',
7 => 'Affären (Family Values)',
8 => 'Ruhet in Frieden (Buried in Peace)',
9 => 'Fremdes Leben (The Need to Know)',
10 => "Giftige Gase (Reggie's Wild Ride)",
11 => 'Die Bombendrohung (Burning Fuse)',
12 => 'Ahnungslos im Einsatz (Judgment Call)',
13 => 'The Accusation',
14 => 'Erscheinungen (Interpretations)',
15 => 'Der Hurrikan (Hurricane)',
16 => 'Eine schwierige Entscheidung (The Last to Know)',
17 => 'Der kleine Prinz (The Astronaut Formerly Known as Prince)',
18 => 'Spionage (Enemy Within)',
19 => 'Die Zeitkapsel (Just Like Old Times)',
20 => 'Katastrophe auf der MIR – Teil 1 (Mir, Mir Off the Wall, Part 1)',
21 => 'Katastrophe auf der MIR – Teil 2 (Mir, Mir Off the Wall, Part 2)'
)
),
 
'<span class="dead-zone"><span class="text"><span class="dead">Dead</span>
<span class="zone">Zone</span></span></span>' => &$dead_zone,
 
'<span class="doctor-who"><span class="gradient"><span class="gradient2">'
. '<span class="gradient3">Doctor Who</span></span></span></span> (9–11)' => array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Fr 20:00',
'seen' => array(array(1, 6), 42, 56, array(60, 62)),
// 'last_seen' => mktime(20, 0, 0, 12, 19, 2011),
'seasons' => array(
13, 'Special 2005' => 1,
13, 'Special 2006' => 1,
13, 'Special 2007' => 1,
13, 'Special 2008–2010' => 4,
13, 'Special 2010' => 1,
13, 'Special 2011' => 1
),
'episode_list' => 'wiki:en:List_of_Doctor_Who_serials#Ninth_Doctor',
'episodes' => array(
1 => "Rose",
2 => "The End of the World",
3 => "The Unquiet Dead",
4 => "Aliens of London",
5 => "World War Three",
6 => "Dalek",
7 => "The Long Game",
8 => "Father's Day",
9 => "The Empty Child",
10 => "The Doctor Dances",
11 => "Boom Town",
12 => "Bad Wolf",
13 => "The Parting of the Ways",
 
14 => "The Christmas Invasion",
 
15 => "New Earth",
28 => "The Runaway Bride",
 
29 => "Smith and Jones",
42 => "Voyage of the Damned (17.12.2011)",
43 => "Partners in Crime",
 
56 => "The Next Doctor (19.12.2011)",
57 => "Planet of the Dead",
58 => "The Waters of Mars",
59 => "The End of Time (20.12.2011)",
 
60 => 'The Eleventh Hour (18.06.2011 03:45)',
61 => 'The Beast Below (17.06.2011 21:05)',
62 => 'Victory of the Daleks (20.06.2011 20:00)',
63 => 'The Time of Angels (21.06.2011 04:30)',
64 => 'Flesh and Stone (02.07.2011 04:15)',
65 => 'The Vampires of Venice (04.07.2011 20:00)',
66 => "Amy's Choice (07.07.2011 04:35)",
67 => 'The Hungry Earth (11.07.2011 20:00)',
68 => 'Cold Blood',
69 => 'Vincent and the Doctor (22.07.2011 20:00)',
70 => 'The Lodger',
71 => 'The Pandorica Opens',
72 => 'The Big Bang',
73 => 'A Christmas Carol (22.12.2011)',
 
74 => 'The Impossible Astronaut',
75 => 'Day of the Moon',
76 => 'The Curse of the Black Spot (13.05.2011 20:00)',
77 => "The Doctor's Wife",
78 => 'The Rebel Flesh',
79 => 'The Almost People',
80 => 'A Good Man Goes to War (06.06.2011 05:25, 10.06.2011 21:00)',
81 => "Let's Kill Hitler",
82 => 'Night Terrors',
83 => 'The Girl Who Waited',
84 => 'The God Complex (19.09.2011)',
85 => 'Closing Time (24.09.2011)',
86 => 'The Wedding of River Song (01.10.2011)',
87 => "The Doctor, the Widow and the Wardrobe (25.12.2011)",
)
),
 
'<span class="efc"><span class="gr">Gene Roddenberry\'s</span>'
. ' <span class="earth"><span class="gradient">Eart<span class="h">h</span></span></span>'
. '<span class="hidden">:</span>'
. ' <span class="fc">Final Conflict</span><span class="glare"></span></span>' => &$efc,
 
'<span class="eureka"><span class="eur">Eur</span><span class="e">e</span>'
. '<span class="ka">ka</span></span></span>' => array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Mo 20:15',
'seen' => array(array(1, 10)),
'seasons' => array(12, 13, 18, 21, 14),
'episode_list' => 'wiki:en:List_of_Eureka_episodes',
'episodes' => array(
1 => 'Pilot (Am Ende der Zeit)',
2 => 'Many Happy Returns (S.A.R.A.H)',
3 => "Before I Forget (Sommernachtstraumsinvasion)",
4 => "Alienated (Angriff der Außerirdischen)",
5 => "Invincible (Unbesiegbar)",
6 => "Dr. Nobel",
7 => "Blink (Auf Speed)",
8 => "Right as Raynes (Der Weihnachts-Virus)",
9 => "Primal (Urinstinkte)",
10 => "Purple Haze (Pollenflug)",
11 => "H.O.U.S.E. Rules (Hausordnung)",
12 => "Once in a Lifetime (Einmal im Leben)",
 
13 => "Die brennenden Wissenschaftler (Phoenix Rising)",
14 => "Gefangen im Kraftfeld (Try, Try Again)",
15 => "Stürmische Zeiten (Unpredictable)",
16 => "Das verrückte Licht (Games People Play)",
17 => "Achtung Meteoriten (Duck, Duck Goose)",
18 => "Ansteckende Träume (Noche de Sueños)",
19 => "Familientreffen (Family Reunion)",
20 => "Voll blöd (E = MC…?)",
21 => "Der unsichtbare Erste (Sight Unseen)",
22 => "Das Tor zur Ewigkeit (God is in the Details)",
23 => "Unwiderstehlich (Maneater)",
24 => "Der Fluch des Alchimisten (All that Glitters)",
25 => "Eine Nacht bei Global Dynamics (A Night in Global Dynamics)",
 
26 => "Martha, sei nicht zickig (Bad to the Drone)",
27 => "Re-Evolution (What About Bob?)",
28 => "Braver Hund! (Best in Faux)",
29 => "Die Zeitschleife (I Do Over)",
30 => "Fargo und Königin Nyota (Show Me the Mummy)",
31 => "Captain Eureka (Phased and Confused)",
32 => "Sonnige Zeiten (Here Come the Suns)",
33 => "In Ewigkeit Angst (From Fear to Eternity)",
34 => "Willkommen zurück, Carter (Welcome Back Carter)",
35 => "Dein Gesicht oder meins? (Your Face or Mine?)",
36 => "Die fünfte Dimension (Insane in the P-Brane)",
37 => "Es ist nicht leicht, grün zu sein (It Ain't Easy Being Green)",
38 => "Wenn ihr gebaut habt, kommen sie (If You Build It…)",
39 => "Ein Schiff kommt selten allein (Ship Happens)",
40 => "Wasser marsch! (Shower the People)",
41 => "Wer ist Jack? (You Don't Know Jack)",
42 => "Eiszeit in Eureka (Have an Ice Day)",
43 => "Nemesis (What Goes Around Comes Around)",
 
44 => "Gründertag (Founder’s Day)",
45 => "Der große, rote Elf (A New World)",
46 => "Lyncht Fargo (All the Rage)",
47 => "Die Knallgasreaktion (The Story of O2)",
48 => "Der menschliche Magnet (Crossing Over)",
49 => "Glamour-Camping (Momstrosity)",
50 => "Hausbau mit Hindernissen (Stoned)",
51 => "Akte Ex (The Ex-Files)",
52 => "I'll Be Seeing You",
53 => "Stille Stadt, heilige Stadt (O Little Town…)",
54 => "Abgehoben (Liftoff)",
55 => "Reprise",
56 => "Ein Blick in die Zukunft (Glimpse)",
57 => "Guten Flug! (Up in the Air)",
58 => "Omega Girls",
59 => "Milben und Kraniche (Of Mites and Men)",
60 => "Todesnebel (Clash of the Titans)",
61 => "Damals im Space Camp (This One Time at Space Camp…)",
62 => "Ein kleiner Schritt (One Small Step)",
63 => "Ein Riesenschritt (One Giant Leap)",
64 => "Do You See What I See",
 
65 => "Lost",
66 => "The Real Thing",
67 => "Force Quit",
68 => "Friendly Fire",
69 => "Jack Of All Trades",
70 => "Worst Case Scenario",
71 => "Ex-Machina",
72 => "In Too Deep",
73 => "Smarter Carter",
74 => "The Honeymooners",
75 => "Mirror, Mirror",
76 => "Double Take",
77 => "Just Another Day",
78 => "Christmas Special",
)
),
 
'<span class="firefly">Fir<span class="e">e</span>fly</span>' => array(
'channel' => 'online',
'seen' => array(array(1, 2)),
'seasons' => array(14),
'episode_list' => 'wiki:en:Firefly_(TV_series)#Broadcast_history',
'episodes' => array(
1 => "Serenity",
2 => "The Train Job",
3 => "Bushwhacked",
4 => "Shindig",
5 => "Safe",
6 => "Our Mrs. Reynolds",
7 => "Jaynestown",
8 => "Out of Gas",
9 => "Ariel",
10 => "War Stories",
11 => "Trash",
12 => "The Message",
13 => "Heart of Gold",
14 => "Objects in Space"
)
),
 
'<span class="frasier">F<span>rasier</span></span>' => &$frasier,
 
'<span class="fresh-hell"><span class="gradient">Fresh Hell</span></span>' => array(
// 'ignore' => true,
'channel' => 'online',
'seen' => array(array(1, 5)),
// 'last_seen' => mktime(0, 5, 0, 7, 5, 2011),
'seasons' => array(5, 10),
'episode_list' => 'http://www.freshhellseries.com/home/category/video/episodes/season-1/',
'episodes' => array(
1 => 'Pilot',
2 => 'The Actress Next Door',
3 => 'The Agent Showcase',
4 => 'The Agent Meeting',
5 => 'The Manager Upstairs',
 
6 => 'A Short Time Later',
7 => "Levar",
8 => "The Acting Class",
9 => "Dakota's First Port Shoot",
10 => "The Seance",
11 => "The Birthday Party",
12 => "The Billionaire",
13 => "The Actor Prepares",
14 => "The Jolinda Show",
15 => "Dakota Leaving",
)
),
 
'<span class="fringe"><span class="gradient">'
. ' <span class="f">F</span><span class="r">r</span><span class="i">i</span>'
. '<span class="n">n</span><span class="g">g</span><span class="e">e</span>'
. '</span></span>' => array(
// 'ignore' => true,
// 'channel' => 'ProSieben',
// 'showtimes' => 'Mo 21:15–23:50',
'seen' => array(array(1, 13)),
// 'last_seen' => mktime(0, 5, 0, 7, 5, 2011),
'seasons' => array(20, 23, 22, 22, 13),
'episode_list' => 'wiki:Liste_der_Fringe-Episoden',
'episodes' => array(
1 => 'Pilot (Flug 627)',
2 => 'The Same Old Story (Das Experiment)',
3 => 'The Ghost Network (Roy)',
4 => 'The Arrival (Die Ankunft)',
5 => 'Unter Strom (Power Hungry)',
6 => 'The Cure (Das Heilmittel)',
7 => "In Which We Meet Mr. Jones (Der geheimnisvolle Mr. Jones)",
8 => "The Equation (Die Gleichung)",
9 => "The Dreamscape (Schmetterlinge im Kopf)",
10 => "Safe (Durch die Wand)",
11 => "Bound (Das Schnupfenvirus)",
12 => "The No-Brainer (Hirnfresser)",
13 => "The Transformation (Conrad)",
14 => "Das Manifest (Ability)",
15 => "Ohne Worte (Inner Child)",
16 => "Entfesselt (Unleashed)",
// 17  17  Albträume Bad Dreams 2009-04-2121. Apr. 2009 2009-07-2020. Juli 2009 Akiva Goldsman J. H. Wyman & Andrew Kreisberg
// 18  18  Nachtschatten Midnight 2009-04-2828. Apr. 2009 2009-07-2727. Juli 2009 Akiva Goldsman Jeff Pinkner & J. R. Orci
// 19  19  Der andere Weg The Road Not Taken 2009-05-0505. Mai 2009 2009-08-0303. Aug. 2009 Frederick E. O. Toye Akiva Goldsman & Jeff Pinkner & J. R. Orci
// 20  20  Nichts ist einzigartig There’s More Than One of Everything 2009-05-1212. Mai 2009 2009-08-1010. Aug. 2009 Brad Anderson Akiva Goldsman & Bryan Burk & Jeff Pinkner & J. H. Wyman
55 => "Der Gedankenleser (Concentrate and Ask Again)",
56 => "Unsterblich (Immortality)",
57 => "6B",
58 => "Versuchsperson 13 (Subject 13)",
59 => "Os",
60 => "Per Anhalter (Stowaway)",
61 => "Blutlinie (Bloodline)",
62 => "LSD (Lysergic Acid Diethylamide)",
63 => "06:02 Uhr (6:02 AM EST)",
64 => "Der letzte Sam Weiss (The Last Sam Weiss)",
65 => "Der Tag, an dem wir starben (The Day We Died)",
)
),
 
'<span class="futurama"><span class="f">F</span><span class="u">u</span>'
. '<span class="t">t</span><span class="u2">u</span><span class="r">r</span>'
. '<span class="a">a</span><span class="m">m</span><span class="a2">a</span>'
. '</span>' => &$futurama,
 
'<span class="glee">G<span class="lee">lee</span></span>' => &$glee,
 
// '<span class="glee">G<span class="lee">lee</span></span> (de)' => array(
// // 'ignore' => true,
// 'channel' => 'SF&nbsp;2',
// 'showtimes' => 'Mo–Fr 09:33',
// 'seen' => array(array(1, 4)),
// 'last_seen' => mktime(9, 30, 0, 12, 27, 2011),
// 'seasons' => array(22, 22),
// 'episode_list' => 'wiki:Liste_der_Glee-Episoden',
// 'episodes' => array(
// 1 => "Ouvertüre (Pilot)",
// 2 => "Jenseits von Gut und Sue (Showmance)",
// 3 => "Acafellas",
// 4 => "Kinder der Lüge (Preggers)",
// 5 => "April, April (The Rhodes Not Taken)",
// 6 => "Angeregte Organismen (Vitamin D)",
// 7 => "Spielverderberspiele (Throwdown)",
// 8 => "Remix (Mash-Up)",
// 9 => "Furcht und Tadel (Wheels)",
// 10 => "Balladen (Ballad)",
// 11 => "Haarspaltereien (Hairography)",
// // 12 => "Mattress",
// // 13 => "Sectionals",
// // 14 => "Hell-o",
// // 15 => "The Power of Madonna",
// // 16 => "Home",
// // 17 => "Bad Reputation",
// // 18 => "Laryngitis",
// // 19 => "Dream On",
// // 20 => "Theatricality",
// // 21 => "Funk",
// // 22 => "Journey to Regionals",
// // 23 => "Audition",
// // 24 => "Britney/Brittany",
// // 25 => "Grilled Cheesus",
// // 26 => "Duets",
// // 27 => "The Rocky Horror Glee Show",
// // 28 => "Never Been Kissed",
// // 29 => "The Substitute",
// // 30 => "Furt",
// // 31 => "Special Education",
// // 32 => "A Very Glee Christmas",
// // 33 => "The Sue Sylvester Shuffle",
// // 34 => "Silly Love Songs",
// // 35 => "Comeback",
// // 36 => "Blame It on the Alcohol",
// // 37 => "Sexy",
// // 38 => "Original Song",
// // 39 => "A Night of Neglect",
// // 40 => "Born This Way",
// // 41 => "Rumours",
// // 42 => "Prom Queen",
// // 43 => "Funeral",
// // 44 => "New York",
// )
// ),
 
'<span class="heroes">Her<span class="o">o</span>e<span class="s">s</span></span>' => &$heroes,
 
'<span class="house"
><span class="h">H</span><span class="ouse">ouse</span>'
. '<span style="display: none">,</span>
<span class="md">M.D.</span></span>' => &$house,
 
'<span class="house"><span class="md-de">Dr.</span> <span class="h">H</span><span class="ouse">ouse</span></span>' => &$house_de,
 
'<span class="ijon-tichy"><span class="title"><span class="i">I</span>'
. '<span class="j">j</span><span class="o">o</span><span class="n">n</span>'
. ' <span class="t">T</span><span class="i2">i</span><span class="c">c</span>'
. '<span class="h">h</span><span class="y">y</span></span>'
. '<span class="hidden">: </span>'
. '<span class="subtitle"><span class="r">R</span><span class="a">a</span>'
. '<span class="u">u</span><span class="mpi">mpi</span>'
. '<span class="l">l</span><span class="o">o</span><span class="t">t</span></span>'
. '<span class="hidden">&nbsp;– </span>'
. '<span class="subtitle2"><span class="die">Die</span>'
. ' <span class="ster">Ster</span><span class="ntag">ntag</span>'
. '<span class="ebuec">ebüc</span><span class="her">her</span>'
. '</span></span>' => array(
'channel' => 'zdf_neo',
'seen' => array(array(1, 2)),
'last_seen' => mktime(23, 35, 0, 10, 22, 2011),
'seasons' => array(6, 8),
'episode_list' => 'wiki:Ijon_Tichy:_Raumpilot#Episodenliste',
'episodes' => array(
1 => "Kosmische Kollegen",
2 => "Planet der Reserven",
3 => "Relativistische Effekte",
4 => "Der futurologische Kongress",
5 => "Sabotage",
6 => "Die innere Stimme",
7 => "Held von Kosmos",
8 => "Shøpping",
9 => "Schön schaumig",
10 => "Biste fix Zeitblasen",
11 => "Sepulken verboten",
12 => "Das Erinnerungsstück",
13 => "Schein und Sein I",
14 => "Schein und Sein II",
)
),
 
'<span class="it-crowd">The IT Crowd</span>' => array(
// 'ignore' => true,
'channel' => 'online',
'seen' => array(array(1, 3)),
'last_seen' => mktime(2, 0, 0, 11, 28, 2011),
'seasons' => array(6, 6, 6, 6),
'episode_list' => 'wiki:en:List_of_The_IT_Crowd_episodes',
'episodes' => array(
1 => "Yesterday's Jam",
2 => "Calamity Jen",
3 => "50/50",
4 => "The Red Door",
5 => "The Haunting of Bill Crouse",
6 => "Aunt Irma Visits",
 
7 => "The Work Outing",
8 => "Return of the Golden Child",
9 => "Moss and the German",
10 => "The Dinner Party",
11 => "Smoke and Mirrors",
12 => "Men Without Women",
 
13 => "From Hell",
14 => "Are We Not Men?",
15 => "Tramps Like Us",
16 => "Speech",
17 => "Friendface",
18 => "Calendar Geeks",
 
19 => "Jen the Fredo",
20 => "The Final Countdown",
21 => "Something Happened",
22 => "Italian for Beginners",
23 => "Bad Boys",
24 => "Reynholm vs. Reynholm / Douglas and Divorce[iTunes]",
)
),
 
'<span class="superman">Lois &amp; Clark: The New Adventures of Superman</span>' => &$superman,
 
'<span class="macgyver">MacGyver</span>' => $macgyver,
 
'<span class="monk">Monk</span>' => &$monk,
'<span class="monk">Monk</span> (de)' => &$monk_de,
 
'<span class="life-on-mars"><span class="life">Lif<span
class="e">e</span></span> <span class="on">on</span>
<span class="mars">Mars</span></span>' => array(
// 'ignore' => true,
'channel' => 'online',
'seen' => array(array(1, 2)),
// 'last_seen' => mktime(21, 0, 0, 9, 8, 2011),
'seasons' => array(8, 8),
// 'episode_list' => 'wiki:en:List_of_Life_on_Mars_episodes',
'episodes' => array(
1 => "Erinnerungen aus der Zukunft",
2 => "Zeugenschutz",
3 => "Episode 3",
4 => "Episode 4",
5 => "Episode 5",
6 => "Episode 6",
7 => "Episode 7",
8 => "Episode 8",
 
9 => "Episode 1",
10 => "Episode 2",
11 => "Episode 3",
12 => "Episode 4",
13 => "Episode 5",
14 => "Episode 6",
15 => "Episode 7",
16 => "Episode 8"
)
),
 
'<span class="moonlight"><span class="moon">Moo<span class="n">n</span></span><span class="light">light</span></span>' => array(
// 'ignore' => true,
'channel' => 'sixx',
'showtimes' => 'Mi–Fr 21:00',
'seen' => array(array(1, 2)),
'last_seen' => mktime(21, 0, 0, 9, 8, 2011),
'seasons' => array(16),
'episodes' => array(
1 => "Es gibt keine Vampire (No Such Thing As Vampires)",
2 => "Schatten der Vergangenheit (Out of the Past)",
3 => "Dr. Feelgood",
4 => "Fieber (Fever)",
5 => "Ewige Jugend (Arrested Development)",
6 => "Black Crystal (B.C.)",
7 => "Das Ebenbild (The Ringer)",
8 => "Die Blutbeichte (12:04 AM)",
9 => "Fleur de Lis",
10 => "Dornröschen (Sleeping Beauty)",
11 => "Ewige Liebe (Love Lasts Forever)",
12 => "Das Heilmittel (The Mortal Cure)",
13 => "Kurzes Glück (Fated to Pretend)",
14 => "Klick (Click)",
15 => "Was zurück bleibt … (What’s Left Behind)",
16 => "Sonata"
),
'episode_list' => 'wiki:Moonlight_(Fernsehserie)#Episodenliste'
),
 
'<span class="moonlighting">Moonlighting</span>' => &$moonlighting,
 
'<span class="mutant-x"><span class="gradient">Mutant X</span></span>' => array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Mo-Fr 14:10',
'seen' => array(array(1, 9)),
'seasons' => array(22, 22, 22),
'episode_list' => 'http://www.mystery-files.de/season.php?id=1&serie=mutantx',
'episodes' => array(
1 => "The Shock of the New (1) (Genom X)",
2 => "I Scream the Body Electric (2) (Unter Strom)",
3 => "Russian Roulette (Russisches Roulette)",
4 => "Fool For Love (Verrückt vor Liebe)",
5 => "Kilohertz (Der elektrische Rebell)",
6 => "Meaning of Death (Der Unsterbliche)",
7 => "Lit Fuse (Geladene Stimmung)",
8 => "In the Presence of Mine Enemies (Schachmatt)",
9 => "Crime of the New Century (Die Entführung)",
10 => "Dark Star Rising (Tödliches Serum)",
11 => "Whiter Shade of Pale (Die perfekte Tarnung)",
12 => "Double Vision (Die dunkle Seite)",
13 => "Blood Ties (Falsche Erwartungen)",
14 => "Altered Ego (Gut und böse)",
15 => "Lazarus Syndrome (Neun Leben)",
16 => "Interface (Lebende Hardware)",
17 => "Presumed Guilty (Verlorene Erinnerung)",
18 => "Ex Marks the Spot (Das russische Ei)",
19 => "Nothing to Fear (Traumfänger)",
20 => "Deadly Desire (Die Skorpionfrau)",
21 => "A Breed Apart (Patient Null)",
22 => "Dancing on the Razor (Tanz am Abgrund)",
 
23 => "Past as Prologue (Die Alchemistin)",
24 => "Power Play (An die Wand gespielt)",
25 => "Time Squared (Zeitreise)",
26 => "Whose Woods These Are (Der Werwolf)",
27 => "The Future Revealed (Herrscher über Leben und Tod)",
28 => "No Man Left Behind (Zwischen den Fronten)",
29 => "Crossroads of the Soul (Die Welt hinter der Welt)",
30 => "Sign From Above (Der Androide)",
31 => "Body and Soul (Der Körperwanderer)",
32 => "Understudy (Die Ersatzspielerin)",
33 => "The Grift (Schmutzige Geschäfte)",
34 => "At Destiny's End (Der letzte Coup)",
35 => "Within These Walls (Tödliche Geheimnisse)",
36 => "Hard Time (Gladiatoren)",
37 => "Under the Cloak of War (Das Attentat)",
38 => "Once Around (Der Kronzeuge)",
39 => "Final Judgment (Das Tribunal)",
40 => "Inferno",
41 => "One Step Closer (Außer Kontrolle)",
43 => "Reawakening (Begraben im ewigen Eis)",
42 => "Reality Check (Das Labyrinth)",
44 => "Lest He Become (Der perfekte Mutant)",
 
45 => "Into the Moonless Night (Der Mutant aus dem Nichts)",
46 => "Wages of Sin (Der Lohn der Sünde)",
47 => "The Breed (Der Parasit)",
48 => "Where Evil Dwells (Die Saat des Bösen)",
49 => "The Taking of Crows (Kaltes Herz)",
50 => "Shadows of Darkness (Schatten der Vergangenheit)",
51 => "The Hand of God (Die Hand Gottes)",
52 => "Wasteland (Die Heuschreckenplage)",
53 => "No Exit (Der virtuelle Mörder)",
54 => "Brother's Keeper (Das gestohlene Herz)",
55 => "Possibilities (Bombenterror)",
56 => "Conspiracy Theory (Die Verschwörung)",
57 => "Art of Attraction (Die drei Gemälde)",
58 => "A Normal Life (Zurück im Leben)",
59 => "Divided Loyalities (Falsche Identität)",
60 => "Age of Innocence (Der Fluch der Unsterblichkeit)",
61 => "She's Come Undone (Der Krieg beginnt)",
62 => "In Between (Im Inneren des Vulkans)",
63 => "Dream Lover (Das trojanische Pferd)",
64 => "The Prophecy (Die Prophezeiung)",
65 => "Cirque des Merveilles (Kammer der Seeken)",
66 => "The Assault (Der Schöpfer)"
)
),
 
'<span class="numb3rs"><span class="gradient">Numb<span title="e">3</span>r<span class="s">s</span></span></span>' => &$numb3rs,
// '<span class="numb3rs"><span class="gradient">Numb<span title="e">3</span>r<span class="s">s</span></span></span> (de)' => &$numb3rs_de,
 
'<span class="odyssey5">Odys<span class="s2">s</span><span
class="e">e</span><span class="y2">y</span>
<span class="five">5</span></span>' => array(
// 'ignore' => true,
'channel' => 'online',
'seen' => array(array(1, 3)),
'episode_list' => 'wiki:en:Odyssey_5#Episode_list',
'episodes' => array(
1 => 'Pilot',
2 => 'Shatterer',
3 => 'Astronaut Dreams',
4 => 'Time Out of Mind',
5 => 'Symbiosis',
6 => 'The Choices We Make',
7 => 'Rapture',
8 => 'L.D.U. 7',
9 => 'Flux',
10 => 'Kitten',
11 => 'Dark at the End of the Tunnel',
12 => 'Trouble with Harry',
13 => 'Skin',
14 => 'Begotten',
15 => 'Vanishing Point',
16 => 'Follow the Leader',
17 => 'Half-Life',
18 => 'Rage',
19 => 'Fossil'
)
),
 
'<span class="psych">psych</span>' => &$psych,
 
'<span class="quantum-leap"><span class="gradient">Quantum Leap</span></span>' => &$quantum_leap,
 
'<span class="reaper">Reaper</span>' => array(
// 'ignore' => true,
'channel' => 'E4',
'showtimes' => 'Di–Sa 03:15',
'seen' => array(array(1, 4)),
'last_seen' => mktime(5, 0, 0, 6, 2, 2011),
'seasons' => array(18, 13),
'episodes' => array(
1 => 'Pilot',
2 => 'Charged',
3 => 'All Mine',
4 => 'Magic',
5 => 'What About Blob?',
6 => 'Leon',
7 => 'Love, Bullets & Blacktop',
8 => 'The Cop',
9 => 'Ashes to Ashes',
10 => 'Cash Out',
11 => 'Hungry for Fame',
12 => 'Unseen',
13 => 'Acid Queen',
14 => 'Rebellion',
15 => 'Coming to Grips',
16 => 'Greg, Schmeg',
17 => 'The Leak',
18 => 'Cancun',
19 => 'Episode IV: A New Hope',
20 => 'Dirty Sexy Mongol',
21 => 'The Sweet Science',
22 => 'The Favorite',
23 => 'I Want My Baby Back',
24 => 'Underbelly',
25 => 'The Good Soil',
26 => 'The Home Stretch',
27 => 'No Reaper Left Behind',
28 => "My Brother's Reaper",
29 => 'To Sprong, With Love',
30 => 'Business Casualty',
31 => 'The Devil & Sam Oliver'
),
'episode_list' => 'wiki:en:List_of_Reaper_episodes'
),
 
'<span class="remington-steele">Remington Steele</span>' => &$remington_steele,
 
'<span class="roswell">Roswel<span>l</span></span>' => array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Di–Sa 03:15',
'seen' => array(array(1, 8)),
// 'last_seen' => mktime(5, 0, 0, 6, 2, 2011),
'seasons' => array(22, 21, 18),
'episodes' => array(
1 => "Pilot",
2 => "The Morning After",
3 => "Monsters",
4 => "Leaving Normal",
5 => "Missing",
6 => "285 South (Part 1)",
7 => "River Dog (Part 2)",
8 => "Blood Brother",
9 => "Heat Wave",
10 => "The Balance",
11 => "Toy House",
12 => "Into the Woods",
13 => "The Convention",
14 => "Blind Date",
15 => "Independence Day",
16 => "Sexual Healing",
17 => "Crazy",
18 => "Tess, Lies and Videotape",
19 => "Four Square",
20 => "Max to the Max",
21 => "The White Room (Part 1)",
22 => "Destiny (Part 2)",
 
23 => "Skin and Bones",
24 => "Ask Not",
25 => "Surprise",
26 => "Summer of '47",
27 => "The End of the World",
28 => "Harvest",
29 => "Wipeout!",
30 => "Meet the Dupes (Part 1)",
31 => "Max in the City (Part 2)",
32 => "A Roswell Christmas Carol",
33 => "To Serve and Protect",
34 => "We Are Family",
35 => "Disturbing Behavior (Part 1)",
36 => "How the Other Half Lives (Part 2)",
37 => "Viva Las Vegas",
38 => "Heart of Mine",
39 => "Cry Your Name",
40 => "It's Too Late and It's Too Bad",
41 => "Baby, It's You",
42 => "Off the Menu",
43 => "The Departure",
 
44 => "Busted",
45 => "Michael, the Guys and the Great Snapple Caper",
46 => "Significant Others",
47 => "Secrets and Lies (Part 1)",
48 => "Control (Part 2)",
49 => "To Have and to Hold",
50 => "Interruptus",
51 => "Behind the Music",
52 => "Samuel Rising",
53 => "A Tale of Two Parties",
54 => "I Married an Alien",
55 => "Ch-Ch-Changes",
56 => "Panacea",
57 => "Chant Down Babylon",
58 => "Who Died and Made You King?",
59 => "Crash",
60 => "Four Aliens and a Baby",
61 => "Graduation",
),
'episode_list' => 'wiki:en:List_of_Roswell_episodes'
),
 
'<span class="samantha-who"><span class="text"><span class="samantha">Samantha</span>'
. ' <span class="who">Who</span></span><span class="q">?</span></span>' => array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Mo-Fr 19:00',
'seen' => array(array(1, 5)),
// 'last_seen' => mktime(19, 0, 0, 10, 1, 2011),
'seasons' => array(15, 20),
'episode_list' => 'wiki:en:Samantha_Who',
'episodes' => array(
1 => "Pilot",
2 => "The Job",
3 => "The Wedding",
4 => "The Virgin",
5 => "The Restraining Order",
6 => "The Hypnotherapist",
7 => "The Hockey Date",
8 => "The Car",
9 => "The Break-Up",
10 => "The Girlfriend",
11 => "The Boss",
12 => "The Butterflies",
13 => "The Gallery Show",
14 => "The Affair",
15 => "The Birthday",
16 => "So I Think I Can Dance",
17 => "Out of Africa",
18 => "The Pill",
19 => "The Building",
// 20 => "Help!",
// 21 => "The Ex",
// 22 => "The Farm",
// 23 => "The Park",
// 24 => "The Family Vacation",
// 25 => "My Best Friend's Boyfriend",
26 => "The Dog",
27 => "The Amazing Racist",
28 => "The Debt",
29 => "The Rock Star",
30 => "Todd's Job",
31 => "The Sister",
32 => "The Dream Job",
33 => "The First Date",
34 => "The Other Woman",
35 => "With This Ring",
)
),
 
'<span class="scrubs">Scrub<span class="s">s</span></span>' => &$scrubs,
 
'<span class="scrubs">Scrub<span class="s">s</span></span> (de)' => &$scrubs_de,
 
'<span class="seaQuest"><span id="seaQuest"><span
class="s">s</span><span class="e">e</span><span
class="a">a</span><span
class="q">Q</span><span class="u">u</span><span
class="e2">e</span><span class="s2">s</span><span
class="t">t</span></span><span class="hidden">
</span><span id="dsv">DSV</span></span>' => &$seaQuest,
 
'<span class="sherlock">Sherlock</span>' => array(
'channel' => 'BBC 1',
'showtimes' => 'Mi 21:30',
'seen' => array(array(1, 3)),
'last_seen' => mktime(21, 30, 0, 8, 3, 2011),
'seasons' => array(3, 3),
'episode_list' => 'http://bbc.co.uk/sherlock',
'episodes' => array(
1 => 'A Study in Pink',
2 => 'The Blind Banker',
3 => 'The Great Game',
 
4 => "A Scandal in Belgravia (01.01.2012)",
5 => "The Hounds of Baskerville (08.01.2012)",
6 => "The Reichenbach Fall (15.01.2012)",
)
),
 
'<span class="simpsons" id="simpsons"><span class="text"><span>The</span> <span>Simpsons</span></span></span>' => &$simpsons,
// '<span class="simpsons"><span class="text"><span>The</span> <span>Simpsons</span></span></span> (de)' => &$simpsons_de,
 
'<span class="sliders">Slider<span class="last">s</span></span>' => &$sliders,
 
'<span class="smallville">S<span>m<span>al<span>lv</span>il</span>l</span>e</span>' => &$smallville,
// '<span class="smallville">S<span>m<span>al<span>lv</span>il</span>l</span>e</span> (de)' => &$smallville_de,
 
'<span class="space-above-beyond"><span class="space">Spac<span>e</span></span><span class="hidden">: </span><span class="above-beyond">Above and <span>Beyond</span></span></span>' => array(
'channel' => 'DVD',
'seen' => array(array(1, 3)),
'episode_list' => 'wiki:en:Space: Above and Beyond',
'episodes' => array(
23 => "…Tell Our Moms We Done Our Best",
22 => "And If They Lay Us Down to Rest…",
21 => "Sugar Dirt",
20 => "Stardust",
19 => "R & R",
18 => "Pearly",
17 => "Dear Earth",
16 => "Toy Soldiers",
15 => "The Angriest Angel",
14 => "Never No More",
13 => "Level of Necessity",
12 => "Who Monitors the Birds?",
11 => "The River of Stars",
10 => "Stay with the Dead",
9 => "Choice or Chance",
8 => "Hostile Visit",
7 => "The Enemy",
6 => "Eyes",
5 => "Ray Butts",
4 => "Mutiny",
3 => "The Dark Side of the Sun",
2 => "The Farthest Man from Home",
1 => "Pilot"
)
),
 
'<span class="stargate en"><span>St<span class="a">a</span>rgat<span>e</span></span> <span>SG&middot;<span>1</span></span></span>' => &$stargate,
'<span class="stargate de"><span>St<span class="a">a</span>rgate</span> <span>Komm<span class="a">a</span>ndo SG-1</span></span>' => &$stargate_de,
 
'<span class="stargate atlantis"><span class="stargate"><span>St<span class="a">a</span>rg<span class="a">a</span>t<span>e</span></span></span>'
. ' <span class="atlantis"><span class="a">A</span>tlanti<span>s</span></span>' => &$stargate_atlantis,
 
'<abbr class="sg-u" title="Stargate Universe">S<span class="ring">G&#9900;</span>U</abbr>' => &$sgu,
 
'<span class="star-trek-tos">Star Trek</span>' => &$tos,
'<span class="star-trek-tng"><span class="star">Star</span> <span class="trek">Trek</span><span class="hidden">:</span><span class="tng">The Next Generation</span></span>' => &$tng,
 
'<span class="time-trax">Time Trax</span>' => &$time_trax,
 
'<span class="torchwood">Torchwood</span>' => array(
'ignore' => true,
'channel' => 'BBC 1',
'showtimes' => 'Do 22:00',
// 'seen' => array(array(1, 4)),
// 'last_seen' => mktime(22, 45, 0, 6, 7, 2011),
'seasons' => array(13, 13, 5, 10),
'episode_list' => 'wiki:List_of_Torchwood_episodes',
'episodes' => array(
// 1 => 'Wie alles begann (Everything Changes)',
// 2 => "Tag eins (Day One)",
// 3 => 'Die Geistermaschine (Ghost Machine)',
// 4 => 'Cyberwoman (Cyber Woman)',
// 5 => 'Aus dunkler Vorzeit (Small Worlds)',
// 6 => 'Erntezeit (Countrycide)',
// 7 => 'Timeo Danaos… (Greeks Bearing Gifts)',
// 8 => 'Sie haben Suzie schon wieder getötet! (They Keep Killing Suzie)',
// 9 => 'Das sechste Auge (Random Shoes)',
// 10 => 'Die Gestrandeten (Out of Time)',
// 11 => 'Faustrecht (Combat)',
// 12 => 'Captain Jack Harkness',
// 13 => 'Das Ende aller Tage (End of Days)',
 
// 14 => 'Kiss Kiss Bang Bang (Kiss Kiss, Bang Bang)',
// 15 => 'Invasion (Sleeper)',
// 16 => 'Bis zum letzten Mann (To the Last Man)',
// 17 => 'Fleisch (Meat)',
// 18 => 'Adam',
// 19 => 'Nebenwirkungen (Reset)',
// 20 => 'Untot (Dead Man Walking)',
// 21 => 'Aus dem Leben eines Toten (A Day in the Death)',
// 22 => 'Die Braut, der vor nichts graut (Something Borrowed)',
// 23 => 'Sie kamen aus dem Regen (From Out of the Rain)',
// 24 => 'Verschollen (Adrift)',
// 25 => 'Offenbarungen (Fragments)',
// 26 => 'Wundmale (Exit Wounds)',
 
// 27 => 'Kinder der Erde: Tag eins (Children of Earth: Day One)',
// 28 => 'Kinder der Erde: Tag zwei (Children of Earth: Day Two)',
// 29 => 'Kinder der Erde: Tag drei (Children of Earth: Day Three)',
// 30 => 'Kinder der Erde: Tag vier (Children of Earth: Day Four)',
// 31 => 'Kinder der Erde: Tag fünf (Children of Earth: Day Five)',
 
32 => 'The New World',
33 => 'Rendition',
34 => 'Dead of Night',
// 35 => 'Escape to L.A.',
// 36 => 'The Categories of Life',
// 37 => 'The Middle Men',
// 38 => 'Immortal Sins',
// 39 => 'End of the Road',
// 40 => 'The Gathering',
// 41 => 'The Blood Line'
)
),
 
'<span class="torchwood">Torchwood</span> (de)' => array(
'ignore' => true,
'channel' => 'RTL Ⅱ',
'showtimes' => 'Di 22:20',
'seen' => array(array(1, 4)),
'last_seen' => mktime(22, 45, 0, 6, 7, 2011),
'seasons' => array(13, 13, 5, 10),
'episode_list' => 'wiki:Liste_der_Torchwood-Episoden',
'episodes' => array(
1 => 'Wie alles begann (Everything Changes)',
2 => "Tag eins (Day One)",
3 => 'Die Geistermaschine (Ghost Machine)',
4 => 'Cyberwoman (Cyber Woman)',
5 => 'Aus dunkler Vorzeit (Small Worlds)',
6 => 'Erntezeit (Countrycide)',
7 => 'Timeo Danaos… (Greeks Bearing Gifts)',
8 => 'Sie haben Suzie schon wieder getötet! (They Keep Killing Suzie)',
9 => 'Das sechste Auge (Random Shoes)',
10 => 'Die Gestrandeten (Out of Time)',
11 => 'Faustrecht (Combat)',
12 => 'Captain Jack Harkness',
13 => 'Das Ende aller Tage (End of Days)',
 
14 => 'Kiss Kiss Bang Bang (Kiss Kiss, Bang Bang)',
15 => 'Invasion (Sleeper)',
// 16 => 'Bis zum letzten Mann (To the Last Man)',
// 17 => 'Fleisch (Meat)',
// 18 => 'Adam',
// 19 => 'Nebenwirkungen (Reset)',
// 20 => 'Untot (Dead Man Walking)',
// 21 => 'Aus dem Leben eines Toten (A Day in the Death)',
// 22 => 'Die Braut, der vor nichts graut (Something Borrowed)',
// 23 => 'Sie kamen aus dem Regen (From Out of the Rain)',
// 24 => 'Verschollen (Adrift)',
// 25 => 'Offenbarungen (Fragments)',
// 26 => 'Wundmale (Exit Wounds)',
 
// 27 => 'Kinder der Erde: Tag eins (Children of Earth: Day One)',
// 28 => 'Kinder der Erde: Tag zwei (Children of Earth: Day Two)',
// 29 => 'Kinder der Erde: Tag drei (Children of Earth: Day Three)',
// 30 => 'Kinder der Erde: Tag vier (Children of Earth: Day Four)',
// 31 => 'Kinder der Erde: Tag fünf (Children of Earth: Day Five)',
 
// 32 => 'The New World',
// 33 => 'Rendition',
// 34 => 'Dead of Night',
// 35 => 'Escape to L.A.',
// 36 => 'The Categories of Life',
// 37 => 'The Middle Men',
// 38 => 'Immortal Sins',
// 39 => 'End of the Road',
// 40 => 'The Gathering',
// 41 => 'The Blood Line'
)
),
'<span class="true-blood"><span class="upper">True</span>'
. '<span class="hidden"> </span><span class="blood"><span class="lower">B</span>lood</span></span>' => &$true_blood,
 
'<span class="tara"><span class="us-of">United States of</span>'
. ' <span class="tara">Tara</span></span>' => array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Do 23:24',
'seen' => array(array(1, 5)),
// 'last_seen' => mktime(0, 4, 0, 9, 30, 2011),
'seasons' => array(12, 12, 12),
'episode_list' => 'wiki:Taras_Welten#Episodenliste',
'episodes' => array(
1 => "Pilot (Teenie-Alarm)",
2 => "Aftermath (Ruhe nach dem Sturm)",
3 => "Work (Eine Frau für alle Fälle)",
4 => "Himmel & Hölle (Inspiration)",
5 => "Party Time (Revolution)",
6 => "Familiengeheimnisse (Transition)",
7 => "Busenfreundinnen (Alternations)",
8 => "Weibliche Tricks und Triebe (Abundance)",
9 => "Reiseandenken (Possibility)",
10 => "Feuer unterm Dach (Betrayal)",
11 => "Schnee von gestern (Snow)",
12 => "Nackte Tatsachen (Miracle)",
 
13 => "Zu neuen Ufern (Yes)",
14 => "Buck In Love (Trouble Junction)",
15 => "Auf dünnem Eis (The Truth Hurts)",
16 => "Die neue Therapeutin (You Becoming You)",
17 => "Hinter Gittern (Doin’ Time)",
18 => "Geschlossene Gesellschaft (Torando)",
19 => "Besuch vom Jugendamt (Dept. of Fucked Up Family Services)",
20 => "Die Kunstausstellung (Explosive Diorama)",
21 => "Das Familienporträt (The Family Portrait)",
22 => "Die Schwarze Witwe (Open House)",
23 => "Spurensuche (To Have and to Hold)",
24 => "Zerbrochene Träume (From this Day Forward)",
 
25 => "…youwillnotwin…",
26 => "Crackerjack",
27 => "The Full F**k You Finger",
28 => "Wheels",
29 => "Dr. Hatteras’ Miracle Elixir",
30 => "The Road to Hell Is Paved with Breast Intentions",
31 => "The Electrifying & Magnanimous Return of Beaverlamp",
32 => "Chicken 'n' Corn",
33 => "Bryce Will Play",
34 => "Train Wreck",
35 => "Crunchy Ice",
36 => "The Good Parts"
)
),
 
'<span class="visitors"><span class="v">V</span>'
. '<span class="hidden"> – </span><span class="subtitle">Die Besucher</span></span> (2009)' => array(
'channel' => 'ProSieben',
'showtimes' => 'Mi 20:15',
'seen' => array(array(1, 3)),
'last_seen' => mktime(20, 15, 0, 7, 18, 2011),
'seasons' => array(12, 10),
'episode_list' => 'wiki:V_-_Die_Besucher#Episodenliste',
'episodes' => array(
1 => "Wir kommen in Frieden (Pilot)",
2 => "Nichts ist mehr normal (There Is No Normal Anymore)",
3 => "Ein strahlender Tag (A Bright New Day)",
4 => "Das ist nur der Anfang (It’s Only The Beginning)",
5 => "Willkommen im Krieg (Welcome To The War)",
6 => "Ein Pfund Fleisch (Pound of Flesh)",
7 => "John May (John May)",
8 => "Wir können nicht gewinnen (We Can't Win)",
9 => "Die Ketzergabel (Heretic's Fork)",
10 => "Herz und Verstand (Hearts and Minds)",
11 => "Reifezeit (Fruition)",
12 => "Brennender Himmel (Red Sky)",
// 13 => "Roter Regen (Red Rain)",
// 14 => "Selbstmordkommandos (Serpent’s Tooth)",
15 => "Enthüllung (Laid Bare)",
16 => "Unheilige Allianz (Unholy Alliance)",
17 => "Concordia (Concordia)",
18 => "Belagerung (Siege)",
19 => "Geburtstagswehen (Birth Pangs)",
20 => "Offensive (Uneasy Lies the Head)",
21 => "Teufel in Blau (Devil in a Blue Dress)",
22 => "Muttertag (Mother’s Day)",
)
),
 
'<span class="visitor">The Visitor</span> (de)' => array(
// 'ignore' => true,
'channel' => 'online',
'seen' => array(array(1, 2)),
'seasons' => array(13),
'episode_list' => 'wiki:en:The_Visitor_(TV_series)#Episodes',
'episodes' => array(
1 => "Pilot",
2 => "Fear of Flying (Angst vorm Fliegen)",
3 => "The Devil's Rainbow (Der blaue Kristall)",
4 => "Dreams (Warnung aus dem All)",
5 => "Remember (Operation Omega)",
6 => "The Black Box (Black Box)",
7 => "Devil Night (Teufelsnacht)",
8 => "Reunion (Die letzte Stunde)",
9 => "Caged (In den Fängen des Wahnsinns)",
10 => "Going Home (Das Ritual)",
11 => "Miracles (Wunder des Lebens)",
12 => "The Chain (Magnolias Visionen)",
13 => "The Trial (Verräter)"
)
),
 
'<span class="warehouse-13">Warehouse <span class="numbers">13</span></span>' => array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Mi 18:15',
'seen' => array(array(1, 7)),
// 'last_seen' => mktime(18, 15, 0, 5, 4, 2011),
'seasons' => array(12, 13, 13, 16),
'episode_list' => 'wiki:en:List_of_Warehouse_13_episodes',
'episodes' => array(
1 => 'Pilot (Der Kamm der Borgia)',
2 => 'Resonance (Der Klang der Musik)',
3 => 'Magnetism (Unterbewusstes Verlangen)',
4 => 'Claudia (Das Rheticus-Experiment)',
5 => 'Elements (Die Elemente der Macht)',
6 => 'Burnout (Das Rückgrat des Sarazenen)',
7 => 'Implosion (Das Schwert des Samurai)',
8 => 'Duped (Gefangen im Spiegel)',
9 => 'Regrets (Visionen der Reue)',
10 => 'Breakdown (Das Tribunal der Räte)',
11 => 'Nevermore (Die Macht der Worte)',
12 => 'MacPherson (Ein Ende mit Schrecken)',
 
13 => "Time Will Tell (Die Perle der Weisheit)",
14 => "Mild Mannered (In der Maske des Helden)",
15 => "Beyond Our Control (Unheimliches in Univille)",
16 => "Age Before Beauty (Der Preis der Jugend)",
17 => "13.1 (Das Hirn des Konstrukteurs)",
18 => "Around the Bend (Am Rande des Wahnsinns)",
19 => "For the Team (Der Zaubertrank der Wikinger)",
20 => "Merge with Caution (Im Körper des Kollegen)",
21 => "Vendetta (Der Rächer aus der Vergangenheit)",
22 => "Where and When (Zeitreise in die Sechziger)",
23 => "Buried (Das Vermächtnis der Ägypter)",
24 => "Reset (Der Dreizack der Verdammnis)",
25 => "Secret Santa (Der Geist der Weihnacht)",
 
26 => "The New Guy",
27 => "Trials",
28 => "Love Sick",
29 => "Queen for a Day",
30 => "3… 2… 1…",
31 => "Don't Hate the Player",
32 => "Past Imperfect",
33 => "The 40th Floor",
34 => "Shadows",
35 => "Insatiable",
36 => "Emily Lake (Part 1)",
37 => "Stand (Part 2)",
38 => "The Greatest Gift",
 
39 => "A New Hope",
40 => "An Evil Within",
41 => "Personal Effects",
42 => "There's Always a Downside",
43 => "No Pain, No Gain",
44 => "Fractures",
45 => "Endless Wonder",
46 => "Second Chance",
47 => "The Ones You Love",
48 => "We All Fall Down",
49 => "The Living and the Dead",
50 => "Parks and Rehabilitation",
51 => "The Big Snag",
52 => "The Sky’s the Limit",
53 => "Instinct",
54 => "Runaway",
)
),
));
/branches/live/media/video/series/includes/andromeda.php
0,0 → 1,162
<?php
 
$serien['<span class="andromeda"><span class="roddenberry">Gene Roddenberry\'s</span>'
. ' <span class="gradient">Andromeda</span></span>'] = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Mo–Fr 16:10',
'seen' => array(array(1, 14)),
// 'last_seen' => mktime(16, 5, 0, 5, 16, 2011),
'seasons' => array(22, 22, 22, 22, 22),
'episode_list' => 'wiki:en:List_of_Andromeda_episodes',
'episodes' => array(
1 => 'Under the Night',
2 => 'An Affirming Flame',
3 => 'To Loose the Fateful Lightning',
4 => 'D Minus Zero',
5 => 'Double Helix',
6 => 'Angel Dark, Demon Bright',
7 => 'The Ties That Blind',
8 => 'The Banks of the Lethe',
9 => 'A Rose in the Ashes',
10 => "All Great Neptune's Ocean",
11 => "The Pearls That Were His Eyes",
12 => "The Mathematics of Tears",
13 => "Music of a Distant Drum",
14 => "Harper 2.0",
15 => "Forced Perspective",
16 => "The Sum of Its Parts",
17 => "Fear and Loathing in the Milky Way",
18 => "The Devil Take the Hindmost",
19 => "The Honey Offering",
20 => "Star-Crossed",
21 => "It Makes a Lovely Light",
22 => "Its Hour Come 'Round at Last",
)
);
 
// $serien['<span class="andromeda"><span class="roddenberry">Gene Roddenberry\'s</span>'
// . ' <span class="gradient">Andromeda</span></span> (de)'] = array(
// // 'ignore' => true,
// 'channel' => 'Tele 5/online',
// 'showtimes' => 'Mo–Fr 16:10',
// 'seen' => array(array(1, 9)),
// 'last_seen' => mktime(16, 5, 0, 5, 16, 2011),
// 'seasons' => array(22, 22, 22, 22, 22),
// 'episode_list' => 'wiki:en:List_of_Andromeda_episodes',
// 'episodes' => array(
// 1 => 'Die lange Nacht (Under the Night)',
// 2 => 'Fiat Lux (An Affirming Flame)',
// 3 => 'Die Erleuchtung (To Loose the Fateful Lightning)',
// 4 => 'D Minus Zero',
// 5 => 'Doppelhelix (Double Helix)',
// 6 => 'Die grosse Schlacht (Angel Dark, Demon Bright)',
// 7 => 'Philosophie des Todes (The Ties That Blind)',
// 8 => 'Reise in die Vergangenheit (The Banks of the Lethe)',
// 9 => 'Planet der Verdammten (A Rose in the Ashes)',
// 10 => "Tödliches Gipfeltreffen (All Great Neptune's Ocean) (11.11.2011 16:10, 17.05.2011 16:05)",
// 11 => "Durchs Auge mitten ins Herz (The Pearls That Were His Eyes)",
// 12 => "Pax Magellanic (The Mathematics of Tears)",
// 13 => "Der heilige Gral (Music of a Distant Drum)",
// 14 => "Genie an Bord (Harper 2.0)",
// 15 => "Erzwungene Einsichten (Forced Perspective)",
// 16 => "Die Summe aller Teile (The Sum of Its Parts)",
// 17 => "Die Schlange im Paradies (Fear and Loathing in the Milky Way)",
// 18 => "Das Tagebuch des Hasturi (The Devil Take the Hindmost)",
// 19 => "Eine Frage der Ehre (The Honey Offering)",
// 20 => "Erzengel Gabriel (Star-Crossed)",
// 21 => "Die Odyssee (It Makes a Lovely Light)",
// 22 => "Feinde an Bord (Its Hour Come 'Round at Last)",
// 23 => "Der Geist des Abyss (The Widening Gyre)",
// 24 => "Auf verlorenem Posten (Exit Strategies)",
// 25 => "Das falsche Herz (A Heart for Falsehood Framed)",
// 26 => "Der Informant (Pitiless as the Sun)",
// // 27 => "Zapfenstreich (Last Call at the Broken Hammer)",
// // 28 => "Planet Möbius (All Too Human)",
// 29 => "Angriff der Nietzscheaner (Una Salus Victus)",
// 30 => "Heimatgefühle (Home Fires)",
// 31 => "Das Labyrinth (Into the Labyrinth)",
// 32 => "Königliche Hoheit (The Prince)",
// 33 => "Aufstand der Sklaven (Bunker Hill)",
// 34 => "Grenzgänger (Ouroboros)",
// 35 => "Lava und Raketen (Lava and Rockets)",
// 36 => "Alte Sünden (Be All My Sins Remembered)",
// // 37 => "Eintagsfliegen (Dance of the Mayflies)",
// 38 => "Im Himmel (In Heaven Now Are Three)",
// // 39 => "Flucht aus dem Paradies (The Things We Cannot Change)",
// 40 => "Heimweh (The Fair Unknown)",
// 41 => "Im Bauch der Bestie (Belly of the Beast)",
// 42 => "Ritter, Tod und Teufel (The Knight, Death, and the Devil)",
// 43 => "Der Messias (Immaculate Perception)",
// 44 => "Der Tunnel am Ende des Lichts (Tunnel at the End of the Light)",
 
// 45 => "Tunnel des Bösen (If the Wheel is Fixed)",
// 46 => "Scherben bringen Glück (The Shards of Rimni)",
// 47 => "Die Undankbaren (Mad to be Saved)",
// 48 => "Der ungebetene Gast (Cui Bono)",
// 49 => "An fernen Ufern (The Lone and Level Sands)",
// 50 => "Windhunde des Krieges (Slipfighter the Dogs of War)",
// 51 => "Der Aussätzige (The Leper's Kiss)",
// 52 => "Blinde Passagiere (For Whom the Bell Tolls)",
// // 53 => "Die Macht der Liebe (And Your Heart will Fly Away)",
// 54 => "Der Unbezwingbare (The Unconquerable Man)",
// 55 => "Die andere Seite des Tunnels (Delenda Est)",
// // 56 => "Rückwärts in die Dunkelheit (The Dark Backward)",
// 57 => "Volles Risiko (The Risk-All Point)",
// 58 => "Die Wahrheitsliebenden (The Right Horse)",
// // 59 => "Die Metamorphose (What Happens to A Rev Deferred?)",
// 60 => "Die Spitze des Speers (Point of the Spear)",
// 61 => "Das Dach des Himmels (Vault of the Heavens)",
// // 62 => "Die Stimme der tiefen Nacht (Deep Midnight's Voice)",
// 63 => "Die Hochstaplerin (The Illusion of Majesty)",
// 64 => "Der Patriarch (Twilight of the Idols)",
// 65 => "Der Verräter (Day of Judgement, Day of Wrath)",
// 66 => "Dragonischer Wein (Shadows Cast by a Final Salute)",
 
// 67 => "Abgrund zur Hölle (Answers Given to Questions Never Asked)",
// 68 => "Der Seher (Pieces of Eight)",
// 69 => "Friedhof der Schiffe (Waking the Tyrant's Device)",
// 70 => "Ausgespielt (Double or Nothingness)",
// 71 => "Göttlicher Herzschlag (Harper/Delete)",
// 72 => "Die Route der Zeitalter (Soon the Nearing Vortex)",
// 73 => "Bekas Rettung (The World Turns All Around Her)",
// 74 => "Die Befreiung (Conduit to Destiny)",
// 75 => "Genie und Wahnsinn (Machinery of the Mind)",
// 76 => "Die Kronprinzessin (Exalted Reason, Resplendent Daughter)",
// // 77 => "Der Prozess (The Torment, the Release)",
// // 78 => "Die Spinnenfrau (The Spider's Stratagem)",
// 79 => "Das unsichtbare Licht (The Warmth of an Invisible Light)",
// 80 => "Die Anderen (The Others)",
// // 81 => "Die letzte Fahrt ins Nichts (Fear Burns Down to Ashes)",
// 82 => "Die Spionin des Abyss (Lost in a Space that isn't There)",
// 83 => "Die Brücke zwischen den Zeiten (Abridging the Devil's Divide)",
// 84 => "Der Gordische Irrgarten (Trusting the Gordian Maze)",
// 85 => "Die perfekte Maschine (A Symmetry of Imperfection)",
// 86 => "Die Stimme des Engels (Time Out of Mind)",
// 87 => "Leichtes Spiel (The Dissonant Interval (Part 1))",
// // 88 => "Die Hoffnung stirbt zuletzt (The Dissonant Interval (Part 2))",
 
// // 89 => "Der Eindringling - Teil 1 (The Weight (Part 1))",
// // 90 => "Der Eindringling - Teil 2 (The Weight (Part 2))",
// // 91 => "Kabinett des Schreckens (Phear Phactor Phenom)",
// // 92 => "Die Freundin (Decay of the Angel)",
// // 93 => "Das Geheimnis der zwei Sonnen (The Eschatology of Our Present)",
// // 94 => "Die Zeitschleife (When Goes Around…)",
// // 95 => "Rätselhafte Worte (Attempting Screed)",
// // 96 => "Tödliche Kristalle (So Burn the Untamed Lands)",
// // 97 => "Der Tunnelwächter (What Will be Was Not)",
// // 98 => "Die Prüfung (The Test)",
// // 99 => "Das größte Opfer (Through a Glass Darkly)",
// // 100 => "Hochmut kommt vor dem Fall (Pride Before the Fall)",
// // 101 => "Der verschwundene Mond (Moonlight Becomes You)",
// // 102 => "Der Zwilling (Past is Prolix)",
// // 103 => "Die vergessene Frau (The Opposites of Attraction)",
// // 104 => "Das Fest der Verfinsterung (Saving Light from a Black Sun)",
// // 105 => "Die verschlüsselte Botschaft (Totaled Recall)",
// // 106 => "Rückkehr zum Ursprung (Quantum Tractate Delirium)",
// // 107 => "Die Sekte des Generals (One More Day's Light)",
// // 108 => "Ein alter Bekannter (Chaos and the Stillness of It)",
// // 109 => "Das Herz der Reise, Teil 1 (The Heart of the Journey (Part 1))",
// // 110 => "Das Herz der Reise, Teil 2 (The Heart of the Journey (Part 2))",
// ),
// );
/branches/live/media/video/series/includes/monk.php
0,0 → 1,220
<?php
 
$monk = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'diverse',
'seen' => array(array(1, 16)),
// 'last_seen' => mktime(21, 15, 0, 6, 5, 2011),
'seasons' => array(13, 16, 16, 16, 16, 16, 16, 16),
'episode_list' => 'wiki:Liste_der_Monk-Episoden',
'episodes' => array(
1 => 'Mr. Monk and the Candidate (1)',
2 => 'Mr. Monk and the Candidate (2)',
3 => 'Mr. Monk and the Psychic',
4 => 'Mr. Monk Meets Dale the Whale',
5 => 'Mr. Monk Goes to the Carnival',
6 => 'Mr. Monk Goes to the Asylum',
7 => 'Mr. Monk and the Billionaire Mugger',
8 => 'Mr. Monk and the Other Woman',
9 => 'Mr. Monk and the Marathon Man',
10 => 'Mr. Monk Takes a Vacation',
11 => 'Mr. Monk and the Earthquake',
12 => 'Mr. Monk and the Red-Headed Stranger',
13 => 'Mr. Monk and the Airplane',
 
14 => "Mr. Monk Goes Back to School",
15 => "Mr. Monk Goes to Mexico",
16 => "Mr. Monk Goes to the Ballgame",
17 => "Mr. Monk Goes to the Circus",
18 => "Mr. Monk and the Very, Very Old Man",
19 => "Mr. Monk Goes to the Theater",
20 => "Mr. Monk and the Sleeping",
21 => "Mr. Monk Meets the Playboy",
22 => "Mr. Monk and the 12th Man",
23 => "Mr. Monk and the Paperboy",
24 => "Mr. Monk and the Three Pies",
25 => "Mr. Monk and the T.V. Star",
26 => "Mr. Monk and the Missing Granny",
27 => "Mr. Monk and the Captain's Wife",
28 => "Mr. Monk Gets Married",
29 => "Mr. Monk Goes to Jail",
 
94 => "Mr. Monk Buys a House (2011-09-19 17:05, ITV3)",
95 => "Mr. Monk and The Genius (2011-09-20 17:10, ITV3)",
96 => "Mr. Monk Gets Lotto Fever",
97 => "Mr. Monk Takes a Punch",
98 => "Mr. Monk Is Underwater",
99 => "Mr. Monk Falls in Love",
100 => "Mr. Monk's 100th Case",
101 => "Mr. Monk Gets Hypnotized (2011-09-28 17:10, ITV3)",
102 => "Mr. Monk and the Miracle",
103 => "Mr. Monk's Other Brother",
104 => "Mr. Monk on Wheels (03.10.2011 17:10)",
105 => "Mr. Monk and the Lady Next Door (04.10.2011 17:10)",
106 => "Mr. Monk Makes the Playoffs (05.10.2011 17:15)",
107 => "Mr. Monk and the Bully (06.10.2011 17:10)",
108 => "Mr. Monk and the Magician (07.10.2011 17:10)",
109 => "Mr. Monk Fights City Hall (10.10.2011 17:10)",
110 => "Mr. Monk's Favorite Show (2011-05-05, ITV3)",
111 => 'Mr. Monk and the Foreign Man (2011-05-12 21:00, ITV3)',
112 => "Mr. Monk and the UFO (2011-05-19 21:00, ITV3)",
113 => "Mr. Monk is Someone Else (2011-05-26 21:00, ITV3)",
114 => "Mr. Monk Takes the Stand (17.10.2011 17:15)",
115 => "Mr. Monk and the Critic (18.10.2011 17:05)",
116 => "Mr. Monk and the Voodoo Curse (19.10.2011 17:15)",
117 => "Mr. Monk Goes to Group Therapy (20.10.2011 17:10)",
118 => "Happy Birthday, Mr. Monk",
119 => "Mr. Monk and Sharona",
120 => "Mr. Monk and the Dog",
121 => "Mr. Monk Goes Camping",
122 => "Mr. Monk Is the Best Man",
123 => "Mr. Monk and the Badge",
124 => "Mr. Monk and the End (1) (2011-08-16 21:00, ITV3)",
125 => "Mr. Monk and the End (2) (2011-08-23 21:00, ITV3)"
)
);
 
$monk_de = array(
'ignore' => true,
'channel' => 'ORF1/Super RTL/RTL',
'showtimes' => 'diverse',
'seen' => array(array(1, 12)),
'last_seen' => mktime(21, 15, 0, 6, 5, 2011),
'seasons' => array(13, 16, 16, 16, 16, 16, 16, 16),
'episode_list' => 'wiki:Liste_der_Monk-Episoden',
'episodes' => array(
1 => 'Mr. Monk und das Attentat – Teil 1 (Mr. Monk and the Candidate (1))',
2 => 'Mr. Monk und das Attentat – Teil 2 (Mr. Monk and the Candidate (2))',
3 => 'Mr. Monk und die Hellseherin (Mr. Monk and the Psychic)',
4 => 'Mr. Monk gegen die Qualle (Mr. Monk Meets Dale the Whale)',
5 => 'Mr. Monk auf dem Rummelplatz (Mr. Monk Goes to the Carnival)',
6 => 'Mr. Monk in der Anstalt (Mr. Monk Goes to the Asylum)',
7 => 'Mr. Monk und ein Milliardär auf Abwegen (Mr. Monk and the Billionaire Mugger)',
8 => 'Mr. Monk und Monica (Mr. Monk and the Other Woman)',
9 => 'Mr. Monk und der Marathon-Mann (Mr. Monk and the Marathon Man)',
10 => 'Mr. Monk macht Urlaub (Mr. Monk Takes a Vacation)',
11 => 'Mr. Monk und das Erdbeben (Mr. Monk and the Earthquake)',
12 => 'Mr. Monk und Willie Nelson (Mr. Monk and the Red-Headed Stranger)',
13 => 'Mr. Monk im Flugzeug (Mr. Monk and the Airplane)',
 
14 => "Mr. Monk geht wieder zur Schule (Mr. Monk Goes Back to School)",
// 15  2  Mr. Monk fährt nach Mexiko Mr. Monk Goes to Mexico 27. Juni 2003 30. Mär. 2004
// 16  3  Mr. Monk und das Baseballfieber Mr. Monk Goes to the Ballgame 11. Juli 2003 6. Apr. 2004
// 17  4  Mr. Monk geht in den Zirkus Mr. Monk Goes to the Circus 18. Juli 2003 13. Apr. 2004
// 18  5  Mr. Monk und der älteste Mann der Welt Mr. Monk and the Very, Very Old Man 25. Juli 2003 20. Apr. 2004
// 19  6  Mr. Monk geht mit Sharona ins Theater Mr. Monk Goes to the Theater 1. Aug. 2003 27. Apr. 2004
// 20  7  Mr. Monk und der schlafende Verdächtige Mr. Monk and the Sleeping Suspect 8. Aug. 2003 4. Mai 2004
21 => "Mr. Monk, ein Playboy und viele schöne Mädchen (Mr. Monk Meets the Playboy)",
22 => "Mr. Monk und der 12. Geschworene (Mr. Monk and the 12th Man)",
23 => "Mr. Monk und der Zeitungsjunge (Mr. Monk and the Paperboy)",
24 => "Mr. Monk, sein Bruder und drei Kuchen (Mr. Monk and the Three Pies)",
25 => "Mr. Monk und der Fernsehstar (Mr. Monk and the T.V. Star)",
26 => "Mr. Monk und die entführte Großmutter (Mr. Monk and the Missing Granny)",
27 => "Mr. Monk und die Frau des Captains (Mr. Monk and the Captain's Wife)",
28 => "Mr. Monk heiratet Sharona (Mr. Monk Gets Married)",
29 => "Mr. Monk landet im Gefängnis (Mr. Monk Goes to Jail)",
 
30 => "Mr. Monk in Manhattan (Mr. Monk Takes Manhattan)",
31 => "Mr. Monk und der Affe (Mr. Monk and the Panic Room)",
32 => "Mr. Monk und der Stromausfall (Mr. Monk and the Blackout)",
33 => "Mr. Monk wird gefeuert (Mr. Monk Gets Fired)",
34 => "Mr. Monk hilft der Mafia (Mr. Monk Meets the Godfather)",
35 => "Mr. Monk und Sharonas Besuch aus dem Jenseits (Mr. Monk and the Girl Who Cried Wolf)",
36 => "Mr. Monk arbeitet im Supermarkt (Mr. Monk and the Employee of the Month)",
37 => "Mr. Monk spielt mit (Mr. Monk and the Game Show)",
38 => "Mr. Monk kann auch anders (Mr. Monk Takes His Medicine)",
39 => "Mr. Monk und Natalie fischen im Dunkeln (Mr. Monk and the Red Herring)",
40 => "Mr. Monk gegen den toten Mörder (Mr. Monk vs. the Cobra)",
41 => "Mr. Monk muss in den Wald (Mr. Monk Gets Cabin Fever)",
42 => "Mr. Monk steckt im Stau (Mr. Monk Gets Stuck in Traffic)",
43 => "Mr. Monk in Las Vegas (Mr. Monk Goes to Vegas)",
44 => "Mr. Monk als Wahlhelfer (Mr. Monk and the Election)",
45 => "Mr. Monk will Vater werden (Mr. Monk and the Kid)",
 
// 46  1  Mr. Monk bekommt Konkurrenz Mr. Monk and the Other Detective 8. Juli 2005 15. Nov. 2005
// 47  2  Mr. Monk und Frankenstein Mr. Monk Goes Home Again 15. Juli 2005 22. Nov. 2005
// 48  3  Mr. Monk hütet das Bett Mr. Monk Stays in Bed 22. Juli 2005 29. Nov. 2005
// 49  4  Mr. Monk als Bürohengst Mr. Monk Goes to the Office 29. Juli 2005 6. Dez. 2005
// 50  5  Mr. Monk ist betrunken Mr. Monk Gets Drunk 5. Aug. 2005 9. Mai 2006
// 51  6  Mr. Monk und Mrs. Monk Mr. Monk and Mrs. Monk 12. Aug. 2005 16. Mai 2006
// 52  7  Mr. Monk und die schwarze Witwe Mr. Monk Goes to a Wedding 19. Aug. 2005 23. Mai 2006
// 53  8  Mr. Monk war auch mal klein Mr. Monk and Little Monk 26. Aug. 2005 30. Mai 2006
// 54  9  Mr. Monk unterwegs als Weihnachtsmann Mr. Monk and the Secret Santa 2. Dez. 2005 7. Nov. 2006
// 55  10  Mr. Monk betritt die Modewelt Mr. Monk Goes to a Fashion Show 13. Jan. 2006 12. Sep. 2006
// 56  11  Mr. Monk erinnert sich an nichts Mr. Monk Bumps His Head 20. Jan. 2006 19. Sep. 2006
// 57  12  Mr. Monk und das Geheimnis einer Ehe Mr. Monk and the Captain's Marriage 27. Jan. 2006 26. Sep. 2006
// 58  13  Mr. Monk auf der Jagd nach dem verschwundenen Juwel Mr. Monk and the Big Reward 3. Feb. 2006 10. Okt. 2006
// 59  14  Mr. Monk und das außerirdische Alibi Mr. Monk and the Astronaut 7. Mär. 2006 17. Okt. 2006
// 60  15  Mr. Monk und der sadistische Zahnarzt Mr. Monk Goes to the Dentist 10. Mär. 2006 24. Okt. 2006
// 61  16  Mr. Monk als Geschworener Mr. Monk Gets Jury Duty 17. Mär. 2006 31. Okt. 2006
 
// 62  1  Mr. Monk mal zwei? Mr. Monk and the Actor 7. Juli 2006 13. Mär. 2007
// 63  2  Mr. Monk im Müll Mr. Monk and the Garbage Strike 14. Juli 2006 20. Mär. 2007
64 => "Mr. Monk als Trainer (Mr. Monk and the Big Game)",
65 => "Mr. Monk sieht nichts mehr (Mr. Monk Can't See a Thing)",
66 => "Mr. Monk, Privatdetektiv (Mr. Monk, Private Eye)",
67 => "Mr. Monk auf dem Jahrgangstreffen (Mr. Monk and the Class Reunion)",
68 => "Mr. Monk und der neue Psychiater (Mr. Monk Gets a New Shrink)",
69 => "Mr. Monk muss auf ein Rockkonzert (Mr. Monk Goes to a Rock Concert)",
70 => "Mr. Monk trifft seinen Vater (Mr. Monk Meets His Dad)",
71 => "Mr. Monk und der Lepramann (Mr. Monk and the Leper)",
72 => "Mr. Monk findet einen besten Freund (Mr. Monk Makes a Friend)",
73 => "Mr. Monk als Butler? (Mr. Monk Is at Your Service)",
// 74  13  Mr. Monk ist auf Sendung Mr. Monk Is on the Air 2. Feb. 2007 2. Okt. 2007
75 => "Mr. Monk atmet Landluft (Mr. Monk Visits a Farm)",
76 => "Mr. Monk und der echt total tote Typ (Mr. Monk and the Really, Really Dead Guy)",
77 => "Mr. Monk und das Aus im Krankenhaus? (Mr. Monk Goes to the Hospital)",
 
78 => "Mr. Monk wird versteigert (Mr. Monk and His Biggest Fan)",
79 => "Mr. Monk in der Rapszene (Mr. Monk and the Rapper)",
80 => "Mr. Monk gegen den Nudisten (Mr. Monk and the Naked Man)",
81 => "Mr. Monk glaubt kein Wort (Mr. Monk and the Bad Girlfriend)",
82 => "Mr. Monk und die Bienen und die Blumen (Mr. Monk and the Birds and the Bees)",
83 => "Mr. Monk auf Schatzsuche (Mr. Monk and the Buried Treasure)",
84 => "Mr. Monk und der Draufgänger (Mr. Monk and the Daredevil)",
85 => "Mr. Monk belastet ein Fehlurteil (Mr. Monk and the Wrong Man)",
86 => "Mr. Monk streift durch die Nacht (Mr. Monk Is Up All Night)",
87 => "Mr. Monk schießt auf den Weihnachtsmann (Mr. Monk and the Man Who Shot Santa)",
88 => "Mr. Monk tritt einer Sekte bei (Mr. Monk Joins a Cult)",
89 => "Mr. Monk in Uniform (Mr. Monk Goes to the Bank)",
90 => "Mr. Monk und die dreifache Julie (Mr. Monk and the Three Julies)",
91 => "Mr. Monk malt (Mr. Monk Paints His Masterpiece)",
92 => "Mr. Monk wird gejagt – Teil 1 (Mr. Monk Is On The Run (1))",
93 => "Mr. Monk wird gejagt – Teil 2 (Mr. Monk Is On The Run (2))",
 
94 => "Mr. Monk kauft ein Haus Mr. Monk Buys a House",
95 => "Mr. Monk und der angekündigte Mord (Mr. Monk and The Genius)",
96 => "Mr. Monk und Natalie gehen getrennte Wege? (Mr. Monk Gets Lotto Fever)",
// 97  4  Mr. Monk steigt in den Ring Mr. Monk Takes a Punch 8. Aug. 2008 24. Mär. 2009
// 98  5  Mr. Monk geht unter Mr. Monk Is Underwater 15. Aug. 2008 31. Mär. 2009
// 99  6  Mr. Monk und die Liebe auf den ersten Blick Mr. Monk Falls in Love 22. Aug. 2008 7. Apr. 2009
// 100  7  Mr. Monks 100ster Fall Mr. Monk's 100th Case 5. Sep. 2008 14. Apr. 2009
// 101  8  Mr. Monk als Kind im Manne Mr. Monk Gets Hypnotized 12. Sep. 2008 21. Sep. 2009
// 102  9  Mr. Monk wundert sich über das Weihnachtswunder Mr. Monk and the Miracle 28. Nov. 2008 22. Sep. 2009
// 103  10  Mr. Monk und der ganz andere Bruder Mr. Monk's Other Brother 9. Jan. 2009 1. Sep. 2009
// 104  11  Mr. Monk auf Rädern Mr. Monk on Wheels 16. Jan. 2009 8. Sep. 2009
// 105  12  Mr. Monk wird bemuttert Mr. Monk and the Lady Next Door 23. Jan. 2009 15. Sep. 2009
// 106  13  Mr. Monk möchte eigentlich nicht ins Stadion Mr. Monk Makes the Playoffs 30. Jan. 2009 9. Mär. 2010
// 107  14  Mr. Monks Mitgefühl hält sich in Grenzen Mr. Monk and the Bully 6. Feb. 2009 16. Mär. 2010
// 108  15  Mr. Monk und die Magie des Mordens Mr. Monk and the Magician 13. Feb. 2009 23. Mär. 2010
// 109  16  Mr. Monk und das Letzte, was Trudy sah Mr. Monk Fights City Hall 20. Feb. 2009 28. Mär. 2010
 
// 110  1  Mr. Monks Lieblingsserie Mr. Monk's Favorite Show 7. Aug. 2009 6. Apr. 2010
// 111  2  Mr. Monk und der Fremde Mr. Monk and The Foreign Man 14. Aug. 2009 11. Apr. 2010
// 112  3  Mr. Monk kann kein Mensch sein Mr. Monk and the UFO 21. Aug. 2009 18. Apr. 2010
// 113  4  Mr. Monk verliebt sich in sein neues Spiegelbild Mr. Monk is Someone Else 28. Aug. 2009 25. Apr. 2010
// 114  5  Mr. Monk in der Krise Mr. Monk Takes the Stand 11. Sep. 2009 2. Mai 2010
// 115  6  Mr. Monk, die Schönen und das Biest Mr. Monk and the Critic 18. Sep. 2009 9. Mai 2010
// 116  7  Mr. Monk und das Unheil des Voodoos Mr. Monk and the Voodoo Curse 25. Sep. 2009 14. Sep. 2010
// 117  8  Mr. Monk muss zur Gruppentherapie Mr. Monk Goes to Group Therapy 9. Okt. 2009 21. Sep. 2010
// 118  9  Mr. Monk feiert nicht freiwillig Geburtstag Happy Birthday, Mr. Monk 16. Okt. 2009 28. Sep. 2010
// 119  10  Mr. Monk mit Natalie - und Sharona? Mr. Monk and Sharona 23. Okt. 2009 5. Okt. 2010
120 => "Mr. Monk kommt auf den Hund (Mr. Monk and the Dog)",
121 => "Mr. Monk riskiert seine Wiedereinstellung (Mr. Monk Goes Camping)",
122 => "Mr. Monk ermittelt als Trauzeuge (Mr. Monk Is the Best Man)",
// 123  14  Mr. Monks Freude endet am Schreibtisch Mr. Monk and the Badge 20. Nov. 2009 2. Nov. 2010
124 => "Mr. Monk und Trudys Erbe – Teil 1 (Mr. Monk and the End (1)",
125 => "Mr. Monk und Trudys Erbe – Teil 2 (Mr. Monk and the End (2))"
)
);
/branches/live/media/video/series/includes/dead-zone.php
0,0 → 1,98
<?php
 
$dead_zone = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Mo–Fr 16:10',
'seen' => array(array(1, 10)),
// 'last_seen' => mktime(16, 5, 0, 5, 16, 2011),
'seasons' => array(13, 19, 12, 12, 11, 13),
'episode_list' => 'wiki:en:List_of_The_Dead_Zone_episodes',
'episodes' => array(
1 => "Wheel of Fortune (Das zweite Gesicht)",
2 => "What It Seems (Kaltes Herz)",
3 => "Quality of Life (Der Coach)",
4 => "Enigma (Enigma)",
5 => "Unreasonable Doubt (Der zwölfte Geschworene)",
6 => "The House (Das Haus)",
7 => "Enemy Mind (Höllentrip)",
8 => "Netherworld (Zwischen zwei Welten)",
9 => "The Siege (Kaleidoskop des Todes)",
10 => "Here There Be Monsters (Hexenjagd)",
11 => "Dinner with Dana (Dinner mit Dana)",
12 => "Shaman (Der Schamane)",
13 => "Destiny (Des Teufels rechte Hand)",
 
14 => "Valley of the Shadow (Das Wort Gottes)",
15 => "Descent (1) (Abstieg in den Tod)",
16 => "Ascent (2) (Am Ende des Tunnels)",
17 => "The Outsider (Der Aussenseiter)",
18 => "Precipitate (Blutsbande)",
19 => "Scars (Die Stimmen der Toten)",
20 => "Misbegotten (Anita)",
21 => "Cabin Pressure (Flug TCA 2413)",
22 => "The Man Who Never Was (Der Mann, der nie existierte)",
23 => "Dead Men Tell Tales (Gute Absichten)",
24 => "Playing God (Herrscher über Leben und Tod)",
25 => "Zion (Der Prediger)",
26 => "The Storm (Der Sturm)",
27 => "Plague (Der unsichtbare Tod)",
28 => "Deja Voodoo (DejaVodoo)",
29 => "The Hunt (Angst und Schrecken)",
30 => "The Mountain (Die Schatzsuche)",
31 => "The Combination (Die Zwölfte Runde)",
32 => "Visions (Der Mann aus der Zukunft)",
 
33 => "Finding Rachel, Part 1 (Das Komplott (Teil 1))",
34 => "Finding Rachel, Part 2 (Das Komplott (Teil 2))",
35 => "Collision (Gefangen im Feuer)",
36 => "Cold Hard Truth (Gnadenlose Wahrheit)",
37 => "Total Awareness (Totale Kontrolle)",
38 => "No Questions Asked (Tod eines Freundes)",
39 => "Looking Glass (Die Zwillinge)",
40 => "Speak Now (Die unglückliche Braut)",
41 => "Cycle of Violence (Spirale der Gewalt)",
42 => "Instinct (Zeichen und Wunder)",
43 => "Shadows (Schwarze Sekunden)",
44 => "Tipping Point (1) (Apokalypse (1))",
 
45 => "Broken Circle (2) (Mein ist die Rache… (2))",
46 => "The Collector (Die perfekte Frau)",
47 => "Double Vision (Die Hellseherin)",
48 => "Still Life (Die Muse des Malers)",
49 => "Heroes & Demons (Helden und Dämonen)",
50 => "The Last Goodbye (Der Rockstar)",
51 => "Grains of Sand (Menschenhandel)",
52 => "Vanguard (Die Reiter der Apokalypse)",
53 => "Babble On (Die Explosion)",
54 => "Coming Home (Im Wald der Toten)",
55 => "Saved (Der dritte Herrscher)",
56 => "A Very Dead Zone Christmas (Übersinnliche Weihnachtszeit)",
 
57 => "Forbidden Fruit (Verbotene Früchte)",
58 => "Independence Day (Independance Day)",
59 => "Panic (Panik)",
60 => "Articles of Faith (Rassenhass)",
61 => "The Inside Man (Die Reliquie)",
62 => "Lotto Fever (Lottofieber)",
63 => "Symmetry (Von allen Seiten)",
64 => "Vortex (Die letzte Schlacht)",
65 => "Revelations (Die Offenbarung)",
66 => "Into the Heart of Darkness (Im Herzen der Dunkelheit)",
67 => "The Hunting Party (Jäger und Wölfe)",
 
68 => "Heritage (Heldentod)",
69 => "Ego (Innere Dämonen)",
70 => "Reentry (Amerikas Hoffnung)",
71 => "Big Top (Der alte Jahrmarkt)",
72 => "Interred (Lebendig begraben)",
73 => "Switch (Der Kanada Express)",
74 => "Numb (Der rettende Kuss)",
75 => "Outcome (Die Explosion)",
76 => "Transgressions (Fallstricke des Teufels)",
77 => "Drift (Das Pferderennen)",
78 => "Exile (Irgendwo in Indiana)",
79 => "Ambush (Das Geheimnis)",
80 => "Denouement (Das Gift der Macht)",
),
);
/branches/live/media/video/series/includes/x-files.php
0,0 → 1,235
<?php
 
$serien['<span class="akte-x"><span class="small">Akte<span class="before-x"> </span>'
. '<span class="x">X</span></span>'] = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Do 20:15-22:15',
'seen' => array(array(1, 25)),
// 'last_seen' => mktime(20, 15, 0, 3, 24, 2011),
'seasons' => array(24, 25, 24, 24, 20, 22, 22, 21, 19),
'episode_list' => 'wiki:Liste_der_Episoden_von_Akte_X_–_Die_unheimlichen_Fälle_des_FBI',
'episodes' => array(
/* Season 1 */
1 => "Pilot (Gezeichnet)",
2 => "Deep Throat (Die Warnung)",
3 => "Squeeze (Das Nest)",
4 => "Conduit (Signale)",
5 => "The Jersey Devil (Der Teufel von Jersey)",
6 => "Shadows (Schatten)",
7 => "Ghost in the Machine (Die Maschine)",
8 => "Ice (Eis)",
9 => "Space (Besessen)",
10 => "Fallen Angel (Gefallener Engel)",
11 => "Eve",
12 => "Fire (Feuer)",
13 => "Beyond the Sea (Die Botschaft)",
14 => "Gender Bender (Verlockungen)",
15 => "Lazarus",
16 => "Young at Heart (Ewige Jugend)",
17 => "E.B.E. (Täuschungsmanöver)",
18 => "Miracle Man (Der Wunderheiler)",
19 => "Shapes (Verwandlungen)",
20 => "Darkness Falls (Der Kokon)",
21 => "Tooms (Ein neues Nest)",
22 => "Born Again (Wiedergeboren)",
23 => "Roland",
24 => "The Erlenmeyer Flask (Das Labor)",
 
/* Season 2 */
25 => "Little Green Men (Kontakt)",
26 => "The Host (Der Parasit)",
27 => "Blood (Blut)",
28 => "Sleepless (Schlaflos)",
29 => "Duane Barry (1) (Unter Kontrolle - Teil 1)",
30 => "Ascension (2) (Seilbahn zu den Sternen - Teil 2)",
31 => "3 (Drei)",
32 => "One Breath (An der Grenze)",
33 => "Firewalker (Der Vulkan)",
34 => "Red Museum (Rotes Museum)",
35 => "Excelsis Dei (Excelsis Dei)",
36 => "Aubrey (Böse geboren)",
37 => "Irresistible (Todestrieb)",
38 => "Die Hand Die Verletzt (Satan)",
39 => "Fresh Bones (Frische Knochen)",
40 => "Colony (1) (Die Kolonie - Teil 1)",
41 => "End Game (2) (Die Kolonie - Teil 2)",
42 => "Fearful Symmetry (Sophie)",
43 => "Dod Kalm (Totenstille)",
44 => "Humbug (Der Zirkus)",
45 => "The Calusari (Heilige Asche)",
46 => "F. Emasculata (Verseucht)",
47 => "Soft Light (Das Experiment)",
48 => "Our Town (Unsere kleine Stadt)",
49 => "Anasazi (1) (Anasazi - Teil 1)",
 
/* Season 3 */
// Nr.(ges.) Nr.(St.) Deutschsprachiger Titel Originaltitel Erstaus­strahlung USA Deutsch­sprachige Erstaus­strahlung (DE)
// 50  1  Das Ritual - Teil 2 The Blessing Way (2) 1995-09-2222. Sep. 1995 1996-10-2424. Okt. 1996
// 51  2  Verschwörung des Schweigens - Teil 3 Paper Clip (3) 1995-09-2929. Sep. 1995 1996-10-3131. Okt. 1996
// 52  3  Blitzschlag D.P.O. 1995-10-0606. Okt. 1995 1996-11-0707. Nov. 1996
// 53  4  Der Hellseher Clyde Bruckman's Final Repose 1995-10-1313. Okt. 1995 1996-11-1414. Nov. 1996
// 54  5  Die Liste The List 1995-10-2020. Okt. 1995 1997-02-2727. Feb. 1997
// 55  6  Fett 2Shy 1995-11-0303. Nov. 1995 1997-03-0606. Mär. 1997
// 56  7  Der zweite Körper The Walk 1995-11-1010. Nov. 1995 1996-11-2121. Nov. 1996
// 57  8  Parallele Oubliette 1995-11-1717. Nov. 1995 1997-03-1313. Mär. 1997
// 58  9  Die Autopsie - Teil 1 Nisei (1) 1995-11-2424. Nov. 1995 1997-01-2323. Jan. 1997
// 59  10  Der Zug - Teil 2 731 (2) 1995-12-0101. Dez. 1995 1997-01-3030. Jan. 1997
// 60  11  Offenbarung Revelations 1995-12-1515. Dez. 1995 1996-11-2828. Nov. 1996
// 61  12  Krieg der Koprophagen War of the Coprophages 1996-01-0505. Jan. 1996 1996-12-0505. Dez. 1996
// 62  13  Energie Syzygy 1996-01-2626. Jan. 1996 1996-12-1212. Dez. 1996
// 63  14  Groteske Grotesque 1996-02-0202. Feb. 1996 1997-03-2020. Mär. 1997
// 64  15  Der Feind - Teil 1 Piper Maru (1) 1996-02-0909. Feb. 1996 1996-12-1919. Dez. 1996
// 65  16  Der Feind - Teil 2 Apocrypha (2) 1996-02-1616. Feb. 1996 1997-01-0202. Jan. 1997
// 66  17  Mein Wille sei dein Wille Pusher 1996-02-2323. Feb. 1996 1997-01-0909. Jan. 1997
// 67  18  Der Fluch Teso Dos Bichos 1996-03-0808. Mär. 1996 1997-01-1616. Jan. 1997
// 68  19  Höllengeld Hell Money 1996-03-2929. Mär. 1996 1997-02-0606. Feb. 1997
69 => 'Andere Wahrheiten (Jose Chung\'s "From Outer Space"',
70 => 'Heimsuchung (Avatar)',
71 => 'Der See (Quagmire)',
72 => 'Ferngesteuert (Wetwired)',
73 => 'Der Tag steht schon fest (Talitha Cumi) (1)',
 
/* Season 4 */
74 => 'Herrenvolk (2)',
75 => 'Blutschande',
76 => 'Teliko',
77 => 'Unruhe',
78 => 'Rückkehr der Seelen (The Field Where I Died)',
79 => 'Hexensabbat (Sanguinarium)',
80 => 'Gedanken des geheimnisvollen Rauchers (Musings of a Cigarette Smoking Man)',
81 => 'Tunguska – Teil 1 (Tunguska (1))',
82 => 'Tunguska – Teil 2 (Terma (2))',
83 => 'Die Sammlung (Paperhearts)',
84 => 'Der Chupacabra (El Mundo Gira)',
85 => 'Leonard Betts',
86 => "Mutterkorn (Never Again)",
87 => "Memento Mori (Memento Mori)",
88 => "Der Golem (Kaddish)",
89 => "Unsichtbar (Unrequited)",
90 => "Tempus Fugit - Teil 1 (Tempus Fugit (1))",
91 => "Tempus Fugit - Teil 2 (Max (2))",
92 => "Rückkehr aus der Zukunft (Synchrony)",
93 => "Ein unbedeutender Niemand (Small Potatoes)",
94 => "Der Pakt mit dem Teufel (Zero Sum)",
95 => "Todes-Omen (Elegy)",
96 => "Dämonen (Demons)",
97 => "Gethsemane (Gethsemane)",
 
/* Season 5 */
98 => "Redux - Teil 1 (Redux (1))",
99 => "Redux - Teil 2 (Redux (2))",
100 => "Die unüblichen Verdächtigen (Unusual Suspects)",
101 => "Vom Erdboden verschluckt (Detour)",
102 => "Der große Mutato (Post-Modern Prometheus)",
103 => "Emily - Teil 1 (Christmas Carol (1))",
104 => "Emily - Teil 2 (Emily (2))",
105 => "Kitsunegari (Kitsunegari)",
106 => "Die Wurzeln des Bösen (Schizogeny)",
107 => "Ein Spiel (Chinga (02.04.2011 23:50 Tele 5))",
108 => "Kill Switch (Kill Switch)",
109 => "Böses Blut (Bad Blood)",
110 => "Cassandra - Teil 1 (Patient X (1) 12.05.2011 21:15)",
111 => "Cassandra - Teil 2 (The Red and the Black (2))",
112 => "Gute Patrioten (Travelers)",
113 => "Das innere Auge (Mind's Eye)",
114 => "Alle Seelen (All Souls)",
115 => "Die Pine-Bluff-Variante (The Pine Bluff Variant)",
116 => "Folie a Deux (Folie a Deux)",
117 => "Das Ende (The End)",
 
/* Season 6 */
118 => "Der Anfang (The Beginning)",
119 => "Die Fahrt (Drive)",
120 => "Im Bermuda-Dreieck (Triangle)",
121 => "Dreamland - Teil 1 (Dreamland (1))",
122 => "Dreamland - Teil 2 (Dreamland (2))",
123 => "Die Geister, die ich rief (How the Ghosts Stole Christmas)",
124 => "Zeit der Zärtlichkeit (Terms of Endearment)",
125 => "Der Regenmacher (Rain King)",
126 => "S.R. 819 (S.R. 819)",
127 => "Tithonos (Tithonus)",
128 => "Zwei Väter - Teil 1 (Two Fathers (1))",
129 => "Ein Sohn - Teil 2 (One Son (2))",
131 => "Montag (Monday)",
132 => "Arkadien (Arcadia)",
133 => "Alpha",
134 => "Trevor",
135 => "Milagro",
136 => "Ex (The Unnatural)",
137 => "Suzanne (Three of a Kind)",
138 => 'Sporen (Field Trip (aka: "Lies")',
139 => 'Artefakte (Biogenesis (aka: "Plans")',
 
/* Season 7 */
140 => 'Böse Zeichen (1) (The Sixth Extinction (1))',
141 => 'Tausend Stimmen (2) (The Sixth Extinction (2))',
142 => 'Hunger (Hungry)',
143 => "Millennium",
144 => "Masse mal Beschleunigung (Rush)",
145 => "Das Glück des Henry Weems (The Goldberg Variation)",
146 => "Tor zur Hölle (Orison)",
147 => "Der unglaubliche Maleeni (The Amazing Maleeni)",
// 148  9  Schlangen Signs & Wonders 2000-01-2323. Jan. 2000 2000-12-0404. Dez. 2000
// 149  10  Alte Seelen Sein Und Zeit 2000-02-0606. Feb. 2000 2000-12-1111. Dez. 2000
// 150  11  Sternenlicht Closure 2000-02-1313. Feb. 2000 2000-12-1818. Dez. 2000
// 151  12  Vollmond X-Cops 2000-02-2020. Feb. 2000 2001-01-1515. Jan. 2001
// 152  13  Game Over First Person Shooter 2000-02-2727. Feb. 2000 2001-01-2929. Jan. 2001
// 153  14  Zauberstaub Theef 2000-03-1212. Mär. 2000 2001-01-0808. Jan. 2001
// 154  15  Cobra En Ami 2000-03-1919. Mär. 2000 2001-01-2222. Jan. 2001
// 155  16  Zerbrochene Spiegel Chimera 2000-04-0202. Apr. 2000 2001-02-0505. Feb. 2001
// 156  17  Augenblicke all things 2000-04-0909. Apr. 2000 2001-02-1212. Feb. 2001
// 157  18  Nikotin Brand X 2000-04-1616. Apr. 2000 2001-02-2626. Feb. 2001
// 158  19  Hollywood Hollywood A. D. 2000-04-3030. Apr. 2000 2001-02-1919. Feb. 2001
// 159  20  27.000.000 : 1 Fight Club 2000-05-0707. Mai 2000 2001-03-0505. Mär. 2001
// 160  21  Drei Wünsche Je Souhaite 2000-05-1414. Mai 2000 2001-03-1212. Mär. 2001
// 161  22  Alles beginnt in Oregon - Teil 1 Requiem (1) 2000-05-2121. Mai 2000 2001-03-1919. Mär. 2001
 
/* Season 8 */
// Nr.(ges.) Nr.(St.) Deutschsprachiger Titel Originaltitel Erstaus­strahlung USA Deutsch­sprachige Erstaus­strahlung (DE)
// 162  1  Verschwunden - Teil 2 Within (2) 2000-11-0505. Nov. 2000 2001-09-2525. Sep. 2001
// 163  2  Gibson Praise - Teil 3 Without (3) 2000-11-1212. Nov. 2000 2001-10-0101. Okt. 2001
// 164  3  Klauen und Zähne Patience 2000-11-1919. Nov. 2000 2001-10-0808. Okt. 2001
// 165  4  Gesteinigt Roadrunners 2000-11-2626. Nov. 2000 2001-10-1515. Okt. 2001
// 166  5  Billy Invocation 2000-12-0303. Dez. 2000 2001-10-2222. Okt. 2001
// 167  6  Rückwärts Redrum 2000-12-1010. Dez. 2000 2001-11-0505. Nov. 2001
// 168  7  Via Negativa Via Negativa 2000-12-1717. Dez. 2000 2001-10-2929. Okt. 2001
// 169  8  Fenster der Seele Surekill 2001-01-0707. Jan. 2001 2001-11-1212. Nov. 2001
// 170  9  Schlaues Metall Salvage 2001-01-1414. Jan. 2001 2001-11-1919. Nov. 2001
// 171  10  Hier und nicht hier Badlaa 2001-01-2121. Jan. 2001 2001-11-2626. Nov. 2001
// 172  11  Der Seelenesser The Gift 2001-02-0404. Feb. 2001 2001-12-0303. Dez. 2001
// 173  12  Underground Medusa 2001-02-1111. Feb. 2001 2001-12-1010. Dez. 2001
// 174  13  Frucht des Leibes Per Manum 2001-02-1818. Feb. 2001 2001-12-1717. Dez. 2001
// 175  14  Es ist zu spät - Teil 1 This Is Not Happening (1) 2001-02-2525. Feb. 2001 2002-01-0707. Jan. 2002
// 176  15  Lebendig tot - Teil 2 DeadAlive (2) 2001-04-0101. Apr. 2001 2002-01-1414. Jan. 2002
// 177  16  Drei Worte Three Words 2001-04-0808. Apr. 2001 2002-01-2121. Jan. 2002
// 178  17  Feuer und Asche Empedocles 2001-04-1515. Apr. 2001 2002-01-2828. Jan. 2002
// 179  18  Sie kommen Vienen 2001-04-2222. Apr. 2001 2002-02-0404. Feb. 2002
// 180  19  Augenlicht Alone 2001-05-0606. Mai 2001 2002-02-1111. Feb. 2002
// 181  20  Einer von vielen - Teil 1 Essence (1) 2001-05-1313. Mai 2001 2002-02-1818. Feb. 2002
// 182  21  William - Teil 2 Existence (2) 2001-05-2020. Mai 2001 2002-02-2525. Feb. 2002
 
/* Season 9 */
// Nr.(ges.) Nr.(St.) Deutschsprachiger Titel Originaltitel Erstaus­strahlung USA Deutsch­sprachige Erstaus­strahlung (DE)
// 183  1  Unter Wasser - Teil 1 Nothing Important Happened Today (1) 2001-11-1111. Nov. 2001 2002-10-1414. Okt. 2002
// 184  2  Adam und Eva - Teil 2 Nothing Important Happened Today (2) 2001-11-1818. Nov. 2001 2002-10-2121. Okt. 2002
// 185  3  Daemonicus Dæmonicus 2001-12-0202. Dez. 2001 2002-11-1111. Nov. 2002
// 186  4  4-D 4-D 2001-12-0909. Dez. 2001 2002-11-0404. Nov. 2002
// 187  5  Der Herr der Fliegen Lord of the Flies 2001-12-1616. Dez. 2001 2002-11-2525. Nov. 2002
// 188  6  Schattenmann Trust No 1 2002-01-0606. Jan. 2002 2002-11-1818. Nov. 2002
// 189  7  Desaparecido John Doe 2002-01-1313. Jan. 2002 2002-12-0202. Dez. 2002
// 190  8  Häutungen Hellbound 2002-01-2727. Jan. 2002 2002-10-2828. Okt. 2002
// 191  9  Drohungen - Teil 1 Provenance (1) 2002-03-0303. Mär. 2002 2003-01-1313. Jan. 2003
// 192  10  Die Prophezeiung - Teil 2 Providence (2) 2002-03-1010. Mär. 2002 2003-01-2020. Jan. 2003
// 193  11  Audrey Audrey Pauley 2002-03-1717. Mär. 2002 2002-12-1616. Dez. 2002
// 194  12  Der Mörder in mir Underneath 2002-03-3131. Mär. 2002 2002-12-0909. Dez. 2002
// 195  13  Sechs und neun Improbable 2002-04-0707. Apr. 2002 2002-12-2323. Dez. 2002
// 196  14  Unter dem Bett Scary Monsters 2002-04-1414. Apr. 2002 2003-01-2727. Jan. 2003
// 197  15  Helden Jump the Shark 2002-04-2121. Apr. 2002 2003-02-0303. Feb. 2003
// 198  16  Zum Wohle des Kindes William 2002-04-2828. Apr. 2002 2003-02-1717. Feb. 2003
// 199  17  Erlösung Release 2002-05-0505. Mai 2002 2003-02-1010. Feb. 2003
// 200  18  Die perfekte Familie Sunshine Days 2002-05-1212. Mai 2002 2002-12-3030. Dez. 2002
// 201  19  Die Wahrheit - Teil 1 The Truth (1) 2002-05-1919. Mai 2002 2003-02-2424. Feb. 2003
// 202  20  Die Wahrheit - Teil 2 The Truth (2) 2002-05-1919. Mai 2002 2003-02-2424. Feb. 2003
),
);
/branches/live/media/video/series/includes/quantum-leap.php
0,0 → 1,112
<?php
 
$quantum_leap = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Mo–Fr 19:00',
'seen' => array(array(1, 12)),
// 'last_seen' => mktime(19, 0, 0, 1, 19, 2012),
'seasons' => array(8, 22, 22, 22, 21),
'episodes' => array(
1 => "Genesis",
2 => "Star-Crossed",
3 => "The Right Hand of God",
4 => "How the Tess Was Won",
5 => "Double Identity",
6 => "The Color of Truth",
7 => "Camikazi Kid",
8 => "Play It Again, Seymour",
 
9 => "Honeymoon Express",
10 => "Disco Inferno",
11 => "The Americanization of Machiko",
12 => "What Price Gloria?",
13 => "Blind Faith",
14 => "Good Morning, Peoria",
15 => "Thou Shalt Not…",
16 => "Jimmy",
17 => "So Help Me God",
18 => "Catch A Falling Star",
19 => "A Portrait for Troian",
20 => "Animal Frat",
21 => "Another Mother",
22 => "All Americans",
23 => "Her Charm",
24 => "Freedom",
25 => "Good Night, Dear Heart",
26 => "Pool Hall Blues",
27 => "Leaping in Without a Net",
28 => "Maybe Baby",
29 => "Sea Bride",
30 => "M.I.A.",
 
31 => "The Leap Home (Part 1)",
32 => "The Leap Home (Part 2) – Vietnam",
33 => "Leap of Faith",
34 => "One Strobe over the Line",
35 => "The Boogieman",
36 => "Miss Deep South",
37 => "Black on White on Fire",
38 => "The Great Spontini",
39 => "Rebel Without a Clue",
40 => "A Little Miracle",
41 => "Runaway",
42 => "8½ Months",
43 => "Future Boy",
44 => "Private Dancer",
45 => "Piano Man",
46 => "Southern Comforts",
47 => "Glitter Rock",
48 => "A Hunting We Will Go",
49 => "Last Dance Before An Execution",
50 => "Heart of a Champion",
51 => "Nuclear Family",
52 => "Shock Theater",
 
53 => "The Leap Back",
54 => "Play Ball",
55 => "Hurricane",
56 => "Justice",
57 => "Permanent Wave",
58 => "Raped",
59 => "The Wrong Stuff",
60 => "Dreams",
61 => "A Single Drop of Rain",
62 => "Unchained",
63 => "The Play's the Thing",
64 => "Running For Honor",
65 => "Temptation Eyes",
66 => "The Last Gunfighter",
67 => "A Song for the Soul",
68 => "Ghost Ship",
69 => "Roberto!",
70 => "It's A Wonderful Leap",
71 => "Moments to Live",
72 => "The Curse of Ptah-Hotep",
73 => "Stand Up",
74 => "A Leap for Lisa",
 
75 => "Lee Harvey Oswald",
76 => "The Leaping of the Shrew",
77 => "Nowhere to Run",
78 => "Killin' Time",
79 => "Star Light, Star Bright",
80 => "Deliver Us From Evil",
81 => "Trilogy (Part 1) – One Little Heart",
82 => "Trilogy (Part 2) – For Your Love",
83 => "Trilogy (Part 3) – The Last Door",
84 => "Promised Land",
85 => "A Tale of Two Sweeties",
86 => "Liberation",
87 => "Dr. Ruth",
88 => "Blood Moon",
89 => "Return of the Evil Leaper (1)",
90 => "Revenge of the Evil Leaper (2)",
91 => "Goodbye Norma Jean",
92 => "The Beast Within",
93 => "The Leap Between The States",
94 => "Memphis Melody",
95 => "Mirror Image",
),
'episode_list' => 'wiki:en:List_of_Quantum_Leap_episodes'
);
/branches/live/media/video/series/includes/simpsons.php
0,0 → 1,302
<?php
 
$simpsons = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'So 14:00–15:05',
'seen' => array(
array(1, 60),
array(63, 64), 95),
// 'last_seen' => mktime(21, 30, 0, 8, 3, 2010),
'seasons' => array(13, 22, 24, 22, 22 , 25, 25, 25, 25, 23, 22,
21, 22, 22, 22, 21, 22, 22, 20, 21, 23, 22, 22),
'episode_list' => 'wiki:en:List_of_The_Simpsons_episodes#Episodes',
'episodes' => array(
1 => 'Simpsons Roasting on an Open Fire',
2 => 'Bart the Genius',
3 => 'Homer’s Odyssey',
4 => "There's No Disgrace Like Home",
5 => "Bart the General",
6 => "Moaning Lisa",
7 => "The Call of the Simpsons",
8 => "The Telltale Head",
9 => "Life on the Fast Lane",
10 => "Homer's Night Out",
11 => "The Crepes of Wrath",
12 => "Krusty Gets Busted",
13 => "Some Enchanted Evening",
 
14 => "Bart Gets an F",
15 => "Simpson and Delilah",
16 => "Treehouse of Horror",
17 => "Two Cars in Every Garage and Three Eyes on Every Fish",
18 => "Dancin' Homer",
19 => "Dead Putting Society",
20 => "Bart vs. Thanksgiving",
21 => "Bart the Daredevil",
22 => "Itchy & Scratchy & Marge",
23 => "Bart Gets Hit by a Car",
24 => "One Fish, Two Fish, Blowfish, Blue Fish",
25 => "The Way We Was",
26 => "Homer vs. Lisa and the 8th Commandment",
27 => "Principal Charming",
28 => "Oh Brother, Where Art Thou?",
29 => "Bart's Dog Gets an F",
30 => "Old Money",
31 => "Brush with Greatness",
32 => "Lisa's Substitute",
33 => "The War of the Simpsons",
34 => "Three Men and a Comic Book",
35 => "Blood Feud",
 
36 => "Stark Raving Dad",
37 => "Mr. Lisa Goes to Washington",
38 => "When Flanders Failed",
39 => "Bart the Murderer",
40 => "Homer Defined",
41 => "Like Father, Like Clown",
42 => "Treehouse of Horror II",
43 => "Lisa's Pony",
44 => "Saturdays of Thunder",
45 => "Flaming Moe's",
46 => "Burns Verkaufen der Kraftwerk",
47 => "I Married Marge",
48 => "Radio Bart",
49 => "Lisa the Greek",
50 => "Homer Alone",
51 => "Bart the Lover",
52 => "Homer at the Bat",
53 => "Separate Vocations",
54 => "Dog of Death",
55 => "Colonel Homer",
56 => "Black Widower",
57 => "The Otto Show",
58 => "Bart's Friend Falls in Love",
59 => "Brother, Can You Spare Two Dimes?",
 
60 => "Kamp Krusty",
61 => "A Streetcar Named Marge",
62 => "Homer the Heretic",
63 => "Lisa the Beauty Queen",
64 => "Treehouse of Horror III",
65 => "Itchy & Scratchy: The Movie",
66 => "Marge Gets a Job",
67 => "New Kid on the Block",
68 => "Mr. Plow",
69 => "Lisa's First Word",
70 => "Homer's Triple Bypass",
71 => "Marge vs. the Monorail",
72 => "Selma's Choice",
73 => "Brother from the Same Planet",
74 => "I Love Lisa",
75 => "Duffless",
76 => "Last Exit to Springfield",
77 => "So It’s Come to This: A Simpsons Clip Show",
78 => "The Front",
79 => "Whacking Day",
80 => "Marge in Chains",
81 => "Krusty Gets Kancelled",
 
82 => "Homer's Barbershop Quartet",
83 => "Cape Feare",
84 => "Homer Goes to College",
85 => "Rosebud",
86 => "Treehouse of Horror IV",
87 => "Marge on the Lam",
88 => "Bart’s Inner Child",
89 => "Boy-Scoutz N the Hood",
90 => "The Last Temptation of Homer",
91 => '$pringfield (Or How I Learned to Stop Worrying and Love Legalised Gambling)',
92 => "Homer the Vigilante",
93 => "Bart Gets Famous",
94 => "Homer and Apu",
95 => "Lisa vs. Malibu Stacy",
96 => "Deep Space Homer",
97 => "Homer Loves Flanders",
98 => "Bart Gets an Elephant",
99 => "Burns' Heir",
100 => "Sweet Seymour Skinner's Baadasssss Song",
101 => "The Boy Who Knew Too Much",
102 => "Lady Bouvier's Lover",
103 => "Secrets of a Successful Marriage",
 
104 => "Bart of Darkness",
105 => "Lisa's Rival",
106 => "Another Simpsons Clip Show",
107 => "Itchy & Scratchy Land",
108 => "Sideshow Bob Roberts",
109 => "Treehouse of Horror V",
110 => "Bart's Girlfriend",
111 => "Lisa on Ice",
112 => "Homer Badman",
113 => "Grampa vs. Sexual Inadequacy",
114 => "Fear of Flying",
115 => "Homer the Great",
116 => "Maggie Makes Three",
117 => "Bart's Comet",
118 => "Homie the Clown",
119 => "Bart vs. Australia",
120 => "Homer vs. Patty and Selma",
121 => "A Star Is Burns",
122 => "Lisa's Wedding",
123 => "Two Dozen and One Greyhounds",
124 => "The PTA Disbands",
125 => "'Round Springfield",
126 => "The Springfield Connection",
127 => "Lemon of Troy",
128 => "Who Shot Mr. Burns? Part 1",
 
240 => "Alone Again, Natura-Diddily",
241 => "Missionary: Impossible",
 
248 => "Behind the Laughter",
 
273 => "Gloria – die wahre Liebe (A Hunka Hunka Burns in Love)",
 
284 => "Blame It on Lisa",
 
291 => "Poppa's Got a Brand New Badge",
 
365 => "Simpsons Christmas Stories",
 
371 => "Homer Simpson, This Is Your Wife",
 
388 => "The Wife Aquatic",
 
409 => "Eternal Moonshine of the Simpson Mind",
)
);
 
$simpsons_de = array(
'ignore' => true,
'channel' => 'ProSieben / ORF1',
'showtimes' => 'Mo–Do, Sa, So 18:10 / So 12:45',
// 'seen' => array(array(1, 3)),
// 'last_seen' => mktime(21, 30, 0, 8, 3, 2010),
'seasons' => array(13, 22, 24, 22, 22 , 25, 25, 25, 25, 23, 22, 21, 22, 22,
22, 21, 22, 22, 20, 21, 23, 22, 15),
'episode_list' => 'wiki:Liste_der_Simpsons-Episoden#Serie',
'episodes' => array(
// 1 => 'Es weihnachtet schwer (Simpsons Roasting on an Open Fire)',
// 2 => 'Bart wird ein Genie (Bart the Genius)',
// 3 => 'Der Versager (Homer’s Odyssey)',
 
85 => "Kampf um Bobo (Rosebud)",
86 => "Die Fahrt zur Hölle (Treehouse of Horror IV)",
 
88 => "Bart, das innere Ich (Bart’s Inner Child)",
89 => "Auf Wildwasserfahrt (Boy-Scoutz N the Hood)",
 
// 99 => "Burns Erbe (Burns’ Heir)",
 
71 => "Homer kommt in Fahrt (Marge vs. the Monorail)",
 
77 => "Nur ein Aprilscherz… (So It’s Come to This: A Simpsons Clip Show)",
 
83 => "Am Kap der Angst (Cape Feare)",
84 => "Homer an der Uni (Homer Goes to College)",
 
87 => "Die rebellischen Weiber (Marge on the Lam)",
 
105 => "Lisas Rivalin (Lisa’s Rival)",
106 => "Romantik ist überall (Another Simpsons Clip Show)",
107 => "Der unheimliche Vergnügungspark (Itchy & Scratchy Land)",
108 => "Tingeltangel-Bob (Sideshow Bob Roberts)",
 
119 => "Bart gegen Australien (Bart vs. Australia)",
 
131 => "Bei Simpsons stimmt was nicht! (Home Sweet Homediddly-Dum-Doodily)",
 
136 => "Wer ist Mona Simpson? (Mother Simpson)",
 
150 => "Simpson und sein Enkel in „Die Schatzsuche“"
. " (Raging Abe Simpson and His Grumbling Grandson in “The Curse of the Flying Hellfish”)",
 
203 => "Die Gefahr, erwischt zu werden (Natural Born Kissers)",
204 => "Ein jeder kriegt sein Fett (Lard of the Dance)",
205 => "Im Schatten des Genies (The Wizard of Evergreen Terrace)",
206 => "Bart brütet etwas aus (Bart the Mother)",
207 => "Das unheimliche Mord-Transplantat (Treehouse of Horror IX)",
// 208 => "Kennst du berühmte Stars? (When You Dish Upon a Star)",
 
210 => "Die große Betrügerin (Lisa Gets an “A”)",
211 => "Grandpa’s Nieren explodieren (Homer Simpson in: “Kidney Trouble”)",
 
213 => "Wir fahr’n nach… Vegas (Viva Ned Flanders)",
214 => "Allgemeine Ausgangssperre (Wild Barts Can’t Be Broken)",
215 => "Nur für Spieler und Prominente (Sunday, Cruddy Sunday)",
 
218 => "Marge Simpson im Anmarsch (Marge Simpson in: “Screaming Yellow Honkers”)",
 
241 => "Der beste Missionar aller Zeiten (Missionary: Impossible)",
 
244 => "Barneys Hubschrauber Flugstunde (Days of Wine and D’oh’ses)",
245 => "Kill den Alligator und dann… (Kill the Alligator and Run)",
246 => "Sie wollte schon immer Tänzerin werden (Last Tap Dance in Springfield)",
 
274 => "Aus dunklen Zeiten (The Blunder Years)",
 
277 => "Die süßsaure Marge (Sweets and Sour Marge)",
 
285 => "Homer einmal ganz woanders (Weekend at Burnsie’s)",
 
288 => "Die Apu und Manjula Krise (The Sweetest Apu)",
 
297 => "Und der Mörder ist… (The Great Louse Detective)",
298 => "Lehrerin des Jahres (Special Edna)",
 
306 => "Mr. Burns wird entlassen (C.E. D’oh)",
 
308 => "Homer auf Irrwegen (Three Gays of the Condo)",
 
310 => "Die Helden von Springfield (Old Yeller Belly)",
 
312 => "Auf dem Kriegspfad (Bart of War)",
 
320 => "Eine Simpsons-Weihnachtsgeschichte (’Tis The Fifteenth Season)",
321 => "Marge gegen Singles, Senioren, kinderlose Paare, Teenager und Schwule"
. " (Marge vs. Singles, Seniors, Childless Couples and Teens, and Gays)",
322 => "Häuptling KnockaHomer (I, D’oh-Bot)",
 
325 => "Milhouse lebt hier nicht mehr (Milhouse Doesn’t Live Here Anymore)",
326 => "Klug & Klüger (Smart and Smarter)",
327 => "Rat mal, wer zum Essen kommt (The Ziff Who Came to Dinner)",
328 => "Marge im Suff (Co-Dependent’s Day)",
 
330 => "Hochzeit auf Klingonisch (My Big Fat Geek Wedding)",
 
353 => "Lisa Simpson: Superstar (A Star is Torn)",
 
365 => "Simpsons Weihnachtsgeschichten (Simpsons Christmas Stories)",
 
372 => "Corrida de Toro (Million Dollar Abie)",
 
377 => "Gott gegen Lisa Simpson (The Monkey Suit)",
 
397 => "Brand und Beute (Crook and Ladder)",
 
393 => "Ein unmögliches Paar (Rome-old and Juli-eh)",
394 => "Homerazzi",
395 => "Marge Online (Marge Gamer)",
 
405 => "Nach Hause telefonieren (Treehouse of Horror XVIII)",
 
413 => "Debarted – Unter Ratten (The Debarted)",
 
419 => "Lebwohl, Mona (Mona Leaves-a)",
 
424 => "Der Tod kommt dreimal (Treehouse of Horror XIX)",
 
440 => "Vier Powerfrauen und eine Maniküre (Four Great Women and a Manicure)",
 
457 => "Simpson und Gomorrha (The Greatest Story Ever D’ohed)",
460 => "Walverwandtschaft (The Squirt and the Whale)",
461 => "Nedtropolis (To Surveil With Love)",
 
474 => "Im Zeichen des Schwertes (Moms I’d Like to Forget)",
 
478 => "Wütender Dad – Der Film (Angry Dad – The Movie)",
 
476 => "Wenn der Homer mit dem Sohne (Homer the Father)",
)
);
/branches/live/media/video/series/includes/glee.php
0,0 → 1,57
<?php
 
$glee = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Di 16:35',
'seen' => array(array(1, 11)),
// 'last_seen' => mktime(16, 55, 0, 8, 25, 2011),
'seasons' => array(22, 22, 22, 22),
'episode_list' => 'wiki:en:List_of_Glee_episodes',
'episodes' => array(
1 => "Pilot",
2 => "Showmance",
3 => "Acafellas",
4 => "Preggers",
5 => "The Rhodes Not Taken",
6 => "Vitamin D",
7 => "Throwdown",
8 => "Mash-Up",
9 => "Wheels",
10 => "Ballad",
11 => "Hairography",
12 => "Mattress",
13 => "Sectionals",
14 => "Hell-o",
15 => "The Power of Madonna",
16 => "Home",
17 => "Bad Reputation",
18 => "Laryngitis",
19 => "Dream On",
20 => "Theatricality",
21 => "Funk",
22 => "Journey to Regionals",
23 => "Audition",
24 => "Britney/Brittany",
25 => "Grilled Cheesus",
26 => "Duets",
27 => "The Rocky Horror Glee Show",
28 => "Never Been Kissed",
29 => "The Substitute",
30 => "Furt",
31 => "Special Education",
32 => "A Very Glee Christmas",
33 => "The Sue Sylvester Shuffle",
34 => "Silly Love Songs",
35 => "Comeback",
36 => "Blame It on the Alcohol",
37 => "Sexy",
38 => "Original Song",
39 => "A Night of Neglect",
40 => "Born This Way",
41 => "Rumours",
42 => "Prom Queen",
43 => "Funeral",
44 => "New York",
)
);
/branches/live/media/video/series/includes/macgyver.php
0,0 → 1,33
<?php
 
$macgyver = array(
// 'ignore' => true,
'channel' => 'online',
'seen' => array(array(1, 18)),
'seasons' => array(22, 22, 20, 19, 21, 21, 14),
'episode_list' => 'wiki:en:List_of_MacGyver_episodes',
'episodes' => array(
1 => "Pilot",
2 => "The Golden Triangle",
3 => "Thief of Budapest",
4 => "The Gauntlet",
5 => "The Heist",
6 => "Trumbo's World",
7 => "Last Stand",
8 => "Hellfire",
9 => "The Prodigal",
10 => "Target MacGyver",
11 => "Nightmares",
12 => "Deathlock",
13 => "Flame's End",
14 => "Countdown",
15 => "The Enemy Within",
16 => "Every Time She Smiles",
17 => "To Be a Man",
18 => "Ugly Duckling",
19 => "Slow Death",
20 => "The Escape",
21 => "A Prisoner of Conscience",
22 => "The Assassin",
)
);
/branches/live/media/video/series/includes/big-bang-theory.php
0,0 → 1,280
<?php
 
$serien['<span class="big-bang-theory"><span class="lower">The</span>'
. ' B<span class="i">i</span>g <span class="bang">Bang</span>'
. ' Theory</span>'] = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Sa 19:00-20:00',
'seen' => array(array(1, 18)),
'seasons' => array(17, 23, 23, 24, 24, 24, 5),
'episode_list' => 'wiki:Liste_der_The-Big-Bang-Theory-Episoden',
'episodes' => array(
1 => "Pilot",
2 => "The Big Bran Hypothesis",
3 => "The Fuzzy Boots Corollary",
4 => "The Luminous Fish Effect",
5 => "The Hamburger Postulate",
6 => "The Middle-Earth Paradigm",
7 => "The Dumpling Paradox",
8 => "The Grasshopper Experiment",
9 => "The Cooper-Hofstadter Polarization",
10 => "The Loobenfeld Decay",
11 => "The Pancake Batter Anomaly",
12 => "The Jerusalem Duality",
13 => "The Bat Jar Conjecture",
14 => "The Nerdvana Annihilation",
15 => "The Pork Chop Indeterminacy",
16 => "The Peanut Reaction",
17 => "The Tangerine Factor",
 
/* Season 2 */
18 => "The Bad Fish Paradigm",
19 => "The Codpiece Topology",
20 => "The Barbarian Sublimation",
21 => "The Griffin Equivalency",
22 => "The Euclid Alternative",
23 => "The Cooper-Nowitzki Theorem",
24 => "The Panty Piñata Polarization",
25 => "The Lizard-Spock Expansion",
26 => "The White Asparagus Triangulation",
27 => "The Vartabedian Conundrum",
28 => "The Bath Item Gift Hypothesis",
29 => "The Killer Robot Instability",
30 => "The Friendship Algorithm",
31 => "The Financial Permeability",
32 => "The Maternal Capacitance",
33 => "The Cushion Saturation",
34 => "The Terminator Decoupling",
35 => "The Work Song Nanocluster",
36 => "The Dead Hooker Juxtaposition",
37 => "The Hofstadter Isotope",
38 => "The Vegas Renormalization",
39 => "The Classified Materials Turbulence",
40 => "The Monopolar Expedition",
 
/* Season 3 */
41 => "The Electric Can Opener Fluctuation",
42 => "The Jiminy Conjecture",
43 => "The Gothowitz Deviation",
44 => "The Pirate Solution",
45 => "The Creepy Candy Coating Corollary",
46 => "The Cornhusker Vortex",
47 => "The Guitarist Amplification",
48 => "The Adhesive Duck Deficiency",
49 => "The Vengeance Formulation",
50 => "The Gorilla Experiment",
51 => "The Maternal Congruence",
52 => "The Psychic Vortex",
53 => "The Bozeman Reaction",
54 => "The Einstein Approximation",
55 => "The Large Hadron Collision",
56 => "The Excelsior Acquisition",
57 => "The Precious Fragmentation",
58 => "The Pants Alternative",
59 => "The Wheaton Recurrence",
60 => "The Spaghetti Catalyst",
61 => "The Plimpton Stimulation",
62 => "The Staircase Implementation",
63 => "The Lunar Excitation",
 
/* Season 4 */
64 => "The Robotic Manipulation",
65 => "The Cruciferous Vegetable Amplification",
66 => "The Zazzy Substitution",
67 => "The Hot Troll Deviation",
68 => "The Desperation Emanation",
69 => "The Irish Pub Formulation",
70 => "The Apology Insufficiency",
71 => "The 21-Second Excitation",
72 => "The Boyfriend Complexity",
73 => "The Alien Parasite Hypothesis",
74 => "The Justice League Recombination",
75 => "The Bus Pants Utilization",
76 => "The Love Car Displacement",
77 => "The Thespian Catalyst",
78 => "The Benefactor Factor",
79 => "The Cohabitation Formulation",
80 => "The Toast Derivation",
81 => "The Prestidigitation Approximation",
82 => "The Zarnecki Incursion",
83 => "The Herb Garden Germination",
84 => "The Agreement Dissection",
85 => "The Wildebeest Implementation",
86 => "The Engagement Reaction",
87 => "The Roommate Transmogrification",
 
/* Season 5 */
88 => "The Skank Reflex Analysis",
89 => "The Infestation Hypothesis",
90 => "The Pulled Groin Extrapolation",
91 => "The Wiggly Finger Catalyst",
92 => "The Russian Rocket Reaction",
93 => "The Rhinitis Revelation",
94 => "The Good Guy Fluctuation",
95 => "The Isolation Permutation",
96 => "The Ornithophobia Diffusion",
97 => "The Flaming Spittoon Acquisition",
98 => "The Speckerman Recurrence",
99 => "The Shiny Trinket Maneuver",
100 => "The Recombination Hypothesis",
101 => "The Beta Test Initiation",
102 => "The Friendship Contraction",
103 => "The Vacation Solution",
104 => "The Rothman Disintegration",
105 => "The Werewolf Transformation",
106 => "The Weekend Vortex",
107 => "The Transporter Malfunction",
108 => "The Hawking Excitation",
109 => "The Stag Convergence",
110 => "The Launch Acceleration",
111 => "The Countdown Reflection",
 
/* Season 6 */
112 => "The Date Night Variable",
113 => "The Decoupling Fluctuation",
114 => "The Higgs Boson Observation",
115 => "The Re-Entry Minimization",
116 => "The Holographic Excitation",
117 => "The Extract Obliteration",
118 => "The Habitation Configuration",
119 => "The 43 Peculiarity",
120 => "The Parking Spot Escalation",
121 => "The Fish Guts Displacement",
122 => "The Santa Simulation",
123 => "The Egg Salad Equivalency",
124 => "The Bakersfield Expedition",
125 => "The Cooper/Kripke Inversion",
126 => "The Spoiler Alert Segmentation",
127 => "The Tangible Affection Proof",
128 => "The Monster Isolation",
129 => "The Contractual Obligation Implementation",
130 => "The Closet Reconfiguration",
131 => "The Tenure Turbulence",
132 => "The Closure Alternative",
133 => "The Proton Resurgence",
134 => "The Love Spell Potential",
135 => "The Bon Voyage Reaction",
 
/* Seasoon 7 */
136 => "The Hofstadter Insufficiency",
137 => "The Deception Verification",
138 => "The Scavenger Vortex",
139 => "The Raiders Minimization",
140 => "The Workplace Proximity",
)
);
 
// $serien['<span class="big-bang-theory"><span class="lower">The</span>'
// . ' B<span class="i">i</span>g <span class="bang">Bang</span>'
// . ' Theory</span> (de)'] = array(
// 'channel' => 'ProSieben / 3+',
// 'showtimes' => 'Mo–Fr 12:20 / Sa 18:55–20:15',
// 'seen' => array(array(1, 9)),
// 'last_seen' => mktime(11, 10, 0, 1, 12, 2011),
// 'seasons' => array(17, 23, 23, 24, 13),
// 'episode_list' => 'wiki:Liste_der_The-Big-Bang-Theory-Episoden',
// 'episodes' => array(
// 1 => "Penny und die Physiker (Pilot)",
// 2 => "Chaos-Theorie (The Big Bran Hypothesis)",
// 3 => "Erregungsfaktor: Null (The Fuzzy Boots Corollary)",
// 4 => "Die Leuchtfisch-Idee (The Luminous Fish Effect)",
// 5 => "Die andere Seite der Krawatte (The Hamburger Postulate)",
// 6 => "Das Mittelerde-Paradigma (The Middle-Earth Paradigm)",
// 7 => "Das Vorspeisen-Dilemma (The Dumpling Paradox)",
// 8 => "Das Lalita-Problem (The Grasshopper Experiment)",
// 9 => "Der Cooper-Hofstadter-Antagonismus (The Cooper-Hofstadter Polarization)",
// 10 => "Loobenfelds Netz der Lügen (The Loobenfeld Decay)",
// 11 => "Alles fließt (The Pancake Batter Anomaly)",
// 12 => "Das Jerusalem-Projekt (The Jerusalem Duality)",
// 13 => "Superbowl für Physiker (The Bat Jar Conjecture)",
// 14 => "Die Zeitmaschine (The Nerdvana Annihilation)",
// 15 => "Sheldon 2.0 (The Pork Chop Indeterminacy)",
// 16 => "Die Erdnuss-Reaktion (The Peanut Reaction)",
// 17 => "Schrödingers Katze (The Tangerine Factor)",
// 18 => "Milch mit Valium (The Bad Fish Paradigm)",
// 19 => "Sex mit der Erzfeindin (The Codpiece Topology)",
// 20 => "Das Conan-Spiel (The Barbarian Sublimation)",
// 21 => "Planet Bollywood (The Griffin Equivalency)",
// 22 => "Homo Novus Automobilis (The Euclid Alternative)",
// 23 => "Das Cooper-Nowitzki Theorem (The Cooper-Nowitzki Theorem)",
// 24 => "Dessous auf der Oberleitung (The Panty Piñata Polarization)",
// 25 => "Stein, Schere, Spock (The Lizard-Spock Expansion)",
// 26 => "Unflotter Dreier (The White Asparagus Triangulation)",
// 27 => "Kleines Gefäß mit Honig (The Vartabedian Conundrum)",
// 28 => "Die Geschenk-Hypothese (The Bath Item Gift Hypothesis)",
// 29 => "Monte, der Roboter (The Killer Robot Instability)",
// 30 => "Der Freundschafts-Algorithmus (The Friendship Algorithm)",
// 31 => "In der Kreditklemme (The Financial Permeability)",
// 32 => "Die Streichelmaschine (The Maternal Capacitance)",
// 33 => "Die Kissen-Katastrophe (The Cushion Saturation)",
// 34 => "Das Placebo-Bier (The Terminator Decoupling)",
// 35 => "Business im Wohnzimmer (The Work Song Nanocluster)",
// 36 => "Der Kampf der Bienenköniginnen (The Dead Hooker Juxtaposition)",
// 37 => "Der Wolowitz-Koeffizient (The Hofstadter Isotope)",
// 38 => "Die Las-Vegas-Kur (The Vegas Renormalization)",
// 39 => "Die Weltraumtoilette (The Classified Materials Turbulence)",
// 40 => "Drei Monate im Eis (The Monopolar Expedition)",
// 41 => "Der Nordpol-Plan (The Electric Can Opener Fluctuation)",
// 42 => "Die Grillenwette (The Jiminy Conjecture)",
// 43 => "Sex oder Pralinen (The Gothowitz Deviation)",
// 44 => "Für ihn oder mit ihm (The Pirate Solution)",
// 45 => "Der Mann, der seine Omi liebte (The Creepy Candy Coating Corollary)",
// 46 => "Football für Nerds (The Cornhusker Vortex)",
// 47 => "Der Gitarrist auf der Couch (The Guitarist Amplification)",
// 48 => "Das Suppentattoo (The Adhesive Duck Deficiency)",
// 49 => "Die Racheformel (The Vengeance Formulation)",
// 50 => "Das Gorilla-Projekt (The Gorilla Experiment)",
// 51 => "Mädels an der Bar (The Maternal Congruence)",
// 52 => "Howards Phasen (The Psychic Vortex)",
// 53 => "Terror in der Stadt der Rosen (The Bozeman Reaction)",
// 54 => "Fast wie Einstein (The Einstein Approximation)",
// 55 => "Freiflug nach Genf (The Large Hadron Collision)",
// 56 => "Sheldon pro se (The Excelsior Acquisition)",
// 57 => "Die Herren des Rings (The Precious Fragmentation)",
// 58 => "Die dunkle Seite des Mondes (The Pants Alternative)",
// 59 => "Das L-Wort (The Wheaton Recurrence)",
// 60 => "Spaghetti mit Würstchen (The Spaghetti Catalyst)",
// 61 => "Vierer ohne Sheldon (The Plimpton Stimulation)",
// 62 => "Die Wahrheit über den Fahrstuhl (The Staircase Implementation)",
// 63 => "Nie mehr dumme Typen (The Lunar Excitation)",
// 64 => "31 Liebhaber, aufgerundet (The Robotic Manipulation)",
// 65 => "Der sicherste Ort der Welt (The Cruciferous Vegetable Amplification)",
// 66 => "Paradoxe Psychologie (The Zazzy Substitution)",
// 67 => "Und jetzt mit Zunge (The Hot Troll Deviation)",
// 68 => "Der Gestank der Verzweiflung (The Desperation Emanation)",
// 69 => "Finger weg von meiner Schwester (The Irish Pub Formulation)",
// 70 => "Besuch vom FBI (The Apology Insufficiency)",
// 71 => "21 Sekunden (The 21-Second Excitation)",
// 72 => "Der falsche richtige Freund (The Boyfriend Complexity)",
// 73 => "Die animalische Amy (The Alien Parasite Hypothesis)",
// 74 => "Der peinliche Kuss (The Justice League Recombination)",
// 75 => "Die Bushose (The Bus Pants Utilization)",
// 76 => "Die neutrale Zone (The Love Car Displacement)",
// 77 => "Ein Traum von Bollywood (The Thespian Catalyst)",
// 78 => "Der Mann der Stunde (The Benefactor Factor)",
// 79 => "Ich bin nicht deine Mutter! (The Cohabitation Formulation)",
// 80 => "Das Juwel von Mumbai (The Toast Derivation)",
// 81 => "Herz zwei (The Prestidigitation Approximation)",
// 82 => "Der Zarnecki-Feldzug (The Zarnecki Incursion)",
// 83 => "Sag’s nicht weiter! (The Herb Garden Germination)",
// 84 => "Souvlaki statt Pizza (The Agreement Dissection)",
// 85 => "Die Antilope im Curry (The Wildebeest Implementation)",
// 86 => "Hochzeit und Herzinfarkt (The Engagement Reaction)",
// 87 => "Männertausch (The Roommate Transmogrification)",
 
// // 88 => "The Skank Reflex Analysis",
// // 89 => "The Infestation Hypothesis",
// // 90 => "The Pulled Groin Extrapolation",
// // 91 => "The Wiggly Finger Catalyst",
// // 92 => "The Russian Rocket Reaction",
// // 93 => "The Rhinitis Revelation",
// // 94 => "The Good Guy Fluctuation",
// // 95 => "The Isolation Permutation",
// // 96 => "The Ornithophobia Diffusion",
// // 97 => "The Flaming Spittoon Acquisition",
// // 98 => "The Speckerman Recurrence",
// // 99 => "The Shiny Trinket Maneuver",
// // 100 => "The Recombination Hypothesis",
// )
// );
/branches/live/media/video/series/includes/remington-steele.php
0,0 → 1,111
<?php
 
$remington_steele = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Mi–Fr 21:00',
// 'seen' => array(array(1, 2)),
// 'last_seen' => mktime(21, 0, 0, 9, 8, 2011),
'seasons' => array(22, 22, 22, 22, 6),
'episodes' => array(
1 => "License to Steele",
2 => "Tempered Steele",
3 => "Steele Waters Run Deep",
4 => "Signed, Steeled, & Delivered",
5 => "Thou Shalt Not Steele",
6 => "Steele Belted",
7 => "Etched in Steele",
8 => "You're Steele the One for Me",
9 => "In the Steele of the Night",
10 => "Steele Trap",
11 => "Steeling the Show",
12 => "Steele Flying High",
13 => "A Good Night's Steele",
14 => "Hearts of Steele",
15 => "To Stop a Steele",
16 => "Steele Crazy After All These Years",
17 => "Steele Among the Living",
18 => "Steele in the News",
19 => "Vintage Steele",
20 => "Steele's Gold",
21 => "Sting of Steele",
22 => "Steele in Circulation",
 
23 => "Steele Away with Me: Part 1",
24 => "Steele Away with Me: Part 2",
25 => "Red Holt Steele",
26 => "Altared Steele",
27 => "Steele Framed",
28 => "A Steele at Any Price",
29 => "Love Among the Steele",
30 => "Scene Steelers",
31 => "Steele Knuckles and Glass Jaws",
32 => "My Fair Steele",
33 => "Steele Threads",
34 => "Steele Eligible",
35 => "High Flying Steele",
36 => "Blood Is Thicker Than Steele",
37 => "Steele Sweet on You",
38 => "Elegy in Steele",
39 => "Small Town Steele",
40 => "Molten Steele",
41 => "Dreams of Steele",
42 => "Woman of Steele",
43 => "Hounded Steele",
44 => "Elementary Steele",
 
45 => "Steele at It",
46 => "Lofty Steele",
47 => "Maltese Steele",
48 => "Second Base Steele",
49 => "Blue Blooded Steele",
50 => "Steele Your Heart Away",
51 => "A Pocketful of Steele",
52 => "Puzzled Steele",
53 => "Cast in Steele",
54 => "Breath of Steele",
55 => "Let's Steele a Plot",
56 => "Gourmet Steele",
57 => "Stronger Than Steele",
58 => "Have I Got a Steele For You",
59 => "Springtime for Steele",
60 => "Steele in the Family",
61 => "Diced Steele",
62 => "Now You Steele It, Now You Don't",
63 => "Illustrated Steele",
64 => "Steele in the Chips",
65 => "Steele Trying",
66 => "Steele of Approval",
 
67 => "Steele Searching: Part 1",
68 => "Steele Searching: Part 2",
69 => "Steele Blushing",
70 => "Grappling Steele",
71 => "Forged Steele",
72 => "Corn Fed Steele",
73 => "Premium Steele",
74 => "Coffee, Tea, or Steele",
75 => "Dancer, Prancer, Donner and Steele",
76 => "Steele on the Air",
77 => "Steele, Inc.",
78 => "Steele Spawning",
79 => "Suburban Steele",
80 => "Santa Claus Is Coming to Steele",
81 => "Steele Blue Yonder",
82 => "Sensitive Steele",
83 => "Steele in the Spotlight",
84 => "Steele at Your Service",
85 => "Steele in the Running",
86 => "Beg, Borrow, or Steele",
87 => "Steele Alive and Kicking",
88 => "Bonds of Steele",
 
89 => "The Steele That Wouldn't Die: Part 1",
90 => "The Steele That Wouldn't Die: Part 2",
91 => "Steele Hanging in There: Part 1",
92 => "Steele Hanging in There: Part 2",
93 => "Steeled with a Kiss: Part 1",
94 => "Steeled with a Kiss: Part 2"
),
'episode_list' => 'wiki:en:List_of_Remington_Steele_episodes'
);
/branches/live/media/video/series/includes/house.php
0,0 → 1,336
<?php
 
$house = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Mo-Fr 12:20',
'seen' => array(array(1, 9), array(12, 13), array(37, 46), 85),
// 'last_seen' => mktime(11, 20, 0, 3, 31, 2011),
'seasons' => array(22, 24, 24, 16, 24, 21, 23, 22),
'episodes' => array(
1 => "Pilot",
2 => "Paternity",
3 => "Occam’s Razor",
4 => "Maternity",
5 => "Damned If You Do",
6 => "The Socratic Method",
7 => "Fidelity",
8 => "Poison",
9 => "DNR",
10 => "Histories",
11 => "Detox",
12 => "Sports Medicine",
13 => "Cursed",
14 => "Control",
15 => "Mob Rules",
16 => "Heavy",
17 => "Role Model",
18 => "Babies & Bathwater",
19 => "Kids",
20 => "Love Hurts",
21 => "Three Stories",
22 => "Honeymoon",
 
23 => "Acceptance",
24 => "Autopsy",
25 => "Humpty Dumpty",
26 => "TB or not TB",
27 => "Daddy’s Boy",
28 => "Spin",
29 => "Hunting",
30 => "The Mistake",
31 => "Deception",
32 => "Failure to Communicate",
33 => "Need to Know",
34 => "Distractions",
35 => "Skin Deep",
36 => "Sex Kills",
37 => "Clueless",
38 => "Safe",
39 => "All In",
40 => "Sleeping Dogs Lie",
41 => "House vs. God",
42 => "Euphoria: Part 1",
43 => "Euphoria: Part 2",
44 => "Forever",
45 => "Who's Your Daddy?",
46 => "No Reason",
 
47 => "Meaning",
48 => "Cane and Able",
49 => "Informed Consent",
50 => "Lines in the Sand",
51 => "Fools for Love",
52 => "Que Será Será",
53 => "Son of a Coma Guy",
54 => "Whac-a-Mole",
55 => "Finding Judas",
56 => "Merry Little Christmas",
57 => "Words and Deeds",
58 => "One Day, One Room",
59 => "Needle in a Haystack",
60 => "Insensitive",
61 => "Half-Wit",
62 => "Top Secret",
63 => "Fetal Position",
64 => "Airborne",
65 => "Act Your Age",
66 => "House Training",
67 => "Family",
68 => "Resignation",
69 => "The Jerk",
70 => "Human Error",
 
71 => "Alone",
72 => "The Right Stuff",
73 => "97 Seconds",
74 => "Guardian Angels",
75 => "Mirror, Mirror",
76 => "Whatever It Takes",
77 => "Ugly",
78 => "You Don’t Want to Know",
79 => "Games",
80 => "It’s a Wonderful Lie",
81 => "Frozen",
82 => "Don’t Ever Change",
83 => "No More Mr. Nice Guy",
84 => "Living the Dream",
85 => "House's Head (1)",
86 => "Wilson’s Heart (2)",
 
87 => "Dying Changes Everything (Sterben verändert alles)",
88 => "Not Cancer (Krebs oder nicht?)",
89 => "Adverse Events",
90 => "Birthmarks",
91 => "Lucky Thirteen",
92 => "Joy",
93 => "The Itch",
94 => "Emancipation",
95 => "Last Resort",
96 => "Let Them Eat Cake",
97 => "Joy to the World",
98 => "Painless",
99 => "Big Baby",
100 => "The Greater Good",
101 => "Unfaithful",
102 => "The Softer Side",
103 => "The Social Contract",
104 => "Here Kitty",
105 => "Locked In",
106 => "Simple Explanation",
107 => "Saviors",
108 => "House Divided",
109 => "Under My Skin",
110 => "Both Sides Now",
 
111 => "Broken",
112 => "Epic Fail",
113 => "The Tyrant",
114 => "Instant Karma",
115 => "Brave Heart",
116 => "Known Unknowns",
117 => "Teamwork",
118 => "Ignorance Is Bliss",
119 => "Wilson",
120 => "The Down Low",
121 => "Remorse",
122 => "Moving the Chains",
123 => "5 to 9",
124 => "Private Lives",
125 => "Black Hole",
126 => "Lockdown",
127 => "Knight Fall",
128 => "Open and Shut",
129 => "The Choice",
130 => "Baggage",
131 => "Help Me",
 
132 => "Now What?",
133 => "Selfish",
134 => "Unwritten",
135 => "Massage Therapy",
136 => "Unplanned Parenthood",
137 => "Office Politics",
138 => "A Pox on Our House",
139 => "Small Sacrifices",
140 => "Larger Than Life",
141 => "Carrot or Stick",
142 => "Family Practice",
143 => "You Must Remember This",
144 => "Two Stories",
145 => "Recession Proof",
146 => "Bombshells",
147 => "Out of the Chute",
148 => "Fall From Grace",
149 => "The Dig",
150 => "Last Temptation",
151 => "Changes",
152 => "The Fix",
153 => "After Hours",
154 => "Moving On",
 
155 => "Twenty Vicodin",
156 => "Transplant",
157 => "Charity Case",
158 => "Risky Business",
159 => "The Confession",
160 => "Parents",
161 => "Dead & Buried",
162 => "Perils of Paranoia",
163 => "Better Half",
164 => "Runaways",
165 => "Nobody's Fault",
166 => "Chase",
167 => "Man of the House",
168 => "Love Is Blind",
169 => "Blowing the Whistle",
170 => "Gut Check",
171 => "We Need the Eggs",
172 => "Body and Soul",
173 => "The C-Word",
174 => "Post Mortem",
175 => "Holding On",
176 => "Everybody Dies + Bonus",
 
),
'episode_list' => 'wiki:en:List_of_House_episodes'
);
 
$house_de = array(
'ignore' => true,
// 'channel' => 'ORF1/RTL/SF2',
'channel' => 'online',
// 'showtimes' => 'diverse',
'seen' => array(array(1, 5), array(7, 11)),
'seasons' => array(22, 24, 24, 16, 24, 22, 23, 22),
'episode_list' => 'wiki:Liste_der_Dr.-House-Episoden',
'episodes' => array(
1 => "Schmerzensgrenzen (Pilot)",
2 => "Falsche Geschichte (Paternity)",
3 => "Das Ende danach? (Occams Razor)",
4 => "Nichts hilft (Maternity)",
5 => "Nur die Braut Christi? (Damned If You Do)",
6 => "Schizophren? (The Socratic Method)",
7 => "Fremd- und nicht gut gegangen (Fidelity)",
8 => "Geiz ist Gift (Poison)",
9 => "Leben wider Willen (DNR)",
10 => "Letzte Suche (Histories)",
11 => "Tod aus der Wand (Detox)",
12 => "Schlechter Boden (Sports Medicine)",
13 => "Vaterfluch (Cursed)",
14 => "Schlank und krank (Control)",
15 => "Solche Leute bitte nicht (Mob Rules)",
16 => "Schönheitsirreale (Heavy)",
17 => "Versteckte Wahrheit (Role Model)",
18 => "Verluste (Babies and Bathwater)",
19 => "Epidemie (Kids)",
20 => "Liebeshiebe (Love Hurts)",
21 => "Drei Beine (Three Stories)",
22 => "Risiken (The Honeymoon)",
 
23 => "Ihr, ich und Hippokrates (Acceptance)",
24 => "Autopsie (Autopsy)",
25 => "Irrtum (Humpty Dumpty)",
26 => "Mehr Sein als Schein (TB or Not TB)",
27 => "Söhne & Väter (Daddy’s Boy)",
28 => "Tanz ums Feuer (Spin)",
29 => "Auf der Jagd (Hunting)",
30 => "Fehlverhalten (The Mistake)",
31 => "Lug und Trug (Deception)",
32 => "Ferndiagnose (Failure to Communicate)",
33 => "Absagen (Need to Know)",
34 => "Resultate mit Geduld (Distractions)",
35 => "Kratzer im Lack (Skin Deep)",
36 => "Sex wird unterschätzt (Sex Kills)",
37 => "Böses Spiel (Clueless)",
38 => "Sicher genug? (Safe)",
39 => "In Not (All In)",
40 => "Wirtswechsel (Sleeping Dogs Lie)",
41 => "Wunderland (House vs. God)",
42 => "Schlechter Scherz – Teil 1 (Euphoria (1))",
43 => "Schlechter Scherz – Teil 2 (Euphoria (2))",
44 => "Ein Problem ist nur das Leben (Forever)",
45 => "Wer wird Vater? (Who’s Your Daddy?)",
46 => "Widerspiel (No Reason)",
 
47 => "Einer gegen alle (Meaning)",
48 => "Zu den Sternen? (Cane & Able)",
49 => "Heimgang (Informed Consent)",
50 => "Sandkastenspiele (Lines in the Sand)",
51 => "Konsequenzen (Fools for Love)",
52 => "Que Será Será (Que Será Será)",
53 => "Koma-Mann & Sohn (Son of a Coma Guy)",
54 => "Zwietracht (Whack-a-Mole)",
55 => "Judas? (Finding Judas)",
56 => "Unfrohes Fest (Merry Little Christmas)",
57 => "Dr. Cuddys große Lüge (Words and Deeds)",
58 => "Zwangsarbeit (One Day, One Room)",
59 => "Wie eine Nadel im Heuhaufen (Needle in a Haystack)",
60 => "Unempfindlich (Insensitive)",
61 => "Heiligt der Zweck jedes Mittel? (Half-Wit)",
62 => "Streng geheim (Top Secret)",
63 => "Erster Kontakt (Fetal Position)",
64 => "Horrorflug (Airborne)",
65 => "Dem Alter entsprechend? (Act Your Age)",
66 => "Sündenbock mit Freunden (House Training)",
67 => "Auf der Kippe (Family)",
68 => "Kündigung (Resignation)",
69 => "Es nerven Groß und Klein (The Jerk)",
70 => "Menschen machen Fehler (Human Error)",
 
71 => "Allein (Alone)",
72 => "Der Stoff, aus dem die Heldin ist (The Right Stuff)",
73 => "97 Sekunden (97 Seconds)",
74 => "Schauplatz der Merkwürdigkeiten (Guardian Angels)",
75 => "Spieglein, Spieglein … (Mirror, Mirror)",
76 => "Auf Biegen und Brechen (Whatever It Takes)",
77 => "Hässlich (Ugly)",
78 => "Blut und Spiele (You Don’t Want to Know)",
79 => "Zu vieles kommt in Frage (Games)",
80 => "Ist das Lügen nicht schön? (It’s a Wonderful Lie)",
81 => "Cate aus dem Eis (Frozen)",
82 => "Schalom, Dr. House? (Don’t Ever Change)",
83 => "Krankhaft nett (No More Mr. Nice Guy)",
84 => "Folgenreich (Living the Dream)",
85 => "Im Kopf von House – Teil 1 (House’s Head (1))",
86 => "Im Herzen von Wilson – Teil 2 (Wilson’s Heart (2))",
 
87 => "Sterben verändert alles (Dying Changes Everything)",
88 => "Krebs oder nicht? (Not Cancer)",
89 => "Anders als erhofft (Adverse Events)",
90 => "Unerwünschte Herkunft (Birthmarks)",
92 => "Endlich Mutter? (Joy)",
 
130 => "Im Nein liegt die Wahrheit (The Choice)",
131 => "Identitäten (Baggage)",
132 => "Hilf mir! (Help Me)",
 
135 => "Mit anderen Worten (Unwritten)",
140 => "Die Last der Lügen (Small Sacrifices)",
141 => "Mutter aus heiterer Hölle (Larger Than Life)",
142 => "Großer Mann, was nun? (Carrot or Stick)",
143 => "Spießrutenlauf (Family Practice)",
144 => "Denke immer daran (You Must Remember This)",
145 => "Fehlerkultur (Two Stories)",
146 => "Beziehungsweise (Recession Proof)",
147 => "Schlag auf Schlag (Bombshells)",
148 => "Schutzlos (Out of the Chute)",
149 => "Ungnade (Fall From Grace)",
150 => "Verschüttete Wahrheiten (The Dig)",
151 => "Masters' letzte Versuchung (Last Temptation)",
152 => "Schneller als die Moral (Changes)",
153 => "Unheilsgeschichten (The Fix)",
154 => "Ärztekummer (After Hours)",
155 => "Entzwei (Moving On)",
 
// 156 => "Twenty Vicodin",
// 157 => "Transplant",
// 158 => "Charity Case",
// 159 => "Risky Business",
// 160 => "The Confession",
// 161 => "Parents",
// 162 => "Dead & Buried",
// 163 => "Perils of Paranoia",
// 164 => "Better Half",
)
);
/branches/live/media/video/series/includes/heroes.php
0,0 → 1,93
<?php
 
$heroes = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Di 04:57',
'seen' => array(array(1, 10)),
// 'last_seen' => mktime(3, 52, 0, 7, 5, 2011),
'seasons' => array(23, 11, 25, 19),
'episode_list' => 'wiki:Liste_der_Heroes-Episoden',
'episodes' => array(
1 => "Genesis",
2 => "Kein Blick zurück (Don't Look Back)",
3 => "Ein gewaltiger Schritt (One Giant Leap)",
4 => "Kollision (Collision)",
5 => "Botschaft aus der Zukunft (Hiros)",
6 => "Das zweite Gesicht (Better Halves)",
7 => "Nichts zu verbergen (Nothing to Hide)",
8 => "Sieben Minuten bis Mitternacht (Seven Minutes to Midnight)",
9 => "Heimkehr (Homecoming)",
10 => "Sechs Monate zuvor (Six Months Ago)",
11 => "Ausgelöscht (Fallout)",
12 => "Gottesgabe (Godsend)",
13 => "Kontrollverlust (The Fix)",
14 => "Ablenkungen (Distractions)",
15 => "Flucht (Run!)",
16 => "Unerwartet (Unexpected)",
17 => "Die Firma (Company Man)",
18 => "Parasit (Parasite)",
19 => "0,07 Prozent (0.07 %)",
20 => "Fünf Jahre später (Five Years Gone)",
21 => "Der Schwierige Teil (The Hard Part)",
22 => "Erdrutsch (Landslide)",
23 => "Wie man einen explodierenden Mann aufhält (How to Stop an Exploding Man)",
 
24 => "Vier Monate später … (Four Months Later …)",
25 => "Eidechsen (Lizards)",
26 => "Verwandte Seelen (Kindred)",
27 => "Der Trost von Fremden (The Kindness of Strangers)",
28 => "Kampf oder Flucht (Fight or Flight)",
29 => "Grenzen (The Line)",
30 => "Zeitenwanderer (Out of Time)",
31 => "Vier Monate zuvor … (Four Months Ago …)",
32 => "Lektionen (Cautionary Tales)",
33 => "Im Bund mit dem Bösen (Truth & Consequences)",
34 => "Machtlos (Powerless)",
 
// 35 => "Die Wiederkunft (The Second Coming)",
// 36 => "Der Schmetterlingseffekt (The Butterfly Effect)",
// 37 => "Einer von uns, einer von ihnen (One of Us, One of Them)",
// 38 => "Tödlicher Hunger (I Am Become Death)",
// 39 => "Engel und Monster (Angels and Monsters)",
// 40 => "Marionetten (Dying of the Light)",
// 41 => "Eris quod sum (Eris Quod Sum)",
// 42 => "Schurken (Villains)",
// 43 => "Zeit der Schatten (It’s Coming)",
// 44 => "Die Sonnenfinsternis, Teil 1 (The Eclipse, Part 1)",
// 45 => "Die Sonnenfinsternis, Teil 2 (The Eclipse, Part 2)",
// 46 => "Vater unser (Our Father)",
// 47 => "Feuer (Dual)",
// 48 => "Unmittelbare Gefahr (A Clear and Present Danger)",
// 49 => "Blut und Vertrauen (Trust and Blood)",
// 50 => "Gebäude 26 (Building 26)",
// 51 => "Kalter Krieg (Cold Wars)",
// 52 => "Bloßgestellt (Exposed)",
// 53 => "Wurzel des Bösen (Shades of Gray)",
// 54 => "Hauch des Todes (Cold Snap)",
// 55 => "Zuflucht (Into Asylum)",
// 56 => "Verwandlungen (Turn and Face the Strange)",
// 57 => "1961 (1961)",
// 58 => "Ich bin Sylar (I Am Sylar)",
// 59 => "Unsichtbare Bedrohung (An Invisible Thread)",
// 60 => "Neubeginn, Teil 1 (Orientation, Part 1)",
// 61 => "Neubeginn, Teil 2 (Orientation, Part 2)",
// 62 => "Tinte (Ink)",
// 63 => "Innerer Frieden (Acceptance)",
// 64 => "Besessen (Hysterical Blindness)",
// 65 => "Tabula Rasa (Tabula Rasa)",
// 66 => "Seltsame Attraktoren (Strange Attractors)",
// 67 => "Es war einmal in Texas (Once Upon a Time in Texas)",
// 68 => "Schattenboxen (Shadowboxing)",
// 69 => "Meines Bruders Hüter (Brother’s Keeper)",
// 70 => "Familienfest (Thanksgiving)",
// 71 => "Die fünfte Phase (The Fifth Stage)",
// 72 => "Das Tal der Hoffnung (Upon This Rock)",
// 73 => "Zerstörte Brücken (Let It Bleed)",
// 74 => "Rettungsmission (Close to You)",
75 => "Verlorene Liebe (Pass/Fail)",
76 => "Die Kunst der Täuschung (The Art of Deception)",
77 => "Die Mauer (The Wall)",
78 => "Der letzte Vorhang (Brave New World)"
)
);
/branches/live/media/video/series/includes/psych.php
0,0 → 1,55
<?php
 
$psych = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'So 07:00',
'seen' => array(array(1, 14)),
// 'last_seen' => mktime(21, 10, 0, 9, 18, 2011),
'seasons' => array(15, 16, 16, 16, 16, 16, 14),
'episodes' => array(
1 => "Pilot (Mit einer Ausrede fängt es an)",
2 => "Spellingg Bee (So spannend kann ein Buchstabierwettbewerb sein!)",
3 => "Speak Now Or Forever Hold Your Piece (Man möge jetzt sprechen … oder für immer schweigen)",
4 => "Woman Seeking Dead Husband – Smokers Okay, No Pets (Attraktive Frau sucht toten Mann zwecks Geldanlage)",
5 => "9 Lives (Katze krallt sich Killer?)",
6 => "Weekend Warriors (Da möchte man in Frieden Bürgerkrieg spielen …)",
7 => "Who Ya Gonna Call? (Ein Geschlechterkampf der etwas anderen Art)",
8 => "Shawn Vs. The Red Phantom (Shawn gegen „Das Rote Phantom“)",
9 => "Forget Me Not (Tiere, Menschen, Endstationen)",
10 => "From the Earth to Starbucks",
11 => "He Loves Me, He Loves Me Not, He Loves Me, Oops He's Dead",
12 => "Cloudy... With a Chance of Murder",
13 => "Game, Set... Muuurder?",
14 => 'Pokerface gegen Pokerface (Poker? I Barely Know Her)',
15 => 'Zimmer 413: Studentinnen des Todes (Scary Sherry: Bianca’s Toast)',
 
16 => 'Wer sucht heim den Star, der sich für super hält? (American Duos)',
17 => 'Waren sie zur Tatzeit bereits ausgestorben? (Sixty Five Million Years Off)',
18 => 'Duell der Hellseher (Psy Vs. Psy)',
19 => 'Pimp My Psych (Zero To Murder In Sixty Seconds)',
20 => 'Pferdefüße beim Pferderennen (And Down The Stretch Comes Murder)',
 
23 => "Kinder sind unsere Zukunft … unsere steinreiche Zukunft!"
. " (Rob-A-Bye Baby)",
24 => "Kopfgeldjägereien (Bounty Hunters!)",
 
34 => "Wann und wie gehen Draufgänger drauf? (Daredevils!)",
35 => "Das größte Abenteuer in der Geschichte des Farbfernsehens"
. " (The Greatest Adventure in the History of Basic Cable)",
36 => "Schwamm drunter und drüber? (Disco Didn’t Die. It Was Murdered!)",
37 => "There Might Be Blood (Verwerfliche Verwerfungen)",
38 => "Derby Talk (Talk Derby to Me)",
39 => "Gus Walks Into a Bank (Als Gus eine Bank betritt …)",
40 => "Es begab sich aber zu der Zeit … viel zu viel! (Christmas Joy)",
41 => "Gemordet wird immer (Six Feet Under the Sea)",
42 => "Böser, böser Lassie (Lassie Did a Bad, Bad Thing)",
43 => "Feuer mit Feuer (Earth, Wind and… Wait for It)",
44 => "Wofür braucht ein Toter auch zwei Füße?"
. " (Any Given Friday Night at 10pm, 9pm Central)",
45 => "Wahrere Lügen (Truer Lies)",
46 => "Dienstag, der 17. (Tuesday the 17th)",
47 => "Ein Abend mit dem geheimnisvollen Mr. Yang (An Evening with Mr. Yang)",
),
'episode_list' => 'wiki:Liste_der_Episoden_von_Psych'
);
/branches/live/media/video/series/includes/numb3rs.php
0,0 → 1,271
<?php
 
$numb3rs = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Mi 00:35',
'seen' => array(array(1, 15)),
// 'last_seen' => mktime(21, 15, 0, 6, 5, 2011),
'seasons' => array(13, 24, 24, 18, 23, 16),
'episode_list' => 'wiki:en:List_of_Numb3rs_episodes',
'episodes' => array(
1 => "Pilot",
2 => "Uncertainty Principle",
3 => "Vector",
4 => "Structural Corruption",
5 => "Prime Suspect",
6 => "Sabotage",
7 => "Counterfeit Reality",
8 => "Identity Crisis",
9 => "Sniper Zero",
10 => "Dirty Bomb",
11 => "Sacrifice",
12 => "Noisy Edge",
13 => "Man Hunt",
 
14 => "Judgment Call",
15 => "Better or Worse",
16 => "Obsession",
17 => "Calculated Risk",
18 => "Assassin",
19 => "Soft Target",
20 => "Convergence",
21 => "In Plain Sight",
22 => "Toxin",
23 => "Bones of Contention",
24 => "Scorched",
25 => "The OG",
26 => "Double Down",
27 => "Harvest",
28 => "The Running Man",
29 => "Protest",
30 => "Mind Games",
31 => "All´s Fair",
32 => "Dark Matter",
33 => "Guns and Roses",
34 => "Rampage",
35 => "Backscatter",
36 => "Undercurrents",
37 => "Hot Shot",
 
38 => "Spree",
39 => "Two Daughters",
40 => "Provenance",
41 => "The Mole",
42 => "Traffic",
43 => "Longshot",
44 => "Blackout",
45 => "Hardball",
46 => "Waste Not",
47 => "Brutus",
48 => "Killer Chat",
49 => "Nine Wives",
50 => "Finders Keepers",
51 => "Take Out",
52 => "End of Watch",
53 => "Contenders",
54 => "One Hour",
55 => "Democracy",
56 => "Pandora´s Box",
57 => "Burn Rate",
58 => "The Art of Reckoning",
59 => "Under Pressure",
60 => "Money For Nothing",
61 => "The Janus List",
 
62 => "Trust Metric",
63 => "Hollywood Homicide",
64 => "Velocity",
65 => "Thirteen",
66 => "Robin Hood",
67 => "In Security",
68 => "Primacy",
69 => "Tabu",
70 => "Graphic",
71 => "Chinese Box (27.04.2011)",
72 => "Breaking Point",
73 => "Power (04.05.2011)",
74 => "Black Swan",
75 => "Checkmate (11.05.2011)",
76 => "End Game",
77 => "Atomic No. 33 (18.05.2011)",
78 => "Pay to Play (24.05.2011)",
79 => "When Worlds Collide (25.05.2011)",
 
80 => "High Exposure (10.01.2012)",
81 => "Decoy Effect (01.06.2011)",
82 => "Blowback (17.01.2011)",
83 => "Jack of All Trades (08.06.2011)",
84 => "Scan Man",
85 => "Magic Show",
86 => "Charlie Don't Surf",
87 => "Thirty-Six Hours (22.06.2011)",
88 => "Conspiracy Theory",
89 => "Frienemies (29.06.2011)",
90 => "Arrow of Time (06.07.2011)",
91 => "Jacked (13.07.2011)",
92 => "Trouble In Chinatown (20.07.2011)",
93 => "Sneakerhead (27.07.2011)",
94 => "Guilt Trip",
95 => "Cover Me",
96 => "First Law",
97 => "12:01 AM",
98 => "Animal Rites",
99 => "The Fifth Man",
100 => "Disturbed",
101 => "Greatest Hits",
102 => "Angel and Devils",
 
103 => "Hangman",
104 => "Friendly Fire",
105 => "7 Men Out",
106 => "Where Credit's Due",
107 => "Hydra",
108 => "Dreamland",
109 => "Shadow Markets",
110 => "Ultimatum",
111 => "Con Job",
112 => "Old Soldiers",
113 => "Scratch",
114 => "Arm in Arms",
115 => "Devil Girl",
116 => "And The Winner Is...",
117 => "Growin' Up (20.12.2011)",
118 => "Cause and Effect (21.12.2011)",
)
);
 
$numb3rs_de = array(
// 'ignore' => true,
'channel' => 'online / Kabel 1',
'showtimes' => 'Sa 23:05',
'seen' => array(1), //110, 111),
// 'last_seen' => mktime(21, 15, 0, 6, 5, 2011),
'seasons' => array(13, 24, 24, 18, 23, 16),
'episode_list' => 'wiki:Numb3rs#Episodenliste',
'episodes' => array(
1 => "Brandzeichen (Pilot)",
2 => "Bankräuber (Uncertainty Principle)",
3 => "Vektor (Vector)",
4 => "Konstruktionsfehler (Structural Corruption)",
5 => "Primzahlen (Prime Suspect)",
6 => "Sabotage (Sabotage)",
7 => "Blütenzauber (Counterfeit Reality)",
8 => "Identitätskrise (Identity Crisis)",
9 => "Hinterhalt (Sniper Zero)",
10 => "Radioaktiv (Dirty Bomb)",
11 => "Chancengleichheit (Sacrifice)",
12 => "UFO (Noisy Edge)",
13 => "Menschenjagd (Man Hunt)",
 
14 => "Nach eigenem Ermessen (Judgment Call)",
15 => "Spiel des Lebens (Better or Worse)",
16 => "Der Stalker (Obsession)",
17 => "Kalkuliertes Risiko (Calculated Risk)",
18 => "Das Attentat (Assassin)",
19 => "Weiches Ziel (Soft Target)",
20 => "Konvergenz (Convergence)",
21 => "Vor aller Augen (In Plain Sight)",
22 => "Giftig (Toxin)",
23 => "Knochen des Anstoßes (Bones of Contention)",
24 => "Brandstiftung (Scorched)",
25 => "Das Dominoprinzip (The OG)",
26 => "Doppelter Einsatz (Double Down)",
27 => "Blutige Ernte (Harvest)",
28 => "Der Läufer (The Running Man)",
29 => "Protest (Protest)",
30 => "Das zweite Gesicht (Mind Games)",
31 => "Im Krieg und in der Liebe (All´s Fair)",
32 => "Dunkle Materie (Dark Matter)",
33 => "Guns´n´Roses (Guns and Roses)",
34 => "Die vierte Dimension (Rampage)",
35 => "Backscatter (Backscatter)",
36 => "Vogelgrippe (Undercurrents)",
37 => "Ein Teufelskerl (Hot Shot)",
 
38 => "Verfolgungskurven (Spree)",
39 => "Töchter (Two Daughters)",
40 => "Die Überlebende (Provenance)",
41 => "Der Maulwurf (The Mole)",
42 => "Ampeln (Traffic)",
43 => "Wettkönig (Longshot)",
44 => "Blackout (Blackout)",
45 => "Die Doping-Formel (Hardball)",
46 => "Giftmüll (Waste Not)",
47 => "Brutus (Brutus)",
48 => "Gefährlicher Chat (Killer Chat)",
49 => "Neun Frauen (Nine Wives)",
50 => "Schatzsuche (Finders Keepers)",
51 => "Kapital à la Carte (Take Out)",
52 => "Aus nächster Nähe (End of Watch)",
53 => "Harte Bandagen (Contenders)",
54 => "Nur eine Stunde (One Hour)",
55 => "Keine Wahl (Democracy)",
56 => "Blackbox (Pandora´s Box)",
57 => "Tödliche Post (Burn Rate)",
58 => "Trügerische Erinnerung (The Art of Reckoning)",
59 => "Die Zelle (Under Pressure)",
60 => "Unter Geiern (Money For Nothing)",
61 => "Die Janus-Liste (The Janus List)",
 
62 => "Vertrauen gegen Vertrauen (Trust Metric)",
63 => "Falsche Zwillinge (Hollywood Homicide)",
64 => "Raser (Velocity)",
65 => "Kreuzweg (Thirteen)",
66 => "Robin Hood in L.A. (Robin Hood)",
67 => "Zeugenschutz (In Security)",
68 => "Primacy (Primacy)",
69 => "Reich und schön (Tabu)",
70 => "Comic-Helden (Graphic)",
71 => "Abwärts (Chinese Box)",
72 => "Entführt, verfolgt (Breaking Point)",
73 => "In Uniform (Power)",
74 => "Der schwarze Schwan (Black Swan)",
75 => "Schachmatt (Checkmate)",
76 => "Endspiel (End Game)",
77 => "Die Sekte (Atomic No. 33)",
78 => "Todesmelodie (Pay to Play)",
79 => "Auf eigenes Risiko (When Worlds Collide)",
 
80 => "Abgestürzt (High Exposure)",
81 => "Der Lockvogel-Effekt (Decoy Effect)",
82 => "Der dritte Mann (Blowback)",
83 => "Der netteste Kerl der Welt (Jack of All Trades)",
84 => "Scan Man (Scan Man)",
85 => "Tödliche Illusion (Magic Show)",
86 => "Der Weg der Wellen (Charlie Don't Surf)",
87 => "36 Stunden (Thirty-Six Hours)",
88 => "Mann im Schatten (Conspiracy Theory)",
89 => "Hassliebe (Frienemies)",
90 => "Der Pfeil der Zeit (Arrow of Time)",
91 => "Der Bus (Jacked)",
92 => "Die Macht der Acht (Trouble In Chinatown)",
93 => "Sneakerhead",
94 => "Fehler im System (Guilt Trip)",
95 => "Markt und Marke (Cover Me)",
96 => "Die Erfindung der Zukunft (First Law)",
97 => "Eine Minute nach Mitternacht (12:01 AM)",
98 => "Gequälte Kreatur (Animal Rites)",
99 => "Ein Mann zu viel (The Fifth Man)",
100 => "Jäger aus dem Dunkel (Disturbed)",
101 => "Wiedergutmachung (Greatest Hits)",
102 => "Engel und Teufel (Angel and Devils)",
 
103 => "Der Heckenschütze (Hangman)",
104 => "Friendly Fire (Friendly Fire)",
105 => "Blutroulette (7 Men Out)",
106 => "Wie im Film (Where Credit's Due)",
107 => "Der Klon (Hydra)",
108 => "Dreamland (Dreamland)",
109 => "Der Hacker (Shadow Markets)",
110 => "Ultimatum (Ultimatum)",
111 => "Buckleys Spiel (Con Job)",
112 => "Alte Krieger (Old Soldiers)",
113 => "Hauptgewinn (Scratch)",
114 => "Der Händler des Todes (Arm in Arms)",
115 => "Huren und Helden (Devil Girl)",
116 => "Stars und Sterne (And The Winner Is...)",
117 => "Story ohne Helden (Growin' Up)",
118 => "Es gibt keinen Zufall (Cause and Effect)",
)
);
/branches/live/media/video/series/includes/seaquest.php
0,0 → 1,58
<?php
 
$seaQuest = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Mo–Fr 18:00–18:30',
'seen' => array(array(1, 8)),
// 'last_seen' => mktime(18, 30, 0, 9, 6, 2011),
'seasons' => array(23, 21, 13),
'episodes' => array(
1 => "To Be or Not to Be (Pilot) / The Nathan Bridger Incident",
2 => "Games (Vereist in alle Ewigkeit)",
3 => "Tödliche Gene (Give Me Liberté)",
4 => "Brothers and Sisters (Die vergessenen Kinder)",
5 => "Der Teufelsgraben (The Devil's Window)",
6 => "Das versunkene Wissen (Treasures of the Mind)",
7 => "Treasures of the Tonga Trench",
8 => "Knight of Shadows",
9 => "Bad Water",
10 => "The Regulator",
11 => "seaWest",
12 => "Photon Bullet",
13 => "Better Than Martians",
14 => "Nothing But the Truth",
15 => "Greed For a Pirate's Dream",
16 => "Whale Song",
17 => "Hide and Seek",
18 => "The Last Lap at Luxury",
19 => "The Stinger",
20 => "Abalon",
21 => "Such Great Patience",
22 => "The Good Death",
23 => "Higher Power/An Ocean on Fire",
 
24 => "Daggers",
25 => "The Fear That Follows",
26 => "Sympathy For the Deep",
27 => "Playtime",
28 => "Special Delivery",
29 => "The Sincerest Form of Flattery",
30 => "Vapors",
31 => "By Any Other Name",
32 => "When We Dead Awaken",
33 => "Dead End",
34 => "Meltdown",
35 => "Lostland",
36 => "And Everything Nice",
37 => "Watergate",
38 => "Dream Weaver",
39 => "Alone",
40 => "Something in the Air",
41 => "Dagger Redux",
42 => "The Siamese Dream",
43 => "Blindsided",
44 => "Splashdown"
),
'episode_list' => 'wiki:en:List_of_seaQuest_DSV_episodes'
);
/branches/live/media/video/series/includes/superman.php
0,0 → 1,456
<?php
 
$smallville = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Mo-Fr 14:10',
'seen' => array(array(1, 27)),
'seasons' => array(21, 23, 22, 22, 22, 22, 20, 22, 21, 22),
'episode_list' => 'wiki:en:List_of_Smallville_episodes',
'episodes' => array(
1 => 'Pilot',
2 => 'Metamorphosis',
3 => 'Hothead',
4 => 'X-Ray',
5 => 'Cool',
6 => "Hourglass",
7 => "Craving",
8 => "Jitters",
9 => "Rogue",
10 => "Shimmer",
11 => "Hug",
12 => "Leech",
13 => "Kinetic",
14 => "Zero",
15 => "Nicodemus",
16 => "Stray",
17 => "Reaper",
18 => "Drone",
19 => "Crush",
20 => "Obscura",
21 => "Tempest",
 
22 => "Vortex",
23 => "Heat",
24 => "Duplicity",
25 => "Red",
26 => "Nocturne",
27 => "Redux",
28 => "Lineage",
29 => "Ryan",
30 => "Dichotic",
31 => "Skinwalker",
32 => "Visage",
33 => "Insurgence",
34 => "Suspect",
35 => "Rush",
36 => "Prodigal",
37 => "Fever",
38 => "Rosetta",
39 => "Visitor",
40 => "Precipice",
41 => "Witness",
42 => "Accelerate",
43 => "Calling",
44 => "Exodus",
 
// 153 1 "Odyssey" Kevin G. Fair Kelly Souders, Brian Peterson, Todd Slavkin & Darren Swimmer September 18, 2008 3T7451 4.34[97]
// 154 2 "Plastique" Rick Rosenthal Don Whitehead & Holly Henderson September 25, 2008 3T7452 4.18[98]
// 155 3 "Toxic" Mairzee Almas Caroline Dries October 2, 2008 3T7453 4.05[99]
// 156 4 "Instinct" James Conway Al Septien & Turi Meyer October 9, 2008 3T7454 4.11[100]
// 157 5 "Committed" Glen Winter Bryan Q. Miller October 16, 2008 3T7455 4.18[101]
// 158 6 "Prey" Michael Rohl Kelly Souders & Brian Peterson October 23, 2008 377456 4.15[102]
// 159 7 "Identity"
160 => "Bloodline",
161 => "Abyss",
// 162 10 "Bride" Jeannot Szwarc Al Septien & Turi Meyer November 20, 2008 3T7460 4.18[106]
// 163 11 "Legion" Glen Winter Geoff Johns January 15, 2009 3T7461 4.29[107]
// 164 12 "Bulletproof" Morgan Beggs Bryan Miller January 22, 2009 3T7462 3.85[108]
// 165 13 "Power" Allison Mack Todd Slavkin & Darren Swimmer January 29, 2009 3T7463 4.21[109]
// 166 14 "Requiem" Michael Rohl Don Whitehead & Holly Henderson February 5, 2009 3T7464 3.93[110]
// 167 15 "Infamous" Glen Winter Caroline Dries March 12, 2009 3T7465 3.56[111]
// 168 16 "Turbulence" Kevin G. Fair Al Septien & Turi Meyer March 19, 2009 3T7466 3.49[112]
// 169 17 "Hex" Mairzee Almas Bryan Miller March 26, 2009 3T7467 3.79[113]
// 170 18 "Eternal" James Marshall Brian Peterson & Kelly Souders April 2, 2009 3T7468 3.84[114]
// 171 19 "Stiletto" Kevin G. Fair Caroline Dries April 23, 2009 3T7469 3.10[115]
// 172 20 "Beast" Michael Rohl Genevieve Sparling April 30, 2009 3T7470 3.23[116]
// 173 21 "Injustice" Tom Welling Al Septien & Turi Meyer May 7, 2009 3T7471 3.39[117]
// 174 22 "Doomsday"
 
// 175 => "Savior",
176 => "Metallo",
177 => "Rabid",
178 => "Echo",
179 => "Roulette",
180 => "Crossfire",
181 => "Kandor",
182 => "Idol",
183 => "Pandora",
184 => "Disciple",
185 => "Absolute Justice",
186 => "Warrior",
187 => "Persuasion",
188 => "Conspiracy",
189 => "Escape",
190 => "Checkmate",
191 => "Upgrade",
192 => "Charade",
193 => "Sacrifice",
194 => "Hostage",
195 => "Salvation",
 
196 => "Lazarus",
197 => "Shield",
198 => "Supergirl",
199 => "Homecoming",
200 => "Isis",
201 => "Harvest",
202 => "Ambush",
203 => "Abandoned",
204 => "Patriot",
205 => "Luthor",
206 => "Icarus",
207 => "Collateral",
208 => "Beacon",
209 => "Masquerade",
210 => "Fortune",
211 => "Scion",
212 => "Kent",
213 => "Booster",
214 => "Dominion",
215 => "Prophecy",
216 => "Finale, Part 1",
217 => "Finale, Part 2",
)
);
 
$smallville_de = array(
'ignore' => true,
'channel' => 'Tele&nbsp;5 / RTL&nbsp;II',
'showtimes' => 'Mo-Fr 15:05 / Do 00:30',
'seen' => array(array(1, 18)),
'last_seen' => mktime(17, 10, 0, 4, 21, 2011),
'seasons' => array(21, 23, 22, 22, 22, 22, 20, 22, 21, 22),
'episode_list' => 'wiki:Liste_der_Smallville-Episoden',
'episodes' => array(
1 => 'Nicht von dieser Welt (Pilot)',
2 => 'Häutung bei Vollmond (Metamorphosis)',
3 => 'Feuerball (Hothead)',
4 => 'Ich sehe was, was Du nicht bist (X-Ray)',
5 => 'Schockgefroren! (Cool)',
6 => 'Blinde Augen sehen mehr (Hourglass)',
7 => 'Zum Fressen gern (Craving)',
8 => 'Körperbeben (Jitters)',
9 => 'Von Mit- und Besserwissern (Rogue)',
10 => 'Hollow Boy (Shimmer)',
11 => 'Zum Teufel mit dem Willen anderer (Hug)',
12 => 'Plötzlich verletzlich (Leech)',
13 => 'Ab durch die Wand! (Kinetic)',
14 => 'Schlechte Leute, einst wie heute (Zero)',
15 => 'Blütenterror (Nicodemus)',
16 => 'Wie ein kleiner Bruder (Stray)',
17 => 'Nur die Asche bleibt zurück (Reaper)',
18 => 'Clark Kent for President! (Drone)',
19 => 'Tele-Kill-Nese (Crush)',
20 => 'Das letzte Stück zur Wahrheit (Obscura)',
21 => 'Als der Sturm kam (Tempest (1))',
 
22 => "Seh’ die Welt in Trümmern liegen (Vortex (2))",
23 => "Heiß! (Heat)",
24 => "Raumschiff verzweifelt gesucht (Duplicity)",
25 => "Wahnsinnsrot (Red)",
26 => "Byron und sein Hyde (Nocturne)",
27 => "Ich atme ein, die Jugend dein! (Redux)",
28 => "Mütter, Väter, nur Verräter? (Lineage)",
29 => "Ryan",
30 => "Eigenkopie (Dichotic)",
31 => "Höhlengeheimnis (Skinwalker)",
32 => "Was ist bloß mit Whitney los? (Visage)",
33 => "Metropolis Report (Insurgence)",
34 => "Wer schoss auf Lionel Luthor? (Suspect)",
35 => "Blutparasit (Rush)",
36 => "Triple Luthor (Prodigal)",
37 => "Zeitpunkt des Todes: 02.17 Uhr (Fever)",
38 => "Kal-El von Krypton (Rosetta)",
39 => "Alien 2? (Visitor) (24.05.2011 17:05 Tele 5)",
40 => "Viel Arbeit für den neuen Sheriff (Precipice)",
41 => "Abgedampft (Witness)",
42 => "Geisterjäger (Accelerate)",
43 => "Für immer … (Calling (1))",
44 => "… nach Hause? (Exodus (2))",
 
45 => "Verschollen (Exile)",
46 => "Phoenix",
47 => "Gejagt! (Extinction)",
48 => "Nur geträumt? (Slumber)",
49 => "Perry White (Perry)",
50 => "Smallville 1961 (Relic)",
51 => "Anziehend (Magnetic)",
52 => "Schizophren! (Shattered)",
53 => "Irrsinn! (Asylum)",
54 => "Flüstern (Whisper)",
55 => "Befehle (Delete)",
56 => "Todesvision (Hereafter)",
57 => "Limit (Velocity)",
58 => "So wie ich? (Obsession)",
59 => "Lebenselixier (Resurrection)",
60 => "Amok (Crisis)",
61 => "Schlüsselmomente (Legacy)",
62 => "Sag’ die Wahrheit (Truth)",
63 => "Lara & Lillian (Memoria)",
64 => "Der Mann, der einst vom Himmel fiel? (Talisman)",
65 => "Der Anfang … (Forsaken (1))",
66 => "… vom Ende (Covenant (2))",
 
67 => "Lana & Lois (Crusade)",
68 => "Das leere Grab (Gone)",
69 => "OP/TIK (Facade)",
70 => "Kuschelmonster (Devoted)",
71 => "Flash! (Run)",
72 => "Im Körper des Feindes (Transference)",
73 => "Regeln des Spiels (Jinx)",
74 => "Die Nacht der 3 (Spell)",
75 => "Mutter aus Leidenschaft (Bound)",
76 => "Angstgase (Scare)",
77 => "Ja, ich will … nicht (Unsafe)",
78 => "Augenzeugin (Pariah)",
79 => "Lahmgelegt (Recruit)",
80 => "Krypto",
81 => "Isabelle reloaded (Sacred)",
82 => "Hoppla Lucy (Lucy)",
83 => "Lex gegen Lex! (Onyx)",
84 => "(Small)willenlos (Spirit)",
85 => "Noch mal mit Gefühl (Blank)",
86 => "Eintagseltern (Ageless)",
87 => "School of Wax (Forever)",
88 => "Armageddon (Commencement)",
 
89 => "Gelandet! (Arrival)",
90 => "Ein Mensch zu sein (Mortal)",
91 => "Wiedergeburt (Hidden)",
// 92  4  Aquaman Aqua 20. Okt. 2005 23. Sep. 2006
// 93  5  Schwarze Schwestern Thirst 27. Okt. 2005 30. Sep. 2006
// 94  6  Verbrechen verführt Exposed 3. Nov. 2005 30. Sep. 2006
// 95  7  Silberwahn Splinter 10. Nov. 2005 7. Okt. 2006
// 96  8  Kryptons dunkle Seite Solitude 17. Nov. 2005 7. Okt. 2006
// 97  9  Santa Clark Lexmas 8. Dez. 2005 14. Okt. 2006
// 98  10  Lex gegen Jonathan Fanatic 12. Jan. 2006 14. Okt. 2006
// 99  11  Zeugen der Ankunft Lockdown 19. Jan. 2006 28. Okt. 2006
// 100  12  Was ich tat, tat ich aus Liebe Reckoning 26. Jan. 2006 4. Nov. 2006
// 101  13  Nichts mehr, wie es war Vengeance 2. Feb. 2006 11. Nov. 2006
// 102  14  Unruhe der Toten Tomb 9. Feb. 2006 18. Nov. 2006
// 103  15  Cyborg Cyborg 16. Feb. 2006 25. Nov. 2006
// 104  16  Dressiert Hypnotic 30. Mär. 2006 2. Dez. 2006
// 105  17  Jenseitstrip Void 6. Apr. 2006 9. Dez. 2006
// 106  18  Scherben Fragile 13. Apr. 2006 16. Dez. 2006
// 107  19  Höllenspiel Mercy 20. Apr. 2006 30. Dez. 2006
// 108  20  Dankbarkeitsmord Fade 27. Apr. 2006 13. Jan. 2007
// 109  21  Töte ihn! Oracle 4. Mai 2006 20. Jan. 2007
// 110  22  Untergang Vessel 11. Mai 2006 27. Jan. 2007
 
// 111  1  Verbannt in die Phantomzone Zod 28. Sep. 2006 1. Dez. 2007
// 112  2  Luft-Waffe Sneeze 5. Okt. 2006 1. Dez. 2007
// 113  3  Mörderpflanzen Wither 12. Okt. 2006 8. Dez. 2007
// 114  4  Green Arrow Arrow 19. Okt. 2006 8. Dez. 2007
// 115  5  Klassensterben Reunion 26. Okt. 2006 15. Dez. 2007
// 116  6  Raya vom Krypton Fallout 2. Nov. 2006 15. Dez. 2007
// 117  7  Mit Pfeil und Kugel Rage 9. Nov. 2006 22. Dez. 2007
// 118  8  Frequenzwechsel Static 16. Nov. 2006 22. Dez. 2007
// 119  9  Unterdrückungsmechanismen Subterranean 7. Dez. 2006 5. Jan. 2008
// 120  10  Mit allen Wassern gewaschen Hydro 11. Jan. 2007 5. Jan. 2008
// 121  11  Justice League Justice 18. Jan. 2007 2. Feb. 2008
// 122  12  Vergiss dein nicht Labyrinth 25. Jan. 2007 2. Feb. 2008
// 123  13  Alle lieben Clark Crimson 1. Feb. 2007 9. Feb. 2008
// 124  14  Beschützerinstinkt Trespass 8. Feb. 2007 9. Feb. 2008
// 125  15  Freakville Freak 15. Feb. 2007 16. Feb. 2008
// 126  16  Teufelshochzeit Promise 15. Mär. 2007 23. Feb. 2008
// 127  17  Fightclub Combat 22. Mär. 2007 23. Feb. 2008
// 128  18  Mutterseelenallein Progeny 19. Apr. 2007 1. Mär. 2008
// 129  19  Mein Feind, der Freund Nemesis 26. Apr. 2007 1. Mär. 2008
// 130  20  Episode Noir Noir 3. Mai 2007 8. Mär. 2008
// 131  21  Prototyp Prototype 10. Mai 2007 8. Mär. 2008
// 132  22  Phantom der Opfer Phantom
 
// 133  1  Alter Ego Bizarro 27. Sep. 2007 17. Sep. 2008
// 134  2  Familienbesuch Kara 4. Okt. 2007 24. Sep. 2008
// 135  3  Eiskalt erwischt Fierce 11. Okt. 2007 1. Okt. 2008
// 136  4  Unsterbliche Liebe Cure 18. Okt. 2007 8. Okt. 2008
// 137  5  Wahre Helden Action 25. Okt. 2007 15. Okt. 2008
// 138  6  Erinnerung an Lara Lara 1. Nov. 2007 22. Okt. 2008
// 139  7  Rachefeldzug Wrath 8. Nov. 2007 29. Okt. 2008
// 140  8  Zor-El Blue 15. Nov. 2007 5. Nov. 2008
// 141  9  Gemini-Projekt Gemini 13. Dez. 2007 12. Nov. 2008
// 142  10  Brainiacs Rückkehr Persona 31. Jan. 2008 19. Nov. 2008
// 143  11  Blonde Sirene Siren 7. Feb. 2008 26. Nov. 2008
// 144  12  Im Kopf des Feindes Fracture 14. Feb. 2008 3. Dez. 2008
// 145  13  Alte Freunde Hero 13. Mär. 2008 10. Dez. 2008
// 146  14  Der Reisende Traveler 20. Mär. 2008 17. Dez. 2008
// 147  15  Das Medaillon Veritas 27. Mär. 2008 7. Jan. 2009
148 => "Sturz in den Abgrund (Descent)",
149 => "Der Spion, der mich liebte (Sleeper)",
// 150  18  Weltuntergang Apocalypse 1. Mai 2008 28. Jan. 2009
// 151  19  Das Veritas-Vermächtnis Quest 8. Mai 2008 4. Feb. 2009
// 152  20  Außer Kontrolle Arctic
 
// 153  1  Odyssey Odyssey 18. Sep. 2008 16. Jan. 2010
// 154  2  Feuerteufel Plastique 25. Sep. 2008 16. Jan. 2010
// 155  3  Vergiftet Toxic 2. Okt. 2008 23. Jan. 2010
// 156  4  Seelengefährten Instinct 9. Okt. 2008 23. Jan. 2010
// 157  5  Liebesprüfung Committed 16. Okt. 2008 30. Jan. 2010
// 158  6  Schattenmörder Prey 23. Okt. 2008 30. Jan. 2010
// 159  7  Identität Identity 30. Okt. 2008 27. Feb. 2010
// 160  8  Sohn des Zod Bloodline 6. Nov. 2008 6. Mär. 2010
// 161  9  Amnesie Abyss 13. Nov. 2008 13. Mär. 2010
// 162  10  Entführung der Braut Bride 20. Nov. 2008 20. Mär. 2010
// 163  11  Die Legion Legion 15. Jan. 2009 27. Mär. 2010
// 164  12  Selbstjustiz Bulletproof 22. Jan. 2009 3. Apr. 2010
// 165  13  Macht Power 29. Jan. 2009 10. Apr. 2010
// 166  14  Requiem Requiem 5. Feb. 2009 17. Apr. 2010
167 => "Schatten des Ruhms (Infamous)",
168 => "Absturz (Turbulence)",
// 169  17  Wenn Wünsche wahr werden Hex 26. Mär. 2009 15. Mär. 2010
// 170  18  Das Monster in mir Eternal 2. Apr. 2009 22. Mär. 2010
// 171  19  Heldin in High-Heels Stiletto 23. Apr. 2009 29. Mär. 2010
// 172  20  Chloes Entscheidung Beast 30. Apr. 2009 5. Juni 2010
// 173  21  Geheimarmee Injustice 7. Mai 2009 12. Juni 2010
// 174  22  Doomsday Doomsday 14. Mai 2009 19. Juni 2010
 
// 175  1  Last der Verantwortung Savior 25. Sep. 2009 1. Juni 2011
// 176  2  Metallo Metallo 2. Okt. 2009 8. Juni 2011
177 => "Todesvirus (Rabid)",
178 => "Offene Rechnungen (Echo)",
180 => "Blind Date (Crossfire)",
185 => "Helden der Vergangenheit (Absolute Justice)",
186 => "Die Geburt eines Schurken (Warrior)",
187 => "Hypnose wider Willen (Persuasion)",
188 => "Verschwörung (Conspiracy)",
189 => "Der Geist aus der Unterwelt (Escape)",
190 => "Checkmate",
191 => "Metallos Rückkehr (Upgrade)",
192 => "Phantombild (Charade)",
193 => "Gefangen im Wachturm (Sacrifice)",
// 194  20  Die Rote Königin Hostage 7. Mai 2010 13. Okt. 2011
// 195  21  Erlösung Salvation 14. Mai 2010 20. Okt. 2011
 
// 196  1  — Lazarus 24. Sep. 2010 —
// 197  2  — Shield 1. Okt. 2010 —
// 198  3  — Supergirl 8. Okt. 2010 —
// 199  4  — Homecoming 15. Okt. 2010 —
// 200  5  — Isis 22. Okt. 2010 —
// 201  6  — Harvest 29. Okt. 2010 —
// 202  7  — Ambush 5. Nov. 2010 —
// 203  8  — Abandoned 12. Nov. 2010 —
// 204  9  — Patriot 19. Nov. 2010 —
// 205  10  — Luthor 3. Dez. 2010 —
// 206  11  — Icarus 10. Dez. 2010 —
// 207  12  — Collateral 4. Feb. 2011 —
// 208  13  — Beacon 11. Feb. 2011 —
// 209  14  — Masquerade 18. Feb. 2011 —
// 210  15  — Fortune 25. Feb. 2011 —
// 211  16  — Scion 4. Mär. 2011 —
// 212  17  — Kent 15. Apr. 2011 —
// 213  18  — Booster 22. Apr. 2011 —
// 214  19  — Dominion 29. Apr. 2011 —
// 215  20  — Prophecy 6. Mai 2011 —
// 216  21  — Finale (1) 13. Mai 2011 —
// 217  22  — Finale (2) 13. Mai 2011 —
)
);
 
$superman = array(
'ignore' => true,
'seasons' => array(21, 22, 22, 22),
'episode_list' => 'wiki:en:List_of_Lois_%26_Clark:_The_New_Adventures_of_Superman_episodes',
'episodes' => array(
1 => "Pilot",
2 => "Strange Visitor (From Another Planet)",
3 => "Neverending Battle",
4 => "I'm Looking Through You",
5 => "Requiem for a Super Hero",
6 => "I've Got a Crush on You",
7 => "Smart Kids",
8 => "The Green, Green Glow of Home",
9 => "The Man of Steel Bars",
10 => "Pheromone, My Lovely",
11 => "Honeymoon in Metropolis",
12 => "All Shook Up",
13 => "Witness",
14 => "Illusions of Grandeur",
15 => "The Ides of Metropolis",
16 => "Foundling",
17 => "The Rival",
18 => "Vatman",
19 => "Fly Hard",
20 => "Barbarians at the Planet",
21 => "The House of Luthor",
 
22 => "Madame Ex",
23 => "Wall of Sound",
24 => "The Source",
25 => "The Prankster",
26 => "Church of Metropolis",
27 => "Operation Blackout",
28 => "That Old Gang of Mine",
29 => "A Bolt From the Blue",
30 => "Season's Greedings",
31 => "Metallo",
32 => "Chi of Steel",
33 => "The Eyes Have It",
34 => "The Phoenix",
35 => "Top Copy",
36 => "Return of the Prankster",
37 => "Lucky Leon",
38 => "Resurrection",
39 => "Tempus Fugitive",
40 => "Target: Jimmy Olsen!",
41 => "Individual Responsibility",
42 => "Whine, Whine, Whine",
43 => "And the Answer Is…",
 
44 => "We Have a Lot to Talk About",
45 => "Ordinary People",
46 => "Contact",
47 => "When Irish Eyes Are Killing",
48 => "Just Say Noah",
49 => "Don't Tug on Superman's Cape",
50 => "Ultra Woman",
51 => "Chip Off the Old Clark",
52 => "Super Mann",
53 => "Virtually Destroyed",
54 => "Home Is Where the Hurt Is",
55 => "Never on Sunday",
56 => "The Dad Who Came In From the Cold",
57 => "Tempus, Anyone?",
58 => "I Now Pronounce You...",
59 => "Double Jeopardy",
60 => "Seconds",
61 => "Forget Me Not",
62 => "Oedipus Wrecks",
63 => "It's a Small World After All",
64 => "Through a Glass, Darkly",
65 => "Big Girls Don't Fly",
 
66 => "Lord of the Flys",
67 => "Battleground Earth",
68 => "Swear to God, This Time We're Not Kidding",
69 => "Soul Mates",
70 => "Brutal Youth",
71 => "The People vs. Lois Lane",
72 => "Dead Lois Walking",
73 => "Bob and Carol and Lois and Clark",
74 => "Ghosts",
75 => "Stop the Presses",
76 => "Twas the Night Before Mxymas",
77 => "Lethal Weapon",
78 => "Sex, Lies and Videotape",
79 => "Meet John Doe",
80 => "Lois and Clarks",
81 => "AKA Superman",
82 => "Faster than a Speeding Vixen ",
83 => "Shadow of a Doubt",
84 => "Voice from the Past",
85 => "I've Got You Under My Skin",
86 => "Toy Story",
87 => "The Family Hour",
)
);
/branches/live/media/video/series/includes/frasier.php
0,0 → 1,116
<?php
 
$frasier = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Mo–Fr 09:25',
'seen' => array(array(1, 33)),
// 'last_seen' => mktime(9, 30, 0, 9, 21, 2011),
'seasons' => array(24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24),
'episode_list' => 'wiki:en:List_of_Frasier_episodes',
'episodes' => array(
1 => "The Good Son",
2 => "Space Quest",
3 => "Dinner at Eight",
4 => "I Hate Frasier Crane",
5 => "Here's Looking at You",
6 => "The Crucible",
7 => "Call Me Irresponsible",
8 => "Beloved Infidel",
9 => "Selling Out",
10 => "Oops!",
11 => "Death Becomes Him",
12 => "Miracle On Third Or Fourth Street",
13 => "Guess Who's Coming to Breakfast?",
14 => "Can't Buy Me Love",
15 => "You Can't Tell a Crook By His Cover",
16 => "The Show Where Lilith Comes Back",
17 => "A Mid-Winter Night's Dream",
18 => "And the Whimper Is…",
19 => "Give Him the Chair!",
20 => "Fortysomething",
21 => "Travels With Martin",
22 => "Author, Author",
23 => "Frasier Crane's Day Off",
24 => "My Coffee With Niles",
 
/* Season 2 */
25 => "Slow Tango in South Seattle",
26 => "The Unkindest Cut of All",
27 => "The Matchmaker",
28 => "Flour Child",
29 => "Duke's, We Hardly Knew Ye",
30 => "The Botched Language of Cranes",
31 => "The Candidate",
32 => "Adventures in Paradise - Part One",
33 => "Adventures in Paradise - Part Two",
34 => "Burying a Grudge",
35 => "Seat of Power",
36 => "Roz in the Doghouse",
37 => "Retirement Is Murder",
38 => "Fool Me Once, Shame on You, Fool Me Twice",
39 => "You Scratch My Book",
40 => "The Show Where Sam Shows Up",
41 => "Daphne's Room (14.10.2011 09:30)",
42 => "The Club",
43 => "Someone to Watch Over Me",
44 => "Breaking the Ice",
45 => "An Affair to Forget",
46 => "Agents in America",
47 => "The Innkeepers",
48 => "Dark Victory (25.10.2011)",
 
/* Season 3 */
49 => "She's the Boss",
50 => "Shrink Rap",
51 => "Martin Does It His Way",
52 => "Leapin' Lizards",
53 => "Kisses Sweeter Than Wine",
54 => "Sleeping With the Enemy",
55 => "The Adventures of Bad Boy and Dirty Girl",
56 => "The Last Time I Saw Maris",
57 => "Frasier Grinch",
58 => "It's Hard to Say Goodbye If You Won't Leave",
59 => "The Friend",
60 => "Come Lie With Me",
61 => "Moon Dance",
62 => "The Show Where Diane Comes Back",
63 => "A Word to the Wiseguy",
64 => "Look Before You Leap",
65 => "High Crane Drifter",
66 => "Chess Pains",
67 => "Crane vs. Crane",
68 => "Police Story",
69 => "Where There's Smoke, There's Fired",
70 => "Frasier Loves Roz",
71 => "The Focus Group",
72 => "You Can Go Home Again",
 
// № # Title Directed by Written by Original air date
// 73 1 "The Two Mrs. Cranes" David Lee Joe Keenan September 17, 1996 (1996-09-17)
// 74 2 "Love Bites Dog" Jeff Melman Suzanne Martin September 24, 1996 (1996-09-24)
// 75 3 "The Impossible Dream" David Lee Rob Greenberg October 15, 1996 (1996-10-15)
// 76 4 "A Crane's Critique" Jeff Melman Dan Cohen & F.J. Pratt October 22, 1996 (1996-10-22)
// 77 5 "Head Game" David Lee Rob Greenberg November 12, 1996 (1996-11-12)
// 78 6 "Mixed Doubles" Jeff Melman Christopher Lloyd November 19, 1996 (1996-11-19)
// 79 7 "A Lilith Thanksgiving" Jeff Melman Chuck Ranberg & Anne Flett-Giordano November 26, 1996 (1996-11-26)
// 80 8 "Our Father Whose Art Ain't Heaven" Jeff Melman Michael Kaplan December 9, 1996 (1996-12-09)
// 81 9 "Dad Loves Sherry, the Boys Just Whine" James Burrows Joe Keenan January 7, 1997 (1997-01-07)
// 82 10 "Liar! Liar!" James Burrows Chuck Ranberg & Anne Flett-Giordano January 14, 1997 (1997-01-14)
// 83 11 "Three Days of the Condo" David Lee Michael Kaplan January 21, 1997 (1997-01-21)
// 84 12 "Death and the Dog" James Burrows Suzanne Martin February 11, 1997 (1997-02-11)
// 85 13 "Four For the Seesaw" Jeff Melman David Lloyd February 18, 1997 (1997-02-18)
// 86 14 "To Kill a Talking Bird" David Lee Jeffrey Richman February 25, 1997 (1997-02-25)
// 87 15 "Roz's Krantz and Gouldenstein Are Dead" Jeff Melman William Lucas Walker March 11, 1997 (1997-03-11)
// 88 16 "The Unnatural" Pamela Fryman Michael Kaplan April 1, 1997 (1997-04-01)
// 89 17 "Roz's Turn" Joyce Gittlin Joe Keenan April 15, 1997 (1997-04-15)
// 90 18 "Ham Radio" David Lee David Lloyd April 22, 1997 (1997-04-22)
// 91 19 "Three Dates and a Break Up (Part 1)" Jeff Melman Rob Greenberg April 29, 1997 (1997-04-29)
// 92 20 "Three Dates and a Break Up (Part 2)" Jeff Melman Rob Greenberg April 29, 1997 (1997-04-29)
// 93 21 "Daphne Hates Sherry" Kelsey Grammer Chuck Ranberg & Anne Flett-Giordano May 6, 1997 (1997-05-06)
// 94 22 "Are You Being Served?" Gordon Hunt William Lucas Walker May 13, 1997 (1997-05-13)
// 95 23 "Ask Me No Questions" Jeff Melman Dan Cohen & F.J. Pratt May 20, 1997 (1997-05-20)
// 96 24 "Odd Man Out" Jeff Melman Suzanne Martin May 20, 1997 (1997-05-20)
 
)
);
/branches/live/media/video/series/includes/efc.php
0,0 → 1,127
<?php
 
$efc = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Mo–Fr 16:10',
'seen' => array(array(1, 14)),
// 'last_seen' => mktime(16, 15, 0, 7, 6, 2011),
'seasons' => array(22, 22, 22, 22, 22),
'episode_list' => 'http://www.allnew-tv.de/sites/episodenguide/efc/season/01/episode/01',
'episodes' => array(
1 => "Im Griff der Taelons (Decision)",
2 => "Bittere Wahrheit (Truth)",
3 => "Wunderheilung (Miracle)",
4 => "Avatar",
5 => "Der Feind im Bett (Old Flame)",
6 => "Das Geheimnis der Schmetterlinge (Float Like A Butterfly)",
7 => "Palastrevolution (Resurrection)",
8 => "Hinter dem Horizont (Horizon Zero)",
9 => "Außer Kontrolle (Scorpion's Dream)",
10 => "Entführt (Live Free Or Die)",
11 => "Das Geheimnis der Vogelscheuche (The Scarecrow Returns)",
12 => "Amoklauf (Sandoval's Run) (14.07.2011 16:10)",
13 => "Das keltische Grabmal (The Secret Of Strand Hill)",
14 => "Die Büchse der Pandora (Pandora's Box)",
15 => "Botschaft aus vergangener Zeit (If You Could Read My Mind)",
16 => "Tödlicher Virus (The Wrath Of Archilles)",
17 => "Vertrauter Feind (The Devil You Know)",
18 => "Der Prozeß (Law and Order)",
19 => "Das Zeitfenster (Through the Looking Glass)",
20 => "Die Epidemie (Infection)",
21 => "Russisches Roulette (Destruction)",
22 => "Fremdkörper (The Joining)",
 
23 => "Der Erste seiner Art (First Of Its Kind)",
24 => "Atavus",
25 => "Die vierte Dimension (A Stitch In Time)",
26 => "Die Spiegelwelt (Dimension)",
27 => "Dem Tode geweiht (Moonscape)",
28 => "Der tiefe Schlaf (The Sleepers)",
29 => "Parasiten (Fissures)",
30 => "Das letzte Tribunal (Redemption)",
31 => "Zwischen den Welten (Isabel)",
32 => "Selbstversuch (Between Heaven And Hell)",
33 => "Der Jaridian (The Gauntlet)",
34 => "Menschmaschinen (One Man's Castle)",
35 => "Zweite Chance (Second Chances)",
36 => "Späte Rache (Payback)",
37 => "Kamikaze (Friendly Fire)",
38 => "Schattenkrieger (Volunteers)",
39 => "Unter Drogen (Bliss)",
40 => "Die Entführung (Hijacked)",
41 => "Die Vertrauensfrage (Defectors)",
42 => "Die Wunderwaffe (Heroes And Heartbreak)",
43 => "Kosmische Flaschenpost (Message In A Bottle)",
44 => "Der Todesstoss (Crossfire)",
 
45 => "Ausnahmezustand (Crackdown)",
46 => "Spurlos (The Vanished)",
47 => "Das Substrat (Emancipation)",
48 => "Die totale Erinnerung (Déjà Vu)",
49 => "Das Königsgrab (Once And Future World)",
50 => "Blutsverwandte (Thicker Than Blood)",
51 => "Die neue Generation (A Little Bit Of Heaven)",
52 => "Das Spiel (Pa'dar)",
53 => "Camouflage (In Memory)",
54 => "Das Kloster (The Cloiser)",
55 => "Showtime (Interview)",
56 => "Liebe Deinen Feind (Keep Your Enemies Closer)",
57 => "Die Agentin (Subterfuge)",
58 => "Verbrannte Erde (Scorched Earth)",
59 => "Den Tod im Leib (Sanctuary)",
60 => "Mit aller Macht (Through Your Eyes)",
61 => "Zeitbombe (Time Bomb)",
62 => "Götterdämmerung (The Fields)",
63 => "Die Erscheinung (Apparition)",
64 => "Außer Kontrolle (One Taelon Avenue)",
65 => "Der geheimnisvolle Code (Code Abduction)",
66 => "Notlandung (The Arrival)",
 
67 => "Die Bombe tickt (The Forge of Creation)",
68 => "Illegale Geschäfte (Sins Of The Father)",
69 => "Der Klon (First Breath)",
70 => "Energieverlust (Limbo)",
71 => "Goldfieber (Motherlode)",
72 => "Selbstmordkommando (Take No Prisoners)",
73 => "Die zweite Welle (Second Wave)",
74 => "Gefühlstransfer (Essence)",
75 => "Der Beschützer (Phantom Companion)",
76 => "Tödliche Träume (Dream Stalker)",
77 => "Die Klon-Fabrik (Lost Generation)",
78 => "Der Doppelgänger (The Summit)",
79 => "Dunkle Materie (Dark Matter)",
80 => "Schlüssel zum Leben (Keys to the Kingdom)",
81 => "Die sechste Dimension (Street Chase)",
82 => "Die Zeitfalle (Trapped by Time)",
83 => "Der Verrat (Atonement)",
84 => "Fremdenergie (Blood Ties)",
85 => "Der Schattenmann (Hearts and Minds)",
86 => "Das Orakel der Kimera (Epiphany)",
87 => "Die zweite Invasion (Dark Horizon)",
88 => "Die Verschmelzung (Point Of No Return)",
 
89 => "Unearthed",
90 => "Pariahs",
91 => "The Seduction",
92 => "Subterra",
93 => "Boone's Awakening",
94 => "Termination",
95 => "Guilty Conscience",
96 => "Boone's Assassin",
97 => "Entombed",
98 => "Legacy",
99 => "Death Suite",
100 => "Atavus High",
101 => "Deep Sleep",
102 => "Art Of War",
103 => "Grave Danger",
104 => "Deportation",
105 => "Honor And Duty",
106 => "Bad Genes",
107 => "Subversion",
108 => "Street Wise",
109 => "The Journey",
110 => "Final Conflict",
)
);
/branches/live/media/video/series/includes/moonlighting.php
0,0 → 1,82
<?php
 
$moonlighting = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Mi–Fr 21:00',
'seen' => array(1),
// 'last_seen' => mktime(21, 0, 0, 9, 8, 2011),
'seasons' => array(6, 18, 15, 14, 13),
'episodes' => array(
1 => "Pilot",
2 => "Gunfight at the So-So Corral",
3 => "Read the Mind... See the Movie",
4 => "The Next Murder You Hear",
5 => "Next Stop Murder",
6 => "The Murder's in the Mail",
7 => "Brother, Can You Spare a Blonde?",
8 => "The Lady in the Iron Mask",
9 => "Money Talks – Maddie Walks",
10 => "The Dream Sequence Always Rings Twice",
11 => "My Fair David",
12 => "Knowing Her",
13 => "Somewhere Under the Rainbow",
14 => "Portrait of Maddie",
15 => "Atlas Belched",
16 => "Twas the Episode Before Christmas",
17 => "The Bride of Tupperman",
18 => "North by North DiPesto",
19 => "In God We Strongly Suspect",
20 => "Every Daughter's Father Is a Virgin",
21 => "Witness for the Execution",
22 => "Sleep Talkin' Guy",
23 => "Funeral for a Door Nail",
24 => "Camille",
 
25 =>"The Son Also Rises",
26 =>"The Man Who Cried Wife",
27 =>"Symphony in Knocked Flat",
28 =>"Yours, Very Deadly",
29 =>"All Creatures Great and... Not So Great",
30 =>"Big Man on Mulberry Street",
31 =>"Atomic Shakespeare",
32 =>"It's a Wonderful Job",
33 =>"The Straight Poop",
34 => "Poltergeist III – Dipesto Nothing",
35 => "Blonde on Blonde",
36 => "Sam & Dave",
37 => "Maddie's Turn to Cry",
38 => "I Am Curious... Maddie",
39 => "To Heiress Human",
 
40 => "A Trip to the Moon",
41 => "Come Back Little Shiksa",
42 => "Take a Left at the Altar",
43 => "Tale in Two Cities",
44 => "Cool Hand Dave (Part 1)",
45 => "Cool Hand Dave (Part 2)",
46 => "Father Knows Last",
47 => "Los Dos DiPestos",
48 => "Fetal Attraction",
49 => "Tracks of My Tears",
50 => "Eek! A Spouse!",
51 => "Maddie Hayes Got Married",
52 => "Here's Living With You, Kid",
53 => "And the Flesh Was Made Word",
 
54 => "A Womb With a View",
55 => "Between a Yuk and a Hard Place",
56 => "The Color of Maddie",
57 => "Plastic Fantastic Lovers",
58 => "Shirts and Skins",
59 => "Take My Wife, For Example",
60 => "I See England, I See France, I See Maddie's Netherworld",
61 => "Those Lips, Those Lies",
62 => "Perfetc",
63 => "When Girls Collide",
64 => "In 'n Outlaws",
65 => "Eine Kleine Nacht Murder",
66 => "Lunar Eclipse"
),
'episode_list' => 'wiki:en:List_of_Moonlighting_episodes'
);
/branches/live/media/video/series/includes/scrubs.php
0,0 → 1,300
<?php
 
$scrubs = array(
// 'ignore' => true,
'channel' => 'E4',
'showtimes' => 'Mo–Fr 18:00–18:30',
'seen' => array(array(1, 24)),
'last_seen' => mktime(18, 30, 0, 9, 6, 2011),
'seasons' => array(24, 22, 22, 25, 24, 22, 11, 19, 13),
'episodes' => array(
1 => "My First Day",
2 => "My Mentor",
3 => "My Best Friend’s Mistake",
4 => "My Old Lady",
5 => "My Two Dads",
6 => "My Bad",
7 => "My Super Ego",
8 => "My Fifteen Minutes",
9 => "My Day Off",
10 => "My Nickname",
11 => "My Own Personal Jesus",
12 => "My Blind Date",
13 => "My Balancing Act",
14 => "My Drug Buddy",
15 => "My Bed Banter & Beyond",
16 => "My Heavy Meddle",
17 => "My Student",
18 => "My Tuscaloosa Heart",
19 => "My Old Man",
20 => "My Way or the Highway",
21 => "My Sacrificial Clam",
22 => "My Occurrence (1)",
23 => "My Hero (2)",
24 => "My Last Day",
 
25 => "My Overkill",
26 => "My Nightingale",
27 => "My Case Study",
28 => "My Big Mouth",
29 => "My New Coat",
30 => "My Big Brother",
31 => "My First Step",
32 => "My Fruit Cups",
33 => "My Lucky Day",
34 => "My Monster",
35 => "My Sex Buddy",
36 => "My New Old Friend",
37 => "My Philosophy",
38 => "My Brother, My Keeper",
39 => "His Story",
40 => "My Karma",
41 => "My Own Private Practice Guy",
42 => "My T.C.W.",
43 => "My Kingdom",
44 => "My Interpretation",
45 => "My Drama Queen",
46 => "My Dream Job",
 
47 => "My Own American Girl",
48 => "My Journey",
49 => "My White Whale",
50 => "My Lucky Night",
51 => "My Brother, Where Art Thou?",
52 => "My Advice to You",
53 => "My Fifteen Seconds",
54 => "My Friend the Doctor",
55 => "My Dirty Secret",
56 => "My Rule of Thumb",
57 => "My Clean Break",
58 => "My Catalyst",
59 => "My Porcelain God",
60 => "My Screw Up",
61 => "My Tormented Mentor",
62 => "My Butterfly",
63 => "My Moment of Un-Truth",
64 => "His Story II",
65 => "My Choosiest Choice of All",
66 => "My Fault",
67 => "My Self-Examination",
68 => "My Best Friend’s Wedding",
 
69 => "My Old Friend's New Friend",
70 => "My Office",
71 => "My New Game",
72 => "My First Kill",
73 => "Her Story",
74 => "My Cake",
75 => "My Common Enemy",
76 => "My Last Chance",
77 => "My Malpractical Decision (1)",
78 => "My Female Trouble (2)",
79 => "My Unicorn",
80 => "My Best Moment",
81 => "My Ocardial Infarction",
 
130 => "My Scrubs",
 
141 => "My Hard Labor",
142 => "My Inconvenient Truth",
),
'episode_list' => 'wiki:en:List_of_Scrubs_episodes'
);
 
$scrubs_de = array(
'ignore' => true,
'channel' => 'ProSieben',
'showtimes' => 'Mo–Fr 15:30',
'seen' => array(array(1, 16)),
'last_seen' => mktime(14, 55, 0, 9, 8, 2011),
'seasons' => array(24, 22, 22, 25, 24, 22, 11, 19, 13),
'episode_list' => 'wiki:Liste_der_Scrubs-Episoden',
'episodes' => array(
1 => "Mein erster Tag (My First Day)",
2 => "Mein Mentor (My Mentor)",
3 => "Mein Kunstfehler (My Best Friend’s Mistake)",
4 => "Meine Lieblingspatientin (My Old Lady)",
5 => "Meine Vorbilder (My Two Dads)",
6 => "Mein Pech (My Bad)",
7 => "Mein Konkurrent (My Super Ego)",
8 => "Meine fünfzehn Minuten als Held (My Fifteen Minutes)",
9 => "Mein freier Tag (My Day Off)",
10 => "Mein Spitzname (My Nickname)",
11 => "Mein Weihnachtswunder (My Own Personal Jesus)",
12 => "Mein Date aus der Röhre (My Blind Date)",
13 => "Meine zweite Chance (My Balancing Act)",
14 => "Meine Alex (My Drug Buddy)",
15 => "Meine Beziehung (My Bed Banter & Beyond)",
16 => "Meine Melone (My Heavy Meddle)",
17 => "Mein Student (My Student)",
18 => "Mein schlimmster Fall (My Tuscaloosa Heart)",
19 => "Mein alter Herr (My Old Man)",
20 => "Mein Freund, der Chirurg (My Way or the Highway)",
21 => "Mein größtes Opfer (My Sacrificial Clam)",
22 => "Meine Zweifel (My Occurrence (1))",
23 => "Mein Held (My Hero (2))",
24 => "Mein letzter Tag (My Last Day)",
 
25 => "Mein Rundumschlag (My Overkill)",
26 => "Mein Nachtdienst (My Nightingale)",
27 => "Mein Ticket nach Reno (My Case Study)",
28 => "Meine große Klappe (My Big Mouth)",
29 => "Mein Kittel (My New Coat)",
30 => "Mein großer Bruder (My Big Brother)",
31 => "Mein erster Schritt (My First Step)",
32 => "Mein Pudding (My Fruit Cups)",
33 => "Mein Glückstag (My Lucky Day)",
34 => "Mein Monster (My Monster)",
35 => "Meine Bettbeziehung (My Sex Buddy)",
36 => "Meine neue alte Freundin (My New Old Friend)",
37 => "Meine Theorie (My Philosophy)",
38 => "Mein modernes Wissen (My Brother, My Keeper)",
39 => "Seine Geschichte (His Story)",
40 => "Mein Karma (My Karma)",
41 => "Mein Coach (My Own Private Practice Guy)",
42 => "Meine scharfe Koma-Braut (My T.C.W.)",
43 => "Mein Größenwahn (My Kingdom)",
44 => "Meine Interpretation (My Interpretation)",
45 => "Mein Drama (My Drama Queen)",
46 => "Mein Traumjob (My Dream Job)",
 
47 => "Mein drittes Jahr (My Own American Girl)",
48 => "Meine neue Ära (My Journey)",
49 => "Mein Berater (My White Whale)",
50 => "Mein Stolz (My Lucky Night)",
51 => "Mein großer Fehler (My Brother, Where Art Thou?)",
52 => "Mein Handtaschentrick (My Advice to You)",
53 => "Meine fünfzehn Sekunden (My Fifteen Seconds)",
54 => "Meine Kollegin (My Friend the Doctor)",
55 => "Mein Verzicht (My Dirty Secret)",
56 => "Meine Regeln (My Rule of Thumb)",
57 => "Mein sauberer Abgang (My Clean Break)",
58 => "Mein Katalysator (My Catalyst)",
59 => "Meine Offenbarung (My Porcelain God)",
60 => "Meine Schuld (My Screw Up)",
61 => "Meine sexistischen Kollegen (My Tormented Mentor)",
62 => "Mein Schmetterling (My Butterfly)",
63 => "Meine Freundin Carla (My Moment of Un-Truth)",
64 => "Mein Freund Turk (His Story II)",
65 => "Meine kniffligste Entscheidung (My Choosiest Choice of All)",
66 => "Meine wahren Gefühle (My Fault)",
67 => "Mein Rückzieher (My Self-Examination)",
68 => "Mein bester Freund heiratet (My Best Friend’s Wedding)",
 
69 => "Meine Psychiaterin (My Old Friend’s New Friend)",
70 => "Meine Beförderung (My Office)",
71 => "Meine Schmach (My New Game)",
72 => "Meine Begegnung mit dem Tod (My First Kill)",
73 => "Ihre Geschichte (Her Story)",
74 => "Meine Trauer (My Cake)",
75 => "Mein hollywoodreifer Auftritt (My Common Enemy)",
76 => "Meine einmalige Chance (My Last Chance)",
77 => "Mein Spiel mit dem Feuer (My Malpractical Decision)",
78 => "Meine Hexe (My Female Trouble)",
79 => "Mein Einhorn (My Unicorn)",
80 => "Mein bester Moment (My Best Moment)",
81 => "Mein Absturz (My Ocardial Infarction)",
82 => "Mein Partner (My Lucky Charm)",
83 => "Mein Eid (My Hypocritical Oath)",
84 => "Meine Lügen (My Quarantine)",
85 => "Meine Sitcom (My Life in Four Cameras)",
86 => "Meine Mitbewohner (My Roommates)",
87 => "Mein Kuchen (My Best Laid Plans)",
88 => "Mein Chef mal anders (My Boss’s Free Haircut)",
89 => "Meine Lippen sind versiegelt (My Lips Are Sealed)",
90 => "Meine Maßnahme (My Big Move)",
91 => "Mein Glaube an die Menschheit (My Faith in Humanity)",
92 => "Meine Kollegen, die Egozentriker (My Drive-By)",
93 => "Mein Schokobär (My Changing Ways)",
 
94 => "Mein Aufstieg (My Intern’s Eyes)",
95 => "Mein Sinn für Humor (My Rite of Passage)",
// 96 => "Mein Triathlon (My Day At The Races)",
// 97 => "Meine Laudatio (My Jiggly Ball)",
// 98 => "Mein neuer Gott (My New God)",
// 99 => "Mein falscher Rückschluss (My Missed Perception)",
// 100 => "Mein Weg nach Hause (My Way Home)",
// 101 => "Mein Recht auf ein Dankeschön (My Big Bird)",
// 102 => "Mein kleiner Tollpatsch (My Half-Acre)",
// 103 => "Meine Therapie (Her Story II)",
// 104 => "Mein Kummer (My Buddy’s Booty)",
// 105 => "Mein Schützling (My Cabbage (1))",
// 106 => "Mein Leidensgenosse (My Five Stages (2))",
// 107 => "Mein Walkie Talkie (My Own Personal Hell)",
// 108 => "Meine wunderschönen Haare (My Extra Mile)",
// 109 => "Meine clevere Idee (My Bright Idea)",
// 110 => "Mein Bleistift (My Chopped Liver)",
// 111 => "Meine Aufrichtigkeit (My New Suit)",
// 112 => "Mein Freund, der Hausmeister (His Story III)",
// 113 => "Mein Mittagessen mit Cox (My Lunch)",
// 114 => "Mein gefallenes Idol (My Fallen Idol)",
// 115 => "Mein Déjà vu (My Déjà Vu)",
// 116 => "Mein neuer Schwarm (My Urologist)",
// 117 => "Mein perfektes Date (My Transition (1))",
// 118 => "Mein Spiegelbild (My Mirror Image (2))",
// 119 => "Mein Baby und sein Baby (My Best Friend’s Baby’s Baby and My Baby’s Baby)",
// 120 => "Mein Kaffee (My Coffee)",
// 121 => "Mein Dr. House (My House)",
// 122 => "Mein Neid (My Friend With Money)",
// 123 => "Mein Musical (My Musical)",
// 124 => "Meine streitsüchtigen Kollegen (His Story IV)",
// 125 => "Meine Spritztour (My Road to Nowhere)",
// 126 => "Mein Durchhänger (My Perspective)",
// 127 => "Meine Abmachung (My Therapeutic Month)",
// 128 => "Meine Erinnerungen (My Night To Remember)",
// 129 => "Mein Goldfischglas (My Fishbowl)",
// 130 => "Meine neuen Klamotten (My Scrubs)",
// 131 => "Mein scharfes Kindermädchen (My No Good Reason (1))",
// 132 => "Meine Patenschaft (My Long Goodbye (2))",
// 133 => "Mein tauber Patient (My Words of Wisdom)",
// 134 => "Meine Nebendarsteller (Their Story)",
// 135 => "Meine Eifersucht (My Turf War)",
// 136 => "Meine kalte Dusche (My Cold Shower)",
// 137 => "Meine Reise nach Phoenix (My Conventional Wisdom)",
// 138 => "Mein Kaninchen (My Rabbit)",
// 139 => "Meine Zukunft (My Point Of No Return)",
// 140 => "Mein voller Durchblick (My Own Worst Enemy)",
// 141 => "Meine schwere Geburt (My Hard Labor)",
// 142 => "Mein Erwachsenwerden (My Inconvenient Truth)",
// 143 => "Meine Eselsbrücken (My Identity Crisis)",
// 144 => "Mein inneres Kind (My Growing Pains)",
// 145 => "Meine Tabellenführung (My #1 Doctor)",
// 146 => "Meine Wasserbomben (My Bad Too)",
// 147 => "Mein Leben als Mann (My Manhood)",
// 148 => "Meine Dusel-Diagnose (My Dumb Luck)",
// 149 => "Mein neuer Chef (My Waste of Time)",
// 150 => "Mein Märchen (My Princess)",
// 151 => "Meine Vollidioten (My Jerks)",
// 152 => "Mein bester Fall (My Last Words)",
// 153 => "Mein Polizeistaat (My Saving Grace)",
// 154 => "Meine alte Flamme (My Happy Place)",
// 155 => "Meine Sesamstraße (My ABC’s)",
// 156 => "Meine tolle Liebesnacht (My Cookie Pants)",
// 157 => "Meine neue Rolle (My New Role)",
// 158 => "Mein verliebter Anwalt (My Lawyer's In Love)",
// 159 => "Meine Handy-Stimme (My Absence)",
// 160 => "Mein Brusthaar (My Comedy Show)",
// 161 => "Meine sprechenden Hände (My Nah Nah Nah)",
// 162 => "Meine Beliebtheit (Their Story II)",
// 163 => "Mein Vollmond (My Full Moon)",
// 164 => "Mein Bahamas, Teil 1 (My Soul On Fire, Part 1)",
// 165 => "Mein Bahamas, Teil 2 (My Soul On Fire, Part 2)",
// 166 => "Mein Chefchirurg (My Cuz)",
// 167 => "Meine 37 Minuten (My Chief Concern)",
// 168 => "Mein Finale, Teil 1 (My Finale, Part 1)",
// 169 => "Mein Finale, Teil 2 (My Finale, Part 2)",
// 170 => "Unsere erste Vorlesung (Our First Day of School)",
// 171 => "Unser Trinkerfreund (Our Drunk Friend)",
// 172 => "Unsere Vorbilder (Our Role Models)",
// 173 => "Unsere letzten Geschichten (Our Histories)",
// 174 => "Unsere Blutsauger (Our Mysteries)",
// 175 => "Unsere Besten (Our New Girl-Bro)",
// 176 => "Unsere weißen Kittel (Our White Coats)",
// 177 => "Unsere schrägen Paare (Our Couples)",
// 178 => "Unser Babymoon (Our Stuff Gets Real)",
// 179 => "Unser Spickzettel (Our True Lies)",
// 180 => "Unsere Höllenwoche (Our Dear Leaders)",
// 181 => "Unsere Fahrkünste (Our Driving Issues)",
// 182 => "Unser Dankeschön (Our Thanks)",
)
);
/branches/live/media/video/series/includes/charmed.php
0,0 → 1,198
<?php
 
$charmed = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Do 21:50',
'seen' => array(array(1, 22)),
// 'last_seen' => mktime(8, 10, 0, 10, 20, 2011),
'seasons' => array(22, 22, 22, 22, 23, 23, 22, 22),
'episode_list' => 'http://www.tvsi.de/mysteryserien/charmed.php',
'episodes' => array(
1 => "Something Wicca This Way Comes (Das Buch der Schatten)",
2 => "I've Got You Under My Skin (Teuflische Augen)",
3 => "Thank You For Not Morphing (Die Formwandler)",
4 => "Dead Man Dating (Rendezvous mit einem Geist)",
5 => "Dream Sorcerer (Tödliche Träume)",
6 => "Wedding From Hell (Höllenhochzeit)",
7 => "The Fourth Sister (Schwester der Nacht)",
8 => "The Truth is Out There... and It Hurts (Der Wahrheitszauber)",
9 => "The Witch Is Back (Rückkehr aus dem Jenseits)",
10 => "Wicca Envy (Machtlos)",
11 => "Feats of Clay (Der Fluch der Urne)",
12 => "The Wendigo (Wendigo)",
13 => "From Fear To Eternity (Liebe ist die stärkste Macht)",
14 => "Secrets and Guys (Nachricht von Max)",
15 => "Is There a Woogy in the House (Wer hat Angst vorm Schwarzen Mann?)",
16 => "Which Prue Is It, Anyway? (Man stirbt nur dreimal)",
17 => "That '70s Episode (Zurück in die Vergangenheit)",
18 => "When Bad Warlocks Go Good (Wenn das Böse erwacht)",
19 => "Out of Sight (Blind)",
20 => "The Power of Two (Ein Geist, zwei Schwestern)",
21 => "Wächter der Dunkelheit (Love Hurts)",
22 => "Immer wieder Mittwoch (Deja Vu All Over Again)",
 
23 => "Abraxas (Witch Trial)",
24 => "Hexenjagd (Morality Bites)",
25 => "Voll im Bild (The Painted World)",
26 => "Pakt mit dem Teufel (Devil's Music)",
27 => "Einfach unwiderstehlich (She's a Man, Baby, a Man!)",
28 => "Der Auserwählte (That Old Black Magic)",
29 => "Die Akasha-Rollen (They're Everywhere)",
30 => "Der Schrecken der Tiefe (P3 H2O)",
31 => "Zwischen Himmel und Hölle (Ms. Hellfire)",
32 => "Mitten ins Herz (Heartbreak City)",
33 => "Drei Hexen und ein Baby (Reckless Abandon)",
34 => "Fieber (Awakened)",
35 => "Ein tierisch guter Spuk (Animal Pragmatism)",
36 => "Verflucht in alle Ewigkeit (Pardon My Past)",
37 => "Das Zeichen (Give Me A Sign)",
38 => "Vom Pech verfolgt (Murphy's Luck)",
39 => "Ewige Jugend (How To Make A Quilt Out Of Americans)",
40 => "Der reinste Horror (Chick Flick)",
41 => "Ex Libris",
42 => "Hexenblut (Astral Monkey)",
43 => "Die Reiter der Apokalypse (Apocalypse Not)",
44 => "Wünsch Dir was (Be Careful What You Witch For)",
 
45 => "Die Verschwörung des Bösen (The Honeymoon's Over)",
46 => "Hexenhochzeit (Magic Hour)",
47 => "Von Feen und Trollen (Once Upon a Time)",
48 => "Das Zeitportal (All Halliwell's Eve)",
49 => "Die Dämonenfalle (Sight Unseen)",
50 => "Die Macht der Gefühle (Primrose Path)",
51 => "Alle oder keine (Power Outage)",
52 => "Balthasar (Sleuthing With the Enemy)",
53 => "Besessen (Coyote Piper)",
54 => "Wenn der Eismann kommt (We Scream For Ice Cream)",
55 => "Gegen alle Regeln (Blinded By the Whitelighter)",
56 => "Verlorene Seelen (Wrestling With Demons)",
57 => "Das Böse in mir (Bride and Gloom)",
58 => "Stadt der Geister (The Good, the Bad and the Cursed)",
59 => "Trauung mit Hindernissen (Just Harried)",
60 => "Der Tod siegt immer (Death Takes a Halliwell)",
61 => "Aller guten Dinge sind neun (Pre-Witched)",
62 => "Die sieben Todsünden (Sin Francisco)",
63 => "Die Bruderschaft (The Demon Who Came In From The Cold)",
64 => "Freund oder Feind? (Exit Strategy)",
65 => "Die Todesfee (Look Who's Barking)",
66 => "Das Ende (All Hell Breaks Loose)",
 
67 => "Die neue Macht der Drei (Charmed Again (1))",
68 => "48 Stunden (Charmed Again (2))",
69 => "Die drei Furien (Hell Hath No Fury)",
70 => "Der Sammler (Size Matters)",
71 => "Der Mann mit dem Drachendolch (Enter the Demon)",
72 => "Ein Prinz für Paige (A Knight to Remember)",
73 => "Hirngespinste (Brain Drain)",
74 => "Schwarz wie der Teufel (Black As Cole)",
75 => "Der Ring der Musen (Muse To My Ears)",
76 => "Geister der Vergangenheit (A Paige From The Past)",
77 => "Die zwölf Geschworenen (Trial By Magic)",
78 => "Feuer (Lost and Bound)",
79 => "Das schwarze Nichts (Charmed and Dangerous)",
80 => "Die Frage aller Fragen (The Three Faces of Phoebe)",
81 => "Die Braut trägt schwarz (Marry-Go-Round)",
82 => "Das fünfte Rad (The Fifth Halliwheel)",
83 => "Der Soldat Leo Wyatt (Saving Private Leo)",
84 => "Beiß mich (Bite Me)",
85 => "Die Krönung (We're Off To See The Wizard)",
86 => "Lang lebe die Königin (Long Live The Queen)",
87 => "Die Brut des Bösen (Womb Raider)",
88 => "Der Engel des Schicksals (Witch Way Now?)",
 
89 => "Der Ruf des Meeres (1) (A Witch's Tail (1))",
90 => "Der Ruf des Meeres (2) (A Witch's Tail (2))",
91 => "Und wenn sie nicht gestorben sind … (Happily Ever After)",
92 => "Sirenengesang (Siren Song)",
93 => "Superhelden (Witches In Tights)",
94 => "Böse Augen (The Eyes Have It)",
95 => "Barbas (Sympathy For The Demon)",
96 => "Tödliche Visionen (A Witch in Time)",
97 => "Unverwundbar (Sam I Am)",
98 => "Mumienschanz (Y Tu Mummy Tambien)",
99 => "Der Nexus (The Importance of Being Phoebe)",
100 => "Happy Birthday, Cole! (Centennial Charmed)",
101 => "Quälgeister (House Call)",
102 => "San Francisco träumt (Sand Francisco Dreamin'))",
103 => "Ein magisches Geschenk (The Day The Magic Died)",
104 => "Babyalarm (Baby's First Demon)",
105 => "Glücksbringer (Lucky Charmed)",
106 => "Katzenjammer (Cat House)",
107 => "Tanz um die ewige Quelle (Nymphs Just Wanna Have Fun)",
108 => "Nichts sehen, nichts hören, nichts sagen (Sense and Sense Ability)",
109 => "Hexentaufe (Necromancing the Stone)",
110 => "Kampf der Titanen (1) (Oh My Goddess (1))",
111 => "Kampf der Titanen (2) (Oh My Goddess (2))",
 
// 112 => "Im Bann der Walküren, Teil 1 (Valhalley of the Dolls (1))",
// 113 => "Im Bann der Walküren, Teil 2 (Valhalley of the Dolls (2))",
// 114 => "Vergissmeinnicht (Forget Me... Not)",
// 115 => "Die Ohnmacht der Drei (The Power of Three Blondes)",
// 116 => "Tödliche Liebe (Love's a Witch)",
// 117 => "Opfer der Sehnsucht (My Three Witches)",
// 118 => "Seelenqualen (Soul Survivor)",
// 119 => "Piper und die Tafelrunde (Sword and the City)",
// 120 => "Kleine Monster (Little Monsters)",
// 121 => "Zwischen den Zeiten (Chris-Crossed)",
// 122 => "Witchstock",
// 123 => "Der perfekte Mann (Prince Charmed)",
// 124 => "Schlechtes Karma (Used Karma)",
// 125 => "Die Kopflosen Drei (The Legend of Sleepy Halliwell)",
126 => "Bezaubernde Phoebe (I Dream of Phoebe",
127 => "Piper und Leo (The Courtship of Wyatt's Father)",
128 => "Klassentreffen (Hyde School Reunion)",
129 => "Die Spinne (Spin City)",
130 => "Das Tribunal (Crimes and Witch-Demeanors)",
131 => "Magische Männer (A Wrong Day's Journey into Right)",
132 => "Witch Wars",
133 => "Gute und Böse Welt (1) (It's a Bad, Bad, Bad, Bad World (1))",
134 => "Gute und Böse Welt (2) (It's a Bad, Bad, Bad, Bad World (2))",
 
135 => "Blinder Zorn (A Call To Arms)",
136 => "Nackte Tatsachen (The Bare Witch Project)",
137 => "Der Rivalitätszauber (Cheaper by the Coven)",
138 => "Der Fluch der Piraten (Charrrmed!)",
139 => "Todesengel (Styx Feet Under)",
140 => "Im Bann des blauen Mondes (Once in a Blue Moon)",
// 141 => "Ohne Schutzengel (Someone to Witch Over Me)",
// 142 => "Der burmesische Falke (Charmed Noir)",
// 143 => "Was ist mit Leo los? (There's Something About Leo)",
// 144 => "Ich sehe was, was du nicht siehst (Witchness Protection)",
145 => "Die Hexen von nebenan (Ordinary Witches)",
146 => "Utopia erwacht (Extreme Makeover: World Edition)",
147 => "Charmageddon",
148 => "Carpe Dämon (Carpe Demon)",
149 => "Feuer und Flamme (Show Ghouls)",
150 => "Der verlorene Leo (The Seven Year Witch)",
151 => "Wer hat die Eltern geschrumpft? (Scry Hard)",
152 => "Die Büchse der Pandora (Little Box of Horrors)",
153 => "Freaky Phoebe",
154 => "Mein Freund, der Dämon (Imaginary Fiends)",
155 => "Der Tod steht ihnen gut (Death Becomes Them)",
156 => "Macht oder Leben (Something Wicca This Way Goes)",
 
157 => "Totgesagte leben länger (Still Charmed & Kicking)",
158 => "Halliwells im Wunderland (Malice in Wonderland)",
159 => "Lauf, Piper, lauf (Run, Piper, Run)",
160 => "Verzweifelte Haushexen (Desperate Housewitches)",
161 => "Entzauberte Julie (Rewitched)",
162 => "Kill Billie: Vol. 1",
163 => "Bitte lächeln (The Lost Picture Show)",
164 => "Yin und Yang (Battle of the Hexes)",
165 => "Blutsbande (Hulkus Pocus)",
166 => "Vaya Con Leos",
167 => "Billies Killer-Eltern (Mr. and Mrs. Witch)",
168 => "Mit gleicher Münze (Payback's a Witch)",
169 => "Klein, aber mein (Repo Manor)",
170 => "Büffel, Tiger und Hund (12 Angry Zen)",
171 => "Die letzte Versuchung von Christy (The Last Temptation of Christy)",
172 => "Verliebt, verlobt, verwirrt (Engaged and Confused)",
173 => "Ein hoher Preis (Generation Hex)",
174 => "Identitätskrise (The Torn Identity)",
175 => "Zeig mir deinen Traum (The Jung and the Restless)",
176 => "Hexenkampf (Gone With The Witches)",
177 => "Kill Billie: Vol. 2",
178 => "Forever Charmed (Das Vermächtnis der Halliwells)"
)
);
/branches/live/media/video/series/includes/sliders.php
0,0 → 1,105
<?php
 
$sliders = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Mi–Fr 21:00',
// 'seen' => array(array(1, 2)),
// 'last_seen' => mktime(21, 0, 0, 9, 8, 2011),
'seasons' => array(10, 13, 25, 22, 18),
'episodes' => array(
1 => "Pilot (1)",
2 => "Pilot (2)",
3 => "Summer of Love",
4 => "Prince of Wails",
5 => "Fever",
6 => "Last Days",
7 => "The Weaker Sex",
8 => "Eggheads",
9 => "The King Is Back",
10 => "Luck of the Draw",
 
11 => "Into The Mystic",
12 => "Time Again and World",
13 => "El Sid",
14 => "The Good, the Bad and the Wealthy",
15 => "Love Gods",
16 => "As Time Goes By",
17 => "Gillian of the Spirits",
18 => "Obsession",
19 => "Invasion",
20 => "Post Traumatic Slide Syndrome",
21 => "In Dino Veritas",
22 => "Greatfellas",
23 => "The Young and the Relentless",
 
24 => "Double Cross",
25 => "Rules of the Game",
26 => "Dead Man Sliding",
27 => "Electric Twister Acid Test",
28 => "The Guardian",
29 => "The Dream Masters",
30 => "Desert Storm",
31 => "Dragonslide",
32 => "The Fire Within",
33 => "The Prince of Slides",
34 => "State of the Art",
35 => "Season's Greedings",
36 => "Murder Most Foul",
37 => "Slide Like an Egyptian",
38 => "Paradise Lost",
39 => "The Last of Eden",
40 => "The Exodus (Part 1)",
41 => "The Exodus (Part 2)",
42 => "Sole Survivors",
43 => "The Other Slide of Darkness",
44 => "The Breeder",
45 => "Stoker",
46 => "Slither",
47 => "Dinoslide",
48 => "This Slide of Paradise",
 
49 => "Genesis",
50 => "Prophets and Loss",
51 => "Common Ground",
52 => "Virtual Slide",
53 => "World Killer",
54 => "Oh Brother, Where Art Thou?",
55 => "Just Say Yes",
56 => "The Alternateville Horror",
57 => "Slidecage",
58 => "Asylum",
59 => "California Reich",
60 => "The Dying Fields",
61 => "Lipschitz Live!",
62 => "Mother and Child",
63 => "Net Worth",
64 => "Slide By Wire",
65 => "Data World",
66 => "Way Out West",
67 => "My Brother's Keeper",
68 => "The Chasm",
69 => "Roads Taken",
70 => "Revelations",
 
71 => "The Unstuck Man",
72 => "Applied Physics",
73 => "Strangers and Comrades",
74 => "The Great Work",
75 => "New Gods for Old",
76 => "Please Press One",
77 => "A Current Affair",
78 => "The Java Jive",
79 => "The Return of Maggie Beckett",
80 => "Easy Slider",
81 => "Requiem",
82 => "Map of the Mind",
83 => "A Thousand Deaths",
84 => "Heavy Metal",
85 => "To Catch a Slider",
86 => "Dust",
87 => "Eye of the Storm",
88 => "The Seer"
),
'episode_list' => 'wiki:en:List_of_Sliders_episodes'
);
/branches/live/media/video/series/includes/time-trax.php
0,0 → 1,58
<?php
 
$time_trax = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'diverse',
'seen' => array(array(1, 6)),
// 'last_seen' => mktime(21, 15, 0, 6, 5, 2011),
'seasons' => array(22, 22),
'episode_list' => 'wiki:en:Time_Trax#Episode_list',
'episodes' => array(
1 => "A Stranger In Time, Part 1 (Reise in die Vergangenheit, Teil 1)",
2 => "A Stranger In Time, Part 2 (Reise in die Vergangenheit, Teil 2)",
3 => "To Kill A Billionaire (Zurück ins Atomzeitalter)",
4 => "Fire and Ice (Feuer und Eis)",
5 => "Showdown (Im Wilden Westen)",
6 => "The Prodigy (Das Wunderkind)",
7 => "Death Takes A Holiday (Der Tod spielt mit)",
8 => "The Contender (Kräftige Fäuste)",
9 => "Night of The Savage (Die Bestie von Soho)",
10 => "Treasure of The Ages (Der Jahrhundertschatz)",
11 => "The Price of Honor (Die Ehre eines Staatsmannes)",
12 => "Face of Death (Tödlicher Dschungel)",
13 => "Revenge",
14 => "Darien Comes Home (Die schöne Verräterin)",
15 => "Two Beans in a Wheel (Zwei teuflische Brüder)",
16 => "Little Boy Lost (Der Überlebenstrainer)",
17 => "The Mysterious Stranger (Das Schlangengift)",
18 => "Framed (In der Falle)",
19 => "Beautiful Songbird (Das Singvögelchen)",
20 => "Photo Finish (Doping)",
21 => "Darrow for the Defense (Besuch aus der Zukunft)",
22 => "One On One (Mann gegen Mann)",
 
23 => "Return of the Yakazu",
24 => "Missing",
25 => "To Live or Die in Docker Flats",
26 => "A Close Encounter",
27 => "The Gravity of it All",
28 => "Happy Valley",
29 => "Lethal Weapons",
30 => "The Cure",
31 => "Perfect Pair",
32 => "Catch Me If You Can",
33 => "The Dream Team",
34 => "Almost Human",
35 => "Mother",
36 => "The Last M.I.A.",
37 => "Split Image",
38 => "Cool Hand Darien",
39 => "The Lottery",
40 => "Out For Blood",
41 => "The Scarlet Koala",
42 => "Optic Nerve",
43 => "The Crash",
44 => "Forgotten Tomorrows"
)
);
/branches/live/media/video/series/includes/castle.php
0,0 → 1,103
<?php
 
$castle = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Fr 20:00',
'seen' => array(array(1, 14)),
// 'last_seen' => mktime(20, 0, 0, 7, 1, 2011),
'seasons' => array(10, 24, 24, 23, 24, 1),
'episode_list' => 'wiki:en:List_of_Castle_episodes',
'episodes' => array(
1 => "Flowers for Your Grave",
2 => "Nanny McDead",
3 => "Hedge Fund Homeboys",
4 => "Hell Hath No Fury",
5 => "A Chill Goes Through Her Veins",
6 => "Always Buy Retail",
7 => "Home Is Where the Heart Stops",
8 => "Ghosts",
9 => "Little Girl Lost",
10 => "A Death in the Family",
 
11 => "Deep in Death",
12 => "The Double Down",
13 => "Inventing the Girl",
14 => "Fool Me Once…",
15 => "When the Bough Breaks",
16 => "Vampire Weekend",
17 => "Famous Last Words",
18 => "Kill the Messenger",
19 => "Love Me Dead",
20 => "One Man's Treasure",
21 => "The Fifth Bullet",
22 => "A Rose for Everafter",
23 => "Sucker Punch",
24 => "The Third Man",
25 => "Suicide Squeeze",
26 => "The Mistress Always Spanks Twice",
27 => "Tick, Tick, Tick…",
28 => "Boom!",
29 => "Wrapped Up in Death",
30 => "The Late Shaft",
31 => "Den of Thieves",
32 => "Food to Die For",
33 => "Overkill",
34 => "A Deadly Game",
)
);
 
// '<span class="castle">Castle</span> (de)' => array(
// 'ignore' => true,
// // 'channel' => 'kabel eins / SF2',
// 'channel' => 'online',
// 'showtimes' => 'Fr 20:15 / Mo 21:37',
// 'seen' => array(1),
// // 'last_seen' => mktime(20, 0, 0, 7, 1, 2011),
// 'seasons' => array(10, 24, 24),
// 'episode_list' => 'wiki:Castle_(Fernsehserie)#Episodenliste',
// 'episodes' => array(
// 1 => "Blumen für ihr Grab (Flowers for Your Grave)",
 
// 5 => "Gefrorenes Blut (A Chill Goes Through Her Veins)",
 
// 21 => "Die fünfte Kugel (The Fifth Bullet)",
// 22 => "Eine Rose für immer und ewig (A Rose for Everafter)",
 
// 25 => "Cuba Libre (Suicide Squeeze)",
// 26 => "Die Domina schlägt immer zweimal zu (The Mistress Always Spanks Twice)",
// 27 => "Tick, tick, tick …",
// 28 => "Bumm! (Boom!)",
// 29 => "Der Fluch der Mumie (Wrapped Up in Death)",
// 30 => "Die Late-Night Jungs (The Late Shaft)",
// 31 => "Keine Ganovenehre (Den of Thieves)",
// 32 => "Leiche am Stiel (Food to Die For)",
// 33 => "Zu viel des Guten (Overkill)",
// // 34 => "Der tote Spion (A Deadly Game)",
 
// 35 => "Eine tödliche Affäre (A Deadly Affair)",
// 36 => "Er ist tot, sie ist tot (He’s Dead, She’s Dead)",
// 37 => "Die Schatzkarte (Under The Gun)",
// 38 => "Ein Mörder auf Zeitreise (Punked)",
// 39 => "Anatomie eines Mordes (Anatomy of a Murder)",
// 40 => "Der Dreifachmörder (3XK)",
// 41 => "Fast berühmt (Almost Famous)",
// 42 => "Der Glühbirnen-Held (Murder Most Fowl)",
// 43 => "Akte X (Close Encounters of the Murderous Kind)",
// 44 => "Speakeasy (Last Call)",
// 45 => "Nikki Heat",
// 46 => "Puff, du bist tot (Poof! You’re Dead)",
// 47 => "Johanna Beckett (Knockdown)",
// 48 => "Todsicheres Glück (Lucky Stiff)",
// 49 => "Der letzte Nagel (The Final Nail)",
// 50 => "Die schmutzige Bombe – Teil 1 (Setup (1))",
// 51 => "Countdown – Teil 2 (Countdown (2)) (2011-09-30)",
// 52 => "Mörderische Seifenoper (One Life to Lose)",
// 53 => "Tod eines Geschworenen (Law & Murder)",
// 54 => "Die Pizza-Connection (Slice of Death)",
// 55 => "Tod im Pool (The Dead Pool)",
// 56 => "Lieben und Sterben in L.A. (To Love and Die in L.A.)",
// 57 => "Ganz schön tot (Pretty Dead)",
// 58 => "Knockout",
// )
// ),
/branches/live/media/video/series/includes/buffy.php
0,0 → 1,107
<?php
 
$buffy = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Mo 22:05–00:30',
'seasons' => array(12, 22, 22, 22, 22, 22, 22),
'seen' => array(array(1, 18)),
'episode_list' => 'http://www.serienjunkies.de/Buffy/season1.html',
'episodes' => array(
1 => "Welcome to the Hellmouth (Das Zentrum des Bösen)",
2 => "The Harvest (Die Zeit der Ernte)",
3 => "Witch (Verhext)",
4 => "Teacher's Pet (Die Gottesanbeterin)",
5 => "Never Kill a Boy on the First Date (Ohne Buffy lebt sich's länger)",
6 => "The Pack (Das Lied der Hyänen)",
7 => "Angel (Angel - Blutige Küsse)",
8 => "I Robot, You Jane (Computerdämon)",
9 => "The Puppet Show (Buffy lässt die Puppen tanzen)",
10 => "Nightmares (Die Macht der Träume)",
11 => "Out of Mind, Out of Sight (Aus den Augen, aus dem Sinn)",
12 => "Prophecy Girl (Das Ende der Welt)",
 
13 => "When She Was Bad (Im Banne des Bösen)",
14 => "Some Assembly Required (Operation Cordelia)",
15 => "School Hard (Elternabend mit Hindernissen)",
16 => "Inca Mummy Girl (Das Geheimnis der Mumie)",
17 => "Reptile Boy (Der Geheimbund)",
18 => "Halloween (Die Nacht der Verwandlung)",
19 => "Lie to Me (Todessehnsucht)",
20 => "The Dark Age (Das Mal des Eyghon)",
21 => "What's My Line? (1) (Die Rivalin)",
22 => "What's My Line? (2) (Das Ritual)",
23 => "Ted",
24 => "Bad Eggs (Faule Eier)",
25 => "Surprise (Der Fluch der Zigeuner)",
26 => "Innocence (Der gefallene Engel)",
27 => "Phases (Der Werwolfjäger)",
28 => "Bewitched, Bothered And Bewildered (Der Liebeszauber)",
29 => "Passion (Das Jenseits lässt grüßen)",
30 => "Killed by Death (Der unsichtbare Tod)",
31 => "I Only Have Eyes for You (Ein Dämon namens Liebe)",
32 => "Go Fish (Das Geheimnis der Fischmonster)",
33 => "Becoming (1) (Wendepunkte)",
34 => "Becoming (2) (Spiel mit dem Feuer)",
 
35 => "Anne (Anne gefangen in der Unterwelt)",
36 => "Dead Man's Party (Die Nacht der lebenden Toten)",
37 => "Faith, Hope and Trick (Neue Freunde, neue Feinde)",
38 => "Beauty and the Beasts (Dr. Jekyll und Mr. Hyde)",
39 => "Homecoming (Die Qual der Wahl)",
40 => "Band Candy (Außer Rand und Band)",
41 => "Revelations (Der Handschuh von Myhnegon)",
42 => "Lover's Walk (Liebe und andere Schwierigkeiten)",
43 => "The Wish (Was wäre wenn...)",
44 => "Amends (Heimsuchungen)",
45 => "Gingerbread (Hänsel und Gretel)",
46 => "Helpless (Die Reifeprüfung)",
47 => "The Zeppo (Die Nacht der lebenden Leichen)",
48 => "Bad Girls (Der neue Wächter)",
49 => "Consequences (Konsequenzen)",
50 => "Doppelgangland (Doppelgängerland)",
51 => "Enemies (Gefährliche Spiele)",
52 => "Choices (Die Box von Gavrock)",
53 => "The Prom (Der Höllenhund)",
54 => "Graduation Day (1) (Das Blut der Jägerin)",
55 => "Graduation Day (2) (Tag der Vergeltung)",
56 => "Earshot (Fremde Gedanken)",
 
109 => "Smashed (Alte Feinde, neue Freunde?)",
110 => "Wrecked (Der Fluch der Zauberei)",
111 => "Gone (Verschwunden)",
112 => "Doublemeat Palace (Geheimnisvolle Zutaten)",
113 => "Dead Things (Manipulationen)",
114 => "Older and Far Away (Ein verfluchter Geburtstag)",
115 => "As You Were (Überraschender Besuch)",
116 => "Hell's Bells (Höllische Hochzeit)",
117 => "Normal Again (Zwei Welten)",
118 => "Entropy (Im Chaos der Gefühle)",
119 => "Seeing Red (Warrens Rache)",
120 => "Villains (Wut)",
121 => "Two to Go (Da waren's nur noch zwei)",
122 => "Grave (Der Retter)",
123 => "Lessons (Alles auf Anfang)",
124 => "Beneath You (Das Monster aus der Tiefe)",
125 => "Same Time, Same Place (Willows Welt)",
126 => "Help (Hilflos)",
127 => "Selfless (Wandlungen)",
128 => "Him (Liebesbeweise)",
129 => "Conversations with Dead People (Gespräche mit Toten)",
130 => "Sleeper (Unschuldig Schuldig)",
131 => "Never Leave Me (Boten des Bösen)",
132 => "Bring on the Night (Wenn die Nacht beginnt)",
133 => "Showtime (Showtime)",
134 => "Potential (Die Anwärterin)",
135 => "The Killer in Me (Die Mörder in mir)",
136 => "First Date (Das Erste Date)",
137 => "Get It Done (Das Angebot)",
138 => "Storyteller (Der Geschichtenerzähler)",
139 => "Lies My Parents Told Me (Mütter und Söhne)",
140 => "Dirty Girls (Caleb)",
141 => "Empty Places (... und raus bist Du)",
142 => "Touched (Die Quelle der Mache)",
143 => "End of Days (Das Ende der Zeit, Teil 1)",
144 => "Chosen (Das Ende der Zeit, Teil 2)",
)
);
/branches/live/media/video/series/includes/battlestar-galactica.php
0,0 → 1,180
<?php
 
$serien['<span class="bsg">Battlestar Galactica</span> (2004)'] = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Mi 02:00',
'seen' => array(array(1, 10)),
'seasons' => array(13, 20, 20, 'Razor' => 2, 20, 'The Plan' => 1),
'episode_list' => 'wiki:en:List_of_Battlestar_Galactica_(2004_TV_series)_episodes',
'episodes' => array(
1 => "33",
2 => "Water",
3 => "Bastille Day",
4 => "Act of Contrition",
5 => "You Can't Go Home Again",
6 => "Litmus",
7 => "Six Degrees of Separation",
8 => "Flesh and Bone",
9 => "Tigh Me Up, Tigh Me Down",
10 => "The Hand of God",
11 => "Colonial Day",
12 => "Kobol's Last Gleaming (Part 1)",
13 => "Kobol's Last Gleaming (Part 2)",
 
14 => "Scattered (Die verlorene Flotte)",
15 => "Valley of Darkness (Im Tal der Finsternis)",
16 => "Fragged (Die Gesetze des Krieges)",
17 => "Resistance (Leben und Sterben)",
18 => "The Farm (Die Farm)",
19 => "Home, Part 1 (Heimat, Teil 1)",
20 => "Home, Part 2 (Heimat, Teil 2)",
21 => "Final Cut (Die Reporterin)",
22 => "Flight of the Phoenix (Die Hoffnung lebt)",
23 => "Pegasus",
24 => "Resurrection Ship, Part 1 (Die Auferstehung, Teil 1)",
25 => "Resurrection Ship, Part 2 (Die Auferstehung, Teil 2)",
26 => "Epiphanies (Sabotage)",
27 => "Black Market (Schwarzmarkt)",
28 => "Scar (Der beste Jäger der Zylonen)",
29 => "Sacrifice (Das Opfer)",
30 => "The Captain's Hand (Mensch und Maschine)",
31 => "Downloaded (Download)",
32 => "Lay Down Your Burdens, Part 1 (Das neue Caprica, Teil 1)",
33 => "Lay Down Your Burdens, Part 2 (Das neue Caprica, Teil 2)",
 
// 34 => "Occupation",
// 35 => "Precipice",
// 36 => "Exodus (Part 1)",
// 37 => "Exodus (Part 2)",
// 38 => "Collaborators",
// 39 => "Torn",
// 40 => "A Measure of Salvation",
// 41 => "Hero",
42 => "Unfinished Business",
// 43 => "The Passage",
// 44 => "The Eye of Jupiter",
// 45 => "Rapture",
// 46 => "Taking a Break from All Your Worries",
// 47 => "The Woman King",
// 48 => "A Day in the Life",
// 49 => "Dirty Hands",
// 50 => "Maelstrom",
// 51 => "The Son Also Rises",
// 52 => "Crossroads (Part 1)",
// 53 => "Crossroads (Part 2)",
 
// 54 => "Razor (Part 1)",
// 55 => "Razor (Part 2)",
 
56 => "He That Believeth in Me",
57 => "Six of One",
58 => "The Ties That Bind",
59 => "Escape Velocity",
60 => "The Road Less Traveled",
61 => "Faith",
62 => "Guess What's Coming to Dinner?",
63 => "Sine Qua Non",
64 => "The Hub",
65 => "Revelations",
66 => "Sometimes a Great Notion",
67 => "A Disquiet Follows My Soul",
68 => "The Oath",
69 => "Blood on the Scales",
70 => "No Exit",
71 => "Deadlock",
72 => "Someone to Watch Over Me",
73 => "Islanded in a Stream of Stars",
74 => "Daybreak (Part 1)",
75 => "Daybreak (Parts 2 & 3)",
 
76 => "The Plan",
)
);
 
// $serien['<span class="bsg">Battlestar Galactica</span> (2004, de)'] = array(
// 'ignore' => true,
// 'channel' => 'online',
// // 'showtimes' => 'Mi 02:00',
// // 'seen' => array(),
// 'seasons' => array(13, 20, 20, 'Razor' => 2, 20, 'The Plan' => 1),
// 'episode_list' => 'wiki:Liste_der_Battlestar-Galactica-Episoden',
// 'episodes' => array(
// 1 => "33 Minuten (33)",
// // 2 => "Water",
// // 3 => "Bastille Day",
// // 4 => "Act of Contrition",
// // 5 => "You Can't Go Home Again",
// // 6 => "Litmus",
// // 7 => "Six Degrees of Separation",
// // 8 => "Flesh and Bone",
// // 9 => "Tigh Me Up, Tigh Me Down",
// // 10 => "The Hand of God",
// // 11 => "Colonial Day",
// // 12 => "Kobol's Last Gleaming (Part 1)",
// // 13 => "Kobol's Last Gleaming (Part 2)",
// 14 => "Scattered (Die verlorene Flotte)",
// 15 => "Valley of Darkness (Im Tal der Finsternis)",
// 16 => "Fragged (Die Gesetze des Krieges)",
// 17 => "Resistance (Leben und Sterben)",
// 18 => "The Farm (Die Farm)",
// 19 => "Home, Part 1 (Heimat, Teil 1)",
// 20 => "Home, Part 2 (Heimat, Teil 2)",
// 21 => "Final Cut (Die Reporterin)",
// 22 => "Flight of the Phoenix (Die Hoffnung lebt)",
// 23 => "Pegasus",
// 24 => "Resurrection Ship, Part 1 (Die Auferstehung, Teil 1)",
// 25 => "Resurrection Ship, Part 2 (Die Auferstehung, Teil 2)",
// 26 => "Epiphanies (Sabotage)",
// 27 => "Black Market (Schwarzmarkt)",
// 28 => "Scar (Der beste Jäger der Zylonen)",
// 29 => "Sacrifice (Das Opfer)",
// 30 => "The Captain's Hand (Mensch und Maschine)",
// 31 => "Downloaded (Download)",
// 32 => "Lay Down Your Burdens, Part 1 (Das neue Caprica, Teil 1)",
// 33 => "Lay Down Your Burdens, Part 2 (Das neue Caprica, Teil 2)",
// // 34 => "Occupation",
// // 35 => "Precipice",
// // 36 => "Exodus (Part 1)",
// // 37 => "Exodus (Part 2)",
// // 38 => "Collaborators",
// // 39 => "Torn",
// // 40 => "A Measure of Salvation",
// // 41 => "Hero",
// // 42 => "Unfinished Business",
// // 43 => "The Passage",
// // 44 => "The Eye of Jupiter",
// // 45 => "Rapture",
// // 46 => "Taking a Break from All Your Worries",
// // 47 => "The Woman King",
// // 48 => "A Day in the Life",
// // 49 => "Dirty Hands",
// // 50 => "Maelstrom",
// // 51 => "The Son Also Rises",
// // 52 => "Crossroads (Part 1)",
// // 53 => "Crossroads (Part 2)",
// // 54 => "Razor (Part 1)",
// // 55 => "Razor (Part 2)",
// // 56 => "He That Believeth in Me",
// // 57 => "Six of One",
// // 58 => "The Ties That Bind",
// // 59 => "Escape Velocity",
// // 60 => "The Road Less Traveled",
// // 61 => "Faith",
// // 62 => "Guess What's Coming to Dinner?",
// // 63 => "Sine Qua Non",
// // 64 => "The Hub",
// // 65 => "Revelations",
// // 66 => "Sometimes a Great Notion",
// // 67 => "A Disquiet Follows My Soul",
// // 68 => "The Oath",
// // 69 => "Blood on the Scales",
// // 70 => "No Exit",
// // 71 => "Deadlock",
// // 72 => "Someone to Watch Over Me",
// // 73 => "Islanded in a Stream of Stars",
// // 74 => "Daybreak (Part 1)",
// // 75 => "Daybreak (Parts 2 & 3)",
// 76 => "The Plan",
// )
// );
/branches/live/media/video/series/includes/star-trek-tos.php
0,0 → 1,95
<?php
 
$tos = array(
// 'ignore' => true,
'channel' => 'DVD',
// 'showtimes' => 'Mo-Fr 21:50',
'seen' => array(array(1, 8), 12, 13, 22),
// 'last_seen' => mktime(15, 25, 0, 11, 1, 2011),
'seasons' => array(30, 26, 24),
'episode_list' => 'http://en.memory-alpha.org/wiki/Star_Trek:_The_Original_Series#Episode_List',
'episodes' => array(
1 => 'The Cage',
2 => 'Das Letzte seiner Art (The Man Trap)',
3 => 'Der Fall Charlie (Charlie X)',
4 => 'Die Spitze des Eisbergs (Where No Man Has Gone Before)',
5 => 'Implosion in der Spirale (The Naked Time)',
6 => 'Kirk : 2 = ? (The Enemy Within)',
7 => "Die Frauen des Mr. Mudd (Mudd's Women)",
8 => "Der alte Traum (What Are Little Girls Made Of?)",
9 => "Miri, ein Kleinling (Miri)",
10 => "Der Zentralnervensystemmanipulator (Dagger Of The Mind)",
11 => "Pokerspiele (The Corbomite Maneuver)",
12 => "Talos IV - Tabu - Teil 1 (The Menagerie Part I)",
13 => "Talos IV - Tabu - Teil 2 (The Menagerie Part II)",
14 => "Kodos, der Henker (The Conscience Of The King)",
15 => "Spock unter Verdacht (Balance Of Terror)",
16 => "Land(e)urlaub (Shore Leave)",
17 => "Notlandung auf Galileo 7 (The Galileo Seven)",
18 => "Tödliche Spiele auf Gothos (The Squire Of Gothos)",
19 => "Ganz neue Dimensionen (Arena)",
20 => "Morgen ist gestern (Tomorrow Is Yesterday)",
21 => "Kirk unter Anklage (Court Martial)",
22 => "Landru und die Ewigkeit (The Return Of The Archons)",
23 => "Der schlafende Tiger (Space Seed)",
24 => "Krieg der Computer (A Taste Of Armageddon)",
25 => "Falsche Paradiese (This Side Of Paradise)",
26 => "Horta rettet ihre Kinder (The Devil In The Dark)",
27 => "Kampf um Organia (Errand Of Mercy)",
28 => "Auf Messers Schneide (The Alternative Factor)",
29 => "Griff in die Geschichte (The City On The Edge Of Forever)",
30 => "Spock außer Kontrolle (Operation: Annihilate!)",
 
31 => "Weltraumfieber (Amok Time)",
32 => "Der Tempel des Apoll (Who Mourns For Adonais?)",
33 => "Ich heiße Nomad (The Changeling)",
34 => "Ein Parallel-Universum (Mirror, Mirror)",
35 => "Die Stunde der Erkenntnis (The Apple)",
36 => "Planeten-Killer (The Doomsday Machine)",
37 => "Das Spukschloss im Weltall (Catspaw)",
38 => "Der dressierte Herrscher (I, Mudd)",
39 => "Metamorphose (Metamorphosis)",
40 => "Reise nach Babel (Journey To Babel)",
41 => "Im Namen des jungen Tiru (Friday's Child)",
42 => "Wie schnell die Zeit vergeht (The Deadly Years)",
43 => "Tödliche Wolken (Obsession)",
44 => "Der Wolf im Schafspelz (Wolf In The Fold)",
45 => "Kennen Sie Tribbles? (The Trouble With Tribbles)",
46 => "Meister der Sklaven (The Gamesters Of Triskelion)",
47 => "Epigonen (A Piece Of The Action)",
48 => "Das Loch im Weltraum (The Immunity Syndrome)",
49 => "Der erste Krieg (A Private Little War)",
50 => "Geist sucht Körper (Return To Tomorrow)",
51 => "Schablonen der Gewalt (Patterns Of Force)",
52 => "Stein und Staub (By Any Other Name)",
53 => "Das Jahr des roten Vogels (The Omega Glory)",
54 => "Computer M5 (The Ultimate Computer)",
55 => "Brot und Spiele (Bread and Circuses)",
56 => "Ein Planet, genannt Erde (Assignment: Earth)",
 
57 => "Spocks Gehirn (Spock's Brain)",
58 => "Die unsichtbare Falle (The Enterprise Incident)",
59 => "Der Obelisk (The Paradise Syndrome)",
60 => "Kurs auf Markus 12 (And The Children Shall Lead)",
61 => "Die fremde Materie (Is There In Truth No Beauty?)",
62 => "Wildwest im Weltraum (Spectre Of The Gun)",
63 => "Das Gleichgewicht der Kräfte (Day of the Dove)",
64 => "Der verirrte Planet (For The World Is Hollow, And I Have Touched The Sky)",
65 => "Das Spinnennetz (The Tholian Web)",
66 => "Platons Stiefkinder (Plato's Stepchildren)",
67 => "Was summt denn da? (Wink of an Eye)",
68 => "Der Plan der Vianer (The Empath)",
69 => "Brautschiff Enterprise (Elaan Of Troyius)",
70 => "Wen die Götter zerstören (Whom Gods Destroy)",
71 => "Bele jagt Lokai (Let That Be Your Last Battlefield)",
72 => "Fast unsterblich (The Mark Of Gideon)",
73 => "Gefährliche Planetengirls (That Which Survives)",
74 => "Strahlen greifen an (The Lights Of Zetar)",
75 => "Planet der Unsterblichen (Requiem For Methuselah)",
76 => "Die Reise nach Eden (The Way To Eden)",
77 => "Die Wolkenstadt (The Cloudminders)",
78 => "Seit es Menschen gibt (The Savage Curtain)",
79 => "Portal in die Vergangenheit (All Our Yesterdays)",
80 => "Gefährlicher Tausch (Turnabout Intruder)"
)
);
/branches/live/media/video/series/includes/true-blood.php
0,0 → 1,95
<?php
 
$true_blood = array(
// 'ignore' => true,
'channel' => 'online',
// 'showtimes' => 'Mi 00:10',
'seen' => array(array(1, 8)),
'seasons' => array(12, 12, 12, 12, 12, 2),
'episode_list' => 'wiki:en:List_of_True_Blood_episodes',
'episodes' => array(
1 => "Strange Love",
2 => "The First Taste",
3 => "Mine",
4 => "Escape From Dragon House",
5 => "Sparks Fly Out",
6 => "Cold Ground",
7 => "Burning House of Love",
8 => "The Fourth Man in the Fire",
9 => "Plaisir d'Amour",
10 => "I Don't Wanna Know",
11 => "To Love is to Bury",
12 => "You'll Be the Death of Me",
13 => "Nothing But the Blood",
14 => "Keep This Party Going",
15 => "Scratches",
16 => "Shake and Fingerpop",
17 => "Never Let Me Go",
18 => "Hard-Hearted Hannah",
19 => "Release Me",
20 => "Time Bomb",
21 => "I Will Rise Up",
22 => "New World In My View",
23 => "Frenzy",
24 => "Beyond Here Lies Nothing",
25 => "Bad Blood",
26 => "Beautifully Broken",
27 => "It Hurts Me Too",
28 => "9 Crimes",
29 => "Trouble",
30 => "I Got a Right to Sing the Blues",
31 => "Hitting the Ground",
32 => "Night on the Sun",
33 => "Everything Is Broken",
34 => "I Smell a Rat",
35 => "Fresh Blood",
36 => "Evil is Going On",
)
);
 
// '<span class="true-blood"><span class="upper">True</span>'
// . '<span class="hidden"> </span><span class="lower">B</span>lood</span> (de)' => array(
// 'channel' => 'RTL Ⅱ',
// 'showtimes' => 'Mi 21:05',
// 'seen' => array(array(1, 6)),
// 'seasons' => array(12, 12, 12, 12),
// 'episode_list' => 'wiki:Liste_der_True-Blood-Episoden',
// 'episodes' => array(
// 1 => "Strange Love (Strange Love)",
// 2 => "Blut geleckt (The First Taste)",
// 3 => "Sie gehört zu mir (Mine)",
// 4 => "Flucht aus dem Drachenhaus (Escape From Dragon House)",
// 5 => "Funkenflug (Sparks Fly Out)",
// 6 => "Kalte Erde (Cold Ground)",
// 7 => "Brennende Leidenschaft (Burning House of Love)",
// 8 => "Der vierte Mann im Feuer (The Fourth Man in the Fire)",
// 9 => "Plaisir d'Amour (Plaisir d'Amour)",
// 10 => "Gefährliches Spiel (I Don't Wanna Know)",
// 11 => "Begräbnis aus Liebe (To Love is to Bury)",
// 12 => "Du wirst mein Tod sein (You'll Be the Death of Me)",
// 13 => "Nichts als Blut (Nothing But the Blood)",
// 14 => "Die Party geht weiter (Keep This Party Going)",
// 15 => "Kratzer (Scratches)",
// 16 => "Überraschung (Shake and Fingerpop)",
// 17 => "Verflucht (Never Let Me Go)",
// 18 => "Hartherzige Hannah (Hard-Hearted Hannah)",
// 19 => "Lass mich frei (Release Me)",
// 20 => "Zeitbombe (Time Bomb)",
// 21 => "Auferstehung (I Will Rise Up)",
// 22 => "Neue Welt (New World In My View)",
// 23 => "Ekstase (Frenzy)",
// 24 => "Das Ende des Horizonts (Beyond Here Lies Nothing)",
// 25 => "Böses Blut (Bad Blood)",
// 26 => "Schön kaputt (Beautifully Broken)",
// 27 => "Es tut so weh (It Hurts Me Too)",
// 28 => "Neun Verbrechen (9 Crimes)",
// 29 => "Ärger (Trouble)",
// 30 => "Ich habe ein Recht darauf, den Blues zu singen (I Got a Right to Sing the Blues)",
// 31 => "Am Boden der Tatsachen (Hitting the Ground)",
// 32 => "Nacht auf der Sonne (Night on the Sun)",
// 33 => "Alles ist zerbrochen (Everything Is Broken)",
// 34 => "Verdacht (I Smell a Rat)",
// 35 => "Frisches Blut (Fresh Blood)",
// 36 => "Das Böse geht weiter (Evil is Going On)",
// )
// );
/branches/live/media/video/series/includes/futurama.php
0,0 → 1,117
<?php
 
$futurama = array(
'channel' => 'VIVA.de',
'showtimes' => 'Mo-Fr 21:45',
'seen' => array(array(1, 22), 65),
'seasons' => array(13, 19, 22, 18, 16, 26, 26),
'episode_list' => 'wiki:Liste_der_Futurama-Episoden',
'episodes' => array(
1 => 'Zeit und Raum 3000 (Space Pilot 3000)',
2 => 'Sein erster Flug zum Mond (Episode Two: The Series Has Landed)',
3 => 'Wohnungssuche in Neu-New York (I, Roommate)',
4 => "Begegnung mit Zapp Brannigan (Love's Labours Lost in Space)",
5 => 'Planet der Roboter (Fear of a Bot Planet)',
6 => 'Das Geheimnis der Anchovis (A Fishful of Dollars)',
7 => 'Die Galaxis des Terrors (My Three Suns)',
8 => 'Müll macht erfinderisch (A Big Piece of Garbage)',
9 => 'Ein echtes Höllenspektakel (Hell Is Other Robots)',
10 => 'Panik auf Raumschiff Titanic (A Flight to Remember)',
11 => 'Das Experiment der Mars-Universität (Mars University)',
12 => 'Wenn Außerirdische angreifen (When Aliens Attack)',
13 => 'Die Party mit Slurm McKenzie (Fry and the Slurm Factory)',
 
14 => 'Gefühls-Chip gefällig? I Second That Emotion',
15 => 'Brannigan, fang wieder an (Brannigan Begin Again)',
16 => 'Getrennt von Kopf und Körper (A Head in the Polls)',
17 => 'Xmas Story',
18 => 'Das merkwürdige Verhalten geschlechtsreifer Krustentiere zur Paarungszeit'
.' (Why Must I Be a Crustacean in Love?)',
19 => 'Die Wahl zur Miss Universum (The Lesser of Two Evils)',
20 => 'Valentinstag 3000 (Put Your Head on My Shoulders)',
21 => 'Wie ein wilder Bender (Raging Bender)',
22 => 'Hochzeitstag auf Cyclopia (A Bicyclops Built for Two)',
23 => 'Wie der Vater so der Klon (A Clone of My Own)',
24 => 'Die Rhythmus-Rückerstattung (How Hermes Requisitioned His Groove Back)',
25 => 'Tief im Süden (The Deep South)',
26 => 'Allein gegen die Roboter-Mafia (Bender Gets Made)',
27 => 'Muttertag (Mother’s Day)',
28 => 'Kennen Sie Popplers? (The Problem with Popplers)',
29 => 'Geschichten von Interesse I (Anthology of Interest I)',
30 => 'Krieg auf Spheron Eins (War Is the H-Word)',
31 => 'Dieses unheimliche Hupen (The Honking)',
32 => 'Die Frau, die aus der Kälte kam (The Cryonic Woman)',
 
33 => "Amazonen machen Snu Snu (Amazon Women in the Mood)",
34 => "Im Reich der Parasiten (Parasites Lost)",
35 => "Alle Jahre wieder (A Tale of Two Santas)",
36 => "Das Glück des Philip J. Fry (The Luck of the Fryrish)",
37 => "Bender unter Pinguinen (The Birdbot of Ice-Catraz)",
38 => "Bender – bis über beide Ohren (Bendless Love)",
39 => "Der Tag, an dem die Erde verdummte (The Day the Earth Stood Stupid)",
40 => "Zoidberg geht nach Hollywood (That’s Lobstertainment!)",
41 => "In den Augen einer Waise (The Cyber House Rules)",
42 => "Vierzig Käfer westwärts (Where the Buggalo Roam)",
43 => "Roboter Roberto – Bankräuber (Insane in the Mainframe)",
44 => "Die Wurzel allen Übels (The Route of All Evil)",
45 => "Bender auf Tour (Bendin’ in the Wind)",
46 => "Wie die Zeit vergeht (Time Keeps on Slippin’)",
47 => "Date mit einem Roboter (I Dated a Robot)",
48 => "Eine Klasse für sich (A Leela of Her Own)",
49 => "Der unvergessene Pharao (A Pharaoh to Remember)",
50 => "Geschichten von Interesse II (Anthology of Interest II)",
51 => "Roswell gut – alles gut (Roswell That Ends Well)",
52 => "Der göttliche Bender (Godfellas)",
53 => "Wer wird Millionär? (Future Stock)",
54 => "Das Kochduell (The 30% Iron Chef)",
 
56 => "Die Waise des Jahres (Leela’s Homeworld)",
57 => "Liebe und Raketen (Love and Rocket)",
58 => "Superhelden (Less Than Hero)",
59 => "Der Geschmack der Freiheit (A Taste of Freedom)",
60 => "Wer ist hier cool? (Bender Should Not Be Allowed on TV)",
61 => "Gebell aus der Steinzeit (Jurassic Bark)",
62 => "Die stinkende Medaille der Umweltverschmutzung (Crimes of the Hot)",
63 => "Die Quelle des Alterns (Teenage Mutant Leela’s Hurdles)",
64 => "Philip J. Fry: V.I.P. (The Why of Fry)",
65 => "Der letzte Trekki (Where No Fan Has Gone Before)",
66 => "Der Stich (The Sting)",
67 => "Coilette & Calculon – Eine Liebesgeschichte (Bend Her)",
68 => "Absolut fabelhaft (Obsoletely Fabulous)",
69 => "Die Farnsworth Parabox (The Farnsworth Parabox)",
70 => "Dreihundert dicke Dinger (Three Hundred Big Boys)",
71 => "Lustkrise auf Omicron Persei Acht (Spanish Fry)",
72 => "Die Hände des Teufels (The Devil’s Hands are Idle Playthings)",
 
73 => "Bender’s Big Score, Teil 1 (Bender’s Big Score, Part 1)",
74 => "Bender’s Big Score, Teil 2 (Bender’s Big Score, Part 2)",
75 => "Bender’s Big Score, Teil 3 (Bender’s Big Score, Part 3)",
76 => "Bender’s Big Score, Teil 3 (Bender’s Big Score, Part 4)",
77 => "Die Ära des Tentakels, Teil 1 (The Beast with a Billion Backs, Part 1)",
78 => "Die Ära des Tentakels, Teil 2 (The Beast with a Billion Backs, Part 2)",
79 => "Die Ära des Tentakels, Teil 3 (The Beast with a Billion Backs, Part 3)",
80 => "Die Ära des Tentakels, Teil 4 (The Beast with a Billion Backs, Part 4)",
81 => "Bender’s Game, Teil 1 (Bender’s Game, Part 1)",
82 => "Bender’s Game, Teil 2 (Bender’s Game, Part 2)",
83 => "Bender’s Game, Teil 3 (Bender’s Game, Part 3)",
84 => "Bender’s Game, Teil 4 (Bender’s Game, Part 4)",
85 => "Leela und die Enzyklopoden, Teil 1 (Into the Wild Green Yonder, Part 1)",
86 => "Leela und die Enzyklopoden, Teil 2 (Into the Wild Green Yonder, Part 2)",
87 => "Leela und die Enzyklopoden, Teil 3 (Into the Wild Green Yonder, Part 3)",
88 => "Leela und die Enzyklopoden, Teil 4 (Into the Wild Green Yonder, Part 4)",
 
89 => "Wiedergeburt (Rebirth)",
90 => "Der Leela-Laune-Zapp (In-A-Gadda-Da-Leela)",
91 => "Angriff der Killer App (Attack of the Killer App)",
92 => "Roboter Street Day (Proposition Infinity)",
93 => "Der Da-Blödi-Code (The Duh-Vinci Code)",
94 => "Tödliche Inspektion (Lethal Inspection)",
95 => "Die unglaubliche Reise in einer verrückten Zeitmaschine (The Late Philip J. Fry)",
96 => "Katzenjammer (That Darn Katz)",
97 => "Uhrwerk Original (A Clockwork Origin)",
98 => "Im Körper des Freundes (The Prisoner of Benda)",
99 => "Velrrrückt nach Ndndir (Lrrreconcilable Ndndifferences)",
100 => "Rebellion der Mutanten (The Mutants Are Revolting)",
101 => "Das Feiertagsspektakel (The Futurama Holiday Spectacular)",
)
);
/branches/live/media/video/series/includes/star-trek-tng.php
0,0 → 1,37
<?php
 
$tng = array(
'ignore' => true,
'channel' => 'Blu-Ray',
'seen' => array(array(1, 6), 9, 11),
'seasons' => array(26, 22, 26, 26, 26, 26, 26),
'episode_list' => 'http://en.memory-alpha.org/wiki/Star_Trek:_The_Next_Generation#Episode_list',
'episodes' => array(
1 => 'Encounter at Farpoint, Part 1',
2 => 'Encounter at Farpoint, Part 2',
3 => "The Naked Now",
4 => "Code of Honor",
5 => "The Last Outpost",
6 => "Where No One Has Gone Before",
7 => "Lonely Among Us",
8 => "Justice",
9 => "The Battle",
10 => "Hide and Q",
11 => "Haven",
12 => "The Big Goodbye",
13 => "Datalore",
14 => "Angel One",
15 => "11001001",
16 => "Too Short a Season",
17 => "When The Bough Breaks",
18 => "Home Soil",
19 => "Coming of Age",
20 => "Heart of Glory",
21 => "The Arsenal of Freedom",
22 => "Symbiosis",
23 => "Skin of Evil",
24 => "We'll Always Have Paris",
25 => "Conspiracy",
26 => "The Neutral Zone",
)
);
/branches/live/media/video/series/includes/stargate.php
0,0 → 1,385
<?php
 
$stargate = array(
// 'ignore' => true,
'channel' => 'YouTube',
'showtimes' => 'N/A',
'seen' => array(array(1, 44)),
'seasons' => array(22, 22, 22, 22, 22, 22, 22, 20, 20, 20),
'episode_list' => 'wiki:en:List_of_Stargate_SG-1_episodes'
);
 
$stargate_de = array(
'ignore' => true,
'channel' => 'Tele 5',
'showtimes' => 'N/A',
'seen' => array(array(1, 19)),
'last_seen' => mktime(18, 10, 0, 10, 19, 2011),
'seasons' => array(22, 22, 22, 22, 22, 22, 22, 20, 20, 20, 'Filme' => 2),
'episodes' => array(
1 => "Das Tor zum Universum, Teil 1 (Children of the Gods, Part 1)",
2 => "Das Tor zum Universum, Teil 2 (Children of the Gods, Part 2)",
3 => "Der Feind in seinem Körper (The Enemy Within)",
4 => "Verraten und Verkauft (Emancipation)",
5 => "Die Seuche (The Broca Divide)",
6 => "Das Erste Gebot (The First Commandment)",
7 => "Die Auferstehung (Cold Lazarus)",
8 => "Die Macht Der Weisen (The Nox)",
9 => "Die Auserwählten (Brief Candle)",
10 => "Im Reich des Donnergottes (Thor’s Hammer)",
11 => "Die Qualen des Tantalus (The Torment of Tantalus)",
12 => "Blutsbande (Bloodlines)",
13 => "Feuer und Wasser (Fire and Water)",
14 => "Der Kuss der Göttin (Hathor)",
15 => "Cassandra (Singularity)",
16 => "Vergeltung (Cor-Ai)",
17 => "Enigma (Enigma)",
18 => "Im Ewigen Eis (Solitudes)",
19 => "Übermenschen (Tin Man)",
20 => "Die Invasion, Teil 1 (There but for the grace of God)",
21 => "Die Invasion, Teil 2 (Politics)",
22 => "Die Invasion, Teil 3 (Within the Serpent’s Grasp)",
23 => "Die Invasion, Teil 4 (The Serpent’s Lair)",
24 => "Freund oder Feind? (In the Line of Duty)",
25 => "Zerstörerin der Welten (Prisoners)",
26 => "Virtueller Alptraum (The Gamekeeper)",
27 => "Der Sarkophag (Need)",
28 => "Rückkehr des Thor (Thor’s Chariot)",
29 => "Trojanische Kugel (Message in a Bottle)",
30 => "Der verlorene Sohn (Family)",
31 => "Sha’res Rückkehr (Secrets)",
32 => "Insekten des Todes (Bane)",
33 => "Die Tok’ra, Teil 1 (The Tok’ra, Part 1)",
34 => "Die Tok’ra, Teil 2 (The Tok’ra, Part 2)",
35 => "Geister (Spirits)",
36 => "Das zweite Tor (Touchstone)",
37 => "Das schwarze Loch (A Matter of Time)",
38 => "Die fünfte Spezies (The Fifth Race)",
39 => "Der Sturz des Sonnengottes (Serpent’s Song)",
40 => "Seelenwanderung (Holiday)",
41 => "Tödliche Klänge (One False Step)",
42 => "Neue Feinde (Show and Tell)",
43 => "1969 (1969)",
44 => "Die Höhle des Löwen, Teil 1 (Out of Mind)",
45 => "Die Höhle des Löwen, Teil 2 (Into the Fire)",
46 => "Seth (Seth)",
47 => "Die Saat des Verrats (Fair Game)",
48 => "Besessen (Legacy)",
49 => "Die Lektion der Orbaner (Learning Curve)",
50 => "Lebenslinien (Point of View)",
51 => "Kopfgeldjäger (Deadman Switch)",
52 => "Dämonen (Demons)",
53 => "Regeln der Kriegsführung (Rules of Engagement)",
54 => "Sha’res Tod (Forever in a Day)",
55 => "Vergangenheit und Gegenwart (Past and Presence) (10.05.2011 18:10))",
56 => "Jolinars Erinnerungen (Jolinar’s Memories)",
57 => "Apophis’ Rückkehr (The Devil You Know)",
58 => "Außerirdische auf dem Vormarsch (Foothold)",
59 => "Die Tollan-Triade (Pretense)",
60 => "Urgo (Urgo)",
61 => "O’Neill und Laira (A Hundred Days) (18.05.2011 18:10)",
62 => "O’Neill auf Abwegen (Shades of Grey)",
63 => "Tödlicher Verrat (New Ground)",
64 => "Harsesis’ Rettung (Maternal Instinct) (23.05.2011 18:10)",
65 => "Der Kristallschädel (Crystal Skull)",
66 => "Nemesis, Teil 1 (Nemesis)",
67 => "Nemesis, Teil 2 (Small Victories)",
68 => "Die andere Seite der Medaille (The other Side)",
69 => "Das Vermächtnis der Antiker (Upgrades)",
70 => "Shan’aucs Opfer (Crossroads)",
71 => "Gipfeltreffen (Divide and Conquer)",
72 => "Kein Ende in Sicht (Window of Opportunity)",
73 => "Der Planet des Wassers (Watergate)",
74 => "Die Unas (The First Ones)",
75 => "Die Enkaraner (Scorched Earth)",
76 => "Der Planet der Eiszeit (Beneath the Surface)",
77 => "Kein Zurück (Point of No Return)",
78 => "Rettung im All (Tangent)",
79 => "Die Rückkehr der Osiris (The Curse)",
// 80 => "Die verhinderte Allianz (Serpent's Venom)",
81 => "Kettenreaktion (Chain Reaction) (15.06.2011 18:05)",
82 => "2010 (2010)",
83 => "Unbegrenztes Wissen (Absolute Power)",
84 => "Das Licht (The Light)",
85 => "Das Wunder (Prodigy)",
86 => "Die falsche Wahl (Entity / Child's Play)",
87 => "Doppelter Einsatz (Double Jeopardy)",
88 => "Exodus (Exodus)",
89 => "Todfeinde (Enemies)",
90 => "Teal'cs Prüfung (Threshold)",
91 => "Das Opfer (Ascencion)",
92 => "Der fünfte Mann (The fifth Man)",
93 => "Roter Himmel (Red Sky)",
94 => "Das Übergangsritual (The Rite of Passage)",
95 => "Chaka (Beast of Burden)",
96 => "Das Tempelgrab (The Tomb)",
97 => "Der Kampf der Tollaner (Between two Fires)",
98 => "2001 (2001)",
99 => "Verzweiflungstat (Desperate Measures)",
100 => "Wurmloch extrem (Wormhole X-Treme)",
101 => "Bewährungsprobe (Proving Ground)",
102 => "48 Stunden (48 Hours)",
103 => "Neue Zeiten (Summit)",
104 => "Elliot’s große Mission (Last Stand)",
105 => "Das Ende der Welt (Fail Safe)",
// 106 => "Die Jaffa-Rebellion (The Warrior)",
107 => "Reese (Menace)",
108 => "Der Wächter (The Sentinel)",
109 => "Die Entscheidung (Meridian)",
110 => "Das Geheimnis der Asgard (Revelations)",
111 => "Die Wiedergutmachung, Teil 1 (Redemption, part 1)",
112 => "Die Wiedergutmachung, Teil 2 (Redemption, part 2)",
113 => "Notlandung (Descent)",
114 => "Virus aus dem Eis (Frozen)",
115 => "In den Händen der Goa’uld (Nightwalkers)",
116 => "Am Abgrund (Abyss)",
117 => "Ein übermächtiger Feind (Shadow Play)",
118 => "Wahre Helden (The Other Guys)",
119 => "Das Bündnis (Allegiance)",
120 => "Heilung (The Cure)",
121 => "Prometheus (Prometheus)",
122 => "Unnatürliche Auslese (Unnatural Selection)",
123 => "Die Unsichtbaren (Sight Unseen)",
124 => "Das Machtkartell (Smoke and Mirrors)",
125 => "Das Verlorene Paradies (Paradise Lost)",
126 => "Metamorphose (Metamorphosis)",
127 => "Enthüllung (Disclosure)",
128 => "Gestrandet (Forsaken)",
129 => "Hilfe aus der Traumwelt (Changeling)",
130 => "Vergangenheit (Memento)",
131 => "Jonas’ Visionen (Prophecy)",
132 => "Der Kreis schließt sich (Full Circle)",
133 => "Alles auf eine Karte, Teil 1 (Fallen) (25.08.2011 18:10)",
134 => "Alles auf eine Karte, Teil 2 (Home coming)",
135 => "Der falsche Klon (Fragile Balance)",
136 => "Orpheus (Orpheus)",
137 => "Die Macht des Speichers (Revisions)",
138 => "Das Rettungsboot (Lifeboat)",
139 => "Die Naquadah-Mine (Enemy Mine)",
140 => "Space-Rennen (Space Race)",
141 => "Avenger 2.0 (Avenger 2.0)",
142 => "Die Hak’tyl (Birthright)",
143 => "Evolution, Teil 1 (Evolution, part 1)",
144 => "Evolution, Teil 2 (Evolution, part 2)",
145 => "Grace (Grace)",
146 => "Kiannas Symbiont (Fallout)",
147 => "Daniels Träume (Chimera)",
148 => "Bote des Todes (Death Knell)",
149 => "Helden, Teil 1 (Heroes, part 1)",
150 => "Helden, Teil 2 (Heroes, part 2)",
151 => "Anna (Resurrection)",
152 => "Der Neue Präsident (Inauguration)",
153 => "Die verlorene Stadt, Teil 1 (The lost City, part 1)",
154 => "Die verlorene Stadt, Teil 2 (The lost City, part 2)",
// 155 => "Neue Machtverhältnisse, Teil 1 (New Order, part 1)",
// 156 => "Neue Machtverhältnisse, Teil 2 (New Order, part 2)",
157 => "Colonel Vaselov (Lockdown)",
158 => "Stunde der Bewährung (Zero Hour)",
159 => "Soren (Icon)",
160 => "Avatar (Avatar)",
161 => "Affinität (Affinity)",
162 => "Colson (Covenant)",
163 => "Die Vertreibung (Sacrifices)",
164 => "Endspiel (Endgame)",
165 => "Gemini (Gemini)",
// 166 => "Vala (Prometheus Unbound)",
// 167 => "König Arkhan (It's good to be King)",
// 168 => "Konfrontation (Full Alert)",
// 169 => "Joe (Citizen Joe)",
// 170 => "Abrechnung, Teil 1 (Reckoning, part 1)",
// 171 => "Abrechnung, Teil 2 (Reckoning, part 2)",
// 172 => "Jim (Threads)",
// 173 => "Möbius, Teil 1 (Moebius, part 1)",
// 174 => "Möbius, Teil 2 (Moebius, part 2)",
 
// 175 Avalon, Teil 1 Avalon, part 1 Lieutenant Colonel Mitchell, befehlshabender Pilot der F-302s, die SG-1 in Antarktika (siehe 7x22) verteidigten, übernimmt die Führung von SG-1. Da alle alten Mitglieder mit anderen Projekten beschäftigt sind, erhält er die Aufgabe, ein neues Team aufzubauen. Nachdem seine Bemühungen, das alte Team wieder zusammen zu führen, scheitern, kommt ihm der Zufall zur Hilfe. Vala (siehe 8x12) „verkettet“ sich mit zwei Armbändern mit Daniel Jackson, damit dieser ihr bei der Suche nach einem Schatz hilft, der laut ihrer Informationen wohl auf der Erde zu finden ist. Da beide sterben würden, wenn sie sich zu weit voneinander entfernten, ist Daniel nun gezwungen, in Valas Nähe zu bleiben und kann seine geplante Reise mit der Daedalus nach Atlantis nicht antreten. So brechen die drei begleitet von Teal'c (der eigentlich damit beschäftigt ist, eine Regierungsstruktur unter den freien Jaffa aufzubauen) auf, um den mysteriösen Schatz zu finden.
// 2 176 Avalon, Teil 2 Avalon, part 2 Das Team findet nach gefährlichen Prüfungen tatsächlich einen Schatz. Außerdem auch ein Buch und ein Antikergerät. Das Buch gibt Hinweise darauf, dass noch nicht aufgestiegene Antiker in einer fernen Galaxie leben könnten. Das Gerät dient anscheinend zur Langstreckenkommunikation. Daniel und Vala benutzen es und finden sich im Körper zweier Dorfbewohner auf einem fremden Planeten wieder, während ihre eigenen Körper bewusstlos im SGC zurückbleiben. Von einer einheimischen Untergrundorganisation erfahren die beiden, dass sie sich in einer von Wesen namens „Ori“ kontrollierten Galaxie befinden. Die Ori behaupten, die Menschen erschaffen zu haben und fordern unbedingte Anbetung. Daniel vermutet, dass es sich bei ihnen um eine Abspaltung der Antikerrasse – damals nannten sie sich „Alteraner“ – handeln könnte, die sich – anders als die bisher bekannten aufgestiegenen Wesen – in die materielle Welt einmischen und anbeten lassen. Die neue Ärztin des SGC, Dr. Lam (General Landrys Tochter), ist besorgt um Daniels und Valas Gesundheitszustand. Vala wird als „Ketzerin“ erkannt und verbrannt. Ein Prior der Ori erscheint, erweckt Vala wieder zum Leben und bittet Daniel und Vala, ihm zu folgen. Währenddessen wird der zweifelhafte Jaffaführer Gerak durch geschicktes Machtspiel zum Führer der neuen Jaffanation.
// 3 177 Das Geheimnis der Ori Origin Daniel und Vala sind immer noch in einer fernen Galaxis und fremden Körpern gestrandet. Ein Priester der Ori transportiert sie zu einem Heiligtum dieser geheimnisvollen Lichtwesen. Wie sich herausstellt, halten die Ori sich für Götter und wollen die Bewohner der Milchstraße zum Glauben an ihre barbarische Religion bekehren...
// 4 178 Unsichtbare Fesseln The Ties that bind Vala und Daniel sind von den Jaffa-Armbändern befreit und gehen wieder getrennte Wege. Wie sich herausstellt, ist ihre mentale Verbindung damit jedoch nicht beendet. Jetzt kann nur noch der Wissenschaftler Arlos helfen, dem Vala einst die Armbänder gestohlen hat. Doch Arlos ist nicht sehr kooperationsbereit...
// 5 179 Höhere Mächte (DVD) / Machtspiele (TV) The Powers that be Das SG-1-Team und Vala begeben sich auf den Planeten P8X-412, um zu verhindern, dass die Ori dort die Macht übernehmen. Verblüfft stellen Colonel Mitchell und seine Leute fest, dass Vala von der Bevölkerung des Planeten als Göttin verehrt wird...
// 6 180 Das Schutzschild (DVD) / Der Brückenkopf (TV) Beachhead Ein Prior ist auf den Jaffa-Planeten Kallana gekommen und fordert die Unterwerfung unter die Ori. Als die Bewohner ihn vertreiben wollen, erzeugt er einen Schutzschild, der sich nach und nach über den gesamten Planeten ausdehnt. Das SG-1-Team wird entsandt, den Prior unschädlich zu machen...
// 7 181 Ex-Deus Machina Ex Deus Machina In Virginia wird ein Jaffa Opfer eines Unfalls mit Fahrerflucht. Was er hier zu suchen hatte, ist zunächst rätselhaft. Bei ihren Ermittlungen auf Dakara erfahren Mitchell und Teal'C, dass die Jaffa auf der Jagd nach Baal sind, der sich angeblich auf der Erde versteckt hält...
// 8 182 Babylon Babylon Vor 5000 Jahren rebellierten die Jaffa-Krieger von Sodan gegen ihren Systemlord und flüchteten auf einen abgelegenen Planeten. Doch als das SG-1-Team den geheimen Rückzugsort entdeckt, gerät es in einen Hinterhalt und Colonel Mitchell wird verschleppt... In dieser Folge werden Jackson, Carter und Teal’c wieder "offiziell" Teil des "neuen" SG-1-Teams unter Mitchell.
// 9 183 Der Prototyp Prototype Ein genetisches Experiment von Anubis, ein weiterentwickelter Mensch mit u.a. telekinetischen Fähigkeiten , wird gefunden und später von den Menschen im Kampf getötet. Er war der Prototyp für Anubis' neue Armee aus Elitekriegern.
// 10 184 Der apokalyptische Reiter, Teil 1 The fourth Horseman, part 1 Auch bekannt als "Die Rückkehr von Orlin". Der aufgestiegene Antiker Orlin kehrt zurück als Kind (so kann er mehr Informationen im Gehirn speichern) und versucht den Menschen bei der Bekämpfung der Ori-Seuche zu helfen, durch die Erläuterungen von Orlin werden in dieser Episode die Motive der Ori klar.
// 11 185 Der apokalyptische Reiter, Teil 2 The fourth Horseman, part 2 Die Ori-Seuche breitet sich weiter auf der Erde aus. Um die für das Heilmittel benötigte Prioren-DNS zu besorgen, greifen Daniel und Mitchell einen der Diener der Ori mit Carters neu entwickelter Waffe an. Auf Dakara wurde Gerak inzwischen zum Prior erklärt...
// 12 186 Kollateralschaden Collateral Damage SG-1 will diplomatische Beziehungen zum Planeten Galar aufbauen. Die Bewohner dort haben herausgefunden, wie das Gedächtnis von einer Person auf beliebige andere übertragen werden kann. Doch dann gerät Mitchell unerwartet unter Mordverdacht...
// 13 187 Der Ripple-Effekt (DVD) / Parallelwelten (TV) Ripple Effect Das SG-1-Team kommt gleich in doppelter Ausführung von einer Mission zurück. Genetisch sind die zwei Versionen von Mitchell, Carter, Daniel und Teal’C nicht voneinander zu unterscheiden – aber anscheinend stammt eines der Teams aus einer alternativen Realität...
// 14 188 Die Festung (DVD) / Das Referendum (TV) Stronghold Die Jaffa-Führer wollen über demokratische Wahlen für die Jaffa-Nation abstimmen. Die Zustimmung gilt als sicher – doch dann verweigert sich ein Anführer nach dem anderen. Bra'Tac und Teal’C vermuten eine gezielte Manipulation. Bei ihren Nachforschungen stoßen sie auf einen alten Feind.
// 15 189 Ethon Ethon Jared Kane trifft mit beunruhigenden Neuigkeiten ein: Die Rand haben sich mit den Ori verbündet und von ihnen eine gefährliche Satellitenwaffe erhalten. Jetzt wollen sie ihren alten Feind, die kaledonische Föderation, mit Hilfe der Waffe vernichten. Das SG-1-Team rückt aus, um den drohenden Völkermord zu verhindern...
// 16 190 Ohne Netz (DVD) / Das verschwundene Stargate (TV) Off the Grid Das SG-1-Team fliegt zum Planeten P6G-462, um dort den Handel mit einer süchtig machenden Substanz namens Kassa zu untersuchen, die überall in den Galaxien verkauft wird. Als sie zurück wollen, verschwindet plötzlich das Stargate, das sie kurz vorher benutzt haben...
// 17 191 Die Plage / Die Käferplage (TV) The Scourge Das SG-1-Team muss britische, französische und chinesische Diplomaten auf eine Tour zur Gammaseite begleiten, wo diese eine Forschungsstation besuchen wollen. Dort kommt es zu einem Unfall im Labor und tödliche Käfer drohen alles Leben im Umkreis der Station zu vernichten.
// 18 192 Arthurs Umhang / Neue Dimensionen (TV) Arthur's Mantle Carter lüftet das Geheimnis eines alten Antiker-Gerätes, das im englischen Glastonbury gefunden wurde. Bei dem Apparat scheint es sich um eine Maschine zu handeln, die Transport und Kommunikation zwischen verschiedenen Dimensionen ermöglicht!
// 19 193 Der Kreuzzug Crusade Vala taucht in Daniels Körper beim Stargatekommando auf. Sie erzählt von einem geplanten Kreuzzug der Ori gegen die Ungläubigen im Universum. Die Ori wollen durch ein Superstargate in die Milchstraße eindringen. Ein intergalaktischer Heiliger Krieg scheint unausweichlich.
// 20 194 Camelot Camelot Der heilige Krieg zwischen den Menschen und den Ori scheint unausweichlich. Die Übermacht der Ori könnte nur durch die geheimnisvolle Waffe des Zauberers Merlin gebrochen werden, die sich der Legende nach in Camelot befinden soll.
 
// 1 195 Fleisch und Blut Flesh and Blood 25. Juli 2007 14. Juli 2006
// Während die Ori in Dakara einfallen, wird Valas Tochter Adria geboren. Zu Valas Entsetzen altert das Mädchen mit erstaunlicher Geschwindigkeit.
// 2 196 In Morpheus Armen Morpheus 1. August 2007 21. Juli 2006
// SG-1 und andere Mitglieder des SGC finden auf einem Planeten ein ganzes Dorf voller Toter, die anscheinend alle im Schlaf gestorben sind. Das Team stellt bald fest, dass auch sie sich mit der Schlafkrankheit infiziert haben.
// 3 197 Das Pegasus-Prinzip The Pegasus Project 1. August 2007 28. Juli 2006
// SG-1 reist nach Atlantis, um das Eindringen weiterer Ori-Schiffe in ihre Galaxie zu verhindern. Außerdem erhalten sie neue Hinweise auf Merlins Waffe.
// 4 198 Insiderwissen Insiders 8. August 2007 4. August 2006
// Ba'al lässt sich vom SGC Gefangen nehmen. Er bietet Informationen über die Waffe Merlins. Im Gegenzug soll SG-1 seine Klone ausschalten, die sich gegen ihn gewendet haben.
// 5 199 Mutanten Uninvited 8. August 2007 11. August 2006
// Auf P9J-333 werden die Bewohner durch ein wildes Tier angegriffen. Teal'c, Carter und Vala gehen der Sache auf den Grund - und stellen fest, dass die Existenz der Bestien auf die Missionen des SGC zurückzuführen ist.
// 6 200 200 200 15. August 2007 18. August 2006
// Mitchells 200. Reise durch das Stargate steht an. Zuvor muss SG-1 jedoch mit Marty, dem Produzenten von Wormhole X-Treme!, über sein Skript zur Verfilmung der Serie sprechen.
// 7 201 Adrias Macht Counter-Strike 15. August 2007 25. August 2006
// Die Jaffa nutzen die Antikerwaffe auf Dakara, um die Ori zu bekämpfen - und töten damit alle Bewohner eines soeben bekehrten Planeten. Bra'tac und General Landry versuchen durch Verhandlungen mit Se'tak Schlimmeres zu verhindern, doch der zeigt sich uneinsichtig. Währenddessen entbrannt ein Kampf zwischen SG-1 und einigen Jaffa, die das nunmehr verlassene Ori-Schiff für sich beanspruchen.
// 8 202 Tödliche Erinnerungen Memento Mori 22. August 2007 8. September 2006
// Vala verliert nach einer Entführung durch den Trust ihre Erinnerung. Bei einem Überfall auf das Diner, in dem sie arbeitet, überwältigt sie die Räuber instinktiv und macht damit sowohl den Trust als auch das SGC auf sich aufmerksam, die beide versuchen, Vala zurückzubekommen. Bei der resultierenden Verfolgungsjagd gelingt Vala die Flucht - mit Mitchell als Geisel.
// 9 203 Die Kriegserklärung Company of Thieves 22. August 2007 15. September 2006
// Mitchell muss einen wagemutigen Undercover-Plan durchziehen, nachdem Teile seines Teams von der Lucian Allianz gefangen genommen und die Odyssey gekapert worden ist.
// 10 204 Die Suche, Teil 1 Quest, part 1 29. August 2007 22. September 2006
// SG-1 befindet sich zwischen zwei Feinden - einem alten und einem neuen - als man zu einer Mission aufbricht, deren Ziel es ist den Heiligen Gral zu finden, bevor die Ori dies tun.
// 11 205 Die Suche, Teil 2 Quest, part 2 29. August 2007 9. Januar 2007
// Nachdem sich der Heilige Gral nur als Hologram herausgestellt hat, findet das SG-1 Team den gefrorenen Körper von Merlin. Sie beleben ihn wieder und ein Wettlauf mit der Zeit beginnt, denn Merlin ist dem Tode nahe.
// 12 206 Die Linie im Sand Line in the Sand 6. September 2007 16. Januar 2007
// Carter benutzt Merlins Technologie, um ein komplettes Dorf einer Phasenverschiebung zu unterziehen, um es so vor einem Angriff der Ori zu schützen. Doch die Technologie ist unausgereift und das Leben aller Dorfbewohner und SG-1 steht auf dem Spiel.
// 13 207 Die Parallelwelt The Road not taken 6. September 2007 23. Januar 2007
// Nach einem Unfall ist Carter in einer Parallelwelt gefangen, in der die Ori die Erde angreifen. Doch ist die Bedrohung durch die Ori ihre geringste Sorge, denn ihr wird es nicht erlaubt zurückzukehren.
// 14 208 Daniel, der Prior The Shroud 12. September 2007 30. Januar 2007
// Auf einem fremden Planeten stellt das SG-1 Team mit erschrecken fest, dass Daniel Jackson in einen Prior der Ori verwandelt wurde.
// 15 209 Der Kopfgeldjäger Bounty 12. September 2007 6. Februar 2007
// Mitchell nimmt an seinem High School Klassentreffen in Kansas teil und wird von Vala begleitet. Was Mitchell nicht weiß, ist, dass er von einem außerirdischen humanoiden Kopfgeldjäger verfolgt wird. Dieser ist darauf aus, das komplette SG-1 Team in seine Gewalt zu bekommen.
// 16 210 Die Geiselnahme Bad Guys 19. September 2007 13. Februar 2007
// Das Stargate-Team landet in einem außerirdischen Museum und wird fälschlicherweise für eine Gruppe von Geiselnehmern gehalten. Da sie einem außerirdischem Polizisten die Situation nicht deutlich machen können, muss SG-1 die Polizei von sich fern halten, indem sie vortäuschen brutale 'Bad Guys' zu sein - bis sie einen Weg nach Hause finden.
// 17 211 Rache muss sein Talion 19. September 2007 20. Februar 2007
// Teal'c ist überzeugt, dass sein ehemaliger Schüler Arkad der Drahtzieher hinter einem Anschlag auf ein Jaffa-Gipfeltreffen ist. Er ignoriert seine SG-1 Kollegen und macht sich alleine auf die Suche nach Arkad, um sich für den Anschlag zu rächen.
// 18 212 Familienbande Family Ties 26. September 2007 27. Februar 2007
// General Landry kümmert sich um seine (Ex-)Frau, die gleichzeitig Dr. Lams Mutter ist, während Vala und ihr räuberische Vater einige Zeit miteinander verbringen und sich herausstellt, dass er der Erde helfen könnte. Doch dafür müsste Vala ihrem Vater Vertrauen entgegenbringen.
// 19 213 Ba’als letztes Gefecht Dominion 26. September 2007 6. März 2007
// SG-1 entwickelt einen Plan um Adria gefangen zu nehmen, Vala soll dabei als Köder genutzt werden. Doch Ba'al hat einen eigenen dunklen Plan, der tödlich für alle Beteiligten Enden könnte. Drastische Schritte müssen unternommen werden, um ihn zu stoppen, doch wird Vala fähig sein das Undenkbare möglich zu machen?
// 20 214 Endlosigkeit Unending 26. September 2007 13. März 2007
// SG-1 ist auf der Odyssey und müssen ihr letztes Gefecht schlagen gegen angreifenden Ori-Schiffe. Dabei erzeugen sie ein Zeiterweiterungsfeld in der nur sie altern und müssen den Rest ihres Lebens miteinander verbringen, während sich die Beziehung des Teams untereinander verändert...
 
/* Filme */
214 => "Die Quelle der Wahrheit (The Ark of Truth)",
215 => "Continuum"
),
'episode_list' => 'wiki:Liste_der_Stargate-Kommando-SG-1-Episoden'
);
 
$stargate_atlantis = array(
'ignore' => true,
'channel' => 'HDD / Tele&nbsp;5 / RTL&nbsp;II',
'showtimes' => 'Do 21:15',
'seen' => array(15),
// 'last_seen' => mktime(18, 10, 0, 10, 19, 2011),
'seasons' => array(20, 20, 20, 20, 20),
'episodes' => array(
// 1 => 'Aufbruch in eine neue Welt (Teil 1) (Rising (Part One))',
// 2 => 'Aufbruch in eine neue Welt (Teil 2) (Rising (Part Two))',
3 => 'Dunkle Schatten (Hide and Seek)',
4 => '38 Minuten (Thirty-Eight Minutes)',
5 => 'Unter Verdacht (Suspicion)',
6 => "Selbstopfer (Childhood's End)",
7 => 'Tödliche Verteidigung (Poisoning the Well)',
8 => 'Im Untergrund (Underground)',
9 => 'Zurück auf die Erde (Home)',
10 => 'Der Sturm (1) (The Storm (1))',
11 => 'Das Auge (2) (The Eye (2))',
12 => 'Der Überlebende (The Defiant One)',
13 => 'Hot Zone (Hot Zone)',
14 => 'Chaya (Sanctuary)',
15 => '10.000 Jahre (Before I Sleep)',
16 => 'Bruderschaft (The Brotherhood)',
17 => 'Nachrichten aus der Pegasus Galaxie (Letters from Pegasus)',
18 => 'Die Gabe (The Gift)',
19 => 'Die Belagerung (Teil 1) (The Siege (Part One))',
20 => 'Die Belagerung (Teil 2) (The Siege (Part Two))',
 
21 => 'Die Belagerung (Teil 3) (The Siege (Part 3))',
22 => 'Der Eindringling (The Intruder)',
23 => 'Der Läufer (DVD) / Dromoys (RTL 2) (Runner)',
// 24 => 'Duett (Duet)',
// 25 => 'Verurteilt (Condemned)',
// 26 => 'Dreifaltigkeit (DVD) / Das Geheimnis der Antiker (RTL 2) (Trinity)',
// 27 => 'Instinkt (Instinct)',
// 28 => 'Die Verwandlung (Conversion)',
// 29 => 'Aurora (Aurora)',
// 30 => 'Die verlorenen Männer (DVD) / Das Enzym (RTL 2) (The Lost Boys)',
// 31 => 'Bienenstock (DVD) / Im Netz der Königin (RTL 2) (The Hive)',
// 32 => 'Offenbarung (DVD) / Epiphanie (RTL 2) (Epiphany)',
33 => 'Kritische Masse (DVD) / Die Goa’uld schlagen zu (RTL 2) (Critical Mass)',
34 => 'Unter Druck (DVD) / Halluzinationen (RTL 2) (Grace Under Pressure)',
// 35 => 'Der Turm (The Tower)',
36 => 'Der lange Abschied (DVD) / Phoebus und Thalan (RTL 2) (The Long Goodbye)',
37 => "Coup D'etat (DVD) / Der Staatsstreich (RTL 2) (Coup D'etat)",
// 38 => 'Michael (Michael)',
// 39 => 'Inferno (Inferno)',
40 => 'Die Verbündeten (DVD) / Das Bündnis (RTL 2) (Allies)',
41 => "Niemandsland (No Man's Land)",
42 => "Ein schlechter Plan (Misbegotten)",
42 => "Der Zaubertrank (Irresistible)",
44 => "Sateda",
45 => "Der Bruderstreit (Progeny)",
46 => "Atlantis ruft (The Real World)",
47 => "Ein ungewöhnlicher Verbündeter (Common Ground)",
48 => "Der doppelte Rodney (McKay and Mrs. Miller)",
49 => "Phantome (Phantoms)",
50 => "Die Rückkehr (Teil 1) (The Return (Part 1))",
),
'episode_list' => 'wiki:Liste_der_Stargate-Atlantis-Episoden'
);
 
$sgu = array(
'ignore' => true,
'channel' => 'RTL Ⅱ',
'showtimes' => 'Mi 20:00',
'seen' => array(array(1, 28)),
'seasons' => array(20, 20),
'episode_list' => 'wiki:Liste_der_Stargate-Universe-Episoden',
'episodes' => array(
// 1 => "Die Destiny – Teil 1 (Air (1))",
// 2 => "Führungskampf auf der Destiny – Teil 2 (Air (2))",
// 3 => "Rettung für die Destiny – Teil 3 (Air (3))",
// 4 => "Finsternis – Teil 1 (Darkness (1))",
// 5 => "Der Flug ins Licht – Teil 2 (Light (2))",
// 6 => "Außerirdische Invasion (Water)",
// 7 => "Die Rückkehr (Earth)",
// 8 => "Die Zeitreise (Time)",
// 9 => "Gefahr für die Destiny (Life)",
// 10 => "Mordverdacht (Justice)",
// 11 => "Weltraum – Teil 1 (Space (1))",
// 12 => "Uneins – Teil 2 (Divided (2))",
// 13 => "Glaube (Faith)",
// 14 => "Der Genetische Code (Human)",
// 15 => "Verloren (Lost)",
// 16 => "Sabotage",
// 17 => "Halluzinationen (Pain)",
// 18 => "Die Luzianer-Allianz (Subversion)",
// 19 => "Feindlicher Übergriff – Teil 1 (Incursion (1))",
// 20 => "Feindlicher Übergriff – Teil 2 (Incursion (2))",
21 => "Intervention – Teil 3 (Intervention (3))",
22 => "Nachwirkungen (Aftermath)",
23 => "Angedockt (Awakening)",
24 => "Pathogener Keim (Pathogen)",
25 => "Wucherungen (Cloverdale)",
26 => "Der Test (Trial and Error)",
27 => "Das Große Ganze (The Greater Good)",
28 => "Hass (Malice)",
29 => "Scheinleben (Visitation)",
30 => "Unerwartetes Wiedersehen – Teil 1 (Resurgence (1))",
31 => "Erlösung – Teil 2 (Deliverance (2))",
32 => "Zwillingsschicksale (Twin Destinies)",
33 => "Bündnisse (Alliances)",
34 => "Hoffnung (Hope)",
35 => "Trojanische List (Seizure)",
36 => "Die Jagd (The Hunt)",
37 => "Verwandtschaft (Common Descent)",
38 => "Epilog (Epilogue)",
39 => "Blockade",
40 => "Im Ruhezustand (Gauntlet)"
)
);
/branches/live/media/video/series/includes/columbo.php
0,0 → 1,163
<?php
 
$columbo = array(
'ignore' => true,
'channel' => 'ITV1/3',
'showtimes' => 'So 11:10',
'seen' => array(1),
'last_seen' => mktime(11, 10, 0, 6, 12, 2011),
'seasons' => array(9, 8, 8, 6, 6, 3, 5, 4, 6, 14),
'episode_list' => 'wiki:en:List_of_Columbo_episodes',
'episodes' => array(
1 => "Prescription: Murder",
2 => "Ransom for a Dead Man",
// 3 => "Tödliche Trennung (Murder by the book)",
4 => "Death Lends a Hand",
// 5 => "Mord unter sechs Augen (Dead weight)",
6 => "Suitable for Framing",
// 7 => "Schritte aus dem Schatten (Lady in waiting",
8 => "Short Fuse",
9 => "Blueprint for Murder",
// 10 => "Etüde in schwarz (Étude in black)",
// 11 => "Blumen des Bösen (The greenhouse jungle)",
// 12 => "Wenn der Eismann kommt (The most crucial game)",
// 13 => "Alter schützt vor Torheit nicht (Dagger of the mind)",
14 => "Requiem for a Falling Star",
15 => "A Stitch In Crime",
// 16 => "Schach dem Mörder (The most dangerous match)",
17 => "Double Shock",
// 18 => "Ein Hauch von Mord (Lovely but lethal)",
// 19 => "Wein ist dicker als Blut (Any old port in a storm)",
// 20 => "Stirb für mich (Candidate for crime)",
21 => "Double Exposure",
// 22 => "Schreib oder stirb (Publish or perish)",
// 23 => "Teuflische Intelligenz (Mind over mayhem)",
// 24 => "Schwanengesang (Swan song)",
// 25 => "Meine Tote – deine Tote (A friend in deed)",
// 26 => "An Exercise in Fatality",
27 => "Negative Reaction",
// 28 => "By Dawn's Early Light",
// 29 => "Troubled waters",
// 30 => "Playback",
// 31 => "Der Schlaf, der nie endet (A deadly state of mind)",
// 32 => "Forgotten Lady",
// 33 => "Mord in der Botschaft (A case of immunity)",
34 => "Identity Crisis",
35 => "A Matter of Honor",
// 36 => "Wenn der Schein trügt (Now you see him)",
// 37 => "Last Salute to the Commodore",
// 38 => "Mord im Bistro (Fade in to murder)",
// 39 => "Bei Einbruch Mord (Old-fashioned murder)",
// 40 => "Todessymphonie (The bye-bye sky high I.Q. murder case)",
41 => "Try and Catch Me",
// 42 => "Mord à la carte (Murder under glass)",
// 43 => "Mord in eigener Regie (Make me a perfect murder)",
// 44 => "Mord per Telefon (How to dial a murder)",
// 45 => "The Conspirators",
// 46 => "Tödliche Tricks (Columbo goes to the guillotine)",
// 47 => "Die vergessene Tote (Murder, smoke and shadows)",
// 48 => "Sex and the Married Detective",
// 49 => "Tödliche Kriegsspiele (auch: Täuschungsmanöver) (Grand deceptions)",
// 50 => "Murder, a Self Portrait",
// 51 => "Columbo Cries Wolf",
// 52 => "Mord nach Termin (Agenda for murder)",
// 53 => "Ruhe sanft, Mrs. Columbo (Rest in peace, Mrs. Columbo)",
54 => "Uneasy Lies the Crown",
// 55 => "Niemand stirbt zweimal (Murder in Malibu)",
// 56 => "Luzifers Schüler (Columbo goes to college)",
57 => "Caution: Murder Can Be Hazardous To Your Health",
// 58 => "Tödliche Liebe (Columbo and the murder of a rock star)",
// 59 => "Tödlicher Jackpot (Death hits the jackpot)",
// 60 => "Bluthochzeit (No time to die)",
61 => "A Bird in the Hand",
62 => "It's All in the Game",
63 => "Butterfly in Shades of Grey",
// 64 => "Undercover",
// 65 => "Strange Bedfellows",
// 66 => "A Trace of Murder – 25th Anniversary",
67 => "Ashes To Ashes",
68 => "Murder With Too Many Notes",
// 69 => "Die letzte Party (Columbo Likes the Nightlife)"
)
);
 
$columbo_de = array(
'ignore' => true,
'channel' => 'Super&nbsp;RTL / ORF2',
'showtimes' => 'So 22:30 / 23:55',
// 'seen' => array(1),
// 'last_seen' => mktime(11, 10, 0, 6, 12, 2011),
'seasons' => array(9, 8, 8, 6, 6, 3, 5, 4, 6, 14),
'episode_list' => 'wiki:Columbo#Episoden',
'episodes' => array(
1 => "Mord nach Rezept (Prescription: Murder)",
2 => "Lösegeld für einen Toten (Ransom for a Dead Man)",
// 3 => "Tödliche Trennung (Murder by the book)",
4 => "Mord mit der linken Hand (Death Lends a Hand)",
5 => "Mord unter sechs Augen (Dead Weight)",
6 => "Mord in Pastell (Suitable for framing)",
// 7 => "Schritte aus dem Schatten (Lady in waiting)",
8 => "Zigarren für den Chef (Short Fuse)",
9 => "Ein Denkmal für die Ewigkeit (Blueprint for Murder)",
10 => "Étude in schwarz (Étude in black)",
// 11 => "Blumen des Bösen (The greenhouse jungle)",
// 12 => "Wenn der Eismann kommt (The most crucial game)",
13 => "Alter schützt vor Torheit nicht (Dagger of the mind)",
// 14 => "Klatsch kann tödlich sein (Requiem for a falling star)",
// 15 => "Zwei Leben an einem Faden (A Stitch In Crime)",
// 16 => "Schach dem Mörder (The most dangerous match)",
// 17 => "Doppelter Schlag (Double shock)",
// 18 => "Ein Hauch von Mord (Lovely but lethal)",
19 => "Wein ist dicker als Blut (Any Old Port in a Storm)",
20 => "Stirb für mich (Candidate for Crime)",
21 => "Ein gründlich motivierter Tod (Double Exposure)",
22 => "Schreib oder stirb (Publish or Perish)",
23 => "Teuflische Intelligenz (Mind Over Mayhem)",
// 24 => "Schwanengesang (Swan song)",
// 25 => "Meine Tote – deine Tote (A friend in deed)",
26 => "Geld, Macht und Muskeln (An Exercise in Fatality)",
27 => "Momentaufnahme für die Ewigkeit (Negative Reaction)",
28 => "Des Teufels Corporal (By Dawn's Early Light)",
29 => "Traumschiff des Todes (Troubled Waters)",
// 30 => "Playback",
31 => "Der Schlaf, der nie endet (A Deadly State of Mind)",
32 => "Tödliches Comeback (Forgotten Lady)",
33 => "Mord in der Botschaft (A Case of Immunity)",
// 34 => "Tod am Strand (Identity crisis)",
35 => "Blutroter Staub (A Matter of Honor)",
// 36 => "Wenn der Schein trügt (Now you see him)",
37 => "Der alte Mann und der Tod (Last Salute to the Commodore)",
// 38 => "Mord im Bistro (Fade in to murder)",
// 39 => "Bei Einbruch Mord (Old-fashioned murder)",
// 40 => "Todessymphonie (The bye-bye sky high I.Q. murder case)",
41 => "Alter schützt vor Morden nicht (Try and Catch Me)",
// 42 => "Mord à la carte (Murder under glass)",
43 => "Mord in eigener Regie (Make Me A Perfect Murder)",
44 => "Mord per Telefon (How to Dial a Murder)",
45 => "Waffen des Bösen (The conspirators) (06.11.2011 22:20)",
46 => "Tödliche Tricks (Columbo Goes to the Guillotine)",
47 => "Die vergessene Tote (Murder, Smoke and Shadows)",
48 => "Black Lady (Sex and the Married Detective)",
49 => "Tödliche Kriegsspiele (auch: Täuschungsmanöver) (Grand deceptions)",
50 => "Selbstbildnis eines Mörders (Murder, a Self Portrait)",
51 => "Wer zuletzt lacht… (Columbo Cries Wolf)",
52 => "Mord nach Termin (Agenda for Murder)",
53 => "Ruhe sanft, Mrs. Columbo (Rest in Peace, Mrs. Columbo)",
// 54 => "Schleichendes Gift (Uneasy lies the crown)",
// 55 => "Niemand stirbt zweimal (Murder in Malibu)",
56 => "Luzifers Schüler (Columbo Goes to College)",
57 => "Der erste und der letzte Mord (Caution: Murder Can Be Hazardous To Your Health)",
58 => "Tödliche Liebe (Columbo And The Murder of a Rock Star)",
59 => "Tödlicher Jackpot (Death Hits the Jackpot)",
60 => "Bluthochzeit (No time to die)",
// 61 => "Ein Spatz in der Hand (A Bird in the Hand) (2011-07-10 11:15)",
62 => "Der Tote in der Heizdecke (It's All in the Game)",
63 => "Todesschüsse auf dem Anrufbeantworter (Butterfly in Shades of Grey)",
64 => "Undercover",
65 => "Mord unter Brüdern (auch: Seltsame Bettgenossen) (Strange Bedfellows)",
66 => "Keine Spur ist sicher (A trace of murder – 25th anniversary)",
// 67 => "Das Aschenpuzzle (Ashes To Ashes)",
// 68 => "Mord nach Takten (Murder With Too Many Notes) (2011-07-23)",
// 69 => "Die letzte Party (Columbo Likes the Nightlife)"
)
);
/branches/live/media/video/series/includes/alf.php
0,0 → 1,113
<?php
 
$serien['<span class="alf">ALF</span>'] = array(
'channel' => 'Tele 5',
'showtimes' => 'Sa 14:05–15:30',
'seen' => array(array(1, 21)),
'seasons' => array(26, 26, 26, 24),
'episode_list' => 'wiki:Liste der Alf-Episoden',
'episodes' => array(
1 => 'Hallo, da bin ich (A.L.F)',
2 => 'Die Nacht, in der die Pizza kam (Strangers In The Night)',
3 => 'Katzenjammer (Looking For Lucky)',
4 => 'Großer Mann was nun? (Pennsylvania 6-5000)',
5 => "Parasit mit Puderquaste (Keepin' The Faith)",
6 => 'Ganz im Vertrauen (For Your Eyes Only)',
7 => 'Ein Mädchen namens Rhonda (Help Me Rhonda)',
8 => "Eifersucht nach Noten (Don't It Make My Brown Eyes Blue)",
9 => 'Der Sprung in die Tiefe (Jump)',
10 => 'Die Spritztour (Baby, You Can Drive My Car)',
11 => 'Fröhliche Ferien (On The Road Again)',
12 => 'Eine schöne Bescherung (Oh, Tannerbaum)',
13 => 'Wenn Schwiegermutter kommt (Mother And Child Reunion)',
14 => 'Die Fernsehfamilie (Little Bit Of Soap)',
15 => "Mit den besten Wünschen aus dem Jenseits (I've Got A New Attitude)",
16 => 'Gestatten, mein Name ist Schlegel - Teil 1 (Try To Remember - Part 1)',
17 => 'Gestatten, mein Name ist Schlegel - Teil 2 (Try To Remember - Part 2)',
18 => 'Der Ausreißer (Border Song)',
19 => 'Ein Käfig für den Narren (Wild Thing)',
20 => 'Der Rollentausch (Going Out Of My Head Over You)',
21 => 'Das Fenster zum Garten (Look Through Any Window)',
22 => "Bühne frei für Spargelspitzen (It Isn't Easy... Bein' Green)",
23 => 'Schulden und Sühne (The Gambler)',
24 => 'Brians Sternstunde (Weird Science)',
25 => 'Der Kammerjäger und die Kakerlake (La Cucaracha)',
26 => 'Der blinde Passagier (Come Fly With Me)',
27 => "Stets zu ihren Diensten (Working My Way Back To You)",
28 => "Reif für die Insel (The Ballad Of Gilligan's Island)",
29 => "Ein Schock fürs Leben (Take A Look At Me Now)",
30 => "In der Kutte des Büßers (Wedding Bell Blues)",
31 => "Zur besten Sendezeit (Prime Time)",
32 => "Das Kostümfest (Some Enchanted Evening)",
33 => "Der Schönheitswettbewerb (Oh, Pretty Woman)",
34 => "Schluckauf Marke Melmac (Something's Wrong With Me)",
35 => "Eine Reise durch die Nacht (Night Train)",
36 => "Paradies für Flitterwöchner (Isn't It Romantic)",
37 => "Der Traumkandidat (Hail To The Chief)",
38 => "Wenn der Weihnachtsmann kommt - Teil 1 (Alf's Special Christmas - Part 1)",
39 => "Wenn der Weihnachtsmann kommt - Teil 2 (Alf's Special Christmas - Part 2)",
40 => "Der Junge von nebenan (The Boy Next Door)",
41 => "Anwalt in eigener Sache (Can I Get A Witness?)",
42 => "Onkel Albert (We're So Sorry, Uncle Albert)",
43 => "Auf Verbrecherjagd - Teil 1 (Someone To Watch Over Me - Part 1)",
44 => "Auf Verbrecherjagd - Teil 2 (Someone To Watch Over Me - Part 2)",
45 => "Die Untermieterin (We Gotta Get Out Of This Place)",
46 => "Ein Widersacher auf vier Beinen (You Ain't Nothing But A Hound Dog)",
47 => "Auge um Auge (Hit Me With Your Best Shot)",
48 => "Die Beförderung (Movin' Out)",
49 => "Paules Puppenspieler (I'm Your Puppet)",
50 => "Der Geist aus der Flasche (Tequila)",
51 => "Der Schritt in die Öffentlichkeit (We Are Family)",
52 => "Nebenjob gesucht (Varsity Drag)",
53 => "Rendezvous gefälligst (Stop In The Name Of Love)",
54 => "Blick zurück nach vorn (Stairway To Heaven)",
55 => "Nachbarschaftshilfe (Breaking Up Is Hard To Do)",
// 56 => "– (Tonight, Tonight - Part 1)",
// 57 => "– (Tonight, Tonight - Part 2)",
58 => "Reden ist Blech (Promises, Promises)",
59 => "Der mysteriöse Fremde - Teil 1 (Turkey In The Straw - Part 1)",
60 => "Der mysteriöse Fremde - Teil 2 (Turkey In The Straw - Part 2)",
61 => "Auf neuen Wegen (Changes)",
62 => "Ein Hippie namens Willie (My Back Pages)",
63 => "Cousin Blinky (Alone Again, Naturally)",
64 => "Der Zauberlehrling (Do You Believe In Magic?)",
65 => "Der Zeuge im Netz (Hide Away)",
66 => "Ein Fall für drei (Fight Back)",
67 => "Ich und der King (Suspicious Minds)",
68 => "Ein Baby auf Probe (Baby Love)",
69 => "Der Liebesdiener (Standing In The Shadows Of Love)",
70 => "Der Pechvogel (Superstition)",
71 => "Erpresser am Telefon (Running Scared)",
72 => "Zwischen zwei Stühlen (Torn Between Two Lovers)",
73 => "Der Herr der Ameisen (Funeral For A Friend)",
74 => "Bangemachen gilt nicht (Don't Be Afraid Of The Dark)",
75 => "Mutter Langfinger (Have You Seen Your Mother, Baby, Standing In The Shadow?)",
76 => "Der Tramp (Like An Old Time Movie)",
77 => "Die Erde bebt (Shake, Rattle & Roll)",
78 => "Der Geburtshelfer (Having My Baby)",
79 => "Eric, wo bist du? (Baby, Come Back)",
80 => "Mr. Universum (Lies)",
81 => "Der Heiratsschwindler (Wanted: Dead Or Alive)",
82 => "Wie gewonnen, so zerronnen (We're In The Money)",
83 => "Ein Seelenkundler für den Hausgebrauch (Mind Games)",
84 => "Im Baumwollrausch (Hooked On A Feeling)",
85 => "Bruder Neal (He Ain't Heavy, He's Willie's Brother)",
86 => "Darf ich bekannt machen... (The First Time I Ever Saw Your Face)",
87 => "Alles für die Katz' (Live And Let Die)",
88 => "Ungebetene Gäste (Break Up To Make Up)",
89 => "Männerwirtschaft (Happy Together)",
90 => "Ein schwieriger Patient (Fever)",
91 => "Die Hawaii-Party (It's My Party)",
92 => "Es war einmal ein Komiker (Make 'Em Laugh)",
93 => "In letzter Minute (Love On The Rocks)",
94 => "Genie und Wahnsinn (True Colors)",
95 => "Der Jodelpriester (Gimme That Old Time Religion)",
96 => "Blendende Aussichten (Future's So Bright, I Gotta Wear Shades)",
97 => "Die Seniorenparty (When I'm Sixty-Four)",
98 => "Auf Schatzsuche (Mr. Sandman)",
99 => "Der Umweltschützer (Stayin' Alive)",
100 => "Die Wolfshungerdiät (Hungry Like The Wolf)",
101 => "Umzugsfreuden (I Gotta Be Me)",
102 => "Die Entscheidung (Consider Me Gone)"
)
);
/branches/live/media/video/series/style.css
0,0 → 1,2224
<?php
/* namespace ; */
 
\header('Last-Modified: ' . gmdate('D, d M Y H:i:s', @filemtime(__FILE__)) . ' GMT');
 
/* Cached resource expires in HTTP/1.1 caches 24h after last retrieval */
\header('Cache-Control: max-age=86400, s-maxage=86400, must-revalidate, proxy-revalidate');
 
/* Cached resource expires in HTTP/1.0 caches 24h after last retrieval */
\header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 86400) . ' GMT');
 
\header('Content-Type: text/css; charset=UTF-8');
 
require_once 'css/least/Mixins.php';
use de\pointedears\css\least\Mixins;
?>
@CHARSET "UTF-8";
 
html, body {
-webkit-font-smoothing: antialiased;
}
 
h1, h2, h3, h4, h5, h6 {
/* from SVG for Gecko and WebKit */
text-rendering: optimizeLegibility;
}
 
body {
font-family: sans-serif;
}
 
:link, :visited {
text-decoration: none;
color: inherit;
}
 
.hidden {
display: none !important;
}
 
h1 {
margin: 0;
text-align: center;
}
 
[title] {
cursor: help;
/* border-bottom: 1px dotted black; */
}
 
table {
width: 100%;
border-collapse: collapse;
}
 
th {
width: 20%;
padding: 0.25em 0.5em 0.25em 0;
font-weight: normal;
text-align: right;
}
 
td:first-child {
width: 1em;
border: none;
}
 
th.recommended {
border-left: 2px solid green;
border-top: 2px solid green;
border-bottom: 2px solid green;
}
 
td:last-child {
padding-right: 0.25em;
}
 
td.recommended {
border-top: 2px solid green;
border-right: 2px solid green;
border-bottom: 2px solid green;
}
 
@font-face {
font-family: "Futura Condensed";
src: local("Futura Condensed"), url(/styles/fonts/non-free/futura_condensed.TTF);
}
 
@font-face {
font-family: "X-Files";
src: local("X-Files"), url(/styles/fonts/x-files.ttf);
}
 
.akte-x {
padding: 1em 0.25em 0.6em 0.25em;
<?php
/*
background-image: -(o-|)linear-gradient(12deg,
rgba(236, 244, 235, 0) 33%, rgba(236, 244, 235, 0.9) 68%,
rgba(236, 244, 235, 0.9) 70%, rgba(236, 244, 235, 0) 90%);
*/
Mixins::linear_gradient(
'background-image',
'12deg,
rgba(236, 244, 235, 0) 33%, rgba(236, 244, 235, 0.9) 68%,
rgba(236, 244, 235, 0.9) 70%, rgba(236, 244, 235, 0) 90%',
array('-o-', ''));
?>
background-image:
-moz-radial-gradient(65% 60%,
rgba(236, 244, 235, 0.5) 50%, rgba(236, 244, 235, 0.1)),
-moz-linear-gradient(12deg,
rgba(236, 244, 235, 0) 33%, rgba(236, 244, 235, 0.9) 68%,
rgba(236, 244, 235, 0.9) 70%, rgba(236, 244, 235, 0) 90%);
background-image:
-webkit-radial-gradient(65% 60%, 25% 75%,
rgba(236, 244, 235, 0.5) 50%, rgba(236, 244, 235, 0.1)),
-webkit-linear-gradient(12deg,
rgba(236, 244, 235, 0) 33%, rgba(236, 244, 235, 0.9) 68%,
rgba(236, 244, 235, 0.9) 70%, rgba(236, 244, 235, 0) 90%);
background-color: #000;
color: #dcdfdc;
line-height: 2em;
vertical-align: middle;
}
 
.akte-x .small {
padding-left: 1em;
<?php
/*
background-image: -()linear-gradient(bottom left, black, transparent);
*/
Mixins::linear_gradient('background-image', 'bottom left, black, transparent');
?>
vertical-align: middle;
font-family: "Futura Condensed", sans-serif;
font-size: 50%;
text-transform: uppercase;
letter-spacing: 1em;
}
 
.akte-x .before-x {
letter-spacing: normal;
}
 
.akte-x .x {
font-family: "X-Files", sans-serif;
font-size: 600%;
font-weight: lighter;
vertical-align: middle;
vertical-align: -webkit-baseline-middle;
color: black;
-webkit-mask-image: -webkit-linear-gradient(-12deg,
rgba(0, 0, 0, 0.25), rgba(0, 0, 0, 1));
}
 
.alf {
font-family: "URW Bookman L", serif;
font-weight: bold;
font-size: 120%;
}
 
@font-face {
font-family: "Highguard";
src: local("Highguard"), url(/styles/fonts/Highguard.ttf);
}
 
.andromeda {
position: relative;
font-family: "Highguard", sans-serif;
font-size: 204%;
color: rgba(245, 153, 79, 1);
text-shadow:
/* blurred shadow */
-1px 0 2px black, 0 -1px 2px black, 1px 0 2px black, 0 1px 2px black,
/* outline */
-1px 0 black, 0 -1px black, 1px 0 black, 0 1px black;
}
 
.andromeda .gradient {
-webkit-mask-image: -webkit-linear-gradient(top,
rgba(0, 0, 0, 0.25), rgba(0, 0, 0, 1));
}
 
.andromeda .roddenberry {
position: absolute;
right: 3.75em;
top: 1.7em;
font-family: sans-serif;
font-size: 21%;
text-transform: uppercase;
color: black;
text-shadow: none;
letter-spacing: 0;
}
 
.big-bang-theory {
font-family: Impact, sans-serif;
font-size: 122%;
font-weight: bold;
text-transform: uppercase;
}
 
.big-bang-theory .lower {
font-size: 0.75em;
text-transform: lowercase;
}
 
.big-bang-theory .i {
text-transform: none;
font-size: 111%;
font-weight: normal;
}
 
.big-bang-theory .bang {
color: #CE152C;
}
 
@font-face {
font-family: "Battlestar";
src: local("Battlestar"), url(/styles/fonts/BATTLEST.TTF);
}
 
.bsg {
font-family: "Battlestar", sans-serif;
font-size: 84%;
}
 
@font-face {
font-family: "Buffied";
src: local("Buffied"), url(/styles/fonts/Buffied.ttf);
}
 
@font-face {
font-family: "Slayer";
src: url(/styles/fonts/slayer11.eot?);
src: local("Slayer"),
url(/styles/fonts/slayer11.eot?) format("eot"),
url(/styles/fonts/slayer11.woff) format("woff"),
url(/styles/fonts/slayer11.ttf) format("truetype"),
url(/styles/fonts/slayer11.svg#Slayer) format("svg");
font-weight: normal;
font-style: normal;
}
 
@font-face {
font-family: "Kruella";
src: local("Kruella"), url(/styles/fonts/non-free/kruella.ttf);
}
 
.buffy {
display: inline-block;
padding: 0.75em 0.5em 0.5em 0.5em;
background-color: #000700;
<?php Mixins::radial_gradient('background-image', 'circle, #6d7a9c 35%, transparent 45%'); ?>
color: #feffff;
line-height: 1em;
text-align: center;
text-shadow: 1px 1px 1px black;
}
 
.buffy .title {
font-family: "Buffied", fantasy;
font-size: 200%;
}
 
.buffy .subtitle {
display: block;
font-family: "Slayer", sans-serif;
font-size: 50%;
font-variant: small-caps;
}
 
@font-face {
font-family: "Arno Pro Caption";
src: local("Arno Pro Caption"), url(/styles/fonts/non-free/arnopro-caption.otf);
}
 
.castle {
font-family: "Arno Pro Caption", serif;
font-size: 120%;
line-height: 1;
text-transform: uppercase;
}
 
@font-face {
font-family: "KopyKattKut Bold";
src: local("KopyKattKut Bold"), url(/styles/fonts/KopyKattKut-Bold.otf);
}
 
.charmed {
position: relative;
display: inline-block;
background-color: #080E32;
color: rgb(223, 229, 251);
color: rgba(255, 255, 255, 0.75);
padding: 1.5em 0.5em 0.75em 0.5em;
font-family: "KopyKattKut Bold", serif;
font-size: 115%;
/*letter-spacing: -0.125em;*/
line-height: 2;
overflow: hidden;
text-transform: uppercase;
}
 
.charmed .circle {
position: absolute;
left: 50%;
top: 60%;
width: 2em;
height: 2em;
margin-left: -1.3em;
margin-top: -1.3em;
border-radius: 50%;
border: 0.325em solid rgba(36, 63, 219, 0.33);
}
 
.charmed .circle:before {
position: absolute;
left: 50%;
top: 50%;
width: 75%;
height: 75%;
margin-left: -1.7em;
margin-top: -0.7em;
border: 0.325em solid rgba(36, 63, 219, 0.33);
border-radius: 100% 0;
content: "";
<?php
/*
-(moz-|webkit-|)transform: rotate(15deg);
*/
Mixins::prefix_property('transform', '',
'rotate(15deg)',
array('-moz-', '-webkit-', ''));
?>
}
 
.charmed .circle:after {
position: absolute;
left: 50%;
top: 50%;
width: 75%;
height: 75%;
margin-left: -1.05em;
margin-top: -1.85em;
border: 0.325em solid rgba(36, 63, 219, 0.33);
border-radius: 100% 0;
content: "";
<?php
Mixins::prefix_property('transform', '',
'rotate(-45deg)',
array('-moz-', '-webkit-', ''));
?>
}
 
.charmed .arc3 {
position: absolute;
left: 50%;
top: 50%;
width: 1.5em;
height: 1.5em;
margin-left: -0.3em;
margin-top: -0.3em;
border: 0.325em solid rgba(36, 63, 219, 0.33);
border-radius: 0 100% 0 100%;
content: "";
<?php
Mixins::prefix_property('transform', '',
'rotate(-15deg)',
array('-moz-', '-webkit-', ''));
?>
}
 
.charmed .c {
/* font-size: 150%; */
}
 
.charmed span {
position: relative;
/* vertical-align: middle; */
}
 
@font-face {
font-family: "Coolvetica";
src: local("Coolvetica"), url(/styles/fonts/non-free/coolvetica.ttf);
}
 
.columbo {
padding: 0 0.25em;
background-color: #273d50;
color: #fde06c;
font-family: "Coolvetica", sans-serif;
font-size: 130%;
letter-spacing: 0.0625em;
text-transform: uppercase;
text-shadow: 2px 2px 1px black;
}
 
@font-face {
font-family: "ITC Serif Gothic LT Bold";
src: url(/styles/fonts/non-free/itc_serif_gothic--lte50299.ttf);
}
 
@font-face {
font-family: "ITC Serif Gothic LT Heavy";
src: url(/styles/fonts/non-free/itc_serif_gothic--lte50301.ttf);
}
 
.countdown-x {
display: inline-block;
font-family: "ITC Serif Gothic LT Heavy", sans-serif;
line-height: 0.9em;
text-align: center;
text-shadow: 1px 1px #999;
}
 
.countdown-x .title:before {
content: "\2013\00A0";
}
 
.countdown-x .subtitle {
display: block;
font-family: "ITC Serif Gothic LT Bold", sans-serif;
}
 
.dead-zone {
display: inline-block;
background-color: black;
background-image: -webkit-radial-gradient(50% 20%, 20% 100%, white, transparent 75%);
color: white;
font-family: serif;
font-size: 120%;
font-weight: bold;
line-height: 1;
text-align: center;
text-transform: uppercase;
}
 
.dead-zone .text {
display: block;
margin-top: 1em;
padding: 0 1em;
background: white;
background:
-webkit-linear-gradient(-5deg, rgba(255, 255, 255, 0),
rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0)),
-webkit-linear-gradient(5deg, rgba(255, 255, 255, 0),
rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0));
background:
linear-gradient(-5deg, rgba(255, 255, 255, 0),
rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0)),
linear-gradient(5deg, rgba(255, 255, 255, 0),
rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0));
color: black;
}
 
.dead-zone .text .dead {
display: block;
top: -0.125em;
position: relative;
font-size: 90%;
color: #222;
text-shadow: 0 0 10px white;
}
 
.dead-zone .text .zone {
display: block;
position: relative;
top: -0.5em;
font-size: 110%;
<?php
Mixins::prefix_property('transform', '',
'perspective(15px) rotateX(35deg)',
array('-webkit-', ''));
?>
-webkit-mask-image: -webkit-linear-gradient(
rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0.67));
}
 
@font-face {
font-family: "Doctor Who";
src: local("Matt Smith Doctor Who"), url(/styles/fonts/matt_smith_doctor_who.ttf);
}
 
.doctor-who {
position: relative;
color: #386688;
font-family: "Doctor Who", serif;
font-size: 250%;
text-transform: uppercase;
text-shadow: 0 0 1px rgba(0, 0, 0, 0.25);
}
 
.doctor-who .gradient {
position: absolute;
left: 0;
top: 0;
-webkit-mask-image:
-webkit-radial-gradient(0.15em 0.125em, 15% 50%, rgba(0, 0, 0, 0.4) 10%, rgba(0, 0, 0, 1));
z-index: 2;
}
 
.doctor-who .gradient2 {
-webkit-mask-image:
-webkit-radial-gradient(1.2em 0.125em, 15% 50%, rgba(0, 0, 0, 0.2) 15%, rgba(0, 0, 0, 1));
}
 
.doctor-who .gradient3 {
-webkit-mask-image:
-webkit-radial-gradient(2.4em 0.25em, 15% 50%, rgba(0, 0, 0, 0.2) 15%, rgba(0, 0, 0, 1));
}
 
.doctor-who:after {
content: "Doctor Who";
color: #f7f9fb;
}
 
@font-face {
font-family: "a_Futura Orto";
src: local("Futura Orto"), url(/styles/fonts/a_futuraorto.ttf);
}
 
@font-face {
font-family: "a_Futura Orto Bold";
src: local("Futura Orto Bold"), url(/styles/fonts/a_futuraorto_bold.ttf);
}
 
.efc {
position: relative;
display: inline-block;
background-color: #000;
background-image:
/* Terra */
-moz-radial-gradient(28.6541% -128%, circle, black 67%, #1C1F1C 71%, #394138 72.5%, transparent 73%),
/* Sol */
-moz-radial-gradient(56.729378% 52.895753%, circle, #fafdfa 7.366136%, #f9c699 9%, transparent 33%);
background-image:
/* Terra */
-webkit-radial-gradient(28.654124% -155%, circle, black 67%, #1c1f1c 71%, #394138 72.5%, transparent 73%),
/* Sol */
-webkit-radial-gradient(55.137482% 42.084942%, circle, #fafdfa 7.366136%, #f9c699 9%, transparent 33%);
color: #eeeeec;
font-family: "a_Futura Orto Bold", sans-serif;
line-height: 1em;
text-align: center;
text-transform: uppercase;
}
 
.efc .glare {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
background-image: -webkit-radial-gradient(56% 43%, 50% 8%, #fafdfa 14%, rgb(249, 198, 153) 15%, rgba(249, 198, 153, 0) 30%);
-webkit-transform: rotate(-11.5deg);
}
 
.efc:after {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
content: "";
background-image:
-moz-radial-gradient(55.137482% 42.084942%,
rgba(255, 255, 255, 0.2) 18%,
rgba(255, 255, 255, 0.04));
background-image:
-webkit-radial-gradient(55.137482% 42.084942%, rgba(255, 255, 255, 0.2) 18%, rgba(255, 255, 255, 0.04));
}
 
.efc .gr {
display: block;
margin-top: 1em;
margin-bottom: 2.5em;
font-family: "a_Futura Orto", sans-serif;
font-size: 50%;
}
 
.efc .earth {
position: relative;
display: block;
padding: 0 0 0 0.35em;
font-size: x-large;
letter-spacing: 0.35em;
color: #efd065;
line-height: 1em;
text-shadow: 0 0 1px rgba(0, 0, 0, 0.75);
}
 
.earth .gradient {
position: absolute;
padding: 0 0 0 0.35em;
left: 0;
top: 0;
-webkit-mask-image: -webkit-linear-gradient(
rgba(255, 255, 255, 1), rgba(243, 205, 98, 0.5) 50%, rgba(0, 0, 0, 0));
z-index: 2;
}
 
.efc .earth:after {
content: "Earth";
color: #9b411a;
}
 
@font-face {
font-family: "Troglodyte";
src: local("Troglodyte"), url(/styles/fonts/TROGLO__.ttf);
}
 
.efc .fc {
position: relative;
top: -0.5em;
display: block;
color: #ac493d;
font-family: "Troglodyte", sans-serif;
font-size: 71%;
line-height: normal;
text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.25);
}
 
@font-face {
font-family: "Interstate";
src: local("Interstate"), url(/styles/fonts/non-free/interstate_ultra-black_condensed.ttf);
}
 
.eureka {
position: relative;
padding: 0.25em 0.5em 0.125em 0.5em;
font-family: "Interstate", sans-serif;
font-size: 130%;
background-color: #8de5f9;
background-image: -moz-radial-gradient(bottom, ellipse,
#f4fff7 20%, #8de5f9, #285e8d);
background-image: -webkit-radial-gradient(bottom, 100% 125%,
#f4fff7 20%, #8de5f9, #285e8d);
color: rgb(251, 254, 247);
color: rgba(255, 255, 255, 0.9);
text-shadow: 0 -1px rgb(77, 148, 168), 1px 0 1px rgb(168, 217, 231),
1px -1px rgb(77, 148, 168);
text-shadow: 0 -1px rgba(77, 148, 168, 0.9), 1px 0 1px rgba(168, 217, 231, 0.9),
1px -1px rgba(77, 148, 168, 0.9);
}
 
.eureka .gradient {
display: inline-block;
<?php
Mixins::prefix_property('transform', '',
'matrix(1, 0, 0, 0.9, 0, 0)',
array('-moz-', '-webkit-', ''));
?>
/*
position: absolute;
padding: 0.25em 0.5em 0.125em 0.5em;
left: 0;
top: 0;
-webkit-mask-image: -webkit-linear-gradient(
rgba(0, 0, 0, 1) 30%, transparent 55%, rgba(0, 0, 0, 1) 80%);
z-index: 2;
*/
}
/*
.eureka:after {
content: "EUReKA";
color: red;
}
*/
 
.eureka .eur {
text-transform: uppercase;
}
 
.eureka .e {
display: inline-block;
position: relative;
bottom: 0.25em;
text-shadow: 0 1px 1px rgb(168, 217, 231), 0 1px rgb(77, 148, 168);
text-shadow: 0 1px 1px rgba(168, 217, 231, 0.9), 0 1px rgba(77, 148, 168, 0.9);
-moz-transform: matrix(1, 0, 0, 0.9, 0, 0);
-moz-transform: perspective(50px) rotateX(45deg);
-o-transform: matrix(1, 0, 0, 0.9, 0, 0);
-ms-transform: matrix(1, 0, 0, 0.9, 0, 0);
-webkit-transform: perspective(50px) rotateX(45deg);
transform: perspective(50px) rotateX(45deg);
}
 
.eureka .ka {
text-shadow: -1px 0 1px rgb(168, 217, 231), -1px -1px rgb(77, 148, 168),
0 -1px rgb(77, 148, 168);
text-shadow: -1px 0 1px rgba(168, 217, 231, 0.9), -1px -1px rgba(77, 148, 168, 0.9),
0 -1px rgba(77, 148, 168, 0.9);
text-transform: uppercase;
}
 
@font-face {
font-family: "Marriage-Script";
font-weight: normal;
src: local("Marriage-Script"), url(/styles/fonts/MARRIAGE.TTF);
}
 
.firefly {
display: inline-block;
padding: 0.4em 0.8em 0.4em 0.95em;
background-color: #762109;
<?php
Mixins::linear_gradient('background-image',
'rgba(73, 1, 2, 0.8) 15%,
rgba(155, 73, 49, 0) 15%, rgba(155, 73, 49, 0) 85%,
rgba(73, 1, 2, 0.8) 85%, rgba(73, 1, 2, 0.8)');
?>
color: #fefcff;
font-family: "Marriage-Script", cursive;
font-size: 160%;
text-shadow: -1px 0px 1px #300202, 2px 2px 4px #fed700, 0px 0px 4px #270201;
text-transform: lowercase;
}
 
.firefly .e {
text-shadow: 0px 0px 4px #fed700;
}
 
@font-face {
font-family: "Middleton";
src: url(/styles/fonts/non-free/middleto.ttf);
}
 
.frasier {
font-family: "Middleton", sans-serif;
font-size: 120%;
text-transform: uppercase;
}
 
.frasier span {
font-size: 75%;
}
 
.fresh-hell {
position: relative;
background-color: white;
color: #fff900;
font-family: Kruella, fantasy;
font-size: 150%;
text-transform: uppercase;
white-space: nowrap;
-webkit-text-stroke: 0.25px #333;
text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.5);
}
 
.fresh-hell .gradient {
position: absolute;
left: 0;
top: 0;
-webkit-mask-image: -webkit-linear-gradient(
rgba(0, 0, 0, 1), transparent);
z-index: 2;
}
 
.fresh-hell:after {
content: "Fresh Hell";
color: #bf170a;
}
 
@font-face {
font-family: "Century Gothic";
src: local("Century Gothic"), url(/styles/fonts/non-free/Century_Gothic.TTF);
}
 
.fringe {
display: inline-block;
padding: 0.125em 0.5em 0.125em 0.5em;
background-color: #000;
background-image: -moz-radial-gradient(center, #D6DBD3 4%, #7d9b9d 60%, black);
background-image: -webkit-radial-gradient(center, 67% 67%, #D6DBD3 4%, #7d9b9d 60%, black);
color: #101811;
font-family: "Century Gothic", sans-serif;
font-weight: bolder;
font-size: 140%;
text-transform: uppercase;
}
 
.fringe .gradient {
display: inline-block;
/*
-webkit-mask-image: -webkit-radial-gradient(center, 150% 150%,
rgba(255, 255, 255, 1), rgba(255, 255, 255, 0.125));
*/
<?php
Mixins::prefix_property('transform', '',
'perspective(50px) rotateX(4.43deg)',
array('-moz-', '-webkit-', ''));
?>
}
 
.fringe .f {
display: inline-block;
 
/*-webkit-transform: matrix(1, 0, -0.06, 1, 0, 0);*/
text-shadow:
0.5px 0.25px #5b6e65,
0.75px 0.5px #5b6e65,
1.25px 0.75px #5b6e65,
1.5px 1.25px #5b6e65,
1.75px 1.5px #5b6e65,
2px 1.75px #5b6e65,
2.25px 2px #5b6e65;
/* text-shadow: 1px 0.75px 2px #5b6e65, 1px 1.75px 0px #758278; */
/* shadow-pos: y = -0.83909963 * x */
/*
text-shadow: 0.5px 0.25px #111910, 0.75px 0.5px #111910,
1.25px 0.75px #111910, 1.5px 1.25px #111910, 1.75px 1.5px #111910,
1.75px 1.5px #111910, 2.25px 1.75px #111910;
*/
}
 
.fringe .r {
display: inline-block;
/*-webkit-transform: matrix(1, 0, -0.04, 1, 0, 0);*/
/*
text-shadow:
0.25px 0.25px $fringe_shadow,
0.5px 0.5px $fringe_shadow,
1px 0.75px $fringe_shadow,
1.25px 1.25px $fringe_shadow,
1.5px 1.5px $fringe_shadow,
1.75px 1.75px $fringe_shadow,
2px 2px $fringe_shadow;
*/
/* Same shadow as .f */
text-shadow:
0.5px 0.25px #5b6e65,
0.75px 0.5px #5b6e65,
1.25px 0.75px #5b6e65,
1.5px 1.25px #5b6e65,
1.75px 1.5px #5b6e65,
2px 1.75px #5b6e65,
2.25px 2px #5b6e65;
}
 
.fringe .i {
display: inline-block;
/* -webkit-transform: matrix(1, 0, -0.02, 1, 0, 0); */
/*
text-shadow:
0 0.25px $fringe_shadow,
0.5px 0.5px $fringe_shadow,
0.75px 0.75px $fringe_shadow,
1px 1.25px $fringe_shadow,
1.25px 1.5px $fringe_shadow,
1.5px 1.75px $fringe_shadow,
1.75px 2px $fringe_shadow;
*/
/* Same shadow as .f */
text-shadow:
0.5px 0.25px #5b6e65,
0.75px 0.5px #5b6e65,
1.25px 0.75px #5b6e65,
1.5px 1.25px #5b6e65,
1.75px 1.5px #5b6e65,
2px 1.75px #5b6e65,
2.25px 2px #5b6e65;
}
 
.fringe .n {
display: inline-block;
/*- webkit-transform: matrix(1, 0, -0.01, 1, 0, 0); */
text-shadow:
0 0.25px #5b6e65,
0 0.5px #5b6e65,
0 0.75px #5b6e65,
0 1.25px #5b6e65,
0 1.5px #5b6e65,
0 1.75px #5b6e65,
0 2px #5b6e65;
}
 
.fringe .g {
display: inline-block;
/* -webkit-transform: matrix(1, 0, 0.01, 1, 0, 0); */
/* text-shadow:
0 0.25px $fringe_shadow,
-0.5px 0.5px $fringe_shadow,
-0.75px 0.75px $fringe_shadow,
-1px 1.25px $fringe_shadow,
-1.25px 1.5px $fringe_shadow,
-1.5px 1.75px $fringe_shadow,
-1.75px 2px $fringe_shadow; */
/* Same shadow as .e */
text-shadow:
-0.25px 0.25px #5b6e65,
-0.5px 0.5px #5b6e65,
-1px 0.75px #5b6e65,
-1.25px 1.25px #5b6e65,
-1.5px 1.5px #5b6e65,
-1.75px 1.75px #5b6e65,
-2px 2px #5b6e65;
}
 
.fringe .e {
display: inline-block;
/* -webkit-transform: matrix(1, 0, 0.02, 1, 0, 0); */
text-shadow:
-0.25px 0.25px #5b6e65,
-0.5px 0.5px #5b6e65,
-1px 0.75px #5b6e65,
-1.25px 1.25px #5b6e65,
-1.5px 1.5px #5b6e65,
-1.75px 1.75px #5b6e65,
-2px 2px #5b6e65;
}
 
@font-face {
font-family: "Futurama Title";
src: local("Futurama Title"), url(/styles/fonts/futurama-title.ttf);
}
 
.futurama {
display: block;
padding-top: 0.5em;
font-family: "Futurama Title", serif;
text-transform: uppercase;
line-height: 1em;
-webkit-transform: translateX(-0.67em);
}
 
.futurama span {
display: inline-block;
line-height: 1em;
}
 
.futurama .f {
-webkit-transform: rotate(-36deg) translateY(0.125em);
}
 
.futurama .u {
-webkit-transform: rotate(-25.7deg) translateX(0.25em) translateY(-0.25em);
}
 
.futurama .t {
-webkit-transform: rotate(-15.4deg) translateX(0.33em) translateY(-0.625em);
}
 
.futurama .u2 {
-webkit-transform: rotate(-5.1deg) translateX(0.4em) translateY(-0.825em);
}
 
.futurama .r {
-webkit-transform: rotate(5.1deg) translateX(0.45em) translateY(-0.95em);
}
 
.futurama .a {
-webkit-transform: rotate(15.4deg) translateX(0.5em) translateY(-0.9em);
}
 
.futurama .m {
-webkit-transform: rotate(25.7deg) translateX(0.55em) translateY(-0.7em);
}
 
.futurama .a2 {
-webkit-transform: rotate(36deg) translateX(0.67em) translateY(-0.4em);
}
 
@font-face {
font-family: "ITC Avant Garde Gothic Medium";
src: local("ITC Avant Garde Gothic Medium"), local("ITC Avant Garde Gothic"),
url(/styles/fonts/non-free/itc_avant_garde_gothic--lte52011.ttf);
}
 
.glee {
padding: 0.125em 0.5em;
/* background-image: -moz-radial-gradient(#FFEA8C, #FFD727);
background-image: -webkit-radial-gradient(#FFEA8C, #FFD727);
background-color: #FFD727; */
background-color: #000;
color: #fff;
font-family: "ITC Avant Garde Gothic Medium", sans-serif;
font-size: 120%;
text-transform: lowercase;
letter-spacing: -0.0625em;
}
 
.glee .lee {
letter-spacing: -0.125em;
}
 
@font-face {
font-family: "SKM Avant Garde Two";
src: local("SKM Avant Garde Two"), url(/styles/fonts/non-free/SKM%20Avant%20Garde%20Two.ttf);
}
 
.heroes {
display: inline-block;
position: relative;
padding: 0.325em 0.75em 0.2em 0.75em;
background-color: black;
color: #fff;
font-family: "SKM Avant Garde Two", sans-serif;
text-transform: uppercase;
letter-spacing: 0.5em;
}
 
.heroes .o {
position: relative;
color: #ffffed;
padding: 0.25em 0.125em;
}
 
.heroes .o:after {
position: absolute;
left: -0.25em;
top: 0;
right: 0;
bottom: 0;
background-image:
/* glare */
-webkit-radial-gradient(48% 20%, circle, #ffffff 0%, #ffffff 7%,
rgb(250, 226, 182) 8%, rgba(250, 226, 182, 0) 23%),
/* moon */
-webkit-radial-gradient(41% 50%, circle, black 35%, transparent 40%),
/* corona */
-webkit-radial-gradient(41% 50%, circle, #f5eccd 35%, transparent 50%),
/* flares */
-webkit-radial-gradient(44% 44%, circle, #ffffff 35%, transparent 55%);
content: "";
}
 
.heroes .s {
letter-spacing: normal;
}
 
@font-face {
font-family: "House";
src: local("House"), url(/styles/fonts/House.ttf);
}
 
.house {
/* text-transform: uppercase; */
}
 
.house .h {
font-family: House, sans-serif;
/*
display: inline-block;
border: 1px solid black;
width: 1em;
height: 1em;
line-height: 1em;
text-align: center;
margin-right: 0.125em;
*/
}
 
.house .ouse {
font-family: House, sans-serif;
/* text-decoration: underline; */
}
 
.house .md {
position: relative;
bottom: -0.4em;
font-size: 0.6em;
}
 
.house .md-de {
position: relative;
font-size: 0.6em;
text-decoration: underline;
}
 
@font-face {
font-family: "MacEnvy DB";
src: local("MacEnvy DB"), url(/styles/fonts/MacEnvy_DB-Regular.ttf);
}
 
.ijon-tichy {
display: inline-block;
padding: 0.25em 0.5em;
background-color: #000;
color: #B9B7BA;
line-height: 1em;
font-family: "MacEnvy DB", sans-serif;
text-align: center;
text-transform: uppercase;
}
 
.ijon-tichy .title {
display: block;
letter-spacing: 0.0625em;
}
 
.ijon-tichy .title .i {
text-shadow: 1.5px 0.5px #59575A, 2px 0.75px #59575A;
}
 
.ijon-tichy .title .j {
text-shadow: 1.5px 0.5px #59575A, 1.5px 0.75px #59575A;
}
 
.ijon-tichy .title .o {
text-shadow: 1.5px 0.5px #59575A, 1px 0.75px #59575A;
}
 
.ijon-tichy .title .n {
text-shadow: 1px 0.75px #59575A;
}
 
.ijon-tichy .title .t {
text-shadow: 0 0.75px #59575A;
}
 
.ijon-tichy .title .i2 {
text-shadow: -0.5px 0.75px #59575A;
}
 
.ijon-tichy .title .c {
text-shadow: -1px 0.75px #59575A;
}
 
.ijon-tichy .title .h {
text-shadow: -1.5px 0.75px #59575A, -1px 0.5px #59575A;
}
 
.ijon-tichy .title .y {
text-shadow: -1.5px 0.75px #59575A, -1.5px 0.5px #59575A;
}
 
.ijon-tichy .subtitle {
display: block;
font-size: 67%;
letter-spacing: 0.4em;
}
 
.ijon-tichy .subtitle .r {
text-shadow: 1.5px 0.5px #59575A;
}
 
.ijon-tichy .subtitle .a {
text-shadow: 1px 0.5px #59575A;
}
 
.ijon-tichy .subtitle .u {
text-shadow: 0.5px 0.5px #59575A;
}
 
.ijon-tichy .subtitle .mpi {
text-shadow: 0 0.5px #59575A;
}
 
.ijon-tichy .subtitle .l {
text-shadow: -0.5px 0.5px #59575A;
}
 
.ijon-tichy .subtitle .o {
text-shadow: -1px 0.5px #59575A;
}
 
.ijon-tichy .subtitle .t {
text-shadow: -1.5px 0.5px #59575A;
}
 
.ijon-tichy .subtitle2 {
display: block;
font-size: 50%;
line-height: 1em;
}
 
.ijon-tichy .subtitle2 .die {
text-shadow: 1px 0.5px #59575A;
}
 
.ijon-tichy .subtitle2 .ster {
text-shadow: 0.5px 0.5px #59575A;
}
 
.ijon-tichy .subtitle2 .ntag {
text-shadow: 0 0.5px #59575A;
}
 
.ijon-tichy .subtitle2 .ebuec {
text-shadow: -0.5px 0.5px #59575A;
}
 
.ijon-tichy .subtitle2 .her {
text-shadow: -1px 0.5px #59575A;
}
 
@font-face {
font-family: "Digital1";
src: local("Transponder AOE"), url(/styles/fonts/digital/TRANA___.TTF);
}
 
.it-crowd {
display: inline-block;
position: relative;
padding: 0.125em 0.75em 0.125em 0.5em;
background-color: black;
color: #d4774b;
font-family: "Digital1", monospace;
font-size: 120%;
text-transform: uppercase;
text-shadow: 0 0 1px #d4774b;
}
 
.it-crowd:after {
position: absolute;
top: 0;
content: "\258E";
letter-spacing: 0;
}
 
.superman {
font-weight: bold;
}
 
.life-on-mars {
display: inline-block;
padding: 0.25em 0.5em;
background-color: #000;
background-image:
-webkit-linear-gradient(left,
rgba(255, 255, 255, 0) 35%,
rgba(255, 255, 255, 1) 35%, rgba(255, 255, 255, 1) 36%,
rgba(255, 255, 255, 0) 37%),
-webkit-linear-gradient(top,
rgba(255, 255, 255, 0) 81%,
rgba(255, 255, 255, 1) 81%, rgba(255, 255, 255, 1) 89%,
rgba(255, 255, 255, 0) 89%);
color: #fff;
font-weight: bold;
text-shadow: 0 0 0.5px #fff;
text-transform: uppercase;
-webkit-text-fill-color: transparent;
}
 
.life-on-mars .e {
letter-spacing: 0.5em;
}
.life-on-mars .on {
text-shadow: 0 0 1px #fff;
}
 
.life-on-mars .mars {
text-shadow: 0 0 2px #fff;
}
 
.macgyver {
padding: 0.125em 0.5em;
background-color: #080a09;
color: #bb1e15;
font-family: "Copperplate Gothic Bold", serif;
font-size: 150%;
font-variant: small-caps;
font-weight: bold;
 
text-shadow:
-0.5px -0.5px #9f1512,
0px -0.5px #9f1512,
0.5px -0.5px #9f1512,
-0.5px 0px #9f1512,
0.5px 0px #9f1512,
-0.5px 0.5px #9f1512,
0px 0.5px #9f1512,
0.5px 0.5px #9f1512,
-1px -1px 1px #d9ad7e,
0px -1px 1px #d9ad7e,
1px -1px 1px #d9ad7e,
-1px 0px 1px #d9ad7e,
1px 0px 1px #d9ad7e,
-1px 1px 1px #d9ad7e,
0px 1px 1px #d9ad7e,
1px 1px 1px #d9ad7e;
}
 
@font-face {
font-family: "Gill Sans Ultra Bold";
src: local("Gill Sans Ultra Bold"), url(/styles/fonts/non-free/gilsanu0.TTF);
}
 
.monk {
color: #d1122a;
font-family: "Gill Sans Ultra Bold", sans-serif;
font-size: 110%;
text-transform: uppercase;
text-shadow: 1px 1px 1px black;
}
 
@font-face {
font-family: "Swiss 721 Black Extended BT";
src: local("Swiss 721 Black Extended BT"), url(/styles/fonts/non-free/swiss721_bke.TTF);
}
 
.moonlight {
padding: 0.125em 0.5em;
background-color: black;
color: #020109;
font-family: "Swiss 721 Black Extended BT", sans-serif;
text-transform: uppercase;
<?php
Mixins::radial_gradient('background-image',
'24% 50%, circle,
rgba(224, 211, 106, 1) 33%, rgba(224, 211, 106, 0) 36%, #100d04');
?>
}
 
.moonlight .moon {
-webkit-mask-image: -webkit-linear-gradient(-80deg, rgba(0,0,0,0.33), rgba(0,0,0,1) 67%);
letter-spacing: -0.0625em;
}
 
.moonlight .moon .n {
letter-spacing: 0.125em;
}
 
.moonlight .light {
color: #ebf062;
text-shadow: 1px 1px 2px #070400;
}
 
.moonlighting {
padding: 0.125em 0.5em;
background-color: #933;
<?php Mixins::linear_gradient('background-image', '#5c3345, #6c2013'); ?>
color: #916ba6;
font: 116% "Futura Condensed", sans-serif;
<?php Mixins::prefix_property('outline', '', '1px solid #fff', array('-webkit-', '')); ?>
text-shadow:
/* glow */
-1px 0 1px white,
0 -1px 1px white,
1px 0 1px white,
0 1px 1px white,
/* outline */
-1px 0 white,
0 -1px white,
1px 0 white,
0 1px white;
text-transform: uppercase;
}
 
@font-face {
font-family: "Terminator";
src: url(/styles/fonts/TERMINAT.TTF);
}
 
.mutant-x {
position: relative;
padding: 0.25em 0.5em 0.125em 0.5em;
background-color: black;
color: #8f6442;
font-family: "Terminator", sans-serif;
font-size: 105%;
text-transform: uppercase;
white-space: nowrap;
-webkit-text-stroke: 0.5px rgba(255, 255, 255, 0.1);
}
 
.mutant-x .gradient {
position: absolute;
padding: 0.25em 0.5em 0.125em 0.5em;
left: 0;
top: 0;
-webkit-mask-image: -webkit-linear-gradient(
rgba(0, 0, 0, 1) 30%, transparent 55%, rgba(0, 0, 0, 1) 80%);
z-index: 2;
}
 
.mutant-x:after {
content: "Mutant X";
color: #fcf1eb;
}
 
@font-face {
font-family: "Walkway SemiBold";
src: local("Walkway SemiBold"), url(/styles/fonts/Walkway_SemiBold.ttf);
}
.numb3rs {
position: relative;
padding: 0.25em 0.5em 0.125em 0.5em;
background-color: #000200;
/*
background-image:
-webkit-repeating-linear-gradient(left, transparent, transparent 9px,
rgba(244, 247, 244, 0.5) 10px, rgba(244, 247, 244, 0.5) 10px),
-webkit-repeating-linear-gradient(top, transparent, transparent 4px,
rgba(244, 247, 244, 0.5) 5px, rgba(244, 247, 244, 0.5) 5px);
*/
color: #f4f7f4;
font-family: "Walkway SemiBold", Helvetica, sans-serif;
font-size: 116%;
font-weight: lighter;
letter-spacing: 1px;
text-shadow: 0 0 2px #f4f7f4;
text-transform: uppercase;
}
 
.numb3rs .s {
letter-spacing: normal;
}
 
/*
.numb3rs .gradient {
position: absolute;
left: 0;
top: 0;
padding: 0.25em 0.5em 0.125em 0.5em;
color: #f4f7f4;
-webkit-mask-image: -webkit-linear-gradient(rgba(0, 0, 0, 1), transparent 75%);
z-index: 2;
}
 
.numb3rs:after {
content: "Numb3rs";
color: #898b88;
text-transform: uppercase;
} */
 
@font-face {
font-family: "Unconform Round";
src: local("Unconform Round"), url(/styles/fonts/UNCON___.TTF);
}
 
.odyssey5 {
padding: 0.5em 0.5em 0.125em 0.5em;
background-color: #000;
color: #d1550b;
font-family: "Unconform Round", sans-serif;
text-transform: uppercase;
letter-spacing: 0.125em;
}
 
.odyssey5 .s2 {
letter-spacing: 0.25em;
}
 
.odyssey5 .e {
letter-spacing: 0.5em;
}
 
.odyssey5 .y2 {
letter-spacing: 0.5em;
}
 
.odyssey5 .five {
letter-spacing: normal;
}
 
@font-face {
font-family: "Dateline Bold";
src: local("Dateline Bold"), url(/styles/fonts/DatelineBold.ttf);
}
.psych {
font-family: "Dateline Bold", serif;
font-size: 110%;
letter-spacing: -0.125em;
color: #749f27;
}
@font-face {
font-family: "Swiss Cheesed";
src: local("SwissCheese"), url(/styles/fonts/SwissCheesed.ttf);
}
 
.quantum-leap {
position: relative;
display: inline-block;
left: 0;
top: 0;
padding: 0.5em 0.5em 0.25em 0.5em;
background-color: black;
 
color: #5598ff;
font-family: "Swiss Cheesed", sans-serif;
font-size: 110%;
letter-spacing: 0.0625em;
text-transform: uppercase;
text-align: center;
text-shadow:
-1px -1px #6f98e5,
0 -1px #6f98e5,
1px -1px #6f98e5,
-1px 0px #6f98e5,
0 0px #6f98e5,
1px 0px #6f98e5,
-1px 1px #6f98e5,
0 1px #6f98e5,
1px 1px #6f98e5,
-1px -1px 8px #5598ff,
0 -1px 8px #5598ff,
1px -1px 8px #5598ff,
-1px 0 8px #5598ff,
0 0 8px #5598ff,
1px 0 8px #5598ff,
-1px 1px 8px #5598ff,
0 1px 8px #5598ff,
1px 1px 8px #5598ff;
}
 
.quantum-leap .gradient {
position: absolute;
left: 0;
top: 0;
padding: 0.5em 0.5em 0.25em 0.5em;
color: #000;
-webkit-text-fill-color: #5598ff;
-webkit-mask-image: -webkit-linear-gradient(rgba(0, 0, 0, 1), transparent 33%);
z-index: 2;
}
.quantum-leap:after {
content: "Quantum Leap";
color: #000;
}
 
@font-face {
font-family: "Spleeny Decaf GD";
src: local("Spleeny Decaf GD"), url(/styles/fonts/non-free/Spleeny%20Decaf%20GD.ttf);
}
 
.reaper {
font-family: "Spleeny Decaf GD", fantasy;
text-transform: uppercase;
}
 
@font-face {
font-family: 'MicroExtendFLF-Bold';
src:
local('MicroExtendFLF-Bold'),
url('/styles/fonts/MicroExtendFLF-Bold.ttf.woff') format('woff'),
url('/styles/fonts/MicroExtendFLF-Bold.ttf.svg#MicroExtendFLF-Bold') format('svg'),
url('/styles/fonts/MicroExtendFLF-Bold.ttf.eot'),
url('/styles/fonts/MicroExtendFLF-Bold.ttf.eot?#iefix') format('embedded-opentype');
font-weight: normal;
font-style: normal;
}
 
.remington-steele {
display: inline-block;
background-color: white;
color: #506BA6;
font: bold 104% MicroExtendFLF-Bold, sans-serif;
text-align: center;
text-shadow: 1px 1px 1px #000;
text-transform: uppercase;
}
 
@font-face {
font-family: "Roswell";
src: local("Roswell"), url(/styles/fonts/Roswell.TTF);
}
 
.roswell {
display: inline-block;
padding: 0.25em 0.5em 0.125em 0.5em;
background-color: #000;
<?php
Mixins::linear_gradient('background-image', 'left, #6f3811, #000');
?>
color: #ffffbc;
font-family: "Roswell", sans-serif;
letter-spacing: 0.25em;
 
text-shadow:
-1px -1px 1px rgba(138, 8, 0, 0.5),
0px 1px 1px rgba(138, 8, 0, 0.5),
1px 1px 1px rgba(138, 8, 0, 0.5);
text-transform: uppercase;
-webkit-text-stroke: 0.25px rgba(138, 8, 0, 0.75);
}
 
.roswell span {
letter-spacing: normal;
}
 
.samantha-who {
display: inline-block;
padding: 0.125em 0.25em 0.125em 0.25em;
background-color: #000;
color: #e3e5e2;
line-height: 1em;
}
 
.samantha-who .text {
display: inline-block;
}
 
.samantha-who .samantha {
display: block;
position: relative;
padding-top: 0.25em;
padding-left: 0.25em;
font-family: "a_Futura Orto", sans-serif;
text-transform: uppercase;
}
 
.samantha-who .samantha::after {
position: absolute;
left: -0.2em;
top: -1.05em;
right: 0.2em;
bottom: 1.05em;
background-image: -webkit-radial-gradient(10% 15%, 20% 20%, transparent 15%, #d29c13 26%, #d29c13 34%, transparent 45%);
content: "";
-webkit-transform: rotate(-27deg);
/*border: 1px solid red;*/
}
 
.samantha-who .who,
.samantha-who .q {
color: #e81b04;
}
.samantha-who .who {
display: block;
font-weight: bold;
line-height: 0.75em;
}
 
.samantha-who .q {
font-family: cursive;
font-size: 200%;
font-weight: lighter;
}
 
@font-face {
font-family: "Scrubs";
src: local("TSS Scrubs Logo"), url(/styles/fonts/tsslogo.ttf);
}
 
.scrubs:before {
content: "[";
}
 
.scrubs {
padding: 0.125em 0.25em 0 0.25em;
background-color: #15121a;
color: #d0f9fb;
font-family: "Scrubs", sans-serif;
font-size: 150%;
text-shadow: 0 0 10px #d0f9fb;
}
 
.scrubs .s {
text-transform: uppercase;
}
 
.scrubs:after {
content: "]";
}
 
@font-face {
font-family: "seaQuest";
src: local("Seaquest"), url(/styles/fonts/SQDSV.TTF);
}
 
.seaQuest {
position: relative;
display: inline-block;
padding-top: 1.5em;
background-color: #00001e;
<?php
// error_reporting(E_ALL | E_STRICT);
$lambda = 1;
for ($i = 0; $i < 200; ++$i)
{
$x = mt_rand(1, 99);
/*
* Decreasing probability of pixels near bottom through exponential distribution;
* TODO: If coord > 50%, decrease probability of appearance.
*/
$max = $lambda * exp(-$lambda * mt_rand(0, 5)) * 99;
if (1 <= $max)
{
$y = mt_rand(1, $max);
$coords[] = array('x' => $x, 'y' => $y);
}
}
$dots = array_map(function ($coord) {
return "-webkit-radial-gradient({$coord['x']}% {$coord['y']}%, 1px 1px, rgba(255, 255, 255, 0.75), rgba(0, 0, 30, 0))";
}, $coords);
?>
/* water bubbles */
background-image: <?php echo implode(",\n ", $dots); ?>,
/* sunlight */
-webkit-radial-gradient(50% 0%, 50% 200%, #00438c, rgba(0, 0, 31, 0)),
/* water */
-webkit-linear-gradient(#030129, #00000c);
color: #ffc50c;
font-family: "seaQuest", sans-serif;
font-size: 92%;
}
 
.seaQuest #seaQuest {
display: block;
padding: 0 0.25em;
text-transform: uppercase;
line-height: 1;
}
 
.seaQuest #seaQuest .s {
text-shadow:
0.5px -0.25px 0.5px #f5bd46,
1px -0.5px 0.5px #cd8d1f,
1.5px -0.75px 0.5px #b37b1c,
2px -1px 0.5px #805b17,
2.5px -1.25px 0.5px #2e2000,
3px -1.5px 0.5px #040400,
3.5px -1.75px #000508;
}
 
.seaQuest #seaQuest .e {
text-shadow:
0.5px -0.25px 0.5px #f5bd46,
1px -0.5px 0.5px #cd8d1f,
1.5px -0.75px 0.5px #b37b1c,
2px -1px 0.5px #805b17,
2.5px -1.25px 0.5px #2e2000,
3px -1.5px #040400;
}
 
.seaQuest #seaQuest .a {
text-shadow:
0.5px -0.25px 0.5px #fdb207,
1px -0.5px 0.5px #eb950e,
1.5px -0.75px 0.5px #ae5900,
2px -1px 0.5px #642a00,
2.5px -1.25px #261704;
}
 
.seaQuest #seaQuest .q {
position: relative;
visibility: hidden;
display: inline-block;
margin-right: 0.5em;
text-shadow: none;
}
 
.seaQuest #seaQuest .q:after {
position: absolute;
visibility: visible;
margin-right: 0.125em;
left: 0;
top: -0.5em;
right: 0;
bottom: 0;
content: "{";
text-align: center;
text-shadow:
0.5px -0.25px 0.5px #ffb43b,
1px -0.5px 0.5px #e28d23,
1.5px -0.75px 0.5px #853400,
2px -1px #510600;
}
 
.seaQuest #seaQuest .u {
text-shadow:
0.5px -0.25px 0.5px #f7c35d,
1px -0.5px 0.5px #a36729,
1.5px -0.75px 0.5px #3c0800,
2px -1px #1b011c;
}
 
.seaQuest #seaQuest .e2 {
text-shadow:
0.5px -0.25px 0.5px #d8ab56,
1px -0.5px 0.5px #5c3605;
}
 
.seaQuest #seaQuest .s2 {
text-shadow:
0px -0.25px 0.5px #d8ab56,
-0.5px -0.5px 0.5px #5c3605,
-1px -0.75px #200d00,
0.5px -0.25px #200d00;
}
 
.seaQuest #seaQuest .t {
text-shadow:
0.5px -0.25px #e9bf73,
-0.5px -0.25px 0.5px #d8ab56,
-1px -0.5px 0.5px #5c3605,
-1.5px -0.75px #200d00,
0.5px -0.25px #200d00;
}
 
.seaQuest #dsv {
position: relative;
visibility: hidden;
display: block;
margin-top: 0.5em;
padding-bottom: 0.25em;
line-height: 1;
}
 
.seaQuest #dsv:after {
position: absolute;
visibility: visible;
left: -0.75em;
top: 0;
right: 0;
bottom: 0;
content: "|";
text-align: center;
text-shadow:
0.5px -0.25px 0.5px #ffb43b,
1px -0.5px 0.5px #e28d23,
1.5px -0.75px 0.5px #853400,
2px -1px #510600;
}
 
@font-face {
font-family: "London Tube";
src: local("P22 Johnston Underground"), url(/styles/fonts/non-free/p22-johnston-underground.ttf);
}
 
.sherlock {
font-family: "London Tube", sans-serif;
font-size: 120%;
text-transform: uppercase;
}
 
@font-face {
font-family: "Simpsonfont";
src: local("Simpsonfont"), url(/styles/fonts/Simpsonfont.ttf);
}
 
@font-face {
font-family: "Akbar";
src: local("Akbar"), url(/styles/fonts/akbar.ttf);
}
 
.simpsons {
position: relative;
display: inline-block;
min-width: 6em;
min-height: 2em;
padding: 0.125em 0.25em;
background-color: #6598DC;
color: #FFD166;
font-family: "Akbar", sans-serif;
text-align: center;
text-transform: uppercase;
overflow: hidden;
}
 
.simpsons span {
position: relative;
display: block;
}
 
<?php
Mixins::keyframes('zoom-in',
'0% {
opacity: 0;
-moz-transform: perspective(100px) translateX(0) translateY(0) translateZ(-400px);
-webkit-transform: perspective(100px) translateX(0) translateY(0) translateZ(-400px);
}
20% {
opacity: 1;
}
100% {
-moz-transform: perspective(100px) translateX(5px) translateY(-4px) translateZ(100px);
-webkit-transform: perspective(100px) translateX(5px) translateY(-4px) translateZ(100px);
}');
?>
 
.simpsons:hover span.text {
<?php
Mixins::animation('-name', 'zoom-in');
/* -webkit-animation-iteration-count: infinite; */
Mixins::animation('-duration', '3s');
?>
}
 
@font-face {
font-family: 'Interdimensional';
src:
url('/styles/fonts/Interdimensional.ttf.woff') format('woff'),
url('/styles/fonts/Interdimensional.ttf.svg#Interdimensional') format('svg'),
url('/styles/fonts/Interdimensional.ttf.eot'),
url('/styles/fonts/Interdimensional.ttf.eot?#iefix') format('embedded-opentype');
font-weight: normal;
font-style: normal;
}
 
.sliders {
padding: 0.125em 0.5em;
background-color: #000;
color: #c1d4e2;
font-family: Interdimensional, sans-serif;
letter-spacing: 0.125em;
text-transform: uppercase;
text-shadow: 0 0 2px #c1d4e2;
}
 
.sliders .last {
letter-spacing: normal;
}
 
@font-face {
font-family: "Smallville";
src: local("Smallville"), url(/styles/fonts/Smallville1.ttf);
}
 
.smallville {
font-family: "Smallville", sans-serif;
font-size: 160%;
text-transform: uppercase;
color: #FE1318;
}
 
/* Symmetric "Superman" effect */
.smallville span {
position: relative;
top: -0.1em;
font-size: 90%;
}
 
.space-above-beyond {
display: inline-block;
background-color: #222723;
color: #A7B2C4;
padding: 0.25em 0.5em;
text-transform: uppercase;
}
 
@font-face {
font-family: "Freedom Fighter";
src: local("Freedom Fighter"), url(/styles/fonts/freedomfighter.ttf);
}
 
.space-above-beyond .space {
display: block;
color: #5E5C5D;
font: 150% "Freedom Fighter", sans-serif;
text-align: justify;
text-shadow: 1px 1px 1px #0A0300, -1px -1px 1px #F5FBFF;
}
 
.space-above-beyond .space span {
letter-spacing: normal;
}
 
.space-above-beyond .above-beyond {
display: block;
font-size: 50%;
text-align: justify;
word-spacing: 0.125em;
-webkit-text-stroke: #A7B2C4 1px;
}
 
.space-above-beyond .above-beyond span {
word-spacing: normal;
}
 
@font-face {
font-family: "Stargate";
src: local("Stargate"), url(/styles/fonts/STARGATE.TTF);
}
 
.stargate {
display: inline-block;
font-family: "Stargate", serif;
font-size: 122%;
text-align: center;
text-transform: uppercase;
}
 
.stargate > span {
display: block;
}
 
.stargate.en {
letter-spacing: 0.125em;
}
 
.stargate.en span span:last-child {
letter-spacing: normal;
}
 
.stargate.en > span:first-child {
padding-bottom: 0;
border-bottom: 1px solid black;
}
 
.stargate.en > span:last-child {
padding-top: 0.125em;
}
 
.stargate.de > span:last-child {
font-size: 64%;
}
 
.stargate .a {
text-transform: lowercase;
}
 
.atlantis .stargate {
display: inline-block;
padding: 0 0.25em;
border-bottom: 1px solid black;
font-size: 81%;
letter-spacing: 0.125em;
}
 
.atlantis .atlantis {
margin-top: 0.125em;
position: relative;
top: -0.15em;
padding-top: 0.15em;
letter-spacing: 0.125em;
}
 
.atlantis span span:last-child
{
letter-spacing: normal;
}
 
.sg-u {
padding: 0.25em 0.25em 0 0.25em;
background-color: #000;
color: #eee;
font-family: "Eurostile Extended", sans-serif;
font-size: 122%;
font-weight: bold;
letter-spacing: -0.125em;
}
 
.sg-u .ring {
letter-spacing: -0.2em;
}
 
@font-face {
font-family: "Torchwood";
src: local("Torchwood"), url(/styles/fonts/Torchwood.ttf);
}
 
@font-face {
font-family: "Federation Classic";
src: local("Federation Classic"), url(/styles/fonts/FEC_____.TTF);
}
 
.star-trek-tos {
padding: 0.125em 0.25em 0 0.25em;
background-color: #000;
color: #FBB72C;
font-family: "Federation Classic", sans-serif;
font-size: 150%;
text-transform: lowercase;
}
 
@font-face {
font-family: "Starnext";
src: local("Starnext"), url(/styles/fonts/StarNext.ttf);
}
 
.star-trek-tng {
display: inline-block;
padding: 0.25em 0.5em 0.25em 0.5em;
background-color: #000;
color: #2D7BCD;
font-family: "Starnext", sans-serif;
font-size: 120%;
line-height: 1;
text-transform: uppercase;
text-align: center;
}
 
.star-trek-tng span {
display: block;
}
 
.star-trek-tng .star {
text-align: left;
}
 
.star-trek-tng .trek {
position: relative;
top: -0.2em;
text-align: right;
}
 
.star-trek-tng .tng {
font-size: 44%;
}
 
.time-trax {
background-color: #fff;
color: #003ee5;
font-size: 120%;
font-weight: bold;
text-shadow: 2px 1px #00021c;
}
 
.torchwood {
padding: 0.125em 0.25em;
background-color: black;
color: #E72524;
font-family: "Torchwood", serif;
font-size: 106%;
text-transform: uppercase;
}
 
@font-face {
font-family: "True Blood";
src: local("True Blood"), url(/styles/fonts/non-free/TRUEBLOOD.ttf);
}
 
.true-blood {
font-family: "True Blood", sans-serif;
}
 
.true-blood .upper {
text-transform: uppercase;
}
 
.true-blood .blood {
color: #991b30;
}
 
.true-blood .lower {
text-transform: lowercase;
}
 
.tara {
font-family: sans-serif;
font-weight: bold;
text-transform: uppercase;
}
 
.visitors {
display: inline-block;
position: relative;
padding: 0.5em 0.5em 0.25em 0.5em;
background-color: #000;
color: #ff1700;
font-family: fantasy;
font-size: 80%;
line-height: 2em;
}
 
.visitors span {
vertical-align: middle;
}
 
.visitors .v {
position: absolute;
left: 0;
width: 100%;
font-size: 300%;
color: rgba(210, 0, 1, 0.8);
text-align: center;
}
 
.visitors .subtitle {
text-transform: uppercase;
}
 
@font-face {
font-family: "Gunplay";
src: local("Gunplay"), url(/styles/fonts/gunplay.ttf);
}
 
.warehouse-13 {
padding: 0 0.25em 0.125em 0.25em;
background-color: #000;
color: #BF311A;
font-family: "Gunplay", sans-serif;
text-transform: uppercase;
}
 
.warehouse-13 .numbers {
color: #B4B4B4;
}
 
div.box {
border: 1px solid black;
position: relative;
text-align: center;
}
 
div.meter, div.coverage {
position: absolute;
height: 100%;
}
 
div.meter {
background-color: rgba(0, 0, 128, 0.5);
}
 
div.season {
position: absolute;
border-left: 1px solid #333;
background-color: transparent;
color: #999;
overflow: hidden;
white-space: nowrap;
}
 
div.coverage {
background-color: rgba(0, 218, 0, 0.5);
}
 
.percentage {
position: relative;
background-color: rgba(255, 255, 255, 0.5);
}
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: live/media/video/series/index.php
===================================================================
--- live/media/video/series/index.php (nonexistent)
+++ live/media/video/series/index.php (revision 198)
@@ -0,0 +1,10 @@
+<?php
+
+require_once 'Application.php';
+
+// require_once 'application/models/databases/seriometer/SeriOMeterDb.php';
+
+$application = \PointedEars\PHPX\Application::getInstance();
+// $application->setDefaultDatabase(
+// $application->registerDatabase('seriometer', new SeriOMeterDb()));
+$application->run();
\ No newline at end of file
Index: live/media/video/series/.htaccess
===================================================================
--- live/media/video/series/.htaccess (nonexistent)
+++ live/media/video/series/.htaccess (revision 198)
@@ -0,0 +1,3 @@
+<IfModule mod_php5.c>
+ AddHandler application/x-httpd-php .css
+</IfModule>
Index: live/media/video/series
===================================================================
--- live/media/video/series (nonexistent)
+++ live/media/video/series (revision 198)
/live/media/video/series
Property changes:
Added: svn:ignore
## -0,0 +1,29 ##
+futurama
+
+hitchhiker
+
+The Tripods - Die Dreibeinigen Herrscher
+
+trek
+
+stargate
+
+_mnt_usb3
+
+b5
+
+_pe.localdomain_Downloadz_video
+
+doctor-who
+
+_mnt_usb2
+
+efc
+
+big-bang-theory
+
+_mnt_usb1
+
+space-night
+
+_pe.localdomain_*
Index: live/media/video/img/external.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/media/video/img/external.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/media/video/img/interface/desktop-mid-top.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/media/video/img/interface/desktop-mid-top.jpg
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/media/video/img/interface/desktop-left-top.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/media/video/img/interface/desktop-left-top.jpg
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/media/video/img/interface/desktop-left-bottom.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/media/video/img/interface/desktop-left-bottom.jpg
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/media/video/img/interface/ani-top-numbers.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/media/video/img/interface/ani-top-numbers.gif
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/media/video/img/interface/desktop-mid-bottom-new.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/media/video/img/interface/desktop-mid-bottom-new.jpg
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/media/video/img/vulcan_hand-black-bg.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/media/video/img/vulcan_hand-black-bg.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/media/anybrowser.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/media/anybrowser.gif
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/media/anybrowser-de.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/media/anybrowser-de.gif
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/media/valid-css.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/media/valid-css.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/media/valid-html401.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/media/valid-html401.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/media/eclipse.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/media/eclipse.jpg
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/Interdimensional.ttf.svg
===================================================================
--- live/styles/fonts/Interdimensional.ttf.svg (nonexistent)
+++ live/styles/fonts/Interdimensional.ttf.svg (revision 198)
@@ -0,0 +1,145 @@
+<?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" > <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%">
+<defs >
+<font horiz-adv-x="1230" ><font-face
+ font-family="Interdimensional"
+ units-per-em="1000"
+ panose-1="0 0 4 0 0 0 0 0 0 0"
+ ascent="1044"
+ descent="-299"
+ alphabetic="0" />
+<missing-glyph horiz-adv-x="500" d="M63 0V800H438V0H63ZM125 63H375V738H125V63Z" />
+<glyph unicode=" " glyph-name="space" horiz-adv-x="1050" />
+<glyph unicode="!" glyph-name="exclam" horiz-adv-x="150" d="M75 8H24H75ZM24 59H75V8H24V59ZM24 795H75V150H24V795Z" />
+<glyph unicode="&quot;" glyph-name="quotedbl" horiz-adv-x="387" d="M149 795H200L75 551H24L149 795ZM259 795H310L185 551H134L259 795Z" />
+<glyph unicode="#" glyph-name="numbersign" horiz-adv-x="700" d="M24 325H190V274H24V325ZM492 325H625V274H492V325ZM241 325H441V274H241V325ZM24 525H190V474H24V525ZM492 525H625V474H492V525ZM241 525H441V474H241V525ZM190 795H241V525H190V795ZM441 795H492V525H441V795ZM190
+274H241V8H190V274ZM441 274H492V8H441V274ZM441 474H492V325H441V474ZM190 474H241V325H190V474ZM190 525H241V474H190V525ZM190 325H241V274H190V325ZM441 325H492V274H441V325ZM441 525H492V474H441V525Z" />
+<glyph unicode="$" glyph-name="dollar" horiz-adv-x="1464" d="M836 540V8H785V466Q737 390 688 315Q631 228 584 174V8H533V121Q412 8 264 8H24V59H183Q259 59 264 59Q410 65 533 203V795H584V265Q620 314 684 414Q752 520 785 565V795H836V630Q977 795 1149
+795H1389V744H1149Q1055 744 974 685Q907 638 836 540Z" />
+<glyph unicode="%" glyph-name="percent" horiz-adv-x="1350" d="M230 485Q156 485 99 514Q25 552 25 624Q25 691 97 731Q157 764 230 764Q303 764 362 731Q435 691 435 624Q435 552 361 514Q304 485 230 485ZM230 732Q175 732 127 706Q68 675 68 624Q68 571 127
+541Q174 517 230 517Q285 517 333 541Q392 571 392 624Q392 675 333 706Q285 732 230 732ZM1061 10Q987 10 930 40Q856 77 856 149Q856 217 928 257Q988 290 1061 290Q1134 290 1194 257Q1266 217 1266 149Q1266 77 1192 40Q1135 10 1061 10ZM1061 257Q1006 257
+958 231Q899 200 899 149Q899 97 958 67Q1005 43 1061 43Q1117 43 1164 67Q1223 97 1223 149Q1223 200 1164 231Q1116 257 1061 257ZM24 59L1249 795V744L24 8V59Z" />
+<glyph unicode="&amp;" glyph-name="ampersand" horiz-adv-x="1350" d="M997 261Q997 167 916 112Q982 74 1028 74Q1162 74 1219 145Q1240 170 1240 193H1278Q1278 167 1262 137Q1206 32 1028 32Q961 32 871 88Q748 32 510 32Q336 32 215 68Q24 126 24 261Q24
+459 493 467Q399 599 399 647Q399 727 491 766Q558 795 650 795Q736 795 803 777Q908 748 908 683Q908 667 900 654H862Q870 667 870 680Q870 729 777 749Q723 761 650 761Q577 761 520 740Q441 711 441 649Q441 594 556 449Q643 339 717 268Q801 188 874 138Q956
+185 955 261H997ZM519 432Q367 431 256 406Q65 363 65 261Q65 227 90 194Q181 74 510 74Q715 74 828 117Q670 231 519 432ZM65 261H24H65ZM65 261H24H65ZM441 654H400H441ZM441 654H400H441Z" />
+<glyph unicode="&apos;" glyph-name="quotesingle" horiz-adv-x="274" d="M149 795H200L75 551H24L149 795Z" />
+<glyph unicode="(" glyph-name="parenleft" horiz-adv-x="324" d="M250 732Q227 731 195 708Q128 659 94 570Q65 493 65 400Q65 313 95 236Q128 151 190 101Q222 75 244 74V23Q218 24 179 48Q98 100 58 203Q24 290 24 400Q24 646 166 748Q214 782 250 783V732Z" />
+<glyph unicode=")" glyph-name="parenright" horiz-adv-x="324" d="M24 732V783Q60 782 108 748Q250 646 250 400Q250 290 216 203Q176 100 95 48Q56 24 30 23V74Q52 75 84 101Q146 151 179 236Q209 313 209 400Q209 493 180 570Q146 659 79 708Q47 731 24 732Z" />
+<glyph unicode="*" glyph-name="asterisk" horiz-adv-x="444" d="M223 631V551H172V631L75 551H24L172 673L24 795H75L172 715V795H223V715L319 795H370L223 673L371 551H320L223 631Z" />
+<glyph unicode="+" glyph-name="plus" horiz-adv-x="403" d="M24 451H151V577H202V451H328V400H202V273H151V400H24V451Z" />
+<glyph unicode="," glyph-name="comma" horiz-adv-x="274" d="M149 85H200L75 -159H24L149 85Z" />
+<glyph unicode="-" glyph-name="hyphen" horiz-adv-x="342" d="M24 400V451H268V400H24ZM268 400V451H24V400H268ZM268 400V451H24V400H268Z" />
+<glyph unicode="." glyph-name="period" horiz-adv-x="200" d="M24 108H124V8H24V108Z" />
+<glyph unicode="/" glyph-name="slash" horiz-adv-x="1350" d="M24 59L1249 795V744L24 8V59Z" />
+<glyph unicode="0" glyph-name="zero" horiz-adv-x="1350" d="M650 8Q428 8 256 91Q34 198 34 400Q34 590 252 702Q432 795 650 795Q868 795 1048 702Q1266 590 1266 400Q1266 198 1044 91Q872 8 650 8ZM650 754Q460 754 292 670Q87 568 87 400Q87 227 293 128Q457
+49 650 49Q843 49 1007 128Q1213 227 1213 400Q1213 568 1008 670Q840 754 650 754Z" />
+<glyph unicode="1" glyph-name="one" horiz-adv-x="387" d="M313 795V8H262V709L146 628V679L313 795Z" />
+<glyph unicode="2" glyph-name="two" horiz-adv-x="1350" d="M102 55H1249V9H51V55Q51 153 130 229Q277 370 650 370Q979 370 1108 426Q1198 465 1198 539Q1198 611 1076 670Q922 744 650 744Q483 744 345 700Q235 666 163 611Q102 566 102 539H51Q51 570 104
+622Q173 689 290 731Q442 785 650 785Q973 785 1134 691Q1249 623 1249 539Q1249 437 1125 387Q981 329 651 329T182 208Q102 138 102 55ZM1249 539H1198H1249ZM1249 535H1198H1249Z" />
+<glyph unicode="3" glyph-name="three" horiz-adv-x="1350" d="M1249 744L890 569Q1249 510 1249 300Q1249 249 1203 191Q1142 113 1024 67Q874 8 650 8Q443 8 290 74Q174 124 104 205Q51 266 51 300H102Q102 272 163 216Q236 148 345 105Q484 49 650 49Q836 49
+972 97Q1083 136 1146 201Q1198 255 1198 300Q1198 377 1127 430Q1021 508 750 550L1138 744H24V795H1249V744Z" />
+<glyph unicode="4" glyph-name="four" horiz-adv-x="1350" d="M24 326L1100 795H1151V326H1249V275H1151V8H1100V275H24V326ZM1100 744L119 326H1100V744Z" />
+<glyph unicode="5" glyph-name="five" horiz-adv-x="1350" d="M24 57H712Q897 57 1033 104Q1213 166 1213 290Q1213 411 977 465Q826 500 650 500H24V795H1248V744H75V551H650Q864 551 1015 513Q1270 449 1270 290Q1270 129 1051 57Q905 8 712 8H24V57ZM1248 744V795V744ZM711
+8L712 57L711 8ZM1248 744V795V744ZM712 57V8V57ZM650 551V500V551Z" />
+<glyph unicode="6" glyph-name="six" horiz-adv-x="1350" d="M645 482Q554 482 459 461Q357 438 264 390Q134 322 133 248Q206 150 366 100Q497 59 645 59Q751 59 849 78T1032 137Q1152 196 1152 270Q1152 379 941 439Q790 482 645 482ZM1146 594Q1145 617 1104
+646Q964 744 645 744Q449 744 287 665Q85 566 85 390Q85 347 100 308Q164 418 343 481Q491 533 645 533Q792 533 918 502Q1079 462 1159 379Q1210 325 1210 270Q1210 216 1164 165Q1087 78 922 38Q797 8 645 8Q418 8 247 87Q24 189 24 390Q24 596 243 707Q418 795
+645 795Q791 795 921 769Q1094 734 1172 663Q1210 628 1210 594H1146Z" />
+<glyph unicode="7" glyph-name="seven" horiz-adv-x="1350" d="M1249 744L24 8V75L1150 744H24V795H1249V744Z" />
+<glyph unicode="8" glyph-name="eight" horiz-adv-x="1350" d="M650 461Q347 461 203 384Q102 330 102 261Q102 180 211 124Q355 49 650 49Q969 49 1105 125Q1198 178 1198 261Q1198 338 1108 387Q973 461 650 461ZM650 759Q513 759 442 723Q385 694 385 652Q385
+613 447 577Q524 533 650 533Q783 533 856 578Q912 612 912 652Q912 693 860 721Q791 759 650 759ZM350 652Q350 701 408 740Q488 793 650 793Q815 793 895 739Q950 701 950 652Q950 603 895 562Q814 502 650 502Q1249 502 1249 261Q1249 8 650 8Q297 8 148 104Q50
+167 51 261Q52 345 143 405Q293 502 650 502Q492 502 410 559Q350 602 350 652ZM102 261H51H102ZM385 652H350H385Z" />
+<glyph unicode="9" glyph-name="nine" horiz-adv-x="1350" d="M650 399Q807 399 989 473Q1077 511 1165 550Q1119 638 964 693Q819 744 650 744Q520 744 356 705Q137 652 137 569Q137 487 335 438Q491 399 650 399ZM1190 506Q1190 459 999 406T650 353Q492 353
+328 396Q95 456 95 569Q95 685 325 744Q484 785 650 785Q907 785 1071 690Q1251 585 1251 400Q1251 272 1141 175Q1050 95 898 48Q768 8 650 8Q459 8 269 87Q34 184 34 339H76Q76 206 302 119Q484 49 650 49Q746 49 866 83Q1012 124 1100 195Q1210 282 1210 400Q1210
+466 1190 506Z" />
+<glyph unicode=":" glyph-name="colon" horiz-adv-x="194" d="M24 600H124V500H24V600ZM24 300H124V200H24V300Z" />
+<glyph unicode=";" glyph-name="semicolon" horiz-adv-x="275" d="M133 567H200V500H133V567ZM174 300H225L100 56H49L174 300Z" />
+<glyph unicode="&lt;" glyph-name="less" horiz-adv-x="383" d="M312 626V575L60 400L312 223V172L23 375V426L312 626Z" />
+<glyph unicode="=" glyph-name="equal" horiz-adv-x="625" d="M24 600H550V500H24V600ZM24 300H550V200H24V300Z" />
+<glyph unicode="&gt;" glyph-name="greater" horiz-adv-x="383" d="M24 626L313 426V375L24 172V223L276 400L24 575V626Z" />
+<glyph unicode="?" glyph-name="question" horiz-adv-x="1350" d="M24 542Q21 795 623 795Q834 795 980 758Q1222 696 1222 542Q1222 397 1004 333Q870 294 675 290V109H623V330Q1035 330 1144 469Q1171 504 1171 542Q1171 580 1144 615Q1035 754 623 754Q430
+754 301 725Q74 674 75 542H24ZM623 59H674V8H623V59ZM75 542H24H75ZM623 289V330V289Z" />
+<glyph unicode="@" glyph-name="at" horiz-adv-x="1350" d="M623 240Q948 240 1064 327Q1056 492 915 556Q817 600 623 600Q243 600 243 420Q243 315 392 270Q489 240 623 240ZM1222 513Q1222 386 1116 301V286Q1116 271 1116 247Q1115 218 1115 209H1064L1065
+267Q946 199 623 199Q315 199 223 329Q192 372 192 420Q192 549 355 604Q463 641 623 641Q822 641 931 597Q1091 534 1111 370Q1171 438 1171 513Q1171 555 1133 600Q1001 754 623 754Q236 754 115 569Q75 508 75 439Q75 326 109 254Q206 55 623 55Q994 55 1138
+160Q1164 179 1222 249V198Q1222 175 1191 144Q1053 8 623 8Q154 8 54 254Q24 327 24 439Q24 510 67 580Q198 795 623 795Q794 795 926 761Q1105 715 1183 611Q1222 560 1222 513ZM75 439H24H75ZM1171 513H1222H1171ZM623 199V240V199Z" />
+<glyph unicode="A" glyph-name="A" horiz-adv-x="1351" d="M512 551H789L650 724L512 551ZM471 500L75 8H7L650 795L1276 8H1225L830 500H471Z" />
+<glyph unicode="B" glyph-name="B" horiz-adv-x="1350" d="M486 551Q539 551 570 583Q598 611 598 651Q598 689 572 716T499 744H75V551H486ZM712 57Q897 57 1033 104Q1213 166 1213 290Q1213 411 977 465Q826 500 650 500H75V57H712ZM650 551Q864 551 1015 513Q1270
+449 1270 290Q1270 129 1051 56Q904 8 711 8H24V795H499Q571 795 614 751Q652 711 652 653Q652 594 613 551H650ZM711 8L712 57L711 8ZM712 57V8V57ZM650 551V500V551ZM650 551V500V551ZM712 57V8V57Z" />
+<glyph unicode="C" glyph-name="C" horiz-adv-x="1350" d="M650 754V795Q857 795 1009 728Q1125 677 1196 596Q1249 534 1249 500H1198Q1198 530 1138 586Q1065 655 956 698Q817 754 650 754ZM1198 300H1249Q1249 266 1196 205Q1126 124 1010 74Q857 8 650 8V49Q816
+49 955 105Q1064 148 1137 216Q1198 272 1198 300ZM650 795V754Q460 754 292 670Q87 568 87 400Q87 227 293 128Q457 49 650 49V8Q428 8 256 91Q34 198 34 400Q34 590 252 702Q432 795 650 795Z" />
+<glyph unicode="D" glyph-name="D" horiz-adv-x="1350" d="M1248 400Q1248 320 1198 239Q1125 122 986 61Q863 8 711 8H24V795H712Q865 795 988 741Q1127 680 1199 560Q1248 479 1248 400ZM711 57Q845 57 955 105Q1076 158 1146 261Q1197 335 1197 400Q1197 476
+1147 551Q1081 651 955 701Q847 744 712 744H75V57H711ZM712 744V795V744ZM711 8V57V8Z" />
+<glyph unicode="E" glyph-name="E" horiz-adv-x="1350" d="M75 500V57H1275V8H24V795H500V744H75V551H650V500H75Z" />
+<glyph unicode="F" glyph-name="F" horiz-adv-x="1350" d="M75 500V8H24V795H1249V744H75V551H650V500H75Z" />
+<glyph unicode="G" glyph-name="G" horiz-adv-x="1350" d="M650 300H1249V90H1198V208Q1128 126 1012 75Q859 8 650 8Q428 8 256 91Q34 198 34 400Q34 590 252 702Q432 795 650 795Q857 795 1009 728Q1125 677 1196 596Q1249 534 1249 500H1198Q1198 530 1138
+586Q1065 655 956 698Q817 754 650 754Q460 754 292 670Q87 568 87 400Q87 227 293 128Q457 49 650 49Q839 49 992 120Q1107 174 1169 249H650V300Z" />
+<glyph unicode="H" glyph-name="H" horiz-adv-x="1350" d="M24 795H75V551H1198V795H1249V8H1198V500H75V8H24V795Z" />
+<glyph unicode="I" glyph-name="I" horiz-adv-x="150" d="M24 795V795H75V8H24V795Z" />
+<glyph unicode="J" glyph-name="J" horiz-adv-x="1350" d="M159 795H1249V300Q1249 256 1214 206Q1138 95 957 45Q824 8 650 8Q485 8 350 52Q187 104 97 213Q53 267 51 300H102Q104 275 146 231Q236 140 380 92Q508 49 650 49Q802 49 928 84Q1091 129 1165 223Q1198
+265 1198 300V744H159V795Z" />
+<glyph unicode="K" glyph-name="K" horiz-adv-x="1349" d="M1249 795V734L192 500L1259 69V8L75 485V8H24V795H75V536L1249 795Z" />
+<glyph unicode="L" glyph-name="L" horiz-adv-x="1350" d="M24 795H75V59H1283V8H24V795Z" />
+<glyph unicode="M" glyph-name="M" horiz-adv-x="1350" d="M352 761L75 8H24L313 796H364L651 551L938 796H989L1278 8H1227L950 761L651 500L352 761Z" />
+<glyph unicode="N" glyph-name="N" horiz-adv-x="1350" d="M24 795H75L1198 52V795H1249V8H1198L75 751V8H24V795Z" />
+<glyph unicode="O" glyph-name="O" horiz-adv-x="1350" d="M650 8Q426 8 253 92Q34 199 34 400Q34 593 256 704Q436 795 650 795Q864 795 1044 704Q1266 593 1266 400Q1266 199 1047 92Q874 8 650 8ZM650 754Q461 754 293 671Q87 569 87 400Q87 228 292 128Q456
+49 650 49Q844 49 1008 128Q1213 228 1213 400Q1213 569 1007 671Q839 754 650 754Z" />
+<glyph unicode="P" glyph-name="P" horiz-adv-x="1350" d="M1083 551Q1130 551 1163 578T1196 651Q1196 692 1162 718T1083 744H75V551H1083ZM1083 795Q1150 795 1198 757Q1249 716 1249 653Q1249 584 1201 542T1083 500H75V8H24V795H1083Z" />
+<glyph unicode="Q" glyph-name="Q" horiz-adv-x="1350" d="M1107 126L1249 81V30L1050 94Q875 8 650 8Q425 8 253 92Q34 199 34 400Q34 593 256 704Q436 795 650 795Q864 795 1044 704Q1266 593 1266 400Q1266 230 1107 126ZM624 230V281L1043 147Q1213 243 1213
+400Q1213 569 1007 671Q839 754 650 754Q461 754 293 671Q87 569 87 400Q87 228 292 128Q456 49 650 49Q823 49 980 116L624 230Z" />
+<glyph unicode="R" glyph-name="R" horiz-adv-x="1350" d="M1083 551Q1130 551 1163 578T1196 651Q1196 692 1162 718T1083 744H75V551H1083ZM500 500L1249 8H1166L417 500H75V8H24V795H1083Q1150 795 1198 757Q1249 716 1249 653Q1249 584 1201 542T1083 500H500Z" />
+<glyph unicode="S" glyph-name="S" horiz-adv-x="1464" d="M24 59H264Q425 60 571 251Q694 428 816 605Q970 795 1149 795H1389V744H1149Q989 744 846 553Q725 376 605 199Q451 8 264 8H24V59Z" />
+<glyph unicode="T" glyph-name="T" horiz-adv-x="1350" d="M24 795H1249V744H676V8H625V744H24V795Z" />
+<glyph unicode="U" glyph-name="U" horiz-adv-x="1350" d="M51 795H102V300Q102 265 135 223Q209 129 372 84Q498 49 650 49Q802 49 928 84Q1091 129 1165 223Q1198 265 1198 300V795H1249V300Q1249 253 1209 199Q1068 8 650 8Q232 8 91 199Q51 253 51 300V795ZM650
+8V49V8ZM650 8V49V8Z" />
+<glyph unicode="V" glyph-name="V" horiz-adv-x="1350" d="M650 99L1178 795H1249L650 8L24 795H95L650 99Z" />
+<glyph unicode="W" glyph-name="W" horiz-adv-x="1350" d="M352 42L75 795H24L313 8H364L651 252L938 8H989L1278 795H1227L950 42L651 303L352 42Z" />
+<glyph unicode="X" glyph-name="X" horiz-adv-x="1350" d="M105 795L637 429L1168 795H1249L677 402L1249 8H1168L637 374L105 8H24L596 402L24 795H105Z" />
+<glyph unicode="Y" glyph-name="Y" horiz-adv-x="1350" d="M24 795L625 561H676Q832 624 1249 795V734L676 500V8H625V500L24 734V795Z" />
+<glyph unicode="Z" glyph-name="Z" horiz-adv-x="1350" d="M135 59H1256V8H31V59L1144 744H24V795H1249V744L135 59Z" />
+<glyph unicode="[" glyph-name="bracketleft" horiz-adv-x="387" d="M75 59H313V8H24V795H313V744H75V59Z" />
+<glyph unicode="\" glyph-name="backslash" horiz-adv-x="1350" d="M24 744L1249 8V59L24 795V744Z" />
+<glyph unicode="]" glyph-name="bracketright" horiz-adv-x="387" d="M262 59V744H24V795H313V8H24V59H262Z" />
+<glyph unicode="^" glyph-name="asciicircum" horiz-adv-x="550" d="M149 795H200L325 551H274L175 745L75 551H24L149 795Z" />
+<glyph unicode="_" glyph-name="underscore" horiz-adv-x="650" d="M24 -8H574V-51H24V-8Z" />
+<glyph unicode="`" glyph-name="grave" horiz-adv-x="274" d="M76 795H25L150 551H201L76 795Z" />
+<glyph unicode="a" glyph-name="a" horiz-adv-x="1350" d="M512 551H789L650 724L512 551ZM471 500L75 8H7L650 795L1276 8H1225L830 500H471Z" />
+<glyph unicode="b" glyph-name="b" horiz-adv-x="1350" d="M486 551Q539 551 570 583Q598 611 598 651Q598 689 572 716T499 744H75V551H486ZM712 57Q897 57 1033 104Q1213 166 1213 290Q1213 411 977 465Q826 500 650 500H75V57H712ZM650 551Q864 551 1015 513Q1270
+449 1270 290Q1270 129 1051 56Q904 8 711 8H24V795H499Q571 795 614 751Q652 711 652 653Q652 594 613 551H650ZM711 8L712 57L711 8ZM712 57V8V57ZM650 551V500V551ZM650 551V500V551ZM712 57V8V57Z" />
+<glyph unicode="c" glyph-name="c" horiz-adv-x="1350" d="M650 754V795Q857 795 1009 728Q1125 677 1196 596Q1249 534 1249 500H1198Q1198 530 1138 586Q1065 655 956 698Q817 754 650 754ZM1198 300H1249Q1249 266 1196 205Q1126 124 1010 74Q857 8 650 8V49Q816
+49 955 105Q1064 148 1137 216Q1198 272 1198 300ZM650 795V754Q460 754 292 670Q87 568 87 400Q87 227 293 128Q457 49 650 49V8Q428 8 256 91Q34 198 34 400Q34 590 252 702Q432 795 650 795Z" />
+<glyph unicode="d" glyph-name="d" horiz-adv-x="1350" d="M1248 400Q1248 320 1198 239Q1125 122 986 61Q863 8 711 8H24V795H712Q865 795 988 741Q1127 680 1199 560Q1248 479 1248 400ZM711 57Q845 57 955 105Q1076 158 1146 261Q1197 335 1197 400Q1197 476
+1147 551Q1081 651 955 701Q847 744 712 744H75V57H711ZM712 744V795V744ZM711 8V57V8Z" />
+<glyph unicode="e" glyph-name="e" horiz-adv-x="1350" d="M75 500V57H1275V8H24V795H500V744H75V551H650V500H75Z" />
+<glyph unicode="f" glyph-name="f" horiz-adv-x="1350" d="M75 500V8H24V795H1249V744H75V551H650V500H75Z" />
+<glyph unicode="g" glyph-name="g" horiz-adv-x="1350" d="M650 300H1249V90H1198V208Q1128 126 1012 75Q859 8 650 8Q428 8 256 91Q34 198 34 400Q34 590 252 702Q432 795 650 795Q857 795 1009 728Q1125 677 1196 596Q1249 534 1249 500H1198Q1198 530 1138
+586Q1065 655 956 698Q817 754 650 754Q460 754 292 670Q87 568 87 400Q87 227 293 128Q457 49 650 49Q839 49 992 120Q1107 174 1169 249H650V300Z" />
+<glyph unicode="h" glyph-name="h" horiz-adv-x="1350" d="M24 795H75V551H1198V795H1249V8H1198V500H75V8H24V795Z" />
+<glyph unicode="i" glyph-name="i" horiz-adv-x="150" d="M24 795V795H75V8H24V795Z" />
+<glyph unicode="j" glyph-name="j" horiz-adv-x="1350" d="M1198 795H1249V300Q1249 258 1214 206Q1140 96 959 45Q824 8 650 8Q485 8 349 52Q186 105 97 213Q56 264 51 300H102Q108 271 146 231Q234 140 379 92Q508 49 650 49Q803 49 929 84Q1092 129 1165 223Q1198
+266 1198 300V795Z" />
+<glyph unicode="k" glyph-name="k" horiz-adv-x="1349" d="M1249 795V734L192 500L1259 69V8L75 485V8H24V795H75V536L1249 795Z" />
+<glyph unicode="l" glyph-name="l" horiz-adv-x="1350" d="M24 795H75V59H1283V8H24V795Z" />
+<glyph unicode="m" glyph-name="m" horiz-adv-x="1350" d="M352 761L75 8H24L313 796H364L651 551L938 796H989L1278 8H1227L950 761L651 500L352 761Z" />
+<glyph unicode="n" glyph-name="n" horiz-adv-x="1350" d="M24 795H75L1198 52V795H1249V8H1198L75 751V8H24V795Z" />
+<glyph unicode="o" glyph-name="o" horiz-adv-x="1350" d="M650 8Q426 8 253 92Q34 199 34 400Q34 593 256 704Q436 795 650 795Q864 795 1044 704Q1266 593 1266 400Q1266 199 1047 92Q874 8 650 8ZM650 754Q461 754 293 671Q87 569 87 400Q87 228 292 128Q456
+49 650 49Q844 49 1008 128Q1213 228 1213 400Q1213 569 1007 671Q839 754 650 754Z" />
+<glyph unicode="p" glyph-name="p" horiz-adv-x="1350" d="M1083 551Q1130 551 1163 578T1196 651Q1196 692 1162 718T1083 744H75V551H1083ZM1083 795Q1150 795 1198 757Q1249 716 1249 653Q1249 584 1201 542T1083 500H75V8H24V795H1083Z" />
+<glyph unicode="q" glyph-name="q" horiz-adv-x="1350" d="M1107 126L1249 81V30L1050 94Q875 8 650 8Q425 8 253 92Q34 199 34 400Q34 593 256 704Q436 795 650 795Q864 795 1044 704Q1266 593 1266 400Q1266 230 1107 126ZM624 230V281L1043 147Q1213 243 1213
+400Q1213 569 1007 671Q839 754 650 754Q461 754 293 671Q87 569 87 400Q87 228 292 128Q456 49 650 49Q823 49 980 116L624 230Z" />
+<glyph unicode="r" glyph-name="r" horiz-adv-x="1350" d="M1083 551Q1130 551 1163 578T1196 651Q1196 692 1162 718T1083 744H75V551H1083ZM500 500L1249 8H1166L417 500H75V8H24V795H1083Q1150 795 1198 757Q1249 716 1249 653Q1249 584 1201 542T1083 500H500Z" />
+<glyph unicode="s" glyph-name="s" horiz-adv-x="1464" d="M24 59H264Q425 60 571 251Q694 428 816 605Q970 795 1149 795H1389V744H1149Q989 744 846 553Q725 376 605 199Q451 8 264 8H24V59Z" />
+<glyph unicode="t" glyph-name="t" horiz-adv-x="1350" d="M24 795H1249V744H676V8H625V744H24V795Z" />
+<glyph unicode="u" glyph-name="u" horiz-adv-x="1350" d="M51 795H102V300Q102 265 135 223Q209 129 372 84Q498 49 650 49Q802 49 928 84Q1091 129 1165 223Q1198 265 1198 300V795H1249V300Q1249 253 1209 199Q1068 8 650 8Q232 8 91 199Q51 253 51 300V795ZM650
+8V49V8ZM650 8V49V8Z" />
+<glyph unicode="v" glyph-name="v" horiz-adv-x="1350" d="M650 99L1178 795H1249L650 8L24 795H95L650 99Z" />
+<glyph unicode="w" glyph-name="w" horiz-adv-x="1350" d="M352 42L75 795H24L313 8H364L651 252L938 8H989L1278 795H1227L950 42L651 303L352 42Z" />
+<glyph unicode="x" glyph-name="x" horiz-adv-x="1350" d="M105 795L637 429L1168 795H1249L677 402L1249 8H1168L637 374L105 8H24L596 402L24 795H105Z" />
+<glyph unicode="y" glyph-name="y" horiz-adv-x="1350" d="M24 795L625 561H676Q832 624 1249 795V734L676 500V8H625V500L24 734V795Z" />
+<glyph unicode="z" glyph-name="z" horiz-adv-x="1350" d="M135 59H1256V8H31V59L1144 744H24V795H1249V744L135 59Z" />
+<glyph unicode="{" glyph-name="braceleft" horiz-adv-x="324" d="M24 400Q25 421 43 453T63 500Q64 535 72 605Q88 680 130 728Q179 783 250 783V732Q169 732 133 651Q106 592 106 500Q106 494 86 458T65 400H24ZM63 300Q63 315 44 348T24 400H65Q65 381 86 349T107
+300H63ZM107 300Q107 155 189 96Q218 74 244 74V23Q215 23 176 50Q63 127 63 300H107Z" />
+<glyph unicode="|" glyph-name="bar" horiz-adv-x="150" d="M24 795V795V795H75V8H24V795Z" />
+<glyph unicode="}" glyph-name="braceright" horiz-adv-x="324" d="M244 400H203Q202 422 182 458T162 500Q162 592 135 651Q99 732 18 732V783Q89 783 138 728Q180 680 196 605Q197 598 205 500Q207 485 225 453T244 400ZM205 300Q205 315 224 348T244 400H203Q203
+381 182 349T161 300H205ZM161 300Q161 155 79 96Q50 74 24 74V23Q53 23 92 50Q205 127 205 300H161Z" />
+<glyph unicode="~" glyph-name="asciitilde" horiz-adv-x="1050" d="M190 790L356 729V678L190 739V790ZM356 729L524 775V724L356 678V729ZM356 678L190 739L356 678ZM190 790L356 729L190 790ZM190 739L24 694V745L190 790V739Z" />
+</font>
+</defs>
+</svg>
Index: live/styles/fonts/MicroExtendFLF-Bold.ttf.svg
===================================================================
--- live/styles/fonts/MicroExtendFLF-Bold.ttf.svg (nonexistent)
+++ live/styles/fonts/MicroExtendFLF-Bold.ttf.svg (revision 198)
@@ -0,0 +1,952 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg>
+<metadata>
+Created by FontForge 20090914 at Fri Feb 24 08:48:30 2012
+ By root
+4.1 (c)1986-92 by Richard A. Ware. All Rights Reserved.
+</metadata>
+<defs>
+<font id="MicroExtendFLF-Bold" horiz-adv-x="503" >
+ <font-face
+ font-family="MicroExtendFLF"
+ font-weight="700"
+ font-stretch="normal"
+ units-per-em="1000"
+ panose-1="2 0 8 7 4 0 0 2 0 4"
+ ascent="800"
+ descent="-200"
+ x-height="494"
+ cap-height="694"
+ bbox="-44 -220 1812 919"
+ underline-thickness="50"
+ underline-position="-105"
+ unicode-range="U+0005-U+E010"
+ />
+<missing-glyph horiz-adv-x="500"
+ />
+ <glyph glyph-name=".notdef" horiz-adv-x="500"
+ />
+ <glyph glyph-name="breve" horiz-adv-x="413"
+d="M205 589q45 0 86 12.5t69 34.5l-34 39q-23 -18 -55.5 -26t-65.5 -8q-28 0 -61.5 7.5t-59.5 25.5l-34 -38q30 -21 70.5 -34t84.5 -13z" />
+ <glyph glyph-name="dotaccent" horiz-adv-x="284"
+d="M48 718v-167h195v167h-195z" />
+ <glyph glyph-name="ring" horiz-adv-x="276"
+d="M69 617v32q0 37 43 37h55q42 0 42 -37v-32q0 -20 -12 -28.5t-30 -8.5h-55q-43 0 -43 37zM109 716q-38 0 -55 -18.5t-17 -47.5v-34q0 -29 17 -47t55 -18h60q36 0 53 18t17 47v34q0 29 -17 47.5t-53 18.5h-60z" />
+ <glyph glyph-name="hungarumlaut" unicode="&#xa;" horiz-adv-x="390"
+d="M216 753l-100 35l-64 -219l48 -13zM358 753l-100 35l-64 -219l48 -13z" />
+ <glyph glyph-name="ogonek" horiz-adv-x="303"
+d="M177 -49v49h-127v-90q0 -36 22 -57.5t52.5 -31.5t63 -13.5t52.5 -2.5t22 1v101l-13.5 -1t-29 2t-29 12.5t-13.5 30.5z" />
+ <glyph glyph-name="caron" horiz-adv-x="407"
+d="M236 542l146 145h-41l-133 -69l-129 69h-45l147 -145h55z" />
+ <glyph glyph-name="dotlessi" unicode="&#xd;" horiz-adv-x="298"
+d="M237 494h-167v-494h167v494z" />
+ <glyph glyph-name="fraction" horiz-adv-x="618"
+d="M119 -89l502 817h-111l-502 -817h111z" />
+ <glyph glyph-name="fi" horiz-adv-x="733"
+d="M472 494h-214q0 32 18.5 46t53.5 14h364v140h-377q-108 0 -166.5 -43t-58.5 -124v-33h-61v-135h61v-359h166v359h214v135zM694 494h-167v-494h167v494z" />
+ <glyph glyph-name="fl" horiz-adv-x="733"
+d="M524 0h170v694h-396q-105 0 -155.5 -44.5t-50.5 -122.5v-33h-61v-135h61v-359h166v359h216v135h-216q0 19 3 31.5t12 19t24.5 9t40.5 2.5h186v-556z" />
+ <glyph glyph-name="Lslash" horiz-adv-x="703"
+d="M60 336l-60 -41v-132l60 41v-204h594v140h-427v163l90 62v132l-90 -62v259h-167v-358z" />
+ <glyph glyph-name="lslash" horiz-adv-x="293"
+d="M66 340l-50 -34v-132l50 34v-208h166v310l47 32v132l-47 -32v252h-166v-354z" />
+ <glyph glyph-name="Zcaron" horiz-adv-x="866"
+d="M816 694h-780v-138h535l-535 -420v-136h780v139h-517l517 415v140zM456 727l146 145h-41l-133 -69l-129 69h-45l147 -145h55z" />
+ <glyph glyph-name="zcaron" horiz-adv-x="662"
+d="M617 494h-574v-138h314l-318 -223v-133h578v139h-341l341 227v128zM351 542l146 145h-41l-133 -69l-129 69h-45l147 -145h55z" />
+ <glyph glyph-name="space" unicode=" " horiz-adv-x="528"
+ />
+ <glyph glyph-name="exclam" unicode="!" horiz-adv-x="333"
+d="M88 694v-444h166v444h-166zM88 167v-167h168v167h-168z" />
+ <glyph glyph-name="quotedbl" unicode="&#x22;" horiz-adv-x="356"
+d="M157 708h-111l22 -227h66zM317 708h-111l22 -227h66z" />
+ <glyph glyph-name="numbersign" unicode="#" horiz-adv-x="633"
+d="M309 677h-55l-33 -130h-127l-14 -56h127l-31 -124h-127l-14 -56h127l-33 -131h55l33 131h148l-34 -135h55l34 135h123l14 56h-123l31 124h124l14 56h-124l33 130h-55l-33 -130h-148zM262 491h148l-31 -124h-148z" />
+ <glyph glyph-name="dollar" unicode="$" horiz-adv-x="894"
+d="M300 556h112v-130h-112q-22 0 -36 16t-14 51q0 27 14 45t36 18zM590 140h-70v147h70q24 0 44.5 -2.5t35.5 -10t23.5 -22t8.5 -39.5q0 -26 -7.5 -41t-22 -22t-35 -8.5t-47.5 -1.5zM300 287h112v-147h-98q-30 0 -55 12.5t-25 45.5h-172q0 -101 62 -151t200 -50h88v-86h108
+v86h79q73 0 125.5 10.5t86 35t49.5 66t16 104.5q0 70 -13 112.5t-44 64.5t-82.5 29t-128.5 7h-88v130h94q36 0 59 -12.5t23 -45.5h178q0 106 -53.5 152.5t-170.5 46.5h-130v63h-108v-63h-92q-74 0 -123 -14t-79 -40t-42.5 -62.5t-12.5 -82.5q0 -55 8 -95t32.5 -65.5
+t71.5 -38t125 -12.5z" />
+ <glyph glyph-name="percent" unicode="%" horiz-adv-x="1287"
+d="M323 641q42 0 67 -4t38.5 -15.5t17.5 -32.5t4 -56v-48q0 -33 -4 -53.5t-17.5 -31t-38 -14t-65.5 -3.5h-56q-38 0 -60.5 4t-34.5 15t-16 30.5t-4 50.5v48q0 34 4 55.5t16.5 33.5t36 16.5t62.5 4.5h50zM327 281q72 0 117.5 7t72 28t36 60t9.5 103v56q0 63 -9.5 104
+t-35.5 64.5t-71 33t-117 9.5h-66q-69 0 -112 -9t-67.5 -33t-33 -65.5t-8.5 -105.5v-56q0 -62 9 -100.5t33.5 -59.5t67 -28.5t109.5 -7.5h66zM590 -33l205 761h-101l-205 -761h101zM1012 353q42 0 67 -4t38.5 -15.5t17.5 -32.5t4 -56v-48q0 -33 -4 -53.5t-17.5 -31t-38 -14
+t-65.5 -3.5h-56q-38 0 -60.5 4t-34.5 15t-16 30.5t-4 50.5v48q0 34 4 55.5t16.5 33.5t36 16.5t62.5 4.5h50zM1016 -7q72 0 117.5 7t72 28t36 60t9.5 103v56q0 63 -9.5 104t-35.5 64.5t-71 33t-117 9.5h-66q-69 0 -112 -9t-67.5 -33t-33 -65.5t-8.5 -105.5v-56
+q0 -62 9 -100.5t33.5 -59.5t67 -28.5t109.5 -7.5h66z" />
+ <glyph glyph-name="ampersand" unicode="&#x26;" horiz-adv-x="986"
+d="M624 0q44 0 73 5t48.5 13.5t32 20t24.5 25.5l112 -62l72 109l-107 62q10 16 18 33.5t13.5 41.5t8.5 56.5t3 77.5h-166q1 -41 -1.5 -75.5t-15.5 -56.5l-323 183q-16 9 -30 16t-25 15.5t-17.5 19.5t-6.5 26q0 30 20 38t61 8h176q53 0 74.5 -17.5t21.5 -45.5h167
+q0 39 -8.5 75.5t-33 64.5t-71 44.5t-122.5 16.5h-210q-128 0 -185 -42t-57 -131q0 -38 13.5 -57t30.5 -28q-18 -3 -46 -12.5t-54 -30.5t-45 -58t-19 -95q0 -62 19 -107.5t52 -75t77.5 -43.5t95.5 -14h330zM217 239q0 31 9.5 50t23.5 30t31 15t32 5l326 -181l-12.5 -6.5
+t-18.5 -6t-32.5 -4.5t-53.5 -2h-170q-42 0 -68 7.5t-41 21t-20.5 32t-5.5 39.5z" />
+ <glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="249"
+d="M183 708h-111l22 -227h67z" />
+ <glyph glyph-name="parenleft" unicode="(" horiz-adv-x="329"
+d="M294 -118v140q-27 1 -49.5 6.5t-38 18.5t-24.5 33.5t-9 50.5v372q0 65 28.5 91t92.5 26v138q-50 0 -96.5 -11.5t-83 -40.5t-58.5 -78.5t-22 -124.5v-372q0 -72 20 -120t55 -76.5t82.5 -40.5t102.5 -12z" />
+ <glyph glyph-name="parenright" unicode=")" horiz-adv-x="329"
+d="M160 131q0 -30 -9 -50.5t-24.5 -33.5t-38 -18.5t-49.5 -6.5v-140q55 0 103 12t82.5 40.5t54.5 76.5t20 120v372q0 75 -22 124.5t-58.5 78.5t-83.5 40.5t-96 11.5v-138q64 0 92.5 -26t28.5 -91v-372z" />
+ <glyph glyph-name="asterisk" unicode="*" horiz-adv-x="344"
+d="M276 529l-89 19l85 21q21 5 30 16t9 22q0 14 -10 24.5t-25 10.5q-8 0 -17.5 -4t-18.5 -15l-59 -67l26 86q3 12 3 21q0 19 -10.5 28t-24.5 9t-25 -9.5t-11 -27.5q0 -10 4 -21l29 -86l-64 64q-19 19 -37 19q-14 0 -23.5 -10.5t-9.5 -24.5q0 -12 9 -22.5t30 -15.5l89 -18
+l-88 -24q-21 -6 -30 -17t-9 -22q0 -14 10 -24t25 -10q8 0 17.5 4t18.5 15l61 68l-28 -86q-4 -11 -4 -22q0 -18 10.5 -27t24.5 -9q17 0 26.5 10t9.5 29q0 8 -3 19l-25 87l62 -65q18 -19 37 -19q15 0 24.5 11t9.5 25q0 12 -9 22.5t-30 15.5z" />
+ <glyph glyph-name="plus" unicode="+" horiz-adv-x="564"
+d="M211 392h-145v-138h145v-145h139v145h145v138h-145v145h-139v-145z" />
+ <glyph glyph-name="comma" unicode="," horiz-adv-x="333"
+d="M74 194v-194h44v-31q0 -32 -16.5 -43.5t-55.5 -11.5v-93q69 0 112 9.5t67.5 30.5t33.5 55t9 84v194h-194z" />
+ <glyph glyph-name="hyphen" unicode="-" horiz-adv-x="538"
+d="M476 394h-408v-138h408v138z" />
+ <glyph glyph-name="period" unicode="." horiz-adv-x="329"
+d="M74 167v-167h195v167h-195z" />
+ <glyph glyph-name="slash" unicode="/" horiz-adv-x="338"
+d="M119 -89l222 817h-111l-222 -817h111z" />
+ <glyph glyph-name="zero" unicode="0" horiz-adv-x="861"
+d="M465 540q63 0 100.5 -5.5t57.5 -23t26.5 -49.5t6.5 -84v-72q0 -50 -6.5 -80t-26.5 -46.5t-57 -21.5t-98 -5h-84q-57 0 -91 6t-52 22.5t-24 45.5t-6 76v72q0 52 6 84t24.5 50t54 24.5t94.5 6.5h75zM471 0q108 0 176.5 10.5t107.5 42t53.5 90t14.5 154.5v84
+q0 94 -14.5 155.5t-53 97t-106.5 49.5t-175 14h-99q-104 0 -168.5 -13.5t-101 -49t-49.5 -97.5t-13 -159v-84q0 -93 13.5 -150.5t50.5 -89.5t100.5 -43t164.5 -11h99z" />
+ <glyph glyph-name="one" unicode="1" horiz-adv-x="861"
+d="M398 0h166v694h-239l-205 -208l81 -80l158 158h39v-564z" />
+ <glyph glyph-name="two" unicode="2" horiz-adv-x="861"
+d="M554 253q72 5 120.5 18t78 38t41.5 62.5t12 92.5q0 66 -13 111t-47.5 72.5t-95.5 39t-158 11.5h-149q-97 0 -154.5 -20t-87.5 -55t-38.5 -82.5t-8.5 -102.5h167q0 35 4.5 58.5t21 37.5t47.5 19.5t84 5.5h110q46 0 75.5 -3.5t46.5 -13t23 -25t6 -39.5t-4.5 -39.5t-17 -25
+t-34.5 -14t-56 -7.5l-221 -16q-122 -9 -189.5 -60t-67.5 -156v-160h753v139h-586v22q0 41 37 57t119 22z" />
+ <glyph glyph-name="three" unicode="3" horiz-adv-x="876"
+d="M352 428v-139h203q25 0 43.5 -3t31.5 -11t19.5 -23.5t6.5 -39.5t-6.5 -38.5t-23 -22.5t-45 -10.5t-71.5 -2.5h-142q-35 0 -61.5 1.5t-44 7.5t-26.5 19t-9 37h-161v-13q0 -52 13 -88.5t47 -59t92.5 -32.5t149.5 -10h152q95 0 154 8.5t91.5 31.5t44 62.5t11.5 101.5
+q0 47 -9 76.5t-25.5 46.5t-40 24.5t-53.5 10.5q34 2 58.5 8t40 22t22.5 43.5t7 72.5q0 55 -15 91t-51.5 57t-97 29.5t-151.5 8.5h-140q-92 0 -150.5 -11t-91.5 -34t-45.5 -58.5t-12.5 -84.5v-26h156q1 46 38.5 61t117.5 15h120q47 0 77.5 -2t48.5 -9t25 -19t7 -33t-5 -34
+t-17 -19.5t-32 -9t-50 -2.5h-200z" />
+ <glyph glyph-name="four" unicode="4" horiz-adv-x="861"
+d="M750 289v405h-218l-458 -330v-214h509v-150h167v150h94v139h-94zM583 544v-255h-343v26l318 229h25z" />
+ <glyph glyph-name="five" unicode="5" horiz-adv-x="861"
+d="M559 -1q73 0 122.5 13t79.5 42.5t42.5 75.5t12.5 112q0 60 -11.5 105.5t-40.5 76.5t-78.5 46.5t-126.5 15.5h-258q-20 0 -35.5 -4.5t-27.5 -15.5v108h542v120h-709v-381h167q5 20 20.5 27t41.5 7h262q43 0 65 -28.5t22 -76.5q0 -46 -23 -75t-64 -29h-233q-21 0 -40 1
+t-32.5 7t-22 17.5t-8.5 32.5h-167q0 -101 62 -149t189 -48h249z" />
+ <glyph glyph-name="six" unicode="6" horiz-adv-x="861"
+d="M526 446h-144q-45 0 -73 -4.5t-45.5 -11.5t-27 -15.5l-17.5 -15.5v77q0 46 28.5 63t96.5 17h182q33 0 56 -1.5t37.5 -6.5t21 -15.5t6.5 -28.5h156v40q0 40 -14 70t-47.5 49t-90 28.5t-141.5 9.5h-170q-83 0 -138.5 -13t-88.5 -42t-47 -77.5t-14 -118.5v-194
+q0 -75 13 -125.5t45 -81.5t86.5 -44t137.5 -13h218q75 0 124.5 11t79 36.5t41.5 65.5t12 99v40q0 65 -18.5 104.5t-54.5 61.5t-89 29t-121 7zM347 136q-39 0 -64 4t-39.5 14t-20 27t-6.5 42q0 21 5 37t19.5 27.5t39 17t62.5 5.5h175q39 0 64.5 -5t39.5 -16t19.5 -27.5
+t5.5 -38.5q0 -25 -5.5 -41.5t-20 -26.5t-39.5 -14.5t-64 -4.5h-171z" />
+ <glyph glyph-name="seven" unicode="7" horiz-adv-x="861"
+d="M821 694h-765v-138h542l-442 -556h207l458 579v115z" />
+ <glyph glyph-name="eight" unicode="8" horiz-adv-x="861"
+d="M218 207q0 41 27 63t95 22h178q37 0 61.5 -6t38 -17.5t19 -27t5.5 -34.5q0 -21 -5 -37.5t-19 -28t-38 -17.5t-62 -6h-178q-70 0 -96 23.5t-26 65.5zM218 498q0 20 4.5 36t17.5 27.5t37 18t63 6.5h178q72 0 98 -21.5t26 -66.5q0 -21 -5.5 -36t-19.5 -25.5t-38 -15.5
+t-61 -5h-178q-72 0 -97 20.5t-25 61.5zM809 498q0 52 -12 90.5t-41 63.5t-77.5 37t-121.5 12h-256q-73 0 -121.5 -12t-77 -37t-40.5 -63.5t-12 -90.5q0 -43 11 -69t30 -41t43 -21.5t51 -10.5q-25 -5 -49 -13.5t-43 -26.5t-31 -48.5t-12 -78.5q0 -107 60 -152t191 -45h256
+q63 0 110 9.5t78.5 33.5t47.5 64t16 101q0 46 -12 75t-31 45.5t-43 24t-48 11.5q27 2 51.5 8.5t43 22t29 42t10.5 69.5z" />
+ <glyph glyph-name="nine" unicode="9" horiz-adv-x="861"
+d="M310 243h170q43 0 71 2.5t46 9t28 17t18 25.5v-61q0 -42 -9.5 -66.5t-28.5 -37t-46 -16t-61 -3.5h-126q-45 0 -74.5 3.5t-47.5 11.5t-26 22t-8 34h-157q0 -50 16.5 -87t53 -61t94.5 -36t141 -12h146q86 0 144 15.5t92.5 48.5t49 83.5t14.5 120.5v194q0 69 -17 116
+t-53.5 76t-93.5 42t-136 13h-180q-81 0 -134.5 -15.5t-85 -45t-44.5 -72.5t-13 -97q0 -62 14.5 -104.5t45.5 -69t79.5 -38.5t117.5 -12zM518 551q71 0 99 -16.5t30 -63.5q1 -24 -3 -41.5t-16.5 -29t-35 -17.5t-58.5 -6h-202q-37 0 -59.5 6t-34.5 17.5t-16 29t-4 41.5t6 39.5
+t19.5 24.5t36 12.5t56.5 3.5h182z" />
+ <glyph glyph-name="colon" unicode=":" horiz-adv-x="329"
+d="M74 167v-167h195v167h-195zM74 482v-166h195v166h-195z" />
+ <glyph glyph-name="semicolon" unicode=";" horiz-adv-x="329"
+d="M74 482v-166h195v166h-195zM74 194v-194h44v-31q0 -32 -16.5 -43.5t-55.5 -11.5v-93q69 -1 112.5 8.5t67.5 31.5t33 56t9 83v194h-194z" />
+ <glyph glyph-name="less" unicode="&#x3c;" horiz-adv-x="367"
+d="M31 393v-99l286 -190v134l-169 108l169 107v134z" />
+ <glyph glyph-name="equal" unicode="=" horiz-adv-x="538"
+d="M476 279h-408v-111h408v111zM476 479h-408v-111h408v111z" />
+ <glyph glyph-name="greater" unicode="&#x3e;" horiz-adv-x="367"
+d="M48 104l285 190v99l-285 194v-134l169 -107l-169 -108v-134z" />
+ <glyph glyph-name="question" unicode="?" horiz-adv-x="867"
+d="M463 247q0 13 2.5 23t12.5 17.5t30 12.5t55 9q75 9 125 20t80 31.5t42.5 54.5t12.5 88q0 55 -11.5 92.5t-38 61t-70.5 34t-109 10.5h-310q-66 0 -112 -14t-74.5 -42t-41 -68.5t-12.5 -93.5h167q1 38 25.5 58.5t91.5 20.5h196q37 0 62.5 -2.5t41.5 -9t22.5 -18t6.5 -29.5
+q0 -19 -9.5 -29.5t-31.5 -17t-56.5 -10.5l-83.5 -10q-88 -10 -133 -43.5t-45 -108.5v-64h165v27zM297 167v-167h166v167h-166z" />
+ <glyph glyph-name="at" unicode="@" horiz-adv-x="649"
+d="M223 415q0 19 6.5 37.5t19 33t31 23.5t43.5 9q21 0 36.5 -7.5t26 -20t15.5 -29t5 -33.5q0 -19 -6 -37t-18.5 -32.5t-31 -23t-43.5 -8.5q-42 0 -63 27t-21 61zM90 433q0 44 16 86t46.5 75t74.5 53t100 20q68 0 114 -23t74.5 -57t40.5 -73.5t12 -72.5q0 -49 -16.5 -82
+t-54.5 -33q-23 0 -32.5 10t-9.5 31v7q0 4 1 9l21 174h-45l-3 -48q-7 11 -16 20.5t-22 17t-30.5 12t-41.5 4.5q-35 0 -62.5 -13.5t-46 -35t-28.5 -48.5t-10 -54q0 -25 8 -48.5t24 -42t39.5 -29.5t54.5 -11q51 0 74.5 13.5t41.5 37.5q3 -9 7.5 -18t13 -16.5t22 -12t35.5 -4.5
+q35 0 58.5 13t37 34.5t19 49.5t5.5 58q0 52 -18.5 101.5t-55 88t-89.5 62t-122 23.5q-70 0 -123.5 -24t-90 -63.5t-55 -89.5t-18.5 -102q0 -53 17.5 -102.5t53 -88t89 -62t124.5 -23.5q65 0 113 19.5t77 45.5l-31 36q-22 -20 -60.5 -38.5t-95.5 -18.5q-59 0 -103.5 18.5
+t-74 50.5t-44.5 74.5t-15 89.5z" />
+ <glyph glyph-name="A" unicode="A" horiz-adv-x="983"
+d="M366 694l-358 -694h194l85 167h421l84 -167h195l-358 694h-263zM504 564l132 -258h-277l137 258h8z" />
+ <glyph glyph-name="B" unicode="B" horiz-adv-x="887"
+d="M592 694h-530v-694h586q54 0 90.5 11t59 35.5t32.5 63t10 94.5q0 46 -7 76t-19 48.5t-29 27.5t-37 13q15 7 25.5 15t17.5 23.5t10 42t3 71.5q0 46 -10 78.5t-34.5 53.5t-65.5 31t-102 10zM229 433v123h337q35 0 53.5 -14t18.5 -48q0 -35 -19 -48t-52 -13h-338zM229 139
+v155h357q42 0 64.5 -15t22.5 -58q0 -46 -21 -64t-60 -18h-363z" />
+ <glyph glyph-name="C" unicode="C" horiz-adv-x="910"
+d="M368 -1h152q111 0 179 12t104.5 40t48 74.5t11.5 115.5h-172q0 -29 -6.5 -47t-25.5 -28t-53.5 -13t-89.5 -3h-136q-54 0 -87 5t-51 21.5t-24 46.5t-6 81v76q0 55 6 87t24.5 48t53 20.5t90.5 4.5h128q59 0 94 -5t53 -15.5t23.5 -26t5.5 -35.5h172q0 73 -15 119t-53 72
+t-104 35.5t-168 9.5h-148q-97 0 -160.5 -11.5t-101 -45t-53 -95.5t-15.5 -164v-88q0 -86 15 -142.5t51.5 -89.5t99 -46t158.5 -13z" />
+ <glyph glyph-name="D" unicode="D" horiz-adv-x="897"
+d="M526 138h-298v418h298q45 0 74 -8t46.5 -25.5t24 -46t6.5 -68.5v-116q0 -45 -6 -74.5t-23 -47t-46.5 -25t-75.5 -7.5zM552 694h-491v-695h505q79 0 132.5 13.5t85.5 46t45.5 87.5t13.5 138v134q0 77 -15 130t-49.5 85.5t-90 46.5t-136.5 14z" />
+ <glyph glyph-name="E" unicode="E" horiz-adv-x="834"
+d="M68 694v-694h710v139h-544v150h527v139h-527v128h544v138h-710z" />
+ <glyph glyph-name="F" unicode="F" horiz-adv-x="813"
+d="M60 694v-694h167v289h526v139h-526v128h543v138h-710z" />
+ <glyph glyph-name="G" unicode="G" horiz-adv-x="923"
+d="M520 544q59 0 94.5 -2.5t55 -9.5t26.5 -19.5t7 -32.5h172q0 61 -15.5 103t-55.5 67t-108 36t-174 11h-152q-98 0 -160.5 -14.5t-98.5 -50t-49.5 -95.5t-13.5 -151v-108q0 -82 15 -136t51.5 -85.5t97.5 -44t154 -12.5h173q102 0 167 12t102.5 43t52 85t14.5 139v139h-423
+v-135h252v-52q0 -24 -7 -40t-27.5 -25t-57 -12.5t-94.5 -3.5h-136q-54 0 -87 6.5t-51 23t-24 46t-6 76.5v73q0 56 7.5 89.5t27 51t53.5 23t87 5.5h131z" />
+ <glyph glyph-name="H" unicode="H" horiz-adv-x="864"
+d="M53 694v-694h167v289h428v-289h166v694h-166v-266h-428v266h-167z" />
+ <glyph glyph-name="I" unicode="I" horiz-adv-x="328"
+d="M88 0h166v694h-166v-694z" />
+ <glyph glyph-name="J" unicode="J" horiz-adv-x="776"
+d="M193 299h-166v-52q0 -65 14.5 -112t45.5 -77t80 -44t117 -14h188q66 0 114 13t79 44.5t46 83t15 128.5v425h-167v-411q0 -44 -7.5 -72t-28 -44t-56 -22t-91.5 -6q-57 0 -92.5 6.5t-55.5 20t-27.5 35t-7.5 51.5v47z" />
+ <glyph glyph-name="K" unicode="K" horiz-adv-x="884"
+d="M63 694v-694h167v311h83l312 -311h210l-385 388l403 306h-223l-319 -244h-81v244h-167z" />
+ <glyph glyph-name="L" unicode="L" horiz-adv-x="703"
+d="M60 694v-694h594v140h-427v554h-167z" />
+ <glyph glyph-name="M" unicode="M" horiz-adv-x="1217"
+d="M71 694v-694h166v510l287 -510h180l288 510v-510h167v694h-249l-296 -511l-286 511h-257z" />
+ <glyph glyph-name="N" unicode="N" horiz-adv-x="957"
+d="M66 694v-694h166v519l457 -519h199v694h-167v-475l-407 475h-248z" />
+ <glyph glyph-name="O" unicode="O" horiz-adv-x="916"
+d="M513 540q63 0 100.5 -5.5t57.5 -23t26.5 -49.5t6.5 -84v-72q0 -50 -6.5 -80t-26.5 -46.5t-57 -21.5t-98 -5h-132q-57 0 -91 6t-52 22.5t-24 45.5t-6 76v72q0 52 6 84t24.5 50t54 24.5t94.5 6.5h123zM519 0q108 0 176.5 10.5t107.5 42t53.5 90t14.5 154.5v84
+q0 94 -14.5 155.5t-53 97t-106.5 49.5t-175 14h-147q-102 0 -167 -13.5t-101.5 -49t-50 -97.5t-13.5 -159v-84q0 -90 14 -147t50.5 -90t100.5 -45t164 -12h147z" />
+ <glyph glyph-name="P" unicode="P" horiz-adv-x="800"
+d="M520 694h-463v-694h166v206h308q67 0 113.5 11.5t75 37.5t41 67.5t12.5 101.5v48q0 60 -14 102.5t-45 69t-79 38.5t-115 12zM607 442q0 -39 -17.5 -54.5t-61.5 -15.5h-305v156h301q47 0 65 -15.5t18 -56.5v-14z" />
+ <glyph glyph-name="Q" unicode="Q" horiz-adv-x="929"
+d="M704 306v-16t-1 -15l-204 131l-96 -134l181 -117q-15 -1 -32 -1.5t-36 -0.5h-132q-57 0 -91 6t-52 22.5t-24 45.5t-6 76v72q0 52 6 84t24.5 50t54 24.5t94.5 6.5h123q63 0 100.5 -5.5t57.5 -23t26.5 -49.5t6.5 -84v-72zM519 0q90 0 151 6.5t102 26.5l77 -49l88 140
+l-74 47q5 26 6.5 57.5t1.5 68.5v84q0 94 -14.5 155.5t-53 97t-106.5 49.5t-175 14h-147q-104 0 -168.5 -13.5t-101 -49t-49.5 -97.5t-13 -159v-84q0 -93 13.5 -150.5t50.5 -89.5t100.5 -43t164.5 -11h147z" />
+ <glyph glyph-name="R" unicode="R" horiz-adv-x="889"
+d="M834 144q0 62 -16.5 91.5t-45.5 40.5q33 21 44 55t11 93v48q0 60 -14 102.5t-45 69t-79 38.5t-115 12h-515v-694h167v207h328q58 0 85.5 -24t27.5 -75v-108h167v144zM661 442q0 -39 -17.5 -54.5t-61.5 -15.5h-359v156h355q47 0 65 -15.5t18 -56.5v-14z" />
+ <glyph glyph-name="S" unicode="S" horiz-adv-x="897"
+d="M291 694q-67 0 -114.5 -10.5t-77.5 -34.5t-44 -62.5t-14 -93.5q0 -65 13.5 -102.5t44.5 -57t79.5 -26.5t119.5 -10l266 -11q36 -2 58.5 -7t35 -14.5t17.5 -23t5 -32.5q0 -42 -27 -56t-82 -14h-278q-35 0 -58 16t-23 42h-170q0 -50 11.5 -87t39 -61.5t72.5 -36.5t111 -12
+h344q65 0 110 12t72.5 38t39.5 65.5t12 95.5q0 69 -15 109t-44.5 61.5t-74 29t-103.5 9.5l-307 12q-18 1 -33 2.5t-25.5 7t-16.5 17t-6 32.5q0 40 23 52.5t58 12.5h279q26 0 42.5 -3t26 -10t13 -18t3.5 -27h179q0 100 -63 148t-194 48h-305z" />
+ <glyph glyph-name="T" unicode="T" horiz-adv-x="800"
+d="M777 694h-750v-141h292v-553h166v553h292v141z" />
+ <glyph glyph-name="U" unicode="U" horiz-adv-x="896"
+d="M213 694h-166v-447q0 -66 15 -113t49 -77t87 -43.5t130 -13.5h246q80 0 134.5 13t87.5 42t47 76t14 116v447h-167v-430q0 -36 -8 -60t-25 -38.5t-45 -20.5t-68 -6h-180q-42 0 -71 6t-46.5 20t-25.5 38t-8 60v431z" />
+ <glyph glyph-name="V" unicode="V" horiz-adv-x="983"
+d="M207 694h-192l346 -694h264l346 694h-190l-287 -574z" />
+ <glyph glyph-name="W" unicode="W" horiz-adv-x="1391"
+d="M533 0l167 472l167 -472h244l269 694h-172l-212 -554h-13l-197 554h-173l-196 -558h-9l-217 558h-172l270 -694h244z" />
+ <glyph glyph-name="X" unicode="X" horiz-adv-x="984"
+d="M250 694h-199l317 -327l-368 -367h211l279 274l278 -274h210l-366 367l315 327h-197l-240 -238z" />
+ <glyph glyph-name="Y" unicode="Y" horiz-adv-x="882"
+d="M220 694h-199l341 -460v-234h167v234l333 460h-190l-226 -313z" />
+ <glyph glyph-name="Z" unicode="Z" horiz-adv-x="866"
+d="M816 694h-780v-138h535l-535 -420v-136h780v139h-517l517 415v140z" />
+ <glyph glyph-name="bracketleft" unicode="[" horiz-adv-x="289"
+d="M249 706v55h-185v-872l188 -1v55h-76v763h73z" />
+ <glyph glyph-name="backslash" unicode="\" horiz-adv-x="338"
+d="M339 -89l-222 817h-111l222 -817h111z" />
+ <glyph glyph-name="bracketright" unicode="]" horiz-adv-x="289"
+d="M238 -111v872h-185v-55h74v-763h-77v-55z" />
+ <glyph glyph-name="asciicircum" unicode="^" horiz-adv-x="406"
+d="M186 641l-147 -305h32l135 195l133 -195h33l-146 305h-40z" />
+ <glyph glyph-name="underscore" unicode="_" horiz-adv-x="389"
+d="M407 -31h-406v-55h406v55z" />
+ <glyph glyph-name="grave" unicode="`" horiz-adv-x="320"
+d="M236 554l37 33l-150 171l-76 -74z" />
+ <glyph glyph-name="a" unicode="a" horiz-adv-x="749"
+d="M265 317q-62 0 -102 -9t-64 -27.5t-33.5 -46t-9.5 -64.5v-28q0 -77 50 -109.5t158 -32.5h111q53 0 84.5 4.5t49 12t25.5 17.5t15 22v-56h139v307q0 41 -11.5 75.5t-38.5 59t-72 38.5t-112 14h-182q-114 0 -163 -35.5t-49 -107.5h158q0 9 4.5 17t16.5 13t32.5 8t52.5 3
+h105q34 0 57 -4t36.5 -14t19.5 -27t6 -42v-38q-6 11 -14.5 20.5t-27.5 16t-51.5 10t-86.5 3.5h-103zM218 158q0 32 21.5 40t56.5 8h160q39 0 60.5 -9t21.5 -39q0 -31 -22 -39t-60 -8h-160q-37 0 -57.5 8.5t-20.5 38.5z" />
+ <glyph glyph-name="b" unicode="b" horiz-adv-x="784"
+d="M222 63q7 -12 19 -23.5t32.5 -20.5t53 -14t82.5 -5h70q69 0 116.5 14.5t77.5 42.5t43.5 68.5t13.5 92.5v57q0 110 -62.5 165.5t-196.5 55.5h-70q-48 0 -79.5 -6.5t-52 -17t-31 -24t-16.5 -27.5v273h-166v-694h166v63zM227 240v20q0 26 7 46.5t23.5 34.5t44.5 21.5t70 7.5
+h56q71 0 103 -24t32 -90v-20q0 -63 -32 -86.5t-103 -23.5h-64q-38 0 -64.5 7.5t-42.5 22t-23 36t-7 48.5z" />
+ <glyph glyph-name="c" unicode="c" horiz-adv-x="703"
+d="M666 164v15h-158q0 -15 -4.5 -27t-19.5 -19.5t-42.5 -11.5t-73.5 -4h-40q-82 0 -115 26t-33 86v32q0 32 7 54t24 36t45.5 20.5t70.5 6.5h38q46 0 74 -3.5t43.5 -11t20.5 -18t5 -24.5h158v10q0 43 -12 74.5t-43 51.5t-85.5 29.5t-138.5 9.5h-75q-80 0 -133 -12.5
+t-84.5 -38.5t-44.5 -68t-13 -100v-64q0 -58 12.5 -98.5t44.5 -66t88 -37t143 -11.5h75q85 0 137.5 11t81 32t38 51.5t9.5 69.5z" />
+ <glyph glyph-name="d" unicode="d" horiz-adv-x="784"
+d="M299 0h70q49 0 82 5t53.5 14t32 20.5t19.5 23.5v-63h166v694h-166v-273q-6 14 -16.5 27.5t-31 24t-52 17t-79.5 6.5h-70q-134 0 -196.5 -55.5t-62.5 -165.5v-57q0 -52 13.5 -92.5t43.5 -68.5t77.5 -42.5t116.5 -14.5zM408 370q42 0 70 -7.5t44.5 -21.5t23.5 -34.5
+t7 -46.5v-20q0 -55 -30.5 -84.5t-106.5 -29.5h-64q-71 0 -103 23.5t-32 86.5v20q0 66 32 90t103 24h56z" />
+ <glyph glyph-name="e" unicode="e" horiz-adv-x="698"
+d="M399 380q38 0 60.5 -7.5t34 -19t14.5 -25t3 -26.5h-320q0 11 2.5 24.5t13 25.5t31.5 20t57 8h104zM323 -1h73q87 0 140 13t82 34t38.5 48.5t9.5 56.5v10h-155q0 -15 -5 -24.5t-17 -15t-32.5 -7t-51.5 -1.5h-104q-63 0 -87.5 21t-24.5 57v19h477v72q0 61 -12 102t-43.5 66
+t-85.5 35.5t-138 10.5h-79q-78 0 -130 -12.5t-83.5 -38.5t-44.5 -67t-13 -98v-67q0 -58 13.5 -98.5t46.5 -66t88 -37.5t138 -12z" />
+ <glyph glyph-name="f" unicode="f" horiz-adv-x="512"
+d="M471 496h-212v10q0 30 12.5 40t52.5 10h131v138h-167q-56 0 -93.5 -12t-60 -34.5t-32.5 -55t-10 -73.5v-23h-61v-137h61v-359h167v359h212v137z" />
+ <glyph glyph-name="g" unicode="g" horiz-adv-x="774"
+d="M294 494q-119 0 -182 -52t-63 -168v-60q0 -214 251 -214h94q45 0 74 5.5t46.5 15.5t27 23t15.5 28v-64q0 -32 -7 -53t-22 -34t-39.5 -18t-58.5 -5h-78q-35 0 -58.5 4.5t-37.5 12t-19.5 17t-5.5 20.5h-167q0 -77 61.5 -124.5t186.5 -47.5h150q70 0 119.5 14t81 44.5
+t46 79.5t14.5 118v458h-166v-63q-9 11 -20 22t-30.5 20t-50.5 15t-78 6h-84zM408 370q42 0 70 -7.5t44.5 -21.5t23.5 -34.5t7 -46.5v-20q0 -55 -30.5 -84.5t-106.5 -29.5h-64q-71 0 -103 23.5t-32 86.5v20q0 66 32 90t103 24h56z" />
+ <glyph glyph-name="h" unicode="h" horiz-adv-x="790"
+d="M484 494h-117q-35 0 -59 -6t-41 -16t-27.5 -23t-18.5 -26v271h-165v-695h167v243q0 66 33.5 101t96.5 35h81q41 0 68 -7t43 -22t22.5 -38t6.5 -55v-257h167v269q0 56 -13 98.5t-43.5 71t-79.5 42.5t-121 14z" />
+ <glyph glyph-name="i" unicode="i" horiz-adv-x="298"
+d="M237 494h-167v-494h167v494zM237 694h-167v-133h167v133z" />
+ <glyph glyph-name="j" unicode="j" horiz-adv-x="341"
+d="M109 494v-483q0 -42 -20 -63t-72 -21v-139q77 0 127 9.5t79.5 34t41 68t11.5 112.5v482h-167zM277 694h-167v-133h167v133z" />
+ <glyph glyph-name="k" unicode="k" horiz-adv-x="647"
+d="M47 694v-694h166v248h29l209 -248h186l-255 294l229 200h-187l-184 -161h-27v361h-166z" />
+ <glyph glyph-name="l" unicode="l" horiz-adv-x="293"
+d="M232 694h-166v-694h166v694z" />
+ <glyph glyph-name="m" unicode="m" horiz-adv-x="1164"
+d="M878 494h-45q-43 0 -72.5 -6t-49 -16t-31 -23t-19.5 -27q-8 13 -21 26t-37.5 23.5t-63.5 16.5t-99 6h-36q-44 0 -74.5 -6.5t-51.5 -17t-33 -24.5t-18 -28v76h-170v-494h170v270q0 50 25.5 79t91.5 29h30q39 0 64 -8t39.5 -22.5t20 -35t5.5 -45.5v-267h170v264
+q0 53 30 83.5t99 30.5h30q41 0 64.5 -9t35.5 -23.5t15.5 -33.5t3.5 -39v-273h170v304q0 42 -12 77t-40.5 60t-75 39t-115.5 14z" />
+ <glyph glyph-name="n" unicode="n" horiz-adv-x="738"
+d="M436 494h-52q-45 0 -74.5 -6.5t-48.5 -17t-29.5 -23.5t-17.5 -25v72h-165v-494h168v242q0 64 36 100t107 36h24q78 0 111 -35t33 -101v-242h166v269q0 112 -60 168.5t-198 56.5z" />
+ <glyph glyph-name="o" unicode="o" horiz-adv-x="704"
+d="M309 496q-77 0 -128.5 -13t-82.5 -41t-43.5 -72t-12.5 -106v-41q0 -62 14 -105t41.5 -69.5t68 -38t92.5 -11.5h199q57 0 97.5 12t66.5 38.5t38.5 69t12.5 104.5v41q0 64 -14 108.5t-47 72t-86 39.5t-131 12h-85zM525 240q0 -31 -7 -52.5t-23 -35t-42.5 -20t-64.5 -6.5
+h-62q-38 0 -64.5 6.5t-42.5 20t-23 35t-7 52.5v20q0 28 6.5 49t22.5 34.5t44 20t70 6.5h50q42 0 70 -6.5t44 -20t22.5 -34.5t6.5 -49v-20z" />
+ <glyph glyph-name="p" unicode="p" horiz-adv-x="764"
+d="M473 496h-70q-50 0 -82.5 -5t-53 -14t-32.5 -20.5t-19 -23.5v63h-166v-696h166v275q5 -14 16 -27t31 -24t52 -17.5t80 -6.5h70q134 0 196.5 55.5t62.5 165.5v49q0 55 -13.5 97.5t-43.5 71t-77.5 43t-116.5 14.5zM225 240v20q0 26 7 46.5t23.5 34.5t44.5 21.5t70 7.5h56
+q71 0 103 -24.5t32 -89.5v-20q0 -60 -31.5 -85t-103.5 -25h-64q-38 0 -64.5 7.5t-42.5 22t-23 36t-7 48.5z" />
+ <glyph glyph-name="q" unicode="q" horiz-adv-x="770"
+d="M544 433q-8 12 -19.5 23.5t-32 20.5t-53.5 14t-82 5h-70q-69 0 -116.5 -14.5t-77.5 -43t-43.5 -71t-13.5 -97.5v-49q0 -110 62.5 -165.5t196.5 -55.5h70q48 0 80 6.5t52 17.5t31 24t16 27v-275h166v696h-166v-63zM392 370q42 0 70 -7.5t44.5 -21.5t23.5 -34.5t7 -46.5
+v-20q0 -55 -30.5 -84.5t-106.5 -29.5h-64q-72 0 -103.5 25t-31.5 85v20q0 65 32 89.5t103 24.5h56z" />
+ <glyph glyph-name="r" unicode="r" horiz-adv-x="673"
+d="M482 293h166q0 43 -10.5 79.5t-37 63.5t-71.5 42.5t-113 15.5h-67q-32 0 -55 -6t-39.5 -16t-27 -23t-17.5 -28v73h-169v-494h169v260q0 51 31.5 84.5t91.5 33.5h43q31 0 51.5 -8t32.5 -21t17 -28t5 -28z" />
+ <glyph glyph-name="s" unicode="s" horiz-adv-x="698"
+d="M187 147h-147q0 -44 13.5 -72.5t38 -45.5t59.5 -23.5t77 -6.5h236q98 0 148.5 38t50.5 113v26q0 36 -10 61.5t-33.5 43t-61.5 26t-94 9.5l-217 4q-37 1 -48 7.5t-11 23.5t12.5 26.5t47.5 9.5h173q83 0 83 -39h156q0 44 -12.5 73t-37 45.5t-62 23t-87.5 6.5h-224
+q-56 0 -93.5 -10t-60.5 -29.5t-32.5 -47t-9.5 -62.5v-24q0 -38 11.5 -63t33 -40.5t53 -22t71.5 -7.5l223 -4q39 -1 52 -11.5t13 -27.5q0 -19 -13.5 -29.5t-51.5 -10.5h-184q-20 0 -32 3.5t-19 9.5t-9 13t-2 14z" />
+ <glyph glyph-name="t" unicode="t" horiz-adv-x="701"
+d="M349 119q-54 0 -77.5 21t-23.5 66v150h350v138h-350v95h-166v-95h-61v-138h61v-142q0 -54 14 -94t45 -67t80 -40t118 -13h55q88 0 142.5 17t83.5 45.5t38.5 64.5t9.5 75h-171q0 -15 -3.5 -30t-14.5 -26.5t-31.5 -19t-54.5 -7.5h-44z" />
+ <glyph glyph-name="u" unicode="u" horiz-adv-x="796"
+d="M298 -1h129q33 0 57 6t41 15t28 20t19 22v-62h166v494h-168v-243q0 -66 -36.5 -100.5t-106.5 -34.5h-65q-39 0 -66 7t-44 22.5t-25 41.5t-8 64v243h-167v-272q0 -60 16.5 -102.5t48 -69.5t77 -39t104.5 -12z" />
+ <glyph glyph-name="v" unicode="v" horiz-adv-x="676"
+d="M173 494h-162l234 -494h189l233 494h-161l-167 -345z" />
+ <glyph glyph-name="w" unicode="w" horiz-adv-x="1107"
+d="M424 0l134 309l133 -309h189l216 494h-162l-148 -345l-149 345h-159l-148 -345l-149 345h-161l216 -494h188z" />
+ <glyph glyph-name="x" unicode="x" horiz-adv-x="693"
+d="M241 494h-184l176 -223l-214 -271h184l146 184l142 -184h185l-218 276l174 218h-182l-107 -132z" />
+ <glyph glyph-name="y" unicode="y" horiz-adv-x="684"
+d="M176 494h-160l231 -494q-9 -20 -21.5 -32t-30 -18.5t-41 -9t-54.5 -2.5v-149q77 0 130 13t90.5 39t64.5 65.5t52 93.5l233 494h-160l-167 -345z" />
+ <glyph glyph-name="z" unicode="z" horiz-adv-x="662"
+d="M617 494h-574v-138h314l-318 -223v-133h578v139h-341l341 227v128z" />
+ <glyph glyph-name="braceleft" unicode="{" horiz-adv-x="304"
+d="M208 416v184q0 54 20.5 75.5t72.5 21.5l1 55q-42 0 -79 -8t-65 -28t-44.5 -53.5t-16.5 -84.5v-172q0 -35 -19.5 -59t-46.5 -39q26 -15 46 -37.5t20 -60.5v-194q0 -41 17.5 -69.5t46 -46t65.5 -25t76 -7.5v55q-50 0 -72 21t-22 72v188q0 40 -18 65.5t-42 38.5
+q22 11 41 35.5t19 72.5z" />
+ <glyph glyph-name="bar" unicode="|" horiz-adv-x="200"
+d="M142 -133v872h-83v-872h83z" />
+ <glyph glyph-name="braceright" unicode="}" horiz-adv-x="302"
+d="M18 697q52 0 72.5 -21.5t20.5 -75.5v-184q0 -48 19 -72.5t41 -35.5q-24 -13 -42 -38.5t-18 -65.5v-188q0 -51 -22 -72t-72 -21v-55q39 0 76 7.5t65.5 25t46 46t17.5 69.5v194q0 38 20 60.5t46 37.5q-27 15 -46.5 39t-19.5 59v172q0 51 -16.5 84.5t-44.5 53.5t-65 28
+t-79 8z" />
+ <glyph glyph-name="asciitilde" unicode="~" horiz-adv-x="591"
+d="M58 340h93q4 18 17.5 34t48.5 16q24 0 39 -8t32 -18q16 -10 37.5 -18t56.5 -8q37 0 63.5 10t44 27.5t26.5 41t11 50.5h-89q-1 -16 -14.5 -32.5t-45.5 -16.5q-23 0 -39 8t-33 19q-17 9 -38 16.5t-54 7.5q-41 0 -69.5 -11.5t-47 -30t-28 -41.5t-11.5 -46z" />
+ <glyph glyph-name="quotesinglbase" unicode="&#x201a;" horiz-adv-x="317"
+d="M76 284v-195h43v-25q0 -37 -16.5 -48.5t-55.5 -11.5v-93q54 0 95.5 9t69 30t42 55t14.5 84v195h-192z" />
+ <glyph glyph-name="florin" unicode="&#x192;" horiz-adv-x="649"
+d="M591 533h-533v-533h533v533z" />
+ <glyph glyph-name="quotedblbase" unicode="&#x201e;" horiz-adv-x="565"
+d="M347 284v-195h43v-25q0 -37 -16.5 -48.5t-55.5 -11.5v-93q54 0 95.5 9t69 30t42 55t14.5 84v195h-192zM76 284v-195h43v-25q0 -37 -16.5 -48.5t-55.5 -11.5v-93q54 0 95.5 9t69 30t42 55t14.5 84v195h-192z" />
+ <glyph glyph-name="ellipsis" unicode="&#x2026;" horiz-adv-x="1127"
+d="M119 167v-167h195v167h-195zM489 167v-167h195v167h-195zM864 167v-167h195v167h-195z" />
+ <glyph glyph-name="dagger" unicode="&#x2020;" horiz-adv-x="244"
+d="M138 736h-27v-135h-68v-27h68v-417h27v417h68v27h-68v135z" />
+ <glyph glyph-name="daggerdbl" unicode="&#x2021;" horiz-adv-x="244"
+d="M116 79h26v302h68v27h-68v151h68v28h-68v149h-26v-149h-68v-28h68v-151h-68v-27h68v-302z" />
+ <glyph glyph-name="circumflex" unicode="&#x2c6;" horiz-adv-x="422"
+d="M188 717l-147 -145h41l134 69l128 -69h45l-147 145h-54z" />
+ <glyph glyph-name="perthousand" unicode="&#x2030;" horiz-adv-x="1839"
+d="M323 641q42 0 67 -4t38.5 -15.5t17.5 -32.5t4 -56v-48q0 -33 -4 -53.5t-17.5 -31t-38 -14t-65.5 -3.5h-56q-38 0 -60.5 4t-34.5 15t-16 30.5t-4 50.5v48q0 34 4 55.5t16.5 33.5t36 16.5t62.5 4.5h50zM327 281q72 0 117.5 7t72 28t36 60t9.5 103v56q0 63 -9.5 104
+t-35.5 64.5t-71 33t-117 9.5h-66q-69 0 -112 -9t-67.5 -33t-33 -65.5t-8.5 -105.5v-56q0 -62 9 -100.5t33.5 -59.5t67 -28.5t109.5 -7.5h66zM590 -33l205 761h-101l-205 -761h101zM1012 353q42 0 67 -4t38.5 -15.5t17.5 -32.5t4 -56v-48q0 -33 -4 -53.5t-17.5 -31t-38 -14
+t-65.5 -3.5h-56q-38 0 -60.5 4t-34.5 15t-16 30.5t-4 50.5v48q0 34 4 55.5t16.5 33.5t36 16.5t62.5 4.5h50zM1016 -7q72 0 117.5 7t72 28t36 60t9.5 103v56q0 63 -9.5 104t-35.5 64.5t-71 33t-117 9.5h-66q-69 0 -112 -9t-67.5 -33t-33 -65.5t-8.5 -105.5v-56
+q0 -62 9 -100.5t33.5 -59.5t67 -28.5t109.5 -7.5h66zM1573 353q42 0 67 -4t38.5 -15.5t17.5 -32.5t4 -56v-48q0 -33 -4 -53.5t-17.5 -31t-38 -14t-65.5 -3.5h-56q-38 0 -60.5 4t-34.5 15t-16 30.5t-4 50.5v48q0 34 4 55.5t16.5 33.5t36 16.5t62.5 4.5h50zM1577 -7
+q72 0 117.5 7t72 28t36 60t9.5 103v56q0 63 -9.5 104t-35.5 64.5t-71 33t-117 9.5h-66q-69 0 -112 -9t-67.5 -33t-33 -65.5t-8.5 -105.5v-56q0 -62 9 -100.5t33.5 -59.5t67 -28.5t109.5 -7.5h66z" />
+ <glyph glyph-name="Scaron" unicode="&#x160;" horiz-adv-x="897"
+d="M291 694q-67 0 -114.5 -10.5t-77.5 -34.5t-44 -62.5t-14 -93.5q0 -65 13.5 -102.5t44.5 -57t79.5 -26.5t119.5 -10l266 -11q36 -2 58.5 -7t35 -14.5t17.5 -23t5 -32.5q0 -42 -27 -56t-82 -14h-278q-35 0 -58 16t-23 42h-170q0 -50 11.5 -87t39 -61.5t72.5 -36.5t111 -12
+h344q65 0 110 12t72.5 38t39.5 65.5t12 95.5q0 69 -15 109t-44.5 61.5t-74 29t-103.5 9.5l-307 12q-18 1 -33 2.5t-25.5 7t-16.5 17t-6 32.5q0 40 23 52.5t58 12.5h279q26 0 42.5 -3t26 -10t13 -18t3.5 -27h179q0 100 -63 148t-194 48h-305zM476 727l146 145h-41l-133 -69
+l-129 69h-45l147 -145h55z" />
+ <glyph glyph-name="guilsinglleft" unicode="&#x2039;" horiz-adv-x="374"
+d="M20 302v-50l272 -218l58 75l-213 170l213 172l-60 73z" />
+ <glyph glyph-name="OE" unicode="&#x152;" horiz-adv-x="1449"
+d="M763 694v-33q-40 20 -99 28t-142 8h-147q-102 0 -167 -13.5t-101.5 -49t-50 -97.5t-13.5 -159v-84q0 -90 14 -147t50.5 -90t100.5 -45t164 -12h147q85 0 144.5 6t99.5 23v-29h649v139h-548v148h527v143h-527v126h548v138h-649zM513 540q63 0 100.5 -5.5t57.5 -23
+t26.5 -49.5t6.5 -84v-72q0 -50 -6.5 -80t-26.5 -46.5t-57 -21.5t-98 -5h-132q-57 0 -91 6t-52 22.5t-24 45.5t-6 76v72q0 52 6 84t24.5 50t54 24.5t94.5 6.5h123z" />
+ <glyph glyph-name="quoteleft" unicode="&#x2018;" horiz-adv-x="289"
+d="M229 371v195h-43v25q0 37 16.5 48.5t55.5 11.5v93q-54 0 -95.5 -9t-69 -30t-42 -55t-14.5 -84v-195h192z" />
+ <glyph glyph-name="quoteright" unicode="&#x2019;" horiz-adv-x="316"
+d="M75 714v-195h43v-25q0 -37 -16.5 -48.5t-55.5 -11.5v-93q54 0 95.5 9t69 30t42 55t14.5 84v195h-192z" />
+ <glyph glyph-name="quotedblleft" unicode="&#x201c;" horiz-adv-x="551"
+d="M229 371v195h-43v25q0 37 16.5 48.5t55.5 11.5v93q-54 0 -95.5 -9t-69 -30t-42 -55t-14.5 -84v-195h192zM500 371v195h-43v25q0 37 16.5 48.5t55.5 11.5v93q-54 0 -95.5 -9t-69 -30t-42 -55t-14.5 -84v-195h192z" />
+ <glyph glyph-name="quotedblright" unicode="&#x201d;" horiz-adv-x="610"
+d="M369 714v-195h43v-25q0 -37 -16.5 -48.5t-55.5 -11.5v-93q54 0 95.5 9t69 30t42 55t14.5 84v195h-192zM98 714v-195h43v-25q0 -37 -16.5 -48.5t-55.5 -11.5v-93q54 0 95.5 9t69 30t42 55t14.5 84v195h-192z" />
+ <glyph glyph-name="bullet" unicode="&#x2022;" horiz-adv-x="467"
+d="M403 277q0 34 -13 64.5t-35.5 53t-53 35.5t-64.5 13q-35 0 -65 -13t-52.5 -35.5t-35.5 -53t-13 -64.5q0 -35 13 -65t35.5 -52.5t52.5 -35.5t65 -13q34 0 64.5 13t53 35.5t35.5 52.5t13 65z" />
+ <glyph glyph-name="endash" unicode="&#x2013;" horiz-adv-x="733"
+d="M662 394h-594v-138h594v138z" />
+ <glyph glyph-name="emdash" unicode="&#x2014;" horiz-adv-x="1107"
+d="M1040 394h-972v-138h972v138z" />
+ <glyph glyph-name="tilde" unicode="&#x2dc;" horiz-adv-x="537"
+d="M34 581h93q4 18 17.5 34t48.5 16q24 0 39 -8t32 -18q16 -10 37.5 -18t56.5 -8q37 0 63.5 10t44 27.5t26.5 41t11 50.5h-89q-1 -16 -14.5 -32.5t-45.5 -16.5q-23 0 -39 8t-33 19q-17 9 -38 16.5t-54 7.5q-41 0 -69.5 -11.5t-47 -30t-28 -41.5t-11.5 -46z" />
+ <glyph glyph-name="trademark" unicode="&#x2122;" horiz-adv-x="400"
+d="M174 702h-124v-13h56v-161h13v161h55v13zM208 704l-39 -175h13l28 131l53 -140l54 140l26 -131h14l-37 175l-57 -147z" />
+ <glyph glyph-name="scaron" unicode="&#x161;" horiz-adv-x="698"
+d="M187 147h-147q0 -44 13.5 -72.5t38 -45.5t59.5 -23.5t77 -6.5h236q98 0 148.5 38t50.5 113v26q0 36 -10 61.5t-33.5 43t-61.5 26t-94 9.5l-217 4q-37 1 -48 7.5t-11 23.5t12.5 26.5t47.5 9.5h173q83 0 83 -39h156q0 44 -12.5 73t-37 45.5t-62 23t-87.5 6.5h-224
+q-56 0 -93.5 -10t-60.5 -29.5t-32.5 -47t-9.5 -62.5v-24q0 -38 11.5 -63t33 -40.5t53 -22t71.5 -7.5l223 -4q39 -1 52 -11.5t13 -27.5q0 -19 -13.5 -29.5t-51.5 -10.5h-184q-20 0 -32 3.5t-19 9.5t-9 13t-2 14zM371 542l146 145h-41l-133 -69l-129 69h-45l147 -145h55z" />
+ <glyph glyph-name="guilsinglright" unicode="&#x203a;" horiz-adv-x="364"
+d="M17 112l60 -72l265 212v50l-263 218l-60 -73l207 -168z" />
+ <glyph glyph-name="oe" unicode="&#x153;" horiz-adv-x="1224"
+d="M812 496q-76 0 -126.5 -11.5t-82.5 -35.5q-33 25 -84 36t-125 11h-85q-77 0 -128.5 -13t-82.5 -41t-43.5 -72t-12.5 -106v-41q0 -62 14 -105t41.5 -69.5t68 -38t92.5 -11.5h199q104 0 155 42q64 -42 215 -42h73q87 0 140 13t82 34t38.5 48.5t9.5 56.5v10h-155
+q0 -15 -5 -24.5t-17 -15t-32.5 -7t-51.5 -1.5h-104q-63 0 -87.5 21t-24.5 57v19h477v72q0 61 -12 102t-43.5 66t-85.5 35.5t-138 10.5h-79zM525 240q0 -31 -7 -52.5t-23 -35t-42.5 -20t-64.5 -6.5h-62q-38 0 -64.5 6.5t-42.5 20t-23 35t-7 52.5v20q0 28 6.5 49t22.5 34.5
+t44 20t70 6.5h50q42 0 70 -6.5t44 -20t22.5 -34.5t6.5 -49v-20zM903 380q38 0 60.5 -7.5t34 -19t14.5 -25t3 -26.5h-320q0 11 2.5 24.5t13 25.5t31.5 20t57 8h104z" />
+ <glyph glyph-name="Ydieresis" unicode="&#x178;" horiz-adv-x="882"
+d="M402 844h-134v-106h134v106zM629 844h-135v-106h135v106zM220 694h-199l341 -460v-234h167v234l333 460h-190l-226 -313z" />
+ <glyph glyph-name="exclamdown" unicode="&#xa1;" horiz-adv-x="256"
+d="M208 -144v444h-166v-444h166zM208 383v167h-168v-167h168z" />
+ <glyph glyph-name="cent" unicode="&#xa2;" horiz-adv-x="787"
+d="M469 194h-25v264h27q21 0 36 -5.5t24.5 -13.5t14.5 -18.5t7 -19.5h161q-2 32 -14 63.5t-38.5 56t-68.5 40t-104 15.5h-45v64h-93v-64h-40q-117 0 -172 -58.5t-55 -164.5v-50q0 -114 51.5 -168.5t170.5 -54.5h45v-56h93v56h47q67 0 110 17.5t67.5 44t34.5 57.5t11 58h-154
+q-2 -11 -6 -22t-13.5 -20t-26.5 -15t-45 -6zM322 458h29v-264h-27q-20 0 -37.5 5.5t-30 18t-20 33.5t-7.5 51v48q0 48 22 78t71 30z" />
+ <glyph glyph-name="sterling" unicode="&#xa3;" horiz-adv-x="782"
+d="M350 556h100q43 0 69.5 -5t40.5 -15.5t18.5 -28t5.5 -41.5h167q0 70 -17.5 114.5t-54.5 70t-93 34.5t-134 9h-112q-74 0 -124 -12t-80.5 -34.5t-44 -56t-13.5 -75.5q0 -29 5 -49t13 -35q9 -17 18 -30.5t13 -30.5h-74v-111h85q0 -62 -21 -97.5t-74 -54.5v-108h698v139
+h-470q16 26 20.5 56t4.5 65h368v111h-371q-4 17 -12 32t-17 30q-8 14 -14 29.5t-6 34.5q0 13 4 24t15.5 19t32.5 12t54 4z" />
+ <glyph glyph-name="yen" unicode="&#xa5;" horiz-adv-x="924"
+d="M224 694h-202l364 -457h-167v-56h167v-27h-167v-55h167v-99h164v99h167v55h-167v27h167v56h-167l357 457h-189l-251 -313z" />
+ <glyph glyph-name="brokenbar" unicode="&#xa6;" horiz-adv-x="167"
+d="M114 452v287h-55v-287h55zM114 0v287h-55v-287h55z" />
+ <glyph glyph-name="section" unicode="&#xa7;" horiz-adv-x="751"
+d="M586 317v-13q0 -26 -17 -41t-69 -15h-256q-49 0 -65 14t-16 42v12q0 26 16 43t65 17h257q50 0 67.5 -16.5t17.5 -42.5zM684 84q0 36 -10.5 52t-25.5 27q37 7 56.5 40.5t19.5 90.5v28q0 40 -10.5 69.5t-34.5 49t-62.5 29.5t-94.5 10h-226q-50 0 -71 9.5t-21 41.5t21 43.5
+t65 11.5h140q31 0 51 -2.5t31.5 -8.5t15.5 -15t4 -21h151q0 34 -9 63t-30.5 50t-58 32.5t-90.5 11.5h-231q-57 0 -95.5 -10.5t-61 -28.5t-32 -43t-9.5 -54v-17q0 -21 1.5 -35t4.5 -23.5t8.5 -15.5t13.5 -11q-12 -3 -24 -11.5t-21.5 -25t-16 -41t-6.5 -58.5v-26q0 -37 10 -65
+t34 -47t65.5 -28.5t104.5 -9.5h200q57 0 81.5 -14t24.5 -43q0 -32 -25.5 -44t-82.5 -12h-140q-48 0 -66.5 12.5t-18.5 37.5h-150q0 -34 9 -63t32 -50t62 -32.5t98 -11.5h180q67 0 113 8t74.5 24t40.5 40t12 55v31z" />
+ <glyph glyph-name="dieresis" unicode="&#xa8;" horiz-adv-x="409"
+d="M162 680h-134v-107h134v107zM389 680h-135v-107h135v107z" />
+ <glyph glyph-name="copyright" unicode="&#xa9;" horiz-adv-x="640"
+d="M210 360q0 22 7.5 43.5t22 37.5t37 26t52.5 10q40 0 64.5 -13.5t38.5 -23.5v24q-14 10 -39.5 22.5t-63.5 12.5q-36 0 -62.5 -12.5t-44 -32t-26.5 -44.5t-9 -50q0 -26 9 -49t27 -40t44.5 -27.5t61.5 -10.5q44 0 66.5 11.5t36.5 22.5v26q-17 -14 -40.5 -26.5t-62.5 -12.5
+q-59 0 -89 31.5t-30 74.5zM63 364q0 55 20.5 103t56.5 84t84 56.5t103 20.5t103 -20.5t84 -56.5t56.5 -84t20.5 -103t-20.5 -103t-56.5 -84t-84 -56.5t-103 -20.5t-103 20.5t-84 56.5t-56.5 84t-20.5 103zM614 363q0 59 -22.5 111t-61.5 91t-91 61.5t-111 22.5t-111 -22.5
+t-91 -61.5t-61.5 -91t-22.5 -111t22.5 -111t61.5 -91t91 -61.5t111 -22.5t111 22.5t91 61.5t61.5 91t22.5 111z" />
+ <glyph glyph-name="ordfeminine" unicode="&#xaa;" horiz-adv-x="422"
+d="M380 329h-343v-73h343v73zM151 560q-31 0 -51 -4.5t-32 -14t-17 -23.5t-5 -32v-14q0 -38 25 -54.5t79 -16.5h56q27 0 42.5 2.5t24 6t12.5 8.5t8 11v-28h69v154q0 20 -5.5 37t-19 29.5t-36 19.5t-56.5 7h-91q-57 0 -81.5 -17.5t-24.5 -53.5h79q0 9 10.5 14.5t42.5 5.5h53
+q34 0 46.5 -8.5t12.5 -34.5v-19q-3 6 -7 10.5t-13.5 7.5t-26 5t-43.5 2h-51zM127 480q0 17 11 20.5t28 3.5h80q20 0 30.5 -4.5t10.5 -19.5t-10.5 -19t-30.5 -4h-80q-18 0 -28.5 4t-10.5 19z" />
+ <glyph glyph-name="guillemotleft" unicode="&#xab;" horiz-adv-x="620"
+d="M20 302v-50l272 -218l58 75l-213 170l213 172l-60 73zM260 302v-50l272 -218l58 75l-213 170l213 172l-60 73z" />
+ <glyph glyph-name="logicalnot" unicode="&#xac;"
+d="M449 382h-388v-38h388v38zM252 413h75v312h-108l-92 -93l37 -36l71 71h17v-254zM429 229q0 47 -24 69.5t-89 22.5h-116q-65 0 -89 -22.5t-24 -69.5q0 -19 5 -31t13.5 -18.5t19.5 -9.5t23 -5q-11 -2 -22 -5.5t-19.5 -12t-14 -22t-5.5 -35.5q0 -48 27 -68t86 -20h116
+q57 0 85 19t28 74q0 21 -5.5 34t-14 20.5t-19.5 10.5t-21 5q25 2 42.5 14t17.5 50zM163 229q0 18 10 29t45 11h80q32 0 44 -10t12 -30q0 -18 -11.5 -27.5t-44.5 -9.5h-80q-32 0 -43.5 9.5t-11.5 27.5zM163 98q0 19 12 29t43 10h80q34 0 45 -11t11 -28q0 -18 -11 -29t-45 -11
+h-80q-32 0 -43.5 11t-11.5 29z" />
+ <glyph glyph-name="registered" unicode="&#xae;" horiz-adv-x="396"
+d="M265 585q0 21 -14 35t-37 14h-70v-182h14v84h31l58 -84h18l-59 84h8q23 0 37 12t14 37zM251 585q0 -35 -36 -35h-57v70h57q18 0 27 -10.5t9 -24.5zM357 539q0 33 -12.5 61.5t-34 50t-50 34t-61.5 12.5t-61.5 -12.5t-50 -34t-34 -50t-12.5 -61.5t12.5 -61.5t34 -50t50 -34
+t61.5 -12.5t61.5 12.5t50 34t34 50t12.5 61.5zM56 539q0 30 11 56t30.5 45.5t45.5 30.5t56 11t56 -11t45.5 -30.5t30.5 -45.5t11 -56t-11 -56t-30.5 -45.5t-45.5 -30.5t-56 -11t-56 11t-45.5 30.5t-30.5 45.5t-11 56z" />
+ <glyph glyph-name="macron" unicode="&#xaf;" horiz-adv-x="458"
+d="M424 661h-387v-54h387v54z" />
+ <glyph glyph-name="degree" unicode="&#xb0;" horiz-adv-x="284"
+d="M126 673q-49 0 -66 -19t-17 -57v-18q0 -32 18 -51t66 -19h37q47 0 64.5 19.5t17.5 50.5v17q0 38 -16.5 57.5t-67.5 19.5h-36zM74 580v17q0 26 13 36t40 10h35q28 0 40 -10t12 -36v-18q0 -22 -11.5 -31.5t-40.5 -9.5h-34q-29 0 -41.5 9.5t-12.5 32.5z" />
+ <glyph glyph-name="plusminus" unicode="&#xb1;" horiz-adv-x="556"
+d="M476 248h-408v-139h408v139zM198 552h-145v-138h145v-144h139v144h153v138h-153v145h-139v-145z" />
+ <glyph glyph-name="twosuperior" unicode="&#xb2;"
+d="M311 527q33 2 54.5 8t35 17t19 28t5.5 42q0 30 -6 50t-21.5 32t-43.5 17.5t-71 5.5h-67q-44 0 -69.5 -9t-39 -25t-17.5 -37t-4 -46h75q0 16 2 26.5t9.5 16.5t21.5 8.5t38 2.5h49q42 0 55 -7t13 -29t-9.5 -29.5t-40.5 -9.5l-99 -7q-56 -4 -86 -26.5t-30 -70.5v-72h339v63
+h-264v9q0 19 16.5 26t53.5 10z" />
+ <glyph glyph-name="threesuperior" unicode="&#xb3;"
+d="M214 608v-62h91q23 0 34.5 -6t11.5 -29q0 -22 -13.5 -27.5t-52.5 -5.5h-64q-32 0 -47.5 4t-15.5 25h-73v-6q0 -23 6 -39.5t21 -26.5t41.5 -14.5t67.5 -4.5h69q43 0 69.5 4t41 14t19.5 28t5 46q0 42 -15.5 55t-42.5 16q16 1 27 3.5t18 9.5t10 19.5t3 32.5q0 25 -7 41.5
+t-23.5 26t-43.5 13t-68 3.5h-63q-41 0 -67.5 -5t-41.5 -15.5t-20.5 -26t-5.5 -37.5v-12h71q0 20 17 27t53 7h54q42 0 56.5 -5t14.5 -23q0 -20 -10 -25t-37 -5h-90z" />
+ <glyph glyph-name="acute" unicode="&#xb4;" horiz-adv-x="311"
+d="M271 683l-77 74l-150 -171l38 -33z" />
+ <glyph glyph-name="mu" unicode="&#xb5;"
+d="M449 382h-388v-38h388v38zM307 113q33 2 54.5 8t35 17t19 28t5.5 42q0 30 -6 50t-21.5 32t-43.5 17.5t-71 5.5h-67q-44 0 -69.5 -9t-39 -25t-17.5 -37t-4 -46h75q0 16 2 26.5t9.5 16.5t21.5 8.5t38 2.5h49q42 0 55 -7t13 -29t-9.5 -29.5t-40.5 -9.5l-99 -7
+q-56 -4 -86 -26.5t-30 -70.5v-72h339v63h-264v9q0 19 16.5 26t53.5 10zM252 413h75v312h-108l-92 -93l37 -36l71 71h17v-254z" />
+ <glyph glyph-name="paragraph" unicode="&#xb6;" horiz-adv-x="858"
+d="M399 -56h167v750h-282q-55 0 -100 -18.5t-77 -51t-49.5 -77t-17.5 -97.5q0 -52 17 -96.5t48.5 -77.5t76.5 -51.5t102 -18.5h115v-262zM643 -56h167v750h-167v-750z" />
+ <glyph glyph-name="periodcentered" unicode="&#xb7;" horiz-adv-x="321"
+d="M64 432v-167h195v167h-195z" />
+ <glyph glyph-name="periodcentered" unicode="&#x2219;" horiz-adv-x="321"
+d="M64 432v-167h195v167h-195z" />
+ <glyph glyph-name="cedilla" unicode="&#xb8;" horiz-adv-x="298"
+d="M252 -90v90h-126v-49q0 -20 -13.5 -29.5t-29.5 -12.5t-29.5 -2.5l-13.5 0.5v-101q2 0 22 -1t52.5 2.5t63 13.5t52.5 31.5t22 57.5z" />
+ <glyph glyph-name="onesuperior" unicode="&#xb9;" horiz-adv-x="350"
+d="M207 413h75v312h-108l-92 -93l37 -36l71 71h17v-254z" />
+ <glyph glyph-name="ordmasculine" unicode="&#xba;" horiz-adv-x="422"
+d="M380 329h-343v-73h343v73zM185 643q-77 0 -105.5 -27t-28.5 -89v-21q0 -63 28 -88t80 -25h100q57 0 82.5 25.5t25.5 87.5v21q0 32 -7 54.5t-23.5 36t-43 19.5t-65.5 6h-43zM293 515q0 -32 -15 -45t-53 -13h-31q-39 0 -54 13t-15 45v10q0 29 14.5 42t57.5 13h25
+q42 0 56.5 -13t14.5 -42v-10z" />
+ <glyph glyph-name="guillemotright" unicode="&#xbb;" horiz-adv-x="644"
+d="M31 112l60 -72l265 212v50l-263 218l-60 -73l207 -168zM280 112l60 -72l265 212v50l-263 218l-60 -73l206 -168z" />
+ <glyph glyph-name="onequarter" unicode="&#xbc;"
+d="M449 382h-388v-38h388v38zM380 129v182h-98l-206 -148v-97h229v-67h75v67h42v63h-42zM252 413h75v312h-108l-92 -93l37 -36l71 71h17v-254zM305 244v-115h-155v12l144 103h11z" />
+ <glyph glyph-name="onehalf" unicode="&#xbd;"
+d="M449 382h-388v-38h388v38zM307 113q33 2 54.5 8t35 17t19 28t5.5 42q0 30 -6 50t-21.5 32t-43.5 17.5t-71 5.5h-67q-44 0 -69.5 -9t-39 -25t-17.5 -37t-4 -46h75q0 16 2 26.5t9.5 16.5t21.5 8.5t38 2.5h49q42 0 55 -7t13 -29t-9.5 -29.5t-40.5 -9.5l-99 -7
+q-56 -4 -86 -26.5t-30 -70.5v-72h339v63h-264v9q0 19 16.5 26t53.5 10zM252 413h75v312h-108l-92 -93l37 -36l71 71h17v-254z" />
+ <glyph glyph-name="threequarters" unicode="&#xbe;"
+d="M449 382h-388v-38h388v38zM214 608v-62h91q23 0 34.5 -6t11.5 -29q0 -22 -13.5 -27.5t-52.5 -5.5h-64q-32 0 -47.5 4t-15.5 25h-73v-6q0 -23 6 -39.5t21 -26.5t41.5 -14.5t67.5 -4.5h69q43 0 69.5 4t41 14t19.5 28t5 46q0 42 -15.5 55t-42.5 16q16 1 27 3.5t18 9.5
+t10 19.5t3 32.5q0 25 -7 41.5t-23.5 26t-43.5 13t-68 3.5h-63q-41 0 -67.5 -5t-41.5 -15.5t-20.5 -26t-5.5 -37.5v-12h71q0 20 17 27t53 7h54q42 0 56.5 -5t14.5 -23q0 -20 -10 -25t-37 -5h-90zM390 126v182h-98l-206 -148v-97h229v-67h75v67h42v63h-42zM315 241v-115h-155
+v12l144 103h11z" />
+ <glyph glyph-name="questiondown" unicode="&#xbf;" horiz-adv-x="894"
+d="M415 297q0 -14 -2.5 -23.5t-12.5 -17t-30 -12.5t-55 -9q-75 -9 -125 -20t-80 -31.5t-42.5 -54.5t-12.5 -88q0 -55 11.5 -92.5t38 -61t70.5 -34t109 -10.5h310q66 0 112 14t74.5 42t41 68.5t12.5 93.5h-167q-1 -38 -25.5 -58.5t-91.5 -20.5h-196q-38 0 -63 2.5t-41 9
+t-22.5 18t-6.5 29.5q0 19 9.5 29.5t31.5 17t56 10.5l84 10q88 10 133 43.5t45 108.5v64h-165v-27zM581 377v167h-166v-167h166z" />
+ <glyph glyph-name="Agrave" unicode="&#xc0;" horiz-adv-x="983"
+d="M480 737l34 29l-134 153l-69 -66zM366 694l-358 -694h194l85 167h421l84 -167h195l-358 694h-263zM504 564l132 -258h-277l137 258h8z" />
+ <glyph glyph-name="Aacute" unicode="&#xc1;" horiz-adv-x="983"
+d="M664 853l-68 66l-135 -153l35 -29zM366 694l-358 -694h194l85 167h421l84 -167h195l-358 694h-263zM504 564l132 -258h-277l137 258h8z" />
+ <glyph glyph-name="Acircumflex" unicode="&#xc2;" horiz-adv-x="983"
+d="M472 893l-132 -130h37l120 63l116 -63h40l-132 130h-49zM366 694l-358 -694h194l85 167h421l84 -167h195l-358 694h-263zM504 564l132 -258h-277l137 258h8z" />
+ <glyph glyph-name="Atilde" unicode="&#xc3;" horiz-adv-x="983"
+d="M285 751h84q4 17 16 31t43 14q22 0 36 -7t28 -16t33.5 -16t51.5 -7q33 0 57 9t39.5 25t24 37t10.5 45h-81q-1 -14 -13 -29t-41 -15q-20 0 -34.5 7t-29.5 17q-15 8 -34.5 14.5t-48.5 6.5q-36 0 -62 -10.5t-43 -27t-25.5 -37t-10.5 -41.5zM366 694l-358 -694h194l85 167
+h421l84 -167h195l-358 694h-263zM504 564l132 -258h-277l137 258h8z" />
+ <glyph glyph-name="Adieresis" unicode="&#xc4;" horiz-adv-x="983"
+d="M447 844h-135v-106h135v106zM673 844h-134v-106h134v106zM366 694l-358 -694h194l85 167h421l84 -167h195l-358 694h-263zM504 564l132 -258h-277l137 258h8z" />
+ <glyph glyph-name="Aring" unicode="&#xc5;" horiz-adv-x="983"
+d="M473 887q-38 0 -55 -18.5t-17 -47.5v-34q0 -29 17 -47t55 -18h60q36 0 53 18t17 47v34q0 29 -17 47.5t-53 18.5h-60zM477 751q-44 0 -44 37v32q0 37 44 37h54q42 0 42 -37v-32q0 -20 -11.5 -28.5t-30.5 -8.5h-54zM366 694l-358 -694h194l85 167h421l84 -167h195l-358 694
+h-263zM504 564l132 -258h-277l137 258h8z" />
+ <glyph glyph-name="AE" unicode="&#xc6;" horiz-adv-x="1302"
+d="M182 0l116 167h241v-167h711v139h-544v150h525v139h-525v128h544v138h-766l-484 -694h182zM539 306h-143l143 207v-207z" />
+ <glyph glyph-name="Ccedilla" unicode="&#xc7;" horiz-adv-x="910"
+d="M368 -1h28v-27q0 -20 -4 -31.5t-14 -17t-26.5 -6.5t-41.5 -1v-102q73 0 115.5 7t64 24t27.5 44t6 66v44q110 0 177 12t103.5 40t48 74.5t11.5 115.5h-172q0 -29 -6.5 -47t-25.5 -28t-53.5 -13t-89.5 -3h-136q-54 0 -87 5t-51 21.5t-24 46.5t-6 81v76q0 55 6 87t24.5 48
+t53 20.5t90.5 4.5h128q59 0 94 -5t53 -15.5t23.5 -26t5.5 -35.5h172q0 73 -15 119t-53 72t-104 35.5t-168 9.5h-148q-97 0 -160.5 -11.5t-101 -45t-53 -95.5t-15.5 -164v-88q0 -86 15 -142.5t51.5 -89.5t99 -46t158.5 -13z" />
+ <glyph glyph-name="Egrave" unicode="&#xc8;" horiz-adv-x="834"
+d="M424 737l35 29l-135 153l-68 -66zM68 694v-694h710v139h-544v150h527v139h-527v128h544v138h-710z" />
+ <glyph glyph-name="Eacute" unicode="&#xc9;" horiz-adv-x="834"
+d="M569 853l-69 66l-134 -153l34 -29zM68 694v-694h710v139h-544v150h527v139h-527v128h544v138h-710z" />
+ <glyph glyph-name="Ecircumflex" unicode="&#xca;" horiz-adv-x="834"
+d="M410 893l-132 -130h36l120 63l117 -63h40l-132 130h-49zM68 694v-694h710v139h-544v150h527v139h-527v128h544v138h-710z" />
+ <glyph glyph-name="Edieresis" unicode="&#xcb;" horiz-adv-x="834"
+d="M391 844h-134v-106h134v106zM618 844h-135v-106h135v106zM68 694v-694h710v139h-544v150h527v139h-527v128h544v138h-710z" />
+ <glyph glyph-name="Igrave" unicode="&#xcc;" horiz-adv-x="328"
+d="M156 737l34 29l-134 153l-69 -66zM88 0h166v694h-166v-694z" />
+ <glyph glyph-name="Iacute" unicode="&#xcd;" horiz-adv-x="328"
+d="M347 853l-69 66l-135 -153l35 -29zM88 0h166v694h-166v-694z" />
+ <glyph glyph-name="Icircumflex" unicode="&#xce;" horiz-adv-x="328"
+d="M148 893l-132 -130h36l120 63l117 -63h40l-132 130h-49zM88 0h166v694h-166v-694z" />
+ <glyph glyph-name="Idieresis" unicode="&#xcf;" horiz-adv-x="328"
+d="M122 844h-134v-106h134v106zM349 844h-135v-106h135v106zM88 0h166v694h-166v-694z" />
+ <glyph glyph-name="Eth" unicode="&#xd0;" horiz-adv-x="897"
+d="M228 394v162h298q45 0 74 -8t46.5 -25.5t24 -46t6.5 -68.5v-116q0 -45 -6 -74.5t-23 -47t-46.5 -25t-75.5 -7.5h-298v118h123v138h-123zM61 256v-257h505q79 0 132.5 13.5t85.5 46t45.5 87.5t13.5 138v134q0 77 -15 130t-49.5 85.5t-90 46.5t-136.5 14h-491v-300h-63
+v-138h63z" />
+ <glyph glyph-name="Ntilde" unicode="&#xd1;" horiz-adv-x="957"
+d="M285 751h84q4 17 16 31t43 14q22 0 36 -7t28 -16t33.5 -16t51.5 -7q33 0 57 9t39.5 25t24 37t10.5 45h-81q-1 -14 -13 -29t-41 -15q-20 0 -34.5 7t-29.5 17q-15 8 -34.5 14.5t-48.5 6.5q-36 0 -62 -10.5t-43 -27t-25.5 -37t-10.5 -41.5zM66 694v-694h166v519l457 -519
+h199v694h-167v-475l-407 475h-248z" />
+ <glyph glyph-name="Ograve" unicode="&#xd2;" horiz-adv-x="916"
+d="M449 737l34 29l-134 153l-69 -66zM513 540q63 0 100.5 -5.5t57.5 -23t26.5 -49.5t6.5 -84v-72q0 -50 -6.5 -80t-26.5 -46.5t-57 -21.5t-98 -5h-132q-57 0 -91 6t-52 22.5t-24 45.5t-6 76v72q0 52 6 84t24.5 50t54 24.5t94.5 6.5h123zM519 0q108 0 176.5 10.5t107.5 42
+t53.5 90t14.5 154.5v84q0 94 -14.5 155.5t-53 97t-106.5 49.5t-175 14h-147q-102 0 -167 -13.5t-101.5 -49t-50 -97.5t-13.5 -159v-84q0 -90 14 -147t50.5 -90t100.5 -45t164 -12h147z" />
+ <glyph glyph-name="Oacute" unicode="&#xd3;" horiz-adv-x="916"
+d="M613 853l-69 66l-134 -153l34 -29zM513 540q63 0 100.5 -5.5t57.5 -23t26.5 -49.5t6.5 -84v-72q0 -50 -6.5 -80t-26.5 -46.5t-57 -21.5t-98 -5h-132q-57 0 -91 6t-52 22.5t-24 45.5t-6 76v72q0 52 6 84t24.5 50t54 24.5t94.5 6.5h123zM519 0q108 0 176.5 10.5t107.5 42
+t53.5 90t14.5 154.5v84q0 94 -14.5 155.5t-53 97t-106.5 49.5t-175 14h-147q-102 0 -167 -13.5t-101.5 -49t-50 -97.5t-13.5 -159v-84q0 -90 14 -147t50.5 -90t100.5 -45t164 -12h147z" />
+ <glyph glyph-name="Ocircumflex" unicode="&#xd4;" horiz-adv-x="916"
+d="M434 893l-132 -130h37l120 63l117 -63h40l-133 130h-49zM513 540q63 0 100.5 -5.5t57.5 -23t26.5 -49.5t6.5 -84v-72q0 -50 -6.5 -80t-26.5 -46.5t-57 -21.5t-98 -5h-132q-57 0 -91 6t-52 22.5t-24 45.5t-6 76v72q0 52 6 84t24.5 50t54 24.5t94.5 6.5h123zM519 0
+q108 0 176.5 10.5t107.5 42t53.5 90t14.5 154.5v84q0 94 -14.5 155.5t-53 97t-106.5 49.5t-175 14h-147q-102 0 -167 -13.5t-101.5 -49t-50 -97.5t-13.5 -159v-84q0 -90 14 -147t50.5 -90t100.5 -45t164 -12h147z" />
+ <glyph glyph-name="Otilde" unicode="&#xd5;" horiz-adv-x="916"
+d="M249 751h84q4 17 16 31t43 14q22 0 36 -7t28 -16t33.5 -16t51.5 -7q33 0 57 9t39.5 25t24 37t10.5 45h-81q-1 -14 -13 -29t-41 -15q-20 0 -34.5 7t-29.5 17q-15 8 -34.5 14.5t-48.5 6.5q-36 0 -62 -10.5t-43 -27t-25.5 -37t-10.5 -41.5zM513 540q63 0 100.5 -5.5
+t57.5 -23t26.5 -49.5t6.5 -84v-72q0 -50 -6.5 -80t-26.5 -46.5t-57 -21.5t-98 -5h-132q-57 0 -91 6t-52 22.5t-24 45.5t-6 76v72q0 52 6 84t24.5 50t54 24.5t94.5 6.5h123zM519 0q108 0 176.5 10.5t107.5 42t53.5 90t14.5 154.5v84q0 94 -14.5 155.5t-53 97t-106.5 49.5
+t-175 14h-147q-102 0 -167 -13.5t-101.5 -49t-50 -97.5t-13.5 -159v-84q0 -90 14 -147t50.5 -90t100.5 -45t164 -12h147z" />
+ <glyph glyph-name="Odieresis" unicode="&#xd6;" horiz-adv-x="916"
+d="M409 844h-135v-106h135v106zM636 844h-135v-106h135v106zM513 540q63 0 100.5 -5.5t57.5 -23t26.5 -49.5t6.5 -84v-72q0 -50 -6.5 -80t-26.5 -46.5t-57 -21.5t-98 -5h-132q-57 0 -91 6t-52 22.5t-24 45.5t-6 76v72q0 52 6 84t24.5 50t54 24.5t94.5 6.5h123zM519 0
+q108 0 176.5 10.5t107.5 42t53.5 90t14.5 154.5v84q0 94 -14.5 155.5t-53 97t-106.5 49.5t-175 14h-147q-102 0 -167 -13.5t-101.5 -49t-50 -97.5t-13.5 -159v-84q0 -90 14 -147t50.5 -90t100.5 -45t164 -12h147z" />
+ <glyph glyph-name="multiply" unicode="&#xd7;" horiz-adv-x="516"
+d="M128 494l-56 -43l140 -185l-168 -224l59 -42l158 209l159 -209l59 42l-169 225l140 184l-57 43l-132 -177z" />
+ <glyph glyph-name="Oslash" unicode="&#xd8;" horiz-adv-x="916"
+d="M43 294q0 -71 8.5 -121.5t29.5 -84t57 -52.5t92 -28l-42 -88h105l38 80h41h147q108 0 176.5 10.5t107.5 42t53.5 90t14.5 154.5v84q0 77 -9 132t-33 91.5t-64.5 56.5t-103.5 29l39 82h-106l-36 -75h-36h-147q-102 0 -167 -13.5t-101.5 -49t-50 -97.5t-13.5 -159v-84z
+M516 153h-112l184 385q37 -3 60 -12.5t35.5 -28t16.5 -47.5t4 -72v-72q0 -50 -6.5 -80t-26.5 -46.5t-57 -21.5t-98 -5zM483 540l-181 -382q-29 4 -47 13.5t-28 27t-13 43t-3 61.5v72q0 52 6 84t24.5 50t54 24.5t94.5 6.5h93z" />
+ <glyph glyph-name="Ugrave" unicode="&#xd9;" horiz-adv-x="896"
+d="M440 737l34 29l-134 153l-69 -66zM213 694h-166v-447q0 -66 15 -113t49 -77t87 -43.5t130 -13.5h246q80 0 134.5 13t87.5 42t47 76t14 116v447h-167v-430q0 -36 -8 -60t-25 -38.5t-45 -20.5t-68 -6h-180q-42 0 -71 6t-46.5 20t-25.5 38t-8 60v431z" />
+ <glyph glyph-name="Uacute" unicode="&#xda;" horiz-adv-x="896"
+d="M620 853l-69 66l-134 -153l34 -29zM213 694h-166v-447q0 -66 15 -113t49 -77t87 -43.5t130 -13.5h246q80 0 134.5 13t87.5 42t47 76t14 116v447h-167v-430q0 -36 -8 -60t-25 -38.5t-45 -20.5t-68 -6h-180q-42 0 -71 6t-46.5 20t-25.5 38t-8 60v431z" />
+ <glyph glyph-name="Ucircumflex" unicode="&#xdb;" horiz-adv-x="896"
+d="M432 893l-132 -130h37l120 63l116 -63h40l-132 130h-49zM213 694h-166v-447q0 -66 15 -113t49 -77t87 -43.5t130 -13.5h246q80 0 134.5 13t87.5 42t47 76t14 116v447h-167v-430q0 -36 -8 -60t-25 -38.5t-45 -20.5t-68 -6h-180q-42 0 -71 6t-46.5 20t-25.5 38t-8 60v431z
+" />
+ <glyph glyph-name="Udieresis" unicode="&#xdc;" horiz-adv-x="896"
+d="M404 844h-134v-106h134v106zM631 844h-134v-106h134v106zM213 694h-166v-447q0 -66 15 -113t49 -77t87 -43.5t130 -13.5h246q80 0 134.5 13t87.5 42t47 76t14 116v447h-167v-430q0 -36 -8 -60t-25 -38.5t-45 -20.5t-68 -6h-180q-42 0 -71 6t-46.5 20t-25.5 38t-8 60v431z
+" />
+ <glyph glyph-name="Yacute" unicode="&#xdd;" horiz-adv-x="882"
+d="M220 694h-199l341 -460v-234h167v234l333 460h-190l-226 -313zM609 853l-69 66l-134 -153l34 -29z" />
+ <glyph glyph-name="Thorn" unicode="&#xde;" horiz-adv-x="800"
+d="M520 608h-297v86h-166v-694h166v120h308q67 0 113.5 11.5t75 37.5t41 67.5t12.5 101.5v48q0 60 -14 102.5t-45 69t-79 38.5t-115 12zM607 356q0 -39 -17.5 -54.5t-61.5 -15.5h-305v156h301q47 0 65 -15.5t18 -56.5v-14z" />
+ <glyph glyph-name="germandbls" unicode="&#xdf;" horiz-adv-x="884"
+d="M354 778q-83 0 -139 -15.5t-90.5 -47t-49.5 -78.5t-15 -109v-32h-61v-137h61v-359h166v537q0 51 24.5 76.5t78.5 25.5h155q59 0 82 -13.5t23 -48.5q0 -21 -5.5 -34t-20.5 -20.5t-41.5 -10t-68.5 -2.5v-131q76 0 122.5 -4.5t71 -16.5t32.5 -34t8 -57v-28
+q0 -56 -29.5 -77.5t-101.5 -21.5h-200v-140h236q73 0 123 14t80.5 43t44 73.5t13.5 106.5v30q0 43 -14 76.5t-38.5 56t-58.5 34.5t-74 12q18 7 34 16t28 24t19 37t7 57q0 51 -14.5 88.5t-50.5 61.5t-98 36t-157 12h-82z" />
+ <glyph glyph-name="agrave" unicode="&#xe0;" horiz-adv-x="749"
+d="M364 554l38 33l-150 171l-76 -74zM265 317q-62 0 -102 -9t-64 -27.5t-33.5 -46t-9.5 -64.5v-28q0 -77 50 -109.5t158 -32.5h111q53 0 84.5 4.5t49 12t25.5 17.5t15 22v-56h139v307q0 41 -11.5 75.5t-38.5 59t-72 38.5t-112 14h-182q-114 0 -163 -35.5t-49 -107.5h158
+q0 9 4.5 17t16.5 13t32.5 8t52.5 3h105q34 0 57 -4t36.5 -14t19.5 -27t6 -42v-38q-6 11 -14.5 20.5t-27.5 16t-51.5 10t-86.5 3.5h-103zM218 158q0 32 21.5 40t56.5 8h160q39 0 60.5 -9t21.5 -39q0 -31 -22 -39t-60 -8h-160q-37 0 -57.5 8.5t-20.5 38.5z" />
+ <glyph glyph-name="aacute" unicode="&#xe1;" horiz-adv-x="749"
+d="M540 683l-77 74l-150 -171l38 -33zM265 317q-62 0 -102 -9t-64 -27.5t-33.5 -46t-9.5 -64.5v-28q0 -77 50 -109.5t158 -32.5h111q53 0 84.5 4.5t49 12t25.5 17.5t15 22v-56h139v307q0 41 -11.5 75.5t-38.5 59t-72 38.5t-112 14h-182q-114 0 -163 -35.5t-49 -107.5h158
+q0 9 4.5 17t16.5 13t32.5 8t52.5 3h105q34 0 57 -4t36.5 -14t19.5 -27t6 -42v-38q-6 11 -14.5 20.5t-27.5 16t-51.5 10t-86.5 3.5h-103zM218 158q0 32 21.5 40t56.5 8h160q39 0 60.5 -9t21.5 -39q0 -31 -22 -39t-60 -8h-160q-37 0 -57.5 8.5t-20.5 38.5z" />
+ <glyph glyph-name="acircumflex" unicode="&#xe2;" horiz-adv-x="749"
+d="M341 723l-147 -144h42l133 69l129 -69h44l-146 144h-55zM265 317q-62 0 -102 -9t-64 -27.5t-33.5 -46t-9.5 -64.5v-28q0 -77 50 -109.5t158 -32.5h111q53 0 84.5 4.5t49 12t25.5 17.5t15 22v-56h139v307q0 41 -11.5 75.5t-38.5 59t-72 38.5t-112 14h-182
+q-114 0 -163 -35.5t-49 -107.5h158q0 9 4.5 17t16.5 13t32.5 8t52.5 3h105q34 0 57 -4t36.5 -14t19.5 -27t6 -42v-38q-6 11 -14.5 20.5t-27.5 16t-51.5 10t-86.5 3.5h-103zM218 158q0 32 21.5 40t56.5 8h160q39 0 60.5 -9t21.5 -39q0 -31 -22 -39t-60 -8h-160
+q-37 0 -57.5 8.5t-20.5 38.5z" />
+ <glyph glyph-name="atilde" unicode="&#xe3;" horiz-adv-x="749"
+d="M123 581h93q4 18 17.5 34t48.5 16q24 0 39 -8t32 -18q16 -10 37.5 -18t56.5 -8q37 0 63.5 10t44 27.5t26.5 41t11 50.5h-89q-1 -16 -14.5 -32.5t-45.5 -16.5q-23 0 -39 8t-33 19q-17 9 -38 16.5t-54 7.5q-41 0 -69.5 -11.5t-47 -30t-28 -41.5t-11.5 -46zM265 317
+q-62 0 -102 -9t-64 -27.5t-33.5 -46t-9.5 -64.5v-28q0 -77 50 -109.5t158 -32.5h111q53 0 84.5 4.5t49 12t25.5 17.5t15 22v-56h139v307q0 41 -11.5 75.5t-38.5 59t-72 38.5t-112 14h-182q-114 0 -163 -35.5t-49 -107.5h158q0 9 4.5 17t16.5 13t32.5 8t52.5 3h105
+q34 0 57 -4t36.5 -14t19.5 -27t6 -42v-38q-6 11 -14.5 20.5t-27.5 16t-51.5 10t-86.5 3.5h-103zM218 158q0 32 21.5 40t56.5 8h160q39 0 60.5 -9t21.5 -39q0 -31 -22 -39t-60 -8h-160q-37 0 -57.5 8.5t-20.5 38.5z" />
+ <glyph glyph-name="adieresis" unicode="&#xe4;" horiz-adv-x="749"
+d="M338 680h-135v-107h135v107zM564 680h-134v-107h134v107zM265 317q-62 0 -102 -9t-64 -27.5t-33.5 -46t-9.5 -64.5v-28q0 -77 50 -109.5t158 -32.5h111q53 0 84.5 4.5t49 12t25.5 17.5t15 22v-56h139v307q0 41 -11.5 75.5t-38.5 59t-72 38.5t-112 14h-182
+q-114 0 -163 -35.5t-49 -107.5h158q0 9 4.5 17t16.5 13t32.5 8t52.5 3h105q34 0 57 -4t36.5 -14t19.5 -27t6 -42v-38q-6 11 -14.5 20.5t-27.5 16t-51.5 10t-86.5 3.5h-103zM218 158q0 32 21.5 40t56.5 8h160q39 0 60.5 -9t21.5 -39q0 -31 -22 -39t-60 -8h-160
+q-37 0 -57.5 8.5t-20.5 38.5z" />
+ <glyph glyph-name="aring" unicode="&#xe5;" horiz-adv-x="749"
+d="M331 733q-38 0 -55 -18t-17 -47v-35q0 -29 17 -46.5t55 -17.5h60q36 0 53 18t17 46v35q0 29 -17 47t-53 18h-60zM334 598q-43 0 -43 36v33q0 36 43 36h55q42 0 42 -36v-33q0 -19 -12 -27.5t-30 -8.5h-55zM265 317q-62 0 -102 -9t-64 -27.5t-33.5 -46t-9.5 -64.5v-28
+q0 -77 50 -109.5t158 -32.5h111q53 0 84.5 4.5t49 12t25.5 17.5t15 22v-56h139v307q0 41 -11.5 75.5t-38.5 59t-72 38.5t-112 14h-182q-114 0 -163 -35.5t-49 -107.5h158q0 9 4.5 17t16.5 13t32.5 8t52.5 3h105q34 0 57 -4t36.5 -14t19.5 -27t6 -42v-38q-6 11 -14.5 20.5
+t-27.5 16t-51.5 10t-86.5 3.5h-103zM218 158q0 32 21.5 40t56.5 8h160q39 0 60.5 -9t21.5 -39q0 -31 -22 -39t-60 -8h-160q-37 0 -57.5 8.5t-20.5 38.5z" />
+ <glyph glyph-name="ae" unicode="&#xe6;" horiz-adv-x="1248"
+d="M688 0v33q11 -12 28 -19t37.5 -10.5t44 -4t47.5 -0.5h73q87 0 140 13t82 34t38.5 48.5t9.5 56.5v10h-155q0 -15 -5 -24.5t-17 -15t-32.5 -7t-51.5 -1.5h-104q-63 0 -87.5 21t-24.5 57v19h477v72q0 61 -12 102t-43.5 66t-85.5 35.5t-138 10.5h-79q-143 0 -205 -44
+q-28 20 -69.5 31t-101.5 11h-182q-114 0 -163 -35.5t-49 -107.5h158q0 9 4.5 17t16.5 13t32.5 8t52.5 3h105q34 0 57 -4t36.5 -14t19.5 -27t6 -42v-38q-6 11 -14.5 20.5t-27.5 16t-51.5 10t-86.5 3.5h-103q-62 0 -102 -9t-64 -27.5t-33.5 -46t-9.5 -64.5v-28
+q0 -77 50 -109.5t158 -32.5h111q53 0 84.5 4.5t49 12t25.5 17.5t15 22v-56h139zM218 158q0 32 21.5 40t56.5 8h160q39 0 60.5 -9t21.5 -39q0 -31 -22 -39t-60 -8h-160q-37 0 -57.5 8.5t-20.5 38.5zM921 380q38 0 60.5 -7.5t34 -19t14.5 -25t3 -26.5h-320q0 11 2.5 24.5
+t13 25.5t31.5 20t57 8h104z" />
+ <glyph glyph-name="ccedilla" unicode="&#xe7;" horiz-adv-x="703"
+d="M37 213q0 -56 11.5 -95.5t41 -65t80.5 -38.5t130 -14v-28q0 -20 -4 -31.5t-14 -17t-26.5 -6.5t-41.5 -1v-94q64 0 102.5 4t59 18t27 40t6.5 71v45q82 1 132.5 12t78 32t37 51t9.5 69v15h-158q0 -15 -4.5 -27t-19.5 -19.5t-42.5 -11.5t-73.5 -4h-40q-82 0 -115 26t-33 86
+v32q0 32 7 54t24 36t45.5 20.5t70.5 6.5h38q46 0 74 -3.5t43.5 -11t20.5 -18t5 -24.5h158v10q0 43 -12 74.5t-43 51.5t-85.5 29.5t-138.5 9.5h-75q-80 0 -133 -12.5t-84.5 -38.5t-44.5 -68t-13 -100v-64z" />
+ <glyph glyph-name="egrave" unicode="&#xe8;" horiz-adv-x="698"
+d="M358 554l38 33l-150 171l-77 -74zM399 380q38 0 60.5 -7.5t34 -19t14.5 -25t3 -26.5h-320q0 11 2.5 24.5t13 25.5t31.5 20t57 8h104zM323 -1h73q87 0 140 13t82 34t38.5 48.5t9.5 56.5v10h-155q0 -15 -5 -24.5t-17 -15t-32.5 -7t-51.5 -1.5h-104q-63 0 -87.5 21t-24.5 57
+v19h477v72q0 61 -12 102t-43.5 66t-85.5 35.5t-138 10.5h-79q-78 0 -130 -12.5t-83.5 -38.5t-44.5 -67t-13 -98v-67q0 -58 13.5 -98.5t46.5 -66t88 -37.5t138 -12z" />
+ <glyph glyph-name="eacute" unicode="&#xe9;" horiz-adv-x="698"
+d="M533 683l-76 74l-150 -171l37 -33zM399 380q38 0 60.5 -7.5t34 -19t14.5 -25t3 -26.5h-320q0 11 2.5 24.5t13 25.5t31.5 20t57 8h104zM323 -1h73q87 0 140 13t82 34t38.5 48.5t9.5 56.5v10h-155q0 -15 -5 -24.5t-17 -15t-32.5 -7t-51.5 -1.5h-104q-63 0 -87.5 21
+t-24.5 57v19h477v72q0 61 -12 102t-43.5 66t-85.5 35.5t-138 10.5h-79q-78 0 -130 -12.5t-83.5 -38.5t-44.5 -67t-13 -98v-67q0 -58 13.5 -98.5t46.5 -66t88 -37.5t138 -12z" />
+ <glyph glyph-name="ecircumflex" unicode="&#xea;" horiz-adv-x="698"
+d="M317 723l-147 -144h41l133 69l129 -69h45l-147 144h-54zM399 380q38 0 60.5 -7.5t34 -19t14.5 -25t3 -26.5h-320q0 11 2.5 24.5t13 25.5t31.5 20t57 8h104zM323 -1h73q87 0 140 13t82 34t38.5 48.5t9.5 56.5v10h-155q0 -15 -5 -24.5t-17 -15t-32.5 -7t-51.5 -1.5h-104
+q-63 0 -87.5 21t-24.5 57v19h477v72q0 61 -12 102t-43.5 66t-85.5 35.5t-138 10.5h-79q-78 0 -130 -12.5t-83.5 -38.5t-44.5 -67t-13 -98v-67q0 -58 13.5 -98.5t46.5 -66t88 -37.5t138 -12z" />
+ <glyph glyph-name="edieresis" unicode="&#xeb;" horiz-adv-x="698"
+d="M311 680h-134v-107h134v107zM538 680h-135v-107h135v107zM399 380q38 0 60.5 -7.5t34 -19t14.5 -25t3 -26.5h-320q0 11 2.5 24.5t13 25.5t31.5 20t57 8h104zM323 -1h73q87 0 140 13t82 34t38.5 48.5t9.5 56.5v10h-155q0 -15 -5 -24.5t-17 -15t-32.5 -7t-51.5 -1.5h-104
+q-63 0 -87.5 21t-24.5 57v19h477v72q0 61 -12 102t-43.5 66t-85.5 35.5t-138 10.5h-79q-78 0 -130 -12.5t-83.5 -38.5t-44.5 -67t-13 -98v-67q0 -58 13.5 -98.5t46.5 -66t88 -37.5t138 -12z" />
+ <glyph glyph-name="igrave" unicode="&#xec;" horiz-adv-x="298"
+d="M144 554l38 33l-150 171l-76 -74zM237 494h-167v-494h167v494z" />
+ <glyph glyph-name="iacute" unicode="&#xed;" horiz-adv-x="298"
+d="M347 683l-77 74l-150 -171l38 -33zM237 494h-167v-494h167v494z" />
+ <glyph glyph-name="icircumflex" unicode="&#xee;" horiz-adv-x="298"
+d="M123 723l-146 -144h41l133 69l129 -69h44l-146 144h-55zM237 494h-167v-494h167v494z" />
+ <glyph glyph-name="idieresis" unicode="&#xef;" horiz-adv-x="298"
+d="M109 680h-135v-107h135v107zM336 680h-135v-107h135v107zM237 494h-167v-494h167v494z" />
+ <glyph glyph-name="eth" unicode="&#xf0;" horiz-adv-x="704"
+d="M525 240q0 -31 -7 -52.5t-23 -35t-42.5 -20t-64.5 -6.5h-62q-38 0 -64.5 6.5t-42.5 20t-23 35t-7 52.5v20q0 28 6.5 49t22.5 34.5t44 20t70 6.5h50q42 0 70 -6.5t44 -20t22.5 -34.5t6.5 -49v-20zM269 614l-27 -54l98 -40l34 67q76 -31 112 -96q-20 2 -43 3.5t-49 1.5h-85
+q-77 0 -128.5 -13t-82.5 -41t-43.5 -72t-12.5 -106v-41q0 -62 14 -105t41.5 -69.5t68 -38t92.5 -11.5h199q57 0 97.5 12t66.5 38.5t38.5 69t12.5 104.5v41q0 98 -15.5 171.5t-45.5 127t-74.5 89t-101.5 56.5l25 50l-98 40l-32 -63q-33 5 -69.5 7.5t-75.5 2.5v-126
+q23 0 43.5 -1.5t40.5 -3.5z" />
+ <glyph glyph-name="ntilde" unicode="&#xf1;" horiz-adv-x="738"
+d="M121 581h93q4 18 17.5 34t48.5 16q24 0 39 -8t32 -18q16 -10 37.5 -18t56.5 -8q37 0 63.5 10t44 27.5t26.5 41t11 50.5h-89q-1 -16 -14.5 -32.5t-45.5 -16.5q-23 0 -39 8t-33 19q-17 9 -38 16.5t-54 7.5q-41 0 -69.5 -11.5t-47 -30t-28 -41.5t-11.5 -46zM436 494h-52
+q-45 0 -74.5 -6.5t-48.5 -17t-29.5 -23.5t-17.5 -25v72h-165v-494h168v242q0 64 36 100t107 36h24q78 0 111 -35t33 -101v-242h166v269q0 112 -60 168.5t-198 56.5z" />
+ <glyph glyph-name="ograve" unicode="&#xf2;" horiz-adv-x="704"
+d="M342 554l38 33l-150 171l-77 -74zM309 496q-77 0 -128.5 -13t-82.5 -41t-43.5 -72t-12.5 -106v-41q0 -62 14 -105t41.5 -69.5t68 -38t92.5 -11.5h199q57 0 97.5 12t66.5 38.5t38.5 69t12.5 104.5v41q0 64 -14 108.5t-47 72t-86 39.5t-131 12h-85zM525 240q0 -31 -7 -52.5
+t-23 -35t-42.5 -20t-64.5 -6.5h-62q-38 0 -64.5 6.5t-42.5 20t-23 35t-7 52.5v20q0 28 6.5 49t22.5 34.5t44 20t70 6.5h50q42 0 70 -6.5t44 -20t22.5 -34.5t6.5 -49v-20z" />
+ <glyph glyph-name="oacute" unicode="&#xf3;" horiz-adv-x="704"
+d="M544 683l-76 74l-150 -171l38 -33zM309 496q-77 0 -128.5 -13t-82.5 -41t-43.5 -72t-12.5 -106v-41q0 -62 14 -105t41.5 -69.5t68 -38t92.5 -11.5h199q57 0 97.5 12t66.5 38.5t38.5 69t12.5 104.5v41q0 64 -14 108.5t-47 72t-86 39.5t-131 12h-85zM525 240
+q0 -31 -7 -52.5t-23 -35t-42.5 -20t-64.5 -6.5h-62q-38 0 -64.5 6.5t-42.5 20t-23 35t-7 52.5v20q0 28 6.5 49t22.5 34.5t44 20t70 6.5h50q42 0 70 -6.5t44 -20t22.5 -34.5t6.5 -49v-20z" />
+ <glyph glyph-name="ocircumflex" unicode="&#xf4;" horiz-adv-x="704"
+d="M328 723l-147 -144h41l134 69l128 -69h45l-147 144h-54zM309 496q-77 0 -128.5 -13t-82.5 -41t-43.5 -72t-12.5 -106v-41q0 -62 14 -105t41.5 -69.5t68 -38t92.5 -11.5h199q57 0 97.5 12t66.5 38.5t38.5 69t12.5 104.5v41q0 64 -14 108.5t-47 72t-86 39.5t-131 12h-85z
+M525 240q0 -31 -7 -52.5t-23 -35t-42.5 -20t-64.5 -6.5h-62q-38 0 -64.5 6.5t-42.5 20t-23 35t-7 52.5v20q0 28 6.5 49t22.5 34.5t44 20t70 6.5h50q42 0 70 -6.5t44 -20t22.5 -34.5t6.5 -49v-20z" />
+ <glyph glyph-name="otilde" unicode="&#xf5;" horiz-adv-x="704"
+d="M119 581h93q4 18 17.5 34t48.5 16q24 0 39 -8t32 -18q16 -10 37.5 -18t56.5 -8q37 0 63.5 10t44 27.5t26.5 41t11 50.5h-89q-1 -16 -14.5 -32.5t-45.5 -16.5q-23 0 -39 8t-33 19q-17 9 -38 16.5t-54 7.5q-41 0 -69.5 -11.5t-47 -30t-28 -41.5t-11.5 -46zM309 496
+q-77 0 -128.5 -13t-82.5 -41t-43.5 -72t-12.5 -106v-41q0 -62 14 -105t41.5 -69.5t68 -38t92.5 -11.5h199q57 0 97.5 12t66.5 38.5t38.5 69t12.5 104.5v41q0 64 -14 108.5t-47 72t-86 39.5t-131 12h-85zM525 240q0 -31 -7 -52.5t-23 -35t-42.5 -20t-64.5 -6.5h-62
+q-38 0 -64.5 6.5t-42.5 20t-23 35t-7 52.5v20q0 28 6.5 49t22.5 34.5t44 20t70 6.5h50q42 0 70 -6.5t44 -20t22.5 -34.5t6.5 -49v-20z" />
+ <glyph glyph-name="odieresis" unicode="&#xf6;" horiz-adv-x="704"
+d="M309 680h-135v-107h135v107zM536 680h-135v-107h135v107zM309 496q-77 0 -128.5 -13t-82.5 -41t-43.5 -72t-12.5 -106v-41q0 -62 14 -105t41.5 -69.5t68 -38t92.5 -11.5h199q57 0 97.5 12t66.5 38.5t38.5 69t12.5 104.5v41q0 64 -14 108.5t-47 72t-86 39.5t-131 12h-85z
+M525 240q0 -31 -7 -52.5t-23 -35t-42.5 -20t-64.5 -6.5h-62q-38 0 -64.5 6.5t-42.5 20t-23 35t-7 52.5v20q0 28 6.5 49t22.5 34.5t44 20t70 6.5h50q42 0 70 -6.5t44 -20t22.5 -34.5t6.5 -49v-20z" />
+ <glyph glyph-name="divide" unicode="&#xf7;" horiz-adv-x="533"
+d="M476 394h-408v-138h408v138zM168 627v-167h195v167h-195zM168 197v-167h195v167h-195z" />
+ <glyph glyph-name="oslash" unicode="&#xf8;" horiz-adv-x="704"
+d="M458 549l-26 -54q-10 1 -20 1h-18h-85q-77 0 -128.5 -13t-82.5 -41t-43.5 -72t-12.5 -106v-41q0 -106 40.5 -157t116.5 -63l-29 -61h91l27 57h169q57 0 97.5 12t66.5 38.5t38.5 69t12.5 104.5v41q0 98 -34.5 150.5t-117.5 70.5l30 64h-92zM332 370h41l-113 -237
+q-39 10 -55 35.5t-16 71.5v20q0 28 6.5 49t22.5 34.5t44 20t70 6.5zM349 126l111 235q38 -11 51.5 -36t13.5 -65v-20q0 -31 -7 -52.5t-23 -35t-42.5 -20t-64.5 -6.5h-39z" />
+ <glyph glyph-name="ugrave" unicode="&#xf9;" horiz-adv-x="796"
+d="M376 554l37 33l-150 171l-76 -74zM298 -1h129q33 0 57 6t41 15t28 20t19 22v-62h166v494h-168v-243q0 -66 -36.5 -100.5t-106.5 -34.5h-65q-39 0 -66 7t-44 22.5t-25 41.5t-8 64v243h-167v-272q0 -60 16.5 -102.5t48 -69.5t77 -39t104.5 -12z" />
+ <glyph glyph-name="uacute" unicode="&#xfa;" horiz-adv-x="796"
+d="M573 683l-76 74l-150 -171l37 -33zM298 -1h129q33 0 57 6t41 15t28 20t19 22v-62h166v494h-168v-243q0 -66 -36.5 -100.5t-106.5 -34.5h-65q-39 0 -66 7t-44 22.5t-25 41.5t-8 64v243h-167v-272q0 -60 16.5 -102.5t48 -69.5t77 -39t104.5 -12z" />
+ <glyph glyph-name="ucircumflex" unicode="&#xfb;" horiz-adv-x="796"
+d="M368 723l-147 -144h41l134 69l128 -69h45l-147 144h-54zM298 -1h129q33 0 57 6t41 15t28 20t19 22v-62h166v494h-168v-243q0 -66 -36.5 -100.5t-106.5 -34.5h-65q-39 0 -66 7t-44 22.5t-25 41.5t-8 64v243h-167v-272q0 -60 16.5 -102.5t48 -69.5t77 -39t104.5 -12z" />
+ <glyph glyph-name="udieresis" unicode="&#xfc;" horiz-adv-x="796"
+d="M347 680h-135v-107h135v107zM573 680h-134v-107h134v107zM298 -1h129q33 0 57 6t41 15t28 20t19 22v-62h166v494h-168v-243q0 -66 -36.5 -100.5t-106.5 -34.5h-65q-39 0 -66 7t-44 22.5t-25 41.5t-8 64v243h-167v-272q0 -60 16.5 -102.5t48 -69.5t77 -39t104.5 -12z" />
+ <glyph glyph-name="yacute" unicode="&#xfd;" horiz-adv-x="684"
+d="M176 494h-160l231 -494q-9 -20 -21.5 -32t-30 -18.5t-41 -9t-54.5 -2.5v-149q77 0 130 13t90.5 39t64.5 65.5t52 93.5l233 494h-160l-167 -345zM526 683l-77 74l-150 -171l38 -33z" />
+ <glyph glyph-name="thorn" unicode="&#xfe;" horiz-adv-x="764"
+d="M473 496h-70q-50 0 -82.5 -5t-53 -14t-32.5 -20.5t-19 -23.5v261h-166v-894h166v275q5 -14 16 -27t31 -24t52 -17.5t80 -6.5h70q134 0 196.5 55.5t62.5 165.5v49q0 55 -13.5 97.5t-43.5 71t-77.5 43t-116.5 14.5zM225 240v20q0 26 7 46.5t23.5 34.5t44.5 21.5t70 7.5h56
+q71 0 103 -24.5t32 -89.5v-20q0 -60 -31.5 -85t-103.5 -25h-64q-38 0 -64.5 7.5t-42.5 22t-23 36t-7 48.5z" />
+ <glyph glyph-name="ydieresis" unicode="&#xff;" horiz-adv-x="684"
+d="M296 680h-135v-107h135v107zM522 680h-134v-107h134v107zM176 494h-160l231 -494q-9 -20 -21.5 -32t-30 -18.5t-41 -9t-54.5 -2.5v-149q77 0 130 13t90.5 39t64.5 65.5t52 93.5l233 494h-160l-167 -345z" />
+ <glyph glyph-name="NUL" unicode="&#xe000;" horiz-adv-x="0"
+ />
+ <glyph glyph-name="HT" unicode="&#xe001;" horiz-adv-x="0"
+ />
+ <glyph glyph-name="nonmarkingreturn" unicode="&#xe002;" horiz-adv-x="0"
+ />
+ <glyph glyph-name="minus" unicode="&#xe003;" horiz-adv-x="488"
+d="M443 327h-390v-73h390v73z" />
+ <glyph glyph-name="notequal" unicode="&#xe004;" horiz-adv-x="547"
+d="M477 279h-186l43 89h143v112h-89l33 69h-97l-33 -69h-224v-112h169l-43 -89h-126v-110h71l-31 -69h97l32 69h241v110z" />
+ <glyph glyph-name="lessequal" unicode="&#xe005;" horiz-adv-x="516"
+d="M440 248h-372v-139h372v139zM98 553v-99l285 -190v134l-169 108l169 107v134z" />
+ <glyph glyph-name="greaterequal" unicode="&#xe006;" horiz-adv-x="489"
+d="M431 248h-364v-139h364v139zM101 398v-134l286 190v99l-286 194v-134l169 -107z" />
+ <glyph glyph-name="partialdiff" unicode="&#xe007;"
+d="M449 382h-388v-38h388v38zM217 191v-62h91q23 0 34.5 -6t11.5 -29q0 -22 -13.5 -27.5t-52.5 -5.5h-64q-32 0 -47.5 4t-15.5 25h-73v-6q0 -23 6 -39.5t21 -26.5t41.5 -14.5t67.5 -4.5h69q43 0 69.5 4t41 14t19.5 28t5 46q0 42 -15.5 55t-42.5 16q16 1 27 3.5t18 9.5
+t10 19.5t3 32.5q0 25 -7 41.5t-23.5 26t-43.5 13t-68 3.5h-63q-41 0 -67.5 -5t-41.5 -15.5t-20.5 -26t-5.5 -37.5v-12h71q0 20 17 27t53 7h54q42 0 56.5 -5t14.5 -23q0 -20 -10 -25t-37 -5h-90zM252 413h75v312h-108l-92 -93l37 -36l71 71h17v-254z" />
+ <glyph glyph-name="summation" unicode="&#xe008;"
+d="M449 382h-388v-38h388v38zM380 129v182h-98l-206 -148v-97h229v-67h75v67h42v63h-42zM252 413h75v312h-108l-92 -93l37 -36l71 71h17v-254zM305 244v-115h-155v12l144 103h11z" />
+ <glyph glyph-name="product" unicode="&#xe009;"
+d="M449 382h-388v-38h388v38zM311 527q33 2 54.5 8t35 17t19 28t5.5 42q0 30 -6 50t-21.5 32t-43.5 17.5t-71 5.5h-67q-44 0 -69.5 -9t-39 -25t-17.5 -37t-4 -46h75q0 16 2 26.5t9.5 16.5t21.5 8.5t38 2.5h49q42 0 55 -7t13 -29t-9.5 -29.5t-40.5 -9.5l-99 -7
+q-56 -4 -86 -26.5t-30 -70.5v-72h339v63h-264v9q0 19 16.5 26t53.5 10zM216 192v-62h91q23 0 34.5 -6t11.5 -29q0 -22 -13.5 -27.5t-52.5 -5.5h-64q-32 0 -47.5 4t-15.5 25h-73v-6q0 -23 6 -39.5t21 -26.5t41.5 -14.5t67.5 -4.5h69q43 0 69.5 4t41 14t19.5 28t5 46
+q0 42 -15.5 55t-42.5 16q16 1 27 3.5t18 9.5t10 19.5t3 32.5q0 25 -7 41.5t-23.5 26t-43.5 13t-68 3.5h-63q-41 0 -67.5 -5t-41.5 -15.5t-20.5 -26t-5.5 -37.5v-12h71q0 20 17 27t53 7h54q42 0 56.5 -5t14.5 -23q0 -20 -10 -25t-37 -5h-90z" />
+ <glyph glyph-name="pi" unicode="&#xe00a;"
+d="M449 382h-388v-38h388v38zM214 608v-62h91q23 0 34.5 -6t11.5 -29q0 -22 -13.5 -27.5t-52.5 -5.5h-64q-32 0 -47.5 4t-15.5 25h-73v-6q0 -23 6 -39.5t21 -26.5t41.5 -14.5t67.5 -4.5h69q43 0 69.5 4t41 14t19.5 28t5 46q0 42 -15.5 55t-42.5 16q16 1 27 3.5t18 9.5
+t10 19.5t3 32.5q0 25 -7 41.5t-23.5 26t-43.5 13t-68 3.5h-63q-41 0 -67.5 -5t-41.5 -15.5t-20.5 -26t-5.5 -37.5v-12h71q0 20 17 27t53 7h54q42 0 56.5 -5t14.5 -23q0 -20 -10 -25t-37 -5h-90zM390 126v182h-98l-206 -148v-97h229v-67h75v67h42v63h-42zM315 241v-115h-155
+v12l144 103h11z" />
+ <glyph glyph-name="integral" unicode="&#xe00b;" horiz-adv-x="811"
+d="M739 667h-667v-667h667v667zM686 613v-560h-560v560h560z" />
+ <glyph glyph-name="radical" unicode="&#xe00c;" horiz-adv-x="703"
+d="M64 301l-44 -103q17 -12 35.5 -31t36.5 -40t33 -42.5t25 -38.5q45 76 94.5 138.5t105 116t118 99.5t132.5 88l46 155q-54 -26 -106.5 -63t-102.5 -80.5t-94.5 -90t-81.5 -92t-65.5 -87.5t-44.5 -75q-22 48 -42.5 84t-44.5 62z" />
+ <glyph glyph-name="approxequal" unicode="&#xe00d;" horiz-adv-x="813"
+d="M326 273v126h124v-126h-124zM285 541v-101h-101q-51 0 -79 28.5t-28 73.5q0 50 29.5 77.5t76.5 27.5q51 0 76.5 -31t25.5 -75zM183 399h102v-126h-102q-30 0 -56.5 -10.5t-46.5 -30t-31.5 -46t-11.5 -57.5t11 -57t30 -45t45 -29.5t57 -10.5q36 0 63.5 11t46 30.5t27.5 46
+t9 56.5v102h124v-102q0 -30 9.5 -56.5t28 -46t45.5 -30.5t63 -11q31 0 57 11t45 30t30 45t11 56q0 31 -11.5 57.5t-31.5 46t-46.5 30t-56.5 10.5h-102v126h102q30 0 56.5 11t46.5 30.5t31.5 46t11.5 57.5t-11 57.5t-30 45.5t-45.5 29.5t-56.5 10.5q-36 0 -63 -11.5
+t-45.5 -31t-28 -46t-9.5 -56.5v-102h-124v102q0 30 -9 56.5t-27.5 46t-46 31t-63.5 11.5q-30 0 -56.5 -11.5t-45.5 -31t-30 -45.5t-11 -55q0 -32 11 -58.5t30.5 -45.5t46 -30t58.5 -11zM592 440h-101v101q0 44 25.5 75t76.5 31q46 0 76 -27.5t30 -77.5q0 -45 -28.5 -73.5
+t-78.5 -28.5zM184 233h101v-101q0 -45 -25.5 -75.5t-76.5 -30.5q-47 0 -76.5 27t-29.5 78q0 45 28 73.5t79 28.5zM491 132v101h101q50 0 78.5 -28.5t28.5 -73.5q0 -51 -30 -78t-76 -27q-51 0 -76.5 30.5t-25.5 75.5z" />
+ <glyph glyph-name="nonbreakingspace" unicode="&#xe00e;" horiz-adv-x="582"
+ />
+ <glyph glyph-name="lozenge" unicode="&#xe00f;" horiz-adv-x="556"
+d="M278 430l154 -154l-154 -154l-154 154zM32 276l246 -246l246 246l-246 246z" />
+ <glyph glyph-name="apple" unicode="&#xe010;" horiz-adv-x="800"
+d="M275 530q-44 0 -79.5 -14.5t-60 -40.5t-38 -62t-13.5 -78q0 -71 27 -134t64.5 -110t77 -74.5t65.5 -27.5q19 0 36 7.5t30 23.5q7 8 18 12t22 4t21.5 -4t17.5 -12q27 -33 73 -33q39 0 70.5 21.5t56.5 52.5t42.5 65t28.5 59q-20 6 -38 18t-32.5 30t-23 41.5t-8.5 52.5
+q0 26 6.5 46t17 35.5t25 29t31.5 25.5q-3 15 -17 27.5t-33 21.5t-42 14t-44 5q-25 0 -47 -6.5t-37 -18.5q-20 -16 -35.5 -21.5t-30.5 -5.5t-27 6.5t-33 20.5q-17 12 -41 18t-50 6zM534 669q-21 0 -42.5 -12.5t-39.5 -32t-29.5 -43t-11.5 -46.5q0 -6 2 -11.5t10 -5.5
+q24 0 46 15t38.5 37t26.5 46.5t10 43.5q0 9 -10 9z" />
+ <hkern u1="&#x22;" u2="A" k="120" />
+ <hkern u1="&#x2c;" u2="&#x31;" k="110" />
+ <hkern u1="&#x2e;" u2="&#x37;" k="90" />
+ <hkern u1="&#x2e;" u2="&#x31;" k="130" />
+ <hkern u1="&#x2f;" u2="&#x31;" k="70" />
+ <hkern u1="&#x30;" u2="&#x39;" k="19" />
+ <hkern u1="&#x30;" u2="&#x38;" k="25" />
+ <hkern u1="&#x30;" u2="&#x37;" k="63" />
+ <hkern u1="&#x30;" u2="&#x35;" k="32" />
+ <hkern u1="&#x30;" u2="&#x33;" k="38" />
+ <hkern u1="&#x30;" u2="&#x32;" k="19" />
+ <hkern u1="&#x30;" u2="&#x31;" k="86" />
+ <hkern u1="&#x31;" u2="&#xa2;" k="170" />
+ <hkern u1="&#x31;" u2="&#x3d;" k="130" />
+ <hkern u1="&#x31;" u2="&#x39;" k="210" />
+ <hkern u1="&#x31;" u2="&#x38;" k="210" />
+ <hkern u1="&#x31;" u2="&#x37;" k="242" />
+ <hkern u1="&#x31;" u2="&#x36;" k="203" />
+ <hkern u1="&#x31;" u2="&#x35;" k="203" />
+ <hkern u1="&#x31;" u2="&#x34;" k="228" />
+ <hkern u1="&#x31;" u2="&#x33;" k="247" />
+ <hkern u1="&#x31;" u2="&#x32;" k="179" />
+ <hkern u1="&#x31;" u2="&#x31;" k="362" />
+ <hkern u1="&#x31;" u2="&#x30;" k="178" />
+ <hkern u1="&#x31;" u2="&#x2f;" k="170" />
+ <hkern u1="&#x31;" u2="&#x2e;" k="200" />
+ <hkern u1="&#x31;" u2="&#x2d;" k="160" />
+ <hkern u1="&#x31;" u2="&#x2c;" k="190" />
+ <hkern u1="&#x31;" u2="&#x2b;" k="180" />
+ <hkern u1="&#x31;" u2="&#x25;" k="140" />
+ <hkern u1="&#x32;" u2="&#x39;" k="38" />
+ <hkern u1="&#x32;" u2="&#x38;" k="44" />
+ <hkern u1="&#x32;" u2="&#x37;" k="69" />
+ <hkern u1="&#x32;" u2="&#x36;" k="25" />
+ <hkern u1="&#x32;" u2="&#x35;" k="43" />
+ <hkern u1="&#x32;" u2="&#x34;" k="31" />
+ <hkern u1="&#x32;" u2="&#x33;" k="50" />
+ <hkern u1="&#x32;" u2="&#x31;" k="152" />
+ <hkern u1="&#x32;" u2="&#x30;" k="12" />
+ <hkern u1="&#x33;" u2="&#x39;" k="25" />
+ <hkern u1="&#x33;" u2="&#x38;" k="38" />
+ <hkern u1="&#x33;" u2="&#x37;" k="69" />
+ <hkern u1="&#x33;" u2="&#x36;" k="19" />
+ <hkern u1="&#x33;" u2="&#x35;" k="37" />
+ <hkern u1="&#x33;" u2="&#x34;" k="19" />
+ <hkern u1="&#x33;" u2="&#x33;" k="51" />
+ <hkern u1="&#x33;" u2="&#x32;" k="31" />
+ <hkern u1="&#x33;" u2="&#x31;" k="93" />
+ <hkern u1="&#x33;" u2="&#x30;" k="19" />
+ <hkern u1="&#x34;" u2="&#x38;" k="12" />
+ <hkern u1="&#x34;" u2="&#x37;" k="56" />
+ <hkern u1="&#x34;" u2="&#x35;" k="24" />
+ <hkern u1="&#x34;" u2="&#x33;" k="38" />
+ <hkern u1="&#x34;" u2="&#x31;" k="153" />
+ <hkern u1="&#x35;" u2="&#x39;" k="31" />
+ <hkern u1="&#x35;" u2="&#x38;" k="49" />
+ <hkern u1="&#x35;" u2="&#x37;" k="31" />
+ <hkern u1="&#x35;" u2="&#x36;" k="25" />
+ <hkern u1="&#x35;" u2="&#x35;" k="19" />
+ <hkern u1="&#x35;" u2="&#x33;" k="44" />
+ <hkern u1="&#x35;" u2="&#x32;" k="25" />
+ <hkern u1="&#x35;" u2="&#x31;" k="158" />
+ <hkern u1="&#x36;" u2="&#x39;" k="31" />
+ <hkern u1="&#x36;" u2="&#x38;" k="38" />
+ <hkern u1="&#x36;" u2="&#x37;" k="75" />
+ <hkern u1="&#x36;" u2="&#x36;" k="12" />
+ <hkern u1="&#x36;" u2="&#x35;" k="31" />
+ <hkern u1="&#x36;" u2="&#x34;" k="25" />
+ <hkern u1="&#x36;" u2="&#x33;" k="37" />
+ <hkern u1="&#x36;" u2="&#x32;" k="24" />
+ <hkern u1="&#x36;" u2="&#x31;" k="166" />
+ <hkern u1="&#x36;" u2="&#x30;" k="12" />
+ <hkern u1="&#x37;" u2="&#x39;" k="56" />
+ <hkern u1="&#x37;" u2="&#x38;" k="37" />
+ <hkern u1="&#x37;" u2="&#x37;" k="37" />
+ <hkern u1="&#x37;" u2="&#x36;" k="50" />
+ <hkern u1="&#x37;" u2="&#x35;" k="38" />
+ <hkern u1="&#x37;" u2="&#x34;" k="127" />
+ <hkern u1="&#x37;" u2="&#x33;" k="70" />
+ <hkern u1="&#x37;" u2="&#x32;" k="63" />
+ <hkern u1="&#x37;" u2="&#x31;" k="166" />
+ <hkern u1="&#x37;" u2="&#x30;" k="50" />
+ <hkern u1="&#x37;" u2="&#x2f;" k="100" />
+ <hkern u1="&#x37;" u2="&#x2e;" k="180" />
+ <hkern u1="&#x37;" u2="&#x2c;" k="200" />
+ <hkern u1="&#x38;" u2="&#x39;" k="19" />
+ <hkern u1="&#x38;" u2="&#x38;" k="38" />
+ <hkern u1="&#x38;" u2="&#x37;" k="56" />
+ <hkern u1="&#x38;" u2="&#x35;" k="25" />
+ <hkern u1="&#x38;" u2="&#x34;" k="6" />
+ <hkern u1="&#x38;" u2="&#x33;" k="25" />
+ <hkern u1="&#x38;" u2="&#x32;" k="25" />
+ <hkern u1="&#x38;" u2="&#x31;" k="127" />
+ <hkern u1="&#x38;" u2="&#x30;" k="13" />
+ <hkern u1="&#x39;" u2="&#x39;" k="25" />
+ <hkern u1="&#x39;" u2="&#x38;" k="38" />
+ <hkern u1="&#x39;" u2="&#x37;" k="63" />
+ <hkern u1="&#x39;" u2="&#x36;" k="19" />
+ <hkern u1="&#x39;" u2="&#x35;" k="19" />
+ <hkern u1="&#x39;" u2="&#x34;" k="12" />
+ <hkern u1="&#x39;" u2="&#x33;" k="51" />
+ <hkern u1="&#x39;" u2="&#x32;" k="31" />
+ <hkern u1="&#x39;" u2="&#x31;" k="107" />
+ <hkern u1="&#x39;" u2="&#x30;" k="6" />
+ <hkern u1="A" u2="&#x201d;" k="90" />
+ <hkern u1="A" u2="&#x2019;" k="80" />
+ <hkern u1="A" u2="y" k="84" />
+ <hkern u1="A" u2="w" k="85" />
+ <hkern u1="A" u2="v" k="84" />
+ <hkern u1="A" u2="u" k="50" />
+ <hkern u1="A" u2="t" k="70" />
+ <hkern u1="A" u2="s" k="25" />
+ <hkern u1="A" u2="q" k="31" />
+ <hkern u1="A" u2="o" k="25" />
+ <hkern u1="A" u2="j" k="25" />
+ <hkern u1="A" u2="i" k="25" />
+ <hkern u1="A" u2="g" k="32" />
+ <hkern u1="A" u2="e" k="32" />
+ <hkern u1="A" u2="d" k="32" />
+ <hkern u1="A" u2="c" k="33" />
+ <hkern u1="A" u2="a" k="39" />
+ <hkern u1="A" u2="Y" k="174" />
+ <hkern u1="A" u2="W" k="102" />
+ <hkern u1="A" u2="V" k="135" />
+ <hkern u1="A" u2="U" k="32" />
+ <hkern u1="A" u2="T" k="188" />
+ <hkern u1="A" u2="S" k="32" />
+ <hkern u1="A" u2="Q" k="32" />
+ <hkern u1="A" u2="O" k="25" />
+ <hkern u1="A" u2="J" k="25" />
+ <hkern u1="A" u2="G" k="35" />
+ <hkern u1="A" u2="C" k="38" />
+ <hkern u1="A" u2="&#x22;" k="100" />
+ <hkern u1="B" u2="y" k="40" />
+ <hkern u1="B" u2="w" k="31" />
+ <hkern u1="B" u2="Y" k="64" />
+ <hkern u1="B" u2="W" k="58" />
+ <hkern u1="B" u2="V" k="57" />
+ <hkern u1="B" u2="T" k="40" />
+ <hkern u1="B" u2="A" k="39" />
+ <hkern u1="C" u2="Y" k="50" />
+ <hkern u1="C" u2="A" k="45" />
+ <hkern u1="D" u2="Y" k="70" />
+ <hkern u1="D" u2="T" k="40" />
+ <hkern u1="D" u2="E" k="30" />
+ <hkern u1="D" u2="A" k="45" />
+ <hkern u1="E" u2="J" k="32" />
+ <hkern u1="F" u2="A" k="122" />
+ <hkern u1="G" u2="Y" k="40" />
+ <hkern u1="G" u2="W" k="40" />
+ <hkern u1="G" u2="A" k="30" />
+ <hkern u1="J" u2="A" k="58" />
+ <hkern u1="K" u2="y" k="130" />
+ <hkern u1="K" u2="w" k="150" />
+ <hkern u1="K" u2="v" k="150" />
+ <hkern u1="K" u2="u" k="96" />
+ <hkern u1="K" u2="o" k="99" />
+ <hkern u1="K" u2="i" k="32" />
+ <hkern u1="K" u2="g" k="80" />
+ <hkern u1="K" u2="e" k="70" />
+ <hkern u1="K" u2="a" k="57" />
+ <hkern u1="K" u2="O" k="71" />
+ <hkern u1="K" u2="G" k="70" />
+ <hkern u1="K" u2="C" k="60" />
+ <hkern u1="L" u2="&#x2122;" k="140" />
+ <hkern u1="L" u2="&#x2019;" k="130" />
+ <hkern u1="L" u2="y" k="102" />
+ <hkern u1="L" u2="w" k="122" />
+ <hkern u1="L" u2="v" k="116" />
+ <hkern u1="L" u2="u" k="32" />
+ <hkern u1="L" u2="o" k="50" />
+ <hkern u1="L" u2="e" k="38" />
+ <hkern u1="L" u2="a" k="45" />
+ <hkern u1="L" u2="Y" k="200" />
+ <hkern u1="L" u2="W" k="130" />
+ <hkern u1="L" u2="V" k="190" />
+ <hkern u1="L" u2="U" k="19" />
+ <hkern u1="L" u2="T" k="160" />
+ <hkern u1="L" u2="Q" k="30" />
+ <hkern u1="L" u2="O" k="32" />
+ <hkern u1="L" u2="G" k="40" />
+ <hkern u1="L" u2="C" k="40" />
+ <hkern u1="O" u2="Y" k="60" />
+ <hkern u1="O" u2="X" k="40" />
+ <hkern u1="O" u2="W" k="50" />
+ <hkern u1="O" u2="V" k="40" />
+ <hkern u1="O" u2="T" k="40" />
+ <hkern u1="O" u2="A" k="25" />
+ <hkern u1="P" u2="u" k="26" />
+ <hkern u1="P" u2="s" k="38" />
+ <hkern u1="P" u2="o" k="19" />
+ <hkern u1="P" u2="a" k="38" />
+ <hkern u1="P" u2="Y" k="50" />
+ <hkern u1="P" u2="A" k="109" />
+ <hkern u1="R" u2="Y" k="70" />
+ <hkern u1="R" u2="W" k="50" />
+ <hkern u1="R" u2="V" k="50" />
+ <hkern u1="S" u2="Y" k="50" />
+ <hkern u1="S" u2="A" k="32" />
+ <hkern u1="T" u2="y" k="130" />
+ <hkern u1="T" u2="w" k="188" />
+ <hkern u1="T" u2="u" k="140" />
+ <hkern u1="T" u2="s" k="149" />
+ <hkern u1="T" u2="r" k="144" />
+ <hkern u1="T" u2="o" k="162" />
+ <hkern u1="T" u2="i" k="45" />
+ <hkern u1="T" u2="e" k="170" />
+ <hkern u1="T" u2="a" k="169" />
+ <hkern u1="T" u2="J" k="120" />
+ <hkern u1="T" u2="A" k="160" />
+ <hkern u1="T" u2="&#x3b;" k="167" />
+ <hkern u1="T" u2="&#x3a;" k="160" />
+ <hkern u1="T" u2="&#x2e;" k="178" />
+ <hkern u1="T" u2="&#x2d;" k="147" />
+ <hkern u1="T" u2="&#x2c;" k="177" />
+ <hkern u1="U" u2="A" k="32" />
+ <hkern u1="V" u2="u" k="91" />
+ <hkern u1="V" u2="r" k="92" />
+ <hkern u1="V" u2="o" k="98" />
+ <hkern u1="V" u2="e" k="109" />
+ <hkern u1="V" u2="a" k="110" />
+ <hkern u1="V" u2="Q" k="60" />
+ <hkern u1="V" u2="O" k="40" />
+ <hkern u1="V" u2="J" k="90" />
+ <hkern u1="V" u2="G" k="40" />
+ <hkern u1="V" u2="A" k="136" />
+ <hkern u1="V" u2="&#x3b;" k="103" />
+ <hkern u1="V" u2="&#x3a;" k="103" />
+ <hkern u1="V" u2="&#x2e;" k="212" />
+ <hkern u1="V" u2="&#x2d;" k="91" />
+ <hkern u1="V" u2="&#x2c;" k="207" />
+ <hkern u1="W" u2="u" k="84" />
+ <hkern u1="W" u2="r" k="71" />
+ <hkern u1="W" u2="o" k="97" />
+ <hkern u1="W" u2="e" k="64" />
+ <hkern u1="W" u2="a" k="89" />
+ <hkern u1="W" u2="O" k="30" />
+ <hkern u1="W" u2="J" k="60" />
+ <hkern u1="W" u2="G" k="30" />
+ <hkern u1="W" u2="A" k="130" />
+ <hkern u1="W" u2="&#x3b;" k="90" />
+ <hkern u1="W" u2="&#x3a;" k="84" />
+ <hkern u1="W" u2="&#x2e;" k="207" />
+ <hkern u1="W" u2="&#x2d;" k="77" />
+ <hkern u1="W" u2="&#x2c;" k="207" />
+ <hkern u1="X" u2="y" k="100" />
+ <hkern u1="X" u2="O" k="40" />
+ <hkern u1="Y" u2="v" k="110" />
+ <hkern u1="Y" u2="u" k="116" />
+ <hkern u1="Y" u2="s" k="148" />
+ <hkern u1="Y" u2="r" k="103" />
+ <hkern u1="Y" u2="q" k="167" />
+ <hkern u1="Y" u2="o" k="120" />
+ <hkern u1="Y" u2="n" k="135" />
+ <hkern u1="Y" u2="g" k="174" />
+ <hkern u1="Y" u2="e" k="143" />
+ <hkern u1="Y" u2="a" k="153" />
+ <hkern u1="Y" u2="S" k="50" />
+ <hkern u1="Y" u2="O" k="70" />
+ <hkern u1="Y" u2="J" k="140" />
+ <hkern u1="Y" u2="G" k="60" />
+ <hkern u1="Y" u2="C" k="60" />
+ <hkern u1="Y" u2="A" k="182" />
+ <hkern u1="Y" u2="&#x3b;" k="142" />
+ <hkern u1="Y" u2="&#x3a;" k="142" />
+ <hkern u1="Y" u2="&#x2e;" k="245" />
+ <hkern u1="Y" u2="&#x2d;" k="117" />
+ <hkern u1="Y" u2="&#x2c;" k="245" />
+ <hkern u1="a" u2="x" k="34" />
+ <hkern u1="a" u2="w" k="40" />
+ <hkern u1="a" u2="v" k="50" />
+ <hkern u1="b" u2="y" k="40" />
+ <hkern u1="b" u2="w" k="40" />
+ <hkern u1="c" u2="x" k="57" />
+ <hkern u1="e" u2="x" k="37" />
+ <hkern u1="f" u2="s" k="32" />
+ <hkern u1="f" u2="o" k="25" />
+ <hkern u1="f" u2="g" k="19" />
+ <hkern u1="f" u2="e" k="19" />
+ <hkern u1="f" u2="d" k="25" />
+ <hkern u1="f" u2="c" k="25" />
+ <hkern u1="k" u2="u" k="25" />
+ <hkern u1="k" u2="t" k="32" />
+ <hkern u1="k" u2="s" k="39" />
+ <hkern u1="k" u2="o" k="50" />
+ <hkern u1="k" u2="g" k="50" />
+ <hkern u1="k" u2="c" k="40" />
+ <hkern u1="k" u2="a" k="40" />
+ <hkern u1="n" u2="v" k="25" />
+ <hkern u1="o" u2="x" k="44" />
+ <hkern u1="r" u2="y" k="40" />
+ <hkern u1="r" u2="x" k="77" />
+ <hkern u1="r" u2="e" k="19" />
+ <hkern u1="r" u2="&#x2e;" k="265" />
+ <hkern u1="r" u2="&#x2c;" k="250" />
+ <hkern u1="v" u2="d" k="38" />
+ <hkern u1="v" u2="a" k="30" />
+ <hkern u1="w" u2="o" k="30" />
+ <hkern u1="w" u2="g" k="40" />
+ <hkern u1="w" u2="d" k="40" />
+ <hkern u1="x" u2="c" k="65" />
+ <hkern u1="y" u2="o" k="30" />
+ <hkern u1="y" u2="g" k="50" />
+ <hkern u1="y" u2="d" k="44" />
+ <hkern u1="y" u2="&#x2c;" k="90" />
+ <hkern u1="&#x2018;" u2="A" k="80" />
+ <hkern u1="&#x201c;" u2="A" k="80" />
+ <hkern u1="&#x2122;" u2="&#x2e;" k="340" />
+ <hkern u1="&#xae;" u2="&#x2e;" k="330" />
+ </font>
+</defs></svg>
Index: live/styles/fonts/MicroExtendFLF-Bold.ttf.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/MicroExtendFLF-Bold.ttf.woff
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/Interdimensional.ttf.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/Interdimensional.ttf.eot
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/Interdimensional.ttf.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/Interdimensional.ttf.woff
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/MicroExtendFLF-Bold.ttf.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/MicroExtendFLF-Bold.ttf.eot
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/ZurichXCn.pfr
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/ZurichXCn.pfr
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/HAETTEN0.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/HAETTEN0.eot
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/HAETTENS.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/HAETTENS.ttf
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/freedomfighter.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/freedomfighter.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/MARRIAGE.TTF
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/MARRIAGE.TTF
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/LCARS.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/LCARS.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/StarNext.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/StarNext.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/UNCON___.TTF
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/UNCON___.TTF
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/House.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/House.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/TERMINAT.TTF
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/TERMINAT.TTF
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/Smallville1.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/Smallville1.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/DatelineBold.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/DatelineBold.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/Roswell.TTF
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/Roswell.TTF
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/FEC_____.TTF
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/FEC_____.TTF
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/SwissCheesed.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/SwissCheesed.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/tsslogo.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/tsslogo.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/slayer11.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/slayer11.eot
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/Walkway_SemiBold.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/Walkway_SemiBold.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/matt_smith_doctor_who.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/matt_smith_doctor_who.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/SQDSV.TTF
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/SQDSV.TTF
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/slayer11.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/slayer11.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/Highguard.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/Highguard.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/futurama-title.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/futurama-title.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/KopyKattKut-Bold.otf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/KopyKattKut-Bold.otf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/slayer11.svg
===================================================================
--- live/styles/fonts/slayer11.svg (nonexistent)
+++ live/styles/fonts/slayer11.svg (revision 198)
@@ -0,0 +1,743 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg>
+<metadata>
+Created by FontForge 20110222 at Mon Mar 7 08:27:00 2011
+ By www-data
+Slayer the buffy font based on Herculanum http://members.xoom.com/buffysaver
+</metadata>
+<defs>
+<font id="Slayer" horiz-adv-x="1139" >
+ <font-face
+ font-family="Slayer"
+ font-weight="400"
+ font-stretch="normal"
+ units-per-em="2048"
+ panose-1="2 0 0 0 0 0 0 0 0 0"
+ ascent="1638"
+ descent="-410"
+ x-height="1605"
+ cap-height="1805"
+ bbox="-336 -440 3125 1987"
+ underline-thickness="150"
+ underline-position="-142"
+ unicode-range="U+0020-2567"
+ />
+ <missing-glyph />
+ <glyph glyph-name="space" unicode=" " horiz-adv-x="1500"
+d="M-60 -437l-10 -3l5 4v3z" />
+ <glyph glyph-name="space" unicode="&#xa0;" horiz-adv-x="1500"
+d="M-60 -437l-10 -3l5 4v3z" />
+ <glyph glyph-name="exclam" unicode="!" horiz-adv-x="569"
+ />
+ <glyph glyph-name="quotedbl" unicode="&#x22;" horiz-adv-x="727"
+ />
+ <glyph glyph-name="numbersign" unicode="#"
+ />
+ <glyph glyph-name="dollar" unicode="$"
+d="M578 1826q-46 0 -84 -19l-15 -38l-8 -42l-4 -16l-15 -65l-4 -30l-8 -27q-7 -12 -34 -27q-31 -12 -50 -23l-15 -4l-23 -11q-23 -8 -42 -19l-92 -39l-8 -7l-53 -23l-8 -12l-23 -19q-15 -19 -31 -31l-38 -107l-4 -23v-306l8 -15q42 -81 96 -127l68 -34l12 -8l42 -19
+q23 -12 27 -15q11 -4 15 -8l23 -8l8 -7l19 -8l31 -12l34 -15q38 -8 61 -19v-567q0 -34 -4 -61l-15 4l-50 4q-61 11 -95 11l-19 12q-39 15 -62 30l-95 46h-12l-57 12l-54 7v-46q4 -7 4 -26l7 -39q8 -92 31 -149l54 -11l15 -4l15 -4l16 -4l149 -34q8 -4 27 -4l27 -8h15
+q57 -11 96 -11l7 -12v-199h88l4 19l8 54q4 11 8 30l3 23l4 27q4 15 4 38l12 58l26 8l42 3q46 8 77 8l23 4l23 8l15 3l173 73q7 12 15 15l38 69q12 27 23 42q15 39 31 62q15 46 38 76v192l-4 15l-34 107l-12 12q-19 19 -30 27l-19 19l-4 7l-35 35l-19 11q-11 4 -15 8l-27 15
+l-84 31l-12 8l-80 30q-19 12 -31 16l-57 34v77q-8 42 -4 72v12l-4 27v103l-4 12v99l-4 42v88q-7 58 0 100l12 -4l54 -8q34 -4 57 -11l11 -12l39 -38q7 -11 27 -27q30 -27 46 -50h88l65 66q0 11 4 15l3 46l4 27q8 49 8 84l-19 8q-39 3 -65 11l-16 4l-42 8l-15 3l-96 19
+q-31 4 -54 12h-11q-23 8 -42 8q-35 11 -61 15v249h-31zM467 1355v-367q4 -54 -4 -88l-19 7q-34 4 -57 12l-19 15l-20 23l-53 54q-42 34 -65 61v168l107 111h11l31 4l77 16q11 -8 11 -16zM911 390v-206l-30 -31l-31 -31l-50 -50l-15 -3l-15 -4l-104 -31q-42 -19 -76 -19
+l4 509q187 -27 317 -134z" />
+ <glyph glyph-name="percent" unicode="%" horiz-adv-x="2351"
+d="M410 1780l-112 -68l-16 -12l-56 -36q-36 -16 -60 -40l-136 -136l-40 -124v-228q0 -164 116 -256q132 -128 292 -56l32 12l32 12l24 12q112 52 144 72l56 56l16 28l8 8q16 40 32 64l4 20v20q4 8 6 18l6 30l4 24l12 68l4 16l8 40l4 28q8 52 20 88l284 12l20 4h56l20 4h44
+l20 4h40l28 4q60 12 100 12l-4 -8l-28 -96l-8 -12l-16 -36l-16 -24l-24 -28l-36 -52l-4 -8q-32 -48 -56 -72l-12 -20l-4 -12l-12 -20q-16 -32 -28 -48q-12 -28 -24 -44l-44 -76l-8 -8l-8 -16q-16 -20 -28 -48l-28 -44q-24 -24 -36 -52q-20 -24 -28 -48q-8 -12 -14 -22
+l-18 -30l-132 -204l-12 -16q-36 -48 -48 -84l-8 -12l-52 -52q-28 -24 -44 -48q-24 -56 -48 -88l-128 -128q-28 -72 -76 -120l-8 -8v-140q12 -8 16 -16h192q8 12 16 16q40 36 56 76l4 8l24 72l4 20l8 12l80 156q4 12 8 16q16 40 32 64l12 16q8 24 20 40l16 24q4 12 8 16
+l12 20l20 36l56 96l44 48l92 124l12 16l12 16l16 16l16 28q8 24 36 60l88 148l12 24q12 32 40 68l16 16q12 24 28 40l12 24l12 12l24 36l8 8l16 20q12 20 16 32q12 20 16 32l100 168q28 40 40 72l132 132l12 32v16l4 8l4 20q0 36 8 64l-80 20l-148 4q-24 -32 -52 -44h-700
+l-60 32q-24 12 -40 28l-68 68h-188zM538 1600q4 -8 16 -20l16 -12l36 -40v-268l-52 -92l-20 -20l-60 -56q-12 -20 -24 -28l-36 -4h-36l-16 -4h-28l-152 -16l4 16l4 32l4 104l4 16l8 144l12 24l32 64l16 12l20 20l72 76q32 28 48 52h132zM1398 420q-96 -268 20 -504l12 -8
+l24 -12l24 -12l8 -8l72 -44l8 -8l80 -44h136l12 8q24 8 40 20l12 4l44 24l12 4q20 12 32 16l28 16l80 92q20 20 28 36q160 176 128 396q-44 168 -148 272l-20 4l-28 8l-28 8l-100 24h-188zM1822 492l52 -52q12 -8 16 -16l92 -92v-216l-60 -60l-12 -8l-44 -48h-268
+q-4 20 -20 28v436q12 20 24 28h220z" />
+ <glyph glyph-name="ampersand" unicode="&#x26;" horiz-adv-x="2538"
+d="M124 1481v-208q0 -8 3.5 -15.5t7.5 -23.5l31 -100q19 -12 27 -27q39 -31 58 -54v-128l-39 -38l-88 -89q-8 -23 -20 -35l-4 -12q-11 -19 -23 -34l-42 -66l-8 -8l-27 -50v-282l12 -15l46 -93l12 -23l54 -112l27 -27l19 -16l62 -42q154 -128 340 -104h150l31 11q46 20 81 27
+l20 12l42 27q31 15 46 31l97 58q23 15 39 34l77 78q23 61 62 104h123l8 -8q19 -23 69 -54q20 -11 31 -15l43 -27l11 -12q24 -11 35 -23l19 -12l47 -27q23 -11 38 -23l27 -15l8 -8l23 -15q12 -8 21.5 -16t36.5 -19l108 -70l8 -7l54 -31h104q128 108 159 247l4 31l-112 7
+l-16 4h-38l-16 4l-112 4l-23 12q-66 30 -104 73l-128 66l-11 3l-27 16l-12 4q-19 11 -31 15l-54 31l-15 12q-35 31 -66 46l-19 12l-8 7q-23 12 -39 27v85q0 24 8 62v16q12 38 15 65l4 12l4 23l8 46q8 35 8 66q0 12 4 15l3 82q0 23 4 38l8 128h-305v-132q54 4 89 -4v-243
+q4 -54 -4 -89l-27 4l-27 8h-12l-31 4l-27 4l-27 15q-35 19 -58 27l-15 19q-31 24 -47 39l-7 8l-62 46q-50 27 -77 62q-50 8 -85 23l4 12q11 38 15 65l16 16q7 11 27 31q30 27 46 50q4 11 19 39l27 38l12 19l42 70l4 12l16 23q7 23 19 34l4 12l23 43v173q-93 186 -301 232
+h-201q-251 -104 -355 -317zM728 1582q36 -44 68 -68v-180l-24 -44q-12 -32 -28 -52q-8 -4 -24 -24l-24 -24q-36 -32 -56 -56l-176 -4q-32 40 -56 60l-56 56v224q28 24 44 44l12 12q36 32 56 56h264zM508 782l20 -20l16 -8q20 -20 36 -28l20 -16l48 -32l20 -20q32 -24 48 -40
+t52 -36q24 -12 40 -24l92 -60q32 -16 52 -32l64 -64v-172l-24 -20q-8 -12 -12 -16l-40 -40q-28 -32 -52 -48l-32 -36q-52 -20 -84 -44h-136q-176 -20 -276 108l-12 12l-44 40q-20 56 -44 88v264l32 56q44 116 128 188h88z" />
+ <glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="391"
+ />
+ <glyph glyph-name="parenleft" unicode="(" horiz-adv-x="879"
+d="M608 1805h-11q-42 -7 -70 -7l-8 -7q-24 -21 -42 -42l-11 -11l-42 -39l-46 -88l-71 -67l-3 -11l-35 -71l-25 -28l-25 -35l-3 -7l-64 -85q-4 -11 -7 -14l-57 -113q-3 -11 -7 -15l-28 -56q0 -7 -11 -25l-21 -60l-10 -28l-11 -25v-350l4 -17l3 -18l4 -21l7 -22v-14l7 -24v-11
+q10 -28 10 -53l32 -60q18 -25 28 -35q18 -22 29 -39l46 -78l10 -14l18 -25l11 -18q14 -31 28 -49l113 -113q35 -89 106 -145l32 -32q77 -42 159 -32l17 25q15 46 15 74l-11 4l-64 14l-56 60l-50 88l-21 25l-35 50q-25 46 -53 70l-21 50q-15 24 -22 46l-3 10q-7 29 -18 46
+l-10 39q-11 21 -15 39l-28 81v548l32 92q3 7 7 25l11 21l14 25l3 10l50 92q21 32 42 50l7 17q18 28 25 50l39 67l10 18l15 21l10 14l53 92l18 14l53 53q39 95 -14 81q-21 -7 -39 -7z" />
+ <glyph glyph-name="parenright" unicode=")" horiz-adv-x="943"
+d="M-4 1807v-11l15 -72l14 -18l22 -18l46 -47q22 -50 40 -79l7 -7l11 -14l50 -76l8 -7q10 -18 25 -36q14 -15 29 -47q14 -22 32 -65q22 -32 29 -61l22 -47l3 -14l7 -11l8 -25l10 -29l8 -11q3 -22 14 -36l11 -33v-558l-7 -18q-8 -29 -18 -50l-4 -15l-4 -18l-21 -65l-4 -7
+l-18 -65q-7 -7 -10.5 -16t-7.5 -12q-11 -22 -22 -36l-79 -134q-36 -29 -72 -72l-43 -43q-29 -25 -43 -43l-40 -40v-86l15 -15h79q72 0 122 15q18 39 22 79l65 65q18 18 25 29l25 25l11 21l36 54q4 11 7 15l18 29l11 18l14 18l22 43l11 11q3 7 8.5 14t16.5 22l47 68l7 7
+l11 18l18 18q11 18 14 29l15 25l3 15l47 155v400l-11 28l-36 101l-14 22q-14 36 -29 58l-18 39l-11 18q-7 11 -18 33l-11 18l-10 21l-47 87l-7 7q-15 32 -40 72l-22 40l-79 82l-3 11q-22 33 -29 58l-11 14l-22 22l-7 11l-18 18l-4 7l-14 18l-22 32q-10 18 -18 22
+q-10 25 -25 40h-104q-33 -11 -58 -15z" />
+ <glyph glyph-name="asterisk" unicode="*" horiz-adv-x="797"
+d="M539 1516l-16 -4l-28 -8l-20 -4l-80 -20v-304q4 -56 -4 -92l-40 12l-60 20l-16 4l-40 16l-16 4l-44 16l-16 4l-12 8l-20 4l-124 40l4 -68l4 -12q0 -20 4 -32l4 -64l28 -24q40 -16 64 -32l44 -16q36 -8 64 -24l-4 -24l-8 -28v-12l-4 -32l-4 -28l-16 -16l-164 -120l-4 -32
+v-32l-4 -12v-28q-4 -16 -4 -44q-8 -40 -4 -72h16l60 12l56 8l76 76q8 12 16 16l128 128h132l124 -144l4 -8l16 -20l12 -16q32 -48 60 -72h28q88 -4 156 20l-8 24l-12 64l-36 36l-4 8q-32 48 -48 88l-136 136v84l40 32l44 20l12 8l100 48l116 116v20l16 156l-20 -4l-72 -16
+l-80 -44q-100 -88 -216 -108l-4 20v368l-24 4z" />
+ <glyph glyph-name="comma" unicode="," horiz-adv-x="708"
+d="M198 296l-41 -11l-3 -23v-18l-8 -81q0 -30 -3 -52v-37l-4 -7q4 -37 -4 -67l-3 -18q-11 -23 -15 -41l-4 -7q-15 -34 -18 -60l-19 -48q-26 -85 -29 -147q-8 -30 -8 -45v-40h26q56 14 92 14l12 8q25 33 51 51q4 15 11.5 26t14.5 30q19 33 37 74q19 33 37 81q11 19 15 30
+l26 59l7 11q0 7 8 22q11 30 22 44l3 15q11 22 15 37q19 30 22 52l23 44q7 67 -12 111h-221z" />
+ <glyph glyph-name="hyphen" unicode="-" horiz-adv-x="930"
+d="M43 845v-16l-4 -28l-4 -28q-8 -60 -8 -100h88l16 4h44l16 4l128 8l28 4q32 0 56 4l52 4l16 4q40 8 68 8l16 4l28 4q16 0 40 4l32 4l28 4q32 40 20 120l-24 12h-616z" />
+ <glyph glyph-name="hyphen" unicode="&#xad;" horiz-adv-x="930"
+d="M43 845v-16l-4 -28l-4 -28q-8 -60 -8 -100h88l16 4h44l16 4l128 8l28 4q32 0 56 4l52 4l16 4q40 8 68 8l16 4l28 4q16 0 40 4l32 4l28 4q32 40 20 120l-24 12h-616z" />
+ <glyph glyph-name="period" unicode="." horiz-adv-x="408"
+d="M26 145q-15 -49 -15 -87l75 -18q150 -86 270 18v176q-90 68 -188 53z" />
+ <glyph glyph-name="slash" unicode="/" horiz-adv-x="1128"
+d="M770 1785l-3 -7q-10 -33 -20 -49l-3 -14l-7 -9l-23 -57q-10 -16 -13 -29l-33 -73q-4 -13 -13 -30q-10 -33 -20 -49l-4 -7l-19 -59q-17 -27 -25 -45t-12 -31q-10 -17 -13 -27l-33 -76q-3 -10 -7 -13l-3 -10l-10 -23l-10 -23l-26 -63q-4 -10 -7 -13l-23 -63l-10 -20
+l-23 -59l-7 -10l-6 -17q-20 -53 -37 -82l-19 -47q-4 -10 -7 -13l-17 -43l-6 -10q0 -6 -3.5 -14.5t-6.5 -11.5l-13 -40q-4 -10 -13 -30q-20 -29 -27 -56q-23 -43 -33 -73q-10 -16 -13 -26l-23 -53q-4 -10 -7 -13l-3 -10q-7 -17 -13 -26l-67 -143q-3 -9 -6 -13l-23 -49
+q-7 -20 -17 -33l-16 -37l-10 -20l-27 -52v-14l-3 -23l-3 -23q-10 -49 -7 -82q73 0 122 26l43 79l4 17l33 86l10 23l10 23l16 50l13 26l4 16l9 27l63 135q0 7 10 24l27 62l10 23l23 57q10 16 19 39l47 106l10 20q10 36 23 59l6 20l14 23q3 14 13 33q6 17 13 27l17 39
+q6 17 13 27l39 92q20 37 27 60l3 10q17 30 23 56l17 40l6 10l30 59l4 10q9 16 13 26l23 43l10 20l10 20l13 30l7 10l23 49l6 10l56 113l4 9q10 17 13 27l13 23q27 63 17 122q-66 33 -129 30z" />
+ <glyph glyph-name="zero" unicode="0" horiz-adv-x="1522"
+d="M737 1780l-16 -8l-52 -16l-124 -56l-40 -44l-20 -16l-44 -44l-4 -8l-24 -40q-25 -56 -61 -88l-8 -16l-20 -64q-12 -24 -16 -44l-8 -28l-8 -16l-8 -29l-4 -8l-20 -64l-4 -16l-4 -24l-8 -52l-12 -68l-4 -20q0 -32 -8 -56v-357l20 -68l12 -44l8 -28l4 -16l40 -144l40 -40
+l44 -92l13 -8l44 -44l12 -12l48 -52l8 -4l8 -12q40 -32 60 -61l24 -16q40 -16 64 -32h248l16 4l12 8h12l60 24l16 4l25 12l28 12l40 21l56 56q8 12 16 16l128 128q188 336 172 677v152l-4 8l-16 72v16l-24 116q-12 24 -16 45l-12 32l-12 32q-20 36 -28 64l-60 120l-156 156
+l-16 8q-36 20 -64 28q-20 12 -32 16l-65 20l-28 12h-212zM989 1568l113 -112l32 -64q8 -20 16 -32l20 -44l8 -12q8 -25 12 -29l4 -16l8 -16l36 -104v-565l-16 -52q-12 -20 -16 -36l-12 -32q-20 -36 -28 -64q-24 -44 -28 -56l-32 -64l-28 -40q-57 -20 -89 -44h-264l-160 164
+l-28 60l-12 24l-44 124v637l20 48l4 16l12 28q8 21 20 49l12 20l12 32l72 132l12 4l80 44h264z" />
+ <glyph glyph-name="one" unicode="1" horiz-adv-x="993"
+d="M363 1821q-24 0 -28 -4l-128 -8l-53 -28l-28 -12q-24 -12 -40 -24q-48 -20 -76 -44v-104q88 -72 128 -168v-1335l-4 -8l-4 -20q-12 -61 -12 -101h305v24q-8 28 -8 53q-12 36 -8 64v1587l4 28q16 56 8 104h-44z" />
+ <glyph glyph-name="two" unicode="2" horiz-adv-x="1790"
+d="M374 1798l-19 -4l-51 -12q-15 -4 -43 -8q-31 -4 -50 -12l-40 -11l-7 -4l-63 -20q-19 -11 -31 -23l4 -191l4 -12q4 -35 12 -63h175q12 98 86 153h340q43 -16 78 -20q23 -47 27 -97v-293q-98 -301 -312 -480l-8 -12l-102 -98q-7 -11 -11 -15l-258 -262l-4 -11
+q-11 -20 -15 -32l-16 -27v-234q16 -16 31 -16h1003l32 -4q70 -19 117 -15l11 39q0 12 4 15l4 32l4 19l8 90l4 12v31q8 35 4 62h-28l-15 -4h-16q-62 -11 -97 -11l-59 -4h-55l-27 -4h-70l-24 -4h-121q-31 -8 -54 -4h-71q-46 -8 -78 -4l-226 -4l20 78l101 102q16 19 27 27
+q20 24 39 39q8 12 16 16q8 11 27 27l348 351q160 277 128 566l-3 16q-32 82 -36 109l-19 20l-8 11q-27 20 -43 39l-39 40q-27 23 -43 46l-43 20l-11 8l-149 54h-257z" />
+ <glyph glyph-name="three" unicode="3" horiz-adv-x="1436"
+d="M67 1775q-4 -34 -4 -61l-4 -15v-41q-3 -23 -3 -57q-8 -60 -8 -94q8 0 26 8l38 7q19 8 34 8h268l53 -12l15 -3l64 -19h11l53 -15q34 -8 60 -19q-15 -181 -143 -283l-4 -7q-26 -46 -38 -80q-18 -15 -30 -30q-49 -49 -64 -60l-30 -34v-128l11 -15l23 -19l23 -23l33 -19l8 -7
+l23 -11q22 -8 45 -34l22 -19l46 -45q34 -38 56 -57v-207l-11 -23l-30 -60l-12 -12l-7 -3q-19 -27 -38 -42l-49 -49l-11 -4l-38 -18q-34 -19 -75 -31l-53 -19l-15 -3l-26 -8l-19 -4l-15 -3l-23 -4q-19 -8 -28.5 -8t-19 -3.5t-27.5 -7.5l-23 -4q-38 -11 -64 -15h-11l-46 -11
+l15 -83q34 -42 61 -64h267l12 7l19 8l7 7l23 12q86 34 139 90q23 8 34 19l11 4l159 98l105 105l12 23l22 42q4 15 15 37q12 19 15 30l16 27v105q7 189 -181 260l-106 106v162q19 19 26 30l61 61l37 79l19 19l8 3l30 34q72 64 106 140v143l-65 64l-75 34q-30 8 -49 19l-19 4
+l-71 26l-15 4l-72 26l-15 4l-83 26l-34 12l-42 11l-15 4q-22 4 -26 7q-57 8 -94 19q-23 4 -38 4h-143q-15 -15 -19 -45z" />
+ <glyph glyph-name="four" unicode="4" horiz-adv-x="1603"
+d="M1005 1820l-30 -4l-27 -3q-41 0 -67 -12q-15 -18 -23 -22l-116 -120l-22 -41q-12 -30 -27 -49q-82 -67 -112 -150l-15 -19l-7 -3l-8 -12l-56 -56l-15 -26q-19 -41 -38 -68l-56 -52l-15 -19l-34 -60l-7 -7l-15 -27l-8 -7l-63 -109l-19 -18l-11 -12l-53 -52l-26 -53
+q-11 -26 -26 -41q-75 -64 -109 -142v-184l19 -19l506 -11l41 -4h135l11 -4h90q4 -30 0 -48l-4 -30l-3 -60q0 -45 -4 -75l-4 -41v-27q-7 -30 -7 -52v-11q-12 -38 -15 -68l11 -4l37 -7l30 -11h19q41 -8 68 -8l7 -4l79 -3v446l15 3l127 8q30 0 53 4l172 3l11 4h79q64 94 79 191
+l-536 4l4 210l3 11v146l4 27l8 367q-4 30 3 56l4 162l4 14l4 102q11 56 3 101h-33zM835 1375l-8 -18q-3 -33 -11 -55l-3 -30q0 -66 -4 -92v-117q-4 -26 -4 -44v-41q0 -33 -3 -59v-51q0 -33 -4 -59v-92q-7 -40 -4 -70l-11 -3h-526q37 143 125 239l4 11l26 33l7 7l11 15
+q11 18 22 26l33 36l4 11l29 59l8 11l165 166q22 62 63 103q44 7 73 18z" />
+ <glyph glyph-name="five" unicode="5" horiz-adv-x="1178"
+d="M110 1789l-3 -21l-14 -60l-18 -68l-11 -32l-11 -32l-35 -104v-131l100 -100q35 -18 46 -22l25 -14q18 -11 32 -28l82 -82q14 -15 53 -32l32 -15l221 -221v-270l-18 -29l-32 -60q-25 -22 -42 -40l-118 -117l-21 -18l-22 -25l-32 -18q-25 -10 -39 -21l-25 -4l-18 -3
+q-28 0 -50 -4l-32 -3h-46l-25 -4q-53 0 -89 -7v-274h25l25 7h11l28 3l25 4q39 18 50 25l25 10l92 54l11 11l22 17l117 72l7 7l22 10q10 11 21 15l32 18q25 28 46 42l40 39q7 11 14 15l157 157q139 263 39 516l-11 11q-18 11 -25 21q-11 18 -28 32l-47 47l-21 17
+q-46 32 -68 40l-10 7q-43 39 -82 60l-7 4q-33 18 -50 32q-25 18 -40 25l-7 3q-28 22 -53 33l-32 24l-7 8l-29 17l-7 8l-50 28l-18 18v153l18 18q18 0 29 3h28q18 0 29 4l360 18l17 3h54q21 4 35 4q29 0 50 3l107 4l18 18q11 18 21 21l8 11l7 4l46 49v11l7 29v10q7 36 7 64
+h-944z" />
+ <glyph glyph-name="six" unicode="6" horiz-adv-x="1306"
+d="M777 1816l-40 -19l-12 -7l-93 -45q-7 -11 -14 -15l-146 -145q-26 -22 -40 -45l-12 -7l-63 -63l-4 -8l-11 -7l-11 -15l-26 -26l-11 -7l-48 -49l-12 -22l-22 -41q-19 -30 -52 -63l-52 -108q-11 -22 -15 -26l-60 -123v-11l-7 -22q0 -8 -7 -26q-8 -45 -19 -75v-249l4 -19
+l3 -18l4 -23l8 -22v-15l7 -26v-11q11 -30 11 -56l11 -22l12 -23l11 -22l37 -74l7 -11l52 -101l38 -37l11 -7l15 -19q18 -11 33 -30q168 -93 339 -78q230 -15 375 134q19 11 26 22l64 64l11 26l7 11l37 96l12 30l11 26q4 175 -8 231q-52 290 -312 357q-194 63 -357 -11
+q-78 -63 -82 -149h22l11 -4l105 -3q29 -8 52 -4l29 -4h52l26 -4h67q19 -11 30 -14l60 -30l7 -8l26 -41l4 -11l22 -41v-219q19 -190 -141 -249h-294l-93 55l-41 41q-26 30 -45 45l-7 26l-7 22q-19 49 -26 82v402l3 11l108 246l11 18q8 23 19 37l52 90l11 18l41 71l74 78l12 8
+l100 104l22 11l190 93l11 7l19 8l11 7l26 11l11 8q30 11 49 26q29 52 26 100l-30 4l-30 4q-22 7 -41 7h-152z" />
+ <glyph glyph-name="seven" unicode="7" horiz-adv-x="1308"
+d="M32 1559h16q24 -4 28 -8l99 -12h680l15 4l36 4l20 4l31 4l28 4l-28 -95l-12 -20q-15 -39 -31 -63l-139 -281l-4 -12l-11 -23l-52 -107q-35 -32 -55 -63q-16 -40 -32 -63l-4 -12q-12 -20 -15 -32q-12 -20 -16 -32q-12 -19 -16 -31l-28 -52l-27 -55q-12 -32 -24 -47
+l-20 -40q-4 -12 -8 -16q-4 -12 -8 -16l-99 -201l-15 -16l-8 -12q-24 -27 -36 -47l-16 -28l-15 -20q-20 -31 -40 -51v-91l8 -8l20 -12l8 -8q39 -15 63 -31h182q12 4 35 23q20 24 36 36q4 28 8 39.5t8 39.5l4 16l4 16l3 27l8 28v12q12 32 16 59q12 24 20 60l59 185l12 24
+l12 24l24 43l12 28l23 55q12 32 24 52q0 8 8 23q12 24 16 40l27 55l8 24l4 8q12 20 24 47l12 28q4 12 8 16l43 95l20 23q20 16 32 32l15 36l12 23l20 36l12 24l12 23l12 24l11 24l24 51l16 20l43 59l4 8l20 32l8 8q28 43 40 51l4 16v178l-28 19h-83q-12 0 -16 4l-194 4
+l-15 4q-60 -4 -99 4l-158 4l-28 4l-162 4q-12 0 -16 4q-59 -4 -99 4l-106 4l-44 4h-39l-12 4h-32l-12 4q-20 0 -31 4l-64 4v-265z" />
+ <glyph glyph-name="eight" unicode="8"
+d="M526 1814l-4 -23l-4 -48q-11 -59 -11 -92l52 -8l22 -3h22q41 -8 67 -8l63 -63v-281q-26 -22 -41 -48l-11 -19l-11 -18l-22 -41l-63 -63q-89 -88 -170 19l-89 89v237l7 7l19 22l59 59l4 26l3 22l11 74h-11l-37 -7h-26l-18 -4q-45 -7 -74 -7l-104 -104l-4 -11l-11 -18
+q-7 -19 -14 -30l-12 -26l-14 -26l-4 -11l-22 -40v-167l22 -41l4 -11l55 -115q26 -25 45 -40q18 -19 33 -26q63 -33 78 -45l29 -85q-11 -7 -33 -11l-45 -11l-14 -15q-37 -26 -52 -52l-8 -7l-22 -18l-81 -82q-30 -33 -52 -52l-7 -26l-23 -59q-7 -22 -7 -41v-214l37 -74l19 -19
+l14 -11l23 -26l11 -7l26 -26q11 -7 14 -15q26 -22 37 -37l23 -4q37 -11 92 -18l26 -7l18 -4l15 -4h248l15 4q52 22 89 29l89 67l26 19q51 33 81 63q52 114 74 148v270l-7 26l-23 63q-3 22 -12.5 33t-27.5 22q-15 22 -34 37l-11 7q-14 23 -33 37l-74 75l-11 3l-37 8
+q-19 7 -33 7q11 59 40 96l11 15l15 11q19 19 26 30l19 18l29 30q15 11 22 22l26 26q19 18 30 26l11 15l41 81l3 11q12 19 15 30l15 26v192q-11 22 -15 41l-3 7l-19 59l-78 78q-63 71 -137 104h-181zM555 774q37 -23 67 -34l7 -7q22 -19 33 -33l74 -74l8 -4l33 -33v-285
+l-11 -8q-18 -26 -37 -40l-7 -8q-34 -37 -60 -55l-33 -37h-244l-8 7l-77 44l-19 15l-40 41v241l7 14q11 23 30 52q14 26 40 59l52 89l41 26q18 11 29 15l26 15h89z" />
+ <glyph glyph-name="nine" unicode="9" horiz-adv-x="1354"
+d="M436 1822q-22 -3 -26 -7h-11l-23 -4l-41 -11l-23 -4l-45 -7q-60 -57 -124 -83l-15 -19q-19 -34 -23 -45q-11 -15 -15 -30q-22 -34 -30 -64l-60 -139v-199l41 -117l12 -23q15 -37 30 -60l90 -90q83 -94 177 -135h139q165 19 259 150l19 83h-23q-26 7 -48 4l-27 3h-52
+l-15 4h-64l-15 4h-61q-11 0 -15 4q-56 -4 -94 3l-56 53q-23 30 -49 49v289q64 136 188 188h286q225 -105 188 -342v-259l-8 -11l-7 -27l-11 -26q-8 -41 -34 -90q-12 -30 -30 -49l-113 -203q-11 -19 -23 -27l-11 -15l-19 -18q-26 -23 -41 -46l-4 -11l-11 -15l-102 -169
+q-75 -71 -94 -102q-30 -71 -79 -109q-52 -52 -56 -120l109 4l8 4q26 0 45 3h30l15 4l41 4l57 11l33 11q8 53 27 87q22 22 33 38q27 56 38 71l41 86l12 19l49 87l11 19l11 22q15 30 26 45l16 23l3 11l42 71q11 8 22 23l42 64l11 15q30 45 52 68q12 37 31 60l11 22
+q11 30 26 53l34 75q19 34 30 83l19 64l4 19l3 18v203q-11 23 -15 42l-26 71l-7 12l-12 22l-7 23l-8 11l-45 94l-147 147l-41 7l-15 4l-26 7l-94 15l-19 4h-286z" />
+ <glyph glyph-name="colon" unicode=":" horiz-adv-x="569"
+d="M129 1127l-20 -10l-20 -10l-16 -7q-7 -3 -23 -13q-33 -17 -50 -30v-86l20 -23l66 -103q133 -3 202 93v50q24 175 -136 152q-19 -10 -23 -13zM0 361v-83q60 -59 116 -83h89l7 7q27 30 47 46q43 37 29 113l-10 10l-73 109q-49 7 -82 4z" />
+ <glyph glyph-name="semicolon" unicode=";" horiz-adv-x="569"
+d="M47 1125q-7 -126 90 -206l10 3h70l123 123v84l-40 40l-3 6q-17 10 -25 22t-18 18h-87q-77 -36 -120 -90zM130 619l-46 -44l-57 -150l-3 -16l-4 -14l-13 -40l-3 -20l-7 -16l-17 -60l-6 -34q-10 -23 -14 -43l-3 -7q-7 -36 -17 -60q-3 -63 4 -103q56 -17 103 3l3 7
+q20 20 34 30l20 37l3 10l10 20l83 163l4 13q10 20 13 24q3 10 7 13l16 43l14 30q6 30 16 54v153l-13 13l-13 4h-107z" />
+ <glyph glyph-name="semicolon" unicode="&#x37e;" horiz-adv-x="569"
+d="M47 1125q-7 -126 90 -206l10 3h70l123 123v84l-40 40l-3 6q-17 10 -25 22t-18 18h-87q-77 -36 -120 -90zM130 619l-46 -44l-57 -150l-3 -16l-4 -14l-13 -40l-3 -20l-7 -16l-17 -60l-6 -34q-10 -23 -14 -43l-3 -7q-7 -36 -17 -60q-3 -63 4 -103q56 -17 103 3l3 7
+q20 20 34 30l20 37l3 10l10 20l83 163l4 13q10 20 13 24q3 10 7 13l16 43l14 30q6 30 16 54v153l-13 13l-13 4h-107z" />
+ <glyph glyph-name="less" unicode="&#x3c;" horiz-adv-x="1196"
+ />
+ <glyph glyph-name="equal" unicode="=" horiz-adv-x="1196"
+ />
+ <glyph glyph-name="greater" unicode="&#x3e;" horiz-adv-x="1196"
+ />
+ <glyph glyph-name="question" unicode="?"
+d="M330 1798q-27 -3 -43 -11l-50 -20l-16 -3l-97 -32l-7 -11l-8 -4l-90 -89l-3 -12q0 -23 -4 -39q-4 -31 -8 -74l-4 -27v-70l54 8l24 4q19 0 31 4l62 4l39 42l19 28l16 19q19 27 27 43l74 85h248l39 -39q12 -7 19 -23l24 -19l42 -47l12 -8l58 -58v-299l-35 -62l-3 -12
+l-12 -23l-16 -27l-4 -12l-23 -43l-23 -15q-89 -39 -140 -105q-19 -12 -27 -23l-20 -8l-7 -8q-39 -15 -62 -31q-20 -23 -39 -39l-4 -8l-55 -54q-3 -58 4 -97l16 -16h132l15 20l24 19l50 51l58 31l8 8l16 7l8 8l15 8l8 8l105 62l143 143l4 12l12 20l39 89l4 15l23 66v183
+q4 264 -148 415l-38 12l-16 4l-62 19l-16 4q-15 4 -35 8l-15 8l-27 8q-43 7 -70 19h-210zM276 35q128 -85 283 -62l62 62v171q-104 121 -240 109q-129 -120 -105 -280z" />
+ <glyph glyph-name="at" unicode="@" horiz-adv-x="2079"
+ />
+ <glyph glyph-name="A" unicode="A" horiz-adv-x="2000"
+d="M763 1744v-309l-6 -6q-13 -32 -26 -52l-3 -13l-32 -96l-23 -45l-6 -10l-16 -35l-7 -10l-13 -29l-6 -10q-3 -16 -10 -25v-10l-6 -10l-26 -77l-10 -19q-16 -23 -22 -42l-7 -10l-22 -45l-3 -10l-10 -19q-10 -16 -13 -29q-3 -6 -13 -23l-26 -51q-16 -23 -35 -36l-3 -9
+l-10 -20l-13 -22l-3 -10l-19 -35l-10 -19l-23 -46l-3 -9l-84 -168l-6 -9l-16 -36l-7 -9l-38 -81l-45 -48q-23 -20 -39 -39q-58 -26 -90 -55q0 -13 -3 -38q-13 -58 -10 -97l68 3l22 3l61 4q20 3 37.5 3t30.5 6q23 4 39 10q22 3 38 10q26 3 45 9l17 16l3 10q19 48 25 81l13 29
+q10 19 13 22q3 10 7 13q3 10 6 13q3 10 7 13l16 35q9 23 19 36l64 167q10 16 13 26l13 22q3 13 16 33q16 38 36 61l16 3h631l26 -16q26 -10 42 -19l54 -55l17 -36l6 -9l16 -36l7 -9l9 -26q13 -19 20 -35l16 -29l35 -94l3 -13l4 -13l25 -80q23 -48 62 -77q19 0 35 -7l22 -3
+q33 -3 52 -10h10l19 -3l19 -3l36 -7h116l13 13q6 81 -29 139l-7 9l-67 68l-7 16q-16 29 -22 48l-10 7l-23 22l-42 81l-3 10q-9 16 -13 25q-29 42 -40 53.5t-21 33.5l-10 20l-38 80q-29 29 -45 55l-94 183l-3 10l-10 19l-51 100l-3 10q-10 16 -13 26l-13 22l-3 10l-55 106
+q-10 16 -19 39l-20 42q-9 16 -13 26l-22 45l-7 9l-112 264l-7 10q-22 42 -32 71q-3 10 -6 13q-13 48 -29 80l-42 39h-116q-65 -32 -110 -81zM986 1329q6 -45 19 -74l10 -19l9 -20q23 -48 32 -64l58 -119q13 -20 20 -36l42 -80l3 -10q9 -16 13 -26l13 -22q6 -39 16 -65
+l-23 -3h-409q-45 -3 -74 3q3 13 6 36l4 22q3 36 16 58l9 16q17 29 23 49l77 151l4 10l45 83l3 10l3 23q6 48 16 80z" />
+ <glyph glyph-name="B" unicode="B" horiz-adv-x="1238"
+d="M405 1804l-36 -20l-40 -37l-50 -23q-17 -10 -27 -14q-30 -20 -54 -26l-66 -34q-30 -23 -64 -60v-13l-3 -24q-7 -33 -7 -56q-6 -27 -3 -50q77 -14 120 -71v-1058l-3 -17l-4 -13l-3 -17q0 -13 -1.5 -23t-8.5 -34l-3 -23l-4 -23q-3 -37 -10 -61l-33 -70v-110l10 -10l23 -3
+h281l13 6q20 4 37 14l13 3l24 7l56 20q30 7 67 23q24 10 37 20l47 24q10 3 13 6l114 57l10 3q16 10 26 14l24 13q26 27 50 44l6 3q64 30 101 73q187 364 -114 611l-80 84q-23 10 -37 20l-10 3q-23 14 -43 17l-50 13v64l13 7h10l50 13l17 20l17 17l70 33q26 33 50 50
+q6 20 17 30q10 30 23 50l33 100l-3 10v204l-7 24l-10 23l-16 60l-54 53l-20 10l-30 17l-110 40h-341q-16 -10 -27 -13zM619 1644l24 -14l10 -3l36 -20l44 -47l6 -3l37 -40v-141l-7 -10l-20 -46l-13 -20q-13 -40 -33 -67l-64 -60l-6 -10l-87 -87l-17 -3q-37 0 -60 -7l-67 -7
+l3 10v110l4 27l3 197l4 20l3 167q3 34 23 54h177zM546 832l26 -30l10 -7q47 -20 74 -40l154 -153l6 -10l7 -4l57 -60v-173q-10 -7 -14 -14l-110 -113q-140 -80 -280 -70q-54 -10 -91 20v561l7 13q20 50 50 80h104z" />
+ <glyph glyph-name="C" unicode="C" horiz-adv-x="1566"
+d="M880 1817l-17 -4l-17 -3h-13q-34 -10 -84 -17q-33 -13 -57 -17l-10 -3l-63 -13l-57 -30q-74 -27 -117 -74l-20 -13q-30 -17 -54 -24l-10 -13l-23 -20l-17 -17l-17 -20q-16 -13 -27 -27l-30 -27l-3 -13l-7 -7l-10 -23q-10 -20 -20 -34l-30 -30l-33 -70l-14 -23l-3 -10
+l-20 -37l-3 -17l-4 -17l-3 -13q-10 -27 -17 -63l-3 -14l-4 -13l-3 -14q-3 -16 -7 -33l-3 -23l-13 -74l-4 -20l-3 -20v-371l3 -14l14 -43v-10l6 -17q4 -27 9 -43.5t11 -26.5q17 -64 37 -104q40 -74 94 -114q7 -43 20 -73l67 -17l13 -13q40 -37 81 -51l10 -6l66 -34l44 -10
+l84 -23h291l20 6q30 4 53 11h10l20 6l50 7l27 10l14 7l60 16l6 4q17 10 27 13l24 13l10 4l23 13l20 7q20 13 40 20q17 23 50 53q67 61 104 131v90l-13 14h-111l-36 -20l-41 -21q-46 -50 -100 -66q-147 -131 -344 -107h-111q-214 90 -297 264l-41 40l-6 20l-17 27
+q-3 10 -7 13l-3 13l-33 94v325l3 6l17 64v10l43 137v10l7 13q6 20 16 34l17 40l40 40l4 10l26 54l74 73q10 17 33 34l4 6l10 7q30 34 53 50q34 14 54 27l13 3l14 7l23 7l7 3l53 17h241l10 -7l30 -33l17 -17l50 -50h111l86 87v127q4 37 -3 60l-17 13l-36 10h-10l-67 17
+q-40 7 -67 4h-228z" />
+ <glyph glyph-name="D" unicode="D" horiz-adv-x="1535"
+d="M400 1784h-10q-35 -13 -64 -16l-210 -64q-26 -3 -42 -10l-51 -51l-3 -16q-10 -51 -10 -86q58 -16 96 -16l6 -6l16 -20l16 -67l4 -6q3 -35 12 -58v-1175l-9 -12q-23 -55 -61 -90v-102l13 -13l9 -6h13l35 -7h10l51 -9h13l25 -3q19 -7 35 -7q42 -6 71 -3h166l51 16h9l29 10
+h10l73 22l10 6q22 4 38 12t26 11q16 9 25 12l23 13q118 26 194 96q16 10 26 13q16 9 25 13l23 12q16 23 35 35l6 10l10 16q9 16 13 26l28 57l10 19l13 23q19 44 35 70l29 86l6 45v16q3 9 6 32l4 28v23q3 9 6 32v22l10 80v396l-10 45l-3 6l-3 13q0 13 -7 32l-3 28l-3 20
+l-35 105q-48 48 -67 102l-16 13l-10 13q-35 28 -54 54l-19 10l-35 19l-10 3q-16 9 -26 13l-143 70l-13 3l-115 35q-38 7 -64 16h-239zM641 1597l31 -16l10 -6l16 -7l9 -6l16 -6l9 -7l42 -19l9 -6q32 -16 41 -19l23 -13q15 -22 31 -31l3 -7l29 -25q19 -25 41 -41l10 -13
+l9 -16q19 -44 35 -69q3 -10 6 -13l3 -10l19 -34l4 -10q9 -16 12 -25l13 -22v-349q28 -342 -181 -532l-76 -76l-9 -3l-67 -32l-12 -3l-80 -29h-228q-9 16 -19 23v297l-3 35v266l-3 10v253q0 10 -3 13l-3 462q-7 38 -3 64l9 6q35 6 60 16h197z" />
+ <glyph glyph-name="E" unicode="E" horiz-adv-x="1201"
+d="M514 1817q-104 -23 -170 -91q-71 -29 -117 -81l-26 -56q-19 -32 -42 -49l-10 -19q-10 -23 -19 -36l-7 -23q-16 -36 -23 -58l-3 -17l-3 -13l-7 -13v-9l-10 -30q0 -6 -3 -23l-10 -29q-3 -26 -9 -42q0 -23 -4 -26l-3 -30l-3 -22l-3 -20v-23l-13 -81q0 -26 -4 -46v-465
+q4 -10 7 -26l3 -17v-13l3 -19l7 -23q0 -13 3 -33l3 -26l4 -22l16 -33l6 -10l56 -111l3 -9q10 -17 13 -26l13 -23l121 -121q32 -13 51.5 -24t36.5 -15l71 -26l13 -3l16 -3q27 0 56 -10l23 -3l22 -4q36 -3 59 -9h267l23 3q52 10 81 10v26l-6 23v9l-4 26l-3 23l-13 13l-16 7
+h-16q-23 6 -43 6l-13 3l-23 4l-35 3l-46 7h-10l-36 3l-9 3q-26 0 -43 7l-162 65l-121 120l-13 23q-6 19 -16 33l-3 9q-7 17 -14 26q-6 20 -16 33l-19 49q-4 16 -10 26l-10 39l-3 16l-3 33v36q0 6 -4 22q0 23 -3 39v36l-3 23q-3 55 0 72l273 19l20 3l19 4l27 3q19 3 32 3
+l46 7l19 3q16 0 26 3l52 4l10 6l59 29l16 17q10 55 -16 91h-62l-10 3h-88l-23 3h-94q-39 7 -65 4h-52l-13 3h-95l-23 3h-58v26l3 36l3 6v23l4 7q0 23 3 58l26 105v9l39 121q0 6 7 23l32 65q7 10 13 13l143 143l235 10q26 0 45 3l98 3v176q-42 13 -78 13h-316z" />
+ <glyph glyph-name="F" unicode="F" horiz-adv-x="1358"
+d="M864 1824h-157l-10 -3l-412 -3l-16 -3h-170l-10 -13l-9 -9q-22 -26 -41 -38l-19 -22v-180l22 -44q38 -72 41 -135v-615q32 -66 35 -129v-768q31 -29 47 -51l16 -3q34 -3 57 -9h31v12l10 38v9q9 57 6 95l6 334l3 19l3 327l4 26v66l6 6l19 3l16 3q37 13 66 13l15 3l13 3
+l28 3l19 4l22 3l16 3l22 3l63 6l22 3h29l22 4l69 3l16 3h15l22 3l67 3l15 3l70 4l22 3l91 3q22 28 16 63v91l-16 16h-205q-25 3 -47 -3l-280 -7q-22 0 -38 -3l-158 -3q-6 25 -3 44q0 48 3 66l4 199l3 22l3 249q6 28 3 50l22 19h9q23 3 41 6q26 10 48 10l12 3l22 3q29 6 51 6
+l15 4q38 6 63 6q13 3 32 6l50 3l13 3l19 4l28 3h19q38 6 63 6l13 3l113 16h10q25 6 44 6l9 3q35 4 57 10l12 13v9l7 25v10q6 31 6 56h-243z" />
+ <glyph glyph-name="G" unicode="G" horiz-adv-x="1577"
+d="M900 1816h-20l-10 -3l-74 -10l-10 -3q-26 0 -46 -4l-32 -13q-7 0 -20 -6l-52 -16q-26 -10 -42 -20l-10 -6l-42 -20l-23 -13l-10 -3l-35 -20l-20 -9l-29 -13l-29 -33q-88 -75 -127 -159l-30 -30l-6 -9l-13 -33l-13 -19l-3 -10l-39 -82l-7 -9l-6 -17q-17 -29 -26 -65
+l-4 -13l-3 -19q-13 -39 -23 -94l-3 -17l-13 -55v-10l-10 -39v-322l13 -42v-10l10 -26q3 -29 13 -52l3 -13l13 -36q0 -6 3.5 -12.5t6.5 -23.5l72 -146l35 -32l17 -72l55 -13q29 -13 42 -33l20 -13l36 -16q19 -10 22 -13l10 -3l20 -10l35 -19l23 -7l13 -6l62 -20h520l17 -16
+l35 -72l4 -13l3 -13l3 -16l3 -13q4 -16 7 -33l7 -19l3 -13l3 -20l16 -61h143l-3 9l-6 169q0 20 -4 33l-3 153l-3 19q0 23 -3 39v36l-4 7l-3 88l-3 16l-3 65l-4 23v16q0 26 -3 45v30l-3 10v42l-3 6l-4 88l-16 16l-45 7l-20 3l-29 3l-49 4l-3 -17q-10 -22 -10 -42
+q-7 -19 -10 -45l-6 -33q-4 -19 -4 -32q-3 -20 -6 -23l-3 -20q-4 -39 -10 -65q-10 -6 -13 -13l-59 -58l-6 -4q-20 -26 -39 -42l-23 -6q-45 -20 -78 -26l-20 -4h-201q-85 -9 -147 33q-100 32 -130 123l-35 33l-33 98v422l26 98l10 36l36 71l3 10q10 16 13 26l13 23l3 10l13 22
+l3 10l20 36l10 6q13 17 22 23q20 46 36 72l186 185l16 20l23 19l71 36l10 3q16 10 26 13l23 13h208q84 -39 133 -104h143l7 3l62 17q26 114 0 208l-72 19q-10 0 -13 4q-10 0 -13 3h-10l-26 6q-39 13 -68 17h-280z" />
+ <glyph glyph-name="H" unicode="H" horiz-adv-x="1786"
+d="M0 1726v-113l103 -103v-182q3 -20 3 -33v-232q7 -33 3 -56l7 -872l3 -13v-149h33l24 3q53 10 82 10l20 17q10 16 14 26l19 37l4 10l3 76l3 10l4 112l3 10l3 110l4 23l3 46v60l3 10l4 119l3 13l3 77l20 16l162 33l216 7l23 3h76q27 0 47 4h109l10 3h69q27 3 50 -3l3 -24
+l4 -23l3 -76q0 -10 3 -13l14 -361l3 -10v-100q3 -20 3 -33v-86q7 -20 3 -40q116 -39 163 4q16 33 20 43l13 23l7 291l3 20l3 242q0 27 4 46v100l9 3l24 3l23 4l23 3l23 3l37 4q20 16 23 40l3 59l3 27q7 43 4 69h-60q-46 -3 -76 4l3 92l4 20l3 109q0 20 3 34l4 126l3 13
+l16 56l4 13l20 80l3 6l26 83l4 14v13q10 43 10 73l-24 -4l-59 -6q-143 3 -252 -60v-10q0 -40 -3 -66v-46q-4 -63 -4 -103v-66q-6 -20 -3 -40v-90l-3 -13v-126l-4 -10v-43q0 -30 -3 -53h-795l-3 20v17l3 23v69l3 27v69l4 24v63l3 23v96l3 16l7 153l3 10v30q7 23 4 43
+q6 29 3 53l-43 10l-17 3h-295z" />
+ <glyph glyph-name="I" unicode="I" horiz-adv-x="545"
+d="M81 1769l-81 -81v-188q37 -27 34 -64v-67l3 -23v-97l3 -7l4 -218q6 -40 3 -67l3 -155q0 -16 4 -26v-111l3 -24v-73l3 -44v-71q-3 -26 4 -50v-121l3 -23v-74q3 -10 3 -30q7 -30 7 -54l4 -17l3 -30l3 -47l4 -13q3 -20 6 -54l4 -60q23 -27 53 -20q57 -10 94 13l17 74
+q20 54 17 97l3 27l14 671l3 17l3 272l4 20v90q0 27 3 47l10 420l3 16l4 57q0 17 3 27v84l-37 10l-147 3z" />
+ <glyph glyph-name="J" unicode="J" horiz-adv-x="649"
+d="M227 1825q-25 -16 -44 -23l-32 -22l-73 -73v-105l67 -67l6 -22l3 -23l22 -79v-1257q-6 -13 -9 -26q-16 -41 -22 -70l-7 -9l-16 -35l-6 -10l-38 -79l-118 -118l-67 -3l-19 -3h-32l-19 -4h-38l-10 -3l-111 -3q3 -140 96 -220q127 -9 229 45q25 10 41 19q29 32 57 48l45 19
+l3 6q51 48 73 102l3 6l42 45q3 10 6 13l3 9l10 16l3 10l19 35q7 19 16 32l29 79l3 13l3 13l3 12l16 54q0 7 1.5 15t5.5 11q0 9 6 25q6 26 6 45l3 9l4 29l3 16v19q3 13 4.5 25.5t4.5 35.5v12q10 48 10 80v1155q0 22 -3 38v42l-3 19v22l-4 13q0 47 -6 79h-41z" />
+ <glyph glyph-name="K" unicode="K" horiz-adv-x="2039"
+d="M182 1841l-19 -9l-29 -13l-9 -13l-10 -6l-63 -64l-13 -69v-35q38 3 67 -7v-19l3 -9q3 -19 6 -48v-22q10 -51 7 -79v-194l3 -12v-238l3 -26l6 -914l3 -9v-67l19 3l16 4l16 3l26 3l22 3l9 7l48 47l3 10l10 19l19 35v412q-7 41 -4 70q-6 28 -3 51l-3 28l-3 127q-6 48 0 83
+l16 -4q60 -3 101 -22l45 -25q44 -19 69 -35l10 -3q16 -10 25 -13l29 -16l22 -9q22 -10 35 -19l19 -13l32 -29l51 -25q25 -10 41 -19l28 -16q16 -9 29 -23.5t28 -20.5l10 -7l79 -38q35 -19 57 -44l70 -35q26 -29 51 -45l19 -9l16 -6q35 -19 54 -45l6 -3q45 -16 76 -48l10 -9
+l19 -13q54 -22 89 -60l6 -3q29 -16 48 -22l12 -10q19 -22 38 -35q57 -22 92 -63q57 -23 96 -61l19 -12q54 -19 85 -57h140l105 104q25 23 41 42v76l-10 9l-16 7q-47 6 -76 15q-50 7 -85 19l-102 51q-16 10 -25 13q-22 9 -35 19l-10 3l-92 48q-22 25 -44 38q-10 3 -13 6
+q-9 3 -13 6l-22 10l-47 25q-32 13 -51 26l-108 54q-13 9 -19 19l-22 19q-19 6 -48 22l-9 6l-26 10q-66 41 -82 60q-45 19 -70 38q-25 26 -51 38l-19 10l-19 9q-28 19 -54 26l-22 12q-41 45 -92 64l-6 3q-19 22 -38 35l-10 6l-19 10l-19 9l-22 10l-10 6q-38 16 -60 35
+q-6 41 -3 70l92 89l9 3l57 32q39 38 80 54l16 9l73 70q57 22 95 63l63 32q61 25 99 63l19 13q25 10 41 19l6 3q54 23 86 51v98q3 26 -6 48q-83 57 -184 41l-19 -9q-16 -10 -26 -13l-22 -13q-10 -6 -13 -12l-60 -61q-6 -9 -13 -12l-117 -118l-19 -6q-22 -16 -38 -24t-29 -24
+l-6 -3q-19 -25 -35 -36t-25 -15q-67 -38 -83 -60l-16 -16q-51 -57 -114 -79l-6 -9q-13 -10 -19 -20q-13 -9 -19 -19l-29 -25q-60 -22 -95 -63h-64l-15 22v35q0 47 9 111l3 31l3 32l4 32v16l3 9l9 403q-76 57 -162 45z" />
+ <glyph glyph-name="L" unicode="L" horiz-adv-x="1605"
+d="M117 1804l-10 -6q-15 -9 -25 -13q-31 -15 -50 -31v-223l6 -19q0 -7 7 -22q6 -38 15 -63l3 -1209q-37 -57 -31 -113q13 -82 69 -129l25 -7h95q38 23 66 32h582l69 -32h110l19 23l4 9q9 16 12 25l13 22l3 41v16l3 34l3 10l3 47v57l-9 -3l-22 -4q-19 0 -22 -3h-22
+q-32 -6 -57 -6l-57 -31l-9 -4l-142 -3l-22 -3l-393 -9q-44 -3 -72 3l3 69l3 13v53l3 28l6 762q7 28 3 50l4 10l3 91l3 10l3 94l3 19l3 88l3 16v34l4 13l3 107q6 19 3 31v139q-10 9 -22 13h-167z" />
+ <glyph glyph-name="M" unicode="M" horiz-adv-x="3228"
+d="M44 1827v-110q49 -49 66 -102q76 -63 106 -143l40 -40l3 -13l7 -23l26 -77l7 -10l23 -46v-391l-6 -20q-10 -30 -14 -53l-10 -43l-3 -17l-66 -192l-4 -14l-20 -43l-19 -36l-63 -130l-7 -6l-33 -73q-17 -10 -23 -20l-44 -43v-186l47 -46h186l13 13l36 73l7 26l3 17
+q10 33 14 56l13 50l3 7l20 53q7 36 17 59l3 10l7 34q6 16 6 29l14 50q9 23 13 40l46 133l4 16l9 37l4 13l3 13q17 57 20 80l30 89l3 14l23 83l17 -4l50 -13l235 -235l43 -44q10 -16 27 -29l63 -60q10 -17 26 -30q24 -27 44 -40l6 -10l43 -43l10 -3l50 -27q30 -20 46 -40
+l37 -19l10 -4l36 -20l160 -63h325l53 17l23 3l13 4l57 16l13 3l13 7l83 27l10 6l46 23q34 14 53 27l83 40l40 40l70 33l73 73q33 16 43 20l23 13l10 10l13 10l10 13l14 10l6 10l17 17q23 16 33 33l17 16q36 30 56 57l66 16l4 -16l6 -47v-20q0 -10 4 -13l6 -86l3 -10
+q4 -37 10 -60v-16l7 -24l3 -19q4 -40 14 -97l3 -26q7 -20 10 -50q0 -20 3 -23l4 -43l46 -186l20 -17h182l7 7q46 17 73 43v120q-17 26 -23 46l-4 7q-49 49 -69 102l-43 50l-20 37l-4 10l-43 86v494l4 17l3 16l16 57v10l44 129l3 17l7 13l26 86l3 13v14l4 19v20l3 27
+q0 20 3 33l4 70l3 20l-63 16q-10 0 -13 4l-17 3q-36 3 -60 10h-29l-14 -53q0 -10 -10 -33q-3 -20 -10 -34l-19 -56l-4 -13l-56 -143l-10 -20q-10 -23 -20 -36l-10 -20l-10 -27l-13 -20q-7 -13 -17 -36l-33 -66q-27 -27 -43 -50l-27 -57l-335 -335l-10 -3l-53 -26
+q-29 -30 -49 -44q-10 -3 -27 -13l-23 -13l-10 -3l-149 -77l-10 -3q-17 -10 -27 -13l-23 -14h-245l-50 27l-10 3q-17 10 -27 14q-16 10 -26 13l-30 16q-47 47 -100 67l-262 262l-13 10l-17 20l-36 36l-10 13q-10 7 -16.5 15.5t-13.5 11.5q-6 10 -13 13l-10 13q-27 20 -56 54
+q-24 26 -40 39l-4 7l-19 17l-27 26l-40 76l-63 63q-30 44 -43 80q-50 46 -70 103l-33 33l-40 76l-9 10l-7 4l-7 9l-49 50q-34 77 -93 126l-14 17q-16 46 -43 76h-255z" />
+ <glyph glyph-name="N" unicode="N" horiz-adv-x="2620"
+d="M28 1815l-18 -17v-155l110 -110q24 -21 48 -65l28 -49l7 -6q24 -18 38 -38q65 -59 96 -131l7 -24l27 -86v-564l-7 -37l-3 -14l-7 -38q0 -7 -7 -24q0 -21 -7 -34q0 -18 -3 -35l-17 -48l-4 -14l-27 -86l-7 -10l-21 -69l-7 -58l-3 -38v-38q-10 -55 -7 -86q79 -27 148 -20h38
+q10 17 27 31l28 27l3 21q10 27 17 69l11 30v14q13 62 13 103l4 11l3 44l4 24l3 24q0 38 7 62v11l3 27v21l4 10v72l3 21l4 161q0 28 3 49l4 141q-4 79 10 134l52 -11l48 -7l72 -72q41 -48 93 -69q31 -13 48 -37l172 -107q31 -21 48 -41l7 -4q65 -31 103 -68l20 -11
+q18 -10 21 -13l10 -4l97 -48q27 -31 58 -48q10 -4 14 -7l10 -3l38 -21l10 -3q17 -11 28 -14l24 -14l34 -34l10 -4q28 -17 49 -24l24 -14q17 -6 29 -11.5t29 -15.5q31 -34 62 -52l21 -10l51 -24l10 -7l21 -10l93 -45q148 -113 179 -268h31l27 7q41 3 96 20l14 7l55 18
+q14 13 17 30v317l-3 10l-31 58v956l3 14l4 20q7 21 7 35q10 34 13 58l4 17l10 55q0 7 4 24q10 31 10 55l7 21v14l10 38q3 24 5 34t2 31q10 52 7 86l-14 -4l-96 -3l-14 -3h-58q-18 -7 -31 -4h-31q-35 -7 -59 -3h-10l-24 -4l-17 -7q-28 -3 -45 -10v-17l10 -59v-20l4 -28l3 -24
+q52 -51 72 -110l14 -955l4 -14v-168q0 -31 -4 -55l-10 3l-100 17l-10 7l-24 10l-7 7l-24 11q-10 3 -14 6l-17 7q-21 14 -41 21q-28 34 -55 48q-35 14 -55 28q-66 24 -103 68l-55 28q-35 20 -55 44l-21 11l-62 34l-24 24l-17 11l-7 6q-34 14 -55 28l-52 48l-7 10
+q-24 21 -37 38q-48 31 -83 45q-65 75 -141 106l-17 14l-141 141q-65 76 -141 103l-106 107l-24 24l-97 99q-7 11 -13 14q-7 11 -14 14l-17 17l-14 10l-96 97q-21 27 -42 44l-120 121q-76 41 -155 31z" />
+ <glyph glyph-name="O" unicode="O" horiz-adv-x="1647"
+d="M651 1835l-22 -7q-15 0 -37 -8q-22 0 -36 -7l-33 -4l-26 -11q-29 -18 -51 -25l-11 -8q-18 -7 -29 -14l-40 -18l-180 -180q-3 -10 -7 -14q-4 -11 -7 -15l-4 -11l-29 -58l-7 -11l-30 -62l-7 -11q-18 -37 -22 -48l-22 -58q-7 -33 -18 -59q0 -22 -7 -36v-11l-8 -22
+q0 -15 -7 -37q0 -22 -7 -36l-4 -33v-351l4 -11l7 -40l4 -11q3 -29 11 -48l7 -51l4 -15q11 -25 14 -43l15 -37l3 -15l4 -14l7 -11l19 -40l7 -11l44 -92q80 -98 179 -139q22 -22 33 -36q153 -81 303 -73q307 -26 512 153q102 40 132 132q98 84 117 194q10 18 14 32l7 8
+q8 25 19 40v15q3 7 7 25l4 26l3 18l4 22l4 33q3 33 11 55l-4 402l-4 11l-3 22l-4 33l-4 21l-3 19v14q-11 55 -11 92l-30 77q-10 47 -32 80l-11 29q-11 18 -15 29l-29 59l-22 18l-18 22l-22 22l-8 4q-18 22 -36 36l-11 4l-22 11l-26 14l-11 4l-91 44h-11l-59 18q-25 4 -43 11
+h-282q-18 -3 -36 -7zM903 1616l66 -33l18 -15l69 -69l8 -11l91 -88q11 -29 22 -48l15 -25l7 -26l33 -91v-585l-8 -7q-10 -29 -21 -44q-11 -29 -22 -48l-33 -65l-4 -11q-11 -19 -15 -30l-14 -25l-18 -18l-8 -4q-69 -29 -113 -77l-77 -36h-179q-51 3 -84 -4l-7 7l-19 8l-7 7
+q-29 11 -47 22q-22 25 -41 40q-18 22 -33 33l-18 22l-84 84q-4 11 -7 14l-18 41l-11 22l-15 25l-4 11l-22 40l-36 110v431l62 154q7 22 18 36l37 37l36 77l8 7q25 22 58 55l18 7l8 7q29 11 47 22l26 11l51 30h267z" />
+ <glyph glyph-name="P" unicode="P" horiz-adv-x="1382"
+d="M265 1812l-15 -4l-34 -11l-107 -37l-41 -41l-11 -3l-60 -30q-18 -19 -26 -41q0 -26 -4 -45v-11l-3 -18q-4 -41 -4 -67h71l7 -8q0 -15 7 -41q0 -29 8 -48v-1717l-4 -14l-15 -93h41l11 3l34 4q44 8 74 8l60 59l3 19q8 14 8 29l26 93l3 30v93q0 18 4 30l4 293l4 11v138l3 11
+v145l4 26v119l4 26v148l3 8v152l4 26v141l4 19v126q0 30 4 52v112l22 22q30 30 56 48q37 15 59 30h230l8 -7q37 -34 56 -60l22 -41l11 -22l11 -30q15 -18 19 -37l11 -18v-316l-37 -75l-104 -104l-23 -11q-18 -7 -29 -15l-82 -29q-8 0 -26 -8q-30 -11 -48 -15
+q-34 -11 -60 -15q-7 -74 8 -126h11q33 -15 59 -15h279l22 23q34 37 56 55q15 23 48 49l82 81l22 41q30 56 63 89v12l23 92v12l11 52v275l-30 89l-4 15l-7 11q-7 22 -19 37l-3 11l-23 41l-3 11q-11 19 -15 30l-15 26q-268 152 -543 126h-115z" />
+ <glyph glyph-name="Q" unicode="Q" horiz-adv-x="2140"
+d="M392 1828l-40 -12h-10q-28 -10 -50 -13l-68 -34l-10 -6l-25 -10q-28 -19 -50 -25l-46 -25l-10 -9q-3 -6 -19 -19l-31 -34l-53 -50l-37 -72l-72 -75q-237 -465 -25 -886q25 -19 37 -37l4 -10l25 -50l68 -68l25 -53l13 -16q21 -25 40 -41l35 -37l65 -31l97 -97l19 -12
+q49 -22 84 -60l9 -3l28 -15q44 -19 69 -35l9 -3q19 -9 31 -12l7 -3l78 -25l31 -19l9 -3l28 -16l122 -50q37 -9 69 -28l12 -6l100 -34l12 -7l213 -68l12 -3l22 -7l16 -3l62 -15l6 -4l72 -25q31 -9 53 -12q25 -9 44 -13l12 -3l16 -3l15 -6h13q16 -6 23.5 -6t10.5 -3l16 -3
+l22 -4l18 -3l44 -6q28 -3 47 -9h172l56 28l9 6l59 28l85 84l3 16q9 50 9 84l-19 -3h-18l-13 -3l-22 -3l-22 -3l-34 -3h-468l-12 6l-50 12h-10q-37 13 -53 13l-103 34l-12 6l-147 47l-9 6h-10l-246 107q-44 18 -69 34q-22 28 -50 40l-46 25q-63 22 -100 66q-63 25 -103 69
+l-10 3q-46 22 -65 37l-6 9l-144 144q-6 9 -12 12l-138 138l-6 15q-6 10 -16 28l-21 47l-7 10l-53 106l-3 9q-9 16 -12 25l-13 22v296l13 32l3 12q12 31 15 53l35 34l3 10l9 15l25 44l78 81q59 69 131 97l3 6q19 16 28 28l13 3l37 16q28 6 50 16h134q97 9 169 -41
+q84 -31 106 -109l34 -35l32 -90v-371l-10 -35l-3 -15l-6 -16l-13 -62l-3 -7q-28 -59 -65 -93l-31 -66l-35 -34q-34 -28 -53 -53l-50 -50q-6 -6 -22 -16l-56 -28l-15 -15q-10 -53 15 -88h203l9 10l4 6l124 125q28 31 50 47q13 18 28 31l3 9l25 50l41 44q140 256 128 515v109
+l-9 25l-19 50l-3 12l-6 22l-7 19q-15 40 -22 68l-37 38l-3 6q-28 66 -75 106l-6 3q-63 25 -100 66l-13 3l-12 3l-84 28l-19 3l-16 3l-12 4h-13l-18 6q-28 3 -50 9h-237z" />
+ <glyph glyph-name="R" unicode="R" horiz-adv-x="1525"
+d="M386 1796l-13 -4l-95 -30q-45 -27 -72 -37l-37 -38q-75 -30 -119 -85v-118l17 -17q34 -24 51 -55v-1269q-14 -51 -34 -81v-153q31 -24 41 -27l37 -20h160l17 13l10 584l3 20v136q0 51 7 85q37 -14 64 -17l129 -129l11 -24l6 -10q11 -27 28 -48q10 -6 13 -13q10 -7 14 -14
+l220 -217l4 -7l23 -23l38 -34l34 -72l108 -108l4 -10l13 -62l17 -6q27 -4 44 -11h122q48 -3 79 4l44 75v101q-11 31 -14 55l-30 10q-28 3 -45 10l-624 624q-3 45 7 78l13 11l14 6q20 4 34 11l7 3l51 14l71 37l54 54q109 183 105 367q31 281 -163 444l-13 4l-75 27h-251z
+M742 1719l68 -72l12 -8q16 -20 28 -28v-344l-36 -72q-8 -12 -16 -16l-44 -44q-12 -8 -16 -16l-128 -128l-12 -4q-20 -8 -32 -16l-20 -12l-28 -12l-20 -12q-32 -12 -52 -24l-76 -20l-8 4v88l4 12l8 392l4 12l4 168q48 112 152 152h208z" />
+ <glyph glyph-name="S" unicode="S" horiz-adv-x="963"
+d="M368 1792l-35 -38q-15 -12 -25 -25q-34 -28 -53 -53l-32 -63l-31 -32l-13 -19q-3 -9 -6 -12q-3 -10 -6 -13l-4 -13l-9 -18l-9 -16q-13 -32 -26 -50l-6 -22l-9 -23q-7 -28 -16 -50v-170l6 -12l88 -243q7 -9 16 -28l22 -47q10 -16 13 -25l37 -73l4 -9l9 -19q10 -16 13 -25
+l12 -22q7 -16 13 -25q0 -7 6 -19l25 -82l19 -35l19 -37l6 -26l7 -12l15 -51l4 -12v-161l-10 -25q-3 -25 -9 -41l-63 -15l-224 6q-19 3 -50 6q-22 0 -57 3v-38l3 -9v-22l4 -9l6 -92l6 -3l16 -16l9 -3l66 -31l22 -6l54 -19h186l18 9l51 25l56 13q13 38 16 66q44 41 66 94
+q3 19 10 32q0 6 1.5 12.5t7.5 21.5q6 41 16 70v273l-6 19v10q-10 25 -13 47l-3 13l-22 78q-10 19 -13 35l-47 138l-9 19l-19 35l-32 97l-9 22l-22 44q-10 16 -13 29l-19 59l-3 13l-34 69v233l9 13q13 12 22 19l32 31l15 19q22 19 35 35q44 18 69 34h35l6 3h38l19 3
+q25 0 44 4l119 6l-3 69l-3 10l-6 91l-13 12h-346z" />
+ <glyph glyph-name="T" unicode="T" horiz-adv-x="1579"
+d="M1128 1798h-235l-24 -3l-575 -4l-17 -3h-208q-34 3 -59 -14v-125l7 -34q7 -17 7 -31l550 -4v-27q-3 -21 -3 -35v-152l-3 -28v-152q-4 -42 -4 -70v-152l-3 -10v-225l-4 -11v-529l7 -10l17 -39l7 -10l42 -86q145 -139 325 -122q135 -10 232 56q17 21 31 31l4 21q0 20 3 24
+l10 86v21h-17l-24 4l-90 3l-17 4h-42q-10 0 -14 3h-59q-17 7 -31 4q-3 6 -10 11.5t-21 19.5q-21 24 -38 38l-59 59l4 1045l3 24l7 135l4 7v41l3 21l14 4l28 3l86 7l24 4l59 3l11 3l55 4q10 0 31 3l28 4q41 0 69 7q28 0 50.5 1.5t60.5 8.5l69 4q28 38 55 55v10l7 28v10
+q7 35 7 63h-346z" />
+ <glyph glyph-name="U" unicode="U" horiz-adv-x="2769"
+d="M223 1677l-71 -3q-10 -3 -27 -3q-20 0 -51 -7q-40 -10 -67 -10l-10 -27l-4 -14l-3 -17v-172l17 -47l3 -14l10 -23q4 -11 7 -28q10 -20 14 -37l17 -57l10 -14q20 -54 61 -91l6 -10l24 -47q14 -34 27 -54l41 -85l6 -10q21 -27 38 -41l6 -10l10 -23l27 -48q48 -47 65 -101
+q77 -64 111 -145l88 -88q7 -10 14 -14l300 -304l68 -34l51 -44l57 -27l10 -6q20 -7 34 -17l10 -4q51 -23 115 -44h216q7 4 15.5 4t15.5 3t23 7q21 0 36 5t42 8l24 4l111 37l10 13l17 17l21 14q57 23 94 64l10 3l54 27q21 17 34 34l58 58l10 6l17 17l50 51l34 71
+q75 64 105 139l37 40l102 196l3 10l10 21l54 104q7 21 17 34l34 71q10 20 13 24l24 54l3 17l17 47q7 27 17 44l4 13l10 31l3 13l10 31l7 13l27 85v115q3 27 -3 50l-10 11l-11 3l-17 10l-37 20l-20 4l-57 7l-27 3h-24l-7 3l-54 4l-10 -31v-10l-10 -30q0 -41 -7 -68
+q0 -20 -3 -34l-4 -44l-3 -23q0 -37 -7 -61v-10q-3 -31 -3 -54l-4 -14q0 -37 -6 -61q-4 -17 -7 -33l-10 -28q-4 -23 -10 -40l-4 -27q-10 -20 -13 -37l-4 -10q-10 -21 -10 -34l-10 -24q0 -7 -5 -13.5t-12 -23.5l-44 -85l-7 -20l-6 -10l-34 -105l-37 -37q-17 -30 -24 -51l-7 -6
+q-13 -21 -26.5 -34.5t-20.5 -26.5l-10 -20q-10 -27 -24 -44l-71 -71l-17 -17l-64 -64l-7 -4q-64 -30 -104 -71l-14 -3l-84 -31h-294l-102 34l-40 41l-65 30q-50 51 -108 71l-378 379l-14 23q-7 21 -17 34q-30 47 -67 78l-7 7q-17 37 -20 40l-4 10l-20 37l-3 11
+q-10 16 -14 27l-13 23q-24 17 -38 37l-3 11l-10 20l-20 37l-4 10q-10 17 -13 27l-14 24l-3 20v47l-4 24v61l-3 17v61q0 20 -3 33v92l-4 27v71q-13 23 -54 13q-30 -7 -54 -7z" />
+ <glyph glyph-name="V" unicode="V" horiz-adv-x="2953"
+d="M185 1827q-57 -30 -90 -63l-24 -3q-23 -10 -43 -10v-10q-23 -81 -13 -144q23 -50 46 -80l70 -33l231 -231q23 -20 37 -37l120 -120q23 -20 37 -37l36 -36q20 -24 40 -37l10 -10l10 -10q10 -17 27 -30l77 -77q17 -47 43 -77l154 -153l17 -20q20 -50 50 -84l56 -57l17 -20
+q17 -10 23 -20l34 -43q13 -33 27 -53l100 -101q40 -90 113 -150q40 -70 47 -137h10q23 -10 40 -13h134q53 50 66 67l14 10q30 36 60 60l17 20l16 30q10 27 27 47q67 60 97 130l13 17l54 53q43 90 110 144l20 36l13 30l13 17l31 33l10 20q10 27 23 44l27 30l26 43
+q14 34 40 57l50 87q27 23 41 50q36 67 60 83q23 64 70 107q10 17 13 27l10 20q17 30 27 37q20 20 43 63l4 10l30 64q13 20 20 40l10 36q10 20 13 37q17 57 20 80q20 20 27 40q-27 -13 -40 -26q-144 100 -304 86l-17 -16l-3 -7l-4 -17l-6 -53l-4 -20q-3 -20 -6 -23l-10 -84
+q-4 -7 -7 -20l-20 -53l-3 -14q-7 -30 -20 -50q-4 -10 -7 -13l-3 -10l-14 -24l-3 -10l-20 -36l-3 -10l-14 -24l-3 -10l-10 -20l-17 -26q-10 -27 -20 -40q-10 -27 -20 -44l-17 -30q0 -7 -10 -23q-10 -17 -13 -30l-57 -114q-23 -30 -43 -47q-20 -46 -37 -73l-13 -10
+q-30 -37 -54 -54l-33 -70l-30 -30q-27 -40 -40 -76l-94 -94l-6 -3l-7 -10l-53 -54h-104l-3 7q-57 47 -80 107l-7 13l-244 244q-26 60 -57 93l-16 17q-10 7 -14 13l-53 54q-10 6 -13 13l-37 37q-7 10 -13 13l-151 154q-23 50 -46 80l-201 200l-40 77q-67 54 -93 124l-14 16
+l-63 64q-3 10 -7 13q-10 23 -20 37l-20 53q0 7 -7 20l-16 54q-10 6 -14 13h-120z" />
+ <glyph glyph-name="W" unicode="W" horiz-adv-x="3098"
+d="M327 1857l-20 -3h-20q-37 -7 -60 -7q-17 -10 -27 -13l-37 -20q-16 -10 -33 -30q-37 -40 -63 -60l-4 -24q-3 -13 -6 -33q0 -17 -2 -28.5t-12 -28.5l-23 -13v-17q27 20 53 27q10 -27 27 -57l23 -26l17 -20l13 -21l7 -16q13 -34 27 -54q13 -33 26 -53l7 -27l7 -13l16 -53
+q10 -30 24 -50l60 -121l7 -10q6 -20 16 -33l10 -23q10 -17 14 -27q10 -17 13 -27l7 -23l20 -53l3 -17l10 -20q10 -24 20 -37l17 -40q13 -20 30 -63q10 -20 16 -47l61 -144q20 -53 26 -83l7 -10q10 -23 20 -37q0 -6 10 -23l13 -37l4 -13l13 -37l7 -23l30 -94q6 -23 6 -43
+q7 -20 7 -43l7 -34l3 -20l3 -23l4 -24l3 -23q0 -20 5 -35t12 -22h153l10 4l54 26l26 30l10 20q10 27 20 44l64 120q6 20 16 33l20 47l44 50l27 54l16 23q37 37 54 80l6 13q44 40 64 90l13 24q63 53 93 120l10 17l51 50l23 3l73 13l7 -10l13 -66l7 -7q13 -33 27 -53l50 -107
+q20 -30 26 -60q17 -30 20 -57l10 -30l47 -97l4 -17q10 -23 13 -40q17 -46 20 -76l23 -90l4 -14v-13l3 -20l10 -54l17 -6q26 -4 43 -10q10 0 30 -4l43 -6h20l14 -4q50 0 83 -6l4 16l3 44q10 53 10 83l17 27l3 10l20 37l20 46q17 27 23 57l7 13l17 54q20 47 36 73l44 87
+q3 10 8 20l15 30q10 17 13 27q11 16 14 26l13 24q4 10 7 13q3 10 8 20t9 14q3 10 6 13l37 73q13 34 27 54l40 83l43 50q10 17 13 27l20 37l4 10l23 46l23 44l7 20l70 96q30 84 84 137l10 20l20 37l3 10l17 33q16 30 23 50q77 27 124 84q50 133 -4 257l-3 3l-23 4l-17 3
+q-17 0 -34 3l-66 10q-24 -10 -54 -16l-10 -7l-36 -10l-7 -3l-70 -17l-3 -14q0 -13 -3.5 -23t-6.5 -33l-4 -24q-3 -33 -13 -56l-4 -10l-3 -24l-7 -16q-3 -37 -16 -60l-17 -34q-10 -17 -17 -40l-26 -77q-4 -16 -10 -26q-10 -17 -14 -27q-10 -17 -13 -27l-13 -23l-4 -10
+l-86 -174l-7 -10l-17 -36l-6 -10l-44 -90l-7 -7q-23 -20 -36 -40q-4 -10 -14 -30q-10 -17 -13 -27q-10 -17 -13 -27l-14 -23q-3 -10 -6 -13l-10 -20l-24 -50l-10 -17l-16 -33q-14 -34 -27 -54l-40 -83q-7 -17 -13 -27l-10 -27q-4 -50 -17 -86q-40 -4 -67 6v10l-7 17
+q-3 27 -10 43l-6 10l-40 77q-4 10 -7 13q-3 10 -7 14q-3 10 -6 13l-17 37q-10 23 -20 37l-117 280l-3 13l-7 14l-30 96l-3 7l-17 53l-3 27l-4 37l-3 6v21l-3 26l-4 24l-13 3l-13 3l-14 4l-13 3l-33 7l-44 3q-53 10 -83 10v-10l-20 -63q-3 -20 -10 -34l-20 -70l-10 -7
+l-24 -23l-26 -50q-14 -33 -27 -53l-40 -84q-23 -43 -53 -67l-10 -23l-20 -40l-40 -43l-14 -24l-3 -10l-20 -36q-34 -37 -44 -54q-23 -53 -60 -83q-26 -70 -70 -110l-3 -7q-7 -37 -17 -60h-63l-3 13l-17 57q-7 20 -17 33l-3 10q-10 17 -14 27l-20 37l-60 160l-6 10l-10 23
+l-7 7l-10 27q-10 16 -13 26l-14 24l-6 23q-20 47 -27 80l-17 37q-23 37 -33 73l-23 74l-14 23l-3 10l-20 37l-24 73l-10 24l-63 190l-3 16l-10 27q-14 34 -17 57l-10 23l-3 14q-17 43 -20 63q-10 20 -14 37l-3 10q0 20 -7 53l-6 104q-17 16 -37 10z" />
+ <glyph glyph-name="X" unicode="X" horiz-adv-x="2552"
+d="M6 1821l-13 -3l-74 -24q-26 -3 -43 -10q-30 -130 13 -236l37 -44l17 -13l36 -23l14 -10q40 -27 60 -47h73l30 -30l13 -17q17 -10 27 -26l7 -7l16 -17l7 -3l7 -10q30 -23 46 -46l7 -7q40 -30 70 -40l10 -7q16 -10 30 -26l76 -77q17 -10 27 -13q20 -14 37 -20l10 -4
+l110 -110q33 -16 43 -20l23 -13l47 -47q53 -60 127 -90l63 -63l13 -10l27 -16q36 -14 60 -37v-67l-54 -53l-10 -7l-123 -126q-10 -7 -13 -14q-27 -23 -40 -40l-7 -3q-16 -20 -40 -43l-10 -7l-10 -13l-10 -10l-13 -10q-23 -27 -43 -44l-7 -10l-20 -16l-40 -44
+q-77 -33 -127 -86v-110q110 -70 274 -50l13 13q27 24 40 44q17 33 20 43l13 23l107 107q16 46 43 76l70 70l3 7l57 53l17 37q30 57 70 87h66q47 -47 100 -67q17 -10 24 -20l90 -90l16 -10q13 -3 23 -10t30 -13l4 -7l16 -17l54 -50l10 -3l16 -10l37 -20q10 -3 13 -10l20 -20
+q27 -30 50 -43l17 -10l50 -27l27 -26l13 -10q20 -7 33 -17q20 -7 34 -20l30 -27l56 -33q157 -20 240 83v114q-7 9 -13 13l-87 30l-23 10q-47 20 -73 36l-34 34l-60 30l-50 43l-53 27l-53 43l-60 30q-50 50 -107 70q-60 73 -137 103q-30 34 -56 50l3 14v129l14 17
+q16 13 26 27q50 43 63 60l150 150q10 6 14 13l120 120l36 73l30 30q24 20 37 37l130 130q26 23 40 43q36 30 53 53l20 4v20q27 50 17 96q-24 10 -47 10h-336l-17 -53l-3 -17l-14 -30l-6 -10l-57 -113l-3 -10q-10 -17 -14 -27l-13 -23l-67 -66q-36 -84 -103 -140l-13 -20
+l-4 -10q-13 -20 -20 -40l-103 -104l-13 -20q-30 -66 -80 -110h-137l-83 84q-40 36 -87 53l-10 7l-136 136l-23 14q-30 16 -50 23q-7 10 -27 27q-20 26 -40 40l-7 10l-16 16l-10 7l-14 13q-20 27 -53 53q-20 20 -43 27l-40 23l-124 124q-26 23 -40 50q-23 53 -60 83l-6 20
+q-4 27 -10 47v13l-20 97l-13 16h-234z" />
+ <glyph glyph-name="Y" unicode="Y" horiz-adv-x="2683"
+d="M477 1741q19 -38 44 -60q41 -31 79 -44l6 -9l82 -82q13 -13 47 -28l29 -13l104 -104l9 -3l51 -25l69 -67q22 -25 41 -37q31 -19 57 -29l135 -135q16 -10 25 -13q16 -9 25 -12l23 -13q15 -16 31 -32l95 -94q18 -13 34 -19q32 -13 51 -32q6 -9 12.5 -17t12.5 -11l129 -126
+l6 -9l19 -19q25 -19 38 -38l6 -3l7 -10l107 -107l9 -9l13 -10l16 -19q31 -28 47 -63q9 -25 12 -44v-346l-6 -35v-22l-3 -10v-22l-3 -15q0 -38 -6 -63h28l25 6q38 3 88 19q38 16 63 22q16 19 19 41v35l3 6v38l4 19l6 100l3 19l6 142l3 10l7 110q9 19 12 34l13 32q3 19 9 31
+q32 29 45 54l18 44l38 38q3 9 7 13l15 34l10 19l25 51q19 31 41 47q9 16 13 25l18 35l16 22q19 16 25 28q22 57 63 91l10 19l9 22q13 22 26 35l31 41l3 13q19 34 32 47l22 22q22 60 66 98q3 9 12 28l10 19l31 63q19 38 48 60l28 57l41 50q32 85 25 164l-12 9l-32 35l-16 3
+l-44 3l-15 3h-29l-9 3h-35l-6 4l-51 3q-3 -19 -3 -32l-6 -31l-3 -44q0 -35 -7 -57q0 -9 -3 -13l-3 -12l-9 -22l-16 -57l-35 -35l-6 -9l-28 -57l-4 -9q-9 -16 -12 -26l-13 -22l-3 -9q-25 -22 -41 -47l-22 -44q-13 -32 -25 -51l-38 -79l-16 -22l-28 -28q-6 -19 -16 -32l-3 -9
+l-19 -35l-3 -9q-9 -16 -13 -25l-12 -22q-57 -57 -79 -130q-13 -25 -25 -40q-63 -73 -79 -158h-91q-7 9 -10 28l-9 38l-16 16l-9 6q-10 16 -19 22l-35 32q-9 16 -32 31l-6 10q-50 19 -79 44l-151 151q-19 13 -35 19l-6 3q-28 16 -44 28l-16 19q-15 13 -25 26l-94 91l-4 6
+q-44 32 -78 44l-259 259l-25 19q-35 12 -57 28l-82 82q-6 9 -12 13l-35 34q-9 7 -12 13l-101 101l-16 31q-28 54 -35 101h-34q-278 -16 -224 -246z" />
+ <glyph glyph-name="Z" unicode="Z" horiz-adv-x="1869"
+d="M358 1802l-3 -10l-11 -21l-20 -37v-151l17 -17l37 -10l14 -4l23 -7q51 -13 85 -16l40 -4l277 -17l13 -3l51 -3h40l21 -4h37q44 -3 47 -7l24 -3l74 -13q-10 -51 -20 -71l-372 -372q-16 -20 -30 -30l-108 -111q-20 -14 -30 -31l-10 -6q-10 -17 -24 -24l-3 -7l-10 -7
+l-98 -97q-21 -27 -41 -41l-13 -13q-21 -24 -37 -38l-149 -148l-7 -10l-101 -101q-13 -34 -27 -54v-156l14 -37l3 -6l24 -38l6 -6q68 -31 108 -75l10 -3q17 -10 27 -13l24 -14l10 -3l24 -10l61 -21l16 -3l108 -37q21 -10 38 -14l37 -10q20 -10 50 -17l31 -13q30 -7 54 -17
+l37 -10l10 -4q40 -6 67 -16q41 -7 68 -17h10l17 -7q30 -3 50 -10l48 -10q17 -7 33 -7l38 -10h10l50 -10l51 -10l20 -4q31 -10 52.5 -11.5t35.5 -8.5l30 -3l37 -11q34 -3 54 -10l14 -3l17 -3l20 -4l54 -10q7 0 15.5 -1.5t11.5 -5.5l37 -3q7 -3 24 -7l23 -3l75 -14h219
+q169 125 172 304l-47 -7q-20 0 -24 -3l-108 -7l-17 -10q-16 -10 -27 -13l-23 -14h-388l-17 3l-17 4l-17 3l-17 4q-27 3 -44 10q-33 3 -57 10q-37 7 -81 20l-24 3l-27 11q-33 3 -57 13h-10l-142 41l-17 3l-236 81l-17 3l-23 14q-21 7 -34 17l-24 10l-13 3l-95 31l-71 37
+l-54 54v101l955 955q10 7 14 13q10 7 13 14q10 7 14 13l148 149v216l-17 17l-641 10l-13 3l-14 4q-20 0 -23 3l-44 3l-10 4l-27 3l-54 7q-24 17 -41 23l-91 44h-155z" />
+ <glyph glyph-name="bracketleft" unicode="[" horiz-adv-x="569"
+d="M280 1798l-18 -3h-47l-12 -3q-25 0 -40 -3h-34l-12 -3h-19l-9 -3h-21l-10 -3l-18 -3l-22 -4l-18 -3v-1738l22 -3l33 -3l31 -3h28l18 -3l62 -3l9 -4q22 0 37 -3q37 -3 65 -6l43 -3h55v34q3 43 -3 71l-28 3l-67 9l-13 3l-21 3l-25 3l-21 3q-34 3 -56 10l3 313l3 34v213
+l3 24v246l4 34l3 551l3 9l3 22l12 77l28 9l43 15h9l12 6q28 7 50 16l27 6q16 18 22 34l9 52h-80q-25 -6 -43 -3z" />
+ <glyph glyph-name="backslash" unicode="\" horiz-adv-x="569"
+ />
+ <glyph glyph-name="bracketright" unicode="]" horiz-adv-x="499"
+d="M0 1730l12 -3l19 -3l64 -12l19 -3q31 0 52 -6q40 3 68 -10v-92l-3 -9v-219l-3 -24v-157q3 -46 -3 -77v-237q0 -37 -3 -61v-259q-4 -37 -4 -61v-250l-3 -9l-3 -21l-12 -77l-40 -16l-12 -3l-19 -6h-9l-89 -28q-28 -43 -31 -86l80 3l18 3l56 3q40 10 68 7l12 3l64 3
+q19 3 50 6q21 0 55 3v1772h-31l-15 3l-31 3h-28l-15 3q-21 0 -37 4h-218q-28 -44 -28 -87z" />
+ <glyph glyph-name="asciicircum" unicode="^" horiz-adv-x="961"
+ />
+ <glyph glyph-name="underscore" unicode="_"
+ />
+ <glyph glyph-name="grave" unicode="`" horiz-adv-x="682"
+ />
+ <glyph glyph-name="a" unicode="a" horiz-adv-x="1994"
+d="M231 1704v-98l39 -36l9 -9l5 -9q21 -15 33 -32l18 -18q39 -36 53 -83l187 -187v-158l-41 -80q-9 -24 -30 -50q-18 -18 -27 -33l-14 -27l-15 -32l-6 -9l-6 -15q-15 -27 -21 -45q-18 -29 -27 -53q-23 -18 -35 -39l-45 -89q-12 -24 -28 -40t-25 -31q-21 -51 -54 -80
+q-26 -60 -65 -95q-33 -78 -92 -125l-3 -6q-27 -56 -62 -92v-18q-12 -44 -9 -77l9 -3l15 -3q32 -3 53 -9h12q18 -3 41 -6l48 -3l24 -3l47 -3l15 92l3 9q9 12 18 33l9 21l9 17l11 18l12 30l6 3q15 18 27 27l6 15l6 8l27 54l3 9q9 15 11 24l12 20l18 15l9 3q15 9 24 12l21 12
+h849l95 -95l9 -9l26 -27q9 -6 15 -18q33 -26 51 -50q24 -18 38 -36l3 -6q15 -41 39 -68l83 -83l3 -15l12 -44h44l21 3l21 3q21 0 36 2l71 3l9 12l12 12l6 3q26 33 47 51v101l-12 14l-12 3l-11 3q-42 18 -72 24l-9 9l-3 6q-23 18 -53 50q-18 21 -33 33l-9 9l-17 21
+q-30 24 -45 41l-39 39l-6 9l-14 12l-42 41l-3 6l-27 27q-17 21 -35 33l-285 285l-9 9l-15 14l-12 12l-3 6q-24 18 -50 51l-9 18l-15 32l-12 15l-145 146l-21 35q-9 24 -24 42q-6 3 -15 12q-15 17 -27 26l-6 6l-14 18l-21 18l-15 21l-21 15l-27 26l-2 9l-9 18q-12 18 -18 33
+l-69 71q-20 18 -32 36l-18 38l-9 18q-24 21 -36 39l-5 8l-9 18l-9 18l-9 21l-6 9q-12 35 -33 56h-202q-44 -21 -71 -44zM733 979l18 -3q35 -3 59 -9l42 -41l14 -12q24 -30 42 -45q9 -6 12 -12l151 -151q15 -15 24 -21q9 -15 18 -21l3 -17l12 -39l-3 -6h-567l6 21l3 21l3 18
+l5 35l33 65l6 9l15 33l6 9l35 74q21 18 33 33q3 35 18 62q9 0 12 -3z" />
+ <glyph glyph-name="b" unicode="b" horiz-adv-x="1472"
+d="M384 1726l-34 -18l-37 -34l-46 -22q-15 -9 -25 -12q-27 -19 -49 -25l-62 -31q-27 -21 -58 -55v-13l-3 -21q-6 -31 -6 -53q-7 -24 -3 -46q70 -12 111 -65v-977l-4 -15l-3 -12l-3 -16q0 -12 -1.5 -21.5t-7.5 -30.5l-3 -22l-3 -21q-3 -34 -9 -56l-31 -65v-101l9 -10l22 -3
+h259l12 6q18 4 34 13l12 3l22 6l52 19q28 6 62 21q21 9 34 19l43 21q9 3 12 6q31 16 40 19q19 9 22 12l9 3l34 19l9 3q16 9 25 12l21 12q25 25 47 41l6 3q58 27 92 67q127 238 3 457l-67 71l-10 9l-34 31l-70 74l-10 3l-34 18q-18 9 -33 13l-53 15v59q37 15 65 18
+q25 25 46 40l6 3q28 16 46 22q25 31 47 46q80 145 64 293v71l-6 21l-9 22l-15 55l-50 50l-18 9l-28 15l-102 37h-314q-15 -9 -25 -12zM582 1578q58 -28 89 -65l9 -6q28 -31 46 -46v-111q-40 -126 -126 -207l-6 -9l-80 -80l-16 -3q-21 0 -49 -3l-19 -3q-27 -6 -49 -6l3 9v102
+l3 24l3 182l4 19l3 154q3 31 21 49h164zM514 829l24 -28l10 -6q43 -18 67 -37l142 -142l6 -9l7 -3l52 -55v-161q-157 -194 -373 -182q-49 -9 -83 19v518l6 12q18 46 46 74h96z" />
+ <glyph glyph-name="c" unicode="c" horiz-adv-x="1857"
+d="M840 1733l-16 -3l-16 -3h-13q-33 -10 -81 -16q-32 -13 -55 -16l-10 -4l-61 -12l-55 -30q-71 -25 -113 -71l-19 -12q-29 -17 -52 -23l-9 -13l-23 -19l-16 -16l-16 -20q-16 -13 -26 -26l-29 -25l-3 -13l-7 -7l-9 -22q-10 -20 -20 -33l-29 -29l-32 -67l-13 -23l-3 -10
+l-20 -35l-3 -16l-3 -17l-3 -12q-10 -26 -16 -62l-4 -13l-3 -13l-3 -12q-3 -17 -7 -33l-3 -22l-13 -71l-3 -20l-3 -19v-358l3 -13l13 -42v-10l6 -16q4 -26 8.5 -42t11.5 -26q16 -61 35 -100q39 -71 91 -110q6 -41 19 -71l65 -16l12 -13q39 -35 78 -48l10 -6l64 -33l42 -9
+l81 -23h281l19 6q29 4 52 10h9l20 7l48 6l26 10l13 6l58 16l6 4q16 9 26 12l23 13l9 4l23 13l19 6q20 13 39 19q16 23 48 52q65 58 101 126v87l-13 13h-107l-35 -19l-39 -20q-45 -48 -97 -64q-142 -126 -332 -104h-107q-206 87 -287 255l-39 39l-6 19l-16 26q-4 10 -7 13
+l-3 13l-32 90v313l3 7l16 61v10l42 132v10l6 13q7 19 17 32l16 39l38 39l4 9l25 52l71 71q10 16 33 32l3 7l10 6q29 32 51 48q33 13 52 26l13 3l13 7l22 6l7 4l51 16h233l9 -7l30 -32l16 -16l48 -49h107l83 84v123q4 36 -3 58l-16 13l-35 10h-10l-65 16q-38 6 -64 3h-220z
+" />
+ <glyph glyph-name="d" unicode="d" horiz-adv-x="1785"
+d="M387 1744l-27 -9h-9l-12 -6q-46 -6 -77 -22l-9 -3l-15 -3l-12 -3l-12 -6l-113 -30q-25 -3 -40 -10l-49 -48l-3 -16q-9 -48 -9 -82q55 -15 92 -15l6 -6l15 -19l15 -64l3 -6q3 -33 12 -55v-1122l-9 -12q-21 -52 -58 -86v-98l12 -12l10 -6h12l33 -6h10l48 -9h13l24 -3
+q18 -6 33 -6q40 -6 68 -3h158l49 15h9l28 9h9l70 21l9 7q21 3 36.5 10.5t24.5 10.5q15 9 25 12l21 12q113 25 186 92q15 9 24 12q16 9 25 12l21 12q15 22 34 34l6 9l9 15q9 16 12 25l28 55l9 18l12 21q18 43 33 67l28 83l6 43v15q3 9 6 30l3 28v21q3 9 6 31v21l9 76v378
+l-9 43l-3 6l-3 12q0 13 -6 31l-3 27l-3 19l-34 100q-45 46 -64 98l-15 12l-9 12q-34 28 -52 52l-18 9l-34 19l-9 3q-15 9 -24 12l-138 67l-12 3l-110 34q-36 6 -61 15h-228zM607 1558l37 -18l9 -7q24 -9 39 -21l10 -3l9 -6l24 -9l9 -6q31 -16 40 -19l21 -12q16 -21 31 -30
+l3 -6l27 -25q19 -24 40 -39l9 -13l9 -15q19 -43 34 -67q3 -9 6 -12l3 -9l18 -34l3 -9q9 -15 13 -25l12 -21v-512q0 -6 -3 -22l-6 -18l-3 -12l-7 -22v-9l-12 -45l-15 -28l-3 -9l-34 -64q-6 -18 -15 -31l-58 -58l-9 -12l-12 -9l-70 -70l-19 -9l-15 -6l-9 -6l-18 -10l-77 -24
+l-21 -9h-171q-49 -9 -70 21l-3 348q0 15 -3 24v260l-3 21l-3 461l-3 21v143q3 43 -3 70l12 7l58 15h189z" />
+ <glyph glyph-name="e" unicode="e" horiz-adv-x="1243"
+d="M449 1737q-96 -21 -156 -84q-66 -27 -108 -75l-23 -51q-18 -30 -39 -45l-9 -18q-9 -20 -18 -32l-6 -21q-15 -33 -21 -54l-3 -15l-3 -12l-6 -12v-9l-9 -27q0 -6 -3 -21l-9 -27q-3 -24 -9 -39q0 -21 -3 -24l-3 -27l-3 -21l-3 -17v-21l-12 -75q0 -24 -3 -42v-428q3 -9 6 -24
+l3 -15v-12l3 -18l6 -21q0 -12 3 -30l3 -23l3 -21l15 -30l6 -9l51 -102l3 -9q9 -15 12 -24l12 -21l110 -110q30 -12 48 -22.5t33 -13.5l66 -24l12 -3l15 -3q24 0 51 -9l21 -3l21 -3q32 -3 53 -9h246l21 3q47 9 74 9v24l-6 21v9l-3 24l-3 20l-12 12l-14 6h-15q-21 6 -39 6
+l-12 3l-21 3l-33 3l-42 6h-9l-33 3l-9 3q-24 0 -39 6l-149 60l-111 111l-12 21q-6 18 -15 30l-3 9q-6 15 -12 24q-6 18 -15 29l-18 45q-3 15 -9 24l-9 36l-3 15l-3 30v33q0 6 -3 21q0 21 -3 36v33l-3 21q-3 50 0 65l252 18l18 3l17 3l24 3q18 3 30 3l42 6l18 3q15 0 24 3
+l48 3l9 6l54 27l15 15q9 51 -15 84h-57l-9 3h-81l-21 3h-87q-35 6 -59 3h-48l-12 3h-87l-21 3h-54v24l3 33l3 6v21l3 6q0 21 3 36v29q12 30 15 49.5t9 31.5v9l36 114q0 6 6 21l30 60q6 9 12 12l132 131l215 9q24 0 42 3l90 3v162q-39 12 -72 12h-290z" />
+ <glyph glyph-name="f" unicode="f" horiz-adv-x="1051"
+d="M808 1740h-148l-23 -3l-343 -3l-14 -3h-151l-69 -72v-156l5 -12q9 -22 17 -36l3 -11l25 -70l3 -25v-539l5 -28l6 -11q17 -44 19 -75v-695q28 -25 42 -45h11q51 -14 84 -11v8l6 20q0 11 2 28l3 22l3 20l3 192l3 20v117l2 8v129q0 14 3 22v154l3 22v59q50 19 92 22l14 3
+l20 3l19 2q31 3 70 12l70 5q25 6 44 6l56 2l14 3l56 3l19 3l73 3l31 2l19 3l81 3l14 14v73q6 39 -14 64h-181q-23 3 -42 -3l-248 -6q-20 0 -34 -2l-140 -3l-2 17v50l2 17v61l3 31l9 382l19 17l39 5l14 3l28 6h11l39 8q17 0 31 3l22 3l6 2h17l33 6q17 0 20 3h19q31 8 51 5
+q22 6 36 6l19 3h20l11 3h17l8 2q14 0 39 6l39 6l31 2q22 6 39 6l9 3q30 2 50 8l11 11v9l5 22v8q6 28 6 51h-215z" />
+ <glyph glyph-name="g" unicode="g" horiz-adv-x="1697"
+d="M820 1726h-19l-10 -4l-73 -9l-9 -3q-26 0 -45 -3l-32 -13q-6 0 -19 -7l-51 -15q-25 -10 -41 -19l-9 -7l-42 -19l-22 -13l-9 -3l-35 -19l-19 -9l-29 -13l-29 -32q-85 -73 -124 -156l-28 -28l-6 -10l-13 -31l-13 -19l-3 -10l-38 -79l-7 -10l-6 -16q-16 -28 -25 -63l-3 -13
+l-4 -19q-12 -38 -22 -92l-3 -16l-13 -54v-10l-9 -38v-314l12 -42v-9l10 -26q3 -28 13 -50l3 -13l13 -35q0 -6 3 -12.5t6 -22.5l70 -143l35 -32l16 -70l54 -12q28 -13 41 -32l19 -13l35 -16q19 -9 22 -12l10 -4l19 -9l35 -19l22 -7l13 -6l60 -19h508l16 -16l35 -70l3 -12
+l4 -13l3 -16l3 -13l6 -32l7 -19l3 -12l3 -19l16 -61h140l-3 10l-7 165q0 19 -3 32l-3 149l-3 19q0 22 -3 38v35l-4 7l-3 85l-3 16l-3 64l-3 22v16q0 25 -4 44v29l-3 10v41l-3 6l-3 86l-16 16l-44 6l-19 3l-29 4l-48 3l-3 -16q-9 -22 -9 -41q-7 -20 -10 -45l-6 -32
+q-4 -19 -4 -31q-3 -20 -6 -23l-3 -19q-3 -38 -10 -63q-9 -7 -12 -13l-57 -57l-7 -3q-19 -26 -38 -42l-22 -6q-45 -19 -76 -25l-19 -4h-197q-83 -9 -143 32q-99 32 -128 121l-34 32l-32 95v413l25 95l10 35l35 70l3 10q9 15 13 25l12 22l3 10l13 22l3 10l19 35l10 6
+q13 16 22 22q19 45 35 70l181 181l16 19l22 19l70 35l10 3q16 10 25 13l22 13h204q82 -38 130 -102h140l6 3l60 16q26 111 0 203l-69 20q-10 0 -13 3q-10 0 -13 3h-9l-26 6q-38 13 -66 16h-274z" />
+ <glyph glyph-name="h" unicode="h" horiz-adv-x="2061"
+d="M50 1687v-109l100 -100v-178q3 -19 3 -32v-226q7 -33 3 -55l7 -849l3 -13v-146h32l23 4q52 9 81 9l19 17q10 16 13 25l19 36l4 10l3 74l3 10l3 109l3 10l4 107l3 22l3 45v58l3 10l4 116l3 13l3 75l19 16l159 32l210 6l22 4h74q26 0 46 3h106l10 3h68q25 3 48 -3l3 -23
+l3 -22l4 -75q0 -9 3 -13l13 -351l3 -10v-97q3 -19 3 -32v-84q7 -20 4 -39q113 -39 158 3q16 33 19 42l13 23l6 284l4 19l3 236q0 26 3 45v97l10 3l22 4l23 3l23 3l22 3l36 3q19 17 22 39l4 58l3 26q6 42 3 68h-58q-45 -3 -74 3l3 91l3 19l3 106q0 20 4 33l3 122l3 13l16 55
+l3 13l20 78l3 6l26 81l3 13v13q10 42 10 71l-23 -4l-58 -6q-139 3 -245 -58v-10q0 -39 -4 -64v-46q-3 -61 -3 -100v-64q-6 -20 -3 -39v-87l-3 -13v-123l-3 -9v-42q0 -29 -4 -52h-775l-3 19v16l3 23v68l4 26v67l3 23v61l3 23v94l3 16l7 148l3 10v29q7 23 3 42q7 29 4 52
+l-42 9l-17 4h-287z" />
+ <glyph glyph-name="i" unicode="i" horiz-adv-x="596"
+d="M73 1692l-73 -73v-171q34 -24 30 -58v-60l4 -22v-88l3 -6l3 -198q6 -37 3 -61l3 -141q0 -15 3 -24v-100l3 -22v-67l3 -39v-64q-3 -25 3 -46v-110l3 -21v-67q3 -9 3 -28q6 -27 6 -48l3 -16l3 -27l3 -43l3 -12q3 -18 6 -49l3 -55q22 -24 49 -18h73q19 28 22 55l9 21v9l3 19
+q9 24 9 45v10q0 15 3 24v113l3 9l3 235l3 21l3 235l3 24v104q0 9 3 12v125l3 18l10 451q0 40 6 67v15l3 34l3 42v68l-34 9l-134 3z" />
+ <glyph glyph-name="j" unicode="j" horiz-adv-x="887"
+d="M503 1742q-23 -13 -39 -19l-28 -20l-64 -64v-91l11 -9l-3 -5q31 -20 50 -45l6 -19l2 -20l20 -69v-1100q-6 -11 -8 -22q-14 -37 -20 -62l-5 -8l-14 -31l-6 -8l-33 -70l-103 -103l-59 -2l-16 -3h-28l-17 -3h-33l-9 -3l-97 -2q0 -120 81 -193q114 -8 203 39q22 9 36 17
+q25 28 50 42l39 17l3 5q44 42 64 89l3 6l36 39l28 55l8 23l17 30l14 42q11 25 14 45l19 64q3 30 11 50l3 11l3 36l3 20q8 44 8 69l3 20q8 44 8 69v1008q0 20 -3 33v37l-3 16v20l-2 11q0 42 -6 70h-36z" />
+ <glyph glyph-name="k" unicode="k" horiz-adv-x="1633"
+d="M10 1645q-9 -118 31 -211v-102l3 -25l3 -251l4 -9v-112l3 -25v-83q-3 -25 3 -47v-118l3 -21v-127q6 -41 3 -69v-77q6 -34 3 -59l3 -211q0 -25 3 -43v-93l13 -12h108l47 46v56l3 12l9 478q0 24 3 43v93q161 -6 251 -133l502 -502q25 -25 47 -41q118 -49 223 3
+q65 16 109 56v9q15 56 12 93l-16 3l-52 16l-13 3l-77 25l-9 9q-22 22 -53 40l-37 16q-47 46 -100 68l-31 31l-12 9l-71 72l-10 9l-24 25l-13 15q-18 16 -28 28q-24 19 -37 37q-15 10 -25 13q-15 9 -24 12l-22 13l-130 130l-62 15l3 28l3 16l3 25l3 21q50 62 112 84
+q24 18 37 34l254 254q9 13 17 20.5t23 23.5l13 9l71 74q31 25 47 47l9 3l68 34q62 37 121 43l-3 10q-3 18 -3 31q-10 37 -10 62q-93 102 -220 80l-18 -9l-34 -19l-10 -3l-610 -610q-10 -7 -13 -13l-99 -99l-59 -16q-3 10 0 16l6 155l4 40v62l3 10v65l9 52l3 19v19l6 24v10
+l6 34v9q4 37 10 62v180q-25 56 -65 93l-13 15h-139q-53 -46 -78 -102z" />
+ <glyph glyph-name="l" unicode="l" horiz-adv-x="1532"
+d="M91 1714l-9 -6q-15 -9 -24 -12q-30 -15 -48 -30v-211l6 -18q0 -6 6 -21q6 -35 15 -59l3 -1143q-36 -54 -30 -108q12 -77 66 -122l24 -6h89q36 21 63 30h550l66 -30h104l18 21l3 9q9 15 12 24l12 21l3 39v14l3 33l3 9l3 45v53l-9 -3l-21 -3q-18 0 -21 -3h-21
+q-30 -6 -54 -6l-53 -29l-9 -3l-134 -3l-21 -3l-372 -9q-42 -3 -68 3l3 65l3 12v51l2 27l6 720q6 27 3 48l3 9l3 86l3 9l3 89l3 18l3 83l3 15v33l3 12l3 101q6 18 3 30v131q-9 9 -21 12h-157z" />
+ <glyph glyph-name="m" unicode="m" horiz-adv-x="2427"
+d="M1833 1744l-16 -19q-38 -34 -60 -66l-9 -19l-16 -35l-19 -34l-3 -10l-38 -79q-3 -6 -16 -18q-16 -13 -25 -26l-25 -50l-4 -10q-41 -37 -59 -82l-4 -9l-34 -69l-13 -16l-25 -29l-29 -60q-9 -15 -12 -25l-19 -38l-47 -56l-7 -16l-16 -32q-15 -28 -22 -47l-6 -6
+q-6 -19 -22 -32q-35 -41 -50 -85q-38 -28 -79 -32l-7 10v9l-15 51l-32 31l-3 10l-25 50l-13 16q-41 41 -57 88q-41 38 -56 82q-19 35 -45 54l-19 35l-3 9l-9 19l-32 63q-19 25 -38 41l-28 60l-38 38q-12 31 -25 50l-13 29l-6 9l-54 107l-3 10q-9 16 -12 25l-26 54l-9 50
+h-271l3 -12q3 -32 9 -54l3 -28v-278q-3 -31 -9 -54l-6 -44l-3 -15l-4 -16q-6 -29 -6 -51l-3 -12l-6 -19q-4 -25 -16 -63v-10l-10 -31v-10q-9 -28 -12 -50l-10 -54l-6 -19l-6 -44l-3 -19q-10 -25 -10 -47l-6 -19q0 -13 -7 -32q0 -19 -6 -31q0 -16 -9 -44l-3 -22l-23 -79
+l-3 -19l-19 -70l-3 -22l-22 -79l-3 -22l-9 -31l-4 -19l-15 -41l-10 -35q-9 -22 -12 -38l-4 -9q-9 -22 -12 -41l-7 -13q-12 -38 -15 -66v-9l-3 -16q-10 -51 -7 -85h3l16 -3l16 -4q16 0 41 -6l35 -3l41 -6h22q12 -4 34 -4q32 -6 57 -3l-3 22l-3 19l-6 38v10q-7 34 -4 60v18
+l10 41v13q6 19 9 47q3 13 7 32l3 28l3 19l3 22l6 26q0 9 7 25l3 22l22 113l3 16l3 22l7 44q6 19 6 35l6 32l3 12l3 16v13l7 25q0 19 6 31v10l3 19l13 57l3 19l3 18q3 32 13 73l3 22l3 16l3 22q7 25 7 44l3 13l6 19q3 28 9 50l10 44q0 7 3 22q13 44 16 73q38 6 69 -13
+q22 -22 32 -47l16 -32q47 -47 66 -101q44 -41 63 -91q16 -22 31 -35l10 -9q25 -60 63 -98l6 -13q29 -59 67 -94q22 -60 63 -95l15 -31q4 -10 7 -13q3 -9 6 -13l9 -19l67 -132q15 -44 44 -73h135q23 26 29 48l3 12l9 22q0 7 7 19l9 29l3 12l7 26q12 28 15 47l19 35l4 9l9 19
+l32 63q15 25 34 38q10 13 13 25q22 44 31 57q19 16 38 50l10 19l9 19q10 16 13 26l22 44q22 19 44 53l13 29l53 69l3 10l10 18l9 19l32 63l16 16q6 10 22 25l9 19l22 45q38 28 79 31l3 -9l3 -26l4 -6q3 -35 9 -57v-12q6 -22 6 -41q7 -22 10 -44l3 -23l3 -18l10 -60l3 -19
+l3 -19l6 -22l3 -16l13 -69l3 -13l3 -19q10 -28 13 -50v-13q6 -19 6 -35l19 -91q0 -10 6 -32l4 -19l6 -41l16 -88l3 -16l3 -22l3 -31l13 -79l3 -10l6 -44q0 -9 3 -13v-9l16 -107l3 -13v-19l3 -12l7 -41v-19l6 -32l3 -41l3 -22q0 -22 4 -57h34q10 3 29 7h19l6 3l50 3l7 6
+q44 16 72 41v221l-9 41q-13 35 -16 60l-25 120q-3 19 -7 22v9l-3 22l-31 123l-3 7l-19 75q-4 26 -10 45l-9 41l-7 28q-3 32 -9 50q-3 13 -6 35l-4 22l-3 19l-3 19l-12 66q-4 10 -5.5 18t-3 15.5t-4.5 26.5q0 19 -6 32q0 16 -7 41l-3 12v13q-6 19 -9 47q-3 19 -7 22l-3 22
+l-16 149l-3 22q0 25 -6 66q0 25 -3 44l-3 41v22l-3 13q0 47 -7 79q-104 60 -221 44z" />
+ <glyph glyph-name="n" unicode="n" horiz-adv-x="1910"
+d="M0 1630v-74l19 -16l18 -12q96 -34 158 -102q15 -31 18 -40l13 -22v-479l-3 -7v-46l-3 -19v-34q-4 -18 -4 -30q0 -25 -3 -44v-31q-3 -37 -3 -62l-3 -15v-31q-3 -25 -3 -40v-22q-3 -34 -3 -55l-3 -41v-34l-3 -21v-56l-28 -83q0 -7 -6 -22q-6 -19 -16 -31l-3 -9l-46 -90v-74
+q9 -6 12 -13h149l24 10q28 12 50 15l28 19v55q6 37 3 62l6 548l3 9l3 473l62 -15l408 -409l6 -9q7 -15 13 -25l15 -34l133 -130q22 -18 50 -52l15 -16q9 -9 25 -21q18 -25 37 -37l6 -10l6 -15q16 -28 22 -46q22 -16 34 -31l15 -34l7 -10l9 -18l37 -78l9 -30l7 -13l15 -49
+l15 -13h133l38 37q34 25 46 59v68l3 16v58l3 34v62l3 10v74l3 9l3 158l3 18l7 260q6 25 3 43l3 93q3 31 9 53l3 31l3 15q0 25 6 40l10 68v16l3 9q3 25 9 43q0 10 3 13v12l6 19q4 27 10 49v186q-6 12 -13 18l-195 -3l-12 -3h-12l-78 -9l4 -34v-34l3 -13l6 -123l3 -7v-770
+l-3 -9q-6 -34 -16 -55q-58 12 -96 49l-3 6q-74 62 -108 139l-229 232l-21 37q-13 28 -31 47l-112 111q-18 43 -37 68q-18 19 -28 31l-15 16l-12 9l-7 9l-12 12l-9 7l-13 15l-12 12q-25 19 -37 34l-6 7q-16 21 -22 40l-18 34l-127 127l-6 9l-10 18l-21 44l-44 43h-173z" />
+ <glyph glyph-name="o" unicode="o" horiz-adv-x="1807"
+d="M602 1595l-6 -3l-23 -4l-19 -3q-29 -10 -52 -10l-10 -3l-26 -16l-19 -6l-26 -17l-58 -25l-158 -159q-4 -9 -7 -13q-9 -26 -19 -42l-16 -32q-10 -19 -13 -23l-3 -9q-20 -36 -23 -46l-13 -22q-3 -10 -6 -13l-4 -13l-9 -23l-23 -71q0 -19 -6 -32v-10l-7 -19q0 -13 -6 -32
+q0 -20 -7 -33l-3 -29v-310l3 -10l7 -35l3 -10q3 -26 10 -42l6 -45l3 -13q10 -23 13 -39l13 -32l3 -13l4 -13l6 -10l16 -35l7 -10l38 -81l91 -90l10 -3l22 -10q16 -13 32 -16l33 -36q136 -71 271 -65h155l13 4l13 3q32 10 55 13l49 13l25 16l20 6l6 7l20 10l58 25l39 39
+q90 36 116 117q84 71 100 164l3 10l10 16l26 52v13q3 6 6 22l4 23l3 16l3 20l3 29q4 29 10 48l-3 356l-3 9l-4 20l-3 29l-3 19l-3 16v13q-10 49 -10 81l-26 74l-3 13l-10 26l-26 45l-6 20l-33 64l-12 13l-10 7q-13 13 -20 22l-42 42l-64 33q-16 9 -26 13l-52 25l-16 4
+q-32 9 -55 13l-48 13h-243q-25 -10 -45 -10zM838 1404l23 -13l9 -3l36 -19q10 -7 13 -13q10 -7 13 -13l13 -10l16 -19l22 -20l4 -6l77 -74q3 -10 7 -13l51 -133l10 -22v-517q-16 -23 -23 -39q-3 -10 -6 -13q-3 -10 -6 -13l-4 -10l-16 -29l-3 -10l-19 -35l-10 -20l-13 -29
+q-10 -6 -19 -19l-20 -13q-32 -13 -52 -26q-22 -26 -64 -48l-36 -20l-239 -3q-39 26 -68 36q-19 26 -35 38l-26 26l-10 7l-87 90q-3 10 -6 13l-17 36q-9 19 -13 22q-6 20 -16 33q-6 19 -16 32l-6 23l-17 51l-9 23v378q29 123 103 204q20 45 36 71l13 9l16 20l16 16l19 10
+l52 25l10 7l19 10q26 9 42 22h236z" />
+ <glyph glyph-name="p" unicode="p" horiz-adv-x="1433"
+d="M258 1711l-36 -15l-12 -3l-12 -3l-75 -24q-42 -45 -93 -63q-15 -15 -21 -33q0 -21 -6 -54q-3 -36 -3 -60h57l6 -6q3 -30 9 -51q0 -15 3 -24v-1379l-15 -93h33l21 3q48 9 75 9l48 48l3 12l3 12q9 30 12 51l12 45l3 24l6 330l3 24v108q3 18 3 31v81l3 21l3 231l3 33v111
+l3 21l3 271l3 9v78q48 54 112 81h183l51 -51q12 -30 24 -48l36 -75v-256l-30 -60l-81 -81l-51 -27l-63 -21q-18 -9 -33 -12q-51 -15 -72 -18v-99q18 -3 30 -9q24 -6 42 -6h216q42 39 54 57l33 33l12 9l69 69l18 33q24 45 51 72v9l24 108l3 21v220l-24 72l-3 12l-6 9
+q-6 18 -15 30l-3 9l-18 33l-3 9q-9 15 -12 24l-12 21q-204 117 -417 102h-112q-18 -9 -45 -15z" />
+ <glyph glyph-name="q" unicode="q" horiz-adv-x="1661"
+d="M601 1736h-9l-13 -5l-19 -3q-18 -8 -35 -8l-59 -29l-8 -6l-29 -13l-8 -5l-67 -33l-8 -8q-3 -5 -16 -16l-27 -29l-46 -43l-32 -62l-62 -64q-204 -400 -21 -762q21 -16 32 -32l3 -8l21 -43l59 -59l22 -46l10 -13q19 -22 35 -35l30 -32q37 -16 59 -30l83 -83l13 -8l41 -19
+l34 -32l8 -3l38 -18q13 -8 21 -11l54 -27l22 -5q24 -11 40 -15t27 -12l8 -3l13 -8l11 -3l13 -8l43 -21l8 -5q6 0 16 -6l24 -8q30 -11 49 -13l27 -16q8 -3 10 -6q8 -2 11 -5l19 -5l48 -17l11 -5l86 -27l21 -8l19 -8l72 -21l11 -3q27 -8 46 -11l72 -21q35 -14 59 -19l35 -11
+q8 0 11 -2l29 -6q24 -8 65 -13q5 -3 18 -6l19 -2l14 -3q29 -3 48 -8h11q34 -5 59 -3h91l48 25l8 5l51 24l73 72l2 14q8 43 8 72l-19 -2l-18 -3l-67 -8h-405l-22 8q-19 3 -32 8q-19 3 -32 8q-22 3 -38 8l-75 27l-11 3l-77 26l-11 3l-67 22l-8 5q-75 35 -97 48q-16 8 -40 16
+l-19 6l-5 2l-43 14l-16 10l-8 3q-24 14 -30 22q-19 16 -32 24l-8 5q-16 6 -27 14l-16 8l-40 18q-22 14 -35 30q-16 11 -30 16q-21 11 -34 21l-19 19l-8 6q-41 18 -65 37l-10 14l-11 10l-5 3l-180 180l-14 13l-37 38l-6 13q-5 8 -13 24l-19 40l-5 8l-46 92l-2 8q-8 13 -11 21
+l-11 19v255l11 27l3 10q10 27 13 46l32 32q27 65 73 99q59 76 136 110l30 30q99 40 193 29h89q26 -16 34 -18l14 -8q11 -3 27 -14q32 -13 51 -29l26 -57q38 -37 51 -86v-8q8 -16 8 -32v-303l-8 -21v-8l-5 -22q-11 -32 -13 -56l-14 -24q-19 -43 -48 -67l-3 -8l-8 -19
+q-10 -14 -13 -27l-6 -3l-85 -88q-16 -14 -27 -27l-8 -8l-6 -3q-13 -8 -24 -11q-16 -10 -29 -16l-14 -13v-62l16 -13h169l183 182l5 8l27 54q19 13 30 29q120 218 112 438v102l-5 8l-30 86q0 8 -2 10l-19 62l-8 11q-16 13 -24 24q-27 59 -70 96q-51 22 -83 57l-11 2
+q-29 14 -48 17l-11 5l-16 3l-16 5h-11l-16 5h-8l-30 8l-16 3l-32 5h-201z" />
+ <glyph glyph-name="r" unicode="r" horiz-adv-x="1923"
+d="M393 1722l-105 -35q-17 -3 -29 -9l-17 -6l-32 -9h-9l-18 -2l-23 -3l-20 -3v-32q3 -9 6 -27v-17l2 -6l3 -46q38 -30 61 -67v-1200l-5 -14q0 -9 -3 -12v-9q-18 -52 -21 -87v-87l18 -18l17 -5l12 -3l20 -9l53 -15q17 0 20 -3h20q47 -8 73 -8q0 23 -3 40v44l-3 9l-5 154
+q0 23 -3 41l3 399l3 8v18l2 11q0 44 9 73l41 -8l23 -9l12 -3l73 -23q20 -24 35 -35l32 -15l8 -6l79 -38l41 -37l20 -9l44 -23q46 -18 75 -50l18 -12q23 -8 38 -17q23 -15 35 -32l17 -12q44 -17 70 -43l38 -38l17 -12q24 -9 38 -17l20 -15l3 -6q18 -14 32 -23l47 -23l55 -56
+l18 -11l52 -26l32 -32l6 -3q41 -15 70 -44l11 -12l44 -23q9 -3 12 -6l11 -6l27 -26q17 -8 29 -17l29 -12q41 -44 87 -61h79l58 29l26 29l12 9l6 9l14 11q15 18 44 44q6 47 -9 82l-12 5h-11l-41 9q-14 3 -17 6l-73 12l-9 5q-17 6 -29 15l-17 9l-15 5l-9 6q-41 18 -52 26l-6 9
+q-15 9 -20 18q-56 23 -91 61l-32 17l-8 3l-47 23l-17 9q-27 15 -41 32l-9 9l-61 29q-23 26 -47 41q-52 23 -84 58l-32 15l-9 5l-73 35l-14 15q-38 32 -73 44q-23 17 -35 32l-8 5l-59 29q-40 41 -87 59q-26 29 -58 46l-9 3q-26 15 -47 21l-43 11q-6 53 6 90q358 94 317 463
+l-47 123q-8 14 -11 26q-29 26 -44 46l-12 6q-20 15 -37 21l-6 2q-29 12 -47 24q-29 14 -49 20h-9l-23 6q-35 12 -62 14h-267zM690 1547l17 -20l6 -3l29 -32q18 -12 29 -27v-212l-14 -23q-9 -24 -18 -38l-78 -79l-18 -8l-116 -59q-58 -35 -114 -40v34q6 27 4.5 48.5t1.5 39.5
+l3 105q0 23 3 40v44l3 9l3 58l3 12l3 11l3 12l17 73q20 26 52 55h181z" />
+ <glyph glyph-name="s" unicode="s" horiz-adv-x="1109"
+d="M417 1727l-52 -15q-6 -8 -11 -11l-55 -55q-9 -6 -12 -12l-93 -93l-38 -78l-8 -17l-18 -32l-2 -9l-9 -17l-18 -32l-29 -87v-159q24 -56 27 -76l2 -6q9 -26 21 -43l3 -9l11 -20l29 -90l9 -17q11 -29 32 -64l8 -15l35 -75l12 -17q9 -23 17 -38l3 -9l12 -20l3 -9l17 -32l3 -8
+q9 -18 11 -32l21 -58q17 -41 32 -64v-182q-12 -32 -15 -58l-20 -9l-46 -9l-200 6q-18 3 -47 6q-20 0 -52 3l3 -64l3 -9l6 -84l17 -14l17 -9l32 -17l87 -32h177q35 23 64 29l6 3q26 8 46 11l6 21q8 29 11 49l6 -3q6 9 20 23l9 12q12 29 23 46q3 17 6 20q3 18 9 32l6 32
+q8 26 11 46v244l-9 40l-2 18l-6 20l-12 73l-6 8l-55 139q-3 12 -11 27q-12 28 -23 46l-3 14l-18 47l-3 11q-5 24 -17 41l-17 32l-32 98q-9 15 -12 23l-17 32v218l107 107l9 3l46 26q29 6 49 6l9 3l20 3l15 2l23 3l32 3l8 3q35 6 58 6l18 20v12q3 17 3 29l3 20l3 20l2 21v52
+q-8 0 -23 3q-35 3 -58 8h-203z" />
+ <glyph glyph-name="t" unicode="t" horiz-adv-x="1505"
+d="M1076 1740h-224l-23 -3l-548 -4l-17 -3h-198q-33 3 -56 -13v-119l7 -33q6 -16 6 -30l525 -3v-26q-3 -20 -3 -33v-145l-4 -27v-145q-3 -40 -3 -66v-145l-3 -10v-215l-3 -10v-504l6 -10l17 -37l6 -10l40 -82q138 -132 310 -116q129 -9 221 53q17 20 30 30l3 20q0 20 3 23
+l10 82v20h-16l-23 3l-86 4l-17 3h-39q-10 0 -13 3h-56q-17 7 -30 4q-3 6 -10 11t-20 18q-20 23 -36 37l-56 56l3 996l3 23l7 129l3 7v39l4 20l13 3l26 4l83 6l23 4l56 3l10 3l53 4q9 0 29 3l27 3q39 0 66 7q26 0 47.5 1.5t57.5 8.5l66 3q27 36 53 53v10l7 26v10q6 33 6 59
+h-330z" />
+ <glyph glyph-name="u" unicode="u" horiz-adv-x="1582"
+d="M70 1702v-561l3 -22v-45l3 -19v-25l3 -13l3 -47v-38l4 -19v-26l3 -12l3 -70q0 -26 3 -45l3 -95l3 -16l4 -12l3 -35l9 -54v-10l7 -38l3 -16v-12q3 -35 9 -54l7 -35l9 -26v-9q10 -32 13 -54l19 -38q13 -22 19 -41l6 -7q13 -35 42 -69l9 -7l19 -9q26 -10 41 -22l7 -4
+q16 -19 28 -28l10 -3l25 -16q19 -7 32 -16l19 -6l9 -7l38 -19l13 -3q19 -3 22 -6h10l28 -10q26 -3 42 -9h231l61 22q19 3 31 9l19 10l16 6l6 7l20 9l69 32l159 165l6 16l7 9l9 26l38 38l7 22l6 12l25 77l3 12l4 16l6 13l44 187q4 22 7 38l6 44l3 13l3 16v13l4 22l3 19
+q3 19 6 22l3 22q3 23 5 35.5t5 34.5l3 22l3 19l6 38q0 26 7 42l3 28l3 16v19l6 35v13l4 19l6 50l3 26v22l3 13l10 79v222l-48 45h-203l-19 -16v-914l-9 -35l-7 -19q-3 -25 -12 -60l-10 -35l-9 -25l-10 -29l-16 -44v-10l-22 -66q-16 -23 -35 -35q-63 -134 -184 -188h-231
+q-19 13 -35 21t-26 11q-22 13 -41 19l-35 19l-66 67q-77 63 -115 143q-3 19 -12 47l-7 22q-12 48 -15 80v698l9 28l3 13l3 13q4 19 7 22v9l6 22q3 19 13 45l25 73v108l-47 47l-13 10l-38 19l-10 3l-35 19q-19 6 -31 16h-83z" />
+ <glyph glyph-name="v" unicode="v" horiz-adv-x="1846"
+d="M10 1727v-24l6 -22v-9l3 -25l4 -21l30 -31l9 -6q19 -24 40 -40l9 -12q31 -27 46 -49l40 -82l12 -19l19 -43l9 -18l34 -64l3 -10q18 -27 27 -49l120 -241q21 -49 39 -77l10 -21l9 -19l30 -95q10 -15 13 -24l18 -37q9 -15 12 -24l19 -34l36 -110l10 -16q6 -15 12 -24
+l12 -22q12 -33 25 -52l39 -110l3 -12l28 -86l18 -34l3 -9l22 -46l15 -55q22 -36 55 -49q71 -30 135 -24l3 9q3 34 12 55l19 31l3 9q6 15 12 24l64 160l3 12l6 9l56 107l3 9q9 16 12 25q9 15 12 24l12 22l3 9q10 15 13 24q9 16 12 25l12 21l3 10l12 21l4 9q9 16 12 25l12 21
+q6 15 12 25l9 24l7 6q27 74 73 120l92 183q40 40 55 77l52 104q6 9 15 28l59 119l6 9q27 61 40 80q3 9 6 12l15 34l6 9l9 18l9 19q10 24 22 43q9 61 -12 91h-233l-9 -12l-9 -24l-10 -43l-3 -12l-6 -34l-3 -12l-3 -22l-12 -46q-19 -43 -25 -70l-3 -9l-27 -49q-16 -34 -19 -43
+l-30 -55l-9 -19l-10 -18l-12 -28q-9 -15 -12 -24l-25 -49l-6 -9l-27 -59q-16 -27 -22 -45l-21 -40l-16 -31l-9 -15l-3 -12l-30 -62q-7 -9 -16 -27l-36 -77q-13 -18 -16 -30q-21 -28 -40 -43l-3 -9l-18 -34l-3 -9l-9 -19l-34 -67v-9l-12 -46q-52 6 -83 40q-6 18 -15 30l-3 9
+l-12 22l-4 9l-27 55l-3 12l-52 132l-19 34l-3 9q-9 15 -12 24l-18 34q-6 15 -12 25q-10 18 -13 30l-3 6l-24 80l-9 12l-16 34l-9 18l-24 49q-10 19 -13 31l-3 6l-24 77l-6 9q-13 30 -25 49l-24 67q-7 31 -19 52l-9 15l-18 43l-3 13l-43 122q-3 18 -9 31l-3 6l-10 27l-3 13
+l-21 70l-12 9l-13 3h-303z" />
+ <glyph glyph-name="w" unicode="w" horiz-adv-x="2614"
+d="M60 1601v-109l6 -9q12 -30 42 -69q21 -21 39 -66l27 -51q6 -16 12 -25l31 -93l9 -18l18 -33l3 -9q9 -15 12 -24l36 -73l9 -18l18 -33q3 -12 15 -33q21 -45 28.5 -76.5t22.5 -52.5l9 -18q15 -31 18 -43l6 -6q6 -21 15 -33q9 -21 12 -36l13 -27l3 -12l3 -12l12 -30
+q9 -18 18 -30l9 -21q6 -28 15 -49q6 -27 12 -42l30 -63l9 -18v-9l9 -24q9 -21 12 -36q9 -19 12 -34l21 -69l3 -6l3 -18l3 -27l6 -33l3 -15v-21l3 -9l3 -15l3 -22l6 -60l15 -12h139l9 6q36 15 57 33l9 12l33 64q9 15 12 24l18 33l4 9l39 78q21 45 51 73l18 33q9 24 21 39
+q6 3 18 15q24 36 36 63l3 9l33 33l3 9l15 24q9 25 31 49l18 15l24 24l3 6q21 33 30 60l48 48l18 3l15 3q36 9 60 9l6 -12l13 -54l6 -9q9 -21 24 -45l15 -33l27 -55l3 -9q9 -15 12 -24l12 -21l3 -12l24 -75q12 -24 21 -36l45 -127l3 -15l24 -96q3 -24 9 -39q3 -43 9 -67
+l16 -6q24 -3 39 -9q9 0 27 -3l39 -6h18q9 0 12 -3q45 0 75 -6q0 9 3 12l3 21q0 18 3 21l6 76l12 18q10 24 19 39t12 24l24 48l9 30l6 9l9 37l54 111q12 30 24 48l24 48l9 18l9 19l21 39q12 30 24 48l28 54q3 6 4.5 12t10.5 21l39 76q15 39 45 63q9 15 12 24q9 15 12 24
+q9 15 12 24l30 57l9 18q21 49 54 76l3 6l10 18q12 30 24 48q9 24 18 39l3 6l42 51l9 21l6 9l15 31q3 9 6 12l15 27l3 9l12 21l3 9l18 33v78l-12 12q-9 6 -12 12q-9 6 -12 13q-9 6 -12 12l-9 3q-15 9 -24 12l-21 12h-106q-12 -12 -18 -27q-18 -64 -21 -85l-3 -6
+q-9 -45 -30 -72l-3 -9q-18 -39 -24 -66l-9 -34q-9 -15 -12 -24l-24 -48l-9 -18l-33 -63q-9 -24 -18 -39l-12 -24q-10 -15 -13 -24l-24 -43l-3 -9l-12 -21l-6 -18q-12 -18 -27 -51q-33 -30 -48 -63l-9 -18l-9 -18l-9 -19l-12 -27l-6 -9l-21 -45l-6 -9l-52 -102l-3 -9
+q-9 -15 -12 -24l-27 -55q-9 -15 -10.5 -24t-4.5 -12q-3 -45 -12 -75l-60 3q-15 57 -33 96l-63 124l-9 18l-9 15q-13 33 -34 75q-15 39 -18 57q-9 19 -12 34l-9 15l-24 48l-3 15l-30 81q0 9 -3 12l-6 21l-3 6l-15 49l-3 24l-3 15v12l-9 75q-18 3 -25.5 4.5t-10.5 4.5l-15 3
+l-12 3l-15 3l-40 3q-48 9 -75 9l-6 -15q0 -9 -3 -12v-9l-12 -33v-9l-21 -63q-15 -33 -39 -49q-6 -15 -12 -24l-15 -33l-9 -18l-24 -48q-10 -15 -13 -24l-18 -33l-3 -9q-24 -24 -51 -67q-12 -30 -30 -48l-21 -24l-21 -39q-18 -33 -39 -51q-21 -51 -58 -85l-6 -6
+q-24 -60 -63 -99l-3 -6q-6 -33 -15 -54h-57l-6 18q-6 33 -16.5 52.5t-13.5 34.5l-6 6l-121 277l-9 18l-9 18l-30 91l-9 18l-18 33l-45 127q-6 15 -12 24q-9 21 -18 48l-94 283q-9 18 -12 33q-9 24 -12 42l-9 21q0 6 -6 18l-15 49l-3 15v21l-3 9v21l-3 15q0 36 -6 58.5
+t-33 13.5q-154 -9 -238 -120z" />
+ <glyph glyph-name="x" unicode="x" horiz-adv-x="1588"
+d="M78 1656v-134l6 -3l57 -60q28 -25 44 -47q15 -40 37 -65l119 -119l6 -10l32 -62l6 -6q15 -13 25 -25q15 -13 31 -29q3 -6 19 -21l16 -16l62 -60l41 -78l59 -59v-66q-65 -56 -94 -125q-3 -6 -15 -16q-16 -22 -35 -34l-50 -50l-12 -22l-3 -9l-19 -35q-10 -15 -25 -28
+l-72 -72l-19 -31q-9 -25 -22 -44l-44 -41q-12 -18 -28 -28l-15 -19l-72 -72q-10 -15 -13 -25q-9 -15 -12 -25l-13 -22q-16 -9 -28 -28q-22 -15 -34 -31v-9q-16 -57 -13 -94l25 -3q19 -7 36 -8.5t30 -1.5h178l13 16l12 22q19 44 34 69l10 22l9 15q16 47 41 75l16 16l12 16
+l9 15q4 13 16 38q22 28 41 44q15 43 40 72q7 9 22 21l35 69l15 16q57 56 82 116l15 18l7 4q9 12 22 21q21 25 37 38l69 -3l12 -16l7 -3l9 -12q31 -25 47 -47q22 -35 31 -60l7 -9l87 -88l41 -72l9 -9q10 -16 19 -22l41 -41q22 -59 62 -94l60 -115l9 -19q9 -16 19 -22
+q15 -16 25 -31q9 -32 25 -50l19 -10h100q84 122 75 251l-225 225l-19 31q-10 35 -31 53l-188 188q-22 19 -35 38l-25 53l-9 9l-31 31l-3 7q-16 9 -25 22q-7 56 15 97l13 25l106 109l9 22l7 9q9 25 34 54q25 18 50 46q25 25 38 44q12 38 31 60l41 40q6 10 12 13l60 59
+q9 7 12 13l100 100l3 16l4 40q9 50 9 78h-266l-16 -56l-31 -69l-41 -47l-28 -56l-34 -37l-3 -7q-25 -59 -66 -94l-6 -15q-16 -28 -22 -47l-10 -10l-59 -59q-22 -50 -47 -78h-25q-47 -3 -78 3q-28 34 -41 75q-94 78 -131 169q-10 6 -13 9l-9 10l-16 19l-62 59l-3 9l-26 50
+q-21 29 -40 44l-16 35l-6 9l-38 78q-18 25 -37 41l-13 56q-12 10 -28 6q-122 -15 -194 -97z" />
+ <glyph glyph-name="y" unicode="y" horiz-adv-x="1563"
+d="M206 1730h-30q-36 -9 -60 -6l-109 -108v-109l9 -15q22 -48 55 -78l3 -6q9 -25 18 -37q3 -9 6 -12q6 -9 9 -12l93 -96l3 -9l24 -49l64 -63l21 -42q9 -15 12 -24q42 -36 57 -85q9 -15 18 -21l52 -51l12 -21l15 -33q15 -21 30 -36q21 -25 27 -49l12 -21l30 -30l37 -69
+q42 -46 60 -91v-253q-6 -6 -9 -13.5t-6 -10.5l-9 -24q-12 -19 -18 -34l-12 -21l-3 -9l-10 -18l-30 -60q-15 -12 -18 -18l-96 -97l-6 -3q-43 -15 -70 -39q-9 -66 30 -103l10 -6l45 -45q30 -12 48 -24h112q30 27 45 48l18 34l3 9l9 18l12 21l3 9l18 33l57 175l10 21l63 160
+l3 12l3 12l30 84l9 18q18 28 24 49l12 21q18 42 33 66l3 9l10 18l39 76l3 9l78 157l6 9l15 33l6 9l39 81q28 24 43 49l9 18l9 18l9 18l9 21l36 72q9 24 18 37l15 27l3 9l27 57l6 9l37 75l36 40l3 6q24 51 57 84v106l-12 12l-54 27l-9 6l-33 3l-28 3h-24l-12 3l-45 3
+q-21 0 -54 3l-3 -27l-3 -33l-3 -33v-34l-3 -15q0 -36 -6 -60l-12 -30q0 -6 -6 -18l-16 -49q-9 -15 -12 -24l-21 -39l-15 -33q-9 -15 -12 -24l-36 -73q-9 -15 -12 -24q-9 -15 -12 -24q-9 -15 -12 -24l-45 -90l-6 -9l-22 -46l-6 -9l-9 -18q-6 -18 -15 -30l-3 -9l-12 -21l-3 -9
+l-18 -33l-15 -34q-3 -33 -15 -54l-91 3v9l-12 39q0 9 -6 22l-15 30q-15 24 -21 45l-21 39l-12 15l-18 18l-12 18q-12 31 -24 49l-55 54q-27 42 -39 72l-33 33l-12 22q-6 18 -15 30l-3 6l-48 63l-6 18l-6 9l-37 76q-57 60 -81 132l-12 18q-6 25 -6 43l-3 9l-3 39l-3 21
+q0 21 -3 54h-39z" />
+ <glyph glyph-name="z" unicode="z" horiz-adv-x="1724"
+d="M329 1728l-4 -13l-3 -15l-3 -13l-3 -13l-3 -28v-29l-3 -9v-22l-3 -10l-4 -44v-38l-3 -19l932 -3l-3 -9q-7 -38 -19 -60q-22 -19 -35 -35l-25 -22q-13 -19 -29 -29l-6 -9q-22 -19 -35 -35l-3 -9l-28 -54l-164 -164l-19 -35q-10 -25 -23 -41l-78 -79q-7 -9 -13 -13
+l-104 -101l-38 -72l-44 -45q-10 -6 -13 -12q-10 -6 -13 -13q-9 -6 -12 -12l-139 -139l-22 -35q-13 -32 -32 -54l-60 -60l-16 -16l-16 -15q-41 -45 -60 -60q-25 -60 -63 -98q-12 -101 29 -171l22 -16l1532 13l3 13l19 69q0 6 3 22l6 25q13 38 16 67v113l-13 13h-60
+q-19 -3 -31 -13q-10 -3 -13 -6l-9 -3l-35 -19l-10 -3q-15 -10 -25 -13l-22 -12h-13l-19 -7h-12l-19 -6h-10l-34 -9l-19 -4l-38 -6l-471 -9q-22 0 -38 -4h-126q-25 4 -47 -3h-146l-3 13l6 25q4 38 13 63l32 32q25 66 75 107l51 51q25 41 35 66l3 6l151 152q32 38 48 79l6 6
+q25 22 38 41l73 70q19 25 34 38q16 19 32 28l152 152l34 69l16 16q10 6 13 13l240 240q16 31 19 41l12 22v136l-19 19l-271 6l-10 3l-186 3l-9 3l-402 10q-19 6 -31 3h-79q-35 6 -60 3q-13 0 -32 7q-15 9 -25 12l-22 13l-10 3q-18 3 -31 3q-32 6 -54 6q-25 7 -47 4z" />
+ <glyph glyph-name="braceleft" unicode="{" horiz-adv-x="684"
+d="M493 1801l-35 -3l-44 -3l-69 -3l-6 -3q-16 -10 -25 -13l-41 -25l-53 -47l-7 -19l-3 -13l-25 -78v-10q0 -37 -6 -84v-22l-3 -35l-3 -53v-22l-3 -10q0 -37 -4 -87l-3 -13v-19q0 -28 -3 -69l-3 -25v-31q-3 -38 -3 -63l-3 -10l-32 -66l-12 -12l-35 -13l-15 -3q-35 -3 -57 -9
+v-142l19 -3l16 -3q37 -9 62 -9l19 -19l19 -35l19 -37v-38q0 -9 3 -12v-41l3 -25v-32l3 -6v-38l3 -19l4 -84l3 -10v-31l3 -22q-3 -35 3 -57v-47l3 -19v-44q6 -37 3 -62l7 -7l6 -15q15 -25 22 -47l15 -13q13 -16 32 -28l9 -10l25 -15q25 -10 38 -22h28l10 -3h28l9 -4
+q19 0 32 -3l47 -3h56v138h-166l-6 10l-10 53l-3 22l-3 44l-3 22v22q0 9 -3 13l-3 78l-4 13v40l-3 10l-3 91q-6 31 -3 53q-6 19 -4.5 33t-1.5 24l-3 94q-41 88 -107 141v66q75 66 107 141v41l3 22l6 88q-3 31 3 53l10 182l3 16q0 25 3 44v25l3 16v28l3 13v12l3 22l3 16l4 22
+l3 19l9 6h163v138h-47z" />
+ <glyph glyph-name="bar" unicode="|" horiz-adv-x="532"
+ />
+ <glyph glyph-name="braceright" unicode="}" horiz-adv-x="684"
+d="M0 1709q-3 -25 3 -47l35 -4l22 -3h19q10 0 13 -3q47 0 79 -6l19 -16v-25l3 -16l3 -45v-38l4 -19l3 -69l3 -19v-42l3 -25q0 -25 3 -44v-10q0 -22 4 -38v-41l3 -19l6 -114q13 -22 19 -41l6 -7l13 -25q25 -64 67 -102v-66l-32 -32q-29 -25 -44 -50l-19 -64q-10 -19 -10 -35
+l-6 -63v-19l-7 -98l-3 -23v-41l-3 -19v-35l-3 -16v-28q-3 -19 -3 -32l-4 -41q0 -25 -3 -44v-32q-3 -38 -3 -63l-16 -16q-9 0 -12 -3h-10q-19 -4 -32 -4l-19 -3h-22l-16 -3q-38 0 -63 -6v-140l120 7l10 3l76 3l35 19q57 29 92 70l3 12l9 23l16 57l3 6l4 63l3 16q0 22 3 38
+q0 38 3 67q0 19 3 31v42l3 6q-3 32 4 57l12 247l13 22q16 35 32 58l6 3l19 6l13 3l19 3q31 4 54 10v146h-10l-41 12q-54 10 -89 26l-22 212l-3 6q3 26 -3 48v35l-4 19l-3 79q0 10 -3 13v47l-3 13v13q0 19 -3 31v41l-3 7q3 32 -4 57l-3 16l-12 35v9q-13 29 -16 51
+q-54 57 -117 85l-13 4l-54 3q-19 3 -48 6l-44 3h-57v-95z" />
+ <glyph glyph-name="asciitilde" unicode="~" horiz-adv-x="1196"
+ />
+ <glyph glyph-name="Adieresis" unicode="&#xc4;" horiz-adv-x="1366"
+ />
+ <glyph glyph-name="Aring" unicode="&#xc5;" horiz-adv-x="1366"
+ />
+ <glyph glyph-name="Ccedilla" unicode="&#xc7;" horiz-adv-x="1479"
+ />
+ <glyph glyph-name="Eacute" unicode="&#xc9;" horiz-adv-x="1366"
+ />
+ <glyph glyph-name="Ntilde" unicode="&#xd1;" horiz-adv-x="1479"
+ />
+ <glyph glyph-name="Odieresis" unicode="&#xd6;" horiz-adv-x="1593"
+ />
+ <glyph glyph-name="Udieresis" unicode="&#xdc;" horiz-adv-x="1479"
+ />
+ <glyph glyph-name="aacute" unicode="&#xe1;"
+ />
+ <glyph glyph-name="agrave" unicode="&#xe0;"
+ />
+ <glyph glyph-name="acircumflex" unicode="&#xe2;"
+ />
+ <glyph glyph-name="adieresis" unicode="&#xe4;"
+ />
+ <glyph glyph-name="atilde" unicode="&#xe3;"
+ />
+ <glyph glyph-name="aring" unicode="&#xe5;"
+ />
+ <glyph glyph-name="ccedilla" unicode="&#xe7;" horiz-adv-x="1024"
+ />
+ <glyph glyph-name="eacute" unicode="&#xe9;"
+ />
+ <glyph glyph-name="egrave" unicode="&#xe8;"
+ />
+ <glyph glyph-name="ecircumflex" unicode="&#xea;"
+ />
+ <glyph glyph-name="edieresis" unicode="&#xeb;"
+ />
+ <glyph glyph-name="iacute" unicode="&#xed;" horiz-adv-x="569"
+ />
+ <glyph glyph-name="igrave" unicode="&#xec;" horiz-adv-x="569"
+ />
+ <glyph glyph-name="icircumflex" unicode="&#xee;" horiz-adv-x="569"
+ />
+ <glyph glyph-name="idieresis" unicode="&#xef;" horiz-adv-x="569"
+ />
+ <glyph glyph-name="ntilde" unicode="&#xf1;"
+ />
+ <glyph glyph-name="oacute" unicode="&#xf3;"
+ />
+ <glyph glyph-name="ograve" unicode="&#xf2;"
+ />
+ <glyph glyph-name="ocircumflex" unicode="&#xf4;"
+ />
+ <glyph glyph-name="odieresis" unicode="&#xf6;"
+ />
+ <glyph glyph-name="otilde" unicode="&#xf5;"
+ />
+ <glyph glyph-name="uacute" unicode="&#xfa;"
+ />
+ <glyph glyph-name="ugrave" unicode="&#xf9;"
+ />
+ <glyph glyph-name="ucircumflex" unicode="&#xfb;"
+ />
+ <glyph glyph-name="udieresis" unicode="&#xfc;"
+ />
+ <glyph glyph-name="dagger" unicode="&#x2020;"
+ />
+ <glyph glyph-name="degree" unicode="&#xb0;" horiz-adv-x="819"
+ />
+ <glyph glyph-name="cent" unicode="&#xa2;"
+ />
+ <glyph glyph-name="sterling" unicode="&#xa3;"
+ />
+ <glyph glyph-name="section" unicode="&#xa7;"
+ />
+ <glyph glyph-name="bullet" unicode="&#x2022;" horiz-adv-x="717"
+ />
+ <glyph glyph-name="paragraph" unicode="&#xb6;" horiz-adv-x="1100"
+ />
+ <glyph glyph-name="germandbls" unicode="&#xdf;" horiz-adv-x="1251"
+ />
+ <glyph glyph-name="registered" unicode="&#xae;" horiz-adv-x="1509"
+ />
+ <glyph glyph-name="copyright" unicode="&#xa9;" horiz-adv-x="1509"
+ />
+ <glyph glyph-name="trademark" unicode="&#x2122;" horiz-adv-x="2048"
+ />
+ <glyph glyph-name="acute" unicode="&#xb4;" horiz-adv-x="682"
+ />
+ <glyph glyph-name="dieresis" unicode="&#xa8;" horiz-adv-x="682"
+ />
+ <glyph glyph-name="AE" unicode="&#xc6;" horiz-adv-x="2048"
+ />
+ <glyph glyph-name="Oslash" unicode="&#xd8;" horiz-adv-x="1593"
+ />
+ <glyph glyph-name="plusminus" unicode="&#xb1;" horiz-adv-x="1124"
+ />
+ <glyph glyph-name="yen" unicode="&#xa5;"
+ />
+ <glyph glyph-name="mu1" unicode="&#xb5;" horiz-adv-x="1180"
+ />
+ <glyph glyph-name="ordfeminine" unicode="&#xaa;" horiz-adv-x="758"
+ />
+ <glyph glyph-name="ordmasculine" unicode="&#xba;" horiz-adv-x="748"
+ />
+ <glyph glyph-name="ae" unicode="&#xe6;" horiz-adv-x="1821"
+ />
+ <glyph glyph-name="oslash" unicode="&#xf8;" horiz-adv-x="1251"
+ />
+ <glyph glyph-name="questiondown" unicode="&#xbf;" horiz-adv-x="1251"
+ />
+ <glyph glyph-name="exclamdown" unicode="&#xa1;" horiz-adv-x="682"
+ />
+ <glyph glyph-name="logicalnot" unicode="&#xac;" horiz-adv-x="614"
+ />
+ <glyph glyph-name="florin" unicode="&#x192;"
+ />
+ <glyph glyph-name="guillemotleft" unicode="&#xab;"
+ />
+ <glyph glyph-name="guillemotright" unicode="&#xbb;"
+ />
+ <glyph glyph-name="ellipsis" unicode="&#x2026;" horiz-adv-x="2048"
+ />
+ <glyph glyph-name="Agrave" unicode="&#xc0;" horiz-adv-x="1366"
+ />
+ <glyph glyph-name="Atilde" unicode="&#xc3;" horiz-adv-x="1366"
+ />
+ <glyph glyph-name="Otilde" unicode="&#xd5;" horiz-adv-x="1593"
+ />
+ <glyph glyph-name="OE" unicode="&#x152;" horiz-adv-x="2048"
+ />
+ <glyph glyph-name="oe" unicode="&#x153;" horiz-adv-x="1933"
+ />
+ <glyph glyph-name="endash" unicode="&#x2013;"
+ />
+ <glyph glyph-name="emdash" unicode="&#x2014;" horiz-adv-x="2048"
+ />
+ <glyph glyph-name="quotedblleft" unicode="&#x201c;" horiz-adv-x="1043"
+d="M267 1736l-18 -63q-11 -18 -15 -29l-15 -44l-18 -33l-11 -22q-7 -22 -18 -37l-4 -11q-11 -29 -22 -48l-7 -11l-56 -114q-18 -33 -25 -55l-44 -147l3 -11q-7 -37 -7 -66q158 -51 265 44l3 22q11 77 19 103v15l7 29l4 19l7 58l11 30l4 14l18 45l4 14l18 59l26 81v18
+q7 37 11 92v30l4 11l3 88h-22q-81 -19 -125 -81zM881 1809q-44 -3 -74 -14l-7 -11q-37 -30 -51 -55l-15 -34l-11 -25l-8 -11q0 -8 -11 -26q-3 -18 -11 -29l-11 -22q-3 -19 -11 -30l-18 -37q0 -7 -11 -25l-55 -122l-18 -44l-12 -22l-36 -73q-19 -37 -48 -55v-88
+q132 -103 265 -19l14 22l11 41q11 25 15 44l11 51l11 37l4 15l3 14l11 41l4 14q4 22 7 26v11l11 33q4 30 15 66l4 19l7 25l4 19l11 29q0 22 11 52l11 40v11l18 63v11q11 25 15 44q0 25 -26 22z" />
+ <glyph glyph-name="quotedblright" unicode="&#x201d;" horiz-adv-x="981"
+d="M207 1783q-28 -10 -45 -20q-4 -14 -17 -38q-4 -21 -14 -45l-4 -20q-10 -25 -13 -45q-11 -31 -14 -55l-17 -55q-4 -24 -14 -59l-10 -31q-7 -38 -14 -58l-4 -14l-41 -148v-100l14 -17l10 3h72l55 55l18 55l10 21l10 31l42 86q10 28 20 45l55 110l7 10l17 38l7 11l42 86
+l37 37v83q-31 34 -55 52h-127zM685 1797q-52 -24 -83 -51v-14q-3 -7 -3 -14t-2 -14t-5 -24l-3 -24l-4 -21q-3 -20 -7 -24q0 -13 -3 -34l-4 -28l-3 -24l-10 -31q-11 -20 -18 -51l-13 -35l-7 -24l-31 -96l-4 -38l-3 -31v-28l-4 -13v-28q-6 -55 -6 -86q44 4 82 21q24 27 35 55
+l10 21l21 37q3 11 8 21t16 34l10 21l21 38q3 14 11.5 29.5t12.5 25.5l20 41l4 11q17 31 24 55q17 31 34 75l21 49l7 10q3 17 10 27l17 35v14q18 62 14 103l-62 14h-96z" />
+ <glyph glyph-name="quoteleft" unicode="&#x2018;" horiz-adv-x="455"
+d="M252 1727q-26 -22 -45 -63l-7 -11l-30 -60q-11 -34 -26 -56l-67 -153l-11 -22l-11 -34q-12 -18 -15 -29q-8 -19 -15 -30l-8 -23l-37 -74v-97l30 -30q15 -19 26 -26q104 -11 175 45l11 26q4 26 11 41l45 171l8 19v11l18 60l4 22l7 22l4 15l19 60l4 15q3 15 7 33l15 41
+q7 41 19 68l3 11v104q-52 34 -104 34q-8 -53 -30 -90z" />
+ <glyph glyph-name="quoteright" unicode="&#x2019;" horiz-adv-x="598"
+d="M278 1794q-30 -11 -44 -22l-51 -164l-4 -26l-15 -44l-3 -18l-55 -201l-4 -18l-4 -15l-3 -15l-11 -32l-4 -19l-11 -40q-25 -66 -29 -110h22l15 4q54 7 91 18q40 41 62 73q15 41 29 66l19 44l51 117q18 51 36 80q4 11 8 15l18 44l11 22l22 40l3 11q15 37 30 58v95l-55 55
+h-95z" />
+ <glyph glyph-name="divide" unicode="&#xf7;" horiz-adv-x="1124"
+ />
+ <glyph glyph-name="ydieresis" unicode="&#xff;" horiz-adv-x="1024"
+ />
+ <glyph glyph-name="Ydieresis" unicode="&#x178;" horiz-adv-x="1366"
+ />
+ <glyph glyph-name="Euro" unicode="&#x20ac;"
+ />
+ <glyph glyph-name="guilsinglleft" unicode="&#x2039;" horiz-adv-x="682"
+ />
+ <glyph glyph-name="guilsinglright" unicode="&#x203a;" horiz-adv-x="682"
+ />
+ <glyph glyph-name="daggerdbl" unicode="&#x2021;"
+ />
+ <glyph glyph-name="periodcentered" unicode="&#xb7;" horiz-adv-x="569"
+ />
+ <glyph glyph-name="periodcentered" unicode="&#x2219;" horiz-adv-x="569"
+ />
+ <glyph glyph-name="quotesinglbase" unicode="&#x201a;" horiz-adv-x="455"
+ />
+ <glyph glyph-name="quotedblbase" unicode="&#x201e;" horiz-adv-x="682"
+ />
+ <glyph glyph-name="perthousand" unicode="&#x2030;" horiz-adv-x="2048"
+ />
+ <glyph glyph-name="Acircumflex" unicode="&#xc2;" horiz-adv-x="1366"
+ />
+ <glyph glyph-name="Ecircumflex" unicode="&#xca;" horiz-adv-x="1366"
+ />
+ <glyph glyph-name="Aacute" unicode="&#xc1;" horiz-adv-x="1366"
+ />
+ <glyph glyph-name="Edieresis" unicode="&#xcb;" horiz-adv-x="1366"
+ />
+ <glyph glyph-name="Egrave" unicode="&#xc8;" horiz-adv-x="1366"
+ />
+ <glyph glyph-name="Iacute" unicode="&#xcd;" horiz-adv-x="569"
+ />
+ <glyph glyph-name="Icircumflex" unicode="&#xce;" horiz-adv-x="569"
+ />
+ <glyph glyph-name="Idieresis" unicode="&#xcf;" horiz-adv-x="569"
+ />
+ <glyph glyph-name="Igrave" unicode="&#xcc;" horiz-adv-x="569"
+ />
+ <glyph glyph-name="Oacute" unicode="&#xd3;" horiz-adv-x="1593"
+ />
+ <glyph glyph-name="Ocircumflex" unicode="&#xd4;" horiz-adv-x="1593"
+ />
+ <glyph glyph-name="Ograve" unicode="&#xd2;" horiz-adv-x="1593"
+ />
+ <glyph glyph-name="Uacute" unicode="&#xda;" horiz-adv-x="1479"
+ />
+ <glyph glyph-name="Ucircumflex" unicode="&#xdb;" horiz-adv-x="1479"
+ />
+ <glyph glyph-name="Ugrave" unicode="&#xd9;" horiz-adv-x="1479"
+ />
+ <glyph glyph-name="circumflex" unicode="&#x2c6;" horiz-adv-x="682"
+ />
+ <glyph glyph-name="tilde" unicode="&#x2dc;" horiz-adv-x="682"
+ />
+ <glyph glyph-name="cedilla" unicode="&#xb8;" horiz-adv-x="682"
+ />
+ <glyph glyph-name="Scaron" unicode="&#x160;" horiz-adv-x="1366"
+ />
+ <glyph glyph-name="scaron" unicode="&#x161;" horiz-adv-x="1024"
+ />
+ <glyph glyph-name="Zcaron" unicode="&#x17d;" horiz-adv-x="1251"
+ />
+ <glyph glyph-name="zcaron" unicode="&#x17e;" horiz-adv-x="1024"
+ />
+ <glyph glyph-name="brokenbar" unicode="&#xa6;" horiz-adv-x="532"
+ />
+ <glyph glyph-name="Eth" unicode="&#xd0;" horiz-adv-x="1479"
+ />
+ <glyph glyph-name="eth" unicode="&#xf0;"
+ />
+ <glyph glyph-name="Yacute" unicode="&#xdd;" horiz-adv-x="1366"
+ />
+ <glyph glyph-name="yacute" unicode="&#xfd;" horiz-adv-x="1024"
+ />
+ <glyph glyph-name="Thorn" unicode="&#xde;" horiz-adv-x="1366"
+ />
+ <glyph glyph-name="thorn" unicode="&#xfe;"
+ />
+ <glyph glyph-name="multiply" unicode="&#xd7;" horiz-adv-x="1196"
+ />
+ <glyph glyph-name="onesuperior" unicode="&#xb9;" horiz-adv-x="682"
+ />
+ <glyph glyph-name="twosuperior" unicode="&#xb2;" horiz-adv-x="682"
+ />
+ <glyph glyph-name="threesuperior" unicode="&#xb3;" horiz-adv-x="682"
+ />
+ <glyph glyph-name="onehalf" unicode="&#xbd;" horiz-adv-x="1708"
+ />
+ <glyph glyph-name="onequarter" unicode="&#xbc;" horiz-adv-x="1708"
+ />
+ <glyph glyph-name="threequarters" unicode="&#xbe;" horiz-adv-x="1708"
+ />
+ <glyph glyph-name="overscore" unicode="&#xaf;" horiz-adv-x="1131"
+ />
+ <glyph glyph-name="dcaron" unicode="&#x10f;" horiz-adv-x="1259"
+ />
+ <glyph glyph-name="zacute" unicode="&#x17a;" horiz-adv-x="1024"
+ />
+ <glyph glyph-name="Zdot" unicode="&#x17b;" horiz-adv-x="1251"
+ />
+ <glyph glyph-name="SF060000" unicode="&#x252c;" horiz-adv-x="1451"
+ />
+ <glyph glyph-name="SF450000" unicode="&#x2567;" horiz-adv-x="1451"
+ />
+ </font>
+</defs></svg>
Index: live/styles/fonts/TROGLO__.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/TROGLO__.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/Buffied.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/Buffied.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/slayer11.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/slayer11.woff
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/MacEnvy_DB-Regular.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/MacEnvy_DB-Regular.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/x-files.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/x-files.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/Torchwood.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/Torchwood.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/STARGATE.TTF
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/STARGATE.TTF
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/a_futuraorto.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/a_futuraorto.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/a_futuraorto_bold.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/a_futuraorto_bold.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/gunplay.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/gunplay.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/akbar.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/akbar.ttf
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/digital/TRANA___.TTF
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/digital/TRANA___.TTF
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/fonts/BATTLEST.TTF
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/styles/fonts/BATTLEST.TTF
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/styles/lcars-ani.css
===================================================================
--- live/styles/lcars-ani.css (nonexistent)
+++ live/styles/lcars-ani.css (revision 198)
@@ -0,0 +1,320 @@
+<?php
+\header('Last-Modified: ' . gmdate('D, d M Y H:i:s', @filemtime(__FILE__)) . ' GMT');
+
+/* Resource expires in HTTP/1.1 caches 24h after last retrieval */
+\header('Cache-Control: max-age=86400, s-maxage=86400, must-revalidate, proxy-revalidate');
+
+/* Resource expires in HTTP/1.0 caches 24h after last retrieval */
+\header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 86400) . ' GMT');
+
+\header('Content-Type: text/css; charset=UTF-8');
+
+require_once 'css/least/Mixins.php';
+use de\pointedears\css\least\Mixins;
+?>@charset "UTF-8";
+
+/* 0.0 to 1.0 s */
+<?php
+ /* hide up to 0.25 s */
+ Mixins::keyframes('fade-in', <<<CSS
+ from, 25% {
+ opacity: 0;
+ }
+
+ to {
+ opacity: 1;
+ }
+CSS
+ );
+?>
+
+body.fade-in {
+ /* TODO: Step-by-step display instead */
+ /*-webkit-animation-name: fade-in;*/
+ /* -webkit-animation-iteration-count: infinite; */
+}
+
+/* 0.0 to 0.6 s */
+<?php
+ /* up to shortly before 0.6 s */
+ Mixins::keyframes('empty-content', <<<CSS
+ from, 99% {
+ opacity: 0;
+ }
+CSS
+ );
+?>
+
+.empty.fade-in #content {
+ <?php
+ Mixins::animation('-name', 'empty-content');
+ Mixins::animation('-duration', '0.6s');
+ Mixins::animation('-timing-function', 'linear');
+ ?>
+}
+
+/*
+time in s |0.0 |0.5 |0.75 |1.0 |1.5
+ : |0.625 : : |1.25
+ : : |0.63 |0.875
+bow-top |------------------>| : : : : : : :
+bow-top-left | :-->| : : : : : :
+bow-top-text |------------------>| : : : : : : :
+menu-container | : :->| : : : : :
+footer |------------------>| : : : : : : :
+menu | : :->| : : : : :
+footer-text |------------------>| : : : : : :
+bow-bottom | :> | : : : :
+elbo-bg | :>| : : :
+elbo | :->| :
+elbo-border | :->|
+content | :->|
+
+1: bow-top-left
+
+*/
+
+/* 0.0 to 0.5 s */
+<?php
+ Mixins::keyframes('bow-top',
+ 'from {
+ left: 90%;
+ min-width: auto;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ border-top-right-radius: 1.2em;
+ border-bottom-right-radius: 1.2em;
+ }');
+?>
+
+.fade-in #bow-top {
+ <?php
+ Mixins::animation('-name', 'bow-top');
+ Mixins::animation('-duration', '0.5s');
+ Mixins::animation('-timing-function', 'linear');
+ ?>
+}
+
+/* 0.0 to 0.5 s */
+<?php
+ /* up to shortly before 0.5 s */
+ Mixins::keyframes('bow-top-text', <<<CSS
+ from, 99% {
+ opacity: 0;
+ }
+CSS
+ );
+?>
+
+.fade-in #bow-top .text {
+ <?php
+ Mixins::animation('-name', 'bow-top-text');
+ Mixins::animation('-duration', '0.5s');
+ Mixins::animation('-timing-function', 'linear');
+ ?>
+}
+
+/* 0.0 to 0.5 s */
+<?php
+ Mixins::keyframes('footer',
+ 'from {
+ left: 90%;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ }');
+?>
+
+.empty.fade-in #footer {
+ <?php
+ Mixins::animation('-name', 'footer');
+ Mixins::animation('-duration', '0.5s');
+ Mixins::animation('-timing-function', 'linear');
+ ?>
+}
+
+/* 0.0 to 0.5 s */
+<?php
+ /* up to shortly before 0.5 s */
+ Mixins::keyframes('footer-text', <<<CSS
+ from, 99% {
+ opacity: 0;
+ }
+CSS
+ );
+?>
+
+.empty.fade-in #footer .text {
+ <?php
+ Mixins::animation('-name', 'footer-text');
+ Mixins::animation('-duration', '0.5s');
+ Mixins::animation('-timing-function', 'linear');
+ ?>
+}
+
+/* 0.0 to 0.625s */
+<?php
+ /* up to 0.5s */
+ Mixins::keyframes('bow-top-left', <<<CSS
+ from, 80% {
+ height: 0;
+ }
+CSS
+ );
+?>
+
+.fade-in #bow-top-left {
+ <?php
+ Mixins::animation('-name', 'bow-top-left');
+ Mixins::animation('-duration', '0.625s');
+ Mixins::animation('-timing-function', 'linear');
+ ?>
+}
+
+/* 0.0 to 0.63s */
+<?php
+ /* up to ca. 0.61875s */
+ Mixins::keyframes('menu-container', <<<CSS
+ from, 98% {
+ opacity: 0;
+ }
+CSS
+ );
+?>
+
+.fade-in .menu-container {
+ <?php
+ Mixins::animation('-name', 'menu-container');
+ Mixins::animation('-duration', '0.63s');
+ Mixins::animation('-timing-function', 'linear');
+ ?>
+}
+
+/* 0.0 to 0.63s */
+<?php
+ /* up to ca. 0.61875 s */
+ Mixins::keyframes('menu', <<<CSS
+ from, 98% {
+ opacity: 0;
+ }
+CSS
+ );
+?>
+
+.fade-in .menu
+{
+ <?php
+ Mixins::animation('-name', 'menu');
+ Mixins::animation('-duration', '0.63s');
+ Mixins::animation('-timing-function', 'linear');
+ ?>
+}
+
+/* 0.0 to 0.75s */
+<?php
+ Mixins::keyframes('bow-bottom', <<<CSS
+ from {
+ bottom: 2.6em;
+ height: 0em;
+ opacity: 0;
+ }
+
+ /* 0.64125 s */
+ 83%, 97% {
+ bottom: 2.6em;
+ width: 0em;
+ height: 0em;
+ opacity: 1;
+ }
+CSS
+ );
+?>
+
+.fade-in #bow-bottom {
+ <?php
+ Mixins::animation('-name', 'bow-bottom');
+ Mixins::animation('-duration', '0.75s');
+ Mixins::animation('-timing-function', 'linear');
+ ?>
+}
+
+/* 0.0 to 0.75s */
+<?php
+ /* hide up to 0.7425 s */
+ Mixins::keyframes('elbo-bg', <<<CSS
+ from, 99% {
+ opacity: 0;
+ }
+CSS
+ );
+?>
+
+.fade-in .multi-display .upper .elbo-button,
+.fade-in .multi-display .lower .bg
+{
+ <?php
+ Mixins::animation('-name', 'elbo-bg');
+ Mixins::animation('-duration', '0.75s');
+ Mixins::animation('-timing-function', 'linear');
+ ?>
+}
+
+/* 0.0 to 0.875 s */
+<?php
+ /* hide up to 0.86625 s */
+ Mixins::keyframes('elbo', <<<CSS
+ from, 99% {
+ opacity: 0;
+ }
+CSS
+ );
+?>
+
+.fade-in .multi-display .elbo {
+ <?php
+ Mixins::animation('-name', 'elbo');
+ Mixins::animation('-duration', '0.875s');
+ Mixins::animation('-timing-function', 'linear');
+ ?>
+}
+
+/* 0.0 to 1s */
+<?php
+ /* up to 0.99 s */
+ Mixins::keyframes('elbo-border', <<<CSS
+ from, 99% {
+ opacity: 0;
+ }
+CSS
+ );
+?>
+
+.fade-in .multi-display .border
+{
+ <?php
+ Mixins::animation('-name', 'elbo-border');
+ Mixins::animation('-duration', '1s');
+ Mixins::animation('-timing-function', 'linear');
+ ?>
+}
+
+/* 0.0 to 1.125s */
+<?php
+ /* hide up to 1.11375 s */
+ Mixins::keyframes('content', <<<CSS
+ from, 99% {
+ opacity: 0;
+ }
+CSS
+ );
+?>
+
+.fade-in .multi-display .upper .content,
+.fade-in #connectors,
+.fade-in #content
+{
+ <?php
+ Mixins::animation('-name', 'content');
+ Mixins::animation('-duration', '1.125s');
+ Mixins::animation('-timing-function', 'linear');
+ ?>
+}
\ No newline at end of file
/live/styles/lcars-ani.css
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: live/styles/lcars22.css
===================================================================
--- live/styles/lcars22.css (nonexistent)
+++ live/styles/lcars22.css (revision 198)
@@ -0,0 +1,981 @@
+<?php
+@\header('Last-Modified: ' . gmdate('D, d M Y H:i:s', @filemtime(__FILE__)) . ' GMT');
+
+/* Resource expires in HTTP/1.1 caches 24h after last retrieval */
+@\header('Cache-Control: max-age=86400, s-maxage=86400, must-revalidate, proxy-revalidate');
+
+/* Resource expires in HTTP/1.0 caches 24h after last retrieval */
+@\header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 86400) . ' GMT');
+
+@\header('Content-Type: text/css; charset=UTF-8');
+
+require_once 'css/least/Mixins.php';
+use de\pointedears\css\least\Mixins;
+?>@charset "UTF-8";
+
+<?php
+ if (!isset($_GET['ani']) || $_GET['ani'] !== '0')
+ {
+ /* Optional general animations */
+?>
+@import url("/styles/lcars-ani.css");
+<?php
+ }
+?>
+
+<?php
+ /* Non-optional content-specific animations */
+ Mixins::keyframes('analysis', <<<CSS
+ from, 74% {
+ opacity: 0;
+ }
+
+ 75%, to {
+ opacity: 1;
+ color: #fc6;
+ }
+CSS
+ );
+?>
+
+<?php
+ Mixins::keyframes('analysis-scan', <<<CSS
+ from, 25% {
+ color: #fc6;
+ }
+
+ 26%, to {
+ color: #fff;
+ }
+CSS
+ );
+
+ /* FIXME: :hover hides first row */
+/*
+.multi-display .upper .content .analysis:hover tr {
+ <?php
+ Mixins::animation('-play-state', 'paused');
+ ?>
+}
+*/
+?>
+
+.multi-display .upper .content .analysis tr:hover
+{
+ color: #f90 !important;
+}
+
+/* Blink rate 1 Hz should be safe for people with photosensitive epilepsy */
+.multi-display .upper .content .analysis tr:nth-child(1)
+{
+ <?php
+ Mixins::animation('', 'analysis 1.5s linear 0s, analysis-scan 4s linear 2.0s infinite');
+ ?>
+}
+
+.multi-display .upper .content .analysis tr:nth-child(2)
+{
+ <?php
+ Mixins::animation('', 'analysis 1.5s linear 0.25s, analysis-scan 4s linear 3.0s infinite');
+ ?>
+}
+
+.multi-display .upper .content .analysis tr:nth-child(3)
+{
+ <?php
+ Mixins::animation('', 'analysis 1.5s linear 0.5s, analysis-scan 4s linear 4.0s infinite');
+ ?>
+}
+
+<?php
+ Mixins::keyframes('analysis-offline', <<<CSS
+ from, 33% {
+ color: #300;
+ }
+
+ 34%, to {
+ color: #f00;
+ }
+CSS
+ );
+?>
+
+.offline {
+ <?php
+ Mixins::animation('', 'analysis-offline 3s linear 2.0s infinite');
+ ?>
+}
+
+body {
+ margin-top: 12em;
+ margin-left: 16.8em;
+ margin-right: 0.2em;
+ margin-bottom: 0.2em;
+}
+
+/* HTML5 elements */
+
+nav
+{
+ display: block;
+}
+
+/* Bow (main) and elbo (multi-view) */
+
+#LCARS {
+ position: fixed;
+ left: 0;
+ top: 0;
+ right: 0;
+ padding: 0.2em;
+ background-color: #000;
+ z-index: 1701;
+}
+
+#bow {
+ position: absolute;
+ left: 0.2em;
+ top: 0.2em;
+ right: 0.2em;
+ height: 2.4em;
+ padding-bottom: 0.2em;
+ background-color: #000;
+}
+
+#bow-top {
+ /* NOTE: position: absolute is needed for animation */
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ min-width: 15.4em;
+ height: 2em;
+ background-color: #999;
+ border-top-left-radius: 2.4em;
+ border-top-right-radius: 1.2em;
+ border-bottom-right-radius: 1.2em;
+ line-height: 0.9;
+}
+
+.empty #bow-top {
+ border-top-left-radius: 1.2em;
+ border-bottom-left-radius: 1.2em;
+ min-width: 10em;
+}
+
+
+#bow-top .text {
+ position: absolute;
+ margin: 0;
+ left: 4.33em;
+ top: 0;
+ right: 0.75em;
+ height: 1em;
+ text-align: right;
+ color: #fc0;
+ font-size: 2.4em;
+ padding-right: 0.1em;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.empty #bow-top .text {
+ left: 0.93em;
+}
+
+
+
+#bow-top .text span {
+ padding-right: 0.1em;
+ background-color: #000;
+ padding-left: 0.1em;
+ text-transform: uppercase;
+ white-space: nowrap;
+}
+
+.empty #footer-container {
+ position: fixed;
+ left: 0.2em;
+ bottom: 0;
+ right: 0.2em;
+ min-height: 2.4em;
+ padding-top: 0.2em;
+ padding-bottom: 0.2em;
+ background-color: #000;
+}
+
+
+.empty #footer {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ height: 2em;
+ min-width: 10em;
+ margin-bottom: 0.2em;
+ background-color: #999;
+ border-radius: 1.2em;
+ line-height: 0.9;
+}
+
+.empty #footer .text {
+ position: absolute;
+ margin: 0;
+ left: 0.93em;
+ top: 0;
+ right: 0.75em;
+ height: 1em;
+ background-color: transparent;
+ color: #fc0;
+ font-size: 2.4em;
+ padding-right: 0.1em;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.empty #footer .text span {
+ padding-right: 0.1em;
+ background-color: #000;
+ padding-left: 0.1em;
+ text-transform: uppercase;
+ white-space: nowrap;
+}
+
+.empty .separator-left {
+ position: absolute;
+ left: 2em;
+ height: 2em;
+ width: 0.25em;
+ background-color: #000;
+}
+
+.empty .separator-right {
+ position: absolute;
+ right: 2em;
+ height: 2em;
+ width: 0.25em;
+ background-color: #000;
+}
+
+.bow {
+ background-color: #999;
+}
+
+#bow-top-left {
+ position: absolute;
+ top: 2em;
+ left: 0;
+ right: 0;
+ height: 4.4em;
+ width: 9.2em;
+ background-color: #999;
+ overflow: hidden;
+}
+
+.empty #bow-top-left {
+ display: none;
+}
+
+#bow-top-left .concave {
+ position: absolute;
+ top: 0;
+ left: 8em;
+ height: 4.4em;
+ width: 1.2em;
+ background-color: #000;
+ border-top-left-radius: 1.2em;
+}
+
+.empty #bow-top-left-concave {
+ display: none;
+}
+
+.menu-container {
+ position: fixed;
+ left: 0.2em;
+ top: 6.8em;
+ width: 8em;
+ bottom: 2.8em;
+ background-color: #999;
+ overflow: auto;
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+
+.menu
+{
+ height: 23.6em;
+ background-color: #000;
+}
+
+.menu ul {
+ margin: 0 0.2em 0 0;
+ padding: 0;
+}
+
+.menu ul:first-child {
+ padding-top: 1em;
+}
+
+.menu li {
+ margin: 0;
+}
+
+#bow #bottom
+{
+ position: fixed;
+ left: 0;
+ bottom: 0;
+ width: 10.4em;
+ height: 2.4em;
+ background-color: #000;
+ z-index: 1701;
+}
+
+#bow-bottom {
+ position: absolute;
+ bottom: 0.2em;
+ left: 0.2em;
+ width: 8em;
+ height: 2.4em;
+ border-bottom-left-radius: 0em;
+ border-bottom-right-radius: 0em;
+ background-color: #999;
+}
+
+.empty #bow-bottom {
+ display: none;
+}
+
+#bow-bottom .concave {
+ position: absolute;
+ margin-left: 0.2em;
+ margin-bottom: 0.2em;
+ bottom: 0.3em;
+ left: 7.8em;
+ height: 2.1em;
+ width: 2.2em;
+ border-bottom-left-radius: 1.2em;
+ border-bottom-right-radius: 1em;
+ background-color: #000;
+}
+
+#bow-bottom .spacer {
+ position: absolute;
+ left: 10.2em;
+ bottom: 0;
+ width: 0.2em;
+ height: 0.5em;
+ background-color: black;
+}
+
+.empty #bow-bottom-left-concave {
+ display: none;
+}
+
+/* Controls */
+
+input,
+select
+{
+ margin: 0 0.2em 0.2em 0;
+ font-size: 1em;
+}
+
+input
+{
+ min-width: 4.875em;
+ border: 1px solid #7d7d7d;
+ padding: 0 0.125em;
+ background-color: #000;
+ color: #fff;
+}
+
+input:focus
+{
+ border-color: #f90;
+}
+
+select
+{
+ min-width: 5em;
+ background-color: #7d7d7d;
+ color: #000 !important;
+ border: none;
+}
+
+select:focus
+{
+ background-color: #f90;
+ color: #000;
+}
+
+option {
+ background-color: #000;
+ color: #fff;
+}
+
+option:checked {
+ color: #fc6;
+}
+
+.button:visited,
+.button
+{
+ position: relative;
+ display: inline-block;
+ margin-right: 0.2em;
+ margin-bottom: 0.2em;
+ width: 5em;
+ height: 2em;
+ background-color: #7d7d7d; /* c9c */
+ color: #000 !important;
+ text-decoration: none !important;
+ text-transform: uppercase;
+ /* overflow: hidden; */
+ cursor: pointer !important;
+}
+
+.button .text {
+ position: absolute;
+ bottom: 0;
+ right: 0.5em;
+ cursor: pointer !important;
+}
+
+.button.command {
+ border-radius: 1.2em;
+}
+
+.button.command .text {
+ position: absolute;
+ bottom: 0;
+ right: 1em;
+}
+
+.button:hover,
+.button:focus,
+.button.selected:hover,
+.button.selected:focus,
+.group .button:hover,
+.group .button:focus,
+.group .button:visited:hover,
+.group .button:visited:focus
+{
+ background-color: #f90 !important;
+ color: #000 !important;
+}
+
+.button:active,
+.button.selected:active,
+.group .button:active,
+.group .button:visited:active
+{
+ background-color: #fff !important;
+ color: #000 !important;
+}
+
+.menu bow {
+ width: 8em;
+}
+
+.menu .button {
+ display: block;
+ width: 8em;
+ height: 1em;
+ line-height: 1;
+ background-color: #9cf;
+ color: #000 !important;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+#connectors {
+ position: fixed;
+ left: 8.4em;
+ top: 5.6em;
+}
+
+#connectors div {
+ position: absolute;
+}
+
+#connectors .top {
+ top: 0;
+ height: 1em;
+}
+
+#connectors .mid {
+ top: 13.6em;
+ height: 0.8em;
+}
+
+#connectors .left {
+ left: 0;
+ width: 2em;
+}
+
+#connectors .right {
+ left: 2.2em;
+ width: 0em;
+}
+
+.multi-display
+{
+ position: fixed;
+ top: 2.6em;
+ left: 10.6em;
+ right: 0;
+}
+
+.multi-display .button
+{
+ width: 5em !important;
+}
+
+#content.fixed {
+ position: fixed;
+ margin-right: 0.2em;
+ top: 12em;
+ right: 0;
+ bottom: 0.2em;
+ left: 16.8em;
+ overflow: hidden;
+}
+
+.multi-display .upper
+{
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ height: 7.5em;
+ padding-right: 0.2em;
+ background-color: black;
+}
+
+.multi-display .upper .content
+{
+ position: absolute;
+ top: 0;
+ left: 6em;
+ bottom: 1.3em;
+ right: 0.2em;
+ background-color: black;
+ color: white;
+ text-align: right;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.multi-display .upper .content .title
+{
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 1em;
+ right: 0;
+ background-color: black;
+ color: white;
+ font-size: 2.4em;
+ text-transform: uppercase;
+ text-align: right;
+ overflow: hidden;
+}
+
+.multi-display .upper .content .title span
+{
+ white-space: nowrap;
+}
+
+.multi-display .upper .content .analysis {
+ position: absolute;
+ top: 2.4em;
+ bottom: 0;
+ right: 11em;
+ left: 0;
+ overflow: hidden;
+ text-align: left;
+ cursor: default;
+}
+
+.multi-display .upper .content .analysis table {
+ border-collapse: collapse;
+ line-height: 1.2;
+ max-width: 100%;
+}
+
+.multi-display .upper .content .analysis th {
+ padding: 0 0.4em 0 0.1em;
+ font-weight: normal;
+ text-align: left;
+ text-transform: uppercase;
+ white-space: nowrap;
+ vertical-align: baseline;
+}
+
+.multi-display .upper .content .analysis th:nth-child(3) {
+ padding-left: 0.7em;
+}
+
+.multi-display .upper .content .analysis td {
+ padding: 0 0.1em 0 0.1em;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ vertical-align: baseline;
+ text-overflow: ellipsis;
+}
+
+.multi-display .upper .content .analysis td sup {
+ line-height: 1;
+ font-weight: 500;
+}
+
+.multi-display .upper .content .commands
+{
+ position: absolute;
+ margin: 0;
+ padding: 0;
+ top: 2.4em;
+ right: 0;
+ height: 3.8em;
+ width: 10.2em;
+ list-style: none;
+}
+
+.multi-display .upper .content .commands li
+{
+ position: absolute;
+ margin: 0;
+ width: 5em;
+ height: 1.8em;
+}
+
+.multi-display .upper .content .commands .button
+{
+ position: absolute;
+ top: 0;
+ left: 0;
+ margin: 0;
+ height: 1.8em;
+ border-radius: 0.9em;
+ text-transform: none;
+}
+
+.multi-display .upper .content .commands .button .text {
+ right: 1em;
+}
+
+.multi-display .upper .content #cmd1
+{
+ top: 0;
+ right: 5.2em;
+}
+
+.multi-display .upper .content #cmd2
+{
+ top: 0;
+ right: 0;
+}
+
+.multi-display .upper .content #cmd3
+{
+ top: 2em;
+ right: 0;
+}
+
+.multi-display .upper .content #cmd4
+{
+ top: 2em;
+ right: 5.2em;
+}
+
+.multi-display .upper .elbo-button
+{
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 5em;
+ height: 4em;
+ background-color: #c9c !important;
+ color: #000 !important;
+ cursor: default;
+}
+
+.multi-display .upper .elbo-button .text
+{
+ position: absolute;
+ bottom: 0;
+ right: 0.2em;
+ max-width: 4em;
+ max-height: 3.6em;
+ text-align: right;
+ overflow: hidden;
+}
+
+.multi-display .upper .elbo
+{
+ position: absolute;
+ left: 0;
+ top: 4.2em;
+ width: 6em;
+ height: 3.2em;
+ border-bottom-left-radius: 2em;
+ background-color: #9cf;
+ color: #000;
+}
+
+.multi-display .upper .elbo .text
+{
+ position: absolute;
+ top: 0;
+ right: 1.2em;
+ max-width: 4em;
+ max-height: 2.2em;
+ text-align: right;
+ overflow: hidden;
+ cursor: default;
+}
+
+.elbo [title],
+.button [title]
+{
+ border-bottom: none;
+}
+
+.multi-display .upper .elbo .concave
+{
+ position: absolute;
+ left: 5em;
+ top: 0;
+ width: 1.1em;
+ height: 2.2em;
+ border-bottom-left-radius: 1em;
+ background-color: black;
+}
+
+.multi-display .border
+{
+ height: 1em;
+}
+
+.multi-display .upper .border
+{
+ position: absolute;
+ top: 6.4em;
+ left: 6em;
+ right: 0.2em;
+}
+
+.multi-display .border div
+{
+ position: absolute;
+ top: 0;
+ height: 1em;
+}
+
+.multi-display .upper .border div
+{
+ background-color: #9cf;
+}
+
+.multi-display .upper .border .left
+{
+ left: 0;
+ right: 5.2em;
+ height: 1em;
+}
+
+.multi-display .upper .border .right
+{
+ width: 5em;
+ right: 0;
+}
+
+.multi-display .lower
+{
+ position: absolute;
+ top: 7.5em;
+ left: 0;
+ height: 0.1em;
+ right: 0;
+ background-color: black;
+}
+
+.multi-display .lower .elbo
+{
+ position: absolute;
+ top: 0.1em;
+ left: 0;
+ width: 6em;
+ height: 3em;
+ border-top-left-radius: 2em;
+ background-color: #fc6;
+}
+
+.multi-display .lower .elbo .concave
+{
+ position: absolute;
+ left: 5em;
+ top: 1em;
+ width: 1.1em;
+ height: 2.1em;
+ background-color: black;
+ border-top-left-radius: 1em;
+}
+
+.multi-display .lower .bg
+{
+ position: fixed;
+ top: 13.4em;
+ bottom: 0.2em;
+ width: 5em;
+ background-color: #fc6;
+}
+
+.multi-display .lower .border-container
+{
+ position: absolute;
+ top: 0.1em;
+ left: 6em;
+ right: 0;
+ height: 1.2em;
+ background-color: black;
+}
+
+.multi-display .lower .border
+{
+ position: absolute;
+ left: 0;
+ right: 0.2em;
+}
+
+.multi-display .lower .border div
+{
+ background-color: #fc6;
+}
+
+.multi-display .lower .border .left
+{
+ left: 0;
+ right: 5.2em;
+}
+
+.multi-display .lower .border .right
+{
+ width: 5em;
+ right: 0;
+}
+
+.menu .button.secondary,
+.multi-display .lower .elbo.secondary,
+.multi-display .lower .bg.secondary,
+.multi-display .lower .border.secondary
+{
+ background-color: #f96;
+}
+
+.menu .button.ancillary,
+.multi-display .lower .elbo.ancillary,
+.multi-display .lower .bg.ancillary,
+.multi-display .lower .border.ancillary
+{
+ background-color: #c9c;
+}
+
+.menu .button.database,
+.multi-display .lower .elbo.database,
+.multi-display .lower .bg.database,
+.multi-display .lower .border.database
+{
+ background-color: #c66;
+}
+
+.menu .button .text {
+ position: static;
+ margin: 0 0.25em;
+}
+
+.button.selected {
+ background-color: #fc6 !important;
+ color: #000 !important;
+}
+
+.group {
+ margin: 0 auto;
+ position: relative;
+ width: 7.7em;
+}
+
+.group .separator {
+ float: left;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 1.5em;
+ height: 100%;
+ background-color: #c66;
+ color: #000;
+}
+
+.group .separator:after {
+ position: absolute;
+ width: 0.8em;
+ height: 0.5em;
+ bottom: 0.25em;
+ left: 0.25em;
+ background-color: #000;
+ content: "\a0";
+}
+
+.group ul {
+ margin-left: 1.7em;
+}
+
+.group li {
+ margin-bottom: 0;
+}
+
+.group .button:visited,
+.group .button
+{
+ display: block;
+ position: relative;
+ width: 6em;
+ background-color: #99f !important;
+}
+
+.group li:last-child .button
+{
+ margin-bottom: 0;
+}
+
+.button.right {
+ border-top-right-radius: 1em;
+ border-bottom-right-radius: 1em;
+}
+
+.button.right .text {
+ right: 1em;
+}
+
+.button.left {
+ border-top-left-radius: 1em;
+ border-bottom-left-radius: 1em;
+}
+
+.group .button .key {
+ display: inline-block;
+ position: absolute;
+ left: 0.2em;
+ top: 0;
+ bottom: 0;
+ padding: 0 0.1em;
+ background-color: #000;
+ color: #f90;
+ font-size: 2.4em;
+ text-transform: uppercase;
+ line-height: 0.9;
+}
+
+<?php require_once 'lcars-responsive.css'; ?>
\ No newline at end of file
/live/styles/lcars22.css
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: live/styles/lcars-responsive.css
===================================================================
--- live/styles/lcars-responsive.css (nonexistent)
+++ live/styles/lcars-responsive.css (revision 198)
@@ -0,0 +1,223 @@
+/* Responsive Web Design */
+
+<?php use de\pointedears\css\least\Mixins; ?>
+
+/* Desktops with medium-size browser viewport (SVGA resolution) */
+
+body {
+ <?php
+ Mixins::transition('',
+ 'margin-top 0.25s 0.75s linear,'
+ . ' margin-left 0.25s 0.5s linear');
+ ?>
+}
+
+.multi-display,
+#content.fixed
+{
+ <?php
+ Mixins::transition('',
+ 'top 0.25s 0.75s linear,'
+ . ' left 0.25s 0.5s linear');
+ ?>
+}
+
+.menu .bow
+{
+ <?php
+ Mixins::transition('',
+ 'width 0.5s 1s linear,'
+ . 'background-color 0s 0.75s linear'
+ );
+ ?>
+}
+
+.multi-display .lower .bg
+{
+ <?php
+ /* Wait 1s for bow to become shallower */
+ Mixins::transition('',
+ 'top 0.25s 0.75s linear,'
+ . 'bottom 2.5s 0.5s ease');
+ ?>
+}
+
+#bow-top {
+ <?php
+ Mixins::transition('',
+ 'left 0.5s 1.0s linear,'
+ . ' min-width 0s 1.5s linear,'
+ . ' border-top-left-radius 0.5s 1.0s linear,'
+ . ' border-top-right-radius 0.5s 1.0s linear,'
+ . ' border-bottom-right-radius 0.5s 1.0s linear,'
+ . ' opacity 0s 1.0s linear');
+ ?>
+}
+
+#bow-top .text {
+ <?php
+ Mixins::transition('-property', 'opacity');
+ Mixins::transition('-delay', '1.5s');
+ Mixins::transition('-timing-function', 'linear');
+ ?>
+}
+
+#bow-top-left {
+ <?php
+ Mixins::transition('-property', 'height');
+ Mixins::transition('-duration', '0.125s');
+ Mixins::transition('-delay', '1.5s');
+ Mixins::transition('-timing-function', 'linear');
+ ?>
+}
+
+.menu-container
+{
+ <?php
+ Mixins::transition('',
+ 'top 0.5s 1s linear,'
+ . ' width 0.5s 1s linear,'
+ . ' bottom 0.5s 1s linear,'
+ . ' z-index 0s 1s linear');
+ ?>
+}
+
+.menu {
+ <?php
+ Mixins::transition('', 'height 0.5s 1s linear');
+ ?>
+}
+
+.menu ul:first-child {
+ <?php
+ Mixins::transition('', 'padding-top 0.5s 1s linear');
+ ?>
+}
+
+.menu .button
+{
+ <?php
+ Mixins::transition('', 'width 0.5s 1s linear');
+ ?>
+}
+
+#bow #bottom {
+ <?php
+ Mixins::transition('', 'visibility 0s 1.625s linear');
+ ?>
+}
+
+#bow-bottom {
+ <?php
+ Mixins::transition('',
+ 'border-bottom-left-radius 0.5s 0.5s ease,'
+ . ' border-bottom-right-radius 0.5s 0.5s ease,'
+ . ' width 0.5s 0.5s ease,'
+ . ' bottom 0.0225s 1.625s linear,'
+ . ' height 0.0225s 1.625s linear');
+ ?>
+}
+
+#bow-bottom .concave {
+ <?php
+ Mixins::transition('', 'width 0.5s 0.5s ease');
+ ?>
+}
+
+#connectors {
+ <?php
+ Mixins::transition('', 'opacity 0s 1.6475s linear');
+ ?>
+}
+
+#connectors .right {
+ <?php
+ Mixins::transition('', 'width 0.5s 0.5s ease');
+ ?>
+}
+
+/* Desktops with large viewport (XGA resolution and more, or no toolbars) */
+@media all and (min-width: 1024px) and (min-height: 364px) {
+ body {
+ margin-left: 22em;
+ <?php
+ Mixins::transition('', 'margin-left 0.5s 0.5s ease');
+ ?>
+ }
+
+ #bow #bottom
+ {
+ width: 20.8em;
+ <?php
+ /* Wait 0.5s for multi-display to be reduced in height */
+ Mixins::transition('', 'width 1.0s 0.5s ease');
+ ?>
+ }
+
+ #bow-bottom {
+ border-bottom-left-radius: 2.4em;
+ border-bottom-right-radius: 2em;
+ width: 20.6em;
+ <?php
+ Mixins::transition('-property', 'border-bottom-left-radius, border-bottom-right-radius, height, width');
+ Mixins::transition('-delay', '1.0s');
+ Mixins::transition('-duration', '0.5s');
+ Mixins::transition('-timing-function', 'ease');
+ ?>
+ }
+
+ #bow-bottom .concave {
+ width: 7.6em;
+ <?php
+ Mixins::transition('', 'width 1.0s 0.5s ease');
+ ?>
+ }
+
+ #connectors .right {
+ width: 5em;
+ <?php
+ /* Wait 1.0s for multi-display to be moved to right */
+ Mixins::transition('', 'width 1.0s 0.5s ease');
+ ?>
+ }
+
+ .multi-display
+ {
+ left: 15.8em;
+ <?php
+ Mixins::transition('',
+ 'left 0.5s 0.5s ease,'
+ . 'top 0.5s 0.5s linear');
+ ?>
+ }
+
+ #content.fixed {
+ left: 22em;
+ }
+
+ .multi-display .lower .bg
+ {
+ bottom: 2.8em;
+ <?php
+ Mixins::transition('', 'bottom 0.5s 0.5s ease');
+ ?>
+ }
+}
+
+/* Desktops with small viewport (VGA resolution and less, or toolbars) */
+@media all and (max-width: 584px) {
+ <?php require 'lcars-responsive-small.css'; ?>
+}
+
+/* Mobile devices: HTC Sensation & friends */
+@media screen and (max-device-width: 540px) {
+/*
+ html,
+ #LCARS,
+ .multi-display
+ {
+ max-width: 540px;
+ }
+*/
+ <?php require 'lcars-responsive-small.css'; ?>
+}
\ No newline at end of file
/live/styles/lcars-responsive.css
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: live/styles/lcars-responsive-small.css
===================================================================
--- live/styles/lcars-responsive-small.css (nonexistent)
+++ live/styles/lcars-responsive-small.css (revision 198)
@@ -0,0 +1,193 @@
+<?php
+ /* Responsive Web Design for small viewports; see lcars-responsive.css */
+ use de\pointedears\css\least\Mixins;
+?>/* 0.5 to 0.5225s */
+ #connectors {
+ opacity: 0;
+ <?php
+ Mixins::transition('', 'opacity 0s 0.5s linear');
+ ?>
+ }
+
+ #bow-bottom {
+ bottom: 2.6em;
+ height: 0em;
+ opacity: 0;
+ <?php
+ Mixins::transition('',
+ 'bottom 0.0225s 0.5s linear,'
+ . ' height 0.0225s 0.5s linear,'
+ . ' opacity 0s 0.5225s linear');
+ ?>
+ }
+
+ #bow #bottom {
+ visibility: hidden;
+ <?php
+ Mixins::transition('',
+ 'visibility 0s 0.5225s linear');
+ ?>
+ }
+
+ .menu-container
+ {
+ top: 11em;
+ width: 5em;
+ bottom: 0;
+ z-index: 1;
+ background-color: #fc6;
+ <?php
+ Mixins::transition('',
+ 'top 0.5s 0.5s linear,'
+ . ' width 0.5s 0.5s linear,'
+ . ' bottom 0.5s 0.5s linear,'
+ . ' background-color 0s 1s linear'
+ );
+ ?>
+ }
+
+ .menu {
+ height: 21.8em;
+ <?php
+ Mixins::transition('', 'height 0.5s 0.5s linear');
+ ?>
+ }
+
+ .menu ul:first-child {
+ padding-top: 0;
+ <?php
+ Mixins::transition('', 'padding-top 0.5s 0.5s linear');
+ ?>
+ }
+
+ .menu .button
+ {
+ width: 5em;
+ <?php
+ Mixins::transition('', 'width 0.5s 0.5s linear');
+ ?>
+ }
+
+ /* 0.5225s to 0.6475s */
+ #bow-top-left {
+ height: 0;
+ <?php
+ Mixins::transition('', 'height 0.125s 0.5225s linear');
+ ?>
+ }
+
+ /* at 0.6475s */
+ #bow-top .text {
+ opacity: 0;
+ <?php
+ Mixins::transition('-property', 'opacity');
+ Mixins::transition('-delay', '0.6475s');
+ Mixins::transition('-timing-function', 'linear');
+ ?>
+ }
+
+ .empty #bow-top .text {
+ opacity: 1;
+ }
+
+ /* 0.6475s to 1.1475s */
+ #bow-top {
+ left: 100%;
+ min-width: auto;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ border-top-right-radius: 1.2em;
+ border-bottom-right-radius: 1.2em;
+ opacity: 0;
+ <?php
+ Mixins::transition('',
+ 'left 0.5s 0.6475s linear,'
+ . ' min-width 0s 0.6475s linear,'
+ . ' border-top-left-radius 0.5s 0.6475s linear,'
+ . ' border-top-right-radius 0.5s 0.6475s linear,'
+ . ' border-bottom-right-radius 0.5s 0.6475s linear,'
+ . ' opacity 0s 1.1475s linear');
+ ?>
+ }
+
+ .empty #bow-top {
+ left: 0%;
+ min-width: 10em;
+ border-top-left-radius: 1.2em;
+ border-bottom-left-radius: 1.2em;
+ border-top-right-radius: 1.2em;
+ border-bottom-right-radius: 1.2em;
+ opacity: 1;
+ }
+
+ .multi-display,
+ #content.fixed
+ {
+ <?php
+ Mixins::transition('',
+ 'top 0.25s 1.1475s linear,'
+ . ' left 0.25s 1.3975s linear');
+ ?>
+ }
+
+ .multi-display
+ {
+ top: 0.2em;
+ left: 0.2em;
+ }
+
+ #content.fixed {
+ left: 6.4em;
+ top: 9.6em;
+ }
+
+ .menu .bow
+ {
+ background-color: #fc6;
+ <?php
+ Mixins::transition('',
+ 'width 0.5s 0.5s linear,'
+ . 'background-color 0s 1.6475s linear'
+ );
+ ?>
+ }
+
+ .multi-display .lower .bg
+ {
+ top: 11em;
+ <?php
+ Mixins::transition('', 'top 0.25s 1.1475s linear');
+ ?>
+ }
+
+ body {
+ margin-top: 9.6em;
+ margin-left: 6.4em;
+ <?php
+ Mixins::transition('',
+ 'margin-top 0.25s 1.1475s linear,'
+ . ' margin-left 0.25s 1.3975s linear');
+ ?>
+ }
+
+ .multi-display .upper .content #cmd2,
+ .multi-display .upper .content #cmd3
+ {
+ display: none;
+ }
+
+ .multi-display .upper .content #cmd1,
+ .multi-display .upper .content #cmd4
+ {
+ right: 0;
+ }
+
+ .multi-display .upper .content .analysis
+ {
+ right: 5.2em;
+ }
+
+ .multi-display .upper .content .commands
+ {
+ width: 5.2em;
+ }
/live/styles/lcars-responsive-small.css
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: live/styles/lcars-basic.css
===================================================================
--- live/styles/lcars-basic.css (nonexistent)
+++ live/styles/lcars-basic.css (revision 198)
@@ -0,0 +1,192 @@
+<?php
+@header('Last-Modified: ' . gmdate('D, d M Y H:i:s', @filemtime(__FILE__)) . ' GMT');
+
+/* Resource expires in HTTP/1.1 caches 24h after last retrieval */
+@header('Cache-Control: max-age=86400, s-maxage=86400, must-revalidate, proxy-revalidate');
+
+/* Resource expires in HTTP/1.1 caches 24h after last retrieval */
+@header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 86400) . ' GMT');
+
+@header('Content-Type: text/css; charset=UTF-8');
+?>@charset "UTF-8";
+
+/* Basic fonts */
+
+@font-face {
+ font-family: "LCARS";
+ font-style: normal;
+ font-weight: normal;
+ src: local("LCARS"), url(/styles/fonts/LCARS.ttf);
+}
+
+/* EOT font created with WEFT on 2002-03-23 */
+@font-face {
+ font-family: "Downloadable Haettenschweiler";
+ font-style: normal;
+ font-weight: normal;
+ src: url(/styles/fonts/HAETTEN0.eot), url(/styles/fonts/HAETTENS.ttf);
+}
+
+/*
+@font-face {
+ font-family:Webdings;
+ font-style:normal;
+ font-weight:normal;
+ src:url(/styles/fonts/WEBDING0.eot);
+}
+*/
+
+@font-face {
+ font-family: "Downloadable Zurich XCn BT";
+ font-style: normal;
+ font-weight: normal;
+ src: url(/styles/fonts/ZurichXCn.pfr);
+}
+
+/* Basic display */
+
+* {
+ font-family: "LCARS",
+ Haettenschweiler, "Downloadable Haettenschweiler",
+ "Zurich XCn BT", "Downloadable Zurich XCn BT",
+ impact, Verdana, Geneva, Arial, Helvetica, sans-serif;
+ font-weight: normal;
+}
+
+html, body {
+ -webkit-font-smoothing: antialiased;
+}
+
+html {
+ background-color: #000;
+ color: #99f;
+}
+
+body {
+ background-color: #000;
+ color: #99f;
+ font-size: 131%;
+ overflow: auto;
+}
+
+/* WebCore */
+::selection {
+ background-color: #f90;
+ color: #000;
+}
+
+/* Gecko */
+::-moz-selection {
+ background-color: #f90;
+ color: #000;
+}
+
+body.empty {
+ margin-top: 2.4em;
+ margin-left: 0.2em;
+ margin-bottom: 2.5em;
+}
+
+#content {
+ margin: 0;
+ margin-right: 1em;
+}
+
+.empty #content {
+ margin: 0 2.5em;
+}
+
+a {
+ text-decoration: none;
+}
+
+a:link:hover,
+a:link:focus
+{
+ /* background-color:#000; */
+ color: #f90;
+}
+
+a:link:active {
+ /* background-color:#000; */
+ color: #fff;
+}
+
+a:link {
+ /* background-color:#000; */
+ color: #fc9;
+}
+
+a:visited:hover,
+a:visited:focus
+{
+ /* background-color:#000; */
+ color: #f90;
+}
+
+a:visited:active {
+ /* background-color: #000; */
+ color: #fff;
+}
+
+a:hover,
+a:focus,
+a:active
+{
+ text-decoration: underline;
+}
+
+a:visited {
+ /* background-color: #000; */
+ color: #c9c;
+}
+
+h2 {
+ background-color: #000;
+ color: #fff;
+ font-size: 136%;
+}
+
+p {
+ margin-top: 1em;
+ margin-bottom: 0;
+ line-height: 1.5;
+ text-align: justify;
+}
+
+li p {
+ line-height: normal;
+}
+
+p:first-child {
+ margin-top: 0;
+}
+
+.instruction {
+ background-color: #000;
+ color: #f90;
+ font-size: 136%;
+}
+
+.offline {
+ background-color: #000;
+ color: #f00;
+}
+
+.unavailable {
+ background-color: #000;
+ color: #39f;
+}
+
+[title]
+{
+ cursor: help;
+}
+
+/* Language support */
+
+[lang^="x-vulcan-latin"] {
+ font-family: "URW Chancery L", "Matura MT Script Capitals",
+ Haettenschweiler, Haettens, "Zurich XCn BT", impact, Verdana,
+ Geneva, Arial, Helvetica, sans-serif;
+}
\ No newline at end of file
/live/styles/lcars-basic.css
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: live/styles/lcars22-ie6.css
===================================================================
--- live/styles/lcars22-ie6.css (nonexistent)
+++ live/styles/lcars22-ie6.css (revision 198)
@@ -0,0 +1,9 @@
+.empty #footer-container,
+.menu-container,
+#bow #bottom,
+#connectors,
+.multi-display,
+.multi-display .lower .bg
+{
+ position: absolute;
+}
\ No newline at end of file
/live/styles/lcars22-ie6.css
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: live/styles/lcars2.css
===================================================================
--- live/styles/lcars2.css (nonexistent)
+++ live/styles/lcars2.css (revision 198)
@@ -0,0 +1,483 @@
+<?php \header('Content-Type: text/css; charset=UTF-8'); ?>
+/*
+ * <title>CSS for PointedEars' LCARS, version 2.1, stardate 201012.30</title>
+ */
+
+/* basic fonts */
+
+@font-face {
+ font-family: "LCARS";
+ font-style: normal;
+ font-weight: normal;
+ src: local("LCARS"), url(LCARS.ttf);
+}
+
+/* EOT font created with WEFT on 2002-03-23 */
+@font-face {
+ font-family: "Downloadable Haettenschweiler";
+ font-style: normal;
+ font-weight: normal;
+ src: url(HAETTEN0.eot), url(HAETTENS.ttf);
+}
+
+/*
+@font-face {
+ font-family:Webdings;
+ font-style:normal;
+ font-weight:normal;
+ src:url(WEBDING0.eot);
+}
+*/
+
+@font-face {
+ font-family: "Downloadable Zurich XCn BT";
+ font-style: normal;
+ font-weight: normal;
+ src: url(ZurichXCn.pfr);
+}
+
+/* basic display */
+
+* {
+ font-family: "LCARS",
+ Haettenschweiler, "Downloadable Haettenschweiler",
+ "Zurich XCn BT", "Downloadable Zurich XCn BT",
+ impact, Verdana, Geneva, Arial, Helvetica, sans-serif;
+ font-weight: normal;
+}
+
+body {
+ position: absolute;
+ left: 204px;
+ top: 216px;
+ right: 0px;
+ bottom: 0;
+
+ /* IE 5.5+ scrollbar colors */
+/* from Mozilla LCARS Theme (2D style) */
+ scrollbar-3dlight-color:#000;
+ scrollbar-arrow-color:#000;
+ scrollbar-base-color:#000;
+ scrollbar-darkshadow-color:#000;
+ scrollbar-face-color:#99f;
+ scrollbar-highlight-color:#99f;
+ scrollbar-track-color:#000;
+ scrollbar-shadow-color:#99f;
+
+ background-color: #000;
+ color: #99f;
+ font-size: 131%; /* 134% */
+}
+
+h1, h2 {
+ margin-top: 0;
+ font-size: 120%;
+ font-weight: normal;
+}
+
+#LCARS {
+ position: relative;
+}
+
+.button {
+ display: block;
+ width: 100px;
+ min-height: 40px;
+ background-color: #c9c;
+ color: #000;
+ text-decoration: none;
+}
+
+.elbo {
+ position: relative;
+ width: 100px;
+ height: 62px;
+ text-align: right;
+}
+
+.elbo .terminator {
+ position: absolute;
+ width: 100px;
+ height: 18px;
+}
+
+.elbo .terminator.left {
+ left: 0;
+ border-right: 4px solid #000;
+}
+
+.elbo .terminator.right {
+ right: 0;
+ border-left: 4px solid #000;
+}
+
+.elbo span {
+ position: relative;
+ right: 4px;
+}
+
+.elbo-button {
+ float: left;
+ clear: left;
+ position: relative;
+ height: 40px;
+ margin-right: 4px;
+ margin-bottom: 0;
+ border-bottom: 4px solid black;
+}
+
+#upper {
+ position: fixed;
+ z-index: 3;
+ left: 4px;
+ top: 0;
+ right: 4px;
+ padding-top: 4px;
+ background-color: #000;
+ color: #fff;
+}
+
+#upper .elbo-button {
+ height: 84px;
+}
+
+#upper .elbo-button span {
+ position: absolute;
+ right: 4px;
+ bottom: 4px;
+}
+
+#caption-container {
+ /*position: relative; */
+ position: absolute;
+ /*float: right; */
+
+ /* Corresponds with negative margin for elbo-button */
+ /* margin-left: 104px; */
+
+ margin-top: 0;
+ left: 204px;
+ right: 0;
+ height: 100px;
+ text-align: right;
+ font-weight: normal;
+ font-size: 40px;
+ text-transform: uppercase;
+ z-index: 3;
+ overflow: auto;
+}
+
+#caption {
+ position: relative;
+ margin-top: 0;
+ text-align: right;
+}
+
+#upper-elbo {
+ position: relative;
+ clear: left;
+ margin-bottom: 4px;
+}
+
+#upper-elbo .elbo {
+ height: 62px;
+ background-color: #9cf;
+ color: #000;
+}
+
+.red-alert .elbo-button,
+.red-alert #upper-elbo .elbo,
+.red-alert #lower-elbo .elbo,
+.red-alert #lower .elbo-button
+{
+ background-color: #f00;
+}
+
+.database #upper-elbo .elbo,
+.database #lower-elbo .elbo
+{
+ background-color: #f1df6f;
+ color: #000;
+}
+
+#upper-elbo .elbo.left {
+ border-radius: 0 0 0 32px;
+ -moz-border-radius: 0 0 0 32px;
+ -webkit-border-radius: 0 0 0 32px;
+}
+
+#upper-elbo .elbo.left span {
+ top: 4px;
+}
+
+#upper-elbo .elbo.right {
+ position: absolute;
+ left: 100px;
+ top: 0;
+ width: auto;
+ right: 0;
+}
+
+#upper-elbo .elbo.right .black {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 44px;
+ background-color: #000;
+ border-radius: 0 0 0 16px;
+ -moz-border-radius: 0 0 0 16px;
+ -webkit-border-radius: 0 0 0 16px;
+}
+
+#upper-elbo .elbo.right .terminator {
+ top: 44px;
+}
+
+#lower {
+ position: fixed;
+ left: 4px;
+ top: 158px;
+ right: 4px;
+ bottom: 4px;
+}
+
+#lower-elbo {
+ position: relative;
+ z-index: 3;
+ margin-bottom: 4px;
+}
+
+#lower-elbo .elbo {
+ background-color: #c66;
+ color: #000;
+}
+
+#lower-elbo .elbo.left {
+ border-radius: 32px 0 0 0;
+ -moz-border-radius: 32px 0 0 0;
+ -webkit-border-radius: 32px 0 0 0;
+}
+
+#lower-elbo .elbo.left span {
+ position: absolute;
+ bottom: 4px;
+}
+
+#lower-elbo h2.elbo.left {
+ margin-bottom: 0;
+}
+
+#lower-elbo h2.elbo.left span {
+ bottom: 0;
+}
+
+#lower-elbo .elbo.right {
+ position: absolute;
+ left: 100px;
+ top: 0;
+ width: auto;
+ right: 0;
+}
+
+#lower-elbo .elbo.right .black {
+ position: absolute;
+ left: 0px;
+ top: 18px;
+ width: 100%;
+ height: 45px;
+ background-color: #000;
+ border-radius: 16px 0 0 0;
+ -moz-border-radius: 16px 0 0 0;
+ -webkit-border-radius: 16px 0 0 0;
+}
+
+#lower-elbo .elbo.right .terminator {
+ top: 0;
+ background-color: #f90;
+}
+
+#lower-elbo .elbo.right .terminator.left {
+ background-color: transparent;
+}
+
+#menu {
+ /*
+ float: left;
+ margin-right: -104px;
+ */
+ position: absolute;
+ top: 66px;
+ width: 119px;
+ bottom: 0;
+ overflow-y: auto;
+}
+
+ul.elbo {
+ clear: left;
+ margin: 0;
+ height: auto;
+ padding: 0;
+ list-style-type: none;
+}
+
+ul.elbo li {
+ clear: left;
+ margin: 0;
+}
+
+ul.elbo li.half {
+ display: block;
+ float: left;
+ text-align: center;
+}
+
+ul.elbo li.half .elbo-button {
+ margin-right: 0;
+ width: 48px;
+}
+
+ul.elbo li.half .elbo-button span {
+ right: auto;
+}
+
+ul.elbo li.half.left {
+ border-right: 2px solid black;
+}
+
+ul.elbo li.half.right {
+ clear: right;
+ border-left: 2px solid black;
+}
+
+#lower .elbo-button {
+ height: auto;
+ min-height: 40px;
+ background-color: #c66;
+}
+
+#lower .elbo-button span {
+ bottom: 0;
+ line-height: 40px;
+}
+
+#lower h2.elbo-button {
+ /* min-height: 31px; */
+}
+
+#lower h2.elbo-button span {
+ position: absolute;
+ right: 4px;
+ bottom: 0;
+ line-height: normal;
+}
+
+#lower .elbo-button.button2 {
+ min-height: 1em;
+ background-color: #c9c;
+}
+
+#lower .elbo-button.button2:focus,
+#lower .elbo-button.button2:hover
+{
+ background-color: #f90;
+}
+
+#lower .elbo-button.button2:active {
+ background-color: #fff;
+}
+
+#lower .elbo-button.button2 span {
+ line-height: 1;
+}
+
+#lower .elbo-button.button2 span abbr {
+ border-bottom: none;
+}
+
+#glue {
+ position: absolute;
+ left: 0px;
+ top: 66px;
+ bottom: 0;
+ border-bottom: none;
+}
+
+p {
+ margin-top: 0;
+ margin-bottom: 1em;
+ text-align: justify;
+}
+
+p:last-child {
+ margin-bottom: 0;
+}
+
+/*
+p:focus,
+p:active
+{
+ color: #fff;
+}
+*/
+
+#content {
+ position: relative;
+}
+
+#heading1 {
+ position: fixed;
+ right: 8px;
+ top: 179px;
+ height: 40px;
+ left: 208px;
+ z-index: 3;
+}
+
+#heading1 h1 {
+ position: absolute;
+ margin-bottom: 0;
+ right: 0;
+ bottom: 0;
+ background-color: black;
+ color: white;
+}
+
+#content a {
+ text-decoration: none;
+}
+
+#content a:link:hover,
+#content a:link:focus
+{
+ background-color:#000;
+ color: #f90;
+}
+
+#content a:link:active {
+ background-color:#000;
+ color: #fff;
+}
+
+#content a:link {
+ background-color:#000;
+ color:#fc9;
+}
+
+#content a:visited:hover,
+#content a:visited:focus
+{
+ background-color:#000;
+ color:#f90;
+}
+
+#content a:visited:active {
+ background-color:black;
+ color:#fff;
+}
+
+
+#content a:visited {
+ background-color:black;
+ color:#c9c;
+}
/live/styles/lcars2.css
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: live/styles/lcars21.css
===================================================================
--- live/styles/lcars21.css (nonexistent)
+++ live/styles/lcars21.css (revision 198)
@@ -0,0 +1,335 @@
+<?php \header('Content-Type: text/css; charset=UTF-8'); ?>
+/*
+ * <title>CSS for PointedEars' LCARS, version 2.1, stardate 201012.30</title>
+ */
+
+/* basic fonts */
+
+@font-face {
+ font-family: "LCARS";
+ font-style: normal;
+ font-weight: normal;
+ src: local("LCARS"), url(fonts/LCARS.ttf);
+}
+
+/* EOT font created with WEFT on 2002-03-23 */
+@font-face {
+ font-family: "Downloadable Haettenschweiler";
+ font-style: normal;
+ font-weight: normal;
+ src: url(fonts/HAETTEN0.eot), url(fonts/HAETTENS.ttf);
+}
+
+/*
+@font-face {
+ font-family:Webdings;
+ font-style:normal;
+ font-weight:normal;
+ src:url(fonts/WEBDING0.eot);
+}
+*/
+
+@font-face {
+ font-family: "Downloadable Zurich XCn BT";
+ font-style: normal;
+ font-weight: normal;
+ src: url(fonts/ZurichXCn.pfr);
+}
+
+/* basic display */
+
+* {
+ font-family: "LCARS",
+ Haettenschweiler, "Downloadable Haettenschweiler",
+ "Zurich XCn BT", "Downloadable Zurich XCn BT",
+ impact, Verdana, Geneva, Arial, Helvetica, sans-serif;
+ font-weight: normal;
+}
+
+body {
+ position: absolute;
+ left: 204px;
+ top: 216px;
+ right: 0px;
+ bottom: 0;
+
+ /* IE 5.5+ scrollbar colors */
+/* from Mozilla LCARS Theme (2D style) */
+ scrollbar-3dlight-color:#000;
+ scrollbar-arrow-color:#000;
+ scrollbar-base-color:#000;
+ scrollbar-darkshadow-color:#000;
+ scrollbar-face-color:#99f;
+ scrollbar-highlight-color:#99f;
+ scrollbar-track-color:#000;
+ scrollbar-shadow-color:#99f;
+
+ background-color: #000;
+ color: #99f;
+ font-size: 131%; /* 134% */
+}
+
+h1, h2 {
+ margin-top: 0;
+ font-size: 120%;
+ font-weight: normal;
+}
+
+#LCARS {
+/* position: relative; */
+ position: fixed;
+ left: 4px;
+ top: 0;
+ right: 4px;
+}
+
+.button {
+ width: 100px;
+ min-height: 40px;
+ background-color: #c9c;
+ color: #000;
+ text-decoration: none;
+ overflow: hidden;
+}
+
+#upper {
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ height: 180px;
+
+ /* Prevents body text above */
+ /* padding-top: 4px; */
+ background-color: #c00;
+ color: #fff;
+}
+
+.elbo {
+ position: relative;
+ width: 100px;
+ height: 62px;
+ text-align: right;
+}
+
+.elbo-button {
+ position: relative;
+ margin-top: 4px;
+ height: 40px;
+ overflow: hidden;
+}
+
+.elbo span {
+ position: relative;
+ right: 4px;
+}
+
+@-webkit-keyframes swish-down-up {
+ 0% {
+ height: 0;
+ top: 84px;
+ }
+
+ 100% {
+ }
+}
+
+#upper .elbo-button {
+ position: absolute;
+ min-height: 0;
+ height: 84px;
+
+ /* -webkit-animation-name: swish-down-up; */
+ /* -webkit-animation-iteration-count: 1; */
+ -webkit-animation-delay: 1s;
+ -webkit-animation-duration: 1s;
+}
+
+#upper .elbo-button span {
+ position: absolute;
+ right: 4px;
+ bottom: 4px;
+}
+
+#upper-elbo {
+ position: absolute;
+ top: 92px;
+}
+
+#upper-elbo .elbo {
+ height: 62px;
+ background-color: #9cf;
+ color: #000;
+}
+
+@-webkit-keyframes swish-right-left {
+ 0% {
+ width: 0px;
+ /* height: 0px; */
+ left: 100px;
+ /* top: 62px; */
+ }
+
+ 100% {
+ }
+}
+
+#upper-elbo .elbo.left {
+ -moz-border-radius: 0 0 0 32px;
+ -webkit-border-radius: 0 0 0 32px;
+ border-radius: 0 0 0 32px;
+ /* -webkit-animation-name: swish-right-left; */
+ -webkit-animation-duration: 1s;
+}
+
+#upper-elbo .elbo.left span {
+ top: 4px;
+}
+
+#upper-elbo .elbo.right {
+ position: absolute;
+ left: 100px;
+ top: 0;
+ width: 78px;
+ right: 0;
+}
+
+#upper-elbo .elbo.right .black {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 44px;
+ background-color: #000;
+ -moz-border-radius: 0 0 0 16px;
+ -webkit-border-radius: 0 0 0 16px;
+ border-radius: 0 0 0 16px;
+}
+
+#upper-elbo .elbo.right .terminator {
+ position: absolute;
+ left: 82px;
+ top: 44px;
+ width: 18px;
+ height: 18px;
+ background-color: #f90;
+}
+
+#lower {
+ position: absolute;
+ top: 158px;
+}
+
+#lower-elbo {
+ position: absolute;
+}
+
+#lower-elbo .elbo {
+ background-color: #c66;
+ color: #000;
+}
+
+#lower-elbo .elbo.left {
+ -moz-border-radius: 32px 0 0 0;
+ -webkit-border-radius: 32px 0 0 0;
+ border-radius: 32px 0 0 0;
+}
+
+#lower-elbo .elbo.left span {
+ position: absolute;
+ bottom: 4px;
+}
+
+#lower-elbo h2.elbo.left {
+ margin-bottom: 0;
+}
+
+#lower-elbo .elbo.right {
+ position: absolute;
+ left: 100px;
+ top: 0;
+ width: 100px;
+}
+
+#lower-elbo .elbo.right .black {
+ position: absolute;
+ left: 0px;
+ top: 18px;
+ width: 100%;
+ height: 45px;
+ background-color: #000;
+ -webkit-border-radius: 16px 0 0 0;
+ border-radius: 16px 0 0 0;
+}
+
+p {
+ margin-top: 1em;
+ margin-bottom: 0;
+ line-height: 1.5;
+ text-align: justify;
+}
+
+p:first-child {
+ margin-top: 0;
+}
+
+#content {
+ /* position: relative; */
+}
+
+#content a {
+ text-decoration: none;
+}
+
+#content #heading1 {
+ position: fixed;
+ left: 204px;
+ top: 180px;
+ right: 4px;
+ height: 42px;
+ background-color: rgba(255, 0, 0, 0.5);
+ color: white;
+ text-align: right;
+}
+
+#content #heading1 h1 {
+ position: absolute;
+ bottom: 6px;
+ right: 0;
+ margin-bottom: 0;
+ padding-right: 4px;
+}
+
+#content a:link:hover,
+#content a:link:focus
+{
+ background-color:#000;
+ color: #f90;
+}
+
+#content a:link:active {
+ background-color:#000;
+ color: #fff;
+}
+
+#content a:link {
+ background-color:#000;
+ color:#fc9;
+}
+
+#content a:visited:hover,
+#content a:visited:focus
+{
+ background-color:#000;
+ color:#f90;
+}
+
+#content a:visited:active {
+ background-color:black;
+ color:#fff;
+}
+
+#content a:visited {
+ background-color:black;
+ color:#c9c;
+}
/live/styles/lcars21.css
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: live/styles/tooltip.css
===================================================================
--- live/styles/tooltip.css (nonexistent)
+++ live/styles/tooltip.css (revision 198)
@@ -0,0 +1,93 @@
+<?php \header('Content-Type: text/css; charset=UTF-8'); ?>
+/*
+ * Accessible Pure CSS Tooltips
+ * Copyright (C) 2008, 2011 Thomas 'PointedEars' Lahn <mehl@PointedEars.de>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+.tooltip {
+ position: relative;
+ border-bottom: 1px dotted black;
+ text-decoration: none;
+ cursor: help;
+}
+
+.tooltip span {
+ display: none;
+ visibility: hidden;
+ opacity: 0;
+ -moz-transition: visibility 0.5s linear;
+ -webkit-transition: visibility 0.5s linear;
+ position: absolute;
+ width: 11em;
+ height: auto;
+ padding: 2px 5px 5px 5px;
+ border: 1px solid #666;
+ box-shadow: 6px 6px 6px #666;
+ -moz-box-shadow: 6px 6px 6px #666;
+ -webkit-box-shadow: 6px 6px 6px #666;
+ background-color: #ffc !important;
+ color: black;
+ text-decoration: none;
+}
+
+.tooltip>span {
+ width: auto;
+ min-width: 11em;
+}
+
+.tooltip:hover span,
+.tooltip:focus span
+{
+ display: block;
+ visibility: visible;
+ opacity: 1;
+ z-index: 1337;
+}
+
+/* Copyright note */
+.tooltip span:after {
+ display: block;
+ margin: 0.5em 0 0 0;
+ border-top: 1px solid gray;
+ padding-top: 0.5em;
+ background-color: transparent;
+ content: "Accessible Pure\a0 CSS\a0 Tooltips\0d \0a\
+ Copyright\a0 \a9 \a0 2008,\a0 2010\a0 \a0 \
+ Thomas\a0 'PointedEars'\a0 Lahn <mehl@PointedEars.de>.\0d \0a \
+ Distributed under the\a0 GNU\a0 GPL\a0 v3 or later.";
+ color: gray;
+ font-size: xx-small;
+}
+
+*>.tooltip span:after {
+ color: black;
+ opacity: 0.9;
+}
+
+/* elements of the tooltip contents to hide when the tooltop is displayed */
+.tooltip span span {
+ position: relative;
+ visibility: visible;
+ display: inline;
+ padding: 0;
+ border: none;
+}
+
+.tooltip:hover span span,
+.tooltip:focus span span {
+ visibility: hidden;
+ display: none;
+}
\ No newline at end of file
/live/styles/tooltip.css
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: live/styles/!ns4.css
===================================================================
--- live/styles/!ns4.css (nonexistent)
+++ live/styles/!ns4.css (revision 198)
@@ -0,0 +1,8 @@
+/* !ns4: not supported by Netscape 4.x, therefore to be imported with
+ `@import url(...)' */
+
+.button {
+ display:block;
+ margin-top:0;
+ margin-bottom:0;
+}
/live/styles/!ns4.css
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: live/styles/.htaccess
===================================================================
--- live/styles/.htaccess (nonexistent)
+++ live/styles/.htaccess (revision 198)
@@ -0,0 +1,3 @@
+<IfModule mod_php5.c>
+ AddHandler application/x-httpd-php .css
+</IfModule>
Index: live/styles/lcars-20110221.css
===================================================================
--- live/styles/lcars-20110221.css (nonexistent)
+++ live/styles/lcars-20110221.css (revision 198)
@@ -0,0 +1,498 @@
+/*
+ * <title>CSS for PointedEars' LCARS, version 2.054, stardate 200712.02</title>
+ */
+
+/* basic fonts */
+
+@font-face {
+ font-family: "Downloadable LCARS";
+ font-style: normal;
+ font-weight: normal;
+ src: url(LCARS.ttf);
+}
+
+/* EOT font created with WEFT on 2002-03-23 */
+@font-face {
+ font-family: "Downloadable Haettenschweiler";
+ font-style: normal;
+ font-weight: normal;
+ src: url(HAETTEN0.eot), url(HAETTENS.ttf);
+}
+
+/*
+@font-face {
+ font-family:Webdings;
+ font-style:normal;
+ font-weight:normal;
+ src:url(WEBDING0.eot);
+}
+*/
+
+@font-face {
+ font-family: "Downloadable Zurich XCn BT";
+ font-style: normal;
+ font-weight: normal;
+ src: url(ZurichXCn.pfr);
+}
+
+/* basic display */
+
+* {
+ font-family: LCARS, "Downloadable LCARS",
+ Haettenschweiler, "Downloadable Haettenschweiler",
+ "Zurich XCn BT", "Downloadable Zurich XCn BT",
+ impact, Verdana, Geneva, Arial, Helvetica, sans-serif;
+ font-weight: normal;
+}
+
+body {
+ cursor:default;
+ font-size:134%; /*129%*/
+ background-color:#000;
+ color:#ccf; /* #afbfe0; #69F; */
+ margin:0 10px;
+ /* IE 5.5+ scrollbar colors */
+/* from Mozilla LCARS Theme (2D style) */
+ scrollbar-3dlight-color:#000;
+ scrollbar-arrow-color:#000;
+ scrollbar-base-color:#000;
+ scrollbar-darkshadow-color:#000;
+ scrollbar-face-color:#99f;
+ scrollbar-highlight-color:#99f;
+ scrollbar-track-color:#000;
+ scrollbar-shadow-color:#99f;
+}
+
+div.body {
+ /* width:95%; */
+}
+
+span.alt { /* span with alternative text color */
+ color:#f93;
+ background-color:#000;
+}
+
+/* for JavaScript processing messages */
+
+.standby {
+ font-size:166%;
+ background-color:#000;
+ color:#99f;
+}
+
+div.standby {
+ position:absolute;
+ top:0;
+ visibility:hidden;
+}
+
+/* font styles */
+
+p {
+ margin-top:0;
+ margin-bottom:1em;
+}
+
+div, p, li, th, td {
+ max-width: 60ex;
+}
+
+small {
+ font-size:100%;
+}
+
+b, strong {
+ color:#f93;
+ background-color:#000;
+ font-weight:normal;
+}
+
+i, cite, blockquote, em {
+ background-color:#000;
+ color:#f93;
+ font-style:normal;
+}
+
+abbr {
+ white-space:nowrap;
+}
+
+abbr, acronym {
+ border-bottom: 1px solid dotted;
+ cursor: help;
+}
+
+span.cap {
+ font-variant:small-caps;
+}
+
+/* headings */
+
+h1 {
+ font-size:191%;
+ font-weight:normal;
+ color:#c96;
+ background-color:black;
+}
+
+
+h2 {
+ font-size:129%;
+ font-weight:normal;
+ color:#fc6;
+ background-color:black;
+ text-transform: uppercase;
+}
+
+h3 {
+ margin-top:0;
+ margin-bottom:1em;
+ font-size:123%;
+ font-weight:normal;
+ color:#fc6;
+ background-color:black;
+ text-transform: uppercase;
+}
+
+h4 {
+ margin-top:2em;
+ margin-bottom:1em;
+ font-size:116%;
+ font-weight:normal;
+ color:#fc6;
+ background-color:black;
+}
+
+table + h4 {
+ margin-top:1em;
+}
+
+a.h4:link:hover, a.h4:visited:hover {
+ color:#fc6;
+ background-color:black;
+}
+
+a.h4:link:active, a.h4:visited:active {
+ color:#fff;
+ background-color:black;
+}
+
+h5 {
+ margin-top:2em;
+ margin-bottom:1em;
+ font-size:111%;
+ font-weight:normal;
+ color:#fc6;
+ background-color:black;
+}
+
+h6 {
+ margin-top:2em;
+ margin-bottom:1em;
+ font-size:104%;
+ font-weight:normal;
+ color:#fc6;
+ background-color:black;
+}
+
+/* LCARS specific anchors */
+
+/* order is important to buggy IE;
+ TODO: [IE] links focus color, visited links hover color */
+
+a:link:hover, a:link:active, a:link:focus {
+ background-color:#000;
+ color:#fc0;
+ text-decoration:none;
+}
+
+a:link {
+ background-color:black;
+ color:white;
+ text-decoration:none;
+}
+
+a:visited:hover {
+ background-color:#000;
+ color:#fc3;
+ text-decoration:none;
+}
+
+a:visited:active {
+ background-color:black;
+ color:#fff;
+ text-decoration:none;
+}
+
+a:visited:focus {
+ background-color:#000;
+ color:#fc3;
+ text-decoration:none;
+}
+
+a:visited {
+ background-color:black;
+ color:#fc9;
+ text-decoration:none;
+}
+
+/* buttons */
+
+a.button:link:focus, a.button:visited:focus,
+a.button:link:hover, a.button:visited:hover {
+ color:#000;
+ background-color:#c9c;
+ text-decoration:none;
+}
+
+a.button:link:active, a.button:visited:active {
+ color:#000;
+ background-color:#fff;
+ cursor:default;
+ text-decoration:none;
+}
+
+a.button:link, a.button:visited {
+ background-color:#969;
+ color:#000;
+ padding-left:1px;
+ vertical-align:middle;
+ font-size:110%;
+ text-decoration:none;
+}
+
+a.stop:link, a.stop:visited {
+ background-color:#c66;
+ color:#000;
+ padding-left:1px;
+ vertical-align:middle;
+ font-size:110%;
+ text-decoration:none;
+}
+
+a.stop:link:hover, a.stop:visited:hover {
+ background-color:#f66;
+ color:#000;
+ text-decoration:none;
+}
+
+a.stop:link:active, a.stop:visited:active {
+ background-color:#fff;
+ color:#000;
+ text-decoration:none;
+}
+
+a.go:link, a.go:visited {
+ background-color:#6c6;
+ color:#000;
+ padding-left:1px;
+ vertical-align:middle;
+ font-size:110%;
+ text-decoration:none;
+}
+
+a.go:link:hover, a.go:visited:hover {
+ background-color:#6f6;
+ color:#000;
+ text-decoration:none;
+}
+
+a.go:link:active, a.go:visited:active {
+ background-color:#fff;
+ color:#000;
+ text-decoration:none;
+}
+
+span.symbol {
+ font-family:Webdings, fantasy;
+ font-style:normal;
+ font-weight:normal;
+ font-size:110%;
+}
+
+/* form elements */
+
+input {
+ background-color:black;
+ font-size:104%;
+ color:white;
+}
+
+input.button {
+ /* offset-width:auto; */
+ border-style:none;
+ border-width:0px;
+ color:#000;
+ background-color:#969;
+ font-size:123%;
+ cursor:pointer;
+}
+
+textarea {
+ background-color:#000;
+ font-size:104%;
+ color:white;
+}
+
+select
+ {
+ color:white;
+ background-color:#000;
+ border-color:white;
+ font-size:104%;
+ cursor:pointer;
+}
+
+option {
+ cursor:pointer;
+}
+
+/* table elements */
+
+table {
+ border-collapse: separate;
+ margin-top:0;
+ margin-bottom:1em;
+}
+
+/*
+ * Not for IE 6 and below.
+ * Bugfix for IE 7 is provided by lcars-ie7.css which should be
+ * included as follows:
+
+ <link rel="stylesheet" href="/styles/lcars.css" type="text/css">
+ <!--[if IE 7]>
+ <link rel="stylesheet" href="/styles/lcars-ie7.css" type="text/css">
+ <![endif]-->
+ */
+table>tbody.scroll {
+ height:11em;
+ overflow:auto;
+ /*
+ * In current implementations, the scrollbar is displayed within
+ * the tbody area, so we disable horizontal scrolling for that ...
+ */
+ overflow-x: hidden !important;
+}
+
+table>tbody.scroll tr {
+ height: auto;
+}
+
+/*
+ * ... and make enough room so that the text won't flow under the
+ * vertical scrollbar. However, that is still a dirty hack as we
+ * assume that the vertical scrollbar is not wider than 20px.
+ */
+table>tbody.scroll td:last-child {
+ padding-right: 20px;
+}
+
+tr {
+ vertical-align:top;
+ vertical-align: baseline;
+}
+
+th {
+ padding-left:3px;
+ /* border-right:2px solid black; */
+ text-align:left;
+ background-color:#c66;
+ color:#000;
+ font-size: 133%;
+ font-weight:normal;
+}
+
+thead th:first-child {
+ border-top-left-radius: 7px 15px;
+}
+
+table.left th, thead.left th, tbody.left th, th.left {
+ background-color:inherit;
+ color:inherit;
+ text-transform:uppercase;
+ text-align:right;
+}
+
+th, td {
+ padding-right:3px;
+}
+
+td {
+ padding-left:4px;
+ background-color:inherit;
+ color:inherit;
+ font-size:133%;
+}
+
+/* hover table */
+
+table.hover thead th:hover,
+thead.hover th:hover,
+tbody.hover th:hover,
+table.hover tbody tr:hover th,
+tbody.hover tr:hover th {
+ background-color:#f99;
+ color:#000;
+}
+
+table.hover tbody tr:hover,
+tbody.hover tr:hover {
+ color:#fc3;
+}
+
+table.hover tbody tr:hover a,
+tbody.hover tr:hover a {
+ background-color:inherit;
+}
+
+/* Lowlight all rows except that with the active/focused element */
+table.hover tbody:active,
+table.hover tbody:focus,
+tbody.hover:active,
+tbody.hover:focus {
+ background-color:#000;
+ color:#99c;
+}
+
+table.hover tbody tr:active,
+tbody.hover tr:active,
+table.hover tbody tr:focus,
+tbody.hover tr:focus {
+ background-color:#000;
+ color:#fff;
+}
+
+/* This to invert display on hover does not seem proper LCARS design */
+/*
+table.hover tbody tr:hover a:link,
+tbody.hover tr:hover a:link {
+ color:#fff;
+}
+
+table.hover tbody tr:hover a:visited,
+tbody.hover tr:hover a:visited {
+ background-color:inherit;
+ color:#963;
+}
+
+table.hover tbody tr:hover a:link:focus,
+table.hover tbody tr:hover a:visited:focus,
+table.hover tbody tr:hover a:link:hover,
+table.hover tbody tr:hover a:visited:hover,
+table.hover tbody tr:hover a:link:active,
+tbody.hover tr:hover a:link:focus,
+tbody.hover tr:hover a:visited:focus,
+tbody.hover tr:hover a:link:hover,
+tbody.hover tr:hover a:visited:hover,
+tbody.hover tr:hover a:link:active {
+ background-color:inherit;
+ color:#960;
+}
+
+table.hover tbody tr:hover a:visited:active,
+tbody.hover tr:hover a:visited:active {
+ background-color:inherit;
+ color:#c63;
+}
+*/
/live/styles/lcars-20110221.css
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: live/styles/lcars.css.php
===================================================================
--- live/styles/lcars.css.php (nonexistent)
+++ live/styles/lcars.css.php (revision 198)
@@ -0,0 +1,573 @@
+<?php header('Content-Type: text/css'); ?>
+@CHARSET "UTF-8";
+
+/*
+ * <title>CSS for PointedEars' LCARS, version 2.054, stardate 200712.02</title>
+ */
+
+/* basic fonts */
+@font-face {
+ font-family: "Downloadable LCARS";
+ font-style: normal;
+ font-weight: normal;
+ src: url(fonts/LCARS.ttf);
+}
+
+/* EOT font created with WEFT on 2002-03-23 */
+@font-face {
+ font-family: "Downloadable Haettenschweiler";
+ font-style: normal;
+ font-weight: normal;
+ src: url(fonts/HAETTEN0.eot), url(fonts/HAETTENS.ttf);
+}
+
+/*
+@font-face {
+ font-family:Webdings;
+ font-style:normal;
+ font-weight:normal;
+ src:url(WEBDING0.eot);
+}
+*/
+@font-face {
+ font-family: "Downloadable Zurich XCn BT";
+ font-style: normal;
+ font-weight: normal;
+ src: url(fonts/ZurichXCn.pfr);
+}
+
+/* basic display */
+* {
+ font-family: LCARS, "Downloadable LCARS", Haettenschweiler,
+ "Downloadable Haettenschweiler", "Zurich XCn BT",
+ "Downloadable Zurich XCn BT", impact, Verdana, Geneva, Arial,
+ Helvetica, sans-serif;
+ font-weight: normal;
+}
+
+<?php
+ $colors = array(
+ 'primary' => array(
+ 'elbo' => '#f1df6f',
+ 'offline1' => '#300',
+ 'offline2' => '#f00',
+ 'n/a' => '#39f',
+ 'primary' => '#9cf',
+ 'color1' => '#ff3',
+ 'color2' => '#ffc'
+ ),
+ 'secondary' => array(
+ 'elbo' => '#b19f7a',
+ 'offline1' => '#300',
+ 'offline2' => '#f00',
+ 'n/a' => '#5355de',
+ 'primary' => '#9cf',
+ 'color1' => '#fc0',
+ 'color2' => '#ff9'
+ ),
+ 'ancillary' => array(
+ 'elbo' => '#f1b1af',
+ 'offline1' => '#300',
+ 'offline2' => '#f00',
+ 'n/a' => '#a27fa5',
+ 'primary' => '#adacd8',
+ 'color1' => '#ff3',
+ 'color2' => '#e6b0d4'
+ ),
+ 'database' => array(
+ 'elbo' => '#c66',
+ 'offline1' => '#300',
+ 'offline2' => '#f00',
+ 'n/a' => '#ccf',
+ 'primary' => '#9cf',
+ 'color1' => '#f90',
+ 'text' => '#99f',
+ 'old_text' => '#669',
+ 'new_text' => '#9cf',
+ 'link' => '#fc9',
+ 'visited' => '#c9c',
+ 'hover' => '#f90',
+ 'active' => '#fff'
+ ),
+ 'red_alert' => array(
+ 'elbo' => '#f00',
+ 'offline1' => '#300',
+ 'offline2' => '#f00',
+ 'n/a' => '#f00',
+ 'primary' => '#f00',
+ 'color1' => '#f00',
+ 'color2' => '#f00'
+ ),
+ 'multi-display' => array(
+ 'upper_elbo' => '#9cf',
+ 'lower_elbo' => '#c66',
+ 'color1' => '#f90',
+ 'color2' => '#c9c',
+ 'text1' => '#fff',
+ 'text2' => '#f90',
+ )
+ );
+?>
+
+*[lang^="x-vulcan-latin"] {
+ font-family: cursive;
+}
+
+body {
+ margin: 0 10px;
+
+ /* IE 5.5+ scrollbar colors */
+ /* from Mozilla LCARS Theme (2D style) */
+ scrollbar-3dlight-color: #000;
+ scrollbar-arrow-color: #000;
+ scrollbar-base-color: #000;
+ scrollbar-darkshadow-color: #000;
+ scrollbar-face-color: #99f;
+ scrollbar-highlight-color: #99f;
+ scrollbar-track-color: #000;
+ scrollbar-shadow-color: #99f;
+
+ background-color: #000;
+ color: <?php echo $colors['database']['text']; ?>;
+ font-size: 131%; /* 134% */
+}
+
+/* headings */
+h1 {
+ font-size: 120%; /* 191% */
+ font-weight: normal;
+ color: #fff; /* #c96 */
+ background-color: black;
+}
+
+h2 {
+ font-size: 120%; /* 129% */
+ font-weight: normal;
+ color: #fff; /* #fc6 */
+ background-color: black;
+ text-transform: uppercase;
+}
+
+h3 {
+ margin-top: 0;
+ margin-bottom: 1em;
+ font-size: 123%;
+ font-weight: normal;
+ color: #fff; /* #fc6 */
+ background-color: black;
+ text-transform: uppercase;
+}
+
+h4 {
+ margin-top: 2em;
+ margin-bottom: 1em;
+ font-size: 116%;
+ font-weight: normal;
+ color: #fc6;
+ background-color: black;
+}
+
+table+h4 {
+ margin-top: 1em;
+}
+
+/*
+a.h4:link:hover,a.h4:visited:hover {
+ color: #fc6;
+ background-color: black;
+}
+
+a.h4:link:active,a.h4:visited:active {
+ color: #fff;
+ background-color: black;
+}
+*/
+
+h5 {
+ margin-top: 2em;
+ margin-bottom: 1em;
+ background-color: black;
+ color: <?php echo $colors['multi-display']['text1']; ?>; /* #fc6 */
+ font-size: 111%;
+ font-weight: normal;
+}
+
+h6 {
+ margin-top: 2em;
+ margin-bottom: 1em;
+ font-size: 104%;
+ font-weight: normal;
+ color: #fc6;
+ background-color: black;
+}
+
+div.body { /* width:95%; */
+
+}
+
+span.alt { /* span with alternative text color */
+ color: #f93;
+ background-color: #000;
+}
+
+/* for JavaScript processing messages */
+.standby {
+ font-size: 166%;
+ background-color: #000;
+ color: #99f;
+}
+
+div.standby {
+ position: absolute;
+ top: 0;
+ visibility: hidden;
+}
+
+/* font styles */
+p {
+ margin-top: 0;
+ margin-bottom: 1em;
+}
+
+div,p,li,th,td {
+ max-width: 60ex;
+}
+
+small {
+ font-size: 100%;
+}
+
+b, strong {
+ color: <?php echo $colors['multi-display']['text1']; ?>; /* #f93 */
+ background-color: #000;
+ font-weight: normal;
+}
+
+i, cite, blockquote, em {
+ background-color: #000;
+ color: <?php echo $colors['multi-display']['text1']; ?>; /* #f93 */
+ font-style: normal;
+}
+
+abbr {
+ white-space: nowrap;
+}
+
+abbr, acronym {
+ border-bottom: 1px dotted;
+ cursor: help;
+}
+
+del {
+ background-color: #000;
+ color: <?php echo $colors['database']['old_text']; ?>;
+ text-decoration: line-through;
+}
+
+ins {
+ background-color: #000;
+ color: <?php echo $colors['database']['new_text']; ?>;
+ text-decoration: none;
+}
+
+span.cap {
+ font-variant: small-caps;
+}
+
+ul.filelist li {
+ background-color: #000;
+ color: <?php echo $colors['database']['n/a']; ?>;
+ cursor: not-allowed;
+}
+
+/* LCARS specific anchors */
+
+/* order is important to buggy IE;
+ TODO: [IE] links focus color, visited links hover color */
+a:link:hover,
+a:link:active,
+a:link:focus
+{
+ background-color: #000;
+ color: <?php echo $colors['database']['hover']; ?>; /* #fc0 */
+ text-decoration: none;
+}
+
+a:link {
+ background-color: #000;
+ color: <?php echo $colors['database']['link']; ?>; /* white */
+ text-decoration: none;
+}
+
+a:visited:hover {
+ background-color: #000;
+ color: <?php echo $colors['database']['hover']; ?>; /* #fc3 */
+ text-decoration: none;
+}
+
+a:visited:active {
+ background-color: #000;
+ color: <?php echo $colors['database']['active']; ?>; /* #fff */
+ text-decoration: none;
+}
+
+a:visited:focus {
+ background-color: #000;
+ color: <?php echo $colors['database']['hover']; ?>; /* #fc3; */
+ text-decoration: none;
+}
+
+a:visited {
+ background-color: #000;
+ color: <?php echo $colors['database']['visited']; ?>; /* #fc9 */
+ text-decoration: none;
+}
+
+/* buttons */
+a.button:link:focus,a.button:visited:focus,a.button:link:hover,a.button:visited:hover
+ {
+ color: #000;
+ background-color: #c9c;
+ text-decoration: none;
+}
+
+a.button:link:active,a.button:visited:active {
+ color: #000;
+ background-color: #fff;
+ cursor: default;
+ text-decoration: none;
+}
+
+a.button:link,a.button:visited {
+ background-color: #969;
+ color: #000;
+ padding-left: 1px;
+ vertical-align: middle;
+ font-size: 110%;
+ text-decoration: none;
+}
+
+a.stop:link,a.stop:visited {
+ background-color: #c66;
+ color: #000;
+ padding-left: 1px;
+ vertical-align: middle;
+ font-size: 110%;
+ text-decoration: none;
+}
+
+a.stop:link:hover,a.stop:visited:hover {
+ background-color: #f66;
+ color: #000;
+ text-decoration: none;
+}
+
+a.stop:link:active,a.stop:visited:active {
+ background-color: #fff;
+ color: #000;
+ text-decoration: none;
+}
+
+a.go:link,a.go:visited {
+ background-color: #6c6;
+ color: #000;
+ padding-left: 1px;
+ vertical-align: middle;
+ font-size: 110%;
+ text-decoration: none;
+}
+
+a.go:link:hover,a.go:visited:hover {
+ background-color: #6f6;
+ color: #000;
+ text-decoration: none;
+}
+
+a.go:link:active,a.go:visited:active {
+ background-color: #fff;
+ color: #000;
+ text-decoration: none;
+}
+
+span.symbol {
+ font-family: Webdings, fantasy;
+ font-style: normal;
+ font-weight: normal;
+ font-size: 110%;
+}
+
+/* form elements */
+input {
+ background-color: black;
+ font-size: 104%;
+ color: white;
+}
+
+input.button { /* offset-width:auto; */
+ border-style: none;
+ border-width: 0px;
+ color: #000;
+ background-color: #969;
+ font-size: 123%;
+ cursor: pointer;
+}
+
+textarea {
+ background-color: #000;
+ font-size: 104%;
+ color: white;
+}
+
+select {
+ color: white;
+ background-color: #000;
+ border-color: white;
+ font-size: 104%;
+ cursor: pointer;
+}
+
+option {
+ cursor: pointer;
+}
+
+/* table elements */
+table {
+ border-collapse: separate;
+ margin-top: 0;
+ margin-bottom: 1em;
+}
+
+/*
+ * Not for IE 6 and below.
+ * Bugfix for IE 7 is provided by lcars-ie7.css which should be
+ * included as follows:
+
+ <link rel="stylesheet" href="/styles/lcars.css" type="text/css">
+ <!--[if IE 7]>
+ <link rel="stylesheet" href="/styles/lcars-ie7.css" type="text/css">
+ <![endif]-->
+ */
+table>tbody.scroll {
+ height: 11em;
+ overflow: auto;
+ /*
+ * In current implementations, the scrollbar is displayed within
+ * the tbody area, so we disable horizontal scrolling for that ...
+ */
+ overflow-x: hidden !important;
+}
+
+table>tbody.scroll tr {
+ height: auto;
+}
+
+/*
+ * ... and make enough room so that the text won't flow under the
+ * vertical scrollbar. However, that is still a dirty hack as we
+ * assume that the vertical scrollbar is not wider than 20px.
+ */
+table>tbody.scroll td:last-child {
+ padding-right: 20px;
+}
+
+tr {
+ vertical-align: top;
+ vertical-align: baseline;
+}
+
+th {
+ padding-left: 3px;
+ /* border-right:2px solid black; */
+ text-align: left;
+ background-color: #c66;
+ color: #000;
+ font-size: 133%;
+ font-weight: normal;
+}
+
+thead th:first-child {
+ padding-left: 12px;
+ border-radius: 12px 0 0 0;
+ -moz-border-radius: 12px 0 0 0;
+ -webkit-border-radius: 12px 0 0 0;
+}
+
+table.left th,thead.left th,tbody.left th,th.left {
+ background-color: inherit;
+ color: inherit;
+ text-transform: uppercase;
+ text-align: right;
+}
+
+th,td {
+ padding-right: 3px;
+}
+
+td {
+ padding-left: 4px;
+ background-color: inherit;
+ color: inherit;
+ font-size: 133%;
+}
+
+/* hover table */
+table.hover thead th:hover,thead.hover th:hover,tbody.hover th:hover,table.hover tbody tr:hover th,tbody.hover tr:hover th
+ {
+ background-color: #f99;
+ color: #000;
+}
+
+table.hover tbody tr:hover,tbody.hover tr:hover {
+ color: #fc3;
+}
+
+table.hover tbody tr:hover a,tbody.hover tr:hover a {
+ background-color: inherit;
+}
+
+/* Lowlight all rows except that with the active/focused element */
+table.hover tbody:active,table.hover tbody:focus,tbody.hover:active,tbody.hover:focus
+ {
+ background-color: #000;
+ color: #99c;
+}
+
+table.hover tbody tr:active,tbody.hover tr:active,table.hover tbody tr:focus,tbody.hover tr:focus
+ {
+ background-color: #000;
+ color: #fff;
+}
+
+/* This to invert display on hover does not seem proper LCARS design */
+/*
+table.hover tbody tr:hover a:link,
+tbody.hover tr:hover a:link {
+ color:#fff;
+}
+
+table.hover tbody tr:hover a:visited,
+tbody.hover tr:hover a:visited {
+ background-color:inherit;
+ color:#963;
+}
+
+table.hover tbody tr:hover a:link:focus,
+table.hover tbody tr:hover a:visited:focus,
+table.hover tbody tr:hover a:link:hover,
+table.hover tbody tr:hover a:visited:hover,
+table.hover tbody tr:hover a:link:active,
+tbody.hover tr:hover a:link:focus,
+tbody.hover tr:hover a:visited:focus,
+tbody.hover tr:hover a:link:hover,
+tbody.hover tr:hover a:visited:hover,
+tbody.hover tr:hover a:link:active {
+ background-color:inherit;
+ color:#960;
+}
+
+table.hover tbody tr:hover a:visited:active,
+tbody.hover tr:hover a:visited:active {
+ background-color:inherit;
+ color:#c63;
+}
+*/
/live/styles/lcars.css.php
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: live/styles/lcars-20071202.css
===================================================================
--- live/styles/lcars-20071202.css (nonexistent)
+++ live/styles/lcars-20071202.css (revision 198)
@@ -0,0 +1,474 @@
+/* <title>CSS for PointedEars' LCARS, version 2.053, stardate 200712.02</title>
+*/
+
+/* basic fonts */
+
+/* $WEFT -- Created by:Thomas 'PointedEars' Lahn (webmaster@PointedEars.de)
+ on 2002-03-23 -- */
+@font-face {
+ font-family:Haettens;
+ font-style:normal;
+ font-weight:normal;
+ src:url(HAETTEN0.eot);
+}
+
+/*
+@font-face {
+ font-family:Webdings;
+ font-style:normal;
+ font-weight:normal;
+ src:url(WEBDING0.eot);
+}
+*/
+
+@font-face {
+ font-family:"Zurich XCn BT";
+ src:url(ZurichXCn.pfr);
+}
+
+/* basic display */
+
+* {
+ font-family:LCARS, Haettenschweiler, Haettens, "Zurich XCn BT", impact, Verdana,
+ Geneva, Arial, Helvetica, sans-serif;
+ font-weight:normal;
+}
+
+body {
+ cursor:default;
+ font-size:123%; /*110%*/
+ background-color:#000;
+ color:#ccf; /* #afbfe0; #69F; */
+ margin:0 10px;
+ /* IE 5.5+ scrollbar colors */
+/* from Mozilla LCARS Theme (2D style) */
+ scrollbar-3dlight-color:#000;
+ scrollbar-arrow-color:#000;
+ scrollbar-base-color:#000;
+ scrollbar-darkshadow-color:#000;
+ scrollbar-face-color:#99f;
+ scrollbar-highlight-color:#99f;
+ scrollbar-track-color:#000;
+ scrollbar-shadow-color:#99f;
+}
+
+div.body {
+ /* width:95%; */
+}
+
+span.alt { /* span with alternative text color */
+ color:#f93;
+ background-color:#000;
+}
+
+/* for JavaScript processing messages */
+
+.standby {
+ font-size:166%;
+ background-color:#000;
+ color:#99f;
+}
+
+div.standby {
+ position:absolute;
+ top:0;
+ visibility:hidden;
+}
+
+/* font styles */
+
+p {
+ margin-top:0;
+ margin-bottom:1em;
+}
+
+small {
+ font-size:100%;
+}
+
+b, strong {
+ color:#f93;
+ background-color:#000;
+ font-weight:normal;
+}
+
+i, cite, blockquote, em {
+ background-color:#000;
+ color:#f93;
+ font-style:normal;
+}
+
+abbr {
+ white-space:nowrap;
+}
+
+span.cap {
+ font-variant:small-caps;
+}
+
+/* headings */
+
+h1 {
+ font-size:191%;
+ font-weight:normal;
+ color:#c96;
+ background-color:black;
+}
+
+
+h2 {
+ font-size:129%;
+ font-weight:normal;
+ color:#fc6;
+ background-color:black;
+ text-transform: uppercase;
+}
+
+h3 {
+ margin-top:0;
+ margin-bottom:1em;
+ font-size:123%;
+ font-weight:normal;
+ color:#fc6;
+ background-color:black;
+ text-transform: uppercase;
+}
+
+h4 {
+ margin-top:2em;
+ margin-bottom:1em;
+ font-size:116%;
+ font-weight:normal;
+ color:#fc6;
+ background-color:black;
+}
+
+table + h4 {
+ margin-top:1em;
+}
+
+a.h4:link:hover, a.h4:visited:hover {
+ color:#fc6;
+ background-color:black;
+}
+
+a.h4:link:active, a.h4:visited:active {
+ color:#fff;
+ background-color:black;
+}
+
+h5 {
+ margin-top:2em;
+ margin-bottom:1em;
+ font-size:110%;
+ font-weight:normal;
+ color:#fc6;
+ background-color:black;
+}
+
+h6 {
+ margin-top:2em;
+ margin-bottom:1em;
+ font-size:104%;
+ font-weight:normal;
+ color:#fc6;
+ background-color:black;
+}
+
+/* LCARS specific anchors */
+
+/* order is important to buggy IE;
+ TODO: [IE] links focus color, visited links hover color */
+
+a:link:hover, a:link:active, a:link:focus {
+ background-color:#000;
+ color:#fc0;
+ text-decoration:none;
+}
+
+a:link {
+ background-color:black;
+ color:white;
+ text-decoration:none;
+}
+
+a:visited:hover {
+ background-color:#000;
+ color:#fc3;
+ text-decoration:none;
+}
+
+a:visited:active {
+ background-color:black;
+ color:#fff;
+ text-decoration:none;
+}
+
+a:visited:focus {
+ background-color:#000;
+ color:#fc3;
+ text-decoration:none;
+}
+
+a:visited {
+ background-color:black;
+ color:#fc9;
+ text-decoration:none;
+}
+
+/* buttons */
+
+a.button:link:focus, a.button:visited:focus,
+a.button:link:hover, a.button:visited:hover {
+ color:#000;
+ background-color:#c9c;
+ text-decoration:none;
+}
+
+a.button:link:active, a.button:visited:active {
+ color:#000;
+ background-color:#fff;
+ cursor:default;
+ text-decoration:none;
+}
+
+a.button:link, a.button:visited {
+ background-color:#969;
+ color:#000;
+ padding-left:1px;
+ vertical-align:middle;
+ font-size:110%;
+ text-decoration:none;
+}
+
+a.stop:link, a.stop:visited {
+ background-color:#c66;
+ color:#000;
+ padding-left:1px;
+ vertical-align:middle;
+ font-size:110%;
+ text-decoration:none;
+}
+
+a.stop:link:hover, a.stop:visited:hover {
+ background-color:#f66;
+ color:#000;
+ text-decoration:none;
+}
+
+a.stop:link:active, a.stop:visited:active {
+ background-color:#fff;
+ color:#000;
+ text-decoration:none;
+}
+
+a.go:link, a.go:visited {
+ background-color:#6c6;
+ color:#000;
+ padding-left:1px;
+ vertical-align:middle;
+ font-size:110%;
+ text-decoration:none;
+}
+
+a.go:link:hover, a.go:visited:hover {
+ background-color:#6f6;
+ color:#000;
+ text-decoration:none;
+}
+
+a.go:link:active, a.go:visited:active {
+ background-color:#fff;
+ color:#000;
+ text-decoration:none;
+}
+
+span.symbol {
+ font-family:Webdings, fantasy;
+ font-style:normal;
+ font-weight:normal;
+ font-size:110%;
+}
+
+/* form elements */
+
+input {
+ background-color:black;
+ font-size:104%;
+ color:white;
+}
+
+input.button {
+ /* offset-width:auto; */
+ border-style:none;
+ border-width:0px;
+ color:#000;
+ background-color:#969;
+ font-size:123%;
+ cursor:pointer;
+}
+
+textarea {
+ background-color:#000;
+ font-size:104%;
+ color:white;
+}
+
+select
+ {
+ color:white;
+ background-color:#000;
+ border-color:white;
+ font-size:104%;
+ cursor:pointer;
+}
+
+option {
+ cursor:pointer;
+}
+
+/* table elements */
+
+table {
+ border-collapse: separate;
+ margin-top:0;
+ margin-bottom:1em;
+}
+
+/*
+ * Not for IE 6 and below.
+ * Bugfix for IE 7 is provided by lcars-ie7.css which should be
+ * included as follows:
+
+ <link rel="stylesheet" href="/styles/lcars.css" type="text/css">
+ <!--[if IE 7]>
+ <link rel="stylesheet" href="/styles/lcars-ie7.css" type="text/css">
+ <![endif]-->
+ */
+table>tbody.scroll {
+ height:11em;
+ overflow:auto;
+ /*
+ * In current implementations, the scrollbar is displayed within
+ * the tbody area, so we disable horizontal scrolling for that ...
+ */
+ overflow-x: hidden !important;
+}
+
+/*
+ * ... and make enough room so that the text won't flow under the
+ * vertical scrollbar. However, that is still a dirty hack as we
+ * assume that the vertical scrollbar is not wider than 20px.
+ */
+table>tbody.scroll td:last-child {
+ padding-right: 20px;
+}
+
+tr {
+ vertical-align:top;
+ vertical-align: baseline;
+}
+
+th {
+ padding-left:3px;
+ /* border-right:2px solid black; */
+ text-align:left;
+ background-color:#c66;
+ color:#000;
+ font-size:110%;
+ font-weight:normal;
+}
+
+thead th:first-child {
+ border-top-left-radius: 7px 15px;
+}
+
+table.left th, thead.left th, tbody.left th, th.left {
+ background-color:inherit;
+ color:inherit;
+ text-transform:uppercase;
+ text-align:right;
+}
+
+th, td {
+ padding-right:3px;
+}
+
+td {
+ padding-left:4px;
+ background-color:inherit;
+ color:inherit;
+ font-size:110%;
+}
+
+/* hover table */
+
+table.hover thead th:hover,
+thead.hover th:hover,
+tbody.hover th:hover,
+table.hover tbody tr:hover th,
+tbody.hover tr:hover th {
+ background-color:#f99;
+ color:#000;
+}
+
+table.hover tbody tr:hover,
+tbody.hover tr:hover {
+ color:#fc3;
+}
+
+table.hover tbody tr:hover a,
+tbody.hover tr:hover a {
+ background-color:inherit;
+}
+
+/* Lowlight all rows except that with the active/focused element */
+table.hover tbody:active,
+table.hover tbody:focus,
+tbody.hover:active,
+tbody.hover:focus {
+ background-color:#000;
+ color:#99c;
+}
+
+table.hover tbody tr:active,
+tbody.hover tr:active,
+table.hover tbody tr:focus,
+tbody.hover tr:focus {
+ background-color:#000;
+ color:#fff;
+}
+
+/* This to invert display on hover does not seem proper LCARS design */
+/*
+table.hover tbody tr:hover a:link,
+tbody.hover tr:hover a:link {
+ color:#fff;
+}
+
+table.hover tbody tr:hover a:visited,
+tbody.hover tr:hover a:visited {
+ background-color:inherit;
+ color:#963;
+}
+
+table.hover tbody tr:hover a:link:focus,
+table.hover tbody tr:hover a:visited:focus,
+table.hover tbody tr:hover a:link:hover,
+table.hover tbody tr:hover a:visited:hover,
+table.hover tbody tr:hover a:link:active,
+tbody.hover tr:hover a:link:focus,
+tbody.hover tr:hover a:visited:focus,
+tbody.hover tr:hover a:link:hover,
+tbody.hover tr:hover a:visited:hover,
+tbody.hover tr:hover a:link:active {
+ background-color:inherit;
+ color:#960;
+}
+
+table.hover tbody tr:hover a:visited:active,
+tbody.hover tr:hover a:visited:active {
+ background-color:inherit;
+ color:#c63;
+}
+*/
/live/styles/lcars-20071202.css
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: live/styles/lcars-ie7.css
===================================================================
--- live/styles/lcars-ie7.css (nonexistent)
+++ live/styles/lcars-ie7.css (revision 198)
@@ -0,0 +1,18 @@
+/*
+ * Bugfixes for IE 7 which should be included as follows:
+
+ <link rel="stylesheet" href="/styles/lcars.css" type="text/css">
+ <!--[if IE 7]>
+ <link rel="stylesheet" href="/styles/lcars-ie7.css" type="text/css">
+ <![endif]-->
+ */
+
+/* Support for scrollable tbody is buggy */
+table>tbody.scroll {
+ height: auto;
+ overflow: visible;
+}
+
+tr {
+ height: auto;
+}
\ No newline at end of file
/live/styles/lcars-ie7.css
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: live/global.php
===================================================================
--- live/global.php (nonexistent)
+++ live/global.php (revision 198)
@@ -0,0 +1,77 @@
+<?php
+
+$encoding = 'UTF-8';
+header("Content-Type: text/html" . ($encoding ? "; charset=$encoding" : ""));
+
+$modi = max(array(
+ @filemtime(__FILE__),
+ @filemtime('LocaleData'),
+ @filemtime('index.phtml'),
+ @filemtime('footer.phtml'),
+ @filemtime('styles/lcars-basic.css'),
+ @filemtime('styles/lcars22.css'),
+ @filemtime('styles/lcars22-ie6.css'),
+ @filemtime('styles/lcars-ani.css'),
+ @filemtime('scripts/object.js'),
+));
+
+header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $modi) . ' GMT');
+
+/* Cached resource expires in HTTP/1.1 caches 24h after last retrieval */
+header('Cache-Control: max-age=86400, s-maxage=86400, must-revalidate, proxy-revalidate');
+
+/* Cached resource expires in HTTP/1.0 caches 24h after last retrieval */
+header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 86400) . ' GMT');
+
+$languages = array(
+ 'en' => 'English',
+ 'de' => 'Deutsch',
+// 'ru' => 'По-русски',
+);
+
+require_once 'Zend/Loader/StandardAutoloader.php';
+$loader = new Zend\Loader\StandardAutoloader(array('autoregister_zf' => true));
+$loader->register();
+
+$translator = new Zend\I18n\Translator\Translator();
+// $translator->setCache(new Zend\Cache\Storage\*Adapter());
+$type = 'gettext';
+$baseDir = './i18n/LocaleData';
+$textDomain = 'de.pointedears';
+$pattern = "%s/LC_MESSAGES/{$textDomain}.mo";
+$translator->addTranslationFilePattern($type, $baseDir, $pattern, $textDomain);
+
+/**
+ * Returns the translation of the parameter, if any,
+ * using Zend Framework 2.1 Translate
+ *
+ * @param string $s
+ * @return string
+ */
+function tr ($s)
+{
+ global $translator;
+ global $textDomain;
+ global $language;
+
+ /* DEBUG */
+// echo "return \$translator->translate(\"$s\", \"$textDomain\", \"$language\");<br>\n";
+
+ return $translator->translate($s, $textDomain, $language);
+}
+
+$menu = array(
+ 'scripts' => array('path' => 'scripts/', 'text' => 'Scripting'),
+ 'es-matrix' => array(
+ 'path' => 'es-matrix',
+ 'text' => 'ES Matrix',
+ 'title' => 'ECMAScript Support Matrix: ' . tr("A comparison of features of ECMAScript implementations")
+ ),
+ 'devel' => array('path' => 'websvn/', 'text' => tr('Software projects')),
+ 'series' => array('path' => "media/video/series/", 'text' => 'Seri-o-meter'),
+ 'ufpdb' => array(
+ 'path' => "ufpdb/index.$language",
+ 'text' => 'UFPDB',
+ 'title' => tr('United Federation of Planets DataBase')
+ )
+);
Index: live/i18n/LocaleData/de/LC_MESSAGES/de.pointedears.mo
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/i18n/LocaleData/de/LC_MESSAGES/de.pointedears.mo
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/i18n/de.po
===================================================================
--- live/i18n/de.po (nonexistent)
+++ live/i18n/de.po (revision 198)
@@ -0,0 +1,297 @@
+# PointedEars' Website
+# Copyright (C) 2012 Thomas 'PointedEars' Lahn
+# This file is distributed under the same license as the de.pointedears package.
+# Thomas 'PointedEars' Lahn <webmaster@PointedEars.de>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PE 0.3.9.15\n"
+"Report-Msgid-Bugs-To: Thomas 'PointedEars' Lahn <webmaster@PointedEars.de>\n"
+"POT-Creation-Date: 2013-07-01 23:08+0200\n"
+"PO-Revision-Date: 2013-07-01 23:08+0200\n"
+"Last-Translator: Thomas 'PointedEars' Lahn <webmaster@PointedEars.de>\n"
+"Language-Team: German <webmaster@PointedEars.de>\n"
+"Language: de_DE\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../index.phtml:21
+msgid ""
+"Access to the United Federation of Planets Databanks, an online songbook and "
+"software downloads always worth a click. Coming soon: The best internet "
+"links categorized and much more via a bilingual (English/German) LCARS "
+"terminal styled user interface that can be also used to surf the web "
+"anonymously! Bookmark NOW!"
+msgstr ""
+"Zugriff auf die Datenbanken der Vereinten Föderation der Planeten, ein "
+"Online-Songbook und Software-Downloads, die immer einen Klick wert sind. "
+"Bald gibt es hier auch die besten Internet-Links kategorisiert und vieles "
+"mehr über eine zweisprachige (englisch/deutsche) Benutzeroberfläche im Stil "
+"eines LCARS-Terminals, welche auch dazu verwendet werden kann, anonym im Web "
+"zu surfen! Fügen Sie die Seite JETZT zu ihren Bookmarks hinzu!"
+
+#: ../index.phtml:54
+msgid ""
+"The author is not responsible for the availability and the content of "
+"websites referred by this site, and not responsible for the availability and "
+"the content of websites referred by those sites. Whereever outsourced "
+"material is used, copyright or trademark infringement is not intended. Third "
+"parties who claim copyrights or trademarks used herein are asked to send an "
+"informal email to webmaster@PointedEars.de for immediate removal or "
+"modification of the respective material on the website instead of reminding "
+"the author of usage of this material. Thank you."
+msgstr ""
+"Der Autor ist nicht verantwortlich für die Verfügbarkeit und den Inhalt der "
+"Webseiten, auf die durch diese Site verwiesen wird, und nicht verantwortlich "
+"für die Verfügbarkeit und den Inhalt der Webseiten, auf welche die "
+"referenzierten Seiten verweisen. Wo fremdes Material verwendet wurde, ist "
+"keine Verletzung des Copyrights oder Warenzeichens beabsichtigt. Dritte, die "
+"Copyrights oder Warenzeichen, welche hier verwendet wurden, für sich "
+"beanspruchen, werden gebeten, eine informelle E-Mail an "
+"webmaster@PointedEars.de zu senden, um das entsprechende Material umgehend "
+"von der Website entfernen oder dieses modifizieren zu lassen, und von "
+"rechtlichen Schritten abzusehen."
+
+#: ../global.php:39
+msgid "Software projects"
+msgstr "Software-Projekte"
+
+#: ../index.phtml:114
+msgid "Vulcan greeting"
+msgstr "Vulkanischer Gruss"
+
+#: ../index.phtml:127
+msgid "Welcome to PointedEars’ Website"
+msgstr "Willkommen auf PointedEars’ Website"
+
+#: ../index.phtml:132
+msgid "Latitude"
+msgstr "Geogr. Breite"
+
+#: ../index.phtml:133
+msgid "N"
+msgstr ""
+
+#: ../index.phtml:134
+msgid "S"
+msgstr ""
+
+#: ../index.phtml:135
+msgid "Longitude"
+msgstr "Geogr. Länge"
+
+#: ../index.phtml:136
+msgid "W"
+msgstr ""
+
+#: ../index.phtml:137
+msgid "E"
+msgstr "O"
+
+#: ../index.phtml:138
+msgid "Lat/Lng Accuracy"
+msgstr "Genauigkeit"
+
+#: ../index.phtml:139
+msgid "Altitude"
+msgstr "Höhe"
+
+#: ../index.phtml:140
+msgid "Alt. Accuracy"
+msgstr "Genauigkeit Höhe"
+
+#: ../index.phtml:141
+msgid "Speed"
+msgstr "Geschwindigkeit"
+
+#: ../index.phtml:142
+msgid "Heading"
+msgstr "Richtung"
+
+#: ../index.phtml:149
+msgid "Your current coordinates on Terra"
+msgstr "Ihre aktuellen Koordinaten auf Terra"
+
+#: ../index.phtml:150
+msgid "accuracy"
+msgstr "Genauigkeit"
+
+#: ../index.phtml:49
+msgid "Send your feedback to PointedEars"
+msgstr "Senden Sie eine Feedback E-Mail an PointedEars"
+
+#: ../index.phtml:143
+msgid ""
+"This site uses recent <a href='https://developer.mozilla.org/en-US/docs/' "
+"title='Learn more: Mozilla Developer Network'>Web technologies</a>. You can "
+"use the <a href='index.%s?printable=1'>%s</a> if it is not displayed "
+"properly with your software."
+msgstr ""
+"Diese Site verwendet aktuelle <a href='https://developer.mozilla.org/de/"
+"docs/' title='Mehr darüber: Mozilla Developer Network'>Webtechnologien</a>. "
+"Sie können die <a href='index.%s?printable=1'>%s</a> verwenden, falls sie "
+"von Ihrer Software nicht korrekt dargestellt wird."
+
+#: ../index.phtml:372
+msgid "Printable version"
+msgstr "Druckversion"
+
+#: ../index.phtml:375
+msgid "Printable"
+msgstr "Druckversion"
+
+#: ../index.phtml:151
+msgid "Your feedback"
+msgstr "Ihr Feedback"
+
+#: ../index.phtml:156
+msgid "All rights reserved."
+msgstr "Alle Rechte vorbehalten."
+
+#: ../global.php:37
+msgid "A comparison of features of ECMAScript implementations"
+msgstr "Ein Vergleich der Features von ECMAScript-Implementierungen"
+
+#: ../global.php:44
+msgid "United Federation of Planets DataBase"
+msgstr ""
+"United Federation of Planets DataBase -- Datenbanken der Vereinten "
+"Föderation der Planeten"
+
+#: ../index.phtml:184
+msgid ""
+"Original LCARS design by <a href='%s' title='%s'>Michael&nbsp;Okuda</a>. "
+"Website design based on an <a href='%s' title='LCARS Standards Development "
+"Board'>implementation in Flash by Chris&nbsp;Rossi</a>, and research by <a "
+"href='%s' title='Creating a Coherent LCARS Interface'>Bracer&nbsp;Jack</a> "
+"and <a href='%s' title='LCARS 47 Development Blog&nbsp;– LCARS&nbsp;101: A "
+"Designer’s Handbook'>Eleanor&nbsp;C.&nbsp;Davenport</a>."
+msgstr ""
+"Originales LCARS-Design von <a href='%s' title='%s'>Michael&nbsp;Okuda</a>. "
+"Website-Design basierend auf einer <a href='%s' title='LCARS Standards "
+"Development Board'>Implementierung in Flash von Chris&nbsp;Rossi</a> sowie "
+"Arbeiten von <a href='%s' title='Creating a Coherent LCARS "
+"Interface'>Bracer&nbsp;Jack</a> und <a href='%s' title='LCARS 47 Development "
+"Blog&nbsp;– LCARS&nbsp;101: A Designer’s Handbook'>Eleanor&nbsp;C.&nbsp;"
+"Davenport</a>."
+
+#: ../index.phtml:195
+msgid "Michael Okuda on Twitter"
+msgstr "Michael Okuda auf Twitter"
+
+#: ../index.phtml:271
+msgid "PointedEars' Standard Frases"
+msgstr "PointedEars' Standard-Floskeln"
+
+#: ../index.phtml:280
+msgid "The world’s largest climate forecasting experiment for the 21st century"
+msgstr "Das weltgrösste Klimaforschungsexperiment für das 21. Jahrhundert"
+
+#: ../index.phtml:285
+msgid ""
+"Distributed computing to understand protein folding, protein aggregation, "
+"and related diseases"
+msgstr ""
+"Verteiltes Rechnen, um die Faltung und Anordnung von Proteinen und damit "
+"verbundener Krankheiten zu verstehen"
+
+#: ../index.phtml:289
+msgid "Particle physics research with the Large Hadron Collider at CERN"
+msgstr "Teilchenphysik-Forschung mit dem Large Hadron Collider am CERN"
+
+#: ../index.phtml:293
+msgid "List of recommended TV shows and episodes, with logos in CSS"
+msgstr "Liste empfehlenswerter TV-Serien und Episoden, mit Logos in CSS"
+
+#: ../index.phtml:318
+msgid "The Search for Extra-Terrestrial Intelligence at HOME"
+msgstr "Die Suche nach ausserirdischer Intelligenz von zuhause aus"
+
+#: ../index.phtml:322
+msgid "Me on Stack Overflow"
+msgstr "Mein Profil bei Stack Overflow"
+
+#: ../index.phtml:323
+msgid "Me on Twitter"
+msgstr "Mein Profil bei Twitter"
+
+#: ../index.phtml:325
+msgid "http://en.wikipedia.org/wiki/Special:Contributions/PointedEars"
+msgstr "http://de.wikipedia.org/wiki/Spezial:Beitr%C3%A4ge/PointedEars"
+
+#: ../index.phtml:327
+msgid "My contributions to Wikipedia"
+msgstr "Meine Beiträge zur deutschsprachigen Wikipedia"
+
+#: ../index.phtml:369
+msgid "Display"
+msgstr "Anzeige"
+
+#: ../index.phtml:373
+msgid "available"
+msgstr "verfügbar"
+
+#: ../index.phtml:373
+msgid "used"
+msgstr "benutzt"
+
+#: ../index.phtml:373
+msgid "pixels"
+msgstr "Pixel"
+
+#: ../index.phtml:375
+msgid "colors"
+msgstr "Farben"
+
+#: ../index.phtml:376
+msgid "N/A"
+msgstr ""
+
+#: ../index.phtml:379
+msgid "User Agent"
+msgstr "Software"
+
+#: ../index.phtml:385
+msgid "Features"
+msgstr ""
+
+#: ../index.phtml:504
+msgid "Cookies"
+msgstr ""
+
+#: ../index.phtml:506
+msgid "Gamepad"
+msgstr ""
+
+#: ../index.phtml:508
+msgid "Geolocation"
+msgstr "Geolokalisierung"
+
+#: ../index.phtml:418 ../index.phtml:453
+msgid "Fullscreen"
+msgstr "Vollbild"
+
+#: ../index.phtml:443
+msgid "Window"
+msgstr "Fenster"
+
+#: ../index.phtml:497
+msgid "Cookies supported, but no data for this site"
+msgstr "Cookies werden unterstützt, aber es gibt keine Daten für diese Site"
+
+#: ../index.phtml:504
+msgid "Cookies supported, but disabled"
+msgstr "Cookies werden unterstützt, sind jedoch deaktiviert"
+
+#: ../index.phtml:538
+msgid "plugins installed"
+msgstr "Plugins installiert"
+
+#: ../index.phtml:543
+msgid "Plugins supported, but none detected"
+msgstr "Plugins werden unterstützt, aber es wurden keine erkannt"
+
+#: ../index.phtml:529
+msgid "Date of last modification"
+msgstr "Datum der letzten Änderung"
Index: live/i18n/de.pointedears.pot
===================================================================
--- live/i18n/de.pointedears.pot (nonexistent)
+++ live/i18n/de.pointedears.pot (revision 198)
@@ -0,0 +1,251 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Thomas 'PointedEars' Lahn
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PE 0.3.9.15\n"
+"Report-Msgid-Bugs-To: Thomas 'PointedEars' Lahn <webmaster@PointedEars.de>\n"
+"POT-Creation-Date: 2013-07-01 23:08+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../index.phtml:21
+msgid "Access to the United Federation of Planets Databanks, an online songbook and software downloads always worth a click. Coming soon: The best internet links categorized and much more via a bilingual (English/German) LCARS terminal styled user interface that can be also used to surf the web anonymously! Bookmark NOW!"
+msgstr ""
+
+#: ../index.phtml:54
+msgid "The author is not responsible for the availability and the content of websites referred by this site, and not responsible for the availability and the content of websites referred by those sites. Whereever outsourced material is used, copyright or trademark infringement is not intended. Third parties who claim copyrights or trademarks used herein are asked to send an informal email to webmaster@PointedEars.de for immediate removal or modification of the respective material on the website instead of reminding the author of usage of this material. Thank you."
+msgstr ""
+
+#: ../global.php:39
+msgid "Software projects"
+msgstr ""
+
+#: ../index.phtml:114
+msgid "Vulcan greeting"
+msgstr ""
+
+#: ../index.phtml:127
+msgid "Welcome to PointedEars’ Website"
+msgstr ""
+
+#: ../index.phtml:132
+msgid "Latitude"
+msgstr ""
+
+#: ../index.phtml:133
+msgid "N"
+msgstr ""
+
+#: ../index.phtml:134
+msgid "S"
+msgstr ""
+
+#: ../index.phtml:135
+msgid "Longitude"
+msgstr ""
+
+#: ../index.phtml:136
+msgid "W"
+msgstr ""
+
+#: ../index.phtml:137
+msgid "E"
+msgstr ""
+
+#: ../index.phtml:138
+msgid "Lat/Lng Accuracy"
+msgstr ""
+
+#: ../index.phtml:139
+msgid "Altitude"
+msgstr ""
+
+#: ../index.phtml:140
+msgid "Alt. Accuracy"
+msgstr ""
+
+#: ../index.phtml:141
+msgid "Speed"
+msgstr ""
+
+#: ../index.phtml:142
+msgid "Heading"
+msgstr ""
+
+#: ../index.phtml:149
+msgid "Your current coordinates on Terra"
+msgstr ""
+
+#: ../index.phtml:150
+msgid "accuracy"
+msgstr ""
+
+#: ../index.phtml:49
+msgid "Send your feedback to PointedEars"
+msgstr ""
+
+#: ../index.phtml:143
+msgid "This site uses recent <a href='https://developer.mozilla.org/en-US/docs/' title='Learn more: Mozilla Developer Network'>Web technologies</a>. You can use the <a href='index.%s?printable=1'>%s</a> if it is not displayed properly with your software."
+msgstr ""
+
+#: ../index.phtml:372
+msgid "Printable version"
+msgstr ""
+
+#: ../index.phtml:375
+msgid "Printable"
+msgstr ""
+
+#: ../index.phtml:151
+msgid "Your feedback"
+msgstr ""
+
+#: ../index.phtml:156
+msgid "All rights reserved."
+msgstr ""
+
+#: ../global.php:37
+msgid "A comparison of features of ECMAScript implementations"
+msgstr ""
+
+#: ../global.php:44
+msgid "United Federation of Planets DataBase"
+msgstr ""
+
+#: ../index.phtml:184
+msgid "Original LCARS design by"
+" <a href='%s' title='%s'>Michael&nbsp;Okuda</a>."
+" Website design based on an <a href='%s'"
+" title='LCARS Standards Development Board'"
+">implementation in Flash by Chris&nbsp;Rossi</a>,"
+" and research by <a href='%s'"
+" title='Creating a Coherent LCARS Interface'>Bracer&nbsp;Jack</a>"
+" and <a href='%s'"
+" title='LCARS 47 Development Blog&nbsp;– LCARS&nbsp;101: A Designer’s Handbook'"
+">Eleanor&nbsp;C.&nbsp;Davenport</a>."
+msgstr ""
+
+#: ../index.phtml:195
+msgid "Michael Okuda on Twitter"
+msgstr ""
+
+#: ../index.phtml:271
+msgid "PointedEars' Standard Frases"
+msgstr ""
+
+#: ../index.phtml:280
+msgid "The world’s largest climate forecasting experiment for the 21st century"
+msgstr ""
+
+#: ../index.phtml:285
+msgid "Distributed computing to understand protein folding, protein aggregation, and related diseases"
+msgstr ""
+
+#: ../index.phtml:289
+msgid "Particle physics research with the Large Hadron Collider at CERN"
+msgstr ""
+
+#: ../index.phtml:293
+msgid "List of recommended TV shows and episodes, with logos in CSS"
+msgstr ""
+
+#: ../index.phtml:318
+msgid "The Search for Extra-Terrestrial Intelligence at HOME"
+msgstr ""
+
+#: ../index.phtml:322
+msgid "Me on Stack Overflow"
+msgstr ""
+
+#: ../index.phtml:323
+msgid "Me on Twitter"
+msgstr ""
+
+#: ../index.phtml:325
+msgid "http://en.wikipedia.org/wiki/Special:Contributions/PointedEars"
+msgstr ""
+
+#: ../index.phtml:327
+msgid "My contributions to Wikipedia"
+msgstr ""
+
+#: ../index.phtml:369
+msgid "Display"
+msgstr ""
+
+#: ../index.phtml:373
+msgid "available"
+msgstr ""
+
+#: ../index.phtml:373
+msgid "used"
+msgstr ""
+
+#: ../index.phtml:373
+msgid "pixels"
+msgstr ""
+
+#: ../index.phtml:375
+msgid "colors"
+msgstr ""
+
+#: ../index.phtml:376
+msgid "N/A"
+msgstr ""
+
+#: ../index.phtml:379
+msgid "User Agent"
+msgstr ""
+
+#: ../index.phtml:385
+msgid "Features"
+msgstr ""
+
+#: ../index.phtml:504
+msgid "Cookies"
+msgstr ""
+
+#: ../index.phtml:506
+msgid "Gamepad"
+msgstr ""
+
+#: ../index.phtml:508
+msgid "Geolocation"
+msgstr ""
+
+#: ../index.phtml:418
+#: ../index.phtml:453
+msgid "Fullscreen"
+msgstr ""
+
+#: ../index.phtml:443
+msgid "Window"
+msgstr ""
+
+#: ../index.phtml:497
+msgid "Cookies supported, but no data for this site"
+msgstr ""
+
+#: ../index.phtml:504
+msgid "Cookies supported, but disabled"
+msgstr ""
+
+#: ../index.phtml:538
+msgid "plugins installed"
+msgstr ""
+
+#: ../index.phtml:543
+msgid "Plugins supported, but none detected"
+msgstr ""
+
+#: ../index.phtml:529
+msgid "Date of last modification"
+msgstr ""
Index: live/i18n/Makefile
===================================================================
--- live/i18n/Makefile (nonexistent)
+++ live/i18n/Makefile (revision 198)
@@ -0,0 +1,98 @@
+# Makefile for various po files.
+
+srcdir = .
+targetdir= ./LocaleData
+
+#CATALOGS = $(addsuffix .po, LINGUAS)
+CATALOGS = $(LINGUAS)
+MO_FILES = $(addsuffix .mo, $(LINGUAS))
+
+MSGMERGE = msgmerge
+MSGFMT = msgfmt
+XGETTEXT = xgettext
+CATOBJEXT = .po
+
+include PACKAGE
+
+TD = $(strip $(TEXTDOMAIN))
+
+default: help
+
+all: $(TD).pot update-po update-mo install
+
+help:
+ @echo "Available targets:"
+ @echo " pot - remake master catalog"
+ @echo " update-po - merge po files"
+ @echo " update-mo - regenerate mo files"
+ @echo " install - install mo files"
+ @echo " all - all of the above"
+
+POTFILES = $(srcdir)/POTFILES.in \
+ $(shell cat $(srcdir)/POTFILES.in)
+
+pot: $(TD).pot
+
+clean:
+ rm -f *~ *.bak *.mo
+
+# FIXME: The parameter --from-code is only needed if your sources contain
+# any 8 bit data (even in comments). UTF-8 is only a guess here, but it
+# will at least accept any 8 bit data.
+#
+# The parameter "--language=perl" is not strictly needed because the
+# source language of all our files will be auto-detected by xgettext
+# by their filename extension. You should even avoid this parameter
+# if you want to extract strings from multiple source languages.
+# --keyword --keyword='_' --keyword='$$__' --keyword=__ --keyword=__x \
+# --keyword=__n:1,2 --keyword=__nx:1,2 --keyword=__xn:1,2 \
+# --keyword=__p:1c,2 --keyword=__np:1c,2,3 \
+# --keyword=__npx:1c,2,3 --keyword=N__ --keyword=N__n:1,2 \
+# --keyword=N__p:1c,2 --keyword=N__np:1c,2,3 --keyword=%__ \
+$(TD).pot: $(POTFILES)
+ $(XGETTEXT) --output=$(srcdir)/$(TD).pox --from-code=utf-8 \
+ --add-comments=TRANSLATORS: --files-from=$(srcdir)/POTFILES.in \
+ --package-name="$(PACKAGE_NAME)" \
+ --package-version="$(PACKAGE_VERSION)" \
+ --copyright-holder="$(COPYRIGHT_HOLDER)" \
+ --msgid-bugs-address="$(MSGID_BUGS_ADDRESS)" \
+ rm -f $@ && mv $(TD).pox $@
+
+install: $(MO_FILES)
+ cd $(srcdir); \
+ targetdir='$(targetdir)'; \
+ languages='$(LINGUAS)'; \
+ for lang in $$languages; do \
+ mkdir -p "$$targetdir/$$lang/LC_MESSAGES" || exit 1; \
+ dest="$$targetdir/$$lang/LC_MESSAGES/$(TD).mo"; \
+ cat="$$lang.mo"; \
+ echo "installing $$cat as $$dest"; \
+ cp -f $$cat $$dest && chmod 644 $$dest || exit 1; \
+ done
+
+update-mo: $(MO_FILES)
+
+update-po:
+ $(MAKE) $(TD).pot
+ cd $(srcdir); \
+ catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+ mv $$lang.po $$lang.old.po; \
+ echo "$$lang:"; \
+ if $(MSGMERGE) $$lang.old.po $(TD).pot -o $$lang.po; then \
+ rm -f $$lang.old.po; \
+ else \
+ echo "msgmerge for $$cat failed!"; \
+ rm -f $$lang.po; \
+ mv $$lang.old.po $$lang.po; \
+ fi; \
+ done
+
+.SUFFIXES:
+.SUFFIXES: .po .mo
+
+.po.mo:
+ $(MSGFMT) --check --statistics --verbose -o $@ $<
+
Index: live/i18n/POTFILES.in
===================================================================
--- live/i18n/POTFILES.in (nonexistent)
+++ live/i18n/POTFILES.in (revision 198)
@@ -0,0 +1,2 @@
+../global.php
+../index.phtml
Index: live/i18n/PACKAGE
===================================================================
--- live/i18n/PACKAGE (nonexistent)
+++ live/i18n/PACKAGE (revision 198)
@@ -0,0 +1,17 @@
+# Makefile snippet that holds all package-dependent information.
+
+# Add more languages here! Beware that this is a makefile snippet and
+# you have to adhere to make syntax.
+LINGUAS = de
+
+# Textdomain for our package.
+TEXTDOMAIN = de.pointedears
+
+PACKAGE_NAME = PE
+PACKAGE_VERSION = 0.3.2
+
+# Initial copyright holder added to pot and po files.
+COPYRIGHT_HOLDER = Thomas 'PointedEars' Lahn
+
+# Where to send msgid bugs?
+MSGID_BUGS_ADDRESS = Thomas 'PointedEars' Lahn <webmaster@PointedEars.de>
Index: live/i18n
===================================================================
--- live/i18n (nonexistent)
+++ live/i18n (revision 198)
/live/i18n
Property changes:
Added: svn:ignore
## -0,0 +1 ##
+*.mo
Index: live/index.phtml
===================================================================
--- live/index.phtml (nonexistent)
+++ live/index.phtml (revision 198)
@@ -0,0 +1,792 @@
+<!DOCTYPE html>
+<html lang="<?php echo $language; ?>">
+ <head>
+ <title>Home — PointedEars’ Website</title>
+
+ <link rel="SHORTCUT ICON" href="favicon.ico">
+
+ <!-- Browsers: Character Encoding -->
+ <meta charset="UTF-8">
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8">
+
+ <!-- Robots: Index, Subordinated Files, Description, Author,
+ Keywords, Document Date -->
+ <meta name="robots" content="index">
+ <meta name="robots" content="follow">
+<?php /*
+ <meta name="description"
+ content="PointedEars' Website: <?php
+ $description = tr("Access to the United Federation of Planets Databanks, an online songbook and software downloads always worth a click. Coming soon: The best internet links categorized and much more via a bilingual (English/German) LCARS terminal styled user interface that can be also used to surf the web anonymously! Bookmark NOW!");
+ echo $description;
+ ?>">
+*/ ?>
+ <meta name="author" content="Thomas ‘PointedEars’ Lahn">
+
+ <?php /* No localization of keywords at the time */ ?>
+ <meta name="keywords"
+ content="<?php /* Appz, */ ?>Download, Links, LCARS, Star Trek, TNG, The Next Generation, DS9, Deep Space 9, Deep Space Nine, VOY, Voyager, UFP, Federation, United Federation of Planets, Database, Databank, <?php /* Song, Songbook, Surf, anonymously, */?>Raumschiff Enterprise, DNG, Die n&auml;chste Generation, VFP, F&ouml;deration, Vereinte F&ouml;deration der Planeten, Datenbasis, Datenbank<?php /*, Lied, Liedtext, surfen, anonym */ ?>">
+<?php /*
+ <meta name="keywords" http-equiv="Keywords" lang="de" content="">
+ <meta name="keywords" http-equiv="Keywords" lang="en-us" content="">
+ <meta name="keywords" http-equiv="Keywords" lang="en" content="">
+*/ ?>
+ <meta name="revisit-after" content="3 days">
+
+ <!-- Robots: Dublin Core Metadata (http://purl.org/metadata/dublin_core) -->
+ <meta name="dcterms.title" content="PointedEars’ Website">
+ <meta name="dcterms.creator" content="Thomas ‘PointedEars’ Lahn">
+ <meta name="dcterms.subject" content="Private Web site">
+<?php /*
+ <meta name="dcterms.description"
+ content="PointedEars' Website: <?php echo $description; ?>">
+*/ ?>
+ <meta name="dcterms.publisher" content="PointedEars">
+ <meta name="dcterms.date" content="2002-05-23T10:56:00+02:00">
+ <meta name="dcterms.created" content="2002-05-23">
+ <meta name="dcterms.modified" content="<?php echo gmdate('Y-m-dTH:i:sO', $modi); ?>">
+<?php /*
+ <meta name="dcterms.type" content="">
+ <meta name="dcterms.format" content="">
+*/ ?>
+ <meta name="dcterms.identifier" content="http://pointedears.de/index.<?php echo $language; ?>">
+ <meta name="dcterms.language" content="<?php echo $language; ?>">
+ <meta name="dcterms.rightsHolder"
+ content="Copyright © 2002&#8211;<?php echo gmdate('Y', $modi); ?> Thomas&nbsp;Lahn.">
+ <meta name="dcterms.rights"
+ content="<?php echo tr("All rights reserved."); ?> <?php echo tr("The author is not responsible for the availability and the content of websites referred by this site, and not responsible for the availability and the content of websites referred by those sites. Whereever outsourced material is used, copyright or trademark infringement is not intended. Third parties who claim copyrights or trademarks used herein are asked to send an informal email to webmaster@PointedEars.de for immediate removal or modification of the respective material on the website instead of reminding the author of usage of this material. Thank you."); ?>">
+
+<?php /*
+ <!-- <link rel="stylesheet" type="text/css" href="styles/lcars.css"> -->
+ <!-- <link rel="stylesheet" type="text/css" href="styles/lcars21.css"> -->
+ <!-- No optimization here: Resource Builder does not handle URI parameters -->
+*/ ?>
+ <link rel="stylesheet" type="text/css" href="styles/lcars-basic">
+<?php
+ $isLocal = ($_SERVER['HTTP_HOST'] === 'localhost');
+ $printable = (isset($_GET['printable']) && $_GET['printable'] === '1');
+ if (!$printable)
+ {
+?>
+ <link rel="stylesheet" type="text/css" href="styles/lcars22<?php
+ if (isset($_GET['ani']) && $_GET['ani'] !== '')
+ {
+ echo '?ani=' . $_GET['ani'];
+ }
+ ?>">
+<?php
+ }
+?>
+ <!--[if lt IE 7]>
+ <link rel="stylesheet" type="text/css" href="styles/lcars22-ie6.css">
+ <![endif]-->
+ <style type="text/css">
+ <!--
+ p {
+ max-width: 100%;
+ }
+ -->
+ </style>
+
+ <script type="text/javascript" src="scripts/builder?src=object,dom,dom/css,dom/storage,dom/events,dom/geolocation,dom/timeout,dom/widgets,dom/window,http,lcars<?php
+ if ($isLocal)
+ {
+ ?>&amp;verbose=1&amp;debug=1<?php
+ }
+ ?>"></script>
+ <script type="text/javascript">
+<?php
+ /*
+ var ms1Day = 60*60*24*1000; // ms for 1 days = 60sec*60min*24hours*1000ms
+ var msLeaveDays = ms1Day*6;
+ var ms30Days=ms1Day*30;
+ var delta;
+ var newTime=new Date();
+ var msTime=newTime.getTime();
+ var msExpire=msTime+ms30Days;
+ var expireTime=new Date(msExpire);
+
+ cookieVal=
+ "savedTime=" + newTime.toGMTString()
+ + "; expires=" + expireTime.toGMTString()
+ + "; domain=anybody"
+ + "; path=/";
+ document.cookie= cookieVal;
+ */
+?>
+ var TEXT_NOT_AVAILABLE = "<?php echo tr('N/A'); ?>";
+
+ function body_load ()
+ {
+ if (typeof this.ontouchstart != 'undefined')
+ {
+ this.ontouchstart = function () {};
+ }
+
+ if (fullscreen.isSupportedBy(document.documentElement))
+ {
+ var fullscreenLI = jsx.dom.getElementById("cmd3");
+ fullscreenLI.firstChild.style.cursor = "";
+ }
+
+ jsx.dom.geolocation.setTexts({
+ TEXT_LATITUDE: "<?php echo tr('Latitude'); ?>",
+ TEXT_NORTH_ABBR: "<?php echo tr('N'); ?>",
+ TEXT_SOUTH_ABBR: "<?php echo tr('S'); ?>",
+ TEXT_LONGITUDE: "<?php echo tr('Longitude'); ?>",
+ TEXT_WEST_ABBR: "<?php echo tr('W'); ?>",
+ TEXT_EAST_ABBR: "<?php echo tr('E'); ?>",
+ TEXT_LAT_LNG_ACCURACY: "<?php echo tr('Lat/Lng Accuracy'); ?>",
+ TEXT_ALTITUDE: "<?php echo tr('Altitude'); ?>",
+ TEXT_ALT_ACCURACY: "<?php echo tr('Alt. Accuracy'); ?>",
+ TEXT_SPEED: "<?php echo tr('Speed'); ?>",
+ TEXT_HEADING: "<?php echo tr('Heading'); ?>",
+ TEXT_NOT_AVAILABLE: TEXT_NOT_AVAILABLE
+ });
+
+ lcars.multiDisplay = new lcars.MultiDisplay(null, null, {
+ texts: {
+ TEXT_NOT_AVAILABLE: TEXT_NOT_AVAILABLE,
+ TEXT_CURRENT_COORDS: "<?php echo tr('Your current coordinates on Terra'); ?>",
+ TEXT_ACCURACY: "<?php echo tr('accuracy'); ?>"
+ }
+ });
+ }
+ </script>
+ <?php /* <bgsound src="media/interface/sound/beginop.wav" loop="infinite"> */ ?>
+ </head>
+ <body class="fade-in" onload="body_load()">
+ <div id="content">
+ <h1 style="text-align: center"><img
+ src="media/video/img/vulcan_hand-black-bg.png"
+ width="120"
+ height="168"
+ alt="<?php echo tr("Vulcan greeting"); ?>"
+ title="<?php echo tr("Vulcan greeting"); ?>"
+ style="border: none; cursor: default"
+ onmouseover="return setStatus(this.title)"
+ onmouseout="return resetStatus()"><br>
+ <?php echo tr("Welcome to PointedEars’ Website"); ?></h1>
+<?php
+ if (!$printable)
+ {
+?>
+ <p class="instruction" style="font-size: 100%; text-align: center"><?php
+ echo sprintf(
+ tr("This site uses recent <a href='https://developer.mozilla.org/en-US/docs/'"
+ . " title='Learn more: Mozilla Developer Network'>Web technologies</a>."
+ . " You can use the <a href='index.%s?printable=1'>%s</a>"
+ . " if it is not displayed properly with your software."),
+ $language,
+ tr('Printable version'));
+ ?></p>
+<?php
+ }
+
+ /*
+ <p>
+ | <a href="leisure/" target="_top"
+ >Freizeit-Datenbank</a>
+ | <a href="mozilla/" target="_top">Mozilla</a>
+ | <a href="poetry/" target="_top">Poesie</a>
+ */
+
+ /*
+ | [<abbr title="nur in englischer Sprache verf&uuml;gbar"
+ >en</abbr>]
+ | <a href="selfhtml.de/" target="_top">SELFHTML.DE</a>
+ */
+ /*
+ | <a href="lyrics/" target="_top">Songbook</a>
+ | </p>
+ */
+ /*
+ <p><a href="about/worm.de.html" target="_top"
+ >Seltsame E-Mails bekommen?</a></p>
+ */
+/*
+ <noscript>
+ <a
+ href="http://pointedears.de/"
+ title="PointedEars' Website"
+ >Diese Website zu Ihren Lesezeichen hinzuf&uuml;gen</a>
+ </noscript>
+
+ <!-- Klicken Sie hier, falls Sie nach 5 Sekunden nicht automatisch
+ weitergeleitet werden. -->
+*/
+?>
+<?php
+ $app = "Welcome/$language";
+ require_once 'footer.phtml';
+ /* embed src="media/interface/speech/de/warten.wav" width="0" height="0"
+ hidden="true" autostart="true" dir="ltr" lang="de" */
+?>
+ </div>
+ <div id="LCARS">
+<?php /*
+ <div id="button-grid" style="position: absolute; opacity: 0.3">
+ <a class="button" style="display: block; clear: left; float: left"><span class="text">Button 1</span></a>
+
+ <a class="button" style="display: block; clear: left; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+
+ <a class="button" style="display: block; clear: left; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+
+ <a class="button" style="display: block; clear: left; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+
+ <a class="button" style="display: block; clear: left; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+
+ <a class="button" style="display: block; clear: left; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+
+ <a class="button" style="display: block; clear: left; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+
+ <a class="button" style="display: block; clear: left; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+
+ <a class="button" style="display: block; clear: left; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+
+ <a class="button" style="display: block; clear: left; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+
+ <a class="button" style="display: block; clear: left; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+ <a class="button" style="display: block; float: left"><span class="text">Button 1</span></a>
+ </div>
+*/ ?>
+ <div id="bow">
+ <div id="bow-top">
+ <div class="separator-left">&nbsp;</div>
+ <div class="text"><span>PointedEars’ Website</span></div>
+ </div>
+ <div id="bow-top-left">
+ <div class="concave">&nbsp;</div>
+ <div style="position: absolute; top: 3.2em; left: 0; background-color: black">
+ <div class="bow" style="margin-top: 0.2em; width: 8em; height: 1em">&nbsp;</div>
+ </div>
+ </div>
+ <div id="bottom">
+ <div id="bow-bottom">
+ <div class="concave">&nbsp;</div>
+ <div class="spacer">&nbsp;</div>
+ </div>
+ </div>
+
+ <div class="menu-container">
+ <nav class="menu">
+ <ul>
+ <?php foreach ($languages as $key => $name): ?>
+ <li><a href="index.<?php echo $key; ?>?ani=0"
+ class="button<?php if ($language === $key) { ?> selected<?php } ?>"
+ tabindex="2"><span class="text"><?php echo $name; ?></span></a></li>
+ <?php endforeach; ?>
+ </ul>
+ <div class="bow" style="margin-bottom: 0.4em; height: 0.4em">&nbsp;</div>
+ <ul style="margin-bottom: 1.2em">
+ <li><a href="<?php echo $menu['scripts']['path']; ?>" target="_top" class="button"><span class="text"><?php echo $menu['scripts']['text']; ?></span></a></li>
+ <li><a href="<?php echo $menu['es-matrix']['path']; ?>" target="_top" class="button"
+ title="<?php echo $menu['es-matrix']['title']; ?>"
+ ><span class="text"><?php echo $menu['es-matrix']['text']; ?></span></a></li>
+ <li><a href="<?php echo $menu['devel']['path']; ?>" target="_top" class="button"><span class="text"><?php echo $menu['devel']['text']; ?></span></a></li>
+ </ul>
+ <ul style="margin-bottom: 0.2em">
+ <li><a href="psf/" target="_top"
+ class="button ancillary"
+ ><abbr title="<?php echo tr("PointedEars' Standard Frases"); ?>"
+ class="text">psf</abbr></a></li>
+ <li><a href="<?php echo $menu['series']['path']; ?>" target="_top" class="button ancillary"
+ title="<?php echo tr('List of recommended TV shows and episodes, with logos in CSS'); ?>"
+ ><span class="text"><?php echo $menu['series']['text']; ?></span></a></li>
+ <li><a href="<?php echo $menu['ufpdb']['path']; ?>" target="_top" class="button database"
+ ><abbr title="<?php echo $menu['ufpdb']['title']; ?>"
+ class="text"><?php echo $menu['ufpdb']['text']; ?></abbr></a></li>
+ </ul>
+ <div style="position: relative; margin-bottom: 1.2em">
+ <div class="bow" style="height: 0.8em">&nbsp;</div>
+ </div>
+ <ul>
+ <li><a href="http://climateapps2.oerc.ox.ac.uk/cpdnboinc/show_user.php?userid=648544"
+ target="_top" class="button secondary"
+ title="<?php echo tr("The world’s largest climate forecasting experiment for the 21st century"); ?>"
+ ><span class="text">climateprediction.net</span></a></li>
+ <li><a href="http://fah-web2.stanford.edu/cgi-bin/main.py?qtype=userpage&username=Thomas_Lahn"
+ target="_top" class="button secondary"
+ title="<?php echo tr("Distributed computing to understand protein folding, protein aggregation, and related diseases"); ?>"
+ ><span class="text">Folding at home</span></a></li>
+ <li><a href="http://lhcathomeclassic.cern.ch/sixtrack/show_user.php?userid=221181"
+ target="_top" class="button secondary"
+ title="<?php echo tr("Particle physics research with the Large Hadron Collider at CERN"); ?>"
+ ><span class="text">LHC at home</span></a></li>
+ <li><a href="http://setiathome.berkeley.edu/show_user.php?userid=378921"
+ target="_top" class="button secondary"
+ title="<?php echo tr("The Search for Extra-Terrestrial Intelligence at HOME"); ?>"
+ ><span class="text">SETI at home</span></a></li>
+ <li><a href="http://stackoverflow.com/users/855543/pointedears"
+ target="_top" class="button secondary"
+ title="<?php echo tr("Me on Stack Overflow"); ?>"
+ ><span class="text">Stack Overflow</span></a></li>
+ <li><a href="https://twitter.com/PointedEars2"
+ target="_top" class="button secondary"
+ title="<?php echo tr("Me on Twitter"); ?>"
+ ><span class="text">Twitter</span></a></li>
+ <li><a href="<?php echo tr("http://en.wikipedia.org/wiki/Special:Contributions/PointedEars"); ?>"
+ target="_top" class="button secondary"
+ title="<?php echo tr("My contributions to Wikipedia"); ?>"
+ ><span class="text">Wikipedia</span></a></li>
+ </ul>
+<?php /*
+ <script type="text/javascript">
+ var sURL = location.href;
+ var sFavAnchorTitle =
+ "Klicken Sie hier, um PointedEars' Website Ihren Favoriten"
+ + " hinzuzufügen";
+ var sOtherAnchorTitle =
+ "Klicken Sie hier mit der rechten Maustaste, um PointedEars' Website"
+ + " Ihren Lesezeichen hinzuzufügen";
+ var sFavoriteTitle = "PointedEars' Website";
+
+ if (jsx.object.isHostMethod(jsx.global.window, "external", "AddFavorite"))
+ {
+ document.write(
+ '<div style="position: relative; margin-top: 1em; border-bottom: 0.2em solid transparent">'
+ + ' <div class="bow" style="width: 8em; height: 1em">&nbsp;<\/div>'
+ + ' <div class="bow" style="position: absolute; top: 0; left: 8.2em; width: 2em; height: 1em">&nbsp;<\/div>'
+ + '</div>'
+ + '<a href="javascript:window.external.AddFavorite('
+ + ' sURL, sFavoriteTitle);" title="' + sFavAnchorTitle + '"'
+ + ' class="button"'
+ + ' onclick="window.external.AddFavorite('
+ + ' sURL, sFavoriteTitle); return false"'
+ + ' onmouseover="return setStatus(sFavAnchorTitle)"'
+ + ' onmouseout="return resetStatus()"'
+ + '><span class="text">Favorit<\/span><\/a>');
+ }
+ </script>
+*/ ?>
+ </nav>
+ </div>
+ </div>
+ <div id="connectors">
+ <div class="bow top left">&nbsp;</div>
+ <div class="bow top right">&nbsp;</div>
+
+ <div class="bow mid left">&nbsp;</div>
+ <div class="bow mid right">&nbsp;</div>
+ </div>
+ <div class="multi-display">
+ <div class="upper">
+ <div class="content">
+ <div class="title" id="title"><span>Home</span></div>
+ <div class="analysis" id="analysis">
+ <table>
+ <tr>
+ <th><?php echo tr('Display'); ?>:</th>
+ <td><script type="text/javascript">
+ var _addEventListener = jsx.dom.addEventListener;
+ var _runAsync = jsx.dom.timeout.runAsync;
+ var ID_SCREEN_DIM = 'screenDim';
+ var ID_AVAIL_DIM = 'availDim';
+ var ID_INNER_DIM = 'innerDim';
+
+ var dim = (function () {
+ var screenInfo = jsx.dom.window.screenInfo;
+
+ return {
+ getScreenText: function () {
+ var screenDim = screenInfo.getDim();
+ return screenDim.width + "×" + screenDim.height;
+ },
+
+ getAvailText: function () {
+ var availDim = screenInfo.getAvailDim();
+ return availDim.width + "×" + availDim.height + " <?php echo tr('available'); ?>";
+ },
+
+ getInnerText: function () {
+ var innerDim = screenInfo.getInnerDim();
+ return ", " + innerDim.width + "×" + innerDim.height + " <?php echo tr('used'); ?>";
+ },
+
+ getColorDepthText: function () {
+ var colorDepth = screenInfo.getColorDepth();
+ return colorDepth
+ ? '2<sup>' + colorDepth + "<\/sup> <?php echo tr('colors'); ?>"
+ : "";
+ }
+ };
+ }());
+
+ (function () {
+ var screenDimText = dim.getScreenText();
+ var availDimText = dim.getAvailText();
+ var innerDimText = dim.getInnerText();
+ var colorDepthText = dim.getColorDepthText();
+ var displayInfo = (screenDimText || availDimText || innerDimText || colorDepthText)
+ ? (screenDimText ? '<span id="' + ID_SCREEN_DIM + '">' + screenDimText + '<\/span> <?php echo tr('pixels'); ?>' : "")
+ + (availDimText ? ' (<span id="' + ID_AVAIL_DIM + '">' + availDimText + "<\/span>" : "")
+ + (innerDimText ? '<span id="' + ID_INNER_DIM + '">' + innerDimText + "<\/span>)" : "")
+ + (colorDepthText ? ' ×&nbsp;<span id="colorDepth">' + colorDepthText + "<\/span>" : "")
+ : TEXT_NOT_AVAILABLE;
+
+ /* FIXME: Convert HTML to text, update whole title text */
+ document.write('<span>' + displayInfo + '<\/span>');
+
+ var oColorDepth;
+ var tColor = _runAsync(function () {
+ if (typeof oColorDepth == "undefined")
+ {
+ oColorDepth = document.getElementById("colorDepth");
+ }
+
+ if (oColorDepth)
+ {
+ var colorDepthText = dim.getColorDepthText();
+ <?php /* FIXME: Also update title attribute value */ ?>
+ if (oColorDepth.innerHTML != colorDepthText)
+ {
+ oColorDepth.innerHTML = colorDepthText;
+ }
+ }
+
+ tColor = this.run();
+ }, 1000);
+
+ _addEventListener(document, "unload", function () {
+ tColor.unset();
+ tColor = null;
+ });
+ }());
+ </script><noscript><?php echo tr('N/A'); ?></noscript></td>
+ </tr>
+ <tr>
+ <th><?php echo tr('User Agent'); ?>:</th>
+ <td><script type="text/javascript">
+ (function () {
+ var ua = navigator.userAgent;
+ document.write('<span id="ua" title="' + ua + '">' + ua + '<\/span>');
+
+ var oUA;
+ var tUA = _runAsync(function () {
+ if (typeof oUA == "undefined")
+ {
+ oUA = document.getElementById("ua");
+ }
+
+ if (oUA)
+ {
+ var ua = navigator.userAgent;
+
+ if (oUA.innerHTML != ua)
+ {
+ oUA.innerHTML = ua;
+ }
+
+ <?php /* Converts CREs */ ?>
+ var oUAhtml = oUA.innerHTML
+ if (oUA.title != oUAhtml)
+ {
+ oUA.title = oUAhtml;
+ }
+ }
+
+ tUA = this.run();
+ }, 1000);
+
+ _addEventListener(document, "unload", function () {
+ tUA.unset();
+ tUA = null;
+ });
+ }());
+ </script><noscript><?php echo tr('N/A'); ?></noscript></td>
+ </tr>
+ <tr>
+ <th><?php echo tr('Features'); ?>:</th>
+ <td><script type="text/javascript">
+ var fullscreen = jsx.dom.window.fullscreen;
+
+ (function () {
+ function getFeatures ()
+ {
+ var features = [];
+ if (typeof document.cookie != "undefined")
+ {
+ var cookiesText = "<?php echo tr('Cookies'); ?>"
+ if (navigator.cookieEnabled)
+ {
+ if (document.cookie)
+ {
+ var cookies = document.cookie;
+ cookies = cookies.split(/\s*;\s*/);
+ features.push('<a href="#" title="'
+ + cookies.join("&#13;&#10;")
+ + '"'
+ + ' onclick="window.alert(\'<?php echo tr('Cookies for'); ?> ' + document.domain + '\\n\\n' + cookies.join("\\n") + '\'); return false">' + cookiesText + '<\/a>');
+ }
+ else
+ {
+ features.push('<span class="unavailable"'
+ + ' title="<?php echo tr('Cookies supported, but no data for this site'); ?>"'
+ + '>' + cookiesText + '<\/span>');
+ }
+ }
+ else
+ {
+ features.push('<span class="offline"'
+ + ' title="<?php echo tr('Cookies supported, but disabled'); ?>"'
+ + '>' + cookiesText + '<\/span>');
+ }
+ }
+
+ if (fullscreen.isSupportedBy(document.documentElement))
+ {
+ features.push("<?php echo tr('Fullscreen'); ?>");
+ }
+
+ if (navigator.webkitGetGamepads && navigator.webkitGetGamepads().length)
+ {
+ features.push("<?php echo tr('Gamepad'); ?>");
+ }
+
+ if (navigator.geolocation)
+ {
+ features.push('<a href="#" title="<?php echo tr('Get location'); ?>"'
+ + ' onclick="return lcars.multiDisplay.geolocate(\'<?php echo tr('Geolocation'); ?>\', \'<?php echo $language; ?>\')"'
+ + '><?php echo tr('Geolocation'); ?><\/a>');
+ }
+
+ if (typeof navigator.javaEnabled != "undefined" && navigator.javaEnabled())
+ {
+ features.push("Java");
+ }
+
+ var storage = jsx.dom.storage;
+ if (storage.localStorage.isSupported()) features.push("Local Storage");
+
+ if (navigator.plugins)
+ {
+ if (navigator.plugins.length > 0)
+ {
+ features.push('<span title="'
+ + navigator.plugins.length
+ + ' <?php echo tr('plugins installed'); ?>">Plugins<\/span>');
+ }
+ else
+ {
+ features.push('<span class="unavailable"'
+ + ' title="<?php echo tr('Plugins supported, but none detected'); ?>"'
+ + '>Plugins<\/span>');
+ }
+ }
+
+ if (storage.sessionStorage.isSupported())
+ {
+ features.push("Session Storage");
+ }
+
+ if (typeof window.ontouchstart != "undefined") features.push("Touch");
+ return features.join(" &#8226; ");
+ }
+
+ function stripTags (s)
+ {
+ return s.replace(/<[^>]+>/g, "");
+ }
+
+ var sFeatures = getFeatures();
+ document.write('<span id="features" title="' + stripTags(sFeatures) + '">' + sFeatures + '<\/span>');
+
+ var oFeatures;
+ var oFeaturesHtml;
+ var tFeatures = _runAsync(function () {
+ if (typeof oFeatures == "undefined")
+ {
+ oFeatures = document.getElementById("features");
+ }
+
+ if (oFeatures)
+ {
+ var sNewFeatures = getFeatures();
+
+ if (!oFeaturesHtml)
+ {
+ oFeaturesHtml = document.createElement("span");
+ }
+
+ if (oFeaturesHtml)
+ {
+ oFeaturesHtml.innerHTML = sNewFeatures;
+ sNewFeatures = oFeaturesHtml.innerHTML;
+ }
+
+ if (oFeatures.innerHTML != sNewFeatures)
+ {
+ oFeatures.innerHTML = sNewFeatures;
+ }
+
+ /* Converts CREs */
+ var newTitle = stripTags(oFeatures.innerHTML)
+ if (oFeatures.title != newTitle)
+ {
+ oFeatures.title = newTitle;
+ }
+ }
+
+ tFeatures = this.run();
+ }, 1000);
+ }());
+
+ _addEventListener(document, "unload", function () {
+ tFeatures.unset();
+ tFeatures = null;
+ });
+
+ var windowText = "<?php echo tr("Window"); ?>";
+ </script><noscript><?php echo tr('N/A'); ?></noscript></td>
+ </tr>
+ </table>
+ </div>
+ <ul class="commands">
+ <li id="cmd1"><a href="index.php"
+ title="Language selection"
+ tabindex="1"
+ class="button left right"
+ onmouseover="return setStatus(this.title + ': ' + this.href)"
+ onmouseout="return resetStatus()"
+ onfocus="return this.onmouseover()"
+ onblur="return this.onmouseout()"
+ ><abbr class="text" title="Language selection">Language</abbr></a></li>
+ <li id="cmd2"><a href="index.<?php echo $language; ?>?printable=1"
+ title="<?php echo tr('Printable version'); ?>"
+ tabindex="1"
+ class="button left right"
+ onmouseover="return setStatus(this.title + ': ' + this.href)"
+ onmouseout="return resetStatus()"
+ onfocus="return this.onmouseover()"
+ onblur="return this.onmouseout()"
+ ><span class="text"><?php echo tr("Printable"); ?></span></a></li>
+ <li id="cmd3"><div class="button left right"
+ style="cursor: not-allowed !important"
+ onclick="fullscreen.requestOn(document.documentElement, this)"
+ onkeyup="if (event.keyCode == 13) { this.onclick(); }"
+ ><span class="text"><script type="text/javascript">
+ var cmd3;
+ if (fullscreen.isSupportedBy(document.documentElement))
+ {
+ _addEventListener(window, "load", function () {
+ if (typeof cmd3 == "undefined")
+ {
+ cmd3 = jsx.dom.getElementById("cmd3");
+ }
+
+ if (cmd3)
+ {
+ cmd3.firstChild.tabIndex = "1";
+ }
+ });
+
+ var fullscreenText = "<?php echo tr("Fullscreen"); ?>";
+ document.write(fullscreenText);
+ }
+
+ var oScreenDim;
+ var oAvailDim;
+ var oInnerDim;
+ var _gEBI = jsx.dom.getElementById;
+ var previousIsFullscreen;
+ var oldHandler;
+
+ _addEventListener(window, "resize", function () {
+ <?php /* FIXME: Also update title attribute value */ ?>
+ if (typeof oScreenDim == "undefined") oScreenDim = _gEBI(ID_SCREEN_DIM);
+ if (oScreenDim) oScreenDim.innerHTML = dim.getScreenText();
+
+ if (typeof oAvailDim == "undefined") oAvailDim = _gEBI(ID_AVAIL_DIM);
+ if (oAvailDim) oAvailDim.innerHTML = dim.getAvailText();
+
+ if (typeof oInnerDim == "undefined") oInnerDim = _gEBI(ID_INNER_DIM);
+ if (oInnerDim) oInnerDim.innerHTML = dim.getInnerText();
+
+ if (fullscreen.isSupportedBy(document.documentElement))
+ {
+ var nowIsFullscreen = fullscreen.isFullscreen();
+ if (nowIsFullscreen != previousIsFullscreen)
+ {
+ if (typeof cmd3 == "undefined")
+ {
+ cmd3 = document.getElementById("cmd3");
+ }
+
+ var target = cmd3.firstChild;
+ var textTarget = target.firstChild;
+ if (nowIsFullscreen)
+ {
+ oldHandler = target.onclick;
+ target.onclick = function () {
+ fullscreen.cancel();
+ };
+ textTarget.textContent = "<?php echo tr("Window"); ?>";
+ }
+ else
+ {
+ target.onclick = oldHandler;
+ textTarget.textContent = fullscreenText;
+ }
+
+ previousIsFullscreen = nowIsFullscreen;
+ }
+ }
+ });
+ </script></span></div></li>
+ <li id="cmd4"><div class="button left right" style="cursor: not-allowed !important">&nbsp;</div></li>
+ </ul>
+ </div>
+ <div class="elbo-button">
+ <span class="text" title="<?php echo tr("Date of last modification"); ?>"
+ ><?php echo gmdate('Ym.d', $modi); ?></span>
+ </div>
+ <div class="elbo">
+ <span class="text"><abbr title="Library Computer Access and Retrieval System">LCARS</abbr> PE-22A</span>
+ <div class="concave">&nbsp;</div>
+ </div>
+ <div class="border">
+ <div class="left">&nbsp;</div>
+ <div class="right">&nbsp;</div>
+ </div>
+ </div>
+ <div class="lower">
+ <div class="elbo">
+ <div class="concave">&nbsp;</div>
+ </div>
+ <div class="bg">&nbsp;</div>
+ <div class="border-container">
+ <div class="border">
+ <div class="left">&nbsp;</div>
+ <div class="right">&nbsp;</div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
\ No newline at end of file
Index: live/index.php
===================================================================
--- live/index.php (nonexistent)
+++ live/index.php (revision 198)
@@ -0,0 +1,271 @@
+<?php
+
+$language = 'en';
+$locale = 'en_US.UTF-8';
+require_once 'global.php';
+
+$encoding = 'UTF-8';
+header("Content-Type: text/html" . ($encoding ? "; charset=$encoding" : ""));
+
+$modi = max(array(
+ @filemtime(__FILE__),
+ @filemtime("styles/lcars-basic.css"),
+ @filemtime("styles/lcars22.css"),
+ @filemtime("styles/lcars22-ie6.css"),
+));
+
+\header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $modi ) . ' GMT');
+
+/* Resource expires in HTTP/1.1 caches 24h after last retrieval */
+\header('Cache-Control: max-age=86400, s-maxage=86400, must-revalidate, proxy-revalidate');
+
+/* Resource expires in HTTP/1.0 caches 24h after last retrieval */
+\header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 86400) . ' GMT');
+
+?><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+ <head>
+ <title>Language Selection — PointedEars’ Website</title>
+ <link rel="SHORTCUT ICON" href="favicon.ico">
+ <!-- Browsers: Character Set, Script Type, Style Sheets Type,
+ Proxy Usage -->
+ <meta http-equiv="content-type"content="text/html; charset=UTF-8">
+ <meta http-equiv="Content-Script-Type" content="text/javascript">
+ <meta http-equiv="Content-Style-Type" content="text/css">
+ <meta http-equiv="expires" content="0">
+ <!-- Robots: Language, Index, Subordinated Files, Description, Author,
+ Keywords, Document Date -->
+ <meta name="robots" content="index">
+<?php /*
+ <meta name="description"
+ content="Access to the United Federation of Planets Databanks, an online songbook and software downloads always worth a click. Coming soon: The best internet links categorized and much more via a bilingual (English/German) LCARS terminal styled user interface that can be also used to surf the web anonymously! Bookmark NOW!">
+*/ ?>
+ <meta name="author" content="PointedEars, PointedEars Software (PES)">
+ <!-- No localization of keywords due to following language selection -->
+ <meta name="keywords"
+ http-equiv="Keywords"
+ content="<?php // Appz, ?>Download, Links, LCARS, Star Trek, TNG, The Next Generation, DS9, Deep Space 9, Deep Space Nine, VOY, Voyager, UFP, Federation, United Federation of Planets, Database, Databank, <?php /* Song, Songbook, Surf, anonymously, */ ?>Raumschiff Enterprise, DNG, Die n&auml;chste Generation, VFP, F&ouml;deration, Vereinte F&ouml;deration der Planeten, Datenbasis, Datenbank<?php /* , Lied, Liedtext, surfen, anonym */ ?>">
+ <!--meta name="keywords" http-equiv="Keywords" lang="de" content=""-->
+ <!--meta name="keywords" http-equiv="Keywords" lang="en-us" content=""-->
+ <!--meta name="keywords" http-equiv="Keywords" lang="en" content=""-->
+ <meta name="revisit-after" content="3 days">
+ <meta name="date" content="2002-05-23T10:56:00+02:00">
+ <!-- Robots: Dublin Core Metadata
+ (http://purl.org/metadata/dublin_core) -->
+ <meta name="DCTERMS.title" content="PointedEars’ Website">
+ <meta name="DCTERMS.creator" content="PointedEars, PointedEars Software (PES)">
+ <meta name="DCTERMS.subject" content="Private Homepage">
+<?php /*
+ <meta name="DCTERMS.description"
+ content="PointedEars' Website: Access to the United Federation of Planets Databanks and an online songbook. Coming soon: Software downloads always worth a click, the best internet links categorized and much more via a bilingual (English/German) LCARS terminal styled user interface that can be also used to surf the web anonymously! Bookmark NOW!">
+*/ ?>
+ <meta name="DCTERMS.publisher" content="PointedEars">
+ <meta name="DCTERMS.created" content="2002-05-23">
+ <meta name="DCTERMS.modified" content="<?php echo gmdate('Y-m-dTH:i:sO', $modi); ?>">
+<?php /*
+ <!--meta name="DC.Type" content=""-->
+ <!--meta name="DC.Format" content=""-->
+*/ ?>
+ <meta name="DCTERMS.identifier" content="http://pointedears.de/">
+ <meta name="DCTERMS.rightsHolder"
+ content="Copyright © 2002&#8211;<?php echo gmdate('Y', $modi); ?> Thomas&nbsp;Lahn.">
+ <meta name="DCTERMS.rights"
+ content="<?php echo tr("All rights reserved."); ?> <?php echo tr("The author is not responsible for the availability and the content of websites referred by this site, and not responsible for the availability and the content of websites referred by those sites. Whereever outsourced material is used, copyright or trademark infringement is not intended. Third parties who claim copyrights or trademarks used herein are asked to send an informal email to webmaster@PointedEars.de for immediate removal or modification of the respective material on the website instead of reminding the author of usage of this material. Thank you."); ?>">
+<?php /*
+ <!-- <link rel="stylesheet" type="text/css" href="styles/lcars21.css"> -->
+ <!-- IE 9 in non-Compatibility Mode sends "Accept: text/css",
+ Apache responds with 406 without .php:
+ http://blog.s9y.org/archives/227-ie9-has-trouble-with-css-content-types.html
+ (Resource Builder handles negotation for sources)
+ -->
+*/ ?>
+ <link rel="stylesheet" type="text/css" href="scripts/builder.php?type=text/css&amp;prefix=../styles/&amp;src=lcars-basic,lcars22">
+ <!--[if lt IE 7]>
+ <link rel="stylesheet" type="text/css" href="styles/lcars22-ie6.css">
+ <![endif]-->
+ <style type="text/css">
+ <!--
+ a {
+ text-decoration: none;
+ }
+
+ ul {
+ list-style: none;
+ padding-left: 0;
+ }
+
+ #greeting {
+ margin-top: 0;
+ }
+
+ #greeting p {
+ background-color: #000;
+ color: #fff;
+ font-size: 136%;
+ }
+
+ #languages .key {
+ min-width: 0.65em;
+ }
+ -->
+ </style>
+<?php /*
+ <script type="text/javascript" src="scripts/builder?src=object,dom,dom/css,dom/css/color,dom/ani,dom/window"></script>
+*/ ?>
+ <script type="text/javascript" src="scripts/builder?src=object,dom/window"></script>
+ <script type="text/javascript">
+<?php /*
+ /* Hardcore Frame Buster
+ if (parent.frames.length > 0 )
+ parent.location.href = window.location.href;
+*/ ?>
+<?php /*
+ function animate ()
+ {
+*/ ?>
+<?php /*
+ var s = document.createElement("style");
+ s.type = "text/css";
+ s.appendChild(document.createTextNode(
+ "@-webkit-keyframes fade-out {"
+ + " from {"
+ + " overflow: hidden;"
+ + " border-top-left-radius: 0;"
+ + " border-bottom-left-radius: 0;"
+ + " }"
+ + " to {"
+ + " overflow: hidden;"
+ + " left: 100%;"
+ + " border-top-left-radius: 0;"
+ + " border-bottom-left-radius: 0;"
+ + " }"
+ + "}"
+ + "#bow-top, #footer {"
+ + " -webkit-animation-name: fade-out;"
+ + " -webkit-animation-duration: 1s;"
+ + " -webkit-animation-fill-mode: forwards;"
+ + "}"
+ + "#bow-top .text {"
+ + " visibility: hidden;"
+ + "}"
+ + ".empty .separator-left {"
+ + " visibility: hidden;"
+ + "}"
+ ));
+ document.head.appendChild(s);
+*/ ?>
+<?php /*
+ jsx._import(jsx.dom.animation);
+ var keyFrames = [
+ {
+ values: {
+ style: {
+ overflow: "hidden",
+ "border-top-left-radius": 0,
+ "border-bottom-left-radius": 0
+ }
+ }
+ },
+ {
+ time: "1s",
+ values: {
+ style: {
+ overflow: "hidden",
+ left: "100%",
+ "border-top-left-radius": 0,
+ "border-bottom-left-radius": 0
+ }
+ }
+ }
+ ];
+
+ var animation = new Animation({
+ timelines: [
+ new Timeline({
+ target: document.getElementById("bow-top"),
+ keyFrames: keyFrames
+ }),
+ new Timeline({
+ target: document.getElementById("footer"),
+ keyFrames: keyFrames
+ })
+ ]
+ });
+ animation.play();
+ }
+*/ ?>
+
+ function navigateTo (link)
+ {
+<?php /*
+ animate();
+ window.setTimeout(function () {
+ window.alert(link);
+ }, 1000);
+ return false;
+*/ ?>
+ return true;
+ }
+ </script>
+ </head>
+ <body class="fade-in empty" onload="if (typeof this.ontouchstart != 'undefined') this.ontouchstart = function () {}">
+ <div id="LCARS">
+ <div id="bow">
+ <div id="bow-top">
+ <div class="separator-left">&nbsp;</div>
+ <h1 class="text"><span>PointedEars’ Website</span></h1>
+ </div>
+ <div id="bow-left">&nbsp;</div>
+ <div id="bow-left-concave">&nbsp;</div>
+ </div>
+ <div id="footer-container">
+ <div id="footer">
+ <h2 class="text"><span>Language Selection</span></h2>
+ <div class="separator-right">&nbsp;</div>
+ </div>
+ </div>
+ </div>
+ <div id="content">
+ <div style="text-align: center"><img
+ src="media/video/img/vulcan_hand-black-bg.png"
+ width="120"
+ height="168"
+ alt="Vulcan greeting"
+ title="Vulcan greeting"
+ border="0"
+ onmouseover="return setStatus(this.title)"
+ onmouseout="return resetStatus()"></div>
+
+ <ul id="greeting">
+ <li style="white-space: nowrap"><p style="text-align: center" lang="x-vulcan-latin">Dif-tor heh smusma</p></li>
+ <li style="white-space: nowrap"><p style="text-align: center" lang="en">Live long and prosper</p></li>
+ <li style="white-space: nowrap"><p style="text-align: center" lang="de">Leben Sie lang und erfolgreich</p></li>
+ </ul>
+
+ <ul style="text-align: center">
+ <li class="instruction" lang="en">Please select your language</li>
+ <li class="instruction" lang="de">Bitte w&auml;hlen Sie Ihre Sprache</li>
+ </ul>
+
+ <div class="group">
+ <div class="separator">&nbsp;</div>
+ <ul id="languages">
+ <li><a href="index.en" class="button right" lang="en"
+ hreflang="en" accesskey="e"
+ ><span class="key">en</span> <span class="text">English</span></a></li>
+ <li><a href="index.de" class="button right" lang="de"
+ hreflang="de" accesskey="d"
+ onclick="return navigateTo(this)"
+ ><span class="key">de</span> <span class="text">Deutsch</span></a></li>
+ </ul>
+ <div style="clear: both"><!-- --></div>
+ </div>
+
+<?php
+ $app = 'Language';
+ require_once 'footer.phtml';
+?>
+ </div>
+ </body>
+</html>
\ No newline at end of file
Index: live/index.en.php
===================================================================
--- live/index.en.php (nonexistent)
+++ live/index.en.php (revision 198)
@@ -0,0 +1,10 @@
+<?php
+ /* Set language to English */
+ $language = 'en';
+ $locale = 'en_US.UTF-8';
+ putenv("LC_ALL=$locale");
+ setlocale(LC_ALL, $locale);
+
+ require_once 'global.php';
+ require_once 'index.phtml';
+?>
\ No newline at end of file
Index: live/footer.phtml
===================================================================
--- live/footer.phtml (nonexistent)
+++ live/footer.phtml (revision 198)
@@ -0,0 +1,33 @@
+ <script type="text/javascript">
+ function mailStatus ()
+ {
+ return setStatus("<?php echo tr("Send your feedback to PointedEars"); ?>");
+ }
+ </script>
+ <hr style="height: 0; border-width: 1px 0 0 0; width: 100%">
+ <p style="text-align: center"><?php echo sprintf(
+ tr("Original LCARS design by"
+ . " <a href='%s' title='%s'>Michael&nbsp;Okuda</a>."
+ . " Website design based on an <a href='%s'"
+ . " title='LCARS Standards Development Board'"
+ . ">implementation in Flash by Chris&nbsp;Rossi</a>,"
+ . " and research by <a href='%s'"
+ . " title='Creating a Coherent LCARS Interface'>Bracer&nbsp;Jack</a>"
+ . " and <a href='%s'"
+ . " title='LCARS 47 Development Blog&nbsp;– LCARS&nbsp;101: A Designer’s Handbook'"
+ . ">Eleanor&nbsp;C.&nbsp;Davenport</a>."),
+ 'https://twitter.com/MikeOkuda',
+ tr('Michael Okuda on Twitter'),
+ 'http://www.lcarsdeveloper.com/',
+ 'http://www.bracercom.com/tutorial/content/CoherentLCARSInterface/LCARSCoherentInterface.html',
+ 'http://www.lcars47.com/p/lcars-101.html');
+ ?><br>
+ Copyright &copy;&nbsp;2002&#8211;<?php echo gmdate('Y', $modi); ?> <a
+ href="mailto:js@PointedEars.de?subject=Feedback/LCARS/<?php echo $app;
+ ?>&amp;body=<?php
+ echo rawurlencode(sprintf('[%s]', tr("Your feedback")));
+ ?>"
+ title="<?php echo tr("Send your feedback to PointedEars"); ?>"
+ onmouseover="return mailStatus()"
+ onmouseout="return resetStatus()"
+ >Thomas ‘PointedEars’ Lahn</a>. <?php echo tr("All rights reserved."); ?></p>
Index: live/tools/eazytrans/translate.sh
===================================================================
--- live/tools/eazytrans/translate.sh (nonexistent)
+++ live/tools/eazytrans/translate.sh (revision 198)
@@ -0,0 +1,655 @@
+#!/bin/bash
+
+APPNAME="EazyTranslator"
+APPVER="0.97a"
+APPFILENAME=`basename $0`
+APPFILEDIR=`echo $0 | sed 's/'$APPFILENAME$'//'`
+
+# dictionary file
+DICT="$TRANSLATE_DIR"
+if [ -z "$DICT" ]; then DICT=$APPFILEDIR ; fi
+
+# delimiter name (for help page only) and character (string) for separating original expression
+# and translation in dictionary file
+DELIMITER_NAME="colon"
+DELIMITER=":"
+
+# all help on a single page
+SINGLE_PAGE=0
+
+# bell character
+CH_SOUND=""
+CH_SOUND_ON=$'\a'
+
+RESULT=""
+
+function title {
+ if [ $SINGLE_PAGE -eq 0 ]; then clear ; fi
+ echo
+ echo $APPNAME" "$APPVER" - Stream editor to use and to manage dictionary files"
+ echo "Requires 'basename', 'grep' and 'sed', optionally 'sort' and 'mktemp' in PATH"
+ echo
+}
+
+function copyright {
+ echo "Copyright (C) 2001 Thomas Lahn (webmaster@PointedEars.de)"
+ echo "Be sure to have 'easyTrans' or similar in mail subject line for fast response."
+ echo
+}
+
+function pause {
+ if [ "$1" == "c" ]; then
+ echo "Hit RETURN to continue..."
+ else
+ echo "Hit RETURN for the next page"
+ fi
+ read
+}
+
+function copying {
+ title
+ copyright
+ echo "This program is free software; you can redistribute it and/or modify"
+ echo "it under the terms of the GNU General Public License as published by"
+ echo "the Free Software Foundation; either version 2 of the License, or"
+ echo "(at your option) any later version."
+ echo
+ echo "This program is distributed in the hope that it will be useful,"
+ echo "but WITHOUT ANY WARRANTY; without even the implied warranty of"
+ echo "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the"
+ echo "GNU General Public License for more details."
+ echo
+ echo "You should have received a copy of the GNU General Public License"
+ echo "along with this program (COPYING file); if not, write to the"
+ echo "Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
+ echo
+}
+
+function cmdHelp {
+ title
+ echo $APPFILENAME" EXPRESSION DICTIONARY [OPTIONS]"
+ echo
+ echo "Tries to translate EXPRESSION looking up DICTIONARY and writes the result"
+ echo "to standard output (stdout) in a single line followed by a newline (\n)."
+ echo
+ echo "Environment:"
+ echo
+ echo "TRANSLATE_DIR Dictionary folder root (absolute path '/')"
+if [ -n "$TRANSLATE_DIR" ]; then
+ local INVALID_PATH=" -- INVALID PATH!"
+ local INVALID_FORMAT=" -- INVALID FORMAT!"
+ # : AutoCorrect performed!
+ local INVALID_MSG=""
+ if [ ! -e $TRANSLATE_DIR ]; then
+ INVALID_MSG=$INVALID_PATH
+ else
+ local GREPRES=`echo $TRANSLATE_DIR | grep -e "\/$"`
+ if [ -z "$GREPRES" ]; then INVALID_MSG=$INVALID_FORMAT ; fi
+ fi
+ echo " (currently '"$TRANSLATE_DIR"'"$INVALID_MSG")"
+ #if [ "$INVALID_MSG" == "$INVALID_FORMAT" ]; then
+ #export TRANSLATE_DIR=$TRANSLATE_DIR"/"
+ #set -a
+ #fi
+fi
+ echo " If undefined, this is the program directory"
+ echo " (currently '"$APPFILEDIR"')."
+ echo "TRANSLATE_OPTIONS Default options to overwrite command-line options"
+if [ -n "$TRANSLATE_OPTIONS" ]; then
+ echo " (currently '"$TRANSLATE_OPTIONS"')"
+fi
+ echo
+ echo "Arguments:"
+ echo
+ echo "EXPRESSION Word or (double-quoted) phrase to be translated"
+ echo "DICTIONARY Path of dictionary file relative to TRANSLATE_DIR"
+ echo
+ if [ $SINGLE_PAGE -eq 0 ]; then pause "c" ; fi
+ echo "Translation OPTIONS:"
+ echo " -b, --brackets If not in DICTIONARY, writes given WORD or EXPRESSION"
+ echo " as [WORD] or [EXPRESSION]."
+ echo " -m, --messages Return error messages instead of null-strings."
+ echo " -p, --phrase Translate EXPRESSION as entire phrase. If not given,"
+ echo " each WORD of EXPRESSION is translated seperately."
+ echo " -r, --reverse Perform reverse translation. Recommended only if"
+ echo " no appropriate dictionary file for vice-versa translation is"
+ echo " available and -p is also used."
+ echo " -s, --sound Beep on fatal errors."
+ echo " -v, --verbose Display flow of operation. Includes -m behavior."
+ echo " -z, --zero Return not translatable tokens as null-strings."
+ echo " Overwrites -b."
+ echo
+ if [ $SINGLE_PAGE -eq 0 ]; then pause "c" ; fi
+ echo $APPFILENAME" EXPRESSION DICTIONARY COMMAND TRANSLATION [INFO] [OPTIONS]"
+ echo $APPFILENAME" COMMAND DICTIONARY [INFO] [OPTIONS]"
+ echo
+ echo "Dictionary file COMMANDs:"
+ echo " -a, --add If not in DICTIONARY, add EXPRESSION with TRANSLATION"
+ echo " to DICTIONARY and write TRANSLATION."
+ echo " If DICTIONARY not exists, create the file with INFO"
+ echo " and add the entry; if INFO is a null-string,"
+ echo " default INFO is added, containing program version,"
+ echo " user name and timestamp. Requires 'sort'."
+ echo " -ai, --addinfo Add information data INFO to DICTIONARY."
+ echo " Must be used as first argument."
+ echo " -c, --create Create new DICTIONARY with INFO (see -a)."
+ echo " Existing files are replaced. Must be used as first argument."
+ echo " -d, --delete If used with EXPRESSION and DICTIONARY, remove EXPRESSION"
+ echo " from DICTIONARY instead of translating."
+ echo " If used as first argument, delete DICTIONARY."
+ echo " -i, --info Display information about DICTIONARY."
+ echo " Must be used as first argument."
+ echo
+ if [ $SINGLE_PAGE -eq 0 ]; then pause "c" ; fi
+ echo " -o, --overwrite Like -a but overwrite a contained translation of"
+ echo " EXPRESSION with TRANSLATION without question."
+ echo " Additionally requires 'mktemp'."
+ echo " -R, --repair Repair DICTIONARY instead of translating. Requires 'mktemp'."
+ echo " Info data is be kept but invalid entries are removed."
+ echo " USE WITH CAUTION!"
+ echo " -s, --sort Sort DICTIONARY instead of translating. Requires 'sort'."
+ echo " Includes --sound when used with -v."
+ echo " Must be used as first argument."
+ echo
+ if [ $SINGLE_PAGE -eq 0 ]; then pause "c" ; fi
+ echo $APPFILENAME" OPTION [OPTION]"
+ echo
+ echo "Help page OPTIONs:"
+ echo " --1 Display help on one page (without 'clear' and user input)."
+ echo " Useful with redirection "
+ echo " (try '"$APPFILENAME" --1 --? > translate.doc.txt')."
+ echo " Must be given before all other help page options."
+ echo " --a, --about Display information about the program."
+ echo " --c, --cmd Display this help page."
+ echo " --d, --dict Display help about dictionary files."
+ echo " --dev, --emp Display special information for developers and employers."
+ echo " --x, --example Display example."
+ echo " --?, --help Display all help pages."
+ echo
+}
+
+function example {
+ title
+ echo "EXAMPLE: If you would like to translate the English words 'a few' into German,"
+ echo
+ echo " "$APPFILENAME" ''a few'' en-de"
+ echo
+ echo "should write the German words"
+ echo
+ echo " ein(e) wenig(e)\n"
+ echo
+ echo "(without indent) to stdout if the echo dictionary file 'en-de' contains"
+ echo "a correct entry for it (see next page). You may also translate it as"
+ echo "entire phrase (which seems to make more sense here):"
+ echo
+ echo " "$APPFILENAME" ''a few'' en-de -p"
+ echo
+ echo "should instead write the German word 'einige\n'"
+ echo "(replace '' in input with the double-quote character)."
+ echo
+}
+
+function dictHelp {
+ title
+ echo "DICTIONARY FILES:"
+ echo "You may create/improve dictionary files to be used with "$APPNAME
+ echo "of your own. Translation data must match the following expression:"
+ echo
+ echo "#"$DELIMITER"File description displayed when option -i is used\n[#"$DELIMITER"File description\n]"
+ echo "[Expression"$DELIMITER"translation\n[Next expression"$DELIMITER"next translation\n]]"
+ echo "Last expression"$DELIMITER"last translation\z"
+ echo
+ echo "Parts enclosed in rectangle brackets are optional. The "$DELIMITER_NAME" ("$DELIMITER") is to be used"
+ echo "as delimiter character between original and translated expression only."
+ echo "Dictionary file names should contain common language identifiers separated"
+ echo "by a dash (such as 'en-de.dic' for an English-German dictionary file)."
+ echo
+ echo "Program updates and dictionaries can be obtained from"
+ echo "'http://pointedears.de/dev/unix/translate/'."
+ echo "Thank you for using a program by PointedEars."
+ echo
+}
+
+function devInfo {
+ title
+ copyright
+ echo "INFORMATION FOR DEVELOPERS (KNOWN ISSUES)..."
+ echo
+ echo "- Sorting the dictionary unfortunately also sorts its info data by now."
+ echo
+ echo "...AND FOR EMPLOYERS:"
+ echo
+ echo "BTW, if you have an idea for improving EasyTranslator or for another (field of)"
+ echo "application you want me to develop for you (BASIC, DOS batch, Windows INF,"
+ echo "Visual Basic, bash, Pascal, Delphi, C, HTML/JavaScript, and I am still learning"
+ echo "other languages) feel free to mail me, too. THNX! -- PointedEars, 2001-03-28"
+ echo
+}
+
+function help {
+ copying
+ if [ $SINGLE_PAGE -eq 0 ]; then pause ; fi
+ cmdHelp
+ if [ $SINGLE_PAGE -eq 0 ]; then pause ; fi
+ example
+ if [ $SINGLE_PAGE -eq 0 ]; then pause ; fi
+ dictHelp
+ if [ $SINGLE_PAGE -eq 0 ]; then pause ; fi
+ devInfo
+}
+
+function translateReverse {
+ local EXPR="$1"
+ if [ $VERBOSE -eq 1 ]; then echo "Executing: grep -i -e '"$DELIMITER$EXPR"$' '"$DICT"'" ; fi
+ RESULT=`grep -i -e "$DELIMITER$EXPR$" "$DICT"`
+ if [ $VERBOSE -eq 1 ]; then echo "grep returned: '"$RESULT"'" ; fi
+ if [ -n "$RESULT" ]; then
+ if [ $VERBOSE -eq 1 ]; then
+ echo "Reading expression from recordset (with sed requires only 1 step! :o)" ;
+ echo "Executing: echo $RESULT | sed 's/$DELIMITER[ ]*[^$DELIMITER]*//'"
+ fi
+ RESULT=`echo $RESULT | sed 's/'$DELIMITER'[ ]*[^'$DELIMITER']*//'`
+ if [ $VERBOSE -eq 1 ]; then echo "sed returned: '"$RESULT"'" ; fi
+ fi
+
+ # Should return only characters before the delimiter until BOL (expression)
+}
+
+function translate {
+ local EXPR="$1"
+ if [ $REVERSE -eq 1 ]; then translateReverse "$1" ; return ; fi
+ if [ $VERBOSE -eq 1 ]; then echo "Executing: grep -i -e '^"$EXPR$DELIMITER"' '"$DICT"'" ; fi
+ RESULT=`grep -i -e "^$EXPR$DELIMITER" "$DICT"`
+ if [ $VERBOSE -eq 1 ]; then echo "grep returned: '"$RESULT"'" ; fi
+ if [ -n "$RESULT" ]; then
+ if [ $VERBOSE -eq 1 ]; then
+ echo "Reading translation from recordset (with sed requires only 1 step! :o)" ;
+ echo "Executing: echo $RESULT | sed 's/[^$DELIMITER]*$DELIMITER[ ]*//'"
+ fi
+ RESULT=`echo $RESULT | sed 's/[^'$DELIMITER']*'$DELIMITER'[ ]*//'`
+ if [ $VERBOSE -eq 1 ]; then echo "sed returned: '"$RESULT"'" ; fi
+ fi
+
+ # Should return only characters after the separation character until EOL
+ # (translation)
+}
+
+# exit codes
+ESUCCESS=0
+ENO_DICT=1
+EDICT_DIR_NOT_FOUND=2
+EDICT_NOT_FOUND=3
+EDICT_WRONG_FORMAT=4
+EDICT_EXPR_CONTAINED=5
+EDICT_TEMP_ERROR=6
+EDICT_CREATE_ERROR=7
+EDICT_DELETE_EXPR_NOT_FOUND=8
+EDICT_REMOVE=9
+
+# argument flags
+DICTIONARY=0 # if 1, -d refers to the dictionary file instead of an entry
+
+# option flags - may be replaced by declare -i FLAG
+ADD=0
+ADDINFO=0
+BRACKETS=0
+CREATE=0
+DELETE=0
+INFO=0
+MESSAGES=0
+OVERWRITE=0
+PHRASE=0
+REPAIR=0
+REVERSE=0
+SORT=0
+SOUND=0
+VERBOSE=0
+ZERO=0
+
+if [ -n "$1" ]; then
+ # retrieve arguments and use default settings from environment variable
+ ARGUMENTS=$* ; if [ -n "$TRANSLATE_OPTIONS" ]; then ARGUMENTS=$ARGUMENTS" "$TRANSLATE_OPTIONS ; fi
+ # check options
+ for argument in $ARGUMENTS; do
+ case "$argument" in
+ "-b" | "--brackets") BRACKETS=1;;
+ "-m" | "--messages") MESSAGES=1;;
+ "-p" | "--phrase") PHRASE=1;;
+ "-r" | "--reverse") REVERSE=1;;
+ "-s" | "--sound") SOUND=1;;
+ "-v" | "--verbose") VERBOSE=1 ; title ; copyright;;
+ "-z" | "--zero") ZERO=1;;
+ "--a" | "--about") copying ; exit $ESUCCESS;;
+ "--c" | "--cmd") cmdHelp ; exit $ESUCCESS;;
+ "--d" | "--dict") dictHelp ; exit $ESUCCESS;;
+ "--dev" | "--emp") devInfo ; exit $ESUCCESS;;
+ "--1") SINGLE_PAGE=1;;
+ "--x" | "--example") example ; exit $ESUCCESS;;
+ "--?" | "--help") help ; exit $ESUCCESS;;
+ esac
+ done
+ if [ $SOUND -eq 1 ]; then CH_SOUND=$CH_SOUND_ON ; fi
+ if [ -n "$2" ]; then
+# concatenate dictionary root and given dictionary file
+ DICT="$DICT$2"
+# check for dictionary commands
+ case "$1" in
+ "-d" | "--delete") DELETE=1 ; DICTIONARY=1 ;;
+ "-c" | "--create") CREATE=1;;
+ "-i" | "--info") INFO=1;;
+ "-s" | "--sort") SORT=1;;
+ "-R" | "--repair") REPAIR=1;;
+ esac
+ case "$3" in
+ "-a" | "--add") ADD=1;;
+ "-ai" | "--addinfo") ADDINFO=1;;
+ "-d" | "--delete") DELETE=1;;
+ "-o" | "--overwrite") OVERWRITE=1;;
+ esac
+
+ if [ $VERBOSE -eq 1 ]; then
+ if [ -z "$TRANSLATE_DIR" ]; then
+ echo "Dictionary root (program directory): '"$APPFILEDIR"'"
+ else
+ echo "Dictionary root (TRANSLATE_DIR): '"$TRANSLATE_DIR"'"
+ fi
+ echo "Dictionary file: '"$2"'"
+ echo "Dictionary file path: '"$DICT"'"
+ fi
+
+ DEFAULT_INFO=$APPNAME" "$APPVER" dictionary file created by '"`whoami`"' on "`date`
+
+ if [ $CREATE -eq 1 ]; then
+ if [ $VERBOSE -eq 1 ]; then
+ echo $DICT": Creating dictionary"
+ fi
+ if [ -z "$3" ]; then
+ if [ $VERBOSE -eq 1 ]; then echo $DICT": Adding information: '"$DEFAULT_INFO ; fi
+ echo "#"$DELIMITER$EFAULT_INFO &>$DICT
+ else
+ if [ $VERBOSE -eq 1 ]; then echo $DICT": Adding information: '"$3"'" ; fi
+ echo "#"$DELIMITER$3 &>$DICT
+ fi
+ if [ $VERBOSE -eq 1 ]; then echo ; fi
+ exit $?
+ fi
+
+ if [ -e "$DICT" ]; then # if dictionary file exists
+ # check if dictionary file (contains at least '#$DELIMITER')
+ if [ $VERBOSE -eq 1 ]; then echo "Executing: grep -e '."$DELIMITER".' '"$DICT"'" ; fi
+ RESULT=`grep -e "#$DELIMITER." "$DICT"`
+ if [ -z "$RESULT" ]; then
+ if [ $VERBOSE -eq 1 ]; then echo "grep returned: ''" ; fi
+ echo $DICT": Not a (valid) dictionary file (type '"$APPFILENAME" --d' for details)."
+ if [ $VERBOSE -eq 1 ]; then echo ; fi
+ exit $EDICT_WRONG_FORMAT
+ else
+ if [ $VERBOSE -eq 1 ]; then
+ echo "grep returned not a null-string: '$DICT' seems to be a dictionary file"
+ fi
+ fi
+ RESULT=""
+
+ if [ $ADDINFO -eq 1 ]; then
+ if [ -z "$3" ]; then
+ if [ $VERBOSE -eq 1 ]; then echo $DICT": Adding information: '"$DEFAULT_INFO"'" ; fi
+ echo "#"$DELIMITER$DEFAULT_INFO >>$DICT
+ else
+ if [ $VERBOSE -eq 1 ]; then echo $DICT": Adding information: '"$3"'" ; fi
+ echo "#"$DELIMITER$3 >>$DICT
+ fi
+ if [ $VERBOSE -eq 1 ]; then echo ; fi
+ exit $?
+ fi
+
+ if [ $INFO -eq 1 ]; then
+ if [ $VERBOSE -eq 1 ]; then
+ echo "Obtaining information..."
+ echo
+ fi
+ grep "^#$DELIMITER" "$DICT" | sed 's/^#'$DELIMITER'//'
+ RESULT=`grep -e "^#$DELIMITER" "$DICT"`
+ if [ -z "$RESULT" ]; then echo $CH_SOUND$DICT": No information available" ; fi
+ if [ $VERBOSE -eq 1 ]; then echo ; fi
+ exit $ESUCCESS
+ fi
+
+ if [ $ADD -eq 1 ]; then
+ if [ $VERBOSE -eq 1 ]; then echo ; fi
+ RESULT=`grep -i -e "^$1$DELIMITER" "$DICT"`
+ if [ -z "$RESULT" ]; then
+ echo $DICT": Adding expression: '"$1"'"
+ echo $DICT": Adding translation: '"$4"'"
+ if [ -n "$4" ]; then
+ echo $1$DELIMITER$4 >>$DICT
+ else
+ if [ $MESSAGES -eq 1 ] || [ $VERBOSE -eq 1 ]; then echo $CH_SOUND$APPFILENAME": No translation given for '"$1"'" ; fi
+ fi
+ SORT=1
+ else
+ translate "$1"
+ echo $CH_SOUND$DICT": Expression already contained: '"$1"':"$RESULT
+ if [ $VERBOSE -eq 1 ]; then echo ; fi
+ exit $EDICT_EXPR_CONTAINED
+ fi
+ fi
+
+ if [ $OVERWRITE -eq 1 ]; then
+ if [ $VERBOSE -eq 1 ]; then echo ; fi
+ echo $DICT": Replacing expression: '"$1"'"
+ echo $DICT": Replacing translation: '"$4"'"
+ TMPFILE=`mktemp -q /tmp/$APPFILENAME.XXXXXX`
+ if [ $? -ne 0 ]; then
+ if [ $VERBOSE -eq 1 ]; then echo $APPFILENAME": Can't create temp file, exiting..." ; fi
+ exit EDICT_TEMP_ERROR
+ else
+ if [ -n "$4" ]; then
+ grep -iv -e "^$1$DELIMITER" "$DICT" &>$TMPFILE
+ if [ $? -eq 0 ]; then echo $1$DELIMITER$4 >>$TMPFILE ; fi
+ if [ $? -eq 0 ]; then mv $TMPFILE $DICT &>/dev/null ; fi
+ if [ $? -ne 0 ]; then
+ if [ $VERBOSE -eq 1 ]; then echo $APPFILENAME": Unable to replace dictionary file: '"$DICT"'" ; fi
+ exit EDICT_REPLACE_ERROR
+ else
+ SORT=1
+ fi
+ else
+ if [ $MESSAGES -eq 1 ] || [ $VERBOSE -eq 1 ]; then echo $CH_SOUND$APPFILENAME": No translation given for '"$1"'" ; fi
+ fi
+ fi
+ fi
+
+ if [ $DELETE -eq 1 ]; then
+ if [ $DICTIONARY -eq 0 ]; then
+ # delete entry
+ if [ $VERBOSE -eq 1 ]; then echo $DICT": Removing expression: "$1 ; fi
+ RESULT=`grep -i -e "^$1$DELIMITER" "$DICT"`
+ if [ -z "$RESULT" ]; then
+ if [ $MESSAGES -eq 1 ] || [ $VERBOSE -eq 1 ]; then echo $DICT": Expression not contained in dictionary: '"$1"'" ; fi
+ exit $EDICT_DELETE_EXPR_NOT_FOUND
+ fi
+ TMPFILE=`mktemp -q /tmp/$APPFILENAME.XXXXXX`
+ if [ $? -ne 0 ]; then
+ if [ $VERBOSE -eq 1 ]; then echo $APPFILENAME": Can't create temp file, exiting..." ; fi
+ exit EDICT_TEMP_ERROR
+ else
+ grep -iv -e "$1$DELIMITER" "$DICT" &>$TMPFILE
+ if [ $? -eq 0 ]; then mv $TMPFILE $DICT &>/dev/null ; fi
+ if [ $? -ne 0 ]; then
+ if [ $VERBOSE -eq 1 ]; then echo $DICT": Unable to modify dictionary (cannot replace file)" ; fi
+ exit EDICT_REPLACE_ERROR
+ else
+ if [ $VERBOSE -eq 1 ]; then echo $DICT": Modification successful" ; fi
+ exit $ESUCCESS
+ fi
+ fi
+ else
+ # delete dictionary
+ if [ $VERBOSE -eq 1 ]; then
+ echo $APPFILENAME": Deleting dictionary: '"$DICT"'"
+ echo $APPFILENAME": Executing: rm '"$DICT"' &>/dev/null"
+ fi
+ rm $DICT &>/dev/null
+ if [ $? -ne 0 ]; then
+ if [ $MESSAGES -eq 1 ] || [ $VERBOSE -eq 1 ]; then echo $DICT": Unable to remove dictionary" ; fi
+ exit $EDICT_REMOVE
+ else
+ if [ $VERBOSE -eq 1 ]; then
+ echo $DICT": Dictionary successfully removed"
+ echo
+ fi
+ exit $ESUCCESS
+ fi
+ fi
+ fi
+
+ if [ $SORT -eq 1 ]; then
+ if [ $VERBOSE -eq 1 ]; then
+ echo "Sorting vocabulary: '"$DICT"'"
+ echo "Executing: sort -d -f -o "$DICT" -t "$DELIMITER" "$DICT
+ fi
+ RESULT=`sort -d -f -o "$DICT" -t $DELIMITER "$DICT"`
+ SORT_EXIT=$?
+ if [ $VERBOSE -eq 1 ]; then
+ echo "sort returned exit code "$SORT_EXIT
+ if [ $SORT_EXIT -eq 0 ]; then
+ echo "Sorting successful: '"$DICT"'"
+ else
+ echo "Sorting failed: '"$DICT"'"
+ fi
+ echo
+ fi
+ exit $SORT_EXIT
+ fi
+
+ if [ $REPAIR -eq 1 ]; then
+ if [ $VERBOSE -eq 1 ]; then echo $DICT": Repairing dictionary" ; fi
+ TMPFILE=`mktemp -q /tmp/$APPFILENAME.XXXXXX`
+ if [ $? -ne 0 ]; then
+ if [ $VERBOSE -eq 1 ]; then echo $APPFILENAME": Can't create temp file, exiting..." ; fi
+ exit EDICT_TEMP_ERROR
+ else
+ grep -e "^#$DELIMITER" "$DICT" &>$TMPFILE
+ grep -e ".$DELIMITER." "$DICT" >>$TMPFILE
+ if [ $? -eq 0 ]; then mv $TMPFILE $DICT &>/dev/null ; fi
+ if [ $? -ne 0 ]; then
+ if [ $VERBOSE -eq 1 ]; then echo $DICT": Unable to repair dictionary (cannot replace file)" ; fi
+ exit EDICT_REPLACE_ERROR
+ else
+ $DICT": Repair successful"
+ fi
+ fi
+ fi
+
+ TRANSL=""
+ REVERSE_TRANSL=""
+ REVERSE_TRANSL_CAPT="T"
+ REVERSE_TRANSL_ON=" (reverse)"
+ REVERSE_TRANSL_CAPT_ON="Reverse t"
+ if [ $REVERSE -eq 1 ]; then
+ REVERSE_TRANSL=$REVERSE_TRANSL_ON
+ REVERSE_TRANSL_CAPT=$REVERSE_TRANSL_CAPT_ON
+ fi
+ if [ $PHRASE -eq 1 ] ; then
+ if [ $VERBOSE -eq 1 ]; then echo "Looking up phrase"$REVERSE_TRANSL": '"$1"'" ; fi
+ if [ $ZERO -eq 0 ]; then
+ TRANSL="$1" ; if [ $BRACKETS -eq 1 ]; then TRANSL="["$TRANSL"]" ; fi
+ fi
+ translate "$1"
+ if [ -n "$RESULT" ]; then
+ TRANSL=$RESULT
+ if [ $VERBOSE -eq 1 ]; then echo $REVERSE_TRANSL_CAPT"ranslation: '"$TRANSL"'" ; fi
+ else
+ if [ $VERBOSE -eq 1 ]; then
+ if [ $ZERO -eq 1 ]; then
+ echo $REVERSE_TRANSL_CAPT"ranslation failed (return not translatable tokens as null-string): '"$1"'"
+ else
+ if [ $BRACKETS -eq 1 ]; then
+ echo $CH_SOUND$REVERSE_TRANSL_CAPT"ranslation failed (enclosing phrase in brackets): '"$1"'"
+ else
+ echo $CH_SOUND$REVERSE_TRANSL_CAPT"ranslation failed (leave 'as is'): '"$1"'"
+ fi
+ fi
+ fi
+ fi
+ else
+ for word in $1; do
+ if [ $ZERO -eq 0 ]; then TRANSLWORD="$word" ; else TRANSLWORD="" ; fi
+ if [ $VERBOSE -eq 1 ]; then echo "Looking up word"$REVERSE_TRANSL": "$word ; fi
+ translate "$word"
+ if [ -n "$RESULT" ]; then
+ TRANSLWORD=$RESULT
+ if [ -n "$RESULT" ] && [ $VERBOSE -eq 1 ]; then echo $REVERSE_TRANSL_CAPT"ranslation: '"$TRANSLWORD"'" ; fi
+ else
+ if [ $ZERO -eq 0 ] && [ $BRACKETS -eq 1 ]; then TRANSLWORD="["$TRANSLWORD"]" ; fi
+ if [ $VERBOSE -eq 1 ]; then
+ if [ $ZERO -eq 1 ]; then
+ echo $REVERSE_TRANSL_CAPT"ranslation failed (return not translatable tokens as null-string): "$word
+ else
+ if [ $BRACKETS -eq 1 ]; then
+ echo $REVERSE_TRANSL_CAPT"ranslation failed (enclosing word in brackets): "$word
+ else
+ echo $REVERSE_TRANSL_CAPT"ranslation failed (leave 'as is'): "$word
+ fi
+ fi
+ fi
+ fi
+ TRANSL=$TRANSL" "$TRANSLWORD
+ done
+ fi
+ if [ $VERBOSE -eq 1 ]; then echo "Overall translation:" ; fi
+ if [ -n "$TRANSL" ]; then echo $TRANSL ; fi
+ if [ $VERBOSE -eq 1 ]; then echo ; fi
+ else
+ # send errmsg to stderr
+ if [ -n "$TRANSLATE_DIR" ] && [ ! -e "$TRANSLATE_DIR" ]; then
+ if [ $MESSAGES -eq 1 ] || [ $VERBOSE -eq 1 ]; then echo $CH_SOUND"$APPFILENAME: Unable to locate dictionary root: '"$TRANSLATE_DIR"'" 1>&2 ; fi
+ else
+ if [ $INFO -eq 0 ] && [ $ADD -eq 1 ] || [ $OVERWRITE -eq 1 ]; then
+ if [ $VERBOSE -eq 1 ]; then
+ echo
+ echo $DICT": Creating dictionary"
+ fi
+ if [ -n "$4" ]; then
+ if [ -z "$5" ]; then
+ if [ $VERBOSE -eq 1 ]; then echo $DICT": Adding information: '"$APPNAME" "$APPVER" dictionary file created by '"`whoami`"' on "`date`"'" ; fi
+ echo "#"$DELIMITER$APPNAME" "$APPVER" dictionary file created by '"`whoami`"' on "`date` &>$DICT
+ else
+ if [ $VERBOSE -eq 1 ]; then echo $DICT": Adding information: '"$5"'" ; fi
+ echo "#"$DELIMITER$5 &>$DICT
+ fi
+ if [ $? -eq 0 ]; then
+ if [ $VERBOSE -eq 1 ]; then
+ echo $DICT": Adding expression: '"$1"'"
+ echo $DICT": Adding translation: '"$4"'"
+ fi
+ echo $1$DELIMITER$4 >>$DICT
+ else
+ if [ $MESSAGES -eq 1 ] || [ $VERBOSE -eq 1 ]; then echo $CH_SOUND$APPFILENAME": Unable to create dictionary file: '"$DICT"'" ; fi
+ exit EDICT_CREATE_ERROR
+ fi
+ else
+ if [ $MESSAGES -eq 1 ] || [ $VERBOSE -eq 1 ]; then echo $CH_SOUND$APPFILENAME": No translation given for '"$1"'" ; fi
+ fi
+ else
+ if [ $MESSAGES -eq 1 ] || [ $VERBOSE -eq 1 ]; then echo $CH_SOUND$APPFILENAME": Unable to locate dictionary file: '"$DICT"' (please double-quote phrases)" 1>&2 ; fi
+ fi
+ fi
+ if [ $VERBOSE -eq 1 ]; then echo ; fi
+ if [ -n "$TRANSLATE_DIR" ] && [ ! -e "$TRANSLATE_DIR" ]; then
+ exit $EDICT_DIR_NOT_FOUND
+ else
+ exit $EDICT_NOT_FOUND
+ fi
+ fi
+ else
+ if [ $MESSAGES -eq 1 ] || [ $VERBOSE -eq 1 ]; then
+ # send errmsg to stderr
+ echo $CH_SOUND$APPFILENAME": No dictionary file given" 1>&2
+ fi
+ if [ $VERBOSE -eq 1 ]; then echo ; fi
+ exit $ENO_DICT
+ fi
+else
+ help
+fi
/live/tools/eazytrans/translate.sh
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: live/tools/eazytrans/install.sh
===================================================================
--- live/tools/eazytrans/install.sh (nonexistent)
+++ live/tools/eazytrans/install.sh (revision 198)
@@ -0,0 +1,186 @@
+#!/bin/bash
+
+APPNAME="EazyTranslator"
+APPVER="0.96a Setup"
+APPFILEDIR=`pwd`
+APPFILENAME="translate"
+
+function title {
+ clear
+ echo $APPNAME" "$APPVER" - (C) 2001 Thomas Lahn (webmaster@PointedEars.de)"
+}
+
+function Error {
+ echo
+ pause "c"
+}
+
+function EFailed {
+ echo -e "$rc_failed"
+ Error
+}
+
+X=""
+function val2x {
+ case $1 in
+ -1) X="-";;
+ 0) X=" ";;
+ 1) X="x";;
+ esac
+}
+
+
+# Acquire default text values for process success/failure messages
+. /etc/rc.config
+
+if [ -n "$1" ]; then CPDEST=$1 ; else CPDEST="/opt/EazyTrans" ; fi
+CREATELNK=1
+MODI_USERS=1
+MODI_ROOT=1
+MODI_SKEL=1
+YES="Yes!"
+NO="No."
+DEF="Default"
+YESNO="$YES $NO"
+YESNODEF="$YES $NO $DEF"
+
+CONTINUE=0
+while [ $CONTINUE -eq 0 ]; do
+ title
+ echo
+# if [ `whoami` != "root" ]; then echo "Sorry, only 'root' can do this!" ; echo ; exit 1 ; fi
+ echo "This program will do the following:"
+ echo
+ echo "1) Copy the program files to: '"$CPDEST"'"
+ val2x $CREATELNK
+ echo "2) ["$X"] Create a symbolic link to /usr/bin"
+ val2x $MODI_USERS
+ echo "3) ["$X"] Modify the ~/.bashrc file of existing users (default)"
+ val2x $MODI_ROOT
+ echo "4) ["$X"] Modify the /root/.bashrc file (default)"
+ val2x $MODI_SKEL
+ echo "5) ["$X"] Modify the /etc/skel/.bashrc file (default)"
+ echo
+ echo "Select the value to be changed, proceed with these values or cancel:"
+ OPT_PROCEED="Proceed!"
+ OPT_CANCEL="Cancel."
+ OPTIONS="1 2 3 4 5 $OPT_PROCEED $OPT_CANCEL"
+ select SELOPT in $OPTIONS; do
+ case $SELOPT in
+ "1")
+ echo
+ echo "Where should the program files be copied to? (RETURN cancels):"
+ echo -n "> "
+ read S
+ if [ -n "$S" ]; then CPDEST=$S ; fi
+ break;;
+ "2")
+ echo
+ echo "Should a symbolic link '/usr/bin/"$APPFILENAME"' be created"
+ echo "so that the program becomes available to all users?"
+ select SELOPT in $YESNODEF; do
+ case $SELOPT in
+ $YES)
+ CREATELNK=1
+ break;;
+ $NO)
+ CREATELNK=0
+ break;;
+ $DEF)
+ CREATELNK=1
+ break;;
+ *)
+ echo "Bad option"
+ echo;;
+ esac
+ done
+ break;;
+ "3")
+ echo
+ echo "Should the ~/.bashrc file of existing users be modified"
+ echo "so that they can use the global dictionary files without typing a path?"
+ select SELOPT in $YESNODEF; do
+ case $SELOPT in
+ $YES)
+ MODI_USERS=1
+ break;;
+ $NO)
+ MODI_USERS=0
+ break;;
+ $DEF)
+ MODI_USERS=1
+ break;;
+ *)
+ echo "Bad option"
+ echo;;
+ esac
+ done
+ break;;
+ "4")
+ echo
+ echo "Should /root/.bashrc be modified so that 'root' can use"
+ echo "the global dictionary files without typing a path?"
+ select SELOPT in $YESNODEF; do
+ case $SELOPT in
+ $YES)
+ MODI_ROOT=1
+ break;;
+ $NO)
+ MODI_ROOT=0
+ break;;
+ $DEF)
+ MODI_ROOT=1
+ break;;
+ *)
+ echo "Bad option"
+ echo
+ esac
+ done
+ break;;
+ "5")
+ echo
+ echo "Should /etc/skel/.bashrc be modified so that new users"
+ echo "can use the global dictionary files without typing a path?"
+ select SELOPT in $YESNODEF; do
+ case $SELOPT in
+ $YES)
+ MODI_SKEL=1
+ break;;
+ $NO)
+ MODI_SKEL=0
+ break;;
+ $DEF)
+ MODI_SKEL=1
+ break;;
+ *)
+ echo "Bad option"
+ echo
+ esac
+ done
+ break;;
+ $OPT_PROCEED)
+ title
+ echo
+ echo "Creating program directory '"$CPDEST"'"
+ if [ -d
+ if [ -x "$APPFILENAME" ]; then
+ ln -s -v $APPFILEDIR/$APPFILENAME /usr/bin/$APPFILENAME
+ else
+ echo $0": Unable to find the file "$APPFILEDIR/$APPFILENAME"' in current directory."
+ fi
+ echo
+ echo
+ exit 0;;
+ $OPT_CANCEL)
+ title
+ echo
+ echo "Canceled."
+ echo
+ exit 0;;
+ *)
+ break;;
+ esac
+ done
+done
+
+exit 0
/live/tools/eazytrans/install.sh
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: live/tools/eazytrans/uninstall.sh
===================================================================
--- live/tools/eazytrans/uninstall.sh (nonexistent)
+++ live/tools/eazytrans/uninstall.sh (revision 198)
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+APPFILENAME="translate"
+
+echo
+rm /usr/bin/$APPFILENAME
+if [ $? -eq 0 ]; then
+ echo "Successfully removed symbolic link: /usr/bin/"$APPFILENAME
+fi
+echo
/live/tools/eazytrans/uninstall.sh
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: live/tools/eazytrans/option-parser.sh
===================================================================
--- live/tools/eazytrans/option-parser.sh (nonexistent)
+++ live/tools/eazytrans/option-parser.sh (revision 198)
@@ -0,0 +1,34 @@
+#!/bin/bash
+echo
+
+interactive=0
+
+echo $\*=$*
+for i in "$*"; do
+ opt=0
+ idx=1
+ while [ -n "`echo $i | cut -c $idx`" ] ; do
+ j=`echo $i | cut -c $idx`
+ let idx=$idx+1
+ if [ "$j" = "-" ]; then
+ opt=1
+ continue 1
+ else
+ if [ $opt -eq 1 ]; then
+ case "$j" in
+ "i") interactive=1 ;;
+ esac
+ lastopt=$j
+ else
+ phrase=$phrase" "$j
+ fi
+ fi
+ done
+done
+
+echo opt=$opt
+echo idx=$idx
+echo lastopt=$lastopt
+echo phrase=$phrase
+echo interactive=$interactive
+echo
/live/tools/eazytrans/option-parser.sh
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: live/tools/eazytrans/README
===================================================================
--- live/tools/eazytrans/README (nonexistent)
+++ live/tools/eazytrans/README (revision 198)
@@ -0,0 +1,165 @@
+
+EasyTranslator 0.95a - Stream editor to manage dictionary files
+Requires 'basename', 'grep' and 'sed', optionally 'sort' and 'mktemp' in PATH
+
+Copyright (C) 2001 Thomas Lahn (webmaster@PointedEars.de)
+Be sure to have 'easyTrans' or similar in mail subject line for fast response.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program (COPYING file); if not, write to the
+Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+
+EasyTranslator 0.95a - Stream editor to manage dictionary files
+Requires 'basename', 'grep' and 'sed', optionally 'sort' and 'mktemp' in PATH
+
+translate EXPRESSION DICTIONARY [OPTIONS]
+
+Tries to translate EXPRESSION looking up DICTIONARY and writes the result
+to standard output (stdout) in a single line followed by a newline (\n).
+
+Environment:
+
+TRANSLATE_DIR Dictionary folder root (absolute path '/')
+ If undefined, this is the program directory
+ (currently './').
+TRANSLATE_OPTIONS Default options to overwrite command-line options
+
+Arguments:
+
+EXPRESSION Word or (double-quoted) phrase to be translated
+DICTIONARY Path of dictionary file relative to TRANSLATE_DIR
+
+Translation OPTIONS:
+ -b, --brackets If not in DICTIONARY, writes given WORD or EXPRESSION
+ as [WORD] or [EXPRESSION].
+ -m, --messages Return error messages instead of null-strings.
+ -p, --phrase Translate EXPRESSION as entire phrase. If not given,
+ each WORD of EXPRESSION is translated seperately.
+ -r, --reverse Perform reverse translation. Recommended only if
+ no appropriate dictionary file for vice-versa translation is
+ available and -p is also used.
+ -s, --sound Beep on fatal errors.
+ -v, --verbose Display flow of operation. Includes -m behavior.
+ -z, --zero Return not translatable tokens as null-strings.
+ Overwrites -b.
+
+translate EXPRESSION DICTIONARY COMMAND TRANSLATION [INFO] [OPTIONS]
+translate COMMAND DICTIONARY [INFO] [OPTIONS]
+
+Dictionary file COMMANDs:
+ -a, --add If not in DICTIONARY, add EXPRESSION with TRANSLATION
+ to DICTIONARY and write TRANSLATION.
+ If DICTIONARY not exists, create the file with INFO
+ and add the entry; if INFO is a null-string,
+ default INFO is added, containing program version,
+ user name and timestamp. Requires 'sort'.
+ -ai, -addinfo Add information data INFO to DICTIONARY.
+ Must be used as first argument.
+ -c, --create Create new DICTIONARY with INFO (see -a).
+ Existing files are replaced. Must be used as first argument.
+ -d, --delete If used with EXPRESSION and DICTIONARY, remove EXPRESSION
+ from DICTIONARY instead of translating.
+ If used as first argument, delete DICTIONARY.
+ -i, --info Display information about DICTIONARY.
+ Must be used as first argument.
+
+ -o, --overwrite Like -a but overwrite a contained translation of
+ EXPRESSION with TRANSLATION without question.
+ Additionally requires 'mktemp'.
+ -R, --repair Repair DICTIONARY instead of translating. Requires 'mktemp'.
+ Info data is be kept but invalid entries are removed.
+ USE WITH CAUTION!
+ -s, --sort Sort DICTIONARY instead of translating. Requires 'sort'.
+ Includes --sound when used with -v.
+ Must be used as first argument.
+
+translate OPTION [OPTION]
+
+Help page OPTIONs:
+ --1 Display help on one page (without 'clear' and user input).
+ Useful with redirection
+ (try 'translate --1 --? > translate.doc.txt').
+ Must be given before all other help page options.
+ --a, --about Display information about the program.
+ --c, --cmd Display this help page.
+ --d, --dict Display help about dictionary files.
+ --dev, --emp Display special information for developers and employers.
+ --x, --example Display example.
+ --?, --help Display all help pages.
+
+
+EasyTranslator 0.95a - Stream editor to manage dictionary files
+Requires 'basename', 'grep' and 'sed', optionally 'sort' and 'mktemp' in PATH
+
+EXAMPLE: If you would like to translate the English words 'a few' into German,
+
+ translate ''a few'' en-de
+
+should write the German words
+
+ ein(e) wenig(e)\n
+
+(without indent) to stdout if the echo dictionary file 'en-de' contains
+a correct entry for it (see next page). You may also translate it as
+entire phrase (which seems to make more sense here):
+
+ translate ''a few'' en-de -p
+
+should instead write the German word 'einige\n'
+(replace '' in input with the double-quote character).
+
+
+EasyTranslator 0.95a - Stream editor to manage dictionary files
+Requires 'basename', 'grep' and 'sed', optionally 'sort' and 'mktemp' in PATH
+
+DICTIONARY FILES:
+You may create/improve dictionary files to be used with EasyTranslator
+of your own. Translation data must be contained therein as follows:
+
+#:File description displayed when option -i is used\n[#:File description\n]
+[Expression:translation\n[Next expression:next translation\n]]
+Last expression:last translation\z
+
+Parts enclosed in rectangle brackets are optional. The colon (:) is to be used
+as delimiter character between original and translated expression only.
+Dictionary file names should contain common language identifiers separated
+by a dash (such as 'en-de.dic' for an English-German dictionary file).
+
+Program updates and dictionaries can be obtained from
+'http://pointedears.de/dev/unix/translate/'.
+Thank you for using a program by PointedEars.
+
+
+EasyTranslator 0.95a - Stream editor to manage dictionary files
+Requires 'basename', 'grep' and 'sed', optionally 'sort' and 'mktemp' in PATH
+
+Copyright (C) 2001 Thomas Lahn (webmaster@PointedEars.de)
+Be sure to have 'easyTrans' or similar in mail subject line for fast response.
+
+INFORMATION FOR DEVELOPERS (KNOWN ISSUES)...
+
+1) As I have not found out the correct /REGEXP/ for 'sed' to remove all
+ characters before/after another one including this character (delimiter)
+ to date, removing each single printable character before/after
+ delimiter is, for the time being, my only solution in bash. Please mail
+ me if you have a more efficient solution, especially the correct /REGEXP/.
+2) Sorting the dictionary unfortunately also sorts its the info data by now.
+
+...AND FOR EMPLOYERS:
+
+BTW, if you have an idea for improving EasyTranslator or for another (field of)
+application you want me to develop for you (BASIC, DOS batch, Windows INF,
+Visual Basic, bash, Pascal, Delphi, C, HTML/JavaScript, and I am still learning
+other languages) feel free to mail me, too. THNX! -- PointedEars, 2001-03-28
+
Index: live/tools/eazytrans/dummy.dict
===================================================================
--- live/tools/eazytrans/dummy.dict (nonexistent)
+++ live/tools/eazytrans/dummy.dict (revision 198)
@@ -0,0 +1 @@
+#:EasyTranslator 0.95a dictionary file created by 'pelinux' on Mit Mär 28 13:51:49 CEST 2001
Index: live/tools/network/news/newsstat/po/de.po
===================================================================
--- live/tools/network/news/newsstat/po/de.po (nonexistent)
+++ live/tools/network/news/newsstat/po/de.po (revision 198)
@@ -0,0 +1,163 @@
+# newsstat German language file
+# Copyright (C) 2012 Thomas 'PointedEars' Lahn
+# This file is distributed under the same license as the newsstat package.
+# Thomas 'PointedEars' Lahn <startrek@PointedEars.de>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: newsstat r23\n"
+"Report-Msgid-Bugs-To: Thomas 'PointedEars' Lahn <startrek@PointedEars.de>\n"
+"POT-Creation-Date: 2013-01-07 02:32+0100\n"
+"PO-Revision-Date: 2013-01-07 01:50+0100\n"
+"Last-Translator: Thomas 'PointedEars' Lahn <startrek@PointedEars.de>\n"
+"Language-Team: German <startrek@PointedEars.de>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../newsstat.pl:210
+#, perl-brace-format
+msgid "Can't cd to {newsgroup}: {error}\n"
+msgstr ""
+
+#: ../newsstat.pl:216
+#, perl-brace-format
+msgid "Can't open {newsgroup}: {error}\n"
+msgstr ""
+
+#: ../newsstat.pl:248
+#, perl-brace-format
+msgid "Can't open {file}: {error}\n"
+msgstr ""
+
+#: ../newsstat.pl:303 ../newsstat.pl:422
+msgid "unknown"
+msgstr "unbekannt"
+
+#: ../newsstat.pl:557
+#, perl-brace-format
+msgid "Can't create XDATA: {error}\n"
+msgstr ""
+
+#: ../newsstat.pl:612
+#, perl-brace-format
+msgid "Analysis of articles to {newsgroup}"
+msgstr "Analyse der Artikel in {newsgroup}"
+
+#: ../newsstat.pl:619
+msgid ""
+"(compiled with a script by Thomas 'PointedEars' Lahn, based on work by\n"
+"Garry Knight et al.)"
+msgstr ""
+"(erstellt mit einem Skript von Thomas 'PointedEars' Lahn, basierend auf\n"
+"der Arbeit von Garry Knight und anderen)"
+
+#: ../newsstat.pl:624
+#, perl-format
+msgid "Total articles considered: %s over %d days\n"
+msgstr "Berücksichtigte Artikel: %s über %d Tage\n"
+
+#: ../newsstat.pl:639
+#, perl-format
+msgid "Earliest article: %s\n"
+msgstr "Ältester Artikel: %s\n"
+
+#: ../newsstat.pl:641
+#, perl-format
+msgid "Latest article: %s\n"
+msgstr "Neuester Artikel: %s\n"
+
+#: ../newsstat.pl:643
+#, perl-format
+msgid "Original articles: %s; replies: %s\n"
+msgstr "Originalartikel: %s; Antworten: %s\n"
+
+#: ../newsstat.pl:646
+#, perl-format
+msgid "Total size of articles: %s bytes (%s)\n"
+msgstr "Artikel insgesamt: %s Bytes (%s)\n"
+
+#: ../newsstat.pl:649
+#, perl-format
+msgid "Average %s articles per day, %s per day, %s bytes per article.\n"
+msgstr "Durchschnittlich %s Artikel je Tag, %s je Tag, %s Bytes je Artikel.\n"
+
+#: ../newsstat.pl:656
+#, perl-format
+msgid "Total headers: %s; bodies: %s\n"
+msgstr "Header insgesamt: %s; Bodys: %s\n"
+
+#: ../newsstat.pl:662
+#, perl-format
+msgid "Body text - quoted: %s; original: %s = %s%%; sigs: %s\n"
+msgstr "Body-Text - zitiert: %s; original: %s = %s%%; sigs: %s\n"
+
+#: ../newsstat.pl:671
+#, perl-format
+msgid "Total number of posters: %s, average %s per poster\n"
+msgstr "Poster insgesamt: %s, durchschnittlich %s je Poster\n"
+
+#: ../newsstat.pl:676
+#, perl-format
+msgid "Total number of threads: %s, average %s per thread\n"
+msgstr "Threads insgesamt: %s, durchschnittlich %s je Thread\n"
+
+#: ../newsstat.pl:680
+#, perl-format
+msgid "Total number of user agents: %d\n"
+msgstr "Benutzerprogramme insgesamt: %d\n"
+
+#: ../newsstat.pl:698
+#, perl-brace-format
+msgid "Top {count} posters by number of articles"
+msgstr "Top {count} der Poster nach Anzahl der Artikel"
+
+#: ../newsstat.pl:729
+#, perl-brace-format
+msgid "Top {count} posters by article size in KiB"
+msgstr "Top {count} der Poster nach Artikelgrösse in KiB"
+
+#: ../newsstat.pl:764
+#, perl-brace-format
+msgid "Top {count} responders by original text (> 5 articles)"
+msgstr "Top {count} der Antwortenden nach Originaltext (> 5 Artikel)"
+
+#: ../newsstat.pl:806
+#, perl-brace-format
+msgid "Bottom {count} responders by original text (> 5 articles)"
+msgstr "{count} seltenste Antwortende nach Originaltext (> 5 Artikel)"
+
+#: ../newsstat.pl:843
+#, perl-brace-format
+msgid "Top {count} threads by no. of articles"
+msgstr "Top {count} der Threads nach Anzahl der Artikel"
+
+#: ../newsstat.pl:875
+#, perl-brace-format
+msgid "Top {count} threads by size in KiB"
+msgstr "Top {count} der Threads nach Grösse in KiB"
+
+#: ../newsstat.pl:907
+#, perl-brace-format
+msgid "Top {count} cross-posted groups"
+msgstr "Top {count} der Gruppen, in die gecrosspostet wurde"
+
+#: ../newsstat.pl:934
+#, perl-brace-format
+msgid "Top {count} user agents by poster"
+msgstr "Top {count} der Benutzerprogramme nach Anzahl der Poster"
+
+#: ../newsstat.pl:963
+#, perl-brace-format
+msgid "Top {count} user agents by number of articles"
+msgstr "Top {count} der Benutzerprogramme nach Anzahl der Artikel"
+
+#: ../newsstat.pl:998
+#, perl-brace-format
+msgid "Top {count} time zones by number of articles"
+msgstr "Top {count} der Zeitzonen nach Anzahl der Artikel"
+
+#: ../newsstat.pl:1076
+msgid "usage: newsstat.pl NEWS.GROUP"
+msgstr ""
Index: live/tools/network/news/newsstat/po/de.pointedears.newsstat.pot
===================================================================
--- live/tools/network/news/newsstat/po/de.pointedears.newsstat.pot (nonexistent)
+++ live/tools/network/news/newsstat/po/de.pointedears.newsstat.pot (revision 198)
@@ -0,0 +1,162 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Thomas 'PointedEars' Lahn
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: Thomas 'PointedEars' Lahn <startrek@PointedEars.de>\n"
+"POT-Creation-Date: 2013-01-07 02:32+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../newsstat.pl:210
+#, perl-brace-format
+msgid "Can't cd to {newsgroup}: {error}\n"
+msgstr ""
+
+#: ../newsstat.pl:216
+#, perl-brace-format
+msgid "Can't open {newsgroup}: {error}\n"
+msgstr ""
+
+#: ../newsstat.pl:248
+#, perl-brace-format
+msgid "Can't open {file}: {error}\n"
+msgstr ""
+
+#: ../newsstat.pl:303 ../newsstat.pl:422
+msgid "unknown"
+msgstr ""
+
+#: ../newsstat.pl:557
+#, perl-brace-format
+msgid "Can't create XDATA: {error}\n"
+msgstr ""
+
+#: ../newsstat.pl:612
+#, perl-brace-format
+msgid "Analysis of articles to {newsgroup}"
+msgstr ""
+
+#: ../newsstat.pl:619
+msgid ""
+"(compiled with a script by Thomas 'PointedEars' Lahn, based on work by\n"
+"Garry Knight et al.)"
+msgstr ""
+
+#: ../newsstat.pl:624
+#, perl-format
+msgid "Total articles considered: %s over %d days\n"
+msgstr ""
+
+#: ../newsstat.pl:639
+#, perl-format
+msgid "Earliest article: %s\n"
+msgstr ""
+
+#: ../newsstat.pl:641
+#, perl-format
+msgid "Latest article: %s\n"
+msgstr ""
+
+#: ../newsstat.pl:643
+#, perl-format
+msgid "Original articles: %s; replies: %s\n"
+msgstr ""
+
+#: ../newsstat.pl:646
+#, perl-format
+msgid "Total size of articles: %s bytes (%s)\n"
+msgstr ""
+
+#: ../newsstat.pl:649
+#, perl-format
+msgid "Average %s articles per day, %s per day, %s bytes per article.\n"
+msgstr ""
+
+#: ../newsstat.pl:656
+#, perl-format
+msgid "Total headers: %s; bodies: %s\n"
+msgstr ""
+
+#: ../newsstat.pl:662
+#, perl-format
+msgid "Body text - quoted: %s; original: %s = %s%%; sigs: %s\n"
+msgstr ""
+
+#: ../newsstat.pl:671
+#, perl-format
+msgid "Total number of posters: %s, average %s per poster\n"
+msgstr ""
+
+#: ../newsstat.pl:676
+#, perl-format
+msgid "Total number of threads: %s, average %s per thread\n"
+msgstr ""
+
+#: ../newsstat.pl:680
+#, perl-format
+msgid "Total number of user agents: %d\n"
+msgstr ""
+
+#: ../newsstat.pl:698
+#, perl-brace-format
+msgid "Top {count} posters by number of articles"
+msgstr ""
+
+#: ../newsstat.pl:729
+#, perl-brace-format
+msgid "Top {count} posters by article size in KiB"
+msgstr ""
+
+#: ../newsstat.pl:764
+#, perl-brace-format
+msgid "Top {count} responders by original text (> 5 articles)"
+msgstr ""
+
+#: ../newsstat.pl:806
+#, perl-brace-format
+msgid "Bottom {count} responders by original text (> 5 articles)"
+msgstr ""
+
+#: ../newsstat.pl:843
+#, perl-brace-format
+msgid "Top {count} threads by no. of articles"
+msgstr ""
+
+#: ../newsstat.pl:875
+#, perl-brace-format
+msgid "Top {count} threads by size in KiB"
+msgstr ""
+
+#: ../newsstat.pl:907
+#, perl-brace-format
+msgid "Top {count} cross-posted groups"
+msgstr ""
+
+#: ../newsstat.pl:934
+#, perl-brace-format
+msgid "Top {count} user agents by poster"
+msgstr ""
+
+#: ../newsstat.pl:963
+#, perl-brace-format
+msgid "Top {count} user agents by number of articles"
+msgstr ""
+
+#: ../newsstat.pl:998
+#, perl-brace-format
+msgid "Top {count} time zones by number of articles"
+msgstr ""
+
+#: ../newsstat.pl:1076
+msgid "usage: newsstat.pl NEWS.GROUP"
+msgstr ""
Index: live/tools/network/news/newsstat/po/POTFILES.in
===================================================================
--- live/tools/network/news/newsstat/po/POTFILES.in (nonexistent)
+++ live/tools/network/news/newsstat/po/POTFILES.in (revision 198)
@@ -0,0 +1 @@
+../newsstat.pl
\ No newline at end of file
Index: live/tools/network/news/newsstat/po/PACKAGE
===================================================================
--- live/tools/network/news/newsstat/po/PACKAGE (nonexistent)
+++ live/tools/network/news/newsstat/po/PACKAGE (revision 198)
@@ -0,0 +1,16 @@
+# Makefile snippet that holds all package-dependent information.
+
+# Add more languages here! Beware that this is a makefile snippet and
+# you have to adhere to make syntax.
+LINGUAS = de
+
+# Textdomain for our package.
+TEXTDOMAIN = de.pointedears.newsstat
+
+# Initial copyright holder added to pot and po files.
+#COPYRIGHT_HOLDER = Guido Flohr
+COPYRIGHT_HOLDER = Thomas 'PointedEars' Lahn
+
+# Where to send msgid bugs?
+#MSGID_BUGS_ADDRESS = Guido Flohr <guido@imperia.net>
+MSGID_BUGS_ADDRESS = Thomas 'PointedEars' Lahn <startrek@PointedEars.de>
Index: live/tools/network/news/newsstat/po/Makefile
===================================================================
--- live/tools/network/news/newsstat/po/Makefile (nonexistent)
+++ live/tools/network/news/newsstat/po/Makefile (revision 198)
@@ -0,0 +1,97 @@
+# Makefile for various po files.
+
+srcdir = .
+libdir = ..
+
+#CATALOGS = $(addsuffix .po, LINGUAS)
+CATALOGS = $(LINGUAS)
+MO_FILES = $(addsuffix .mo, $(LINGUAS))
+
+MSGMERGE = msgmerge
+MSGFMT = msgfmt
+XGETTEXT = xgettext
+CATOBJEXT = .po
+
+include PACKAGE
+
+TD = $(strip $(TEXTDOMAIN))
+
+default: help
+
+all: $(TD).pot update-po update-mo install
+
+help:
+ @echo "Available targets:"
+ @echo " pot - remake master catalog"
+ @echo " update-po - merge po files"
+ @echo " update-mo - regenerate mo files"
+ @echo " install - install mo files"
+ @echo " all - all of the above"
+
+POTFILES = $(srcdir)/POTFILES.in \
+ $(shell cat $(srcdir)/POTFILES.in)
+
+pot: $(TD).pot
+
+clean:
+ rm -f *~ *.bak *.mo
+
+# FIXME: The parameter --from-code is only needed if your sources contain
+# any 8 bit data (even in comments). UTF-8 is only a guess here, but it
+# will at least accept any 8 bit data.
+#
+# The parameter "--language=perl" is not strictly needed because the
+# source language of all our files will be auto-detected by xgettext
+# by their filename extension. You should even avoid this parameter
+# if you want to extract strings from multiple source languages.
+$(TD).pot: $(POTFILES)
+ $(XGETTEXT) --output=$(srcdir)/$(TD).pox --from-code=utf-8 \
+ --add-comments=TRANSLATORS: --files-from=$(srcdir)/POTFILES.in \
+ --copyright-holder="$(COPYRIGHT_HOLDER)" \
+ --msgid-bugs-address="$(MSGID_BUGS_ADDRESS)" \
+ --keyword --keyword='$$__' --keyword=__ --keyword=__x \
+ --keyword=__n:1,2 --keyword=__nx:1,2 --keyword=__xn:1,2 \
+ --keyword=__p:1c,2 --keyword=__np:1c,2,3 \
+ --keyword=__npx:1c,2,3 --keyword=N__ --keyword=N__n:1,2 \
+ --keyword=N__p:1c,2 --keyword=N__np:1c,2,3 --keyword=%__ \
+ --language=perl && \
+ rm -f $@ && mv $(TD).pox $@
+
+install: $(MO_FILES)
+ cd $(srcdir); \
+ targetdir='$(libdir)/LocaleData'; \
+ languages='$(LINGUAS)'; \
+ for lang in $$languages; do \
+ mkdir -p "$$targetdir/$$lang/LC_MESSAGES" || exit 1; \
+ dest="$$targetdir/$$lang/LC_MESSAGES/$(TD).mo"; \
+ cat="$$lang.mo"; \
+ echo "installing $$cat as $$dest"; \
+ cp -f $$cat $$dest && chmod 644 $$dest || exit 1; \
+ done
+
+update-mo: $(MO_FILES)
+
+update-po:
+ $(MAKE) $(TD).pot
+ cd $(srcdir); \
+ catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+ mv $$lang.po $$lang.old.po; \
+ echo "$$lang:"; \
+ if $(MSGMERGE) $$lang.old.po $(TD).pot -o $$lang.po; then \
+ rm -f $$lang.old.po; \
+ else \
+ echo "msgmerge for $$cat failed!"; \
+ rm -f $$lang.po; \
+ mv $$lang.old.po $$lang.po; \
+ fi; \
+ done
+
+.SUFFIXES:
+.SUFFIXES: .po .mo
+
+.po.mo:
+ $(MSGFMT) --check --statistics --verbose -o $@ $<
+
Index: live/tools/network/news/newsstat/po
===================================================================
--- live/tools/network/news/newsstat/po (nonexistent)
+++ live/tools/network/news/newsstat/po (revision 198)
/live/tools/network/news/newsstat/po
Property changes:
Added: svn:ignore
## -0,0 +1 ##
+*.mo
Index: live/tools/network/news/newsstat/scorefile2filters.xsl
===================================================================
--- live/tools/network/news/newsstat/scorefile2filters.xsl (nonexistent)
+++ live/tools/network/news/newsstat/scorefile2filters.xsl (revision 198)
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/xhtml1/strict">
+ <xsl:output method="text" indent="no" media-type="text/plain" encoding="UTF-8" />
+ <xsl:strip-space elements="*" />
+
+ <xsl:template match="/">
+ <xsl:text># vim:set fileencoding=utf-8 tabstop=2 shiftwidth=2 softtabstop=2 expandtab:
+</xsl:text>
+ <xsl:apply-templates />
+ </xsl:template>
+
+ <xsl:template match="Rule">
+ <xsl:variable
+ name="supported_rule"
+ select="@linkmode = 'OR' or (@linkmode = 'AND' and not(Expression[2]))" />
+ <xsl:variable
+ name="killfiled"
+ select="Action[@type='SETSCORE']/@value &lt;= -100" />
+
+ <xsl:if test="$supported_rule and $killfiled">
+<!-- <xsl:text># </xsl:text>
+ <xsl:value-of select="@name" />
+ <xsl:text>
+</xsl:text> -->
+ <xsl:apply-templates />
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="Expression">
+ <xsl:variable name="ignored_headers">
+ <header name="Newsgroups"/>
+ <header name="Followup-To"/>
+ </xsl:variable>
+ <xsl:variable name="allowed_header">
+ <xsl:value-of
+ select="not(document('')//xsl:variable[@name = 'ignored_headers']/@name[text() = @header])"/>
+ </xsl:variable>
+
+ <xsl:if test="@neg != '1' and $allowed_header">
+ <xsl:variable name="expr">
+ <xsl:choose>
+ <xsl:when test="@type = 'MATCH'">
+ <xsl:value-of select="@expr" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="string-pcre-escape">
+ <xsl:with-param name="text" select="@expr" />
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:text>^</xsl:text>
+ <xsl:value-of select="@header" />
+ <xsl:text>:.*</xsl:text>
+ <xsl:call-template name="string-char-escape">
+ <xsl:with-param name="text" select="$expr" />
+ </xsl:call-template>
+ <xsl:text>
+</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="string-pcre-escape">
+ <xsl:param name="text" />
+ <xsl:call-template name="string-translate-all">
+ <xsl:with-param name="text" select="$text" />
+ <xsl:with-param name="replace" select="'.|+'" />
+ <xsl:with-param name="by" select="'\.|\+'" />
+ <xsl:with-param name="separator" select="'|'" />
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template name="string-char-escape">
+ <xsl:param name="text" />
+ <xsl:call-template name="string-translate-all">
+ <xsl:with-param name="text" select="$text" />
+ <xsl:with-param name="replace" select="'ä|ë|é|é |ö|ü| '" />
+ <xsl:with-param name="by" select="'.+|.+|.+|.+|.+|.+|.+'" />
+ <xsl:with-param name="separator" select="'|'" />
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template name="string-translate-all">
+ <xsl:param name="text" />
+ <xsl:param name="replace" />
+ <xsl:param name="by" />
+ <xsl:param name="separator" />
+ <xsl:choose>
+ <xsl:when test="$separator and contains($replace, $separator)">
+ <xsl:variable name="text2">
+ <xsl:call-template name="string-translate-all">
+ <xsl:with-param name="text" select="$text" />
+ <xsl:with-param name="replace"
+ select="substring-before($replace, $separator)" />
+ <xsl:with-param name="by"
+ select="substring-before($by, $separator)" />
+ <xsl:with-param name="separator" select="$separator" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:call-template name="string-translate-all">
+ <xsl:with-param name="text" select="$text2" />
+ <xsl:with-param name="replace"
+ select="substring-after($replace, $separator)" />
+ <xsl:with-param name="by"
+ select="substring-after($by, $separator)" />
+ <xsl:with-param name="separator" select="$separator" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="contains($text, $replace)">
+ <xsl:value-of select="substring-before($text,$replace)" />
+ <xsl:value-of select="$by" />
+ <xsl:call-template name="string-replace-all">
+ <xsl:with-param name="text"
+ select="substring-after($text,$replace)" />
+ <xsl:with-param name="replace" select="$replace" />
+ <xsl:with-param name="by" select="$by" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$text" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="string-replace-all">
+ <xsl:param name="text" />
+ <xsl:param name="replace" />
+ <xsl:param name="by" />
+ <xsl:choose>
+ <xsl:when test="contains($text, $replace)">
+ <xsl:value-of select="substring-before($text, $replace)" />
+ <xsl:value-of select="$by" />
+ <xsl:call-template name="string-replace-all">
+ <xsl:with-param name="text"
+ select="substring-after($text, $replace)" />
+ <xsl:with-param name="replace" select="$replace" />
+ <xsl:with-param name="by" select="$by" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$text" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
/live/tools/network/news/newsstat/scorefile2filters.xsl
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: live/tools/network/news/newsstat/scorefile2filters.py
===================================================================
--- live/tools/network/news/newsstat/scorefile2filters.py (nonexistent)
+++ live/tools/network/news/newsstat/scorefile2filters.py (revision 198)
@@ -0,0 +1,14 @@
+#!/usr/bin/env python3
+
+from sys import argv
+from lxml import etree
+from os.path import dirname
+
+if __name__ == "__main__":
+ with open(argv[1]) as scorefile:
+ scorefile_tree = etree.parse(scorefile)
+ with open(dirname(argv[0]) + '/scorefile2filters.xsl') as stylesheet:
+ stylesheet_tree = etree.parse(stylesheet)
+ transform = etree.XSLT(stylesheet_tree)
+ filterfile_text = transform(scorefile_tree)
+ print(filterfile_text)
/live/tools/network/news/newsstat/scorefile2filters.py
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: live/tools/network/news/newsstat/newsstat.pl
===================================================================
--- live/tools/network/news/newsstat/newsstat.pl (nonexistent)
+++ live/tools/network/news/newsstat/newsstat.pl (revision 198)
@@ -0,0 +1,1089 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+require 5.004;
+
+#use diagnostics;
+use utf8;
+
+## NOTE:
+## Enable and remove binmode when utf8::all has actually become lexically scoped
+# use utf8:all;
+
+use constant DEBUG => 0;
+
+## newsstat.pl
+## Copyright (C) 2011, 2012 Thomas Lahn <startrek@PointedEars.de>
+## Based on work by Garry Knight et al.
+##
+## This program is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+## Print out all text to STDOUT UTF-8 encoded
+binmode STDOUT, ':encoding(UTF-8)';
+binmode STDERR, ':encoding(UTF-8)';
+
+## L10n
+use locale ':not_characters';
+
+# setlocale( LC_MESSAGES, '' );
+require Number::Format;
+
+## i18n
+## FIXME: Automatically include resolved '.' in @INC
+# print join "\n", @INC;
+
+use Locale::TextDomain ('de.pointedears.newsstat');
+use POSIX ('locale_h');
+use Locale::Messages qw (bind_textdomain_filter
+ bind_textdomain_codeset
+ turn_utf_8_on);
+
+bind_textdomain_filter 'de.pointedears.newsstat', \&turn_utf_8_on;
+bind_textdomain_codeset 'de.pointedears.newsstat', 'utf-8';
+
+require Mail::Message;
+require DateTime;
+require DateTime::Format::Mail;
+
+# See comments in previous example
+my ( $thousands_sep, $mon_thousands_sep, $grouping, $decimal_point ) =
+ @{ localeconv() }{ 'thousands_sep', 'mon_thousands_sep', 'grouping',
+ 'decimal_point' };
+
+# Apply defaults if values are missing
+$thousands_sep = $mon_thousands_sep unless $thousands_sep;
+$thousands_sep = ' ' unless $thousands_sep;
+
+# grouping and mon_grouping are packed lists
+# of small integers (characters) telling the
+# grouping (thousand_seps and mon_thousand_seps
+# being the group dividers) of numbers and
+# monetary quantities. The integers' meanings:
+# 255 means no more grouping, 0 means repeat
+# the previous grouping, 1-254 means use that
+# as the current grouping. Grouping goes from
+# right to left (low to high digits). In the
+# below we cheat slightly by never using anything
+# else than the first grouping (whatever that is).
+my @grouping;
+if ($grouping)
+{
+ @grouping = unpack( "C*", $grouping );
+}
+else
+{
+ @grouping = (3);
+}
+
+## FIXME: Why don't the defaults work already?
+my $formatter = new Number::Format(
+ -decimal_point => $decimal_point,
+ -thousands_sep => $thousands_sep,
+ -kibi_suffix => ' KiB',
+ -mebi_suffix => ' MiB',
+ -gibi_suffix => ' GiB',
+
+ # -grouping => $grouping[0]
+);
+
+###################### USER CONFIGURATIONS ############################
+
+## The name of the group to do stats for
+my $newsgroup_name = $ARGV[0];
+$newsgroup_name // usage();
+
+## Check for removal flags
+my $ix;
+my $j;
+my %skipSec;
+my @skiplist;
+my $args = @ARGV;
+for ( $ix = 1 ; $ix < $args ; $ix++ )
+{
+ $j = $ix + 1;
+ if ( $ARGV[$ix] eq "-x" )
+ {
+ @skiplist = split( ",", $ARGV[$j] );
+ }
+ elsif ( $ARGV[$ix] =~ /-x(\d.*)/ )
+ {
+ @skiplist = split( ",", $1 );
+ }
+}
+foreach (@skiplist)
+{
+ $skipSec{$_} = 1;
+}
+
+## Leafnode users will want /var/spool/news for this variable.
+my $news = "/var/spool/news/";
+
+## Number of top or bottom posters to show
+my $topposters = 20;
+
+## Number of threads we want to know about
+my $topthreads = 20;
+
+## Number of cross-posted threads to show
+my $topcrossposts = 10;
+
+## Number of agents we list
+my $topagents = 10;
+
+## Number of time zones to show
+my $toptz = 10;
+
+###################### DATA STRUCTURES ######################
+my $group = $newsgroup_name;
+$group =~ s!\.!/!g;
+my %data; # name, count, agent, total, orig, quoted
+my $totsize = 0; # holds total sizes of all files
+my %crossposts; # group, count
+my %threads; # subject, count
+my $replies = 0; # total no. of replies
+my $origposts = 0; # total no. of original posts
+my %tz; # timezones by count
+my $earliest; # earliest article we have found
+my $latest; # latest article we have found
+my $totheader = 0; # total size of header material
+my $totbody = 0; # total size of body material
+my $totsig = 0; # total size of sig material
+my $totquoted = 0; # total size of quoted material
+my $totorig = 0; # total size of original material
+my $totalposts; # total no. of posts considered
+my %distinct_agent;
+
+## Used to hold counts of User Agents used
+my %agents = (
+ "Compuserver" => 0,
+ "Foorum" => 0,
+ "Forte Agent" => 0,
+ "Forte Free Agent" => 0,
+ "Gnus" => 0,
+ "KNode" => 0,
+ "MacSOUP" => 0,
+ "MT-NewsWatcher" => 0,
+ "MicroPlanet Gravity" => 0,
+ "Microsoft Outlook Express" => 0,
+ "Microsoft Windows Mail" => 0,
+ "Mozilla" => 0,
+ "News Rover" => 0,
+ "NN" => 0,
+ "Pan" => 0,
+ "rn" => 0,
+ "slrn" => 0,
+ "Sylpheed" => 0,
+ "tin" => 0,
+ "VSoup" => 0,
+ "WebTV" => 0,
+ "Xnews" => 0,
+);
+
+my $datetime_parser = DateTime::Format::Mail->new();
+$datetime_parser->loose();
+
+my $today = DateTime->today( time_zone => 'UTC' );
+my $prev_month = $today->clone()->subtract( months => 1 )->set_day(1);
+my $start = int $prev_month->strftime('%s');
+my $numdays = int DateTime->last_day_of_month(
+ year => $prev_month->year(),
+ month => $prev_month->month(),
+ time_zone => $prev_month->time_zone(),
+)->day();
+my $end = int $today->clone()->set_day(1)->strftime('%s');
+
+dmsg( $start, " to ", $end ) if DEBUG;
+
+chdir("$news$group")
+ or die __x(
+ "Can't cd to {newsgroup}: {error}\n",
+ newsgroup => "$news$group",
+ error => $!
+ );
+opendir( DIR, "." )
+ or die __x(
+ "Can't open {newsgroup}: {error}\n",
+ newsgroup => "$news$group",
+ error => $!
+ );
+
+while ( defined( my $filename = readdir(DIR) ) )
+{
+ next unless -f $filename; # only want real files
+ next if ( $filename eq ".overview" ); # real articles only
+
+ get_article($filename); # read in the article
+}
+closedir(DIR); # finished with the directory
+
+dmsg("\nearliest: $earliest\nlatest: $latest") if DEBUG;
+
+## Post-processing
+count_agents(); # count agents, collapsing versions
+fix_percent();
+
+write_data();
+display_results();
+
+########################################
+## Get current article's header and body
+########################################
+sub get_article
+{
+ my $filename = shift;
+
+ open( my $FILE, '<', $filename )
+ or
+ die __x( "Can't open {file}: {error}\n", file => $filename, error => $! );
+ my $msg = Mail::Message->read($FILE);
+ my $timestamp = $msg->timestamp();
+ my $date = $msg->study('Date');
+
+ ## Disregard article if timestamp is not in range
+ dmsg($timestamp) if DEBUG;
+ if ( $timestamp < $start || $timestamp >= $end )
+ {
+ dmsg("Posting on $date ignored.") if DEBUG;
+ return;
+ }
+
+ $totalposts++; # bump count of articles considered
+
+ ## DEBUG
+ dmsg($date) if DEBUG;
+
+ ## get stats about the file itself
+ my $filesize = -s $filename; # get total size of file
+ $totsize += $filesize; # bump total sizes of all files
+
+ if ( ( not defined $earliest ) || $timestamp < $earliest )
+ {
+ $earliest = $timestamp;
+ }
+ elsif ( ( not defined $latest ) || $timestamp > $latest )
+ {
+ $latest = $timestamp;
+ }
+
+ #print "timestamp: $timestamp\n";
+
+ ## count header size
+ $totheader += $msg->head()->size();
+
+ ## get the poster's name (MIME-decoded, in UTF-8)
+ my $poster = $msg->study('From');
+ if ( defined $poster )
+ {
+ ## Convert old to new format
+ $poster =~ s/^\s*(.+?\@.+?)\s*\((.+?)\)\s*$/$2 <$1>/;
+
+ ## Collapse whitespace
+ $poster =~ s/\s+/ /g;
+
+ ## Remove outer quotes; TODO: observe RFC 5322 strictly
+ $poster =~ s/^ " (.+ ) " \s+ (.*)/$1 $2/x;
+
+ ## DEBUG
+ dmsg($poster) if DEBUG;
+
+ ## seen this one before?
+ if ( !defined( $data{$poster} ) )
+ {
+ $data{$poster}{'agent'} = __ 'unknown'; # comes after For: field
+ $data{$poster}{'orig'} = 0;
+ $data{$poster}{'quoted'} = 0;
+ }
+ $data{$poster}{'count'}++; # bump count for this poster
+ $data{$poster}{'size'} += $filesize; # total size of file
+
+ ## The User-Agent and/or X-Newsreader fields
+ ## for User-Agent by poster
+ my $ua = $msg->study('User-Agent') // $msg->study('X-Newsreader');
+ if ( defined $ua )
+ {
+ $data{$poster}{'agent'} = $ua;
+
+ ## DEBUG
+ dmsg($ua) if DEBUG;
+ }
+
+ ## The User Agent for User-Agent by number of articles
+ get_agent($msg);
+
+ ## Get all cross-posted newsgroups
+ for ( split( /,/, $msg->study('Newsgroups') ) )
+ {
+ $crossposts{$_}++; # bump count for each
+ }
+
+ ## Get threads
+ my $thread = $msg->study('Subject');
+ $thread =~ s/^\s*re:\s*//i; # Remove Re: or re: at the start
+ $thread =~ s/\s*\(was:\s*.*\)\s*$//i; # Remove (was: ...) at the end
+ $thread =~ s/\s+/ /g; # collapse whitespace
+ $threads{$thread}{'count'}++; # bump count of this subject
+ $threads{$thread}{'size'} += $filesize; # bump bytes for this thread
+
+ ## Is this an original post or a reply?
+ if ( defined $msg->study('References') )
+ {
+ $replies++;
+ }
+ else
+ {
+ $origposts++;
+ }
+
+ ## Get the time zone
+ my $datetime = $datetime_parser->parse_datetime($date);
+ my $tz = $datetime->strftime('%z');
+ $tz = "UTC" if $tz =~ m{^(?:GMT|0000)$}o;
+ $tz{$tz}++;
+
+ ## DEBUG
+ dmsg($tz) if DEBUG;
+
+#### Now analyse the body text ####
+ my $body = $msg->body();
+
+ my $insig = 0;
+ my @body = $body->lines;
+ for (@body)
+ {
+ $totbody += length($_); # bump total body size
+ next if (m{^$>}o); # don't count blank lines in body
+ if ( $insig == 1 )
+ {
+
+ # bump total sig size
+ $totsig += length($_);
+ }
+ ## are we in a quote line?
+ ## Bill Unruh uses ] quotes, and another poster uses ::
+ elsif ( m{^\s*[>\]]}o || m{^\s*::}o )
+ {
+ ## bump count of quoted chrs
+ $data{$poster}{'quoted'} += length($_);
+ $totquoted += length($_);
+ }
+ elsif (/^-- $/)
+ {
+ $insig = 1;
+ }
+ else
+ {
+ ## We must be processing an original line
+ $data{$poster}{'orig'} += length($_); # bump count of original chrs
+ $totorig += length($_);
+ }
+ }
+
+ # end for (@body)
+ }
+
+ close($FILE);
+}
+
+sub get_agent
+{
+ my $msg = shift;
+
+ my $ua = $msg->study('User-Agent') // $msg->study('X-Newsreader')
+ // $msg->study('X-Mailer');
+
+ if ( not defined $ua )
+ {
+ my $org = $msg->study('Organization');
+ if ( defined $org
+ and $org =~ /groups\.google|AOL|Supernews|WebTV|compuserve/ )
+ {
+ $ua = $org;
+ }
+ elsif ( $msg->study('Message-ID') =~ /pine/i )
+ {
+ $ua = "Pine";
+ }
+ }
+
+ ## Hopefully found UA, else set to unknown
+ if ( not defined $ua )
+ {
+ $ua = __ "unknown";
+ }
+
+ $ua = clean($ua);
+
+ my $raw = $ua;
+ my $agent = $raw;
+
+ ## strip http
+ if ( $raw =~ /.*http.*/ )
+ {
+ $raw =~ s!posted via!!i;
+ $raw =~ s!http://!!g;
+ $raw =~ s!/!!g;
+ $raw =~ s! !!g;
+ }
+
+ ## Fix Outlook from Mac
+ if ( $raw =~ /^microsoft/i )
+ {
+ $raw =~ s/-/ /g;
+ }
+
+ ## Pick out the popular agents
+ if ( $raw =~ /(outlook express)/i
+ || $raw =~ /(windows mail)/i
+ || $raw =~ /(microplanet gravity)/i
+ || $raw =~ /(news rover)/i
+ || $raw =~ /(forte agent)/i
+ || $raw =~ /(forte free agent)/i )
+ {
+ $agent = $1;
+ }
+ elsif (
+ $raw =~ /^(
+ pan
+ |sylpheed
+ |slrn
+ |mozilla
+ |knode
+ |tin
+ |hamster
+ |xrn
+ |xnews
+ |aol
+ |gnus
+ |krn
+ |macsoup
+ |messenger
+ |openxp
+ |pine
+ |thoth
+ |turnpike
+ |winvn
+ |vsoup
+ |google
+ |supernews
+ |nn
+ |rn
+ |007
+ |webtv
+ |compuserve
+ )/ix
+ )
+ {
+ $agent = $1;
+ }
+ else
+ {
+ ## Clean up unknown agents
+ if ( $raw =~ m!^(.*?)/! )
+ {
+ $agent = $1;
+ }
+ elsif ( $raw =~ /^(\w*)\d.*/ )
+ {
+ $agent = $1;
+ }
+ }
+
+ $distinct_agent{$agent}++;
+ return $agent;
+}
+## get_agent
+
+#########################################
+## Count the User-Agents used, collapsing
+## different versions into one per agent.
+#########################################
+sub count_agents
+{
+POSTER:
+ foreach my $poster ( keys %data )
+ {
+ foreach my $agent_name ( keys %distinct_agent )
+ { # check against known ones
+ if ( $data{$poster}{'agent'} =~ /\Q$agent_name\E/ )
+ {
+ $agents{$agent_name}++;
+ next POSTER;
+ }
+ }
+ $agents{ $data{$poster}{'agent'} }++;
+ }
+} # count_agents
+
+#############################################
+## Set orig/total percentages for all posters
+#############################################
+sub fix_percent
+{
+ foreach my $poster ( keys %data )
+ {
+ my $percent = 100;
+ if ( ( $data{$poster}{'orig'} != 0 ) and ( $data{$poster}{'quoted'} != 0 ) )
+ {
+ $percent =
+ $data{$poster}{'orig'} * 100 /
+ ( $data{$poster}{'quoted'} + $data{$poster}{'orig'} ); #/
+ }
+ elsif ( $data{$poster}{'orig'} == 0 )
+ {
+ $percent = 0;
+ }
+ $data{$poster}{'percent'} = $percent;
+ }
+}
+## fix_percent
+
+##################################
+## Write data structures to a file
+##################################
+sub write_data
+{
+ open( my $OUTF, ">:encoding(UTF-8)", "/tmp/XDATA" )
+ or die __x( "Can't create XDATA: {error}\n", error => $! );
+ print $OUTF "Data collected from $newsgroup_name\n\n";
+ print $OUTF
+ "Poster Data\nname : agent : count : size: orig : quoted : per cent\n";
+ foreach my $name ( keys %data )
+ {
+ print $OUTF
+"$name : $data{$name}{'agent'} : $data{$name}{'count'} : $data{$name}{'size'} : $data{$name}{'orig'} : $data{$name}{'quoted'} : $data{$name}{'percent'}\n";
+ }
+ print $OUTF
+"============================================================================\n";
+ print $OUTF "Thread subjects\n";
+ print $OUTF
+"----------------------------------------------------------------------------\n";
+ foreach my $thread ( sort { "\L$a" cmp "\L$b" } keys %threads )
+ {
+ print $OUTF
+ "$thread : $threads{$thread}{'count'} : $threads{$thread}{'size'}\n";
+ }
+ print $OUTF
+"============================================================================\n";
+ print $OUTF "Cross-posts\n";
+ print $OUTF
+"----------------------------------------------------------------------------\n";
+ foreach my $name ( sort keys %crossposts )
+ {
+ print $OUTF "$name : $crossposts{$name}\n";
+ }
+ print $OUTF
+"============================================================================\n";
+ print $OUTF "User agents\n";
+ print $OUTF
+"----------------------------------------------------------------------------\n";
+ foreach my $name ( sort keys %agents )
+ {
+ print $OUTF "$name : $agents{$name}\n";
+ }
+ print $OUTF
+"============================================================================\n";
+ print $OUTF "Time zones\n";
+ print $OUTF
+"----------------------------------------------------------------------------\n";
+ foreach my $name ( sort keys %tz )
+ {
+ print $OUTF "$name : $tz{$name}\n";
+ }
+ close $OUTF;
+} # write_data
+
+sub display_results
+{
+ #################### DISPLAY RESULTS #####################
+ print "=" x 76, "\n";
+ printf "%s\n",
+ centred(
+ __x( "Analysis of articles to {newsgroup}", newsgroup => $newsgroup_name ),
+ 76
+ );
+ print "=" x 76, "\n";
+ printf "%s\n",
+ centred(
+ __(
+"(compiled with a script by Thomas 'PointedEars' Lahn, based on work by\nGarry Knight et al.)"
+ ),
+ 76
+ );
+ print "\n";
+ printf __"Total articles considered: %s over %d days\n",
+ $formatter->format_number($totalposts),
+ $formatter->format_number($numdays);
+ my $time_locale = setlocale(LC_TIME);
+ my $earliest_datetime = DateTime->from_epoch(
+ epoch => $earliest,
+ locale => $time_locale,
+ time_zone => 'UTC',
+ );
+ my $latest_datetime = DateTime->from_epoch(
+ epoch => $latest,
+ locale => $time_locale,
+ time_zone => 'UTC',
+ );
+ my $datetime_format = '%a, %Y-%m-%dT%H:%M:%S %Z';
+ printf __"Earliest article: %s" . "\n",
+ $earliest_datetime->strftime($datetime_format);
+ printf __"Latest article: %s" . "\n",
+ $latest_datetime->strftime($datetime_format);
+ printf __"Original articles: %s; replies: %s" . "\n",
+ $formatter->format_number($origposts),
+ $formatter->format_number($replies);
+ printf __"Total size of articles: %s bytes (%s)" . "\n",
+ $formatter->format_number($totsize),
+ $formatter->format_bytes( $totsize, ( 'precision' => 1, 'mode' => 'iec' ) );
+ printf __"Average %s articles per day, %s per day, %s bytes per article.\n",
+ $formatter->format_number( int( $totalposts / $numdays ) ),
+ $formatter->format_bytes( $totsize / $numdays, ( 'mode' => 'iec' ) ),
+ $formatter->format_number( int( $totsize / $totalposts ) );
+
+ my $count = keys %data;
+ print "\n";
+ printf __"Total headers: %s; bodies: %s\n",
+ $formatter->format_bytes(
+ $totheader, ( 'precision' => 1, 'mode' => 'iec' )
+ ),
+ $formatter->format_bytes( $totbody, ( 'precision' => 1, 'mode' => 'iec' ) );
+ printf __
+ "Body text - quoted: %s; original: %s = %s%%; sigs: %s\n",
+ $formatter->format_bytes(
+ $totquoted, ( 'precision' => 1, 'mode' => 'iec' )
+ ),
+ $formatter->format_bytes( $totorig, ( 'precision' => 1, 'mode' => 'iec' ) ),
+ $formatter->format_number( ( $totorig * 100 ) / ( $totorig + $totquoted ) )
+ ,
+ $formatter->format_bytes( $totsig, ( 'precision' => 1, 'mode' => 'iec' ) );
+ print "\n";
+ printf __"Total number of posters: %s, average %s per poster\n",
+ $formatter->format_number($count),
+ $formatter->format_bytes( $totsize / $count,
+ ( 'precision' => 1, 'mode' => 'iec' ) );
+ $count = keys %threads;
+ printf __"Total number of threads: %s, average %s per thread\n",
+ $formatter->format_number($count),
+ $formatter->format_bytes( $totsize / $count,
+ ( 'precision' => 1, 'mode' => 'iec' ) );
+ printf __"Total number of user agents: %d\n",
+ $formatter->format_number( scalar keys %agents );
+ print "\n", "=" x 76, "\n";
+ ########################################
+ ## Show posters by article count Sec 1;
+ ########################################
+ unless ( $skipSec{1} )
+ {
+ if ( keys %data < $topposters )
+ {
+ $count = keys %data;
+ }
+ else
+ {
+ $count = $topposters;
+ }
+ printf "%s\n",
+ centred(
+ __x( "Top {count} posters by number of articles", count => $topposters ),
+ 76
+ );
+ print "=" x 76, "\n";
+ my $i = 0;
+ foreach
+ my $poster ( sort { $data{$b}{count} <=> $data{$a}{count} } keys %data )
+ {
+ my $name = substr( $poster, 0, 65 );
+ printf "%2d. %-63s : %6d\n", $i + 1, rpad( $poster, 63, "." ),
+ $data{$poster}{count};
+ last if ( ++$i == $count );
+ }
+ print "\n", "=" x 76, "\n";
+ }
+
+ ######################################
+ ## Show posters by size in KiB Sec 2;
+ ######################################
+ unless ( $skipSec{2} )
+ {
+ if ( keys %data < $topposters )
+ {
+ $count = keys %data;
+ }
+ else
+ {
+ $count = $topposters;
+ }
+ printf "%s\n",
+ centred(
+ __x( "Top {count} posters by article size in KiB", count => $topposters ),
+ 76
+ );
+ print "=" x 76, "\n";
+ my $i = 0;
+ foreach
+ my $poster ( sort { $data{$b}{size} <=> $data{$a}{size} } keys %data )
+ {
+ my $name = substr( $poster, 0, 62 );
+ printf "%2d. %-63s : %6d\n", $i + 1, rpad( $poster, 63, "." ),
+ $data{$poster}{size} / 1024; #/
+ last if ( ++$i == $count );
+ }
+ print "\n", "=" x 76, "\n";
+ }
+
+ #####################################
+ ## Show top posters for original text
+ #####################################
+ my $topposters_real = 0;
+
+ unless ( $skipSec{3} )
+ {
+ if ( keys %data < $topposters )
+ {
+ $count = keys %data;
+ }
+ else
+ {
+ $count = $topposters;
+ }
+
+ printf "%s\n",
+ centred(
+ __x(
+ "Top {count} responders by original text (> 5 articles)",
+ count => $topposters
+ ),
+ 76
+ );
+ print "=" x 76, "\n";
+ foreach my $poster (
+ sort { $data{$b}{percent} <=> $data{$a}{percent} }
+ keys %data
+ )
+ {
+ next if $data{$poster}{quoted} == 0;
+ next if $data{$poster}{count} < 5;
+ my $name = substr( $poster, 0, 63 );
+ printf "%2d. %-63s : %02.2f%%\n", $topposters_real + 1,
+ rpad( $poster, 63, "." ),
+ $data{$poster}{percent};
+ last if ( ++$topposters_real == $count );
+ }
+ print "\n", "=" x 76, "\n";
+ }
+
+ ########################################
+ ## Show bottom posters for original text
+ ########################################
+
+ $skipSec{4} = ( $topposters_real <= $topposters ) unless defined $skipSec{4};
+
+ unless ( $skipSec{4} )
+ {
+ if ( keys %data < $topposters )
+ {
+ $count = keys %data;
+ }
+ else
+ {
+ $count = $topposters;
+ }
+
+ printf "%s\n",
+ centred(
+ __x(
+ "Bottom {count} responders by original text (> 5 articles)",
+ count => $topposters
+ ),
+ 76
+ );
+ print "=" x 76, "\n";
+ my $i = 0;
+ foreach my $poster (
+ sort { $data{$a}{percent} <=> $data{$b}{percent} }
+ keys %data
+ )
+ {
+ next if $data{$poster}{quoted} == 0;
+ next if $data{$poster}{count} < 5;
+ my $name = substr( $poster, 0, 63 );
+ printf "%2d. %-63s : %02.2f%%\n", $i + 1, rpad( $poster, 63, "." ),
+ $data{$poster}{percent};
+ last if ( ++$i == $count );
+ }
+ print "\n", "=" x 76, "\n";
+ }
+
+ #####################################
+ ## Show threads by number of articles
+ #####################################
+ unless ( $skipSec{5} )
+ {
+ if ( keys %threads < $topthreads )
+ {
+ $count = keys %threads;
+ }
+ else
+ {
+ $count = $topthreads;
+ }
+ printf "%s\n",
+ centred(
+ __x( "Top {count} threads by no. of articles", count => $topthreads ),
+ 76 );
+ print "=" x 76, "\n";
+ my $i = 0;
+ foreach my $thread (
+ sort { $threads{$b}{'count'} <=> $threads{$a}{'count'} }
+ keys %threads
+ )
+ {
+ my $name = substr( $thread, 0, 65 );
+ printf "%2d. %-63s : %6d\n", $i + 1, rpad( $name, 63, "." ),
+ $threads{$thread}{'count'};
+ last if ( ++$i == $count );
+ }
+ print "\n", "=" x 76, "\n";
+ }
+
+ ##############################
+ ## Show threads by size in KiB
+ ##############################
+ unless ( $skipSec{6} )
+ {
+ if ( keys %threads < $topthreads )
+ {
+ $count = keys %threads;
+ }
+ else
+ {
+ $count = $topthreads;
+ }
+ printf "%s\n",
+ centred(
+ __x( "Top {count} threads by size in KiB", count => $topthreads ), 76 );
+ print "=" x 76, "\n";
+ my $i = 0;
+ foreach my $thread (
+ sort { $threads{$b}{'size'} <=> $threads{$a}{'size'} }
+ keys %threads
+ )
+ {
+ my $name = substr( $thread, 0, 65 );
+ printf "%2d. %-63s : %6d\n", $i + 1, rpad( $name, 63, "." ),
+ $threads{$thread}{'size'} / 1024; #/
+ last if ( ++$i == $count );
+ }
+ print "\n", "=" x 76, "\n";
+ }
+
+ ##################################
+ ## Show top 10 cross-posted groups
+ ##################################
+ unless ( $skipSec{7} )
+ {
+ delete $crossposts{"$newsgroup_name"}; # don't include ours
+ if ( keys %crossposts < $topcrossposts )
+ {
+ $count = keys %crossposts;
+ }
+ else
+ {
+ $count = $topcrossposts;
+ }
+ printf "%s\n",
+ centred(
+ __x( "Top {count} cross-posted groups", count => $topcrossposts ), 76 );
+ print "=" x 76, "\n";
+ my $i = 0;
+ foreach
+ my $name ( sort { $crossposts{$b} <=> $crossposts{$a} } keys %crossposts )
+ {
+ printf "%2d. %-63s : %6d\n", $i + 1, rpad( $name, 63, "." ),
+ $crossposts{$name};
+ last if ( ++$i == $count );
+ }
+ print "\n", "=" x 76, "\n";
+ }
+
+ #########################
+ ## Show agents and counts
+ #########################
+ unless ( $skipSec{8} )
+ {
+ if ( keys %agents < $topagents )
+ {
+ $count = keys %agents;
+ }
+ else
+ {
+ $count = $topagents;
+ }
+ printf "%s\n",
+ centred( __x( "Top {count} user agents by poster", count => $topagents ),
+ 76 );
+ print "=" x 76, "\n";
+ my $i = 0;
+ foreach my $agent ( sort { $agents{$b} <=> $agents{$a} } keys %agents )
+ {
+ printf "%2d. %-63s : %6d\n", $i + 1, rpad( $agent, 63, "." ),
+ $agents{$agent};
+ last if ( ++$i == $count );
+ }
+ print "\n", "=" x 76, "\n";
+ }
+
+ #######################
+ ## Show distinct agents
+ #######################
+ unless ( $skipSec{9} )
+ {
+ if ( keys %distinct_agent < $topagents )
+ {
+ $count = keys %distinct_agent;
+ }
+ else
+ {
+ $count = $topagents;
+ }
+ printf "%s\n",
+ centred(
+ __x(
+ "Top {count} user agents by number of articles",
+ count => $topagents
+ ),
+ 76
+ );
+ print "=" x 76, "\n";
+ my $i = 0;
+ foreach my $agent (
+ sort { $distinct_agent{$b} <=> $distinct_agent{$a} }
+ keys %distinct_agent
+ )
+ {
+ printf "%2d. %-58s : %5d (%2.f%%)\n", $i + 1, rpad( $agent, 58, "." ),
+ $distinct_agent{$agent},
+ ( ( $distinct_agent{$agent} / $totalposts ) * 100 );
+ last if ( ++$i == $count );
+ }
+ print "\n", "=" x 76, "\n";
+ }
+
+ ############################
+ ## Show timezones and counts
+ ############################
+ unless ( $skipSec{10} )
+ {
+ if ( keys %tz < $toptz )
+ {
+ $count = keys %tz;
+ }
+ else
+ {
+ $count = $toptz;
+ }
+ printf "%s\n",
+ centred(
+ __x( "Top {count} time zones by number of articles", count => $toptz ),
+ 76 );
+ print "=" x 76, "\n";
+ my $i = 0;
+ foreach my $zone ( sort { $tz{$b} <=> $tz{$a} } keys %tz )
+ {
+ printf "%2d. %-63s : %6d\n", $i + 1, rpad( $zone, 63, "." ), $tz{$zone};
+ last if ( ++$i == $count );
+ }
+ print "\n", "=" x 76, "\n";
+ }
+}
+
+## helper subs
+
+###############################
+## Right pad a string with '.'s
+###############################
+sub rpad
+{
+ ## Get text to pad, length to pad, pad chr
+ my ( $text, $pad_len, $pad_chr ) = @_;
+
+ ## DEBUG
+ printf( "|%s| = %d\n", $text, length($text) ) if DEBUG > 1;
+
+ if ( length($text) > $pad_len )
+ {
+ $text = substr( $text, 0, $pad_len );
+ }
+ my $padded = $text . $pad_chr x ( $pad_len - length($text) );
+ return $padded;
+}
+
+##################
+## Centre a string
+##################
+sub centred
+{
+ my ( $text, $width ) = @_; # text to centre, size of field to centre in
+ my $pad_len = ( $width - length($text) ) / 2; #/
+ my $centred = " " x $pad_len . $text;
+ return $centred;
+}
+
+###########################
+## Put commas into a number
+###########################
+sub commify
+{
+ local $_ = shift;
+ my $number = $_;
+ $_ = int; # Chop non-integer part
+ 1 while
+ s/([-+]?\d)(\d{$grouping[0]}($|\Q$thousands_sep\E))/$1$thousands_sep$2/;
+ my $int_part = $_;
+ my $real_part = '';
+ if ( $number =~ /(\Q$decimal_point\E\d+)$/ )
+ {
+ $real_part = $1;
+ }
+ return $int_part . $real_part;
+}
+
+################################################################
+## Returns a string with leading and trailing whitespace removed
+################################################################
+sub clean
+{
+ my $dirty = shift;
+ my $clean = $dirty;
+ $clean =~ s/^\s+|\s+$//g;
+
+ return $clean;
+}
+
+sub usage
+{
+ print __ "usage: newsstat.pl NEWS.GROUP", "\n";
+ exit 1;
+}
+
+sub dmsg
+{
+ print STDERR @_, "\n";
+}
+
+sub dmsg2
+{
+ my ( $level, @msg ) = @_;
+ print STDERR @msg, "\n" if $level >= DEBUG;
+}
/live/tools/network/news/newsstat/newsstat.pl
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: live/tools/network/news/newsstat/ChangeLog
===================================================================
--- live/tools/network/news/newsstat/ChangeLog (nonexistent)
+++ live/tools/network/news/newsstat/ChangeLog (revision 198)
@@ -0,0 +1,64 @@
+Changelog
+==========
+
+2011-10-04 PE
+ - Added diagnostics (just in case)
+ - Use `binmode STDOUT' instead of `use encoding' (compat.)
+ - Documentation update, moved changelog and TODO to files
+ - `##' for leading comments to handle dev artifacts better
+ - Sorted supported newsreaders alphabetically
+ - Added support for Microsoft Windows Mail (OE successor)
+ - Use uniform sub identifiers (words delimited with `_')
+ - Use ISO/IEC units of data storage (KiB, MiB) uniformly
+ - Space after header field's `:' are optional now,
+ see RFC 5536, section 2.2 ("MAY")
+ - Convert old `From' format to new one, collapse whitespace,
+ remove outer ("protocol") quotes
+ - Seconds are optional in `Date' header field values now,
+ see grammar in RFC 5322, section 3.3 (ref. by RFC 5536, 2.2)
+ - commify() adapted to perlfaq5
+ - clean(): Simplified whitespace stripping
+ - write_data(): writes XDATA using UTF-8, removed bogus print()
+ - Fixed all Perl::Critic-ized code except nested get_agent()
+
+2011-10-03 PE
+ - Use more compatible shebang
+ - Fixed some Perl::Critic-ized code
+ - Fixed wrong indent for non-ASCII names
+ - Formatted source code
+
+2011-07-03 PE
+ - Use Encode to decode/encode MIME encodings
+ - Use warnings, utf8 (just in case)
+ - Documentation update
+
+N/A NN
+ - Take newsgroup name as argument
+
+2004-06-19 NN
+ - newsgroup name is $ARGV[0]
+ - Allow command line flags for subtracting
+ output if not pertinent for a group
+
+2002-11-09 NN
+ - Put Garry's writedata() function back in.
+ - added "rn" to my list of UA's
+ - Started using %distinct_agent for both User agent
+ sections
+ - named it newsstat.pl version 0.3
+
+2002-11-06 NN
+ - Fixed the earliest/latest file problem by using
+ mtime rather than ctime, and simplifying the logic
+
+2002-11-05 NN
+ - moved user configurations to the top
+ - fixed the cross-posting section
+ - introduced the $newsgroup_name variable which
+ later becomes $news$group
+ - changed $name to $agent_name in countagents()
+
+Contributors
+-------------
+NN Nomen nominandum (name to be determined later)
+PE Thomas 'PointedEars' Lahn <startrek@PointedEars.de>
Index: live/tools/network/news/newsstat/TODO
===================================================================
--- live/tools/network/news/newsstat/TODO (nonexistent)
+++ live/tools/network/news/newsstat/TODO (revision 198)
@@ -0,0 +1,17 @@
+########### TODO #############
+# Commas in bottom section of report
+# Show date the figures were compiled
+# No. of HTML articles (Content-Type: text/html)
+# No. of quoted sigs (/>\s*-- /)
+# Per cent of top-posted articles
+# Top 10 cross-posters
+# Top 20 news posting hosts (from Path)
+# Count of certain subject words: newbie, kde, burner, sendmail, etc.
+# Count *all* User Agents that each poster uses
+# What do we do about Bill Unruh's ] quote style?
+# Change the way dates/times are checked
+# include % share in posters by no. of arts
+# include % share in posters by size
+# Total, orig & quoted lines by user agent with per cent
+# Take more arguments
+#######################################################
Index: live/tools/network/news/newsstat
===================================================================
--- live/tools/network/news/newsstat (nonexistent)
+++ live/tools/network/news/newsstat (revision 198)
/live/tools/network/news/newsstat
Property changes:
Added: svn:ignore
## -0,0 +1,3 ##
+
+
+LocaleData
Index: live/tools/multimedia/dvd/dvdsubtitles/dvdsubtitles.sh
===================================================================
--- live/tools/multimedia/dvd/dvdsubtitles/dvdsubtitles.sh (nonexistent)
+++ live/tools/multimedia/dvd/dvdsubtitles/dvdsubtitles.sh (revision 198)
@@ -0,0 +1,647 @@
+#!/bin/sh
+appname="${0##*/}"
+ver="0.6.1.2007011316"
+copy="2005-2007"
+mail_feedback="dvd@PointedEars.de"
+# ----------------------------------------------------------------------------
+# DVD Subtitles 0.6.1 -- Extracts subtitles from DVD-Video data to a text file
+# Copyright (C) 2005, 2006 Thomas Lahn <PointedEars@gmx.de>
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License (GPL) as published
+# by the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU GPL along with this
+# program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+## Standard shell script disclaimer blurb thing:
+##
+## This script is a hack. It's brute force. It's horrible.
+## It doesn't use Artificial Intelligence. It doesn't use Virtual Reality.
+## It's not perl. It's not python. It probably won't work unchanged on
+## the "other" thousands of unices. But it worksforme. --ramiro
+# (from /usr/local/mozilla/run-mozilla.sh)
+#
+# This is work in progress. If you have an improvement, patch,
+# idea, whatever, on how to make this script better, please
+# send it to <dvd@PointedEars.de>
+
+_title ()
+{
+ echo "\
+${extd}DVD Subtitles $ver
+Copyright (C) $copy Thomas Lahn <$mail_feedback>$norm
+Distributed under the terms of the GNU General Public License (GPL), see
+COPYING file or http://www.gnu.org/licenses/licenses.html#GPL for details.
+"
+}
+
+_help ()
+{
+ echo "\
+Extracts a subtitle stream from DVD-Video data and converts it to a text file.
+
+$extd$appname$norm [options] ${ital}SOURCE$norm
+
+Deprecated:
+ $extd$appname$norm [$extd-hVkl$norm] [${ital}SOURCE$norm [${ital}TITLE$norm\
+ [${ital}SUBTITLE$norm [${ital}TARGET$norm [${ital}GREY_LEVELS$norm]]]]]
+
+Any option argument is overwritten by the respective additional program
+argument. Options may be given in any order, and are also considered
+options if located after the first program argument. Too many program
+arguments are silently ignored.
+
+$extd-c$norm, $extd--compile$norm ${ital}FILE$norm | ${ital}DIRECTORY$norm
+ Compile subtitle text files according to subtitle index\
+ ${ital}FILE$norm
+ or to subtitle index files in ${ital}DIRECTORY$norm to\
+ ${ital}TARGET$norm. Clean up
+ if this is successful, then exit.
+
+$extd-k$norm, $extd--keep$norm Keep subtitle stream file even if\
+ conversion is successful.
+
+$extd-l$norm, $extd--list$norm List subtitles for TITLE using\
+ ${extd}mplayer$norm(1) and exit.
+ If TITLE is not provided or \`$extd-$norm', list subtitles for
+ title #2 (as title #1 may be an intro without subtitles)
+ and exit.
+
+SOURCE Video DVD data source, i.e. a device (usually /dev/dvd),
+ a directory (e.g. one containing content created via
+ ${extd}dvdbackup$norm(1)) or a Video DVD image file.
+ If \`$extd-$norm', a previously created subtitle stream file\
+ named
+ ${extd}subtitle_stream-$norm*$extd-${norm}TITLE${extd}-${norm}SUBTITLE\
+ in the current working
+ directory will be used for only the stream-to-graphics-
+ to-text conversion instead. Both TITLE and SUBTITLE
+ must not be \`$extd-$norm' in that case.
+ The default is \`$extd/dev/dvd$norm'.
+
+$extd-t$norm, $extd--title$norm
+ TITLE Number of the title (1-n) which will be accessed for
+ subtitle stream extraction. If left out or \`$extd-$norm', the
+ program uses ${extd}mplayer$norm(1) to detect how many titles are
+ available on the DVD data source and asks for the
+ title to be accessed.
+
+$extd-s$norm, $extd--subtitle-id$norm
+ SUBTITLE ID of the subtitle stream to be extracted (0-n).
+ If left out or \`$extd-$norm', the program uses its\
+ ${extd}-l$norm option to detect
+ which subtitles are available for the given TITLE and asks
+ for the ID to be used.
+
+$extd-o$norm, $extd--output-target$norm
+ TARGET Name of the resulting subtitles text file.
+ If not provided, the file is named after the subtitle stream
+ file. NOTE: Unlike previous versions, this version appends
+ the filename suffix $extd.srt$norm automagically ONLY in that\
+ case.
+
+$extd-g$norm, $extd--grey-levels$norm
+ GREY_LEVELS Optional grey-levels value\
+ (\`c0$extd,${norm}c1$extd,${norm}c2$extd,${norm}c3' with 0 <= cN <= 255,
+ where 0 is black and 255 is white) to be used for converting
+ the subtitle stream graphics to text via OCR. The default is
+ \`${extd}255,255,0,255$norm'. Unfortunately, the\
+ ${extd}subtitle2pgm$norm program,
+ which requires this value, appears to be poorly documented;
+ if you find a more detailed, working documentation, please
+ refer to it and inform this program's author about it.
+
+$extd-h$norm, $extd--help$norm Display this help and exit.
+$extd-v$norm, $extd--verbose$norm Be verbose. The number of ${extd}-v$norm\
+ options specify the level of
+ verbosity.
+$extd-V$norm, $extd--version$norm Display version information and exit.
+
+${extd}EXIT STATUS$norm
+ ${extd} 0$norm Successful program execution
+ ${extd} 1$norm Error detecting/extracting subtitle stream, or cancelled
+ without selecting a title number or subtitle ID
+ ${extd} 2$norm Unable to convert subtitle stream to image files
+ ${extd} 3$norm Cancelled due to ${extd}gocr$norm(1) error or without\
+ entering another
+ grey-levels value
+ ${extd} 4$norm Unable to compile to text file
+ ${extd} 5$norm Unable to clean up
+ ${extd}127$norm Insufficient number of arguments / help was displayed
+
+See the $extd$appname$norm(1) manpage for complete documentation."
+}
+
+if test -z "$LINES" -o -z "$COLUMNS" ; then
+ eval `stty size 2>/dev/null | (read L C; \
+ echo LINES=${L:-24} COLUMNS=${C:-80})`
+fi
+test $LINES -eq 0 && LINES=24
+test $COLUMNS -eq 0 && COLUMNS=80
+
+if test "$TERM" != "raw" && stty size >/dev/null 2>&1 ; then
+# esc=`echo -en "\033"`
+# extd="${esc}[1m"
+ extd=`tput bold 2>/dev/null`
+ ital=`tput sitm 2>/dev/null`
+# norm=`echo -en "${esc}[m\017"`
+ norm=`tput sgr0 2>/dev/null`
+else
+ esc=""
+ extd=""
+ norm=""
+fi
+
+# Note that we use `"$@"' to let each command-line parameter expand to a
+# separate word. The quotes around `$@' are essential!
+# We need `tmp' as the `eval set --' would nuke the return value of getopt.
+
+[ "$1" = "-vv" ] && echo "$extd
+Debug output for POSIX conform command-line parsing
+
+Original arguments: $*" >&2
+if `getopt -T >/dev/null 2>&1` ; [ $? = 4 ] ; then
+ getopt_type=long
+ [ "$1" = "-vv" ] && echo "getopt(1) type: enhanced" >&2
+ tmp=`getopt -o c:klg:o:S::s:t:hVv \
+ -l compile:,keep-stream,list,grey-levels:,output-target:\
+,spell-check,subtitle-id:,title:,help,verbose,version \
+ -n "$appname" -s sh \
+ -- "$@"`
+else
+ getopt_type=short
+ [ "$1" = "-vv" ] && echo "getopt(1) type: old" >&2
+ tmp=`getopt c:klg:o:S:s:t:hVv "$@"`
+fi
+
+# exit status
+ESUCCESS=0
+ECANTEXTRACT=1
+ECANTCONVERT=2
+EOCRERROR=3
+ECANTCOMPILE=4
+ECANTCLEANUP=5
+EARGERROR=127
+
+getopt_exit_code=$?
+help=0
+verbose=0
+version=0
+list=0
+source='/dev/dvd'
+title='-'
+sid='-'
+target='-'
+args=''
+keep=0
+compile=0
+if [ $getopt_exit_code -eq 0 ]; then
+## getopt returns error code 0 for successful parsing, 1 if
+## getopt(3) returns errors, 2 if it does not understand its
+## own parameters, 3 if an internal error occurs like out-of-
+## memory, and 4 if it is called with -T.
+#
+# Note the quotes around `$tmp': they are essential!
+# echo $tmp
+# remove "--"
+# for i in $tmp; do if [ "$i" != "--" ]; then tmp2="${tmp2} $i"; fi; done
+ eval set -- "$tmp"
+ [ "$1" = "-vv" ] && echo "New arguments: $*$norm
+" >&2
+ while true ; do
+ case "$1" in
+ -h | --help)
+ help=1
+ shift;;
+
+ -v | --verbose)
+ let verbose++
+ shift;;
+
+ -V | --version)
+ version=1
+ shift;;
+
+ -c | --compile)
+ compile=1
+ source=$2
+ shift 2;;
+
+ -k | --keep)
+ keep=1
+ shift;;
+
+ -l | --list)
+ list=1
+ shift;;
+
+ -g | --grey-levels)
+ grey_levels=$2
+ shift 2;;
+
+ -o | --output-target)
+ target=$2
+ shift 2;;
+
+ -s | --subtitle-id)
+ sid=$2
+ shift 2;;
+
+ -t | --title)
+ title=$2
+ shift 2;;
+
+ --)
+ shift
+ break;;
+ esac
+ done
+ [ -n "$*" ] && args=$args" $*"
+ set -- $args
+else
+ [ $verbose -gt 1 ] && echo "getopt exited: $getopt_exit_code
+ " >&2
+ if [ $getopt_exit_code -eq 1 -o $getopt_exit_code -eq 2 ]; then
+ help=1
+ else
+ exit $getopt_exit_code
+ fi
+fi
+
+[ $list -eq 0 ] && _title
+[ $version -eq 1 ] && exit $ESUCCESS
+[ $help -eq 1 ] &&
+{
+ _help "$0"
+ exit $EARGERROR
+}
+
+result=$ESUCCESS
+[ $compile -eq 0 ] &&
+{
+ [ -n "$1" ] && source=$1
+ [ -z "$title" -a -n "$2" ] && title=$2
+ [ -z "$sid" -a -n "$3" ] && sid=$3
+ [ -z "$target" -a -n "$4" ] && target=$4
+ [ -z "$grey_levels" -a -n "$5" ] && grey_levels=$5
+
+ getsubtitles ()
+ {
+ mplayer -dvd-device "$1" -vo null -ao null -frames 0 \
+ -v "dvd://${2:-2}" 2>&1 |
+ sed -n '/sid/ s/^[^:]\{1,\}:[[:space:]]//p'
+ # echo "$subtitles"
+ }
+
+ [ $list -eq 1 ] &&
+ {
+ # first title may be only an intro
+ [ "$title" = '-' ] && title=2
+ tmp=`getsubtitles $source $title`
+ if [ -n "$tmp" ]; then
+ echo "${extd}The following subtitles are available for title #$title:$norm
+$tmp"
+ exit $ESUCCESS
+ else
+ exit $ECANTEXTRACT
+ fi
+ }
+
+ [ "$sid" != '-' -a "$title" != '-' ] &&
+ {
+ subtitles=`getsubtitles $source $title`
+ [ -n "$subtitles" ] &&
+ st_descr=`echo "$subtitles" | grep "^$sid[[:space:]]" |
+ cut -f 2- -d ' '`
+ }
+
+ if [ "$source" = '-' ]; then
+ stream_file=`ls subtitle_stream-*-$title-$sid 2>/dev/null | head -n 1`
+ if [ $? -eq 0 ]; then
+ read -r -s -p "Use '$stream_file' [Y/n]? " -n 1
+ case $REPLY in
+ [Nn])
+ echo $REPLY
+ exit 1;;
+ *)
+ echo Y
+ esac
+ echo
+
+ id=${stream_file#*-}
+ else
+ echo "$appname: No such file: subtitle_stream-*-$title-$sid" >&2
+ exit $ECANTEXTRACT
+ fi
+ else
+ read_error ()
+ {
+ case $1 in
+ 0) subject='titles available on this DVD source.';;
+ *) subject='subtitles available for this title.';;
+ esac
+
+ echo >&2 "\
+Sorry, there are no $subject
+Please verify that the DVD data source is available and
+that its filesystem is consistent."
+
+ unset subject
+ exit $ECANTEXTRACT
+ }
+
+ if [ "$title" = '-' ]; then
+ titles=`mplayer -dvd-device "$source" -vo null -ao null -frames 0 \
+ -v dvd:// 2>&1 | egrep '[0-9]+ titles'`
+ num_titles=`echo "$titles" | awk '{print $3}'`
+
+ [ $(($num_titles)) -lt 1 ] && read_error 0
+
+ echo "$titles"
+ while true
+ do
+ read -r -p "\
+${extd}Enter title# (1-$num_titles), or nothing to abort: $norm"
+ if [ -n "$REPLY" ]; then
+ title=$(($REPLY))
+ [ $title -ge 1 -a $title -le $num_titles ] && break
+ else
+ exit $ECANTEXTRACT
+ fi
+ done
+ echo
+ fi
+
+ if [ "$sid" = '-' ]; then
+ if [ -z "$subtitles" ]; then subtitles=`"$0" -lt "$title" "$source"`; fi
+ if [ $? -eq 0 ]; then
+ sid_max=`echo "$subtitles" | tail -n 1 | awk '{print $1}'`
+ echo "$subtitles"
+ while true; do
+ read -r -p "\
+${extd}Enter ID of subtitle stream (0-$sid_max) to extract, or nothing to abort: $norm"
+ if [ -n "$REPLY" ]; then
+ sid=$(($REPLY))
+ [ $sid -ge 0 -a $sid -lt $sid_max ] && break
+ else
+ exit $ECANTEXTRACT
+ fi
+ done
+ else
+ read_error 1
+ fi
+ fi
+
+ # remove trailing /
+ source=${source%/}
+
+ vol=`(echo $(volname $source 2>/dev/null); exit $?;) || echo ${source##*/}`
+ id=$vol-$title-$sid
+ stream_file=subtitle_stream-$id
+
+ unset REPLY
+ [ -f "$stream_file" ] &&
+ {
+ read -r -s -p "${extd}Use existing '$stream_file' [Y/n]? $norm" -n 1
+ case $REPLY in
+ [Nn])
+ echo $REPLY
+ read -r -s -p "${extd}Overwrite existing '$stream_file' [y/N]? $norm"\
+ -n 1 REPLY2
+ case $REPLY2 in
+ [Yy]) echo $REPLY2;;
+ *)
+ echo N
+ id=$vol-$title-$sid-$$
+ stream_file=subtitle_stream-$id
+ echo "Using '$stream_file'"
+ esac
+ echo
+ unset REPLY2;;
+ *)
+ echo Y
+ REPLY='y'
+ esac
+ echo
+ }
+
+ [ "$target" = '-' ] && target="$stream_file.srt"
+
+ [ -z "$REPLY" -o "$REPLY" == 'N' -o "$REPLY" == 'n' ] &&
+ {
+ echo "\
+${extd}Extracting subtitle stream $norm$sid${st_descr:+ ($st_descr)}$extd
+of title $norm#$title$extd
+on $norm$source$extd
+to \"$norm$target$extd\" ...$norm
+" >&2
+
+ > "$stream_file"
+ tccat -i "$source" -T "$title" -L |
+ tcextract -x ps1 -t vob -a 0x2$sid > "$stream_file"
+ }
+ fi
+
+ if [ -f "$stream_file" -a -s "$stream_file" ]; then
+ echo "${extd}... done.$norm"
+ else
+ echo "${extd}... failed.$norm"
+ [ -f "$stream_file" ] && rm ./"$stream_file"
+ exit $ECANTEXTRACT
+ fi
+
+ result=$ESUCCESS
+ while true
+ do
+ echo -n "
+${extd}Converting subtitle stream \"$norm$stream_file$extd\"
+to Netpbm Portable Greymaps (PGMs) ... $norm" | fold -s >&2
+ subtitle2pgm -o ./${id}- ${grey_levels:+-c "$grey_levels"} < $stream_file
+ result=$?
+ if [ $result -eq 0 ]; then
+ echo "${extd}done.$norm
+
+${extd}Converting PGMs to text files (TXTs) using GNU OCR (gocr) ... $norm"
+ st_lang=$(echo "$st_descr" | sed 's/.*language: \([a-z]\{2\}\)/\1/')
+ pgm2txt ${st_lang:+-f $st_lang} ./${id}-
+ result=$?
+ if [ $result -eq 0 ]; then
+ echo "${extd}done, using a grey-levels value of\
+ \`$norm${grey_levels:-255,255,0,255}$extd'.$norm"
+ break
+ else
+ echo "${extd}failed.
+
+If the conversion was cancelled due to inappropriate grey-levels value
+\`${grey_levels:-255,255,0,255}', you may try another value,\
+ else you should abort:
+$norm"
+ select grey_levels in \
+ `[ "$grey_levels" != '0,255,255,255' ] && echo 0,255,255,255` \
+ `[ "$grey_levels" != '255,0,255,255' ] && echo 255,0,255,255` \
+ `[ -n "$grey_levels" -a "$grey_levels" != '255,255,0,255' ] &&
+ echo 255,255,0,255` \
+ `[ "$grey_levels" != '255,255,255,0' ] && echo 255,255,255,0` \
+ Other \
+ Abort
+ do
+ case $grey_levels in
+ Other)
+ read -r -p "
+${extd}Enter new value (\`c0$extd,${norm}c1$extd,${norm}c2$extd,${norm}c3'\
+ with 0 <= cN <= 255), or nothing to select a value:
+$norm" grey_levels
+ [ -n "$grey_levels" ] && break;;
+
+ Abort)
+ result=$EOCRERROR
+ break;;
+
+ *)
+ break
+ esac
+ done
+ fi
+ else
+ echo "${extd}failed.$norm"
+ result=$ECANTCONVERT
+ break
+ fi
+ done
+
+ echo -n "${extd}Cleaning up PGMs ... $norm"
+ rm ./${id}-*.pgm
+ if [ $? -eq 0 ]; then
+ echo "${extd}done.$norm"
+ else
+ echo "${extd}failed.$norm"
+ fi
+}
+
+[ $result -eq $ESUCCESS ] &&
+{
+ if [ $compile -eq 1 ]; then
+ try_file ()
+ {
+ [ ! -f "$source" ] && source="$source.srtx"
+ [ -f "$source" ]
+ }
+
+ if [ -d "$source" ]; then
+# TODO: loop through all .srtx files in the directory
+ if [ "$source" != '.' ]; then cd "$source"; fi
+ [ $? -eq 0 ] &&
+ {
+ ls "$source"/*.srtx 2>/dev/null
+ }
+ echo >&2 "$appname: $source: Directory compile is not yet supported."
+ exit $ECANTCOMPILE
+ elif try_file; then
+ d=${source%/*}
+ if [ -a -d "$d" -a "$d" != '.' ]; then cd "$d"; fi
+ id=${source%-*}
+ stream_file=subtitle_stream-$id
+ source="./${source##*/}"
+ else
+ echo >&2 "$appname: $source: No such file or directory."
+ exit $ECANTCOMPILE
+ fi
+ else
+ source="${id}-.srtx"
+ fi
+
+ unset REPLY
+ [ -f "$target" ] &&
+ {
+# TODO: allow for diff
+ read -r -s -p "${extd}'$target' exists.
+Append, overwrite, create new file, or abort [a/o/n/Esc]? $norm" \
+ -n 1
+ case $REPLY in
+ [Oo]) echo $REPLY;;
+ [Aa]) echo $REPLY;;
+ [Nn])
+ echo $REPLY
+ target="${target%.*}-$$.${target##*.}";;
+ *)
+ REPLY=Abort
+ echo $REPLY
+ exit $ECANTCOMPILE;;
+ esac
+ }
+
+ echo "
+${extd}Compiling TXTs into \"$norm$target$extd\" ... $norm"
+
+ case "$REPLY" in
+ [Oo]) > "$target";;
+ [Aa])
+ # append new content marker here
+ echo "
+-- `whoami`@`hostname` -- `date` --
+" >> "$target"
+ esac
+
+ (
+# sed: thx to Erkan Yanar <erkan.yanar@t-online.de>, see
+# message ID <lduohb.v74.ln@510002093148-0001.dialin.t-online.de>
+ srttool -s -i "$source"
+
+ # only if srttool is not available
+ if [ $? -gt 1 ]; then
+ sed -n 's,^\(\([^/]*\)\(/\)\(.*\.pgm\.txt\)\)$,/^\2\\\3\4$/ { \
+ r \1 \
+ d \
+ },gp' "$source" | sed -f - "$source"
+ fi
+ ) >> "$target"
+
+ if [ $? -eq 0 ]; then
+ echo "${extd}... done.$norm"
+ else
+ echo "${extd}... failed.$norm"
+ exit $ECANTCOMPILE
+ fi
+
+ echo -n "${extd}Cleaning up
+ ${id}-*.pgm.txt files ... $norm"
+ rm ./"${id}"-*.pgm.txt
+ if [ $? -eq 0 ]; then
+ echo "${extd}done.$norm"
+ else
+ echo "${extd}failed.$norm"
+ result=$ECANTCLEANUP
+ fi
+
+ echo -n " ${extd}Subtitle index file '${id}-.srtx' ... $norm"
+ rm ./"${id}-.srtx" # "$target.srtx"
+ if [ $? -eq 0 ]; then
+ echo "${extd}done.$norm"
+ else
+ echo "${extd}failed.$norm"
+ result=$ECANTCLEANUP
+ fi
+
+ [ $keep -eq 0 -a -f "./$stream_file" ] &&
+ {
+ echo -n " ${extd}Subtitle stream file '${stream_file}' ... $norm"
+ rm ./"$stream_file"
+
+ if [ $? -eq 0 ]; then
+ echo "${extd}done.$norm"
+ else
+ echo "${extd}failed.$norm"
+ result=$ECANTCLEANUP
+ fi
+ }
+
+ exit $result
+}
/live/tools/multimedia/dvd/dvdsubtitles/dvdsubtitles.sh
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: live/tools/multimedia/dvd/dvdsubtitles/dvdsubtitles.1
===================================================================
--- live/tools/multimedia/dvd/dvdsubtitles/dvdsubtitles.1 (nonexistent)
+++ live/tools/multimedia/dvd/dvdsubtitles/dvdsubtitles.1 (revision 198)
@@ -0,0 +1,443 @@
+\" dvdsubtitles.1 - the *roff document processor src for the dvdsubtitles manual
+\"
+\" This file is part of PointedEars' DVD Subtitles.
+\" Copyright (C) 2005, 2006 Thomas Lahn <dvd@PointedEars.de>
+\"
+\" Permission is granted to copy, distribute and/or modify this document
+\" under the terms of the GNU Free Documentation License, Version 1.2
+\" or any later version published by the Free Software Foundation;
+\" with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+\" Texts. A copy of the license is available on the Web[1] or
+\" from the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+\" Boston, MA 02110-1301 USA.
+\"
+\" [1] <http://www.gnu.org/licenses/licenses.html#FDL>
+\"
+\" You may contact the author by:
+\" e-mail: dvd@PointedEars.de
+\" snail mail:
+\" Thomas Lahn
+\" Warschauer Strasse 1a/0403
+\" D-99089 Erfurt
+\" Federal Republic of Germany
+
+.TH dvdsubtitles 1 "2006-02-15" "0.6.1.2006021519" "DVD Tools"
+
+
+.SH NAME
+dvdsubtitles \- Extract subtitle stream from DVD-Video data to text file
+
+
+.SH SYNOPSIS
+
+.B dvdsubtitles
+.br
+.RB [ -hVkl ]
+.RB [ -t
+.IR TITLE ]
+.RB [ -s
+.IR SUBTITLE ]
+.RB [ -o
+.IR TARGET ]
+.RB [ -g
+.IR GREY_LEVELS ]
+.RI [ SOURCE ]
+
+.PP
+.B dvdsubtitles
+.B -c
+.RI ( FILE " | " DIRECTORY )
+.RB [ -o
+.IR TARGET ]
+
+.PP
+.B dvdsubtitles
+.RB [ -hVkl ]
+.RI [ SOURCE
+.RI [ TITLE
+.RI [ SUBTITLE
+.RI [ TARGET
+.RI [ GREY_LEVELS ]]]]]
+.br
+(deprecated)
+
+
+.SH DESCRIPTION
+
+Uses
+.BR tccat (1)
+and
+.BR tcextract (1)
+from the
+.B transcode
+package to extract a subtitle stream from DVD-Video data. This stream
+is converted into image files with
+.BR subtitle2pgm ,
+and those are converted to text files using
+.BR pgm2txt ,
+both from the
+.B subtitleripper
+package, which in turn calls
+.BR gocr (1).
+.PP
+The previously created subtitle index file (.srtx) and the resulting text
+files are then compiled into one text file using either
+.BR srttool ,
+from the
+.B subtitleripper
+package, or
+.BR sed (1).
+(See Output Format below.)
+.PP
+The
+.B -c
+option allows for compiling existing text files into that format according to
+a subtitle index file without extracting a subtitle stream first (see below).
+\" .PP
+\" If the
+\" .B -S
+\" option is used, this program also performs a minor correction of common
+\" misrecognition errors via
+\" .BR sed (1),
+\" i.e. a standalone `l' (small letter L) or one followed by an apostrophe
+\" is converted to `I' (capital letter I).
+.PP
+All temporary files are deleted afterwards (`clean-up'), unless a fatal error
+occurred or a user interrupt was detected; the extracted subtitle stream file
+is kept for future use if the
+.B -k
+option is used.
+.PP
+Based on
+.B DVD ripping and transcoding with Linux
+by Moritz Bunkus <moritz@bunkus.org>, available at
+.br
+<\fIhttp://www.bunkus.org/dvdripping4linux/\fP>.
+
+.SS Output Format
+The format of the subtitle text file this program creates is similar to that the
+.B SubRip
+program creates:
+.PP
+.I Subtitle number
+.br
+.IB "Start time " --> " End time"
+.br
+.I Text of subtitle (one or more lines)
+.br
+.I Blank line
+.PP
+Like the SubRip format, field data starts at the beginning of each line.
+The time format used is `\fIhours\fB:\fIminutes\fB:\fIseconds\fR',
+.I hours
+and
+.I minutes
+with two digits each. The
+.I seconds
+field is precise to three decimal points; the decimal separator used is
+the comma.
+.PP
+Different to the SubRip format, the line break used is the
+standard UNIX Line Feed (LF, 0x0A) character. The
+.I Subtitle number
+field was not included before version 0.6.1.
+
+
+.SH OPTIONS
+
+Options are supported since version 0.4. This aims at achieving POSIX
+conformance and easy introduction of new features while maintaining
+backwards compatibility to versions before 0.4. However, non-option
+calls are deprecated and may not be supported in future versions.
+.PP
+If additional program arguments are used, any option argument is
+overwritten by the corresponding program argument. Options may be
+given in any order, and are also considered options if located after
+the first program argument. Too many program arguments are silently
+ignored.
+
+.IP "\fB-c\fP, \fB--compile\fP (\fIFILE\fP | \fIDIRECTORY\fP)"
+(since version 0.6.1, \fBTODO\fP) Compile one group, or all groups of
+subtitle text files in
+.IR DIRECTORY ,
+according to a corresponding subtitle index
+.I FILE
+(.srtx), into one text file each. If this is successful, clean up (see
+.BR -k )
+and exit.
+Options irrelevant to this process are ignored.
+
+.RS
+If a
+.I DIRECTORY
+is specified as argument, the
+.B -o
+option is ignored. The resulting text files are named after the
+corresponding subtitle index files found in the
+.I DIRECTORY
+instead, and their name is suffixed with `\fB.srt\fP'.
+.RE
+
+.IP "\fB-k\fP, \fB--keep\fP"
+(since version 0.6) Keep subtitle stream file even if conversion is successful.
+
+.IP "\fB-l\fP, \fB--list\fP"
+(since version 0.5) List subtitles for
+.I TITLE
+using
+.BR mplayer (1)
+and exit. If
+.I TITLE
+is not provided or
+.RB ` - ',
+list subtitles for title #2 (as title #1 may be an intro without subtitles) and
+exit.
+
+.IP "\fISOURCE\fP"
+Video DVD data source, i.e. a device
+.RI "(usually " /dev/dvd ),
+a directory e.g. one containing content created via
+.BR dvdbackup (1),
+or a Video DVD image file.
+.br
+If
+.RB ` - ',
+a previously created subtitle stream file named
+\fBsubtitle_stream-\fP*\fB-\fP\fITITLE\fP-\fISUBTITLE\fP
+in the current working directory will be used for only the
+stream-to-graphics-to-text conversion instead. Both
+.I TITLE
+and
+.I SUBTITLE
+must not be
+.BR ` - '
+in that case.
+.br
+The default is
+.RI ` /dev/dvd '.
+
+.IP "\fB-t\fP, \fB--title\fP \fITITLE\fP"
+Number of the title (1-n) which will be accessed for subtitle stream extraction.
+If omitted or
+.RB ` - ',
+the program uses
+.BR mplayer (1)
+to detect how many titles are available on the DVD data source and asks for the
+title to be accessed.
+
+.IP "\fB-s\fP, \fB--subtitle-id\fP \fISUBTITLE\fP"
+ID of the subtitle stream to be extracted (0-n). If omitted or
+.RB ` - ',
+the program uses its
+.B -l
+option (or
+.BR mplayer (1)
+directly, before version 0.5) to detect which subtitles are available for the
+given TITLE and asks for the ID to be used.
+
+.IP "\fB-o\fP, \fB--output-target\fP \fITARGET\fP"
+Name of the resulting subtitles text file. If not provided or
+.RB ` - ',
+the file is named after the subtitle stream file.
+
+.RS
+Versions prior to 0.6 appended the filename suffix
+.B .txt
+automagically always, and version 0.6 appended this suffix only if this option
+was not provided; since version 0.6.1, the filename suffix
+.B .srt
+(SubRip text) is appended in that case.
+
+.PP
+If the file already existed, behavior depends on the program version.
+
+.IP "Since version 0.6.1:"
+The program asks whether the file should be overwritten, new content should
+be appended to it (including a marker identifying the start of new content),
+or if a new file should be created. If the latter, the name of new file
+includes the ID of the
+.B dvdsubtitles
+process which created it.
+
+.IP "Version 0.6:"
+The program asks whether the file should be overwritten. If no, a new file
+is created, its name including the ID of the
+.B dvdsubtitles
+process which created it.
+
+.IP "Versions prior to 0.6:"
+New content is appended to the file without marker.
+.RE
+
+.IP "\fB-g\fP, \fB--grey-levels\fP \fIGREY_LEVELS\fP"
+Optional grey-levels value `\fIc0\fP,\fIc1\fP,\fIc2\fP,\fIc3\fP' with 0 <=
+.I cN
+<= 255, where 0 means black and 255 means white.
+
+.RS
+.PP
+DVD subtitles allow up to 4 colors. The comma-separated arguments to this
+option specify the grey level for each these colors that are used for converting
+the subtitle stream graphics into plain text via OCR. The default is
+.RB ` 255,255,0,255 '.
+The values
+.RB ` 255,0,255,255 ',
+.RB ` 255,255,255,0 ',
+and
+.RB ` 0,255,255,255 '
+can also produce viable OCR input.
+
+.PP
+Use solid (not outlined) shapes as input when possible to make things easier
+for the
+.BR gocr (1)
+program. It will ask you about a character if it does not recognize it; if
+that has an outlined shape, you are advised to cancel the OCR process (with
+Ctrl+C). This program will then allow you to use another grey-levels value
+without the need to extract the subtitle stream again.
+
+.PP
+See the README file of the
+.B subtitleripper
+package and of the
+.B subtitle2pgm
+program, which -c option requires this value, for details. (See FILES below.)
+.RE
+
+.IP "\fB-h\fP, \fB--help\fP"
+Display this help and exit.
+
+.IP "\fB-V\fP, \fB--version\fP"
+Display version information and exit.
+
+
+.SH "EXIT STATUS"
+
+.TP
+.B " 0"
+Successful program execution
+
+.TP
+.B " 1"
+Error detecting/extracting subtitle stream, or cancelled without selecting a
+title number or subtitle ID
+
+.TP
+.B " 2"
+Unable to convert subtitle stream to image files
+
+.TP
+.B " 3"
+Cancelled due to
+.BR gocr (1)
+error or without entering another grey-levels value
+
+.TP
+.B " 4"
+Unable to compile to text file
+
+.TP
+.B " 5"
+Unable to clean up
+
+.TP
+.B "127"
+Insufficient number of arguments / help was displayed
+
+
+.SH FILES
+.TP
+.I /usr/share/doc/subtitleripper/README.gz
+Location of the
+.B subtitleripper
+package README on Debian systems
+
+.TP
+.I /usr/share/doc/subtitleripper/README.subtitle2pgm.gz
+Location of the
+.B subtitle2pgm
+program README on Debian systems
+
+
+.SH NOTES
+Tested with GNU/Linux 2.4.31 and 2.6.1.13 to .15
+.B [1]
+(Debian
+.B [2]
+Sarge).
+
+.PP
+.B [1]
+.RI < http://kernel.org/ >
+.br
+.B [2]
+.RI < http://debian.org/ >
+
+
+.SH BUGS
+Please send comments and bug reports to
+.RI < dvd@PointedEars.de >.
+
+
+.SH "LEGAL NOTICE"
+Copyright (c) 2005, 2006 Thomas Lahn <dvd@PointedEars.de>
+.PP
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2 of the License, or (at your
+option) any later version.
+.PP
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+(GPL) for more details.
+
+You should have received a copy of the GNU GPL along with this program
+.RI ( COPYING " file);"
+if not, go to
+.B [1]
+or write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+Boston, MA 02110-1301, USA.
+.PP
+.B [1]
+.RI < http://www.gnu.org/licenses/licenses.html#GPL >
+.PP
+.br
+--
+.br
+Standard shell script disclaimer blurb thing:
+
+This script is a hack. It's brute force. It's horrible.
+It doesn't use Artificial Intelligence. It doesn't use Virtual Reality.
+It's not perl. It's not python. It probably won't work unchanged on
+the "other" thousands of unices. But it worksforme. --ramiro
+.br
+(from
+.IR /usr/local/mozilla/run-mozilla.sh )
+
+
+.SH CREDITS
+Thanks to Boris 'bolau' Lau <mail@bolau.de> for translation support,
+and to Erkan Yanar <erkan.yanar@t-online.de> for pointing out how to
+use
+.BR sed (1)
+to replace a filename with the file content.
+
+
+.SH AVAILABILITY
+The author's latest version can be obtained from
+.br
+.RI < http://PointedEars.de/tools/multimedia/dvd/ >.
+
+
+.SH "SEE ALSO"
+
+.BR dvdbackup (1),
+.BR gocr (1),
+.BR mplayer (1),
+.BR pgm2txt ,
+.BR sed (1),
+.BR srttool " and " subtitle2pgm
+(from <\fIhttp://subtitleripper.sourceforge.net/\fP>),
+.BR tccat (1),
+.BR tcextract (1)
Index: live/tools/multimedia/dvd/dvdsubtitles/dvdsubtitles-loop
===================================================================
--- live/tools/multimedia/dvd/dvdsubtitles/dvdsubtitles-loop (nonexistent)
+++ live/tools/multimedia/dvd/dvdsubtitles/dvdsubtitles-loop (revision 198)
@@ -0,0 +1,45 @@
+#!/bin/sh
+
+[ $# -lt 3 ] && {
+ echo >&2 "${0##*/} [-g GREY_VALUE] [-p PREFIX] [-s SUFFIX] START SID\
+ TITLES..."
+ exit 1
+}
+
+[ "$1" = '-g' ] &&
+{
+ shift
+ user_grey=$1
+ [ "$1" == '-' ] && user_grey=255,0,255,255
+ user_grey="-g $user_grey"
+ shift
+}
+
+[ "$1" = '-p' ] &&
+{
+ shift
+ prefix=$1
+ shift
+}
+
+[ "$1" = '-s' ] &&
+{
+ shift
+ suffix=$1
+ shift
+}
+
+start=$1
+subtitle=$2
+shift 2
+
+sudo dc stop
+i=$(($start))
+while [ $# -gt 0 ]
+do
+ echo
+ dvdsubtitles -t $i -s $subtitle $user_grey -o "$prefix$1$suffix"
+ let i++
+ shift
+done
+sudo dc start
/live/tools/multimedia/dvd/dvdsubtitles/dvdsubtitles-loop
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: live/tools/multimedia/dvd/dvdsubtitles/dvdsubtitles
===================================================================
--- live/tools/multimedia/dvd/dvdsubtitles/dvdsubtitles (nonexistent)
+++ live/tools/multimedia/dvd/dvdsubtitles/dvdsubtitles (revision 198)
@@ -0,0 +1,644 @@
+#!/bin/sh
+appname="${0##*/}"
+ver="0.6.1.2006031907"
+copy="2005, 2006"
+mail_feedback="dvd@PointedEars.de"
+# ----------------------------------------------------------------------------
+# DVD Subtitles 0.6.1 -- Extracts subtitles from Video DVD data to a text file
+# Copyright (C) 2005, 2006 Thomas Lahn <PointedEars@gmx.de>
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License (GPL) as published
+# by the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU GPL along with this
+# program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+## Standard shell script disclaimer blurb thing:
+##
+## This script is a hack. It's brute force. It's horrible.
+## It doesn't use Artificial Intelligence. It doesn't use Virtual Reality.
+## It's not perl. It's not python. It probably won't work unchanged on
+## the "other" thousands of unices. But it worksforme. --ramiro
+# (from /usr/local/mozilla/run-mozilla.sh)
+#
+# This is work in progress. If you have an improvement, patch,
+# idea, whatever, on how to make this script better, please
+# send it to <dvd@PointedEars.de>
+
+_title ()
+{
+ echo "\
+${extd}DVD Subtitles $ver
+Copyright (C) $copy Thomas Lahn <$mail_feedback>$norm
+Distributed under the terms of the GNU General Public License (GPL), see
+COPYING file or http://www.gnu.org/licenses/licenses.html#GPL for details.
+"
+}
+
+_help ()
+{
+ echo "\
+Extracts a subtitle stream from Video DVD data and converts it to a text file.
+
+$extd$appname$norm [options] ${ital}SOURCE$norm
+$extd$appname$norm [$extd-hVkl$norm] [${ital}SOURCE$norm [${ital}TITLE$norm\
+ [${ital}SUBTITLE$norm [${ital}TARGET$norm [${ital}GREY_LEVELS$norm]]]]]
+
+Any option argument is overwritten by the respective additional program
+argument. Options may be given in any order, and are also considered
+options if located after the first program argument. Too many program
+arguments are silently ignored.
+
+$extd-c$norm, $extd--compile$norm ${ital}FILE$norm | ${ital}DIRECTORY$norm
+ Compile subtitle text files according to subtitle index\
+ ${ital}FILE$norm
+ or to subtitle index files in ${ital}DIRECTORY$norm to\
+ ${ital}TARGET$norm. Clean up if this is successful, then exit.
+
+$extd-k$norm, $extd--keep$norm Keep subtitle stream file even if\
+ conversion is successful.
+
+$extd-l$norm, $extd--list$norm List subtitles for TITLE using\
+ ${extd}mplayer$norm(1) and exit.
+ If TITLE is not provided or \`$extd-$norm', list subtitles for
+ title #2 (as title #1 may be an intro without subtitles)
+ and exit.
+
+SOURCE Video DVD data source, i.e. a device (usually /dev/dvd),
+ a directory (e.g. one containing content created via
+ ${extd}dvdbackup$norm(1)) or a Video DVD image file.
+ If \`$extd-$norm', a previously created subtitle stream file\
+ named
+ ${extd}subtitle_stream-$norm*$extd-${norm}TITLE${extd}-${norm}SUBTITLE\
+ in the current working
+ directory will be used for only the stream-to-graphics-
+ to-text conversion instead. Both TITLE and SUBTITLE
+ must not be \`$extd-$norm' in that case.
+ The default is \`$extd/dev/dvd$norm'.
+
+$extd-t$norm, $extd--title$norm
+ TITLE Number of the title (1-n) which will be accessed for
+ subtitle stream extraction. If left out or \`$extd-$norm', the
+ program uses ${extd}mplayer$norm(1) to detect how many titles are
+ available on the DVD data source and asks for the
+ title to be accessed.
+
+$extd-s$norm, $extd--subtitle-id$norm
+ SUBTITLE ID of the subtitle stream to be extracted (0-n).
+ If left out or \`$extd-$norm', the program uses its\
+ ${extd}-l$norm option to detect
+ which subtitles are available for the given TITLE and asks
+ for the ID to be used.
+
+$extd-o$norm, $extd--output-target$norm
+ TARGET Name of the resulting subtitles text file.
+ If not provided, the file is named after the subtitle stream
+ file. NOTE: Unlike previous versions, this version appends
+ the filename suffix $extd.srt$norm automagically ONLY in that\
+ case.
+
+$extd-g$norm, $extd--grey-levels$norm
+ GREY_LEVELS Optional grey-levels value\
+ (\`c0$extd,${norm}c1$extd,${norm}c2$extd,${norm}c3' with 0 <= cN <= 255,
+ where 0 is black and 255 is white) to be used for converting
+ the subtitle stream graphics to text via OCR. The default is
+ \`${extd}255,255,0,255$norm'. Unfortunately, the\
+ ${extd}subtitle2pgm$norm program,
+ which requires this value, appears to be poorly documented;
+ if you find a more detailed, working documentation, please
+ refer to it and inform this program's author about it.
+
+$extd-h$norm, $extd--help$norm Display this help and exit.
+$extd-v$norm, $extd--verbose$norm Be verbose. The number of ${extd}-v$norm\
+ options specify the level of
+ verbosity.
+$extd-V$norm, $extd--version$norm Display version information and exit.
+
+${extd}EXIT STATUS$norm
+ ${extd} 0$norm Successful program execution
+ ${extd} 1$norm Error detecting/extracting subtitle stream, or cancelled
+ without selecting a title number or subtitle ID
+ ${extd} 2$norm Unable to convert subtitle stream to image files
+ ${extd} 3$norm Cancelled due to ${extd}gocr$norm(1) error or without\
+ entering another
+ grey-levels value
+ ${extd} 4$norm Unable to compile to text file
+ ${extd} 5$norm Unable to clean up
+ ${extd}127$norm Insufficient number of arguments / help was displayed
+
+See the $extd$appname$norm(1) manpage for complete documentation."
+}
+
+if test -z "$LINES" -o -z "$COLUMNS" ; then
+ eval `stty size 2>/dev/null | (read L C; \
+ echo LINES=${L:-24} COLUMNS=${C:-80})`
+fi
+test $LINES -eq 0 && LINES=24
+test $COLUMNS -eq 0 && COLUMNS=80
+
+if test "$TERM" != "raw" && stty size >/dev/null 2>&1 ; then
+# esc=`echo -en "\033"`
+# extd="${esc}[1m"
+ extd=`tput bold 2>/dev/null`
+ ital=`tput sitm 2>/dev/null`
+# norm=`echo -en "${esc}[m\017"`
+ norm=`tput sgr0 2>/dev/null`
+else
+ esc=""
+ extd=""
+ norm=""
+fi
+
+# Note that we use `"$@"' to let each command-line parameter expand to a
+# separate word. The quotes around `$@' are essential!
+# We need `tmp' as the `eval set --' would nuke the return value of getopt.
+
+[ "$1" = "-vv" ] && echo "$extd
+Debug output for POSIX conform command-line parsing
+
+Original arguments: $*" >&2
+if `getopt -T >/dev/null 2>&1` ; [ $? = 4 ] ; then
+ getopt_type=long
+ [ "$1" = "-vv" ] && echo "getopt(1) type: enhanced" >&2
+ tmp=`getopt -o c:klg:o:S::s:t:hVv \
+ -l compile:,keep-stream,list,grey-levels:,output-target:\
+,spell-check,subtitle-id:,title:,help,verbose,version \
+ -n "$appname" -s sh \
+ -- "$@"`
+else
+ getopt_type=short
+ [ "$1" = "-vv" ] && echo "getopt(1) type: old" >&2
+ tmp=`getopt c:klg:o:S:s:t:hVv "$@"`
+fi
+
+# exit status
+ESUCCESS=0
+ECANTEXTRACT=1
+ECANTCONVERT=2
+EOCRERROR=3
+ECANTCOMPILE=4
+ECANTCLEANUP=5
+EARGERROR=127
+
+getopt_exit_code=$?
+help=0
+verbose=0
+version=0
+list=0
+source='/dev/dvd'
+title='-'
+sid='-'
+target='-'
+args=''
+keep=0
+compile=0
+if [ $getopt_exit_code -eq 0 ]; then
+## getopt returns error code 0 for successful parsing, 1 if
+## getopt(3) returns errors, 2 if it does not understand its
+## own parameters, 3 if an internal error occurs like out-of-
+## memory, and 4 if it is called with -T.
+#
+# Note the quotes around `$tmp': they are essential!
+# echo $tmp
+# remove "--"
+# for i in $tmp; do if [ "$i" != "--" ]; then tmp2="${tmp2} $i"; fi; done
+ eval set -- "$tmp"
+ [ "$1" = "-vv" ] && echo "New arguments: $*$norm
+" >&2
+ while true ; do
+ case "$1" in
+ -h | --help)
+ help=1
+ shift;;
+
+ -v | --verbose)
+ let verbose++
+ shift;;
+
+ -V | --version)
+ version=1
+ shift;;
+
+ -c | --compile)
+ compile=1
+ source=$2
+ shift 2;;
+
+ -k | --keep)
+ keep=1
+ shift;;
+
+ -l | --list)
+ list=1
+ shift;;
+
+ -g | --grey-levels)
+ grey_levels=$2
+ shift 2;;
+
+ -o | --output-target)
+ target=$2
+ shift 2;;
+
+ -s | --subtitle-id)
+ sid=$2
+ shift 2;;
+
+ -t | --title)
+ title=$2
+ shift 2;;
+
+ --)
+ shift
+ break;;
+ esac
+ done
+ [ -n "$*" ] && args=$args" $*"
+ set -- $args
+else
+ [ $verbose -gt 1 ] && echo "getopt exited: $getopt_exit_code
+ " >&2
+ if [ $getopt_exit_code -eq 1 -o $getopt_exit_code -eq 2 ]; then
+ help=1
+ else
+ exit $getopt_exit_code
+ fi
+fi
+
+[ $list -eq 0 ] && _title
+[ $version -eq 1 ] && exit $ESUCCESS
+[ $help -eq 1 ] &&
+{
+ _help "$0"
+ exit $EARGERROR
+}
+
+result=$ESUCCESS
+[ $compile -eq 0 ] &&
+{
+ [ -n "$1" ] && source=$1
+ [ -z "$title" -a -n "$2" ] && title=$2
+ [ -z "$sid" -a -n "$3" ] && sid=$3
+ [ -z "$target" -a -n "$4" ] && target=$4
+ [ -z "$grey_levels" -a -n "$5" ] && grey_levels=$5
+
+ getsubtitles ()
+ {
+ mplayer -dvd-device "$1" -vo null -ao null -frames 0 \
+ -v "dvd://${2:-2}" 2>&1 |
+ sed -n '/sid/ s/^[^:]\{1,\}:[[:space:]]//p'
+ # echo "$subtitles"
+ }
+
+ [ $list -eq 1 ] &&
+ {
+ # first title may be only an intro
+ [ "$title" = '-' ] && title=2
+ tmp=`getsubtitles $source $title`
+ if [ -n "$tmp" ]; then
+ echo "${extd}The following subtitles are available for title #$title:$norm
+$tmp"
+ exit $ESUCCESS
+ else
+ exit $ECANTEXTRACT
+ fi
+ }
+
+ [ "$sid" != '-' -a "$title" != '-' ] &&
+ {
+ subtitles=`getsubtitles $source $title`
+ [ -n "$subtitles" ] &&
+ st_descr=`echo "$subtitles" | grep "^$sid[[:space:]]" |
+ cut -f 2- -d ' '`
+ }
+
+ if [ "$source" = '-' ]; then
+ stream_file=`ls subtitle_stream-*-$title-$sid 2>/dev/null | head -n 1`
+ if [ $? -eq 0 ]; then
+ read -r -s -p "Use '$stream_file' [Y/n]? " -n 1
+ case $REPLY in
+ [Nn])
+ echo $REPLY
+ exit 1;;
+ *)
+ echo Y
+ esac
+ echo
+
+ id=${stream_file#*-}
+ else
+ echo "$appname: No such file: subtitle_stream-*-$title-$sid" >&2
+ exit $ECANTEXTRACT
+ fi
+ else
+ read_error ()
+ {
+ case $1 in
+ 0) subject='titles available on this DVD source.';;
+ *) subject='subtitles available for this title.';;
+ esac
+
+ echo >&2 "\
+Sorry, there are no $subject
+Please verify that the DVD data source is available and
+that its filesystem is consistent."
+
+ unset subject
+ exit $ECANTEXTRACT
+ }
+
+ if [ "$title" = '-' ]; then
+ titles=`mplayer -dvd-device "$source" -vo null -ao null -frames 0 \
+ -v dvd:// 2>&1 | egrep '[0-9]+ titles'`
+ num_titles=`echo "$titles" | awk '{print $3}'`
+
+ [ $(($num_titles)) -lt 1 ] && read_error 0
+
+ echo "$titles"
+ while true
+ do
+ read -r -p "\
+${extd}Enter title# (1-$num_titles), or nothing to abort: $norm"
+ if [ -n "$REPLY" ]; then
+ title=$(($REPLY))
+ [ $title -ge 1 -a $title -le $num_titles ] && break
+ else
+ exit $ECANTEXTRACT
+ fi
+ done
+ echo
+ fi
+
+ if [ "$sid" = '-' ]; then
+ if [ -z "$subtitles" ]; then subtitles=`"$0" -lt "$title" "$source"`; fi
+ if [ $? -eq 0 ]; then
+ sid_max=`echo "$subtitles" | tail -n 1 | awk '{print $1}'`
+ echo "$subtitles"
+ while true; do
+ read -r -p "\
+${extd}Enter ID of subtitle stream (0-$sid_max) to extract, or nothing to abort: $norm"
+ if [ -n "$REPLY" ]; then
+ sid=$(($REPLY))
+ [ $sid -ge 0 -a $sid -lt $sid_max ] && break
+ else
+ exit $ECANTEXTRACT
+ fi
+ done
+ else
+ read_error 1
+ fi
+ fi
+
+ # remove trailing /
+ source=${source%/}
+
+ vol=`(echo $(volname $source 2>/dev/null); exit $?;) || echo ${source##*/}`
+ id=$vol-$title-$sid
+ stream_file=subtitle_stream-$id
+
+ unset REPLY
+ [ -f "$stream_file" ] &&
+ {
+ read -r -s -p "${extd}Use existing '$stream_file' [Y/n]? $norm" -n 1
+ case $REPLY in
+ [Nn])
+ echo $REPLY
+ read -r -s -p "${extd}Overwrite existing '$stream_file' [y/N]? $norm"\
+ -n 1 REPLY2
+ case $REPLY2 in
+ [Yy]) echo $REPLY2;;
+ *)
+ echo N
+ id=$vol-$title-$sid-$$
+ stream_file=subtitle_stream-$id
+ echo "Using '$stream_file'"
+ esac
+ echo
+ unset REPLY2;;
+ *)
+ echo Y
+ REPLY='y'
+ esac
+ echo
+ }
+
+ [ "$target" = '-' ] && target="$stream_file.srt"
+
+ [ -z "$REPLY" -o "$REPLY" == 'N' -o "$REPLY" == 'n' ] &&
+ {
+ echo "\
+${extd}Extracting subtitle stream $norm$sid${st_descr:+ ($st_descr)}$extd
+of title $norm#$title$extd
+on $norm$source$extd
+to \"$norm$target$extd\" ...$norm
+" >&2
+
+ > "$stream_file"
+ tccat -i "$source" -T "$title" -L |
+ tcextract -x ps1 -t vob -a 0x2$sid > "$stream_file"
+ }
+ fi
+
+ if [ -f "$stream_file" -a -s "$stream_file" ]; then
+ echo "${extd}... done.$norm"
+ else
+ echo "${extd}... failed.$norm"
+ [ -f "$stream_file" ] && rm ./"$stream_file"
+ exit $ECANTEXTRACT
+ fi
+
+ result=$ESUCCESS
+ while true
+ do
+ echo -n "
+${extd}Converting subtitle stream \"$norm$stream_file$extd\"
+to Netpbm Portable Greymaps (PGMs) ... $norm" | fold -s >&2
+ subtitle2pgm -o ./${id}- ${grey_levels:+-c "$grey_levels"} < $stream_file
+ result=$?
+ if [ $result -eq 0 ]; then
+ echo "${extd}done.$norm
+
+${extd}Converting PGMs to text files (TXTs) using GNU OCR (gocr) ... $norm"
+ st_lang=$(echo "$st_descr" | sed 's/.*language: \([a-z]\{2\}\)/\1/')
+ pgm2txt ${st_lang:+-f $st_lang} ./${id}-
+ result=$?
+ if [ $result -eq 0 ]; then
+ echo "${extd}done, using a grey-levels value of\
+ \`$norm${grey_levels:-255,255,0,255}$extd'.$norm"
+ break
+ else
+ echo "${extd}failed.
+
+If the conversion was cancelled due to inappropriate grey-levels value
+\`${grey_levels:-255,255,0,255}', you may try another value,\
+ else you should abort:
+$norm"
+ select grey_levels in \
+ `[ "$grey_levels" != '0,255,255,255' ] && echo 0,255,255,255` \
+ `[ "$grey_levels" != '255,0,255,255' ] && echo 255,0,255,255` \
+ `[ -n "$grey_levels" -a "$grey_levels" != '255,255,0,255' ] &&
+ echo 255,255,0,255` \
+ `[ "$grey_levels" != '255,255,255,0' ] && echo 255,255,255,0` \
+ Other \
+ Abort
+ do
+ case $grey_levels in
+ Other)
+ read -r -p "
+${extd}Enter new value (\`c0$extd,${norm}c1$extd,${norm}c2$extd,${norm}c3'\
+ with 0 <= cN <= 255), or nothing to select a value:
+$norm" grey_levels
+ [ -n "$grey_levels" ] && break;;
+
+ Abort)
+ result=$EOCRERROR
+ break;;
+
+ *)
+ break
+ esac
+ done
+ fi
+ else
+ echo "${extd}failed.$norm"
+ result=$ECANTCONVERT
+ break
+ fi
+ done
+
+ echo -n "${extd}Cleaning up PGMs ... $norm"
+ rm ./${id}-*.pgm
+ if [ $? -eq 0 ]; then
+ echo "${extd}done.$norm"
+ else
+ echo "${extd}failed.$norm"
+ fi
+}
+
+[ $result -eq $ESUCCESS ] &&
+{
+ if [ $compile -eq 1 ]; then
+ try_file ()
+ {
+ [ ! -f "$source" ] && source="$source.srtx"
+ [ -f "$source" ]
+ }
+
+ if [ -d "$source" ]; then
+# TODO: loop through all .srtx files in the directory
+ if [ "$source" != '.' ]; then cd "$source"; fi
+ [ $? -eq 0 ] &&
+ {
+ ls "$source"/*.srtx 2>/dev/null
+ }
+ echo >&2 "$appname: $source: Directory compile is not yet supported."
+ exit $ECANTCOMPILE
+ elif try_file; then
+ d=${source%/*}
+ if [ -a -d "$d" -a "$d" != '.' ]; then cd "$d"; fi
+ id=${source%-*}
+ stream_file=subtitle_stream-$id
+ source="./${source##*/}"
+ else
+ echo >&2 "$appname: $source: No such file or directory."
+ exit $ECANTCOMPILE
+ fi
+ else
+ source="${id}-.srtx"
+ fi
+
+ unset REPLY
+ [ -f "$target" ] &&
+ {
+# TODO: allow for diff
+ read -r -s -p "${extd}'$target' exists.
+Append, overwrite, create new file, or abort [a/o/n/Esc]? $norm" \
+ -n 1
+ case $REPLY in
+ [Oo]) echo $REPLY;;
+ [Aa]) echo $REPLY;;
+ [Nn])
+ echo $REPLY
+ target="${target%.*}-$$.${target##*.}";;
+ *)
+ REPLY=Abort
+ echo $REPLY
+ exit $ECANTCOMPILE;;
+ esac
+ }
+
+ echo "
+${extd}Compiling TXTs into \"$norm$target$extd\" ... $norm"
+
+ case "$REPLY" in
+ [Oo]) > "$target";;
+ [Aa])
+ # append new content marker here
+ echo "
+-- `whoami`@`hostname` -- `date` --
+" >> "$target"
+ esac
+
+ (
+# sed: thx to Erkan Yanar <erkan.yanar@t-online.de>, see
+# message ID <lduohb.v74.ln@510002093148-0001.dialin.t-online.de>
+ srttool -s -i "$source"
+
+ # only if srttool is not available
+ if [ $? -gt 1 ]; then
+ sed -n 's,^\(\([^/]*\)\(/\)\(.*\.pgm\.txt\)\)$,/^\2\\\3\4$/ { \
+ r \1 \
+ d \
+ },gp' "$source" | sed -f - "$source"
+ fi
+ ) >> "$target"
+
+ if [ $? -eq 0 ]; then
+ echo "${extd}... done.$norm"
+ else
+ echo "${extd}... failed.$norm"
+ exit $ECANTCOMPILE
+ fi
+
+ echo -n "${extd}Cleaning up
+ ${id}-*.pgm.txt files ... $norm"
+ rm ./"${id}"-*.pgm.txt
+ if [ $? -eq 0 ]; then
+ echo "${extd}done.$norm"
+ else
+ echo "${extd}failed.$norm"
+ result=$ECANTCLEANUP
+ fi
+
+ echo -n " ${extd}Subtitle index file '${id}-.srtx' ... $norm"
+ rm ./"${id}-.srtx" # "$target.srtx"
+ if [ $? -eq 0 ]; then
+ echo "${extd}done.$norm"
+ else
+ echo "${extd}failed.$norm"
+ result=$ECANTCLEANUP
+ fi
+
+ [ $keep -eq 0 -a -f "./$stream_file" ] &&
+ {
+ echo -n " ${extd}Subtitle stream file '${stream_file}' ... $norm"
+ rm ./"$stream_file"
+
+ if [ $? -eq 0 ]; then
+ echo "${extd}done.$norm"
+ else
+ echo "${extd}failed.$norm"
+ result=$ECANTCLEANUP
+ fi
+ }
+
+ exit $result
+}
/live/tools/multimedia/dvd/dvdsubtitles/dvdsubtitles
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: live/favicon.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/live/favicon.ico
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: live/index.de.php
===================================================================
--- live/index.de.php (nonexistent)
+++ live/index.de.php (revision 198)
@@ -0,0 +1,10 @@
+<?php
+ /* Set language to German */
+ $language = 'de';
+ $locale = 'de_DE.UTF-8';
+ putenv("LC_ALL=$locale");
+ setlocale(LC_ALL, $locale);
+
+ require_once 'global.php';
+ require_once 'index.phtml';
+?>
\ No newline at end of file
Index: live/index.old.html
===================================================================
--- live/index.old.html (nonexistent)
+++ live/index.old.html (revision 198)
@@ -0,0 +1,151 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+ <head>
+ <title>PointedEars' Website</title>
+ <link rel="SHORTCUT ICON" href="favicon.ico">
+ <!-- Browsers: Character Set, Script Type, Style Sheets Type,
+ Proxy Usage -->
+ <meta http-equiv="content-type"content="text/html; charset=iso-8859-1">
+ <meta http-equiv="Content-Script-Type" content="text/javascript">
+ <meta http-equiv="Content-Style-Type" content="text/css">
+ <meta http-equiv="expires" content="0">
+ <!-- Proxy Servers: Do not cache this document -->
+ <meta http-equiv="pragma" content="no-cache">
+ <!-- Robots: Language, Index, Subordinated Files, Description, Author,
+ Keywords, Document Date -->
+ <meta name="robots" content="index">
+ <meta name="robots" content="nofollow">
+ <meta name="description"
+ content="Links to distributed computing (Folding@home, SETI@home), Leisure Database, Mozilla/5.0 tips & tools, poetry, standard phrases (psf), JavaScripts & PHP scripts, documents regarding SELFHTML.DE, a songbook and the United Federation of Planets Database (UFPDB). Coming soon: The best internet links categorized and much more via a bilingual (English/German) LCARS terminal styled user interface that can be also used to surf the web anonymously! Bookmark NOW!">
+ <meta name="author" content="PointedEars, PointedEars Software (PES)">
+ <!-- No localization of keywords due to following language selection -->
+ <meta name="keywords"
+ http-equiv="Keywords"
+ content="Appz, Download, Links, LCARS, Star Trek, TNG, The Next Generation, DS9, Deep Space 9, Deep Space Nine, VOY, Voyager, UFP, Federation, United Federation of Planets, Database, Databank, Song, Songbook, Surf, anonymously, Raumschiff Enterprise, DNG, Die n&auml;chste Generation, VFP, F&ouml;deration, Vereinte F&ouml;deration der Planeten, Datenbasis, Datenbank, Lied, Liedtext, surfen, anonym">
+ <!--meta name="keywords" http-equiv="Keywords" lang="de" content=""-->
+ <!--meta name="keywords" http-equiv="Keywords" lang="en-us" content=""-->
+ <!--meta name="keywords" http-equiv="Keywords" lang="en" content=""-->
+ <meta name="revisit-after" content="3 days">
+ <meta name="date" content="2002-05-23T10:56:00+02:00">
+ <!-- Robots: Dublin Core Metadata
+ (http://purl.org/metadata/dublin_core) -->
+ <meta name="DC.Title" content="PointedEars' Website">
+ <meta name="DC.Creator" content="PointedEars, PointedEars Software (PES)">
+ <meta name="DC.Subject" content="Private Homepage">
+ <meta name="DC.Description"
+ content="PointedEars' Website: Access to the United Federation of Planets Databanks and an online songbook. Coming soon: Software downloads always worth a click, the best internet links categorized and much more via a bilingual (English/German) LCARS terminal styled user interface that can be also used to surf the web anonymously! Bookmark NOW!">
+ <meta name="DC.Publisher" content="PointedEars">
+ <meta name="DC.Date.Create" content="2002-05-23">
+ <meta name="DC.Date" content="2002-05-23">
+ <!--meta name="DC.Type" content=""-->
+ <!--meta name="DC.Format" content=""-->
+ <meta name="DC.Identifier" content="http://pointedears.de/">
+ <meta name="DC.Language" content="mx">
+ <meta name="DC.Rights"
+ content="Copyright (c) PointedEars. All rights reserved. The author is not responsible for the availability and the content of websites referred by this site, and not responsible for the availability and the content of websites referred by those sites. Whereever outsourced material is used, copyright or trademark infringement is not intended. Third parties who claim copyrights or trademarks used herein are pleased to send an informal email to webmaster@PointedEars.de for immediate removal or modification of the respective material on the website instead of reminding the author of usage of this material. Thank you.">
+ <script type="text/javascript">
+ <!--
+ function setStatus(Text) {
+ if (isNaN(Text))
+ Text = String(Text);
+ window.status = Text;
+ return true;
+ }
+
+ function resetStatus() {
+ window.status = window.defaultStatus;
+ return true;
+ }
+
+ function mailStatus() {
+ return setStatus("Send your feedback to PointedEars");
+ }
+
+ /* Hardcore Frame Buster
+ if (parent.frames.length > 0 )
+ parent.location.href = window.location.href;
+ */
+ //-->
+ </script>
+ <link rel="stylesheet" type="text/css" href="styles/lcars.css">
+ </head>
+ <body bgcolor="#000000" text="#afbfe0"
+ link="#cfdfff" alink="#ffffff" vlink="#cfdfff">
+ <table border=0 align="center" width="100%" style="height:100%">
+ <tr valign="middle">
+ <td align="center" colspan=2><img
+ src="media/vulcan_hand-large.gif"
+ width="128"
+ height="184"
+ alt="Dif-tor&nbsp;heh&nbsp;smusma - Live&nbsp;long&nbsp;and&nbsp;prosper - Leben&nbsp;Sie&nbsp;lange&nbsp;und&nbsp;gl&uuml;cklich"
+ border="0"
+ onmouseover="return setStatus(this.alt)"
+ onmouseout="return resetStatus()"></td>
+ </tr>
+ <tr valign="top">
+ <td width="50%"><h1
+ align="center">Welcome at PointedEars'&nbsp;Website</h1></td>
+ <td width="50%"><h1
+ align="center">Willkommen auf PointedEars'&nbsp;Website</h1></td>
+ </tr>
+ <tr align="center" valign="top">
+ <td>Select the language for the website to be displayed<br>
+ (you may easily toggle language later)</td>
+ <td>W&auml;hlen Sie die Sprache, in der die Website angezeigt werden
+ soll<br>
+ (Sie k&ouml;nnen sp&auml;ter einfach zwischen den Sprachen
+ umschalten)</td>
+ </tr>
+ <tr align="center" valign="top">
+ <td><a href="index.en.html" class="button">&nbsp;ENGLISH&nbsp;</a></td>
+ <td><a href="index.de.html" class="button">&nbsp;DEUTSCH&nbsp;</a></td>
+ </tr>
+ <tr align="center" valign="middle">
+ <td colspan=2><hr size=1 width="100%" noshade><a
+ href="mailto:webmaster@PointedEars.de?subject=Feedback/LCARS/Welcome&amp;body=[Your%20feedback%20|%20Ihr%20Feedback]"
+ title="Send your feedback to PointedEars"
+ onmouseover="return mailStatus()"
+ onmouseout="return resetStatus()"
+ >Copyright &copy;&nbsp;&nbsp;<img
+ src="media/ani-mail.gif"
+ width="14"
+ height="15"
+ alt=""
+ border="0"
+ > PointedEars. All rights reserved.</a>
+ <hr size=1 width="100%" noshade><!--
+ You are visitor no. | Sie sind Besucher Nr.
+ -->This site is supported by | Diese Site wird unterst&uuml;tzt von
+ <center>
+ <!-- Begin RealHomepageTools -->
+ <script type="text/javascript">
+ <!--
+ var id=96382;
+ var ua = navigator.userAgent;
+ if(ua.indexOf('MSIE 3')>0)
+ {
+ document.write(
+ '<img src="http://11.rtcode.com/netpoll/ifree'
+ + 'v3.asp?id='+id+'&js=1&to=0&ref='
+ + escape(document.referrer)
+ + '">');
+ }
+ //-->
+ </script><script type="text/javascript" src="scripts/realtracker.js"
+ ></script><noscript><img
+ src="http://11.rtcode.com/netpoll/ifreev3.asp?id=96382&amp;to=0"
+ alt="RealTracker"></noscript><!-- End Tracker
+ --><a
+ href="http://11.rtcode.com/netpoll/geefmening_de.htm?id=96382&amp;naam=LCARS&amp;url=http://pointedears.de/"
+ target="_top"><img
+ src="http://11.rtcode.com/netpoll/netpoll.asp"
+ border="0"
+ alt="RealTracker Free"
+ width="150"
+ height="32"
+ ></a><!-- End RealHomepageTools --></center>
+ </td>
+ </tr>
+ </table>
+ </body>
+</html>
\ No newline at end of file
/live/index.old.html
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: live/index.old.en.html
===================================================================
--- live/index.old.en.html (nonexistent)
+++ live/index.old.en.html (revision 198)
@@ -0,0 +1,259 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+ <head>
+ <title>PointedEars' Website</title>
+ <link rel="SHORTCUT ICON" href="favicon.ico">
+
+ <!-- Browsers: Character Set, Script Type, Style Sheets Type,
+ Proxy Usage -->
+ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
+ <meta http-equiv="content-language" content="en">
+ <meta http-equiv="Content-Script-Type" content="text/javascript">
+ <meta http-equiv="Content-Style-Type" content="text/css">
+ <meta http-equiv="expires" content="0">
+
+ <!-- Robots: Language, Index, Subordinated Files, Description, Author,
+ Keywords, Document Date -->
+ <meta name="robots" content="index">
+ <meta name="robots" content="follow">
+ <meta name="description"
+ content="PointedEars' Website: Access to the United Federation of Planets Databanks, an online songbook and software downloads always worth a click. Coming soon: The best internet links categorized and much more via a bilingual (English/German) LCARS terminal styled user interface that can be also used to surf the web anonymously! Bookmark NOW!">
+ <meta name="author" content="PointedEars, PointedEars Software (PES)">
+
+ <!-- No localization of keywords at the time -->
+ <meta name="keywords" http-equiv="Keywords"
+ content="Appz, Download, Links, LCARS, Star Trek, TNG, The Next Generation, DS9, Deep Space 9, Deep Space Nine, VOY, Voyager, UFP, Federation, United Federation of Planets, Database, Databank, Song, Songbook, Surf, anonymously, Raumschiff Enterprise, DNG, Die n&auml;chste Generation, VFP, F&ouml;deration, Vereinte F&ouml;deration der Planeten, Datenbasis, Datenbank, Lied, Liedtext, surfen, anonym">
+ <!--meta name="keywords" http-equiv="Keywords" lang="de" content=""-->
+ <!--meta name="keywords" http-equiv="Keywords" lang="en-us" content=""-->
+ <!--meta name="keywords" http-equiv="Keywords" lang="en" content=""-->
+
+ <meta name="date" content="2002-05-23T10:56:00+02:00">
+ <meta name="revisit-after" content="3 days">
+
+ <!-- Robots: Dublin Core Metadata
+ (http://purl.org/metadata/dublin_core) -->
+ <meta name="DC.Title" content="PointedEars' Website">
+ <meta name="DC.Creator" content="PointedEars, PointedEars Software (PES)">
+ <meta name="DC.Subject" content="Private Homepage">
+ <meta name="DC.Description"
+ content="PointedEars' Website: Access to the United Federation of Planets Databanks, an online songbook and Software downloads always worth a click. Coming soon: The best internet links categorized and much more via a bilingual (English/German) LCARS terminal styled user interface that can be also used to surf the web anonymously! Bookmark NOW!">
+ <meta name="DC.Publisher" content="PointedEars">
+ <meta name="DCTERMS.created" content="2002-05-23">
+ <meta name="DCTERMS.modified" content="2008-12-08T20:57+0100">
+ <!--meta name="DC.Type" content=""-->
+ <!--meta name="DC.Format" content=""-->
+ <meta name="DC.Identifier" content="http://pointedears.de/index-en.htm">
+ <meta name="DC.Language" content="en">
+ <meta name="DC.Rights"
+ content="Copyright (c) 2002&#8211;2008 Thomas&nbsp;Lahn. All rights reserved. The author is not responsible for the availability and the content of websites referred by this site, and not responsible for the availability and the content of websites referred by those sites. Whereever outsourced material is used, copyright or trademark infringement is not intended. Third parties who claim copyrights or trademarks used herein are pleased to send an informal email to webmaster@PointedEars.de for immediate removal or modification of the respective material on the website instead of reminding the author of usage of this material. Thank you.">
+
+ <script type="text/javascript">
+ function setStatus(Text)
+ {
+ if (isNaN(Text)) Text = String(Text);
+ window.status = Text;
+
+ return true;
+ }
+
+ function resetStatus()
+ {
+ window.status = window.defaultStatus;
+
+ return true;
+ }
+
+ function mailStatus()
+ {
+ return setStatus("Send your feedback to PointedEars");
+ }
+ </script>
+ <link rel="STYLESHEET" type="text/css" href="styles/lcars.css">
+ <style type="text/css">
+ <!--
+ p {
+ max-width: 100%;
+ }
+
+ a:link:hover, a:link:active {
+ text-decoration:underline;
+ }
+ -->
+ </style>
+ <!-- bgsound src="media/interface/sound/beginop.wav" loop="infinite" -->
+ </head>
+ <body bgcolor="#000000" text="#afbfe0"
+ link="#cfdfff" alink="#ffffff" vlink="#cfdfff"
+ style="padding-top:10px; text-align:center">
+ <!--a href="main.htm"-->
+ <h1><img
+ src="media/video/img/vulcan_hand-black-bg.png"
+ width="120"
+ height="168"
+ alt="Dif-tor&nbsp;heh&nbsp;smusma - Live&nbsp;long&nbsp;and&nbsp;prosper"
+ title="Dif-tor&nbsp;heh&nbsp;smusma - Live&nbsp;long&nbsp;and&nbsp;prosper"
+ border="0"
+ onmouseover="return setStatus(this.title)"
+ onmouseout="return resetStatus()"><br>
+ Welcome to PointedEars' Website</h1>
+
+ <p><a href="index.de.html" class="button"
+ title="Switch language to German">&nbsp;DEUTSCH&nbsp;</a></p>
+
+ <p><a href="http://vspx27.stanford.edu/cgi-bin/main.py?qtype=userpage&amp;username=Thomas_Lahn"
+ target="_top"
+ title="Distributed computing to understand protein folding, protein aggregation, and related diseases"
+ >Folding@home</a>
+<!--
+ | [<abbr title="currently available in German language only"
+ >de</abbr>]&nbsp;<a
+ href="leisure/" target="_top">Leisure&nbsp;Database</a>
+ | <a href="mozilla/" target="_top">Mozilla</a>
+ | <a href="poetry/" target="_top">poetry</a>
+-->
+ | <a href="psf/" target="_top"><acronym
+ title="PointedEars' Standard Frases"
+ >psf</acronym></a>
+ | <a href="scripts/" target="_top">Scripting</a>
+<!--
+ | [<abbr title="available in German language only"
+ >de</abbr>]&nbsp;<a
+ href="selfhtml.de/" target="_top">SELFHTML.DE</a>
+-->
+ | <a href="http://setiathome.berkeley.edu/show_user.php?userid=378921"
+ target="_top"
+ title="The Search for ExtraTerrestrial Intelligence at HOME"
+ >SETI@home</a>
+ | <a href="devel/" target="_top">Software</a>
+<!--
+ | <a href="lyrics/" target="_top">Songbook</a>
+-->
+ | <a href="ufpdb/index.en.php" target="_top"
+ ><acronym
+ title="United Federation of Planets DataBase"
+ >UFPDB</acronym></a></p>
+
+ <p><a href="about/worm.en.html" target="_top">Got strange e-mails?</a></p>
+
+ <script type="text/javascript">
+ var
+ sURL = location.href,
+ sFavAnchorTitle = "Click here to bookmark PointedEars' Website",
+ sOtherAnchorTitle =
+ "Right-click here to bookmark PointedEars' Website",
+ sFavoriteTitle = "PointedEars' Website";
+
+ if (navigator.appVersion.indexOf("MSIE") > 0
+ && parseInt(navigator.appVersion) >= 4)
+ {
+ document.write(
+ '<a href="javascript:window.external.AddFavorite(sURL,'
+ + ' sFavoriteTitle);" title="'
+ + sFavAnchorTitle
+ + '" onmouseover="return setStatus(sFavAnchorTitle)"'
+ + ' onmouseout="return resetStatus()">'
+ + 'Bookmark&nbsp;this&nbsp;website<\/a>');
+ }
+ else
+ {
+ document.write(
+ '<a href="'
+ + sURL
+ + '" title="PointedEars\' Website"'
+ + ' onmouseover="return setStatus(sOtherAnchorTitle)"'
+ + ' onmouseout="return resetStatus()">'
+ + 'Bookmark&nbsp;this&nbsp;website<\/a>');
+ }
+ </script><noscript><a
+ href="http://pointedears.de/"
+ title="PointedEars' Website"
+ >Bookmark&nbsp;this&nbsp;website</a></noscript>
+ <!--Click here if your page does not refresh after 5 seconds.-->
+ <hr size=1 width="100%" noshade>
+ <a
+ href="mailto:webmaster@PointedEars.de?subject=Feedback/LCARS/Welcome/en&amp;body=[Your%20feedback]"
+ title="Send your feedback to PointedEars"
+ onmouseover="return mailStatus()"
+ onmouseout="return resetStatus()"
+ >Copyright &copy;&nbsp;2002&#8211;2008 <img
+ src="media/ani-mail.gif"
+ width="14" height="15" alt="" border="0"
+ > Thomas&nbsp;Lahn. All rights reserved.</a><!--
+ <hr size=1 width="100%" noshade>
+ You are visitor no. This site is supported by<br>
+ Statistik bei nic.de.vu
+ <script type="text/javascript">
+ var d = 'pointedears.de.vu';
+ </script>
+ <script
+ src="http://68698685.statistiq.com/68698685.js"
+ type="text/javascript"></script>
+
+ Begin Ultimate Counter code
+ <script type="text/javascript">
+ var h =
+ '<a target="_top"'
+ + ' href="http://www.UltimateCounter.com/link.cgi?id=335700">'
+ + '<img src="http://www.UltimateCounter.com/count/count.cgi?335700&amp;r='
+ + escape(document.referrer);
+
+ if (navigator.appName != 'Netscape'
+ || navigator.appVersion.charAt(0) >= 4)
+ {
+ h +=
+ '&amp;d=' + (navigator.appName != 'Netscape'
+ ? screen.colorDepth
+ : screen.pixelDepth)
+ + '&amp;s=' + screen.width;
+ }
+
+ var now = new Date();
+ h +=
+ '&amp;t=' + now.getHours()
+ + '&amp;j=' + navigator.javaEnabled()
+ + '" border="0"><\/a>';
+ document.write(h);
+ </script><noscript><a
+ target="_top"
+ href="http://www.UltimateCounter.com/link.cgi?id=335700&amp;nojs=1"
+ ><img
+ src="http://www.UltimateCounter.com/count/count.cgi?335700"
+ border="0"
+ alt=""
+ ></a></noscript>
+ End Ultimate Counter code
+ Begin RealHomepageTools
+ <center>
+ <script type="text/javascript">
+ var id = 96383;
+ var ua = navigator.userAgent;
+ if (ua.indexOf('MSIE 3') > 0)
+ {
+ document.write(
+ '<img src="http://11.rtcode.com/netpoll/ifree'
+ + 'v3.asp?id='
+ + id
+ + '&amp;js=1&to=0&amp;ref='
+ + escape(document.referrer)
+ + '">');
+ }
+ </script>
+ <script type="text/javascript" src="scripts/realtracker.js"></script>
+ <noscript><img
+ src="http://11.rtcode.com/netpoll/ifreev3.asp?id=96383&amp;to=0"
+ alt="RealTracker"></noscript> End Tracker <a
+ href="http://11.rtcode.com/netpoll/geefmening_de.htm?id=96383&amp;naam=LCARS+English&amp;url=http://pointedears.de/index-en.htm"
+ target="_top"
+ ><img
+ src="http://11.rtcode.com/netpoll/netpoll.asp"
+ border="0"
+ alt="RealTracker Free"
+ width="150"
+ height="32"
+ ></a>
+ </center>
+ --><!-- End RealHomepageTools -->
+ <!--embed src="media/interface/speech/standby.wav" width="0" height="0"
+ hidden="true" autostart="true" dir="ltr" lang="en"-->
+ </body>
+</html>
Index: live
===================================================================
--- live (nonexistent)
+++ live (revision 198)
/live
Property changes:
Added: svn:ignore
## -0,0 +1 ##
+scripts