From 7c0c85a86aa73c0c495523f994f8412e377a8195 Mon Sep 17 00:00:00 2001 From: Pixel Date: Mon, 14 Jun 2010 23:47:31 -0700 Subject: Upgrading im to 3.6 --- im/src/lua5/clua/im_process.clua | 344 ++++++++++++++++++++------------------- im/src/lua5/im_process.lua | 1 + im/src/lua5/imlua_aux.c | 4 +- im/src/lua5/imlua_image.c | 46 +++++- im/src/lua5/imlua_process.c | 41 +++-- 5 files changed, 248 insertions(+), 188 deletions(-) (limited to 'im/src/lua5') diff --git a/im/src/lua5/clua/im_process.clua b/im/src/lua5/clua/im_process.clua index b5274f7..bb91893 100644 --- a/im/src/lua5/clua/im_process.clua +++ b/im/src/lua5/clua/im_process.clua @@ -605,192 +605,194 @@ static const unsigned char B1[] = { 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x42, 0x6c, 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x22, 0x29, 0x0a, 0x54, 0x68, 0x72, 0x65, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x42, 0x6c, 0x65, 0x6e, 0x64, 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x54, 0x77, 0x6f, 0x44, 0x65, 0x73, 0x74, 0x73, 0x28, 0x22, 0x50, 0x72, - 0x6f, 0x63, 0x65, 0x73, 0x73, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, - 0x78, 0x22, 0x29, 0x0a, 0x54, 0x77, 0x6f, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x4f, 0x6e, - 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x65, - 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, - 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x43, - 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x29, 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x69, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, - 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x61, 0x6e, 0x4e, 0x65, 0x77, 0x20, 0x28, 0x73, 0x72, 0x63, 0x5f, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x2c, 0x20, 0x64, 0x73, 0x74, 0x5f, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x64, - 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x69, 0x6d, 0x2e, 0x49, 0x6d, - 0x61, 0x67, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x73, 0x65, 0x64, 0x28, 0x73, - 0x72, 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5b, 0x31, 0x5d, - 0x29, 0x0a, 0x20, 0x20, 0x69, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x75, - 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x61, 0x6e, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x2c, 0x20, 0x64, 0x73, 0x74, 0x5f, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x64, - 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x66, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, - 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x53, 0x74, 0x64, 0x44, 0x65, 0x76, 0x4e, - 0x65, 0x77, 0x20, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, - 0x73, 0x74, 0x2c, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x29, 0x0a, - 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, - 0x65, 0x20, 0x3d, 0x20, 0x69, 0x6d, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x42, 0x61, 0x73, 0x65, 0x64, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, - 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5b, 0x31, 0x5d, 0x29, 0x0a, 0x20, 0x20, 0x69, 0x6d, 0x2e, - 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x53, - 0x74, 0x64, 0x44, 0x65, 0x76, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, - 0x6c, 0x69, 0x73, 0x74, 0x2c, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x2c, 0x20, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x0a, - 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x54, 0x77, 0x6f, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x4f, - 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x41, - 0x75, 0x74, 0x6f, 0x43, 0x6f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x29, 0x0a, - 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, - 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, - 0x79, 0x43, 0x6f, 0x6e, 0x6a, 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, - 0x73, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x65, 0x52, 0x47, 0x42, 0x55, 0x6e, 0x69, 0x66, - 0x6f, 0x72, 0x6d, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, - 0x69, 0x6d, 0x2e, 0x4d, 0x41, 0x50, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x29, 0x0a, 0x4f, 0x6e, 0x65, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, - 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x65, 0x47, 0x72, - 0x61, 0x79, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, - 0x6f, 0x63, 0x65, 0x73, 0x73, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x67, 0x72, 0x61, 0x6d, 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x45, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, - 0x6d, 0x22, 0x29, 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x6d, - 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x59, 0x43, 0x68, - 0x72, 0x6f, 0x6d, 0x61, 0x4e, 0x65, 0x77, 0x20, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x6d, 0x61, - 0x67, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x79, 0x5f, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x69, 0x6d, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x73, 0x65, 0x64, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x69, - 0x6d, 0x2e, 0x47, 0x52, 0x41, 0x59, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x42, 0x59, 0x54, 0x45, 0x29, - 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x61, 0x5f, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x69, 0x6d, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x73, 0x65, 0x64, 0x28, 0x73, 0x72, 0x63, 0x5f, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, - 0x20, 0x69, 0x6d, 0x2e, 0x52, 0x47, 0x42, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x42, 0x59, 0x54, 0x45, - 0x29, 0x0a, 0x20, 0x20, 0x69, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x53, 0x70, - 0x6c, 0x69, 0x74, 0x59, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x61, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x79, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x63, - 0x68, 0x72, 0x6f, 0x6d, 0x61, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x79, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x63, - 0x68, 0x72, 0x6f, 0x6d, 0x61, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x0a, 0x65, 0x6e, 0x64, 0x0a, - 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x68, 0x72, 0x65, 0x65, 0x44, - 0x65, 0x73, 0x74, 0x73, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x53, 0x70, 0x6c, - 0x69, 0x74, 0x48, 0x53, 0x49, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, - 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x47, 0x52, 0x41, 0x59, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x46, 0x4c, - 0x4f, 0x41, 0x54, 0x29, 0x0a, 0x54, 0x68, 0x72, 0x65, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, - 0x73, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x48, 0x53, 0x49, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, - 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x52, 0x47, 0x42, 0x2c, 0x20, 0x69, 0x6d, - 0x2e, 0x42, 0x59, 0x54, 0x45, 0x29, 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x69, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x53, 0x70, 0x6c, 0x69, 0x74, - 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x4e, 0x65, 0x77, 0x20, 0x28, 0x73, - 0x72, 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, - 0x6c, 0x20, 0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x3d, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x3a, 0x44, 0x65, 0x70, 0x74, 0x68, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, - 0x63, 0x61, 0x6c, 0x20, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x20, 0x3d, - 0x20, 0x7b, 0x7d, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x31, 0x2c, - 0x20, 0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x28, 0x64, 0x73, 0x74, 0x5f, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x73, 0x65, 0x64, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, - 0x69, 0x6d, 0x2e, 0x47, 0x52, 0x41, 0x59, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, - 0x20, 0x20, 0x69, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x53, 0x70, 0x6c, 0x69, - 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x28, 0x73, 0x72, 0x63, 0x5f, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x73, 0x29, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x75, 0x6e, 0x70, 0x61, - 0x63, 0x6b, 0x28, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x29, 0x0a, 0x65, - 0x6e, 0x64, 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x6d, 0x2e, - 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x70, - 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x4e, 0x65, 0x77, 0x20, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, + 0x65, 0x73, 0x73, 0x42, 0x6c, 0x65, 0x6e, 0x64, 0x22, 0x29, 0x0a, 0x54, 0x77, 0x6f, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x22, 0x29, 0x0a, 0x4f, + 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x77, 0x6f, 0x44, 0x65, 0x73, 0x74, 0x73, + 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x43, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x22, 0x29, 0x0a, 0x54, 0x77, 0x6f, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, + 0x73, 0x73, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x22, 0x2c, + 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, + 0x69, 0x6d, 0x2e, 0x43, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x29, 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4d, + 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x61, 0x6e, 0x4e, 0x65, 0x77, 0x20, 0x28, + 0x73, 0x72, 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x2c, 0x20, + 0x64, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x69, 0x6d, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x73, 0x65, 0x64, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, 0x73, - 0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, - 0x69, 0x6d, 0x2e, 0x52, 0x47, 0x42, 0x29, 0x0a, 0x20, 0x20, 0x69, 0x6d, 0x2e, 0x50, 0x72, 0x6f, - 0x63, 0x65, 0x73, 0x73, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, - 0x6e, 0x74, 0x73, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, - 0x73, 0x74, 0x2c, 0x20, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x29, 0x0a, 0x20, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, - 0x65, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x74, 0x5b, 0x31, 0x5d, 0x29, 0x0a, 0x20, 0x20, 0x69, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, + 0x73, 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x4d, 0x65, 0x61, 0x6e, 0x28, 0x73, + 0x72, 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x2c, 0x20, 0x64, + 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x0a, 0x65, 0x6e, 0x64, + 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x6d, 0x2e, 0x50, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x53, 0x74, 0x64, + 0x44, 0x65, 0x76, 0x4e, 0x65, 0x77, 0x20, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x2c, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x5f, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x64, 0x73, 0x74, 0x5f, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x69, 0x6d, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x73, 0x65, 0x64, 0x28, 0x73, 0x72, 0x63, 0x5f, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5b, 0x31, 0x5d, 0x29, 0x0a, 0x20, + 0x20, 0x69, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, + 0x70, 0x6c, 0x65, 0x53, 0x74, 0x64, 0x44, 0x65, 0x76, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x2c, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x5f, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x29, + 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x54, 0x77, 0x6f, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, + 0x65, 0x73, 0x73, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x6f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, + 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x70, 0x6c, 0x79, 0x43, 0x6f, 0x6e, 0x6a, 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x7a, 0x65, 0x52, 0x47, 0x42, + 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, + 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x4d, 0x41, 0x50, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x29, + 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, + 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, + 0x7a, 0x65, 0x47, 0x72, 0x61, 0x79, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x29, 0x0a, + 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, + 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, + 0x63, 0x65, 0x73, 0x73, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x22, 0x29, 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x69, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x53, 0x70, 0x6c, 0x69, + 0x74, 0x59, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x61, 0x4e, 0x65, 0x77, 0x20, 0x28, 0x73, 0x72, 0x63, + 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, + 0x79, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x69, 0x6d, 0x2e, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x73, 0x65, 0x64, 0x28, 0x73, 0x72, + 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, + 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x47, 0x52, 0x41, 0x59, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x42, + 0x59, 0x54, 0x45, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, 0x68, 0x72, + 0x6f, 0x6d, 0x61, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x69, 0x6d, 0x2e, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x73, 0x65, 0x64, 0x28, + 0x73, 0x72, 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, + 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x52, 0x47, 0x42, 0x2c, 0x20, 0x69, 0x6d, 0x2e, + 0x42, 0x59, 0x54, 0x45, 0x29, 0x0a, 0x20, 0x20, 0x69, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, + 0x73, 0x73, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x59, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x61, 0x28, 0x73, + 0x72, 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x79, 0x5f, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x2c, 0x20, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x61, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x29, + 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x79, 0x5f, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x2c, 0x20, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x61, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x0a, + 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x68, + 0x72, 0x65, 0x65, 0x44, 0x65, 0x73, 0x74, 0x73, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x48, 0x53, 0x49, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, + 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x47, 0x52, 0x41, 0x59, 0x2c, 0x20, 0x69, + 0x6d, 0x2e, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x29, 0x0a, 0x54, 0x68, 0x72, 0x65, 0x65, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x48, 0x53, 0x49, 0x22, 0x2c, 0x20, + 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x52, 0x47, 0x42, + 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x42, 0x59, 0x54, 0x45, 0x29, 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x53, + 0x70, 0x6c, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x4e, 0x65, + 0x77, 0x20, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x29, 0x0a, 0x20, 0x20, + 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x3d, 0x20, 0x73, 0x72, + 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3a, 0x44, 0x65, 0x70, 0x74, 0x68, 0x28, 0x29, 0x0a, + 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x73, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x0a, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x20, + 0x3d, 0x20, 0x31, 0x2c, 0x20, 0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x28, 0x64, + 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x73, 0x65, 0x64, 0x28, 0x73, + 0x72, 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, + 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x47, 0x52, 0x41, 0x59, 0x29, 0x29, 0x0a, 0x20, 0x20, + 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x69, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x53, 0x70, 0x6c, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x28, + 0x73, 0x72, 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x64, 0x73, 0x74, 0x5f, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x73, 0x29, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x28, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x73, 0x29, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x69, 0x6d, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x65, 0x72, 0x67, 0x65, + 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x4e, 0x65, 0x77, 0x20, 0x28, 0x73, + 0x72, 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x29, 0x0a, 0x20, + 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x20, 0x3d, 0x20, 0x69, 0x6d, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x42, 0x61, 0x73, 0x65, 0x64, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, + 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x52, 0x47, 0x42, 0x29, 0x0a, 0x20, 0x20, 0x69, 0x6d, + 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6d, + 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x28, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x2c, 0x20, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x29, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x64, 0x73, 0x74, 0x5f, + 0x69, 0x6d, 0x61, 0x67, 0x65, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, + 0x63, 0x65, 0x73, 0x73, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x43, 0x6f, 0x6d, + 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, + 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x46, 0x4c, 0x4f, 0x41, + 0x54, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, + 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x70, 0x6c, + 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0x29, 0x0a, 0x54, 0x77, 0x6f, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x42, 0x69, 0x74, 0x77, 0x69, 0x73, 0x65, 0x4f, 0x70, 0x22, 0x29, + 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, + 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x42, 0x69, 0x74, 0x77, 0x69, 0x73, + 0x65, 0x4e, 0x6f, 0x74, 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, - 0x6e, 0x74, 0x73, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, - 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x29, 0x0a, 0x4f, - 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, - 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, - 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0x29, 0x0a, 0x54, 0x77, 0x6f, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, - 0x73, 0x42, 0x69, 0x74, 0x77, 0x69, 0x73, 0x65, 0x4f, 0x70, 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, - 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x42, 0x69, 0x74, 0x77, 0x69, 0x73, 0x65, 0x4e, 0x6f, 0x74, - 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, - 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x42, 0x69, 0x74, 0x4d, - 0x61, 0x73, 0x6b, 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, - 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x42, - 0x69, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x65, 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, + 0x42, 0x69, 0x74, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6e, 0x65, 0x47, 0x61, 0x6d, 0x75, 0x74, 0x22, 0x29, 0x0a, 0x4f, - 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, - 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x55, 0x6e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, - 0x69, 0x7a, 0x65, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, - 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x42, 0x59, 0x54, 0x45, 0x29, 0x0a, 0x4f, 0x6e, + 0x65, 0x73, 0x73, 0x42, 0x69, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x65, 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, - 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, - 0x76, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, - 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x42, 0x59, 0x54, 0x45, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, - 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x22, 0x29, 0x0a, + 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6e, 0x65, 0x47, 0x61, 0x6d, 0x75, 0x74, + 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, + 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x55, 0x6e, 0x4e, 0x6f, + 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, + 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x42, 0x59, 0x54, 0x45, + 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, + 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, + 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x42, 0x59, 0x54, 0x45, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, - 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, - 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x42, - 0x49, 0x4e, 0x41, 0x52, 0x59, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, - 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4d, 0x61, 0x78, 0x54, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, - 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x2c, 0x20, 0x6e, 0x69, - 0x6c, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, - 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x54, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, - 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x2c, 0x20, 0x6e, 0x69, 0x6c, - 0x29, 0x0a, 0x54, 0x77, 0x6f, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x4f, 0x6e, 0x65, 0x44, - 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x54, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x79, 0x44, 0x69, 0x66, 0x66, 0x22, 0x29, 0x0a, 0x4f, 0x6e, - 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, - 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x48, 0x79, 0x73, 0x74, 0x65, 0x72, 0x65, 0x73, 0x69, - 0x73, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, - 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, - 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x72, 0x72, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, + 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, - 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x69, 0x66, 0x75, 0x73, 0x69, 0x6f, - 0x6e, 0x45, 0x72, 0x72, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x29, 0x0a, + 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4d, 0x61, + 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, + 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, + 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, + 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x2c, + 0x20, 0x6e, 0x69, 0x6c, 0x29, 0x0a, 0x54, 0x77, 0x6f, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x79, 0x44, 0x69, 0x66, 0x66, 0x22, + 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, + 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x48, 0x79, 0x73, 0x74, 0x65, + 0x72, 0x65, 0x73, 0x69, 0x73, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x2c, + 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x42, 0x49, + 0x4e, 0x41, 0x52, 0x59, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, + 0x63, 0x65, 0x73, 0x73, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x72, 0x72, 0x54, 0x68, + 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, + 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x2c, 0x20, 0x6e, + 0x69, 0x6c, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, + 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x69, 0x66, + 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, + 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x50, 0x65, 0x72, + 0x63, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, - 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, - 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, - 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4f, 0x74, 0x73, 0x75, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, - 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x69, - 0x6e, 0x4d, 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x2c, 0x20, - 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x42, 0x49, 0x4e, - 0x41, 0x52, 0x59, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4f, 0x74, 0x73, 0x75, 0x54, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, + 0x73, 0x73, 0x4d, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, - 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x22, + 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x54, 0x68, 0x72, 0x65, + 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x2c, 0x20, 0x6e, 0x69, 0x6c, + 0x2c, 0x20, 0x69, 0x6d, 0x2e, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x2c, 0x20, 0x6e, 0x69, 0x6c, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x6e, 0x65, 0x44, 0x65, - 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x73, 0x74, 0x65, - 0x72, 0x69, 0x7a, 0x65, 0x22, 0x29, 0x0a, 0x0a, + 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x50, 0x69, 0x78, 0x65, 0x6c, + 0x61, 0x74, 0x65, 0x22, 0x29, 0x0a, 0x4f, 0x6e, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, + 0x6e, 0x65, 0x44, 0x65, 0x73, 0x74, 0x28, 0x22, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x50, + 0x6f, 0x73, 0x74, 0x65, 0x72, 0x69, 0x7a, 0x65, 0x22, 0x29, 0x0a, 0x0a, }; if (luaL_loadbuffer(L, (const char *)B1, sizeof(B1), "im_process.lua") == 0) lua_call(L, 0, 0); diff --git a/im/src/lua5/im_process.lua b/im/src/lua5/im_process.lua index eefac4b..5c73b29 100755 --- a/im/src/lua5/im_process.lua +++ b/im/src/lua5/im_process.lua @@ -255,6 +255,7 @@ end TwoSourcesOneDest("ProcessBlendConst") ThreeSourcesOneDest("ProcessBlend") +TwoSourcesOneDest("ProcessCompose") OneSourceTwoDests("ProcessSplitComplex") TwoSourcesOneDest("ProcessMergeComplex", nil, nil, nil, im.CFLOAT) diff --git a/im/src/lua5/imlua_aux.c b/im/src/lua5/imlua_aux.c index e472dca..b26df93 100755 --- a/im/src/lua5/imlua_aux.c +++ b/im/src/lua5/imlua_aux.c @@ -2,7 +2,7 @@ * \brief IM Lua 5 Binding * * See Copyright Notice in im_lib.h - * $Id: imlua_aux.c,v 1.2 2009/08/04 21:35:26 scuri Exp $ + * $Id: imlua_aux.c,v 1.3 2010/01/21 18:24:22 scuri Exp $ */ #include @@ -46,7 +46,7 @@ int imlua_newarrayint (lua_State *L, int *value, int count, int start) lua_newtable(L); for (i = 0; i < count; i++) { - lua_pushnumber(L, value[i]); + lua_pushinteger(L, value[i]); lua_rawseti(L, -2, i+start); } return 1; diff --git a/im/src/lua5/imlua_image.c b/im/src/lua5/imlua_image.c index 55dcc82..0e8676d 100755 --- a/im/src/lua5/imlua_image.c +++ b/im/src/lua5/imlua_image.c @@ -2,7 +2,7 @@ * \brief IM Lua 5 Binding * * See Copyright Notice in im_lib.h - * $Id: imlua_image.c,v 1.5 2009/09/25 18:40:31 scuri Exp $ + * $Id: imlua_image.c,v 1.9 2010/01/17 18:18:12 scuri Exp $ */ #include @@ -127,6 +127,15 @@ static int imluaImageAddAlpha (lua_State *L) return 0; } +/*****************************************************************************\ + image:SetAlpha() +\*****************************************************************************/ +static int imluaImageSetAlpha (lua_State *L) +{ + imImageSetAlpha(imlua_checkimage(L, 1), (float)luaL_checknumber(L, 2)); + return 0; +} + /*****************************************************************************\ image:Reshape() \*****************************************************************************/ @@ -166,6 +175,31 @@ static int imluaImageCopyData (lua_State *L) return 0; } +/*****************************************************************************\ + image:CopyPlane() +\*****************************************************************************/ +static int imluaImageCopyPlane(lua_State *L) +{ + imImage* src_image = imlua_checkimage(L, 1); + int src_plane = luaL_checkint(L, 2); + imImage* dst_image = imlua_checkimage(L, 3); + int dst_plane = luaL_checkint(L, 4); + int src_depth, dst_depth; + + imlua_matchdatatype(L, src_image, dst_image); + + src_depth = src_image->has_alpha? src_image->depth+1: src_image->depth; + if (src_plane < 0 || src_plane >= src_depth) + luaL_argerror(L, 2, "invalid source channel, out of bounds"); + + dst_depth = dst_image->has_alpha? dst_image->depth+1: dst_image->depth; + if (dst_plane < 0 || dst_plane >= dst_depth) + luaL_argerror(L, 4, "invalid destiny channel, out of bounds"); + + imImageCopyPlane(src_image, src_plane, dst_image, dst_plane); + return 0; +} + /*****************************************************************************\ image:Duplicate() \*****************************************************************************/ @@ -751,13 +785,14 @@ static int imluaImage_tostring (lua_State *L) if (*image_p) { imImage *image = *image_p; - lua_pushfstring(L, "imImage(%p) [width=%d,height=%d,color_space=%s,data_type=%s,depth=%d]", + lua_pushfstring(L, "imImage(%p) [width=%d,height=%d,color_space=%s,data_type=%s,depth=%d,has_alpha=%d]", image_p, image->width, image->height, imColorModeSpaceName(image->color_space), imDataTypeName(image->data_type), - image->depth + image->depth, + image->has_alpha ); } else @@ -956,7 +991,8 @@ static int imluaImage_index (lua_State *L) int channel = luaL_checkint(L, 2); /* create channel */ - if (channel < 0 || channel >= image->depth) + int depth = image->has_alpha? image->depth+1: image->depth; + if (channel < 0 || channel >= depth) luaL_argerror(L, 2, "invalid channel, out of bounds"); imlua_newimagechannel(L, image, channel); @@ -989,9 +1025,11 @@ static const luaL_reg imimage_lib[] = { static const luaL_reg imimage_metalib[] = { {"Destroy", imluaImageDestroy}, {"AddAlpha", imluaImageAddAlpha}, + {"SetAlpha", imluaImageSetAlpha}, {"Reshape", imluaImageReshape}, {"Copy", imluaImageCopy}, {"CopyData", imluaImageCopyData}, + {"CopyPlane", imluaImageCopyPlane}, {"Duplicate", imluaImageDuplicate}, {"Clone", imluaImageClone}, {"SetAttribute", imluaImageSetAttribute}, diff --git a/im/src/lua5/imlua_process.c b/im/src/lua5/imlua_process.c index 38d39e9..978428b 100755 --- a/im/src/lua5/imlua_process.c +++ b/im/src/lua5/imlua_process.c @@ -2,7 +2,7 @@ * \brief IM Lua 5 Binding * * See Copyright Notice in im_lib.h - * $Id: imlua_process.c,v 1.8 2009/10/01 02:56:58 scuri Exp $ + * $Id: imlua_process.c,v 1.11 2010/03/21 22:29:10 scuri Exp $ */ #include @@ -1702,6 +1702,22 @@ static int imluaProcessBlend (lua_State *L) return 0; } +/*****************************************************************************\ + im.ProcessCompose +\*****************************************************************************/ +static int imluaProcessCompose(lua_State *L) +{ + imImage *src_image1 = imlua_checkimage(L, 1); + imImage *src_image2 = imlua_checkimage(L, 2); + imImage *dst_image = imlua_checkimage(L, 3); + + imlua_match(L, src_image1, src_image2); + imlua_match(L, src_image1, dst_image); + + imProcessCompose(src_image1, src_image2, dst_image); + return 0; +} + /*****************************************************************************\ im.ProcessSplitComplex \*****************************************************************************/ @@ -2009,18 +2025,19 @@ static int imluaProcessMergeHSI (lua_State *L) \*****************************************************************************/ static int imluaProcessSplitComponents (lua_State *L) { - int i; + int i, src_depth; imImage *src_image = imlua_checkimage(L, 1); imImage **dst_image_list; luaL_checktype(L, 2, LUA_TTABLE); - if (imlua_getn(L, 2) != src_image->depth) + src_depth = src_image->has_alpha? src_image->depth+1: src_image->depth; + if (imlua_getn(L, 2) != src_depth) luaL_error(L, "number of destiny images must match the depth of the source image"); - dst_image_list = (imImage**)malloc(sizeof(imImage*)*src_image->depth); + dst_image_list = (imImage**)malloc(sizeof(imImage*)*src_depth); - for (i = 0; i < src_image->depth; i++) + for (i = 0; i < src_depth; i++) { lua_pushnumber(L, i+1); lua_gettable(L, 2); @@ -2029,7 +2046,7 @@ static int imluaProcessSplitComponents (lua_State *L) lua_pop(L, 1); } - for (i = 0; i < src_image->depth; i++) + for (i = 0; i < src_depth; i++) { int check = imImageMatchDataType(src_image, dst_image_list[i]); if (!check) free(dst_image_list); @@ -2048,19 +2065,20 @@ static int imluaProcessSplitComponents (lua_State *L) \*****************************************************************************/ static int imluaProcessMergeComponents (lua_State *L) { - int i; + int i, dst_depth; imImage** src_image_list; imImage *dst_image; luaL_checktype(L, 1, LUA_TTABLE); dst_image = imlua_checkimage(L, 2); - if (imlua_getn(L, 1) != dst_image->depth) + dst_depth = dst_image->has_alpha? dst_image->depth+1: dst_image->depth; + if (imlua_getn(L, 1) != dst_depth) luaL_error(L, "number of source images must match the depth of the destination image"); - src_image_list = (imImage**)malloc(sizeof(imImage*)*dst_image->depth); + src_image_list = (imImage**)malloc(sizeof(imImage*)*dst_depth); - for (i = 0; i < dst_image->depth; i++) + for (i = 0; i < dst_depth; i++) { lua_pushnumber(L, i+1); lua_gettable(L, 1); @@ -2069,7 +2087,7 @@ static int imluaProcessMergeComponents (lua_State *L) lua_pop(L, 1); } - for (i = 0; i < dst_image->depth; i++) + for (i = 0; i < dst_depth; i++) { int check = imImageMatchDataType(src_image_list[i], dst_image); if (!check) free(src_image_list); @@ -2988,6 +3006,7 @@ static const luaL_reg improcess_lib[] = { {"ProcessArithmeticConstOp", imluaProcessArithmeticConstOp}, {"ProcessBlendConst", imluaProcessBlendConst}, {"ProcessBlend", imluaProcessBlend}, + {"ProcessCompose", imluaProcessCompose}, {"ProcessSplitComplex", imluaProcessSplitComplex}, {"ProcessMergeComplex", imluaProcessMergeComplex}, {"ProcessMultipleMean", imluaProcessMultipleMean}, -- cgit v1.2.3