--- /dev/null
+"""
+*Name : capacitive_hynitron_cst816d_update.h
+*Author : gary
+*Version : V1.0
+*Copyright : Hynitron
+*ProjectName : CSW_2211527_CST816D_COB_ZT_YAT_K5_G1_JL_55028.hex Modify at 2022-11-21 17:57:42
+"""
+
+app_bin_816d = [
+0x00, 0x00, 0x00, 0x3c, 0x78, 0xa8,
+0x02, 0x1f, 0xc9, 0x7f, 0x00, 0x22, 0x02, 0x34, 0x9c, 0x22, 0x00, 0x00, 0x02, 0x33, 0xd2, 0x02,
+0x33, 0x5f, 0x85, 0x5b, 0x82, 0x85, 0x5a, 0x83, 0x75, 0xf0, 0x05, 0xe5, 0x21, 0x02, 0x0c, 0xa0,
+0x00, 0x02, 0x28, 0xf5, 0x8f, 0x22, 0xe5, 0x09, 0x24, 0x05, 0x12, 0x12, 0x63, 0xe0, 0x70, 0x03,
+0x02, 0x07, 0x77, 0x12, 0x12, 0x89, 0x74, 0x20, 0x93, 0xff, 0xe5, 0x09, 0x24, 0x09, 0x12, 0x12,
+0x63, 0xe0, 0xc3, 0x9f, 0x50, 0x58, 0xe5, 0x09, 0x24, 0x07, 0x12, 0x12, 0x63, 0xe0, 0x54, 0xfe,
+0xf0, 0xe5, 0x09, 0x24, 0x11, 0x12, 0x12, 0x63, 0xe4, 0xf0, 0xa3, 0xf0, 0xe5, 0x09, 0x24, 0x13,
+0x12, 0x12, 0x63, 0xe4, 0xf0, 0x12, 0x12, 0x6e, 0x12, 0x13, 0x2c, 0x24, 0x1b, 0x12, 0x12, 0x63,
+0x12, 0x12, 0x6b, 0x12, 0x13, 0x2a, 0x24, 0x1d, 0x12, 0x12, 0x29, 0x12, 0x12, 0x6b, 0x12, 0x13,
+0x2c, 0x24, 0x15, 0x12, 0x12, 0x63, 0x12, 0x12, 0x6b, 0x12, 0x13, 0x2a, 0x24, 0x17, 0x12, 0x12,
+0x63, 0x12, 0x14, 0x46, 0x24, 0x05, 0x12, 0x12, 0x63, 0xe4, 0xf0, 0x02, 0x01, 0xe1, 0xe5, 0x09,
+0x24, 0x07, 0x12, 0x12, 0x63, 0xe0, 0x30, 0xe0, 0x03, 0x02, 0x01, 0x3f, 0xe5, 0x09, 0x24, 0x1b,
+0x12, 0x12, 0x63, 0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0x12, 0x12, 0x70, 0x12, 0x13, 0xe9, 0xf5, 0x28,
+0xec, 0x9e, 0xf5, 0x27, 0xe5, 0x09, 0x24, 0x1d, 0x12, 0x12, 0x63, 0xe0, 0xfe, 0xa3, 0xe0, 0xff,
+0x12, 0x12, 0x70, 0x12, 0x13, 0xe7, 0xf5, 0x2a, 0xec, 0x9e, 0xf5, 0x29, 0x12, 0x12, 0x89, 0x74,
+0x19, 0x93, 0xff, 0xe4, 0x8f, 0x36, 0xf5, 0x35, 0xf5, 0x34, 0xf5, 0x33, 0x12, 0x13, 0x62, 0x90,
+0x02, 0xb8, 0xe0, 0x24, 0x01, 0xff, 0xe4, 0x33, 0xfe, 0x12, 0x13, 0xc6, 0x8f, 0x36, 0x8e, 0x35,
+0x8d, 0x34, 0x8c, 0x33, 0xaf, 0x2a, 0xae, 0x29, 0x12, 0x2b, 0x6f, 0xc0, 0x06, 0xc0, 0x07, 0xaf,
+0x28, 0xae, 0x27, 0x12, 0x2b, 0x6f, 0xd0, 0xe0, 0x2f, 0xff, 0xd0, 0xe0, 0x3e, 0xfe, 0x12, 0x13,
+0x5d, 0xc3, 0x12, 0x0c, 0x2e, 0x50, 0x0d, 0xe5, 0x09, 0x24, 0x07, 0x12, 0x12, 0x63, 0xe0, 0x44,
+0x01, 0xf0, 0x80, 0x37, 0xe4, 0xf5, 0x27, 0xf5, 0x28, 0xf5, 0x29, 0xf5, 0x2a, 0x80, 0x2c, 0xe5,
+0x09, 0x24, 0x21, 0x12, 0x12, 0x63, 0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0x12, 0x12, 0x70, 0x12, 0x13,
+0xe9, 0xf5, 0x28, 0xec, 0x9e, 0xf5, 0x27, 0x12, 0x12, 0x5f, 0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0x12,
+0x12, 0x70, 0x12, 0x13, 0xe7, 0xf5, 0x2a, 0xec, 0x9e, 0xf5, 0x29, 0xe5, 0x09, 0x24, 0x11, 0x12,
+0x12, 0x63, 0x12, 0x13, 0x56, 0xe5, 0x28, 0x9f, 0xfd, 0xe5, 0x27, 0x9e, 0xfc, 0xef, 0x78, 0x02,
+0xc3, 0x33, 0xce, 0x33, 0xce, 0xd8, 0xf9, 0x2d, 0xff, 0xec, 0x3e, 0xfe, 0xef, 0x78, 0x02, 0x12,
+0x14, 0x01, 0xd8, 0xfb, 0xf5, 0x28, 0x8e, 0x27, 0xe5, 0x09, 0x24, 0x13, 0x12, 0x12, 0x63, 0x12,
+0x13, 0x56, 0xe5, 0x2a, 0x9f, 0xfd, 0xe5, 0x29, 0x9e, 0xfc, 0xef, 0x78, 0x02, 0xc3, 0x33, 0xce,
+0x33, 0xce, 0xd8, 0xf9, 0x2d, 0xff, 0xec, 0x3e, 0xfe, 0xef, 0x78, 0x02, 0x12, 0x14, 0x01, 0xd8,
+0xfb, 0xf5, 0x2a, 0x8e, 0x29, 0xe5, 0x09, 0x24, 0x11, 0x12, 0x12, 0x63, 0xe5, 0x27, 0xf0, 0xa3,
+0xe5, 0x28, 0xf0, 0xe5, 0x09, 0x24, 0x13, 0x12, 0x12, 0x63, 0xe5, 0x29, 0xf0, 0xa3, 0xe5, 0x2a,
+0xf0, 0x12, 0x12, 0x89, 0x74, 0x20, 0x93, 0xff, 0xe5, 0x09, 0x24, 0x09, 0x12, 0x12, 0x63, 0xe0,
+0xc3, 0x9f, 0x50, 0x03, 0x02, 0x07, 0x35, 0xe5, 0x09, 0x24, 0x21, 0x12, 0x12, 0x63, 0xe0, 0xfe,
+0xa3, 0xe0, 0x25, 0x28, 0xff, 0xe5, 0x27, 0x3e, 0xfe, 0x12, 0x13, 0x7c, 0x12, 0x12, 0x70, 0x12,
+0x14, 0x08, 0x12, 0x14, 0x01, 0xd8, 0xfb, 0xf5, 0x24, 0x8e, 0x23, 0x12, 0x12, 0x5f, 0xe0, 0xfe,
+0xa3, 0xe0, 0x25, 0x2a, 0xff, 0xe5, 0x29, 0x3e, 0xfe, 0x12, 0x13, 0x7c, 0x12, 0x12, 0x70, 0xa3,
+0xa3, 0x12, 0x14, 0x08, 0x12, 0x14, 0x01, 0xd8, 0xfb, 0xf5, 0x26, 0x8e, 0x25, 0xc3, 0xe5, 0x24,
+0x94, 0x01, 0xe5, 0x23, 0x64, 0x80, 0x94, 0x80, 0x50, 0x08, 0x75, 0x23, 0x00, 0x75, 0x24, 0x01,
+0x80, 0x1d, 0x12, 0x12, 0x89, 0x74, 0x01, 0x93, 0xfe, 0x74, 0x02, 0x93, 0xff, 0xd3, 0x95, 0x24,
+0xee, 0x95, 0x23, 0x50, 0x0a, 0xef, 0x24, 0xff, 0xf5, 0x24, 0xee, 0x34, 0xff, 0xf5, 0x23, 0xc3,
+0xe5, 0x26, 0x94, 0x01, 0xe5, 0x25, 0x64, 0x80, 0x94, 0x80, 0x50, 0x08, 0x75, 0x25, 0x00, 0x75,
+0x26, 0x01, 0x80, 0x1d, 0x12, 0x12, 0x89, 0x74, 0x03, 0x93, 0xfe, 0x74, 0x04, 0x93, 0xff, 0xd3,
+0x95, 0x26, 0xee, 0x95, 0x25, 0x50, 0x0a, 0xef, 0x24, 0xff, 0xf5, 0x26, 0xee, 0x34, 0xff, 0xf5,
+0x25, 0x12, 0x12, 0x89, 0x74, 0x20, 0x93, 0x24, 0x0a, 0xff, 0xe4, 0x33, 0xfe, 0xe5, 0x09, 0x24,
+0x09, 0x12, 0x12, 0x63, 0xe0, 0xc3, 0x9f, 0xee, 0x64, 0x80, 0xf8, 0x74, 0x80, 0x98, 0x50, 0x5d,
+0xe5, 0x09, 0x24, 0x11, 0x12, 0x12, 0x63, 0x12, 0x07, 0xc9, 0x12, 0x12, 0x89, 0x74, 0x20, 0x93,
+0xfd, 0xe5, 0x09, 0x24, 0x09, 0x12, 0x12, 0x63, 0xe0, 0xc3, 0x9d, 0xfd, 0xe4, 0x94, 0x00, 0xfc,
+0x12, 0x13, 0xd7, 0x12, 0x14, 0x15, 0xe5, 0x09, 0x24, 0x13, 0x12, 0x12, 0x63, 0x12, 0x07, 0xc9,
+0x12, 0x12, 0x89, 0x74, 0x20, 0x93, 0xfd, 0xe5, 0x09, 0x24, 0x09, 0x12, 0x12, 0x63, 0xe0, 0xc3,
+0x9d, 0xfd, 0xe4, 0x94, 0x00, 0xfc, 0x12, 0x12, 0xf4, 0xf5, 0x83, 0x12, 0x14, 0x15, 0x75, 0x3b,
+0x00, 0x75, 0x3c, 0x5a, 0x75, 0x3d, 0x00, 0x75, 0x3e, 0x5a, 0x02, 0x05, 0x45, 0xe5, 0x09, 0x24,
+0x11, 0x12, 0x12, 0x63, 0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0x12, 0x2b, 0x6f, 0x8e, 0x46, 0x8f, 0x47,
+0xe5, 0x09, 0x24, 0x13, 0x12, 0x12, 0x63, 0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0x12, 0x2b, 0x6f, 0x8e,
+0x48, 0x8f, 0x49, 0xd3, 0xe5, 0x47, 0x94, 0xff, 0xe5, 0x46, 0x94, 0x00, 0x40, 0x06, 0x75, 0x46,
+0x00, 0x75, 0x47, 0xff, 0xd3, 0xe5, 0x49, 0x94, 0xff, 0xe5, 0x48, 0x94, 0x00, 0x40, 0x06, 0x75,
+0x48, 0x00, 0x75, 0x49, 0xff, 0x85, 0x46, 0x3f, 0x85, 0x47, 0x40, 0x85, 0x48, 0x41, 0x85, 0x49,
+0x42, 0x75, 0x45, 0x09, 0x12, 0x12, 0xa5, 0xe0, 0x25, 0x40, 0xf5, 0x40, 0xe4, 0x35, 0x3f, 0xf5,
+0x3f, 0x12, 0x12, 0xf4, 0x12, 0x12, 0xb2, 0xe0, 0x25, 0x42, 0xf5, 0x42, 0xe4, 0x35, 0x41, 0xf5,
+0x41, 0xe5, 0x22, 0x75, 0xf0, 0x0a, 0xa4, 0x24, 0xbe, 0xf5, 0x82, 0xe4, 0x34, 0x02, 0x12, 0x12,
+0xb2, 0xe0, 0xff, 0x12, 0x12, 0xa5, 0xef, 0xf0, 0xe5, 0x22, 0x75, 0xf0, 0x0a, 0xa4, 0x24, 0xd2,
+0xf5, 0x82, 0xe4, 0x34, 0x02, 0x12, 0x12, 0xb2, 0xe0, 0xff, 0x12, 0x12, 0xf4, 0x12, 0x12, 0xb2,
+0xef, 0xf0, 0x15, 0x45, 0xe5, 0x45, 0x70, 0xac, 0x12, 0x13, 0xd7, 0xe5, 0x47, 0xf0, 0x12, 0x12,
+0xf4, 0xf5, 0x83, 0xe5, 0x49, 0xf0, 0xd3, 0xe5, 0x40, 0x95, 0x42, 0xe5, 0x3f, 0x95, 0x41, 0x40,
+0x26, 0x75, 0x4a, 0x00, 0x75, 0x4b, 0x00, 0x75, 0x4c, 0x41, 0x75, 0x4d, 0x00, 0x75, 0x4e, 0x00,
+0x75, 0x4f, 0x3f, 0x75, 0x50, 0x00, 0x75, 0x51, 0x00, 0x75, 0x52, 0x3b, 0x75, 0x53, 0x00, 0x75,
+0x54, 0x00, 0x75, 0x55, 0x3d, 0x80, 0x24, 0x75, 0x4a, 0x00, 0x75, 0x4b, 0x00, 0x75, 0x4c, 0x3f,
+0x75, 0x4d, 0x00, 0x75, 0x4e, 0x00, 0x75, 0x4f, 0x41, 0x75, 0x50, 0x00, 0x75, 0x51, 0x00, 0x75,
+0x52, 0x3d, 0x75, 0x53, 0x00, 0x75, 0x54, 0x00, 0x75, 0x55, 0x3b, 0x12, 0x14, 0x64, 0x45, 0xf0,
+0x70, 0x06, 0x75, 0xf0, 0x01, 0x12, 0x0a, 0xc5, 0xab, 0x4d, 0xaa, 0x4e, 0xa9, 0x4f, 0x12, 0x0a,
+0x15, 0xae, 0xf0, 0x78, 0x03, 0xc3, 0x33, 0xce, 0x33, 0xce, 0xd8, 0xf9, 0xff, 0x12, 0x14, 0x64,
+0xfd, 0xac, 0xf0, 0x12, 0x09, 0x74, 0x8e, 0x43, 0x8f, 0x44, 0xe5, 0x09, 0x24, 0x0b, 0x12, 0x12,
+0x63, 0x12, 0x13, 0x77, 0xe5, 0x44, 0x2f, 0xff, 0xe5, 0x43, 0x3e, 0xfe, 0xef, 0x78, 0x02, 0xce,
+0xc3, 0x13, 0xce, 0x13, 0xd8, 0xf9, 0xf5, 0x44, 0x8e, 0x43, 0xc3, 0x94, 0x28, 0xe5, 0x43, 0x94,
+0x00, 0x50, 0x08, 0x75, 0x43, 0x00, 0x75, 0x44, 0x28, 0x80, 0x11, 0xd3, 0xe5, 0x44, 0x94, 0x46,
+0xe5, 0x43, 0x94, 0x00, 0x40, 0x06, 0x75, 0x43, 0x00, 0x75, 0x44, 0x46, 0xae, 0x43, 0xaf, 0x44,
+0x7c, 0x00, 0x7d, 0x0a, 0x12, 0x09, 0x62, 0xef, 0x24, 0xca, 0xff, 0xee, 0x34, 0xfe, 0xab, 0x53,
+0xaa, 0x54, 0xa9, 0x55, 0x8f, 0xf0, 0x12, 0x0a, 0xc5, 0xe5, 0x44, 0x25, 0xe0, 0xff, 0xe5, 0x43,
+0x33, 0xfe, 0xc3, 0x74, 0xaa, 0x9f, 0xff, 0xe4, 0x9e, 0xab, 0x50, 0xaa, 0x51, 0xa9, 0x52, 0x8f,
+0xf0, 0x12, 0x0a, 0xc5, 0xe5, 0x09, 0x24, 0x0b, 0x12, 0x12, 0x63, 0xe5, 0x43, 0xf0, 0xa3, 0xe5,
+0x44, 0xf0, 0xe5, 0x09, 0x24, 0x0d, 0x12, 0x12, 0x63, 0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0x7d, 0x03,
+0x12, 0x09, 0x62, 0xe5, 0x3c, 0x2f, 0xff, 0xe5, 0x3b, 0x3e, 0xfe, 0xef, 0x78, 0x02, 0xce, 0xc3,
+0x13, 0xce, 0x13, 0xd8, 0xf9, 0xf5, 0x3c, 0x8e, 0x3b, 0xe5, 0x09, 0x24, 0x0f, 0x12, 0x12, 0x63,
+0x12, 0x13, 0x77, 0xe5, 0x3e, 0x2f, 0xff, 0xe5, 0x3d, 0x3e, 0xfe, 0xef, 0x78, 0x02, 0xce, 0xc3,
+0x13, 0xce, 0x13, 0xd8, 0xf9, 0xf5, 0x3e, 0x8e, 0x3d, 0xe5, 0x09, 0x24, 0x0d, 0x12, 0x12, 0x63,
+0xe5, 0x3b, 0xf0, 0xa3, 0xe5, 0x3c, 0xf0, 0xe5, 0x09, 0x24, 0x0f, 0x12, 0x12, 0x63, 0xe5, 0x3d,
+0xf0, 0xa3, 0xe5, 0x3e, 0xf0, 0x12, 0x12, 0x5f, 0x12, 0x07, 0xd2, 0x7c, 0x00, 0x7d, 0x02, 0x12,
+0x09, 0xc9, 0xc0, 0x06, 0xc0, 0x07, 0xe5, 0x09, 0x24, 0x21, 0x12, 0x12, 0x63, 0x12, 0x07, 0xe2,
+0xd0, 0xe0, 0x2f, 0xff, 0xd0, 0xe0, 0x3e, 0xfe, 0x33, 0x95, 0xe0, 0x8f, 0x36, 0x8e, 0x35, 0xf5,
+0x34, 0xf5, 0x33, 0xad, 0x34, 0xac, 0x33, 0x12, 0x12, 0x78, 0x12, 0x14, 0x2f, 0xe5, 0x36, 0x2f,
+0xf5, 0x36, 0xe5, 0x35, 0x3e, 0xf5, 0x35, 0xe5, 0x34, 0x3d, 0xf5, 0x34, 0xe5, 0x33, 0x3c, 0xf5,
+0x33, 0xae, 0x3b, 0xaf, 0x3c, 0xe4, 0xfc, 0xfd, 0x12, 0x13, 0x62, 0xd3, 0x12, 0x0c, 0x2e, 0x40,
+0x0b, 0xe4, 0x85, 0x3c, 0x36, 0x85, 0x3b, 0x35, 0xf5, 0x34, 0xf5, 0x33, 0xc3, 0xe5, 0x3c, 0x95,
+0x36, 0xfb, 0xe5, 0x3b, 0x95, 0x35, 0xfa, 0xe4, 0x95, 0x34, 0xf9, 0xe4, 0x95, 0x33, 0xf8, 0xe5,
+0x09, 0x24, 0x21, 0x12, 0x12, 0x63, 0x12, 0x13, 0xc1, 0x8f, 0x2e, 0x8e, 0x2d, 0x8d, 0x2c, 0x8c,
+0x2b, 0xae, 0x23, 0xaf, 0x24, 0xee, 0x12, 0x13, 0x5d, 0x12, 0x0b, 0x11, 0xef, 0x25, 0x2e, 0xff,
+0xee, 0x35, 0x2d, 0xfe, 0xed, 0x35, 0x2c, 0xfd, 0xec, 0x35, 0x2b, 0xfc, 0x12, 0x13, 0x6e, 0xe5,
+0x3b, 0xc3, 0x13, 0xfe, 0xe5, 0x3c, 0x12, 0x13, 0x34, 0xc0, 0x06, 0xc0, 0x07, 0xae, 0x3b, 0xaf,
+0x3c, 0xab, 0x07, 0xaa, 0x06, 0xe4, 0xf9, 0xf8, 0xd0, 0x07, 0xd0, 0x06, 0x12, 0x0b, 0x9c, 0x8f,
+0x2e, 0x8e, 0x2d, 0x8d, 0x2c, 0x8c, 0x2b, 0xe5, 0x09, 0x24, 0x21, 0x12, 0x12, 0x63, 0x12, 0x07,
+0xe2, 0x7c, 0x00, 0x7d, 0x02, 0x12, 0x09, 0xc9, 0xc0, 0x06, 0xc0, 0x07, 0x12, 0x12, 0x5f, 0x12,
+0x07, 0xd2, 0xd0, 0xe0, 0x2f, 0xff, 0xd0, 0xe0, 0x3e, 0xfe, 0x33, 0x95, 0xe0, 0x8f, 0x3a, 0x8e,
+0x39, 0xf5, 0x38, 0xf5, 0x37, 0xad, 0x38, 0xac, 0x37, 0x12, 0x12, 0x78, 0x12, 0x14, 0x2f, 0xe5,
+0x3a, 0x2f, 0xf5, 0x3a, 0xe5, 0x39, 0x3e, 0xf5, 0x39, 0xe5, 0x38, 0x3d, 0xf5, 0x38, 0xe5, 0x37,
+0x3c, 0xf5, 0x37, 0xae, 0x3d, 0xaf, 0x3e, 0xe4, 0xfc, 0xfd, 0xab, 0x3a, 0xaa, 0x39, 0xa9, 0x38,
+0xa8, 0x37, 0xd3, 0x12, 0x0c, 0x2e, 0x40, 0x0b, 0xe4, 0x85, 0x3e, 0x3a, 0x85, 0x3d, 0x39, 0xf5,
+0x38, 0xf5, 0x37, 0xc3, 0xe5, 0x3e, 0x95, 0x3a, 0xfb, 0xe5, 0x3d, 0x95, 0x39, 0xfa, 0xe4, 0x95,
+0x38, 0xf9, 0xe4, 0x95, 0x37, 0xf8, 0x12, 0x12, 0x5f, 0x12, 0x13, 0xc1, 0x8f, 0x32, 0x8e, 0x31,
+0x8d, 0x30, 0x8c, 0x2f, 0xae, 0x25, 0xaf, 0x26, 0xee, 0x33, 0x95, 0xe0, 0xfd, 0xfc, 0xab, 0x3a,
+0xaa, 0x39, 0xa9, 0x38, 0xa8, 0x37, 0x12, 0x0b, 0x11, 0xef, 0x25, 0x32, 0xff, 0xee, 0x35, 0x31,
+0xfe, 0xed, 0x35, 0x30, 0xfd, 0xec, 0x35, 0x2f, 0xfc, 0x12, 0x13, 0x6e, 0xe5, 0x3d, 0xc3, 0x13,
+0xfe, 0xe5, 0x3e, 0x12, 0x13, 0x34, 0xc0, 0x06, 0xc0, 0x07, 0xae, 0x3d, 0xaf, 0x3e, 0xab, 0x07,
+0xaa, 0x06, 0xe4, 0xf9, 0xf8, 0xd0, 0x07, 0xd0, 0x06, 0x12, 0x0b, 0x9c, 0x8f, 0x32, 0x8e, 0x31,
+0x8d, 0x30, 0x8c, 0x2f, 0xe5, 0x09, 0x24, 0x07, 0x12, 0x12, 0x63, 0xe0, 0x30, 0xe0, 0x11, 0x12,
+0x12, 0x70, 0xe5, 0x2d, 0xf0, 0xa3, 0xe5, 0x2e, 0x12, 0x12, 0x6f, 0xa3, 0xa3, 0xee, 0x80, 0x21,
+0xe5, 0x09, 0x24, 0x1b, 0x12, 0x12, 0x63, 0xe0, 0xff, 0xa3, 0xe0, 0x12, 0x12, 0x70, 0xcf, 0x12,
+0x14, 0x47, 0x24, 0x1d, 0x12, 0x12, 0x63, 0xe0, 0xff, 0xa3, 0xe0, 0x12, 0x12, 0x70, 0xa3, 0xa3,
+0xcf, 0xf0, 0xa3, 0xef, 0xf0, 0xe5, 0x09, 0x24, 0x21, 0x12, 0x12, 0x63, 0x12, 0x13, 0x2c, 0x24,
+0x15, 0x12, 0x12, 0x63, 0xee, 0xf0, 0xa3, 0xef, 0xf0, 0x12, 0x12, 0x5f, 0x12, 0x13, 0x2c, 0x24,
+0x17, 0x12, 0x12, 0x29, 0x12, 0x14, 0x46, 0x24, 0x09, 0x12, 0x12, 0x63, 0xe0, 0xc3, 0x94, 0x14,
+0x50, 0x0a, 0xe5, 0x09, 0x24, 0x09, 0x12, 0x12, 0x63, 0xe0, 0x04, 0xf0, 0xe5, 0x09, 0x24, 0x0a,
+0x12, 0x12, 0x63, 0x74, 0x01, 0xf0, 0x22, 0xe5, 0x09, 0x24, 0x0a, 0x12, 0x12, 0x63, 0xe0, 0xd3,
+0x94, 0x00, 0x40, 0x0a, 0xe5, 0x09, 0x24, 0x0a, 0x12, 0x12, 0x63, 0xe0, 0x14, 0xf0, 0xe5, 0x09,
+0x24, 0x0a, 0x12, 0x12, 0x63, 0xe0, 0x70, 0x30, 0xe5, 0x09, 0x24, 0x09, 0x12, 0x12, 0x63, 0xe4,
+0xf0, 0xe5, 0x09, 0x24, 0x0d, 0x12, 0x12, 0x63, 0xe4, 0xf0, 0xa3, 0x74, 0x5a, 0xf0, 0xe5, 0x09,
+0x24, 0x0f, 0x12, 0x12, 0x63, 0xe4, 0xf0, 0xa3, 0x74, 0x5a, 0xf0, 0xe5, 0x09, 0x24, 0x0b, 0x12,
+0x12, 0x63, 0xe4, 0xf0, 0xa3, 0x74, 0x28, 0xf0, 0x22, 0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0x12, 0x2b,
+0x6f, 0x22, 0xe0, 0xfe, 0xa3, 0xe0, 0xc3, 0x95, 0x26, 0xff, 0xee, 0x95, 0x25, 0xfe, 0x12, 0x2b,
+0x6f, 0x22, 0xe0, 0xfe, 0xa3, 0xe0, 0xc3, 0x95, 0x24, 0xff, 0xee, 0x95, 0x23, 0xfe, 0x12, 0x2b,
+0x6f, 0x22, 0xe7, 0x09, 0xf6, 0x08, 0xdf, 0xfa, 0x80, 0x46, 0xe7, 0x09, 0xf2, 0x08, 0xdf, 0xfa,
+0x80, 0x3e, 0x88, 0x82, 0x8c, 0x83, 0xe7, 0x09, 0xf0, 0xa3, 0xdf, 0xfa, 0x80, 0x32, 0xe3, 0x09,
+0xf6, 0x08, 0xdf, 0xfa, 0x80, 0x78, 0xe3, 0x09, 0xf2, 0x08, 0xdf, 0xfa, 0x80, 0x70, 0x88, 0x82,
+0x8c, 0x83, 0xe3, 0x09, 0xf0, 0xa3, 0xdf, 0xfa, 0x80, 0x64, 0x89, 0x82, 0x8a, 0x83, 0xe0, 0xa3,
+0xf6, 0x08, 0xdf, 0xfa, 0x80, 0x58, 0x89, 0x82, 0x8a, 0x83, 0xe0, 0xa3, 0xf2, 0x08, 0xdf, 0xfa,
+0x80, 0x4c, 0x80, 0xd2, 0x80, 0xfa, 0x80, 0xc6, 0x80, 0xd4, 0x80, 0x69, 0x80, 0xf2, 0x80, 0x33,
+0x80, 0x10, 0x80, 0xa6, 0x80, 0xea, 0x80, 0x9a, 0x80, 0xa8, 0x80, 0xda, 0x80, 0xe2, 0x80, 0xca,
+0x80, 0x33, 0x89, 0x82, 0x8a, 0x83, 0xec, 0xfa, 0xe4, 0x93, 0xa3, 0xc8, 0xc5, 0x82, 0xc8, 0xcc,
+0xc5, 0x83, 0xcc, 0xf0, 0xa3, 0xc8, 0xc5, 0x82, 0xc8, 0xcc, 0xc5, 0x83, 0xcc, 0xdf, 0xe9, 0xde,
+0xe7, 0x80, 0x0d, 0x89, 0x82, 0x8a, 0x83, 0xe4, 0x93, 0xa3, 0xf6, 0x08, 0xdf, 0xf9, 0xec, 0xfa,
+0xa9, 0xf0, 0xed, 0xfb, 0x22, 0x89, 0x82, 0x8a, 0x83, 0xec, 0xfa, 0xe0, 0xa3, 0xc8, 0xc5, 0x82,
+0xc8, 0xcc, 0xc5, 0x83, 0xcc, 0xf0, 0xa3, 0xc8, 0xc5, 0x82, 0xc8, 0xcc, 0xc5, 0x83, 0xcc, 0xdf,
+0xea, 0xde, 0xe8, 0x80, 0xdb, 0x89, 0x82, 0x8a, 0x83, 0xe4, 0x93, 0xa3, 0xf2, 0x08, 0xdf, 0xf9,
+0x80, 0xcc, 0x88, 0xf0, 0xef, 0x60, 0x01, 0x0e, 0x4e, 0x60, 0xc3, 0x88, 0xf0, 0xed, 0x24, 0x02,
+0xb4, 0x04, 0x00, 0x50, 0xb9, 0xf5, 0x82, 0xeb, 0x24, 0x02, 0xb4, 0x04, 0x00, 0x50, 0xaf, 0x23,
+0x23, 0x45, 0x82, 0x23, 0x90, 0x08, 0x42, 0x73, 0xbb, 0x01, 0x06, 0x89, 0x82, 0x8a, 0x83, 0xe0,
+0x22, 0x50, 0x02, 0xe7, 0x22, 0xbb, 0xfe, 0x02, 0xe3, 0x22, 0x89, 0x82, 0x8a, 0x83, 0xe4, 0x93,
+0x22, 0xbb, 0x01, 0x0c, 0xe5, 0x82, 0x29, 0xf5, 0x82, 0xe5, 0x83, 0x3a, 0xf5, 0x83, 0xe0, 0x22,
+0x50, 0x06, 0xe9, 0x25, 0x82, 0xf8, 0xe6, 0x22, 0xbb, 0xfe, 0x06, 0xe9, 0x25, 0x82, 0xf8, 0xe2,
+0x22, 0xe5, 0x82, 0x29, 0xf5, 0x82, 0xe5, 0x83, 0x3a, 0xf5, 0x83, 0xe4, 0x93, 0x22, 0xbb, 0x01,
+0x06, 0x89, 0x82, 0x8a, 0x83, 0xf0, 0x22, 0x50, 0x02, 0xf7, 0x22, 0xbb, 0xfe, 0x01, 0xf3, 0x22,
+0xf8, 0xbb, 0x01, 0x0d, 0xe5, 0x82, 0x29, 0xf5, 0x82, 0xe5, 0x83, 0x3a, 0xf5, 0x83, 0xe8, 0xf0,
+0x22, 0x50, 0x06, 0xe9, 0x25, 0x82, 0xc8, 0xf6, 0x22, 0xbb, 0xfe, 0x05, 0xe9, 0x25, 0x82, 0xc8,
+0xf2, 0x22, 0xef, 0x8d, 0xf0, 0xa4, 0xa8, 0xf0, 0xcf, 0x8c, 0xf0, 0xa4, 0x28, 0xce, 0x8d, 0xf0,
+0xa4, 0x2e, 0xfe, 0x22, 0xbc, 0x00, 0x0b, 0xbe, 0x00, 0x29, 0xef, 0x8d, 0xf0, 0x84, 0xff, 0xad,
+0xf0, 0x22, 0xe4, 0xcc, 0xf8, 0x75, 0xf0, 0x08, 0xef, 0x2f, 0xff, 0xee, 0x33, 0xfe, 0xec, 0x33,
+0xfc, 0xee, 0x9d, 0xec, 0x98, 0x40, 0x05, 0xfc, 0xee, 0x9d, 0xfe, 0x0f, 0xd5, 0xf0, 0xe9, 0xe4,
+0xce, 0xfd, 0x22, 0xed, 0xf8, 0xf5, 0xf0, 0xee, 0x84, 0x20, 0xd2, 0x1c, 0xfe, 0xad, 0xf0, 0x75,
+0xf0, 0x08, 0xef, 0x2f, 0xff, 0xed, 0x33, 0xfd, 0x40, 0x07, 0x98, 0x50, 0x06, 0xd5, 0xf0, 0xf2,
+0x22, 0xc3, 0x98, 0xfd, 0x0f, 0xd5, 0xf0, 0xea, 0x22, 0xc2, 0xd5, 0xec, 0x30, 0xe7, 0x09, 0xb2,
+0xd5, 0xe4, 0xc3, 0x9d, 0xfd, 0xe4, 0x9c, 0xfc, 0xee, 0x30, 0xe7, 0x15, 0xb2, 0xd5, 0xe4, 0xc3,
+0x9f, 0xff, 0xe4, 0x9e, 0xfe, 0x12, 0x09, 0x74, 0xc3, 0xe4, 0x9d, 0xfd, 0xe4, 0x9c, 0xfc, 0x80,
+0x03, 0x12, 0x09, 0x74, 0x30, 0xd5, 0x07, 0xc3, 0xe4, 0x9f, 0xff, 0xe4, 0x9e, 0xfe, 0x22, 0xc5,
+0xf0, 0xf8, 0xa3, 0xe0, 0x28, 0xf0, 0xc5, 0xf0, 0xf8, 0xe5, 0x82, 0x15, 0x82, 0x70, 0x02, 0x15,
+0x83, 0xe0, 0x38, 0xf0, 0x22, 0xbb, 0x01, 0x0a, 0x89, 0x82, 0x8a, 0x83, 0xe0, 0xf5, 0xf0, 0xa3,
+0xe0, 0x22, 0x50, 0x06, 0x87, 0xf0, 0x09, 0xe7, 0x19, 0x22, 0xbb, 0xfe, 0x07, 0xe3, 0xf5, 0xf0,
+0x09, 0xe3, 0x19, 0x22, 0x89, 0x82, 0x8a, 0x83, 0xe4, 0x93, 0xf5, 0xf0, 0x74, 0x01, 0x93, 0x22,
+0xbb, 0x01, 0x10, 0xe5, 0x82, 0x29, 0xf5, 0x82, 0xe5, 0x83, 0x3a, 0xf5, 0x83, 0xe0, 0xf5, 0xf0,
+0xa3, 0xe0, 0x22, 0x50, 0x09, 0xe9, 0x25, 0x82, 0xf8, 0x86, 0xf0, 0x08, 0xe6, 0x22, 0xbb, 0xfe,
+0x0a, 0xe9, 0x25, 0x82, 0xf8, 0xe2, 0xf5, 0xf0, 0x08, 0xe2, 0x22, 0xe5, 0x83, 0x2a, 0xf5, 0x83,
+0xe9, 0x93, 0xf5, 0xf0, 0xa3, 0xe9, 0x93, 0x22, 0xbb, 0x01, 0x0d, 0xc5, 0x82, 0x29, 0xc5, 0x82,
+0xc5, 0x83, 0x3a, 0xc5, 0x83, 0x02, 0x09, 0xff, 0x50, 0x11, 0xc5, 0x82, 0x29, 0xf8, 0x08, 0xe5,
+0xf0, 0x26, 0xf6, 0x18, 0xf5, 0xf0, 0xe5, 0x82, 0x36, 0xf6, 0x22, 0xbb, 0xfe, 0x11, 0xc5, 0x82,
+0x29, 0xf8, 0x08, 0xe2, 0x25, 0xf0, 0xf5, 0xf0, 0xf2, 0x18, 0xe2, 0x35, 0x82, 0xf2, 0x22, 0xf8,
+0xe5, 0x82, 0x29, 0xf5, 0x82, 0xe5, 0x83, 0x2a, 0xf5, 0x83, 0x74, 0x01, 0x93, 0x25, 0xf0, 0xf5,
+0xf0, 0xe4, 0x93, 0x38, 0x22, 0xbb, 0x01, 0x0a, 0x89, 0x82, 0x8a, 0x83, 0xf0, 0xe5, 0xf0, 0xa3,
+0xf0, 0x22, 0x50, 0x06, 0xf7, 0x09, 0xa7, 0xf0, 0x19, 0x22, 0xbb, 0xfe, 0x06, 0xf3, 0xe5, 0xf0,
+0x09, 0xf3, 0x19, 0x22, 0xf8, 0xbb, 0x01, 0x11, 0xe5, 0x82, 0x29, 0xf5, 0x82, 0xe5, 0x83, 0x3a,
+0xf5, 0x83, 0xe8, 0xf0, 0xe5, 0xf0, 0xa3, 0xf0, 0x22, 0x50, 0x09, 0xe9, 0x25, 0x82, 0xc8, 0xf6,
+0x08, 0xa6, 0xf0, 0x22, 0xbb, 0xfe, 0x09, 0xe9, 0x25, 0x82, 0xc8, 0xf2, 0xe5, 0xf0, 0x08, 0xf2,
+0x22, 0xe8, 0x8f, 0xf0, 0xa4, 0xcc, 0x8b, 0xf0, 0xa4, 0x2c, 0xfc, 0xe9, 0x8e, 0xf0, 0xa4, 0x2c,
+0xfc, 0x8a, 0xf0, 0xed, 0xa4, 0x2c, 0xfc, 0xea, 0x8e, 0xf0, 0xa4, 0xcd, 0xa8, 0xf0, 0x8b, 0xf0,
+0xa4, 0x2d, 0xcc, 0x38, 0x25, 0xf0, 0xfd, 0xe9, 0x8f, 0xf0, 0xa4, 0x2c, 0xcd, 0x35, 0xf0, 0xfc,
+0xeb, 0x8e, 0xf0, 0xa4, 0xfe, 0xa9, 0xf0, 0xeb, 0x8f, 0xf0, 0xa4, 0xcf, 0xc5, 0xf0, 0x2e, 0xcd,
+0x39, 0xfe, 0xe4, 0x3c, 0xfc, 0xea, 0xa4, 0x2d, 0xce, 0x35, 0xf0, 0xfd, 0xe4, 0x3c, 0xfc, 0x22,
+0x75, 0xf0, 0x08, 0x75, 0x82, 0x00, 0xef, 0x2f, 0xff, 0xee, 0x33, 0xfe, 0xcd, 0x33, 0xcd, 0xcc,
+0x33, 0xcc, 0xc5, 0x82, 0x33, 0xc5, 0x82, 0x9b, 0xed, 0x9a, 0xec, 0x99, 0xe5, 0x82, 0x98, 0x40,
+0x0c, 0xf5, 0x82, 0xee, 0x9b, 0xfe, 0xed, 0x9a, 0xfd, 0xec, 0x99, 0xfc, 0x0f, 0xd5, 0xf0, 0xd6,
+0xe4, 0xce, 0xfb, 0xe4, 0xcd, 0xfa, 0xe4, 0xcc, 0xf9, 0xa8, 0x82, 0x22, 0xb8, 0x00, 0xc1, 0xb9,
+0x00, 0x59, 0xba, 0x00, 0x2d, 0xec, 0x8b, 0xf0, 0x84, 0xcf, 0xce, 0xcd, 0xfc, 0xe5, 0xf0, 0xcb,
+0xf9, 0x78, 0x18, 0xef, 0x2f, 0xff, 0xee, 0x33, 0xfe, 0xed, 0x33, 0xfd, 0xec, 0x33, 0xfc, 0xeb,
+0x33, 0xfb, 0x10, 0xd7, 0x03, 0x99, 0x40, 0x04, 0xeb, 0x99, 0xfb, 0x0f, 0xd8, 0xe5, 0xe4, 0xf9,
+0xfa, 0x22, 0x78, 0x18, 0xef, 0x2f, 0xff, 0xee, 0x33, 0xfe, 0xed, 0x33, 0xfd, 0xec, 0x33, 0xfc,
+0xc9, 0x33, 0xc9, 0x10, 0xd7, 0x05, 0x9b, 0xe9, 0x9a, 0x40, 0x07, 0xec, 0x9b, 0xfc, 0xe9, 0x9a,
+0xf9, 0x0f, 0xd8, 0xe0, 0xe4, 0xc9, 0xfa, 0xe4, 0xcc, 0xfb, 0x22, 0x75, 0xf0, 0x10, 0xef, 0x2f,
+0xff, 0xee, 0x33, 0xfe, 0xed, 0x33, 0xfd, 0xcc, 0x33, 0xcc, 0xc8, 0x33, 0xc8, 0x10, 0xd7, 0x07,
+0x9b, 0xec, 0x9a, 0xe8, 0x99, 0x40, 0x0a, 0xed, 0x9b, 0xfd, 0xec, 0x9a, 0xfc, 0xe8, 0x99, 0xf8,
+0x0f, 0xd5, 0xf0, 0xda, 0xe4, 0xcd, 0xfb, 0xe4, 0xcc, 0xfa, 0xe4, 0xc8, 0xf9, 0x22, 0xeb, 0x9f,
+0xf5, 0xf0, 0xea, 0x9e, 0x42, 0xf0, 0xe9, 0x9d, 0x42, 0xf0, 0xe8, 0x9c, 0x45, 0xf0, 0x22, 0xe8,
+0x60, 0x0f, 0xef, 0xc3, 0x33, 0xff, 0xee, 0x33, 0xfe, 0xed, 0x33, 0xfd, 0xec, 0x33, 0xfc, 0xd8,
+0xf1, 0x22, 0xe6, 0xfc, 0x08, 0xe6, 0xfd, 0x08, 0xe6, 0xfe, 0x08, 0xe6, 0xff, 0x22, 0xe4, 0x93,
+0xfc, 0x74, 0x01, 0x93, 0xfd, 0x74, 0x02, 0x93, 0xfe, 0x74, 0x03, 0x93, 0xff, 0x22, 0xe6, 0xfb,
+0x08, 0xe6, 0xf9, 0x08, 0xe6, 0xfa, 0x08, 0xe6, 0xcb, 0xf8, 0x22, 0xec, 0xf6, 0x08, 0xed, 0xf6,
+0x08, 0xee, 0xf6, 0x08, 0xef, 0xf6, 0x22, 0xd0, 0x83, 0xd0, 0x82, 0xe4, 0x93, 0xf6, 0x08, 0x74,
+0x01, 0x93, 0xf6, 0x08, 0x74, 0x02, 0x93, 0xf6, 0x08, 0x74, 0x03, 0x93, 0xf6, 0x74, 0x04, 0x73,
+0xa4, 0x25, 0x82, 0xf5, 0x82, 0xe5, 0xf0, 0x35, 0x83, 0xf5, 0x83, 0x22, 0xec, 0x8e, 0xf0, 0xa4,
+0xcc, 0xc5, 0xf0, 0xcc, 0xcd, 0xf8, 0xef, 0xa4, 0xce, 0xc5, 0xf0, 0x2d, 0xfd, 0xe4, 0x3c, 0xfc,
+0xe8, 0xa4, 0x2e, 0xc8, 0xc5, 0xf0, 0x3d, 0xfd, 0xe4, 0x3c, 0xfc, 0xef, 0xa4, 0xff, 0xe5, 0xf0,
+0x28, 0xfe, 0xe4, 0x3d, 0xfd, 0xe4, 0x3c, 0xfc, 0x22, 0xef, 0x4e, 0x60, 0x12, 0xef, 0x60, 0x01,
+0x0e, 0xed, 0xbb, 0x01, 0x0b, 0x89, 0x82, 0x8a, 0x83, 0xf0, 0xa3, 0xdf, 0xfc, 0xde, 0xfa, 0x22,
+0x89, 0xf0, 0x50, 0x07, 0xf7, 0x09, 0xdf, 0xfc, 0xa9, 0xf0, 0x22, 0xbb, 0xfe, 0xfc, 0xf3, 0x09,
+0xdf, 0xfc, 0xa9, 0xf0, 0x22, 0xe4, 0xf5, 0x23, 0xe5, 0x1e, 0x60, 0x07, 0xe5, 0x1f, 0x70, 0x03,
+0x02, 0x0f, 0x70, 0xe5, 0x1f, 0x60, 0x07, 0xe5, 0x1e, 0x70, 0x03, 0x02, 0x0f, 0x70, 0xe5, 0x1e,
+0x70, 0x03, 0x02, 0x0e, 0xd8, 0xe5, 0x1f, 0x70, 0x03, 0x02, 0x0e, 0xd8, 0xe5, 0x20, 0xd3, 0x94,
+0x01, 0x40, 0x0a, 0x78, 0xa2, 0xe6, 0x94, 0x64, 0x50, 0x0c, 0x06, 0x80, 0x09, 0x78, 0xa1, 0xe6,
+0xc3, 0x94, 0x64, 0x50, 0x01, 0x06, 0x78, 0x9e, 0xe6, 0x65, 0x20, 0x60, 0x12, 0xe4, 0x78, 0x9c,
+0xf6, 0x78, 0x92, 0x12, 0x27, 0x98, 0x78, 0x90, 0xf6, 0x08, 0xf6, 0x78, 0x9e, 0xa6, 0x20, 0x78,
+0x90, 0xe6, 0xff, 0x60, 0x13, 0xe5, 0x1e, 0x12, 0x0f, 0x82, 0x50, 0x0c, 0x78, 0x90, 0xe6, 0xff,
+0xc3, 0xe5, 0x1e, 0x78, 0x93, 0x12, 0x27, 0xb4, 0x78, 0x90, 0xa6, 0x1e, 0x08, 0xe6, 0xff, 0x60,
+0x13, 0xe5, 0x1f, 0x12, 0x0f, 0x82, 0x50, 0x0c, 0x78, 0x91, 0xe6, 0xff, 0xc3, 0xe5, 0x1f, 0x78,
+0x95, 0x12, 0x27, 0xb4, 0x78, 0x91, 0xa6, 0x1f, 0x78, 0x96, 0xe6, 0xfe, 0x08, 0xe6, 0xff, 0x12,
+0x2b, 0x6f, 0xc0, 0x06, 0xc0, 0x07, 0x12, 0x0f, 0x77, 0xd0, 0x05, 0xd0, 0x04, 0x12, 0x27, 0xd7,
+0x40, 0x04, 0x78, 0x92, 0x80, 0x02, 0x78, 0x96, 0xe6, 0xfe, 0x08, 0xe6, 0xff, 0x78, 0x96, 0xa6,
+0x06, 0x08, 0xa6, 0x07, 0x08, 0xe6, 0xfe, 0x08, 0xe6, 0xff, 0x12, 0x2b, 0x6f, 0xc0, 0x06, 0xc0,
+0x07, 0x12, 0x0f, 0xa4, 0xd0, 0x05, 0xd0, 0x04, 0x12, 0x27, 0xd7, 0x40, 0x04, 0x78, 0x94, 0x80,
+0x02, 0x78, 0x98, 0xe6, 0xfe, 0x08, 0xe6, 0xff, 0x78, 0x98, 0xa6, 0x06, 0x08, 0xa6, 0x07, 0xe4,
+0x78, 0x9d, 0xf6, 0x78, 0xa3, 0xe6, 0x54, 0x3c, 0x60, 0x79, 0x12, 0x0f, 0x77, 0x12, 0x27, 0xee,
+0x50, 0x08, 0x12, 0x0f, 0xa4, 0x12, 0x27, 0xee, 0x40, 0x69, 0x78, 0x90, 0xe6, 0x78, 0x94, 0x60,
+0x0f, 0x12, 0x27, 0xcb, 0x78, 0x92, 0xe6, 0xfc, 0x08, 0xe6, 0xfd, 0x12, 0x09, 0xc9, 0x80, 0x03,
+0x12, 0x27, 0xcb, 0x8e, 0x24, 0x8f, 0x25, 0xaf, 0x25, 0xae, 0x24, 0x12, 0x2b, 0x6f, 0xd3, 0xef,
+0x95, 0x21, 0x74, 0x80, 0xf8, 0x6e, 0x98, 0x40, 0x1c, 0x78, 0xa3, 0xe6, 0x54, 0x0c, 0x60, 0x33,
+0x78, 0x95, 0x12, 0x27, 0xe3, 0x7f, 0x02, 0x40, 0x02, 0x7f, 0x01, 0x12, 0x27, 0xa0, 0x30, 0xe1,
+0x02, 0x7f, 0x0c, 0x80, 0x1a, 0x78, 0xa3, 0xe6, 0x54, 0x30, 0x60, 0x17, 0x78, 0x93, 0x12, 0x27,
+0xe3, 0x7f, 0x03, 0x40, 0x02, 0x7f, 0x04, 0x12, 0x27, 0xa0, 0x30, 0xe2, 0x02, 0x7f, 0x30, 0x78,
+0xa3, 0xa6, 0x07, 0x78, 0xa3, 0xe6, 0x30, 0xe1, 0x52, 0x90, 0x01, 0x9b, 0xe0, 0x60, 0x4c, 0x78,
+0x92, 0x12, 0x0f, 0xaf, 0x50, 0x45, 0x78, 0x94, 0x12, 0x0f, 0xaf, 0x50, 0x3e, 0xe5, 0x20, 0x64,
+0x01, 0x70, 0x18, 0x12, 0x27, 0xc2, 0x9f, 0x40, 0x12, 0x75, 0x23, 0x0c, 0x90, 0x01, 0xaa, 0xe0,
+0x7f, 0x02, 0x30, 0xe0, 0x02, 0x7f, 0x00, 0x78, 0xa3, 0xa6, 0x07, 0xe5, 0x20, 0xd3, 0x94, 0x01,
+0x40, 0x19, 0x12, 0x27, 0xc2, 0xd3, 0x9f, 0x40, 0x12, 0x75, 0x23, 0x1c, 0x90, 0x01, 0xaa, 0xe0,
+0x7f, 0x02, 0x30, 0xe0, 0x02, 0x7f, 0x00, 0x78, 0xa3, 0xa6, 0x07, 0x78, 0x9c, 0xe6, 0x60, 0x03,
+0x02, 0x0f, 0x70, 0x76, 0x01, 0x02, 0x0f, 0x70, 0x78, 0x9c, 0xe6, 0xff, 0x60, 0x4c, 0x78, 0xa3,
+0xe6, 0x30, 0xe0, 0x22, 0xef, 0xd3, 0x94, 0x01, 0x40, 0x1c, 0x12, 0x27, 0xc2, 0x9f, 0x50, 0x16,
+0x79, 0xa1, 0xe7, 0x78, 0xa2, 0x96, 0x40, 0x08, 0xe4, 0x78, 0xa0, 0xf6, 0x18, 0x06, 0x80, 0x06,
+0xe4, 0x78, 0x9f, 0xf6, 0x08, 0x06, 0xe4, 0x78, 0x90, 0x12, 0x27, 0x98, 0x08, 0x12, 0x27, 0x98,
+0x08, 0xf6, 0x08, 0xf6, 0x78, 0x9c, 0xf6, 0x78, 0xa1, 0xf6, 0x08, 0xf6, 0x78, 0x9e, 0xf6, 0x18,
+0x76, 0x01, 0x78, 0xa3, 0xe6, 0x44, 0x3e, 0xf6, 0x80, 0x46, 0x90, 0x01, 0x9c, 0xe0, 0x7f, 0x01,
+0x30, 0xe0, 0x02, 0x7f, 0x14, 0x78, 0x9d, 0xe6, 0xfe, 0xd3, 0x9f, 0x40, 0x33, 0xee, 0x94, 0x1e,
+0x50, 0x2e, 0x78, 0xa3, 0xe6, 0x30, 0xe0, 0x1e, 0x78, 0x9f, 0xe6, 0xff, 0xb4, 0x01, 0x05, 0x75,
+0x23, 0x05, 0x80, 0x12, 0xef, 0xb4, 0x02, 0x05, 0x75, 0x23, 0x0b, 0x80, 0x09, 0x78, 0xa0, 0xe6,
+0xb4, 0x01, 0x03, 0x75, 0x23, 0x15, 0x78, 0xa3, 0x76, 0xff, 0xe4, 0x78, 0x9f, 0xf6, 0x08, 0xf6,
+0x78, 0xa4, 0xa6, 0x23, 0xaf, 0x23, 0x22, 0x78, 0x92, 0xe6, 0xfe, 0x08, 0xe6, 0xff, 0x12, 0x2b,
+0x6f, 0x22, 0xc3, 0x9f, 0xff, 0xe4, 0x94, 0x00, 0xfe, 0x12, 0x2b, 0x6f, 0xac, 0x06, 0xad, 0x07,
+0xe5, 0x22, 0x75, 0xf0, 0x04, 0xa4, 0xff, 0xc3, 0xed, 0x9f, 0xe5, 0xf0, 0x64, 0x80, 0xf8, 0xec,
+0x64, 0x80, 0x98, 0x22, 0x78, 0x94, 0xe6, 0xfe, 0x08, 0xe6, 0xff, 0x12, 0x2b, 0x6f, 0x22, 0xe6,
+0xfe, 0x08, 0xe6, 0xff, 0x12, 0x2b, 0x6f, 0xc3, 0xef, 0x95, 0x22, 0x74, 0x80, 0xf8, 0x6e, 0x98,
+0x22, 0xef, 0x12, 0x12, 0xc2, 0xe0, 0xf5, 0x2f, 0x12, 0x12, 0x89, 0xe4, 0x93, 0xfd, 0x7c, 0x00,
+0x74, 0x03, 0x93, 0xfe, 0x74, 0x04, 0x93, 0xff, 0x12, 0x09, 0x74, 0x8e, 0x30, 0x8f, 0x31, 0xe5,
+0x2f, 0x70, 0x58, 0x75, 0x22, 0x01, 0x12, 0x13, 0x04, 0xe4, 0xf5, 0x27, 0xf5, 0x28, 0x78, 0x02,
+0xe2, 0xfe, 0x08, 0xe2, 0xff, 0x78, 0x01, 0x12, 0x13, 0x49, 0x78, 0x06, 0xe2, 0xfe, 0x08, 0xe2,
+0xff, 0x78, 0x05, 0x12, 0x13, 0xcd, 0x74, 0x09, 0x93, 0xfc, 0x74, 0x0a, 0x93, 0xfd, 0xc3, 0xec,
+0x94, 0x00, 0x50, 0x05, 0x12, 0x14, 0x3a, 0x80, 0x04, 0xae, 0x25, 0xaf, 0x26, 0x12, 0x12, 0xd0,
+0x40, 0x06, 0xae, 0x29, 0xaf, 0x2a, 0x80, 0x04, 0x7e, 0x00, 0x7f, 0x01, 0x8e, 0x25, 0x8f, 0x26,
+0x78, 0x0a, 0xe2, 0xfe, 0x08, 0xe2, 0xff, 0x78, 0x09, 0x80, 0x62, 0x78, 0xaa, 0xe6, 0x14, 0x65,
+0x2f, 0x70, 0x6a, 0xf5, 0x22, 0x12, 0x13, 0x04, 0x12, 0x12, 0x89, 0x74, 0x03, 0x93, 0xf5, 0x27,
+0x74, 0x04, 0x93, 0xf5, 0x28, 0x12, 0x12, 0x90, 0x12, 0x13, 0x46, 0x12, 0x12, 0x9e, 0x24, 0xfe,
+0x12, 0x12, 0x98, 0x24, 0xfd, 0x12, 0x13, 0xcc, 0x74, 0x0b, 0x93, 0xfc, 0x74, 0x0c, 0x93, 0xfd,
+0xc3, 0xec, 0x94, 0x00, 0x50, 0x05, 0x12, 0x14, 0x3a, 0x80, 0x04, 0xae, 0x25, 0xaf, 0x26, 0x12,
+0x12, 0xd0, 0x40, 0x06, 0xae, 0x29, 0xaf, 0x2a, 0x80, 0x04, 0x7e, 0x00, 0x7f, 0x01, 0x8e, 0x25,
+0x8f, 0x26, 0x12, 0x12, 0x9e, 0x24, 0xfa, 0x12, 0x12, 0x98, 0x24, 0xf9, 0xf8, 0x12, 0x13, 0x15,
+0xfe, 0xe4, 0x8f, 0x2e, 0x8e, 0x2d, 0xf5, 0x2c, 0xf5, 0x2b, 0x02, 0x11, 0x5d, 0x12, 0x13, 0x9e,
+0xac, 0x06, 0xad, 0x07, 0xe5, 0x30, 0xc3, 0x13, 0xfe, 0xe5, 0x31, 0x13, 0x2d, 0xf5, 0x28, 0xec,
+0x3e, 0xf5, 0x27, 0x12, 0x12, 0x9e, 0x24, 0xfe, 0x12, 0x12, 0x98, 0x24, 0xfd, 0x12, 0x13, 0x48,
+0x12, 0x12, 0x9e, 0x24, 0x06, 0x12, 0x12, 0x98, 0x24, 0x05, 0x12, 0x13, 0xcc, 0xd3, 0xe5, 0x24,
+0x95, 0x26, 0xe5, 0x23, 0x95, 0x25, 0x40, 0x38, 0xe5, 0x2f, 0xb4, 0x01, 0x25, 0xe5, 0x31, 0xae,
+0x30, 0x78, 0x02, 0xc3, 0x33, 0xce, 0x33, 0xce, 0xd8, 0xf9, 0xff, 0x7c, 0x00, 0x7d, 0x05, 0x12,
+0x09, 0x74, 0xaa, 0x06, 0xab, 0x07, 0x12, 0x13, 0x9e, 0xef, 0x2b, 0xf5, 0x28, 0xee, 0x3a, 0x12,
+0x13, 0x02, 0xe4, 0xf5, 0x22, 0x12, 0x14, 0x59, 0x85, 0x23, 0x25, 0x85, 0x24, 0x26, 0x80, 0x37,
+0x78, 0xaa, 0xe6, 0x24, 0xfe, 0xb5, 0x2f, 0x1b, 0x12, 0x13, 0x9e, 0xaa, 0x06, 0xab, 0x07, 0xae,
+0x30, 0xaf, 0x31, 0x7c, 0x00, 0x7d, 0x05, 0x12, 0x09, 0x74, 0xeb, 0x2f, 0xf5, 0x28, 0xea, 0x3e,
+0x12, 0x13, 0x02, 0x75, 0x22, 0x01, 0xe4, 0x85, 0x24, 0x2e, 0x85, 0x23, 0x2d, 0xf5, 0x2c, 0xf5,
+0x2b, 0x85, 0x25, 0x25, 0x85, 0x26, 0x26, 0x12, 0x12, 0x90, 0x12, 0x13, 0x46, 0xae, 0x23, 0xaf,
+0x24, 0xe4, 0xfc, 0xfd, 0xab, 0x2e, 0xaa, 0x2d, 0xa9, 0x2c, 0xa8, 0x2b, 0xc3, 0x12, 0x0c, 0x2e,
+0x50, 0x29, 0xae, 0x25, 0xaf, 0x26, 0xe4, 0xfc, 0xfd, 0xa8, 0x2b, 0xc3, 0x12, 0x0c, 0x2e, 0x50,
+0x1a, 0xae, 0x2d, 0xaf, 0x2e, 0xc3, 0xe5, 0x24, 0x9f, 0xf5, 0x24, 0xe5, 0x23, 0x9e, 0xf5, 0x23,
+0xc3, 0xe5, 0x26, 0x9f, 0xf5, 0x26, 0xe5, 0x25, 0x9e, 0xf5, 0x25, 0xe4, 0x12, 0x14, 0x59, 0x7f,
+0x80, 0xfe, 0xfd, 0xfc, 0xab, 0x2e, 0xaa, 0x2d, 0xa9, 0x2c, 0xa8, 0x2b, 0x12, 0x13, 0x6b, 0xae,
+0x30, 0xaf, 0x31, 0x12, 0x13, 0xc6, 0xc0, 0x06, 0xc0, 0x07, 0xe5, 0x24, 0x25, 0x26, 0xff, 0xe5,
+0x23, 0x35, 0x25, 0xab, 0x07, 0xfa, 0xe4, 0xf9, 0xf8, 0xd0, 0x07, 0xd0, 0x06, 0x12, 0x0b, 0x9c,
+0xef, 0x24, 0x40, 0xff, 0xe4, 0x3e, 0xfe, 0xe4, 0x3d, 0xfd, 0xe4, 0x3c, 0xfc, 0xe4, 0x7b, 0x80,
+0xfa, 0xf9, 0xf8, 0x12, 0x0b, 0x9c, 0x8f, 0x2e, 0x8e, 0x2d, 0x8d, 0x2c, 0x8c, 0x2b, 0xe5, 0x22,
+0x60, 0x1b, 0xe4, 0xfc, 0xfd, 0xe5, 0x2e, 0x25, 0x28, 0xf5, 0x2e, 0xe5, 0x2d, 0x35, 0x27, 0xf5,
+0x2d, 0xed, 0x35, 0x2c, 0xf5, 0x2c, 0xec, 0x35, 0x2b, 0xf5, 0x2b, 0x80, 0x17, 0xc3, 0xe5, 0x28,
+0x95, 0x2e, 0xf5, 0x2e, 0xe5, 0x27, 0x95, 0x2d, 0xf5, 0x2d, 0xe4, 0x95, 0x2c, 0xf5, 0x2c, 0xe4,
+0x95, 0x2b, 0xf5, 0x2b, 0xae, 0x2d, 0xaf, 0x2e, 0x22, 0xf5, 0x82, 0xe4, 0x35, 0x08, 0xf5, 0x83,
+0xee, 0xf0, 0xa3, 0xef, 0xf0, 0x85, 0x09, 0x82, 0x85, 0x08, 0x83, 0xa3, 0xe0, 0xfe, 0xa3, 0xe0,
+0xff, 0xe5, 0x09, 0x24, 0x21, 0xf5, 0x82, 0xe4, 0x35, 0x08, 0xf5, 0x83, 0xee, 0xf0, 0xa3, 0xef,
+0xf0, 0x85, 0x09, 0x82, 0x85, 0x08, 0x83, 0xa3, 0xa3, 0xa3, 0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0xe5,
+0x09, 0x24, 0x23, 0xf5, 0x82, 0xe4, 0x35, 0x08, 0xf5, 0x83, 0x22, 0xee, 0xf0, 0xef, 0xa3, 0xf0,
+0x85, 0x09, 0x82, 0x85, 0x08, 0x83, 0xa3, 0x22, 0xe4, 0x7b, 0x0a, 0xfa, 0xf9, 0xf8, 0x12, 0x0b,
+0x9c, 0xa8, 0x04, 0xa9, 0x05, 0xaa, 0x06, 0xab, 0x07, 0x85, 0x0b, 0x82, 0x85, 0x0a, 0x83, 0x22,
+0xe5, 0x2f, 0x25, 0xe0, 0x25, 0xe0, 0x24, 0x02, 0xf8, 0xe2, 0xfe, 0x08, 0xe2, 0xff, 0xe5, 0x2f,
+0x25, 0xe0, 0x25, 0xe0, 0x22, 0xe5, 0x22, 0x75, 0xf0, 0x0a, 0xa4, 0x24, 0xbf, 0xf5, 0x82, 0xe4,
+0x34, 0x02, 0xf5, 0x83, 0xe5, 0x82, 0x25, 0x45, 0xf5, 0x82, 0xe4, 0x35, 0x83, 0xf5, 0x83, 0x22,
+0xe5, 0x21, 0x75, 0xf0, 0x27, 0xa4, 0x24, 0x69, 0xf5, 0x82, 0xe4, 0x34, 0x02, 0xf5, 0x83, 0x22,
+0x8e, 0x29, 0x8f, 0x2a, 0x12, 0x09, 0x62, 0x7c, 0x00, 0x7d, 0x32, 0x12, 0x09, 0x74, 0xef, 0x25,
+0x26, 0xf5, 0x2a, 0xee, 0x35, 0x25, 0xf5, 0x29, 0xd3, 0xe5, 0x2a, 0x94, 0x00, 0xe5, 0x29, 0x64,
+0x80, 0x94, 0x80, 0x22, 0xe5, 0x22, 0x75, 0xf0, 0x0a, 0xa4, 0x24, 0xd3, 0xf5, 0x82, 0xe4, 0x34,
+0x02, 0x22, 0xf5, 0x27, 0xe5, 0x31, 0x25, 0x31, 0xf5, 0x31, 0xe5, 0x30, 0x33, 0xf5, 0x30, 0x22,
+0x25, 0xe0, 0x24, 0x01, 0xf8, 0xe2, 0x2f, 0xff, 0x18, 0xe2, 0x3e, 0x22, 0x74, 0x01, 0x93, 0xfe,
+0x74, 0x02, 0x93, 0xff, 0xe4, 0xfc, 0xfd, 0x02, 0x0c, 0x6e, 0xa3, 0xa3, 0xe0, 0xfe, 0xa3, 0xe0,
+0xff, 0xe5, 0x09, 0x22, 0x13, 0xff, 0xe4, 0xfc, 0xfd, 0xeb, 0x2f, 0xff, 0xea, 0x3e, 0xfe, 0xed,
+0x39, 0xfd, 0xec, 0x38, 0xfc, 0x22, 0x24, 0x01, 0xf8, 0xe2, 0x2f, 0xf5, 0x24, 0x18, 0xe2, 0x3e,
+0xf5, 0x23, 0x22, 0x90, 0x02, 0x8c, 0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0xc3, 0x22, 0x33, 0x95, 0xe0,
+0xfd, 0xfc, 0xab, 0x36, 0xaa, 0x35, 0xa9, 0x34, 0xa8, 0x33, 0x22, 0x12, 0x0b, 0x11, 0xa8, 0x04,
+0xa9, 0x05, 0xaa, 0x06, 0xab, 0x07, 0x22, 0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0x7c, 0x00, 0x7d, 0x03,
+0x02, 0x09, 0x62, 0x93, 0xff, 0xe4, 0xfc, 0xfd, 0x12, 0x0c, 0x6e, 0x12, 0x0b, 0x11, 0xe4, 0x7b,
+0x02, 0xfa, 0xf9, 0xf8, 0x22, 0x7b, 0x01, 0x7e, 0x00, 0x7f, 0x07, 0x02, 0x08, 0xc2, 0xaf, 0x2f,
+0x7e, 0x00, 0xac, 0x30, 0xad, 0x31, 0x02, 0x09, 0x62, 0x3e, 0xf5, 0x25, 0xd3, 0xe5, 0x24, 0x95,
+0x26, 0xe5, 0x23, 0x95, 0x25, 0x22, 0x7e, 0x00, 0x7f, 0x06, 0x7d, 0x00, 0x7b, 0x01, 0x02, 0x0c,
+0xd9, 0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0xe4, 0xfc, 0xfd, 0x02, 0x0b, 0x11, 0xf8, 0xe2, 0x2f, 0xf5,
+0x26, 0x18, 0xe2, 0x3e, 0xf5, 0x25, 0x22, 0xe5, 0x22, 0x75, 0xf0, 0x0a, 0xa4, 0x24, 0xbf, 0xf5,
+0x82, 0xe4, 0x34, 0x02, 0xf5, 0x83, 0x22, 0xa3, 0xa3, 0xe0, 0xfc, 0xa3, 0xe0, 0xc3, 0x9f, 0x22,
+0x78, 0x6e, 0xfe, 0xe4, 0xfc, 0xfd, 0x02, 0x0c, 0x7b, 0xf0, 0xe5, 0x21, 0x75, 0xf0, 0x27, 0xa4,
+0x22, 0xce, 0xa2, 0xe7, 0x13, 0xce, 0x13, 0x22, 0xe0, 0xfc, 0xa3, 0xe0, 0x2f, 0xff, 0xee, 0x3c,
+0xfe, 0xef, 0x78, 0x02, 0x22, 0xe5, 0x82, 0x2d, 0xf5, 0x82, 0xe5, 0x83, 0x3c, 0xf5, 0x83, 0xef,
+0xf0, 0x22, 0x78, 0x72, 0x12, 0x0c, 0x52, 0x78, 0x6e, 0x12, 0x0c, 0x6e, 0xeb, 0x2f, 0x22, 0x74,
+0x1a, 0x93, 0xff, 0xe4, 0xfc, 0xfd, 0xfe, 0x02, 0x0b, 0x11, 0xc3, 0xe5, 0x24, 0x95, 0x26, 0xff,
+0xe5, 0x23, 0x95, 0x25, 0xfe, 0x22, 0xee, 0xf0, 0xa3, 0xef, 0xf0, 0xe5, 0x09, 0x22, 0x74, 0x24,
+0x25, 0x23, 0xf8, 0xa6, 0x06, 0x78, 0x74, 0xe6, 0x22, 0x85, 0x26, 0x2e, 0x85, 0x25, 0x2d, 0xf5,
+0x2c, 0xf5, 0x2b, 0x22, 0xab, 0x4a, 0xaa, 0x4b, 0xa9, 0x4c, 0x02, 0x0a, 0x15, 0xf8, 0xe2, 0xfe,
+0x08, 0xe2, 0xff, 0x22, 0x90, 0x02, 0x6e, 0xe0, 0x60, 0x0e, 0x90, 0x02, 0x95, 0xe0, 0x7f, 0x01,
+0x60, 0x02, 0x7f, 0x02, 0x8f, 0x27, 0x80, 0x0c, 0x90, 0x02, 0x95, 0xe0, 0x7f, 0x00, 0x60, 0x02,
+0x7f, 0x01, 0x8f, 0x27, 0x90, 0x02, 0x8e, 0xe0, 0xff, 0x60, 0x0e, 0x90, 0x02, 0xb5, 0xe0, 0x7e,
+0x01, 0x60, 0x02, 0x7e, 0x02, 0x8e, 0x28, 0x80, 0x0c, 0x90, 0x02, 0xb5, 0xe0, 0x7e, 0x00, 0x60,
+0x02, 0x7e, 0x01, 0x8e, 0x28, 0xe4, 0xf5, 0x22, 0xe5, 0x27, 0x64, 0x01, 0x70, 0x54, 0xe5, 0x28,
+0x70, 0x03, 0x02, 0x15, 0xe2, 0xe5, 0x28, 0xb4, 0x01, 0x12, 0xef, 0x60, 0x03, 0x02, 0x15, 0xe2,
+0x90, 0x02, 0xb5, 0xe0, 0x70, 0x03, 0x02, 0x15, 0xe2, 0x02, 0x15, 0xdf, 0xe5, 0x28, 0x64, 0x02,
+0x60, 0x03, 0x02, 0x15, 0xe2, 0x12, 0x16, 0x77, 0xc0, 0x06, 0xc0, 0x07, 0x12, 0x16, 0x10, 0xd0,
+0xe0, 0x2f, 0xf5, 0x24, 0xd0, 0xe0, 0x12, 0x16, 0x29, 0xc0, 0x06, 0xc0, 0x07, 0x12, 0x16, 0x45,
+0xd0, 0xe0, 0x2f, 0xf5, 0x26, 0xd0, 0xe0, 0x12, 0x13, 0xa9, 0x50, 0x03, 0x02, 0x15, 0xe2, 0x02,
+0x15, 0xdf, 0xe5, 0x27, 0x64, 0x02, 0x60, 0x03, 0x02, 0x15, 0xe2, 0xe5, 0x28, 0x70, 0x03, 0x02,
+0x15, 0xe2, 0xe5, 0x28, 0x64, 0x01, 0x70, 0x73, 0x90, 0x02, 0x8e, 0xe0, 0x60, 0x2c, 0x12, 0x16,
+0x77, 0xc0, 0x06, 0xc0, 0x07, 0x12, 0x16, 0x10, 0xd0, 0xe0, 0x2f, 0xf5, 0x24, 0xd0, 0xe0, 0x3e,
+0xf5, 0x23, 0x90, 0x02, 0x8a, 0x12, 0x16, 0x90, 0xc0, 0x06, 0xc0, 0x07, 0x12, 0x13, 0x53, 0x90,
+0x02, 0x94, 0xe0, 0x9f, 0xff, 0x90, 0x02, 0x93, 0x80, 0x2a, 0x90, 0x02, 0xb1, 0x12, 0x16, 0x90,
+0xc0, 0x06, 0xc0, 0x07, 0x12, 0x16, 0x5e, 0xd0, 0xe0, 0x2f, 0xf5, 0x24, 0xd0, 0xe0, 0x12, 0x16,
+0x29, 0xc0, 0x06, 0xc0, 0x07, 0x90, 0x02, 0xb3, 0x12, 0x13, 0x56, 0x90, 0x02, 0x6d, 0xe0, 0x9f,
+0xff, 0x90, 0x02, 0x6c, 0xe0, 0x9e, 0xfe, 0x12, 0x2b, 0x6f, 0xd0, 0xe0, 0x2f, 0xf5, 0x26, 0xd0,
+0xe0, 0x3e, 0xf5, 0x25, 0x12, 0x13, 0xac, 0x40, 0x49, 0x80, 0x44, 0xe5, 0x28, 0x64, 0x02, 0x70,
+0x41, 0x12, 0x16, 0x5e, 0xc0, 0x06, 0xc0, 0x07, 0x12, 0x13, 0x53, 0x90, 0x02, 0x6d, 0xe0, 0x90,
+0x02, 0x6c, 0x12, 0x16, 0xa6, 0xd0, 0xe0, 0x2f, 0xf5, 0x24, 0xd0, 0xe0, 0x3e, 0xf5, 0x23, 0x12,
+0x13, 0x53, 0x90, 0x02, 0x94, 0xe0, 0x90, 0x02, 0x93, 0x12, 0x16, 0xa6, 0xc0, 0x06, 0xc0, 0x07,
+0x12, 0x16, 0x45, 0xd0, 0xe0, 0x2f, 0xf5, 0x26, 0xd0, 0xe0, 0x12, 0x13, 0xa9, 0x40, 0x03, 0x75,
+0x22, 0x01, 0xe5, 0x22, 0x60, 0x29, 0x78, 0x6e, 0x7c, 0x00, 0x7d, 0x00, 0x7a, 0x02, 0x79, 0x69,
+0x12, 0x13, 0x95, 0x78, 0x69, 0x7c, 0x02, 0x7d, 0x01, 0x7a, 0x02, 0x79, 0x90, 0x12, 0x13, 0x95,
+0x78, 0x90, 0x7c, 0x02, 0x7d, 0x01, 0x7b, 0x00, 0x7a, 0x00, 0x79, 0x6e, 0x12, 0x13, 0x97, 0x22,
+0x90, 0x02, 0x8c, 0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0xc3, 0x90, 0x02, 0x6d, 0xe0, 0x9f, 0xff, 0x90,
+0x02, 0x6c, 0xe0, 0x9e, 0xfe, 0x12, 0x2b, 0x6f, 0x22, 0x3e, 0xf5, 0x23, 0x90, 0x02, 0xb1, 0xe0,
+0xfe, 0xa3, 0xe0, 0xff, 0xc3, 0x90, 0x02, 0x6b, 0xe0, 0x9f, 0xff, 0x90, 0x02, 0x6a, 0xe0, 0x9e,
+0xfe, 0x12, 0x2b, 0x6f, 0x22, 0x90, 0x02, 0xb3, 0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0xc3, 0x90, 0x02,
+0x6d, 0xe0, 0x9f, 0xff, 0x90, 0x02, 0x6c, 0xe0, 0x9e, 0xfe, 0x12, 0x2b, 0x6f, 0x22, 0x90, 0x02,
+0xb3, 0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0xc3, 0x90, 0x02, 0x94, 0xe0, 0x9f, 0xff, 0x90, 0x02, 0x93,
+0xe0, 0x9e, 0xfe, 0x12, 0x2b, 0x6f, 0x22, 0x90, 0x02, 0x8a, 0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0xc3,
+0x90, 0x02, 0x6b, 0xe0, 0x9f, 0xff, 0x90, 0x02, 0x6a, 0xe0, 0x9e, 0xfe, 0x12, 0x2b, 0x6f, 0x22,
+0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0xc3, 0x90, 0x02, 0x92, 0xe0, 0x9f, 0xff, 0x90, 0x02, 0x91, 0xe0,
+0x9e, 0xfe, 0x12, 0x2b, 0x6f, 0x22, 0x9f, 0xff, 0xe0, 0x9e, 0xfe, 0x12, 0x2b, 0x6f, 0x22, 0x15,
+0x0f, 0x15, 0x0f, 0x12, 0x25, 0x8a, 0x78, 0x8c, 0xe6, 0xa8, 0x0f, 0xf6, 0x78, 0x8a, 0xe6, 0x60,
+0x33, 0xa8, 0x0f, 0x08, 0xe4, 0xf6, 0xa8, 0x0f, 0x08, 0xe6, 0xff, 0xc3, 0x78, 0x8f, 0x96, 0x50,
+0x58, 0x12, 0x24, 0x95, 0xa8, 0x0f, 0xe6, 0xfd, 0x12, 0x27, 0xf8, 0xa8, 0x0f, 0x08, 0x12, 0x24,
+0x93, 0xa8, 0x0f, 0xe6, 0x7d, 0x01, 0xb4, 0x08, 0x02, 0x7d, 0x00, 0x12, 0x29, 0xd6, 0xa8, 0x0f,
+0x08, 0x06, 0x80, 0xd2, 0x78, 0x7d, 0x12, 0x24, 0x93, 0xa8, 0x0f, 0xe6, 0xfd, 0x12, 0x27, 0xf8,
+0x78, 0x7d, 0x12, 0x24, 0x93, 0xa8, 0x0f, 0xe6, 0x7d, 0x01, 0xb4, 0x08, 0x02, 0x7d, 0x00, 0x12,
+0x29, 0xd6, 0x12, 0x24, 0x91, 0xa8, 0x0f, 0xe6, 0xfd, 0x12, 0x24, 0x8e, 0xa8, 0x0f, 0xe6, 0x7d,
+0x01, 0xb4, 0x08, 0x02, 0x7d, 0x00, 0x12, 0x29, 0xd6, 0x90, 0xff, 0x52, 0xe0, 0xfe, 0xa3, 0xe0,
+0xff, 0x78, 0x7d, 0xe6, 0xfd, 0x12, 0x24, 0xe0, 0xee, 0xf0, 0xa3, 0xef, 0xf0, 0x90, 0xff, 0x5a,
+0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0x18, 0xe6, 0x12, 0x24, 0xe0, 0xee, 0xf0, 0xa3, 0xef, 0xf0, 0x74,
+0x55, 0x2d, 0xf5, 0x82, 0xe4, 0x34, 0x02, 0xf5, 0x83, 0xe0, 0x70, 0x79, 0x08, 0xe6, 0xff, 0x24,
+0x55, 0xf5, 0x82, 0xe4, 0x34, 0x02, 0xf5, 0x83, 0x74, 0x01, 0xf0, 0xef, 0x12, 0x24, 0xb8, 0xe0,
+0xfe, 0xa3, 0xe0, 0xff, 0xe6, 0x12, 0x24, 0xe0, 0x12, 0x25, 0x74, 0x12, 0x2b, 0x6f, 0x90, 0x02,
+0x51, 0xee, 0xf0, 0xa3, 0xef, 0xf0, 0x78, 0x7c, 0xe6, 0xff, 0x12, 0x24, 0xb8, 0xe0, 0xfc, 0xa3,
+0xe0, 0xfd, 0xef, 0x12, 0x24, 0xe0, 0xe0, 0xfe, 0xa3, 0xe0, 0xc3, 0x9d, 0xff, 0xee, 0x9c, 0xfe,
+0x12, 0x2b, 0x6f, 0x90, 0x02, 0x53, 0xee, 0xf0, 0xa3, 0xef, 0xf0, 0x12, 0x24, 0xee, 0x74, 0x07,
+0x93, 0xfe, 0x74, 0x08, 0x93, 0xff, 0xc3, 0x90, 0x02, 0x52, 0xe0, 0x9f, 0x90, 0x02, 0x51, 0xe0,
+0x9e, 0x50, 0x61, 0xc3, 0x90, 0x02, 0x54, 0xe0, 0x9f, 0x90, 0x02, 0x53, 0xe0, 0x9e, 0x50, 0x54,
+0x12, 0x25, 0x7f, 0x80, 0x4f, 0x12, 0x25, 0x7f, 0x12, 0x24, 0xee, 0x78, 0x7d, 0x12, 0x24, 0xae,
+0x12, 0x24, 0xd6, 0x12, 0x25, 0x1d, 0x40, 0x16, 0xe6, 0x12, 0x24, 0xe0, 0xc0, 0x83, 0xc0, 0x82,
+0x90, 0x02, 0x51, 0x12, 0x25, 0x0e, 0xd0, 0x82, 0xd0, 0x83, 0xf0, 0xa3, 0xef, 0xf0, 0x12, 0x24,
+0xee, 0x78, 0x7c, 0x12, 0x24, 0xae, 0x12, 0x24, 0xd6, 0x12, 0x25, 0x1d, 0x40, 0x16, 0xe6, 0x12,
+0x24, 0xe0, 0xc0, 0x83, 0xc0, 0x82, 0x90, 0x02, 0x53, 0x12, 0x25, 0x0e, 0xd0, 0x82, 0xd0, 0x83,
+0xf0, 0xa3, 0xef, 0xf0, 0x78, 0x8d, 0xe6, 0x70, 0x0a, 0x90, 0xff, 0x50, 0xf0, 0x90, 0xff, 0x58,
+0xf0, 0x80, 0x03, 0x12, 0x28, 0xa7, 0x05, 0x0f, 0x05, 0x0f, 0x22, 0x8b, 0x1e, 0x8a, 0x1f, 0x89,
+0x20, 0x7e, 0x00, 0x7f, 0x0c, 0x7d, 0x00, 0x12, 0x0c, 0xd9, 0x7a, 0x02, 0x79, 0x6a, 0x12, 0x13,
+0xb6, 0x7a, 0x02, 0x79, 0x91, 0x12, 0x13, 0xb6, 0x78, 0xae, 0xe6, 0x14, 0x60, 0x34, 0x04, 0x60,
+0x03, 0x02, 0x19, 0xb1, 0xe4, 0x78, 0xad, 0xf6, 0xff, 0x12, 0x2b, 0x57, 0x12, 0x1d, 0xe7, 0x78,
+0x30, 0xe2, 0x30, 0xe2, 0x09, 0x78, 0x89, 0xe6, 0x30, 0xe4, 0x03, 0x02, 0x19, 0xb5, 0x7e, 0x00,
+0x7f, 0x4e, 0x7d, 0x00, 0x7b, 0x01, 0x7a, 0x02, 0x79, 0x69, 0x12, 0x0c, 0xd9, 0x78, 0xae, 0x76,
+0x01, 0x22, 0x12, 0x1d, 0xe7, 0x78, 0x30, 0xe2, 0x30, 0xe2, 0x09, 0x78, 0x89, 0xe6, 0x30, 0xe4,
+0x03, 0x02, 0x19, 0xb1, 0x78, 0x89, 0xe6, 0x20, 0xe3, 0x03, 0x02, 0x19, 0x4e, 0x12, 0x22, 0x5f,
+0x78, 0xab, 0xe6, 0xff, 0x12, 0x27, 0x22, 0x78, 0xab, 0xa6, 0x07, 0x08, 0xe6, 0xff, 0x12, 0x27,
+0x22, 0x78, 0xac, 0xa6, 0x07, 0x75, 0x25, 0xfe, 0x75, 0x26, 0x00, 0x75, 0x27, 0x00, 0x7b, 0x00,
+0x7a, 0x00, 0x79, 0xab, 0x12, 0x33, 0xea, 0xe4, 0xf5, 0x21, 0x74, 0xab, 0x25, 0x21, 0xf8, 0xe6,
+0xff, 0x12, 0x12, 0xc0, 0xef, 0xf0, 0x12, 0x12, 0xc0, 0xe0, 0xf4, 0x60, 0x49, 0xaf, 0x21, 0x12,
+0x1c, 0x8e, 0x12, 0x13, 0xfa, 0x24, 0x6a, 0xf5, 0x82, 0xe4, 0x34, 0x02, 0xf5, 0x83, 0xee, 0xf0,
+0xa3, 0xef, 0xf0, 0xaf, 0x21, 0x12, 0x0f, 0xc1, 0x12, 0x13, 0xfa, 0x24, 0x6c, 0xf5, 0x82, 0xe4,
+0x34, 0x02, 0xf5, 0x83, 0xee, 0xf0, 0xa3, 0xef, 0x12, 0x13, 0xf9, 0x24, 0x6e, 0xf5, 0x82, 0xe4,
+0x34, 0x02, 0xf5, 0x83, 0x74, 0x01, 0x12, 0x13, 0xf9, 0x24, 0x6a, 0xf9, 0x74, 0x02, 0x35, 0xf0,
+0xfa, 0x7b, 0x01, 0x12, 0x00, 0x09, 0x05, 0x21, 0xe5, 0x21, 0xc3, 0x94, 0x02, 0x40, 0x9b, 0x12,
+0x14, 0x74, 0x78, 0x89, 0xe6, 0x30, 0xe5, 0x15, 0x78, 0xad, 0x76, 0x01, 0x80, 0x0f, 0x90, 0x02,
+0xb7, 0x74, 0xff, 0xf0, 0xe4, 0xa3, 0xf0, 0x90, 0x02, 0xbd, 0xf0, 0xa3, 0xf0, 0x75, 0x08, 0x02,
+0x75, 0x09, 0x69, 0xe4, 0xf5, 0x21, 0xe5, 0x21, 0xc3, 0x94, 0x02, 0x50, 0x17, 0xaf, 0x21, 0x12,
+0x00, 0x24, 0x12, 0x1f, 0x3e, 0x05, 0x21, 0x74, 0x27, 0x25, 0x09, 0xf5, 0x09, 0xe4, 0x35, 0x08,
+0xf5, 0x08, 0x80, 0xe2, 0xa8, 0x20, 0xac, 0x1f, 0xad, 0x1e, 0x7b, 0x01, 0x7a, 0x02, 0x79, 0x6a,
+0x7e, 0x00, 0x7f, 0x06, 0x12, 0x08, 0xc2, 0xe5, 0x20, 0x24, 0x06, 0xf9, 0xe4, 0x35, 0x1f, 0xa8,
+0x01, 0xfc, 0xad, 0x1e, 0x7b, 0x01, 0x7a, 0x02, 0x79, 0x91, 0x7e, 0x00, 0x7f, 0x06, 0x02, 0x08,
+0xc2, 0xe4, 0x78, 0xae, 0xf6, 0x22, 0x8b, 0x1e, 0x8a, 0x1f, 0x89, 0x20, 0x43, 0xad, 0x04, 0x90,
+0xff, 0x40, 0xe0, 0x20, 0xe0, 0xf9, 0x43, 0x95, 0x80, 0x90, 0xff, 0x41, 0x74, 0x37, 0xf0, 0x90,
+0xff, 0x49, 0x74, 0x0d, 0xf0, 0xe4, 0xf5, 0x27, 0xf5, 0x27, 0x12, 0x2a, 0x55, 0xe5, 0x27, 0xc3,
+0x9f, 0x50, 0x22, 0xe9, 0x24, 0x0c, 0xf9, 0xe4, 0x3a, 0x12, 0x2a, 0x46, 0xe4, 0xfd, 0x12, 0x2a,
+0x0a, 0x12, 0x2a, 0x3c, 0x7d, 0x08, 0x12, 0x28, 0x53, 0x12, 0x2a, 0x3c, 0xe4, 0xfd, 0x12, 0x29,
+0xd6, 0x05, 0x27, 0x80, 0xd5, 0xe4, 0x90, 0xff, 0x4a, 0xf0, 0x90, 0xff, 0x50, 0x74, 0x0f, 0xf0,
+0xe4, 0x90, 0xff, 0x58, 0xf0, 0x90, 0xff, 0x40, 0x74, 0x08, 0xf0, 0x90, 0xff, 0x43, 0x74, 0x9f,
+0xf0, 0xab, 0x1e, 0xaa, 0x1f, 0xa9, 0x20, 0x12, 0x08, 0xe8, 0x90, 0xff, 0x48, 0xf0, 0x90, 0x00,
+0x01, 0x12, 0x09, 0x01, 0x90, 0xff, 0x42, 0xf0, 0x90, 0x00, 0x02, 0x12, 0x09, 0x01, 0x90, 0xff,
+0x55, 0xf0, 0xe4, 0x90, 0xff, 0x5d, 0xf0, 0x90, 0x00, 0x03, 0x12, 0x09, 0x01, 0x90, 0xff, 0x54,
+0xf0, 0xe4, 0x90, 0xff, 0x5c, 0xf0, 0xf5, 0x27, 0x12, 0x2a, 0x55, 0xe5, 0x27, 0xc3, 0x9f, 0x50,
+0x5b, 0xe4, 0xf5, 0x28, 0x75, 0x29, 0x64, 0x90, 0xff, 0x50, 0xe0, 0x20, 0xe7, 0x03, 0x43, 0x28,
+0x01, 0xe5, 0x28, 0x64, 0x01, 0x60, 0x03, 0xd5, 0x29, 0xed, 0x12, 0x2a, 0x63, 0x12, 0x2a, 0x3c,
+0x7d, 0x06, 0x12, 0x28, 0x53, 0x90, 0xff, 0x40, 0x74, 0x29, 0xf0, 0x90, 0xff, 0x40, 0xe0, 0x20,
+0xe0, 0xf9, 0x12, 0x2a, 0x3c, 0x7d, 0x08, 0x12, 0x28, 0x53, 0x90, 0xff, 0x52, 0xe0, 0xfe, 0xa3,
+0xe0, 0xff, 0xab, 0x21, 0xe5, 0x23, 0xf9, 0x24, 0x02, 0xf5, 0x23, 0xe5, 0x22, 0xfa, 0x34, 0x00,
+0xf5, 0x22, 0xee, 0x8f, 0xf0, 0x12, 0x0a, 0xc5, 0x05, 0x27, 0x80, 0x9c, 0xe4, 0xf5, 0x27, 0x75,
+0x28, 0x01, 0x12, 0x2a, 0x3c, 0x7d, 0x07, 0x12, 0x28, 0x53, 0xe5, 0x28, 0x24, 0x02, 0x90, 0xff,
+0x55, 0xf0, 0xe4, 0xf5, 0x29, 0xf5, 0x2a, 0x05, 0x2a, 0xe5, 0x2a, 0x70, 0x02, 0x05, 0x29, 0xb4,
+0x20, 0xf5, 0xe5, 0x29, 0xb4, 0x03, 0xf0, 0x90, 0xff, 0x50, 0xe0, 0x30, 0xe7, 0x0c, 0x12, 0x2a,
+0x63, 0x05, 0x28, 0xe5, 0x28, 0xc3, 0x94, 0x64, 0x40, 0xd0, 0xab, 0x24, 0xaa, 0x25, 0xa9, 0x26,
+0x85, 0x27, 0x82, 0x75, 0x83, 0x00, 0xe5, 0x28, 0x12, 0x09, 0x40, 0x12, 0x2a, 0x3c, 0x7d, 0x08,
+0x12, 0x28, 0x53, 0x12, 0x2a, 0x63, 0x12, 0x2a, 0x55, 0x05, 0x27, 0xe5, 0x27, 0xc3, 0x9f, 0x40,
+0x9e, 0xe4, 0x90, 0xff, 0x50, 0xf0, 0xff, 0x22, 0x8b, 0x1f, 0x8a, 0x20, 0x89, 0x21, 0x43, 0xad,
+0x04, 0x43, 0x95, 0x80, 0x90, 0xff, 0x41, 0x74, 0x80, 0xf0, 0x90, 0xff, 0x49, 0x74, 0x0d, 0xf0,
+0xe4, 0x90, 0xff, 0x4a, 0xf0, 0x90, 0xff, 0x42, 0x04, 0xf0, 0x90, 0xff, 0x55, 0x74, 0x7d, 0xf0,
+0x90, 0xff, 0x5d, 0xf0, 0xe4, 0x12, 0x2a, 0x8a, 0x74, 0x10, 0xf0, 0xe4, 0xf5, 0x26, 0xf5, 0x27,
+0xf5, 0x28, 0xf5, 0x29, 0xf5, 0x25, 0xe4, 0x90, 0xff, 0x50, 0x12, 0x2a, 0x7a, 0xf4, 0x60, 0x0d,
+0xe4, 0xfd, 0x12, 0x29, 0xd6, 0x12, 0x2a, 0x7f, 0x7d, 0x08, 0x12, 0x28, 0x53, 0x12, 0x2a, 0x6c,
+0xf4, 0x60, 0x0d, 0xe4, 0xfd, 0x12, 0x29, 0xd6, 0x12, 0x2a, 0x6c, 0x7d, 0x08, 0x12, 0x28, 0x53,
+0xe4, 0xff, 0x00, 0x0f, 0xbf, 0xc8, 0xfb, 0x90, 0xff, 0x50, 0x74, 0x03, 0x12, 0x2a, 0x7a, 0xf4,
+0x60, 0x0d, 0xe4, 0xfd, 0x12, 0x2a, 0x0a, 0x12, 0x2a, 0x7f, 0x7d, 0x07, 0x12, 0x28, 0x53, 0x12,
+0x2a, 0x6c, 0xf4, 0x60, 0x0d, 0x7d, 0x01, 0x12, 0x2a, 0x0a, 0x12, 0x2a, 0x6c, 0x7d, 0x07, 0x12,
+0x28, 0x53, 0x90, 0xff, 0x43, 0x74, 0x9f, 0xf0, 0x90, 0xff, 0x50, 0x74, 0x07, 0xf0, 0x90, 0xff,
+0x58, 0xf0, 0x90, 0xff, 0x40, 0x74, 0x09, 0xf0, 0x75, 0x8a, 0xa0, 0xe4, 0x90, 0x00, 0x3a, 0xf0,
+0x90, 0xff, 0x43, 0xe0, 0x30, 0xe4, 0xf9, 0x90, 0xff, 0x43, 0x74, 0x9f, 0xf0, 0x90, 0xff, 0x52,
+0xe0, 0xfe, 0xa3, 0xe0, 0x25, 0x27, 0xf5, 0x27, 0xee, 0x35, 0x26, 0xf5, 0x26, 0x90, 0xff, 0x5a,
+0xe0, 0xfe, 0xa3, 0xe0, 0x25, 0x29, 0xf5, 0x29, 0xee, 0x35, 0x28, 0xf5, 0x28, 0x05, 0x25, 0xe5,
+0x25, 0xc3, 0x94, 0x04, 0x50, 0x03, 0x02, 0x1b, 0x66, 0xe5, 0x27, 0xae, 0x26, 0x78, 0x02, 0xce,
+0xc3, 0x13, 0xce, 0x13, 0xd8, 0xf9, 0xff, 0xab, 0x22, 0xaa, 0x23, 0xa9, 0x24, 0xee, 0x8f, 0xf0,
+0x12, 0x0a, 0xc5, 0xe5, 0x29, 0xae, 0x28, 0x78, 0x02, 0xce, 0xc3, 0x13, 0xce, 0x13, 0xd8, 0xf9,
+0xff, 0xab, 0x22, 0xaa, 0x23, 0xa9, 0x24, 0x90, 0x00, 0x02, 0xee, 0x8f, 0xf0, 0x12, 0x0a, 0xe4,
+0x53, 0x95, 0x7f, 0xe4, 0x90, 0xff, 0x41, 0xf0, 0x90, 0xff, 0x49, 0xf0, 0x90, 0xff, 0x4a, 0xf0,
+0x90, 0xff, 0x50, 0xf0, 0x90, 0xff, 0x58, 0xf0, 0x90, 0xff, 0x42, 0xf0, 0x90, 0xff, 0x55, 0xf0,
+0x90, 0xff, 0x5d, 0xf0, 0x12, 0x2a, 0x8a, 0x12, 0x2a, 0x7e, 0xf4, 0x60, 0x05, 0xe4, 0xfd, 0x12,
+0x28, 0x53, 0x12, 0x2a, 0x6c, 0xf4, 0x60, 0x05, 0xe4, 0xfd, 0x12, 0x28, 0x53, 0x22, 0xef, 0x12,
+0x12, 0xc2, 0xe0, 0xff, 0x70, 0x04, 0xf5, 0x22, 0x80, 0x18, 0x78, 0xaa, 0xe6, 0xfe, 0x14, 0xb5,
+0x07, 0x09, 0xee, 0x25, 0xe0, 0x24, 0xfa, 0xf5, 0x22, 0x80, 0x07, 0xef, 0x25, 0xe0, 0x24, 0xfe,
+0xf5, 0x22, 0xe5, 0x22, 0x25, 0xe0, 0x24, 0x04, 0x12, 0x14, 0x6d, 0xe5, 0x22, 0x12, 0x13, 0x10,
+0xfe, 0xe5, 0x22, 0x25, 0xe0, 0x24, 0x09, 0x12, 0x13, 0x14, 0xfe, 0x90, 0x02, 0xbd, 0xe0, 0xfa,
+0xa3, 0xe0, 0xfb, 0xc3, 0xef, 0x9b, 0xff, 0xee, 0x9a, 0x12, 0x13, 0xf0, 0xe5, 0x22, 0x25, 0xe0,
+0x24, 0x06, 0x12, 0x14, 0x6d, 0xe5, 0x22, 0x25, 0xe0, 0x24, 0x03, 0x12, 0x13, 0x14, 0xfe, 0xe5,
+0x22, 0x25, 0xe0, 0x24, 0x0b, 0x12, 0x13, 0x14, 0xcf, 0xc3, 0x9b, 0xcf, 0x9a, 0x78, 0x72, 0x12,
+0x13, 0xf2, 0x12, 0x12, 0x89, 0x74, 0x07, 0x93, 0xfe, 0x74, 0x08, 0x78, 0x72, 0x12, 0x13, 0x83,
+0x12, 0x0b, 0x11, 0xc0, 0x04, 0xc0, 0x05, 0xc0, 0x06, 0xc0, 0x07, 0x12, 0x12, 0x89, 0x78, 0x72,
+0x12, 0x13, 0x1c, 0x12, 0x0b, 0x11, 0xd0, 0x03, 0xd0, 0x02, 0xd0, 0x01, 0xd0, 0x00, 0xef, 0x2b,
+0xff, 0xee, 0x3a, 0x12, 0x13, 0x3e, 0xc0, 0x04, 0xc0, 0x05, 0xc0, 0x06, 0xc0, 0x07, 0x12, 0x12,
+0x89, 0x74, 0x05, 0x93, 0xfe, 0x74, 0x06, 0x78, 0x6e, 0x12, 0x13, 0x83, 0x12, 0x13, 0x6b, 0xd0,
+0x07, 0xd0, 0x06, 0xd0, 0x05, 0xd0, 0x04, 0xc3, 0xef, 0x9b, 0xff, 0xee, 0x9a, 0xfe, 0xed, 0x99,
+0xfd, 0xec, 0x98, 0xfc, 0x78, 0x76, 0x12, 0x0c, 0x7b, 0x78, 0x76, 0x12, 0x0c, 0x52, 0xec, 0x33,
+0x50, 0x0b, 0x78, 0x6e, 0x12, 0x0c, 0x87, 0x00, 0x00, 0x00, 0x01, 0x80, 0x64, 0x12, 0x14, 0x22,
+0xff, 0xea, 0x3e, 0xfe, 0xe9, 0x3d, 0xfd, 0xe8, 0x3c, 0xfc, 0x12, 0x13, 0x8e, 0x12, 0x0b, 0x9c,
+0x78, 0x76, 0x12, 0x0c, 0x6e, 0xef, 0x2b, 0xff, 0xee, 0x3a, 0x12, 0x13, 0x3e, 0xc0, 0x04, 0xc0,
+0x05, 0xc0, 0x06, 0xc0, 0x07, 0x12, 0x14, 0x22, 0xfb, 0xea, 0x3e, 0xfa, 0xe9, 0x3d, 0xf9, 0xe8,
+0x3c, 0xf8, 0xd0, 0x07, 0xd0, 0x06, 0xd0, 0x05, 0xd0, 0x04, 0x12, 0x0b, 0x9c, 0x78, 0x6e, 0x12,
+0x0c, 0x7b, 0x12, 0x12, 0x89, 0x78, 0x6e, 0x12, 0x13, 0x1c, 0xd3, 0x12, 0x0c, 0x2e, 0x40, 0x11,
+0x12, 0x12, 0x89, 0x74, 0x02, 0x93, 0x24, 0xff, 0xff, 0x74, 0x01, 0x93, 0x34, 0xff, 0x12, 0x13,
+0xf0, 0x78, 0x6e, 0x12, 0x0c, 0x52, 0x22, 0xe4, 0x78, 0x89, 0xf6, 0x18, 0xe6, 0x14, 0x70, 0x03,
+0x02, 0x1e, 0xac, 0x14, 0x70, 0x03, 0x02, 0x1f, 0x15, 0x24, 0x02, 0x60, 0x03, 0x02, 0x1f, 0x39,
+0xe4, 0x78, 0x8e, 0xf6, 0x78, 0x89, 0xf6, 0xfe, 0x7f, 0x8c, 0xfd, 0x12, 0x24, 0xf5, 0x7f, 0x1c,
+0x7a, 0x00, 0x79, 0x00, 0x12, 0x25, 0x4b, 0x7f, 0x0e, 0x7a, 0x00, 0x79, 0x20, 0x12, 0x25, 0x4b,
+0x12, 0x24, 0xee, 0x74, 0x02, 0x93, 0x78, 0x8f, 0xf6, 0x78, 0x84, 0xe6, 0x30, 0xe0, 0x08, 0x75,
+0x23, 0x05, 0x75, 0x24, 0x01, 0x80, 0x06, 0x75, 0x23, 0x08, 0xe4, 0xf5, 0x24, 0xe4, 0xf5, 0x22,
+0xe5, 0x22, 0xc3, 0x78, 0x8f, 0x96, 0x50, 0x60, 0xe5, 0x59, 0x24, 0x09, 0xf5, 0x82, 0xe4, 0x35,
+0x58, 0xf5, 0x83, 0xe5, 0x82, 0x25, 0x22, 0xf5, 0x82, 0xe4, 0x35, 0x83, 0xf5, 0x83, 0xe4, 0x93,
+0xf5, 0x25, 0xe5, 0x22, 0x24, 0x0a, 0xff, 0xe4, 0x33, 0xfe, 0xe5, 0x59, 0x2f, 0xf5, 0x82, 0xe5,
+0x58, 0x3e, 0xf5, 0x83, 0xe4, 0x93, 0xf5, 0x26, 0xe4, 0xfd, 0xaf, 0x25, 0x12, 0x2a, 0x0a, 0x7d,
+0x01, 0xaf, 0x26, 0x12, 0x2a, 0x0a, 0xad, 0x24, 0xaf, 0x25, 0x12, 0x29, 0xd6, 0xad, 0x24, 0xaf,
+0x26, 0x12, 0x29, 0xd6, 0xad, 0x23, 0xaf, 0x25, 0x12, 0x28, 0x53, 0xad, 0x23, 0xaf, 0x26, 0x12,
+0x28, 0x53, 0x05, 0x22, 0x05, 0x22, 0x80, 0x98, 0x78, 0x88, 0x76, 0x01, 0x12, 0x24, 0xee, 0x74,
+0x08, 0x93, 0x25, 0xe0, 0xf5, 0x25, 0x74, 0x07, 0x93, 0x33, 0xf5, 0x24, 0x75, 0x23, 0x04, 0x12,
+0x2a, 0xbe, 0x7f, 0xff, 0x12, 0x26, 0x5a, 0x12, 0x2a, 0xbe, 0xe4, 0xf5, 0x22, 0xe5, 0x22, 0xc3,
+0x78, 0x8f, 0x96, 0x50, 0x36, 0xe5, 0x22, 0x12, 0x24, 0xb8, 0xe0, 0xfe, 0xa3, 0xe0, 0x78, 0x02,
+0xce, 0xc3, 0x13, 0xce, 0x13, 0xd8, 0xf9, 0xff, 0xe5, 0x22, 0x12, 0x24, 0xc8, 0xee, 0x8f, 0xf0,
+0x12, 0x09, 0xff, 0xe5, 0x22, 0x12, 0x24, 0xc8, 0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0xe5, 0x22, 0x12,
+0x25, 0x54, 0xee, 0xf0, 0xa3, 0xef, 0xf0, 0x05, 0x22, 0x80, 0xc2, 0x15, 0x23, 0xe5, 0x23, 0x70,
+0xb1, 0x78, 0x88, 0x76, 0x02, 0x12, 0x2a, 0xbe, 0x7f, 0xff, 0x12, 0x26, 0x5a, 0x78, 0x8f, 0xe6,
+0xfd, 0xe4, 0xff, 0x12, 0x21, 0x29, 0x78, 0x89, 0xe6, 0x30, 0xe1, 0x04, 0x78, 0x8e, 0x76, 0x50,
+0x78, 0x8f, 0xe6, 0xfd, 0xe4, 0xff, 0x02, 0x1f, 0xf2, 0xe4, 0x78, 0x88, 0xf6, 0x22, 0xe5, 0x09,
+0x24, 0x05, 0x12, 0x12, 0x63, 0xe0, 0x60, 0x12, 0xe5, 0x09, 0x24, 0x25, 0x12, 0x12, 0x63, 0xe0,
+0x7e, 0x01, 0x60, 0x02, 0x7e, 0x03, 0xaf, 0x06, 0x80, 0x1e, 0xe5, 0x09, 0x24, 0x25, 0x12, 0x12,
+0x63, 0xe0, 0x60, 0x12, 0xe5, 0x09, 0x24, 0x0a, 0x12, 0x12, 0x63, 0xe0, 0x7e, 0x02, 0x60, 0x02,
+0x7e, 0x03, 0xaf, 0x06, 0x80, 0x02, 0xe4, 0xff, 0xe5, 0x09, 0x24, 0x06, 0x12, 0x12, 0x63, 0xef,
+0xf0, 0xe5, 0x09, 0x24, 0x05, 0x12, 0x12, 0x63, 0xe0, 0xfe, 0xe5, 0x09, 0x24, 0x25, 0x12, 0x12,
+0x63, 0xee, 0x12, 0x12, 0x6f, 0xe0, 0xfc, 0xa3, 0xe0, 0xfd, 0xe5, 0x09, 0x24, 0x21, 0x12, 0x12,
+0x63, 0xec, 0xf0, 0xed, 0x12, 0x12, 0x6e, 0xa3, 0xa3, 0xe0, 0xfc, 0xa3, 0xe0, 0xfd, 0x12, 0x12,
+0x5f, 0xec, 0xf0, 0xa3, 0xed, 0xf0, 0xe5, 0x09, 0x24, 0x06, 0x12, 0x12, 0x63, 0xe0, 0xfe, 0xe5,
+0x09, 0x24, 0x26, 0x12, 0x12, 0x63, 0xee, 0xf0, 0x22, 0x78, 0xff, 0xe4, 0xf6, 0xd8, 0xfd, 0x90,
+0x00, 0x00, 0x7f, 0x00, 0x7e, 0x03, 0xe4, 0xf0, 0xa3, 0xdf, 0xfc, 0xde, 0xfa, 0x75, 0x81, 0xb0,
+0x75, 0xa0, 0x00, 0x02, 0x2c, 0xb9, 0x12, 0x2b, 0x22, 0x22, 0x90, 0x00, 0x04, 0x02, 0x09, 0x01,
+0x01, 0x06, 0x8f, 0x27, 0x8d, 0x28, 0x78, 0x8e, 0xe6, 0x60, 0x01, 0x16, 0x12, 0x24, 0xc6, 0xe0,
+0xfe, 0xa3, 0xe0, 0xff, 0xe5, 0x27, 0x12, 0x24, 0xb8, 0xe0, 0xfc, 0xa3, 0xe0, 0xc3, 0x9f, 0xf5,
+0x2a, 0xec, 0x9e, 0xf5, 0x29, 0x12, 0x25, 0x27, 0xe0, 0xf5, 0x2b, 0x78, 0x8e, 0xe6, 0x60, 0x09,
+0xd3, 0x12, 0x25, 0x62, 0x40, 0x03, 0x02, 0x20, 0xe2, 0xaf, 0x2a, 0xae, 0x29, 0x12, 0x2b, 0x6f,
+0x12, 0x24, 0xee, 0xc3, 0x74, 0x08, 0x93, 0x9f, 0x74, 0x07, 0x93, 0x9e, 0x50, 0x0d, 0x12, 0x25,
+0x62, 0x40, 0x04, 0x05, 0x2b, 0x80, 0x57, 0x15, 0x2b, 0x80, 0x53, 0x12, 0x24, 0xfe, 0xe0, 0xff,
+0x33, 0x95, 0xe0, 0xfe, 0xef, 0x25, 0x2a, 0xf5, 0x2a, 0xee, 0x35, 0x29, 0xf5, 0x29, 0xd3, 0xe5,
+0x2a, 0x94, 0x78, 0x12, 0x25, 0x66, 0x40, 0x09, 0x12, 0x24, 0xc6, 0xe4, 0x75, 0xf0, 0x01, 0x80,
+0x1a, 0xe5, 0x2a, 0x24, 0x78, 0xe4, 0x35, 0x29, 0xc3, 0x64, 0x80, 0x94, 0x80, 0xe5, 0x27, 0x75,
+0xf0, 0x0a, 0x50, 0x11, 0x12, 0x24, 0xcb, 0x74, 0xff, 0xf5, 0xf0, 0x12, 0x09, 0xff, 0x12, 0x24,
+0xfe, 0xe4, 0xf0, 0x80, 0x06, 0x12, 0x25, 0x03, 0xe5, 0x2a, 0xf0, 0xe4, 0xf5, 0x2b, 0x12, 0x24,
+0xee, 0x74, 0x04, 0x93, 0xff, 0xd3, 0x64, 0x80, 0xf8, 0xe5, 0x2b, 0x64, 0x80, 0x98, 0x50, 0x17,
+0xef, 0x33, 0x95, 0xe0, 0xfe, 0xad, 0x2b, 0xed, 0x33, 0x95, 0xe0, 0xfc, 0xed, 0x2f, 0xec, 0x3e,
+0xc3, 0x64, 0x80, 0x94, 0x80, 0x50, 0x15, 0xe4, 0xf5, 0x2b, 0xe5, 0x27, 0x12, 0x24, 0xb8, 0xe0,
+0xfe, 0xa3, 0xe0, 0xff, 0x12, 0x24, 0xc6, 0xee, 0xf0, 0xa3, 0xef, 0xf0, 0x12, 0x25, 0x27, 0xe5,
+0x2b, 0xf0, 0x78, 0x8e, 0xe6, 0x70, 0x36, 0x12, 0x24, 0xc6, 0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0xe5,
+0x27, 0x12, 0x25, 0x54, 0x12, 0x25, 0x74, 0x12, 0x2b, 0x6f, 0xaa, 0x06, 0xab, 0x07, 0x12, 0x24,
+0xee, 0x74, 0x07, 0x93, 0xfe, 0x74, 0x08, 0x93, 0xff, 0x7c, 0x00, 0x7d, 0x03, 0x12, 0x09, 0x62,
+0xd3, 0xeb, 0x9f, 0xea, 0x9e, 0x40, 0x06, 0x78, 0x89, 0xe6, 0x44, 0x10, 0xf6, 0x05, 0x27, 0x15,
+0x28, 0xe5, 0x28, 0x60, 0x03, 0x02, 0x1f, 0xfc, 0x22, 0xab, 0x07, 0xaa, 0x05, 0xe4, 0x90, 0x01,
+0xb0, 0xf0, 0xeb, 0x12, 0x24, 0xb8, 0xe0, 0xf5, 0x29, 0xa3, 0xe0, 0xf5, 0x2a, 0x78, 0x8f, 0xe6,
+0xff, 0xeb, 0xc3, 0x9f, 0x40, 0x04, 0x78, 0x86, 0x80, 0x02, 0x78, 0x7e, 0xe6, 0x75, 0x27, 0x00,
+0xf5, 0x28, 0xae, 0x27, 0xaf, 0x28, 0x7c, 0x00, 0x7d, 0xfc, 0x12, 0x09, 0x62, 0xd3, 0xe5, 0x2a,
+0x9f, 0xe5, 0x29, 0x9e, 0x40, 0x0e, 0x78, 0x89, 0xe6, 0x44, 0x20, 0xf6, 0x74, 0x20, 0x2b, 0xf8,
+0xe2, 0x44, 0x10, 0xf2, 0x12, 0x24, 0xee, 0x74, 0x08, 0x93, 0x25, 0xe0, 0xf5, 0x2a, 0x74, 0x07,
+0x93, 0x33, 0xf5, 0x29, 0x74, 0x20, 0x2b, 0xf8, 0xe2, 0xf9, 0x30, 0xe0, 0x19, 0xe5, 0x2a, 0xae,
+0x29, 0x78, 0x02, 0xce, 0xc3, 0x13, 0xce, 0x13, 0xd8, 0xf9, 0xff, 0xc3, 0xe5, 0x2a, 0x9f, 0xf5,
+0x2a, 0xe5, 0x29, 0x9e, 0xf5, 0x29, 0xe5, 0x29, 0xc3, 0x13, 0xfe, 0xe5, 0x2a, 0x13, 0xff, 0xeb,
+0x12, 0x24, 0xc8, 0xe0, 0xfc, 0xa3, 0xe0, 0x2f, 0xff, 0xec, 0x3e, 0xfe, 0xeb, 0x12, 0x24, 0xb8,
+0xe0, 0xfc, 0xa3, 0xe0, 0xd3, 0x9f, 0xec, 0x9e, 0x40, 0x51, 0x74, 0x20, 0x2b, 0xf8, 0xe9, 0x44,
+0x02, 0xf2, 0xeb, 0x12, 0x24, 0xc8, 0xe0, 0xfe, 0xa3, 0xe0, 0x25, 0x2a, 0xff, 0xe5, 0x29, 0x3e,
+0xfe, 0xeb, 0x12, 0x24, 0xb8, 0xe0, 0xfc, 0xa3, 0xe0, 0xd3, 0x9f, 0xec, 0x9e, 0x40, 0x22, 0x78,
+0x89, 0xe6, 0x44, 0x02, 0xf6, 0x44, 0x08, 0xf6, 0x74, 0x20, 0x2b, 0xf8, 0xe2, 0x44, 0x01, 0xf2,
+0x78, 0x8f, 0xe6, 0xff, 0xeb, 0xc3, 0x9f, 0x50, 0x1a, 0x90, 0x01, 0xb0, 0xe0, 0x04, 0xf0, 0x80,
+0x12, 0x74, 0x20, 0x2b, 0xf8, 0xe2, 0x54, 0xfe, 0xf2, 0x80, 0x08, 0x74, 0x20, 0x2b, 0xf8, 0xe9,
+0x54, 0xfd, 0xf2, 0xeb, 0x12, 0x24, 0xc8, 0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0xeb, 0x12, 0x24, 0xb8,
+0x12, 0x25, 0x1d, 0xeb, 0x40, 0x17, 0x12, 0x24, 0xc8, 0xe0, 0xfe, 0xa3, 0xe0, 0x12, 0x25, 0x15,
+0xf8, 0xeb, 0x25, 0xe0, 0x24, 0x00, 0xc8, 0xf2, 0x08, 0xef, 0xf2, 0x80, 0x09, 0x25, 0xe0, 0x24,
+0x00, 0xf8, 0xe4, 0xf2, 0x08, 0xf2, 0x0b, 0x1a, 0xea, 0x60, 0x03, 0x02, 0x21, 0x32, 0x22, 0xe4,
+0x78, 0x74, 0xf6, 0x08, 0xf6, 0x78, 0x6e, 0xf6, 0x08, 0xf6, 0x08, 0xf6, 0x08, 0xf6, 0x08, 0xf6,
+0x08, 0xf6, 0xf5, 0x22, 0xff, 0xf5, 0x23, 0x7e, 0xff, 0xe5, 0x22, 0xc3, 0x78, 0xaa, 0x96, 0x40,
+0x03, 0x02, 0x23, 0x11, 0xe5, 0x22, 0x25, 0xe0, 0x25, 0xe0, 0x24, 0x02, 0xf8, 0xe2, 0xfc, 0x08,
+0xe2, 0xfd, 0xe5, 0x22, 0x25, 0xe0, 0x25, 0xe0, 0x24, 0x01, 0xf8, 0xe2, 0x2d, 0xf5, 0x28, 0x18,
+0xe2, 0x3c, 0xf5, 0x27, 0x85, 0x59, 0x82, 0x85, 0x58, 0x83, 0x78, 0x74, 0xe6, 0xfc, 0x08, 0xe6,
+0xfd, 0x74, 0x08, 0x93, 0x2d, 0xfb, 0x74, 0x07, 0x93, 0x3c, 0xfa, 0xd3, 0xe5, 0x28, 0x9b, 0xe5,
+0x27, 0x9a, 0x40, 0x05, 0x7f, 0x01, 0x18, 0x80, 0x3c, 0x85, 0x59, 0x82, 0x85, 0x58, 0x83, 0x74,
+0x08, 0x93, 0x25, 0x28, 0xfb, 0x74, 0x07, 0x93, 0x35, 0x27, 0xfa, 0xd3, 0xed, 0x9b, 0xec, 0x9a,
+0x40, 0x2a, 0xef, 0x60, 0x1e, 0xe4, 0xff, 0x12, 0x14, 0x4e, 0xfc, 0x08, 0xe6, 0xfd, 0xe5, 0x23,
+0x25, 0xe0, 0x24, 0x6e, 0xf8, 0xa6, 0x04, 0x08, 0xa6, 0x05, 0x05, 0x23, 0xe5, 0x23, 0xc3, 0x94,
+0x03, 0x50, 0x0e, 0x78, 0x74, 0xa6, 0x27, 0x08, 0xa6, 0x28, 0xae, 0x22, 0x05, 0x22, 0x02, 0x22,
+0x79, 0xef, 0x60, 0x1c, 0xe5, 0x23, 0xc3, 0x94, 0x02, 0x50, 0x15, 0x12, 0x14, 0x4e, 0xfe, 0x08,
+0xe6, 0xff, 0xe5, 0x23, 0x25, 0xe0, 0x24, 0x6e, 0xf8, 0xa6, 0x06, 0x08, 0xa6, 0x07, 0x05, 0x23,
+0x7b, 0x00, 0x7a, 0x00, 0x79, 0x6e, 0x75, 0x2d, 0xff, 0x12, 0x23, 0x6d, 0xb4, 0xff, 0x04, 0x7f,
+0xff, 0x80, 0x07, 0x74, 0x24, 0x25, 0x22, 0xf8, 0xe6, 0xff, 0x78, 0xab, 0xa6, 0x07, 0x7b, 0x00,
+0x7a, 0x00, 0x79, 0x6e, 0x85, 0x22, 0x2d, 0x12, 0x23, 0x6d, 0xb4, 0xff, 0x04, 0x7f, 0xff, 0x80,
+0x07, 0x74, 0x24, 0x25, 0x22, 0xf8, 0xe6, 0xff, 0x78, 0xac, 0xa6, 0x07, 0x22, 0xad, 0x23, 0x12,
+0x29, 0x30, 0x8f, 0x22, 0xe5, 0x22, 0x22, 0x8b, 0x1e, 0x8a, 0x1f, 0x89, 0x20, 0xe4, 0xf5, 0x21,
+0xf5, 0x22, 0xf5, 0x23, 0x85, 0x5b, 0x82, 0x85, 0x5a, 0x83, 0xe4, 0x93, 0xff, 0xe5, 0x21, 0xc3,
+0x9f, 0x40, 0x03, 0x02, 0x24, 0x58, 0x12, 0x00, 0x18, 0x74, 0x01, 0x93, 0xf5, 0x24, 0x12, 0x00,
+0x12, 0x74, 0x02, 0x93, 0xf5, 0x25, 0x12, 0x00, 0x12, 0x74, 0x04, 0x93, 0xfc, 0x74, 0x05, 0x93,
+0xfd, 0xe5, 0x24, 0x25, 0xe0, 0x24, 0x00, 0xf8, 0xe2, 0xfe, 0x08, 0xe2, 0xff, 0xd3, 0x9d, 0xee,
+0x9c, 0x40, 0x6f, 0x7c, 0x00, 0x7d, 0x05, 0x12, 0x09, 0x62, 0xe5, 0x25, 0x25, 0xe0, 0x24, 0x01,
+0xf8, 0xe2, 0x24, 0x01, 0xfd, 0x18, 0xe2, 0x34, 0x00, 0xfc, 0x12, 0x09, 0x74, 0x8e, 0x26, 0x8f,
+0x27, 0x12, 0x00, 0x12, 0x74, 0x03, 0x93, 0x30, 0xe7, 0x2b, 0x54, 0x7f, 0xc3, 0x95, 0x27, 0xff,
+0xe4, 0x95, 0x26, 0xfe, 0x12, 0x2b, 0x6f, 0xc3, 0x74, 0x03, 0x9f, 0xee, 0x64, 0x80, 0xf8, 0x74,
+0x80, 0x98, 0x40, 0x2e, 0xaf, 0x21, 0x74, 0x01, 0xa8, 0x07, 0x08, 0x80, 0x02, 0xc3, 0x33, 0xd8,
+0xfc, 0x42, 0x22, 0x80, 0x1d, 0x12, 0x00, 0x12, 0x74, 0x03, 0x93, 0xc3, 0x95, 0x27, 0xe4, 0x95,
+0x26, 0x50, 0x0f, 0xaf, 0x21, 0x74, 0x01, 0xa8, 0x07, 0x08, 0x80, 0x02, 0xc3, 0x33, 0xd8, 0xfc,
+0x42, 0x22, 0x12, 0x00, 0x12, 0x74, 0x01, 0x93, 0x24, 0x20, 0xf8, 0xe2, 0xc3, 0x13, 0x20, 0xe0,
+0x0f, 0x12, 0x00, 0x12, 0x74, 0x02, 0x93, 0x24, 0x20, 0xf8, 0xe2, 0xc3, 0x13, 0x30, 0xe0, 0x03,
+0x75, 0x23, 0x01, 0x05, 0x21, 0x02, 0x23, 0x84, 0x90, 0x00, 0x36, 0xe0, 0x65, 0x22, 0x60, 0x0a,
+0xe5, 0x22, 0xf0, 0xe4, 0x90, 0x00, 0x35, 0xf0, 0x80, 0x14, 0x90, 0x00, 0x35, 0xe0, 0x04, 0xf0,
+0xc3, 0x94, 0x03, 0x40, 0x09, 0xe0, 0x14, 0xf0, 0x90, 0x00, 0x37, 0xe5, 0x22, 0xf0, 0x90, 0x00,
+0x37, 0xe0, 0xab, 0x1e, 0xaa, 0x1f, 0xa9, 0x20, 0x12, 0x09, 0x2e, 0xaf, 0x23, 0x22, 0x12, 0x27,
+0xf8, 0x78, 0x7c, 0xe6, 0xff, 0xe5, 0x59, 0x24, 0x09, 0xf5, 0x82, 0xe4, 0x35, 0x58, 0xf5, 0x83,
+0xe5, 0x82, 0x2f, 0xf5, 0x82, 0xe4, 0x35, 0x83, 0xf5, 0x83, 0xe4, 0x93, 0xff, 0x22, 0x74, 0x07,
+0x93, 0xfe, 0x74, 0x08, 0x93, 0xff, 0xe6, 0xfd, 0x75, 0xf0, 0x0a, 0xa4, 0x24, 0xb1, 0xf5, 0x82,
+0xe4, 0x34, 0x01, 0xf5, 0x83, 0x22, 0xe5, 0x27, 0x75, 0xf0, 0x0a, 0xa4, 0x24, 0xb3, 0xf5, 0x82,
+0xe4, 0x34, 0x01, 0xf5, 0x83, 0x22, 0xe0, 0xfa, 0xa3, 0xe0, 0x2f, 0xff, 0xea, 0x3e, 0xfe, 0xed,
+0x75, 0xf0, 0x0a, 0xa4, 0x24, 0xb7, 0xf5, 0x82, 0xe4, 0x34, 0x01, 0xf5, 0x83, 0x22, 0x85, 0x59,
+0x82, 0x85, 0x58, 0x83, 0x22, 0x7b, 0x01, 0x7a, 0x01, 0x79, 0xb1, 0x02, 0x0c, 0xd9, 0xe5, 0x27,
+0x75, 0xf0, 0x0a, 0xa4, 0x24, 0xb5, 0xf5, 0x82, 0xe4, 0x34, 0x01, 0xf5, 0x83, 0x22, 0xe0, 0xc3,
+0x13, 0xfe, 0xa3, 0xe0, 0x13, 0xff, 0xc3, 0xed, 0x9f, 0xff, 0xec, 0x9e, 0x22, 0xe0, 0xfc, 0xa3,
+0xe0, 0xfd, 0xd3, 0x9f, 0xec, 0x9e, 0x22, 0xe5, 0x27, 0x75, 0xf0, 0x0a, 0xa4, 0x24, 0xb6, 0xf5,
+0x82, 0xe4, 0x34, 0x01, 0xf5, 0x83, 0x22, 0xe6, 0x90, 0xff, 0x55, 0xf0, 0x90, 0xff, 0x5d, 0xf0,
+0x22, 0x43, 0xad, 0x04, 0x90, 0xff, 0x40, 0x74, 0x29, 0xf0, 0x22, 0x7e, 0x00, 0x7d, 0x00, 0x7b,
+0xfe, 0x02, 0x0c, 0xd9, 0x75, 0xf0, 0x0a, 0xa4, 0x24, 0xb9, 0xf5, 0x82, 0xe4, 0x34, 0x01, 0xf5,
+0x83, 0x22, 0xe5, 0x2a, 0x94, 0x00, 0xe5, 0x29, 0x64, 0x80, 0x94, 0x80, 0x22, 0x85, 0x1f, 0x82,
+0x85, 0x1e, 0x83, 0x22, 0xe0, 0xfc, 0xa3, 0xe0, 0xc3, 0x9f, 0xff, 0xec, 0x9e, 0xfe, 0x22, 0x78,
+0x7d, 0x06, 0x06, 0x18, 0x06, 0x06, 0x78, 0x8d, 0x16, 0x22, 0x90, 0xff, 0x43, 0x74, 0x9f, 0xf0,
+0x22, 0x8e, 0x1e, 0x8f, 0x1f, 0xe4, 0x78, 0x88, 0xf6, 0x78, 0x8b, 0xf6, 0x85, 0x1e, 0x58, 0x85,
+0x1f, 0x59, 0xe5, 0x1f, 0x24, 0x31, 0xff, 0xe4, 0x35, 0x1e, 0xfa, 0xa9, 0x07, 0x7b, 0xff, 0x78,
+0x7e, 0x7c, 0x00, 0x7d, 0x00, 0x7e, 0x00, 0x7f, 0x0a, 0x12, 0x08, 0xc2, 0x7e, 0x00, 0x7f, 0xa0,
+0x7d, 0x00, 0x12, 0x24, 0xf5, 0x12, 0x25, 0x6d, 0x74, 0x31, 0x93, 0x78, 0x7e, 0xf6, 0x12, 0x25,
+0x6d, 0x74, 0x39, 0x93, 0x78, 0x86, 0xf6, 0x12, 0x24, 0xee, 0x74, 0x05, 0x93, 0xff, 0x7e, 0x00,
+0x7c, 0x10, 0x7d, 0x00, 0x12, 0x0c, 0xac, 0xe4, 0x7b, 0xc8, 0xfa, 0xf9, 0xf8, 0x12, 0x0b, 0x9c,
+0x78, 0x7a, 0xa6, 0x06, 0x08, 0xa6, 0x07, 0xe4, 0x78, 0x8d, 0xf6, 0x43, 0x95, 0x80, 0x90, 0xff,
+0x41, 0x74, 0x77, 0xf0, 0x90, 0xff, 0x49, 0x74, 0x0d, 0xf0, 0x12, 0x25, 0x6d, 0xe4, 0x93, 0xf5,
+0x20, 0xf4, 0x60, 0x0c, 0xe4, 0xfd, 0xaf, 0x20, 0x12, 0x29, 0xd6, 0xe4, 0xfd, 0x12, 0x26, 0x46,
+0x12, 0x25, 0x6d, 0x74, 0x01, 0x93, 0xf5, 0x20, 0xf4, 0x60, 0x0c, 0xe4, 0xfd, 0xaf, 0x20, 0x12,
+0x29, 0xd6, 0x7d, 0x01, 0x12, 0x26, 0x46, 0x78, 0x84, 0xe6, 0x7f, 0x08, 0x30, 0xe0, 0x02, 0x7f,
+0x05, 0x78, 0x8c, 0xa6, 0x07, 0x22, 0xaf, 0x20, 0x12, 0x2a, 0x0a, 0x7d, 0x08, 0xaf, 0x20, 0x12,
+0x28, 0x53, 0x7d, 0x07, 0xaf, 0x20, 0x12, 0x28, 0x53, 0x22, 0x90, 0xff, 0x4a, 0x74, 0x71, 0xf0,
+0x90, 0xff, 0x50, 0x74, 0x0f, 0xf0, 0x90, 0xff, 0x58, 0xf0, 0xe4, 0x90, 0xff, 0x40, 0xf0, 0x12,
+0x25, 0x8a, 0x78, 0x81, 0xe6, 0x90, 0xff, 0x54, 0xf0, 0x90, 0xff, 0x5c, 0xf0, 0x78, 0x7f, 0xe6,
+0x90, 0xff, 0x42, 0xf0, 0x78, 0x83, 0x12, 0x25, 0x37, 0x90, 0xff, 0x48, 0x74, 0x02, 0xf0, 0x12,
+0x25, 0x41, 0x90, 0xff, 0x43, 0xe0, 0x20, 0xe4, 0x08, 0x75, 0x91, 0xc1, 0xe4, 0xf5, 0x91, 0x80,
+0xf1, 0x12, 0x25, 0x8a, 0xe4, 0x78, 0x8a, 0xf6, 0x78, 0x7d, 0xbf, 0xff, 0x1b, 0xf6, 0x18, 0x76,
+0x01, 0x78, 0x8f, 0xe6, 0xc3, 0x13, 0x78, 0x8d, 0xf6, 0x78, 0x7f, 0xe6, 0x90, 0xff, 0x42, 0xf0,
+0x08, 0x12, 0x25, 0x37, 0x78, 0x7e, 0x80, 0x1b, 0xa6, 0x07, 0xef, 0x04, 0x18, 0xf6, 0x78, 0x8d,
+0x76, 0x01, 0x78, 0x8a, 0x76, 0x01, 0x78, 0x85, 0xe6, 0x90, 0xff, 0x42, 0xf0, 0x78, 0x87, 0x12,
+0x25, 0x37, 0x18, 0xe6, 0x90, 0xff, 0x48, 0xf0, 0x7e, 0x00, 0x7f, 0x14, 0x7d, 0x00, 0x7b, 0x01,
+0x7a, 0x02, 0x79, 0x55, 0x12, 0x0c, 0xd9, 0x12, 0x28, 0xa7, 0x78, 0x82, 0xe6, 0x30, 0xe7, 0x1b,
+0x12, 0x25, 0x41, 0x90, 0xff, 0x43, 0xe0, 0x20, 0xe4, 0x08, 0x75, 0x91, 0xc1, 0xe4, 0xf5, 0x91,
+0x80, 0xf1, 0x12, 0x16, 0xaf, 0x78, 0x8d, 0xe6, 0x70, 0xe9, 0x22, 0x53, 0xad, 0xfb, 0x12, 0x25,
+0x44, 0x22, 0xab, 0x07, 0xbb, 0xff, 0x03, 0x7f, 0xff, 0x22, 0xeb, 0x70, 0x0c, 0x12, 0x12, 0x89,
+0x74, 0x11, 0x93, 0xf5, 0x22, 0x74, 0x12, 0x80, 0x1d, 0x78, 0xaa, 0xe6, 0x14, 0xb5, 0x03, 0x0c,
+0x12, 0x12, 0x89, 0x74, 0x13, 0x93, 0xf5, 0x22, 0x74, 0x14, 0x80, 0x0a, 0x12, 0x12, 0x89, 0x74,
+0x0f, 0x93, 0xf5, 0x22, 0x74, 0x10, 0x93, 0xf5, 0x23, 0x90, 0x02, 0x8f, 0xe0, 0x70, 0x06, 0x90,
+0x02, 0xb6, 0xe0, 0x60, 0x14, 0xe5, 0x23, 0x25, 0xe0, 0xff, 0xe5, 0x22, 0x33, 0xfe, 0x7c, 0x00,
+0x7d, 0x03, 0x12, 0x09, 0x74, 0x8e, 0x22, 0x8f, 0x23, 0xeb, 0x25, 0xe0, 0x25, 0xe0, 0x24, 0x02,
+0x12, 0x14, 0x6d, 0xeb, 0x25, 0xe0, 0x12, 0x13, 0x10, 0xfe, 0xc3, 0xef, 0x95, 0x23, 0xee, 0x95,
+0x22, 0xaf, 0x03, 0x50, 0x02, 0x7f, 0xff, 0x22, 0xf6, 0x08, 0xf6, 0x08, 0xf6, 0x08, 0xf6, 0x22,
+0x8f, 0x23, 0xe4, 0x78, 0x94, 0xf6, 0x08, 0xf6, 0x78, 0x92, 0xf6, 0x08, 0xf6, 0x90, 0x01, 0x9c,
+0xe0, 0x7f, 0x00, 0x22, 0x9f, 0xff, 0xe4, 0x94, 0x00, 0xfe, 0xef, 0x26, 0xf6, 0x18, 0xee, 0x36,
+0xf6, 0x22, 0x90, 0x01, 0x9b, 0xe0, 0xff, 0x78, 0x9c, 0xe6, 0x22, 0xe6, 0xfe, 0x08, 0xe6, 0xff,
+0x7c, 0x00, 0x7d, 0x0a, 0x02, 0x09, 0x62, 0xd3, 0xef, 0x9d, 0xec, 0x64, 0x80, 0xf8, 0xee, 0x64,
+0x80, 0x98, 0x22, 0xd3, 0xe6, 0x94, 0x00, 0x18, 0xe6, 0x64, 0x80, 0x94, 0x80, 0x22, 0xd3, 0xef,
+0x95, 0x22, 0x74, 0x80, 0xf8, 0x6e, 0x98, 0x22, 0xef, 0x54, 0x07, 0x90, 0x2c, 0xa9, 0x93, 0xfe,
+0xf4, 0xfc, 0xef, 0x54, 0xf0, 0xff, 0xc2, 0xaf, 0x75, 0xa0, 0xff, 0x64, 0x10, 0x70, 0x16, 0xbd,
+0x08, 0x02, 0x7d, 0x02, 0x78, 0x12, 0xed, 0x30, 0xe2, 0x05, 0xe2, 0x4e, 0xf2, 0x80, 0x03, 0xe2,
+0x5c, 0xf2, 0x18, 0x80, 0x08, 0xef, 0x13, 0x13, 0x54, 0x3f, 0x24, 0x11, 0xf8, 0xed, 0x24, 0xfb,
+0x60, 0x0b, 0x14, 0x60, 0x11, 0x24, 0xfe, 0x70, 0x14, 0xe2, 0x5c, 0x80, 0x0b, 0xe2, 0x5c, 0xf2,
+0x18, 0xe2, 0x4e, 0xf2, 0x80, 0x07, 0xe2, 0x4e, 0xf2, 0x18, 0xe2, 0x5c, 0xf2, 0xe4, 0xf5, 0xa0,
+0xd2, 0xaf, 0x22, 0xef, 0x54, 0x07, 0x90, 0x2c, 0xb1, 0x93, 0xfe, 0xf4, 0xfc, 0xef, 0x54, 0xf0,
+0xff, 0xc2, 0xaf, 0x75, 0xa0, 0xff, 0x64, 0x10, 0x70, 0x16, 0xbd, 0x08, 0x02, 0x7d, 0x02, 0x78,
+0x12, 0xed, 0x30, 0xe2, 0x05, 0xe2, 0x4e, 0xf2, 0x80, 0x03, 0xe2, 0x5c, 0xf2, 0x18, 0x80, 0x08,
+0xef, 0x13, 0x13, 0x54, 0x3f, 0x24, 0x11, 0xf8, 0xed, 0x30, 0xe1, 0x05, 0xe2, 0x4e, 0xf2, 0x80,
+0x03, 0xe2, 0x5c, 0xf2, 0x18, 0xed, 0x30, 0xe0, 0x05, 0xe2, 0x4e, 0xf2, 0x80, 0x03, 0xe2, 0x5c,
+0xf2, 0xe4, 0xf5, 0xa0, 0xd2, 0xaf, 0x22, 0x15, 0x0f, 0xa8, 0x0f, 0x76, 0x64, 0x90, 0xff, 0x58,
+0xe0, 0xff, 0x90, 0xff, 0x50, 0xe0, 0x4f, 0x30, 0xe7, 0x06, 0xa8, 0x0f, 0x16, 0xe6, 0x70, 0xed,
+0x78, 0x8a, 0xe6, 0x60, 0x1b, 0xa8, 0x0f, 0xe4, 0xf6, 0xa8, 0x0f, 0xe6, 0xff, 0xc3, 0x78, 0x8f,
+0x96, 0x50, 0x1c, 0x12, 0x24, 0x95, 0x7d, 0x06, 0x12, 0x28, 0x53, 0xa8, 0x0f, 0x06, 0x80, 0xe9,
+0x78, 0x7d, 0x12, 0x24, 0x93, 0x7d, 0x06, 0x12, 0x24, 0x8e, 0x7d, 0x06, 0x12, 0x27, 0xf8, 0x12,
+0x25, 0x44, 0x05, 0x0f, 0x22, 0xc0, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0xc0, 0xd0, 0x75,
+0xd0, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0, 0x03, 0xc0, 0x04, 0xc0, 0x05, 0xc0, 0x06,
+0xc0, 0x07, 0x12, 0x16, 0xaf, 0xd0, 0x07, 0xd0, 0x06, 0xd0, 0x05, 0xd0, 0x04, 0xd0, 0x03, 0xd0,
+0x02, 0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, 0x83, 0xd0, 0xf0, 0xd0, 0xe0, 0x32,
+0x8d, 0x2c, 0xe4, 0xff, 0xf5, 0x2e, 0xf5, 0x2f, 0x7e, 0xff, 0xef, 0xc3, 0x95, 0x2c, 0x50, 0x28,
+0xef, 0x65, 0x2d, 0x60, 0x19, 0x12, 0x0a, 0x15, 0xfd, 0xac, 0xf0, 0xd3, 0x95, 0x2f, 0xec, 0x95,
+0x2e, 0x40, 0x0b, 0xed, 0x24, 0x20, 0xf5, 0x2f, 0xe4, 0x3c, 0xf5, 0x2e, 0xae, 0x07, 0x0f, 0x74,
+0x02, 0x29, 0xf9, 0xe4, 0x3a, 0xfa, 0x80, 0xd2, 0xaf, 0x06, 0x22, 0xe4, 0x90, 0x00, 0x3a, 0xf0,
+0xef, 0x70, 0x11, 0x75, 0x88, 0x08, 0xf5, 0x8d, 0xf5, 0x8c, 0xf5, 0x8f, 0xf5, 0x8e, 0xf5, 0x88,
+0x43, 0xac, 0x02, 0x22, 0x75, 0x88, 0x08, 0xe4, 0xf5, 0x8d, 0xf5, 0x8c, 0xef, 0x75, 0xf0, 0x20,
+0xa4, 0xff, 0xe5, 0xf0, 0x44, 0x80, 0xf5, 0x8f, 0x8f, 0x8e, 0x75, 0x88, 0xa0, 0x53, 0xac, 0xfd,
+0x22, 0xe4, 0x78, 0xae, 0xf6, 0x8f, 0x82, 0x8e, 0x83, 0x74, 0x64, 0x93, 0x78, 0xaa, 0xf6, 0xef,
+0x24, 0x64, 0xf5, 0x0b, 0xe4, 0x3e, 0xf5, 0x0a, 0x78, 0x30, 0xe2, 0x54, 0xfe, 0xf2, 0x54, 0xfd,
+0xf2, 0x54, 0xfb, 0xf2, 0xe4, 0x90, 0x02, 0x72, 0xf0, 0x90, 0x02, 0x99, 0xf0, 0x90, 0x02, 0x73,
+0xf0, 0x90, 0x02, 0x9a, 0xf0, 0x22, 0x12, 0x2b, 0x4a, 0xfb, 0xef, 0xf4, 0x60, 0x2b, 0xc2, 0xaf,
+0x75, 0xa0, 0xff, 0xbb, 0x01, 0x04, 0x7e, 0x18, 0x80, 0x08, 0xeb, 0x25, 0xe0, 0x25, 0xe0, 0x24,
+0x12, 0xfe, 0xed, 0xa8, 0x06, 0x60, 0x05, 0xe2, 0x4c, 0xf2, 0x80, 0x08, 0xe2, 0xff, 0xec, 0xf4,
+0xfd, 0xef, 0x5d, 0xf2, 0xe4, 0xf5, 0xa0, 0xd2, 0xaf, 0x22, 0x12, 0x2b, 0x4a, 0xfe, 0xef, 0xf4,
+0x60, 0x29, 0x90, 0xff, 0x13, 0xee, 0xd3, 0x94, 0x03, 0x40, 0x11, 0xaf, 0x06, 0xef, 0x75, 0xf0,
+0x04, 0xa4, 0x25, 0x82, 0xf5, 0x82, 0xe5, 0xf0, 0x35, 0x83, 0xf5, 0x83, 0xed, 0x60, 0x04, 0xe0,
+0x4c, 0xf0, 0x22, 0xe0, 0xff, 0xec, 0xf4, 0xfe, 0xef, 0x5e, 0xf0, 0x22, 0xab, 0x1e, 0xe5, 0x20,
+0x24, 0x0c, 0xf9, 0xe4, 0x35, 0x1f, 0xfa, 0x7e, 0x00, 0xe9, 0x25, 0x27, 0xf9, 0xee, 0x3a, 0xfa,
+0x12, 0x08, 0xe8, 0xff, 0x22, 0xab, 0x1e, 0xaa, 0x1f, 0xa9, 0x20, 0x90, 0x00, 0x0b, 0x12, 0x09,
+0x01, 0xff, 0x22, 0x75, 0x8a, 0xa0, 0xe4, 0x90, 0x00, 0x3a, 0xf0, 0x22, 0xab, 0x1f, 0xaa, 0x20,
+0xa9, 0x21, 0x90, 0x00, 0x01, 0x12, 0x09, 0x01, 0xff, 0x22, 0xf0, 0x90, 0xff, 0x58, 0xf0, 0xab,
+0x1f, 0xaa, 0x20, 0xa9, 0x21, 0x12, 0x08, 0xe8, 0xff, 0x22, 0x90, 0xff, 0x54, 0xf0, 0x90, 0xff,
+0x5c, 0xf0, 0x90, 0xff, 0x48, 0x22, 0x75, 0x9b, 0x5a, 0x75, 0x9a, 0xa5, 0x75, 0x99, 0xf0, 0x75,
+0x98, 0x0f, 0x75, 0xac, 0xff, 0x75, 0xad, 0xff, 0x90, 0xff, 0x88, 0x74, 0x40, 0xf0, 0x74, 0xc0,
+0xf0, 0x90, 0xff, 0x01, 0x74, 0x0f, 0xf0, 0x43, 0x95, 0x60, 0xe4, 0xf5, 0x96, 0x22, 0x78, 0x8d,
+0xe6, 0x70, 0xfb, 0xff, 0xef, 0x12, 0x24, 0xe0, 0xe0, 0xfc, 0xa3, 0xe0, 0xfd, 0xef, 0x12, 0x24,
+0xb8, 0xec, 0xf0, 0xa3, 0xed, 0xf0, 0x0f, 0xbf, 0x10, 0xea, 0x22, 0xef, 0x14, 0x60, 0x0a, 0x04,
+0x70, 0x0e, 0x78, 0x30, 0xed, 0xf2, 0x7f, 0x00, 0x22, 0x78, 0xae, 0xa6, 0x05, 0x7f, 0x00, 0x22,
+0x7f, 0x01, 0x22, 0xef, 0x24, 0x3b, 0xf5, 0x5b, 0xe4, 0x3e, 0xf5, 0x5a, 0x7e, 0x00, 0x7f, 0x03,
+0x7d, 0x00, 0x7b, 0x01, 0x7a, 0x00, 0x79, 0x35, 0x02, 0x0c, 0xd9, 0x78, 0x9c, 0xe6, 0x60, 0x06,
+0xc3, 0x94, 0xff, 0x50, 0x01, 0x06, 0x78, 0x9d, 0xe6, 0x60, 0x06, 0xc3, 0x94, 0xff, 0x50, 0x01,
+0x06, 0x22, 0xef, 0x75, 0xf0, 0x0a, 0xa4, 0x24, 0xb1, 0xf5, 0x82, 0xe4, 0x34, 0x01, 0xf5, 0x83,
+0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0x22, 0x7e, 0x00, 0x7f, 0x15, 0x7d, 0x00, 0x7b, 0x00, 0x7a, 0x00,
+0x79, 0x90, 0x12, 0x0c, 0xd9, 0x78, 0xa3, 0x76, 0xff, 0x22, 0xef, 0x54, 0x07, 0x90, 0x2c, 0xb1,
+0x93, 0xfc, 0xef, 0xc4, 0x54, 0x0f, 0x22, 0x78, 0x88, 0xa6, 0x07, 0xef, 0x70, 0x04, 0x78, 0x8b,
+0xa6, 0x07, 0x22, 0xef, 0x25, 0xe0, 0x24, 0x00, 0xf8, 0xe2, 0xfe, 0x08, 0xe2, 0xff, 0x22, 0xee,
+0x30, 0xe7, 0x07, 0xc3, 0xe4, 0x9f, 0xff, 0xe4, 0x9e, 0xfe, 0x22, 0x11, 0x16, 0x0e, 0x01, 0x0f,
+0x78, 0x0f, 0x00, 0x64, 0x10, 0x41, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x46, 0x45, 0x44, 0x43,
+0x17, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x28, 0x00,
+0x80, 0x64, 0x00, 0x40, 0x40, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0xf0, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xc8,
+0x00, 0xc8, 0x00, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x11, 0x16, 0x0c, 0x02, 0x0f, 0x78, 0x14, 0x00, 0x3c, 0x41, 0x44, 0x51,
+0x45, 0x52, 0x46, 0x53, 0x56, 0x54, 0x55, 0x43, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x2f, 0x28, 0x00, 0x80, 0x78, 0x00, 0x40, 0x0e, 0x14, 0x01,
+0x0a, 0x08, 0x07, 0x00, 0x82, 0x1f, 0x1e, 0x32, 0x01, 0x2c, 0x1b, 0x1a, 0x32, 0x01, 0x2c, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xef, 0x01, 0x3f, 0x00, 0x28, 0x00,
+0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0xc8, 0x00, 0xf0, 0x01, 0x00, 0x00,
+0x00, 0x04, 0x01, 0x00, 0x01, 0x01, 0x05, 0x02, 0x02, 0x30, 0x03, 0x07, 0x28, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x18,
+0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40,
+0x80, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0xc2, 0xaf, 0x51, 0x96, 0xe5, 0x9b, 0xb4,
+0x5a, 0x16, 0xe5, 0x9a, 0xb4, 0xa5, 0x11, 0xe5, 0x99, 0xb4, 0xf0, 0x0c, 0xe5, 0x98, 0xb4, 0x0f,
+0x07, 0x90, 0xff, 0x85, 0xe0, 0x44, 0x20, 0xf0, 0x75, 0x8a, 0x0a, 0xd2, 0xaf, 0x7f, 0x0c, 0x31,
+0x6b, 0x12, 0x33, 0xd9, 0x91, 0xea, 0xf1, 0x7e, 0x80, 0xfa, 0x75, 0x8f, 0x81, 0x75, 0x8e, 0x80,
+0x75, 0x8a, 0xa0, 0x75, 0x8a, 0x0a, 0x90, 0x00, 0x38, 0xe0, 0x70, 0x02, 0xa1, 0xae, 0x14, 0x70,
+0x02, 0xa1, 0xd6, 0x24, 0xfc, 0x70, 0x02, 0xc1, 0xb0, 0x04, 0x60, 0x02, 0xe1, 0x02, 0xe4, 0xf5,
+0x1d, 0xf5, 0x1c, 0xf5, 0x1b, 0xf5, 0x1a, 0x75, 0x0d, 0x2b, 0x75, 0x0e, 0x7b, 0x12, 0x35, 0x0c,
+0xe4, 0xfd, 0xff, 0x51, 0xdb, 0xf1, 0x87, 0x12, 0x18, 0x3b, 0xe4, 0xf5, 0x19, 0xf1, 0x67, 0x74,
+0x02, 0x93, 0xff, 0xe5, 0x19, 0xc3, 0x9f, 0x50, 0x33, 0xaf, 0x19, 0x12, 0x1f, 0xe6, 0xd3, 0xef,
+0x94, 0xb0, 0xee, 0x94, 0x36, 0x40, 0x21, 0xe4, 0x7f, 0x01, 0xfe, 0xfd, 0xfc, 0xa9, 0x19, 0xa8,
+0x01, 0x12, 0x0c, 0x3f, 0xe5, 0x1d, 0x4f, 0xf5, 0x1d, 0xe5, 0x1c, 0x4e, 0xf5, 0x1c, 0xe5, 0x1b,
+0x4d, 0xf5, 0x1b, 0xe5, 0x1a, 0x4c, 0xf5, 0x1a, 0x05, 0x19, 0x80, 0xc1, 0x75, 0x0c, 0x04, 0xe5,
+0x0c, 0x70, 0x02, 0xe1, 0x02, 0xff, 0x12, 0x34, 0xef, 0x8e, 0x0d, 0x8f, 0x0e, 0xef, 0x4e, 0x60,
+0x05, 0xe4, 0x90, 0x00, 0x38, 0xf0, 0x90, 0x01, 0x5a, 0xe5, 0x0c, 0xf1, 0x66, 0x74, 0x85, 0x93,
+0x90, 0x01, 0xa5, 0xf1, 0x66, 0x74, 0x86, 0x93, 0x90, 0x01, 0xa6, 0xf1, 0x66, 0x74, 0x87, 0x93,
+0x90, 0x01, 0xa7, 0xf1, 0x66, 0x74, 0x88, 0x93, 0x90, 0x01, 0xa8, 0xf0, 0xe1, 0x02, 0xe4, 0x78,
+0xa5, 0xf6, 0xf1, 0x8e, 0xef, 0x64, 0x01, 0x60, 0xf9, 0x12, 0x35, 0x0c, 0xaf, 0x0e, 0xae, 0x0d,
+0x51, 0xf3, 0xe4, 0xfd, 0xff, 0x51, 0xdb, 0x71, 0x36, 0xe4, 0x78, 0xa8, 0xf6, 0x08, 0xf6, 0x90,
+0x00, 0x38, 0x04, 0xf0, 0xe1, 0x02, 0xe4, 0x78, 0x60, 0xf6, 0x08, 0xf6, 0x90, 0x01, 0xaf, 0xe0,
+0xb4, 0x01, 0x08, 0x90, 0x00, 0x38, 0x74, 0x05, 0xf0, 0xe1, 0x02, 0x78, 0xa5, 0x76, 0x01, 0xf1,
+0x87, 0x12, 0x18, 0x3b, 0x7b, 0x00, 0x7a, 0x00, 0x79, 0x61, 0x12, 0x23, 0x77, 0x78, 0x60, 0xa6,
+0x07, 0x78, 0x66, 0xe6, 0x60, 0x07, 0x78, 0x6c, 0xe6, 0x60, 0x02, 0xc1, 0x9f, 0x78, 0x61, 0xe6,
+0x30, 0xe0, 0x0f, 0x08, 0x76, 0x00, 0x08, 0x76, 0x64, 0x08, 0x76, 0x01, 0x08, 0x76, 0x90, 0x08,
+0x76, 0x01, 0x78, 0x66, 0xe6, 0x60, 0x11, 0x78, 0x63, 0xe6, 0x78, 0x5c, 0xf6, 0x78, 0x65, 0xe6,
+0x78, 0x5d, 0xf6, 0x08, 0x76, 0x01, 0x80, 0x08, 0xe4, 0x78, 0x5c, 0xf6, 0x08, 0xf6, 0x08, 0xf6,
+0x78, 0x1e, 0x7c, 0x00, 0x7d, 0x00, 0x7b, 0x00, 0x7a, 0x00, 0x79, 0x5c, 0x7e, 0x00, 0x7f, 0x03,
+0x12, 0x08, 0xc2, 0x90, 0x01, 0x9f, 0xe0, 0xf5, 0x21, 0x75, 0x22, 0x0f, 0x12, 0x0d, 0x05, 0x78,
+0x5f, 0xa6, 0x07, 0x78, 0x66, 0xe6, 0x60, 0x3d, 0x90, 0x01, 0xab, 0xe0, 0xff, 0x60, 0x15, 0x78,
+0x5f, 0xe6, 0x70, 0x10, 0x12, 0x34, 0xfd, 0x70, 0x01, 0x06, 0x86, 0x04, 0xd3, 0x9f, 0xec, 0x9e,
+0x40, 0x23, 0x80, 0x1b, 0x90, 0x01, 0xac, 0xe0, 0xff, 0x60, 0x1a, 0x78, 0x5f, 0xe6, 0xb4, 0x0c,
+0x14, 0x12, 0x34, 0xfd, 0x70, 0x01, 0x06, 0x86, 0x04, 0xd3, 0x9f, 0xec, 0x9e, 0x40, 0x06, 0xe4,
+0x90, 0x00, 0x38, 0xf0, 0x22, 0xf1, 0x87, 0x78, 0x61, 0xe6, 0xfd, 0x12, 0x30, 0xac, 0x80, 0x52,
+0xf1, 0x67, 0x74, 0x02, 0x93, 0xff, 0x90, 0x01, 0x7b, 0xf0, 0x7e, 0x00, 0xe5, 0x0e, 0x24, 0x09,
+0xfd, 0xe4, 0x35, 0x0d, 0xfa, 0xa9, 0x05, 0x7b, 0xff, 0x78, 0x7c, 0x7c, 0x01, 0x7d, 0x01, 0x12,
+0x08, 0xc2, 0x90, 0x01, 0xaf, 0xe0, 0xb4, 0x01, 0x29, 0x75, 0x21, 0x01, 0x75, 0x22, 0x00, 0x75,
+0x23, 0xf0, 0x75, 0x24, 0x01, 0x75, 0x25, 0x01, 0x75, 0x26, 0x30, 0x7b, 0x01, 0x7a, 0x01, 0x79,
+0x70, 0x12, 0x19, 0xb6, 0xe4, 0x90, 0x01, 0xaf, 0xf0, 0x75, 0x8a, 0xa0, 0x90, 0x00, 0x3a, 0xf0,
+0x80, 0xd0, 0x90, 0x01, 0x95, 0xe0, 0x64, 0x03, 0x70, 0x20, 0x7f, 0x01, 0x12, 0x32, 0xe8, 0x7f,
+0x3c, 0x31, 0x6b, 0x75, 0x8d, 0x83, 0x75, 0x8c, 0xe8, 0xf1, 0x7e, 0x75, 0x8a, 0xa0, 0xf0, 0x75,
+0x91, 0xc3, 0xf5, 0x91, 0xf1, 0xee, 0xf1, 0xee, 0x80, 0xef, 0xe4, 0x75, 0x1c, 0x88, 0x75, 0x1b,
+0x13, 0xf5, 0x1a, 0xf5, 0x19, 0x78, 0xa5, 0xe6, 0x60, 0x2b, 0xaf, 0x1c, 0xae, 0x1b, 0xad, 0x1a,
+0xac, 0x19, 0xec, 0x4d, 0x4e, 0x4f, 0x60, 0x1d, 0xf1, 0x7e, 0x75, 0x91, 0xc1, 0xf5, 0x91, 0xef,
+0x24, 0xff, 0xf5, 0x1c, 0xee, 0x34, 0xff, 0xf5, 0x1b, 0xed, 0x34, 0xff, 0xf5, 0x1a, 0xec, 0x34,
+0xff, 0xf5, 0x19, 0x80, 0xd0, 0x22, 0xf0, 0x85, 0x0e, 0x82, 0x85, 0x0d, 0x83, 0x22, 0x75, 0xf0,
+0x20, 0xa4, 0x24, 0x08, 0xff, 0xe4, 0x35, 0xf0, 0x44, 0x80, 0xf5, 0x8f, 0x8f, 0x8e, 0x75, 0x8a,
+0xa0, 0xe4, 0x90, 0x00, 0x3a, 0xf0, 0x22, 0x7b, 0x00, 0x7a, 0x00, 0x79, 0x62, 0x22, 0xe4, 0xf5,
+0x1e, 0xaa, 0x0d, 0xa9, 0x0e, 0x7b, 0xff, 0x75, 0x22, 0x01, 0x75, 0x23, 0x00, 0x75, 0x24, 0x31,
+0x12, 0x1b, 0x28, 0xf1, 0x67, 0xe4, 0x93, 0xf4, 0x60, 0x0f, 0x90, 0x00, 0x31, 0x12, 0x35, 0x1a,
+0x40, 0x04, 0xf1, 0xe6, 0x40, 0x03, 0x75, 0x1e, 0x01, 0xf1, 0x67, 0x74, 0x01, 0x93, 0xf4, 0x60,
+0x0f, 0x90, 0x00, 0x33, 0x12, 0x35, 0x1a, 0x40, 0x04, 0xf1, 0xe6, 0x40, 0x03, 0x75, 0x1e, 0x01,
+0x78, 0x60, 0x7c, 0x01, 0x7d, 0x01, 0x7b, 0x01, 0x7a, 0x00, 0x79, 0x31, 0x7e, 0x00, 0x7f, 0x04,
+0x12, 0x08, 0xc2, 0xaf, 0x1e, 0x22, 0xd3, 0xef, 0x94, 0xb8, 0xee, 0x94, 0x0b, 0x22, 0x75, 0x8a,
+0xa0, 0xf0, 0x75, 0x8a, 0xa0, 0xf0, 0x22, 0x7c, 0x00, 0x7d, 0xb0, 0x7f, 0x15, 0x12, 0x33, 0x18,
+0x90, 0xff, 0x10, 0xe0, 0x44, 0x18, 0xf0, 0x7e, 0x01, 0x7f, 0x00, 0x7d, 0x00, 0x7b, 0x01, 0x7a,
+0x00, 0x79, 0xb0, 0x12, 0x0c, 0xd9, 0x51, 0xd5, 0x7d, 0x03, 0x7f, 0x12, 0x12, 0x28, 0x53, 0x90,
+0xff, 0x1b, 0xe0, 0x54, 0xfb, 0xf0, 0x90, 0xff, 0x14, 0xe0, 0x44, 0x04, 0xf0, 0x90, 0x01, 0x57,
+0x74, 0xb6, 0xf0, 0xe4, 0xa3, 0xf0, 0xa3, 0x04, 0xf0, 0xe4, 0x90, 0x01, 0x9c, 0xf0, 0xa3, 0x04,
+0xf0, 0xa3, 0xf0, 0xa3, 0x74, 0x06, 0xf0, 0x90, 0x01, 0xa4, 0x74, 0x04, 0xf0, 0x90, 0x01, 0xa9,
+0x74, 0x02, 0xf0, 0xa3, 0x74, 0x60, 0xf0, 0xa3, 0x74, 0x2d, 0xf0, 0xa3, 0x74, 0x32, 0xf0, 0xa3,
+0x74, 0x01, 0xf0, 0xa3, 0xf0, 0x90, 0x01, 0x9b, 0x74, 0x64, 0xf0, 0x90, 0x01, 0x9a, 0x74, 0x03,
+0xf0, 0xe4, 0x78, 0xb0, 0xf6, 0x11, 0x81, 0x78, 0xaf, 0x76, 0x01, 0xe4, 0x90, 0x00, 0xaf, 0xf0,
+0x22, 0x90, 0x01, 0xad, 0xe0, 0xff, 0x30, 0xe0, 0x05, 0x43, 0x90, 0x10, 0x80, 0x03, 0x53, 0x90,
+0xef, 0xef, 0x90, 0xff, 0x10, 0x30, 0xe1, 0x06, 0xe0, 0x54, 0xe7, 0xf0, 0x80, 0x04, 0xe0, 0x44,
+0x18, 0xf0, 0x90, 0x01, 0xad, 0xe0, 0x30, 0xe2, 0x02, 0x51, 0xdd, 0x22, 0x8b, 0x1e, 0x8a, 0x1f,
+0x89, 0x20, 0x8d, 0x21, 0x90, 0x01, 0xaa, 0xe0, 0xf5, 0x22, 0xe4, 0xf5, 0x23, 0x85, 0x21, 0x21,
+0x51, 0xd5, 0x12, 0x1f, 0xea, 0xff, 0x7e, 0x00, 0x60, 0x02, 0x7e, 0x01, 0x90, 0x00, 0xb2, 0xee,
+0xf0, 0x75, 0x24, 0x01, 0x75, 0x25, 0x00, 0x75, 0x26, 0xb3, 0xef, 0x60, 0x10, 0x51, 0x44, 0xab,
+0x24, 0xaa, 0x25, 0xa9, 0x26, 0x74, 0x10, 0x75, 0xf0, 0x00, 0x12, 0x0a, 0xc5, 0x7e, 0x00, 0x7f,
+0x17, 0x7d, 0xff, 0x7b, 0x01, 0x7a, 0x00, 0x79, 0xb9, 0x12, 0x0c, 0xd9, 0x90, 0x00, 0xb2, 0xe0,
+0xff, 0x78, 0xb0, 0xe6, 0xfe, 0x6f, 0x60, 0x24, 0xa3, 0xe0, 0x54, 0x3f, 0xf0, 0xee, 0x60, 0x06,
+0xe0, 0x44, 0x40, 0xf0, 0x80, 0x0a, 0x90, 0x00, 0xb3, 0xe0, 0xf0, 0xe4, 0x90, 0x00, 0xb1, 0xf0,
+0x90, 0x00, 0xb2, 0xe0, 0x78, 0xb0, 0xf6, 0x75, 0x23, 0x01, 0x80, 0x0d, 0xee, 0x60, 0x0a, 0x90,
+0x00, 0xb3, 0xe0, 0x54, 0x3f, 0xf0, 0x44, 0x80, 0xf0, 0xe5, 0x22, 0x20, 0xe7, 0x1c, 0x30, 0xe6,
+0x07, 0x51, 0x3d, 0x12, 0x1f, 0xea, 0x70, 0x12, 0xe5, 0x22, 0x30, 0xe5, 0x04, 0xe5, 0x23, 0x70,
+0x09, 0xe5, 0x22, 0x30, 0xe4, 0x0b, 0xe5, 0x21, 0x60, 0x07, 0x90, 0x01, 0x9d, 0xe0, 0xff, 0x51,
+0x97, 0x90, 0x01, 0xad, 0xe0, 0x78, 0xaf, 0x66, 0x60, 0x07, 0x11, 0x81, 0x90, 0x01, 0xad, 0xe0,
+0xf6, 0x90, 0x00, 0xaf, 0xe0, 0x70, 0x02, 0x41, 0x3c, 0xe5, 0x21, 0x60, 0x13, 0x51, 0x3d, 0xe4,
+0xf5, 0xf0, 0x12, 0x0a, 0xc5, 0x51, 0x3d, 0x90, 0x00, 0x02, 0xe4, 0xf5, 0xf0, 0x12, 0x0a, 0xe4,
+0x75, 0x2b, 0x30, 0xaf, 0x2b, 0x05, 0x2b, 0x74, 0xb0, 0x2f, 0x51, 0x8f, 0x74, 0x30, 0xf0, 0x51,
+0x8b, 0xe5, 0x21, 0xf0, 0x05, 0x2b, 0x51, 0x3d, 0x12, 0x1f, 0xea, 0x7f, 0x00, 0x60, 0x02, 0x7f,
+0x01, 0x51, 0x8b, 0xef, 0xf0, 0x90, 0x00, 0x0a, 0x12, 0x09, 0x01, 0x60, 0x05, 0x51, 0x8b, 0xe0,
+0x04, 0xf0, 0x75, 0x24, 0x01, 0x75, 0x25, 0x00, 0x75, 0x26, 0xe3, 0x51, 0x44, 0x51, 0x3d, 0x90,
+0x00, 0x06, 0x51, 0x6f, 0x51, 0x3d, 0x90, 0x00, 0x08, 0x51, 0x6f, 0x90, 0x00, 0xf0, 0x74, 0x40,
+0xf0, 0x90, 0x01, 0x10, 0x74, 0x60, 0xf0, 0x90, 0x01, 0x30, 0x74, 0x80, 0xf0, 0x75, 0x24, 0x01,
+0x75, 0x25, 0x00, 0x75, 0x26, 0xf1, 0x75, 0x27, 0x01, 0x75, 0x28, 0x01, 0x75, 0x29, 0x11, 0x75,
+0x2b, 0x81, 0xe4, 0xf5, 0x2a, 0xaf, 0x2a, 0x12, 0x1f, 0xe6, 0x51, 0x75, 0xaf, 0x2a, 0x12, 0x2b,
+0x63, 0xab, 0x27, 0xe5, 0x29, 0xf9, 0x24, 0x02, 0xf5, 0x29, 0xe5, 0x28, 0xfa, 0x34, 0x00, 0xf5,
+0x28, 0x51, 0x85, 0xaf, 0x2a, 0x12, 0x00, 0x03, 0xae, 0x2b, 0x05, 0x2b, 0x74, 0xb0, 0x2e, 0x51,
+0x8f, 0xef, 0xf0, 0x05, 0x2a, 0xe5, 0x2a, 0xc3, 0x94, 0x10, 0x40, 0xc9, 0x22, 0xab, 0x1e, 0xaa,
+0x1f, 0xa9, 0x20, 0x22, 0xab, 0x1e, 0xaa, 0x1f, 0xa9, 0x20, 0x12, 0x0a, 0x15, 0xff, 0xae, 0xf0,
+0xab, 0x24, 0xe5, 0x26, 0xf9, 0x24, 0x02, 0xf5, 0x26, 0xe5, 0x25, 0xfa, 0x34, 0x00, 0xf5, 0x25,
+0xee, 0x8f, 0xf0, 0x12, 0x0a, 0xc5, 0xab, 0x1e, 0xaa, 0x1f, 0xa9, 0x20, 0x90, 0x00, 0x02, 0x12,
+0x0a, 0x40, 0xff, 0xae, 0xf0, 0xab, 0x24, 0xe5, 0x26, 0xf9, 0x24, 0x02, 0xf5, 0x26, 0xe5, 0x25,
+0xfa, 0x34, 0x00, 0xf5, 0x25, 0xee, 0x8f, 0xf0, 0x02, 0x0a, 0xc5, 0x74, 0xb0, 0x25, 0x2b, 0xf5,
+0x82, 0xe4, 0x34, 0x00, 0xf5, 0x83, 0x22, 0xac, 0x07, 0x90, 0x01, 0xad, 0xe0, 0xfd, 0x30, 0xe2,
+0x0a, 0x90, 0xff, 0x19, 0xe0, 0x54, 0xfb, 0xf0, 0x43, 0xac, 0x08, 0x90, 0xff, 0x18, 0xe0, 0x54,
+0xfb, 0xf0, 0xec, 0x12, 0x2f, 0x6e, 0x75, 0x8a, 0x0a, 0x75, 0x91, 0xc1, 0xf5, 0x91, 0x51, 0xd5,
+0x90, 0x01, 0x9e, 0xe0, 0x12, 0x2f, 0x6e, 0x75, 0x8a, 0x0a, 0x78, 0xa5, 0x76, 0x01, 0xed, 0x30,
+0xe2, 0x02, 0x51, 0xdd, 0x22, 0x90, 0xff, 0x18, 0xe0, 0x44, 0x04, 0xf0, 0x22, 0x90, 0xff, 0x19,
+0xe0, 0x44, 0x04, 0xf0, 0x53, 0xac, 0xf7, 0x22, 0xef, 0x60, 0x0e, 0x43, 0xac, 0x10, 0x71, 0x05,
+0x44, 0x18, 0xf0, 0xe4, 0xf5, 0xa6, 0xf5, 0xa2, 0x22, 0x11, 0x81, 0x75, 0xa6, 0x68, 0x75, 0xa2,
+0xc1, 0x53, 0xac, 0xef, 0x22, 0x90, 0xff, 0x12, 0xe0, 0x54, 0xe7, 0xf0, 0x90, 0xff, 0x11, 0xe0,
+0x44, 0x18, 0xf0, 0x90, 0xff, 0x10, 0xe0, 0x22, 0xab, 0x07, 0x8c, 0x56, 0x8d, 0x57, 0x71, 0x05,
+0x54, 0xe7, 0xf0, 0x90, 0xff, 0x14, 0xe0, 0x44, 0x18, 0xf0, 0x90, 0xff, 0x1b, 0xe0, 0x44, 0x18,
+0xf0, 0xe4, 0x90, 0x00, 0x39, 0xf0, 0x53, 0xac, 0xef, 0xf5, 0xa3, 0xeb, 0x44, 0x80, 0xf5, 0xa1,
+0x75, 0xa6, 0x68, 0x75, 0xa2, 0xc1, 0x71, 0x53, 0xf5, 0xd5, 0x8f, 0xd4, 0x75, 0xd2, 0xff, 0x75,
+0xd1, 0x5a, 0x22, 0xe0, 0x25, 0x57, 0xff, 0xe4, 0x35, 0x56, 0xf5, 0xd7, 0x8f, 0xd6, 0x22, 0xc0,
+0xe0, 0xc0, 0x83, 0xc0, 0x82, 0xc0, 0xd0, 0x75, 0xd0, 0x10, 0x85, 0xa3, 0x18, 0xaf, 0xa6, 0x75,
+0xa3, 0x08, 0xef, 0x30, 0xe4, 0x0b, 0x90, 0x00, 0x39, 0x71, 0x53, 0x75, 0xd2, 0xff, 0x75, 0xd1,
+0x5a, 0xe5, 0x18, 0x30, 0xe3, 0x16, 0xe5, 0xa6, 0x20, 0xe0, 0x0c, 0x75, 0xd2, 0x01, 0x75, 0xd5,
+0x00, 0x75, 0xd4, 0x39, 0x75, 0xd1, 0x55, 0x75, 0xa3, 0x00, 0x80, 0x2d, 0xe5, 0x18, 0x30, 0xe0,
+0x28, 0x90, 0x00, 0x39, 0xe0, 0xff, 0x25, 0x57, 0xfd, 0xe4, 0x35, 0x56, 0xf5, 0xd5, 0x8d, 0xd4,
+0x75, 0xd2, 0xff, 0xef, 0xc3, 0x94, 0xc0, 0x40, 0x10, 0x75, 0xd1, 0x55, 0x90, 0x00, 0x39, 0xe0,
+0xb4, 0xfe, 0x06, 0x90, 0x00, 0xaf, 0x74, 0x01, 0xf0, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, 0x83, 0xd0,
+0xe0, 0x32, 0x75, 0x91, 0xcc, 0x75, 0x91, 0x00, 0x32, 0x12, 0x2f, 0xf7, 0x78, 0xa6, 0x76, 0x00,
+0x08, 0x76, 0x28, 0x90, 0x00, 0x38, 0x74, 0x04, 0xf0, 0x22, 0x8b, 0x22, 0x8a, 0x23, 0x89, 0x24,
+0x90, 0x01, 0x9a, 0xe0, 0x30, 0xe1, 0x76, 0xe4, 0xf5, 0x28, 0xf5, 0x29, 0x12, 0x2f, 0x67, 0x74,
+0x02, 0x93, 0xff, 0xe5, 0x29, 0xc3, 0x9f, 0x50, 0x36, 0xab, 0x25, 0xaa, 0x26, 0xa9, 0x27, 0x75,
+0xf0, 0x02, 0xe5, 0x29, 0xa4, 0xf5, 0x82, 0x85, 0xf0, 0x83, 0x12, 0x0a, 0x40, 0xfb, 0xaa, 0xf0,
+0x12, 0x2f, 0x67, 0x74, 0x07, 0x93, 0xfe, 0x74, 0x08, 0x93, 0xff, 0x7c, 0x00, 0x7d, 0x03, 0x12,
+0x09, 0x62, 0xd3, 0xeb, 0x9f, 0xea, 0x9e, 0x40, 0x02, 0x05, 0x28, 0x05, 0x29, 0x80, 0xbd, 0x12,
+0x2f, 0x67, 0x74, 0x02, 0x93, 0x75, 0xf0, 0x04, 0xa4, 0xff, 0xae, 0xf0, 0x7c, 0x00, 0x7d, 0x05,
+0x12, 0x09, 0x74, 0xe5, 0x28, 0xc3, 0x9f, 0x40, 0x14, 0x91, 0x95, 0x74, 0xff, 0x12, 0x09, 0x2e,
+0x91, 0x95, 0x90, 0x00, 0x01, 0x12, 0x09, 0x40, 0xe4, 0x90, 0x00, 0x38, 0xf0, 0x91, 0x95, 0x12,
+0x08, 0xe8, 0xb4, 0x04, 0x1f, 0xab, 0x25, 0xaa, 0x26, 0xa9, 0x27, 0x90, 0x00, 0x10, 0x12, 0x0a,
+0x40, 0xff, 0xae, 0xf0, 0x7c, 0x00, 0x7d, 0x06, 0x12, 0x09, 0x74, 0x90, 0x00, 0x10, 0xee, 0x8f,
+0xf0, 0x12, 0x0a, 0x78, 0x22, 0xab, 0x22, 0xaa, 0x23, 0xa9, 0x24, 0x22, 0xc0, 0xe0, 0xc0, 0xf0,
+0xc0, 0x83, 0xc0, 0x82, 0xc0, 0xd0, 0x75, 0xd0, 0x00, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x02, 0xc0,
+0x03, 0xc0, 0x04, 0xc0, 0x05, 0xc0, 0x06, 0xc0, 0x07, 0x75, 0x89, 0x80, 0x90, 0x00, 0x3a, 0xe0,
+0xc3, 0x94, 0x0a, 0x50, 0x06, 0xe0, 0x04, 0xf0, 0x75, 0x8a, 0x0a, 0x78, 0xa5, 0xe6, 0x60, 0x01,
+0x16, 0x12, 0x2b, 0x0b, 0xd0, 0x07, 0xd0, 0x06, 0xd0, 0x05, 0xd0, 0x04, 0xd0, 0x03, 0xd0, 0x02,
+0xd0, 0x01, 0xd0, 0x00, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, 0x83, 0xd0, 0xf0, 0xd0, 0xe0, 0x32, 0xef,
+0x24, 0xfc, 0x70, 0x05, 0x7e, 0x2c, 0x7f, 0x04, 0x22, 0xe4, 0xfe, 0xff, 0x22, 0xef, 0x75, 0xf0,
+0x64, 0xa4, 0xff, 0xae, 0xf0, 0x78, 0xa8, 0x08, 0x06, 0xe6, 0x18, 0x22, 0xaf, 0x0e, 0xae, 0x0d,
+0x12, 0x25, 0x91, 0xaf, 0x0e, 0xae, 0x0d, 0x02, 0x29, 0xa1, 0xe0, 0xfe, 0xa3, 0xe0, 0xff, 0xc3,
+0x94, 0x78, 0xee, 0x94, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0xb6, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xa8,
+0x43, 0x53, 0x57, 0x5f, 0x32, 0x32, 0x31, 0x31, 0x35, 0x32, 0x37, 0x5f, 0x43, 0x53, 0x54, 0x38,
+0x31, 0x36, 0x44, 0x5f, 0x43, 0x4f, 0x42, 0x5f, 0x5a, 0x54, 0x5f, 0x59, 0x41, 0x54, 0x5f, 0x4b,
+0x35, 0x5f, 0x47, 0x31, 0x5f, 0x4a, 0x4c, 0x5f, 0x35, 0x35, 0x30, 0x32, 0x38, 0x2e, 0x68, 0x65,
+0x78,
+]
+
+#endif /*CAPACITIVE_HYNITRON_CST816D_UPDATE_H__*/
--- /dev/null
+import utime
+import osTimer
+import lvgl as lv
+from ext import EventMesh
+from machine import Timer
+import voiceCall
+import osTimer
+from ext import constants
+from misc import Power
+import pm
+import ujson
+import ql_fs
+import audio
+from machine import Pin
+from ext.lcd import gpio_backlight,lcd,lcd_ctrl,tp_cst816
+# -----------------------------------------style create--------------------------------------
+style_screen = lv.style_t()
+style_screen.init()
+style_screen.set_radius(0)
+style_screen.set_bg_color(lv.color_make(0x00, 0x00, 0x00))
+style_screen.set_bg_opa(255)
+style_screen.set_border_width(0)
+style_screen.set_pad_left(0)
+style_screen.set_pad_right(0)
+style_screen.set_pad_top(0)
+style_screen.set_pad_bottom(0)
+
+style_font_youyuan_20 = lv.style_t()
+style_font_youyuan_20.init()
+style_font_youyuan_20.set_text_color(lv.color_make(0xff, 0xff, 0xff))
+style_font_youyuan_20.set_text_font_v2("font.bin",0)
+
+# 默认白色
+
+
+class LabelStyle(object):
+ def __init__(self):
+ self.style = lv.style_t()
+
+ def style_label(self, font):
+ self.style.init()
+ self.style.set_text_color(lv.color_make(0xff, 0xff, 0xff))
+ self.style.set_text_font(font)
+ return self.style
+
+# cont style
+class ContStyle(object):
+ def __init__(self):
+ self.style = lv.style_t()
+
+ def style_cont(self, radius, color1, color2, opa):
+ self.style.init()
+ self.style.set_radius(radius)
+ self.style.set_bg_color(color1)
+ self.style.set_bg_grad_color(color2)
+ self.style.set_bg_grad_dir(lv.GRAD_DIR.VER)
+ self.style.set_bg_opa(opa)
+ self.style.set_border_width(0)
+ self.style.set_pad_left(0)
+ self.style.set_pad_right(0)
+ self.style.set_pad_top(0)
+ self.style.set_pad_bottom(0)
+ return self.style
+
+style_img = lv.style_t()
+style_img.init()
+style_img.set_img_opa(255)
+
+style_line = lv.style_t()
+style_line.init()
+style_line.set_line_width(2)
+style_line.set_line_color(lv.color_make(0xff, 0xff, 0xff))
+
+
+style_list = lv.style_t()
+style_list.init()
+style_list.set_bg_color(lv.color_make(0x00, 0x00, 0x00))
+style_list.set_radius(0)
+style_list.set_bg_opa(255)
+style_list.set_border_width(0)
+style_list.set_pad_left(0)
+style_list.set_pad_right(0)
+style_list.set_pad_top(0)
+
+style_list_scro = lv.style_t()
+style_list_scro.init()
+style_list_scro.set_bg_opa(0)
+
+# create style style_btn
+style_btn = lv.style_t()
+style_btn.init()
+style_btn.set_bg_opa(0)
+style_btn.set_shadow_opa(0)
+style_btn.set_border_width(0)
+
+style_contact_btn = lv.style_t()
+style_contact_btn.init()
+style_contact_btn.set_bg_color(lv.color_make(0x1E, 0x26, 0xff))
+style_contact_btn.set_border_width(0)
+style_contact_btn.set_shadow_opa(0)
+
+style_contact_btn_pressed = lv.style_t()
+style_contact_btn_pressed.init()
+style_contact_btn_pressed.set_bg_color(lv.color_make(0x1E, 0x26, 0xff))
+style_contact_btn_pressed.set_bg_opa(100)
+style_contact_btn_pressed.set_border_width(0)
+style_contact_btn_pressed.set_shadow_opa(0)
+
+style_alipay_btn = lv.style_t()
+style_alipay_btn.init()
+style_alipay_btn.set_bg_color(lv.color_make(0xFF, 0xFF, 0xff))
+style_alipay_btn.set_bg_opa(20)
+style_alipay_btn.set_border_width(0)
+style_alipay_btn.set_shadow_opa(0)
+
+style_volume_btn = lv.style_t()
+style_volume_btn.init()
+style_volume_btn.set_shadow_opa(0)
+style_volume_btn.set_border_width(0)
+style_volume_btn.set_bg_color(lv.color_make(0x80, 0x80, 0x80))
+
+style_circle = lv.style_t()
+style_circle.init()
+style_circle.set_bg_color(lv.color_make(0xff, 0xff, 0xff))
+style_circle.set_radius(0x7FFF)
+
+style_bar = lv.style_t()
+style_bar.init()
+style_bar.set_radius(10)
+style_bar.set_bg_color(lv.color_make(0xA0, 0xA0, 0xA0))
+style_bar.set_bg_grad_color(lv.color_make(0xA0, 0xA0, 0xA0))
+style_bar.set_bg_grad_dir(lv.GRAD_DIR.VER)
+style_bar.set_bg_opa(60)
+style_bar.set_pad_left(0)
+style_bar.set_pad_right(0)
+style_bar.set_pad_top(0)
+style_bar.set_pad_bottom(0)
+
+style_bar_indic = lv.style_t()
+style_bar_indic.init()
+style_bar_indic.set_radius(10)
+style_bar_indic.set_bg_color(lv.color_make(0xff, 0x61, 0x3a))
+style_bar_indic.set_bg_grad_color(lv.color_make(0xff, 0x61, 0x3a))
+style_bar_indic.set_bg_grad_dir(lv.GRAD_DIR.VER)
+style_bar_indic.set_bg_opa(255)
+
+
+# -------------------------------------------phone screen----------------------------------------------------------
+phone_screen = lv.obj()
+phone = lv.obj(phone_screen)
+phone.center()
+phone.set_size(240, 320)
+phone.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+phone_label = lv.label(phone)
+phone_label.set_pos(0, 50)
+phone_label.set_size(240, 30)
+phone_label.set_text("")
+phone_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+phone_label.set_long_mode(lv.label.LONG.WRAP)
+phone_label.set_style_text_align(lv.TEXT_ALIGN.RIGHT, 0)
+
+phone_one = lv.img(phone)
+phone_one.set_src("E:/static/IMAGE_NUMBER_KEY1_ICON.png")
+phone_one.add_flag(lv.obj.FLAG.CLICKABLE)
+phone_one.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+phone_one.set_pos(3, 100)
+
+phone_two = lv.img(phone)
+phone_two.set_size(76, 40)
+phone_two.set_src("E:/static/IMAGE_NUMBER_KEY2_ICON.png")
+phone_two.add_flag(lv.obj.FLAG.CLICKABLE)
+phone_two.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+phone_two.set_pos(82, 100)
+
+phone_three = lv.img(phone)
+phone_three.set_size(76, 40)
+phone_three.set_src("E:/static/IMAGE_NUMBER_KEY3_ICON.png")
+phone_three.add_flag(lv.obj.FLAG.CLICKABLE)
+phone_three.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+phone_three.set_pos(161, 100)
+
+phone_four = lv.img(phone)
+phone_four.set_size(76, 40)
+phone_four.set_src("E:/static/IMAGE_NUMBER_KEY4_ICON.png")
+phone_four.add_flag(lv.obj.FLAG.CLICKABLE)
+phone_four.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+phone_four.set_pos(3, 142)
+
+phone_five = lv.img(phone)
+phone_five.set_size(76, 40)
+phone_five.set_src("E:/static/IMAGE_NUMBER_KEY5_ICON.png")
+phone_five.add_flag(lv.obj.FLAG.CLICKABLE)
+phone_five.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+phone_five.set_pos(82, 142)
+
+phone_six = lv.img(phone)
+phone_six.set_size(76, 40)
+phone_six.set_src("E:/static/IMAGE_NUMBER_KEY6_ICON.png")
+phone_six.add_flag(lv.obj.FLAG.CLICKABLE)
+phone_six.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+phone_six.set_pos(161, 142)
+
+phone_seven = lv.img(phone)
+phone_seven.set_size(76, 40)
+phone_seven.set_src("E:/static/IMAGE_NUMBER_KEY7_ICON.png")
+phone_seven.add_flag(lv.obj.FLAG.CLICKABLE)
+phone_seven.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+phone_seven.set_pos(3, 184)
+
+phone_eight = lv.img(phone)
+phone_eight.set_size(76, 40)
+phone_eight.set_src("E:/static/IMAGE_NUMBER_KEY8_ICON.png")
+phone_eight.add_flag(lv.obj.FLAG.CLICKABLE)
+phone_eight.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+phone_eight.set_pos(82, 184)
+
+phone_nine = lv.img(phone)
+phone_nine.set_size(76, 40)
+phone_nine.set_src("E:/static/IMAGE_NUMBER_KEY9_ICON.png")
+phone_nine.add_flag(lv.obj.FLAG.CLICKABLE)
+phone_nine.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+phone_nine.set_pos(161, 184)
+
+phone_start = lv.img(phone)
+phone_start.set_size(76, 40)
+phone_start.set_src("E:/static/IMAGE_NUMBER_KEYSTAR_ICON.png")
+phone_start.add_flag(lv.obj.FLAG.CLICKABLE)
+phone_start.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+phone_start.set_pos(3, 226)
+
+phone_zero = lv.img(phone)
+phone_zero.set_size(76, 40)
+phone_zero.set_src("E:/static/IMAGE_NUMBER_KEY0_ICON.png")
+phone_zero.add_flag(lv.obj.FLAG.CLICKABLE)
+phone_zero.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+phone_zero.set_pos(82, 226)
+
+phone_hash = lv.img(phone)
+phone_hash.set_size(76, 40)
+phone_hash.set_src("E:/static/IMAGE_NUMBER_KEYSTAR_ICON.png")
+phone_hash.add_flag(lv.obj.FLAG.CLICKABLE)
+phone_hash.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+phone_hash.set_pos(161, 226)
+
+phone_call = lv.img(phone)
+phone_call.set_size(76, 40)
+phone_call.set_src("E:/static/IMAGE_BUTTON_DIAL.png")
+phone_call.add_flag(lv.obj.FLAG.CLICKABLE)
+phone_call.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+phone_call.set_pos(3, 268)
+
+phone_contact = lv.img(phone)
+phone_contact.set_size(76, 40)
+phone_contact.set_src("E:/static/IMAGE_BUTTON_DIAL_CONTACT.png")
+phone_contact.add_flag(lv.obj.FLAG.CLICKABLE)
+phone_contact.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+phone_contact.set_pos(84, 268)
+
+phone_delete = lv.img(phone)
+phone_delete.set_size(76, 40)
+phone_delete.set_src("E:/static/IMAGE_BUTTON_DELKEY.png")
+phone_delete.add_flag(lv.obj.FLAG.CLICKABLE)
+phone_delete.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+phone_delete.set_pos(161, 268)
+
+# -------------------------------------------heartrate screen----------------------------------------------------------
+heartrate_screen = lv.obj()
+heartrate = lv.obj(heartrate_screen)
+heartrate.center()
+heartrate.set_size(240, 320)
+heartrate.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+heartrate_label = lv.label(heartrate)
+heartrate_label.set_pos(0, 10)
+heartrate_label.set_size(240, 40)
+heartrate_label.set_text("心率")
+heartrate_label.set_long_mode(lv.label.LONG.WRAP)
+heartrate_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+heartrate_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+heartrate_done_img = lv.img(heartrate)
+heartrate_done_img.set_pos(0, 50)
+heartrate_done_img.set_size(240, 96)
+heartrate_done_img.set_src("E:/static/IMAGE_HEART_ONLY_TEST_DONE.jpg")
+
+heartrate_start_label = lv.label(heartrate)
+heartrate_start_label.set_size(240,40)
+heartrate_start_label.set_pos(0,160)
+heartrate_start_label.set_text(" ")
+heartrate_start_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+heartrate_start_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+heartrate_start_label.set_style_text_color(lv.color_make(0xff, 0x6f, 0x3a), lv.STATE.DEFAULT)
+
+
+heartrate_bpm_label = lv.label(heartrate)
+heartrate_bpm_label.set_size(240, 40)
+heartrate_bpm_label.set_pos(0, 210)
+heartrate_bpm_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+
+heartrate_bpm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+heartrate_bpm_label.set_style_text_color(lv.color_make(0xff, 0x6f, 0x3f), lv.STATE.DEFAULT)
+
+
+heartrate_mmhg_label = lv.label(heartrate)
+heartrate_mmhg_label.set_size(240, 40)
+heartrate_mmhg_label.set_pos(0, 240)
+heartrate_mmhg_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+
+heartrate_mmhg_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+heartrate_mmhg_label.set_style_text_color(lv.color_make(0xff, 0x6f, 0x3f), lv.STATE.DEFAULT)
+
+
+
+# -------------------------------------------toolbox screen----------------------------------------------------------
+toolbox_screen = lv.obj()
+toolbox = lv.obj(toolbox_screen)
+toolbox.center()
+toolbox.set_size(240, 320)
+toolbox.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+toolbox.set_scrollbar_mode(0)
+
+toolbox_title = lv.label(toolbox)
+toolbox_title.set_pos(0, 10)
+toolbox_title.set_size(240, 40)
+toolbox_title.set_text("工具箱")
+toolbox_title.set_long_mode(lv.label.LONG.WRAP)
+toolbox_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+toolbox_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+toolbox_cont = lv.obj(toolbox)
+toolbox_cont.set_pos(0, 50)
+toolbox_cont.set_size(240, 270)
+toolbox_cont_style = ContStyle()
+toolbox_cont.add_style(
+ toolbox_cont_style.style_cont(0, lv.color_make(0x00, 0x00, 0x00), lv.color_make(0x00, 0x00, 0x00), 255),
+ lv.PART.MAIN | lv.STATE.DEFAULT)
+
+toolbox_step = lv.btn(toolbox_cont)
+toolbox_step.set_pos(0, 0)
+toolbox_step.set_size(240, 54)
+toolbox_step_label = lv.label(toolbox_step)
+toolbox_step_label.set_text("计步")
+toolbox_step.set_style_pad_all(0, lv.STATE.DEFAULT)
+toolbox_step_label.align(lv.ALIGN.LEFT_MID, 70, 0)
+toolbox_step_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+toolbox_step.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+toolbox_step_img = lv.img(toolbox_cont)
+toolbox_step_img.set_pos(10, 0)
+toolbox_step_img.set_size(47, 47)
+toolbox_step_img.add_flag(lv.obj.FLAG.CLICKABLE)
+toolbox_step_img.set_src("E:/static/IMAGE_SECMENU_STEP.png")
+toolbox_step_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+toolbox_weather = lv.btn(toolbox_cont)
+toolbox_weather.set_pos(0, 60)
+toolbox_weather.set_size(240, 54)
+toolbox_weather_label = lv.label(toolbox_weather)
+toolbox_weather_label.set_text("天气")
+toolbox_weather.set_style_pad_all(0, lv.STATE.DEFAULT)
+toolbox_weather_label.align(lv.ALIGN.LEFT_MID, 70, 0)
+toolbox_weather_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+toolbox_weather.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+toolbox_weather_img = lv.img(toolbox_cont)
+toolbox_weather_img.set_pos(10, 60)
+toolbox_weather_img.set_size(47, 47)
+toolbox_weather_img.add_flag(lv.obj.FLAG.CLICKABLE)
+toolbox_weather_img.set_src("E:/static/IMAGE_SECMENU_WEATHER.png")
+toolbox_weather_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+toolbox_alarm = lv.btn(toolbox_cont)
+toolbox_alarm.set_pos(0, 120)
+toolbox_alarm.set_size(240, 54)
+toolbox_alarm_label = lv.label(toolbox_alarm)
+toolbox_alarm_label.set_text("闹钟")
+toolbox_alarm.set_style_pad_all(0, lv.STATE.DEFAULT)
+toolbox_alarm_label.align(lv.ALIGN.LEFT_MID, 70, 0)
+toolbox_alarm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+toolbox_alarm.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+toolbox_alarm_img = lv.img(toolbox_cont)
+toolbox_alarm_img.set_pos(10, 120)
+toolbox_alarm_img.set_size(47, 47)
+toolbox_alarm_img.add_flag(lv.obj.FLAG.CLICKABLE)
+toolbox_alarm_img.set_src("E:/static/IMAGE_SECMENU_ALARM.png")
+toolbox_alarm_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+toolbox_countdown = lv.btn(toolbox_cont)
+toolbox_countdown.set_pos(0, 180)
+toolbox_countdown.set_size(240, 54)
+toolbox_countdown_label = lv.label(toolbox_countdown)
+toolbox_countdown_label.set_text("倒计时")
+toolbox_countdown.set_style_pad_all(0, lv.STATE.DEFAULT)
+toolbox_countdown_label.align(lv.ALIGN.LEFT_MID, 70, 0)
+toolbox_countdown_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+toolbox_countdown.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+toolbox_countdown_img = lv.img(toolbox_cont)
+toolbox_countdown_img.set_pos(10, 180)
+toolbox_countdown_img.set_size(47, 47)
+toolbox_countdown_img.add_flag(lv.obj.FLAG.CLICKABLE)
+toolbox_countdown_img.set_src("E:/static/IMAGE_SECMENU_COUNTDOWN.png")
+toolbox_countdown_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+toolbox_stopwatch = lv.btn(toolbox_cont)
+toolbox_stopwatch.set_pos(0, 240)
+toolbox_stopwatch.set_size(240, 54)
+toolbox_stopwatch_label = lv.label(toolbox_stopwatch)
+toolbox_stopwatch_label.set_text("秒表")
+toolbox_stopwatch.set_style_pad_all(0, lv.STATE.DEFAULT)
+toolbox_stopwatch_label.align(lv.ALIGN.LEFT_MID, 70, 0)
+toolbox_stopwatch_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+toolbox_stopwatch.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+toolbox_stopwatch_img = lv.img(toolbox_cont)
+toolbox_stopwatch_img.set_pos(10, 240)
+toolbox_stopwatch_img.set_size(47, 47)
+toolbox_stopwatch_img.add_flag(lv.obj.FLAG.CLICKABLE)
+toolbox_stopwatch_img.set_src("E:/static/IMAGE_SECMENU_STOPWATCH.png")
+toolbox_stopwatch_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# -------------------------------------------setting screen----------------------------------------------------------
+setting_screen = lv.obj()
+setting = lv.obj(setting_screen)
+setting.center()
+setting.set_size(240, 320)
+setting.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+setting_title = lv.label(setting)
+setting_title.set_pos(0, 10)
+setting_title.set_size(240, 40)
+setting_title.set_text("设置")
+setting_title.set_long_mode(lv.label.LONG.WRAP)
+setting_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+setting_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+setting_cont = lv.obj(setting)
+setting_cont.set_pos(0, 50)
+setting_cont.set_size(240, 270)
+setting_cont_style = ContStyle()
+setting_cont.add_style(
+ setting_cont_style.style_cont(0, lv.color_make(0x00, 0x00, 0x00), lv.color_make(0x00, 0x00, 0x00), 255),
+ lv.PART.MAIN | lv.STATE.DEFAULT)
+
+setting_language = lv.btn(setting_cont)
+setting_language.set_pos(0, 0)
+setting_language.set_size(240, 54)
+setting_language_label = lv.label(setting_language)
+setting_language_label.set_text("语言设置")
+setting_language.set_style_pad_all(0, lv.STATE.DEFAULT)
+setting_language_label.align(lv.ALIGN.LEFT_MID, 70, 0)
+setting_language_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+setting_language_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_language.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_language_img = lv.img(setting_cont)
+setting_language_img.set_pos(10, 0)
+setting_language_img.set_size(47, 47)
+setting_language_img.add_flag(lv.obj.FLAG.CLICKABLE)
+setting_language_img.set_src("E:/static/menu_language.png")
+setting_language_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+setting_dialswitch = lv.btn(setting_cont)
+setting_dialswitch.set_pos(0, 60)
+setting_dialswitch.set_size(240, 54)
+setting_dialswitch_label = lv.label(setting_dialswitch)
+setting_dialswitch_label.set_text("表盘切换")
+setting_dialswitch.set_style_pad_all(0, lv.STATE.DEFAULT)
+setting_dialswitch_label.align(lv.ALIGN.LEFT_MID, 70, 0)
+setting_dialswitch_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+setting_dialswitch_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_dialswitch.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_dialswitch_img = lv.img(setting_cont)
+setting_dialswitch_img.set_pos(10, 60)
+setting_dialswitch_img.set_size(47, 47)
+setting_dialswitch_img.add_flag(lv.obj.FLAG.CLICKABLE)
+setting_dialswitch_img.set_src("E:/static/menu_watch_switch.png")
+setting_dialswitch_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+setting_themeswitch = lv.btn(setting_cont)
+setting_themeswitch.set_pos(0, 120)
+setting_themeswitch.set_size(240, 54)
+setting_themeswitch_label = lv.label(setting_themeswitch)
+setting_themeswitch_label.set_text("主题切换")
+setting_themeswitch.set_style_pad_all(0, lv.STATE.DEFAULT)
+setting_themeswitch_label.align(lv.ALIGN.LEFT_MID, 70, 0)
+setting_themeswitch_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+setting_themeswitch_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_themeswitch.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_themeswitch_img = lv.img(setting_cont)
+setting_themeswitch_img.set_pos(10, 120)
+setting_themeswitch_img.set_size(47, 47)
+setting_themeswitch_img.add_flag(lv.obj.FLAG.CLICKABLE)
+setting_themeswitch_img.set_src("E:/static/menu_theme_switch.png")
+setting_themeswitch_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+setting_imei = lv.btn(setting_cont)
+setting_imei.set_pos(0, 180)
+setting_imei.set_size(240, 54)
+setting_imei_label = lv.label(setting_imei)
+setting_imei_label.set_text("设备IMEI号")
+setting_imei.set_style_pad_all(0, lv.STATE.DEFAULT)
+setting_imei_label.align(lv.ALIGN.LEFT_MID, 70, 0)
+setting_imei_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+setting_imei_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_imei.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_imei_img = lv.img(setting_cont)
+setting_imei_img.set_pos(10, 180)
+setting_imei_img.set_size(47, 47)
+setting_imei_img.add_flag(lv.obj.FLAG.CLICKABLE)
+setting_imei_img.set_src("E:/static/menu_imei_qrcode.png")
+setting_imei_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+setting_app = lv.btn(setting_cont)
+setting_app.set_pos(0, 240)
+setting_app.set_size(240, 54)
+setting_app_label = lv.label(setting_app)
+setting_app_label.set_text("手机安装APP")
+setting_app.set_style_pad_all(0, lv.STATE.DEFAULT)
+setting_app_label.align(lv.ALIGN.LEFT_MID, 70, 0)
+setting_app_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+setting_app_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_app.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_app_img = lv.img(setting_cont)
+setting_app_img.set_pos(10, 240)
+setting_app_img.set_size(47, 47)
+setting_app_img.add_flag(lv.obj.FLAG.CLICKABLE)
+setting_app_img.set_src("E:/static/menu_app_qrcode.png")
+setting_app_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+setting_bright = lv.btn(setting_cont)
+setting_bright.set_pos(0, 300)
+setting_bright.set_size(240, 54)
+setting_bright_label = lv.label(setting_bright)
+setting_bright_label.set_text("屏幕调节")
+setting_bright.set_style_pad_all(0, lv.STATE.DEFAULT)
+setting_bright_label.align(lv.ALIGN.LEFT_MID, 70, 0)
+setting_bright_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+setting_bright_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_bright.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_bright_img = lv.img(setting_cont)
+setting_bright_img.set_pos(10, 300)
+setting_bright_img.set_size(47, 47)
+setting_bright_img.add_flag(lv.obj.FLAG.CLICKABLE)
+setting_bright_img.set_src("E:/static/menu_bright.png")
+setting_bright_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+setting_volume = lv.btn(setting_cont)
+setting_volume.set_pos(0, 360)
+setting_volume.set_size(240, 54)
+setting_volume_label = lv.label(setting_volume)
+setting_volume_label.set_text("铃声")
+setting_volume.set_style_pad_all(0, lv.STATE.DEFAULT)
+setting_volume_label.align(lv.ALIGN.LEFT_MID, 70, 0)
+setting_volume_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+setting_volume_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_volume.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_volume_img = lv.img(setting_cont)
+setting_volume_img.set_pos(10, 360)
+setting_volume_img.set_size(47, 47)
+setting_volume_img.add_flag(lv.obj.FLAG.CLICKABLE)
+setting_volume_img.set_src("E:/static/menu_volume.png")
+setting_volume_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+setting_restore = lv.btn(setting_cont)
+setting_restore.set_pos(0, 420)
+setting_restore.set_size(240, 54)
+setting_restore_label = lv.label(setting_restore)
+setting_restore_label.set_text("回复出厂设置")
+setting_restore.set_style_pad_all(0, lv.STATE.DEFAULT)
+setting_restore_label.align(lv.ALIGN.LEFT_MID, 70, 0)
+setting_restore_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+setting_restore_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_restore.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_restore_img = lv.img(setting_cont)
+setting_restore_img.set_pos(10, 420)
+setting_restore_img.set_size(47, 47)
+setting_restore_img.add_flag(lv.obj.FLAG.CLICKABLE)
+setting_restore_img.set_src("E:/static/menu_restore.png")
+setting_restore_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+setting_poweroff = lv.btn(setting_cont)
+setting_poweroff.set_pos(0, 480)
+setting_poweroff.set_size(240, 54)
+setting_poweroff_label = lv.label(setting_poweroff)
+setting_poweroff_label.set_text("关机")
+setting_poweroff.set_style_pad_all(0, lv.STATE.DEFAULT)
+setting_poweroff_label.align(lv.ALIGN.LEFT_MID, 70, 0)
+setting_poweroff_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+setting_poweroff_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_poweroff.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_poweroff_img = lv.img(setting_cont)
+setting_poweroff_img.set_pos(10, 480)
+setting_poweroff_img.set_size(47, 47)
+setting_poweroff_img.add_flag(lv.obj.FLAG.CLICKABLE)
+setting_poweroff_img.set_src("E:/static/menu_poweroff.png")
+setting_poweroff_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+setting_version = lv.btn(setting_cont)
+setting_version.set_pos(0, 540)
+setting_version.set_size(240, 54)
+setting_version_label = lv.label(setting_version)
+setting_version_label.set_text("关于设备")
+setting_version.set_style_pad_all(0, lv.STATE.DEFAULT)
+setting_version_label.align(lv.ALIGN.LEFT_MID, 70, 0)
+setting_version_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+setting_version_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_version.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_version_img = lv.img(setting_cont)
+setting_version_img.set_pos(10, 540)
+setting_version_img.set_size(47, 47)
+setting_version_img.add_flag(lv.obj.FLAG.CLICKABLE)
+setting_version_img.set_src("E:/static/menu_version.png")
+setting_version_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+setting_update = lv.btn(setting_cont)
+setting_update.set_pos(0, 600)
+setting_update.set_size(240, 54)
+setting_update_label = lv.label(setting_update)
+setting_update_label.set_text("系统升级")
+setting_update.set_style_pad_all(0, lv.STATE.DEFAULT)
+setting_update_label.align(lv.ALIGN.LEFT_MID, 70, 0)
+setting_update_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+setting_update_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_update.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+setting_update_img = lv.img(setting_cont)
+setting_update_img.set_pos(10, 600)
+setting_update_img.set_size(47, 47)
+setting_update_img.add_flag(lv.obj.FLAG.CLICKABLE)
+setting_update_img.set_src("E:/static/menu_upgrade.png")
+setting_update_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# -------------------------------------------step screen----------------------------------------------------------
+step_screen = lv.obj()
+step = lv.obj(step_screen)
+step.center()
+step.set_size(240, 320)
+step.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+step_label = lv.label(step)
+step_label.set_pos(10, 30)
+step_label.set_size(100, 50)
+step_label.set_text("今日步数")
+step_label.set_long_mode(lv.label.LONG.WRAP)
+step_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+step_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+step_label_01 = lv.label(step)
+step_label_01.set_pos(50, 100)
+step_label_01.set_size(100, 50)
+step_label_01.set_text("666 步")
+step_label_01.set_long_mode(lv.label.LONG.WRAP)
+step_label_01.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+step_label_01.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+step_img = lv.img(step)
+step_img.set_pos(100, 150)
+step_img.set_size(40, 65)
+step_img.set_src("E:/static/IMAGE_STEP.png")
+step_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# -------------------------------------------weather screen----------------------------------------------------------
+weather_screen = lv.obj()
+weather = lv.obj(weather_screen)
+weather.center()
+weather.set_size(240, 320)
+weather.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+weather_img = lv.img(weather)
+weather_img.set_pos(10, 10)
+weather_img.set_size(135, 120)
+weather_img.set_src("E:/static/cloudy.png")
+weather_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+weather_tem_label = lv.label(weather)
+weather_tem_label.set_pos(140, 40)
+weather_tem_label.set_size(50, 50)
+weather_tem_label.set_text("19°C")
+weather_tem_label.set_long_mode(lv.label.LONG.WRAP)
+weather_tem_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+weather_tem_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+weather_detail_label = lv.label(weather)
+weather_detail_label.set_pos(140, 80)
+weather_detail_label.set_size(50, 50)
+weather_detail_label.set_text("01/30")
+weather_detail_label.set_long_mode(lv.label.LONG.WRAP)
+weather_detail_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+weather_detail_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+weather_location_label = lv.label(weather)
+weather_location_label.set_pos(100, 200)
+weather_location_label.set_size(80, 50)
+weather_location_label.set_text("深圳市")
+weather_location_label.set_long_mode(lv.label.LONG.WRAP)
+weather_location_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+weather_location_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# -------------------------------------------alarm screen----------------------------------------------------------
+alarm_screen = lv.obj()
+alarm = lv.obj(alarm_screen)
+alarm.center()
+alarm.set_size(240, 320)
+alarm.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# alarm_nodata_img = lv.img(alarm)
+# alarm_nodata_img.center()
+# alarm_nodata_img.set_size(113, 152)
+# alarm_nodata_img.set_src("E:/static/IMAGE_IDLE_SCREEN_ALARM_ICON_NEW.png")
+# alarm_nodata_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+alarm_title = lv.label(alarm)
+alarm_title.set_pos(0, 20)
+alarm_title.set_size(240, 20)
+alarm_title.set_text("闹钟")
+alarm_title.set_long_mode(lv.label.LONG.WRAP)
+alarm_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+alarm_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# alarm_list = lv.list(alarm)
+# alarm_list.set_pos(0, 50)
+# alarm_list.set_size(240, 250)
+# alarm_list.add_style(style_list, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# -------------------------------------------countdown screen----------------------------------------------------------
+countdown_screen = lv.obj()
+countdown = lv.obj(countdown_screen)
+countdown.center()
+countdown.set_size(240, 320)
+countdown.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+countdown_title = lv.label(countdown)
+countdown_title.set_pos(0, 20)
+countdown_title.set_size(240, 20)
+countdown_title.set_text("倒计时")
+countdown_title.set_long_mode(lv.label.LONG.WRAP)
+countdown_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+countdown_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+countdown_hour = lv.label(countdown)
+countdown_hour.set_pos(30, 140)
+countdown_hour.set_size(30, 30)
+countdown_hour.set_text(" 00")
+countdown_hour.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+countdown_hour.set_long_mode(lv.label.LONG.WRAP)
+countdown_hour.set_style_text_align(lv.TEXT_ALIGN.RIGHT, 0)
+
+countdown_min = lv.label(countdown)
+countdown_min.set_pos(80, 140)
+countdown_min.set_size(30, 30)
+countdown_min.set_text("00 ")
+countdown_min.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+countdown_min.set_long_mode(lv.label.LONG.WRAP)
+countdown_min.set_style_text_align(lv.TEXT_ALIGN.RIGHT, 0)
+
+countdown_sec = lv.label(countdown)
+countdown_sec.set_pos(160, 140)
+countdown_sec.set_size(30, 30)
+countdown_sec.set_text("00 ")
+countdown_sec.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+countdown_sec.set_long_mode(lv.label.LONG.WRAP)
+countdown_sec.set_style_text_align(lv.TEXT_ALIGN.RIGHT, 0)
+
+countdown_hour_up = lv.img(countdown)
+countdown_hour_up.set_size(34, 30)
+countdown_hour_up.set_pos(23, 100)
+countdown_hour_up.set_src("E:/static/time_up.png")
+
+
+
+countdown_hour_up.add_flag(lv.obj.FLAG.CLICKABLE)
+countdown_hour_up.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+countdown_hour_down = lv.img(countdown)
+countdown_hour_down.set_size(34, 30)
+countdown_hour_down.set_pos(23, 180)
+countdown_hour_down.set_src("E:/static/time_down.png")
+
+
+
+countdown_hour_down.add_flag(lv.obj.FLAG.CLICKABLE)
+countdown_hour_down.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+countdown_min_up = lv.img(countdown)
+countdown_min_up.set_size(34, 30)
+countdown_min_up.set_pos(80, 100)
+countdown_min_up.set_src("E:/static/time_up.png")
+
+
+
+countdown_min_up.add_flag(lv.obj.FLAG.CLICKABLE)
+countdown_min_up.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+countdown_min_down = lv.img(countdown)
+countdown_min_down.set_size(34, 30)
+countdown_min_down.set_pos(80, 180)
+countdown_min_down.set_src("E:/static/time_down.png")
+
+
+
+countdown_min_down.add_flag(lv.obj.FLAG.CLICKABLE)
+countdown_min_down.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+countdown_sec_up = lv.img(countdown)
+countdown_sec_up.set_size(34, 30)
+countdown_sec_up.set_pos(160, 100)
+countdown_sec_up.set_src("E:/static/time_up.png")
+
+
+
+countdown_sec_up.add_flag(lv.obj.FLAG.CLICKABLE)
+countdown_sec_up.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+countdown_sec_down = lv.img(countdown)
+countdown_sec_down.set_size(34, 30)
+countdown_sec_down.set_pos(160, 180)
+countdown_sec_down.set_src("E:/static/time_down.png")
+
+
+
+countdown_sec_down.add_flag(lv.obj.FLAG.CLICKABLE)
+countdown_sec_down.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+countdown_reset_imgbtn = lv.img(countdown)
+countdown_reset_imgbtn.set_size(99, 36)
+countdown_reset_imgbtn.set_src("E:/static/stopwatch_reset.png")
+
+
+
+countdown_reset_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
+countdown_reset_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+countdown_reset_imgbtn.set_pos(10, 260)
+
+countdown_start_imgbtn = lv.img(countdown)
+countdown_start_imgbtn.set_size(99, 36)
+countdown_start_imgbtn.set_src("E:/static/stopwatch_play.png")
+
+
+
+countdown_start_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
+countdown_start_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+countdown_start_imgbtn.set_pos(120, 260)
+
+countdown_stop_imgbtn = lv.img(countdown)
+countdown_stop_imgbtn.set_size(99, 36)
+countdown_stop_imgbtn.set_src("E:/static/stopwatch_stop.png")
+
+
+
+countdown_stop_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
+countdown_stop_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+countdown_stop_imgbtn.set_pos(120, 260)
+countdown_stop_imgbtn.add_flag(lv.obj.FLAG.HIDDEN)
+
+
+# -------------------------------------------stopwatch screen----------------------------------------------------------
+stopwatch_screen = lv.obj()
+stopwatch = lv.obj(stopwatch_screen)
+stopwatch.center()
+stopwatch.set_size(240, 320)
+stopwatch.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+stopwatch_title = lv.label(stopwatch)
+stopwatch_title.set_pos(0, 20)
+stopwatch_title.set_size(240, 20)
+stopwatch_title.set_text("秒表")
+stopwatch_title.set_long_mode(lv.label.LONG.WRAP)
+stopwatch_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+stopwatch_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+stopwatch_label_min = lv.label(stopwatch)
+stopwatch_label_min.set_pos(20, 100)
+stopwatch_label_min.set_size(40, 20)
+stopwatch_label_min.set_long_mode(lv.label.LONG.WRAP)
+stopwatch_label_min.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+stopwatch_label_min.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+#stopwatch_label_min.add_style(style_font_tianbo_12, lv.PART.MAIN | lv.STATE.DEFAULT)
+stopwatch_label_min.set_text("00")
+
+stopwatch_label_sec = lv.label(stopwatch)
+stopwatch_label_sec.set_pos(80, 100)
+stopwatch_label_sec.set_size(40, 20)
+stopwatch_label_sec.set_long_mode(lv.label.LONG.WRAP)
+stopwatch_label_sec.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+stopwatch_label_sec.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+#stopwatch_label_sec.add_style(style_font_tianbo_12, lv.PART.MAIN | lv.STATE.DEFAULT)
+stopwatch_label_sec.set_text("00")
+
+stopwatch_label_ms = lv.label(stopwatch)
+stopwatch_label_ms.set_pos(140, 100)
+stopwatch_label_ms.set_size(40, 20)
+stopwatch_label_ms.set_text("00")
+stopwatch_label_ms.set_long_mode(lv.label.LONG.WRAP)
+stopwatch_label_ms.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+stopwatch_label_ms.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+#stopwatch_label_ms.add_style(style_font_tianbo_12, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+stopwatch_reset_imgbtn = lv.img(stopwatch)
+stopwatch_reset_imgbtn.set_size(99, 36)
+stopwatch_reset_imgbtn.set_src("E:/static/stopwatch_reset.png")
+stopwatch_reset_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
+stopwatch_reset_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+stopwatch_reset_imgbtn.set_pos(10, 210)
+
+stopwatch_start_imgbtn = lv.img(stopwatch)
+stopwatch_start_imgbtn.set_size(99, 36)
+
+stopwatch_start_imgbtn.set_src("E:/static/stopwatch_play.png")
+stopwatch_start_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
+stopwatch_start_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+stopwatch_start_imgbtn.set_pos(115, 210)
+
+stopwatch_stop_imgbtn = lv.img(stopwatch)
+stopwatch_stop_imgbtn.set_size(99, 36)
+stopwatch_stop_imgbtn.set_src("E:/static/stopwatch_stop.png")
+stopwatch_stop_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
+stopwatch_stop_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+stopwatch_stop_imgbtn.set_pos(115, 210)
+stopwatch_stop_imgbtn.add_flag(lv.obj.FLAG.HIDDEN)
+
+# -------------------------------------------temperature screen----------------------------------------------------------
+temperature_screen = lv.obj()
+temperature = lv.obj(temperature_screen)
+temperature.center()
+temperature.set_size(240, 320)
+temperature.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+temperature_bg_img = lv.img(temperature)
+temperature_bg_img.set_pos(0, 0)
+temperature_bg_img.set_size(71, 170)
+temperature_bg_img.set_src("E:/static/temp_bg.png")
+temperature_bg_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+temperature_body_label = lv.label(temperature)
+temperature_body_label.set_pos(80, 40)
+temperature_body_label.set_size(100, 20)
+temperature_body_label.set_text("当前体温")
+temperature_body_label.set_long_mode(lv.label.LONG.WRAP)
+temperature_body_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+temperature_body_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+temperature_degree_img = lv.img(temperature)
+temperature_degree_img.set_pos(150, 70)
+temperature_degree_img.set_size(22, 22)
+temperature_degree_img.set_src("E:/static/degree.png")
+temperature_degree_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+temperature_value_label = lv.label(temperature)
+temperature_value_label.set_pos(100,70)
+temperature_value_label.set_size(50, 20)
+temperature_value_label.set_text("36.1")
+temperature_value_label.set_long_mode(lv.label.LONG.WRAP)
+temperature_value_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+temperature_value_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+temperature_wrist_label = lv.label(temperature)
+temperature_wrist_label.set_pos(80,120)
+temperature_wrist_label.set_size(100, 20)
+temperature_wrist_label.set_text("当前腕温")
+temperature_wrist_label.set_long_mode(lv.label.LONG.WRAP)
+temperature_wrist_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+temperature_wrist_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+temperature_wrist_degree_img = lv.img(temperature)
+temperature_wrist_degree_img.set_pos(150, 150)
+temperature_wrist_degree_img.set_size(22, 22)
+temperature_wrist_degree_img.set_src("E:/static/degree.png")
+temperature_wrist_degree_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+temperature_wrist_value_label = lv.label(temperature)
+temperature_wrist_value_label.set_pos(100,150)
+temperature_wrist_value_label.set_size(50, 20)
+temperature_wrist_value_label.set_text("24.9")
+temperature_wrist_value_label.set_long_mode(lv.label.LONG.WRAP)
+temperature_wrist_value_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+temperature_wrist_value_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+
+# temperature_status_label = lv.label(temperature)
+# temperature_status_label.set_pos(80,160)
+# temperature_status_label.set_size(100, 20)
+# temperature_status_label.set_text("对对对对")
+# temperature_status_label.set_long_mode(lv.label.LONG.WRAP)
+# temperature_status_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+# temperature_status_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# temperature_notice_label = lv.label(temperature)
+# temperature_notice_label.set_pos(50,200)
+# temperature_notice_label.set_size(100, 20)
+# temperature_notice_label.set_text("对对对对对对")
+# temperature_notice_label.set_long_mode(lv.label.LONG.WRAP)
+# temperature_notice_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+# temperature_notice_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# -------------------------------------------spo2 screen----------------------------------------------------------
+spo2_screen = lv.obj()
+spo2 = lv.obj(spo2_screen)
+spo2.center()
+spo2.set_size(240, 320)
+spo2.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+spo2_label = lv.label(spo2)
+spo2_label.set_pos(0, 10)
+spo2_label.set_size(240, 40)
+spo2_label.set_text("血氧")
+spo2_label.set_long_mode(lv.label.LONG.WRAP)
+spo2_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+spo2_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+spo2_done_img = lv.img(spo2)
+spo2_done_img.set_pos(0, 50)
+spo2_done_img.set_size(240, 96)
+spo2_done_img.set_src("E:/static/IMAGE_SPO2_ONLY_TEST_DONE.jpg")
+
+# spo2_finish_gif = lv.gif(spo2)
+# spo2_finish_gif.set_pos(0, 40)
+# spo2_finish_gif.set_size(240, 120)
+# #spo2_finish_img.add_flag(lv.obj.FLAG.CLICKABLE)
+# spo2_finish_gif.set_src("E:/static/IMAGE_SPO2_ONLY_ANI.gif")
+# #spo2_finish_gif.set_opa(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+spo2_label = lv.label(spo2)
+spo2_label.set_size(240,30)
+spo2_label.set_pos(0,160)
+spo2_label.set_text(" ")
+spo2_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+spo2_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+spo2_label_1 = lv.label(spo2)
+spo2_label_1.set_size(240,40)
+spo2_label_1.set_pos(0,200)
+spo2_label_1.set_text(" ")
+spo2_label_1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+spo2_label_1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+line_points = [{"x":0,"y":245},{"x":240,"y":245}]
+spo2_line = lv.line(spo2)
+spo2_line.set_points(line_points,2)
+spo2_line.add_style(style_line,0)
+
+spo2_last_time = lv.label(spo2)
+spo2_last_time.set_size(240, 15)
+spo2_last_time.set_pos(0, 250)
+spo2_last_time.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+spo2_last_time.set_text("2023.01.29 19:33")
+spo2_last_time.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+
+spo2_last_value = lv.label(spo2)
+spo2_last_value.set_size(240, 15)
+spo2_last_value.set_pos(0, 280)
+spo2_last_value.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+spo2_last_value.set_text("96%")
+spo2_last_value.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+
+
+
+# -------------------------------------------wechat screen----------------------------------------------------------
+wechat_screen = lv.obj()
+wechat = lv.obj(wechat_screen)
+wechat.center()
+wechat.set_size(240, 320)
+wechat.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+wechat_press_btn = lv.btn(wechat)
+wechat_press_btn.set_pos(0, 260)
+wechat_press_btn.set_size(220, 56)
+wechat_press_btn.add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+wechat_press_btn.add_style(style_contact_btn_pressed, lv.PART.MAIN | lv.STATE.PRESSED)
+wechat_press_btn.set_style_radius(30,0)
+
+wechat_press_label = lv.label(wechat_press_btn)
+wechat_press_label.set_text("请按住说话")
+wechat_press_label.align(lv.ALIGN.CENTER, 10, 0)
+wechat_press_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+wechat_label = lv.label(wechat)
+wechat_label.center()
+wechat_label.set_size(240, 40)
+wechat_label.set_long_mode(lv.label.LONG.WRAP)
+wechat_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+wechat_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+# -------------------------------------------contacts screen----------------------------------------------------------
+contacts_screen = lv.obj()
+contacts = lv.obj(contacts_screen)
+contacts.center()
+contacts.set_size(240, 320)
+contacts.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# -------------------------------------------language screen----------------------------------------------------------
+language_screen = lv.obj()
+language = lv.obj(language_screen)
+language.center()
+language.set_size(240, 320)
+language.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+language_title = lv.label(language)
+language_title.set_pos(0, 10)
+language_title.set_size(240, 40)
+language_title.set_text("语言设置")
+language_title.set_long_mode(lv.label.LONG.WRAP)
+language_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+language_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+language_english_btn = lv.btn(language)
+language_english_btn.set_size(240,50)
+language_english_btn.set_pos(0, 60)
+language_english_btn.add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.PRESSED)
+language_english_btn.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+language_english_btn_label = lv.label(language_english_btn)
+language_english_btn_label.set_text("English")
+language_english_btn_label.align(lv.ALIGN.LEFT_MID, 10, 0)
+language_english_btn_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+language_chinese_btn = lv.btn(language)
+language_chinese_btn.set_size(240,50)
+language_chinese_btn.set_pos(0, 120)
+language_chinese_btn.add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.PRESSED)
+language_chinese_btn.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+language_chinese_btn_label = lv.label(language_chinese_btn)
+language_chinese_btn_label.set_text("简体中文")
+language_chinese_btn_label.align(lv.ALIGN.LEFT_MID, 10, 0)
+language_chinese_btn_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# -------------------------------------------dialswitch screen----------------------------------------------------------
+dialswitch_screen = lv.obj()
+dialswitch = lv.obj(dialswitch_screen)
+dialswitch.center()
+dialswitch.set_size(240, 320)
+dialswitch.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+dialswitch_title = lv.label(dialswitch)
+dialswitch_title.set_pos(0, 10)
+dialswitch_title.set_size(240, 40)
+dialswitch_title.set_text("表盘切换")
+dialswitch_title.set_long_mode(lv.label.LONG.WRAP)
+dialswitch_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+dialswitch_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+dialswitch_btn1 = lv.btn(dialswitch)
+dialswitch_btn1.set_size(240,54)
+dialswitch_btn1.set_pos(0, 50)
+dialswitch_btn1.add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.PRESSED)
+dialswitch_btn1.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+dialswitch_btn1_label = lv.label(dialswitch_btn1)
+dialswitch_btn1_label.set_text("表盘1")
+dialswitch_btn1_label.align(lv.ALIGN.LEFT_MID, 10, 0)
+dialswitch_btn1_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+dialswitch_btn2 = lv.btn(dialswitch)
+dialswitch_btn2.set_size(240,54)
+dialswitch_btn2.set_pos(0, 104)
+dialswitch_btn2.add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.PRESSED)
+dialswitch_btn2.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+dialswitch_btn2_label = lv.label(dialswitch_btn2)
+dialswitch_btn2_label.set_text("表盘2")
+dialswitch_btn2_label.align(lv.ALIGN.LEFT_MID, 10, 0)
+dialswitch_btn2_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+btn1_switch = lv.switch(dialswitch_btn1)
+btn1_switch.set_pos(185, 3)
+btn1_switch.set_size(10, 10)
+btn1_switch.set_style_bg_color(lv.color_make(0xff, 0xff, 0xff),lv.PART.MAIN | lv.PART.INDICATOR)
+btn1_switch.set_style_bg_color(lv.color_make(0xff, 0x00, 0x00),lv.PART.KNOB | lv.STATE.CHECKED)
+btn1_switch.set_style_bg_color(lv.color_make(0xff, 0xff, 0xff),lv.PART.KNOB)
+
+btn2_switch = lv.switch(dialswitch_btn2)
+btn2_switch.set_pos(185, 3)
+btn2_switch.set_size(10, 10)
+btn2_switch.set_style_bg_color(lv.color_make(0xff, 0xff, 0xff),lv.PART.MAIN | lv.PART.INDICATOR)
+btn2_switch.set_style_bg_color(lv.color_make(0xff, 0x00, 0x00),lv.PART.KNOB | lv.STATE.CHECKED)
+btn2_switch.set_style_bg_color(lv.color_make(0xff, 0xff, 0xff),lv.PART.KNOB)
+
+# -------------------------------------------menustyle screen----------------------------------------------------------
+menustyle_screen = lv.obj()
+menustyle = lv.obj(menustyle_screen)
+menustyle.center()
+menustyle.set_size(240, 320)
+menustyle.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+menustyle_title = lv.label(menustyle)
+menustyle_title.set_pos(0, 10)
+menustyle_title.set_size(240, 40)
+menustyle_title.set_text("主菜单风格")
+menustyle_title.set_long_mode(lv.label.LONG.WRAP)
+menustyle_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+menustyle_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+menustyle_btn1 = lv.btn(menustyle)
+menustyle_btn1.set_size(240,54)
+menustyle_btn1.set_pos(0, 50)
+menustyle_btn1.add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.PRESSED)
+menustyle_btn1.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+menustyle_btn1_label = lv.label(menustyle_btn1)
+menustyle_btn1_label.set_text("四宫格")
+menustyle_btn1_label.align(lv.ALIGN.LEFT_MID, 10, 0)
+menustyle_btn1_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+menu_btn1_switch = lv.switch(menustyle_btn1)
+menu_btn1_switch.set_pos(185, 3)
+menu_btn1_switch.set_size(10, 10)
+menu_btn1_switch.set_style_bg_color(lv.color_make(0xff, 0xff, 0xff),lv.PART.MAIN | lv.PART.INDICATOR)
+menu_btn1_switch.set_style_bg_color(lv.color_make(0xff, 0x00, 0x00),lv.PART.KNOB | lv.STATE.CHECKED)
+menu_btn1_switch.set_style_bg_color(lv.color_make(0xff, 0xff, 0xff),lv.PART.KNOB)
+
+menustyle_btn2 = lv.btn(menustyle)
+menustyle_btn2.set_size(240,54)
+menustyle_btn2.set_pos(0, 104)
+menustyle_btn2.add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.PRESSED)
+menustyle_btn2.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+menustyle_btn2_label = lv.label(menustyle_btn2)
+menustyle_btn2_label.set_text("单页")
+menustyle_btn2_label.align(lv.ALIGN.LEFT_MID, 10, 0)
+menustyle_btn2_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+menu_btn2_switch = lv.switch(menustyle_btn2)
+menu_btn2_switch.set_pos(185, 3)
+menu_btn2_switch.set_size(10, 10)
+menu_btn2_switch.set_style_bg_color(lv.color_make(0xff, 0xff, 0xff),lv.PART.MAIN | lv.PART.INDICATOR)
+menu_btn2_switch.set_style_bg_color(lv.color_make(0xff, 0x00, 0x00),lv.PART.KNOB | lv.STATE.CHECKED)
+menu_btn2_switch.set_style_bg_color(lv.color_make(0xff, 0xff, 0xff),lv.PART.KNOB)
+
+
+# -------------------------------------------imei screen----------------------------------------------------------
+imei_screen = lv.obj()
+imei = lv.obj(imei_screen)
+imei.center()
+imei.set_size(240, 320)
+imei.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+bg_color = lv.palette_lighten(lv.PALETTE.LIGHT_BLUE, 5)
+fg_color = lv.palette_darken(lv.PALETTE.BLUE, 4)
+
+imei_qr = lv.qrcode(imei, 150, fg_color, bg_color)
+imei_qr.center()
+# Add a border with bg_color
+imei_qr.set_style_border_color(bg_color, 0)
+imei_qr.set_style_border_width(5, 0)
+imei_qr_data = str("867387060319145")
+imei_qr.update(imei_qr_data,len(imei_qr_data))
+
+imei_label = lv.label(imei)
+imei_label.set_pos(0, 280)
+imei_label.set_size(240, 20)
+imei_label.set_text("867387060319145")
+imei_label.set_long_mode(lv.label.LONG.WRAP)
+imei_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+imei_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+# -------------------------------------------app screen----------------------------------------------------------
+app_screen = lv.obj()
+app = lv.obj(app_screen)
+app.center()
+app.set_size(240, 320)
+app.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+app_qr = lv.qrcode(imei, 150, fg_color, bg_color)
+app_qr.center()
+# Add a border with bg_color
+app_qr.set_style_border_color(bg_color, 0)
+app_qr.set_style_border_width(5, 0)
+app_qr_data = str("https://fangzoudiu.xcloudtech.com/xiao_jian")
+app_qr.update(app_qr_data,len(app_qr_data))
+
+app_label = lv.label(app)
+app_label.set_pos(0, 280)
+app_label.set_size(240, 20)
+app_label.set_text("867387060319145")
+app_label.set_long_mode(lv.label.LONG.WRAP)
+app_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+app_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# -------------------------------------------brightness screen----------------------------------------------------------
+brightness_screen = lv.obj()
+brightness = lv.obj(brightness_screen)
+brightness.center()
+brightness.set_size(240, 320)
+brightness.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+brightness_title = lv.label(brightness)
+brightness_title.set_pos(0, 10)
+brightness_title.set_size(240, 40)
+brightness_title.set_text("屏幕调节")
+brightness_title.set_long_mode(lv.label.LONG.WRAP)
+brightness_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+brightness_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+brightness_label1 = lv.label(brightness)
+brightness_label1.set_pos(10, 60)
+brightness_label1.set_size(50, 40)
+brightness_label1.set_text("亮度")
+brightness_label1.set_long_mode(lv.label.LONG.WRAP)
+brightness_label1.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
+brightness_label1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+brightness_bar = lv.bar(brightness)
+brightness_bar.set_pos(20, 120)
+brightness_bar.set_size(200, 15)
+brightness_bar.set_style_anim_time(1000, lv.PART.INDICATOR | lv.STATE.DEFAULT)
+brightness_bar.set_mode(lv.bar.MODE.NORMAL)
+brightness_bar.set_value(50, lv.ANIM.OFF)
+brightness_bar.add_style(style_bar, lv.PART.MAIN | lv.STATE.DEFAULT)
+brightness_bar.add_style(style_bar_indic, lv.PART.INDICATOR | lv.STATE.DEFAULT)
+
+brightness_add_imgbtn = lv.img(brightness)
+brightness_add_imgbtn.set_pos(50, 250)
+brightness_add_imgbtn.set_size(34, 30)
+brightness_add_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
+brightness_add_imgbtn.set_src("E:/static/time_up.png")
+brightness_add_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+brightness_reduce_imgbtn = lv.img(brightness)
+brightness_reduce_imgbtn.set_pos(150, 250)
+brightness_reduce_imgbtn.set_size(34, 30)
+brightness_reduce_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
+brightness_reduce_imgbtn.set_src("E:/static/time_down.png")
+brightness_reduce_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+# -------------------------------------------volume screen----------------------------------------------------------
+volume_screen = lv.obj()
+volume = lv.obj(volume_screen)
+volume.center()
+volume.set_size(240, 320)
+volume.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+volume_phone_btn = lv.btn(volume)
+volume_phone_btn.set_size(200,50)
+volume_phone_btn.set_pos(20,30)
+volume_phone_btn.add_style(style_volume_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+volume_phone_label = lv.label(volume_phone_btn)
+volume_phone_label.set_text("电话铃声")
+volume_phone_label.align(lv.ALIGN.LEFT_MID, 50, 0)
+volume_phone_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+volume_alarm_btn = lv.btn(volume)
+volume_alarm_btn.set_size(200,50)
+volume_alarm_btn.set_pos(20,100)
+volume_alarm_btn.add_style(style_volume_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+volume_alarm_label = lv.label(volume_alarm_btn)
+volume_alarm_label.set_text("闹钟铃声")
+volume_alarm_label.align(lv.ALIGN.LEFT_MID, 50, 0)
+volume_alarm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+volume_message_btn = lv.btn(volume)
+volume_message_btn.set_size(200,50)
+volume_message_btn.set_pos(20,170)
+volume_message_btn.add_style(style_volume_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+volume_message_label = lv.label(volume_message_btn)
+volume_message_label.set_text("消息铃声")
+volume_message_label.align(lv.ALIGN.LEFT_MID, 50, 0)
+volume_message_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# -------------------------------------------phonering screen----------------------------------------------------------
+phonering_screen = lv.obj()
+phonering = lv.obj(phonering_screen)
+phonering.center()
+phonering.set_size(240, 320)
+phonering.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+phonering_title = lv.label(phonering)
+phonering_title.set_pos(0, 10)
+phonering_title.set_size(240, 40)
+phonering_title.set_text("电话铃声")
+phonering_title.set_long_mode(lv.label.LONG.WRAP)
+phonering_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+phonering_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+phonering_label1 = lv.label(phonering)
+phonering_label1.set_pos(10, 60)
+phonering_label1.set_size(50, 40)
+phonering_label1.set_text("电话铃声")
+phonering_label1.set_long_mode(lv.label.LONG.WRAP)
+phonering_label1.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
+phonering_label1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+phonering_bar = lv.bar(phonering)
+phonering_bar.set_pos(20, 120)
+phonering_bar.set_size(200, 15)
+phonering_bar.set_style_anim_time(1000, lv.PART.INDICATOR | lv.STATE.DEFAULT)
+phonering_bar.set_mode(lv.bar.MODE.NORMAL)
+phonering_bar.set_value(50, lv.ANIM.OFF)
+phonering_bar.add_style(style_bar, lv.PART.MAIN | lv.STATE.DEFAULT)
+phonering_bar.add_style(style_bar_indic, lv.PART.INDICATOR | lv.STATE.DEFAULT)
+
+phonering_add_imgbtn = lv.img(phonering)
+phonering_add_imgbtn.set_pos(50, 250)
+phonering_add_imgbtn.set_size(34, 30)
+phonering_add_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
+phonering_add_imgbtn.set_src("E:/static/time_up.png")
+phonering_add_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+phonering_reduce_imgbtn = lv.img(phonering)
+phonering_reduce_imgbtn.set_pos(150, 250)
+phonering_reduce_imgbtn.set_size(34, 30)
+phonering_reduce_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
+
+phonering_reduce_imgbtn.set_src("E:/static/time_down.png")
+
+phonering_reduce_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+# -------------------------------------------alarmvolume screen----------------------------------------------------------
+alarmvolume_screen = lv.obj()
+alarmvolume = lv.obj(alarmvolume_screen)
+alarmvolume.center()
+alarmvolume.set_size(240, 320)
+alarmvolume.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+alarmvolume_title = lv.label(alarmvolume)
+alarmvolume_title.set_pos(0, 10)
+alarmvolume_title.set_size(240, 40)
+alarmvolume_title.set_text("闹钟铃声")
+alarmvolume_title.set_long_mode(lv.label.LONG.WRAP)
+alarmvolume_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+alarmvolume_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+alarmvolume_label1 = lv.label(alarmvolume)
+alarmvolume_label1.set_pos(10, 60)
+alarmvolume_label1.set_size(50, 40)
+alarmvolume_label1.set_text("闹钟铃声")
+alarmvolume_label1.set_long_mode(lv.label.LONG.WRAP)
+alarmvolume_label1.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
+alarmvolume_label1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+alarmvolume_bar = lv.bar(alarmvolume)
+alarmvolume_bar.set_pos(20, 120)
+alarmvolume_bar.set_size(200, 15)
+alarmvolume_bar.set_style_anim_time(1000, lv.PART.INDICATOR | lv.STATE.DEFAULT)
+alarmvolume_bar.set_mode(lv.bar.MODE.NORMAL)
+alarmvolume_bar.set_value(50, lv.ANIM.OFF)
+alarmvolume_bar.add_style(style_bar, lv.PART.MAIN | lv.STATE.DEFAULT)
+alarmvolume_bar.add_style(style_bar_indic, lv.PART.INDICATOR | lv.STATE.DEFAULT)
+
+alarmvolume_add_imgbtn = lv.img(alarmvolume)
+alarmvolume_add_imgbtn.set_pos(50, 250)
+alarmvolume_add_imgbtn.set_size(34, 30)
+alarmvolume_add_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
+
+alarmvolume_add_imgbtn.set_src("E:/static/time_up.png")
+
+alarmvolume_add_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+alarmvolume_reduce_imgbtn = lv.img(alarmvolume)
+alarmvolume_reduce_imgbtn.set_pos(150, 250)
+alarmvolume_reduce_imgbtn.set_size(34, 30)
+alarmvolume_reduce_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
+
+alarmvolume_reduce_imgbtn.set_src("E:/static/time_down.png")
+
+alarmvolume_reduce_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+# -------------------------------------------msgvolume screen----------------------------------------------------------
+msgvolume_screen = lv.obj()
+msgvolume = lv.obj(msgvolume_screen)
+msgvolume.center()
+msgvolume.set_size(240, 320)
+msgvolume.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+msgvolume_title = lv.label(msgvolume)
+msgvolume_title.set_pos(0, 10)
+msgvolume_title.set_size(240, 40)
+msgvolume_title.set_text("消息铃声")
+msgvolume_title.set_long_mode(lv.label.LONG.WRAP)
+msgvolume_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+msgvolume_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+msgvolume_label1 = lv.label(msgvolume)
+msgvolume_label1.set_pos(10, 60)
+msgvolume_label1.set_size(50, 40)
+msgvolume_label1.set_text("消息铃声")
+msgvolume_label1.set_long_mode(lv.label.LONG.WRAP)
+msgvolume_label1.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
+msgvolume_label1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+msgvolume_bar = lv.bar(msgvolume)
+msgvolume_bar.set_pos(20, 120)
+msgvolume_bar.set_size(200, 15)
+msgvolume_bar.set_style_anim_time(1000, lv.PART.INDICATOR | lv.STATE.DEFAULT)
+msgvolume_bar.set_mode(lv.bar.MODE.NORMAL)
+msgvolume_bar.set_value(50, lv.ANIM.OFF)
+msgvolume_bar.add_style(style_bar, lv.PART.MAIN | lv.STATE.DEFAULT)
+msgvolume_bar.add_style(style_bar_indic, lv.PART.INDICATOR | lv.STATE.DEFAULT)
+
+msgvolume_add_imgbtn = lv.img(msgvolume)
+msgvolume_add_imgbtn.set_pos(50, 250)
+msgvolume_add_imgbtn.set_size(34, 30)
+msgvolume_add_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
+
+msgvolume_add_imgbtn.set_src("E:/static/time_up.png")
+
+msgvolume_add_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+msgvolume_reduce_imgbtn = lv.img(msgvolume)
+msgvolume_reduce_imgbtn.set_pos(150, 250)
+msgvolume_reduce_imgbtn.set_size(34, 30)
+msgvolume_reduce_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
+
+msgvolume_reduce_imgbtn.set_src("E:/static/time_down.png")
+
+msgvolume_reduce_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+# -------------------------------------------restore screen----------------------------------------------------------
+restore_screen = lv.obj()
+restore = lv.obj(restore_screen)
+restore.center()
+restore.set_size(240, 320)
+restore.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+restore_label = lv.label(restore)
+restore_label.set_pos(0, 100)
+restore_label.set_size(240, 40)
+restore_label.set_text("恢复出厂设置?")
+restore_label.set_long_mode(lv.label.LONG.WRAP)
+restore_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+restore_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+restore_confirm = lv.label(restore)
+restore_confirm.set_text("确认")
+restore_confirm.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+restore_confirm.set_size(120, 20)
+restore_confirm.set_pos(0,280)
+restore_confirm.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+restore_confirm.add_flag(lv.obj.FLAG.CLICKABLE)
+restore_confirm.set_ext_click_area(20)
+
+restore_cancel = lv.label(restore)
+restore_cancel.set_text("返回")
+restore_cancel.set_size(120, 20)
+restore_cancel.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+restore_cancel.set_pos(120,280)
+restore_cancel.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+restore_cancel.add_flag(lv.obj.FLAG.CLICKABLE)
+restore_cancel.set_ext_click_area(20)
+
+
+
+# -------------------------------------------poweroff screen----------------------------------------------------------
+poweroff_screen = lv.obj()
+poweroff = lv.obj(poweroff_screen)
+poweroff.center()
+poweroff.set_size(240, 320)
+poweroff.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+poweroff_img = lv.img(poweroff)
+poweroff_img.set_pos(100, 30)
+poweroff_img.set_size(61, 61)
+poweroff_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+poweroff_img.set_src("E:/static/poweroff_icon.png")
+
+poweroff_label = lv.label(poweroff)
+poweroff_label.set_text("是否关机?")
+poweroff_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+poweroff_label.set_size(240, 20)
+poweroff_label.set_pos(0,120)
+poweroff_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+poweroff_confirm = lv.img(poweroff)
+poweroff_confirm.set_size(176, 46)
+poweroff_confirm.set_pos(32, 150)
+poweroff_confirm.set_src("E:/static/off_icon.png")
+poweroff_confirm.add_flag(lv.obj.FLAG.CLICKABLE)
+poweroff_confirm.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+poweroff_confirm.set_ext_click_area(20)
+
+poweroff_confirm_label = lv.label(poweroff_confirm)
+poweroff_confirm_label.set_text("关机")
+poweroff_confirm_label.align(lv.ALIGN.CENTER, 10, 0)
+poweroff_confirm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+poweroff_return = lv.img(poweroff)
+poweroff_return.set_size(176, 46)
+poweroff_return.set_pos(32, 210)
+poweroff_return.set_src("E:/static/cancel_icon.png")
+poweroff_return.add_flag(lv.obj.FLAG.CLICKABLE)
+poweroff_return.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+poweroff_return_label = lv.label(poweroff_return)
+poweroff_return_label.set_text("返回")
+poweroff_return_label.align(lv.ALIGN.CENTER, 10, 0)
+poweroff_return_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+poweroff_return.set_ext_click_area(20)
+
+# -------------------------------------------version screen----------------------------------------------------------
+version_screen = lv.obj()
+version = lv.obj(version_screen)
+version.center()
+version.set_size(240, 320)
+version.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+version_msg = """Software Version:
+MMI
+Version:UIX8910_C55_V
+1.0_Release
+Build Time:
+2-17-2023
+9:32:5
+IMEI:
+867387060319145
+"""
+
+version_label = lv.label(version)
+version_label.set_pos(0, 0)
+version_label.set_size(240, 320)
+version_label.set_long_mode(lv.label.LONG.WRAP)
+version_label.set_text(version_msg)
+
+version_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+version_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+# -------------------------------------------update screen----------------------------------------------------------
+update_screen = lv.obj()
+update = lv.obj(update_screen)
+update.center()
+update.set_size(240, 320)
+update.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+update_title = lv.label(update)
+update_title.set_pos(0, 10)
+update_title.set_size(240, 40)
+update_title.set_text("系统更新")
+update_title.set_long_mode(lv.label.LONG.WRAP)
+update_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+update_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+update_label = lv.label(update)
+update_label.set_text(" 检查版本更新!/n 请稍后...")
+update_label.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
+update_label.set_size(240, 50)
+update_label.set_pos(0,50)
+update_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+update_return = lv.label(update)
+update_return.set_text("返回")
+update_return.set_size(120, 20)
+update_return.set_style_text_align(lv.TEXT_ALIGN.RIGHT, 0)
+update_return.set_pos(0,280)
+update_return.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+update_return.add_flag(lv.obj.FLAG.CLICKABLE)
+
+
+# -------------------------------------------dialing screen----------------------------------------------------------
+dialing_screen = lv.obj()
+dialing = lv.obj(dialing_screen)
+dialing.center()
+dialing.set_size(240, 320)
+dialing.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+dialing_img = lv.img(dialing)
+dialing_img.set_pos(80, 50)
+dialing_img.set_size(64, 64)
+dialing_img.set_src("E:/static/IMAGE_NOTICE_CALL.png")
+dialing_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+dialing_label = lv.label(dialing)
+dialing_label.set_pos(0, 150)
+dialing_label.set_size(240, 50)
+dialing_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+dialing_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+hangup_imgbtn = lv.img(dialing)
+hangup_imgbtn.set_size(64, 64)
+hangup_imgbtn.set_src("E:/static/IMG_CC_HUNGUP1.png")
+
+
+
+hangup_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
+hangup_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+hangup_imgbtn.set_pos(80, 220)
+
+# -------------------------------------------incoming_call screen----------------------------------------------------------
+incoming_call_screen = lv.obj()
+incoming_call = lv.obj(incoming_call_screen)
+incoming_call.center()
+incoming_call.set_size(240, 320)
+incoming_call.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+incoming_call_img = lv.img(incoming_call)
+incoming_call_img.set_pos(80, 50)
+incoming_call_img.set_size(64, 64)
+incoming_call_img.set_src("E:/static/IMAGE_NOTICE_CALL.png")
+incoming_call_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+incoming_call_label = lv.label(incoming_call)
+incoming_call_label.set_pos(0, 150)
+incoming_call_label.set_size(240, 50)
+incoming_call_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+incoming_call_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+incoming_call_answer = lv.img(incoming_call)
+incoming_call_answer.set_size(64, 64)
+incoming_call_answer.add_flag(lv.obj.FLAG.CLICKABLE)
+incoming_call_answer.set_pos(30, 220)
+incoming_call_answer.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+incoming_call_answer.set_src("E:/static/answer.png")
+
+incoming_call_hangup = lv.img(incoming_call)
+incoming_call_hangup.set_size(64, 64)
+incoming_call_hangup.add_flag(lv.obj.FLAG.CLICKABLE)
+incoming_call_hangup.set_pos(150, 220)
+incoming_call_hangup.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+incoming_call_hangup.set_src("E:/static/hang_up.png")
+
+# -------------------------------------------on_call screen----------------------------------------------------------
+on_call_screen = lv.obj()
+on_call = lv.obj(on_call_screen)
+on_call.center()
+on_call.set_size(240, 320)
+on_call.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+on_call_img = lv.img(on_call)
+on_call_img.set_pos(80, 50)
+on_call_img.set_size(64, 64)
+on_call_img.set_src("E:/static/IMAGE_NOTICE_CALL.png")
+on_call_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+on_call_label = lv.label(on_call)
+on_call_label.set_pos(0, 150)
+on_call_label.set_size(240, 50)
+on_call_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+on_call_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+on_call_hangup = lv.img(on_call)
+on_call_hangup.set_size(64, 64)
+on_call_hangup.add_flag(lv.obj.FLAG.CLICKABLE)
+on_call_hangup.set_pos(85, 220)
+on_call_hangup.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+on_call_hangup.set_src("E:/static/hang_up.png")
+
+
+# -------------------------------------------sms_detail screen----------------------------------------------------------
+msg_detail_screen = lv.obj()
+sms_detail = lv.obj(msg_detail_screen)
+sms_detail.center()
+sms_detail.set_size(240, 320)
+sms_detail.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+msg_detail_title = lv.label(sms_detail)
+msg_detail_title.set_pos(0, 10)
+msg_detail_title.set_size(240, 40)
+msg_detail_title.set_long_mode(lv.label.LONG.WRAP)
+msg_detail_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+msg_detail_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+msg_detail_cont = lv.label(sms_detail)
+msg_detail_cont.set_pos(0, 50)
+msg_detail_cont.set_size(240, 200)
+msg_detail_cont.set_long_mode(lv.label.LONG.WRAP)
+msg_detail_cont.set_style_text_align(lv.TEXT_ALIGN.LEFT, 20)
+msg_detail_cont.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# -------------------------------------------call_log screen----------------------------------------------------------
+call_log_screen = lv.obj()
+call_log = lv.obj(call_log_screen)
+call_log.center()
+call_log.set_size(240, 320)
+call_log.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+call_log_title = lv.label(call_log)
+call_log_title.set_pos(0, 10)
+call_log_title.set_size(240, 40)
+call_log_title.set_long_mode(lv.label.LONG.WRAP)
+call_log_title.set_text("通话记录")
+call_log_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+call_log_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+from ext.common import Abstract
+
+class Screen(Abstract):
+ def __init__(self):
+ self.meta = None
+ self.meta_info = None
+ self.last_screen_info = None
+ self.bg_img = None
+
+ def set_bg_img(self, _fp):
+ print("bg _fp = {} NAME = {} bg_img = {}".format(_fp, self.NAME, self.bg_img))
+ if self.bg_img:
+ self.bg_img.set_src(_fp)
+
+ def load_screen(self, e, msg):
+ print("msg = {}".format(msg))
+ EventMesh.publish("load_screen", msg)
+
+ def load_screen_anim(self, e, msg):
+ print("msg = {}".format(msg))
+ EventMesh.publish("load_screen_anim", msg)
+
+ def load_screen_animtop(self, e, msg):
+ print("msg = {}".format(msg))
+ EventMesh.publish("load_screen_animtop", msg)
+
+ def load(self):
+ pass
+
+ def get_meta(self):
+ return self.meta
+
+ def Close(self):
+ pass
+
+ def done_left_to_right(self):
+ pass
+
+ def done_right_to_left(self):
+ pass
+
+ def done_bottom_to_top(self):
+ pass
+
+ def done_top_to_bottom(self):
+ pass
+
+ def done_return(self):
+ pass
+
+ def done_click(self):
+ pass
+
+ def done_error(self):
+ pass
+
+class PhoneScreen(Screen):
+ NAME = "Phone"
+
+ def __init__(self):
+
+ super().__init__()
+ self.meta = phone_screen
+ self.phone_num = ''
+ self.phone_list = []
+ phone_one.add_event_cb(lambda e: self.one(e),
+ lv.EVENT.CLICKED, None)
+ phone_two.add_event_cb(lambda e: self.two(e),
+ lv.EVENT.CLICKED, None)
+ phone_three.add_event_cb(lambda e: self.three(e),
+ lv.EVENT.CLICKED, None)
+ phone_four.add_event_cb(lambda e: self.four(e),
+ lv.EVENT.CLICKED, None)
+ phone_five.add_event_cb(lambda e: self.five(e),
+ lv.EVENT.CLICKED, None)
+ phone_six.add_event_cb(lambda e: self.six(e),
+ lv.EVENT.CLICKED, None)
+ phone_seven.add_event_cb(lambda e: self.seven(e),
+ lv.EVENT.CLICKED, None)
+ phone_eight.add_event_cb(lambda e: self.eight(e),
+ lv.EVENT.CLICKED, None)
+ phone_nine.add_event_cb(lambda e: self.nine(e),
+ lv.EVENT.CLICKED, None)
+ phone_zero.add_event_cb(lambda e: self.zero(e),
+ lv.EVENT.CLICKED, None)
+
+ phone_call.add_event_cb(lambda e: self.call(e),
+ lv.EVENT.CLICKED, None)
+ phone_contact.add_event_cb(lambda e: self.contact(e),
+ lv.EVENT.CLICKED, None)
+ phone_delete.add_event_cb(lambda e: self.delete(e),
+ lv.EVENT.CLICKED, None)
+
+ def one(self,e):
+ self.phone_list.append("1")
+ self.phone_num = ''.join(self.phone_list)
+ self.show_num()
+
+ def two(self,e):
+ self.phone_list.append("2")
+ self.phone_num = ''.join(self.phone_list)
+ self.show_num()
+
+ def three(self,e):
+ self.phone_list.append("3")
+ self.phone_num = ''.join(self.phone_list)
+ self.show_num()
+
+ def four(self,e):
+ self.phone_list.append("4")
+ self.phone_num = ''.join(self.phone_list)
+ self.show_num()
+
+ def five(self,e):
+ self.phone_list.append("5")
+ self.phone_num = ''.join(self.phone_list)
+ self.show_num()
+
+ def six(self,e):
+ self.phone_list.append("6")
+ self.phone_num = ''.join(self.phone_list)
+ self.show_num()
+
+ def seven(self,e):
+ self.phone_list.append("7")
+ self.phone_num = ''.join(self.phone_list)
+ self.show_num()
+
+ def eight(self,e):
+ self.phone_list.append("8")
+ self.phone_num = ''.join(self.phone_list)
+ self.show_num()
+
+ def nine(self,e):
+ self.phone_list.append("9")
+ self.phone_num = ''.join(self.phone_list)
+ self.show_num()
+
+ def zero(self,e):
+ self.phone_list.append("0")
+ self.phone_num = ''.join(self.phone_list)
+ self.show_num()
+
+ def delete(self,e):
+ if self.phone_list is not None:
+ self.phone_list.pop()
+ self.phone_num = ''.join(self.phone_list)
+ self.show_num()
+
+ def contact(self,e):
+ EventMesh.publish("load_screen", {"screen": "contacts"})
+
+ def call(self,e):
+ EventMesh.publish("load_screen", {"screen": "dialing"})
+ voiceCall.callStart(self.phone_num)
+
+ def show_num(self):
+ phone_label.set_text(self.phone_num)
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+CALLLOG_FLAG = 0
+class CallLogScreen(Screen):
+ NAME = "call_log"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = call_log_screen
+ self.log_list = []
+
+ def post_processor_before_initialization(self):
+ self.log_list = EventMesh.publish("get_call_log_list")
+
+ def initialization(self):
+ global CALLLOG_FLAG
+ if CALLLOG_FLAG == 0:
+ self.btn_create()
+
+ def btn_create(self):
+ h = 0
+ for i ,each in enumerate(self.log_list):
+
+ _btn = lv.btn(call_log)
+ _btn.set_size(240,50)
+ _btn.set_pos(0,52*h + 50)
+ _btn.add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+ _btn.add_style(style_contact_btn_pressed, lv.PART.MAIN | lv.STATE.PRESSED)
+ _btn.add_event_cb(lambda e: self.calling(e),
+ lv.EVENT.PRESSED, None)
+
+ _btn_label1 = lv.label(_btn)
+ _btn_label1.set_pos(0, 0)
+ _btn_label1.set_long_mode(lv.label.LONG.DOT)
+ _btn_label1.set_size(0, 0)
+ _btn_label1.set_text(str(i))
+
+ _btn_label2 = lv.label(_btn)
+ _btn_label2.set_pos(0, 5)
+ _btn_label2.set_size(100, 25)
+ _btn_label2.set_text(each[0])
+ _btn_label2.set_long_mode(lv.label.LONG.DOT)
+ _btn_label2.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+ #
+ _btn_label3 = lv.label(_btn)
+ _btn_label3.set_pos(100, 5)
+ _btn_label3.set_size(100, 25)
+ _btn_label3.set_text("(" + each[1] + ") " + each[3])
+ _btn_label3.set_long_mode(lv.label.LONG.DOT)
+ _btn_label3.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+ h = h + 1
+
+ def calling(self,e):
+ _i = int(e.get_target().get_child(0).get_text())
+ _msg = self.log_list[_i]
+ EventMesh.publish("save_phonenum",_msg[1])
+ EventMesh.publish("load_screen", {"screen": "dialing"})
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "tilemenu"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+
+class DialingScreen(Screen):
+ NAME = "dialing"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = dialing_screen
+ hangup_imgbtn.add_event_cb(lambda e: self.hangup(e),
+ lv.EVENT.CLICKED, None)
+ self.value = ""
+
+
+ def initialization(self):
+ #获取字符串
+ self.value = EventMesh.publish("get_phonenum")
+ dialing_label.set_text(self.value)
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def hangup(self,e):
+ voiceCall.callEnd()
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+MSG_FLAG = 0
+class PopupScreen(Screen):
+ NAME = "popup"
+
+ def __init__(self):
+ super().__init__()
+ # -------------------------------------------popup_menu screen----------------------------------------------------------
+ self.meta = lv.obj()
+ self.meta.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
+ # add style for watchface
+ self.meta.add_style(style_screen, lv.PART.MAIN|lv.STATE.DEFAULT)
+
+ self.msg_title = lv.label(self.meta)
+ self.msg_title.set_pos(0, 10)
+ self.msg_title.set_size(240, 40)
+ self.msg_title.set_text("信息")
+ self.msg_title.set_long_mode(lv.label.LONG.WRAP)
+ self.msg_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+ self.msg_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+ # def post_processor_before_initialization(self):
+ # EventMesh.publish("get_msg_count")
+ # self.msg_detail = EventMesh.publish("get_msg_detail")
+
+ def post_processor_before_initialization(self):
+ check_json = ql_fs.path_exists("/usr/msg.json")
+ self.msg_detail = EventMesh.publish("get_msg_detail")
+ if check_json == False:
+ with open("usr/msg.json","w",encoding="utf-8") as fd:
+ ujson.dump(self.msg_detail,fd)
+ print("创建短信")
+ else:
+ with open("usr/msg.json","r",encoding="utf-8") as fd:
+ self.msg_detail = ujson.load(fd)
+ print("读取短信")
+
+
+ def initialization(self):
+ global MSG_FLAG
+ if MSG_FLAG == 0:
+ self.btn_create()
+
+ def btn_create(self):
+ global MSG_FLAG
+ MSG_FLAG = 1
+ i = 0
+ for key in self.msg_detail.keys():
+ msg_btn = lv.btn(self.meta)
+ msg_btn.set_size(240,50)
+ msg_btn.set_pos(0,52*i)
+ msg_btn.add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+ msg_btn.add_style(style_contact_btn_pressed, lv.PART.MAIN | lv.STATE.PRESSED)
+ msg_btn.add_event_cb(lambda e: self.calling(e),
+ lv.EVENT.PRESSED, None)
+
+ contact_btn_label = lv.label(msg_btn)
+ contact_btn_label.set_text(key)
+ contact_btn_label.align(lv.ALIGN.LEFT_MID, 10, 0)
+ contact_btn_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+ detail = self.msg_detail[key]
+ print("------:",detail)
+ contact_content_label = lv.label(msg_btn)
+ contact_content_label.set_text(detail[:15])
+ contact_content_label.align(lv.ALIGN.LEFT_MID, 80, 0)
+ contact_content_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+ i = i + 1
+ # self.name.append(str(key))
+
+ # print(self.name)
+ def calling(self,e):
+ #上传标题和内容
+ _name = e.get_target().get_child(0).get_text()
+ EventMesh.publish("save_msg_name", _name)
+ #_content = e.get_target().get_child(1).get_text()
+ EventMesh.publish("save_msg_content", self.msg_detail[_name])
+ print(_name,self.msg_detail[_name])
+ #显示详细页面
+ EventMesh.publish("load_screen", {"screen": "msg_detail"})
+
+
+ def done_bottom_to_top(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+class MsgDetailScreen(Screen):
+ NAME = "msg_detail"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = msg_detail_screen
+
+ self.name = ""
+ self.contetn = ""
+
+
+ def initialization(self):
+ #获取字符串
+ self.name = EventMesh.publish("get_msg_name")
+ self.content = EventMesh.publish("get_msg_content")
+ msg_detail_title.set_text(self.name)
+ msg_detail_cont.set_text(self.content)
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def hangup(self,e):
+ voiceCall.callEnd()
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+class HeartrateScreen(Screen):
+ NAME = "heartrate"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = heartrate_screen
+ self.point = 0
+ #self.timer = Timer(Timer.Timer1)
+ self.timer = osTimer()
+
+ def initialization(self):
+ heartrate_bpm_label.add_flag(lv.obj.FLAG.HIDDEN)
+ heartrate_mmhg_label.add_flag(lv.obj.FLAG.HIDDEN)
+ heartrate_start_label.clear_flag(lv.obj.FLAG.HIDDEN)
+
+ #self.monitor_timer.start(7 * 60 * 1000, 1, self.check)
+
+ def post_processor_after_initialization(self):
+ self.timer.start(1*1000, 1, self.start_measure)
+ #self.timer.start(period=1000, mode=self.timer.PERIODIC, callback=self.start_measure)
+
+
+ def start_measure(self,*args):
+ self.point = self.point + 1
+ print("point:",self.point)
+ if self.point == 1:
+ heartrate_start_label.set_text("测量中...")
+ if self.point == 2:
+ heartrate_start_label.set_text("测量中.....")
+ if self.point == 3:
+ heartrate_bpm_label.clear_flag(lv.obj.FLAG.HIDDEN)
+ heartrate_mmhg_label.clear_flag(lv.obj.FLAG.HIDDEN)
+ heartrate_start_label.add_flag(lv.obj.FLAG.HIDDEN)
+ heartrate_bpm_label.set_text("74 bpm")
+ heartrate_mmhg_label.set_text("110 / 70 mmhg")
+ self.point = 0
+ self.timer.stop()
+
+ def done_return(self):
+ heartrate_bpm_label.add_flag(lv.obj.FLAG.HIDDEN)
+ heartrate_mmhg_label.add_flag(lv.obj.FLAG.HIDDEN)
+ heartrate_start_label.clear_flag(lv.obj.FLAG.HIDDEN)
+ self.timer.stop()
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+ self.timer.stop()
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+ self.timer.stop()
+
+
+
+class ToolboxScreen(Screen):
+ NAME = "toolbox"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = toolbox_screen
+ toolbox_step.add_event_cb(lambda e: self.load_screen(e, {"screen": "step"}), lv.EVENT.CLICKED, None)
+ toolbox_weather.add_event_cb(lambda e: self.load_screen(e, {"screen": "weather"}), lv.EVENT.CLICKED, None)
+ toolbox_alarm.add_event_cb(lambda e: self.load_screen(e, {"screen": "alarm"}), lv.EVENT.CLICKED, None)
+ toolbox_countdown.add_event_cb(lambda e: self.load_screen(e, {"screen": "countdown"}), lv.EVENT.CLICKED, None)
+ toolbox_stopwatch.add_event_cb(lambda e: self.load_screen(e, {"screen": "stopwatch"}), lv.EVENT.CLICKED, None)
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+class SettingScreen(Screen):
+ NAME = "setting"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = setting_screen
+ setting_language.add_event_cb(lambda e: self.load_screen(e, {"screen": "language"}), lv.EVENT.CLICKED, None)
+ setting_dialswitch.add_event_cb(lambda e: self.load_screen(e, {"screen": "dialswitch"}), lv.EVENT.CLICKED, None)
+ setting_themeswitch.add_event_cb(lambda e: self.load_screen(e, {"screen": "themeswitch"}), lv.EVENT.CLICKED, None)
+ setting_imei.add_event_cb(lambda e: self.load_screen(e, {"screen": "imei"}), lv.EVENT.CLICKED, None)
+ setting_app.add_event_cb(lambda e: self.load_screen(e, {"screen": "app"}), lv.EVENT.CLICKED, None)
+ setting_bright.add_event_cb(lambda e: self.load_screen(e, {"screen": "brightness"}), lv.EVENT.CLICKED, None)
+ setting_volume.add_event_cb(lambda e: self.load_screen(e, {"screen": "volume"}), lv.EVENT.CLICKED, None)
+ setting_restore.add_event_cb(lambda e: self.load_screen(e, {"screen": "restore"}), lv.EVENT.CLICKED, None)
+ setting_poweroff.add_event_cb(lambda e: self.load_screen(e, {"screen": "poweroff"}), lv.EVENT.CLICKED, None)
+ setting_update.add_event_cb(lambda e: self.load_screen(e, {"screen": "update"}), lv.EVENT.CLICKED, None)
+ setting_version.add_event_cb(lambda e: self.load_screen(e, {"screen": "version"}), lv.EVENT.CLICKED, None)
+
+ def done_bottom_to_top(self):
+ #上滑添加动画切屏:动画类型,时间,延迟,auto_del
+ EventMesh.publish("load_screen", {"screen": "setting2"})
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+class RestoreScreen(Screen):
+ NAME = "restore"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = restore_screen
+ restore_confirm.add_event_cb(lambda e: self.confirm(e),lv.EVENT.CLICKED, None)
+ restore_cancel.add_event_cb(lambda e: self.concel(e),lv.EVENT.CLICKED, None)
+
+ def confirm(self, e):
+ EventMesh.publish("load_screen", {"screen": "setting"})
+
+ def concel(self, e):
+ EventMesh.publish("load_screen", {"screen": "setting"})
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "setting"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+class UpdateScreen(Screen):
+ NAME = "update"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = update_screen
+ update_return.add_event_cb(lambda e: self.back(e),lv.EVENT.CLICKED, None)
+
+ def back(self,e):
+ EventMesh.publish("load_screen", {"screen": "setting"})
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "setting"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+class VersionScreen(Screen):
+ NAME = "version"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = version_screen
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "setting"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+class PoweroffScreen(Screen):
+ NAME = "poweroff"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = poweroff_screen
+ poweroff_confirm.add_event_cb(lambda e: self.confirm(e),lv.EVENT.CLICKED, None)
+ poweroff_return.add_event_cb(lambda e: self.concel(e),lv.EVENT.CLICKED, None)
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "setting"})
+
+ def confirm(self, e):
+ EventMesh.publish("load_screen", {"screen": "setting"})
+
+ def concel(self, e):
+ EventMesh.publish("load_screen", {"screen": "setting"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+class LanguageScreen(Screen):
+ NAME = "language"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = language_screen
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+class DialswitchScreen(Screen):
+ NAME = "dialswitch"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = dialswitch_screen
+ dialswitch_btn1.add_event_cb(lambda e: self.watchface01(e),
+ lv.EVENT.PRESSED, None)
+
+ dialswitch_btn2.add_event_cb(lambda e: self.watchface02(e),
+ lv.EVENT.PRESSED, None)
+
+ def watchface01(self,e):
+ #watchface2.add_flag(lv.obj.FLAG.HIDDEN)
+ #watchface01.clear_flag(lv.obj.FLAG.HIDDEN)
+ btn1_switch.add_state(lv.STATE.CHECKED)
+ btn2_switch.clear_state(lv.STATE.CHECKED)
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def watchface02(self,e):
+ #watchface01.add_flag(lv.obj.FLAG.HIDDEN)
+ #watchface2.clear_flag(lv.obj.FLAG.HIDDEN)
+ btn1_switch.clear_state(lv.STATE.CHECKED)
+ btn2_switch.add_state(lv.STATE.CHECKED)
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "setting"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+class ThemeswitchScreen(Screen):
+ NAME = "themeswitch"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = menustyle_screen
+ menustyle_btn1.add_event_cb(lambda e: self.fun1(e),
+ lv.EVENT.PRESSED, None)
+
+ menustyle_btn2.add_event_cb(lambda e: self.fun2(e),
+ lv.EVENT.PRESSED, None)
+
+ def fun1(self,e):
+ menu_btn1_switch.add_state(lv.STATE.CHECKED)
+ menu_btn2_switch.clear_state(lv.STATE.CHECKED)
+ EventMesh.publish("change_style", "MainMenu1")
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def fun2(self,e):
+ menu_btn1_switch.clear_state(lv.STATE.CHECKED)
+ menu_btn2_switch.add_state(lv.STATE.CHECKED)
+ EventMesh.publish("change_style", "MainMenu2")
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+class ImeiScreen(Screen):
+ NAME = "imei"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = imei_screen
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "setting"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+class AppScreen(Screen):
+ NAME = "app"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = app_screen
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "setting"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+class BrightnessScreen(Screen):
+ NAME = "brightness"
+
+ def __init__(self):
+ super().__init__()
+ self.level = 0
+ self.meta = brightness_screen
+ brightness_add_imgbtn.add_event_cb(lambda e: self.add_level(e),
+ lv.EVENT.CLICKED, None)
+ brightness_reduce_imgbtn.add_event_cb(lambda e: self.reduce_level(e),
+ lv.EVENT.CLICKED, None)
+
+ def add_level(self, e):
+ EventMesh.publish("push_add_brightness_level")
+ self.level = EventMesh.publish("get_brightness_level")
+ self.show_bar()
+
+ def reduce_level(self, e):
+ EventMesh.publish("push_reduce_brightness_level")
+ self.level = EventMesh.publish("get_brightness_level")
+ self.show_bar()
+
+ def show_bar(self):
+ brightness_bar.set_value((100 // 7) * self.level, lv.ANIM.OFF)
+
+ def initialization(self):
+ self.level = EventMesh.publish("get_brightness_level")
+ self.show_bar()
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "setting"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+class VolumeScreen(Screen):
+ NAME = "volume"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = volume_screen
+ volume_phone_btn.add_event_cb(lambda e: self.load_screen(e, {"screen": "phonering"}), lv.EVENT.CLICKED, None)
+ volume_message_btn.add_event_cb(lambda e: self.load_screen(e, {"screen": "msgvolume"}), lv.EVENT.CLICKED, None)
+ volume_alarm_btn.add_event_cb(lambda e: self.load_screen(e, {"screen": "alarmvolume"}), lv.EVENT.CLICKED, None)
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "setting"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+
+class PhoneringScreen(Screen):
+ NAME = "phonering"
+
+ def __init__(self):
+ super().__init__()
+ self.level = 0
+ self.meta = phonering_screen
+ phonering_add_imgbtn.add_event_cb(lambda e: self.add_level(e),
+ lv.EVENT.CLICKED, None)
+ phonering_reduce_imgbtn.add_event_cb(lambda e: self.reduce_level(e),
+ lv.EVENT.CLICKED, None)
+ phonering_add_imgbtn.set_ext_click_area(20)
+ phonering_reduce_imgbtn.set_ext_click_area(20)
+
+ def add_level(self, e):
+ EventMesh.publish("push_add_phonering_level")
+ self.level = EventMesh.publish("get_phonering_level")
+ self.show_bar()
+
+ def reduce_level(self, e):
+ EventMesh.publish("push_reduce_phonering_level")
+ self.level = EventMesh.publish("get_phonering_level")
+ self.show_bar()
+
+ def show_bar(self):
+ phonering_bar.set_value((100 // 7) * self.level, lv.ANIM.OFF)
+
+ def initialization(self):
+ self.level = EventMesh.publish("get_phonering_level")
+ self.show_bar()
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "volume"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+
+class AlarmvolumeScreen(Screen):
+ NAME = "alarmvolume"
+
+ def __init__(self):
+ super().__init__()
+ self.level = 0
+ self.meta = alarmvolume_screen
+ alarmvolume_add_imgbtn.add_event_cb(lambda e: self.add_level(e),
+ lv.EVENT.CLICKED, None)
+ alarmvolume_reduce_imgbtn.add_event_cb(lambda e: self.reduce_level(e),
+ lv.EVENT.CLICKED, None)
+
+ def add_level(self, e):
+ EventMesh.publish("push_add_alarmvolume_level")
+ self.level = EventMesh.publish("get_alarmvolume_level")
+ self.show_bar()
+
+ def reduce_level(self, e):
+ EventMesh.publish("push_reduce_alarmvolume_level")
+ self.level = EventMesh.publish("get_alarmvolume_level")
+ self.show_bar()
+
+ def show_bar(self):
+ alarmvolume_bar.set_value((100 // 7) * self.level, lv.ANIM.OFF)
+
+ def initialization(self):
+ self.level = EventMesh.publish("get_alarmvolume_level")
+ self.show_bar()
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "volume"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+
+class MsgvolumeScreen(Screen):
+ NAME = "msgvolume"
+
+ def __init__(self):
+ super().__init__()
+ self.level = 0
+ self.meta = msgvolume_screen
+ msgvolume_add_imgbtn.add_event_cb(lambda e: self.add_level(e),
+ lv.EVENT.CLICKED, None)
+ msgvolume_reduce_imgbtn.add_event_cb(lambda e: self.reduce_level(e),
+ lv.EVENT.CLICKED, None)
+
+ def add_level(self, e):
+ EventMesh.publish("push_add_msgvolume_level")
+ self.level = EventMesh.publish("get_msgvolume_level")
+ self.show_bar()
+
+ def reduce_level(self, e):
+ EventMesh.publish("push_reduce_msgvolume_level")
+ self.level = EventMesh.publish("get_msgvolume_level")
+ self.show_bar()
+
+ def show_bar(self):
+ alarmvolume_bar.set_value((100 // 7) * self.level, lv.ANIM.OFF)
+
+ def initialization(self):
+ self.level = EventMesh.publish("get_msgvolume_level")
+ self.show_bar()
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "volume"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+class IncomingCallScreen(Screen):
+ NAME = "incoming_call"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = incoming_call_screen
+ incoming_call_answer.add_event_cb(lambda e: self.answer(e),
+ lv.EVENT.CLICKED, None)
+ incoming_call_hangup.add_event_cb(lambda e: self.hangup(e),
+ lv.EVENT.CLICKED, None)
+
+ def post_processor_after_initialization(self):
+
+ incoming_call_label.set_text(str(self.meta_info))
+
+ def answer(self,e):
+ voiceCall.callAnswer()
+
+ def hangup(self,e):
+ voiceCall.callEnd()
+
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+class OnCallScreen(Screen):
+ NAME = "oncall"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = on_call_screen
+ on_call_hangup.add_event_cb(lambda e: self.hangup(e),
+ lv.EVENT.CLICKED, None)
+
+ def post_processor_after_initialization(self):
+ on_call_label.set_text(str(self.meta_info))
+
+ def hangup(self,e):
+ voiceCall.callEnd()
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+class StepScreen(Screen):
+ NAME = "step"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = step_screen
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "toolbox"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+
+class WeatherScreen(Screen):
+ NAME = "weather"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = weather_screen
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "toolbox"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+class WechatScreen(Screen):
+ NAME = "wechat"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = wechat_screen
+ wechat_press_btn.add_event_cb(lambda e: self.talking(e),
+ lv.EVENT.PRESSING, None)
+ wechat_press_btn.add_event_cb(lambda e: self.sending(e),
+ lv.EVENT.PRESS_LOST, None)
+ self.timer = osTimer()
+ wechat_label.set_text(" ")
+
+ def talking(self,e):
+ wechat_label.set_text("松开发送,上滑取消")
+
+ def sending(self,e):
+ wechat_label.set_text("发送中")
+ self.timer.start(2 * 1000, 0, self.hide_label)
+
+ def hide_label(self,*args):
+ wechat_label.add_flag(lv.obj.FLAG.HIDDEN)
+ # self.make_btn()
+
+ # def make_btn(self):
+ # _btn = lv.btn(alarm)
+ # _btn.set_size(60,50)
+ # _btn.set_pos(, 52*i + 50)
+ # _btn.add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+ # _btn.add_style(style_contact_btn_pressed, lv.PART.MAIN | lv.STATE.PRESSED)
+
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+class StepScreen(Screen):
+ NAME = "step"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = step_screen
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "toolbox"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+CONTACT_FLAG = 0
+class ContactsScreen(Screen):
+ NAME = "contacts"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = contacts_screen
+ self.phonebook = {}
+ self.count = 0
+ self.phone_num = ""
+ self.name = []
+
+ def post_processor_before_initialization(self):
+ check_json = ql_fs.path_exists("/usr/phonebook.json")
+ self.phonebook = EventMesh.publish("get_addr_book_list")
+ if check_json == False:
+ with open("usr/phonebook.json","w",encoding="utf-8") as fd:
+ ujson.dump(self.phonebook,fd)
+ print("创建电话簿")
+ else:
+ with open("usr/phonebook.json","r",encoding="utf-8") as fd:
+ self.phonebook = ujson.load(fd)
+ print("读取电话簿")
+
+ def initialization(self):
+ #读取json文件中的字典放到self.phonebook中
+ global CONTACT_FLAG
+ #创建btn
+ if CONTACT_FLAG == 0:
+ self.btn_create()
+
+ def btn_create(self):
+ #读取json文件中的键作为label文本;
+ global CONTACT_FLAG
+ CONTACT_FLAG = 1
+ for key in self.phonebook.keys():
+
+ contact_btn = lv.btn(contacts)
+ contact_btn.set_size(240,50)
+ contact_btn.set_pos(0,52*self.count )
+ contact_btn.add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+ contact_btn.add_style(style_contact_btn_pressed, lv.PART.MAIN | lv.STATE.PRESSED)
+ contact_btn.add_event_cb(lambda e: self.calling(e),
+ lv.EVENT.PRESSED, None)
+
+ contact_btn_label = lv.label(contact_btn)
+ contact_btn_label.set_text(key)
+ contact_btn_label.align(lv.ALIGN.LEFT_MID, 10, 0)
+ contact_btn_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+ self.count += 1
+
+ def calling(self,e):
+ _msg = e.get_target().get_child(0).get_text()
+ EventMesh.publish("save_phonenum", _msg)
+ self.phone_num = self.phonebook[_msg]
+ print(_msg,self.phone_num,_msg)
+ voiceCall.callStart(self.phone_num)
+ EventMesh.publish("load_screen", {"screen": "dialing"})
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "tilemenu"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+class AlarmScreen(Screen):
+ NAME = "alarm"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = alarm_screen
+ self.count = 2
+
+ def post_processor_after_initialization(self):
+ self.btn_create()
+
+ def btn_create(self):
+ for i in range(self.count):
+
+ _btn = lv.btn(alarm)
+ _btn.set_size(240,50)
+ _btn.set_pos(0, 52*i + 50)
+ _btn.add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+ _btn.add_style(style_contact_btn_pressed, lv.PART.MAIN | lv.STATE.PRESSED)
+
+ _label = lv.label(_btn)
+ _label.set_text("08:00")
+ _label.set_pos(2, 0)
+ _label.set_size(100, 25)
+
+ _label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+ #频率
+ _label2 = lv.label(_btn)
+ _label2.set_pos(2, 25)
+ _label2.set_size(100, 25)
+ _label2.set_text("一 二 三")
+ _label2.set_long_mode(lv.label.LONG.DOT)
+ _label2.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+ #开关
+ _switch = lv.switch(_btn)
+ _switch.set_pos(150, 3)
+ _switch.set_size(50, 25)
+ _switch.set_style_bg_color(lv.color_make(0xff, 0xff, 0xff),lv.PART.MAIN | lv.PART.INDICATOR)
+ _switch.set_style_bg_color(lv.color_make(0xff, 0x00, 0x00),lv.PART.KNOB)
+
+
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "toolbox"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+class TemperatureScreen(Screen):
+ NAME = "temperature"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = temperature_screen
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+class Spo2Screen(Screen):
+ NAME = "spo2"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = spo2_screen
+ self.timer = osTimer()
+ self.point = 0
+
+ def post_processor_after_initialization(self):
+ self.timer.start(1*1000, 1, self.start_measure)
+
+ def start_measure(self,*args):
+ self.point = self.point + 1
+ if self.point == 1:
+ spo2_label.set_text("96 %")
+ spo2_label_1.set_text("测量中")
+
+ if self.point == 2:
+ spo2_label.set_text("97 %")
+ spo2_label_1.set_text("测量中")
+
+ if self.point == 3:
+ spo2_label.set_text("98 %")
+ spo2_label_1.set_text("测量中")
+
+ if self.point == 4:
+ spo2_label.set_text("99 %")
+ spo2_label_1.set_text("测量完成")
+ self.timer.stop()
+ self.point = 0
+
+ def done_return(self):
+ spo2_start_btn.clear_flag(lv.obj.FLAG.HIDDEN)
+ spo2_now_value.add_flag(lv.obj.FLAG.HIDDEN)
+ self.timer.stop()
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+ self.timer.stop()
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+ self.timer.stop()
+
+class CountdownScreen(Screen):
+ NAME = "countdown"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = countdown_screen
+ self.timer = Timer(Timer.Timer1)
+ self.sec = 0
+ self.min = 0
+ self.hour = 0
+ self.total = 0
+ self.flag = 1
+ countdown_sec_up.add_event_cb(lambda e: self.sec_up(e),
+ lv.EVENT.CLICKED, None)
+ countdown_sec_down.add_event_cb(lambda e: self.sec_down(e),
+ lv.EVENT.CLICKED, None)
+ countdown_min_up.add_event_cb(lambda e: self.min_up(e),
+ lv.EVENT.CLICKED, None)
+ countdown_min_down.add_event_cb(lambda e: self.min_down(e),
+ lv.EVENT.CLICKED, None)
+ countdown_hour_up.add_event_cb(lambda e: self.hour_up(e),
+ lv.EVENT.CLICKED, None)
+ countdown_hour_down.add_event_cb(lambda e: self.hour_down(e),
+ lv.EVENT.CLICKED, None)
+ countdown_start_imgbtn.add_event_cb(lambda e: self.start(e),
+ lv.EVENT.CLICKED, None)
+ countdown_reset_imgbtn.add_event_cb(lambda e: self.reset(e),
+ lv.EVENT.CLICKED, None)
+ countdown_stop_imgbtn.add_event_cb(lambda e: self.stop(e),
+ lv.EVENT.CLICKED, None)
+
+ def sec_up(self,e):
+ if self.sec < 59:
+ self.sec = self.sec + 1
+ print("sec_up:",self.sec)
+ self.show_value()
+
+ def sec_down(self,e):
+ if self.sec > 0:
+ self.sec = self.sec - 1
+ print("sec_down:",self.sec)
+ self.show_value()
+
+ def min_up(self,e):
+ if self.min < 59:
+ self.min = self.min + 1
+ print("min_up:",self.min)
+ self.show_value()
+
+ def min_down(self,e):
+ if self.min > 0:
+ self.min = self.min - 1
+ print("min_down:",self.min)
+ self.show_value()
+
+ def hour_up(self,e):
+ if self.hour < 23:
+ self.hour = self.hour + 1
+ print("hour_up:",self.hour)
+ self.show_value()
+
+ def hour_down(self,e):
+ if self.hour > 0:
+ self.hour = self.hour - 1
+ print("hour_down:",self.hour)
+ self.show_value()
+
+ def start(self,e):
+ self.total = self.hour*60*60 + self.min*60 + self.sec
+ print("--00:",self.total,self.hour,self.min,self.sec)
+ self.timer.start(period=1000, mode=self.timer.PERIODIC, callback=self.fun)
+ countdown_stop_imgbtn.clear_flag(lv.obj.FLAG.HIDDEN)
+ countdown_start_imgbtn.add_flag(lv.obj.FLAG.HIDDEN)
+
+ def stop(self,e):
+ print("in stop")
+ countdown_start_imgbtn.clear_flag(lv.obj.FLAG.HIDDEN)
+ countdown_stop_imgbtn.add_flag(lv.obj.FLAG.HIDDEN)
+ self.timer.stop()
+ self.show_value()
+
+ def fun(self,e):
+ self.show_value()
+ self.total = self.total - 1
+ if self.total < 1:
+ self.timer.stop()
+ self.sec = self.sec - 1
+
+ if self.sec < 0:
+ self.sec = 59
+ self.min = self.min -1
+
+
+ def reset(self,e):
+ print("in reset")
+ self.timer.stop()
+ self.hour = 0
+ self.min = 0
+ self.sec = 0
+ self.show_value()
+
+ def show_value(self):
+
+ print(" in show value :",str(self.sec),str(self.min),str(self.hour))
+ countdown_sec.set_text(str(self.sec))
+ countdown_min.set_text(str(self.min))
+ countdown_hour.set_text(str(self.hour))
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "toolbox"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+ self.timer.stop()
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+ self.timer.stop()
+
+
+class StopwatchScreen(Screen):
+ NAME = "stopwatch"
+
+ def __init__(self):
+ super().__init__()
+ self.meta = stopwatch_screen
+ self.ms_value = 0
+ self.sec_value = 0
+ self.min_value = 0
+ self.timer = Timer(Timer.Timer1)
+ stopwatch_start_imgbtn.add_event_cb(lambda e: self.start(e),
+ lv.EVENT.CLICKED, None)
+
+ stopwatch_reset_imgbtn.add_event_cb(lambda e: self.reset(e),
+ lv.EVENT.CLICKED, None)
+ stopwatch_stop_imgbtn.add_event_cb(lambda e: self.paused(e),
+ lv.EVENT.CLICKED, None)
+
+ def start(self, e):
+ #self.timer.start(100, 1, self._fun)
+ self.timer.start(period=100, mode=self.timer.PERIODIC, callback=self._fun)
+ stopwatch_stop_imgbtn.clear_flag(lv.obj.FLAG.HIDDEN)
+ stopwatch_start_imgbtn.add_flag(lv.obj.FLAG.HIDDEN)
+
+
+ def paused(self, e):
+ print("stopwatch pause")
+ stopwatch_start_imgbtn.clear_flag(lv.obj.FLAG.HIDDEN)
+ stopwatch_stop_imgbtn.add_flag(lv.obj.FLAG.HIDDEN)
+ self.timer.stop()
+ self.show_value()
+
+ def reset(self, e):
+ print("stopwatch reset")
+ self.sec_value = 0
+ self.min_value = 0
+ self.ms_value = 0
+ self.timer.stop()
+ self.show_value()
+
+ def _fun(self,e):
+ self.ms_value += 1
+ if self.ms_value > 9:
+ self.ms_value = 0
+ self.sec_value += 1
+ if self.sec_value > 60:
+ self.sec_value = 0
+ self.min_value += 1
+ if self.min_value > 60:
+ self.timer.stop()
+ self.show_value()
+
+ def show_value(self):
+
+ stopwatch_label_ms.set_text(str(self.ms_value))
+ stopwatch_label_sec.set_text(str(self.sec_value))
+ stopwatch_label_min.set_text(str(self.min_value))
+
+ def done_return(self):
+ self.timer.stop()
+ EventMesh.publish("load_screen", {"screen": "toolbox"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+ self.timer.stop()
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+ self.timer.stop()
+
+
+
+
+class UIFINDScreen(Screen):
+ NAME = "FIND"
+ def __init__(self):
+ super().__init__()
+ self.aud = audio.Audio(0)
+ self.aud.set_pa(Pin.GPIO29)
+ self.aud.setVolume(10)
+ self.FIND_timer = osTimer()
+ self.FIND_timer_count = 0
+
+ self.meta = lv.obj()
+ self.meta.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
+ # add style for watchface
+ self.meta.add_style(style_screen, lv.PART.MAIN|lv.STATE.DEFAULT)
+ #进入图片
+ self.watchface_mpsignal_img = lv.img(self.meta)
+ self.watchface_mpsignal_img.set_pos(int(0),int(80))
+ self.watchface_mpsignal_img.set_size(140,140)
+ self.watchface_mpsignal_img.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
+ self.watchface_mpsignal_img.add_flag(lv.obj.FLAG.CLICKABLE)
+ self.watchface_mpsignal_img.set_src("E:/static/time_finish.png")
+ self.watchface_mpsignal_img.add_style(style_screen, lv.PART.MAIN|lv.STATE.DEFAULT)
+
+ def initialization(self):
+ self.FIND_timer.start(3000, 1, self.FIND_timer_cb)
+ self.aud.play(1, 0, 'E:/static/audio_audio_haixiu.mp3') #播放声音
+
+ def post_processor_after_instantiation(self):
+ pass
+ def post_processor_after_initialization(self):
+ pass
+ def FIND_timer_cb(self, *args):
+ self.aud.play(1, 0, 'E:/static/audio_audio_haixiu.mp3')
+ self.FIND_timer_count += 1
+ if self.FIND_timer_count > 40: #120秒
+ self.stop_FIND()
+
+ def stop_FIND(self) :
+ self.FIND_timer.stop()
+ self.aud.stopAll()
+
+ def done_left_to_right(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+ def done_right_to_left(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+ def done_bottom_to_top(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+ def done_top_to_bottom(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+ def done_click(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+
+ def Close(self):
+ self.stop_FIND()
+ pass
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "watchface"})
+
+
+#from usr.ui_WatchFaceScreen import WatchFaceScreen
+class UI(object):
+ def __init__(self, lcd_gpio):
+ #self.screen = WatchFaceScreen()
+ #self.screen_old = self.screen
+ self.screen = None
+ self.screen_old = None
+ self.screen_list = []
+ self.lv = lv
+ self.lcd_gpio = lcd_gpio
+ self.system_sleep_timer = osTimer()
+ self.system_sleep_timer_count = 0
+ self.main_flag = 0
+ self.sleep_flag = 1
+
+ def post_processor_after_instantiation(self):
+ EventMesh.subscribe("load_screen", self.load_screen)
+ EventMesh.subscribe("load_screen_anim", self.load_screen_anim)
+ EventMesh.subscribe("load_screen_animtop", self.load_screen_animtop)
+
+ EventMesh.subscribe("btn1_press", self.btn_press)
+ EventMesh.subscribe("btn8_press", self.btn_press)
+ EventMesh.subscribe("btn8_long_press", self.btn_press)
+
+ EventMesh.subscribe("btn1_release", self.btn_release)
+
+ EventMesh.subscribe("done_left_to_right", self.ui_press)
+ EventMesh.subscribe("done_right_to_left", self.ui_press)
+ EventMesh.subscribe("done_bottom_to_top", self.ui_press)
+ EventMesh.subscribe("done_top_to_bottom", self.ui_press)
+ EventMesh.subscribe("done_return", self.ui_press)
+ EventMesh.subscribe("done_click", self.ui_press)
+ EventMesh.subscribe("done_error", self.ui_press)
+ EventMesh.subscribe("call_in", self.publish_call_in)
+
+
+ #EventMesh.subscribe("call_in", self.publish_call_in)
+ #EventMesh.subscribe("set_bg_img", self.set_bg_img)
+
+ EventMesh.subscribe(constants.EVENT.SYSTEM_SLEEP, self.system_sleep)
+ EventMesh.subscribe(constants.EVENT.SYSTEM_UP, self.system_up)
+ self.system_sleep_timer.start(1000, 1, self.system_sleep_timer_cb)
+
+ for screen in self.screen_list:
+ screen.post_processor_after_instantiation()
+
+ def ui_press(self, event, key):
+ self.system_sleep_timeout_rest()
+ print("ui press {}".format(event))
+ if event == "done_left_to_right":
+ self.screen.done_left_to_right()
+ if event == "done_right_to_left":
+ self.screen.done_right_to_left()
+ if event == "done_bottom_to_top":
+ self.screen.done_bottom_to_top()
+ if event == "done_top_to_bottom":
+ self.screen.done_top_to_bottom()
+ if event == "done_return":
+ self.screen.done_return()
+ if event == "done_click":
+ self.screen.done_click()
+ def btn_press(self, event, key):
+ print("btn_press: {}".format(event))
+ #主表盘按电源键,息屏
+ if event == "btn8_press" and self.main_flag == 1:
+ if self.sleep_flag == 1 :
+ self.__lcd_off()
+ return
+ #息屏状态按按钮都亮屏
+
+ self.__lcd_on()
+
+ # if event == "btn1_press":
+ # self.screen.btn1_press()
+
+ if event == "btn8_press":
+ self.screen.btn8_press()
+ if event == "btn8_long_press":
+ Power.powerDown()
+
+ def btn_release(self, event, msg):
+ print("btn_release: {}".format(event))
+ if event == "btn1_release":
+ self.screen.btn1_release()
+
+ def __lcd_state(self):
+ return self.lcd_gpio.read()
+
+ def __lcd_on(self):
+ print("__lcd_on")
+ if self.sleep_flag == 0 :
+ self.sleep_flag = 1
+ self.system_sleep_timeout_rest()
+ gpio_backlight.write(1)
+ #lcd_ctrl.write(1)
+ #utime.sleep(10)
+ tp_cst816.resume()
+ lcd.lcd_display_on()
+ lv.autoSleep(0)
+ pm.autosleep(0)
+
+ def publish_call_in(self, event, msg):
+ EventMesh.publish("load_screen", {"screen": "dialing", "meta": msg})
+
+ def __lcd_off(self):
+ print("__lcd_off")
+ if self.sleep_flag == 1 :
+ self.sleep_flag = 0
+ gpio_backlight.write(0)
+ #lcd_ctrl.write(0)
+ #utime.sleep(10)
+ tp_cst816.suspend()
+ lcd.lcd_display_off()
+ lv.autoSleep(1)
+ pm.autosleep(1)
+
+ def system_sleep(self, event, msg) :
+ self.__lcd_off()
+
+ def system_up(self, event, msg):
+ self.__lcd_on()
+
+ def system_sleep_timer_cb(self, *args):
+ self.system_sleep_timer_count += 1
+ if self.system_sleep_timer_count > 50 :
+ self.system_sleep_timer_count = 0
+ #print("__lcd_state")
+ #if self.sleep_flag == 1: # 未息屏状态,熄灭屏幕
+ self.__lcd_off()
+
+ def system_sleep_timeout_rest(self) :
+ #print("system_sleep_timeout_rest")
+ self.system_sleep_timer_count = 0
+
+ def start(self):
+ self.post_processor_after_instantiation()
+
+ def add_screen(self, screen):
+ self.screen_list.append(screen)
+ return self
+
+
+ def load_screen(self, topic, msg):
+ print("msg={}".format(msg))
+ for scr in self.screen_list:
+ if scr.NAME == msg["screen"]:
+ # 每次屏幕切换开始息屏倒计时
+ self.__lcd_on()
+ if scr.NAME == 'watchface':
+ self.main_flag = 1
+ else :
+ self.main_flag = 0
+ self.screen = scr
+ if self.screen_old != None :
+ self.screen_old.Close() #先关闭上一次界面
+ self.lv.img.cache_invalidate_src(None) #清img cache
+ self.lv.img.cache_set_size(16) #开img cache
+ self.screen_old = self.screen
+ if msg.get("meta"):
+ self.screen.meta_info = msg.get("meta")
+ self.screen.post_processor_before_initialization()
+ self.screen.initialization()
+
+ print("load_screen.load()")
+ self.screen.load()
+ self.lv.scr_load(self.screen.get_meta())
+ self.screen.post_processor_after_initialization()
+
+ def load_screen_anim(self, topic, msg):
+ print("msg={}".format(msg))
+ for scr in self.screen_list:
+ if scr.NAME == msg["screen"]:
+ # 每次屏幕切换开始息屏倒计时
+ self.__lcd_on()
+ if scr.NAME == 'watchface':
+ self.main_flag = 1
+ else :
+ self.main_flag = 0
+ self.screen = scr
+ if self.screen_old != None :
+ self.screen_old.Close() #先关闭上一次界面
+ self.screen_old = self.screen
+ if msg.get("meta"):
+ self.screen.meta_info = msg.get("meta")
+ self.screen.post_processor_before_initialization()
+ self.screen.initialization()
+
+ print("load_screen.load()")
+ print("**************")
+ self.screen.load()
+ self.lv.scr_load_anim(self.screen.get_meta(),lv.SCR_LOAD_ANIM.MOVE_BOTTOM,100,0,0)
+ self.screen.post_processor_after_initialization()
+
+ def load_screen_animtop(self, topic, msg):
+ print("msg={}".format(msg))
+ for scr in self.screen_list:
+ if scr.NAME == msg["screen"]:
+ # 每次屏幕切换开始息屏倒计时
+ self.__lcd_on()
+ if scr.NAME == 'watchface':
+ self.main_flag = 1
+ else :
+ self.main_flag = 0
+ self.screen = scr
+ if self.screen_old != None :
+ self.screen_old.Close() #先关闭上一次界面
+ self.screen_old = self.screen
+ if msg.get("meta"):
+ self.screen.meta_info = msg.get("meta")
+ self.screen.post_processor_before_initialization()
+ self.screen.initialization()
+
+ print("load_screen.load()")
+ print("**************")
+ self.screen.load()
+ self.lv.scr_load_anim(self.screen.get_meta(),lv.SCR_LOAD_ANIM.MOVE_TOP,100,0,0)
+ self.screen.post_processor_after_initialization()
+
+
+