Fix Websocket extended length

This commit is contained in:
2025-09-06 11:25:55 -04:00
parent 878dcf7355
commit 8e265c2b8f
3 changed files with 320 additions and 312 deletions
+314 -307
View File
@@ -1173,116 +1173,80 @@ static const unsigned char data_index_html[] = {
0x64, 0x6f, 0x77, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x2e, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d,
0x65, 0x20, 0x2b, 0x20, 0x22, 0x3a, 0x38, 0x30, 0x38, 0x30,
0x2f, 0x22, 0x29, 0x3b, 0xa, 0x9, 0x9, 0x73, 0x65, 0x74,
0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, 0x20, 0x66,
0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x29,
0x20, 0x7b, 0x20, 0x73, 0x65, 0x6e, 0x64, 0x4b, 0x65, 0x79,
0x73, 0x28, 0x63, 0x75, 0x72, 0x4b, 0x65, 0x79, 0x73, 0x2c,
0x20, 0x69, 0x73, 0x5f, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x29,
0x3b, 0x20, 0x7d, 0x2c, 0x20, 0x31, 0x30, 0x29, 0x3b, 0xa,
0x9, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0xa,
0x9, 0x9, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f,
0x75, 0x74, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x20, 0x28, 0x29, 0x20, 0x7b, 0x20, 0x73, 0x65,
0x6e, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x28, 0x63, 0x75, 0x72,
0x4b, 0x65, 0x79, 0x73, 0x2c, 0x20, 0x69, 0x73, 0x5f, 0x6d,
0x6f, 0x75, 0x73, 0x65, 0x29, 0x3b, 0x20, 0x7d, 0x2c, 0x20,
0x31, 0x30, 0x29, 0x3b, 0xa, 0x9, 0x7d, 0xa, 0x7d, 0xa,
0xa, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20,
0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73,
0x28, 0x64, 0x69, 0x76, 0x5f, 0x69, 0x64, 0x2c, 0x20, 0x6b,
0x65, 0x79, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x29, 0x20, 0x7b,
0xa, 0x9, 0x6c, 0x65, 0x74, 0x20, 0x6b, 0x65, 0x79, 0x62,
0x6f, 0x61, 0x72, 0x64, 0x44, 0x69, 0x76, 0x20, 0x3d, 0x20,
0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67,
0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42,
0x79, 0x49, 0x64, 0x28, 0x64, 0x69, 0x76, 0x5f, 0x69, 0x64,
0x29, 0x3b, 0xa, 0x9, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x6c,
0x65, 0x74, 0x20, 0x72, 0x6f, 0x77, 0x20, 0x6f, 0x66, 0x20,
0x6b, 0x65, 0x79, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x29, 0x20,
0x7b, 0xa, 0x9, 0x9, 0x6c, 0x65, 0x74, 0x20, 0x6e, 0x65,
0x77, 0x52, 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x63,
0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x63, 0x72, 0x65, 0x61,
0x74, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x28,
0x22, 0x64, 0x69, 0x76, 0x22, 0x29, 0x3b, 0xa, 0x9, 0x9,
0x6b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x44, 0x69,
0x76, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x43, 0x68,
0x69, 0x6c, 0x64, 0x28, 0x6e, 0x65, 0x77, 0x52, 0x6f, 0x77,
0x29, 0x3b, 0xa, 0x9, 0x9, 0x66, 0x6f, 0x72, 0x20, 0x28,
0x6c, 0x65, 0x74, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x6f, 0x66,
0x20, 0x72, 0x6f, 0x77, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x9,
0x9, 0x6c, 0x65, 0x74, 0x20, 0x6e, 0x65, 0x77, 0x44, 0x69,
0x76, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65,
0x2f, 0x22, 0x29, 0x3b, 0xa, 0x9, 0x9, 0x73, 0x6f, 0x63,
0x6b, 0x65, 0x74, 0x2e, 0x6f, 0x6e, 0x6d, 0x65, 0x73, 0x73,
0x61, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x65, 0x76, 0x65, 0x6e,
0x74, 0x29, 0x20, 0x7b, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74,
0x65, 0x4c, 0x45, 0x44, 0x73, 0x28, 0x65, 0x76, 0x65, 0x6e,
0x74, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x29, 0x3b, 0x20, 0x7d,
0x3b, 0xa, 0x9, 0x9, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d,
0x65, 0x6f, 0x75, 0x74, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x29, 0x20, 0x7b, 0x20,
0x73, 0x65, 0x6e, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x28, 0x63,
0x75, 0x72, 0x4b, 0x65, 0x79, 0x73, 0x2c, 0x20, 0x69, 0x73,
0x5f, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x29, 0x3b, 0x20, 0x7d,
0x2c, 0x20, 0x31, 0x30, 0x29, 0x3b, 0xa, 0x9, 0x7d, 0x20,
0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0xa, 0x9, 0x9, 0x73,
0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28,
0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20,
0x28, 0x29, 0x20, 0x7b, 0x20, 0x73, 0x65, 0x6e, 0x64, 0x4b,
0x65, 0x79, 0x73, 0x28, 0x63, 0x75, 0x72, 0x4b, 0x65, 0x79,
0x73, 0x2c, 0x20, 0x69, 0x73, 0x5f, 0x6d, 0x6f, 0x75, 0x73,
0x65, 0x29, 0x3b, 0x20, 0x7d, 0x2c, 0x20, 0x31, 0x30, 0x29,
0x3b, 0xa, 0x9, 0x7d, 0xa, 0x7d, 0xa, 0xa, 0x66, 0x75,
0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x72, 0x65,
0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x28, 0x64, 0x69,
0x76, 0x5f, 0x69, 0x64, 0x2c, 0x20, 0x6b, 0x65, 0x79, 0x5f,
0x6c, 0x69, 0x73, 0x74, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x6c,
0x65, 0x74, 0x20, 0x6b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72,
0x64, 0x44, 0x69, 0x76, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x63,
0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x45,
0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x64,
0x28, 0x64, 0x69, 0x76, 0x5f, 0x69, 0x64, 0x29, 0x3b, 0xa,
0x9, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x6c, 0x65, 0x74, 0x20,
0x72, 0x6f, 0x77, 0x20, 0x6f, 0x66, 0x20, 0x6b, 0x65, 0x79,
0x5f, 0x6c, 0x69, 0x73, 0x74, 0x29, 0x20, 0x7b, 0xa, 0x9,
0x9, 0x6c, 0x65, 0x74, 0x20, 0x6e, 0x65, 0x77, 0x52, 0x6f,
0x77, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65,
0x6e, 0x74, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45,
0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x28, 0x22, 0x64, 0x69,
0x76, 0x22, 0x29, 0x3b, 0xa, 0x9, 0x9, 0x9, 0x69, 0x66,
0x20, 0x28, 0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x29, 0x20,
0x7b, 0xa, 0x9, 0x9, 0x9, 0x9, 0x6e, 0x65, 0x77, 0x44,
0x69, 0x76, 0x2e, 0x69, 0x64, 0x20, 0x3d, 0x20, 0x6b, 0x65,
0x79, 0x2e, 0x69, 0x64, 0x3b, 0xa, 0x9, 0x9, 0x9, 0x9,
0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x2e, 0x69, 0x6e, 0x6e,
0x65, 0x72, 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x3d, 0x20, 0x6b,
0x65, 0x79, 0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x3b, 0xa,
0x76, 0x22, 0x29, 0x3b, 0xa, 0x9, 0x9, 0x6b, 0x65, 0x79,
0x62, 0x6f, 0x61, 0x72, 0x64, 0x44, 0x69, 0x76, 0x2e, 0x61,
0x70, 0x70, 0x65, 0x6e, 0x64, 0x43, 0x68, 0x69, 0x6c, 0x64,
0x28, 0x6e, 0x65, 0x77, 0x52, 0x6f, 0x77, 0x29, 0x3b, 0xa,
0x9, 0x9, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x6c, 0x65, 0x74,
0x20, 0x6b, 0x65, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x6f,
0x77, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x9, 0x9, 0x6c, 0x65,
0x74, 0x20, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x20, 0x3d,
0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6c, 0x65, 0x6d,
0x65, 0x6e, 0x74, 0x28, 0x22, 0x64, 0x69, 0x76, 0x22, 0x29,
0x3b, 0xa, 0x9, 0x9, 0x9, 0x69, 0x66, 0x20, 0x28, 0x6b,
0x65, 0x79, 0x2e, 0x69, 0x64, 0x29, 0x20, 0x7b, 0xa, 0x9,
0x9, 0x9, 0x9, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x2e,
0x69, 0x64, 0x20, 0x3d, 0x20, 0x6b, 0x65, 0x79, 0x2e, 0x69,
0x64, 0x3b, 0xa, 0x9, 0x9, 0x9, 0x9, 0x6e, 0x65, 0x77,
0x44, 0x69, 0x76, 0x2e, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x48,
0x54, 0x4d, 0x4c, 0x20, 0x3d, 0x20, 0x6b, 0x65, 0x79, 0x2e,
0x6c, 0x61, 0x62, 0x65, 0x6c, 0x3b, 0xa, 0x9, 0x9, 0x9,
0x9, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x2e, 0x63, 0x6c,
0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20,
0x22, 0x6b, 0x65, 0x79, 0x22, 0x3b, 0xa, 0x9, 0x9, 0x9,
0x9, 0x69, 0x66, 0x20, 0x28, 0x6b, 0x65, 0x79, 0x2e, 0x72,
0x65, 0x70, 0x65, 0x61, 0x74, 0x29, 0x20, 0x7b, 0xa, 0x9,
0x9, 0x9, 0x9, 0x9, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76,
0x2e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65,
0x20, 0x3d, 0x20, 0x22, 0x6b, 0x65, 0x79, 0x22, 0x3b, 0xa,
0x9, 0x9, 0x9, 0x9, 0x69, 0x66, 0x20, 0x28, 0x6b, 0x65,
0x79, 0x2e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x29, 0x20,
0x7b, 0xa, 0x9, 0x9, 0x9, 0x9, 0x9, 0x6e, 0x65, 0x77,
0x44, 0x69, 0x76, 0x2e, 0x61, 0x64, 0x64, 0x45, 0x76, 0x65,
0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72,
0x28, 0x22, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x73, 0x74, 0x61,
0x72, 0x74, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x20, 0x28, 0x65, 0x76, 0x65, 0x6e, 0x74,
0x29, 0x20, 0x7b, 0xa, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9,
0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x65, 0x76,
0x65, 0x6e, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
0x28, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x65, 0x73, 0x73, 0x4b,
0x65, 0x79, 0x28, 0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x2c,
0x20, 0x74, 0x72, 0x75, 0x65, 0x29, 0x3b, 0x20, 0x7d, 0x29,
0x3b, 0xa, 0x9, 0x9, 0x9, 0x9, 0x9, 0x6e, 0x65, 0x77,
0x44, 0x69, 0x76, 0x2e, 0x61, 0x64, 0x64, 0x45, 0x76, 0x65,
0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72,
0x28, 0x22, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x6e, 0x64,
0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x20, 0x28, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x29, 0x20,
0x7b, 0xa, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x65, 0x76,
0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e,
0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x28, 0x29,
0x3b, 0x20, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4b,
0x65, 0x79, 0x28, 0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x2c,
0x20, 0x74, 0x72, 0x75, 0x65, 0x29, 0x3b, 0x20, 0x7d, 0x29,
0x3b, 0xa, 0x9, 0x9, 0x9, 0x9, 0x9, 0x6e, 0x65, 0x77,
0x44, 0x69, 0x76, 0x2e, 0x61, 0x64, 0x64, 0x45, 0x76, 0x65,
0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72,
0x28, 0x22, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x64, 0x6f, 0x77,
0x6e, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x20, 0x28, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x9,
0x9, 0x9, 0x9, 0x9, 0x70, 0x72, 0x65, 0x73, 0x73, 0x4b,
0x65, 0x79, 0x28, 0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x2c,
0x20, 0x74, 0x72, 0x75, 0x65, 0x29, 0x3b, 0x20, 0x7d, 0x29,
0x3b, 0xa, 0x9, 0x9, 0x9, 0x9, 0x9, 0x6e, 0x65, 0x77,
0x44, 0x69, 0x76, 0x2e, 0x61, 0x64, 0x64, 0x45, 0x76, 0x65,
0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72,
0x28, 0x22, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x75, 0x70, 0x22,
0x2e, 0x61, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c,
0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x22, 0x74,
0x6f, 0x75, 0x63, 0x68, 0x73, 0x74, 0x61, 0x72, 0x74, 0x22,
0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x20, 0x28, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x9, 0x9, 0x9,
0x9, 0x9, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4b,
0x65, 0x79, 0x28, 0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x2c,
0x20, 0x74, 0x72, 0x75, 0x65, 0x29, 0x3b, 0x20, 0x7d, 0x29,
0x3b, 0xa, 0x9, 0x9, 0x9, 0x9, 0x7d, 0x20, 0x65, 0x6c,
0x73, 0x65, 0x20, 0x7b, 0xa, 0x9, 0x9, 0x9, 0x9, 0x9,
0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x2e, 0x61, 0x64, 0x64,
0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65,
0x6e, 0x65, 0x72, 0x28, 0x22, 0x74, 0x6f, 0x75, 0x63, 0x68,
0x73, 0x74, 0x61, 0x72, 0x74, 0x22, 0x2c, 0x20, 0x66, 0x75,
0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x65, 0x76,
0x65, 0x6e, 0x74, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x9, 0x9,
0x9, 0x9, 0x9, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70,
0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x66, 0x61,
0x75, 0x6c, 0x74, 0x28, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x65,
0x73, 0x73, 0x4b, 0x65, 0x79, 0x28, 0x6b, 0x65, 0x79, 0x2e,
0x69, 0x64, 0x29, 0x3b, 0x20, 0x7d, 0x29, 0x3b, 0xa, 0x9,
0x20, 0x28, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x29, 0x20, 0x7b,
0xa, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x65, 0x76, 0x65,
0x6e, 0x74, 0x2e, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74,
0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x28, 0x29, 0x3b,
0x20, 0x70, 0x72, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x28,
0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x2c, 0x20, 0x74, 0x72,
0x75, 0x65, 0x29, 0x3b, 0x20, 0x7d, 0x29, 0x3b, 0xa, 0x9,
0x9, 0x9, 0x9, 0x9, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76,
0x2e, 0x61, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c,
0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x22, 0x74,
@@ -1293,219 +1257,262 @@ static const unsigned char data_index_html[] = {
0x2e, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x65,
0x66, 0x61, 0x75, 0x6c, 0x74, 0x28, 0x29, 0x3b, 0x20, 0x72,
0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4b, 0x65, 0x79, 0x28,
0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x29, 0x3b, 0x20, 0x7d,
0x29, 0x3b, 0xa, 0x9, 0x9, 0x9, 0x9, 0x9, 0x6e, 0x65,
0x77, 0x44, 0x69, 0x76, 0x2e, 0x61, 0x64, 0x64, 0x45, 0x76,
0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65,
0x72, 0x28, 0x22, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x64, 0x6f,
0x77, 0x6e, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x20, 0x28, 0x29, 0x20, 0x7b, 0xa, 0x9,
0x9, 0x9, 0x9, 0x9, 0x9, 0x70, 0x72, 0x65, 0x73, 0x73,
0x4b, 0x65, 0x79, 0x28, 0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64,
0x29, 0x3b, 0x20, 0x7d, 0x29, 0x3b, 0xa, 0x9, 0x9, 0x9,
0x9, 0x9, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x2e, 0x61,
0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73,
0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x22, 0x6d, 0x6f, 0x75,
0x73, 0x65, 0x75, 0x70, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x29, 0x20, 0x7b,
0xa, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x72, 0x65, 0x6c,
0x65, 0x61, 0x73, 0x65, 0x4b, 0x65, 0x79, 0x28, 0x6b, 0x65,
0x79, 0x2e, 0x69, 0x64, 0x29, 0x3b, 0x20, 0x7d, 0x29, 0x3b,
0xa, 0x9, 0x9, 0x9, 0x9, 0x7d, 0xa, 0x9, 0x9, 0x9,
0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0xa, 0x9,
0x9, 0x9, 0x9, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x2e,
0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x20,
0x3d, 0x20, 0x22, 0x6b, 0x65, 0x79, 0x20, 0x62, 0x6c, 0x61,
0x6e, 0x6b, 0x22, 0x3b, 0xa, 0x9, 0x9, 0x9, 0x7d, 0xa,
0x9, 0x9, 0x9, 0x6e, 0x65, 0x77, 0x52, 0x6f, 0x77, 0x2e,
0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x43, 0x68, 0x69, 0x6c,
0x64, 0x28, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x29, 0x3b,
0xa, 0x9, 0x9, 0x9, 0x69, 0x66, 0x20, 0x28, 0x6b, 0x65,
0x79, 0x2e, 0x77, 0x69, 0x64, 0x74, 0x68, 0x29, 0x20, 0x7b,
0xa, 0x9, 0x9, 0x9, 0x9, 0x6e, 0x65, 0x77, 0x44, 0x69,
0x76, 0x2e, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x20, 0x3d, 0x20,
0x22, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x22, 0x20, 0x2b,
0x20, 0x28, 0x6b, 0x65, 0x79, 0x2e, 0x77, 0x69, 0x64, 0x74,
0x68, 0x2a, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x2e, 0x63,
0x6c, 0x69, 0x65, 0x6e, 0x74, 0x57, 0x69, 0x64, 0x74, 0x68,
0x20, 0x29, 0x20, 0x2b, 0x20, 0x22, 0x70, 0x78, 0x3b, 0x22,
0x3b, 0xa, 0x9, 0x9, 0x9, 0x7d, 0xa, 0x9, 0x9, 0x9,
0x69, 0x66, 0x20, 0x28, 0x6b, 0x65, 0x79, 0x2e, 0x68, 0x65,
0x69, 0x67, 0x68, 0x74, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x9,
0x9, 0x9, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x2e, 0x73,
0x74, 0x79, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x22, 0x68, 0x65,
0x69, 0x67, 0x68, 0x74, 0x3a, 0x22, 0x20, 0x2b, 0x20, 0x28,
0x6b, 0x65, 0x79, 0x2e, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
0x2a, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x2e, 0x63, 0x6c,
0x69, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74,
0x20, 0x29, 0x20, 0x2b, 0x20, 0x22, 0x70, 0x78, 0x3b, 0x20,
0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x20, 0x72, 0x69, 0x67,
0x68, 0x74, 0x3b, 0x22, 0x3b, 0xa, 0x9, 0x9, 0x9, 0x7d,
0xa, 0x9, 0x9, 0x7d, 0xa, 0x9, 0x7d, 0xa, 0x7d, 0xa,
0xa, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20,
0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x72,
0x6f, 0x73, 0x28, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x5f, 0x69,
0x64, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x6c, 0x65, 0x74, 0x20,
0x6d, 0x61, 0x63, 0x72, 0x6f, 0x44, 0x69, 0x76, 0x20, 0x3d,
0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74,
0x42, 0x79, 0x49, 0x64, 0x28, 0x6d, 0x61, 0x63, 0x72, 0x6f,
0x5f, 0x69, 0x64, 0x29, 0x3b, 0xa, 0x9, 0x66, 0x6f, 0x72,
0x20, 0x28, 0x6c, 0x65, 0x74, 0x20, 0x6d, 0x61, 0x63, 0x72,
0x6f, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x61, 0x63, 0x72, 0x6f,
0x5f, 0x6c, 0x69, 0x73, 0x74, 0x29, 0x20, 0x7b, 0xa, 0x9,
0x9, 0x6c, 0x65, 0x74, 0x20, 0x6e, 0x65, 0x77, 0x44, 0x69,
0x76, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65,
0x6e, 0x74, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45,
0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x28, 0x22, 0x64, 0x69,
0x76, 0x22, 0x29, 0x3b, 0xa, 0x9, 0x9, 0x6e, 0x65, 0x77,
0x44, 0x69, 0x76, 0x2e, 0x69, 0x64, 0x20, 0x3d, 0x20, 0x6d,
0x61, 0x63, 0x72, 0x6f, 0x2e, 0x69, 0x64, 0x3b, 0xa, 0x9,
0x9, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x2e, 0x74, 0x65,
0x78, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x20,
0x3d, 0x20, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x2e, 0x6c, 0x61,
0x62, 0x65, 0x6c, 0x3b, 0xa, 0x9, 0x9, 0x6e, 0x65, 0x77,
0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x2c, 0x20, 0x74, 0x72,
0x75, 0x65, 0x29, 0x3b, 0x20, 0x7d, 0x29, 0x3b, 0xa, 0x9,
0x9, 0x9, 0x9, 0x9, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76,
0x2e, 0x61, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c,
0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x22, 0x6d,
0x6f, 0x75, 0x73, 0x65, 0x64, 0x6f, 0x77, 0x6e, 0x22, 0x2c,
0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20,
0x28, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x9, 0x9, 0x9, 0x9,
0x9, 0x70, 0x72, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x28,
0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x2c, 0x20, 0x74, 0x72,
0x75, 0x65, 0x29, 0x3b, 0x20, 0x7d, 0x29, 0x3b, 0xa, 0x9,
0x9, 0x9, 0x9, 0x9, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76,
0x2e, 0x61, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c,
0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x22, 0x6d,
0x6f, 0x75, 0x73, 0x65, 0x75, 0x70, 0x22, 0x2c, 0x20, 0x66,
0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x29,
0x20, 0x7b, 0xa, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x72,
0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4b, 0x65, 0x79, 0x28,
0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x2c, 0x20, 0x74, 0x72,
0x75, 0x65, 0x29, 0x3b, 0x20, 0x7d, 0x29, 0x3b, 0xa, 0x9,
0x9, 0x9, 0x9, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20,
0x7b, 0xa, 0x9, 0x9, 0x9, 0x9, 0x9, 0x6e, 0x65, 0x77,
0x44, 0x69, 0x76, 0x2e, 0x61, 0x64, 0x64, 0x45, 0x76, 0x65,
0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72,
0x28, 0x22, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x73, 0x74, 0x61,
0x72, 0x74, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x20, 0x28, 0x65, 0x76, 0x65, 0x6e, 0x74,
0x29, 0x20, 0x7b, 0xa, 0x9, 0x9, 0x9, 0x65, 0x76, 0x65,
0x6e, 0x74, 0x2e, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74,
0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x28, 0x29, 0x3b,
0x20, 0x73, 0x65, 0x6e, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x28,
0x6d, 0x61, 0x63, 0x72, 0x6f, 0x2e, 0x6b, 0x65, 0x79, 0x73,
0x29, 0x3b, 0x20, 0x7d, 0x29, 0x3b, 0xa, 0x9, 0x9, 0x6e,
0x29, 0x20, 0x7b, 0xa, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9,
0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x65, 0x76,
0x65, 0x6e, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
0x28, 0x29, 0x3b, 0x20, 0x70, 0x72, 0x65, 0x73, 0x73, 0x4b,
0x65, 0x79, 0x28, 0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x29,
0x3b, 0x20, 0x7d, 0x29, 0x3b, 0xa, 0x9, 0x9, 0x9, 0x9,
0x9, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x2e, 0x61, 0x64,
0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74,
0x65, 0x6e, 0x65, 0x72, 0x28, 0x22, 0x74, 0x6f, 0x75, 0x63,
0x68, 0x65, 0x6e, 0x64, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x65, 0x76, 0x65,
0x6e, 0x74, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x9, 0x9, 0x9,
0x9, 0x9, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72,
0x65, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75,
0x6c, 0x74, 0x28, 0x29, 0x3b, 0x20, 0x72, 0x65, 0x6c, 0x65,
0x61, 0x73, 0x65, 0x4b, 0x65, 0x79, 0x28, 0x6b, 0x65, 0x79,
0x2e, 0x69, 0x64, 0x29, 0x3b, 0x20, 0x7d, 0x29, 0x3b, 0xa,
0x9, 0x9, 0x9, 0x9, 0x9, 0x6e, 0x65, 0x77, 0x44, 0x69,
0x76, 0x2e, 0x61, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74,
0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x22,
0x6d, 0x6f, 0x75, 0x73, 0x65, 0x64, 0x6f, 0x77, 0x6e, 0x22,
0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x20, 0x28, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x9, 0x9, 0x9,
0x9, 0x9, 0x70, 0x72, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79,
0x28, 0x6b, 0x65, 0x79, 0x2e, 0x69, 0x64, 0x29, 0x3b, 0x20,
0x7d, 0x29, 0x3b, 0xa, 0x9, 0x9, 0x9, 0x9, 0x9, 0x6e,
0x65, 0x77, 0x44, 0x69, 0x76, 0x2e, 0x61, 0x64, 0x64, 0x45,
0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e,
0x65, 0x72, 0x28, 0x22, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x65,
0x6e, 0x64, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x20, 0x28, 0x65, 0x76, 0x65, 0x6e, 0x74,
0x29, 0x20, 0x7b, 0xa, 0x9, 0x9, 0x9, 0x65, 0x76, 0x65,
0x6e, 0x74, 0x2e, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74,
0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x28, 0x29, 0x3b,
0x20, 0x73, 0x65, 0x6e, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x28,
0x5b, 0x5d, 0x29, 0x3b, 0x3b, 0x20, 0x7d, 0x29, 0x3b, 0xa,
0x9, 0x9, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x2e, 0x61,
0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73,
0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x22, 0x6d, 0x6f, 0x75,
0x73, 0x65, 0x64, 0x6f, 0x77, 0x6e, 0x22, 0x2c, 0x20, 0x66,
0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x29,
0x20, 0x7b, 0xa, 0x9, 0x9, 0x9, 0x73, 0x65, 0x6e, 0x64,
0x4b, 0x65, 0x79, 0x73, 0x28, 0x6d, 0x61, 0x63, 0x72, 0x6f,
0x2e, 0x6b, 0x65, 0x79, 0x73, 0x29, 0x3b, 0x20, 0x7d, 0x29,
0x3b, 0xa, 0x9, 0x9, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76,
0x2e, 0x61, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c,
0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x22, 0x6d,
0x6f, 0x75, 0x73, 0x65, 0x75, 0x70, 0x22, 0x2c, 0x20, 0x66,
0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x29,
0x20, 0x7b, 0xa, 0x9, 0x9, 0x9, 0x73, 0x65, 0x6e, 0x64,
0x4b, 0x65, 0x79, 0x73, 0x28, 0x5b, 0x5d, 0x29, 0x3b, 0x20,
0x7d, 0x29, 0x3b, 0xa, 0x9, 0x9, 0x6d, 0x61, 0x63, 0x72,
0x6f, 0x44, 0x69, 0x76, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e,
0x64, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x28, 0x6e, 0x65, 0x77,
0x44, 0x69, 0x76, 0x29, 0x3b, 0xa, 0x9, 0x7d, 0xa, 0x7d,
0xa, 0xa, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64,
0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x28, 0x69, 0x6e,
0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64,
0x29, 0x20, 0x7b, 0xa, 0x9, 0x6c, 0x65, 0x74, 0x20, 0x69,
0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x69,
0x76, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65,
0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d,
0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x64, 0x28, 0x69, 0x6e,
0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64,
0x29, 0x3b, 0xa, 0x9, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x6c,
0x65, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74,
0x6f, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x6e, 0x64, 0x69,
0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74,
0x29, 0x20, 0x7b, 0xa, 0x9, 0x9, 0x6c, 0x65, 0x74, 0x20,
0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x20, 0x3d, 0x20, 0x64,
0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x63, 0x72,
0x65, 0x61, 0x74, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
0x74, 0x28, 0x22, 0x64, 0x69, 0x76, 0x22, 0x29, 0x3b, 0xa,
0x9, 0x9, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x2e, 0x69,
0x64, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61,
0x74, 0x6f, 0x72, 0x2e, 0x69, 0x64, 0x3b, 0xa, 0x9, 0x9,
0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x2e, 0x74, 0x65, 0x78,
0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x3d,
0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72,
0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x3b, 0xa, 0x9, 0x9,
0x65, 0x72, 0x28, 0x22, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x75,
0x70, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x20, 0x28, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x9,
0x9, 0x9, 0x9, 0x9, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73,
0x65, 0x4b, 0x65, 0x79, 0x28, 0x6b, 0x65, 0x79, 0x2e, 0x69,
0x64, 0x29, 0x3b, 0x20, 0x7d, 0x29, 0x3b, 0xa, 0x9, 0x9,
0x9, 0x9, 0x7d, 0xa, 0x9, 0x9, 0x9, 0x7d, 0x20, 0x65,
0x6c, 0x73, 0x65, 0x20, 0x7b, 0xa, 0x9, 0x9, 0x9, 0x9,
0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x2e, 0x63, 0x6c, 0x61,
0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x22,
0x6f, 0x66, 0x66, 0x22, 0x3b, 0xa, 0x9, 0x9, 0x69, 0x6e,
0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x69, 0x76,
0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x43, 0x68, 0x69,
0x6c, 0x64, 0x28, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x29,
0x3b, 0xa, 0x9, 0x7d, 0xa, 0x7d, 0xa, 0xa, 0x66, 0x75,
0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x75, 0x70, 0x64,
0x61, 0x74, 0x65, 0x4c, 0x45, 0x44, 0x73, 0x28, 0x63, 0x75,
0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x29, 0x20, 0x7b,
0xa, 0x9, 0x6c, 0x65, 0x74, 0x20, 0x6f, 0x6e, 0x5f, 0x6c,
0x65, 0x64, 0x73, 0x20, 0x3d, 0x20, 0x63, 0x75, 0x72, 0x5f,
0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x73, 0x70, 0x6c, 0x69,
0x74, 0x28, 0x22, 0x2c, 0x22, 0x29, 0x3b, 0xa, 0x9, 0x66,
0x6f, 0x72, 0x20, 0x28, 0x6c, 0x65, 0x74, 0x20, 0x69, 0x6e,
0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x6f, 0x66,
0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72,
0x5f, 0x6c, 0x69, 0x73, 0x74, 0x29, 0x20, 0x7b, 0xa, 0x9,
0x9, 0x6c, 0x65, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63,
0x61, 0x74, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x76, 0x20, 0x3d,
0x6b, 0x65, 0x79, 0x20, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x22,
0x3b, 0xa, 0x9, 0x9, 0x9, 0x7d, 0xa, 0x9, 0x9, 0x9,
0x6e, 0x65, 0x77, 0x52, 0x6f, 0x77, 0x2e, 0x61, 0x70, 0x70,
0x65, 0x6e, 0x64, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x28, 0x6e,
0x65, 0x77, 0x44, 0x69, 0x76, 0x29, 0x3b, 0xa, 0x9, 0x9,
0x9, 0x69, 0x66, 0x20, 0x28, 0x6b, 0x65, 0x79, 0x2e, 0x77,
0x69, 0x64, 0x74, 0x68, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x9,
0x9, 0x9, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x2e, 0x73,
0x74, 0x79, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x22, 0x77, 0x69,
0x64, 0x74, 0x68, 0x3a, 0x22, 0x20, 0x2b, 0x20, 0x28, 0x6b,
0x65, 0x79, 0x2e, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2a, 0x6e,
0x65, 0x77, 0x44, 0x69, 0x76, 0x2e, 0x63, 0x6c, 0x69, 0x65,
0x6e, 0x74, 0x57, 0x69, 0x64, 0x74, 0x68, 0x20, 0x29, 0x20,
0x2b, 0x20, 0x22, 0x70, 0x78, 0x3b, 0x22, 0x3b, 0xa, 0x9,
0x9, 0x9, 0x7d, 0xa, 0x9, 0x9, 0x9, 0x69, 0x66, 0x20,
0x28, 0x6b, 0x65, 0x79, 0x2e, 0x68, 0x65, 0x69, 0x67, 0x68,
0x74, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x9, 0x9, 0x9, 0x6e,
0x65, 0x77, 0x44, 0x69, 0x76, 0x2e, 0x73, 0x74, 0x79, 0x6c,
0x65, 0x20, 0x3d, 0x20, 0x22, 0x68, 0x65, 0x69, 0x67, 0x68,
0x74, 0x3a, 0x22, 0x20, 0x2b, 0x20, 0x28, 0x6b, 0x65, 0x79,
0x2e, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x2a, 0x6e, 0x65,
0x77, 0x44, 0x69, 0x76, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e,
0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x29, 0x20,
0x2b, 0x20, 0x22, 0x70, 0x78, 0x3b, 0x20, 0x66, 0x6c, 0x6f,
0x61, 0x74, 0x3a, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x3b,
0x22, 0x3b, 0xa, 0x9, 0x9, 0x9, 0x7d, 0xa, 0x9, 0x9,
0x7d, 0xa, 0x9, 0x7d, 0xa, 0x7d, 0xa, 0xa, 0x66, 0x75,
0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x72, 0x65,
0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x28,
0x6d, 0x61, 0x63, 0x72, 0x6f, 0x5f, 0x69, 0x64, 0x29, 0x20,
0x7b, 0xa, 0x9, 0x6c, 0x65, 0x74, 0x20, 0x6d, 0x61, 0x63,
0x72, 0x6f, 0x44, 0x69, 0x76, 0x20, 0x3d, 0x20, 0x64, 0x6f,
0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74,
0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49,
0x64, 0x28, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x5f, 0x69, 0x64,
0x29, 0x3b, 0xa, 0x9, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x6c,
0x65, 0x74, 0x20, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x20, 0x6f,
0x66, 0x20, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x5f, 0x6c, 0x69,
0x73, 0x74, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x9, 0x6c, 0x65,
0x74, 0x20, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x20, 0x3d,
0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6c, 0x65, 0x6d,
0x65, 0x6e, 0x74, 0x28, 0x22, 0x64, 0x69, 0x76, 0x22, 0x29,
0x3b, 0xa, 0x9, 0x9, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76,
0x2e, 0x69, 0x64, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x63, 0x72,
0x6f, 0x2e, 0x69, 0x64, 0x3b, 0xa, 0x9, 0x9, 0x6e, 0x65,
0x77, 0x44, 0x69, 0x76, 0x2e, 0x74, 0x65, 0x78, 0x74, 0x43,
0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x6d,
0x61, 0x63, 0x72, 0x6f, 0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c,
0x3b, 0xa, 0x9, 0x9, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76,
0x2e, 0x61, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c,
0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28, 0x22, 0x74,
0x6f, 0x75, 0x63, 0x68, 0x73, 0x74, 0x61, 0x72, 0x74, 0x22,
0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x20, 0x28, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x29, 0x20, 0x7b,
0xa, 0x9, 0x9, 0x9, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e,
0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x66,
0x61, 0x75, 0x6c, 0x74, 0x28, 0x29, 0x3b, 0x20, 0x73, 0x65,
0x6e, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x28, 0x6d, 0x61, 0x63,
0x72, 0x6f, 0x2e, 0x6b, 0x65, 0x79, 0x73, 0x29, 0x3b, 0x20,
0x7d, 0x29, 0x3b, 0xa, 0x9, 0x9, 0x6e, 0x65, 0x77, 0x44,
0x69, 0x76, 0x2e, 0x61, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e,
0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x28,
0x22, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x65, 0x6e, 0x64, 0x22,
0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x20, 0x28, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x29, 0x20, 0x7b,
0xa, 0x9, 0x9, 0x9, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e,
0x70, 0x72, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x66,
0x61, 0x75, 0x6c, 0x74, 0x28, 0x29, 0x3b, 0x20, 0x73, 0x65,
0x6e, 0x64, 0x4b, 0x65, 0x79, 0x73, 0x28, 0x5b, 0x5d, 0x29,
0x3b, 0x3b, 0x20, 0x7d, 0x29, 0x3b, 0xa, 0x9, 0x9, 0x6e,
0x65, 0x77, 0x44, 0x69, 0x76, 0x2e, 0x61, 0x64, 0x64, 0x45,
0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e,
0x65, 0x72, 0x28, 0x22, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x64,
0x6f, 0x77, 0x6e, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x29, 0x20, 0x7b, 0xa,
0x9, 0x9, 0x9, 0x73, 0x65, 0x6e, 0x64, 0x4b, 0x65, 0x79,
0x73, 0x28, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x2e, 0x6b, 0x65,
0x79, 0x73, 0x29, 0x3b, 0x20, 0x7d, 0x29, 0x3b, 0xa, 0x9,
0x9, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x2e, 0x61, 0x64,
0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74,
0x65, 0x6e, 0x65, 0x72, 0x28, 0x22, 0x6d, 0x6f, 0x75, 0x73,
0x65, 0x75, 0x70, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x29, 0x20, 0x7b, 0xa,
0x9, 0x9, 0x9, 0x73, 0x65, 0x6e, 0x64, 0x4b, 0x65, 0x79,
0x73, 0x28, 0x5b, 0x5d, 0x29, 0x3b, 0x20, 0x7d, 0x29, 0x3b,
0xa, 0x9, 0x9, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x44, 0x69,
0x76, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x43, 0x68,
0x69, 0x6c, 0x64, 0x28, 0x6e, 0x65, 0x77, 0x44, 0x69, 0x76,
0x29, 0x3b, 0xa, 0x9, 0x7d, 0xa, 0x7d, 0xa, 0xa, 0x66,
0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x72,
0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61,
0x74, 0x6f, 0x72, 0x73, 0x28, 0x69, 0x6e, 0x64, 0x69, 0x63,
0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x29, 0x20, 0x7b,
0xa, 0x9, 0x6c, 0x65, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x69,
0x63, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x69, 0x76, 0x20, 0x3d,
0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
0x67, 0x65, 0x74, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74,
0x42, 0x79, 0x49, 0x64, 0x28, 0x69, 0x6e, 0x64, 0x69, 0x63,
0x61, 0x74, 0x6f, 0x72, 0x2e, 0x69, 0x64, 0x29, 0x3b, 0xa,
0x9, 0x9, 0x69, 0x66, 0x20, 0x28, 0x6f, 0x6e, 0x5f, 0x6c,
0x65, 0x64, 0x73, 0x2e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64,
0x65, 0x73, 0x28, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74,
0x6f, 0x72, 0x2e, 0x69, 0x64, 0x29, 0x29, 0x20, 0x7b, 0xa,
0x9, 0x9, 0x9, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74,
0x6f, 0x72, 0x5f, 0x64, 0x69, 0x76, 0x2e, 0x63, 0x6c, 0x61,
0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x22,
0x6f, 0x6e, 0x22, 0x3b, 0xa, 0x9, 0x9, 0x7d, 0x20, 0x65,
0x6c, 0x73, 0x65, 0x20, 0x7b, 0xa, 0x9, 0x9, 0x9, 0x69,
0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x64,
0x69, 0x76, 0x2e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61,
0x6d, 0x65, 0x20, 0x3d, 0x20, 0x22, 0x6f, 0x66, 0x66, 0x22,
0x3b, 0xa, 0x9, 0x9, 0x7d, 0xa, 0x9, 0x7d, 0xa, 0x7d,
0xa, 0xa, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
0x3e, 0xa, 0xa, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e,
0xa, 0xa, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c,
0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
0x22, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
0x22, 0x3e, 0xa, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69,
0x64, 0x3d, 0x22, 0x6b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72,
0x64, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa,
0x9, 0x3c, 0x64, 0x69, 0x76, 0x3e, 0xa, 0x9, 0x9, 0x3c,
0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x69, 0x6e,
0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x3e,
0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0x9, 0x9, 0x3c,
0x64, 0x69, 0x76, 0x3e, 0x4d, 0x6f, 0x75, 0x73, 0x65, 0x20,
0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x3a, 0x3c,
0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0x9, 0x9, 0x3c, 0x64,
0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x6d, 0x6f, 0x75,
0x73, 0x65, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
0xa, 0x9, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0x3c,
0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0xa, 0x3c, 0x64, 0x69,
0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x6d, 0x61, 0x63, 0x72,
0x6f, 0x73, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
0xa, 0xa, 0x3c, 0x64, 0x69, 0x76, 0x3e, 0xa, 0x9, 0x3c,
0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
0x22, 0x6d, 0x65, 0x6e, 0x75, 0x22, 0x3e, 0xa, 0x9, 0x9,
0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x77,
0x69, 0x66, 0x69, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22,
0x3e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65,
0x20, 0x57, 0x69, 0x2d, 0x46, 0x69, 0x3c, 0x2f, 0x61, 0x3e,
0xa, 0x9, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0x9,
0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x22, 0x3e, 0xa, 0x9,
0x9, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
0x72, 0x65, 0x62, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x67, 0x69,
0x22, 0x3e, 0x52, 0x65, 0x62, 0x6f, 0x6f, 0x74, 0x3c, 0x2f,
0x61, 0x3e, 0xa, 0x9, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
0xa, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0xa, 0x3c,
0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0xa, 0x3c, 0x2f,
0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, };
0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x29, 0x3b, 0xa,
0x9, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x6c, 0x65, 0x74, 0x20,
0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x20,
0x6f, 0x66, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74,
0x6f, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x29, 0x20, 0x7b,
0xa, 0x9, 0x9, 0x6c, 0x65, 0x74, 0x20, 0x6e, 0x65, 0x77,
0x44, 0x69, 0x76, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x63, 0x75,
0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74,
0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x28, 0x22,
0x64, 0x69, 0x76, 0x22, 0x29, 0x3b, 0xa, 0x9, 0x9, 0x6e,
0x65, 0x77, 0x44, 0x69, 0x76, 0x2e, 0x69, 0x64, 0x20, 0x3d,
0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72,
0x2e, 0x69, 0x64, 0x3b, 0xa, 0x9, 0x9, 0x6e, 0x65, 0x77,
0x44, 0x69, 0x76, 0x2e, 0x74, 0x65, 0x78, 0x74, 0x43, 0x6f,
0x6e, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x69, 0x6e,
0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x6c, 0x61,
0x62, 0x65, 0x6c, 0x3b, 0xa, 0x9, 0x9, 0x6e, 0x65, 0x77,
0x44, 0x69, 0x76, 0x2e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e,
0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x22, 0x6f, 0x66, 0x66,
0x22, 0x3b, 0xa, 0x9, 0x9, 0x69, 0x6e, 0x64, 0x69, 0x63,
0x61, 0x74, 0x6f, 0x72, 0x44, 0x69, 0x76, 0x2e, 0x61, 0x70,
0x70, 0x65, 0x6e, 0x64, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x28,
0x6e, 0x65, 0x77, 0x44, 0x69, 0x76, 0x29, 0x3b, 0xa, 0x9,
0x7d, 0xa, 0x7d, 0xa, 0xa, 0x66, 0x75, 0x6e, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
0x4c, 0x45, 0x44, 0x73, 0x28, 0x63, 0x75, 0x72, 0x5f, 0x73,
0x74, 0x61, 0x74, 0x65, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x6c,
0x65, 0x74, 0x20, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x64, 0x73,
0x20, 0x3d, 0x20, 0x63, 0x75, 0x72, 0x5f, 0x73, 0x74, 0x61,
0x74, 0x65, 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x22,
0x2c, 0x22, 0x29, 0x3b, 0xa, 0x9, 0x66, 0x6f, 0x72, 0x20,
0x28, 0x6c, 0x65, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63,
0x61, 0x74, 0x6f, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x6e,
0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6c, 0x69,
0x73, 0x74, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x9, 0x6c, 0x65,
0x74, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f,
0x72, 0x5f, 0x64, 0x69, 0x76, 0x20, 0x3d, 0x20, 0x64, 0x6f,
0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x65, 0x74,
0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49,
0x64, 0x28, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f,
0x72, 0x2e, 0x69, 0x64, 0x29, 0x3b, 0xa, 0x9, 0x9, 0x69,
0x66, 0x20, 0x28, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x64, 0x73,
0x2e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x73, 0x28,
0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2e,
0x69, 0x64, 0x29, 0x29, 0x20, 0x7b, 0xa, 0x9, 0x9, 0x9,
0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f,
0x64, 0x69, 0x76, 0x2e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e,
0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x22, 0x6f, 0x6e, 0x22,
0x3b, 0xa, 0x9, 0x9, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65,
0x20, 0x7b, 0xa, 0x9, 0x9, 0x9, 0x69, 0x6e, 0x64, 0x69,
0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x76, 0x2e,
0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x20,
0x3d, 0x20, 0x22, 0x6f, 0x66, 0x66, 0x22, 0x3b, 0xa, 0x9,
0x9, 0x7d, 0xa, 0x9, 0x7d, 0xa, 0x7d, 0xa, 0xa, 0x3c,
0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0xa, 0xa,
0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0xa, 0x3c,
0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x64, 0x69, 0x76,
0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x63, 0x6f,
0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x22, 0x3e, 0xa,
0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22,
0x6b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x22, 0x3e,
0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0x9, 0x3c, 0x64,
0x69, 0x76, 0x3e, 0xa, 0x9, 0x9, 0x3c, 0x64, 0x69, 0x76,
0x20, 0x69, 0x64, 0x3d, 0x22, 0x69, 0x6e, 0x64, 0x69, 0x63,
0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x3e, 0x3c, 0x2f, 0x64,
0x69, 0x76, 0x3e, 0xa, 0x9, 0x9, 0x3c, 0x64, 0x69, 0x76,
0x3e, 0x4d, 0x6f, 0x75, 0x73, 0x65, 0x20, 0x43, 0x6f, 0x6e,
0x74, 0x72, 0x6f, 0x6c, 0x73, 0x3a, 0x3c, 0x2f, 0x64, 0x69,
0x76, 0x3e, 0xa, 0x9, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20,
0x69, 0x64, 0x3d, 0x22, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x22,
0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0x9, 0x3c,
0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0x3c, 0x2f, 0x64, 0x69,
0x76, 0x3e, 0xa, 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69,
0x64, 0x3d, 0x22, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x73, 0x22,
0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0xa, 0x3c,
0x64, 0x69, 0x76, 0x3e, 0xa, 0x9, 0x3c, 0x64, 0x69, 0x76,
0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65,
0x6e, 0x75, 0x22, 0x3e, 0xa, 0x9, 0x9, 0x3c, 0x61, 0x20,
0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x77, 0x69, 0x66, 0x69,
0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x43, 0x6f,
0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x20, 0x57, 0x69,
0x2d, 0x46, 0x69, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x9, 0x3c,
0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0x9, 0x3c, 0x64, 0x69,
0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d,
0x65, 0x6e, 0x75, 0x22, 0x3e, 0xa, 0x9, 0x9, 0x3c, 0x61,
0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x72, 0x65, 0x62,
0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x67, 0x69, 0x22, 0x3e, 0x52,
0x65, 0x62, 0x6f, 0x6f, 0x74, 0x3c, 0x2f, 0x61, 0x3e, 0xa,
0x9, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0x3c, 0x2f,
0x64, 0x69, 0x76, 0x3e, 0xa, 0xa, 0x3c, 0x2f, 0x62, 0x6f,
0x64, 0x79, 0x3e, 0xa, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d,
0x6c, 0x3e, 0xa, };
static const unsigned char data_success_html[] = {
/* /success.html */
+5 -4
View File
@@ -354,12 +354,14 @@ static err_t ws_read(struct altcp_pcb *pcb, struct ws_state *wss, struct pbuf *p
uint8_t masked = data[1] & 0x80;
uint16_t msg_len = data[1] & 0x7F;
uint8_t *msg;
uint8_t *mask;
switch (msg_len) {
case 126: // next two bytes are length
memcpy(&msg_len, &data[2], 2);
msg_len = ( (uint16_t)data[2] << 8) | data[3];
if (len >= 8) {
msg = &data[8];
mask = &data[4];
}
break;
case 127: // next four bytes are length
@@ -369,6 +371,7 @@ static err_t ws_read(struct altcp_pcb *pcb, struct ws_state *wss, struct pbuf *p
default:
if (len >= 6) {
msg = &data[6];
mask = &data[2];
}
break;
}
@@ -382,8 +385,6 @@ static err_t ws_read(struct altcp_pcb *pcb, struct ws_state *wss, struct pbuf *p
if (msg && ws_receive_cb != NULL) {
// unmask the data if mask bit is received
if (masked) {
uint8_t *mask = &data[2];
for (int i=0; i<msg_len; i++) {
msg[i] ^= mask[i % 4];
}
+1 -1
View File
@@ -7,7 +7,7 @@
#define WS_MAX_RETRIES 10
#define WS_POLL_INTERVAL 60 // WS_POLL_INTERVAL/2 seconds
#define WS_MAX_CONN 4
#define WS_BUFFER_SIZE 512
#define WS_BUFFER_SIZE 1024
#define OP_CONT 0x00
#define OP_TEXT 0x01