基于神经网络的2D摄像头手势交互游戏机设计

发布时间:2024年01月21日

目 录

摘要 I
Abstract II
1绪论 1
1.1研究背景及其意义 1
1.2国内外研究情况 2
2系统方案 4
2.1基本思路 4
2.2总体方案设计 5
2.3本章小结 6
3硬件设计 6
3.1控制器选型 6
3.2摄像头模块 8
3.3LCD 显示模块 9
3.4充电芯片选型 10
3.5蓝牙解码模块 11
3.6手柄选型 12
3.7D/A 芯片选型 12
3.8功放选型 13
3.9外壳设计 14
3.10本章小结 16
4软件设计 16
4.1开发环境与平台 16
4.2神经网络选取和训练 18
4.3界面设计 23
4.4程序设计 26
4.5本章小结 36
5系统调试 37
5.1摄像头模块调试 37
5.2LCD 显示屏调试 37
5.3充电芯片焊接与调试 38
5.4蓝牙解码模块调试 39
5.5D/A 芯片调试 40
5.6功放芯片调试 41
5.7外壳设计修改 41
5.8总体安装调试 42
5.9本章小结 43
6实验结果及分析 44
6.1功能选择测试 44
6.2NES 游戏测试 44
6.3猜拳模式测试 45
6.4蓝牙音箱测试 46
6.5本章小结 47
7总结与展望 48
7.1 总结 48
7.2 展望 48
参考文献
致谢 50
2系统方案
2.1基本思路
本文提出一个简约干净的物理模型如图 2.1 所示,作为多媒体游戏机的载体,用于交互的输出设备(如显示屏,LED 指示灯、喇叭)和输入设备(手柄接口,按键、蓝牙模块)的放置在正面,方便用户与游戏机互动,提升游戏体验。游戏机的侧面放置的是充电接口、开关和喇叭开孔。这样侧边设计保证了使用方便性以及美观性。外壳设计考虑到游戏机的携带性,所以采用了翻盖处理。以上体现了系统良好的人机交互性。

2.2总体方案设计
在这里插入图片描述

图 2.1 物理模型

本游戏机采用模块化设计方法,结构主要由 K210 核心主控板、摄像头模块、
LCD 显示模块、充电模块、蓝牙解码模块、数模转换和功放组成,所需电源由锂电池和 USB 接口双向供电,支持边冲边用。游戏机通过按键与用户交互选择模式。内置的不同模式代表着不同的功能,有传统的 NES 游戏模式,创新的手势互动猜拳模式以及悠闲的无线蓝牙音箱模式。用户可以通过游戏机尽情享受娱乐放松。
系统的总体结构框图如图 2.2 所示,核心的部分为 K210 控制主控版。

游戏机在模块化设计思想指导下进行设计,了解各模块要实现的基本功能后,有选择的去寻找相应的模块或者是对相关的芯片选型,在绘制好各个子模块的原理图后,分别测试,最后汇总调试。目前,主要工作及成果有以下几个方面:游戏手柄控制的识 别;传统 NES 游戏的运行;手势预测及猜拳互动;蓝牙音频的解码和播放;图像界面的显示和互动;电池的充放电和提示;外壳的设计。总体来说,这是一个具有完整的, 全面的项目开发过程。
手势猜拳互动是多媒体游戏机设计的核心所在,不但但是简单的手势互动,更重要的是神经网络算法在低功耗嵌入式中起的作用,通过合理的设计,合适的应用, 它不仅仅服务于各种高大上的应用,也可以出现在寻常应用中为生活服务。这样使得了高端的算法可以落地,为人们的便利生活作出更大的贡献。当然,神经网络预测的精准性和设计出更小巧有效的神经网络也是现在大家关注的重点问题。
进行设计开发的过程中,不能一蹴而就,需要反复测试和实践,发现问题,排除BUG,不断修改。同时,在撰写论文时,不能马虎大意,随心所写。由于个人能力有限,无法完全开发这款芯片,无法灵活处理内存的问题,导致了图片和场景的丰富度不低于一般市面上的游戏机。但是这次全新的尝试,也是以后项目开发的宝贵经验。

# Code generated by font_to_py.py.
# Font: fz.ttf Char set: -0123456789:DHMT丁于互交作使像刀前剪势基头导布师年式当戏手指接摄日是月机模游牙用的石神箱经络网老者蓝计设请连音,
# Cmd: font_to_py.py -x fz.ttf 24 f24.py -c 基于神经网络的2D摄像头手势交互游戏机的设计作者:,指导老师,1234567890T年月日当前是蓝牙音箱模式,请使用手机连接蓝牙MH-18使用剪刀石头布
version = '0.33'

def height():
    return 25

def baseline():
    return 21

def max_width():
    return 25

def hmap():
    return True

def reverse():
    return False

def monospaced():
    return False

def min_ch():
    return 45

def max_ch():
    return 65292

