Use tabs instead of spaces, better indentation
1370
LICENSE.html
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"require": {
|
"require": {
|
||||||
"endroid/qr-code": "^4.4",
|
"endroid/qr-code": "^4.4",
|
||||||
"wikimedia/less.php": "^3.1"
|
"wikimedia/less.php": "^3.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
467
index.php
|
@ -14,295 +14,292 @@ define("LIBREQR_VERSION", "2.0.0dev");
|
||||||
|
|
||||||
// Defines the locale to be used
|
// Defines the locale to be used
|
||||||
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
|
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
|
||||||
$clientLocales = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
|
$clientLocales = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
|
||||||
$clientLocales = preg_replace("#[A-Z0-9]|q=|;|-|\.#", "", $clientLocales);
|
$clientLocales = preg_replace("#[A-Z0-9]|q=|;|-|\.#", "", $clientLocales);
|
||||||
$clientLocales = explode(',', $clientLocales);
|
$clientLocales = explode(',', $clientLocales);
|
||||||
$availableLocales = array('en', 'fr', 'oc', 'template');
|
$availableLocales = array('en', 'fr', 'oc', 'template');
|
||||||
foreach ($clientLocales as $clientLocale) {
|
foreach ($clientLocales as $clientLocale) {
|
||||||
if (in_array($clientLocale, $availableLocales)) {
|
if (in_array($clientLocale, $availableLocales)) {
|
||||||
$locale = $clientLocale;
|
$locale = $clientLocale;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$locale = DEFAULT_LOCALE;
|
$locale = DEFAULT_LOCALE;
|
||||||
}
|
}
|
||||||
require "locales/" . $locale . ".php";
|
require "locales/" . $locale . ".php";
|
||||||
|
|
||||||
$params = array(
|
$params = array(
|
||||||
"txt" => "",
|
"txt" => "",
|
||||||
"redundancy" => DEFAULT_REDUNDANCY,
|
"redundancy" => DEFAULT_REDUNDANCY,
|
||||||
"margin" => DEFAULT_MARGIN,
|
"margin" => DEFAULT_MARGIN,
|
||||||
"size" => DEFAULT_SIZE,
|
"size" => DEFAULT_SIZE,
|
||||||
"bgColor" => DEFAULT_BGCOLOR,
|
"bgColor" => DEFAULT_BGCOLOR,
|
||||||
"mainColor" => DEFAULT_MAINCOLOR,
|
"mainColor" => DEFAULT_MAINCOLOR,
|
||||||
);
|
);
|
||||||
|
|
||||||
$validFormSubmitted = false;
|
$validFormSubmitted = false;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
isset($_POST['txt'])
|
isset($_POST['txt'])
|
||||||
AND isset($_POST['redundancy'])
|
AND isset($_POST['redundancy'])
|
||||||
AND isset($_POST['margin'])
|
AND isset($_POST['margin'])
|
||||||
AND isset($_POST['size'])
|
AND isset($_POST['size'])
|
||||||
AND isset($_POST['bgColor'])
|
AND isset($_POST['bgColor'])
|
||||||
AND isset($_POST['mainColor'])
|
AND isset($_POST['mainColor'])
|
||||||
) {
|
) {
|
||||||
|
|
||||||
if (strlen($_POST['txt']) >= 1 AND strlen($_POST['txt']) <= 4096) {
|
if (strlen($_POST['txt']) >= 1 AND strlen($_POST['txt']) <= 4096) {
|
||||||
$params['txt'] = $_POST['txt'];
|
$params['txt'] = $_POST['txt'];
|
||||||
} else {
|
} else {
|
||||||
http_response_code(400);
|
http_response_code(400);
|
||||||
exit("Wrong value for txt");
|
exit("Wrong value for txt");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_POST['redundancy'] === "low" OR $_POST['redundancy'] === "medium" OR $_POST['redundancy'] === "quartile" OR $_POST['redundancy'] === "high") {
|
if ($_POST['redundancy'] === "low" OR $_POST['redundancy'] === "medium" OR $_POST['redundancy'] === "quartile" OR $_POST['redundancy'] === "high") {
|
||||||
$params['redundancy'] = $_POST['redundancy'];
|
$params['redundancy'] = $_POST['redundancy'];
|
||||||
} else {
|
} else {
|
||||||
http_response_code(400);
|
http_response_code(400);
|
||||||
exit("Wrong value for redundancy");
|
exit("Wrong value for redundancy");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_numeric($_POST['margin']) AND $_POST['margin'] >= 0 AND $_POST['margin'] <= 1024) {
|
if (is_numeric($_POST['margin']) AND $_POST['margin'] >= 0 AND $_POST['margin'] <= 1024) {
|
||||||
$params['margin'] = $_POST['margin'];
|
$params['margin'] = $_POST['margin'];
|
||||||
} else if (empty($_POST['margin'])) {
|
} else if (empty($_POST['margin'])) {
|
||||||
$params['margin'] = NULL;
|
$params['margin'] = NULL;
|
||||||
} else {
|
} else {
|
||||||
http_response_code(400);
|
http_response_code(400);
|
||||||
exit("Wrong value for margin");
|
exit("Wrong value for margin");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_numeric($_POST['size']) AND $_POST['size'] >= 1 AND $_POST['size'] <= 4096) {
|
if (is_numeric($_POST['size']) AND $_POST['size'] >= 1 AND $_POST['size'] <= 4096) {
|
||||||
$params['size'] = $_POST['size'];
|
$params['size'] = $_POST['size'];
|
||||||
} else if (empty($_POST['size'])) {
|
} else if (empty($_POST['size'])) {
|
||||||
$params['size'] = NULL;
|
$params['size'] = NULL;
|
||||||
} else {
|
} else {
|
||||||
http_response_code(400);
|
http_response_code(400);
|
||||||
exit("Wrong value for size");
|
exit("Wrong value for size");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (preg_match("/^#[abcdefABCDEF0-9]{6}$/", $_POST['bgColor'])) {
|
if (preg_match("/^#[abcdefABCDEF0-9]{6}$/", $_POST['bgColor'])) {
|
||||||
$params['bgColor'] = substr($_POST['bgColor'], -6);
|
$params['bgColor'] = substr($_POST['bgColor'], -6);
|
||||||
} else {
|
} else {
|
||||||
http_response_code(400);
|
http_response_code(400);
|
||||||
exit("Wrong value for bgColor");
|
exit("Wrong value for bgColor");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (preg_match("/^#[abcdefABCDEF0-9]{6}$/", $_POST['mainColor'])) {
|
if (preg_match("/^#[abcdefABCDEF0-9]{6}$/", $_POST['mainColor'])) {
|
||||||
$params['mainColor'] = substr($_POST['mainColor'], -6);
|
$params['mainColor'] = substr($_POST['mainColor'], -6);
|
||||||
} else {
|
} else {
|
||||||
http_response_code(400);
|
http_response_code(400);
|
||||||
exit("Wrong value for mainColor");
|
exit("Wrong value for mainColor");
|
||||||
}
|
}
|
||||||
|
|
||||||
$validFormSubmitted = true;
|
$validFormSubmitted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="<?= $locale ?>">
|
<html lang="<?= $locale ?>">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>LibreQR · <?= $loc['subtitle'] ?></title>
|
<title>LibreQR · <?= $loc['subtitle'] ?></title>
|
||||||
<meta name="description" content="<?= $loc['description'] ?>">
|
<meta name="description" content="<?= $loc['description'] ?>">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<meta name="color-scheme" content="dark light">
|
<meta name="color-scheme" content="dark light">
|
||||||
<meta name="application-name" content="LibreQR">
|
<meta name="application-name" content="LibreQR">
|
||||||
<meta name="referrer" content="no-referrer">
|
<meta name="referrer" content="no-referrer">
|
||||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src 'self' data:; style-src 'self'; form-action 'self';">
|
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src 'self' data:; style-src 'self'; form-action 'self';">
|
||||||
<?php
|
<?php
|
||||||
require "themes/" . THEME . "/theme.php";
|
require "themes/" . THEME . "/theme.php";
|
||||||
$colorScheme['theme'] = THEME;
|
$colorScheme['theme'] = THEME;
|
||||||
|
|
||||||
$options = array('cache_dir' => 'css/', 'compress' => true);
|
$options = array('cache_dir' => 'css/', 'compress' => true);
|
||||||
$cssFileName = Less_Cache::Get(array("style.less" => ""), $options, $colorScheme);
|
$cssFileName = Less_Cache::Get(array("style.less" => ""), $options, $colorScheme);
|
||||||
?>
|
?>
|
||||||
<link rel="stylesheet" media="screen" href="css/<?= $cssFileName ?>">
|
<link rel="stylesheet" media="screen" href="css/<?= $cssFileName ?>">
|
||||||
<?php
|
<?php
|
||||||
foreach($themeDimensionsIcons as $dimFav) { // Set all icons dimensions
|
foreach($themeDimensionsIcons as $dimFav) // Set all icons dimensions
|
||||||
echo ' <link rel="icon" type="image/png" href="themes/' . THEME . '/icons/' . $dimFav . '.png" sizes="' . $dimFav . 'x' . $dimFav . '">' . "\n";
|
echo ' <link rel="icon" type="image/png" href="themes/' . THEME . '/icons/' . $dimFav . '.png" sizes="' . $dimFav . 'x' . $dimFav . '">' . "\n";
|
||||||
}
|
?>
|
||||||
?>
|
</head>
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<header>
|
<header>
|
||||||
<a id="linkTitles" href="./">
|
<a id="linkTitles" href="./">
|
||||||
<div id="titles">
|
<div id="titles">
|
||||||
<h1>LibreQR</h1>
|
<h1>LibreQR</h1>
|
||||||
<h2><?= $loc['subtitle'] ?></h2>
|
<h2><?= $loc['subtitle'] ?></h2>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<form method="post" action="./#output">
|
<form method="post" action="./#output">
|
||||||
|
|
||||||
<div class="param" id="txtParam">
|
<div class="param" id="txtParam">
|
||||||
<details>
|
<details>
|
||||||
<summary><label for="txt"><?= $loc['label_content'] ?></label></summary>
|
<summary><label for="txt"><?= $loc['label_content'] ?></label></summary>
|
||||||
<div class="helpText">
|
<div class="helpText">
|
||||||
<?= $loc['help_content'] ?>
|
<?= $loc['help_content'] ?>
|
||||||
</div>
|
</div>
|
||||||
</details>
|
</details>
|
||||||
<textarea rows="3" required="" id="txt" placeholder="<?= $loc['placeholder'] ?>" name="txt"><?= htmlspecialchars($params['txt']) ?></textarea>
|
<textarea rows="3" required="" id="txt" placeholder="<?= $loc['placeholder'] ?>" name="txt"><?= htmlspecialchars($params['txt']) ?></textarea>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="sideParams">
|
<div id="sideParams">
|
||||||
|
|
||||||
<div class="param">
|
<div class="param">
|
||||||
<details>
|
<details>
|
||||||
<summary><label for="redundancy"><?= $loc['label_redundancy'] ?></label></summary>
|
<summary><label for="redundancy"><?= $loc['label_redundancy'] ?></label></summary>
|
||||||
<p class="helpText">
|
<p class="helpText">
|
||||||
<?= $loc['help_redundancy'] ?>
|
<?= $loc['help_redundancy'] ?>
|
||||||
</p>
|
</p>
|
||||||
</details>
|
</details>
|
||||||
<select id="redundancy" name="redundancy">
|
<select id="redundancy" name="redundancy">
|
||||||
<option <?php if ($params['redundancy'] === "low") echo 'selected="" '; ?>value="low">L - 7%</option>
|
<option <?php if ($params['redundancy'] === "low") echo 'selected="" '; ?>value="low">L - 7%</option>
|
||||||
<option <?php if ($params['redundancy'] === "medium") echo 'selected="" '; ?>value="medium">M - 15%</option>
|
<option <?php if ($params['redundancy'] === "medium") echo 'selected="" '; ?>value="medium">M - 15%</option>
|
||||||
<option <?php if ($params['redundancy'] === "quartile") echo 'selected="" '; ?>value="quartile">Q - 25%</option>
|
<option <?php if ($params['redundancy'] === "quartile") echo 'selected="" '; ?>value="quartile">Q - 25%</option>
|
||||||
<option <?php if ($params['redundancy'] === "high") echo 'selected="" '; ?>value="high">H - 30%</option>
|
<option <?php if ($params['redundancy'] === "high") echo 'selected="" '; ?>value="high">H - 30%</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="param">
|
<div class="param">
|
||||||
<details>
|
<details>
|
||||||
<summary><label for="margin"><?= $loc['label_margin'] ?></label></summary>
|
<summary><label for="margin"><?= $loc['label_margin'] ?></label></summary>
|
||||||
<p class="helpText">
|
<p class="helpText">
|
||||||
<?= $loc['help_margin'] ?>
|
<?= $loc['help_margin'] ?>
|
||||||
</p>
|
</p>
|
||||||
</details>
|
</details>
|
||||||
<input type="number" list="margins" id="margin" placeholder="<?= $loc['placeholder_pixels'] ?>" name="margin" min="0" max="1024" value="<?= htmlspecialchars($params['margin']) ?>">
|
<input type="number" list="margins" id="margin" placeholder="<?= $loc['placeholder_pixels'] ?>" name="margin" min="0" max="1024" value="<?= htmlspecialchars($params['margin']) ?>">
|
||||||
<datalist id="margins">
|
<datalist id="margins">
|
||||||
<option value="16">
|
<option value="16">
|
||||||
<option value="32">
|
<option value="32">
|
||||||
<option value="64">
|
<option value="64">
|
||||||
<option value="128">
|
<option value="128">
|
||||||
</datalist>
|
</datalist>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="param">
|
<div class="param">
|
||||||
<details>
|
<details>
|
||||||
<summary><label for="size"><?= $loc['label_size'] ?></label></summary>
|
<summary><label for="size"><?= $loc['label_size'] ?></label></summary>
|
||||||
<p class="helpText">
|
<p class="helpText">
|
||||||
<?= $loc['help_size'] ?>
|
<?= $loc['help_size'] ?>
|
||||||
</p>
|
</p>
|
||||||
</details>
|
</details>
|
||||||
<input type="number" list="sizes" id="size" placeholder="<?= $loc['placeholder_pixels'] ?>" name="size" min="1" max="4096" value="<?= htmlspecialchars($params['size']) ?>">
|
<input type="number" list="sizes" id="size" placeholder="<?= $loc['placeholder_pixels'] ?>" name="size" min="1" max="4096" value="<?= htmlspecialchars($params['size']) ?>">
|
||||||
<datalist id="sizes">
|
<datalist id="sizes">
|
||||||
<option value="128">
|
<option value="128">
|
||||||
<option value="256">
|
<option value="256">
|
||||||
<option value="512">
|
<option value="512">
|
||||||
<option value="1024">
|
<option value="1024">
|
||||||
</datalist>
|
</datalist>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="colors">
|
<div id="colors">
|
||||||
|
<div class="param">
|
||||||
|
<label for="bgColor"><?= $loc['label_bgColor'] ?></label>
|
||||||
|
<input type="color" name="bgColor" id="bgColor" value="#<?= htmlspecialchars($params['bgColor']) ?>">
|
||||||
|
</div>
|
||||||
|
<div class="param">
|
||||||
|
<label for="mainColor"><?= $loc['label_mainColor'] ?></label>
|
||||||
|
<input type="color" name="mainColor" id="mainColor" value="#<?= htmlspecialchars($params['mainColor']) ?>">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="param">
|
<div class="centered">
|
||||||
<label for="bgColor"><?= $loc['label_bgColor'] ?></label>
|
<input class="button" type="submit" value="<?= $loc['button_create'] ?>" />
|
||||||
<input type="color" name="bgColor" id="bgColor" value="#<?= htmlspecialchars($params['bgColor']) ?>">
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="param">
|
</form>
|
||||||
<label for="mainColor"><?= $loc['label_mainColor'] ?></label>
|
|
||||||
<input type="color" name="mainColor" id="mainColor" value="#<?= htmlspecialchars($params['mainColor']) ?>">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="centered">
|
<?php
|
||||||
<input class="button" type="submit" value="<?= $loc['button_create'] ?>" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</form>
|
if ($validFormSubmitted) {
|
||||||
|
|
||||||
<?php
|
$rgbBgColor = array(
|
||||||
|
'r' => hexdec(substr($params['bgColor'],0,2)),
|
||||||
|
'g' => hexdec(substr($params['bgColor'],2,2)),
|
||||||
|
'b' => hexdec(substr($params['bgColor'],4,2)),
|
||||||
|
);
|
||||||
|
|
||||||
if ($validFormSubmitted) {
|
$qrCode = Builder::create()
|
||||||
|
->data($params['txt']);
|
||||||
|
if (!is_null($params['margin']))
|
||||||
|
$qrCode->margin($params['margin']);
|
||||||
|
if (!is_null($params['size']))
|
||||||
|
$qrCode->size($params['size']);
|
||||||
|
|
||||||
$rgbBgColor = array(
|
if ($params['redundancy'] === "high")
|
||||||
'r' => hexdec(substr($params['bgColor'],0,2)),
|
$qrCode->errorCorrectionLevel(new ErrorCorrectionLevelHigh());
|
||||||
'g' => hexdec(substr($params['bgColor'],2,2)),
|
else if ($params['redundancy'] === "quartile")
|
||||||
'b' => hexdec(substr($params['bgColor'],4,2)),
|
$qrCode->errorCorrectionLevel(new ErrorCorrectionLevelQuartile());
|
||||||
);
|
else if ($params['redundancy'] === "medium")
|
||||||
|
$qrCode->errorCorrectionLevel(new ErrorCorrectionLevelMedium());
|
||||||
|
else if ($params['redundancy'] === "low")
|
||||||
|
$qrCode->errorCorrectionLevel(new ErrorCorrectionLevelLow());
|
||||||
|
|
||||||
$qrCode = Builder::create()
|
$qrCode
|
||||||
->data($params['txt']);
|
->backgroundColor(new Color(
|
||||||
if (!is_null($params['margin']))
|
$rgbBgColor['r'],
|
||||||
$qrCode->margin($params['margin']);
|
$rgbBgColor['g'],
|
||||||
if (!is_null($params['size']))
|
$rgbBgColor['b']
|
||||||
$qrCode->size($params['size']);
|
))
|
||||||
|
->foregroundColor(new Color(
|
||||||
|
hexdec(substr($params['mainColor'],0,2)),
|
||||||
|
hexdec(substr($params['mainColor'],2,2)),
|
||||||
|
hexdec(substr($params['mainColor'],4,2))
|
||||||
|
));
|
||||||
|
|
||||||
if ($params['redundancy'] === "high")
|
$result = $qrCode->build();
|
||||||
$qrCode->errorCorrectionLevel(new ErrorCorrectionLevelHigh());
|
|
||||||
else if ($params['redundancy'] === "quartile")
|
|
||||||
$qrCode->errorCorrectionLevel(new ErrorCorrectionLevelQuartile());
|
|
||||||
else if ($params['redundancy'] === "medium")
|
|
||||||
$qrCode->errorCorrectionLevel(new ErrorCorrectionLevelMedium());
|
|
||||||
else if ($params['redundancy'] === "low")
|
|
||||||
$qrCode->errorCorrectionLevel(new ErrorCorrectionLevelLow());
|
|
||||||
|
|
||||||
$qrCode
|
$dataUri = $result->getDataUri();
|
||||||
->backgroundColor(new Color(
|
|
||||||
$rgbBgColor['r'],
|
|
||||||
$rgbBgColor['g'],
|
|
||||||
$rgbBgColor['b']
|
|
||||||
))
|
|
||||||
->foregroundColor(new Color(
|
|
||||||
hexdec(substr($params['mainColor'],0,2)),
|
|
||||||
hexdec(substr($params['mainColor'],2,2)),
|
|
||||||
hexdec(substr($params['mainColor'],4,2))
|
|
||||||
));
|
|
||||||
|
|
||||||
$result = $qrCode->build();
|
?>
|
||||||
|
|
||||||
$dataUri = $result->getDataUri();
|
<section id="output">
|
||||||
|
<div class="centered" id="downloadQR">
|
||||||
|
<a href="<?= $dataUri ?>" class="button" download="<?= htmlspecialchars($params['txt']); ?>.png"><?= $loc['button_download'] ?></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
?>
|
<div class="centered" id="showOnlyQR">
|
||||||
|
<a title="<?= $loc['title_showOnlyQR'] ?>" href="<?= $dataUri ?>"><img width="<?= $qrSize ?>" height="<?= $qrSize ?>" alt='<?= $loc['alt_QR_before'] ?><?= htmlspecialchars($params['txt']); ?><?= $loc['alt_QR_after'] ?>' id="qrCode"<?php
|
||||||
|
|
||||||
<section id="output">
|
// Compute the difference between the QR code and theme background colors
|
||||||
<div class="centered" id="downloadQR">
|
$diffLight = abs($rgbBgColor['r']-hexdec(substr($colorScheme['bg-light'],-6,2))) + abs($rgbBgColor['g']-hexdec(substr($colorScheme['bg-light'],-4,2))) + abs($rgbBgColor['b']-hexdec(substr($colorScheme['bg-light'],-2,2)));
|
||||||
<a href="<?= $dataUri ?>" class="button" download="<?= htmlspecialchars($params['txt']); ?>.png"><?= $loc['button_download'] ?></a>
|
$diffDark = abs($rgbBgColor['r']-hexdec(substr($colorScheme['bg-dark'],-6,2))) + abs($rgbBgColor['g']-hexdec(substr($colorScheme['bg-dark'],-4,2))) + abs($rgbBgColor['b']-hexdec(substr($colorScheme['bg-dark'],-2,2)));
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="centered" id="showOnlyQR">
|
// Determine whether a CSS corner is needed to let the user see the margin of the QR code
|
||||||
<a title="<?= $loc['title_showOnlyQR'] ?>" href="<?= $dataUri ?>"><img width="<?= $qrSize ?>" height="<?= $qrSize ?>" alt='<?= $loc['alt_QR_before'] ?><?= htmlspecialchars($params['txt']); ?><?= $loc['alt_QR_after'] ?>' id="qrCode"<?php
|
$contrastThreshold = 64;
|
||||||
|
if ($diffLight < $contrastThreshold)
|
||||||
|
echo " class='needLightContrast'";
|
||||||
|
if ($diffDark < $contrastThreshold)
|
||||||
|
echo " class='needDarkContrast'";
|
||||||
|
?> src="<?= $dataUri ?>"></a>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
// Compute the difference between the QR code and theme background colors
|
<?php } ?>
|
||||||
$diffLight = abs($rgbBgColor['r']-hexdec(substr($colorScheme['bg-light'],-6,2))) + abs($rgbBgColor['g']-hexdec(substr($colorScheme['bg-light'],-4,2))) + abs($rgbBgColor['b']-hexdec(substr($colorScheme['bg-light'],-2,2)));
|
|
||||||
$diffDark = abs($rgbBgColor['r']-hexdec(substr($colorScheme['bg-dark'],-6,2))) + abs($rgbBgColor['g']-hexdec(substr($colorScheme['bg-dark'],-4,2))) + abs($rgbBgColor['b']-hexdec(substr($colorScheme['bg-dark'],-2,2)));
|
|
||||||
|
|
||||||
// Determine whether a CSS corner is needed to let the user see the margin of the QR code
|
<footer>
|
||||||
$contrastThreshold = 64;
|
|
||||||
if ($diffLight < $contrastThreshold)
|
|
||||||
echo " class='needLightContrast'";
|
|
||||||
if ($diffDark < $contrastThreshold)
|
|
||||||
echo " class='needDarkContrast'";
|
|
||||||
?> src="<?= $dataUri ?>"></a>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<?php } ?>
|
<section id="info" class="metaText">
|
||||||
|
<?= $loc['metaText_qr'] ?>
|
||||||
|
</section>
|
||||||
|
|
||||||
<footer>
|
<?php if (CUSTOM_TEXT_ENABLED) { ?>
|
||||||
|
<section class="metaText">
|
||||||
|
<?= CUSTOM_TEXT ?>
|
||||||
|
</section>
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
<section id="info" class="metaText">
|
<section class="metaText">
|
||||||
<?= $loc['metaText_qr'] ?>
|
<small><?= $loc['metaText_legal'] ?></small>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<?php if (CUSTOM_TEXT_ENABLED) { ?>
|
</footer>
|
||||||
<section class="metaText">
|
|
||||||
<?= CUSTOM_TEXT ?>
|
|
||||||
</section>
|
|
||||||
<?php } ?>
|
|
||||||
|
|
||||||
<section class="metaText">
|
</body>
|
||||||
<small><?= $loc['metaText_legal'] ?></small>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,41 +1,41 @@
|
||||||
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
||||||
$loc = array(
|
$loc = array(
|
||||||
'subtitle' => "QR codes generator",
|
'subtitle' => "QR codes generator",
|
||||||
'description' => "Generate QR codes freely. Choose content, size, colors…",
|
'description' => "Generate QR codes freely. Choose content, size, colors…",
|
||||||
|
|
||||||
'label_content' => "Text to encode",
|
'label_content' => "Text to encode",
|
||||||
'label_redundancy' => "Redundancy rate",
|
'label_redundancy' => "Redundancy rate",
|
||||||
'label_margin' => "Margin size",
|
'label_margin' => "Margin size",
|
||||||
'label_size' => "Image size",
|
'label_size' => "Image size",
|
||||||
'label_bgColor' => "Background color",
|
'label_bgColor' => "Background color",
|
||||||
'label_mainColor' => "Foreground color",
|
'label_mainColor' => "Foreground color",
|
||||||
|
|
||||||
'placeholder' => "Enter the text to encode in the QR code",
|
'placeholder' => "Enter the text to encode in the QR code",
|
||||||
'placeholder_pixels' => "automatic",
|
'placeholder_pixels' => "automatic",
|
||||||
|
|
||||||
'help_content' => "
|
'help_content' => "
|
||||||
<p>You can encode whatever text you want.</p>
|
<p>You can encode whatever text you want.</p>
|
||||||
<p>Software which decodes these QR codes could suggest to open them with dedicated software, depending on their <a href='https://en.wikipedia.org/wiki/List_of_URI_schemes' hreflang='en' rel='help external noreferrer'>URI scheme</a>.</p>
|
<p>Software which decodes these QR codes could suggest to open them with dedicated software, depending on their <a href='https://en.wikipedia.org/wiki/List_of_URI_schemes' hreflang='en' rel='help external noreferrer'>URI scheme</a>.</p>
|
||||||
<p>For instance, to open a webpage: <code>https://www.example/</code></p>
|
<p>For instance, to open a webpage: <code>https://www.example/</code></p>
|
||||||
<p>To send an email: <code>mailto:contact@email.example</code></p>
|
<p>To send an email: <code>mailto:contact@email.example</code></p>
|
||||||
<p>To share geographic coordinates: <code>geo:48.867564,2.364057</code></p>
|
<p>To share geographic coordinates: <code>geo:48.867564,2.364057</code></p>
|
||||||
",
|
",
|
||||||
'help_redundancy' => "Redundancy is the duplication of information in the QR code to correct errors during decoding. A higher rate will produce a bigger QR code, but will have a better chance of being decoded correctly.",
|
'help_redundancy' => "Redundancy is the duplication of information in the QR code to correct errors during decoding. A higher rate will produce a bigger QR code, but will have a better chance of being decoded correctly.",
|
||||||
'help_margin' => "Number of pixels in each white band around the QR code.",
|
'help_margin' => "Number of pixels in each white band around the QR code.",
|
||||||
'help_size' => "Image width and height in pixels, without the margin.",
|
'help_size' => "Image width and height in pixels, without the margin.",
|
||||||
|
|
||||||
'button_create' => "Generate",
|
'button_create' => "Generate",
|
||||||
'button_download' => "Save this QR code",
|
'button_download' => "Save this QR code",
|
||||||
|
|
||||||
'title_showOnlyQR' => "Show this QR code only",
|
'title_showOnlyQR' => "Show this QR code only",
|
||||||
|
|
||||||
'alt_QR_before' => 'QR code meaning "',
|
'alt_QR_before' => 'QR code meaning "',
|
||||||
'alt_QR_after' => '"',
|
'alt_QR_after' => '"',
|
||||||
|
|
||||||
'metaText_qr' => "
|
'metaText_qr' => "
|
||||||
<h3>What's a QR code?</h3>
|
<h3>What's a QR code?</h3>
|
||||||
A QR code is a 2 dimensional barcode in which text is written in binary. It can be decoded with a device equipped with a photo sensor and an adequate software.
|
A QR code is a 2 dimensional barcode in which text is written in binary. It can be decoded with a device equipped with a photo sensor and an adequate software.
|
||||||
<a href='https://en.wikipedia.org/wiki/QR_code' hreflang='en' rel='help external noreferrer'>QR code on Wikipedia</a>.
|
<a href='https://en.wikipedia.org/wiki/QR_code' hreflang='en' rel='help external noreferrer'>QR code on Wikipedia</a>.
|
||||||
",
|
",
|
||||||
'metaText_legal' => "LibreQR " . LIBREQR_VERSION . " is a free software whose <a href='https://code.antopie.org/miraty/libreqr/' rel='external noreferrer'>source code</a> is available under the terms of the <abbr title='GNU Affero General Public License version 3 or any later version'><a href='LICENSE.html' hreflang='en' rel='license'>AGPLv3</a>+</abbr>.",
|
'metaText_legal' => "LibreQR " . LIBREQR_VERSION . " is a free software whose <a href='https://code.antopie.org/miraty/libreqr/' rel='external noreferrer'>source code</a> is available under the terms of the <abbr title='GNU Affero General Public License version 3 or any later version'><a href='LICENSE.html' hreflang='en' rel='license'>AGPLv3</a>+</abbr>.",
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,41 +1,41 @@
|
||||||
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
||||||
$loc = array(
|
$loc = array(
|
||||||
'subtitle' => "Générer des codes QR",
|
'subtitle' => "Générer des codes QR",
|
||||||
'description' => "Générer des codes QR librement. Choix du contenu, de la taille, des couleurs…",
|
'description' => "Générer des codes QR librement. Choix du contenu, de la taille, des couleurs…",
|
||||||
|
|
||||||
'label_content' => "Texte à encoder",
|
'label_content' => "Texte à encoder",
|
||||||
'label_redundancy' => "Taux de redondance",
|
'label_redundancy' => "Taux de redondance",
|
||||||
'label_margin' => "Taille de la marge",
|
'label_margin' => "Taille de la marge",
|
||||||
'label_size' => "Taille de l'image",
|
'label_size' => "Taille de l'image",
|
||||||
'label_bgColor' => "Couleur de fond",
|
'label_bgColor' => "Couleur de fond",
|
||||||
'label_mainColor' => "Couleur de premier plan",
|
'label_mainColor' => "Couleur de premier plan",
|
||||||
|
|
||||||
'placeholder' => "Entrez le texte à encoder dans le code QR",
|
'placeholder' => "Entrez le texte à encoder dans le code QR",
|
||||||
'placeholder_pixels' => "automatique",
|
'placeholder_pixels' => "automatique",
|
||||||
|
|
||||||
'help_content' => "
|
'help_content' => "
|
||||||
<p>Vous pouvez encoder ce que vous voulez sous forme de texte.</p>
|
<p>Vous pouvez encoder ce que vous voulez sous forme de texte.</p>
|
||||||
<p>Les logiciels qui décodent ces codes QR pourraient proposer de les ouvrir avec un logiciel dédié, en fonction de leur <a href='https://fr.wikipedia.org/wiki/Sch%C3%A9ma_d%27URI' hreflang='fr' rel='help external noreferrer'>schéma d'URI</a>.</p>
|
<p>Les logiciels qui décodent ces codes QR pourraient proposer de les ouvrir avec un logiciel dédié, en fonction de leur <a href='https://fr.wikipedia.org/wiki/Sch%C3%A9ma_d%27URI' hreflang='fr' rel='help external noreferrer'>schéma d'URI</a>.</p>
|
||||||
<p>Par exemple, pour ouvrir une page Web : <code>https://www.example/</code></p>
|
<p>Par exemple, pour ouvrir une page Web : <code>https://www.example/</code></p>
|
||||||
<p>Pour envoyer un mail : <code>mailto:contact@email.example</code></p>
|
<p>Pour envoyer un mail : <code>mailto:contact@email.example</code></p>
|
||||||
<p>Pour partager des coordonnées géographique : <code>geo:48.867564,2.364057</code></p>
|
<p>Pour partager des coordonnées géographique : <code>geo:48.867564,2.364057</code></p>
|
||||||
",
|
",
|
||||||
'help_redundancy' => "La redondance est la duplication des informations dans le code QR afin de corriger les erreurs lors du décodage. Un taux plus élevé produira un code QR plus grand, mais aura plus de chance d'être décodé correctement.",
|
'help_redundancy' => "La redondance est la duplication des informations dans le code QR afin de corriger les erreurs lors du décodage. Un taux plus élevé produira un code QR plus grand, mais aura plus de chance d'être décodé correctement.",
|
||||||
'help_margin' => "Nombre de pixels de chaque bande blanche autour du code QR.",
|
'help_margin' => "Nombre de pixels de chaque bande blanche autour du code QR.",
|
||||||
'help_size' => "Largeur et hauteur de l'image en pixels, sans la marge.",
|
'help_size' => "Largeur et hauteur de l'image en pixels, sans la marge.",
|
||||||
|
|
||||||
'button_create' => "Générer",
|
'button_create' => "Générer",
|
||||||
'button_download' => "Enregistrer ce code QR",
|
'button_download' => "Enregistrer ce code QR",
|
||||||
|
|
||||||
'title_showOnlyQR' => "Afficher uniquement ce code QR",
|
'title_showOnlyQR' => "Afficher uniquement ce code QR",
|
||||||
|
|
||||||
'alt_QR_before' => "Code QR signifiant « ",
|
'alt_QR_before' => "Code QR signifiant « ",
|
||||||
'alt_QR_after' => " »",
|
'alt_QR_after' => " »",
|
||||||
|
|
||||||
'metaText_qr' => "
|
'metaText_qr' => "
|
||||||
<h3>Qu'est-ce qu'un code QR ?</h3>
|
<h3>Qu'est-ce qu'un code QR ?</h3>
|
||||||
Un code QR est un code-barres en 2 dimensions dans lequel du texte est inscrit en binaire. Il peut être décodé avec un appareil muni d'un capteur photo et d'un logiciel adéquat.
|
Un code QR est un code-barres en 2 dimensions dans lequel du texte est inscrit en binaire. Il peut être décodé avec un appareil muni d'un capteur photo et d'un logiciel adéquat.
|
||||||
<a href='https://fr.wikipedia.org/wiki/Code_QR' hreflang='fr' rel='help external noreferrer'>Code QR sur Wikipédia</a>.
|
<a href='https://fr.wikipedia.org/wiki/Code_QR' hreflang='fr' rel='help external noreferrer'>Code QR sur Wikipédia</a>.
|
||||||
",
|
",
|
||||||
'metaText_legal' => "LibreQR " . LIBREQR_VERSION . " est un logiciel libre dont le <a href='https://code.antopie.org/miraty/libreqr/' rel='external noreferrer'>code source</a> est disponible selon les termes de l'<abbr title='GNU Affero General Public License version 3 ou toute version ultérieure'><a href='LICENSE.html' hreflang='en' rel='license'>AGPLv3</a>+</abbr>.",
|
'metaText_legal' => "LibreQR " . LIBREQR_VERSION . " est un logiciel libre dont le <a href='https://code.antopie.org/miraty/libreqr/' rel='external noreferrer'>code source</a> est disponible selon les termes de l'<abbr title='GNU Affero General Public License version 3 ou toute version ultérieure'><a href='LICENSE.html' hreflang='en' rel='license'>AGPLv3</a>+</abbr>.",
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,41 +1,41 @@
|
||||||
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
||||||
$loc = array(
|
$loc = array(
|
||||||
'subtitle' => "Generator de còdis QR",
|
'subtitle' => "Generator de còdis QR",
|
||||||
'description' => "Generatz de còdis QR liurament. Causissètz lo contengut, la talha, las colors…",
|
'description' => "Generatz de còdis QR liurament. Causissètz lo contengut, la talha, las colors…",
|
||||||
|
|
||||||
'label_content' => "Tèxt de codar",
|
'label_content' => "Tèxt de codar",
|
||||||
'label_redundancy' => "Taus de redondància",
|
'label_redundancy' => "Taus de redondància",
|
||||||
'label_margin' => "Talha del marge",
|
'label_margin' => "Talha del marge",
|
||||||
'label_size' => "Talha de l’imatge",
|
'label_size' => "Talha de l’imatge",
|
||||||
'label_bgColor' => "Color de fons",
|
'label_bgColor' => "Color de fons",
|
||||||
'label_mainColor' => "Color del primièr plan",
|
'label_mainColor' => "Color del primièr plan",
|
||||||
|
|
||||||
'placeholder' => "Dintratz lo tèxt de codar en còdi QR",
|
'placeholder' => "Dintratz lo tèxt de codar en còdi QR",
|
||||||
'placeholder_pixels' => "auto",
|
'placeholder_pixels' => "auto",
|
||||||
|
|
||||||
'help_content' => "
|
'help_content' => "
|
||||||
<p>Podètz pas que codar lo tèxt que volètz.</p>
|
<p>Podètz pas que codar lo tèxt que volètz.</p>
|
||||||
<p>Los logicials que deschifran los còdis QR poirián suggerir de los dubrir dins de logicials especials, segon lor <a href='https://en.wikipedia.org/wiki/List_of_URI_schemes' hreflang='en' rel='help external noreferrer'>esquèma URI</a>.</p>
|
<p>Los logicials que deschifran los còdis QR poirián suggerir de los dubrir dins de logicials especials, segon lor <a href='https://en.wikipedia.org/wiki/List_of_URI_schemes' hreflang='en' rel='help external noreferrer'>esquèma URI</a>.</p>
|
||||||
<p>Per exemple, per dubrir la pagina web : https://www.example/</p>
|
<p>Per exemple, per dubrir la pagina web : https://www.example/</p>
|
||||||
<p>Per enviar un corrièl : mailto:contact@email.example</p>
|
<p>Per enviar un corrièl : mailto:contact@email.example</p>
|
||||||
<p>Per partejar de coordonadas geograficas : geo:48.867564,2.364057</p>
|
<p>Per partejar de coordonadas geograficas : geo:48.867564,2.364057</p>
|
||||||
",
|
",
|
||||||
'help_redundancy' => "La redondància es la duplicacion de las informacions al còdi QR per dire de corregir las errors pendent lo deschiframent. Un taux mai naut produirà un còdi mai grand, mas serà de melhor deschifrar corrèctament.",
|
'help_redundancy' => "La redondància es la duplicacion de las informacions al còdi QR per dire de corregir las errors pendent lo deschiframent. Un taux mai naut produirà un còdi mai grand, mas serà de melhor deschifrar corrèctament.",
|
||||||
'help_margin' => "Nombre de pixèls de la banda blanca a l’entorn del còdi QR.",
|
'help_margin' => "Nombre de pixèls de la banda blanca a l’entorn del còdi QR.",
|
||||||
'help_size' => "Per quant deu la dimensions de l’imatge èsser multiplicada ?",
|
'help_size' => "Per quant deu la dimensions de l’imatge èsser multiplicada ?",
|
||||||
|
|
||||||
'button_create' => "Generar",
|
'button_create' => "Generar",
|
||||||
'button_download' => "Telecargar aqueste còdi QR",
|
'button_download' => "Telecargar aqueste còdi QR",
|
||||||
|
|
||||||
'title_showOnlyQR' => "Mostrar sonque aqueste còdi QR",
|
'title_showOnlyQR' => "Mostrar sonque aqueste còdi QR",
|
||||||
|
|
||||||
'alt_QR_before' => 'Significacion de còdi QR"',
|
'alt_QR_before' => 'Significacion de còdi QR"',
|
||||||
'alt_QR_after' => '"',
|
'alt_QR_after' => '"',
|
||||||
|
|
||||||
'metaText_qr' => "
|
'metaText_qr' => "
|
||||||
<h3>Qu’es aquò un còdi QR ?</h3>
|
<h3>Qu’es aquò un còdi QR ?</h3>
|
||||||
Un còdi QR es un còdi de barras en doas dimensions dins lo qual lo tèxt es escrich en binari. Un aparalh equipat d’un capteur optic pòt lo deschifrar, amb l’aplicacion que cal.
|
Un còdi QR es un còdi de barras en doas dimensions dins lo qual lo tèxt es escrich en binari. Un aparalh equipat d’un capteur optic pòt lo deschifrar, amb l’aplicacion que cal.
|
||||||
<a lang='ca' href='https://ca.wikipedia.org/wiki/Codi_QR' hreflang='ca' rel='help external noreferrer'>Còdi QR a la Wikipèdia</a>.
|
<a lang='ca' href='https://ca.wikipedia.org/wiki/Codi_QR' hreflang='ca' rel='help external noreferrer'>Còdi QR a la Wikipèdia</a>.
|
||||||
",
|
",
|
||||||
'metaText_legal' => "LibreQR " . LIBREQR_VERSION . " es un logicial liure que son <a href='https://code.antopie.org/miraty/libreqr/' rel='external noreferrer'>còdi font</a> es disponible jols tèrmes de la licéncia <abbr title='GNU Affero General Public License version 3 or any later version'><a href='LICENSE.html' hreflang='en' rel='license'>AGPLv3</a>+</abbr>.",
|
'metaText_legal' => "LibreQR " . LIBREQR_VERSION . " es un logicial liure que son <a href='https://code.antopie.org/miraty/libreqr/' rel='external noreferrer'>còdi font</a> es disponible jols tèrmes de la licéncia <abbr title='GNU Affero General Public License version 3 or any later version'><a href='LICENSE.html' hreflang='en' rel='license'>AGPLv3</a>+</abbr>.",
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,32 +1,32 @@
|
||||||
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
||||||
$loc = array(
|
$loc = array(
|
||||||
'subtitle' => "subtitle",
|
'subtitle' => "subtitle",
|
||||||
'description' => "description",
|
'description' => "description",
|
||||||
|
|
||||||
'label_content' => "label_content",
|
'label_content' => "label_content",
|
||||||
'label_redundancy' => "label_redundancy",
|
'label_redundancy' => "label_redundancy",
|
||||||
'label_margin' => "label_margin",
|
'label_margin' => "label_margin",
|
||||||
'label_size' => "label_size",
|
'label_size' => "label_size",
|
||||||
'label_bgColor' => "label_bgColor",
|
'label_bgColor' => "label_bgColor",
|
||||||
'label_mainColor' => "label_mainColor",
|
'label_mainColor' => "label_mainColor",
|
||||||
|
|
||||||
'placeholder' => "placeholder",
|
'placeholder' => "placeholder",
|
||||||
|
|
||||||
'value_default' => "value_default",
|
'value_default' => "value_default",
|
||||||
|
|
||||||
'help_content' => "help_content",
|
'help_content' => "help_content",
|
||||||
'help_redundancy' => "help_redundancy",
|
'help_redundancy' => "help_redundancy",
|
||||||
'help_margin' => "help_margin",
|
'help_margin' => "help_margin",
|
||||||
'help_size' => "help_size",
|
'help_size' => "help_size",
|
||||||
|
|
||||||
'button_create' => "button_create",
|
'button_create' => "button_create",
|
||||||
'button_download' => "button_download",
|
'button_download' => "button_download",
|
||||||
|
|
||||||
'title_showOnlyQR' => "title_showOnlyQR",
|
'title_showOnlyQR' => "title_showOnlyQR",
|
||||||
|
|
||||||
'alt_QR_before' => "alt_QR_before",
|
'alt_QR_before' => "alt_QR_before",
|
||||||
'alt_QR_after' => "alt_QR_after",
|
'alt_QR_after' => "alt_QR_after",
|
||||||
|
|
||||||
'metaText_qr' => "metaText_qr",
|
'metaText_qr' => "metaText_qr",
|
||||||
'metaText_legal' => "metaText_legal",
|
'metaText_legal' => "metaText_legal",
|
||||||
);
|
);
|
||||||
|
|
591
style.less
|
@ -5,456 +5,457 @@
|
||||||
@import "themes/@{theme}/logo.less";
|
@import "themes/@{theme}/logo.less";
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
@media @light {
|
@media @light {
|
||||||
color-scheme: light;
|
color-scheme: light;
|
||||||
}
|
}
|
||||||
@media @dark {
|
@media @dark {
|
||||||
color-scheme: dark;
|
color-scheme: dark;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
* {
|
* {
|
||||||
font-family: system-ui, sans-serif;
|
font-family: system-ui, sans-serif;
|
||||||
|
|
||||||
scrollbar-width: auto;
|
scrollbar-width: auto;
|
||||||
|
|
||||||
@media @light {
|
@media @light {
|
||||||
scrollbar-color: @text-light @bg-light;
|
scrollbar-color: @text-light @bg-light;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media @dark {
|
@media @dark {
|
||||||
scrollbar-color: @text-dark @bg-dark;
|
scrollbar-color: @text-dark @bg-dark;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
html {
|
html {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
max-width: 812px;
|
max-width: 812px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
|
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
|
|
||||||
@media @light {
|
@media @light {
|
||||||
color: @text-light;
|
color: @text-light;
|
||||||
background-color: @bg-light;
|
background-color: @bg-light;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media @dark {
|
@media @dark {
|
||||||
color: @text-dark;
|
color: @text-dark;
|
||||||
background-color: @bg-dark;
|
background-color: @bg-dark;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
|
|
||||||
@media @light {
|
@media @light {
|
||||||
color: @text-light;
|
color: @text-light;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media @dark {
|
@media @dark {
|
||||||
color: @text-dark;
|
color: @text-dark;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
code {
|
code {
|
||||||
font-family: monospace;
|
font-family: monospace;
|
||||||
}
|
}
|
||||||
|
|
||||||
.helpText {
|
.helpText {
|
||||||
margin: 5px 0px 0px 0px;
|
margin: 5px 0px 0px 0px;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
border-width: 2px;
|
border-width: 2px;
|
||||||
border-style: dashed;
|
border-style: dashed;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
|
|
||||||
@media @light {
|
@media @light {
|
||||||
background-color: @bgHelp-light;
|
background-color: @bgHelp-light;
|
||||||
border-color: @borderHelp-light;
|
border-color: @borderHelp-light;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media @dark {
|
@media @dark {
|
||||||
background-color: @bgHelp-dark;
|
background-color: @bgHelp-dark;
|
||||||
border-color: @borderHelp-dark;
|
border-color: @borderHelp-dark;
|
||||||
}
|
}
|
||||||
|
|
||||||
& p {
|
& p {
|
||||||
margin-top: 0px;
|
margin-top: 0px;
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
&:last-child {
|
&:last-child {
|
||||||
margin-bottom: 0px;
|
margin-bottom: 0px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#sideParams {
|
#sideParams {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
& .param {
|
& .param {
|
||||||
max-width: 270px;
|
max-width: 270px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
summary {
|
summary {
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
cursor: help;
|
cursor: help;
|
||||||
}
|
}
|
||||||
|
|
||||||
#qrCode {
|
#qrCode {
|
||||||
max-width: 94%;
|
max-width: 94%;
|
||||||
width: auto;
|
width: auto;
|
||||||
height: auto;
|
height: auto;
|
||||||
|
|
||||||
@width: 2px;
|
@width: 2px;
|
||||||
@lenght: 16px;
|
@lenght: 16px;
|
||||||
padding: @width;
|
padding: @width;
|
||||||
|
|
||||||
&.needLightContrast {
|
&.needLightContrast {
|
||||||
@media @light {
|
@media @light {
|
||||||
background:
|
background:
|
||||||
linear-gradient(to right, @borderQr-light @width, transparent 0px) 0 0,
|
linear-gradient(to right, @borderQr-light @width, transparent 0px) 0 0,
|
||||||
linear-gradient(to right, @borderQr-light @width, transparent 0px) 0 100%,
|
linear-gradient(to right, @borderQr-light @width, transparent 0px) 0 100%,
|
||||||
linear-gradient(to left, @borderQr-light @width, transparent 0px) 100% 0,
|
linear-gradient(to left, @borderQr-light @width, transparent 0px) 100% 0,
|
||||||
linear-gradient(to left, @borderQr-light @width, transparent 0px) 100% 100%,
|
linear-gradient(to left, @borderQr-light @width, transparent 0px) 100% 100%,
|
||||||
linear-gradient(to bottom, @borderQr-light @width, transparent 0px) 0 0,
|
linear-gradient(to bottom, @borderQr-light @width, transparent 0px) 0 0,
|
||||||
linear-gradient(to bottom, @borderQr-light @width, transparent 0px) 100% 0,
|
linear-gradient(to bottom, @borderQr-light @width, transparent 0px) 100% 0,
|
||||||
linear-gradient(to top, @borderQr-light @width, transparent 0px) 0 100%,
|
linear-gradient(to top, @borderQr-light @width, transparent 0px) 0 100%,
|
||||||
linear-gradient(to top, @borderQr-light @width, transparent 0px) 100% 100%;
|
linear-gradient(to top, @borderQr-light @width, transparent 0px) 100% 100%;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-size: @lenght @lenght;
|
background-size: @lenght @lenght;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.needDarkContrast {
|
&.needDarkContrast {
|
||||||
@media @dark {
|
@media @dark {
|
||||||
background:
|
background:
|
||||||
linear-gradient(to right, @borderQr-dark @width, transparent 0px) 0 0,
|
linear-gradient(to right, @borderQr-dark @width, transparent 0px) 0 0,
|
||||||
linear-gradient(to right, @borderQr-dark @width, transparent 0px) 0 100%,
|
linear-gradient(to right, @borderQr-dark @width, transparent 0px) 0 100%,
|
||||||
linear-gradient(to left, @borderQr-dark @width, transparent 0px) 100% 0,
|
linear-gradient(to left, @borderQr-dark @width, transparent 0px) 100% 0,
|
||||||
linear-gradient(to left, @borderQr-dark @width, transparent 0px) 100% 100%,
|
linear-gradient(to left, @borderQr-dark @width, transparent 0px) 100% 100%,
|
||||||
linear-gradient(to bottom, @borderQr-dark @width, transparent 0px) 0 0,
|
linear-gradient(to bottom, @borderQr-dark @width, transparent 0px) 0 0,
|
||||||
linear-gradient(to bottom, @borderQr-dark @width, transparent 0px) 100% 0,
|
linear-gradient(to bottom, @borderQr-dark @width, transparent 0px) 100% 0,
|
||||||
linear-gradient(to top, @borderQr-dark @width, transparent 0px) 0 100%,
|
linear-gradient(to top, @borderQr-dark @width, transparent 0px) 0 100%,
|
||||||
linear-gradient(to top, @borderQr-dark @width, transparent 0px) 100% 100%;
|
linear-gradient(to top, @borderQr-dark @width, transparent 0px) 100% 100%;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-size: @lenght @lenght;
|
background-size: @lenght @lenght;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.centered {
|
.centered {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.button {
|
.button {
|
||||||
padding: 3px 10px 3px 10px;
|
padding: 3px 10px 3px 10px;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
header {
|
header {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding-top: 12px;
|
padding-top: 12px;
|
||||||
height: 64px;
|
height: 64px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#linkTitles::before {
|
#linkTitles::before {
|
||||||
width: 64px;
|
width: 64px;
|
||||||
height: 64px;
|
height: 64px;
|
||||||
content: "";
|
content: "";
|
||||||
|
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
@media @light {
|
@media @light {
|
||||||
background-image: var(--logo-light);
|
background-image: var(--logo-light);
|
||||||
}
|
}
|
||||||
|
|
||||||
@media @dark {
|
@media @dark {
|
||||||
background-image: var(--logo-dark);
|
background-image: var(--logo-dark);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#titles {
|
#titles {
|
||||||
margin-left: 2%;
|
margin-left: 2%;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1, h2, h3, h4, h5, h6 {
|
h1, h2, h3, h4, h5, h6 {
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
font-size: 29px;
|
font-size: 29px;
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
font-size: 22px;
|
font-size: 22px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#linkTitles {
|
#linkTitles {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
}
|
}
|
||||||
|
|
||||||
#downloadQR {
|
#downloadQR {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#showOnlyQR {
|
#showOnlyQR {
|
||||||
margin-top: 30px;
|
margin-top: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.param {
|
.param {
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
margin-left: 0px;
|
margin-left: 0px;
|
||||||
margin-right: 0px;
|
margin-right: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
::selection {
|
::selection {
|
||||||
|
|
||||||
@media @light {
|
@media @light {
|
||||||
color: @bg-light;
|
color: @bg-light;
|
||||||
background-color: @text-light;
|
background-color: @text-light;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media @dark {
|
@media @dark {
|
||||||
color: @bg-dark;
|
color: @bg-dark;
|
||||||
background-color: @text-dark;
|
background-color: @text-dark;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
label[for=txt] summary {
|
label[for=txt] summary {
|
||||||
margin-left: 22px;
|
margin-left: 22px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#colors {
|
#colors {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
& .param {
|
& .param {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.metaText {
|
.metaText {
|
||||||
padding: 6px;
|
padding: 6px;
|
||||||
@media @light {
|
@media @light {
|
||||||
color: @text-light;
|
color: @text-light;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media @dark {
|
@media @dark {
|
||||||
color: @text-dark;
|
color: @text-dark;
|
||||||
}
|
}
|
||||||
|
|
||||||
& a, a:visited {
|
& a, a:visited {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
@media @light {
|
@media @light {
|
||||||
color: @text-light;
|
color: @text-light;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media @dark {
|
@media @dark {
|
||||||
color: @text-dark;
|
color: @text-dark;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
footer {
|
footer {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
margin-top: auto;
|
margin-top: auto;
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
small {
|
small {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#info {
|
#info {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
|
|
||||||
& h3 {
|
& h3 {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
padding-bottom: 10px;
|
padding-bottom: 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Inputs */
|
/* Inputs */
|
||||||
|
|
||||||
#redundancy, #margin, #txt, #size, input[type=color], input[type=submit], .button {
|
#redundancy, #margin, #txt, #size, input[type=color], input[type=submit], .button {
|
||||||
border-width: 2px;
|
border-width: 2px;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
padding-left: 10px;
|
padding-left: 10px;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
transition: border-color 0.1s ease;
|
transition: border-color 0.1s ease;
|
||||||
margin: 6px;
|
margin: 6px;
|
||||||
|
|
||||||
@media @light {
|
@media @light {
|
||||||
color: @text-light;
|
color: @text-light;
|
||||||
background-color: @bgField-light;
|
background-color: @bgField-light;
|
||||||
border-color: @border-light;
|
border-color: @border-light;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media @dark {
|
@media @dark {
|
||||||
color: @text-dark;
|
color: @text-dark;
|
||||||
background-color: @bgField-dark;
|
background-color: @bgField-dark;
|
||||||
border-color: @border-dark;
|
border-color: @border-dark;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
border-width: 3px;
|
border-width: 3px;
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
|
|
||||||
@media @light {
|
@media @light {
|
||||||
border-color: @borderHover-light;
|
border-color: @borderHover-light;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media @dark {
|
@media @dark {
|
||||||
border-color: @borderHover-dark;
|
border-color: @borderHover-dark;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
border-width: 4px;
|
border-width: 4px;
|
||||||
margin: 4px;
|
margin: 4px;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
outline: none;
|
outline: none;
|
||||||
|
|
||||||
@media @light {
|
@media @light {
|
||||||
border-color: @borderFocus-light;
|
border-color: @borderFocus-light;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media @dark {
|
@media @dark {
|
||||||
border-color: @borderFocus-dark;
|
border-color: @borderFocus-dark;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#redundancy {
|
#redundancy {
|
||||||
width: 250px;
|
width: 250px;
|
||||||
height: 44px;
|
height: 44px;
|
||||||
&:hover {
|
&:hover {
|
||||||
width: 252px;
|
width: 252px;
|
||||||
height: 46px;
|
height: 46px;
|
||||||
}
|
}
|
||||||
&:focus {
|
&:focus {
|
||||||
width: 254px;
|
width: 254px;
|
||||||
height: 48px;
|
height: 48px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type=color] {
|
input[type=color] {
|
||||||
height: 60px;
|
height: 60px;
|
||||||
width: 84px;
|
width: 84px;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
&:hover {
|
&:hover {
|
||||||
height: 62px;
|
height: 62px;
|
||||||
width: 86px;
|
width: 86px;
|
||||||
}
|
}
|
||||||
&:focus {
|
&:focus {
|
||||||
height: 64px;
|
height: 64px;
|
||||||
width: 88px;
|
width: 88px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#size, #margin {
|
#size, #margin {
|
||||||
width: 234px;
|
width: 234px;
|
||||||
height: 38px;
|
height: 38px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#redundancy, #size, #margin {
|
#redundancy, #size, #margin {
|
||||||
|
|
||||||
@media @light {
|
@media @light {
|
||||||
background-color: @bgField-light;
|
background-color: @bgField-light;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media @dark {
|
@media @dark {
|
||||||
background-color: @bgField-dark;
|
background-color: @bgField-dark;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#txtParam {
|
#txtParam {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
#txt {
|
#txt {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
width: auto;
|
width: auto;
|
||||||
scrollbar-width: auto;
|
scrollbar-width: auto;
|
||||||
|
|
||||||
@media @light {
|
@media @light {
|
||||||
background-color: @bgTextarea-light;
|
background-color: @bgTextarea-light;
|
||||||
color: @textareaText-light;
|
color: @textareaText-light;
|
||||||
scrollbar-color: @textareaText-light @bgTextarea-light;
|
scrollbar-color: @textareaText-light @bgTextarea-light;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media @dark {
|
@media @dark {
|
||||||
background-color: @bgTextarea-dark;
|
background-color: @bgTextarea-dark;
|
||||||
color: @textareaText-dark;
|
color: @textareaText-dark;
|
||||||
scrollbar-color: @textareaText-dark @bgTextarea-dark;
|
scrollbar-color: @textareaText-dark @bgTextarea-dark;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type=submit] {
|
input[type=submit] {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 28px;
|
font-size: 28px;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
padding-left: 14px;
|
padding-left: 14px;
|
||||||
padding-right: 14px;
|
padding-right: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#txt::placeholder {
|
#txt::placeholder {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
font-family: system-ui, sans-serif;
|
font-family: system-ui, sans-serif;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
@media @light {
|
@media @light {
|
||||||
color: @textareaPlaceholder-light;
|
color: @textareaPlaceholder-light;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media @dark {
|
@media @dark {
|
||||||
color: @textareaPlaceholder-dark;
|
color: @textareaPlaceholder-dark;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
a[download]::before {
|
a[download]::before {
|
||||||
content: "💾 ";
|
content: "💾 ";
|
||||||
|
|
||||||
filter: drop-shadow(-1px 1px 1px white)
|
filter:
|
||||||
drop-shadow(1px -1px 1px white);
|
drop-shadow(-1px 1px 1px white)
|
||||||
|
drop-shadow(1px -1px 1px white);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,259 +1,259 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<svg height="16" width="16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
<svg height="16" width="16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
<rect fill="#000" height="1" width="1" x="0" y="0" />
|
<rect fill="#000" height="1" width="1" x="0" y="0" />
|
||||||
<rect fill="#000" height="1" width="1" x="1" y="0" />
|
<rect fill="#000" height="1" width="1" x="1" y="0" />
|
||||||
<rect fill="#000" height="1" width="1" x="2" y="0" />
|
<rect fill="#000" height="1" width="1" x="2" y="0" />
|
||||||
<rect fill="#000" height="1" width="1" x="3" y="0" />
|
<rect fill="#000" height="1" width="1" x="3" y="0" />
|
||||||
<rect fill="#000" height="1" width="1" x="4" y="0" />
|
<rect fill="#000" height="1" width="1" x="4" y="0" />
|
||||||
<rect fill="#000" height="1" width="1" x="5" y="0" />
|
<rect fill="#000" height="1" width="1" x="5" y="0" />
|
||||||
<rect fill="#000" height="1" width="1" x="6" y="0" />
|
<rect fill="#000" height="1" width="1" x="6" y="0" />
|
||||||
<rect fill="#000" height="1" width="1" x="7" y="0" />
|
<rect fill="#000" height="1" width="1" x="7" y="0" />
|
||||||
<rect fill="#000" height="1" width="1" x="8" y="0" />
|
<rect fill="#000" height="1" width="1" x="8" y="0" />
|
||||||
<rect fill="#000" height="1" width="1" x="9" y="0" />
|
<rect fill="#000" height="1" width="1" x="9" y="0" />
|
||||||
<rect fill="#000" height="1" width="1" x="10" y="0" />
|
<rect fill="#000" height="1" width="1" x="10" y="0" />
|
||||||
<rect fill="#000" height="1" width="1" x="11" y="0" />
|
<rect fill="#000" height="1" width="1" x="11" y="0" />
|
||||||
<rect fill="#000" height="1" width="1" x="12" y="0" />
|
<rect fill="#000" height="1" width="1" x="12" y="0" />
|
||||||
<rect fill="#000" height="1" width="1" x="13" y="0" />
|
<rect fill="#000" height="1" width="1" x="13" y="0" />
|
||||||
<rect fill="#000" height="1" width="1" x="14" y="0" />
|
<rect fill="#000" height="1" width="1" x="14" y="0" />
|
||||||
<rect fill="#000" height="1" width="1" x="15" y="0" />
|
<rect fill="#000" height="1" width="1" x="15" y="0" />
|
||||||
<rect fill="#000" height="1" width="1" x="0" y="1" />
|
<rect fill="#000" height="1" width="1" x="0" y="1" />
|
||||||
<rect fill="#fff" height="1" width="1" x="1" y="1" />
|
<rect fill="#fff" height="1" width="1" x="1" y="1" />
|
||||||
<rect fill="#fff" height="1" width="1" x="2" y="1" />
|
<rect fill="#fff" height="1" width="1" x="2" y="1" />
|
||||||
<rect fill="#fff" height="1" width="1" x="3" y="1" />
|
<rect fill="#fff" height="1" width="1" x="3" y="1" />
|
||||||
<rect fill="#fff" height="1" width="1" x="4" y="1" />
|
<rect fill="#fff" height="1" width="1" x="4" y="1" />
|
||||||
<rect fill="#fff" height="1" width="1" x="5" y="1" />
|
<rect fill="#fff" height="1" width="1" x="5" y="1" />
|
||||||
<rect fill="#000" height="1" width="1" x="6" y="1" />
|
<rect fill="#000" height="1" width="1" x="6" y="1" />
|
||||||
<rect fill="#000" height="1" width="1" x="7" y="1" />
|
<rect fill="#000" height="1" width="1" x="7" y="1" />
|
||||||
<rect fill="#fff" height="1" width="1" x="8" y="1" />
|
<rect fill="#fff" height="1" width="1" x="8" y="1" />
|
||||||
<rect fill="#000" height="1" width="1" x="9" y="1" />
|
<rect fill="#000" height="1" width="1" x="9" y="1" />
|
||||||
<rect fill="#fff" height="1" width="1" x="10" y="1" />
|
<rect fill="#fff" height="1" width="1" x="10" y="1" />
|
||||||
<rect fill="#fff" height="1" width="1" x="11" y="1" />
|
<rect fill="#fff" height="1" width="1" x="11" y="1" />
|
||||||
<rect fill="#fff" height="1" width="1" x="12" y="1" />
|
<rect fill="#fff" height="1" width="1" x="12" y="1" />
|
||||||
<rect fill="#fff" height="1" width="1" x="13" y="1" />
|
<rect fill="#fff" height="1" width="1" x="13" y="1" />
|
||||||
<rect fill="#fff" height="1" width="1" x="14" y="1" />
|
<rect fill="#fff" height="1" width="1" x="14" y="1" />
|
||||||
<rect fill="#000" height="1" width="1" x="15" y="1" />
|
<rect fill="#000" height="1" width="1" x="15" y="1" />
|
||||||
<rect fill="#000" height="1" width="1" x="0" y="2" />
|
<rect fill="#000" height="1" width="1" x="0" y="2" />
|
||||||
<rect fill="#fff" height="1" width="1" x="1" y="2" />
|
<rect fill="#fff" height="1" width="1" x="1" y="2" />
|
||||||
<rect fill="#000" height="1" width="1" x="2" y="2" />
|
<rect fill="#000" height="1" width="1" x="2" y="2" />
|
||||||
<rect fill="#000" height="1" width="1" x="3" y="2" />
|
<rect fill="#000" height="1" width="1" x="3" y="2" />
|
||||||
<rect fill="#000" height="1" width="1" x="4" y="2" />
|
<rect fill="#000" height="1" width="1" x="4" y="2" />
|
||||||
<rect fill="#fff" height="1" width="1" x="5" y="2" />
|
<rect fill="#fff" height="1" width="1" x="5" y="2" />
|
||||||
<rect fill="#000" height="1" width="1" x="6" y="2" />
|
<rect fill="#000" height="1" width="1" x="6" y="2" />
|
||||||
<rect fill="#fff" height="1" width="1" x="7" y="2" />
|
<rect fill="#fff" height="1" width="1" x="7" y="2" />
|
||||||
<rect fill="#000" height="1" width="1" x="8" y="2" />
|
<rect fill="#000" height="1" width="1" x="8" y="2" />
|
||||||
<rect fill="#000" height="1" width="1" x="9" y="2" />
|
<rect fill="#000" height="1" width="1" x="9" y="2" />
|
||||||
<rect fill="#fff" height="1" width="1" x="10" y="2" />
|
<rect fill="#fff" height="1" width="1" x="10" y="2" />
|
||||||
<rect fill="#000" height="1" width="1" x="11" y="2" />
|
<rect fill="#000" height="1" width="1" x="11" y="2" />
|
||||||
<rect fill="#000" height="1" width="1" x="12" y="2" />
|
<rect fill="#000" height="1" width="1" x="12" y="2" />
|
||||||
<rect fill="#000" height="1" width="1" x="13" y="2" />
|
<rect fill="#000" height="1" width="1" x="13" y="2" />
|
||||||
<rect fill="#fff" height="1" width="1" x="14" y="2" />
|
<rect fill="#fff" height="1" width="1" x="14" y="2" />
|
||||||
<rect fill="#000" height="1" width="1" x="15" y="2" />
|
<rect fill="#000" height="1" width="1" x="15" y="2" />
|
||||||
<rect fill="#000" height="1" width="1" x="0" y="3" />
|
<rect fill="#000" height="1" width="1" x="0" y="3" />
|
||||||
<rect fill="#fff" height="1" width="1" x="1" y="3" />
|
<rect fill="#fff" height="1" width="1" x="1" y="3" />
|
||||||
<rect fill="#000" height="1" width="1" x="2" y="3" />
|
<rect fill="#000" height="1" width="1" x="2" y="3" />
|
||||||
<rect fill="#fff" height="1" width="1" x="3" y="3" />
|
<rect fill="#fff" height="1" width="1" x="3" y="3" />
|
||||||
<rect fill="#000" height="1" width="1" x="4" y="3" />
|
<rect fill="#000" height="1" width="1" x="4" y="3" />
|
||||||
<rect fill="#fff" height="1" width="1" x="5" y="3" />
|
<rect fill="#fff" height="1" width="1" x="5" y="3" />
|
||||||
<rect fill="#000" height="1" width="1" x="6" y="3" />
|
<rect fill="#000" height="1" width="1" x="6" y="3" />
|
||||||
<rect fill="#fff" height="1" width="1" x="7" y="3" />
|
<rect fill="#fff" height="1" width="1" x="7" y="3" />
|
||||||
<rect fill="#000" height="1" width="1" x="8" y="3" />
|
<rect fill="#000" height="1" width="1" x="8" y="3" />
|
||||||
<rect fill="#000" height="1" width="1" x="9" y="3" />
|
<rect fill="#000" height="1" width="1" x="9" y="3" />
|
||||||
<rect fill="#fff" height="1" width="1" x="10" y="3" />
|
<rect fill="#fff" height="1" width="1" x="10" y="3" />
|
||||||
<rect fill="#000" height="1" width="1" x="11" y="3" />
|
<rect fill="#000" height="1" width="1" x="11" y="3" />
|
||||||
<rect fill="#fff" height="1" width="1" x="12" y="3" />
|
<rect fill="#fff" height="1" width="1" x="12" y="3" />
|
||||||
<rect fill="#000" height="1" width="1" x="13" y="3" />
|
<rect fill="#000" height="1" width="1" x="13" y="3" />
|
||||||
<rect fill="#fff" height="1" width="1" x="14" y="3" />
|
<rect fill="#fff" height="1" width="1" x="14" y="3" />
|
||||||
<rect fill="#000" height="1" width="1" x="15" y="3" />
|
<rect fill="#000" height="1" width="1" x="15" y="3" />
|
||||||
<rect fill="#000" height="1" width="1" x="0" y="4" />
|
<rect fill="#000" height="1" width="1" x="0" y="4" />
|
||||||
<rect fill="#fff" height="1" width="1" x="1" y="4" />
|
<rect fill="#fff" height="1" width="1" x="1" y="4" />
|
||||||
<rect fill="#000" height="1" width="1" x="2" y="4" />
|
<rect fill="#000" height="1" width="1" x="2" y="4" />
|
||||||
<rect fill="#000" height="1" width="1" x="3" y="4" />
|
<rect fill="#000" height="1" width="1" x="3" y="4" />
|
||||||
<rect fill="#000" height="1" width="1" x="4" y="4" />
|
<rect fill="#000" height="1" width="1" x="4" y="4" />
|
||||||
<rect fill="#fff" height="1" width="1" x="5" y="4" />
|
<rect fill="#fff" height="1" width="1" x="5" y="4" />
|
||||||
<rect fill="#000" height="1" width="1" x="6" y="4" />
|
<rect fill="#000" height="1" width="1" x="6" y="4" />
|
||||||
<rect fill="#000" height="1" width="1" x="7" y="4" />
|
<rect fill="#000" height="1" width="1" x="7" y="4" />
|
||||||
<rect fill="#fff" height="1" width="1" x="8" y="4" />
|
<rect fill="#fff" height="1" width="1" x="8" y="4" />
|
||||||
<rect fill="#fff" height="1" width="1" x="9" y="4" />
|
<rect fill="#fff" height="1" width="1" x="9" y="4" />
|
||||||
<rect fill="#fff" height="1" width="1" x="10" y="4" />
|
<rect fill="#fff" height="1" width="1" x="10" y="4" />
|
||||||
<rect fill="#000" height="1" width="1" x="11" y="4" />
|
<rect fill="#000" height="1" width="1" x="11" y="4" />
|
||||||
<rect fill="#000" height="1" width="1" x="12" y="4" />
|
<rect fill="#000" height="1" width="1" x="12" y="4" />
|
||||||
<rect fill="#000" height="1" width="1" x="13" y="4" />
|
<rect fill="#000" height="1" width="1" x="13" y="4" />
|
||||||
<rect fill="#fff" height="1" width="1" x="14" y="4" />
|
<rect fill="#fff" height="1" width="1" x="14" y="4" />
|
||||||
<rect fill="#000" height="1" width="1" x="15" y="4" />
|
<rect fill="#000" height="1" width="1" x="15" y="4" />
|
||||||
<rect fill="#000" height="1" width="1" x="0" y="5" />
|
<rect fill="#000" height="1" width="1" x="0" y="5" />
|
||||||
<rect fill="#fff" height="1" width="1" x="1" y="5" />
|
<rect fill="#fff" height="1" width="1" x="1" y="5" />
|
||||||
<rect fill="#fff" height="1" width="1" x="2" y="5" />
|
<rect fill="#fff" height="1" width="1" x="2" y="5" />
|
||||||
<rect fill="#fff" height="1" width="1" x="3" y="5" />
|
<rect fill="#fff" height="1" width="1" x="3" y="5" />
|
||||||
<rect fill="#fff" height="1" width="1" x="4" y="5" />
|
<rect fill="#fff" height="1" width="1" x="4" y="5" />
|
||||||
<rect fill="#fff" height="1" width="1" x="5" y="5" />
|
<rect fill="#fff" height="1" width="1" x="5" y="5" />
|
||||||
<rect fill="#fff" height="1" width="1" x="6" y="5" />
|
<rect fill="#fff" height="1" width="1" x="6" y="5" />
|
||||||
<rect fill="#000" height="1" width="1" x="7" y="5" />
|
<rect fill="#000" height="1" width="1" x="7" y="5" />
|
||||||
<rect fill="#fff" height="1" width="1" x="8" y="5" />
|
<rect fill="#fff" height="1" width="1" x="8" y="5" />
|
||||||
<rect fill="#000" height="1" width="1" x="9" y="5" />
|
<rect fill="#000" height="1" width="1" x="9" y="5" />
|
||||||
<rect fill="#fff" height="1" width="1" x="10" y="5" />
|
<rect fill="#fff" height="1" width="1" x="10" y="5" />
|
||||||
<rect fill="#fff" height="1" width="1" x="11" y="5" />
|
<rect fill="#fff" height="1" width="1" x="11" y="5" />
|
||||||
<rect fill="#fff" height="1" width="1" x="12" y="5" />
|
<rect fill="#fff" height="1" width="1" x="12" y="5" />
|
||||||
<rect fill="#fff" height="1" width="1" x="13" y="5" />
|
<rect fill="#fff" height="1" width="1" x="13" y="5" />
|
||||||
<rect fill="#fff" height="1" width="1" x="14" y="5" />
|
<rect fill="#fff" height="1" width="1" x="14" y="5" />
|
||||||
<rect fill="#000" height="1" width="1" x="15" y="5" />
|
<rect fill="#000" height="1" width="1" x="15" y="5" />
|
||||||
<rect fill="#000" height="1" width="1" x="0" y="6" />
|
<rect fill="#000" height="1" width="1" x="0" y="6" />
|
||||||
<rect fill="#000" height="1" width="1" x="1" y="6" />
|
<rect fill="#000" height="1" width="1" x="1" y="6" />
|
||||||
<rect fill="#000" height="1" width="1" x="2" y="6" />
|
<rect fill="#000" height="1" width="1" x="2" y="6" />
|
||||||
<rect fill="#000" height="1" width="1" x="3" y="6" />
|
<rect fill="#000" height="1" width="1" x="3" y="6" />
|
||||||
<rect fill="#000" height="1" width="1" x="4" y="6" />
|
<rect fill="#000" height="1" width="1" x="4" y="6" />
|
||||||
<rect fill="#000" height="1" width="1" x="5" y="6" />
|
<rect fill="#000" height="1" width="1" x="5" y="6" />
|
||||||
<rect fill="#000" height="1" width="1" x="6" y="6" />
|
<rect fill="#000" height="1" width="1" x="6" y="6" />
|
||||||
<rect fill="#000" height="1" width="1" x="7" y="6" />
|
<rect fill="#000" height="1" width="1" x="7" y="6" />
|
||||||
<rect fill="#000" height="1" width="1" x="8" y="6" />
|
<rect fill="#000" height="1" width="1" x="8" y="6" />
|
||||||
<rect fill="#fff" height="1" width="1" x="9" y="6" />
|
<rect fill="#fff" height="1" width="1" x="9" y="6" />
|
||||||
<rect fill="#000" height="1" width="1" x="10" y="6" />
|
<rect fill="#000" height="1" width="1" x="10" y="6" />
|
||||||
<rect fill="#fff" height="1" width="1" x="11" y="6" />
|
<rect fill="#fff" height="1" width="1" x="11" y="6" />
|
||||||
<rect fill="#000" height="1" width="1" x="12" y="6" />
|
<rect fill="#000" height="1" width="1" x="12" y="6" />
|
||||||
<rect fill="#000" height="1" width="1" x="13" y="6" />
|
<rect fill="#000" height="1" width="1" x="13" y="6" />
|
||||||
<rect fill="#fff" height="1" width="1" x="14" y="6" />
|
<rect fill="#fff" height="1" width="1" x="14" y="6" />
|
||||||
<rect fill="#000" height="1" width="1" x="15" y="6" />
|
<rect fill="#000" height="1" width="1" x="15" y="6" />
|
||||||
<rect fill="#000" height="1" width="1" x="0" y="7" />
|
<rect fill="#000" height="1" width="1" x="0" y="7" />
|
||||||
<rect fill="#fff" height="1" width="1" x="1" y="7" />
|
<rect fill="#fff" height="1" width="1" x="1" y="7" />
|
||||||
<rect fill="#fff" height="1" width="1" x="2" y="7" />
|
<rect fill="#fff" height="1" width="1" x="2" y="7" />
|
||||||
<rect fill="#000" height="1" width="1" x="3" y="7" />
|
<rect fill="#000" height="1" width="1" x="3" y="7" />
|
||||||
<rect fill="#fff" height="1" width="1" x="4" y="7" />
|
<rect fill="#fff" height="1" width="1" x="4" y="7" />
|
||||||
<rect fill="#fff" height="1" width="1" x="5" y="7" />
|
<rect fill="#fff" height="1" width="1" x="5" y="7" />
|
||||||
<rect fill="#fff" height="1" width="1" x="6" y="7" />
|
<rect fill="#fff" height="1" width="1" x="6" y="7" />
|
||||||
<rect fill="#fff" height="1" width="1" x="7" y="7" />
|
<rect fill="#fff" height="1" width="1" x="7" y="7" />
|
||||||
<rect fill="#000" height="1" width="1" x="8" y="7" />
|
<rect fill="#000" height="1" width="1" x="8" y="7" />
|
||||||
<rect fill="#fff" height="1" width="1" x="9" y="7" />
|
<rect fill="#fff" height="1" width="1" x="9" y="7" />
|
||||||
<rect fill="#000" height="1" width="1" x="10" y="7" />
|
<rect fill="#000" height="1" width="1" x="10" y="7" />
|
||||||
<rect fill="#000" height="1" width="1" x="11" y="7" />
|
<rect fill="#000" height="1" width="1" x="11" y="7" />
|
||||||
<rect fill="#fff" height="1" width="1" x="12" y="7" />
|
<rect fill="#fff" height="1" width="1" x="12" y="7" />
|
||||||
<rect fill="#000" height="1" width="1" x="13" y="7" />
|
<rect fill="#000" height="1" width="1" x="13" y="7" />
|
||||||
<rect fill="#000" height="1" width="1" x="14" y="7" />
|
<rect fill="#000" height="1" width="1" x="14" y="7" />
|
||||||
<rect fill="#000" height="1" width="1" x="15" y="7" />
|
<rect fill="#000" height="1" width="1" x="15" y="7" />
|
||||||
<rect fill="#000" height="1" width="1" x="0" y="8" />
|
<rect fill="#000" height="1" width="1" x="0" y="8" />
|
||||||
<rect fill="#000" height="1" width="1" x="1" y="8" />
|
<rect fill="#000" height="1" width="1" x="1" y="8" />
|
||||||
<rect fill="#fff" height="1" width="1" x="2" y="8" />
|
<rect fill="#fff" height="1" width="1" x="2" y="8" />
|
||||||
<rect fill="#fff" height="1" width="1" x="3" y="8" />
|
<rect fill="#fff" height="1" width="1" x="3" y="8" />
|
||||||
<rect fill="#000" height="1" width="1" x="4" y="8" />
|
<rect fill="#000" height="1" width="1" x="4" y="8" />
|
||||||
<rect fill="#000" height="1" width="1" x="5" y="8" />
|
<rect fill="#000" height="1" width="1" x="5" y="8" />
|
||||||
<rect fill="#000" height="1" width="1" x="6" y="8" />
|
<rect fill="#000" height="1" width="1" x="6" y="8" />
|
||||||
<rect fill="#fff" height="1" width="1" x="7" y="8" />
|
<rect fill="#fff" height="1" width="1" x="7" y="8" />
|
||||||
<rect fill="#fff" height="1" width="1" x="8" y="8" />
|
<rect fill="#fff" height="1" width="1" x="8" y="8" />
|
||||||
<rect fill="#000" height="1" width="1" x="9" y="8" />
|
<rect fill="#000" height="1" width="1" x="9" y="8" />
|
||||||
<rect fill="#000" height="1" width="1" x="10" y="8" />
|
<rect fill="#000" height="1" width="1" x="10" y="8" />
|
||||||
<rect fill="#000" height="1" width="1" x="11" y="8" />
|
<rect fill="#000" height="1" width="1" x="11" y="8" />
|
||||||
<rect fill="#fff" height="1" width="1" x="12" y="8" />
|
<rect fill="#fff" height="1" width="1" x="12" y="8" />
|
||||||
<rect fill="#000" height="1" width="1" x="13" y="8" />
|
<rect fill="#000" height="1" width="1" x="13" y="8" />
|
||||||
<rect fill="#fff" height="1" width="1" x="14" y="8" />
|
<rect fill="#fff" height="1" width="1" x="14" y="8" />
|
||||||
<rect fill="#000" height="1" width="1" x="15" y="8" />
|
<rect fill="#000" height="1" width="1" x="15" y="8" />
|
||||||
<rect fill="#000" height="1" width="1" x="0" y="9" />
|
<rect fill="#000" height="1" width="1" x="0" y="9" />
|
||||||
<rect fill="#000" height="1" width="1" x="1" y="9" />
|
<rect fill="#000" height="1" width="1" x="1" y="9" />
|
||||||
<rect fill="#000" height="1" width="1" x="2" y="9" />
|
<rect fill="#000" height="1" width="1" x="2" y="9" />
|
||||||
<rect fill="#fff" height="1" width="1" x="3" y="9" />
|
<rect fill="#fff" height="1" width="1" x="3" y="9" />
|
||||||
<rect fill="#fff" height="1" width="1" x="4" y="9" />
|
<rect fill="#fff" height="1" width="1" x="4" y="9" />
|
||||||
<rect fill="#000" height="1" width="1" x="5" y="9" />
|
<rect fill="#000" height="1" width="1" x="5" y="9" />
|
||||||
<rect fill="#000" height="1" width="1" x="6" y="9" />
|
<rect fill="#000" height="1" width="1" x="6" y="9" />
|
||||||
<rect fill="#000" height="1" width="1" x="7" y="9" />
|
<rect fill="#000" height="1" width="1" x="7" y="9" />
|
||||||
<rect fill="#000" height="1" width="1" x="8" y="9" />
|
<rect fill="#000" height="1" width="1" x="8" y="9" />
|
||||||
<rect fill="#000" height="1" width="1" x="9" y="9" />
|
<rect fill="#000" height="1" width="1" x="9" y="9" />
|
||||||
<rect fill="#fff" height="1" width="1" x="10" y="9" />
|
<rect fill="#fff" height="1" width="1" x="10" y="9" />
|
||||||
<rect fill="#fff" height="1" width="1" x="11" y="9" />
|
<rect fill="#fff" height="1" width="1" x="11" y="9" />
|
||||||
<rect fill="#fff" height="1" width="1" x="12" y="9" />
|
<rect fill="#fff" height="1" width="1" x="12" y="9" />
|
||||||
<rect fill="#000" height="1" width="1" x="13" y="9" />
|
<rect fill="#000" height="1" width="1" x="13" y="9" />
|
||||||
<rect fill="#000" height="1" width="1" x="14" y="9" />
|
<rect fill="#000" height="1" width="1" x="14" y="9" />
|
||||||
<rect fill="#000" height="1" width="1" x="15" y="9" />
|
<rect fill="#000" height="1" width="1" x="15" y="9" />
|
||||||
<rect fill="#000" height="1" width="1" x="0" y="10" />
|
<rect fill="#000" height="1" width="1" x="0" y="10" />
|
||||||
<rect fill="#fff" height="1" width="1" x="1" y="10" />
|
<rect fill="#fff" height="1" width="1" x="1" y="10" />
|
||||||
<rect fill="#fff" height="1" width="1" x="2" y="10" />
|
<rect fill="#fff" height="1" width="1" x="2" y="10" />
|
||||||
<rect fill="#fff" height="1" width="1" x="3" y="10" />
|
<rect fill="#fff" height="1" width="1" x="3" y="10" />
|
||||||
<rect fill="#fff" height="1" width="1" x="4" y="10" />
|
<rect fill="#fff" height="1" width="1" x="4" y="10" />
|
||||||
<rect fill="#fff" height="1" width="1" x="5" y="10" />
|
<rect fill="#fff" height="1" width="1" x="5" y="10" />
|
||||||
<rect fill="#fff" height="1" width="1" x="6" y="10" />
|
<rect fill="#fff" height="1" width="1" x="6" y="10" />
|
||||||
<rect fill="#000" height="1" width="1" x="7" y="10" />
|
<rect fill="#000" height="1" width="1" x="7" y="10" />
|
||||||
<rect fill="#000" height="1" width="1" x="8" y="10" />
|
<rect fill="#000" height="1" width="1" x="8" y="10" />
|
||||||
<rect fill="#fff" height="1" width="1" x="9" y="10" />
|
<rect fill="#fff" height="1" width="1" x="9" y="10" />
|
||||||
<rect fill="#fff" height="1" width="1" x="10" y="10" />
|
<rect fill="#fff" height="1" width="1" x="10" y="10" />
|
||||||
<rect fill="#000" height="1" width="1" x="11" y="10" />
|
<rect fill="#000" height="1" width="1" x="11" y="10" />
|
||||||
<rect fill="#000" height="1" width="1" x="12" y="10" />
|
<rect fill="#000" height="1" width="1" x="12" y="10" />
|
||||||
<rect fill="#fff" height="1" width="1" x="13" y="10" />
|
<rect fill="#fff" height="1" width="1" x="13" y="10" />
|
||||||
<rect fill="#000" height="1" width="1" x="14" y="10" />
|
<rect fill="#000" height="1" width="1" x="14" y="10" />
|
||||||
<rect fill="#000" height="1" width="1" x="15" y="10" />
|
<rect fill="#000" height="1" width="1" x="15" y="10" />
|
||||||
<rect fill="#000" height="1" width="1" x="0" y="11" />
|
<rect fill="#000" height="1" width="1" x="0" y="11" />
|
||||||
<rect fill="#fff" height="1" width="1" x="1" y="11" />
|
<rect fill="#fff" height="1" width="1" x="1" y="11" />
|
||||||
<rect fill="#000" height="1" width="1" x="2" y="11" />
|
<rect fill="#000" height="1" width="1" x="2" y="11" />
|
||||||
<rect fill="#000" height="1" width="1" x="3" y="11" />
|
<rect fill="#000" height="1" width="1" x="3" y="11" />
|
||||||
<rect fill="#000" height="1" width="1" x="4" y="11" />
|
<rect fill="#000" height="1" width="1" x="4" y="11" />
|
||||||
<rect fill="#fff" height="1" width="1" x="5" y="11" />
|
<rect fill="#fff" height="1" width="1" x="5" y="11" />
|
||||||
<rect fill="#fff" height="1" width="1" x="6" y="11" />
|
<rect fill="#fff" height="1" width="1" x="6" y="11" />
|
||||||
<rect fill="#000" height="1" width="1" x="7" y="11" />
|
<rect fill="#000" height="1" width="1" x="7" y="11" />
|
||||||
<rect fill="#fff" height="1" width="1" x="8" y="11" />
|
<rect fill="#fff" height="1" width="1" x="8" y="11" />
|
||||||
<rect fill="#000" height="1" width="1" x="9" y="11" />
|
<rect fill="#000" height="1" width="1" x="9" y="11" />
|
||||||
<rect fill="#000" height="1" width="1" x="10" y="11" />
|
<rect fill="#000" height="1" width="1" x="10" y="11" />
|
||||||
<rect fill="#000" height="1" width="1" x="11" y="11" />
|
<rect fill="#000" height="1" width="1" x="11" y="11" />
|
||||||
<rect fill="#fff" height="1" width="1" x="12" y="11" />
|
<rect fill="#fff" height="1" width="1" x="12" y="11" />
|
||||||
<rect fill="#fff" height="1" width="1" x="13" y="11" />
|
<rect fill="#fff" height="1" width="1" x="13" y="11" />
|
||||||
<rect fill="#000" height="1" width="1" x="14" y="11" />
|
<rect fill="#000" height="1" width="1" x="14" y="11" />
|
||||||
<rect fill="#000" height="1" width="1" x="15" y="11" />
|
<rect fill="#000" height="1" width="1" x="15" y="11" />
|
||||||
<rect fill="#000" height="1" width="1" x="0" y="12" />
|
<rect fill="#000" height="1" width="1" x="0" y="12" />
|
||||||
<rect fill="#fff" height="1" width="1" x="1" y="12" />
|
<rect fill="#fff" height="1" width="1" x="1" y="12" />
|
||||||
<rect fill="#000" height="1" width="1" x="2" y="12" />
|
<rect fill="#000" height="1" width="1" x="2" y="12" />
|
||||||
<rect fill="#fff" height="1" width="1" x="3" y="12" />
|
<rect fill="#fff" height="1" width="1" x="3" y="12" />
|
||||||
<rect fill="#000" height="1" width="1" x="4" y="12" />
|
<rect fill="#000" height="1" width="1" x="4" y="12" />
|
||||||
<rect fill="#fff" height="1" width="1" x="5" y="12" />
|
<rect fill="#fff" height="1" width="1" x="5" y="12" />
|
||||||
<rect fill="#fff" height="1" width="1" x="6" y="12" />
|
<rect fill="#fff" height="1" width="1" x="6" y="12" />
|
||||||
<rect fill="#fff" height="1" width="1" x="7" y="12" />
|
<rect fill="#fff" height="1" width="1" x="7" y="12" />
|
||||||
<rect fill="#fff" height="1" width="1" x="8" y="12" />
|
<rect fill="#fff" height="1" width="1" x="8" y="12" />
|
||||||
<rect fill="#fff" height="1" width="1" x="9" y="12" />
|
<rect fill="#fff" height="1" width="1" x="9" y="12" />
|
||||||
<rect fill="#fff" height="1" width="1" x="10" y="12" />
|
<rect fill="#fff" height="1" width="1" x="10" y="12" />
|
||||||
<rect fill="#000" height="1" width="1" x="11" y="12" />
|
<rect fill="#000" height="1" width="1" x="11" y="12" />
|
||||||
<rect fill="#000" height="1" width="1" x="12" y="12" />
|
<rect fill="#000" height="1" width="1" x="12" y="12" />
|
||||||
<rect fill="#fff" height="1" width="1" x="13" y="12" />
|
<rect fill="#fff" height="1" width="1" x="13" y="12" />
|
||||||
<rect fill="#fff" height="1" width="1" x="14" y="12" />
|
<rect fill="#fff" height="1" width="1" x="14" y="12" />
|
||||||
<rect fill="#000" height="1" width="1" x="15" y="12" />
|
<rect fill="#000" height="1" width="1" x="15" y="12" />
|
||||||
<rect fill="#000" height="1" width="1" x="0" y="13" />
|
<rect fill="#000" height="1" width="1" x="0" y="13" />
|
||||||
<rect fill="#fff" height="1" width="1" x="1" y="13" />
|
<rect fill="#fff" height="1" width="1" x="1" y="13" />
|
||||||
<rect fill="#000" height="1" width="1" x="2" y="13" />
|
<rect fill="#000" height="1" width="1" x="2" y="13" />
|
||||||
<rect fill="#000" height="1" width="1" x="3" y="13" />
|
<rect fill="#000" height="1" width="1" x="3" y="13" />
|
||||||
<rect fill="#000" height="1" width="1" x="4" y="13" />
|
<rect fill="#000" height="1" width="1" x="4" y="13" />
|
||||||
<rect fill="#fff" height="1" width="1" x="5" y="13" />
|
<rect fill="#fff" height="1" width="1" x="5" y="13" />
|
||||||
<rect fill="#000" height="1" width="1" x="6" y="13" />
|
<rect fill="#000" height="1" width="1" x="6" y="13" />
|
||||||
<rect fill="#fff" height="1" width="1" x="7" y="13" />
|
<rect fill="#fff" height="1" width="1" x="7" y="13" />
|
||||||
<rect fill="#fff" height="1" width="1" x="8" y="13" />
|
<rect fill="#fff" height="1" width="1" x="8" y="13" />
|
||||||
<rect fill="#fff" height="1" width="1" x="9" y="13" />
|
<rect fill="#fff" height="1" width="1" x="9" y="13" />
|
||||||
<rect fill="#000" height="1" width="1" x="10" y="13" />
|
<rect fill="#000" height="1" width="1" x="10" y="13" />
|
||||||
<rect fill="#000" height="1" width="1" x="11" y="13" />
|
<rect fill="#000" height="1" width="1" x="11" y="13" />
|
||||||
<rect fill="#fff" height="1" width="1" x="12" y="13" />
|
<rect fill="#fff" height="1" width="1" x="12" y="13" />
|
||||||
<rect fill="#fff" height="1" width="1" x="13" y="13" />
|
<rect fill="#fff" height="1" width="1" x="13" y="13" />
|
||||||
<rect fill="#fff" height="1" width="1" x="14" y="13" />
|
<rect fill="#fff" height="1" width="1" x="14" y="13" />
|
||||||
<rect fill="#000" height="1" width="1" x="15" y="13" />
|
<rect fill="#000" height="1" width="1" x="15" y="13" />
|
||||||
<rect fill="#000" height="1" width="1" x="0" y="14" />
|
<rect fill="#000" height="1" width="1" x="0" y="14" />
|
||||||
<rect fill="#fff" height="1" width="1" x="1" y="14" />
|
<rect fill="#fff" height="1" width="1" x="1" y="14" />
|
||||||
<rect fill="#fff" height="1" width="1" x="2" y="14" />
|
<rect fill="#fff" height="1" width="1" x="2" y="14" />
|
||||||
<rect fill="#fff" height="1" width="1" x="3" y="14" />
|
<rect fill="#fff" height="1" width="1" x="3" y="14" />
|
||||||
<rect fill="#fff" height="1" width="1" x="4" y="14" />
|
<rect fill="#fff" height="1" width="1" x="4" y="14" />
|
||||||
<rect fill="#fff" height="1" width="1" x="5" y="14" />
|
<rect fill="#fff" height="1" width="1" x="5" y="14" />
|
||||||
<rect fill="#000" height="1" width="1" x="6" y="14" />
|
<rect fill="#000" height="1" width="1" x="6" y="14" />
|
||||||
<rect fill="#000" height="1" width="1" x="7" y="14" />
|
<rect fill="#000" height="1" width="1" x="7" y="14" />
|
||||||
<rect fill="#000" height="1" width="1" x="8" y="14" />
|
<rect fill="#000" height="1" width="1" x="8" y="14" />
|
||||||
<rect fill="#000" height="1" width="1" x="9" y="14" />
|
<rect fill="#000" height="1" width="1" x="9" y="14" />
|
||||||
<rect fill="#000" height="1" width="1" x="10" y="14" />
|
<rect fill="#000" height="1" width="1" x="10" y="14" />
|
||||||
<rect fill="#fff" height="1" width="1" x="11" y="14" />
|
<rect fill="#fff" height="1" width="1" x="11" y="14" />
|
||||||
<rect fill="#000" height="1" width="1" x="12" y="14" />
|
<rect fill="#000" height="1" width="1" x="12" y="14" />
|
||||||
<rect fill="#000" height="1" width="1" x="13" y="14" />
|
<rect fill="#000" height="1" width="1" x="13" y="14" />
|
||||||
<rect fill="#fff" height="1" width="1" x="14" y="14" />
|
<rect fill="#fff" height="1" width="1" x="14" y="14" />
|
||||||
<rect fill="#000" height="1" width="1" x="15" y="14" />
|
<rect fill="#000" height="1" width="1" x="15" y="14" />
|
||||||
<rect fill="#000" height="1" width="1" x="0" y="15" />
|
<rect fill="#000" height="1" width="1" x="0" y="15" />
|
||||||
<rect fill="#000" height="1" width="1" x="1" y="15" />
|
<rect fill="#000" height="1" width="1" x="1" y="15" />
|
||||||
<rect fill="#000" height="1" width="1" x="2" y="15" />
|
<rect fill="#000" height="1" width="1" x="2" y="15" />
|
||||||
<rect fill="#000" height="1" width="1" x="3" y="15" />
|
<rect fill="#000" height="1" width="1" x="3" y="15" />
|
||||||
<rect fill="#000" height="1" width="1" x="4" y="15" />
|
<rect fill="#000" height="1" width="1" x="4" y="15" />
|
||||||
<rect fill="#000" height="1" width="1" x="5" y="15" />
|
<rect fill="#000" height="1" width="1" x="5" y="15" />
|
||||||
<rect fill="#000" height="1" width="1" x="6" y="15" />
|
<rect fill="#000" height="1" width="1" x="6" y="15" />
|
||||||
<rect fill="#000" height="1" width="1" x="7" y="15" />
|
<rect fill="#000" height="1" width="1" x="7" y="15" />
|
||||||
<rect fill="#000" height="1" width="1" x="8" y="15" />
|
<rect fill="#000" height="1" width="1" x="8" y="15" />
|
||||||
<rect fill="#000" height="1" width="1" x="9" y="15" />
|
<rect fill="#000" height="1" width="1" x="9" y="15" />
|
||||||
<rect fill="#000" height="1" width="1" x="10" y="15" />
|
<rect fill="#000" height="1" width="1" x="10" y="15" />
|
||||||
<rect fill="#000" height="1" width="1" x="11" y="15" />
|
<rect fill="#000" height="1" width="1" x="11" y="15" />
|
||||||
<rect fill="#000" height="1" width="1" x="12" y="15" />
|
<rect fill="#000" height="1" width="1" x="12" y="15" />
|
||||||
<rect fill="#000" height="1" width="1" x="13" y="15" />
|
<rect fill="#000" height="1" width="1" x="13" y="15" />
|
||||||
<rect fill="#000" height="1" width="1" x="14" y="15" />
|
<rect fill="#000" height="1" width="1" x="14" y="15" />
|
||||||
<rect fill="#000" height="1" width="1" x="15" y="15" />
|
<rect fill="#000" height="1" width="1" x="15" y="15" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
// base64 -w 0 logo-light.png
|
// base64 -w 0 logo-light.png
|
||||||
--logo-light: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABAAQMAAACQp+OdAAAABlBMVEX///8AAABVwtN+AAAAWElEQVQoz43O0RHAMAgCUDZg/y3ZgKJtP8PF/LzkiApcFG3IVgVICB0cqCPH368jMvCffsLuPWMLmOQ+FMBxNqvgXCZ8xixGsSNppWsF33hFaLjD27Xioh5ZH8ftcymlGAAAAABJRU5ErkJggg==");
|
--logo-light: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABAAQMAAACQp+OdAAAABlBMVEX///8AAABVwtN+AAAAWElEQVQoz43O0RHAMAgCUDZg/y3ZgKJtP8PF/LzkiApcFG3IVgVICB0cqCPH368jMvCffsLuPWMLmOQ+FMBxNqvgXCZ8xixGsSNppWsF33hFaLjD27Xioh5ZH8ftcymlGAAAAABJRU5ErkJggg==");
|
||||||
// base64 -w 0 logo-dark.png
|
// base64 -w 0 logo-dark.png
|
||||||
--logo-dark: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABAAQMAAACQp+OdAAAABlBMVEX///8AAABVwtN+AAAAXklEQVQoz43SsRHAIAxDUW3g/bfUBoqckDL/AgWvMFgcKGcIYCkjDSJ2JgwvhhFHZ9cn2vDt/oUNvkcS3MpNRuh0ew6iyyYjbDCPGa2+WxL8lCN6vZYy+nBxED/+xgWM9DYk64ncIgAAAABJRU5ErkJggg==");
|
--logo-dark: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABAAQMAAACQp+OdAAAABlBMVEX///8AAABVwtN+AAAAXklEQVQoz43SsRHAIAxDUW3g/bfUBoqckDL/AgWvMFgcKGcIYCkjDSJ2JgwvhhFHZ9cn2vDt/oUNvkcS3MpNRuh0ew6iyyYjbDCPGa2+WxL8lCN6vZYy+nBxED/+xgWM9DYk64ncIgAAAABJRU5ErkJggg==");
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,33 +4,33 @@
|
||||||
$themeDimensionsIcons = array(16, 32, 48, 64, 96, 128, 192, 256, 384, 512);
|
$themeDimensionsIcons = array(16, 32, 48, 64, 96, 128, 192, 256, 384, 512);
|
||||||
|
|
||||||
$colorScheme = array(
|
$colorScheme = array(
|
||||||
// Light theme
|
// Light theme
|
||||||
"text-light" => "black",
|
"text-light" => "black",
|
||||||
"bg-light" => "#ffffff", // Must be a long hexadecimal color
|
"bg-light" => "#ffffff", // Must be a long hexadecimal color
|
||||||
"bgField-light" => "white",
|
"bgField-light" => "white",
|
||||||
"bgHelp-light" => "white",
|
"bgHelp-light" => "white",
|
||||||
"bgTextarea-light" => "white",
|
"bgTextarea-light" => "white",
|
||||||
"textareaText-light" => "black",
|
"textareaText-light" => "black",
|
||||||
"textareaPlaceholder-light" => "#868686",
|
"textareaPlaceholder-light" => "#868686",
|
||||||
"border-light" => "black",
|
"border-light" => "black",
|
||||||
"borderHover-light" => "black",
|
"borderHover-light" => "black",
|
||||||
"borderFocus-light" => "black",
|
"borderFocus-light" => "black",
|
||||||
"borderHelp-light" => "black",
|
"borderHelp-light" => "black",
|
||||||
"borderQr-light" => "black",
|
"borderQr-light" => "black",
|
||||||
// Dark theme
|
// Dark theme
|
||||||
"text-dark" => "white",
|
"text-dark" => "white",
|
||||||
"bg-dark" => "#000000", // Must be a long hexadecimal color
|
"bg-dark" => "#000000", // Must be a long hexadecimal color
|
||||||
"bgField-dark" => "#000000",
|
"bgField-dark" => "#000000",
|
||||||
"bgHelp-dark" => "#000000",
|
"bgHelp-dark" => "#000000",
|
||||||
"bgTextarea-dark" => "#000000",
|
"bgTextarea-dark" => "#000000",
|
||||||
"textareaText-dark" => "white",
|
"textareaText-dark" => "white",
|
||||||
"textareaPlaceholder-dark" => "#bababa",
|
"textareaPlaceholder-dark" => "#bababa",
|
||||||
"border-dark" => "white",
|
"border-dark" => "white",
|
||||||
"borderWidth-dark" => "2px",
|
"borderWidth-dark" => "2px",
|
||||||
"borderHover-dark" => "white",
|
"borderHover-dark" => "white",
|
||||||
"borderHoverWidth-dark" => "3px",
|
"borderHoverWidth-dark" => "3px",
|
||||||
"borderFocus-dark" => "white",
|
"borderFocus-dark" => "white",
|
||||||
"borderFocusWidth-dark" => "4px",
|
"borderFocusWidth-dark" => "4px",
|
||||||
"borderHelp-dark" => "white",
|
"borderHelp-dark" => "white",
|
||||||
"borderQr-dark" => "white",
|
"borderQr-dark" => "white",
|
||||||
);
|
);
|
||||||
|
|
Before Width: | Height: | Size: 207 B |
Before Width: | Height: | Size: 163 B |
Before Width: | Height: | Size: 249 B |
Before Width: | Height: | Size: 246 B |
Before Width: | Height: | Size: 187 B |
Before Width: | Height: | Size: 293 B |
Before Width: | Height: | Size: 217 B |
Before Width: | Height: | Size: 354 B |
Before Width: | Height: | Size: 198 B |
Before Width: | Height: | Size: 231 B |
Before Width: | Height: | Size: 6.3 KiB |
|
@ -1,27 +0,0 @@
|
||||||
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
|
||||||
|
|
||||||
// List icons dimensions
|
|
||||||
$themeDimensionsIcons = array(16, 32, 48, 64, 96, 128, 192, 256, 384, 512);
|
|
||||||
|
|
||||||
$colorScheme = array(
|
|
||||||
// Light theme
|
|
||||||
"bg-light" => "#14678b",
|
|
||||||
"bgField-light" => "#2186b1",
|
|
||||||
"bgTextField-light" => "#2186b1",
|
|
||||||
"bgHelp-light" => "#118abe",
|
|
||||||
"border-light" => "#42a0c8",
|
|
||||||
"borderHover-light" => "#87d1f1",
|
|
||||||
"borderFocus-light" => "#e2f6ff",
|
|
||||||
"text-light" => "#ffffff",
|
|
||||||
"secondaryText-light" => "#bbe1f1",
|
|
||||||
// Dark theme
|
|
||||||
"bg-dark" => "#14678b",
|
|
||||||
"bgField-dark" => "#2186b1",
|
|
||||||
"bgTextField-dark" => "#2186b1",
|
|
||||||
"bgHelp-dark" => "#118abe",
|
|
||||||
"border-dark" => "#42a0c8",
|
|
||||||
"borderHover-dark" => "#87d1f1",
|
|
||||||
"borderFocus-dark" => "#e2f6ff",
|
|
||||||
"text-dark" => "#ffffff",
|
|
||||||
"secondaryText-dark" => "#bbe1f1"
|
|
||||||
);
|
|
|
@ -1,36 +1,36 @@
|
||||||
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
<?php // This file is part of LibreQR, which is distributed under the GNU AGPLv3+ license
|
||||||
|
|
||||||
/*
|
/*
|
||||||
A small script that can be used to generate LibreQR's icons
|
A small script that can be used to generate LibreQR's icons
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (php_sapi_name() == "cli") {
|
if (php_sapi_name() == "cli") {
|
||||||
if (isset($argv[1])) {
|
if (isset($argv[1])) {
|
||||||
$done = array();
|
$done = array();
|
||||||
$line = "";
|
$line = "";
|
||||||
$theme = $argv[1];
|
$theme = $argv[1];
|
||||||
|
|
||||||
for ($pow = 0; $pow <= 3; $pow++) {
|
for ($pow = 0; $pow <= 3; $pow++) {
|
||||||
for ($mult = 1; $mult <= 4; $mult++) {
|
for ($mult = 1; $mult <= 4; $mult++) {
|
||||||
$size = $mult * 2**(4+$pow);
|
$size = $mult * 2**(4+$pow);
|
||||||
if (!in_array($size, $done)) {
|
if (!in_array($size, $done)) {
|
||||||
shell_exec("convert themes/" . $theme . "/icons/source.png -scale " . $size . "x" . $size . " themes/" . $theme . "/icons/" . $size . ".png");
|
shell_exec("convert themes/" . $theme . "/icons/source.png -scale " . $size . "x" . $size . " themes/" . $theme . "/icons/" . $size . ".png");
|
||||||
shell_exec("pngquant -f themes/" . $theme . "/icons/" . $size . ".png --output themes/" . $theme . "/icons/" . $size . ".png");
|
shell_exec("pngquant -f themes/" . $theme . "/icons/" . $size . ".png --output themes/" . $theme . "/icons/" . $size . ".png");
|
||||||
$done[] = $size;
|
$done[] = $size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($done as $done) {
|
foreach ($done as $done) {
|
||||||
$line = $line . ", " . $done;
|
$line = $line . ", " . $done;
|
||||||
}
|
}
|
||||||
|
|
||||||
echo substr($line, 2) . "\n";
|
echo substr($line, 2) . "\n";
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
echo "Usage: php themes/resize.php <theme name>\n";
|
echo "Usage: php themes/resize.php <theme name>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
echo "Available only via CLI for security reasons. Use 'php themes/resize.php <theme name>'";
|
echo "Available only via CLI for security reasons. Use 'php themes/resize.php <theme name>'";
|
||||||
}
|
}
|
||||||
|
|
4
vendor/composer/installed.php
vendored
|
@ -5,7 +5,7 @@
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '6832804dc0ad475cfe3976075eec51ae81fb6723',
|
'reference' => '147a25c93f60c0ff38343291c7a7819bdce7cfc4',
|
||||||
'name' => '__root__',
|
'name' => '__root__',
|
||||||
'dev' => true,
|
'dev' => true,
|
||||||
),
|
),
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '6832804dc0ad475cfe3976075eec51ae81fb6723',
|
'reference' => '147a25c93f60c0ff38343291c7a7819bdce7cfc4',
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'bacon/bacon-qr-code' => array(
|
'bacon/bacon-qr-code' => array(
|
||||||
|
|