From 4aac1cd5c65462d5ad13e377705a00eab8c80d81 Mon Sep 17 00:00:00 2001 From: Thomas Pornin Date: Sat, 15 Jul 2017 06:14:55 +0200 Subject: [PATCH] Fixed behaviour in case of rejected renegotiation. --- T0Comp.exe | Bin 73216 -> 72704 bytes inc/bearssl_ssl.h | 9 +- src/ssl/ssl_engine.c | 5 +- src/ssl/ssl_hs_client.c | 502 +++++++++++++++++----------------- src/ssl/ssl_hs_client.t0 | 13 + src/ssl/ssl_hs_common.t0 | 17 ++ src/ssl/ssl_hs_server.c | 578 ++++++++++++++++++++------------------- src/ssl/ssl_hs_server.t0 | 13 + 8 files changed, 595 insertions(+), 542 deletions(-) diff --git a/T0Comp.exe b/T0Comp.exe index 80b77913d2ee348ef25389473538c0dc6e36fe80..67eba109800eaebba3b6d72a00e5390a7089078e 100755 GIT binary patch delta 27466 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 delta 27822 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 == 1 - || (cc->flags & BR_OPT_NO_RENEGOTIATION) != 0) + || (cc->flags & BR_OPT_NO_RENEGOTIATION) != 0 + || br_ssl_engine_recvapp_buf(cc, &len) != NULL) { return 0; } diff --git a/src/ssl/ssl_hs_client.c b/src/ssl/ssl_hs_client.c index 34cb407..9d3418b 100644 --- a/src/ssl/ssl_hs_client.c +++ b/src/ssl/ssl_hs_client.c @@ -525,207 +525,209 @@ static const unsigned char t0_codeblock[] = { 0x01, 0x11, 0x04, 0x6F, 0x25, 0x02, 0x00, 0x01, 0x01, 0x0B, 0x01, 0x06, 0x08, 0x00, 0x00, 0x7D, 0x2D, 0x44, 0x11, 0x01, 0x01, 0x17, 0x35, 0x00, 0x00, 0x9D, 0xCB, 0x26, 0x01, 0x07, 0x17, 0x01, 0x00, 0x38, 0x0E, 0x06, - 0x09, 0x25, 0x01, 0x10, 0x17, 0x06, 0x01, 0x9D, 0x04, 0x2D, 0x01, 0x01, - 0x38, 0x0E, 0x06, 0x24, 0x25, 0x25, 0x01, 0x00, 0x75, 0x3E, 0xB1, 0x86, - 0x2E, 0x01, 0x01, 0x0E, 0x01, 0x01, 0xA6, 0x37, 0x06, 0x0F, 0x29, 0x1A, - 0x36, 0x06, 0x04, 0xCB, 0x25, 0x04, 0x78, 0x01, 0x80, 0x64, 0xC3, 0x04, - 0x01, 0x9D, 0x04, 0x03, 0x70, 0x28, 0x25, 0x04, 0xFF, 0x3C, 0x01, 0x26, - 0x03, 0x00, 0x09, 0x26, 0x56, 0x06, 0x02, 0x66, 0x28, 0x02, 0x00, 0x00, - 0x00, 0x98, 0x01, 0x0F, 0x17, 0x00, 0x00, 0x74, 0x2E, 0x01, 0x00, 0x38, - 0x0E, 0x06, 0x10, 0x25, 0x26, 0x01, 0x01, 0x0D, 0x06, 0x03, 0x25, 0x01, - 0x02, 0x74, 0x3E, 0x01, 0x00, 0x04, 0x21, 0x01, 0x01, 0x38, 0x0E, 0x06, - 0x14, 0x25, 0x01, 0x00, 0x74, 0x3E, 0x26, 0x01, 0x80, 0x64, 0x0E, 0x06, - 0x05, 0x01, 0x82, 0x00, 0x08, 0x28, 0x58, 0x04, 0x07, 0x25, 0x01, 0x82, - 0x00, 0x08, 0x28, 0x25, 0x00, 0x00, 0x01, 0x00, 0x2F, 0x06, 0x05, 0x3A, - 0xAA, 0x37, 0x04, 0x78, 0x26, 0x06, 0x04, 0x01, 0x01, 0x8D, 0x3E, 0x00, - 0x01, 0xBD, 0xA8, 0xBD, 0xA8, 0xBF, 0x82, 0x44, 0x26, 0x03, 0x00, 0xB4, - 0x99, 0x99, 0x02, 0x00, 0x4B, 0x26, 0x56, 0x06, 0x0A, 0x01, 0x03, 0xA6, - 0x06, 0x02, 0x70, 0x28, 0x25, 0x04, 0x03, 0x5A, 0x88, 0x3C, 0x00, 0x00, - 0x2F, 0x06, 0x0B, 0x84, 0x2E, 0x01, 0x14, 0x0D, 0x06, 0x02, 0x70, 0x28, - 0x04, 0x11, 0xCB, 0x01, 0x07, 0x17, 0x26, 0x01, 0x02, 0x0D, 0x06, 0x06, - 0x06, 0x02, 0x70, 0x28, 0x04, 0x70, 0x25, 0xC0, 0x01, 0x01, 0x0D, 0x33, - 0x37, 0x06, 0x02, 0x5F, 0x28, 0x26, 0x01, 0x01, 0xC6, 0x36, 0xB0, 0x00, - 0x01, 0xB6, 0x01, 0x0B, 0x0E, 0x05, 0x02, 0x70, 0x28, 0x26, 0x01, 0x03, - 0x0E, 0x06, 0x08, 0xBE, 0x06, 0x02, 0x66, 0x28, 0x44, 0x25, 0x00, 0x44, - 0x55, 0xBE, 0xA8, 0x26, 0x06, 0x23, 0xBE, 0xA8, 0x26, 0x54, 0x26, 0x06, - 0x18, 0x26, 0x01, 0x82, 0x00, 0x0F, 0x06, 0x05, 0x01, 0x82, 0x00, 0x04, - 0x01, 0x26, 0x03, 0x00, 0x82, 0x02, 0x00, 0xB4, 0x02, 0x00, 0x51, 0x04, - 0x65, 0x99, 0x52, 0x04, 0x5A, 0x99, 0x99, 0x53, 0x26, 0x06, 0x02, 0x35, - 0x00, 0x25, 0x2B, 0x00, 0x00, 0x77, 0x2C, 0x9F, 0x01, 0x7F, 0xAE, 0x26, - 0x56, 0x06, 0x02, 0x35, 0x28, 0x26, 0x05, 0x02, 0x70, 0x28, 0x38, 0x17, - 0x0D, 0x06, 0x02, 0x72, 0x28, 0x3B, 0x00, 0x00, 0x9A, 0xB6, 0x01, 0x14, - 0x0D, 0x06, 0x02, 0x70, 0x28, 0x82, 0x01, 0x0C, 0x08, 0x01, 0x0C, 0xB4, - 0x99, 0x82, 0x26, 0x01, 0x0C, 0x08, 0x01, 0x0C, 0x30, 0x05, 0x02, 0x62, - 0x28, 0x00, 0x00, 0xB7, 0x06, 0x02, 0x70, 0x28, 0x06, 0x02, 0x64, 0x28, - 0x00, 0x0A, 0xB6, 0x01, 0x02, 0x0E, 0x05, 0x02, 0x70, 0x28, 0xBD, 0x03, - 0x00, 0x02, 0x00, 0x93, 0x2C, 0x0A, 0x02, 0x00, 0x92, 0x2C, 0x0F, 0x37, - 0x06, 0x02, 0x71, 0x28, 0x02, 0x00, 0x91, 0x2C, 0x0D, 0x06, 0x02, 0x69, - 0x28, 0x02, 0x00, 0x94, 0x3C, 0x8A, 0x01, 0x20, 0xB4, 0x01, 0x00, 0x03, - 0x01, 0xBF, 0x03, 0x02, 0x02, 0x02, 0x01, 0x20, 0x0F, 0x06, 0x02, 0x6E, - 0x28, 0x82, 0x02, 0x02, 0xB4, 0x02, 0x02, 0x8C, 0x2E, 0x0E, 0x02, 0x02, - 0x01, 0x00, 0x0F, 0x17, 0x06, 0x0B, 0x8B, 0x82, 0x02, 0x02, 0x30, 0x06, - 0x04, 0x01, 0x7F, 0x03, 0x01, 0x8B, 0x82, 0x02, 0x02, 0x31, 0x02, 0x02, - 0x8C, 0x3E, 0x02, 0x00, 0x90, 0x02, 0x01, 0x96, 0xBD, 0x26, 0xC1, 0x56, - 0x06, 0x02, 0x60, 0x28, 0x77, 0x02, 0x01, 0x96, 0xBF, 0x06, 0x02, 0x61, - 0x28, 0x26, 0x06, 0x81, 0x45, 0xBD, 0xA8, 0xA4, 0x03, 0x03, 0xA2, 0x03, - 0x04, 0xA0, 0x03, 0x05, 0xA3, 0x03, 0x06, 0xA5, 0x03, 0x07, 0xA1, 0x03, - 0x08, 0x27, 0x03, 0x09, 0x26, 0x06, 0x81, 0x18, 0xBD, 0x01, 0x00, 0x38, - 0x0E, 0x06, 0x0F, 0x25, 0x02, 0x03, 0x05, 0x02, 0x6A, 0x28, 0x01, 0x00, - 0x03, 0x03, 0xBC, 0x04, 0x80, 0x7F, 0x01, 0x01, 0x38, 0x0E, 0x06, 0x0F, - 0x25, 0x02, 0x05, 0x05, 0x02, 0x6A, 0x28, 0x01, 0x00, 0x03, 0x05, 0xBA, - 0x04, 0x80, 0x6A, 0x01, 0x83, 0xFE, 0x01, 0x38, 0x0E, 0x06, 0x0F, 0x25, - 0x02, 0x04, 0x05, 0x02, 0x6A, 0x28, 0x01, 0x00, 0x03, 0x04, 0xBB, 0x04, - 0x80, 0x53, 0x01, 0x0D, 0x38, 0x0E, 0x06, 0x0E, 0x25, 0x02, 0x06, 0x05, - 0x02, 0x6A, 0x28, 0x01, 0x00, 0x03, 0x06, 0xB8, 0x04, 0x3F, 0x01, 0x0A, - 0x38, 0x0E, 0x06, 0x0E, 0x25, 0x02, 0x07, 0x05, 0x02, 0x6A, 0x28, 0x01, - 0x00, 0x03, 0x07, 0xB8, 0x04, 0x2B, 0x01, 0x0B, 0x38, 0x0E, 0x06, 0x0E, - 0x25, 0x02, 0x08, 0x05, 0x02, 0x6A, 0x28, 0x01, 0x00, 0x03, 0x08, 0xB8, - 0x04, 0x17, 0x01, 0x10, 0x38, 0x0E, 0x06, 0x0E, 0x25, 0x02, 0x09, 0x05, - 0x02, 0x6A, 0x28, 0x01, 0x00, 0x03, 0x09, 0xAC, 0x04, 0x03, 0x6A, 0x28, - 0x25, 0x04, 0xFE, 0x64, 0x02, 0x04, 0x06, 0x0D, 0x02, 0x04, 0x01, 0x05, - 0x0F, 0x06, 0x02, 0x67, 0x28, 0x01, 0x01, 0x86, 0x3E, 0x99, 0x99, 0x02, - 0x01, 0x00, 0x04, 0xB6, 0x01, 0x0C, 0x0E, 0x05, 0x02, 0x70, 0x28, 0xBF, - 0x01, 0x03, 0x0E, 0x05, 0x02, 0x6B, 0x28, 0xBD, 0x26, 0x7A, 0x3E, 0x26, - 0x01, 0x20, 0x10, 0x06, 0x02, 0x6B, 0x28, 0x40, 0x44, 0x11, 0x01, 0x01, - 0x17, 0x05, 0x02, 0x6B, 0x28, 0xBF, 0x26, 0x01, 0x81, 0x05, 0x0F, 0x06, - 0x02, 0x6B, 0x28, 0x26, 0x7C, 0x3E, 0x7B, 0x44, 0xB4, 0x90, 0x2C, 0x01, - 0x86, 0x03, 0x10, 0x03, 0x00, 0x77, 0x2C, 0xC9, 0x03, 0x01, 0x01, 0x02, - 0x03, 0x02, 0x02, 0x00, 0x06, 0x21, 0xBF, 0x26, 0x26, 0x01, 0x02, 0x0A, - 0x44, 0x01, 0x06, 0x0F, 0x37, 0x06, 0x02, 0x6B, 0x28, 0x03, 0x02, 0xBF, - 0x02, 0x01, 0x01, 0x01, 0x0B, 0x01, 0x03, 0x08, 0x0E, 0x05, 0x02, 0x6B, - 0x28, 0x04, 0x08, 0x02, 0x01, 0x06, 0x04, 0x01, 0x00, 0x03, 0x02, 0xBD, - 0x26, 0x03, 0x03, 0x26, 0x01, 0x84, 0x00, 0x0F, 0x06, 0x02, 0x6C, 0x28, - 0x82, 0x44, 0xB4, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x4E, 0x26, 0x06, - 0x01, 0x28, 0x25, 0x99, 0x00, 0x02, 0x03, 0x00, 0x03, 0x01, 0x02, 0x00, - 0x95, 0x02, 0x01, 0x02, 0x00, 0x39, 0x26, 0x01, 0x00, 0x0E, 0x06, 0x02, - 0x5E, 0x00, 0xCD, 0x04, 0x74, 0x02, 0x01, 0x00, 0x03, 0x00, 0xBF, 0xA8, - 0x26, 0x06, 0x80, 0x43, 0xBF, 0x01, 0x01, 0x38, 0x0E, 0x06, 0x06, 0x25, - 0x01, 0x81, 0x7F, 0x04, 0x2E, 0x01, 0x80, 0x40, 0x38, 0x0E, 0x06, 0x07, - 0x25, 0x01, 0x83, 0xFE, 0x00, 0x04, 0x20, 0x01, 0x80, 0x41, 0x38, 0x0E, - 0x06, 0x07, 0x25, 0x01, 0x84, 0x80, 0x00, 0x04, 0x12, 0x01, 0x80, 0x42, - 0x38, 0x0E, 0x06, 0x07, 0x25, 0x01, 0x88, 0x80, 0x00, 0x04, 0x04, 0x01, - 0x00, 0x44, 0x25, 0x02, 0x00, 0x37, 0x03, 0x00, 0x04, 0xFF, 0x39, 0x99, - 0x77, 0x2C, 0xC7, 0x05, 0x09, 0x02, 0x00, 0x01, 0x83, 0xFF, 0x7F, 0x17, - 0x03, 0x00, 0x90, 0x2C, 0x01, 0x86, 0x03, 0x10, 0x06, 0x3A, 0xB9, 0x26, - 0x7F, 0x3D, 0x41, 0x25, 0x26, 0x01, 0x08, 0x0B, 0x37, 0x01, 0x8C, 0x80, - 0x00, 0x37, 0x17, 0x02, 0x00, 0x17, 0x02, 0x00, 0x01, 0x8C, 0x80, 0x00, - 0x17, 0x06, 0x19, 0x26, 0x01, 0x81, 0x7F, 0x17, 0x06, 0x05, 0x01, 0x84, - 0x80, 0x00, 0x37, 0x26, 0x01, 0x83, 0xFE, 0x00, 0x17, 0x06, 0x05, 0x01, - 0x88, 0x80, 0x00, 0x37, 0x03, 0x00, 0x04, 0x09, 0x02, 0x00, 0x01, 0x8C, - 0x88, 0x01, 0x17, 0x03, 0x00, 0x16, 0xBD, 0xA8, 0x26, 0x06, 0x23, 0xBD, - 0xA8, 0x26, 0x15, 0x26, 0x06, 0x18, 0x26, 0x01, 0x82, 0x00, 0x0F, 0x06, - 0x05, 0x01, 0x82, 0x00, 0x04, 0x01, 0x26, 0x03, 0x01, 0x82, 0x02, 0x01, - 0xB4, 0x02, 0x01, 0x12, 0x04, 0x65, 0x99, 0x13, 0x04, 0x5A, 0x99, 0x14, - 0x99, 0x02, 0x00, 0x2A, 0x00, 0x00, 0xB7, 0x26, 0x58, 0x06, 0x07, 0x25, - 0x06, 0x02, 0x64, 0x28, 0x04, 0x74, 0x00, 0x00, 0xC0, 0x01, 0x03, 0xBE, - 0x44, 0x25, 0x44, 0x00, 0x00, 0xBD, 0xC4, 0x00, 0x03, 0x01, 0x00, 0x03, - 0x00, 0xBD, 0xA8, 0x26, 0x06, 0x80, 0x50, 0xBF, 0x03, 0x01, 0xBF, 0x03, - 0x02, 0x02, 0x01, 0x01, 0x08, 0x0E, 0x06, 0x16, 0x02, 0x02, 0x01, 0x0F, - 0x0C, 0x06, 0x0D, 0x01, 0x01, 0x02, 0x02, 0x01, 0x10, 0x08, 0x0B, 0x02, - 0x00, 0x37, 0x03, 0x00, 0x04, 0x2A, 0x02, 0x01, 0x01, 0x02, 0x10, 0x02, - 0x01, 0x01, 0x06, 0x0C, 0x17, 0x02, 0x02, 0x01, 0x01, 0x0E, 0x02, 0x02, - 0x01, 0x03, 0x0E, 0x37, 0x17, 0x06, 0x11, 0x02, 0x00, 0x01, 0x01, 0x02, - 0x02, 0x5B, 0x01, 0x02, 0x0B, 0x02, 0x01, 0x08, 0x0B, 0x37, 0x03, 0x00, - 0x04, 0xFF, 0x2C, 0x99, 0x02, 0x00, 0x00, 0x00, 0xBD, 0x01, 0x01, 0x0E, - 0x05, 0x02, 0x63, 0x28, 0xBF, 0x01, 0x08, 0x08, 0x80, 0x2E, 0x0E, 0x05, - 0x02, 0x63, 0x28, 0x00, 0x00, 0xBD, 0x86, 0x2E, 0x05, 0x15, 0x01, 0x01, - 0x0E, 0x05, 0x02, 0x67, 0x28, 0xBF, 0x01, 0x00, 0x0E, 0x05, 0x02, 0x67, - 0x28, 0x01, 0x02, 0x86, 0x3E, 0x04, 0x1C, 0x01, 0x19, 0x0E, 0x05, 0x02, - 0x67, 0x28, 0xBF, 0x01, 0x18, 0x0E, 0x05, 0x02, 0x67, 0x28, 0x82, 0x01, - 0x18, 0xB4, 0x87, 0x82, 0x01, 0x18, 0x30, 0x05, 0x02, 0x67, 0x28, 0x00, - 0x00, 0xBD, 0x06, 0x02, 0x68, 0x28, 0x00, 0x00, 0x01, 0x02, 0x95, 0xC0, - 0x01, 0x08, 0x0B, 0xC0, 0x08, 0x00, 0x00, 0x01, 0x03, 0x95, 0xC0, 0x01, - 0x08, 0x0B, 0xC0, 0x08, 0x01, 0x08, 0x0B, 0xC0, 0x08, 0x00, 0x00, 0x01, - 0x01, 0x95, 0xC0, 0x00, 0x00, 0x3A, 0x26, 0x56, 0x05, 0x01, 0x00, 0x25, - 0xCD, 0x04, 0x76, 0x02, 0x03, 0x00, 0x8F, 0x2E, 0x03, 0x01, 0x01, 0x00, - 0x26, 0x02, 0x01, 0x0A, 0x06, 0x10, 0x26, 0x01, 0x01, 0x0B, 0x8E, 0x08, - 0x2C, 0x02, 0x00, 0x0E, 0x06, 0x01, 0x00, 0x5A, 0x04, 0x6A, 0x25, 0x01, - 0x7F, 0x00, 0x00, 0x01, 0x15, 0x85, 0x3E, 0x44, 0x50, 0x25, 0x50, 0x25, - 0x29, 0x00, 0x00, 0x01, 0x01, 0x44, 0xC2, 0x00, 0x00, 0x44, 0x38, 0x95, - 0x44, 0x26, 0x06, 0x05, 0xC0, 0x25, 0x5B, 0x04, 0x78, 0x25, 0x00, 0x00, - 0x26, 0x01, 0x81, 0xAC, 0x00, 0x0E, 0x06, 0x04, 0x25, 0x01, 0x7F, 0x00, - 0x98, 0x57, 0x00, 0x02, 0x03, 0x00, 0x77, 0x2C, 0x98, 0x03, 0x01, 0x02, - 0x01, 0x01, 0x0F, 0x17, 0x02, 0x01, 0x01, 0x04, 0x11, 0x01, 0x0F, 0x17, - 0x02, 0x01, 0x01, 0x08, 0x11, 0x01, 0x0F, 0x17, 0x01, 0x00, 0x38, 0x0E, - 0x06, 0x10, 0x25, 0x01, 0x00, 0x01, 0x18, 0x02, 0x00, 0x06, 0x03, 0x47, - 0x04, 0x01, 0x48, 0x04, 0x80, 0x68, 0x01, 0x01, 0x38, 0x0E, 0x06, 0x10, - 0x25, 0x01, 0x01, 0x01, 0x10, 0x02, 0x00, 0x06, 0x03, 0x47, 0x04, 0x01, - 0x48, 0x04, 0x80, 0x52, 0x01, 0x02, 0x38, 0x0E, 0x06, 0x0F, 0x25, 0x01, - 0x01, 0x01, 0x20, 0x02, 0x00, 0x06, 0x03, 0x47, 0x04, 0x01, 0x48, 0x04, - 0x3D, 0x01, 0x03, 0x38, 0x0E, 0x06, 0x0E, 0x25, 0x25, 0x01, 0x10, 0x02, - 0x00, 0x06, 0x03, 0x45, 0x04, 0x01, 0x46, 0x04, 0x29, 0x01, 0x04, 0x38, - 0x0E, 0x06, 0x0E, 0x25, 0x25, 0x01, 0x20, 0x02, 0x00, 0x06, 0x03, 0x45, - 0x04, 0x01, 0x46, 0x04, 0x15, 0x01, 0x05, 0x38, 0x0E, 0x06, 0x0C, 0x25, - 0x25, 0x02, 0x00, 0x06, 0x03, 0x49, 0x04, 0x01, 0x4A, 0x04, 0x03, 0x66, - 0x28, 0x25, 0x00, 0x00, 0x98, 0x01, 0x0C, 0x11, 0x01, 0x02, 0x0F, 0x00, - 0x00, 0x98, 0x01, 0x0C, 0x11, 0x26, 0x59, 0x44, 0x01, 0x03, 0x0A, 0x17, - 0x00, 0x00, 0x98, 0x01, 0x0C, 0x11, 0x01, 0x01, 0x0E, 0x00, 0x00, 0x98, - 0x01, 0x0C, 0x11, 0x58, 0x00, 0x00, 0x1B, 0x01, 0x00, 0x73, 0x2E, 0x26, - 0x06, 0x22, 0x01, 0x01, 0x38, 0x0E, 0x06, 0x06, 0x25, 0x01, 0x00, 0x9C, - 0x04, 0x14, 0x01, 0x02, 0x38, 0x0E, 0x06, 0x0D, 0x25, 0x75, 0x2E, 0x01, - 0x01, 0x0E, 0x06, 0x03, 0x01, 0x10, 0x37, 0x04, 0x01, 0x25, 0x04, 0x01, - 0x25, 0x79, 0x2E, 0x05, 0x33, 0x2F, 0x06, 0x30, 0x84, 0x2E, 0x01, 0x14, - 0x38, 0x0E, 0x06, 0x06, 0x25, 0x01, 0x02, 0x37, 0x04, 0x22, 0x01, 0x15, - 0x38, 0x0E, 0x06, 0x09, 0x25, 0xAB, 0x06, 0x03, 0x01, 0x7F, 0x9C, 0x04, - 0x13, 0x01, 0x16, 0x38, 0x0E, 0x06, 0x06, 0x25, 0x01, 0x01, 0x37, 0x04, - 0x07, 0x25, 0x01, 0x04, 0x37, 0x01, 0x00, 0x25, 0x1A, 0x06, 0x03, 0x01, - 0x08, 0x37, 0x00, 0x00, 0x1B, 0x26, 0x05, 0x13, 0x2F, 0x06, 0x10, 0x84, - 0x2E, 0x01, 0x15, 0x0E, 0x06, 0x08, 0x25, 0xAB, 0x01, 0x00, 0x75, 0x3E, - 0x04, 0x01, 0x20, 0x00, 0x00, 0xCB, 0x01, 0x07, 0x17, 0x01, 0x01, 0x0F, - 0x06, 0x02, 0x70, 0x28, 0x00, 0x01, 0x03, 0x00, 0x29, 0x1A, 0x06, 0x05, - 0x02, 0x00, 0x85, 0x3E, 0x00, 0xCB, 0x25, 0x04, 0x74, 0x00, 0x01, 0x14, - 0xCE, 0x01, 0x01, 0xDB, 0x29, 0x26, 0x01, 0x00, 0xC6, 0x01, 0x16, 0xCE, - 0xD4, 0x29, 0x00, 0x00, 0x01, 0x0B, 0xDB, 0x4C, 0x26, 0x26, 0x01, 0x03, - 0x08, 0xDA, 0xDA, 0x18, 0x26, 0x56, 0x06, 0x02, 0x25, 0x00, 0xDA, 0x1D, - 0x26, 0x06, 0x05, 0x82, 0x44, 0xD5, 0x04, 0x77, 0x25, 0x04, 0x6C, 0x00, - 0x21, 0x01, 0x0F, 0xDB, 0x26, 0x90, 0x2C, 0x01, 0x86, 0x03, 0x10, 0x06, - 0x0C, 0x01, 0x04, 0x08, 0xDA, 0x7E, 0x2E, 0xDB, 0x76, 0x2E, 0xDB, 0x04, - 0x02, 0x5C, 0xDA, 0x26, 0xD9, 0x82, 0x44, 0xD5, 0x00, 0x02, 0xA2, 0xA4, - 0x08, 0xA0, 0x08, 0xA3, 0x08, 0xA5, 0x08, 0xA1, 0x08, 0x27, 0x08, 0x03, - 0x00, 0x01, 0x01, 0xDB, 0x01, 0x27, 0x8C, 0x2E, 0x08, 0x8F, 0x2E, 0x01, - 0x01, 0x0B, 0x08, 0x02, 0x00, 0x06, 0x04, 0x5C, 0x02, 0x00, 0x08, 0x81, - 0x2C, 0x38, 0x09, 0x26, 0x59, 0x06, 0x24, 0x02, 0x00, 0x05, 0x04, 0x44, - 0x5C, 0x44, 0x5D, 0x01, 0x04, 0x09, 0x26, 0x56, 0x06, 0x03, 0x25, 0x01, - 0x00, 0x26, 0x01, 0x04, 0x08, 0x02, 0x00, 0x08, 0x03, 0x00, 0x44, 0x01, - 0x04, 0x08, 0x38, 0x08, 0x44, 0x04, 0x03, 0x25, 0x01, 0x7F, 0x03, 0x01, - 0xDA, 0x92, 0x2C, 0xD9, 0x78, 0x01, 0x04, 0x19, 0x78, 0x01, 0x04, 0x08, - 0x01, 0x1C, 0x32, 0x78, 0x01, 0x20, 0xD5, 0x8B, 0x8C, 0x2E, 0xD7, 0x8F, - 0x2E, 0x26, 0x01, 0x01, 0x0B, 0xD9, 0x8E, 0x44, 0x26, 0x06, 0x0F, 0x5B, - 0x38, 0x2C, 0x26, 0xC5, 0x05, 0x02, 0x60, 0x28, 0xD9, 0x44, 0x5C, 0x44, - 0x04, 0x6E, 0x5E, 0x01, 0x01, 0xDB, 0x01, 0x00, 0xDB, 0x02, 0x00, 0x06, - 0x81, 0x5A, 0x02, 0x00, 0xD9, 0xA2, 0x06, 0x0E, 0x01, 0x83, 0xFE, 0x01, - 0xD9, 0x87, 0xA2, 0x01, 0x04, 0x09, 0x26, 0xD9, 0x5B, 0xD7, 0xA4, 0x06, - 0x16, 0x01, 0x00, 0xD9, 0x89, 0xA4, 0x01, 0x04, 0x09, 0x26, 0xD9, 0x01, - 0x02, 0x09, 0x26, 0xD9, 0x01, 0x00, 0xDB, 0x01, 0x03, 0x09, 0xD6, 0xA0, - 0x06, 0x0C, 0x01, 0x01, 0xD9, 0x01, 0x01, 0xD9, 0x80, 0x2E, 0x01, 0x08, - 0x09, 0xDB, 0xA3, 0x06, 0x19, 0x01, 0x0D, 0xD9, 0xA3, 0x01, 0x04, 0x09, - 0x26, 0xD9, 0x01, 0x02, 0x09, 0xD9, 0x42, 0x06, 0x03, 0x01, 0x03, 0xD8, - 0x43, 0x06, 0x03, 0x01, 0x01, 0xD8, 0xA5, 0x26, 0x06, 0x36, 0x01, 0x0A, - 0xD9, 0x01, 0x04, 0x09, 0x26, 0xD9, 0x5D, 0xD9, 0x40, 0x01, 0x00, 0x26, - 0x01, 0x82, 0x80, 0x80, 0x80, 0x00, 0x17, 0x06, 0x0A, 0x01, 0xFD, 0xFF, - 0xFF, 0xFF, 0x7F, 0x17, 0x01, 0x1D, 0xD9, 0x26, 0x01, 0x20, 0x0A, 0x06, - 0x0C, 0x9E, 0x11, 0x01, 0x01, 0x17, 0x06, 0x02, 0x26, 0xD9, 0x5A, 0x04, - 0x6E, 0x5E, 0x04, 0x01, 0x25, 0xA1, 0x06, 0x0A, 0x01, 0x0B, 0xD9, 0x01, - 0x02, 0xD9, 0x01, 0x82, 0x00, 0xD9, 0x27, 0x26, 0x06, 0x1F, 0x01, 0x10, - 0xD9, 0x01, 0x04, 0x09, 0x26, 0xD9, 0x5D, 0xD9, 0x83, 0x2C, 0x01, 0x00, - 0x9E, 0x0F, 0x06, 0x0A, 0x26, 0x1E, 0x26, 0xDB, 0x82, 0x44, 0xD5, 0x5A, - 0x04, 0x72, 0x5E, 0x04, 0x01, 0x25, 0x02, 0x01, 0x56, 0x05, 0x11, 0x01, - 0x15, 0xD9, 0x02, 0x01, 0x26, 0xD9, 0x26, 0x06, 0x06, 0x5B, 0x01, 0x00, - 0xDB, 0x04, 0x77, 0x25, 0x00, 0x00, 0x01, 0x10, 0xDB, 0x77, 0x2C, 0x26, - 0xCA, 0x06, 0x0C, 0xA9, 0x23, 0x26, 0x5C, 0xDA, 0x26, 0xD9, 0x82, 0x44, - 0xD5, 0x04, 0x0D, 0x26, 0xC8, 0x44, 0xA9, 0x22, 0x26, 0x5A, 0xDA, 0x26, - 0xDB, 0x82, 0x44, 0xD5, 0x00, 0x00, 0x9A, 0x01, 0x14, 0xDB, 0x01, 0x0C, - 0xDA, 0x82, 0x01, 0x0C, 0xD5, 0x00, 0x00, 0x4F, 0x26, 0x01, 0x00, 0x0E, - 0x06, 0x02, 0x5E, 0x00, 0xCB, 0x25, 0x04, 0x73, 0x00, 0x26, 0xD9, 0xD5, - 0x00, 0x00, 0x26, 0xDB, 0xD5, 0x00, 0x01, 0x03, 0x00, 0x41, 0x25, 0x26, - 0x01, 0x10, 0x17, 0x06, 0x06, 0x01, 0x04, 0xDB, 0x02, 0x00, 0xDB, 0x26, - 0x01, 0x08, 0x17, 0x06, 0x06, 0x01, 0x03, 0xDB, 0x02, 0x00, 0xDB, 0x26, - 0x01, 0x20, 0x17, 0x06, 0x06, 0x01, 0x05, 0xDB, 0x02, 0x00, 0xDB, 0x26, - 0x01, 0x80, 0x40, 0x17, 0x06, 0x06, 0x01, 0x06, 0xDB, 0x02, 0x00, 0xDB, - 0x01, 0x04, 0x17, 0x06, 0x06, 0x01, 0x02, 0xDB, 0x02, 0x00, 0xDB, 0x00, - 0x00, 0x26, 0x01, 0x08, 0x4D, 0xDB, 0xDB, 0x00, 0x00, 0x26, 0x01, 0x10, - 0x4D, 0xDB, 0xD9, 0x00, 0x00, 0x26, 0x50, 0x06, 0x02, 0x25, 0x00, 0xCB, - 0x25, 0x04, 0x76 + 0x09, 0x25, 0x01, 0x10, 0x17, 0x06, 0x01, 0x9D, 0x04, 0x35, 0x01, 0x01, + 0x38, 0x0E, 0x06, 0x2C, 0x25, 0x25, 0x01, 0x00, 0x75, 0x3E, 0xB1, 0x86, + 0x2E, 0x01, 0x01, 0x0E, 0x01, 0x01, 0xA6, 0x37, 0x06, 0x17, 0x29, 0x1A, + 0x36, 0x06, 0x04, 0xCB, 0x25, 0x04, 0x78, 0x01, 0x80, 0x64, 0xC3, 0x01, + 0x01, 0x75, 0x3E, 0x01, 0x17, 0x85, 0x3E, 0x04, 0x01, 0x9D, 0x04, 0x03, + 0x70, 0x28, 0x25, 0x04, 0xFF, 0x34, 0x01, 0x26, 0x03, 0x00, 0x09, 0x26, + 0x56, 0x06, 0x02, 0x66, 0x28, 0x02, 0x00, 0x00, 0x00, 0x98, 0x01, 0x0F, + 0x17, 0x00, 0x00, 0x74, 0x2E, 0x01, 0x00, 0x38, 0x0E, 0x06, 0x10, 0x25, + 0x26, 0x01, 0x01, 0x0D, 0x06, 0x03, 0x25, 0x01, 0x02, 0x74, 0x3E, 0x01, + 0x00, 0x04, 0x21, 0x01, 0x01, 0x38, 0x0E, 0x06, 0x14, 0x25, 0x01, 0x00, + 0x74, 0x3E, 0x26, 0x01, 0x80, 0x64, 0x0E, 0x06, 0x05, 0x01, 0x82, 0x00, + 0x08, 0x28, 0x58, 0x04, 0x07, 0x25, 0x01, 0x82, 0x00, 0x08, 0x28, 0x25, + 0x00, 0x00, 0x01, 0x00, 0x2F, 0x06, 0x05, 0x3A, 0xAA, 0x37, 0x04, 0x78, + 0x26, 0x06, 0x04, 0x01, 0x01, 0x8D, 0x3E, 0x00, 0x01, 0xBD, 0xA8, 0xBD, + 0xA8, 0xBF, 0x82, 0x44, 0x26, 0x03, 0x00, 0xB4, 0x99, 0x99, 0x02, 0x00, + 0x4B, 0x26, 0x56, 0x06, 0x0A, 0x01, 0x03, 0xA6, 0x06, 0x02, 0x70, 0x28, + 0x25, 0x04, 0x03, 0x5A, 0x88, 0x3C, 0x00, 0x00, 0x2F, 0x06, 0x0B, 0x84, + 0x2E, 0x01, 0x14, 0x0D, 0x06, 0x02, 0x70, 0x28, 0x04, 0x11, 0xCB, 0x01, + 0x07, 0x17, 0x26, 0x01, 0x02, 0x0D, 0x06, 0x06, 0x06, 0x02, 0x70, 0x28, + 0x04, 0x70, 0x25, 0xC0, 0x01, 0x01, 0x0D, 0x33, 0x37, 0x06, 0x02, 0x5F, + 0x28, 0x26, 0x01, 0x01, 0xC6, 0x36, 0xB0, 0x00, 0x01, 0xB6, 0x01, 0x0B, + 0x0E, 0x05, 0x02, 0x70, 0x28, 0x26, 0x01, 0x03, 0x0E, 0x06, 0x08, 0xBE, + 0x06, 0x02, 0x66, 0x28, 0x44, 0x25, 0x00, 0x44, 0x55, 0xBE, 0xA8, 0x26, + 0x06, 0x23, 0xBE, 0xA8, 0x26, 0x54, 0x26, 0x06, 0x18, 0x26, 0x01, 0x82, + 0x00, 0x0F, 0x06, 0x05, 0x01, 0x82, 0x00, 0x04, 0x01, 0x26, 0x03, 0x00, + 0x82, 0x02, 0x00, 0xB4, 0x02, 0x00, 0x51, 0x04, 0x65, 0x99, 0x52, 0x04, + 0x5A, 0x99, 0x99, 0x53, 0x26, 0x06, 0x02, 0x35, 0x00, 0x25, 0x2B, 0x00, + 0x00, 0x77, 0x2C, 0x9F, 0x01, 0x7F, 0xAE, 0x26, 0x56, 0x06, 0x02, 0x35, + 0x28, 0x26, 0x05, 0x02, 0x70, 0x28, 0x38, 0x17, 0x0D, 0x06, 0x02, 0x72, + 0x28, 0x3B, 0x00, 0x00, 0x9A, 0xB6, 0x01, 0x14, 0x0D, 0x06, 0x02, 0x70, + 0x28, 0x82, 0x01, 0x0C, 0x08, 0x01, 0x0C, 0xB4, 0x99, 0x82, 0x26, 0x01, + 0x0C, 0x08, 0x01, 0x0C, 0x30, 0x05, 0x02, 0x62, 0x28, 0x00, 0x00, 0xB7, + 0x06, 0x02, 0x70, 0x28, 0x06, 0x02, 0x64, 0x28, 0x00, 0x0A, 0xB6, 0x01, + 0x02, 0x0E, 0x05, 0x02, 0x70, 0x28, 0xBD, 0x03, 0x00, 0x02, 0x00, 0x93, + 0x2C, 0x0A, 0x02, 0x00, 0x92, 0x2C, 0x0F, 0x37, 0x06, 0x02, 0x71, 0x28, + 0x02, 0x00, 0x91, 0x2C, 0x0D, 0x06, 0x02, 0x69, 0x28, 0x02, 0x00, 0x94, + 0x3C, 0x8A, 0x01, 0x20, 0xB4, 0x01, 0x00, 0x03, 0x01, 0xBF, 0x03, 0x02, + 0x02, 0x02, 0x01, 0x20, 0x0F, 0x06, 0x02, 0x6E, 0x28, 0x82, 0x02, 0x02, + 0xB4, 0x02, 0x02, 0x8C, 0x2E, 0x0E, 0x02, 0x02, 0x01, 0x00, 0x0F, 0x17, + 0x06, 0x0B, 0x8B, 0x82, 0x02, 0x02, 0x30, 0x06, 0x04, 0x01, 0x7F, 0x03, + 0x01, 0x8B, 0x82, 0x02, 0x02, 0x31, 0x02, 0x02, 0x8C, 0x3E, 0x02, 0x00, + 0x90, 0x02, 0x01, 0x96, 0xBD, 0x26, 0xC1, 0x56, 0x06, 0x02, 0x60, 0x28, + 0x77, 0x02, 0x01, 0x96, 0xBF, 0x06, 0x02, 0x61, 0x28, 0x26, 0x06, 0x81, + 0x47, 0xBD, 0xA8, 0xA4, 0x03, 0x03, 0xA2, 0x03, 0x04, 0xA0, 0x03, 0x05, + 0xA3, 0x03, 0x06, 0xA5, 0x03, 0x07, 0xA1, 0x03, 0x08, 0x27, 0x03, 0x09, + 0x26, 0x06, 0x81, 0x18, 0xBD, 0x01, 0x00, 0x38, 0x0E, 0x06, 0x0F, 0x25, + 0x02, 0x03, 0x05, 0x02, 0x6A, 0x28, 0x01, 0x00, 0x03, 0x03, 0xBC, 0x04, + 0x80, 0x7F, 0x01, 0x01, 0x38, 0x0E, 0x06, 0x0F, 0x25, 0x02, 0x05, 0x05, + 0x02, 0x6A, 0x28, 0x01, 0x00, 0x03, 0x05, 0xBA, 0x04, 0x80, 0x6A, 0x01, + 0x83, 0xFE, 0x01, 0x38, 0x0E, 0x06, 0x0F, 0x25, 0x02, 0x04, 0x05, 0x02, + 0x6A, 0x28, 0x01, 0x00, 0x03, 0x04, 0xBB, 0x04, 0x80, 0x53, 0x01, 0x0D, + 0x38, 0x0E, 0x06, 0x0E, 0x25, 0x02, 0x06, 0x05, 0x02, 0x6A, 0x28, 0x01, + 0x00, 0x03, 0x06, 0xB8, 0x04, 0x3F, 0x01, 0x0A, 0x38, 0x0E, 0x06, 0x0E, + 0x25, 0x02, 0x07, 0x05, 0x02, 0x6A, 0x28, 0x01, 0x00, 0x03, 0x07, 0xB8, + 0x04, 0x2B, 0x01, 0x0B, 0x38, 0x0E, 0x06, 0x0E, 0x25, 0x02, 0x08, 0x05, + 0x02, 0x6A, 0x28, 0x01, 0x00, 0x03, 0x08, 0xB8, 0x04, 0x17, 0x01, 0x10, + 0x38, 0x0E, 0x06, 0x0E, 0x25, 0x02, 0x09, 0x05, 0x02, 0x6A, 0x28, 0x01, + 0x00, 0x03, 0x09, 0xAC, 0x04, 0x03, 0x6A, 0x28, 0x25, 0x04, 0xFE, 0x64, + 0x02, 0x04, 0x06, 0x0D, 0x02, 0x04, 0x01, 0x05, 0x0F, 0x06, 0x02, 0x67, + 0x28, 0x01, 0x01, 0x86, 0x3E, 0x99, 0x04, 0x0C, 0xA2, 0x01, 0x05, 0x0F, + 0x06, 0x02, 0x67, 0x28, 0x01, 0x01, 0x86, 0x3E, 0x99, 0x02, 0x01, 0x00, + 0x04, 0xB6, 0x01, 0x0C, 0x0E, 0x05, 0x02, 0x70, 0x28, 0xBF, 0x01, 0x03, + 0x0E, 0x05, 0x02, 0x6B, 0x28, 0xBD, 0x26, 0x7A, 0x3E, 0x26, 0x01, 0x20, + 0x10, 0x06, 0x02, 0x6B, 0x28, 0x40, 0x44, 0x11, 0x01, 0x01, 0x17, 0x05, + 0x02, 0x6B, 0x28, 0xBF, 0x26, 0x01, 0x81, 0x05, 0x0F, 0x06, 0x02, 0x6B, + 0x28, 0x26, 0x7C, 0x3E, 0x7B, 0x44, 0xB4, 0x90, 0x2C, 0x01, 0x86, 0x03, + 0x10, 0x03, 0x00, 0x77, 0x2C, 0xC9, 0x03, 0x01, 0x01, 0x02, 0x03, 0x02, + 0x02, 0x00, 0x06, 0x21, 0xBF, 0x26, 0x26, 0x01, 0x02, 0x0A, 0x44, 0x01, + 0x06, 0x0F, 0x37, 0x06, 0x02, 0x6B, 0x28, 0x03, 0x02, 0xBF, 0x02, 0x01, + 0x01, 0x01, 0x0B, 0x01, 0x03, 0x08, 0x0E, 0x05, 0x02, 0x6B, 0x28, 0x04, + 0x08, 0x02, 0x01, 0x06, 0x04, 0x01, 0x00, 0x03, 0x02, 0xBD, 0x26, 0x03, + 0x03, 0x26, 0x01, 0x84, 0x00, 0x0F, 0x06, 0x02, 0x6C, 0x28, 0x82, 0x44, + 0xB4, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x4E, 0x26, 0x06, 0x01, 0x28, + 0x25, 0x99, 0x00, 0x02, 0x03, 0x00, 0x03, 0x01, 0x02, 0x00, 0x95, 0x02, + 0x01, 0x02, 0x00, 0x39, 0x26, 0x01, 0x00, 0x0E, 0x06, 0x02, 0x5E, 0x00, + 0xCD, 0x04, 0x74, 0x02, 0x01, 0x00, 0x03, 0x00, 0xBF, 0xA8, 0x26, 0x06, + 0x80, 0x43, 0xBF, 0x01, 0x01, 0x38, 0x0E, 0x06, 0x06, 0x25, 0x01, 0x81, + 0x7F, 0x04, 0x2E, 0x01, 0x80, 0x40, 0x38, 0x0E, 0x06, 0x07, 0x25, 0x01, + 0x83, 0xFE, 0x00, 0x04, 0x20, 0x01, 0x80, 0x41, 0x38, 0x0E, 0x06, 0x07, + 0x25, 0x01, 0x84, 0x80, 0x00, 0x04, 0x12, 0x01, 0x80, 0x42, 0x38, 0x0E, + 0x06, 0x07, 0x25, 0x01, 0x88, 0x80, 0x00, 0x04, 0x04, 0x01, 0x00, 0x44, + 0x25, 0x02, 0x00, 0x37, 0x03, 0x00, 0x04, 0xFF, 0x39, 0x99, 0x77, 0x2C, + 0xC7, 0x05, 0x09, 0x02, 0x00, 0x01, 0x83, 0xFF, 0x7F, 0x17, 0x03, 0x00, + 0x90, 0x2C, 0x01, 0x86, 0x03, 0x10, 0x06, 0x3A, 0xB9, 0x26, 0x7F, 0x3D, + 0x41, 0x25, 0x26, 0x01, 0x08, 0x0B, 0x37, 0x01, 0x8C, 0x80, 0x00, 0x37, + 0x17, 0x02, 0x00, 0x17, 0x02, 0x00, 0x01, 0x8C, 0x80, 0x00, 0x17, 0x06, + 0x19, 0x26, 0x01, 0x81, 0x7F, 0x17, 0x06, 0x05, 0x01, 0x84, 0x80, 0x00, + 0x37, 0x26, 0x01, 0x83, 0xFE, 0x00, 0x17, 0x06, 0x05, 0x01, 0x88, 0x80, + 0x00, 0x37, 0x03, 0x00, 0x04, 0x09, 0x02, 0x00, 0x01, 0x8C, 0x88, 0x01, + 0x17, 0x03, 0x00, 0x16, 0xBD, 0xA8, 0x26, 0x06, 0x23, 0xBD, 0xA8, 0x26, + 0x15, 0x26, 0x06, 0x18, 0x26, 0x01, 0x82, 0x00, 0x0F, 0x06, 0x05, 0x01, + 0x82, 0x00, 0x04, 0x01, 0x26, 0x03, 0x01, 0x82, 0x02, 0x01, 0xB4, 0x02, + 0x01, 0x12, 0x04, 0x65, 0x99, 0x13, 0x04, 0x5A, 0x99, 0x14, 0x99, 0x02, + 0x00, 0x2A, 0x00, 0x00, 0xB7, 0x26, 0x58, 0x06, 0x07, 0x25, 0x06, 0x02, + 0x64, 0x28, 0x04, 0x74, 0x00, 0x00, 0xC0, 0x01, 0x03, 0xBE, 0x44, 0x25, + 0x44, 0x00, 0x00, 0xBD, 0xC4, 0x00, 0x03, 0x01, 0x00, 0x03, 0x00, 0xBD, + 0xA8, 0x26, 0x06, 0x80, 0x50, 0xBF, 0x03, 0x01, 0xBF, 0x03, 0x02, 0x02, + 0x01, 0x01, 0x08, 0x0E, 0x06, 0x16, 0x02, 0x02, 0x01, 0x0F, 0x0C, 0x06, + 0x0D, 0x01, 0x01, 0x02, 0x02, 0x01, 0x10, 0x08, 0x0B, 0x02, 0x00, 0x37, + 0x03, 0x00, 0x04, 0x2A, 0x02, 0x01, 0x01, 0x02, 0x10, 0x02, 0x01, 0x01, + 0x06, 0x0C, 0x17, 0x02, 0x02, 0x01, 0x01, 0x0E, 0x02, 0x02, 0x01, 0x03, + 0x0E, 0x37, 0x17, 0x06, 0x11, 0x02, 0x00, 0x01, 0x01, 0x02, 0x02, 0x5B, + 0x01, 0x02, 0x0B, 0x02, 0x01, 0x08, 0x0B, 0x37, 0x03, 0x00, 0x04, 0xFF, + 0x2C, 0x99, 0x02, 0x00, 0x00, 0x00, 0xBD, 0x01, 0x01, 0x0E, 0x05, 0x02, + 0x63, 0x28, 0xBF, 0x01, 0x08, 0x08, 0x80, 0x2E, 0x0E, 0x05, 0x02, 0x63, + 0x28, 0x00, 0x00, 0xBD, 0x86, 0x2E, 0x05, 0x15, 0x01, 0x01, 0x0E, 0x05, + 0x02, 0x67, 0x28, 0xBF, 0x01, 0x00, 0x0E, 0x05, 0x02, 0x67, 0x28, 0x01, + 0x02, 0x86, 0x3E, 0x04, 0x1C, 0x01, 0x19, 0x0E, 0x05, 0x02, 0x67, 0x28, + 0xBF, 0x01, 0x18, 0x0E, 0x05, 0x02, 0x67, 0x28, 0x82, 0x01, 0x18, 0xB4, + 0x87, 0x82, 0x01, 0x18, 0x30, 0x05, 0x02, 0x67, 0x28, 0x00, 0x00, 0xBD, + 0x06, 0x02, 0x68, 0x28, 0x00, 0x00, 0x01, 0x02, 0x95, 0xC0, 0x01, 0x08, + 0x0B, 0xC0, 0x08, 0x00, 0x00, 0x01, 0x03, 0x95, 0xC0, 0x01, 0x08, 0x0B, + 0xC0, 0x08, 0x01, 0x08, 0x0B, 0xC0, 0x08, 0x00, 0x00, 0x01, 0x01, 0x95, + 0xC0, 0x00, 0x00, 0x3A, 0x26, 0x56, 0x05, 0x01, 0x00, 0x25, 0xCD, 0x04, + 0x76, 0x02, 0x03, 0x00, 0x8F, 0x2E, 0x03, 0x01, 0x01, 0x00, 0x26, 0x02, + 0x01, 0x0A, 0x06, 0x10, 0x26, 0x01, 0x01, 0x0B, 0x8E, 0x08, 0x2C, 0x02, + 0x00, 0x0E, 0x06, 0x01, 0x00, 0x5A, 0x04, 0x6A, 0x25, 0x01, 0x7F, 0x00, + 0x00, 0x01, 0x15, 0x85, 0x3E, 0x44, 0x50, 0x25, 0x50, 0x25, 0x29, 0x00, + 0x00, 0x01, 0x01, 0x44, 0xC2, 0x00, 0x00, 0x44, 0x38, 0x95, 0x44, 0x26, + 0x06, 0x05, 0xC0, 0x25, 0x5B, 0x04, 0x78, 0x25, 0x00, 0x00, 0x26, 0x01, + 0x81, 0xAC, 0x00, 0x0E, 0x06, 0x04, 0x25, 0x01, 0x7F, 0x00, 0x98, 0x57, + 0x00, 0x02, 0x03, 0x00, 0x77, 0x2C, 0x98, 0x03, 0x01, 0x02, 0x01, 0x01, + 0x0F, 0x17, 0x02, 0x01, 0x01, 0x04, 0x11, 0x01, 0x0F, 0x17, 0x02, 0x01, + 0x01, 0x08, 0x11, 0x01, 0x0F, 0x17, 0x01, 0x00, 0x38, 0x0E, 0x06, 0x10, + 0x25, 0x01, 0x00, 0x01, 0x18, 0x02, 0x00, 0x06, 0x03, 0x47, 0x04, 0x01, + 0x48, 0x04, 0x80, 0x68, 0x01, 0x01, 0x38, 0x0E, 0x06, 0x10, 0x25, 0x01, + 0x01, 0x01, 0x10, 0x02, 0x00, 0x06, 0x03, 0x47, 0x04, 0x01, 0x48, 0x04, + 0x80, 0x52, 0x01, 0x02, 0x38, 0x0E, 0x06, 0x0F, 0x25, 0x01, 0x01, 0x01, + 0x20, 0x02, 0x00, 0x06, 0x03, 0x47, 0x04, 0x01, 0x48, 0x04, 0x3D, 0x01, + 0x03, 0x38, 0x0E, 0x06, 0x0E, 0x25, 0x25, 0x01, 0x10, 0x02, 0x00, 0x06, + 0x03, 0x45, 0x04, 0x01, 0x46, 0x04, 0x29, 0x01, 0x04, 0x38, 0x0E, 0x06, + 0x0E, 0x25, 0x25, 0x01, 0x20, 0x02, 0x00, 0x06, 0x03, 0x45, 0x04, 0x01, + 0x46, 0x04, 0x15, 0x01, 0x05, 0x38, 0x0E, 0x06, 0x0C, 0x25, 0x25, 0x02, + 0x00, 0x06, 0x03, 0x49, 0x04, 0x01, 0x4A, 0x04, 0x03, 0x66, 0x28, 0x25, + 0x00, 0x00, 0x98, 0x01, 0x0C, 0x11, 0x01, 0x02, 0x0F, 0x00, 0x00, 0x98, + 0x01, 0x0C, 0x11, 0x26, 0x59, 0x44, 0x01, 0x03, 0x0A, 0x17, 0x00, 0x00, + 0x98, 0x01, 0x0C, 0x11, 0x01, 0x01, 0x0E, 0x00, 0x00, 0x98, 0x01, 0x0C, + 0x11, 0x58, 0x00, 0x00, 0x1B, 0x01, 0x00, 0x73, 0x2E, 0x26, 0x06, 0x22, + 0x01, 0x01, 0x38, 0x0E, 0x06, 0x06, 0x25, 0x01, 0x00, 0x9C, 0x04, 0x14, + 0x01, 0x02, 0x38, 0x0E, 0x06, 0x0D, 0x25, 0x75, 0x2E, 0x01, 0x01, 0x0E, + 0x06, 0x03, 0x01, 0x10, 0x37, 0x04, 0x01, 0x25, 0x04, 0x01, 0x25, 0x79, + 0x2E, 0x05, 0x33, 0x2F, 0x06, 0x30, 0x84, 0x2E, 0x01, 0x14, 0x38, 0x0E, + 0x06, 0x06, 0x25, 0x01, 0x02, 0x37, 0x04, 0x22, 0x01, 0x15, 0x38, 0x0E, + 0x06, 0x09, 0x25, 0xAB, 0x06, 0x03, 0x01, 0x7F, 0x9C, 0x04, 0x13, 0x01, + 0x16, 0x38, 0x0E, 0x06, 0x06, 0x25, 0x01, 0x01, 0x37, 0x04, 0x07, 0x25, + 0x01, 0x04, 0x37, 0x01, 0x00, 0x25, 0x1A, 0x06, 0x03, 0x01, 0x08, 0x37, + 0x00, 0x00, 0x1B, 0x26, 0x05, 0x13, 0x2F, 0x06, 0x10, 0x84, 0x2E, 0x01, + 0x15, 0x0E, 0x06, 0x08, 0x25, 0xAB, 0x01, 0x00, 0x75, 0x3E, 0x04, 0x01, + 0x20, 0x00, 0x00, 0xCB, 0x01, 0x07, 0x17, 0x01, 0x01, 0x0F, 0x06, 0x02, + 0x70, 0x28, 0x00, 0x01, 0x03, 0x00, 0x29, 0x1A, 0x06, 0x05, 0x02, 0x00, + 0x85, 0x3E, 0x00, 0xCB, 0x25, 0x04, 0x74, 0x00, 0x01, 0x14, 0xCE, 0x01, + 0x01, 0xDB, 0x29, 0x26, 0x01, 0x00, 0xC6, 0x01, 0x16, 0xCE, 0xD4, 0x29, + 0x00, 0x00, 0x01, 0x0B, 0xDB, 0x4C, 0x26, 0x26, 0x01, 0x03, 0x08, 0xDA, + 0xDA, 0x18, 0x26, 0x56, 0x06, 0x02, 0x25, 0x00, 0xDA, 0x1D, 0x26, 0x06, + 0x05, 0x82, 0x44, 0xD5, 0x04, 0x77, 0x25, 0x04, 0x6C, 0x00, 0x21, 0x01, + 0x0F, 0xDB, 0x26, 0x90, 0x2C, 0x01, 0x86, 0x03, 0x10, 0x06, 0x0C, 0x01, + 0x04, 0x08, 0xDA, 0x7E, 0x2E, 0xDB, 0x76, 0x2E, 0xDB, 0x04, 0x02, 0x5C, + 0xDA, 0x26, 0xD9, 0x82, 0x44, 0xD5, 0x00, 0x02, 0xA2, 0xA4, 0x08, 0xA0, + 0x08, 0xA3, 0x08, 0xA5, 0x08, 0xA1, 0x08, 0x27, 0x08, 0x03, 0x00, 0x01, + 0x01, 0xDB, 0x01, 0x27, 0x8C, 0x2E, 0x08, 0x8F, 0x2E, 0x01, 0x01, 0x0B, + 0x08, 0x02, 0x00, 0x06, 0x04, 0x5C, 0x02, 0x00, 0x08, 0x81, 0x2C, 0x38, + 0x09, 0x26, 0x59, 0x06, 0x24, 0x02, 0x00, 0x05, 0x04, 0x44, 0x5C, 0x44, + 0x5D, 0x01, 0x04, 0x09, 0x26, 0x56, 0x06, 0x03, 0x25, 0x01, 0x00, 0x26, + 0x01, 0x04, 0x08, 0x02, 0x00, 0x08, 0x03, 0x00, 0x44, 0x01, 0x04, 0x08, + 0x38, 0x08, 0x44, 0x04, 0x03, 0x25, 0x01, 0x7F, 0x03, 0x01, 0xDA, 0x92, + 0x2C, 0xD9, 0x78, 0x01, 0x04, 0x19, 0x78, 0x01, 0x04, 0x08, 0x01, 0x1C, + 0x32, 0x78, 0x01, 0x20, 0xD5, 0x8B, 0x8C, 0x2E, 0xD7, 0x8F, 0x2E, 0x26, + 0x01, 0x01, 0x0B, 0xD9, 0x8E, 0x44, 0x26, 0x06, 0x0F, 0x5B, 0x38, 0x2C, + 0x26, 0xC5, 0x05, 0x02, 0x60, 0x28, 0xD9, 0x44, 0x5C, 0x44, 0x04, 0x6E, + 0x5E, 0x01, 0x01, 0xDB, 0x01, 0x00, 0xDB, 0x02, 0x00, 0x06, 0x81, 0x5A, + 0x02, 0x00, 0xD9, 0xA2, 0x06, 0x0E, 0x01, 0x83, 0xFE, 0x01, 0xD9, 0x87, + 0xA2, 0x01, 0x04, 0x09, 0x26, 0xD9, 0x5B, 0xD7, 0xA4, 0x06, 0x16, 0x01, + 0x00, 0xD9, 0x89, 0xA4, 0x01, 0x04, 0x09, 0x26, 0xD9, 0x01, 0x02, 0x09, + 0x26, 0xD9, 0x01, 0x00, 0xDB, 0x01, 0x03, 0x09, 0xD6, 0xA0, 0x06, 0x0C, + 0x01, 0x01, 0xD9, 0x01, 0x01, 0xD9, 0x80, 0x2E, 0x01, 0x08, 0x09, 0xDB, + 0xA3, 0x06, 0x19, 0x01, 0x0D, 0xD9, 0xA3, 0x01, 0x04, 0x09, 0x26, 0xD9, + 0x01, 0x02, 0x09, 0xD9, 0x42, 0x06, 0x03, 0x01, 0x03, 0xD8, 0x43, 0x06, + 0x03, 0x01, 0x01, 0xD8, 0xA5, 0x26, 0x06, 0x36, 0x01, 0x0A, 0xD9, 0x01, + 0x04, 0x09, 0x26, 0xD9, 0x5D, 0xD9, 0x40, 0x01, 0x00, 0x26, 0x01, 0x82, + 0x80, 0x80, 0x80, 0x00, 0x17, 0x06, 0x0A, 0x01, 0xFD, 0xFF, 0xFF, 0xFF, + 0x7F, 0x17, 0x01, 0x1D, 0xD9, 0x26, 0x01, 0x20, 0x0A, 0x06, 0x0C, 0x9E, + 0x11, 0x01, 0x01, 0x17, 0x06, 0x02, 0x26, 0xD9, 0x5A, 0x04, 0x6E, 0x5E, + 0x04, 0x01, 0x25, 0xA1, 0x06, 0x0A, 0x01, 0x0B, 0xD9, 0x01, 0x02, 0xD9, + 0x01, 0x82, 0x00, 0xD9, 0x27, 0x26, 0x06, 0x1F, 0x01, 0x10, 0xD9, 0x01, + 0x04, 0x09, 0x26, 0xD9, 0x5D, 0xD9, 0x83, 0x2C, 0x01, 0x00, 0x9E, 0x0F, + 0x06, 0x0A, 0x26, 0x1E, 0x26, 0xDB, 0x82, 0x44, 0xD5, 0x5A, 0x04, 0x72, + 0x5E, 0x04, 0x01, 0x25, 0x02, 0x01, 0x56, 0x05, 0x11, 0x01, 0x15, 0xD9, + 0x02, 0x01, 0x26, 0xD9, 0x26, 0x06, 0x06, 0x5B, 0x01, 0x00, 0xDB, 0x04, + 0x77, 0x25, 0x00, 0x00, 0x01, 0x10, 0xDB, 0x77, 0x2C, 0x26, 0xCA, 0x06, + 0x0C, 0xA9, 0x23, 0x26, 0x5C, 0xDA, 0x26, 0xD9, 0x82, 0x44, 0xD5, 0x04, + 0x0D, 0x26, 0xC8, 0x44, 0xA9, 0x22, 0x26, 0x5A, 0xDA, 0x26, 0xDB, 0x82, + 0x44, 0xD5, 0x00, 0x00, 0x9A, 0x01, 0x14, 0xDB, 0x01, 0x0C, 0xDA, 0x82, + 0x01, 0x0C, 0xD5, 0x00, 0x00, 0x4F, 0x26, 0x01, 0x00, 0x0E, 0x06, 0x02, + 0x5E, 0x00, 0xCB, 0x25, 0x04, 0x73, 0x00, 0x26, 0xD9, 0xD5, 0x00, 0x00, + 0x26, 0xDB, 0xD5, 0x00, 0x01, 0x03, 0x00, 0x41, 0x25, 0x26, 0x01, 0x10, + 0x17, 0x06, 0x06, 0x01, 0x04, 0xDB, 0x02, 0x00, 0xDB, 0x26, 0x01, 0x08, + 0x17, 0x06, 0x06, 0x01, 0x03, 0xDB, 0x02, 0x00, 0xDB, 0x26, 0x01, 0x20, + 0x17, 0x06, 0x06, 0x01, 0x05, 0xDB, 0x02, 0x00, 0xDB, 0x26, 0x01, 0x80, + 0x40, 0x17, 0x06, 0x06, 0x01, 0x06, 0xDB, 0x02, 0x00, 0xDB, 0x01, 0x04, + 0x17, 0x06, 0x06, 0x01, 0x02, 0xDB, 0x02, 0x00, 0xDB, 0x00, 0x00, 0x26, + 0x01, 0x08, 0x4D, 0xDB, 0xDB, 0x00, 0x00, 0x26, 0x01, 0x10, 0x4D, 0xDB, + 0xD9, 0x00, 0x00, 0x26, 0x50, 0x06, 0x02, 0x25, 0x00, 0xCB, 0x25, 0x04, + 0x76 }; static const uint16_t t0_caddr[] = { @@ -811,58 +813,58 @@ static const uint16_t t0_caddr[] = { 694, 730, 740, - 810, - 824, - 830, - 889, - 908, - 943, - 992, - 1068, - 1095, - 1126, - 1137, - 1462, - 1609, - 1633, - 1849, - 1863, - 1872, - 1876, - 1971, - 1992, - 2048, - 2055, - 2066, - 2082, + 818, + 832, + 838, + 897, + 916, + 951, + 1000, + 1076, + 1103, + 1134, + 1145, + 1484, + 1631, + 1655, + 1871, + 1885, + 1894, + 1898, + 1993, + 2014, + 2070, + 2077, 2088, - 2099, - 2134, - 2146, - 2152, - 2167, - 2183, - 2339, - 2348, + 2104, + 2110, + 2121, + 2156, + 2168, + 2174, + 2189, + 2205, 2361, 2370, - 2377, - 2483, - 2508, - 2521, - 2537, - 2555, - 2587, - 2621, - 2989, - 3025, - 3038, - 3052, - 3057, - 3062, - 3128, - 3136, - 3144 + 2383, + 2392, + 2399, + 2505, + 2530, + 2543, + 2559, + 2577, + 2609, + 2643, + 3011, + 3047, + 3060, + 3074, + 3079, + 3084, + 3150, + 3158, + 3166 }; #define T0_INTERPRETED 86 diff --git a/src/ssl/ssl_hs_client.t0 b/src/ssl/ssl_hs_client.t0 index cfe5f78..911fdfc 100644 --- a/src/ssl/ssl_hs_client.t0 +++ b/src/ssl/ssl_hs_client.t0 @@ -805,6 +805,13 @@ cc: DEBUG-BLOB ( addr len -- ) { 1 addr-reneg set8 then close-elt + else + \ No extension received at all, so the server does not + \ support secure renegotiation. This is a hard failure + \ if the server was previously known to support it (i.e. + \ this is a renegotiation). + ext-reneg-length 5 > if ERR_BAD_SECRENEG fail then + 1 addr-reneg set8 then close-elt resume @@ -1257,6 +1264,12 @@ cc: do-client-sign ( -- sig_len ) { wait-co drop repeat 100 send-warning + \ We rejected the renegotiation, + \ but the connection is not dead. + \ We must set back things into + \ working "application data" state. + 1 addr-application_data set8 + 23 addr-record_type_out set8 else do-handshake then diff --git a/src/ssl/ssl_hs_common.t0 b/src/ssl/ssl_hs_common.t0 index 962daa7..dc025ff 100644 --- a/src/ssl/ssl_hs_common.t0 +++ b/src/ssl/ssl_hs_common.t0 @@ -79,6 +79,23 @@ preamble { : NYI ( -- ! ) "NOT YET IMPLEMENTED!" puts cr -1 fail ; +\ Debug function that prints a string (and a newline) on stderr. +cc: DBG ( addr -- ) { + extern void *stderr; + extern int fprintf(void *, const char *, ...); + fprintf(stderr, "%s\n", &t0_datablock[T0_POPi()]); +} + +\ Debug function that prints a string and an integer value (followed +\ by a newline) on stderr. +cc: DBG2 ( addr x -- ) { + extern void *stderr; + extern int fprintf(void *, const char *, ...); + int32_t x = T0_POPi(); + fprintf(stderr, "%s: %ld (0x%08lX)\n", + &t0_datablock[T0_POPi()], (long)x, (unsigned long)(uint32_t)x); +} + \ Mark the context as failed with a specific error code. This also \ returns control to the caller. cc: fail ( err -- ! ) { diff --git a/src/ssl/ssl_hs_server.c b/src/ssl/ssl_hs_server.c index 8a4c01b..3970d28 100644 --- a/src/ssl/ssl_hs_server.c +++ b/src/ssl/ssl_hs_server.c @@ -540,245 +540,248 @@ static const unsigned char t0_codeblock[] = { 0x01, 0x0C, 0x33, 0x00, 0x00, 0x2A, 0x22, 0x01, 0x08, 0x0C, 0x47, 0x5F, 0x22, 0x08, 0x00, 0x01, 0x03, 0x00, 0x75, 0x30, 0x02, 0x00, 0x38, 0x13, 0x01, 0x01, 0x0C, 0x75, 0x42, 0x2C, 0x19, 0x38, 0x06, 0x07, 0x02, 0x00, - 0xCD, 0x03, 0x00, 0x04, 0x75, 0x01, 0x00, 0xC5, 0x02, 0x00, 0x2A, 0x19, - 0x13, 0x06, 0x02, 0x6F, 0x2B, 0xCD, 0x04, 0x76, 0x00, 0x01, 0x00, 0x75, + 0xCE, 0x03, 0x00, 0x04, 0x75, 0x01, 0x00, 0xC5, 0x02, 0x00, 0x2A, 0x19, + 0x13, 0x06, 0x02, 0x6F, 0x2B, 0xCE, 0x04, 0x76, 0x00, 0x01, 0x00, 0x75, 0x42, 0x01, 0x16, 0x87, 0x42, 0x01, 0x00, 0x8A, 0x40, 0x36, 0xAF, 0x35, - 0x06, 0x02, 0x71, 0x2B, 0x06, 0x0A, 0xD4, 0x01, 0x00, 0xD0, 0x01, 0x00, - 0xAB, 0x04, 0x80, 0x46, 0xD4, 0xD1, 0x29, 0xD6, 0x4E, 0x06, 0x01, 0xD2, - 0xD5, 0x2C, 0x4E, 0x06, 0x31, 0x01, 0x00, 0xAC, 0x2A, 0x5B, 0x06, 0x0F, - 0x01, 0x02, 0xA2, 0x05, 0x02, 0x37, 0x2B, 0x29, 0xB0, 0xAE, 0x2A, 0xC6, + 0x06, 0x02, 0x71, 0x2B, 0x06, 0x0A, 0xD5, 0x01, 0x00, 0xD1, 0x01, 0x00, + 0xAB, 0x04, 0x80, 0x46, 0xD5, 0xD2, 0x29, 0xD7, 0x4E, 0x06, 0x01, 0xD3, + 0xD6, 0x2C, 0x4E, 0x06, 0x31, 0x01, 0x00, 0xAC, 0x2A, 0x5B, 0x06, 0x0F, + 0x01, 0x02, 0xA2, 0x05, 0x02, 0x37, 0x2B, 0x29, 0xB0, 0xAE, 0x2A, 0xC7, 0x29, 0x04, 0x19, 0x2A, 0x5D, 0x06, 0x0B, 0x29, 0x01, 0x02, 0xA2, 0x05, 0x02, 0x6E, 0x2B, 0xB0, 0x04, 0x0A, 0xB2, 0x2A, 0x05, 0x04, 0x29, 0xA9, 0x04, 0x02, 0xB1, 0xAD, 0x04, 0x01, 0xB0, 0x01, 0x00, 0xAB, 0x01, 0x00, - 0xD0, 0x3E, 0x01, 0x01, 0x75, 0x42, 0x01, 0x17, 0x87, 0x42, 0x00, 0x00, - 0x3A, 0x3A, 0x00, 0x01, 0x03, 0x00, 0x2C, 0x19, 0x38, 0x06, 0x04, 0xCC, + 0xD1, 0x3E, 0x01, 0x01, 0x75, 0x42, 0x01, 0x17, 0x87, 0x42, 0x00, 0x00, + 0x3A, 0x3A, 0x00, 0x01, 0x03, 0x00, 0x2C, 0x19, 0x38, 0x06, 0x04, 0xCD, 0x29, 0x04, 0x78, 0x01, 0x02, 0x02, 0x00, 0xC4, 0x19, 0x38, 0x06, 0x04, - 0xCC, 0x29, 0x04, 0x78, 0x02, 0x00, 0x01, 0x84, 0x00, 0x08, 0x2B, 0x00, + 0xCD, 0x29, 0x04, 0x78, 0x02, 0x00, 0x01, 0x84, 0x00, 0x08, 0x2B, 0x00, 0x00, 0x7F, 0x2F, 0x47, 0x12, 0x01, 0x01, 0x13, 0x37, 0x00, 0x00, 0x2A, 0x05, 0x04, 0x29, 0x01, 0x7F, 0x00, 0x01, 0x00, 0xA0, 0x12, 0x01, 0x01, 0x13, 0x5D, 0x06, 0x03, 0x5F, 0x04, 0x75, 0x47, 0x29, 0x00, 0x00, 0x01, - 0x7F, 0x9F, 0xCC, 0x2A, 0x01, 0x07, 0x13, 0x01, 0x00, 0x3A, 0x0F, 0x06, - 0x09, 0x29, 0x01, 0x10, 0x13, 0x06, 0x01, 0xC3, 0x04, 0x2A, 0x01, 0x01, - 0x3A, 0x0F, 0x06, 0x21, 0x29, 0x29, 0x88, 0x30, 0x01, 0x01, 0x0F, 0x01, - 0x01, 0xA2, 0x39, 0x06, 0x0F, 0x2C, 0x19, 0x38, 0x06, 0x04, 0xCC, 0x29, - 0x04, 0x78, 0x01, 0x80, 0x64, 0xC5, 0x04, 0x03, 0x01, 0x00, 0x9F, 0x04, - 0x03, 0x71, 0x2B, 0x29, 0x04, 0x40, 0x01, 0x2A, 0x03, 0x00, 0x09, 0x2A, - 0x5B, 0x06, 0x02, 0x68, 0x2B, 0x02, 0x00, 0x00, 0x00, 0x9A, 0x01, 0x0F, - 0x13, 0x00, 0x00, 0x74, 0x30, 0x01, 0x00, 0x3A, 0x0F, 0x06, 0x10, 0x29, - 0x2A, 0x01, 0x01, 0x0E, 0x06, 0x03, 0x29, 0x01, 0x02, 0x74, 0x42, 0x01, - 0x00, 0x04, 0x21, 0x01, 0x01, 0x3A, 0x0F, 0x06, 0x14, 0x29, 0x01, 0x00, - 0x74, 0x42, 0x2A, 0x01, 0x80, 0x64, 0x0F, 0x06, 0x05, 0x01, 0x82, 0x00, - 0x08, 0x2B, 0x5D, 0x04, 0x07, 0x29, 0x01, 0x82, 0x00, 0x08, 0x2B, 0x29, - 0x00, 0x00, 0x01, 0x00, 0x31, 0x06, 0x05, 0x3D, 0xA7, 0x39, 0x04, 0x78, - 0x2A, 0x06, 0x04, 0x01, 0x01, 0x8F, 0x42, 0x00, 0x00, 0x01, 0x1F, 0x13, - 0x01, 0x12, 0x0F, 0x05, 0x02, 0x72, 0x2B, 0x76, 0x2E, 0x2A, 0xC8, 0x05, - 0x02, 0x71, 0x2B, 0xA6, 0x28, 0x00, 0x02, 0x85, 0x2E, 0x05, 0x02, 0xBA, - 0x00, 0xBE, 0xA5, 0xBE, 0xA5, 0x01, 0x7E, 0x03, 0x00, 0x2A, 0x06, 0x17, - 0xC0, 0x2A, 0x03, 0x01, 0x83, 0x47, 0xB4, 0x02, 0x01, 0x4F, 0x2A, 0x02, - 0x00, 0x51, 0x06, 0x04, 0x03, 0x00, 0x04, 0x01, 0x29, 0x04, 0x66, 0x9B, - 0x9B, 0x02, 0x00, 0x5F, 0x8A, 0x40, 0x00, 0x00, 0x31, 0x06, 0x0B, 0x86, - 0x30, 0x01, 0x14, 0x0E, 0x06, 0x02, 0x71, 0x2B, 0x04, 0x11, 0xCC, 0x01, - 0x07, 0x13, 0x2A, 0x01, 0x02, 0x0E, 0x06, 0x06, 0x06, 0x02, 0x71, 0x2B, - 0x04, 0x70, 0x29, 0xC1, 0x01, 0x01, 0x0E, 0x35, 0x39, 0x06, 0x02, 0x64, - 0x2B, 0x2A, 0x01, 0x01, 0xC7, 0x38, 0xB3, 0x00, 0x01, 0xB8, 0x01, 0x0B, - 0x0F, 0x05, 0x02, 0x71, 0x2B, 0x2A, 0x01, 0x03, 0x0F, 0x06, 0x08, 0xBF, - 0x06, 0x02, 0x68, 0x2B, 0x47, 0x29, 0x00, 0x47, 0x5A, 0xBF, 0xA5, 0x2A, - 0x06, 0x23, 0xBF, 0xA5, 0x2A, 0x59, 0x2A, 0x06, 0x18, 0x2A, 0x01, 0x82, - 0x00, 0x10, 0x06, 0x05, 0x01, 0x82, 0x00, 0x04, 0x01, 0x2A, 0x03, 0x00, - 0x83, 0x02, 0x00, 0xB4, 0x02, 0x00, 0x56, 0x04, 0x65, 0x9B, 0x57, 0x04, - 0x5A, 0x9B, 0x9B, 0x58, 0x2A, 0x06, 0x02, 0x37, 0x00, 0x29, 0x2D, 0x00, - 0x02, 0x2A, 0x01, 0x20, 0x13, 0x05, 0x02, 0x72, 0x2B, 0x01, 0x0F, 0x13, - 0x03, 0x00, 0xAE, 0x93, 0x2E, 0x01, 0x86, 0x03, 0x11, 0x06, 0x23, 0xBE, - 0x2A, 0x01, 0x81, 0x7F, 0x13, 0x5F, 0x01, 0x01, 0x12, 0x02, 0x00, 0x0F, - 0x05, 0x02, 0x6A, 0x2B, 0x01, 0x08, 0x12, 0x2A, 0x01, 0x02, 0x0B, 0x3A, - 0x01, 0x06, 0x10, 0x39, 0x06, 0x02, 0x6C, 0x2B, 0x04, 0x0D, 0x02, 0x00, - 0x01, 0x01, 0x0F, 0x06, 0x04, 0x01, 0x00, 0x04, 0x02, 0x01, 0x02, 0x20, - 0x05, 0x02, 0x6C, 0x2B, 0xBE, 0x2A, 0x03, 0x01, 0x2A, 0x01, 0x84, 0x00, - 0x10, 0x06, 0x02, 0x6D, 0x2B, 0x83, 0x47, 0xB4, 0x02, 0x01, 0x53, 0x2A, - 0x06, 0x01, 0x2B, 0x29, 0x9B, 0x00, 0x00, 0x1D, 0xB8, 0x01, 0x0F, 0x0F, - 0x05, 0x02, 0x71, 0x2B, 0x00, 0x0A, 0xB8, 0x01, 0x01, 0x0F, 0x05, 0x02, - 0x71, 0x2B, 0xBE, 0x2A, 0x03, 0x00, 0x77, 0x40, 0x78, 0x01, 0x20, 0xB4, - 0xC0, 0x2A, 0x01, 0x20, 0x10, 0x06, 0x02, 0x70, 0x2B, 0x2A, 0x8E, 0x42, - 0x8D, 0x47, 0xB4, 0x1A, 0x03, 0x01, 0xBE, 0xA5, 0x01, 0x00, 0x03, 0x02, - 0x01, 0x00, 0x03, 0x03, 0x81, 0xA0, 0x17, 0x3A, 0x08, 0x03, 0x04, 0x03, - 0x05, 0x2A, 0x06, 0x80, 0x6D, 0xBE, 0x2A, 0x03, 0x06, 0x02, 0x01, 0x06, - 0x0A, 0x2A, 0x76, 0x2E, 0x0F, 0x06, 0x04, 0x01, 0x7F, 0x03, 0x03, 0x2A, - 0x01, 0x81, 0x7F, 0x0F, 0x06, 0x0A, 0x88, 0x30, 0x06, 0x02, 0x69, 0x2B, - 0x01, 0x7F, 0x03, 0x02, 0x2A, 0x01, 0x81, 0xAC, 0x00, 0x0F, 0x06, 0x11, - 0x02, 0x00, 0x96, 0x2E, 0x11, 0x02, 0x00, 0x95, 0x2E, 0x0B, 0x13, 0x06, - 0x04, 0x01, 0x7F, 0x03, 0x00, 0xC2, 0x2A, 0x5B, 0x06, 0x03, 0x29, 0x04, - 0x26, 0x01, 0x00, 0xA2, 0x06, 0x0B, 0x01, 0x02, 0x0C, 0x79, 0x08, 0x02, - 0x06, 0x47, 0x40, 0x04, 0x16, 0x29, 0x02, 0x05, 0x02, 0x04, 0x11, 0x06, - 0x02, 0x67, 0x2B, 0x02, 0x06, 0x02, 0x05, 0x40, 0x02, 0x05, 0x01, 0x04, - 0x08, 0x03, 0x05, 0x04, 0xFF, 0x0F, 0x29, 0x01, 0x00, 0x03, 0x07, 0xC0, - 0xA5, 0x2A, 0x06, 0x09, 0xC0, 0x05, 0x04, 0x01, 0x7F, 0x03, 0x07, 0x04, - 0x74, 0x9B, 0x01, 0x00, 0x8B, 0x42, 0x01, 0x88, 0x04, 0x80, 0x41, 0x01, - 0x84, 0x80, 0x80, 0x00, 0x7C, 0x41, 0x2A, 0x06, 0x80, 0x4E, 0xBE, 0xA5, - 0x2A, 0x06, 0x80, 0x47, 0xBE, 0x01, 0x00, 0x3A, 0x0F, 0x06, 0x04, 0x29, - 0xB7, 0x04, 0x39, 0x01, 0x01, 0x3A, 0x0F, 0x06, 0x04, 0x29, 0xB5, 0x04, - 0x2F, 0x01, 0x83, 0xFE, 0x01, 0x3A, 0x0F, 0x06, 0x04, 0x29, 0xB6, 0x04, - 0x23, 0x01, 0x0D, 0x3A, 0x0F, 0x06, 0x04, 0x29, 0xBC, 0x04, 0x19, 0x01, - 0x0A, 0x3A, 0x0F, 0x06, 0x04, 0x29, 0xBD, 0x04, 0x0F, 0x01, 0x10, 0x3A, - 0x0F, 0x06, 0x04, 0x29, 0xAA, 0x04, 0x05, 0x29, 0xBA, 0x01, 0x00, 0x29, - 0x04, 0xFF, 0x35, 0x9B, 0x9B, 0x02, 0x01, 0x02, 0x03, 0x13, 0x03, 0x01, - 0x02, 0x00, 0x5B, 0x06, 0x08, 0x77, 0x2E, 0x97, 0x40, 0x01, 0x80, 0x56, - 0xA1, 0x95, 0x2E, 0x2A, 0x02, 0x00, 0x10, 0x06, 0x03, 0x29, 0x02, 0x00, - 0x2A, 0x01, 0x86, 0x00, 0x0B, 0x06, 0x02, 0x6B, 0x2B, 0x02, 0x00, 0x96, - 0x2E, 0x0B, 0x06, 0x04, 0x01, 0x80, 0x46, 0xA1, 0x02, 0x01, 0x06, 0x10, - 0x93, 0x2E, 0x02, 0x00, 0x0D, 0x06, 0x05, 0x29, 0x93, 0x2E, 0x04, 0x04, - 0x01, 0x00, 0x03, 0x01, 0x2A, 0x93, 0x40, 0x2A, 0x94, 0x40, 0x2A, 0x97, - 0x40, 0x01, 0x86, 0x03, 0x11, 0x03, 0x08, 0x02, 0x02, 0x06, 0x04, 0x01, - 0x02, 0x88, 0x42, 0x88, 0x30, 0x05, 0x04, 0x01, 0x01, 0x88, 0x42, 0x02, - 0x07, 0x05, 0x03, 0x01, 0x28, 0xA1, 0x44, 0x29, 0x01, 0x82, 0x01, 0x07, - 0x01, 0xFC, 0x80, 0x00, 0x39, 0x80, 0x2F, 0x13, 0x2A, 0x80, 0x41, 0x2A, - 0x01, 0x81, 0x7F, 0x13, 0x5C, 0x37, 0x47, 0x01, 0x08, 0x12, 0x5C, 0x01, - 0x02, 0x13, 0x39, 0x01, 0x0C, 0x0C, 0x03, 0x09, 0x7C, 0x2F, 0x43, 0x13, - 0x2A, 0x7C, 0x41, 0x05, 0x04, 0x01, 0x00, 0x03, 0x09, 0x02, 0x01, 0x06, - 0x03, 0x01, 0x7F, 0x00, 0x8D, 0x01, 0x20, 0x34, 0x01, 0x20, 0x8E, 0x42, - 0x79, 0x2A, 0x03, 0x05, 0x2A, 0x02, 0x04, 0x0B, 0x06, 0x80, 0x49, 0x2A, - 0x2E, 0x2A, 0x9A, 0x2A, 0x01, 0x0C, 0x12, 0x2A, 0x01, 0x01, 0x0F, 0x47, - 0x01, 0x02, 0x0F, 0x39, 0x06, 0x0A, 0x2A, 0x02, 0x09, 0x13, 0x05, 0x04, - 0x63, 0x01, 0x00, 0x2A, 0x02, 0x08, 0x05, 0x0E, 0x2A, 0x01, 0x81, 0x70, - 0x13, 0x01, 0x20, 0x0E, 0x06, 0x04, 0x63, 0x01, 0x00, 0x2A, 0x2A, 0x06, - 0x10, 0x02, 0x05, 0x61, 0x40, 0x02, 0x05, 0x40, 0x02, 0x05, 0x01, 0x04, - 0x08, 0x03, 0x05, 0x04, 0x01, 0x63, 0x01, 0x04, 0x08, 0x04, 0xFF, 0x30, - 0x29, 0x02, 0x05, 0x79, 0x09, 0x01, 0x02, 0x12, 0x2A, 0x05, 0x03, 0x01, - 0x28, 0xA1, 0x7A, 0x42, 0x8A, 0x2E, 0x01, 0x83, 0xFF, 0x7F, 0x0F, 0x06, - 0x0D, 0x01, 0x03, 0xA2, 0x06, 0x04, 0x01, 0x80, 0x78, 0xA1, 0x01, 0x00, - 0x8A, 0x40, 0x18, 0x05, 0x03, 0x01, 0x28, 0xA1, 0x01, 0x00, 0x00, 0x00, - 0xB2, 0xB1, 0x00, 0x04, 0x76, 0x2E, 0xCB, 0x06, 0x16, 0xBE, 0x2A, 0x01, - 0x84, 0x00, 0x10, 0x06, 0x02, 0x6D, 0x2B, 0x2A, 0x03, 0x00, 0x83, 0x47, - 0xB4, 0x02, 0x00, 0x76, 0x2E, 0xA6, 0x27, 0x76, 0x2E, 0x2A, 0xC9, 0x47, - 0xC8, 0x03, 0x01, 0x03, 0x02, 0x02, 0x01, 0x02, 0x02, 0x39, 0x06, 0x14, - 0xC0, 0x2A, 0x03, 0x03, 0x83, 0x47, 0xB4, 0x02, 0x03, 0x76, 0x2E, 0xA6, - 0x02, 0x02, 0x06, 0x03, 0x26, 0x04, 0x01, 0x24, 0x9B, 0x00, 0x00, 0xB8, - 0x01, 0x10, 0x0F, 0x05, 0x02, 0x71, 0x2B, 0x00, 0x00, 0x9C, 0xB8, 0x01, - 0x14, 0x0E, 0x06, 0x02, 0x71, 0x2B, 0x83, 0x01, 0x0C, 0x08, 0x01, 0x0C, - 0xB4, 0x9B, 0x83, 0x2A, 0x01, 0x0C, 0x08, 0x01, 0x0C, 0x32, 0x05, 0x02, - 0x65, 0x2B, 0x00, 0x02, 0x03, 0x00, 0x03, 0x01, 0x02, 0x00, 0x98, 0x02, - 0x01, 0x02, 0x00, 0x3C, 0x2A, 0x01, 0x00, 0x0F, 0x06, 0x02, 0x63, 0x00, - 0xCE, 0x04, 0x74, 0x00, 0xBE, 0x01, 0x01, 0x0E, 0x06, 0x02, 0x66, 0x2B, - 0xC0, 0x2A, 0x2A, 0x5D, 0x47, 0x01, 0x05, 0x11, 0x39, 0x06, 0x02, 0x66, - 0x2B, 0x01, 0x08, 0x08, 0x2A, 0x82, 0x30, 0x0B, 0x06, 0x0D, 0x2A, 0x01, - 0x01, 0x47, 0x0C, 0x3F, 0x2A, 0x82, 0x42, 0x84, 0x42, 0x04, 0x01, 0x29, - 0x00, 0x00, 0xBE, 0x88, 0x30, 0x01, 0x00, 0x3A, 0x0F, 0x06, 0x13, 0x29, - 0x01, 0x01, 0x0F, 0x05, 0x02, 0x69, 0x2B, 0xC0, 0x06, 0x02, 0x69, 0x2B, - 0x01, 0x02, 0x88, 0x42, 0x04, 0x28, 0x01, 0x02, 0x3A, 0x0F, 0x06, 0x1F, - 0x29, 0x01, 0x0D, 0x0F, 0x05, 0x02, 0x69, 0x2B, 0xC0, 0x01, 0x0C, 0x0F, - 0x05, 0x02, 0x69, 0x2B, 0x83, 0x01, 0x0C, 0xB4, 0x89, 0x83, 0x01, 0x0C, - 0x32, 0x05, 0x02, 0x69, 0x2B, 0x04, 0x03, 0x69, 0x2B, 0x29, 0x00, 0x00, - 0xBE, 0xA5, 0xBE, 0xA5, 0x2A, 0x06, 0x1D, 0xC0, 0x06, 0x03, 0xBA, 0x04, - 0x15, 0xBE, 0x2A, 0x01, 0x81, 0x7F, 0x0D, 0x06, 0x0C, 0x2A, 0x8B, 0x08, - 0x01, 0x00, 0x47, 0x42, 0x8B, 0x47, 0xB4, 0x04, 0x01, 0xC6, 0x04, 0x60, - 0x9B, 0x9B, 0x00, 0x00, 0xB9, 0x2A, 0x5D, 0x06, 0x07, 0x29, 0x06, 0x02, - 0x67, 0x2B, 0x04, 0x74, 0x00, 0x00, 0xC1, 0x01, 0x03, 0xBF, 0x47, 0x29, - 0x47, 0x00, 0x00, 0xBE, 0xC6, 0x00, 0x03, 0x01, 0x00, 0x03, 0x00, 0xBE, - 0xA5, 0x2A, 0x06, 0x80, 0x50, 0xC0, 0x03, 0x01, 0xC0, 0x03, 0x02, 0x02, - 0x01, 0x01, 0x08, 0x0F, 0x06, 0x16, 0x02, 0x02, 0x01, 0x0F, 0x0D, 0x06, - 0x0D, 0x01, 0x01, 0x02, 0x02, 0x01, 0x10, 0x08, 0x0C, 0x02, 0x00, 0x39, - 0x03, 0x00, 0x04, 0x2A, 0x02, 0x01, 0x01, 0x02, 0x11, 0x02, 0x01, 0x01, - 0x06, 0x0D, 0x13, 0x02, 0x02, 0x01, 0x01, 0x0F, 0x02, 0x02, 0x01, 0x03, - 0x0F, 0x39, 0x13, 0x06, 0x11, 0x02, 0x00, 0x01, 0x01, 0x02, 0x02, 0x60, - 0x01, 0x02, 0x0C, 0x02, 0x01, 0x08, 0x0C, 0x39, 0x03, 0x00, 0x04, 0xFF, - 0x2C, 0x9B, 0x02, 0x00, 0x00, 0x00, 0xBE, 0xA5, 0xBB, 0x80, 0x41, 0x9B, - 0x00, 0x00, 0xBE, 0xA5, 0xBE, 0xA5, 0x01, 0x00, 0x7C, 0x41, 0x2A, 0x06, - 0x15, 0xBE, 0x2A, 0x01, 0x20, 0x0B, 0x06, 0x0B, 0x01, 0x01, 0x47, 0x0C, - 0x7C, 0x2F, 0x39, 0x7C, 0x41, 0x04, 0x01, 0x29, 0x04, 0x68, 0x9B, 0x9B, - 0x00, 0x00, 0x01, 0x02, 0x98, 0xC1, 0x01, 0x08, 0x0C, 0xC1, 0x08, 0x00, - 0x00, 0x01, 0x03, 0x98, 0xC1, 0x01, 0x08, 0x0C, 0xC1, 0x08, 0x01, 0x08, - 0x0C, 0xC1, 0x08, 0x00, 0x00, 0x01, 0x01, 0x98, 0xC1, 0x00, 0x00, 0x3D, - 0x2A, 0x5B, 0x05, 0x01, 0x00, 0x29, 0xCE, 0x04, 0x76, 0x02, 0x03, 0x00, - 0x92, 0x30, 0x03, 0x01, 0x01, 0x00, 0x2A, 0x02, 0x01, 0x0B, 0x06, 0x10, - 0x2A, 0x01, 0x01, 0x0C, 0x91, 0x08, 0x2E, 0x02, 0x00, 0x0F, 0x06, 0x01, - 0x00, 0x5F, 0x04, 0x6A, 0x29, 0x01, 0x7F, 0x00, 0x00, 0x2C, 0x19, 0x38, - 0x06, 0x04, 0xCC, 0x29, 0x04, 0x78, 0x01, 0x16, 0x87, 0x42, 0x01, 0x00, - 0xDF, 0x01, 0x00, 0xDE, 0x2C, 0x01, 0x17, 0x87, 0x42, 0x00, 0x00, 0x01, - 0x15, 0x87, 0x42, 0x47, 0x55, 0x29, 0x55, 0x29, 0x2C, 0x00, 0x00, 0x01, - 0x01, 0x47, 0xC4, 0x00, 0x00, 0x47, 0x3A, 0x98, 0x47, 0x2A, 0x06, 0x05, - 0xC1, 0x29, 0x60, 0x04, 0x78, 0x29, 0x00, 0x02, 0x03, 0x00, 0x76, 0x2E, - 0x9A, 0x03, 0x01, 0x02, 0x01, 0x01, 0x0F, 0x13, 0x02, 0x01, 0x01, 0x04, - 0x12, 0x01, 0x0F, 0x13, 0x02, 0x01, 0x01, 0x08, 0x12, 0x01, 0x0F, 0x13, - 0x01, 0x00, 0x3A, 0x0F, 0x06, 0x10, 0x29, 0x01, 0x00, 0x01, 0x18, 0x02, - 0x00, 0x06, 0x03, 0x4A, 0x04, 0x01, 0x4B, 0x04, 0x80, 0x68, 0x01, 0x01, - 0x3A, 0x0F, 0x06, 0x10, 0x29, 0x01, 0x01, 0x01, 0x10, 0x02, 0x00, 0x06, - 0x03, 0x4A, 0x04, 0x01, 0x4B, 0x04, 0x80, 0x52, 0x01, 0x02, 0x3A, 0x0F, - 0x06, 0x0F, 0x29, 0x01, 0x01, 0x01, 0x20, 0x02, 0x00, 0x06, 0x03, 0x4A, - 0x04, 0x01, 0x4B, 0x04, 0x3D, 0x01, 0x03, 0x3A, 0x0F, 0x06, 0x0E, 0x29, - 0x29, 0x01, 0x10, 0x02, 0x00, 0x06, 0x03, 0x48, 0x04, 0x01, 0x49, 0x04, - 0x29, 0x01, 0x04, 0x3A, 0x0F, 0x06, 0x0E, 0x29, 0x29, 0x01, 0x20, 0x02, - 0x00, 0x06, 0x03, 0x48, 0x04, 0x01, 0x49, 0x04, 0x15, 0x01, 0x05, 0x3A, - 0x0F, 0x06, 0x0C, 0x29, 0x29, 0x02, 0x00, 0x06, 0x03, 0x4C, 0x04, 0x01, - 0x4D, 0x04, 0x03, 0x68, 0x2B, 0x29, 0x00, 0x00, 0x9A, 0x01, 0x0C, 0x12, - 0x01, 0x02, 0x10, 0x00, 0x00, 0x9A, 0x01, 0x0C, 0x12, 0x2A, 0x5E, 0x47, - 0x01, 0x03, 0x0B, 0x13, 0x00, 0x00, 0x9A, 0x01, 0x0C, 0x12, 0x01, 0x01, - 0x0F, 0x00, 0x00, 0x9A, 0x01, 0x0C, 0x12, 0x5D, 0x00, 0x00, 0x1B, 0x01, - 0x00, 0x73, 0x30, 0x2A, 0x06, 0x22, 0x01, 0x01, 0x3A, 0x0F, 0x06, 0x06, - 0x29, 0x01, 0x00, 0x9E, 0x04, 0x14, 0x01, 0x02, 0x3A, 0x0F, 0x06, 0x0D, - 0x29, 0x75, 0x30, 0x01, 0x01, 0x0F, 0x06, 0x03, 0x01, 0x10, 0x39, 0x04, - 0x01, 0x29, 0x04, 0x01, 0x29, 0x7B, 0x30, 0x05, 0x33, 0x31, 0x06, 0x30, - 0x86, 0x30, 0x01, 0x14, 0x3A, 0x0F, 0x06, 0x06, 0x29, 0x01, 0x02, 0x39, - 0x04, 0x22, 0x01, 0x15, 0x3A, 0x0F, 0x06, 0x09, 0x29, 0xA8, 0x06, 0x03, - 0x01, 0x7F, 0x9E, 0x04, 0x13, 0x01, 0x16, 0x3A, 0x0F, 0x06, 0x06, 0x29, - 0x01, 0x01, 0x39, 0x04, 0x07, 0x29, 0x01, 0x04, 0x39, 0x01, 0x00, 0x29, - 0x19, 0x06, 0x03, 0x01, 0x08, 0x39, 0x00, 0x00, 0x1B, 0x2A, 0x05, 0x13, - 0x31, 0x06, 0x10, 0x86, 0x30, 0x01, 0x15, 0x0F, 0x06, 0x08, 0x29, 0xA8, - 0x01, 0x00, 0x75, 0x42, 0x04, 0x01, 0x23, 0x00, 0x00, 0xCC, 0x01, 0x07, - 0x13, 0x01, 0x01, 0x10, 0x06, 0x02, 0x71, 0x2B, 0x00, 0x01, 0x03, 0x00, - 0x2C, 0x19, 0x06, 0x05, 0x02, 0x00, 0x87, 0x42, 0x00, 0xCC, 0x29, 0x04, - 0x74, 0x00, 0x01, 0x14, 0xCF, 0x01, 0x01, 0xDF, 0x2C, 0x2A, 0x01, 0x00, - 0xC7, 0x01, 0x16, 0xCF, 0xD3, 0x2C, 0x00, 0x00, 0x01, 0x0B, 0xDF, 0x50, - 0x2A, 0x2A, 0x01, 0x03, 0x08, 0xDE, 0xDE, 0x14, 0x2A, 0x5B, 0x06, 0x02, - 0x29, 0x00, 0xDE, 0x1E, 0x2A, 0x06, 0x05, 0x83, 0x47, 0xD7, 0x04, 0x77, - 0x29, 0x04, 0x6C, 0x00, 0x01, 0x00, 0xD9, 0x93, 0x2E, 0x01, 0x86, 0x03, - 0x11, 0x06, 0x05, 0x61, 0x01, 0x00, 0xDA, 0x08, 0x4E, 0x08, 0x01, 0x03, - 0x08, 0x01, 0x0D, 0xDF, 0xDE, 0x01, 0x00, 0xD9, 0xDF, 0x01, 0x01, 0xD9, - 0x29, 0x93, 0x2E, 0x01, 0x86, 0x03, 0x11, 0x06, 0x08, 0x01, 0x00, 0xDA, - 0xDD, 0x01, 0x01, 0xDA, 0x29, 0x4E, 0xDD, 0x16, 0x15, 0x2A, 0x5B, 0x06, - 0x02, 0x29, 0x00, 0xDD, 0x1F, 0x2A, 0x06, 0x05, 0x83, 0x47, 0xD7, 0x04, - 0x77, 0x29, 0x04, 0x6C, 0x00, 0x9C, 0x01, 0x14, 0xDF, 0x01, 0x0C, 0xDE, - 0x83, 0x01, 0x0C, 0xD7, 0x00, 0x04, 0x03, 0x00, 0x01, 0x02, 0xDF, 0x01, - 0x80, 0x46, 0x88, 0x30, 0x01, 0x02, 0x0F, 0x06, 0x0C, 0x02, 0x00, 0x06, - 0x04, 0x01, 0x05, 0x04, 0x02, 0x01, 0x1D, 0x04, 0x02, 0x01, 0x00, 0x03, - 0x01, 0x84, 0x30, 0x06, 0x04, 0x01, 0x05, 0x04, 0x02, 0x01, 0x00, 0x03, - 0x02, 0x8A, 0x2E, 0x2A, 0x06, 0x05, 0x60, 0x21, 0x01, 0x07, 0x08, 0x03, - 0x03, 0x02, 0x01, 0x02, 0x02, 0x08, 0x02, 0x03, 0x08, 0x2A, 0x06, 0x03, - 0x01, 0x02, 0x08, 0x08, 0xDE, 0x93, 0x2E, 0xDD, 0x8C, 0x01, 0x04, 0x17, - 0x8C, 0x01, 0x04, 0x08, 0x01, 0x1C, 0x34, 0x8C, 0x01, 0x20, 0xD7, 0x01, - 0x20, 0xDF, 0x8D, 0x01, 0x20, 0xD7, 0x76, 0x2E, 0xDD, 0x01, 0x00, 0xDF, - 0x02, 0x01, 0x02, 0x02, 0x08, 0x02, 0x03, 0x08, 0x2A, 0x06, 0x80, 0x40, - 0xDD, 0x02, 0x01, 0x2A, 0x06, 0x10, 0x01, 0x83, 0xFE, 0x01, 0xDD, 0x01, - 0x04, 0x09, 0x2A, 0xDD, 0x60, 0x89, 0x47, 0xD8, 0x04, 0x01, 0x29, 0x02, - 0x02, 0x06, 0x0C, 0x01, 0x01, 0xDD, 0x01, 0x01, 0xDD, 0x84, 0x30, 0x01, - 0x08, 0x09, 0xDF, 0x02, 0x03, 0x2A, 0x06, 0x11, 0x01, 0x10, 0xDD, 0x01, - 0x04, 0x09, 0x2A, 0xDD, 0x62, 0x2A, 0xDD, 0x60, 0x83, 0x47, 0xD8, 0x04, - 0x01, 0x29, 0x04, 0x01, 0x29, 0x00, 0x00, 0x01, 0x0E, 0xDF, 0x01, 0x00, - 0xDE, 0x00, 0x03, 0x76, 0x2E, 0xC9, 0x05, 0x01, 0x00, 0x7C, 0x2F, 0x2A, - 0x01, 0x82, 0x80, 0x80, 0x80, 0x00, 0x13, 0x06, 0x05, 0x29, 0x01, 0x1D, - 0x04, 0x0E, 0x2A, 0x01, 0x83, 0xC0, 0x80, 0x80, 0x00, 0x13, 0x2A, 0x06, - 0x01, 0x47, 0x29, 0xA3, 0x03, 0x00, 0x02, 0x00, 0x25, 0x2A, 0x5B, 0x06, - 0x02, 0x37, 0x2B, 0x03, 0x01, 0x93, 0x2E, 0x01, 0x86, 0x03, 0x11, 0x03, - 0x02, 0x01, 0x0C, 0xDF, 0x02, 0x01, 0x7E, 0x30, 0x08, 0x02, 0x02, 0x01, - 0x02, 0x13, 0x08, 0x01, 0x06, 0x08, 0xDE, 0x01, 0x03, 0xDF, 0x02, 0x00, - 0xDD, 0x7D, 0x7E, 0x30, 0xD8, 0x02, 0x02, 0x06, 0x1C, 0x90, 0x2E, 0x2A, - 0x01, 0x83, 0xFE, 0x00, 0x0B, 0x06, 0x03, 0xDD, 0x04, 0x0F, 0x01, 0x81, - 0x7F, 0x13, 0xDF, 0x76, 0x2E, 0xCA, 0x01, 0x01, 0x0C, 0x01, 0x03, 0x08, - 0xDF, 0x02, 0x01, 0xDD, 0x83, 0x02, 0x01, 0xD7, 0x00, 0x00, 0x54, 0x2A, - 0x01, 0x00, 0x0F, 0x06, 0x02, 0x63, 0x00, 0xCC, 0x29, 0x04, 0x73, 0x00, - 0x2A, 0xDF, 0xD7, 0x00, 0x00, 0x01, 0x00, 0x76, 0x2E, 0xC8, 0x06, 0x0C, - 0x61, 0x3A, 0x06, 0x08, 0x01, 0x80, 0x41, 0xDF, 0x01, 0x80, 0x42, 0xDF, - 0x46, 0x06, 0x07, 0x5F, 0x3A, 0x06, 0x03, 0x01, 0x01, 0xDF, 0x45, 0x06, - 0x08, 0x5F, 0x3A, 0x06, 0x04, 0x01, 0x80, 0x40, 0xDF, 0x47, 0x29, 0x00, - 0x01, 0x01, 0x00, 0x03, 0x00, 0x46, 0x45, 0x39, 0x05, 0x14, 0x01, 0x01, - 0x01, 0x80, 0x7C, 0xDB, 0x03, 0x00, 0x01, 0x03, 0x01, 0x80, 0x7C, 0xDB, - 0x02, 0x00, 0x08, 0x47, 0x29, 0x00, 0x46, 0x06, 0x07, 0x01, 0x01, 0x44, - 0x29, 0xDB, 0x03, 0x00, 0x45, 0x06, 0x0A, 0x01, 0x03, 0x44, 0x29, 0xDB, - 0x02, 0x00, 0x08, 0x03, 0x00, 0x29, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x01, 0x04, 0xDC, 0x01, 0x05, 0xDC, 0x01, 0x06, 0xDC, 0x01, 0x03, 0xDC, - 0x01, 0x02, 0xDC, 0x0A, 0x63, 0x00, 0x01, 0x03, 0x00, 0x3A, 0x01, 0x01, - 0x02, 0x00, 0x0C, 0x13, 0x05, 0x01, 0x00, 0x61, 0x01, 0x03, 0x3B, 0x06, - 0x07, 0x02, 0x00, 0xDF, 0x01, 0x02, 0x3B, 0xDF, 0x00, 0x00, 0x2A, 0x01, - 0x08, 0x52, 0xDF, 0xDF, 0x00, 0x00, 0x2A, 0x01, 0x10, 0x52, 0xDF, 0xDD, - 0x00, 0x00, 0x2A, 0x55, 0x06, 0x02, 0x29, 0x00, 0xCC, 0x29, 0x04, 0x76 + 0x7F, 0x9F, 0xCD, 0x2A, 0x01, 0x07, 0x13, 0x01, 0x00, 0x3A, 0x0F, 0x06, + 0x0D, 0x29, 0x01, 0x10, 0x13, 0x06, 0x05, 0x01, 0x00, 0x75, 0x42, 0xC3, + 0x04, 0x33, 0x01, 0x01, 0x3A, 0x0F, 0x06, 0x2A, 0x29, 0x29, 0x88, 0x30, + 0x01, 0x01, 0x0F, 0x01, 0x01, 0xA2, 0x39, 0x06, 0x18, 0xC6, 0x2C, 0x19, + 0x38, 0x06, 0x04, 0xCD, 0x29, 0x04, 0x78, 0x01, 0x80, 0x64, 0xC5, 0x01, + 0x01, 0x75, 0x42, 0x01, 0x17, 0x87, 0x42, 0x04, 0x03, 0x01, 0x00, 0x9F, + 0x04, 0x03, 0x71, 0x2B, 0x29, 0x04, 0xFF, 0x32, 0x01, 0x2A, 0x03, 0x00, + 0x09, 0x2A, 0x5B, 0x06, 0x02, 0x68, 0x2B, 0x02, 0x00, 0x00, 0x00, 0x9A, + 0x01, 0x0F, 0x13, 0x00, 0x00, 0x74, 0x30, 0x01, 0x00, 0x3A, 0x0F, 0x06, + 0x10, 0x29, 0x2A, 0x01, 0x01, 0x0E, 0x06, 0x03, 0x29, 0x01, 0x02, 0x74, + 0x42, 0x01, 0x00, 0x04, 0x21, 0x01, 0x01, 0x3A, 0x0F, 0x06, 0x14, 0x29, + 0x01, 0x00, 0x74, 0x42, 0x2A, 0x01, 0x80, 0x64, 0x0F, 0x06, 0x05, 0x01, + 0x82, 0x00, 0x08, 0x2B, 0x5D, 0x04, 0x07, 0x29, 0x01, 0x82, 0x00, 0x08, + 0x2B, 0x29, 0x00, 0x00, 0x01, 0x00, 0x31, 0x06, 0x05, 0x3D, 0xA7, 0x39, + 0x04, 0x78, 0x2A, 0x06, 0x04, 0x01, 0x01, 0x8F, 0x42, 0x00, 0x00, 0x01, + 0x1F, 0x13, 0x01, 0x12, 0x0F, 0x05, 0x02, 0x72, 0x2B, 0x76, 0x2E, 0x2A, + 0xC9, 0x05, 0x02, 0x71, 0x2B, 0xA6, 0x28, 0x00, 0x02, 0x85, 0x2E, 0x05, + 0x02, 0xBA, 0x00, 0xBE, 0xA5, 0xBE, 0xA5, 0x01, 0x7E, 0x03, 0x00, 0x2A, + 0x06, 0x17, 0xC0, 0x2A, 0x03, 0x01, 0x83, 0x47, 0xB4, 0x02, 0x01, 0x4F, + 0x2A, 0x02, 0x00, 0x51, 0x06, 0x04, 0x03, 0x00, 0x04, 0x01, 0x29, 0x04, + 0x66, 0x9B, 0x9B, 0x02, 0x00, 0x5F, 0x8A, 0x40, 0x00, 0x00, 0x31, 0x06, + 0x0B, 0x86, 0x30, 0x01, 0x14, 0x0E, 0x06, 0x02, 0x71, 0x2B, 0x04, 0x11, + 0xCD, 0x01, 0x07, 0x13, 0x2A, 0x01, 0x02, 0x0E, 0x06, 0x06, 0x06, 0x02, + 0x71, 0x2B, 0x04, 0x70, 0x29, 0xC1, 0x01, 0x01, 0x0E, 0x35, 0x39, 0x06, + 0x02, 0x64, 0x2B, 0x2A, 0x01, 0x01, 0xC8, 0x38, 0xB3, 0x00, 0x01, 0xB8, + 0x01, 0x0B, 0x0F, 0x05, 0x02, 0x71, 0x2B, 0x2A, 0x01, 0x03, 0x0F, 0x06, + 0x08, 0xBF, 0x06, 0x02, 0x68, 0x2B, 0x47, 0x29, 0x00, 0x47, 0x5A, 0xBF, + 0xA5, 0x2A, 0x06, 0x23, 0xBF, 0xA5, 0x2A, 0x59, 0x2A, 0x06, 0x18, 0x2A, + 0x01, 0x82, 0x00, 0x10, 0x06, 0x05, 0x01, 0x82, 0x00, 0x04, 0x01, 0x2A, + 0x03, 0x00, 0x83, 0x02, 0x00, 0xB4, 0x02, 0x00, 0x56, 0x04, 0x65, 0x9B, + 0x57, 0x04, 0x5A, 0x9B, 0x9B, 0x58, 0x2A, 0x06, 0x02, 0x37, 0x00, 0x29, + 0x2D, 0x00, 0x02, 0x2A, 0x01, 0x20, 0x13, 0x05, 0x02, 0x72, 0x2B, 0x01, + 0x0F, 0x13, 0x03, 0x00, 0xAE, 0x93, 0x2E, 0x01, 0x86, 0x03, 0x11, 0x06, + 0x23, 0xBE, 0x2A, 0x01, 0x81, 0x7F, 0x13, 0x5F, 0x01, 0x01, 0x12, 0x02, + 0x00, 0x0F, 0x05, 0x02, 0x6A, 0x2B, 0x01, 0x08, 0x12, 0x2A, 0x01, 0x02, + 0x0B, 0x3A, 0x01, 0x06, 0x10, 0x39, 0x06, 0x02, 0x6C, 0x2B, 0x04, 0x0D, + 0x02, 0x00, 0x01, 0x01, 0x0F, 0x06, 0x04, 0x01, 0x00, 0x04, 0x02, 0x01, + 0x02, 0x20, 0x05, 0x02, 0x6C, 0x2B, 0xBE, 0x2A, 0x03, 0x01, 0x2A, 0x01, + 0x84, 0x00, 0x10, 0x06, 0x02, 0x6D, 0x2B, 0x83, 0x47, 0xB4, 0x02, 0x01, + 0x53, 0x2A, 0x06, 0x01, 0x2B, 0x29, 0x9B, 0x00, 0x00, 0x1D, 0xB8, 0x01, + 0x0F, 0x0F, 0x05, 0x02, 0x71, 0x2B, 0x00, 0x0A, 0xB8, 0x01, 0x01, 0x0F, + 0x05, 0x02, 0x71, 0x2B, 0xBE, 0x2A, 0x03, 0x00, 0x77, 0x40, 0x78, 0x01, + 0x20, 0xB4, 0xC0, 0x2A, 0x01, 0x20, 0x10, 0x06, 0x02, 0x70, 0x2B, 0x2A, + 0x8E, 0x42, 0x8D, 0x47, 0xB4, 0x1A, 0x03, 0x01, 0xBE, 0xA5, 0x01, 0x00, + 0x03, 0x02, 0x01, 0x00, 0x03, 0x03, 0x81, 0xA0, 0x17, 0x3A, 0x08, 0x03, + 0x04, 0x03, 0x05, 0x2A, 0x06, 0x80, 0x6D, 0xBE, 0x2A, 0x03, 0x06, 0x02, + 0x01, 0x06, 0x0A, 0x2A, 0x76, 0x2E, 0x0F, 0x06, 0x04, 0x01, 0x7F, 0x03, + 0x03, 0x2A, 0x01, 0x81, 0x7F, 0x0F, 0x06, 0x0A, 0x88, 0x30, 0x06, 0x02, + 0x69, 0x2B, 0x01, 0x7F, 0x03, 0x02, 0x2A, 0x01, 0x81, 0xAC, 0x00, 0x0F, + 0x06, 0x11, 0x02, 0x00, 0x96, 0x2E, 0x11, 0x02, 0x00, 0x95, 0x2E, 0x0B, + 0x13, 0x06, 0x04, 0x01, 0x7F, 0x03, 0x00, 0xC2, 0x2A, 0x5B, 0x06, 0x03, + 0x29, 0x04, 0x26, 0x01, 0x00, 0xA2, 0x06, 0x0B, 0x01, 0x02, 0x0C, 0x79, + 0x08, 0x02, 0x06, 0x47, 0x40, 0x04, 0x16, 0x29, 0x02, 0x05, 0x02, 0x04, + 0x11, 0x06, 0x02, 0x67, 0x2B, 0x02, 0x06, 0x02, 0x05, 0x40, 0x02, 0x05, + 0x01, 0x04, 0x08, 0x03, 0x05, 0x04, 0xFF, 0x0F, 0x29, 0x01, 0x00, 0x03, + 0x07, 0xC0, 0xA5, 0x2A, 0x06, 0x09, 0xC0, 0x05, 0x04, 0x01, 0x7F, 0x03, + 0x07, 0x04, 0x74, 0x9B, 0x01, 0x00, 0x8B, 0x42, 0x01, 0x88, 0x04, 0x80, + 0x41, 0x01, 0x84, 0x80, 0x80, 0x00, 0x7C, 0x41, 0x2A, 0x06, 0x80, 0x4E, + 0xBE, 0xA5, 0x2A, 0x06, 0x80, 0x47, 0xBE, 0x01, 0x00, 0x3A, 0x0F, 0x06, + 0x04, 0x29, 0xB7, 0x04, 0x39, 0x01, 0x01, 0x3A, 0x0F, 0x06, 0x04, 0x29, + 0xB5, 0x04, 0x2F, 0x01, 0x83, 0xFE, 0x01, 0x3A, 0x0F, 0x06, 0x04, 0x29, + 0xB6, 0x04, 0x23, 0x01, 0x0D, 0x3A, 0x0F, 0x06, 0x04, 0x29, 0xBC, 0x04, + 0x19, 0x01, 0x0A, 0x3A, 0x0F, 0x06, 0x04, 0x29, 0xBD, 0x04, 0x0F, 0x01, + 0x10, 0x3A, 0x0F, 0x06, 0x04, 0x29, 0xAA, 0x04, 0x05, 0x29, 0xBA, 0x01, + 0x00, 0x29, 0x04, 0xFF, 0x35, 0x9B, 0x9B, 0x02, 0x01, 0x02, 0x03, 0x13, + 0x03, 0x01, 0x02, 0x00, 0x5B, 0x06, 0x08, 0x77, 0x2E, 0x97, 0x40, 0x01, + 0x80, 0x56, 0xA1, 0x95, 0x2E, 0x2A, 0x02, 0x00, 0x10, 0x06, 0x03, 0x29, + 0x02, 0x00, 0x2A, 0x01, 0x86, 0x00, 0x0B, 0x06, 0x02, 0x6B, 0x2B, 0x02, + 0x00, 0x96, 0x2E, 0x0B, 0x06, 0x04, 0x01, 0x80, 0x46, 0xA1, 0x02, 0x01, + 0x06, 0x10, 0x93, 0x2E, 0x02, 0x00, 0x0D, 0x06, 0x05, 0x29, 0x93, 0x2E, + 0x04, 0x04, 0x01, 0x00, 0x03, 0x01, 0x2A, 0x93, 0x40, 0x2A, 0x94, 0x40, + 0x2A, 0x97, 0x40, 0x01, 0x86, 0x03, 0x11, 0x03, 0x08, 0x02, 0x02, 0x06, + 0x04, 0x01, 0x02, 0x88, 0x42, 0x88, 0x30, 0x05, 0x04, 0x01, 0x01, 0x88, + 0x42, 0x02, 0x07, 0x05, 0x03, 0x01, 0x28, 0xA1, 0x44, 0x29, 0x01, 0x82, + 0x01, 0x07, 0x01, 0xFC, 0x80, 0x00, 0x39, 0x80, 0x2F, 0x13, 0x2A, 0x80, + 0x41, 0x2A, 0x01, 0x81, 0x7F, 0x13, 0x5C, 0x37, 0x47, 0x01, 0x08, 0x12, + 0x5C, 0x01, 0x02, 0x13, 0x39, 0x01, 0x0C, 0x0C, 0x03, 0x09, 0x7C, 0x2F, + 0x43, 0x13, 0x2A, 0x7C, 0x41, 0x05, 0x04, 0x01, 0x00, 0x03, 0x09, 0x02, + 0x01, 0x06, 0x03, 0x01, 0x7F, 0x00, 0x8D, 0x01, 0x20, 0x34, 0x01, 0x20, + 0x8E, 0x42, 0x79, 0x2A, 0x03, 0x05, 0x2A, 0x02, 0x04, 0x0B, 0x06, 0x80, + 0x49, 0x2A, 0x2E, 0x2A, 0x9A, 0x2A, 0x01, 0x0C, 0x12, 0x2A, 0x01, 0x01, + 0x0F, 0x47, 0x01, 0x02, 0x0F, 0x39, 0x06, 0x0A, 0x2A, 0x02, 0x09, 0x13, + 0x05, 0x04, 0x63, 0x01, 0x00, 0x2A, 0x02, 0x08, 0x05, 0x0E, 0x2A, 0x01, + 0x81, 0x70, 0x13, 0x01, 0x20, 0x0E, 0x06, 0x04, 0x63, 0x01, 0x00, 0x2A, + 0x2A, 0x06, 0x10, 0x02, 0x05, 0x61, 0x40, 0x02, 0x05, 0x40, 0x02, 0x05, + 0x01, 0x04, 0x08, 0x03, 0x05, 0x04, 0x01, 0x63, 0x01, 0x04, 0x08, 0x04, + 0xFF, 0x30, 0x29, 0x02, 0x05, 0x79, 0x09, 0x01, 0x02, 0x12, 0x2A, 0x05, + 0x03, 0x01, 0x28, 0xA1, 0x7A, 0x42, 0x8A, 0x2E, 0x01, 0x83, 0xFF, 0x7F, + 0x0F, 0x06, 0x0D, 0x01, 0x03, 0xA2, 0x06, 0x04, 0x01, 0x80, 0x78, 0xA1, + 0x01, 0x00, 0x8A, 0x40, 0x18, 0x05, 0x03, 0x01, 0x28, 0xA1, 0x01, 0x00, + 0x00, 0x00, 0xB2, 0xB1, 0x00, 0x04, 0x76, 0x2E, 0xCC, 0x06, 0x16, 0xBE, + 0x2A, 0x01, 0x84, 0x00, 0x10, 0x06, 0x02, 0x6D, 0x2B, 0x2A, 0x03, 0x00, + 0x83, 0x47, 0xB4, 0x02, 0x00, 0x76, 0x2E, 0xA6, 0x27, 0x76, 0x2E, 0x2A, + 0xCA, 0x47, 0xC9, 0x03, 0x01, 0x03, 0x02, 0x02, 0x01, 0x02, 0x02, 0x39, + 0x06, 0x14, 0xC0, 0x2A, 0x03, 0x03, 0x83, 0x47, 0xB4, 0x02, 0x03, 0x76, + 0x2E, 0xA6, 0x02, 0x02, 0x06, 0x03, 0x26, 0x04, 0x01, 0x24, 0x9B, 0x00, + 0x00, 0xB8, 0x01, 0x10, 0x0F, 0x05, 0x02, 0x71, 0x2B, 0x00, 0x00, 0x9C, + 0xB8, 0x01, 0x14, 0x0E, 0x06, 0x02, 0x71, 0x2B, 0x83, 0x01, 0x0C, 0x08, + 0x01, 0x0C, 0xB4, 0x9B, 0x83, 0x2A, 0x01, 0x0C, 0x08, 0x01, 0x0C, 0x32, + 0x05, 0x02, 0x65, 0x2B, 0x00, 0x02, 0x03, 0x00, 0x03, 0x01, 0x02, 0x00, + 0x98, 0x02, 0x01, 0x02, 0x00, 0x3C, 0x2A, 0x01, 0x00, 0x0F, 0x06, 0x02, + 0x63, 0x00, 0xCF, 0x04, 0x74, 0x00, 0xBE, 0x01, 0x01, 0x0E, 0x06, 0x02, + 0x66, 0x2B, 0xC0, 0x2A, 0x2A, 0x5D, 0x47, 0x01, 0x05, 0x11, 0x39, 0x06, + 0x02, 0x66, 0x2B, 0x01, 0x08, 0x08, 0x2A, 0x82, 0x30, 0x0B, 0x06, 0x0D, + 0x2A, 0x01, 0x01, 0x47, 0x0C, 0x3F, 0x2A, 0x82, 0x42, 0x84, 0x42, 0x04, + 0x01, 0x29, 0x00, 0x00, 0xBE, 0x88, 0x30, 0x01, 0x00, 0x3A, 0x0F, 0x06, + 0x13, 0x29, 0x01, 0x01, 0x0F, 0x05, 0x02, 0x69, 0x2B, 0xC0, 0x06, 0x02, + 0x69, 0x2B, 0x01, 0x02, 0x88, 0x42, 0x04, 0x28, 0x01, 0x02, 0x3A, 0x0F, + 0x06, 0x1F, 0x29, 0x01, 0x0D, 0x0F, 0x05, 0x02, 0x69, 0x2B, 0xC0, 0x01, + 0x0C, 0x0F, 0x05, 0x02, 0x69, 0x2B, 0x83, 0x01, 0x0C, 0xB4, 0x89, 0x83, + 0x01, 0x0C, 0x32, 0x05, 0x02, 0x69, 0x2B, 0x04, 0x03, 0x69, 0x2B, 0x29, + 0x00, 0x00, 0xBE, 0xA5, 0xBE, 0xA5, 0x2A, 0x06, 0x1D, 0xC0, 0x06, 0x03, + 0xBA, 0x04, 0x15, 0xBE, 0x2A, 0x01, 0x81, 0x7F, 0x0D, 0x06, 0x0C, 0x2A, + 0x8B, 0x08, 0x01, 0x00, 0x47, 0x42, 0x8B, 0x47, 0xB4, 0x04, 0x01, 0xC7, + 0x04, 0x60, 0x9B, 0x9B, 0x00, 0x00, 0xB9, 0x2A, 0x5D, 0x06, 0x07, 0x29, + 0x06, 0x02, 0x67, 0x2B, 0x04, 0x74, 0x00, 0x00, 0xC1, 0x01, 0x03, 0xBF, + 0x47, 0x29, 0x47, 0x00, 0x00, 0xBE, 0xC7, 0x00, 0x03, 0x01, 0x00, 0x03, + 0x00, 0xBE, 0xA5, 0x2A, 0x06, 0x80, 0x50, 0xC0, 0x03, 0x01, 0xC0, 0x03, + 0x02, 0x02, 0x01, 0x01, 0x08, 0x0F, 0x06, 0x16, 0x02, 0x02, 0x01, 0x0F, + 0x0D, 0x06, 0x0D, 0x01, 0x01, 0x02, 0x02, 0x01, 0x10, 0x08, 0x0C, 0x02, + 0x00, 0x39, 0x03, 0x00, 0x04, 0x2A, 0x02, 0x01, 0x01, 0x02, 0x11, 0x02, + 0x01, 0x01, 0x06, 0x0D, 0x13, 0x02, 0x02, 0x01, 0x01, 0x0F, 0x02, 0x02, + 0x01, 0x03, 0x0F, 0x39, 0x13, 0x06, 0x11, 0x02, 0x00, 0x01, 0x01, 0x02, + 0x02, 0x60, 0x01, 0x02, 0x0C, 0x02, 0x01, 0x08, 0x0C, 0x39, 0x03, 0x00, + 0x04, 0xFF, 0x2C, 0x9B, 0x02, 0x00, 0x00, 0x00, 0xBE, 0xA5, 0xBB, 0x80, + 0x41, 0x9B, 0x00, 0x00, 0xBE, 0xA5, 0xBE, 0xA5, 0x01, 0x00, 0x7C, 0x41, + 0x2A, 0x06, 0x15, 0xBE, 0x2A, 0x01, 0x20, 0x0B, 0x06, 0x0B, 0x01, 0x01, + 0x47, 0x0C, 0x7C, 0x2F, 0x39, 0x7C, 0x41, 0x04, 0x01, 0x29, 0x04, 0x68, + 0x9B, 0x9B, 0x00, 0x00, 0x01, 0x02, 0x98, 0xC1, 0x01, 0x08, 0x0C, 0xC1, + 0x08, 0x00, 0x00, 0x01, 0x03, 0x98, 0xC1, 0x01, 0x08, 0x0C, 0xC1, 0x08, + 0x01, 0x08, 0x0C, 0xC1, 0x08, 0x00, 0x00, 0x01, 0x01, 0x98, 0xC1, 0x00, + 0x00, 0x3D, 0x2A, 0x5B, 0x05, 0x01, 0x00, 0x29, 0xCF, 0x04, 0x76, 0x02, + 0x03, 0x00, 0x92, 0x30, 0x03, 0x01, 0x01, 0x00, 0x2A, 0x02, 0x01, 0x0B, + 0x06, 0x10, 0x2A, 0x01, 0x01, 0x0C, 0x91, 0x08, 0x2E, 0x02, 0x00, 0x0F, + 0x06, 0x01, 0x00, 0x5F, 0x04, 0x6A, 0x29, 0x01, 0x7F, 0x00, 0x00, 0x2C, + 0x19, 0x38, 0x06, 0x04, 0xCD, 0x29, 0x04, 0x78, 0x01, 0x16, 0x87, 0x42, + 0x01, 0x00, 0xE0, 0x01, 0x00, 0xDF, 0x2C, 0x01, 0x17, 0x87, 0x42, 0x00, + 0x00, 0x01, 0x15, 0x87, 0x42, 0x47, 0x55, 0x29, 0x55, 0x29, 0x2C, 0x00, + 0x00, 0x01, 0x01, 0x47, 0xC4, 0x00, 0x00, 0xB9, 0x01, 0x01, 0x0F, 0x05, + 0x02, 0x71, 0x2B, 0x2A, 0xC7, 0x29, 0x00, 0x00, 0x47, 0x3A, 0x98, 0x47, + 0x2A, 0x06, 0x05, 0xC1, 0x29, 0x60, 0x04, 0x78, 0x29, 0x00, 0x02, 0x03, + 0x00, 0x76, 0x2E, 0x9A, 0x03, 0x01, 0x02, 0x01, 0x01, 0x0F, 0x13, 0x02, + 0x01, 0x01, 0x04, 0x12, 0x01, 0x0F, 0x13, 0x02, 0x01, 0x01, 0x08, 0x12, + 0x01, 0x0F, 0x13, 0x01, 0x00, 0x3A, 0x0F, 0x06, 0x10, 0x29, 0x01, 0x00, + 0x01, 0x18, 0x02, 0x00, 0x06, 0x03, 0x4A, 0x04, 0x01, 0x4B, 0x04, 0x80, + 0x68, 0x01, 0x01, 0x3A, 0x0F, 0x06, 0x10, 0x29, 0x01, 0x01, 0x01, 0x10, + 0x02, 0x00, 0x06, 0x03, 0x4A, 0x04, 0x01, 0x4B, 0x04, 0x80, 0x52, 0x01, + 0x02, 0x3A, 0x0F, 0x06, 0x0F, 0x29, 0x01, 0x01, 0x01, 0x20, 0x02, 0x00, + 0x06, 0x03, 0x4A, 0x04, 0x01, 0x4B, 0x04, 0x3D, 0x01, 0x03, 0x3A, 0x0F, + 0x06, 0x0E, 0x29, 0x29, 0x01, 0x10, 0x02, 0x00, 0x06, 0x03, 0x48, 0x04, + 0x01, 0x49, 0x04, 0x29, 0x01, 0x04, 0x3A, 0x0F, 0x06, 0x0E, 0x29, 0x29, + 0x01, 0x20, 0x02, 0x00, 0x06, 0x03, 0x48, 0x04, 0x01, 0x49, 0x04, 0x15, + 0x01, 0x05, 0x3A, 0x0F, 0x06, 0x0C, 0x29, 0x29, 0x02, 0x00, 0x06, 0x03, + 0x4C, 0x04, 0x01, 0x4D, 0x04, 0x03, 0x68, 0x2B, 0x29, 0x00, 0x00, 0x9A, + 0x01, 0x0C, 0x12, 0x01, 0x02, 0x10, 0x00, 0x00, 0x9A, 0x01, 0x0C, 0x12, + 0x2A, 0x5E, 0x47, 0x01, 0x03, 0x0B, 0x13, 0x00, 0x00, 0x9A, 0x01, 0x0C, + 0x12, 0x01, 0x01, 0x0F, 0x00, 0x00, 0x9A, 0x01, 0x0C, 0x12, 0x5D, 0x00, + 0x00, 0x1B, 0x01, 0x00, 0x73, 0x30, 0x2A, 0x06, 0x22, 0x01, 0x01, 0x3A, + 0x0F, 0x06, 0x06, 0x29, 0x01, 0x00, 0x9E, 0x04, 0x14, 0x01, 0x02, 0x3A, + 0x0F, 0x06, 0x0D, 0x29, 0x75, 0x30, 0x01, 0x01, 0x0F, 0x06, 0x03, 0x01, + 0x10, 0x39, 0x04, 0x01, 0x29, 0x04, 0x01, 0x29, 0x7B, 0x30, 0x05, 0x33, + 0x31, 0x06, 0x30, 0x86, 0x30, 0x01, 0x14, 0x3A, 0x0F, 0x06, 0x06, 0x29, + 0x01, 0x02, 0x39, 0x04, 0x22, 0x01, 0x15, 0x3A, 0x0F, 0x06, 0x09, 0x29, + 0xA8, 0x06, 0x03, 0x01, 0x7F, 0x9E, 0x04, 0x13, 0x01, 0x16, 0x3A, 0x0F, + 0x06, 0x06, 0x29, 0x01, 0x01, 0x39, 0x04, 0x07, 0x29, 0x01, 0x04, 0x39, + 0x01, 0x00, 0x29, 0x19, 0x06, 0x03, 0x01, 0x08, 0x39, 0x00, 0x00, 0x1B, + 0x2A, 0x05, 0x13, 0x31, 0x06, 0x10, 0x86, 0x30, 0x01, 0x15, 0x0F, 0x06, + 0x08, 0x29, 0xA8, 0x01, 0x00, 0x75, 0x42, 0x04, 0x01, 0x23, 0x00, 0x00, + 0xCD, 0x01, 0x07, 0x13, 0x01, 0x01, 0x10, 0x06, 0x02, 0x71, 0x2B, 0x00, + 0x01, 0x03, 0x00, 0x2C, 0x19, 0x06, 0x05, 0x02, 0x00, 0x87, 0x42, 0x00, + 0xCD, 0x29, 0x04, 0x74, 0x00, 0x01, 0x14, 0xD0, 0x01, 0x01, 0xE0, 0x2C, + 0x2A, 0x01, 0x00, 0xC8, 0x01, 0x16, 0xD0, 0xD4, 0x2C, 0x00, 0x00, 0x01, + 0x0B, 0xE0, 0x50, 0x2A, 0x2A, 0x01, 0x03, 0x08, 0xDF, 0xDF, 0x14, 0x2A, + 0x5B, 0x06, 0x02, 0x29, 0x00, 0xDF, 0x1E, 0x2A, 0x06, 0x05, 0x83, 0x47, + 0xD8, 0x04, 0x77, 0x29, 0x04, 0x6C, 0x00, 0x01, 0x00, 0xDA, 0x93, 0x2E, + 0x01, 0x86, 0x03, 0x11, 0x06, 0x05, 0x61, 0x01, 0x00, 0xDB, 0x08, 0x4E, + 0x08, 0x01, 0x03, 0x08, 0x01, 0x0D, 0xE0, 0xDF, 0x01, 0x00, 0xDA, 0xE0, + 0x01, 0x01, 0xDA, 0x29, 0x93, 0x2E, 0x01, 0x86, 0x03, 0x11, 0x06, 0x08, + 0x01, 0x00, 0xDB, 0xDE, 0x01, 0x01, 0xDB, 0x29, 0x4E, 0xDE, 0x16, 0x15, + 0x2A, 0x5B, 0x06, 0x02, 0x29, 0x00, 0xDE, 0x1F, 0x2A, 0x06, 0x05, 0x83, + 0x47, 0xD8, 0x04, 0x77, 0x29, 0x04, 0x6C, 0x00, 0x9C, 0x01, 0x14, 0xE0, + 0x01, 0x0C, 0xDF, 0x83, 0x01, 0x0C, 0xD8, 0x00, 0x04, 0x03, 0x00, 0x01, + 0x02, 0xE0, 0x01, 0x80, 0x46, 0x88, 0x30, 0x01, 0x02, 0x0F, 0x06, 0x0C, + 0x02, 0x00, 0x06, 0x04, 0x01, 0x05, 0x04, 0x02, 0x01, 0x1D, 0x04, 0x02, + 0x01, 0x00, 0x03, 0x01, 0x84, 0x30, 0x06, 0x04, 0x01, 0x05, 0x04, 0x02, + 0x01, 0x00, 0x03, 0x02, 0x8A, 0x2E, 0x2A, 0x06, 0x05, 0x60, 0x21, 0x01, + 0x07, 0x08, 0x03, 0x03, 0x02, 0x01, 0x02, 0x02, 0x08, 0x02, 0x03, 0x08, + 0x2A, 0x06, 0x03, 0x01, 0x02, 0x08, 0x08, 0xDF, 0x93, 0x2E, 0xDE, 0x8C, + 0x01, 0x04, 0x17, 0x8C, 0x01, 0x04, 0x08, 0x01, 0x1C, 0x34, 0x8C, 0x01, + 0x20, 0xD8, 0x01, 0x20, 0xE0, 0x8D, 0x01, 0x20, 0xD8, 0x76, 0x2E, 0xDE, + 0x01, 0x00, 0xE0, 0x02, 0x01, 0x02, 0x02, 0x08, 0x02, 0x03, 0x08, 0x2A, + 0x06, 0x80, 0x40, 0xDE, 0x02, 0x01, 0x2A, 0x06, 0x10, 0x01, 0x83, 0xFE, + 0x01, 0xDE, 0x01, 0x04, 0x09, 0x2A, 0xDE, 0x60, 0x89, 0x47, 0xD9, 0x04, + 0x01, 0x29, 0x02, 0x02, 0x06, 0x0C, 0x01, 0x01, 0xDE, 0x01, 0x01, 0xDE, + 0x84, 0x30, 0x01, 0x08, 0x09, 0xE0, 0x02, 0x03, 0x2A, 0x06, 0x11, 0x01, + 0x10, 0xDE, 0x01, 0x04, 0x09, 0x2A, 0xDE, 0x62, 0x2A, 0xDE, 0x60, 0x83, + 0x47, 0xD9, 0x04, 0x01, 0x29, 0x04, 0x01, 0x29, 0x00, 0x00, 0x01, 0x0E, + 0xE0, 0x01, 0x00, 0xDF, 0x00, 0x03, 0x76, 0x2E, 0xCA, 0x05, 0x01, 0x00, + 0x7C, 0x2F, 0x2A, 0x01, 0x82, 0x80, 0x80, 0x80, 0x00, 0x13, 0x06, 0x05, + 0x29, 0x01, 0x1D, 0x04, 0x0E, 0x2A, 0x01, 0x83, 0xC0, 0x80, 0x80, 0x00, + 0x13, 0x2A, 0x06, 0x01, 0x47, 0x29, 0xA3, 0x03, 0x00, 0x02, 0x00, 0x25, + 0x2A, 0x5B, 0x06, 0x02, 0x37, 0x2B, 0x03, 0x01, 0x93, 0x2E, 0x01, 0x86, + 0x03, 0x11, 0x03, 0x02, 0x01, 0x0C, 0xE0, 0x02, 0x01, 0x7E, 0x30, 0x08, + 0x02, 0x02, 0x01, 0x02, 0x13, 0x08, 0x01, 0x06, 0x08, 0xDF, 0x01, 0x03, + 0xE0, 0x02, 0x00, 0xDE, 0x7D, 0x7E, 0x30, 0xD9, 0x02, 0x02, 0x06, 0x1C, + 0x90, 0x2E, 0x2A, 0x01, 0x83, 0xFE, 0x00, 0x0B, 0x06, 0x03, 0xDE, 0x04, + 0x0F, 0x01, 0x81, 0x7F, 0x13, 0xE0, 0x76, 0x2E, 0xCB, 0x01, 0x01, 0x0C, + 0x01, 0x03, 0x08, 0xE0, 0x02, 0x01, 0xDE, 0x83, 0x02, 0x01, 0xD8, 0x00, + 0x00, 0x54, 0x2A, 0x01, 0x00, 0x0F, 0x06, 0x02, 0x63, 0x00, 0xCD, 0x29, + 0x04, 0x73, 0x00, 0x2A, 0xE0, 0xD8, 0x00, 0x00, 0x01, 0x00, 0x76, 0x2E, + 0xC9, 0x06, 0x0C, 0x61, 0x3A, 0x06, 0x08, 0x01, 0x80, 0x41, 0xE0, 0x01, + 0x80, 0x42, 0xE0, 0x46, 0x06, 0x07, 0x5F, 0x3A, 0x06, 0x03, 0x01, 0x01, + 0xE0, 0x45, 0x06, 0x08, 0x5F, 0x3A, 0x06, 0x04, 0x01, 0x80, 0x40, 0xE0, + 0x47, 0x29, 0x00, 0x01, 0x01, 0x00, 0x03, 0x00, 0x46, 0x45, 0x39, 0x05, + 0x14, 0x01, 0x01, 0x01, 0x80, 0x7C, 0xDC, 0x03, 0x00, 0x01, 0x03, 0x01, + 0x80, 0x7C, 0xDC, 0x02, 0x00, 0x08, 0x47, 0x29, 0x00, 0x46, 0x06, 0x07, + 0x01, 0x01, 0x44, 0x29, 0xDC, 0x03, 0x00, 0x45, 0x06, 0x0A, 0x01, 0x03, + 0x44, 0x29, 0xDC, 0x02, 0x00, 0x08, 0x03, 0x00, 0x29, 0x02, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x01, 0x04, 0xDD, 0x01, 0x05, 0xDD, 0x01, 0x06, 0xDD, + 0x01, 0x03, 0xDD, 0x01, 0x02, 0xDD, 0x0A, 0x63, 0x00, 0x01, 0x03, 0x00, + 0x3A, 0x01, 0x01, 0x02, 0x00, 0x0C, 0x13, 0x05, 0x01, 0x00, 0x61, 0x01, + 0x03, 0x3B, 0x06, 0x07, 0x02, 0x00, 0xE0, 0x01, 0x02, 0x3B, 0xE0, 0x00, + 0x00, 0x2A, 0x01, 0x08, 0x52, 0xE0, 0xE0, 0x00, 0x00, 0x2A, 0x01, 0x10, + 0x52, 0xE0, 0xDE, 0x00, 0x00, 0x2A, 0x55, 0x06, 0x02, 0x29, 0x00, 0xCD, + 0x29, 0x04, 0x76 }; static const uint16_t t0_caddr[] = { @@ -856,65 +859,66 @@ static const uint16_t t0_caddr[] = { 553, 563, 587, - 655, 669, - 675, - 734, - 753, - 775, - 824, - 873, - 949, - 1051, - 1062, - 1656, - 1660, - 1727, - 1737, - 1768, - 1792, - 1838, - 1908, - 1948, + 683, + 689, + 748, + 767, + 789, + 838, + 887, + 963, + 1065, + 1076, + 1670, + 1674, + 1741, + 1751, + 1782, + 1806, + 1852, + 1922, 1962, - 1971, - 1975, - 2070, - 2078, - 2114, - 2125, - 2141, - 2147, - 2158, - 2193, - 2219, - 2231, - 2237, - 2252, - 2408, - 2417, - 2430, - 2439, - 2446, - 2552, - 2577, - 2590, - 2606, - 2624, - 2656, - 2729, - 2742, - 2923, - 2931, - 3058, - 3072, - 3077, - 3121, - 3178, - 3199, + 1976, + 1985, + 1989, + 2084, + 2092, + 2128, + 2139, + 2155, + 2161, + 2172, + 2207, + 2233, + 2245, + 2251, + 2264, + 2279, + 2435, + 2444, + 2457, + 2466, + 2473, + 2579, + 2604, + 2617, + 2633, + 2651, + 2683, + 2756, + 2769, + 2950, + 2958, + 3085, + 3099, + 3104, + 3148, + 3205, 3226, - 3234, - 3242 + 3253, + 3261, + 3269 }; #define T0_INTERPRETED 91 diff --git a/src/ssl/ssl_hs_server.t0 b/src/ssl/ssl_hs_server.t0 index bb3bc3d..58d5c94 100644 --- a/src/ssl/ssl_hs_server.t0 +++ b/src/ssl/ssl_hs_server.t0 @@ -611,6 +611,13 @@ cc: save-session ( -- ) { } } +\ Read and drop ClientHello. This is used when a client-triggered +\ renegotiation attempt is rejected. +: skip-ClientHello ( -- ) + read-handshake-header-core + 1 = ifnot ERR_UNEXPECTED fail then + dup skip-blob drop ; + \ Read ClientHello. If the session is resumed, then -1 is returned. : read-ClientHello ( -- resume ) \ Get header, and check message type. @@ -1473,6 +1480,7 @@ cc: verify-CV-sig ( sig-len -- err ) { \ The best we can do is ask for a \ renegotiation, then wait for it \ to happen. + 0 addr-application_data set8 send-HelloRequest then endof @@ -1482,11 +1490,16 @@ cc: verify-CV-sig ( sig-len -- err ) { \ "no renegotiation" flag is set. drop addr-reneg get8 1 = 1 flag? or if + skip-ClientHello flush-record begin can-output? not while wait-co drop repeat 100 send-warning + \ Put back connection in "application + \ data" state: it's not dead yet. + 1 addr-application_data set8 + 23 addr-record_type_out set8 else 0 do-handshake then -- 2.17.1