diff --git a/src/rom/app.py b/src/rom/app.py index 28ac493..ba52276 100644 --- a/src/rom/app.py +++ b/src/rom/app.py @@ -217,7 +217,7 @@ def cb_progress(data): def start(): # 初始化液晶屏 - display.init_display(config.get("bl_mode")=="pwm", 5120) + display.init_display(config.get("bl_mode")=="pwm", 7000) display.brightness(int(config.get("brightness", 10))) cb_progress("WiFi connect ...") diff --git a/utils/assets/cn-words.txt b/utils/assets/cn-words.txt new file mode 100644 index 0000000..ddcd84d --- /dev/null +++ b/utils/assets/cn-words.txt @@ -0,0 +1 @@ +一丁七万丈三上下不与丑专且世丘丙业丛东丝丢两严丧个中丰串临丸丹为主丽举乃久么义之乌乍乎乏乐乒乓乔乖乘乙九乞也习乡书买乱乳乾了予争事二于亏云互五井亚些亡交亦产亨亩享京亭亮亲亳人亿什仁仅仆仇今介仍从仑仓仔他仗付仙代令以仪们仰仲件价任份仿企伊伍伏伐休众优伙会伞伟传伤伦伪伯估伴伶伸似伽但位低住体何余佛作你佣佩佳使侄例侍供依侦侧侨侮侯侵便促俊俗俘保信俩俭修俯俱倍倒倘候倚借倡倦债值倾偃假偏做停健偶偷偿傅傍储催傲傻像僚僵僻儋儿允元兄充兆先光克免兔兖党入全八公六兰共关兴兵其具典养兼兽冀内冈册再冒冕写军农冠冤冬冰冲决况冶冷冻净准凉凌减凑凝几凡凤凭凯凰凳凶出击刀刃分切刊刑划列刘则刚创初删判利别刮到制刷券刺刻剂剃削前剑剖剥剧剩剪副割劈力劝办功加务劣动助努劫励劲劳势勃勇勉勐勒勤勺勾勿匀包匆化北匙匠匪匹区医十千升午半华协卓单卖南博卜占卡卢卧卫印危即却卵卷卸厂厅历厉压厌厕厘厚原厢厦厨去县参又叉及友双反发叔取受变叙叛叠口古句另叨只叫召叮可台史右叶号司叹叼吃各合吉吊同名后吐向吓吕吗君吞否吧吨吩含听启吴吵吸吹吼吾呀呆呈告员呜呢周味呼命和咏咐咬咱咳咸咽哀品哄哈响哑哗哥哨哪哭哲唇唉唐唤售唯唱啄商啊啦喀喂善喇喉喊喘喜喝喷嗓嗽嘉嘎嘱嘴器噶嚷嚼囊四回因团园困围固国图圆圈土圣在圩地圳场圾址坂均坊坎坏坐坑块坚坛坜坝坟坡坤坦坪坻垂垃垄型垒垣垦垫垮埇埋城埔埕埗域埠培基堂堆堡堤堪堰堵塌塑塔塘塞填境墅墓墙增墨壁壤士壮声壳壶处备复夏夕外多夜够大天太夫央失头夷夸夹夺奇奈奉奋奎奏奔奖套奥女奴奶奸她好如妃妄妇妈妖妙妥妨妹妻始姐姑姓委姚姜姥姨姻姿威娃娄娇娘娱婆婚婶婺嫁嫂嫌嫩子孔孕字存孙孚孜孝孟季孤学孩宁它宅宇守安宋完宏宕宗官宙定宛宜宝实审客宣室宪宫宰害宴宵家容宽宾宿寄密寇富寒察寨寮寸对寺寻导寿封射将尉尊小少尔尖尘尚尝尤尧就尸尺尼尽尾尿局层居屈届屋屏屑展属屠屡屯山屿岁岂岐岑岔岗岚岛岢岩岫岭岱岳岷岸峄峒峙峡峦峨峪峰峻崂崃崆崇崎崖崭嵊嵩巍川州巡巢工左巧巨巩巫差己已巴巷巾币市布帅帆师希帐帕帖帘帜帝带席帮常帽幅幕干平年并幸幻幼广庄庆床序庐库应底店庙府废度座庭庵康庸廉廊延建开异弃弄弊弋式弓引弟张弥弦弯弱弹强归当录彝形彦彩彬彭彰影役彻彼往征径待很律徐徒得御循微德徽心必忆忌忍志忘忙忠忧快念忻忽怀态怎怒怕怖怜思怠急性怨怪总恋恐恒恢恨恩恭息恰恳恶恼悄悉悔悟悠患悦您悬悲悼情惊惑惕惜惠惧惨惩惭惯惰想惹愁愈愉意愚感愤愧愿慈慌慎慕慢慧慨慰懂懒戈戏成我戒或战戚截戴户房所扁扇手才扎扑扒打扔托扛扣执扩扫扬扭扮扯扰扶批找承技抄把抓投抖抗折抚抛抢护报披抬抱抵抹押抽担拆拉拌拍拐拒拔拖拘招拜拢拣拥拦拨择括拱拳拴拼拾拿持挂指按挎挑挖挠挡挣挤挥挨挪振挺挽捆捉捎捏捐捕捞损捡换捧据捷掀掇授掉掌掏排掖掘掠探接控推掩措揉描提插握揪揭援搁搂搅搏搜搞搬搭携摄摆摇摊摔摘摧摩摸撇撑撒撕撞撤播操擦攀支收攸改攻放政故效敌敏救敖教敞敢散敦敬数敲整文斑斗料斜斤斥斧斩断斯新方施旁旅旋旌族旗无既日旦旧旨早旬旱时旷旺昂昆昌明昏易昔星映春昨昭是昼显晃晋晌晏晒晓晕晖晚晨普景晰晴晶智晾暂暑暖暗暨暮暴曙曲更曹曼曾替最月有朋服朐朔朗望朝期朦木未末本札术朱朴朵机朽杀杂权杆杉李杏材村杜杞束杠条来杨杭杯杰松板极构析枕林果枝枞枣枪枯架柄柏某染柔柘柜柞查柯柱柳柴柿标栋栏树栖栗校株样核根格栽栾桂桃框案桌桐桑桓档桥桦桨桶梁梅梓梢梦梧梨梯械梳检棉棋棍棒棕棚棠棣森棱棵椅植椒楚楞楠楼概榆榕榜榨榴槐槽樊樟模横樱橘橙橡欠次欢欣欧欲欺款歇歉歌歙止正此步武歪死歼殃殊残殖段殷殿毁毅母每毒比毕毙毛毫毯氏民气氧氮水永氹汀汁求汇汉汐汕汗汝江池污汤汨汪汶汽汾沁沂沃沅沈沉沐沙沛沟没沧沫沭河沸油治沽沾沿泄泉泊泌法泗泛泡波泥注泪泰泳泸泻泼泽泾洁洋洒洗洛洞津洪洮洱洲活洼洽派流浅浆浇浈浉浊测济浏浑浓浔浙浚浠浦浩浪浮浴海浸涂消涉涌涛涝涞涟涡润涧涨涪涯液涵涿淀淄淅淇淋淖淘淞淡淮深淳混淹添清渌渐渑渔渗渝渠渡渣温渭港渴游湄湖湘湛湟湾湿溆溉源溜溧溪滁滋滑滔滕滚满滤滥滦滨滩滴漂漆漏演漠漫漯漳漾潍潘潜潞潢潭潮潼澄澎澜澡澧澳激濂濉濞濠濮瀍灌灞火灭灯灰灵灶灾灿炉炊炎炒炕炭炮炸点炼烂烈烘烛烟烤烦烧烫热烽焉焦焰然煌煎煤照煮熄熊熔熟燃燕燥爆爪爬爱父爷爸爹爽片版牌牙牛牟牡牢牧物牲牵特牺犁犍犬犯状犹狂狐狗狠狡独狭狮狱狸狼猇猎猗猛猜猪猫献猴猾玄率玉王玛玩环现玻珍珙珠班珲球琅理琊琴琼瑞瑶璃璧瓜瓣瓦瓮瓯瓶甘甚甜生用甩田由甲申电男甸画畅界畏留畜略番畴疆疏疑疗疤疫疮疯疲疼疾病症痒痕痛痰瘦登白百皂的皆皇皋皮皱盂盆盈益盏盐监盒盖盗盘盛盟目盯盱盲直相盼盾省眉看眙真眠眨眯眼着睁睛睡睢督睬瞎瞒瞧瞬矛知矩短矮石矿砀码砌砍研砖砚破础硕硚硫硬确碇碌碍碎碑碗碚碧碰碱碳碾磁磐磨磴示礼社祁祖祝神祥票祸禁禄禅福禹禺离禽禾秀私秃秆秉秋种科秒秘租秤秦秧秩秭积称移稀程稍税稠稳稷稻稼稿穆穗穴究穷空穿突窃窄窑窗窜窝立竖站竞竟章童竭端竹竿笋笑笔笛符笨第笼等筋筐筑筒答策筛筝筠筹签简算管箩箭箱篇篮籍米类粉粒粗粘粥粪粮粱精糊糕糖糟糠系素索紧紫累絮綦繁纠红纤约级纪纯纱纲纳纵纷纸纹纺纽线练组细织终绍经绑绒结绕绘给绛络绝绞统绢绣绥继绩绪续绳维绵绸绿缎缓编缘缙缝缠缩缭缴缸缺罐网罕罗罘罚罢罩罪置羊羌美羞羡群羽翁翅翔翠翻翼耀老考者耆而耍耐耒耕耗耳耻耽耿聂聊聋职联聚聪肃肆肇肉肌肚肝肠股肢肤肥肩肯育肺肾肿胀胁胃胆背胖胜胞胡胧胳胶胸能脂脆脉脊脏脑脖脚脱脸脾腊腐腔腥腰腹腾腿膀膊膏膛膜膝膨臂臣自臭至致舅舆舌舍舒舞舟航般舰舱船艇艘良艰色艳艺节芒芗芙芜芝芦芬芮花芳芷芹芽苍苏苑苓苗若苦英苹茂范茄茅茌茎茧茫茶荃荆草荐荒荔荡荣荥荫药荷莆莎莒莘莞莫莱莲获莺菊菌菏菜菠萄萌萍萝萣营萧萨落著葛葡董葫葬葱葵蒗蒙蒜蒲蒸蓄蓉蓝蓟蓥蓬蔑蔚蔡蔬蔺蔽蕉蕲蕴薄薛薪薯藁藏藤虎虏虑虚虞虫虹虽虾蚀蚁蚂蚊蚌蚕蛇蛋蛙蛛蛟蛮蛾蜀蜂蜓蜘蜜蜡蜻蝇蝴蝶融螺蠡蠢血行衔街衡衢衣补表衫衬衰袁袄袋袍袖袜被袭裁裂装裕裙裤裳裹襄西要覃覆见观规视览觉角解触言誉誓警计订认讨让训议讯记讲讷许论讽设访证评识诉诊词诏译试诗诚话诞询该详语误诱说诵请诸诺读课谁调谅谈谊谋谎谜谟谢谣谦谨谯谱谷豆象豪豫貌贝贞负贡财责贤败货质贩贪贫购贯贱贴贵贷贸费贺贼贾贿资赉赌赏赔赖赚赛赞赠赢赣赤赫走赴赵赶起趁超越趋趟趣足趴跃跌跑距跟跨跪路跳践踏踢踩踪蹄蹈蹦蹲躁身躬躲躺车轧轨转轮软轰轻载轿较辅辆辈辉输辖辛辜辞辟辣辨辩辫辰辱边辽达迁迅过迈迎运近返还这进远违连迟迦迪迫迭述迷迹追退送适逃逆选逊透逐递途逗通逝速造逢逮逼遂遇遍道遗遣遥遭遮遵避邀邑邓邕邗邛邡邢那邪邮邯邱邳邵邹邺邻郁郊郎郏郑郓郧部郫郭郯郴郸都郾鄂鄄鄙鄞鄠鄢鄯鄱酉配酒酬酱酷酸酿醉醋醒醴采释里重野量金鉴针钉钓钞钟钢钥钦钩钱钳钻铁铃铅铜铲银铸铺链销锁锄锅锈锋锐错锡锣锤锦键锯锹锻镇镜镰镶长门闪闭问闯闲间闵闷闸闹闻闽阀阁阅阆阎阔阜队阡防阳阴阵阶阻阿陀陂附际陆陇陈陉降限陕陟陡院除险陪陵陶陷隅隆随隐隔隙障隰隶难雀雁雄雅集雍雕雨雪零雷雹雾需霄震霉霍霜霞露霸霾青靖静非靠面革鞋鞍鞠鞭韩音韵韶页顶顷项顺须顽顾顿颂预领颈颍颗题颜额颠颤风飓飘飞食餐饥饭饮饰饱饲饶饺饼饿馅馆馋馒首香马驰驱驳驴驶驻驼驾驿骂骄骅骆验骑骗骡骤骨高鬼魂魄魏魔鱼鲁鲅鲜鲤鸟鸠鸡鸣鸦鸭鸽鹅鹊鹤鹰鹿麒麓麟麦麻黄黎黑黔默黟鼎鼓鼠鼻齐齿龄龙龟 \ No newline at end of file diff --git a/utils/assets/images/0.png b/utils/assets/images/0.png new file mode 100644 index 0000000..e73f280 Binary files /dev/null and b/utils/assets/images/0.png differ diff --git a/utils/assets/images/1.png b/utils/assets/images/1.png new file mode 100644 index 0000000..e808ab3 Binary files /dev/null and b/utils/assets/images/1.png differ diff --git a/utils/assets/images/2.png b/utils/assets/images/2.png new file mode 100644 index 0000000..8d8de28 Binary files /dev/null and b/utils/assets/images/2.png differ diff --git a/utils/assets/images/3.png b/utils/assets/images/3.png new file mode 100644 index 0000000..49bd511 Binary files /dev/null and b/utils/assets/images/3.png differ diff --git a/utils/assets/images/4.png b/utils/assets/images/4.png new file mode 100644 index 0000000..33be903 Binary files /dev/null and b/utils/assets/images/4.png differ diff --git a/utils/assets/images/5.png b/utils/assets/images/5.png new file mode 100644 index 0000000..a211e37 Binary files /dev/null and b/utils/assets/images/5.png differ diff --git a/utils/assets/images/6.png b/utils/assets/images/6.png new file mode 100644 index 0000000..ccf3193 Binary files /dev/null and b/utils/assets/images/6.png differ diff --git a/utils/assets/images/7.png b/utils/assets/images/7.png new file mode 100644 index 0000000..dc49af6 Binary files /dev/null and b/utils/assets/images/7.png differ diff --git a/utils/assets/images/ap.png b/utils/assets/images/ap.png new file mode 100644 index 0000000..04242eb Binary files /dev/null and b/utils/assets/images/ap.png differ diff --git a/utils/assets/images/t.png b/utils/assets/images/t.png new file mode 100644 index 0000000..d4ed4d6 Binary files /dev/null and b/utils/assets/images/t.png differ diff --git a/utils/assets/pyfont/romand.py b/utils/assets/pyfont/romand.py new file mode 100644 index 0000000..5c61539 --- /dev/null +++ b/utils/assets/pyfont/romand.py @@ -0,0 +1,364 @@ +WIDTH = 32 +HEIGHT = 32 +FIRST = 0x20 +LAST = 0x7f + +_font =\ +b'\x00\x4a\x5a\x17\x4d\x58\x52\x46\x52\x54\x53\x54\x20\x52\x52'\ +b'\x46\x53\x46\x53\x54\x20\x52\x52\x58\x51\x59\x51\x5a\x52\x5b'\ +b'\x53\x5b\x54\x5a\x54\x59\x53\x58\x52\x58\x20\x52\x52\x59\x52'\ +b'\x5a\x53\x5a\x53\x59\x52\x59\x15\x49\x5b\x4e\x46\x4d\x47\x4d'\ +b'\x4d\x20\x52\x4e\x47\x4d\x4d\x20\x52\x4e\x46\x4f\x47\x4d\x4d'\ +b'\x20\x52\x57\x46\x56\x47\x56\x4d\x20\x52\x57\x47\x56\x4d\x20'\ +b'\x52\x57\x46\x58\x47\x56\x4d\x0b\x48\x5d\x53\x42\x4c\x62\x20'\ +b'\x52\x59\x42\x52\x62\x20\x52\x4c\x4f\x5a\x4f\x20\x52\x4b\x55'\ +b'\x59\x55\x32\x49\x5c\x52\x42\x52\x5f\x53\x5f\x20\x52\x52\x42'\ +b'\x53\x42\x53\x5f\x20\x52\x57\x49\x59\x49\x57\x47\x54\x46\x51'\ +b'\x46\x4e\x47\x4c\x49\x4c\x4b\x4d\x4d\x4e\x4e\x56\x52\x57\x53'\ +b'\x58\x55\x58\x57\x57\x59\x54\x5a\x51\x5a\x4f\x59\x4e\x58\x20'\ +b'\x52\x57\x49\x56\x48\x54\x47\x51\x47\x4e\x48\x4d\x49\x4d\x4b'\ +b'\x4e\x4d\x56\x51\x58\x53\x59\x55\x59\x57\x58\x59\x57\x5a\x54'\ +b'\x5b\x51\x5b\x4e\x5a\x4c\x58\x4e\x58\x20\x52\x58\x58\x55\x5a'\ +b'\x1f\x46\x5e\x5b\x46\x49\x5b\x20\x52\x4e\x46\x50\x48\x50\x4a'\ +b'\x4f\x4c\x4d\x4d\x4b\x4d\x49\x4b\x49\x49\x4a\x47\x4c\x46\x4e'\ +b'\x46\x50\x47\x53\x48\x56\x48\x59\x47\x5b\x46\x20\x52\x57\x54'\ +b'\x55\x55\x54\x57\x54\x59\x56\x5b\x58\x5b\x5a\x5a\x5b\x58\x5b'\ +b'\x56\x59\x54\x57\x54\x30\x46\x5f\x5b\x4e\x5a\x4f\x5b\x50\x5c'\ +b'\x4f\x5c\x4e\x5b\x4d\x5a\x4d\x59\x4e\x58\x50\x56\x55\x54\x58'\ +b'\x52\x5a\x50\x5b\x4d\x5b\x4a\x5a\x49\x58\x49\x55\x4a\x53\x50'\ +b'\x4f\x52\x4d\x53\x4b\x53\x49\x52\x47\x50\x46\x4e\x47\x4d\x49'\ +b'\x4d\x4b\x4e\x4e\x50\x51\x55\x58\x57\x5a\x5a\x5b\x5b\x5b\x5c'\ +b'\x5a\x5c\x59\x20\x52\x4d\x5b\x4b\x5a\x4a\x58\x4a\x55\x4b\x53'\ +b'\x4d\x51\x20\x52\x4d\x4b\x4e\x4d\x56\x58\x58\x5a\x5a\x5b\x0a'\ +b'\x4e\x57\x53\x46\x52\x47\x52\x4d\x20\x52\x53\x47\x52\x4d\x20'\ +b'\x52\x53\x46\x54\x47\x52\x4d\x13\x4b\x59\x56\x42\x54\x44\x52'\ +b'\x47\x50\x4b\x4f\x50\x4f\x54\x50\x59\x52\x5d\x54\x60\x56\x62'\ +b'\x20\x52\x54\x44\x52\x48\x51\x4b\x50\x50\x50\x54\x51\x59\x52'\ +b'\x5c\x54\x60\x13\x4b\x59\x4e\x42\x50\x44\x52\x47\x54\x4b\x55'\ +b'\x50\x55\x54\x54\x59\x52\x5d\x50\x60\x4e\x62\x20\x52\x50\x44'\ +b'\x52\x48\x53\x4b\x54\x50\x54\x54\x53\x59\x52\x5c\x50\x60\x26'\ +b'\x4a\x5a\x52\x46\x51\x47\x53\x51\x52\x52\x20\x52\x52\x46\x52'\ +b'\x52\x20\x52\x52\x46\x53\x47\x51\x51\x52\x52\x20\x52\x4d\x49'\ +b'\x4e\x49\x56\x4f\x57\x4f\x20\x52\x4d\x49\x57\x4f\x20\x52\x4d'\ +b'\x49\x4d\x4a\x57\x4e\x57\x4f\x20\x52\x57\x49\x56\x49\x4e\x4f'\ +b'\x4d\x4f\x20\x52\x57\x49\x4d\x4f\x20\x52\x57\x49\x57\x4a\x4d'\ +b'\x4e\x4d\x4f\x0f\x46\x5f\x52\x49\x52\x5a\x53\x5a\x20\x52\x52'\ +b'\x49\x53\x49\x53\x5a\x20\x52\x4a\x51\x5b\x51\x5b\x52\x20\x52'\ +b'\x4a\x51\x4a\x52\x5b\x52\x17\x4d\x58\x54\x5a\x53\x5b\x52\x5b'\ +b'\x51\x5a\x51\x59\x52\x58\x53\x58\x54\x59\x54\x5c\x53\x5e\x51'\ +b'\x5f\x20\x52\x52\x59\x52\x5a\x53\x5a\x53\x59\x52\x59\x20\x52'\ +b'\x53\x5b\x54\x5c\x20\x52\x54\x5a\x53\x5e\x02\x45\x5f\x49\x52'\ +b'\x5b\x52\x0f\x4d\x58\x52\x58\x51\x59\x51\x5a\x52\x5b\x53\x5b'\ +b'\x54\x5a\x54\x59\x53\x58\x52\x58\x20\x52\x52\x59\x52\x5a\x53'\ +b'\x5a\x53\x59\x52\x59\x07\x47\x5e\x5b\x42\x49\x62\x4a\x62\x20'\ +b'\x52\x5b\x42\x5c\x42\x4a\x62\x29\x48\x5c\x51\x46\x4e\x47\x4c'\ +b'\x4a\x4b\x4f\x4b\x52\x4c\x57\x4e\x5a\x51\x5b\x53\x5b\x56\x5a'\ +b'\x58\x57\x59\x52\x59\x4f\x58\x4a\x56\x47\x53\x46\x51\x46\x20'\ +b'\x52\x4f\x47\x4d\x4a\x4c\x4f\x4c\x52\x4d\x57\x4f\x5a\x20\x52'\ +b'\x4e\x59\x51\x5a\x53\x5a\x56\x59\x20\x52\x55\x5a\x57\x57\x58'\ +b'\x52\x58\x4f\x57\x4a\x55\x47\x20\x52\x56\x48\x53\x47\x51\x47'\ +b'\x4e\x48\x0b\x48\x5c\x4e\x4a\x50\x49\x53\x46\x53\x5b\x20\x52'\ +b'\x4e\x4a\x4e\x4b\x50\x4a\x52\x48\x52\x5b\x53\x5b\x21\x48\x5c'\ +b'\x4c\x4b\x4c\x4a\x4d\x48\x4e\x47\x50\x46\x54\x46\x56\x47\x57'\ +b'\x48\x58\x4a\x58\x4c\x57\x4e\x55\x51\x4c\x5b\x20\x52\x4c\x4b'\ +b'\x4d\x4b\x4d\x4a\x4e\x48\x50\x47\x54\x47\x56\x48\x57\x4a\x57'\ +b'\x4c\x56\x4e\x54\x51\x4b\x5b\x20\x52\x4c\x5a\x59\x5a\x59\x5b'\ +b'\x20\x52\x4b\x5b\x59\x5b\x2f\x48\x5c\x4d\x46\x58\x46\x51\x4f'\ +b'\x20\x52\x4d\x46\x4d\x47\x57\x47\x20\x52\x57\x46\x50\x4f\x20'\ +b'\x52\x51\x4e\x53\x4e\x56\x4f\x58\x51\x59\x54\x59\x55\x58\x58'\ +b'\x56\x5a\x53\x5b\x50\x5b\x4d\x5a\x4c\x59\x4b\x57\x4c\x57\x20'\ +b'\x52\x50\x4f\x53\x4f\x56\x50\x58\x53\x20\x52\x54\x4f\x57\x51'\ +b'\x58\x54\x58\x55\x57\x58\x54\x5a\x20\x52\x58\x56\x56\x59\x53'\ +b'\x5a\x50\x5a\x4d\x59\x4c\x57\x20\x52\x4f\x5a\x4c\x58\x11\x48'\ +b'\x5c\x55\x49\x55\x5b\x56\x5b\x20\x52\x56\x46\x56\x5b\x20\x52'\ +b'\x56\x46\x4b\x56\x5a\x56\x20\x52\x55\x49\x4c\x56\x20\x52\x4c'\ +b'\x55\x5a\x55\x5a\x56\x34\x48\x5c\x4d\x46\x4c\x4f\x20\x52\x4e'\ +b'\x47\x4d\x4e\x20\x52\x4d\x46\x57\x46\x57\x47\x20\x52\x4e\x47'\ +b'\x57\x47\x20\x52\x4d\x4e\x50\x4d\x53\x4d\x56\x4e\x58\x50\x59'\ +b'\x53\x59\x55\x58\x58\x56\x5a\x53\x5b\x50\x5b\x4d\x5a\x4c\x59'\ +b'\x4b\x57\x4c\x57\x20\x52\x4c\x4f\x4d\x4f\x4f\x4e\x53\x4e\x56'\ +b'\x4f\x58\x52\x20\x52\x54\x4e\x57\x50\x58\x53\x58\x55\x57\x58'\ +b'\x54\x5a\x20\x52\x58\x56\x56\x59\x53\x5a\x50\x5a\x4d\x59\x4c'\ +b'\x57\x20\x52\x4f\x5a\x4c\x58\x3d\x48\x5c\x56\x47\x57\x49\x58'\ +b'\x49\x57\x47\x54\x46\x52\x46\x4f\x47\x4d\x4a\x4c\x4f\x4c\x54'\ +b'\x4d\x58\x4f\x5a\x52\x5b\x53\x5b\x56\x5a\x58\x58\x59\x55\x59'\ +b'\x54\x58\x51\x56\x4f\x53\x4e\x52\x4e\x4f\x4f\x4d\x51\x20\x52'\ +b'\x57\x48\x54\x47\x52\x47\x4f\x48\x20\x52\x50\x47\x4e\x4a\x4d'\ +b'\x4f\x4d\x54\x4e\x58\x51\x5a\x20\x52\x4d\x56\x4f\x59\x52\x5a'\ +b'\x53\x5a\x56\x59\x58\x56\x20\x52\x54\x5a\x57\x58\x58\x55\x58'\ +b'\x54\x57\x51\x54\x4f\x20\x52\x58\x53\x56\x50\x53\x4f\x52\x4f'\ +b'\x4f\x50\x4d\x53\x20\x52\x51\x4f\x4e\x51\x4d\x54\x0b\x48\x5c'\ +b'\x4b\x46\x59\x46\x4f\x5b\x20\x52\x4b\x46\x4b\x47\x58\x47\x20'\ +b'\x52\x58\x46\x4e\x5b\x4f\x5b\x43\x48\x5c\x50\x46\x4d\x47\x4c'\ +b'\x49\x4c\x4b\x4d\x4d\x4e\x4e\x50\x4f\x54\x50\x56\x51\x57\x52'\ +b'\x58\x54\x58\x57\x57\x59\x54\x5a\x50\x5a\x4d\x59\x4c\x57\x4c'\ +b'\x54\x4d\x52\x4e\x51\x50\x50\x54\x4f\x56\x4e\x57\x4d\x58\x4b'\ +b'\x58\x49\x57\x47\x54\x46\x50\x46\x20\x52\x4e\x47\x4d\x49\x4d'\ +b'\x4b\x4e\x4d\x50\x4e\x54\x4f\x56\x50\x58\x52\x59\x54\x59\x57'\ +b'\x58\x59\x57\x5a\x54\x5b\x50\x5b\x4d\x5a\x4c\x59\x4b\x57\x4b'\ +b'\x54\x4c\x52\x4e\x50\x50\x4f\x54\x4e\x56\x4d\x57\x4b\x57\x49'\ +b'\x56\x47\x20\x52\x57\x48\x54\x47\x50\x47\x4d\x48\x20\x52\x4c'\ +b'\x58\x4f\x5a\x20\x52\x55\x5a\x58\x58\x3d\x48\x5c\x57\x50\x55'\ +b'\x52\x52\x53\x51\x53\x4e\x52\x4c\x50\x4b\x4d\x4b\x4c\x4c\x49'\ +b'\x4e\x47\x51\x46\x52\x46\x55\x47\x57\x49\x58\x4d\x58\x52\x57'\ +b'\x57\x55\x5a\x52\x5b\x50\x5b\x4d\x5a\x4c\x58\x4d\x58\x4e\x5a'\ +b'\x20\x52\x57\x4d\x56\x50\x53\x52\x20\x52\x57\x4e\x55\x51\x52'\ +b'\x52\x51\x52\x4e\x51\x4c\x4e\x20\x52\x50\x52\x4d\x50\x4c\x4d'\ +b'\x4c\x4c\x4d\x49\x50\x47\x20\x52\x4c\x4b\x4e\x48\x51\x47\x52'\ +b'\x47\x55\x48\x57\x4b\x20\x52\x53\x47\x56\x49\x57\x4d\x57\x52'\ +b'\x56\x57\x54\x5a\x20\x52\x55\x59\x52\x5a\x50\x5a\x4d\x59\x1f'\ +b'\x4d\x58\x52\x4d\x51\x4e\x51\x4f\x52\x50\x53\x50\x54\x4f\x54'\ +b'\x4e\x53\x4d\x52\x4d\x20\x52\x52\x4e\x52\x4f\x53\x4f\x53\x4e'\ +b'\x52\x4e\x20\x52\x52\x58\x51\x59\x51\x5a\x52\x5b\x53\x5b\x54'\ +b'\x5a\x54\x59\x53\x58\x52\x58\x20\x52\x52\x59\x52\x5a\x53\x5a'\ +b'\x53\x59\x52\x59\x27\x4d\x58\x52\x4d\x51\x4e\x51\x4f\x52\x50'\ +b'\x53\x50\x54\x4f\x54\x4e\x53\x4d\x52\x4d\x20\x52\x52\x4e\x52'\ +b'\x4f\x53\x4f\x53\x4e\x52\x4e\x20\x52\x54\x5a\x53\x5b\x52\x5b'\ +b'\x51\x5a\x51\x59\x52\x58\x53\x58\x54\x59\x54\x5c\x53\x5e\x51'\ +b'\x5f\x20\x52\x52\x59\x52\x5a\x53\x5a\x53\x59\x52\x59\x20\x52'\ +b'\x53\x5b\x54\x5c\x20\x52\x54\x5a\x53\x5e\x03\x46\x5e\x5a\x49'\ +b'\x4a\x52\x5a\x5b\x0f\x46\x5f\x4a\x4d\x5b\x4d\x5b\x4e\x20\x52'\ +b'\x4a\x4d\x4a\x4e\x5b\x4e\x20\x52\x4a\x55\x5b\x55\x5b\x56\x20'\ +b'\x52\x4a\x55\x4a\x56\x5b\x56\x03\x46\x5e\x4a\x49\x5a\x52\x4a'\ +b'\x5b\x39\x49\x5c\x4c\x4b\x4c\x4a\x4d\x48\x4e\x47\x51\x46\x54'\ +b'\x46\x57\x47\x58\x48\x59\x4a\x59\x4c\x58\x4e\x57\x4f\x55\x50'\ +b'\x52\x51\x20\x52\x4c\x4b\x4d\x4b\x4d\x4a\x4e\x48\x51\x47\x54'\ +b'\x47\x57\x48\x58\x4a\x58\x4c\x57\x4e\x55\x4f\x52\x50\x20\x52'\ +b'\x4d\x49\x50\x47\x20\x52\x55\x47\x58\x49\x20\x52\x58\x4d\x54'\ +b'\x50\x20\x52\x52\x50\x52\x54\x53\x54\x53\x50\x20\x52\x52\x58'\ +b'\x51\x59\x51\x5a\x52\x5b\x53\x5b\x54\x5a\x54\x59\x53\x58\x52'\ +b'\x58\x20\x52\x52\x59\x52\x5a\x53\x5a\x53\x59\x52\x59\x37\x45'\ +b'\x60\x57\x4e\x56\x4c\x54\x4b\x51\x4b\x4f\x4c\x4e\x4d\x4d\x50'\ +b'\x4d\x53\x4e\x55\x50\x56\x53\x56\x55\x55\x56\x53\x20\x52\x51'\ +b'\x4b\x4f\x4d\x4e\x50\x4e\x53\x4f\x55\x50\x56\x20\x52\x57\x4b'\ +b'\x56\x53\x56\x55\x58\x56\x5a\x56\x5c\x54\x5d\x51\x5d\x4f\x5c'\ +b'\x4c\x5b\x4a\x59\x48\x57\x47\x54\x46\x51\x46\x4e\x47\x4c\x48'\ +b'\x4a\x4a\x49\x4c\x48\x4f\x48\x52\x49\x55\x4a\x57\x4c\x59\x4e'\ +b'\x5a\x51\x5b\x54\x5b\x57\x5a\x59\x59\x5a\x58\x20\x52\x58\x4b'\ +b'\x57\x53\x57\x55\x58\x56\x13\x48\x5c\x52\x46\x4a\x5b\x20\x52'\ +b'\x52\x49\x4b\x5b\x4a\x5b\x20\x52\x52\x49\x59\x5b\x5a\x5b\x20'\ +b'\x52\x52\x46\x5a\x5b\x20\x52\x4d\x55\x57\x55\x20\x52\x4c\x56'\ +b'\x58\x56\x2b\x48\x5c\x4c\x46\x4c\x5b\x20\x52\x4d\x47\x4d\x5a'\ +b'\x20\x52\x4c\x46\x54\x46\x57\x47\x58\x48\x59\x4a\x59\x4d\x58'\ +b'\x4f\x57\x50\x54\x51\x20\x52\x4d\x47\x54\x47\x57\x48\x58\x4a'\ +b'\x58\x4d\x57\x4f\x54\x50\x20\x52\x4d\x50\x54\x50\x57\x51\x58'\ +b'\x52\x59\x54\x59\x57\x58\x59\x57\x5a\x54\x5b\x4c\x5b\x20\x52'\ +b'\x4d\x51\x54\x51\x57\x52\x58\x54\x58\x57\x57\x59\x54\x5a\x4d'\ +b'\x5a\x25\x48\x5d\x5a\x4b\x59\x49\x57\x47\x55\x46\x51\x46\x4f'\ +b'\x47\x4d\x49\x4c\x4b\x4b\x4e\x4b\x53\x4c\x56\x4d\x58\x4f\x5a'\ +b'\x51\x5b\x55\x5b\x57\x5a\x59\x58\x5a\x56\x20\x52\x5a\x4b\x59'\ +b'\x4b\x58\x49\x57\x48\x55\x47\x51\x47\x4f\x48\x4d\x4b\x4c\x4e'\ +b'\x4c\x53\x4d\x56\x4f\x59\x51\x5a\x55\x5a\x57\x59\x58\x58\x59'\ +b'\x56\x5a\x56\x1f\x48\x5d\x4c\x46\x4c\x5b\x20\x52\x4d\x47\x4d'\ +b'\x5a\x20\x52\x4c\x46\x53\x46\x56\x47\x58\x49\x59\x4b\x5a\x4e'\ +b'\x5a\x53\x59\x56\x58\x58\x56\x5a\x53\x5b\x4c\x5b\x20\x52\x4d'\ +b'\x47\x53\x47\x56\x48\x57\x49\x58\x4b\x59\x4e\x59\x53\x58\x56'\ +b'\x57\x58\x56\x59\x53\x5a\x4d\x5a\x1a\x49\x5c\x4d\x46\x4d\x5b'\ +b'\x20\x52\x4e\x47\x4e\x5a\x20\x52\x4d\x46\x59\x46\x20\x52\x4e'\ +b'\x47\x59\x47\x59\x46\x20\x52\x4e\x50\x54\x50\x54\x51\x20\x52'\ +b'\x4e\x51\x54\x51\x20\x52\x4e\x5a\x59\x5a\x59\x5b\x20\x52\x4d'\ +b'\x5b\x59\x5b\x14\x49\x5b\x4d\x46\x4d\x5b\x20\x52\x4e\x47\x4e'\ +b'\x5b\x4d\x5b\x20\x52\x4d\x46\x59\x46\x20\x52\x4e\x47\x59\x47'\ +b'\x59\x46\x20\x52\x4e\x50\x54\x50\x54\x51\x20\x52\x4e\x51\x54'\ +b'\x51\x2b\x48\x5d\x5a\x4b\x59\x49\x57\x47\x55\x46\x51\x46\x4f'\ +b'\x47\x4d\x49\x4c\x4b\x4b\x4e\x4b\x53\x4c\x56\x4d\x58\x4f\x5a'\ +b'\x51\x5b\x55\x5b\x57\x5a\x59\x58\x5a\x56\x5a\x52\x55\x52\x20'\ +b'\x52\x5a\x4b\x59\x4b\x58\x49\x57\x48\x55\x47\x51\x47\x4f\x48'\ +b'\x4e\x49\x4d\x4b\x4c\x4e\x4c\x53\x4d\x56\x4e\x58\x4f\x59\x51'\ +b'\x5a\x55\x5a\x57\x59\x58\x58\x59\x56\x59\x53\x55\x53\x55\x52'\ +b'\x15\x47\x5d\x4b\x46\x4b\x5b\x20\x52\x4b\x46\x4c\x46\x4c\x5b'\ +b'\x4b\x5b\x20\x52\x59\x46\x58\x46\x58\x5b\x59\x5b\x20\x52\x59'\ +b'\x46\x59\x5b\x20\x52\x4c\x50\x58\x50\x20\x52\x4c\x51\x58\x51'\ +b'\x07\x4e\x57\x52\x46\x52\x5b\x53\x5b\x20\x52\x52\x46\x53\x46'\ +b'\x53\x5b\x13\x4a\x5b\x56\x46\x56\x56\x55\x59\x53\x5a\x51\x5a'\ +b'\x4f\x59\x4e\x56\x4d\x56\x20\x52\x56\x46\x57\x46\x57\x56\x56'\ +b'\x59\x55\x5a\x53\x5b\x51\x5b\x4f\x5a\x4e\x59\x4d\x56\x15\x48'\ +b'\x5d\x4c\x46\x4c\x5b\x4d\x5b\x20\x52\x4c\x46\x4d\x46\x4d\x5b'\ +b'\x20\x52\x5a\x46\x59\x46\x4d\x52\x20\x52\x5a\x46\x4d\x53\x20'\ +b'\x52\x50\x4f\x59\x5b\x5a\x5b\x20\x52\x51\x4f\x5a\x5b\x0d\x49'\ +b'\x5a\x4d\x46\x4d\x5b\x20\x52\x4d\x46\x4e\x46\x4e\x5a\x20\x52'\ +b'\x4e\x5a\x59\x5a\x59\x5b\x20\x52\x4d\x5b\x59\x5b\x19\x46\x5e'\ +b'\x4a\x46\x4a\x5b\x20\x52\x4b\x4b\x4b\x5b\x4a\x5b\x20\x52\x4b'\ +b'\x4b\x52\x5b\x20\x52\x4a\x46\x52\x58\x20\x52\x5a\x46\x52\x58'\ +b'\x20\x52\x59\x4b\x52\x5b\x20\x52\x59\x4b\x59\x5b\x5a\x5b\x20'\ +b'\x52\x5a\x46\x5a\x5b\x13\x47\x5d\x4b\x46\x4b\x5b\x20\x52\x4c'\ +b'\x49\x4c\x5b\x4b\x5b\x20\x52\x4c\x49\x59\x5b\x20\x52\x4b\x46'\ +b'\x58\x58\x20\x52\x58\x46\x58\x58\x20\x52\x58\x46\x59\x46\x59'\ +b'\x5b\x27\x47\x5d\x50\x46\x4e\x47\x4c\x49\x4b\x4b\x4a\x4e\x4a'\ +b'\x53\x4b\x56\x4c\x58\x4e\x5a\x50\x5b\x54\x5b\x56\x5a\x58\x58'\ +b'\x59\x56\x5a\x53\x5a\x4e\x59\x4b\x58\x49\x56\x47\x54\x46\x50'\ +b'\x46\x20\x52\x51\x47\x4e\x48\x4c\x4b\x4b\x4e\x4b\x53\x4c\x56'\ +b'\x4e\x59\x51\x5a\x53\x5a\x56\x59\x58\x56\x59\x53\x59\x4e\x58'\ +b'\x4b\x56\x48\x53\x47\x51\x47\x1a\x48\x5c\x4c\x46\x4c\x5b\x20'\ +b'\x52\x4d\x47\x4d\x5b\x4c\x5b\x20\x52\x4c\x46\x55\x46\x57\x47'\ +b'\x58\x48\x59\x4a\x59\x4d\x58\x4f\x57\x50\x55\x51\x4d\x51\x20'\ +b'\x52\x4d\x47\x55\x47\x57\x48\x58\x4a\x58\x4d\x57\x4f\x55\x50'\ +b'\x4d\x50\x2f\x47\x5d\x50\x46\x4e\x47\x4c\x49\x4b\x4b\x4a\x4e'\ +b'\x4a\x53\x4b\x56\x4c\x58\x4e\x5a\x50\x5b\x54\x5b\x56\x5a\x58'\ +b'\x58\x59\x56\x5a\x53\x5a\x4e\x59\x4b\x58\x49\x56\x47\x54\x46'\ +b'\x50\x46\x20\x52\x51\x47\x4e\x48\x4c\x4b\x4b\x4e\x4b\x53\x4c'\ +b'\x56\x4e\x59\x51\x5a\x53\x5a\x56\x59\x58\x56\x59\x53\x59\x4e'\ +b'\x58\x4b\x56\x48\x53\x47\x51\x47\x20\x52\x53\x58\x58\x5d\x59'\ +b'\x5d\x20\x52\x53\x58\x54\x58\x59\x5d\x21\x48\x5c\x4c\x46\x4c'\ +b'\x5b\x20\x52\x4d\x47\x4d\x5b\x4c\x5b\x20\x52\x4c\x46\x54\x46'\ +b'\x57\x47\x58\x48\x59\x4a\x59\x4d\x58\x4f\x57\x50\x54\x51\x4d'\ +b'\x51\x20\x52\x4d\x47\x54\x47\x57\x48\x58\x4a\x58\x4d\x57\x4f'\ +b'\x54\x50\x4d\x50\x20\x52\x52\x51\x58\x5b\x59\x5b\x20\x52\x53'\ +b'\x51\x59\x5b\x2a\x48\x5c\x59\x49\x57\x47\x54\x46\x50\x46\x4d'\ +b'\x47\x4b\x49\x4b\x4b\x4c\x4d\x4d\x4e\x4f\x4f\x54\x51\x56\x52'\ +b'\x57\x53\x58\x55\x58\x58\x57\x59\x54\x5a\x50\x5a\x4e\x59\x4d'\ +b'\x58\x4b\x58\x20\x52\x59\x49\x57\x49\x56\x48\x54\x47\x50\x47'\ +b'\x4d\x48\x4c\x49\x4c\x4b\x4d\x4d\x4f\x4e\x54\x50\x56\x51\x58'\ +b'\x53\x59\x55\x59\x58\x57\x5a\x54\x5b\x50\x5b\x4d\x5a\x4b\x58'\ +b'\x0e\x4a\x5b\x52\x47\x52\x5b\x20\x52\x53\x47\x53\x5b\x52\x5b'\ +b'\x20\x52\x4c\x46\x59\x46\x59\x47\x20\x52\x4c\x46\x4c\x47\x59'\ +b'\x47\x17\x47\x5d\x4b\x46\x4b\x55\x4c\x58\x4e\x5a\x51\x5b\x53'\ +b'\x5b\x56\x5a\x58\x58\x59\x55\x59\x46\x20\x52\x4b\x46\x4c\x46'\ +b'\x4c\x55\x4d\x58\x4e\x59\x51\x5a\x53\x5a\x56\x59\x57\x58\x58'\ +b'\x55\x58\x46\x59\x46\x0d\x48\x5c\x4a\x46\x52\x5b\x20\x52\x4a'\ +b'\x46\x4b\x46\x52\x58\x20\x52\x5a\x46\x59\x46\x52\x58\x20\x52'\ +b'\x5a\x46\x52\x5b\x19\x45\x5f\x47\x46\x4d\x5b\x20\x52\x47\x46'\ +b'\x48\x46\x4d\x58\x20\x52\x52\x46\x4d\x58\x20\x52\x52\x49\x4d'\ +b'\x5b\x20\x52\x52\x49\x57\x5b\x20\x52\x52\x46\x57\x58\x20\x52'\ +b'\x5d\x46\x5c\x46\x57\x58\x20\x52\x5d\x46\x57\x5b\x0f\x48\x5c'\ +b'\x4b\x46\x58\x5b\x59\x5b\x20\x52\x4b\x46\x4c\x46\x59\x5b\x20'\ +b'\x52\x59\x46\x58\x46\x4b\x5b\x20\x52\x59\x46\x4c\x5b\x4b\x5b'\ +b'\x10\x49\x5c\x4b\x46\x52\x50\x52\x5b\x53\x5b\x20\x52\x4b\x46'\ +b'\x4c\x46\x53\x50\x20\x52\x5a\x46\x59\x46\x52\x50\x20\x52\x5a'\ +b'\x46\x53\x50\x53\x5b\x13\x48\x5c\x58\x46\x4b\x5b\x20\x52\x59'\ +b'\x46\x4c\x5b\x20\x52\x4b\x46\x59\x46\x20\x52\x4b\x46\x4b\x47'\ +b'\x58\x47\x20\x52\x4c\x5a\x59\x5a\x59\x5b\x20\x52\x4b\x5b\x59'\ +b'\x5b\x0b\x4b\x59\x4f\x42\x4f\x62\x20\x52\x50\x42\x50\x62\x20'\ +b'\x52\x4f\x42\x56\x42\x20\x52\x4f\x62\x56\x62\x02\x4b\x59\x4b'\ +b'\x46\x59\x5e\x0b\x4b\x59\x54\x42\x54\x62\x20\x52\x55\x42\x55'\ +b'\x62\x20\x52\x4e\x42\x55\x42\x20\x52\x4e\x62\x55\x62\x07\x47'\ +b'\x5d\x4a\x54\x52\x4f\x5a\x54\x20\x52\x4a\x54\x52\x50\x5a\x54'\ +b'\x02\x48\x5c\x48\x62\x5c\x62\x06\x4c\x58\x50\x46\x55\x4c\x20'\ +b'\x52\x50\x46\x4f\x47\x55\x4c\x23\x48\x5c\x57\x4d\x57\x5b\x58'\ +b'\x5b\x20\x52\x57\x4d\x58\x4d\x58\x5b\x20\x52\x57\x50\x55\x4e'\ +b'\x53\x4d\x50\x4d\x4e\x4e\x4c\x50\x4b\x53\x4b\x55\x4c\x58\x4e'\ +b'\x5a\x50\x5b\x53\x5b\x55\x5a\x57\x58\x20\x52\x57\x50\x53\x4e'\ +b'\x50\x4e\x4e\x4f\x4d\x50\x4c\x53\x4c\x55\x4d\x58\x4e\x59\x50'\ +b'\x5a\x53\x5a\x57\x58\x23\x48\x5c\x4c\x46\x4c\x5b\x4d\x5b\x20'\ +b'\x52\x4c\x46\x4d\x46\x4d\x5b\x20\x52\x4d\x50\x4f\x4e\x51\x4d'\ +b'\x54\x4d\x56\x4e\x58\x50\x59\x53\x59\x55\x58\x58\x56\x5a\x54'\ +b'\x5b\x51\x5b\x4f\x5a\x4d\x58\x20\x52\x4d\x50\x51\x4e\x54\x4e'\ +b'\x56\x4f\x57\x50\x58\x53\x58\x55\x57\x58\x56\x59\x54\x5a\x51'\ +b'\x5a\x4d\x58\x1f\x49\x5b\x58\x50\x56\x4e\x54\x4d\x51\x4d\x4f'\ +b'\x4e\x4d\x50\x4c\x53\x4c\x55\x4d\x58\x4f\x5a\x51\x5b\x54\x5b'\ +b'\x56\x5a\x58\x58\x20\x52\x58\x50\x57\x51\x56\x4f\x54\x4e\x51'\ +b'\x4e\x4f\x4f\x4e\x50\x4d\x53\x4d\x55\x4e\x58\x4f\x59\x51\x5a'\ +b'\x54\x5a\x56\x59\x57\x57\x58\x58\x23\x48\x5c\x57\x46\x57\x5b'\ +b'\x58\x5b\x20\x52\x57\x46\x58\x46\x58\x5b\x20\x52\x57\x50\x55'\ +b'\x4e\x53\x4d\x50\x4d\x4e\x4e\x4c\x50\x4b\x53\x4b\x55\x4c\x58'\ +b'\x4e\x5a\x50\x5b\x53\x5b\x55\x5a\x57\x58\x20\x52\x57\x50\x53'\ +b'\x4e\x50\x4e\x4e\x4f\x4d\x50\x4c\x53\x4c\x55\x4d\x58\x4e\x59'\ +b'\x50\x5a\x53\x5a\x57\x58\x23\x49\x5b\x4d\x54\x58\x54\x58\x51'\ +b'\x57\x4f\x56\x4e\x54\x4d\x51\x4d\x4f\x4e\x4d\x50\x4c\x53\x4c'\ +b'\x55\x4d\x58\x4f\x5a\x51\x5b\x54\x5b\x56\x5a\x58\x58\x20\x52'\ +b'\x4d\x53\x57\x53\x57\x51\x56\x4f\x54\x4e\x51\x4e\x4f\x4f\x4e'\ +b'\x50\x4d\x53\x4d\x55\x4e\x58\x4f\x59\x51\x5a\x54\x5a\x56\x59'\ +b'\x57\x57\x58\x58\x17\x4c\x5a\x57\x46\x55\x46\x53\x47\x52\x4a'\ +b'\x52\x5b\x53\x5b\x20\x52\x57\x46\x57\x47\x55\x47\x53\x48\x20'\ +b'\x52\x54\x47\x53\x4a\x53\x5b\x20\x52\x4f\x4d\x56\x4d\x56\x4e'\ +b'\x20\x52\x4f\x4d\x4f\x4e\x56\x4e\x2f\x48\x5c\x58\x4d\x57\x4d'\ +b'\x57\x5c\x56\x5f\x55\x60\x53\x61\x51\x61\x4f\x60\x4e\x5f\x4c'\ +b'\x5f\x20\x52\x58\x4d\x58\x5c\x57\x5f\x55\x61\x53\x62\x50\x62'\ +b'\x4e\x61\x4c\x5f\x20\x52\x57\x50\x55\x4e\x53\x4d\x50\x4d\x4e'\ +b'\x4e\x4c\x50\x4b\x53\x4b\x55\x4c\x58\x4e\x5a\x50\x5b\x53\x5b'\ +b'\x55\x5a\x57\x58\x20\x52\x57\x50\x53\x4e\x50\x4e\x4e\x4f\x4d'\ +b'\x50\x4c\x53\x4c\x55\x4d\x58\x4e\x59\x50\x5a\x53\x5a\x57\x58'\ +b'\x18\x48\x5c\x4c\x46\x4c\x5b\x4d\x5b\x20\x52\x4c\x46\x4d\x46'\ +b'\x4d\x5b\x20\x52\x4d\x51\x50\x4e\x52\x4d\x55\x4d\x57\x4e\x58'\ +b'\x51\x58\x5b\x20\x52\x4d\x51\x50\x4f\x52\x4e\x54\x4e\x56\x4f'\ +b'\x57\x51\x57\x5b\x58\x5b\x17\x4e\x57\x52\x46\x51\x47\x51\x48'\ +b'\x52\x49\x53\x49\x54\x48\x54\x47\x53\x46\x52\x46\x20\x52\x52'\ +b'\x47\x52\x48\x53\x48\x53\x47\x52\x47\x20\x52\x52\x4d\x52\x5b'\ +b'\x53\x5b\x20\x52\x52\x4d\x53\x4d\x53\x5b\x17\x4e\x57\x52\x46'\ +b'\x51\x47\x51\x48\x52\x49\x53\x49\x54\x48\x54\x47\x53\x46\x52'\ +b'\x46\x20\x52\x52\x47\x52\x48\x53\x48\x53\x47\x52\x47\x20\x52'\ +b'\x52\x4d\x52\x62\x53\x62\x20\x52\x52\x4d\x53\x4d\x53\x62\x15'\ +b'\x48\x5b\x4c\x46\x4c\x5b\x4d\x5b\x20\x52\x4c\x46\x4d\x46\x4d'\ +b'\x5b\x20\x52\x58\x4d\x57\x4d\x4d\x57\x20\x52\x58\x4d\x4d\x58'\ +b'\x20\x52\x50\x54\x56\x5b\x58\x5b\x20\x52\x51\x53\x58\x5b\x07'\ +b'\x4e\x57\x52\x46\x52\x5b\x53\x5b\x20\x52\x52\x46\x53\x46\x53'\ +b'\x5b\x29\x43\x62\x47\x4d\x47\x5b\x48\x5b\x20\x52\x47\x4d\x48'\ +b'\x4d\x48\x5b\x20\x52\x48\x51\x4b\x4e\x4d\x4d\x50\x4d\x52\x4e'\ +b'\x53\x51\x53\x5b\x20\x52\x48\x51\x4b\x4f\x4d\x4e\x4f\x4e\x51'\ +b'\x4f\x52\x51\x52\x5b\x53\x5b\x20\x52\x53\x51\x56\x4e\x58\x4d'\ +b'\x5b\x4d\x5d\x4e\x5e\x51\x5e\x5b\x20\x52\x53\x51\x56\x4f\x58'\ +b'\x4e\x5a\x4e\x5c\x4f\x5d\x51\x5d\x5b\x5e\x5b\x18\x48\x5c\x4c'\ +b'\x4d\x4c\x5b\x4d\x5b\x20\x52\x4c\x4d\x4d\x4d\x4d\x5b\x20\x52'\ +b'\x4d\x51\x50\x4e\x52\x4d\x55\x4d\x57\x4e\x58\x51\x58\x5b\x20'\ +b'\x52\x4d\x51\x50\x4f\x52\x4e\x54\x4e\x56\x4f\x57\x51\x57\x5b'\ +b'\x58\x5b\x23\x49\x5c\x51\x4d\x4f\x4e\x4d\x50\x4c\x53\x4c\x55'\ +b'\x4d\x58\x4f\x5a\x51\x5b\x54\x5b\x56\x5a\x58\x58\x59\x55\x59'\ +b'\x53\x58\x50\x56\x4e\x54\x4d\x51\x4d\x20\x52\x51\x4e\x4f\x4f'\ +b'\x4e\x50\x4d\x53\x4d\x55\x4e\x58\x4f\x59\x51\x5a\x54\x5a\x56'\ +b'\x59\x57\x58\x58\x55\x58\x53\x57\x50\x56\x4f\x54\x4e\x51\x4e'\ +b'\x23\x48\x5c\x4c\x4d\x4c\x62\x4d\x62\x20\x52\x4c\x4d\x4d\x4d'\ +b'\x4d\x62\x20\x52\x4d\x50\x4f\x4e\x51\x4d\x54\x4d\x56\x4e\x58'\ +b'\x50\x59\x53\x59\x55\x58\x58\x56\x5a\x54\x5b\x51\x5b\x4f\x5a'\ +b'\x4d\x58\x20\x52\x4d\x50\x51\x4e\x54\x4e\x56\x4f\x57\x50\x58'\ +b'\x53\x58\x55\x57\x58\x56\x59\x54\x5a\x51\x5a\x4d\x58\x23\x48'\ +b'\x5c\x57\x4d\x57\x62\x58\x62\x20\x52\x57\x4d\x58\x4d\x58\x62'\ +b'\x20\x52\x57\x50\x55\x4e\x53\x4d\x50\x4d\x4e\x4e\x4c\x50\x4b'\ +b'\x53\x4b\x55\x4c\x58\x4e\x5a\x50\x5b\x53\x5b\x55\x5a\x57\x58'\ +b'\x20\x52\x57\x50\x53\x4e\x50\x4e\x4e\x4f\x4d\x50\x4c\x53\x4c'\ +b'\x55\x4d\x58\x4e\x59\x50\x5a\x53\x5a\x57\x58\x14\x4b\x59\x4f'\ +b'\x4d\x4f\x5b\x50\x5b\x20\x52\x4f\x4d\x50\x4d\x50\x5b\x20\x52'\ +b'\x50\x53\x51\x50\x53\x4e\x55\x4d\x58\x4d\x20\x52\x50\x53\x51'\ +b'\x51\x53\x4f\x55\x4e\x58\x4e\x58\x4d\x31\x4a\x5b\x58\x50\x57'\ +b'\x4e\x54\x4d\x51\x4d\x4e\x4e\x4d\x50\x4e\x52\x50\x53\x55\x55'\ +b'\x57\x56\x20\x52\x56\x55\x57\x57\x57\x58\x56\x5a\x20\x52\x57'\ +b'\x59\x54\x5a\x51\x5a\x4e\x59\x20\x52\x4f\x5a\x4e\x58\x4d\x58'\ +b'\x20\x52\x58\x50\x57\x50\x56\x4e\x20\x52\x57\x4f\x54\x4e\x51'\ +b'\x4e\x4e\x4f\x20\x52\x4f\x4e\x4e\x50\x4f\x52\x20\x52\x4e\x51'\ +b'\x50\x52\x55\x54\x57\x55\x58\x57\x58\x58\x57\x5a\x54\x5b\x51'\ +b'\x5b\x4e\x5a\x4d\x58\x0f\x4d\x58\x52\x46\x52\x5b\x53\x5b\x20'\ +b'\x52\x52\x46\x53\x46\x53\x5b\x20\x52\x4f\x4d\x56\x4d\x56\x4e'\ +b'\x20\x52\x4f\x4d\x4f\x4e\x56\x4e\x18\x48\x5c\x4c\x4d\x4c\x57'\ +b'\x4d\x5a\x4f\x5b\x52\x5b\x54\x5a\x57\x57\x20\x52\x4c\x4d\x4d'\ +b'\x4d\x4d\x57\x4e\x59\x50\x5a\x52\x5a\x54\x59\x57\x57\x20\x52'\ +b'\x57\x4d\x57\x5b\x58\x5b\x20\x52\x57\x4d\x58\x4d\x58\x5b\x0d'\ +b'\x4a\x5a\x4c\x4d\x52\x5b\x20\x52\x4c\x4d\x4d\x4d\x52\x59\x20'\ +b'\x52\x58\x4d\x57\x4d\x52\x59\x20\x52\x58\x4d\x52\x5b\x19\x46'\ +b'\x5e\x49\x4d\x4e\x5b\x20\x52\x49\x4d\x4a\x4d\x4e\x58\x20\x52'\ +b'\x52\x4d\x4e\x58\x20\x52\x52\x50\x4e\x5b\x20\x52\x52\x50\x56'\ +b'\x5b\x20\x52\x52\x4d\x56\x58\x20\x52\x5b\x4d\x5a\x4d\x56\x58'\ +b'\x20\x52\x5b\x4d\x56\x5b\x0f\x49\x5b\x4c\x4d\x57\x5b\x58\x5b'\ +b'\x20\x52\x4c\x4d\x4d\x4d\x58\x5b\x20\x52\x58\x4d\x57\x4d\x4c'\ +b'\x5b\x20\x52\x58\x4d\x4d\x5b\x4c\x5b\x10\x4a\x5a\x4c\x4d\x52'\ +b'\x5b\x20\x52\x4c\x4d\x4d\x4d\x52\x59\x20\x52\x58\x4d\x57\x4d'\ +b'\x52\x59\x4e\x62\x20\x52\x58\x4d\x52\x5b\x4f\x62\x4e\x62\x13'\ +b'\x49\x5b\x56\x4e\x4c\x5b\x20\x52\x58\x4d\x4e\x5a\x20\x52\x4c'\ +b'\x4d\x58\x4d\x20\x52\x4c\x4d\x4c\x4e\x56\x4e\x20\x52\x4e\x5a'\ +b'\x58\x5a\x58\x5b\x20\x52\x4c\x5b\x58\x5b\x03\x4b\x59\x55\x42'\ +b'\x4e\x52\x55\x62\x02\x4e\x56\x52\x42\x52\x62\x03\x4b\x59\x4f'\ +b'\x42\x56\x52\x4f\x62\x17\x46\x5e\x49\x55\x49\x53\x4a\x50\x4c'\ +b'\x4f\x4e\x4f\x50\x50\x54\x53\x56\x54\x58\x54\x5a\x53\x5b\x51'\ +b'\x20\x52\x49\x53\x4a\x51\x4c\x50\x4e\x50\x50\x51\x54\x54\x56'\ +b'\x55\x58\x55\x5a\x54\x5b\x51\x5b\x4f\x22\x4a\x5a\x4a\x46\x4a'\ +b'\x5b\x4b\x5b\x4b\x46\x4c\x46\x4c\x5b\x4d\x5b\x4d\x46\x4e\x46'\ +b'\x4e\x5b\x4f\x5b\x4f\x46\x50\x46\x50\x5b\x51\x5b\x51\x46\x52'\ +b'\x46\x52\x5b\x53\x5b\x53\x46\x54\x46\x54\x5b\x55\x5b\x55\x46'\ +b'\x56\x46\x56\x5b\x57\x5b\x57\x46\x58\x46\x58\x5b\x59\x5b\x59'\ +b'\x46\x5a\x46\x5a\x5b' + +_index =\ +b'\x00\x00\x03\x00\x34\x00\x61\x00\x7a\x00\xe1\x00\x22\x01\x85'\ +b'\x01\x9c\x01\xc5\x01\xee\x01\x3d\x02\x5e\x02\x8f\x02\x96\x02'\ +b'\xb7\x02\xc8\x02\x1d\x03\x36\x03\x7b\x03\xdc\x03\x01\x04\x6c'\ +b'\x04\xe9\x04\x02\x05\x8b\x05\x08\x06\x49\x06\x9a\x06\xa3\x06'\ +b'\xc4\x06\xcd\x06\x42\x07\xb3\x07\xdc\x07\x35\x08\x82\x08\xc3'\ +b'\x08\xfa\x08\x25\x09\x7e\x09\xab\x09\xbc\x09\xe5\x09\x12\x0a'\ +b'\x2f\x0a\x64\x0a\x8d\x0a\xde\x0a\x15\x0b\x76\x0b\xbb\x0b\x12'\ +b'\x0c\x31\x0c\x62\x0c\x7f\x0c\xb4\x0c\xd5\x0c\xf8\x0c\x21\x0d'\ +b'\x3a\x0d\x41\x0d\x5a\x0d\x6b\x0d\x72\x0d\x81\x0d\xca\x0d\x13'\ +b'\x0e\x54\x0e\x9d\x0e\xe6\x0e\x17\x0f\x78\x0f\xab\x0f\xdc\x0f'\ +b'\x0d\x10\x3a\x10\x4b\x10\xa0\x10\xd3\x10\x1c\x11\x65\x11\xae'\ +b'\x11\xd9\x11\x3e\x12\x5f\x12\x92\x12\xaf\x12\xe4\x12\x05\x13'\ +b'\x28\x13\x51\x13\x5a\x13\x61\x13\x6a\x13\x9b\x13' + +INDEX = memoryview(_index) +FONT = memoryview(_font) diff --git a/utils/assets/pyfont/vga1_16x32.py b/utils/assets/pyfont/vga1_16x32.py new file mode 100644 index 0000000..849069d --- /dev/null +++ b/utils/assets/pyfont/vga1_16x32.py @@ -0,0 +1,104 @@ +WIDTH = 16 +HEIGHT = 32 +FIRST = 0x20 +LAST = 0x7f +_FONT = \ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x00\x00\x00\x00\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x7f\xfe\x7f\xfe\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x7f\xfe\x7f\xfe\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x01\x80\x01\x80\x0f\xf0\x0f\xf0\x39\x9c\x39\x9c\x71\x8e\x71\x8e\x71\x80\x71\x80\x39\x80\x39\x80\x0f\xf0\x0f\xf0\x01\x9c\x01\x9c\x01\x8e\x01\x8e\x71\x8e\x71\x8e\x39\x9c\x39\x9c\x0f\xf0\x0f\xf0\x01\x80\x01\x80\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x1c\x1e\x1c\x1e\x38\x1e\x38\x00\x70\x00\x70\x00\xe0\x00\xe0\x01\xc0\x01\xc0\x03\x80\x03\x80\x07\x00\x07\x00\x0e\x3c\x0e\x3c\x1c\x3c\x1c\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\xc0\x07\xc0\x1c\x70\x1c\x70\x38\x38\x38\x38\x1c\x70\x1c\x70\x07\xc0\x07\xc0\x0f\xce\x0f\xce\x38\xfc\x38\xfc\x70\x78\x70\x78\x70\x78\x70\x78\x38\xfc\x38\xfc\x0f\xce\x0f\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\xe0\x00\xe0\x01\xc0\x01\xc0\x03\x80\x03\x80\x07\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\xe0\x01\xc0\x01\xc0\x03\x80\x03\x80\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x03\x80\x03\x80\x01\xc0\x01\xc0\x00\xe0\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x07\x00\x03\x80\x03\x80\x01\xc0\x01\xc0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x00\xe0\x01\xc0\x01\xc0\x03\x80\x03\x80\x07\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x38\x0e\x38\x03\xe0\x03\xe0\x3f\xfe\x3f\xfe\x03\xe0\x03\xe0\x0e\x38\x0e\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x3f\xfe\x3f\xfe\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\xc0\x03\xc0\x03\xc0\x03\xc0\x03\x80\x03\x80\x07\x00\x07\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xfe\x3f\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\xc0\x03\xc0\x03\xc0\x03\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1c\x00\x38\x00\x38\x00\x70\x00\x70\x00\xe0\x00\xe0\x01\xc0\x01\xc0\x03\x80\x03\x80\x07\x00\x07\x00\x0e\x00\x0e\x00\x1c\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\xe0\x07\xe0\x1c\x38\x1c\x38\x38\x3c\x38\x3c\x38\x7c\x38\x7c\x38\xdc\x38\xdc\x39\x9c\x39\x9c\x3b\x1c\x3b\x1c\x3e\x1c\x3e\x1c\x3c\x1c\x3c\x1c\x1c\x38\x1c\x38\x07\xe0\x07\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x01\xc0\x01\xc0\x03\xc0\x03\xc0\x0f\xc0\x0f\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x0f\xf0\x0f\xf0\x38\x1c\x38\x1c\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x1c\x00\x1c\x00\x70\x00\x70\x01\xc0\x01\xc0\x07\x00\x07\x00\x1c\x00\x1c\x00\x38\x00\x38\x00\x3f\xfe\x3f\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x0f\xf0\x0f\xf0\x38\x1c\x38\x1c\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x1c\x00\x1c\x01\xf0\x01\xf0\x00\x1c\x00\x1c\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x38\x1c\x38\x1c\x0f\xf0\x0f\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x01\xf0\x01\xf0\x03\xf0\x03\xf0\x07\x70\x07\x70\x0e\x70\x0e\x70\x1c\x70\x1c\x70\x38\x70\x38\x70\x3f\xfc\x3f\xfc\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xfe\x3f\xfe\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x3f\xf0\x3f\xf0\x00\x1c\x00\x1c\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x38\x1c\x38\x1c\x0f\xf0\x0f\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\xf0\x07\xf0\x1c\x00\x1c\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x3f\xf0\x3f\xf0\x38\x1c\x38\x1c\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x1c\x1c\x1c\x1c\x07\xf0\x07\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xf8\x3f\xf8\x00\x38\x00\x38\x00\x38\x00\x38\x00\x70\x00\x70\x00\xe0\x00\xe0\x01\xc0\x01\xc0\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\xf0\x07\xf0\x1c\x1c\x1c\x1c\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x1c\x1c\x1c\x1c\x07\xf0\x07\xf0\x1c\x1c\x1c\x1c\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x1c\x1c\x1c\x1c\x07\xf0\x07\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\xf0\x07\xf0\x1c\x1c\x1c\x1c\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x1c\x0e\x1c\x0e\x07\xfe\x07\xfe\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x1c\x00\x1c\x0f\xf0\x0f\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x80\x03\x80\x03\x80\x03\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x80\x03\x80\x03\x80\x03\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x80\x03\x80\x03\x80\x03\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x80\x03\x80\x03\x80\x03\x80\x07\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\xe0\x01\xc0\x01\xc0\x03\x80\x03\x80\x07\x00\x07\x00\x0e\x00\x0e\x00\x1c\x00\x1c\x00\x0e\x00\x0e\x00\x07\x00\x07\x00\x03\x80\x03\x80\x01\xc0\x01\xc0\x00\xe0\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xfc\x3f\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xfc\x3f\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x07\x00\x03\x80\x03\x80\x01\xc0\x01\xc0\x00\xe0\x00\xe0\x00\x70\x00\x70\x00\x38\x00\x38\x00\x70\x00\x70\x00\xe0\x00\xe0\x01\xc0\x01\xc0\x03\x80\x03\x80\x07\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\xe0\x07\xe0\x1c\x38\x1c\x38\x38\x1c\x38\x1c\x00\x38\x00\x38\x00\x70\x00\x70\x00\xe0\x00\xe0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x00\x00\x00\x00\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x0f\xf0\x0f\xf0\x38\x1c\x38\x1c\x70\x0e\x70\x0e\x71\xfe\x71\xfe\x73\x8e\x73\x8e\x73\x8e\x73\x8e\x73\x8e\x73\x8e\x71\xfc\x71\xfc\x70\x00\x70\x00\x38\x00\x38\x00\x0f\xfc\x0f\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x03\xc0\x03\xc0\x07\xe0\x07\xe0\x0e\x70\x0e\x70\x1c\x38\x1c\x38\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x3f\xfc\x3f\xfc\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xf0\x3f\xf0\x38\x1c\x38\x1c\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x1c\x38\x1c\x3f\xf0\x3f\xf0\x38\x1c\x38\x1c\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x1c\x38\x1c\x3f\xf0\x3f\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\xf0\x07\xf0\x1c\x1c\x1c\x1c\x38\x0e\x38\x0e\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x0e\x38\x0e\x1c\x1c\x1c\x1c\x07\xf0\x07\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xf0\x3f\xf0\x38\x1c\x38\x1c\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x1c\x38\x1c\x3f\xf0\x3f\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xfc\x3f\xfc\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x3f\xe0\x3f\xe0\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x3f\xfc\x3f\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xfc\x3f\xfc\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x3f\xe0\x3f\xe0\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\xf0\x07\xf0\x1c\x1c\x1c\x1c\x38\x0e\x38\x0e\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x3e\x38\x3e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x1c\x1c\x1c\x1c\x07\xf0\x07\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x3f\xfe\x3f\xfe\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x1c\x1c\x1c\x1c\x0e\x38\x0e\x38\x03\xe0\x03\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x38\x1c\x38\x1c\x70\x1c\x70\x1c\xe0\x1c\xe0\x1d\xc0\x1d\xc0\x1f\x80\x1f\x80\x1f\x80\x1f\x80\x1d\xc0\x1d\xc0\x1c\xe0\x1c\xe0\x1c\x70\x1c\x70\x1c\x38\x1c\x38\x1c\x1c\x1c\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x3f\xfc\x3f\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x78\x1e\x78\x1e\x7c\x3e\x7c\x3e\x7e\x7e\x7e\x7e\x77\xee\x77\xee\x73\xce\x73\xce\x71\x8e\x71\x8e\x70\x0e\x70\x0e\x70\x0e\x70\x0e\x70\x0e\x70\x0e\x70\x0e\x70\x0e\x70\x0e\x70\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x38\x0e\x38\x0e\x3c\x0e\x3c\x0e\x3e\x0e\x3e\x0e\x3f\x0e\x3f\x0e\x3b\x8e\x3b\x8e\x39\xce\x39\xce\x38\xee\x38\xee\x38\x7e\x38\x7e\x38\x3e\x38\x3e\x38\x1e\x38\x1e\x38\x0e\x38\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\xf0\x07\xf0\x1c\x1c\x1c\x1c\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x1c\x1c\x1c\x1c\x07\xf0\x07\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xf0\x3f\xf0\x38\x1c\x38\x1c\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x1c\x38\x1c\x3f\xf0\x3f\xf0\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\xf0\x07\xf0\x1c\x1c\x1c\x1c\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\xee\x38\xee\x1c\x7c\x1c\x7c\x07\xf8\x07\xf8\x00\x1c\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xf0\x3f\xf0\x38\x1c\x38\x1c\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x1c\x38\x1c\x3f\xf0\x3f\xf0\x38\xe0\x38\xe0\x38\x70\x38\x70\x38\x38\x38\x38\x38\x1c\x38\x1c\x38\x0e\x38\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x0f\xf0\x0f\xf0\x38\x1c\x38\x1c\x70\x0e\x70\x0e\x70\x00\x70\x00\x38\x00\x38\x00\x0f\xf0\x0f\xf0\x00\x1c\x00\x1c\x00\x0e\x00\x0e\x70\x0e\x70\x0e\x38\x1c\x38\x1c\x0f\xf0\x0f\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xfe\x3f\xfe\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x1c\x1c\x1c\x1c\x07\xf0\x07\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x1c\x38\x1c\x38\x0e\x70\x0e\x70\x07\xe0\x07\xe0\x03\xc0\x03\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x70\x0e\x70\x0e\x70\x0e\x70\x0e\x70\x0e\x70\x0e\x70\x0e\x70\x0e\x70\x0e\x70\x0e\x70\x0e\x70\x0e\x71\x8e\x71\x8e\x73\xce\x73\xce\x77\xee\x77\xee\x3e\x7c\x3e\x7c\x1c\x38\x1c\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x1c\x38\x1c\x38\x0e\x70\x0e\x70\x07\xe0\x07\xe0\x03\xc0\x03\xc0\x07\xe0\x07\xe0\x0e\x70\x0e\x70\x1c\x38\x1c\x38\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x38\x0e\x38\x0e\x1c\x1c\x1c\x1c\x0e\x38\x0e\x38\x07\x70\x07\x70\x03\xe0\x03\xe0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xfe\x3f\xfe\x00\x1c\x00\x1c\x00\x38\x00\x38\x00\x70\x00\x70\x00\xe0\x00\xe0\x01\xc0\x01\xc0\x03\x80\x03\x80\x07\x00\x07\x00\x0e\x00\x0e\x00\x1c\x00\x1c\x00\x3f\xfe\x3f\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\xf0\x07\xf0\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\xf0\x07\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1c\x00\x0e\x00\x0e\x00\x07\x00\x07\x00\x03\x80\x03\x80\x01\xc0\x01\xc0\x00\xe0\x00\xe0\x00\x70\x00\x70\x00\x38\x00\x38\x00\x1c\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\xf0\x07\xf0\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x07\xf0\x07\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x03\xc0\x03\xc0\x07\xe0\x07\xe0\x0e\x70\x0e\x70\x1c\x38\x1c\x38\x38\x1c\x38\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x07\x00\x07\x00\x03\x80\x03\x80\x01\xc0\x01\xc0\x00\xe0\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\xf8\x0f\xf8\x00\x0e\x00\x0e\x0f\xfe\x0f\xfe\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x0f\xfe\x0f\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x3f\xf0\x3f\xf0\x38\x1c\x38\x1c\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x3f\xf8\x3f\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\xf8\x0f\xf8\x38\x0e\x38\x0e\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x0e\x38\x0e\x0f\xf8\x0f\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x07\xfe\x07\xfe\x1c\x0e\x1c\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x0f\xfe\x0f\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\xf8\x0f\xf8\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x3f\xfe\x3f\xfe\x38\x00\x38\x00\x38\x00\x38\x00\x0f\xfc\x0f\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x00\xf8\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x0f\xf0\x0f\xf0\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\xf8\x0f\xf8\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x0f\xfe\x0f\xfe\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x1f\xf8\x1f\xf8\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x3b\xf8\x3b\xf8\x3c\x0e\x3c\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x00\x00\x00\x00\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\x70\x00\x70\x00\x70\x00\x00\x00\x00\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\x70\x00\xe0\x00\xe0\x0f\x80\x0f\x80\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x38\x0e\x38\x0e\x70\x0e\x70\x0e\xe0\x0e\xe0\x0f\xc0\x0f\xc0\x0e\xe0\x0e\xe0\x0e\x70\x0e\x70\x0e\x38\x0e\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x78\x3e\x78\x39\xce\x39\xce\x39\xce\x39\xce\x39\xce\x39\xce\x39\xce\x39\xce\x39\xce\x39\xce\x39\xce\x39\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xe0\x3f\xe0\x38\x38\x38\x38\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\xf0\x07\xf0\x1c\x1c\x1c\x1c\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x1c\x1c\x1c\x1c\x07\xf0\x07\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xf0\x3f\xf0\x38\x1c\x38\x1c\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x1c\x38\x1c\x3f\xf0\x3f\xf0\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\xfe\x07\xfe\x1c\x0e\x1c\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x1c\x0e\x1c\x0e\x07\xfe\x07\xfe\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xf0\x3f\xf0\x38\x1c\x38\x1c\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\xfc\x0f\xfc\x38\x00\x38\x00\x38\x00\x38\x00\x0f\xf8\x0f\xf8\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x1f\xf8\x1f\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x1f\xfc\x1f\xfc\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x38\x1c\x0f\xfc\x0f\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x0e\x70\x0e\x38\x1c\x38\x1c\x1c\x38\x1c\x38\x0e\x70\x0e\x70\x07\xe0\x07\xe0\x03\xc0\x03\xc0\x01\x80\x01\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x38\x0e\x39\xce\x39\xce\x3b\xee\x3b\xee\x1f\x7c\x1f\x7c\x0e\x38\x0e\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x38\x1c\x38\x0e\x70\x0e\x70\x07\xe0\x07\xe0\x03\xc0\x03\xc0\x07\xe0\x07\xe0\x0e\x70\x0e\x70\x1c\x38\x1c\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x0e\x38\x0e\x1c\x1c\x1c\x1c\x0e\x38\x0e\x38\x07\x70\x07\x70\x03\xe0\x03\xe0\x01\xc0\x01\xc0\x03\x80\x03\x80\x07\x00\x07\x00\x0e\x00\x0e\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xfe\x3f\xfe\x00\x1c\x00\x1c\x00\x70\x00\x70\x01\xc0\x01\xc0\x07\x00\x07\x00\x1c\x00\x1c\x00\x3f\xfe\x3f\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x00\xf8\x01\xc0\x01\xc0\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x1e\x00\x1e\x00\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x01\xc0\x01\xc0\x00\xf8\x00\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x00\x00\x00\x00\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x1f\x00\x03\x80\x03\x80\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x00\x78\x00\x78\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x01\xc0\x03\x80\x03\x80\x1f\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\x9e\x07\x9e\x3c\xf0\x3c\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xc0\x01\xc0\x07\x70\x07\x70\x1c\x1c\x1c\x1c\x70\x07\x70\x07\x70\x07\x70\x07\x7f\xff\x7f\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ + +FONT = memoryview(_FONT) + diff --git a/utils/assets/pyfont/vga1_8x16.py b/utils/assets/pyfont/vga1_8x16.py new file mode 100644 index 0000000..73ca5ae --- /dev/null +++ b/utils/assets/pyfont/vga1_8x16.py @@ -0,0 +1,104 @@ +"""converted from vga_8x16.bin """ +WIDTH = 8 +HEIGHT = 16 +FIRST = 0x20 +LAST = 0x7f +_FONT =\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x18\x3c\x3c\x3c\x18\x18\x18\x00\x18\x18\x00\x00\x00\x00'\ +b'\x00\x66\x66\x66\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x6c\x6c\xfe\x6c\x6c\x6c\xfe\x6c\x6c\x00\x00\x00\x00'\ +b'\x18\x18\x7c\xc6\xc2\xc0\x7c\x06\x06\x86\xc6\x7c\x18\x18\x00\x00'\ +b'\x00\x00\x00\x00\xc2\xc6\x0c\x18\x30\x60\xc6\x86\x00\x00\x00\x00'\ +b'\x00\x00\x38\x6c\x6c\x38\x76\xdc\xcc\xcc\xcc\x76\x00\x00\x00\x00'\ +b'\x00\x30\x30\x30\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x0c\x18\x30\x30\x30\x30\x30\x30\x18\x0c\x00\x00\x00\x00'\ +b'\x00\x00\x30\x18\x0c\x0c\x0c\x0c\x0c\x0c\x18\x30\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x66\x3c\xff\x3c\x66\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x18\x18\x7e\x18\x18\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x18\x18\x30\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\xfe\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x18\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x02\x06\x0c\x18\x30\x60\xc0\x80\x00\x00\x00\x00'\ +b'\x00\x00\x38\x6c\xc6\xc6\xd6\xd6\xc6\xc6\x6c\x38\x00\x00\x00\x00'\ +b'\x00\x00\x18\x38\x78\x18\x18\x18\x18\x18\x18\x7e\x00\x00\x00\x00'\ +b'\x00\x00\x7c\xc6\x06\x0c\x18\x30\x60\xc0\xc6\xfe\x00\x00\x00\x00'\ +b'\x00\x00\x7c\xc6\x06\x06\x3c\x06\x06\x06\xc6\x7c\x00\x00\x00\x00'\ +b'\x00\x00\x0c\x1c\x3c\x6c\xcc\xfe\x0c\x0c\x0c\x1e\x00\x00\x00\x00'\ +b'\x00\x00\xfe\xc0\xc0\xc0\xfc\x06\x06\x06\xc6\x7c\x00\x00\x00\x00'\ +b'\x00\x00\x38\x60\xc0\xc0\xfc\xc6\xc6\xc6\xc6\x7c\x00\x00\x00\x00'\ +b'\x00\x00\xfe\xc6\x06\x06\x0c\x18\x30\x30\x30\x30\x00\x00\x00\x00'\ +b'\x00\x00\x7c\xc6\xc6\xc6\x7c\xc6\xc6\xc6\xc6\x7c\x00\x00\x00\x00'\ +b'\x00\x00\x7c\xc6\xc6\xc6\x7e\x06\x06\x06\x0c\x78\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x18\x18\x00\x00\x00\x18\x18\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x18\x18\x00\x00\x00\x18\x18\x30\x00\x00\x00\x00'\ +b'\x00\x00\x00\x06\x0c\x18\x30\x60\x30\x18\x0c\x06\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x7e\x00\x00\x7e\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x60\x30\x18\x0c\x06\x0c\x18\x30\x60\x00\x00\x00\x00'\ +b'\x00\x00\x7c\xc6\xc6\x0c\x18\x18\x18\x00\x18\x18\x00\x00\x00\x00'\ +b'\x00\x00\x00\x7c\xc6\xc6\xde\xde\xde\xdc\xc0\x7c\x00\x00\x00\x00'\ +b'\x00\x00\x10\x38\x6c\xc6\xc6\xfe\xc6\xc6\xc6\xc6\x00\x00\x00\x00'\ +b'\x00\x00\xfc\x66\x66\x66\x7c\x66\x66\x66\x66\xfc\x00\x00\x00\x00'\ +b'\x00\x00\x3c\x66\xc2\xc0\xc0\xc0\xc0\xc2\x66\x3c\x00\x00\x00\x00'\ +b'\x00\x00\xf8\x6c\x66\x66\x66\x66\x66\x66\x6c\xf8\x00\x00\x00\x00'\ +b'\x00\x00\xfe\x66\x62\x68\x78\x68\x60\x62\x66\xfe\x00\x00\x00\x00'\ +b'\x00\x00\xfe\x66\x62\x68\x78\x68\x60\x60\x60\xf0\x00\x00\x00\x00'\ +b'\x00\x00\x3c\x66\xc2\xc0\xc0\xde\xc6\xc6\x66\x3a\x00\x00\x00\x00'\ +b'\x00\x00\xc6\xc6\xc6\xc6\xfe\xc6\xc6\xc6\xc6\xc6\x00\x00\x00\x00'\ +b'\x00\x00\x3c\x18\x18\x18\x18\x18\x18\x18\x18\x3c\x00\x00\x00\x00'\ +b'\x00\x00\x1e\x0c\x0c\x0c\x0c\x0c\xcc\xcc\xcc\x78\x00\x00\x00\x00'\ +b'\x00\x00\xe6\x66\x66\x6c\x78\x78\x6c\x66\x66\xe6\x00\x00\x00\x00'\ +b'\x00\x00\xf0\x60\x60\x60\x60\x60\x60\x62\x66\xfe\x00\x00\x00\x00'\ +b'\x00\x00\xc6\xee\xfe\xfe\xd6\xc6\xc6\xc6\xc6\xc6\x00\x00\x00\x00'\ +b'\x00\x00\xc6\xe6\xf6\xfe\xde\xce\xc6\xc6\xc6\xc6\x00\x00\x00\x00'\ +b'\x00\x00\x7c\xc6\xc6\xc6\xc6\xc6\xc6\xc6\xc6\x7c\x00\x00\x00\x00'\ +b'\x00\x00\xfc\x66\x66\x66\x7c\x60\x60\x60\x60\xf0\x00\x00\x00\x00'\ +b'\x00\x00\x7c\xc6\xc6\xc6\xc6\xc6\xc6\xd6\xde\x7c\x0c\x0e\x00\x00'\ +b'\x00\x00\xfc\x66\x66\x66\x7c\x6c\x66\x66\x66\xe6\x00\x00\x00\x00'\ +b'\x00\x00\x7c\xc6\xc6\x60\x38\x0c\x06\xc6\xc6\x7c\x00\x00\x00\x00'\ +b'\x00\x00\x7e\x7e\x5a\x18\x18\x18\x18\x18\x18\x3c\x00\x00\x00\x00'\ +b'\x00\x00\xc6\xc6\xc6\xc6\xc6\xc6\xc6\xc6\xc6\x7c\x00\x00\x00\x00'\ +b'\x00\x00\xc6\xc6\xc6\xc6\xc6\xc6\xc6\x6c\x38\x10\x00\x00\x00\x00'\ +b'\x00\x00\xc6\xc6\xc6\xc6\xd6\xd6\xd6\xfe\xee\x6c\x00\x00\x00\x00'\ +b'\x00\x00\xc6\xc6\x6c\x7c\x38\x38\x7c\x6c\xc6\xc6\x00\x00\x00\x00'\ +b'\x00\x00\x66\x66\x66\x66\x3c\x18\x18\x18\x18\x3c\x00\x00\x00\x00'\ +b'\x00\x00\xfe\xc6\x86\x0c\x18\x30\x60\xc2\xc6\xfe\x00\x00\x00\x00'\ +b'\x00\x00\x3c\x30\x30\x30\x30\x30\x30\x30\x30\x3c\x00\x00\x00\x00'\ +b'\x00\x00\x00\x80\xc0\xe0\x70\x38\x1c\x0e\x06\x02\x00\x00\x00\x00'\ +b'\x00\x00\x3c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x3c\x00\x00\x00\x00'\ +b'\x10\x38\x6c\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00'\ +b'\x00\x30\x18\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x78\x0c\x7c\xcc\xcc\xcc\x76\x00\x00\x00\x00'\ +b'\x00\x00\xe0\x60\x60\x78\x6c\x66\x66\x66\x66\x7c\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x7c\xc6\xc0\xc0\xc0\xc6\x7c\x00\x00\x00\x00'\ +b'\x00\x00\x1c\x0c\x0c\x3c\x6c\xcc\xcc\xcc\xcc\x76\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x7c\xc6\xfe\xc0\xc0\xc6\x7c\x00\x00\x00\x00'\ +b'\x00\x00\x1c\x36\x32\x30\x78\x30\x30\x30\x30\x78\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x76\xcc\xcc\xcc\xcc\xcc\x7c\x0c\xcc\x78\x00'\ +b'\x00\x00\xe0\x60\x60\x6c\x76\x66\x66\x66\x66\xe6\x00\x00\x00\x00'\ +b'\x00\x00\x18\x18\x00\x38\x18\x18\x18\x18\x18\x3c\x00\x00\x00\x00'\ +b'\x00\x00\x06\x06\x00\x0e\x06\x06\x06\x06\x06\x06\x66\x66\x3c\x00'\ +b'\x00\x00\xe0\x60\x60\x66\x6c\x78\x78\x6c\x66\xe6\x00\x00\x00\x00'\ +b'\x00\x00\x38\x18\x18\x18\x18\x18\x18\x18\x18\x3c\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\xec\xfe\xd6\xd6\xd6\xd6\xc6\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\xdc\x66\x66\x66\x66\x66\x66\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x7c\xc6\xc6\xc6\xc6\xc6\x7c\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\xdc\x66\x66\x66\x66\x66\x7c\x60\x60\xf0\x00'\ +b'\x00\x00\x00\x00\x00\x76\xcc\xcc\xcc\xcc\xcc\x7c\x0c\x0c\x1e\x00'\ +b'\x00\x00\x00\x00\x00\xdc\x76\x66\x60\x60\x60\xf0\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\x7c\xc6\x60\x38\x0c\xc6\x7c\x00\x00\x00\x00'\ +b'\x00\x00\x10\x30\x30\xfc\x30\x30\x30\x30\x36\x1c\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\xcc\xcc\xcc\xcc\xcc\xcc\x76\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\xc6\xc6\xc6\xc6\xc6\x6c\x38\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\xc6\xc6\xd6\xd6\xd6\xfe\x6c\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\xc6\x6c\x38\x38\x38\x6c\xc6\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x00\xc6\xc6\xc6\xc6\xc6\xc6\x7e\x06\x0c\xf8\x00'\ +b'\x00\x00\x00\x00\x00\xfe\xcc\x18\x30\x60\xc6\xfe\x00\x00\x00\x00'\ +b'\x00\x00\x0e\x18\x18\x18\x70\x18\x18\x18\x18\x0e\x00\x00\x00\x00'\ +b'\x00\x00\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x00\x00\x00\x00'\ +b'\x00\x00\x70\x18\x18\x18\x0e\x18\x18\x18\x18\x70\x00\x00\x00\x00'\ +b'\x00\x76\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\ +b'\x00\x00\x00\x00\x10\x38\x6c\xc6\xc6\xc6\xfe\x00\x00\x00\x00\x00'\ + +FONT = memoryview(_FONT) diff --git a/utils/convert_assets.sh b/utils/convert_assets.sh index 9614e2a..7aaebc9 100755 --- a/utils/convert_assets.sh +++ b/utils/convert_assets.sh @@ -1,49 +1,60 @@ #!/bin/bash # -*- coding: utf-8 -*- -CN_TEXT='天气北京市区邹城怀柔呼和浩特月日星期一二三四五六七八九十腊冬晴多云转雷雨雪雾霾风南东西级末优良中差污恶能见度配置设备网络连接热点自动进入页面0123456789 abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ!%*+,-./()[]\"<>=?℃' +# switch to local path +cd "$(dirname "$0")" || exit 1 + TIME_TEXT='0123456789: .-' +CN_TEXT='!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~' +CN_TEXT="${CN_TEXT} '℃,。()" +CN_TEXT="${CN_TEXT}0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + SRC_DIR=./assets DST_DIR=../src/rom/fonts -README=$DST_DIR/README.md +README="$DST_DIR/README.md" # 中文黑体源字体 -CN_OTF_FONT=$SRC_DIR/STHeiti.ttc +CN_OTF_FONT="$SRC_DIR/fonts/STHeiti.ttc" # 英文时间源字体 -TIME_OTF_FONT=$SRC_DIR/BloodWaxItalic.otf +TIME_OTF_FONT="$SRC_DIR/fonts/BloodWaxItalic.otf" -echo "# 字体文件说明" > $README -echo "" >>$README +# 追加中文常用汉字列表 +CN_TEXT="${CN_TEXT}$(< $SRC_DIR/cn-words.txt)" -echo "1. en0.rfont/en1.rfont 英文字体" >> $README -echo "> 顺序排列,相等大小、可快速定位" >> $README -echo "" >>$README -python3 pyfont_to_bin.py $SRC_DIR/vga1_8x16.py $DST_DIR/en0.rfont -python3 pyfont_to_bin.py $SRC_DIR/vga1_16x32.py $DST_DIR/en1.rfont +echo "# 字体文件说明" > "$README" +echo "" >>"$README" -echo "2. en.hfont 矢量英文字体" >> $README -echo "> 顺序排列,带索引表,只画线无背景色,可自由缩放,显示速度快" >> $README -echo "" >>$README -python3 pyfont_to_bin.py $SRC_DIR/romand.py $DST_DIR/en.hfont +echo "1. en0.rfont/en1.rfont 英文字体" >> "$README" +echo "> 顺序排列,相等大小、可快速定位" >> "$README" +echo "" >>"$README" +python3 pyfont_to_bin.py "$SRC_DIR/pyfont/vga1_8x16.py" "$DST_DIR/en0.rfont" +python3 pyfont_to_bin.py "$SRC_DIR/pyfont/vga1_16x32.py" "$DST_DIR/en1.rfont" -echo "3. cn.bfont 中文字体" >> $README -echo "> 有字符MAP表(当前顺序查找、需实现二叉树查找)" >> $README -echo "" >>$README -python3 font2bitmap.py -s "$CN_TEXT" $CN_OTF_FONT 22 > $SRC_DIR/cn.py -python3 pyfont_to_bin.py $SRC_DIR/cn.py $DST_DIR/cn.bfont +echo "2. en.hfont 矢量英文字体" >> "$README" +echo "> 顺序排列,带索引表,只画线无背景色,可自由缩放,显示速度快" >> "$README" +echo "" >>"$README" +python3 pyfont_to_bin.py "$SRC_DIR/pyfont/romand.py" "$DST_DIR/en.hfont" -echo "4. time.bfont 时间字体" >> $README -echo "> 有字符MAP表(当前顺序查找、需实现二叉树查找)" >> $README -echo "" >>$README -python3 font2bitmap.py -s "$TIME_TEXT" $TIME_OTF_FONT 48 > $SRC_DIR/time.py -python3 pyfont_to_bin.py $SRC_DIR/time.py $DST_DIR/time.bfont +echo "3. cn.bfont 中文字体" >> "$README" +echo "> 有字符MAP表,二叉树查找" >> "$README" +echo "" >>"$README" +SORTED_TEXT=$(python3 -c "text = '''$CN_TEXT''';sorted_unique = ''.join(sorted(set(text), key=lambda c: ord(c)));print(sorted_unique, end='')") +python3 font2bitmap.py -s "$SORTED_TEXT" "$CN_OTF_FONT" 20 > "$SRC_DIR/pyfont/cn.py" +python3 pyfont_to_bin.py "$SRC_DIR/pyfont/cn.py" "$DST_DIR/cn.bfont" + +echo "4. time.bfont 时间字体" >> "$README" +echo "> 有字符MAP表,二叉树查找" >> "$README" +echo "" >>"$README" +SORTED_TEXT=$(python3 -c "text = '''$TIME_TEXT''';sorted_unique = ''.join(sorted(set(text), key=lambda c: ord(c)));print(sorted_unique, end='')") +python3 font2bitmap.py -s "$SORTED_TEXT" "$TIME_OTF_FONT" 48 > "$SRC_DIR/pyfont/time.py" +python3 pyfont_to_bin.py "$SRC_DIR/pyfont/time.py" "$DST_DIR/time.bfont" # 开始转换图片文件 -SRC_DIR=./assets +SRC_DIR=./assets/images DST_DIR=../src/rom/images # 透明色转换成黑色背景,质量95% -python3 png_to_jpg.py -d $SRC_DIR/ --color black --quality 100 -cp -v $SRC_DIR/*.jpg $DST_DIR/ +python3 png_to_jpg.py -d "$SRC_DIR/" --color black --quality 100 +mv -v "$SRC_DIR"/*.jpg "$DST_DIR/" diff --git a/utils/download.sh b/utils/download.sh index 4f15d80..309cac9 100755 --- a/utils/download.sh +++ b/utils/download.sh @@ -1,13 +1,16 @@ -#!/bin/sh +#!/bin/bash + +# switch to local path +cd "$(dirname "$0")" || exit 1 # 连接并打印文件列表 mpremote ls # 生成romfs文件系统并上传 -mpremote romfs deploy src/rom +mpremote romfs deploy ../src/rom # 复制文件 -for file in src/*.py; do +for file in ../src/*.py; do if [ -f "$file" ]; then mpremote fs cp "$file" : fi