和风天气( HeFeng)
程序(HeFeng.cpp)
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClientSecureBearSSL.h>
#include "HeFeng.h"
HeFeng::HeFeng() {
}
void HeFeng::doUpdateCurr(HeFengCurrentData *data, String key,String location) {
std::unique_ptr<BearSSL::WiFiClientSecure>client(new BearSSL::WiFiClientSecure);
client->setInsecure();
HTTPClient https;
String url="https://free-api.heweather.net/s6/weather/now?lang=en&location="+location+"&key="+key;
Serial.print("[HTTPS] begin...\n");
if (https.begin(*client, url)) { // HTTPS
// start connection and send HTTP header
int httpCode = https.GET();
// httpCode will be negative on error
if (httpCode > 0) {
// HTTP header has been send and Server response header has been handled
Serial.printf("[HTTPS] GET... code: %d\n", httpCode);
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
String payload = https.getString();
Serial.println(payload);
DynamicJsonDocument jsonBuffer(2048);
deserializeJson(jsonBuffer, payload);
JsonObject root = jsonBuffer.as<JsonObject>();
String tmp=root["HeWeather6"][0]["now"]["tmp"];
data->tmp=tmp;
String fl=root["HeWeather6"][0]["now"]["fl"];
data->fl=fl;
String hum=root["HeWeather6"][0]["now"]["hum"];
data->hum=hum;
String wind_sc=root["HeWeather6"][0]["now"]["wind_sc"];
data->wind_sc=wind_sc;
String cond_code=root["HeWeather6"][0]["now"]["cond_code"];
String meteoconIcon=getMeteoconIcon(cond_code);
String cond_txt=root["HeWeather6"][0]["now"]["cond_txt"];
data->cond_txt=cond_txt;
data->iconMeteoCon=meteoconIcon;
}
} else {
Serial.printf("[HTTPS] GET... failed, error: %s\n", https.errorToString(httpCode).c_str());
data->tmp="-1";
data->fl="-1";
data->hum="-1";
data->wind_sc="-1";
data->cond_txt="no network";
data->iconMeteoCon=")";
}
https.end();
} else {
Serial.printf("[HTTPS] Unable to connect\n");
data->tmp="-1";
data->fl="-1";
data->hum="-1";
data->wind_sc="-1";
data->cond_txt="no network";
data->iconMeteoCon=")";
}
}
void HeFeng::doUpdateFore(HeFengForeData *data, String key,String location) {
std::unique_ptr<BearSSL::WiFiClientSecure>client(new BearSSL::WiFiClientSecure);
client->setInsecure();
HTTPClient https;
String url="https://free-api.heweather.net/s6/weather/forecast?lang=en&location="+location+"&key="+key;
Serial.print("[HTTPS] begin...\n");
if (https.begin(*client, url)) { // HTTPS
// start connection and send HTTP header
int httpCode = https.GET();
// httpCode will be negative on error
if (httpCode > 0) {
// HTTP header has been send and Server response header has been handled
Serial.printf("[HTTPS] GET... code: %d\n", httpCode);
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
String payload = https.getString();
Serial.println(payload);
DynamicJsonDocument jsonBuffer(8192);
deserializeJson(jsonBuffer, payload);
JsonObject root = jsonBuffer.as<JsonObject>();
int i;
for (i=0; i<3; i++){
String tmp_min=root["HeWeather6"][0]["daily_forecast"][i]["tmp_min"];
data[i].tmp_min=tmp_min;
String tmp_max=root["HeWeather6"][0]["daily_forecast"][i]["tmp_max"];
data[i].tmp_max=tmp_max;
String datestr=root["HeWeather6"][0]["daily_forecast"][i]["date"];
data[i].datestr=datestr.substring(5,datestr.length());
String cond_code=root["HeWeather6"][0]["daily_forecast"][i]["cond_code_d"];
String meteoconIcon=getMeteoconIcon(cond_code);
data[i].iconMeteoCon=meteoconIcon;
}
}
} else {
Serial.printf("[HTTPS] GET... failed, error: %s\n", https.errorToString(httpCode).c_str());
int i;
for (i=0; i<3; i++){
data[i].tmp_min="-1";
data[i].tmp_max="-1";
data[i].datestr="N/A";
data[i].iconMeteoCon=")";
}
}
https.end();
} else {
Serial.printf("[HTTPS] Unable to connect\n");
int i;
for (i=0; i<3; i++){
data[i].tmp_min="-1";
data[i].tmp_max="-1";
data[i].datestr="N/A";
data[i].iconMeteoCon=")";
}
}
}
String HeFeng::getMeteoconIcon(String cond_code){
if(cond_code=="100"||cond_code=="9006"){return "B";}
if(cond_code=="999"){return ")";}
if(cond_code=="104"){return "D";}
if(cond_code=="500"){return "E";}
if(cond_code=="503"||cond_code=="504"||cond_code=="507"||cond_code=="508"){return "F";}
if(cond_code=="499"||cond_code=="901"){return "G";}
if(cond_code=="103"){return "H";}
if(cond_code=="502"||cond_code=="511"||cond_code=="512"||cond_code=="513"){return "L";}
if(cond_code=="501"||cond_code=="509"||cond_code=="510"||cond_code=="514"||cond_code=="515"){return "M";}
if(cond_code=="102"){return "N";}
if(cond_code=="213"){return "O";}
if(cond_code=="302"||cond_code=="303"){return "P";}
if(cond_code=="305"||cond_code=="308"||cond_code=="309"||cond_code=="314"||cond_code=="399"){return "Q";}
if(cond_code=="306"||cond_code=="307"||cond_code=="310"||cond_code=="311"||cond_code=="312"||cond_code=="315"||cond_code=="316"||cond_code=="317"||cond_code=="318"){return "R";}
if(cond_code=="200"||cond_code=="201"||cond_code=="202"||cond_code=="203"||cond_code=="204"||cond_code=="205"||cond_code=="206"||cond_code=="207"||cond_code=="208"||cond_code=="209"||cond_code=="210"||cond_code=="211"||cond_code=="212"){return "S";}
if(cond_code=="300"||cond_code=="301"){return "T";}
if(cond_code=="400"||cond_code=="408"){return "U";}
if(cond_code=="407"){return "V";}
if(cond_code=="401"||cond_code=="402"||cond_code=="403"||cond_code=="409"||cond_code=="410"){return "W";}
if(cond_code=="304"||cond_code=="313"||cond_code=="404"||cond_code=="405"||cond_code=="406"){return "X";}
if(cond_code=="101"){return "Y";}
return ")";
}
程序(HeFeng.h)
#pragma once
#include <ArduinoJson.h>
typedef struct HeFengCurrentData {
String cond_txt;
String fl;
String tmp;
String hum;
String wind_sc;
String iconMeteoCon;
} HeFengCurrentData;
typedef struct HeFengForeData {
String datestr;
String tmp_min;
String tmp_max;
String iconMeteoCon;
} HeFengForeData;
class HeFeng {
private:
String getMeteoconIcon(String cond_code);
public:
HeFeng();
void doUpdateCurr(HeFengCurrentData *data, String key,String location);
void doUpdateFore(HeFengForeData *data, String key,String location);
};
天气图标
程序(WeatherStationFonts.h)
const uint8_t Meteocons_Plain_36[] PROGMEM = {
0x25, // Width: 37
0x26, // Height: 38
0x20, // First Char: 32
0xE0, // Numbers of Chars: 224
// Jump Table:
0xFF, 0xFF, 0x00, 0x24, // 32:65535
0x00, 0x00, 0xB6, 0x25, // 33:0
0x00, 0xB6, 0xB1, 0x24, // 34:182
0x01, 0x67, 0xB1, 0x24, // 35:359
0x02, 0x18, 0xB1, 0x24, // 36:536
0x02, 0xC9, 0xB3, 0x24, // 37:713
0x03, 0x7C, 0xB2, 0x24, // 38:892
0x04, 0x2E, 0x73, 0x24, // 39:1070
0x04, 0xA1, 0xB2, 0x24, // 40:1185
0x05, 0x53, 0x9F, 0x24, // 41:1363
0x05, 0xF2, 0x80, 0x24, // 42:1522
0x06, 0x72, 0x7F, 0x24, // 43:1650
0xFF, 0xFF, 0x00, 0x24, // 44:65535
0xFF, 0xFF, 0x00, 0x24, // 45:65535
0xFF, 0xFF, 0x00, 0x24, // 46:65535
0xFF, 0xFF, 0x00, 0x24, // 47:65535
0x06, 0xF1, 0xB2, 0x25, // 48:1777
0x07, 0xA3, 0xA3, 0x24, // 49:1955
0x08, 0x46, 0x80, 0x24, // 50:2118
0x08, 0xC6, 0xB3, 0x24, // 51:2246
0x09, 0x79, 0xB3, 0x24, // 52:2425
0x0A, 0x2C, 0xB2, 0x24, // 53:2604
0x0A, 0xDE, 0xB1, 0x24, // 54:2782
0x0B, 0x8F, 0xB2, 0x24, // 55:2959
0x0C, 0x41, 0xB1, 0x25, // 56:3137
0x0C, 0xF2, 0xB2, 0x24, // 57:3314
0xFF, 0xFF, 0x00, 0x24, // 58:65535
0xFF, 0xFF, 0x00, 0x24, // 59:65535
0xFF, 0xFF, 0x00, 0x24, // 60:65535
0xFF, 0xFF, 0x00, 0x24, // 61:65535
0xFF, 0xFF, 0x00, 0x24, // 62:65535
0xFF, 0xFF, 0x00, 0x24, // 63:65535
0xFF, 0xFF, 0x00, 0x24, // 64:65535
0x0D, 0xA4, 0x8E, 0x24, // 65:3492
0x0E, 0x32, 0xA3, 0x24, // 66:3634
0x0E, 0xD5, 0x85, 0x24, // 67:3797
0x0F, 0x5A, 0x99, 0x24, // 68:3930
0x0F, 0xF3, 0xB2, 0x24, // 69:4083
0x10, 0xA5, 0xA8, 0x24, // 70:4261
0x11, 0x4D, 0x90, 0x24, // 71:4429
0x11, 0xDD, 0xB3, 0x24, // 72:4573
0x12, 0x90, 0xB3, 0x24, // 73:4752
0x13, 0x43, 0xA5, 0x24, // 74:4931
0x13, 0xE8, 0xA5, 0x24, // 75:5096
0x14, 0x8D, 0xB4, 0x25, // 76:5261
0x15, 0x41, 0x90, 0x24, // 77:5441
0x15, 0xD1, 0xB2, 0x24, // 78:5585
0x16, 0x83, 0xB1, 0x24, // 79:5763
0x17, 0x34, 0xB1, 0x24, // 80:5940
0x17, 0xE5, 0xB2, 0x24, // 81:6117
0x18, 0x97, 0xB2, 0x25, // 82:6295
0x19, 0x49, 0xB2, 0x24, // 83:6473
0x19, 0xFB, 0xB6, 0x25, // 84:6651
0x1A, 0xB1, 0xB1, 0x24, // 85:6833
0x1B, 0x62, 0xB1, 0x24, // 86:7010
0x1C, 0x13, 0xB2, 0x24, // 87:7187
0x1C, 0xC5, 0xB1, 0x24, // 88:7365
0x1D, 0x76, 0xB3, 0x25, // 89:7542
0x1E, 0x29, 0xB2, 0x25, // 90:7721
0xFF, 0xFF, 0x00, 0x24, // 91:65535
0xFF, 0xFF, 0x00, 0x24, // 92:65535
0xFF, 0xFF, 0x00, 0x24, // 93:65535
0xFF, 0xFF, 0x00, 0x24, // 94:65535
0xFF, 0xFF, 0x00, 0x24, // 95:65535
0xFF, 0xFF, 0x00, 0x24, // 96:65535
0xFF, 0xFF, 0x00, 0x24, // 97:65535
0xFF, 0xFF, 0x00, 0x24, // 98:65535
0xFF, 0xFF, 0x00, 0x24, // 99:65535
0xFF, 0xFF, 0x00, 0x24, // 100:65535
0xFF, 0xFF, 0x00, 0x24, // 101:65535
0xFF, 0xFF, 0x00, 0x24, // 102:65535
0xFF, 0xFF, 0x00, 0x24, // 103:65535
0xFF, 0xFF, 0x00, 0x24, // 104:65535
0xFF, 0xFF, 0x00, 0x24, // 105:65535
0xFF, 0xFF, 0x00, 0x24, // 106:65535
0xFF, 0xFF, 0x00, 0x24, // 107:65535
0xFF, 0xFF, 0x00, 0x24, // 108:65535
0xFF, 0xFF, 0x00, 0x24, // 109:65535
0xFF, 0xFF, 0x00, 0x24, // 110:65535
0xFF, 0xFF, 0x00, 0x24, // 111:65535
0xFF, 0xFF, 0x00, 0x24, // 112:65535
0xFF, 0xFF, 0x00, 0x24, // 113:65535
0xFF, 0xFF, 0x00, 0x24, // 114:65535
0xFF, 0xFF, 0x00, 0x24, // 115:65535
0xFF, 0xFF, 0x00, 0x24, // 116:65535
0xFF, 0xFF, 0x00, 0x24, // 117:65535
0xFF, 0xFF, 0x00, 0x24, // 118:65535
0xFF, 0xFF, 0x00, 0x24, // 119:65535
0xFF, 0xFF, 0x00, 0x24, // 120:65535
0xFF, 0xFF, 0x00, 0x24, // 121:65535
0xFF, 0xFF, 0x00, 0x24, // 122:65535
0xFF, 0xFF, 0x00, 0x24, // 123:65535
0xFF, 0xFF, 0x00, 0x24, // 124:65535
0xFF, 0xFF, 0x00, 0x24, // 125:65535
0xFF, 0xFF, 0x00, 0x24, // 126:65535
0xFF, 0xFF, 0x00, 0x24, // 127:65535
0xFF, 0xFF, 0x00, 0x24, // 128:65535
0xFF, 0xFF, 0x00, 0x24, // 129:65535
0xFF, 0xFF, 0x00, 0x24, // 130:65535
0xFF, 0xFF, 0x00, 0x24, // 131:65535
0xFF, 0xFF, 0x00, 0x24, // 132:65535
0xFF, 0xFF, 0x00, 0x24, // 133:65535
0xFF, 0xFF, 0x00, 0x24, // 134:65535
0xFF, 0xFF, 0x00, 0x24, // 135:65535
0xFF, 0xFF, 0x00, 0x24, // 136:65535
0xFF, 0xFF, 0x00, 0x24, // 137:65535
0xFF, 0xFF, 0x00, 0x24, // 138:65535
0xFF, 0xFF, 0x00, 0x24, // 139:65535
0xFF, 0xFF, 0x00, 0x24, // 140:65535
0xFF, 0xFF, 0x00, 0x24, // 141:65535
0xFF, 0xFF, 0x00, 0x24, // 142:65535
0xFF, 0xFF, 0x00, 0x24, // 143:65535
0xFF, 0xFF, 0x00, 0x24, // 144:65535
0xFF, 0xFF, 0x00, 0x24, // 145:65535
0xFF, 0xFF, 0x00, 0x24, // 146:65535
0xFF, 0xFF, 0x00, 0x24, // 147:65535
0xFF, 0xFF, 0x00, 0x24, // 148:65535
0xFF, 0xFF, 0x00, 0x24, // 149:65535
0xFF, 0xFF, 0x00, 0x24, // 150:65535
0xFF, 0xFF, 0x00, 0x24, // 151:65535
0xFF, 0xFF, 0x00, 0x24, // 152:65535
0xFF, 0xFF, 0x00, 0x24, // 153:65535
0xFF, 0xFF, 0x00, 0x24, // 154:65535
0xFF, 0xFF, 0x00, 0x24, // 155:65535
0xFF, 0xFF, 0x00, 0x24, // 156:65535
0xFF, 0xFF, 0x00, 0x24, // 157:65535
0xFF, 0xFF, 0x00, 0x24, // 158:65535
0xFF, 0xFF, 0x00, 0x24, // 159:65535
0xFF, 0xFF, 0x00, 0x24, // 160:65535
0xFF, 0xFF, 0x00, 0x24, // 161:65535
0xFF, 0xFF, 0x00, 0x24, // 162:65535
0xFF, 0xFF, 0x00, 0x24, // 163:65535
0xFF, 0xFF, 0x00, 0x24, // 164:65535
0xFF, 0xFF, 0x00, 0x24, // 165:65535
0xFF, 0xFF, 0x00, 0x24, // 166:65535
0xFF, 0xFF, 0x00, 0x24, // 167:65535
0xFF, 0xFF, 0x00, 0x24, // 168:65535
0xFF, 0xFF, 0x00, 0x24, // 169:65535
0xFF, 0xFF, 0x00, 0x24, // 170:65535
0xFF, 0xFF, 0x00, 0x24, // 171:65535
0xFF, 0xFF, 0x00, 0x24, // 172:65535
0xFF, 0xFF, 0x00, 0x24, // 173:65535
0xFF, 0xFF, 0x00, 0x24, // 174:65535
0xFF, 0xFF, 0x00, 0x24, // 175:65535
0xFF, 0xFF, 0x00, 0x24, // 176:65535
0xFF, 0xFF, 0x00, 0x24, // 177:65535
0xFF, 0xFF, 0x00, 0x24, // 178:65535
0xFF, 0xFF, 0x00, 0x24, // 179:65535
0xFF, 0xFF, 0x00, 0x24, // 180:65535
0xFF, 0xFF, 0x00, 0x24, // 181:65535
0xFF, 0xFF, 0x00, 0x24, // 182:65535
0xFF, 0xFF, 0x00, 0x24, // 183:65535
0xFF, 0xFF, 0x00, 0x24, // 184:65535
0xFF, 0xFF, 0x00, 0x24, // 185:65535
0xFF, 0xFF, 0x00, 0x24, // 186:65535
0xFF, 0xFF, 0x00, 0x24, // 187:65535
0xFF, 0xFF, 0x00, 0x24, // 188:65535
0xFF, 0xFF, 0x00, 0x24, // 189:65535
0xFF, 0xFF, 0x00, 0x24, // 190:65535
0xFF, 0xFF, 0x00, 0x24, // 191:65535
0xFF, 0xFF, 0x00, 0x24, // 192:65535
0xFF, 0xFF, 0x00, 0x24, // 193:65535
0xFF, 0xFF, 0x00, 0x24, // 194:65535
0xFF, 0xFF, 0x00, 0x24, // 195:65535
0xFF, 0xFF, 0x00, 0x24, // 196:65535
0xFF, 0xFF, 0x00, 0x24, // 197:65535
0xFF, 0xFF, 0x00, 0x24, // 198:65535
0xFF, 0xFF, 0x00, 0x24, // 199:65535
0xFF, 0xFF, 0x00, 0x24, // 200:65535
0xFF, 0xFF, 0x00, 0x24, // 201:65535
0xFF, 0xFF, 0x00, 0x24, // 202:65535
0xFF, 0xFF, 0x00, 0x24, // 203:65535
0xFF, 0xFF, 0x00, 0x24, // 204:65535
0xFF, 0xFF, 0x00, 0x24, // 205:65535
0xFF, 0xFF, 0x00, 0x24, // 206:65535
0xFF, 0xFF, 0x00, 0x24, // 207:65535
0xFF, 0xFF, 0x00, 0x24, // 208:65535
0xFF, 0xFF, 0x00, 0x24, // 209:65535
0xFF, 0xFF, 0x00, 0x24, // 210:65535
0xFF, 0xFF, 0x00, 0x24, // 211:65535
0xFF, 0xFF, 0x00, 0x24, // 212:65535
0xFF, 0xFF, 0x00, 0x24, // 213:65535
0xFF, 0xFF, 0x00, 0x24, // 214:65535
0xFF, 0xFF, 0x00, 0x24, // 215:65535
0xFF, 0xFF, 0x00, 0x24, // 216:65535
0xFF, 0xFF, 0x00, 0x24, // 217:65535
0xFF, 0xFF, 0x00, 0x24, // 218:65535
0xFF, 0xFF, 0x00, 0x24, // 219:65535
0xFF, 0xFF, 0x00, 0x24, // 220:65535
0xFF, 0xFF, 0x00, 0x24, // 221:65535
0xFF, 0xFF, 0x00, 0x24, // 222:65535
0xFF, 0xFF, 0x00, 0x24, // 223:65535
0xFF, 0xFF, 0x00, 0x24, // 224:65535
0xFF, 0xFF, 0x00, 0x24, // 225:65535
0xFF, 0xFF, 0x00, 0x24, // 226:65535
0xFF, 0xFF, 0x00, 0x24, // 227:65535
0xFF, 0xFF, 0x00, 0x24, // 228:65535
0xFF, 0xFF, 0x00, 0x24, // 229:65535
0xFF, 0xFF, 0x00, 0x24, // 230:65535
0xFF, 0xFF, 0x00, 0x24, // 231:65535
0xFF, 0xFF, 0x00, 0x24, // 232:65535
0xFF, 0xFF, 0x00, 0x24, // 233:65535
0xFF, 0xFF, 0x00, 0x24, // 234:65535
0xFF, 0xFF, 0x00, 0x24, // 235:65535
0xFF, 0xFF, 0x00, 0x24, // 236:65535
0xFF, 0xFF, 0x00, 0x24, // 237:65535
0xFF, 0xFF, 0x00, 0x24, // 238:65535
0xFF, 0xFF, 0x00, 0x24, // 239:65535
0xFF, 0xFF, 0x00, 0x24, // 240:65535
0xFF, 0xFF, 0x00, 0x24, // 241:65535
0xFF, 0xFF, 0x00, 0x24, // 242:65535
0xFF, 0xFF, 0x00, 0x24, // 243:65535
0xFF, 0xFF, 0x00, 0x24, // 244:65535
0xFF, 0xFF, 0x00, 0x24, // 245:65535
0xFF, 0xFF, 0x00, 0x24, // 246:65535
0xFF, 0xFF, 0x00, 0x24, // 247:65535
0xFF, 0xFF, 0x00, 0x24, // 248:65535
0xFF, 0xFF, 0x00, 0x24, // 249:65535
0xFF, 0xFF, 0x00, 0x24, // 250:65535
0xFF, 0xFF, 0x00, 0x24, // 251:65535
0xFF, 0xFF, 0x00, 0x24, // 252:65535
0xFF, 0xFF, 0x00, 0x24, // 253:65535
0xFF, 0xFF, 0x00, 0x24, // 254:65535
0xFF, 0xFF, 0x00, 0x24, // 255:65535
// Font Data:
0x00,0x80,0x19,0x00,0x00,0x00,0x80,0x19,0x00,0x00,0x00,0x8C,0x19,0x00,0x00,0x00,0x8C,0x19,0x00,0x00,0x00,0x8C,0x19,0x00,0x00,0x00,0x8C,0x19,0x00,0x00,0x00,0x8C,0x19,0x00,0x00,0x00,0x0C,0x18,0x00,0x00,0x00,0x0C,0x18,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x30,0x18,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0xFF,0x03,0x00,0x00,0x80,0xFF,0x07,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0xC0,0xFF,0x0F,0x38,0x00,0xC0,0xFF,0x0F,0x3E,0x00,0xE0,0xFF,0x0F,0x7F,0x00,0xF0,0xFF,0x1F,0x3E,0x00,0xF0,0xFF,0x1F,0x38,0x00,0xF0,0xFF,0x1F,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0xF0,0xFF,0x1F,0x80,0x03,0xF0,0xFF,0x1F,0xC0,0x07,0xF0,0xFF,0x1F,0xF0,0x07,0xE0,0xFF,0x0F,0xC0,0x07,0xC0,0xFF,0x0F,0x80,0x03,0xC0,0xFF,0x0F,0x00,0x00,0xC0,0xFF,0x0F,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x80,0xFF,0x07,0x00,0x00,0x00,0xFF,0x03,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0x70, // 33
0x00,0xF8,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x80,0xFF,0x1F,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0xC0,0xFF,0x3F,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0xE0,0xFF,0x1F,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0xFC,0xFF,0x7F,0x38,0x07,0xFC,0xFF,0x7F,0x38,0x07,0xFC,0xFF,0x7F,0xF0,0x03,0xFE,0xFF,0xFF,0xF0,0x03,0xFE,0xFF,0xFF,0x3E,0x1F,0xFE,0xFF,0xFF,0x3E,0x1F,0xFE,0xFF,0xFF,0xF0,0x03,0xFC,0xFF,0x7F,0xF0,0x03,0xFC,0xFF,0x7F,0x38,0x07,0xFC,0xFF,0x7F,0x38,0x07,0xF8,0xFF,0x3F,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0xE0,0xFF,0x1F,0x00,0x00,0xC0,0xFF,0x3F,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x80,0xFF,0x1F,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0xF8, // 34
0x00,0xF8,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0xFF,0x07,0x08,0x00,0x80,0xFF,0x0F,0x0B,0x00,0x80,0xFF,0x1F,0x3E,0x00,0xC0,0xFF,0x1F,0x32,0x00,0xC0,0xFF,0x9F,0x1F,0x00,0xC0,0xFF,0x3F,0x3C,0x00,0xC0,0xFF,0x1F,0x26,0x00,0xE0,0xFF,0x1F,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0xFC,0xFF,0x7F,0x38,0x07,0xFC,0xFF,0x7F,0x38,0x07,0xFC,0xFF,0x7F,0xF0,0x03,0xFE,0xFF,0xFF,0xF0,0x03,0xFE,0xFF,0xFF,0x3E,0x1F,0xFE,0xFF,0xFF,0x3E,0x1F,0xFE,0xFF,0xFF,0xF0,0x03,0xFC,0xFF,0x7F,0xF0,0x03,0xFC,0xFF,0x7F,0x38,0x07,0xFC,0xFF,0x7F,0x38,0x07,0xF8,0xFF,0x3F,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0xE0,0xFF,0x1F,0x00,0x00,0xC0,0xFF,0x3F,0x90,0x00,0xC0,0xFF,0x1F,0xF0,0x00,0xC0,0xFF,0x1F,0x7E,0x00,0xC0,0xFF,0x1F,0xC8,0x01,0x80,0xFF,0x1F,0xF8,0x00,0x80,0xFF,0x0F,0x2C,0x00,0x00,0xFF,0x07,0x60,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0xF8, // 35
0x00,0xF8,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x80,0xFF,0x1F,0x04,0x00,0xC0,0xFF,0x1F,0x0F,0x00,0xC0,0xFF,0x1F,0x0F,0x00,0xC0,0xFF,0x3F,0x0F,0x00,0xC0,0xFF,0x1F,0x06,0x00,0xE0,0xFF,0x1F,0x00,0x0C,0xF0,0xFF,0x1F,0x00,0x1E,0xF8,0xFF,0x3F,0x00,0x1E,0xF8,0xFF,0x3F,0x00,0x1E,0xFC,0xF