From 696393eae1a9538554493eef3942f82266c4e408 Mon Sep 17 00:00:00 2001 From: dawa79 <44974635+dawa79@users.noreply.github.com> Date: Tue, 16 Feb 2021 11:17:32 -0500 Subject: [PATCH 1/3] fix the bug compressed type of bool and fix array (#394) * fix the bug compressed type of bool and fix array * add test caes for compressed type of bool and fix array --- include/hobbes/boot/gen/bootdata.H | 2596 +++++++++++++++------------- lib/hobbes/boot/zstorage.hob | 36 + test/Storage.C | 17 +- 3 files changed, 1415 insertions(+), 1234 deletions(-) diff --git a/include/hobbes/boot/gen/bootdata.H b/include/hobbes/boot/gen/bootdata.H index c92cc5809..430b7a882 100644 --- a/include/hobbes/boot/gen/bootdata.H +++ b/include/hobbes/boot/gen/bootdata.H @@ -10616,942 +10616,1062 @@ unsigned char __zstorage_hob[] = { 0x53, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x20, 0x34, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x55, 0x43, 0x4d, 0x53, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x64, 0x6f, 0x75, - 0x62, 0x6c, 0x65, 0x20, 0x38, 0x0a, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x20, - 0x70, 0x63, 0x73, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6e, 0x20, 0x3d, - 0x20, 0x7b, 0x20, 0x70, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x3a, 0x5b, - 0x3a, 0x28, 0x63, 0x73, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x32, 0x35, - 0x36, 0x29, 0x7c, 0x6e, 0x3a, 0x5d, 0x20, 0x7d, 0x0a, 0x74, 0x79, 0x70, - 0x65, 0x20, 0x70, 0x64, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x6e, - 0x20, 0x3d, 0x20, 0x5b, 0x3a, 0x3c, 0x68, 0x6f, 0x62, 0x62, 0x65, 0x73, - 0x2e, 0x44, 0x79, 0x6e, 0x44, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x30, 0x3e, - 0x7c, 0x6e, 0x3a, 0x5d, 0x0a, 0x0a, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x41, 0x20, 0x73, 0x6d, 0x20, 0x64, - 0x6d, 0x20, 0x69, 0x20, 0x65, 0x20, 0x3d, 0x0a, 0x20, 0x20, 0x69, 0x66, - 0x20, 0x28, 0x69, 0x20, 0x3d, 0x3d, 0x20, 0x65, 0x29, 0x20, 0x74, 0x68, - 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x29, 0x0a, 0x20, 0x20, - 0x65, 0x6c, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x64, 0x64, 0x6d, 0x49, 0x6e, 0x69, 0x74, 0x28, 0x73, 0x61, - 0x65, 0x6c, 0x65, 0x6d, 0x28, 0x64, 0x6d, 0x2c, 0x69, 0x29, 0x2c, 0x20, - 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x73, - 0x61, 0x65, 0x6c, 0x65, 0x6d, 0x28, 0x73, 0x6d, 0x2e, 0x70, 0x6d, 0x6f, - 0x64, 0x65, 0x6c, 0x73, 0x2c, 0x69, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x53, 0x41, 0x28, 0x73, 0x6d, 0x2c, 0x20, 0x64, 0x6d, 0x2c, - 0x20, 0x69, 0x2b, 0x31, 0x4c, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x7d, 0x0a, 0x7b, 0x2d, 0x23, 0x20, 0x55, 0x4e, 0x53, 0x41, 0x46, - 0x45, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x53, 0x41, 0x20, 0x23, 0x2d, 0x7d, 0x0a, 0x0a, 0x75, 0x63, 0x44, - 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, - 0x41, 0x20, 0x64, 0x6d, 0x20, 0x69, 0x20, 0x65, 0x20, 0x3d, 0x0a, 0x20, + 0x62, 0x6c, 0x65, 0x20, 0x38, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x20, 0x55, 0x43, 0x4d, 0x53, 0x69, 0x7a, 0x65, 0x64, 0x20, + 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x20, 0x20, 0x31, 0x0a, 0x0a, 0x74, 0x79, + 0x70, 0x65, 0x20, 0x70, 0x63, 0x73, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, + 0x6e, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x70, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x73, 0x3a, 0x5b, 0x3a, 0x28, 0x63, 0x73, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x20, 0x32, 0x35, 0x36, 0x29, 0x7c, 0x6e, 0x3a, 0x5d, 0x20, 0x7d, 0x0a, + 0x74, 0x79, 0x70, 0x65, 0x20, 0x70, 0x64, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x20, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x5b, 0x3a, 0x3c, 0x68, 0x6f, 0x62, + 0x62, 0x65, 0x73, 0x2e, 0x44, 0x79, 0x6e, 0x44, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x30, 0x3e, 0x7c, 0x6e, 0x3a, 0x5d, 0x0a, 0x0a, 0x75, 0x63, 0x50, + 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x41, 0x20, 0x73, + 0x6d, 0x20, 0x64, 0x6d, 0x20, 0x69, 0x20, 0x65, 0x20, 0x3d, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x20, 0x3d, 0x3d, 0x20, 0x65, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x64, 0x6d, 0x44, 0x65, 0x73, 0x74, - 0x72, 0x6f, 0x79, 0x28, 0x73, 0x61, 0x65, 0x6c, 0x65, 0x6d, 0x28, 0x64, - 0x6d, 0x2c, 0x69, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, - 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x53, 0x41, 0x28, 0x64, 0x6d, 0x2c, 0x20, 0x69, 0x2b, 0x31, 0x4c, - 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7b, 0x2d, - 0x23, 0x20, 0x55, 0x4e, 0x53, 0x41, 0x46, 0x45, 0x20, 0x75, 0x63, 0x44, - 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, - 0x41, 0x20, 0x23, 0x2d, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x53, 0x69, 0x7a, 0x65, - 0x64, 0x20, 0x74, 0x20, 0x6e, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x28, 0x70, 0x63, 0x73, - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6e, 0x29, 0x20, 0x28, 0x70, 0x64, - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6e, 0x29, 0x20, 0x77, 0x68, 0x65, - 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x66, 0x20, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x5b, 0x64, 0x64, 0x6d, 0x4d, 0x61, - 0x6b, 0x65, 0x28, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, - 0x74, 0x28, 0x66, 0x29, 0x2c, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x2c, - 0x20, 0x30, 0x58, 0x66, 0x66, 0x29, 0x20, 0x7c, 0x20, 0x5f, 0x20, 0x3c, - 0x2d, 0x20, 0x6e, 0x65, 0x77, 0x50, 0x72, 0x69, 0x6d, 0x28, 0x29, 0x3a, - 0x3a, 0x5b, 0x3a, 0x69, 0x6e, 0x74, 0x7c, 0x6e, 0x3a, 0x5d, 0x5d, 0x0a, - 0x20, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x20, 0x20, 0x20, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x20, 0x20, - 0x20, 0x3d, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x53, 0x41, 0x28, 0x73, 0x6d, 0x2c, 0x20, 0x64, 0x6d, 0x2c, - 0x20, 0x30, 0x4c, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x6f, - 0x6e, 0x67, 0x3a, 0x3a, 0x28, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x6f, - 0x6e, 0x67, 0x20, 0x6e, 0x29, 0x3d, 0x3e, 0x6c, 0x6f, 0x6e, 0x67, 0x29, - 0x0a, 0x20, 0x20, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x64, 0x6d, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, - 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x41, 0x28, 0x64, 0x6d, 0x2c, - 0x20, 0x30, 0x4c, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x6f, - 0x6e, 0x67, 0x3a, 0x3a, 0x28, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x6f, - 0x6e, 0x67, 0x20, 0x6e, 0x29, 0x3d, 0x3e, 0x6c, 0x6f, 0x6e, 0x67, 0x29, - 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, - 0x55, 0x43, 0x4d, 0x53, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x74, 0x20, 0x6e, - 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, - 0x74, 0x20, 0x28, 0x70, 0x63, 0x73, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x6e, 0x29, 0x20, 0x28, 0x70, 0x64, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x6e, 0x29, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, - 0x63, 0x52, 0x65, 0x61, 0x64, 0x20, 0x72, 0x20, 0x64, 0x6d, 0x20, 0x3d, - 0x20, 0x28, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, - 0x28, 0x5b, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x3a, 0x3a, 0x28, - 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, - 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x72, 0x2c, 0x73, - 0x61, 0x65, 0x6c, 0x65, 0x6d, 0x28, 0x64, 0x6d, 0x2c, 0x69, 0x29, 0x29, - 0x20, 0x7c, 0x20, 0x69, 0x20, 0x3c, 0x2d, 0x20, 0x28, 0x66, 0x69, 0x78, - 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x3a, 0x3a, 0x28, 0x46, 0x69, - 0x78, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x6e, 0x29, 0x3d, - 0x3e, 0x5b, 0x3a, 0x6c, 0x6f, 0x6e, 0x67, 0x7c, 0x6e, 0x3a, 0x5d, 0x29, - 0x5d, 0x29, 0x3a, 0x3a, 0x7b, 0x78, 0x3a, 0x74, 0x7d, 0x29, 0x2e, 0x78, - 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, - 0x55, 0x43, 0x4d, 0x53, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x74, 0x20, 0x6e, - 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, - 0x20, 0x74, 0x20, 0x28, 0x70, 0x63, 0x73, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x20, 0x6e, 0x29, 0x20, 0x28, 0x70, 0x64, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x20, 0x6e, 0x29, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, - 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x77, 0x20, 0x64, 0x6d, - 0x20, 0x78, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x62, 0x73, - 0x3d, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, - 0x7b, 0x78, 0x3d, 0x78, 0x7d, 0x29, 0x3a, 0x3a, 0x5b, 0x3a, 0x62, 0x79, - 0x74, 0x65, 0x7c, 0x6e, 0x3a, 0x5d, 0x3b, 0x20, 0x5b, 0x75, 0x63, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x28, 0x77, 0x2c, 0x20, 0x73, 0x61, 0x65, 0x6c, - 0x65, 0x6d, 0x28, 0x64, 0x6d, 0x2c, 0x20, 0x69, 0x29, 0x2c, 0x20, 0x73, - 0x61, 0x65, 0x6c, 0x65, 0x6d, 0x28, 0x62, 0x73, 0x2c, 0x20, 0x69, 0x29, - 0x29, 0x20, 0x7c, 0x20, 0x69, 0x20, 0x3c, 0x2d, 0x20, 0x28, 0x66, 0x69, - 0x78, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x3a, 0x3a, 0x28, 0x46, - 0x69, 0x78, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x6e, 0x29, - 0x3d, 0x3e, 0x5f, 0x29, 0x5d, 0x3b, 0x20, 0x7d, 0x0a, 0x0a, 0x2f, 0x2f, - 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, - 0x20, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x74, 0x20, - 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x20, 0x7c, 0x20, 0x74, 0x20, - 0x2d, 0x3e, 0x20, 0x74, 0x73, 0x6d, 0x2c, 0x20, 0x74, 0x20, 0x2d, 0x3e, - 0x20, 0x74, 0x64, 0x6d, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x20, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x28, - 0x29, 0x20, 0x28, 0x29, 0x20, 0x28, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x74, 0x3d, 0x28, 0x6c, 0x2a, 0x72, - 0x29, 0x2c, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6c, - 0x20, 0x6c, 0x73, 0x6d, 0x20, 0x6c, 0x64, 0x6d, 0x2c, 0x20, 0x55, 0x43, - 0x4d, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x72, 0x20, 0x72, 0x73, 0x6d, - 0x20, 0x72, 0x64, 0x6d, 0x2c, 0x20, 0x28, 0x6c, 0x73, 0x6d, 0x2a, 0x72, - 0x73, 0x6d, 0x29, 0x3d, 0x74, 0x73, 0x6d, 0x2c, 0x20, 0x28, 0x6c, 0x64, - 0x6d, 0x2a, 0x72, 0x64, 0x6d, 0x29, 0x3d, 0x74, 0x64, 0x6d, 0x29, 0x20, - 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x20, - 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x0a, 0x0a, 0x63, - 0x6c, 0x61, 0x73, 0x73, 0x20, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, - 0x64, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x64, 0x6d, 0x49, 0x6e, 0x69, 0x74, + 0x28, 0x73, 0x61, 0x65, 0x6c, 0x65, 0x6d, 0x28, 0x64, 0x6d, 0x2c, 0x69, + 0x29, 0x2c, 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, + 0x74, 0x28, 0x73, 0x61, 0x65, 0x6c, 0x65, 0x6d, 0x28, 0x73, 0x6d, 0x2e, + 0x70, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2c, 0x69, 0x29, 0x29, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x41, 0x28, 0x73, 0x6d, 0x2c, 0x20, + 0x64, 0x6d, 0x2c, 0x20, 0x69, 0x2b, 0x31, 0x4c, 0x2c, 0x20, 0x65, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7b, 0x2d, 0x23, 0x20, 0x55, 0x4e, + 0x53, 0x41, 0x46, 0x45, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x41, 0x20, 0x23, 0x2d, 0x7d, 0x0a, 0x0a, + 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x53, 0x41, 0x20, 0x64, 0x6d, 0x20, 0x69, 0x20, 0x65, 0x20, + 0x3d, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x20, 0x3d, 0x3d, + 0x20, 0x65, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x64, + 0x6f, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x64, 0x6d, 0x44, + 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x28, 0x73, 0x61, 0x65, 0x6c, 0x65, + 0x6d, 0x28, 0x64, 0x6d, 0x2c, 0x69, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x41, 0x28, 0x64, 0x6d, 0x2c, 0x20, 0x69, + 0x2b, 0x31, 0x4c, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, + 0x0a, 0x7b, 0x2d, 0x23, 0x20, 0x55, 0x4e, 0x53, 0x41, 0x46, 0x45, 0x20, + 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x53, 0x41, 0x20, 0x23, 0x2d, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x53, + 0x69, 0x7a, 0x65, 0x64, 0x20, 0x74, 0x20, 0x6e, 0x29, 0x20, 0x3d, 0x3e, + 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x28, + 0x70, 0x63, 0x73, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6e, 0x29, 0x20, + 0x28, 0x70, 0x64, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6e, 0x29, 0x20, + 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x41, 0x6c, + 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x66, + 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x5b, 0x64, 0x64, + 0x6d, 0x4d, 0x61, 0x6b, 0x65, 0x28, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, + 0x43, 0x61, 0x73, 0x74, 0x28, 0x66, 0x29, 0x2c, 0x20, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x2c, 0x20, 0x30, 0x58, 0x66, 0x66, 0x29, 0x20, 0x7c, 0x20, + 0x5f, 0x20, 0x3c, 0x2d, 0x20, 0x6e, 0x65, 0x77, 0x50, 0x72, 0x69, 0x6d, + 0x28, 0x29, 0x3a, 0x3a, 0x5b, 0x3a, 0x69, 0x6e, 0x74, 0x7c, 0x6e, 0x3a, + 0x5d, 0x5d, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20, 0x73, 0x6d, 0x20, 0x64, + 0x6d, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x41, 0x28, 0x73, 0x6d, 0x2c, 0x20, + 0x64, 0x6d, 0x2c, 0x20, 0x30, 0x4c, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x65, + 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x3a, 0x3a, 0x28, 0x4c, 0x6f, 0x77, 0x65, + 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x20, 0x6e, 0x29, 0x3d, 0x3e, 0x6c, 0x6f, + 0x6e, 0x67, 0x29, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, + 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x64, 0x6d, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x44, 0x65, 0x61, + 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x41, 0x28, + 0x64, 0x6d, 0x2c, 0x20, 0x30, 0x4c, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x65, + 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x3a, 0x3a, 0x28, 0x4c, 0x6f, 0x77, 0x65, + 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x20, 0x6e, 0x29, 0x3d, 0x3e, 0x6c, 0x6f, + 0x6e, 0x67, 0x29, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x53, 0x69, 0x7a, 0x65, 0x64, 0x20, + 0x74, 0x20, 0x6e, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x52, 0x65, + 0x61, 0x64, 0x20, 0x74, 0x20, 0x28, 0x70, 0x63, 0x73, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x20, 0x6e, 0x29, 0x20, 0x28, 0x70, 0x64, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x20, 0x6e, 0x29, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, + 0x20, 0x20, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x20, 0x72, 0x20, 0x64, + 0x6d, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, + 0x61, 0x73, 0x74, 0x28, 0x5b, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, + 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x62, 0x79, + 0x74, 0x65, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, + 0x72, 0x2c, 0x73, 0x61, 0x65, 0x6c, 0x65, 0x6d, 0x28, 0x64, 0x6d, 0x2c, + 0x69, 0x29, 0x29, 0x20, 0x7c, 0x20, 0x69, 0x20, 0x3c, 0x2d, 0x20, 0x28, + 0x66, 0x69, 0x78, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x3a, 0x3a, + 0x28, 0x46, 0x69, 0x78, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x20, + 0x6e, 0x29, 0x3d, 0x3e, 0x5b, 0x3a, 0x6c, 0x6f, 0x6e, 0x67, 0x7c, 0x6e, + 0x3a, 0x5d, 0x29, 0x5d, 0x29, 0x3a, 0x3a, 0x7b, 0x78, 0x3a, 0x74, 0x7d, + 0x29, 0x2e, 0x78, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x53, 0x69, 0x7a, 0x65, 0x64, 0x20, + 0x74, 0x20, 0x6e, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x20, 0x74, 0x20, 0x28, 0x70, 0x63, 0x73, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x20, 0x6e, 0x29, 0x20, 0x28, 0x70, 0x64, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x20, 0x6e, 0x29, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, + 0x0a, 0x20, 0x20, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x77, + 0x20, 0x64, 0x6d, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, + 0x20, 0x62, 0x73, 0x3d, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, + 0x73, 0x74, 0x28, 0x7b, 0x78, 0x3d, 0x78, 0x7d, 0x29, 0x3a, 0x3a, 0x5b, + 0x3a, 0x62, 0x79, 0x74, 0x65, 0x7c, 0x6e, 0x3a, 0x5d, 0x3b, 0x20, 0x5b, + 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x28, 0x77, 0x2c, 0x20, 0x73, + 0x61, 0x65, 0x6c, 0x65, 0x6d, 0x28, 0x64, 0x6d, 0x2c, 0x20, 0x69, 0x29, + 0x2c, 0x20, 0x73, 0x61, 0x65, 0x6c, 0x65, 0x6d, 0x28, 0x62, 0x73, 0x2c, + 0x20, 0x69, 0x29, 0x29, 0x20, 0x7c, 0x20, 0x69, 0x20, 0x3c, 0x2d, 0x20, + 0x28, 0x66, 0x69, 0x78, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x3a, + 0x3a, 0x28, 0x46, 0x69, 0x78, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x20, 0x6e, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x5d, 0x3b, 0x20, 0x7d, 0x0a, + 0x0a, 0x2f, 0x2f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x0a, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x20, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x6c, 0x65, + 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x20, 0x7c, + 0x20, 0x74, 0x20, 0x2d, 0x3e, 0x20, 0x74, 0x73, 0x6d, 0x2c, 0x20, 0x74, + 0x20, 0x2d, 0x3e, 0x20, 0x74, 0x64, 0x6d, 0x0a, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x20, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x6c, + 0x65, 0x20, 0x28, 0x29, 0x20, 0x28, 0x29, 0x20, 0x28, 0x29, 0x0a, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x74, 0x3d, 0x28, + 0x6c, 0x2a, 0x72, 0x29, 0x2c, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x20, 0x6c, 0x20, 0x6c, 0x73, 0x6d, 0x20, 0x6c, 0x64, 0x6d, 0x2c, + 0x20, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x72, 0x20, + 0x72, 0x73, 0x6d, 0x20, 0x72, 0x64, 0x6d, 0x2c, 0x20, 0x28, 0x6c, 0x73, + 0x6d, 0x2a, 0x72, 0x73, 0x6d, 0x29, 0x3d, 0x74, 0x73, 0x6d, 0x2c, 0x20, + 0x28, 0x6c, 0x64, 0x6d, 0x2a, 0x72, 0x64, 0x6d, 0x29, 0x3d, 0x74, 0x64, + 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, + 0x6c, 0x65, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, + 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x55, 0x43, 0x4d, 0x54, + 0x75, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x74, 0x73, + 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, + 0x20, 0x20, 0x75, 0x63, 0x54, 0x75, 0x70, 0x41, 0x6c, 0x6c, 0x6f, 0x63, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x3a, 0x3a, 0x20, 0x28, + 0x28, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x29, 0x20, 0x28, 0x29, 0x29, + 0x2c, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x2c, 0x20, 0x74, 0x64, 0x6d, 0x29, + 0x20, 0x2d, 0x3e, 0x20, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x54, + 0x75, 0x70, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, + 0x20, 0x20, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x74, 0x73, 0x6d, 0x2c, 0x20, + 0x74, 0x64, 0x6d, 0x29, 0x20, 0x2d, 0x3e, 0x20, 0x28, 0x29, 0x0a, 0x20, + 0x20, 0x75, 0x63, 0x54, 0x75, 0x70, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, + 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x3a, 0x3a, 0x20, 0x74, 0x64, + 0x6d, 0x20, 0x2d, 0x3e, 0x20, 0x28, 0x29, 0x0a, 0x0a, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x28, 0x29, 0x20, 0x28, 0x29, 0x20, + 0x28, 0x29, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x54, 0x75, 0x70, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x20, 0x20, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x28, 0x66, 0x69, - 0x6c, 0x65, 0x20, 0x28, 0x29, 0x20, 0x28, 0x29, 0x29, 0x2c, 0x20, 0x62, - 0x6f, 0x6f, 0x6c, 0x2c, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x2d, 0x3e, + 0x65, 0x6c, 0x20, 0x20, 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x3d, 0x20, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x54, 0x75, 0x70, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20, - 0x3a, 0x3a, 0x20, 0x28, 0x74, 0x73, 0x6d, 0x2c, 0x20, 0x74, 0x64, 0x6d, - 0x29, 0x20, 0x2d, 0x3e, 0x20, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x75, 0x63, - 0x54, 0x75, 0x70, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x20, 0x3a, 0x3a, 0x20, 0x74, 0x64, 0x6d, 0x20, 0x2d, - 0x3e, 0x20, 0x28, 0x29, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x20, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x20, 0x28, 0x29, 0x20, 0x28, 0x29, 0x20, 0x28, 0x29, 0x20, - 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x54, 0x75, - 0x70, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x20, 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x3d, 0x20, 0x28, 0x29, - 0x0a, 0x20, 0x20, 0x75, 0x63, 0x54, 0x75, 0x70, 0x50, 0x72, 0x65, 0x70, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x20, 0x5f, - 0x20, 0x20, 0x20, 0x3d, 0x20, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x75, 0x63, - 0x54, 0x75, 0x70, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x20, 0x5f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, - 0x28, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, - 0x28, 0x74, 0x3d, 0x28, 0x6c, 0x2a, 0x72, 0x29, 0x2c, 0x20, 0x74, 0x73, - 0x6d, 0x3d, 0x28, 0x6c, 0x73, 0x6d, 0x2a, 0x72, 0x73, 0x6d, 0x29, 0x2c, - 0x20, 0x74, 0x64, 0x6d, 0x3d, 0x28, 0x6c, 0x64, 0x6d, 0x2a, 0x72, 0x64, - 0x6d, 0x29, 0x2c, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x6c, 0x20, 0x6c, 0x73, 0x6d, 0x20, 0x6c, 0x64, 0x6d, 0x2c, 0x20, 0x55, + 0x5f, 0x20, 0x5f, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x28, 0x29, 0x0a, 0x20, + 0x20, 0x75, 0x63, 0x54, 0x75, 0x70, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, + 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x5f, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x3d, 0x20, 0x28, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x20, 0x28, 0x74, 0x3d, 0x28, 0x6c, 0x2a, 0x72, 0x29, 0x2c, + 0x20, 0x74, 0x73, 0x6d, 0x3d, 0x28, 0x6c, 0x73, 0x6d, 0x2a, 0x72, 0x73, + 0x6d, 0x29, 0x2c, 0x20, 0x74, 0x64, 0x6d, 0x3d, 0x28, 0x6c, 0x64, 0x6d, + 0x2a, 0x72, 0x64, 0x6d, 0x29, 0x2c, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x20, 0x6c, 0x20, 0x6c, 0x73, 0x6d, 0x20, 0x6c, 0x64, 0x6d, + 0x2c, 0x20, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x20, 0x72, 0x20, 0x72, 0x73, 0x6d, 0x20, 0x72, 0x64, 0x6d, 0x29, + 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, + 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, + 0x54, 0x75, 0x70, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x20, 0x20, 0x20, 0x66, 0x20, 0x69, 0x6e, 0x70, 0x20, 0x64, 0x6d, + 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x64, 0x6d, 0x2e, 0x30, + 0x20, 0x3c, 0x2d, 0x20, 0x28, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x20, 0x6c, 0x20, 0x6c, 0x73, 0x6d, 0x20, 0x6c, 0x64, + 0x6d, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x66, 0x2c, 0x20, 0x69, 0x6e, + 0x70, 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x54, 0x75, 0x70, 0x41, 0x6c, + 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x72, - 0x20, 0x72, 0x73, 0x6d, 0x20, 0x72, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, - 0x20, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x20, 0x77, - 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x54, 0x75, 0x70, - 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, - 0x20, 0x66, 0x20, 0x69, 0x6e, 0x70, 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, - 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x64, 0x6d, 0x2e, 0x30, 0x20, 0x3c, 0x2d, - 0x20, 0x28, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x20, 0x6c, 0x20, 0x6c, 0x73, 0x6d, 0x20, 0x6c, 0x64, 0x6d, 0x29, 0x3d, - 0x3e, 0x5f, 0x29, 0x28, 0x66, 0x2c, 0x20, 0x69, 0x6e, 0x70, 0x29, 0x3b, - 0x20, 0x28, 0x75, 0x63, 0x54, 0x75, 0x70, 0x41, 0x6c, 0x6c, 0x6f, 0x63, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x54, - 0x75, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x72, 0x20, 0x5f, 0x20, - 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x66, 0x2c, 0x20, 0x69, 0x6e, - 0x70, 0x2c, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x69, 0x6c, - 0x28, 0x64, 0x6d, 0x29, 0x29, 0x3b, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x75, - 0x63, 0x54, 0x75, 0x70, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x6d, 0x20, 0x64, - 0x6d, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x28, 0x75, 0x63, - 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, - 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6c, 0x20, 0x6c, 0x73, - 0x6d, 0x20, 0x6c, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x28, 0x6c, 0x73, 0x6d, - 0x2c, 0x6c, 0x64, 0x6d, 0x29, 0x2d, 0x3e, 0x28, 0x29, 0x29, 0x28, 0x73, - 0x6d, 0x2e, 0x30, 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x30, 0x29, 0x3b, 0x20, - 0x28, 0x75, 0x63, 0x54, 0x75, 0x70, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x72, 0x20, 0x5f, 0x20, 0x5f, 0x29, - 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, 0x28, 0x29, 0x29, - 0x28, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x69, 0x6c, 0x28, 0x73, - 0x6d, 0x29, 0x2c, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x69, - 0x6c, 0x28, 0x64, 0x6d, 0x29, 0x29, 0x3b, 0x20, 0x7d, 0x0a, 0x20, 0x20, - 0x75, 0x63, 0x54, 0x75, 0x70, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x28, 0x75, - 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x6c, 0x20, 0x6c, 0x73, 0x6d, 0x20, 0x6c, 0x64, 0x6d, 0x29, 0x3d, 0x3e, - 0x6c, 0x64, 0x6d, 0x2d, 0x3e, 0x28, 0x29, 0x29, 0x28, 0x64, 0x6d, 0x2e, - 0x30, 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x54, 0x75, 0x70, 0x44, 0x65, - 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, - 0x28, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x20, 0x72, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x2d, 0x3e, + 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x66, 0x2c, + 0x20, 0x69, 0x6e, 0x70, 0x2c, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x54, + 0x61, 0x69, 0x6c, 0x28, 0x64, 0x6d, 0x29, 0x29, 0x3b, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x75, 0x63, 0x54, 0x75, 0x70, 0x50, 0x72, 0x65, 0x70, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, + 0x6d, 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, + 0x28, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6c, + 0x20, 0x6c, 0x73, 0x6d, 0x20, 0x6c, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x28, + 0x6c, 0x73, 0x6d, 0x2c, 0x6c, 0x64, 0x6d, 0x29, 0x2d, 0x3e, 0x28, 0x29, + 0x29, 0x28, 0x73, 0x6d, 0x2e, 0x30, 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x30, + 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x54, 0x75, 0x70, 0x50, 0x72, 0x65, + 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, + 0x54, 0x75, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x72, 0x20, 0x5f, + 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, 0x28, 0x29, 0x29, 0x28, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x69, - 0x6c, 0x28, 0x64, 0x6d, 0x29, 0x29, 0x3b, 0x20, 0x7d, 0x0a, 0x0a, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x4d, - 0x54, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, - 0x74, 0x64, 0x6d, 0x2c, 0x20, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, - 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, + 0x6c, 0x28, 0x73, 0x6d, 0x29, 0x2c, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, + 0x54, 0x61, 0x69, 0x6c, 0x28, 0x64, 0x6d, 0x29, 0x29, 0x3b, 0x20, 0x7d, + 0x0a, 0x20, 0x20, 0x75, 0x63, 0x54, 0x75, 0x70, 0x44, 0x65, 0x61, 0x6c, + 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, + 0x20, 0x28, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x20, 0x6c, 0x20, 0x6c, 0x73, 0x6d, 0x20, 0x6c, 0x64, 0x6d, + 0x29, 0x3d, 0x3e, 0x6c, 0x64, 0x6d, 0x2d, 0x3e, 0x28, 0x29, 0x29, 0x28, + 0x64, 0x6d, 0x2e, 0x30, 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x54, 0x75, + 0x70, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x20, 0x72, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, + 0x5f, 0x2d, 0x3e, 0x28, 0x29, 0x29, 0x28, 0x74, 0x75, 0x70, 0x6c, 0x65, + 0x54, 0x61, 0x69, 0x6c, 0x28, 0x64, 0x6d, 0x29, 0x29, 0x3b, 0x20, 0x7d, + 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, + 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x74, 0x20, 0x74, + 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x2c, 0x20, 0x55, 0x43, 0x4d, 0x54, + 0x75, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x74, 0x73, + 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, + 0x74, 0x64, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, + 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x20, 0x20, 0x20, 0x66, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x3d, + 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x6e, 0x65, + 0x77, 0x50, 0x72, 0x69, 0x6d, 0x28, 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, + 0x54, 0x75, 0x70, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, + 0x6d, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x66, 0x2c, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x2c, 0x72, 0x29, 0x3b, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x72, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x50, 0x72, + 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20, 0x73, + 0x6d, 0x20, 0x64, 0x6d, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x63, + 0x54, 0x75, 0x70, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, - 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x41, - 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, - 0x66, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x64, 0x6f, - 0x20, 0x7b, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x6e, 0x65, 0x77, 0x50, 0x72, - 0x69, 0x6d, 0x28, 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x54, 0x75, 0x70, - 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, + 0x29, 0x3d, 0x3e, 0x28, 0x74, 0x73, 0x6d, 0x2c, 0x74, 0x64, 0x6d, 0x29, + 0x2d, 0x3e, 0x28, 0x29, 0x29, 0x28, 0x73, 0x6d, 0x2c, 0x64, 0x6d, 0x29, + 0x0a, 0x20, 0x20, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x64, 0x6d, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x63, 0x54, 0x75, 0x70, 0x44, 0x65, + 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x3d, - 0x3e, 0x5f, 0x29, 0x28, 0x66, 0x2c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x2c, - 0x72, 0x29, 0x3b, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, - 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20, 0x73, 0x6d, 0x20, 0x64, - 0x6d, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x63, 0x54, 0x75, 0x70, - 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, - 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x3d, 0x3e, - 0x28, 0x74, 0x73, 0x6d, 0x2c, 0x74, 0x64, 0x6d, 0x29, 0x2d, 0x3e, 0x28, - 0x29, 0x29, 0x28, 0x73, 0x6d, 0x2c, 0x64, 0x6d, 0x29, 0x0a, 0x20, 0x20, - 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x20, 0x64, 0x6d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, - 0x20, 0x28, 0x75, 0x63, 0x54, 0x75, 0x70, 0x44, 0x65, 0x61, 0x6c, 0x6c, - 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, + 0x3e, 0x74, 0x64, 0x6d, 0x2d, 0x3e, 0x28, 0x29, 0x29, 0x28, 0x64, 0x6d, + 0x29, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, - 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x74, 0x64, - 0x6d, 0x2d, 0x3e, 0x28, 0x29, 0x29, 0x28, 0x64, 0x6d, 0x29, 0x0a, 0x0a, - 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x54, 0x75, - 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, - 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x54, + 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, + 0x55, 0x43, 0x54, 0x75, 0x70, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, + 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, + 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x54, 0x75, 0x70, 0x52, 0x65, 0x61, + 0x64, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x3c, 0x68, 0x6f, 0x62, 0x62, 0x65, + 0x73, 0x2e, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3e, 0x2c, + 0x20, 0x74, 0x64, 0x6d, 0x2c, 0x20, 0x74, 0x29, 0x20, 0x2d, 0x3e, 0x20, + 0x28, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, + 0x55, 0x43, 0x54, 0x75, 0x70, 0x52, 0x65, 0x61, 0x64, 0x20, 0x28, 0x29, + 0x20, 0x28, 0x29, 0x20, 0x28, 0x29, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, + 0x0a, 0x20, 0x20, 0x75, 0x63, 0x54, 0x75, 0x70, 0x52, 0x65, 0x61, 0x64, + 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x3d, 0x20, 0x28, 0x29, 0x0a, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x74, 0x3d, + 0x28, 0x6c, 0x2a, 0x72, 0x29, 0x2c, 0x20, 0x74, 0x73, 0x6d, 0x3d, 0x28, + 0x6c, 0x73, 0x6d, 0x2a, 0x72, 0x73, 0x6d, 0x29, 0x2c, 0x20, 0x74, 0x64, + 0x6d, 0x3d, 0x28, 0x6c, 0x64, 0x6d, 0x2a, 0x72, 0x64, 0x6d, 0x29, 0x2c, + 0x20, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x6c, 0x20, 0x6c, 0x73, + 0x6d, 0x20, 0x6c, 0x64, 0x6d, 0x2c, 0x20, 0x55, 0x43, 0x54, 0x75, 0x70, + 0x52, 0x65, 0x61, 0x64, 0x20, 0x72, 0x20, 0x72, 0x73, 0x6d, 0x20, 0x72, + 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x54, 0x75, 0x70, + 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, + 0x64, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, + 0x63, 0x54, 0x75, 0x70, 0x52, 0x65, 0x61, 0x64, 0x20, 0x72, 0x20, 0x64, + 0x6d, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x74, + 0x2e, 0x30, 0x20, 0x3c, 0x2d, 0x20, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, + 0x64, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x6c, + 0x20, 0x6c, 0x73, 0x6d, 0x20, 0x6c, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x28, + 0x5f, 0x2c, 0x6c, 0x64, 0x6d, 0x29, 0x2d, 0x3e, 0x6c, 0x29, 0x28, 0x72, + 0x2c, 0x64, 0x6d, 0x2e, 0x30, 0x29, 0x3b, 0x20, 0x75, 0x63, 0x54, 0x75, + 0x70, 0x52, 0x65, 0x61, 0x64, 0x28, 0x72, 0x2c, 0x74, 0x75, 0x70, 0x6c, + 0x65, 0x54, 0x61, 0x69, 0x6c, 0x28, 0x64, 0x6d, 0x29, 0x2c, 0x74, 0x75, + 0x70, 0x6c, 0x65, 0x54, 0x61, 0x69, 0x6c, 0x28, 0x74, 0x29, 0x29, 0x3b, + 0x20, 0x7d, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, + 0x28, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x74, 0x20, + 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x2c, 0x20, 0x55, 0x43, 0x54, 0x75, 0x70, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, - 0x20, 0x74, 0x64, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, - 0x20, 0x75, 0x63, 0x54, 0x75, 0x70, 0x52, 0x65, 0x61, 0x64, 0x20, 0x3a, - 0x3a, 0x20, 0x28, 0x3c, 0x68, 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, 0x55, - 0x43, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3e, 0x2c, 0x20, 0x74, 0x64, - 0x6d, 0x2c, 0x20, 0x74, 0x29, 0x20, 0x2d, 0x3e, 0x20, 0x28, 0x29, 0x0a, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x55, 0x43, 0x54, - 0x75, 0x70, 0x52, 0x65, 0x61, 0x64, 0x20, 0x28, 0x29, 0x20, 0x28, 0x29, - 0x20, 0x28, 0x29, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, - 0x75, 0x63, 0x54, 0x75, 0x70, 0x52, 0x65, 0x61, 0x64, 0x20, 0x5f, 0x20, - 0x5f, 0x20, 0x5f, 0x20, 0x3d, 0x20, 0x28, 0x29, 0x0a, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x74, 0x3d, 0x28, 0x6c, 0x2a, - 0x72, 0x29, 0x2c, 0x20, 0x74, 0x73, 0x6d, 0x3d, 0x28, 0x6c, 0x73, 0x6d, - 0x2a, 0x72, 0x73, 0x6d, 0x29, 0x2c, 0x20, 0x74, 0x64, 0x6d, 0x3d, 0x28, - 0x6c, 0x64, 0x6d, 0x2a, 0x72, 0x64, 0x6d, 0x29, 0x2c, 0x20, 0x55, 0x43, - 0x52, 0x65, 0x61, 0x64, 0x20, 0x6c, 0x20, 0x6c, 0x73, 0x6d, 0x20, 0x6c, - 0x64, 0x6d, 0x2c, 0x20, 0x55, 0x43, 0x54, 0x75, 0x70, 0x52, 0x65, 0x61, - 0x64, 0x20, 0x72, 0x20, 0x72, 0x73, 0x6d, 0x20, 0x72, 0x64, 0x6d, 0x29, - 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x54, 0x75, 0x70, 0x52, 0x65, 0x61, - 0x64, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x20, - 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x54, 0x75, - 0x70, 0x52, 0x65, 0x61, 0x64, 0x20, 0x72, 0x20, 0x64, 0x6d, 0x20, 0x74, - 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x74, 0x2e, 0x30, 0x20, - 0x3c, 0x2d, 0x20, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x3a, 0x3a, - 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x6c, 0x20, 0x6c, 0x73, - 0x6d, 0x20, 0x6c, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x6c, - 0x64, 0x6d, 0x29, 0x2d, 0x3e, 0x6c, 0x29, 0x28, 0x72, 0x2c, 0x64, 0x6d, - 0x2e, 0x30, 0x29, 0x3b, 0x20, 0x75, 0x63, 0x54, 0x75, 0x70, 0x52, 0x65, - 0x61, 0x64, 0x28, 0x72, 0x2c, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x54, 0x61, - 0x69, 0x6c, 0x28, 0x64, 0x6d, 0x29, 0x2c, 0x74, 0x75, 0x70, 0x6c, 0x65, - 0x54, 0x61, 0x69, 0x6c, 0x28, 0x74, 0x29, 0x29, 0x3b, 0x20, 0x7d, 0x0a, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, - 0x4d, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, - 0x20, 0x74, 0x64, 0x6d, 0x2c, 0x20, 0x55, 0x43, 0x54, 0x75, 0x70, 0x52, + 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, - 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, + 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, + 0x52, 0x65, 0x61, 0x64, 0x20, 0x72, 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, + 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x78, 0x3d, 0x6e, 0x65, 0x77, 0x50, 0x72, + 0x69, 0x6d, 0x28, 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x54, 0x75, 0x70, + 0x52, 0x65, 0x61, 0x64, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x54, 0x75, 0x70, + 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, + 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x74, 0x64, 0x6d, 0x2c, + 0x74, 0x29, 0x2d, 0x3e, 0x28, 0x29, 0x29, 0x28, 0x72, 0x2c, 0x64, 0x6d, + 0x2c, 0x78, 0x29, 0x3b, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x78, 0x20, 0x7d, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x28, + 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, + 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x3d, + 0x3e, 0x20, 0x55, 0x43, 0x54, 0x75, 0x70, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x20, 0x77, - 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x52, 0x65, 0x61, - 0x64, 0x20, 0x72, 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, - 0x7b, 0x20, 0x78, 0x3d, 0x6e, 0x65, 0x77, 0x50, 0x72, 0x69, 0x6d, 0x28, - 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x54, 0x75, 0x70, 0x52, 0x65, 0x61, - 0x64, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x54, 0x75, 0x70, 0x52, 0x65, 0x61, - 0x64, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, - 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x74, 0x64, 0x6d, 0x2c, 0x74, 0x29, 0x2d, - 0x3e, 0x28, 0x29, 0x29, 0x28, 0x72, 0x2c, 0x64, 0x6d, 0x2c, 0x78, 0x29, - 0x3b, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, 0x20, 0x7d, - 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x28, 0x55, 0x43, 0x4d, - 0x54, 0x75, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x74, - 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, - 0x43, 0x54, 0x75, 0x70, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x20, - 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, - 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x54, 0x75, 0x70, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x3c, 0x68, 0x6f, 0x62, 0x62, - 0x65, 0x73, 0x2e, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x3e, - 0x2c, 0x20, 0x74, 0x64, 0x6d, 0x2c, 0x20, 0x74, 0x29, 0x20, 0x2d, 0x3e, - 0x20, 0x28, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x20, 0x55, 0x43, 0x54, 0x75, 0x70, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, - 0x28, 0x29, 0x20, 0x28, 0x29, 0x20, 0x28, 0x29, 0x20, 0x77, 0x68, 0x65, - 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x54, 0x75, 0x70, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x3d, 0x20, - 0x28, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, - 0x28, 0x74, 0x3d, 0x28, 0x6c, 0x2a, 0x72, 0x29, 0x2c, 0x20, 0x74, 0x73, - 0x6d, 0x3d, 0x28, 0x6c, 0x73, 0x6d, 0x2a, 0x72, 0x73, 0x6d, 0x29, 0x2c, - 0x20, 0x74, 0x64, 0x6d, 0x3d, 0x28, 0x6c, 0x64, 0x6d, 0x2a, 0x72, 0x64, - 0x6d, 0x29, 0x2c, 0x20, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, - 0x6c, 0x20, 0x6c, 0x73, 0x6d, 0x20, 0x6c, 0x64, 0x6d, 0x2c, 0x20, 0x55, - 0x43, 0x54, 0x75, 0x70, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x72, 0x20, - 0x72, 0x73, 0x6d, 0x20, 0x72, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, - 0x55, 0x43, 0x54, 0x75, 0x70, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, - 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x20, 0x77, 0x68, 0x65, - 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x54, 0x75, 0x70, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x20, 0x77, 0x20, 0x64, 0x6d, 0x20, 0x74, 0x20, 0x3d, - 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x28, 0x75, 0x63, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, - 0x20, 0x6c, 0x20, 0x6c, 0x73, 0x6d, 0x20, 0x6c, 0x64, 0x6d, 0x29, 0x3d, - 0x3e, 0x28, 0x5f, 0x2c, 0x6c, 0x64, 0x6d, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, - 0x5f, 0x29, 0x28, 0x77, 0x2c, 0x64, 0x6d, 0x2e, 0x30, 0x2c, 0x74, 0x2e, - 0x30, 0x29, 0x3b, 0x20, 0x75, 0x63, 0x54, 0x75, 0x70, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x28, 0x77, 0x2c, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x54, 0x61, - 0x69, 0x6c, 0x28, 0x64, 0x6d, 0x29, 0x2c, 0x74, 0x75, 0x70, 0x6c, 0x65, - 0x54, 0x61, 0x69, 0x6c, 0x28, 0x74, 0x29, 0x29, 0x3b, 0x20, 0x7d, 0x0a, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, - 0x4d, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, - 0x20, 0x74, 0x64, 0x6d, 0x2c, 0x20, 0x55, 0x43, 0x54, 0x75, 0x70, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, - 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, - 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x20, 0x77, 0x20, 0x64, 0x6d, 0x20, 0x74, 0x20, - 0x3d, 0x20, 0x28, 0x75, 0x63, 0x54, 0x75, 0x70, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x54, 0x75, 0x70, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, - 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x74, 0x64, 0x6d, 0x2c, 0x74, 0x29, - 0x2d, 0x3e, 0x28, 0x29, 0x29, 0x28, 0x77, 0x2c, 0x64, 0x6d, 0x2c, 0x74, - 0x29, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, - 0x20, 0x28, 0x6a, 0x75, 0x73, 0x74, 0x20, 0x70, 0x69, 0x67, 0x67, 0x79, - 0x62, 0x61, 0x63, 0x6b, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x75, 0x70, 0x6c, - 0x65, 0x73, 0x29, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x55, 0x43, - 0x4d, 0x52, 0x65, 0x63, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x72, 0x20, - 0x74, 0x20, 0x7c, 0x20, 0x72, 0x20, 0x2d, 0x3e, 0x20, 0x74, 0x0a, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x55, 0x43, 0x4d, 0x52, - 0x65, 0x63, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x28, 0x29, 0x20, 0x28, - 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, - 0x72, 0x3d, 0x7b, 0x68, 0x2a, 0x72, 0x74, 0x7d, 0x2c, 0x20, 0x55, 0x43, - 0x4d, 0x52, 0x65, 0x63, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x72, 0x74, - 0x20, 0x74, 0x74, 0x2c, 0x20, 0x28, 0x68, 0x2a, 0x74, 0x74, 0x29, 0x3d, - 0x74, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x4d, 0x52, 0x65, 0x63, - 0x54, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x72, 0x20, 0x74, 0x0a, 0x0a, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x4d, + 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x54, 0x75, 0x70, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x3c, 0x68, + 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x72, 0x3e, 0x2c, 0x20, 0x74, 0x64, 0x6d, 0x2c, 0x20, 0x74, 0x29, + 0x20, 0x2d, 0x3e, 0x20, 0x28, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x20, 0x55, 0x43, 0x54, 0x75, 0x70, 0x57, 0x72, 0x69, + 0x74, 0x65, 0x20, 0x28, 0x29, 0x20, 0x28, 0x29, 0x20, 0x28, 0x29, 0x20, + 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x54, 0x75, + 0x70, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x5f, + 0x20, 0x3d, 0x20, 0x28, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x20, 0x28, 0x74, 0x3d, 0x28, 0x6c, 0x2a, 0x72, 0x29, 0x2c, + 0x20, 0x74, 0x73, 0x6d, 0x3d, 0x28, 0x6c, 0x73, 0x6d, 0x2a, 0x72, 0x73, + 0x6d, 0x29, 0x2c, 0x20, 0x74, 0x64, 0x6d, 0x3d, 0x28, 0x6c, 0x64, 0x6d, + 0x2a, 0x72, 0x64, 0x6d, 0x29, 0x2c, 0x20, 0x55, 0x43, 0x57, 0x72, 0x69, + 0x74, 0x65, 0x20, 0x6c, 0x20, 0x6c, 0x73, 0x6d, 0x20, 0x6c, 0x64, 0x6d, + 0x2c, 0x20, 0x55, 0x43, 0x54, 0x75, 0x70, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x20, 0x72, 0x20, 0x72, 0x73, 0x6d, 0x20, 0x72, 0x64, 0x6d, 0x29, 0x20, + 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x54, 0x75, 0x70, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x20, + 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x54, 0x75, + 0x70, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x77, 0x20, 0x64, 0x6d, 0x20, + 0x74, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x28, 0x75, 0x63, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x20, 0x6c, 0x20, 0x6c, 0x73, 0x6d, 0x20, 0x6c, 0x64, + 0x6d, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x6c, 0x64, 0x6d, 0x2c, 0x5f, + 0x29, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x77, 0x2c, 0x64, 0x6d, 0x2e, 0x30, + 0x2c, 0x74, 0x2e, 0x30, 0x29, 0x3b, 0x20, 0x75, 0x63, 0x54, 0x75, 0x70, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x28, 0x77, 0x2c, 0x74, 0x75, 0x70, 0x6c, + 0x65, 0x54, 0x61, 0x69, 0x6c, 0x28, 0x64, 0x6d, 0x29, 0x2c, 0x74, 0x75, + 0x70, 0x6c, 0x65, 0x54, 0x61, 0x69, 0x6c, 0x28, 0x74, 0x29, 0x29, 0x3b, + 0x20, 0x7d, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, + 0x28, 0x55, 0x43, 0x4d, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x74, 0x20, + 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x2c, 0x20, 0x55, 0x43, 0x54, + 0x75, 0x70, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x20, 0x74, 0x73, + 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, + 0x74, 0x64, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, + 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x77, 0x20, 0x64, 0x6d, + 0x20, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x63, 0x54, 0x75, 0x70, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x54, 0x75, 0x70, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, + 0x74, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x74, 0x64, 0x6d, + 0x2c, 0x74, 0x29, 0x2d, 0x3e, 0x28, 0x29, 0x29, 0x28, 0x77, 0x2c, 0x64, + 0x6d, 0x2c, 0x74, 0x29, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x63, 0x6f, 0x6d, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x73, 0x20, 0x28, 0x6a, 0x75, 0x73, 0x74, 0x20, 0x70, 0x69, + 0x67, 0x67, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x20, 0x6f, 0x6e, 0x20, 0x74, + 0x75, 0x70, 0x6c, 0x65, 0x73, 0x29, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x20, 0x55, 0x43, 0x4d, 0x52, 0x65, 0x63, 0x54, 0x75, 0x70, 0x6c, 0x65, + 0x20, 0x72, 0x20, 0x74, 0x20, 0x7c, 0x20, 0x72, 0x20, 0x2d, 0x3e, 0x20, + 0x74, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x55, + 0x43, 0x4d, 0x52, 0x65, 0x63, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x28, + 0x29, 0x20, 0x28, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x28, 0x72, 0x3d, 0x7b, 0x68, 0x2a, 0x72, 0x74, 0x7d, 0x2c, + 0x20, 0x55, 0x43, 0x4d, 0x52, 0x65, 0x63, 0x54, 0x75, 0x70, 0x6c, 0x65, + 0x20, 0x72, 0x74, 0x20, 0x74, 0x74, 0x2c, 0x20, 0x28, 0x68, 0x2a, 0x74, + 0x74, 0x29, 0x3d, 0x74, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x4d, 0x52, 0x65, 0x63, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x72, 0x20, 0x74, - 0x2c, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, - 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, - 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x72, 0x20, 0x74, 0x73, - 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, - 0x20, 0x20, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x41, 0x6c, 0x6c, - 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x3a, 0x3a, 0x28, - 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x74, 0x73, - 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x5f, 0x0a, 0x20, 0x20, - 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x20, 0x20, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x3a, 0x3a, 0x28, 0x55, 0x43, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, - 0x74, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x5f, 0x0a, 0x20, 0x20, 0x75, 0x63, - 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x20, 0x3d, 0x20, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, - 0x6d, 0x29, 0x3d, 0x3e, 0x5f, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x52, 0x65, 0x63, 0x54, - 0x75, 0x70, 0x6c, 0x65, 0x20, 0x72, 0x20, 0x74, 0x2c, 0x20, 0x55, 0x43, - 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, - 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x52, 0x65, 0x61, - 0x64, 0x20, 0x72, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x20, - 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x52, 0x65, - 0x61, 0x64, 0x20, 0x72, 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x75, 0x6e, - 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x28, 0x75, 0x63, - 0x52, 0x65, 0x61, 0x64, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, - 0x64, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, - 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, 0x5f, 0x29, 0x28, - 0x72, 0x2c, 0x64, 0x6d, 0x29, 0x29, 0x3a, 0x3a, 0x72, 0x0a, 0x69, 0x6e, + 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, + 0x55, 0x43, 0x4d, 0x52, 0x65, 0x63, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x20, + 0x72, 0x20, 0x74, 0x2c, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, + 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x72, + 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x20, 0x77, 0x68, 0x65, + 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x75, 0x63, + 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, + 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, + 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x5f, + 0x0a, 0x20, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x50, 0x72, + 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x3a, 0x3a, + 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x74, + 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x5f, 0x0a, 0x20, + 0x20, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, + 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, + 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, + 0x20, 0x74, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x5f, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x52, 0x65, 0x63, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x72, 0x20, 0x74, 0x2c, - 0x20, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x20, 0x74, + 0x20, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, 0x74, 0x73, + 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, + 0x52, 0x65, 0x61, 0x64, 0x20, 0x72, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, + 0x64, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, + 0x63, 0x52, 0x65, 0x61, 0x64, 0x20, 0x72, 0x20, 0x64, 0x6d, 0x20, 0x3d, + 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, + 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x3a, 0x3a, 0x28, 0x55, 0x43, + 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, + 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, + 0x5f, 0x29, 0x28, 0x72, 0x2c, 0x64, 0x6d, 0x29, 0x29, 0x3a, 0x3a, 0x72, + 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, + 0x43, 0x4d, 0x52, 0x65, 0x63, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x72, + 0x20, 0x74, 0x2c, 0x20, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, + 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x3d, + 0x3e, 0x20, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x72, 0x20, + 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, + 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, + 0x77, 0x20, 0x64, 0x6d, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x28, 0x77, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, + 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x72, + 0x29, 0x3a, 0x3a, 0x74, 0x29, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x63, 0x6f, + 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x72, 0x72, + 0x61, 0x79, 0x73, 0x20, 0x28, 0x61, 0x73, 0x20, 0x69, 0x66, 0x20, 0x61, + 0x20, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x20, 0x70, + 0x61, 0x69, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x6c, 0x6f, 0x6e, + 0x67, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, + 0x6c, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x65, 0x6c, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, + 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x3d, + 0x3e, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x5b, 0x74, + 0x5d, 0x20, 0x28, 0x28, 0x70, 0x63, 0x73, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x20, 0x38, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x73, 0x6d, 0x29, 0x20, 0x28, + 0x28, 0x70, 0x64, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x38, 0x29, 0x20, + 0x2a, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, + 0x0a, 0x20, 0x20, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x66, 0x20, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, + 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, 0x20, + 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x66, 0x2c, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x29, 0x2c, 0x20, 0x28, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, + 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, + 0x3e, 0x5f, 0x29, 0x28, 0x66, 0x2c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x29, + 0x29, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, + 0x20, 0x20, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x28, 0x75, + 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, + 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6c, 0x6f, 0x6e, + 0x67, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, + 0x29, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x73, 0x6d, 0x2e, 0x30, 0x2c, 0x20, + 0x64, 0x6d, 0x2e, 0x30, 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x50, 0x72, + 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x5f, 0x20, 0x5f, 0x29, + 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, 0x5f, 0x29, 0x28, + 0x73, 0x6d, 0x2e, 0x31, 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x31, 0x29, 0x3b, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, + 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x64, 0x6d, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x28, + 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, + 0x5f, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x64, 0x6d, 0x2e, 0x30, 0x29, 0x3b, + 0x20, 0x28, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x20, 0x74, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, + 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x64, 0x6d, 0x2e, 0x31, 0x29, 0x3b, 0x20, + 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, + 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, - 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x72, 0x20, 0x74, 0x73, 0x6d, - 0x20, 0x74, 0x64, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, - 0x20, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x77, 0x20, 0x64, - 0x6d, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x28, 0x77, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x75, 0x6e, 0x73, - 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x72, 0x29, 0x3a, 0x3a, - 0x74, 0x29, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x73, - 0x20, 0x28, 0x61, 0x73, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x64, 0x65, - 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x74, 0x20, 0x70, 0x61, 0x69, 0x72, - 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x61, - 0x6e, 0x64, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, - 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, + 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x5b, 0x3a, 0x74, 0x7c, 0x6e, + 0x3a, 0x5d, 0x20, 0x28, 0x28, 0x70, 0x63, 0x73, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x20, 0x38, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x73, 0x6d, 0x29, 0x20, + 0x28, 0x28, 0x70, 0x64, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x38, 0x29, + 0x20, 0x2a, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x77, 0x68, 0x65, 0x72, + 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x66, 0x20, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x75, 0x63, 0x41, 0x6c, 0x6c, + 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, + 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x66, 0x2c, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x29, 0x2c, 0x20, 0x28, 0x75, 0x63, 0x41, 0x6c, 0x6c, + 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x5f, 0x20, 0x5f, 0x29, + 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x66, 0x2c, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x29, 0x29, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20, 0x73, 0x6d, 0x20, 0x64, + 0x6d, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x28, + 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, + 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6c, 0x6f, + 0x6e, 0x67, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, + 0x5f, 0x29, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x73, 0x6d, 0x2e, 0x30, 0x2c, + 0x20, 0x64, 0x6d, 0x2e, 0x30, 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x50, + 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, + 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x5f, 0x20, 0x5f, + 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, 0x5f, 0x29, + 0x28, 0x73, 0x6d, 0x2e, 0x31, 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x31, 0x29, + 0x3b, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, + 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x64, 0x6d, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, + 0x28, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, + 0x3e, 0x5f, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x64, 0x6d, 0x2e, 0x30, 0x29, + 0x3b, 0x20, 0x28, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, + 0x5f, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x64, 0x6d, 0x2e, 0x31, 0x29, 0x3b, + 0x20, 0x7d, 0x0a, 0x0a, 0x75, 0x63, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x53, + 0x74, 0x65, 0x70, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, 0x52, 0x65, + 0x61, 0x64, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x20, + 0x3d, 0x3e, 0x20, 0x28, 0x3c, 0x68, 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, + 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3e, 0x2c, 0x20, 0x64, + 0x6d, 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x2c, 0x20, 0x5b, 0x74, 0x5d, + 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x20, 0x2d, 0x3e, 0x20, 0x5b, + 0x74, 0x5d, 0x0a, 0x75, 0x63, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x53, 0x74, + 0x65, 0x70, 0x20, 0x72, 0x20, 0x64, 0x6d, 0x20, 0x6e, 0x20, 0x78, 0x20, + 0x69, 0x20, 0x3d, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x75, 0x63, + 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x4f, 0x46, 0x28, 0x72, 0x29, + 0x20, 0x6f, 0x72, 0x20, 0x69, 0x20, 0x3d, 0x3d, 0x20, 0x6e, 0x29, 0x20, + 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x20, + 0x7b, 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x53, 0x65, 0x74, 0x4c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x78, 0x2c, 0x20, 0x69, 0x29, 0x3b, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x78, 0x3a, 0x3a, + 0x5b, 0x74, 0x5d, 0x29, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x73, + 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x78, 0x5b, 0x69, 0x5d, 0x20, 0x3c, 0x2d, + 0x20, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x28, 0x72, 0x2c, 0x20, 0x64, + 0x6d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x75, 0x63, 0x54, 0x61, 0x6b, 0x65, 0x4e, + 0x53, 0x74, 0x65, 0x70, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, + 0x6e, 0x2c, 0x20, 0x78, 0x2c, 0x20, 0x69, 0x2b, 0x31, 0x4c, 0x29, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7b, 0x2d, 0x23, 0x20, 0x55, 0x4e, + 0x53, 0x41, 0x46, 0x45, 0x20, 0x75, 0x63, 0x54, 0x61, 0x6b, 0x65, 0x4e, + 0x53, 0x74, 0x65, 0x70, 0x20, 0x23, 0x2d, 0x7d, 0x0a, 0x0a, 0x75, 0x63, + 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, + 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, + 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x28, 0x3c, 0x68, 0x6f, 0x62, 0x62, 0x65, + 0x73, 0x2e, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3e, 0x2c, + 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x20, 0x2d, + 0x3e, 0x20, 0x5b, 0x74, 0x5d, 0x0a, 0x75, 0x63, 0x54, 0x61, 0x6b, 0x65, + 0x4e, 0x20, 0x72, 0x20, 0x64, 0x6d, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x75, + 0x63, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x53, 0x74, 0x65, 0x70, 0x28, 0x72, + 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x6e, 0x2c, 0x20, 0x6e, 0x65, 0x77, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x6e, 0x29, 0x2c, 0x20, 0x30, 0x4c, + 0x29, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, - 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x5b, 0x74, 0x5d, 0x20, 0x28, + 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x5b, 0x74, 0x5d, 0x20, 0x28, 0x28, + 0x70, 0x63, 0x73, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x38, 0x29, 0x20, + 0x2a, 0x20, 0x74, 0x73, 0x6d, 0x29, 0x20, 0x28, 0x28, 0x70, 0x64, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x38, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x64, + 0x6d, 0x29, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, + 0x63, 0x52, 0x65, 0x61, 0x64, 0x20, 0x72, 0x20, 0x64, 0x6d, 0x20, 0x3d, + 0x20, 0x75, 0x63, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x28, 0x72, 0x2c, 0x20, + 0x64, 0x6d, 0x2e, 0x31, 0x2c, 0x20, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, + 0x64, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x6c, + 0x6f, 0x6e, 0x67, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x28, 0x5f, + 0x2c, 0x5f, 0x29, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x72, 0x2c, 0x20, 0x64, + 0x6d, 0x2e, 0x30, 0x29, 0x29, 0x0a, 0x0a, 0x75, 0x63, 0x46, 0x54, 0x61, + 0x6b, 0x65, 0x4e, 0x53, 0x74, 0x65, 0x70, 0x20, 0x3a, 0x3a, 0x20, 0x28, + 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, + 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x28, 0x3c, 0x68, 0x6f, 0x62, + 0x62, 0x65, 0x73, 0x2e, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x3e, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x2c, + 0x20, 0x5b, 0x3a, 0x74, 0x7c, 0x6e, 0x3a, 0x5d, 0x2c, 0x20, 0x6c, 0x6f, + 0x6e, 0x67, 0x29, 0x20, 0x2d, 0x3e, 0x20, 0x5b, 0x3a, 0x74, 0x7c, 0x6e, + 0x3a, 0x5d, 0x0a, 0x75, 0x63, 0x46, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x53, + 0x74, 0x65, 0x70, 0x20, 0x72, 0x20, 0x64, 0x6d, 0x20, 0x6e, 0x20, 0x78, + 0x20, 0x69, 0x20, 0x3d, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x75, + 0x63, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x4f, 0x46, 0x28, 0x72, + 0x29, 0x20, 0x6f, 0x72, 0x20, 0x69, 0x20, 0x3d, 0x3d, 0x20, 0x6e, 0x29, + 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x78, 0x0a, + 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, + 0x6f, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x61, + 0x65, 0x6c, 0x65, 0x6d, 0x28, 0x78, 0x2c, 0x20, 0x69, 0x29, 0x20, 0x3c, + 0x2d, 0x20, 0x20, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x28, 0x72, 0x2c, + 0x20, 0x64, 0x6d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x75, 0x63, 0x46, 0x54, 0x61, + 0x6b, 0x65, 0x4e, 0x53, 0x74, 0x65, 0x70, 0x28, 0x72, 0x2c, 0x20, 0x64, + 0x6d, 0x2c, 0x20, 0x6e, 0x2c, 0x20, 0x78, 0x2c, 0x20, 0x69, 0x2b, 0x31, + 0x4c, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x75, 0x63, + 0x46, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, + 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, + 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x28, 0x3c, 0x68, 0x6f, 0x62, 0x62, + 0x65, 0x73, 0x2e, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3e, + 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x20, + 0x2d, 0x3e, 0x20, 0x5b, 0x3a, 0x74, 0x7c, 0x6e, 0x3a, 0x5d, 0x0a, 0x75, + 0x63, 0x46, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x20, 0x72, 0x20, 0x64, 0x6d, + 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x46, 0x54, 0x61, 0x6b, 0x65, + 0x4e, 0x53, 0x74, 0x65, 0x70, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x2c, + 0x20, 0x6e, 0x2c, 0x20, 0x6e, 0x65, 0x77, 0x50, 0x72, 0x69, 0x6d, 0x28, + 0x29, 0x3a, 0x3a, 0x5b, 0x3a, 0x74, 0x7c, 0x6e, 0x3a, 0x5d, 0x2c, 0x20, + 0x30, 0x4c, 0x29, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, + 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, + 0x20, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x5b, 0x3a, 0x74, 0x7c, + 0x6e, 0x3a, 0x5d, 0x20, 0x28, 0x28, 0x70, 0x63, 0x73, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x20, 0x38, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x73, 0x6d, 0x29, + 0x20, 0x28, 0x28, 0x70, 0x64, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x38, + 0x29, 0x20, 0x2a, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x77, 0x68, 0x65, + 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x20, + 0x72, 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x46, 0x54, 0x61, + 0x6b, 0x65, 0x4e, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x31, 0x2c, + 0x20, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x3a, 0x3a, 0x28, 0x55, + 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, + 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, + 0x5f, 0x29, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x30, 0x29, 0x29, + 0x0a, 0x0a, 0x75, 0x63, 0x50, 0x75, 0x74, 0x4e, 0x20, 0x3a, 0x3a, 0x20, + 0x28, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x20, 0x73, + 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x28, 0x3c, 0x68, + 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x72, 0x3e, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x5b, 0x74, 0x5d, + 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, + 0x29, 0x20, 0x2d, 0x3e, 0x20, 0x28, 0x29, 0x0a, 0x75, 0x63, 0x50, 0x75, + 0x74, 0x4e, 0x20, 0x77, 0x20, 0x6d, 0x20, 0x78, 0x73, 0x20, 0x69, 0x20, + 0x65, 0x20, 0x3d, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x20, + 0x3d, 0x3d, 0x20, 0x65, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, + 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x75, + 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, + 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, + 0x5f, 0x29, 0x28, 0x77, 0x2c, 0x20, 0x6d, 0x2c, 0x20, 0x78, 0x73, 0x5b, + 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x63, 0x50, + 0x75, 0x74, 0x4e, 0x28, 0x77, 0x2c, 0x20, 0x6d, 0x2c, 0x20, 0x78, 0x73, + 0x2c, 0x20, 0x69, 0x2b, 0x31, 0x4c, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x0a, 0x7b, 0x2d, 0x23, 0x20, 0x55, 0x4e, 0x53, 0x41, + 0x46, 0x45, 0x20, 0x75, 0x63, 0x50, 0x75, 0x74, 0x4e, 0x20, 0x23, 0x2d, + 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, + 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x74, + 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, + 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x5b, 0x74, 0x5d, 0x20, 0x28, 0x28, 0x70, 0x63, 0x73, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x38, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x73, 0x6d, 0x29, 0x20, 0x28, 0x28, 0x70, 0x64, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x38, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, - 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x20, 0x20, 0x20, 0x66, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x3d, - 0x20, 0x28, 0x28, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, - 0x3e, 0x5f, 0x29, 0x28, 0x66, 0x2c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x29, - 0x2c, 0x20, 0x28, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x20, 0x74, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x29, - 0x28, 0x66, 0x2c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x29, 0x29, 0x0a, 0x20, - 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x20, 0x20, 0x20, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x20, 0x20, 0x20, - 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x28, 0x75, 0x63, 0x50, 0x72, - 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, - 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, - 0x5f, 0x29, 0x28, 0x73, 0x6d, 0x2e, 0x30, 0x2c, 0x20, 0x64, 0x6d, 0x2e, - 0x30, 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x20, 0x74, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x28, - 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x73, 0x6d, 0x2e, - 0x31, 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x31, 0x29, 0x3b, 0x20, 0x7d, 0x0a, - 0x20, 0x20, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x64, 0x6d, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x28, 0x75, 0x63, 0x44, - 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, - 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6c, 0x6f, - 0x6e, 0x67, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x2d, 0x3e, - 0x5f, 0x29, 0x28, 0x64, 0x6d, 0x2e, 0x30, 0x29, 0x3b, 0x20, 0x28, 0x75, - 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x74, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x2d, 0x3e, 0x5f, - 0x29, 0x28, 0x64, 0x6d, 0x2e, 0x31, 0x29, 0x3b, 0x20, 0x7d, 0x0a, 0x0a, - 0x75, 0x63, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x53, 0x74, 0x65, 0x70, 0x20, - 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, - 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x28, - 0x3c, 0x68, 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, 0x55, 0x43, 0x52, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x3e, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x6c, - 0x6f, 0x6e, 0x67, 0x2c, 0x20, 0x5b, 0x74, 0x5d, 0x2c, 0x20, 0x6c, 0x6f, - 0x6e, 0x67, 0x29, 0x20, 0x2d, 0x3e, 0x20, 0x5b, 0x74, 0x5d, 0x0a, 0x75, - 0x63, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x53, 0x74, 0x65, 0x70, 0x20, 0x72, - 0x20, 0x64, 0x6d, 0x20, 0x6e, 0x20, 0x78, 0x20, 0x69, 0x20, 0x3d, 0x0a, - 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x45, 0x4f, 0x46, 0x28, 0x72, 0x29, 0x20, 0x6f, 0x72, 0x20, - 0x69, 0x20, 0x3d, 0x3d, 0x20, 0x6e, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x75, 0x6e, - 0x73, 0x61, 0x66, 0x65, 0x53, 0x65, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x28, 0x78, 0x2c, 0x20, 0x69, 0x29, 0x3b, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x28, 0x78, 0x3a, 0x3a, 0x5b, 0x74, 0x5d, 0x29, - 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x78, 0x5b, 0x69, 0x5d, 0x20, 0x3c, 0x2d, 0x20, 0x75, 0x63, 0x52, - 0x65, 0x61, 0x64, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x29, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x75, 0x63, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x53, 0x74, 0x65, 0x70, - 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x6e, 0x2c, 0x20, 0x78, - 0x2c, 0x20, 0x69, 0x2b, 0x31, 0x4c, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x7d, 0x0a, 0x7b, 0x2d, 0x23, 0x20, 0x55, 0x4e, 0x53, 0x41, 0x46, 0x45, - 0x20, 0x75, 0x63, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x53, 0x74, 0x65, 0x70, - 0x20, 0x23, 0x2d, 0x7d, 0x0a, 0x0a, 0x75, 0x63, 0x54, 0x61, 0x6b, 0x65, - 0x4e, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, - 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, - 0x20, 0x28, 0x3c, 0x68, 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, 0x55, 0x43, - 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3e, 0x2c, 0x20, 0x64, 0x6d, 0x2c, - 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x20, 0x2d, 0x3e, 0x20, 0x5b, 0x74, - 0x5d, 0x0a, 0x75, 0x63, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x20, 0x72, 0x20, - 0x64, 0x6d, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x54, 0x61, 0x6b, - 0x65, 0x4e, 0x53, 0x74, 0x65, 0x70, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, - 0x2c, 0x20, 0x6e, 0x2c, 0x20, 0x6e, 0x65, 0x77, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x28, 0x6e, 0x29, 0x2c, 0x20, 0x30, 0x4c, 0x29, 0x0a, 0x0a, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, - 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x52, 0x65, 0x61, - 0x64, 0x20, 0x5b, 0x74, 0x5d, 0x20, 0x28, 0x28, 0x70, 0x63, 0x73, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x38, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x73, - 0x6d, 0x29, 0x20, 0x28, 0x28, 0x70, 0x64, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x20, 0x38, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x77, - 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x52, 0x65, 0x61, - 0x64, 0x20, 0x72, 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x54, - 0x61, 0x6b, 0x65, 0x4e, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x31, - 0x2c, 0x20, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x3a, 0x3a, 0x28, - 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, - 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, - 0x3e, 0x5f, 0x29, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x30, 0x29, - 0x29, 0x0a, 0x0a, 0x75, 0x63, 0x50, 0x75, 0x74, 0x4e, 0x20, 0x3a, 0x3a, - 0x20, 0x28, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x20, - 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x28, 0x3c, - 0x68, 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, 0x55, 0x43, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x72, 0x3e, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x5b, 0x74, - 0x5d, 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x2c, 0x20, 0x6c, 0x6f, 0x6e, - 0x67, 0x29, 0x20, 0x2d, 0x3e, 0x20, 0x28, 0x29, 0x0a, 0x75, 0x63, 0x50, - 0x75, 0x74, 0x4e, 0x20, 0x77, 0x20, 0x6d, 0x20, 0x78, 0x73, 0x20, 0x69, - 0x20, 0x65, 0x20, 0x3d, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, - 0x20, 0x3d, 0x3d, 0x20, 0x65, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x73, - 0x65, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, - 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x3a, 0x28, 0x55, 0x43, - 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, - 0x6d, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, - 0x3e, 0x5f, 0x29, 0x28, 0x77, 0x2c, 0x20, 0x6d, 0x2c, 0x20, 0x78, 0x73, - 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x63, - 0x50, 0x75, 0x74, 0x4e, 0x28, 0x77, 0x2c, 0x20, 0x6d, 0x2c, 0x20, 0x78, - 0x73, 0x2c, 0x20, 0x69, 0x2b, 0x31, 0x4c, 0x2c, 0x20, 0x65, 0x29, 0x3b, - 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7b, 0x2d, 0x23, 0x20, 0x55, 0x4e, 0x53, - 0x41, 0x46, 0x45, 0x20, 0x75, 0x63, 0x50, 0x75, 0x74, 0x4e, 0x20, 0x23, - 0x2d, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x20, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, - 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, - 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x5b, 0x74, 0x5d, 0x20, - 0x28, 0x28, 0x70, 0x63, 0x73, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x38, - 0x29, 0x20, 0x2a, 0x20, 0x74, 0x73, 0x6d, 0x29, 0x20, 0x28, 0x28, 0x70, - 0x64, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x38, 0x29, 0x20, 0x2a, 0x20, - 0x74, 0x64, 0x6d, 0x29, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, - 0x20, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x77, 0x20, 0x64, - 0x6d, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x28, - 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x3a, 0x28, 0x55, 0x43, - 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, - 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x2c, 0x5f, 0x29, - 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x77, 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x30, - 0x2c, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x78, 0x29, 0x29, - 0x3b, 0x20, 0x75, 0x63, 0x50, 0x75, 0x74, 0x4e, 0x28, 0x77, 0x2c, 0x20, - 0x64, 0x6d, 0x2e, 0x31, 0x2c, 0x20, 0x78, 0x2c, 0x20, 0x30, 0x4c, 0x2c, + 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x77, 0x20, 0x64, 0x6d, + 0x20, 0x78, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x28, 0x75, + 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, 0x20, + 0x5f, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, + 0x3e, 0x5f, 0x29, 0x28, 0x77, 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x30, 0x2c, 0x20, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x78, 0x29, 0x29, 0x3b, - 0x20, 0x7d, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x6e, 0x75, 0x6d, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x28, 0x76, 0x61, 0x72, 0x69, - 0x61, 0x6e, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6f, 0x6e, - 0x6c, 0x79, 0x20, 0x75, 0x6e, 0x69, 0x74, 0x20, 0x70, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x73, 0x29, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, - 0x55, 0x43, 0x4d, 0x45, 0x6e, 0x75, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x20, 0x74, 0x20, 0x62, 0x20, 0x7c, 0x20, 0x74, 0x20, 0x2d, 0x3e, 0x20, - 0x62, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x55, - 0x43, 0x4d, 0x45, 0x6e, 0x75, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x20, - 0x76, 0x6f, 0x69, 0x64, 0x20, 0x28, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x74, 0x3d, 0x7c, 0x28, 0x29, 0x2b, - 0x73, 0x7c, 0x2c, 0x20, 0x55, 0x43, 0x4d, 0x45, 0x6e, 0x75, 0x6d, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x73, 0x20, 0x78, 0x2c, 0x20, 0x28, 0x62, - 0x79, 0x74, 0x65, 0x2a, 0x78, 0x29, 0x3d, 0x72, 0x29, 0x20, 0x3d, 0x3e, + 0x20, 0x75, 0x63, 0x50, 0x75, 0x74, 0x4e, 0x28, 0x77, 0x2c, 0x20, 0x64, + 0x6d, 0x2e, 0x31, 0x2c, 0x20, 0x78, 0x2c, 0x20, 0x30, 0x4c, 0x2c, 0x20, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x78, 0x29, 0x29, 0x3b, 0x20, + 0x7d, 0x0a, 0x0a, 0x75, 0x63, 0x46, 0x50, 0x75, 0x74, 0x4e, 0x20, 0x3a, + 0x3a, 0x20, 0x28, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, + 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x28, + 0x3c, 0x68, 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, 0x55, 0x43, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x72, 0x3e, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x5b, + 0x3a, 0x74, 0x7c, 0x6e, 0x3a, 0x5d, 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, + 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x20, 0x2d, 0x3e, 0x20, 0x28, + 0x29, 0x0a, 0x75, 0x63, 0x46, 0x50, 0x75, 0x74, 0x4e, 0x20, 0x77, 0x20, + 0x6d, 0x20, 0x78, 0x73, 0x20, 0x69, 0x20, 0x65, 0x20, 0x3d, 0x0a, 0x20, + 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x20, 0x3d, 0x3d, 0x20, 0x65, 0x29, + 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x29, + 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x28, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, + 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, + 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x77, 0x2c, 0x20, + 0x6d, 0x2c, 0x20, 0x73, 0x61, 0x65, 0x6c, 0x65, 0x6d, 0x28, 0x78, 0x73, + 0x2c, 0x69, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x63, + 0x46, 0x50, 0x75, 0x74, 0x4e, 0x28, 0x77, 0x2c, 0x20, 0x6d, 0x2c, 0x20, + 0x78, 0x73, 0x2c, 0x20, 0x69, 0x2b, 0x31, 0x4c, 0x2c, 0x20, 0x65, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x20, 0x74, 0x20, 0x74, 0x73, 0x6d, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, + 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x5b, + 0x3a, 0x74, 0x7c, 0x6e, 0x3a, 0x5d, 0x20, 0x28, 0x28, 0x70, 0x63, 0x73, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x38, 0x29, 0x20, 0x2a, 0x20, 0x74, + 0x73, 0x6d, 0x29, 0x20, 0x28, 0x28, 0x70, 0x64, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x20, 0x38, 0x29, 0x20, 0x2a, 0x20, 0x74, 0x64, 0x6d, 0x29, 0x20, + 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x20, 0x77, 0x20, 0x64, 0x6d, 0x20, 0x78, 0x20, 0x3d, + 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x28, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, + 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x28, + 0x5f, 0x2c, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x77, + 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x30, 0x2c, 0x20, 0x73, 0x61, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x28, 0x78, 0x29, 0x29, 0x3b, 0x20, 0x75, 0x63, + 0x46, 0x50, 0x75, 0x74, 0x4e, 0x28, 0x77, 0x2c, 0x20, 0x64, 0x6d, 0x2e, + 0x31, 0x2c, 0x20, 0x78, 0x2c, 0x20, 0x30, 0x4c, 0x2c, 0x20, 0x73, 0x61, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x78, 0x29, 0x29, 0x3b, 0x20, + 0x7d, 0x0a, 0x0a, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x63, 0x6f, 0x6d, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x6e, 0x75, 0x6d, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x28, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x6e, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6f, + 0x6e, 0x6c, 0x79, 0x20, 0x75, 0x6e, 0x69, 0x74, 0x20, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x29, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x55, 0x43, 0x4d, 0x45, 0x6e, 0x75, 0x6d, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x20, 0x74, 0x20, 0x72, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, - 0x20, 0x55, 0x43, 0x4d, 0x45, 0x6e, 0x75, 0x6d, 0x4c, 0x65, 0x6e, 0x20, - 0x74, 0x20, 0x6e, 0x20, 0x7c, 0x20, 0x74, 0x20, 0x2d, 0x3e, 0x20, 0x6e, - 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, - 0x43, 0x4d, 0x45, 0x6e, 0x75, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x20, - 0x74, 0x20, 0x62, 0x2c, 0x20, 0x53, 0x69, 0x7a, 0x65, 0x4f, 0x66, 0x20, - 0x62, 0x20, 0x6e, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x4d, 0x45, - 0x6e, 0x75, 0x6d, 0x4c, 0x65, 0x6e, 0x20, 0x74, 0x20, 0x6e, 0x0a, 0x0a, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, - 0x4d, 0x45, 0x6e, 0x75, 0x6d, 0x4c, 0x65, 0x6e, 0x20, 0x74, 0x20, 0x6e, - 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x20, 0x74, 0x20, 0x28, 0x63, 0x73, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x6e, 0x29, 0x20, 0x3c, 0x68, 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, 0x44, - 0x79, 0x6e, 0x44, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x30, 0x3e, 0x20, 0x77, - 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x41, 0x6c, 0x6c, - 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x66, 0x20, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x64, 0x64, 0x6d, 0x4d, - 0x61, 0x6b, 0x65, 0x28, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, - 0x73, 0x74, 0x28, 0x66, 0x29, 0x2c, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, - 0x2c, 0x20, 0x74, 0x69, 0x32, 0x62, 0x28, 0x74, 0x6c, 0x32, 0x69, 0x28, - 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x3a, 0x3a, 0x28, - 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x20, 0x6e, 0x29, - 0x3d, 0x3e, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x2d, 0x31, 0x29, 0x29, 0x0a, - 0x20, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x20, 0x20, 0x20, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x20, 0x20, - 0x20, 0x3d, 0x20, 0x64, 0x64, 0x6d, 0x49, 0x6e, 0x69, 0x74, 0x28, 0x64, - 0x6d, 0x2c, 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, - 0x74, 0x28, 0x73, 0x6d, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x44, - 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x64, 0x64, - 0x6d, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x0a, 0x0a, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x45, - 0x6e, 0x75, 0x6d, 0x4c, 0x65, 0x6e, 0x20, 0x74, 0x20, 0x6e, 0x29, 0x20, - 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, - 0x28, 0x63, 0x73, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6e, 0x29, 0x20, - 0x3c, 0x68, 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, 0x44, 0x79, 0x6e, 0x44, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x30, 0x3e, 0x20, 0x77, 0x68, 0x65, 0x72, - 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x20, 0x72, - 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, - 0x43, 0x61, 0x73, 0x74, 0x28, 0x7b, 0x74, 0x3d, 0x62, 0x32, 0x69, 0x28, - 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x61, 0x64, - 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x29, 0x29, 0x7d, 0x29, 0x0a, 0x0a, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, - 0x4d, 0x45, 0x6e, 0x75, 0x6d, 0x4c, 0x65, 0x6e, 0x20, 0x74, 0x20, 0x6e, - 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, - 0x20, 0x74, 0x20, 0x28, 0x63, 0x73, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x6e, 0x29, 0x20, 0x3c, 0x68, 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, 0x44, - 0x79, 0x6e, 0x44, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x30, 0x3e, 0x20, 0x77, - 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x20, 0x77, 0x20, 0x64, 0x6d, 0x20, 0x78, 0x20, 0x3d, 0x20, - 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x28, 0x77, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x74, 0x69, 0x32, - 0x62, 0x28, 0x28, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, - 0x74, 0x28, 0x78, 0x29, 0x3a, 0x3a, 0x7b, 0x74, 0x3a, 0x69, 0x6e, 0x74, - 0x7d, 0x29, 0x2e, 0x74, 0x29, 0x29, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x63, - 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, - 0x74, 0x73, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x55, 0x43, 0x44, - 0x69, 0x76, 0x69, 0x64, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, - 0x20, 0x74, 0x20, 0x65, 0x20, 0x70, 0x20, 0x7c, 0x20, 0x74, 0x20, 0x2d, - 0x3e, 0x20, 0x65, 0x2c, 0x20, 0x74, 0x20, 0x2d, 0x3e, 0x20, 0x70, 0x0a, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x55, 0x43, 0x44, - 0x69, 0x76, 0x69, 0x64, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, - 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x28, - 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, - 0x74, 0x3d, 0x7c, 0x63, 0x3a, 0x68, 0x2b, 0x73, 0x7c, 0x2c, 0x20, 0x55, - 0x43, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x6e, 0x74, 0x20, 0x73, 0x20, 0x73, 0x65, 0x20, 0x73, 0x70, 0x2c, 0x20, - 0x7c, 0x63, 0x3a, 0x28, 0x29, 0x2b, 0x73, 0x65, 0x7c, 0x3d, 0x65, 0x2c, - 0x20, 0x28, 0x68, 0x2a, 0x73, 0x70, 0x29, 0x3d, 0x70, 0x29, 0x20, 0x3d, - 0x3e, 0x20, 0x55, 0x43, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x6e, 0x74, 0x20, 0x74, 0x20, 0x65, 0x20, 0x70, 0x0a, + 0x74, 0x20, 0x74, 0x20, 0x62, 0x20, 0x7c, 0x20, 0x74, 0x20, 0x2d, 0x3e, + 0x20, 0x62, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, + 0x55, 0x43, 0x4d, 0x45, 0x6e, 0x75, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x28, 0x29, 0x0a, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x74, 0x3d, 0x7c, 0x28, 0x29, + 0x2b, 0x73, 0x7c, 0x2c, 0x20, 0x55, 0x43, 0x4d, 0x45, 0x6e, 0x75, 0x6d, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x73, 0x20, 0x78, 0x2c, 0x20, 0x28, + 0x62, 0x79, 0x74, 0x65, 0x2a, 0x78, 0x29, 0x3d, 0x72, 0x29, 0x20, 0x3d, + 0x3e, 0x20, 0x55, 0x43, 0x4d, 0x45, 0x6e, 0x75, 0x6d, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x20, 0x74, 0x20, 0x72, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x20, 0x55, 0x43, 0x4d, 0x45, 0x6e, 0x75, 0x6d, 0x4c, 0x65, 0x6e, + 0x20, 0x74, 0x20, 0x6e, 0x20, 0x7c, 0x20, 0x74, 0x20, 0x2d, 0x3e, 0x20, + 0x6e, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, + 0x55, 0x43, 0x4d, 0x45, 0x6e, 0x75, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x20, 0x74, 0x20, 0x62, 0x2c, 0x20, 0x53, 0x69, 0x7a, 0x65, 0x4f, 0x66, + 0x20, 0x62, 0x20, 0x6e, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x4d, + 0x45, 0x6e, 0x75, 0x6d, 0x4c, 0x65, 0x6e, 0x20, 0x74, 0x20, 0x6e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, - 0x43, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x6e, 0x74, 0x20, 0x74, 0x20, 0x65, 0x20, 0x70, 0x2c, 0x20, 0x55, 0x43, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x65, 0x20, 0x65, 0x73, 0x6d, 0x20, - 0x65, 0x64, 0x6d, 0x2c, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x20, 0x70, 0x20, 0x70, 0x73, 0x6d, 0x20, 0x70, 0x64, 0x6d, 0x29, 0x20, - 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, - 0x20, 0x28, 0x65, 0x73, 0x6d, 0x2a, 0x70, 0x73, 0x6d, 0x29, 0x20, 0x28, - 0x65, 0x64, 0x6d, 0x2a, 0x70, 0x64, 0x6d, 0x29, 0x20, 0x77, 0x68, 0x65, - 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x66, 0x20, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x75, 0x63, 0x41, 0x6c, - 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, - 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x65, 0x20, 0x5f, 0x20, 0x5f, - 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x66, 0x2c, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x29, 0x2c, 0x20, 0x28, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x20, 0x70, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, - 0x5f, 0x29, 0x28, 0x66, 0x2c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x29, 0x29, + 0x43, 0x4d, 0x45, 0x6e, 0x75, 0x6d, 0x4c, 0x65, 0x6e, 0x20, 0x74, 0x20, + 0x6e, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x20, 0x74, 0x20, 0x28, 0x63, 0x73, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x20, 0x6e, 0x29, 0x20, 0x3c, 0x68, 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, + 0x44, 0x79, 0x6e, 0x44, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x30, 0x3e, 0x20, + 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x41, 0x6c, + 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x66, + 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x64, 0x64, 0x6d, + 0x4d, 0x61, 0x6b, 0x65, 0x28, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, + 0x61, 0x73, 0x74, 0x28, 0x66, 0x29, 0x2c, 0x20, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x2c, 0x20, 0x74, 0x69, 0x32, 0x62, 0x28, 0x74, 0x6c, 0x32, 0x69, + 0x28, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x3a, 0x3a, + 0x28, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x20, 0x6e, + 0x29, 0x3d, 0x3e, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x2d, 0x31, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x20, - 0x20, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x28, 0x75, 0x63, - 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, + 0x20, 0x20, 0x3d, 0x20, 0x64, 0x64, 0x6d, 0x49, 0x6e, 0x69, 0x74, 0x28, + 0x64, 0x6d, 0x2c, 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, + 0x73, 0x74, 0x28, 0x73, 0x6d, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x75, 0x63, + 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x64, + 0x64, 0x6d, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x0a, 0x0a, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x4d, + 0x45, 0x6e, 0x75, 0x6d, 0x4c, 0x65, 0x6e, 0x20, 0x74, 0x20, 0x6e, 0x29, + 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, + 0x20, 0x28, 0x63, 0x73, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6e, 0x29, + 0x20, 0x3c, 0x68, 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, 0x44, 0x79, 0x6e, + 0x44, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x30, 0x3e, 0x20, 0x77, 0x68, 0x65, + 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x20, + 0x72, 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, + 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x7b, 0x74, 0x3d, 0x62, 0x32, 0x69, + 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x61, + 0x64, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x29, 0x29, 0x7d, 0x29, 0x0a, + 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, + 0x43, 0x4d, 0x45, 0x6e, 0x75, 0x6d, 0x4c, 0x65, 0x6e, 0x20, 0x74, 0x20, + 0x6e, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x20, 0x74, 0x20, 0x28, 0x63, 0x73, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x20, 0x6e, 0x29, 0x20, 0x3c, 0x68, 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, + 0x44, 0x79, 0x6e, 0x44, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x30, 0x3e, 0x20, + 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x20, 0x77, 0x20, 0x64, 0x6d, 0x20, 0x78, 0x20, 0x3d, + 0x20, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x57, 0x72, 0x69, + 0x74, 0x65, 0x28, 0x77, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x74, 0x69, + 0x32, 0x62, 0x28, 0x28, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, + 0x73, 0x74, 0x28, 0x78, 0x29, 0x3a, 0x3a, 0x7b, 0x74, 0x3a, 0x69, 0x6e, + 0x74, 0x7d, 0x29, 0x2e, 0x74, 0x29, 0x29, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, + 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, + 0x6e, 0x74, 0x73, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x55, 0x43, + 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, + 0x74, 0x20, 0x74, 0x20, 0x65, 0x20, 0x70, 0x20, 0x7c, 0x20, 0x74, 0x20, + 0x2d, 0x3e, 0x20, 0x65, 0x2c, 0x20, 0x74, 0x20, 0x2d, 0x3e, 0x20, 0x70, + 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x55, 0x43, + 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, + 0x74, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, + 0x28, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, + 0x28, 0x74, 0x3d, 0x7c, 0x63, 0x3a, 0x68, 0x2b, 0x73, 0x7c, 0x2c, 0x20, + 0x55, 0x43, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x56, 0x61, 0x72, 0x69, + 0x61, 0x6e, 0x74, 0x20, 0x73, 0x20, 0x73, 0x65, 0x20, 0x73, 0x70, 0x2c, + 0x20, 0x7c, 0x63, 0x3a, 0x28, 0x29, 0x2b, 0x73, 0x65, 0x7c, 0x3d, 0x65, + 0x2c, 0x20, 0x28, 0x68, 0x2a, 0x73, 0x70, 0x29, 0x3d, 0x70, 0x29, 0x20, + 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x20, 0x74, 0x20, 0x65, 0x20, 0x70, + 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, + 0x55, 0x43, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x56, 0x61, 0x72, 0x69, + 0x61, 0x6e, 0x74, 0x20, 0x74, 0x20, 0x65, 0x20, 0x70, 0x2c, 0x20, 0x55, + 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x65, 0x20, 0x65, 0x73, 0x6d, + 0x20, 0x65, 0x64, 0x6d, 0x2c, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x20, 0x70, 0x20, 0x70, 0x73, 0x6d, 0x20, 0x70, 0x64, 0x6d, 0x29, + 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, + 0x74, 0x20, 0x28, 0x65, 0x73, 0x6d, 0x2a, 0x70, 0x73, 0x6d, 0x29, 0x20, + 0x28, 0x65, 0x64, 0x6d, 0x2a, 0x70, 0x64, 0x6d, 0x29, 0x20, 0x77, 0x68, + 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, + 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x66, 0x20, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x75, 0x63, 0x41, + 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x65, 0x20, 0x5f, 0x20, - 0x5f, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, 0x5f, - 0x29, 0x28, 0x73, 0x6d, 0x2e, 0x30, 0x2c, 0x64, 0x6d, 0x2e, 0x30, 0x29, - 0x3b, 0x20, 0x28, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x20, 0x70, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, - 0x5f, 0x29, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x73, 0x6d, 0x2e, 0x31, 0x2c, - 0x64, 0x6d, 0x2e, 0x31, 0x29, 0x3b, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x75, - 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x20, 0x64, 0x6d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, - 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x28, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, + 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x66, 0x2c, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x29, 0x2c, 0x20, 0x28, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, + 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x70, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, + 0x3e, 0x5f, 0x29, 0x28, 0x66, 0x2c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x29, + 0x29, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x20, 0x20, 0x20, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, + 0x20, 0x20, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x28, 0x75, + 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, + 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x65, 0x20, 0x5f, + 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, + 0x5f, 0x29, 0x28, 0x73, 0x6d, 0x2e, 0x30, 0x2c, 0x64, 0x6d, 0x2e, 0x30, + 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x20, 0x70, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x28, 0x5f, + 0x2c, 0x5f, 0x29, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x73, 0x6d, 0x2e, 0x31, + 0x2c, 0x64, 0x6d, 0x2e, 0x31, 0x29, 0x3b, 0x20, 0x7d, 0x0a, 0x20, 0x20, + 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x20, 0x64, 0x6d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, + 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x28, 0x75, 0x63, 0x44, 0x65, 0x61, + 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, + 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x65, 0x20, 0x5f, 0x20, + 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x64, 0x6d, + 0x2e, 0x30, 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, - 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x65, 0x20, 0x5f, 0x20, 0x5f, + 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x70, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x64, 0x6d, 0x2e, - 0x30, 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, - 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x70, 0x20, 0x5f, 0x20, 0x5f, 0x29, - 0x3d, 0x3e, 0x5f, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x64, 0x6d, 0x2e, 0x31, - 0x29, 0x3b, 0x20, 0x7d, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, - 0x55, 0x43, 0x50, 0x61, 0x64, 0x56, 0x61, 0x72, 0x20, 0x76, 0x20, 0x70, - 0x20, 0x7c, 0x20, 0x76, 0x20, 0x2d, 0x3e, 0x20, 0x70, 0x20, 0x77, 0x68, - 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x50, 0x61, 0x64, 0x56, - 0x61, 0x72, 0x20, 0x3a, 0x3a, 0x20, 0x70, 0x0a, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x53, 0x69, 0x7a, 0x65, 0x4f, 0x66, - 0x20, 0x76, 0x20, 0x34, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x50, - 0x61, 0x64, 0x56, 0x61, 0x72, 0x20, 0x76, 0x20, 0x28, 0x29, 0x20, 0x77, + 0x31, 0x29, 0x3b, 0x20, 0x7d, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x20, 0x55, 0x43, 0x50, 0x61, 0x64, 0x56, 0x61, 0x72, 0x20, 0x76, 0x20, + 0x70, 0x20, 0x7c, 0x20, 0x76, 0x20, 0x2d, 0x3e, 0x20, 0x70, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x50, 0x61, 0x64, - 0x56, 0x61, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x29, 0x0a, 0x69, 0x6e, 0x73, + 0x56, 0x61, 0x72, 0x20, 0x3a, 0x3a, 0x20, 0x70, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x53, 0x69, 0x7a, 0x65, 0x4f, - 0x66, 0x20, 0x76, 0x20, 0x38, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, + 0x66, 0x20, 0x76, 0x20, 0x34, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x50, 0x61, 0x64, 0x56, 0x61, 0x72, 0x20, 0x76, 0x20, 0x28, 0x29, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x50, 0x61, 0x64, 0x56, 0x61, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x29, 0x0a, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x55, 0x43, 0x50, 0x61, 0x64, - 0x56, 0x61, 0x72, 0x20, 0x5f, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x77, 0x68, - 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x50, 0x61, 0x64, 0x56, - 0x61, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x20, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, - 0x70, 0x70, 0x52, 0x46, 0x20, 0x76, 0x20, 0x70, 0x20, 0x66, 0x20, 0x6d, - 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x49, - 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x52, 0x46, 0x20, - 0x3a, 0x3a, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x3c, 0x68, 0x6f, - 0x62, 0x62, 0x65, 0x73, 0x2e, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x3e, 0x2c, 0x20, 0x66, 0x2c, 0x20, 0x6d, 0x29, 0x20, 0x2d, 0x3e, - 0x20, 0x28, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x53, 0x69, 0x7a, 0x65, + 0x4f, 0x66, 0x20, 0x76, 0x20, 0x38, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, + 0x43, 0x50, 0x61, 0x64, 0x56, 0x61, 0x72, 0x20, 0x76, 0x20, 0x28, 0x29, + 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x50, + 0x61, 0x64, 0x56, 0x61, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x29, 0x0a, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x55, 0x43, 0x50, 0x61, + 0x64, 0x56, 0x61, 0x72, 0x20, 0x5f, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x77, + 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x50, 0x61, 0x64, + 0x56, 0x61, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x0a, 0x0a, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x20, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, + 0x41, 0x70, 0x70, 0x52, 0x46, 0x20, 0x76, 0x20, 0x70, 0x20, 0x66, 0x20, + 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, + 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x52, 0x46, + 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x3c, 0x68, + 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x3e, 0x2c, 0x20, 0x66, 0x2c, 0x20, 0x6d, 0x29, 0x20, 0x2d, + 0x3e, 0x20, 0x28, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, + 0x70, 0x70, 0x52, 0x46, 0x20, 0x5f, 0x20, 0x28, 0x29, 0x20, 0x5f, 0x20, + 0x5f, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, + 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x52, 0x46, + 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x3d, 0x20, 0x28, + 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, + 0x70, 0x3d, 0x28, 0x68, 0x2a, 0x70, 0x74, 0x29, 0x2c, 0x20, 0x66, 0x3d, + 0x7b, 0x5f, 0x2a, 0x66, 0x74, 0x7d, 0x2c, 0x20, 0x6d, 0x3d, 0x28, 0x68, + 0x6d, 0x2a, 0x6d, 0x74, 0x29, 0x2c, 0x20, 0x55, 0x43, 0x49, 0x6e, 0x69, + 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x52, 0x46, 0x20, 0x76, 0x20, + 0x70, 0x74, 0x20, 0x66, 0x74, 0x20, 0x6d, 0x74, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, - 0x70, 0x52, 0x46, 0x20, 0x5f, 0x20, 0x28, 0x29, 0x20, 0x5f, 0x20, 0x5f, - 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x49, + 0x70, 0x52, 0x46, 0x20, 0x76, 0x20, 0x70, 0x20, 0x66, 0x20, 0x6d, 0x20, + 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x49, 0x6e, + 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x52, 0x46, 0x20, 0x69, + 0x20, 0x72, 0x20, 0x66, 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x64, 0x6f, + 0x20, 0x7b, 0x20, 0x70, 0x61, 0x64, 0x56, 0x3d, 0x75, 0x63, 0x50, 0x61, + 0x64, 0x56, 0x61, 0x72, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x50, 0x61, 0x64, + 0x56, 0x61, 0x72, 0x20, 0x76, 0x20, 0x78, 0x29, 0x3d, 0x3e, 0x78, 0x3b, + 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x48, 0x65, 0x61, 0x64, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x28, 0x66, 0x29, 0x20, 0x3c, 0x2d, 0x20, 0x28, + 0x5c, 0x28, 0x29, 0x2e, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, + 0x73, 0x74, 0x28, 0x28, 0x69, 0x2c, 0x70, 0x61, 0x64, 0x56, 0x2c, 0x28, + 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x52, + 0x65, 0x61, 0x64, 0x20, 0x68, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, + 0x28, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x72, 0x2c, + 0x20, 0x64, 0x6d, 0x2e, 0x30, 0x29, 0x3a, 0x3a, 0x68, 0x29, 0x29, 0x3a, + 0x3a, 0x76, 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x49, 0x6e, 0x69, 0x74, + 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x52, 0x46, 0x3a, 0x3a, 0x28, 0x55, + 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x52, + 0x46, 0x20, 0x76, 0x20, 0x70, 0x74, 0x20, 0x6c, 0x66, 0x74, 0x20, 0x6c, + 0x6d, 0x74, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x2c, 0x5f, 0x2c, + 0x5f, 0x29, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x69, 0x2b, 0x31, 0x2c, 0x20, + 0x72, 0x2c, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x61, 0x69, + 0x6c, 0x28, 0x66, 0x29, 0x3a, 0x3a, 0x6c, 0x66, 0x74, 0x2c, 0x20, 0x74, + 0x75, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x69, 0x6c, 0x28, 0x64, 0x6d, 0x29, + 0x3a, 0x3a, 0x6c, 0x6d, 0x74, 0x29, 0x3b, 0x20, 0x7d, 0x0a, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x70, 0x3d, 0x28, 0x68, + 0x2a, 0x70, 0x74, 0x29, 0x2c, 0x20, 0x66, 0x3d, 0x28, 0x5f, 0x2a, 0x66, + 0x74, 0x29, 0x2c, 0x20, 0x6d, 0x3d, 0x28, 0x68, 0x6d, 0x2a, 0x6d, 0x74, + 0x29, 0x2c, 0x20, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, + 0x41, 0x70, 0x70, 0x52, 0x46, 0x20, 0x76, 0x20, 0x70, 0x74, 0x20, 0x66, + 0x74, 0x20, 0x6d, 0x74, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x52, 0x46, 0x20, - 0x5f, 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x3d, 0x20, 0x28, 0x29, - 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x70, - 0x3d, 0x28, 0x68, 0x2a, 0x70, 0x74, 0x29, 0x2c, 0x20, 0x66, 0x3d, 0x7b, - 0x5f, 0x2a, 0x66, 0x74, 0x7d, 0x2c, 0x20, 0x6d, 0x3d, 0x28, 0x68, 0x6d, - 0x2a, 0x6d, 0x74, 0x29, 0x2c, 0x20, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, - 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x52, 0x46, 0x20, 0x76, 0x20, 0x70, - 0x74, 0x20, 0x66, 0x74, 0x20, 0x6d, 0x74, 0x29, 0x20, 0x3d, 0x3e, 0x20, - 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, - 0x52, 0x46, 0x20, 0x76, 0x20, 0x70, 0x20, 0x66, 0x20, 0x6d, 0x20, 0x77, - 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x49, 0x6e, 0x69, - 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x52, 0x46, 0x20, 0x69, 0x20, - 0x72, 0x20, 0x66, 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, - 0x7b, 0x20, 0x70, 0x61, 0x64, 0x56, 0x3d, 0x75, 0x63, 0x50, 0x61, 0x64, - 0x56, 0x61, 0x72, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x50, 0x61, 0x64, 0x56, - 0x61, 0x72, 0x20, 0x76, 0x20, 0x78, 0x29, 0x3d, 0x3e, 0x78, 0x3b, 0x20, - 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x48, 0x65, 0x61, 0x64, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x28, 0x66, 0x29, 0x20, 0x3c, 0x2d, 0x20, 0x28, 0x5c, - 0x28, 0x29, 0x2e, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, - 0x74, 0x28, 0x28, 0x69, 0x2c, 0x70, 0x61, 0x64, 0x56, 0x2c, 0x28, 0x75, - 0x63, 0x52, 0x65, 0x61, 0x64, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x52, 0x65, - 0x61, 0x64, 0x20, 0x68, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x28, - 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x72, 0x2c, 0x20, - 0x64, 0x6d, 0x2e, 0x30, 0x29, 0x3a, 0x3a, 0x68, 0x29, 0x29, 0x3a, 0x3a, - 0x76, 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x49, 0x6e, 0x69, 0x74, 0x56, - 0x61, 0x72, 0x41, 0x70, 0x70, 0x52, 0x46, 0x3a, 0x3a, 0x28, 0x55, 0x43, - 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x52, 0x46, - 0x20, 0x76, 0x20, 0x70, 0x74, 0x20, 0x6c, 0x66, 0x74, 0x20, 0x6c, 0x6d, - 0x74, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x2c, 0x5f, 0x2c, 0x5f, - 0x29, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x69, 0x2b, 0x31, 0x2c, 0x20, 0x72, - 0x2c, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x54, 0x61, 0x69, 0x6c, - 0x28, 0x66, 0x29, 0x3a, 0x3a, 0x6c, 0x66, 0x74, 0x2c, 0x20, 0x74, 0x75, - 0x70, 0x6c, 0x65, 0x54, 0x61, 0x69, 0x6c, 0x28, 0x64, 0x6d, 0x29, 0x3a, - 0x3a, 0x6c, 0x6d, 0x74, 0x29, 0x3b, 0x20, 0x7d, 0x0a, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x70, 0x3d, 0x28, 0x68, 0x2a, - 0x70, 0x74, 0x29, 0x2c, 0x20, 0x66, 0x3d, 0x28, 0x5f, 0x2a, 0x66, 0x74, - 0x29, 0x2c, 0x20, 0x6d, 0x3d, 0x28, 0x68, 0x6d, 0x2a, 0x6d, 0x74, 0x29, - 0x2c, 0x20, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, - 0x70, 0x70, 0x52, 0x46, 0x20, 0x76, 0x20, 0x70, 0x74, 0x20, 0x66, 0x74, - 0x20, 0x6d, 0x74, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x49, 0x6e, - 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x52, 0x46, 0x20, 0x76, - 0x20, 0x70, 0x20, 0x66, 0x20, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, - 0x0a, 0x20, 0x20, 0x75, 0x63, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, - 0x41, 0x70, 0x70, 0x52, 0x46, 0x20, 0x69, 0x20, 0x72, 0x20, 0x66, 0x20, - 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x70, 0x61, - 0x64, 0x56, 0x3d, 0x75, 0x63, 0x50, 0x61, 0x64, 0x56, 0x61, 0x72, 0x3a, - 0x3a, 0x28, 0x55, 0x43, 0x50, 0x61, 0x64, 0x56, 0x61, 0x72, 0x20, 0x76, - 0x20, 0x78, 0x29, 0x3d, 0x3e, 0x78, 0x3b, 0x20, 0x66, 0x2e, 0x30, 0x20, - 0x3c, 0x2d, 0x20, 0x28, 0x5c, 0x28, 0x29, 0x2e, 0x75, 0x6e, 0x73, 0x61, - 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x28, 0x69, 0x2c, 0x70, 0x61, - 0x64, 0x56, 0x2c, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x3a, 0x3a, - 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x68, 0x20, 0x5f, 0x20, - 0x5f, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, 0x5f, - 0x29, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x30, 0x29, 0x3a, 0x3a, - 0x68, 0x29, 0x29, 0x3a, 0x3a, 0x76, 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, + 0x76, 0x20, 0x70, 0x20, 0x66, 0x20, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, + 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, + 0x72, 0x41, 0x70, 0x70, 0x52, 0x46, 0x20, 0x69, 0x20, 0x72, 0x20, 0x66, + 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x70, + 0x61, 0x64, 0x56, 0x3d, 0x75, 0x63, 0x50, 0x61, 0x64, 0x56, 0x61, 0x72, + 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x50, 0x61, 0x64, 0x56, 0x61, 0x72, 0x20, + 0x76, 0x20, 0x78, 0x29, 0x3d, 0x3e, 0x78, 0x3b, 0x20, 0x66, 0x2e, 0x30, + 0x20, 0x3c, 0x2d, 0x20, 0x28, 0x5c, 0x28, 0x29, 0x2e, 0x75, 0x6e, 0x73, + 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x28, 0x69, 0x2c, 0x70, + 0x61, 0x64, 0x56, 0x2c, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x3a, + 0x3a, 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x68, 0x20, 0x5f, + 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, + 0x5f, 0x29, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x30, 0x29, 0x3a, + 0x3a, 0x68, 0x29, 0x29, 0x3a, 0x3a, 0x76, 0x29, 0x3b, 0x20, 0x28, 0x75, + 0x63, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x52, + 0x46, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, + 0x72, 0x41, 0x70, 0x70, 0x52, 0x46, 0x20, 0x76, 0x20, 0x70, 0x74, 0x20, + 0x6c, 0x66, 0x74, 0x20, 0x6c, 0x6d, 0x74, 0x29, 0x3d, 0x3e, 0x28, 0x5f, + 0x2c, 0x5f, 0x2c, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, 0x5f, 0x29, 0x28, + 0x69, 0x2b, 0x31, 0x2c, 0x20, 0x72, 0x2c, 0x20, 0x74, 0x75, 0x70, 0x6c, + 0x65, 0x54, 0x61, 0x69, 0x6c, 0x28, 0x66, 0x29, 0x3a, 0x3a, 0x6c, 0x66, + 0x74, 0x2c, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x69, 0x6c, + 0x28, 0x64, 0x6d, 0x29, 0x3a, 0x3a, 0x6c, 0x6d, 0x74, 0x29, 0x3b, 0x20, + 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x61, 0x20, 0x6c, 0x69, 0x74, 0x74, 0x6c, + 0x65, 0x20, 0x61, 0x6e, 0x6e, 0x6f, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x74, + 0x68, 0x61, 0x74, 0x20, 0x77, 0x65, 0x20, 0x64, 0x75, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6c, 0x6f, + 0x67, 0x69, 0x63, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x6e, 0x74, 0x73, 0x20, 0x61, 0x73, 0x20, 0x22, 0x6e, 0x61, 0x6b, + 0x65, 0x64, 0x20, 0x73, 0x75, 0x6d, 0x73, 0x22, 0x0a, 0x0a, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x44, 0x69, + 0x76, 0x69, 0x64, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x20, + 0x76, 0x20, 0x65, 0x20, 0x70, 0x2c, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x20, 0x65, 0x20, 0x65, 0x73, 0x6d, 0x20, 0x65, 0x64, 0x6d, + 0x2c, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x70, 0x20, + 0x70, 0x73, 0x6d, 0x20, 0x70, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, + 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x76, 0x20, 0x28, 0x65, 0x73, + 0x6d, 0x2a, 0x70, 0x73, 0x6d, 0x29, 0x20, 0x28, 0x65, 0x64, 0x6d, 0x2a, + 0x70, 0x64, 0x6d, 0x29, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, + 0x20, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x20, 0x72, 0x20, 0x64, 0x6d, + 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x66, 0x3d, 0x6e, 0x65, + 0x77, 0x50, 0x72, 0x69, 0x6d, 0x28, 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x52, 0x46, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, - 0x41, 0x70, 0x70, 0x52, 0x46, 0x20, 0x76, 0x20, 0x70, 0x74, 0x20, 0x6c, - 0x66, 0x74, 0x20, 0x6c, 0x6d, 0x74, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, - 0x5f, 0x2c, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x69, - 0x2b, 0x31, 0x2c, 0x20, 0x72, 0x2c, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, - 0x54, 0x61, 0x69, 0x6c, 0x28, 0x66, 0x29, 0x3a, 0x3a, 0x6c, 0x66, 0x74, - 0x2c, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x69, 0x6c, 0x28, - 0x64, 0x6d, 0x29, 0x3a, 0x3a, 0x6c, 0x6d, 0x74, 0x29, 0x3b, 0x20, 0x7d, - 0x20, 0x2f, 0x2f, 0x20, 0x61, 0x20, 0x6c, 0x69, 0x74, 0x74, 0x6c, 0x65, - 0x20, 0x61, 0x6e, 0x6e, 0x6f, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, - 0x61, 0x74, 0x20, 0x77, 0x65, 0x20, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6c, 0x6f, 0x67, - 0x69, 0x63, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x6e, 0x74, 0x73, 0x20, 0x61, 0x73, 0x20, 0x22, 0x6e, 0x61, 0x6b, 0x65, - 0x64, 0x20, 0x73, 0x75, 0x6d, 0x73, 0x22, 0x0a, 0x0a, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x44, 0x69, 0x76, - 0x69, 0x64, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x20, 0x76, - 0x20, 0x65, 0x20, 0x70, 0x2c, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x20, 0x65, 0x20, 0x65, 0x73, 0x6d, 0x20, 0x65, 0x64, 0x6d, 0x2c, - 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x70, 0x20, 0x70, - 0x73, 0x6d, 0x20, 0x70, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, - 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x76, 0x20, 0x28, 0x65, 0x73, 0x6d, - 0x2a, 0x70, 0x73, 0x6d, 0x29, 0x20, 0x28, 0x65, 0x64, 0x6d, 0x2a, 0x70, - 0x64, 0x6d, 0x29, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, - 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x20, 0x72, 0x20, 0x64, 0x6d, 0x20, - 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x66, 0x3d, 0x6e, 0x65, 0x77, - 0x50, 0x72, 0x69, 0x6d, 0x28, 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x49, - 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x52, 0x46, 0x3a, - 0x3a, 0x28, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, - 0x70, 0x70, 0x52, 0x46, 0x20, 0x76, 0x20, 0x70, 0x20, 0x5f, 0x20, 0x5f, - 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x2c, 0x5f, 0x2c, 0x5f, 0x29, - 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x30, 0x2c, 0x20, 0x72, 0x2c, 0x20, 0x66, - 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x31, 0x29, 0x3b, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x41, - 0x70, 0x70, 0x28, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x3a, 0x3a, - 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x65, 0x20, 0x5f, 0x20, - 0x5f, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, 0x5f, - 0x29, 0x28, 0x72, 0x2c, 0x64, 0x6d, 0x2e, 0x30, 0x29, 0x2c, 0x20, 0x66, - 0x29, 0x20, 0x7d, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x55, - 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x57, - 0x46, 0x20, 0x76, 0x20, 0x70, 0x20, 0x66, 0x20, 0x6d, 0x20, 0x77, 0x68, - 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x49, 0x6e, 0x69, 0x74, - 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x57, 0x46, 0x20, 0x3a, 0x3a, 0x20, - 0x28, 0x3c, 0x68, 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, 0x55, 0x43, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x72, 0x3e, 0x2c, 0x20, 0x66, 0x2c, 0x20, 0x6d, - 0x29, 0x20, 0x2d, 0x3e, 0x20, 0x28, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x20, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, - 0x61, 0x72, 0x41, 0x70, 0x70, 0x57, 0x46, 0x20, 0x5f, 0x20, 0x28, 0x29, - 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, - 0x20, 0x75, 0x63, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, - 0x70, 0x57, 0x46, 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x3d, 0x20, - 0x28, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, - 0x28, 0x70, 0x3d, 0x28, 0x68, 0x2a, 0x70, 0x74, 0x29, 0x2c, 0x20, 0x66, - 0x3d, 0x7b, 0x5f, 0x2a, 0x66, 0x74, 0x7d, 0x2c, 0x20, 0x6d, 0x3d, 0x28, - 0x68, 0x6d, 0x2a, 0x6d, 0x74, 0x29, 0x2c, 0x20, 0x55, 0x43, 0x49, 0x6e, - 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x57, 0x46, 0x20, 0x76, - 0x20, 0x70, 0x74, 0x20, 0x66, 0x74, 0x20, 0x6d, 0x74, 0x29, 0x20, 0x3d, - 0x3e, 0x20, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, - 0x70, 0x70, 0x57, 0x46, 0x20, 0x76, 0x20, 0x70, 0x20, 0x66, 0x20, 0x6d, - 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x49, - 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x57, 0x46, 0x20, - 0x77, 0x20, 0x66, 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, - 0x7b, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x48, 0x65, 0x61, 0x64, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x28, 0x66, 0x29, 0x20, 0x3c, 0x2d, 0x20, - 0x28, 0x5c, 0x78, 0x2e, 0x28, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, - 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x68, - 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x77, 0x2c, - 0x20, 0x64, 0x6d, 0x2e, 0x30, 0x2c, 0x20, 0x78, 0x29, 0x29, 0x3b, 0x20, - 0x28, 0x75, 0x63, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, - 0x70, 0x57, 0x46, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, - 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x57, 0x46, 0x20, 0x76, 0x20, 0x70, - 0x74, 0x20, 0x6c, 0x66, 0x74, 0x20, 0x6c, 0x6d, 0x74, 0x29, 0x3d, 0x3e, - 0x5f, 0x29, 0x28, 0x77, 0x2c, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x54, 0x61, 0x69, 0x6c, 0x28, 0x66, 0x29, 0x3a, 0x3a, 0x6c, 0x66, 0x74, - 0x2c, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x69, 0x6c, 0x28, - 0x64, 0x6d, 0x29, 0x3a, 0x3a, 0x6c, 0x6d, 0x74, 0x29, 0x3b, 0x20, 0x7d, - 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x70, - 0x3d, 0x28, 0x68, 0x2a, 0x70, 0x74, 0x29, 0x2c, 0x20, 0x66, 0x3d, 0x28, - 0x5f, 0x2a, 0x66, 0x74, 0x29, 0x2c, 0x20, 0x6d, 0x3d, 0x28, 0x68, 0x6d, - 0x2a, 0x6d, 0x74, 0x29, 0x2c, 0x20, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, - 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x57, 0x46, 0x20, 0x76, 0x20, 0x70, - 0x74, 0x20, 0x66, 0x74, 0x20, 0x6d, 0x74, 0x29, 0x20, 0x3d, 0x3e, 0x20, + 0x41, 0x70, 0x70, 0x52, 0x46, 0x20, 0x76, 0x20, 0x70, 0x20, 0x5f, 0x20, + 0x5f, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x2c, 0x5f, 0x2c, 0x5f, + 0x29, 0x2d, 0x3e, 0x5f, 0x29, 0x28, 0x30, 0x2c, 0x20, 0x72, 0x2c, 0x20, + 0x66, 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x31, 0x29, 0x3b, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, + 0x41, 0x70, 0x70, 0x28, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x3a, + 0x3a, 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x65, 0x20, 0x5f, + 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, + 0x5f, 0x29, 0x28, 0x72, 0x2c, 0x64, 0x6d, 0x2e, 0x30, 0x29, 0x2c, 0x20, + 0x66, 0x29, 0x20, 0x7d, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x57, 0x46, 0x20, 0x76, 0x20, 0x70, 0x20, 0x66, 0x20, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x49, 0x6e, 0x69, - 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x57, 0x46, 0x20, 0x77, 0x20, - 0x66, 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, - 0x66, 0x2e, 0x30, 0x20, 0x3c, 0x2d, 0x20, 0x28, 0x5c, 0x78, 0x2e, 0x28, - 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x3a, 0x28, 0x55, 0x43, - 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x68, 0x20, 0x5f, 0x20, 0x5f, 0x29, - 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x77, 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x30, - 0x2c, 0x20, 0x78, 0x29, 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x49, 0x6e, - 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x57, 0x46, 0x3a, 0x3a, - 0x28, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, - 0x70, 0x57, 0x46, 0x20, 0x76, 0x20, 0x70, 0x74, 0x20, 0x6c, 0x66, 0x74, - 0x20, 0x6c, 0x6d, 0x74, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x77, 0x2c, - 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x69, 0x6c, 0x28, 0x66, - 0x29, 0x3a, 0x3a, 0x6c, 0x66, 0x74, 0x2c, 0x20, 0x74, 0x75, 0x70, 0x6c, - 0x65, 0x54, 0x61, 0x69, 0x6c, 0x28, 0x64, 0x6d, 0x29, 0x3a, 0x3a, 0x6c, - 0x6d, 0x74, 0x29, 0x3b, 0x20, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, 0x61, - 0x6b, 0x65, 0x64, 0x20, 0x73, 0x75, 0x6d, 0x73, 0x20, 0x61, 0x67, 0x61, - 0x69, 0x6e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x20, 0x28, 0x55, 0x43, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x6e, 0x74, 0x20, 0x76, 0x20, 0x65, 0x20, 0x70, 0x2c, - 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x65, 0x20, 0x65, - 0x73, 0x6d, 0x20, 0x65, 0x64, 0x6d, 0x2c, 0x20, 0x55, 0x43, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x20, 0x70, 0x20, 0x70, 0x73, 0x6d, 0x20, 0x70, 0x64, - 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x20, 0x76, 0x20, 0x28, 0x65, 0x73, 0x6d, 0x2a, 0x70, 0x73, 0x6d, - 0x29, 0x20, 0x28, 0x65, 0x64, 0x6d, 0x2a, 0x70, 0x64, 0x6d, 0x29, 0x20, - 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x20, 0x77, 0x20, 0x64, 0x6d, 0x20, 0x76, 0x20, 0x3d, - 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x28, 0x77, 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x30, 0x2c, 0x20, 0x28, - 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x76, - 0x29, 0x3a, 0x3a, 0x7b, 0x78, 0x3a, 0x65, 0x7d, 0x29, 0x2e, 0x78, 0x29, - 0x3b, 0x20, 0x66, 0x3d, 0x6e, 0x65, 0x77, 0x50, 0x72, 0x69, 0x6d, 0x28, - 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, - 0x72, 0x41, 0x70, 0x70, 0x57, 0x46, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x49, + 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x57, 0x46, 0x20, 0x3a, 0x3a, + 0x20, 0x28, 0x3c, 0x68, 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, 0x55, 0x43, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x3e, 0x2c, 0x20, 0x66, 0x2c, 0x20, + 0x6d, 0x29, 0x20, 0x2d, 0x3e, 0x20, 0x28, 0x29, 0x0a, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, + 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x57, 0x46, 0x20, 0x5f, 0x20, 0x28, + 0x29, 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, + 0x20, 0x20, 0x75, 0x63, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, + 0x70, 0x70, 0x57, 0x46, 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x5f, 0x20, 0x3d, + 0x20, 0x28, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x20, 0x28, 0x70, 0x3d, 0x28, 0x68, 0x2a, 0x70, 0x74, 0x29, 0x2c, 0x20, + 0x66, 0x3d, 0x7b, 0x5f, 0x2a, 0x66, 0x74, 0x7d, 0x2c, 0x20, 0x6d, 0x3d, + 0x28, 0x68, 0x6d, 0x2a, 0x6d, 0x74, 0x29, 0x2c, 0x20, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x57, 0x46, 0x20, - 0x76, 0x20, 0x70, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x29, - 0x28, 0x77, 0x2c, 0x20, 0x66, 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x31, 0x29, - 0x3b, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x61, 0x72, - 0x69, 0x61, 0x6e, 0x74, 0x41, 0x70, 0x70, 0x28, 0x76, 0x2c, 0x20, 0x66, - 0x29, 0x20, 0x7d, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x63, 0x6f, 0x6d, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x69, 0x61, 0x73, - 0x65, 0x64, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x0a, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x73, 0x20, 0x64, 0x29, - 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x74, 0x40, 0x3f, 0x20, 0x73, 0x20, 0x64, 0x20, 0x77, 0x68, 0x65, 0x72, - 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x41, 0x6c, 0x6c, - 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x3a, 0x3a, 0x20, 0x28, + 0x76, 0x20, 0x70, 0x74, 0x20, 0x66, 0x74, 0x20, 0x6d, 0x74, 0x29, 0x20, + 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, + 0x41, 0x70, 0x70, 0x57, 0x46, 0x20, 0x76, 0x20, 0x70, 0x20, 0x66, 0x20, + 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, + 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x57, 0x46, + 0x20, 0x77, 0x20, 0x66, 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x64, 0x6f, + 0x20, 0x7b, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x48, 0x65, 0x61, + 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x28, 0x66, 0x29, 0x20, 0x3c, 0x2d, + 0x20, 0x28, 0x5c, 0x78, 0x2e, 0x28, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, + 0x68, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x77, + 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x30, 0x2c, 0x20, 0x78, 0x29, 0x29, 0x3b, + 0x20, 0x28, 0x75, 0x63, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, + 0x70, 0x70, 0x57, 0x46, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x49, 0x6e, 0x69, + 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x57, 0x46, 0x20, 0x76, 0x20, + 0x70, 0x74, 0x20, 0x6c, 0x66, 0x74, 0x20, 0x6c, 0x6d, 0x74, 0x29, 0x3d, + 0x3e, 0x5f, 0x29, 0x28, 0x77, 0x2c, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x54, 0x61, 0x69, 0x6c, 0x28, 0x66, 0x29, 0x3a, 0x3a, 0x6c, 0x66, + 0x74, 0x2c, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x69, 0x6c, + 0x28, 0x64, 0x6d, 0x29, 0x3a, 0x3a, 0x6c, 0x6d, 0x74, 0x29, 0x3b, 0x20, + 0x7d, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, + 0x70, 0x3d, 0x28, 0x68, 0x2a, 0x70, 0x74, 0x29, 0x2c, 0x20, 0x66, 0x3d, + 0x28, 0x5f, 0x2a, 0x66, 0x74, 0x29, 0x2c, 0x20, 0x6d, 0x3d, 0x28, 0x68, + 0x6d, 0x2a, 0x6d, 0x74, 0x29, 0x2c, 0x20, 0x55, 0x43, 0x49, 0x6e, 0x69, + 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x57, 0x46, 0x20, 0x76, 0x20, + 0x70, 0x74, 0x20, 0x66, 0x74, 0x20, 0x6d, 0x74, 0x29, 0x20, 0x3d, 0x3e, + 0x20, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, + 0x70, 0x57, 0x46, 0x20, 0x76, 0x20, 0x70, 0x20, 0x66, 0x20, 0x6d, 0x20, + 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x49, 0x6e, + 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x57, 0x46, 0x20, 0x77, + 0x20, 0x66, 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, + 0x20, 0x66, 0x2e, 0x30, 0x20, 0x3c, 0x2d, 0x20, 0x28, 0x5c, 0x78, 0x2e, + 0x28, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x3a, 0x28, 0x55, + 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x68, 0x20, 0x5f, 0x20, 0x5f, + 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x77, 0x2c, 0x20, 0x64, 0x6d, 0x2e, + 0x30, 0x2c, 0x20, 0x78, 0x29, 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x49, + 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x57, 0x46, 0x3a, + 0x3a, 0x28, 0x55, 0x43, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, + 0x70, 0x70, 0x57, 0x46, 0x20, 0x76, 0x20, 0x70, 0x74, 0x20, 0x6c, 0x66, + 0x74, 0x20, 0x6c, 0x6d, 0x74, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x77, + 0x2c, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x69, 0x6c, 0x28, + 0x66, 0x29, 0x3a, 0x3a, 0x6c, 0x66, 0x74, 0x2c, 0x20, 0x74, 0x75, 0x70, + 0x6c, 0x65, 0x54, 0x61, 0x69, 0x6c, 0x28, 0x64, 0x6d, 0x29, 0x3a, 0x3a, + 0x6c, 0x6d, 0x74, 0x29, 0x3b, 0x20, 0x7d, 0x20, 0x2f, 0x2f, 0x20, 0x6e, + 0x61, 0x6b, 0x65, 0x64, 0x20, 0x73, 0x75, 0x6d, 0x73, 0x20, 0x61, 0x67, + 0x61, 0x69, 0x6e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x28, 0x55, 0x43, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x20, 0x76, 0x20, 0x65, 0x20, 0x70, + 0x2c, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x65, 0x20, + 0x65, 0x73, 0x6d, 0x20, 0x65, 0x64, 0x6d, 0x2c, 0x20, 0x55, 0x43, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x70, 0x20, 0x70, 0x73, 0x6d, 0x20, 0x70, + 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x57, 0x72, 0x69, + 0x74, 0x65, 0x20, 0x76, 0x20, 0x28, 0x65, 0x73, 0x6d, 0x2a, 0x70, 0x73, + 0x6d, 0x29, 0x20, 0x28, 0x65, 0x64, 0x6d, 0x2a, 0x70, 0x64, 0x6d, 0x29, + 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x20, 0x77, 0x20, 0x64, 0x6d, 0x20, 0x76, 0x20, + 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x75, 0x63, 0x57, 0x72, 0x69, + 0x74, 0x65, 0x28, 0x77, 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x30, 0x2c, 0x20, + 0x28, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, + 0x76, 0x29, 0x3a, 0x3a, 0x7b, 0x78, 0x3a, 0x65, 0x7d, 0x29, 0x2e, 0x78, + 0x29, 0x3b, 0x20, 0x66, 0x3d, 0x6e, 0x65, 0x77, 0x50, 0x72, 0x69, 0x6d, + 0x28, 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, 0x49, 0x6e, 0x69, 0x74, 0x56, + 0x61, 0x72, 0x41, 0x70, 0x70, 0x57, 0x46, 0x3a, 0x3a, 0x28, 0x55, 0x43, + 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x72, 0x41, 0x70, 0x70, 0x57, 0x46, + 0x20, 0x76, 0x20, 0x70, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, + 0x29, 0x28, 0x77, 0x2c, 0x20, 0x66, 0x2c, 0x20, 0x64, 0x6d, 0x2e, 0x31, + 0x29, 0x3b, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x61, + 0x72, 0x69, 0x61, 0x6e, 0x74, 0x41, 0x70, 0x70, 0x28, 0x76, 0x2c, 0x20, + 0x66, 0x29, 0x20, 0x7d, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x63, 0x6f, 0x6d, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x69, 0x61, + 0x73, 0x65, 0x64, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x0a, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x73, 0x20, 0x64, + 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x20, 0x74, 0x40, 0x3f, 0x20, 0x73, 0x20, 0x64, 0x20, 0x77, 0x68, 0x65, + 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x41, 0x6c, + 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x3a, 0x3a, 0x20, + 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6c, 0x6f, 0x6e, + 0x67, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x0a, 0x20, 0x20, + 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, + 0x3d, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, + 0x3e, 0x5f, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, + 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x75, 0x63, + 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, + 0x5f, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, - 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x0a, 0x20, 0x20, 0x75, - 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x3d, - 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x20, 0x73, 0x20, 0x64, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x40, 0x66, 0x20, 0x73, 0x20, 0x64, + 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x41, + 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x3d, 0x20, + 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, - 0x5f, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, - 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x44, + 0x5f, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, + 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, - 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, - 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, - 0x73, 0x20, 0x64, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x20, 0x74, 0x40, 0x66, 0x20, 0x73, 0x20, 0x64, 0x20, - 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x41, 0x6c, - 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x75, - 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, - 0x0a, 0x20, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, + 0x3d, 0x20, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, 0x20, - 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x44, 0x65, - 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x3d, - 0x20, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, 0x20, 0x5f, - 0x29, 0x3d, 0x3e, 0x5f, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x20, 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x6c, 0x6f, - 0x6e, 0x67, 0x20, 0x73, 0x20, 0x64, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, - 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x40, 0x3f, 0x20, 0x73, 0x20, - 0x64, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, - 0x52, 0x65, 0x61, 0x64, 0x20, 0x72, 0x20, 0x64, 0x20, 0x3d, 0x20, 0x75, - 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x28, 0x75, - 0x63, 0x52, 0x65, 0x61, 0x64, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x52, 0x65, - 0x61, 0x64, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, 0x20, 0x5f, 0x29, - 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x72, 0x2c, 0x64, 0x29, 0x29, 0x0a, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x52, - 0x65, 0x61, 0x64, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x73, 0x20, 0x64, - 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, - 0x74, 0x40, 0x66, 0x20, 0x73, 0x20, 0x64, 0x20, 0x77, 0x68, 0x65, 0x72, - 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x20, 0x72, - 0x20, 0x64, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, - 0x61, 0x73, 0x74, 0x28, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x3a, - 0x3a, 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x6c, 0x6f, 0x6e, - 0x67, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x72, - 0x2c, 0x64, 0x29, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x20, 0x28, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x6c, + 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x73, 0x20, 0x64, 0x29, 0x20, 0x3d, 0x3e, 0x20, - 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x40, 0x3f, 0x20, - 0x73, 0x20, 0x64, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, - 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x77, 0x20, 0x64, 0x6d, - 0x20, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, - 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, - 0x29, 0x28, 0x77, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x75, 0x6e, 0x73, - 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x78, 0x29, 0x3a, 0x3a, - 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x40, 0x3f, 0x20, 0x73, + 0x20, 0x64, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, + 0x63, 0x52, 0x65, 0x61, 0x64, 0x20, 0x72, 0x20, 0x64, 0x20, 0x3d, 0x20, + 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x28, + 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x52, + 0x65, 0x61, 0x64, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, 0x20, 0x5f, + 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x72, 0x2c, 0x64, 0x29, 0x29, 0x0a, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, + 0x52, 0x65, 0x61, 0x64, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x73, 0x20, + 0x64, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, + 0x20, 0x74, 0x40, 0x66, 0x20, 0x73, 0x20, 0x64, 0x20, 0x77, 0x68, 0x65, + 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x20, + 0x72, 0x20, 0x64, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, + 0x43, 0x61, 0x73, 0x74, 0x28, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, + 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x6c, 0x6f, + 0x6e, 0x67, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, + 0x72, 0x2c, 0x64, 0x29, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x73, 0x20, 0x64, 0x29, 0x20, 0x3d, 0x3e, - 0x20, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x40, 0x66, + 0x20, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x40, 0x3f, 0x20, 0x73, 0x20, 0x64, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x77, 0x20, 0x64, 0x6d, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x63, 0x57, 0x72, 0x69, @@ -11559,372 +11679,384 @@ unsigned char __zstorage_hob[] = { 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x77, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x78, 0x29, 0x3a, - 0x3a, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x44, 0x61, 0x74, 0x61, 0x20, 0x64, - 0x20, 0x74, 0x2c, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, - 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x64, 0x20, 0x73, 0x6d, - 0x20, 0x64, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, - 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x20, 0x3d, 0x20, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, - 0x5f, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x5f, 0x20, 0x5f, 0x29, - 0x3d, 0x3e, 0x5f, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, - 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x75, - 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x20, 0x74, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x0a, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x44, 0x61, - 0x74, 0x61, 0x20, 0x64, 0x20, 0x74, 0x2c, 0x20, 0x55, 0x43, 0x52, 0x65, - 0x61, 0x64, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x20, - 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x64, 0x20, - 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, - 0x20, 0x20, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x20, 0x72, 0x20, 0x64, - 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, - 0x74, 0x28, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x3a, 0x3a, 0x28, - 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, 0x5f, 0x20, 0x5f, - 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x72, 0x2c, 0x64, 0x29, 0x29, 0x0a, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x44, 0x61, - 0x74, 0x61, 0x20, 0x64, 0x20, 0x74, 0x2c, 0x20, 0x55, 0x43, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, - 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, - 0x64, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, - 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, - 0x77, 0x20, 0x64, 0x6d, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x63, - 0x57, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x20, 0x74, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, - 0x5f, 0x29, 0x28, 0x77, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x75, 0x6e, - 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x78, 0x29, 0x3a, - 0x3a, 0x74, 0x29, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x61, 0x6e, 0x20, 0x61, - 0x72, 0x72, 0x61, 0x79, 0x20, 0x76, 0x69, 0x65, 0x77, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x73, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x0a, 0x75, 0x63, 0x52, 0x6f, 0x6f, - 0x74, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x53, 0x74, 0x65, 0x70, 0x20, 0x3a, - 0x3a, 0x20, 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, - 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x28, 0x3c, - 0x68, 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, 0x55, 0x43, 0x52, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x3e, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x6c, 0x6f, - 0x6e, 0x67, 0x2c, 0x20, 0x5b, 0x74, 0x5d, 0x2c, 0x20, 0x6c, 0x6f, 0x6e, - 0x67, 0x29, 0x20, 0x2d, 0x3e, 0x20, 0x5b, 0x74, 0x5d, 0x0a, 0x75, 0x63, - 0x52, 0x6f, 0x6f, 0x74, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x53, 0x74, 0x65, - 0x70, 0x20, 0x72, 0x20, 0x64, 0x6d, 0x20, 0x6e, 0x20, 0x78, 0x20, 0x69, - 0x20, 0x3d, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x75, 0x63, 0x52, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x4f, 0x46, 0x28, 0x72, 0x29, 0x20, - 0x6f, 0x72, 0x20, 0x69, 0x20, 0x3d, 0x3d, 0x20, 0x6e, 0x29, 0x20, 0x74, - 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x20, 0x7b, - 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x53, 0x65, 0x74, 0x4c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x28, 0x78, 0x2c, 0x20, 0x69, 0x29, 0x3b, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x78, 0x3a, 0x3a, 0x5b, - 0x74, 0x5d, 0x29, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x78, 0x5b, 0x69, 0x5d, 0x20, 0x3c, 0x2d, 0x20, - 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, - 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x53, 0x74, 0x65, - 0x70, 0x28, 0x72, 0x29, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x75, 0x63, 0x50, 0x72, - 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x6f, 0x70, 0x3a, 0x3a, - 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x6f, 0x70, 0x20, - 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x28, 0x5f, - 0x2c, 0x64, 0x6d, 0x29, 0x2d, 0x3e, 0x28, 0x29, 0x29, 0x28, 0x72, 0x2c, - 0x20, 0x64, 0x6d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, - 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x75, 0x63, 0x52, 0x6f, 0x6f, 0x74, 0x54, - 0x61, 0x6b, 0x65, 0x4e, 0x53, 0x74, 0x65, 0x70, 0x28, 0x72, 0x2c, 0x20, - 0x64, 0x6d, 0x2c, 0x20, 0x6e, 0x2c, 0x20, 0x78, 0x2c, 0x20, 0x69, 0x2b, - 0x31, 0x4c, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7b, 0x2d, - 0x23, 0x20, 0x55, 0x4e, 0x53, 0x41, 0x46, 0x45, 0x20, 0x75, 0x63, 0x52, - 0x6f, 0x6f, 0x74, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x20, 0x23, 0x2d, 0x7d, - 0x0a, 0x0a, 0x75, 0x63, 0x52, 0x6f, 0x6f, 0x74, 0x54, 0x61, 0x6b, 0x65, - 0x4e, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, + 0x3a, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x73, 0x20, 0x64, 0x29, 0x20, 0x3d, + 0x3e, 0x20, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x40, + 0x66, 0x20, 0x73, 0x20, 0x64, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, + 0x20, 0x20, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x77, 0x20, + 0x64, 0x6d, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x63, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, + 0x3e, 0x5f, 0x29, 0x28, 0x77, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x75, + 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x78, 0x29, + 0x3a, 0x3a, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x0a, 0x0a, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x44, 0x61, 0x74, 0x61, 0x20, + 0x64, 0x20, 0x74, 0x2c, 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, - 0x20, 0x28, 0x3c, 0x68, 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, 0x55, 0x43, - 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3e, 0x2c, 0x20, 0x64, 0x6d, 0x2c, - 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x20, 0x2d, 0x3e, 0x20, 0x5b, 0x74, - 0x5d, 0x0a, 0x75, 0x63, 0x52, 0x6f, 0x6f, 0x74, 0x54, 0x61, 0x6b, 0x65, - 0x4e, 0x20, 0x72, 0x20, 0x64, 0x6d, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x69, - 0x66, 0x20, 0x28, 0x6e, 0x3d, 0x3d, 0x30, 0x29, 0x20, 0x74, 0x68, 0x65, - 0x6e, 0x20, 0x5b, 0x5d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x75, 0x63, - 0x52, 0x6f, 0x6f, 0x74, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x53, 0x74, 0x65, - 0x70, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x6e, 0x2c, 0x20, - 0x6e, 0x65, 0x77, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x6e, 0x29, 0x2c, - 0x20, 0x30, 0x4c, 0x29, 0x0a, 0x0a, 0x75, 0x63, 0x52, 0x6f, 0x6f, 0x74, - 0x44, 0x72, 0x6f, 0x70, 0x4e, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, - 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, - 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x28, 0x3c, 0x68, 0x6f, 0x62, 0x62, 0x65, - 0x73, 0x2e, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3e, 0x2c, - 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x20, 0x2d, - 0x3e, 0x20, 0x5b, 0x74, 0x5d, 0x0a, 0x75, 0x63, 0x52, 0x6f, 0x6f, 0x74, - 0x44, 0x72, 0x6f, 0x70, 0x4e, 0x20, 0x72, 0x20, 0x64, 0x6d, 0x20, 0x6e, - 0x20, 0x3d, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x75, 0x63, 0x52, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x4f, 0x46, 0x28, 0x72, 0x29, 0x20, - 0x6f, 0x72, 0x20, 0x6e, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x74, - 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x5b, 0x5d, 0x3a, - 0x3a, 0x5b, 0x74, 0x5d, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, - 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x63, - 0x52, 0x65, 0x61, 0x64, 0x28, 0x72, 0x2c, 0x64, 0x6d, 0x29, 0x3a, 0x3a, - 0x74, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x75, - 0x63, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x53, 0x74, 0x65, 0x70, 0x28, - 0x72, 0x29, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x28, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x54, 0x6f, 0x70, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x6f, 0x70, 0x20, 0x74, 0x20, 0x73, 0x6d, - 0x20, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x64, 0x6d, 0x29, - 0x2d, 0x3e, 0x28, 0x29, 0x29, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x29, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x75, 0x63, 0x52, 0x6f, 0x6f, - 0x74, 0x44, 0x72, 0x6f, 0x70, 0x4e, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, - 0x2c, 0x20, 0x6e, 0x2d, 0x31, 0x4c, 0x29, 0x0a, 0x20, 0x20, 0x7d, 0x0a, - 0x0a, 0x63, 0x73, 0x65, 0x71, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x20, 0x3a, - 0x3a, 0x20, 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, - 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x28, 0x28, - 0x66, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x29, 0x20, 0x28, 0x29, 0x29, 0x2c, - 0x20, 0x28, 0x63, 0x73, 0x65, 0x71, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, - 0x6e, 0x29, 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x20, 0x2d, 0x3e, - 0x20, 0x5b, 0x74, 0x5d, 0x0a, 0x63, 0x73, 0x65, 0x71, 0x54, 0x61, 0x6b, - 0x65, 0x4e, 0x20, 0x66, 0x20, 0x73, 0x20, 0x6b, 0x20, 0x3d, 0x20, 0x64, - 0x6f, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x72, 0x20, 0x20, 0x3d, 0x20, 0x75, - 0x63, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x6b, 0x65, 0x28, - 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x66, - 0x29, 0x2c, 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, - 0x74, 0x28, 0x73, 0x29, 0x2c, 0x20, 0x63, 0x73, 0x65, 0x71, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x28, 0x73, 0x29, 0x29, 0x3b, - 0x0a, 0x20, 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x63, 0x41, - 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, - 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x73, 0x6d, - 0x20, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x75, 0x6e, 0x73, - 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x66, 0x29, 0x2c, 0x74, - 0x72, 0x75, 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x28, 0x75, 0x63, 0x50, + 0x20, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x64, 0x20, 0x73, + 0x6d, 0x20, 0x64, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, + 0x20, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, + 0x3e, 0x5f, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x50, 0x72, 0x65, + 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, + 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x5f, 0x20, 0x5f, + 0x29, 0x3d, 0x3e, 0x5f, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x44, 0x65, 0x61, + 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x3d, 0x20, + 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x20, 0x74, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, + 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x44, + 0x61, 0x74, 0x61, 0x20, 0x64, 0x20, 0x74, 0x2c, 0x20, 0x55, 0x43, 0x52, + 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, + 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x64, + 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, + 0x0a, 0x20, 0x20, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x20, 0x72, 0x20, + 0x64, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, + 0x73, 0x74, 0x28, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x3a, 0x3a, + 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, 0x5f, 0x20, + 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x72, 0x2c, 0x64, 0x29, 0x29, + 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x44, + 0x61, 0x74, 0x61, 0x20, 0x64, 0x20, 0x74, 0x2c, 0x20, 0x55, 0x43, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, + 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x20, 0x64, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x20, 0x77, 0x68, 0x65, + 0x72, 0x65, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x20, 0x77, 0x20, 0x64, 0x6d, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x75, + 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x3d, + 0x3e, 0x5f, 0x29, 0x28, 0x77, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x75, + 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x78, 0x29, + 0x3a, 0x3a, 0x74, 0x29, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x61, 0x6e, 0x20, + 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x76, 0x69, 0x65, 0x77, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x73, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x0a, 0x75, 0x63, 0x52, 0x6f, + 0x6f, 0x74, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x53, 0x74, 0x65, 0x70, 0x20, + 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, + 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x28, + 0x3c, 0x68, 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, 0x55, 0x43, 0x52, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x3e, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x6c, + 0x6f, 0x6e, 0x67, 0x2c, 0x20, 0x5b, 0x74, 0x5d, 0x2c, 0x20, 0x6c, 0x6f, + 0x6e, 0x67, 0x29, 0x20, 0x2d, 0x3e, 0x20, 0x5b, 0x74, 0x5d, 0x0a, 0x75, + 0x63, 0x52, 0x6f, 0x6f, 0x74, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x53, 0x74, + 0x65, 0x70, 0x20, 0x72, 0x20, 0x64, 0x6d, 0x20, 0x6e, 0x20, 0x78, 0x20, + 0x69, 0x20, 0x3d, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x75, 0x63, + 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x4f, 0x46, 0x28, 0x72, 0x29, + 0x20, 0x6f, 0x72, 0x20, 0x69, 0x20, 0x3d, 0x3d, 0x20, 0x6e, 0x29, 0x20, + 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x20, + 0x7b, 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x53, 0x65, 0x74, 0x4c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x28, 0x78, 0x2c, 0x20, 0x69, 0x29, 0x3b, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x78, 0x3a, 0x3a, + 0x5b, 0x74, 0x5d, 0x29, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x73, + 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x78, 0x5b, 0x69, 0x5d, 0x20, 0x3c, 0x2d, + 0x20, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x28, 0x72, 0x2c, 0x20, 0x64, + 0x6d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, + 0x20, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x53, 0x74, + 0x65, 0x70, 0x28, 0x72, 0x29, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x6f, 0x70, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x6f, 0x70, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x64, 0x6d, 0x29, 0x2d, 0x3e, 0x28, 0x29, 0x29, 0x28, 0x72, - 0x2c, 0x20, 0x64, 0x6d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x78, 0x20, 0x20, - 0x3d, 0x20, 0x28, 0x75, 0x63, 0x52, 0x6f, 0x6f, 0x74, 0x54, 0x61, 0x6b, - 0x65, 0x4e, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, - 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x28, 0x5f, - 0x2c, 0x64, 0x6d, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, 0x5b, 0x74, 0x5d, 0x29, - 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x6b, 0x29, 0x3b, 0x0a, + 0x2c, 0x20, 0x64, 0x6d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x75, 0x63, 0x52, 0x6f, 0x6f, 0x74, + 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x53, 0x74, 0x65, 0x70, 0x28, 0x72, 0x2c, + 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x6e, 0x2c, 0x20, 0x78, 0x2c, 0x20, 0x69, + 0x2b, 0x31, 0x4c, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7b, + 0x2d, 0x23, 0x20, 0x55, 0x4e, 0x53, 0x41, 0x46, 0x45, 0x20, 0x75, 0x63, + 0x52, 0x6f, 0x6f, 0x74, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x20, 0x23, 0x2d, + 0x7d, 0x0a, 0x0a, 0x75, 0x63, 0x52, 0x6f, 0x6f, 0x74, 0x54, 0x61, 0x6b, + 0x65, 0x4e, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, + 0x64, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x20, 0x3d, + 0x3e, 0x20, 0x28, 0x3c, 0x68, 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, 0x55, + 0x43, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3e, 0x2c, 0x20, 0x64, 0x6d, + 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x20, 0x2d, 0x3e, 0x20, 0x5b, + 0x74, 0x5d, 0x0a, 0x75, 0x63, 0x52, 0x6f, 0x6f, 0x74, 0x54, 0x61, 0x6b, + 0x65, 0x4e, 0x20, 0x72, 0x20, 0x64, 0x6d, 0x20, 0x6e, 0x20, 0x3d, 0x20, + 0x69, 0x66, 0x20, 0x28, 0x6e, 0x3d, 0x3d, 0x30, 0x29, 0x20, 0x74, 0x68, + 0x65, 0x6e, 0x20, 0x5b, 0x5d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x75, + 0x63, 0x52, 0x6f, 0x6f, 0x74, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x53, 0x74, + 0x65, 0x70, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x6e, 0x2c, + 0x20, 0x6e, 0x65, 0x77, 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x6e, 0x29, + 0x2c, 0x20, 0x30, 0x4c, 0x29, 0x0a, 0x0a, 0x75, 0x63, 0x52, 0x6f, 0x6f, + 0x74, 0x44, 0x72, 0x6f, 0x70, 0x4e, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, + 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, + 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x28, 0x3c, 0x68, 0x6f, 0x62, 0x62, + 0x65, 0x73, 0x2e, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3e, + 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x20, + 0x2d, 0x3e, 0x20, 0x5b, 0x74, 0x5d, 0x0a, 0x75, 0x63, 0x52, 0x6f, 0x6f, + 0x74, 0x44, 0x72, 0x6f, 0x70, 0x4e, 0x20, 0x72, 0x20, 0x64, 0x6d, 0x20, + 0x6e, 0x20, 0x3d, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x75, 0x63, + 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x4f, 0x46, 0x28, 0x72, 0x29, + 0x20, 0x6f, 0x72, 0x20, 0x6e, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x29, 0x20, + 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x5b, 0x5d, + 0x3a, 0x3a, 0x5b, 0x74, 0x5d, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x73, + 0x65, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, + 0x63, 0x52, 0x65, 0x61, 0x64, 0x28, 0x72, 0x2c, 0x64, 0x6d, 0x29, 0x3a, + 0x3a, 0x74, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, + 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x53, 0x74, 0x65, 0x70, + 0x28, 0x72, 0x29, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x28, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x6f, 0x70, 0x3a, 0x3a, 0x28, 0x55, 0x43, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x6f, 0x70, 0x20, 0x74, 0x20, 0x73, + 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x64, 0x6d, + 0x29, 0x2d, 0x3e, 0x28, 0x29, 0x29, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, + 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x75, 0x63, 0x52, 0x6f, + 0x6f, 0x74, 0x44, 0x72, 0x6f, 0x70, 0x4e, 0x28, 0x72, 0x2c, 0x20, 0x64, + 0x6d, 0x2c, 0x20, 0x6e, 0x2d, 0x31, 0x4c, 0x29, 0x0a, 0x20, 0x20, 0x7d, + 0x0a, 0x0a, 0x63, 0x73, 0x65, 0x71, 0x54, 0x61, 0x6b, 0x65, 0x4e, 0x20, + 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, + 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x28, + 0x28, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x29, 0x20, 0x28, 0x29, 0x29, + 0x2c, 0x20, 0x28, 0x63, 0x73, 0x65, 0x71, 0x20, 0x74, 0x20, 0x73, 0x6d, + 0x20, 0x6e, 0x29, 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x20, 0x2d, + 0x3e, 0x20, 0x5b, 0x74, 0x5d, 0x0a, 0x63, 0x73, 0x65, 0x71, 0x54, 0x61, + 0x6b, 0x65, 0x4e, 0x20, 0x66, 0x20, 0x73, 0x20, 0x6b, 0x20, 0x3d, 0x20, + 0x64, 0x6f, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x72, 0x20, 0x20, 0x3d, 0x20, + 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x6b, 0x65, + 0x28, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, + 0x66, 0x29, 0x2c, 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, + 0x73, 0x74, 0x28, 0x73, 0x29, 0x2c, 0x20, 0x63, 0x73, 0x65, 0x71, 0x42, + 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x28, 0x73, 0x29, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x63, + 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, + 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x73, + 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x75, 0x6e, + 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x66, 0x29, 0x2c, + 0x74, 0x72, 0x75, 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x28, 0x75, 0x63, + 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x6f, 0x70, + 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x6f, + 0x70, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x3d, 0x3e, + 0x28, 0x5f, 0x2c, 0x64, 0x6d, 0x29, 0x2d, 0x3e, 0x28, 0x29, 0x29, 0x28, + 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x78, 0x20, + 0x20, 0x3d, 0x20, 0x28, 0x75, 0x63, 0x52, 0x6f, 0x6f, 0x74, 0x54, 0x61, + 0x6b, 0x65, 0x4e, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, + 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x28, + 0x5f, 0x2c, 0x64, 0x6d, 0x2c, 0x5f, 0x29, 0x2d, 0x3e, 0x5b, 0x74, 0x5d, + 0x29, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x6b, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x28, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, + 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, + 0x29, 0x3d, 0x3e, 0x64, 0x6d, 0x2d, 0x3e, 0x28, 0x29, 0x29, 0x28, 0x64, + 0x6d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x28, 0x72, 0x29, + 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x78, 0x0a, 0x7d, 0x0a, 0x0a, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x53, 0x65, 0x65, 0x6b, 0x20, 0x72, 0x20, 0x6e, 0x20, 0x3d, 0x0a, + 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6e, 0x20, 0x3c, 0x3d, 0x20, 0x30, + 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, + 0x72, 0x75, 0x65, 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x53, 0x6b, 0x69, 0x70, 0x50, 0x61, 0x67, 0x65, 0x28, 0x72, 0x29, 0x20, + 0x61, 0x6e, 0x64, 0x20, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x53, 0x65, 0x65, 0x6b, 0x28, 0x72, 0x2c, 0x20, 0x6e, 0x2d, 0x31, 0x29, + 0x29, 0x0a, 0x0a, 0x63, 0x73, 0x65, 0x71, 0x52, 0x65, 0x61, 0x64, 0x46, + 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, + 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, + 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x28, 0x28, 0x66, 0x69, 0x6c, 0x65, 0x20, + 0x28, 0x29, 0x20, 0x28, 0x29, 0x29, 0x2c, 0x20, 0x28, 0x63, 0x73, 0x65, + 0x71, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x6e, 0x29, 0x2c, 0x20, 0x6c, + 0x6f, 0x6e, 0x67, 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x20, 0x2d, + 0x3e, 0x20, 0x5b, 0x74, 0x5d, 0x0a, 0x63, 0x73, 0x65, 0x71, 0x52, 0x65, + 0x61, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x20, 0x66, 0x20, 0x73, + 0x20, 0x69, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x6e, 0x20, 0x20, 0x3d, 0x20, 0x63, 0x73, 0x65, 0x71, 0x42, + 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x28, 0x73, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x72, 0x20, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x52, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x6b, 0x65, 0x28, 0x75, 0x6e, 0x73, + 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x66, 0x29, 0x2c, 0x20, + 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x73, + 0x29, 0x2c, 0x20, 0x6e, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x64, 0x6d, 0x20, + 0x3d, 0x20, 0x28, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x3d, 0x3e, + 0x5f, 0x29, 0x28, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, + 0x74, 0x28, 0x66, 0x29, 0x2c, 0x74, 0x72, 0x75, 0x65, 0x29, 0x3b, 0x0a, + 0x0a, 0x20, 0x20, 0x78, 0x20, 0x3d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x28, 0x6e, 0x6f, 0x74, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x53, 0x65, 0x65, 0x6b, 0x28, 0x72, 0x2c, 0x20, 0x69, + 0x2f, 0x6e, 0x29, 0x29, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x5b, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x65, 0x6c, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x28, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x6f, 0x70, 0x3a, 0x3a, 0x28, 0x55, 0x43, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x6f, 0x70, 0x20, 0x74, 0x20, 0x73, + 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x64, 0x6d, + 0x29, 0x2d, 0x3e, 0x28, 0x29, 0x29, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x63, 0x52, + 0x6f, 0x6f, 0x74, 0x44, 0x72, 0x6f, 0x70, 0x4e, 0x28, 0x72, 0x2c, 0x20, + 0x64, 0x6d, 0x2c, 0x20, 0x69, 0x25, 0x6e, 0x29, 0x3a, 0x3a, 0x5b, 0x74, + 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x20, 0x75, 0x63, 0x52, 0x6f, 0x6f, 0x74, 0x54, 0x61, + 0x6b, 0x65, 0x4e, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x65, + 0x2d, 0x69, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x28, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, - 0x3d, 0x3e, 0x64, 0x6d, 0x2d, 0x3e, 0x28, 0x29, 0x29, 0x28, 0x64, 0x6d, - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x28, 0x72, 0x29, 0x3b, - 0x0a, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x78, - 0x0a, 0x7d, 0x0a, 0x0a, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x53, 0x65, 0x65, 0x6b, 0x20, 0x72, 0x20, 0x6e, 0x20, 0x3d, 0x0a, 0x20, - 0x20, 0x69, 0x66, 0x20, 0x28, 0x6e, 0x20, 0x3c, 0x3d, 0x20, 0x30, 0x29, - 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x72, - 0x75, 0x65, 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x53, - 0x6b, 0x69, 0x70, 0x50, 0x61, 0x67, 0x65, 0x28, 0x72, 0x29, 0x20, 0x61, - 0x6e, 0x64, 0x20, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x53, - 0x65, 0x65, 0x6b, 0x28, 0x72, 0x2c, 0x20, 0x6e, 0x2d, 0x31, 0x29, 0x29, - 0x0a, 0x0a, 0x63, 0x73, 0x65, 0x71, 0x52, 0x65, 0x61, 0x64, 0x46, 0x72, - 0x6f, 0x6d, 0x54, 0x6f, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x55, 0x43, 0x52, - 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, - 0x20, 0x3d, 0x3e, 0x20, 0x28, 0x28, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x28, - 0x29, 0x20, 0x28, 0x29, 0x29, 0x2c, 0x20, 0x28, 0x63, 0x73, 0x65, 0x71, - 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x6e, 0x29, 0x2c, 0x20, 0x6c, 0x6f, - 0x6e, 0x67, 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x20, 0x2d, 0x3e, - 0x20, 0x5b, 0x74, 0x5d, 0x0a, 0x63, 0x73, 0x65, 0x71, 0x52, 0x65, 0x61, - 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x20, 0x66, 0x20, 0x73, 0x20, - 0x69, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x6e, 0x20, 0x20, 0x3d, 0x20, 0x63, 0x73, 0x65, 0x71, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x28, 0x73, 0x29, 0x3b, 0x0a, - 0x20, 0x20, 0x72, 0x20, 0x20, 0x3d, 0x20, 0x75, 0x63, 0x52, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x4d, 0x61, 0x6b, 0x65, 0x28, 0x75, 0x6e, 0x73, 0x61, - 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x66, 0x29, 0x2c, 0x20, 0x75, - 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x73, 0x29, - 0x2c, 0x20, 0x6e, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x64, 0x6d, 0x20, 0x3d, - 0x20, 0x28, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x5f, - 0x29, 0x28, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, - 0x28, 0x66, 0x29, 0x2c, 0x74, 0x72, 0x75, 0x65, 0x29, 0x3b, 0x0a, 0x0a, - 0x20, 0x20, 0x78, 0x20, 0x3d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, - 0x20, 0x28, 0x6e, 0x6f, 0x74, 0x28, 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x53, 0x65, 0x65, 0x6b, 0x28, 0x72, 0x2c, 0x20, 0x69, 0x2f, - 0x6e, 0x29, 0x29, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x5b, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, - 0x6c, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x28, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x54, 0x6f, 0x70, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x6f, 0x70, 0x20, 0x74, 0x20, 0x73, 0x6d, - 0x20, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x28, 0x5f, 0x2c, 0x64, 0x6d, 0x29, - 0x2d, 0x3e, 0x28, 0x29, 0x29, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x63, 0x52, 0x6f, - 0x6f, 0x74, 0x44, 0x72, 0x6f, 0x70, 0x4e, 0x28, 0x72, 0x2c, 0x20, 0x64, - 0x6d, 0x2c, 0x20, 0x69, 0x25, 0x6e, 0x29, 0x3a, 0x3a, 0x5b, 0x74, 0x5d, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x20, 0x75, 0x63, 0x52, 0x6f, 0x6f, 0x74, 0x54, 0x61, 0x6b, - 0x65, 0x4e, 0x28, 0x72, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x65, 0x2d, - 0x69, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b, 0x0a, 0x0a, 0x20, - 0x20, 0x28, 0x75, 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x3d, - 0x3e, 0x5f, 0x29, 0x28, 0x64, 0x6d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x75, - 0x63, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x44, 0x65, 0x73, 0x74, 0x72, - 0x6f, 0x79, 0x28, 0x72, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x78, 0x3a, 0x3a, 0x5b, 0x74, 0x5d, - 0x29, 0x0a, 0x7d, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x43, - 0x53, 0x65, 0x71, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x74, 0x20, - 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x63, 0x73, 0x65, 0x71, - 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x3a, 0x3a, 0x20, 0x74, 0x20, - 0x2d, 0x3e, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x0a, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x20, 0x43, 0x53, 0x65, 0x71, 0x4c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x20, 0x28, 0x63, 0x73, 0x65, 0x71, 0x20, 0x74, 0x20, - 0x73, 0x6d, 0x20, 0x6e, 0x29, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, - 0x20, 0x20, 0x63, 0x73, 0x65, 0x71, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x20, 0x73, 0x20, 0x3d, 0x20, 0x73, 0x75, 0x6d, 0x28, 0x74, 0x6f, 0x41, - 0x72, 0x72, 0x61, 0x79, 0x28, 0x66, 0x6c, 0x4d, 0x61, 0x70, 0x28, 0x5c, - 0x6e, 0x2e, 0x6c, 0x6f, 0x61, 0x64, 0x28, 0x6e, 0x29, 0x2e, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x2c, 0x20, 0x73, 0x2e, 0x74, 0x29, 0x29, 0x29, 0x0a, - 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, - 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, - 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x41, 0x72, 0x72, 0x61, 0x79, 0x20, - 0x28, 0x63, 0x73, 0x65, 0x71, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x6e, - 0x29, 0x20, 0x74, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, - 0x73, 0x69, 0x7a, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x3d, 0x20, 0x63, 0x73, 0x65, 0x71, 0x4c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x28, 0x73, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x20, 0x73, 0x20, 0x69, 0x20, 0x20, 0x20, - 0x3d, 0x20, 0x63, 0x73, 0x65, 0x71, 0x52, 0x65, 0x61, 0x64, 0x46, 0x72, - 0x6f, 0x6d, 0x54, 0x6f, 0x28, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, - 0x61, 0x73, 0x74, 0x28, 0x66, 0x69, 0x6c, 0x65, 0x28, 0x73, 0x2e, 0x74, - 0x29, 0x29, 0x2c, 0x20, 0x73, 0x2c, 0x20, 0x69, 0x2c, 0x20, 0x69, 0x2b, - 0x31, 0x4c, 0x29, 0x5b, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x20, 0x73, 0x20, 0x69, 0x20, 0x3d, 0x20, - 0x6a, 0x75, 0x73, 0x74, 0x28, 0x63, 0x73, 0x65, 0x71, 0x52, 0x65, 0x61, - 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x28, 0x75, 0x6e, 0x73, 0x61, - 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x66, 0x69, 0x6c, 0x65, 0x28, - 0x73, 0x2e, 0x74, 0x29, 0x29, 0x2c, 0x20, 0x73, 0x2c, 0x20, 0x69, 0x2c, - 0x20, 0x69, 0x2b, 0x31, 0x4c, 0x29, 0x5b, 0x30, 0x5d, 0x29, 0x0a, 0x20, - 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x73, 0x20, - 0x69, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x73, 0x65, 0x71, 0x52, 0x65, + 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x64, 0x6d, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x75, 0x63, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x44, 0x65, 0x73, 0x74, + 0x72, 0x6f, 0x79, 0x28, 0x72, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x78, 0x3a, 0x3a, 0x5b, 0x74, + 0x5d, 0x29, 0x0a, 0x7d, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, + 0x43, 0x53, 0x65, 0x71, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x74, + 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x63, 0x73, 0x65, + 0x71, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x3a, 0x3a, 0x20, 0x74, + 0x20, 0x2d, 0x3e, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x0a, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x43, 0x53, 0x65, 0x71, 0x4c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x20, 0x28, 0x63, 0x73, 0x65, 0x71, 0x20, 0x74, + 0x20, 0x73, 0x6d, 0x20, 0x6e, 0x29, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, + 0x0a, 0x20, 0x20, 0x63, 0x73, 0x65, 0x71, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x73, 0x75, 0x6d, 0x28, 0x74, 0x6f, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x28, 0x66, 0x6c, 0x4d, 0x61, 0x70, 0x28, + 0x5c, 0x6e, 0x2e, 0x6c, 0x6f, 0x61, 0x64, 0x28, 0x6e, 0x29, 0x2e, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x2c, 0x20, 0x73, 0x2e, 0x74, 0x29, 0x29, 0x29, + 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, + 0x55, 0x43, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, + 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x41, 0x72, 0x72, 0x61, 0x79, + 0x20, 0x28, 0x63, 0x73, 0x65, 0x71, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, + 0x6e, 0x29, 0x20, 0x74, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, + 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x63, 0x73, 0x65, 0x71, 0x4c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x28, 0x73, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6c, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x20, 0x73, 0x20, 0x69, 0x20, 0x20, + 0x20, 0x3d, 0x20, 0x63, 0x73, 0x65, 0x71, 0x52, 0x65, 0x61, 0x64, 0x46, + 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x28, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, + 0x43, 0x61, 0x73, 0x74, 0x28, 0x66, 0x69, 0x6c, 0x65, 0x28, 0x73, 0x2e, + 0x74, 0x29, 0x29, 0x2c, 0x20, 0x73, 0x2c, 0x20, 0x69, 0x2c, 0x20, 0x69, + 0x2b, 0x31, 0x4c, 0x29, 0x5b, 0x30, 0x5d, 0x0a, 0x20, 0x20, 0x65, 0x6c, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x20, 0x73, 0x20, 0x69, 0x20, 0x3d, + 0x20, 0x6a, 0x75, 0x73, 0x74, 0x28, 0x63, 0x73, 0x65, 0x71, 0x52, 0x65, 0x61, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x28, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x66, 0x69, 0x6c, 0x65, 0x28, 0x73, 0x2e, 0x74, 0x29, 0x29, 0x2c, 0x20, 0x73, 0x2c, 0x20, 0x69, - 0x2c, 0x20, 0x65, 0x29, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x70, 0x75, 0x74, - 0x20, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x20, - 0x6f, 0x66, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x0a, 0x75, 0x63, - 0x52, 0x6f, 0x6f, 0x74, 0x50, 0x75, 0x74, 0x4e, 0x20, 0x3a, 0x3a, 0x20, - 0x28, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x20, 0x73, - 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x28, 0x3c, 0x68, - 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x72, 0x3e, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x5b, 0x74, 0x5d, - 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x20, 0x2d, 0x3e, 0x20, 0x28, - 0x29, 0x0a, 0x75, 0x63, 0x52, 0x6f, 0x6f, 0x74, 0x50, 0x75, 0x74, 0x4e, - 0x20, 0x77, 0x20, 0x64, 0x6d, 0x20, 0x78, 0x73, 0x20, 0x69, 0x20, 0x3d, - 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x20, 0x3d, 0x3d, 0x20, - 0x73, 0x69, 0x7a, 0x65, 0x28, 0x78, 0x73, 0x29, 0x29, 0x20, 0x74, 0x68, - 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x29, 0x0a, 0x20, 0x20, - 0x65, 0x6c, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x28, 0x77, 0x2c, - 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x78, 0x73, 0x5b, 0x69, 0x5d, 0x29, 0x3b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, - 0x72, 0x53, 0x74, 0x65, 0x70, 0x28, 0x77, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x75, 0x63, 0x52, 0x6f, 0x6f, 0x74, 0x50, 0x75, 0x74, 0x4e, - 0x28, 0x77, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x78, 0x73, 0x2c, 0x20, - 0x69, 0x2b, 0x31, 0x4c, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, - 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x43, 0x53, 0x65, 0x71, 0x50, 0x75, - 0x74, 0x20, 0x73, 0x20, 0x74, 0x20, 0x7c, 0x20, 0x73, 0x20, 0x2d, 0x3e, - 0x20, 0x74, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x63, - 0x73, 0x65, 0x71, 0x50, 0x75, 0x74, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x73, - 0x2c, 0x20, 0x5b, 0x74, 0x5d, 0x29, 0x20, 0x2d, 0x3e, 0x20, 0x28, 0x29, - 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, 0x55, - 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, - 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x43, 0x53, 0x65, 0x71, 0x50, - 0x75, 0x74, 0x20, 0x28, 0x63, 0x73, 0x65, 0x71, 0x20, 0x74, 0x20, 0x73, - 0x6d, 0x20, 0x6e, 0x29, 0x20, 0x74, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, - 0x0a, 0x20, 0x20, 0x63, 0x73, 0x65, 0x71, 0x50, 0x75, 0x74, 0x20, 0x73, - 0x20, 0x78, 0x73, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, 0x77, - 0x3d, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x6b, - 0x65, 0x28, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, - 0x28, 0x66, 0x69, 0x6c, 0x65, 0x28, 0x73, 0x2e, 0x74, 0x29, 0x29, 0x2c, - 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, - 0x73, 0x29, 0x2c, 0x20, 0x63, 0x73, 0x65, 0x71, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x53, 0x69, 0x7a, 0x65, 0x28, 0x73, 0x29, 0x2c, 0x20, 0x73, 0x69, - 0x7a, 0x65, 0x4f, 0x66, 0x3a, 0x3a, 0x28, 0x53, 0x69, 0x7a, 0x65, 0x4f, - 0x66, 0x20, 0x73, 0x6d, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x3b, - 0x20, 0x64, 0x6d, 0x3d, 0x28, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, 0x63, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, - 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, - 0x61, 0x73, 0x74, 0x28, 0x66, 0x69, 0x6c, 0x65, 0x28, 0x73, 0x2e, 0x74, - 0x29, 0x29, 0x2c, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x20, 0x28, - 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, - 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, - 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x75, - 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x75, 0x63, - 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x44, - 0x61, 0x74, 0x61, 0x28, 0x77, 0x29, 0x29, 0x3a, 0x3a, 0x73, 0x6d, 0x2c, - 0x20, 0x64, 0x6d, 0x29, 0x3b, 0x20, 0x75, 0x63, 0x52, 0x6f, 0x6f, 0x74, - 0x50, 0x75, 0x74, 0x4e, 0x28, 0x77, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, - 0x78, 0x73, 0x2c, 0x20, 0x30, 0x4c, 0x29, 0x3b, 0x20, 0x28, 0x75, 0x63, - 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x2c, 0x20, 0x69, 0x2b, 0x31, 0x4c, 0x29, 0x5b, 0x30, 0x5d, 0x29, 0x0a, + 0x20, 0x20, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x73, + 0x20, 0x69, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x73, 0x65, 0x71, 0x52, + 0x65, 0x61, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6f, 0x28, 0x75, 0x6e, + 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x66, 0x69, 0x6c, + 0x65, 0x28, 0x73, 0x2e, 0x74, 0x29, 0x29, 0x2c, 0x20, 0x73, 0x2c, 0x20, + 0x69, 0x2c, 0x20, 0x65, 0x29, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x70, 0x75, + 0x74, 0x20, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, + 0x20, 0x6f, 0x66, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x0a, 0x75, + 0x63, 0x52, 0x6f, 0x6f, 0x74, 0x50, 0x75, 0x74, 0x4e, 0x20, 0x3a, 0x3a, + 0x20, 0x28, 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x20, + 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x28, 0x3c, + 0x68, 0x6f, 0x62, 0x62, 0x65, 0x73, 0x2e, 0x55, 0x43, 0x57, 0x72, 0x69, + 0x74, 0x65, 0x72, 0x3e, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x5b, 0x74, + 0x5d, 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x20, 0x2d, 0x3e, 0x20, + 0x28, 0x29, 0x0a, 0x75, 0x63, 0x52, 0x6f, 0x6f, 0x74, 0x50, 0x75, 0x74, + 0x4e, 0x20, 0x77, 0x20, 0x64, 0x6d, 0x20, 0x78, 0x73, 0x20, 0x69, 0x20, + 0x3d, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x69, 0x20, 0x3d, 0x3d, + 0x20, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x78, 0x73, 0x29, 0x29, 0x20, 0x74, + 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x28, 0x29, 0x0a, 0x20, + 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x28, 0x77, + 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x78, 0x73, 0x5b, 0x69, 0x5d, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x72, 0x53, 0x74, 0x65, 0x70, 0x28, 0x77, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x75, 0x63, 0x52, 0x6f, 0x6f, 0x74, 0x50, 0x75, 0x74, + 0x4e, 0x28, 0x77, 0x2c, 0x20, 0x64, 0x6d, 0x2c, 0x20, 0x78, 0x73, 0x2c, + 0x20, 0x69, 0x2b, 0x31, 0x4c, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, + 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x43, 0x53, 0x65, 0x71, 0x50, + 0x75, 0x74, 0x20, 0x73, 0x20, 0x74, 0x20, 0x7c, 0x20, 0x73, 0x20, 0x2d, + 0x3e, 0x20, 0x74, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, + 0x63, 0x73, 0x65, 0x71, 0x50, 0x75, 0x74, 0x20, 0x3a, 0x3a, 0x20, 0x28, + 0x73, 0x2c, 0x20, 0x5b, 0x74, 0x5d, 0x29, 0x20, 0x2d, 0x3e, 0x20, 0x28, + 0x29, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x28, + 0x55, 0x43, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x20, 0x73, 0x6d, + 0x20, 0x64, 0x6d, 0x29, 0x20, 0x3d, 0x3e, 0x20, 0x43, 0x53, 0x65, 0x71, + 0x50, 0x75, 0x74, 0x20, 0x28, 0x63, 0x73, 0x65, 0x71, 0x20, 0x74, 0x20, + 0x73, 0x6d, 0x20, 0x6e, 0x29, 0x20, 0x74, 0x20, 0x77, 0x68, 0x65, 0x72, + 0x65, 0x0a, 0x20, 0x20, 0x63, 0x73, 0x65, 0x71, 0x50, 0x75, 0x74, 0x20, + 0x73, 0x20, 0x78, 0x73, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x20, 0x7b, 0x20, + 0x77, 0x3d, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x4d, 0x61, + 0x6b, 0x65, 0x28, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, + 0x74, 0x28, 0x66, 0x69, 0x6c, 0x65, 0x28, 0x73, 0x2e, 0x74, 0x29, 0x29, + 0x2c, 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, + 0x28, 0x73, 0x29, 0x2c, 0x20, 0x63, 0x73, 0x65, 0x71, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x28, 0x73, 0x29, 0x2c, 0x20, 0x73, + 0x69, 0x7a, 0x65, 0x4f, 0x66, 0x3a, 0x3a, 0x28, 0x53, 0x69, 0x7a, 0x65, + 0x4f, 0x66, 0x20, 0x73, 0x6d, 0x20, 0x5f, 0x29, 0x3d, 0x3e, 0x5f, 0x29, + 0x3b, 0x20, 0x64, 0x6d, 0x3d, 0x28, 0x75, 0x63, 0x41, 0x6c, 0x6c, 0x6f, + 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, + 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, + 0x43, 0x61, 0x73, 0x74, 0x28, 0x66, 0x69, 0x6c, 0x65, 0x28, 0x73, 0x2e, + 0x74, 0x29, 0x29, 0x2c, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x20, + 0x28, 0x75, 0x63, 0x50, 0x72, 0x65, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x5f, 0x29, 0x28, - 0x64, 0x6d, 0x29, 0x3b, 0x20, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, - 0x72, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x28, 0x77, 0x29, 0x3b, - 0x20, 0x7d, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x64, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, - 0x64, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x6f, - 0x66, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, - 0x69, 0x6e, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x0a, 0x69, 0x6e, - 0x69, 0x74, 0x43, 0x53, 0x65, 0x71, 0x20, 0x3a, 0x3a, 0x20, 0x28, 0x28, - 0x66, 0x69, 0x6c, 0x65, 0x20, 0x31, 0x20, 0x5f, 0x29, 0x29, 0x20, 0x2d, - 0x3e, 0x20, 0x28, 0x63, 0x73, 0x65, 0x71, 0x20, 0x74, 0x20, 0x6d, 0x20, - 0x6e, 0x29, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x53, 0x65, 0x71, 0x20, - 0x66, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, - 0x73, 0x74, 0x28, 0x70, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x28, 0x66, 0x2c, - 0x20, 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x28, 0x28, - 0x29, 0x2b, 0x28, 0x6c, 0x6f, 0x6e, 0x67, 0x2a, 0x6c, 0x6f, 0x6e, 0x67, - 0x29, 0x29, 0x29, 0x29, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x62, 0x61, 0x73, - 0x69, 0x63, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x6d, 0x70, - 0x72, 0x65, 0x68, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x73, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x64, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x65, 0x73, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, - 0x53, 0x65, 0x71, 0x44, 0x65, 0x73, 0x63, 0x20, 0x28, 0x63, 0x73, 0x65, - 0x71, 0x20, 0x74, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x20, 0x22, 0x63, 0x73, - 0x65, 0x71, 0x22, 0x20, 0x74, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x20, 0x4d, 0x61, 0x70, 0x20, 0x66, 0x20, 0x63, 0x20, - 0x61, 0x20, 0x72, 0x20, 0x22, 0x63, 0x73, 0x65, 0x71, 0x22, 0x20, 0x28, - 0x63, 0x73, 0x65, 0x71, 0x20, 0x61, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x20, - 0x22, 0x61, 0x72, 0x72, 0x61, 0x79, 0x22, 0x20, 0x5b, 0x72, 0x5d, 0x20, - 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x66, 0x6d, 0x61, 0x70, - 0x20, 0x66, 0x20, 0x78, 0x73, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x70, + 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, 0x61, 0x73, 0x74, 0x28, 0x75, + 0x63, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x44, 0x61, 0x74, 0x61, 0x28, 0x77, 0x29, 0x29, 0x3a, 0x3a, 0x73, 0x6d, + 0x2c, 0x20, 0x64, 0x6d, 0x29, 0x3b, 0x20, 0x75, 0x63, 0x52, 0x6f, 0x6f, + 0x74, 0x50, 0x75, 0x74, 0x4e, 0x28, 0x77, 0x2c, 0x20, 0x64, 0x6d, 0x2c, + 0x20, 0x78, 0x73, 0x2c, 0x20, 0x30, 0x4c, 0x29, 0x3b, 0x20, 0x28, 0x75, + 0x63, 0x44, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x3a, 0x3a, 0x28, 0x55, 0x43, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, + 0x74, 0x20, 0x73, 0x6d, 0x20, 0x64, 0x6d, 0x29, 0x3d, 0x3e, 0x5f, 0x29, + 0x28, 0x64, 0x6d, 0x29, 0x3b, 0x20, 0x75, 0x63, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x72, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x28, 0x77, 0x29, + 0x3b, 0x20, 0x7d, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x69, 0x6e, 0x69, 0x74, + 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x64, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x65, 0x64, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x20, + 0x6f, 0x66, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, + 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x0a, 0x69, + 0x6e, 0x69, 0x74, 0x43, 0x53, 0x65, 0x71, 0x20, 0x3a, 0x3a, 0x20, 0x28, + 0x28, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x31, 0x20, 0x5f, 0x29, 0x29, 0x20, + 0x2d, 0x3e, 0x20, 0x28, 0x63, 0x73, 0x65, 0x71, 0x20, 0x74, 0x20, 0x6d, + 0x20, 0x6e, 0x29, 0x0a, 0x69, 0x6e, 0x69, 0x74, 0x43, 0x53, 0x65, 0x71, + 0x20, 0x66, 0x20, 0x3d, 0x20, 0x75, 0x6e, 0x73, 0x61, 0x66, 0x65, 0x43, + 0x61, 0x73, 0x74, 0x28, 0x70, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x28, 0x66, + 0x2c, 0x20, 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x28, + 0x28, 0x29, 0x2b, 0x28, 0x6c, 0x6f, 0x6e, 0x67, 0x2a, 0x6c, 0x6f, 0x6e, + 0x67, 0x29, 0x29, 0x29, 0x29, 0x0a, 0x0a, 0x2f, 0x2f, 0x20, 0x62, 0x61, + 0x73, 0x69, 0x63, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x6d, + 0x70, 0x72, 0x65, 0x68, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x73, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x65, 0x73, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x20, 0x53, 0x65, 0x71, 0x44, 0x65, 0x73, 0x63, 0x20, 0x28, 0x63, 0x73, + 0x65, 0x71, 0x20, 0x74, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x20, 0x22, 0x63, + 0x73, 0x65, 0x71, 0x22, 0x20, 0x74, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x20, 0x4d, 0x61, 0x70, 0x20, 0x66, 0x20, 0x63, + 0x20, 0x61, 0x20, 0x72, 0x20, 0x22, 0x63, 0x73, 0x65, 0x71, 0x22, 0x20, + 0x28, 0x63, 0x73, 0x65, 0x71, 0x20, 0x61, 0x20, 0x5f, 0x20, 0x5f, 0x29, + 0x20, 0x22, 0x61, 0x72, 0x72, 0x61, 0x79, 0x22, 0x20, 0x5b, 0x72, 0x5d, + 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x66, 0x6d, 0x61, + 0x70, 0x20, 0x66, 0x20, 0x78, 0x73, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, + 0x70, 0x28, 0x66, 0x2c, 0x20, 0x78, 0x73, 0x5b, 0x30, 0x3a, 0x5d, 0x29, + 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x20, 0x70, 0x20, 0x70, 0x63, + 0x20, 0x66, 0x20, 0x63, 0x20, 0x61, 0x20, 0x72, 0x20, 0x22, 0x63, 0x73, + 0x65, 0x71, 0x22, 0x20, 0x28, 0x63, 0x73, 0x65, 0x71, 0x20, 0x61, 0x20, + 0x5f, 0x20, 0x5f, 0x29, 0x20, 0x22, 0x61, 0x72, 0x72, 0x61, 0x79, 0x22, + 0x20, 0x5b, 0x72, 0x5d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, + 0x20, 0x66, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x20, + 0x70, 0x20, 0x66, 0x20, 0x78, 0x73, 0x20, 0x3d, 0x20, 0x66, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x28, 0x70, 0x2c, 0x20, 0x66, + 0x2c, 0x20, 0x78, 0x73, 0x5b, 0x30, 0x3a, 0x5d, 0x29, 0x0a, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x4d, 0x4d, 0x61, 0x70, 0x20, 0x66, 0x20, 0x63, 0x20, 0x61, 0x20, + 0x72, 0x20, 0x22, 0x63, 0x73, 0x65, 0x71, 0x22, 0x20, 0x28, 0x63, 0x73, + 0x65, 0x71, 0x20, 0x61, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x20, 0x22, 0x61, + 0x72, 0x72, 0x61, 0x79, 0x22, 0x20, 0x5b, 0x72, 0x5d, 0x20, 0x77, 0x68, + 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x66, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x4d, 0x4d, 0x61, 0x70, 0x20, 0x66, 0x20, 0x78, 0x73, 0x20, 0x3d, + 0x20, 0x66, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x4d, 0x61, 0x70, 0x28, 0x66, 0x2c, 0x20, 0x78, 0x73, 0x5b, 0x30, 0x3a, 0x5d, 0x29, 0x0a, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x20, 0x70, 0x20, 0x70, 0x63, 0x20, - 0x66, 0x20, 0x63, 0x20, 0x61, 0x20, 0x72, 0x20, 0x22, 0x63, 0x73, 0x65, - 0x71, 0x22, 0x20, 0x28, 0x63, 0x73, 0x65, 0x71, 0x20, 0x61, 0x20, 0x5f, - 0x20, 0x5f, 0x29, 0x20, 0x22, 0x61, 0x72, 0x72, 0x61, 0x79, 0x22, 0x20, - 0x5b, 0x72, 0x5d, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, - 0x66, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x20, 0x70, - 0x20, 0x66, 0x20, 0x78, 0x73, 0x20, 0x3d, 0x20, 0x66, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x28, 0x70, 0x2c, 0x20, 0x66, 0x2c, - 0x20, 0x78, 0x73, 0x5b, 0x30, 0x3a, 0x5d, 0x29, 0x0a, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x4d, 0x4d, 0x61, 0x70, 0x20, 0x66, 0x20, 0x63, 0x20, 0x61, 0x20, 0x72, - 0x20, 0x22, 0x63, 0x73, 0x65, 0x71, 0x22, 0x20, 0x28, 0x63, 0x73, 0x65, - 0x71, 0x20, 0x61, 0x20, 0x5f, 0x20, 0x5f, 0x29, 0x20, 0x22, 0x61, 0x72, - 0x72, 0x61, 0x79, 0x22, 0x20, 0x5b, 0x72, 0x5d, 0x20, 0x77, 0x68, 0x65, - 0x72, 0x65, 0x0a, 0x20, 0x20, 0x66, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x4d, 0x4d, 0x61, 0x70, 0x20, 0x66, 0x20, 0x78, 0x73, 0x20, 0x3d, 0x20, - 0x66, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x4d, 0x61, 0x70, 0x28, - 0x66, 0x2c, 0x20, 0x78, 0x73, 0x5b, 0x30, 0x3a, 0x5d, 0x29, 0x0a, 0x0a + 0x0a }; -unsigned int __zstorage_hob_len = 19272; +unsigned int __zstorage_hob_len = 20845; unsigned char* module_defs[] = { __amapping_hob, __arith_hob, diff --git a/lib/hobbes/boot/zstorage.hob b/lib/hobbes/boot/zstorage.hob index d51502adf..0b31e3c41 100644 --- a/lib/hobbes/boot/zstorage.hob +++ b/lib/hobbes/boot/zstorage.hob @@ -105,6 +105,7 @@ instance UCMSized long 8 instance UCMSized int128 16 instance UCMSized float 4 instance UCMSized double 8 +instance UCMSized bool 1 type pcsmodel n = { pmodels:[:(csmodel 256)|n:] } type pdmodel n = [:|n:] @@ -201,6 +202,11 @@ instance (UCModel t tsm tdm) => UCModel [t] ((pcsmodel 8) * tsm) ((pdmodel 8) * ucPrepModel sm dm = do { (ucPrepModel::(UCModel long _ _)=>(_,_)->_)(sm.0, dm.0); (ucPrepModel::(UCModel t _ _)=>(_,_)->_)(sm.1, dm.1); } ucDeallocModel dm = do { (ucDeallocModel::(UCModel long _ _)=>_->_)(dm.0); (ucDeallocModel::(UCModel t _ _)=>_->_)(dm.1); } +instance (UCModel t tsm tdm) => UCModel [:t|n:] ((pcsmodel 8) * tsm) ((pdmodel 8) * tdm) where + ucAllocModel f input = ((ucAllocModel::(UCModel long _ _)=>_)(f,input), (ucAllocModel::(UCModel t _ _)=>_)(f,input)) + ucPrepModel sm dm = do { (ucPrepModel::(UCModel long _ _)=>(_,_)->_)(sm.0, dm.0); (ucPrepModel::(UCModel t _ _)=>(_,_)->_)(sm.1, dm.1); } + ucDeallocModel dm = do { (ucDeallocModel::(UCModel long _ _)=>_->_)(dm.0); (ucDeallocModel::(UCModel t _ _)=>_->_)(dm.1); } + ucTakeNStep :: (UCRead t sm dm) => (, dm, long, [t], long) -> [t] ucTakeNStep r dm n x i = if (ucReaderEOF(r) or i == n) then @@ -218,6 +224,22 @@ ucTakeN r dm n = ucTakeNStep(r, dm, n, newArray(n), 0L) instance (UCModel t tsm tdm) => UCRead [t] ((pcsmodel 8) * tsm) ((pdmodel 8) * tdm) where ucRead r dm = ucTakeN(r, dm.1, (ucRead::(UCRead long _ _)=>(_,_)->_)(r, dm.0)) +ucFTakeNStep :: (UCRead t sm dm) => (, dm, long, [:t|n:], long) -> [:t|n:] +ucFTakeNStep r dm n x i = + if (ucReaderEOF(r) or i == n) then + x + else + do { + saelem(x, i) <- ucRead(r, dm); + return ucFTakeNStep(r, dm, n, x, i+1L) + } + +ucFTakeN :: (UCRead t sm dm) => (, dm, long) -> [:t|n:] +ucFTakeN r dm n = ucFTakeNStep(r, dm, n, newPrim()::[:t|n:], 0L) + +instance (UCModel t tsm tdm) => UCRead [:t|n:] ((pcsmodel 8) * tsm) ((pdmodel 8) * tdm) where + ucRead r dm = ucFTakeN(r, dm.1, (ucRead::(UCRead long _ _)=>(_,_)->_)(r, dm.0)) + ucPutN :: (UCWrite t sm dm) => (, dm, [t], long, long) -> () ucPutN w m xs i e = if (i == e) then @@ -231,6 +253,20 @@ ucPutN w m xs i e = instance (UCModel t tsm tdm) => UCWrite [t] ((pcsmodel 8) * tsm) ((pdmodel 8) * tdm) where ucWrite w dm x = do { (ucWrite::(UCWrite long _ _)=>(_,_,_)->_)(w, dm.0, length(x)); ucPutN(w, dm.1, x, 0L, length(x)); } +ucFPutN :: (UCWrite t sm dm) => (, dm, [:t|n:], long, long) -> () +ucFPutN w m xs i e = + if (i == e) then + () + else do { + (ucWrite::(UCWrite t sm dm)=>(_,_,_)->_)(w, m, saelem(xs,i)); + ucFPutN(w, m, xs, i+1L, e); + } + +instance (UCModel t tsm tdm) => UCWrite [:t|n:] ((pcsmodel 8) * tsm) ((pdmodel 8) * tdm) where + ucWrite w dm x = do {(ucWrite::(UCWrite long _ _)=>(_,_,_)->_)(w, dm.0, salength(x)); ucFPutN(w, dm.1, x, 0L, salength(x)); } + + + // compression models for enumerations (variants with only unit payloads) class UCMEnumCount t b | t -> b instance UCMEnumCount void () diff --git a/test/Storage.C b/test/Storage.C index 425c9916e..933dfd0ea 100644 --- a/test/Storage.C +++ b/test/Storage.C @@ -111,10 +111,15 @@ TEST(Storage, Create) { } } +typedef char fixarray[8]; + DEFINE_STRUCT(SeriesTest, (int, x), (double, y), - (const array*, z) + (const array*, z), + (bool, b), + (fixarray, v) + ); TEST(Storage, RawSeriesAPI) { @@ -129,6 +134,8 @@ TEST(Storage, RawSeriesAPI) { st.x = i; st.y = 3.14159 * static_cast(i); st.z = makeString("string_" + str::from(i)); + st.b = true; + memcpy(st.v, "12345678", 8); ss(st); } @@ -141,6 +148,9 @@ TEST(Storage, RawSeriesAPI) { st.x = i; st.y = 3.14159 * static_cast(i); st.z = makeString("string_" + str::from(i)); + st.b = true; + memcpy(st.v, "12345678", 8); + ss(st); } EXPECT_TRUE(c().compileFn("[x|{x=x}<-f.series_test][:0] == [0..4]")()); @@ -164,13 +174,16 @@ TEST(Storage, CSeriesAPI) { st.x = i; st.y = 3.14159 * static_cast(i); st.z = makeString("string_" + str::from(i)); + st.b = i % 2 == 0; + memcpy(st.v, st.z->data, 8); ss(st); } hobbes::cc c; c.define("cf", "inputFile :: (LoadFile \"" + fname + "\" w) => w"); EXPECT_TRUE(c.compileFn("[x|{x=x}<-cf.series_test] == [0..999]")()); - + EXPECT_TRUE(c.compileFn("[b|{b=b}<-cf.series_test][:0] == [x%2==0|{x=x}<-cf.series_test][:0]")()); + EXPECT_TRUE(c.compileFn("[v|{v=v}<-cf.series_test][:0] == [z[0:8]|{z=z}<-cf.series_test][:0]")()); unlink(fname.c_str()); } catch (...) { unlink(fname.c_str()); From f0dff6e0d0c38aee704b2cb1812097a24511d009 Mon Sep 17 00:00:00 2001 From: Providence Salumu Date: Tue, 16 Feb 2021 19:20:24 -0500 Subject: [PATCH 2/3] variants: lift variant records (#396) closes #395 --- .github/workflows/build.yml | 2 +- include/hobbes/lang/tylift.H | 27 +++++++++++++++++++++++++++ test/Variants.C | 13 +++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f29de95f4..597783e4e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,5 +1,5 @@ name: "Build" -on: [push, pull_request] +on: [push] jobs: linux-clang-build: runs-on: ${{matrix.os}} diff --git a/include/hobbes/lang/tylift.H b/include/hobbes/lang/tylift.H index 20025bae5..fd2486c8a 100644 --- a/include/hobbes/lang/tylift.H +++ b/include/hobbes/lang/tylift.H @@ -422,6 +422,33 @@ template template struct lift::type> : public liftEnum { }; +// lift variant records +template + struct liftVariantRecord { + struct descF { + Variant::Members* ctors; + typedb* tenv; + descF(Variant::Members* ctors, typedb* tenv) : ctors(ctors), tenv(tenv) { } + + template + void ctor(const char* n, int id) { + this->ctors->push_back(Variant::Member(n, lift::type(*this->tenv), id)); + } + }; + + static MonoTypePtr type(typedb& tenv) { + Variant::Members ms; + descF f(&ms, &tenv); + T::meta(f); + return Variant::make(ms); + } + }; + +template + struct lift::type> : public liftVariantRecord { }; +template + struct lift::type> : public liftVariantRecord { }; + // lift plain tuples template struct liftTuple { diff --git a/test/Variants.C b/test/Variants.C index 632014da9..649375941 100644 --- a/test/Variants.C +++ b/test/Variants.C @@ -102,6 +102,19 @@ TEST(Variants, Enums) { EXPECT_EQ((makeStdString(c().compileFn*(PColor pc)>("x", "show(x)")(PColor::Red()))), "|Red|"); } +DEFINE_VARIANT(Item, + (vehicle, int), + (food, float) +); + +TEST(Variants, VariantRecord) { + Item aVehicle = Item::vehicle(123); + Item aFood = Item::food(321.123); + + EXPECT_EQ((c().compileFn("x", "match x with | |vehicle=v| -> v | |food=_| -> 321")(&aVehicle)), 123); + EXPECT_EQ((c().compileFn("x", "match x with | |vehicle=v| -> v | |food=_| -> 321")(&aFood)), 321); +} + TEST(Variants, WithFunctions) { EXPECT_TRUE(c().compileFn("either((\\|1=f|.f(1L,0L))(just(if (0 > 0) then llt else lgt)), false, id)")()); } From 90c9865cfbfb3c4c08437dcd27bd9a090028ff99 Mon Sep 17 00:00:00 2001 From: Providence Salumu Date: Fri, 19 Feb 2021 18:39:03 -0500 Subject: [PATCH 3/3] series: export core functions for App usage (#397) --- include/hobbes/db/series.H | 11 +++++++++++ lib/hobbes/db/series.C | 10 +++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/include/hobbes/db/series.H b/include/hobbes/db/series.H index 24023d525..48f82acd5 100644 --- a/include/hobbes/db/series.H +++ b/include/hobbes/db/series.H @@ -17,6 +17,17 @@ namespace hobbes { typedef uint64_t ufileref; +// A -> (A) +MonoTypePtr entuple(const MonoTypePtr&); +// A N -> carray A N +MonoTypePtr carrayty(const MonoTypePtr&, const MonoTypePtr&); +// A -> ^x.(()+(A*x@?)) +MonoTypePtr storedListOf(const MonoTypePtr&); +// A N -> fseq A N +MonoTypePtr storedStreamOf(const MonoTypePtr&, size_t); +// A -- StoredAs A B --> B +MonoTypePtr storeAs(cc* c, const MonoTypePtr&); + class RawStoredSeries { public: RawStoredSeries(cc*, writer*, const std::string&, const MonoTypePtr&, size_t); diff --git a/lib/hobbes/db/series.C b/lib/hobbes/db/series.C index 5b2549f7a..382b856f7 100644 --- a/lib/hobbes/db/series.C +++ b/lib/hobbes/db/series.C @@ -154,14 +154,14 @@ void StoredSeries::clear(bool signal) { *******/ // A -> (A) -static MonoTypePtr entuple(const MonoTypePtr& ty) { +MonoTypePtr entuple(const MonoTypePtr& ty) { Record::Members ms; ms.push_back(Record::Member(".f0", ty)); return MonoTypePtr(Record::make(ms)); } // A N -> carray A N -static MonoTypePtr carrayty(const MonoTypePtr& ty, const MonoTypePtr& n) { +MonoTypePtr carrayty(const MonoTypePtr& ty, const MonoTypePtr& n) { Record::Members ms; ms.push_back(Record::Member("avail", primty("long"))); ms.push_back(Record::Member("buffer", FixedArray::make(tvar("t"), tvar("c")))); @@ -169,7 +169,7 @@ static MonoTypePtr carrayty(const MonoTypePtr& ty, const MonoTypePtr& n) { } // A -> ^x.(()+(A*x@?)) -static MonoTypePtr storedListOf(const MonoTypePtr& ty) { +MonoTypePtr storedListOf(const MonoTypePtr& ty) { Record::Members pms; pms.push_back(Record::Member(".f0", ty)); pms.push_back(Record::Member(".f1", fileRefTy(tvar("x")))); @@ -182,12 +182,12 @@ static MonoTypePtr storedListOf(const MonoTypePtr& ty) { } // A N -> fseq A N -static MonoTypePtr storedStreamOf(const MonoTypePtr& ty, size_t n) { +MonoTypePtr storedStreamOf(const MonoTypePtr& ty, size_t n) { return tapp(primty("fseq", tabs(str::strings("t", "c"), fileRefTy(storedListOf(fileRefTy(carrayty(tvar("t"), tvar("c"))))))), list(ty, tlong(n))); } // A -- StoredAs A B --> B -static MonoTypePtr storeAs(cc* c, const MonoTypePtr& ty) { +MonoTypePtr storeAs(cc* c, const MonoTypePtr& ty) { // construct the constraint that the input type stores to some output type MonoTypeUnifier u(c->typeEnv()); MonoTypePtr sty = freshTypeVar();