release
This commit is contained in:
484
lib/webserver/setup-ui/data/app.js
Normal file
484
lib/webserver/setup-ui/data/app.js
Normal file
@@ -0,0 +1,484 @@
|
||||
svgLogo = '<svg width=64px height=64px viewBox="0 0 28 28"><path d="M12.926 19.324a7.6 7.6 0 0 0-2.983-6.754 7.44 7.44 0 0 0-3.828-1.554.697.697 0 0 1-.606-.731.674.674 0 0 1 .743-.617 8.97 8.97 0 0 1 8 9.805 7.828 7.828 0 0 1-.298 1.542l1.989.56a11.039 11.039 0 0 0 1.714-.651 12.159 12.159 0 0 0 .217-2.343A12.57 12.57 0 0 0 7.212 6.171a5.53 5.53 0 0 0-2 0 4.354 4.354 0 0 0-2.16 1.337 4.274 4.274 0 0 0 1.909 6.856 9.896 9.896 0 0 0 1.074.195 4.011 4.011 0 0 1 3.337 3.954 3.965 3.965 0 0 1-.64 2.16l1.371.88a10.182 10.182 0 0 0 2.057.342 7.52 7.52 0 0 0 .754-2.628m.16 4.73A13.073 13.073 0 0 1 .001 10.983 12.982 12.982 0 0 1 3.83 1.737l.743.697a12.067 12.067 0 0 0 0 17.141 12.067 12.067 0 0 0 17.141 0l.697.697a12.97 12.97 0 0 1-9.336 3.726M24 10.993A10.993 10.993 0 0 0 12.949 0l-1.143.057-.252.732a18.912 18.912 0 0 1 11.588 11.576l.731-.263c0-.366.069-.732.069-1.143m-1.269 5.165A17.53 17.53 0 0 0 7.818 1.27a11.119 11.119 0 0 0-2.457 1.77v1.635A13.919 13.919 0 0 1 19.268 18.57h1.634a11.713 11.713 0 0 0 1.771-2.446M7.92 17.884a1.691 1.691 0 1 1-1.69-1.691 1.691 1.691 0 0 1 1.69 1.691" /></svg>';
|
||||
const svgMenu = '<path d="M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z"/>';
|
||||
const svgLock = '<svg height="16pt" viewBox="0 0 512 512"><path d="m336 512h-288c-26.453125 0-48-21.523438-48-48v-224c0-26.476562 21.546875-48 48-48h288c26.453125 0 48 21.523438 48 48v224c0 26.476562-21.546875 48-48 48zm-288-288c-8.8125 0-16 7.167969-16 16v224c0 8.832031 7.1875 16 16 16h288c8.8125 0 16-7.167969 16-16v-224c0-8.832031-7.1875-16-16-16zm0 0"/><path d="m304 224c-8.832031 0-16-7.167969-16-16v-80c0-52.929688-43.070312-96-96-96s-96 43.070312-96 96v80c0 8.832031-7.167969 16-16 16s-16-7.167969-16-16v-80c0-70.59375 57.40625-128 128-128s128 57.40625 128 128v80c0 8.832031-7.167969 16-16 16zm0 0"/></svg>';
|
||||
const svgUnlock = '<svg height="16pt" viewBox="0 0 512 512"><path d="m336 512h-288c-26.453125 0-48-21.523438-48-48v-224c0-26.476562 21.546875-48 48-48h288c26.453125 0 48 21.523438 48 48v224c0 26.476562-21.546875 48-48 48zm-288-288c-8.8125 0-16 7.167969-16 16v224c0 8.832031 7.1875 16 16 16h288c8.8125 0 16-7.167969 16-16v-224c0-8.832031-7.1875-16-16-16zm0 0"/><path d="m80 224c-8.832031 0-16-7.167969-16-16v-80c0-70.59375 57.40625-128 128-128s128 57.40625 128 128c0 8.832031-7.167969 16-16 16s-16-7.167969-16-16c0-52.929688-43.070312-96-96-96s-96 43.070312-96 96v80c0 8.832031-7.167969 16-16 16zm0 0"/></svg>';
|
||||
const svgScan = '<path d="M12 12C9.97 12 8.1 12.67 6.6 13.8L4.8 11.4C6.81 9.89 9.3 9 12 9S17.19 9.89 19.2 11.4L18.74 12C18.66 12 18.58 12 18.5 12C17.43 12 16.42 12.26 15.53 12.72C14.45 12.26 13.26 12 12 12M21 9L22.8 6.6C19.79 4.34 16.05 3 12 3S4.21 4.34 1.2 6.6L3 9C5.5 7.12 8.62 6 12 6S18.5 7.12 21 9M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L12.34 20.54C12.13 19.9 12 19.22 12 18.5C12 17.24 12.36 16.08 13 15.08C12.66 15.03 12.33 15 12 15M18 14.5C15.79 14.5 14 16.29 14 18.5S15.79 22.5 18 22.5C19.68 22.5 21.12 21.47 21.71 20H20C19.54 20.61 18.82 21 18 21C16.62 21 15.5 19.88 15.5 18.5S16.62 16 18 16C18.69 16 19.32 16.28 19.77 16.73L18 18.5H22V14.5L20.83 15.67C20.11 14.95 19.11 14.5 18 14.5Z" />';
|
||||
const svgConnect = '<path d="M12 6C8.62 6 5.5 7.12 3 9L1.2 6.6C4.21 4.34 7.95 3 12 3S19.79 4.34 22.8 6.6L21 9C18.5 7.12 15.38 6 12 6M16.84 13.41C17.18 13.27 17.55 13.17 17.92 13.1L19.2 11.4C17.19 9.89 14.7 9 12 9S6.81 9.89 4.8 11.4L6.6 13.8C8.1 12.67 9.97 12 12 12C13.78 12 15.44 12.5 16.84 13.41M12 15C10.65 15 9.4 15.45 8.4 16.2L12 21L13.04 19.61C13 19.41 13 19.21 13 19C13 17.66 13.44 16.43 14.19 15.43C13.5 15.16 12.77 15 12 15M23 19L20 16V18H16V20H20V22L23 19Z" />';
|
||||
const svgSave = '<path d="M15,9H5V5H15M12,19A3,3 0 0,1 9,16A3,3 0 0,1 12,13A3,3 0 0,1 15,16A3,3 0 0,1 12,19M17,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V7L17,3Z" />';
|
||||
const svgRestart = '<path d="M12,4C14.1,4 16.1,4.8 17.6,6.3C20.7,9.4 20.7,14.5 17.6,17.6C15.8,19.5 13.3,20.2 10.9,19.9L11.4,17.9C13.1,18.1 14.9,17.5 16.2,16.2C18.5,13.9 18.5,10.1 16.2,7.7C15.1,6.6 13.5,6 12,6V10.6L7,5.6L12,0.6V4M6.3,17.6C3.7,15 3.3,11 5.1,7.9L6.6,9.4C5.5,11.6 5.9,14.4 7.8,16.2C8.3,16.7 8.9,17.1 9.6,17.4L9,19.4C8,19 7.1,18.4 6.3,17.6Z" />';
|
||||
const svgEye = '<path d="M12 6.5c2.76 0 5 2.24 5 5 0 .51-.1 1-.24 1.46l3.06 3.06c1.39-1.23 2.49-2.77 3.18-4.53C21.27 7.11 17 4 12 4c-1.27 0-2.49.2-3.64.57l2.17 2.17c.47-.14.96-.24 1.47-.24zM2.71 3.16c-.39.39-.39 1.02 0 1.41l1.97 1.97C3.06 7.83 1.77 9.53 1 11.5 2.73 15.89 7 19 12 19c1.52 0 2.97-.3 4.31-.82l2.72 2.72c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L4.13 3.16c-.39-.39-1.03-.39-1.42 0zM12 16.5c-2.76 0-5-2.24-5-5 0-.77.18-1.5.49-2.14l1.57 1.57c-.03.18-.06.37-.06.57 0 1.66 1.34 3 3 3 .2 0 .38-.03.57-.07L14.14 16c-.65.32-1.37.5-2.14.5zm2.97-5.33c-.15-1.4-1.25-2.49-2.64-2.64l2.64 2.64z" />';
|
||||
const svgNoEye = '<path d="M0 0h24v24H0V0z" fill="none"/><path d="M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"/>';
|
||||
const svgCloseModal = '<path fill-rule="evenodd" clip-rule="evenodd" d="M13.7071 1.70711C14.0976 1.31658 14.0976 0.683417 13.7071 0.292893C13.3166 -0.0976311 12.6834 -0.0976311 12.2929 0.292893L7 5.58579L1.70711 0.292893C1.31658 -0.0976311 0.683417 -0.0976311 0.292893 0.292893C-0.0976311 0.683417 -0.0976311 1.31658 0.292893 1.70711L5.58579 7L0.292893 12.2929C-0.0976311 12.6834 -0.0976311 13.3166 0.292893 13.7071C0.683417 14.0976 1.31658 14.0976 1.70711 13.7071L7 8.41421L12.2929 13.7071C12.6834 14.0976 13.3166 14.0976 13.7071 13.7071C14.0976 13.3166 14.0976 12.6834 13.7071 12.2929L8.41421 7L13.7071 1.70711Z" fill="black" />';
|
||||
|
||||
var options = {};
|
||||
|
||||
// Simple JQuery-like selector
|
||||
var $ = function (el) {
|
||||
return document.getElementById(el);
|
||||
};
|
||||
|
||||
|
||||
function showHidePassword() {
|
||||
var inp = $("password");
|
||||
openModalMessage('Restart!', '<br>ESP restarted. Please wait a little and then reload this page.<br>');
|
||||
if (inp.type === "password") {
|
||||
inp.type = "text";
|
||||
$('show-pass').classList.remove("w--current");
|
||||
$('hide-pass').classList.add("w--current");
|
||||
}
|
||||
else {
|
||||
inp.type = "password";
|
||||
$('show-pass').classList.add("w--current");
|
||||
$('hide-pass').classList.remove("w--current");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Read some data from database
|
||||
*/
|
||||
function getWiFiList() {
|
||||
$('loader').classList.remove('hide');
|
||||
var url = new URL("http://" + `${window.location.hostname}` + "/scan");
|
||||
fetch(url)
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
listWifiNetworks(data);
|
||||
$('loader').classList.add('hide');
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function selectWifi(row) {
|
||||
try {
|
||||
$('select-' + row.target.parentNode.id).checked = true;
|
||||
}
|
||||
catch (err) {
|
||||
$(row.target.id).checked = true;
|
||||
}
|
||||
$('ssid').value = this.cells[1].innerHTML;
|
||||
$('ssid-name').innerHTML = this.cells[1].innerHTML;
|
||||
$('password').focus();
|
||||
}
|
||||
|
||||
|
||||
function listWifiNetworks(elems) {
|
||||
const list = document.querySelector('#wifi-list');
|
||||
list.innerHTML = "";
|
||||
elems.forEach((elem, idx) => {
|
||||
|
||||
// Create a single row with all columns
|
||||
var row = document.createElement('tr');
|
||||
var id = 'wifi-' + idx;
|
||||
row.id = id;
|
||||
row.addEventListener('click', selectWifi);
|
||||
row.innerHTML = `<td><input type="radio" name="select" id="select-${id}"></td>`;
|
||||
row.innerHTML += `<td id="ssid-${id}">${elem.ssid}</td>`;
|
||||
row.innerHTML += '<td class="hide-tiny">' + elem.strength + ' dBm</td>';
|
||||
if (elem.security)
|
||||
row.innerHTML += '<td>' + svgLock + '</td>';
|
||||
else
|
||||
row.innerHTML += '<td>' + svgUnlock + '</td>';
|
||||
|
||||
// Add row to list
|
||||
list.appendChild(row);
|
||||
});
|
||||
|
||||
$("wifi-table").classList.remove("hide");
|
||||
}
|
||||
|
||||
|
||||
function getParameters() {
|
||||
$('loader').classList.remove('hide');
|
||||
var url = new URL("http://" + `${window.location.hostname}` + "/config.json");
|
||||
fetch(url)
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
Object.keys(data).forEach(function (key) {
|
||||
if (key.startsWith('logo-name')) {
|
||||
$('name-logo').innerHTML = data[key];
|
||||
delete data[key];
|
||||
}
|
||||
if (key.startsWith('logo-svg')) {
|
||||
$('svg-logo').innerHTML = data[key];
|
||||
delete data[key];
|
||||
}
|
||||
$('loader').classList.add('hide');
|
||||
});
|
||||
|
||||
options = data;
|
||||
listParameters(options);
|
||||
|
||||
// Read logo from file if present, otherwise use inline svg;
|
||||
if (options['logo-file-hidden']) {
|
||||
svgLogo = '';
|
||||
$('svg-logo').innerHTML = '<img class=logo src="' + options['logo-file-hidden'] + '"/>';
|
||||
$('svg-logo').setAttribute('title', '');
|
||||
$('logo-file').setAttribute('type', 'number');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function createNewBox(cont, lbl) {
|
||||
var el = document.createElement('div');
|
||||
el.setAttribute('id', 'option-box' + cont);
|
||||
el.classList.add('ctn', 'opt-box', 'hide');
|
||||
|
||||
var h = document.createElement('h2');
|
||||
h.classList.add('heading-2');
|
||||
h.innerHTML = lbl;
|
||||
el.appendChild(h);
|
||||
|
||||
var form = document.createElement('form');
|
||||
form.classList.add('form');
|
||||
|
||||
el.appendChild(form);
|
||||
$('main-box').appendChild(el);
|
||||
|
||||
// Add new voice in menu and relatvie listener
|
||||
var lnk = document.createElement('a');
|
||||
lnk.setAttribute('id', 'set-opt' + cont);
|
||||
lnk.setAttribute('data-box', 'option-box' + cont);
|
||||
lnk.classList.add('a-link');
|
||||
lnk.innerHTML = lbl;
|
||||
lnk.addEventListener('click', switchPage);
|
||||
|
||||
$('nav-link').appendChild(lnk);
|
||||
return form;
|
||||
}
|
||||
|
||||
function listParameters(params) {
|
||||
var el, pBox;
|
||||
if (!Object.keys(params)[0].startsWith('param-box')) {
|
||||
params = { 'param-box1': 'Options', ...params };
|
||||
options = params;
|
||||
}
|
||||
|
||||
Object.entries(params).forEach(([key, value], i) => {
|
||||
|
||||
if (key.startsWith('name-logo')) {
|
||||
$('name-logo').innerHTML = value;
|
||||
return;
|
||||
}
|
||||
|
||||
else if (key.startsWith('logo-file')) {
|
||||
return;
|
||||
}
|
||||
|
||||
else if (key.startsWith('param-box')) {
|
||||
pBox = createNewBox(i, value);
|
||||
return;
|
||||
}
|
||||
|
||||
else if (key.startsWith('raw-css')) {
|
||||
var css = document.createElement("style");
|
||||
css.innerHTML = value.trim();
|
||||
document.body.appendChild(css);
|
||||
return;
|
||||
}
|
||||
|
||||
else if (key.startsWith('raw-javascript')) {
|
||||
var js = document.createElement("script");
|
||||
js.innerHTML = value.trim();
|
||||
document.body.appendChild(js);
|
||||
return;
|
||||
}
|
||||
|
||||
else if (key.startsWith('raw-html')) {
|
||||
html = value.trim();
|
||||
el = document.createElement('div');
|
||||
el.setAttribute('id', 'row' + i)
|
||||
el.style.width = '100%';
|
||||
el.innerHTML = html;
|
||||
pBox.appendChild(el);
|
||||
}
|
||||
else {
|
||||
let val = value;
|
||||
let lbl = document.createElement('label');
|
||||
el = document.createElement('input');
|
||||
el.setAttribute('id', key);
|
||||
el.setAttribute('type', 'text');
|
||||
|
||||
// Set input property (id, type and value). Check first if is boolean
|
||||
if (typeof (val) === "boolean") {
|
||||
el.setAttribute('type', 'checkbox');
|
||||
el.classList.add('t-check', 'opt-input');
|
||||
el.checked = val;
|
||||
lbl.classList.add('input-label', 'toggle');
|
||||
let dv = document.createElement('div');
|
||||
dv.classList.add('toggle-switch');
|
||||
let sp = document.createElement('span');
|
||||
sp.classList.add('toggle-label');
|
||||
sp.textContent = key;
|
||||
lbl.appendChild(el);
|
||||
lbl.appendChild(dv);
|
||||
lbl.appendChild(sp);
|
||||
pBox.appendChild(lbl);
|
||||
addInputListener(el);
|
||||
}
|
||||
else {
|
||||
el.value = val;
|
||||
el.classList.add('opt-input');
|
||||
lbl.setAttribute('label-for', key);
|
||||
lbl.classList.add('input-label');
|
||||
lbl.textContent = key;
|
||||
if (typeof (val) === "number")
|
||||
el.setAttribute('type', 'number');
|
||||
|
||||
if (typeof (val) === "object") {
|
||||
// This is a select/option
|
||||
if (val.values) {
|
||||
el = document.createElement('select');
|
||||
el.setAttribute('id', key);
|
||||
val.values.forEach((a) => {
|
||||
var opt = document.createElement('option');
|
||||
opt.textContent = a;
|
||||
opt.value = a;
|
||||
el.appendChild(opt);
|
||||
})
|
||||
el.value = val.selected;
|
||||
pBox.appendChild(el);
|
||||
}
|
||||
|
||||
// This is a float value
|
||||
else {
|
||||
var num = Math.round(val.value * (1 / val.step)) / (1 / val.step);
|
||||
el.setAttribute('type', 'number');
|
||||
el.setAttribute('step', val.step);
|
||||
el.setAttribute('min', val.min);
|
||||
el.setAttribute('max', val.max);
|
||||
el.value = Number(num).toFixed(3);
|
||||
}
|
||||
}
|
||||
addInputListener(el);
|
||||
var d = document.createElement('div');
|
||||
d.classList.add('tf-wrapper');
|
||||
d.appendChild(lbl);
|
||||
d.appendChild(el);
|
||||
pBox.appendChild(d);
|
||||
}
|
||||
}
|
||||
|
||||
if (key.endsWith('-hidden')) {
|
||||
el.classList.add('hide');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function addInputListener(item) {
|
||||
// Add event listener to option inputs
|
||||
|
||||
if (item.type === "number") {
|
||||
item.addEventListener('change', () => {
|
||||
if (item.getAttribute("step")) {
|
||||
var obj = {};
|
||||
obj.value = Math.round(item.value * (1 / item.step)) / (1 / item.step);
|
||||
obj.step = item.getAttribute("step");
|
||||
obj.min = item.getAttribute("min");
|
||||
obj.max = item.getAttribute("max");
|
||||
options[item.id] = obj;
|
||||
}
|
||||
else
|
||||
options[item.id] = parseInt(item.value);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (item.type === "text") {
|
||||
item.addEventListener('change', () => {
|
||||
options[item.id] = item.value;
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (item.type === "checkbox") {
|
||||
item.addEventListener('change', () => {
|
||||
options[item.id] = item.checked;
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (item.type === 'select-one') {
|
||||
item.addEventListener('change', (e) => {
|
||||
options[e.target.id].selected = e.target.value;
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function saveParameters() {
|
||||
var myblob = new Blob([JSON.stringify(options, null, 2)], {
|
||||
type: 'application/json'
|
||||
});
|
||||
var formData = new FormData();
|
||||
formData.append("data", myblob, '/config.json');
|
||||
|
||||
// POST data using the Fetch API
|
||||
fetch('/edit', {
|
||||
method: 'POST',
|
||||
body: formData
|
||||
})
|
||||
// Handle the server response
|
||||
.then(response => response.text())
|
||||
.then(text => {
|
||||
openModalMessage('Save options', 'Settings saved successfully on flash memory!<br><br>');
|
||||
});
|
||||
|
||||
fetch('/save')
|
||||
.then(response => response.text())
|
||||
.then(text => {
|
||||
|
||||
})
|
||||
.catch(error => {
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function doConnection() {
|
||||
var formdata = new FormData();
|
||||
formdata.append("ssid", $('ssid').value);
|
||||
formdata.append("password", $('password').value);
|
||||
formdata.append("persistent", $('persistent').checked);
|
||||
var requestOptions = {
|
||||
method: 'POST',
|
||||
body: formdata,
|
||||
redirect: 'follow'
|
||||
};
|
||||
|
||||
$('loader').classList.remove('hide');
|
||||
fetch('/connect', requestOptions)
|
||||
.then(function (response) {
|
||||
httpCode = response.status;
|
||||
return response.text();
|
||||
})
|
||||
.then(function (text) {
|
||||
if (httpCode === 200) {
|
||||
openModalMessage('Connected', 'AWTRTIX will restart now <br> Your new IP is ' + text);
|
||||
}
|
||||
else {
|
||||
openModalMessage('Error!', '<br>Error on connection: <b>' + text + '</b><br><br>');
|
||||
}
|
||||
$('loader').classList.add('hide');
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function switchPage(el) {
|
||||
$('top-nav').classList.remove('responsive');
|
||||
|
||||
// Menu items
|
||||
document.querySelectorAll("a").forEach(item => {
|
||||
item.classList.remove('active');
|
||||
});
|
||||
el.target.classList.add('active');
|
||||
|
||||
// Box items
|
||||
document.querySelectorAll(".opt-box").forEach(e => {
|
||||
e.classList.add('hide');
|
||||
});
|
||||
$(el.target.getAttribute("data-box")).classList.remove('hide');
|
||||
|
||||
if (el.target.id != 'set-wifi') {
|
||||
var fragment = document.createDocumentFragment();
|
||||
fragment.appendChild($('btn-box'));
|
||||
$(el.target.getAttribute("data-box")).appendChild(fragment);
|
||||
$('btn-box').classList.remove('hide');
|
||||
}
|
||||
else
|
||||
$('btn-box').classList.add('hide');
|
||||
}
|
||||
|
||||
|
||||
function showMenu() {
|
||||
$('top-nav').classList.add('responsive');
|
||||
}
|
||||
|
||||
var closeCallback = function () { ; };
|
||||
|
||||
function openModalMessage(title, msg, fn) {
|
||||
$('message-title').innerHTML = title;
|
||||
$('message-body').innerHTML = msg;
|
||||
$('modal-message').open = true;
|
||||
$('main-box').style.filter = "blur(3px)";
|
||||
if (typeof fn != 'undefined') {
|
||||
closeCallback = fn;
|
||||
$('ok-modal').classList.remove('hide');
|
||||
}
|
||||
else
|
||||
$('ok-modal').classList.add('hide');
|
||||
}
|
||||
|
||||
function closeModalMessage(do_cb) {
|
||||
$('modal-message').open = false;
|
||||
$('main-box').style.filter = "";
|
||||
if (typeof closeCallback != 'undefined' && do_cb)
|
||||
closeCallback();
|
||||
}
|
||||
|
||||
|
||||
function restartESP() {
|
||||
var url = new URL("http://" + `${window.location.hostname}` + "/restart");
|
||||
fetch(url)
|
||||
.then(response => response.text())
|
||||
.then(data => {
|
||||
closeModalMessage();
|
||||
openModalMessage('Restart!', '<br>ESP restarted. Please wait a little and then reload this page.<br>');
|
||||
});
|
||||
}
|
||||
|
||||
function uploadLogo() {
|
||||
var file = $('logo-file').files[0];
|
||||
var reader = new FileReader();
|
||||
|
||||
reader.onload = async () => {
|
||||
const formData = new FormData();
|
||||
formData.append('image', file);
|
||||
try {
|
||||
const response = await fetch('/edit', {
|
||||
method: 'POST',
|
||||
body: formData,
|
||||
});
|
||||
options = { ...options, 'logo-file-hidden': file.name };
|
||||
saveParameters();
|
||||
}
|
||||
catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
};
|
||||
reader.readAsDataURL(file);
|
||||
}
|
||||
|
||||
// Initializes the app.
|
||||
$('svg-menu').innerHTML = svgMenu;
|
||||
$('svg-eye').innerHTML = svgEye;
|
||||
$('svg-no-eye').innerHTML = svgNoEye;
|
||||
$('svg-scan').innerHTML = svgScan;
|
||||
$('svg-connect').innerHTML = svgConnect;
|
||||
$('svg-save').innerHTML = svgSave;
|
||||
$('svg-restart').innerHTML = svgRestart;
|
||||
$('close-modal').innerHTML = svgCloseModal;
|
||||
$('svg-logo').innerHTML = svgLogo;
|
||||
$('svg-logo').setAttribute('title', 'Click to upload your logo file');
|
||||
|
||||
$('hum-btn').addEventListener('click', showMenu);
|
||||
$('scan-wifi').addEventListener('click', getWiFiList);
|
||||
$('connect-wifi').addEventListener('click', doConnection);
|
||||
$('save-params').addEventListener('click', saveParameters);
|
||||
$('show-hide-password').addEventListener('click', showHidePassword);
|
||||
$('set-wifi').addEventListener('click', switchPage);
|
||||
// $('set-opt1').addEventListener('click', switchPage);
|
||||
$('about').addEventListener('click', switchPage);
|
||||
$('restart').addEventListener('click', restartESP);
|
||||
|
||||
window.addEventListener('load', getParameters);
|
||||
|
||||
// Enable wifi-connect btn only if password inserted
|
||||
$('connect-wifi').disabled = true;
|
||||
$('password').addEventListener('input', (event) => {
|
||||
if ($('password').value.length === 0)
|
||||
$('connect-wifi').disabled = true;
|
||||
else
|
||||
$('connect-wifi').disabled = false;
|
||||
});
|
||||
131
lib/webserver/setup-ui/data/build/min/all.htm
Normal file
131
lib/webserver/setup-ui/data/build/min/all.htm
Normal file
File diff suppressed because one or more lines are too long
BIN
lib/webserver/setup-ui/data/build/min/all.htm.gz
Normal file
BIN
lib/webserver/setup-ui/data/build/min/all.htm.gz
Normal file
Binary file not shown.
1
lib/webserver/setup-ui/data/build/min/app.js
Normal file
1
lib/webserver/setup-ui/data/build/min/app.js
Normal file
File diff suppressed because one or more lines are too long
1
lib/webserver/setup-ui/data/build/min/style.css
Normal file
1
lib/webserver/setup-ui/data/build/min/style.css
Normal file
File diff suppressed because one or more lines are too long
71
lib/webserver/setup-ui/data/build/minify.js
Normal file
71
lib/webserver/setup-ui/data/build/minify.js
Normal file
@@ -0,0 +1,71 @@
|
||||
// Finalize Nodejs Script
|
||||
// 1 - Append JS in HTML Document
|
||||
// 2 - Gzip HTML
|
||||
// 3 - Covert to Raw Bytes
|
||||
// 4 - ( Save to File: webpage.h ) in dist Folder
|
||||
|
||||
const fs = require('fs');
|
||||
const minify = require('@node-minify/core');
|
||||
const terser = require('@node-minify/terser');
|
||||
const cssnano = require('@node-minify/cssnano');
|
||||
// const csso = require('@node-minify/csso');
|
||||
// const uglifyjs = require('@node-minify/uglify-js');
|
||||
// const gcc = require('@node-minify/google-closure-compiler');
|
||||
// const htmlMinifier = require('@node-minify/html-minifier');
|
||||
|
||||
const converter = require('./stringConverter');
|
||||
|
||||
minify({
|
||||
compressor: terser,
|
||||
input: '../app.js',
|
||||
output: './min/app.js',
|
||||
sync: true,
|
||||
callback: function (err, min) { if (err) console.log(err); }
|
||||
});
|
||||
|
||||
minify({
|
||||
compressor: cssnano,
|
||||
input: '../style.css',
|
||||
output: './min/style.css',
|
||||
sync: true,
|
||||
callback: function (err, min) { if (err) console.log(err); }
|
||||
});
|
||||
|
||||
|
||||
let html = fs.readFileSync('../setup.htm').toString();
|
||||
let css = fs.readFileSync('./min/style.css');
|
||||
let appjs = fs.readFileSync('./min/app.js');
|
||||
console.log(css.length);
|
||||
console.log(appjs.length);
|
||||
|
||||
html = html.replace('<link href=style.css rel=stylesheet type=text/css />', `<style>${css}</style>`);
|
||||
html = html.replace('<script src=app.js></script>', `<script>${appjs}</script>`);
|
||||
|
||||
// minify({
|
||||
// compressor: htmlMinifier,
|
||||
// content: html
|
||||
// }).then(function (min) {
|
||||
// console.log('html min');
|
||||
// });
|
||||
|
||||
fs.writeFile('./min/all.htm', html, function (err) {
|
||||
if (err) return console.log(err);
|
||||
});
|
||||
|
||||
const { createGzip } = require('node:zlib');
|
||||
const { pipeline } = require('node:stream');
|
||||
const { createReadStream, createWriteStream } = require('node:fs');
|
||||
|
||||
const gzip = createGzip();
|
||||
const source = createReadStream('./min/all.htm');
|
||||
var destination = createWriteStream('./min/all.htm.gz');
|
||||
|
||||
pipeline(source, gzip, destination, (err) => {
|
||||
if (err) {
|
||||
console.error('An error occurred:', err);
|
||||
process.exitCode = 1;
|
||||
}
|
||||
|
||||
var c_array = converter.toString(fs.readFileSync('./min/all.htm.gz'), 16);
|
||||
fs.writeFileSync('setup_htm.h', c_array, 'utf8');
|
||||
})
|
||||
1524
lib/webserver/setup-ui/data/build/package-lock.json
generated
Normal file
1524
lib/webserver/setup-ui/data/build/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
19
lib/webserver/setup-ui/data/build/package.json
Normal file
19
lib/webserver/setup-ui/data/build/package.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"@gfx/zopfli": "^1.0.15",
|
||||
"@node-minify/core": "^7.1.0",
|
||||
"@node-minify/cssnano": "^7.1.0",
|
||||
"@node-minify/csso": "^7.1.0",
|
||||
"@node-minify/html-minifier": "^7.1.0",
|
||||
"@node-minify/terser": "^7.1.0"
|
||||
},
|
||||
"name": "build",
|
||||
"description": "If you want customize **/setup** webpage (headers, logo etc etc): * edit the source files as your needs (setup.htm, app.js, style.css) * open a terminal in *build* folder and run `npm i` to install all nodejs modules needed * run `node finalize.js` * overwrite the content of *setup_htm.h* in src folder",
|
||||
"version": "1.0.0",
|
||||
"main": "minify.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC"
|
||||
}
|
||||
5
lib/webserver/setup-ui/data/build/readme.md
Normal file
5
lib/webserver/setup-ui/data/build/readme.md
Normal file
@@ -0,0 +1,5 @@
|
||||
If you want customize **/setup** webpage (headers, logo etc etc):
|
||||
* edit the source files as your needs (setup.htm, app.js, style.css)
|
||||
* open a terminal in *build* folder and run `npm i` to install all nodejs modules needed
|
||||
* run `node minimize.js`
|
||||
* overwrite the content of *setup_htm.h* in src folder with the new generated file
|
||||
526
lib/webserver/setup-ui/data/build/setup_htm.h
Normal file
526
lib/webserver/setup-ui/data/build/setup_htm.h
Normal file
@@ -0,0 +1,526 @@
|
||||
#define SETUP_HTML_SIZE 8365
|
||||
const char SETUP_HTML[] PROGMEM = {
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xed, 0x7d, 0xe9, 0x77, 0xdb, 0x46,
|
||||
0x96, 0xef, 0xf7, 0x39, 0xa7, 0xff, 0x07, 0x84, 0x59, 0x2c, 0x8e, 0x01, 0x08, 0x0b, 0x09, 0x70,
|
||||
0x31, 0x95, 0x76, 0x2b, 0xce, 0x71, 0xde, 0x93, 0x13, 0x9f, 0x76, 0xda, 0x3d, 0xd3, 0x39, 0x3e,
|
||||
0xd3, 0x10, 0x59, 0x14, 0xd1, 0x06, 0x09, 0x0e, 0x00, 0x49, 0x96, 0xd9, 0xfc, 0xdf, 0xdf, 0xef,
|
||||
0xde, 0xaa, 0xc2, 0x46, 0x90, 0x52, 0x7a, 0x92, 0xf7, 0x69, 0x62, 0x1b, 0x4b, 0x2d, 0xb7, 0xee,
|
||||
0x7e, 0x6f, 0x2d, 0x60, 0x5e, 0x7c, 0xf1, 0xdd, 0x4f, 0x97, 0x3f, 0xff, 0xe7, 0xdb, 0x57, 0xc6,
|
||||
0xaa, 0x58, 0x27, 0x17, 0x7f, 0xf8, 0xb7, 0x17, 0xea, 0x4e, 0x4f, 0x22, 0x5a, 0xe0, 0xc9, 0xc0,
|
||||
0x7f, 0x2f, 0xd6, 0xa2, 0x88, 0x8c, 0xf9, 0x2a, 0xca, 0x72, 0x51, 0xcc, 0x6e, 0x8b, 0xa5, 0x35,
|
||||
0x32, 0xce, 0x75, 0x5d, 0x11, 0x17, 0x89, 0xb8, 0x78, 0xf9, 0xd7, 0x9f, 0xff, 0xfc, 0xc3, 0x7f,
|
||||
0x18, 0x57, 0xf1, 0xcd, 0xaa, 0x78, 0x71, 0x2e, 0xcb, 0x1a, 0x9d, 0xd3, 0x4d, 0x21, 0x36, 0xc5,
|
||||
0xac, 0x77, 0x1f, 0x2f, 0x8a, 0xd5, 0x6c, 0x21, 0xee, 0xe2, 0xb9, 0xb0, 0xf8, 0xc5, 0x34, 0xe2,
|
||||
0x4d, 0x5c, 0xc4, 0x51, 0x62, 0xe5, 0xf3, 0x28, 0x11, 0x33, 0xb7, 0x67, 0x6c, 0xa2, 0xb5, 0x98,
|
||||
0xdd, 0xc5, 0xe2, 0x7e, 0x9b, 0x66, 0x45, 0x35, 0x54, 0x5e, 0x3c, 0x00, 0xac, 0x1d, 0x6f, 0xb6,
|
||||
0xc0, 0x21, 0x4e, 0xc4, 0x6e, 0x25, 0x68, 0xbc, 0x89, 0xeb, 0x6c, 0x3f, 0x4d, 0xd3, 0x6d, 0x34,
|
||||
0x8f, 0x8b, 0x87, 0x89, 0x33, 0x4d, 0xef, 0x44, 0xb6, 0x4c, 0xd2, 0xfb, 0xc9, 0x2a, 0x5e, 0x2c,
|
||||
0xc4, 0x66, 0xba, 0x4d, 0x73, 0xc0, 0x4f, 0x37, 0x93, 0xe8, 0x3a, 0x4f, 0x93, 0xdb, 0x42, 0x4c,
|
||||
0x79, 0x5c, 0xd9, 0xed, 0xb3, 0x15, 0x6f, 0x16, 0xe2, 0xd3, 0xc4, 0x72, 0xf7, 0x76, 0x92, 0x46,
|
||||
0x0b, 0x91, 0x99, 0xea, 0x3e, 0x89, 0x96, 0x45, 0xed, 0xed, 0x5a, 0x2c, 0xd3, 0x4c, 0xec, 0xac,
|
||||
0x7b, 0x71, 0xfd, 0x31, 0x2e, 0xac, 0x68, 0x13, 0xaf, 0x23, 0x82, 0x6a, 0x01, 0x93, 0xc4, 0x5a,
|
||||
0xa7, 0x0b, 0x31, 0xb9, 0x4e, 0x8b, 0xd5, 0xf4, 0x68, 0xc5, 0x41, 0xcf, 0x09, 0x41, 0x0e, 0x0d,
|
||||
0xd7, 0x1e, 0xe5, 0x86, 0x88, 0x72, 0x01, 0x4c, 0xac, 0xf4, 0xb6, 0x00, 0x3b, 0x96, 0xc4, 0x11,
|
||||
0x31, 0x7d, 0x7a, 0xcb, 0xeb, 0x34, 0x03, 0x8e, 0x56, 0x16, 0x2d, 0xe2, 0xdb, 0x7c, 0x32, 0x74,
|
||||
0xbe, 0x9e, 0x2a, 0xd6, 0x78, 0x62, 0xad, 0xa8, 0xc5, 0x93, 0xa6, 0xb0, 0x83, 0x88, 0x85, 0x48,
|
||||
0xa2, 0x87, 0x89, 0x65, 0xbb, 0x41, 0x3e, 0xed, 0x2e, 0x9d, 0xa7, 0x49, 0x9a, 0x4d, 0xbe, 0xf4,
|
||||
0x7d, 0x7f, 0xba, 0x84, 0x30, 0xad, 0x3c, 0xfe, 0x2c, 0x24, 0x0b, 0xd7, 0x51, 0x76, 0x03, 0x84,
|
||||
0x12, 0xb1, 0x2c, 0x26, 0xd1, 0x6d, 0x91, 0xea, 0x82, 0x8c, 0x31, 0xe0, 0x92, 0x52, 0x04, 0x19,
|
||||
0x20, 0x16, 0xf1, 0x9d, 0x98, 0x16, 0xe2, 0x53, 0xc1, 0xac, 0xdf, 0x14, 0x13, 0x6b, 0x8c, 0xff,
|
||||
0x80, 0xa8, 0x46, 0xab, 0xc8, 0xa2, 0x4d, 0x0e, 0x6e, 0xaf, 0x27, 0xfc, 0x84, 0x1e, 0xe2, 0x6f,
|
||||
0x67, 0x4e, 0x7f, 0x6a, 0xad, 0xf3, 0xa3, 0x75, 0xc7, 0xca, 0xb5, 0x7c, 0x31, 0xc2, 0xfe, 0xa4,
|
||||
0x60, 0x95, 0x86, 0x4e, 0x7a, 0xbd, 0x0e, 0x85, 0x29, 0xd2, 0xed, 0xc4, 0xd9, 0x3f, 0xaa, 0x0a,
|
||||
0x9a, 0x5f, 0xbe, 0xd7, 0xc5, 0x45, 0x2a, 0x65, 0x26, 0x59, 0x03, 0x7b, 0x58, 0x49, 0x43, 0xa2,
|
||||
0xb3, 0xe3, 0x1a, 0x59, 0xf1, 0x47, 0x0d, 0xf9, 0xa3, 0x78, 0x58, 0x66, 0xb0, 0x85, 0xdc, 0x60,
|
||||
0x05, 0xd8, 0x39, 0x5f, 0x9b, 0x23, 0xfc, 0x2b, 0xd2, 0xdd, 0x75, 0xfa, 0xc9, 0xca, 0x57, 0xd1,
|
||||
0x02, 0x5a, 0xee, 0x18, 0x1e, 0xf5, 0x32, 0x1c, 0xc3, 0x72, 0x6d, 0x1f, 0xdd, 0x07, 0xce, 0xd7,
|
||||
0xdd, 0xf5, 0xce, 0x7e, 0xff, 0xc7, 0xdf, 0x1e, 0x64, 0x91, 0x4d, 0x56, 0x64, 0x72, 0x3b, 0xe8,
|
||||
0x7b, 0x41, 0xdc, 0x61, 0xb9, 0x6f, 0x44, 0x9e, 0x9f, 0x8d, 0x86, 0x5f, 0xf7, 0xf7, 0xf6, 0x82,
|
||||
0x8c, 0x20, 0x4a, 0x76, 0xd7, 0xd1, 0xfc, 0xe3, 0x4d, 0x96, 0xde, 0x6e, 0x16, 0x96, 0x54, 0xa6,
|
||||
0x15, 0xc4, 0x74, 0xe6, 0x98, 0x18, 0xde, 0x75, 0x70, 0xb1, 0xc7, 0xc3, 0xbe, 0xd2, 0xe4, 0x89,
|
||||
0xbb, 0xfd, 0x64, 0x80, 0xf7, 0xf1, 0xc2, 0x20, 0x8d, 0xc3, 0x7f, 0x41, 0x5b, 0xc9, 0x59, 0xf5,
|
||||
0x1a, 0x38, 0xf9, 0xe8, 0x33, 0xc2, 0xbf, 0xec, 0xe6, 0x9a, 0xc1, 0xe2, 0x8f, 0xed, 0x0d, 0xfa,
|
||||
0xd3, 0x65, 0x22, 0x3e, 0x59, 0x8b, 0x38, 0x13, 0x73, 0x16, 0x2a, 0xc6, 0xbe, 0x5d, 0x6f, 0xa4,
|
||||
0x24, 0xc8, 0x52, 0xd6, 0xd1, 0x27, 0x4b, 0x59, 0xcb, 0xc0, 0xb9, 0x5b, 0xf1, 0xbb, 0x34, 0x99,
|
||||
0x31, 0x6a, 0x59, 0x4f, 0xa3, 0x24, 0xbe, 0x81, 0x11, 0xa2, 0x07, 0x6b, 0xc2, 0x80, 0xca, 0x0f,
|
||||
0xf5, 0xed, 0xcc, 0x02, 0x38, 0x93, 0x2e, 0x7d, 0x6d, 0x73, 0x60, 0x52, 0x53, 0x03, 0x15, 0x2f,
|
||||
0x4c, 0xfd, 0x60, 0xcd, 0x93, 0x34, 0x17, 0xbb, 0x45, 0x9c, 0x6f, 0x49, 0x49, 0x08, 0xd5, 0x43,
|
||||
0xf5, 0xdb, 0xb7, 0x5a, 0x33, 0x3a, 0x16, 0xec, 0x7e, 0x9d, 0x4f, 0xe6, 0xd0, 0x59, 0x91, 0x69,
|
||||
0xeb, 0x74, 0x5d, 0x77, 0xe4, 0x85, 0xd3, 0xf9, 0x6d, 0x96, 0xe3, 0x75, 0x9b, 0xc6, 0x5c, 0xa9,
|
||||
0xa9, 0x23, 0x99, 0x4d, 0xff, 0x71, 0x9b, 0x17, 0xf1, 0xf2, 0xc1, 0xd2, 0xfa, 0xae, 0x00, 0x48,
|
||||
0x63, 0x75, 0xa4, 0xa6, 0x2b, 0xf4, 0x95, 0x9a, 0xea, 0xc1, 0xd9, 0xab, 0xef, 0x9a, 0x23, 0x6d,
|
||||
0xa3, 0xc5, 0x22, 0xde, 0xdc, 0x4c, 0x5c, 0xd6, 0x07, 0xf2, 0x36, 0x87, 0xa6, 0x2e, 0x81, 0xc1,
|
||||
0xb7, 0xcf, 0xcf, 0x48, 0xce, 0x86, 0x65, 0x30, 0xe0, 0x7e, 0x8d, 0x2c, 0x89, 0xcb, 0x4e, 0x49,
|
||||
0x98, 0x70, 0xa8, 0x29, 0x80, 0x70, 0xe8, 0x4f, 0xe5, 0xd6, 0xa5, 0x47, 0x51, 0x03, 0xb3, 0x5b,
|
||||
0x43, 0x87, 0x4d, 0x74, 0x77, 0xa8, 0x60, 0xec, 0xad, 0x5a, 0xbe, 0x11, 0x5a, 0x03, 0x28, 0x51,
|
||||
0x31, 0x61, 0x8a, 0x4b, 0x3f, 0x09, 0xc5, 0x31, 0x0f, 0x22, 0x87, 0xc4, 0x7c, 0x09, 0x4b, 0x54,
|
||||
0x18, 0xea, 0xa1, 0x8c, 0x48, 0xf3, 0x61, 0xe9, 0xd1, 0x9f, 0xa9, 0x16, 0xe0, 0x75, 0x92, 0xce,
|
||||
0x3f, 0xaa, 0x01, 0x58, 0x5f, 0x6a, 0xbe, 0x32, 0xc0, 0xd0, 0x1a, 0x6d, 0xa0, 0x61, 0xb0, 0x06,
|
||||
0xd7, 0xf4, 0x4b, 0x49, 0x82, 0x4b, 0x16, 0x62, 0x9e, 0x66, 0xd2, 0xf7, 0x6f, 0xd2, 0x8d, 0xa8,
|
||||
0xc6, 0x55, 0xb6, 0x76, 0x48, 0xea, 0x62, 0xb1, 0xd0, 0x5a, 0xe0, 0x38, 0x4e, 0xd5, 0xc1, 0x8e,
|
||||
0xe6, 0x24, 0x85, 0x8e, 0x1e, 0xc3, 0x60, 0xee, 0x8c, 0x1c, 0xdd, 0x69, 0xb9, 0x5c, 0x96, 0x9d,
|
||||
0xec, 0x18, 0xf4, 0x96, 0x4a, 0xc9, 0x08, 0xfc, 0xbb, 0xb4, 0xff, 0xf8, 0x33, 0x61, 0xaf, 0x58,
|
||||
0x8a, 0x12, 0x72, 0x62, 0x37, 0xe9, 0x4e, 0x07, 0x54, 0xe7, 0x6b, 0x14, 0x5c, 0x27, 0xb0, 0x9f,
|
||||
0x65, 0xbc, 0xd3, 0xb4, 0x3a, 0x75, 0x22, 0x99, 0xeb, 0x7b, 0x4a, 0x33, 0x76, 0xcc, 0x9a, 0x65,
|
||||
0xb4, 0x8e, 0x93, 0x87, 0x49, 0x0e, 0x1b, 0xb2, 0x72, 0x91, 0xc5, 0xcb, 0xfd, 0x02, 0xf9, 0x42,
|
||||
0x9c, 0xe4, 0x26, 0x25, 0x20, 0x70, 0xd3, 0xeb, 0x28, 0xde, 0x98, 0xf9, 0xed, 0x1a, 0x41, 0xe5,
|
||||
0x61, 0xd7, 0x60, 0x33, 0xd0, 0x8d, 0xae, 0xa1, 0x91, 0x0a, 0x1b, 0xd0, 0x91, 0x44, 0xdb, 0x5c,
|
||||
0x4c, 0xf4, 0x83, 0x96, 0x7c, 0x4e, 0x99, 0x01, 0xe3, 0x21, 0x03, 0x93, 0x54, 0xa0, 0xd2, 0xc4,
|
||||
0xf7, 0xd1, 0x21, 0x6f, 0xd8, 0xa6, 0xb7, 0x51, 0x46, 0x22, 0x8f, 0x26, 0x92, 0x83, 0xa6, 0xe6,
|
||||
0x3d, 0x22, 0x6f, 0x12, 0x6f, 0x04, 0x02, 0xc2, 0xb5, 0xa4, 0xe1, 0x5e, 0xea, 0x50, 0x08, 0xb6,
|
||||
0xaf, 0xdc, 0x5d, 0x25, 0x71, 0x1f, 0x4a, 0xb5, 0x5f, 0x79, 0xb5, 0x12, 0x6f, 0x40, 0x25, 0x59,
|
||||
0xc5, 0x9a, 0xbd, 0xcc, 0x66, 0xac, 0x24, 0xba, 0x16, 0x1d, 0x1e, 0x92, 0xa4, 0xd2, 0xe1, 0x12,
|
||||
0x17, 0xf3, 0xc5, 0x5c, 0x0c, 0x5b, 0x9a, 0x1d, 0xb0, 0x3f, 0x2c, 0x8a, 0x74, 0x3d, 0xb1, 0x42,
|
||||
0x3c, 0x6b, 0x65, 0x70, 0x87, 0xde, 0xd8, 0x2f, 0x15, 0x34, 0xde, 0x10, 0xee, 0x96, 0xd2, 0xd3,
|
||||
0x4a, 0x39, 0x7d, 0x9b, 0x2d, 0xa3, 0x46, 0xce, 0xd0, 0x71, 0xa4, 0x93, 0x04, 0x15, 0x53, 0xee,
|
||||
0xa4, 0xd3, 0xad, 0xb0, 0x0a, 0xfa, 0x6a, 0x40, 0x47, 0x2b, 0xb6, 0xcc, 0x02, 0x6a, 0x9a, 0xae,
|
||||
0xb2, 0x00, 0xea, 0x72, 0xe8, 0x19, 0xb4, 0x6b, 0xf4, 0xf6, 0xcc, 0x85, 0x49, 0x19, 0x51, 0x21,
|
||||
0x20, 0xca, 0x9e, 0xcc, 0xee, 0x62, 0x2d, 0x90, 0x23, 0xb5, 0xcb, 0x74, 0x7e, 0x9b, 0x1f, 0xab,
|
||||
0x94, 0x22, 0xd4, 0xc5, 0xb5, 0xf8, 0x11, 0x6f, 0x90, 0xdc, 0x52, 0x44, 0xc3, 0x1f, 0x1f, 0x96,
|
||||
0x69, 0x10, 0xef, 0xbf, 0x88, 0xd7, 0x94, 0x82, 0x46, 0x50, 0x03, 0x86, 0xf7, 0x4b, 0xf1, 0xb0,
|
||||
0x15, 0xb3, 0xf9, 0x4a, 0xcc, 0x3f, 0xa2, 0xeb, 0x87, 0x6e, 0x9b, 0x98, 0x56, 0xd2, 0xad, 0x75,
|
||||
0xda, 0xdc, 0xae, 0xaf, 0x45, 0xf6, 0xc1, 0xac, 0x15, 0x6d, 0xa3, 0x3c, 0xbf, 0x47, 0xb7, 0x46,
|
||||
0x21, 0xd9, 0xca, 0x07, 0x33, 0x17, 0x09, 0xc2, 0xd5, 0xee, 0x50, 0xf4, 0xf3, 0xf9, 0xbc, 0x53,
|
||||
0xee, 0xb5, 0x38, 0x48, 0xad, 0x3d, 0xfc, 0x73, 0x64, 0x24, 0xf4, 0x3c, 0xc7, 0xe4, 0x7f, 0x3e,
|
||||
0xe2, 0x21, 0x22, 0x6c, 0xcb, 0x23, 0x95, 0xa1, 0xaf, 0x26, 0x33, 0x16, 0xa2, 0x57, 0x2f, 0x61,
|
||||
0x97, 0xcc, 0xfe, 0x8a, 0x2c, 0x43, 0x8a, 0xb1, 0xb2, 0xbb, 0x34, 0x33, 0x6c, 0x4f, 0xa6, 0xa6,
|
||||
0x66, 0x85, 0x4a, 0x59, 0x36, 0xad, 0xb9, 0x07, 0x29, 0x96, 0x09, 0x74, 0x71, 0x2e, 0x56, 0x69,
|
||||
0x42, 0xd9, 0xa8, 0x76, 0x47, 0x82, 0xfe, 0xa8, 0x06, 0xca, 0xcb, 0xd5, 0x46, 0x98, 0xd4, 0xc3,
|
||||
0xfa, 0xa8, 0x7f, 0x48, 0xf2, 0xa0, 0x83, 0x64, 0x6f, 0x8c, 0xac, 0xa2, 0xaf, 0x60, 0x4a, 0xbd,
|
||||
0x90, 0x9c, 0x95, 0x2f, 0xcd, 0x01, 0xbe, 0xf4, 0x47, 0xe3, 0x91, 0x98, 0x4f, 0x2b, 0xfb, 0xb6,
|
||||
0xe7, 0xc5, 0x46, 0x67, 0x8b, 0xf4, 0xd8, 0x4e, 0x15, 0x8d, 0x5e, 0x69, 0x57, 0xec, 0x8a, 0xa6,
|
||||
0x37, 0x59, 0xcc, 0xa6, 0x8b, 0x04, 0xc3, 0x12, 0x9b, 0xc5, 0xc4, 0x6b, 0x94, 0xe4, 0x45, 0x94,
|
||||
0xc1, 0x7c, 0x64, 0x59, 0x96, 0xde, 0xd7, 0x9b, 0xd0, 0xab, 0xaa, 0xe7, 0x61, 0xcd, 0x6a, 0xec,
|
||||
0xdd, 0x3c, 0x11, 0x51, 0xc6, 0x93, 0x08, 0xae, 0x52, 0xf1, 0x5f, 0x63, 0x41, 0xee, 0x4d, 0x58,
|
||||
0x11, 0xbb, 0x8d, 0x69, 0x47, 0x6a, 0xf0, 0x68, 0xda, 0x35, 0xfa, 0x5d, 0xb2, 0xae, 0x76, 0x44,
|
||||
0x6c, 0xe4, 0x60, 0xa0, 0x56, 0x16, 0xdd, 0x67, 0xd1, 0x76, 0x42, 0x97, 0x63, 0x79, 0x89, 0x72,
|
||||
0xd9, 0x34, 0xae, 0xa1, 0x26, 0x17, 0x65, 0x7a, 0x56, 0xd7, 0x59, 0xd9, 0x82, 0x4a, 0xf6, 0xcb,
|
||||
0x34, 0x25, 0xae, 0xd5, 0xf4, 0xdc, 0x2b, 0x1d, 0x96, 0xd4, 0xf3, 0x83, 0xa0, 0xbb, 0xff, 0x32,
|
||||
0xba, 0x86, 0xd8, 0xb5, 0x2a, 0x2e, 0x7c, 0xfa, 0xb3, 0xb7, 0xaf, 0xd3, 0xc5, 0x43, 0xc3, 0x29,
|
||||
0x27, 0xf1, 0xb6, 0x6e, 0xe8, 0x87, 0xfe, 0x5a, 0x2c, 0x96, 0xce, 0xb2, 0x9d, 0x73, 0xb8, 0xa7,
|
||||
0x6d, 0x4b, 0x7a, 0x48, 0x2a, 0x42, 0x44, 0xe3, 0x1c, 0xab, 0x43, 0x8a, 0x8d, 0x0c, 0x91, 0x2e,
|
||||
0xd0, 0xa3, 0x6e, 0x96, 0xed, 0x6d, 0x8a, 0x9c, 0x04, 0xd8, 0x6b, 0x84, 0xa7, 0x81, 0xe3, 0x74,
|
||||
0x10, 0x6e, 0x53, 0x0e, 0x6b, 0xd6, 0xba, 0x3c, 0x0d, 0x4f, 0xea, 0xb5, 0x2b, 0x1d, 0x3a, 0x14,
|
||||
0xb7, 0x88, 0xe7, 0xe0, 0x17, 0xf4, 0xf6, 0xfa, 0x16, 0x11, 0x61, 0xd3, 0x95, 0x8b, 0x49, 0xeb,
|
||||
0x52, 0xaa, 0xe6, 0x74, 0xe4, 0x65, 0xb5, 0x98, 0xd7, 0xca, 0x60, 0x5b, 0xd1, 0x8b, 0x99, 0x70,
|
||||
0x4c, 0x61, 0x10, 0x95, 0x54, 0xfa, 0x8a, 0x34, 0xbd, 0xa1, 0x1d, 0xee, 0x90, 0x50, 0x07, 0x92,
|
||||
0xd2, 0xbd, 0x28, 0x54, 0x1f, 0x99, 0xbd, 0xa0, 0xb9, 0x75, 0x1d, 0x65, 0xbb, 0xba, 0x21, 0xdf,
|
||||
0x40, 0x69, 0x29, 0x46, 0x54, 0xa6, 0x4b, 0x25, 0xcc, 0xac, 0x27, 0xda, 0x66, 0x5e, 0x64, 0xa2,
|
||||
0x98, 0xaf, 0x0e, 0xc5, 0x7a, 0xc2, 0x22, 0x64, 0xc2, 0xaa, 0x02, 0x2f, 0x39, 0xe4, 0xba, 0x74,
|
||||
0xb4, 0xfe, 0x2c, 0x19, 0xc0, 0x16, 0x04, 0xd5, 0x87, 0x63, 0xc8, 0xec, 0x5e, 0xca, 0x11, 0x6b,
|
||||
0x21, 0xf0, 0xa0, 0x8c, 0xb1, 0x29, 0x0b, 0x31, 0xeb, 0xa6, 0x82, 0x7a, 0xc3, 0x0a, 0xdd, 0x83,
|
||||
0x79, 0x55, 0x33, 0x31, 0x60, 0xd3, 0x3b, 0x36, 0x25, 0x90, 0xf9, 0x62, 0xbe, 0x02, 0xff, 0x90,
|
||||
0x70, 0x77, 0xa5, 0xa8, 0xa4, 0x0a, 0xcd, 0x31, 0xdb, 0x19, 0x4b, 0xe5, 0x0e, 0x5a, 0xd0, 0x98,
|
||||
0x0f, 0x3b, 0x85, 0x06, 0x7b, 0x8e, 0x96, 0x4e, 0x55, 0xeb, 0x15, 0x87, 0xf3, 0x7d, 0xa5, 0xea,
|
||||
0x5f, 0x97, 0xd3, 0x3d, 0x9d, 0xa9, 0x0c, 0x30, 0xc2, 0xdd, 0x4d, 0x73, 0xbe, 0xd6, 0x58, 0xee,
|
||||
0x60, 0x5b, 0x57, 0xb3, 0x3f, 0x96, 0x08, 0x9a, 0x5b, 0x62, 0x57, 0x93, 0x1a, 0x2b, 0xa1, 0xb2,
|
||||
0xb7, 0x5d, 0x7d, 0xed, 0xa4, 0xbe, 0x98, 0x52, 0x01, 0x43, 0x5b, 0x50, 0x63, 0x56, 0x84, 0xd9,
|
||||
0xf7, 0x96, 0x05, 0x52, 0x28, 0x37, 0x6d, 0xa6, 0xe8, 0xc8, 0xde, 0x6f, 0x6e, 0x68, 0x86, 0x76,
|
||||
0xd2, 0x76, 0xa4, 0x3f, 0xe6, 0x01, 0xcb, 0x84, 0x98, 0x72, 0x1e, 0x29, 0xa9, 0x6a, 0x7a, 0xd2,
|
||||
0x90, 0x91, 0x84, 0x6c, 0xe5, 0xf7, 0x31, 0x94, 0xb6, 0x26, 0xa7, 0x49, 0x47, 0x3e, 0xc2, 0x59,
|
||||
0x45, 0xe7, 0xa0, 0x2a, 0xd5, 0xf0, 0xbb, 0x75, 0xa2, 0x9e, 0x59, 0x94, 0x03, 0x20, 0x87, 0x18,
|
||||
0xe6, 0x53, 0xd8, 0x27, 0xfc, 0x0b, 0x26, 0x8a, 0xd2, 0x75, 0xad, 0x31, 0x3b, 0x4b, 0xb4, 0x12,
|
||||
0x0d, 0x47, 0xac, 0xf7, 0x75, 0x04, 0x75, 0xc8, 0x6e, 0x16, 0x1e, 0xac, 0xf3, 0xb4, 0x7b, 0xa9,
|
||||
0x06, 0x35, 0xea, 0x08, 0xf7, 0x28, 0xb3, 0x6e, 0x88, 0x32, 0xf4, 0x39, 0x73, 0x47, 0xce, 0x42,
|
||||
0xdc, 0x98, 0xa4, 0x96, 0x86, 0x63, 0x7e, 0x29, 0x84, 0xe8, 0x77, 0x2c, 0xbd, 0x35, 0xc2, 0x23,
|
||||
0xb3, 0xb6, 0x1d, 0x1e, 0x87, 0xed, 0xf0, 0xa8, 0x67, 0xa1, 0x03, 0x4a, 0xb5, 0x79, 0x21, 0x68,
|
||||
0xdb, 0xb1, 0x0e, 0x20, 0xb5, 0xb1, 0x99, 0x84, 0x51, 0x6b, 0xc9, 0x24, 0xa5, 0x74, 0x83, 0x8a,
|
||||
0x1d, 0xd2, 0xb3, 0x19, 0xff, 0x53, 0x32, 0x71, 0xeb, 0x3f, 0x4e, 0xd4, 0x10, 0xbe, 0x12, 0xf3,
|
||||
0x64, 0x4a, 0x8d, 0x27, 0x7c, 0x15, 0x8b, 0xe7, 0x27, 0xf4, 0x46, 0x4e, 0x3e, 0x1f, 0xeb, 0xa2,
|
||||
0x91, 0x65, 0x9e, 0xf8, 0xd2, 0xc3, 0xc9, 0x0e, 0xbb, 0x43, 0xee, 0xdc, 0xc5, 0x79, 0x7c, 0x1d,
|
||||
0x27, 0xb4, 0x08, 0x2c, 0xe7, 0xef, 0xa5, 0x80, 0xe5, 0xec, 0xaa, 0x6e, 0x6b, 0xc3, 0x6e, 0x15,
|
||||
0x24, 0xa7, 0x8a, 0x41, 0xfe, 0xb8, 0x16, 0x8b, 0x38, 0x32, 0xf2, 0x79, 0x26, 0xc4, 0xc6, 0x88,
|
||||
0xa0, 0x86, 0x67, 0xb5, 0xb4, 0x63, 0x0c, 0xd2, 0xfb, 0x3b, 0xce, 0xc4, 0xda, 0x41, 0xc1, 0x3d,
|
||||
0x08, 0x0a, 0xca, 0xa8, 0x75, 0xe7, 0x90, 0x16, 0x1a, 0xea, 0x39, 0xcc, 0xf0, 0xeb, 0x69, 0x7a,
|
||||
0xfd, 0x0f, 0xb8, 0x50, 0x6b, 0x19, 0x23, 0x86, 0x41, 0x39, 0x31, 0xdf, 0xad, 0x16, 0x22, 0x98,
|
||||
0x26, 0xe8, 0xfa, 0x01, 0xae, 0x2a, 0x49, 0xa4, 0x89, 0x36, 0x05, 0x88, 0x0d, 0xcd, 0x16, 0x9e,
|
||||
0x14, 0xba, 0x4f, 0x13, 0x17, 0x06, 0x21, 0x13, 0x77, 0x1c, 0xae, 0x7b, 0x08, 0xd7, 0x7d, 0x1c,
|
||||
0x6e, 0xe0, 0x8c, 0x18, 0xae, 0x8e, 0xa6, 0x27, 0x63, 0x87, 0x8e, 0x6d, 0xe5, 0xc2, 0x4e, 0x33,
|
||||
0xa6, 0x54, 0xce, 0xa9, 0x8c, 0x57, 0xb4, 0xd2, 0x1e, 0xdd, 0x45, 0x71, 0x42, 0x59, 0x78, 0x6d,
|
||||
0x91, 0xa6, 0xbe, 0xdc, 0x52, 0x87, 0x68, 0x44, 0x70, 0x99, 0xc5, 0x99, 0x5a, 0x1b, 0xe9, 0x1f,
|
||||
0xf8, 0x51, 0xb5, 0x74, 0xd2, 0x58, 0x06, 0xa9, 0x2f, 0xed, 0xc8, 0x55, 0x8c, 0x47, 0x17, 0x65,
|
||||
0xaa, 0x4c, 0x7b, 0x14, 0x7e, 0x6d, 0x3a, 0x7d, 0x9d, 0xe1, 0x0c, 0x23, 0xfa, 0xa3, 0xfb, 0xdb,
|
||||
0x99, 0xc8, 0xb7, 0x29, 0x0c, 0xfa, 0x4e, 0xec, 0x3a, 0xe4, 0x7c, 0xd0, 0x48, 0x2d, 0xcf, 0x1c,
|
||||
0x8b, 0x5a, 0x8e, 0x5e, 0xad, 0x3e, 0xec, 0x18, 0x75, 0x12, 0x43, 0x44, 0xb7, 0xd7, 0x39, 0x65,
|
||||
0xd4, 0xb1, 0x8a, 0x78, 0xf3, 0xd0, 0x64, 0xce, 0x69, 0x31, 0x0f, 0xc2, 0x31, 0x89, 0xb9, 0xb9,
|
||||
0x0a, 0xc2, 0x7c, 0xe7, 0x54, 0xba, 0xa9, 0xa0, 0x87, 0xfa, 0x59, 0x8b, 0x8c, 0xc8, 0x44, 0x6b,
|
||||
0xda, 0xe0, 0x96, 0x49, 0xe7, 0xd1, 0x54, 0xd5, 0x69, 0x01, 0x93, 0xb3, 0xb7, 0x5d, 0x33, 0x3f,
|
||||
0xa8, 0xa6, 0xe6, 0x86, 0x54, 0xda, 0x17, 0xe7, 0x72, 0x53, 0xe9, 0x0f, 0xff, 0xf6, 0xe2, 0x5c,
|
||||
0xed, 0x78, 0xe1, 0x91, 0x90, 0x35, 0xe6, 0x09, 0xa6, 0xe7, 0x33, 0x7a, 0x2c, 0x77, 0xb2, 0x60,
|
||||
0x9a, 0x46, 0xbc, 0x98, 0xd1, 0x9d, 0xf2, 0x26, 0x55, 0xce, 0x75, 0x72, 0xb5, 0x4a, 0x75, 0xea,
|
||||
0x61, 0x64, 0x43, 0x96, 0xf4, 0x6a, 0x8d, 0xb8, 0xe1, 0x22, 0xbe, 0x53, 0xad, 0xea, 0xbb, 0x64,
|
||||
0x8d, 0x26, 0xec, 0xae, 0x0c, 0x50, 0x3b, 0xeb, 0xd1, 0xea, 0x1a, 0xa9, 0xb7, 0xe8, 0x69, 0xd0,
|
||||
0x94, 0x4f, 0xc8, 0xc4, 0xb5, 0x0d, 0xba, 0x31, 0x04, 0xd0, 0xa4, 0x96, 0xd4, 0xdf, 0xe0, 0x81,
|
||||
0x66, 0xcf, 0x2e, 0x93, 0x78, 0xfe, 0xd1, 0x28, 0x52, 0xe3, 0x76, 0x4b, 0x6b, 0xff, 0xc6, 0x43,
|
||||
0x7a, 0x9b, 0x19, 0xdc, 0x80, 0x06, 0x78, 0x76, 0xf1, 0xe2, 0x1c, 0x1d, 0xbb, 0xf0, 0x39, 0x67,
|
||||
0x84, 0xba, 0x6a, 0x56, 0x2e, 0x0d, 0x44, 0xdb, 0x75, 0x72, 0x24, 0x89, 0xa3, 0x92, 0x50, 0x6b,
|
||||
0x53, 0x70, 0xe5, 0x1e, 0x87, 0x00, 0xeb, 0xc9, 0xa1, 0xca, 0xad, 0xfe, 0x1d, 0x7d, 0xba, 0x70,
|
||||
0xac, 0xb3, 0x54, 0x1a, 0x24, 0x20, 0xe2, 0xc9, 0xc2, 0x63, 0xd7, 0x90, 0x48, 0xca, 0x59, 0x8c,
|
||||
0x3d, 0xd4, 0x5b, 0x88, 0x7d, 0x1f, 0x8f, 0x32, 0x32, 0x62, 0x36, 0x8a, 0x82, 0xd7, 0x33, 0xb5,
|
||||
0x00, 0x22, 0xee, 0x63, 0x48, 0xd7, 0xd1, 0x33, 0x16, 0x51, 0x11, 0x91, 0x32, 0xd0, 0xd6, 0x26,
|
||||
0x7c, 0x26, 0x9e, 0x7a, 0x17, 0x7f, 0x8d, 0xbf, 0x8f, 0x8d, 0x77, 0xa2, 0xb8, 0xdd, 0xbe, 0x38,
|
||||
0x8f, 0x3a, 0x39, 0x4a, 0x38, 0x74, 0x55, 0xf0, 0x88, 0x3c, 0x17, 0x35, 0x90, 0xad, 0xdf, 0x88,
|
||||
0x62, 0xf6, 0x5f, 0xd7, 0x49, 0x84, 0xe1, 0xe0, 0x0f, 0x66, 0x9b, 0x34, 0xdd, 0x8a, 0x0d, 0xb4,
|
||||
0x6c, 0x95, 0x89, 0xe5, 0xcc, 0x3e, 0x87, 0x21, 0x16, 0x17, 0xdf, 0x43, 0x76, 0xf9, 0x91, 0x61,
|
||||
0x7e, 0x15, 0xb4, 0xdb, 0x2d, 0x48, 0x11, 0x17, 0x7f, 0xe1, 0xdb, 0x51, 0x80, 0x4d, 0x26, 0x90,
|
||||
0x23, 0xea, 0xd1, 0x20, 0xab, 0xdb, 0xb5, 0x05, 0xdf, 0x7e, 0x4a, 0x23, 0x65, 0x4f, 0x28, 0xa5,
|
||||
0xc1, 0x26, 0x37, 0x53, 0xb9, 0xa7, 0x05, 0xab, 0x3f, 0xd2, 0x4d, 0x4a, 0x0b, 0x1d, 0x94, 0x32,
|
||||
0xaf, 0xc5, 0xe6, 0x96, 0x74, 0x35, 0x99, 0xa9, 0xfc, 0xf7, 0x92, 0x97, 0x9e, 0x68, 0xa3, 0xf8,
|
||||
0x4f, 0x24, 0x00, 0x4a, 0x4b, 0x3c, 0x58, 0xf6, 0xa8, 0x07, 0xd5, 0x41, 0x87, 0x63, 0xd8, 0x1c,
|
||||
0xd5, 0xf3, 0x36, 0xcd, 0xed, 0x96, 0xd2, 0x47, 0x88, 0xac, 0x5e, 0xa4, 0x8c, 0x4d, 0x0b, 0xbf,
|
||||
0xee, 0x01, 0xd2, 0x6d, 0x21, 0xf5, 0xa1, 0x05, 0x75, 0xe5, 0x35, 0x15, 0xdd, 0xf2, 0x2e, 0x2e,
|
||||
0x65, 0xa8, 0x25, 0xeb, 0x24, 0xe5, 0xc1, 0x40, 0x5e, 0x97, 0x96, 0xeb, 0x81, 0x78, 0xb5, 0x49,
|
||||
0x03, 0x81, 0xa3, 0xee, 0xa2, 0xa6, 0xde, 0x86, 0x9f, 0x8f, 0xb1, 0xa3, 0x60, 0x77, 0xa7, 0x41,
|
||||
0x27, 0x71, 0x5e, 0x80, 0x7d, 0x45, 0xcd, 0xf1, 0x35, 0x59, 0x72, 0x0c, 0xd6, 0x8b, 0xeb, 0xec,
|
||||
0xd7, 0x19, 0x6b, 0x3d, 0xc7, 0xe8, 0x82, 0x47, 0xee, 0x5e, 0x35, 0xa5, 0xc7, 0xc7, 0x75, 0xab,
|
||||
0x9a, 0xfc, 0x9e, 0x52, 0xa8, 0xca, 0xbb, 0xe6, 0x79, 0xbc, 0x50, 0x5d, 0x6b, 0xab, 0xf0, 0x17,
|
||||
0xef, 0xde, 0xfd, 0xf0, 0xdd, 0x71, 0x9f, 0x57, 0xc2, 0xe1, 0x2e, 0x46, 0xb9, 0x66, 0x6b, 0xd4,
|
||||
0x96, 0x34, 0x67, 0xbd, 0x57, 0x34, 0xf5, 0x92, 0x1e, 0x16, 0xf2, 0xfc, 0xc1, 0x20, 0x98, 0x7c,
|
||||
0xac, 0x81, 0xad, 0xa5, 0x47, 0x23, 0xf7, 0xca, 0x83, 0x0d, 0x87, 0x3c, 0xee, 0x56, 0xd0, 0xff,
|
||||
0x21, 0xb9, 0x7a, 0xb9, 0xb9, 0x83, 0xe4, 0xb7, 0xaa, 0xea, 0x09, 0x64, 0xd7, 0x4c, 0xb9, 0x31,
|
||||
0xd5, 0x66, 0x23, 0x2d, 0x4b, 0xf4, 0x58, 0x27, 0x20, 0x31, 0xb4, 0xd2, 0xa1, 0x94, 0x5d, 0x8d,
|
||||
0x6a, 0x7a, 0xdb, 0x2b, 0x61, 0x12, 0xb8, 0x47, 0x40, 0xb5, 0x91, 0x83, 0xf9, 0xb3, 0xef, 0x28,
|
||||
0x5f, 0x2d, 0xa1, 0xfd, 0x88, 0x78, 0x10, 0x2d, 0xa7, 0x31, 0xc0, 0x5f, 0xed, 0x34, 0x4e, 0x71,
|
||||
0xbf, 0x1c, 0xa8, 0xd3, 0x3d, 0x3e, 0x42, 0x99, 0x74, 0x94, 0x9a, 0x3b, 0xbf, 0x1d, 0x39, 0x9b,
|
||||
0xf4, 0x77, 0xa7, 0xe8, 0x31, 0x08, 0x75, 0x63, 0x28, 0xd5, 0xec, 0x84, 0x41, 0xc4, 0x86, 0x6e,
|
||||
0xc5, 0x4c, 0xd1, 0x2f, 0xa7, 0x51, 0xa4, 0xb5, 0x9a, 0x79, 0xba, 0xde, 0x26, 0xa2, 0x10, 0x3a,
|
||||
0x02, 0x94, 0x8a, 0x26, 0xe3, 0xf0, 0x3a, 0x47, 0x90, 0xa0, 0x7d, 0x96, 0x59, 0xaf, 0x1a, 0xe0,
|
||||
0xd7, 0x9a, 0xd9, 0x8b, 0xf3, 0x0e, 0x77, 0xf3, 0x88, 0x2f, 0xeb, 0xa9, 0x89, 0x8d, 0xd1, 0x95,
|
||||
0x4b, 0x28, 0x1b, 0x54, 0x2d, 0xe5, 0x9c, 0xd4, 0xd0, 0xdb, 0xa4, 0x47, 0x93, 0x8f, 0xd5, 0x31,
|
||||
0xb3, 0x96, 0x09, 0x8c, 0x4e, 0x78, 0xaa, 0x09, 0xee, 0xc5, 0xbb, 0x02, 0x73, 0x65, 0xc9, 0x5e,
|
||||
0x64, 0xe7, 0x74, 0xb4, 0x26, 0x8e, 0x92, 0xfc, 0x68, 0xb2, 0xc1, 0xb0, 0xa4, 0xe0, 0x48, 0x06,
|
||||
0x94, 0x82, 0xe5, 0xb4, 0x34, 0x62, 0x34, 0x36, 0xb9, 0x4a, 0xb4, 0xe5, 0xbc, 0x1b, 0x79, 0xa8,
|
||||
0x9c, 0xa9, 0x3f, 0xc1, 0x3f, 0xd5, 0x67, 0xf2, 0xff, 0x4a, 0x76, 0x29, 0xd3, 0xaf, 0x79, 0xb4,
|
||||
0x69, 0xe4, 0x5f, 0xe0, 0xf4, 0xc9, 0xcc, 0xb7, 0x65, 0x30, 0xca, 0x48, 0x08, 0xcc, 0xa3, 0xb9,
|
||||
0xc3, 0x53, 0x8d, 0x86, 0x25, 0x70, 0xf1, 0x8e, 0x40, 0x32, 0xb7, 0x37, 0xa2, 0x80, 0xaa, 0x7d,
|
||||
0x3c, 0xce, 0xea, 0x53, 0xf9, 0x99, 0x8a, 0x80, 0xbf, 0x01, 0x8d, 0x0a, 0xd2, 0x6f, 0x4c, 0x66,
|
||||
0x2d, 0x35, 0x29, 0x53, 0x67, 0x8a, 0x5f, 0x16, 0x85, 0x33, 0x15, 0x2c, 0x9f, 0x4c, 0xf6, 0x61,
|
||||
0x46, 0xd5, 0x7a, 0x57, 0x59, 0x0e, 0x9b, 0x53, 0xa5, 0x7c, 0xda, 0xba, 0xd8, 0x8d, 0xb6, 0x41,
|
||||
0x76, 0x58, 0x57, 0xa7, 0x15, 0x1e, 0x18, 0x54, 0xb7, 0xea, 0x49, 0xa9, 0x60, 0xd6, 0x4c, 0xcb,
|
||||
0xe5, 0x8f, 0x08, 0xe4, 0x84, 0x30, 0x34, 0x80, 0xdf, 0x42, 0x18, 0x52, 0x10, 0x7f, 0x56, 0x10,
|
||||
0x5f, 0xbd, 0x7b, 0xdb, 0xc9, 0xf1, 0x0e, 0x6e, 0x4b, 0x0b, 0x8a, 0xee, 0x28, 0xe4, 0x64, 0xd1,
|
||||
0x3a, 0xff, 0xd7, 0xc9, 0x21, 0x20, 0xbf, 0x21, 0x2d, 0xef, 0x08, 0x1c, 0xf4, 0x75, 0x19, 0xdf,
|
||||
0xdc, 0xca, 0x73, 0x2e, 0x4f, 0x20, 0xa9, 0x0e, 0xf2, 0xc5, 0x39, 0xcd, 0xc2, 0xf5, 0x4b, 0xcd,
|
||||
0x11, 0xcb, 0x43, 0x75, 0x46, 0x19, 0x70, 0xe5, 0xfb, 0xc5, 0x55, 0xca, 0xa9, 0xb6, 0x6d, 0xdb,
|
||||
0x0d, 0x28, 0xea, 0xb0, 0x09, 0xcf, 0xea, 0xf9, 0x28, 0xd2, 0x5a, 0xe4, 0x79, 0x74, 0x53, 0xcf,
|
||||
0x6f, 0x5f, 0xa8, 0xc3, 0x27, 0x44, 0x97, 0x7a, 0x6a, 0xe9, 0xab, 0x1c, 0x59, 0x1d, 0x66, 0x3a,
|
||||
0x14, 0x41, 0xba, 0x99, 0xd3, 0xcc, 0x7b, 0xc6, 0x87, 0xb7, 0xde, 0x50, 0x9b, 0x37, 0x72, 0x90,
|
||||
0xb3, 0xfe, 0x69, 0x19, 0x34, 0x4e, 0x7d, 0x1d, 0xb5, 0x51, 0x29, 0x23, 0x6e, 0x23, 0xdb, 0x1b,
|
||||
0xf2, 0x8c, 0xad, 0x3b, 0x30, 0xe4, 0xb2, 0x32, 0x3d, 0x35, 0xe4, 0x84, 0x77, 0x77, 0xd0, 0x93,
|
||||
0xd2, 0xa4, 0x45, 0x9d, 0xa3, 0xb3, 0xa5, 0xce, 0xa0, 0x77, 0xa8, 0x65, 0x87, 0x18, 0x1f, 0x5d,
|
||||
0xda, 0xc0, 0xd4, 0x87, 0x58, 0x2d, 0xe9, 0x57, 0xcd, 0xba, 0x26, 0x3b, 0xa7, 0xa3, 0x6d, 0xeb,
|
||||
0xdc, 0x58, 0xd7, 0x40, 0xdb, 0xfa, 0x38, 0x3c, 0x97, 0x79, 0x71, 0xbe, 0xfd, 0x75, 0xa3, 0x28,
|
||||
0xa7, 0x73, 0xd4, 0x71, 0xa7, 0x1f, 0x15, 0xbf, 0x2b, 0xa3, 0x52, 0x6a, 0x77, 0x5c, 0xe2, 0x45,
|
||||
0x76, 0x2b, 0xfa, 0x17, 0xd2, 0x06, 0x7e, 0xfa, 0xbf, 0x4a, 0xe7, 0x4f, 0x46, 0x87, 0x9a, 0x5c,
|
||||
0x6b, 0xc6, 0x7b, 0x62, 0x88, 0x25, 0x62, 0x7e, 0x39, 0xc6, 0x25, 0x55, 0x1f, 0x1d, 0xe6, 0x94,
|
||||
0x37, 0xc6, 0xb3, 0xb4, 0x8d, 0xf2, 0xf4, 0xf5, 0x3c, 0x8b, 0xb7, 0xc5, 0x05, 0x34, 0xe5, 0x2a,
|
||||
0xbd, 0x49, 0x67, 0xcf, 0x58, 0xf3, 0xa4, 0xaa, 0x05, 0x74, 0xf6, 0x42, 0x29, 0x1b, 0x3f, 0x37,
|
||||
0xdd, 0xc2, 0x08, 0x7f, 0xe1, 0x16, 0xb6, 0x51, 0xb1, 0x32, 0x30, 0xf9, 0x79, 0xe3, 0x7a, 0xf6,
|
||||
0xd8, 0x0b, 0x0c, 0x77, 0x6c, 0xfb, 0xde, 0x20, 0x0a, 0xed, 0xc0, 0xa0, 0x7f, 0xbc, 0xad, 0x60,
|
||||
0xa1, 0x6a, 0xe4, 0x5b, 0x81, 0x1d, 0x0e, 0x07, 0x28, 0x1d, 0xa8, 0x8b, 0xac, 0xf3, 0xed, 0x91,
|
||||
0x37, 0xb2, 0x5c, 0x7b, 0x38, 0x1c, 0xd8, 0xc1, 0x38, 0xa4, 0x7f, 0x72, 0x2b, 0xc2, 0xb2, 0x03,
|
||||
0x27, 0xb0, 0xec, 0xd0, 0x77, 0xed, 0x20, 0x1c, 0xd0, 0x3f, 0x59, 0x6e, 0xd8, 0xe1, 0xc0, 0x47,
|
||||
0xa5, 0x1b, 0x1a, 0x23, 0x7b, 0xac, 0x2e, 0xb2, 0x66, 0x64, 0x8c, 0xed, 0x91, 0x33, 0x04, 0x78,
|
||||
0xc0, 0x54, 0x57, 0x05, 0xcb, 0x1b, 0x8f, 0x0c, 0x0c, 0x32, 0xf0, 0x12, 0x17, 0xc8, 0x8c, 0xed,
|
||||
0x61, 0x10, 0xb9, 0xae, 0xed, 0xf8, 0x63, 0x43, 0xdd, 0xd4, 0x06, 0x88, 0x1d, 0xba, 0x03, 0x00,
|
||||
0x1f, 0xba, 0x06, 0x08, 0x72, 0x87, 0x63, 0x7d, 0x93, 0xd5, 0xb6, 0xe7, 0x86, 0xa0, 0xc6, 0x1f,
|
||||
0xf8, 0x2f, 0x51, 0x3e, 0x0c, 0x0d, 0x79, 0x95, 0x95, 0x21, 0x6a, 0x3d, 0x23, 0xb0, 0xdd, 0xd0,
|
||||
0x8d, 0x86, 0xf6, 0xd0, 0x37, 0xf8, 0xa2, 0x38, 0x80, 0xeb, 0xc0, 0xf6, 0x41, 0xbf, 0xbc, 0x6a,
|
||||
0xbe, 0xb8, 0xe0, 0x98, 0xed, 0xfb, 0x21, 0x8a, 0xbd, 0x70, 0xa0, 0xae, 0x1a, 0x95, 0xb1, 0x33,
|
||||
0x06, 0xb8, 0xd1, 0x30, 0x20, 0xb2, 0xc6, 0xfa, 0xaa, 0x6b, 0x1d, 0x30, 0xc5, 0x1d, 0x0f, 0xd1,
|
||||
0xc7, 0x71, 0x5d, 0x75, 0x95, 0x6c, 0xf0, 0x19, 0xa2, 0x6f, 0x8f, 0x31, 0x10, 0xae, 0xc1, 0x50,
|
||||
0x5d, 0x35, 0x5b, 0xe1, 0xd1, 0x31, 0x30, 0x18, 0xe1, 0x87, 0xae, 0x3d, 0x1a, 0x45, 0xae, 0x63,
|
||||
0xbb, 0x23, 0xcf, 0x50, 0x37, 0x09, 0xdf, 0xb3, 0x9d, 0x61, 0x08, 0x42, 0x3d, 0x90, 0x35, 0x54,
|
||||
0x17, 0xc5, 0x03, 0x48, 0x11, 0x98, 0x07, 0xde, 0x68, 0x4d, 0xe8, 0x0f, 0x20, 0xa1, 0x97, 0xae,
|
||||
0x0f, 0x74, 0x7c, 0x43, 0xdd, 0x94, 0x98, 0x1c, 0xc7, 0x25, 0x98, 0x10, 0x3d, 0xb1, 0x69, 0x4c,
|
||||
0x23, 0xc8, 0x9b, 0xc6, 0x92, 0x2a, 0xd0, 0x3b, 0x4c, 0x48, 0xa2, 0x24, 0xf8, 0x08, 0x0d, 0x9c,
|
||||
0x80, 0xb9, 0x4a, 0x37, 0x47, 0xd3, 0x1a, 0xda, 0xee, 0xc0, 0x35, 0xba, 0x2a, 0x55, 0x95, 0x93,
|
||||
0x68, 0xdd, 0x21, 0x10, 0x63, 0x6e, 0x54, 0xea, 0x11, 0x34, 0xd2, 0x0f, 0x30, 0x5c, 0xe8, 0x05,
|
||||
0x6f, 0x10, 0xcd, 0x08, 0xa5, 0x31, 0x50, 0xe6, 0x9b, 0x7a, 0xd3, 0xd0, 0xd0, 0x6b, 0x00, 0x59,
|
||||
0x27, 0xd0, 0x47, 0x17, 0x28, 0x81, 0x05, 0xd0, 0x9c, 0xa1, 0x07, 0x24, 0xbd, 0xc8, 0x85, 0xa2,
|
||||
0x41, 0xbe, 0xea, 0x26, 0x69, 0x80, 0xee, 0x0c, 0x47, 0x23, 0xbe, 0x85, 0x41, 0x42, 0xba, 0x8a,
|
||||
0xf6, 0x81, 0x3f, 0x77, 0x2c, 0xdb, 0x0f, 0x02, 0xe0, 0x39, 0x26, 0x05, 0xf6, 0xf8, 0x81, 0x41,
|
||||
0xae, 0x71, 0xf3, 0x82, 0x31, 0x54, 0xc3, 0x0d, 0x86, 0x2f, 0x81, 0x3d, 0x34, 0x44, 0x5e, 0xb5,
|
||||
0x0e, 0x8d, 0x5c, 0x52, 0x54, 0x2f, 0x24, 0xf5, 0x74, 0x5d, 0x56, 0x4f, 0xba, 0x69, 0x85, 0x19,
|
||||
0x90, 0xd2, 0xd9, 0x61, 0x78, 0x07, 0xab, 0xf0, 0x87, 0xc4, 0xf8, 0x31, 0x35, 0x92, 0x37, 0x85,
|
||||
0xd4, 0x18, 0x43, 0x8c, 0x08, 0xd1, 0x61, 0xb8, 0xa2, 0x66, 0x03, 0x82, 0x15, 0xba, 0xbe, 0xa1,
|
||||
0x6e, 0xa5, 0xaa, 0x87, 0x2e, 0x41, 0x1c, 0x04, 0x6f, 0x42, 0xd8, 0x2e, 0xe1, 0x31, 0x1a, 0xa1,
|
||||
0x2d, 0xd8, 0x08, 0x20, 0x7c, 0x65, 0x70, 0x16, 0x3d, 0x5b, 0xf5, 0x62, 0x5d, 0xc9, 0xd5, 0x78,
|
||||
0x96, 0x05, 0x34, 0x29, 0x93, 0x41, 0xe7, 0xd9, 0x14, 0x4e, 0x3c, 0x2f, 0x0c, 0x3c, 0xbf, 0x11,
|
||||
0x9b, 0x5b, 0xb8, 0x95, 0xd2, 0x4d, 0xf8, 0x66, 0xf0, 0xda, 0x73, 0xdf, 0x8f, 0x5e, 0xfb, 0xef,
|
||||
0x03, 0xbc, 0xb8, 0x2e, 0xbd, 0xb9, 0x3e, 0x5e, 0x5d, 0x97, 0xde, 0xb9, 0xd6, 0xa5, 0x6a, 0x37,
|
||||
0xf8, 0x5b, 0xef, 0xfc, 0xe2, 0x99, 0xc9, 0xbe, 0x09, 0x4e, 0x51, 0xfa, 0x26, 0xe5, 0x90, 0x7a,
|
||||
0x6e, 0xb0, 0x2d, 0x7a, 0x4d, 0x97, 0x34, 0x84, 0x58, 0xf0, 0xaf, 0xe6, 0x94, 0xd6, 0x24, 0x78,
|
||||
0x14, 0xad, 0x2c, 0x6f, 0x34, 0x9a, 0x5b, 0x5e, 0x00, 0xf6, 0xf9, 0xae, 0x07, 0x4b, 0xb0, 0x06,
|
||||
0x23, 0xcb, 0x83, 0xd4, 0x3c, 0x98, 0xf2, 0x88, 0x5e, 0x06, 0xa3, 0x3b, 0xcb, 0xf3, 0x06, 0x90,
|
||||
0x1c, 0xb5, 0x0a, 0x83, 0x61, 0xe0, 0x19, 0xd4, 0x60, 0x10, 0x8c, 0xc2, 0x21, 0x6a, 0x0d, 0x6e,
|
||||
0xb3, 0x22, 0x38, 0x35, 0x30, 0x28, 0x35, 0x4a, 0x30, 0x06, 0xb7, 0xba, 0x63, 0x28, 0x46, 0x09,
|
||||
0xc5, 0x2a, 0xa1, 0x48, 0x10, 0xb8, 0x7e, 0x5e, 0x13, 0x3e, 0x12, 0xa7, 0x11, 0x04, 0xce, 0x08,
|
||||
0xb9, 0xe4, 0x30, 0xdd, 0x20, 0x1c, 0x13, 0xaf, 0xe1, 0x15, 0x02, 0x05, 0x08, 0x0d, 0x7c, 0xcf,
|
||||
0xf1, 0x5d, 0xaa, 0x25, 0x20, 0x5c, 0x87, 0xbf, 0x8c, 0x8a, 0xee, 0x8d, 0x77, 0x4b, 0xf7, 0xa6,
|
||||
0x67, 0xf4, 0x56, 0xd4, 0xe8, 0xee, 0x96, 0xec, 0x6e, 0x71, 0x25, 0xfe, 0x7e, 0x5e, 0x83, 0x65,
|
||||
0xe0, 0x6f, 0x8d, 0x57, 0x0e, 0xfc, 0x02, 0xfa, 0x94, 0x5d, 0x18, 0x29, 0xab, 0x86, 0x14, 0x83,
|
||||
0x1d, 0x39, 0x80, 0x3a, 0x24, 0x67, 0x3f, 0x0e, 0x40, 0x04, 0x59, 0x49, 0x88, 0xc6, 0x9e, 0x35,
|
||||
0x0e, 0xe4, 0xdf, 0x1c, 0xff, 0x8c, 0x7a, 0xb1, 0x31, 0x0e, 0xee, 0xa8, 0x97, 0x51, 0xc7, 0xa5,
|
||||
0x86, 0x2a, 0xae, 0xf9, 0xd1, 0x91, 0x42, 0xc7, 0x1e, 0x8e, 0x7d, 0xd0, 0x0d, 0x6f, 0x34, 0x70,
|
||||
0x02, 0x0f, 0x14, 0xc0, 0xa9, 0xbb, 0x14, 0x32, 0xbc, 0x51, 0x4e, 0xcf, 0xba, 0xc2, 0x50, 0x15,
|
||||
0x8f, 0x8d, 0x55, 0x52, 0x2e, 0x55, 0x95, 0xf4, 0xeb, 0x2f, 0x9b, 0xe4, 0x7f, 0x35, 0xec, 0xf7,
|
||||
0xd7, 0xb0, 0x91, 0xf3, 0x64, 0x05, 0xfb, 0xf5, 0x62, 0xff, 0xb5, 0xfa, 0xf5, 0x3b, 0x68, 0x71,
|
||||
0x87, 0x66, 0xd1, 0x72, 0x42, 0xdd, 0xfd, 0x51, 0x00, 0xf1, 0x2e, 0xc7, 0x32, 0x44, 0x01, 0x14,
|
||||
0x47, 0x35, 0x44, 0xb3, 0x00, 0xb9, 0x12, 0x9c, 0xf8, 0xe8, 0x6a, 0x60, 0x73, 0x38, 0x19, 0x5c,
|
||||
0x22, 0xf0, 0xbb, 0x1c, 0xf1, 0x71, 0xf1, 0x0d, 0xca, 0x43, 0x8c, 0xf1, 0x3b, 0x0a, 0x77, 0x63,
|
||||
0x59, 0x4a, 0x5e, 0x9e, 0x5b, 0x5e, 0xc1, 0xd1, 0x23, 0x69, 0x00, 0x58, 0x3c, 0x04, 0x81, 0x21,
|
||||
0x63, 0xd4, 0x70, 0xa4, 0x1f, 0xb8, 0x06, 0xcc, 0xf2, 0xb9, 0x00, 0x4a, 0xc3, 0x71, 0x98, 0x52,
|
||||
0x35, 0xce, 0x4f, 0xf0, 0x1c, 0xa2, 0xc1, 0x00, 0x1a, 0xa7, 0xcb, 0x7d, 0xbe, 0x7a, 0xf2, 0xef,
|
||||
0x1b, 0x0f, 0x68, 0x5c, 0x79, 0x1e, 0xf0, 0x02, 0x92, 0x97, 0x18, 0x36, 0x1c, 0x53, 0x12, 0x33,
|
||||
0x20, 0x58, 0xc8, 0xb5, 0x18, 0xac, 0xff, 0x0e, 0x99, 0x8b, 0xab, 0x8a, 0x6d, 0x4a, 0x82, 0x82,
|
||||
0x2b, 0x20, 0x7d, 0x89, 0x11, 0x48, 0xab, 0x88, 0x52, 0x68, 0x3b, 0x03, 0x0d, 0xde, 0x31, 0x52,
|
||||
0x5c, 0x4a, 0xa0, 0x99, 0x25, 0xc3, 0x4b, 0xc4, 0x61, 0x64, 0x28, 0xee, 0x10, 0xc4, 0x0d, 0x08,
|
||||
0x33, 0x60, 0x33, 0xb2, 0x79, 0x0c, 0xef, 0x8a, 0x5b, 0xe2, 0x4a, 0xd0, 0x3d, 0x28, 0xc6, 0xe0,
|
||||
0x92, 0x92, 0x32, 0x9f, 0x58, 0xc0, 0x7c, 0x21, 0x56, 0x78, 0x9a, 0xdc, 0x4b, 0x97, 0x23, 0x19,
|
||||
0x05, 0x7a, 0x74, 0x08, 0x18, 0x4b, 0xf0, 0xc2, 0x27, 0xa0, 0xce, 0x88, 0x7a, 0x06, 0x4c, 0xba,
|
||||
0xc3, 0xa4, 0xfb, 0x54, 0xce, 0x5d, 0x87, 0x6f, 0x28, 0xf0, 0x0e, 0x08, 0xc0, 0x90, 0x48, 0xa4,
|
||||
0x47, 0x9e, 0x54, 0x01, 0x83, 0x31, 0x3f, 0x00, 0xf8, 0x3b, 0x59, 0x07, 0x6e, 0xa0, 0x6e, 0xc4,
|
||||
0x77, 0xe2, 0x48, 0x20, 0x1f, 0xc9, 0x50, 0x19, 0x57, 0x18, 0x26, 0x5d, 0x43, 0x17, 0xe8, 0xbe,
|
||||
0xf6, 0x1c, 0x6a, 0x32, 0x64, 0xd4, 0x03, 0x97, 0xc0, 0x8c, 0x98, 0x72, 0xea, 0xef, 0x5e, 0x02,
|
||||
0x7c, 0x20, 0x5f, 0x89, 0x57, 0x68, 0x48, 0xe9, 0x04, 0x3f, 0xf2, 0x70, 0x5c, 0x4b, 0xca, 0x85,
|
||||
0xd2, 0x80, 0x05, 0x3c, 0xe6, 0x57, 0xca, 0xb2, 0x19, 0xb5, 0x11, 0x3d, 0x87, 0x21, 0x3d, 0x87,
|
||||
0xfe, 0x95, 0x2b, 0xc3, 0xfe, 0x6b, 0xcf, 0x7b, 0x4f, 0xf8, 0x5f, 0x61, 0xc8, 0x11, 0x53, 0x1e,
|
||||
0x84, 0x97, 0x78, 0x46, 0x86, 0x88, 0xe2, 0x31, 0x8f, 0x23, 0x9f, 0x99, 0x0c, 0xba, 0xff, 0x8d,
|
||||
0xa2, 0x37, 0xab, 0xac, 0x5a, 0x1a, 0x6a, 0x69, 0x6d, 0x70, 0xa9, 0x44, 0x58, 0x8a, 0x14, 0xf2,
|
||||
0xbd, 0x52, 0xb2, 0xbe, 0xac, 0xa4, 0x1f, 0x12, 0x78, 0xa5, 0x13, 0x35, 0x5d, 0xd1, 0xfa, 0x73,
|
||||
0x45, 0x22, 0xbf, 0xac, 0x34, 0x00, 0xa8, 0xc1, 0xad, 0x49, 0xc5, 0x78, 0x03, 0x1a, 0x46, 0x03,
|
||||
0x52, 0xbf, 0x81, 0x4b, 0x1a, 0x4b, 0x98, 0x41, 0x15, 0x43, 0x4e, 0x90, 0x86, 0xf4, 0xec, 0xf2,
|
||||
0x33, 0xa5, 0x2a, 0x78, 0xbe, 0x2a, 0x2d, 0xe0, 0xb2, 0x6e, 0x16, 0xc8, 0x47, 0xb5, 0xb5, 0x54,
|
||||
0x26, 0xa4, 0xad, 0xea, 0x4a, 0xdb, 0xd9, 0x65, 0x65, 0x7a, 0xda, 0x18, 0xa5, 0x69, 0xa2, 0x32,
|
||||
0x94, 0xa6, 0x33, 0xa4, 0x39, 0x8a, 0xcb, 0x92, 0xae, 0xf0, 0x7a, 0xba, 0xb6, 0xc2, 0x75, 0x0c,
|
||||
0x88, 0xcf, 0x01, 0x68, 0x61, 0x55, 0xa5, 0x0c, 0x96, 0x1f, 0x3c, 0xf5, 0xc0, 0xe5, 0x21, 0xab,
|
||||
0xa3, 0xcf, 0x63, 0x05, 0x6c, 0xa4, 0x94, 0xd5, 0x33, 0x4c, 0x9f, 0x90, 0xa1, 0x51, 0x78, 0x96,
|
||||
0xe0, 0xb1, 0x94, 0xb5, 0xae, 0x7a, 0x04, 0xe0, 0x8a, 0xf6, 0x45, 0x03, 0xca, 0x96, 0x70, 0x65,
|
||||
0x4d, 0x7b, 0xef, 0x79, 0x57, 0x5c, 0x55, 0x89, 0x93, 0x16, 0x65, 0x1a, 0xb2, 0x1c, 0x9a, 0xe3,
|
||||
0xd7, 0xc3, 0xf7, 0xc3, 0xd7, 0xa4, 0xf1, 0x9e, 0xe9, 0x8e, 0x5f, 0xfa, 0x26, 0xa7, 0x84, 0x26,
|
||||
0x78, 0x85, 0xfc, 0xab, 0xf6, 0x4a, 0xd5, 0x7e, 0xfd, 0x7d, 0x78, 0x58, 0x0f, 0xfb, 0x0d, 0x4d,
|
||||
0xff, 0xf5, 0xf0, 0x12, 0x4c, 0x1d, 0xa3, 0x06, 0xb5, 0x30, 0x4a, 0xdf, 0x1c, 0xbe, 0x07, 0x64,
|
||||
0xcf, 0xe4, 0x44, 0xd9, 0x44, 0xe4, 0x34, 0x3d, 0xf7, 0x75, 0xa3, 0xc4, 0x73, 0xd1, 0xf9, 0x7d,
|
||||
0x78, 0x45, 0xdd, 0x2b, 0x6c, 0xd5, 0x72, 0x58, 0x53, 0xf9, 0xcc, 0x01, 0xf9, 0x27, 0xd7, 0x64,
|
||||
0x16, 0xe1, 0x46, 0xc2, 0x04, 0xdf, 0xcc, 0xc0, 0xf6, 0x49, 0xab, 0x43, 0x93, 0xa4, 0xc0, 0x0f,
|
||||
0x52, 0xa3, 0xa9, 0x8e, 0x2e, 0x64, 0xc9, 0x23, 0x93, 0x8c, 0x8f, 0x38, 0xec, 0x9b, 0x68, 0xc2,
|
||||
0xb3, 0x9c, 0x31, 0x95, 0x41, 0x79, 0xa1, 0x10, 0xd4, 0x8e, 0x04, 0x01, 0xb0, 0x2e, 0xab, 0xc4,
|
||||
0x80, 0x6a, 0x43, 0x29, 0x74, 0x90, 0x87, 0x0b, 0x6b, 0xab, 0x49, 0x19, 0xb6, 0x21, 0x9f, 0x1c,
|
||||
0x6a, 0x47, 0xb5, 0xa1, 0x1d, 0xd2, 0x10, 0xae, 0xa9, 0xb4, 0x6a, 0x68, 0x92, 0x9c, 0x4c, 0x48,
|
||||
0x04, 0xea, 0x71, 0x15, 0x9a, 0x30, 0x3b, 0x68, 0x83, 0x89, 0x97, 0xf7, 0x83, 0x37, 0x40, 0x56,
|
||||
0x22, 0xe5, 0x13, 0x9e, 0x34, 0x25, 0xa3, 0xec, 0x97, 0x26, 0x02, 0x80, 0x33, 0x26, 0xc5, 0x24,
|
||||
0x32, 0xc8, 0x63, 0xa2, 0xd8, 0x26, 0x3b, 0x1b, 0x13, 0x39, 0x64, 0x51, 0x23, 0x89, 0xc7, 0x88,
|
||||
0x7a, 0xc0, 0xcc, 0x69, 0xc6, 0x4b, 0xa0, 0x48, 0xb7, 0x99, 0xd0, 0xc1, 0x15, 0x53, 0x34, 0xb8,
|
||||
0x24, 0x62, 0xc9, 0xae, 0x88, 0x96, 0x81, 0xa1, 0x47, 0xac, 0xb8, 0xfb, 0xea, 0x41, 0xb4, 0xcd,
|
||||
0xda, 0x1e, 0xce, 0xa1, 0x59, 0x34, 0xab, 0x84, 0xfb, 0x22, 0xaf, 0x89, 0x90, 0x4b, 0x93, 0xbc,
|
||||
0x21, 0x66, 0x32, 0x2e, 0x4f, 0x9c, 0xc9, 0xa3, 0x0f, 0x82, 0x04, 0xfa, 0x4c, 0x93, 0x28, 0x27,
|
||||
0x98, 0x63, 0xde, 0x48, 0xd3, 0x01, 0xe8, 0x19, 0x26, 0x0f, 0x63, 0x8b, 0x15, 0x13, 0x0c, 0x1c,
|
||||
0xd1, 0x17, 0xb0, 0x10, 0x08, 0x4d, 0x5e, 0x08, 0x09, 0xf4, 0xc6, 0xb4, 0x96, 0xf4, 0x15, 0x21,
|
||||
0x9f, 0x0b, 0x79, 0xfe, 0x02, 0xfd, 0xc7, 0x9c, 0x3f, 0x40, 0xdb, 0x30, 0xf1, 0xc8, 0xa2, 0xe9,
|
||||
0x32, 0x87, 0xc7, 0xc4, 0x78, 0x60, 0x7e, 0xa0, 0x47, 0xa4, 0x99, 0xd7, 0xe0, 0xf3, 0x1b, 0x8f,
|
||||
0xbc, 0x28, 0xa0, 0x07, 0x73, 0x4c, 0xa9, 0xc6, 0x34, 0xb2, 0x4d, 0x73, 0x76, 0xdb, 0xf1, 0x78,
|
||||
0x0a, 0x33, 0x70, 0x69, 0x3e, 0x4f, 0x53, 0xa2, 0x71, 0x78, 0xc9, 0x28, 0x86, 0x6a, 0x5a, 0x49,
|
||||
0x86, 0x4d, 0xe1, 0x8d, 0x27, 0x67, 0x06, 0x4d, 0xe1, 0xc8, 0x92, 0xe0, 0x0b, 0xd0, 0x58, 0x45,
|
||||
0x8d, 0xb9, 0x2b, 0x67, 0xb5, 0x34, 0x57, 0x04, 0x58, 0xf2, 0x54, 0x20, 0x78, 0xe4, 0x25, 0x14,
|
||||
0x12, 0xa9, 0x8b, 0x37, 0x97, 0x63, 0xf2, 0x78, 0xf2, 0x4e, 0x93, 0x4d, 0x43, 0xa1, 0x21, 0xf9,
|
||||
0x40, 0x98, 0x58, 0x54, 0x81, 0xd8, 0x0d, 0x8b, 0x2e, 0x71, 0xb5, 0x54, 0xb5, 0xaf, 0x1e, 0x10,
|
||||
0x77, 0x9d, 0xcf, 0x6f, 0x64, 0x0c, 0x1e, 0xce, 0x2d, 0xc9, 0x75, 0x6b, 0x68, 0x11, 0xd7, 0x71,
|
||||
0xa3, 0x0c, 0x0d, 0x58, 0x13, 0x1f, 0x81, 0x96, 0x64, 0xac, 0x3b, 0x48, 0x5c, 0x5e, 0x65, 0xc0,
|
||||
0x05, 0x30, 0x1d, 0xe6, 0x32, 0x88, 0xc4, 0xc4, 0x9d, 0x6f, 0xbc, 0xf4, 0xe0, 0xb2, 0x07, 0x21,
|
||||
0x27, 0xeb, 0xf3, 0x1f, 0xdb, 0x63, 0x0c, 0x47, 0xdc, 0x9e, 0x26, 0xb0, 0x0e, 0x8c, 0x0c, 0xa8,
|
||||
0x91, 0xf5, 0xcc, 0x69, 0x69, 0x03, 0xa1, 0x83, 0xbe, 0x00, 0x86, 0x92, 0xf3, 0x10, 0xf6, 0xf0,
|
||||
0xf3, 0x9a, 0x39, 0x80, 0x0a, 0x1f, 0x0d, 0xdc, 0x21, 0x21, 0x4b, 0x12, 0x1b, 0x5a, 0x4a, 0xc0,
|
||||
0x01, 0x4f, 0xf8, 0x07, 0x89, 0x27, 0xd7, 0x0e, 0x82, 0xc1, 0xe7, 0x52, 0xa5, 0x7e, 0x4c, 0x5b,
|
||||
0x4a, 0x05, 0xeb, 0x5e, 0x79, 0x83, 0x3b, 0x6f, 0xf0, 0xda, 0x79, 0xef, 0x7c, 0x56, 0x0b, 0x92,
|
||||
0x3d, 0x5a, 0x91, 0xac, 0xe7, 0x82, 0xc4, 0x07, 0x8a, 0xb5, 0xb4, 0xf0, 0xa1, 0xa4, 0x13, 0x72,
|
||||
0x74, 0x84, 0x64, 0xe6, 0xb4, 0x28, 0x40, 0xc2, 0x18, 0x1b, 0x24, 0x4e, 0x98, 0x22, 0xa5, 0xa6,
|
||||
0xc3, 0x1c, 0x9a, 0x13, 0x42, 0x75, 0x48, 0xb1, 0x28, 0xf9, 0x1a, 0x92, 0x56, 0x85, 0xbe, 0x45,
|
||||
0x0d, 0x2d, 0xca, 0xee, 0x80, 0x37, 0x97, 0x4b, 0x26, 0x87, 0x1d, 0x2c, 0xce, 0xe5, 0x83, 0x41,
|
||||
0xdc, 0xae, 0xd4, 0xdd, 0x92, 0x0f, 0x54, 0x86, 0x0c, 0xce, 0x1a, 0x11, 0xdc, 0x80, 0x3a, 0xfa,
|
||||
0xcc, 0x56, 0xdc, 0xfc, 0xbc, 0xc6, 0x5f, 0xdf, 0x92, 0x2f, 0x96, 0x7c, 0xb0, 0xe8, 0xc1, 0xff,
|
||||
0xac, 0xa7, 0xaa, 0x97, 0xe5, 0xd2, 0x9d, 0x66, 0x0a, 0x9f, 0x63, 0xcc, 0x6e, 0x13, 0x31, 0xeb,
|
||||
0x89, 0x3b, 0xb1, 0x49, 0x17, 0x0b, 0x3a, 0xf6, 0x15, 0x6f, 0xdb, 0x65, 0xcc, 0x15, 0x38, 0x07,
|
||||
0x27, 0xa4, 0x49, 0x35, 0xdd, 0x5c, 0x72, 0x7b, 0xce, 0x38, 0x64, 0xf1, 0xba, 0xc1, 0x90, 0x23,
|
||||
0x35, 0xbf, 0xc3, 0xa5, 0x8c, 0xfc, 0x01, 0x85, 0x43, 0xd5, 0x01, 0x9e, 0x6d, 0xec, 0x8d, 0xc6,
|
||||
0x1c, 0x32, 0xd0, 0x34, 0x30, 0x2c, 0x87, 0x5b, 0xfa, 0xae, 0x0c, 0x73, 0x68, 0xdd, 0x2a, 0x42,
|
||||
0xfb, 0x71, 0xd9, 0xed, 0x2a, 0xa4, 0xb8, 0x3e, 0x1a, 0x86, 0x14, 0xd2, 0x79, 0xe8, 0x1a, 0x44,
|
||||
0x35, 0x76, 0xad, 0x7b, 0x39, 0x7c, 0xa3, 0x4c, 0xb6, 0xaf, 0x3a, 0x3e, 0xd2, 0x41, 0xc3, 0x2d,
|
||||
0x3b, 0xaa, 0x91, 0xaf, 0x14, 0x26, 0x46, 0x78, 0x55, 0x55, 0x49, 0x7c, 0x2f, 0x1f, 0xa1, 0x4a,
|
||||
0xd1, 0x5e, 0x75, 0x93, 0xdc, 0xb9, 0xac, 0xd8, 0x75, 0x84, 0x9f, 0x9a, 0x68, 0xd5, 0xe1, 0x8a,
|
||||
0x7c, 0xec, 0xc0, 0x1d, 0xc8, 0xac, 0x93, 0x39, 0xa5, 0x41, 0xe9, 0x61, 0xcb, 0x9e, 0x6a, 0xcc,
|
||||
0xda, 0xbb, 0x94, 0xa0, 0x6e, 0x7f, 0xac, 0x9d, 0x86, 0xa3, 0xdb, 0xcb, 0x71, 0xae, 0xd4, 0xb8,
|
||||
0x20, 0xbe, 0xa5, 0x0b, 0x7f, 0xd3, 0xa6, 0x74, 0x9d, 0x44, 0xb4, 0x63, 0x0b, 0x7d, 0x9b, 0xde,
|
||||
0x45, 0x19, 0x9d, 0x47, 0x8a, 0xd3, 0x4d, 0x3e, 0xdb, 0xed, 0xcd, 0xaf, 0x66, 0xcb, 0xdb, 0x0d,
|
||||
0x9f, 0xbd, 0x3d, 0x13, 0xfd, 0x5d, 0x26, 0x8a, 0xdb, 0x6c, 0x63, 0x2c, 0xd2, 0xf9, 0xed, 0x5a,
|
||||
0x6c, 0x0a, 0xfb, 0x46, 0x14, 0xaf, 0x12, 0x41, 0x8f, 0x7f, 0x7a, 0xf8, 0x61, 0x81, 0x16, 0xfb,
|
||||
0xa9, 0x6e, 0x6e, 0xd0, 0x71, 0x86, 0xd7, 0xf1, 0x42, 0xe8, 0x23, 0x23, 0x67, 0xfd, 0x1d, 0xc1,
|
||||
0x16, 0xb3, 0xaf, 0xce, 0xaa, 0x3d, 0xf7, 0xfe, 0x94, 0xce, 0x96, 0x35, 0x96, 0xa5, 0x7b, 0x2a,
|
||||
0x5e, 0x7f, 0xd1, 0x33, 0x7b, 0x74, 0x54, 0xe8, 0xd5, 0xbb, 0xb7, 0x86, 0xda, 0x23, 0x13, 0x0b,
|
||||
0xdb, 0x78, 0x9b, 0xd0, 0x97, 0x82, 0xc6, 0x7d, 0x14, 0x17, 0x46, 0x64, 0x24, 0x71, 0x51, 0x24,
|
||||
0x82, 0x4f, 0x97, 0x16, 0x2b, 0xb1, 0xa1, 0xf3, 0x6a, 0x74, 0x62, 0xb1, 0x58, 0xc5, 0xb9, 0xb1,
|
||||
0x05, 0x34, 0x9b, 0x20, 0xf4, 0xfa, 0x66, 0x35, 0xe2, 0x6c, 0x36, 0x13, 0x36, 0x6d, 0x5c, 0x7f,
|
||||
0x7b, 0x26, 0xef, 0xb3, 0x1e, 0x9d, 0xca, 0xe9, 0x99, 0x40, 0xab, 0x3c, 0x42, 0xd2, 0xeb, 0xdb,
|
||||
0xbc, 0x86, 0x7e, 0x15, 0xe7, 0x85, 0x9d, 0x89, 0x75, 0x7a, 0x07, 0xbc, 0x6a, 0xe7, 0x4d, 0xfa,
|
||||
0xd4, 0xba, 0x3c, 0xa1, 0xd1, 0x68, 0x1d, 0x2d, 0x16, 0xcd, 0xa6, 0xfd, 0x49, 0x39, 0x50, 0x89,
|
||||
0xc4, 0xf1, 0xc1, 0x0e, 0xba, 0x1f, 0x1f, 0xa9, 0x0b, 0xaf, 0xfe, 0xbe, 0xe4, 0x3f, 0x64, 0x43,
|
||||
0x7b, 0xce, 0xd4, 0x14, 0xac, 0x07, 0x14, 0xb9, 0xc1, 0xd5, 0x09, 0x82, 0x77, 0x23, 0xfa, 0x53,
|
||||
0x29, 0x9f, 0x8d, 0xb8, 0x37, 0xfe, 0xf2, 0xe7, 0xab, 0xb3, 0xbf, 0xaf, 0x8a, 0x62, 0x3b, 0x39,
|
||||
0x3f, 0xff, 0x6a, 0x77, 0x1f, 0x6f, 0x16, 0xe9, 0xbd, 0x9d, 0xa4, 0x73, 0xde, 0x81, 0xb3, 0x57,
|
||||
0x69, 0x5e, 0xd0, 0xa6, 0xee, 0xfe, 0x9c, 0x76, 0xcb, 0xff, 0xde, 0x9f, 0x2e, 0xe9, 0x1b, 0x25,
|
||||
0x88, 0xdf, 0x26, 0x21, 0x9c, 0x9d, 0x89, 0xd9, 0x85, 0xb0, 0xff, 0x91, 0x43, 0x67, 0xfa, 0xfd,
|
||||
0x5a, 0xd9, 0x8e, 0x8e, 0x8c, 0xfd, 0x35, 0x5e, 0xc6, 0x3f, 0xaa, 0x6d, 0x70, 0xf4, 0x30, 0xbb,
|
||||
0x11, 0x63, 0x36, 0x48, 0xac, 0xf6, 0x75, 0xa2, 0xe4, 0x47, 0x99, 0x04, 0x83, 0xd4, 0xb1, 0xc8,
|
||||
0x1e, 0x88, 0x30, 0x59, 0x68, 0xf5, 0x9e, 0x83, 0xcf, 0x7c, 0x7a, 0xd1, 0x96, 0x5f, 0x64, 0xff,
|
||||
0x98, 0x2e, 0x84, 0x1d, 0x2f, 0x00, 0x57, 0x9e, 0x44, 0x98, 0x7d, 0xe1, 0xec, 0x41, 0x01, 0x30,
|
||||
0x2d, 0x88, 0x21, 0x65, 0xeb, 0x56, 0x13, 0x82, 0x48, 0xc7, 0xae, 0xfa, 0xf6, 0x5d, 0x94, 0xdc,
|
||||
0x8a, 0x19, 0x29, 0x93, 0x3d, 0x17, 0x49, 0x92, 0xff, 0xe2, 0x7e, 0xb0, 0x63, 0xcc, 0x64, 0xb2,
|
||||
0xd7, 0x3f, 0xbf, 0xb9, 0x32, 0x55, 0x3b, 0xde, 0xde, 0x46, 0xe3, 0xb2, 0xe2, 0x54, 0x87, 0x4a,
|
||||
0xf1, 0x6d, 0xfe, 0xb0, 0xf4, 0xac, 0x46, 0x5b, 0x07, 0x77, 0x76, 0x72, 0xcd, 0xb3, 0x98, 0x95,
|
||||
0x16, 0xf7, 0xdf, 0xb7, 0x22, 0x7b, 0x78, 0xc7, 0x04, 0xa7, 0xd9, 0x59, 0xef, 0xcb, 0xf2, 0x28,
|
||||
0x1e, 0xc4, 0x57, 0xd4, 0x70, 0xe8, 0xf5, 0x4c, 0x41, 0xe7, 0xa0, 0x5f, 0x45, 0x20, 0x17, 0xdc,
|
||||
0x37, 0xf3, 0x3e, 0x04, 0x40, 0x02, 0x8e, 0x2a, 0x60, 0xf3, 0x4c, 0x44, 0x85, 0x50, 0x16, 0x7c,
|
||||
0xd6, 0x2b, 0x20, 0x03, 0x73, 0xa3, 0xce, 0xa7, 0xf6, 0x9e, 0xe7, 0xd3, 0xc8, 0xa6, 0x43, 0xbb,
|
||||
0x66, 0x44, 0xe2, 0x78, 0x85, 0x98, 0x52, 0x5c, 0xf1, 0xc1, 0x0f, 0x81, 0x81, 0x79, 0x53, 0xa9,
|
||||
0x67, 0x56, 0xf2, 0xe8, 0xa3, 0x59, 0x35, 0xfc, 0xdf, 0x5f, 0x14, 0x8b, 0x8b, 0xfa, 0x61, 0x9f,
|
||||
0x1e, 0x7d, 0x33, 0x92, 0xaa, 0x5f, 0xec, 0x51, 0x12, 0x53, 0x47, 0xdc, 0xa4, 0xf4, 0xbe, 0xda,
|
||||
0x6d, 0xf6, 0xb4, 0x25, 0x8c, 0x7e, 0x7f, 0xaf, 0x83, 0x7a, 0xce, 0xb0, 0xca, 0xc3, 0x70, 0xaa,
|
||||
0xdd, 0x57, 0x3b, 0x61, 0xd3, 0xeb, 0xbe, 0xab, 0xc3, 0x33, 0xea, 0xa0, 0xf6, 0xc0, 0xca, 0xd3,
|
||||
0xe9, 0xbd, 0x8b, 0x67, 0xd0, 0x0f, 0xfa, 0x9c, 0x6e, 0x73, 0x53, 0xac, 0x9e, 0x23, 0x36, 0xfe,
|
||||
0x69, 0xcd, 0x9d, 0x89, 0x51, 0xb9, 0x80, 0x05, 0xc5, 0xc5, 0xc3, 0xb7, 0x0d, 0x38, 0x3d, 0x22,
|
||||
0x02, 0x7c, 0x90, 0x8b, 0xc5, 0xcf, 0x7b, 0xb2, 0xf9, 0xe4, 0x48, 0x1b, 0xb9, 0xe0, 0xa7, 0x5b,
|
||||
0x99, 0xd0, 0xe1, 0x2d, 0x5c, 0xdb, 0xe2, 0x72, 0x15, 0x27, 0x8b, 0xb3, 0x88, 0xd4, 0x98, 0x14,
|
||||
0xa0, 0x3a, 0x95, 0x79, 0xc2, 0x10, 0x1b, 0x46, 0xfc, 0x96, 0x36, 0xe4, 0x45, 0x21, 0xb2, 0xfc,
|
||||
0xf7, 0x33, 0x63, 0xb9, 0xc1, 0xce, 0x26, 0xfb, 0x74, 0x6b, 0xfe, 0x89, 0x3f, 0x47, 0xb1, 0x3f,
|
||||
0x8a, 0x07, 0x52, 0xd5, 0x4a, 0xd9, 0xca, 0x80, 0x01, 0x2b, 0x2b, 0x6c, 0x76, 0xdc, 0xf9, 0x5f,
|
||||
0xe3, 0x62, 0x75, 0x26, 0x0f, 0xa9, 0x4b, 0x73, 0xf9, 0xe6, 0x9b, 0x33, 0xd0, 0x52, 0x1e, 0x08,
|
||||
0x6f, 0xd8, 0x8f, 0xf8, 0xa5, 0xf8, 0x60, 0x2e, 0x04, 0x1d, 0xdf, 0x32, 0xe8, 0xb9, 0x6f, 0x76,
|
||||
0x80, 0x01, 0xc7, 0x35, 0x14, 0x7d, 0x7e, 0xfd, 0x11, 0x20, 0x4f, 0xf1, 0x34, 0x26, 0x99, 0x52,
|
||||
0x8d, 0xe3, 0x3a, 0x12, 0xc2, 0x51, 0xa9, 0xc7, 0x5f, 0xaa, 0xa3, 0xf6, 0x96, 0xfc, 0x7a, 0xa8,
|
||||
0xf7, 0x01, 0x68, 0xe8, 0xdd, 0xce, 0x9e, 0xf4, 0xed, 0x5d, 0x18, 0x3d, 0x7b, 0x11, 0xaf, 0xf5,
|
||||
0xb9, 0x3c, 0x3e, 0x04, 0x9f, 0x67, 0xf3, 0x59, 0xef, 0xd9, 0xf3, 0x13, 0x80, 0x9f, 0x3f, 0xe3,
|
||||
0x1c, 0xb0, 0x09, 0x31, 0x17, 0xc5, 0xcb, 0xa2, 0xc8, 0xe2, 0xeb, 0xdb, 0x02, 0x32, 0xe7, 0xad,
|
||||
0x71, 0x84, 0xca, 0x9e, 0x22, 0x50, 0x7f, 0x06, 0x70, 0xd0, 0x0e, 0x56, 0x88, 0x66, 0xf2, 0xd7,
|
||||
0x05, 0x28, 0x50, 0xd4, 0xdd, 0xaa, 0x74, 0x04, 0x3f, 0xf2, 0xb2, 0x34, 0x7c, 0x45, 0x21, 0x43,
|
||||
0x75, 0x7e, 0xd4, 0x53, 0x2c, 0xe2, 0x3b, 0xe8, 0x59, 0xde, 0x1a, 0x02, 0x3e, 0xd3, 0xec, 0x49,
|
||||
0x6a, 0xf8, 0x38, 0xf3, 0x73, 0x70, 0x2d, 0x6f, 0xb3, 0x7a, 0x5e, 0x6c, 0x64, 0x2b, 0x6e, 0x62,
|
||||
0xd6, 0x75, 0xf6, 0xb8, 0x67, 0x5a, 0x79, 0x68, 0x12, 0x1d, 0x48, 0x4d, 0x9f, 0x8a, 0xee, 0x35,
|
||||
0x9d, 0x4f, 0x81, 0x51, 0x9b, 0xc6, 0xc7, 0xe0, 0x37, 0x47, 0xc1, 0xd3, 0x31, 0x3e, 0x0c, 0xb0,
|
||||
0x69, 0x0f, 0x20, 0xcb, 0x5b, 0xd0, 0x36, 0xcc, 0x68, 0xfd, 0x69, 0x07, 0xf8, 0x5c, 0xaf, 0xcc,
|
||||
0xe5, 0x50, 0xf1, 0xd1, 0xa1, 0x22, 0x8c, 0xa3, 0xb2, 0xa8, 0xb8, 0x8b, 0x7d, 0xf4, 0x11, 0x01,
|
||||
0x98, 0xc3, 0xbc, 0x6b, 0x37, 0xd0, 0x5f, 0x10, 0x1c, 0x72, 0x39, 0x6e, 0x63, 0x2e, 0x8f, 0xdd,
|
||||
0xf7, 0xa8, 0xa6, 0xce, 0x97, 0xf8, 0x84, 0x27, 0xe7, 0xd3, 0x77, 0x6f, 0x91, 0x33, 0x31, 0x7d,
|
||||
0xe5, 0x27, 0x0f, 0x4d, 0xfa, 0xe0, 0xe6, 0x37, 0xcd, 0x88, 0x55, 0x33, 0x16, 0x21, 0xd5, 0x06,
|
||||
0xec, 0x9f, 0x36, 0x7d, 0xc3, 0x2f, 0xce, 0x87, 0x86, 0x01, 0xf3, 0x19, 0x23, 0xc9, 0xbd, 0x7f,
|
||||
0xfe, 0x13, 0xbe, 0x64, 0x57, 0x95, 0xb8, 0xbd, 0x49, 0xef, 0x27, 0x69, 0x10, 0x3d, 0xd3, 0xb6,
|
||||
0x6d, 0xb1, 0x37, 0x6b, 0x36, 0xa8, 0xc0, 0x02, 0xff, 0x2c, 0x16, 0x4d, 0xaf, 0x73, 0xf6, 0x8b,
|
||||
0x30, 0xa3, 0x0f, 0xe6, 0x86, 0xc2, 0x5c, 0xbc, 0x3c, 0x13, 0x8d, 0x01, 0x6b, 0x7e, 0xa6, 0x7f,
|
||||
0xd4, 0xed, 0x44, 0x53, 0x91, 0x20, 0xb3, 0x44, 0xe7, 0x2f, 0xc4, 0xa1, 0xbf, 0x91, 0x46, 0xd5,
|
||||
0x3f, 0x00, 0x5d, 0xa3, 0xa5, 0x9f, 0xcf, 0x1a, 0x86, 0x84, 0xc8, 0xd9, 0x67, 0x98, 0x87, 0x08,
|
||||
0x65, 0xd1, 0xbd, 0x35, 0xa7, 0x7c, 0x4e, 0xb2, 0xec, 0xb8, 0xbe, 0xf0, 0x27, 0x10, 0x75, 0x9d,
|
||||
0xa9, 0xe1, 0x6b, 0x83, 0x0b, 0xeb, 0xb3, 0xbe, 0x79, 0x97, 0xc6, 0x8b, 0x2a, 0x27, 0xa7, 0x33,
|
||||
0x2c, 0x2d, 0x99, 0xed, 0x3b, 0xc7, 0xff, 0x47, 0x74, 0x17, 0xc9, 0xb3, 0x1a, 0x1a, 0x8d, 0xf4,
|
||||
0x38, 0x1a, 0xaa, 0x9d, 0xc6, 0x23, 0xfd, 0x17, 0xf0, 0x48, 0x8f, 0xe0, 0x41, 0xbf, 0xf1, 0x03,
|
||||
0x0c, 0xe8, 0x56, 0xc1, 0x3a, 0x2b, 0x4e, 0x3b, 0x9f, 0xb6, 0x7b, 0x63, 0xe3, 0xc9, 0xd2, 0xfb,
|
||||
0xde, 0xf3, 0x8d, 0x0c, 0x17, 0x60, 0x9b, 0x2d, 0x0f, 0x9d, 0xf4, 0xe8, 0x83, 0x2e, 0x0a, 0xc8,
|
||||
0x15, 0xca, 0x34, 0x56, 0xcb, 0xac, 0x0b, 0x25, 0x2a, 0x04, 0x0c, 0x78, 0x8a, 0xc8, 0x3c, 0x2e,
|
||||
0x12, 0x3e, 0x0b, 0x08, 0x56, 0x80, 0x98, 0x13, 0x58, 0x72, 0xee, 0xd3, 0x8d, 0xa7, 0x60, 0x0c,
|
||||
0xbb, 0xbc, 0x33, 0xcf, 0x44, 0x30, 0x5b, 0xb9, 0x4e, 0x53, 0x4c, 0x73, 0x36, 0x98, 0xac, 0x50,
|
||||
0x45, 0xba, 0x34, 0x36, 0x1c, 0x4a, 0xbb, 0xba, 0xe8, 0xe3, 0xb7, 0x3d, 0x02, 0xda, 0xf2, 0x02,
|
||||
0xfa, 0x28, 0xae, 0xf4, 0xb7, 0x0a, 0x23, 0x6a, 0xa6, 0x92, 0xdd, 0xcd, 0xa1, 0xe3, 0xa8, 0x1d,
|
||||
0xf6, 0x27, 0x7c, 0xe4, 0x21, 0xc9, 0xfe, 0x94, 0xb8, 0x72, 0xdc, 0x3d, 0xcb, 0x70, 0x70, 0xe0,
|
||||
0x9f, 0x1b, 0xe7, 0x7a, 0x15, 0x90, 0x13, 0x2a, 0xb6, 0x05, 0xc1, 0x98, 0x0f, 0x1e, 0x81, 0xa2,
|
||||
0xb8, 0x6e, 0xa6, 0x36, 0x31, 0xe9, 0x52, 0xfd, 0x4c, 0xa4, 0x20, 0x97, 0xd6, 0x90, 0x62, 0xab,
|
||||
0x20, 0x6a, 0x17, 0xa4, 0x6d, 0x7f, 0x4e, 0x99, 0xeb, 0x62, 0xf1, 0x03, 0xd1, 0x5d, 0x3a, 0xc5,
|
||||
0xa2, 0xbf, 0xd7, 0x76, 0x5b, 0xa8, 0x59, 0xc0, 0xe6, 0x90, 0xbd, 0x75, 0xa6, 0xb6, 0x7d, 0x35,
|
||||
0xa3, 0x6b, 0xc1, 0x3b, 0xb1, 0xb8, 0x4f, 0xb2, 0x99, 0xaa, 0x9b, 0x34, 0xe9, 0x28, 0x5d, 0x89,
|
||||
0xff, 0x9b, 0x6f, 0x8e, 0x88, 0x5f, 0xc7, 0x73, 0x88, 0x98, 0x7d, 0x63, 0x5d, 0x65, 0x80, 0xfd,
|
||||
0x46, 0x62, 0x9f, 0xf7, 0x4f, 0x68, 0xaa, 0x4a, 0xc6, 0x8f, 0xa9, 0xaa, 0x06, 0x51, 0xb9, 0x5a,
|
||||
0xa1, 0x66, 0x12, 0xc7, 0xf3, 0x03, 0xe9, 0xb2, 0x39, 0x45, 0x68, 0x52, 0x96, 0x2b, 0x6e, 0x8a,
|
||||
0x56, 0x7e, 0x9c, 0x73, 0xf2, 0x55, 0xf2, 0xda, 0x96, 0x38, 0x89, 0xc5, 0x11, 0x23, 0xa5, 0xd1,
|
||||
0x17, 0xb3, 0x37, 0x51, 0xb1, 0xb2, 0xf9, 0x33, 0x5a, 0x4d, 0xe7, 0xbf, 0x9f, 0xb9, 0xe7, 0xe8,
|
||||
0x5c, 0x88, 0x6d, 0xbf, 0x7f, 0x5e, 0x3d, 0x4f, 0x1f, 0x63, 0x5e, 0xbb, 0x9e, 0x7a, 0xf5, 0x4c,
|
||||
0xd5, 0xfb, 0xa0, 0x76, 0x1d, 0x6f, 0xa8, 0x12, 0xb7, 0x8e, 0xba, 0xe8, 0x13, 0xd7, 0x45, 0x9f,
|
||||
0x2a, 0x72, 0x7e, 0xe4, 0x61, 0xce, 0x30, 0xcb, 0x2c, 0xd2, 0xef, 0xe3, 0x4f, 0x62, 0x71, 0xe6,
|
||||
0xf7, 0xf7, 0x1d, 0x3a, 0xc7, 0xa9, 0x43, 0xf6, 0x88, 0x95, 0x65, 0x07, 0xf6, 0x51, 0x7e, 0xdd,
|
||||
0x03, 0x42, 0xb2, 0xb6, 0x6a, 0x67, 0x6d, 0xf3, 0x68, 0x32, 0x34, 0xeb, 0xef, 0xf7, 0x02, 0xf1,
|
||||
0x74, 0xa1, 0xfc, 0xb1, 0xce, 0x3c, 0xfb, 0xa4, 0x70, 0xdd, 0x49, 0x72, 0x23, 0x71, 0x3c, 0xa0,
|
||||
0x02, 0x39, 0x80, 0x66, 0xeb, 0x17, 0xe5, 0x4a, 0x8b, 0xf4, 0x6b, 0xb5, 0xf7, 0xd2, 0x69, 0xd5,
|
||||
0xca, 0xd4, 0x3c, 0x90, 0x16, 0x75, 0xcb, 0xd2, 0x7f, 0xfe, 0x53, 0x74, 0x65, 0x2c, 0xab, 0x68,
|
||||
0x73, 0x03, 0xf9, 0xb1, 0x22, 0xea, 0xec, 0xb9, 0x36, 0x9b, 0xff, 0x50, 0xaa, 0xcf, 0xac, 0x2c,
|
||||
0x65, 0x49, 0x00, 0xf5, 0xc9, 0x49, 0x80, 0x67, 0xfd, 0x06, 0x44, 0x80, 0x02, 0x04, 0xe5, 0x2d,
|
||||
0xff, 0xb5, 0xce, 0xbf, 0x62, 0x5c, 0x0e, 0x8e, 0x37, 0x87, 0x7a, 0xa8, 0x82, 0x73, 0x31, 0xdb,
|
||||
0xed, 0xa7, 0x5a, 0xa5, 0x6a, 0xaa, 0x2f, 0x2a, 0xd5, 0x17, 0x35, 0xd5, 0x17, 0x95, 0xf2, 0xe2,
|
||||
0x3e, 0xeb, 0x86, 0x8c, 0x5a, 0x68, 0xf1, 0x41, 0x25, 0x29, 0x38, 0xd7, 0x45, 0x9f, 0x0e, 0xeb,
|
||||
0x22, 0x0a, 0x35, 0x4d, 0x32, 0x0b, 0xf6, 0x96, 0x46, 0xb3, 0x70, 0x4b, 0xbf, 0x02, 0xfc, 0x03,
|
||||
0x14, 0x57, 0x21, 0xd8, 0x5a, 0xc8, 0x89, 0xee, 0x44, 0x63, 0x66, 0x5b, 0x4d, 0x5a, 0xff, 0x94,
|
||||
0xa4, 0xd7, 0x67, 0xbf, 0xfc, 0x9f, 0x77, 0x3f, 0xfd, 0x48, 0xd3, 0x75, 0x24, 0xf8, 0xf1, 0xf2,
|
||||
0x41, 0x4f, 0xc4, 0xcc, 0xcd, 0x6d, 0x92, 0x98, 0x5e, 0xff, 0x83, 0xb9, 0x23, 0xfd, 0x98, 0xf4,
|
||||
0xa0, 0xcc, 0xc8, 0x5f, 0x79, 0x3e, 0x7b, 0x4e, 0x73, 0xd4, 0xde, 0x1e, 0x88, 0x33, 0x98, 0xef,
|
||||
0x91, 0xbc, 0x7f, 0x87, 0x8c, 0x79, 0xaa, 0x3d, 0x8d, 0x4c, 0xa0, 0xe1, 0xd3, 0xcc, 0x5e, 0x7d,
|
||||
0xc2, 0x0b, 0x6a, 0xe4, 0x84, 0xb7, 0xc7, 0xdf, 0xc9, 0xf6, 0xcc, 0x1d, 0x70, 0x5a, 0xa5, 0x8b,
|
||||
0x49, 0xef, 0xed, 0x4f, 0xef, 0x7e, 0xee, 0x99, 0x94, 0xc7, 0x4c, 0x8a, 0x7d, 0x63, 0x36, 0x4c,
|
||||
0xfa, 0xdc, 0x9a, 0x0d, 0x1f, 0xae, 0x63, 0xf2, 0xd1, 0xf5, 0x54, 0xe7, 0xb2, 0xbd, 0x77, 0xa2,
|
||||
0x28, 0x40, 0x4c, 0xce, 0xa4, 0x2f, 0x8c, 0xfc, 0x76, 0x3e, 0x47, 0xcb, 0x25, 0xe8, 0x79, 0x30,
|
||||
0xc0, 0x90, 0x25, 0x8c, 0x6d, 0x65, 0xac, 0x31, 0x93, 0xcf, 0x1e, 0xbe, 0xa0, 0x55, 0x4b, 0xb9,
|
||||
0x72, 0x49, 0x6e, 0x51, 0xa3, 0x47, 0x1d, 0x7b, 0x8f, 0xe1, 0x81, 0x0e, 0xb6, 0x5c, 0xe4, 0xd2,
|
||||
0xaf, 0x15, 0xd3, 0x17, 0xa9, 0xda, 0x88, 0xa7, 0xd9, 0x79, 0x9d, 0xe5, 0x25, 0xaf, 0x44, 0xc9,
|
||||
0x2b, 0x5e, 0x02, 0x33, 0x5b, 0x6b, 0x61, 0x7d, 0xb3, 0x6a, 0xd0, 0x58, 0xcc, 0xac, 0xad, 0x6b,
|
||||
0x1d, 0x36, 0x2c, 0x3f, 0x18, 0x92, 0x4d, 0xab, 0xd7, 0x72, 0xd9, 0x4d, 0xba, 0x3e, 0x68, 0x78,
|
||||
0x07, 0xeb, 0x85, 0x99, 0x09, 0xf9, 0x03, 0x10, 0x13, 0x4c, 0xc8, 0x92, 0x04, 0x39, 0xde, 0x7e,
|
||||
0xfa, 0x94, 0x75, 0x90, 0x92, 0x6f, 0xea, 0x73, 0x17, 0xa4, 0x80, 0x9a, 0x51, 0x1d, 0x6b, 0xda,
|
||||
0xb4, 0x4a, 0x72, 0x99, 0x2e, 0x10, 0x9a, 0x28, 0x41, 0x2d, 0x6e, 0x73, 0x53, 0xb3, 0x77, 0xdf,
|
||||
0xef, 0xea, 0xe6, 0x39, 0xce, 0x6c, 0x36, 0xd3, 0xbd, 0xbe, 0x3d, 0x14, 0xbf, 0x62, 0xb5, 0xa0,
|
||||
0xc4, 0x94, 0x3e, 0x70, 0xff, 0xf9, 0x87, 0xff, 0x30, 0xee, 0xe3, 0x24, 0xd1, 0x8b, 0xd9, 0xc6,
|
||||
0x26, 0xbd, 0xe7, 0x6f, 0x61, 0x8d, 0xff, 0xa4, 0x8f, 0xdd, 0x48, 0x0c, 0x3f, 0xbc, 0x35, 0xe2,
|
||||
0xdc, 0xa0, 0x19, 0xdd, 0xe4, 0x10, 0xde, 0xab, 0x2c, 0x4b, 0xb3, 0x72, 0x51, 0x9c, 0x5e, 0x48,
|
||||
0x6d, 0xe6, 0xa5, 0x40, 0x27, 0x00, 0x76, 0x81, 0xbe, 0xb4, 0x02, 0x75, 0x7d, 0x51, 0x69, 0xd0,
|
||||
0xaf, 0x5d, 0x61, 0x2d, 0xe7, 0x81, 0x44, 0x25, 0x7c, 0xd2, 0x57, 0x94, 0x82, 0xf1, 0x37, 0xf2,
|
||||
0x9d, 0xbc, 0xae, 0x7e, 0x35, 0x02, 0x43, 0x75, 0x2f, 0x53, 0xbe, 0x4c, 0x12, 0x9e, 0xf8, 0x36,
|
||||
0x33, 0x08, 0xd1, 0x01, 0x4c, 0x7d, 0x2b, 0xcf, 0x5a, 0x5f, 0xba, 0xee, 0xf6, 0xd4, 0x56, 0xb5,
|
||||
0x39, 0x35, 0x98, 0xad, 0xd7, 0x17, 0x4e, 0x8c, 0xd9, 0x5a, 0xf8, 0xa9, 0xad, 0x07, 0xdf, 0x74,
|
||||
0xcf, 0xba, 0xfb, 0x27, 0x54, 0xad, 0xa7, 0x3f, 0xfe, 0x47, 0xec, 0xaa, 0xaf, 0x2b, 0x2b, 0xcf,
|
||||
0xdd, 0x0a, 0xe9, 0xdf, 0xa9, 0xd7, 0xef, 0xb3, 0xe8, 0x86, 0x63, 0x7b, 0x7f, 0xda, 0x4c, 0x87,
|
||||
0xc0, 0x73, 0xf5, 0x61, 0x53, 0xef, 0xa9, 0xa8, 0xb5, 0xc2, 0x7c, 0x1d, 0xc2, 0xf1, 0x75, 0x46,
|
||||
0x76, 0xdb, 0x47, 0x9a, 0xd6, 0xf9, 0xd3, 0xd8, 0xd4, 0xa1, 0xe3, 0xb7, 0x72, 0x29, 0xb2, 0x4b,
|
||||
0x2f, 0xb8, 0x5b, 0x5d, 0x29, 0xf6, 0xc4, 0x02, 0xfe, 0xfa, 0xe0, 0x32, 0x4a, 0x12, 0xfa, 0xe9,
|
||||
0x93, 0x6a, 0x4b, 0xa9, 0xbf, 0xab, 0x6d, 0x18, 0x1d, 0xa8, 0x3c, 0x92, 0x44, 0x33, 0xe7, 0x81,
|
||||
0x1a, 0xdf, 0x81, 0x34, 0x97, 0xf9, 0xcc, 0x5a, 0x35, 0xf9, 0x8b, 0xe6, 0x4a, 0x3c, 0xd7, 0xd6,
|
||||
0xbf, 0xd7, 0x41, 0x35, 0x8d, 0x33, 0xfb, 0xc2, 0x69, 0xad, 0xe2, 0xc8, 0x19, 0xa3, 0xfc, 0x71,
|
||||
0x37, 0xda, 0x10, 0xbb, 0xcd, 0xce, 0xfc, 0xed, 0xa7, 0x7e, 0x4f, 0xce, 0x6a, 0x1d, 0xa4, 0x24,
|
||||
0xf9, 0xb7, 0x67, 0x4d, 0x32, 0x72, 0x02, 0xa1, 0x3f, 0xee, 0x38, 0xc1, 0xe6, 0xfe, 0xe4, 0x58,
|
||||
0xbb, 0x4e, 0x1e, 0x1f, 0x7e, 0xa9, 0x21, 0x24, 0x13, 0x3a, 0xe9, 0x70, 0x4f, 0xd2, 0x51, 0x43,
|
||||
0xbf, 0x81, 0xfb, 0x37, 0xdf, 0x88, 0x6f, 0xbe, 0x69, 0x94, 0xd4, 0x77, 0x22, 0x94, 0x87, 0x7a,
|
||||
0xf5, 0xee, 0x6d, 0x23, 0x4a, 0x3c, 0x75, 0x35, 0x59, 0x75, 0x3f, 0xb2, 0x92, 0xdc, 0x11, 0xb3,
|
||||
0x3a, 0x3e, 0x78, 0x32, 0xff, 0xbf, 0xec, 0x0b, 0x36, 0x3c, 0x9f, 0xfc, 0xb5, 0x13, 0x5a, 0xc5,
|
||||
0xad, 0x6f, 0x55, 0xd6, 0x57, 0x54, 0xe9, 0x96, 0xff, 0xe2, 0x7c, 0xd0, 0x19, 0x06, 0x5e, 0xff,
|
||||
0xcc, 0xbf, 0xf3, 0x00, 0xf3, 0x4d, 0x37, 0xd4, 0x7b, 0x16, 0xe5, 0x0f, 0x9b, 0x39, 0xa7, 0x73,
|
||||
0x7a, 0xeb, 0xe6, 0x48, 0x2e, 0x12, 0xaf, 0x49, 0x8a, 0x98, 0x60, 0x4d, 0x69, 0x17, 0x2b, 0x62,
|
||||
0xbc, 0x9f, 0x94, 0x87, 0x4c, 0xcb, 0xdd, 0x59, 0xdb, 0xb6, 0x75, 0x5a, 0x74, 0xb8, 0x76, 0x8c,
|
||||
0x84, 0x93, 0xa5, 0x61, 0xb6, 0x33, 0x2d, 0xb5, 0x05, 0xa6, 0x36, 0x97, 0x52, 0x28, 0x8b, 0xa0,
|
||||
0x60, 0x42, 0x9b, 0xb7, 0x7b, 0x93, 0x54, 0x37, 0x5a, 0xbc, 0xcc, 0x09, 0x59, 0x12, 0x37, 0x0a,
|
||||
0xd5, 0xe2, 0x33, 0xfd, 0xa6, 0x46, 0xc3, 0xb6, 0xd4, 0x41, 0x7c, 0xbd, 0x38, 0x2d, 0x1e, 0x44,
|
||||
0xbb, 0xfa, 0xd5, 0x83, 0xd0, 0xb5, 0xf2, 0xd3, 0xf3, 0x76, 0x03, 0x3e, 0xe8, 0xa1, 0x9b, 0xd0,
|
||||
0x56, 0x62, 0xbb, 0x01, 0x1d, 0x75, 0xd5, 0xf5, 0x3a, 0x8a, 0xb7, 0x9a, 0xa8, 0x30, 0x5b, 0x42,
|
||||
0x91, 0x39, 0x52, 0x13, 0x0a, 0xca, 0x74, 0xbd, 0xd2, 0x98, 0x76, 0x13, 0xa5, 0x5b, 0xd4, 0xaa,
|
||||
0xf6, 0x21, 0xd5, 0xc1, 0x58, 0xa5, 0x9e, 0x1e, 0x5d, 0xe4, 0x57, 0xfb, 0x00, 0x4f, 0x5a, 0xb2,
|
||||
0x3f, 0xfd, 0x3b, 0x3b, 0x6a, 0xeb, 0x57, 0xfe, 0x5e, 0x0a, 0x2d, 0xc3, 0x1e, 0x5d, 0xb9, 0x55,
|
||||
0x3e, 0x99, 0xdb, 0x97, 0x5f, 0x41, 0x9f, 0xea, 0x51, 0xdb, 0x1a, 0xe6, 0x4e, 0xf5, 0x2f, 0x8b,
|
||||
0x4f, 0xf5, 0xab, 0xe7, 0x8f, 0x72, 0xb4, 0xea, 0x8b, 0xd1, 0x93, 0x18, 0x36, 0x54, 0xb0, 0x5f,
|
||||
0xee, 0x7e, 0x37, 0x7e, 0x01, 0xe2, 0x31, 0x12, 0xeb, 0x67, 0x09, 0x24, 0x08, 0xf1, 0x38, 0xc6,
|
||||
0xad, 0x55, 0x6d, 0xfe, 0x89, 0x9b, 0x5f, 0xd1, 0xbe, 0xd2, 0x96, 0xa3, 0x3d, 0x2a, 0x5f, 0xd9,
|
||||
0x37, 0x95, 0x4b, 0x3c, 0x6c, 0x4b, 0xe2, 0x65, 0xb6, 0xb7, 0xb8, 0xd0, 0x62, 0xfc, 0x22, 0xce,
|
||||
0x69, 0x67, 0x70, 0xa1, 0xa2, 0xd3, 0x49, 0xce, 0xc8, 0x85, 0x27, 0x39, 0x07, 0xa6, 0x4c, 0xb4,
|
||||
0x23, 0x09, 0xb7, 0x13, 0xde, 0xeb, 0xfc, 0xf6, 0xe4, 0x40, 0x93, 0x53, 0xb5, 0x2e, 0x1c, 0xe4,
|
||||
0xf4, 0xc5, 0xb9, 0xfa, 0xa2, 0xaf, 0xf9, 0x7d, 0x5f, 0xf5, 0x35, 0x60, 0x99, 0xdd, 0x1c, 0x60,
|
||||
0xf9, 0xec, 0xbb, 0x9f, 0xde, 0xa8, 0xc5, 0x1f, 0xfa, 0xae, 0x56, 0x2c, 0x9e, 0x99, 0xc6, 0x59,
|
||||
0xdf, 0x98, 0x5d, 0x18, 0xbb, 0xe6, 0x07, 0x86, 0xd2, 0x59, 0xaa, 0x5f, 0x77, 0x52, 0x2b, 0x1e,
|
||||
0xc6, 0xec, 0xe8, 0x41, 0x93, 0x67, 0xaa, 0xe5, 0xb3, 0xfe, 0xb4, 0x09, 0x47, 0x7a, 0xd0, 0x67,
|
||||
0xe7, 0x65, 0xfd, 0xe1, 0xe7, 0x92, 0x32, 0xee, 0xa8, 0x0c, 0x45, 0x10, 0x2e, 0xfa, 0x59, 0x87,
|
||||
0xa6, 0x63, 0x7d, 0xf4, 0x8f, 0x4f, 0x1d, 0xa2, 0xaf, 0xff, 0x6b, 0x12, 0x50, 0x5f, 0xfb, 0x02,
|
||||
0x31, 0xaa, 0x72, 0x7a, 0xd8, 0x75, 0xdf, 0x35, 0xa4, 0x72, 0xd3, 0x9c, 0xe8, 0x1f, 0x1f, 0xb1,
|
||||
0xe9, 0xc3, 0x9f, 0x7d, 0x2f, 0x56, 0x89, 0xc8, 0x8c, 0x6b, 0x11, 0xaf, 0x8d, 0x97, 0xd7, 0xd9,
|
||||
0xed, 0x12, 0xb1, 0x8f, 0xbe, 0x72, 0x7e, 0x2f, 0xc7, 0x9e, 0x80, 0xff, 0xdc, 0xb2, 0xcd, 0x37,
|
||||
0x89, 0x45, 0xad, 0xb0, 0x7c, 0xa9, 0x49, 0x1f, 0xf3, 0x0a, 0xf9, 0x5b, 0x3f, 0xfc, 0x23, 0x68,
|
||||
0xf4, 0x3f, 0x00, 0xfa, 0x7f, 0xc0, 0xae, 0x3b, 0xd0, 0x18, 0x68, 0x00, 0x00
|
||||
};
|
||||
48
lib/webserver/setup-ui/data/build/stringConverter.js
Normal file
48
lib/webserver/setup-ui/data/build/stringConverter.js
Normal file
@@ -0,0 +1,48 @@
|
||||
var stringConverter = {
|
||||
convertByte: function (oneByte, bytesPerPixel) {
|
||||
var stringByte = '0x' + oneByte.toString(16).padStart(bytesPerPixel * 2, '0');
|
||||
return stringByte;
|
||||
},
|
||||
convert: function (dataLength, bytesPerPixel, multiLine, colNumber, data) {
|
||||
var resultString = '';
|
||||
for (var i = 0; i < dataLength; i++) {
|
||||
var stringByte = '';
|
||||
// need to use bigint, so we can use 32bit integers (4byte per pixel)
|
||||
let combinedByte = BigInt("0b00000000000000000000000000000000");
|
||||
for (let j = 0; j < bytesPerPixel; j++) {
|
||||
let pixelByte = BigInt(data[(i * bytesPerPixel) + j]);
|
||||
if (j != 0) {
|
||||
combinedByte = combinedByte << BigInt(8);
|
||||
}
|
||||
combinedByte = combinedByte | pixelByte;
|
||||
}
|
||||
stringByte = this.convertByte(combinedByte, bytesPerPixel) + ', ';
|
||||
if (multiLine && ((i + 1) % colNumber == 0)) {
|
||||
stringByte += '\n ';
|
||||
}
|
||||
resultString += stringByte;
|
||||
}
|
||||
resultString = resultString.substr(0, resultString.lastIndexOf(',')).trim();
|
||||
// add the array definition
|
||||
return resultString;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
module.exports = {
|
||||
|
||||
toString : function(data, colNum) {
|
||||
console.log('Converting data to string');
|
||||
|
||||
var dataLength = data.byteLength;
|
||||
console.log('actualDataLength: ' + dataLength);
|
||||
|
||||
var resultString = '#define SETUP_HTML_SIZE ';
|
||||
resultString += dataLength + '\n'
|
||||
resultString += 'const char SETUP_HTML[] PROGMEM = {\n ';
|
||||
resultString += stringConverter.convert(dataLength, 1, true, 16, data);
|
||||
resultString += '\n};';
|
||||
return resultString;
|
||||
}
|
||||
|
||||
}
|
||||
6
lib/webserver/setup-ui/data/package-lock.json
generated
Normal file
6
lib/webserver/setup-ui/data/package-lock.json
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"name": "data",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {}
|
||||
}
|
||||
131
lib/webserver/setup-ui/data/setup.htm
Normal file
131
lib/webserver/setup-ui/data/setup.htm
Normal file
@@ -0,0 +1,131 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset=utf-8 />
|
||||
<title>AWTRIX Light</title>
|
||||
<meta content="width=device-width, initial-scale=1" name=viewport />
|
||||
<link href=style.css rel=stylesheet type=text/css />
|
||||
</head>
|
||||
|
||||
<body class=body>
|
||||
<main id=main-box>
|
||||
<header class="ctn header">
|
||||
<div class=title>
|
||||
<label for="logo-file" class="svg-button">
|
||||
<div id=svg-logo title='Click to upload your logo file'></div>
|
||||
</label>
|
||||
<h1 id=name-logo class=heading>AWTRIX Light</h1>
|
||||
<h1 id=version class=heading></h1>
|
||||
</div>
|
||||
<div class=topnav id=top-nav>
|
||||
<span id="nav-link">
|
||||
<a id=set-wifi class="a-link active" data-box="wifi-box">WiFi Setup</a>
|
||||
</span>
|
||||
<a id=about target=_blank rel=noopener href=./edit>Files</a>
|
||||
<a id=about target=_blank rel=noopener href=./update>Update</a>
|
||||
<a class="a-link icon" id=hum-btn>
|
||||
<div class=svg style=margin:-2px>
|
||||
<svg id=svg-menu fill=currentColor viewBox="0 0 20 18"></svg>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</header>
|
||||
<div id=wifi-box class="ctn opt-box">
|
||||
<h2 class=heading-2>Connect to WiFi</h2>
|
||||
<div id=wifi-table class=hide>
|
||||
<table class=table>
|
||||
<tbody id=wifi-list></tbody>
|
||||
</table>
|
||||
<br>
|
||||
</div>
|
||||
<div class=wifi-connect>
|
||||
<form class=form>
|
||||
<div class=tf-wrapper>
|
||||
<label for=ssid class=input-label>SSID</label>
|
||||
<input type=text placeholder="Enter your WiFI SSID name" id="ssid" />
|
||||
</div>
|
||||
<div class=tf-wrapper>
|
||||
<label for=password class=input-label>Password</label>
|
||||
<div class=show-hide-wrap id=show-hide-password>
|
||||
<a class="show-hide w--current" id=show-pass>
|
||||
<div class=svg><svg class=svg-e id=svg-eye viewBox="0 0 24 24"></svg></div>
|
||||
</a>
|
||||
<a class="show-hide" id=hide-pass>
|
||||
<div class=svg><svg class=svg-e id=svg-no-eye viewBox="0 0 24 24"></svg></div>
|
||||
</a>
|
||||
</div>
|
||||
<input type=password placeholder="Enter your WiFi password" id=password
|
||||
autocomplete=current-password data-ms-member="password" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="btn-bar ">
|
||||
<label class="toggle lbl-wifi">
|
||||
<hr>
|
||||
<span class=toggle-label>Store WiFi credentials</span>
|
||||
<input id=persistent type=checkbox class="t-check" checked>
|
||||
<div class=toggle-switch></div>
|
||||
</label>
|
||||
<a id=scan-wifi class="btn">
|
||||
<div class=svg><svg id=svg-scan fill=currentColor viewBox="0 0 24 24"></svg></div>
|
||||
<span>Scan WiFi networks</span>
|
||||
</a>
|
||||
<a id=connect-wifi class="btn">
|
||||
<div class=svg><svg id=svg-connect fill=currentColor viewBox="0 0 24 24"></svg></div>
|
||||
<span>Connect to <span id=ssid-name>SSID</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id=btn-box class="btn-bar hide">
|
||||
<label class="toggle">
|
||||
<hr>
|
||||
</label>
|
||||
<a id=restart class="btn">
|
||||
<div class=svg><svg id=svg-restart fill=currentColor viewBox="0 0 24 24"></svg></div>
|
||||
<span>Restart ESP</span>
|
||||
</a>
|
||||
<a id=save-params class="btn">
|
||||
<div class=svg><svg id=svg-save fill=currentColor viewBox="0 0 24 24"></svg></div>
|
||||
<span>Save configuration</span>
|
||||
</a>
|
||||
</div>
|
||||
</main>
|
||||
<div class="loader hide" id=loader>Loading...</div>
|
||||
<details id=modal-message>
|
||||
<summary></summary>
|
||||
<div class=d-modal>
|
||||
<a onclick=closeModalMessage()>
|
||||
<div class=d-modal-close>
|
||||
<svg id=close-modal width=14 height=14 viewBox="0 0 14 14" fill=none></svg>
|
||||
</div>
|
||||
</a>
|
||||
<div class=d-modal-title>
|
||||
<h2 id=message-title></h2>
|
||||
</div>
|
||||
<div class=d-modal-content>
|
||||
<p id=message-body></p>
|
||||
</div>
|
||||
<div class=btn-bar>
|
||||
<a id=ok-modal class="btn hide" onclick=closeModalMessage(true)><span>OK</span></a>
|
||||
<a id=close-modal class="btn" onclick=closeModalMessage(false)><span>Close</span></a>
|
||||
</div>
|
||||
</div>
|
||||
</details>
|
||||
<script src=app.js></script>
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const versionElement = document.getElementById('version');
|
||||
fetch('/version')
|
||||
.then(response => response.text())
|
||||
.then(version => {
|
||||
versionElement.textContent = version;
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Fehler beim Abrufen der Version:', error);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
597
lib/webserver/setup-ui/data/style.css
Normal file
597
lib/webserver/setup-ui/data/style.css
Normal file
@@ -0,0 +1,597 @@
|
||||
.inputfile {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
opacity: 0;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.loader,
|
||||
.loader:before,
|
||||
.loader:after {
|
||||
border-radius: 50%;
|
||||
width: 2em;
|
||||
height: 2em;
|
||||
-webkit-animation-fill-mode: both;
|
||||
animation-fill-mode: both;
|
||||
-webkit-animation: load7 1.8s infinite ease-in-out;
|
||||
animation: load7 1.8s infinite ease-in-out;
|
||||
}
|
||||
|
||||
.loader {
|
||||
color: #333;
|
||||
font-size: 10px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
position: relative;
|
||||
text-indent: -9999em;
|
||||
z-index: 999;
|
||||
-webkit-transform: translateZ(0);
|
||||
-ms-transform: translateZ(0);
|
||||
transform: translateZ(0);
|
||||
-webkit-animation-delay: -0.16s;
|
||||
animation-delay: -0.16s;
|
||||
}
|
||||
|
||||
.loader:before,
|
||||
.loader:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.loader:before {
|
||||
left: -4.5em;
|
||||
-webkit-animation-delay: -0.32s;
|
||||
animation-delay: -0.32s;
|
||||
}
|
||||
|
||||
.loader:after {
|
||||
left: 4.5em;
|
||||
}
|
||||
|
||||
@-webkit-keyframes load7 {
|
||||
|
||||
0%,
|
||||
80%,
|
||||
100% {
|
||||
box-shadow: 0 2.5em 0 -1.3em;
|
||||
}
|
||||
|
||||
40% {
|
||||
box-shadow: 0 2.5em 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes load7 {
|
||||
|
||||
0%,
|
||||
80%,
|
||||
100% {
|
||||
box-shadow: 0 2.5em 0 -1.3em;
|
||||
}
|
||||
|
||||
40% {
|
||||
box-shadow: 0 2.5em 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
tr:hover {
|
||||
filter: brightness(85%);
|
||||
}
|
||||
|
||||
.d-modal {
|
||||
border-radius: 10px;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
border-color: #3333336e;
|
||||
background-color: hsla(0, 0%, 100%, 0.95);
|
||||
box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
|
||||
left: 50%;
|
||||
max-width: 90%;
|
||||
position: absolute;
|
||||
top: 40%;
|
||||
transform: translate(-50%, -50%);
|
||||
width: 25em;
|
||||
text-align: left;
|
||||
max-height: 40vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
z-index: 999;
|
||||
}
|
||||
|
||||
.d-modal-close {
|
||||
cursor: pointer;
|
||||
align-items: center;
|
||||
color: #111827;
|
||||
display: flex;
|
||||
height: 4.5em;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
width: 4.5em;
|
||||
}
|
||||
|
||||
.d-modal-title {
|
||||
color: #111827;
|
||||
padding: 1.5em 2em;
|
||||
position: relative;
|
||||
width: calc(100% - 4.5em);
|
||||
}
|
||||
|
||||
.d-modal-content {
|
||||
border-top: 1px solid #e0e0e0;
|
||||
padding: 2em;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.topnav {
|
||||
background-color: #333;
|
||||
overflow: hidden;
|
||||
width: fit-content;
|
||||
float: right;
|
||||
border-radius: 5px;
|
||||
height: 28px, ;
|
||||
}
|
||||
|
||||
.topnav a {
|
||||
float: left;
|
||||
display: block;
|
||||
color: #f2f2f2;
|
||||
text-align: center;
|
||||
padding: 5px 10px;
|
||||
text-decoration: none;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.topnav a:hover {
|
||||
background-color: #ddd;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.topnav a.active {
|
||||
background-color: #56c080;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.topnav .icon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.lbl-wifi {
|
||||
text-align: right;
|
||||
padding: 0
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
details,
|
||||
header,
|
||||
main,
|
||||
summary {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.table {
|
||||
width: 90%;
|
||||
margin: auto;
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
a {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
a:active,
|
||||
a:hover {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
b {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 38px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
hr {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.input-label {
|
||||
color: #015293;
|
||||
position: relative;
|
||||
left: 8px;
|
||||
bottom: -7px;
|
||||
z-index: 2;
|
||||
display: inline-block;
|
||||
margin-bottom: 0;
|
||||
padding-right: 7px;
|
||||
padding-left: 6px;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
border-color: #dcdce5;
|
||||
border-radius: 6px;
|
||||
background-color: #fff;
|
||||
font-size: 13.5px;
|
||||
line-height: 17px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
input:-webkit-autofill,
|
||||
input:-webkit-autofill:hover,
|
||||
input:-webkit-autofill:focus,
|
||||
input:-webkit-autofill:active {
|
||||
-webkit-box-shadow: 0 0 0 30px #fff inset !important;
|
||||
}
|
||||
|
||||
input[type='checkbox'] {
|
||||
box-sizing: border-box;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
input[type='text'],
|
||||
input[type='number'],
|
||||
input[type='password'],
|
||||
select {
|
||||
height: 40px;
|
||||
width: 100%;
|
||||
padding-top: 10px;
|
||||
padding-left: 20px;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 6px;
|
||||
box-shadow: 0 1px 2px 0 rgba(220, 220, 230, 0.5);
|
||||
transition: border-color 200ms ease, box-shadow 200ms ease;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
input::placeholder {
|
||||
color: #5e5e5e;
|
||||
}
|
||||
|
||||
input:hover {
|
||||
border-color: rgba(0, 0, 0, 0.8);
|
||||
box-shadow: 0 1px 4px 0 rgba(220, 220, 229, 0.9);
|
||||
}
|
||||
|
||||
input:focus,
|
||||
select:focus {
|
||||
border-color: #3898EC;
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.ctn:before,
|
||||
.ctn:after {
|
||||
content: " ";
|
||||
display: table;
|
||||
grid-column-start: 1;
|
||||
grid-row-start: 1;
|
||||
grid-column-end: 2;
|
||||
grid-row-end: 2;
|
||||
}
|
||||
|
||||
.ctn:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.ctn {
|
||||
display: block;
|
||||
max-width: 940px;
|
||||
margin: 10px auto 10px auto;
|
||||
padding: 10px 40px;
|
||||
clear: both;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
align-content: space-around;
|
||||
border-radius: 10px;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
border-color: #3333336e;
|
||||
background-color: hsla(0, 0%, 100%, 0.8);
|
||||
box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
|
||||
}
|
||||
|
||||
footer {
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
margin: 40px
|
||||
}
|
||||
|
||||
#about {
|
||||
color: lightgray
|
||||
}
|
||||
|
||||
.body {
|
||||
padding-right: 20px;
|
||||
padding-left: 20px;
|
||||
border-radius: 10px;
|
||||
background-color: #edf0f3;
|
||||
background-clip: border-box;
|
||||
}
|
||||
|
||||
.title {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.heading-2 {
|
||||
padding-right: 20px;
|
||||
padding-left: 20px;
|
||||
font-weight: 400;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.form {
|
||||
position: static;
|
||||
padding-right: 20px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
button,
|
||||
.btn {
|
||||
display: inline-flex;
|
||||
padding: 10px 15px;
|
||||
background-color: #3898EC;
|
||||
color: #fff;
|
||||
border: 0;
|
||||
cursor: pointer;
|
||||
min-width: 40%;
|
||||
border-radius: 5px;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
button:hover,
|
||||
.btn:hover {
|
||||
filter: brightness(85%);
|
||||
}
|
||||
|
||||
.btn-bar {
|
||||
display: flex;
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
justify-content: right;
|
||||
flex-wrap: wrap;
|
||||
align-items: stretch;
|
||||
align-content: space-around;
|
||||
grid-column-gap: 30px;
|
||||
grid-row-gap: 20px;
|
||||
}
|
||||
|
||||
.tf-wrapper {
|
||||
position: relative;
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
width: 100%;
|
||||
margin-bottom: 12px;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.show-hide {
|
||||
max-width: 100%;
|
||||
display: flex;
|
||||
background-color: #fff;
|
||||
font-size: 13.5px;
|
||||
}
|
||||
|
||||
.show-hide-wrap {
|
||||
position: absolute;
|
||||
left: auto;
|
||||
top: 40%;
|
||||
right: 2%;
|
||||
bottom: auto;
|
||||
z-index: 4;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.svg {
|
||||
display: flex;
|
||||
width: 20px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.svg-e {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.heading {
|
||||
margin-right: 10px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.hide,
|
||||
.show-hide.w--current {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.toggle {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
margin: 0 0 12px 0;
|
||||
left: 0px;
|
||||
padding: 5px;
|
||||
width: 100%
|
||||
}
|
||||
|
||||
.toggle-switch {
|
||||
display: inline-block;
|
||||
background: #ccc;
|
||||
border-radius: 16px;
|
||||
width: 58px;
|
||||
height: 32px;
|
||||
position: relative;
|
||||
vertical-align: middle;
|
||||
transition: background .25s;
|
||||
}
|
||||
|
||||
.toggle-switch:before,
|
||||
.toggle-switch:after {
|
||||
content: "";
|
||||
}
|
||||
|
||||
.toggle-switch:before {
|
||||
display: block;
|
||||
background: linear-gradient(to bottom, #fff 0%, #eee 100%);
|
||||
border-radius: 50%;
|
||||
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.25);
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
left: 4px;
|
||||
transition: left .25s;
|
||||
}
|
||||
|
||||
.toggle:hover .toggle-switch:before {
|
||||
background: linear-gradient(to bottom, #fff 0%, #fff 100%);
|
||||
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
.t-check:checked+.toggle-switch {
|
||||
background: #56c080;
|
||||
}
|
||||
|
||||
.t-check:checked+.toggle-switch:before {
|
||||
left: 30px;
|
||||
}
|
||||
|
||||
.t-check {
|
||||
position: absolute;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.toggle-label {
|
||||
margin-left: 5px;
|
||||
position: relative;
|
||||
top: 2px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 991px) {
|
||||
.ctn {
|
||||
max-width: 728px;
|
||||
}
|
||||
|
||||
.ctn {
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
max-width: 95%;
|
||||
padding-right: 20px;
|
||||
padding-left: 20px;
|
||||
grid-column-gap: 10px;
|
||||
grid-row-gap: 10px;
|
||||
object-fit: contain;
|
||||
}
|
||||
|
||||
.wifi-connect {
|
||||
padding-right: 20px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
.wifi-connect {
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 608px) {
|
||||
.btn-bar {
|
||||
margin-top: 20px;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.topnav {
|
||||
margin-bottom: 5px;
|
||||
width: -webkit-fill-available
|
||||
}
|
||||
|
||||
.topnav a {
|
||||
padding: 5px 20px;
|
||||
}
|
||||
|
||||
.topnav a:not(.active) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.topnav a.icon {
|
||||
float: right;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.topnav a:hover {
|
||||
background-color: rgba(221, 221, 221, 0);
|
||||
color: rgb(90, 90, 90);
|
||||
}
|
||||
|
||||
.topnav.responsive {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.topnav.responsive .icon {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.topnav.responsive a {
|
||||
float: none;
|
||||
display: block;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.hide-tiny {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 479px) {
|
||||
h1 {
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
.body {
|
||||
padding-right: 2px;
|
||||
padding-left: 2px;
|
||||
}
|
||||
|
||||
.heading-2 {
|
||||
margin-top: 10px;
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.form {
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.ctn {
|
||||
max-width: 100%;
|
||||
padding: 0 10px 0 10px;
|
||||
}
|
||||
}
|
||||
BIN
lib/webserver/setup-ui/extras.zip
Normal file
BIN
lib/webserver/setup-ui/extras.zip
Normal file
Binary file not shown.
308
lib/webserver/setup-ui/extras/edit.htm
Normal file
308
lib/webserver/setup-ui/extras/edit.htm
Normal file
File diff suppressed because one or more lines are too long
BIN
lib/webserver/setup-ui/extras/edit.htm.gz
Normal file
BIN
lib/webserver/setup-ui/extras/edit.htm.gz
Normal file
Binary file not shown.
4
lib/webserver/setup-ui/extras/edit_htm.h
Normal file
4
lib/webserver/setup-ui/extras/edit_htm.h
Normal file
@@ -0,0 +1,4 @@
|
||||
// WARNING: Auto-generated file. Please do not modify by hand.
|
||||
// This file is an embeddable version of the gzipped index.htm file.
|
||||
// To update it, please rerun the `reduce_index.sh` script located in the `extras` subfolder
|
||||
// then recompile the sketch after each change to the `index.html` file.
|
||||
BIN
lib/webserver/setup-ui/extras/feathericons.png
Normal file
BIN
lib/webserver/setup-ui/extras/feathericons.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
202
lib/webserver/setup-ui/extras/package-lock.json
generated
Normal file
202
lib/webserver/setup-ui/extras/package-lock.json
generated
Normal file
@@ -0,0 +1,202 @@
|
||||
{
|
||||
"name": "extras",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"dependencies": {
|
||||
"html-minifier": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/camel-case": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
|
||||
"integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==",
|
||||
"dependencies": {
|
||||
"no-case": "^2.2.0",
|
||||
"upper-case": "^1.1.1"
|
||||
}
|
||||
},
|
||||
"node_modules/clean-css": {
|
||||
"version": "4.2.4",
|
||||
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz",
|
||||
"integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==",
|
||||
"dependencies": {
|
||||
"source-map": "~0.6.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/commander": {
|
||||
"version": "2.20.3",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
|
||||
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
|
||||
},
|
||||
"node_modules/he": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
|
||||
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
|
||||
"bin": {
|
||||
"he": "bin/he"
|
||||
}
|
||||
},
|
||||
"node_modules/html-minifier": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz",
|
||||
"integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==",
|
||||
"dependencies": {
|
||||
"camel-case": "^3.0.0",
|
||||
"clean-css": "^4.2.1",
|
||||
"commander": "^2.19.0",
|
||||
"he": "^1.2.0",
|
||||
"param-case": "^2.1.1",
|
||||
"relateurl": "^0.2.7",
|
||||
"uglify-js": "^3.5.1"
|
||||
},
|
||||
"bin": {
|
||||
"html-minifier": "cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/lower-case": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
|
||||
"integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA=="
|
||||
},
|
||||
"node_modules/no-case": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
|
||||
"integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
|
||||
"dependencies": {
|
||||
"lower-case": "^1.1.1"
|
||||
}
|
||||
},
|
||||
"node_modules/param-case": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
|
||||
"integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==",
|
||||
"dependencies": {
|
||||
"no-case": "^2.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/relateurl": {
|
||||
"version": "0.2.7",
|
||||
"resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
|
||||
"integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
|
||||
"engines": {
|
||||
"node": ">= 0.10"
|
||||
}
|
||||
},
|
||||
"node_modules/source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/uglify-js": {
|
||||
"version": "3.17.4",
|
||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
|
||||
"integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==",
|
||||
"bin": {
|
||||
"uglifyjs": "bin/uglifyjs"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/upper-case": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
|
||||
"integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA=="
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"camel-case": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
|
||||
"integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==",
|
||||
"requires": {
|
||||
"no-case": "^2.2.0",
|
||||
"upper-case": "^1.1.1"
|
||||
}
|
||||
},
|
||||
"clean-css": {
|
||||
"version": "4.2.4",
|
||||
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz",
|
||||
"integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==",
|
||||
"requires": {
|
||||
"source-map": "~0.6.0"
|
||||
}
|
||||
},
|
||||
"commander": {
|
||||
"version": "2.20.3",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
|
||||
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
|
||||
},
|
||||
"he": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
|
||||
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
|
||||
},
|
||||
"html-minifier": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz",
|
||||
"integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==",
|
||||
"requires": {
|
||||
"camel-case": "^3.0.0",
|
||||
"clean-css": "^4.2.1",
|
||||
"commander": "^2.19.0",
|
||||
"he": "^1.2.0",
|
||||
"param-case": "^2.1.1",
|
||||
"relateurl": "^0.2.7",
|
||||
"uglify-js": "^3.5.1"
|
||||
}
|
||||
},
|
||||
"lower-case": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
|
||||
"integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA=="
|
||||
},
|
||||
"no-case": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
|
||||
"integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
|
||||
"requires": {
|
||||
"lower-case": "^1.1.1"
|
||||
}
|
||||
},
|
||||
"param-case": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
|
||||
"integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==",
|
||||
"requires": {
|
||||
"no-case": "^2.2.0"
|
||||
}
|
||||
},
|
||||
"relateurl": {
|
||||
"version": "0.2.7",
|
||||
"resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
|
||||
"integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog=="
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
|
||||
},
|
||||
"uglify-js": {
|
||||
"version": "3.17.4",
|
||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
|
||||
"integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g=="
|
||||
},
|
||||
"upper-case": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
|
||||
"integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA=="
|
||||
}
|
||||
}
|
||||
}
|
||||
5
lib/webserver/setup-ui/extras/package.json
Normal file
5
lib/webserver/setup-ui/extras/package.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"html-minifier": "^4.0.0"
|
||||
}
|
||||
}
|
||||
59
lib/webserver/setup-ui/extras/reduce_index.sh
Normal file
59
lib/webserver/setup-ui/extras/reduce_index.sh
Normal file
@@ -0,0 +1,59 @@
|
||||
#/bin/sh
|
||||
|
||||
# Processing script to optionally reduce filesystem use by miniying, gzipping and preparing index.htm for embedding in code.
|
||||
# Please see readme.md for more information.
|
||||
|
||||
# Requires xdd which is part of the VIM package
|
||||
# Requires npm
|
||||
# sudo apt install npm
|
||||
# ln -s /usr/bin/nodejs /usr/bin/node
|
||||
# Requires html-minifier
|
||||
# sudo npm install html-minifier -g
|
||||
|
||||
html-minifier \
|
||||
--case-sensitive \
|
||||
--collapse-boolean-attributes \
|
||||
--collapse-whitespace \
|
||||
--minify-css true \
|
||||
--minify-js true \
|
||||
--process-conditional-comments \
|
||||
--remove-attribute-quotes \
|
||||
--remove-comments \
|
||||
--remove-empty-attributes \
|
||||
--remove-optional-tags \
|
||||
--remove-redundant-attributes \
|
||||
--remove-script-type-attributes \
|
||||
--remove-style-link-type-attributes \
|
||||
-o edit.htm edit.htm
|
||||
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "Error minifying index.htm"
|
||||
exit -1
|
||||
fi
|
||||
|
||||
if [ -e edit.htm.gz ]
|
||||
then
|
||||
rm edit.htm.gz
|
||||
fi
|
||||
|
||||
gzip edit.htm
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "Error gzipping minified index.htm"
|
||||
exit -1
|
||||
fi
|
||||
|
||||
echo '// WARNING: Auto-generated file. Please do not modify by hand.' > edit_htm.h
|
||||
echo '// This file is an embeddable version of the gzipped index.htm file.' >> edit_htm.h
|
||||
echo '// To update it, please rerun the `reduce_index.sh` script located in the `extras` subfolder' >> edit_htm.h
|
||||
echo '// then recompile the sketch after each change to the `index.html` file.' >> edit_htm.h
|
||||
xxd -i edit.htm.gz >> edit_htm.h
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "Error creating include file from index.htm.gz"
|
||||
exit -1
|
||||
fi
|
||||
|
||||
echo Reduce complete.
|
||||
|
||||
6
lib/webserver/setup-ui/readme.md
Normal file
6
lib/webserver/setup-ui/readme.md
Normal file
@@ -0,0 +1,6 @@
|
||||
If you want customize **/setup** page (headers, logo etc etc):
|
||||
* edit the source files as your needs (setup.htm, app.js, style.css)
|
||||
* put all togheter in the same all.htm file inside *dist* folder
|
||||
* open a terminal in *dist* folder and run `npm i` to install all nodejs modules needed
|
||||
* run `node finalize.js`
|
||||
* overwrite the content of *setup_htm.h* in src folder
|
||||
528
lib/webserver/src/edit_htm.h
Normal file
528
lib/webserver/src/edit_htm.h
Normal file
@@ -0,0 +1,528 @@
|
||||
// WARNING: Auto-generated file. Please do not modify by hand.
|
||||
// This file is an embeddable version of the gzipped index.htm file.
|
||||
// To update it, please rerun the `reduce_index.sh` script located in the `extras` subfolder
|
||||
// then recompile the sketch after each change to the `index.html` file.
|
||||
const char edit_htm_gz[] = {
|
||||
0x1f, 0x8b, 0x08, 0x08, 0x0a, 0x67, 0x14, 0x64, 0x00, 0x03, 0x65, 0x64,
|
||||
0x69, 0x74, 0x2e, 0x68, 0x74, 0x6d, 0x00, 0xec, 0x3b, 0x09, 0x73, 0x9b,
|
||||
0x48, 0x97, 0x7f, 0x05, 0x93, 0x1d, 0x1b, 0x56, 0x08, 0x49, 0xbe, 0x23,
|
||||
0x19, 0x7b, 0x7c, 0xc8, 0xb7, 0x7c, 0x9f, 0xc9, 0x66, 0xab, 0x5a, 0xd0,
|
||||
0x12, 0x6d, 0x23, 0x20, 0xd0, 0x58, 0x92, 0x1d, 0xef, 0x6f, 0xdf, 0xf7,
|
||||
0x1a, 0x90, 0x40, 0x42, 0x4e, 0x66, 0x77, 0x66, 0x67, 0xea, 0xab, 0x4d,
|
||||
0xaa, 0x22, 0x68, 0xba, 0xdf, 0xd5, 0xef, 0xee, 0xce, 0xc6, 0xdc, 0xde,
|
||||
0xf9, 0xee, 0xcd, 0xe3, 0x45, 0x53, 0xb2, 0x79, 0xcf, 0x91, 0x2e, 0x6e,
|
||||
0x77, 0x4e, 0x8f, 0x76, 0x25, 0xb9, 0x5c, 0xa9, 0xdc, 0x2f, 0xed, 0x56,
|
||||
0x2a, 0x7b, 0x37, 0x7b, 0xd2, 0xc3, 0xe1, 0x4d, 0xeb, 0x54, 0xaa, 0xe9,
|
||||
0x55, 0xe9, 0x26, 0x20, 0x6e, 0xc8, 0x38, 0xf3, 0x5c, 0xe2, 0x54, 0x2a,
|
||||
0xcd, 0x33, 0x59, 0x92, 0x6d, 0xce, 0xfd, 0x7a, 0xa5, 0xd2, 0xef, 0xf7,
|
||||
0xf5, 0xfe, 0x92, 0xee, 0x05, 0xdd, 0xca, 0xcd, 0x55, 0x65, 0x80, 0xb0,
|
||||
0x6a, 0xb8, 0x38, 0x79, 0x2c, 0xf3, 0xcc, 0x4a, 0xdd, 0xe2, 0x96, 0xbc,
|
||||
0xb9, 0x21, 0xf0, 0x39, 0xc4, 0xed, 0x1a, 0xd4, 0xdd, 0xdc, 0xe0, 0x8c,
|
||||
0x3b, 0x74, 0x73, 0x9f, 0x39, 0x54, 0xea, 0x11, 0x97, 0x74, 0x69, 0xb0,
|
||||
0x51, 0x89, 0xc7, 0x36, 0x42, 0x3e, 0xc4, 0x51, 0x6a, 0x31, 0x62, 0x84,
|
||||
0x66, 0x40, 0x61, 0x7a, 0xdb, 0xb3, 0x86, 0x6f, 0x1d, 0xcf, 0xe5, 0xe5,
|
||||
0x90, 0xbd, 0xd2, 0x7a, 0x6d, 0xd1, 0x1f, 0x34, 0xc4, 0x6b, 0x87, 0xf4,
|
||||
0x98, 0x33, 0xac, 0xdf, 0xd1, 0xc0, 0x02, 0x28, 0xda, 0x76, 0xc0, 0x88,
|
||||
0xa3, 0x5d, 0x03, 0xee, 0x72, 0x48, 0x03, 0xd6, 0x79, 0xd7, 0x4d, 0x98,
|
||||
0x45, 0x07, 0xbc, 0x45, 0xdd, 0xe8, 0xed, 0xb5, 0xcc, 0x5c, 0x8b, 0x0e,
|
||||
0xea, 0x4b, 0xd5, 0x6a, 0xc3, 0xf7, 0x62, 0xf2, 0xea, 0xa4, 0x1d, 0x7a,
|
||||
0x4e, 0xc4, 0x69, 0xc3, 0xa1, 0x1d, 0x5e, 0x5f, 0x01, 0xc0, 0x6d, 0x2f,
|
||||
0xb0, 0x68, 0x50, 0xaf, 0xf9, 0x03, 0x09, 0x3e, 0x31, 0x4b, 0xfa, 0xb4,
|
||||
0xbc, 0xbc, 0xdc, 0x68, 0x13, 0xf3, 0xb9, 0x1b, 0x78, 0x91, 0x6b, 0x95,
|
||||
0x4d, 0xcf, 0xf1, 0x82, 0xfa, 0xa7, 0xce, 0x0a, 0xfe, 0x6d, 0x58, 0x2c,
|
||||
0xf4, 0x1d, 0x32, 0xac, 0xbb, 0x9e, 0x4b, 0x61, 0xed, 0xa0, 0x1c, 0xda,
|
||||
0xc4, 0xf2, 0xfa, 0xf5, 0xaa, 0x54, 0x95, 0x6a, 0x55, 0x00, 0x12, 0x74,
|
||||
0xdb, 0x44, 0xa9, 0x6a, 0xf8, 0x57, 0x5f, 0x56, 0x1b, 0x19, 0x36, 0x6a,
|
||||
0x29, 0x1b, 0x7d, 0xca, 0xba, 0x36, 0xaf, 0xaf, 0x55, 0xab, 0x39, 0x8a,
|
||||
0xa5, 0xc8, 0x79, 0x73, 0x58, 0x08, 0xd3, 0x51, 0x24, 0x31, 0x06, 0xee,
|
||||
0xf9, 0xf5, 0x6a, 0x4c, 0x6c, 0xb5, 0xd1, 0x23, 0x41, 0x97, 0xb9, 0xf0,
|
||||
0xe0, 0x13, 0xcb, 0x62, 0x6e, 0xb7, 0x3e, 0xb1, 0xde, 0x61, 0x6f, 0x23,
|
||||
0x46, 0x03, 0xea, 0x10, 0xce, 0x5e, 0x68, 0xa3, 0xc7, 0xdc, 0x72, 0x9f,
|
||||
0x59, 0xdc, 0xae, 0xaf, 0x02, 0x79, 0x0d, 0x33, 0x0a, 0x42, 0x60, 0xc7,
|
||||
0xf7, 0x18, 0xac, 0x0b, 0xf2, 0xeb, 0x43, 0x9f, 0xb8, 0x6f, 0x09, 0xbb,
|
||||
0x28, 0x84, 0x94, 0x57, 0xe6, 0x3a, 0xcc, 0xa5, 0xe5, 0xb6, 0xe3, 0x99,
|
||||
0xcf, 0x23, 0xdc, 0xab, 0xfe, 0x60, 0x12, 0x7b, 0xdd, 0xf6, 0x5e, 0x68,
|
||||
0xf0, 0x36, 0x96, 0x9d, 0x00, 0x53, 0x3c, 0x2b, 0x87, 0x8c, 0x52, 0x0a,
|
||||
0xb3, 0xc2, 0x10, 0x14, 0x89, 0xd2, 0x17, 0x46, 0xfb, 0x30, 0x4d, 0xcb,
|
||||
0x0f, 0x80, 0x6c, 0x46, 0x5c, 0x8f, 0x05, 0x31, 0x21, 0xae, 0x09, 0x20,
|
||||
0xcc, 0xf5, 0x23, 0xfe, 0x36, 0xbd, 0xf7, 0x9e, 0x4f, 0x4c, 0xc6, 0x87,
|
||||
0x42, 0x7c, 0x99, 0xf9, 0x6f, 0x13, 0x7b, 0x55, 0xee, 0x79, 0xaf, 0xe5,
|
||||
0x08, 0x34, 0x0b, 0xb4, 0xcb, 0xa1, 0x26, 0x8f, 0x77, 0x04, 0x76, 0xaf,
|
||||
0xfd, 0xcc, 0xf8, 0xf4, 0x87, 0xc9, 0x81, 0x09, 0x62, 0xb2, 0xfc, 0x56,
|
||||
0xab, 0x9d, 0xe9, 0x8d, 0x98, 0x9c, 0x9c, 0x48, 0x13, 0x25, 0x57, 0xb6,
|
||||
0xa8, 0xe9, 0x05, 0x44, 0x70, 0x01, 0x62, 0xa5, 0x01, 0xee, 0x47, 0x11,
|
||||
0xb3, 0x25, 0x87, 0xb4, 0xa9, 0x53, 0x02, 0x61, 0xa5, 0x22, 0x92, 0xf0,
|
||||
0xef, 0xe2, 0xa2, 0xd8, 0xac, 0xa9, 0xe9, 0xff, 0x05, 0x13, 0xb3, 0x0a,
|
||||
0x3d, 0xb9, 0x09, 0x08, 0x4c, 0x2b, 0x18, 0xab, 0xd7, 0xdb, 0xb4, 0xe3,
|
||||
0x05, 0xf4, 0xed, 0x43, 0x26, 0x04, 0x8a, 0x3a, 0xc0, 0x27, 0x6d, 0x87,
|
||||
0x5a, 0x31, 0x69, 0xe9, 0x0a, 0x8b, 0x76, 0x48, 0xe4, 0xf0, 0xd1, 0x56,
|
||||
0xe8, 0xab, 0x85, 0x8b, 0x4d, 0x9b, 0x9a, 0xcf, 0xd4, 0x02, 0xe2, 0xb8,
|
||||
0x32, 0x82, 0xa4, 0x66, 0xc9, 0x16, 0x4a, 0xf9, 0x47, 0xe9, 0xd6, 0x0a,
|
||||
0xb6, 0x26, 0xa3, 0xb5, 0x51, 0xe0, 0x28, 0x16, 0xe1, 0xa4, 0xce, 0x7a,
|
||||
0xe0, 0xaa, 0x2a, 0xbe, 0xdb, 0x05, 0x7f, 0x10, 0xd2, 0xd5, 0x65, 0x8d,
|
||||
0xdd, 0xed, 0x9c, 0x5f, 0xf5, 0xab, 0x27, 0x07, 0x5d, 0x6f, 0x1b, 0xfe,
|
||||
0x9c, 0x5d, 0xdf, 0xda, 0xcd, 0xdb, 0x2e, 0x3c, 0xed, 0xe0, 0xeb, 0x6e,
|
||||
0x77, 0x77, 0xbb, 0x85, 0x0f, 0xc3, 0x95, 0x41, 0xbf, 0x87, 0x0f, 0xed,
|
||||
0xda, 0x4e, 0xeb, 0xae, 0x79, 0x77, 0x68, 0x36, 0x87, 0xf7, 0xbd, 0x95,
|
||||
0x95, 0xfb, 0xfb, 0xc5, 0xe6, 0xea, 0xe5, 0xad, 0xb5, 0x7d, 0xd9, 0xdc,
|
||||
0x61, 0xe4, 0xa0, 0xf6, 0x44, 0x0e, 0xd6, 0x2a, 0x95, 0xca, 0xfa, 0xcb,
|
||||
0xd9, 0xd3, 0xd2, 0xc9, 0x6b, 0x6b, 0x6d, 0x77, 0xd0, 0x6a, 0xf7, 0x56,
|
||||
0xa2, 0x4e, 0xeb, 0xd5, 0xac, 0x3c, 0x2e, 0x5a, 0xdf, 0x07, 0xfc, 0x94,
|
||||
0x1c, 0x30, 0x6f, 0x65, 0xbd, 0xfb, 0x78, 0x7f, 0xfc, 0xf4, 0x65, 0xff,
|
||||
0xea, 0x6e, 0xff, 0xcb, 0xf1, 0x4d, 0xb3, 0x72, 0xfa, 0x6a, 0x96, 0x5e,
|
||||
0xc2, 0xf6, 0x99, 0xf5, 0x70, 0xb7, 0xb6, 0x5c, 0xba, 0xb0, 0x5f, 0xac,
|
||||
0x43, 0x27, 0x6c, 0xdf, 0x2f, 0x3e, 0xfb, 0xab, 0xdf, 0xd7, 0x5e, 0x4e,
|
||||
0x5f, 0x87, 0xeb, 0x2f, 0xad, 0xe8, 0xec, 0xe6, 0xb5, 0xb3, 0xf4, 0xb9,
|
||||
0x64, 0x7b, 0xab, 0xb7, 0xc3, 0xf3, 0xdb, 0xdd, 0x7d, 0xfb, 0xf1, 0xfe,
|
||||
0xd6, 0x59, 0x71, 0x5f, 0xd6, 0x4a, 0x15, 0x7f, 0x95, 0x3e, 0x5f, 0xb2,
|
||||
0xca, 0xc1, 0x15, 0xd2, 0xb8, 0xfd, 0x70, 0x75, 0x7d, 0xe3, 0xb4, 0xb6,
|
||||
0x2f, 0xcf, 0xdb, 0x8f, 0x5f, 0x90, 0x97, 0xeb, 0xab, 0xe3, 0xab, 0xe6,
|
||||
0xfe, 0xed, 0x75, 0xab, 0xc3, 0x9f, 0x3f, 0xf3, 0x61, 0x9f, 0x6d, 0x5f,
|
||||
0xda, 0xde, 0xed, 0xb6, 0x7d, 0xb7, 0xdd, 0x3f, 0xf6, 0xbf, 0xef, 0x5d,
|
||||
0x7d, 0xef, 0x90, 0x97, 0x97, 0xf5, 0x57, 0x27, 0x3a, 0x3b, 0x79, 0x8e,
|
||||
0x82, 0xe6, 0x53, 0xf0, 0xb8, 0x54, 0xa2, 0x6b, 0xcb, 0xc7, 0xec, 0xf5,
|
||||
0xd4, 0x5d, 0xbc, 0xaf, 0xf5, 0xd8, 0xf6, 0xc9, 0xc0, 0xb7, 0xcf, 0x77,
|
||||
0x5a, 0xf4, 0xf6, 0xf1, 0xfb, 0x6a, 0x74, 0x58, 0xd9, 0x5e, 0xda, 0x5e,
|
||||
0x5d, 0x7d, 0xf4, 0xaf, 0x76, 0xae, 0xbe, 0x1f, 0x7f, 0x21, 0xad, 0xa3,
|
||||
0x75, 0xd6, 0x0f, 0xef, 0x2a, 0xbb, 0x56, 0x6b, 0x75, 0x7b, 0x71, 0xf0,
|
||||
0xb4, 0xe2, 0x1e, 0xdd, 0x86, 0x27, 0xd5, 0x0a, 0xbb, 0xb9, 0xbd, 0x08,
|
||||
0x0e, 0xce, 0x7a, 0xd5, 0xd6, 0xed, 0xde, 0xd1, 0x33, 0x3d, 0xa8, 0x1c,
|
||||
0xaf, 0x2c, 0x47, 0xe7, 0xec, 0x39, 0x6c, 0x7f, 0xb6, 0x1f, 0xec, 0x95,
|
||||
0x95, 0x0b, 0xfb, 0xe8, 0xe8, 0xa9, 0x73, 0xd2, 0xb5, 0x8e, 0x6f, 0x0e,
|
||||
0xaf, 0x9b, 0xc3, 0xc5, 0xca, 0xfe, 0x5e, 0x75, 0xf5, 0xa1, 0xe7, 0x59,
|
||||
0xeb, 0x67, 0xe7, 0xfd, 0x20, 0xe8, 0xef, 0xdf, 0x86, 0x97, 0xbd, 0x87,
|
||||
0x2f, 0x87, 0x5f, 0x6c, 0x9b, 0x3e, 0x1f, 0xee, 0xb0, 0x9d, 0xe1, 0xe3,
|
||||
0x91, 0x47, 0x8e, 0x8e, 0xb7, 0x9f, 0x2e, 0xd6, 0x6f, 0xaf, 0xef, 0xd9,
|
||||
0xee, 0xf6, 0xfa, 0x89, 0xdd, 0xbc, 0x5f, 0xbf, 0x3d, 0xb8, 0x59, 0x3b,
|
||||
0xb9, 0x20, 0x5f, 0x9a, 0x83, 0xf0, 0xbc, 0x7d, 0x38, 0x0c, 0x6e, 0xbb,
|
||||
0x37, 0xcf, 0x4f, 0x37, 0xaf, 0xeb, 0x0e, 0xbb, 0x78, 0xe8, 0xbf, 0xf6,
|
||||
0x9b, 0x3b, 0xa5, 0xf3, 0x8b, 0xfd, 0xbb, 0xc1, 0x61, 0x73, 0xfd, 0x61,
|
||||
0xd1, 0x7c, 0xbe, 0xda, 0x19, 0x9e, 0x92, 0xbb, 0xa1, 0x7d, 0x77, 0x32,
|
||||
0xb8, 0x58, 0x5c, 0x3b, 0x39, 0x2b, 0xb9, 0xdb, 0xfc, 0x70, 0xed, 0xea,
|
||||
0x25, 0x0a, 0x16, 0xf7, 0x82, 0xd5, 0xc5, 0x1a, 0xa7, 0xcf, 0x2d, 0x1a,
|
||||
0x96, 0xee, 0xd9, 0xc1, 0xfa, 0xea, 0x61, 0xb0, 0xfa, 0x74, 0xf2, 0xf8,
|
||||
0x54, 0x5a, 0xbb, 0xac, 0x9d, 0x58, 0xd5, 0x0b, 0x7f, 0x70, 0xb4, 0xb2,
|
||||
0x7e, 0x16, 0x5e, 0x5a, 0x67, 0x95, 0xc5, 0x95, 0x57, 0xe7, 0x72, 0xef,
|
||||
0xd2, 0x3a, 0x69, 0x7f, 0xde, 0x76, 0x5b, 0xab, 0x9d, 0xc3, 0xeb, 0x83,
|
||||
0xe7, 0x8b, 0xf0, 0x92, 0x1c, 0x93, 0xde, 0x91, 0x7f, 0xf9, 0xba, 0x1b,
|
||||
0x0c, 0xfb, 0xf6, 0x5e, 0x8d, 0xdd, 0x2c, 0x3e, 0x3c, 0x87, 0xa7, 0xbb,
|
||||
0xfd, 0xb0, 0x72, 0xf4, 0xe5, 0x65, 0xfd, 0x8b, 0xd7, 0x59, 0xe3, 0x8b,
|
||||
0x2b, 0x8f, 0xce, 0xb3, 0xd8, 0xa6, 0xeb, 0xdb, 0xbb, 0xf3, 0xab, 0x93,
|
||||
0x95, 0xdd, 0xc7, 0xa3, 0x23, 0x43, 0x95, 0x5c, 0xaf, 0x1c, 0x50, 0x9f,
|
||||
0x12, 0xfe, 0x27, 0xe8, 0x7e, 0xc1, 0xd0, 0xc8, 0xc2, 0x0b, 0x63, 0x80,
|
||||
0x1d, 0x07, 0xb0, 0x1a, 0xc4, 0x80, 0x86, 0x18, 0xce, 0x0e, 0x80, 0xd3,
|
||||
0xe2, 0xcc, 0x24, 0x4e, 0x99, 0x38, 0xac, 0xeb, 0xd6, 0x7b, 0xcc, 0xb2,
|
||||
0x9c, 0x42, 0xcf, 0x92, 0x31, 0xb9, 0xf2, 0xc8, 0x49, 0xd7, 0xd6, 0x21,
|
||||
0x86, 0x56, 0x8b, 0x7c, 0xe7, 0xcc, 0xd9, 0xe5, 0xe5, 0xf5, 0x29, 0xf7,
|
||||
0x86, 0x2b, 0x74, 0x3e, 0xe0, 0x1f, 0xac, 0x5a, 0x5d, 0x2e, 0x5e, 0xc5,
|
||||
0x7a, 0xdd, 0x0f, 0x56, 0xad, 0x57, 0xa7, 0x56, 0x4d, 0xb8, 0x44, 0x0c,
|
||||
0x76, 0x2e, 0xaf, 0xcb, 0x72, 0x23, 0x0e, 0xbb, 0x42, 0x28, 0x23, 0x77,
|
||||
0x8c, 0xae, 0x18, 0x7d, 0x72, 0xb1, 0x98, 0x1a, 0x45, 0x88, 0xab, 0x52,
|
||||
0x79, 0x69, 0xda, 0x81, 0xe7, 0x76, 0xe9, 0x17, 0x91, 0x7e, 0xe4, 0x63,
|
||||
0x4b, 0x79, 0x36, 0x66, 0x10, 0x82, 0x70, 0xdf, 0x7f, 0x17, 0xd9, 0x9a,
|
||||
0x14, 0x67, 0x6b, 0x12, 0x71, 0x2d, 0x49, 0x49, 0xa3, 0x22, 0x66, 0x1b,
|
||||
0x16, 0x40, 0x37, 0x69, 0xd9, 0x67, 0x03, 0xea, 0x94, 0x45, 0xd4, 0xaa,
|
||||
0x57, 0xd5, 0xb7, 0x7c, 0xa8, 0x4d, 0xe7, 0x13, 0x17, 0x7c, 0xac, 0x00,
|
||||
0x9e, 0x0e, 0x58, 0x4f, 0xc4, 0x04, 0x56, 0xca, 0x10, 0x48, 0x7b, 0xf8,
|
||||
0x1b, 0x47, 0x54, 0x2f, 0x28, 0xb7, 0xa3, 0x6e, 0x87, 0x0d, 0x80, 0xe8,
|
||||
0x0e, 0x73, 0x19, 0xa7, 0x52, 0x2d, 0x7c, 0xff, 0x3d, 0x05, 0xf3, 0x4c,
|
||||
0x87, 0x9d, 0x80, 0xf4, 0x68, 0x28, 0xfd, 0x22, 0x98, 0xb7, 0x4e, 0xe0,
|
||||
0xf5, 0xc6, 0x19, 0xc5, 0x3b, 0xf7, 0x32, 0x2f, 0xef, 0xef, 0x9f, 0x6c,
|
||||
0x4a, 0x20, 0xcc, 0x16, 0xe4, 0x0e, 0x71, 0x42, 0x16, 0x08, 0x75, 0x1f,
|
||||
0x25, 0x66, 0x89, 0xfa, 0x2f, 0x82, 0x46, 0x8d, 0xf2, 0x23, 0x4c, 0x28,
|
||||
0x6b, 0x42, 0xec, 0x98, 0x16, 0x16, 0x24, 0x94, 0x98, 0x61, 0x65, 0xf2,
|
||||
0x9f, 0x4f, 0x28, 0x9b, 0x19, 0x08, 0x17, 0xe3, 0x44, 0x95, 0x73, 0xaf,
|
||||
0x37, 0x46, 0x1a, 0x6f, 0xf4, 0x62, 0xf5, 0xb7, 0x11, 0x4a, 0x34, 0x83,
|
||||
0x4f, 0xb0, 0x35, 0xc0, 0xa6, 0xf6, 0xc9, 0x0f, 0x62, 0x49, 0x7f, 0x00,
|
||||
0x31, 0xe5, 0x22, 0x0f, 0x19, 0x20, 0xbe, 0x8f, 0x56, 0x4f, 0x93, 0x0d,
|
||||
0xb4, 0x8e, 0x10, 0xae, 0x20, 0xc2, 0x64, 0xaa, 0x84, 0x76, 0x93, 0xd2,
|
||||
0x84, 0x1c, 0xa7, 0x42, 0x11, 0x2f, 0x22, 0x92, 0x82, 0xc7, 0xc2, 0xe4,
|
||||
0x05, 0x57, 0x0a, 0xe5, 0x20, 0x9c, 0x5a, 0xef, 0x9f, 0x42, 0x4e, 0x78,
|
||||
0x14, 0xce, 0xa0, 0x73, 0x69, 0x44, 0xa6, 0x90, 0x62, 0x26, 0x43, 0x13,
|
||||
0xb8, 0x3b, 0x61, 0x8b, 0x42, 0xe2, 0x91, 0xe0, 0xad, 0x09, 0x54, 0x09,
|
||||
0x71, 0xe5, 0x84, 0x2b, 0xb4, 0x9c, 0x4f, 0x7d, 0x12, 0xb8, 0x30, 0xf6,
|
||||
0x96, 0xfa, 0xa9, 0x2a, 0x48, 0x6d, 0x8a, 0x35, 0xc8, 0xb0, 0xdc, 0x2e,
|
||||
0x6d, 0x8c, 0x72, 0x34, 0x30, 0x17, 0xee, 0x79, 0x0e, 0x67, 0x7e, 0x01,
|
||||
0x71, 0x69, 0x75, 0xb1, 0x38, 0x92, 0xa2, 0x10, 0x2b, 0x12, 0xf0, 0xc2,
|
||||
0x42, 0xd6, 0x66, 0x0e, 0xa6, 0x35, 0x36, 0x58, 0x35, 0x75, 0x8b, 0xaa,
|
||||
0x89, 0x4e, 0x27, 0x83, 0xa8, 0x21, 0x92, 0xbc, 0xd8, 0x11, 0xa0, 0xd6,
|
||||
0xd2, 0xa0, 0xa0, 0x2c, 0xc1, 0x79, 0xa9, 0xe0, 0x97, 0xf2, 0xb2, 0xa8,
|
||||
0x66, 0x78, 0x4c, 0xd2, 0xeb, 0x11, 0xe9, 0x19, 0x6a, 0xc4, 0x23, 0xf8,
|
||||
0xe2, 0x4f, 0x8e, 0x47, 0x10, 0xcc, 0x0c, 0x99, 0x97, 0x41, 0x3c, 0x2f,
|
||||
0x76, 0x5e, 0xcd, 0x70, 0xa8, 0xdf, 0x18, 0x8b, 0x0f, 0xbe, 0xa7, 0x12,
|
||||
0x80, 0xb7, 0x69, 0x06, 0xb3, 0x55, 0xd0, 0x8a, 0x3a, 0xce, 0xb8, 0x1b,
|
||||
0xe3, 0x52, 0xb1, 0x9e, 0x0c, 0x4a, 0xfa, 0x4a, 0x28, 0x51, 0xc8, 0xaf,
|
||||
0x00, 0x5e, 0xd9, 0x8b, 0xf8, 0x88, 0x3c, 0x3d, 0xb4, 0xbd, 0xbe, 0xfb,
|
||||
0x16, 0x5b, 0x5c, 0x0a, 0xa1, 0x36, 0xfa, 0x5c, 0xee, 0x85, 0xdd, 0xe2,
|
||||
0xf0, 0x34, 0xcb, 0x6a, 0xe3, 0x9a, 0x0f, 0xb6, 0x5e, 0x10, 0x01, 0x6e,
|
||||
0xae, 0x57, 0x17, 0x4f, 0xa8, 0x88, 0x0f, 0x4a, 0x19, 0xbe, 0xa8, 0x8d,
|
||||
0xcc, 0xfe, 0x8c, 0x05, 0x2c, 0xdc, 0xef, 0xef, 0x63, 0x27, 0x13, 0xfa,
|
||||
0xcc, 0x75, 0x21, 0xdb, 0x47, 0xef, 0xf5, 0x56, 0xfd, 0xed, 0x6d, 0x0c,
|
||||
0x2f, 0xf0, 0x40, 0x9b, 0xa9, 0x52, 0x55, 0xdf, 0x51, 0xc7, 0xa6, 0x3f,
|
||||
0x2c, 0xad, 0x56, 0x2d, 0xda, 0x55, 0xdf, 0xdf, 0xf5, 0x2c, 0x8c, 0x38,
|
||||
0xbf, 0x0d, 0xe8, 0xf7, 0x88, 0x05, 0x90, 0xdf, 0xfe, 0x84, 0xab, 0x51,
|
||||
0x69, 0x87, 0x5c, 0x21, 0x3b, 0x1f, 0xf1, 0x25, 0xd8, 0xd2, 0x62, 0xde,
|
||||
0xc6, 0xce, 0x36, 0x8b, 0x1c, 0x1c, 0xe9, 0xd8, 0xa9, 0x22, 0x3e, 0x32,
|
||||
0xd6, 0xbe, 0xd5, 0xb1, 0xfa, 0xa1, 0xdd, 0xc7, 0xc3, 0x65, 0xa1, 0xf1,
|
||||
0xc9, 0x46, 0x0b, 0x44, 0x3e, 0x01, 0xcb, 0xe6, 0xa3, 0xcf, 0xb0, 0x3d,
|
||||
0x51, 0x28, 0x84, 0x16, 0x57, 0xc8, 0xec, 0x15, 0xf5, 0x32, 0xf9, 0x0a,
|
||||
0x23, 0x0d, 0xd4, 0xd0, 0x8e, 0x03, 0x55, 0x73, 0x62, 0x1f, 0x42, 0xfd,
|
||||
0x51, 0x9b, 0x20, 0x84, 0x95, 0x3f, 0xc3, 0x1f, 0x58, 0x99, 0xd4, 0xac,
|
||||
0xcb, 0x63, 0x4f, 0x22, 0x02, 0xf6, 0x46, 0x45, 0x94, 0x7b, 0x9b, 0x1b,
|
||||
0x10, 0x7d, 0x98, 0xcf, 0x37, 0x5f, 0x48, 0x20, 0xa1, 0xe7, 0xd4, 0x3a,
|
||||
0xe1, 0x91, 0xdb, 0xf1, 0x1a, 0x9d, 0xc8, 0x35, 0x91, 0x45, 0x29, 0xa4,
|
||||
0xfc, 0x34, 0x56, 0x14, 0x85, 0x6a, 0x5c, 0x7d, 0xe3, 0xf3, 0xf3, 0x10,
|
||||
0x25, 0x81, 0x19, 0xaa, 0x3b, 0x5e, 0x57, 0xe1, 0xaa, 0x66, 0x79, 0x66,
|
||||
0x84, 0xb1, 0x41, 0xef, 0x52, 0xde, 0x8c, 0xc3, 0xc4, 0xce, 0xf0, 0xc8,
|
||||
0x52, 0xe4, 0x8c, 0x82, 0xc9, 0xaa, 0x2e, 0x24, 0x85, 0x4d, 0x12, 0x83,
|
||||
0xff, 0xf8, 0x21, 0xcb, 0x1a, 0xdd, 0xfa, 0xd9, 0x42, 0x58, 0x64, 0x3a,
|
||||
0x24, 0x0c, 0x4f, 0xa1, 0x3a, 0xd5, 0xc1, 0x62, 0x15, 0x59, 0x68, 0xb2,
|
||||
0xac, 0xd6, 0xff, 0xd0, 0xca, 0x80, 0xf6, 0x40, 0x50, 0xa3, 0xc5, 0x63,
|
||||
0x7a, 0xb1, 0x3f, 0xa2, 0x0b, 0x31, 0xe8, 0x71, 0x39, 0x65, 0xd0, 0x2d,
|
||||
0xb9, 0x4f, 0x18, 0x97, 0xeb, 0x72, 0x52, 0x58, 0xc9, 0xef, 0x23, 0x41,
|
||||
0x04, 0x10, 0xca, 0xb0, 0x6e, 0xba, 0x06, 0x4d, 0x56, 0xa8, 0xfa, 0xc6,
|
||||
0x3a, 0x0a, 0xdd, 0xa8, 0x55, 0x17, 0x97, 0xd5, 0x80, 0xf2, 0x28, 0x70,
|
||||
0x25, 0x5a, 0x92, 0xa5, 0x1d, 0x19, 0xd4, 0x3d, 0x50, 0x84, 0x34, 0x8d,
|
||||
0x72, 0xad, 0xc1, 0x4b, 0x25, 0x0d, 0xe7, 0x6c, 0x28, 0xb4, 0x62, 0x88,
|
||||
0xc9, 0x0d, 0xb5, 0x91, 0xce, 0x07, 0xdf, 0xb2, 0x0f, 0xfe, 0xdb, 0x52,
|
||||
0x16, 0xd5, 0xd2, 0x57, 0x59, 0x3a, 0x61, 0x3b, 0xb2, 0x26, 0x4b, 0xad,
|
||||
0xf8, 0xe7, 0x20, 0xfe, 0xb9, 0x11, 0x3f, 0x17, 0xf0, 0xef, 0xb7, 0xaf,
|
||||
0xfc, 0x5b, 0x96, 0x9a, 0x4e, 0x40, 0x43, 0xfb, 0x5a, 0x38, 0x7d, 0x05,
|
||||
0x54, 0x7d, 0x96, 0x44, 0xe2, 0xb0, 0x90, 0x93, 0xbf, 0xac, 0x24, 0xab,
|
||||
0xd1, 0x39, 0xe8, 0xba, 0x2a, 0x37, 0x90, 0x5e, 0xd7, 0x70, 0x21, 0xfa,
|
||||
0x3c, 0xb4, 0x4e, 0x0f, 0x39, 0xf7, 0xaf, 0xc0, 0x86, 0x68, 0xc8, 0x1b,
|
||||
0xae, 0xee, 0xb9, 0x28, 0x53, 0x23, 0x45, 0x0c, 0xa8, 0x70, 0x32, 0xa8,
|
||||
0x42, 0x03, 0x22, 0xd2, 0x9c, 0xe1, 0xea, 0x31, 0x82, 0x2d, 0x94, 0x2e,
|
||||
0xae, 0x6c, 0x06, 0x01, 0x08, 0xc0, 0x55, 0xeb, 0x0a, 0x35, 0x94, 0x58,
|
||||
0x99, 0x8c, 0xe3, 0xeb, 0xf3, 0x33, 0x1d, 0x94, 0x3b, 0xa4, 0x8a, 0x0b,
|
||||
0xdb, 0x11, 0xfa, 0xa0, 0x40, 0xf4, 0x06, 0x94, 0x55, 0x55, 0x75, 0x3e,
|
||||
0xf4, 0x51, 0x70, 0x65, 0x49, 0x4e, 0x54, 0x4f, 0x67, 0xe1, 0xf9, 0xf3,
|
||||
0x96, 0x42, 0x4b, 0x86, 0xbc, 0xd1, 0xc3, 0xa8, 0x24, 0x31, 0xcb, 0x58,
|
||||
0x48, 0x22, 0xd4, 0x82, 0x04, 0x99, 0x91, 0xb1, 0x50, 0x5d, 0x90, 0x3c,
|
||||
0x9f, 0xb3, 0x5e, 0xd4, 0xc3, 0x67, 0xb0, 0x00, 0x63, 0xe1, 0x33, 0x8c,
|
||||
0xd9, 0xa0, 0xdf, 0xf0, 0xb4, 0x02, 0xb3, 0xc8, 0xc0, 0x58, 0x00, 0xd7,
|
||||
0xb1, 0x20, 0xbd, 0x10, 0x27, 0xa2, 0xc6, 0x82, 0x5c, 0x52, 0x6a, 0xa5,
|
||||
0x16, 0xe1, 0xb6, 0x2e, 0xdc, 0xab, 0xf2, 0xf9, 0xf3, 0xbf, 0x27, 0xe8,
|
||||
0xa2, 0x90, 0x5a, 0x3b, 0x43, 0x4e, 0xc3, 0x4a, 0x32, 0xc0, 0xc1, 0xc5,
|
||||
0x38, 0x62, 0x44, 0x55, 0x4b, 0xf2, 0x82, 0x24, 0x1a, 0x6c, 0x02, 0x02,
|
||||
0x37, 0x72, 0x4a, 0x30, 0x35, 0xbf, 0x3c, 0x09, 0x12, 0xd6, 0x4b, 0x20,
|
||||
0x69, 0x2a, 0x79, 0x1d, 0x49, 0x2e, 0x7d, 0xbc, 0x58, 0x20, 0xdb, 0x94,
|
||||
0x4b, 0xbc, 0x24, 0x6f, 0x54, 0x04, 0xe3, 0x9b, 0x23, 0x91, 0x44, 0x6e,
|
||||
0x18, 0xf9, 0xbe, 0x17, 0x40, 0xa0, 0xc7, 0xe6, 0x5f, 0x38, 0x3f, 0x2f,
|
||||
0xe4, 0x23, 0x6d, 0x60, 0xf6, 0x2a, 0xe4, 0x93, 0x44, 0xad, 0x85, 0xcd,
|
||||
0xfb, 0xed, 0xab, 0xb3, 0xa3, 0xb3, 0x83, 0xf8, 0x8b, 0x30, 0x02, 0x63,
|
||||
0x21, 0x89, 0x61, 0x0b, 0xa2, 0x73, 0x18, 0x0e, 0x43, 0x4e, 0x7b, 0xf3,
|
||||
0x6e, 0x3b, 0xf4, 0x1b, 0x98, 0xef, 0x12, 0xe6, 0x86, 0xf1, 0x5b, 0x06,
|
||||
0x4b, 0x3c, 0xd0, 0x81, 0xe9, 0x2e, 0x7a, 0xea, 0xfa, 0x46, 0x3b, 0xa8,
|
||||
0x00, 0x6d, 0x33, 0xc8, 0x41, 0x8a, 0x11, 0xdf, 0x66, 0xf2, 0x23, 0xab,
|
||||
0x6a, 0x5d, 0xec, 0x9f, 0x20, 0x42, 0x58, 0x98, 0xb1, 0x30, 0x1d, 0xdb,
|
||||
0xa8, 0x95, 0x84, 0x89, 0xbe, 0x0d, 0x3e, 0x33, 0xd7, 0xd3, 0x6b, 0x7b,
|
||||
0x8e, 0xb5, 0xb0, 0x79, 0x74, 0x76, 0x74, 0x23, 0x35, 0xaf, 0xae, 0xce,
|
||||
0xaf, 0xa4, 0xb9, 0x14, 0xf4, 0x6c, 0x77, 0x53, 0xa0, 0xe9, 0x54, 0x93,
|
||||
0xaf, 0x2f, 0x8e, 0xf6, 0xf7, 0xaf, 0xe5, 0x39, 0x23, 0x15, 0x38, 0xe8,
|
||||
0x1b, 0x88, 0x6f, 0x26, 0x94, 0xde, 0xb3, 0xc5, 0x02, 0x00, 0x12, 0xfb,
|
||||
0x85, 0x24, 0x82, 0x18, 0x72, 0x1c, 0x42, 0x80, 0xb1, 0x77, 0x0d, 0x6c,
|
||||
0xc2, 0xa7, 0xae, 0x22, 0x1f, 0x34, 0x6f, 0xc0, 0x34, 0x2b, 0x09, 0x5a,
|
||||
0x6d, 0xae, 0xaa, 0xc2, 0xa7, 0x10, 0x52, 0x33, 0xc5, 0x8d, 0x1c, 0x47,
|
||||
0x1d, 0xdb, 0x6a, 0xde, 0x34, 0xc0, 0x75, 0x10, 0x07, 0x8a, 0x16, 0x45,
|
||||
0x16, 0x9c, 0xd5, 0xa5, 0xaf, 0x72, 0x89, 0x26, 0x56, 0x54, 0x92, 0xbf,
|
||||
0x49, 0xf8, 0x96, 0xb3, 0x91, 0x31, 0x20, 0x93, 0xb8, 0xe8, 0x8b, 0xcf,
|
||||
0x68, 0x7f, 0x37, 0x2e, 0x54, 0xd0, 0xf2, 0x63, 0x6f, 0x32, 0x37, 0x37,
|
||||
0x5b, 0x2e, 0xe4, 0x85, 0xee, 0x70, 0xf0, 0x7c, 0x7a, 0xda, 0xf9, 0xf9,
|
||||
0xf1, 0x63, 0x6e, 0x0e, 0xb6, 0xbe, 0xc3, 0x82, 0x9e, 0x22, 0xef, 0xda,
|
||||
0x98, 0xae, 0x85, 0x12, 0xf7, 0xa4, 0xa1, 0x17, 0x05, 0x52, 0x0a, 0x47,
|
||||
0xea, 0x33, 0xc7, 0x91, 0xda, 0x10, 0xcb, 0xbc, 0x90, 0x4b, 0xac, 0x83,
|
||||
0x5f, 0x25, 0x54, 0x18, 0xe6, 0x46, 0x20, 0x08, 0x54, 0x41, 0x57, 0x68,
|
||||
0x33, 0x80, 0xdf, 0x63, 0xa1, 0x49, 0x02, 0x0b, 0xb0, 0x84, 0xca, 0x5c,
|
||||
0x4d, 0x45, 0x59, 0x8c, 0xa9, 0x2e, 0x9e, 0x46, 0x3f, 0xf2, 0x59, 0x53,
|
||||
0x14, 0x1b, 0x73, 0x74, 0xf6, 0xc6, 0x5b, 0x23, 0xb0, 0xf9, 0x15, 0x63,
|
||||
0x12, 0x60, 0xc5, 0x85, 0x88, 0xad, 0xfb, 0xa0, 0x57, 0x54, 0xec, 0x41,
|
||||
0x2c, 0x36, 0x74, 0x52, 0xd4, 0x10, 0xe2, 0x0f, 0x78, 0x78, 0xcf, 0xb8,
|
||||
0xad, 0xc8, 0x15, 0x59, 0xdd, 0xa2, 0x75, 0xf8, 0x29, 0x51, 0x55, 0x87,
|
||||
0xed, 0xcc, 0x0e, 0xeb, 0xa1, 0x03, 0x35, 0x19, 0x64, 0x64, 0xe5, 0x1a,
|
||||
0xa8, 0x38, 0x68, 0x49, 0xd4, 0x0e, 0x39, 0x66, 0xe2, 0x30, 0x04, 0x01,
|
||||
0x91, 0x84, 0xfc, 0x08, 0x93, 0xb9, 0xf3, 0x8e, 0x98, 0x9f, 0xdd, 0x3a,
|
||||
0x30, 0x7e, 0x4e, 0x0f, 0x45, 0x39, 0x04, 0x81, 0xd4, 0xc5, 0x50, 0x8a,
|
||||
0x8e, 0xd4, 0x33, 0x66, 0xb1, 0x45, 0x55, 0x8d, 0x8c, 0x3f, 0xc6, 0xeb,
|
||||
0x93, 0xef, 0x8a, 0x2c, 0x4a, 0x4e, 0x8c, 0x65, 0x86, 0x42, 0x84, 0x4a,
|
||||
0x1b, 0x32, 0x1a, 0xab, 0xac, 0x11, 0xbd, 0x17, 0xa1, 0xad, 0x83, 0xc5,
|
||||
0xcd, 0xd5, 0xe0, 0x0d, 0xcd, 0xd7, 0x90, 0xb1, 0x0b, 0x27, 0x6b, 0x9e,
|
||||
0x4e, 0x7c, 0xd0, 0x5c, 0x6b, 0xd7, 0x66, 0x8e, 0xa5, 0x90, 0x4c, 0x24,
|
||||
0x2c, 0x86, 0xae, 0x6a, 0x8e, 0xa1, 0x58, 0x3a, 0xb8, 0x17, 0xd9, 0x07,
|
||||
0xcf, 0x79, 0x24, 0x46, 0x35, 0x2b, 0xc1, 0x87, 0xc9, 0x06, 0xbe, 0xc5,
|
||||
0x18, 0x70, 0x02, 0xbe, 0x25, 0x71, 0xf3, 0x4e, 0x78, 0x5d, 0x90, 0xc1,
|
||||
0x04, 0x52, 0x6b, 0x36, 0xd2, 0x76, 0x04, 0x75, 0x86, 0x8b, 0x58, 0x43,
|
||||
0x43, 0x71, 0xb2, 0xe1, 0xea, 0xd6, 0xc7, 0x10, 0x34, 0x09, 0xca, 0xf9,
|
||||
0x15, 0x50, 0xcc, 0x50, 0x42, 0xc1, 0x40, 0x6c, 0xd6, 0x5a, 0x38, 0x69,
|
||||
0xd7, 0xd8, 0xae, 0xc5, 0xe1, 0x0c, 0xba, 0xd6, 0xf3, 0x1e, 0x4e, 0xcd,
|
||||
0x63, 0x0b, 0x7f, 0x05, 0x9b, 0x69, 0x28, 0x2c, 0x0f, 0x69, 0x5f, 0x6c,
|
||||
0x4a, 0x1e, 0x14, 0x9b, 0x0d, 0x0a, 0x5d, 0x1c, 0x02, 0x0a, 0x0c, 0xc5,
|
||||
0x14, 0x64, 0xc7, 0x55, 0xe8, 0x8e, 0xc0, 0x00, 0x3e, 0xc6, 0x2c, 0x26,
|
||||
0x3f, 0x0f, 0xdf, 0xfc, 0x15, 0x52, 0x7b, 0x86, 0x12, 0x08, 0x0c, 0xa9,
|
||||
0xad, 0x69, 0x41, 0x96, 0x72, 0xb4, 0x56, 0x1c, 0x8a, 0xd1, 0xc5, 0x0d,
|
||||
0x90, 0x53, 0x48, 0x8f, 0x0d, 0x79, 0x09, 0x8a, 0x24, 0xfc, 0x32, 0xb6,
|
||||
0xb3, 0x2a, 0x90, 0x95, 0xc5, 0x1f, 0xfc, 0x02, 0xfe, 0x46, 0x4f, 0x20,
|
||||
0xcf, 0x58, 0xae, 0xd6, 0xcb, 0xe2, 0x4f, 0x3c, 0x05, 0x8e, 0xce, 0x46,
|
||||
0xd4, 0x53, 0x35, 0x30, 0xde, 0x9f, 0xe2, 0x12, 0x98, 0x6c, 0xea, 0xf8,
|
||||
0x02, 0x0d, 0xcd, 0xa2, 0xd9, 0x92, 0x27, 0x40, 0x82, 0xd1, 0x29, 0xe6,
|
||||
0x4c, 0x90, 0xc9, 0xf6, 0xc4, 0x72, 0x4b, 0xdc, 0xbe, 0x99, 0x4b, 0xac,
|
||||
0x92, 0xfc, 0x53, 0x2d, 0xd8, 0x13, 0x02, 0xa9, 0x94, 0x29, 0x7c, 0xed,
|
||||
0x38, 0x99, 0xa2, 0xb1, 0x13, 0xe0, 0x0d, 0xc8, 0xa4, 0x0c, 0xa2, 0xa3,
|
||||
0x09, 0x87, 0x3a, 0xc4, 0xdc, 0x2e, 0xb7, 0xc1, 0xbf, 0xf2, 0x74, 0xe8,
|
||||
0x6b, 0xf5, 0x9b, 0x30, 0x33, 0xb0, 0x2f, 0x91, 0xce, 0x4c, 0xba, 0xab,
|
||||
0x1f, 0x3f, 0x94, 0xe4, 0x0b, 0x9a, 0x5c, 0x29, 0x79, 0x56, 0xd3, 0xe9,
|
||||
0xc6, 0xa4, 0xfb, 0x4b, 0x27, 0x94, 0x70, 0x36, 0x04, 0x18, 0xcd, 0x41,
|
||||
0xda, 0xc0, 0xb3, 0x3d, 0xe7, 0x48, 0x2b, 0x22, 0xca, 0xd5, 0xf1, 0x2c,
|
||||
0x33, 0xb6, 0x48, 0x65, 0x4c, 0x5e, 0x8a, 0x0a, 0x60, 0xb1, 0x42, 0x58,
|
||||
0x71, 0x46, 0x9c, 0xd2, 0x0f, 0x2e, 0xb3, 0xa7, 0xa8, 0x0d, 0x59, 0x36,
|
||||
0x0c, 0x83, 0x6f, 0x25, 0xe1, 0x70, 0x5b, 0x4a, 0xf3, 0x0d, 0xa9, 0x17,
|
||||
0x41, 0xc8, 0x81, 0xd0, 0xd3, 0x85, 0xf2, 0x0c, 0xf3, 0x7d, 0x3e, 0xe1,
|
||||
0x87, 0x93, 0x15, 0xfb, 0x69, 0x7e, 0x12, 0x2f, 0x80, 0xea, 0x0f, 0x82,
|
||||
0x8d, 0x05, 0x81, 0x8b, 0xdb, 0x12, 0x91, 0x16, 0x2a, 0x0b, 0x12, 0x08,
|
||||
0x3c, 0x20, 0x26, 0xe4, 0x52, 0x00, 0x24, 0x26, 0x7d, 0x57, 0x6c, 0xa9,
|
||||
0x82, 0x5c, 0x87, 0xff, 0x0b, 0x4a, 0x85, 0x20, 0xa5, 0x42, 0x62, 0x95,
|
||||
0x09, 0x6a, 0x61, 0x77, 0x78, 0x09, 0x37, 0x06, 0xf3, 0x83, 0x1c, 0x09,
|
||||
0x40, 0x43, 0x50, 0x48, 0x03, 0xd7, 0xd1, 0x2c, 0x15, 0xf8, 0xde, 0x9b,
|
||||
0xf1, 0x3d, 0xb1, 0x1c, 0x9c, 0x42, 0x67, 0x81, 0x80, 0xb4, 0xe3, 0xda,
|
||||
0x86, 0x2c, 0xcd, 0x8c, 0x30, 0x51, 0x78, 0x9f, 0x0c, 0x46, 0x37, 0x90,
|
||||
0x98, 0x42, 0x28, 0x22, 0x31, 0xcb, 0xee, 0xcc, 0x40, 0x24, 0x27, 0x9d,
|
||||
0x29, 0xa0, 0x9f, 0xcf, 0x34, 0x0d, 0x8b, 0xbd, 0xc8, 0xea, 0xb8, 0x6a,
|
||||
0xb4, 0x3e, 0x8c, 0xef, 0xe3, 0x68, 0xa2, 0x26, 0x1a, 0xfa, 0x41, 0x74,
|
||||
0x8f, 0x5d, 0xe0, 0x74, 0x46, 0x16, 0xbb, 0xbe, 0x9f, 0x2c, 0x4b, 0x3d,
|
||||
0xe7, 0x8c, 0xd5, 0xee, 0xe4, 0xb0, 0x68, 0x11, 0xe0, 0x78, 0xc6, 0xa8,
|
||||
0x37, 0x58, 0xaf, 0x2b, 0x85, 0x81, 0x89, 0x25, 0x00, 0xc5, 0x82, 0x20,
|
||||
0x49, 0x68, 0xa1, 0xc6, 0x28, 0x8f, 0xba, 0x3a, 0xbf, 0x35, 0xb0, 0xe6,
|
||||
0x28, 0x67, 0x1b, 0x63, 0x52, 0xd2, 0x37, 0x26, 0x11, 0xf7, 0x1a, 0x52,
|
||||
0xee, 0xa0, 0xad, 0xb1, 0x20, 0x41, 0x3a, 0x3d, 0xde, 0x10, 0xe7, 0x5f,
|
||||
0x49, 0x5c, 0xd9, 0xa4, 0x7f, 0x9c, 0xe9, 0x2f, 0x6c, 0x6e, 0x9b, 0x54,
|
||||
0x8a, 0xd1, 0x40, 0x1a, 0x19, 0x39, 0x96, 0xb0, 0x57, 0x91, 0x5f, 0x42,
|
||||
0x52, 0x64, 0x49, 0xd8, 0x49, 0x96, 0xb8, 0x4d, 0x25, 0x71, 0x06, 0xea,
|
||||
0x52, 0xb4, 0xe7, 0x20, 0x1e, 0xad, 0xe0, 0xb2, 0x0a, 0x31, 0xa9, 0xfe,
|
||||
0x14, 0x4a, 0xba, 0xb4, 0x17, 0xe7, 0x18, 0xe0, 0x67, 0x31, 0x69, 0xc5,
|
||||
0x3c, 0x44, 0x42, 0xfd, 0xa4, 0x01, 0x14, 0xb3, 0x69, 0x21, 0x02, 0x3a,
|
||||
0x2b, 0xea, 0x22, 0x3e, 0xe0, 0x69, 0xae, 0x3c, 0xda, 0xb8, 0x51, 0xdb,
|
||||
0x44, 0x12, 0x5b, 0xb3, 0x00, 0x65, 0x0b, 0x4c, 0xdf, 0x8c, 0xcb, 0x60,
|
||||
0x5e, 0x54, 0x06, 0xf3, 0x82, 0x32, 0x78, 0xa6, 0x28, 0x33, 0x28, 0x41,
|
||||
0x90, 0x48, 0x5e, 0xf2, 0x6a, 0x70, 0x9b, 0x85, 0xb9, 0xdc, 0xfe, 0x5d,
|
||||
0xe3, 0xd9, 0x62, 0x02, 0x5c, 0x36, 0x8f, 0x2b, 0x88, 0x4c, 0xe6, 0xd8,
|
||||
0x4b, 0x9a, 0x0d, 0x2f, 0x1e, 0xb3, 0x24, 0x74, 0xc9, 0x10, 0xf3, 0x2a,
|
||||
0xca, 0x56, 0xfd, 0x3f, 0x74, 0xe5, 0xeb, 0x7f, 0xea, 0xdf, 0x4a, 0xaa,
|
||||
0xba, 0xf5, 0x6f, 0x15, 0x9d, 0x0e, 0xa8, 0x09, 0x13, 0xbf, 0xd6, 0xbe,
|
||||
0xa9, 0x6a, 0x08, 0x0e, 0xd0, 0xb4, 0x15, 0xec, 0x2f, 0x9c, 0x7a, 0x20,
|
||||
0x96, 0x5d, 0x02, 0x85, 0xb7, 0xaa, 0xbe, 0x99, 0xf0, 0x8b, 0xd4, 0xc9,
|
||||
0x75, 0xf1, 0x64, 0xf3, 0xde, 0xf8, 0xc9, 0x49, 0x1e, 0x9f, 0xc2, 0xd1,
|
||||
0x03, 0x04, 0xcf, 0xf8, 0xd1, 0x4c, 0xa7, 0xa5, 0xef, 0xbe, 0x9f, 0x3e,
|
||||
0x85, 0xe9, 0xf4, 0x01, 0x42, 0x48, 0x1a, 0x1b, 0xb5, 0x8c, 0xab, 0x89,
|
||||
0xfe, 0x5c, 0xea, 0x7d, 0xb7, 0x9b, 0xd2, 0xe7, 0x8f, 0x9f, 0x68, 0xfa,
|
||||
0xd8, 0x65, 0x9d, 0xe4, 0x89, 0x99, 0x5e, 0x21, 0x3d, 0x81, 0xe2, 0x6a,
|
||||
0x5e, 0xd2, 0xc3, 0x98, 0xe9, 0xcc, 0x22, 0x47, 0xf8, 0x3a, 0xc5, 0x9d,
|
||||
0xcc, 0x0d, 0x66, 0x2d, 0x70, 0x18, 0xe6, 0x34, 0x34, 0x37, 0x9d, 0x43,
|
||||
0x92, 0xa5, 0x78, 0xea, 0x96, 0x8c, 0x37, 0x0d, 0x3a, 0x50, 0x3c, 0x5a,
|
||||
0x10, 0x43, 0x30, 0x75, 0xf6, 0x3a, 0x12, 0xa8, 0xf2, 0x16, 0x84, 0x89,
|
||||
0x49, 0xab, 0xd9, 0xbc, 0x03, 0x35, 0x1e, 0x15, 0xba, 0xbc, 0x38, 0x28,
|
||||
0x6f, 0xe4, 0xfb, 0x57, 0x63, 0xed, 0x0b, 0x77, 0x86, 0xbb, 0x58, 0xef,
|
||||
0x9f, 0x41, 0x50, 0x52, 0xe4, 0xcc, 0x65, 0x11, 0xd0, 0xc2, 0x34, 0x7c,
|
||||
0xe7, 0xd7, 0xc6, 0x9d, 0xb1, 0x98, 0x5c, 0x17, 0xd2, 0xd7, 0x82, 0xf2,
|
||||
0x72, 0x7e, 0xde, 0x01, 0x26, 0xde, 0x45, 0x54, 0x9b, 0x22, 0xb7, 0x09,
|
||||
0x66, 0xf9, 0x4f, 0x23, 0x97, 0xe8, 0x68, 0xa8, 0xb7, 0x41, 0x42, 0x76,
|
||||
0x04, 0x3f, 0x98, 0x4a, 0x4d, 0x13, 0x7f, 0x11, 0x47, 0xb5, 0x7f, 0x1a,
|
||||
0xfd, 0x96, 0xa0, 0xfb, 0x83, 0x48, 0x8b, 0xba, 0xa6, 0x4d, 0xa9, 0x5a,
|
||||
0x01, 0x83, 0x7b, 0x5e, 0x5f, 0x38, 0xad, 0x9f, 0x70, 0x98, 0x24, 0xa0,
|
||||
0x7f, 0x1d, 0x9f, 0xdc, 0xf0, 0x3e, 0xa8, 0xdd, 0x13, 0x22, 0xcb, 0xe2,
|
||||
0x48, 0x00, 0x03, 0x0f, 0x04, 0x5a, 0x5e, 0x92, 0xb7, 0xd2, 0x0f, 0x06,
|
||||
0x0f, 0x22, 0x2a, 0xbf, 0xff, 0x19, 0x02, 0xb9, 0x12, 0xc9, 0x62, 0xa5,
|
||||
0x05, 0xc4, 0xfd, 0x6d, 0xbb, 0x9e, 0xc4, 0x18, 0x1f, 0xc2, 0x9a, 0x0f,
|
||||
0xb4, 0xc7, 0x24, 0x49, 0x72, 0xc9, 0x2b, 0xc9, 0x10, 0xcc, 0xa0, 0x6c,
|
||||
0x50, 0x1b, 0xd8, 0x3d, 0x9a, 0x33, 0xf8, 0xfc, 0x3c, 0x9f, 0x33, 0xbc,
|
||||
0xf9, 0xf9, 0xa1, 0xe2, 0x69, 0x98, 0xad, 0xfe, 0x19, 0x1a, 0x41, 0x1d,
|
||||
0xca, 0xff, 0x3e, 0xde, 0xb5, 0x2e, 0xea, 0xf6, 0xd8, 0x17, 0xfb, 0x78,
|
||||
0xa2, 0xa0, 0xb9, 0x53, 0x8d, 0x90, 0xa2, 0xd4, 0x32, 0xdb, 0x0b, 0x89,
|
||||
0xfb, 0xf6, 0x66, 0xe0, 0x39, 0xce, 0x8d, 0xe7, 0xff, 0xf8, 0x31, 0xfa,
|
||||
0x90, 0x3e, 0x24, 0x4b, 0xc7, 0x73, 0x34, 0xab, 0x70, 0x35, 0x56, 0xb4,
|
||||
0x3f, 0x5d, 0x8e, 0x93, 0x34, 0xc7, 0xa0, 0x3a, 0x88, 0x0a, 0x46, 0x1f,
|
||||
0x4a, 0x96, 0x16, 0x8e, 0xde, 0x1e, 0x4b, 0x04, 0x7b, 0x0c, 0x5e, 0x7c,
|
||||
0xdc, 0x70, 0x26, 0x5a, 0x21, 0x59, 0xc1, 0x40, 0x19, 0x58, 0x9c, 0x32,
|
||||
0xa5, 0xe3, 0x78, 0xe6, 0x64, 0x38, 0x25, 0x19, 0x8b, 0xea, 0x74, 0x8c,
|
||||
0x7b, 0xbe, 0x11, 0xc6, 0x43, 0x8a, 0xbb, 0x15, 0xd4, 0x47, 0xbb, 0xf3,
|
||||
0x97, 0x85, 0x2e, 0x90, 0xae, 0x32, 0xa5, 0x40, 0xb3, 0x6c, 0xd6, 0x53,
|
||||
0x75, 0x13, 0xe7, 0x9c, 0x79, 0x56, 0x5c, 0x9a, 0x26, 0x37, 0x1f, 0x7e,
|
||||
0xe6, 0xb4, 0xa6, 0xe3, 0x23, 0x29, 0x0c, 0x82, 0xbb, 0x20, 0x74, 0xe2,
|
||||
0x87, 0x7f, 0xa3, 0x9e, 0xfe, 0x51, 0xce, 0x8d, 0xb9, 0xda, 0xfb, 0x07,
|
||||
0xcd, 0xba, 0x02, 0xfb, 0x24, 0xd8, 0x0f, 0x28, 0x70, 0x50, 0xe2, 0x58,
|
||||
0x66, 0xc4, 0x38, 0xf9, 0xbf, 0x66, 0xdc, 0xfe, 0x20, 0xd6, 0x0f, 0xe0,
|
||||
0xdf, 0x9f, 0xc5, 0x92, 0x7f, 0xd4, 0x9e, 0x54, 0x13, 0x76, 0xfe, 0x3f,
|
||||
0x74, 0xfc, 0xcb, 0x84, 0x0e, 0x55, 0x30, 0x34, 0x71, 0x82, 0x9b, 0x25,
|
||||
0xde, 0x53, 0xc1, 0x8b, 0x7a, 0x9d, 0x4e, 0x48, 0xf9, 0x3d, 0x96, 0xe6,
|
||||
0xd8, 0x93, 0x4d, 0x07, 0x0e, 0x45, 0x6d, 0xde, 0x80, 0x57, 0xb7, 0xe7,
|
||||
0x45, 0x21, 0xf5, 0x22, 0x9e, 0xa3, 0x5e, 0x19, 0xb9, 0xf8, 0x0d, 0xe7,
|
||||
0xc7, 0x8f, 0xd1, 0xcb, 0xa6, 0x53, 0x62, 0xe3, 0xd7, 0xc7, 0x8d, 0x30,
|
||||
0xf3, 0xb2, 0x19, 0x96, 0x4c, 0xc8, 0xd9, 0xfe, 0x2a, 0xbe, 0x73, 0xd1,
|
||||
0xd2, 0x53, 0x44, 0xac, 0x4c, 0x6a, 0x9a, 0xc9, 0xf3, 0xd8, 0x46, 0xe6,
|
||||
0x9c, 0x1e, 0x4f, 0x60, 0xc4, 0xe1, 0x2c, 0x2f, 0x3e, 0x9c, 0xe5, 0x6a,
|
||||
0xdd, 0xdd, 0x52, 0xa6, 0xdb, 0x82, 0x98, 0xab, 0xe5, 0xca, 0x53, 0xd0,
|
||||
0xa3, 0xdc, 0xfb, 0x9c, 0x41, 0xe7, 0xe7, 0x93, 0xb3, 0xe3, 0x0b, 0xc2,
|
||||
0x6d, 0x25, 0xff, 0x59, 0xd5, 0xb2, 0xdf, 0xf0, 0xfc, 0x82, 0x73, 0x0a,
|
||||
0xba, 0x8a, 0x74, 0x01, 0x70, 0xb5, 0xfe, 0x0b, 0x4b, 0xd3, 0x03, 0xed,
|
||||
0x0c, 0xe3, 0x76, 0x7c, 0xf1, 0x00, 0xd9, 0x64, 0x9a, 0xa9, 0x05, 0x39,
|
||||
0x56, 0xab, 0x9a, 0x8c, 0x87, 0xfc, 0xd8, 0x0b, 0x48, 0xda, 0x33, 0xba,
|
||||
0xae, 0x83, 0x4e, 0x2b, 0x50, 0x90, 0x22, 0xc7, 0x05, 0xd5, 0xbc, 0x9a,
|
||||
0x16, 0xf3, 0x0a, 0x33, 0x92, 0x59, 0xa0, 0x25, 0x54, 0x0b, 0x0c, 0xae,
|
||||
0x15, 0x1c, 0x73, 0x43, 0xf1, 0x5a, 0x24, 0x5b, 0x96, 0xc8, 0x56, 0xcd,
|
||||
0xcb, 0x96, 0x41, 0x98, 0x73, 0x42, 0xfa, 0x96, 0x6d, 0x4c, 0x4f, 0x78,
|
||||
0x2c, 0x53, 0x15, 0x15, 0x89, 0x11, 0x9f, 0x17, 0x25, 0x5f, 0xc4, 0x86,
|
||||
0xc3, 0xb8, 0x7c, 0x7b, 0x8a, 0x65, 0xa2, 0xce, 0x49, 0x17, 0x75, 0x66,
|
||||
0x7e, 0x9e, 0xe6, 0x34, 0x82, 0xab, 0xc9, 0x59, 0xbd, 0xa9, 0xe5, 0x8e,
|
||||
0xd5, 0xd9, 0x84, 0x34, 0x09, 0xe6, 0x24, 0xa1, 0x17, 0x70, 0x65, 0xac,
|
||||
0xe1, 0x28, 0xc4, 0xf1, 0xd5, 0x03, 0x3c, 0xc3, 0x41, 0x3c, 0xf0, 0xbb,
|
||||
0x45, 0x45, 0x77, 0x19, 0x0a, 0x27, 0x93, 0x38, 0x74, 0x17, 0xdc, 0x0b,
|
||||
0x68, 0x05, 0x6c, 0x10, 0x0e, 0xaa, 0xf5, 0x78, 0xee, 0xd4, 0x47, 0x1c,
|
||||
0x44, 0xe7, 0xfa, 0x51, 0x22, 0xa2, 0x36, 0x66, 0xc9, 0xc0, 0x55, 0x27,
|
||||
0xc2, 0xe1, 0xe8, 0xda, 0x84, 0x05, 0xf6, 0x1a, 0x5b, 0x06, 0x24, 0x5d,
|
||||
0xd5, 0x86, 0xb3, 0x61, 0x35, 0x9c, 0x52, 0x29, 0xde, 0x8e, 0x30, 0x39,
|
||||
0xe5, 0x32, 0x0c, 0x43, 0x09, 0x0d, 0xef, 0xab, 0xf3, 0x2d, 0xbe, 0x3f,
|
||||
0xb0, 0x95, 0x65, 0xf2, 0xe7, 0x09, 0xa5, 0x48, 0x46, 0x12, 0x49, 0x78,
|
||||
0xd8, 0xcc, 0xc7, 0x36, 0xad, 0x81, 0x97, 0x3f, 0xe4, 0x7a, 0xda, 0x14,
|
||||
0xd7, 0x66, 0xa7, 0x58, 0xf1, 0x29, 0x00, 0x14, 0xf7, 0x1c, 0x0f, 0x04,
|
||||
0x27, 0x6e, 0xa8, 0x60, 0x7b, 0x05, 0xab, 0x4e, 0xae, 0xe2, 0xd6, 0x4d,
|
||||
0x7c, 0x64, 0xbd, 0xae, 0x70, 0xb7, 0x99, 0xab, 0x30, 0xe0, 0xbb, 0x37,
|
||||
0xd8, 0xa6, 0x32, 0x71, 0x39, 0xc0, 0x05, 0x2a, 0xd4, 0x8d, 0x0a, 0xdb,
|
||||
0x9c, 0x3c, 0x47, 0xa0, 0xc2, 0xbf, 0x15, 0xb8, 0xde, 0xac, 0xa9, 0x21,
|
||||
0x4f, 0xe0, 0xf5, 0xc5, 0xc4, 0xd8, 0xe3, 0x00, 0xe1, 0x51, 0x6e, 0x3a,
|
||||
0xd5, 0xb1, 0xa9, 0x0b, 0xec, 0x24, 0xbd, 0x34, 0x05, 0xc9, 0x0a, 0x21,
|
||||
0xf1, 0xbc, 0x08, 0x3c, 0x9f, 0x74, 0x49, 0x6c, 0x03, 0x1a, 0x66, 0xe8,
|
||||
0x08, 0x4d, 0x1c, 0xe8, 0x6a, 0xde, 0x3b, 0x64, 0xa0, 0x61, 0x7c, 0x12,
|
||||
0x11, 0xea, 0x78, 0xa3, 0x4b, 0xad, 0xff, 0x71, 0xc9, 0xc7, 0xba, 0x39,
|
||||
0x43, 0xea, 0x3f, 0x3b, 0x91, 0x4c, 0xb7, 0x2d, 0x3d, 0xf4, 0x14, 0xc1,
|
||||
0xbe, 0xed, 0x0d, 0x0a, 0x0e, 0x37, 0x15, 0x77, 0x36, 0x19, 0x78, 0x45,
|
||||
0x17, 0x0f, 0x72, 0x72, 0xcd, 0xb9, 0x09, 0x10, 0xee, 0xcc, 0x23, 0x1b,
|
||||
0x92, 0xe6, 0x18, 0xf3, 0xf3, 0x76, 0x2a, 0x6c, 0xb7, 0x78, 0x57, 0xd2,
|
||||
0x99, 0x5b, 0x24, 0x93, 0x2b, 0xd6, 0x15, 0x32, 0x91, 0xa5, 0x20, 0x8c,
|
||||
0x3f, 0x7b, 0xc7, 0x6a, 0xf9, 0x1d, 0x53, 0x1b, 0x64, 0xe2, 0x40, 0xf3,
|
||||
0x7d, 0xd4, 0x93, 0x9b, 0xed, 0xa9, 0x8a, 0x73, 0xab, 0x0f, 0xee, 0x4f,
|
||||
0xcc, 0x5a, 0x62, 0xe0, 0xf5, 0x88, 0x00, 0xa2, 0xc7, 0x28, 0xec, 0x75,
|
||||
0x94, 0x00, 0x23, 0xba, 0x96, 0xb8, 0xe0, 0xfc, 0xa5, 0x0a, 0xfc, 0x0f,
|
||||
0x49, 0x5b, 0x16, 0x0b, 0x0c, 0xf0, 0xe9, 0xe2, 0x66, 0x45, 0x3a, 0xab,
|
||||
0xe8, 0x7e, 0x45, 0x67, 0x7c, 0x6c, 0x03, 0x52, 0xf2, 0x7c, 0x45, 0x6d,
|
||||
0x70, 0xdc, 0x1a, 0x30, 0xe2, 0xcc, 0xac, 0x61, 0xec, 0x01, 0x27, 0x82,
|
||||
0x87, 0xc8, 0xa2, 0x32, 0xd1, 0x03, 0x3b, 0xca, 0x0b, 0xe2, 0x12, 0x4e,
|
||||
0x12, 0x48, 0x78, 0xc1, 0x61, 0x1b, 0x37, 0xe2, 0x83, 0xb3, 0x5f, 0x8a,
|
||||
0x32, 0x5e, 0x3a, 0x49, 0x1b, 0x39, 0x6f, 0x9c, 0xbd, 0xef, 0x05, 0xbd,
|
||||
0x3d, 0xc2, 0x49, 0x23, 0xad, 0xd4, 0x94, 0xe4, 0x0c, 0x9d, 0xe3, 0x31,
|
||||
0x51, 0x3a, 0x14, 0x06, 0xa6, 0x68, 0x0b, 0xe7, 0x85, 0x74, 0x71, 0x2b,
|
||||
0x84, 0x84, 0x5d, 0x71, 0x79, 0x52, 0x34, 0x19, 0x8e, 0xbb, 0x28, 0x97,
|
||||
0x09, 0x7e, 0x45, 0x1e, 0xf7, 0x3f, 0x8a, 0x96, 0x23, 0x3e, 0xd4, 0x4c,
|
||||
0x9f, 0x7c, 0xc4, 0x05, 0x9f, 0xe0, 0x62, 0x8a, 0xe6, 0xbd, 0xe6, 0x69,
|
||||
0xf3, 0xa6, 0x39, 0x8b, 0x6c, 0xc8, 0x52, 0x13, 0xcb, 0xe6, 0xb9, 0x52,
|
||||
0x3a, 0x73, 0xd7, 0x1d, 0x93, 0x4e, 0x3c, 0x78, 0xad, 0xcc, 0x3e, 0xc5,
|
||||
0xa0, 0xea, 0x54, 0x26, 0x8b, 0x1d, 0x77, 0xd3, 0xa1, 0x24, 0x68, 0x11,
|
||||
0xe6, 0x5e, 0x10, 0x97, 0x3a, 0xbf, 0xd4, 0xc3, 0xff, 0xfb, 0x4f, 0x51,
|
||||
0x2c, 0xf6, 0x92, 0x9e, 0x57, 0x4c, 0xdd, 0x6a, 0x5e, 0xd8, 0x54, 0x30,
|
||||
0x0e, 0x8a, 0x03, 0x94, 0x0e, 0xde, 0xa8, 0x92, 0xf0, 0xa4, 0x04, 0xb6,
|
||||
0x82, 0xc4, 0x87, 0xa0, 0xa3, 0xdb, 0x59, 0x10, 0x43, 0x00, 0xce, 0x26,
|
||||
0xb6, 0xcf, 0x50, 0x10, 0x99, 0x20, 0x91, 0xf3, 0x2d, 0xd9, 0x0b, 0x9d,
|
||||
0xf2, 0x76, 0x3c, 0x09, 0x75, 0x04, 0xf7, 0x1d, 0xaf, 0xae, 0xe5, 0x74,
|
||||
0xe5, 0x0f, 0x1d, 0x53, 0x15, 0xf7, 0x38, 0x15, 0x3c, 0xd3, 0x98, 0xd9,
|
||||
0x18, 0xc7, 0xc3, 0xb0, 0xfa, 0xb8, 0x8d, 0x4b, 0x31, 0x9c, 0xc2, 0x74,
|
||||
0xdc, 0xde, 0x7a, 0x7e, 0x2b, 0x15, 0x74, 0x9a, 0xc9, 0xa1, 0xca, 0x28,
|
||||
0xb3, 0xcc, 0x71, 0x06, 0xc9, 0x5b, 0x7a, 0x03, 0xcc, 0xc8, 0xde, 0x00,
|
||||
0x53, 0x73, 0x2c, 0x5f, 0x8d, 0xae, 0x43, 0xe2, 0xa1, 0x71, 0xcc, 0x66,
|
||||
0x6c, 0xec, 0x22, 0x99, 0x93, 0x00, 0xca, 0xcc, 0xf9, 0x59, 0xd1, 0x94,
|
||||
0x6b, 0x86, 0x51, 0x70, 0x0b, 0x28, 0x03, 0xea, 0x6d, 0x7c, 0x3b, 0xf4,
|
||||
0xeb, 0x37, 0xcd, 0x35, 0x68, 0xa3, 0x5c, 0xc3, 0x4b, 0x94, 0x93, 0x6b,
|
||||
0xe6, 0xe7, 0x67, 0xde, 0xe7, 0x82, 0x42, 0x50, 0xe5, 0xba, 0x1f, 0x85,
|
||||
0x36, 0x86, 0x28, 0xf7, 0xbf, 0x8b, 0xb9, 0xb6, 0x9e, 0xb6, 0x61, 0x28,
|
||||
0xfc, 0x57, 0x20, 0x9a, 0xaa, 0x64, 0x98, 0x06, 0xa6, 0x3d, 0x6c, 0x29,
|
||||
0x2e, 0x62, 0x68, 0xd2, 0xa4, 0x81, 0x98, 0x54, 0xf6, 0x84, 0x10, 0x4a,
|
||||
0xd3, 0x94, 0x06, 0x52, 0x1b, 0x35, 0x61, 0xac, 0xaa, 0xf8, 0xef, 0x3b,
|
||||
0x17, 0x27, 0x71, 0xdc, 0xb4, 0x88, 0xbe, 0xec, 0xa5, 0x4d, 0x6d, 0xc7,
|
||||
0x97, 0xe3, 0xe3, 0x73, 0xf1, 0xf9, 0x4e, 0x3b, 0xac, 0xf8, 0x81, 0xa9,
|
||||
0xc6, 0xa0, 0xb5, 0x3a, 0x85, 0xee, 0x22, 0x68, 0x38, 0xc5, 0x33, 0x66,
|
||||
0xa8, 0xd5, 0x84, 0xf0, 0x65, 0xdb, 0x3c, 0x74, 0x84, 0x05, 0xb7, 0x31,
|
||||
0xcb, 0xfc, 0x2f, 0x22, 0x91, 0x81, 0x4b, 0x38, 0x37, 0x57, 0x04, 0x5e,
|
||||
0x8d, 0xb6, 0xc9, 0xc0, 0x66, 0x9d, 0x1c, 0x6c, 0x6f, 0x31, 0x85, 0xb3,
|
||||
0x4a, 0x6a, 0xb1, 0xb6, 0x97, 0x5d, 0x20, 0x0b, 0x86, 0x57, 0xa4, 0xef,
|
||||
0x5d, 0x64, 0xba, 0x9b, 0xc4, 0xdc, 0x22, 0xe5, 0xd1, 0xa9, 0xe7, 0x59,
|
||||
0xd1, 0x42, 0xdd, 0xc8, 0xfe, 0x77, 0x12, 0x43, 0x18, 0xdb, 0x47, 0xa3,
|
||||
0x4c, 0x4c, 0x82, 0x95, 0xe5, 0x45, 0xd6, 0xba, 0xd2, 0x03, 0xe9, 0x93,
|
||||
0x29, 0x90, 0x3b, 0x5b, 0x03, 0x72, 0x03, 0x3b, 0x78, 0xa7, 0xaa, 0xe8,
|
||||
0x9c, 0xb2, 0xa3, 0x89, 0x75, 0x57, 0x83, 0x31, 0x0c, 0xff, 0x38, 0x68,
|
||||
0xa2, 0x8b, 0x50, 0x43, 0xb1, 0x45, 0xbb, 0x02, 0x23, 0x8c, 0x50, 0xfe,
|
||||
0x10, 0xff, 0x89, 0x19, 0x7b, 0xde, 0xaa, 0x4d, 0xec, 0x18, 0x23, 0x34,
|
||||
0x4b, 0xee, 0xf0, 0xa9, 0xd5, 0xa2, 0x8e, 0x39, 0x16, 0xcd, 0xe3, 0xd3,
|
||||
0xec, 0xa9, 0x2b, 0x96, 0x59, 0x87, 0x30, 0x29, 0x3c, 0x09, 0x1b, 0x50,
|
||||
0x6b, 0x19, 0x63, 0xfc, 0x80, 0x27, 0x11, 0x83, 0x3c, 0x8a, 0x61, 0x63,
|
||||
0x29, 0x0b, 0xa3, 0x8f, 0xd3, 0x0e, 0x44, 0x5d, 0x59, 0x92, 0xa7, 0xa6,
|
||||
0xc1, 0x9e, 0xb4, 0x0a, 0x15, 0x14, 0x2a, 0x06, 0xc0, 0x81, 0xc4, 0x4d,
|
||||
0xed, 0xf6, 0x64, 0x1a, 0x55, 0xb3, 0x26, 0xc8, 0x08, 0x35, 0x0b, 0x99,
|
||||
0x3e, 0x11, 0xff, 0xc0, 0x73, 0x42, 0x1c, 0x91, 0x4b, 0xb4, 0x64, 0x44,
|
||||
0x21, 0x31, 0xb4, 0x8d, 0xfb, 0x0c, 0x24, 0x6f, 0x30, 0x14, 0x99, 0xdf,
|
||||
0x66, 0xd5, 0xca, 0xf3, 0xcc, 0x8d, 0xe7, 0xd9, 0xeb, 0xb5, 0x5d, 0xcf,
|
||||
0x1c, 0x98, 0x01, 0x74, 0xa5, 0x2d, 0x0b, 0x7d, 0x57, 0x38, 0xe0, 0x3a,
|
||||
0x5c, 0x4f, 0xbb, 0x61, 0x9e, 0xf5, 0x01, 0xdf, 0xc6, 0x84, 0xec, 0xa4,
|
||||
0x21, 0xd7, 0x5f, 0x33, 0x3a, 0x70, 0x57, 0xcd, 0x6a, 0xe0, 0xb9, 0x48,
|
||||
0x20, 0x59, 0x13, 0xe8, 0xd4, 0x07, 0x2f, 0x25, 0x65, 0x2c, 0xa2, 0x9f,
|
||||
0x3b, 0x1e, 0xb2, 0x31, 0x0b, 0x46, 0x94, 0xcf, 0xc6, 0xb6, 0xf3, 0x46,
|
||||
0x3c, 0x6b, 0x10, 0x11, 0x61, 0x5d, 0xe5, 0x63, 0x47, 0x95, 0xd7, 0xc5,
|
||||
0xca, 0x45, 0x23, 0x3a, 0x2d, 0x43, 0x2b, 0xdf, 0x26, 0x32, 0x12, 0x04,
|
||||
0x62, 0x59, 0x70, 0x00, 0xb2, 0x7c, 0x73, 0xdb, 0xe6, 0x65, 0xf6, 0x35,
|
||||
0xc7, 0x6d, 0x9f, 0xf8, 0xb3, 0x40, 0x5a, 0x8d, 0xd2, 0xa2, 0xa0, 0x45,
|
||||
0xe0, 0x82, 0x2f, 0xc1, 0xf6, 0xf6, 0x3d, 0xe0, 0xa9, 0x70, 0x0e, 0x4f,
|
||||
0x2c, 0x96, 0x89, 0x12, 0xd7, 0xb3, 0x74, 0x6e, 0x6a, 0x4a, 0x7c, 0x84,
|
||||
0x2a, 0x85, 0x55, 0x1f, 0x88, 0xfa, 0x23, 0x0a, 0x77, 0xc0, 0x94, 0xe5,
|
||||
0x71, 0x78, 0x24, 0xd6, 0xbb, 0xfd, 0x5d, 0xa4, 0x23, 0x3d, 0x2d, 0xaf,
|
||||
0xe3, 0x31, 0x10, 0xe5, 0x28, 0xe8, 0x68, 0x01, 0x55, 0xe4, 0xbe, 0x7e,
|
||||
0x32, 0xe3, 0xfd, 0xc8, 0xee, 0x67, 0x39, 0x5e, 0xba, 0x9d, 0x25, 0x98,
|
||||
0x68, 0x73, 0x01, 0x5b, 0x64, 0xde, 0x84, 0xca, 0x11, 0x30, 0xef, 0xaf,
|
||||
0x45, 0xa6, 0xca, 0x4b, 0x82, 0xc9, 0x10, 0xbb, 0xc1, 0xa6, 0xe8, 0xf9,
|
||||
0x3c, 0x56, 0x93, 0x02, 0x1d, 0xe6, 0x73, 0x7e, 0xf6, 0x57, 0xe8, 0xbf,
|
||||
0x44, 0x84, 0x54, 0xf4, 0xc4, 0x18, 0xce, 0xe9, 0xcf, 0x74, 0x19, 0xad,
|
||||
0x5e, 0x32, 0x15, 0x79, 0xe7, 0xe5, 0x22, 0x3f, 0x1c, 0x79, 0x62, 0x1e,
|
||||
0x27, 0xf0, 0x83, 0xdb, 0xc3, 0xef, 0x57, 0x81, 0x02, 0x2c, 0x6a, 0xfb,
|
||||
0x4f, 0x15, 0xa4, 0x0a, 0x3d, 0xed, 0x2b, 0x95, 0x2f, 0xa3, 0xfd, 0xe3,
|
||||
0xd7, 0xb7, 0x86, 0x84, 0x39, 0xc2, 0x60, 0x63, 0x0d, 0xcc, 0x50, 0x43,
|
||||
0xa9, 0x3a, 0xe7, 0x70, 0x96, 0x97, 0x87, 0x33, 0x67, 0x1e, 0x5c, 0xd6,
|
||||
0x3d, 0x17, 0x17, 0x9b, 0xc5, 0x44, 0x21, 0x5a, 0x02, 0x37, 0xf8, 0x1e,
|
||||
0xbb, 0x9d, 0x9e, 0x68, 0xbd, 0xd6, 0xcd, 0x9f, 0x47, 0x01, 0xbd, 0x6d,
|
||||
0xec, 0xa5, 0x96, 0xa6, 0x7b, 0x97, 0xad, 0xb6, 0x19, 0xce, 0x4d, 0x12,
|
||||
0x50, 0x62, 0x10, 0x49, 0xd6, 0x12, 0x4c, 0xec, 0xc0, 0x84, 0x28, 0x7f,
|
||||
0x10, 0x76, 0x87, 0x3b, 0xd1, 0x91, 0x51, 0x02, 0xaa, 0x4a, 0x0f, 0x36,
|
||||
0xcf, 0x22, 0x95, 0xa0, 0xce, 0x24, 0x8d, 0xc4, 0x47, 0x3a, 0x38, 0xf0,
|
||||
0x50, 0x7b, 0x4d, 0x84, 0x73, 0xf2, 0xe0, 0xe5, 0x77, 0x1e, 0xbc, 0x4c,
|
||||
0xf8, 0xba, 0xa5, 0x9d, 0x03, 0xc7, 0x02, 0xc1, 0xba, 0x6f, 0xb9, 0x1e,
|
||||
0xfb, 0x37, 0xe5, 0xad, 0x58, 0xa1, 0x05, 0x19, 0x29, 0xa0, 0x7a, 0x1a,
|
||||
0xd4, 0x27, 0xd6, 0x31, 0x48, 0xcc, 0xa9, 0xd5, 0xb4, 0x5e, 0x03, 0xd6,
|
||||
0xb3, 0x97, 0x5c, 0xef, 0x17, 0x5e, 0x55, 0x6c, 0x5c, 0x33, 0x11, 0xcb,
|
||||
0x66, 0x15, 0xbb, 0x0b, 0x54, 0x1a, 0x84, 0xe2, 0xbf, 0xa7, 0xbe, 0x80,
|
||||
0xe0, 0xcf, 0xb9, 0x21, 0x39, 0xee, 0xd1, 0x23, 0xf0, 0x2d, 0xf0, 0x29,
|
||||
0x50, 0xe2, 0x6e, 0x4e, 0xa1, 0xc8, 0x36, 0x07, 0x62, 0x9e, 0x1a, 0xa2,
|
||||
0x9a, 0x79, 0x80, 0x35, 0x26, 0x07, 0x9e, 0xc4, 0xa3, 0x82, 0xb3, 0xb3,
|
||||
0xcc, 0x0b, 0xad, 0xbe, 0xe9, 0xc9, 0x92, 0x2e, 0x99, 0xaa, 0x5d, 0xd3,
|
||||
0x72, 0xf5, 0x3a, 0x80, 0x73, 0x30, 0xd1, 0x2f, 0x74, 0x47, 0x88, 0xed,
|
||||
0xfa, 0x33, 0xd0, 0x31, 0x20, 0x6f, 0x81, 0x43, 0x92, 0xd4, 0x0f, 0x6f,
|
||||
0x4e, 0x7b, 0xb7, 0x07, 0x60, 0x5d, 0x48, 0xf8, 0x0a, 0x24, 0x3c, 0xf4,
|
||||
0x6e, 0x3f, 0x06, 0xe1, 0x7d, 0x26, 0xdc, 0xcb, 0x23, 0x0d, 0xd4, 0x95,
|
||||
0x48, 0x57, 0xcb, 0x35, 0xd8, 0xb7, 0x5c, 0x03, 0xcc, 0x39, 0x90, 0x2d,
|
||||
0x13, 0xa7, 0xd2, 0x27, 0x42, 0x13, 0x14, 0x15, 0xbe, 0xf0, 0xbf, 0x72,
|
||||
0xe0, 0x8b, 0xe4, 0x1b, 0x42, 0xb2, 0x6d, 0xdc, 0xbd, 0xc7, 0xe9, 0xc8,
|
||||
0x1e, 0xe9, 0x49, 0x69, 0xa1, 0x20, 0x3d, 0x2c, 0x20, 0x13, 0x2c, 0x5d,
|
||||
0xd7, 0x8f, 0x27, 0xa1, 0xc9, 0x91, 0x33, 0xb9, 0x72, 0x84, 0x05, 0x44,
|
||||
0xd3, 0xb2, 0x88, 0xc2, 0x30, 0x99, 0xa8, 0x07, 0x54, 0x25, 0xfa, 0x79,
|
||||
0x32, 0xcd, 0x41, 0xd3, 0xa2, 0x34, 0x09, 0xe3, 0x87, 0xf8, 0x6f, 0x98,
|
||||
0x67, 0xe3, 0x02, 0x31, 0x6b, 0xe1, 0x71, 0xff, 0x73, 0xff, 0x6b, 0x85,
|
||||
0x5e, 0x43, 0x40, 0x2a, 0xb0, 0xab, 0x7c, 0x2e, 0xa7, 0x87, 0x5f, 0x86,
|
||||
0x6e, 0xd7, 0x94, 0x86, 0xc7, 0x8f, 0x83, 0x0d, 0xee, 0x11, 0xd0, 0xa0,
|
||||
0xe5, 0x8b, 0x9c, 0xc7, 0x0a, 0x5d, 0x3e, 0x72, 0xd5, 0xcc, 0x18, 0x35,
|
||||
0x92, 0xee, 0x25, 0x1d, 0x8b, 0xbd, 0x72, 0xb1, 0x64, 0x5f, 0x2e, 0x89,
|
||||
0xf3, 0xbd, 0x44, 0x3f, 0x2d, 0xf1, 0x34, 0xf0, 0x18, 0x9b, 0xaf, 0x38,
|
||||
0xd9, 0x30, 0x0b, 0x18, 0x8e, 0xe1, 0xd9, 0xf8, 0x3b, 0x4f, 0x70, 0x65,
|
||||
0x3f, 0x2e, 0x96, 0x2a, 0xc1, 0x24, 0x83, 0xba, 0x13, 0xa4, 0x6e, 0xfb,
|
||||
0x8e, 0x89, 0x5a, 0x06, 0x41, 0xb3, 0x4c, 0x0c, 0x71, 0xec, 0x55, 0x06,
|
||||
0xb2, 0xc5, 0x4c, 0x43, 0xf2, 0x77, 0xc1, 0xbd, 0xe7, 0x1d, 0x1a, 0xb2,
|
||||
0xdf, 0x5a, 0x15, 0xe2, 0xee, 0x38, 0x45, 0xbc, 0xef, 0x4e, 0x61, 0x95,
|
||||
0x42, 0xcd, 0x7e, 0xb3, 0xfd, 0x8f, 0x2c, 0x4e, 0x43, 0xe3, 0xd6, 0x0c,
|
||||
0xeb, 0xfc, 0x29, 0x2b, 0x55, 0xb1, 0x4a, 0x62, 0x3a, 0x19, 0x2f, 0xb8,
|
||||
0x3d, 0x27, 0x51, 0xd9, 0xa9, 0x9e, 0x43, 0x23, 0x6d, 0x08, 0x6f, 0x48,
|
||||
0xfd, 0xf2, 0x67, 0x46, 0x20, 0x16, 0xec, 0xaf, 0x0d, 0x6b, 0xe9, 0x9e,
|
||||
0x10, 0xb7, 0x1e, 0xfe, 0x03, 0x0b, 0x5a, 0x75, 0x81, 0x5c, 0x4a, 0x00,
|
||||
0x00
|
||||
};
|
||||
920
lib/webserver/src/esp-fs-webserver.cpp
Normal file
920
lib/webserver/src/esp-fs-webserver.cpp
Normal file
@@ -0,0 +1,920 @@
|
||||
#include "esp-fs-webserver.h"
|
||||
|
||||
FSWebServer::FSWebServer(fs::FS &fs, WebServerClass &server)
|
||||
{
|
||||
m_filesystem = &fs;
|
||||
webserver = &server;
|
||||
m_basePath[0] = '\0';
|
||||
}
|
||||
|
||||
WebServerClass *FSWebServer::getRequest()
|
||||
{
|
||||
return webserver;
|
||||
}
|
||||
|
||||
void FSWebServer::run()
|
||||
{
|
||||
webserver->handleClient();
|
||||
if (m_apmode)
|
||||
m_dnsServer.processNextRequest();
|
||||
}
|
||||
|
||||
void FSWebServer::addHandler(const Uri &uri, HTTPMethod method, WebServerClass::THandlerFunction fn)
|
||||
{
|
||||
webserver->on(uri, method, fn);
|
||||
}
|
||||
|
||||
void FSWebServer::addHandler(const Uri &uri, WebServerClass::THandlerFunction handler)
|
||||
{
|
||||
webserver->on(uri, HTTP_ANY, handler);
|
||||
}
|
||||
|
||||
// List all files saved in the selected filesystem
|
||||
bool FSWebServer::checkDir(char *dirname, uint8_t levels)
|
||||
{
|
||||
if (dirname[0] != '/')
|
||||
dirname[0] = '/';
|
||||
File root = m_filesystem->open(dirname, "r");
|
||||
if (!root)
|
||||
{
|
||||
DebugPrintln("- failed to open directory\n");
|
||||
return false;
|
||||
}
|
||||
if (!root.isDirectory())
|
||||
{
|
||||
DebugPrintln(" - not a directory\n");
|
||||
return false;
|
||||
}
|
||||
File file = root.openNextFile();
|
||||
while (file)
|
||||
{
|
||||
if (file.isDirectory())
|
||||
{
|
||||
char dir[16];
|
||||
strcpy(dir, "/");
|
||||
strcat(dir, file.name());
|
||||
DebugPrintf("DIR : %s\n", dir);
|
||||
checkDir(dir, levels - 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
DebugPrintf(" FILE: %s\tSIZE: %d\n", file.name(), file.size());
|
||||
}
|
||||
file = root.openNextFile();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FSWebServer::begin(const char *path)
|
||||
{
|
||||
DebugPrintln("\nList the files of webserver: ");
|
||||
if (path != nullptr)
|
||||
strcpy(m_basePath, path);
|
||||
|
||||
m_fsOK = checkDir(m_basePath, 2);
|
||||
|
||||
#ifdef INCLUDE_EDIT_HTM
|
||||
webserver->on("/status", HTTP_GET, std::bind(&FSWebServer::handleStatus, this));
|
||||
webserver->on("/list", HTTP_GET, std::bind(&FSWebServer::handleFileList, this));
|
||||
webserver->on("/edit", HTTP_GET, std::bind(&FSWebServer::handleGetEdit, this));
|
||||
webserver->on("/edit", HTTP_PUT, std::bind(&FSWebServer::handleFileCreate, this));
|
||||
webserver->on("/edit", HTTP_DELETE, std::bind(&FSWebServer::handleFileDelete, this));
|
||||
#endif
|
||||
webserver->onNotFound(std::bind(&FSWebServer::handleRequest, this));
|
||||
webserver->on("/favicon.ico", HTTP_GET, std::bind(&FSWebServer::replyOK, this));
|
||||
webserver->on("/", HTTP_GET, std::bind(&FSWebServer::handleIndex, this));
|
||||
#ifdef INCLUDE_SETUP_HTM
|
||||
webserver->on("/setup", HTTP_GET, std::bind(&FSWebServer::handleSetup, this));
|
||||
#endif
|
||||
webserver->on("/scan", HTTP_GET, std::bind(&FSWebServer::handleScanNetworks, this));
|
||||
webserver->on("/connect", HTTP_POST, std::bind(&FSWebServer::doWifiConnection, this));
|
||||
webserver->on("/restart", HTTP_GET, std::bind(&FSWebServer::doRestart, this));
|
||||
webserver->on("/ipaddress", HTTP_GET, std::bind(&FSWebServer::getIpAddress, this));
|
||||
|
||||
// Captive Portal redirect
|
||||
webserver->on("/redirect", HTTP_GET, std::bind(&FSWebServer::captivePortal, this));
|
||||
// Windows
|
||||
webserver->on("/connecttest.txt", HTTP_GET, std::bind(&FSWebServer::captivePortal, this));
|
||||
// Apple
|
||||
webserver->on("/hotspot-detect.html", HTTP_GET, std::bind(&FSWebServer::captivePortal, this));
|
||||
// Android
|
||||
webserver->on("/generate_204", HTTP_GET, std::bind(&FSWebServer::captivePortal, this));
|
||||
webserver->on("/gen_204", HTTP_GET, std::bind(&FSWebServer::captivePortal, this));
|
||||
|
||||
// Upload file
|
||||
// - first callback is called after the request has ended with all parsed arguments
|
||||
// - second callback handles file upload at that location
|
||||
webserver->on("/edit", HTTP_POST, std::bind(&FSWebServer::replyOK, this), std::bind(&FSWebServer::handleFileUpload, this));
|
||||
|
||||
// OTA update via webbrowser
|
||||
m_httpUpdater.setup(webserver);
|
||||
|
||||
#ifdef ESP32
|
||||
webserver->enableCrossOrigin(true);
|
||||
#endif
|
||||
webserver->setContentLength(50);
|
||||
webserver->begin();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void FSWebServer::setCaptiveWebage(const char *url)
|
||||
{
|
||||
m_apWebpage = (char *)realloc(m_apWebpage, sizeof(url));
|
||||
strcpy(m_apWebpage, url);
|
||||
}
|
||||
|
||||
IPAddress FSWebServer::setAPmode(const char *ssid, const char *psk)
|
||||
{
|
||||
m_apmode = true;
|
||||
WiFi.mode(WIFI_AP_STA);
|
||||
WiFi.persistent(false);
|
||||
WiFi.softAP(ssid, psk);
|
||||
/* Setup the DNS server redirecting all the domains to the apIP */
|
||||
m_dnsServer.setErrorReplyCode(DNSReplyCode::NoError);
|
||||
m_dnsServer.start(53, "*", WiFi.softAPIP());
|
||||
return WiFi.softAPIP();
|
||||
}
|
||||
|
||||
IPAddress FSWebServer::startWiFi(uint32_t timeout, const char *apSSID, const char *apPsw)
|
||||
{
|
||||
IPAddress ip;
|
||||
m_timeout = timeout;
|
||||
WiFi.mode(WIFI_STA);
|
||||
|
||||
const char *_ssid;
|
||||
const char *_pass;
|
||||
#if defined(ESP8266)
|
||||
struct station_config conf;
|
||||
wifi_station_get_config_default(&conf);
|
||||
_ssid = reinterpret_cast<const char *>(conf.ssid);
|
||||
_pass = reinterpret_cast<const char *>(conf.password);
|
||||
|
||||
#elif defined(ESP32)
|
||||
wifi_config_t conf;
|
||||
esp_wifi_get_config(WIFI_IF_STA, &conf);
|
||||
|
||||
_ssid = reinterpret_cast<const char *>(conf.sta.ssid);
|
||||
_pass = reinterpret_cast<const char *>(conf.sta.password);
|
||||
#endif
|
||||
|
||||
if (strlen(_ssid) && strlen(_pass))
|
||||
{
|
||||
WiFi.begin(_ssid, _pass);
|
||||
Serial.print(F("Connecting to "));
|
||||
Serial.println(_ssid);
|
||||
uint32_t startTime = millis();
|
||||
while (WiFi.status() != WL_CONNECTED)
|
||||
{
|
||||
delay(500);
|
||||
Serial.print(".");
|
||||
if (WiFi.status() == WL_CONNECTED)
|
||||
{
|
||||
ip = WiFi.localIP();
|
||||
return ip;
|
||||
}
|
||||
// If no connection after a while go in Access Point mode
|
||||
if (millis() - startTime > m_timeout)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (apSSID != nullptr && apPsw != nullptr)
|
||||
setAPmode(apSSID, apPsw);
|
||||
else
|
||||
setAPmode("ESP_AP", "123456789");
|
||||
|
||||
WiFi.begin();
|
||||
ip = WiFi.softAPIP();
|
||||
Serial.print(F("\nAP mode.\nServer IP address: "));
|
||||
Serial.println(ip);
|
||||
Serial.println();
|
||||
return ip;
|
||||
}
|
||||
|
||||
//////////////////////////////// WiFi /////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* Redirect to captive portal if we got a request for another domain.
|
||||
*/
|
||||
bool FSWebServer::captivePortal()
|
||||
{
|
||||
IPAddress ip = webserver->client().localIP();
|
||||
char serverLoc[sizeof("https:://255.255.255.255/") + sizeof(m_apWebpage) + 1];
|
||||
snprintf(serverLoc, sizeof(serverLoc), "http://%d.%d.%d.%d%s", ip[0], ip[1], ip[2], ip[3], m_apWebpage);
|
||||
|
||||
// redirect if hostheader not server ip, prevent redirect loops
|
||||
if (strcmp(serverLoc, webserver->hostHeader().c_str()))
|
||||
{
|
||||
webserver->sendHeader(F("Location"), serverLoc, true);
|
||||
webserver->send(302, F("text/html"), ""); // Empty content inhibits Content-length header so we have to close the socket ourselves.
|
||||
webserver->client().stop(); // Stop is needed because we sent no content length
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void FSWebServer::handleRequest()
|
||||
{
|
||||
if (!m_fsOK)
|
||||
{
|
||||
replyToCLient(ERROR, PSTR(FS_INIT_ERROR));
|
||||
return;
|
||||
}
|
||||
#if defined(ESP32)
|
||||
String _url = WebServer::urlDecode(webserver->uri());
|
||||
#elif defined(ESP8266)
|
||||
String _url = ESP8266WebServer::urlDecode(webserver->uri());
|
||||
#endif
|
||||
// First try to find and return the requested file from the filesystem,
|
||||
// and if it fails, return a 404 page with debug information
|
||||
// Serial.print("urlDecode: ");
|
||||
// Serial.println(_url);
|
||||
if (handleFileRead(_url))
|
||||
return;
|
||||
else
|
||||
replyToCLient(NOT_FOUND, PSTR(FILE_NOT_FOUND));
|
||||
}
|
||||
|
||||
void FSWebServer::getIpAddress()
|
||||
{
|
||||
webserver->send(200, "text/json", WiFi.localIP().toString());
|
||||
}
|
||||
|
||||
void FSWebServer::doRestart()
|
||||
{
|
||||
Serial.println("RESTART");
|
||||
webserver->send(200, "text/json", "Going to restart ESP");
|
||||
delay(500);
|
||||
ESP.restart();
|
||||
}
|
||||
|
||||
void FSWebServer::doWifiConnection()
|
||||
{
|
||||
String ssid, pass;
|
||||
bool persistent = true;
|
||||
WiFi.mode(WIFI_AP_STA);
|
||||
|
||||
if (webserver->hasArg("ssid"))
|
||||
{
|
||||
ssid = webserver->arg("ssid");
|
||||
}
|
||||
|
||||
if (webserver->hasArg("password"))
|
||||
{
|
||||
pass = webserver->arg("password");
|
||||
}
|
||||
|
||||
if (webserver->hasArg("persistent"))
|
||||
{
|
||||
String pers = webserver->arg("persistent");
|
||||
if (pers.equals("false"))
|
||||
{
|
||||
persistent = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (WiFi.status() == WL_CONNECTED)
|
||||
{
|
||||
|
||||
IPAddress ip = WiFi.localIP();
|
||||
String resp = "ESP is currently connected to a WiFi network.<br><br>"
|
||||
"Actual connection will be closed and a new attempt will be done with <b>";
|
||||
resp += ssid;
|
||||
resp += "</b> WiFi network.";
|
||||
webserver->send(200, "text/plain", resp);
|
||||
|
||||
delay(500);
|
||||
Serial.println("Disconnect from current WiFi network");
|
||||
WiFi.disconnect();
|
||||
}
|
||||
|
||||
if (ssid.length() && pass.length())
|
||||
{
|
||||
// Try to connect to new ssid
|
||||
Serial.print("\nConnecting to ");
|
||||
Serial.println(ssid);
|
||||
WiFi.begin(ssid.c_str(), pass.c_str());
|
||||
|
||||
uint32_t beginTime = millis();
|
||||
while (WiFi.status() != WL_CONNECTED)
|
||||
{
|
||||
delay(100);
|
||||
Serial.print("*.*");
|
||||
if (millis() - beginTime > m_timeout)
|
||||
break;
|
||||
}
|
||||
// reply to client
|
||||
if (WiFi.status() == WL_CONNECTED)
|
||||
{
|
||||
// WiFi.softAPdisconnect();
|
||||
IPAddress ip = WiFi.localIP();
|
||||
Serial.print("\nConnected to Wifi! IP address: ");
|
||||
Serial.println(ip);
|
||||
webserver->send(200, "text/plain", ip.toString());
|
||||
m_apmode = false;
|
||||
delay(500);
|
||||
ESP.restart();
|
||||
// Store current WiFi configuration in flash
|
||||
if (persistent)
|
||||
{
|
||||
#if defined(ESP8266)
|
||||
struct station_config stationConf;
|
||||
wifi_station_get_config_default(&stationConf);
|
||||
// Clear previuos configuration
|
||||
memset(&stationConf, 0, sizeof(stationConf));
|
||||
os_memcpy(&stationConf.ssid, ssid.c_str(), ssid.length());
|
||||
os_memcpy(&stationConf.password, pass.c_str(), pass.length());
|
||||
wifi_set_opmode(STATION_MODE);
|
||||
wifi_station_set_config(&stationConf);
|
||||
#elif defined(ESP32)
|
||||
wifi_config_t stationConf;
|
||||
esp_wifi_get_config(WIFI_IF_STA, &stationConf);
|
||||
// Clear previuos configuration
|
||||
memset(&stationConf, 0, sizeof(stationConf));
|
||||
memcpy(&stationConf.sta.ssid, ssid.c_str(), ssid.length());
|
||||
memcpy(&stationConf.sta.password, pass.c_str(), pass.length());
|
||||
esp_wifi_set_config(WIFI_IF_STA, &stationConf);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
#if defined(ESP8266)
|
||||
struct station_config stationConf;
|
||||
wifi_station_get_config_default(&stationConf);
|
||||
// Clear previuos configuration
|
||||
memset(&stationConf, 0, sizeof(stationConf));
|
||||
wifi_station_set_config(&stationConf);
|
||||
#elif defined(ESP32)
|
||||
wifi_config_t stationConf;
|
||||
esp_wifi_get_config(WIFI_IF_STA, &stationConf);
|
||||
// Clear previuos configuration
|
||||
memset(&stationConf, 0, sizeof(stationConf));
|
||||
esp_wifi_set_config(WIFI_IF_STA, &stationConf);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
webserver->send(500, "text/plain", "Connection error, maybe the password is wrong?");
|
||||
}
|
||||
webserver->send(500, "text/plain", "Wrong credentials provided");
|
||||
}
|
||||
|
||||
void FSWebServer::setCrossOrigin()
|
||||
{
|
||||
webserver->sendHeader(F("Access-Control-Allow-Origin"), F("*"));
|
||||
webserver->sendHeader(F("Access-Control-Max-Age"), F("600"));
|
||||
webserver->sendHeader(F("Access-Control-Allow-Methods"), F("PUT,POST,GET,OPTIONS"));
|
||||
webserver->sendHeader(F("Access-Control-Allow-Headers"), F("*"));
|
||||
};
|
||||
|
||||
void FSWebServer::handleScanNetworks()
|
||||
{
|
||||
String jsonList = "[";
|
||||
DebugPrint("Scanning WiFi networks...");
|
||||
int n = WiFi.scanNetworks();
|
||||
DebugPrintln(" complete.");
|
||||
if (n == 0)
|
||||
{
|
||||
DebugPrintln("no networks found");
|
||||
webserver->send(200, "text/json", "[]");
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
DebugPrint(n);
|
||||
DebugPrintln(" networks found:");
|
||||
|
||||
for (int i = 0; i < n; ++i)
|
||||
{
|
||||
String ssid = WiFi.SSID(i);
|
||||
int rssi = WiFi.RSSI(i);
|
||||
#if defined(ESP8266)
|
||||
String security = WiFi.encryptionType(i) == AUTH_OPEN ? "none" : "enabled";
|
||||
#elif defined(ESP32)
|
||||
String security = WiFi.encryptionType(i) == WIFI_AUTH_OPEN ? "none" : "enabled";
|
||||
#endif
|
||||
jsonList += "{\"ssid\":\"";
|
||||
jsonList += ssid;
|
||||
jsonList += "\",\"strength\":\"";
|
||||
jsonList += rssi;
|
||||
jsonList += "\",\"security\":";
|
||||
jsonList += security == "none" ? "false" : "true";
|
||||
jsonList += ssid.equals(WiFi.SSID()) ? ",\"selected\": true" : "";
|
||||
jsonList += i < n - 1 ? "}," : "}";
|
||||
}
|
||||
jsonList += "]";
|
||||
}
|
||||
webserver->send(200, "text/json", jsonList);
|
||||
DebugPrintln(jsonList);
|
||||
}
|
||||
|
||||
#ifdef INCLUDE_SETUP_HTM
|
||||
|
||||
void FSWebServer::addDropdownList(const char *label, const char **array, size_t size)
|
||||
{
|
||||
File file = m_filesystem->open("/config.json", "r");
|
||||
int sz = file.size() * 1.33;
|
||||
int docSize = max(sz, 2048);
|
||||
DynamicJsonDocument doc((size_t)docSize);
|
||||
if (file)
|
||||
{
|
||||
// If file is present, load actual configuration
|
||||
DeserializationError error = deserializeJson(doc, file);
|
||||
if (error)
|
||||
{
|
||||
DebugPrintln(F("Failed to deserialize file, may be corrupted"));
|
||||
DebugPrintln(error.c_str());
|
||||
file.close();
|
||||
return;
|
||||
}
|
||||
file.close();
|
||||
}
|
||||
else
|
||||
{
|
||||
DebugPrintln(F("File not found, will be created new configuration file"));
|
||||
}
|
||||
|
||||
numOptions++;
|
||||
|
||||
// If key is present in json, we don't need to create it.
|
||||
if (doc.containsKey(label))
|
||||
return;
|
||||
|
||||
JsonObject obj = doc.createNestedObject(label);
|
||||
obj["selected"] = array[0]; // first element selected as default
|
||||
JsonArray arr = obj.createNestedArray("values");
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
arr.add(array[i]);
|
||||
}
|
||||
|
||||
file = m_filesystem->open("/config.json", "w");
|
||||
if (serializeJsonPretty(doc, file) == 0)
|
||||
{
|
||||
DebugPrintln(F("Failed to write to file"));
|
||||
}
|
||||
file.close();
|
||||
}
|
||||
|
||||
void FSWebServer::removeWhiteSpaces(String &str)
|
||||
{
|
||||
const char noChars[] = {'\n', '\r', '\t'};
|
||||
int pos = -1;
|
||||
// Remove non printable characters
|
||||
for (int i = 0; i < sizeof(noChars); i++)
|
||||
{
|
||||
pos = str.indexOf(noChars[i]);
|
||||
while (pos > -1)
|
||||
{
|
||||
str.replace(String(noChars[i]), "");
|
||||
pos = str.indexOf(noChars[i]);
|
||||
}
|
||||
}
|
||||
// Remove doubles spaces
|
||||
pos = str.indexOf(" ");
|
||||
while (pos > -1)
|
||||
{
|
||||
str.replace(" ", " ");
|
||||
pos = str.indexOf(" ");
|
||||
}
|
||||
}
|
||||
|
||||
void FSWebServer::handleSetup()
|
||||
{
|
||||
webserver->sendHeader(PSTR("Content-Encoding"), "gzip");
|
||||
webserver->send_P(200, "text/html", SETUP_HTML, SETUP_HTML_SIZE);
|
||||
}
|
||||
#endif
|
||||
|
||||
void FSWebServer::handleIndex()
|
||||
{
|
||||
if (m_filesystem->exists("/index.htm"))
|
||||
{
|
||||
handleFileRead("/index.htm");
|
||||
}
|
||||
else if (m_filesystem->exists("/index.html"))
|
||||
{
|
||||
handleFileRead("/index.html");
|
||||
}
|
||||
#ifdef INCLUDE_SETUP_HTM
|
||||
else
|
||||
{
|
||||
handleSetup();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
Read the given file from the filesystem and stream it back to the client
|
||||
*/
|
||||
bool FSWebServer::handleFileRead(const String &uri)
|
||||
{
|
||||
String path = m_basePath;
|
||||
path = uri;
|
||||
|
||||
DebugPrintln("handleFileRead: " + path);
|
||||
if (path.endsWith("/"))
|
||||
{
|
||||
path += "index.htm";
|
||||
}
|
||||
String pathWithGz = path + ".gz";
|
||||
|
||||
if (m_filesystem->exists(pathWithGz) || m_filesystem->exists(path))
|
||||
{
|
||||
if (m_filesystem->exists(pathWithGz))
|
||||
{
|
||||
path += ".gz";
|
||||
}
|
||||
const char *contentType = getContentType(path.c_str());
|
||||
File file = m_filesystem->open(path, "r");
|
||||
if (webserver->streamFile(file, contentType) != file.size())
|
||||
{
|
||||
DebugPrintln(PSTR("Sent less data than expected!"));
|
||||
// webserver->stop();
|
||||
}
|
||||
file.close();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
Handle a file upload request
|
||||
*/
|
||||
void FSWebServer::handleFileUpload()
|
||||
{
|
||||
if (webserver->uri() != "/edit")
|
||||
{
|
||||
return;
|
||||
}
|
||||
HTTPUpload &upload = webserver->upload();
|
||||
if (upload.status == UPLOAD_FILE_START)
|
||||
{
|
||||
String filename = upload.filename;
|
||||
String result;
|
||||
// Make sure paths always start with "/"
|
||||
if (!filename.startsWith("/"))
|
||||
{
|
||||
filename = "/" + filename;
|
||||
}
|
||||
checkForUnsupportedPath(filename, result);
|
||||
if (result.length() > 0)
|
||||
{
|
||||
replyToCLient(ERROR, PSTR("INVALID FILENAME"));
|
||||
return;
|
||||
}
|
||||
|
||||
DebugPrintf_P(PSTR("handleFileUpload Name: %s\n"), filename.c_str());
|
||||
m_uploadFile = m_filesystem->open(filename, "w");
|
||||
if (!m_uploadFile)
|
||||
{
|
||||
replyToCLient(ERROR, PSTR("CREATE FAILED"));
|
||||
return;
|
||||
}
|
||||
DebugPrintf_P(PSTR("Upload: START, filename: %s\n"), filename.c_str());
|
||||
}
|
||||
else if (upload.status == UPLOAD_FILE_WRITE)
|
||||
{
|
||||
if (m_uploadFile)
|
||||
{
|
||||
size_t bytesWritten = m_uploadFile.write(upload.buf, upload.currentSize);
|
||||
if (bytesWritten != upload.currentSize)
|
||||
{
|
||||
replyToCLient(ERROR, PSTR("WRITE FAILED"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
DebugPrintf_P(PSTR("Upload: WRITE, Bytes: %d\n"), upload.currentSize);
|
||||
}
|
||||
else if (upload.status == UPLOAD_FILE_END)
|
||||
{
|
||||
if (m_uploadFile)
|
||||
{
|
||||
m_uploadFile.close();
|
||||
}
|
||||
DebugPrintf_P(PSTR("Upload: END, Size: %d\n"), upload.totalSize);
|
||||
}
|
||||
}
|
||||
|
||||
void FSWebServer::replyOK()
|
||||
{
|
||||
replyToCLient(OK, "");
|
||||
}
|
||||
|
||||
void FSWebServer::replyToCLient(int msg_type = 0, const char *msg = "")
|
||||
{
|
||||
webserver->sendHeader("Access-Control-Allow-Origin", "*");
|
||||
switch (msg_type)
|
||||
{
|
||||
case OK:
|
||||
webserver->send(200, FPSTR(TEXT_PLAIN), "");
|
||||
break;
|
||||
case CUSTOM:
|
||||
webserver->send(200, FPSTR(TEXT_PLAIN), msg);
|
||||
break;
|
||||
case NOT_FOUND:
|
||||
webserver->send(404, FPSTR(TEXT_PLAIN), msg);
|
||||
break;
|
||||
case BAD_REQUEST:
|
||||
webserver->send(400, FPSTR(TEXT_PLAIN), msg);
|
||||
break;
|
||||
case ERROR:
|
||||
webserver->send(500, FPSTR(TEXT_PLAIN), msg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Checks filename for character combinations that are not supported by FSBrowser (alhtough valid on SPIFFS).
|
||||
Returns an empty String if supported, or detail of error(s) if unsupported
|
||||
*/
|
||||
void FSWebServer::checkForUnsupportedPath(String &filename, String &error)
|
||||
{
|
||||
if (!filename.startsWith("/"))
|
||||
{
|
||||
error += PSTR(" !! NO_LEADING_SLASH !! ");
|
||||
}
|
||||
if (filename.indexOf("//") != -1)
|
||||
{
|
||||
error += PSTR(" !! DOUBLE_SLASH !! ");
|
||||
}
|
||||
if (filename.endsWith("/"))
|
||||
{
|
||||
error += PSTR(" ! TRAILING_SLASH ! ");
|
||||
}
|
||||
DebugPrintln(filename);
|
||||
DebugPrintln(error);
|
||||
}
|
||||
|
||||
const char *FSWebServer::getContentType(const char *filename)
|
||||
{
|
||||
if (webserver->hasArg("download"))
|
||||
return PSTR("application/octet-stream");
|
||||
else if (strstr(filename, ".htm"))
|
||||
return PSTR("text/html");
|
||||
else if (strstr(filename, ".html"))
|
||||
return PSTR("text/html");
|
||||
else if (strstr(filename, ".css"))
|
||||
return PSTR("text/css");
|
||||
else if (strstr(filename, ".sass"))
|
||||
return PSTR("text/css");
|
||||
else if (strstr(filename, ".js"))
|
||||
return PSTR("application/javascript");
|
||||
else if (strstr(filename, ".png"))
|
||||
return PSTR("image/png");
|
||||
else if (strstr(filename, ".svg"))
|
||||
return PSTR("image/svg+xml");
|
||||
else if (strstr(filename, ".gif"))
|
||||
return PSTR("image/gif");
|
||||
else if (strstr(filename, ".jpg"))
|
||||
return PSTR("image/jpeg");
|
||||
else if (strstr(filename, ".ico"))
|
||||
return PSTR("image/x-icon");
|
||||
else if (strstr(filename, ".xml"))
|
||||
return PSTR("text/xml");
|
||||
else if (strstr(filename, ".pdf"))
|
||||
return PSTR("application/x-pdf");
|
||||
else if (strstr(filename, ".zip"))
|
||||
return PSTR("application/x-zip");
|
||||
else if (strstr(filename, ".gz"))
|
||||
return PSTR("application/x-gzip");
|
||||
return PSTR("text/plain");
|
||||
}
|
||||
|
||||
// edit page, in usefull in some situation, but if you need to provide only a web interface, you can disable
|
||||
#ifdef INCLUDE_EDIT_HTM
|
||||
|
||||
/*
|
||||
Return the list of files in the directory specified by the "dir" query string parameter.
|
||||
Also demonstrates the use of chuncked responses.
|
||||
*/
|
||||
void FSWebServer::handleFileList()
|
||||
{
|
||||
if (!webserver->hasArg("dir"))
|
||||
{
|
||||
return replyToCLient(BAD_REQUEST, "DIR ARG MISSING");
|
||||
}
|
||||
|
||||
String path = webserver->arg("dir");
|
||||
DebugPrintln("handleFileList: " + path);
|
||||
if (path != "/" && !m_filesystem->exists(path))
|
||||
{
|
||||
return replyToCLient(BAD_REQUEST, "BAD PATH");
|
||||
}
|
||||
|
||||
File root = m_filesystem->open(path, "r");
|
||||
path = String();
|
||||
String output;
|
||||
output.reserve(256);
|
||||
output = "[";
|
||||
if (root.isDirectory())
|
||||
{
|
||||
File file = root.openNextFile();
|
||||
while (file)
|
||||
{
|
||||
String filename = file.name();
|
||||
if (filename.lastIndexOf("/") > -1)
|
||||
{
|
||||
filename.remove(0, filename.lastIndexOf("/") + 1);
|
||||
}
|
||||
if (output != "[")
|
||||
{
|
||||
output += ',';
|
||||
}
|
||||
output += "{\"type\":\"";
|
||||
output += (file.isDirectory()) ? "dir" : "file";
|
||||
output += "\",\"size\":\"";
|
||||
output += file.size();
|
||||
output += "\",\"name\":\"";
|
||||
output += filename;
|
||||
output += "\"}";
|
||||
file = root.openNextFile();
|
||||
}
|
||||
}
|
||||
output += "]";
|
||||
webserver->send(200, "text/json", output);
|
||||
}
|
||||
|
||||
/*
|
||||
Handle the creation/rename of a new file
|
||||
Operation | req.responseText
|
||||
---------------+--------------------------------------------------------------
|
||||
Create file | parent of created file
|
||||
Create folder | parent of created folder
|
||||
Rename file | parent of source file
|
||||
Move file | parent of source file, or remaining ancestor
|
||||
Rename folder | parent of source folder
|
||||
Move folder | parent of source folder, or remaining ancestor
|
||||
*/
|
||||
void FSWebServer::handleFileCreate()
|
||||
{
|
||||
String path = webserver->arg("path");
|
||||
if (path.isEmpty())
|
||||
{
|
||||
replyToCLient(BAD_REQUEST, PSTR("PATH ARG MISSING"));
|
||||
return;
|
||||
}
|
||||
if (path == "/")
|
||||
{
|
||||
replyToCLient(BAD_REQUEST, PSTR("BAD PATH"));
|
||||
return;
|
||||
}
|
||||
|
||||
String src = webserver->arg("src");
|
||||
if (src.isEmpty())
|
||||
{
|
||||
// No source specified: creation
|
||||
DebugPrintf_P(PSTR("handleFileCreate: %s\n"), path.c_str());
|
||||
if (path.endsWith("/"))
|
||||
{
|
||||
// Create a folder
|
||||
path.remove(path.length() - 1);
|
||||
if (!m_filesystem->mkdir(path))
|
||||
{
|
||||
replyToCLient(ERROR, PSTR("MKDIR FAILED"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Create a file
|
||||
File file = m_filesystem->open(path, "w");
|
||||
if (file)
|
||||
{
|
||||
file.write(0);
|
||||
file.close();
|
||||
}
|
||||
else
|
||||
{
|
||||
replyToCLient(ERROR, PSTR("CREATE FAILED"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
replyToCLient(CUSTOM, path.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Source specified: rename
|
||||
if (src == "/")
|
||||
{
|
||||
replyToCLient(BAD_REQUEST, PSTR("BAD SRC"));
|
||||
return;
|
||||
}
|
||||
if (!m_filesystem->exists(src))
|
||||
{
|
||||
replyToCLient(BAD_REQUEST, PSTR("BSRC FILE NOT FOUND"));
|
||||
return;
|
||||
}
|
||||
|
||||
DebugPrintf_P(PSTR("handleFileCreate: %s from %s\n"), path.c_str(), src.c_str());
|
||||
if (path.endsWith("/"))
|
||||
{
|
||||
path.remove(path.length() - 1);
|
||||
}
|
||||
if (src.endsWith("/"))
|
||||
{
|
||||
src.remove(src.length() - 1);
|
||||
}
|
||||
if (!m_filesystem->rename(src, path))
|
||||
{
|
||||
replyToCLient(ERROR, PSTR("RENAME FAILED"));
|
||||
return;
|
||||
}
|
||||
replyOK();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Handle a file deletion request
|
||||
Operation | req.responseText
|
||||
---------------+--------------------------------------------------------------
|
||||
Delete file | parent of deleted file, or remaining ancestor
|
||||
Delete folder | parent of deleted folder, or remaining ancestor
|
||||
*/
|
||||
void FSWebServer::handleFileDelete()
|
||||
{
|
||||
|
||||
String path = webserver->arg(0);
|
||||
if (path.isEmpty() || path == "/")
|
||||
{
|
||||
replyToCLient(BAD_REQUEST, PSTR("BAD PATH"));
|
||||
return;
|
||||
}
|
||||
|
||||
DebugPrintf_P(PSTR("handleFileDelete: %s\n"), path.c_str());
|
||||
if (!m_filesystem->exists(path))
|
||||
{
|
||||
replyToCLient(NOT_FOUND, PSTR(FILE_NOT_FOUND));
|
||||
return;
|
||||
}
|
||||
// deleteRecursive(path);
|
||||
File root = m_filesystem->open(path, "r");
|
||||
// If it's a plain file, delete it
|
||||
if (!root.isDirectory())
|
||||
{
|
||||
root.close();
|
||||
m_filesystem->remove(path);
|
||||
replyOK();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_filesystem->rmdir(path);
|
||||
replyOK();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
This specific handler returns the edit.htm (or a gzipped version) from the /edit folder.
|
||||
If the file is not present but the flag INCLUDE_FALLBACK_INDEX_HTM has been set, falls back to the version
|
||||
embedded in the program code.
|
||||
Otherwise, fails with a 404 page with debug information
|
||||
*/
|
||||
void FSWebServer::handleGetEdit()
|
||||
{
|
||||
#ifdef INCLUDE_EDIT_HTM
|
||||
webserver->sendHeader(PSTR("Content-Encoding"), "gzip");
|
||||
webserver->send_P(200, "text/html", edit_htm_gz, sizeof(edit_htm_gz));
|
||||
#else
|
||||
replyToCLient(NOT_FOUND, PSTR("FILE_NOT_FOUND"));
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
Return the FS type, status and size info
|
||||
*/
|
||||
void FSWebServer::handleStatus()
|
||||
{
|
||||
DebugPrintln(PSTR("handleStatus"));
|
||||
|
||||
size_t totalBytes = 1024;
|
||||
size_t usedBytes = 0;
|
||||
|
||||
#ifdef ESP8266
|
||||
FSInfo fs_info;
|
||||
m_filesystem->info(fs_info);
|
||||
totalBytes = fs_info.totalBytes;
|
||||
usedBytes = fs_info.usedBytes;
|
||||
#elif defined(ESP32)
|
||||
totalBytes = LittleFS.totalBytes();
|
||||
usedBytes = LittleFS.usedBytes();
|
||||
#endif
|
||||
|
||||
String json;
|
||||
json.reserve(128);
|
||||
json = "{\"type\":\"Filesystem\", \"isOk\":";
|
||||
if (m_fsOK)
|
||||
{
|
||||
json += PSTR("\"true\", \"totalBytes\":\"");
|
||||
json += totalBytes;
|
||||
json += PSTR("\", \"usedBytes\":\"");
|
||||
json += usedBytes;
|
||||
json += "\"";
|
||||
}
|
||||
else
|
||||
json += "\"false\"";
|
||||
json += PSTR(",\"unsupportedFiles\":\"\"}");
|
||||
webserver->send(200, "application/json", json);
|
||||
}
|
||||
|
||||
#endif // INCLUDE_EDIT_HTM
|
||||
347
lib/webserver/src/esp-fs-webserver.h
Normal file
347
lib/webserver/src/esp-fs-webserver.h
Normal file
@@ -0,0 +1,347 @@
|
||||
#ifndef esp_fs_webserver_H
|
||||
#define esp_fs_webserver_H
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <memory>
|
||||
#include <typeinfo>
|
||||
#include <base64.h>
|
||||
//#include <FS.h>
|
||||
#include <LittleFS.h>
|
||||
|
||||
#define INCLUDE_EDIT_HTM
|
||||
#ifdef INCLUDE_EDIT_HTM
|
||||
#include "edit_htm.h"
|
||||
#endif
|
||||
|
||||
#define INCLUDE_SETUP_HTM
|
||||
#ifdef INCLUDE_SETUP_HTM
|
||||
#define ARDUINOJSON_USE_LONG_LONG 1
|
||||
#include <ArduinoJson.h>
|
||||
#include "setup_htm.h"
|
||||
#endif
|
||||
|
||||
#if defined(ESP8266)
|
||||
#include <ESP8266WiFi.h>
|
||||
#include <ESP8266WebServer.h>
|
||||
#include <ESP8266mDNS.h>
|
||||
#include <ESP8266HTTPUpdateServer.h> // from Arduino core, OTA update via webbrowser
|
||||
using WebServerClass = ESP8266WebServer;
|
||||
using UpdateServerClass = ESP8266HTTPUpdateServer;
|
||||
#elif defined(ESP32)
|
||||
#include <esp_wifi.h>
|
||||
#include <WebServer.h>
|
||||
#include <WiFi.h>
|
||||
#include <ESPmDNS.h>
|
||||
#include <HTTPUpdateServer.h> // from Arduino core, OTA update via webbrowser
|
||||
using WebServerClass = WebServer;
|
||||
using UpdateServerClass = HTTPUpdateServer;
|
||||
#endif
|
||||
#include <DNSServer.h>
|
||||
|
||||
#ifndef DEBUG_ESP_PORT
|
||||
#define DBG_OUTPUT_PORT Serial
|
||||
#define DEBUG_MODE_WS false
|
||||
#else
|
||||
#define DBG_OUTPUT_PORT DEBUG_ESP_PORT
|
||||
#endif
|
||||
|
||||
#if DEBUG_MODE_WS
|
||||
#define DebugPrint(x) DBG_OUTPUT_PORT.print(x)
|
||||
#define DebugPrintln(x) DBG_OUTPUT_PORT.println(x)
|
||||
#define DebugPrintf(fmt, ...) DBG_OUTPUT_PORT.printf(fmt, ##__VA_ARGS__)
|
||||
#define DebugPrintf_P(fmt, ...) DBG_OUTPUT_PORT.printf_P(fmt, ##__VA_ARGS__)
|
||||
#else
|
||||
#define DebugPrint(x)
|
||||
#define DebugPrintln(x)
|
||||
#define DebugPrintf(x, ...)
|
||||
#define DebugPrintf_P(x, ...)
|
||||
#endif
|
||||
|
||||
enum
|
||||
{
|
||||
MSG_OK,
|
||||
CUSTOM,
|
||||
NOT_FOUND,
|
||||
BAD_REQUEST,
|
||||
ERROR
|
||||
};
|
||||
#define TEXT_PLAIN "text/plain"
|
||||
#define FS_INIT_ERROR "FS INIT ERROR"
|
||||
#define FILE_NOT_FOUND "FileNotFound"
|
||||
|
||||
class FSWebServer
|
||||
{
|
||||
|
||||
// using CallbackF = std::function<void(void)>;
|
||||
|
||||
public:
|
||||
WebServerClass *webserver;
|
||||
|
||||
FSWebServer(fs::FS &fs, WebServerClass &server);
|
||||
|
||||
bool begin(const char *path = nullptr);
|
||||
|
||||
void run();
|
||||
|
||||
void addHandler(const Uri &uri, HTTPMethod method, WebServerClass::THandlerFunction fn);
|
||||
|
||||
void addHandler(const Uri &uri, WebServerClass::THandlerFunction handler);
|
||||
|
||||
void setCaptiveWebage(const char *url);
|
||||
|
||||
IPAddress setAPmode(const char *ssid, const char *psk);
|
||||
|
||||
IPAddress startWiFi(uint32_t timeout, const char *apSSID, const char *apPsw);
|
||||
|
||||
WebServerClass *getRequest();
|
||||
|
||||
#ifdef INCLUDE_SETUP_HTM
|
||||
|
||||
#define MIN_F -3.4028235E+38
|
||||
#define MAX_F 3.4028235E+38
|
||||
|
||||
inline bool clearOptions()
|
||||
{
|
||||
File file = m_filesystem->open("/config.json", "r");
|
||||
if (file)
|
||||
{
|
||||
file.close();
|
||||
m_filesystem->remove("/config.json");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
inline void addOptionBox(const char *boxTitle)
|
||||
{
|
||||
addOption("param-box", boxTitle, false);
|
||||
}
|
||||
|
||||
inline void addHTML(const char *html, const char *id)
|
||||
{
|
||||
String elementId = "raw-html-";
|
||||
elementId += id;
|
||||
String trimmed = html;
|
||||
removeWhiteSpaces(trimmed);
|
||||
addOption(elementId.c_str(), trimmed.c_str(), false);
|
||||
}
|
||||
|
||||
inline void addCSS(const char *css)
|
||||
{
|
||||
String trimmed = css;
|
||||
removeWhiteSpaces(trimmed);
|
||||
addOption("raw-css", trimmed.c_str(), false);
|
||||
}
|
||||
|
||||
inline void addJavascript(const char *script)
|
||||
{
|
||||
// String trimmed = script;
|
||||
// removeWhiteSpaces(trimmed);
|
||||
addOption("raw-javascript", script, true);
|
||||
}
|
||||
|
||||
void addDropdownList(const char *label, const char **array, size_t size);
|
||||
|
||||
// Only for backward-compatibility
|
||||
template <typename T>
|
||||
inline void addOption(fs::FS &fs, const char *label, T val, bool hidden = false)
|
||||
{
|
||||
addOption(label, val, hidden);
|
||||
}
|
||||
|
||||
// Add custom option to config webpage (float values)
|
||||
template <typename T>
|
||||
inline void addOption(const char *label, T val, double d_min, double d_max, double step)
|
||||
{
|
||||
addOption(label, val, false, d_min, d_max, step);
|
||||
}
|
||||
|
||||
// Add custom option to config webpage (type of parameter will be deduced from variable itself)
|
||||
template <typename T>
|
||||
inline void addOption(const char *label, T val, bool hidden = false,
|
||||
double d_min = MIN_F, double d_max = MAX_F, double step = 1.0)
|
||||
{
|
||||
File file = m_filesystem->open("/config.json", "r");
|
||||
int sz = file.size() * 1.33;
|
||||
int docSize = max(sz, 2048);
|
||||
DynamicJsonDocument doc((size_t)docSize);
|
||||
if (file)
|
||||
{
|
||||
// If file is present, load actual configuration
|
||||
DeserializationError error = deserializeJson(doc, file);
|
||||
if (error)
|
||||
{
|
||||
DebugPrintln(F("Failed to deserialize file, may be corrupted"));
|
||||
DebugPrintln(error.c_str());
|
||||
file.close();
|
||||
return;
|
||||
}
|
||||
file.close();
|
||||
}
|
||||
else
|
||||
{
|
||||
DebugPrintln(F("File not found, will be created new configuration file"));
|
||||
}
|
||||
|
||||
numOptions++;
|
||||
|
||||
String key = label;
|
||||
if (hidden)
|
||||
key += "-hidden";
|
||||
|
||||
// Univoque key name
|
||||
if (key.equals("param-box"))
|
||||
{
|
||||
key += numOptions;
|
||||
}
|
||||
if (key.equals("raw-javascript"))
|
||||
{
|
||||
key += numOptions;
|
||||
}
|
||||
|
||||
// If key is present in json, we don't need to create it.
|
||||
if (doc.containsKey(key.c_str()))
|
||||
return;
|
||||
|
||||
// if min, max, step != from default, treat this as object in order to set other properties
|
||||
if (d_min != MIN_F || d_max != MAX_F || step != 1.0)
|
||||
{
|
||||
JsonObject obj = doc.createNestedObject(key);
|
||||
obj["value"] = static_cast<T>(val);
|
||||
obj["min"] = d_min;
|
||||
obj["max"] = d_max;
|
||||
obj["step"] = step;
|
||||
}
|
||||
else
|
||||
{
|
||||
doc[key] = static_cast<T>(val);
|
||||
}
|
||||
|
||||
file = m_filesystem->open("/config.json", "w");
|
||||
if (serializeJsonPretty(doc, file) == 0)
|
||||
{
|
||||
DebugPrintln(F("Failed to write to file"));
|
||||
}
|
||||
file.close();
|
||||
}
|
||||
|
||||
// Get current value for a specific custom option (true on success)
|
||||
template <typename T>
|
||||
bool getOptionValue(const char *label, T &var)
|
||||
{
|
||||
File file = m_filesystem->open("/config.json", "r");
|
||||
DynamicJsonDocument doc(file.size() * 1.33);
|
||||
if (file)
|
||||
{
|
||||
DeserializationError error = deserializeJson(doc, file);
|
||||
if (error)
|
||||
{
|
||||
DebugPrintln(F("Failed to deserialize file, may be corrupted"));
|
||||
DebugPrintln(error.c_str());
|
||||
file.close();
|
||||
return false;
|
||||
}
|
||||
file.close();
|
||||
}
|
||||
else
|
||||
return false;
|
||||
|
||||
if (doc[label]["value"])
|
||||
var = doc[label]["value"].as<T>();
|
||||
else if (doc[label]["selected"])
|
||||
var = doc[label]["selected"].as<T>();
|
||||
else
|
||||
var = doc[label].as<T>();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
bool saveOptionValue(const char *label, T val)
|
||||
{
|
||||
// Öffne die Datei im Lesemodus, um den Inhalt des Dokuments beizubehalten
|
||||
File file = m_filesystem->open("/config.json", "r");
|
||||
DynamicJsonDocument doc(file.size()* 1.33);
|
||||
|
||||
if (file)
|
||||
{
|
||||
// Deserialisiere das JSON-Dokument aus der Datei
|
||||
DeserializationError error = deserializeJson(doc, file);
|
||||
if (error)
|
||||
{
|
||||
DebugPrintln(F("Failed to deserialize file, may be corrupted"));
|
||||
DebugPrintln(error.c_str());
|
||||
file.close();
|
||||
return false;
|
||||
}
|
||||
file.close();
|
||||
}
|
||||
|
||||
// Füge den Schlüssel mit dem neuen Wert hinzu, falls er nicht vorhanden ist
|
||||
if (!doc.containsKey(label))
|
||||
{
|
||||
doc[label] = val;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Ändere den Wert mit dem Schlüssel "label"
|
||||
JsonVariant option = doc[label];
|
||||
option.set(val);
|
||||
}
|
||||
|
||||
// Öffne die Datei im Schreibmodus und speichere das geänderte Dokument
|
||||
file = m_filesystem->open("/config.json", "w");
|
||||
if (!file)
|
||||
return false;
|
||||
serializeJsonPretty(doc, file);
|
||||
file.close();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
private:
|
||||
char m_basePath[16];
|
||||
UpdateServerClass m_httpUpdater;
|
||||
DNSServer m_dnsServer;
|
||||
fs::FS *m_filesystem;
|
||||
File m_uploadFile;
|
||||
bool m_fsOK = false;
|
||||
bool m_apmode = false;
|
||||
char *m_apWebpage = (char *)"/setup";
|
||||
uint32_t m_timeout = 10000;
|
||||
|
||||
// Default handler for all URIs not defined above, use it to read files from filesystem
|
||||
bool checkDir(char *dirname, uint8_t levels);
|
||||
void doWifiConnection();
|
||||
void doRestart();
|
||||
void replyOK();
|
||||
void getIpAddress();
|
||||
void handleRequest();
|
||||
#ifdef INCLUDE_SETUP_HTM
|
||||
void removeWhiteSpaces(String &str);
|
||||
void handleSetup();
|
||||
uint8_t numOptions = 0;
|
||||
#endif
|
||||
void handleIndex();
|
||||
bool handleFileRead(const String &path);
|
||||
void handleFileUpload();
|
||||
void replyToCLient(int msg_type, const char *msg);
|
||||
void checkForUnsupportedPath(String &filename, String &error);
|
||||
void setCrossOrigin();
|
||||
void handleScanNetworks();
|
||||
const char *getContentType(const char *filename);
|
||||
bool captivePortal();
|
||||
|
||||
// edit page, in usefull in some situation, but if you need to provide only a web interface, you can disable
|
||||
#ifdef INCLUDE_EDIT_HTM
|
||||
void handleGetEdit();
|
||||
void handleFileCreate();
|
||||
void handleFileDelete();
|
||||
void handleStatus();
|
||||
void handleFileList();
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif
|
||||
163
lib/webserver/src/linked_list.h
Normal file
163
lib/webserver/src/linked_list.h
Normal file
@@ -0,0 +1,163 @@
|
||||
#define VAR_NAME(name) #name
|
||||
|
||||
#include <ArduinoJson.h>
|
||||
#include <FS.h>
|
||||
|
||||
#ifndef linked_list_H
|
||||
#define linked_list_H
|
||||
|
||||
|
||||
#if DEBUG_MODE
|
||||
#define DebugPrint(x) DBG_OUTPUT_PORT.print(x)
|
||||
#define DebugPrintln(x) DBG_OUTPUT_PORT.println(x)
|
||||
#define DebugPrintf(fmt, ...) DBG_OUTPUT_PORT.printf(fmt, ##__VA_ARGS__)
|
||||
#define DebugPrintf_P(fmt, ...) DBG_OUTPUT_PORT.printf_P(fmt, ##__VA_ARGS__)
|
||||
#else
|
||||
#define DebugPrint(x)
|
||||
#define DebugPrintln(x)
|
||||
#define DebugPrintf(x, ...)
|
||||
#define DebugPrintf_P(x, ...)
|
||||
#endif
|
||||
|
||||
|
||||
enum { CHAR, UCHAR, CHAR_PT, BOOL, INT, LONG, UINT, ULONG, FLOAT, DOUBLE, STRING};
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
struct VarNode
|
||||
{
|
||||
uint8_t type;
|
||||
void* var;
|
||||
const char* key;
|
||||
VarNode* next = nullptr;
|
||||
};
|
||||
////////////////////////////////////////////////////////////////
|
||||
class VariableList
|
||||
{
|
||||
private:
|
||||
VarNode* first = nullptr;
|
||||
VarNode* last = nullptr;
|
||||
|
||||
public:
|
||||
VariableList(){;}
|
||||
|
||||
template <class T>
|
||||
void addItem(T& var, const char* key)
|
||||
{
|
||||
VarNode* node = new VarNode();
|
||||
node->var = &var;
|
||||
// node->key = VAR_NAME(var);
|
||||
node->key = key;
|
||||
node->type = TypeOf(var);
|
||||
|
||||
if (first == nullptr) {
|
||||
first = node;
|
||||
last = node;
|
||||
return;
|
||||
}
|
||||
last->next = node;
|
||||
last = node;
|
||||
}
|
||||
|
||||
VarNode* getNode(const char* key)
|
||||
{
|
||||
VarNode* current = first;
|
||||
while ( current != nullptr )
|
||||
{
|
||||
if (strcmp(current->key, key) == 0) {
|
||||
return current;
|
||||
}
|
||||
current = current->next;
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
||||
bool saveValues(fs::FS *fs, const char* filename) {
|
||||
File file = fs->open("/config.json", "w");
|
||||
int sz = file.size() * 1.33;
|
||||
int docSize = max(sz, 2048);
|
||||
DynamicJsonDocument root((size_t)docSize);
|
||||
if (!file)
|
||||
{
|
||||
DebugPrintln(F("File not found, will be created new configuration file"));
|
||||
return false;
|
||||
}
|
||||
|
||||
VarNode* current = first;
|
||||
while ( current != nullptr )
|
||||
{
|
||||
switch (current->type) {
|
||||
case BOOL: root[current->key] = *(bool*)current->var; break;
|
||||
case CHAR: root[current->key] = *(signed char*)current->var; break;
|
||||
case INT: root[current->key] = *(int*)current->var; break;
|
||||
case LONG: root[current->key] = *(long*)current->var; break;
|
||||
case UCHAR: root[current->key] = *(unsigned char*)current->var; break;
|
||||
case UINT: root[current->key] = *(unsigned int*)current->var; break;
|
||||
case ULONG: root[current->key] = *(unsigned long*)current->var; break;
|
||||
case CHAR_PT: root[current->key] = (unsigned char*)current->var; break;
|
||||
case FLOAT: root[current->key] = *(float*)current->var; break;
|
||||
case DOUBLE: root[current->key] = *(double*)current->var; break;
|
||||
case STRING: root[current->key] = *(String*)current->var; break;
|
||||
}
|
||||
current = current->next;
|
||||
}
|
||||
|
||||
serializeJson(root, file);
|
||||
file.close();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool loadValues(fs::FS *fs, const char* filename) {
|
||||
File file = fs->open("/config.json", "r");
|
||||
DynamicJsonDocument doc(file.size() * 1.33);
|
||||
if (file)
|
||||
{
|
||||
DeserializationError error = deserializeJson(doc, file);
|
||||
if (error)
|
||||
{
|
||||
DebugPrintln(F("Failed to deserialize file, may be corrupted"));
|
||||
DebugPrintln(error.c_str());
|
||||
file.close();
|
||||
return false;
|
||||
}
|
||||
file.close();
|
||||
}
|
||||
else
|
||||
return false;
|
||||
|
||||
VarNode* current = first;
|
||||
while ( current != nullptr )
|
||||
{
|
||||
switch (current->type) {
|
||||
case BOOL: *(bool*)current->var = doc[current->key]; break;
|
||||
case CHAR: *(signed char*)current->var = doc[current->key]; break;
|
||||
case INT: *(int*)current->var = doc[current->key]; break;
|
||||
case LONG: *(long*)current->var = doc[current->key]; break;
|
||||
case UCHAR: *(unsigned char*)current->var = doc[current->key]; break;
|
||||
case UINT: *(unsigned int*)current->var = doc[current->key]; break;
|
||||
case ULONG: *(unsigned long*)current->var = doc[current->key]; break;
|
||||
case CHAR_PT: strcpy((char*)current->var, doc[current->key]); break;
|
||||
case FLOAT: *(float*)current->var = doc[current->key]; break;
|
||||
case DOUBLE: *(double*)current->var = doc[current->key]; break;
|
||||
case STRING: *(String*)current->var = doc[current->key].as<String>(); break;
|
||||
}
|
||||
current = current->next;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
virtual inline uint8_t TypeOf(const bool&) { return BOOL; }
|
||||
virtual inline uint8_t TypeOf(const char&) { return CHAR; }
|
||||
virtual inline uint8_t TypeOf(const char*) { return CHAR_PT; }
|
||||
virtual inline uint8_t TypeOf(const double&) { return DOUBLE; }
|
||||
virtual inline uint8_t TypeOf(const float&) { return FLOAT; }
|
||||
virtual inline uint8_t TypeOf(const int&) { return INT; }
|
||||
virtual inline uint8_t TypeOf(const unsigned int&) { return UINT; }
|
||||
virtual inline uint8_t TypeOf(const unsigned long&) { return ULONG; }
|
||||
virtual inline uint8_t TypeOf(const unsigned char&) { return UCHAR; }
|
||||
virtual inline uint8_t TypeOf(const String&) { return STRING; }
|
||||
};
|
||||
|
||||
#endif
|
||||
110
lib/webserver/src/setup.htm
Normal file
110
lib/webserver/src/setup.htm
Normal file
@@ -0,0 +1,110 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='UTF-8'>
|
||||
<title>SmartPusher</title>
|
||||
<meta content="width=device-width, initial-scale=1" name=viewport />
|
||||
<link href=style.css rel=stylesheet type=text/css />
|
||||
</head>
|
||||
<body class=body>
|
||||
<main id=main-box>
|
||||
<header class="ctn header">
|
||||
<div class=title>
|
||||
<label for="logo-file" class="svg-button">
|
||||
<div id=svg-logo title='Click to upload your logo file'></div>
|
||||
</label>
|
||||
<h1 id=name-logo class=heading>SmartPusher</h1>
|
||||
</div>
|
||||
<div class=topnav id=top-nav>
|
||||
<span id="nav-link">
|
||||
<a id=set-wifi class="a-link active" data-box="wifi-box">WiFi Setup</a>
|
||||
</span>
|
||||
|
||||
<a id=about target=_blank rel=noopener href=https://github.com/Blueforcer/SmartPusher/wiki>About</a>
|
||||
<a class="a-link icon" id=hum-btn>
|
||||
<div class=svg style=margin:-2px>
|
||||
<svg id=svg-menu fill=currentColor viewBox="0 0 20 18"></svg>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</header>
|
||||
<div id=wifi-box class="ctn opt-box">
|
||||
<h2 class=heading-2>Connect to WiFi</h2>
|
||||
<div id=wifi-table class=hide>
|
||||
<table class=table>
|
||||
<tbody id=wifi-list></tbody>
|
||||
</table>
|
||||
<br>
|
||||
</div>
|
||||
<div class=wifi-connect>
|
||||
<form class=form>
|
||||
<div class=tf-wrapper>
|
||||
<label for=ssid class=input-label>SSID</label>
|
||||
<input type=text placeholder="Enter your WiFI SSID name" id="ssid" />
|
||||
</div>
|
||||
<div class=tf-wrapper>
|
||||
<label for=password class=input-label>Password</label>
|
||||
<div class=show-hide-wrap id=show-hide-password>
|
||||
<a class="show-hide w--current" id=show-pass>
|
||||
<div class=svg><svg class=svg-e id=svg-eye viewBox="0 0 24 24"></svg></div>
|
||||
</a>
|
||||
<a class="show-hide" id=hide-pass>
|
||||
<div class=svg><svg class=svg-e id=svg-no-eye viewBox="0 0 24 24"></svg></div>
|
||||
</a>
|
||||
</div>
|
||||
<input type=password placeholder="Enter your WiFi password"
|
||||
id=password autocomplete=current-password data-ms-member="password" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="btn-bar ">
|
||||
<label class="toggle lbl-wifi">
|
||||
<hr>
|
||||
<span class=toggle-label>Store WiFi credentials</span>
|
||||
<input id=persistent type=checkbox class="t-check" checked>
|
||||
<div class=toggle-switch></div>
|
||||
</label>
|
||||
<a id=scan-wifi class="btn">
|
||||
<div class=svg><svg id=svg-scan fill=currentColor viewBox="0 0 24 24"></svg></div>
|
||||
<span>Scan WiFi networks</span>
|
||||
</a>
|
||||
<a id=connect-wifi class="btn">
|
||||
<div class=svg><svg id=svg-connect fill=currentColor viewBox="0 0 24 24"></svg></div>
|
||||
<span>Connect to <span id=ssid-name>SSID</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id=btn-box class="btn-bar hide">
|
||||
<label class="toggle">
|
||||
<hr>
|
||||
</label>
|
||||
<a id=restart class="btn">
|
||||
<div class=svg><svg id=svg-restart fill=currentColor viewBox="0 0 24 24"></svg></div>
|
||||
<span>Restart ESP</span>
|
||||
</a>
|
||||
<a id=save-params class="btn">
|
||||
<div class=svg><svg id=svg-save fill=currentColor viewBox="0 0 24 24"></svg></div>
|
||||
<span>Save configuration</span>
|
||||
</a>
|
||||
</div>
|
||||
</main>
|
||||
<div class="loader hide" id=loader>Loading...</div>
|
||||
<details id=modal-message>
|
||||
<summary></summary>
|
||||
<div class=d-modal>
|
||||
<a onclick=closeModalMessage()>
|
||||
<div class=d-modal-close>
|
||||
<svg id=close-modal width=14 height=14 viewBox="0 0 14 14" fill=none></svg>
|
||||
</div>
|
||||
</a>
|
||||
<div class=d-modal-title><h2 id=message-title></h2></div>
|
||||
<div class=d-modal-content><p id=message-body></p></div>
|
||||
<div class=btn-bar>
|
||||
<a id=ok-modal class="btn hide" onclick=closeModalMessage(true)><span>OK</span></a>
|
||||
<a id=close-modal class="btn" onclick=closeModalMessage(false)><span>Close</span></a>
|
||||
</div>
|
||||
</div>
|
||||
</details>
|
||||
<script src=app.js></script>
|
||||
</body>
|
||||
</html>
|
||||
526
lib/webserver/src/setup_htm.h
Normal file
526
lib/webserver/src/setup_htm.h
Normal file
@@ -0,0 +1,526 @@
|
||||
#define SETUP_HTML_SIZE 8365
|
||||
const char SETUP_HTML[] PROGMEM = {
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xed, 0x7d, 0xe9, 0x77, 0xdb, 0x46,
|
||||
0x96, 0xef, 0xf7, 0x39, 0xa7, 0xff, 0x07, 0x84, 0x59, 0x2c, 0x8e, 0x01, 0x08, 0x0b, 0x09, 0x70,
|
||||
0x31, 0x95, 0x76, 0x2b, 0xce, 0x71, 0xde, 0x93, 0x13, 0x9f, 0x76, 0xda, 0x3d, 0xd3, 0x39, 0x3e,
|
||||
0xd3, 0x10, 0x59, 0x14, 0xd1, 0x06, 0x09, 0x0e, 0x00, 0x49, 0x96, 0xd9, 0xfc, 0xdf, 0xdf, 0xef,
|
||||
0xde, 0xaa, 0xc2, 0x46, 0x90, 0x52, 0x7a, 0x92, 0xf7, 0x69, 0x62, 0x1b, 0x4b, 0x2d, 0xb7, 0xee,
|
||||
0x7e, 0x6f, 0x2d, 0x60, 0x5e, 0x7c, 0xf1, 0xdd, 0x4f, 0x97, 0x3f, 0xff, 0xe7, 0xdb, 0x57, 0xc6,
|
||||
0xaa, 0x58, 0x27, 0x17, 0x7f, 0xf8, 0xb7, 0x17, 0xea, 0x4e, 0x4f, 0x22, 0x5a, 0xe0, 0xc9, 0xc0,
|
||||
0x7f, 0x2f, 0xd6, 0xa2, 0x88, 0x8c, 0xf9, 0x2a, 0xca, 0x72, 0x51, 0xcc, 0x6e, 0x8b, 0xa5, 0x35,
|
||||
0x32, 0xce, 0x75, 0x5d, 0x11, 0x17, 0x89, 0xb8, 0x78, 0xf9, 0xd7, 0x9f, 0xff, 0xfc, 0xc3, 0x7f,
|
||||
0x18, 0x57, 0xf1, 0xcd, 0xaa, 0x78, 0x71, 0x2e, 0xcb, 0x1a, 0x9d, 0xd3, 0x4d, 0x21, 0x36, 0xc5,
|
||||
0xac, 0x77, 0x1f, 0x2f, 0x8a, 0xd5, 0x6c, 0x21, 0xee, 0xe2, 0xb9, 0xb0, 0xf8, 0xc5, 0x34, 0xe2,
|
||||
0x4d, 0x5c, 0xc4, 0x51, 0x62, 0xe5, 0xf3, 0x28, 0x11, 0x33, 0xb7, 0x67, 0x6c, 0xa2, 0xb5, 0x98,
|
||||
0xdd, 0xc5, 0xe2, 0x7e, 0x9b, 0x66, 0x45, 0x35, 0x54, 0x5e, 0x3c, 0x00, 0xac, 0x1d, 0x6f, 0xb6,
|
||||
0xc0, 0x21, 0x4e, 0xc4, 0x6e, 0x25, 0x68, 0xbc, 0x89, 0xeb, 0x6c, 0x3f, 0x4d, 0xd3, 0x6d, 0x34,
|
||||
0x8f, 0x8b, 0x87, 0x89, 0x33, 0x4d, 0xef, 0x44, 0xb6, 0x4c, 0xd2, 0xfb, 0xc9, 0x2a, 0x5e, 0x2c,
|
||||
0xc4, 0x66, 0xba, 0x4d, 0x73, 0xc0, 0x4f, 0x37, 0x93, 0xe8, 0x3a, 0x4f, 0x93, 0xdb, 0x42, 0x4c,
|
||||
0x79, 0x5c, 0xd9, 0xed, 0xb3, 0x15, 0x6f, 0x16, 0xe2, 0xd3, 0xc4, 0x72, 0xf7, 0x76, 0x92, 0x46,
|
||||
0x0b, 0x91, 0x99, 0xea, 0x3e, 0x89, 0x96, 0x45, 0xed, 0xed, 0x5a, 0x2c, 0xd3, 0x4c, 0xec, 0xac,
|
||||
0x7b, 0x71, 0xfd, 0x31, 0x2e, 0xac, 0x68, 0x13, 0xaf, 0x23, 0x82, 0x6a, 0x01, 0x93, 0xc4, 0x5a,
|
||||
0xa7, 0x0b, 0x31, 0xb9, 0x4e, 0x8b, 0xd5, 0xf4, 0x68, 0xc5, 0x41, 0xcf, 0x09, 0x41, 0x0e, 0x0d,
|
||||
0xd7, 0x1e, 0xe5, 0x86, 0x88, 0x72, 0x01, 0x4c, 0xac, 0xf4, 0xb6, 0x00, 0x3b, 0x96, 0xc4, 0x11,
|
||||
0x31, 0x7d, 0x7a, 0xcb, 0xeb, 0x34, 0x03, 0x8e, 0x56, 0x16, 0x2d, 0xe2, 0xdb, 0x7c, 0x32, 0x74,
|
||||
0xbe, 0x9e, 0x2a, 0xd6, 0x78, 0x62, 0xad, 0xa8, 0xc5, 0x93, 0xa6, 0xb0, 0x83, 0x88, 0x85, 0x48,
|
||||
0xa2, 0x87, 0x89, 0x65, 0xbb, 0x41, 0x3e, 0xed, 0x2e, 0x9d, 0xa7, 0x49, 0x9a, 0x4d, 0xbe, 0xf4,
|
||||
0x7d, 0x7f, 0xba, 0x84, 0x30, 0xad, 0x3c, 0xfe, 0x2c, 0x24, 0x0b, 0xd7, 0x51, 0x76, 0x03, 0x84,
|
||||
0x12, 0xb1, 0x2c, 0x26, 0xd1, 0x6d, 0x91, 0xea, 0x82, 0x8c, 0x31, 0xe0, 0x92, 0x52, 0x04, 0x19,
|
||||
0x20, 0x16, 0xf1, 0x9d, 0x98, 0x16, 0xe2, 0x53, 0xc1, 0xac, 0xdf, 0x14, 0x13, 0x6b, 0x8c, 0xff,
|
||||
0x80, 0xa8, 0x46, 0xab, 0xc8, 0xa2, 0x4d, 0x0e, 0x6e, 0xaf, 0x27, 0xfc, 0x84, 0x1e, 0xe2, 0x6f,
|
||||
0x67, 0x4e, 0x7f, 0x6a, 0xad, 0xf3, 0xa3, 0x75, 0xc7, 0xca, 0xb5, 0x7c, 0x31, 0xc2, 0xfe, 0xa4,
|
||||
0x60, 0x95, 0x86, 0x4e, 0x7a, 0xbd, 0x0e, 0x85, 0x29, 0xd2, 0xed, 0xc4, 0xd9, 0x3f, 0xaa, 0x0a,
|
||||
0x9a, 0x5f, 0xbe, 0xd7, 0xc5, 0x45, 0x2a, 0x65, 0x26, 0x59, 0x03, 0x7b, 0x58, 0x49, 0x43, 0xa2,
|
||||
0xb3, 0xe3, 0x1a, 0x59, 0xf1, 0x47, 0x0d, 0xf9, 0xa3, 0x78, 0x58, 0x66, 0xb0, 0x85, 0xdc, 0x60,
|
||||
0x05, 0xd8, 0x39, 0x5f, 0x9b, 0x23, 0xfc, 0x2b, 0xd2, 0xdd, 0x75, 0xfa, 0xc9, 0xca, 0x57, 0xd1,
|
||||
0x02, 0x5a, 0xee, 0x18, 0x1e, 0xf5, 0x32, 0x1c, 0xc3, 0x72, 0x6d, 0x1f, 0xdd, 0x07, 0xce, 0xd7,
|
||||
0xdd, 0xf5, 0xce, 0x7e, 0xff, 0xc7, 0xdf, 0x1e, 0x64, 0x91, 0x4d, 0x56, 0x64, 0x72, 0x3b, 0xe8,
|
||||
0x7b, 0x41, 0xdc, 0x61, 0xb9, 0x6f, 0x44, 0x9e, 0x9f, 0x8d, 0x86, 0x5f, 0xf7, 0xf7, 0xf6, 0x82,
|
||||
0x8c, 0x20, 0x4a, 0x76, 0xd7, 0xd1, 0xfc, 0xe3, 0x4d, 0x96, 0xde, 0x6e, 0x16, 0x96, 0x54, 0xa6,
|
||||
0x15, 0xc4, 0x74, 0xe6, 0x98, 0x18, 0xde, 0x75, 0x70, 0xb1, 0xc7, 0xc3, 0xbe, 0xd2, 0xe4, 0x89,
|
||||
0xbb, 0xfd, 0x64, 0x80, 0xf7, 0xf1, 0xc2, 0x20, 0x8d, 0xc3, 0x7f, 0x41, 0x5b, 0xc9, 0x59, 0xf5,
|
||||
0x1a, 0x38, 0xf9, 0xe8, 0x33, 0xc2, 0xbf, 0xec, 0xe6, 0x9a, 0xc1, 0xe2, 0x8f, 0xed, 0x0d, 0xfa,
|
||||
0xd3, 0x65, 0x22, 0x3e, 0x59, 0x8b, 0x38, 0x13, 0x73, 0x16, 0x2a, 0xc6, 0xbe, 0x5d, 0x6f, 0xa4,
|
||||
0x24, 0xc8, 0x52, 0xd6, 0xd1, 0x27, 0x4b, 0x59, 0xcb, 0xc0, 0xb9, 0x5b, 0xf1, 0xbb, 0x34, 0x99,
|
||||
0x31, 0x6a, 0x59, 0x4f, 0xa3, 0x24, 0xbe, 0x81, 0x11, 0xa2, 0x07, 0x6b, 0xc2, 0x80, 0xca, 0x0f,
|
||||
0xf5, 0xed, 0xcc, 0x02, 0x38, 0x93, 0x2e, 0x7d, 0x6d, 0x73, 0x60, 0x52, 0x53, 0x03, 0x15, 0x2f,
|
||||
0x4c, 0xfd, 0x60, 0xcd, 0x93, 0x34, 0x17, 0xbb, 0x45, 0x9c, 0x6f, 0x49, 0x49, 0x08, 0xd5, 0x43,
|
||||
0xf5, 0xdb, 0xb7, 0x5a, 0x33, 0x3a, 0x16, 0xec, 0x7e, 0x9d, 0x4f, 0xe6, 0xd0, 0x59, 0x91, 0x69,
|
||||
0xeb, 0x74, 0x5d, 0x77, 0xe4, 0x85, 0xd3, 0xf9, 0x6d, 0x96, 0xe3, 0x75, 0x9b, 0xc6, 0x5c, 0xa9,
|
||||
0xa9, 0x23, 0x99, 0x4d, 0xff, 0x71, 0x9b, 0x17, 0xf1, 0xf2, 0xc1, 0xd2, 0xfa, 0xae, 0x00, 0x48,
|
||||
0x63, 0x75, 0xa4, 0xa6, 0x2b, 0xf4, 0x95, 0x9a, 0xea, 0xc1, 0xd9, 0xab, 0xef, 0x9a, 0x23, 0x6d,
|
||||
0xa3, 0xc5, 0x22, 0xde, 0xdc, 0x4c, 0x5c, 0xd6, 0x07, 0xf2, 0x36, 0x87, 0xa6, 0x2e, 0x81, 0xc1,
|
||||
0xb7, 0xcf, 0xcf, 0x48, 0xce, 0x86, 0x65, 0x30, 0xe0, 0x7e, 0x8d, 0x2c, 0x89, 0xcb, 0x4e, 0x49,
|
||||
0x98, 0x70, 0xa8, 0x29, 0x80, 0x70, 0xe8, 0x4f, 0xe5, 0xd6, 0xa5, 0x47, 0x51, 0x03, 0xb3, 0x5b,
|
||||
0x43, 0x87, 0x4d, 0x74, 0x77, 0xa8, 0x60, 0xec, 0xad, 0x5a, 0xbe, 0x11, 0x5a, 0x03, 0x28, 0x51,
|
||||
0x31, 0x61, 0x8a, 0x4b, 0x3f, 0x09, 0xc5, 0x31, 0x0f, 0x22, 0x87, 0xc4, 0x7c, 0x09, 0x4b, 0x54,
|
||||
0x18, 0xea, 0xa1, 0x8c, 0x48, 0xf3, 0x61, 0xe9, 0xd1, 0x9f, 0xa9, 0x16, 0xe0, 0x75, 0x92, 0xce,
|
||||
0x3f, 0xaa, 0x01, 0x58, 0x5f, 0x6a, 0xbe, 0x32, 0xc0, 0xd0, 0x1a, 0x6d, 0xa0, 0x61, 0xb0, 0x06,
|
||||
0xd7, 0xf4, 0x4b, 0x49, 0x82, 0x4b, 0x16, 0x62, 0x9e, 0x66, 0xd2, 0xf7, 0x6f, 0xd2, 0x8d, 0xa8,
|
||||
0xc6, 0x55, 0xb6, 0x76, 0x48, 0xea, 0x62, 0xb1, 0xd0, 0x5a, 0xe0, 0x38, 0x4e, 0xd5, 0xc1, 0x8e,
|
||||
0xe6, 0x24, 0x85, 0x8e, 0x1e, 0xc3, 0x60, 0xee, 0x8c, 0x1c, 0xdd, 0x69, 0xb9, 0x5c, 0x96, 0x9d,
|
||||
0xec, 0x18, 0xf4, 0x96, 0x4a, 0xc9, 0x08, 0xfc, 0xbb, 0xb4, 0xff, 0xf8, 0x33, 0x61, 0xaf, 0x58,
|
||||
0x8a, 0x12, 0x72, 0x62, 0x37, 0xe9, 0x4e, 0x07, 0x54, 0xe7, 0x6b, 0x14, 0x5c, 0x27, 0xb0, 0x9f,
|
||||
0x65, 0xbc, 0xd3, 0xb4, 0x3a, 0x75, 0x22, 0x99, 0xeb, 0x7b, 0x4a, 0x33, 0x76, 0xcc, 0x9a, 0x65,
|
||||
0xb4, 0x8e, 0x93, 0x87, 0x49, 0x0e, 0x1b, 0xb2, 0x72, 0x91, 0xc5, 0xcb, 0xfd, 0x02, 0xf9, 0x42,
|
||||
0x9c, 0xe4, 0x26, 0x25, 0x20, 0x70, 0xd3, 0xeb, 0x28, 0xde, 0x98, 0xf9, 0xed, 0x1a, 0x41, 0xe5,
|
||||
0x61, 0xd7, 0x60, 0x33, 0xd0, 0x8d, 0xae, 0xa1, 0x91, 0x0a, 0x1b, 0xd0, 0x91, 0x44, 0xdb, 0x5c,
|
||||
0x4c, 0xf4, 0x83, 0x96, 0x7c, 0x4e, 0x99, 0x01, 0xe3, 0x21, 0x03, 0x93, 0x54, 0xa0, 0xd2, 0xc4,
|
||||
0xf7, 0xd1, 0x21, 0x6f, 0xd8, 0xa6, 0xb7, 0x51, 0x46, 0x22, 0x8f, 0x26, 0x92, 0x83, 0xa6, 0xe6,
|
||||
0x3d, 0x22, 0x6f, 0x12, 0x6f, 0x04, 0x02, 0xc2, 0xb5, 0xa4, 0xe1, 0x5e, 0xea, 0x50, 0x08, 0xb6,
|
||||
0xaf, 0xdc, 0x5d, 0x25, 0x71, 0x1f, 0x4a, 0xb5, 0x5f, 0x79, 0xb5, 0x12, 0x6f, 0x40, 0x25, 0x59,
|
||||
0xc5, 0x9a, 0xbd, 0xcc, 0x66, 0xac, 0x24, 0xba, 0x16, 0x1d, 0x1e, 0x92, 0xa4, 0xd2, 0xe1, 0x12,
|
||||
0x17, 0xf3, 0xc5, 0x5c, 0x0c, 0x5b, 0x9a, 0x1d, 0xb0, 0x3f, 0x2c, 0x8a, 0x74, 0x3d, 0xb1, 0x42,
|
||||
0x3c, 0x6b, 0x65, 0x70, 0x87, 0xde, 0xd8, 0x2f, 0x15, 0x34, 0xde, 0x10, 0xee, 0x96, 0xd2, 0xd3,
|
||||
0x4a, 0x39, 0x7d, 0x9b, 0x2d, 0xa3, 0x46, 0xce, 0xd0, 0x71, 0xa4, 0x93, 0x04, 0x15, 0x53, 0xee,
|
||||
0xa4, 0xd3, 0xad, 0xb0, 0x0a, 0xfa, 0x6a, 0x40, 0x47, 0x2b, 0xb6, 0xcc, 0x02, 0x6a, 0x9a, 0xae,
|
||||
0xb2, 0x00, 0xea, 0x72, 0xe8, 0x19, 0xb4, 0x6b, 0xf4, 0xf6, 0xcc, 0x85, 0x49, 0x19, 0x51, 0x21,
|
||||
0x20, 0xca, 0x9e, 0xcc, 0xee, 0x62, 0x2d, 0x90, 0x23, 0xb5, 0xcb, 0x74, 0x7e, 0x9b, 0x1f, 0xab,
|
||||
0x94, 0x22, 0xd4, 0xc5, 0xb5, 0xf8, 0x11, 0x6f, 0x90, 0xdc, 0x52, 0x44, 0xc3, 0x1f, 0x1f, 0x96,
|
||||
0x69, 0x10, 0xef, 0xbf, 0x88, 0xd7, 0x94, 0x82, 0x46, 0x50, 0x03, 0x86, 0xf7, 0x4b, 0xf1, 0xb0,
|
||||
0x15, 0xb3, 0xf9, 0x4a, 0xcc, 0x3f, 0xa2, 0xeb, 0x87, 0x6e, 0x9b, 0x98, 0x56, 0xd2, 0xad, 0x75,
|
||||
0xda, 0xdc, 0xae, 0xaf, 0x45, 0xf6, 0xc1, 0xac, 0x15, 0x6d, 0xa3, 0x3c, 0xbf, 0x47, 0xb7, 0x46,
|
||||
0x21, 0xd9, 0xca, 0x07, 0x33, 0x17, 0x09, 0xc2, 0xd5, 0xee, 0x50, 0xf4, 0xf3, 0xf9, 0xbc, 0x53,
|
||||
0xee, 0xb5, 0x38, 0x48, 0xad, 0x3d, 0xfc, 0x73, 0x64, 0x24, 0xf4, 0x3c, 0xc7, 0xe4, 0x7f, 0x3e,
|
||||
0xe2, 0x21, 0x22, 0x6c, 0xcb, 0x23, 0x95, 0xa1, 0xaf, 0x26, 0x33, 0x16, 0xa2, 0x57, 0x2f, 0x61,
|
||||
0x97, 0xcc, 0xfe, 0x8a, 0x2c, 0x43, 0x8a, 0xb1, 0xb2, 0xbb, 0x34, 0x33, 0x6c, 0x4f, 0xa6, 0xa6,
|
||||
0x66, 0x85, 0x4a, 0x59, 0x36, 0xad, 0xb9, 0x07, 0x29, 0x96, 0x09, 0x74, 0x71, 0x2e, 0x56, 0x69,
|
||||
0x42, 0xd9, 0xa8, 0x76, 0x47, 0x82, 0xfe, 0xa8, 0x06, 0xca, 0xcb, 0xd5, 0x46, 0x98, 0xd4, 0xc3,
|
||||
0xfa, 0xa8, 0x7f, 0x48, 0xf2, 0xa0, 0x83, 0x64, 0x6f, 0x8c, 0xac, 0xa2, 0xaf, 0x60, 0x4a, 0xbd,
|
||||
0x90, 0x9c, 0x95, 0x2f, 0xcd, 0x01, 0xbe, 0xf4, 0x47, 0xe3, 0x91, 0x98, 0x4f, 0x2b, 0xfb, 0xb6,
|
||||
0xe7, 0xc5, 0x46, 0x67, 0x8b, 0xf4, 0xd8, 0x4e, 0x15, 0x8d, 0x5e, 0x69, 0x57, 0xec, 0x8a, 0xa6,
|
||||
0x37, 0x59, 0xcc, 0xa6, 0x8b, 0x04, 0xc3, 0x12, 0x9b, 0xc5, 0xc4, 0x6b, 0x94, 0xe4, 0x45, 0x94,
|
||||
0xc1, 0x7c, 0x64, 0x59, 0x96, 0xde, 0xd7, 0x9b, 0xd0, 0xab, 0xaa, 0xe7, 0x61, 0xcd, 0x6a, 0xec,
|
||||
0xdd, 0x3c, 0x11, 0x51, 0xc6, 0x93, 0x08, 0xae, 0x52, 0xf1, 0x5f, 0x63, 0x41, 0xee, 0x4d, 0x58,
|
||||
0x11, 0xbb, 0x8d, 0x69, 0x47, 0x6a, 0xf0, 0x68, 0xda, 0x35, 0xfa, 0x5d, 0xb2, 0xae, 0x76, 0x44,
|
||||
0x6c, 0xe4, 0x60, 0xa0, 0x56, 0x16, 0xdd, 0x67, 0xd1, 0x76, 0x42, 0x97, 0x63, 0x79, 0x89, 0x72,
|
||||
0xd9, 0x34, 0xae, 0xa1, 0x26, 0x17, 0x65, 0x7a, 0x56, 0xd7, 0x59, 0xd9, 0x82, 0x4a, 0xf6, 0xcb,
|
||||
0x34, 0x25, 0xae, 0xd5, 0xf4, 0xdc, 0x2b, 0x1d, 0x96, 0xd4, 0xf3, 0x83, 0xa0, 0xbb, 0xff, 0x32,
|
||||
0xba, 0x86, 0xd8, 0xb5, 0x2a, 0x2e, 0x7c, 0xfa, 0xb3, 0xb7, 0xaf, 0xd3, 0xc5, 0x43, 0xc3, 0x29,
|
||||
0x27, 0xf1, 0xb6, 0x6e, 0xe8, 0x87, 0xfe, 0x5a, 0x2c, 0x96, 0xce, 0xb2, 0x9d, 0x73, 0xb8, 0xa7,
|
||||
0x6d, 0x4b, 0x7a, 0x48, 0x2a, 0x42, 0x44, 0xe3, 0x1c, 0xab, 0x43, 0x8a, 0x8d, 0x0c, 0x91, 0x2e,
|
||||
0xd0, 0xa3, 0x6e, 0x96, 0xed, 0x6d, 0x8a, 0x9c, 0x04, 0xd8, 0x6b, 0x84, 0xa7, 0x81, 0xe3, 0x74,
|
||||
0x10, 0x6e, 0x53, 0x0e, 0x6b, 0xd6, 0xba, 0x3c, 0x0d, 0x4f, 0xea, 0xb5, 0x2b, 0x1d, 0x3a, 0x14,
|
||||
0xb7, 0x88, 0xe7, 0xe0, 0x17, 0xf4, 0xf6, 0xfa, 0x16, 0x11, 0x61, 0xd3, 0x95, 0x8b, 0x49, 0xeb,
|
||||
0x52, 0xaa, 0xe6, 0x74, 0xe4, 0x65, 0xb5, 0x98, 0xd7, 0xca, 0x60, 0x5b, 0xd1, 0x8b, 0x99, 0x70,
|
||||
0x4c, 0x61, 0x10, 0x95, 0x54, 0xfa, 0x8a, 0x34, 0xbd, 0xa1, 0x1d, 0xee, 0x90, 0x50, 0x07, 0x92,
|
||||
0xd2, 0xbd, 0x28, 0x54, 0x1f, 0x99, 0xbd, 0xa0, 0xb9, 0x75, 0x1d, 0x65, 0xbb, 0xba, 0x21, 0xdf,
|
||||
0x40, 0x69, 0x29, 0x46, 0x54, 0xa6, 0x4b, 0x25, 0xcc, 0xac, 0x27, 0xda, 0x66, 0x5e, 0x64, 0xa2,
|
||||
0x98, 0xaf, 0x0e, 0xc5, 0x7a, 0xc2, 0x22, 0x64, 0xc2, 0xaa, 0x02, 0x2f, 0x39, 0xe4, 0xba, 0x74,
|
||||
0xb4, 0xfe, 0x2c, 0x19, 0xc0, 0x16, 0x04, 0xd5, 0x87, 0x63, 0xc8, 0xec, 0x5e, 0xca, 0x11, 0x6b,
|
||||
0x21, 0xf0, 0xa0, 0x8c, 0xb1, 0x29, 0x0b, 0x31, 0xeb, 0xa6, 0x82, 0x7a, 0xc3, 0x0a, 0xdd, 0x83,
|
||||
0x79, 0x55, 0x33, 0x31, 0x60, 0xd3, 0x3b, 0x36, 0x25, 0x90, 0xf9, 0x62, 0xbe, 0x02, 0xff, 0x90,
|
||||
0x70, 0x77, 0xa5, 0xa8, 0xa4, 0x0a, 0xcd, 0x31, 0xdb, 0x19, 0x4b, 0xe5, 0x0e, 0x5a, 0xd0, 0x98,
|
||||
0x0f, 0x3b, 0x85, 0x06, 0x7b, 0x8e, 0x96, 0x4e, 0x55, 0xeb, 0x15, 0x87, 0xf3, 0x7d, 0xa5, 0xea,
|
||||
0x5f, 0x97, 0xd3, 0x3d, 0x9d, 0xa9, 0x0c, 0x30, 0xc2, 0xdd, 0x4d, 0x73, 0xbe, 0xd6, 0x58, 0xee,
|
||||
0x60, 0x5b, 0x57, 0xb3, 0x3f, 0x96, 0x08, 0x9a, 0x5b, 0x62, 0x57, 0x93, 0x1a, 0x2b, 0xa1, 0xb2,
|
||||
0xb7, 0x5d, 0x7d, 0xed, 0xa4, 0xbe, 0x98, 0x52, 0x01, 0x43, 0x5b, 0x50, 0x63, 0x56, 0x84, 0xd9,
|
||||
0xf7, 0x96, 0x05, 0x52, 0x28, 0x37, 0x6d, 0xa6, 0xe8, 0xc8, 0xde, 0x6f, 0x6e, 0x68, 0x86, 0x76,
|
||||
0xd2, 0x76, 0xa4, 0x3f, 0xe6, 0x01, 0xcb, 0x84, 0x98, 0x72, 0x1e, 0x29, 0xa9, 0x6a, 0x7a, 0xd2,
|
||||
0x90, 0x91, 0x84, 0x6c, 0xe5, 0xf7, 0x31, 0x94, 0xb6, 0x26, 0xa7, 0x49, 0x47, 0x3e, 0xc2, 0x59,
|
||||
0x45, 0xe7, 0xa0, 0x2a, 0xd5, 0xf0, 0xbb, 0x75, 0xa2, 0x9e, 0x59, 0x94, 0x03, 0x20, 0x87, 0x18,
|
||||
0xe6, 0x53, 0xd8, 0x27, 0xfc, 0x0b, 0x26, 0x8a, 0xd2, 0x75, 0xad, 0x31, 0x3b, 0x4b, 0xb4, 0x12,
|
||||
0x0d, 0x47, 0xac, 0xf7, 0x75, 0x04, 0x75, 0xc8, 0x6e, 0x16, 0x1e, 0xac, 0xf3, 0xb4, 0x7b, 0xa9,
|
||||
0x06, 0x35, 0xea, 0x08, 0xf7, 0x28, 0xb3, 0x6e, 0x88, 0x32, 0xf4, 0x39, 0x73, 0x47, 0xce, 0x42,
|
||||
0xdc, 0x98, 0xa4, 0x96, 0x86, 0x63, 0x7e, 0x29, 0x84, 0xe8, 0x77, 0x2c, 0xbd, 0x35, 0xc2, 0x23,
|
||||
0xb3, 0xb6, 0x1d, 0x1e, 0x87, 0xed, 0xf0, 0xa8, 0x67, 0xa1, 0x03, 0x4a, 0xb5, 0x79, 0x21, 0x68,
|
||||
0xdb, 0xb1, 0x0e, 0x20, 0xb5, 0xb1, 0x99, 0x84, 0x51, 0x6b, 0xc9, 0x24, 0xa5, 0x74, 0x83, 0x8a,
|
||||
0x1d, 0xd2, 0xb3, 0x19, 0xff, 0x53, 0x32, 0x71, 0xeb, 0x3f, 0x4e, 0xd4, 0x10, 0xbe, 0x12, 0xf3,
|
||||
0x64, 0x4a, 0x8d, 0x27, 0x7c, 0x15, 0x8b, 0xe7, 0x27, 0xf4, 0x46, 0x4e, 0x3e, 0x1f, 0xeb, 0xa2,
|
||||
0x91, 0x65, 0x9e, 0xf8, 0xd2, 0xc3, 0xc9, 0x0e, 0xbb, 0x43, 0xee, 0xdc, 0xc5, 0x79, 0x7c, 0x1d,
|
||||
0x27, 0xb4, 0x08, 0x2c, 0xe7, 0xef, 0xa5, 0x80, 0xe5, 0xec, 0xaa, 0x6e, 0x6b, 0xc3, 0x6e, 0x15,
|
||||
0x24, 0xa7, 0x8a, 0x41, 0xfe, 0xb8, 0x16, 0x8b, 0x38, 0x32, 0xf2, 0x79, 0x26, 0xc4, 0xc6, 0x88,
|
||||
0xa0, 0x86, 0x67, 0xb5, 0xb4, 0x63, 0x0c, 0xd2, 0xfb, 0x3b, 0xce, 0xc4, 0xda, 0x41, 0xc1, 0x3d,
|
||||
0x08, 0x0a, 0xca, 0xa8, 0x75, 0xe7, 0x90, 0x16, 0x1a, 0xea, 0x39, 0xcc, 0xf0, 0xeb, 0x69, 0x7a,
|
||||
0xfd, 0x0f, 0xb8, 0x50, 0x6b, 0x19, 0x23, 0x86, 0x41, 0x39, 0x31, 0xdf, 0xad, 0x16, 0x22, 0x98,
|
||||
0x26, 0xe8, 0xfa, 0x01, 0xae, 0x2a, 0x49, 0xa4, 0x89, 0x36, 0x05, 0x88, 0x0d, 0xcd, 0x16, 0x9e,
|
||||
0x14, 0xba, 0x4f, 0x13, 0x17, 0x06, 0x21, 0x13, 0x77, 0x1c, 0xae, 0x7b, 0x08, 0xd7, 0x7d, 0x1c,
|
||||
0x6e, 0xe0, 0x8c, 0x18, 0xae, 0x8e, 0xa6, 0x27, 0x63, 0x87, 0x8e, 0x6d, 0xe5, 0xc2, 0x4e, 0x33,
|
||||
0xa6, 0x54, 0xce, 0xa9, 0x8c, 0x57, 0xb4, 0xd2, 0x1e, 0xdd, 0x45, 0x71, 0x42, 0x59, 0x78, 0x6d,
|
||||
0x91, 0xa6, 0xbe, 0xdc, 0x52, 0x87, 0x68, 0x44, 0x70, 0x99, 0xc5, 0x99, 0x5a, 0x1b, 0xe9, 0x1f,
|
||||
0xf8, 0x51, 0xb5, 0x74, 0xd2, 0x58, 0x06, 0xa9, 0x2f, 0xed, 0xc8, 0x55, 0x8c, 0x47, 0x17, 0x65,
|
||||
0xaa, 0x4c, 0x7b, 0x14, 0x7e, 0x6d, 0x3a, 0x7d, 0x9d, 0xe1, 0x0c, 0x23, 0xfa, 0xa3, 0xfb, 0xdb,
|
||||
0x99, 0xc8, 0xb7, 0x29, 0x0c, 0xfa, 0x4e, 0xec, 0x3a, 0xe4, 0x7c, 0xd0, 0x48, 0x2d, 0xcf, 0x1c,
|
||||
0x8b, 0x5a, 0x8e, 0x5e, 0xad, 0x3e, 0xec, 0x18, 0x75, 0x12, 0x43, 0x44, 0xb7, 0xd7, 0x39, 0x65,
|
||||
0xd4, 0xb1, 0x8a, 0x78, 0xf3, 0xd0, 0x64, 0xce, 0x69, 0x31, 0x0f, 0xc2, 0x31, 0x89, 0xb9, 0xb9,
|
||||
0x0a, 0xc2, 0x7c, 0xe7, 0x54, 0xba, 0xa9, 0xa0, 0x87, 0xfa, 0x59, 0x8b, 0x8c, 0xc8, 0x44, 0x6b,
|
||||
0xda, 0xe0, 0x96, 0x49, 0xe7, 0xd1, 0x54, 0xd5, 0x69, 0x01, 0x93, 0xb3, 0xb7, 0x5d, 0x33, 0x3f,
|
||||
0xa8, 0xa6, 0xe6, 0x86, 0x54, 0xda, 0x17, 0xe7, 0x72, 0x53, 0xe9, 0x0f, 0xff, 0xf6, 0xe2, 0x5c,
|
||||
0xed, 0x78, 0xe1, 0x91, 0x90, 0x35, 0xe6, 0x09, 0xa6, 0xe7, 0x33, 0x7a, 0x2c, 0x77, 0xb2, 0x60,
|
||||
0x9a, 0x46, 0xbc, 0x98, 0xd1, 0x9d, 0xf2, 0x26, 0x55, 0xce, 0x75, 0x72, 0xb5, 0x4a, 0x75, 0xea,
|
||||
0x61, 0x64, 0x43, 0x96, 0xf4, 0x6a, 0x8d, 0xb8, 0xe1, 0x22, 0xbe, 0x53, 0xad, 0xea, 0xbb, 0x64,
|
||||
0x8d, 0x26, 0xec, 0xae, 0x0c, 0x50, 0x3b, 0xeb, 0xd1, 0xea, 0x1a, 0xa9, 0xb7, 0xe8, 0x69, 0xd0,
|
||||
0x94, 0x4f, 0xc8, 0xc4, 0xb5, 0x0d, 0xba, 0x31, 0x04, 0xd0, 0xa4, 0x96, 0xd4, 0xdf, 0xe0, 0x81,
|
||||
0x66, 0xcf, 0x2e, 0x93, 0x78, 0xfe, 0xd1, 0x28, 0x52, 0xe3, 0x76, 0x4b, 0x6b, 0xff, 0xc6, 0x43,
|
||||
0x7a, 0x9b, 0x19, 0xdc, 0x80, 0x06, 0x78, 0x76, 0xf1, 0xe2, 0x1c, 0x1d, 0xbb, 0xf0, 0x39, 0x67,
|
||||
0x84, 0xba, 0x6a, 0x56, 0x2e, 0x0d, 0x44, 0xdb, 0x75, 0x72, 0x24, 0x89, 0xa3, 0x92, 0x50, 0x6b,
|
||||
0x53, 0x70, 0xe5, 0x1e, 0x87, 0x00, 0xeb, 0xc9, 0xa1, 0xca, 0xad, 0xfe, 0x1d, 0x7d, 0xba, 0x70,
|
||||
0xac, 0xb3, 0x54, 0x1a, 0x24, 0x20, 0xe2, 0xc9, 0xc2, 0x63, 0xd7, 0x90, 0x48, 0xca, 0x59, 0x8c,
|
||||
0x3d, 0xd4, 0x5b, 0x88, 0x7d, 0x1f, 0x8f, 0x32, 0x32, 0x62, 0x36, 0x8a, 0x82, 0xd7, 0x33, 0xb5,
|
||||
0x00, 0x22, 0xee, 0x63, 0x48, 0xd7, 0xd1, 0x33, 0x16, 0x51, 0x11, 0x91, 0x32, 0xd0, 0xd6, 0x26,
|
||||
0x7c, 0x26, 0x9e, 0x7a, 0x17, 0x7f, 0x8d, 0xbf, 0x8f, 0x8d, 0x77, 0xa2, 0xb8, 0xdd, 0xbe, 0x38,
|
||||
0x8f, 0x3a, 0x39, 0x4a, 0x38, 0x74, 0x55, 0xf0, 0x88, 0x3c, 0x17, 0x35, 0x90, 0xad, 0xdf, 0x88,
|
||||
0x62, 0xf6, 0x5f, 0xd7, 0x49, 0x84, 0xe1, 0xe0, 0x0f, 0x66, 0x9b, 0x34, 0xdd, 0x8a, 0x0d, 0xb4,
|
||||
0x6c, 0x95, 0x89, 0xe5, 0xcc, 0x3e, 0x87, 0x21, 0x16, 0x17, 0xdf, 0x43, 0x76, 0xf9, 0x91, 0x61,
|
||||
0x7e, 0x15, 0xb4, 0xdb, 0x2d, 0x48, 0x11, 0x17, 0x7f, 0xe1, 0xdb, 0x51, 0x80, 0x4d, 0x26, 0x90,
|
||||
0x23, 0xea, 0xd1, 0x20, 0xab, 0xdb, 0xb5, 0x05, 0xdf, 0x7e, 0x4a, 0x23, 0x65, 0x4f, 0x28, 0xa5,
|
||||
0xc1, 0x26, 0x37, 0x53, 0xb9, 0xa7, 0x05, 0xab, 0x3f, 0xd2, 0x4d, 0x4a, 0x0b, 0x1d, 0x94, 0x32,
|
||||
0xaf, 0xc5, 0xe6, 0x96, 0x74, 0x35, 0x99, 0xa9, 0xfc, 0xf7, 0x92, 0x97, 0x9e, 0x68, 0xa3, 0xf8,
|
||||
0x4f, 0x24, 0x00, 0x4a, 0x4b, 0x3c, 0x58, 0xf6, 0xa8, 0x07, 0xd5, 0x41, 0x87, 0x63, 0xd8, 0x1c,
|
||||
0xd5, 0xf3, 0x36, 0xcd, 0xed, 0x96, 0xd2, 0x47, 0x88, 0xac, 0x5e, 0xa4, 0x8c, 0x4d, 0x0b, 0xbf,
|
||||
0xee, 0x01, 0xd2, 0x6d, 0x21, 0xf5, 0xa1, 0x05, 0x75, 0xe5, 0x35, 0x15, 0xdd, 0xf2, 0x2e, 0x2e,
|
||||
0x65, 0xa8, 0x25, 0xeb, 0x24, 0xe5, 0xc1, 0x40, 0x5e, 0x97, 0x96, 0xeb, 0x81, 0x78, 0xb5, 0x49,
|
||||
0x03, 0x81, 0xa3, 0xee, 0xa2, 0xa6, 0xde, 0x86, 0x9f, 0x8f, 0xb1, 0xa3, 0x60, 0x77, 0xa7, 0x41,
|
||||
0x27, 0x71, 0x5e, 0x80, 0x7d, 0x45, 0xcd, 0xf1, 0x35, 0x59, 0x72, 0x0c, 0xd6, 0x8b, 0xeb, 0xec,
|
||||
0xd7, 0x19, 0x6b, 0x3d, 0xc7, 0xe8, 0x82, 0x47, 0xee, 0x5e, 0x35, 0xa5, 0xc7, 0xc7, 0x75, 0xab,
|
||||
0x9a, 0xfc, 0x9e, 0x52, 0xa8, 0xca, 0xbb, 0xe6, 0x79, 0xbc, 0x50, 0x5d, 0x6b, 0xab, 0xf0, 0x17,
|
||||
0xef, 0xde, 0xfd, 0xf0, 0xdd, 0x71, 0x9f, 0x57, 0xc2, 0xe1, 0x2e, 0x46, 0xb9, 0x66, 0x6b, 0xd4,
|
||||
0x96, 0x34, 0x67, 0xbd, 0x57, 0x34, 0xf5, 0x92, 0x1e, 0x16, 0xf2, 0xfc, 0xc1, 0x20, 0x98, 0x7c,
|
||||
0xac, 0x81, 0xad, 0xa5, 0x47, 0x23, 0xf7, 0xca, 0x83, 0x0d, 0x87, 0x3c, 0xee, 0x56, 0xd0, 0xff,
|
||||
0x21, 0xb9, 0x7a, 0xb9, 0xb9, 0x83, 0xe4, 0xb7, 0xaa, 0xea, 0x09, 0x64, 0xd7, 0x4c, 0xb9, 0x31,
|
||||
0xd5, 0x66, 0x23, 0x2d, 0x4b, 0xf4, 0x58, 0x27, 0x20, 0x31, 0xb4, 0xd2, 0xa1, 0x94, 0x5d, 0x8d,
|
||||
0x6a, 0x7a, 0xdb, 0x2b, 0x61, 0x12, 0xb8, 0x47, 0x40, 0xb5, 0x91, 0x83, 0xf9, 0xb3, 0xef, 0x28,
|
||||
0x5f, 0x2d, 0xa1, 0xfd, 0x88, 0x78, 0x10, 0x2d, 0xa7, 0x31, 0xc0, 0x5f, 0xed, 0x34, 0x4e, 0x71,
|
||||
0xbf, 0x1c, 0xa8, 0xd3, 0x3d, 0x3e, 0x42, 0x99, 0x74, 0x94, 0x9a, 0x3b, 0xbf, 0x1d, 0x39, 0x9b,
|
||||
0xf4, 0x77, 0xa7, 0xe8, 0x31, 0x08, 0x75, 0x63, 0x28, 0xd5, 0xec, 0x84, 0x41, 0xc4, 0x86, 0x6e,
|
||||
0xc5, 0x4c, 0xd1, 0x2f, 0xa7, 0x51, 0xa4, 0xb5, 0x9a, 0x79, 0xba, 0xde, 0x26, 0xa2, 0x10, 0x3a,
|
||||
0x02, 0x94, 0x8a, 0x26, 0xe3, 0xf0, 0x3a, 0x47, 0x90, 0xa0, 0x7d, 0x96, 0x59, 0xaf, 0x1a, 0xe0,
|
||||
0xd7, 0x9a, 0xd9, 0x8b, 0xf3, 0x0e, 0x77, 0xf3, 0x88, 0x2f, 0xeb, 0xa9, 0x89, 0x8d, 0xd1, 0x95,
|
||||
0x4b, 0x28, 0x1b, 0x54, 0x2d, 0xe5, 0x9c, 0xd4, 0xd0, 0xdb, 0xa4, 0x47, 0x93, 0x8f, 0xd5, 0x31,
|
||||
0xb3, 0x96, 0x09, 0x8c, 0x4e, 0x78, 0xaa, 0x09, 0xee, 0xc5, 0xbb, 0x02, 0x73, 0x65, 0xc9, 0x5e,
|
||||
0x64, 0xe7, 0x74, 0xb4, 0x26, 0x8e, 0x92, 0xfc, 0x68, 0xb2, 0xc1, 0xb0, 0xa4, 0xe0, 0x48, 0x06,
|
||||
0x94, 0x82, 0xe5, 0xb4, 0x34, 0x62, 0x34, 0x36, 0xb9, 0x4a, 0xb4, 0xe5, 0xbc, 0x1b, 0x79, 0xa8,
|
||||
0x9c, 0xa9, 0x3f, 0xc1, 0x3f, 0xd5, 0x67, 0xf2, 0xff, 0x4a, 0x76, 0x29, 0xd3, 0xaf, 0x79, 0xb4,
|
||||
0x69, 0xe4, 0x5f, 0xe0, 0xf4, 0xc9, 0xcc, 0xb7, 0x65, 0x30, 0xca, 0x48, 0x08, 0xcc, 0xa3, 0xb9,
|
||||
0xc3, 0x53, 0x8d, 0x86, 0x25, 0x70, 0xf1, 0x8e, 0x40, 0x32, 0xb7, 0x37, 0xa2, 0x80, 0xaa, 0x7d,
|
||||
0x3c, 0xce, 0xea, 0x53, 0xf9, 0x99, 0x8a, 0x80, 0xbf, 0x01, 0x8d, 0x0a, 0xd2, 0x6f, 0x4c, 0x66,
|
||||
0x2d, 0x35, 0x29, 0x53, 0x67, 0x8a, 0x5f, 0x16, 0x85, 0x33, 0x15, 0x2c, 0x9f, 0x4c, 0xf6, 0x61,
|
||||
0x46, 0xd5, 0x7a, 0x57, 0x59, 0x0e, 0x9b, 0x53, 0xa5, 0x7c, 0xda, 0xba, 0xd8, 0x8d, 0xb6, 0x41,
|
||||
0x76, 0x58, 0x57, 0xa7, 0x15, 0x1e, 0x18, 0x54, 0xb7, 0xea, 0x49, 0xa9, 0x60, 0xd6, 0x4c, 0xcb,
|
||||
0xe5, 0x8f, 0x08, 0xe4, 0x84, 0x30, 0x34, 0x80, 0xdf, 0x42, 0x18, 0x52, 0x10, 0x7f, 0x56, 0x10,
|
||||
0x5f, 0xbd, 0x7b, 0xdb, 0xc9, 0xf1, 0x0e, 0x6e, 0x4b, 0x0b, 0x8a, 0xee, 0x28, 0xe4, 0x64, 0xd1,
|
||||
0x3a, 0xff, 0xd7, 0xc9, 0x21, 0x20, 0xbf, 0x21, 0x2d, 0xef, 0x08, 0x1c, 0xf4, 0x75, 0x19, 0xdf,
|
||||
0xdc, 0xca, 0x73, 0x2e, 0x4f, 0x20, 0xa9, 0x0e, 0xf2, 0xc5, 0x39, 0xcd, 0xc2, 0xf5, 0x4b, 0xcd,
|
||||
0x11, 0xcb, 0x43, 0x75, 0x46, 0x19, 0x70, 0xe5, 0xfb, 0xc5, 0x55, 0xca, 0xa9, 0xb6, 0x6d, 0xdb,
|
||||
0x0d, 0x28, 0xea, 0xb0, 0x09, 0xcf, 0xea, 0xf9, 0x28, 0xd2, 0x5a, 0xe4, 0x79, 0x74, 0x53, 0xcf,
|
||||
0x6f, 0x5f, 0xa8, 0xc3, 0x27, 0x44, 0x97, 0x7a, 0x6a, 0xe9, 0xab, 0x1c, 0x59, 0x1d, 0x66, 0x3a,
|
||||
0x14, 0x41, 0xba, 0x99, 0xd3, 0xcc, 0x7b, 0xc6, 0x87, 0xb7, 0xde, 0x50, 0x9b, 0x37, 0x72, 0x90,
|
||||
0xb3, 0xfe, 0x69, 0x19, 0x34, 0x4e, 0x7d, 0x1d, 0xb5, 0x51, 0x29, 0x23, 0x6e, 0x23, 0xdb, 0x1b,
|
||||
0xf2, 0x8c, 0xad, 0x3b, 0x30, 0xe4, 0xb2, 0x32, 0x3d, 0x35, 0xe4, 0x84, 0x77, 0x77, 0xd0, 0x93,
|
||||
0xd2, 0xa4, 0x45, 0x9d, 0xa3, 0xb3, 0xa5, 0xce, 0xa0, 0x77, 0xa8, 0x65, 0x87, 0x18, 0x1f, 0x5d,
|
||||
0xda, 0xc0, 0xd4, 0x87, 0x58, 0x2d, 0xe9, 0x57, 0xcd, 0xba, 0x26, 0x3b, 0xa7, 0xa3, 0x6d, 0xeb,
|
||||
0xdc, 0x58, 0xd7, 0x40, 0xdb, 0xfa, 0x38, 0x3c, 0x97, 0x79, 0x71, 0xbe, 0xfd, 0x75, 0xa3, 0x28,
|
||||
0xa7, 0x73, 0xd4, 0x71, 0xa7, 0x1f, 0x15, 0xbf, 0x2b, 0xa3, 0x52, 0x6a, 0x77, 0x5c, 0xe2, 0x45,
|
||||
0x76, 0x2b, 0xfa, 0x17, 0xd2, 0x06, 0x7e, 0xfa, 0xbf, 0x4a, 0xe7, 0x4f, 0x46, 0x87, 0x9a, 0x5c,
|
||||
0x6b, 0xc6, 0x7b, 0x62, 0x88, 0x25, 0x62, 0x7e, 0x39, 0xc6, 0x25, 0x55, 0x1f, 0x1d, 0xe6, 0x94,
|
||||
0x37, 0xc6, 0xb3, 0xb4, 0x8d, 0xf2, 0xf4, 0xf5, 0x3c, 0x8b, 0xb7, 0xc5, 0x05, 0x34, 0xe5, 0x2a,
|
||||
0xbd, 0x49, 0x67, 0xcf, 0x58, 0xf3, 0xa4, 0xaa, 0x05, 0x74, 0xf6, 0x42, 0x29, 0x1b, 0x3f, 0x37,
|
||||
0xdd, 0xc2, 0x08, 0x7f, 0xe1, 0x16, 0xb6, 0x51, 0xb1, 0x32, 0x30, 0xf9, 0x79, 0xe3, 0x7a, 0xf6,
|
||||
0xd8, 0x0b, 0x0c, 0x77, 0x6c, 0xfb, 0xde, 0x20, 0x0a, 0xed, 0xc0, 0xa0, 0x7f, 0xbc, 0xad, 0x60,
|
||||
0xa1, 0x6a, 0xe4, 0x5b, 0x81, 0x1d, 0x0e, 0x07, 0x28, 0x1d, 0xa8, 0x8b, 0xac, 0xf3, 0xed, 0x91,
|
||||
0x37, 0xb2, 0x5c, 0x7b, 0x38, 0x1c, 0xd8, 0xc1, 0x38, 0xa4, 0x7f, 0x72, 0x2b, 0xc2, 0xb2, 0x03,
|
||||
0x27, 0xb0, 0xec, 0xd0, 0x77, 0xed, 0x20, 0x1c, 0xd0, 0x3f, 0x59, 0x6e, 0xd8, 0xe1, 0xc0, 0x47,
|
||||
0xa5, 0x1b, 0x1a, 0x23, 0x7b, 0xac, 0x2e, 0xb2, 0x66, 0x64, 0x8c, 0xed, 0x91, 0x33, 0x04, 0x78,
|
||||
0xc0, 0x54, 0x57, 0x05, 0xcb, 0x1b, 0x8f, 0x0c, 0x0c, 0x32, 0xf0, 0x12, 0x17, 0xc8, 0x8c, 0xed,
|
||||
0x61, 0x10, 0xb9, 0xae, 0xed, 0xf8, 0x63, 0x43, 0xdd, 0xd4, 0x06, 0x88, 0x1d, 0xba, 0x03, 0x00,
|
||||
0x1f, 0xba, 0x06, 0x08, 0x72, 0x87, 0x63, 0x7d, 0x93, 0xd5, 0xb6, 0xe7, 0x86, 0xa0, 0xc6, 0x1f,
|
||||
0xf8, 0x2f, 0x51, 0x3e, 0x0c, 0x0d, 0x79, 0x95, 0x95, 0x21, 0x6a, 0x3d, 0x23, 0xb0, 0xdd, 0xd0,
|
||||
0x8d, 0x86, 0xf6, 0xd0, 0x37, 0xf8, 0xa2, 0x38, 0x80, 0xeb, 0xc0, 0xf6, 0x41, 0xbf, 0xbc, 0x6a,
|
||||
0xbe, 0xb8, 0xe0, 0x98, 0xed, 0xfb, 0x21, 0x8a, 0xbd, 0x70, 0xa0, 0xae, 0x1a, 0x95, 0xb1, 0x33,
|
||||
0x06, 0xb8, 0xd1, 0x30, 0x20, 0xb2, 0xc6, 0xfa, 0xaa, 0x6b, 0x1d, 0x30, 0xc5, 0x1d, 0x0f, 0xd1,
|
||||
0xc7, 0x71, 0x5d, 0x75, 0x95, 0x6c, 0xf0, 0x19, 0xa2, 0x6f, 0x8f, 0x31, 0x10, 0xae, 0xc1, 0x50,
|
||||
0x5d, 0x35, 0x5b, 0xe1, 0xd1, 0x31, 0x30, 0x18, 0xe1, 0x87, 0xae, 0x3d, 0x1a, 0x45, 0xae, 0x63,
|
||||
0xbb, 0x23, 0xcf, 0x50, 0x37, 0x09, 0xdf, 0xb3, 0x9d, 0x61, 0x08, 0x42, 0x3d, 0x90, 0x35, 0x54,
|
||||
0x17, 0xc5, 0x03, 0x48, 0x11, 0x98, 0x07, 0xde, 0x68, 0x4d, 0xe8, 0x0f, 0x20, 0xa1, 0x97, 0xae,
|
||||
0x0f, 0x74, 0x7c, 0x43, 0xdd, 0x94, 0x98, 0x1c, 0xc7, 0x25, 0x98, 0x10, 0x3d, 0xb1, 0x69, 0x4c,
|
||||
0x23, 0xc8, 0x9b, 0xc6, 0x92, 0x2a, 0xd0, 0x3b, 0x4c, 0x48, 0xa2, 0x24, 0xf8, 0x08, 0x0d, 0x9c,
|
||||
0x80, 0xb9, 0x4a, 0x37, 0x47, 0xd3, 0x1a, 0xda, 0xee, 0xc0, 0x35, 0xba, 0x2a, 0x55, 0x95, 0x93,
|
||||
0x68, 0xdd, 0x21, 0x10, 0x63, 0x6e, 0x54, 0xea, 0x11, 0x34, 0xd2, 0x0f, 0x30, 0x5c, 0xe8, 0x05,
|
||||
0x6f, 0x10, 0xcd, 0x08, 0xa5, 0x31, 0x50, 0xe6, 0x9b, 0x7a, 0xd3, 0xd0, 0xd0, 0x6b, 0x00, 0x59,
|
||||
0x27, 0xd0, 0x47, 0x17, 0x28, 0x81, 0x05, 0xd0, 0x9c, 0xa1, 0x07, 0x24, 0xbd, 0xc8, 0x85, 0xa2,
|
||||
0x41, 0xbe, 0xea, 0x26, 0x69, 0x80, 0xee, 0x0c, 0x47, 0x23, 0xbe, 0x85, 0x41, 0x42, 0xba, 0x8a,
|
||||
0xf6, 0x81, 0x3f, 0x77, 0x2c, 0xdb, 0x0f, 0x02, 0xe0, 0x39, 0x26, 0x05, 0xf6, 0xf8, 0x81, 0x41,
|
||||
0xae, 0x71, 0xf3, 0x82, 0x31, 0x54, 0xc3, 0x0d, 0x86, 0x2f, 0x81, 0x3d, 0x34, 0x44, 0x5e, 0xb5,
|
||||
0x0e, 0x8d, 0x5c, 0x52, 0x54, 0x2f, 0x24, 0xf5, 0x74, 0x5d, 0x56, 0x4f, 0xba, 0x69, 0x85, 0x19,
|
||||
0x90, 0xd2, 0xd9, 0x61, 0x78, 0x07, 0xab, 0xf0, 0x87, 0xc4, 0xf8, 0x31, 0x35, 0x92, 0x37, 0x85,
|
||||
0xd4, 0x18, 0x43, 0x8c, 0x08, 0xd1, 0x61, 0xb8, 0xa2, 0x66, 0x03, 0x82, 0x15, 0xba, 0xbe, 0xa1,
|
||||
0x6e, 0xa5, 0xaa, 0x87, 0x2e, 0x41, 0x1c, 0x04, 0x6f, 0x42, 0xd8, 0x2e, 0xe1, 0x31, 0x1a, 0xa1,
|
||||
0x2d, 0xd8, 0x08, 0x20, 0x7c, 0x65, 0x70, 0x16, 0x3d, 0x5b, 0xf5, 0x62, 0x5d, 0xc9, 0xd5, 0x78,
|
||||
0x96, 0x05, 0x34, 0x29, 0x93, 0x41, 0xe7, 0xd9, 0x14, 0x4e, 0x3c, 0x2f, 0x0c, 0x3c, 0xbf, 0x11,
|
||||
0x9b, 0x5b, 0xb8, 0x95, 0xd2, 0x4d, 0xf8, 0x66, 0xf0, 0xda, 0x73, 0xdf, 0x8f, 0x5e, 0xfb, 0xef,
|
||||
0x03, 0xbc, 0xb8, 0x2e, 0xbd, 0xb9, 0x3e, 0x5e, 0x5d, 0x97, 0xde, 0xb9, 0xd6, 0xa5, 0x6a, 0x37,
|
||||
0xf8, 0x5b, 0xef, 0xfc, 0xe2, 0x99, 0xc9, 0xbe, 0x09, 0x4e, 0x51, 0xfa, 0x26, 0xe5, 0x90, 0x7a,
|
||||
0x6e, 0xb0, 0x2d, 0x7a, 0x4d, 0x97, 0x34, 0x84, 0x58, 0xf0, 0xaf, 0xe6, 0x94, 0xd6, 0x24, 0x78,
|
||||
0x14, 0xad, 0x2c, 0x6f, 0x34, 0x9a, 0x5b, 0x5e, 0x00, 0xf6, 0xf9, 0xae, 0x07, 0x4b, 0xb0, 0x06,
|
||||
0x23, 0xcb, 0x83, 0xd4, 0x3c, 0x98, 0xf2, 0x88, 0x5e, 0x06, 0xa3, 0x3b, 0xcb, 0xf3, 0x06, 0x90,
|
||||
0x1c, 0xb5, 0x0a, 0x83, 0x61, 0xe0, 0x19, 0xd4, 0x60, 0x10, 0x8c, 0xc2, 0x21, 0x6a, 0x0d, 0x6e,
|
||||
0xb3, 0x22, 0x38, 0x35, 0x30, 0x28, 0x35, 0x4a, 0x30, 0x06, 0xb7, 0xba, 0x63, 0x28, 0x46, 0x09,
|
||||
0xc5, 0x2a, 0xa1, 0x48, 0x10, 0xb8, 0x7e, 0x5e, 0x13, 0x3e, 0x12, 0xa7, 0x11, 0x04, 0xce, 0x08,
|
||||
0xb9, 0xe4, 0x30, 0xdd, 0x20, 0x1c, 0x13, 0xaf, 0xe1, 0x15, 0x02, 0x05, 0x08, 0x0d, 0x7c, 0xcf,
|
||||
0xf1, 0x5d, 0xaa, 0x25, 0x20, 0x5c, 0x87, 0xbf, 0x8c, 0x8a, 0xee, 0x8d, 0x77, 0x4b, 0xf7, 0xa6,
|
||||
0x67, 0xf4, 0x56, 0xd4, 0xe8, 0xee, 0x96, 0xec, 0x6e, 0x71, 0x25, 0xfe, 0x7e, 0x5e, 0x83, 0x65,
|
||||
0xe0, 0x6f, 0x8d, 0x57, 0x0e, 0xfc, 0x02, 0xfa, 0x94, 0x5d, 0x18, 0x29, 0xab, 0x86, 0x14, 0x83,
|
||||
0x1d, 0x39, 0x80, 0x3a, 0x24, 0x67, 0x3f, 0x0e, 0x40, 0x04, 0x59, 0x49, 0x88, 0xc6, 0x9e, 0x35,
|
||||
0x0e, 0xe4, 0xdf, 0x1c, 0xff, 0x8c, 0x7a, 0xb1, 0x31, 0x0e, 0xee, 0xa8, 0x97, 0x51, 0xc7, 0xa5,
|
||||
0x86, 0x2a, 0xae, 0xf9, 0xd1, 0x91, 0x42, 0xc7, 0x1e, 0x8e, 0x7d, 0xd0, 0x0d, 0x6f, 0x34, 0x70,
|
||||
0x02, 0x0f, 0x14, 0xc0, 0xa9, 0xbb, 0x14, 0x32, 0xbc, 0x51, 0x4e, 0xcf, 0xba, 0xc2, 0x50, 0x15,
|
||||
0x8f, 0x8d, 0x55, 0x52, 0x2e, 0x55, 0x95, 0xf4, 0xeb, 0x2f, 0x9b, 0xe4, 0x7f, 0x35, 0xec, 0xf7,
|
||||
0xd7, 0xb0, 0x91, 0xf3, 0x64, 0x05, 0xfb, 0xf5, 0x62, 0xff, 0xb5, 0xfa, 0xf5, 0x3b, 0x68, 0x71,
|
||||
0x87, 0x66, 0xd1, 0x72, 0x42, 0xdd, 0xfd, 0x51, 0x00, 0xf1, 0x2e, 0xc7, 0x32, 0x44, 0x01, 0x14,
|
||||
0x47, 0x35, 0x44, 0xb3, 0x00, 0xb9, 0x12, 0x9c, 0xf8, 0xe8, 0x6a, 0x60, 0x73, 0x38, 0x19, 0x5c,
|
||||
0x22, 0xf0, 0xbb, 0x1c, 0xf1, 0x71, 0xf1, 0x0d, 0xca, 0x43, 0x8c, 0xf1, 0x3b, 0x0a, 0x77, 0x63,
|
||||
0x59, 0x4a, 0x5e, 0x9e, 0x5b, 0x5e, 0xc1, 0xd1, 0x23, 0x69, 0x00, 0x58, 0x3c, 0x04, 0x81, 0x21,
|
||||
0x63, 0xd4, 0x70, 0xa4, 0x1f, 0xb8, 0x06, 0xcc, 0xf2, 0xb9, 0x00, 0x4a, 0xc3, 0x71, 0x98, 0x52,
|
||||
0x35, 0xce, 0x4f, 0xf0, 0x1c, 0xa2, 0xc1, 0x00, 0x1a, 0xa7, 0xcb, 0x7d, 0xbe, 0x7a, 0xf2, 0xef,
|
||||
0x1b, 0x0f, 0x68, 0x5c, 0x79, 0x1e, 0xf0, 0x02, 0x92, 0x97, 0x18, 0x36, 0x1c, 0x53, 0x12, 0x33,
|
||||
0x20, 0x58, 0xc8, 0xb5, 0x18, 0xac, 0xff, 0x0e, 0x99, 0x8b, 0xab, 0x8a, 0x6d, 0x4a, 0x82, 0x82,
|
||||
0x2b, 0x20, 0x7d, 0x89, 0x11, 0x48, 0xab, 0x88, 0x52, 0x68, 0x3b, 0x03, 0x0d, 0xde, 0x31, 0x52,
|
||||
0x5c, 0x4a, 0xa0, 0x99, 0x25, 0xc3, 0x4b, 0xc4, 0x61, 0x64, 0x28, 0xee, 0x10, 0xc4, 0x0d, 0x08,
|
||||
0x33, 0x60, 0x33, 0xb2, 0x79, 0x0c, 0xef, 0x8a, 0x5b, 0xe2, 0x4a, 0xd0, 0x3d, 0x28, 0xc6, 0xe0,
|
||||
0x92, 0x92, 0x32, 0x9f, 0x58, 0xc0, 0x7c, 0x21, 0x56, 0x78, 0x9a, 0xdc, 0x4b, 0x97, 0x23, 0x19,
|
||||
0x05, 0x7a, 0x74, 0x08, 0x18, 0x4b, 0xf0, 0xc2, 0x27, 0xa0, 0xce, 0x88, 0x7a, 0x06, 0x4c, 0xba,
|
||||
0xc3, 0xa4, 0xfb, 0x54, 0xce, 0x5d, 0x87, 0x6f, 0x28, 0xf0, 0x0e, 0x08, 0xc0, 0x90, 0x48, 0xa4,
|
||||
0x47, 0x9e, 0x54, 0x01, 0x83, 0x31, 0x3f, 0x00, 0xf8, 0x3b, 0x59, 0x07, 0x6e, 0xa0, 0x6e, 0xc4,
|
||||
0x77, 0xe2, 0x48, 0x20, 0x1f, 0xc9, 0x50, 0x19, 0x57, 0x18, 0x26, 0x5d, 0x43, 0x17, 0xe8, 0xbe,
|
||||
0xf6, 0x1c, 0x6a, 0x32, 0x64, 0xd4, 0x03, 0x97, 0xc0, 0x8c, 0x98, 0x72, 0xea, 0xef, 0x5e, 0x02,
|
||||
0x7c, 0x20, 0x5f, 0x89, 0x57, 0x68, 0x48, 0xe9, 0x04, 0x3f, 0xf2, 0x70, 0x5c, 0x4b, 0xca, 0x85,
|
||||
0xd2, 0x80, 0x05, 0x3c, 0xe6, 0x57, 0xca, 0xb2, 0x19, 0xb5, 0x11, 0x3d, 0x87, 0x21, 0x3d, 0x87,
|
||||
0xfe, 0x95, 0x2b, 0xc3, 0xfe, 0x6b, 0xcf, 0x7b, 0x4f, 0xf8, 0x5f, 0x61, 0xc8, 0x11, 0x53, 0x1e,
|
||||
0x84, 0x97, 0x78, 0x46, 0x86, 0x88, 0xe2, 0x31, 0x8f, 0x23, 0x9f, 0x99, 0x0c, 0xba, 0xff, 0x8d,
|
||||
0xa2, 0x37, 0xab, 0xac, 0x5a, 0x1a, 0x6a, 0x69, 0x6d, 0x70, 0xa9, 0x44, 0x58, 0x8a, 0x14, 0xf2,
|
||||
0xbd, 0x52, 0xb2, 0xbe, 0xac, 0xa4, 0x1f, 0x12, 0x78, 0xa5, 0x13, 0x35, 0x5d, 0xd1, 0xfa, 0x73,
|
||||
0x45, 0x22, 0xbf, 0xac, 0x34, 0x00, 0xa8, 0xc1, 0xad, 0x49, 0xc5, 0x78, 0x03, 0x1a, 0x46, 0x03,
|
||||
0x52, 0xbf, 0x81, 0x4b, 0x1a, 0x4b, 0x98, 0x41, 0x15, 0x43, 0x4e, 0x90, 0x86, 0xf4, 0xec, 0xf2,
|
||||
0x33, 0xa5, 0x2a, 0x78, 0xbe, 0x2a, 0x2d, 0xe0, 0xb2, 0x6e, 0x16, 0xc8, 0x47, 0xb5, 0xb5, 0x54,
|
||||
0x26, 0xa4, 0xad, 0xea, 0x4a, 0xdb, 0xd9, 0x65, 0x65, 0x7a, 0xda, 0x18, 0xa5, 0x69, 0xa2, 0x32,
|
||||
0x94, 0xa6, 0x33, 0xa4, 0x39, 0x8a, 0xcb, 0x92, 0xae, 0xf0, 0x7a, 0xba, 0xb6, 0xc2, 0x75, 0x0c,
|
||||
0x88, 0xcf, 0x01, 0x68, 0x61, 0x55, 0xa5, 0x0c, 0x96, 0x1f, 0x3c, 0xf5, 0xc0, 0xe5, 0x21, 0xab,
|
||||
0xa3, 0xcf, 0x63, 0x05, 0x6c, 0xa4, 0x94, 0xd5, 0x33, 0x4c, 0x9f, 0x90, 0xa1, 0x51, 0x78, 0x96,
|
||||
0xe0, 0xb1, 0x94, 0xb5, 0xae, 0x7a, 0x04, 0xe0, 0x8a, 0xf6, 0x45, 0x03, 0xca, 0x96, 0x70, 0x65,
|
||||
0x4d, 0x7b, 0xef, 0x79, 0x57, 0x5c, 0x55, 0x89, 0x93, 0x16, 0x65, 0x1a, 0xb2, 0x1c, 0x9a, 0xe3,
|
||||
0xd7, 0xc3, 0xf7, 0xc3, 0xd7, 0xa4, 0xf1, 0x9e, 0xe9, 0x8e, 0x5f, 0xfa, 0x26, 0xa7, 0x84, 0x26,
|
||||
0x78, 0x85, 0xfc, 0xab, 0xf6, 0x4a, 0xd5, 0x7e, 0xfd, 0x7d, 0x78, 0x58, 0x0f, 0xfb, 0x0d, 0x4d,
|
||||
0xff, 0xf5, 0xf0, 0x12, 0x4c, 0x1d, 0xa3, 0x06, 0xb5, 0x30, 0x4a, 0xdf, 0x1c, 0xbe, 0x07, 0x64,
|
||||
0xcf, 0xe4, 0x44, 0xd9, 0x44, 0xe4, 0x34, 0x3d, 0xf7, 0x75, 0xa3, 0xc4, 0x73, 0xd1, 0xf9, 0x7d,
|
||||
0x78, 0x45, 0xdd, 0x2b, 0x6c, 0xd5, 0x72, 0x58, 0x53, 0xf9, 0xcc, 0x01, 0xf9, 0x27, 0xd7, 0x64,
|
||||
0x16, 0xe1, 0x46, 0xc2, 0x04, 0xdf, 0xcc, 0xc0, 0xf6, 0x49, 0xab, 0x43, 0x93, 0xa4, 0xc0, 0x0f,
|
||||
0x52, 0xa3, 0xa9, 0x8e, 0x2e, 0x64, 0xc9, 0x23, 0x93, 0x8c, 0x8f, 0x38, 0xec, 0x9b, 0x68, 0xc2,
|
||||
0xb3, 0x9c, 0x31, 0x95, 0x41, 0x79, 0xa1, 0x10, 0xd4, 0x8e, 0x04, 0x01, 0xb0, 0x2e, 0xab, 0xc4,
|
||||
0x80, 0x6a, 0x43, 0x29, 0x74, 0x90, 0x87, 0x0b, 0x6b, 0xab, 0x49, 0x19, 0xb6, 0x21, 0x9f, 0x1c,
|
||||
0x6a, 0x47, 0xb5, 0xa1, 0x1d, 0xd2, 0x10, 0xae, 0xa9, 0xb4, 0x6a, 0x68, 0x92, 0x9c, 0x4c, 0x48,
|
||||
0x04, 0xea, 0x71, 0x15, 0x9a, 0x30, 0x3b, 0x68, 0x83, 0x89, 0x97, 0xf7, 0x83, 0x37, 0x40, 0x56,
|
||||
0x22, 0xe5, 0x13, 0x9e, 0x34, 0x25, 0xa3, 0xec, 0x97, 0x26, 0x02, 0x80, 0x33, 0x26, 0xc5, 0x24,
|
||||
0x32, 0xc8, 0x63, 0xa2, 0xd8, 0x26, 0x3b, 0x1b, 0x13, 0x39, 0x64, 0x51, 0x23, 0x89, 0xc7, 0x88,
|
||||
0x7a, 0xc0, 0xcc, 0x69, 0xc6, 0x4b, 0xa0, 0x48, 0xb7, 0x99, 0xd0, 0xc1, 0x15, 0x53, 0x34, 0xb8,
|
||||
0x24, 0x62, 0xc9, 0xae, 0x88, 0x96, 0x81, 0xa1, 0x47, 0xac, 0xb8, 0xfb, 0xea, 0x41, 0xb4, 0xcd,
|
||||
0xda, 0x1e, 0xce, 0xa1, 0x59, 0x34, 0xab, 0x84, 0xfb, 0x22, 0xaf, 0x89, 0x90, 0x4b, 0x93, 0xbc,
|
||||
0x21, 0x66, 0x32, 0x2e, 0x4f, 0x9c, 0xc9, 0xa3, 0x0f, 0x82, 0x04, 0xfa, 0x4c, 0x93, 0x28, 0x27,
|
||||
0x98, 0x63, 0xde, 0x48, 0xd3, 0x01, 0xe8, 0x19, 0x26, 0x0f, 0x63, 0x8b, 0x15, 0x13, 0x0c, 0x1c,
|
||||
0xd1, 0x17, 0xb0, 0x10, 0x08, 0x4d, 0x5e, 0x08, 0x09, 0xf4, 0xc6, 0xb4, 0x96, 0xf4, 0x15, 0x21,
|
||||
0x9f, 0x0b, 0x79, 0xfe, 0x02, 0xfd, 0xc7, 0x9c, 0x3f, 0x40, 0xdb, 0x30, 0xf1, 0xc8, 0xa2, 0xe9,
|
||||
0x32, 0x87, 0xc7, 0xc4, 0x78, 0x60, 0x7e, 0xa0, 0x47, 0xa4, 0x99, 0xd7, 0xe0, 0xf3, 0x1b, 0x8f,
|
||||
0xbc, 0x28, 0xa0, 0x07, 0x73, 0x4c, 0xa9, 0xc6, 0x34, 0xb2, 0x4d, 0x73, 0x76, 0xdb, 0xf1, 0x78,
|
||||
0x0a, 0x33, 0x70, 0x69, 0x3e, 0x4f, 0x53, 0xa2, 0x71, 0x78, 0xc9, 0x28, 0x86, 0x6a, 0x5a, 0x49,
|
||||
0x86, 0x4d, 0xe1, 0x8d, 0x27, 0x67, 0x06, 0x4d, 0xe1, 0xc8, 0x92, 0xe0, 0x0b, 0xd0, 0x58, 0x45,
|
||||
0x8d, 0xb9, 0x2b, 0x67, 0xb5, 0x34, 0x57, 0x04, 0x58, 0xf2, 0x54, 0x20, 0x78, 0xe4, 0x25, 0x14,
|
||||
0x12, 0xa9, 0x8b, 0x37, 0x97, 0x63, 0xf2, 0x78, 0xf2, 0x4e, 0x93, 0x4d, 0x43, 0xa1, 0x21, 0xf9,
|
||||
0x40, 0x98, 0x58, 0x54, 0x81, 0xd8, 0x0d, 0x8b, 0x2e, 0x71, 0xb5, 0x54, 0xb5, 0xaf, 0x1e, 0x10,
|
||||
0x77, 0x9d, 0xcf, 0x6f, 0x64, 0x0c, 0x1e, 0xce, 0x2d, 0xc9, 0x75, 0x6b, 0x68, 0x11, 0xd7, 0x71,
|
||||
0xa3, 0x0c, 0x0d, 0x58, 0x13, 0x1f, 0x81, 0x96, 0x64, 0xac, 0x3b, 0x48, 0x5c, 0x5e, 0x65, 0xc0,
|
||||
0x05, 0x30, 0x1d, 0xe6, 0x32, 0x88, 0xc4, 0xc4, 0x9d, 0x6f, 0xbc, 0xf4, 0xe0, 0xb2, 0x07, 0x21,
|
||||
0x27, 0xeb, 0xf3, 0x1f, 0xdb, 0x63, 0x0c, 0x47, 0xdc, 0x9e, 0x26, 0xb0, 0x0e, 0x8c, 0x0c, 0xa8,
|
||||
0x91, 0xf5, 0xcc, 0x69, 0x69, 0x03, 0xa1, 0x83, 0xbe, 0x00, 0x86, 0x92, 0xf3, 0x10, 0xf6, 0xf0,
|
||||
0xf3, 0x9a, 0x39, 0x80, 0x0a, 0x1f, 0x0d, 0xdc, 0x21, 0x21, 0x4b, 0x12, 0x1b, 0x5a, 0x4a, 0xc0,
|
||||
0x01, 0x4f, 0xf8, 0x07, 0x89, 0x27, 0xd7, 0x0e, 0x82, 0xc1, 0xe7, 0x52, 0xa5, 0x7e, 0x4c, 0x5b,
|
||||
0x4a, 0x05, 0xeb, 0x5e, 0x79, 0x83, 0x3b, 0x6f, 0xf0, 0xda, 0x79, 0xef, 0x7c, 0x56, 0x0b, 0x92,
|
||||
0x3d, 0x5a, 0x91, 0xac, 0xe7, 0x82, 0xc4, 0x07, 0x8a, 0xb5, 0xb4, 0xf0, 0xa1, 0xa4, 0x13, 0x72,
|
||||
0x74, 0x84, 0x64, 0xe6, 0xb4, 0x28, 0x40, 0xc2, 0x18, 0x1b, 0x24, 0x4e, 0x98, 0x22, 0xa5, 0xa6,
|
||||
0xc3, 0x1c, 0x9a, 0x13, 0x42, 0x75, 0x48, 0xb1, 0x28, 0xf9, 0x1a, 0x92, 0x56, 0x85, 0xbe, 0x45,
|
||||
0x0d, 0x2d, 0xca, 0xee, 0x80, 0x37, 0x97, 0x4b, 0x26, 0x87, 0x1d, 0x2c, 0xce, 0xe5, 0x83, 0x41,
|
||||
0xdc, 0xae, 0xd4, 0xdd, 0x92, 0x0f, 0x54, 0x86, 0x0c, 0xce, 0x1a, 0x11, 0xdc, 0x80, 0x3a, 0xfa,
|
||||
0xcc, 0x56, 0xdc, 0xfc, 0xbc, 0xc6, 0x5f, 0xdf, 0x92, 0x2f, 0x96, 0x7c, 0xb0, 0xe8, 0xc1, 0xff,
|
||||
0xac, 0xa7, 0xaa, 0x97, 0xe5, 0xd2, 0x9d, 0x66, 0x0a, 0x9f, 0x63, 0xcc, 0x6e, 0x13, 0x31, 0xeb,
|
||||
0x89, 0x3b, 0xb1, 0x49, 0x17, 0x0b, 0x3a, 0xf6, 0x15, 0x6f, 0xdb, 0x65, 0xcc, 0x15, 0x38, 0x07,
|
||||
0x27, 0xa4, 0x49, 0x35, 0xdd, 0x5c, 0x72, 0x7b, 0xce, 0x38, 0x64, 0xf1, 0xba, 0xc1, 0x90, 0x23,
|
||||
0x35, 0xbf, 0xc3, 0xa5, 0x8c, 0xfc, 0x01, 0x85, 0x43, 0xd5, 0x01, 0x9e, 0x6d, 0xec, 0x8d, 0xc6,
|
||||
0x1c, 0x32, 0xd0, 0x34, 0x30, 0x2c, 0x87, 0x5b, 0xfa, 0xae, 0x0c, 0x73, 0x68, 0xdd, 0x2a, 0x42,
|
||||
0xfb, 0x71, 0xd9, 0xed, 0x2a, 0xa4, 0xb8, 0x3e, 0x1a, 0x86, 0x14, 0xd2, 0x79, 0xe8, 0x1a, 0x44,
|
||||
0x35, 0x76, 0xad, 0x7b, 0x39, 0x7c, 0xa3, 0x4c, 0xb6, 0xaf, 0x3a, 0x3e, 0xd2, 0x41, 0xc3, 0x2d,
|
||||
0x3b, 0xaa, 0x91, 0xaf, 0x14, 0x26, 0x46, 0x78, 0x55, 0x55, 0x49, 0x7c, 0x2f, 0x1f, 0xa1, 0x4a,
|
||||
0xd1, 0x5e, 0x75, 0x93, 0xdc, 0xb9, 0xac, 0xd8, 0x75, 0x84, 0x9f, 0x9a, 0x68, 0xd5, 0xe1, 0x8a,
|
||||
0x7c, 0xec, 0xc0, 0x1d, 0xc8, 0xac, 0x93, 0x39, 0xa5, 0x41, 0xe9, 0x61, 0xcb, 0x9e, 0x6a, 0xcc,
|
||||
0xda, 0xbb, 0x94, 0xa0, 0x6e, 0x7f, 0xac, 0x9d, 0x86, 0xa3, 0xdb, 0xcb, 0x71, 0xae, 0xd4, 0xb8,
|
||||
0x20, 0xbe, 0xa5, 0x0b, 0x7f, 0xd3, 0xa6, 0x74, 0x9d, 0x44, 0xb4, 0x63, 0x0b, 0x7d, 0x9b, 0xde,
|
||||
0x45, 0x19, 0x9d, 0x47, 0x8a, 0xd3, 0x4d, 0x3e, 0xdb, 0xed, 0xcd, 0xaf, 0x66, 0xcb, 0xdb, 0x0d,
|
||||
0x9f, 0xbd, 0x3d, 0x13, 0xfd, 0x5d, 0x26, 0x8a, 0xdb, 0x6c, 0x63, 0x2c, 0xd2, 0xf9, 0xed, 0x5a,
|
||||
0x6c, 0x0a, 0xfb, 0x46, 0x14, 0xaf, 0x12, 0x41, 0x8f, 0x7f, 0x7a, 0xf8, 0x61, 0x81, 0x16, 0xfb,
|
||||
0xa9, 0x6e, 0x6e, 0xd0, 0x71, 0x86, 0xd7, 0xf1, 0x42, 0xe8, 0x23, 0x23, 0x67, 0xfd, 0x1d, 0xc1,
|
||||
0x16, 0xb3, 0xaf, 0xce, 0xaa, 0x3d, 0xf7, 0xfe, 0x94, 0xce, 0x96, 0x35, 0x96, 0xa5, 0x7b, 0x2a,
|
||||
0x5e, 0x7f, 0xd1, 0x33, 0x7b, 0x74, 0x54, 0xe8, 0xd5, 0xbb, 0xb7, 0x86, 0xda, 0x23, 0x13, 0x0b,
|
||||
0xdb, 0x78, 0x9b, 0xd0, 0x97, 0x82, 0xc6, 0x7d, 0x14, 0x17, 0x46, 0x64, 0x24, 0x71, 0x51, 0x24,
|
||||
0x82, 0x4f, 0x97, 0x16, 0x2b, 0xb1, 0xa1, 0xf3, 0x6a, 0x74, 0x62, 0xb1, 0x58, 0xc5, 0xb9, 0xb1,
|
||||
0x05, 0x34, 0x9b, 0x20, 0xf4, 0xfa, 0x66, 0x35, 0xe2, 0x6c, 0x36, 0x13, 0x36, 0x6d, 0x5c, 0x7f,
|
||||
0x7b, 0x26, 0xef, 0xb3, 0x1e, 0x9d, 0xca, 0xe9, 0x99, 0x40, 0xab, 0x3c, 0x42, 0xd2, 0xeb, 0xdb,
|
||||
0xbc, 0x86, 0x7e, 0x15, 0xe7, 0x85, 0x9d, 0x89, 0x75, 0x7a, 0x07, 0xbc, 0x6a, 0xe7, 0x4d, 0xfa,
|
||||
0xd4, 0xba, 0x3c, 0xa1, 0xd1, 0x68, 0x1d, 0x2d, 0x16, 0xcd, 0xa6, 0xfd, 0x49, 0x39, 0x50, 0x89,
|
||||
0xc4, 0xf1, 0xc1, 0x0e, 0xba, 0x1f, 0x1f, 0xa9, 0x0b, 0xaf, 0xfe, 0xbe, 0xe4, 0x3f, 0x64, 0x43,
|
||||
0x7b, 0xce, 0xd4, 0x14, 0xac, 0x07, 0x14, 0xb9, 0xc1, 0xd5, 0x09, 0x82, 0x77, 0x23, 0xfa, 0x53,
|
||||
0x29, 0x9f, 0x8d, 0xb8, 0x37, 0xfe, 0xf2, 0xe7, 0xab, 0xb3, 0xbf, 0xaf, 0x8a, 0x62, 0x3b, 0x39,
|
||||
0x3f, 0xff, 0x6a, 0x77, 0x1f, 0x6f, 0x16, 0xe9, 0xbd, 0x9d, 0xa4, 0x73, 0xde, 0x81, 0xb3, 0x57,
|
||||
0x69, 0x5e, 0xd0, 0xa6, 0xee, 0xfe, 0x9c, 0x76, 0xcb, 0xff, 0xde, 0x9f, 0x2e, 0xe9, 0x1b, 0x25,
|
||||
0x88, 0xdf, 0x26, 0x21, 0x9c, 0x9d, 0x89, 0xd9, 0x85, 0xb0, 0xff, 0x91, 0x43, 0x67, 0xfa, 0xfd,
|
||||
0x5a, 0xd9, 0x8e, 0x8e, 0x8c, 0xfd, 0x35, 0x5e, 0xc6, 0x3f, 0xaa, 0x6d, 0x70, 0xf4, 0x30, 0xbb,
|
||||
0x11, 0x63, 0x36, 0x48, 0xac, 0xf6, 0x75, 0xa2, 0xe4, 0x47, 0x99, 0x04, 0x83, 0xd4, 0xb1, 0xc8,
|
||||
0x1e, 0x88, 0x30, 0x59, 0x68, 0xf5, 0x9e, 0x83, 0xcf, 0x7c, 0x7a, 0xd1, 0x96, 0x5f, 0x64, 0xff,
|
||||
0x98, 0x2e, 0x84, 0x1d, 0x2f, 0x00, 0x57, 0x9e, 0x44, 0x98, 0x7d, 0xe1, 0xec, 0x41, 0x01, 0x30,
|
||||
0x2d, 0x88, 0x21, 0x65, 0xeb, 0x56, 0x13, 0x82, 0x48, 0xc7, 0xae, 0xfa, 0xf6, 0x5d, 0x94, 0xdc,
|
||||
0x8a, 0x19, 0x29, 0x93, 0x3d, 0x17, 0x49, 0x92, 0xff, 0xe2, 0x7e, 0xb0, 0x63, 0xcc, 0x64, 0xb2,
|
||||
0xd7, 0x3f, 0xbf, 0xb9, 0x32, 0x55, 0x3b, 0xde, 0xde, 0x46, 0xe3, 0xb2, 0xe2, 0x54, 0x87, 0x4a,
|
||||
0xf1, 0x6d, 0xfe, 0xb0, 0xf4, 0xac, 0x46, 0x5b, 0x07, 0x77, 0x76, 0x72, 0xcd, 0xb3, 0x98, 0x95,
|
||||
0x16, 0xf7, 0xdf, 0xb7, 0x22, 0x7b, 0x78, 0xc7, 0x04, 0xa7, 0xd9, 0x59, 0xef, 0xcb, 0xf2, 0x28,
|
||||
0x1e, 0xc4, 0x57, 0xd4, 0x70, 0xe8, 0xf5, 0x4c, 0x41, 0xe7, 0xa0, 0x5f, 0x45, 0x20, 0x17, 0xdc,
|
||||
0x37, 0xf3, 0x3e, 0x04, 0x40, 0x02, 0x8e, 0x2a, 0x60, 0xf3, 0x4c, 0x44, 0x85, 0x50, 0x16, 0x7c,
|
||||
0xd6, 0x2b, 0x20, 0x03, 0x73, 0xa3, 0xce, 0xa7, 0xf6, 0x9e, 0xe7, 0xd3, 0xc8, 0xa6, 0x43, 0xbb,
|
||||
0x66, 0x44, 0xe2, 0x78, 0x85, 0x98, 0x52, 0x5c, 0xf1, 0xc1, 0x0f, 0x81, 0x81, 0x79, 0x53, 0xa9,
|
||||
0x67, 0x56, 0xf2, 0xe8, 0xa3, 0x59, 0x35, 0xfc, 0xdf, 0x5f, 0x14, 0x8b, 0x8b, 0xfa, 0x61, 0x9f,
|
||||
0x1e, 0x7d, 0x33, 0x92, 0xaa, 0x5f, 0xec, 0x51, 0x12, 0x53, 0x47, 0xdc, 0xa4, 0xf4, 0xbe, 0xda,
|
||||
0x6d, 0xf6, 0xb4, 0x25, 0x8c, 0x7e, 0x7f, 0xaf, 0x83, 0x7a, 0xce, 0xb0, 0xca, 0xc3, 0x70, 0xaa,
|
||||
0xdd, 0x57, 0x3b, 0x61, 0xd3, 0xeb, 0xbe, 0xab, 0xc3, 0x33, 0xea, 0xa0, 0xf6, 0xc0, 0xca, 0xd3,
|
||||
0xe9, 0xbd, 0x8b, 0x67, 0xd0, 0x0f, 0xfa, 0x9c, 0x6e, 0x73, 0x53, 0xac, 0x9e, 0x23, 0x36, 0xfe,
|
||||
0x69, 0xcd, 0x9d, 0x89, 0x51, 0xb9, 0x80, 0x05, 0xc5, 0xc5, 0xc3, 0xb7, 0x0d, 0x38, 0x3d, 0x22,
|
||||
0x02, 0x7c, 0x90, 0x8b, 0xc5, 0xcf, 0x7b, 0xb2, 0xf9, 0xe4, 0x48, 0x1b, 0xb9, 0xe0, 0xa7, 0x5b,
|
||||
0x99, 0xd0, 0xe1, 0x2d, 0x5c, 0xdb, 0xe2, 0x72, 0x15, 0x27, 0x8b, 0xb3, 0x88, 0xd4, 0x98, 0x14,
|
||||
0xa0, 0x3a, 0x95, 0x79, 0xc2, 0x10, 0x1b, 0x46, 0xfc, 0x96, 0x36, 0xe4, 0x45, 0x21, 0xb2, 0xfc,
|
||||
0xf7, 0x33, 0x63, 0xb9, 0xc1, 0xce, 0x26, 0xfb, 0x74, 0x6b, 0xfe, 0x89, 0x3f, 0x47, 0xb1, 0x3f,
|
||||
0x8a, 0x07, 0x52, 0xd5, 0x4a, 0xd9, 0xca, 0x80, 0x01, 0x2b, 0x2b, 0x6c, 0x76, 0xdc, 0xf9, 0x5f,
|
||||
0xe3, 0x62, 0x75, 0x26, 0x0f, 0xa9, 0x4b, 0x73, 0xf9, 0xe6, 0x9b, 0x33, 0xd0, 0x52, 0x1e, 0x08,
|
||||
0x6f, 0xd8, 0x8f, 0xf8, 0xa5, 0xf8, 0x60, 0x2e, 0x04, 0x1d, 0xdf, 0x32, 0xe8, 0xb9, 0x6f, 0x76,
|
||||
0x80, 0x01, 0xc7, 0x35, 0x14, 0x7d, 0x7e, 0xfd, 0x11, 0x20, 0x4f, 0xf1, 0x34, 0x26, 0x99, 0x52,
|
||||
0x8d, 0xe3, 0x3a, 0x12, 0xc2, 0x51, 0xa9, 0xc7, 0x5f, 0xaa, 0xa3, 0xf6, 0x96, 0xfc, 0x7a, 0xa8,
|
||||
0xf7, 0x01, 0x68, 0xe8, 0xdd, 0xce, 0x9e, 0xf4, 0xed, 0x5d, 0x18, 0x3d, 0x7b, 0x11, 0xaf, 0xf5,
|
||||
0xb9, 0x3c, 0x3e, 0x04, 0x9f, 0x67, 0xf3, 0x59, 0xef, 0xd9, 0xf3, 0x13, 0x80, 0x9f, 0x3f, 0xe3,
|
||||
0x1c, 0xb0, 0x09, 0x31, 0x17, 0xc5, 0xcb, 0xa2, 0xc8, 0xe2, 0xeb, 0xdb, 0x02, 0x32, 0xe7, 0xad,
|
||||
0x71, 0x84, 0xca, 0x9e, 0x22, 0x50, 0x7f, 0x06, 0x70, 0xd0, 0x0e, 0x56, 0x88, 0x66, 0xf2, 0xd7,
|
||||
0x05, 0x28, 0x50, 0xd4, 0xdd, 0xaa, 0x74, 0x04, 0x3f, 0xf2, 0xb2, 0x34, 0x7c, 0x45, 0x21, 0x43,
|
||||
0x75, 0x7e, 0xd4, 0x53, 0x2c, 0xe2, 0x3b, 0xe8, 0x59, 0xde, 0x1a, 0x02, 0x3e, 0xd3, 0xec, 0x49,
|
||||
0x6a, 0xf8, 0x38, 0xf3, 0x73, 0x70, 0x2d, 0x6f, 0xb3, 0x7a, 0x5e, 0x6c, 0x64, 0x2b, 0x6e, 0x62,
|
||||
0xd6, 0x75, 0xf6, 0xb8, 0x67, 0x5a, 0x79, 0x68, 0x12, 0x1d, 0x48, 0x4d, 0x9f, 0x8a, 0xee, 0x35,
|
||||
0x9d, 0x4f, 0x81, 0x51, 0x9b, 0xc6, 0xc7, 0xe0, 0x37, 0x47, 0xc1, 0xd3, 0x31, 0x3e, 0x0c, 0xb0,
|
||||
0x69, 0x0f, 0x20, 0xcb, 0x5b, 0xd0, 0x36, 0xcc, 0x68, 0xfd, 0x69, 0x07, 0xf8, 0x5c, 0xaf, 0xcc,
|
||||
0xe5, 0x50, 0xf1, 0xd1, 0xa1, 0x22, 0x8c, 0xa3, 0xb2, 0xa8, 0xb8, 0x8b, 0x7d, 0xf4, 0x11, 0x01,
|
||||
0x98, 0xc3, 0xbc, 0x6b, 0x37, 0xd0, 0x5f, 0x10, 0x1c, 0x72, 0x39, 0x6e, 0x63, 0x2e, 0x8f, 0xdd,
|
||||
0xf7, 0xa8, 0xa6, 0xce, 0x97, 0xf8, 0x84, 0x27, 0xe7, 0xd3, 0x77, 0x6f, 0x91, 0x33, 0x31, 0x7d,
|
||||
0xe5, 0x27, 0x0f, 0x4d, 0xfa, 0xe0, 0xe6, 0x37, 0xcd, 0x88, 0x55, 0x33, 0x16, 0x21, 0xd5, 0x06,
|
||||
0xec, 0x9f, 0x36, 0x7d, 0xc3, 0x2f, 0xce, 0x87, 0x86, 0x01, 0xf3, 0x19, 0x23, 0xc9, 0xbd, 0x7f,
|
||||
0xfe, 0x13, 0xbe, 0x64, 0x57, 0x95, 0xb8, 0xbd, 0x49, 0xef, 0x27, 0x69, 0x10, 0x3d, 0xd3, 0xb6,
|
||||
0x6d, 0xb1, 0x37, 0x6b, 0x36, 0xa8, 0xc0, 0x02, 0xff, 0x2c, 0x16, 0x4d, 0xaf, 0x73, 0xf6, 0x8b,
|
||||
0x30, 0xa3, 0x0f, 0xe6, 0x86, 0xc2, 0x5c, 0xbc, 0x3c, 0x13, 0x8d, 0x01, 0x6b, 0x7e, 0xa6, 0x7f,
|
||||
0xd4, 0xed, 0x44, 0x53, 0x91, 0x20, 0xb3, 0x44, 0xe7, 0x2f, 0xc4, 0xa1, 0xbf, 0x91, 0x46, 0xd5,
|
||||
0x3f, 0x00, 0x5d, 0xa3, 0xa5, 0x9f, 0xcf, 0x1a, 0x86, 0x84, 0xc8, 0xd9, 0x67, 0x98, 0x87, 0x08,
|
||||
0x65, 0xd1, 0xbd, 0x35, 0xa7, 0x7c, 0x4e, 0xb2, 0xec, 0xb8, 0xbe, 0xf0, 0x27, 0x10, 0x75, 0x9d,
|
||||
0xa9, 0xe1, 0x6b, 0x83, 0x0b, 0xeb, 0xb3, 0xbe, 0x79, 0x97, 0xc6, 0x8b, 0x2a, 0x27, 0xa7, 0x33,
|
||||
0x2c, 0x2d, 0x99, 0xed, 0x3b, 0xc7, 0xff, 0x47, 0x74, 0x17, 0xc9, 0xb3, 0x1a, 0x1a, 0x8d, 0xf4,
|
||||
0x38, 0x1a, 0xaa, 0x9d, 0xc6, 0x23, 0xfd, 0x17, 0xf0, 0x48, 0x8f, 0xe0, 0x41, 0xbf, 0xf1, 0x03,
|
||||
0x0c, 0xe8, 0x56, 0xc1, 0x3a, 0x2b, 0x4e, 0x3b, 0x9f, 0xb6, 0x7b, 0x63, 0xe3, 0xc9, 0xd2, 0xfb,
|
||||
0xde, 0xf3, 0x8d, 0x0c, 0x17, 0x60, 0x9b, 0x2d, 0x0f, 0x9d, 0xf4, 0xe8, 0x83, 0x2e, 0x0a, 0xc8,
|
||||
0x15, 0xca, 0x34, 0x56, 0xcb, 0xac, 0x0b, 0x25, 0x2a, 0x04, 0x0c, 0x78, 0x8a, 0xc8, 0x3c, 0x2e,
|
||||
0x12, 0x3e, 0x0b, 0x08, 0x56, 0x80, 0x98, 0x13, 0x58, 0x72, 0xee, 0xd3, 0x8d, 0xa7, 0x60, 0x0c,
|
||||
0xbb, 0xbc, 0x33, 0xcf, 0x44, 0x30, 0x5b, 0xb9, 0x4e, 0x53, 0x4c, 0x73, 0x36, 0x98, 0xac, 0x50,
|
||||
0x45, 0xba, 0x34, 0x36, 0x1c, 0x4a, 0xbb, 0xba, 0xe8, 0xe3, 0xb7, 0x3d, 0x02, 0xda, 0xf2, 0x02,
|
||||
0xfa, 0x28, 0xae, 0xf4, 0xb7, 0x0a, 0x23, 0x6a, 0xa6, 0x92, 0xdd, 0xcd, 0xa1, 0xe3, 0xa8, 0x1d,
|
||||
0xf6, 0x27, 0x7c, 0xe4, 0x21, 0xc9, 0xfe, 0x94, 0xb8, 0x72, 0xdc, 0x3d, 0xcb, 0x70, 0x70, 0xe0,
|
||||
0x9f, 0x1b, 0xe7, 0x7a, 0x15, 0x90, 0x13, 0x2a, 0xb6, 0x05, 0xc1, 0x98, 0x0f, 0x1e, 0x81, 0xa2,
|
||||
0xb8, 0x6e, 0xa6, 0x36, 0x31, 0xe9, 0x52, 0xfd, 0x4c, 0xa4, 0x20, 0x97, 0xd6, 0x90, 0x62, 0xab,
|
||||
0x20, 0x6a, 0x17, 0xa4, 0x6d, 0x7f, 0x4e, 0x99, 0xeb, 0x62, 0xf1, 0x03, 0xd1, 0x5d, 0x3a, 0xc5,
|
||||
0xa2, 0xbf, 0xd7, 0x76, 0x5b, 0xa8, 0x59, 0xc0, 0xe6, 0x90, 0xbd, 0x75, 0xa6, 0xb6, 0x7d, 0x35,
|
||||
0xa3, 0x6b, 0xc1, 0x3b, 0xb1, 0xb8, 0x4f, 0xb2, 0x99, 0xaa, 0x9b, 0x34, 0xe9, 0x28, 0x5d, 0x89,
|
||||
0xff, 0x9b, 0x6f, 0x8e, 0x88, 0x5f, 0xc7, 0x73, 0x88, 0x98, 0x7d, 0x63, 0x5d, 0x65, 0x80, 0xfd,
|
||||
0x46, 0x62, 0x9f, 0xf7, 0x4f, 0x68, 0xaa, 0x4a, 0xc6, 0x8f, 0xa9, 0xaa, 0x06, 0x51, 0xb9, 0x5a,
|
||||
0xa1, 0x66, 0x12, 0xc7, 0xf3, 0x03, 0xe9, 0xb2, 0x39, 0x45, 0x68, 0x52, 0x96, 0x2b, 0x6e, 0x8a,
|
||||
0x56, 0x7e, 0x9c, 0x73, 0xf2, 0x55, 0xf2, 0xda, 0x96, 0x38, 0x89, 0xc5, 0x11, 0x23, 0xa5, 0xd1,
|
||||
0x17, 0xb3, 0x37, 0x51, 0xb1, 0xb2, 0xf9, 0x33, 0x5a, 0x4d, 0xe7, 0xbf, 0x9f, 0xb9, 0xe7, 0xe8,
|
||||
0x5c, 0x88, 0x6d, 0xbf, 0x7f, 0x5e, 0x3d, 0x4f, 0x1f, 0x63, 0x5e, 0xbb, 0x9e, 0x7a, 0xf5, 0x4c,
|
||||
0xd5, 0xfb, 0xa0, 0x76, 0x1d, 0x6f, 0xa8, 0x12, 0xb7, 0x8e, 0xba, 0xe8, 0x13, 0xd7, 0x45, 0x9f,
|
||||
0x2a, 0x72, 0x7e, 0xe4, 0x61, 0xce, 0x30, 0xcb, 0x2c, 0xd2, 0xef, 0xe3, 0x4f, 0x62, 0x71, 0xe6,
|
||||
0xf7, 0xf7, 0x1d, 0x3a, 0xc7, 0xa9, 0x43, 0xf6, 0x88, 0x95, 0x65, 0x07, 0xf6, 0x51, 0x7e, 0xdd,
|
||||
0x03, 0x42, 0xb2, 0xb6, 0x6a, 0x67, 0x6d, 0xf3, 0x68, 0x32, 0x34, 0xeb, 0xef, 0xf7, 0x02, 0xf1,
|
||||
0x74, 0xa1, 0xfc, 0xb1, 0xce, 0x3c, 0xfb, 0xa4, 0x70, 0xdd, 0x49, 0x72, 0x23, 0x71, 0x3c, 0xa0,
|
||||
0x02, 0x39, 0x80, 0x66, 0xeb, 0x17, 0xe5, 0x4a, 0x8b, 0xf4, 0x6b, 0xb5, 0xf7, 0xd2, 0x69, 0xd5,
|
||||
0xca, 0xd4, 0x3c, 0x90, 0x16, 0x75, 0xcb, 0xd2, 0x7f, 0xfe, 0x53, 0x74, 0x65, 0x2c, 0xab, 0x68,
|
||||
0x73, 0x03, 0xf9, 0xb1, 0x22, 0xea, 0xec, 0xb9, 0x36, 0x9b, 0xff, 0x50, 0xaa, 0xcf, 0xac, 0x2c,
|
||||
0x65, 0x49, 0x00, 0xf5, 0xc9, 0x49, 0x80, 0x67, 0xfd, 0x06, 0x44, 0x80, 0x02, 0x04, 0xe5, 0x2d,
|
||||
0xff, 0xb5, 0xce, 0xbf, 0x62, 0x5c, 0x0e, 0x8e, 0x37, 0x87, 0x7a, 0xa8, 0x82, 0x73, 0x31, 0xdb,
|
||||
0xed, 0xa7, 0x5a, 0xa5, 0x6a, 0xaa, 0x2f, 0x2a, 0xd5, 0x17, 0x35, 0xd5, 0x17, 0x95, 0xf2, 0xe2,
|
||||
0x3e, 0xeb, 0x86, 0x8c, 0x5a, 0x68, 0xf1, 0x41, 0x25, 0x29, 0x38, 0xd7, 0x45, 0x9f, 0x0e, 0xeb,
|
||||
0x22, 0x0a, 0x35, 0x4d, 0x32, 0x0b, 0xf6, 0x96, 0x46, 0xb3, 0x70, 0x4b, 0xbf, 0x02, 0xfc, 0x03,
|
||||
0x14, 0x57, 0x21, 0xd8, 0x5a, 0xc8, 0x89, 0xee, 0x44, 0x63, 0x66, 0x5b, 0x4d, 0x5a, 0xff, 0x94,
|
||||
0xa4, 0xd7, 0x67, 0xbf, 0xfc, 0x9f, 0x77, 0x3f, 0xfd, 0x48, 0xd3, 0x75, 0x24, 0xf8, 0xf1, 0xf2,
|
||||
0x41, 0x4f, 0xc4, 0xcc, 0xcd, 0x6d, 0x92, 0x98, 0x5e, 0xff, 0x83, 0xb9, 0x23, 0xfd, 0x98, 0xf4,
|
||||
0xa0, 0xcc, 0xc8, 0x5f, 0x79, 0x3e, 0x7b, 0x4e, 0x73, 0xd4, 0xde, 0x1e, 0x88, 0x33, 0x98, 0xef,
|
||||
0x91, 0xbc, 0x7f, 0x87, 0x8c, 0x79, 0xaa, 0x3d, 0x8d, 0x4c, 0xa0, 0xe1, 0xd3, 0xcc, 0x5e, 0x7d,
|
||||
0xc2, 0x0b, 0x6a, 0xe4, 0x84, 0xb7, 0xc7, 0xdf, 0xc9, 0xf6, 0xcc, 0x1d, 0x70, 0x5a, 0xa5, 0x8b,
|
||||
0x49, 0xef, 0xed, 0x4f, 0xef, 0x7e, 0xee, 0x99, 0x94, 0xc7, 0x4c, 0x8a, 0x7d, 0x63, 0x36, 0x4c,
|
||||
0xfa, 0xdc, 0x9a, 0x0d, 0x1f, 0xae, 0x63, 0xf2, 0xd1, 0xf5, 0x54, 0xe7, 0xb2, 0xbd, 0x77, 0xa2,
|
||||
0x28, 0x40, 0x4c, 0xce, 0xa4, 0x2f, 0x8c, 0xfc, 0x76, 0x3e, 0x47, 0xcb, 0x25, 0xe8, 0x79, 0x30,
|
||||
0xc0, 0x90, 0x25, 0x8c, 0x6d, 0x65, 0xac, 0x31, 0x93, 0xcf, 0x1e, 0xbe, 0xa0, 0x55, 0x4b, 0xb9,
|
||||
0x72, 0x49, 0x6e, 0x51, 0xa3, 0x47, 0x1d, 0x7b, 0x8f, 0xe1, 0x81, 0x0e, 0xb6, 0x5c, 0xe4, 0xd2,
|
||||
0xaf, 0x15, 0xd3, 0x17, 0xa9, 0xda, 0x88, 0xa7, 0xd9, 0x79, 0x9d, 0xe5, 0x25, 0xaf, 0x44, 0xc9,
|
||||
0x2b, 0x5e, 0x02, 0x33, 0x5b, 0x6b, 0x61, 0x7d, 0xb3, 0x6a, 0xd0, 0x58, 0xcc, 0xac, 0xad, 0x6b,
|
||||
0x1d, 0x36, 0x2c, 0x3f, 0x18, 0x92, 0x4d, 0xab, 0xd7, 0x72, 0xd9, 0x4d, 0xba, 0x3e, 0x68, 0x78,
|
||||
0x07, 0xeb, 0x85, 0x99, 0x09, 0xf9, 0x03, 0x10, 0x13, 0x4c, 0xc8, 0x92, 0x04, 0x39, 0xde, 0x7e,
|
||||
0xfa, 0x94, 0x75, 0x90, 0x92, 0x6f, 0xea, 0x73, 0x17, 0xa4, 0x80, 0x9a, 0x51, 0x1d, 0x6b, 0xda,
|
||||
0xb4, 0x4a, 0x72, 0x99, 0x2e, 0x10, 0x9a, 0x28, 0x41, 0x2d, 0x6e, 0x73, 0x53, 0xb3, 0x77, 0xdf,
|
||||
0xef, 0xea, 0xe6, 0x39, 0xce, 0x6c, 0x36, 0xd3, 0xbd, 0xbe, 0x3d, 0x14, 0xbf, 0x62, 0xb5, 0xa0,
|
||||
0xc4, 0x94, 0x3e, 0x70, 0xff, 0xf9, 0x87, 0xff, 0x30, 0xee, 0xe3, 0x24, 0xd1, 0x8b, 0xd9, 0xc6,
|
||||
0x26, 0xbd, 0xe7, 0x6f, 0x61, 0x8d, 0xff, 0xa4, 0x8f, 0xdd, 0x48, 0x0c, 0x3f, 0xbc, 0x35, 0xe2,
|
||||
0xdc, 0xa0, 0x19, 0xdd, 0xe4, 0x10, 0xde, 0xab, 0x2c, 0x4b, 0xb3, 0x72, 0x51, 0x9c, 0x5e, 0x48,
|
||||
0x6d, 0xe6, 0xa5, 0x40, 0x27, 0x00, 0x76, 0x81, 0xbe, 0xb4, 0x02, 0x75, 0x7d, 0x51, 0x69, 0xd0,
|
||||
0xaf, 0x5d, 0x61, 0x2d, 0xe7, 0x81, 0x44, 0x25, 0x7c, 0xd2, 0x57, 0x94, 0x82, 0xf1, 0x37, 0xf2,
|
||||
0x9d, 0xbc, 0xae, 0x7e, 0x35, 0x02, 0x43, 0x75, 0x2f, 0x53, 0xbe, 0x4c, 0x12, 0x9e, 0xf8, 0x36,
|
||||
0x33, 0x08, 0xd1, 0x01, 0x4c, 0x7d, 0x2b, 0xcf, 0x5a, 0x5f, 0xba, 0xee, 0xf6, 0xd4, 0x56, 0xb5,
|
||||
0x39, 0x35, 0x98, 0xad, 0xd7, 0x17, 0x4e, 0x8c, 0xd9, 0x5a, 0xf8, 0xa9, 0xad, 0x07, 0xdf, 0x74,
|
||||
0xcf, 0xba, 0xfb, 0x27, 0x54, 0xad, 0xa7, 0x3f, 0xfe, 0x47, 0xec, 0xaa, 0xaf, 0x2b, 0x2b, 0xcf,
|
||||
0xdd, 0x0a, 0xe9, 0xdf, 0xa9, 0xd7, 0xef, 0xb3, 0xe8, 0x86, 0x63, 0x7b, 0x7f, 0xda, 0x4c, 0x87,
|
||||
0xc0, 0x73, 0xf5, 0x61, 0x53, 0xef, 0xa9, 0xa8, 0xb5, 0xc2, 0x7c, 0x1d, 0xc2, 0xf1, 0x75, 0x46,
|
||||
0x76, 0xdb, 0x47, 0x9a, 0xd6, 0xf9, 0xd3, 0xd8, 0xd4, 0xa1, 0xe3, 0xb7, 0x72, 0x29, 0xb2, 0x4b,
|
||||
0x2f, 0xb8, 0x5b, 0x5d, 0x29, 0xf6, 0xc4, 0x02, 0xfe, 0xfa, 0xe0, 0x32, 0x4a, 0x12, 0xfa, 0xe9,
|
||||
0x93, 0x6a, 0x4b, 0xa9, 0xbf, 0xab, 0x6d, 0x18, 0x1d, 0xa8, 0x3c, 0x92, 0x44, 0x33, 0xe7, 0x81,
|
||||
0x1a, 0xdf, 0x81, 0x34, 0x97, 0xf9, 0xcc, 0x5a, 0x35, 0xf9, 0x8b, 0xe6, 0x4a, 0x3c, 0xd7, 0xd6,
|
||||
0xbf, 0xd7, 0x41, 0x35, 0x8d, 0x33, 0xfb, 0xc2, 0x69, 0xad, 0xe2, 0xc8, 0x19, 0xa3, 0xfc, 0x71,
|
||||
0x37, 0xda, 0x10, 0xbb, 0xcd, 0xce, 0xfc, 0xed, 0xa7, 0x7e, 0x4f, 0xce, 0x6a, 0x1d, 0xa4, 0x24,
|
||||
0xf9, 0xb7, 0x67, 0x4d, 0x32, 0x72, 0x02, 0xa1, 0x3f, 0xee, 0x38, 0xc1, 0xe6, 0xfe, 0xe4, 0x58,
|
||||
0xbb, 0x4e, 0x1e, 0x1f, 0x7e, 0xa9, 0x21, 0x24, 0x13, 0x3a, 0xe9, 0x70, 0x4f, 0xd2, 0x51, 0x43,
|
||||
0xbf, 0x81, 0xfb, 0x37, 0xdf, 0x88, 0x6f, 0xbe, 0x69, 0x94, 0xd4, 0x77, 0x22, 0x94, 0x87, 0x7a,
|
||||
0xf5, 0xee, 0x6d, 0x23, 0x4a, 0x3c, 0x75, 0x35, 0x59, 0x75, 0x3f, 0xb2, 0x92, 0xdc, 0x11, 0xb3,
|
||||
0x3a, 0x3e, 0x78, 0x32, 0xff, 0xbf, 0xec, 0x0b, 0x36, 0x3c, 0x9f, 0xfc, 0xb5, 0x13, 0x5a, 0xc5,
|
||||
0xad, 0x6f, 0x55, 0xd6, 0x57, 0x54, 0xe9, 0x96, 0xff, 0xe2, 0x7c, 0xd0, 0x19, 0x06, 0x5e, 0xff,
|
||||
0xcc, 0xbf, 0xf3, 0x00, 0xf3, 0x4d, 0x37, 0xd4, 0x7b, 0x16, 0xe5, 0x0f, 0x9b, 0x39, 0xa7, 0x73,
|
||||
0x7a, 0xeb, 0xe6, 0x48, 0x2e, 0x12, 0xaf, 0x49, 0x8a, 0x98, 0x60, 0x4d, 0x69, 0x17, 0x2b, 0x62,
|
||||
0xbc, 0x9f, 0x94, 0x87, 0x4c, 0xcb, 0xdd, 0x59, 0xdb, 0xb6, 0x75, 0x5a, 0x74, 0xb8, 0x76, 0x8c,
|
||||
0x84, 0x93, 0xa5, 0x61, 0xb6, 0x33, 0x2d, 0xb5, 0x05, 0xa6, 0x36, 0x97, 0x52, 0x28, 0x8b, 0xa0,
|
||||
0x60, 0x42, 0x9b, 0xb7, 0x7b, 0x93, 0x54, 0x37, 0x5a, 0xbc, 0xcc, 0x09, 0x59, 0x12, 0x37, 0x0a,
|
||||
0xd5, 0xe2, 0x33, 0xfd, 0xa6, 0x46, 0xc3, 0xb6, 0xd4, 0x41, 0x7c, 0xbd, 0x38, 0x2d, 0x1e, 0x44,
|
||||
0xbb, 0xfa, 0xd5, 0x83, 0xd0, 0xb5, 0xf2, 0xd3, 0xf3, 0x76, 0x03, 0x3e, 0xe8, 0xa1, 0x9b, 0xd0,
|
||||
0x56, 0x62, 0xbb, 0x01, 0x1d, 0x75, 0xd5, 0xf5, 0x3a, 0x8a, 0xb7, 0x9a, 0xa8, 0x30, 0x5b, 0x42,
|
||||
0x91, 0x39, 0x52, 0x13, 0x0a, 0xca, 0x74, 0xbd, 0xd2, 0x98, 0x76, 0x13, 0xa5, 0x5b, 0xd4, 0xaa,
|
||||
0xf6, 0x21, 0xd5, 0xc1, 0x58, 0xa5, 0x9e, 0x1e, 0x5d, 0xe4, 0x57, 0xfb, 0x00, 0x4f, 0x5a, 0xb2,
|
||||
0x3f, 0xfd, 0x3b, 0x3b, 0x6a, 0xeb, 0x57, 0xfe, 0x5e, 0x0a, 0x2d, 0xc3, 0x1e, 0x5d, 0xb9, 0x55,
|
||||
0x3e, 0x99, 0xdb, 0x97, 0x5f, 0x41, 0x9f, 0xea, 0x51, 0xdb, 0x1a, 0xe6, 0x4e, 0xf5, 0x2f, 0x8b,
|
||||
0x4f, 0xf5, 0xab, 0xe7, 0x8f, 0x72, 0xb4, 0xea, 0x8b, 0xd1, 0x93, 0x18, 0x36, 0x54, 0xb0, 0x5f,
|
||||
0xee, 0x7e, 0x37, 0x7e, 0x01, 0xe2, 0x31, 0x12, 0xeb, 0x67, 0x09, 0x24, 0x08, 0xf1, 0x38, 0xc6,
|
||||
0xad, 0x55, 0x6d, 0xfe, 0x89, 0x9b, 0x5f, 0xd1, 0xbe, 0xd2, 0x96, 0xa3, 0x3d, 0x2a, 0x5f, 0xd9,
|
||||
0x37, 0x95, 0x4b, 0x3c, 0x6c, 0x4b, 0xe2, 0x65, 0xb6, 0xb7, 0xb8, 0xd0, 0x62, 0xfc, 0x22, 0xce,
|
||||
0x69, 0x67, 0x70, 0xa1, 0xa2, 0xd3, 0x49, 0xce, 0xc8, 0x85, 0x27, 0x39, 0x07, 0xa6, 0x4c, 0xb4,
|
||||
0x23, 0x09, 0xb7, 0x13, 0xde, 0xeb, 0xfc, 0xf6, 0xe4, 0x40, 0x93, 0x53, 0xb5, 0x2e, 0x1c, 0xe4,
|
||||
0xf4, 0xc5, 0xb9, 0xfa, 0xa2, 0xaf, 0xf9, 0x7d, 0x5f, 0xf5, 0x35, 0x60, 0x99, 0xdd, 0x1c, 0x60,
|
||||
0xf9, 0xec, 0xbb, 0x9f, 0xde, 0xa8, 0xc5, 0x1f, 0xfa, 0xae, 0x56, 0x2c, 0x9e, 0x99, 0xc6, 0x59,
|
||||
0xdf, 0x98, 0x5d, 0x18, 0xbb, 0xe6, 0x07, 0x86, 0xd2, 0x59, 0xaa, 0x5f, 0x77, 0x52, 0x2b, 0x1e,
|
||||
0xc6, 0xec, 0xe8, 0x41, 0x93, 0x67, 0xaa, 0xe5, 0xb3, 0xfe, 0xb4, 0x09, 0x47, 0x7a, 0xd0, 0x67,
|
||||
0xe7, 0x65, 0xfd, 0xe1, 0xe7, 0x92, 0x32, 0xee, 0xa8, 0x0c, 0x45, 0x10, 0x2e, 0xfa, 0x59, 0x87,
|
||||
0xa6, 0x63, 0x7d, 0xf4, 0x8f, 0x4f, 0x1d, 0xa2, 0xaf, 0xff, 0x6b, 0x12, 0x50, 0x5f, 0xfb, 0x02,
|
||||
0x31, 0xaa, 0x72, 0x7a, 0xd8, 0x75, 0xdf, 0x35, 0xa4, 0x72, 0xd3, 0x9c, 0xe8, 0x1f, 0x1f, 0xb1,
|
||||
0xe9, 0xc3, 0x9f, 0x7d, 0x2f, 0x56, 0x89, 0xc8, 0x8c, 0x6b, 0x11, 0xaf, 0x8d, 0x97, 0xd7, 0xd9,
|
||||
0xed, 0x12, 0xb1, 0x8f, 0xbe, 0x72, 0x7e, 0x2f, 0xc7, 0x9e, 0x80, 0xff, 0xdc, 0xb2, 0xcd, 0x37,
|
||||
0x89, 0x45, 0xad, 0xb0, 0x7c, 0xa9, 0x49, 0x1f, 0xf3, 0x0a, 0xf9, 0x5b, 0x3f, 0xfc, 0x23, 0x68,
|
||||
0xf4, 0x3f, 0x00, 0xfa, 0x7f, 0xc0, 0xae, 0x3b, 0xd0, 0x18, 0x68, 0x00, 0x00
|
||||
};
|
||||
Reference in New Issue
Block a user