_font =\
b'\x0b\x00\x00\x00\x00\x00\x1f\x00\x31\xc0\x60\xc0\x60\x60\x00\x60'\
b'\x00\x60\x00\xc0\x00\xc0\x01\xc0\x07\x80\x0e\x00\x08\x00\x08\x00'\
b'\x08\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x0c\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x10\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'\
b'\x00\x00\x3f\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x03\x80'\
b'\x0e\xe0\x18\x30\x18\x30\x30\x18\x30\x18\x30\x18\x70\x1c\x70\x1c'\
b'\x70\x0c\x70\x0c\x70\x1c\x30\x1c\x30\x18\x30\x18\x30\x18\x18\x30'\
b'\x0c\x60\x07\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00'\
b'\x00\x00\x00\x80\x01\x80\x1f\x80\x03\x80\x01\x80\x01\x80\x01\x80'\
b'\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80'\
b'\x01\x80\x01\x80\x03\xc0\x1f\xf8\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x0f\x00\x00\x00\x00\x00\x03\xc0\x0e\xf0\x18\x38\x30\x18\x30\x1c'\
b'\x30\x1c\x38\x18\x00\x38\x00\x70\x00\xe0\x01\xc0\x03\x80\x03\x00'\
b'\x06\x00\x0c\x00\x18\x00\x30\x08\x3f\xf8\x7f\xf8\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x03\x80\x0f\xe0\x18\x30'\
b'\x30\x38\x38\x18\x00\x18\x00\x38\x00\x30\x01\xc0\x07\xe0\x00\x30'\
b'\x00\x18\x00\x1c\x00\x1c\x20\x1c\x60\x1c\x70\x18\x38\x30\x0f\xe0'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x60'\
b'\x00\xe0\x01\xe0\x03\x60\x06\x60\x04\x60\x0c\x60\x18\x60\x10\x60'\
b'\x30\x60\x20\x60\x60\x60\x60\x60\x7f\xfc\x00\x60\x00\x60\x00\x60'\
b'\x00\x60\x01\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00'\
b'\x00\x00\x1c\xf0\x1f\xf0\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00'\
b'\x10\x00\x3f\xe0\x38\x38\x00\x18\x00\x1c\x00\x1c\x00\x1c\x00\x1c'\
b'\x70\x18\x60\x38\x30\x70\x1f\xc0\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x0f\x00\x00\x00\x00\x00\x00\x30\x01\xc0\x07\x00\x0c\x00\x1c\x00'\
b'\x18\x00\x30\x00\x30\x00\x33\xe0\x7c\x78\x78\x18\x70\x1c\x70\x1c'\
b'\x70\x0c\x30\x1c\x30\x1c\x38\x18\x1c\x30\x0f\xe0\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x3f\xf8\x38\x08'\
b'\x20\x18\x20\x10\x00\x30\x00\x20\x00\x60\x00\x60\x00\xc0\x00\xc0'\
b'\x00\xc0\x01\x80\x01\x80\x03\x80\x03\x00\x07\x00\x06\x00\x0e\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x01\x80'\
b'\x0f\xf0\x18\x18\x10\x18\x30\x08\x30\x18\x38\x18\x1c\x30\x0f\xc0'\
b'\x07\xe0\x0d\xf0\x18\x78\x30\x1c\x60\x0c\x60\x0c\x60\x0c\x30\x18'\
b'\x38\x30\x0f\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00'\
b'\x00\x00\x03\x80\x0e\xe0\x18\x30\x30\x18\x30\x18\x70\x1c\x70\x1c'\
b'\x70\x0c\x30\x1c\x38\x3c\x1e\xfc\x07\x1c\x00\x18\x00\x18\x00\x30'\
b'\x00\x60\x00\xe0\x01\x80\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x38\x18'\
b'\x00\x00\x00\x00\x00\x38\x18\x00\x00\x00\x00\x0b\x00\x00\x00\x00'\
b'\x00\x1f\x00\x31\xc0\x60\xc0\x60\x60\x00\x60\x00\x60\x00\xc0\x00'\
b'\xc0\x01\xc0\x07\x80\x0e\x00\x08\x00\x08\x00\x08\x00\x00\x00\x00'\
b'\x00\x00\x00\x1c\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\xf0\x00\x38\x3c\x00'\
b'\x30\x0e\x00\x30\x07\x00\x38\x03\x80\x38\x01\x80\x38\x01\x80\x38'\
b'\x01\xc0\x38\x01\xc0\x38\x01\xc0\x38\x01\xc0\x38\x01\x80\x38\x03'\
b'\x80\x38\x03\x80\x30\x07\x00\x30\x0e\x00\x38\x7c\x00\x7f\xf0\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x7c\x03\xe0\x38\x01\xc0\x38\x01\xc0'\
b'\x38\x01\xc0\x38\x01\xc0\x38\x01\xc0\x38\x01\xc0\x3f\xff\xc0\x3f'\
b'\xff\xc0\x38\x01\xc0\x38\x01\xc0\x38\x01\xc0\x38\x01\xc0\x38\x01'\
b'\xc0\x38\x01\xc0\x38\x01\xc0\x38\x01\xc0\x7c\x03\xe0\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x7c\x00\xf8\x3c\x01\xe0\x3c\x01\xe0\x36\x01\x60'\
b'\x36\x03\x60\x37\x02\x60\x33\x06\x60\x33\x84\x60\x31\x8c\x60\x31'\
b'\x8c\x60\x30\xd8\x60\x30\xd8\x60\x30\xf0\x60\x30\x70\x60\x30\x60'\
b'\x60\x30\x20\x60\x30\x00\xe0\x7c\x01\xf8\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xff\xff'\
b'\xe1\x87\x81\x81\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80'\
b'\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x01\x80\x03\x80'\
b'\x07\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xf0\x00'\
b'\x00\x7f\xf0\x00\x03\xff\xf8\x00\x3f\xfe\x00\x00\x1f\x0e\x00\x00'\
b'\x0c\x06\x00\x00\x00\x06\x00\x00\x00\x06\x00\x00\x00\x06\x00\x00'\
b'\x00\x06\x00\x00\x00\x06\x00\x00\x00\x06\x00\x00\x00\x0e\x00\x00'\
b'\x00\x0e\x00\x00\x00\x0c\x00\x00\x01\xfc\x00\x00\x00\x7c\x00\x00'\
b'\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x19\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x7f\x00\x00\x00\x3f'\
b'\x00\x00\x00\x1e\x00\x00\x00\x1c\x00\x00\x00\x3c\x00\x00\x00\x4c'\
b'\xe0\x00\x00\x8f\xf0\x00\x01\x3f\x10\x00\x00\xfe\x00\x00\x03\xee'\
b'\x00\x00\x1f\x86\x00\x00\x1e\x06\x00\x00\x00\x06\x00\x00\x00\x06'\
b'\x00\x00\x00\x06\x00\x00\x00\x06\x00\x00\x00\x0e\x00\x00\x00\x0e'\
b'\x00\x00\x00\x1c\x00\x00\x00\x7c\x00\x00\x00\x0c\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x07\x00\x00\x00\xff\x80\x00\x00\x7f\x80\x00\x00\x7f\x00\x00'\
b'\x00\x0e\x00\x00\x00\x1c\x00\x00\x00\x38\x00\x00\x00\x3f\x80\x00'\
b'\x00\x7f\x80\x00\x00\xe3\x80\x00\x00\xe7\x80\x00\x03\xff\x00\x00'\
b'\x01\xff\x00\x00\x01\x9e\x00\x00\x00\x1c\x00\x00\x00\x3f\xf8\x00'\
b'\x03\xff\xfc\x00\x1f\xf8\x3c\x00\x1f\x00\x04\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x0f\x00\x00\x00\x1f'\
b'\x00\x00\x00\x62\x00\x00\x00\x07\x80\x00\x00\x1f\x00\x00\x04\x7f'\
b'\x00\x00\x07\xee\x70\x00\x07\xcc\x38\x00\x01\x9c\x38\x00\x00\x7f'\
b'\x00\x00\x00\x7b\x00\x00\x00\x77\x00\x00\x03\xc7\x00\x00\x04\xfe'\
b'\x00\x00\x08\x1f\x00\x00\x08\x3f\xc0\x00\x07\xf1\xf0\x00\x00\x00'\
b'\x70\x00\x00\x00\x38\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x0e\x00\x00'\
b'\x01\x87\x10\x00\x03\xc7\xf8\x00\x03\xcf\xf0\x00\x07\x9f\xc0\x00'\
b'\x07\x1f\x80\x00\x0f\x1d\x00\x00\x1e\x99\x00\x00\x3f\x01\x60\x00'\
b'\x1f\x01\xf0\x00\x17\x03\x30\x00\x07\x03\x60\x00\x07\x03\x60\x00'\
b'\x07\x03\xf0\x00\x07\x03\x78\x00\x06\x03\x78\x00\x06\x03\x00\x00'\
b'\x02\x03\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00'\
b'\x00\x01\x00\x00\x00\x00\x00\x00\x19\x00\x00\x04\x00\x00\x00\x0e'\
b'\x00\x00\x00\x06\x00\x00\x00\x03\x80\x00\x03\x07\xc0\x00\x03\x9f'\
b'\x80\x00\x07\xbf\x00\x00\x07\x8e\xc0\x00\x0f\x17\xe0\x00\x0e\x67'\
b'\xe0\x00\x1c\x4e\xe0\x00\x3c\x7f\xc0\x00\x3c\x77\xc0\x00\x34\x6f'\
b'\x00\x00\x06\x7e\x00\x00\x07\xa6\x00\x00\x0c\xe6\x00\x00\x0c\x3e'\
b'\x00\x00\x0c\x0e\x00\x00\x0e\x1f\xe0\x00\x0d\xfb\xfc\x00\x0c\x00'\
b'\xff\x00\x04\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00'\
b'\x00\x00\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x01\x0f\x00\x00'\
b'\x01\x9f\x80\x00\x01\x9f\x00\x00\x03\x96\x00\x00\x07\x0f\xe0\x00'\
b'\x0e\x1f\x60\x00\x0c\x1c\xc0\x00\x1c\x7f\x80\x00\x1e\x6f\x60\x00'\
b'\x17\x5c\x60\x00\x06\x3e\xc0\x00\x06\xf3\xc0\x00\x06\xf3\x00\x00'\
b'\x06\x3f\xc0\x00\x06\x69\xf8\x00\x04\x59\x7f\x00\x0c\x33\x1e\x00'\
b'\x04\x23\x00\x00\x04\x6e\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x01\x80\x00\x00\x1f\xc0\x00\x00\xff'\
b'\xe0\x00\x01\xf8\x70\x00\x00\xfc\x70\x00\x00\x1c\x60\x00\x00\x38'\
b'\xe0\x00\x00\x70\xe0\x00\x00\x70\xc0\x00\x00\xe1\xc0\x00\x00\xe1'\
b'\xc0\x00\x01\xe1\x80\x00\x03\xa3\x80\x00\x03\x13\x80\x00\x07\x1f'\
b'\x00\x00\x0e\x0e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x03\x00\x00'\
b'\x00\x05\x80\x00\x00\x79\x80\x00\x00\x7b\x80\x00\x00\x7f\x80\x00'\
b'\x00\x37\x30\x00\x00\x2f\xf8\x00\x00\x3f\xc0\x00\x00\xf4\x00\x00'\
b'\x03\xd8\xc0\x00\x0f\x39\x40\x00\x3c\x5f\x40\x00\x78\x8b\x40\x00'\
b'\x00\xeb\x40\x00\x01\xfb\x40\x00\x01\xbb\x60\x00\x01\xeb\x60\x00'\
b'\x01\x68\x60\x00\x01\x48\x60\x00\x01\x38\x60\x00\x00\x38\x40\x00'\
b'\x00\x10\x40\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x19\x00\x00\x01\x00\x00\x00\x01\x80\x00\x00\x49\xc0\x00\x00\x7b'\
b'\x80\x00\x00\x77\xf8\x00\x00\x7e\xf8\x00\x00\xf9\x80\x00\x03\xb0'\
b'\x40\x00\x0f\x6f\x40\x00\x3e\x6f\x40\x00\x78\x7f\x40\x00\x00\xff'\
b'\xc0\x00\x00\xaf\xc0\x00\x00\xa8\xc0\x00\x00\x99\x80\x00\x00\x8f'\
b'\xe0\x00\x00\x7e\x60\x00\x00\xfe\x60\x00\x00\x0c\xc0\x00\x00\x18'\
b'\xc0\x00\x00\x31\xc0\x00\x00\x3f\x80\x00\x00\x47\x80\x00\x00\x83'\
b'\x00\x00\x01\x00\x00\x00\x19\x00\x00\x82\x00\x00\x00\xe3\x80\x00'\
b'\x00\x65\x80\x00\x00\xf9\xc0\x00\x01\xeb\xf0\x00\x07\xd7\xb0\x00'\
b'\x0f\xef\x70\x00\x0f\xff\x60\x00\x02\xe7\xe0\x00\x01\xcd\xe0\x00'\
b'\x06\x8d\xd8\x00\x1c\x9b\xc6\x00\x1f\x8e\xfe\x00\x11\x9c\x7e\x00'\
b'\x00\xff\x80\x00\x01\xf9\x80\x00\x01\xf9\x80\x00\x00\x31\x80\x00'\
b'\x00\x61\x80\x00\x00\xe3\x00\x00\x00\xe3\x00\x00\x01\xbe\x00\x00'\
b'\x02\x1e\x00\x00\x04\x0c\x00\x00\x00\x00\x00\x00\x19\x00\x00\x06'\
b'\x00\x00\x00\x0f\x00\x00\x00\x43\x80\x00\x00\x6f\xc0\x00\x00\x7f'\
b'\x80\x00\x01\xff\x00\x00\x00\xe3\x00\x00\x00\x7f\x00\x00\x00\x6b'\
b'\x00\x00\x00\x7f\x00\x00\x00\x7e\x00\x00\x00\x63\x80\x00\x00\xbf'\
b'\xc0\x00\x03\xff\x00\x00\x07\xe9\x80\x00\x06\xdc\xc0\x00\x00\xde'\
b'\x60\x00\x01\xff\x30\x00\x03\x3c\x3c\x00\x03\x0c\x1e\x00\x04\x1f'\
b'\x87\x00\x18\xff\xc0\x00\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00'\
b'\x00\x0b\x00\x00\x00\xeb\x00\x00\x00\xf7\x00\x00\x00\x7f\x00\x00'\
b'\x00\xf6\x00\x00\x01\x06\x00\x00\x01\xe6\x00\x00\x01\xf5\x00\x00'\
b'\x00\xf4\xe0\x00\x00\xef\xf8\x00\x01\x9f\xf8\x00\x02\x7c\x00\x00'\
b'\x0d\xfc\x00\x00\x3f\xd8\x00\x00\x3f\x18\x00\x00\x1c\x39\xc0\x00'\
b'\x00\x70\xf0\x00\x00\xe0\x78\x00\x03\xc0\x38\x00\x00\x00\x08\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x07'\
b'\x00\x00\x00\x1f\x80\x00\x00\xff\x80\x00\x00\xff\x80\x00\x00\xe7'\
b'\x00\x00\x00\xcf\x00\x00\x00\xff\x00\x00\x00\xf8\x00\x00\x00\xc0'\
b'\x00\x00\x00\xdf\x80\x00\x00\x7f\x00\x00\x00\x3e\x70\x00\x00\x47'\
b'\xfc\x00\x01\xfe\x1c\x00\x07\xe2\x00\x00\x1f\x02\x00\x00\x08\xf2'\
b'\x00\x00\x00\xba\x00\x00\x00\x43\x00\x00\x00\x3f\x00\x00\x00\x1e'\
b'\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00'\
b'\x00\x20\x00\x00\x00\x1c\x00\x00\x00\x1c\x00\x00\x00\x0f\xf0\x00'\
b'\x00\x3f\xf0\x00\x01\xfd\x80\x00\x07\xdc\x00\x00\x3f\x1e\x00\x00'\
b'\x58\x37\x80\x00\x40\xf7\xc0\x00\x40\x6f\xe0\x00\x40\xfe\x60\x00'\
b'\x41\xe6\x60\x00\x23\xa6\x60\x00\x1f\x66\x40\x00\x0e\x67\xc0\x00'\
b'\x00\x67\xc0\x00\x00\x46\xc0\x00\x00\x06\x80\x00\x00\x06\x00\x00'\
b'\x00\x06\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00'\
b'\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x80'\
b'\xe0\x00\x02\xc7\xf0\x00\x02\xcf\xc0\x00\x02\xdf\x00\x00\x04\xe7'\
b'\x00\x00\x1c\xc3\xf0\x00\x0e\xd3\xf8\x00\x0e\x9f\xb8\x00\x0e\x9f'\
b'\xb8\x00\x0e\x8f\xb0\x00\x0c\x9b\xb0\x00\x0c\x9b\xb0\x00\x0d\x9b'\
b'\xf0\x00\x07\x93\x70\x00\x03\x83\x20\x00\x03\x83\x00\x00\x01\x01'\
b'\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01'\
b'\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x19\x00\x00\x40\x00\x00'\
b'\x00\x60\x00\x00\x00\xe7\x00\x00\x00\xff\x80\x00\x00\xfe\x00\x00'\
b'\x00\xfe\x00\x00\x00\x2f\x80\x00\x00\x3f\x80\x00\x01\xfe\x00\x00'\
b'\x00\xe6\x00\x00\x00\xf6\x00\x00\x00\xf7\x00\x00\x00\x67\xf0\x00'\
b'\x00\x7f\xf8\x00\x01\xf6\x08\x00\x0f\x86\x00\x00\x3e\x06\x00\x00'\
b'\x18\x06\x00\x00\x00\x06\x00\x00\x00\x06\x00\x00\x00\x06\x00\x00'\
b'\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00'\
b'\x19\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x70\x00\x00\x00\x38'\
b'\x00\x00\x00\x18\x60\x00\x00\x1e\x70\x00\x00\x0f\x10\x00\x00\x7f'\
b'\x80\x00\x07\xfe\x00\x00\x03\xf6\x00\x00\x01\xc6\x00\x00\x01\x42'\
b'\x00\x00\x06\xf3\x00\x00\x07\xf3\x00\x00\x07\xe1\x80\x00\x01\xc1'\
b'\x80\x00\x01\xb8\xc0\x00\x07\xfc\xc8\x00\x07\x80\x6c\x00\x06\x00'\
b'\x3c\x00\x00\x00\x3c\x00\x00\x00\x1c\x00\x00\x00\x04\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x30\x00\x00'\
b'\x00\x1c\x00\x00\x00\x1c\x00\x00\x00\x1d\x80\x00\x00\x1f\xc0\x00'\
b'\x02\x19\xc0\x00\x06\x7b\x80\x00\x07\xdf\x00\x00\x07\xfe\x00\x00'\
b'\x07\x38\x00\x00\x06\x3f\x80\x00\x01\xff\xc0\x00\x01\xf8\xe0\x00'\
b'\x01\xc8\xe0\x00\x00\x3c\xe0\x00\x01\xfd\xc0\x00\x00\xf9\x80\x00'\
b'\x00\x77\x80\x00\x01\xff\x80\x00\x01\xff\x80\x00\x00\x80\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00'\
b'\x00\x00\x00\x10\x00\x00\x00\x1c\x00\x00\x00\x0e\x78\x00\x00\x06'\
b'\x38\x00\x00\x06\x00\x00\x00\xe7\xe0\x00\x01\xf3\xe0\x00\x03\xf3'\
b'\x80\x00\x07\xe7\x00\x00\x03\xef\x40\x00\x08\xfd\x60\x00\x1f\xc1'\
b'\xe0\x00\x23\xc1\xc0\x00\x43\xe1\xc0\x00\x47\xe3\xc0\x00\x3f\x7f'\
b'\x40\x00\x1c\x30\x60\x00\x00\x00\x24\x00\x00\x00\x34\x00\x00\x00'\
b'\x1c\x00\x00\x00\x0c\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x19\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x80\x00'\
b'\x00\x0f\xc0\x00\x00\x1f\x00\x00\x00\x78\x00\x00\x00\xdd\x00\x00'\
b'\x01\x1f\x80\x00\x00\x3f\x00\x00\x00\xfe\x00\x00\x00\x7e\x00\x00'\
b'\x00\x27\xf0\x00\x00\x7f\xf8\x00\x01\xfe\x00\x00\x0f\xc6\x00\x00'\
b'\x07\x06\x00\x00\x00\x06\x00\x00\x00\x06\x00\x00\x00\x06\x00\x00'\
b'\x00\x0c\x00\x00\x00\xfc\x00\x00\x00\x7c\x00\x00\x00\x18\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\xc0\x00\x00\x00\x64\x60\x00\x00\x66\xf0\x00\x00\xe7'\
b'\xe0\x00\x00\xf7\x80\x00\x03\xe6\x30\x00\x2f\xce\xf8\x00\x1f\xd7'\
b'\xf0\x00\x0e\xa7\x80\x00\x00\xc2\xe0\x00\x03\x85\xf0\x00\x07\x87'\
b'\xb0\x00\x1e\x86\x30\x00\x1c\x87\xb0\x00\x08\x87\x30\x00\x04\x86'\
b'\x30\x00\x03\x87\xb0\x00\x01\x83\x70\x00\x00\x80\x60\x00\x00\x00'\
b'\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00'\
b'\x00\x00\x00\x00\x00\x03\x00\x00\x01\x01\xc0\x00\x00\xc3\xc0\x00'\
b'\x00\xc0\xc0\x00\x00\xd3\xe0\x00\x01\xdf\xc0\x00\x07\xc7\x80\x00'\
b'\x0f\x87\xc0\x00\x3f\x8e\xc0\x00\x3f\x4d\xe0\x00\x1d\xc7\xe0\x00'\
b'\x03\xbf\x00\x00\x07\x02\xc0\x00\x3d\x07\xfe\x00\x39\x7c\xc7\x00'\
b'\x11\xed\xc0\x00\x09\x1f\x80\x00\x07\x07\xc0\x00\x03\x7e\x60\x00'\
b'\x03\x18\x30\x00\x01\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x80'\
b'\x70\x00\x00\x83\xe0\x00\x00\x9f\xc0\x00\x01\x8e\x60\x00\x01\xc7'\
b'\xe0\x00\x03\xc6\xc0\x00\x1f\x8f\xc0\x00\x3f\x8f\xc0\x00\x1d\x4d'\
b'\xf0\x00\x01\x87\xc0\x00\x03\x3c\xa0\x00\x0f\x10\x70\x00\x3f\x1c'\
b'\xf0\x00\x3b\x3e\x30\x00\x13\x67\xe0\x00\x0b\x3c\x70\x00\x07\x1f'\
b'\xf8\x00\x03\x7f\x9c\x00\x03\x02\x0c\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00'\
b'\x00\x3f\x80\x00\x00\x7f\x80\x00\x01\x83\xc0\x00\x01\x83\x80\x00'\
b'\x01\xc3\x80\x00\x01\xfb\x80\x00\x01\xfb\x80\x00\x01\xfb\x80\x00'\
b'\x01\x83\x80\x00\x01\x83\x80\x00\x01\x83\x80\x00\x01\xfb\x80\x00'\
b'\x01\xff\x80\x00\x00\xc7\x80\x00\x00\x03\x80\x00\x00\x03\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\x00\x01'\
b'\xf0\x00\x01\xc7\x30\x00\x03\xe6\x30\x00\x04\x76\x30\x00\x0c\x77'\
b'\xf0\x00\x0c\x66\xf0\x00\x0f\xe7\xb0\x00\x0f\xef\xb0\x00\x0d\xf5'\
b'\xb0\x00\x0d\x75\xf0\x00\x0e\xec\xf0\x00\x0f\xe5\xf0\x00\x07\xe5'\
b'\x90\x00\x06\x4e\x10\x00\x00\x0e\x10\x00\x00\x09\x10\x00\x00\x08'\
b'\xf0\x00\x00\x10\x70\x00\x00\x30\x30\x00\x00\x00\x10\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x1e\x00\x00\x00\x3f\x00\x00\x00\x27\x00\x00\x00\x43\x00\x00'\
b'\x00\x7b\x00\x00\x00\x7f\x00\x00\x00\x73\x00\x00\x00\x67\x00\x00'\
b'\x00\x7e\x00\x00\x00\x7e\xc0\x00\x00\xcf\xc0\x00\x03\x78\x00\x00'\
b'\x01\xdf\x80\x00\x07\xcd\x80\x00\x1e\x9f\x80\x00\x01\x98\x00\x00'\
b'\x03\xfc\x00\x00\x02\x1f\x00\x00\x06\x07\xfc\x00\x08\x01\xff\x00'\
b'\x00\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x0f\xc0\x00\x00\xdd'\
b'\xc0\x00\x00\x61\xc0\x00\x00\x61\x80\x00\x00\x6d\x80\x00\x00\x7f'\
b'\x80\x00\x00\x7d\x80\x00\x00\x6d\x80\x00\x00\x4d\x80\x00\x00\x5d'\
b'\x80\x00\x00\x4f\x80\x00\x00\x47\x80\x00\x00\xcd\x80\x00\x00\xf9'\
b'\x80\x00\x00\xd0\x80\x00\x00\xcc\x80\x00\x01\x87\x80\x00\x01\x03'\
b'\x80\x00\x03\x01\x80\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x81\xc0\x00'\
b'\x01\xc3\xe0\x00\x03\xdf\xc0\x00\x0f\x88\xc0\x00\xbf\x18\x80\x00'\
b'\x7d\xb9\x80\x00\x7b\xd9\x80\x00\x03\x99\x80\x00\x07\x19\x10\x00'\
b'\x0f\x19\x08\x00\x1f\x11\x0c\x00\x1e\x11\x84\x00\x0b\x31\xfe\x00'\
b'\x03\x20\xfe\x00\x03\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x1c'\
b'\x00\x00\x00\x0e\x00\x00\x00\x0f\x00\x00\x00\x0f\xc0\x00\x00\x1f'\
b'\x00\x00\x00\xfe\x00\x00\x0f\xfc\x00\x00\x07\x9f\xc0\x00\x02\x7d'\
b'\xc0\x00\x00\xfb\x00\x00\x01\x9e\x00\x00\x07\x3e\x00\x00\x0e\x7b'\
b'\x00\x00\x08\xee\x00\x00\x00\x1c\x00\x00\x00\x1f\x80\x00\x00\xfe'\
b'\xc0\x00\x01\x07\x80\x00\x01\x1e\x00\x00\x01\x06\x00\x00\x00\xce'\
b'\x00\x00\x00\x7c\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x19\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\xe0\x00\x01\x80\xe0\x00'\
b'\x01\xcc\x60\x00\x01\x8f\xf8\x00\x01\x8f\xe0\x00\x03\xde\xc0\x00'\
b'\x07\x8f\xe0\x00\x1f\x83\xf0\x00\x7d\xb6\x30\x00\x7b\xdb\xf0\x00'\
b'\x13\xcf\xa0\x00\x07\x88\xe0\x00\x0f\x0f\xe0\x00\x1f\x07\x00\x00'\
b'\x1d\x07\xfc\x00\x03\x1f\x00\x00\x03\x76\xc0\x00\x03\x06\x70\x00'\
b'\x01\x0c\x38\x00\x01\x10\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x01\xc0\x00\x03\x02\xc0\x00\x01\x9c\xc0\x00\x01\xd8'\
b'\xf0\x00\x03\x21\xf0\x00\x10\x0f\xb0\x00\x08\x3d\x60\x00\x0c\xf0'\
b'\xe0\x00\x0f\xd1\xf0\x00\x04\x9d\x70\x00\x05\x34\xe0\x00\x09\x24'\
b'\xe0\x00\x09\x6c\xf8\x00\x0b\xcf\xf8\x00\x0a\x9a\x70\x00\x0e\x7c'\
b'\xa0\x00\x06\x74\x20\x00\x06\x24\x20\x00\x00\x03\xe0\x00\x00\x01'\
b'\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x01\x80\x00'\
b'\x00\x1f\xc0\x00\x00\x1f\xc0\x00\x00\x2f\x00\x00\x00\x46\x00\x00'\
b'\x00\xc3\x80\x00\x00\xc1\xc0\x00\x00\xe1\xf0\x00\x00\xe7\xe0\x00'\
b'\x00\x7f\x80\x00\x00\xfd\x80\x00\x01\xf3\x80\x00\x07\xc3\x80\x00'\
b'\x0f\x87\x80\x00\x0e\x0d\x00\x00\x00\x19\x00\x00\x00\x31\x00\x00'\
b'\x00\x61\x00\x00\x00\xe1\x00\x00\x01\x11\x00\x00\x02\x0d\x80\x00'\
b'\x00\x07\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00'\
b'\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f'\
b'\xc0\x00\x00\x7e\xe0\x00\x03\xf8\x60\x00\x01\x8c\x60\x00\x01\x8c'\
b'\x60\x00\x01\x1f\x60\x00\x03\x7f\x60\x00\x03\x7c\x60\x00\x03\x1c'\
b'\x60\x00\x03\x1f\x60\x00\x03\x3f\x60\x00\x03\xfc\x60\x00\x03\x7c'\
b'\x60\x00\x03\x18\x60\x00\x02\x18\x60\x00\x02\x1c\x60\x00\x06\x1b'\
b'\xe0\x00\x00\x09\xe0\x00\x00\x00\xe0\x00\x00\x00\x20\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x03\x00\x00\x00\x03\x80\x00\x01\x85\x80\x00'\
b'\x01\x85\x80\x00\x01\xc9\x80\x00\x03\x8b\x00\x00\x0c\x13\xc0\x00'\
b'\x08\xf7\xf0\x00\x09\xbe\x18\x00\x0f\x74\x18\x00\x0f\xb6\x10\x00'\
b'\x0e\xbf\x30\x00\x0f\xaf\x30\x00\x07\xe8\x30\x00\x07\xe4\x60\x00'\
b'\x02\xe7\x60\x00\x00\x43\xe0\x00\x00\x01\xc0\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x80\x00\x00\xdf'\
b'\xc0\x00\x00\xff\x80\x00\x00\x7f\x00\x00\x00\x3e\x00\x00\x00\x1c'\
b'\x00\x00\x00\x38\x00\x00\x00\x38\x00\x00\x00\x70\x00\x00\x00\x63'\
b'\xe0\x00\x00\xef\xf0\x00\x01\xff\x70\x00\x03\xf0\xe0\x00\x07\x70'\
b'\xc0\x00\x0e\x71\xc0\x00\x1c\x7f\xc0\x00\x18\x3f\xc0\x00\x10\x10'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x19\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\xc1\x80\x00'\
b'\x00\xe1\x80\x00\x01\xe1\x80\x00\x03\x01\xb0\x00\x0c\x03\xd8\x00'\
b'\x31\xc7\x8c\x00\x23\xd9\xcc\x00\x27\xdb\xdc\x00\x3f\xff\xd8\x00'\
b'\x1d\xdb\x98\x00\x01\x89\xf0\x00\x03\x8f\xa0\x00\x0f\x87\x80\x00'\
b'\x0f\x81\x80\x00\x0d\x81\x80\x00\x01\x81\x80\x00\x01\x81\x80\x00'\
b'\x00\x81\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x00\x80\x00'\
b'\x00\x01\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x03'\
b'\x00\x00\x00\x07\x80\x00\x01\x0b\x80\x00\x00\xcb\x60\x00\x01\xd7'\
b'\xf0\x00\x03\xdf\x00\x00\x07\xed\x80\x00\x07\xe3\x80\x00\x00\x46'\
b'\x00\x00\x00\x4b\xc0\x00\x00\x6e\x60\x00\x01\xf8\x60\x00\x07\xcf'\
b'\x60\x00\x3e\xde\x60\x00\x3c\xe8\x60\x00\x01\xcf\x60\x00\x03\x8a'\
b'\x60\x00\x02\x8f\x60\x00\x00\x8f\xe0\x00\x00\x80\xe0\x00\x00\x00'\
b'\x60\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\xe0\x00\x00'\
b'\x00\xe0\xc0\x00\x01\xef\xc0\x00\x03\xd7\xc0\x00\x07\x93\x80\x00'\
b'\x0f\x23\x00\x00\x0f\xa7\xe0\x00\x09\xc6\xf0\x00\x03\xcd\xe0\x00'\
b'\x07\x5a\x00\x00\x0f\x51\x80\x00\x07\x8f\xc0\x00\x05\x8f\xc0\x00'\
b'\x01\x81\x80\x00\x03\x03\x80\x00\x03\x0f\xf8\x00\x06\x3f\x78\x00'\
b'\x02\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\xc1\x80\x00\x00\xe1\x80\x00\x00\xe3\x80\x00\x03\xe7'\
b'\xc0\x00\x0f\xcf\xe0\x00\x0f\x9e\xe0\x00\x0f\x9d\xc0\x00\x0d\xa9'\
b'\x80\x00\x03\xdf\x00\x00\x07\x7f\xfc\x00\x0f\x4c\x3e\x00\x0f\x98'\
b'\x46\x00\x0d\xf9\xf0\x00\x01\x8f\xf0\x00\x03\x0c\x70\x00\x07\x0c'\
b'\xe0\x00\x06\x0f\xc0\x00\x06\x07\xe0\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\xc0\x00'\
b'\x00\xfc\x70\x00\x01\xf0\x70\x00\x0a\x37\x70\x00\x04\x33\xb0\x00'\
b'\x06\x3b\x30\x00\x07\xbf\x30\x00\x07\xff\x30\x00\x06\x73\x30\x00'\
b'\x06\x7f\xb0\x00\x06\x7e\xb0\x00\x06\xcc\x30\x00\x06\x8c\x30\x00'\
b'\x06\x02\x30\x00\x06\x01\xf0\x00\x02\x00\xf0\x00\x00\x00\x70\x00'\
b'\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x0c'\
b'\x40\x00\x00\x0c\x60\x00\x00\x3f\xe0\x00\x00\xfc\xc0\x00\x00\x79'\
b'\x80\x00\x00\x1b\x00\x00\x00\x3f\xf0\x00\x00\xff\x90\x00\x0f\xd8'\
b'\x00\x00\x1e\x33\x00\x00\x08\x73\x80\x00\x00\xf7\x80\x00\x00\xdc'\
b'\x00\x00\x01\xb0\x40\x00\x03\x30\x40\x00\x04\x20\x40\x00\x18\x1f'\
b'\xe0\x00\x20\x0f\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x1c\x00\x00'\
b'\x00\x0c\x00\x00\x00\x0e\x20\x00\x00\x0f\x70\x00\x00\xbf\x70\x00'\
b'\x00\x7c\xe0\x00\x00\x39\xc0\x00\x00\x1b\xf0\x00\x00\x3f\xf0\x00'\
b'\x00\xfe\x00\x00\x03\xec\x00\x00\x3e\x1f\x00\x00\x3c\x3f\x80\x00'\
b'\x30\x71\x80\x00\x00\x71\x80\x00\x00\xbf\x80\x00\x01\xb9\x80\x00'\
b'\x03\x31\x80\x00\x06\x31\x80\x00\x0c\x3f\x80\x00\x10\x13\x80\x00'\
b'\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x19\x00\x00\x03'\
b'\x00\x00\x00\x81\xc0\x00\x00\x61\xc0\x00\x00\x31\xf0\x00\x00\x3f'\
b'\xe0\x00\x02\xf3\x00\x00\x01\xf3\x00\x00\x01\xae\x00\x00\x00\x2f'\
b'\xc0\x00\x00\x7f\xc0\x00\x03\xb5\x80\x00\x01\xb3\x00\x00\x01\xb7'\
b'\x80\x00\x01\xa7\x80\x00\x01\xe6\x00\x00\x01\x79\xc0\x00\x01\xff'\
b'\xe0\x00\x01\x76\xe0\x00\x01\xf6\xc0\x00\x01\xbd\x80\x00\x01\x9f'\
b'\xf0\x00\x1f\xf8\x7c\x00\x1e\x00\x04\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00'\
b'\x01\xc0\xe0\x00\x01\xf0\xe0\x00\x00\xf0\xe0\x00\x01\xf0\xe0\x00'\
b'\x03\x00\xc0\x00\x04\x00\xfe\x00\x09\x83\xfe\x00\x07\x8f\xc0\x00'\
b'\x3f\x9f\xc0\x00\x3f\x90\xc0\x00\x0d\xa0\xc0\x00\x01\x20\xc0\x00'\
b'\x01\x40\xc0\x00\x01\xc0\xc0\x00\x01\xc0\xc0\x00\x01\xc0\xc0\x00'\
b'\x01\xc0\xc0\x00\x00\x00\xc0\x00\x00\x00\xc0\x00\x00\x00\x80\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xe0\x00\x00\xf1'\
b'\xe0\x00\x00\xf3\xe0\x00\x03\x06\x60\x00\x00\x07\x60\x00\x00\x06'\
b'\x70\x00\x03\x86\x70\x00\x27\xc4\x60\x00\x1f\x8d\xc0\x00\x1d\x87'\
b'\xe0\x00\x01\x87\xe0\x00\x01\x40\xc0\x00\x01\x5f\xc0\x00\x01\x43'\
b'\xc0\x00\x03\xc3\xf0\x00\x03\x9e\x7c\x00\x01\x80\x1c\x00\x00\x00'\
b'\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00'\
b'\x00\x01\x00\x00\x00\x01\x80\x00\x00\x01\x80\x00\x00\x01\x80\x00'\
b'\x01\xc1\xf0\x00\x01\xef\xc0\x00\x03\x87\x80\x00\x06\x03\xc0\x00'\
b'\x08\x0f\x88\x00\x03\x07\xfc\x00\x07\x87\x80\x00\x3f\x3e\xc0\x00'\
b'\x3f\x75\xe0\x00\x13\x46\x20\x00\x03\x45\xa0\x00\x02\x87\xa0\x00'\
b'\x02\x85\xa0\x00\x03\x85\xe0\x00\x03\x0e\xe0\x00\x03\x0d\x20\x00'\
b'\x01\x04\xa0\x00\x00\x04\xe0\x00\x00\x00\x60\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x60\xf0\x00\x03\x97\x08\x00\x01\xbd\x5c\x00\x03\xb9'\
b'\xe0\x00\x0b\xfb\x80\x00\x0d\xd3\x80\x00\x0d\xf6\xe0\x00\x03\xe7'\
b'\xe0\x00\x06\x4f\xc0\x00\x0c\x80\xc0\x00\x01\xa1\xf8\x00\x03\x2f'\
b'\xf8\x00\x07\xef\xc0\x00\x0c\xc0\xc0\x00\x00\x40\x80\x00\x00\x00'\
b'\x80\x00\x00\x00\x80\x00\x00\x00\x80\x00\x00\x00\x80\x00\x00\x00'\
b'\x80\x00\x00\x00\x80\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00'\
b'\x00\x02\x00\x00\x00\x03\x00\x00\x00\x07\x80\x00\x00\x06\x60\x00'\
b'\x00\x0f\xe0\x00\x00\x7f\x00\x00\x0c\x3e\x00\x00\x06\x1d\x00\x00'\
b'\x1e\x0d\x80\x00\x10\x1b\xc0\x00\x18\x3f\x80\x00\x0c\x3d\x80\x00'\
b'\x04\x11\x80\x00\x04\x0f\xc0\x00\x04\x1f\xc0\x00\x02\x3b\x00\x00'\
b'\x02\x13\x00\x00\x0f\x8f\x00\x00\x0f\xff\x00\x00\x00\x0f\xfe\x00'\
b'\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x80\x00\x00\xc0'\
b'\xe0\x00\x00\xe3\x70\x00\x01\xc3\xe0\x00\x01\xa7\xc0\x00\x03\xf3'\
b'\xa0\x00\x07\xe7\x78\x00\x06\xc7\xfc\x00\x0d\xef\x80\x00\x1b\xfc'\
b'\xf0\x00\x23\xcb\x30\x00\x41\xed\xf0\x00\x03\xef\x60\x00\x0f\xa5'\
b'\xe0\x00\x0f\x47\x0c\x00\x01\xd1\xb6\x00\x01\x95\xee\x00\x01\x94'\
b'\xa0\x00\x01\x13\xb8\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00'\
b'\x00\x1c\x00\x00\x00\x0e\x00\x00\x00\x07\x80\x00\x00\x1f\x80\x00'\
b'\x00\xfe\x00\x00\x00\x73\x00\x00\x00\x4f\x00\x00\x00\xf7\x00\x00'\
b'\x00\xec\x70\x00\x00\x7f\xf8\x00\x00\xf4\x00\x00\x0f\xda\x00\x00'\
b'\x3e\x2f\x80\x00\x10\x79\x80\x00\x00\x41\x80\x00\x00\x7d\x80\x00'\
b'\x00\x79\x80\x00\x00\x63\x80\x00\x00\x7f\x80\x00\x00\x33\x00\x00'\
b'\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00'\
b'\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'\
b'\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'\
b'\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x0f\x00\x00\x00\x07\x00'\
b'\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x00\x00'\
b'\x00\x00'

