| // Copyright 2019 The PDFium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <stdint.h> |
| |
| #include <memory> |
| |
| #include "core/fxcrt/fx_string.h" |
| #include "fpdfsdk/cpdfsdk_helpers.h" |
| #include "fpdfsdk/fpdfxfa/cpdfxfa_context.h" |
| #include "fxjs/xfa/cfxjse_engine.h" |
| #include "fxjs/xfa/cfxjse_value.h" |
| #include "public/fpdf_formfill.h" |
| #include "testing/fuzzers/pdfium_fuzzer_helper.h" |
| #include "v8/include/v8.h" |
| #include "xfa/fxfa/cxfa_eventparam.h" |
| |
| namespace { |
| |
| // testing/resources/simple_xfa.pdf |
| const uint8_t kSimpleXfaPdfData[] = { |
| 0x25, 0x50, 0x44, 0x46, 0x2d, 0x31, 0x2e, 0x37, 0x0a, 0x25, 0xa0, 0xf2, |
| 0xa4, 0xf4, 0x0a, 0x31, 0x20, 0x30, 0x20, 0x6f, 0x62, 0x6a, 0x20, 0x3c, |
| 0x3c, 0x0a, 0x20, 0x20, 0x2f, 0x41, 0x63, 0x72, 0x6f, 0x46, 0x6f, 0x72, |
| 0x6d, 0x20, 0x32, 0x20, 0x30, 0x20, 0x52, 0x0a, 0x20, 0x20, 0x2f, 0x45, |
| 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x3c, 0x3c, |
| 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x41, 0x44, 0x42, 0x45, 0x20, 0x3c, |
| 0x3c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x42, 0x61, 0x73, |
| 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x2f, 0x31, 0x2e, |
| 0x37, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x45, 0x78, 0x74, |
| 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x20, |
| 0x38, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3e, 0x3e, 0x0a, 0x20, 0x20, 0x3e, |
| 0x3e, 0x0a, 0x20, 0x20, 0x2f, 0x4e, 0x65, 0x65, 0x64, 0x73, 0x52, 0x65, |
| 0x6e, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x72, 0x75, 0x65, |
| 0x0a, 0x20, 0x20, 0x2f, 0x50, 0x61, 0x67, 0x65, 0x73, 0x20, 0x38, 0x20, |
| 0x30, 0x20, 0x52, 0x0a, 0x20, 0x20, 0x2f, 0x54, 0x79, 0x70, 0x65, 0x20, |
| 0x2f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x0a, 0x3e, 0x3e, 0x0a, |
| 0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a, 0x0a, 0x32, 0x20, 0x30, 0x20, 0x6f, |
| 0x62, 0x6a, 0x20, 0x3c, 0x3c, 0x0a, 0x20, 0x20, 0x2f, 0x58, 0x46, 0x41, |
| 0x20, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x70, 0x72, 0x65, 0x61, |
| 0x6d, 0x62, 0x6c, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x33, 0x20, |
| 0x30, 0x20, 0x52, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x63, 0x6f, 0x6e, |
| 0x66, 0x69, 0x67, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x34, 0x20, 0x30, |
| 0x20, 0x52, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x74, 0x65, 0x6d, 0x70, |
| 0x6c, 0x61, 0x74, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x35, 0x20, |
| 0x30, 0x20, 0x52, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x6c, 0x6f, 0x63, |
| 0x61, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, |
| 0x36, 0x20, 0x30, 0x20, 0x52, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x70, |
| 0x6f, 0x73, 0x74, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x29, 0x0a, 0x20, 0x20, |
| 0x20, 0x20, 0x37, 0x20, 0x30, 0x20, 0x52, 0x0a, 0x20, 0x20, 0x5d, 0x0a, |
| 0x3e, 0x3e, 0x0a, 0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a, 0x0a, 0x33, 0x20, |
| 0x30, 0x20, 0x6f, 0x62, 0x6a, 0x20, 0x3c, 0x3c, 0x0a, 0x20, 0x20, 0x2f, |
| 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x31, 0x32, 0x34, 0x0a, 0x3e, |
| 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x0a, 0x3c, 0x78, 0x64, |
| 0x70, 0x3a, 0x78, 0x64, 0x70, 0x20, 0x78, 0x6d, 0x6c, 0x6e, 0x73, 0x3a, |
| 0x78, 0x64, 0x70, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, |
| 0x6e, 0x73, 0x2e, 0x61, 0x64, 0x6f, 0x62, 0x65, 0x2e, 0x63, 0x6f, 0x6d, |
| 0x2f, 0x78, 0x64, 0x70, 0x2f, 0x22, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x53, |
| 0x74, 0x61, 0x6d, 0x70, 0x3d, 0x22, 0x32, 0x30, 0x31, 0x38, 0x2d, 0x30, |
| 0x32, 0x2d, 0x32, 0x33, 0x54, 0x32, 0x31, 0x3a, 0x33, 0x37, 0x3a, 0x31, |
| 0x31, 0x5a, 0x22, 0x20, 0x75, 0x75, 0x69, 0x64, 0x3d, 0x22, 0x32, 0x31, |
| 0x34, 0x38, 0x32, 0x37, 0x39, 0x38, 0x2d, 0x37, 0x62, 0x66, 0x30, 0x2d, |
| 0x34, 0x30, 0x61, 0x34, 0x2d, 0x62, 0x63, 0x35, 0x64, 0x2d, 0x33, 0x63, |
| 0x65, 0x66, 0x64, 0x63, 0x63, 0x66, 0x33, 0x32, 0x62, 0x35, 0x22, 0x3e, |
| 0x0a, 0x65, 0x6e, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x0a, 0x65, |
| 0x6e, 0x64, 0x6f, 0x62, 0x6a, 0x0a, 0x34, 0x20, 0x30, 0x20, 0x6f, 0x62, |
| 0x6a, 0x20, 0x3c, 0x3c, 0x0a, 0x20, 0x20, 0x2f, 0x4c, 0x65, 0x6e, 0x67, |
| 0x74, 0x68, 0x20, 0x36, 0x34, 0x32, 0x0a, 0x3e, 0x3e, 0x0a, 0x73, 0x74, |
| 0x72, 0x65, 0x61, 0x6d, 0x0a, 0x3c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, |
| 0x20, 0x78, 0x6d, 0x6c, 0x6e, 0x73, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, |
| 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x78, 0x66, 0x61, 0x2e, 0x6f, |
| 0x72, 0x67, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x78, 0x63, |
| 0x69, 0x2f, 0x33, 0x2e, 0x30, 0x2f, 0x22, 0x3e, 0x0a, 0x3c, 0x61, 0x67, |
| 0x65, 0x6e, 0x74, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x64, 0x65, |
| 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x22, 0x3e, 0x0a, 0x20, 0x20, 0x3c, |
| 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3e, |
| 0x70, 0x64, 0x66, 0x3c, 0x2f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, |
| 0x74, 0x69, 0x6f, 0x6e, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x70, 0x64, 0x66, |
| 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x49, |
| 0x6e, 0x66, 0x6f, 0x2f, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x2f, 0x70, 0x64, |
| 0x66, 0x3e, 0x0a, 0x3c, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x3e, 0x0a, |
| 0x3c, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x3e, 0x0a, 0x20, 0x20, |
| 0x3c, 0x70, 0x64, 0x66, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x76, |
| 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3e, 0x31, 0x2e, 0x37, 0x3c, 0x2f, |
| 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3e, 0x0a, 0x20, 0x20, 0x20, |
| 0x20, 0x3c, 0x61, 0x64, 0x6f, 0x62, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, |
| 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x3e, 0x38, 0x3c, |
| 0x2f, 0x61, 0x64, 0x6f, 0x62, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, |
| 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x3e, 0x0a, 0x20, 0x20, |
| 0x20, 0x20, 0x3c, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x6f, 0x6c, |
| 0x69, 0x63, 0x79, 0x3e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x3c, 0x2f, |
| 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, |
| 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x73, 0x63, 0x72, 0x69, 0x70, |
| 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3e, 0x58, 0x46, 0x41, 0x3c, 0x2f, |
| 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3e, |
| 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, |
| 0x63, 0x74, 0x69, 0x76, 0x65, 0x3e, 0x31, 0x3c, 0x2f, 0x69, 0x6e, 0x74, |
| 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x3e, 0x0a, 0x20, 0x20, |
| 0x3c, 0x2f, 0x70, 0x64, 0x66, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x78, 0x64, |
| 0x70, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x70, 0x61, 0x63, 0x6b, |
| 0x65, 0x74, 0x73, 0x3e, 0x2a, 0x3c, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x65, |
| 0x74, 0x73, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x2f, 0x78, 0x64, 0x70, 0x3e, |
| 0x0a, 0x20, 0x20, 0x3c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, |
| 0x69, 0x6f, 0x6e, 0x3e, 0x70, 0x64, 0x66, 0x3c, 0x2f, 0x64, 0x65, 0x73, |
| 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3e, 0x0a, 0x20, 0x20, |
| 0x3c, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0a, 0x20, 0x20, 0x20, |
| 0x20, 0x3c, 0x72, 0x75, 0x6e, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, |
| 0x3e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3c, 0x2f, 0x72, 0x75, 0x6e, |
| 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x3e, 0x0a, 0x20, 0x20, 0x3c, |
| 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0a, 0x3c, 0x2f, 0x70, |
| 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x3e, 0x0a, 0x3c, 0x61, 0x63, 0x72, |
| 0x6f, 0x62, 0x61, 0x74, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x61, 0x63, 0x72, |
| 0x6f, 0x62, 0x61, 0x74, 0x37, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, |
| 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x52, 0x65, 0x6e, 0x64, 0x65, |
| 0x72, 0x3e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x3c, 0x2f, |
| 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x52, 0x65, 0x6e, 0x64, 0x65, |
| 0x72, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x2f, 0x61, 0x63, 0x72, 0x6f, 0x62, |
| 0x61, 0x74, 0x37, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x76, 0x61, 0x6c, 0x69, |
| 0x64, 0x61, 0x74, 0x65, 0x3e, 0x70, 0x72, 0x65, 0x53, 0x75, 0x62, 0x6d, |
| 0x69, 0x74, 0x3c, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, |
| 0x3e, 0x0a, 0x3c, 0x2f, 0x61, 0x63, 0x72, 0x6f, 0x62, 0x61, 0x74, 0x3e, |
| 0x0a, 0x3c, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3e, 0x0a, 0x65, |
| 0x6e, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x0a, 0x65, 0x6e, 0x64, |
| 0x6f, 0x62, 0x6a, 0x0a, 0x35, 0x20, 0x30, 0x20, 0x6f, 0x62, 0x6a, 0x20, |
| 0x3c, 0x3c, 0x0a, 0x20, 0x20, 0x2f, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, |
| 0x20, 0x34, 0x38, 0x32, 0x0a, 0x3e, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x65, |
| 0x61, 0x6d, 0x0a, 0x3c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, |
| 0x20, 0x78, 0x6d, 0x6c, 0x6e, 0x73, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, |
| 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x78, 0x66, 0x61, 0x2e, 0x6f, |
| 0x72, 0x67, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x78, 0x66, |
| 0x61, 0x2d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x33, |
| 0x2e, 0x33, 0x2f, 0x22, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x73, 0x75, 0x62, |
| 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x66, |
| 0x6f, 0x72, 0x6d, 0x31, 0x22, 0x20, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, |
| 0x3d, 0x22, 0x74, 0x62, 0x22, 0x20, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, |
| 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x3d, 0x22, 0x61, 0x75, 0x74, 0x6f, |
| 0x22, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x70, 0x61, 0x67, 0x65, |
| 0x53, 0x65, 0x74, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, |
| 0x70, 0x61, 0x67, 0x65, 0x41, 0x72, 0x65, 0x61, 0x20, 0x6e, 0x61, 0x6d, |
| 0x65, 0x3d, 0x22, 0x50, 0x61, 0x67, 0x65, 0x31, 0x22, 0x20, 0x69, 0x64, |
| 0x3d, 0x22, 0x50, 0x61, 0x67, 0x65, 0x31, 0x22, 0x3e, 0x0a, 0x20, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x6f, 0x6e, 0x74, 0x65, |
| 0x6e, 0x74, 0x41, 0x72, 0x65, 0x61, 0x20, 0x78, 0x3d, 0x22, 0x30, 0x2e, |
| 0x32, 0x35, 0x69, 0x6e, 0x22, 0x20, 0x79, 0x3d, 0x22, 0x30, 0x2e, 0x32, |
| 0x35, 0x69, 0x6e, 0x22, 0x20, 0x77, 0x3d, 0x22, 0x38, 0x69, 0x6e, 0x22, |
| 0x20, 0x68, 0x3d, 0x22, 0x31, 0x30, 0x2e, 0x35, 0x69, 0x6e, 0x22, 0x20, |
| 0x2f, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x70, |
| 0x61, 0x67, 0x65, 0x41, 0x72, 0x65, 0x61, 0x3e, 0x0a, 0x20, 0x20, 0x20, |
| 0x20, 0x3c, 0x2f, 0x70, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x3e, 0x0a, |
| 0x20, 0x20, 0x20, 0x20, 0x3c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x6e, |
| 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, |
| 0x6c, 0x64, 0x31, 0x22, 0x20, 0x79, 0x3d, 0x22, 0x33, 0x31, 0x2e, 0x37, |
| 0x35, 0x6d, 0x6d, 0x22, 0x20, 0x78, 0x3d, 0x22, 0x34, 0x34, 0x2e, 0x34, |
| 0x35, 0x6d, 0x6d, 0x22, 0x20, 0x77, 0x3d, 0x22, 0x31, 0x31, 0x34, 0x2e, |
| 0x32, 0x39, 0x31, 0x6d, 0x6d, 0x22, 0x20, 0x68, 0x3d, 0x22, 0x31, 0x32, |
| 0x2e, 0x37, 0x6d, 0x6d, 0x22, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, |
| 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, |
| 0x3c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, |
| 0x22, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, |
| 0x22, 0x20, 0x79, 0x3d, 0x22, 0x32, 0x32, 0x32, 0x2e, 0x32, 0x35, 0x6d, |
| 0x6d, 0x22, 0x20, 0x78, 0x3d, 0x22, 0x34, 0x34, 0x2e, 0x34, 0x35, 0x6d, |
| 0x6d, 0x22, 0x20, 0x77, 0x3d, 0x22, 0x38, 0x32, 0x2e, 0x35, 0x35, 0x6d, |
| 0x6d, 0x22, 0x20, 0x68, 0x3d, 0x22, 0x31, 0x32, 0x2e, 0x37, 0x6d, 0x6d, |
| 0x22, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x66, 0x69, 0x65, |
| 0x6c, 0x64, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x2f, 0x73, 0x75, 0x62, 0x66, |
| 0x6f, 0x72, 0x6d, 0x3e, 0x0a, 0x3c, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, |
| 0x61, 0x74, 0x65, 0x3e, 0x0a, 0x65, 0x6e, 0x64, 0x73, 0x74, 0x72, 0x65, |
| 0x61, 0x6d, 0x0a, 0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a, 0x0a, 0x36, 0x20, |
| 0x30, 0x20, 0x6f, 0x62, 0x6a, 0x20, 0x3c, 0x3c, 0x0a, 0x20, 0x20, 0x2f, |
| 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x33, 0x34, 0x35, 0x35, 0x0a, |
| 0x3e, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x0a, 0x3c, 0x6c, |
| 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x20, 0x78, 0x6d, 0x6c, |
| 0x6e, 0x73, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, |
| 0x77, 0x77, 0x2e, 0x78, 0x66, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x73, |
| 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2f, 0x78, 0x66, 0x61, 0x2d, 0x6c, 0x6f, |
| 0x63, 0x61, 0x6c, 0x65, 0x2d, 0x73, 0x65, 0x74, 0x2f, 0x32, 0x2e, 0x37, |
| 0x2f, 0x22, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, |
| 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x65, 0x6e, 0x5f, 0x55, |
| 0x53, 0x22, 0x20, 0x64, 0x65, 0x73, 0x63, 0x3d, 0x22, 0x45, 0x6e, 0x67, |
| 0x6c, 0x69, 0x73, 0x68, 0x20, 0x28, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, |
| 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x29, 0x22, 0x3e, 0x0a, 0x20, |
| 0x20, 0x20, 0x20, 0x3c, 0x63, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, |
| 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x20, 0x6e, 0x61, 0x6d, 0x65, |
| 0x3d, 0x22, 0x67, 0x72, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x61, 0x6e, 0x22, |
| 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6d, 0x6f, 0x6e, |
| 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x3e, 0x0a, 0x20, 0x20, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, |
| 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x79, 0x3c, 0x2f, 0x6d, 0x6f, 0x6e, |
| 0x74, 0x68, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x3c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x46, 0x65, 0x62, 0x72, 0x75, |
| 0x61, 0x72, 0x79, 0x3c, 0x2f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x0a, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6d, 0x6f, 0x6e, |
| 0x74, 0x68, 0x3e, 0x4d, 0x61, 0x72, 0x63, 0x68, 0x3c, 0x2f, 0x6d, 0x6f, |
| 0x6e, 0x74, 0x68, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x3c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x41, 0x70, 0x72, 0x69, |
| 0x6c, 0x3c, 0x2f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x0a, 0x20, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, |
| 0x3e, 0x4d, 0x61, 0x79, 0x3c, 0x2f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, |
| 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6d, 0x6f, |
| 0x6e, 0x74, 0x68, 0x3e, 0x4a, 0x75, 0x6e, 0x65, 0x3c, 0x2f, 0x6d, 0x6f, |
| 0x6e, 0x74, 0x68, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x3c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x4a, 0x75, 0x6c, 0x79, |
| 0x3c, 0x2f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x0a, 0x20, 0x20, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, |
| 0x41, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3c, 0x2f, 0x6d, 0x6f, 0x6e, 0x74, |
| 0x68, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, |
| 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, |
| 0x62, 0x65, 0x72, 0x3c, 0x2f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x0a, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6d, 0x6f, 0x6e, |
| 0x74, 0x68, 0x3e, 0x4f, 0x63, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3c, 0x2f, |
| 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x20, 0x20, 0x3c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x4e, 0x6f, |
| 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3c, 0x2f, 0x6d, 0x6f, 0x6e, 0x74, |
| 0x68, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, |
| 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x44, 0x65, 0x63, 0x65, 0x6d, 0x62, |
| 0x65, 0x72, 0x3c, 0x2f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x0a, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, |
| 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x3c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x73, |
| 0x20, 0x61, 0x62, 0x62, 0x72, 0x3d, 0x22, 0x31, 0x22, 0x3e, 0x0a, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6d, 0x6f, 0x6e, 0x74, |
| 0x68, 0x3e, 0x4a, 0x61, 0x6e, 0x3c, 0x2f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, |
| 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6d, |
| 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x46, 0x65, 0x62, 0x3c, 0x2f, 0x6d, 0x6f, |
| 0x6e, 0x74, 0x68, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x3c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x4d, 0x61, 0x72, 0x3c, |
| 0x2f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x41, |
| 0x70, 0x72, 0x3c, 0x2f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x0a, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6d, 0x6f, 0x6e, 0x74, |
| 0x68, 0x3e, 0x4d, 0x61, 0x79, 0x3c, 0x2f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, |
| 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6d, |
| 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x4a, 0x75, 0x6e, 0x3c, 0x2f, 0x6d, 0x6f, |
| 0x6e, 0x74, 0x68, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x3c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x4a, 0x75, 0x6c, 0x3c, |
| 0x2f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x41, |
| 0x75, 0x67, 0x3c, 0x2f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x0a, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6d, 0x6f, 0x6e, 0x74, |
| 0x68, 0x3e, 0x53, 0x65, 0x70, 0x3c, 0x2f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, |
| 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6d, |
| 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x4f, 0x63, 0x74, 0x3c, 0x2f, 0x6d, 0x6f, |
| 0x6e, 0x74, 0x68, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x3c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x4e, 0x6f, 0x76, 0x3c, |
| 0x2f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x44, |
| 0x65, 0x63, 0x3c, 0x2f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x3e, 0x0a, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, |
| 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x3c, 0x64, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x3e, 0x0a, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x64, 0x61, 0x79, |
| 0x3e, 0x53, 0x75, 0x6e, 0x64, 0x61, 0x79, 0x3c, 0x2f, 0x64, 0x61, 0x79, |
| 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x64, |
| 0x61, 0x79, 0x3e, 0x4d, 0x6f, 0x6e, 0x64, 0x61, 0x79, 0x3c, 0x2f, 0x64, |
| 0x61, 0x79, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x3c, 0x64, 0x61, 0x79, 0x3e, 0x54, 0x75, 0x65, 0x73, 0x64, 0x61, 0x79, |
| 0x3c, 0x2f, 0x64, 0x61, 0x79, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x20, 0x20, 0x3c, 0x64, 0x61, 0x79, 0x3e, 0x57, 0x65, 0x64, 0x6e, |
| 0x65, 0x73, 0x64, 0x61, 0x79, 0x3c, 0x2f, 0x64, 0x61, 0x79, 0x3e, 0x0a, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x64, 0x61, 0x79, |
| 0x3e, 0x54, 0x68, 0x75, 0x72, 0x73, 0x64, 0x61, 0x79, 0x3c, 0x2f, 0x64, |
| 0x61, 0x79, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x3c, 0x64, 0x61, 0x79, 0x3e, 0x46, 0x72, 0x69, 0x64, 0x61, 0x79, 0x3c, |
| 0x2f, 0x64, 0x61, 0x79, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x20, 0x3c, 0x64, 0x61, 0x79, 0x3e, 0x53, 0x61, 0x74, 0x75, 0x72, |
| 0x64, 0x61, 0x79, 0x3c, 0x2f, 0x64, 0x61, 0x79, 0x3e, 0x0a, 0x20, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x64, 0x61, 0x79, 0x4e, 0x61, 0x6d, |
| 0x65, 0x73, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x64, |
| 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x20, 0x61, 0x62, 0x62, 0x72, |
| 0x3d, 0x22, 0x31, 0x22, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x20, 0x3c, 0x64, 0x61, 0x79, 0x3e, 0x53, 0x75, 0x6e, 0x3c, 0x2f, |
| 0x64, 0x61, 0x79, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x3c, 0x64, 0x61, 0x79, 0x3e, 0x4d, 0x6f, 0x6e, 0x3c, 0x2f, 0x64, |
| 0x61, 0x79, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x3c, 0x64, 0x61, 0x79, 0x3e, 0x54, 0x75, 0x65, 0x3c, 0x2f, 0x64, 0x61, |
| 0x79, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, |
| 0x64, 0x61, 0x79, 0x3e, 0x57, 0x65, 0x64, 0x3c, 0x2f, 0x64, 0x61, 0x79, |
| 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x64, |
| 0x61, 0x79, 0x3e, 0x54, 0x68, 0x75, 0x3c, 0x2f, 0x64, 0x61, 0x79, 0x3e, |
| 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x64, 0x61, |
| 0x79, 0x3e, 0x46, 0x72, 0x69, 0x3c, 0x2f, 0x64, 0x61, 0x79, 0x3e, 0x0a, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x64, 0x61, 0x79, |
| 0x3e, 0x53, 0x61, 0x74, 0x3c, 0x2f, 0x64, 0x61, 0x79, 0x3e, 0x0a, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x64, 0x61, 0x79, 0x4e, 0x61, |
| 0x6d, 0x65, 0x73, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, |
| 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, |
| 0x73, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, |
| 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x65, 0x6d, 0x3e, 0x41, 0x4d, 0x3c, |
| 0x2f, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x65, 0x6d, 0x3e, 0x0a, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6d, 0x65, 0x72, 0x69, |
| 0x64, 0x69, 0x65, 0x6d, 0x3e, 0x50, 0x4d, 0x3c, 0x2f, 0x6d, 0x65, 0x72, |
| 0x69, 0x64, 0x69, 0x65, 0x6d, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x3c, 0x2f, 0x6d, 0x65, 0x72, 0x69, 0x64, 0x69, 0x65, 0x6d, 0x4e, |
| 0x61, 0x6d, 0x65, 0x73, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x3c, 0x65, 0x72, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x3e, 0x0a, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x65, 0x72, 0x61, 0x3e, |
| 0x42, 0x43, 0x3c, 0x2f, 0x65, 0x72, 0x61, 0x3e, 0x0a, 0x20, 0x20, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x65, 0x72, 0x61, 0x3e, 0x41, 0x44, |
| 0x3c, 0x2f, 0x65, 0x72, 0x61, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x3c, 0x2f, 0x65, 0x72, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x3e, |
| 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x61, 0x6c, 0x65, 0x6e, |
| 0x64, 0x61, 0x72, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x3e, 0x0a, |
| 0x20, 0x20, 0x20, 0x20, 0x3c, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x74, |
| 0x74, 0x65, 0x72, 0x6e, 0x73, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x3c, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, |
| 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x66, 0x75, 0x6c, 0x6c, |
| 0x22, 0x3e, 0x45, 0x45, 0x45, 0x45, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, |
| 0x20, 0x44, 0x2c, 0x20, 0x59, 0x59, 0x59, 0x59, 0x3c, 0x2f, 0x64, 0x61, |
| 0x74, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x3e, 0x0a, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, |
| 0x74, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, |
| 0x6c, 0x6f, 0x6e, 0x67, 0x22, 0x3e, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x44, |
| 0x2c, 0x20, 0x59, 0x59, 0x59, 0x59, 0x3c, 0x2f, 0x64, 0x61, 0x74, 0x65, |
| 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x3e, 0x0a, 0x20, 0x20, 0x20, |
| 0x20, 0x20, 0x20, 0x3c, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x74, 0x74, |
| 0x65, 0x72, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x6d, 0x65, |
| 0x64, 0x22, 0x3e, 0x4d, 0x4d, 0x4d, 0x20, 0x44, 0x2c, 0x20, 0x59, 0x59, |
| 0x59, 0x59, 0x3c, 0x2f, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x74, 0x74, |
| 0x65, 0x72, 0x6e, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, |
| 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x20, |
| 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x22, |
| 0x3e, 0x4d, 0x2f, 0x44, 0x2f, 0x59, 0x59, 0x3c, 0x2f, 0x64, 0x61, 0x74, |
| 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x3e, 0x0a, 0x20, 0x20, |
| 0x20, 0x20, 0x3c, 0x2f, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x74, 0x74, |
| 0x65, 0x72, 0x6e, 0x73, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, |
| 0x69, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x3e, |
| 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x6d, 0x65, |
| 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, |
| 0x3d, 0x22, 0x66, 0x75, 0x6c, 0x6c, 0x22, 0x3e, 0x68, 0x3a, 0x4d, 0x4d, |
| 0x3a, 0x53, 0x53, 0x20, 0x41, 0x20, 0x5a, 0x3c, 0x2f, 0x74, 0x69, 0x6d, |
| 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x3e, 0x0a, 0x20, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x74, |
| 0x74, 0x65, 0x72, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x6c, |
| 0x6f, 0x6e, 0x67, 0x22, 0x3e, 0x68, 0x3a, 0x4d, 0x4d, 0x3a, 0x53, 0x53, |
| 0x20, 0x41, 0x20, 0x5a, 0x3c, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x61, |
| 0x74, 0x74, 0x65, 0x72, 0x6e, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x3c, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, |
| 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x6d, 0x65, 0x64, 0x22, |
| 0x3e, 0x68, 0x3a, 0x4d, 0x4d, 0x3a, 0x53, 0x53, 0x20, 0x41, 0x3c, 0x2f, |
| 0x74, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x3e, |
| 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x6d, 0x65, |
| 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, |
| 0x3d, 0x22, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x22, 0x3e, 0x68, 0x3a, 0x4d, |
| 0x4d, 0x20, 0x41, 0x3c, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x74, |
| 0x74, 0x65, 0x72, 0x6e, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, |
| 0x74, 0x69, 0x6d, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, |
| 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x64, 0x61, 0x74, 0x65, 0x54, |
| 0x69, 0x6d, 0x65, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x3e, 0x47, |
| 0x79, 0x4d, 0x64, 0x6b, 0x48, 0x6d, 0x73, 0x53, 0x45, 0x44, 0x46, 0x77, |
| 0x57, 0x61, 0x68, 0x4b, 0x7a, 0x5a, 0x3c, 0x2f, 0x64, 0x61, 0x74, 0x65, |
| 0x54, 0x69, 0x6d, 0x65, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x3e, |
| 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, |
| 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x3e, 0x0a, 0x20, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x50, |
| 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, |
| 0x22, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x22, 0x3e, 0x7a, 0x2c, |
| 0x7a, 0x7a, 0x39, 0x2e, 0x7a, 0x7a, 0x7a, 0x3c, 0x2f, 0x6e, 0x75, 0x6d, |
| 0x62, 0x65, 0x72, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x3e, 0x0a, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6e, 0x75, 0x6d, 0x62, 0x65, |
| 0x72, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x6e, 0x61, 0x6d, |
| 0x65, 0x3d, 0x22, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x22, |
| 0x3e, 0x24, 0x7a, 0x2c, 0x7a, 0x7a, 0x39, 0x2e, 0x39, 0x39, 0x7c, 0x28, |
| 0x24, 0x7a, 0x2c, 0x7a, 0x7a, 0x39, 0x2e, 0x39, 0x39, 0x29, 0x3c, 0x2f, |
| 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, |
| 0x6e, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6e, 0x75, |
| 0x6d, 0x62, 0x65, 0x72, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x20, |
| 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, |
| 0x74, 0x22, 0x3e, 0x7a, 0x2c, 0x7a, 0x7a, 0x39, 0x25, 0x3c, 0x2f, 0x6e, |
| 0x75, 0x6d, 0x62, 0x65, 0x72, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, |
| 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x6e, 0x75, 0x6d, 0x62, |
| 0x65, 0x72, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x3e, 0x0a, |
| 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x53, |
| 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x20, 0x3c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x79, 0x6d, |
| 0x62, 0x6f, 0x6c, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x64, 0x65, |
| 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x22, 0x3e, 0x2e, 0x3c, 0x2f, 0x6e, 0x75, |
| 0x6d, 0x62, 0x65, 0x72, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x3e, 0x0a, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6e, 0x75, 0x6d, 0x62, 0x65, |
| 0x72, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x20, 0x6e, 0x61, 0x6d, 0x65, |
| 0x3d, 0x22, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x22, 0x3e, |
| 0x2c, 0x3c, 0x2f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x79, 0x6d, |
| 0x62, 0x6f, 0x6c, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, |
| 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, |
| 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x70, 0x65, 0x72, 0x63, 0x65, |
| 0x6e, 0x74, 0x22, 0x3e, 0x25, 0x3c, 0x2f, 0x6e, 0x75, 0x6d, 0x62, 0x65, |
| 0x72, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x3e, 0x0a, 0x20, 0x20, 0x20, |
| 0x20, 0x20, 0x20, 0x3c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x79, |
| 0x6d, 0x62, 0x6f, 0x6c, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x6d, |
| 0x69, 0x6e, 0x75, 0x73, 0x22, 0x3e, 0x2d, 0x3c, 0x2f, 0x6e, 0x75, 0x6d, |
| 0x62, 0x65, 0x72, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x3e, 0x0a, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, |
| 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, |
| 0x22, 0x7a, 0x65, 0x72, 0x6f, 0x22, 0x3e, 0x30, 0x3c, 0x2f, 0x6e, 0x75, |
| 0x6d, 0x62, 0x65, 0x72, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x3e, 0x0a, |
| 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, |
| 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x3e, 0x0a, 0x20, 0x20, 0x20, |
| 0x20, 0x3c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x79, |
| 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x20, 0x3c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x79, |
| 0x6d, 0x62, 0x6f, 0x6c, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x73, |
| 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x22, 0x3e, 0x24, 0x3c, 0x2f, 0x63, 0x75, |
| 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, |
| 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x75, 0x72, |
| 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x20, |
| 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x69, 0x73, 0x6f, 0x6e, 0x61, 0x6d, |
| 0x65, 0x22, 0x3e, 0x55, 0x53, 0x44, 0x3c, 0x2f, 0x63, 0x75, 0x72, 0x72, |
| 0x65, 0x6e, 0x63, 0x79, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x3e, 0x0a, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x75, 0x72, 0x72, 0x65, |
| 0x6e, 0x63, 0x79, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x20, 0x6e, 0x61, |
| 0x6d, 0x65, 0x3d, 0x22, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x22, |
| 0x3e, 0x2e, 0x3c, 0x2f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, |
| 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, |
| 0x3c, 0x2f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x79, |
| 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, |
| 0x74, 0x79, 0x70, 0x65, 0x66, 0x61, 0x63, 0x65, 0x73, 0x3e, 0x0a, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x66, 0x61, |
| 0x63, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x4d, 0x79, 0x72, |
| 0x69, 0x61, 0x64, 0x20, 0x50, 0x72, 0x6f, 0x22, 0x2f, 0x3e, 0x0a, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x66, 0x61, |
| 0x63, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x4d, 0x69, 0x6e, |
| 0x69, 0x6f, 0x6e, 0x20, 0x50, 0x72, 0x6f, 0x22, 0x2f, 0x3e, 0x0a, 0x20, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x66, 0x61, |
| 0x63, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x43, 0x6f, 0x75, |
| 0x72, 0x69, 0x65, 0x72, 0x20, 0x53, 0x74, 0x64, 0x22, 0x2f, 0x3e, 0x0a, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x66, |
| 0x61, 0x63, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x41, 0x64, |
| 0x6f, 0x62, 0x65, 0x20, 0x50, 0x69, 0x20, 0x53, 0x74, 0x64, 0x22, 0x2f, |
| 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x79, 0x70, |
| 0x65, 0x66, 0x61, 0x63, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, |
| 0x41, 0x64, 0x6f, 0x62, 0x65, 0x20, 0x48, 0x65, 0x62, 0x72, 0x65, 0x77, |
| 0x22, 0x2f, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, |
| 0x79, 0x70, 0x65, 0x66, 0x61, 0x63, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, |
| 0x3d, 0x22, 0x41, 0x64, 0x6f, 0x62, 0x65, 0x20, 0x41, 0x72, 0x61, 0x62, |
| 0x69, 0x63, 0x22, 0x2f, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x3c, 0x74, 0x79, 0x70, 0x65, 0x66, 0x61, 0x63, 0x65, 0x20, 0x6e, 0x61, |
| 0x6d, 0x65, 0x3d, 0x22, 0x41, 0x64, 0x6f, 0x62, 0x65, 0x20, 0x54, 0x68, |
| 0x61, 0x69, 0x22, 0x2f, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x3c, 0x74, 0x79, 0x70, 0x65, 0x66, 0x61, 0x63, 0x65, 0x20, 0x6e, 0x61, |
| 0x6d, 0x65, 0x3d, 0x22, 0x4b, 0x6f, 0x7a, 0x75, 0x6b, 0x61, 0x20, 0x47, |
| 0x6f, 0x74, 0x68, 0x69, 0x63, 0x20, 0x50, 0x72, 0x6f, 0x2d, 0x56, 0x49, |
| 0x20, 0x4d, 0x22, 0x2f, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x3c, 0x74, 0x79, 0x70, 0x65, 0x66, 0x61, 0x63, 0x65, 0x20, 0x6e, 0x61, |
| 0x6d, 0x65, 0x3d, 0x22, 0x4b, 0x6f, 0x7a, 0x75, 0x6b, 0x61, 0x20, 0x4d, |
| 0x69, 0x6e, 0x63, 0x68, 0x6f, 0x20, 0x50, 0x72, 0x6f, 0x2d, 0x56, 0x49, |
| 0x20, 0x52, 0x22, 0x2f, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x3c, 0x74, 0x79, 0x70, 0x65, 0x66, 0x61, 0x63, 0x65, 0x20, 0x6e, 0x61, |
| 0x6d, 0x65, 0x3d, 0x22, 0x41, 0x64, 0x6f, 0x62, 0x65, 0x20, 0x4d, 0x69, |
| 0x6e, 0x67, 0x20, 0x53, 0x74, 0x64, 0x20, 0x4c, 0x22, 0x2f, 0x3e, 0x0a, |
| 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x66, |
| 0x61, 0x63, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x41, 0x64, |
| 0x6f, 0x62, 0x65, 0x20, 0x53, 0x6f, 0x6e, 0x67, 0x20, 0x53, 0x74, 0x64, |
| 0x20, 0x4c, 0x22, 0x2f, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, |
| 0x3c, 0x74, 0x79, 0x70, 0x65, 0x66, 0x61, 0x63, 0x65, 0x20, 0x6e, 0x61, |
| 0x6d, 0x65, 0x3d, 0x22, 0x41, 0x64, 0x6f, 0x62, 0x65, 0x20, 0x4d, 0x79, |
| 0x75, 0x6e, 0x67, 0x6a, 0x6f, 0x20, 0x53, 0x74, 0x64, 0x20, 0x4d, 0x22, |
| 0x2f, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x74, 0x79, 0x70, |
| 0x65, 0x66, 0x61, 0x63, 0x65, 0x73, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x2f, |
| 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x3e, 0x0a, 0x3c, 0x2f, 0x6c, 0x6f, |
| 0x63, 0x61, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x3e, 0x0a, 0x65, 0x6e, 0x64, |
| 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x0a, 0x65, 0x6e, 0x64, 0x6f, 0x62, |
| 0x6a, 0x0a, 0x37, 0x20, 0x30, 0x20, 0x6f, 0x62, 0x6a, 0x20, 0x3c, 0x3c, |
| 0x0a, 0x20, 0x20, 0x2f, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x31, |
| 0x31, 0x0a, 0x3e, 0x3e, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x0a, |
| 0x3c, 0x2f, 0x78, 0x64, 0x70, 0x3a, 0x78, 0x64, 0x70, 0x3e, 0x0a, 0x65, |
| 0x6e, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x0a, 0x65, 0x6e, 0x64, |
| 0x6f, 0x62, 0x6a, 0x0a, 0x38, 0x20, 0x30, 0x20, 0x6f, 0x62, 0x6a, 0x20, |
| 0x3c, 0x3c, 0x0a, 0x20, 0x20, 0x2f, 0x54, 0x79, 0x70, 0x65, 0x20, 0x2f, |
| 0x50, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x20, 0x20, 0x2f, 0x43, 0x6f, 0x75, |
| 0x6e, 0x74, 0x20, 0x31, 0x0a, 0x20, 0x20, 0x2f, 0x4b, 0x69, 0x64, 0x73, |
| 0x20, 0x5b, 0x39, 0x20, 0x30, 0x20, 0x52, 0x5d, 0x0a, 0x3e, 0x3e, 0x0a, |
| 0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a, 0x0a, 0x39, 0x20, 0x30, 0x20, 0x6f, |
| 0x62, 0x6a, 0x20, 0x3c, 0x3c, 0x0a, 0x20, 0x20, 0x2f, 0x54, 0x79, 0x70, |
| 0x65, 0x20, 0x2f, 0x50, 0x61, 0x67, 0x65, 0x0a, 0x20, 0x20, 0x2f, 0x50, |
| 0x61, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x32, 0x20, 0x30, 0x20, 0x52, 0x0a, |
| 0x20, 0x20, 0x2f, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x42, 0x6f, 0x78, 0x20, |
| 0x5b, 0x30, 0x20, 0x30, 0x20, 0x36, 0x31, 0x32, 0x20, 0x37, 0x39, 0x32, |
| 0x5d, 0x0a, 0x3e, 0x3e, 0x0a, 0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a, 0x0a, |
| 0x78, 0x72, 0x65, 0x66, 0x0a, 0x30, 0x20, 0x31, 0x30, 0x0a, 0x30, 0x30, |
| 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x36, 0x35, 0x35, |
| 0x33, 0x35, 0x20, 0x66, 0x20, 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, |
| 0x30, 0x30, 0x31, 0x35, 0x20, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x6e, |
| 0x20, 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x39, 0x39, |
| 0x20, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x6e, 0x20, 0x0a, 0x30, 0x30, |
| 0x30, 0x30, 0x30, 0x30, 0x30, 0x33, 0x35, 0x38, 0x20, 0x30, 0x30, 0x30, |
| 0x30, 0x30, 0x20, 0x6e, 0x20, 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, |
| 0x30, 0x35, 0x33, 0x34, 0x20, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x6e, |
| 0x20, 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x32, 0x32, 0x38, |
| 0x20, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x6e, 0x20, 0x0a, 0x30, 0x30, |
| 0x30, 0x30, 0x30, 0x30, 0x31, 0x37, 0x36, 0x32, 0x20, 0x30, 0x30, 0x30, |
| 0x30, 0x30, 0x20, 0x6e, 0x20, 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, |
| 0x35, 0x32, 0x37, 0x30, 0x20, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x6e, |
| 0x20, 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x35, 0x33, 0x33, 0x32, |
| 0x20, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x6e, 0x20, 0x0a, 0x30, 0x30, |
| 0x30, 0x30, 0x30, 0x30, 0x35, 0x33, 0x39, 0x35, 0x20, 0x30, 0x30, 0x30, |
| 0x30, 0x30, 0x20, 0x6e, 0x20, 0x0a, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, |
| 0x72, 0x20, 0x3c, 0x3c, 0x0a, 0x20, 0x20, 0x2f, 0x52, 0x6f, 0x6f, 0x74, |
| 0x20, 0x31, 0x20, 0x30, 0x20, 0x52, 0x0a, 0x20, 0x20, 0x2f, 0x53, 0x69, |
| 0x7a, 0x65, 0x20, 0x31, 0x30, 0x0a, 0x3e, 0x3e, 0x0a, 0x73, 0x74, 0x61, |
| 0x72, 0x74, 0x78, 0x72, 0x65, 0x66, 0x0a, 0x35, 0x34, 0x37, 0x32, 0x0a, |
| 0x25, 0x25, 0x45, 0x4f, 0x46, 0x0a}; |
| |
| } // namespace |
| |
| class PDFiumFormCalcContextFuzzer : public PDFiumFuzzerHelper { |
| public: |
| PDFiumFormCalcContextFuzzer(const uint8_t* data, size_t size) |
| : data_(data), size_(size) {} |
| ~PDFiumFormCalcContextFuzzer() override = default; |
| |
| int GetFormCallbackVersion() const override { return 2; } |
| |
| // Return false if XFA doesn't load as otherwise we're duplicating the work |
| // done by the non-xfa fuzzer. |
| bool OnFormFillEnvLoaded(FPDF_DOCUMENT doc) override { |
| return FPDF_LoadXFA(doc); |
| } |
| |
| void OnRenderFinished(FPDF_DOCUMENT doc) override { |
| auto* context = static_cast<CPDFXFA_Context*>( |
| CPDFDocumentFromFPDFDocument(doc)->GetExtension()); |
| CXFA_Document* xfa_document = context->GetXFADoc()->GetXFADoc(); |
| CFXJSE_Engine* script_context = xfa_document->GetScriptContext(); |
| |
| CXFA_EventParam params; |
| params.m_bCancelAction = false; |
| script_context->SetEventParam(¶ms); |
| ByteStringView data_view(data_, size_); |
| |
| auto value = std::make_unique<CFXJSE_Value>(); |
| script_context->RunScript(CXFA_Script::Type::Formcalc, |
| WideString::FromUTF8(data_view).AsStringView(), |
| value.get(), xfa_document->GetRoot()); |
| |
| script_context->SetEventParam(nullptr); |
| } |
| |
| private: |
| const uint8_t* data_; |
| size_t size_; |
| }; |
| |
| extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { |
| PDFiumFormCalcContextFuzzer fuzzer(data, size); |
| fuzzer.RenderPdf(reinterpret_cast<const char*>(kSimpleXfaPdfData), |
| sizeof(kSimpleXfaPdfData)); |
| return 0; |
| } |