Initial commit
This commit is contained in:
commit
56569b8ed2
10
.gitignore
vendored
Normal file
10
.gitignore
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
.pio
|
||||||
|
.vscode/.browse.c_cpp.db*
|
||||||
|
.vscode/c_cpp_properties.json
|
||||||
|
.vscode/launch.json
|
||||||
|
.vscode/ipch
|
||||||
|
data/build
|
||||||
|
data/.yarn
|
||||||
|
data/node_modules
|
||||||
|
src/config.h
|
||||||
|
.vscode/c_cpp_properties.json
|
10
.vscode/extensions.json
vendored
Normal file
10
.vscode/extensions.json
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
// See http://go.microsoft.com/fwlink/?LinkId=827846
|
||||||
|
// for the documentation about the extensions.json format
|
||||||
|
"recommendations": [
|
||||||
|
"platformio.platformio-ide"
|
||||||
|
],
|
||||||
|
"unwantedRecommendations": [
|
||||||
|
"ms-vscode.cpptools-extension-pack"
|
||||||
|
]
|
||||||
|
}
|
22
README.md
Normal file
22
README.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# BTClock v2
|
||||||
|
|
||||||
|
Improved code for BTClock with many features.
|
||||||
|
|
||||||
|
## Software
|
||||||
|
|
||||||
|
- [PlatformIO](https://platformio.org/platformio-ide).
|
||||||
|
- [Node.js](https://nodejs.org/en) and [yarn](https://yarnpkg.com/).
|
||||||
|
|
||||||
|
## Hardware
|
||||||
|
|
||||||
|
- MCU: ESP32 or ESP32-S3 ([Wemos S3 mini](https://www.wemos.cc/en/latest/s3/s3_mini.html) recommended)<br>
|
||||||
|
**The ESP32 S2 is not supported, it does not have enough RAM**
|
||||||
|
- Seven eInk displays
|
||||||
|
- [MCP23017](https://www.microchip.com/en-us/product/mcp23017) I2C Port Expander
|
||||||
|
- 4x WS2812B leds (optional)
|
||||||
|
- 5x push buttons (optional)
|
||||||
|
|
||||||
|
Recommended to use the BTClock PCB.
|
||||||
|
|
||||||
|
## Schematic
|
||||||
|
![Schematic](doc/schematic.png)
|
50
data/esbuild.mjs
Normal file
50
data/esbuild.mjs
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
import esbuild from "esbuild";
|
||||||
|
import { sassPlugin } from "esbuild-sass-plugin";
|
||||||
|
import htmlPlugin from '@chialab/esbuild-plugin-html';
|
||||||
|
import handlebarsPlugin from "esbuild-plugin-handlebars";
|
||||||
|
import { clean } from 'esbuild-plugin-clean';
|
||||||
|
|
||||||
|
import postcss from "postcss";
|
||||||
|
import autoprefixer from "autoprefixer";
|
||||||
|
|
||||||
|
const hbsOptions = {
|
||||||
|
additionalHelpers: { splitText: "helpers.js" },
|
||||||
|
additionalPartials: {},
|
||||||
|
precompileOptions: {}
|
||||||
|
}
|
||||||
|
|
||||||
|
esbuild
|
||||||
|
.build({
|
||||||
|
entryPoints: ["src/css/style.scss", "src/js/script.ts", "src/index.html", "src/js/helpers.js"],
|
||||||
|
outdir: "build",
|
||||||
|
bundle: true,
|
||||||
|
loader: {
|
||||||
|
".png": "dataurl",
|
||||||
|
".woff": "dataurl",
|
||||||
|
".woff2": "dataurl",
|
||||||
|
".eot": "dataurl",
|
||||||
|
".ttf": "dataurl",
|
||||||
|
".svg": "dataurl",
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
clean({
|
||||||
|
patterns: ['./build/*']
|
||||||
|
}),
|
||||||
|
htmlPlugin(),
|
||||||
|
sassPlugin({
|
||||||
|
async transform(source) {
|
||||||
|
const { css } = await postcss([autoprefixer]).process(
|
||||||
|
source
|
||||||
|
, { from: undefined });
|
||||||
|
return css;
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
handlebarsPlugin(hbsOptions),
|
||||||
|
|
||||||
|
],
|
||||||
|
minify: true,
|
||||||
|
metafile: false,
|
||||||
|
sourcemap: false
|
||||||
|
})
|
||||||
|
.then(() => console.log("⚡ Build complete! ⚡"))
|
||||||
|
.catch(() => process.exit(1));
|
23
data/package.json
Normal file
23
data/package.json
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"name": "data",
|
||||||
|
"packageManager": "yarn@3.2.1",
|
||||||
|
"scripts": {
|
||||||
|
"build": "node esbuild.mjs"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"esbuild": "0.18.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@chialab/esbuild-plugin-html": "^0.17.2",
|
||||||
|
"@craftamap/esbuild-plugin-html": "^0.5.0",
|
||||||
|
"@esbuilder/html": "^0.0.6",
|
||||||
|
"autoprefixer": "^10.4.14",
|
||||||
|
"bootstrap": "^5.3.0",
|
||||||
|
"esbuild-plugin-clean": "^1.0.1",
|
||||||
|
"esbuild-plugin-handlebars": "^1.0.2",
|
||||||
|
"esbuild-sass-plugin": "^2.9.0",
|
||||||
|
"handlebars": "^4.7.7",
|
||||||
|
"postcss": "^8.4.24",
|
||||||
|
"typescript": "^5.1.3"
|
||||||
|
}
|
||||||
|
}
|
BIN
data/src/css/oswald.woff
Normal file
BIN
data/src/css/oswald.woff
Normal file
Binary file not shown.
BIN
data/src/css/oswald.woff2
Normal file
BIN
data/src/css/oswald.woff2
Normal file
Binary file not shown.
110
data/src/css/style.scss
Normal file
110
data/src/css/style.scss
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
// @import "../node_modules/bootstrap/scss/bootstrap";
|
||||||
|
|
||||||
|
@import "../node_modules/bootstrap/scss/functions";
|
||||||
|
@import "../node_modules/bootstrap/scss/variables";
|
||||||
|
@import "../node_modules/bootstrap/scss/variables-dark";
|
||||||
|
|
||||||
|
@import "../node_modules/bootstrap/scss/mixins";
|
||||||
|
@import "../node_modules/bootstrap/scss/maps";
|
||||||
|
@import "../node_modules/bootstrap/scss/utilities";
|
||||||
|
|
||||||
|
@import "../node_modules/bootstrap/scss/root";
|
||||||
|
@import "../node_modules/bootstrap/scss/reboot";
|
||||||
|
@import "../node_modules/bootstrap/scss/type";
|
||||||
|
@import "../node_modules/bootstrap/scss/containers";
|
||||||
|
@import "../node_modules/bootstrap/scss/grid";
|
||||||
|
@import "../node_modules/bootstrap/scss/forms";
|
||||||
|
@import "../node_modules/bootstrap/scss/buttons";
|
||||||
|
@import "../node_modules/bootstrap/scss/navbar";
|
||||||
|
@import "../node_modules/bootstrap/scss/nav";
|
||||||
|
@import "../node_modules/bootstrap/scss/card";
|
||||||
|
|
||||||
|
@import "../node_modules/bootstrap/scss/helpers";
|
||||||
|
@import "../node_modules/bootstrap/scss/utilities/api";
|
||||||
|
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-display: swap;
|
||||||
|
/* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||||
|
font-family: 'Oswald';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
src: url('oswald.woff2') format('woff2'),
|
||||||
|
/* Chrome 36+, Opera 23+, Firefox 39+ */
|
||||||
|
url('oswald.woff') format('woff');
|
||||||
|
/* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||||
|
}
|
||||||
|
|
||||||
|
nav {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.splitText div:first-child::after {
|
||||||
|
display: block;
|
||||||
|
content: '';
|
||||||
|
margin-top: 0px;
|
||||||
|
border-bottom: 2px solid;
|
||||||
|
margin-bottom: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#btcclock-wrapper {
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btclock {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
align-content: stretch;
|
||||||
|
font-family: 'Oswald', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btclock>div {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fg-ffff .btclock>div {
|
||||||
|
color: #fff;
|
||||||
|
border-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-ffff .btclock>div {
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fg-f800 .btclock>div {
|
||||||
|
color: #f00;
|
||||||
|
border-color: #f00;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-f800 .btclock>div {
|
||||||
|
background: #f00;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fg-0 .btclock>div {
|
||||||
|
color: #000;
|
||||||
|
border-color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-0 .btclock>div {
|
||||||
|
background: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.splitText {
|
||||||
|
font-size: 2.2rem;
|
||||||
|
padding-top: 5px;
|
||||||
|
padding-bottom: 5px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.digit {
|
||||||
|
font-size: 5rem;
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.digit-blank {
|
||||||
|
content: "abc";
|
||||||
|
}
|
0
data/src/font/oswald.css
Normal file
0
data/src/font/oswald.css
Normal file
150
data/src/index.html
Normal file
150
data/src/index.html
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="description" content="">
|
||||||
|
<link href="/css/style.css" rel="stylesheet">
|
||||||
|
<title>₿TClock</title>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.7/handlebars.min.js"
|
||||||
|
integrity="sha512-RNLkV3d+aLtfcpEyFG8jRbnWHxUqVZozacROI4J2F1sTaDqo1dPQYs01OMi1t1w9Y2FdbSCDSQ2ZVdAC8bzgAg=="
|
||||||
|
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<nav class="navbar navbar-light bg-light">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<span class="navbar-brand mb-0 h1">₿TClock</span>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<script id="entry-template" type="text/x-handlebars-template">
|
||||||
|
<div class="entry">
|
||||||
|
<h1>Status</h1>
|
||||||
|
<div class="body">
|
||||||
|
<div class="btn-group" role="group" aria-label="Basic radio toggle button group">
|
||||||
|
{{#each screens }}
|
||||||
|
<input type="radio" class="btn-check" name="btnradio" id="btnradio{{ @index }}" autocomplete="off" {{#ifEquals @index ../currentScreen }} checked {{/ifEquals}} onclick="changeScreen({{ @index }})">
|
||||||
|
<label class="btn btn-outline-primary" for="btnradio{{ @index }}">{{ this }}</label>
|
||||||
|
{{/each}}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<p>Rendered:</p>
|
||||||
|
{{#if rendered }}
|
||||||
|
<div class="btcclock-wrapper" id="btcclock-wrapper">
|
||||||
|
<div class="btclock">
|
||||||
|
{{#each data }}
|
||||||
|
{{{splitText this}}}
|
||||||
|
{{/each}}
|
||||||
|
</div></div>
|
||||||
|
{{/if}}
|
||||||
|
{{#if ledStatus }}
|
||||||
|
<p>LED status:</p>
|
||||||
|
|
||||||
|
{{#each ledStatus }}
|
||||||
|
<div style="background: #{{ this }}"> </div>
|
||||||
|
{{/each}}
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</script>
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<div class="h-100 p-3 border bg-light">
|
||||||
|
<h1>Custom text</h1>
|
||||||
|
<form name="customText" id="customTextForm">
|
||||||
|
<div class="row">
|
||||||
|
<label for="customText" class="col-sm-4 col-form-label">Text</label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<input type="text" class="form-control" id="customText" name="customText" maxlength="7">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
<button type="submit" class="btn btn-primary">Show Text</button>
|
||||||
|
</footer>
|
||||||
|
</form>
|
||||||
|
<hr>
|
||||||
|
<h2>LEDs</h2>
|
||||||
|
<form id="ledsForm" name="ledsForm">
|
||||||
|
<div class="row">
|
||||||
|
<label for="ledColorPicker" class="col-sm-6 col-form-label">LEDs color</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<input type="color" id="ledColorPicker" name="pickedColor" value="#ff8800">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button type="button" class="btn btn-secondary" id="turnOffLedsBtn">Turn off</button>
|
||||||
|
<button type="submit" class="btn btn-primary">Set color</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<div id="output" class="p-3 border bg-light"></div>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<div class="h-100 p-3 border bg-light">
|
||||||
|
<h1>Settings</h1>
|
||||||
|
<form method="post" action="/api/settings" name="settings" id="settingsForm">
|
||||||
|
<div class="row">
|
||||||
|
<label for="fgColor" class="col-sm-6 col-form-label">Text color</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<select class="form-select" id="fgColor" name="fgColor">
|
||||||
|
<option value="0xF800">Red</option>
|
||||||
|
<option value="0xFFFF">White</option>
|
||||||
|
<option value="0x0">Black</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<label for="bgColor" class="col-sm-6 col-form-label">Background color</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<select class="form-select" id="bgColor" name="bgColor">
|
||||||
|
<option value="0xF800">Red</option>
|
||||||
|
<option value="0xFFFF">White</option>
|
||||||
|
<option value="0x0">Black</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<label for="timePerScreen" class="col-sm-6 col-form-label">Time per screen</label>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<div class="input-group mb-3">
|
||||||
|
<input type="text" name="timePerScreen" id="timePerScreen">
|
||||||
|
<span class="input-group-text" id="basic-addon2">minutes</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class=" col-sm-6">
|
||||||
|
<div class="form-check form-switch">
|
||||||
|
<input class="form-check-input" type="checkbox" id="ledFlashOnUpdate" name="ledFlashOnUpd" value="1">
|
||||||
|
<label class="form-check-label" for="ledFlashOnUpdate">LED flash on update</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script id="screens-template" type="text/x-handlebars-template">
|
||||||
|
{{#each screens }}
|
||||||
|
<div class="row">
|
||||||
|
<div class=" col-sm-6">
|
||||||
|
<div class="form-check form-switch">
|
||||||
|
<input class="form-check-input" type="checkbox" id="screen{{id}}" name="screen[{{id}}]" value="1" {{#if enabled}}checked{{/if}}>
|
||||||
|
<label class="form-check-label" for="screen{{id}}">{{name}}</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</script>
|
||||||
|
<h3>Screens</h3>
|
||||||
|
<div id="outputScreens"></div>
|
||||||
|
<button type="submit" class="btn btn-secondary">Reset</button>
|
||||||
|
<button type="submit" class="btn btn-primary">Save</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script src="/js/script.js"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
17
data/src/js/helpers.js
Normal file
17
data/src/js/helpers.js
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
//import "handlebars/dist/handlebars.js";
|
||||||
|
|
||||||
|
Handlebars.registerHelper('splitText', function (aString) {
|
||||||
|
if (aString.includes("/")) {
|
||||||
|
var c = aString.split("/").map((el) => { return "<div class=\"flex-items\">" + el + "</div>"; }).join('');
|
||||||
|
return "<div class=\"splitText\">" + c + "</div>";
|
||||||
|
}
|
||||||
|
if (aString.length == 0 || aString === " ") {
|
||||||
|
aString = " ";
|
||||||
|
}
|
||||||
|
//return aString;
|
||||||
|
return "<div class=\"digit\">" + aString + "</div>";
|
||||||
|
});
|
||||||
|
|
||||||
|
Handlebars.registerHelper('ifEquals', function(arg1, arg2, options) {
|
||||||
|
return (arg1 == arg2) ? options.fn(this) : options.inverse(this);
|
||||||
|
});
|
113
data/src/js/script.ts
Normal file
113
data/src/js/script.ts
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
//import "./handlebars.js";
|
||||||
|
import './helpers.js';
|
||||||
|
|
||||||
|
var screens = ["Block Height", "Moscow Time", "Ticker", "Time", "Halving countdown"];
|
||||||
|
|
||||||
|
getBcStatus = () => {
|
||||||
|
fetch('http://btclock3.local/api/status', {
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(jsonData => {
|
||||||
|
var source = document.getElementById("entry-template").innerHTML;
|
||||||
|
var template = Handlebars.compile(source);
|
||||||
|
var context = { currentScreen: jsonData.currentScreen, rendered: jsonData.rendered, data: jsonData.data, screens: screens, ledStatus: jsonData.ledStatus ? jsonData.ledStatus.map((t) => (t).toString(16)) : [] };
|
||||||
|
document.getElementById('output').innerHTML = template(context);
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
//error block
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
interval = setInterval(getBcStatus, 2500);
|
||||||
|
getBcStatus();
|
||||||
|
|
||||||
|
fetch('http://btclock3.local/api/settings', {
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(jsonData => {
|
||||||
|
var fgColor = ("0x" + jsonData.fgColor.toString(16).toUpperCase());
|
||||||
|
if (jsonData.epdColors == 2) {
|
||||||
|
document.getElementById('fgColor').querySelector('[value="0xF800"]').remove();
|
||||||
|
document.getElementById('bgColor').querySelector('[value="0xF800"]').remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
document.getElementById('output').classList.add("fg-" + jsonData.fgColor.toString(16));
|
||||||
|
document.getElementById('output').classList.add("bg-" + jsonData.bgColor.toString(16));
|
||||||
|
|
||||||
|
document.getElementById('fgColor').value = fgColor;
|
||||||
|
document.getElementById('bgColor').value = "0x" + jsonData.bgColor.toString(16).toUpperCase();
|
||||||
|
|
||||||
|
if (jsonData.ledFlashOnUpdate)
|
||||||
|
document.getElementById('ledFlashOnUpdate').checked = true;
|
||||||
|
|
||||||
|
document.getElementById('timePerScreen').value = jsonData.timerSeconds / 60;
|
||||||
|
|
||||||
|
var source = document.getElementById("screens-template").innerHTML;
|
||||||
|
var template = Handlebars.compile(source);
|
||||||
|
var context = { screens: jsonData.screens };
|
||||||
|
document.getElementById('outputScreens').innerHTML = template(context);
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
console.log('error', err);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
var settingsForm = document.querySelector('#settingsForm');
|
||||||
|
settingsForm.onsubmit = (event) => {
|
||||||
|
var formData = new FormData(settingsForm);
|
||||||
|
|
||||||
|
fetch("http://btclock3.local/api/settings",
|
||||||
|
{
|
||||||
|
body: formData,
|
||||||
|
method: "post"
|
||||||
|
}).then(() => {
|
||||||
|
console.log('Submitted');
|
||||||
|
});
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var ledsForm = document.querySelector('#ledsForm');
|
||||||
|
ledsForm.onsubmit = (event) => {
|
||||||
|
var formData = new FormData(ledsForm);
|
||||||
|
|
||||||
|
fetch('/api/lights/' + encodeURIComponent(formData.get('pickedColor').substring(1)), {
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
turnOffLedsBtn.onclick = (event) => {
|
||||||
|
fetch('/api/lights/off', {
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var textForm = document.querySelector('#customTextForm');
|
||||||
|
textForm.onsubmit = (event) => {
|
||||||
|
var formData = new FormData(textForm);
|
||||||
|
|
||||||
|
fetch('/api/show/text/' + encodeURIComponent(formData.get('customText')), {
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
.then(response => response.json())
|
||||||
|
.catch(err => {
|
||||||
|
//error block
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
changeScreen = (id) => {
|
||||||
|
fetch('/api/show/screen/' + encodeURIComponent(id), {
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
.then(response => response.json())
|
||||||
|
.catch(err => {
|
||||||
|
//error block
|
||||||
|
});
|
||||||
|
}
|
48
data/src/wifi.html
Normal file
48
data/src/wifi.html
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="description" content="">
|
||||||
|
<link href="/css/style.css" rel="stylesheet">
|
||||||
|
<title>₿TClock WiFi Settings</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<nav class="navbar navbar-light bg-light">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<span class="navbar-brand mb-0 h1">₿TClock WiFi Settings</span>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<div class="h-100 p-3 border bg-light">
|
||||||
|
<h1>WiFi Settings</h1>
|
||||||
|
<form name="customText" id="customTextForm" method="post" action="/setup/wifi">
|
||||||
|
<div class="row">
|
||||||
|
<label for="ssid" class="col-sm-4 col-form-label">SSID</label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<input type="text" class="form-control" id="ssid" name="ssid" required>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<label for="password" class="col-sm-4 col-form-label">Password</label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<input type="text" class="form-control" id="password" name="password" required>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
<button type="submit" class="btn btn-primary">Save and connect</button>
|
||||||
|
<p><small>The BTClock will restart and connect to your network. If it doesn't, reset to factory settings by holding the red button while booting to retry.</small></p>
|
||||||
|
</footer>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
6
data/tsconfig.json
Normal file
6
data/tsconfig.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"files": ["src/js/**.ts"],
|
||||||
|
"compilerOptions": {
|
||||||
|
"noImplicitAny": true,
|
||||||
|
}
|
||||||
|
}
|
2640
data/yarn.lock
Normal file
2640
data/yarn.lock
Normal file
File diff suppressed because it is too large
Load Diff
BIN
doc/schematic.png
Normal file
BIN
doc/schematic.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 254 KiB |
260
include/FreeRTOSConfig.h
Normal file
260
include/FreeRTOSConfig.h
Normal file
@ -0,0 +1,260 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef FREERTOS_CONFIG_H
|
||||||
|
#define FREERTOS_CONFIG_H
|
||||||
|
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
|
/* for likely and unlikely */
|
||||||
|
#include "esp_compiler.h"
|
||||||
|
|
||||||
|
// The arch-specific FreeRTOSConfig_arch.h in port/<arch>/include.
|
||||||
|
#include "freertos/FreeRTOSConfig_arch.h"
|
||||||
|
|
||||||
|
#if !(defined(FREERTOS_CONFIG_XTENSA_H) \
|
||||||
|
|| defined(FREERTOS_CONFIG_RISCV_H) \
|
||||||
|
|| defined(FREERTOS_CONFIG_LINUX_H))
|
||||||
|
#error "Needs architecture-speific FreeRTOSConfig.h!"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CONFIG_FREERTOS_UNICORE
|
||||||
|
#define portNUM_PROCESSORS 2
|
||||||
|
#else
|
||||||
|
#define portNUM_PROCESSORS 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define portUSING_MPU_WRAPPERS 0
|
||||||
|
#define configUSE_MUTEX 1
|
||||||
|
|
||||||
|
#define configNUM_THREAD_LOCAL_STORAGE_POINTERS CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS
|
||||||
|
#define configTHREAD_LOCAL_STORAGE_DELETE_CALLBACKS 1
|
||||||
|
|
||||||
|
/* configASSERT behaviour */
|
||||||
|
#ifndef __ASSEMBLER__
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
// If CONFIG_FREERTOS_ASSERT_DISABLE is set then configASSERT is defined empty later in FreeRTOS.h and the macro
|
||||||
|
// configASSERT_DEFINED remains unset (meaning some warnings are avoided)
|
||||||
|
|
||||||
|
#if defined(CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE)
|
||||||
|
#define configASSERT(a) if (unlikely(!(a))) { \
|
||||||
|
esp_rom_printf("%s:%d (%s)- assert failed!\n", __FILE__, __LINE__, \
|
||||||
|
__FUNCTION__); \
|
||||||
|
}
|
||||||
|
#elif defined(CONFIG_FREERTOS_ASSERT_FAIL_ABORT)
|
||||||
|
#define configASSERT(a) assert(a)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION
|
||||||
|
#define UNTESTED_FUNCTION() { esp_rom_printf("Untested FreeRTOS function %s\r\n", __FUNCTION__); configASSERT(false); } while(0)
|
||||||
|
#else
|
||||||
|
#define UNTESTED_FUNCTION()
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* def __ASSEMBLER__ */
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------
|
||||||
|
* Application specific definitions.
|
||||||
|
*
|
||||||
|
* These definitions should be adjusted for your particular hardware and
|
||||||
|
* application requirements.
|
||||||
|
*
|
||||||
|
* Note that the default heap size is deliberately kept small so that
|
||||||
|
* the build is more likely to succeed for configurations with limited
|
||||||
|
* memory.
|
||||||
|
*
|
||||||
|
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
|
||||||
|
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
|
||||||
|
*----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#define configUSE_PREEMPTION 1
|
||||||
|
#define configUSE_IDLE_HOOK 1
|
||||||
|
#define configUSE_TICK_HOOK 1
|
||||||
|
#define configRECORD_STACK_HIGH_ADDRESS 1
|
||||||
|
#define configTICK_RATE_HZ ( CONFIG_FREERTOS_HZ )
|
||||||
|
|
||||||
|
/* This has impact on speed of search for highest priority */
|
||||||
|
#define configMAX_PRIORITIES ( 25 )
|
||||||
|
|
||||||
|
/* Various things that impact minimum stack sizes */
|
||||||
|
|
||||||
|
/* Higher stack checker modes cause overhead on each function call */
|
||||||
|
#if CONFIG_STACK_CHECK_ALL || CONFIG_STACK_CHECK_STRONG
|
||||||
|
#define configSTACK_OVERHEAD_CHECKER 256
|
||||||
|
#else
|
||||||
|
#define configSTACK_OVERHEAD_CHECKER 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* with optimizations disabled, scheduler uses additional stack */
|
||||||
|
#if CONFIG_COMPILER_OPTIMIZATION_NONE
|
||||||
|
#define configSTACK_OVERHEAD_OPTIMIZATION 320
|
||||||
|
#else
|
||||||
|
#define configSTACK_OVERHEAD_OPTIMIZATION 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* apptrace mdule increases minimum stack usage */
|
||||||
|
#if CONFIG_APPTRACE_ENABLE
|
||||||
|
#define configSTACK_OVERHEAD_APPTRACE 1280
|
||||||
|
#else
|
||||||
|
#define configSTACK_OVERHEAD_APPTRACE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Stack watchpoint decreases minimum usable stack size by up to 60 bytes.
|
||||||
|
See FreeRTOS FREERTOS_WATCHPOINT_END_OF_STACK option in Kconfig. */
|
||||||
|
#if CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK
|
||||||
|
#define configSTACK_OVERHEAD_WATCHPOINT 60
|
||||||
|
#else
|
||||||
|
#define configSTACK_OVERHEAD_WATCHPOINT 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define configSTACK_OVERHEAD_TOTAL ( \
|
||||||
|
configSTACK_OVERHEAD_CHECKER + \
|
||||||
|
configSTACK_OVERHEAD_OPTIMIZATION + \
|
||||||
|
configSTACK_OVERHEAD_APPTRACE + \
|
||||||
|
configSTACK_OVERHEAD_WATCHPOINT \
|
||||||
|
)
|
||||||
|
|
||||||
|
#define configMINIMAL_STACK_SIZE (768 + configSTACK_OVERHEAD_TOTAL)
|
||||||
|
|
||||||
|
#ifndef configIDLE_TASK_STACK_SIZE
|
||||||
|
#define configIDLE_TASK_STACK_SIZE CONFIG_FREERTOS_IDLE_TASK_STACKSIZE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Minimal heap size to make sure examples can run on memory limited
|
||||||
|
configs. Adjust this to suit your system. */
|
||||||
|
|
||||||
|
|
||||||
|
//We define the heap to span all of the non-statically-allocated shared RAM. ToDo: Make sure there
|
||||||
|
//is some space left for the app and main cpu when running outside of a thread.
|
||||||
|
#define configAPPLICATION_ALLOCATED_HEAP 1
|
||||||
|
#define configTOTAL_HEAP_SIZE (&_heap_end - &_heap_start)//( ( size_t ) (64 * 1024) )
|
||||||
|
|
||||||
|
#define configMAX_TASK_NAME_LEN ( CONFIG_FREERTOS_MAX_TASK_NAME_LEN )
|
||||||
|
|
||||||
|
#ifdef CONFIG_FREERTOS_USE_TRACE_FACILITY
|
||||||
|
#define configUSE_TRACE_FACILITY 1 /* Used by uxTaskGetSystemState(), and other trace facility functions */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS
|
||||||
|
#define configUSE_STATS_FORMATTING_FUNCTIONS 1 /* Used by vTaskList() */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID
|
||||||
|
#define configTASKLIST_INCLUDE_COREID 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS
|
||||||
|
#define configGENERATE_RUN_TIME_STATS 1 /* Used by vTaskGetRunTimeStats() */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define configBENCHMARK 0
|
||||||
|
#define configUSE_16_BIT_TICKS 0
|
||||||
|
#define configIDLE_SHOULD_YIELD 0
|
||||||
|
#define configQUEUE_REGISTRY_SIZE CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE
|
||||||
|
|
||||||
|
#define configUSE_MUTEXES 1
|
||||||
|
#define configUSE_RECURSIVE_MUTEXES 1
|
||||||
|
#define configUSE_COUNTING_SEMAPHORES 1
|
||||||
|
|
||||||
|
#if CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE
|
||||||
|
#define configCHECK_FOR_STACK_OVERFLOW 0
|
||||||
|
#elif CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL
|
||||||
|
#define configCHECK_FOR_STACK_OVERFLOW 1
|
||||||
|
#elif CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY
|
||||||
|
#define configCHECK_FOR_STACK_OVERFLOW 2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Co-routine definitions. */
|
||||||
|
#define configUSE_CO_ROUTINES 0
|
||||||
|
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
|
||||||
|
|
||||||
|
/* Set the following definitions to 1 to include the API function, or zero
|
||||||
|
to exclude the API function. */
|
||||||
|
|
||||||
|
#define INCLUDE_vTaskPrioritySet 1
|
||||||
|
#define INCLUDE_uxTaskPriorityGet 1
|
||||||
|
#define INCLUDE_vTaskDelete 1
|
||||||
|
#define INCLUDE_vTaskCleanUpResources 0
|
||||||
|
#define INCLUDE_vTaskSuspend 1
|
||||||
|
#define INCLUDE_vTaskDelayUntil 1
|
||||||
|
#define INCLUDE_vTaskDelay 1
|
||||||
|
#define INCLUDE_uxTaskGetStackHighWaterMark 1
|
||||||
|
#define INCLUDE_pcTaskGetTaskName 1
|
||||||
|
#define INCLUDE_xTaskGetIdleTaskHandle 1
|
||||||
|
#define INCLUDE_pxTaskGetStackStart 1
|
||||||
|
#define INCLUDE_eTaskGetState 1
|
||||||
|
#define INCLUDE_xTaskAbortDelay 1
|
||||||
|
#define INCLUDE_xTaskGetHandle 1
|
||||||
|
#define INCLUDE_xSemaphoreGetMutexHolder 1
|
||||||
|
#define INCLUDE_xTimerPendFunctionCall 1
|
||||||
|
#define INCLUDE_xTimerGetTimerDaemonTaskHandle 0 //Currently there is no need for this API
|
||||||
|
|
||||||
|
/* The priority at which the tick interrupt runs. This should probably be
|
||||||
|
kept at 1. */
|
||||||
|
#define configKERNEL_INTERRUPT_PRIORITY 1
|
||||||
|
|
||||||
|
#if !CONFIG_IDF_TARGET_LINUX
|
||||||
|
#define configUSE_NEWLIB_REENTRANT 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define configSUPPORT_DYNAMIC_ALLOCATION 1
|
||||||
|
#define configSUPPORT_STATIC_ALLOCATION 1
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLER__
|
||||||
|
#if CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP
|
||||||
|
extern void vPortCleanUpTCB ( void *pxTCB );
|
||||||
|
#define portCLEAN_UP_TCB( pxTCB ) vPortCleanUpTCB( pxTCB )
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Test FreeRTOS timers (with timer task) and more. */
|
||||||
|
/* Some files don't compile if this flag is disabled */
|
||||||
|
#define configUSE_TIMERS 1
|
||||||
|
#define configTIMER_TASK_PRIORITY CONFIG_FREERTOS_TIMER_TASK_PRIORITY
|
||||||
|
#define configTIMER_QUEUE_LENGTH CONFIG_FREERTOS_TIMER_QUEUE_LENGTH
|
||||||
|
#define configTIMER_TASK_STACK_DEPTH CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH
|
||||||
|
|
||||||
|
#define configUSE_QUEUE_SETS 1
|
||||||
|
|
||||||
|
#define configUSE_TICKLESS_IDLE CONFIG_FREERTOS_USE_TICKLESS_IDLE
|
||||||
|
#if configUSE_TICKLESS_IDLE
|
||||||
|
#define configEXPECTED_IDLE_TIME_BEFORE_SLEEP CONFIG_FREERTOS_IDLE_TIME_BEFORE_SLEEP
|
||||||
|
#endif //configUSE_TICKLESS_IDLE
|
||||||
|
|
||||||
|
|
||||||
|
#if CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT
|
||||||
|
#define configENABLE_TASK_SNAPSHOT 1
|
||||||
|
#endif
|
||||||
|
#ifndef configENABLE_TASK_SNAPSHOT
|
||||||
|
#define configENABLE_TASK_SNAPSHOT 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if CONFIG_SYSVIEW_ENABLE
|
||||||
|
#ifndef __ASSEMBLER__
|
||||||
|
#include "SEGGER_SYSVIEW_FreeRTOS.h"
|
||||||
|
#undef INLINE // to avoid redefinition
|
||||||
|
#endif /* def __ASSEMBLER__ */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER
|
||||||
|
#define configCHECK_MUTEX_GIVEN_BY_OWNER 1
|
||||||
|
#else
|
||||||
|
#define configCHECK_MUTEX_GIVEN_BY_OWNER 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H 1
|
||||||
|
|
||||||
|
#define configTASK_NOTIFICATION_ARRAY_ENTRIES 1
|
||||||
|
|
||||||
|
// backward compatibility for 4.4
|
||||||
|
#define xTaskRemoveFromUnorderedEventList vTaskRemoveFromUnorderedEventList
|
||||||
|
|
||||||
|
#define configNUM_CORES portNUM_PROCESSORS
|
||||||
|
|
||||||
|
#endif /* FREERTOS_CONFIG_H */
|
1028
lib/qrcode/qrcodegen.c
Normal file
1028
lib/qrcode/qrcodegen.c
Normal file
File diff suppressed because it is too large
Load Diff
385
lib/qrcode/qrcodegen.h
Normal file
385
lib/qrcode/qrcodegen.h
Normal file
@ -0,0 +1,385 @@
|
|||||||
|
/*
|
||||||
|
* QR Code generator library (C)
|
||||||
|
*
|
||||||
|
* Copyright (c) Project Nayuki. (MIT License)
|
||||||
|
* https://www.nayuki.io/page/qr-code-generator-library
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
* this software and associated documentation files (the "Software"), to deal in
|
||||||
|
* the Software without restriction, including without limitation the rights to
|
||||||
|
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
* subject to the following conditions:
|
||||||
|
* - The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
* - The Software is provided "as is", without warranty of any kind, express or
|
||||||
|
* implied, including but not limited to the warranties of merchantability,
|
||||||
|
* fitness for a particular purpose and noninfringement. In no event shall the
|
||||||
|
* authors or copyright holders be liable for any claim, damages or other
|
||||||
|
* liability, whether in an action of contract, tort or otherwise, arising from,
|
||||||
|
* out of or in connection with the Software or the use or other dealings in the
|
||||||
|
* Software.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This library creates QR Code symbols, which is a type of two-dimension barcode.
|
||||||
|
* Invented by Denso Wave and described in the ISO/IEC 18004 standard.
|
||||||
|
* A QR Code structure is an immutable square grid of dark and light cells.
|
||||||
|
* The library provides functions to create a QR Code from text or binary data.
|
||||||
|
* The library covers the QR Code Model 2 specification, supporting all versions (sizes)
|
||||||
|
* from 1 to 40, all 4 error correction levels, and 4 character encoding modes.
|
||||||
|
*
|
||||||
|
* Ways to create a QR Code object:
|
||||||
|
* - High level: Take the payload data and call qrcodegen_encodeText() or qrcodegen_encodeBinary().
|
||||||
|
* - Low level: Custom-make the list of segments and call
|
||||||
|
* qrcodegen_encodeSegments() or qrcodegen_encodeSegmentsAdvanced().
|
||||||
|
* (Note that all ways require supplying the desired error correction level and various byte buffers.)
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*---- Enum and struct types----*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The error correction level in a QR Code symbol.
|
||||||
|
*/
|
||||||
|
enum qrcodegen_Ecc {
|
||||||
|
// Must be declared in ascending order of error protection
|
||||||
|
// so that an internal qrcodegen function works properly
|
||||||
|
qrcodegen_Ecc_LOW = 0 , // The QR Code can tolerate about 7% erroneous codewords
|
||||||
|
qrcodegen_Ecc_MEDIUM , // The QR Code can tolerate about 15% erroneous codewords
|
||||||
|
qrcodegen_Ecc_QUARTILE, // The QR Code can tolerate about 25% erroneous codewords
|
||||||
|
qrcodegen_Ecc_HIGH , // The QR Code can tolerate about 30% erroneous codewords
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The mask pattern used in a QR Code symbol.
|
||||||
|
*/
|
||||||
|
enum qrcodegen_Mask {
|
||||||
|
// A special value to tell the QR Code encoder to
|
||||||
|
// automatically select an appropriate mask pattern
|
||||||
|
qrcodegen_Mask_AUTO = -1,
|
||||||
|
// The eight actual mask patterns
|
||||||
|
qrcodegen_Mask_0 = 0,
|
||||||
|
qrcodegen_Mask_1,
|
||||||
|
qrcodegen_Mask_2,
|
||||||
|
qrcodegen_Mask_3,
|
||||||
|
qrcodegen_Mask_4,
|
||||||
|
qrcodegen_Mask_5,
|
||||||
|
qrcodegen_Mask_6,
|
||||||
|
qrcodegen_Mask_7,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Describes how a segment's data bits are interpreted.
|
||||||
|
*/
|
||||||
|
enum qrcodegen_Mode {
|
||||||
|
qrcodegen_Mode_NUMERIC = 0x1,
|
||||||
|
qrcodegen_Mode_ALPHANUMERIC = 0x2,
|
||||||
|
qrcodegen_Mode_BYTE = 0x4,
|
||||||
|
qrcodegen_Mode_KANJI = 0x8,
|
||||||
|
qrcodegen_Mode_ECI = 0x7,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A segment of character/binary/control data in a QR Code symbol.
|
||||||
|
* The mid-level way to create a segment is to take the payload data
|
||||||
|
* and call a factory function such as qrcodegen_makeNumeric().
|
||||||
|
* The low-level way to create a segment is to custom-make the bit buffer
|
||||||
|
* and initialize a qrcodegen_Segment struct with appropriate values.
|
||||||
|
* Even in the most favorable conditions, a QR Code can only hold 7089 characters of data.
|
||||||
|
* Any segment longer than this is meaningless for the purpose of generating QR Codes.
|
||||||
|
* Moreover, the maximum allowed bit length is 32767 because
|
||||||
|
* the largest QR Code (version 40) has 31329 modules.
|
||||||
|
*/
|
||||||
|
struct qrcodegen_Segment {
|
||||||
|
// The mode indicator of this segment.
|
||||||
|
enum qrcodegen_Mode mode;
|
||||||
|
|
||||||
|
// The length of this segment's unencoded data. Measured in characters for
|
||||||
|
// numeric/alphanumeric/kanji mode, bytes for byte mode, and 0 for ECI mode.
|
||||||
|
// Always zero or positive. Not the same as the data's bit length.
|
||||||
|
int numChars;
|
||||||
|
|
||||||
|
// The data bits of this segment, packed in bitwise big endian.
|
||||||
|
// Can be null if the bit length is zero.
|
||||||
|
uint8_t *data;
|
||||||
|
|
||||||
|
// The number of valid data bits used in the buffer. Requires
|
||||||
|
// 0 <= bitLength <= 32767, and bitLength <= (capacity of data array) * 8.
|
||||||
|
// The character count (numChars) must agree with the mode and the bit buffer length.
|
||||||
|
int bitLength;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*---- Macro constants and functions ----*/
|
||||||
|
|
||||||
|
#define qrcodegen_VERSION_MIN 1 // The minimum version number supported in the QR Code Model 2 standard
|
||||||
|
#define qrcodegen_VERSION_MAX 40 // The maximum version number supported in the QR Code Model 2 standard
|
||||||
|
|
||||||
|
// Calculates the number of bytes needed to store any QR Code up to and including the given version number,
|
||||||
|
// as a compile-time constant. For example, 'uint8_t buffer[qrcodegen_BUFFER_LEN_FOR_VERSION(25)];'
|
||||||
|
// can store any single QR Code from version 1 to 25 (inclusive). The result fits in an int (or int16).
|
||||||
|
// Requires qrcodegen_VERSION_MIN <= n <= qrcodegen_VERSION_MAX.
|
||||||
|
#define qrcodegen_BUFFER_LEN_FOR_VERSION(n) ((((n) * 4 + 17) * ((n) * 4 + 17) + 7) / 8 + 1)
|
||||||
|
|
||||||
|
// The worst-case number of bytes needed to store one QR Code, up to and including
|
||||||
|
// version 40. This value equals 3918, which is just under 4 kilobytes.
|
||||||
|
// Use this more convenient value to avoid calculating tighter memory bounds for buffers.
|
||||||
|
#define qrcodegen_BUFFER_LEN_MAX qrcodegen_BUFFER_LEN_FOR_VERSION(qrcodegen_VERSION_MAX)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*---- Functions (high level) to generate QR Codes ----*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Encodes the given text string to a QR Code, returning true if successful.
|
||||||
|
* If the data is too long to fit in any version in the given range
|
||||||
|
* at the given ECC level, then false is returned.
|
||||||
|
*
|
||||||
|
* The input text must be encoded in UTF-8 and contain no NULs.
|
||||||
|
* Requires 1 <= minVersion <= maxVersion <= 40.
|
||||||
|
*
|
||||||
|
* The smallest possible QR Code version within the given range is automatically
|
||||||
|
* chosen for the output. Iff boostEcl is true, then the ECC level of the result
|
||||||
|
* may be higher than the ecl argument if it can be done without increasing the
|
||||||
|
* version. The mask is either between qrcodegen_Mask_0 to 7 to force that mask, or
|
||||||
|
* qrcodegen_Mask_AUTO to automatically choose an appropriate mask (which may be slow).
|
||||||
|
*
|
||||||
|
* About the arrays, letting len = qrcodegen_BUFFER_LEN_FOR_VERSION(maxVersion):
|
||||||
|
* - Before calling the function:
|
||||||
|
* - The array ranges tempBuffer[0 : len] and qrcode[0 : len] must allow
|
||||||
|
* reading and writing; hence each array must have a length of at least len.
|
||||||
|
* - The two ranges must not overlap (aliasing).
|
||||||
|
* - The initial state of both ranges can be uninitialized
|
||||||
|
* because the function always writes before reading.
|
||||||
|
* - After the function returns:
|
||||||
|
* - Both ranges have no guarantee on which elements are initialized and what values are stored.
|
||||||
|
* - tempBuffer contains no useful data and should be treated as entirely uninitialized.
|
||||||
|
* - If successful, qrcode can be passed into qrcodegen_getSize() and qrcodegen_getModule().
|
||||||
|
*
|
||||||
|
* If successful, the resulting QR Code may use numeric,
|
||||||
|
* alphanumeric, or byte mode to encode the text.
|
||||||
|
*
|
||||||
|
* In the most optimistic case, a QR Code at version 40 with low ECC
|
||||||
|
* can hold any UTF-8 string up to 2953 bytes, or any alphanumeric string
|
||||||
|
* up to 4296 characters, or any digit string up to 7089 characters.
|
||||||
|
* These numbers represent the hard upper limit of the QR Code standard.
|
||||||
|
*
|
||||||
|
* Please consult the QR Code specification for information on
|
||||||
|
* data capacities per version, ECC level, and text encoding mode.
|
||||||
|
*/
|
||||||
|
bool qrcodegen_encodeText(const char *text, uint8_t tempBuffer[], uint8_t qrcode[],
|
||||||
|
enum qrcodegen_Ecc ecl, int minVersion, int maxVersion, enum qrcodegen_Mask mask, bool boostEcl);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Encodes the given binary data to a QR Code, returning true if successful.
|
||||||
|
* If the data is too long to fit in any version in the given range
|
||||||
|
* at the given ECC level, then false is returned.
|
||||||
|
*
|
||||||
|
* Requires 1 <= minVersion <= maxVersion <= 40.
|
||||||
|
*
|
||||||
|
* The smallest possible QR Code version within the given range is automatically
|
||||||
|
* chosen for the output. Iff boostEcl is true, then the ECC level of the result
|
||||||
|
* may be higher than the ecl argument if it can be done without increasing the
|
||||||
|
* version. The mask is either between qrcodegen_Mask_0 to 7 to force that mask, or
|
||||||
|
* qrcodegen_Mask_AUTO to automatically choose an appropriate mask (which may be slow).
|
||||||
|
*
|
||||||
|
* About the arrays, letting len = qrcodegen_BUFFER_LEN_FOR_VERSION(maxVersion):
|
||||||
|
* - Before calling the function:
|
||||||
|
* - The array ranges dataAndTemp[0 : len] and qrcode[0 : len] must allow
|
||||||
|
* reading and writing; hence each array must have a length of at least len.
|
||||||
|
* - The two ranges must not overlap (aliasing).
|
||||||
|
* - The input array range dataAndTemp[0 : dataLen] should normally be
|
||||||
|
* valid UTF-8 text, but is not required by the QR Code standard.
|
||||||
|
* - The initial state of dataAndTemp[dataLen : len] and qrcode[0 : len]
|
||||||
|
* can be uninitialized because the function always writes before reading.
|
||||||
|
* - After the function returns:
|
||||||
|
* - Both ranges have no guarantee on which elements are initialized and what values are stored.
|
||||||
|
* - dataAndTemp contains no useful data and should be treated as entirely uninitialized.
|
||||||
|
* - If successful, qrcode can be passed into qrcodegen_getSize() and qrcodegen_getModule().
|
||||||
|
*
|
||||||
|
* If successful, the resulting QR Code will use byte mode to encode the data.
|
||||||
|
*
|
||||||
|
* In the most optimistic case, a QR Code at version 40 with low ECC can hold any byte
|
||||||
|
* sequence up to length 2953. This is the hard upper limit of the QR Code standard.
|
||||||
|
*
|
||||||
|
* Please consult the QR Code specification for information on
|
||||||
|
* data capacities per version, ECC level, and text encoding mode.
|
||||||
|
*/
|
||||||
|
bool qrcodegen_encodeBinary(uint8_t dataAndTemp[], size_t dataLen, uint8_t qrcode[],
|
||||||
|
enum qrcodegen_Ecc ecl, int minVersion, int maxVersion, enum qrcodegen_Mask mask, bool boostEcl);
|
||||||
|
|
||||||
|
|
||||||
|
/*---- Functions (low level) to generate QR Codes ----*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Encodes the given segments to a QR Code, returning true if successful.
|
||||||
|
* If the data is too long to fit in any version at the given ECC level,
|
||||||
|
* then false is returned.
|
||||||
|
*
|
||||||
|
* The smallest possible QR Code version is automatically chosen for
|
||||||
|
* the output. The ECC level of the result may be higher than the
|
||||||
|
* ecl argument if it can be done without increasing the version.
|
||||||
|
*
|
||||||
|
* About the byte arrays, letting len = qrcodegen_BUFFER_LEN_FOR_VERSION(qrcodegen_VERSION_MAX):
|
||||||
|
* - Before calling the function:
|
||||||
|
* - The array ranges tempBuffer[0 : len] and qrcode[0 : len] must allow
|
||||||
|
* reading and writing; hence each array must have a length of at least len.
|
||||||
|
* - The two ranges must not overlap (aliasing).
|
||||||
|
* - The initial state of both ranges can be uninitialized
|
||||||
|
* because the function always writes before reading.
|
||||||
|
* - The input array segs can contain segments whose data buffers overlap with tempBuffer.
|
||||||
|
* - After the function returns:
|
||||||
|
* - Both ranges have no guarantee on which elements are initialized and what values are stored.
|
||||||
|
* - tempBuffer contains no useful data and should be treated as entirely uninitialized.
|
||||||
|
* - Any segment whose data buffer overlaps with tempBuffer[0 : len]
|
||||||
|
* must be treated as having invalid values in that array.
|
||||||
|
* - If successful, qrcode can be passed into qrcodegen_getSize() and qrcodegen_getModule().
|
||||||
|
*
|
||||||
|
* Please consult the QR Code specification for information on
|
||||||
|
* data capacities per version, ECC level, and text encoding mode.
|
||||||
|
*
|
||||||
|
* This function allows the user to create a custom sequence of segments that switches
|
||||||
|
* between modes (such as alphanumeric and byte) to encode text in less space.
|
||||||
|
* This is a low-level API; the high-level API is qrcodegen_encodeText() and qrcodegen_encodeBinary().
|
||||||
|
*/
|
||||||
|
bool qrcodegen_encodeSegments(const struct qrcodegen_Segment segs[], size_t len,
|
||||||
|
enum qrcodegen_Ecc ecl, uint8_t tempBuffer[], uint8_t qrcode[]);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Encodes the given segments to a QR Code, returning true if successful.
|
||||||
|
* If the data is too long to fit in any version in the given range
|
||||||
|
* at the given ECC level, then false is returned.
|
||||||
|
*
|
||||||
|
* Requires 1 <= minVersion <= maxVersion <= 40.
|
||||||
|
*
|
||||||
|
* The smallest possible QR Code version within the given range is automatically
|
||||||
|
* chosen for the output. Iff boostEcl is true, then the ECC level of the result
|
||||||
|
* may be higher than the ecl argument if it can be done without increasing the
|
||||||
|
* version. The mask is either between qrcodegen_Mask_0 to 7 to force that mask, or
|
||||||
|
* qrcodegen_Mask_AUTO to automatically choose an appropriate mask (which may be slow).
|
||||||
|
*
|
||||||
|
* About the byte arrays, letting len = qrcodegen_BUFFER_LEN_FOR_VERSION(qrcodegen_VERSION_MAX):
|
||||||
|
* - Before calling the function:
|
||||||
|
* - The array ranges tempBuffer[0 : len] and qrcode[0 : len] must allow
|
||||||
|
* reading and writing; hence each array must have a length of at least len.
|
||||||
|
* - The two ranges must not overlap (aliasing).
|
||||||
|
* - The initial state of both ranges can be uninitialized
|
||||||
|
* because the function always writes before reading.
|
||||||
|
* - The input array segs can contain segments whose data buffers overlap with tempBuffer.
|
||||||
|
* - After the function returns:
|
||||||
|
* - Both ranges have no guarantee on which elements are initialized and what values are stored.
|
||||||
|
* - tempBuffer contains no useful data and should be treated as entirely uninitialized.
|
||||||
|
* - Any segment whose data buffer overlaps with tempBuffer[0 : len]
|
||||||
|
* must be treated as having invalid values in that array.
|
||||||
|
* - If successful, qrcode can be passed into qrcodegen_getSize() and qrcodegen_getModule().
|
||||||
|
*
|
||||||
|
* Please consult the QR Code specification for information on
|
||||||
|
* data capacities per version, ECC level, and text encoding mode.
|
||||||
|
*
|
||||||
|
* This function allows the user to create a custom sequence of segments that switches
|
||||||
|
* between modes (such as alphanumeric and byte) to encode text in less space.
|
||||||
|
* This is a low-level API; the high-level API is qrcodegen_encodeText() and qrcodegen_encodeBinary().
|
||||||
|
*/
|
||||||
|
bool qrcodegen_encodeSegmentsAdvanced(const struct qrcodegen_Segment segs[], size_t len, enum qrcodegen_Ecc ecl,
|
||||||
|
int minVersion, int maxVersion, enum qrcodegen_Mask mask, bool boostEcl, uint8_t tempBuffer[], uint8_t qrcode[]);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tests whether the given string can be encoded as a segment in numeric mode.
|
||||||
|
* A string is encodable iff each character is in the range 0 to 9.
|
||||||
|
*/
|
||||||
|
bool qrcodegen_isNumeric(const char *text);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tests whether the given string can be encoded as a segment in alphanumeric mode.
|
||||||
|
* A string is encodable iff each character is in the following set: 0 to 9, A to Z
|
||||||
|
* (uppercase only), space, dollar, percent, asterisk, plus, hyphen, period, slash, colon.
|
||||||
|
*/
|
||||||
|
bool qrcodegen_isAlphanumeric(const char *text);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns the number of bytes (uint8_t) needed for the data buffer of a segment
|
||||||
|
* containing the given number of characters using the given mode. Notes:
|
||||||
|
* - Returns SIZE_MAX on failure, i.e. numChars > INT16_MAX or the internal
|
||||||
|
* calculation of the number of needed bits exceeds INT16_MAX (i.e. 32767).
|
||||||
|
* - Otherwise, all valid results are in the range [0, ceil(INT16_MAX / 8)], i.e. at most 4096.
|
||||||
|
* - It is okay for the user to allocate more bytes for the buffer than needed.
|
||||||
|
* - For byte mode, numChars measures the number of bytes, not Unicode code points.
|
||||||
|
* - For ECI mode, numChars must be 0, and the worst-case number of bytes is returned.
|
||||||
|
* An actual ECI segment can have shorter data. For non-ECI modes, the result is exact.
|
||||||
|
*/
|
||||||
|
size_t qrcodegen_calcSegmentBufferSize(enum qrcodegen_Mode mode, size_t numChars);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns a segment representing the given binary data encoded in
|
||||||
|
* byte mode. All input byte arrays are acceptable. Any text string
|
||||||
|
* can be converted to UTF-8 bytes and encoded as a byte mode segment.
|
||||||
|
*/
|
||||||
|
struct qrcodegen_Segment qrcodegen_makeBytes(const uint8_t data[], size_t len, uint8_t buf[]);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns a segment representing the given string of decimal digits encoded in numeric mode.
|
||||||
|
*/
|
||||||
|
struct qrcodegen_Segment qrcodegen_makeNumeric(const char *digits, uint8_t buf[]);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns a segment representing the given text string encoded in alphanumeric mode.
|
||||||
|
* The characters allowed are: 0 to 9, A to Z (uppercase only), space,
|
||||||
|
* dollar, percent, asterisk, plus, hyphen, period, slash, colon.
|
||||||
|
*/
|
||||||
|
struct qrcodegen_Segment qrcodegen_makeAlphanumeric(const char *text, uint8_t buf[]);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns a segment representing an Extended Channel Interpretation
|
||||||
|
* (ECI) designator with the given assignment value.
|
||||||
|
*/
|
||||||
|
struct qrcodegen_Segment qrcodegen_makeEci(long assignVal, uint8_t buf[]);
|
||||||
|
|
||||||
|
|
||||||
|
/*---- Functions to extract raw data from QR Codes ----*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns the side length of the given QR Code, assuming that encoding succeeded.
|
||||||
|
* The result is in the range [21, 177]. Note that the length of the array buffer
|
||||||
|
* is related to the side length - every 'uint8_t qrcode[]' must have length at least
|
||||||
|
* qrcodegen_BUFFER_LEN_FOR_VERSION(version), which equals ceil(size^2 / 8 + 1).
|
||||||
|
*/
|
||||||
|
int qrcodegen_getSize(const uint8_t qrcode[]);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns the color of the module (pixel) at the given coordinates, which is false
|
||||||
|
* for light or true for dark. The top left corner has the coordinates (x=0, y=0).
|
||||||
|
* If the given coordinates are out of bounds, then false (light) is returned.
|
||||||
|
*/
|
||||||
|
bool qrcodegen_getModule(const uint8_t qrcode[], int x, int y);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
7
partition.csv
Normal file
7
partition.csv
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# Name, Type, SubType, Offset, Size, Flags
|
||||||
|
nvs, data, nvs, 36K, 20K,
|
||||||
|
otadata, data, ota, 56K, 8K,
|
||||||
|
app0, app, ota_0, 64K, 3200K,
|
||||||
|
#app1, app, ota_1, , 1600K,
|
||||||
|
spiffs, data, spiffs, , 600K,
|
||||||
|
coredump, data, coredump,, 64K,
|
|
99
platformio.ini
Normal file
99
platformio.ini
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
; PlatformIO Project Configuration File
|
||||||
|
;
|
||||||
|
; Build options: build flags, source filter
|
||||||
|
; Upload options: custom upload port, speed and extra flags
|
||||||
|
; Library options: dependencies, extra library storages
|
||||||
|
; Advanced options: extra scripting
|
||||||
|
;
|
||||||
|
; Please visit documentation for the other options and examples
|
||||||
|
; https://docs.platformio.org/page/projectconf.html
|
||||||
|
|
||||||
|
[platformio]
|
||||||
|
data_dir = data/build
|
||||||
|
|
||||||
|
[env]
|
||||||
|
platform = espressif32
|
||||||
|
framework = arduino
|
||||||
|
monitor_speed = 115200
|
||||||
|
upload_speed = 921600
|
||||||
|
monitor_filters = esp32_exception_decoder, colorize
|
||||||
|
extra_scripts = post:scripts/extra_script.py
|
||||||
|
lib_deps =
|
||||||
|
bblanchon/ArduinoJson@^6.21.2
|
||||||
|
fbiego/ESP32Time@^2.0.0
|
||||||
|
zinggjm/GxEPD2@^1.5.2
|
||||||
|
adafruit/Adafruit MCP23017 Arduino Library@^2.3.0
|
||||||
|
adafruit/Adafruit NeoPixel@^1.11.0
|
||||||
|
https://github.com/me-no-dev/ESPAsyncWebServer.git
|
||||||
|
https://github.com/tzapu/WiFiManager.git#v2.0.16-rc.2
|
||||||
|
|
||||||
|
[env:esp32doit-devkit-v1]
|
||||||
|
board = esp32doit-devkit-v1
|
||||||
|
board_build.partitions = partition.csv
|
||||||
|
build_flags =
|
||||||
|
-D IS_BW
|
||||||
|
-D NO_MCP
|
||||||
|
-D CONFIG_FREERTOS_USE_TRACE_FACILITY
|
||||||
|
-D ASYNCWEBSERVER_REGEX
|
||||||
|
-D CONFIG_ASYNC_TCP_PRIORITY=500
|
||||||
|
|
||||||
|
[env:esp32doit-devkit-v1_3C]
|
||||||
|
board = esp32doit-devkit-v1
|
||||||
|
board_build.partitions = partition.csv
|
||||||
|
build_flags =
|
||||||
|
-D IS_3C
|
||||||
|
-D CONFIG_FREERTOS_USE_TRACE_FACILITY
|
||||||
|
|
||||||
|
[env:esp32wemos-s3-mini_BW]
|
||||||
|
platform = espressif32
|
||||||
|
framework = arduino
|
||||||
|
board = lolin_s3_mini
|
||||||
|
board_build.partitions = partition.csv
|
||||||
|
build_flags =
|
||||||
|
-D IS_S3
|
||||||
|
-D IS_BW
|
||||||
|
-D CONFIG_FREERTOS_USE_TRACE_FACILITY
|
||||||
|
-D WITH_RGB_LED
|
||||||
|
-D NEOPIXEL_COUNT=4
|
||||||
|
-DASYNCWEBSERVER_REGEX
|
||||||
|
; -D WITH_BUTTONS
|
||||||
|
-D ARDUINO_USB_CDC_ON_BOOT
|
||||||
|
-D HOSTNAME="\"btclock3\""
|
||||||
|
-D CONFIG_ASYNC_TCP_PRIORITY=500
|
||||||
|
|
||||||
|
[env:esp32wemos-s3-mini_3C]
|
||||||
|
platform = espressif32
|
||||||
|
framework = arduino
|
||||||
|
board = lolin_s3_mini
|
||||||
|
board_build.partitions = partition.csv
|
||||||
|
build_flags =
|
||||||
|
-D IS_3C
|
||||||
|
-D IS_S3
|
||||||
|
-D CONFIG_FREERTOS_USE_TRACE_FACILITY
|
||||||
|
-D WITH_RGB_LED
|
||||||
|
-D WITH_BUTTONS
|
||||||
|
-D HOSTNAME="\"btclock3c\""
|
||||||
|
-D CONFIG_ASYNC_TCP_PRIORITY=500
|
||||||
|
|
||||||
|
[env:esp32doit-devkit-v1_nodisp]
|
||||||
|
board = esp32doit-devkit-v1
|
||||||
|
board_build.partitions = partition.csv
|
||||||
|
build_flags =
|
||||||
|
-D NO_DISPLAY
|
||||||
|
-D CONFIG_FREERTOS_USE_TRACE_FACILITY
|
||||||
|
|
||||||
|
[env:esp32_s3_devkit]
|
||||||
|
platform = espressif32
|
||||||
|
board = esp32-s3-devkitc-1
|
||||||
|
board_build.partitions = partition.csv
|
||||||
|
;upload_protocol = esp-builtin
|
||||||
|
build_flags =
|
||||||
|
-D NO_DISPLAY
|
||||||
|
-D NO_MCP
|
||||||
|
-D IS_BW
|
||||||
|
-D WITH_RGB_LED
|
||||||
|
-D NEOPIXEL_COUNT=1
|
||||||
|
-D NEOPIXEL_PIN=38
|
||||||
|
-D CONFIG_ASYNC_TCP_PRIORITY=500
|
||||||
|
-DASYNCWEBSERVER_REGEX
|
||||||
|
-D HOSTNAME="\"btclocks3d\""
|
7
scripts/extra_script.py
Normal file
7
scripts/extra_script.py
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Import("env")
|
||||||
|
|
||||||
|
# Build web interface before building FS
|
||||||
|
def before_buildfs(source, target, env):
|
||||||
|
env.Execute("cd data && yarn && yarn build")
|
||||||
|
|
||||||
|
env.AddPreAction("$BUILD_DIR/spiffs.bin", before_buildfs)
|
22
src/config.h.example
Normal file
22
src/config.h.example
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define NTP_SERVER "nl.pool.ntp.org"
|
||||||
|
|
||||||
|
#define FONT_SMALL Antonio_SemiBold20pt7b
|
||||||
|
#define FONT_BIG Antonio_SemiBold90pt7b
|
||||||
|
|
||||||
|
#define TIME_OFFSET_SECONDS 3600
|
||||||
|
#define OTA_PASSWORD "changeme"
|
||||||
|
|
||||||
|
#ifndef HOSTNAME
|
||||||
|
#define HOSTNAME "btclock"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BITCOIND_HOST ""
|
||||||
|
#define BITCOIND_PORT 8332
|
||||||
|
|
||||||
|
#define BITCOIND_RPC_USER ""
|
||||||
|
#define BITCOIND_RPC_PASS ""
|
||||||
|
|
||||||
|
#define DEFAULT_FG_COLOR GxEPD_WHITE
|
||||||
|
#define DEFAULT_BG_COLOR GxEPD_BLACK
|
482
src/fonts/antonio-semibold20.h
Normal file
482
src/fonts/antonio-semibold20.h
Normal file
@ -0,0 +1,482 @@
|
|||||||
|
const uint8_t Antonio_SemiBold20pt7bBitmaps[] PROGMEM = {
|
||||||
|
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x66, 0x66, 0x66,
|
||||||
|
0x66, 0x66, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x7B, 0xDE, 0xF7,
|
||||||
|
0x98, 0xC6, 0x00, 0x03, 0x8F, 0x01, 0xC7, 0x80, 0xE3, 0x80, 0xF1, 0xC0,
|
||||||
|
0x70, 0xE0, 0x38, 0x70, 0x1C, 0x78, 0x0E, 0x3C, 0x07, 0x1C, 0x07, 0x8E,
|
||||||
|
0x03, 0x87, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x38, 0xE0, 0x3C,
|
||||||
|
0x70, 0x1E, 0x38, 0x0E, 0x1C, 0x07, 0x0E, 0x03, 0x8F, 0x0F, 0xFF, 0xF7,
|
||||||
|
0xFF, 0xF8, 0xF1, 0xC0, 0x70, 0xE0, 0x38, 0x70, 0x1C, 0x78, 0x0E, 0x3C,
|
||||||
|
0x0F, 0x1C, 0x07, 0x8E, 0x03, 0x87, 0x01, 0xC3, 0x80, 0xE3, 0xC0, 0x71,
|
||||||
|
0xE0, 0x78, 0xE0, 0x00, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0C, 0x00, 0x60,
|
||||||
|
0x1F, 0xC1, 0xFF, 0x9F, 0xFC, 0xFB, 0xF7, 0x87, 0xBC, 0x3D, 0xE1, 0xEF,
|
||||||
|
0x0F, 0x78, 0x7B, 0xE3, 0xDF, 0x00, 0x7C, 0x01, 0xF8, 0x0F, 0xE0, 0x3F,
|
||||||
|
0x80, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x3E, 0xF0, 0xF7, 0x87, 0xFC, 0x3F,
|
||||||
|
0xE1, 0xFF, 0x0F, 0xFC, 0x7B, 0xFF, 0xCF, 0xFE, 0x3F, 0xE0, 0xFE, 0x01,
|
||||||
|
0xC0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0x1F, 0x80, 0x01, 0xC0,
|
||||||
|
0x07, 0xFE, 0x00, 0x3C, 0x00, 0x7F, 0xE0, 0x03, 0xC0, 0x0F, 0x9F, 0x00,
|
||||||
|
0x38, 0x00, 0xF0, 0xF0, 0x07, 0x80, 0x0F, 0x0F, 0x00, 0x70, 0x00, 0xF0,
|
||||||
|
0xF0, 0x0F, 0x00, 0x0F, 0x0F, 0x00, 0xF0, 0x00, 0xF0, 0xF0, 0x0E, 0x00,
|
||||||
|
0x0F, 0x0F, 0x01, 0xE0, 0x00, 0xF0, 0xF0, 0x1C, 0x00, 0x0F, 0x0F, 0x03,
|
||||||
|
0xC0, 0x60, 0xF0, 0xF0, 0x3C, 0x3F, 0xCF, 0x0F, 0x03, 0x87, 0xFE, 0xF0,
|
||||||
|
0xF0, 0x78, 0xFF, 0xEF, 0x0F, 0x07, 0x8F, 0x0E, 0xF0, 0xF0, 0xF0, 0xF0,
|
||||||
|
0xFF, 0x0F, 0x0F, 0x0E, 0x0F, 0xF0, 0xF0, 0xE0, 0xE0, 0xF7, 0xDF, 0x1E,
|
||||||
|
0x0E, 0x0F, 0x7F, 0xE1, 0xE0, 0xE0, 0xF3, 0xFC, 0x1C, 0x0E, 0x0F, 0x1F,
|
||||||
|
0x83, 0xC0, 0xE0, 0xF0, 0x00, 0x38, 0x0E, 0x0F, 0x00, 0x07, 0x80, 0xE0,
|
||||||
|
0xF0, 0x00, 0x78, 0x0E, 0x0F, 0x00, 0x07, 0x00, 0xE0, 0xF0, 0x00, 0xF0,
|
||||||
|
0x0E, 0x0F, 0x00, 0x0E, 0x00, 0xE0, 0xF0, 0x01, 0xE0, 0x0F, 0x0F, 0x00,
|
||||||
|
0x1E, 0x00, 0xF1, 0xE0, 0x01, 0xC0, 0x0F, 0xFE, 0x00, 0x3C, 0x00, 0x7F,
|
||||||
|
0xC0, 0x03, 0x80, 0x03, 0xF8, 0x03, 0xE0, 0x03, 0xFE, 0x00, 0xFF, 0x80,
|
||||||
|
0x7C, 0xF0, 0x1E, 0x1C, 0x07, 0x87, 0x01, 0xE1, 0xC0, 0x78, 0x70, 0x1E,
|
||||||
|
0x1C, 0x07, 0x8F, 0x00, 0xF3, 0x80, 0x3D, 0xE0, 0x0F, 0x78, 0x01, 0xFC,
|
||||||
|
0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xC0, 0x03, 0xF0, 0x00, 0xFE, 0x08,
|
||||||
|
0x7F, 0x86, 0x3F, 0xE3, 0x8F, 0x3C, 0xF7, 0x8F, 0x79, 0xE1, 0xFC, 0x78,
|
||||||
|
0x7F, 0x3C, 0x1F, 0x8F, 0x03, 0xE3, 0xC0, 0xF0, 0xF0, 0x3E, 0x1E, 0x1F,
|
||||||
|
0x87, 0xFF, 0xF1, 0xFF, 0xFC, 0x3F, 0xE7, 0x87, 0xF1, 0xE0, 0xFF, 0xFF,
|
||||||
|
0xF7, 0x76, 0x66, 0x66, 0x3E, 0xFF, 0xFF, 0xCF, 0x1E, 0x3C, 0x78, 0xF1,
|
||||||
|
0xE3, 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x8F, 0x1E, 0x3C,
|
||||||
|
0x78, 0xF1, 0xE3, 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xFB, 0xF7,
|
||||||
|
0xE1, 0xC0, 0xF1, 0xF3, 0xF1, 0xE3, 0xC7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9,
|
||||||
|
0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E,
|
||||||
|
0x7C, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7B, 0xF7, 0xEF, 0x98, 0x00,
|
||||||
|
0x07, 0x00, 0x1C, 0x04, 0x71, 0x39, 0xCE, 0xFB, 0x7D, 0xFF, 0xC1, 0xFC,
|
||||||
|
0x03, 0xE0, 0x3F, 0xE3, 0xEF, 0xFF, 0x73, 0x99, 0xC6, 0x07, 0x08, 0x1C,
|
||||||
|
0x00, 0x70, 0x00, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xF0, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0xFF, 0xFF, 0xFF,
|
||||||
|
0x8C, 0xE7, 0x31, 0x9C, 0xC0, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0x00,
|
||||||
|
0xF8, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x3C,
|
||||||
|
0x01, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x03, 0xC0, 0x1E, 0x00,
|
||||||
|
0xF0, 0x07, 0x80, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x0F, 0x00, 0x78,
|
||||||
|
0x03, 0xC0, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01,
|
||||||
|
0xE0, 0x0F, 0x00, 0x78, 0x07, 0x80, 0x00, 0x0F, 0xC1, 0xFF, 0x9F, 0xFC,
|
||||||
|
0xFF, 0xF7, 0x8F, 0xFC, 0x3F, 0xE1, 0xFF, 0x0F, 0xF8, 0x7F, 0xC3, 0xFE,
|
||||||
|
0x1F, 0xF0, 0xFF, 0x87, 0xFC, 0x3F, 0xE1, 0xFF, 0x0F, 0xF8, 0x7F, 0xC3,
|
||||||
|
0xFE, 0x1F, 0xF0, 0xFF, 0x87, 0xFC, 0x3F, 0xE1, 0xFF, 0x0F, 0xF8, 0x7F,
|
||||||
|
0xC3, 0xFE, 0x1F, 0xF0, 0xFF, 0x87, 0xBC, 0x7D, 0xF7, 0xEF, 0xFE, 0x3F,
|
||||||
|
0xF0, 0xFF, 0x00, 0x03, 0x83, 0xC3, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F,
|
||||||
|
0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xC3,
|
||||||
|
0xE1, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF8,
|
||||||
|
0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xC0, 0x0F, 0x81, 0xFF, 0x1F, 0xF8, 0xFF,
|
||||||
|
0xEF, 0x8F, 0x7C, 0x7B, 0xC3, 0xDE, 0x1E, 0xF0, 0xFF, 0x87, 0xFC, 0x3F,
|
||||||
|
0xE1, 0xEF, 0x0F, 0x78, 0x78, 0x07, 0xC0, 0x3C, 0x03, 0xE0, 0x1E, 0x01,
|
||||||
|
0xF0, 0x0F, 0x00, 0xF8, 0x07, 0x80, 0x7C, 0x07, 0xC0, 0x3E, 0x03, 0xE0,
|
||||||
|
0x1F, 0x00, 0xF0, 0x07, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0xFE, 0xFF, 0xF7,
|
||||||
|
0xFF, 0x80, 0x0F, 0xC0, 0xFF, 0x87, 0xFF, 0x1F, 0xFE, 0x78, 0xFB, 0xE1,
|
||||||
|
0xEF, 0x87, 0xBC, 0x1E, 0xF0, 0x7B, 0xC1, 0xE0, 0x07, 0x80, 0x1E, 0x00,
|
||||||
|
0x78, 0x03, 0xE0, 0x3F, 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0xC0, 0x0F, 0x00,
|
||||||
|
0x3E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0xBC, 0x1E, 0xF0, 0x7F, 0xC1, 0xFF,
|
||||||
|
0x07, 0xBC, 0x1E, 0xF0, 0x7B, 0xE1, 0xE7, 0xDF, 0x9F, 0xFC, 0x3F, 0xE0,
|
||||||
|
0x7F, 0x00, 0x01, 0xF0, 0x07, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x1F,
|
||||||
|
0xC0, 0x7F, 0x01, 0xFC, 0x06, 0xF0, 0x3B, 0xC0, 0xEF, 0x03, 0xBC, 0x1C,
|
||||||
|
0xF0, 0x73, 0xC1, 0xCF, 0x0F, 0x3C, 0x38, 0xF0, 0xE3, 0xC7, 0x8F, 0x1C,
|
||||||
|
0x3C, 0x70, 0xF1, 0xC3, 0xCF, 0x0F, 0x38, 0x3C, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0,
|
||||||
|
0x03, 0xC0, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0xFE, 0xF0, 0x0F, 0x00, 0xF0,
|
||||||
|
0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF3, 0x0F, 0xFC, 0xFF, 0xEF, 0xFE, 0xF9,
|
||||||
|
0xEF, 0x1F, 0xF0, 0xF1, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00,
|
||||||
|
0xF0, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x1F, 0xFB,
|
||||||
|
0xEF, 0xFE, 0x7F, 0xC3, 0xF8, 0x0F, 0xC0, 0xFF, 0x83, 0xFF, 0x1F, 0xFC,
|
||||||
|
0x78, 0xF9, 0xE1, 0xEF, 0x87, 0xBE, 0x1E, 0xF8, 0x7B, 0xE1, 0xEF, 0x80,
|
||||||
|
0x3E, 0x00, 0xF8, 0x03, 0xEF, 0x8F, 0xFF, 0x3F, 0xFE, 0xFF, 0xFB, 0xE1,
|
||||||
|
0xEF, 0x87, 0xBE, 0x1E, 0xF8, 0x7F, 0xE1, 0xFF, 0x87, 0xFE, 0x1F, 0xF8,
|
||||||
|
0x7F, 0xE1, 0xFF, 0x87, 0xFE, 0x1F, 0xF8, 0x79, 0xE1, 0xE7, 0xFF, 0x9F,
|
||||||
|
0xFE, 0x3F, 0xF0, 0x7F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0x00, 0x7C, 0x01, 0xE0, 0x0F, 0x80, 0x3C, 0x00, 0xF0, 0x07, 0xC0, 0x1E,
|
||||||
|
0x00, 0x78, 0x03, 0xE0, 0x0F, 0x80, 0x3C, 0x00, 0xF0, 0x07, 0xC0, 0x1E,
|
||||||
|
0x00, 0x78, 0x03, 0xE0, 0x0F, 0x80, 0x3C, 0x00, 0xF0, 0x07, 0xC0, 0x1F,
|
||||||
|
0x00, 0x7C, 0x01, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0xF8, 0x03, 0xE0, 0x0F,
|
||||||
|
0x80, 0x3E, 0x00, 0xF8, 0x00, 0x1F, 0xC1, 0xFF, 0x1F, 0xFC, 0xFB, 0xFF,
|
||||||
|
0x8F, 0xFC, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0,
|
||||||
|
0xFF, 0x87, 0xBC, 0x79, 0xFF, 0xC7, 0xFC, 0x3F, 0xE3, 0xFF, 0x9E, 0x3D,
|
||||||
|
0xF1, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC,
|
||||||
|
0x1F, 0xE0, 0xFF, 0x07, 0xFC, 0x3F, 0xF7, 0xEF, 0xFE, 0x3F, 0xF0, 0xFE,
|
||||||
|
0x00, 0x1F, 0x81, 0xFF, 0x1F, 0xFD, 0xFF, 0xEF, 0x8F, 0x78, 0x7F, 0xC3,
|
||||||
|
0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F,
|
||||||
|
0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0xC7, 0xDF, 0xFE, 0xFF, 0xF3, 0xFF, 0x80,
|
||||||
|
0x3C, 0x01, 0xE0, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x0F,
|
||||||
|
0xFC, 0x79, 0xF7, 0xCF, 0xFE, 0x3F, 0xE0, 0xFE, 0x00, 0xFF, 0xFF, 0xF0,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xF3, 0x9C, 0xCE, 0x73, 0x98,
|
||||||
|
0x00, 0x20, 0x0C, 0x07, 0x81, 0xF0, 0xFE, 0x3F, 0x9F, 0xC7, 0xF0, 0xF8,
|
||||||
|
0x1C, 0x03, 0xE0, 0x7E, 0x07, 0xF0, 0x3F, 0x03, 0xF8, 0x1F, 0x01, 0xE0,
|
||||||
|
0x0C, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x0F, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xC0, 0x80, 0x18, 0x03, 0x80, 0x7C, 0x0F, 0xC0, 0xFE, 0x07,
|
||||||
|
0xF0, 0x7F, 0x03, 0xE0, 0x3C, 0x0F, 0x83, 0xF1, 0xFC, 0xFE, 0x3F, 0x87,
|
||||||
|
0xC0, 0xF0, 0x18, 0x02, 0x00, 0x00, 0x1F, 0x87, 0xFC, 0x7F, 0xEF, 0xFE,
|
||||||
|
0xF1, 0xEF, 0x1F, 0xF1, 0xFF, 0x1F, 0xF1, 0xFF, 0x1F, 0xF1, 0xFF, 0x1F,
|
||||||
|
0x01, 0xF0, 0x1E, 0x01, 0xE0, 0x3E, 0x03, 0xE0, 0xFC, 0x3F, 0x83, 0xF0,
|
||||||
|
0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x00, 0x3F, 0x80,
|
||||||
|
0x00, 0xFF, 0xF0, 0x00, 0xFF, 0xFC, 0x00, 0xF8, 0x0F, 0x00, 0xF0, 0x03,
|
||||||
|
0xC0, 0xF0, 0x00, 0xF0, 0xF0, 0x00, 0x38, 0x78, 0x00, 0x1C, 0x38, 0x1F,
|
||||||
|
0x87, 0x3C, 0x3F, 0xE3, 0x9E, 0x1E, 0xF1, 0xCE, 0x1C, 0x38, 0xE7, 0x0E,
|
||||||
|
0x1C, 0x77, 0x8E, 0x0E, 0x1F, 0xC7, 0x07, 0x0F, 0xE3, 0x83, 0x87, 0xF1,
|
||||||
|
0xC1, 0xC3, 0xF8, 0xE0, 0xE1, 0xFC, 0x70, 0x70, 0xFE, 0x38, 0x38, 0x7F,
|
||||||
|
0x1C, 0x1C, 0x77, 0x8E, 0x0E, 0x39, 0xC7, 0x07, 0x1C, 0xE3, 0xC7, 0xCE,
|
||||||
|
0x70, 0xF6, 0xFE, 0x3C, 0x7F, 0x3F, 0x1E, 0x1F, 0x0F, 0x07, 0x81, 0x00,
|
||||||
|
0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x80,
|
||||||
|
0x70, 0x07, 0xFF, 0xF8, 0x00, 0xFF, 0xFE, 0x00, 0x1F, 0xF0, 0x00, 0x07,
|
||||||
|
0xC0, 0x07, 0xE0, 0x0F, 0xE0, 0x0F, 0xE0, 0x0F, 0xE0, 0x0F, 0xE0, 0x0F,
|
||||||
|
0xE0, 0x0F, 0xF0, 0x0E, 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x1E,
|
||||||
|
0xF0, 0x1E, 0x70, 0x1E, 0x78, 0x1C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C,
|
||||||
|
0x78, 0x3C, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x7C, 0x3C, 0x78, 0x3C, 0x7F,
|
||||||
|
0xFC, 0x7F, 0xFC, 0x7F, 0xFE, 0x7F, 0xFE, 0x78, 0x1E, 0xF8, 0x1E, 0xF8,
|
||||||
|
0x1E, 0xF0, 0x1E, 0xF0, 0x1F, 0xF0, 0x1F, 0xFF, 0x03, 0xFF, 0x8F, 0xFF,
|
||||||
|
0x3F, 0xFC, 0xF0, 0xFB, 0xC3, 0xEF, 0x07, 0xBC, 0x1E, 0xF0, 0x7B, 0xC1,
|
||||||
|
0xEF, 0x07, 0xBC, 0x3E, 0xF0, 0xFB, 0xC3, 0xCF, 0xFF, 0x3F, 0xF8, 0xFF,
|
||||||
|
0xF3, 0xFF, 0xCF, 0x0F, 0xBC, 0x1E, 0xF0, 0x7B, 0xC1, 0xEF, 0x07, 0xFC,
|
||||||
|
0x1F, 0xF0, 0x7F, 0xC1, 0xFF, 0x07, 0xBC, 0x1E, 0xF0, 0x7B, 0xC3, 0xEF,
|
||||||
|
0xFF, 0xBF, 0xFC, 0xFF, 0xE3, 0xFF, 0x00, 0x0F, 0xC0, 0x7F, 0xC3, 0xFF,
|
||||||
|
0x9F, 0xFE, 0x7C, 0x79, 0xE1, 0xFF, 0x87, 0xFE, 0x0F, 0xF8, 0x3F, 0xE0,
|
||||||
|
0xFF, 0x83, 0xFE, 0x0F, 0xF8, 0x3F, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8,
|
||||||
|
0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x3F, 0xE0, 0xFF, 0x83, 0xFE,
|
||||||
|
0x0F, 0xF8, 0x3F, 0xE0, 0xFF, 0x83, 0xFE, 0x1F, 0x78, 0x7D, 0xE1, 0xE7,
|
||||||
|
0xEF, 0x8F, 0xFE, 0x3F, 0xF0, 0x3F, 0x80, 0xFF, 0x07, 0xFF, 0x3F, 0xFD,
|
||||||
|
0xFF, 0xEF, 0x0F, 0xF8, 0x7F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC,
|
||||||
|
0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83,
|
||||||
|
0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F,
|
||||||
|
0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x7F, 0xFF, 0xDF, 0xFE, 0xFF,
|
||||||
|
0xE7, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x3C, 0x0F, 0x03,
|
||||||
|
0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F,
|
||||||
|
0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03,
|
||||||
|
0xC0, 0xF0, 0x3C, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0xF0,
|
||||||
|
0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F,
|
||||||
|
0x03, 0xC0, 0xF0, 0x3C, 0x00, 0x0F, 0xE0, 0x7F, 0xC3, 0xFF, 0x9F, 0xFE,
|
||||||
|
0x7C, 0x7D, 0xE0, 0xFF, 0x83, 0xFE, 0x0F, 0xF8, 0x3F, 0xE0, 0xFF, 0x83,
|
||||||
|
0xFE, 0x0F, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF9, 0xFF, 0xE7,
|
||||||
|
0xFF, 0x9F, 0xFE, 0x0F, 0xF8, 0x3F, 0xE0, 0xFF, 0x83, 0xFE, 0x0F, 0xF8,
|
||||||
|
0x3F, 0xE0, 0xFF, 0x83, 0xFE, 0x0F, 0x78, 0x3D, 0xE1, 0xF7, 0xEF, 0xCF,
|
||||||
|
0xFF, 0x3F, 0xEC, 0x3F, 0x30, 0xF0, 0x7F, 0xC1, 0xFF, 0x07, 0xFC, 0x1F,
|
||||||
|
0xF0, 0x7F, 0xC1, 0xFF, 0x07, 0xFC, 0x1F, 0xF0, 0x7F, 0xC1, 0xFF, 0x07,
|
||||||
|
0xFC, 0x1F, 0xF0, 0x7F, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0x07, 0xFC, 0x1F, 0xF0, 0x7F, 0xC1, 0xFF, 0x07, 0xFC, 0x1F, 0xF0,
|
||||||
|
0x7F, 0xC1, 0xFF, 0x07, 0xFC, 0x1F, 0xF0, 0x7F, 0xC1, 0xFF, 0x07, 0xFC,
|
||||||
|
0x1F, 0xF0, 0x7F, 0xC1, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xF8,
|
||||||
|
0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00,
|
||||||
|
0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F,
|
||||||
|
0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0xF8, 0x7F, 0xC3, 0xFE,
|
||||||
|
0x1F, 0xF0, 0xFF, 0x87, 0xFC, 0x3F, 0xE1, 0xEF, 0x0F, 0x78, 0x7B, 0xF7,
|
||||||
|
0xCF, 0xFC, 0x7F, 0xE1, 0xFE, 0x00, 0xF0, 0x3D, 0xE0, 0xFB, 0xC1, 0xE7,
|
||||||
|
0x83, 0xCF, 0x0F, 0x9E, 0x1E, 0x3C, 0x3C, 0x78, 0xF8, 0xF1, 0xE1, 0xE7,
|
||||||
|
0xC3, 0xCF, 0x87, 0x9E, 0x0F, 0x7C, 0x1E, 0xF8, 0x3D, 0xE0, 0x7F, 0xC0,
|
||||||
|
0xFF, 0x01, 0xFE, 0x03, 0xFE, 0x07, 0xBC, 0x0F, 0x7C, 0x1E, 0xF8, 0x3C,
|
||||||
|
0xF0, 0x79, 0xF0, 0xF1, 0xE1, 0xE3, 0xC3, 0xC7, 0xC7, 0x87, 0x8F, 0x0F,
|
||||||
|
0x9E, 0x1F, 0x3C, 0x1E, 0x78, 0x3E, 0xF0, 0x7D, 0xE0, 0x7C, 0xF0, 0x3C,
|
||||||
|
0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03,
|
||||||
|
0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0,
|
||||||
|
0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x03,
|
||||||
|
0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0,
|
||||||
|
0x7F, 0xFE, 0x07, 0xFF, 0xE0, 0x7F, 0xFE, 0x07, 0xFE, 0xE0, 0x7F, 0xEE,
|
||||||
|
0x0F, 0xFE, 0xF0, 0xFF, 0xEF, 0x0E, 0xFE, 0x70, 0xEF, 0xE7, 0x0E, 0xFE,
|
||||||
|
0x70, 0xEF, 0xE7, 0x1E, 0xFE, 0x79, 0xCF, 0xE3, 0x9C, 0xFF, 0x39, 0xCF,
|
||||||
|
0xF3, 0x9C, 0xFF, 0x3B, 0xCF, 0xF3, 0xF8, 0xFF, 0x1F, 0x8F, 0xF1, 0xF8,
|
||||||
|
0xFF, 0x1F, 0x8F, 0xF1, 0xF8, 0xFF, 0x1F, 0x8F, 0xF0, 0xF0, 0xFF, 0x0F,
|
||||||
|
0x0F, 0xF0, 0xF0, 0xFF, 0x0F, 0x0F, 0xE0, 0x3F, 0x80, 0xFF, 0x03, 0xFC,
|
||||||
|
0x0F, 0xF8, 0x3F, 0xE0, 0xFF, 0x83, 0xFF, 0x0F, 0xFC, 0x3F, 0xF0, 0xFF,
|
||||||
|
0xE3, 0xFF, 0x8F, 0xFE, 0x3F, 0xFC, 0xFF, 0xF3, 0xFD, 0xCF, 0xF7, 0xBF,
|
||||||
|
0xDE, 0xFF, 0x3B, 0xFC, 0xFF, 0xF3, 0xDF, 0xC7, 0x7F, 0x1F, 0xFC, 0x7F,
|
||||||
|
0xF0, 0xFF, 0xC3, 0xFF, 0x0F, 0xFC, 0x1F, 0xF0, 0x7F, 0xC1, 0xFF, 0x03,
|
||||||
|
0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0x70, 0x0F, 0xE0, 0x7F, 0xC3, 0xFF, 0x9F,
|
||||||
|
0xFE, 0x7C, 0x7D, 0xE1, 0xFF, 0x83, 0xFE, 0x0F, 0xF8, 0x3F, 0xE0, 0xFF,
|
||||||
|
0x83, 0xFE, 0x0F, 0xF8, 0x3F, 0xE0, 0xFF, 0x83, 0xFE, 0x0F, 0xF8, 0x3F,
|
||||||
|
0xE0, 0xFF, 0x83, 0xFE, 0x0F, 0xF8, 0x3F, 0xE0, 0xFF, 0x83, 0xFE, 0x0F,
|
||||||
|
0xF8, 0x3F, 0xE0, 0xFF, 0x83, 0xFE, 0x0F, 0x78, 0x7D, 0xE1, 0xF7, 0xFF,
|
||||||
|
0x8F, 0xFE, 0x3F, 0xF0, 0x3F, 0x80, 0xFF, 0x87, 0xFF, 0x3F, 0xFD, 0xFF,
|
||||||
|
0xEF, 0x0F, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F,
|
||||||
|
0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x1F, 0xF0, 0xFF, 0xFF, 0xBF,
|
||||||
|
0xFD, 0xFF, 0xCF, 0xF8, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80,
|
||||||
|
0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07,
|
||||||
|
0x80, 0x00, 0x0F, 0xE0, 0x7F, 0xC3, 0xFF, 0x9F, 0xFE, 0x7C, 0x7D, 0xE1,
|
||||||
|
0xFF, 0x83, 0xFE, 0x0F, 0xF8, 0x3F, 0xE0, 0xFF, 0x83, 0xFE, 0x0F, 0xF8,
|
||||||
|
0x3F, 0xE0, 0xFF, 0x83, 0xFE, 0x0F, 0xF8, 0x3F, 0xE0, 0xFF, 0x83, 0xFE,
|
||||||
|
0x0F, 0xF8, 0x3F, 0xE0, 0xFF, 0x83, 0xFE, 0x0F, 0xF8, 0x3F, 0xE0, 0xFF,
|
||||||
|
0x83, 0xFE, 0x0F, 0x78, 0x7D, 0xE1, 0xF7, 0xFF, 0x8F, 0xFE, 0x3F, 0xF0,
|
||||||
|
0x3F, 0x80, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xE0, 0x03, 0x00, 0xFF,
|
||||||
|
0x83, 0xFF, 0x8F, 0xFF, 0x3F, 0xFE, 0xF0, 0xFB, 0xC1, 0xEF, 0x07, 0xBC,
|
||||||
|
0x1E, 0xF0, 0x7B, 0xC1, 0xEF, 0x07, 0xBC, 0x1E, 0xF0, 0x7B, 0xC3, 0xEF,
|
||||||
|
0x1F, 0x3F, 0xFC, 0xFF, 0xE3, 0xFF, 0xCF, 0x0F, 0xBC, 0x1E, 0xF0, 0x7B,
|
||||||
|
0xC1, 0xEF, 0x07, 0xBC, 0x1E, 0xF0, 0x7B, 0xC1, 0xEF, 0x07, 0xBC, 0x1E,
|
||||||
|
0xF0, 0x7B, 0xC1, 0xEF, 0x07, 0xBC, 0x1E, 0xF0, 0x7B, 0xC1, 0xF0, 0x0F,
|
||||||
|
0xC0, 0xFF, 0xC3, 0xFF, 0x1F, 0xFE, 0x78, 0x79, 0xE1, 0xEF, 0x87, 0xBE,
|
||||||
|
0x1F, 0xF8, 0x7D, 0xE1, 0xF7, 0x87, 0xDF, 0x1F, 0x7E, 0x00, 0xFC, 0x01,
|
||||||
|
0xF8, 0x03, 0xF0, 0x0F, 0xE0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xF9,
|
||||||
|
0xE1, 0xF7, 0x87, 0xDE, 0x0F, 0x78, 0x3D, 0xE0, 0xF7, 0x83, 0xDE, 0x0F,
|
||||||
|
0x78, 0x3D, 0xE1, 0xF7, 0xEF, 0x8F, 0xFE, 0x3F, 0xF0, 0x3F, 0x80, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F,
|
||||||
|
0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F,
|
||||||
|
0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F,
|
||||||
|
0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F,
|
||||||
|
0x80, 0xF8, 0xF8, 0x3F, 0xE0, 0xFF, 0x83, 0xFE, 0x0F, 0xF8, 0x3F, 0xE0,
|
||||||
|
0xFF, 0x83, 0xFE, 0x0F, 0xF8, 0x3F, 0xE0, 0xFF, 0x83, 0xFE, 0x0F, 0xF8,
|
||||||
|
0x3F, 0xE0, 0xFF, 0x83, 0xFE, 0x0F, 0xF8, 0x3F, 0xE0, 0xFF, 0x83, 0xFE,
|
||||||
|
0x0F, 0xF8, 0x3F, 0xE0, 0xFF, 0x83, 0xFE, 0x0F, 0xF8, 0x3F, 0xE0, 0xFF,
|
||||||
|
0x83, 0xFE, 0x0F, 0x78, 0x3D, 0xE1, 0xF7, 0xEF, 0xCF, 0xFE, 0x3F, 0xF8,
|
||||||
|
0x7F, 0x80, 0xF0, 0x1F, 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x1E, 0xF8, 0x1E,
|
||||||
|
0x78, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x7C, 0x3C,
|
||||||
|
0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78,
|
||||||
|
0x1E, 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x1E, 0x70, 0x1E, 0xF0,
|
||||||
|
0x0E, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xE0,
|
||||||
|
0x0F, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0xF0, 0x3C,
|
||||||
|
0x0F, 0xF0, 0x3C, 0x0F, 0xF0, 0x3C, 0x0F, 0xF0, 0x3C, 0x1E, 0xF0, 0x3C,
|
||||||
|
0x1E, 0x78, 0x3E, 0x1E, 0x78, 0x7E, 0x1E, 0x78, 0x7E, 0x1E, 0x78, 0x7E,
|
||||||
|
0x1E, 0x78, 0x7E, 0x1E, 0x78, 0x7E, 0x1E, 0x78, 0x7E, 0x1E, 0x38, 0x7F,
|
||||||
|
0x1C, 0x38, 0xF7, 0x1C, 0x3C, 0xF7, 0x3C, 0x3C, 0xE7, 0x3C, 0x3C, 0xE7,
|
||||||
|
0x3C, 0x3C, 0xE7, 0x3C, 0x3C, 0xE7, 0x3C, 0x3C, 0xE7, 0xBC, 0x1D, 0xE3,
|
||||||
|
0xB8, 0x1D, 0xC3, 0xB8, 0x1D, 0xC3, 0xB8, 0x1F, 0xC3, 0xB8, 0x1F, 0xC3,
|
||||||
|
0xB8, 0x1F, 0xC3, 0xF8, 0x1F, 0xC3, 0xF8, 0x1F, 0xC1, 0xF8, 0x0F, 0x81,
|
||||||
|
0xF8, 0x0F, 0x81, 0xF0, 0x0F, 0x81, 0xF0, 0x0F, 0x81, 0xF0, 0x0F, 0x81,
|
||||||
|
0xF0, 0x0F, 0x81, 0xF0, 0xF0, 0x3F, 0xC0, 0xF7, 0x07, 0x9E, 0x1E, 0x78,
|
||||||
|
0x78, 0xE3, 0xE3, 0xCF, 0x0F, 0x3C, 0x3C, 0xF0, 0x7F, 0x81, 0xFE, 0x07,
|
||||||
|
0xF8, 0x0F, 0xE0, 0x3F, 0x00, 0xFC, 0x01, 0xF0, 0x07, 0x80, 0x3E, 0x00,
|
||||||
|
0xF8, 0x03, 0xF0, 0x0F, 0xC0, 0x7F, 0x01, 0xFE, 0x07, 0xF8, 0x3F, 0xE0,
|
||||||
|
0xF3, 0xC3, 0xCF, 0x0F, 0x3C, 0x78, 0x71, 0xE1, 0xE7, 0x87, 0x9E, 0x0E,
|
||||||
|
0xF0, 0x3F, 0xC0, 0xF0, 0xF8, 0x0F, 0x78, 0x1F, 0x78, 0x1E, 0x7C, 0x1E,
|
||||||
|
0x3C, 0x1E, 0x3C, 0x3E, 0x3C, 0x3C, 0x3E, 0x3C, 0x1E, 0x3C, 0x1E, 0x78,
|
||||||
|
0x1E, 0x78, 0x0F, 0x78, 0x0F, 0x78, 0x0F, 0xF0, 0x0F, 0xF0, 0x07, 0xF0,
|
||||||
|
0x07, 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0,
|
||||||
|
0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0,
|
||||||
|
0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0,
|
||||||
|
0x7F, 0xF7, 0xFF, 0x7F, 0xF7, 0xFF, 0x01, 0xF0, 0x1E, 0x01, 0xE0, 0x3E,
|
||||||
|
0x03, 0xE0, 0x3C, 0x07, 0xC0, 0x7C, 0x07, 0xC0, 0x78, 0x0F, 0x80, 0xF8,
|
||||||
|
0x0F, 0x80, 0xF0, 0x1F, 0x01, 0xF0, 0x1E, 0x01, 0xE0, 0x3E, 0x03, 0xE0,
|
||||||
|
0x3C, 0x07, 0xC0, 0x7C, 0x07, 0xC0, 0x78, 0x0F, 0x80, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
|
||||||
|
0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
|
||||||
|
0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x07, 0x00, 0xF0, 0x1E, 0x03,
|
||||||
|
0xC0, 0x78, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x3C, 0x07, 0x80, 0xF0,
|
||||||
|
0x1E, 0x01, 0xC0, 0x3C, 0x07, 0x80, 0xF0, 0x0E, 0x01, 0xE0, 0x3C, 0x07,
|
||||||
|
0x80, 0xF0, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0x78, 0x0F, 0x01, 0xE0,
|
||||||
|
0x3C, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||||
|
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||||
|
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xFF, 0xFF, 0xFF,
|
||||||
|
0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x80, 0x7F, 0x01, 0xFE, 0x03, 0xDC, 0x07,
|
||||||
|
0xBC, 0x0E, 0x78, 0x3C, 0xF0, 0x79, 0xE0, 0xF1, 0xE1, 0xE3, 0xC7, 0x87,
|
||||||
|
0x8F, 0x0F, 0x1E, 0x0F, 0x3C, 0x1E, 0xF8, 0x3D, 0xE0, 0x7C, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xF0, 0xF9, 0xE7, 0x8E, 0x38, 0x71, 0xC3, 0x0F, 0xC0, 0xFF,
|
||||||
|
0xC3, 0xFF, 0x1F, 0xFE, 0x78, 0x79, 0xE1, 0xEF, 0x87, 0xBE, 0x1E, 0xF8,
|
||||||
|
0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x7F, 0x0F, 0xFC, 0x7F, 0xF3, 0xE7, 0xDE,
|
||||||
|
0x1F, 0xF8, 0x7F, 0xE1, 0xFF, 0x87, 0xFE, 0x1F, 0xF8, 0x7F, 0xE1, 0xFF,
|
||||||
|
0x87, 0xFE, 0x1F, 0xF8, 0x7D, 0xE3, 0xF7, 0xFF, 0xDF, 0xFF, 0x3F, 0x7C,
|
||||||
|
0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x79, 0xE3, 0xDF, 0x9F,
|
||||||
|
0xFE, 0xFF, 0xFF, 0xC7, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1,
|
||||||
|
0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F,
|
||||||
|
0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xFC,
|
||||||
|
0x7F, 0xF7, 0xFF, 0xFE, 0xF7, 0xF7, 0x9F, 0x00, 0x0F, 0xC1, 0xFF, 0x8F,
|
||||||
|
0xFC, 0xFF, 0xF7, 0x87, 0xBC, 0x3F, 0xE1, 0xFF, 0x0F, 0xF8, 0x7F, 0xC3,
|
||||||
|
0xFE, 0x1F, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07,
|
||||||
|
0xC0, 0x3E, 0x1F, 0xF0, 0xFF, 0x87, 0xFC, 0x3F, 0xE1, 0xEF, 0x0F, 0x78,
|
||||||
|
0x7B, 0xE7, 0xDF, 0xFC, 0x7F, 0xE1, 0xFE, 0x00, 0x00, 0x7C, 0x01, 0xF0,
|
||||||
|
0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x7D, 0xF3, 0xFF, 0xDF, 0xFF, 0x7F, 0xFD,
|
||||||
|
0xE1, 0xFF, 0x87, 0xFE, 0x1F, 0xF8, 0x7F, 0xE1, 0xFF, 0x87, 0xFE, 0x1F,
|
||||||
|
0xF8, 0x7F, 0xE1, 0xFF, 0x87, 0xFE, 0x1F, 0xF8, 0x7F, 0xE1, 0xFF, 0x87,
|
||||||
|
0xFE, 0x1F, 0xF8, 0x7F, 0xE1, 0xFF, 0x87, 0xFE, 0x1F, 0xF8, 0x7D, 0xE1,
|
||||||
|
0xF7, 0xDF, 0xDF, 0xFF, 0x3F, 0xFC, 0x7D, 0xF0, 0x0F, 0xC0, 0x7F, 0xC3,
|
||||||
|
0xFF, 0x1F, 0xFE, 0x78, 0x79, 0xE1, 0xEF, 0x87, 0xBE, 0x1E, 0xF8, 0x7B,
|
||||||
|
0xE1, 0xFF, 0x87, 0xFE, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00,
|
||||||
|
0xF8, 0x03, 0xE0, 0x0F, 0x87, 0xBE, 0x1E, 0xF8, 0x7B, 0xE1, 0xEF, 0x87,
|
||||||
|
0x9E, 0x1E, 0x78, 0x79, 0xF3, 0xE7, 0xFF, 0x0F, 0xFC, 0x1F, 0xE0, 0x07,
|
||||||
|
0xC3, 0xF1, 0xFC, 0x7C, 0x1E, 0x07, 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1,
|
||||||
|
0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78,
|
||||||
|
0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07,
|
||||||
|
0x81, 0xE0, 0x78, 0x1E, 0x07, 0x80, 0x1F, 0x7C, 0xFF, 0xF7, 0xFF, 0xDF,
|
||||||
|
0xFF, 0x78, 0x7D, 0xE1, 0xFF, 0x87, 0xFE, 0x1F, 0xF8, 0x7F, 0xE1, 0xFF,
|
||||||
|
0x87, 0xFE, 0x1F, 0xF8, 0x7F, 0xE1, 0xFF, 0x87, 0xFE, 0x1F, 0xF8, 0x7F,
|
||||||
|
0xE1, 0xFF, 0x87, 0xFE, 0x1F, 0xF8, 0x7D, 0xE1, 0xF7, 0xCF, 0xDF, 0xFF,
|
||||||
|
0x3F, 0xFC, 0x7D, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x79, 0xC3, 0xE7, 0xFF,
|
||||||
|
0xBF, 0xFC, 0x3F, 0xC0, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00,
|
||||||
|
0x79, 0xF3, 0xDF, 0xDF, 0xFF, 0xFF, 0xFF, 0xC3, 0xFC, 0x1F, 0xE0, 0xFF,
|
||||||
|
0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0,
|
||||||
|
0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F,
|
||||||
|
0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xC0,
|
||||||
|
0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x3C, 0x78, 0xF1, 0xE0, 0x00, 0x0F,
|
||||||
|
0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9, 0xF3,
|
||||||
|
0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C,
|
||||||
|
0xF9, 0xFF, 0xDF, 0xBE, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00,
|
||||||
|
0xF0, 0x03, 0xC1, 0xFF, 0x07, 0xBC, 0x1E, 0xF0, 0xFB, 0xC3, 0xCF, 0x1F,
|
||||||
|
0x3C, 0x78, 0xF1, 0xE3, 0xCF, 0x8F, 0x3C, 0x3D, 0xF0, 0xF7, 0x83, 0xDE,
|
||||||
|
0x0F, 0xF8, 0x3F, 0xC0, 0xFF, 0x83, 0xDE, 0x0F, 0x78, 0x3D, 0xF0, 0xF3,
|
||||||
|
0xC3, 0xCF, 0x8F, 0x1E, 0x3C, 0x7C, 0xF0, 0xF3, 0xC3, 0xCF, 0x0F, 0xBC,
|
||||||
|
0x1E, 0xF0, 0x7F, 0xC0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xE1,
|
||||||
|
0xF3, 0xDF, 0xCF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xFC, 0x3F,
|
||||||
|
0xC1, 0xE0, 0xFF, 0x07, 0x83, 0xFC, 0x1E, 0x0F, 0xF0, 0x78, 0x3F, 0xC1,
|
||||||
|
0xE0, 0xFF, 0x07, 0x83, 0xFC, 0x1E, 0x0F, 0xF0, 0x78, 0x3F, 0xC1, 0xE0,
|
||||||
|
0xFF, 0x07, 0x83, 0xFC, 0x1E, 0x0F, 0xF0, 0x78, 0x3F, 0xC1, 0xE0, 0xFF,
|
||||||
|
0x07, 0x83, 0xFC, 0x1E, 0x0F, 0xF0, 0x78, 0x3F, 0xC1, 0xE0, 0xFF, 0x07,
|
||||||
|
0x83, 0xFC, 0x1E, 0x0F, 0xF0, 0x78, 0x3F, 0xC1, 0xE0, 0xFF, 0x07, 0x83,
|
||||||
|
0xFC, 0x1E, 0x0F, 0xF0, 0x78, 0x3C, 0xF3, 0xE7, 0xBF, 0xBF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0x87, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F,
|
||||||
|
0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC,
|
||||||
|
0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83,
|
||||||
|
0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0x80, 0x0F, 0xC0, 0x7F, 0x83, 0xFF, 0x1F,
|
||||||
|
0xFE, 0x78, 0x79, 0xE1, 0xEF, 0x87, 0xBE, 0x1F, 0xF8, 0x7F, 0xE1, 0xFF,
|
||||||
|
0x87, 0xFE, 0x1F, 0xF8, 0x7F, 0xE1, 0xFF, 0x87, 0xFE, 0x1F, 0xF8, 0x7F,
|
||||||
|
0xE1, 0xFF, 0x87, 0xFE, 0x1F, 0xF8, 0x7F, 0xE1, 0xFF, 0x87, 0xDE, 0x1E,
|
||||||
|
0x78, 0x79, 0xF3, 0xE7, 0xFF, 0x0F, 0xFC, 0x1F, 0xE0, 0xF3, 0xC7, 0xBF,
|
||||||
|
0xBF, 0xFD, 0xFF, 0xFF, 0x8F, 0xF8, 0x7F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F,
|
||||||
|
0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0,
|
||||||
|
0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F,
|
||||||
|
0xF8, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0xEF, 0x7E, 0x78, 0x03, 0xC0, 0x1E,
|
||||||
|
0x00, 0xF0, 0x07, 0x80, 0x00, 0x1E, 0x7C, 0xFF, 0xF7, 0xFF, 0xDF, 0xFF,
|
||||||
|
0x78, 0x7F, 0xE1, 0xFF, 0x87, 0xFE, 0x1F, 0xF8, 0x7F, 0xE1, 0xFF, 0x87,
|
||||||
|
0xFE, 0x1F, 0xF8, 0x7F, 0xE1, 0xFF, 0x87, 0xFE, 0x1F, 0xF8, 0x7F, 0xE1,
|
||||||
|
0xFF, 0x87, 0xFE, 0x1F, 0xF8, 0x7F, 0xE1, 0xFF, 0x87, 0xFE, 0x1F, 0x78,
|
||||||
|
0x7D, 0xF7, 0xF7, 0xFF, 0xCF, 0xFF, 0x1F, 0x7C, 0x01, 0xF0, 0x07, 0xC0,
|
||||||
|
0x1F, 0x00, 0x7C, 0x01, 0xF0, 0xF3, 0xFB, 0xFF, 0xFF, 0xFF, 0xC7, 0x83,
|
||||||
|
0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0,
|
||||||
|
0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E,
|
||||||
|
0x0F, 0x00, 0x1F, 0x83, 0xFE, 0x1F, 0xF9, 0xFF, 0xCF, 0x0F, 0x78, 0x7B,
|
||||||
|
0xC3, 0xDE, 0x1E, 0xF0, 0xF7, 0xC7, 0xBE, 0x00, 0xF8, 0x07, 0xE0, 0x1F,
|
||||||
|
0x80, 0x7E, 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0x80, 0x7D, 0xE1, 0xEF, 0x0F,
|
||||||
|
0xF8, 0x7F, 0xC3, 0xFE, 0x1F, 0xF0, 0xF7, 0xEF, 0x9F, 0xFC, 0xFF, 0xC1,
|
||||||
|
0xFC, 0x00, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x8F, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xCF, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F,
|
||||||
|
0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0,
|
||||||
|
0xF8, 0x3E, 0x0F, 0x83, 0xF0, 0xFF, 0x1F, 0xC3, 0xF0, 0xF8, 0x3F, 0xE0,
|
||||||
|
0xFF, 0x83, 0xFE, 0x0F, 0xF8, 0x3F, 0xE0, 0xFF, 0x83, 0xFE, 0x0F, 0xF8,
|
||||||
|
0x3F, 0xE0, 0xFF, 0x83, 0xFE, 0x0F, 0xF8, 0x3F, 0xE0, 0xFF, 0x83, 0xFE,
|
||||||
|
0x0F, 0xF8, 0x3F, 0xE0, 0xFF, 0x83, 0xFE, 0x0F, 0xF8, 0x3F, 0xE0, 0xFF,
|
||||||
|
0x83, 0xFE, 0x0F, 0x78, 0x7D, 0xF3, 0xF7, 0xFF, 0xCF, 0xEF, 0x1F, 0x3C,
|
||||||
|
0xF0, 0x7F, 0xC1, 0xEF, 0x07, 0xBC, 0x1E, 0x78, 0x79, 0xE1, 0xE7, 0x87,
|
||||||
|
0x9E, 0x1C, 0x78, 0x71, 0xE3, 0xC7, 0x8F, 0x0E, 0x3C, 0x3C, 0xF0, 0xF3,
|
||||||
|
0xC3, 0xCE, 0x0F, 0x38, 0x3C, 0xE0, 0xF3, 0x81, 0xDE, 0x07, 0x78, 0x1F,
|
||||||
|
0xE0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x3F, 0x00, 0xFC, 0x03,
|
||||||
|
0xF0, 0x0F, 0x80, 0xF0, 0x78, 0x7F, 0x87, 0xC3, 0xFC, 0x3E, 0x1F, 0xE1,
|
||||||
|
0xF0, 0xF7, 0x0F, 0x87, 0xB8, 0x7C, 0x39, 0xC3, 0xE1, 0xCE, 0x1F, 0x8E,
|
||||||
|
0x79, 0xDC, 0x73, 0xCE, 0xE7, 0x9E, 0x77, 0x3C, 0xF3, 0xB9, 0xE3, 0x9D,
|
||||||
|
0xCF, 0x1C, 0xE6, 0x70, 0xE7, 0x3B, 0x87, 0x71, 0xDC, 0x3B, 0x8E, 0xE1,
|
||||||
|
0xDC, 0x77, 0x0F, 0xE3, 0xB8, 0x7F, 0x1D, 0xC3, 0xF8, 0xFE, 0x0F, 0x83,
|
||||||
|
0xE0, 0x7C, 0x1F, 0x03, 0xE0, 0xF8, 0x1F, 0x07, 0xC0, 0xF8, 0x3E, 0x07,
|
||||||
|
0xC1, 0xF0, 0x3E, 0x0F, 0x81, 0xE0, 0x7C, 0x00, 0xF0, 0x7B, 0xC1, 0xE7,
|
||||||
|
0x87, 0x9E, 0x3C, 0x78, 0xF0, 0xF3, 0xC3, 0xCE, 0x0F, 0x78, 0x1F, 0xE0,
|
||||||
|
0x7F, 0x01, 0xFC, 0x03, 0xF0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0,
|
||||||
|
0x0F, 0x80, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x3D, 0xE0, 0xF7, 0x83, 0xDE,
|
||||||
|
0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xCF, 0x07, 0xBC, 0x1E, 0xF0, 0x7C, 0xF0,
|
||||||
|
0x3F, 0xC0, 0xFF, 0x07, 0xFE, 0x1E, 0x78, 0x79, 0xE1, 0xE7, 0x87, 0x9E,
|
||||||
|
0x1E, 0x78, 0x79, 0xE1, 0xC3, 0x87, 0x0F, 0x3C, 0x3C, 0xF0, 0xF3, 0xC3,
|
||||||
|
0xCF, 0x0F, 0x3C, 0x1C, 0xE0, 0x73, 0x81, 0xCE, 0x07, 0xB8, 0x1F, 0xE0,
|
||||||
|
0x7F, 0x80, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0,
|
||||||
|
0x07, 0x80, 0x1E, 0x00, 0xF8, 0x1F, 0xE0, 0x7F, 0x01, 0xFC, 0x00, 0x7F,
|
||||||
|
0xEF, 0xFD, 0xFF, 0xBF, 0xF0, 0x1E, 0x07, 0xC0, 0xF0, 0x1E, 0x07, 0xC0,
|
||||||
|
0xF0, 0x1E, 0x03, 0xC0, 0xF8, 0x1E, 0x03, 0xC0, 0xF8, 0x1E, 0x03, 0xC0,
|
||||||
|
0xF8, 0x1F, 0x03, 0xC0, 0x78, 0x1F, 0x03, 0xC0, 0x78, 0x1F, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFE, 0x07, 0xC3, 0xF1, 0xFC, 0x7E, 0x1E, 0x07, 0x81, 0xE0,
|
||||||
|
0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0xF8, 0x7E,
|
||||||
|
0x3F, 0x0F, 0x83, 0xF0, 0xFE, 0x0F, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81,
|
||||||
|
0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0xC1, 0xFC, 0x3F,
|
||||||
|
0x07, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF8, 0x3F, 0x0F,
|
||||||
|
0xC1, 0xF8, 0x3E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78,
|
||||||
|
0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1F, 0x83, 0xF0, 0x7C, 0x3F, 0x1F, 0xC7,
|
||||||
|
0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0,
|
||||||
|
0x78, 0x3E, 0x0F, 0x8F, 0xC3, 0xF0, 0xF8, 0x00, 0x1E, 0x07, 0x9F, 0xF3,
|
||||||
|
0xDF, 0xFF, 0xDF, 0xFF, 0xEF, 0xFF, 0xE1, 0x03, 0xE0 };
|
||||||
|
|
||||||
|
const GFXglyph Antonio_SemiBold20pt7bGlyphs[] PROGMEM = {
|
||||||
|
{ 0, 1, 1, 8, 0, 0 }, // 0x20 ' '
|
||||||
|
{ 1, 4, 34, 10, 3, -33 }, // 0x21 '!'
|
||||||
|
{ 18, 5, 13, 16, 6, -33 }, // 0x22 '"'
|
||||||
|
{ 27, 17, 34, 20, 2, -33 }, // 0x23 '#'
|
||||||
|
{ 100, 13, 39, 16, 2, -33 }, // 0x24 '$'
|
||||||
|
{ 164, 36, 34, 42, 3, -33 }, // 0x25 '%'
|
||||||
|
{ 317, 18, 34, 19, 1, -33 }, // 0x26 '&'
|
||||||
|
{ 394, 4, 12, 8, 2, -33 }, // 0x27 '''
|
||||||
|
{ 400, 7, 38, 11, 3, -33 }, // 0x28 '('
|
||||||
|
{ 434, 7, 38, 11, 2, -33 }, // 0x29 ')'
|
||||||
|
{ 468, 14, 15, 17, 2, -32 }, // 0x2A '*'
|
||||||
|
{ 495, 12, 12, 14, 1, -20 }, // 0x2B '+'
|
||||||
|
{ 513, 5, 12, 9, 2, -4 }, // 0x2C ','
|
||||||
|
{ 521, 9, 3, 13, 2, -16 }, // 0x2D '-'
|
||||||
|
{ 525, 4, 4, 10, 3, -3 }, // 0x2E '.'
|
||||||
|
{ 527, 13, 34, 15, 1, -33 }, // 0x2F '/'
|
||||||
|
{ 583, 13, 34, 18, 2, -33 }, // 0x30 '0'
|
||||||
|
{ 639, 9, 34, 15, 2, -33 }, // 0x31 '1'
|
||||||
|
{ 678, 13, 34, 17, 3, -33 }, // 0x32 '2'
|
||||||
|
{ 734, 14, 34, 17, 2, -33 }, // 0x33 '3'
|
||||||
|
{ 794, 14, 34, 17, 2, -33 }, // 0x34 '4'
|
||||||
|
{ 854, 12, 34, 17, 3, -33 }, // 0x35 '5'
|
||||||
|
{ 905, 14, 34, 17, 2, -33 }, // 0x36 '6'
|
||||||
|
{ 965, 14, 34, 17, 2, -33 }, // 0x37 '7'
|
||||||
|
{ 1025, 13, 34, 17, 2, -33 }, // 0x38 '8'
|
||||||
|
{ 1081, 13, 34, 17, 2, -33 }, // 0x39 '9'
|
||||||
|
{ 1137, 4, 20, 10, 3, -24 }, // 0x3A ':'
|
||||||
|
{ 1147, 5, 27, 11, 3, -24 }, // 0x3B ';'
|
||||||
|
{ 1164, 11, 19, 14, 1, -23 }, // 0x3C '<'
|
||||||
|
{ 1191, 10, 9, 14, 2, -19 }, // 0x3D '='
|
||||||
|
{ 1203, 11, 19, 14, 2, -23 }, // 0x3E '>'
|
||||||
|
{ 1230, 12, 34, 17, 3, -33 }, // 0x3F '?'
|
||||||
|
{ 1281, 25, 35, 29, 2, -33 }, // 0x40 '@'
|
||||||
|
{ 1391, 16, 34, 18, 1, -33 }, // 0x41 'A'
|
||||||
|
{ 1459, 14, 34, 18, 3, -33 }, // 0x42 'B'
|
||||||
|
{ 1519, 14, 34, 18, 2, -33 }, // 0x43 'C'
|
||||||
|
{ 1579, 13, 34, 19, 3, -33 }, // 0x44 'D'
|
||||||
|
{ 1635, 10, 34, 15, 3, -33 }, // 0x45 'E'
|
||||||
|
{ 1678, 10, 34, 15, 3, -33 }, // 0x46 'F'
|
||||||
|
{ 1721, 14, 34, 18, 2, -33 }, // 0x47 'G'
|
||||||
|
{ 1781, 14, 34, 19, 3, -33 }, // 0x48 'H'
|
||||||
|
{ 1841, 4, 34, 10, 3, -33 }, // 0x49 'I'
|
||||||
|
{ 1858, 13, 34, 17, 2, -33 }, // 0x4A 'J'
|
||||||
|
{ 1914, 15, 34, 18, 3, -33 }, // 0x4B 'K'
|
||||||
|
{ 1978, 10, 34, 14, 3, -33 }, // 0x4C 'L'
|
||||||
|
{ 2021, 20, 34, 26, 3, -33 }, // 0x4D 'M'
|
||||||
|
{ 2106, 14, 34, 20, 3, -33 }, // 0x4E 'N'
|
||||||
|
{ 2166, 14, 34, 19, 2, -33 }, // 0x4F 'O'
|
||||||
|
{ 2226, 13, 34, 17, 3, -33 }, // 0x50 'P'
|
||||||
|
{ 2282, 14, 39, 19, 2, -33 }, // 0x51 'Q'
|
||||||
|
{ 2351, 14, 34, 18, 3, -33 }, // 0x52 'R'
|
||||||
|
{ 2411, 14, 34, 16, 1, -33 }, // 0x53 'S'
|
||||||
|
{ 2471, 12, 34, 13, 0, -33 }, // 0x54 'T'
|
||||||
|
{ 2522, 14, 34, 19, 2, -33 }, // 0x55 'U'
|
||||||
|
{ 2582, 16, 34, 17, 1, -33 }, // 0x56 'V'
|
||||||
|
{ 2650, 24, 34, 26, 1, -33 }, // 0x57 'W'
|
||||||
|
{ 2752, 14, 34, 16, 1, -33 }, // 0x58 'X'
|
||||||
|
{ 2812, 16, 34, 16, 0, -33 }, // 0x59 'Y'
|
||||||
|
{ 2880, 12, 34, 14, 1, -33 }, // 0x5A 'Z'
|
||||||
|
{ 2931, 8, 35, 13, 3, -33 }, // 0x5B '['
|
||||||
|
{ 2966, 11, 34, 15, 2, -33 }, // 0x5C '\'
|
||||||
|
{ 3013, 8, 35, 13, 2, -33 }, // 0x5D ']'
|
||||||
|
{ 3048, 15, 18, 18, 2, -33 }, // 0x5E '^'
|
||||||
|
{ 3082, 12, 3, 14, 1, 2 }, // 0x5F '_'
|
||||||
|
{ 3087, 6, 8, 8, 1, -38 }, // 0x60 '`'
|
||||||
|
{ 3093, 14, 29, 18, 2, -28 }, // 0x61 'a'
|
||||||
|
{ 3144, 13, 34, 18, 3, -33 }, // 0x62 'b'
|
||||||
|
{ 3200, 13, 29, 17, 2, -28 }, // 0x63 'c'
|
||||||
|
{ 3248, 14, 34, 18, 2, -33 }, // 0x64 'd'
|
||||||
|
{ 3308, 14, 29, 17, 2, -28 }, // 0x65 'e'
|
||||||
|
{ 3359, 10, 34, 13, 1, -33 }, // 0x66 'f'
|
||||||
|
{ 3402, 14, 33, 18, 2, -28 }, // 0x67 'g'
|
||||||
|
{ 3460, 13, 34, 19, 3, -33 }, // 0x68 'h'
|
||||||
|
{ 3516, 4, 35, 10, 3, -34 }, // 0x69 'i'
|
||||||
|
{ 3534, 7, 39, 10, 1, -34 }, // 0x6A 'j'
|
||||||
|
{ 3569, 14, 34, 18, 3, -33 }, // 0x6B 'k'
|
||||||
|
{ 3629, 4, 34, 10, 3, -33 }, // 0x6C 'l'
|
||||||
|
{ 3646, 22, 29, 28, 3, -28 }, // 0x6D 'm'
|
||||||
|
{ 3726, 13, 29, 19, 3, -28 }, // 0x6E 'n'
|
||||||
|
{ 3774, 14, 29, 18, 2, -28 }, // 0x6F 'o'
|
||||||
|
{ 3825, 13, 34, 18, 3, -28 }, // 0x70 'p'
|
||||||
|
{ 3881, 14, 34, 18, 2, -28 }, // 0x71 'q'
|
||||||
|
{ 3941, 9, 29, 13, 3, -28 }, // 0x72 'r'
|
||||||
|
{ 3974, 13, 29, 16, 2, -28 }, // 0x73 's'
|
||||||
|
{ 4022, 10, 34, 12, 1, -33 }, // 0x74 't'
|
||||||
|
{ 4065, 14, 29, 19, 2, -28 }, // 0x75 'u'
|
||||||
|
{ 4116, 14, 29, 15, 1, -28 }, // 0x76 'v'
|
||||||
|
{ 4167, 21, 29, 23, 1, -28 }, // 0x77 'w'
|
||||||
|
{ 4244, 14, 29, 15, 1, -28 }, // 0x78 'x'
|
||||||
|
{ 4295, 14, 34, 16, 1, -28 }, // 0x79 'y'
|
||||||
|
{ 4355, 11, 29, 13, 1, -28 }, // 0x7A 'z'
|
||||||
|
{ 4395, 10, 37, 14, 2, -33 }, // 0x7B '{'
|
||||||
|
{ 4442, 4, 37, 10, 3, -34 }, // 0x7C '|'
|
||||||
|
{ 4461, 10, 37, 14, 2, -33 }, // 0x7D '}'
|
||||||
|
{ 4508, 17, 6, 21, 2, -21 } }; // 0x7E '~'
|
||||||
|
|
||||||
|
const GFXfont Antonio_SemiBold20pt7b PROGMEM = {
|
||||||
|
(uint8_t *)Antonio_SemiBold20pt7bBitmaps,
|
||||||
|
(GFXglyph *)Antonio_SemiBold20pt7bGlyphs,
|
||||||
|
0x20, 0x7E, 51 };
|
||||||
|
|
||||||
|
// Approx. 5193 bytes
|
954
src/fonts/antonio-semibold30.h
Normal file
954
src/fonts/antonio-semibold30.h
Normal file
@ -0,0 +1,954 @@
|
|||||||
|
const uint8_t Antonio_SemiBold30pt7bBitmaps[] PROGMEM = {
|
||||||
|
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE7,
|
||||||
|
0xCF, 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9,
|
||||||
|
0xF3, 0xE3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xBF, 0x7E, 0xFC, 0xF9, 0xF3, 0xE7, 0x8F, 0x1E, 0x3C, 0x78,
|
||||||
|
0xF1, 0xE0, 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x07, 0xC0, 0x07, 0xC1, 0xF0,
|
||||||
|
0x01, 0xF0, 0x7C, 0x00, 0x7C, 0x1F, 0x00, 0x1F, 0x07, 0xC0, 0x07, 0xC1,
|
||||||
|
0xF0, 0x01, 0xE0, 0xF8, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, 0x0F,
|
||||||
|
0x83, 0xE0, 0x03, 0xE0, 0xF8, 0x00, 0xF8, 0x3E, 0x00, 0x3C, 0x1F, 0x00,
|
||||||
|
0x1F, 0x07, 0xC0, 0x07, 0xC1, 0xF0, 0x3F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF,
|
||||||
|
0xF3, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0xE0, 0xF8, 0x00, 0xF8,
|
||||||
|
0x3E, 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x83, 0xE0, 0x03, 0xE0, 0xF8, 0x00,
|
||||||
|
0xF0, 0x3C, 0x00, 0x7C, 0x1F, 0x00, 0x1F, 0x07, 0xC0, 0x07, 0xC1, 0xF0,
|
||||||
|
0x3F, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF,
|
||||||
|
0xFF, 0x83, 0xE0, 0xF8, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, 0x0F,
|
||||||
|
0x83, 0xE0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0x7C, 0x1F, 0x00,
|
||||||
|
0x1F, 0x07, 0xC0, 0x07, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, 0x00, 0x7C, 0x1F,
|
||||||
|
0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x83, 0xE0, 0x03, 0xE0, 0xF8, 0x00, 0xF8,
|
||||||
|
0x3E, 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x83, 0xE0, 0x00, 0x00, 0x70, 0x00,
|
||||||
|
0x07, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00,
|
||||||
|
0x03, 0xF8, 0x00, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xFF, 0xF8, 0x3F, 0xFF,
|
||||||
|
0xC7, 0xFF, 0xFC, 0x7F, 0x0F, 0xE7, 0xE0, 0x7E, 0xFE, 0x07, 0xEF, 0xE0,
|
||||||
|
0x7E, 0xFE, 0x07, 0xEF, 0xE0, 0x7E, 0x7E, 0x07, 0xE7, 0xE0, 0x7E, 0x7F,
|
||||||
|
0x07, 0xE7, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xFC, 0x00, 0x1F, 0xF0, 0x00,
|
||||||
|
0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x00, 0x0F, 0xF8,
|
||||||
|
0x00, 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xFE, 0x00, 0x0F,
|
||||||
|
0xE7, 0xE0, 0x7F, 0x7E, 0x07, 0xF7, 0xE0, 0x7F, 0x7E, 0x07, 0xF7, 0xE0,
|
||||||
|
0x7F, 0x7E, 0x07, 0xF7, 0xE0, 0x7F, 0x7F, 0x07, 0xF7, 0xF0, 0x7F, 0x3F,
|
||||||
|
0xDF, 0xE3, 0xFF, 0xFE, 0x1F, 0xFF, 0xC1, 0xFF, 0xFC, 0x0F, 0xFF, 0x00,
|
||||||
|
0x3F, 0xE0, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00,
|
||||||
|
0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, 0xFC, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x7F, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xFF, 0xF8,
|
||||||
|
0x00, 0x03, 0xE0, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7F,
|
||||||
|
0xFF, 0xC0, 0x00, 0x7E, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF0, 0x00,
|
||||||
|
0x07, 0xE0, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x01, 0xF8, 0x00, 0x3E,
|
||||||
|
0x00, 0x00, 0xFC, 0x07, 0xE0, 0x00, 0xF8, 0x00, 0x03, 0xF0, 0x1F, 0x80,
|
||||||
|
0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x7E, 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x01,
|
||||||
|
0xF8, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x07, 0xE0, 0x03, 0xE0, 0x00, 0x03,
|
||||||
|
0xF0, 0x1F, 0x80, 0x0F, 0x80, 0x00, 0x0F, 0xC0, 0x7E, 0x00, 0x7E, 0x00,
|
||||||
|
0x00, 0x3F, 0x01, 0xF8, 0x01, 0xF0, 0x00, 0x00, 0xFC, 0x07, 0xE0, 0x07,
|
||||||
|
0xC0, 0x00, 0x03, 0xF0, 0x1F, 0x80, 0x3F, 0x00, 0xFE, 0x0F, 0xC0, 0x7E,
|
||||||
|
0x00, 0xF8, 0x1F, 0xFE, 0x3F, 0x01, 0xF8, 0x07, 0xE0, 0xFF, 0xFC, 0xFC,
|
||||||
|
0x07, 0xE0, 0x1F, 0x07, 0xFF, 0xFB, 0xF0, 0x1F, 0x80, 0x7C, 0x1F, 0xFF,
|
||||||
|
0xEF, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x1F, 0xFF, 0x01, 0xF8, 0x0F, 0x83,
|
||||||
|
0xF0, 0x3F, 0xFC, 0x07, 0xE0, 0x7E, 0x0F, 0xC0, 0xFF, 0xF0, 0x1F, 0x81,
|
||||||
|
0xF0, 0x3F, 0x03, 0xF7, 0xC0, 0x7E, 0x07, 0xC0, 0xFC, 0x07, 0xDF, 0x81,
|
||||||
|
0xF0, 0x3F, 0x03, 0xF0, 0x1F, 0x7E, 0x0F, 0xC0, 0xF8, 0x0F, 0xC0, 0x7D,
|
||||||
|
0xFF, 0xFF, 0x07, 0xE0, 0x3F, 0x01, 0xF3, 0xFF, 0xF8, 0x1F, 0x00, 0xFC,
|
||||||
|
0x07, 0xCF, 0xFF, 0xE0, 0x7C, 0x03, 0xF0, 0x1F, 0x1F, 0xFF, 0x03, 0xF0,
|
||||||
|
0x0F, 0xC0, 0x7C, 0x1F, 0xF0, 0x0F, 0x80, 0x3F, 0x01, 0xF0, 0x00, 0x00,
|
||||||
|
0x7E, 0x00, 0xFC, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x03, 0xF0, 0x1F, 0x00,
|
||||||
|
0x00, 0x07, 0xC0, 0x0F, 0xC0, 0x7C, 0x00, 0x00, 0x3F, 0x00, 0x3F, 0x01,
|
||||||
|
0xF0, 0x00, 0x00, 0xF8, 0x00, 0xFC, 0x07, 0xC0, 0x00, 0x07, 0xE0, 0x03,
|
||||||
|
0xF0, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x0F, 0xC0, 0x7C, 0x00, 0x00, 0x7C,
|
||||||
|
0x00, 0x3F, 0x01, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0xFC, 0x0F, 0xC0, 0x00,
|
||||||
|
0x0F, 0x80, 0x03, 0xF0, 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0xFC,
|
||||||
|
0x00, 0x01, 0xF8, 0x00, 0x3F, 0x03, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x7F,
|
||||||
|
0x3F, 0x80, 0x00, 0x3F, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0xF8, 0x00,
|
||||||
|
0x03, 0xFF, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x1F,
|
||||||
|
0x80, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
|
||||||
|
0x7F, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x3F, 0xFE, 0x00, 0x1F, 0xFF, 0xC0,
|
||||||
|
0x07, 0xFF, 0xF0, 0x03, 0xF8, 0x7C, 0x00, 0xFC, 0x1F, 0x80, 0x3F, 0x03,
|
||||||
|
0xE0, 0x0F, 0xC0, 0xF8, 0x03, 0xF0, 0x3E, 0x00, 0xFC, 0x0F, 0x80, 0x3F,
|
||||||
|
0x03, 0xE0, 0x0F, 0xC0, 0xF8, 0x03, 0xF0, 0x7C, 0x00, 0xFE, 0x1F, 0x00,
|
||||||
|
0x1F, 0x8F, 0xC0, 0x07, 0xE3, 0xE0, 0x01, 0xF9, 0xF8, 0x00, 0x3F, 0x7C,
|
||||||
|
0x00, 0x0F, 0xFF, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0xE0, 0x00, 0x1F,
|
||||||
|
0xF0, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00,
|
||||||
|
0x3F, 0xE0, 0x00, 0x1F, 0xF8, 0x04, 0x0F, 0xFF, 0x01, 0x03, 0xFF, 0xC0,
|
||||||
|
0xE1, 0xFF, 0xF8, 0x7C, 0x7E, 0x7E, 0x1F, 0x3F, 0x1F, 0x8F, 0xCF, 0xC3,
|
||||||
|
0xF7, 0xE7, 0xE0, 0xFD, 0xF1, 0xF8, 0x1F, 0xFC, 0x7E, 0x07, 0xFE, 0x3F,
|
||||||
|
0x01, 0xFF, 0x8F, 0xC0, 0x3F, 0xC3, 0xF0, 0x0F, 0xF0, 0xFC, 0x01, 0xF8,
|
||||||
|
0x3F, 0x00, 0x7E, 0x0F, 0xC0, 0x3F, 0xC3, 0xF0, 0x1F, 0xF0, 0xFE, 0x07,
|
||||||
|
0xFC, 0x1F, 0xC7, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, 0xFE, 0xFC, 0x3F,
|
||||||
|
0xFF, 0x3F, 0x07, 0xFF, 0x87, 0xE0, 0x7F, 0x81, 0xF8, 0x07, 0x00, 0x00,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x7D, 0xF7, 0xDE, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x8E,
|
||||||
|
0x30, 0xC0, 0x00, 0xC3, 0xF3, 0xFD, 0xFF, 0x7F, 0xDF, 0xEF, 0xE3, 0xF8,
|
||||||
|
0xFE, 0x3F, 0x0F, 0xC3, 0xF0, 0xFC, 0x3F, 0x0F, 0xC3, 0xF0, 0xFC, 0x3F,
|
||||||
|
0x0F, 0xC3, 0xF0, 0xFC, 0x3F, 0x0F, 0xC3, 0xF0, 0xFC, 0x3F, 0x0F, 0xC3,
|
||||||
|
0xF0, 0xFC, 0x3F, 0x0F, 0xC3, 0xF0, 0xFC, 0x3F, 0x0F, 0xC3, 0xF0, 0xFC,
|
||||||
|
0x3F, 0x0F, 0xC3, 0xF0, 0xFC, 0x3F, 0x0F, 0xC3, 0xF0, 0xFC, 0x3F, 0x0F,
|
||||||
|
0xC3, 0xF0, 0xFC, 0x3F, 0x8F, 0xE3, 0xF8, 0x7F, 0x9F, 0xF7, 0xFC, 0xFF,
|
||||||
|
0x0F, 0xC0, 0x70, 0xE0, 0x1F, 0xC3, 0xFC, 0x7F, 0xCF, 0xFC, 0xFF, 0x83,
|
||||||
|
0xF0, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8,
|
||||||
|
0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F,
|
||||||
|
0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F,
|
||||||
|
0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1,
|
||||||
|
0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC,
|
||||||
|
0x3F, 0x87, 0xE3, 0xFD, 0xFF, 0xBF, 0xE7, 0xFC, 0xFE, 0x1C, 0x00, 0x00,
|
||||||
|
0x7C, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x81, 0x0C, 0x1E, 0x0C, 0x38, 0x78,
|
||||||
|
0x71, 0xF9, 0xE7, 0xEF, 0xF7, 0xBF, 0xCF, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0,
|
||||||
|
0x0F, 0xFC, 0x00, 0x1F, 0xE0, 0x01, 0xFF, 0xE0, 0x1F, 0xFF, 0xE3, 0xFF,
|
||||||
|
0xFF, 0xE7, 0xF7, 0xBF, 0xDF, 0x1E, 0x3E, 0x38, 0x78, 0x70, 0x41, 0xE0,
|
||||||
|
0xC0, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x01,
|
||||||
|
0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x81,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x3E,
|
||||||
|
0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00,
|
||||||
|
0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x1E,
|
||||||
|
0x1E, 0x1E, 0x1C, 0x1C, 0x3C, 0x3C, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00,
|
||||||
|
0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, 0x7C,
|
||||||
|
0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x7E, 0x00,
|
||||||
|
0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F,
|
||||||
|
0xC0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0,
|
||||||
|
0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x07, 0xE0, 0x01,
|
||||||
|
0xF8, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC,
|
||||||
|
0x00, 0x3F, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, 0x7E, 0x00,
|
||||||
|
0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F,
|
||||||
|
0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, 0x7C, 0x00, 0x3F, 0x00, 0x0F, 0xC0,
|
||||||
|
0x00, 0x03, 0xFC, 0x00, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x3F,
|
||||||
|
0xFF, 0xE7, 0xFF, 0xFE, 0x7F, 0x0F, 0xE7, 0xE0, 0x7F, 0x7E, 0x07, 0xFF,
|
||||||
|
0xE0, 0x7F, 0xFE, 0x07, 0xFF, 0xE0, 0x7F, 0xFE, 0x07, 0xFF, 0xE0, 0x7F,
|
||||||
|
0xFE, 0x07, 0xFF, 0xE0, 0x7F, 0xFE, 0x07, 0xFF, 0xE0, 0x7F, 0xFE, 0x07,
|
||||||
|
0xFF, 0xE0, 0x7F, 0xFE, 0x07, 0xFF, 0xE0, 0x7F, 0xFE, 0x07, 0xFF, 0xE0,
|
||||||
|
0x7F, 0xFE, 0x07, 0xFF, 0xE0, 0x7F, 0xFE, 0x07, 0xFF, 0xE0, 0x7F, 0xFE,
|
||||||
|
0x07, 0xFF, 0xE0, 0x7F, 0xFE, 0x07, 0xFF, 0xE0, 0x7F, 0xFE, 0x07, 0xFF,
|
||||||
|
0xE0, 0x7F, 0xFE, 0x07, 0xFF, 0xE0, 0x7F, 0xFE, 0x07, 0xFF, 0xE0, 0x7F,
|
||||||
|
0xFE, 0x07, 0xFF, 0xE0, 0x7F, 0xFE, 0x07, 0xFF, 0xE0, 0x7F, 0x7E, 0x07,
|
||||||
|
0xF7, 0xE0, 0x7F, 0x7F, 0x07, 0xE7, 0xF0, 0xFE, 0x7F, 0xFF, 0xE3, 0xFF,
|
||||||
|
0xFC, 0x1F, 0xFF, 0xC1, 0xFF, 0xF8, 0x07, 0xFF, 0x00, 0x06, 0x00, 0x00,
|
||||||
|
0xF8, 0x0F, 0xC0, 0xFE, 0x0F, 0xF1, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFD, 0xFF, 0xCF, 0xF0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE0,
|
||||||
|
0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07,
|
||||||
|
0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC,
|
||||||
|
0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80,
|
||||||
|
0xFC, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F,
|
||||||
|
0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x03, 0xFC, 0x01,
|
||||||
|
0xFF, 0xC0, 0x7F, 0xFC, 0x0F, 0xFF, 0xC3, 0xFF, 0xFC, 0x7F, 0xFF, 0x9F,
|
||||||
|
0xC3, 0xF3, 0xF0, 0x7F, 0x7E, 0x07, 0xEF, 0xC0, 0xFD, 0xF8, 0x1F, 0xBF,
|
||||||
|
0x03, 0xFF, 0xE0, 0x7F, 0xFC, 0x0F, 0xFF, 0x81, 0xFF, 0xF0, 0x3F, 0xFE,
|
||||||
|
0x07, 0xFF, 0xC0, 0xFF, 0xF8, 0x1F, 0xFF, 0x07, 0xF0, 0x00, 0xFE, 0x00,
|
||||||
|
0x1F, 0x80, 0x07, 0xF0, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x07, 0xF0, 0x01,
|
||||||
|
0xFC, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0x7F, 0x00, 0x1F,
|
||||||
|
0xC0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x00, 0xFC,
|
||||||
|
0x00, 0x3F, 0x80, 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0,
|
||||||
|
0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0xFF,
|
||||||
|
0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x80, 0x03,
|
||||||
|
0xFC, 0x00, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x3F, 0xFF, 0xE7,
|
||||||
|
0xFF, 0xFE, 0x7F, 0x0F, 0xE7, 0xE0, 0x7F, 0xFE, 0x07, 0xFF, 0xE0, 0x7F,
|
||||||
|
0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03,
|
||||||
|
0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00,
|
||||||
|
0x7E, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x01, 0xFF, 0xC0, 0x1F, 0xF8, 0x01,
|
||||||
|
0xFF, 0x00, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x01, 0xFC, 0x00, 0x0F, 0xE0,
|
||||||
|
0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x3F,
|
||||||
|
0x00, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03,
|
||||||
|
0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x7F, 0xFE, 0x07, 0xF7, 0xE0,
|
||||||
|
0x7F, 0x7E, 0x07, 0xE7, 0xF0, 0xFE, 0x7F, 0xFF, 0xE3, 0xFF, 0xFC, 0x3F,
|
||||||
|
0xFF, 0x81, 0xFF, 0xF8, 0x07, 0xFE, 0x00, 0x07, 0x00, 0x00, 0x1F, 0xE0,
|
||||||
|
0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x80, 0x01, 0xFF, 0x00, 0x03, 0xFE, 0x00,
|
||||||
|
0x07, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x7F, 0xE0, 0x00,
|
||||||
|
0xFF, 0xC0, 0x03, 0xDF, 0x80, 0x07, 0xBF, 0x00, 0x0F, 0x7E, 0x00, 0x3E,
|
||||||
|
0xFC, 0x00, 0x79, 0xF8, 0x00, 0xF3, 0xF0, 0x03, 0xE7, 0xE0, 0x07, 0xCF,
|
||||||
|
0xC0, 0x0F, 0x1F, 0x80, 0x3E, 0x3F, 0x00, 0x7C, 0x7E, 0x00, 0xF0, 0xFC,
|
||||||
|
0x01, 0xE1, 0xF8, 0x07, 0xC3, 0xF0, 0x0F, 0x87, 0xE0, 0x1E, 0x0F, 0xC0,
|
||||||
|
0x7C, 0x1F, 0x80, 0xF8, 0x3F, 0x01, 0xF0, 0x7E, 0x07, 0xC0, 0xFC, 0x0F,
|
||||||
|
0x81, 0xF8, 0x1F, 0x03, 0xF0, 0x7E, 0x07, 0xE0, 0xF8, 0x0F, 0xC1, 0xF0,
|
||||||
|
0x1F, 0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0x1F,
|
||||||
|
0x80, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF8,
|
||||||
|
0x00, 0x03, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0xFF, 0xFF, 0x9F,
|
||||||
|
0xFF, 0xF3, 0xFF, 0xFE, 0x7F, 0xFF, 0xCF, 0xFF, 0xF9, 0xFF, 0xFF, 0x3F,
|
||||||
|
0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E,
|
||||||
|
0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x04, 0x07, 0xEF, 0xF0, 0xFF,
|
||||||
|
0xFF, 0x1F, 0xFF, 0xF3, 0xFF, 0xFE, 0x7F, 0xFF, 0xCF, 0xF1, 0xFD, 0xFC,
|
||||||
|
0x1F, 0xBF, 0x03, 0xF7, 0xE0, 0x7E, 0xFC, 0x0F, 0xC0, 0x01, 0xF8, 0x00,
|
||||||
|
0x3F, 0x00, 0x07, 0xF0, 0x00, 0xFE, 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00,
|
||||||
|
0x7F, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0xFE, 0x07, 0xFF, 0xC0,
|
||||||
|
0xFF, 0xF8, 0x1F, 0xBF, 0x03, 0xF7, 0xE0, 0x7E, 0xFC, 0x0F, 0xDF, 0x81,
|
||||||
|
0xFB, 0xF0, 0x3F, 0x7F, 0x07, 0xEF, 0xF1, 0xFC, 0xFF, 0xFF, 0x1F, 0xFF,
|
||||||
|
0xE1, 0xFF, 0xF8, 0x1F, 0xFF, 0x01, 0xFF, 0x80, 0x07, 0x00, 0x00, 0x01,
|
||||||
|
0xFC, 0x00, 0x7F, 0xF8, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x83, 0xFF, 0xFC,
|
||||||
|
0x1F, 0xFF, 0xF1, 0xFC, 0x1F, 0x8F, 0xC0, 0xFC, 0x7E, 0x07, 0xE3, 0xF0,
|
||||||
|
0x3F, 0x1F, 0x81, 0xFD, 0xFC, 0x0F, 0xEF, 0xE0, 0x3F, 0x7F, 0x01, 0xFB,
|
||||||
|
0xF8, 0x0F, 0xDF, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0x80,
|
||||||
|
0x01, 0xFC, 0x30, 0x0F, 0xEF, 0xF0, 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, 0x1F,
|
||||||
|
0xFF, 0xFC, 0xFF, 0xFF, 0xE7, 0xF8, 0x3F, 0xBF, 0x81, 0xFD, 0xFC, 0x07,
|
||||||
|
0xEF, 0xE0, 0x3F, 0x7F, 0x01, 0xFB, 0xF8, 0x0F, 0xDF, 0xC0, 0x7E, 0xFE,
|
||||||
|
0x03, 0xF7, 0xF0, 0x1F, 0xBF, 0x80, 0xFD, 0xFC, 0x07, 0xFF, 0xE0, 0x3F,
|
||||||
|
0xFF, 0x01, 0xFB, 0xF8, 0x0F, 0xDF, 0xC0, 0x7E, 0xFE, 0x03, 0xF3, 0xF0,
|
||||||
|
0x1F, 0x9F, 0x80, 0xFC, 0xFC, 0x07, 0xE7, 0xF0, 0x7F, 0x3F, 0xC7, 0xF8,
|
||||||
|
0xFF, 0xFF, 0x87, 0xFF, 0xFC, 0x1F, 0xFF, 0xC0, 0x7F, 0xFC, 0x01, 0xFF,
|
||||||
|
0xC0, 0x00, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00,
|
||||||
|
0xFE, 0x00, 0x07, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0x80,
|
||||||
|
0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, 0x3F,
|
||||||
|
0x80, 0x01, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xE0, 0x00,
|
||||||
|
0x3F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xE0,
|
||||||
|
0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F,
|
||||||
|
0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00,
|
||||||
|
0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x01, 0xFC,
|
||||||
|
0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x01,
|
||||||
|
0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xC0,
|
||||||
|
0x00, 0xFE, 0x00, 0x00, 0x03, 0xFC, 0x00, 0xFF, 0xF0, 0x1F, 0xFF, 0x83,
|
||||||
|
0xFF, 0xFC, 0x7F, 0xFF, 0xE7, 0xF9, 0xFE, 0x7E, 0x07, 0xEF, 0xE0, 0x7F,
|
||||||
|
0xFE, 0x07, 0xFF, 0xE0, 0x7F, 0xFE, 0x07, 0xFF, 0xC0, 0x7F, 0xFC, 0x07,
|
||||||
|
0xFF, 0xC0, 0x7F, 0xFC, 0x07, 0xFF, 0xE0, 0x7F, 0xFE, 0x07, 0xFF, 0xE0,
|
||||||
|
0x7F, 0x7E, 0x07, 0xE7, 0xE0, 0x7E, 0x7F, 0x0F, 0xE3, 0xF9, 0xFC, 0x1F,
|
||||||
|
0xFF, 0x80, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x3F, 0x9F, 0xC7,
|
||||||
|
0xF0, 0xFE, 0x7E, 0x0F, 0xEF, 0xE0, 0x7E, 0xFE, 0x07, 0xEF, 0xE0, 0x7F,
|
||||||
|
0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xFC, 0x07,
|
||||||
|
0xFF, 0xC0, 0x7F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xFC, 0x07, 0xFF, 0xC0,
|
||||||
|
0x7F, 0xFE, 0x07, 0xFF, 0xE0, 0x7F, 0xFE, 0x07, 0xE7, 0xF0, 0xFE, 0x7F,
|
||||||
|
0xFF, 0xE3, 0xFF, 0xFC, 0x3F, 0xFF, 0xC1, 0xFF, 0xF8, 0x07, 0xFE, 0x00,
|
||||||
|
0x06, 0x00, 0x07, 0xFC, 0x03, 0xFF, 0xE0, 0xFF, 0xFE, 0x1F, 0xFF, 0xC7,
|
||||||
|
0xFF, 0xFC, 0xFF, 0xFF, 0xBF, 0x83, 0xFF, 0xE0, 0x7F, 0xFC, 0x07, 0xFF,
|
||||||
|
0x80, 0xFF, 0xF0, 0x1F, 0xFE, 0x03, 0xFF, 0xC0, 0x7F, 0xF8, 0x0F, 0xFF,
|
||||||
|
0x01, 0xFF, 0xE0, 0x3F, 0xFC, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x1F, 0xFE,
|
||||||
|
0x03, 0xFF, 0xC0, 0x7F, 0xF8, 0x0F, 0xFF, 0x01, 0xFF, 0xE0, 0x3F, 0xFC,
|
||||||
|
0x07, 0xFF, 0xC0, 0xFD, 0xFE, 0xFF, 0xBF, 0xFF, 0xF7, 0xFF, 0xFE, 0x7F,
|
||||||
|
0xFF, 0xC7, 0xFF, 0xF8, 0x3F, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00,
|
||||||
|
0x1F, 0x80, 0x03, 0xFF, 0xC0, 0x7F, 0xF8, 0x0F, 0xFF, 0x01, 0xFF, 0xE0,
|
||||||
|
0x3F, 0xFC, 0x07, 0xFF, 0x80, 0xFF, 0xF8, 0x1F, 0xBF, 0x03, 0xF7, 0xE0,
|
||||||
|
0xFE, 0xFE, 0x1F, 0x9F, 0xFF, 0xF1, 0xFF, 0xFE, 0x3F, 0xFF, 0x83, 0xFF,
|
||||||
|
0xE0, 0x3F, 0xF8, 0x00, 0x20, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7,
|
||||||
|
0x9F, 0x3E, 0x78, 0xF1, 0xE7, 0x8F, 0x1E, 0x3C, 0xF0, 0x00, 0x01, 0x00,
|
||||||
|
0x03, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0xFF, 0x01, 0xFF, 0x07,
|
||||||
|
0xFF, 0x1F, 0xFC, 0x3F, 0xF0, 0xFF, 0xE0, 0xFF, 0x80, 0xFE, 0x00, 0xFC,
|
||||||
|
0x00, 0xF8, 0x00, 0xFC, 0x00, 0xFF, 0x00, 0xFF, 0x80, 0x7F, 0xE0, 0x3F,
|
||||||
|
0xF8, 0x0F, 0xFC, 0x07, 0xFF, 0x01, 0xFF, 0x00, 0xFF, 0x00, 0x3F, 0x00,
|
||||||
|
0x1F, 0x00, 0x07, 0x00, 0x03, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80,
|
||||||
|
0x00, 0xC0, 0x00, 0xE0, 0x00, 0xF8, 0x00, 0xFC, 0x00, 0xFF, 0x00, 0xFF,
|
||||||
|
0x80, 0xFF, 0xE0, 0x3F, 0xF0, 0x0F, 0xFC, 0x07, 0xFE, 0x01, 0xFF, 0x00,
|
||||||
|
0xFF, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0xFF, 0x01, 0xFF, 0x07,
|
||||||
|
0xFE, 0x1F, 0xFC, 0x3F, 0xF0, 0xFF, 0xE0, 0xFF, 0x80, 0xFF, 0x00, 0xFC,
|
||||||
|
0x00, 0xF8, 0x00, 0xE0, 0x00, 0x80, 0x00, 0x80, 0x00, 0x07, 0xF8, 0x07,
|
||||||
|
0xFF, 0x83, 0xFF, 0xF0, 0xFF, 0xFE, 0x7F, 0xFF, 0x9F, 0xFF, 0xE7, 0xE1,
|
||||||
|
0xFF, 0xF8, 0x7F, 0xFE, 0x1F, 0xFF, 0x87, 0xFF, 0xE1, 0xFF, 0xF8, 0x7F,
|
||||||
|
0xFE, 0x1F, 0xFF, 0x87, 0xFF, 0xE1, 0xFF, 0xF8, 0x7F, 0xFE, 0x1F, 0xFF,
|
||||||
|
0x87, 0xF0, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x07, 0xE0, 0x03,
|
||||||
|
0xF8, 0x00, 0xFE, 0x00, 0x7F, 0x80, 0x3F, 0xC0, 0x1F, 0xF0, 0x3F, 0xF8,
|
||||||
|
0x1F, 0xFC, 0x07, 0xFC, 0x01, 0xFC, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07,
|
||||||
|
0xE0, 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x7E, 0x00,
|
||||||
|
0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07,
|
||||||
|
0xE0, 0x01, 0xF8, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x7F, 0xFF,
|
||||||
|
0x00, 0x00, 0x0F, 0xFF, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0xF8, 0x00, 0x0F,
|
||||||
|
0xFC, 0x7F, 0xE0, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xC0, 0x00, 0x7E,
|
||||||
|
0x00, 0xFC, 0x00, 0x01, 0xF0, 0x0F, 0xC0, 0x00, 0x07, 0xC0, 0x7C, 0x00,
|
||||||
|
0x00, 0x1E, 0x07, 0xE0, 0x00, 0x00, 0xF8, 0x3E, 0x00, 0x00, 0x03, 0xC3,
|
||||||
|
0xF0, 0x0F, 0xF8, 0x1E, 0x1F, 0x00, 0xFF, 0xF0, 0xF8, 0xF8, 0x0F, 0xFF,
|
||||||
|
0x83, 0xC7, 0xC0, 0xFF, 0xFC, 0x1E, 0x7E, 0x0F, 0xC1, 0xE0, 0xF3, 0xE0,
|
||||||
|
0x7C, 0x0F, 0x07, 0xDF, 0x03, 0xC0, 0x78, 0x3E, 0xF8, 0x3E, 0x03, 0xC1,
|
||||||
|
0xF7, 0xC1, 0xE0, 0x1E, 0x0F, 0xBE, 0x0F, 0x00, 0xF0, 0x7D, 0xF0, 0x78,
|
||||||
|
0x07, 0x83, 0xFF, 0x87, 0xC0, 0x3C, 0x1F, 0xFC, 0x3E, 0x01, 0xE0, 0xFF,
|
||||||
|
0xE1, 0xF0, 0x0F, 0x07, 0xFF, 0x0F, 0x80, 0x78, 0x3F, 0xF8, 0x7C, 0x03,
|
||||||
|
0xC1, 0xFF, 0xC3, 0xE0, 0x1E, 0x0F, 0xFE, 0x1F, 0x00, 0xF0, 0x7F, 0xF0,
|
||||||
|
0xF8, 0x07, 0x83, 0xEF, 0x87, 0xC0, 0x3C, 0x1E, 0x7C, 0x1E, 0x01, 0xE0,
|
||||||
|
0xF3, 0xE0, 0xF0, 0x1F, 0x87, 0x9F, 0x07, 0xC0, 0xFC, 0x3C, 0xF8, 0x3E,
|
||||||
|
0x0F, 0xE3, 0xC7, 0xE0, 0xF8, 0x6F, 0xBE, 0x1F, 0x07, 0xFF, 0x3F, 0xF0,
|
||||||
|
0xF8, 0x1F, 0xF1, 0xFF, 0x07, 0xC0, 0x7F, 0x87, 0xF0, 0x1F, 0x01, 0xF8,
|
||||||
|
0x0E, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x1F,
|
||||||
|
0x80, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00,
|
||||||
|
0x00, 0x0F, 0xE0, 0x00, 0x0C, 0x00, 0x3F, 0xE0, 0x07, 0xE0, 0x00, 0xFF,
|
||||||
|
0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFF, 0xC0,
|
||||||
|
0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x01, 0xFF,
|
||||||
|
0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF,
|
||||||
|
0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x03, 0xFF, 0x80, 0x03, 0xFF,
|
||||||
|
0x80, 0x03, 0xFF, 0xC0, 0x03, 0xFF, 0xC0, 0x03, 0xFF, 0xC0, 0x03, 0xEF,
|
||||||
|
0xC0, 0x03, 0xE7, 0xC0, 0x07, 0xE7, 0xC0, 0x07, 0xE7, 0xE0, 0x07, 0xE7,
|
||||||
|
0xE0, 0x07, 0xE7, 0xE0, 0x07, 0xE7, 0xE0, 0x07, 0xE7, 0xE0, 0x07, 0xC3,
|
||||||
|
0xE0, 0x0F, 0xC3, 0xF0, 0x0F, 0xC3, 0xF0, 0x0F, 0xC3, 0xF0, 0x0F, 0xC3,
|
||||||
|
0xF0, 0x0F, 0xC3, 0xF0, 0x0F, 0xC3, 0xF0, 0x1F, 0xC1, 0xF8, 0x1F, 0x81,
|
||||||
|
0xF8, 0x1F, 0x81, 0xF8, 0x1F, 0x81, 0xF8, 0x1F, 0x81, 0xF8, 0x1F, 0x81,
|
||||||
|
0xF8, 0x1F, 0x81, 0xF8, 0x3F, 0x80, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF,
|
||||||
|
0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF,
|
||||||
|
0xFE, 0x7F, 0x00, 0x7E, 0x7F, 0x00, 0x7E, 0x7E, 0x00, 0x7E, 0x7E, 0x00,
|
||||||
|
0x7E, 0x7E, 0x00, 0x7E, 0x7E, 0x00, 0x7F, 0x7E, 0x00, 0x7F, 0xFE, 0x00,
|
||||||
|
0x3F, 0xFE, 0x00, 0x3F, 0xFF, 0xFF, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, 0xF1,
|
||||||
|
0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0x7F, 0x07, 0xF3, 0xF8, 0x1F, 0xDF, 0xC0,
|
||||||
|
0xFE, 0xFE, 0x07, 0xF7, 0xF0, 0x3F, 0xBF, 0x81, 0xFD, 0xFC, 0x0F, 0xEF,
|
||||||
|
0xE0, 0x7F, 0x7F, 0x03, 0xFB, 0xF8, 0x1F, 0xDF, 0xC0, 0xFE, 0xFE, 0x07,
|
||||||
|
0xF7, 0xF0, 0x3F, 0x3F, 0x81, 0xF9, 0xFC, 0x1F, 0xCF, 0xFF, 0xFC, 0x7F,
|
||||||
|
0xFF, 0xC3, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0xFF, 0xFF, 0xC7, 0xF0, 0xFF,
|
||||||
|
0x3F, 0x81, 0xFD, 0xFC, 0x0F, 0xEF, 0xE0, 0x3F, 0x7F, 0x01, 0xFB, 0xF8,
|
||||||
|
0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0xFF,
|
||||||
|
0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0,
|
||||||
|
0x7F, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xBF, 0x81, 0xFD, 0xFC, 0x0F, 0xEF,
|
||||||
|
0xE1, 0xFF, 0x7F, 0xFF, 0xF3, 0xFF, 0xFF, 0x9F, 0xFF, 0xF8, 0xFF, 0xFF,
|
||||||
|
0x87, 0xFF, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x3F, 0xFC, 0x03, 0xFF, 0xF0,
|
||||||
|
0x3F, 0xFF, 0xC3, 0xFF, 0xFE, 0x1F, 0xFF, 0xF9, 0xFE, 0x1F, 0xCF, 0xE0,
|
||||||
|
0x7E, 0x7F, 0x03, 0xFB, 0xF0, 0x1F, 0xDF, 0x80, 0xFE, 0xFC, 0x07, 0xFF,
|
||||||
|
0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03,
|
||||||
|
0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x00, 0x7F,
|
||||||
|
0x00, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x00,
|
||||||
|
0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8,
|
||||||
|
0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0xFF,
|
||||||
|
0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0,
|
||||||
|
0x7F, 0x7E, 0x03, 0xFB, 0xF0, 0x1F, 0xDF, 0x80, 0xFE, 0xFE, 0x07, 0xE7,
|
||||||
|
0xF0, 0x7F, 0x1F, 0xC7, 0xF8, 0xFF, 0xFF, 0x83, 0xFF, 0xFC, 0x1F, 0xFF,
|
||||||
|
0xC0, 0x7F, 0xFC, 0x00, 0xFF, 0xC0, 0x00, 0x60, 0x00, 0xFF, 0xFE, 0x07,
|
||||||
|
0xFF, 0xFC, 0x3F, 0xFF, 0xF1, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0x7F, 0x07,
|
||||||
|
0xFB, 0xF8, 0x1F, 0xDF, 0xC0, 0xFE, 0xFE, 0x03, 0xF7, 0xF0, 0x1F, 0xBF,
|
||||||
|
0x80, 0xFD, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F,
|
||||||
|
0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC,
|
||||||
|
0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F,
|
||||||
|
0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0,
|
||||||
|
0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFF,
|
||||||
|
0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01,
|
||||||
|
0xFF, 0xF8, 0x0F, 0xDF, 0xC0, 0x7E, 0xFE, 0x03, 0xF7, 0xF0, 0x3F, 0xBF,
|
||||||
|
0x81, 0xFD, 0xFC, 0x0F, 0xEF, 0xE1, 0xFE, 0x7F, 0xFF, 0xF3, 0xFF, 0xFF,
|
||||||
|
0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0xFE, 0x00, 0xFE,
|
||||||
|
0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE,
|
||||||
|
0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE,
|
||||||
|
0x00, 0xFE, 0x00, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF,
|
||||||
|
0xFE, 0xFF, 0xFE, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE,
|
||||||
|
0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE,
|
||||||
|
0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE,
|
||||||
|
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
|
||||||
|
0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE,
|
||||||
|
0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE,
|
||||||
|
0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF,
|
||||||
|
0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE,
|
||||||
|
0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE,
|
||||||
|
0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE,
|
||||||
|
0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE,
|
||||||
|
0x00, 0xFE, 0x00, 0xFE, 0x00, 0x01, 0xFE, 0x00, 0x3F, 0xFC, 0x03, 0xFF,
|
||||||
|
0xF0, 0x3F, 0xFF, 0xC3, 0xFF, 0xFF, 0x1F, 0xFF, 0xF9, 0xFE, 0x1F, 0xCF,
|
||||||
|
0xE0, 0x7F, 0x7F, 0x03, 0xFB, 0xF0, 0x0F, 0xDF, 0x80, 0x7F, 0xFC, 0x03,
|
||||||
|
0xFF, 0xE0, 0x1F, 0xFF, 0x00, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x3F, 0xFE,
|
||||||
|
0x01, 0xFF, 0xF0, 0x0F, 0xFF, 0x80, 0x7F, 0xFC, 0x00, 0x0F, 0xE0, 0x00,
|
||||||
|
0x7F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xFF, 0xF0,
|
||||||
|
0xFF, 0xFF, 0x87, 0xFF, 0xFC, 0x3F, 0xFF, 0xE1, 0xFF, 0xFF, 0x00, 0xFF,
|
||||||
|
0xF8, 0x07, 0xFF, 0xC0, 0x3F, 0xFE, 0x01, 0xFF, 0xF0, 0x0F, 0xFF, 0x80,
|
||||||
|
0x7F, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, 0x00, 0xFF, 0xF8, 0x07, 0xEF,
|
||||||
|
0xC0, 0x3F, 0x7E, 0x01, 0xFB, 0xF0, 0x0F, 0xDF, 0xC0, 0x7E, 0xFE, 0x07,
|
||||||
|
0xF7, 0xF0, 0x3F, 0x9F, 0xC3, 0xFC, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x1F,
|
||||||
|
0xFF, 0x78, 0x7F, 0xF1, 0xC0, 0xFF, 0x0E, 0xFE, 0x03, 0xFF, 0xF0, 0x1F,
|
||||||
|
0xFF, 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8,
|
||||||
|
0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0xFF,
|
||||||
|
0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0,
|
||||||
|
0x7F, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC, 0x07, 0xFF,
|
||||||
|
0xE0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF,
|
||||||
|
0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFF, 0xF0, 0x1F,
|
||||||
|
0xFF, 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8,
|
||||||
|
0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0xFF,
|
||||||
|
0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0,
|
||||||
|
0x7F, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00,
|
||||||
|
0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00,
|
||||||
|
0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0,
|
||||||
|
0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F,
|
||||||
|
0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07,
|
||||||
|
0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00,
|
||||||
|
0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xFF, 0xE0, 0x7F, 0xFE,
|
||||||
|
0x07, 0xFF, 0xE0, 0x7F, 0xFE, 0x07, 0xFF, 0xE0, 0x7F, 0xFE, 0x07, 0xFF,
|
||||||
|
0xE0, 0x7F, 0xFE, 0x07, 0xFF, 0xE0, 0x7F, 0x7E, 0x07, 0xF7, 0xE0, 0x7F,
|
||||||
|
0x7E, 0x07, 0xE7, 0xF0, 0xFE, 0x7F, 0x8F, 0xE3, 0xFF, 0xFC, 0x3F, 0xFF,
|
||||||
|
0xC1, 0xFF, 0xF8, 0x0F, 0xFF, 0x00, 0x7F, 0xE0, 0x00, 0x60, 0x00, 0xFE,
|
||||||
|
0x01, 0xFD, 0xFC, 0x07, 0xF3, 0xF8, 0x0F, 0xE7, 0xF0, 0x1F, 0x8F, 0xE0,
|
||||||
|
0x7F, 0x1F, 0xC0, 0xFE, 0x3F, 0x81, 0xF8, 0x7F, 0x07, 0xF0, 0xFE, 0x0F,
|
||||||
|
0xE1, 0xFC, 0x1F, 0x83, 0xF8, 0x7F, 0x07, 0xF0, 0xFE, 0x0F, 0xE3, 0xF8,
|
||||||
|
0x1F, 0xC7, 0xF0, 0x3F, 0x8F, 0xC0, 0x7F, 0x3F, 0x80, 0xFE, 0x7F, 0x01,
|
||||||
|
0xFC, 0xFC, 0x03, 0xFB, 0xF8, 0x07, 0xF7, 0xF0, 0x0F, 0xEF, 0xC0, 0x1F,
|
||||||
|
0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xF8, 0x01, 0xFF,
|
||||||
|
0xF0, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x0F, 0xEF, 0xC0, 0x1F, 0xDF,
|
||||||
|
0xC0, 0x3F, 0xBF, 0x80, 0x7F, 0x3F, 0x80, 0xFE, 0x7F, 0x01, 0xFC, 0xFE,
|
||||||
|
0x03, 0xF8, 0xFE, 0x07, 0xF1, 0xFC, 0x0F, 0xE1, 0xF8, 0x1F, 0xC3, 0xF8,
|
||||||
|
0x3F, 0x87, 0xF0, 0x7F, 0x07, 0xF0, 0xFE, 0x0F, 0xE1, 0xFC, 0x1F, 0xC3,
|
||||||
|
0xF8, 0x1F, 0xC7, 0xF0, 0x3F, 0x8F, 0xE0, 0x3F, 0x1F, 0xC0, 0x7F, 0x3F,
|
||||||
|
0x80, 0xFE, 0x7F, 0x00, 0xFE, 0xFE, 0x01, 0xFD, 0xFC, 0x03, 0xFC, 0xFE,
|
||||||
|
0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE,
|
||||||
|
0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE,
|
||||||
|
0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE,
|
||||||
|
0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE,
|
||||||
|
0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE,
|
||||||
|
0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE,
|
||||||
|
0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE,
|
||||||
|
0x00, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xFE,
|
||||||
|
0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0xF0,
|
||||||
|
0x00, 0x7F, 0xFF, 0xE0, 0x01, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xC0,
|
||||||
|
0x07, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xFE, 0x00,
|
||||||
|
0x7F, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0x7C, 0x01, 0xFF, 0xFE, 0xF8, 0x03,
|
||||||
|
0xFF, 0xFD, 0xF0, 0x07, 0xFF, 0xFB, 0xE0, 0x1F, 0xFF, 0xF7, 0xC0, 0x3E,
|
||||||
|
0xFF, 0xE7, 0xC0, 0x7D, 0xFF, 0xEF, 0x80, 0xFB, 0xFF, 0xDF, 0x01, 0xF7,
|
||||||
|
0xFF, 0xBE, 0x03, 0xEF, 0xFF, 0x7C, 0x0F, 0x9F, 0xFE, 0x7C, 0x1F, 0x3F,
|
||||||
|
0xFC, 0xF8, 0x3E, 0x7F, 0xF9, 0xF0, 0x7C, 0xFF, 0xF3, 0xE0, 0xF9, 0xFF,
|
||||||
|
0xE7, 0xC3, 0xE3, 0xFF, 0xC7, 0xC7, 0xC7, 0xFF, 0x8F, 0x8F, 0x8F, 0xFF,
|
||||||
|
0x1F, 0x1F, 0x1F, 0xFE, 0x3E, 0x3E, 0x3F, 0xFC, 0x7C, 0x78, 0x7F, 0xF8,
|
||||||
|
0x7D, 0xF0, 0xFF, 0xF0, 0xFB, 0xE1, 0xFF, 0xE1, 0xF7, 0xC3, 0xFF, 0xC3,
|
||||||
|
0xEF, 0x87, 0xFF, 0x87, 0xDE, 0x0F, 0xFF, 0x07, 0xFC, 0x1F, 0xFE, 0x0F,
|
||||||
|
0xF8, 0x3F, 0xFC, 0x1F, 0xF0, 0x7F, 0xF8, 0x3F, 0xE0, 0xFF, 0xF0, 0x7F,
|
||||||
|
0x81, 0xFF, 0xE0, 0x7F, 0x03, 0xFF, 0xC0, 0xFE, 0x07, 0xFF, 0x81, 0xFC,
|
||||||
|
0x0F, 0xFF, 0x03, 0xF8, 0x1F, 0xFE, 0x07, 0xE0, 0x3F, 0xFC, 0x07, 0xC0,
|
||||||
|
0x7F, 0xF8, 0x0F, 0x80, 0xFC, 0xF8, 0x00, 0xFF, 0xF0, 0x03, 0xFF, 0xC0,
|
||||||
|
0x0F, 0xFF, 0x80, 0x3F, 0xFE, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x0F,
|
||||||
|
0xFF, 0xC0, 0x3F, 0xFF, 0x00, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x0F, 0xFF,
|
||||||
|
0xE0, 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xF8,
|
||||||
|
0x3F, 0xFF, 0xE0, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x0F, 0xFF, 0x7C, 0x3F,
|
||||||
|
0xFD, 0xF0, 0xFF, 0xF7, 0xE3, 0xFF, 0xCF, 0x8F, 0xFF, 0x3E, 0x3F, 0xFC,
|
||||||
|
0xFC, 0xFF, 0xF1, 0xF3, 0xFF, 0xC7, 0xCF, 0xFF, 0x1F, 0xBF, 0xFC, 0x3E,
|
||||||
|
0xFF, 0xF0, 0xFB, 0xFF, 0xC3, 0xFF, 0xFF, 0x07, 0xFF, 0xFC, 0x1F, 0xFF,
|
||||||
|
0xF0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0,
|
||||||
|
0x1F, 0xFF, 0xC0, 0x7F, 0xFF, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xF0, 0x0F,
|
||||||
|
0xFF, 0xC0, 0x3F, 0xFF, 0x00, 0x7F, 0xFC, 0x01, 0xFF, 0xF0, 0x07, 0xFF,
|
||||||
|
0xC0, 0x0F, 0xFF, 0x00, 0x3F, 0xFC, 0x00, 0xFF, 0xF0, 0x01, 0xF0, 0x01,
|
||||||
|
0xFE, 0x00, 0x3F, 0xFC, 0x03, 0xFF, 0xF0, 0x3F, 0xFF, 0xC3, 0xFF, 0xFF,
|
||||||
|
0x1F, 0xFF, 0xF9, 0xFE, 0x1F, 0xCF, 0xE0, 0x7F, 0x7F, 0x03, 0xFB, 0xF0,
|
||||||
|
0x1F, 0xDF, 0x80, 0x7F, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, 0x00, 0xFF,
|
||||||
|
0xF8, 0x07, 0xFF, 0xC0, 0x3F, 0xFE, 0x01, 0xFF, 0xF0, 0x0F, 0xFF, 0x80,
|
||||||
|
0x7F, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, 0x00, 0xFF, 0xF8, 0x07, 0xFF,
|
||||||
|
0xC0, 0x3F, 0xFE, 0x01, 0xFF, 0xF0, 0x0F, 0xFF, 0x80, 0x7F, 0xFC, 0x03,
|
||||||
|
0xFF, 0xE0, 0x1F, 0xFF, 0x00, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x3F, 0xFE,
|
||||||
|
0x01, 0xFF, 0xF0, 0x0F, 0xFF, 0x80, 0x7F, 0xFC, 0x03, 0xFF, 0xE0, 0x1F,
|
||||||
|
0xFF, 0x00, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x3F, 0x7E, 0x01, 0xFB, 0xF0,
|
||||||
|
0x1F, 0xDF, 0x80, 0xFE, 0xFE, 0x07, 0xF7, 0xF0, 0x3F, 0x1F, 0xC7, 0xF8,
|
||||||
|
0xFF, 0xFF, 0xC3, 0xFF, 0xFC, 0x1F, 0xFF, 0xE0, 0x7F, 0xFE, 0x00, 0xFF,
|
||||||
|
0xC0, 0x00, 0x70, 0x00, 0xFF, 0xFF, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, 0xF1,
|
||||||
|
0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0x7F, 0x07, 0xFB, 0xF8, 0x1F, 0xDF, 0xC0,
|
||||||
|
0xFE, 0xFE, 0x03, 0xF7, 0xF0, 0x1F, 0xBF, 0x80, 0xFD, 0xFC, 0x07, 0xEF,
|
||||||
|
0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03,
|
||||||
|
0xFF, 0xF0, 0x1F, 0xBF, 0x80, 0xFD, 0xFC, 0x07, 0xEF, 0xE0, 0x3F, 0x7F,
|
||||||
|
0x03, 0xFB, 0xF8, 0x1F, 0xDF, 0xC0, 0xFE, 0xFE, 0x1F, 0xE7, 0xFF, 0xFF,
|
||||||
|
0x3F, 0xFF, 0xF1, 0xFF, 0xFF, 0x8F, 0xFF, 0xF8, 0x7F, 0xFF, 0x03, 0xF8,
|
||||||
|
0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01,
|
||||||
|
0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xC0,
|
||||||
|
0x00, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F,
|
||||||
|
0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00,
|
||||||
|
0x07, 0xF0, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x3F, 0xFC, 0x03, 0xFF, 0xF0,
|
||||||
|
0x3F, 0xFF, 0xC3, 0xFF, 0xFF, 0x1F, 0xFF, 0xF9, 0xFE, 0x1F, 0xCF, 0xE0,
|
||||||
|
0x7F, 0x7F, 0x03, 0xFB, 0xF0, 0x1F, 0xDF, 0x80, 0x7F, 0xFC, 0x03, 0xFF,
|
||||||
|
0xE0, 0x1F, 0xFF, 0x00, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x3F, 0xFE, 0x01,
|
||||||
|
0xFF, 0xF0, 0x0F, 0xFF, 0x80, 0x7F, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xFF,
|
||||||
|
0x00, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x3F, 0xFE, 0x01, 0xFF, 0xF0, 0x0F,
|
||||||
|
0xFF, 0x80, 0x7F, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, 0x00, 0xFF, 0xF8,
|
||||||
|
0x07, 0xFF, 0xC0, 0x3F, 0xFE, 0x01, 0xFF, 0xF0, 0x0F, 0xFF, 0x80, 0x7F,
|
||||||
|
0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, 0x00, 0xFF, 0xF8, 0x07, 0xFF, 0xC0,
|
||||||
|
0x3F, 0x7E, 0x01, 0xFB, 0xF0, 0x1F, 0xDF, 0x80, 0xFE, 0xFE, 0x07, 0xF7,
|
||||||
|
0xF0, 0x3F, 0x1F, 0xC7, 0xF8, 0xFF, 0xFF, 0xC3, 0xFF, 0xFC, 0x1F, 0xFF,
|
||||||
|
0xE0, 0x7F, 0xFE, 0x00, 0xFF, 0xC0, 0x00, 0x7E, 0x00, 0x01, 0xF8, 0x00,
|
||||||
|
0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x0E,
|
||||||
|
0x00, 0x00, 0x20, 0xFF, 0xFF, 0x87, 0xFF, 0xFE, 0x3F, 0xFF, 0xF9, 0xFF,
|
||||||
|
0xFF, 0xCF, 0xFF, 0xFF, 0x7F, 0x03, 0xFB, 0xF8, 0x1F, 0xDF, 0xC0, 0x7E,
|
||||||
|
0xFE, 0x03, 0xF7, 0xF0, 0x1F, 0xBF, 0x80, 0xFD, 0xFC, 0x07, 0xFF, 0xE0,
|
||||||
|
0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xDF, 0xC0, 0x7E, 0xFE, 0x03, 0xF7,
|
||||||
|
0xF0, 0x1F, 0xBF, 0x81, 0xFD, 0xFC, 0x0F, 0xEF, 0xE0, 0xFE, 0x7F, 0xFF,
|
||||||
|
0xF3, 0xFF, 0xFF, 0x1F, 0xFF, 0xE0, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x3F,
|
||||||
|
0x83, 0xF9, 0xFC, 0x0F, 0xEF, 0xE0, 0x3F, 0x7F, 0x01, 0xFB, 0xF8, 0x0F,
|
||||||
|
0xDF, 0xC0, 0x7E, 0xFE, 0x03, 0xF7, 0xF0, 0x1F, 0xBF, 0x80, 0xFD, 0xFC,
|
||||||
|
0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F,
|
||||||
|
0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0,
|
||||||
|
0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFF,
|
||||||
|
0xF0, 0x1F, 0xC0, 0x03, 0xFC, 0x00, 0x7F, 0xF8, 0x07, 0xFF, 0xE0, 0x7F,
|
||||||
|
0xFF, 0x87, 0xFF, 0xFC, 0x3F, 0xFF, 0xF1, 0xFC, 0x3F, 0x8F, 0xC0, 0xFC,
|
||||||
|
0xFE, 0x07, 0xF7, 0xF0, 0x3F, 0xBF, 0x80, 0xFD, 0xFC, 0x07, 0xEF, 0xE0,
|
||||||
|
0x3F, 0x7F, 0x01, 0xFB, 0xF8, 0x0F, 0xDF, 0xC0, 0x7E, 0x7F, 0x03, 0xF3,
|
||||||
|
0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0xC0, 0x01, 0xFF, 0x00, 0x0F, 0xFC,
|
||||||
|
0x00, 0x3F, 0xE0, 0x00, 0xFF, 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xF8, 0x00,
|
||||||
|
0x3F, 0xE0, 0x00, 0xFF, 0x80, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F,
|
||||||
|
0x80, 0x01, 0xFE, 0xFE, 0x07, 0xF7, 0xF0, 0x3F, 0xBF, 0x80, 0xFD, 0xFC,
|
||||||
|
0x07, 0xEF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F,
|
||||||
|
0x7E, 0x03, 0xFB, 0xF0, 0x1F, 0x9F, 0x80, 0xFC, 0xFC, 0x07, 0xE7, 0xF0,
|
||||||
|
0x7F, 0x3F, 0xC7, 0xF8, 0xFF, 0xFF, 0x87, 0xFF, 0xFC, 0x1F, 0xFF, 0xC0,
|
||||||
|
0x7F, 0xFC, 0x01, 0xFF, 0xC0, 0x00, 0x40, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x3F, 0x80, 0x1F, 0xC0, 0x0F,
|
||||||
|
0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00,
|
||||||
|
0x3F, 0x80, 0x1F, 0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x01, 0xFC,
|
||||||
|
0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x0F, 0xE0, 0x07,
|
||||||
|
0xF0, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80,
|
||||||
|
0x1F, 0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0xFE,
|
||||||
|
0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x03,
|
||||||
|
0xF8, 0x01, 0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F, 0xC0,
|
||||||
|
0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x00, 0xFC, 0x03, 0xFF, 0xE0, 0x1F,
|
||||||
|
0xFF, 0x00, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x3F, 0xFE, 0x01, 0xFF, 0xF0,
|
||||||
|
0x0F, 0xFF, 0x80, 0x7F, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, 0x00, 0xFF,
|
||||||
|
0xF8, 0x07, 0xFF, 0xC0, 0x3F, 0xFE, 0x01, 0xFF, 0xF0, 0x0F, 0xFF, 0x80,
|
||||||
|
0x7F, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, 0x00, 0xFF, 0xF8, 0x07, 0xFF,
|
||||||
|
0xC0, 0x3F, 0xFE, 0x01, 0xFF, 0xF0, 0x0F, 0xFF, 0x80, 0x7F, 0xFC, 0x03,
|
||||||
|
0xFF, 0xE0, 0x1F, 0xFF, 0x00, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x3F, 0xFE,
|
||||||
|
0x01, 0xFF, 0xF0, 0x0F, 0xFF, 0x80, 0x7F, 0xFC, 0x03, 0xFF, 0xE0, 0x1F,
|
||||||
|
0xFF, 0x00, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x3F, 0xFE, 0x01, 0xFB, 0xF0,
|
||||||
|
0x0F, 0xDF, 0x80, 0x7E, 0xFC, 0x03, 0xF7, 0xE0, 0x1F, 0xBF, 0x81, 0xFD,
|
||||||
|
0xFC, 0x0F, 0xE7, 0xF0, 0xFF, 0x3F, 0xFF, 0xF1, 0xFF, 0xFF, 0x87, 0xFF,
|
||||||
|
0xF8, 0x1F, 0xFF, 0x80, 0x3F, 0xF8, 0x00, 0x18, 0x00, 0xFE, 0x00, 0x7F,
|
||||||
|
0xFE, 0x00, 0x7E, 0x7E, 0x00, 0x7E, 0x7E, 0x00, 0x7E, 0x7E, 0x00, 0x7E,
|
||||||
|
0x7E, 0x00, 0x7E, 0x7F, 0x00, 0x7E, 0x7F, 0x00, 0xFE, 0x3F, 0x00, 0xFC,
|
||||||
|
0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC,
|
||||||
|
0x3F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x81, 0xF8, 0x1F, 0x81, 0xF8,
|
||||||
|
0x1F, 0x81, 0xF8, 0x1F, 0x81, 0xF8, 0x1F, 0xC1, 0xF8, 0x0F, 0xC1, 0xF8,
|
||||||
|
0x0F, 0xC1, 0xF8, 0x0F, 0xC1, 0xF0, 0x0F, 0xC3, 0xF0, 0x0F, 0xC3, 0xF0,
|
||||||
|
0x0F, 0xC3, 0xF0, 0x0F, 0xE3, 0xF0, 0x07, 0xE3, 0xF0, 0x07, 0xE3, 0xE0,
|
||||||
|
0x07, 0xE3, 0xE0, 0x07, 0xE3, 0xE0, 0x07, 0xE7, 0xE0, 0x07, 0xE7, 0xE0,
|
||||||
|
0x03, 0xF7, 0xE0, 0x03, 0xF7, 0xE0, 0x03, 0xF7, 0xC0, 0x03, 0xF7, 0xC0,
|
||||||
|
0x03, 0xF7, 0xC0, 0x03, 0xF7, 0xC0, 0x01, 0xFF, 0xC0, 0x01, 0xFF, 0xC0,
|
||||||
|
0x01, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80,
|
||||||
|
0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80,
|
||||||
|
0x00, 0xFF, 0x00, 0xFE, 0x00, 0xF8, 0x03, 0xF7, 0xE0, 0x0F, 0xC0, 0x3F,
|
||||||
|
0x7E, 0x01, 0xFC, 0x03, 0xF7, 0xE0, 0x1F, 0xC0, 0x3F, 0x7E, 0x01, 0xFC,
|
||||||
|
0x03, 0xF7, 0xE0, 0x1F, 0xC0, 0x3F, 0x7E, 0x01, 0xFC, 0x03, 0xE7, 0xE0,
|
||||||
|
0x1F, 0xC0, 0x7E, 0x3E, 0x01, 0xFE, 0x07, 0xE3, 0xF0, 0x3F, 0xE0, 0x7E,
|
||||||
|
0x3F, 0x03, 0xFE, 0x07, 0xE3, 0xF0, 0x3F, 0xE0, 0x7E, 0x3F, 0x03, 0xFE,
|
||||||
|
0x07, 0xE3, 0xF0, 0x3F, 0xE0, 0x7E, 0x3F, 0x03, 0xFE, 0x07, 0xE1, 0xF0,
|
||||||
|
0x3F, 0xF0, 0x7C, 0x1F, 0x07, 0xDF, 0x07, 0xC1, 0xF0, 0x7D, 0xF0, 0xFC,
|
||||||
|
0x1F, 0x87, 0xDF, 0x0F, 0xC1, 0xF8, 0x7D, 0xF0, 0xFC, 0x1F, 0x87, 0xCF,
|
||||||
|
0x0F, 0xC1, 0xF8, 0x7C, 0xF0, 0xFC, 0x1F, 0x87, 0xCF, 0x8F, 0xC0, 0xF8,
|
||||||
|
0xF8, 0xF8, 0xF8, 0x0F, 0x8F, 0x8F, 0x8F, 0x80, 0xF8, 0xF8, 0xF8, 0xF8,
|
||||||
|
0x0F, 0x8F, 0x8F, 0x8F, 0x80, 0xFC, 0xF8, 0x78, 0xF8, 0x0F, 0xCF, 0x87,
|
||||||
|
0x9F, 0x80, 0xFC, 0xF0, 0x7D, 0xF8, 0x0F, 0xDF, 0x07, 0xDF, 0x80, 0x7D,
|
||||||
|
0xF0, 0x7D, 0xF8, 0x07, 0xDF, 0x07, 0xDF, 0x00, 0x7D, 0xF0, 0x7D, 0xF0,
|
||||||
|
0x07, 0xDF, 0x03, 0xDF, 0x00, 0x7D, 0xF0, 0x3D, 0xF0, 0x07, 0xFE, 0x03,
|
||||||
|
0xFF, 0x00, 0x7F, 0xE0, 0x3F, 0xF0, 0x07, 0xFE, 0x03, 0xFF, 0x00, 0x3F,
|
||||||
|
0xE0, 0x3F, 0xF0, 0x03, 0xFE, 0x03, 0xFE, 0x00, 0x3F, 0xE0, 0x1F, 0xE0,
|
||||||
|
0x03, 0xFE, 0x01, 0xFE, 0x00, 0x3F, 0xC0, 0x1F, 0xE0, 0x03, 0xFC, 0x01,
|
||||||
|
0xFE, 0x00, 0x3F, 0xC0, 0x1F, 0xE0, 0x03, 0xFC, 0x01, 0xFE, 0x00, 0x1F,
|
||||||
|
0xC0, 0x1F, 0xE0, 0x01, 0xFC, 0x00, 0xFE, 0x00, 0x1F, 0xC0, 0x0F, 0xC0,
|
||||||
|
0xFC, 0x01, 0xF9, 0xF8, 0x07, 0xE7, 0xE0, 0x3F, 0x8F, 0x80, 0xFC, 0x3F,
|
||||||
|
0x03, 0xF0, 0xFC, 0x0F, 0xC1, 0xF0, 0x7E, 0x07, 0xE1, 0xF8, 0x1F, 0x87,
|
||||||
|
0xE0, 0x7E, 0x1F, 0x80, 0xF8, 0xFC, 0x03, 0xF3, 0xF0, 0x0F, 0xCF, 0xC0,
|
||||||
|
0x1F, 0x3E, 0x00, 0x7F, 0xF8, 0x01, 0xFF, 0xE0, 0x03, 0xFF, 0x80, 0x0F,
|
||||||
|
0xFC, 0x00, 0x3F, 0xF0, 0x00, 0x7F, 0xC0, 0x01, 0xFF, 0x00, 0x07, 0xF8,
|
||||||
|
0x00, 0x1F, 0xE0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00,
|
||||||
|
0x1F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0x3F,
|
||||||
|
0xF0, 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0x00, 0x1F, 0xFE, 0x00, 0x7F, 0xF8,
|
||||||
|
0x03, 0xF3, 0xE0, 0x0F, 0xCF, 0xC0, 0x3F, 0x3F, 0x01, 0xFC, 0xFC, 0x07,
|
||||||
|
0xE1, 0xF8, 0x1F, 0x87, 0xE0, 0x7E, 0x1F, 0x83, 0xF8, 0x3E, 0x0F, 0xC0,
|
||||||
|
0xFC, 0x3F, 0x03, 0xF1, 0xFC, 0x07, 0xC7, 0xE0, 0x1F, 0x9F, 0x80, 0x7E,
|
||||||
|
0x7E, 0x00, 0xFB, 0xF8, 0x03, 0xF0, 0xFE, 0x00, 0x7F, 0x7E, 0x00, 0x7E,
|
||||||
|
0x7F, 0x00, 0x7E, 0x3F, 0x00, 0xFE, 0x3F, 0x00, 0xFE, 0x3F, 0x80, 0xFC,
|
||||||
|
0x3F, 0x80, 0xFC, 0x1F, 0x81, 0xFC, 0x1F, 0x81, 0xF8, 0x1F, 0xC1, 0xF8,
|
||||||
|
0x0F, 0xC1, 0xF8, 0x0F, 0xC3, 0xF8, 0x0F, 0xE3, 0xF0, 0x07, 0xE3, 0xF0,
|
||||||
|
0x07, 0xE3, 0xF0, 0x07, 0xE7, 0xF0, 0x07, 0xF7, 0xE0, 0x03, 0xF7, 0xE0,
|
||||||
|
0x03, 0xF7, 0xE0, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0xC0, 0x01, 0xFF, 0xC0,
|
||||||
|
0x01, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80,
|
||||||
|
0x00, 0xFF, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00,
|
||||||
|
0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00,
|
||||||
|
0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00,
|
||||||
|
0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00,
|
||||||
|
0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00,
|
||||||
|
0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00,
|
||||||
|
0x7F, 0xFF, 0xBF, 0xFF, 0xDF, 0xFF, 0xEF, 0xFF, 0xF7, 0xFF, 0xF8, 0x01,
|
||||||
|
0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F, 0xC0,
|
||||||
|
0x0F, 0xE0, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x01, 0xF8, 0x01, 0xFC,
|
||||||
|
0x00, 0xFE, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x0F,
|
||||||
|
0xE0, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x01, 0xFC, 0x01, 0xFC, 0x00,
|
||||||
|
0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x3F, 0x80, 0x1F, 0xC0, 0x0F, 0xE0,
|
||||||
|
0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x01, 0xFC, 0x01, 0xFC, 0x00, 0xFE,
|
||||||
|
0x00, 0x7F, 0x00, 0x3F, 0x80, 0x3F, 0x80, 0x1F, 0xC0, 0x0F, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC,
|
||||||
|
0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC,
|
||||||
|
0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC,
|
||||||
|
0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC,
|
||||||
|
0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC,
|
||||||
|
0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01,
|
||||||
|
0xF8, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F,
|
||||||
|
0x00, 0x07, 0xE0, 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x03, 0xE0,
|
||||||
|
0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x01, 0xF0, 0x00, 0x7E, 0x00,
|
||||||
|
0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03,
|
||||||
|
0xF0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, 0x7E,
|
||||||
|
0x00, 0x0F, 0x80, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x07, 0xC0,
|
||||||
|
0x01, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00,
|
||||||
|
0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x80, 0x07,
|
||||||
|
0xE0, 0x01, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0,
|
||||||
|
0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0,
|
||||||
|
0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0,
|
||||||
|
0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0,
|
||||||
|
0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0,
|
||||||
|
0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0x3F, 0xF0,
|
||||||
|
0x00, 0xFF, 0xC0, 0x07, 0xFF, 0x00, 0x1F, 0xFC, 0x00, 0x7D, 0xF8, 0x01,
|
||||||
|
0xF7, 0xE0, 0x0F, 0xCF, 0x80, 0x3F, 0x3F, 0x00, 0xFC, 0xFC, 0x03, 0xE3,
|
||||||
|
0xF0, 0x1F, 0x87, 0xC0, 0x7E, 0x1F, 0x81, 0xF8, 0x7E, 0x07, 0xE1, 0xF8,
|
||||||
|
0x3F, 0x07, 0xE0, 0xFC, 0x0F, 0xC3, 0xF0, 0x3F, 0x0F, 0xC0, 0xFC, 0x7E,
|
||||||
|
0x03, 0xF1, 0xF8, 0x0F, 0xE7, 0xE0, 0x1F, 0xBF, 0x80, 0x7E, 0xFE, 0x01,
|
||||||
|
0xFB, 0xF0, 0x07, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0x1F, 0xC3, 0xF0, 0xFC, 0x1F, 0x07, 0xE0,
|
||||||
|
0xF8, 0x3E, 0x07, 0x81, 0xE0, 0x3C, 0x00, 0x20, 0x00, 0x7F, 0xF0, 0x0F,
|
||||||
|
0xFF, 0x81, 0xFF, 0xFC, 0x3F, 0xFF, 0xE3, 0xFF, 0xFE, 0x7F, 0x8F, 0xE7,
|
||||||
|
0xF0, 0x7F, 0x7E, 0x07, 0xF7, 0xE0, 0x7F, 0x7E, 0x03, 0xF7, 0xE0, 0x3F,
|
||||||
|
0x7E, 0x03, 0xF7, 0xE0, 0x3F, 0x7E, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x07,
|
||||||
|
0xF0, 0x01, 0xFF, 0x00, 0xFF, 0xF0, 0x3F, 0xFF, 0x0F, 0xFB, 0xF1, 0xFE,
|
||||||
|
0x3F, 0x3F, 0xC3, 0xF7, 0xF0, 0x3F, 0x7F, 0x03, 0xF7, 0xE0, 0x3F, 0xFE,
|
||||||
|
0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF,
|
||||||
|
0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F,
|
||||||
|
0xFE, 0x07, 0xF7, 0xE0, 0x7F, 0x7F, 0x0F, 0xF7, 0xFF, 0xFF, 0x7F, 0xFB,
|
||||||
|
0xF3, 0xFF, 0xBF, 0x1F, 0xF3, 0xF0, 0xFE, 0x3F, 0xFE, 0x00, 0x0F, 0xE0,
|
||||||
|
0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE,
|
||||||
|
0x00, 0x0F, 0xE0, 0x80, 0xFE, 0x7F, 0x0F, 0xEF, 0xFC, 0xFF, 0xFF, 0xCF,
|
||||||
|
0xFF, 0xFE, 0xFF, 0xFF, 0xEF, 0xF0, 0xFE, 0xFF, 0x07, 0xFF, 0xE0, 0x7F,
|
||||||
|
0xFE, 0x07, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03,
|
||||||
|
0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0,
|
||||||
|
0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE,
|
||||||
|
0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF,
|
||||||
|
0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F,
|
||||||
|
0xFE, 0x03, 0xFF, 0xE0, 0x7F, 0xFE, 0x07, 0xFF, 0xE0, 0x7F, 0xFF, 0x07,
|
||||||
|
0xFF, 0xF0, 0xFE, 0xFF, 0xFF, 0xEF, 0xFF, 0xFE, 0xFF, 0xFF, 0xCF, 0xEF,
|
||||||
|
0xF8, 0xFE, 0x7F, 0x00, 0x00, 0x20, 0x00, 0x7F, 0xF0, 0x0F, 0xFF, 0x81,
|
||||||
|
0xFF, 0xFC, 0x3F, 0xFF, 0xE3, 0xFF, 0xFE, 0x7F, 0x8F, 0xE7, 0xF0, 0x7F,
|
||||||
|
0x7E, 0x07, 0xF7, 0xE0, 0x3F, 0x7E, 0x03, 0xF7, 0xE0, 0x3F, 0xFE, 0x03,
|
||||||
|
0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0,
|
||||||
|
0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE,
|
||||||
|
0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F,
|
||||||
|
0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F,
|
||||||
|
0xFE, 0x03, 0xF7, 0xE0, 0x3F, 0x7E, 0x03, 0xF7, 0xE0, 0x7F, 0x7E, 0x07,
|
||||||
|
0xF7, 0xF0, 0x7E, 0x7F, 0x8F, 0xE3, 0xFF, 0xFE, 0x3F, 0xFF, 0xC1, 0xFF,
|
||||||
|
0xFC, 0x0F, 0xFF, 0x80, 0x7F, 0xE0, 0x00, 0x70, 0x00, 0x00, 0x03, 0xF8,
|
||||||
|
0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01,
|
||||||
|
0xFC, 0x00, 0x0F, 0xE0, 0x18, 0x7F, 0x07, 0xF3, 0xF8, 0xFF, 0xDF, 0xC7,
|
||||||
|
0xFF, 0xFE, 0x7F, 0xFF, 0xF3, 0xFF, 0xFF, 0xBF, 0xC7, 0xFD, 0xFC, 0x1F,
|
||||||
|
0xEF, 0xE0, 0xFF, 0x7E, 0x03, 0xFB, 0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC,
|
||||||
|
0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F,
|
||||||
|
0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0,
|
||||||
|
0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFF,
|
||||||
|
0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01,
|
||||||
|
0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFB, 0xF0, 0x1F, 0xDF,
|
||||||
|
0x80, 0xFE, 0xFC, 0x0F, 0xF7, 0xF0, 0x7F, 0xBF, 0xC7, 0xFD, 0xFF, 0xFF,
|
||||||
|
0xE7, 0xFF, 0xFF, 0x3F, 0xFB, 0xF8, 0xFF, 0xDF, 0xC3, 0xF8, 0xFE, 0x00,
|
||||||
|
0x20, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x81, 0xFF, 0xFC, 0x3F, 0xFF, 0xE3,
|
||||||
|
0xFF, 0xFE, 0x7F, 0x0F, 0xE7, 0xF0, 0x7F, 0x7E, 0x07, 0xF7, 0xE0, 0x7F,
|
||||||
|
0x7E, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03,
|
||||||
|
0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0xFE,
|
||||||
|
0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x03, 0xFF,
|
||||||
|
0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xF7, 0xE0, 0x3F,
|
||||||
|
0x7E, 0x03, 0xF7, 0xE0, 0x7F, 0x7E, 0x07, 0xF7, 0xF0, 0x7F, 0x7F, 0x0F,
|
||||||
|
0xE3, 0xFF, 0xFE, 0x3F, 0xFF, 0xE1, 0xFF, 0xFC, 0x0F, 0xFF, 0x80, 0x7F,
|
||||||
|
0xF0, 0x00, 0x60, 0x00, 0x01, 0xFE, 0x07, 0xFC, 0x1F, 0xF8, 0x7F, 0xF0,
|
||||||
|
0xFF, 0xE1, 0xFC, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x83, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0xF0, 0x07, 0xE0, 0x0F, 0xC0,
|
||||||
|
0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07,
|
||||||
|
0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8,
|
||||||
|
0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00,
|
||||||
|
0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F,
|
||||||
|
0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0,
|
||||||
|
0x1F, 0x80, 0x3F, 0x00, 0x00, 0x80, 0x00, 0x3F, 0x9F, 0xC7, 0xFE, 0xFE,
|
||||||
|
0x3F, 0xFF, 0xF3, 0xFF, 0xFF, 0x9F, 0xFF, 0xFD, 0xFE, 0x3F, 0xEF, 0xE0,
|
||||||
|
0xFF, 0x7E, 0x07, 0xFB, 0xF0, 0x1F, 0xDF, 0x80, 0xFF, 0xFC, 0x07, 0xFF,
|
||||||
|
0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03,
|
||||||
|
0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF,
|
||||||
|
0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFF, 0xF0, 0x1F,
|
||||||
|
0xFF, 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFD, 0xF8,
|
||||||
|
0x0F, 0xEF, 0xC0, 0x7F, 0x7F, 0x07, 0xFB, 0xF8, 0x3F, 0xDF, 0xF3, 0xFE,
|
||||||
|
0x7F, 0xFF, 0xF3, 0xFF, 0xFF, 0x8F, 0xFD, 0xFC, 0x3F, 0xCF, 0xE0, 0x7C,
|
||||||
|
0x7F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x40, 0x0F, 0xE3,
|
||||||
|
0x80, 0xFF, 0x3F, 0xFF, 0xF1, 0xFF, 0xFF, 0x9F, 0xFF, 0xF8, 0x7F, 0xFF,
|
||||||
|
0x80, 0xFF, 0xF0, 0x00, 0x38, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x3F,
|
||||||
|
0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00,
|
||||||
|
0x1F, 0xC1, 0xC0, 0xFE, 0x3F, 0x87, 0xF3, 0xFF, 0x3F, 0xBF, 0xF9, 0xFF,
|
||||||
|
0xFF, 0xEF, 0xFF, 0xFF, 0x7F, 0xC7, 0xFB, 0xFC, 0x1F, 0xDF, 0xC0, 0x7F,
|
||||||
|
0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0,
|
||||||
|
0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFF,
|
||||||
|
0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01,
|
||||||
|
0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF,
|
||||||
|
0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F,
|
||||||
|
0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC,
|
||||||
|
0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F,
|
||||||
|
0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xC0, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x3F, 0x9F, 0xCF, 0xE7, 0xF3,
|
||||||
|
0xF9, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E,
|
||||||
|
0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F,
|
||||||
|
0xC7, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xF1,
|
||||||
|
0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E,
|
||||||
|
0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xF1, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
|
||||||
|
0xBF, 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80,
|
||||||
|
0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00,
|
||||||
|
0xFE, 0x03, 0xFB, 0xF8, 0x0F, 0xEF, 0xE0, 0x3F, 0x3F, 0x81, 0xFC, 0xFE,
|
||||||
|
0x07, 0xF3, 0xF8, 0x3F, 0x8F, 0xE0, 0xFE, 0x3F, 0x83, 0xF0, 0xFE, 0x1F,
|
||||||
|
0xC3, 0xF8, 0x7E, 0x0F, 0xE3, 0xF8, 0x3F, 0x8F, 0xE0, 0xFE, 0x3F, 0x03,
|
||||||
|
0xF9, 0xFC, 0x0F, 0xE7, 0xE0, 0x3F, 0x9F, 0x80, 0xFE, 0xFE, 0x03, 0xFB,
|
||||||
|
0xF0, 0x0F, 0xFF, 0xC0, 0x3F, 0xFE, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xE0,
|
||||||
|
0x0F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0xFE, 0xFC, 0x03, 0xFB, 0xF0, 0x0F,
|
||||||
|
0xEF, 0xE0, 0x3F, 0x9F, 0x80, 0xFE, 0x7F, 0x03, 0xF8, 0xFC, 0x0F, 0xE3,
|
||||||
|
0xF8, 0x3F, 0x8F, 0xE0, 0xFE, 0x1F, 0x83, 0xF8, 0x7F, 0x0F, 0xE0, 0xFC,
|
||||||
|
0x3F, 0x83, 0xF8, 0xFE, 0x0F, 0xE3, 0xF8, 0x1F, 0xCF, 0xE0, 0x7F, 0x3F,
|
||||||
|
0x80, 0xFC, 0xFE, 0x03, 0xFB, 0xF8, 0x0F, 0xEF, 0xE0, 0x1F, 0xC0, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x04, 0x00, 0x30,
|
||||||
|
0x3F, 0x9F, 0xE0, 0x7F, 0x8F, 0xEF, 0xFC, 0x7F, 0xF3, 0xFF, 0xFF, 0xBF,
|
||||||
|
0xFE, 0xFF, 0xFF, 0xEF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xEF, 0xF8, 0xFF,
|
||||||
|
0xC3, 0xFF, 0xFC, 0x1F, 0xE0, 0x7F, 0xFE, 0x03, 0xF8, 0x1F, 0xFF, 0x80,
|
||||||
|
0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0x00, 0xFF, 0xF8, 0x0F, 0xC0, 0x3F, 0xFE,
|
||||||
|
0x03, 0xF0, 0x0F, 0xFF, 0x80, 0xFC, 0x03, 0xFF, 0xE0, 0x3F, 0x00, 0xFF,
|
||||||
|
0xF8, 0x0F, 0xC0, 0x3F, 0xFE, 0x03, 0xF0, 0x0F, 0xFF, 0x80, 0xFC, 0x03,
|
||||||
|
0xFF, 0xE0, 0x3F, 0x00, 0xFF, 0xF8, 0x0F, 0xC0, 0x3F, 0xFE, 0x03, 0xF0,
|
||||||
|
0x0F, 0xFF, 0x80, 0xFC, 0x03, 0xFF, 0xE0, 0x3F, 0x00, 0xFF, 0xF8, 0x0F,
|
||||||
|
0xC0, 0x3F, 0xFE, 0x03, 0xF0, 0x0F, 0xFF, 0x80, 0xFC, 0x03, 0xFF, 0xE0,
|
||||||
|
0x3F, 0x00, 0xFF, 0xF8, 0x0F, 0xC0, 0x3F, 0xFE, 0x03, 0xF0, 0x0F, 0xFF,
|
||||||
|
0x80, 0xFC, 0x03, 0xFF, 0xE0, 0x3F, 0x00, 0xFF, 0xF8, 0x0F, 0xC0, 0x3F,
|
||||||
|
0xFE, 0x03, 0xF0, 0x0F, 0xFF, 0x80, 0xFC, 0x03, 0xFF, 0xE0, 0x3F, 0x00,
|
||||||
|
0xFF, 0xF8, 0x0F, 0xC0, 0x3F, 0xFE, 0x03, 0xF0, 0x0F, 0xFF, 0x80, 0xFC,
|
||||||
|
0x03, 0xFF, 0xE0, 0x3F, 0x00, 0xFF, 0xF8, 0x0F, 0xC0, 0x3F, 0xFE, 0x03,
|
||||||
|
0xF0, 0x0F, 0xFF, 0x80, 0xFC, 0x03, 0xFF, 0xE0, 0x3F, 0x00, 0xFF, 0xF8,
|
||||||
|
0x0F, 0xC0, 0x3F, 0x00, 0x04, 0x07, 0xF1, 0xFC, 0x3F, 0xBF, 0xF9, 0xFD,
|
||||||
|
0xFF, 0xCF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFB, 0xFC, 0x1F, 0xDF, 0xC0, 0xFE,
|
||||||
|
0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0,
|
||||||
|
0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFF,
|
||||||
|
0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01,
|
||||||
|
0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF,
|
||||||
|
0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F,
|
||||||
|
0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC,
|
||||||
|
0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F,
|
||||||
|
0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC, 0x07, 0xF0, 0x00,
|
||||||
|
0x70, 0x00, 0x1F, 0xF0, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x83, 0xFF, 0xFE,
|
||||||
|
0x1F, 0xFF, 0xF1, 0xFE, 0x3F, 0x8F, 0xE0, 0xFE, 0x7E, 0x07, 0xF3, 0xF0,
|
||||||
|
0x1F, 0x9F, 0x80, 0xFD, 0xFC, 0x07, 0xEF, 0xE0, 0x3F, 0x7F, 0x01, 0xFB,
|
||||||
|
0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0x80,
|
||||||
|
0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF,
|
||||||
|
0xC0, 0x7F, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC, 0x07,
|
||||||
|
0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xDF, 0xC0, 0x7E, 0xFE,
|
||||||
|
0x03, 0xF3, 0xF0, 0x1F, 0x9F, 0x80, 0xFC, 0xFC, 0x07, 0xE7, 0xE0, 0x7F,
|
||||||
|
0x3F, 0x83, 0xF9, 0xFE, 0x3F, 0xC7, 0xFF, 0xFC, 0x3F, 0xFF, 0xE0, 0xFF,
|
||||||
|
0xFE, 0x03, 0xFF, 0xE0, 0x0F, 0xFE, 0x00, 0x06, 0x00, 0x00, 0xFE, 0x7F,
|
||||||
|
0x0F, 0xEF, 0xFC, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0xFF, 0xFF, 0xEF, 0xF0,
|
||||||
|
0xFF, 0xFF, 0x07, 0xFF, 0xE0, 0x7F, 0xFE, 0x07, 0xFF, 0xE0, 0x7F, 0xFE,
|
||||||
|
0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF,
|
||||||
|
0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F,
|
||||||
|
0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03,
|
||||||
|
0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0,
|
||||||
|
0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x7F, 0xFE,
|
||||||
|
0x07, 0xFF, 0xE0, 0x7F, 0xFF, 0x07, 0xFF, 0xF0, 0xFE, 0xFF, 0xFF, 0xEF,
|
||||||
|
0xFF, 0xFE, 0xFF, 0xFF, 0xCF, 0xEF, 0xF8, 0xFE, 0x7F, 0x0F, 0xE1, 0x80,
|
||||||
|
0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00,
|
||||||
|
0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xF3, 0xF8, 0xFF, 0xDF, 0xCF,
|
||||||
|
0xFF, 0xFE, 0x7F, 0xFF, 0xF7, 0xFF, 0xFF, 0xBF, 0x87, 0xFD, 0xFC, 0x1F,
|
||||||
|
0xEF, 0xC0, 0xFF, 0x7E, 0x03, 0xFB, 0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC,
|
||||||
|
0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F,
|
||||||
|
0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0,
|
||||||
|
0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFF,
|
||||||
|
0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01,
|
||||||
|
0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFB, 0xF0, 0x1F, 0xDF,
|
||||||
|
0x80, 0xFE, 0xFC, 0x0F, 0xF7, 0xF0, 0x7F, 0xBF, 0x87, 0xFC, 0xFF, 0xFF,
|
||||||
|
0xE7, 0xFF, 0xFF, 0x1F, 0xFF, 0xF8, 0xFF, 0xDF, 0xC1, 0xFC, 0xFE, 0x01,
|
||||||
|
0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7F,
|
||||||
|
0x00, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF8, 0xFF,
|
||||||
|
0xE7, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3F, 0xC0, 0xFE, 0x03,
|
||||||
|
0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80,
|
||||||
|
0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0,
|
||||||
|
0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8,
|
||||||
|
0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE,
|
||||||
|
0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F,
|
||||||
|
0x80, 0x00, 0x40, 0x00, 0x7F, 0xE0, 0x1F, 0xFF, 0x03, 0xFF, 0xF8, 0x3F,
|
||||||
|
0xFF, 0xC7, 0xFF, 0xFC, 0x7F, 0x0F, 0xC7, 0xE0, 0xFE, 0x7E, 0x07, 0xEF,
|
||||||
|
0xE0, 0x7E, 0xFE, 0x07, 0xEF, 0xE0, 0x7E, 0x7E, 0x07, 0xE7, 0xE0, 0x7E,
|
||||||
|
0x7F, 0x07, 0xE7, 0xF0, 0x7E, 0x3F, 0x80, 0x03, 0xFC, 0x00, 0x1F, 0xE0,
|
||||||
|
0x01, 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xC0, 0x03, 0xFE, 0x00, 0x1F,
|
||||||
|
0xF0, 0x00, 0xFF, 0x80, 0x07, 0xFC, 0x00, 0x3F, 0xC0, 0x01, 0xFE, 0x00,
|
||||||
|
0x0F, 0xE7, 0xE0, 0xFE, 0x7E, 0x07, 0xF7, 0xE0, 0x7F, 0x7E, 0x07, 0xF7,
|
||||||
|
0xE0, 0x7F, 0x7E, 0x07, 0xF7, 0xE0, 0x7F, 0x7E, 0x07, 0xF7, 0xF0, 0x7F,
|
||||||
|
0x7F, 0x8F, 0xE3, 0xFF, 0xFE, 0x3F, 0xFF, 0xE1, 0xFF, 0xFC, 0x0F, 0xFF,
|
||||||
|
0x80, 0x7F, 0xF0, 0x00, 0x60, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x3F, 0x80,
|
||||||
|
0x7F, 0x00, 0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x07, 0xF0,
|
||||||
|
0x0F, 0xE0, 0x1F, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x01, 0xFC, 0x03,
|
||||||
|
0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xFE,
|
||||||
|
0x01, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0xC0, 0x3F, 0x80,
|
||||||
|
0x7F, 0x00, 0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x1F,
|
||||||
|
0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x01, 0xFF, 0xC3, 0xFF, 0x83, 0xFF,
|
||||||
|
0x07, 0xFE, 0x07, 0xFC, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF,
|
||||||
|
0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F,
|
||||||
|
0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03,
|
||||||
|
0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0,
|
||||||
|
0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC,
|
||||||
|
0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF,
|
||||||
|
0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F,
|
||||||
|
0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x07, 0xFF, 0xE0, 0x7F, 0xFE, 0x07,
|
||||||
|
0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xBF, 0x7F, 0xFB, 0xF3, 0xFF,
|
||||||
|
0x3F, 0x1F, 0xE3, 0xF0, 0x30, 0x00, 0xFE, 0x01, 0xFB, 0xF0, 0x0F, 0xDF,
|
||||||
|
0x80, 0xFC, 0xFC, 0x07, 0xE7, 0xE0, 0x3F, 0x3F, 0x01, 0xF9, 0xF8, 0x0F,
|
||||||
|
0xCF, 0xC0, 0x7E, 0x3F, 0x03, 0xF1, 0xF8, 0x1F, 0x0F, 0xC1, 0xF8, 0x7E,
|
||||||
|
0x0F, 0xC3, 0xF0, 0x7E, 0x1F, 0x83, 0xF0, 0xFC, 0x1F, 0x83, 0xF0, 0xFC,
|
||||||
|
0x1F, 0x87, 0xC0, 0xFC, 0x3E, 0x07, 0xE1, 0xF0, 0x3F, 0x1F, 0x81, 0xF8,
|
||||||
|
0xFC, 0x0F, 0xC7, 0xE0, 0x3E, 0x3F, 0x01, 0xF9, 0xF0, 0x0F, 0xCF, 0x80,
|
||||||
|
0x7E, 0x7C, 0x03, 0xF3, 0xE0, 0x1F, 0x9F, 0x00, 0x7C, 0xF8, 0x03, 0xEF,
|
||||||
|
0x80, 0x1F, 0x7C, 0x00, 0xFB, 0xE0, 0x07, 0xFF, 0x00, 0x3F, 0xF8, 0x01,
|
||||||
|
0xFF, 0xC0, 0x07, 0xFE, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0x00, 0x0F, 0xF8,
|
||||||
|
0x00, 0x7F, 0xC0, 0x03, 0xFE, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0x80, 0xFC,
|
||||||
|
0x07, 0xE0, 0x1F, 0x7C, 0x07, 0xE0, 0x3F, 0x7C, 0x07, 0xF0, 0x3F, 0x7C,
|
||||||
|
0x07, 0xF0, 0x3F, 0x7E, 0x07, 0xF0, 0x3F, 0x7E, 0x07, 0xF0, 0x3E, 0x7E,
|
||||||
|
0x0F, 0xF0, 0x3E, 0x7E, 0x0F, 0xF0, 0x3E, 0x3E, 0x0F, 0xF0, 0x3E, 0x3E,
|
||||||
|
0x0F, 0xF8, 0x3E, 0x3E, 0x0F, 0x78, 0x3E, 0x3E, 0x0F, 0x78, 0x7E, 0x3E,
|
||||||
|
0x0F, 0x78, 0x7E, 0x3E, 0x1F, 0x78, 0x7C, 0x3F, 0x1F, 0x78, 0x7C, 0x3F,
|
||||||
|
0x1F, 0x7C, 0x7C, 0x1F, 0x1F, 0x7C, 0x7C, 0x1F, 0x1E, 0x7C, 0x7C, 0x1F,
|
||||||
|
0x1E, 0x3C, 0x7C, 0x1F, 0x1E, 0x3C, 0x7C, 0x1F, 0x3E, 0x3C, 0x7C, 0x1F,
|
||||||
|
0x3E, 0x3C, 0xF8, 0x1F, 0x3E, 0x3E, 0xF8, 0x1F, 0x3C, 0x3E, 0xF8, 0x0F,
|
||||||
|
0xBC, 0x3E, 0xF8, 0x0F, 0xBC, 0x1E, 0xF8, 0x0F, 0xBC, 0x1E, 0xF8, 0x0F,
|
||||||
|
0xBC, 0x1E, 0xF8, 0x0F, 0xFC, 0x1E, 0xF8, 0x0F, 0xFC, 0x1E, 0xF0, 0x0F,
|
||||||
|
0xF8, 0x1F, 0xF0, 0x0F, 0xF8, 0x1F, 0xF0, 0x07, 0xF8, 0x1F, 0xF0, 0x07,
|
||||||
|
0xF8, 0x0F, 0xF0, 0x07, 0xF8, 0x0F, 0xF0, 0x07, 0xF8, 0x0F, 0xF0, 0x07,
|
||||||
|
0xF8, 0x0F, 0xF0, 0x07, 0xF0, 0x0F, 0xE0, 0x07, 0xF0, 0x0F, 0xE0, 0x07,
|
||||||
|
0xF0, 0x0F, 0xE0, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xF0, 0x07, 0xE0, 0x03,
|
||||||
|
0xF0, 0x07, 0xE0, 0xFC, 0x03, 0xF3, 0xF0, 0x1F, 0x9F, 0x80, 0xFC, 0xFC,
|
||||||
|
0x0F, 0xC3, 0xF0, 0x7E, 0x1F, 0x83, 0xF0, 0xFC, 0x1F, 0x03, 0xF1, 0xF8,
|
||||||
|
0x1F, 0x8F, 0xC0, 0xFC, 0x7C, 0x03, 0xF7, 0xE0, 0x1F, 0xBF, 0x00, 0x7D,
|
||||||
|
0xF0, 0x03, 0xFF, 0x80, 0x1F, 0xFC, 0x00, 0x7F, 0xC0, 0x03, 0xFE, 0x00,
|
||||||
|
0x1F, 0xF0, 0x00, 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFC,
|
||||||
|
0x00, 0x07, 0xF0, 0x00, 0x7F, 0x80, 0x03, 0xFE, 0x00, 0x1F, 0xF0, 0x01,
|
||||||
|
0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, 0x07, 0xFF, 0x80, 0x3F, 0x7E,
|
||||||
|
0x01, 0xF3, 0xF0, 0x1F, 0x9F, 0x80, 0xFC, 0x7E, 0x07, 0xC3, 0xF0, 0x7E,
|
||||||
|
0x1F, 0x83, 0xF0, 0xFE, 0x1F, 0x83, 0xF1, 0xF8, 0x1F, 0x8F, 0xC0, 0xFE,
|
||||||
|
0x7E, 0x03, 0xF7, 0xE0, 0x1F, 0xBF, 0x00, 0xFE, 0xFE, 0x01, 0xFB, 0xF0,
|
||||||
|
0x0F, 0xDF, 0x80, 0x7E, 0xFC, 0x03, 0xF7, 0xE0, 0x1F, 0xBF, 0x01, 0xFD,
|
||||||
|
0xFC, 0x0F, 0xC7, 0xE0, 0x7E, 0x3F, 0x03, 0xF1, 0xF8, 0x1F, 0x8F, 0xC0,
|
||||||
|
0xFC, 0x7E, 0x07, 0xE3, 0xF0, 0x3E, 0x0F, 0x83, 0xF0, 0x7E, 0x1F, 0x83,
|
||||||
|
0xF0, 0xFC, 0x1F, 0x87, 0xE0, 0xFC, 0x3F, 0x07, 0xE1, 0xF0, 0x1F, 0x0F,
|
||||||
|
0x80, 0xF8, 0x7C, 0x07, 0xC3, 0xE0, 0x3F, 0x3F, 0x01, 0xF9, 0xF8, 0x0F,
|
||||||
|
0xCF, 0x80, 0x3E, 0x7C, 0x01, 0xF3, 0xE0, 0x0F, 0x9F, 0x00, 0x7C, 0xF8,
|
||||||
|
0x03, 0xE7, 0xC0, 0x1F, 0x3C, 0x00, 0x7D, 0xE0, 0x03, 0xFF, 0x00, 0x1F,
|
||||||
|
0xF8, 0x00, 0xFF, 0xC0, 0x07, 0xFE, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0x00,
|
||||||
|
0x07, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x7F,
|
||||||
|
0x80, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x03, 0xFE, 0x00, 0xFF, 0xF0, 0x07,
|
||||||
|
0xFF, 0x00, 0x3F, 0xF8, 0x01, 0xFF, 0x80, 0x00, 0x7F, 0xFF, 0x7F, 0xFF,
|
||||||
|
0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x00, 0x7F, 0x00, 0x7E,
|
||||||
|
0x00, 0x7E, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFC, 0x00, 0xFC, 0x01, 0xFC,
|
||||||
|
0x01, 0xF8, 0x01, 0xF8, 0x03, 0xF8, 0x03, 0xF8, 0x03, 0xF0, 0x07, 0xF0,
|
||||||
|
0x07, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0xE0, 0x0F, 0xE0, 0x0F, 0xC0,
|
||||||
|
0x1F, 0xC0, 0x1F, 0xC0, 0x1F, 0x80, 0x1F, 0x80, 0x3F, 0x80, 0x3F, 0x80,
|
||||||
|
0x3F, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x7E, 0x00, 0xFE, 0x00, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x7E,
|
||||||
|
0x03, 0xFC, 0x0F, 0xF8, 0x3F, 0xF0, 0x7F, 0xE0, 0xFE, 0x03, 0xF8, 0x07,
|
||||||
|
0xF0, 0x0F, 0xE0, 0x1F, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x01, 0xFC,
|
||||||
|
0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0xC0, 0x3F, 0x80, 0x7F, 0x00,
|
||||||
|
0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x07, 0xE0, 0x1F, 0xC1, 0xFF, 0x83, 0xFE,
|
||||||
|
0x07, 0xF8, 0x0F, 0xE0, 0x1F, 0xF0, 0x3F, 0xF0, 0x0F, 0xE0, 0x0F, 0xC0,
|
||||||
|
0x1F, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x07,
|
||||||
|
0xF0, 0x0F, 0xE0, 0x1F, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x01, 0xFC,
|
||||||
|
0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0xC0, 0x1F, 0xC0, 0x3F, 0xF0,
|
||||||
|
0x7F, 0xE0, 0x7F, 0xC0, 0x7F, 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFC, 0x03, 0xFC, 0x0F, 0xF8, 0x3F, 0xE0, 0xFF, 0xC0, 0x7F, 0x01,
|
||||||
|
0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0,
|
||||||
|
0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0,
|
||||||
|
0x0F, 0xC0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xF0, 0x1F, 0xF0, 0x3F,
|
||||||
|
0xC0, 0x7F, 0x01, 0xFC, 0x0F, 0xF0, 0x7F, 0xC3, 0xFC, 0x0F, 0xE0, 0x3F,
|
||||||
|
0x80, 0xFE, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F,
|
||||||
|
0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03,
|
||||||
|
0xF0, 0x0F, 0xC0, 0x7F, 0x01, 0xFC, 0x3F, 0xF0, 0xFF, 0x83, 0xFE, 0x0F,
|
||||||
|
0xF0, 0x3F, 0x00, 0x00, 0x00, 0x08, 0x01, 0xF0, 0x03, 0xF1, 0xFF, 0x80,
|
||||||
|
0xF8, 0xFF, 0xFE, 0x7E, 0x3F, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xC7, 0xFF,
|
||||||
|
0xFF, 0xF3, 0xFF, 0xFF, 0xF8, 0x7C, 0x1F, 0xFC, 0x06, 0x00, 0xFE, 0x00 };
|
||||||
|
|
||||||
|
const GFXglyph Antonio_SemiBold30pt7bGlyphs[] PROGMEM = {
|
||||||
|
{ 0, 1, 1, 13, 0, 0 }, // 0x20 ' '
|
||||||
|
{ 1, 7, 50, 15, 4, -49 }, // 0x21 '!'
|
||||||
|
{ 45, 7, 19, 24, 9, -49 }, // 0x22 '"'
|
||||||
|
{ 62, 26, 50, 30, 2, -49 }, // 0x23 '#'
|
||||||
|
{ 225, 20, 57, 24, 2, -49 }, // 0x24 '$'
|
||||||
|
{ 368, 54, 52, 63, 4, -50 }, // 0x25 '%'
|
||||||
|
{ 719, 26, 52, 29, 2, -50 }, // 0x26 '&'
|
||||||
|
{ 888, 6, 18, 12, 3, -49 }, // 0x27 '''
|
||||||
|
{ 902, 10, 58, 17, 4, -51 }, // 0x28 '('
|
||||||
|
{ 975, 11, 58, 17, 2, -51 }, // 0x29 ')'
|
||||||
|
{ 1055, 22, 21, 26, 2, -48 }, // 0x2A '*'
|
||||||
|
{ 1113, 17, 19, 21, 2, -31 }, // 0x2B '+'
|
||||||
|
{ 1154, 8, 17, 14, 3, -6 }, // 0x2C ','
|
||||||
|
{ 1171, 13, 4, 20, 3, -24 }, // 0x2D '-'
|
||||||
|
{ 1178, 5, 6, 15, 5, -5 }, // 0x2E '.'
|
||||||
|
{ 1182, 18, 51, 22, 2, -50 }, // 0x2F '/'
|
||||||
|
{ 1297, 20, 52, 26, 3, -50 }, // 0x30 '0'
|
||||||
|
{ 1427, 13, 50, 22, 3, -49 }, // 0x31 '1'
|
||||||
|
{ 1509, 19, 51, 26, 4, -50 }, // 0x32 '2'
|
||||||
|
{ 1631, 20, 52, 26, 3, -50 }, // 0x33 '3'
|
||||||
|
{ 1761, 23, 50, 26, 2, -49 }, // 0x34 '4'
|
||||||
|
{ 1905, 19, 51, 26, 4, -49 }, // 0x35 '5'
|
||||||
|
{ 2027, 21, 52, 26, 3, -50 }, // 0x36 '6'
|
||||||
|
{ 2164, 21, 50, 26, 3, -49 }, // 0x37 '7'
|
||||||
|
{ 2296, 20, 52, 26, 3, -50 }, // 0x38 '8'
|
||||||
|
{ 2426, 19, 52, 26, 3, -50 }, // 0x39 '9'
|
||||||
|
{ 2550, 7, 30, 15, 4, -37 }, // 0x3A ':'
|
||||||
|
{ 2577, 7, 41, 16, 5, -37 }, // 0x3B ';'
|
||||||
|
{ 2613, 16, 29, 21, 2, -35 }, // 0x3C '<'
|
||||||
|
{ 2671, 16, 14, 21, 3, -29 }, // 0x3D '='
|
||||||
|
{ 2699, 16, 29, 21, 3, -35 }, // 0x3E '>'
|
||||||
|
{ 2757, 18, 51, 25, 4, -50 }, // 0x3F '?'
|
||||||
|
{ 2872, 37, 53, 43, 3, -50 }, // 0x40 '@'
|
||||||
|
{ 3118, 24, 50, 26, 1, -49 }, // 0x41 'A'
|
||||||
|
{ 3268, 21, 50, 27, 4, -49 }, // 0x42 'B'
|
||||||
|
{ 3400, 21, 52, 27, 3, -50 }, // 0x43 'C'
|
||||||
|
{ 3537, 21, 50, 28, 4, -49 }, // 0x44 'D'
|
||||||
|
{ 3669, 16, 50, 22, 4, -49 }, // 0x45 'E'
|
||||||
|
{ 3769, 16, 50, 22, 4, -49 }, // 0x46 'F'
|
||||||
|
{ 3869, 21, 51, 28, 3, -50 }, // 0x47 'G'
|
||||||
|
{ 4003, 21, 50, 29, 4, -49 }, // 0x48 'H'
|
||||||
|
{ 4135, 7, 50, 15, 4, -49 }, // 0x49 'I'
|
||||||
|
{ 4179, 20, 51, 26, 2, -49 }, // 0x4A 'J'
|
||||||
|
{ 4307, 23, 50, 27, 4, -49 }, // 0x4B 'K'
|
||||||
|
{ 4451, 16, 50, 21, 4, -49 }, // 0x4C 'L'
|
||||||
|
{ 4551, 31, 50, 39, 4, -49 }, // 0x4D 'M'
|
||||||
|
{ 4745, 22, 50, 30, 4, -49 }, // 0x4E 'N'
|
||||||
|
{ 4883, 21, 52, 28, 3, -50 }, // 0x4F 'O'
|
||||||
|
{ 5020, 21, 50, 26, 4, -49 }, // 0x50 'P'
|
||||||
|
{ 5152, 21, 59, 28, 3, -50 }, // 0x51 'Q'
|
||||||
|
{ 5307, 21, 50, 28, 4, -49 }, // 0x52 'R'
|
||||||
|
{ 5439, 21, 52, 24, 2, -50 }, // 0x53 'S'
|
||||||
|
{ 5576, 17, 50, 19, 1, -49 }, // 0x54 'T'
|
||||||
|
{ 5683, 21, 51, 28, 4, -49 }, // 0x55 'U'
|
||||||
|
{ 5817, 24, 50, 26, 1, -49 }, // 0x56 'V'
|
||||||
|
{ 5967, 36, 50, 39, 1, -49 }, // 0x57 'W'
|
||||||
|
{ 6192, 22, 50, 24, 1, -49 }, // 0x58 'X'
|
||||||
|
{ 6330, 24, 50, 24, 0, -49 }, // 0x59 'Y'
|
||||||
|
{ 6480, 17, 50, 20, 2, -49 }, // 0x5A 'Z'
|
||||||
|
{ 6587, 12, 52, 20, 5, -49 }, // 0x5B '['
|
||||||
|
{ 6665, 18, 50, 23, 2, -49 }, // 0x5C '\'
|
||||||
|
{ 6778, 12, 52, 20, 3, -49 }, // 0x5D ']'
|
||||||
|
{ 6856, 22, 26, 28, 3, -49 }, // 0x5E '^'
|
||||||
|
{ 6928, 19, 5, 21, 1, 2 }, // 0x5F '_'
|
||||||
|
{ 6940, 10, 11, 12, 1, -57 }, // 0x60 '`'
|
||||||
|
{ 6954, 20, 44, 27, 3, -43 }, // 0x61 'a'
|
||||||
|
{ 7064, 20, 51, 28, 4, -50 }, // 0x62 'b'
|
||||||
|
{ 7192, 20, 45, 26, 3, -43 }, // 0x63 'c'
|
||||||
|
{ 7305, 21, 51, 28, 3, -50 }, // 0x64 'd'
|
||||||
|
{ 7439, 20, 45, 26, 3, -43 }, // 0x65 'e'
|
||||||
|
{ 7552, 15, 51, 19, 2, -50 }, // 0x66 'f'
|
||||||
|
{ 7648, 21, 51, 27, 3, -43 }, // 0x67 'g'
|
||||||
|
{ 7782, 21, 51, 28, 4, -50 }, // 0x68 'h'
|
||||||
|
{ 7916, 7, 53, 15, 4, -52 }, // 0x69 'i'
|
||||||
|
{ 7963, 9, 59, 15, 2, -52 }, // 0x6A 'j'
|
||||||
|
{ 8030, 22, 51, 26, 4, -50 }, // 0x6B 'k'
|
||||||
|
{ 8171, 7, 51, 15, 4, -50 }, // 0x6C 'l'
|
||||||
|
{ 8216, 34, 44, 42, 4, -43 }, // 0x6D 'm'
|
||||||
|
{ 8403, 21, 44, 28, 4, -43 }, // 0x6E 'n'
|
||||||
|
{ 8519, 21, 45, 27, 3, -43 }, // 0x6F 'o'
|
||||||
|
{ 8638, 20, 51, 28, 4, -42 }, // 0x70 'p'
|
||||||
|
{ 8766, 21, 51, 28, 3, -42 }, // 0x71 'q'
|
||||||
|
{ 8900, 14, 44, 19, 4, -43 }, // 0x72 'r'
|
||||||
|
{ 8977, 20, 45, 24, 2, -43 }, // 0x73 's'
|
||||||
|
{ 9090, 15, 50, 18, 1, -49 }, // 0x74 't'
|
||||||
|
{ 9184, 20, 44, 28, 4, -42 }, // 0x75 'u'
|
||||||
|
{ 9294, 21, 43, 23, 1, -42 }, // 0x76 'v'
|
||||||
|
{ 9407, 32, 43, 35, 1, -42 }, // 0x77 'w'
|
||||||
|
{ 9579, 21, 43, 23, 1, -42 }, // 0x78 'x'
|
||||||
|
{ 9692, 21, 50, 23, 1, -42 }, // 0x79 'y'
|
||||||
|
{ 9824, 16, 43, 20, 2, -42 }, // 0x7A 'z'
|
||||||
|
{ 9910, 15, 56, 21, 3, -50 }, // 0x7B '{'
|
||||||
|
{ 10015, 6, 56, 15, 5, -52 }, // 0x7C '|'
|
||||||
|
{ 10057, 14, 56, 21, 3, -50 }, // 0x7D '}'
|
||||||
|
{ 10155, 26, 10, 32, 3, -33 } }; // 0x7E '~'
|
||||||
|
|
||||||
|
const GFXfont Antonio_SemiBold30pt7b PROGMEM = {
|
||||||
|
(uint8_t *)Antonio_SemiBold30pt7bBitmaps,
|
||||||
|
(GFXglyph *)Antonio_SemiBold30pt7bGlyphs,
|
||||||
|
0x20, 0x7E, 76 };
|
||||||
|
|
||||||
|
// Approx. 10860 bytes
|
7698
src/fonts/antonio-semibold90.h
Normal file
7698
src/fonts/antonio-semibold90.h
Normal file
File diff suppressed because it is too large
Load Diff
11
src/fonts/fonts.hpp
Normal file
11
src/fonts/fonts.hpp
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "antonio-semibold20.h"
|
||||||
|
#include "antonio-semibold30.h"
|
||||||
|
#include "antonio-semibold90.h"
|
||||||
|
#include "oswald-20.h"
|
||||||
|
#include "oswald-30.h"
|
||||||
|
#include "oswald-90.h"
|
||||||
|
#include "ubuntu-italic40.h"
|
||||||
|
#include "ubuntu-italic60.h"
|
||||||
|
#include "ubuntu-italic70.h"
|
488
src/fonts/oswald-20.h
Normal file
488
src/fonts/oswald-20.h
Normal file
@ -0,0 +1,488 @@
|
|||||||
|
const uint8_t Oswald_Regular20pt7bBitmaps[] PROGMEM = {
|
||||||
|
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x77, 0x76, 0x66, 0x66, 0x66, 0x66,
|
||||||
|
0x66, 0x60, 0x00, 0xFF, 0xFF, 0xF7, 0xF3, 0xF9, 0xFC, 0xFE, 0x77, 0x3B,
|
||||||
|
0x9D, 0x8E, 0xC7, 0x63, 0x80, 0x07, 0x87, 0x83, 0xC7, 0xC1, 0xE3, 0xC1,
|
||||||
|
0xF1, 0xE0, 0xF0, 0xF0, 0x78, 0x78, 0x3C, 0x3C, 0x1E, 0x1E, 0x0F, 0x1F,
|
||||||
|
0x07, 0x8F, 0x07, 0xC7, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x78,
|
||||||
|
0x78, 0x3C, 0x7C, 0x1E, 0x3C, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xF9, 0xE3, 0xE0, 0xF1, 0xF0, 0x78, 0xF0, 0x7C, 0x78, 0x3C, 0x3C,
|
||||||
|
0x1E, 0x1E, 0x0F, 0x0F, 0x07, 0x8F, 0x83, 0xC7, 0xC1, 0xE3, 0xC1, 0xF1,
|
||||||
|
0xE0, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x0F, 0xE0, 0x3F, 0xF0, 0x7F,
|
||||||
|
0xF8, 0xFE, 0xFC, 0xF0, 0x3C, 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x1E, 0xF0,
|
||||||
|
0x1C, 0xF0, 0x00, 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F,
|
||||||
|
0x80, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x01, 0xF8, 0x00, 0xFC, 0x00,
|
||||||
|
0x7E, 0x00, 0x3E, 0x20, 0x1E, 0xF0, 0x1E, 0xF0, 0x1F, 0xF0, 0x1F, 0xF0,
|
||||||
|
0x1E, 0xF8, 0x1E, 0x7C, 0x3E, 0x3F, 0xFC, 0x3F, 0xF8, 0x0F, 0xF0, 0x00,
|
||||||
|
0x80, 0x00, 0x80, 0x00, 0x80, 0x0F, 0x80, 0x1E, 0x00, 0x3F, 0xE0, 0x1C,
|
||||||
|
0x00, 0x7F, 0xF0, 0x3C, 0x00, 0x78, 0xF0, 0x3C, 0x00, 0x78, 0x70, 0x38,
|
||||||
|
0x00, 0xF0, 0x78, 0x38, 0x00, 0xF0, 0x78, 0x78, 0x00, 0xF0, 0x78, 0x78,
|
||||||
|
0x00, 0xF0, 0x78, 0x70, 0x00, 0xF0, 0x78, 0x70, 0x00, 0xF0, 0x78, 0xF0,
|
||||||
|
0x00, 0x70, 0x78, 0xF0, 0x00, 0x78, 0x70, 0xE0, 0x00, 0x78, 0xF1, 0xE0,
|
||||||
|
0x00, 0x7F, 0xF1, 0xE0, 0x00, 0x3F, 0xE1, 0xC0, 0xF8, 0x1F, 0xC1, 0xC3,
|
||||||
|
0xFE, 0x00, 0x03, 0xC7, 0xFE, 0x00, 0x03, 0xC7, 0x9F, 0x00, 0x03, 0x87,
|
||||||
|
0x0F, 0x00, 0x07, 0x8F, 0x07, 0x00, 0x07, 0x8F, 0x07, 0x00, 0x07, 0x8F,
|
||||||
|
0x07, 0x00, 0x07, 0x0F, 0x07, 0x00, 0x0F, 0x0F, 0x07, 0x00, 0x0F, 0x0F,
|
||||||
|
0x07, 0x00, 0x0E, 0x0F, 0x07, 0x00, 0x0E, 0x0F, 0x0F, 0x00, 0x1E, 0x07,
|
||||||
|
0x8F, 0x00, 0x1E, 0x07, 0xFF, 0x00, 0x1C, 0x03, 0xFE, 0x00, 0x3C, 0x01,
|
||||||
|
0xFC, 0x07, 0xE0, 0x00, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xF7, 0xC0, 0x3C,
|
||||||
|
0x3E, 0x03, 0xC1, 0xE0, 0x7C, 0x1E, 0x07, 0xC1, 0xE0, 0x3C, 0x3E, 0x03,
|
||||||
|
0xC3, 0xC0, 0x3C, 0x3C, 0x01, 0xE7, 0x80, 0x1E, 0x70, 0x00, 0xEF, 0x00,
|
||||||
|
0x0F, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xFC, 0x1F, 0x1F, 0xC1,
|
||||||
|
0xE3, 0xDE, 0x1E, 0x7D, 0xF1, 0xE7, 0x8F, 0x1E, 0x78, 0x7B, 0xCF, 0x87,
|
||||||
|
0xFC, 0xF8, 0x3F, 0xCF, 0x01, 0xF8, 0xF8, 0x1F, 0x87, 0x83, 0xFC, 0x7C,
|
||||||
|
0x7F, 0xF7, 0xFF, 0xFF, 0x3F, 0xF9, 0xF0, 0xFE, 0x0F, 0xFE, 0xEE, 0xEE,
|
||||||
|
0xEC, 0xCC, 0x07, 0x1F, 0x1F, 0x3C, 0x78, 0x78, 0x78, 0x70, 0xF0, 0xF0,
|
||||||
|
0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
|
||||||
|
0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x78, 0x78,
|
||||||
|
0x78, 0x38, 0x3E, 0x1F, 0x0F, 0x01, 0xE0, 0xF0, 0xF8, 0x3C, 0x3C, 0x1E,
|
||||||
|
0x1E, 0x1E, 0x1E, 0x1E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||||
|
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E,
|
||||||
|
0x1E, 0x1E, 0x1E, 0x1E, 0x1C, 0x3C, 0x7C, 0xF8, 0xF0, 0x80, 0x07, 0x00,
|
||||||
|
0x38, 0x01, 0xC1, 0x0E, 0x2E, 0x73, 0x7F, 0x7D, 0xFF, 0xC1, 0xF0, 0x0F,
|
||||||
|
0x80, 0xEC, 0x0E, 0x70, 0x71, 0xC7, 0x0E, 0x08, 0x40, 0x07, 0x80, 0x1E,
|
||||||
|
0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFC, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01,
|
||||||
|
0xE0, 0xFF, 0xFF, 0xF3, 0x36, 0xEC, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF,
|
||||||
|
0xF0, 0x00, 0x70, 0x0F, 0x00, 0xF0, 0x0E, 0x00, 0xE0, 0x1E, 0x01, 0xE0,
|
||||||
|
0x1C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x38, 0x07, 0x80, 0x78, 0x07, 0x00,
|
||||||
|
0x70, 0x0F, 0x00, 0xF0, 0x0E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x1C, 0x03,
|
||||||
|
0xC0, 0x3C, 0x03, 0xC0, 0x38, 0x07, 0x80, 0x78, 0x07, 0x00, 0x70, 0x0F,
|
||||||
|
0x00, 0x07, 0xE0, 0x1F, 0xF8, 0x3F, 0xFC, 0x3F, 0x7E, 0x7C, 0x1E, 0x78,
|
||||||
|
0x1E, 0xF8, 0x1F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8,
|
||||||
|
0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8,
|
||||||
|
0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8,
|
||||||
|
0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0x78, 0x1F, 0x78, 0x1E, 0x7E, 0x3E, 0x3F,
|
||||||
|
0xFC, 0x1F, 0xF8, 0x0F, 0xF0, 0x01, 0xC1, 0xF0, 0xFD, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFC, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C,
|
||||||
|
0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03,
|
||||||
|
0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x07, 0xE0, 0x3F,
|
||||||
|
0xF0, 0xFF, 0xF3, 0xFF, 0xE7, 0x83, 0xFF, 0x03, 0xFC, 0x07, 0xF8, 0x0F,
|
||||||
|
0xF0, 0x1F, 0xE0, 0x3C, 0x00, 0x78, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0x80,
|
||||||
|
0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1E, 0x00, 0x7C,
|
||||||
|
0x01, 0xF0, 0x03, 0xC0, 0x0F, 0x80, 0x3E, 0x00, 0x78, 0x01, 0xF0, 0x03,
|
||||||
|
0xC0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xE0, 0x7F,
|
||||||
|
0xE1, 0xFF, 0xF3, 0xF7, 0xEF, 0x83, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F,
|
||||||
|
0xF0, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xF0, 0x07, 0xC0, 0x7F, 0x00,
|
||||||
|
0xFC, 0x01, 0xF8, 0x03, 0xF8, 0x01, 0xF8, 0x00, 0xF0, 0x01, 0xF0, 0x01,
|
||||||
|
0xE0, 0x03, 0xC0, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F,
|
||||||
|
0xC1, 0xFF, 0xC7, 0xCF, 0xFF, 0x8F, 0xFE, 0x0F, 0xF0, 0x00, 0xF8, 0x01,
|
||||||
|
0xF8, 0x01, 0xF8, 0x03, 0xF8, 0x03, 0xF8, 0x03, 0xF8, 0x07, 0x78, 0x07,
|
||||||
|
0x78, 0x0F, 0x78, 0x0E, 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x78, 0x3C,
|
||||||
|
0x78, 0x3C, 0x78, 0x78, 0x78, 0x78, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xF0,
|
||||||
|
0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x78, 0x00,
|
||||||
|
0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00,
|
||||||
|
0x78, 0x7F, 0xFC, 0xFF, 0xF9, 0xFF, 0xF3, 0xFF, 0xE7, 0x00, 0x0E, 0x00,
|
||||||
|
0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x84, 0x07,
|
||||||
|
0x7F, 0x0F, 0xFF, 0x1F, 0xFF, 0x3C, 0x1F, 0x78, 0x1E, 0x00, 0x3C, 0x00,
|
||||||
|
0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0xF8, 0x0F, 0xF0, 0x1F,
|
||||||
|
0xE0, 0x3F, 0xC0, 0x7F, 0xC1, 0xF7, 0xC7, 0xCF, 0xFF, 0x8F, 0xFE, 0x0F,
|
||||||
|
0xF0, 0x07, 0xE0, 0x1F, 0xF8, 0x3F, 0xFC, 0x3F, 0xFE, 0x7C, 0x1E, 0x78,
|
||||||
|
0x1F, 0x78, 0x1F, 0x78, 0x0F, 0xF8, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0,
|
||||||
|
0x00, 0xF0, 0x00, 0xF3, 0xF0, 0xF7, 0xFC, 0xFF, 0xFE, 0xFC, 0x3E, 0xF8,
|
||||||
|
0x1E, 0xF0, 0x1F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0,
|
||||||
|
0x0F, 0xF8, 0x0F, 0x78, 0x1F, 0x78, 0x1E, 0x78, 0x1E, 0x3E, 0x3E, 0x3F,
|
||||||
|
0xFC, 0x1F, 0xF8, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0,
|
||||||
|
0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03,
|
||||||
|
0xC0, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x01, 0xE0,
|
||||||
|
0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03,
|
||||||
|
0xC0, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x07, 0xE0, 0x1F,
|
||||||
|
0xF8, 0x3F, 0xFC, 0x7E, 0x7C, 0x78, 0x3E, 0x78, 0x1E, 0xF8, 0x1E, 0xF0,
|
||||||
|
0x1E, 0xF0, 0x1E, 0xF8, 0x1E, 0x78, 0x1E, 0x78, 0x3E, 0x7C, 0x3C, 0x3F,
|
||||||
|
0xFC, 0x1F, 0xF8, 0x0F, 0xF0, 0x3F, 0xF8, 0x7E, 0x7C, 0x78, 0x3E, 0xF8,
|
||||||
|
0x1E, 0xF0, 0x1E, 0xF0, 0x1F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x1F, 0xF0,
|
||||||
|
0x1E, 0xF0, 0x1E, 0x78, 0x1E, 0x7C, 0x3E, 0x7F, 0xFC, 0x3F, 0xF8, 0x0F,
|
||||||
|
0xF0, 0x07, 0xC0, 0x3F, 0xE0, 0xFF, 0xE3, 0xF7, 0xE7, 0x83, 0xDF, 0x03,
|
||||||
|
0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF,
|
||||||
|
0x01, 0xFE, 0x03, 0xFE, 0x07, 0xFC, 0x1F, 0x7F, 0xFE, 0x7F, 0xFC, 0x7F,
|
||||||
|
0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0xF0, 0x1F,
|
||||||
|
0xE0, 0x3F, 0xC0, 0x7F, 0xC1, 0xE7, 0xC7, 0xCF, 0xFF, 0x0F, 0xFE, 0x07,
|
||||||
|
0xF0, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xF8,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFE,
|
||||||
|
0x33, 0x9B, 0xC8, 0x00, 0x20, 0x04, 0x01, 0x80, 0xF0, 0x3E, 0x1F, 0x87,
|
||||||
|
0xE1, 0xF8, 0xFC, 0x1F, 0x03, 0x80, 0x7C, 0x0F, 0xC0, 0xFC, 0x07, 0xE0,
|
||||||
|
0x7E, 0x03, 0xE0, 0x3C, 0x03, 0x80, 0x10, 0x02, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x80,
|
||||||
|
0x0C, 0x00, 0xE0, 0x0F, 0x80, 0xFC, 0x07, 0xE0, 0x1F, 0x80, 0xFC, 0x03,
|
||||||
|
0xF0, 0x1F, 0x00, 0xF0, 0x1F, 0x03, 0xF0, 0xFC, 0x1F, 0x87, 0xE0, 0xFC,
|
||||||
|
0x0F, 0x80, 0xE0, 0x0C, 0x00, 0x80, 0x00, 0x0F, 0xE0, 0x3F, 0xF0, 0xFF,
|
||||||
|
0xF3, 0xFF, 0xEF, 0x83, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F,
|
||||||
|
0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x03, 0xE0, 0x07, 0x80, 0x1F, 0x00,
|
||||||
|
0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xE0,
|
||||||
|
0x03, 0xC0, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00,
|
||||||
|
0x1F, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0xE0, 0x03,
|
||||||
|
0xF8, 0x01, 0xF0, 0x07, 0xE0, 0x00, 0xF8, 0x0F, 0xC0, 0x00, 0x7C, 0x0F,
|
||||||
|
0x00, 0x00, 0x3C, 0x1F, 0x00, 0x60, 0x1C, 0x1E, 0x03, 0xFF, 0x1E, 0x3C,
|
||||||
|
0x07, 0xFF, 0x0E, 0x3C, 0x0F, 0xFF, 0x0E, 0x78, 0x1F, 0x0F, 0x0F, 0x78,
|
||||||
|
0x1E, 0x0E, 0x07, 0x78, 0x3E, 0x1E, 0x07, 0x78, 0x3C, 0x1E, 0x07, 0x70,
|
||||||
|
0x3C, 0x1E, 0x07, 0xF0, 0x78, 0x1E, 0x07, 0xF0, 0x78, 0x1E, 0x0E, 0xF0,
|
||||||
|
0x78, 0x1C, 0x0E, 0xF0, 0x78, 0x1C, 0x0E, 0xF0, 0x78, 0x3C, 0x0E, 0xF0,
|
||||||
|
0x78, 0x3C, 0x1C, 0xF0, 0x78, 0x7C, 0x1C, 0x70, 0x7C, 0xFC, 0x38, 0x78,
|
||||||
|
0x3F, 0xDC, 0xF0, 0x78, 0x1F, 0xDF, 0xE0, 0x78, 0x0F, 0x8F, 0x80, 0x3C,
|
||||||
|
0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x1F,
|
||||||
|
0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x07, 0xF8, 0x03, 0x00, 0x03,
|
||||||
|
0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x1F, 0xFE, 0x00, 0x03,
|
||||||
|
0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xF0, 0x01, 0xFC,
|
||||||
|
0x00, 0x7F, 0x00, 0x1D, 0xC0, 0x07, 0x78, 0x01, 0xDE, 0x00, 0xF7, 0x80,
|
||||||
|
0x3C, 0xE0, 0x0F, 0x38, 0x03, 0x8F, 0x01, 0xE3, 0xC0, 0x78, 0xF0, 0x1E,
|
||||||
|
0x3C, 0x07, 0x87, 0x01, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0xFF,
|
||||||
|
0x83, 0xFF, 0xF0, 0xFF, 0xFC, 0x78, 0x0F, 0x1E, 0x03, 0xC7, 0x80, 0xF1,
|
||||||
|
0xE0, 0x1E, 0xF8, 0x07, 0xBC, 0x01, 0xEF, 0x00, 0x7B, 0xC0, 0x1F, 0xFF,
|
||||||
|
0xE0, 0x7F, 0xFC, 0x3F, 0xFF, 0x1F, 0xFF, 0xCF, 0x81, 0xF7, 0xC0, 0x7B,
|
||||||
|
0xE0, 0x3D, 0xF0, 0x1E, 0xF8, 0x0F, 0x7C, 0x07, 0xBE, 0x03, 0xDF, 0x01,
|
||||||
|
0xEF, 0x81, 0xE7, 0xC7, 0xF3, 0xFF, 0xE1, 0xFF, 0xF0, 0xFF, 0xFE, 0x7C,
|
||||||
|
0x1F, 0xBE, 0x03, 0xDF, 0x01, 0xFF, 0x80, 0x7F, 0xC0, 0x3F, 0xE0, 0x1F,
|
||||||
|
0xF0, 0x0F, 0xF8, 0x07, 0xFC, 0x03, 0xFE, 0x03, 0xFF, 0x01, 0xEF, 0x83,
|
||||||
|
0xF7, 0xFF, 0xF3, 0xFF, 0xF1, 0xFF, 0xE0, 0x07, 0xF0, 0x1F, 0xFC, 0x3F,
|
||||||
|
0xFE, 0x7F, 0x7E, 0x7C, 0x1F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF0, 0x0F, 0xF0,
|
||||||
|
0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x00, 0xF0, 0x00, 0xF0,
|
||||||
|
0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0,
|
||||||
|
0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF8, 0x0F, 0xF8,
|
||||||
|
0x0F, 0x78, 0x1F, 0x7E, 0x3E, 0x3F, 0xFE, 0x1F, 0xFC, 0x0F, 0xF8, 0xFF,
|
||||||
|
0xC0, 0x7F, 0xFC, 0x3F, 0xFF, 0x9F, 0xFF, 0xCF, 0x81, 0xF7, 0xC0, 0x7B,
|
||||||
|
0xE0, 0x3D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x01,
|
||||||
|
0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC,
|
||||||
|
0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F,
|
||||||
|
0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xBE, 0x03, 0xDF, 0x03, 0xEF, 0x83,
|
||||||
|
0xE7, 0xFF, 0xF3, 0xFF, 0xF1, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E,
|
||||||
|
0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xFF, 0x9F, 0xFC, 0xFF, 0xE7, 0xC0,
|
||||||
|
0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07,
|
||||||
|
0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00,
|
||||||
|
0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xFF, 0x9F,
|
||||||
|
0xFC, 0xFF, 0xE7, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0,
|
||||||
|
0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03,
|
||||||
|
0xE0, 0x1F, 0x00, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x8F, 0xEF, 0xE7,
|
||||||
|
0x81, 0xF7, 0xC0, 0x7B, 0xE0, 0x3D, 0xE0, 0x1F, 0xF0, 0x0F, 0xF8, 0x07,
|
||||||
|
0xFC, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0,
|
||||||
|
0x00, 0xF0, 0x7F, 0xF8, 0x3F, 0xFC, 0x1F, 0xFE, 0x00, 0xFF, 0x00, 0x7F,
|
||||||
|
0x80, 0x3F, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xFC, 0x03, 0xFE, 0x03,
|
||||||
|
0xEF, 0x01, 0xF7, 0xE3, 0xF9, 0xFF, 0xDC, 0x7F, 0xCE, 0x1F, 0xC7, 0xF8,
|
||||||
|
0x07, 0xFC, 0x03, 0xFE, 0x01, 0xFF, 0x00, 0xFF, 0x80, 0x7F, 0xC0, 0x3F,
|
||||||
|
0xE0, 0x1F, 0xF0, 0x0F, 0xF8, 0x07, 0xFC, 0x03, 0xFE, 0x01, 0xFF, 0x00,
|
||||||
|
0xFF, 0x80, 0x7F, 0xC0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
|
||||||
|
0x03, 0xFE, 0x01, 0xFF, 0x00, 0xFF, 0x80, 0x7F, 0xC0, 0x3F, 0xE0, 0x1F,
|
||||||
|
0xF0, 0x0F, 0xF8, 0x07, 0xFC, 0x03, 0xFE, 0x01, 0xFF, 0x00, 0xFF, 0x80,
|
||||||
|
0x7F, 0xC0, 0x3F, 0xE0, 0x1F, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07,
|
||||||
|
0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0,
|
||||||
|
0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C,
|
||||||
|
0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0xFB, 0xFF, 0xFD, 0xFC, 0xF8,
|
||||||
|
0x00, 0xF8, 0x0F, 0x7C, 0x07, 0xBE, 0x07, 0x9F, 0x03, 0xCF, 0x83, 0xC7,
|
||||||
|
0xC1, 0xE3, 0xE1, 0xF1, 0xF0, 0xF0, 0xF8, 0xF8, 0x7C, 0x78, 0x3E, 0x7C,
|
||||||
|
0x1F, 0x3C, 0x0F, 0xBE, 0x07, 0xDE, 0x03, 0xFF, 0x01, 0xFF, 0xC0, 0xFF,
|
||||||
|
0xE0, 0x7F, 0xF0, 0x3F, 0x7C, 0x1F, 0x9E, 0x0F, 0x8F, 0x87, 0xC3, 0xC3,
|
||||||
|
0xE1, 0xE1, 0xF0, 0x78, 0xF8, 0x3C, 0x7C, 0x1F, 0x3E, 0x07, 0x9F, 0x03,
|
||||||
|
0xCF, 0x80, 0xF7, 0xC0, 0x7B, 0xE0, 0x3F, 0xF0, 0x0F, 0xF8, 0x07, 0xC0,
|
||||||
|
0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07,
|
||||||
|
0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8,
|
||||||
|
0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00,
|
||||||
|
0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7F, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0x78, 0x00, 0xFB, 0xE0, 0x07, 0xDF, 0x00, 0x3E, 0xF8, 0x01, 0xF7,
|
||||||
|
0xC0, 0x0F, 0xBE, 0x00, 0xFD, 0xF8, 0x07, 0xEF, 0xC0, 0x3F, 0x7E, 0x01,
|
||||||
|
0xFB, 0xF0, 0x0D, 0xDD, 0xC0, 0xEE, 0xEE, 0x07, 0x77, 0x70, 0x3B, 0xBB,
|
||||||
|
0x81, 0xDD, 0xCC, 0x1C, 0xEE, 0x70, 0xE7, 0x73, 0x87, 0x3B, 0x9C, 0x39,
|
||||||
|
0xDC, 0x61, 0x8E, 0xE3, 0x9C, 0x77, 0x1C, 0xE3, 0xB8, 0xE7, 0x1D, 0xC7,
|
||||||
|
0x30, 0xEE, 0x1B, 0x87, 0x70, 0xFC, 0x3B, 0x87, 0xE1, 0xFC, 0x3E, 0x0F,
|
||||||
|
0xE0, 0xF0, 0x7F, 0x07, 0x83, 0xF8, 0x3C, 0x1F, 0xC1, 0xE0, 0xFE, 0x06,
|
||||||
|
0x07, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xFC,
|
||||||
|
0x0F, 0xFC, 0x0F, 0xFE, 0x0F, 0xFE, 0x0F, 0xFE, 0x0F, 0xFF, 0x0F, 0xF7,
|
||||||
|
0x0F, 0xF7, 0x8F, 0xF3, 0x8F, 0xF3, 0xCF, 0xF3, 0xCF, 0xF1, 0xCF, 0xF1,
|
||||||
|
0xEF, 0xF0, 0xEF, 0xF0, 0xFF, 0xF0, 0x7F, 0xF0, 0x7F, 0xF0, 0x7F, 0xF0,
|
||||||
|
0x3F, 0xF0, 0x3F, 0xF0, 0x1F, 0xF0, 0x1F, 0xF0, 0x1F, 0xF0, 0x0F, 0xF0,
|
||||||
|
0x0F, 0xF0, 0x07, 0xF0, 0x07, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x8F,
|
||||||
|
0xEF, 0xE7, 0xC0, 0xF7, 0xC0, 0x7F, 0xE0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07,
|
||||||
|
0xF8, 0x03, 0xFC, 0x01, 0xFE, 0x00, 0xFF, 0x00, 0x7F, 0x80, 0x3F, 0xC0,
|
||||||
|
0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xFE, 0x00, 0xFF,
|
||||||
|
0x00, 0x7F, 0x80, 0x3F, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xFC, 0x03,
|
||||||
|
0xFE, 0x03, 0xEF, 0x01, 0xE7, 0xE1, 0xF1, 0xFF, 0xF0, 0x7F, 0xF0, 0x1F,
|
||||||
|
0xF0, 0xFF, 0xE0, 0xFF, 0xF8, 0xFF, 0xFC, 0xF9, 0xFE, 0xF8, 0x1E, 0xF8,
|
||||||
|
0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8,
|
||||||
|
0x0F, 0xF8, 0x1F, 0xF8, 0x3E, 0xFF, 0xFE, 0xFF, 0xFC, 0xFF, 0xF0, 0xF8,
|
||||||
|
0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8,
|
||||||
|
0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF8,
|
||||||
|
0x00, 0xF8, 0x00, 0xF8, 0x00, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x8F,
|
||||||
|
0xEF, 0xE7, 0xC0, 0xF7, 0xC0, 0x7F, 0xE0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07,
|
||||||
|
0xF8, 0x03, 0xFC, 0x01, 0xFE, 0x00, 0xFF, 0x00, 0x7F, 0x80, 0x3F, 0xC0,
|
||||||
|
0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xFE, 0x00, 0xFF,
|
||||||
|
0x00, 0x7F, 0x80, 0x3F, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xFC, 0x03,
|
||||||
|
0xFE, 0x03, 0xEF, 0x01, 0xE7, 0xE1, 0xF1, 0xFF, 0xF0, 0x7F, 0xF0, 0x1F,
|
||||||
|
0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x60,
|
||||||
|
0x00, 0x10, 0xFF, 0xC0, 0x7F, 0xFC, 0x3F, 0xFF, 0x1F, 0x3F, 0xCF, 0x81,
|
||||||
|
0xE7, 0xC0, 0xFB, 0xE0, 0x3D, 0xF0, 0x1E, 0xF8, 0x0F, 0x7C, 0x07, 0xBE,
|
||||||
|
0x03, 0xDF, 0x03, 0xEF, 0x81, 0xF7, 0xC3, 0xF3, 0xFF, 0xF9, 0xFF, 0xF8,
|
||||||
|
0xFF, 0xF0, 0x7C, 0x7C, 0x3E, 0x1E, 0x1F, 0x0F, 0x0F, 0x87, 0xC7, 0xC1,
|
||||||
|
0xE3, 0xE0, 0xF1, 0xF0, 0x78, 0xF8, 0x3E, 0x7C, 0x0F, 0x3E, 0x07, 0x9F,
|
||||||
|
0x03, 0xCF, 0x80, 0xF7, 0xC0, 0x7B, 0xE0, 0x3D, 0xF0, 0x1F, 0x0F, 0xC0,
|
||||||
|
0x3F, 0xF0, 0x7F, 0xF8, 0xFC, 0xFC, 0xF0, 0x3C, 0xF0, 0x3E, 0xF0, 0x1E,
|
||||||
|
0xF0, 0x1E, 0xF0, 0x1C, 0xF0, 0x00, 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00,
|
||||||
|
0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x01, 0xF8,
|
||||||
|
0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3E, 0x20, 0x1E, 0xF0, 0x1E, 0xF0, 0x1F,
|
||||||
|
0xF0, 0x1F, 0xF0, 0x1E, 0xF8, 0x1E, 0x7C, 0x3E, 0x3F, 0xFC, 0x3F, 0xF8,
|
||||||
|
0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x78, 0x00,
|
||||||
|
0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C,
|
||||||
|
0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00,
|
||||||
|
0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07,
|
||||||
|
0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0,
|
||||||
|
0x03, 0xC0, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xFE, 0x00, 0xFF, 0x00,
|
||||||
|
0x7F, 0x80, 0x3F, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC,
|
||||||
|
0x01, 0xFE, 0x00, 0xFF, 0x00, 0x7F, 0x80, 0x3F, 0xC0, 0x1F, 0xE0, 0x0F,
|
||||||
|
0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xFE, 0x00, 0xFF, 0x00, 0x7F, 0x80,
|
||||||
|
0x3F, 0xC0, 0x1F, 0xE0, 0x0F, 0xF8, 0x07, 0xFC, 0x03, 0xDE, 0x03, 0xEF,
|
||||||
|
0x81, 0xE7, 0xE1, 0xF1, 0xFF, 0xF0, 0x7F, 0xF8, 0x1F, 0xF0, 0xF0, 0x03,
|
||||||
|
0xFC, 0x00, 0xFF, 0x80, 0x79, 0xE0, 0x1E, 0x78, 0x07, 0x9E, 0x01, 0xE7,
|
||||||
|
0x80, 0x78, 0xF0, 0x3C, 0x3C, 0x0F, 0x0F, 0x03, 0xC3, 0xC0, 0xF0, 0xF0,
|
||||||
|
0x38, 0x1E, 0x1E, 0x07, 0x87, 0x81, 0xE1, 0xE0, 0x78, 0x78, 0x0F, 0x1C,
|
||||||
|
0x03, 0xCF, 0x00, 0xF3, 0xC0, 0x3C, 0xF0, 0x0F, 0x38, 0x01, 0xFE, 0x00,
|
||||||
|
0x7F, 0x80, 0x1F, 0xE0, 0x07, 0xF8, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F,
|
||||||
|
0xC0, 0x03, 0xF0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x07, 0x80, 0xF0, 0x0E,
|
||||||
|
0x03, 0xDC, 0x03, 0x80, 0xF7, 0x01, 0xE0, 0x3D, 0xE0, 0x78, 0x0F, 0x78,
|
||||||
|
0x1F, 0x03, 0x9E, 0x07, 0xC0, 0xE7, 0x81, 0xF0, 0x38, 0xE0, 0xFC, 0x1E,
|
||||||
|
0x38, 0x3F, 0x07, 0x8E, 0x0E, 0xE1, 0xE3, 0xC3, 0xB8, 0x78, 0xF0, 0xEE,
|
||||||
|
0x1C, 0x3C, 0x7B, 0x87, 0x07, 0x1C, 0xE1, 0xC1, 0xC7, 0x1C, 0xF0, 0x71,
|
||||||
|
0xC7, 0x3C, 0x1E, 0x71, 0xCF, 0x07, 0x9C, 0x73, 0x81, 0xEF, 0x1C, 0xE0,
|
||||||
|
0x3B, 0x87, 0xB8, 0x0E, 0xE0, 0xEE, 0x03, 0xB8, 0x3F, 0x80, 0xEE, 0x0F,
|
||||||
|
0xE0, 0x3F, 0x83, 0xF0, 0x0F, 0xC0, 0xFC, 0x01, 0xF0, 0x1F, 0x00, 0x7C,
|
||||||
|
0x07, 0xC0, 0x1F, 0x01, 0xF0, 0x07, 0xC0, 0x7C, 0x01, 0xE0, 0x1E, 0x00,
|
||||||
|
0x78, 0x03, 0x80, 0x1E, 0x00, 0xE0, 0xF0, 0x07, 0xF8, 0x07, 0xDE, 0x03,
|
||||||
|
0xCF, 0x01, 0xE7, 0xC1, 0xE1, 0xE0, 0xF0, 0xF0, 0xF0, 0x3C, 0x78, 0x1E,
|
||||||
|
0x3C, 0x07, 0xBC, 0x03, 0xDE, 0x01, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x00,
|
||||||
|
0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x03, 0xF0, 0x01, 0xFC, 0x01, 0xFE,
|
||||||
|
0x00, 0xFF, 0x00, 0x7B, 0xC0, 0x79, 0xE0, 0x3C, 0x78, 0x3C, 0x3C, 0x1E,
|
||||||
|
0x1F, 0x0F, 0x07, 0x8F, 0x03, 0xC7, 0x80, 0xF7, 0xC0, 0x7B, 0xC0, 0x1F,
|
||||||
|
0xE0, 0x0F, 0xF8, 0x03, 0xDE, 0x00, 0xF7, 0x80, 0x3C, 0xF0, 0x1E, 0x3C,
|
||||||
|
0x07, 0x8F, 0x01, 0xE1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x03, 0xC7,
|
||||||
|
0x80, 0xF1, 0xE0, 0x3C, 0x78, 0x07, 0x3C, 0x01, 0xEF, 0x00, 0x7B, 0xC0,
|
||||||
|
0x0F, 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01,
|
||||||
|
0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C,
|
||||||
|
0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00,
|
||||||
|
0x07, 0xC0, 0x7F, 0xFE, 0xFF, 0xFD, 0xFF, 0xF0, 0x01, 0xE0, 0x07, 0xC0,
|
||||||
|
0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F,
|
||||||
|
0x00, 0x3E, 0x00, 0x78, 0x00, 0xF0, 0x03, 0xE0, 0x07, 0x80, 0x0F, 0x00,
|
||||||
|
0x3E, 0x00, 0x78, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x80, 0x1F, 0x00, 0x3C,
|
||||||
|
0x00, 0x78, 0x01, 0xF0, 0x03, 0xC0, 0x07, 0x80, 0x1F, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1F, 0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF8,
|
||||||
|
0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F,
|
||||||
|
0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xC3,
|
||||||
|
0xE1, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xFF, 0xFE, 0xF0, 0x0F,
|
||||||
|
0x00, 0x70, 0x07, 0x80, 0x78, 0x03, 0x80, 0x38, 0x03, 0xC0, 0x3C, 0x01,
|
||||||
|
0xC0, 0x1C, 0x01, 0xE0, 0x1E, 0x00, 0xE0, 0x0F, 0x00, 0xF0, 0x0F, 0x00,
|
||||||
|
0x70, 0x07, 0x80, 0x78, 0x03, 0x80, 0x38, 0x03, 0xC0, 0x3C, 0x01, 0xC0,
|
||||||
|
0x1E, 0x01, 0xE0, 0x1E, 0x00, 0xE0, 0x0F, 0x00, 0xF0, 0x07, 0xFF, 0xFF,
|
||||||
|
0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xC3, 0xE1, 0xF0,
|
||||||
|
0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x3E,
|
||||||
|
0x1F, 0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87,
|
||||||
|
0xC3, 0xE1, 0xF0, 0xFF, 0xFF, 0xFE, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x80,
|
||||||
|
0x7F, 0x00, 0xEF, 0x03, 0xDE, 0x07, 0x9C, 0x0E, 0x3C, 0x3C, 0x78, 0x78,
|
||||||
|
0x79, 0xE0, 0xF3, 0xC0, 0xEF, 0x01, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
|
||||||
|
0xF0, 0xF1, 0xE1, 0xC1, 0xC3, 0x83, 0x06, 0x0F, 0x81, 0xFF, 0x1F, 0xFD,
|
||||||
|
0xF3, 0xEF, 0x0F, 0x78, 0x7F, 0xC1, 0xE2, 0x0F, 0x00, 0x78, 0x0F, 0xC1,
|
||||||
|
0xFE, 0x3E, 0xF3, 0xE7, 0xBC, 0x3F, 0xE1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83,
|
||||||
|
0xFC, 0x3F, 0xF3, 0xFF, 0xF7, 0xBF, 0xBC, 0xF9, 0xE0, 0xF0, 0x03, 0xC0,
|
||||||
|
0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0,
|
||||||
|
0x03, 0xCF, 0x8F, 0x7F, 0x3F, 0xFE, 0xFC, 0xFB, 0xC1, 0xEF, 0x07, 0xFC,
|
||||||
|
0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF,
|
||||||
|
0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x07, 0xFC, 0x1E, 0xF8, 0x7B,
|
||||||
|
0xFF, 0xEF, 0x7F, 0x3C, 0xF8, 0x1F, 0x81, 0xFF, 0x1F, 0xFD, 0xF1, 0xEF,
|
||||||
|
0x0F, 0x78, 0x3B, 0xC1, 0xDE, 0x0F, 0xF0, 0x7F, 0x80, 0x3C, 0x01, 0xE0,
|
||||||
|
0x0F, 0x00, 0x78, 0x03, 0xC1, 0xFE, 0x0F, 0xF0, 0x77, 0x83, 0xBC, 0x3D,
|
||||||
|
0xF1, 0xE7, 0xFF, 0x3F, 0xF0, 0xFF, 0x00, 0x00, 0x78, 0x03, 0xC0, 0x1E,
|
||||||
|
0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0xF3, 0xCF,
|
||||||
|
0xFE, 0xFF, 0xFF, 0xDF, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83,
|
||||||
|
0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F,
|
||||||
|
0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x8F, 0xBF, 0xFD, 0xFF, 0xE7, 0xEF, 0x1F,
|
||||||
|
0x81, 0xFF, 0x1F, 0xFD, 0xF1, 0xEF, 0x0F, 0x78, 0x3F, 0xC1, 0xFE, 0x0F,
|
||||||
|
0xF0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x78, 0x03, 0xC0, 0x1E,
|
||||||
|
0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x3F, 0xF1, 0xE7, 0xFF, 0x3F, 0xF0, 0x7F,
|
||||||
|
0x00, 0x01, 0x83, 0xF1, 0xFC, 0x7F, 0x1E, 0x0F, 0x83, 0xE0, 0xF8, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFC, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83,
|
||||||
|
0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8,
|
||||||
|
0x3E, 0x0F, 0x83, 0xE0, 0x07, 0xC3, 0x0F, 0xF3, 0x8F, 0xFF, 0xEF, 0x0F,
|
||||||
|
0x87, 0x87, 0x83, 0xC1, 0xC1, 0xC0, 0xE0, 0xE0, 0x70, 0x70, 0x38, 0x38,
|
||||||
|
0x1C, 0x1E, 0x0E, 0x0F, 0x0F, 0x07, 0x87, 0x81, 0xFF, 0x80, 0x7F, 0x80,
|
||||||
|
0x3F, 0x80, 0x38, 0x00, 0x38, 0x00, 0x1F, 0x00, 0x0F, 0xFE, 0x07, 0xFF,
|
||||||
|
0xC0, 0xFF, 0xE1, 0xC0, 0xF9, 0xE0, 0x3C, 0xE0, 0x0E, 0x78, 0x0F, 0x3E,
|
||||||
|
0x0F, 0x9F, 0xFF, 0x87, 0xFF, 0x80, 0xFF, 0x00, 0xF0, 0x07, 0x80, 0x3C,
|
||||||
|
0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x87,
|
||||||
|
0xBC, 0xFF, 0xEF, 0xFF, 0xEF, 0xFC, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F,
|
||||||
|
0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0,
|
||||||
|
0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F,
|
||||||
|
0xFF, 0xFF, 0xF0, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0F, 0x0F, 0x0F, 0x0F, 0x00,
|
||||||
|
0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||||
|
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||||
|
0x0F, 0x0F, 0x1F, 0xBF, 0xFE, 0xFC, 0x70, 0xF0, 0x01, 0xE0, 0x03, 0xC0,
|
||||||
|
0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01,
|
||||||
|
0xE0, 0x7F, 0xC0, 0xF7, 0x83, 0xEF, 0x07, 0x9E, 0x1E, 0x3C, 0x7C, 0x78,
|
||||||
|
0xF0, 0xF3, 0xE1, 0xEF, 0x83, 0xDF, 0x07, 0xFE, 0x0F, 0xFC, 0x1F, 0xBC,
|
||||||
|
0x3E, 0x78, 0x78, 0xF8, 0xF0, 0xF1, 0xE1, 0xE3, 0xC1, 0xE7, 0x83, 0xCF,
|
||||||
|
0x07, 0x9E, 0x07, 0xBC, 0x0F, 0x78, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xF1, 0xE0, 0xF9, 0xEF, 0xE7, 0xFB, 0xFF, 0xFF, 0xF7,
|
||||||
|
0xC3, 0xF1, 0xEF, 0x07, 0x81, 0xFE, 0x0F, 0x03, 0xFC, 0x1E, 0x07, 0xF8,
|
||||||
|
0x3C, 0x0F, 0xF0, 0x78, 0x1F, 0xE0, 0xF0, 0x3F, 0xC1, 0xE0, 0x7F, 0x83,
|
||||||
|
0xC0, 0xFF, 0x07, 0x81, 0xFE, 0x0F, 0x03, 0xFC, 0x1E, 0x07, 0xF8, 0x3C,
|
||||||
|
0x0F, 0xF0, 0x78, 0x1F, 0xE0, 0xF0, 0x3F, 0xC1, 0xE0, 0x7F, 0x83, 0xC0,
|
||||||
|
0xFF, 0x07, 0x81, 0xFE, 0x0F, 0x03, 0xFC, 0x1E, 0x07, 0x80, 0xF1, 0xF7,
|
||||||
|
0x9F, 0xFF, 0xFF, 0xFD, 0xFF, 0x87, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0,
|
||||||
|
0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F,
|
||||||
|
0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xE0,
|
||||||
|
0x1F, 0x81, 0xFF, 0x1F, 0xFD, 0xF1, 0xEF, 0x0F, 0x78, 0x3F, 0xC1, 0xFE,
|
||||||
|
0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1,
|
||||||
|
0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x3F, 0xF1, 0xE7, 0xFF, 0x3F, 0xF0,
|
||||||
|
0x7F, 0x00, 0xF1, 0xE3, 0xDF, 0xCF, 0xFF, 0xBF, 0x3E, 0xF0, 0x7B, 0xC1,
|
||||||
|
0xFF, 0x07, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0,
|
||||||
|
0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x7F, 0xC1, 0xFF, 0x07, 0xBE,
|
||||||
|
0x1E, 0xFF, 0xFB, 0xFF, 0xCF, 0x3E, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F,
|
||||||
|
0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x00, 0x1E, 0x79, 0xFF, 0xDF, 0xFE,
|
||||||
|
0xFB, 0xFF, 0x87, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC,
|
||||||
|
0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83,
|
||||||
|
0xFC, 0x1F, 0xF1, 0xF7, 0xFF, 0xBF, 0xFC, 0xFD, 0xE0, 0x0F, 0x00, 0x78,
|
||||||
|
0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0xF0, 0xFC, 0xFF, 0x7F,
|
||||||
|
0xFF, 0xFE, 0x7E, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0,
|
||||||
|
0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F,
|
||||||
|
0x00, 0x0F, 0x81, 0xFE, 0x1F, 0xF8, 0xF1, 0xE7, 0x07, 0x38, 0x39, 0xC1,
|
||||||
|
0x8F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x80, 0x7E, 0x01, 0xF0,
|
||||||
|
0x07, 0xC0, 0x1E, 0x30, 0x7F, 0x83, 0xFC, 0x1E, 0xF1, 0xE7, 0xFF, 0x1F,
|
||||||
|
0xF0, 0x7F, 0x00, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x0F, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xCF, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C,
|
||||||
|
0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x81,
|
||||||
|
0xFC, 0x7F, 0x0F, 0xC0, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07,
|
||||||
|
0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF,
|
||||||
|
0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xF1,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xBD, 0xF9, 0xE0, 0xF0, 0x7F, 0xC1, 0xEF, 0x07, 0xBC,
|
||||||
|
0x1E, 0xF0, 0x79, 0xE1, 0xE7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC3,
|
||||||
|
0x8F, 0x0F, 0x38, 0x3C, 0xE0, 0xF7, 0x83, 0xDE, 0x07, 0x78, 0x1D, 0xC0,
|
||||||
|
0x77, 0x01, 0xFC, 0x07, 0xF0, 0x0F, 0xC0, 0x3E, 0x00, 0xF8, 0x00, 0xF0,
|
||||||
|
0x70, 0x7F, 0x83, 0x83, 0xFC, 0x3E, 0x1E, 0xE1, 0xF0, 0xE7, 0x0F, 0x87,
|
||||||
|
0x38, 0x7C, 0x39, 0xC3, 0xE1, 0xCF, 0x1B, 0x1E, 0x79, 0xDC, 0xF1, 0xCE,
|
||||||
|
0xE7, 0x0E, 0x77, 0x38, 0x73, 0xB9, 0xC3, 0x9C, 0xCE, 0x1C, 0xC7, 0x70,
|
||||||
|
0xFE, 0x3F, 0x83, 0xF1, 0xF8, 0x1F, 0x8F, 0xC0, 0xFC, 0x3E, 0x07, 0xC1,
|
||||||
|
0xF0, 0x3E, 0x0F, 0x81, 0xF0, 0x7C, 0x0F, 0x83, 0xC0, 0x3C, 0x0E, 0x00,
|
||||||
|
0xF8, 0x1E, 0xF0, 0x79, 0xE0, 0xF1, 0xE3, 0xC3, 0xC7, 0x83, 0xCE, 0x07,
|
||||||
|
0xBC, 0x07, 0xF8, 0x0F, 0xE0, 0x0F, 0xC0, 0x1F, 0x00, 0x3E, 0x00, 0x7C,
|
||||||
|
0x01, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x1E, 0xF0, 0x3D, 0xE0, 0xF1, 0xE1,
|
||||||
|
0xE3, 0xC7, 0x83, 0xCF, 0x07, 0xBE, 0x07, 0x80, 0xF8, 0x1E, 0xF0, 0x7D,
|
||||||
|
0xE0, 0xF3, 0xC1, 0xE7, 0x83, 0xC7, 0x87, 0x8F, 0x0F, 0x1E, 0x3C, 0x3C,
|
||||||
|
0x78, 0x38, 0xF0, 0x79, 0xE0, 0xF3, 0x81, 0xE7, 0x01, 0xDE, 0x03, 0xBC,
|
||||||
|
0x07, 0x78, 0x0F, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7C, 0x00,
|
||||||
|
0xF8, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x80, 0x7F, 0x00, 0xFE, 0x01, 0xF0,
|
||||||
|
0x03, 0x00, 0x00, 0x7F, 0xF7, 0xFF, 0x7F, 0xF7, 0xFE, 0x01, 0xE0, 0x3E,
|
||||||
|
0x03, 0xC0, 0x3C, 0x07, 0x80, 0x78, 0x0F, 0x80, 0xF0, 0x1F, 0x01, 0xE0,
|
||||||
|
0x1E, 0x03, 0xC0, 0x3C, 0x07, 0xC0, 0x78, 0x07, 0x80, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xF0, 0x0F, 0x8F, 0xCF, 0xE7, 0xC3, 0xC1, 0xE0, 0xF0, 0x78, 0x3C,
|
||||||
|
0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x3E, 0x3E, 0x1E,
|
||||||
|
0x0F, 0x83, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0,
|
||||||
|
0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xF9, 0xFC, 0x7E, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x7E, 0x3F, 0x07, 0xC3, 0xE1, 0xF0,
|
||||||
|
0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x1E,
|
||||||
|
0x0F, 0x07, 0xE1, 0xF0, 0xF8, 0xF8, 0x78, 0x7C, 0x3E, 0x1F, 0x0F, 0x87,
|
||||||
|
0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xCF, 0xC7, 0xE3,
|
||||||
|
0xE0, 0x0C, 0x00, 0x7E, 0x09, 0xFF, 0xFF, 0xFF, 0xE6, 0x1F, 0x80, 0x0E,
|
||||||
|
0x00 };
|
||||||
|
|
||||||
|
const GFXglyph Oswald_Regular20pt7bGlyphs[] PROGMEM = {
|
||||||
|
{ 0, 1, 1, 9, 0, 0 }, // 0x20 ' '
|
||||||
|
{ 1, 4, 32, 8, 2, -31 }, // 0x21 '!'
|
||||||
|
{ 17, 9, 10, 10, 1, -31 }, // 0x22 '"'
|
||||||
|
{ 29, 17, 32, 19, 1, -31 }, // 0x23 '#'
|
||||||
|
{ 97, 16, 38, 19, 2, -34 }, // 0x24 '$'
|
||||||
|
{ 173, 32, 32, 35, 1, -31 }, // 0x25 '%'
|
||||||
|
{ 301, 20, 32, 24, 2, -31 }, // 0x26 '&'
|
||||||
|
{ 381, 4, 10, 5, 1, -31 }, // 0x27 '''
|
||||||
|
{ 386, 8, 40, 12, 3, -31 }, // 0x28 '('
|
||||||
|
{ 426, 8, 40, 10, 1, -31 }, // 0x29 ')'
|
||||||
|
{ 466, 13, 14, 16, 2, -31 }, // 0x2A '*'
|
||||||
|
{ 489, 14, 16, 16, 1, -23 }, // 0x2B '+'
|
||||||
|
{ 517, 4, 10, 7, 2, -4 }, // 0x2C ','
|
||||||
|
{ 522, 9, 3, 13, 2, -12 }, // 0x2D '-'
|
||||||
|
{ 526, 4, 5, 7, 2, -4 }, // 0x2E '.'
|
||||||
|
{ 529, 12, 32, 14, 1, -31 }, // 0x2F '/'
|
||||||
|
{ 577, 16, 32, 20, 2, -31 }, // 0x30 '0'
|
||||||
|
{ 641, 10, 32, 16, 1, -31 }, // 0x31 '1'
|
||||||
|
{ 681, 15, 32, 19, 2, -31 }, // 0x32 '2'
|
||||||
|
{ 741, 15, 32, 19, 2, -31 }, // 0x33 '3'
|
||||||
|
{ 801, 16, 32, 19, 2, -31 }, // 0x34 '4'
|
||||||
|
{ 865, 15, 32, 19, 2, -31 }, // 0x35 '5'
|
||||||
|
{ 925, 16, 32, 20, 2, -31 }, // 0x36 '6'
|
||||||
|
{ 989, 13, 32, 15, 1, -31 }, // 0x37 '7'
|
||||||
|
{ 1041, 16, 32, 20, 2, -31 }, // 0x38 '8'
|
||||||
|
{ 1105, 15, 32, 20, 2, -31 }, // 0x39 '9'
|
||||||
|
{ 1165, 5, 17, 8, 2, -20 }, // 0x3A ':'
|
||||||
|
{ 1176, 5, 24, 8, 2, -21 }, // 0x3B ';'
|
||||||
|
{ 1191, 11, 21, 15, 1, -21 }, // 0x3C '<'
|
||||||
|
{ 1220, 12, 10, 16, 2, -20 }, // 0x3D '='
|
||||||
|
{ 1235, 12, 21, 15, 2, -21 }, // 0x3E '>'
|
||||||
|
{ 1267, 15, 32, 19, 2, -31 }, // 0x3F '?'
|
||||||
|
{ 1327, 32, 37, 35, 2, -31 }, // 0x40 '@'
|
||||||
|
{ 1475, 18, 32, 19, 1, -31 }, // 0x41 'A'
|
||||||
|
{ 1547, 17, 32, 21, 2, -31 }, // 0x42 'B'
|
||||||
|
{ 1615, 16, 32, 20, 2, -31 }, // 0x43 'C'
|
||||||
|
{ 1679, 17, 32, 21, 2, -31 }, // 0x44 'D'
|
||||||
|
{ 1747, 13, 32, 16, 2, -31 }, // 0x45 'E'
|
||||||
|
{ 1799, 13, 32, 15, 2, -31 }, // 0x46 'F'
|
||||||
|
{ 1851, 17, 32, 21, 2, -31 }, // 0x47 'G'
|
||||||
|
{ 1919, 17, 32, 22, 2, -31 }, // 0x48 'H'
|
||||||
|
{ 1987, 4, 32, 10, 3, -31 }, // 0x49 'I'
|
||||||
|
{ 2003, 9, 33, 12, 0, -31 }, // 0x4A 'J'
|
||||||
|
{ 2041, 17, 32, 19, 2, -31 }, // 0x4B 'K'
|
||||||
|
{ 2109, 13, 32, 16, 2, -31 }, // 0x4C 'L'
|
||||||
|
{ 2161, 21, 32, 26, 2, -31 }, // 0x4D 'M'
|
||||||
|
{ 2245, 16, 32, 21, 2, -31 }, // 0x4E 'N'
|
||||||
|
{ 2309, 17, 32, 21, 2, -31 }, // 0x4F 'O'
|
||||||
|
{ 2377, 16, 32, 19, 2, -31 }, // 0x50 'P'
|
||||||
|
{ 2441, 17, 38, 21, 2, -31 }, // 0x51 'Q'
|
||||||
|
{ 2522, 17, 32, 20, 2, -31 }, // 0x52 'R'
|
||||||
|
{ 2590, 16, 32, 19, 2, -31 }, // 0x53 'S'
|
||||||
|
{ 2654, 15, 32, 16, 1, -31 }, // 0x54 'T'
|
||||||
|
{ 2714, 17, 32, 21, 2, -31 }, // 0x55 'U'
|
||||||
|
{ 2782, 18, 32, 20, 1, -31 }, // 0x56 'V'
|
||||||
|
{ 2854, 26, 32, 29, 1, -31 }, // 0x57 'W'
|
||||||
|
{ 2958, 17, 32, 19, 1, -31 }, // 0x58 'X'
|
||||||
|
{ 3026, 18, 32, 19, 0, -31 }, // 0x59 'Y'
|
||||||
|
{ 3098, 15, 32, 16, 1, -31 }, // 0x5A 'Z'
|
||||||
|
{ 3158, 9, 39, 13, 2, -31 }, // 0x5B '['
|
||||||
|
{ 3202, 12, 32, 14, 1, -31 }, // 0x5C '\'
|
||||||
|
{ 3250, 9, 39, 12, 1, -31 }, // 0x5D ']'
|
||||||
|
{ 3294, 15, 13, 17, 1, -31 }, // 0x5E '^'
|
||||||
|
{ 3319, 13, 3, 13, 0, 3 }, // 0x5F '_'
|
||||||
|
{ 3324, 7, 8, 11, 2, -31 }, // 0x60 '`'
|
||||||
|
{ 3331, 13, 23, 17, 2, -22 }, // 0x61 'a'
|
||||||
|
{ 3369, 14, 32, 18, 2, -31 }, // 0x62 'b'
|
||||||
|
{ 3425, 13, 23, 16, 2, -22 }, // 0x63 'c'
|
||||||
|
{ 3463, 13, 32, 17, 2, -31 }, // 0x64 'd'
|
||||||
|
{ 3515, 13, 23, 16, 2, -22 }, // 0x65 'e'
|
||||||
|
{ 3553, 10, 31, 11, 1, -30 }, // 0x66 'f'
|
||||||
|
{ 3592, 17, 30, 17, 1, -22 }, // 0x67 'g'
|
||||||
|
{ 3656, 13, 32, 17, 2, -31 }, // 0x68 'h'
|
||||||
|
{ 3708, 5, 30, 9, 2, -29 }, // 0x69 'i'
|
||||||
|
{ 3727, 8, 36, 9, -1, -29 }, // 0x6A 'j'
|
||||||
|
{ 3763, 15, 32, 17, 2, -31 }, // 0x6B 'k'
|
||||||
|
{ 3823, 5, 32, 9, 2, -31 }, // 0x6C 'l'
|
||||||
|
{ 3843, 23, 23, 27, 2, -22 }, // 0x6D 'm'
|
||||||
|
{ 3910, 13, 23, 17, 2, -22 }, // 0x6E 'n'
|
||||||
|
{ 3948, 13, 23, 17, 2, -22 }, // 0x6F 'o'
|
||||||
|
{ 3986, 14, 30, 17, 2, -22 }, // 0x70 'p'
|
||||||
|
{ 4039, 13, 30, 17, 2, -22 }, // 0x71 'q'
|
||||||
|
{ 4088, 10, 23, 13, 2, -22 }, // 0x72 'r'
|
||||||
|
{ 4117, 13, 23, 15, 1, -22 }, // 0x73 's'
|
||||||
|
{ 4155, 10, 29, 12, 1, -28 }, // 0x74 't'
|
||||||
|
{ 4192, 13, 23, 17, 2, -22 }, // 0x75 'u'
|
||||||
|
{ 4230, 14, 23, 15, 1, -22 }, // 0x76 'v'
|
||||||
|
{ 4271, 21, 23, 23, 1, -22 }, // 0x77 'w'
|
||||||
|
{ 4332, 15, 23, 15, 0, -22 }, // 0x78 'x'
|
||||||
|
{ 4376, 15, 29, 15, 0, -22 }, // 0x79 'y'
|
||||||
|
{ 4431, 12, 23, 14, 1, -22 }, // 0x7A 'z'
|
||||||
|
{ 4466, 9, 39, 12, 2, -31 }, // 0x7B '{'
|
||||||
|
{ 4510, 4, 38, 9, 3, -31 }, // 0x7C '|'
|
||||||
|
{ 4529, 9, 39, 13, 2, -31 }, // 0x7D '}'
|
||||||
|
{ 4573, 15, 6, 18, 1, -19 } }; // 0x7E '~'
|
||||||
|
|
||||||
|
const GFXfont Oswald_Regular20pt7b PROGMEM = {
|
||||||
|
(uint8_t *)Oswald_Regular20pt7bBitmaps,
|
||||||
|
(GFXglyph *)Oswald_Regular20pt7bGlyphs,
|
||||||
|
0x20, 0x7E, 58 };
|
||||||
|
|
||||||
|
// Approx. 5257 bytes
|
959
src/fonts/oswald-30.h
Normal file
959
src/fonts/oswald-30.h
Normal file
@ -0,0 +1,959 @@
|
|||||||
|
const uint8_t Oswald_Regular30pt7bBitmaps[] PROGMEM = {
|
||||||
|
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x7D, 0xF7,
|
||||||
|
0xDE, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE3,
|
||||||
|
0x8E, 0x30, 0xC3, 0x0C, 0x30, 0xC0, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFC, 0xFF, 0xF3, 0xFF, 0xCF, 0xFE, 0x3F, 0xF8, 0xFB, 0xE3, 0xEF,
|
||||||
|
0x8F, 0xBE, 0x3E, 0xF8, 0xFB, 0xC3, 0xEF, 0x0F, 0x3C, 0x3C, 0xF0, 0xF3,
|
||||||
|
0xC3, 0xCF, 0x0F, 0x00, 0x01, 0xF8, 0x3F, 0x80, 0xFC, 0x1F, 0x80, 0xFE,
|
||||||
|
0x0F, 0xC0, 0x7F, 0x07, 0xE0, 0x3F, 0x83, 0xF0, 0x1F, 0x81, 0xF8, 0x0F,
|
||||||
|
0xC1, 0xFC, 0x07, 0xE0, 0xFE, 0x03, 0xF0, 0x7E, 0x03, 0xF8, 0x3F, 0x01,
|
||||||
|
0xFC, 0x1F, 0x80, 0xFC, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x3F, 0x07, 0xF0,
|
||||||
|
0x1F, 0x83, 0xF8, 0x0F, 0xC1, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x7E, 0x0F,
|
||||||
|
0xE0, 0x3F, 0x07, 0xE0, 0x3F, 0x83, 0xF0, 0x1F, 0xC1, 0xF8, 0x0F, 0xC0,
|
||||||
|
0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0x07, 0xE0, 0x3F, 0x03, 0xF0, 0x1F,
|
||||||
|
0x81, 0xF8, 0x0F, 0xC1, 0xFC, 0x07, 0xE0, 0xFE, 0x03, 0xF0, 0x7E, 0x03,
|
||||||
|
0xF8, 0x3F, 0x01, 0xFC, 0x1F, 0x80, 0xFC, 0x0F, 0xC0, 0x7E, 0x07, 0xE0,
|
||||||
|
0x3F, 0x07, 0xF0, 0x1F, 0x83, 0xF8, 0x0F, 0xC1, 0xF8, 0x0F, 0xE0, 0xFC,
|
||||||
|
0x07, 0xF0, 0x7E, 0x03, 0xF8, 0x3F, 0x01, 0xF8, 0x3F, 0x80, 0x00, 0x18,
|
||||||
|
0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0xFF,
|
||||||
|
0x00, 0x07, 0xFF, 0xC0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF8, 0x3F, 0xFF,
|
||||||
|
0xF8, 0x3F, 0xC3, 0xFC, 0x7F, 0x00, 0xFC, 0x7E, 0x00, 0xFE, 0x7E, 0x00,
|
||||||
|
0x7E, 0xFC, 0x00, 0x7E, 0xFC, 0x00, 0x7E, 0xFC, 0x00, 0x3E, 0xFE, 0x00,
|
||||||
|
0x3F, 0x7E, 0x00, 0x20, 0x7E, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x80,
|
||||||
|
0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x0F, 0xFC,
|
||||||
|
0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF,
|
||||||
|
0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x07,
|
||||||
|
0xFC, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00,
|
||||||
|
0x7F, 0x04, 0x00, 0x7F, 0x7C, 0x00, 0x3F, 0xFC, 0x00, 0x3F, 0xFE, 0x00,
|
||||||
|
0x3F, 0x7E, 0x00, 0x3F, 0x7E, 0x00, 0x3F, 0x7E, 0x00, 0x3F, 0x7F, 0x00,
|
||||||
|
0x3F, 0x3F, 0x80, 0x7F, 0x3F, 0xC0, 0xFE, 0x1F, 0xFF, 0xFE, 0x1F, 0xFF,
|
||||||
|
0xFC, 0x0F, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xC0, 0x00, 0x06,
|
||||||
|
0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06,
|
||||||
|
0x00, 0x03, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x0F, 0xFE, 0x00, 0x0F, 0x80,
|
||||||
|
0x00, 0x1F, 0xFF, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0xFF, 0x80, 0x1F, 0x80,
|
||||||
|
0x00, 0x7F, 0xFF, 0x80, 0x1F, 0x00, 0x00, 0x7E, 0x0F, 0xC0, 0x1F, 0x00,
|
||||||
|
0x00, 0x7C, 0x0F, 0xC0, 0x3F, 0x00, 0x00, 0xFC, 0x07, 0xC0, 0x3F, 0x00,
|
||||||
|
0x00, 0xFC, 0x07, 0xC0, 0x3E, 0x00, 0x00, 0xFC, 0x07, 0xE0, 0x3E, 0x00,
|
||||||
|
0x00, 0xFC, 0x07, 0xE0, 0x7E, 0x00, 0x00, 0xFC, 0x07, 0xE0, 0x7C, 0x00,
|
||||||
|
0x00, 0xFC, 0x07, 0xE0, 0x7C, 0x00, 0x00, 0xFC, 0x07, 0xE0, 0xFC, 0x00,
|
||||||
|
0x00, 0xFC, 0x07, 0xE0, 0xFC, 0x00, 0x00, 0xFC, 0x07, 0xE0, 0xF8, 0x00,
|
||||||
|
0x00, 0xFC, 0x07, 0xC0, 0xF8, 0x00, 0x00, 0xFC, 0x07, 0xC1, 0xF8, 0x00,
|
||||||
|
0x00, 0xFC, 0x0F, 0xC1, 0xF8, 0x00, 0x00, 0x7E, 0x0F, 0xC1, 0xF0, 0x00,
|
||||||
|
0x00, 0x7F, 0x1F, 0xC1, 0xF0, 0x00, 0x00, 0x3F, 0xFF, 0x83, 0xF0, 0x00,
|
||||||
|
0x00, 0x3F, 0xFF, 0x83, 0xE0, 0x00, 0x00, 0x1F, 0xFF, 0x03, 0xE0, 0x3F,
|
||||||
|
0xF0, 0x0F, 0xFC, 0x07, 0xE0, 0x7F, 0xF8, 0x01, 0xE0, 0x07, 0xE0, 0xFF,
|
||||||
|
0xFC, 0x00, 0x00, 0x07, 0xC1, 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xC1, 0xFF,
|
||||||
|
0xFE, 0x00, 0x00, 0x0F, 0xC3, 0xF0, 0x3F, 0x00, 0x00, 0x0F, 0xC3, 0xF0,
|
||||||
|
0x3F, 0x00, 0x00, 0x0F, 0x83, 0xF0, 0x3F, 0x00, 0x00, 0x0F, 0x83, 0xF0,
|
||||||
|
0x3F, 0x00, 0x00, 0x1F, 0x83, 0xF0, 0x1F, 0x00, 0x00, 0x1F, 0x03, 0xF0,
|
||||||
|
0x1F, 0x00, 0x00, 0x1F, 0x03, 0xF0, 0x1F, 0x00, 0x00, 0x3F, 0x03, 0xF0,
|
||||||
|
0x1F, 0x00, 0x00, 0x3F, 0x03, 0xF0, 0x1F, 0x00, 0x00, 0x3E, 0x03, 0xF0,
|
||||||
|
0x1F, 0x00, 0x00, 0x3E, 0x03, 0xF0, 0x3F, 0x00, 0x00, 0x7E, 0x03, 0xF0,
|
||||||
|
0x3F, 0x00, 0x00, 0x7E, 0x03, 0xF0, 0x3F, 0x00, 0x00, 0x7C, 0x03, 0xF0,
|
||||||
|
0x3F, 0x00, 0x00, 0xFC, 0x01, 0xF8, 0x7F, 0x00, 0x00, 0xFC, 0x01, 0xFF,
|
||||||
|
0xFE, 0x00, 0x00, 0xF8, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0xF8, 0x00, 0xFF,
|
||||||
|
0xFC, 0x00, 0x01, 0xF8, 0x00, 0x7F, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x1F,
|
||||||
|
0xE0, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0xFF, 0xFC, 0x00,
|
||||||
|
0x1F, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0x80, 0x0F, 0xF1, 0xFE, 0x00, 0x7F,
|
||||||
|
0x07, 0xF0, 0x07, 0xF0, 0x1F, 0x80, 0x3F, 0x80, 0xFC, 0x01, 0xFC, 0x07,
|
||||||
|
0xE0, 0x0F, 0xC0, 0x3F, 0x00, 0x7E, 0x01, 0xF8, 0x03, 0xF8, 0x0F, 0xC0,
|
||||||
|
0x1F, 0xC0, 0xFE, 0x00, 0x7E, 0x07, 0xE0, 0x03, 0xF0, 0x3F, 0x00, 0x1F,
|
||||||
|
0xC3, 0xF0, 0x00, 0x7E, 0x1F, 0x00, 0x03, 0xF1, 0xF8, 0x00, 0x0F, 0xDF,
|
||||||
|
0x80, 0x00, 0x7E, 0xF8, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x07, 0xF8, 0x00,
|
||||||
|
0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01,
|
||||||
|
0xFF, 0x80, 0x7E, 0x1F, 0xFC, 0x03, 0xF1, 0xFF, 0xF0, 0x1F, 0x8F, 0xDF,
|
||||||
|
0xC0, 0xFC, 0xFE, 0x7E, 0x0F, 0xE7, 0xE1, 0xF8, 0x7E, 0x7F, 0x0F, 0xE3,
|
||||||
|
0xF3, 0xF0, 0x3F, 0x1F, 0x9F, 0x80, 0xFD, 0xF8, 0xFC, 0x07, 0xFF, 0xCF,
|
||||||
|
0xE0, 0x1F, 0xFC, 0x7F, 0x00, 0x7F, 0xE3, 0xF8, 0x03, 0xFE, 0x1F, 0xC0,
|
||||||
|
0x0F, 0xF0, 0x7E, 0x00, 0xFF, 0xC3, 0xF0, 0x0F, 0xFF, 0x1F, 0xC0, 0xFF,
|
||||||
|
0xFE, 0x7F, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0x3F, 0x8F, 0xFF, 0xF0, 0xFC,
|
||||||
|
0x3F, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x0F, 0x00, 0x60, 0x00, 0x00, 0xFF,
|
||||||
|
0xFF, 0xFE, 0xFB, 0xEF, 0xBE, 0xFB, 0xCF, 0x3C, 0xF3, 0xCF, 0x00, 0x00,
|
||||||
|
0x70, 0x1F, 0x07, 0xF0, 0xFF, 0x0F, 0xE1, 0xF8, 0x1F, 0x83, 0xF0, 0x3F,
|
||||||
|
0x03, 0xF0, 0x3E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E,
|
||||||
|
0x07, 0xE0, 0x7C, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC,
|
||||||
|
0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC,
|
||||||
|
0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC,
|
||||||
|
0x07, 0xC0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E,
|
||||||
|
0x03, 0xE0, 0x3F, 0x03, 0xF0, 0x1F, 0x01, 0xF8, 0x0F, 0xC0, 0xFF, 0x07,
|
||||||
|
0xF0, 0x3F, 0x00, 0xF0, 0xE0, 0x1F, 0x03, 0xF0, 0x7F, 0x07, 0xF0, 0x7E,
|
||||||
|
0x07, 0xE0, 0xFC, 0x0F, 0x81, 0xF8, 0x3F, 0x07, 0xE0, 0x7C, 0x0F, 0x81,
|
||||||
|
0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8,
|
||||||
|
0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F,
|
||||||
|
0x07, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07,
|
||||||
|
0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF0, 0x7E, 0x0F, 0xC1,
|
||||||
|
0xF8, 0x3F, 0x0F, 0xC1, 0xF8, 0x3E, 0x0F, 0xC7, 0xF0, 0xFE, 0x1F, 0x03,
|
||||||
|
0xC0, 0x00, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00,
|
||||||
|
0x1E, 0x00, 0x81, 0xC0, 0x9C, 0x38, 0x77, 0xE7, 0x3F, 0xFF, 0xFF, 0xEF,
|
||||||
|
0xFF, 0xF8, 0x7F, 0xFC, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x0F, 0x78, 0x01,
|
||||||
|
0xEF, 0x00, 0x78, 0xF0, 0x1F, 0x1F, 0x07, 0xC1, 0xF0, 0xF8, 0x3E, 0x06,
|
||||||
|
0x03, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E,
|
||||||
|
0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00,
|
||||||
|
0x00, 0x78, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78,
|
||||||
|
0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00,
|
||||||
|
0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0x87, 0x0E, 0x3C, 0x73, 0xEF, 0x8E, 0x10, 0x00, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xC0, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F,
|
||||||
|
0x80, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x3F, 0x00, 0x0F, 0xC0,
|
||||||
|
0x03, 0xE0, 0x00, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x03,
|
||||||
|
0xF0, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, 0xF8,
|
||||||
|
0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0x00,
|
||||||
|
0x7E, 0x00, 0x1F, 0x80, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0xFC, 0x00, 0x3F,
|
||||||
|
0x00, 0x0F, 0x80, 0x03, 0xE0, 0x01, 0xF8, 0x00, 0x7C, 0x00, 0x1F, 0x00,
|
||||||
|
0x07, 0xC0, 0x03, 0xF0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x07,
|
||||||
|
0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xE0,
|
||||||
|
0x00, 0x00, 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x07, 0xFF, 0xF0, 0x0F, 0xFF,
|
||||||
|
0xF8, 0x1F, 0xFF, 0xFC, 0x3F, 0xC3, 0xFC, 0x3F, 0x80, 0xFE, 0x7F, 0x00,
|
||||||
|
0xFE, 0x7E, 0x00, 0x7E, 0x7E, 0x00, 0x7F, 0x7E, 0x00, 0x7F, 0xFE, 0x00,
|
||||||
|
0x7F, 0xFE, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00,
|
||||||
|
0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00,
|
||||||
|
0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00,
|
||||||
|
0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00,
|
||||||
|
0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00,
|
||||||
|
0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00,
|
||||||
|
0x3F, 0xFE, 0x00, 0x7F, 0x7E, 0x00, 0x7F, 0x7E, 0x00, 0x7F, 0x7E, 0x00,
|
||||||
|
0x7E, 0x7F, 0x00, 0x7E, 0x3F, 0x00, 0xFE, 0x3F, 0x81, 0xFC, 0x1F, 0xFF,
|
||||||
|
0xFC, 0x1F, 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x01, 0xFF,
|
||||||
|
0x80, 0x00, 0x08, 0x00, 0x00, 0x7C, 0x01, 0xF0, 0x1F, 0xC0, 0xFF, 0x1F,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0xF0, 0x0F, 0xC0,
|
||||||
|
0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0,
|
||||||
|
0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC,
|
||||||
|
0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F,
|
||||||
|
0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F,
|
||||||
|
0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03,
|
||||||
|
0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0x7F, 0x80, 0x03, 0xFF, 0xE0, 0x07, 0xFF,
|
||||||
|
0xF0, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFC, 0x3F, 0xE3, 0xFE, 0x3F, 0x80,
|
||||||
|
0xFE, 0x3F, 0x80, 0x7E, 0x7F, 0x00, 0x7F, 0x7F, 0x00, 0x7F, 0x7F, 0x00,
|
||||||
|
0x3F, 0x7E, 0x00, 0x3F, 0x7E, 0x00, 0x3F, 0x7E, 0x00, 0x3F, 0x7E, 0x00,
|
||||||
|
0x7F, 0x7E, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7E, 0x00, 0x00,
|
||||||
|
0xFE, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x01, 0xFC, 0x00, 0x03,
|
||||||
|
0xF8, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F,
|
||||||
|
0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x7F,
|
||||||
|
0x00, 0x00, 0xFE, 0x00, 0x01, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8,
|
||||||
|
0x00, 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0,
|
||||||
|
0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00,
|
||||||
|
0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF,
|
||||||
|
0xFE, 0xFF, 0xFF, 0xFE, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x0F, 0xFF,
|
||||||
|
0xF0, 0x1F, 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x3F, 0xC3, 0xFC, 0x7F, 0x00,
|
||||||
|
0xFE, 0x7F, 0x00, 0x7E, 0x7E, 0x00, 0x7E, 0xFE, 0x00, 0x7F, 0xFE, 0x00,
|
||||||
|
0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x00, 0x00,
|
||||||
|
0x7F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x01,
|
||||||
|
0xFC, 0x00, 0x3F, 0xFC, 0x00, 0x3F, 0xF8, 0x00, 0x3F, 0xE0, 0x00, 0x3F,
|
||||||
|
0x80, 0x00, 0x3F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xF8, 0x00, 0x03,
|
||||||
|
0xFC, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00,
|
||||||
|
0x7E, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00,
|
||||||
|
0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00,
|
||||||
|
0x7E, 0x7E, 0x00, 0x7E, 0x7E, 0x00, 0x7E, 0x7F, 0x00, 0xFE, 0x7F, 0x81,
|
||||||
|
0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, 0x07, 0xFF,
|
||||||
|
0xE0, 0x03, 0xFF, 0x80, 0x00, 0x30, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x03,
|
||||||
|
0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x1F, 0xF0, 0x00,
|
||||||
|
0x07, 0xFC, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x7F, 0xF0,
|
||||||
|
0x00, 0x1F, 0xFC, 0x00, 0x0F, 0xBF, 0x00, 0x03, 0xEF, 0xC0, 0x01, 0xFB,
|
||||||
|
0xF0, 0x00, 0x7C, 0xFC, 0x00, 0x1F, 0x3F, 0x00, 0x0F, 0xCF, 0xC0, 0x03,
|
||||||
|
0xE3, 0xF0, 0x01, 0xF8, 0xFC, 0x00, 0x7C, 0x3F, 0x00, 0x3F, 0x0F, 0xC0,
|
||||||
|
0x0F, 0xC3, 0xF0, 0x07, 0xE0, 0xFC, 0x01, 0xF8, 0x3F, 0x00, 0x7E, 0x0F,
|
||||||
|
0xC0, 0x3F, 0x03, 0xF0, 0x0F, 0xC0, 0xFC, 0x07, 0xF0, 0x3F, 0x01, 0xF8,
|
||||||
|
0x0F, 0xC0, 0xFE, 0x03, 0xF0, 0x3F, 0x00, 0xFC, 0x0F, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00,
|
||||||
|
0x3F, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFC, 0x00,
|
||||||
|
0x00, 0x3F, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFC,
|
||||||
|
0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0xC0, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF,
|
||||||
|
0xF1, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF,
|
||||||
|
0x1F, 0xFF, 0xFE, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01,
|
||||||
|
0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F,
|
||||||
|
0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x7C, 0x01, 0xF3,
|
||||||
|
0xFF, 0x03, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x1F, 0xE0,
|
||||||
|
0xFF, 0x3F, 0x80, 0xFE, 0x7E, 0x00, 0xFC, 0xF8, 0x01, 0xFC, 0x00, 0x03,
|
||||||
|
0xF8, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F,
|
||||||
|
0x80, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xFF,
|
||||||
|
0xE0, 0x03, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x3F, 0x7F,
|
||||||
|
0x00, 0x7E, 0xFE, 0x00, 0xFC, 0xFC, 0x03, 0xF9, 0xFC, 0x07, 0xE3, 0xFF,
|
||||||
|
0xFF, 0xC3, 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x03, 0xFF, 0xF0, 0x01, 0xFF,
|
||||||
|
0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xF0, 0x0F, 0xFF,
|
||||||
|
0xF8, 0x1F, 0xFF, 0xFC, 0x1F, 0xC3, 0xFC, 0x3F, 0x80, 0xFE, 0x3F, 0x00,
|
||||||
|
0x7E, 0x7F, 0x00, 0x7E, 0x7E, 0x00, 0x7F, 0x7E, 0x00, 0x7F, 0x7E, 0x00,
|
||||||
|
0x7F, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00,
|
||||||
|
0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x1F,
|
||||||
|
0x00, 0xFE, 0x7F, 0xE0, 0xFE, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF,
|
||||||
|
0xFC, 0xFF, 0xC1, 0xFC, 0xFF, 0x00, 0xFE, 0xFE, 0x00, 0x7E, 0xFE, 0x00,
|
||||||
|
0x7E, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00,
|
||||||
|
0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFE, 0x00,
|
||||||
|
0x3F, 0x7E, 0x00, 0x7F, 0x7E, 0x00, 0x7F, 0x7E, 0x00, 0x7E, 0x7E, 0x00,
|
||||||
|
0x7E, 0x7F, 0x00, 0xFE, 0x3F, 0x00, 0xFC, 0x3F, 0x81, 0xFC, 0x1F, 0xFF,
|
||||||
|
0xFC, 0x1F, 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x01, 0xFF,
|
||||||
|
0x80, 0x00, 0x08, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00,
|
||||||
|
0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00,
|
||||||
|
0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00,
|
||||||
|
0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x03,
|
||||||
|
0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x0F,
|
||||||
|
0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x3F,
|
||||||
|
0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0xFC,
|
||||||
|
0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x03, 0xF0,
|
||||||
|
0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x7F, 0x00, 0x00, 0xFF,
|
||||||
|
0x00, 0x0F, 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x83, 0xFF, 0xFF,
|
||||||
|
0x87, 0xF0, 0x7F, 0x1F, 0xC0, 0x7F, 0x3F, 0x80, 0x7E, 0x7E, 0x00, 0xFC,
|
||||||
|
0xFC, 0x01, 0xFD, 0xF8, 0x03, 0xFB, 0xF0, 0x03, 0xF7, 0xE0, 0x0F, 0xEF,
|
||||||
|
0xC0, 0x1F, 0xDF, 0x80, 0x3F, 0xBF, 0x00, 0x7E, 0x7E, 0x00, 0xFC, 0xFE,
|
||||||
|
0x01, 0xF8, 0xFC, 0x07, 0xE1, 0xFE, 0x1F, 0xC1, 0xFF, 0xFF, 0x01, 0xFF,
|
||||||
|
0xFC, 0x01, 0xFF, 0xF0, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0xF0, 0x3F, 0xFF,
|
||||||
|
0xF0, 0xFE, 0x0F, 0xE3, 0xF8, 0x0F, 0xE7, 0xE0, 0x0F, 0xCF, 0xC0, 0x1F,
|
||||||
|
0xFF, 0x00, 0x1F, 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xF8, 0x00, 0xFF,
|
||||||
|
0xF0, 0x01, 0xFF, 0xE0, 0x03, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x0F, 0xFF,
|
||||||
|
0x00, 0x1F, 0xFF, 0x00, 0x3F, 0x7E, 0x00, 0xFE, 0xFC, 0x01, 0xF9, 0xFC,
|
||||||
|
0x07, 0xF1, 0xFF, 0x7F, 0xE3, 0xFF, 0xFF, 0x83, 0xFF, 0xFE, 0x03, 0xFF,
|
||||||
|
0xF8, 0x01, 0xFF, 0xC0, 0x00, 0x10, 0x00, 0x00, 0xFE, 0x00, 0x0F, 0xFF,
|
||||||
|
0x00, 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x07, 0xF8, 0xFF,
|
||||||
|
0x1F, 0xC0, 0x7E, 0x3F, 0x00, 0xFE, 0xFE, 0x00, 0xFD, 0xF8, 0x01, 0xFB,
|
||||||
|
0xF0, 0x03, 0xFF, 0xE0, 0x03, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x0F, 0xFF,
|
||||||
|
0x00, 0x1F, 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xF8, 0x00, 0xFF, 0xF0,
|
||||||
|
0x01, 0xFF, 0xE0, 0x03, 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x1F, 0xFF, 0x80,
|
||||||
|
0x3F, 0xBF, 0x80, 0xFF, 0x7F, 0xFF, 0xFE, 0x7F, 0xFF, 0xFC, 0x7F, 0xFD,
|
||||||
|
0xF8, 0x7F, 0xF3, 0xF0, 0x7F, 0xC7, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F,
|
||||||
|
0x80, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF8,
|
||||||
|
0x00, 0x03, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x1F, 0xFF, 0x00, 0x3F, 0x7E,
|
||||||
|
0x00, 0x7E, 0xFE, 0x00, 0xFD, 0xFC, 0x03, 0xF9, 0xFC, 0x0F, 0xE3, 0xFF,
|
||||||
|
0xFF, 0xC3, 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x03, 0xFF, 0xF0, 0x01, 0xFF,
|
||||||
|
0x80, 0x00, 0x18, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xE1, 0xC3, 0x8F, 0x3D, 0xF9, 0xE3, 0x00, 0x00, 0x01, 0x80, 0x01, 0xC0,
|
||||||
|
0x01, 0xE0, 0x03, 0xF0, 0x03, 0xF8, 0x07, 0xFC, 0x07, 0xFC, 0x07, 0xFC,
|
||||||
|
0x0F, 0xF8, 0x0F, 0xF8, 0x1F, 0xF0, 0x1F, 0xF0, 0x0F, 0xF0, 0x07, 0xE0,
|
||||||
|
0x03, 0xE0, 0x01, 0xF0, 0x00, 0xFE, 0x00, 0x7F, 0x80, 0x3F, 0xF0, 0x07,
|
||||||
|
0xFC, 0x01, 0xFF, 0x00, 0x3F, 0xE0, 0x0F, 0xF8, 0x03, 0xFE, 0x00, 0x7F,
|
||||||
|
0x80, 0x1F, 0xC0, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x18, 0x00, 0x04, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80,
|
||||||
|
0x00, 0x70, 0x00, 0x3C, 0x00, 0x1F, 0x80, 0x0F, 0xE0, 0x07, 0xFC, 0x01,
|
||||||
|
0xFF, 0x00, 0x7F, 0xC0, 0x0F, 0xF8, 0x03, 0xFE, 0x00, 0x7F, 0xC0, 0x1F,
|
||||||
|
0xF0, 0x07, 0xF8, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x3F, 0x80,
|
||||||
|
0x3F, 0xC0, 0x7F, 0xE0, 0x7F, 0xC0, 0x7F, 0xC0, 0xFF, 0x80, 0xFF, 0x80,
|
||||||
|
0xFF, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x1E, 0x00, 0x0C, 0x00,
|
||||||
|
0x04, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x0F, 0xFF, 0x80, 0x3F, 0xFF, 0x80,
|
||||||
|
0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x8F, 0xFD, 0xFF, 0x9F, 0xC0, 0x7F, 0x3F,
|
||||||
|
0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xF8, 0x00, 0xFF, 0xF0, 0x01, 0xFF, 0xE0,
|
||||||
|
0x03, 0xFF, 0xE0, 0x07, 0xEF, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80, 0x00,
|
||||||
|
0x3F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F,
|
||||||
|
0xE0, 0x00, 0x3F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0,
|
||||||
|
0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00,
|
||||||
|
0x1F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01,
|
||||||
|
0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80,
|
||||||
|
0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x30, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0xFF,
|
||||||
|
0xFF, 0xF8, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x0F, 0xFF,
|
||||||
|
0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xFF, 0x8F, 0xFF, 0x80, 0x00, 0x7F, 0xF0,
|
||||||
|
0x00, 0x7F, 0xC0, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xE0, 0x01, 0xFF, 0x00,
|
||||||
|
0x00, 0x07, 0xE0, 0x01, 0xFE, 0x00, 0x00, 0x03, 0xF0, 0x03, 0xF8, 0x00,
|
||||||
|
0x00, 0x01, 0xF8, 0x07, 0xF8, 0x00, 0x00, 0x00, 0xF8, 0x07, 0xF0, 0x00,
|
||||||
|
0x00, 0x00, 0xFC, 0x0F, 0xE0, 0x01, 0xFD, 0xF0, 0x7C, 0x0F, 0xC0, 0x07,
|
||||||
|
0xFF, 0xF0, 0x7C, 0x1F, 0xC0, 0x0F, 0xFF, 0xF0, 0x3E, 0x1F, 0x80, 0x1F,
|
||||||
|
0xFF, 0xF0, 0x3E, 0x3F, 0x80, 0x3F, 0xE3, 0xF0, 0x3E, 0x3F, 0x00, 0x7F,
|
||||||
|
0x83, 0xE0, 0x1E, 0x3F, 0x00, 0x7E, 0x03, 0xE0, 0x1E, 0x3F, 0x00, 0xFE,
|
||||||
|
0x07, 0xE0, 0x1E, 0x7E, 0x00, 0xFC, 0x07, 0xE0, 0x1F, 0x7E, 0x01, 0xF8,
|
||||||
|
0x07, 0xE0, 0x1F, 0x7E, 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0x7E, 0x03, 0xF0,
|
||||||
|
0x07, 0xC0, 0x1F, 0x7E, 0x03, 0xF0, 0x07, 0xC0, 0x1E, 0x7C, 0x03, 0xF0,
|
||||||
|
0x07, 0xC0, 0x1E, 0x7C, 0x03, 0xF0, 0x0F, 0xC0, 0x1E, 0x7C, 0x07, 0xE0,
|
||||||
|
0x0F, 0xC0, 0x1E, 0xFC, 0x07, 0xE0, 0x0F, 0xC0, 0x3E, 0xFC, 0x07, 0xE0,
|
||||||
|
0x0F, 0x80, 0x3E, 0xFC, 0x07, 0xE0, 0x0F, 0x80, 0x3C, 0xFC, 0x07, 0xE0,
|
||||||
|
0x0F, 0x80, 0x7C, 0x7C, 0x07, 0xE0, 0x1F, 0x80, 0x7C, 0x7C, 0x03, 0xF0,
|
||||||
|
0x1F, 0x80, 0xF8, 0x7C, 0x03, 0xF0, 0x3F, 0x80, 0xF0, 0x7E, 0x03, 0xF8,
|
||||||
|
0x7F, 0x81, 0xF0, 0x7E, 0x03, 0xFF, 0xEF, 0x83, 0xE0, 0x7E, 0x01, 0xFF,
|
||||||
|
0xEF, 0x8F, 0xC0, 0x7E, 0x00, 0xFF, 0xEF, 0xFF, 0x80, 0x3F, 0x00, 0x7F,
|
||||||
|
0xC7, 0xFF, 0x00, 0x3F, 0x00, 0x3F, 0x03, 0xFC, 0x00, 0x3F, 0x80, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x10, 0x00, 0x00, 0xFF, 0xF0,
|
||||||
|
0x01, 0xF0, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x1F, 0xFF,
|
||||||
|
0xFF, 0xF8, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x01, 0xFF,
|
||||||
|
0xFF, 0xE0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x3F, 0x80,
|
||||||
|
0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07,
|
||||||
|
0xFC, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xFE, 0x00,
|
||||||
|
0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xFC, 0x00, 0x03, 0xEF, 0x80, 0x00, 0x7D,
|
||||||
|
0xF0, 0x00, 0x0F, 0xBE, 0x00, 0x03, 0xF7, 0xC0, 0x00, 0x7E, 0xFC, 0x00,
|
||||||
|
0x0F, 0x8F, 0x80, 0x01, 0xF1, 0xF0, 0x00, 0x3E, 0x3E, 0x00, 0x0F, 0xC7,
|
||||||
|
0xC0, 0x01, 0xF8, 0xFC, 0x00, 0x3F, 0x1F, 0x80, 0x07, 0xC1, 0xF0, 0x00,
|
||||||
|
0xF8, 0x3E, 0x00, 0x3F, 0x07, 0xE0, 0x07, 0xE0, 0xFC, 0x00, 0xFC, 0x1F,
|
||||||
|
0x80, 0x1F, 0x01, 0xF0, 0x07, 0xE0, 0x3E, 0x00, 0xFC, 0x07, 0xE0, 0x1F,
|
||||||
|
0x80, 0xFC, 0x03, 0xF0, 0x1F, 0x80, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFE,
|
||||||
|
0x03, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x81, 0xF8,
|
||||||
|
0x03, 0xF0, 0x7E, 0x00, 0x3F, 0x0F, 0xC0, 0x07, 0xE1, 0xF8, 0x00, 0xFC,
|
||||||
|
0x3F, 0x00, 0x1F, 0x8F, 0xE0, 0x03, 0xF1, 0xF8, 0x00, 0x3F, 0x3F, 0x00,
|
||||||
|
0x07, 0xE7, 0xE0, 0x00, 0xFC, 0xFC, 0x00, 0x1F, 0xBF, 0x80, 0x03, 0xF7,
|
||||||
|
0xE0, 0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xC0, 0x3F, 0xFF, 0xF8,
|
||||||
|
0x1F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x87, 0xE1, 0xFF, 0xE3, 0xF0, 0x07,
|
||||||
|
0xF1, 0xF8, 0x01, 0xFC, 0xFC, 0x00, 0x7E, 0x7E, 0x00, 0x3F, 0x3F, 0x00,
|
||||||
|
0x1F, 0x9F, 0x80, 0x07, 0xCF, 0xC0, 0x03, 0xE7, 0xE0, 0x01, 0xF3, 0xF0,
|
||||||
|
0x01, 0xF9, 0xF8, 0x00, 0xFC, 0xFC, 0x00, 0x7E, 0x7E, 0x00, 0x3F, 0x3F,
|
||||||
|
0x00, 0x3F, 0x1F, 0x80, 0x3F, 0x8F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0x03,
|
||||||
|
0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x7E, 0x07, 0xFE,
|
||||||
|
0x3F, 0x00, 0x7F, 0x9F, 0x80, 0x1F, 0xCF, 0xC0, 0x07, 0xF7, 0xE0, 0x03,
|
||||||
|
0xFB, 0xF0, 0x00, 0xFD, 0xF8, 0x00, 0x7E, 0xFC, 0x00, 0x3F, 0xFE, 0x00,
|
||||||
|
0x1F, 0xFF, 0x00, 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0xC0, 0x03, 0xFF, 0xE0,
|
||||||
|
0x01, 0xFB, 0xF0, 0x00, 0xFD, 0xF8, 0x00, 0x7E, 0xFC, 0x00, 0x7F, 0x7E,
|
||||||
|
0x00, 0x7F, 0x3F, 0x00, 0x7F, 0x9F, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xC7,
|
||||||
|
0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0x81, 0xFF, 0xFE, 0x00, 0x00, 0xFF, 0x80,
|
||||||
|
0x01, 0xFF, 0xF0, 0x03, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0x83, 0xFF, 0xFF,
|
||||||
|
0xE1, 0xFE, 0x0F, 0xF1, 0xFC, 0x01, 0xFC, 0xFE, 0x00, 0xFE, 0x7E, 0x00,
|
||||||
|
0x3F, 0x7F, 0x00, 0x1F, 0xBF, 0x80, 0x0F, 0xDF, 0xC0, 0x07, 0xFF, 0xE0,
|
||||||
|
0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE,
|
||||||
|
0x00, 0x3F, 0xFF, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F,
|
||||||
|
0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00,
|
||||||
|
0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00,
|
||||||
|
0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0xFF, 0xFC, 0x00,
|
||||||
|
0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x00, 0x1F, 0xFF, 0x80, 0x0F, 0xFF, 0xC0,
|
||||||
|
0x07, 0xFF, 0xE0, 0x03, 0xF7, 0xF0, 0x01, 0xFB, 0xF8, 0x00, 0xFC, 0xFC,
|
||||||
|
0x00, 0x7E, 0x7E, 0x00, 0x3F, 0x3F, 0x80, 0x3F, 0x8F, 0xE0, 0x3F, 0x87,
|
||||||
|
0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0,
|
||||||
|
0x03, 0xFF, 0xC0, 0x00, 0x08, 0x00, 0x00, 0xFF, 0xE8, 0x00, 0xFF, 0xFF,
|
||||||
|
0x80, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF8, 0xFC, 0x0F,
|
||||||
|
0xFC, 0xFC, 0x01, 0xFE, 0xFC, 0x00, 0xFE, 0xFC, 0x00, 0x7E, 0xFC, 0x00,
|
||||||
|
0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00,
|
||||||
|
0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00,
|
||||||
|
0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00,
|
||||||
|
0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00,
|
||||||
|
0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00,
|
||||||
|
0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00,
|
||||||
|
0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00,
|
||||||
|
0x7F, 0xFC, 0x00, 0x7F, 0xFC, 0x00, 0x7E, 0xFC, 0x00, 0xFE, 0xFC, 0x00,
|
||||||
|
0xFE, 0xFC, 0x03, 0xFC, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF,
|
||||||
|
0xF0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0xC0, 0x03, 0xF0,
|
||||||
|
0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00,
|
||||||
|
0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F,
|
||||||
|
0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0xFF, 0xCF, 0xFF, 0xF3, 0xFF,
|
||||||
|
0xFC, 0xFF, 0xFF, 0x3F, 0xFF, 0xCF, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00,
|
||||||
|
0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F,
|
||||||
|
0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0,
|
||||||
|
0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0xC0, 0x03, 0xF0,
|
||||||
|
0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00,
|
||||||
|
0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F,
|
||||||
|
0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0xFF, 0x8F, 0xFF, 0xE3, 0xFF,
|
||||||
|
0xF8, 0xFF, 0xFE, 0x3F, 0xFF, 0x8F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00,
|
||||||
|
0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F,
|
||||||
|
0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0,
|
||||||
|
0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00,
|
||||||
|
0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0x00, 0xFF, 0x80, 0x03, 0xFF,
|
||||||
|
0xF8, 0x03, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xE1, 0xFE,
|
||||||
|
0x0F, 0xF1, 0xFC, 0x01, 0xFC, 0xFE, 0x00, 0x7E, 0x7E, 0x00, 0x3F, 0x7F,
|
||||||
|
0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xC0, 0x03, 0xFF, 0xE0, 0x01, 0xFF,
|
||||||
|
0xE0, 0x00, 0xFF, 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xFC, 0x00, 0x00,
|
||||||
|
0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00,
|
||||||
|
0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x07,
|
||||||
|
0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xC0,
|
||||||
|
0x7F, 0xFF, 0xE0, 0x00, 0xFF, 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xFC,
|
||||||
|
0x00, 0x1F, 0xFE, 0x00, 0x0F, 0xFF, 0x00, 0x07, 0xFF, 0xC0, 0x03, 0xFF,
|
||||||
|
0xE0, 0x01, 0xFF, 0xF0, 0x00, 0xFF, 0xF8, 0x00, 0x7E, 0xFC, 0x00, 0x7F,
|
||||||
|
0x7F, 0x00, 0x3F, 0xBF, 0x80, 0x3F, 0xCF, 0xE0, 0x3F, 0xE7, 0xFF, 0xFE,
|
||||||
|
0xF1, 0xFF, 0xFF, 0x78, 0x7F, 0xFF, 0x3C, 0x1F, 0xFF, 0x1E, 0x07, 0xFF,
|
||||||
|
0x0F, 0x00, 0x18, 0x00, 0x00, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x0F, 0xFF,
|
||||||
|
0x00, 0x07, 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, 0x00, 0xFF,
|
||||||
|
0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x0F,
|
||||||
|
0xFF, 0x00, 0x07, 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, 0x00,
|
||||||
|
0xFF, 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xFC, 0x00, 0x1F, 0xFE, 0x00,
|
||||||
|
0x0F, 0xFF, 0x00, 0x07, 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x00, 0x07, 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01, 0xFF,
|
||||||
|
0xE0, 0x00, 0xFF, 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xFC, 0x00, 0x1F,
|
||||||
|
0xFE, 0x00, 0x0F, 0xFF, 0x00, 0x07, 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01,
|
||||||
|
0xFF, 0xE0, 0x00, 0xFF, 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xFC, 0x00,
|
||||||
|
0x1F, 0xFE, 0x00, 0x0F, 0xFF, 0x00, 0x07, 0xFF, 0x80, 0x03, 0xFF, 0xC0,
|
||||||
|
0x01, 0xFF, 0xE0, 0x00, 0xFF, 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F,
|
||||||
|
0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F,
|
||||||
|
0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07,
|
||||||
|
0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01,
|
||||||
|
0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0,
|
||||||
|
0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0,
|
||||||
|
0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x3F, 0x81, 0xFE, 0xFF, 0xFB,
|
||||||
|
0xFF, 0xCF, 0xFF, 0x3F, 0xF8, 0xFF, 0x00, 0xFC, 0x00, 0x7E, 0x7E, 0x00,
|
||||||
|
0x3F, 0x3F, 0x00, 0x3F, 0x9F, 0x80, 0x1F, 0x8F, 0xC0, 0x1F, 0xC7, 0xE0,
|
||||||
|
0x0F, 0xC3, 0xF0, 0x0F, 0xE1, 0xF8, 0x07, 0xE0, 0xFC, 0x07, 0xF0, 0x7E,
|
||||||
|
0x03, 0xF0, 0x3F, 0x03, 0xF8, 0x1F, 0x81, 0xF8, 0x0F, 0xC1, 0xFC, 0x07,
|
||||||
|
0xE0, 0xFE, 0x03, 0xF0, 0xFE, 0x01, 0xF8, 0x7F, 0x00, 0xFC, 0x7F, 0x00,
|
||||||
|
0x7E, 0x3F, 0x80, 0x3F, 0x3F, 0x80, 0x1F, 0x9F, 0xC0, 0x0F, 0xDF, 0xC0,
|
||||||
|
0x07, 0xEF, 0xE0, 0x03, 0xF7, 0xF0, 0x01, 0xFF, 0xFC, 0x00, 0xFF, 0xFE,
|
||||||
|
0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xEF, 0xC0, 0x1F, 0xE7, 0xF0, 0x0F, 0xF1,
|
||||||
|
0xF8, 0x07, 0xF0, 0xFC, 0x03, 0xF8, 0x7F, 0x01, 0xF8, 0x1F, 0x80, 0xFC,
|
||||||
|
0x0F, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x01, 0xF8, 0x1F, 0x80, 0xFE, 0x0F,
|
||||||
|
0xC0, 0x3F, 0x07, 0xE0, 0x1F, 0xC3, 0xF0, 0x07, 0xE1, 0xF8, 0x03, 0xF0,
|
||||||
|
0xFC, 0x01, 0xFC, 0x7E, 0x00, 0x7E, 0x3F, 0x00, 0x3F, 0x9F, 0x80, 0x0F,
|
||||||
|
0xCF, 0xC0, 0x07, 0xF7, 0xE0, 0x03, 0xFB, 0xF0, 0x00, 0xFD, 0xF8, 0x00,
|
||||||
|
0x7F, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0,
|
||||||
|
0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80,
|
||||||
|
0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00,
|
||||||
|
0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00,
|
||||||
|
0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00,
|
||||||
|
0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00,
|
||||||
|
0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00,
|
||||||
|
0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00,
|
||||||
|
0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0xFD, 0xFC,
|
||||||
|
0x00, 0x01, 0xFB, 0xF8, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x0F, 0xEF, 0xF0,
|
||||||
|
0x00, 0x1F, 0xDF, 0xE0, 0x00, 0x3F, 0xBF, 0xC0, 0x00, 0xFF, 0x7F, 0xC0,
|
||||||
|
0x01, 0xFE, 0xFF, 0x80, 0x03, 0xFD, 0xFF, 0x00, 0x07, 0xFB, 0xFE, 0x00,
|
||||||
|
0x0F, 0xF7, 0xFC, 0x00, 0x3F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xF8, 0x00,
|
||||||
|
0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFB, 0xC0, 0x0F,
|
||||||
|
0xFF, 0xF7, 0xC0, 0x1E, 0xFF, 0xE7, 0x80, 0x3D, 0xFF, 0xCF, 0x00, 0x7B,
|
||||||
|
0xFF, 0x9E, 0x01, 0xF7, 0xFF, 0x3E, 0x03, 0xCF, 0xFE, 0x3C, 0x07, 0x9F,
|
||||||
|
0xFC, 0x78, 0x0F, 0x3F, 0xF8, 0xF0, 0x1E, 0x7F, 0xF1, 0xE0, 0x7C, 0x7F,
|
||||||
|
0xE1, 0xE0, 0xF0, 0xFF, 0xC3, 0xC1, 0xE1, 0xFF, 0x87, 0x83, 0xC3, 0xFF,
|
||||||
|
0x0F, 0x0F, 0x87, 0xFE, 0x1F, 0x1E, 0x0F, 0xFC, 0x1E, 0x3C, 0x1F, 0xF8,
|
||||||
|
0x3C, 0x78, 0x3F, 0xF0, 0x78, 0xF0, 0x7F, 0xE0, 0xF3, 0xC0, 0xFF, 0xC0,
|
||||||
|
0xF7, 0x81, 0xFF, 0x81, 0xEF, 0x03, 0xFF, 0x03, 0xDE, 0x07, 0xFE, 0x07,
|
||||||
|
0xF8, 0x0F, 0xFC, 0x07, 0xF0, 0x1F, 0xF8, 0x0F, 0xE0, 0x3F, 0xF0, 0x1F,
|
||||||
|
0xC0, 0x7F, 0xE0, 0x3F, 0x80, 0xFF, 0xC0, 0x7E, 0x01, 0xFF, 0x80, 0x7C,
|
||||||
|
0x03, 0xFF, 0x00, 0xF8, 0x07, 0xFE, 0x01, 0xF0, 0x0F, 0xFC, 0x03, 0xC0,
|
||||||
|
0x1F, 0xF0, 0x00, 0x3F, 0xF0, 0x00, 0x7F, 0xE0, 0x00, 0xFF, 0xE0, 0x01,
|
||||||
|
0xFF, 0xC0, 0x03, 0xFF, 0x80, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x1F,
|
||||||
|
0xFF, 0x00, 0x3F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF,
|
||||||
|
0xF8, 0x03, 0xFF, 0xF8, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFB,
|
||||||
|
0xE0, 0x3F, 0xF7, 0xE0, 0x7F, 0xE7, 0xC0, 0xFF, 0xCF, 0x81, 0xFF, 0x9F,
|
||||||
|
0x83, 0xFF, 0x1F, 0x07, 0xFE, 0x3F, 0x0F, 0xFC, 0x3E, 0x1F, 0xF8, 0x7E,
|
||||||
|
0x3F, 0xF0, 0x7C, 0x7F, 0xE0, 0xF8, 0xFF, 0xC1, 0xF9, 0xFF, 0x81, 0xF3,
|
||||||
|
0xFF, 0x03, 0xF7, 0xFE, 0x03, 0xEF, 0xFC, 0x07, 0xFF, 0xF8, 0x0F, 0xFF,
|
||||||
|
0xF0, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF,
|
||||||
|
0x00, 0x3F, 0xFE, 0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xF8, 0x00, 0xFF, 0xF0,
|
||||||
|
0x01, 0xFF, 0xE0, 0x01, 0xFF, 0xC0, 0x03, 0xFF, 0x80, 0x03, 0xFF, 0x00,
|
||||||
|
0x07, 0xFE, 0x00, 0x0F, 0xFC, 0x00, 0x0F, 0x00, 0xFF, 0x80, 0x00, 0xFF,
|
||||||
|
0xFC, 0x00, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x3F, 0xFF, 0xFE, 0x0F,
|
||||||
|
0xF0, 0x7F, 0xC7, 0xF0, 0x07, 0xF1, 0xFC, 0x00, 0xFE, 0x7E, 0x00, 0x3F,
|
||||||
|
0xBF, 0x80, 0x07, 0xEF, 0xE0, 0x01, 0xFB, 0xF8, 0x00, 0x7F, 0xFE, 0x00,
|
||||||
|
0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFE,
|
||||||
|
0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0x7F,
|
||||||
|
0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00,
|
||||||
|
0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8,
|
||||||
|
0x00, 0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF,
|
||||||
|
0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01,
|
||||||
|
0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0,
|
||||||
|
0x01, 0xF9, 0xF8, 0x00, 0x7E, 0x7E, 0x00, 0x3F, 0x9F, 0xC0, 0x0F, 0xC3,
|
||||||
|
0xF8, 0x0F, 0xF0, 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, 0xFE, 0x03, 0xFF, 0xFF,
|
||||||
|
0x00, 0x7F, 0xFF, 0x80, 0x07, 0xFF, 0x80, 0x00, 0x08, 0x00, 0x00, 0xFF,
|
||||||
|
0xF4, 0x01, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0x8F, 0xFF,
|
||||||
|
0xFF, 0x9F, 0x80, 0xFF, 0xBF, 0x00, 0x7F, 0x7E, 0x00, 0x7E, 0xFC, 0x00,
|
||||||
|
0xFF, 0xF8, 0x00, 0xFF, 0xF0, 0x01, 0xFF, 0xE0, 0x03, 0xFF, 0xC0, 0x07,
|
||||||
|
0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x1F, 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0x7F,
|
||||||
|
0xF8, 0x01, 0xFF, 0xF0, 0x03, 0xFF, 0xE0, 0x0F, 0xEF, 0xC0, 0x3F, 0xDF,
|
||||||
|
0xFF, 0xFF, 0x3F, 0xFF, 0xFC, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC1, 0xFF,
|
||||||
|
0xFC, 0x03, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80,
|
||||||
|
0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF8, 0x00,
|
||||||
|
0x03, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80, 0x00,
|
||||||
|
0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x03,
|
||||||
|
0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x3F,
|
||||||
|
0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0xFC, 0x00,
|
||||||
|
0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xF8, 0x3F, 0xFF, 0xFE, 0x0F, 0xF0, 0x7F,
|
||||||
|
0xC7, 0xF0, 0x07, 0xF1, 0xFC, 0x00, 0xFE, 0x7E, 0x00, 0x1F, 0xBF, 0x80,
|
||||||
|
0x07, 0xEF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x1F, 0xFF,
|
||||||
|
0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x1F,
|
||||||
|
0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00,
|
||||||
|
0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFE,
|
||||||
|
0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0x7F,
|
||||||
|
0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00,
|
||||||
|
0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8,
|
||||||
|
0x00, 0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xF9,
|
||||||
|
0xF8, 0x00, 0x7E, 0x7E, 0x00, 0x3F, 0x9F, 0xC0, 0x0F, 0xE3, 0xF8, 0x0F,
|
||||||
|
0xF0, 0xFF, 0xFF, 0xFC, 0x1F, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0x00, 0x7F,
|
||||||
|
0xFF, 0x80, 0x07, 0xFF, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7E, 0x00,
|
||||||
|
0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F,
|
||||||
|
0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x06, 0x00, 0x00,
|
||||||
|
0x00, 0x80, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xE0, 0xFF,
|
||||||
|
0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFC, 0x0F, 0xFC, 0xFC, 0x01, 0xFC, 0xFC,
|
||||||
|
0x00, 0xFE, 0xFC, 0x00, 0xFE, 0xFC, 0x00, 0xFE, 0xFC, 0x00, 0x7E, 0xFC,
|
||||||
|
0x00, 0x7E, 0xFC, 0x00, 0x7E, 0xFC, 0x00, 0x7E, 0xFC, 0x00, 0x7E, 0xFC,
|
||||||
|
0x00, 0x7E, 0xFC, 0x00, 0xFE, 0xFC, 0x00, 0xFE, 0xFC, 0x00, 0xFE, 0xFC,
|
||||||
|
0x01, 0xFC, 0xFC, 0x07, 0xFC, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF0, 0xFF,
|
||||||
|
0xFF, 0xE0, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC,
|
||||||
|
0x0F, 0xC0, 0xFC, 0x0F, 0xE0, 0xFC, 0x07, 0xE0, 0xFC, 0x07, 0xE0, 0xFC,
|
||||||
|
0x07, 0xE0, 0xFC, 0x07, 0xF0, 0xFC, 0x03, 0xF0, 0xFC, 0x03, 0xF0, 0xFC,
|
||||||
|
0x03, 0xF8, 0xFC, 0x01, 0xF8, 0xFC, 0x01, 0xF8, 0xFC, 0x01, 0xF8, 0xFC,
|
||||||
|
0x01, 0xFC, 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0xFE, 0xFC,
|
||||||
|
0x00, 0xFE, 0xFC, 0x00, 0x7E, 0xFC, 0x00, 0x7E, 0xFC, 0x00, 0x7F, 0xFC,
|
||||||
|
0x00, 0x3F, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0xC0, 0x0F, 0xFF, 0xF0, 0x1F,
|
||||||
|
0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x3F, 0x83, 0xFC, 0x7F, 0x00, 0xFC, 0x7E,
|
||||||
|
0x00, 0xFE, 0x7E, 0x00, 0x7E, 0xFC, 0x00, 0x7E, 0xFC, 0x00, 0x7E, 0xFC,
|
||||||
|
0x00, 0x3E, 0xFE, 0x00, 0x3F, 0x7E, 0x00, 0x20, 0x7E, 0x00, 0x00, 0x7F,
|
||||||
|
0x00, 0x00, 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x1F,
|
||||||
|
0xF8, 0x00, 0x0F, 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01,
|
||||||
|
0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xF0, 0x00,
|
||||||
|
0x0F, 0xF8, 0x00, 0x07, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00,
|
||||||
|
0x00, 0xFE, 0x00, 0x00, 0x7F, 0x04, 0x00, 0x7F, 0x7C, 0x00, 0x3F, 0xFC,
|
||||||
|
0x00, 0x3F, 0xFE, 0x00, 0x3F, 0x7E, 0x00, 0x3F, 0x7E, 0x00, 0x3F, 0x7E,
|
||||||
|
0x00, 0x3F, 0x7F, 0x00, 0x3F, 0x3F, 0x80, 0x7F, 0x3F, 0xC0, 0xFE, 0x1F,
|
||||||
|
0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x0F, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x01,
|
||||||
|
0xFF, 0xC0, 0x00, 0x18, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x03, 0xF8, 0x00, 0x0F, 0xE0,
|
||||||
|
0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x00,
|
||||||
|
0x3F, 0x80, 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x3F,
|
||||||
|
0x80, 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80,
|
||||||
|
0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00,
|
||||||
|
0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE,
|
||||||
|
0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00,
|
||||||
|
0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x03,
|
||||||
|
0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x03, 0xF8,
|
||||||
|
0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00,
|
||||||
|
0x0F, 0xE0, 0x00, 0x3F, 0x80, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF,
|
||||||
|
0xE0, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07,
|
||||||
|
0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80,
|
||||||
|
0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x1F, 0xFF,
|
||||||
|
0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x1F,
|
||||||
|
0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00,
|
||||||
|
0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFE,
|
||||||
|
0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0x7F,
|
||||||
|
0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00,
|
||||||
|
0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8,
|
||||||
|
0x00, 0x7E, 0x7E, 0x00, 0x1F, 0x9F, 0x80, 0x07, 0xE7, 0xE0, 0x01, 0xF9,
|
||||||
|
0xF8, 0x00, 0xFE, 0x7F, 0x00, 0x3F, 0x8F, 0xE0, 0x1F, 0xC3, 0xFC, 0x0F,
|
||||||
|
0xF0, 0xFF, 0xFF, 0xFC, 0x1F, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0x00, 0x7F,
|
||||||
|
0xFF, 0x80, 0x07, 0xFF, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xFE, 0x00, 0x07,
|
||||||
|
0xEF, 0xC0, 0x00, 0xFD, 0xF8, 0x00, 0x1F, 0xBF, 0x00, 0x03, 0xF7, 0xE0,
|
||||||
|
0x00, 0xFC, 0xFE, 0x00, 0x1F, 0x8F, 0xC0, 0x03, 0xF1, 0xF8, 0x00, 0x7E,
|
||||||
|
0x3F, 0x00, 0x0F, 0xC7, 0xF0, 0x03, 0xF0, 0x7E, 0x00, 0x7E, 0x0F, 0xC0,
|
||||||
|
0x0F, 0xC1, 0xF8, 0x01, 0xF8, 0x3F, 0x00, 0x3E, 0x07, 0xF0, 0x0F, 0xC0,
|
||||||
|
0x7E, 0x01, 0xF8, 0x0F, 0xC0, 0x3F, 0x01, 0xF8, 0x07, 0xE0, 0x3F, 0x00,
|
||||||
|
0xF8, 0x03, 0xF0, 0x3F, 0x00, 0x7E, 0x07, 0xE0, 0x0F, 0xC0, 0xFC, 0x01,
|
||||||
|
0xF8, 0x1F, 0x00, 0x1F, 0x83, 0xE0, 0x03, 0xF0, 0xFC, 0x00, 0x7E, 0x1F,
|
||||||
|
0x80, 0x0F, 0xC3, 0xF0, 0x01, 0xF8, 0x7C, 0x00, 0x1F, 0x8F, 0x80, 0x03,
|
||||||
|
0xF3, 0xF0, 0x00, 0x7E, 0x7E, 0x00, 0x0F, 0xCF, 0x80, 0x00, 0xF9, 0xF0,
|
||||||
|
0x00, 0x1F, 0xFE, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x7F, 0xF8, 0x00, 0x0F,
|
||||||
|
0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xFF, 0x00,
|
||||||
|
0x00, 0x7F, 0xC0, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F,
|
||||||
|
0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xE0, 0x00,
|
||||||
|
0x00, 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x7F, 0xF8, 0x00, 0xF8, 0x00,
|
||||||
|
0xFF, 0xF0, 0x01, 0xF0, 0x01, 0xF3, 0xE0, 0x03, 0xE0, 0x03, 0xE7, 0xC0,
|
||||||
|
0x0F, 0xE0, 0x07, 0xCF, 0x80, 0x1F, 0xC0, 0x0F, 0x9F, 0x80, 0x3F, 0x80,
|
||||||
|
0x3F, 0x3F, 0x00, 0x7F, 0x00, 0x7E, 0x7E, 0x00, 0xFE, 0x00, 0xF8, 0x7C,
|
||||||
|
0x03, 0xFE, 0x01, 0xF0, 0xF8, 0x07, 0xFC, 0x03, 0xE1, 0xF0, 0x0F, 0xF8,
|
||||||
|
0x07, 0xC3, 0xE0, 0x1F, 0xF0, 0x0F, 0x87, 0xE0, 0x3D, 0xE0, 0x3F, 0x0F,
|
||||||
|
0xC0, 0x7B, 0xC0, 0x7C, 0x0F, 0x81, 0xF7, 0xC0, 0xF8, 0x1F, 0x03, 0xEF,
|
||||||
|
0x81, 0xF0, 0x3E, 0x07, 0xCF, 0x03, 0xE0, 0x7C, 0x0F, 0x9E, 0x07, 0xC0,
|
||||||
|
0xF8, 0x1E, 0x3C, 0x0F, 0x81, 0xF8, 0x7C, 0x7C, 0x3F, 0x01, 0xF0, 0xF8,
|
||||||
|
0xF8, 0x7C, 0x03, 0xE1, 0xF1, 0xF0, 0xF8, 0x07, 0xC3, 0xE1, 0xE1, 0xF0,
|
||||||
|
0x0F, 0x87, 0x83, 0xC3, 0xE0, 0x1F, 0x1F, 0x07, 0xC7, 0xC0, 0x3F, 0x3E,
|
||||||
|
0x0F, 0x8F, 0x80, 0x3E, 0x7C, 0x1F, 0x3E, 0x00, 0x7C, 0xF8, 0x1E, 0x7C,
|
||||||
|
0x00, 0xF9, 0xE0, 0x3C, 0xF8, 0x01, 0xF3, 0xC0, 0x7D, 0xF0, 0x03, 0xEF,
|
||||||
|
0x80, 0xFB, 0xE0, 0x07, 0xDF, 0x01, 0xF7, 0xC0, 0x07, 0xFE, 0x01, 0xFF,
|
||||||
|
0x00, 0x0F, 0xFC, 0x03, 0xFE, 0x00, 0x1F, 0xF0, 0x07, 0xFC, 0x00, 0x3F,
|
||||||
|
0xE0, 0x0F, 0xF8, 0x00, 0x7F, 0xC0, 0x1F, 0xF0, 0x00, 0xFF, 0x80, 0x3F,
|
||||||
|
0xE0, 0x01, 0xFF, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x03,
|
||||||
|
0xF8, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x03,
|
||||||
|
0xF8, 0x00, 0x1F, 0xC0, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x07, 0xC0, 0x00,
|
||||||
|
0x3E, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0xFC, 0x00, 0x0F,
|
||||||
|
0xDF, 0xC0, 0x03, 0xF9, 0xF8, 0x00, 0x7E, 0x3F, 0x00, 0x0F, 0xC3, 0xF0,
|
||||||
|
0x03, 0xF0, 0x7E, 0x00, 0x7E, 0x07, 0xE0, 0x0F, 0x80, 0xFC, 0x03, 0xF0,
|
||||||
|
0x1F, 0xC0, 0x7E, 0x01, 0xF8, 0x1F, 0x80, 0x3F, 0x03, 0xF0, 0x03, 0xF0,
|
||||||
|
0x7C, 0x00, 0x7E, 0x1F, 0x80, 0x07, 0xE3, 0xE0, 0x00, 0xFC, 0xFC, 0x00,
|
||||||
|
0x1F, 0xDF, 0x80, 0x01, 0xFB, 0xE0, 0x00, 0x3F, 0xFC, 0x00, 0x03, 0xFF,
|
||||||
|
0x00, 0x00, 0x7F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00,
|
||||||
|
0x1F, 0xE0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xF0,
|
||||||
|
0x00, 0x03, 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x0F, 0xFC, 0x00, 0x03,
|
||||||
|
0xFF, 0xC0, 0x00, 0x7D, 0xF8, 0x00, 0x1F, 0xBF, 0x00, 0x03, 0xF3, 0xF0,
|
||||||
|
0x00, 0x7C, 0x7E, 0x00, 0x1F, 0x87, 0xE0, 0x03, 0xF0, 0xFC, 0x00, 0xFC,
|
||||||
|
0x1F, 0xC0, 0x1F, 0x81, 0xF8, 0x03, 0xE0, 0x3F, 0x00, 0xFC, 0x03, 0xF0,
|
||||||
|
0x1F, 0x80, 0x7E, 0x07, 0xE0, 0x07, 0xE0, 0xFC, 0x00, 0xFC, 0x1F, 0x80,
|
||||||
|
0x1F, 0xC7, 0xE0, 0x01, 0xF8, 0xFC, 0x00, 0x3F, 0x3F, 0x80, 0x03, 0xF7,
|
||||||
|
0xE0, 0x00, 0x7F, 0xFC, 0x00, 0x0F, 0xFF, 0x80, 0x01, 0xFB, 0xF8, 0x00,
|
||||||
|
0x3F, 0x3F, 0x00, 0x0F, 0xE7, 0xE0, 0x01, 0xF8, 0xFC, 0x00, 0x3F, 0x0F,
|
||||||
|
0xC0, 0x0F, 0xE1, 0xF8, 0x01, 0xF8, 0x3F, 0x00, 0x3F, 0x03, 0xF0, 0x0F,
|
||||||
|
0xE0, 0x7E, 0x01, 0xF8, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x07, 0xE0, 0x1F,
|
||||||
|
0x81, 0xF8, 0x03, 0xF0, 0x3F, 0x00, 0x3F, 0x07, 0xE0, 0x07, 0xE1, 0xF8,
|
||||||
|
0x00, 0xFC, 0x3F, 0x00, 0x0F, 0xC7, 0xE0, 0x01, 0xF9, 0xF8, 0x00, 0x3F,
|
||||||
|
0x3F, 0x00, 0x03, 0xF7, 0xE0, 0x00, 0x7F, 0xF8, 0x00, 0x0F, 0xFF, 0x00,
|
||||||
|
0x00, 0xFF, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x3F,
|
||||||
|
0xE0, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x0F, 0xE0, 0x00,
|
||||||
|
0x01, 0xF8, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0xFC,
|
||||||
|
0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x7E, 0x00, 0x00,
|
||||||
|
0x0F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x07, 0xE0,
|
||||||
|
0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00,
|
||||||
|
0x7E, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x7F, 0xFF, 0xFB,
|
||||||
|
0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x80, 0x01,
|
||||||
|
0xF8, 0x00, 0x0F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00,
|
||||||
|
0x03, 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7E,
|
||||||
|
0x00, 0x07, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xC0, 0x00,
|
||||||
|
0xFC, 0x00, 0x07, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80,
|
||||||
|
0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xE0, 0x00, 0x3F,
|
||||||
|
0x00, 0x03, 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00,
|
||||||
|
0x7E, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xC0,
|
||||||
|
0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x3F,
|
||||||
|
0x80, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x7E,
|
||||||
|
0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0,
|
||||||
|
0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F,
|
||||||
|
0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x01, 0xF8,
|
||||||
|
0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x01,
|
||||||
|
0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x3F,
|
||||||
|
0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE0,
|
||||||
|
0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFE, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x01, 0xF0, 0x00,
|
||||||
|
0x7C, 0x00, 0x1F, 0x00, 0x07, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F,
|
||||||
|
0xC0, 0x03, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xE0, 0x01, 0xF8,
|
||||||
|
0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00,
|
||||||
|
0x07, 0xE0, 0x01, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xF0, 0x00,
|
||||||
|
0xFC, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF8, 0x00, 0x3E, 0x00, 0x0F,
|
||||||
|
0x80, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF8,
|
||||||
|
0x00, 0x7E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0x00,
|
||||||
|
0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00,
|
||||||
|
0xFC, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x3F, 0x81,
|
||||||
|
0xFC, 0x0F, 0xE0, 0x7F, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x07, 0xF0, 0x3F,
|
||||||
|
0x81, 0xFC, 0x0F, 0xE0, 0x7F, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x07, 0xF0,
|
||||||
|
0x3F, 0x81, 0xFC, 0x0F, 0xE0, 0x7F, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x07,
|
||||||
|
0xF0, 0x3F, 0x81, 0xFC, 0x0F, 0xE0, 0x7F, 0x03, 0xF8, 0x1F, 0xC0, 0xFE,
|
||||||
|
0x07, 0xF0, 0x3F, 0x81, 0xFC, 0x0F, 0xE0, 0x7F, 0x03, 0xF8, 0x1F, 0xC0,
|
||||||
|
0xFE, 0x07, 0xF0, 0x3F, 0x81, 0xFC, 0x0F, 0xE0, 0x7F, 0x03, 0xF8, 0x1F,
|
||||||
|
0xC0, 0xFE, 0x07, 0xF0, 0x3F, 0x81, 0xFC, 0x0F, 0xE0, 0x7F, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFE, 0x00, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x00,
|
||||||
|
0x7F, 0x80, 0x03, 0xFF, 0x00, 0x0F, 0xFC, 0x00, 0x7E, 0xF8, 0x01, 0xF3,
|
||||||
|
0xE0, 0x07, 0xCF, 0xC0, 0x3E, 0x1F, 0x00, 0xF8, 0x7C, 0x07, 0xE1, 0xF8,
|
||||||
|
0x1F, 0x03, 0xE0, 0xFC, 0x0F, 0xC3, 0xF0, 0x3F, 0x0F, 0x80, 0x7C, 0x7E,
|
||||||
|
0x01, 0xF9, 0xF8, 0x07, 0xEF, 0xC0, 0x0F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFE, 0x1F, 0x87,
|
||||||
|
0xE0, 0xFC, 0x1F, 0x07, 0xC0, 0xF0, 0x3E, 0x07, 0x81, 0xE0, 0x3C, 0x07,
|
||||||
|
0x03, 0xFF, 0x00, 0x7F, 0xFC, 0x07, 0xFF, 0xF0, 0x7F, 0xFF, 0xC3, 0xF8,
|
||||||
|
0xFE, 0x3F, 0x83, 0xF9, 0xF8, 0x0F, 0xCF, 0xC0, 0x7E, 0x7E, 0x03, 0xF3,
|
||||||
|
0xF0, 0x1F, 0x9F, 0x80, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x07,
|
||||||
|
0xF8, 0x00, 0xFF, 0xC0, 0x1F, 0xFE, 0x03, 0xFF, 0xF0, 0x3F, 0x9F, 0x87,
|
||||||
|
0xF8, 0xFC, 0x3F, 0x07, 0xE3, 0xF0, 0x3F, 0x3F, 0x81, 0xF9, 0xF8, 0x0F,
|
||||||
|
0xCF, 0xC0, 0x7E, 0x7E, 0x03, 0xF7, 0xF0, 0x1F, 0xBF, 0x80, 0xFC, 0xFC,
|
||||||
|
0x0F, 0xE7, 0xF0, 0xFF, 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xC7, 0xFF, 0x3E,
|
||||||
|
0x1F, 0xF1, 0xF8, 0x7F, 0x0F, 0xC0, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x3F,
|
||||||
|
0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00,
|
||||||
|
0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC,
|
||||||
|
0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF9, 0xFE, 0x1F, 0xDF, 0xF8,
|
||||||
|
0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x3F, 0xFF, 0xFD, 0xFE, 0x0F, 0xEF, 0xE0,
|
||||||
|
0x3F, 0x7F, 0x01, 0xFB, 0xF8, 0x0F, 0xDF, 0xC0, 0x7F, 0xFE, 0x03, 0xFF,
|
||||||
|
0xF0, 0x1F, 0xFF, 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01,
|
||||||
|
0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF,
|
||||||
|
0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F,
|
||||||
|
0xFF, 0xC0, 0x7E, 0xFE, 0x03, 0xF7, 0xF0, 0x1F, 0xBF, 0x81, 0xFD, 0xFF,
|
||||||
|
0xFF, 0xCF, 0xFF, 0xFE, 0x7F, 0xFF, 0xE3, 0xFB, 0xFF, 0x1F, 0xCF, 0xE0,
|
||||||
|
0x0F, 0xFE, 0x03, 0xFF, 0xE0, 0xFF, 0xFE, 0x3F, 0xFF, 0xE7, 0xF1, 0xFD,
|
||||||
|
0xFC, 0x1F, 0xBF, 0x01, 0xF7, 0xE0, 0x3F, 0xFC, 0x07, 0xFF, 0x80, 0xFF,
|
||||||
|
0xF0, 0x1F, 0xFE, 0x03, 0xFF, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07,
|
||||||
|
0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F,
|
||||||
|
0xC0, 0x01, 0xF8, 0x0F, 0xFF, 0x01, 0xFF, 0xE0, 0x3F, 0xFC, 0x07, 0xFF,
|
||||||
|
0x80, 0xFF, 0xF0, 0x1F, 0xFE, 0x03, 0xEF, 0xE0, 0xFC, 0xFE, 0x3F, 0x9F,
|
||||||
|
0xFF, 0xF1, 0xFF, 0xFC, 0x1F, 0xFF, 0x01, 0xFF, 0xC0, 0x00, 0x03, 0xF0,
|
||||||
|
0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x3F,
|
||||||
|
0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03,
|
||||||
|
0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x0F, 0xE3, 0xF1, 0xFF,
|
||||||
|
0xBF, 0x3F, 0xFF, 0xF7, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFE,
|
||||||
|
0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF,
|
||||||
|
0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F,
|
||||||
|
0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03,
|
||||||
|
0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0,
|
||||||
|
0x3F, 0xFC, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x07, 0xF7, 0xFB, 0xFF, 0x7F,
|
||||||
|
0xFF, 0xF3, 0xFF, 0xFF, 0x1F, 0xFB, 0xF0, 0xFE, 0x3F, 0x07, 0xFE, 0x03,
|
||||||
|
0xFF, 0xE0, 0xFF, 0xFE, 0x3F, 0xFF, 0xE7, 0xF1, 0xFD, 0xFC, 0x1F, 0xBF,
|
||||||
|
0x01, 0xFF, 0xE0, 0x3F, 0xFC, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x1F, 0xFE,
|
||||||
|
0x03, 0xFF, 0xC0, 0x7F, 0xF8, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8,
|
||||||
|
0x00, 0x3F, 0x01, 0xFF, 0xE0, 0x3F, 0xFC, 0x07, 0xFF, 0x80, 0xFF, 0xF0,
|
||||||
|
0x1F, 0xFE, 0x03, 0xFF, 0xE0, 0xFC, 0xFE, 0x3F, 0x9F, 0xFF, 0xF1, 0xFF,
|
||||||
|
0xFC, 0x1F, 0xFF, 0x01, 0xFF, 0xC0, 0x00, 0xFF, 0x01, 0xFF, 0x03, 0xFF,
|
||||||
|
0x07, 0xFF, 0x07, 0xFF, 0x07, 0xE0, 0x0F, 0xE0, 0x0F, 0xE0, 0x0F, 0xC0,
|
||||||
|
0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0,
|
||||||
|
0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0,
|
||||||
|
0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0,
|
||||||
|
0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0,
|
||||||
|
0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0,
|
||||||
|
0x0F, 0xC0, 0x00, 0x00, 0x01, 0x00, 0xFF, 0x83, 0x81, 0xFF, 0xE3, 0xE1,
|
||||||
|
0xFF, 0xFB, 0xF1, 0xFF, 0xFF, 0xF8, 0xFC, 0x3F, 0xE0, 0xFC, 0x0F, 0xC0,
|
||||||
|
0x7E, 0x03, 0xE0, 0x3E, 0x01, 0xF0, 0x1F, 0x00, 0xF8, 0x0F, 0x80, 0x7C,
|
||||||
|
0x07, 0xC0, 0x3E, 0x03, 0xE0, 0x1F, 0x81, 0xF0, 0x0F, 0xC0, 0xF8, 0x07,
|
||||||
|
0xE0, 0x7C, 0x03, 0xE0, 0x3E, 0x01, 0xF0, 0x1F, 0x80, 0xF8, 0x0F, 0xC0,
|
||||||
|
0xFC, 0x03, 0xF0, 0x7C, 0x01, 0xFF, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x1F,
|
||||||
|
0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x0F, 0x30, 0x00, 0x0F, 0x00, 0x00, 0x0F,
|
||||||
|
0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0xFE, 0x00,
|
||||||
|
0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xF0, 0x07, 0xFF, 0xFC, 0x0F, 0x9F, 0xFE,
|
||||||
|
0x0F, 0x80, 0x3F, 0x8F, 0x80, 0x07, 0xC7, 0xC0, 0x03, 0xE7, 0xC0, 0x01,
|
||||||
|
0xF3, 0xF0, 0x00, 0xF9, 0xF8, 0x00, 0xFC, 0xFF, 0xC7, 0xFC, 0x3F, 0xFF,
|
||||||
|
0xFE, 0x1F, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x00, 0xFF, 0xFC, 0x00, 0x01,
|
||||||
|
0x00, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00,
|
||||||
|
0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00,
|
||||||
|
0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0,
|
||||||
|
0x00, 0xFE, 0x1F, 0xCF, 0xE7, 0xFE, 0xFE, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xF0, 0x7F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF,
|
||||||
|
0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F,
|
||||||
|
0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03,
|
||||||
|
0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0,
|
||||||
|
0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE,
|
||||||
|
0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF,
|
||||||
|
0xE0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xF0, 0x07, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07,
|
||||||
|
0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0,
|
||||||
|
0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xFC,
|
||||||
|
0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F,
|
||||||
|
0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x0F, 0xE3, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xEF, 0xF9, 0xFE, 0x1C, 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0,
|
||||||
|
0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x00,
|
||||||
|
0x3F, 0x80, 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x3F,
|
||||||
|
0x80, 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x1F, 0xFF, 0x80,
|
||||||
|
0x7E, 0xFE, 0x03, 0xFB, 0xF8, 0x0F, 0xCF, 0xE0, 0x7F, 0x3F, 0x83, 0xF8,
|
||||||
|
0xFE, 0x0F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE3, 0xF8, 0x3F, 0x8F, 0xE0, 0xFE,
|
||||||
|
0x7F, 0x03, 0xF9, 0xF8, 0x0F, 0xEF, 0xE0, 0x3F, 0xFF, 0x00, 0xFF, 0xFE,
|
||||||
|
0x03, 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x3F, 0xEF, 0xC0, 0xFF, 0x3F, 0x03,
|
||||||
|
0xFC, 0x7E, 0x0F, 0xE1, 0xF8, 0x3F, 0x87, 0xE0, 0xFE, 0x0F, 0xC3, 0xF8,
|
||||||
|
0x3F, 0x0F, 0xE0, 0xFE, 0x3F, 0x81, 0xF8, 0xFE, 0x07, 0xE3, 0xF8, 0x1F,
|
||||||
|
0xCF, 0xE0, 0x3F, 0x3F, 0x80, 0xFC, 0xFE, 0x01, 0xFB, 0xF8, 0x07, 0xEF,
|
||||||
|
0xE0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x00, 0x10, 0x3F, 0x0F, 0xF0,
|
||||||
|
0x7F, 0x8F, 0xCF, 0xFE, 0x3F, 0xF3, 0xF7, 0xFF, 0x9F, 0xFE, 0xFF, 0xFF,
|
||||||
|
0xEF, 0xFF, 0xBF, 0xC1, 0xFF, 0x07, 0xFF, 0xE0, 0x3F, 0x80, 0xFF, 0xF0,
|
||||||
|
0x0F, 0xC0, 0x3F, 0xFC, 0x03, 0xF0, 0x0F, 0xFF, 0x00, 0xFC, 0x03, 0xFF,
|
||||||
|
0xC0, 0x3F, 0x00, 0xFF, 0xF0, 0x0F, 0xC0, 0x3F, 0xFC, 0x03, 0xF0, 0x0F,
|
||||||
|
0xFF, 0x00, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0x00, 0xFF, 0xF0, 0x0F, 0xC0,
|
||||||
|
0x3F, 0xFC, 0x03, 0xF0, 0x0F, 0xFF, 0x00, 0xFC, 0x03, 0xFF, 0xC0, 0x3F,
|
||||||
|
0x00, 0xFF, 0xF0, 0x0F, 0xC0, 0x3F, 0xFC, 0x03, 0xF0, 0x0F, 0xFF, 0x00,
|
||||||
|
0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0x00, 0xFF, 0xF0, 0x0F, 0xC0, 0x3F, 0xFC,
|
||||||
|
0x03, 0xF0, 0x0F, 0xFF, 0x00, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0x00, 0xFF,
|
||||||
|
0xF0, 0x0F, 0xC0, 0x3F, 0xFC, 0x03, 0xF0, 0x0F, 0xFF, 0x00, 0xFC, 0x03,
|
||||||
|
0xFF, 0xC0, 0x3F, 0x00, 0xFF, 0xF0, 0x0F, 0xC0, 0x3F, 0xFC, 0x03, 0xF0,
|
||||||
|
0x0F, 0xFF, 0x00, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0x00, 0xFC, 0xFC, 0x1F,
|
||||||
|
0xCF, 0xC7, 0xFE, 0xFD, 0xFF, 0xEF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF0,
|
||||||
|
0x7F, 0xFE, 0x07, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC,
|
||||||
|
0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF,
|
||||||
|
0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F,
|
||||||
|
0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03,
|
||||||
|
0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0,
|
||||||
|
0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0x07,
|
||||||
|
0xFC, 0x03, 0xFF, 0xE0, 0xFF, 0xFE, 0x3F, 0xFF, 0xE7, 0xF1, 0xFD, 0xFC,
|
||||||
|
0x1F, 0xBF, 0x01, 0xFF, 0xE0, 0x3F, 0xFC, 0x07, 0xFF, 0x80, 0xFF, 0xF0,
|
||||||
|
0x1F, 0xFE, 0x03, 0xFF, 0xC0, 0x7F, 0xF8, 0x0F, 0xFF, 0x01, 0xFF, 0xE0,
|
||||||
|
0x3F, 0xFC, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x1F, 0xFE, 0x03, 0xFF, 0xC0,
|
||||||
|
0x7F, 0xF8, 0x0F, 0xFF, 0x01, 0xFF, 0xE0, 0x3F, 0xFC, 0x07, 0xFF, 0x80,
|
||||||
|
0xFF, 0xF0, 0x1F, 0xFE, 0x03, 0xFF, 0xE0, 0xFE, 0xFE, 0x3F, 0x9F, 0xFF,
|
||||||
|
0xF1, 0xFF, 0xFC, 0x1F, 0xFF, 0x01, 0xFF, 0x80, 0xFC, 0x7F, 0x07, 0xE7,
|
||||||
|
0xFE, 0x3F, 0x7F, 0xF1, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0x7F, 0x83, 0xFB,
|
||||||
|
0xF0, 0x0F, 0xDF, 0x80, 0x7E, 0xFC, 0x03, 0xF7, 0xE0, 0x1F, 0xFF, 0x00,
|
||||||
|
0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x3F, 0xFE, 0x01, 0xFF, 0xF0, 0x0F, 0xFF,
|
||||||
|
0x80, 0x7F, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, 0x00, 0xFF, 0xF8, 0x07,
|
||||||
|
0xFF, 0xC0, 0x3F, 0xFE, 0x01, 0xFF, 0xF0, 0x0F, 0xFF, 0x80, 0x7F, 0xFC,
|
||||||
|
0x03, 0xF7, 0xE0, 0x1F, 0xBF, 0x00, 0xFD, 0xF8, 0x07, 0xEF, 0xE0, 0x7F,
|
||||||
|
0x7F, 0xFF, 0xF3, 0xFF, 0xFF, 0x9F, 0xFF, 0xF8, 0xFC, 0xFF, 0x87, 0xE3,
|
||||||
|
0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03,
|
||||||
|
0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00,
|
||||||
|
0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0xE3, 0xF1, 0xFF, 0xBF,
|
||||||
|
0x3F, 0xFF, 0xF7, 0xFF, 0xFF, 0x7F, 0xFF, 0xF7, 0xE0, 0x7F, 0xFE, 0x03,
|
||||||
|
0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0,
|
||||||
|
0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC,
|
||||||
|
0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF,
|
||||||
|
0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F, 0xFC, 0x03, 0xFF, 0xC0, 0x3F,
|
||||||
|
0xFC, 0x03, 0xFF, 0xE0, 0x3F, 0xFE, 0x07, 0xF7, 0xFF, 0xFF, 0x7F, 0xFF,
|
||||||
|
0xF3, 0xFF, 0xFF, 0x1F, 0xFB, 0xF0, 0xFF, 0x3F, 0x00, 0x03, 0xF0, 0x00,
|
||||||
|
0x3F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00,
|
||||||
|
0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF0,
|
||||||
|
0xFE, 0x1F, 0xFC, 0xFF, 0xFB, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xE0, 0xFF, 0x80, 0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xE0,
|
||||||
|
0x1F, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x07,
|
||||||
|
0xF0, 0x0F, 0xE0, 0x1F, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x01, 0xFC,
|
||||||
|
0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0xC0, 0x3F, 0x80, 0x7F, 0x00,
|
||||||
|
0xFE, 0x01, 0xFC, 0x00, 0x03, 0xFC, 0x01, 0xFF, 0xE0, 0x7F, 0xFC, 0x1F,
|
||||||
|
0xFF, 0xC3, 0xF8, 0xFC, 0x7E, 0x0F, 0x9F, 0x80, 0xF3, 0xF0, 0x1F, 0x7E,
|
||||||
|
0x03, 0xEF, 0xC0, 0x60, 0xFC, 0x00, 0x1F, 0xC0, 0x03, 0xFC, 0x00, 0x3F,
|
||||||
|
0xC0, 0x03, 0xFC, 0x00, 0x3F, 0xC0, 0x03, 0xFE, 0x00, 0x3F, 0xE0, 0x03,
|
||||||
|
0xFC, 0x00, 0x3F, 0xC0, 0x03, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xF8, 0x20,
|
||||||
|
0x3F, 0x3C, 0x03, 0xFF, 0x80, 0x7D, 0xF0, 0x0F, 0xBF, 0x01, 0xF7, 0xF0,
|
||||||
|
0x7E, 0x7F, 0x1F, 0xCF, 0xFF, 0xF0, 0xFF, 0xFE, 0x0F, 0xFF, 0x80, 0x7F,
|
||||||
|
0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F,
|
||||||
|
0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F,
|
||||||
|
0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F,
|
||||||
|
0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F,
|
||||||
|
0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F,
|
||||||
|
0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF1, 0x07, 0xFF, 0x07,
|
||||||
|
0xFF, 0x03, 0xFF, 0x01, 0xFF, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xFC, 0x07,
|
||||||
|
0xFF, 0xC0, 0x7F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xFC, 0x07, 0xFF, 0xC0,
|
||||||
|
0x7F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xFC,
|
||||||
|
0x07, 0xFF, 0xC0, 0x7F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xFC, 0x07, 0xFF,
|
||||||
|
0xC0, 0x7F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F,
|
||||||
|
0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xFC, 0x07,
|
||||||
|
0xFF, 0xC0, 0x7F, 0xFE, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF,
|
||||||
|
0x7F, 0x7F, 0xE7, 0xF3, 0xF8, 0x7F, 0xFC, 0x01, 0xFF, 0xE0, 0x1F, 0xBF,
|
||||||
|
0x80, 0xFC, 0xFC, 0x07, 0xE7, 0xE0, 0x3F, 0x3F, 0x01, 0xF9, 0xF8, 0x0F,
|
||||||
|
0xCF, 0xC0, 0xFC, 0x3F, 0x07, 0xE1, 0xF8, 0x3F, 0x0F, 0xC1, 0xF8, 0x7E,
|
||||||
|
0x0F, 0xC3, 0xF0, 0x7C, 0x0F, 0x83, 0xE0, 0x7C, 0x3F, 0x03, 0xF1, 0xF8,
|
||||||
|
0x1F, 0x8F, 0xC0, 0xFC, 0x7C, 0x03, 0xE3, 0xE0, 0x1F, 0x1F, 0x00, 0xF9,
|
||||||
|
0xF8, 0x07, 0xCF, 0xC0, 0x3F, 0x7C, 0x00, 0xFB, 0xE0, 0x07, 0xDF, 0x00,
|
||||||
|
0x3E, 0xF8, 0x01, 0xF7, 0xC0, 0x0F, 0xFE, 0x00, 0x7F, 0xE0, 0x01, 0xFF,
|
||||||
|
0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xC0, 0x03, 0xFE, 0x00, 0x1F, 0xE0, 0x00,
|
||||||
|
0xF8, 0x07, 0xC0, 0x3F, 0xF0, 0x0F, 0x80, 0x7F, 0xE0, 0x3F, 0x01, 0xFF,
|
||||||
|
0xC0, 0x7E, 0x03, 0xEF, 0x80, 0xFC, 0x07, 0xCF, 0x81, 0xFC, 0x0F, 0x9F,
|
||||||
|
0x03, 0xF8, 0x1F, 0x3E, 0x0F, 0xF0, 0x3E, 0x7C, 0x1F, 0xE0, 0x7C, 0xF8,
|
||||||
|
0x3F, 0xC1, 0xF1, 0xF0, 0x7F, 0xC3, 0xE3, 0xE0, 0xF7, 0x87, 0xC3, 0xE1,
|
||||||
|
0xEF, 0x0F, 0x87, 0xC7, 0xDE, 0x1F, 0x0F, 0x8F, 0x3C, 0x3E, 0x1F, 0x1E,
|
||||||
|
0x78, 0x78, 0x3E, 0x3C, 0x79, 0xF0, 0x7C, 0x78, 0xF3, 0xE0, 0x78, 0xF1,
|
||||||
|
0xE7, 0xC0, 0xFB, 0xE3, 0xCF, 0x81, 0xF7, 0x87, 0x9F, 0x03, 0xEF, 0x07,
|
||||||
|
0xBC, 0x07, 0xDE, 0x0F, 0x78, 0x0F, 0xBC, 0x1F, 0xF0, 0x0F, 0xF8, 0x3F,
|
||||||
|
0xE0, 0x1F, 0xE0, 0x7F, 0xC0, 0x3F, 0xC0, 0x7F, 0x80, 0x7F, 0x80, 0xFE,
|
||||||
|
0x00, 0xFF, 0x01, 0xFC, 0x01, 0xFE, 0x03, 0xF8, 0x01, 0xF8, 0x07, 0xF0,
|
||||||
|
0x03, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x0F, 0xC0, 0x0F, 0xC0, 0x1F, 0x00,
|
||||||
|
0xFC, 0x01, 0xFF, 0xE0, 0x1F, 0xDF, 0x80, 0xFC, 0xFC, 0x07, 0xE3, 0xF0,
|
||||||
|
0x7E, 0x1F, 0x83, 0xF0, 0x7E, 0x3F, 0x03, 0xF1, 0xF8, 0x0F, 0xCF, 0x80,
|
||||||
|
0x7E, 0xFC, 0x01, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, 0x01, 0xFF,
|
||||||
|
0x00, 0x0F, 0xF8, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00,
|
||||||
|
0xFF, 0x00, 0x07, 0xFC, 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x80, 0x3F, 0xFC,
|
||||||
|
0x01, 0xFB, 0xF0, 0x0F, 0x9F, 0x80, 0xFC, 0xFC, 0x07, 0xC3, 0xF0, 0x7E,
|
||||||
|
0x1F, 0x83, 0xF0, 0x7E, 0x3F, 0x03, 0xF1, 0xF8, 0x0F, 0xCF, 0x80, 0x7E,
|
||||||
|
0xFC, 0x01, 0xFF, 0xE0, 0x0F, 0xC0, 0xFC, 0x01, 0xFF, 0xE0, 0x0F, 0xFF,
|
||||||
|
0x00, 0x7E, 0xFC, 0x07, 0xF7, 0xE0, 0x3F, 0x3F, 0x01, 0xF9, 0xF8, 0x0F,
|
||||||
|
0xCF, 0xC0, 0x7E, 0x3F, 0x03, 0xE1, 0xF8, 0x3F, 0x0F, 0xC1, 0xF8, 0x7E,
|
||||||
|
0x0F, 0xC1, 0xF0, 0x7E, 0x0F, 0x83, 0xE0, 0x7E, 0x1F, 0x03, 0xF1, 0xF8,
|
||||||
|
0x0F, 0x8F, 0xC0, 0x7C, 0x7C, 0x03, 0xE3, 0xE0, 0x1F, 0x9F, 0x00, 0x7D,
|
||||||
|
0xF8, 0x03, 0xEF, 0xC0, 0x1F, 0x7C, 0x00, 0xFB, 0xE0, 0x07, 0xDF, 0x00,
|
||||||
|
0x1F, 0xF8, 0x00, 0xFF, 0x80, 0x07, 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0xFF,
|
||||||
|
0x00, 0x07, 0xF8, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x07, 0xE0, 0x00,
|
||||||
|
0x3F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x80, 0x03, 0xFC, 0x00, 0xFF, 0xC0,
|
||||||
|
0x07, 0xFE, 0x00, 0x3F, 0xE0, 0x01, 0xFC, 0x00, 0x0C, 0x00, 0x00, 0x7F,
|
||||||
|
0xFF, 0xBF, 0xFF, 0xDF, 0xFF, 0xEF, 0xFF, 0xF7, 0xFF, 0xF8, 0x01, 0xF8,
|
||||||
|
0x00, 0xFC, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x3F,
|
||||||
|
0x80, 0x1F, 0x80, 0x0F, 0xC0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x03,
|
||||||
|
0xF0, 0x01, 0xF8, 0x01, 0xFC, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0x7E, 0x00,
|
||||||
|
0x7F, 0x00, 0x3F, 0x80, 0x1F, 0x80, 0x1F, 0xC0, 0x0F, 0xC0, 0x0F, 0xE0,
|
||||||
|
0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0,
|
||||||
|
0x00, 0xFC, 0x0F, 0xF0, 0x7F, 0xC3, 0xFF, 0x0F, 0xFC, 0x3F, 0x80, 0xFE,
|
||||||
|
0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F,
|
||||||
|
0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F,
|
||||||
|
0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x7F, 0x01, 0xFC, 0x3F,
|
||||||
|
0xE0, 0xFF, 0x03, 0xF8, 0x0F, 0xF0, 0x3F, 0xE0, 0x1F, 0xC0, 0x7F, 0x00,
|
||||||
|
0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0,
|
||||||
|
0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0,
|
||||||
|
0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xE0, 0x3F, 0x80, 0xFF,
|
||||||
|
0x83, 0xFF, 0x07, 0xFC, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFC, 0xFC, 0x03, 0xFC, 0x0F, 0xF8, 0x3F, 0xE0, 0xFF, 0xC0,
|
||||||
|
0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0,
|
||||||
|
0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC,
|
||||||
|
0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F,
|
||||||
|
0x80, 0xFE, 0x01, 0xFF, 0x07, 0xFC, 0x07, 0xF0, 0x3F, 0xC1, 0xFF, 0x0F,
|
||||||
|
0xE0, 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03,
|
||||||
|
0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00,
|
||||||
|
0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0,
|
||||||
|
0x7F, 0x0F, 0xFC, 0x3F, 0xE0, 0xFF, 0x83, 0xFC, 0x0F, 0xE0, 0x00, 0x03,
|
||||||
|
0x80, 0x00, 0x3F, 0x80, 0x43, 0xFF, 0x83, 0x9F, 0xFF, 0xBF, 0xFF, 0xFF,
|
||||||
|
0xFD, 0xF3, 0xFF, 0xE7, 0x03, 0xFF, 0x08, 0x03, 0xF0, 0x00, 0x03, 0x80 };
|
||||||
|
|
||||||
|
const GFXglyph Oswald_Regular30pt7bGlyphs[] PROGMEM = {
|
||||||
|
{ 0, 1, 1, 13, 0, 0 }, // 0x20 ' '
|
||||||
|
{ 1, 6, 48, 12, 3, -47 }, // 0x21 '!'
|
||||||
|
{ 37, 14, 15, 16, 1, -47 }, // 0x22 '"'
|
||||||
|
{ 64, 25, 48, 29, 2, -47 }, // 0x23 '#'
|
||||||
|
{ 214, 24, 57, 29, 2, -51 }, // 0x24 '$'
|
||||||
|
{ 385, 48, 48, 52, 2, -47 }, // 0x25 '%'
|
||||||
|
{ 673, 29, 49, 36, 3, -47 }, // 0x26 '&'
|
||||||
|
{ 851, 6, 15, 7, 1, -47 }, // 0x27 '''
|
||||||
|
{ 863, 12, 59, 18, 4, -47 }, // 0x28 '('
|
||||||
|
{ 952, 11, 59, 15, 2, -47 }, // 0x29 ')'
|
||||||
|
{ 1034, 19, 20, 23, 3, -47 }, // 0x2A '*'
|
||||||
|
{ 1082, 22, 24, 24, 1, -35 }, // 0x2B '+'
|
||||||
|
{ 1148, 7, 15, 11, 2, -6 }, // 0x2C ','
|
||||||
|
{ 1162, 13, 5, 19, 3, -19 }, // 0x2D '-'
|
||||||
|
{ 1171, 6, 7, 11, 3, -6 }, // 0x2E '.'
|
||||||
|
{ 1177, 18, 48, 22, 2, -47 }, // 0x2F '/'
|
||||||
|
{ 1285, 24, 49, 30, 3, -47 }, // 0x30 '0'
|
||||||
|
{ 1432, 14, 48, 23, 2, -47 }, // 0x31 '1'
|
||||||
|
{ 1516, 24, 48, 28, 2, -47 }, // 0x32 '2'
|
||||||
|
{ 1660, 24, 49, 28, 2, -47 }, // 0x33 '3'
|
||||||
|
{ 1807, 26, 48, 28, 2, -47 }, // 0x34 '4'
|
||||||
|
{ 1963, 23, 48, 28, 3, -47 }, // 0x35 '5'
|
||||||
|
{ 2101, 24, 49, 30, 3, -47 }, // 0x36 '6'
|
||||||
|
{ 2248, 19, 48, 23, 1, -47 }, // 0x37 '7'
|
||||||
|
{ 2362, 23, 49, 29, 3, -47 }, // 0x38 '8'
|
||||||
|
{ 2503, 23, 49, 30, 3, -47 }, // 0x39 '9'
|
||||||
|
{ 2644, 6, 25, 12, 4, -30 }, // 0x3A ':'
|
||||||
|
{ 2663, 7, 36, 13, 3, -32 }, // 0x3B ';'
|
||||||
|
{ 2695, 17, 30, 22, 2, -31 }, // 0x3C '<'
|
||||||
|
{ 2759, 18, 16, 24, 3, -31 }, // 0x3D '='
|
||||||
|
{ 2795, 17, 30, 22, 3, -31 }, // 0x3E '>'
|
||||||
|
{ 2859, 23, 48, 29, 3, -47 }, // 0x3F '?'
|
||||||
|
{ 2997, 48, 56, 53, 3, -47 }, // 0x40 '@'
|
||||||
|
{ 3333, 27, 48, 29, 1, -47 }, // 0x41 'A'
|
||||||
|
{ 3495, 25, 48, 31, 4, -47 }, // 0x42 'B'
|
||||||
|
{ 3645, 25, 49, 30, 3, -47 }, // 0x43 'C'
|
||||||
|
{ 3799, 24, 48, 31, 4, -47 }, // 0x44 'D'
|
||||||
|
{ 3943, 18, 48, 24, 4, -47 }, // 0x45 'E'
|
||||||
|
{ 4051, 18, 48, 23, 4, -47 }, // 0x46 'F'
|
||||||
|
{ 4159, 25, 49, 31, 3, -47 }, // 0x47 'G'
|
||||||
|
{ 4313, 25, 48, 33, 4, -47 }, // 0x48 'H'
|
||||||
|
{ 4463, 7, 48, 15, 4, -47 }, // 0x49 'I'
|
||||||
|
{ 4505, 14, 49, 18, 0, -47 }, // 0x4A 'J'
|
||||||
|
{ 4591, 25, 48, 29, 4, -47 }, // 0x4B 'K'
|
||||||
|
{ 4741, 19, 48, 23, 4, -47 }, // 0x4C 'L'
|
||||||
|
{ 4855, 31, 48, 39, 4, -47 }, // 0x4D 'M'
|
||||||
|
{ 5041, 23, 48, 31, 4, -47 }, // 0x4E 'N'
|
||||||
|
{ 5179, 26, 49, 32, 3, -47 }, // 0x4F 'O'
|
||||||
|
{ 5339, 23, 48, 28, 4, -47 }, // 0x50 'P'
|
||||||
|
{ 5477, 26, 58, 32, 3, -47 }, // 0x51 'Q'
|
||||||
|
{ 5666, 24, 48, 30, 4, -47 }, // 0x52 'R'
|
||||||
|
{ 5810, 24, 49, 28, 2, -47 }, // 0x53 'S'
|
||||||
|
{ 5957, 22, 48, 24, 1, -47 }, // 0x54 'T'
|
||||||
|
{ 6089, 26, 49, 32, 3, -47 }, // 0x55 'U'
|
||||||
|
{ 6249, 27, 48, 30, 1, -47 }, // 0x56 'V'
|
||||||
|
{ 6411, 39, 48, 43, 2, -47 }, // 0x57 'W'
|
||||||
|
{ 6645, 27, 48, 28, 1, -47 }, // 0x58 'X'
|
||||||
|
{ 6807, 27, 48, 28, 1, -47 }, // 0x59 'Y'
|
||||||
|
{ 6969, 21, 48, 25, 2, -47 }, // 0x5A 'Z'
|
||||||
|
{ 7095, 13, 59, 20, 4, -47 }, // 0x5B '['
|
||||||
|
{ 7191, 18, 48, 22, 2, -47 }, // 0x5C '\'
|
||||||
|
{ 7299, 13, 59, 18, 2, -47 }, // 0x5D ']'
|
||||||
|
{ 7395, 22, 19, 26, 2, -47 }, // 0x5E '^'
|
||||||
|
{ 7448, 20, 5, 20, 0, 4 }, // 0x5F '_'
|
||||||
|
{ 7461, 10, 12, 16, 3, -47 }, // 0x60 '`'
|
||||||
|
{ 7476, 21, 34, 25, 2, -33 }, // 0x61 'a'
|
||||||
|
{ 7566, 21, 48, 26, 3, -47 }, // 0x62 'b'
|
||||||
|
{ 7692, 19, 34, 24, 3, -33 }, // 0x63 'c'
|
||||||
|
{ 7773, 20, 48, 26, 3, -47 }, // 0x64 'd'
|
||||||
|
{ 7893, 19, 34, 25, 3, -33 }, // 0x65 'e'
|
||||||
|
{ 7974, 16, 46, 17, 1, -45 }, // 0x66 'f'
|
||||||
|
{ 8066, 25, 46, 26, 1, -34 }, // 0x67 'g'
|
||||||
|
{ 8210, 20, 48, 26, 3, -47 }, // 0x68 'h'
|
||||||
|
{ 8330, 6, 46, 13, 4, -45 }, // 0x69 'i'
|
||||||
|
{ 8365, 11, 55, 14, -1, -45 }, // 0x6A 'j'
|
||||||
|
{ 8441, 22, 48, 25, 3, -47 }, // 0x6B 'k'
|
||||||
|
{ 8573, 6, 48, 13, 4, -47 }, // 0x6C 'l'
|
||||||
|
{ 8609, 34, 35, 40, 3, -34 }, // 0x6D 'm'
|
||||||
|
{ 8758, 20, 34, 26, 3, -33 }, // 0x6E 'n'
|
||||||
|
{ 8843, 19, 34, 25, 3, -33 }, // 0x6F 'o'
|
||||||
|
{ 8924, 21, 45, 26, 3, -33 }, // 0x70 'p'
|
||||||
|
{ 9043, 20, 45, 26, 3, -33 }, // 0x71 'q'
|
||||||
|
{ 9156, 15, 34, 19, 3, -33 }, // 0x72 'r'
|
||||||
|
{ 9220, 19, 34, 22, 1, -33 }, // 0x73 's'
|
||||||
|
{ 9301, 16, 44, 18, 1, -43 }, // 0x74 't'
|
||||||
|
{ 9389, 20, 34, 26, 3, -33 }, // 0x75 'u'
|
||||||
|
{ 9474, 21, 34, 23, 1, -33 }, // 0x76 'v'
|
||||||
|
{ 9564, 31, 34, 35, 2, -33 }, // 0x77 'w'
|
||||||
|
{ 9696, 21, 34, 23, 1, -33 }, // 0x78 'x'
|
||||||
|
{ 9786, 21, 43, 23, 1, -33 }, // 0x79 'y'
|
||||||
|
{ 9899, 17, 34, 20, 2, -33 }, // 0x7A 'z'
|
||||||
|
{ 9972, 14, 59, 18, 2, -47 }, // 0x7B '{'
|
||||||
|
{ 10076, 6, 57, 14, 4, -47 }, // 0x7C '|'
|
||||||
|
{ 10119, 14, 59, 19, 3, -47 }, // 0x7D '}'
|
||||||
|
{ 10223, 22, 9, 26, 2, -29 } }; // 0x7E '~'
|
||||||
|
|
||||||
|
const GFXfont Oswald_Regular30pt7b PROGMEM = {
|
||||||
|
(uint8_t *)Oswald_Regular30pt7bBitmaps,
|
||||||
|
(GFXglyph *)Oswald_Regular30pt7bGlyphs,
|
||||||
|
0x20, 0x7E, 87 };
|
||||||
|
|
||||||
|
// Approx. 10920 bytes
|
7817
src/fonts/oswald-90.h
Normal file
7817
src/fonts/oswald-90.h
Normal file
File diff suppressed because it is too large
Load Diff
296
src/fonts/ubuntu-italic12.h
Normal file
296
src/fonts/ubuntu-italic12.h
Normal file
@ -0,0 +1,296 @@
|
|||||||
|
const uint8_t Ubuntu_Italic12pt7bBitmaps[] PROGMEM = {
|
||||||
|
0x00, 0x0C, 0x31, 0x86, 0x18, 0x63, 0x0C, 0x30, 0x86, 0x00, 0x00, 0x0E,
|
||||||
|
0x38, 0xE0, 0x66, 0xCF, 0x36, 0x6C, 0xD1, 0x00, 0x01, 0x83, 0x03, 0x06,
|
||||||
|
0x03, 0x06, 0x03, 0x06, 0x7F, 0xFF, 0x7F, 0xFF, 0x0C, 0x18, 0x0C, 0x18,
|
||||||
|
0x1C, 0x38, 0x18, 0x30, 0x18, 0x30, 0xFF, 0xFE, 0xFF, 0xFE, 0x60, 0xC0,
|
||||||
|
0x60, 0xC0, 0x60, 0xC0, 0xC1, 0x80, 0x00, 0x60, 0x07, 0x00, 0x30, 0x07,
|
||||||
|
0xE0, 0xFF, 0x86, 0x08, 0x60, 0x03, 0x00, 0x18, 0x00, 0xE0, 0x03, 0xC0,
|
||||||
|
0x0F, 0x00, 0x1C, 0x00, 0x70, 0x01, 0x80, 0x0C, 0x00, 0x62, 0x0E, 0x3F,
|
||||||
|
0xF0, 0xFE, 0x00, 0xC0, 0x0E, 0x00, 0x60, 0x00, 0x1E, 0x03, 0x23, 0x06,
|
||||||
|
0x63, 0x0C, 0xC3, 0x18, 0xC3, 0x30, 0xC3, 0x70, 0xC6, 0x60, 0xC4, 0xC0,
|
||||||
|
0x79, 0x9E, 0x03, 0x23, 0x06, 0x63, 0x0E, 0xC3, 0x0C, 0xC3, 0x18, 0xC3,
|
||||||
|
0x30, 0xC6, 0x60, 0xC4, 0xC0, 0x78, 0x03, 0xE0, 0x1F, 0xC0, 0xE3, 0x03,
|
||||||
|
0x0C, 0x0C, 0x30, 0x31, 0x80, 0xCE, 0x01, 0xF0, 0x0F, 0x00, 0xFC, 0x27,
|
||||||
|
0x39, 0xD8, 0x66, 0xC0, 0xF3, 0x01, 0xCC, 0x06, 0x38, 0x7C, 0x7F, 0xB0,
|
||||||
|
0xF8, 0x60, 0x6F, 0x6D, 0x00, 0x01, 0x01, 0xC1, 0xC1, 0xC0, 0xC0, 0xC0,
|
||||||
|
0xE0, 0x60, 0x70, 0x30, 0x18, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0,
|
||||||
|
0x60, 0x30, 0x18, 0x06, 0x03, 0x01, 0x00, 0x02, 0x06, 0x06, 0x03, 0x03,
|
||||||
|
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, 0x06, 0x06, 0x0C, 0x0C,
|
||||||
|
0x18, 0x18, 0x30, 0x70, 0xE0, 0x40, 0x1C, 0x0E, 0x37, 0x7D, 0x77, 0xF0,
|
||||||
|
0xE0, 0xD8, 0xEE, 0x22, 0x00, 0x03, 0x00, 0x60, 0x18, 0x03, 0x00, 0x61,
|
||||||
|
0xFF, 0xFF, 0xF8, 0x60, 0x0C, 0x01, 0x80, 0x60, 0x0C, 0x00, 0x18, 0xCC,
|
||||||
|
0x67, 0x33, 0x00, 0xFF, 0xF0, 0xFF, 0x80, 0x00, 0x07, 0x00, 0x06, 0x00,
|
||||||
|
0x0E, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00,
|
||||||
|
0x60, 0x00, 0xC0, 0x01, 0xC0, 0x01, 0x80, 0x03, 0x80, 0x03, 0x00, 0x06,
|
||||||
|
0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x70,
|
||||||
|
0x00, 0x60, 0x00, 0xE0, 0x00, 0x03, 0xC0, 0xFE, 0x1C, 0x73, 0x83, 0x30,
|
||||||
|
0x37, 0x03, 0x60, 0x36, 0x03, 0xC0, 0x3C, 0x06, 0xC0, 0x6C, 0x0E, 0xC0,
|
||||||
|
0xCC, 0x1C, 0xE3, 0x87, 0xF0, 0x3C, 0x00, 0x06, 0x3C, 0xF7, 0xEC, 0xC1,
|
||||||
|
0x86, 0x0C, 0x18, 0x30, 0xE1, 0x83, 0x06, 0x0C, 0x30, 0x60, 0x07, 0xC0,
|
||||||
|
0xFE, 0x1C, 0x71, 0x03, 0x00, 0x30, 0x03, 0x00, 0x60, 0x0E, 0x01, 0xC0,
|
||||||
|
0x38, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0x60, 0x0F, 0xFC, 0xFF, 0xC0,
|
||||||
|
0x07, 0xC0, 0xFE, 0x08, 0x70, 0x03, 0x00, 0x30, 0x07, 0x00, 0xE0, 0x7C,
|
||||||
|
0x07, 0xC0, 0x0E, 0x00, 0x60, 0x06, 0x00, 0x60, 0x0E, 0x41, 0xCF, 0xF8,
|
||||||
|
0x7E, 0x00, 0x00, 0x38, 0x03, 0x80, 0x3C, 0x03, 0x60, 0x33, 0x03, 0x38,
|
||||||
|
0x31, 0x83, 0x8C, 0x18, 0x61, 0x87, 0x18, 0x30, 0xFF, 0xEF, 0xFF, 0x00,
|
||||||
|
0x60, 0x03, 0x00, 0x30, 0x01, 0x80, 0x03, 0xF8, 0x1F, 0xC1, 0x80, 0x0C,
|
||||||
|
0x00, 0xC0, 0x06, 0x00, 0x3C, 0x03, 0xF8, 0x01, 0xC0, 0x07, 0x00, 0x18,
|
||||||
|
0x00, 0xC0, 0x06, 0x00, 0x71, 0x07, 0x1F, 0xF0, 0x7E, 0x00, 0x00, 0xF0,
|
||||||
|
0x3F, 0x0F, 0x01, 0xC0, 0x38, 0x03, 0x00, 0x6F, 0x87, 0xFC, 0xF0, 0xEC,
|
||||||
|
0x06, 0xC0, 0x6C, 0x06, 0xC0, 0x6C, 0x0C, 0xE1, 0xC7, 0xF8, 0x3E, 0x00,
|
||||||
|
0x7F, 0xF7, 0xFF, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x38, 0x07, 0x00, 0x60,
|
||||||
|
0x0C, 0x01, 0xC0, 0x18, 0x03, 0x00, 0x30, 0x06, 0x00, 0x60, 0x0E, 0x00,
|
||||||
|
0xC0, 0x00, 0x07, 0xE0, 0x7F, 0x87, 0x0E, 0x70, 0x33, 0x01, 0x98, 0x0C,
|
||||||
|
0xE0, 0xC3, 0xFC, 0x1F, 0x81, 0xCE, 0x18, 0x39, 0x80, 0xCC, 0x06, 0x60,
|
||||||
|
0x73, 0x87, 0x0F, 0xF0, 0x3F, 0x00, 0x03, 0xE0, 0x7F, 0x87, 0x0E, 0x30,
|
||||||
|
0x33, 0x01, 0x98, 0x0C, 0xC0, 0x67, 0x07, 0x1F, 0xF8, 0x7F, 0x80, 0x0C,
|
||||||
|
0x00, 0xC0, 0x0E, 0x00, 0xE0, 0x1E, 0x1F, 0xC0, 0xF8, 0x00, 0x39, 0xCE,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x39, 0xCE, 0x00, 0x0E, 0x1C, 0x38, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x60, 0xC3, 0x06, 0x1C, 0x30, 0xC0, 0x00, 0x10,
|
||||||
|
0x0F, 0x07, 0xE1, 0xF0, 0xF8, 0x0E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80,
|
||||||
|
0x1C, 0x00, 0x00, 0x7F, 0xF7, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFE,
|
||||||
|
0xFF, 0xE0, 0x00, 0x03, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x06, 0x03,
|
||||||
|
0xE0, 0xF8, 0x7E, 0x0F, 0x00, 0x80, 0x00, 0x1F, 0x1F, 0xC8, 0x60, 0x30,
|
||||||
|
0x18, 0x18, 0x1C, 0x1C, 0x18, 0x18, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x01,
|
||||||
|
0xC0, 0xE0, 0x70, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF8, 0x07, 0x81, 0xC0,
|
||||||
|
0xE0, 0x0E, 0x1C, 0x00, 0x73, 0x87, 0xC3, 0x31, 0xFE, 0x36, 0x38, 0x63,
|
||||||
|
0x63, 0x0C, 0x3C, 0x60, 0xC3, 0xC6, 0x0C, 0x3C, 0x61, 0x86, 0xC6, 0x18,
|
||||||
|
0x6C, 0x71, 0x8E, 0xC3, 0xFF, 0xCC, 0x1E, 0xF0, 0x60, 0x00, 0x07, 0x00,
|
||||||
|
0x00, 0x38, 0x10, 0x01, 0xFF, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x30, 0x01,
|
||||||
|
0xC0, 0x0F, 0x80, 0x36, 0x01, 0xD8, 0x06, 0x60, 0x31, 0x81, 0xC6, 0x06,
|
||||||
|
0x18, 0x38, 0x61, 0xC1, 0x87, 0xFF, 0x3F, 0xFC, 0xC0, 0x36, 0x00, 0xD8,
|
||||||
|
0x03, 0xC0, 0x0C, 0x0F, 0xF0, 0x3F, 0xE1, 0x81, 0xC6, 0x03, 0x18, 0x0C,
|
||||||
|
0x60, 0x33, 0x03, 0x8F, 0xFC, 0x3F, 0xF0, 0xC0, 0xE3, 0x01, 0x98, 0x06,
|
||||||
|
0x60, 0x19, 0x80, 0xE6, 0x0F, 0x3F, 0xF8, 0xFF, 0x00, 0x01, 0xF8, 0x1F,
|
||||||
|
0xF1, 0xE0, 0x8E, 0x00, 0x30, 0x01, 0x80, 0x06, 0x00, 0x30, 0x00, 0xC0,
|
||||||
|
0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x80, 0x07, 0x06, 0x0F,
|
||||||
|
0xF8, 0x1F, 0xC0, 0x0F, 0xE0, 0x1F, 0xF0, 0x60, 0x70, 0xC0, 0x61, 0x80,
|
||||||
|
0x63, 0x00, 0xCE, 0x01, 0x98, 0x03, 0x30, 0x06, 0x60, 0x0C, 0xC0, 0x33,
|
||||||
|
0x00, 0x66, 0x01, 0x8C, 0x07, 0x18, 0x3C, 0x7F, 0xE0, 0xFF, 0x00, 0x0F,
|
||||||
|
0xF8, 0x7F, 0xC6, 0x00, 0x30, 0x01, 0x80, 0x0C, 0x00, 0xE0, 0x07, 0xF8,
|
||||||
|
0x3F, 0xC1, 0x80, 0x0C, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x1F,
|
||||||
|
0xF8, 0xFF, 0xC0, 0x0F, 0xFC, 0x3F, 0xF1, 0x80, 0x06, 0x00, 0x18, 0x00,
|
||||||
|
0x60, 0x03, 0x00, 0x0F, 0xF8, 0x3F, 0xE0, 0xC0, 0x03, 0x00, 0x18, 0x00,
|
||||||
|
0x60, 0x01, 0x80, 0x06, 0x00, 0x30, 0x00, 0xC0, 0x00, 0x01, 0xFC, 0x0F,
|
||||||
|
0xFC, 0x78, 0x11, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x70, 0x00,
|
||||||
|
0xC0, 0x01, 0x80, 0x33, 0x00, 0xE6, 0x01, 0x8C, 0x03, 0x1C, 0x06, 0x1C,
|
||||||
|
0x18, 0x1F, 0xF0, 0x1F, 0xC0, 0x0C, 0x03, 0x0C, 0x03, 0x18, 0x06, 0x18,
|
||||||
|
0x06, 0x18, 0x06, 0x18, 0x06, 0x38, 0x0C, 0x3F, 0xFC, 0x3F, 0xFC, 0x30,
|
||||||
|
0x0C, 0x30, 0x1C, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0xC0,
|
||||||
|
0x30, 0xC0, 0x30, 0x0C, 0x31, 0x86, 0x18, 0x63, 0x0C, 0x30, 0xC7, 0x18,
|
||||||
|
0x61, 0x86, 0x30, 0xC0, 0x00, 0x18, 0x00, 0xC0, 0x0C, 0x00, 0x60, 0x03,
|
||||||
|
0x00, 0x38, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x06, 0x00, 0x30, 0x01, 0x80,
|
||||||
|
0x0C, 0x00, 0xC1, 0x0E, 0x1F, 0xE0, 0x7E, 0x00, 0x0C, 0x07, 0x0C, 0x0E,
|
||||||
|
0x18, 0x3C, 0x18, 0x70, 0x18, 0xE0, 0x19, 0xC0, 0x3B, 0x80, 0x3F, 0x00,
|
||||||
|
0x3E, 0x00, 0x37, 0x00, 0x33, 0x80, 0x61, 0xC0, 0x61, 0xC0, 0x60, 0xE0,
|
||||||
|
0x60, 0x70, 0xC0, 0x30, 0xC0, 0x38, 0x0C, 0x03, 0x01, 0x80, 0x60, 0x18,
|
||||||
|
0x06, 0x03, 0x80, 0xC0, 0x30, 0x0C, 0x03, 0x01, 0x80, 0x60, 0x18, 0x06,
|
||||||
|
0x03, 0xFF, 0xFF, 0xC0, 0x06, 0x00, 0xE1, 0xC0, 0x1C, 0x3C, 0x07, 0x87,
|
||||||
|
0x81, 0xF1, 0xF0, 0x3E, 0x36, 0x0D, 0xC6, 0xE1, 0xB1, 0xCC, 0x66, 0x31,
|
||||||
|
0x8C, 0xC6, 0x33, 0x18, 0xC6, 0xC3, 0x30, 0xD8, 0xE6, 0x0E, 0x18, 0xC1,
|
||||||
|
0xC3, 0x38, 0x30, 0x66, 0x00, 0x0C, 0xC0, 0x01, 0x80, 0x0C, 0x01, 0x87,
|
||||||
|
0x00, 0xC7, 0x80, 0xC3, 0xE0, 0x61, 0xB0, 0x30, 0xDC, 0x18, 0xE6, 0x18,
|
||||||
|
0x63, 0x8C, 0x30, 0xC6, 0x18, 0x73, 0x0C, 0x1B, 0x8C, 0x0D, 0x86, 0x03,
|
||||||
|
0xC3, 0x01, 0xE1, 0x80, 0xF1, 0x80, 0x30, 0xC0, 0x18, 0x00, 0x03, 0xF0,
|
||||||
|
0x1F, 0xF0, 0x78, 0x71, 0xC0, 0x73, 0x00, 0x6C, 0x00, 0xD8, 0x01, 0xE0,
|
||||||
|
0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x36, 0x00, 0x6C, 0x01, 0x9C, 0x07,
|
||||||
|
0x1C, 0x3C, 0x1F, 0xF0, 0x1F, 0x80, 0x0F, 0xE0, 0x3F, 0xE1, 0x81, 0xC6,
|
||||||
|
0x03, 0x18, 0x0C, 0x60, 0x33, 0x80, 0xCC, 0x06, 0x30, 0x78, 0xFF, 0x83,
|
||||||
|
0xF8, 0x18, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x30, 0x00, 0xC0, 0x00,
|
||||||
|
0x03, 0xF0, 0x1F, 0xF0, 0x78, 0x71, 0xC0, 0x73, 0x00, 0x6C, 0x00, 0xD8,
|
||||||
|
0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x36, 0x00, 0x6C, 0x01,
|
||||||
|
0x9C, 0x07, 0x1C, 0x3C, 0x1F, 0xF0, 0x1F, 0x80, 0x0C, 0x00, 0x1E, 0x00,
|
||||||
|
0x1F, 0x00, 0x0E, 0x00, 0x0F, 0xE0, 0x3F, 0xE1, 0x81, 0xC6, 0x03, 0x18,
|
||||||
|
0x0C, 0x60, 0x33, 0x81, 0xCC, 0x1E, 0x3F, 0xF0, 0xFF, 0x83, 0x0C, 0x18,
|
||||||
|
0x18, 0x60, 0x61, 0x80, 0xC6, 0x03, 0x30, 0x0C, 0xC0, 0x18, 0x03, 0xF0,
|
||||||
|
0x7F, 0xC3, 0x04, 0x30, 0x01, 0x80, 0x0C, 0x00, 0x70, 0x01, 0xE0, 0x07,
|
||||||
|
0x80, 0x0E, 0x00, 0x38, 0x00, 0xC0, 0x06, 0x00, 0x31, 0x07, 0x1F, 0xF0,
|
||||||
|
0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x0C, 0x00, 0xC0, 0x0C,
|
||||||
|
0x01, 0xC0, 0x18, 0x01, 0x80, 0x18, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30,
|
||||||
|
0x06, 0x00, 0x60, 0x00, 0x18, 0x06, 0x30, 0x1C, 0xC0, 0x31, 0x80, 0x63,
|
||||||
|
0x00, 0xC6, 0x03, 0x18, 0x06, 0x30, 0x0C, 0x60, 0x39, 0xC0, 0x63, 0x00,
|
||||||
|
0xC6, 0x01, 0x8C, 0x06, 0x18, 0x0C, 0x38, 0x70, 0x3F, 0xE0, 0x3F, 0x00,
|
||||||
|
0xC0, 0x0F, 0x00, 0x6C, 0x01, 0xB0, 0x0C, 0xC0, 0x33, 0x01, 0x8E, 0x0E,
|
||||||
|
0x18, 0x30, 0x61, 0xC1, 0x86, 0x06, 0x30, 0x19, 0xC0, 0x66, 0x01, 0xB0,
|
||||||
|
0x07, 0xC0, 0x0E, 0x00, 0x30, 0x00, 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xC0,
|
||||||
|
0xC0, 0x6C, 0x0C, 0x06, 0xC1, 0xC0, 0xCC, 0x1C, 0x0C, 0xC3, 0x41, 0x8C,
|
||||||
|
0x36, 0x18, 0xC6, 0x63, 0x8C, 0x66, 0x30, 0xCC, 0x67, 0x0D, 0x86, 0x60,
|
||||||
|
0xD8, 0x6E, 0x0F, 0x06, 0xC0, 0xF0, 0x7C, 0x0E, 0x03, 0x80, 0xE0, 0x38,
|
||||||
|
0x00, 0x0C, 0x01, 0xC1, 0x80, 0xE0, 0x60, 0x30, 0x0C, 0x18, 0x03, 0x0C,
|
||||||
|
0x00, 0x66, 0x00, 0x1F, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x78, 0x00,
|
||||||
|
0x33, 0x00, 0x18, 0xC0, 0x0C, 0x18, 0x06, 0x06, 0x03, 0x00, 0xC1, 0x80,
|
||||||
|
0x30, 0xC0, 0x06, 0x00, 0xC0, 0x1F, 0x01, 0x98, 0x18, 0xC0, 0xC3, 0x0C,
|
||||||
|
0x18, 0xC0, 0xE6, 0x03, 0x60, 0x1E, 0x00, 0x70, 0x03, 0x00, 0x18, 0x01,
|
||||||
|
0x80, 0x0C, 0x00, 0x60, 0x07, 0x00, 0x30, 0x00, 0x0F, 0xFE, 0x1F, 0xFC,
|
||||||
|
0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03,
|
||||||
|
0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0E, 0x00, 0x38, 0x00,
|
||||||
|
0x7F, 0xF8, 0xFF, 0xF0, 0x03, 0xE0, 0x7C, 0x18, 0x03, 0x00, 0x60, 0x0C,
|
||||||
|
0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x60, 0x0C, 0x01, 0x80, 0x70, 0x0C,
|
||||||
|
0x01, 0x80, 0x30, 0x0E, 0x01, 0x80, 0x30, 0x06, 0x01, 0xF8, 0x3F, 0x00,
|
||||||
|
0xC6, 0x31, 0x86, 0x31, 0x8C, 0x63, 0x18, 0xC3, 0x18, 0xC6, 0x31, 0x8C,
|
||||||
|
0x31, 0x8C, 0x60, 0x07, 0xE0, 0xFC, 0x03, 0x00, 0x60, 0x0C, 0x03, 0x80,
|
||||||
|
0x60, 0x0C, 0x01, 0x80, 0x70, 0x0C, 0x01, 0x80, 0x30, 0x0C, 0x01, 0x80,
|
||||||
|
0x30, 0x06, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC1, 0xF0, 0x3E, 0x00, 0x01,
|
||||||
|
0x80, 0x38, 0x06, 0xC0, 0xCC, 0x1C, 0xC3, 0x86, 0x30, 0x66, 0x07, 0x40,
|
||||||
|
0x20, 0xFF, 0xFF, 0xFF, 0x67, 0x1C, 0x71, 0x00, 0x03, 0xE0, 0xFF, 0x3C,
|
||||||
|
0x33, 0x06, 0x60, 0x6E, 0x06, 0xC0, 0x6C, 0x0C, 0xC0, 0xCC, 0x0C, 0xE1,
|
||||||
|
0xC7, 0xFC, 0x3E, 0xC0, 0x0C, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x18, 0x01,
|
||||||
|
0xBC, 0x1F, 0xE3, 0x87, 0x30, 0x33, 0x03, 0x30, 0x36, 0x03, 0x60, 0x76,
|
||||||
|
0x06, 0x60, 0xEC, 0x3C, 0xFF, 0x87, 0xE0, 0x07, 0xE3, 0xFC, 0xE1, 0x38,
|
||||||
|
0x06, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x82, 0x3F, 0xC1,
|
||||||
|
0xF0, 0x00, 0x0C, 0x00, 0x70, 0x01, 0x80, 0x06, 0x00, 0x18, 0x0F, 0xC0,
|
||||||
|
0xFF, 0x0F, 0x0C, 0x30, 0x61, 0x81, 0x86, 0x06, 0x30, 0x38, 0xC0, 0xC3,
|
||||||
|
0x03, 0x0C, 0x0C, 0x38, 0x70, 0x7F, 0xC0, 0xF3, 0x00, 0x07, 0xC3, 0xFC,
|
||||||
|
0xE1, 0xB0, 0x36, 0x07, 0x83, 0xBF, 0xE7, 0xF0, 0xC0, 0x18, 0x03, 0x82,
|
||||||
|
0x3F, 0xC3, 0xF0, 0x00, 0x7C, 0x07, 0xE0, 0x18, 0x00, 0xE0, 0x03, 0x00,
|
||||||
|
0x0F, 0xC0, 0x7F, 0x01, 0x80, 0x06, 0x00, 0x18, 0x00, 0xC0, 0x03, 0x00,
|
||||||
|
0x0C, 0x00, 0x30, 0x01, 0x80, 0x06, 0x00, 0x18, 0x00, 0xE0, 0x03, 0x00,
|
||||||
|
0x0C, 0x00, 0x60, 0x03, 0x00, 0x00, 0x00, 0xF8, 0x0F, 0xF0, 0xF0, 0xC3,
|
||||||
|
0x06, 0x18, 0x18, 0x60, 0x63, 0x01, 0x8C, 0x0C, 0x30, 0x30, 0xC0, 0xC3,
|
||||||
|
0x8F, 0x07, 0xF8, 0x0F, 0x60, 0x03, 0x84, 0x1C, 0x3F, 0xF0, 0x7F, 0x00,
|
||||||
|
0x0C, 0x01, 0x80, 0x70, 0x0C, 0x01, 0x80, 0x3F, 0x07, 0xF1, 0x87, 0x30,
|
||||||
|
0x66, 0x0C, 0xC1, 0xB8, 0x36, 0x0C, 0xC1, 0x98, 0x33, 0x06, 0xC1, 0x98,
|
||||||
|
0x30, 0x0C, 0x30, 0x00, 0x18, 0x63, 0x0C, 0x30, 0xC7, 0x18, 0x61, 0x8E,
|
||||||
|
0x30, 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x01, 0x80, 0x60,
|
||||||
|
0x0C, 0x01, 0x80, 0x30, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x01, 0x80, 0x30,
|
||||||
|
0x06, 0x01, 0xC0, 0x30, 0x7E, 0x0F, 0x00, 0x0C, 0x00, 0xC0, 0x18, 0x01,
|
||||||
|
0x80, 0x18, 0x01, 0x83, 0x10, 0xC3, 0x18, 0x33, 0x03, 0x60, 0x2C, 0x07,
|
||||||
|
0xC0, 0x6C, 0x06, 0x60, 0x63, 0x06, 0x38, 0xC1, 0x8C, 0x1C, 0x18, 0xCE,
|
||||||
|
0x63, 0x18, 0xCC, 0x63, 0x19, 0xCC, 0x63, 0x18, 0xF3, 0x80, 0x0F, 0xCF,
|
||||||
|
0x07, 0xFF, 0xE1, 0x8F, 0x1C, 0xC1, 0x83, 0x30, 0x60, 0xCC, 0x18, 0x33,
|
||||||
|
0x06, 0x0D, 0x83, 0x06, 0x60, 0xC1, 0x98, 0x30, 0x66, 0x0C, 0x1B, 0x06,
|
||||||
|
0x0C, 0xC1, 0x83, 0x00, 0x0F, 0x83, 0xF8, 0x63, 0x98, 0x33, 0x06, 0x60,
|
||||||
|
0xCC, 0x1B, 0x06, 0x60, 0xCC, 0x19, 0x83, 0x60, 0xCC, 0x18, 0x0F, 0x83,
|
||||||
|
0xF8, 0xE3, 0xB8, 0x36, 0x07, 0xC0, 0xF0, 0x1E, 0x07, 0xC0, 0xD8, 0x3B,
|
||||||
|
0x8E, 0x3F, 0x83, 0xE0, 0x07, 0xE0, 0x7F, 0x83, 0x0E, 0x30, 0x31, 0x81,
|
||||||
|
0x8C, 0x0C, 0x60, 0x66, 0x07, 0x30, 0x31, 0x83, 0x8C, 0x78, 0xFF, 0x87,
|
||||||
|
0xF0, 0x30, 0x01, 0x80, 0x18, 0x00, 0xC0, 0x00, 0x03, 0xE0, 0xFF, 0x3C,
|
||||||
|
0x33, 0x06, 0x60, 0x6E, 0x06, 0xC0, 0x6C, 0x0C, 0xC0, 0xCC, 0x0C, 0xE1,
|
||||||
|
0xC7, 0xF8, 0x3D, 0x80, 0x18, 0x03, 0x80, 0x30, 0x03, 0x00, 0x0F, 0x8F,
|
||||||
|
0xC6, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x0C,
|
||||||
|
0x00, 0x0F, 0x87, 0xF3, 0x88, 0xC0, 0x30, 0x0F, 0x01, 0xF0, 0x1E, 0x01,
|
||||||
|
0x80, 0x64, 0x3B, 0xFC, 0x7E, 0x00, 0x18, 0x0C, 0x0C, 0x06, 0x03, 0xF9,
|
||||||
|
0xFD, 0x80, 0xC0, 0x60, 0x70, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x11, 0xF8,
|
||||||
|
0x78, 0x00, 0x30, 0x66, 0x0D, 0x83, 0x30, 0x66, 0x0D, 0x81, 0xB0, 0x36,
|
||||||
|
0x0C, 0xC1, 0x98, 0x33, 0x8E, 0x3F, 0xC7, 0xD8, 0xE0, 0x6C, 0x1D, 0x83,
|
||||||
|
0x30, 0x66, 0x18, 0xC7, 0x18, 0xC3, 0x38, 0x66, 0x0D, 0xC1, 0xF0, 0x3C,
|
||||||
|
0x03, 0x00, 0xC0, 0xC0, 0xF0, 0x30, 0x7C, 0x0C, 0x1B, 0x07, 0x06, 0xC1,
|
||||||
|
0xC3, 0x30, 0xF0, 0xCE, 0x24, 0x63, 0x99, 0x98, 0x6C, 0x6C, 0x1B, 0x1F,
|
||||||
|
0x07, 0x87, 0x81, 0xE1, 0xE0, 0x70, 0x70, 0x00, 0x18, 0x70, 0xC6, 0x0C,
|
||||||
|
0xC0, 0x7C, 0x07, 0x80, 0x70, 0x07, 0x00, 0xF8, 0x1D, 0x81, 0x9C, 0x30,
|
||||||
|
0xC6, 0x0C, 0xE0, 0x60, 0x0C, 0x0C, 0x30, 0x70, 0xC1, 0x83, 0x06, 0x0C,
|
||||||
|
0x38, 0x38, 0xC0, 0x63, 0x01, 0x98, 0x06, 0x60, 0x1B, 0x00, 0x7C, 0x01,
|
||||||
|
0xE0, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x3F, 0x00, 0xF0, 0x00, 0x1F, 0xF1,
|
||||||
|
0xFF, 0x00, 0x60, 0x0C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07,
|
||||||
|
0x00, 0xE0, 0x0F, 0xFC, 0xFF, 0xC0, 0x03, 0x83, 0xC3, 0x81, 0x80, 0xC0,
|
||||||
|
0x60, 0x60, 0x30, 0x18, 0x18, 0x38, 0x1C, 0x06, 0x03, 0x01, 0x80, 0xC0,
|
||||||
|
0x60, 0x60, 0x30, 0x18, 0x0C, 0x07, 0x81, 0xC0, 0x03, 0x03, 0x06, 0x06,
|
||||||
|
0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x1C, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30,
|
||||||
|
0x30, 0x60, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x03, 0x80, 0x78, 0x03, 0x00,
|
||||||
|
0x60, 0x0C, 0x01, 0x80, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x03, 0x80, 0xF0,
|
||||||
|
0x18, 0x06, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xC0, 0x18, 0x03, 0x00, 0xC1,
|
||||||
|
0xF8, 0x3C, 0x00, 0x3C, 0x1B, 0xF1, 0xF8, 0xFD, 0x83, 0xC0 };
|
||||||
|
|
||||||
|
const GFXglyph Ubuntu_Italic12pt7bGlyphs[] PROGMEM = {
|
||||||
|
{ 0, 1, 1, 6, 0, 0 }, // 0x20 ' '
|
||||||
|
{ 1, 6, 17, 6, 2, -16 }, // 0x21 '!'
|
||||||
|
{ 14, 7, 6, 10, 6, -17 }, // 0x22 '"'
|
||||||
|
{ 20, 16, 17, 16, 2, -16 }, // 0x23 '#'
|
||||||
|
{ 54, 13, 23, 14, 2, -19 }, // 0x24 '$'
|
||||||
|
{ 92, 16, 17, 20, 4, -16 }, // 0x25 '%'
|
||||||
|
{ 126, 14, 18, 15, 2, -17 }, // 0x26 '&'
|
||||||
|
{ 158, 3, 6, 6, 6, -17 }, // 0x27 '''
|
||||||
|
{ 161, 9, 23, 8, 4, -18 }, // 0x28 '('
|
||||||
|
{ 187, 8, 23, 8, -1, -18 }, // 0x29 ')'
|
||||||
|
{ 210, 9, 9, 11, 4, -16 }, // 0x2A '*'
|
||||||
|
{ 221, 11, 12, 14, 3, -12 }, // 0x2B '+'
|
||||||
|
{ 238, 5, 7, 6, 0, -2 }, // 0x2C ','
|
||||||
|
{ 243, 6, 2, 7, 2, -7 }, // 0x2D '-'
|
||||||
|
{ 245, 3, 3, 6, 2, -2 }, // 0x2E '.'
|
||||||
|
{ 247, 16, 23, 9, -2, -18 }, // 0x2F '/'
|
||||||
|
{ 293, 12, 17, 14, 3, -16 }, // 0x30 '0'
|
||||||
|
{ 319, 7, 17, 14, 6, -16 }, // 0x31 '1'
|
||||||
|
{ 334, 12, 17, 14, 3, -16 }, // 0x32 '2'
|
||||||
|
{ 360, 12, 17, 14, 3, -16 }, // 0x33 '3'
|
||||||
|
{ 386, 13, 17, 14, 2, -16 }, // 0x34 '4'
|
||||||
|
{ 414, 13, 17, 14, 2, -16 }, // 0x35 '5'
|
||||||
|
{ 442, 12, 17, 14, 3, -16 }, // 0x36 '6'
|
||||||
|
{ 468, 12, 17, 14, 4, -16 }, // 0x37 '7'
|
||||||
|
{ 494, 13, 17, 14, 3, -16 }, // 0x38 '8'
|
||||||
|
{ 522, 13, 17, 14, 2, -16 }, // 0x39 '9'
|
||||||
|
{ 550, 5, 13, 6, 2, -12 }, // 0x3A ':'
|
||||||
|
{ 559, 7, 17, 6, 0, -12 }, // 0x3B ';'
|
||||||
|
{ 574, 12, 11, 14, 3, -12 }, // 0x3C '<'
|
||||||
|
{ 591, 12, 7, 14, 3, -10 }, // 0x3D '='
|
||||||
|
{ 602, 12, 11, 14, 3, -12 }, // 0x3E '>'
|
||||||
|
{ 619, 9, 18, 9, 3, -17 }, // 0x3F '?'
|
||||||
|
{ 640, 20, 21, 22, 3, -16 }, // 0x40 '@'
|
||||||
|
{ 693, 14, 17, 15, 0, -16 }, // 0x41 'A'
|
||||||
|
{ 723, 14, 17, 15, 2, -16 }, // 0x42 'B'
|
||||||
|
{ 753, 14, 17, 14, 3, -16 }, // 0x43 'C'
|
||||||
|
{ 783, 15, 17, 17, 3, -16 }, // 0x44 'D'
|
||||||
|
{ 815, 13, 17, 13, 2, -16 }, // 0x45 'E'
|
||||||
|
{ 843, 14, 17, 13, 2, -16 }, // 0x46 'F'
|
||||||
|
{ 873, 15, 17, 16, 3, -16 }, // 0x47 'G'
|
||||||
|
{ 905, 16, 17, 16, 2, -16 }, // 0x48 'H'
|
||||||
|
{ 939, 6, 17, 6, 2, -16 }, // 0x49 'I'
|
||||||
|
{ 952, 13, 17, 12, 1, -16 }, // 0x4A 'J'
|
||||||
|
{ 980, 16, 17, 15, 2, -16 }, // 0x4B 'K'
|
||||||
|
{ 1014, 10, 17, 12, 2, -16 }, // 0x4C 'L'
|
||||||
|
{ 1036, 19, 17, 20, 2, -16 }, // 0x4D 'M'
|
||||||
|
{ 1077, 17, 17, 17, 2, -16 }, // 0x4E 'N'
|
||||||
|
{ 1114, 15, 17, 18, 4, -16 }, // 0x4F 'O'
|
||||||
|
{ 1146, 14, 17, 14, 2, -16 }, // 0x50 'P'
|
||||||
|
{ 1176, 15, 21, 18, 4, -16 }, // 0x51 'Q'
|
||||||
|
{ 1216, 14, 17, 15, 2, -16 }, // 0x52 'R'
|
||||||
|
{ 1246, 13, 17, 12, 1, -16 }, // 0x53 'S'
|
||||||
|
{ 1274, 12, 17, 13, 4, -16 }, // 0x54 'T'
|
||||||
|
{ 1300, 15, 17, 16, 3, -16 }, // 0x55 'U'
|
||||||
|
{ 1332, 14, 17, 15, 4, -16 }, // 0x56 'V'
|
||||||
|
{ 1362, 20, 17, 22, 5, -16 }, // 0x57 'W'
|
||||||
|
{ 1405, 18, 17, 15, 0, -16 }, // 0x58 'X'
|
||||||
|
{ 1444, 13, 17, 14, 4, -16 }, // 0x59 'Y'
|
||||||
|
{ 1472, 15, 17, 13, 1, -16 }, // 0x5A 'Z'
|
||||||
|
{ 1504, 11, 23, 8, 1, -18 }, // 0x5B '['
|
||||||
|
{ 1536, 5, 23, 9, 3, -18 }, // 0x5C '\'
|
||||||
|
{ 1551, 11, 23, 8, -1, -18 }, // 0x5D ']'
|
||||||
|
{ 1583, 12, 9, 14, 3, -16 }, // 0x5E '^'
|
||||||
|
{ 1597, 12, 2, 12, -1, 3 }, // 0x5F '_'
|
||||||
|
{ 1600, 5, 5, 9, 5, -18 }, // 0x60 '`'
|
||||||
|
{ 1604, 12, 13, 13, 2, -12 }, // 0x61 'a'
|
||||||
|
{ 1624, 12, 18, 13, 2, -17 }, // 0x62 'b'
|
||||||
|
{ 1651, 11, 13, 11, 2, -12 }, // 0x63 'c'
|
||||||
|
{ 1669, 14, 18, 13, 2, -17 }, // 0x64 'd'
|
||||||
|
{ 1701, 11, 13, 12, 2, -12 }, // 0x65 'e'
|
||||||
|
{ 1719, 14, 22, 9, 0, -17 }, // 0x66 'f'
|
||||||
|
{ 1758, 14, 17, 13, 0, -12 }, // 0x67 'g'
|
||||||
|
{ 1788, 11, 18, 13, 2, -17 }, // 0x68 'h'
|
||||||
|
{ 1813, 6, 17, 6, 2, -16 }, // 0x69 'i'
|
||||||
|
{ 1826, 11, 21, 6, -3, -16 }, // 0x6A 'j'
|
||||||
|
{ 1855, 12, 18, 12, 2, -17 }, // 0x6B 'k'
|
||||||
|
{ 1882, 5, 18, 7, 3, -17 }, // 0x6C 'l'
|
||||||
|
{ 1894, 18, 13, 20, 2, -12 }, // 0x6D 'm'
|
||||||
|
{ 1924, 11, 13, 13, 2, -12 }, // 0x6E 'n'
|
||||||
|
{ 1942, 11, 13, 13, 2, -12 }, // 0x6F 'o'
|
||||||
|
{ 1960, 13, 17, 13, 1, -12 }, // 0x70 'p'
|
||||||
|
{ 1988, 12, 17, 13, 2, -12 }, // 0x71 'q'
|
||||||
|
{ 2014, 9, 13, 9, 2, -12 }, // 0x72 'r'
|
||||||
|
{ 2029, 10, 13, 10, 1, -12 }, // 0x73 's'
|
||||||
|
{ 2046, 9, 17, 9, 3, -16 }, // 0x74 't'
|
||||||
|
{ 2066, 11, 13, 13, 3, -12 }, // 0x75 'u'
|
||||||
|
{ 2084, 11, 13, 12, 3, -12 }, // 0x76 'v'
|
||||||
|
{ 2102, 18, 13, 19, 3, -12 }, // 0x77 'w'
|
||||||
|
{ 2132, 12, 13, 11, 1, -12 }, // 0x78 'x'
|
||||||
|
{ 2152, 14, 17, 11, -1, -12 }, // 0x79 'y'
|
||||||
|
{ 2182, 12, 13, 11, 1, -12 }, // 0x7A 'z'
|
||||||
|
{ 2202, 9, 23, 8, 3, -18 }, // 0x7B '{'
|
||||||
|
{ 2228, 8, 23, 7, 1, -18 }, // 0x7C '|'
|
||||||
|
{ 2251, 11, 23, 8, -1, -18 }, // 0x7D '}'
|
||||||
|
{ 2283, 13, 4, 14, 2, -8 } }; // 0x7E '~'
|
||||||
|
|
||||||
|
const GFXfont Ubuntu_Italic12pt7b PROGMEM = {
|
||||||
|
(uint8_t *)Ubuntu_Italic12pt7bBitmaps,
|
||||||
|
(GFXglyph *)Ubuntu_Italic12pt7bGlyphs,
|
||||||
|
0x20, 0x7E, 27 };
|
||||||
|
|
||||||
|
// Approx. 2962 bytes
|
2087
src/fonts/ubuntu-italic40.h
Normal file
2087
src/fonts/ubuntu-italic40.h
Normal file
File diff suppressed because it is too large
Load Diff
4672
src/fonts/ubuntu-italic60.h
Normal file
4672
src/fonts/ubuntu-italic60.h
Normal file
File diff suppressed because it is too large
Load Diff
6260
src/fonts/ubuntu-italic70.h
Normal file
6260
src/fonts/ubuntu-italic70.h
Normal file
File diff suppressed because it is too large
Load Diff
0
src/lib/epd.cpp
Normal file
0
src/lib/epd.cpp
Normal file
0
src/lib/epd.hpp
Normal file
0
src/lib/epd.hpp
Normal file
216
src/lib/functions.cpp
Normal file
216
src/lib/functions.cpp
Normal file
@ -0,0 +1,216 @@
|
|||||||
|
#include "functions.hpp"
|
||||||
|
|
||||||
|
Preferences preferences;
|
||||||
|
uint timerSeconds;
|
||||||
|
uint currentScreen;
|
||||||
|
std::map<int, std::string> screenNameMap;
|
||||||
|
|
||||||
|
#ifndef NO_MCP
|
||||||
|
Adafruit_MCP23X17 mcp;
|
||||||
|
#endif
|
||||||
|
bool timerRunning = true;
|
||||||
|
int fgColor;
|
||||||
|
int bgColor;
|
||||||
|
uint wifiConnectionLostCount = 0;
|
||||||
|
|
||||||
|
#ifdef WITH_RGB_LED
|
||||||
|
#ifndef NEOPIXEL_PIN
|
||||||
|
#define NEOPIXEL_PIN 34
|
||||||
|
#endif
|
||||||
|
#ifndef NEOPIXEL_COUNT
|
||||||
|
#define NEOPIXEL_COUNT 3
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Adafruit_NeoPixel pixels(NEOPIXEL_COUNT, NEOPIXEL_PIN, NEO_GRB + NEO_KHZ800);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
String softAP_SSID;
|
||||||
|
String softAP_password;
|
||||||
|
WiFiManager wm;
|
||||||
|
bool screenVisible[5];
|
||||||
|
|
||||||
|
void setupSoftAP()
|
||||||
|
{
|
||||||
|
byte mac[6];
|
||||||
|
WiFi.macAddress(mac);
|
||||||
|
softAP_SSID = String("BTClock" + String(mac[3], 16) + String(mac[1], 16));
|
||||||
|
softAP_password = base64::encode(String(mac[2]) + String(mac[4]) + String(mac[5])).substring(2, 12);
|
||||||
|
}
|
||||||
|
|
||||||
|
void setupComponents()
|
||||||
|
{
|
||||||
|
#ifndef NO_MCP
|
||||||
|
if (!mcp.begin_I2C())
|
||||||
|
{
|
||||||
|
Serial.println("Error MCP23017");
|
||||||
|
while (1)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Serial.println("MCP23017 ok");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_RGB_LED
|
||||||
|
pixels.begin();
|
||||||
|
pixels.setPixelColor(0, pixels.Color(255, 0, 0));
|
||||||
|
pixels.setPixelColor(1, pixels.Color(0, 255, 0));
|
||||||
|
pixels.setPixelColor(2, pixels.Color(0, 0, 255));
|
||||||
|
pixels.setPixelColor(3, pixels.Color(255, 255, 255));
|
||||||
|
pixels.show();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_BUTTONS
|
||||||
|
for (int i = 0; i < 4; i++)
|
||||||
|
{
|
||||||
|
mcp.pinMode(i, INPUT_PULLUP);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void synchronizeTime()
|
||||||
|
{
|
||||||
|
configTime(3600, 0, NTP_SERVER);
|
||||||
|
struct tm timeinfo;
|
||||||
|
|
||||||
|
while (!getLocalTime(&timeinfo))
|
||||||
|
{
|
||||||
|
configTime(3600, 0, NTP_SERVER);
|
||||||
|
delay(500);
|
||||||
|
Serial.println("Retry set time");
|
||||||
|
}
|
||||||
|
|
||||||
|
rtc.setTimeStruct(timeinfo);
|
||||||
|
Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
|
||||||
|
}
|
||||||
|
|
||||||
|
void setupWifi()
|
||||||
|
{
|
||||||
|
setupSoftAP();
|
||||||
|
wm.setAPCallback([&](WiFiManager *wifiManager)
|
||||||
|
{
|
||||||
|
showSetupQr(softAP_SSID, softAP_password);
|
||||||
|
Serial.printf("Entered config mode:ip=%s, ssid='%s', pass='%s'\n",
|
||||||
|
WiFi.softAPIP().toString().c_str(),
|
||||||
|
wifiManager->getConfigPortalSSID().c_str(),
|
||||||
|
softAP_password.c_str()); });
|
||||||
|
|
||||||
|
bool ac = wm.autoConnect(softAP_SSID.c_str(), softAP_password.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void setupPreferences()
|
||||||
|
{
|
||||||
|
preferences.begin("btclock", false);
|
||||||
|
timerSeconds = preferences.getUInt("timerSeconds", 1800);
|
||||||
|
currentScreen = preferences.getUInt("currentScreen", 0);
|
||||||
|
// handleScreenTasks(currentScreen);
|
||||||
|
fgColor = preferences.getUInt("fgColor", DEFAULT_FG_COLOR);
|
||||||
|
bgColor = preferences.getUInt("bgColor", DEFAULT_BG_COLOR);
|
||||||
|
preferences.getBool("ledFlashOnUpd", false);
|
||||||
|
|
||||||
|
// screenNameMap = {{SCREEN_BLOCK_HEIGHT, "Block Height"};
|
||||||
|
|
||||||
|
screenNameMap = {{SCREEN_BLOCK_HEIGHT, "Block Height"},
|
||||||
|
{SCREEN_MSCW_TIME, "Sats per dollar"},
|
||||||
|
{SCREEN_BTC_TICKER, "Ticker"},
|
||||||
|
{SCREEN_TIME, "Time"},
|
||||||
|
{SCREEN_HALVING_COUNTDOWN, "Halving countdown"}};
|
||||||
|
|
||||||
|
for (int i = 0; i < screenNameMap.size() ; i++) {
|
||||||
|
String key = "screen" + String(i) + "Visible";
|
||||||
|
screenVisible[i] = preferences.getBool(key.c_str(), true); // Default to true if not set
|
||||||
|
}
|
||||||
|
|
||||||
|
xTaskCreate(timebasedChangeTask, "tbc", 5000, NULL, 15, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint getCurrentScreen()
|
||||||
|
{
|
||||||
|
return currentScreen;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setCurrentScreen(uint screen)
|
||||||
|
{
|
||||||
|
preferences.putUInt("currentScreen", screen);
|
||||||
|
|
||||||
|
currentScreen = screen;
|
||||||
|
handleScreenTasks(screen);
|
||||||
|
}
|
||||||
|
|
||||||
|
void handleScreenTasks(uint screen)
|
||||||
|
{
|
||||||
|
if (blockNotifyTaskHandle)
|
||||||
|
vTaskSuspend(blockNotifyTaskHandle);
|
||||||
|
if (getPriceTaskHandle)
|
||||||
|
vTaskSuspend(getPriceTaskHandle);
|
||||||
|
if (minuteTaskHandle)
|
||||||
|
vTaskSuspend(minuteTaskHandle);
|
||||||
|
switch (currentScreen)
|
||||||
|
{
|
||||||
|
case SCREEN_BLOCK_HEIGHT:
|
||||||
|
if (blockNotifyTaskHandle)
|
||||||
|
vTaskResume(blockNotifyTaskHandle);
|
||||||
|
break;
|
||||||
|
case SCREEN_HALVING_COUNTDOWN:
|
||||||
|
if (blockNotifyTaskHandle)
|
||||||
|
vTaskResume(blockNotifyTaskHandle);
|
||||||
|
break;
|
||||||
|
case SCREEN_BTC_TICKER:
|
||||||
|
if (getPriceTaskHandle)
|
||||||
|
vTaskResume(getPriceTaskHandle);
|
||||||
|
break;
|
||||||
|
case SCREEN_MSCW_TIME:
|
||||||
|
if (getPriceTaskHandle)
|
||||||
|
vTaskResume(getPriceTaskHandle);
|
||||||
|
break;
|
||||||
|
case SCREEN_TIME:
|
||||||
|
if (minuteTaskHandle)
|
||||||
|
vTaskResume(minuteTaskHandle);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int getBgColor()
|
||||||
|
{
|
||||||
|
return bgColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
int getFgColor()
|
||||||
|
{
|
||||||
|
return fgColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
void timebasedChangeTask(void *parameter)
|
||||||
|
{
|
||||||
|
uint32_t moment = millis();
|
||||||
|
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
if (millis() - moment > timerSeconds * 1000 && timerRunning)
|
||||||
|
{
|
||||||
|
int newCurrentScreen = (getCurrentScreen() + 1) % screenCount;
|
||||||
|
String key = "screen" + String(newCurrentScreen) + "Visible";
|
||||||
|
|
||||||
|
while (!preferences.getBool(key.c_str(), true)) {
|
||||||
|
newCurrentScreen = (newCurrentScreen + 1) % screenCount;
|
||||||
|
key = "screen" + String(newCurrentScreen) + "Visible";
|
||||||
|
}
|
||||||
|
setCurrentScreen(newCurrentScreen);
|
||||||
|
moment = millis();
|
||||||
|
}
|
||||||
|
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setLights(int r, int g, int b)
|
||||||
|
{
|
||||||
|
#ifdef WITH_RGB_LED
|
||||||
|
for (int i = 0; i < NEOPIXEL_COUNT; i++)
|
||||||
|
{
|
||||||
|
pixels.setPixelColor(i, pixels.Color(r, g, b));
|
||||||
|
}
|
||||||
|
|
||||||
|
pixels.show();
|
||||||
|
#endif
|
||||||
|
}
|
30
src/lib/functions.hpp
Normal file
30
src/lib/functions.hpp
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#include <ESP32Time.h>
|
||||||
|
#include <WiFi.h>
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <WiFiManager.h>
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
#include "shared.hpp"
|
||||||
|
#include "Adafruit_GFX.h"
|
||||||
|
#include "tasks/blocknotify.hpp"
|
||||||
|
#include "tasks/minute.hpp"
|
||||||
|
#include "tasks/get_price.hpp"
|
||||||
|
#include "tasks/epd.hpp"
|
||||||
|
|
||||||
|
void setupComponents();
|
||||||
|
void setupWifi();
|
||||||
|
void synchronizeTime();
|
||||||
|
void setupPreferences();
|
||||||
|
void setLights(int r, int g, int b);
|
||||||
|
|
||||||
|
uint getCurrentScreen();
|
||||||
|
void setCurrentScreen(uint screen);
|
||||||
|
void handleScreenTasks(uint screen);
|
||||||
|
|
||||||
|
void timebasedChangeTask(void *parameter);
|
||||||
|
|
||||||
|
GFXfont getFont(uint size);
|
||||||
|
int getBgColor();
|
||||||
|
int getFgColor();
|
||||||
|
|
||||||
|
void setupSoftAP();
|
0
src/lib/pin/mcp23017_pin.cpp
Normal file
0
src/lib/pin/mcp23017_pin.cpp
Normal file
6
src/lib/pin/mcp23017_pin.hpp
Normal file
6
src/lib/pin/mcp23017_pin.hpp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "universal_pin.hpp"
|
||||||
|
|
||||||
|
class MCP23017_Pin : public UniversalPin
|
||||||
|
{
|
||||||
|
|
||||||
|
};
|
0
src/lib/pin/native_pin.cpp
Normal file
0
src/lib/pin/native_pin.cpp
Normal file
6
src/lib/pin/native_pin.hpp
Normal file
6
src/lib/pin/native_pin.hpp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "universal_pin.hpp"
|
||||||
|
|
||||||
|
class Native_Pin : public UniversalPin
|
||||||
|
{
|
||||||
|
|
||||||
|
};
|
0
src/lib/pin/pcf8575_pin.cpp
Normal file
0
src/lib/pin/pcf8575_pin.cpp
Normal file
6
src/lib/pin/pcf8575_pin.hpp
Normal file
6
src/lib/pin/pcf8575_pin.hpp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "universal_pin.hpp"
|
||||||
|
|
||||||
|
class PCF8575_Pin : public UniversalPin
|
||||||
|
{
|
||||||
|
|
||||||
|
};
|
5
src/lib/pin/universal_pin.cpp
Normal file
5
src/lib/pin/universal_pin.cpp
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#include "universal_pin.hpp"
|
||||||
|
|
||||||
|
UniversalPin::UniversalPin(uint pinNumber) {
|
||||||
|
this->pinNumber = pinNumber;
|
||||||
|
}
|
12
src/lib/pin/universal_pin.hpp
Normal file
12
src/lib/pin/universal_pin.hpp
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
class UniversalPin
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
UniversalPin(uint pinNumber);
|
||||||
|
virtual void pinMode(uint8_t mode);
|
||||||
|
virtual uint8_t digitalRead();
|
||||||
|
virtual void digitalWrite(uint8_t value);
|
||||||
|
protected:
|
||||||
|
uint pinNumber;
|
||||||
|
};
|
356
src/lib/webserver.cpp
Normal file
356
src/lib/webserver.cpp
Normal file
@ -0,0 +1,356 @@
|
|||||||
|
#include "webserver.hpp"
|
||||||
|
#include "webserver/OneParamRewrite.hpp"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
AsyncWebServer server(80);
|
||||||
|
|
||||||
|
void setupWebserver()
|
||||||
|
{
|
||||||
|
// Initialize SPIFFS
|
||||||
|
if (!SPIFFS.begin(true))
|
||||||
|
{
|
||||||
|
Serial.println("An Error has occurred while mounting SPIFFS");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
server.serveStatic("/css", SPIFFS, "/css/");
|
||||||
|
server.serveStatic("/js", SPIFFS, "/js/");
|
||||||
|
server.serveStatic("/font", SPIFFS, "/font/");
|
||||||
|
|
||||||
|
server.on("/", HTTP_GET, onIndex);
|
||||||
|
server.on("/api/action/pause", HTTP_GET, onApiActionPause);
|
||||||
|
server.on("/api/action/timer_restart", HTTP_GET, onApiActionTimerRestart);
|
||||||
|
server.on("/api/action/update", HTTP_GET, onApiActionUpdate);
|
||||||
|
server.on("/api/full_refresh", HTTP_GET, onApiFullRefresh);
|
||||||
|
server.on("/api/status", HTTP_GET, onApiStatus);
|
||||||
|
|
||||||
|
server.on("/api/settings", HTTP_GET, onApiSettingsGet);
|
||||||
|
server.on("/api/settings", HTTP_POST, onApiSettingsPost);
|
||||||
|
server.on("/api/show/screen", HTTP_GET, onApiShowScreen);
|
||||||
|
server.on("/api/show/text", HTTP_GET, onApiShowText);
|
||||||
|
// server.on("/api/show/custom", HTTP_GET, onApiShowTextAdvanced);
|
||||||
|
AsyncCallbackJsonWebHandler *handler = new AsyncCallbackJsonWebHandler("/api/show/custom", onApiShowTextAdvanced);
|
||||||
|
server.addHandler(handler);
|
||||||
|
|
||||||
|
server.on("/api/wifi/scan", HTTP_GET, onApiWifiScan);
|
||||||
|
server.on("/api/restart", HTTP_GET, onApiRestart);
|
||||||
|
|
||||||
|
server.on("/api/countdown", HTTP_GET, onApiCountdown);
|
||||||
|
|
||||||
|
server.on("/api/lights/off", HTTP_GET, onApiLightsOff);
|
||||||
|
server.on("/api/lights/flash", HTTP_GET, onApiLightsFlash);
|
||||||
|
server.on("/api/lights/color", HTTP_GET, onApiLightsSetColor);
|
||||||
|
server.on("^\\/api\\/lights\\/([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", HTTP_GET, onApiLightsSetColor);
|
||||||
|
server.addRewrite(new OneParamRewrite("/api/show/screen/{s}", "/api/show/screen?s={s}"));
|
||||||
|
server.addRewrite(new OneParamRewrite("/api/show/text/{text}", "/api/show/text?t={text}"));
|
||||||
|
server.addRewrite(new OneParamRewrite("/api/show/number/{number}", "/api/show/text?t={text}"));
|
||||||
|
// server.addRewrite(new OneParamRewrite("/api/lights/{color}", "/api/lights/color?c={color}"));
|
||||||
|
|
||||||
|
server.onNotFound(onNotFound);
|
||||||
|
|
||||||
|
DefaultHeaders::Instance().addHeader("Access-Control-Allow-Origin", "*");
|
||||||
|
|
||||||
|
// Start server
|
||||||
|
server.begin();
|
||||||
|
if (!MDNS.begin(HOSTNAME))
|
||||||
|
{
|
||||||
|
Serial.println("Error setting up MDNS responder!");
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
delay(1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MDNS.addService("http", "tcp", 80);
|
||||||
|
Serial.println("Webserver should be running");
|
||||||
|
}
|
||||||
|
|
||||||
|
void onApiStatus(AsyncWebServerRequest *request)
|
||||||
|
{
|
||||||
|
AsyncResponseStream *response = request->beginResponseStream("application/json");
|
||||||
|
|
||||||
|
DynamicJsonDocument root(1024);
|
||||||
|
root["currentScreen"] = String(getCurrentScreen());
|
||||||
|
JsonArray data = root.createNestedArray("data");
|
||||||
|
JsonArray rendered = root.createNestedArray("rendered");
|
||||||
|
String epdContent[7];
|
||||||
|
|
||||||
|
#ifdef WITH_RGB_LED
|
||||||
|
|
||||||
|
uint32_t pixelColors[NEOPIXEL_COUNT];
|
||||||
|
JsonArray ledStatus = root.createNestedArray("ledStatus");
|
||||||
|
|
||||||
|
for (int i = 0; i < NEOPIXEL_COUNT; i++)
|
||||||
|
{
|
||||||
|
pixelColors[i] = pixels.getPixelColor(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
copyArray(pixelColors, ledStatus);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
std::copy(std::begin(getCurrentEpdContent()), std::end(getCurrentEpdContent()), epdContent);
|
||||||
|
|
||||||
|
copyArray(epdContent, data);
|
||||||
|
copyArray(epdContent, rendered);
|
||||||
|
serializeJson(root, *response);
|
||||||
|
|
||||||
|
request->send(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
void onApiActionPause(AsyncWebServerRequest *request)
|
||||||
|
{
|
||||||
|
timerRunning = false;
|
||||||
|
Serial.println("Update timer paused");
|
||||||
|
|
||||||
|
request->send(200);
|
||||||
|
};
|
||||||
|
|
||||||
|
void onApiFullRefresh(AsyncWebServerRequest *request)
|
||||||
|
{
|
||||||
|
|
||||||
|
xTaskCreate(fullRefresh, "Full Refresh", 10000, NULL, 5, NULL); // create task
|
||||||
|
|
||||||
|
request->send(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
void onApiActionTimerRestart(AsyncWebServerRequest *request)
|
||||||
|
{
|
||||||
|
// moment = millis();
|
||||||
|
timerRunning = true;
|
||||||
|
Serial.println("Update timer restarted");
|
||||||
|
|
||||||
|
request->send(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
void onApiActionUpdate(AsyncWebServerRequest *request)
|
||||||
|
{
|
||||||
|
if (request->hasParam("rate"))
|
||||||
|
{
|
||||||
|
AsyncWebParameter *p = request->getParam("rate");
|
||||||
|
timerSeconds = p->value().toInt() * 60;
|
||||||
|
preferences.putUInt("timerSeconds", timerSeconds);
|
||||||
|
}
|
||||||
|
|
||||||
|
timerRunning = true;
|
||||||
|
|
||||||
|
request->send(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
void onApiSettingsGet(AsyncWebServerRequest *request)
|
||||||
|
{
|
||||||
|
DynamicJsonDocument root(1024);
|
||||||
|
root["fgColor"] = getFgColor();
|
||||||
|
root["bgColor"] = getBgColor();
|
||||||
|
root["timerSeconds"] = timerSeconds;
|
||||||
|
root["timerRunning"] = timerRunning;
|
||||||
|
#ifdef IS_BW
|
||||||
|
root["epdColors"] = 2;
|
||||||
|
#else
|
||||||
|
root["epdColors"] = 3;
|
||||||
|
#endif
|
||||||
|
root["ledFlashOnUpdate"] = preferences.getBool("ledFlashOnUpd", false);
|
||||||
|
|
||||||
|
JsonArray screens = root.createNestedArray("screens");
|
||||||
|
|
||||||
|
for (int i = 0; i < screenNameMap.size(); i++)
|
||||||
|
{
|
||||||
|
JsonObject o = screens.createNestedObject();
|
||||||
|
String key = "screen" + String(i) + "Visible";
|
||||||
|
o["id"] = i;
|
||||||
|
o["name"] = screenNameMap[i];
|
||||||
|
o["enabled"] = preferences.getBool(key.c_str(), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
String responseText;
|
||||||
|
serializeJson(root, responseText);
|
||||||
|
request->send(200, "application/json", responseText);
|
||||||
|
}
|
||||||
|
|
||||||
|
void onApiSettingsPost(AsyncWebServerRequest *request)
|
||||||
|
{
|
||||||
|
int params = request->params();
|
||||||
|
bool settingsChanged = false;
|
||||||
|
if (request->hasParam("fgColor", true))
|
||||||
|
{
|
||||||
|
AsyncWebParameter *fgColor = request->getParam("fgColor", true);
|
||||||
|
preferences.putUInt("fgColor", strtol(fgColor->value().c_str(), NULL, 16));
|
||||||
|
Serial.print("Setting foreground color to ");
|
||||||
|
Serial.println(fgColor->value().c_str());
|
||||||
|
settingsChanged = true;
|
||||||
|
}
|
||||||
|
if (request->hasParam("bgColor", true))
|
||||||
|
{
|
||||||
|
AsyncWebParameter *bgColor = request->getParam("bgColor", true);
|
||||||
|
|
||||||
|
preferences.putUInt("bgColor", strtol(bgColor->value().c_str(), NULL, 16));
|
||||||
|
Serial.print("Setting background color to ");
|
||||||
|
Serial.println(bgColor->value().c_str());
|
||||||
|
settingsChanged = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (request->hasParam("ledFlashOnUpd", true))
|
||||||
|
{
|
||||||
|
AsyncWebParameter *ledFlashOnUpdate = request->getParam("ledFlashOnUpd", true);
|
||||||
|
|
||||||
|
preferences.putBool("ledFlashOnUpd", ledFlashOnUpdate->value().toInt());
|
||||||
|
Serial.print("Setting led flash on update to ");
|
||||||
|
Serial.println(ledFlashOnUpdate->value().c_str());
|
||||||
|
settingsChanged = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
preferences.putBool("ledFlashOnUpd", 0);
|
||||||
|
Serial.print("Setting led flash on update to false");
|
||||||
|
settingsChanged = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < screenNameMap.size(); i++)
|
||||||
|
{
|
||||||
|
String key = "screen[" + String(i) + "]";
|
||||||
|
String prefKey = "screen" + String(i) + "Visible";
|
||||||
|
bool visible = false;
|
||||||
|
if (request->hasParam(key, true))
|
||||||
|
{
|
||||||
|
AsyncWebParameter *screenParam = request->getParam(key, true);
|
||||||
|
visible = screenParam->value().toInt();
|
||||||
|
}
|
||||||
|
Serial.print("Setting screen " + String(i) + " to ");
|
||||||
|
Serial.println(visible);
|
||||||
|
|
||||||
|
preferences.putBool(prefKey.c_str(), visible);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (request->hasParam("timePerScreen", true))
|
||||||
|
{
|
||||||
|
AsyncWebParameter *p = request->getParam("timePerScreen", true);
|
||||||
|
timerSeconds = p->value().toInt() * 60;
|
||||||
|
preferences.putUInt("timerSeconds", timerSeconds);
|
||||||
|
settingsChanged = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
request->send(200);
|
||||||
|
if (settingsChanged)
|
||||||
|
{
|
||||||
|
Serial.println("Settings changed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void onApiShowScreen(AsyncWebServerRequest *request)
|
||||||
|
{
|
||||||
|
if (request->hasParam("s"))
|
||||||
|
{
|
||||||
|
AsyncWebParameter *p = request->getParam("s");
|
||||||
|
uint currentScreen = p->value().toInt();
|
||||||
|
setCurrentScreen(currentScreen);
|
||||||
|
}
|
||||||
|
request->send(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
void onApiShowTextAdvanced(AsyncWebServerRequest *request, JsonVariant &json)
|
||||||
|
{
|
||||||
|
// JsonObject& jsonObj = json.as<JsonObject>();
|
||||||
|
// serializeJson(json, Serial);
|
||||||
|
|
||||||
|
JsonArray screens = json.as<JsonArray>();
|
||||||
|
|
||||||
|
std::array<String, 7> epdContent;
|
||||||
|
int i = 0;
|
||||||
|
for (JsonVariant s : screens)
|
||||||
|
{
|
||||||
|
epdContent[i] = s.as<String>();
|
||||||
|
Serial.println(s.as<String>());
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
CustomTextScreen::setText(epdContent);
|
||||||
|
|
||||||
|
setCurrentScreen(SCREEN_CUSTOM);
|
||||||
|
request->send(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
void onApiShowText(AsyncWebServerRequest *request)
|
||||||
|
{
|
||||||
|
if (request->hasParam("t"))
|
||||||
|
{
|
||||||
|
AsyncWebParameter *p = request->getParam("t");
|
||||||
|
String t = p->value();
|
||||||
|
CustomTextScreen::setSimpleText(t);
|
||||||
|
}
|
||||||
|
setCurrentScreen(SCREEN_CUSTOM);
|
||||||
|
request->send(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
void onApiRestart(AsyncWebServerRequest *request)
|
||||||
|
{
|
||||||
|
request->send(200);
|
||||||
|
esp_restart();
|
||||||
|
}
|
||||||
|
|
||||||
|
void onApiWifiScan(AsyncWebServerRequest *request)
|
||||||
|
{
|
||||||
|
WiFi.scanNetworks(true);
|
||||||
|
|
||||||
|
int n = WiFi.scanComplete();
|
||||||
|
|
||||||
|
DynamicJsonDocument doc(1024);
|
||||||
|
|
||||||
|
for (int i = 0; i < n; ++i)
|
||||||
|
{
|
||||||
|
JsonObject wifi = doc.createNestedObject(WiFi.BSSID(i));
|
||||||
|
Serial.println(WiFi.SSID(i));
|
||||||
|
wifi["ssid"] = WiFi.SSID(i);
|
||||||
|
wifi["rssi"] = WiFi.RSSI(i);
|
||||||
|
wifi["encryptionType"] = WiFi.encryptionType(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
String responseText;
|
||||||
|
serializeJson(doc, responseText);
|
||||||
|
request->send(200, "application/json", responseText);
|
||||||
|
}
|
||||||
|
|
||||||
|
void onApiCountdown(AsyncWebServerRequest *request)
|
||||||
|
{
|
||||||
|
if (request->hasParam("s"))
|
||||||
|
{
|
||||||
|
AsyncWebParameter *p = request->getParam("s");
|
||||||
|
uint seconds = p->value().toInt();
|
||||||
|
CountdownScreen::setCountdownSeconds(seconds);
|
||||||
|
}
|
||||||
|
timerRunning = false;
|
||||||
|
setCurrentScreen(SCREEN_COUNTDOWN);
|
||||||
|
xTaskCreate(CountdownScreen::countdownTask, "Countdown", 4096, NULL, 50, NULL);
|
||||||
|
request->send(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
void onIndex(AsyncWebServerRequest *request) { request->send(SPIFFS, "/index.html", String(), false); }
|
||||||
|
void onNotFound(AsyncWebServerRequest *request)
|
||||||
|
{
|
||||||
|
if (request->method() == HTTP_OPTIONS)
|
||||||
|
{
|
||||||
|
request->send(200);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
request->send(404);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void onApiLightsOff(AsyncWebServerRequest *request)
|
||||||
|
{
|
||||||
|
setLights(0, 0, 0);
|
||||||
|
request->send(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
void onApiLightsFlash(AsyncWebServerRequest *request)
|
||||||
|
{
|
||||||
|
setLights(255, 0, 0);
|
||||||
|
request->send(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
void onApiLightsSetColor(AsyncWebServerRequest *request)
|
||||||
|
{
|
||||||
|
String rgbColor = request->pathArg(0);
|
||||||
|
int r, g, b;
|
||||||
|
sscanf(rgbColor.c_str(), "%02x%02x%02x", &r, &g, &b);
|
||||||
|
setLights(r, g, b);
|
||||||
|
request->send(200, "text/plain", rgbColor);
|
||||||
|
}
|
34
src/lib/webserver.hpp
Normal file
34
src/lib/webserver.hpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#include "SPIFFS.h"
|
||||||
|
#include <WebServer.h>
|
||||||
|
#include "ESPAsyncWebServer.h"
|
||||||
|
#include <ArduinoJson.h>
|
||||||
|
#include "AsyncJson.h"
|
||||||
|
|
||||||
|
#include <ESPmDNS.h>
|
||||||
|
#include "lib/functions.hpp"
|
||||||
|
#include <string>
|
||||||
|
#include "tasks/epd.hpp"
|
||||||
|
#include "shared.hpp"
|
||||||
|
|
||||||
|
void setupWebserver();
|
||||||
|
void onApiStatus(AsyncWebServerRequest *request);
|
||||||
|
void onApiActionPause(AsyncWebServerRequest *request);
|
||||||
|
void onApiActionTimerRestart(AsyncWebServerRequest *request);
|
||||||
|
void onApiActionUpdate(AsyncWebServerRequest *request);
|
||||||
|
void onApiSettingsGet(AsyncWebServerRequest *request);
|
||||||
|
void onApiSettingsPost(AsyncWebServerRequest *request);
|
||||||
|
void onApiShowScreen(AsyncWebServerRequest *request);
|
||||||
|
void onApiShowText(AsyncWebServerRequest *request);
|
||||||
|
void onApiShowTextAdvanced(AsyncWebServerRequest *request, JsonVariant &json);
|
||||||
|
|
||||||
|
void onApiFullRefresh(AsyncWebServerRequest *request);
|
||||||
|
void onApiCountdown(AsyncWebServerRequest *request);
|
||||||
|
void onApiWifiScan(AsyncWebServerRequest *request);
|
||||||
|
void onApiRestart(AsyncWebServerRequest *request);
|
||||||
|
|
||||||
|
void onApiLightsOff(AsyncWebServerRequest *request);
|
||||||
|
void onApiLightsFlash(AsyncWebServerRequest *request);
|
||||||
|
void onApiLightsSetColor(AsyncWebServerRequest *request);
|
||||||
|
|
||||||
|
void onIndex(AsyncWebServerRequest *request);
|
||||||
|
void onNotFound(AsyncWebServerRequest *request);
|
43
src/lib/webserver/OneParamRewrite.cpp
Normal file
43
src/lib/webserver/OneParamRewrite.cpp
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
#include "OneParamRewrite.hpp"
|
||||||
|
|
||||||
|
OneParamRewrite::OneParamRewrite(const char *from, const char *to)
|
||||||
|
: AsyncWebRewrite(from, to)
|
||||||
|
{
|
||||||
|
|
||||||
|
_paramIndex = _from.indexOf('{');
|
||||||
|
|
||||||
|
if (_paramIndex >= 0 && _from.endsWith("}"))
|
||||||
|
{
|
||||||
|
_urlPrefix = _from.substring(0, _paramIndex);
|
||||||
|
int index = _params.indexOf('{');
|
||||||
|
if (index >= 0)
|
||||||
|
{
|
||||||
|
_params = _params.substring(0, index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_urlPrefix = _from;
|
||||||
|
}
|
||||||
|
_paramsBackup = _params;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OneParamRewrite::match(AsyncWebServerRequest *request)
|
||||||
|
{
|
||||||
|
if (request->url().startsWith(_urlPrefix))
|
||||||
|
{
|
||||||
|
if (_paramIndex >= 0)
|
||||||
|
{
|
||||||
|
_params = _paramsBackup + request->url().substring(_paramIndex);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_params = _paramsBackup;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
15
src/lib/webserver/OneParamRewrite.hpp
Normal file
15
src/lib/webserver/OneParamRewrite.hpp
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "ESPAsyncWebServer.h"
|
||||||
|
|
||||||
|
class OneParamRewrite : public AsyncWebRewrite
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
String _urlPrefix;
|
||||||
|
int _paramIndex;
|
||||||
|
String _paramsBackup;
|
||||||
|
|
||||||
|
public:
|
||||||
|
OneParamRewrite(const char *from, const char *to);
|
||||||
|
bool match(AsyncWebServerRequest *request) override;
|
||||||
|
};
|
89
src/main.cpp
Normal file
89
src/main.cpp
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
#include <Arduino.h>
|
||||||
|
#include <config.h>
|
||||||
|
#include <shared.hpp>
|
||||||
|
#include <WiFi.h>
|
||||||
|
#include <WiFiClientSecure.h>
|
||||||
|
//#include <ESP32Time.h>
|
||||||
|
#include <WiFiManager.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_BT_ENABLED
|
||||||
|
#include "esp_bt.h"
|
||||||
|
#include "esp_bt_main.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "lib/functions.hpp"
|
||||||
|
#include "lib/webserver.hpp"
|
||||||
|
|
||||||
|
#include "screens/time.hpp"
|
||||||
|
#include "screens/blockheight.hpp"
|
||||||
|
#include "screens/ticker.hpp"
|
||||||
|
#include "screens/time.hpp"
|
||||||
|
#include "screens/sats_per_dollar.hpp"
|
||||||
|
#include "screens/halvingcountdown.hpp"
|
||||||
|
|
||||||
|
#include "tasks/ha.hpp"
|
||||||
|
#include "tasks/epd.hpp"
|
||||||
|
#include "tasks/button.hpp"
|
||||||
|
#include "tasks/led_handler.hpp"
|
||||||
|
|
||||||
|
WiFiClient wifiClientInsecure;
|
||||||
|
WiFiClientSecure wifiClient;
|
||||||
|
ESP32Time rtc(3600);
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
Serial.begin(115200);
|
||||||
|
#ifdef ARDUINO_LOLIN_S3
|
||||||
|
delay(2500);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ARDUINO_ESP32S3_DEV
|
||||||
|
pinMode(LED_BUILTIN, OUTPUT);
|
||||||
|
digitalWrite(LED_BUILTIN, LOW);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_BT_ENABLED
|
||||||
|
esp_bluedroid_disable();
|
||||||
|
esp_bluedroid_deinit();
|
||||||
|
esp_bt_controller_disable();
|
||||||
|
esp_bt_controller_deinit();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
setupComponents();
|
||||||
|
setupPreferences();
|
||||||
|
#ifndef NO_DISPLAY
|
||||||
|
resetAllDisplays();
|
||||||
|
initDisplays();
|
||||||
|
#endif
|
||||||
|
setupWifi();
|
||||||
|
|
||||||
|
synchronizeTime();
|
||||||
|
setupWebserver();
|
||||||
|
|
||||||
|
TimeScreen::init();
|
||||||
|
BlockHeightScreen::init();
|
||||||
|
TickerScreen::init();
|
||||||
|
SatsPerDollarScreen::init();
|
||||||
|
|
||||||
|
#ifdef WITH_BUTTONS
|
||||||
|
setupButtonTask();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_RGB_LED
|
||||||
|
setLights(0,0,0);
|
||||||
|
setupLedHandlerTask();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
registerNewMinuteCallback(TimeScreen::onNewMinute);
|
||||||
|
registerNewBlockCallback(BlockHeightScreen::onNewBlock);
|
||||||
|
registerNewBlockCallback(HalvingCountdownScreen::onNewBlock);
|
||||||
|
registerNewPriceCallback(TickerScreen::onPriceUpdate);
|
||||||
|
registerNewPriceCallback(SatsPerDollarScreen::onPriceUpdate);
|
||||||
|
|
||||||
|
setupDisplays();
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
// put your main code here, to run repeatedly:
|
||||||
|
}
|
7
src/screens/base.cpp
Normal file
7
src/screens/base.cpp
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#include "base.hpp"
|
||||||
|
|
||||||
|
//std::array<String, 7> BcScreen::epdContent = { "", "", "", "", "", "", "" };
|
||||||
|
|
||||||
|
std::array<String, 7> BcScreen::getEpdContent() {
|
||||||
|
return BcScreen::epdContent;
|
||||||
|
}
|
13
src/screens/base.hpp
Normal file
13
src/screens/base.hpp
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "config.h"
|
||||||
|
#include "shared.hpp"
|
||||||
|
|
||||||
|
class BcScreen
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
std::array<String, 7> epdContent;
|
||||||
|
public:
|
||||||
|
void init();
|
||||||
|
void showScreen();
|
||||||
|
std::array<String, 7> getEpdContent();
|
||||||
|
};
|
33
src/screens/blockheight.cpp
Normal file
33
src/screens/blockheight.cpp
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
#include "blockheight.hpp"
|
||||||
|
|
||||||
|
uint BlockHeightScreen::blockNr = 0;
|
||||||
|
std::array<String, 7> BlockHeightScreen::epdContent = { "", "", "", "", "", "", "" };
|
||||||
|
|
||||||
|
void BlockHeightScreen::init()
|
||||||
|
{
|
||||||
|
BlockHeightScreen::blockNr = preferences.getUInt("blockHeight", 789000);
|
||||||
|
setupBlockNotify();
|
||||||
|
BlockHeightScreen::showScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BlockHeightScreen::showScreen()
|
||||||
|
{
|
||||||
|
std::string blockNrString = String(BlockHeightScreen::blockNr).c_str();
|
||||||
|
blockNrString.insert(blockNrString.begin(), 7 - blockNrString.length(), ' ');
|
||||||
|
epdContent[0] = "BLOCK/HEIGHT";
|
||||||
|
for (uint i = 1; i < 7; i++)
|
||||||
|
{
|
||||||
|
BlockHeightScreen::epdContent[i] = blockNrString[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BlockHeightScreen::onNewBlock(uint blockNr)
|
||||||
|
{
|
||||||
|
BlockHeightScreen::blockNr = blockNr;
|
||||||
|
|
||||||
|
BlockHeightScreen::showScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::array<String, 7> BlockHeightScreen::getEpdContent() {
|
||||||
|
return BlockHeightScreen::epdContent;
|
||||||
|
}
|
18
src/screens/blockheight.hpp
Normal file
18
src/screens/blockheight.hpp
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "base.hpp"
|
||||||
|
#include "config.h"
|
||||||
|
#include "shared.hpp"
|
||||||
|
#include "tasks/epd.hpp"
|
||||||
|
#include "tasks/blocknotify.hpp"
|
||||||
|
|
||||||
|
class BlockHeightScreen {
|
||||||
|
protected:
|
||||||
|
static uint blockNr;
|
||||||
|
static std::array<String, 7> epdContent;
|
||||||
|
public:
|
||||||
|
static void init();
|
||||||
|
static void showScreen();
|
||||||
|
static void onNewBlock(uint blockNr);
|
||||||
|
static std::array<String, 7> getEpdContent();
|
||||||
|
};
|
43
src/screens/countdown.cpp
Normal file
43
src/screens/countdown.cpp
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
#include "countdown.hpp"
|
||||||
|
|
||||||
|
uint CountdownScreen::countdownMinutes = 1;
|
||||||
|
uint CountdownScreen::countdownSeconds = 0;
|
||||||
|
std::array<String, 7> CountdownScreen::epdContent = {"COUNT/DOWN", "", "", "", "", "", ""};
|
||||||
|
|
||||||
|
void CountdownScreen::init()
|
||||||
|
{
|
||||||
|
CountdownScreen::showScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CountdownScreen::showScreen()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
std::array<String, 7> CountdownScreen::getEpdContent()
|
||||||
|
{
|
||||||
|
return CountdownScreen::epdContent;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CountdownScreen::setCountdownSeconds(uint sec) {
|
||||||
|
countdownSeconds = sec;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CountdownScreen::countdownTask(void *pvParameters)
|
||||||
|
{
|
||||||
|
for (int i = CountdownScreen::countdownSeconds; i >= 0; i--)
|
||||||
|
{
|
||||||
|
char countdownString[7];
|
||||||
|
sprintf(countdownString, "%02d:%02d", i / 60, i % 60);
|
||||||
|
std::string timeString = countdownString;
|
||||||
|
timeString.insert(timeString.begin(), 7 - timeString.length(), ' ');
|
||||||
|
CountdownScreen::epdContent[0] = "COUNT/DOWN";
|
||||||
|
for (uint i = 1; i < 7; i++)
|
||||||
|
{
|
||||||
|
CountdownScreen::epdContent[i] = timeString[i];
|
||||||
|
}
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(1000));
|
||||||
|
}
|
||||||
|
Serial.println("Countdown finished!");
|
||||||
|
vTaskDelete(NULL);
|
||||||
|
}
|
21
src/screens/countdown.hpp
Normal file
21
src/screens/countdown.hpp
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "base.hpp"
|
||||||
|
#include "config.h"
|
||||||
|
#include "shared.hpp"
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
#include "tasks/epd.hpp"
|
||||||
|
|
||||||
|
class CountdownScreen {
|
||||||
|
protected:
|
||||||
|
static uint countdownMinutes;
|
||||||
|
static uint countdownSeconds;
|
||||||
|
static std::array<String, 7> epdContent;
|
||||||
|
public:
|
||||||
|
static void init();
|
||||||
|
static void showScreen();
|
||||||
|
static std::array<String, 7> getEpdContent();
|
||||||
|
static void setCountdownSeconds(uint sec);
|
||||||
|
static void countdownTask(void *pvParameters);
|
||||||
|
};
|
36
src/screens/custom_text.cpp
Normal file
36
src/screens/custom_text.cpp
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#include "custom_text.hpp"
|
||||||
|
|
||||||
|
std::string CustomTextScreen::customText = "";
|
||||||
|
std::array<String, 7> CustomTextScreen::epdContent = {"", "", "", "", "", "", ""};
|
||||||
|
|
||||||
|
void CustomTextScreen::init()
|
||||||
|
{
|
||||||
|
CustomTextScreen::showScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CustomTextScreen::showScreen()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void CustomTextScreen::setSimpleText(String text)
|
||||||
|
{
|
||||||
|
customText = text.c_str();
|
||||||
|
|
||||||
|
customText.insert(customText.begin(), 7 - customText.length(), ' ');
|
||||||
|
|
||||||
|
for (uint i = 0; i < 7; i++)
|
||||||
|
{
|
||||||
|
CustomTextScreen::epdContent[i] = customText[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CustomTextScreen::setText(std::array<String, 7> customContent)
|
||||||
|
{
|
||||||
|
epdContent = customContent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::array<String, 7> CustomTextScreen::getEpdContent()
|
||||||
|
{
|
||||||
|
return CustomTextScreen::epdContent;
|
||||||
|
}
|
20
src/screens/custom_text.hpp
Normal file
20
src/screens/custom_text.hpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "base.hpp"
|
||||||
|
#include "config.h"
|
||||||
|
#include "shared.hpp"
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
#include "tasks/epd.hpp"
|
||||||
|
|
||||||
|
class CustomTextScreen {
|
||||||
|
protected:
|
||||||
|
static std::string customText;
|
||||||
|
static std::array<String, 7> epdContent;
|
||||||
|
public:
|
||||||
|
static void init();
|
||||||
|
static void showScreen();
|
||||||
|
static std::array<String, 7> getEpdContent();
|
||||||
|
static void setSimpleText(String text);
|
||||||
|
static void setText(std::array<String, 7> customContent);
|
||||||
|
};
|
50
src/screens/halvingcountdown.cpp
Normal file
50
src/screens/halvingcountdown.cpp
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#include "halvingcountdown.hpp"
|
||||||
|
|
||||||
|
uint HalvingCountdownScreen::currentBlockNr = 0;
|
||||||
|
uint HalvingCountdownScreen::halvingBlockNr = 0;
|
||||||
|
|
||||||
|
std::array<String, 7> HalvingCountdownScreen::epdContent = {"", "", "", "", "", "", ""};
|
||||||
|
|
||||||
|
void HalvingCountdownScreen::init()
|
||||||
|
{
|
||||||
|
HalvingCountdownScreen::currentBlockNr = preferences.getUInt("blockHeight", 789000);
|
||||||
|
|
||||||
|
setupBlockNotify();
|
||||||
|
HalvingCountdownScreen::showScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HalvingCountdownScreen::showScreen()
|
||||||
|
{
|
||||||
|
uint minutesToHalving = HalvingCountdownScreen::getNextHalvingBlockNr() * 10;
|
||||||
|
|
||||||
|
int years = floor(minutesToHalving / 525600);
|
||||||
|
int days = floor((minutesToHalving - (years * 525600)) / (24*60));
|
||||||
|
int hours = floor((minutesToHalving - (years * 525600) - (days * (24*60))) / 60);
|
||||||
|
int mins = floor(minutesToHalving - (years * 525600) - (days * (24*60)) - (hours * 60));
|
||||||
|
// int secs = floor((minutesToHalving - (years * 525600) - (days * (24*60)) - (hours * 60) - mins) * 60);
|
||||||
|
|
||||||
|
epdContent[0] = "BIT/HALV";
|
||||||
|
epdContent[1] = "COIN/ING";
|
||||||
|
epdContent[2] = String(years) + "/YRS";
|
||||||
|
epdContent[3] = String(days) + "/DAYS";
|
||||||
|
epdContent[4] = String(hours) + "/HRS";
|
||||||
|
epdContent[5] = String(mins) + "/MINS";
|
||||||
|
epdContent[6] = "TO/GO";
|
||||||
|
}
|
||||||
|
|
||||||
|
uint HalvingCountdownScreen::getNextHalvingBlockNr()
|
||||||
|
{
|
||||||
|
return 210000 - (HalvingCountdownScreen::currentBlockNr % 210000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HalvingCountdownScreen::onNewBlock(uint blockNr)
|
||||||
|
{
|
||||||
|
HalvingCountdownScreen::currentBlockNr = blockNr;
|
||||||
|
|
||||||
|
HalvingCountdownScreen::showScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::array<String, 7> HalvingCountdownScreen::getEpdContent()
|
||||||
|
{
|
||||||
|
return HalvingCountdownScreen::epdContent;
|
||||||
|
}
|
20
src/screens/halvingcountdown.hpp
Normal file
20
src/screens/halvingcountdown.hpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "base.hpp"
|
||||||
|
#include "config.h"
|
||||||
|
#include "shared.hpp"
|
||||||
|
#include "tasks/epd.hpp"
|
||||||
|
#include "tasks/blocknotify.hpp"
|
||||||
|
|
||||||
|
class HalvingCountdownScreen {
|
||||||
|
protected:
|
||||||
|
static uint currentBlockNr;
|
||||||
|
static uint halvingBlockNr;
|
||||||
|
static std::array<String, 7> epdContent;
|
||||||
|
public:
|
||||||
|
static void init();
|
||||||
|
static void showScreen();
|
||||||
|
static void onNewBlock(uint blockNr);
|
||||||
|
static uint getNextHalvingBlockNr();
|
||||||
|
static std::array<String, 7> getEpdContent();
|
||||||
|
};
|
30
src/screens/sats_per_dollar.cpp
Normal file
30
src/screens/sats_per_dollar.cpp
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#include "sats_per_dollar.hpp"
|
||||||
|
|
||||||
|
uint SatsPerDollarScreen::satsPerDollar = 0;
|
||||||
|
std::array<String, 7> SatsPerDollarScreen::epdContent = { "", "", "", "", "", "", "" };
|
||||||
|
|
||||||
|
void SatsPerDollarScreen::init() {
|
||||||
|
SatsPerDollarScreen::satsPerDollar = int(round(1 / preferences.getFloat("btcPrice", 12345) * 10e7));
|
||||||
|
setupGetPriceTask();
|
||||||
|
SatsPerDollarScreen::showScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SatsPerDollarScreen::showScreen() {
|
||||||
|
std::string satsPerDollarString = String(SatsPerDollarScreen::satsPerDollar).c_str();
|
||||||
|
satsPerDollarString.insert(satsPerDollarString.begin(), 7 - satsPerDollarString.length(), ' ');
|
||||||
|
epdContent[0] = "MSCW/TIME";
|
||||||
|
for (uint i = 1; i < 7; i++)
|
||||||
|
{
|
||||||
|
SatsPerDollarScreen::epdContent[i] = satsPerDollarString[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SatsPerDollarScreen::onPriceUpdate(uint price) {
|
||||||
|
SatsPerDollarScreen::satsPerDollar = int(round(1 / float(price) * 10e7));
|
||||||
|
|
||||||
|
SatsPerDollarScreen::showScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::array<String, 7> SatsPerDollarScreen::getEpdContent() {
|
||||||
|
return SatsPerDollarScreen::epdContent;
|
||||||
|
}
|
17
src/screens/sats_per_dollar.hpp
Normal file
17
src/screens/sats_per_dollar.hpp
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "base.hpp"
|
||||||
|
#include "config.h"
|
||||||
|
#include "shared.hpp"
|
||||||
|
#include "tasks/epd.hpp"
|
||||||
|
|
||||||
|
class SatsPerDollarScreen {
|
||||||
|
protected:
|
||||||
|
static uint satsPerDollar;
|
||||||
|
static std::array<String, 7> epdContent;
|
||||||
|
public:
|
||||||
|
static void init();
|
||||||
|
static void showScreen();
|
||||||
|
static void onPriceUpdate(uint price);
|
||||||
|
static std::array<String, 7> getEpdContent();
|
||||||
|
};
|
29
src/screens/ticker.cpp
Normal file
29
src/screens/ticker.cpp
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#include "ticker.hpp"
|
||||||
|
|
||||||
|
uint TickerScreen::price = 12345;
|
||||||
|
std::array<String, 7> TickerScreen::epdContent = { "", "", "", "", "", "", "" };
|
||||||
|
|
||||||
|
void TickerScreen::init() {
|
||||||
|
TickerScreen::price = preferences.getFloat("btcPrice", 12345);;
|
||||||
|
setupGetPriceTask();
|
||||||
|
TickerScreen::showScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TickerScreen::showScreen() {
|
||||||
|
std::string priceString = ("$" + String(TickerScreen::price)).c_str();
|
||||||
|
priceString.insert(priceString.begin(), 7 - priceString.length(), ' ');
|
||||||
|
epdContent[0] = "BTC/USD";
|
||||||
|
for (uint i = 1; i < 7; i++)
|
||||||
|
{
|
||||||
|
TickerScreen::epdContent[i] = priceString[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TickerScreen::onPriceUpdate(uint price) {
|
||||||
|
TickerScreen::price = price;
|
||||||
|
TickerScreen::showScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::array<String, 7> TickerScreen::getEpdContent() {
|
||||||
|
return TickerScreen::epdContent;
|
||||||
|
}
|
19
src/screens/ticker.hpp
Normal file
19
src/screens/ticker.hpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "base.hpp"
|
||||||
|
#include "config.h"
|
||||||
|
#include "shared.hpp"
|
||||||
|
#include "tasks/epd.hpp"
|
||||||
|
|
||||||
|
class TickerScreen
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
static uint price;
|
||||||
|
static std::array<String, 7> epdContent;
|
||||||
|
|
||||||
|
public:
|
||||||
|
static void init();
|
||||||
|
static void showScreen();
|
||||||
|
static void onPriceUpdate(uint price);
|
||||||
|
static std::array<String, 7> getEpdContent();
|
||||||
|
};
|
39
src/screens/time.cpp
Normal file
39
src/screens/time.cpp
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
#include "time.hpp"
|
||||||
|
|
||||||
|
String TimeScreen::timeString = "";
|
||||||
|
String TimeScreen::dateString = "";
|
||||||
|
std::array<String, 7> TimeScreen::epdContent = { "", "", "", "", "", "", "" };
|
||||||
|
|
||||||
|
void TimeScreen::init() {
|
||||||
|
setupMinuteEvent();
|
||||||
|
TimeScreen::showScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TimeScreen::showScreen() {
|
||||||
|
TimeScreen::dateString = String(rtc.getDay()) + "/" + String(rtc.getMonth() + 1);
|
||||||
|
TimeScreen::timeString = rtc.getTime("%H:%M").c_str();
|
||||||
|
|
||||||
|
std::string timeString = TimeScreen::timeString.c_str();
|
||||||
|
timeString.insert(timeString.begin(), 7 - timeString.length(), ' ');
|
||||||
|
TimeScreen::epdContent[0] = TimeScreen::dateString;
|
||||||
|
for (uint i = 1; i < 7; i++)
|
||||||
|
{
|
||||||
|
TimeScreen::epdContent[i] = timeString[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TimeScreen::onNewMinute() {
|
||||||
|
TimeScreen::showScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::array<String, 7> TimeScreen::getEpdContent() {
|
||||||
|
return TimeScreen::epdContent;
|
||||||
|
}
|
||||||
|
|
||||||
|
TimeScreen* TimeScreen::getInstance() {
|
||||||
|
if (instance_ == nullptr) {
|
||||||
|
instance_ = new TimeScreen;
|
||||||
|
}
|
||||||
|
|
||||||
|
return instance_;
|
||||||
|
}
|
20
src/screens/time.hpp
Normal file
20
src/screens/time.hpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "base.hpp"
|
||||||
|
#include "config.h"
|
||||||
|
#include "shared.hpp"
|
||||||
|
#include "tasks/epd.hpp"
|
||||||
|
|
||||||
|
class TimeScreen {
|
||||||
|
protected:
|
||||||
|
static String timeString;
|
||||||
|
static String dateString;
|
||||||
|
static std::array<String, 7> epdContent;
|
||||||
|
static TimeScreen* instance_;
|
||||||
|
public:
|
||||||
|
static void init();
|
||||||
|
static void showScreen();
|
||||||
|
static void onNewMinute();
|
||||||
|
static std::array<String, 7> getEpdContent();
|
||||||
|
static TimeScreen* getInstance();
|
||||||
|
};
|
52
src/shared.hpp
Normal file
52
src/shared.hpp
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
//##include <Crypto.h>
|
||||||
|
|
||||||
|
#include <WiFi.h>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
|
#include <WiFiClientSecure.h>
|
||||||
|
#ifndef NO_MCP
|
||||||
|
#include <Adafruit_MCP23X17.h>
|
||||||
|
#endif
|
||||||
|
#ifdef WITH_RGB_LED
|
||||||
|
#include <Adafruit_NeoPixel.h>
|
||||||
|
#endif
|
||||||
|
#include <ESP32Time.h>
|
||||||
|
#include <Preferences.h>
|
||||||
|
|
||||||
|
typedef std::function<void()> EventCallback;
|
||||||
|
typedef std::function<void(uint number)> EventCallbackWithNumber;
|
||||||
|
|
||||||
|
extern WiFiClient wifiClientInsecure;
|
||||||
|
extern WiFiClientSecure wifiClient;
|
||||||
|
|
||||||
|
extern ESP32Time rtc;
|
||||||
|
extern Preferences preferences;
|
||||||
|
|
||||||
|
extern String softAP_SSID;
|
||||||
|
extern String softAP_password;
|
||||||
|
|
||||||
|
extern bool timerRunning;
|
||||||
|
extern uint timerSeconds;
|
||||||
|
extern uint32_t moment;
|
||||||
|
|
||||||
|
#ifndef NO_MCP
|
||||||
|
extern Adafruit_MCP23X17 mcp;
|
||||||
|
#endif
|
||||||
|
#ifdef WITH_RGB_LED
|
||||||
|
extern Adafruit_NeoPixel pixels;
|
||||||
|
#endif
|
||||||
|
extern std::map<int, std::string> screenNameMap;
|
||||||
|
|
||||||
|
const int SCREEN_BLOCK_HEIGHT = 0;
|
||||||
|
const int SCREEN_MSCW_TIME = 1;
|
||||||
|
const int SCREEN_BTC_TICKER = 2;
|
||||||
|
const int SCREEN_TIME = 3;
|
||||||
|
const int SCREEN_HALVING_COUNTDOWN = 4;
|
||||||
|
const int SCREEN_COUNTDOWN = 98;
|
||||||
|
const int SCREEN_CUSTOM = 99;
|
||||||
|
const int screens[5] = { SCREEN_BLOCK_HEIGHT, SCREEN_MSCW_TIME, SCREEN_BTC_TICKER, SCREEN_TIME, SCREEN_HALVING_COUNTDOWN };
|
||||||
|
|
||||||
|
const uint screenCount = sizeof(screens) / sizeof(int);
|
116
src/tasks/blocknotify.cpp
Normal file
116
src/tasks/blocknotify.cpp
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
#include "blocknotify.hpp"
|
||||||
|
|
||||||
|
int currentBlockHeight = 789000;
|
||||||
|
QueueHandle_t bitcoinQueue;
|
||||||
|
BitcoinEvent bitcoinEvent;
|
||||||
|
const String NEW_BLOCK_MINED_EVENT = "new_block_mined";
|
||||||
|
std::vector<EventCallbackWithNumber> blockEventCallbacks;
|
||||||
|
TaskHandle_t blockNotifyTaskHandle;
|
||||||
|
|
||||||
|
#ifdef IS_3C
|
||||||
|
#define BLOCKNOTIFY_WAIT_TIME 300000
|
||||||
|
#else
|
||||||
|
#define BLOCKNOTIFY_WAIT_TIME 60000
|
||||||
|
#endif
|
||||||
|
|
||||||
|
bool useBitcoind = true;
|
||||||
|
|
||||||
|
void checkBitcoinBlock(void *pvParameters)
|
||||||
|
{
|
||||||
|
int blockHeight = preferences.getUInt("blockHeight", currentBlockHeight);
|
||||||
|
HTTPClient http;
|
||||||
|
http.setReuse(true);
|
||||||
|
useBitcoind = wifiClientInsecure.connect(BITCOIND_HOST, BITCOIND_PORT);
|
||||||
|
if (useBitcoind)
|
||||||
|
Serial.println("bitcoind node is reachable, using this for blocks.");
|
||||||
|
else
|
||||||
|
Serial.println("bitcoind node is not reachable, using mempool API instead.");
|
||||||
|
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
if (useBitcoind)
|
||||||
|
{
|
||||||
|
StaticJsonDocument<200> jsonDoc;
|
||||||
|
|
||||||
|
http.begin(BITCOIND_HOST, BITCOIND_PORT);
|
||||||
|
http.addHeader("Content-Type", "application/json");
|
||||||
|
String payload = "{\"jsonrpc\":\"1.0\",\"id\":\"current_block_height\",\"method\":\"getblockcount\",\"params\":[]}";
|
||||||
|
String auth = String(BITCOIND_RPC_USER) + ":" + String(BITCOIND_RPC_PASS);
|
||||||
|
String authEncoded = base64::encode(auth);
|
||||||
|
http.addHeader("Authorization", "Basic " + authEncoded);
|
||||||
|
|
||||||
|
int httpCode = http.POST(payload);
|
||||||
|
if (httpCode > 0)
|
||||||
|
{
|
||||||
|
String response = http.getString();
|
||||||
|
deserializeJson(jsonDoc, response);
|
||||||
|
blockHeight = jsonDoc["result"];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Serial.println("Error in HTTP request to bitcoind");
|
||||||
|
}
|
||||||
|
|
||||||
|
http.end();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
http.begin("https://mempool.bitcoin.nl/api/blocks/tip/height");
|
||||||
|
int httpCode = http.GET();
|
||||||
|
|
||||||
|
if (httpCode > 0 && httpCode == HTTP_CODE_OK)
|
||||||
|
{
|
||||||
|
String blockHeightStr = http.getString();
|
||||||
|
blockHeight = blockHeightStr.toInt();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Serial.println("Error in HTTP request to mempool API");
|
||||||
|
}
|
||||||
|
|
||||||
|
http.end();
|
||||||
|
}
|
||||||
|
if (blockHeight > currentBlockHeight)
|
||||||
|
{
|
||||||
|
for (auto &callback : blockEventCallbacks)
|
||||||
|
{ // Loop through all the event callbacks and call them
|
||||||
|
callback(blockHeight);
|
||||||
|
}
|
||||||
|
currentBlockHeight = blockHeight;
|
||||||
|
preferences.putUInt("blockHeight", currentBlockHeight);
|
||||||
|
}
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(BLOCKNOTIFY_WAIT_TIME)); // wait 1 minute before checking again
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// void bitcoinEventHandler(void *pvParameters)
|
||||||
|
// {
|
||||||
|
// for (;;)
|
||||||
|
// {
|
||||||
|
// BitcoinEvent event;
|
||||||
|
// xQueueReceive(bitcoinQueue, &event, portMAX_DELAY);
|
||||||
|
// if (event.event == "new_block_mined")
|
||||||
|
// {
|
||||||
|
// Serial.println("New Bitcoin block mined at height: " + String(event.blockHeight));
|
||||||
|
// Serial.println("Event: " + event.event);
|
||||||
|
// }
|
||||||
|
// // add your event handling logic here
|
||||||
|
// vTaskDelay(pdMS_TO_TICKS(1000));
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
void setupBlockNotify()
|
||||||
|
{
|
||||||
|
// bitcoinQueue = xQueueCreate(10, sizeof(BitcoinEvent) * 2);
|
||||||
|
|
||||||
|
if (blockNotifyTaskHandle == nullptr) {
|
||||||
|
xTaskCreate(checkBitcoinBlock, "checkBitcoinBlock", 4096, NULL, 1, &blockNotifyTaskHandle);
|
||||||
|
vTaskSuspend(blockNotifyTaskHandle);
|
||||||
|
}
|
||||||
|
// xTaskCreate(bitcoinEventHandler, "bitcoinEventHandler", 10000, NULL, 110, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void registerNewBlockCallback(EventCallbackWithNumber cb)
|
||||||
|
{
|
||||||
|
blockEventCallbacks.push_back(cb);
|
||||||
|
}
|
26
src/tasks/blocknotify.hpp
Normal file
26
src/tasks/blocknotify.hpp
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <WiFi.h>
|
||||||
|
#include <ArduinoJson.h>
|
||||||
|
#include <HTTPClient.h>
|
||||||
|
#include <freertos/FreeRTOS.h>
|
||||||
|
#include <freertos/task.h>
|
||||||
|
#include "base64.h"
|
||||||
|
|
||||||
|
#include "shared.hpp"
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
String event;
|
||||||
|
int blockHeight;
|
||||||
|
} BitcoinEvent;
|
||||||
|
|
||||||
|
extern TaskHandle_t blockNotifyTaskHandle;
|
||||||
|
|
||||||
|
void checkBitcoinBlock(void *pvParameters);
|
||||||
|
//void bitcoinEventHandler(void *pvParameters);
|
||||||
|
void setupBlockNotify();
|
||||||
|
|
||||||
|
void registerNewBlockCallback(EventCallbackWithNumber cb);
|
||||||
|
int getBlockFromBitcoind();
|
||||||
|
int getBlockFromMempoolSpace();
|
34
src/tasks/button.cpp
Normal file
34
src/tasks/button.cpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#include "button.hpp"
|
||||||
|
#ifndef NO_MCP
|
||||||
|
TaskHandle_t buttonTaskHandle = NULL;
|
||||||
|
// Define a type for the event callback
|
||||||
|
std::vector<EventCallback> buttonEventCallbacks; // Define a vector to hold multiple event callbacks
|
||||||
|
|
||||||
|
|
||||||
|
void buttonTask(void *parameter)
|
||||||
|
{
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 4; i++)
|
||||||
|
{
|
||||||
|
if (!mcp.digitalRead(i))
|
||||||
|
{
|
||||||
|
Serial.println("Button " + String(i) + " Pressed!");
|
||||||
|
delay(250);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(250));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setupButtonTask()
|
||||||
|
{
|
||||||
|
xTaskCreate(buttonTask, "MinuteTask", 2048, NULL, 1, &buttonTaskHandle); // Create the FreeRTOS task
|
||||||
|
}
|
||||||
|
|
||||||
|
void registerNewButtonCallback(EventCallback cb)
|
||||||
|
{
|
||||||
|
buttonEventCallbacks.push_back(cb);
|
||||||
|
}
|
||||||
|
#endif
|
17
src/tasks/button.hpp
Normal file
17
src/tasks/button.hpp
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef NO_MCP
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <Wire.h>
|
||||||
|
#include <freertos/FreeRTOS.h>
|
||||||
|
#include <freertos/task.h>
|
||||||
|
#include <vector>
|
||||||
|
#include "shared.hpp"
|
||||||
|
|
||||||
|
extern TaskHandle_t buttonTaskHandle;
|
||||||
|
|
||||||
|
|
||||||
|
void buttonTask(void *pvParameters);
|
||||||
|
void setupButtonTask();
|
||||||
|
void registerNewButtonCallback(EventCallback cb);
|
||||||
|
#endif
|
451
src/tasks/epd.cpp
Normal file
451
src/tasks/epd.cpp
Normal file
@ -0,0 +1,451 @@
|
|||||||
|
#include "epd.hpp"
|
||||||
|
|
||||||
|
#ifdef IS_S3
|
||||||
|
// reversed
|
||||||
|
const int EPD_CS[7] = {17, 21, 33, 10, 6, 4, 2};
|
||||||
|
const int EPD_BUSY[7] = {16, 18, 37, 9, 7, 5, 3};
|
||||||
|
const int EPD_RESET_MPD[7] = {14, 13, 12, 11, 10, 9, 8};
|
||||||
|
|
||||||
|
//const int EPD_CS[7] = {2, 4, 6, 10, 33, 21, 17};
|
||||||
|
//const int EPD_BUSY[7] = {3, 5, 7, 9, 37, 18, 16};
|
||||||
|
//const int EPD_RESET_MPD[7] = {8, 9, 10, 11, 12, 13, 14};
|
||||||
|
// const int EPD_CS[7] = {2, 4, 10, 38, 34, 21, 17};
|
||||||
|
// const int EPD_BUSY[7] = {3, 5, 9, 36, 35, 18, 16};
|
||||||
|
const int EPD_DC = 14;
|
||||||
|
const int RST_PIN = 15;
|
||||||
|
#elif defined(IS_S2)
|
||||||
|
|
||||||
|
// reversed
|
||||||
|
const int EPD_CS[7] = {17, 21, 33, 10, 6, 4, 2};
|
||||||
|
const int EPD_BUSY[7] = {16, 18, 37, 9, 7, 5, 3};
|
||||||
|
const int EPD_RESET_MPD[7] = {14, 13, 12, 11, 10, 9, 8};
|
||||||
|
|
||||||
|
// const int EPD_CS[7] = {1, 4, 6, 8, 10, 13, 40};
|
||||||
|
// const int EPD_BUSY[7] = {3, 5, 7, 9, 11, 12, 39};
|
||||||
|
const int EPD_DC = 14;
|
||||||
|
const int RST_PIN = 15;
|
||||||
|
|
||||||
|
#elif defined(ARDUINO_ESP32S3_DEV)
|
||||||
|
const int EPD_CS[7] = {40, 39, 9, 10, 3, 8, 18};
|
||||||
|
const int EPD_BUSY[7] = {4, 5, 6, 7, 15, 16, 17};
|
||||||
|
const int EPD_RESET_MPD[7] = {8, 9, 10, 11, 12, 13, 14};
|
||||||
|
|
||||||
|
const int EPD_DC = 1;
|
||||||
|
const int RST_PIN = 2;
|
||||||
|
|
||||||
|
#else
|
||||||
|
const int EPD_CS[7] = {21, 13, 5, 17, 4, 2, 15};
|
||||||
|
const int EPD_BUSY[7] = {36, 39, 34, 35, 32, 33, 25};
|
||||||
|
|
||||||
|
// const int EPD_CS[7] = {4, 14, 5, 17, 16, 4, 15};
|
||||||
|
// const int EPD_BUSY[7] = {5, 27, 34, 35, 32, 33, 25};
|
||||||
|
const int EPD_RESET_MPD[7] = {8, 9, 10, 11, 12, 13, 14};
|
||||||
|
|
||||||
|
const int EPD_DC = 22;
|
||||||
|
const int RST_PIN = 12;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef IS_BW
|
||||||
|
GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> displays[7] = {
|
||||||
|
GxEPD2_213_B74(EPD_CS[0], EPD_DC, /*RST=*/-1, EPD_BUSY[0]),
|
||||||
|
GxEPD2_213_B74(EPD_CS[1], EPD_DC, /*RST=*/-1, EPD_BUSY[1]),
|
||||||
|
GxEPD2_213_B74(EPD_CS[2], EPD_DC, /*RST=*/-1, EPD_BUSY[2]),
|
||||||
|
GxEPD2_213_B74(EPD_CS[3], EPD_DC, /*RST=*/-1, EPD_BUSY[3]),
|
||||||
|
GxEPD2_213_B74(EPD_CS[4], EPD_DC, /*RST=*/-1, EPD_BUSY[4]),
|
||||||
|
GxEPD2_213_B74(EPD_CS[5], EPD_DC, /*RST=*/-1, EPD_BUSY[5]),
|
||||||
|
GxEPD2_213_B74(EPD_CS[6], EPD_DC, /*RST=*/-1, EPD_BUSY[6]),
|
||||||
|
};
|
||||||
|
|
||||||
|
const int SEM_WAIT_TIME = 10000;
|
||||||
|
|
||||||
|
#else
|
||||||
|
GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> displays[7] = {
|
||||||
|
GxEPD2_213_Z98c(EPD_CS[0], EPD_DC, /*RST=*/-1, EPD_BUSY[0]),
|
||||||
|
GxEPD2_213_Z98c(EPD_CS[1], EPD_DC, /*RST=*/-1, EPD_BUSY[1]),
|
||||||
|
GxEPD2_213_Z98c(EPD_CS[2], EPD_DC, /*RST=*/-1, EPD_BUSY[2]),
|
||||||
|
GxEPD2_213_Z98c(EPD_CS[3], EPD_DC, /*RST=*/-1, EPD_BUSY[3]),
|
||||||
|
GxEPD2_213_Z98c(EPD_CS[4], EPD_DC, /*RST=*/-1, EPD_BUSY[4]),
|
||||||
|
GxEPD2_213_Z98c(EPD_CS[5], EPD_DC, /*RST=*/-1, EPD_BUSY[5]),
|
||||||
|
GxEPD2_213_Z98c(EPD_CS[6], EPD_DC, /*RST=*/-1, EPD_BUSY[6]),
|
||||||
|
};
|
||||||
|
|
||||||
|
const int SEM_WAIT_TIME = 30000;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const uint displaySize = 7;
|
||||||
|
uint32_t lastFullRefresh[displaySize];
|
||||||
|
|
||||||
|
std::array<String, 7> currentEpdContent;
|
||||||
|
std::array<String, 7> epdContent;
|
||||||
|
TaskHandle_t tasks[displaySize];
|
||||||
|
SemaphoreHandle_t epdUpdateSemaphore[displaySize];
|
||||||
|
uint8_t qrcode[qrcodegen_BUFFER_LEN_MAX];
|
||||||
|
|
||||||
|
void setupDisplays()
|
||||||
|
{
|
||||||
|
handleScreenTasks(getCurrentScreen());
|
||||||
|
xTaskCreate(taskEpd, "epd_task", 2048, NULL, 1, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void resetAllDisplays()
|
||||||
|
{
|
||||||
|
digitalWrite(RST_PIN, HIGH);
|
||||||
|
pinMode(RST_PIN, OUTPUT);
|
||||||
|
delay(20);
|
||||||
|
digitalWrite(RST_PIN, LOW);
|
||||||
|
delay(20);
|
||||||
|
digitalWrite(RST_PIN, HIGH);
|
||||||
|
delay(200);
|
||||||
|
|
||||||
|
// for (int i = 8; i < 16; i++) {
|
||||||
|
// mcp.digitalWrite(i, HIGH);
|
||||||
|
// mcp.pinMode(i, OUTPUT);
|
||||||
|
// delay(20);
|
||||||
|
// mcp.digitalWrite(i, LOW);
|
||||||
|
// delay(20);
|
||||||
|
// mcp.digitalWrite(i, HIGH);
|
||||||
|
// delay(200);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
void resetSingleDisplay(int i)
|
||||||
|
{
|
||||||
|
#ifndef NO_MCP
|
||||||
|
mcp.digitalWrite(EPD_RESET_MPD[i], HIGH);
|
||||||
|
delay(20);
|
||||||
|
mcp.digitalWrite(EPD_RESET_MPD[i], LOW);
|
||||||
|
delay(20);
|
||||||
|
mcp.digitalWrite(EPD_RESET_MPD[i], HIGH);
|
||||||
|
delay(200);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void initDisplays()
|
||||||
|
{
|
||||||
|
for (uint i = 0; i < displaySize; i++)
|
||||||
|
{
|
||||||
|
#ifndef NO_MCP
|
||||||
|
mcp.pinMode(EPD_RESET_MPD[i], OUTPUT);
|
||||||
|
#endif
|
||||||
|
displays[i].init();
|
||||||
|
#ifndef NO_MCP
|
||||||
|
resetSingleDisplay(i);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// displays[i].epd2.init(SW_SCK, SW_MOSI, 115200, true, 20, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string text = "BTClock";
|
||||||
|
for (uint i = 0; i < displaySize; i++)
|
||||||
|
{
|
||||||
|
epdUpdateSemaphore[i] = xSemaphoreCreateBinary();
|
||||||
|
xSemaphoreGive(epdUpdateSemaphore[i]);
|
||||||
|
|
||||||
|
// Allocate memory for the task parameter
|
||||||
|
int *taskParam = new int;
|
||||||
|
*taskParam = i;
|
||||||
|
|
||||||
|
xTaskCreate(updateDisplay, "EpdUpd" + char(i), 2048, taskParam, 1, &tasks[i]); // create task
|
||||||
|
// delay(1000);
|
||||||
|
}
|
||||||
|
epdContent = {"B", "T", "C", "L", "O", "C", "K"};
|
||||||
|
for (uint i = 0; i < displaySize; i++)
|
||||||
|
{
|
||||||
|
xTaskNotifyGive(tasks[i]);
|
||||||
|
}
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(displays[0].epd2.full_refresh_time));
|
||||||
|
}
|
||||||
|
|
||||||
|
void taskEpd(void *pvParameters)
|
||||||
|
{
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
switch (getCurrentScreen())
|
||||||
|
{
|
||||||
|
case SCREEN_BLOCK_HEIGHT:
|
||||||
|
epdContent = BlockHeightScreen::getEpdContent();
|
||||||
|
break;
|
||||||
|
case SCREEN_BTC_TICKER:
|
||||||
|
epdContent = TickerScreen::getEpdContent();
|
||||||
|
break;
|
||||||
|
case SCREEN_MSCW_TIME:
|
||||||
|
epdContent = SatsPerDollarScreen::getEpdContent();
|
||||||
|
break;
|
||||||
|
case SCREEN_TIME:
|
||||||
|
epdContent = TimeScreen::getEpdContent();
|
||||||
|
break;
|
||||||
|
case SCREEN_HALVING_COUNTDOWN:
|
||||||
|
epdContent = HalvingCountdownScreen::getEpdContent();
|
||||||
|
break;
|
||||||
|
case SCREEN_COUNTDOWN:
|
||||||
|
epdContent = CountdownScreen::getEpdContent();
|
||||||
|
break;
|
||||||
|
case SCREEN_CUSTOM:
|
||||||
|
epdContent = CustomTextScreen::getEpdContent();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool updatedThisCycle = false;
|
||||||
|
|
||||||
|
|
||||||
|
for (uint i = 0; i < displaySize; i++)
|
||||||
|
{
|
||||||
|
if (epdContent[i].compareTo(currentEpdContent[i]) != 0)
|
||||||
|
{
|
||||||
|
if (!updatedThisCycle)
|
||||||
|
{
|
||||||
|
#ifdef NO_MCP
|
||||||
|
resetAllDisplays();
|
||||||
|
#endif
|
||||||
|
updatedThisCycle = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef NO_DISPLAY
|
||||||
|
|
||||||
|
if (xSemaphoreTake(epdUpdateSemaphore[i], pdMS_TO_TICKS(SEM_WAIT_TIME)) == pdTRUE)
|
||||||
|
{
|
||||||
|
xTaskNotifyGive(tasks[i]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Serial.println("Couldnt get screen" + String(i));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
currentEpdContent[i] = epdContent[i];
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef WITH_RGB_LED
|
||||||
|
if (updatedThisCycle && preferences.getBool("ledFlashOnUpd", false))
|
||||||
|
{
|
||||||
|
xTaskNotifyGive(ledHandlerTaskHandle);
|
||||||
|
Serial.println("Flash leds");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(1000));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::array<String, 7> getCurrentEpdContent()
|
||||||
|
{
|
||||||
|
return currentEpdContent;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setEpdContent(std::array<String, 7> newEpdContent)
|
||||||
|
{
|
||||||
|
epdContent = newEpdContent;
|
||||||
|
}
|
||||||
|
|
||||||
|
void splitText(uint dispNum, String top, String bottom, bool partial)
|
||||||
|
{
|
||||||
|
displays[dispNum].setRotation(2);
|
||||||
|
displays[dispNum].setFont(&FONT_SMALL);
|
||||||
|
displays[dispNum].setTextColor(getFgColor());
|
||||||
|
|
||||||
|
// Top text
|
||||||
|
int16_t ttbx, ttby;
|
||||||
|
uint16_t ttbw, ttbh;
|
||||||
|
displays[dispNum].getTextBounds(top, 0, 0, &ttbx, &ttby, &ttbw, &ttbh);
|
||||||
|
uint16_t tx = ((displays[dispNum].width() - ttbw) / 2) - ttbx;
|
||||||
|
uint16_t ty = ((displays[dispNum].height() - ttbh) / 2) - ttby - ttbh / 2 - 12;
|
||||||
|
|
||||||
|
// Bottom text
|
||||||
|
int16_t tbbx, tbby;
|
||||||
|
uint16_t tbbw, tbbh;
|
||||||
|
displays[dispNum].getTextBounds(bottom, 0, 0, &tbbx, &tbby, &tbbw, &tbbh);
|
||||||
|
uint16_t bx = ((displays[dispNum].width() - tbbw) / 2) - tbbx;
|
||||||
|
uint16_t by = ((displays[dispNum].height() - tbbh) / 2) - tbby + tbbh / 2 + 12;
|
||||||
|
|
||||||
|
// Make separator as wide as the shortest text.
|
||||||
|
uint16_t lineWidth, lineX;
|
||||||
|
if (tbbw < ttbh)
|
||||||
|
lineWidth = tbbw;
|
||||||
|
else
|
||||||
|
lineWidth = ttbw;
|
||||||
|
lineX = round((displays[dispNum].width() - lineWidth) / 2);
|
||||||
|
|
||||||
|
displays[dispNum].fillScreen(getBgColor());
|
||||||
|
displays[dispNum].setCursor(tx, ty);
|
||||||
|
displays[dispNum].print(top);
|
||||||
|
displays[dispNum].fillRoundRect(lineX, displays[dispNum].height() / 2 - 3, lineWidth, 6, 3, getFgColor());
|
||||||
|
displays[dispNum].setCursor(bx, by);
|
||||||
|
displays[dispNum].print(bottom);
|
||||||
|
}
|
||||||
|
|
||||||
|
void showDigit(uint dispNum, char chr, bool partial, const GFXfont *font)
|
||||||
|
{
|
||||||
|
String str(chr);
|
||||||
|
displays[dispNum].setRotation(2);
|
||||||
|
displays[dispNum].setFont(font);
|
||||||
|
displays[dispNum].setTextColor(getFgColor());
|
||||||
|
int16_t tbx, tby;
|
||||||
|
uint16_t tbw, tbh;
|
||||||
|
displays[dispNum].getTextBounds(str, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
// center the bounding box by transposition of the origin:
|
||||||
|
uint16_t x = ((displays[dispNum].width() - tbw) / 2) - tbx;
|
||||||
|
uint16_t y = ((displays[dispNum].height() - tbh) / 2) - tby;
|
||||||
|
displays[dispNum].fillScreen(getBgColor());
|
||||||
|
displays[dispNum].setCursor(x, y);
|
||||||
|
displays[dispNum].print(str);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fullRefresh(void *pvParameters)
|
||||||
|
{
|
||||||
|
resetAllDisplays();
|
||||||
|
|
||||||
|
for (uint i = 0; i < displaySize; i++)
|
||||||
|
{
|
||||||
|
lastFullRefresh[i] = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
vTaskDelete(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void updateDisplay(void *pvParameters)
|
||||||
|
{
|
||||||
|
const int epdIndex = *(int *)pvParameters;
|
||||||
|
delete (int *)pvParameters;
|
||||||
|
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
// Wait for the task notification
|
||||||
|
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
|
||||||
|
|
||||||
|
if (epdContent[epdIndex].compareTo(currentEpdContent[epdIndex]) != 0)
|
||||||
|
{
|
||||||
|
currentEpdContent[epdIndex] = epdContent[epdIndex];
|
||||||
|
// resetSingleDisplay(epdIndex);
|
||||||
|
#ifndef NO_MCP
|
||||||
|
displays[epdIndex].init(0, false);
|
||||||
|
delay(displays[epdIndex].epd2.power_on_time);
|
||||||
|
resetSingleDisplay(epdIndex);
|
||||||
|
#endif
|
||||||
|
// displays[epdIndex].init(0, false);
|
||||||
|
bool updatePartial = true;
|
||||||
|
if (!lastFullRefresh[epdIndex])
|
||||||
|
{
|
||||||
|
updatePartial = false;
|
||||||
|
lastFullRefresh[epdIndex] = millis();
|
||||||
|
}
|
||||||
|
#ifndef NO_DISPLAY
|
||||||
|
if (strstr(epdContent[epdIndex].c_str(), "/") != NULL)
|
||||||
|
{
|
||||||
|
String top = epdContent[epdIndex].substring(0, epdContent[epdIndex].indexOf("/"));
|
||||||
|
String bottom = epdContent[epdIndex].substring(epdContent[epdIndex].indexOf("/") + 1);
|
||||||
|
splitText(epdIndex, top, bottom, updatePartial);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
showDigit(epdIndex, epdContent[epdIndex].c_str()[0], updatePartial, &FONT_BIG);
|
||||||
|
}
|
||||||
|
|
||||||
|
displays[epdIndex].display(updatePartial);
|
||||||
|
// displays[epdIndex].powerOff();
|
||||||
|
displays[epdIndex].hibernate();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
xSemaphoreGive(epdUpdateSemaphore[epdIndex]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void showSetupQr(String ssid, String password)
|
||||||
|
{
|
||||||
|
int displayIndex = 6;
|
||||||
|
|
||||||
|
const String text = "WIFI:S:" + ssid + ";T:WPA;P:" + password + ";;"; // User-supplied text
|
||||||
|
|
||||||
|
// genQrCode(text, &qrcode);
|
||||||
|
uint8_t tempBuffer[qrcodegen_BUFFER_LEN_MAX];
|
||||||
|
bool ok = qrcodegen_encodeText(text.c_str(), tempBuffer, qrcode, qrcodegen_Ecc_LOW,
|
||||||
|
qrcodegen_VERSION_MIN, qrcodegen_VERSION_MAX, qrcodegen_Mask_AUTO, true);
|
||||||
|
|
||||||
|
const int size = qrcodegen_getSize(qrcode);
|
||||||
|
|
||||||
|
const int padding = floor(float(displays[displayIndex].width() - (size * 4)) / 2);
|
||||||
|
const int paddingY = floor(float(displays[displayIndex].height() - (size * 4)) / 2);
|
||||||
|
// displays[displayIndex].setRotation(0);
|
||||||
|
// displays[displayIndex].setFullWindow();
|
||||||
|
displays[displayIndex].setPartialWindow(0, 0, displays[displayIndex].width(), displays[displayIndex].height());
|
||||||
|
displays[displayIndex].firstPage();
|
||||||
|
|
||||||
|
displays[displayIndex].fillScreen(GxEPD_WHITE);
|
||||||
|
int border = 0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
for (int y = -border; y < size * 4 + border; y++)
|
||||||
|
{
|
||||||
|
for (int x = -border; x < size * 4 + border; x++)
|
||||||
|
{
|
||||||
|
displays[displayIndex].drawPixel(padding + x, paddingY + y, qrcodegen_getModule(qrcode, floor(float(x) / 4), floor(float(y) / 4)) ? GxEPD_BLACK : GxEPD_WHITE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} while (displays[displayIndex].nextPage());
|
||||||
|
|
||||||
|
displayIndex = 4;
|
||||||
|
|
||||||
|
displays[displayIndex].setPartialWindow(0, 0, displays[displayIndex].width(), displays[displayIndex].height());
|
||||||
|
displays[displayIndex].firstPage();
|
||||||
|
|
||||||
|
displays[displayIndex].fillScreen(GxEPD_WHITE);
|
||||||
|
do
|
||||||
|
{
|
||||||
|
displays[displayIndex].setTextColor(GxEPD_BLACK);
|
||||||
|
displays[displayIndex].setCursor(0, 50);
|
||||||
|
displays[displayIndex].setFont(&FreeSansBold9pt7b);
|
||||||
|
displays[displayIndex].println("SSID:");
|
||||||
|
displays[displayIndex].setFont(&FreeSans9pt7b);
|
||||||
|
displays[displayIndex].println(ssid);
|
||||||
|
displays[displayIndex].println("");
|
||||||
|
displays[displayIndex].setFont(&FreeSansBold9pt7b);
|
||||||
|
displays[displayIndex].println("Password:");
|
||||||
|
displays[displayIndex].setFont(&FreeSans9pt7b);
|
||||||
|
displays[displayIndex].println(password);
|
||||||
|
} while (displays[displayIndex].nextPage());
|
||||||
|
|
||||||
|
displayIndex = 2;
|
||||||
|
|
||||||
|
displays[displayIndex].setPartialWindow(0, 0, displays[displayIndex].width(), displays[displayIndex].height());
|
||||||
|
displays[displayIndex].firstPage();
|
||||||
|
|
||||||
|
displays[displayIndex].fillScreen(GxEPD_WHITE);
|
||||||
|
do
|
||||||
|
{
|
||||||
|
displays[displayIndex].setTextColor(GxEPD_BLACK);
|
||||||
|
displays[displayIndex].setCursor(0, 50);
|
||||||
|
displays[displayIndex].setFont(&FreeSans9pt7b);
|
||||||
|
displays[displayIndex].println("To setup");
|
||||||
|
displays[displayIndex].println("scan QR or");
|
||||||
|
displays[displayIndex].println("connect");
|
||||||
|
displays[displayIndex].println("manually");
|
||||||
|
} while (displays[displayIndex].nextPage());
|
||||||
|
|
||||||
|
displayIndex = 0;
|
||||||
|
|
||||||
|
displays[displayIndex].setPartialWindow(0, 0, displays[displayIndex].width(), displays[displayIndex].height());
|
||||||
|
displays[displayIndex].firstPage();
|
||||||
|
|
||||||
|
displays[displayIndex].fillScreen(GxEPD_WHITE);
|
||||||
|
do
|
||||||
|
{
|
||||||
|
displays[displayIndex].setTextColor(GxEPD_BLACK);
|
||||||
|
displays[displayIndex].setCursor(0, 50);
|
||||||
|
displays[displayIndex].setFont(&FreeSansBold9pt7b);
|
||||||
|
displays[displayIndex].println("Welcome!");
|
||||||
|
} while (displays[displayIndex].nextPage());
|
||||||
|
|
||||||
|
for (int i = 1; i < displaySize; (i = i+2)) {
|
||||||
|
displays[i].setPartialWindow(0, 0, displays[i].width(), displays[i].height());
|
||||||
|
// displays[i].firstPage();
|
||||||
|
|
||||||
|
displays[i].fillScreen(GxEPD_WHITE);
|
||||||
|
displays[i].display(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < displaySize; i++) {
|
||||||
|
displays[i].hibernate();
|
||||||
|
}
|
||||||
|
}
|
50
src/tasks/epd.hpp
Normal file
50
src/tasks/epd.hpp
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef IS_BW
|
||||||
|
#include <GxEPD2_BW.h>
|
||||||
|
#else
|
||||||
|
#include <GxEPD2_3C.h>
|
||||||
|
#endif
|
||||||
|
#include <Fonts/FreeSansBold9pt7b.h>
|
||||||
|
#include <Fonts/FreeSans9pt7b.h>
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include "screens/blockheight.hpp"
|
||||||
|
#include "screens/ticker.hpp"
|
||||||
|
#include "screens/time.hpp"
|
||||||
|
#include "screens/sats_per_dollar.hpp"
|
||||||
|
#include "screens/countdown.hpp"
|
||||||
|
#include "screens/custom_text.hpp"
|
||||||
|
#include "screens/halvingcountdown.hpp"
|
||||||
|
|
||||||
|
#include "qrcodegen.h"
|
||||||
|
|
||||||
|
#include <freertos/FreeRTOS.h>
|
||||||
|
#include <freertos/task.h>
|
||||||
|
|
||||||
|
#include "fonts/fonts.hpp"
|
||||||
|
#include "lib/functions.hpp"
|
||||||
|
#include "tasks/led_handler.hpp"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint dispNum;
|
||||||
|
bool partial;
|
||||||
|
} UpdateEpdData;
|
||||||
|
|
||||||
|
void setupDisplays();
|
||||||
|
void initDisplays();
|
||||||
|
void taskEpd(void *pvParameters);
|
||||||
|
void resetAllDisplays();
|
||||||
|
void resetSingleDisplay(int i);
|
||||||
|
|
||||||
|
std::array<String, 7> getCurrentEpdContent();
|
||||||
|
|
||||||
|
void setEpdContent(std::array<String, 7> newEpdContent);
|
||||||
|
void splitText(uint dispNum, String top, String bottom, bool partial);
|
||||||
|
void showDigit(uint dispNum, char chr, bool partial, const GFXfont *font);
|
||||||
|
|
||||||
|
void refreshDisplay(void *pvParameters);
|
||||||
|
void fullRefresh(void *pvParameters);
|
||||||
|
void updateDisplay(void *pvParameters);
|
||||||
|
//void genQrCode(String text, uint8_t *qrcode[qrcodegen_BUFFER_LEN_MAX]);
|
||||||
|
void showSetupQr(String ssid, String password);
|
63
src/tasks/get_price.cpp
Normal file
63
src/tasks/get_price.cpp
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
#include "get_price.hpp"
|
||||||
|
|
||||||
|
const char *apiUrl = "https://api.coindesk.com/v1/bpi/currentprice/USD.json";
|
||||||
|
|
||||||
|
std::vector<EventCallbackWithNumber> priceEventCallbacks; // Define a vector to hold multiple event callbacks
|
||||||
|
TaskHandle_t getPriceTaskHandle;
|
||||||
|
|
||||||
|
#ifdef IS_3C
|
||||||
|
#define PRICE_WAIT_TIME 300000
|
||||||
|
#else
|
||||||
|
#define PRICE_WAIT_TIME 60000
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void taskGetPrice(void *pvParameters)
|
||||||
|
{
|
||||||
|
HTTPClient http;
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
// Send HTTP request to CoinDesk API
|
||||||
|
http.begin(apiUrl);
|
||||||
|
int httpCode = http.GET();
|
||||||
|
|
||||||
|
// Parse JSON response and extract average price
|
||||||
|
float price;
|
||||||
|
if (httpCode == 200)
|
||||||
|
{
|
||||||
|
String payload = http.getString();
|
||||||
|
//Serial.println(payload);
|
||||||
|
StaticJsonDocument<768> doc;
|
||||||
|
deserializeJson(doc, payload);
|
||||||
|
JsonObject bpi = doc["bpi"];
|
||||||
|
price = bpi["USD"]["rate_float"];
|
||||||
|
for(auto &callback : priceEventCallbacks) { // Loop through all the event callbacks and call them
|
||||||
|
callback(price);
|
||||||
|
}
|
||||||
|
|
||||||
|
preferences.putFloat("btcPrice", price);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Serial.print("Error retrieving BTC/USD price. HTTP status code: ");
|
||||||
|
Serial.println(httpCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Disconnect from Wi-Fi network and wait for 60 seconds
|
||||||
|
http.end();
|
||||||
|
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(PRICE_WAIT_TIME));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setupGetPriceTask()
|
||||||
|
{
|
||||||
|
if (getPriceTaskHandle == nullptr) {
|
||||||
|
xTaskCreate(taskGetPrice, "getPrice", 8192, NULL, 1, &getPriceTaskHandle);
|
||||||
|
vTaskSuspend(getPriceTaskHandle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void registerNewPriceCallback(EventCallbackWithNumber cb)
|
||||||
|
{
|
||||||
|
priceEventCallbacks.push_back(cb);
|
||||||
|
}
|
14
src/tasks/get_price.hpp
Normal file
14
src/tasks/get_price.hpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <HTTPClient.h>
|
||||||
|
#include <ArduinoJson.h>
|
||||||
|
#include <freertos/FreeRTOS.h>
|
||||||
|
#include <freertos/task.h>
|
||||||
|
#include "shared.hpp"
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
extern TaskHandle_t getPriceTaskHandle;
|
||||||
|
|
||||||
|
void taskGetPrice(void *pvParameters);
|
||||||
|
void setupGetPriceTask();
|
||||||
|
void registerNewPriceCallback(EventCallbackWithNumber cb);
|
82
src/tasks/ha.cpp
Normal file
82
src/tasks/ha.cpp
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
// #include "ha.hpp"
|
||||||
|
|
||||||
|
// WebSocketsClient webSocket;
|
||||||
|
|
||||||
|
// TaskHandle_t websocket_task_handle = NULL;
|
||||||
|
// const uint32_t WEBSOCKET_TASK_STACK_SIZE = 4096;
|
||||||
|
// const uint32_t WEBSOCKET_TASK_PRIORITY = 1;
|
||||||
|
|
||||||
|
// // WebSocket connection and subscription messages
|
||||||
|
// String auth_msg = String("{\"type\": \"auth\",\"access_token\": \"") + String(HA_AUTH_TOKEN) + String("\"}");
|
||||||
|
// String subscribe_msg = String("{\"id\": 1,\"type\": \"subscribe_events\",\"event_type\": \"state_changed\"}");
|
||||||
|
|
||||||
|
// void websocket_task(void *pvParameters)
|
||||||
|
// {
|
||||||
|
// // Connect to WiFi network
|
||||||
|
// // Connect to Home Assistant WebSocket API
|
||||||
|
// webSocket.begin(HA_SERVER, 8123, "/api/websocket");
|
||||||
|
// webSocket.setReconnectInterval(5000);
|
||||||
|
|
||||||
|
// // Authenticate and subscribe to entity state changes
|
||||||
|
// webSocket.onEvent([&](WStype_t type, uint8_t *payload, size_t length)
|
||||||
|
// {
|
||||||
|
// switch (type)
|
||||||
|
// {
|
||||||
|
// case WStype_DISCONNECTED:
|
||||||
|
// Serial.printf("[WebSocket] disconnected\n");
|
||||||
|
// break;
|
||||||
|
// case WStype_CONNECTED:
|
||||||
|
// Serial.printf("[WebSocket] connected, sending authentication message...\n");
|
||||||
|
// webSocket.sendTXT(auth_msg);
|
||||||
|
// break;
|
||||||
|
// case WStype_TEXT:
|
||||||
|
// if (strstr((char *)payload, "auth_ok") != NULL)
|
||||||
|
// {
|
||||||
|
// Serial.printf("[WebSocket] authentication successful, subscribing to entity state changes...\n");
|
||||||
|
// webSocket.sendTXT(subscribe_msg);
|
||||||
|
// }
|
||||||
|
// else if (strstr((char *)payload, "auth_invalid") != NULL)
|
||||||
|
// {
|
||||||
|
// Serial.printf("[WebSocket] authentication failed, disconnecting...\n");
|
||||||
|
// webSocket.disconnect();
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// StaticJsonDocument<1536> jsonDoc;
|
||||||
|
// DeserializationError err = deserializeJson(jsonDoc, (char *)payload);
|
||||||
|
|
||||||
|
// if (!err)
|
||||||
|
// {
|
||||||
|
// const char *event_type = jsonDoc["event"]["event_type"];
|
||||||
|
// const char *entity_id = jsonDoc["event"]["data"]["entity_id"];
|
||||||
|
|
||||||
|
// if (event_type && entity_id && strcmp(event_type, "state_changed") != 0)
|
||||||
|
// return;
|
||||||
|
|
||||||
|
// if (event_type && entity_id && strcmp(event_type, "state_changed") == 0 && strcmp(entity_id, HA_ENTITY_ID) == 0)
|
||||||
|
// {
|
||||||
|
// const char *new_state = jsonDoc["event"]["data"]["new_state"]["state"];
|
||||||
|
// if (new_state)
|
||||||
|
// {
|
||||||
|
// Serial.printf("[WebSocket] entity state changed: %s\n", new_state);
|
||||||
|
// /* Emit event for state change */
|
||||||
|
// // TODO: Add your custom event handling code here
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// Serial.printf("[WebSocket] error deserializing JSON: %s\n", err.c_str());
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// break;
|
||||||
|
// default:
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
|
||||||
|
// // Main event loop
|
||||||
|
// while (true)
|
||||||
|
// {
|
||||||
|
// webSocket.loop();
|
||||||
|
// vTaskDelay(pdMS_TO_TICKS(10));
|
||||||
|
// }
|
||||||
|
// }
|
14
src/tasks/ha.hpp
Normal file
14
src/tasks/ha.hpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
// #pragma once
|
||||||
|
|
||||||
|
// #include <ArduinoJson.h>
|
||||||
|
// #include <WebSocketsClient.h>
|
||||||
|
// #include "config.h"
|
||||||
|
// #include "shared.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
// void websocket_task(void *pvParameters);
|
||||||
|
|
||||||
|
// // // FreeRTOS task parameters
|
||||||
|
// extern TaskHandle_t websocket_task_handle;
|
||||||
|
// extern const uint32_t WEBSOCKET_TASK_STACK_SIZE;
|
||||||
|
// extern const uint32_t WEBSOCKET_TASK_PRIORITY;
|
33
src/tasks/led_handler.cpp
Normal file
33
src/tasks/led_handler.cpp
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
#include "led_handler.hpp"
|
||||||
|
|
||||||
|
#ifdef WITH_RGB_LED
|
||||||
|
TaskHandle_t ledHandlerTaskHandle = NULL;
|
||||||
|
|
||||||
|
void ledHandlerTask(void *parameter)
|
||||||
|
{
|
||||||
|
int dir = 5;
|
||||||
|
int bright = 0;
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
|
||||||
|
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
pixels.fill(pixels.Color(224, 67, 0));
|
||||||
|
pixels.show();
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(600));
|
||||||
|
pixels.fill(pixels.Color(8, 2, 0));
|
||||||
|
pixels.show();
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(400));
|
||||||
|
}
|
||||||
|
|
||||||
|
pixels.fill(pixels.Color(0,0,0));
|
||||||
|
pixels.show();
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(1000));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setupLedHandlerTask()
|
||||||
|
{
|
||||||
|
xTaskCreate(ledHandlerTask, "LedHandlerTask", 2048, NULL, 1, &ledHandlerTaskHandle); // Create the FreeRTOS task
|
||||||
|
}
|
||||||
|
#endif
|
14
src/tasks/led_handler.hpp
Normal file
14
src/tasks/led_handler.hpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#pragma once
|
||||||
|
#ifdef WITH_RGB_LED
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <Wire.h>
|
||||||
|
#include <freertos/FreeRTOS.h>
|
||||||
|
#include <freertos/task.h>
|
||||||
|
#include <vector>
|
||||||
|
#include "shared.hpp"
|
||||||
|
|
||||||
|
extern TaskHandle_t ledHandlerTaskHandle;
|
||||||
|
|
||||||
|
void ledHandlerTask(void *pvParameters);
|
||||||
|
void setupLedHandlerTask();
|
||||||
|
#endif
|
44
src/tasks/minute.cpp
Normal file
44
src/tasks/minute.cpp
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
#include "minute.hpp"
|
||||||
|
|
||||||
|
TaskHandle_t minuteTaskHandle = NULL;
|
||||||
|
// Define a type for the event callback
|
||||||
|
std::vector<EventCallback> minuteEventCallbacks; // Define a vector to hold multiple event callbacks
|
||||||
|
bool eventTriggered = false; // Initialize the event triggered flag to false
|
||||||
|
|
||||||
|
void minuteTask(void * parameter) {
|
||||||
|
while(1) {
|
||||||
|
#ifdef IS_3C // wait 5 minutes in case of a 3 color screen otherwise it keeps refreshing
|
||||||
|
if(rtc.getMinute() % 5 == 0 && !eventTriggered) {
|
||||||
|
eventTriggered = true;
|
||||||
|
for(auto &callback : minuteEventCallbacks) { // Loop through all the event callbacks and call them
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(rtc.getMinute() % 5 != 0 && eventTriggered) { // Reset the event triggered flag if the second is not 0
|
||||||
|
eventTriggered = false;
|
||||||
|
}
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(1000)); // Sleep for 1000 milliseconds to avoid busy waiting
|
||||||
|
#else
|
||||||
|
if(rtc.getSecond() == 0 && !eventTriggered) {
|
||||||
|
eventTriggered = true;
|
||||||
|
for(auto &callback : minuteEventCallbacks) { // Loop through all the event callbacks and call them
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(rtc.getSecond() != 0) { // Reset the event triggered flag if the second is not 0
|
||||||
|
eventTriggered = false;
|
||||||
|
}
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(500)); // Sleep for 500 milliseconds to avoid busy waiting
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setupMinuteEvent()
|
||||||
|
{
|
||||||
|
xTaskCreate(minuteTask, "MinuteTask", 2048, NULL, 1, &minuteTaskHandle); // Create the FreeRTOS task
|
||||||
|
}
|
||||||
|
|
||||||
|
void registerNewMinuteCallback(EventCallback cb)
|
||||||
|
{
|
||||||
|
minuteEventCallbacks.push_back(cb);
|
||||||
|
}
|
14
src/tasks/minute.hpp
Normal file
14
src/tasks/minute.hpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <Wire.h>
|
||||||
|
#include <freertos/FreeRTOS.h>
|
||||||
|
#include <freertos/task.h>
|
||||||
|
#include <vector>
|
||||||
|
#include "shared.hpp"
|
||||||
|
|
||||||
|
extern TaskHandle_t minuteTaskHandle;
|
||||||
|
|
||||||
|
void minuteTask(void *pvParameters);
|
||||||
|
void setupMinuteEvent();
|
||||||
|
void registerNewMinuteCallback(EventCallback cb);
|
30
src/tasks/mqtt.cpp
Normal file
30
src/tasks/mqtt.cpp
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
// #include "mqtt.hpp"
|
||||||
|
|
||||||
|
// // Define the event that will be emitted when the property is changed
|
||||||
|
// //EventHandle_t property_changed_event;
|
||||||
|
|
||||||
|
// // Define the MQTT client object
|
||||||
|
// AsyncMqttClient mqtt_client;
|
||||||
|
|
||||||
|
// // Define the FreeRTOS task that will handle the MQTT client
|
||||||
|
// void mqtt_task(void* pvParameters) {
|
||||||
|
// // Connect to the MQTT broker
|
||||||
|
// mqtt_client.setServer(MQTT_HOST, 1883);
|
||||||
|
// #ifdef MQTT_PASSWORD
|
||||||
|
// mqtt_client.setCredentials(MQTT_USERNAME, MQTT_PASSWORD);
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
// mqtt_client.connect();
|
||||||
|
|
||||||
|
// while (!mqtt_client.connected()) {
|
||||||
|
// delay(1000);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // Subscribe to the MQTT topic
|
||||||
|
// mqtt_client.subscribe(MQTT_TOPIC, 0);
|
||||||
|
|
||||||
|
// while (1) {
|
||||||
|
// // Check for incoming MQTT messages
|
||||||
|
// vTaskDelay(pdMS_TO_TICKS(100));
|
||||||
|
// }
|
||||||
|
// }
|
7
src/tasks/mqtt.hpp
Normal file
7
src/tasks/mqtt.hpp
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
// #include <AsyncMqttClient.h>
|
||||||
|
// #include <ArduinoJson.h>
|
||||||
|
// #include "config.h"
|
||||||
|
// #include "shared.hpp"
|
||||||
|
// #include "esp_event.h"
|
||||||
|
|
||||||
|
// void mqtt_task(void* pvParameters);
|
11
test/README
Normal file
11
test/README
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
This directory is intended for PlatformIO Test Runner and project tests.
|
||||||
|
|
||||||
|
Unit Testing is a software testing method by which individual units of
|
||||||
|
source code, sets of one or more MCU program modules together with associated
|
||||||
|
control data, usage procedures, and operating procedures, are tested to
|
||||||
|
determine whether they are fit for use. Unit testing finds problems early
|
||||||
|
in the development cycle.
|
||||||
|
|
||||||
|
More information about PlatformIO Unit Testing:
|
||||||
|
- https://docs.platformio.org/en/latest/advanced/unit-testing/index.html
|
Loading…
Reference in New Issue
Block a user