_sparse =\
b'\x2d\x00\x34\x00\x30\x00\x68\x00\x31\x00\x9c\x00\x32\x00\xd0\x00'\
b'\x33\x00\x04\x01\x34\x00\x38\x01\x35\x00\x6c\x01\x36\x00\xa0\x01'\
b'\x37\x00\xd4\x01\x38\x00\x08\x02\x39\x00\x3c\x02\x3a\x00\x70\x02'\
b'\x3f\x00\x8b\x02\x44\x00\xbf\x02\x48\x00\x0c\x03\x4d\x00\x59\x03'\
b'\x54\x00\xa6\x03\x01\x4e\xda\x03\x8e\x4e\x40\x04\x92\x4e\xa6\x04'\
b'\xa4\x4e\x0c\x05\x5c\x4f\x72\x05\x7f\x4f\xd8\x05\xcf\x50\x3e\x06'\
b'\x00\x52\xa4\x06\x4d\x52\x0a\x07\x6a\x52\x70\x07\xbf\x52\xd6\x07'\
b'\xfa\x57\x3c\x08\x34\x59\xa2\x08\xfc\x5b\x08\x09\x03\x5e\x6e\x09'\
b'\x08\x5e\xd4\x09\x74\x5e\x3a\x0a\x0f\x5f\xa0\x0a\x53\x5f\x06\x0b'\
b'\x0f\x62\x6c\x0b\x4b\x62\xd2\x0b\x07\x63\x38\x0c\xa5\x63\x9e\x0c'\
b'\x44\x64\x04\x0d\xe5\x65\x6a\x0d\x0e\x66\xd0\x0d\x2f\x66\x36\x0e'\
b'\x08\x67\x9c\x0e\x3a\x67\x02\x0f\x4e\x67\x68\x0f\x21\x6a\xce\x0f'\
b'\x38\x6e\x34\x10\x59\x72\x9a\x10\x28\x75\x00\x11\x84\x76\x66\x11'\
b'\xf3\x77\xcc\x11\x5e\x79\x32\x12\xb1\x7b\x98\x12\xcf\x7e\xfe\x12'\
b'\xdc\x7e\x64\x13\x51\x7f\xca\x13\x01\x80\x30\x14\x05\x80\x96\x14'\
b'\xdd\x84\xfc\x14\xa1\x8b\x62\x15\xbe\x8b\xc8\x15\xf7\x8b\x2e\x16'\
b'\x89\x8f\x94\x16\xde\x8f\xfa\x16\x71\x95\x60\x17\xf3\x97\xc6\x17'\
b'\x0c\xff\x2c\x18'
_mvfont = memoryview(_font)
_mvsp = memoryview(_sparse)
ifb = lambda l : l[0] | (l[1] << 8)

def bs(lst, val):
    while True:
        m = (len(lst) & ~ 7) >> 1
        v = ifb(lst[m:])
        if v == val:
            return ifb(lst[m + 2:])
        if not m:
            return 0
        lst = lst[m:] if v < val else lst[:m]

def get_ch(ch):
    doff = bs(_mvsp, ch)
    width = ifb(_mvfont[doff : ])

    next_offs = doff + 2 + ((width - 1)//8 + 1) * 24
    return _mvfont[doff + 2:next_offs], 24, width

_mvfont = memoryview(_font)
_mvsp = memoryview(_sparse)
ifb = lambda l : l[0] | (l[1] << 8)



在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文章来源:https://blog.csdn.net/sheziqiong/article/details/135692803
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。