From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25786 invoked by alias); 5 May 2002 19:06:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 25765 invoked by uid 71); 5 May 2002 19:06:00 -0000 Resent-Date: 5 May 2002 19:06:00 -0000 Resent-Message-ID: <20020505190600.25764.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, thorpej@wasabisystems.com Received:(qmail 22490 invoked by uid 61); 5 May 2002 18:58:19 -0000 Message-Id:<20020505185819.22489.qmail@sources.redhat.com> Date: Sun, 05 May 2002 12:06:00 -0000 From: thorpej@wasabisystems.com Reply-To: thorpej@wasabisystems.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version:gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: optimization/6566: sparc64-unknown-netbsd-gcc loops consuming memory X-SW-Source: 2002-05/txt/msg00128.txt.bz2 List-Id: >Number: 6566 >Category: optimization >Synopsis: sparc64-unknown-netbsd-gcc loops consuming memory >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sun May 05 12:06:00 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Jason R Thorpe >Release: gcc version 3.2 20020503 (experimental) >Organization: >Environment: sparc64-unknown-netbsd target on i386-unknown-netbsdelf host >Description: When compiling the NetBSD libc's getusershell.c, GCC goes into an apparent loop where it consumes memory until is is killed. >How-To-Repeat: Compile attached file with: sparc64-unknown-netbsd-gcc -c -O -ffixed-g4 Problem exists with or without -ffixed-g4. >Fix: The file can be compiled without optimization. >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="getusershell.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="getusershell.i" IyAxICIvdTEvbmV0YnNkL3NyYy9saWIvbGliYy9nZW4vZ2V0dXNlcnNoZWxsLmMiCiMgMSAiPGJ1 aWx0LWluPiIKIyAxICI8Y29tbWFuZCBsaW5lPiIKIyAxICIvdTEvbmV0YnNkL3NyYy9saWIvbGli Yy9nZW4vZ2V0dXNlcnNoZWxsLmMiCiMgMzYgIi91MS9uZXRic2Qvc3JjL2xpYi9saWJjL2dlbi9n ZXR1c2Vyc2hlbGwuYyIKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lz L2NkZWZzLmgiIDEgMyA0CiMgNjMgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9z eXMvY2RlZnMuaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL21h Y2hpbmUvY2RlZnMuaCIgMSAzIDQKIyA2NCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNs dWRlL3N5cy9jZGVmcy5oIiAyIDMgNAoKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2lu Y2x1ZGUvc3lzL2NkZWZzX2VsZi5oIiAxIDMgNAojIDY2ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEv dXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDIgMyA0CiMgMzcgIi91MS9uZXRic2Qvc3JjL2xpYi9s aWJjL2dlbi9nZXR1c2Vyc2hlbGwuYyIgMgoKCgoKX19hc21fXygiLnNlY3Rpb24gIiAiLmlkZW50 IiAiIDsgLmFzY2l6IFwiIiAiJE5ldEJTRDogZ2V0dXNlcnNoZWxsLmMsdiAxLjIxIDIwMDAvMDcv MDcgMDg6MDM6MzcgaXRvaHkgRXhwICQiICJcIiA7IC50ZXh0Iik7CgoKCiMgMSAiL3UxL25ldGJz ZC9zcmMvbGliL2xpYmMvaW5jbHVkZS9uYW1lc3BhY2UuaCIgMQojIDQ2ICIvdTEvbmV0YnNkL3Ny Yy9saWIvbGliYy9nZW4vZ2V0dXNlcnNoZWxsLmMiIDIKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAw LTEvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDEgMyA0CiMgODYgIi91MS9kaXNrbGVzcy9jcDE1 MDAtMS91c3IvaW5jbHVkZS9zeXMvcGFyYW0uaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUw MC0xL3Vzci9pbmNsdWRlL3N5cy9udWxsLmgiIDEgMyA0CiMgODcgIi91MS9kaXNrbGVzcy9jcDE1 MDAtMS91c3IvaW5jbHVkZS9zeXMvcGFyYW0uaCIgMiAzIDQKCgojIDEgIi91MS9kaXNrbGVzcy9j cDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvaW50dHlwZXMuaCIgMSAzIDQKIyA0NiAiL3UxL2Rpc2ts ZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9pbnR0eXBlcy5oIiAzIDQKIyAxICIvdTEvZGlz a2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3N0ZGludC5oIiAxIDMgNAojIDQyICIvdTEv ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3N0ZGludC5oIiAzIDQKIyAxICIvdTEv ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvbWFjaGluZS9pbnRfdHlwZXMuaCIgMSAzIDQK IyA1NiAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL21hY2hpbmUvaW50X3R5cGVz LmgiIDMgNAp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNo YXIgX191aW50OF90Owp0eXBlZGVmIHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWdu ZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgaW50IF9faW50MzJfdDsKdHlwZWRlZiB1 bnNpZ25lZCBpbnQgX191aW50MzJfdDsKCgoKCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19pbnQ2NF90 Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdWludDY0X3Q7CiMgODQgIi91MS9kaXNrbGVz cy9jcDE1MDAtMS91c3IvaW5jbHVkZS9tYWNoaW5lL2ludF90eXBlcy5oIiAzIDQKdHlwZWRlZiBs b25nIGludCBfX2ludHB0cl90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdWludHB0cl90 OwojIDQzICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3N0ZGludC5oIiAy IDMgNAoKCnR5cGVkZWYgX19pbnQ4X3QgaW50OF90OwoKCgoKdHlwZWRlZiBfX3VpbnQ4X3QgdWlu dDhfdDsKCgoKCnR5cGVkZWYgX19pbnQxNl90IGludDE2X3Q7CgoKCgp0eXBlZGVmIF9fdWludDE2 X3QgdWludDE2X3Q7CgoKCgp0eXBlZGVmIF9faW50MzJfdCBpbnQzMl90OwoKCgoKdHlwZWRlZiBf X3VpbnQzMl90IHVpbnQzMl90OwoKCgoKdHlwZWRlZiBfX2ludDY0X3QgaW50NjRfdDsKCgoKCnR5 cGVkZWYgX191aW50NjRfdCB1aW50NjRfdDsKCgoKCnR5cGVkZWYgX19pbnRwdHJfdCBpbnRwdHJf dDsKCgoKCnR5cGVkZWYgX191aW50cHRyX3QgdWludHB0cl90OwoKCgojIDEgIi91MS9kaXNrbGVz cy9jcDE1MDAtMS91c3IvaW5jbHVkZS9tYWNoaW5lL2ludF9td2d3dHlwZXMuaCIgMSAzIDQKIyA0 OCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL21hY2hpbmUvaW50X213Z3d0eXBl cy5oIiAzIDQKdHlwZWRlZiBzaWduZWQgY2hhciBpbnRfbGVhc3Q4X3Q7CnR5cGVkZWYgdW5zaWdu ZWQgY2hhciB1aW50X2xlYXN0OF90Owp0eXBlZGVmIHNob3J0IGludCBpbnRfbGVhc3QxNl90Owp0 eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1aW50X2xlYXN0MTZfdDsKdHlwZWRlZiBpbnQgaW50 X2xlYXN0MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9sZWFzdDMyX3Q7CgoKCgoKdHlw ZWRlZiBsb25nIGludCBpbnRfbGVhc3Q2NF90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHVp bnRfbGVhc3Q2NF90OwojIDcyICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvbWFj aGluZS9pbnRfbXdnd3R5cGVzLmgiIDMgNAp0eXBlZGVmIGxvbmcgaW50IGludF9mYXN0OF90Owp0 eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludF9mYXN0OF90OwoKCgoKCnR5cGVkZWYgbG9uZyBpbnQg aW50X2Zhc3QxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1aW50X2Zhc3QxNl90OwoK CgoKCnR5cGVkZWYgbG9uZyBpbnQgaW50X2Zhc3QzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1 aW50X2Zhc3QzMl90OwojIDk3ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvbWFj aGluZS9pbnRfbXdnd3R5cGVzLmgiIDMgNAp0eXBlZGVmIGxvbmcgaW50IGludF9mYXN0NjRfdDsK dHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1aW50X2Zhc3Q2NF90OwojIDExNCAiL3UxL2Rpc2ts ZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL21hY2hpbmUvaW50X213Z3d0eXBlcy5oIiAzIDQKdHlw ZWRlZiBsb25nIGludCBpbnRtYXhfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1aW50bWF4 X3Q7CiMgOTUgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvc3RkaW50Lmgi IDIgMyA0CgoKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvbWFjaGluZS9p bnRfbGltaXRzLmgiIDEgMyA0CiMgOTggIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVk ZS9zeXMvc3RkaW50LmgiIDIgMyA0CgoKCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9p bmNsdWRlL21hY2hpbmUvaW50X2NvbnN0LmgiIDEgMyA0CiMgMTAyICIvdTEvZGlza2xlc3MvY3Ax NTAwLTEvdXNyL2luY2x1ZGUvc3lzL3N0ZGludC5oIiAyIDMgNAojIDQ3ICIvdTEvZGlza2xlc3Mv Y3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL2ludHR5cGVzLmgiIDIgMyA0CgoKIyAxICIvdTEvZGlz a2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvbWFjaGluZS9pbnRfZm10aW8uaCIgMSAzIDQKIyA1 MCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9pbnR0eXBlcy5oIiAyIDMg NAojIDkwICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDIg MyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAx IDMgNAojIDQ3ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgi IDMgNAojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9tYWNoaW5lL3R5cGVz LmgiIDEgMyA0CiMgNjggIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9tYWNoaW5l L3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHJlZ2lzdGVyX3Q7CnR5cGVk ZWYgdW5zaWduZWQgaW50IHJlZ2lzdGVyMzJfdDsKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQg cmVnaXN0ZXI2NF90OwoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHZhZGRyX3Q7CnR5 cGVkZWYgdmFkZHJfdCB2c2l6ZV90OwojIDg4ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2lu Y2x1ZGUvbWFjaGluZS90eXBlcy5oIiAzIDQKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBwYWRk cl90OwoKdHlwZWRlZiBwYWRkcl90IHBzaXplX3Q7CiMgNDggIi91MS9kaXNrbGVzcy9jcDE1MDAt MS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQKCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUw MC0xL3Vzci9pbmNsdWRlL21hY2hpbmUvYW5zaS5oIiAxIDMgNAojIDg4ICIvdTEvZGlza2xlc3Mv Y3AxNTAwLTEvdXNyL2luY2x1ZGUvbWFjaGluZS9hbnNpLmgiIDMgNAp0eXBlZGVmIHVuaW9uIHsK ICAgICAgICBjaGFyIF9fbWJzdGF0ZThbMTI4XTsKICAgICAgICBfX2ludDY0X3QgX19tYnN0YXRl TDsKfSBfX21ic3RhdGVfdDsKIyA1MCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRl L3N5cy90eXBlcy5oIiAyIDMgNAoKCgojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5j bHVkZS9zeXMvYW5zaS5oIiAxIDMgNAojIDQ0ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2lu Y2x1ZGUvc3lzL2Fuc2kuaCIgMyA0CnR5cGVkZWYgY2hhciAqIF9fY2FkZHJfdDsKdHlwZWRlZiBf X3VpbnQzMl90IF9fZ2lkX3Q7CnR5cGVkZWYgX191aW50MzJfdCBfX21vZGVfdDsKdHlwZWRlZiBf X2ludDY0X3QgX19vZmZfdDsKdHlwZWRlZiBfX2ludDMyX3QgX19waWRfdDsKdHlwZWRlZiBfX3Vp bnQ4X3QgX19zYV9mYW1pbHlfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19zb2NrbGVuX3Q7CnR5 cGVkZWYgX191aW50MzJfdCBfX3VpZF90OwojIDU0ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNy L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CiMgOTUgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91 c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgX191aW50OF90IHVfaW50OF90Owp0 eXBlZGVmIF9fdWludDE2X3QgdV9pbnQxNl90Owp0eXBlZGVmIF9fdWludDMyX3QgdV9pbnQzMl90 Owp0eXBlZGVmIF9fdWludDY0X3QgdV9pbnQ2NF90OwoKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAw LTEvdXNyL2luY2x1ZGUvbWFjaGluZS9lbmRpYW4uaCIgMSAzIDQKCgojIDEgIi91MS9kaXNrbGVz cy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZW5kaWFuLmgiIDEgMyA0CiMgNDkgIi91MS9kaXNr bGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZW5kaWFuLmgiIDMgNAojIDEgIi91MS9kaXNr bGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9tYWNoaW5lL2VuZGlhbl9tYWNoZGVwLmgiIDEgMyA0 CiMgNTAgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZW5kaWFuLmgiIDIg MyA0CiMgODAgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZW5kaWFuLmgi IDMgNAojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIg MSAzIDQKIyA4MSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9lbmRpYW4u aCIgMiAzIDQKCnR5cGVkZWYgdV9pbnQzMl90IGluX2FkZHJfdDsKdHlwZWRlZiB1X2ludDE2X3Qg aW5fcG9ydF90OwoKCl9fdWludDMyX3QgaHRvbmwgKF9fdWludDMyX3QpIF9fYXR0cmlidXRlX18o KF9fY29uc3RfXykpOwpfX3VpbnQxNl90IGh0b25zIChfX3VpbnQxNl90KSBfX2F0dHJpYnV0ZV9f KChfX2NvbnN0X18pKTsKX191aW50MzJfdCBudG9obCAoX191aW50MzJfdCkgX19hdHRyaWJ1dGVf XygoX19jb25zdF9fKSk7Cl9fdWludDE2X3QgbnRvaHMgKF9fdWludDE2X3QpIF9fYXR0cmlidXRl X18oKF9fY29uc3RfXykpOwoKIyAxMTggIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVk ZS9zeXMvZW5kaWFuLmgiIDMgNAojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVk ZS9tYWNoaW5lL2Jzd2FwLmgiIDEgMyA0CgoKCgoKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEv dXNyL2luY2x1ZGUvc3lzL2Jzd2FwLmgiIDEgMyA0CiMgMTYgIi91MS9kaXNrbGVzcy9jcDE1MDAt MS91c3IvaW5jbHVkZS9zeXMvYnN3YXAuaCIgMyA0CgoKdV9pbnQxNl90IGJzd2FwMTYgKHVfaW50 MTZfdCk7CnVfaW50MzJfdCBic3dhcDMyICh1X2ludDMyX3QpOwoKCgoKdV9pbnQ2NF90IGJzd2Fw NjQgKHVfaW50NjRfdCk7CgojIDcgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9t YWNoaW5lL2Jzd2FwLmgiIDIgMyA0CiMgMTE5ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2lu Y2x1ZGUvc3lzL2VuZGlhbi5oIiAyIDMgNAojIDQgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3Iv aW5jbHVkZS9tYWNoaW5lL2VuZGlhbi5oIiAyIDMgNAojIDEwMSAiL3UxL2Rpc2tsZXNzL2NwMTUw MC0xL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAoKCnR5cGVkZWYgdW5zaWduZWQgY2hh ciB1X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25l ZCBpbnQgdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1X2xvbmc7Cgp0eXBlZGVmIHVuc2ln bmVkIGNoYXIgdW5jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVzaG9ydDsKdHlwZWRlZiB1 bnNpZ25lZCBpbnQgdWludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nOwoKdHlwZWRlZiB1 X2xvbmcgY3B1aWRfdDsKCgp0eXBlZGVmIHVfaW50NjRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2lu dDY0X3QgcXVhZF90Owp0eXBlZGVmIHF1YWRfdCAqIHFhZGRyX3Q7CiMgMTMwICIvdTEvZGlza2xl c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHF1YWRfdCBs b25nbG9uZ190Owp0eXBlZGVmIHVfcXVhZF90IHVfbG9uZ2xvbmdfdDsKCnR5cGVkZWYgX19pbnQ2 NF90IGJsa2NudF90Owp0eXBlZGVmIHVfaW50MzJfdCBibGtzaXplX3Q7CgoKdHlwZWRlZiBfX2Nh ZGRyX3QgY2FkZHJfdDsKCgoKdHlwZWRlZiBfX2ludDMyX3QgZGFkZHJfdDsKdHlwZWRlZiB1X2lu dDMyX3QgZGV2X3Q7CnR5cGVkZWYgdV9pbnQzMl90IGZpeHB0X3Q7CgoKdHlwZWRlZiBfX2dpZF90 IGdpZF90OwoKCgp0eXBlZGVmIHVfaW50MzJfdCBpZF90Owp0eXBlZGVmIHVfaW50MzJfdCBpbm9f dDsKdHlwZWRlZiBsb25nIGtleV90OwoKCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgp0eXBl ZGVmIHVfaW50MzJfdCBubGlua190OwoKCnR5cGVkZWYgX19vZmZfdCBvZmZfdDsKCgoKCnR5cGVk ZWYgX19waWRfdCBwaWRfdDsKCgoKdHlwZWRlZiBxdWFkX3QgcmxpbV90Owp0eXBlZGVmIF9faW50 MzJfdCBzZWdzel90Owp0eXBlZGVmIF9faW50MzJfdCBzd2Jsa190OwoKCnR5cGVkZWYgX191aWRf dCB1aWRfdDsKCgoKdHlwZWRlZiBfX2ludDMyX3QgZHRpbWVfdDsKCgoKCgoKCnVuaW9uIF9fc2Vt dW4gewogICAgICAgIGludCB2YWw7CiAgICAgICAgc3RydWN0IHNlbWlkX2RzICpidWY7CiAgICAg ICAgdW5zaWduZWQgc2hvcnQgKmFycmF5Owp9OwojIDIwNSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0x L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKCl9fb2ZmX3QgX2xzZWVrIChpbnQsIF9fb2Zm X3QsIGludCk7CmludCBfZnRydW5jYXRlIChpbnQsIF9fb2ZmX3QpOwppbnQgdHJ1bmNhdGUgKGNv bnN0IGNoYXIgKiwgX19vZmZfdCk7CgojIDIyNSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9p bmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBpbnQgY2xvY2tfdDsKCgoKCnR5cGVkZWYg dW5zaWduZWQgbG9uZyBzaXplX3Q7CgoKCgoKdHlwZWRlZiBsb25nIHNzaXplX3Q7CgoKCgp0eXBl ZGVmIGludCB0aW1lX3Q7CgoKCgp0eXBlZGVmIGludCBjbG9ja2lkX3Q7CgoKCgp0eXBlZGVmIGlu dCB0aW1lcl90OwoKCgoKdHlwZWRlZiBpbnQgc3VzZWNvbmRzX3Q7CgoKCgp0eXBlZGVmIHVuc2ln bmVkIGludCB1c2Vjb25kc190OwojIDI3NCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNs dWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBfX2ludDMyX3QgX19mZF9tYXNrOwojIDI5MyAi L3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRl ZiBzdHJ1Y3QgZmRfc2V0IHsKICAgICAgICBfX2ZkX21hc2sgZmRzX2JpdHNbKCgoMjU2KSArICgo KHNpemVvZihfX2ZkX21hc2spICogOCkpIC0gMSkpIC8gKChzaXplb2YoX19mZF9tYXNrKSAqIDgp KSldOwp9IGZkX3NldDsKIyA5MSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5 cy9wYXJhbS5oIiAyIDMgNAojIDEwMCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRl L3N5cy9wYXJhbS5oIiAzIDQKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUv c3lzL3N5c2xpbWl0cy5oIiAxIDMgNAojIDQxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2lu Y2x1ZGUvc3lzL3N5c2xpbWl0cy5oIiAzIDQKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNy L2luY2x1ZGUvc3lzL2ZlYXR1cmV0ZXN0LmgiIDEgMyA0CiMgNDIgIi91MS9kaXNrbGVzcy9jcDE1 MDAtMS91c3IvaW5jbHVkZS9zeXMvc3lzbGltaXRzLmgiIDIgMyA0CiMgMTAxICIvdTEvZGlza2xl c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDIgMyA0CiMgMTQxICIvdTEvZGlz a2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDMgNAojIDEgIi91MS9kaXNr bGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDEgMyA0CiMgNDYgIi91MS9k aXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNAojIDEgIi91MS9k aXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZXRlc3QuaCIgMSAzIDQKIyA0 NyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMiAzIDQK IyAxNDYgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMg NAp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgdV9pbnQzMl90IF9fYml0c1s0XTsKfSBzaWdzZXRf dDsKIyAxOTIgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgi IDMgNApzdHJ1Y3Qgc2lnYWN0aW9uIHsKICAgICAgICB2b2lkICgqc2FfaGFuZGxlcikKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChpbnQpOwogICAgICAgIHNpZ3NldF90IHNhX21hc2s7CiAg ICAgICAgaW50IHNhX2ZsYWdzOwp9OwojIDIyNSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9p bmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CnR5cGVkZWYgdm9pZCAoKnNpZ190KSAoaW50KTsKIyAy NDIgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNAp0 eXBlZGVmIHN0cnVjdAoKICAgICAgICAgICAgICAgc2lnYWx0c3RhY2sKCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICB2b2lkICpzc19zcDsKICAgICAgICBzaXplX3Qgc3Nfc2l6 ZTsKICAgICAgICBpbnQgc3NfZmxhZ3M7Cn0gc3RhY2tfdDsKIyAyNjYgIi91MS9kaXNrbGVzcy9j cDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNApzdHJ1Y3Qgc2lndmVjIHsKICAg ICAgICB2b2lkICgqc3ZfaGFuZGxlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQp OwogICAgICAgIGludCBzdl9tYXNrOwogICAgICAgIGludCBzdl9mbGFnczsKfTsKIyAyODQgIi91 MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNApzdHJ1Y3Qg c2lnc3RhY2sgewogICAgICAgIHZvaWQgKnNzX3NwOwogICAgICAgIGludCBzc19vbnN0YWNrOwp9 OwoKCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL21hY2hpbmUvc2lnbmFs LmgiIDEgMyA0CiMgNTEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9tYWNoaW5l L3NpZ25hbC5oIiAzIDQKdHlwZWRlZiBpbnQgc2lnX2F0b21pY190OwojIDg0ICIvdTEvZGlza2xl c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvbWFjaGluZS9zaWduYWwuaCIgMyA0CnN0cnVjdCBzaWdj b250ZXh0IHsKICAgICAgICBpbnQgc2Nfb25zdGFjazsKICAgICAgICBpbnQgX19zY19tYXNrMTM7 CgogICAgICAgIGxvbmcgc2Nfc3A7CiAgICAgICAgbG9uZyBzY19wYzsKICAgICAgICBsb25nIHNj X25wYzsKCiAgICAgICAgbG9uZyBzY190c3RhdGU7CgoKCiAgICAgICAgbG9uZyBzY19nMTsKICAg ICAgICBsb25nIHNjX28wOwogICAgICAgIHNpZ3NldF90IHNjX21hc2s7Cn07CiMgMjkxICIvdTEv ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAyIDMgNAojIDMwOCAi L3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0Cgp2b2lk ICgqX3NpZ25hbCAoaW50LCB2b2lkICgqKSAoaW50KSkpIChpbnQpOwoKIyAxNDIgIi91MS9kaXNr bGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvcGFyYW0uaCIgMiAzIDQKCgojIDEgIi91MS9k aXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9tYWNoaW5lL3BhcmFtLmgiIDEgMyA0CiMgMTQ1 ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDIgMyA0CiMg MSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL21hY2hpbmUvbGltaXRzLmgiIDEg MyA0CiMgMTQ2ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgi IDIgMyA0CiMgNDcgIi91MS9uZXRic2Qvc3JjL2xpYi9saWJjL2dlbi9nZXR1c2Vyc2hlbGwuYyIg MgojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZmlsZS5oIiAxIDMg NAojIDQxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL2ZpbGUuaCIgMyA0 CiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9mY250bC5oIiAxIDMg NAojIDUzICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL2ZjbnRsLmgiIDMg NAojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZXRlc3Qu aCIgMSAzIDQKIyA1NCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9mY250 bC5oIiAyIDMgNAoKCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9z dGF0LmgiIDEgMyA0CiMgNDYgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMv c3RhdC5oIiAzIDQKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL2Zl YXR1cmV0ZXN0LmgiIDEgMyA0CiMgNDcgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVk ZS9zeXMvc3RhdC5oIiAyIDMgNAoKCgojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5j bHVkZS9zeXMvdGltZS5oIiAxIDMgNAojIDQ3ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2lu Y2x1ZGUvc3lzL3RpbWUuaCIgMyA0CnN0cnVjdCB0aW1ldmFsIHsKICAgICAgICBsb25nIHR2X3Nl YzsKICAgICAgICBsb25nIHR2X3VzZWM7Cn07CgoKCgpzdHJ1Y3QgdGltZXNwZWMgewogICAgICAg IHRpbWVfdCB0dl9zZWM7CiAgICAgICAgbG9uZyB0dl9uc2VjOwp9OwojIDczICIvdTEvZGlza2xl c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CnN0cnVjdCB0aW1lem9uZSB7 CiAgICAgICAgaW50IHR6X21pbnV0ZXN3ZXN0OwogICAgICAgIGludCB0el9kc3R0aW1lOwp9Owoj IDEzOCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNApz dHJ1Y3QgaXRpbWVydmFsIHsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBpdF9pbnRlcnZhbDsKICAg ICAgICBzdHJ1Y3QgdGltZXZhbCBpdF92YWx1ZTsKfTsKCgoKCnN0cnVjdCBjbG9ja2luZm8gewog ICAgICAgIGludCBoejsKICAgICAgICBpbnQgdGljazsKICAgICAgICBpbnQgdGlja2FkajsKICAg ICAgICBpbnQgc3RhdGh6OwogICAgICAgIGludCBwcm9maHo7Cn07CiMgMTc2ICIvdTEvZGlza2xl c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNz L2NwMTUwMC0xL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzIDQKIyA0NyAiL3UxL2Rpc2tsZXNzL2Nw MTUwMC0xL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0x L3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJldGVzdC5oIiAxIDMgNAojIDQ4ICIvdTEvZGlza2xlc3Mv Y3AxNTAwLTEvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMgNAojIDgwICIvdTEvZGlza2xlc3MvY3Ax NTAwLTEvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKc3RydWN0IHRtIHsKICAgICAgICBpbnQgdG1f c2VjOwogICAgICAgIGludCB0bV9taW47CiAgICAgICAgaW50IHRtX2hvdXI7CiAgICAgICAgaW50 IHRtX21kYXk7CiAgICAgICAgaW50IHRtX21vbjsKICAgICAgICBpbnQgdG1feWVhcjsKICAgICAg ICBpbnQgdG1fd2RheTsKICAgICAgICBpbnQgdG1feWRheTsKICAgICAgICBpbnQgdG1faXNkc3Q7 CiAgICAgICAgbG9uZyB0bV9nbXRvZmY7CiAgICAgICAgY2hhciAqdG1fem9uZTsKfTsKCgpjaGFy ICphc2N0aW1lIChjb25zdCBzdHJ1Y3QgdG0gKik7CmNsb2NrX3QgY2xvY2sgKHZvaWQpOwpjaGFy ICpjdGltZSAoY29uc3QgdGltZV90ICopOwpkb3VibGUgZGlmZnRpbWUgKHRpbWVfdCwgdGltZV90 KTsKc3RydWN0IHRtICpnbXRpbWUgKGNvbnN0IHRpbWVfdCAqKTsKc3RydWN0IHRtICpsb2NhbHRp bWUgKGNvbnN0IHRpbWVfdCAqKTsKdGltZV90IG1rdGltZSAoc3RydWN0IHRtICopOwpzaXplX3Qg c3RyZnRpbWUgKGNoYXIgKiBfX3Jlc3RyaWN0LCBzaXplX3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3Ry aWN0LCBjb25zdCBzdHJ1Y3QgdG0gKiBfX3Jlc3RyaWN0KTsKCnRpbWVfdCBfdGltZSAodGltZV90 ICopOwoKCgpleHRlcm4gY2hhciAqX3R6bmFtZVsyXTsKdm9pZCBfdHpzZXQgKHZvaWQpOwoKCgoK CgpleHRlcm4gaW50IF9kYXlsaWdodDsKCmV4dGVybiBsb25nIGludCB0aW1lem9uZSBfX2FzbV9f KCJfX3RpbWV6b25lMTMiKTsKCmNoYXIgKl9zdHJwdGltZSAoY29uc3QgY2hhciAqIF9fcmVzdHJp Y3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBzdHJ1Y3QgdG0gKiBfX3Jlc3RyaWN0KTsKCgoK CgojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAxIDMg NAojIDEyNyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzIDQK c3RydWN0IHNpZ2V2ZW50OwpzdHJ1Y3QgaXRpbWVyc3BlYzsKaW50IGNsb2NrX2dldHJlcyAoY2xv Y2tpZF90LCBzdHJ1Y3QgdGltZXNwZWMgKik7CmludCBjbG9ja19nZXR0aW1lIChjbG9ja2lkX3Qs IHN0cnVjdCB0aW1lc3BlYyAqKTsKaW50IF9jbG9ja19zZXR0aW1lIChjbG9ja2lkX3QsIGNvbnN0 IHN0cnVjdCB0aW1lc3BlYyAqKTsKaW50IG5hbm9zbGVlcCAoY29uc3Qgc3RydWN0IHRpbWVzcGVj ICosIHN0cnVjdCB0aW1lc3BlYyAqKTsKaW50IHRpbWVyX2NyZWF0ZSAoY2xvY2tpZF90LCBzdHJ1 Y3Qgc2lnZXZlbnQgKiwgdGltZXJfdCAqKTsKaW50IHRpbWVyX2RlbGV0ZSAodGltZXJfdCk7Cmlu dCB0aW1lcl9nZXRvdmVycnVuICh0aW1lcl90KTsKaW50IHRpbWVyX2dldHRpbWUgKHRpbWVyX3Qs IHN0cnVjdCBpdGltZXJzcGVjICopOwppbnQgdGltZXJfc2V0dGltZSAodGltZXJfdCwgaW50LCBj b25zdCBzdHJ1Y3QgaXRpbWVyc3BlYyAqLCBzdHJ1Y3QgaXRpbWVyc3BlYyAqKTsKCgoKCgoKY2hh ciAqX2FzY3RpbWVfciAoY29uc3Qgc3RydWN0IHRtICogX19yZXN0cmljdCwgY2hhciAqIF9fcmVz dHJpY3QpOwpjaGFyICpfY3RpbWVfciAoY29uc3QgdGltZV90ICosIGNoYXIgKik7CnN0cnVjdCB0 bSAqX2dtdGltZV9yIChjb25zdCB0aW1lX3QgKiBfX3Jlc3RyaWN0LCBzdHJ1Y3QgdG0gKiBfX3Jl c3RyaWN0KTsKc3RydWN0IHRtICpfbG9jYWx0aW1lX3IgKGNvbnN0IHRpbWVfdCAqIF9fcmVzdHJp Y3QsIHN0cnVjdCB0bSAqIF9fcmVzdHJpY3QpOwoKCgp0aW1lX3QgX3RpbWUycG9zaXggKHRpbWVf dCk7CnRpbWVfdCBfcG9zaXgydGltZSAodGltZV90KTsKdGltZV90IF90aW1lZ20gKHN0cnVjdCB0 bSAqY29uc3QpOwp0aW1lX3QgX3RpbWVvZmYgKHN0cnVjdCB0bSAqY29uc3QsIGNvbnN0IGxvbmcp Owp0aW1lX3QgX3RpbWVsb2NhbCAoc3RydWN0IHRtICpjb25zdCk7CgoKCnZvaWQgX3R6c2V0d2Fs bCAodm9pZCk7CnN0cnVjdCB0bSAqX29mZnRpbWUgKGNvbnN0IHRpbWVfdCAqY29uc3QsIGNvbnN0 IGxvbmcpOwoKCgoKIyAxNzcgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMv dGltZS5oIiAyIDMgNAoKCgoKCmludCBfYWRqdGltZSAoY29uc3Qgc3RydWN0IHRpbWV2YWwgKiwg c3RydWN0IHRpbWV2YWwgKik7CmludCBmdXRpbWVzIChpbnQsIGNvbnN0IHN0cnVjdCB0aW1ldmFs ICopOwppbnQgZ2V0aXRpbWVyIChpbnQsIHN0cnVjdCBpdGltZXJ2YWwgKik7CmludCBnZXR0aW1l b2ZkYXkgKHN0cnVjdCB0aW1ldmFsICosIHN0cnVjdCB0aW1lem9uZSAqKTsKaW50IGx1dGltZXMg KGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IHRpbWV2YWwgKik7CmludCBzZXRpdGltZXIgKGlu dCwgY29uc3Qgc3RydWN0IGl0aW1lcnZhbCAqLCBzdHJ1Y3QgaXRpbWVydmFsICopOwppbnQgX3Nl dHRpbWVvZmRheSAoY29uc3Qgc3RydWN0IHRpbWV2YWwgKiwgY29uc3Qgc3RydWN0IHRpbWV6b25l ICopOwppbnQgdXRpbWVzIChjb25zdCBjaGFyICosIGNvbnN0IHN0cnVjdCB0aW1ldmFsICopOwoK IyA1MSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDIgMyA0 CiMgMTA5ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0 CnN0cnVjdCBzdGF0IHsKICAgICAgICBkZXZfdCBzdF9kZXY7CiAgICAgICAgaW5vX3Qgc3RfaW5v OwogICAgICAgIF9fbW9kZV90IHN0X21vZGU7CiAgICAgICAgbmxpbmtfdCBzdF9ubGluazsKICAg ICAgICBfX3VpZF90IHN0X3VpZDsKICAgICAgICBfX2dpZF90IHN0X2dpZDsKICAgICAgICBkZXZf dCBzdF9yZGV2OwoKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgc3RfYXRpbWVzcGVjOwogICAgICAg IHN0cnVjdCB0aW1lc3BlYyBzdF9tdGltZXNwZWM7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIHN0 X2N0aW1lc3BlYzsKIyAxMzMgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMv c3RhdC5oIiAzIDQKICAgICAgICBfX29mZl90IHN0X3NpemU7CiAgICAgICAgYmxrY250X3Qgc3Rf YmxvY2tzOwogICAgICAgIGJsa3NpemVfdCBzdF9ibGtzaXplOwogICAgICAgIHVfaW50MzJfdCBz dF9mbGFnczsKICAgICAgICB1X2ludDMyX3Qgc3RfZ2VuOwogICAgICAgIF9faW50NjRfdCBzdF9x c3BhcmVbMl07Cn07CiMgMjYzICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lz L3N0YXQuaCIgMyA0CgppbnQgY2htb2QgKGNvbnN0IGNoYXIgKiwgX19tb2RlX3QpOwppbnQgbWtk aXIgKGNvbnN0IGNoYXIgKiwgX19tb2RlX3QpOwppbnQgbWtmaWZvIChjb25zdCBjaGFyICosIF9f bW9kZV90KTsKCgoKCgoKaW50IHN0YXQgKGNvbnN0IGNoYXIgKiwgc3RydWN0IHN0YXQgKikgX19h c21fXygiX19zdGF0MTMiKTsKaW50IGZzdGF0IChpbnQsIHN0cnVjdCBzdGF0ICopIF9fYXNtX18o Il9fZnN0YXQxMyIpOwoKX19tb2RlX3QgdW1hc2sgKF9fbW9kZV90KTsKCmludCBmY2htb2QgKGlu dCwgX19tb2RlX3QpOwoKCgoKaW50IGxzdGF0IChjb25zdCBjaGFyICosIHN0cnVjdCBzdGF0ICop IF9fYXNtX18oIl9fbHN0YXQxMyIpOwoKaW50IG1rbm9kIChjb25zdCBjaGFyICosIF9fbW9kZV90 LCBkZXZfdCk7CgoKCmludCBjaGZsYWdzIChjb25zdCBjaGFyICosIHVuc2lnbmVkIGxvbmcpOwpp bnQgZmNoZmxhZ3MgKGludCwgdW5zaWduZWQgbG9uZyk7CmludCBsY2hmbGFncyAoY29uc3QgY2hh ciAqLCB1bnNpZ25lZCBsb25nKTsKaW50IGxjaG1vZCAoY29uc3QgY2hhciAqLCBfX21vZGVfdCk7 CgoKIyA1NyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9mY250bC5oIiAy IDMgNAojIDIzMyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9mY250bC5o IiAzIDQKc3RydWN0IGZsb2NrIHsKICAgICAgICBfX29mZl90IGxfc3RhcnQ7CiAgICAgICAgX19v ZmZfdCBsX2xlbjsKICAgICAgICBfX3BpZF90IGxfcGlkOwogICAgICAgIHNob3J0IGxfdHlwZTsK ICAgICAgICBzaG9ydCBsX3doZW5jZTsKfTsKIyAyNjQgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91 c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMyA0CgppbnQgb3BlbiAoY29uc3QgY2hhciAqLCBpbnQs IC4uLik7CmludCBjcmVhdCAoY29uc3QgY2hhciAqLCBfX21vZGVfdCk7CmludCBmY250bCAoaW50 LCBpbnQsIC4uLik7CgppbnQgZmxvY2sgKGludCwgaW50KTsKCgojIDQyICIvdTEvZGlza2xlc3Mv Y3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL2ZpbGUuaCIgMiAzIDQKIyAxICIvdTEvZGlza2xlc3Mv Y3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3VuaXN0ZC5oIiAxIDMgNAojIDQxICIvdTEvZGlza2xl c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL3VuaXN0ZC5oIiAzIDQKIyAxICIvdTEvZGlza2xl c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmV0ZXN0LmgiIDEgMyA0CiMgNDIgIi91 MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvdW5pc3RkLmgiIDIgMyA0CiMgNDMg Ii91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZmlsZS5oIiAyIDMgNAojIDQ4 ICIvdTEvbmV0YnNkL3NyYy9saWIvbGliYy9nZW4vZ2V0dXNlcnNoZWxsLmMiIDIKCiMgMSAiL3Ux L2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDEgMyA0CiMgNDYgIi91MS9k aXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9jdHlwZS5oIiAzIDQKIyAxICIvdTEvZGlza2xl c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmV0ZXN0LmgiIDEgMyA0CiMgNDcgIi91 MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9jdHlwZS5oIiAyIDMgNAojIDU5ICIvdTEv ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMyA0CmV4dGVybiBjb25zdCB1 bnNpZ25lZCBjaGFyICpfY3R5cGVfOwpleHRlcm4gY29uc3Qgc2hvcnQgKl90b2xvd2VyX3RhYl87 CmV4dGVybiBjb25zdCBzaG9ydCAqX3RvdXBwZXJfdGFiXzsKCgoKaW50IGlzYWxudW0gKGludCk7 CmludCBpc2FscGhhIChpbnQpOwppbnQgaXNjbnRybCAoaW50KTsKaW50IGlzZGlnaXQgKGludCk7 CmludCBpc2dyYXBoIChpbnQpOwppbnQgaXNsb3dlciAoaW50KTsKaW50IGlzcHJpbnQgKGludCk7 CmludCBpc3B1bmN0IChpbnQpOwppbnQgaXNzcGFjZSAoaW50KTsKaW50IGlzdXBwZXIgKGludCk7 CmludCBpc3hkaWdpdCAoaW50KTsKaW50IHRvbG93ZXIgKGludCk7CmludCB0b3VwcGVyIChpbnQp OwoKCgppbnQgaXNhc2NpaSAoaW50KTsKaW50IHRvYXNjaWkgKGludCk7CmludCBfdG9sb3dlciAo aW50KTsKaW50IF90b3VwcGVyIChpbnQpOwoKCgoKaW50IGlzYmxhbmsgKGludCk7CgoKIyA1MCAi L3UxL25ldGJzZC9zcmMvbGliL2xpYmMvZ2VuL2dldHVzZXJzaGVsbC5jIiAyCiMgMSAiL3UxL2Rp c2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMyA0CiMgNDcgIi91MS9kaXNr bGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9lcnJuby5oIiAzIDQKIyAxICIvdTEvZGlza2xlc3Mv Y3AxNTAwLTEvdXNyL2luY2x1ZGUvc3lzL2Vycm5vLmgiIDEgMyA0CiMgNDggIi91MS9kaXNrbGVz cy9jcDE1MDAtMS91c3IvaW5jbHVkZS9lcnJuby5oIiAyIDMgNAojIDEgIi91MS9kaXNrbGVzcy9j cDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZXRlc3QuaCIgMSAzIDQKIyA0OSAiL3UxL2Rp c2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDIgMyA0CgoKCmludCAqX19lcnJu byAodm9pZCk7CgoKCgoKZXh0ZXJuIGNvbnN0IGludCBfc3lzX25lcnIgX19hc21fXygiX19zeXNf bmVycjE0Iik7CmV4dGVybiBjb25zdCBjaGFyICpjb25zdCAqX3N5c19lcnJsaXN0IF9fYXNtX18o Il9fc3lzX2Vycmxpc3QxNCIpOwoKCiMgNTEgIi91MS9uZXRic2Qvc3JjL2xpYi9saWJjL2dlbi9n ZXR1c2Vyc2hlbGwuYyIgMgojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9u c3N3aXRjaC5oIiAxIDMgNAojIDEwOSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRl L25zc3dpdGNoLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgY29uc3QgY2hhciAqc3Jj OwogICAgICAgIGludCAoKmNhbGxiYWNrKSAodm9pZCAqcmV0dmFsLCB2b2lkICpjYl9kYXRhLCBj aGFyICopOwoKICAgICAgICB2b2lkICpjYl9kYXRhOwp9IG5zX2R0YWI7CiMgMTM5ICIvdTEvZGlz a2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvbnNzd2l0Y2guaCIgMyA0CnR5cGVkZWYgc3RydWN0 IHsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIHVfaW50MzJfdCBmbGFnczsKfSBu c19zcmM7CgoKCgoKCmV4dGVybiBjb25zdCBuc19zcmMgX19uc2RlZmF1bHRzcmNbXTsKIyAxNzQg Ii91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9uc3N3aXRjaC5oIiAzIDQKCmludCBf bnNkaXNwYXRjaCAodm9pZCAqLCBjb25zdCBuc19kdGFiIFtdLCBjb25zdCBjaGFyICosIGNvbnN0 IGNoYXIgKiwgY29uc3QgbnNfc3JjIFtdLCAuLi4pOwojIDE4NyAiL3UxL2Rpc2tsZXNzL2NwMTUw MC0xL3Vzci9pbmNsdWRlL25zc3dpdGNoLmgiIDMgNAoKIyA1MiAiL3UxL25ldGJzZC9zcmMvbGli L2xpYmMvZ2VuL2dldHVzZXJzaGVsbC5jIiAyCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vz ci9pbmNsdWRlL3BhdGhzLmgiIDEgMyA0CiMgNTMgIi91MS9uZXRic2Qvc3JjL2xpYi9saWJjL2dl bi9nZXR1c2Vyc2hlbGwuYyIgMgojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVk ZS9zdGRpby5oIiAxIDMgNAojIDQ3ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUv c3RkaW8uaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9m ZWF0dXJldGVzdC5oIiAxIDMgNAojIDQ4ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1 ZGUvc3RkaW8uaCIgMiAzIDQKIyA2MyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRl L3N0ZGlvLmgiIDMgNAp0eXBlZGVmIF9fb2ZmX3QgZnBvc190OwojIDc5ICIvdTEvZGlza2xlc3Mv Y3AxNTAwLTEvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CnN0cnVjdCBfX3NidWYgewogICAgICAg IHVuc2lnbmVkIGNoYXIgKl9iYXNlOwogICAgICAgIGludCBfc2l6ZTsKfTsKIyAxMTAgIi91MS9k aXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3Qg X19zRklMRSB7CiAgICAgICAgdW5zaWduZWQgY2hhciAqX3A7CiAgICAgICAgaW50IF9yOwogICAg ICAgIGludCBfdzsKICAgICAgICBzaG9ydCBfZmxhZ3M7CiAgICAgICAgc2hvcnQgX2ZpbGU7CiAg ICAgICAgc3RydWN0IF9fc2J1ZiBfYmY7CiAgICAgICAgaW50IF9sYmZzaXplOwoKCiAgICAgICAg dm9pZCAqX2Nvb2tpZTsKICAgICAgICBpbnQgKCpfY2xvc2UpICh2b2lkICopOwogICAgICAgIGlu dCAoKl9yZWFkKSAodm9pZCAqLCBjaGFyICosIGludCk7CiAgICAgICAgZnBvc190ICgqX3NlZWsp ICh2b2lkICosIGZwb3NfdCwgaW50KTsKICAgICAgICBpbnQgKCpfd3JpdGUpICh2b2lkICosIGNv bnN0IGNoYXIgKiwgaW50KTsKCgogICAgICAgIHN0cnVjdCBfX3NidWYgX2V4dDsKCgogICAgICAg IHVuc2lnbmVkIGNoYXIgKl91cDsKICAgICAgICBpbnQgX3VyOwoKCiAgICAgICAgdW5zaWduZWQg Y2hhciBfdWJ1ZlszXTsKICAgICAgICB1bnNpZ25lZCBjaGFyIF9uYnVmWzFdOwoKCiAgICAgICAg c3RydWN0IF9fc2J1ZiBfbGI7CgoKICAgICAgICBpbnQgX2Jsa3NpemU7CiAgICAgICAgZnBvc190 IF9vZmZzZXQ7Cn0gRklMRTsKCgpleHRlcm4gRklMRSBfX3NGW107CgojIDIxNiAiL3UxL2Rpc2ts ZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoKdm9pZCBjbGVhcmVyciAoRklM RSAqKTsKaW50IGZjbG9zZSAoRklMRSAqKTsKaW50IGZlb2YgKEZJTEUgKik7CmludCBmZXJyb3Ig KEZJTEUgKik7CmludCBmZmx1c2ggKEZJTEUgKik7CmludCBmZ2V0YyAoRklMRSAqKTsKaW50IGZn ZXRwb3MgKEZJTEUgKiBfX3Jlc3RyaWN0LCBmcG9zX3QgKiBfX3Jlc3RyaWN0KTsKY2hhciAqZmdl dHMgKGNoYXIgKiBfX3Jlc3RyaWN0LCBpbnQsIEZJTEUgKiBfX3Jlc3RyaWN0KTsKRklMRSAqZm9w ZW4gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKaW50IGZwcmludGYgKEZJTEUgKiBfX3Jl c3RyaWN0ICwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIC4uLik7CmludCBmcHV0YyAoaW50LCBG SUxFICopOwppbnQgZnB1dHMgKGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBGSUxFICogX19yZXN0 cmljdCk7CnNpemVfdCBmcmVhZCAodm9pZCAqIF9fcmVzdHJpY3QsIHNpemVfdCwgc2l6ZV90LCBG SUxFICogX19yZXN0cmljdCk7CkZJTEUgKmZyZW9wZW4gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh ciAqLCBGSUxFICogX19yZXN0cmljdCk7CmludCBmc2NhbmYgKEZJTEUgKiBfX3Jlc3RyaWN0LCBj b25zdCBjaGFyICogX19yZXN0cmljdCwgLi4uKTsKaW50IGZzZWVrIChGSUxFICosIGxvbmcsIGlu dCk7CmludCBmc2V0cG9zIChGSUxFICosIGNvbnN0IGZwb3NfdCAqKTsKbG9uZyBmdGVsbCAoRklM RSAqKTsKc2l6ZV90IGZ3cml0ZSAoY29uc3Qgdm9pZCAqIF9fcmVzdHJpY3QsIHNpemVfdCwgc2l6 ZV90LCBGSUxFICogX19yZXN0cmljdCk7CgppbnQgZ2V0YyAoRklMRSAqKTsKaW50IGdldGNoYXIg KHZvaWQpOwp2b2lkIHBlcnJvciAoY29uc3QgY2hhciAqKTsKaW50IHByaW50ZiAoY29uc3QgY2hh ciAqIF9fcmVzdHJpY3QsIC4uLik7CmludCBwdXRjIChpbnQsIEZJTEUgKik7CmludCBwdXRjaGFy IChpbnQpOwppbnQgcHV0cyAoY29uc3QgY2hhciAqKTsKaW50IHJlbW92ZSAoY29uc3QgY2hhciAq KTsKdm9pZCByZXdpbmQgKEZJTEUgKik7CmludCBzY2FuZiAoY29uc3QgY2hhciAqIF9fcmVzdHJp Y3QsIC4uLik7CnZvaWQgc2V0YnVmIChGSUxFICogX19yZXN0cmljdCwgY2hhciAqIF9fcmVzdHJp Y3QpOwppbnQgc2V0dmJ1ZiAoRklMRSAqIF9fcmVzdHJpY3QsIGNoYXIgKiBfX3Jlc3RyaWN0LCBp bnQsIHNpemVfdCk7CmludCBzc2NhbmYgKGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBjb25zdCBj aGFyICogX19yZXN0cmljdCwgLi4uKTsKRklMRSAqdG1wZmlsZSAodm9pZCk7CmludCB1bmdldGMg KGludCwgRklMRSAqKTsKaW50IHZmcHJpbnRmIChGSUxFICogX19yZXN0cmljdCwgY29uc3QgY2hh ciAqIF9fcmVzdHJpY3QsIGNoYXIgKik7CgppbnQgdnByaW50ZiAoY29uc3QgY2hhciAqIF9fcmVz dHJpY3QsIGNoYXIgKik7CgoKY2hhciAqZ2V0cyAoY2hhciAqKTsKaW50IHNwcmludGYgKGNoYXIg KiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwgLi4uKTsKY2hhciAqdG1wbmFt IChjaGFyICopOwppbnQgdnNwcmludGYgKGNoYXIgKiBfX3Jlc2l0cmN0LCBjb25zdCBjaGFyICog X19yZXN0cmljdCwgY2hhciAqKTsKCgoKCgoKaW50IHJlbmFtZSAoY29uc3QgY2hhciAqLCBjb25z dCBjaGFyICopOwoKCiMgMjc4ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3Rk aW8uaCIgMyA0CgpjaGFyICpfY3Rlcm1pZCAoY2hhciAqKTsKCgoKY2hhciAqY3VzZXJpZCAoY2hh ciAqKTsKCkZJTEUgKl9mZG9wZW4gKGludCwgY29uc3QgY2hhciAqKTsKaW50IGZpbGVubyAoRklM RSAqKTsKCiMgMjk2ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3RkaW8uaCIg MyA0CgoKCgoKCmludCBnZXRjX3VubG9ja2VkIChGSUxFICopOwppbnQgZ2V0Y2hhcl91bmxvY2tl ZCAodm9pZCk7CmludCBwdXRjX3VubG9ja2VkIChpbnQsIEZJTEUgKik7CmludCBwdXRjaGFyX3Vu bG9ja2VkIChpbnQpOwoKIyAzMTUgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9z dGRpby5oIiAzIDQKCmludCBfcGNsb3NlIChGSUxFICopOwpGSUxFICpfcG9wZW4gKGNvbnN0IGNo YXIgKiwgY29uc3QgY2hhciAqKTsKCgoKCgoKCgoKaW50IGdldHcgKEZJTEUgKik7CmludCBwdXR3 IChpbnQsIEZJTEUgKik7CmludCBfc25wcmludGYgKGNoYXIgKiBfX3Jlc3RyaWN0LCBzaXplX3Qs IGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCAuLi4pCiAgICAgICAgICAgIF9fYXR0cmlidXRlX18o KF9fZm9ybWF0X18oX19wcmludGZfXywgMywgNCkpKTsKaW50IF92c25wcmludGYgKGNoYXIgKiBf X3Jlc3RyaWN0LCBzaXplX3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBjaGFyICopCgogICAg ICAgICAgICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fcHJpbnRmX18sIDMsIDApKSk7CgoK Y2hhciAqdGVtcG5hbSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwoKCiMgMzUxICIvdTEv ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CgppbnQgX2ZzZWVrbyAo RklMRSAqLCBfX29mZl90LCBpbnQpOwpfX29mZl90IF9mdGVsbG8gKEZJTEUgKik7CgoKCgoKCgoK CmludCBfYXNwcmludGYgKGNoYXIgKiogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJp Y3QsIC4uLikKICAgICAgICAgICAgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhfX3ByaW50Zl9f LCAyLCAzKSkpOwpjaGFyICpfZmdldGxuIChGSUxFICogX19yZXN0cmljdCwgc2l6ZV90ICogX19y ZXN0cmljdCk7CmludCBmcHVyZ2UgKEZJTEUgKik7CnZvaWQgc2V0YnVmZmVyIChGSUxFICosIGNo YXIgKiwgaW50KTsKaW50IHNldGxpbmVidWYgKEZJTEUgKik7CmludCB2YXNwcmludGYgKGNoYXIg KiogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIGNoYXIgKikKCiAgICAgICAg ICAgIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18oX19wcmludGZfXywgMiwgMCkpKTsKaW50IHZz Y2FuZiAoY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIGNoYXIgKikKICAgICAgICAgICAgX19hdHRy aWJ1dGVfXygoX19mb3JtYXRfXyhfX3NjYW5mX18sIDEsIDApKSk7CmludCB2c3NjYW5mIChjb25z dCBjaGFyICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIGNoYXIgKikKCiAg ICAgICAgICAgIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18oX19zY2FuZl9fLCAyLCAwKSkpOwpj b25zdCBjaGFyICpfX2ZtdGNoZWNrIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKikKICAgICAg ICAgICAgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfYXJnX18oMikpKTsKCiMgMzkxICIvdTEvZGlz a2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CgpGSUxFICpmdW5vcGVuIChj b25zdCB2b2lkICosIGludCAoKikodm9pZCAqLCBjaGFyICosIGludCksIGludCAoKikodm9pZCAq LCBjb25zdCBjaGFyICosIGludCksIGZwb3NfdCAoKikodm9pZCAqLCBmcG9zX3QsIGludCksIGlu dCAoKikodm9pZCAqKSk7CgoKCgoKCgoKCgoKCgppbnQgX19zcmdldCAoRklMRSAqKTsKaW50IF9f c3Zmc2NhbmYgKEZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwgY2hh ciAqKTsKCmludCBfX3N3YnVmIChpbnQsIEZJTEUgKik7CgoKCgoKCgoKc3RhdGljIF9faW5saW5l IGludCBfX3NwdXRjKGludCBfYywgRklMRSAqX3ApIHsKICAgICAgICBpZiAoLS1fcC0+X3cgPj0g MCB8fCAoX3AtPl93ID49IF9wLT5fbGJmc2l6ZSAmJiAoY2hhcilfYyAhPSAnXG4nKSkKICAgICAg ICAgICAgICAgIHJldHVybiAoKl9wLT5fcCsrID0gX2MpOwogICAgICAgIGVsc2UKICAgICAgICAg ICAgICAgIHJldHVybiAoX19zd2J1ZihfYywgX3ApKTsKfQojIDU0ICIvdTEvbmV0YnNkL3NyYy9s aWIvbGliYy9nZW4vZ2V0dXNlcnNoZWxsLmMiIDIKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEv dXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMyA0CiMgNDIgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91 c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9p bmNsdWRlL3N5cy9mZWF0dXJldGVzdC5oIiAxIDMgNAojIDQzICIvdTEvZGlza2xlc3MvY3AxNTAw LTEvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CiMgNTcgIi91MS9kaXNrbGVzcy9jcDE1MDAt MS91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CnR5cGVkZWYgaW50IHdjaGFyX3Q7CgoKCnR5cGVk ZWYgc3RydWN0IHsKICAgICAgICBpbnQgcXVvdDsKICAgICAgICBpbnQgcmVtOwp9IGRpdl90OwoK dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGxvbmcgcXVvdDsKICAgICAgICBsb25nIHJlbTsKfSBs ZGl2X3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCB7CgogICAgICAgIGxvbmcgbG9uZyBpbnQgcXVvdDsK CiAgICAgICAgbG9uZyBsb25nIGludCByZW07Cn0gbGxkaXZfdDsKCgoKCnR5cGVkZWYgc3RydWN0 IHsKICAgICAgICBxdWFkX3QgcXVvdDsKICAgICAgICBxdWFkX3QgcmVtOwp9IHFkaXZfdDsKIyA5 OCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJu IHNpemVfdCBfX21iX2N1cl9tYXg7CgoKCiB2b2lkIGFib3J0ICh2b2lkKSBfX2F0dHJpYnV0ZV9f KChfX25vcmV0dXJuX18pKTsKIGludCBhYnMgKGludCk7CmludCBhdGV4aXQgKHZvaWQgKCopKHZv aWQpKTsKZG91YmxlIGF0b2YgKGNvbnN0IGNoYXIgKik7CmludCBhdG9pIChjb25zdCBjaGFyICop Owpsb25nIGF0b2wgKGNvbnN0IGNoYXIgKik7CgoKCnZvaWQgKmJzZWFyY2ggKGNvbnN0IHZvaWQg KiwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIHNpemVfdCwgaW50ICgqKShjb25zdCB2b2lkICosIGNv bnN0IHZvaWQgKikpOwoKCnZvaWQgKmNhbGxvYyAoc2l6ZV90LCBzaXplX3QpOwpkaXZfdCBkaXYg KGludCwgaW50KTsKIHZvaWQgZXhpdCAoaW50KSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18p KTsKdm9pZCBmcmVlICh2b2lkICopOwogY2hhciAqZ2V0ZW52IChjb25zdCBjaGFyICopOwogbG9u ZwogICAgICAgICBsYWJzIChsb25nKTsKbGRpdl90IGxkaXYgKGxvbmcsIGxvbmcpOwp2b2lkICpt YWxsb2MgKHNpemVfdCk7CnZvaWQgcXNvcnQgKHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIGludCAo KikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKCmludCByYW5kICh2b2lkKTsKdm9pZCAq cmVhbGxvYyAodm9pZCAqLCBzaXplX3QpOwp2b2lkIHNyYW5kICh1bnNpZ25lZCk7CmRvdWJsZSBz dHJ0b2QgKGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBjaGFyICoqIF9fcmVzdHJpY3QpOwpsb25n IHN0cnRvbCAoY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIGNoYXIgKiogX19yZXN0cmljdCwgaW50 KTsKdW5zaWduZWQgbG9uZwogICAgICAgICBzdHJ0b3VsIChjb25zdCBjaGFyICogX19yZXN0cmlj dCwgY2hhciAqKiBfX3Jlc3RyaWN0LCBpbnQpOwppbnQgc3lzdGVtIChjb25zdCBjaGFyICopOwoK CmludCBtYmxlbiAoY29uc3QgY2hhciAqLCBzaXplX3QpOwpzaXplX3QgbWJzdG93Y3MgKHdjaGFy X3QgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwgc2l6ZV90KTsKaW50IHdj dG9tYiAoY2hhciAqLCB3Y2hhcl90KTsKaW50IG1idG93YyAod2NoYXJfdCAqIF9fcmVzdHJpY3Qs IGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBzaXplX3QpOwpzaXplX3Qgd2NzdG9tYnMgKGNoYXIg KiBfX3Jlc3RyaWN0LCBjb25zdCB3Y2hhcl90ICogX19yZXN0cmljdCwgc2l6ZV90KTsKIyAxNTAg Ii91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmludCByYW5k X3IgKHVuc2lnbmVkIGludCAqKTsKIyAxNTkgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5j bHVkZS9zdGRsaWIuaCIgMyA0CmRvdWJsZSBfZHJhbmQ0OCAodm9pZCk7CmRvdWJsZSBfZXJhbmQ0 OCAodW5zaWduZWQgc2hvcnRbM10pOwpsb25nIF9qcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydFszXSk7 CnZvaWQgX2xjb25nNDggKHVuc2lnbmVkIHNob3J0WzddKTsKbG9uZyBfbHJhbmQ0OCAodm9pZCk7 CmxvbmcgX21yYW5kNDggKHZvaWQpOwpsb25nIF9ucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydFszXSk7 CnVuc2lnbmVkIHNob3J0ICoKICAgICAgICAgX3NlZWQ0OCAodW5zaWduZWQgc2hvcnRbM10pOwp2 b2lkIF9zcmFuZDQ4IChsb25nKTsKCmludCBfcHV0ZW52IChjb25zdCBjaGFyICopOwojIDE4MCAi L3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKbG9uZyBfYTY0 bCAoY29uc3QgY2hhciAqKTsKY2hhciAqX2w2NGEgKGxvbmcpOwoKY2hhciAqX2luaXRzdGF0ZSAo dW5zaWduZWQgbG9uZywgY2hhciAqLCBzaXplX3QpOwpsb25nIF9yYW5kb20gKHZvaWQpOwpjaGFy ICpfc2V0c3RhdGUgKGNoYXIgKik7CnZvaWQgX3NyYW5kb20gKHVuc2lnbmVkIGxvbmcpOwoKY2hh ciAqbWtkdGVtcCAoY2hhciAqKTsKaW50IG1rc3RlbXAgKGNoYXIgKik7CgpjaGFyICpta3RlbXAg KGNoYXIgKik7CgoKaW50IHNldGtleSAoY29uc3QgY2hhciAqKTsKCmNoYXIgKl9yZWFscGF0aCAo Y29uc3QgY2hhciAqLCBjaGFyICopOwoKaW50IF90dHlzbG90ICh2b2lkKTsKCnZvaWQgKl92YWxs b2MgKHNpemVfdCk7CiMgMjA5ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3Rk bGliLmgiIDMgNApsb25nIGxvbmcgaW50IF9hdG9sbCAoY29uc3QgY2hhciAqKTsKCmxvbmcgbG9u ZyBpbnQgX2xsYWJzIChsb25nIGxvbmcgaW50KTsKCmxsZGl2X3QgX2xsZGl2IChsb25nIGxvbmcg aW50LCBsb25nIGxvbmcgaW50KTsKCmxvbmcgbG9uZyBpbnQgX3N0cnRvbGwgKGNvbnN0IGNoYXIg KiBfX3Jlc3RyaWN0LCBjaGFyICoqIF9fcmVzdHJpY3QsIGludCk7Cgp1bnNpZ25lZCBsb25nIGxv bmcgaW50CiAgICAgICAgICAgICAgICBfc3RydG91bGwgKGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0 LCBjaGFyICoqIF9fcmVzdHJpY3QsIGludCk7CiMgMjI5ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEv dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAp2b2lkICphbGxvY2EgKHNpemVfdCk7CgoKY2hhciAq X2dldGJzaXplIChpbnQgKiwgbG9uZyAqKTsKY2hhciAqX2NnZXRjYXAgKGNoYXIgKiwgY29uc3Qg Y2hhciAqLCBpbnQpOwppbnQgX2NnZXRjbG9zZSAodm9pZCk7CmludCBfY2dldGVudCAoY2hhciAq KiwgY2hhciAqKiwgY29uc3QgY2hhciAqKTsKaW50IF9jZ2V0Zmlyc3QgKGNoYXIgKiosIGNoYXIg KiopOwppbnQgX2NnZXRtYXRjaCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwppbnQgX2Nn ZXRuZXh0IChjaGFyICoqLCBjaGFyICoqKTsKaW50IF9jZ2V0bnVtIChjaGFyICosIGNvbnN0IGNo YXIgKiwgbG9uZyAqKTsKaW50IF9jZ2V0c2V0IChjb25zdCBjaGFyICopOwppbnQgX2NnZXRzdHIg KGNoYXIgKiwgY29uc3QgY2hhciAqLCBjaGFyICoqKTsKaW50IF9jZ2V0dXN0ciAoY2hhciAqLCBj b25zdCBjaGFyICosIGNoYXIgKiopOwoKaW50IF9kYWVtb24gKGludCwgaW50KTsKIGNoYXIgKl9k ZXZuYW1lIChkZXZfdCwgX19tb2RlX3QpOwppbnQgX2dldGxvYWRhdmcgKGRvdWJsZSBbXSwgaW50 KTsKCnZvaWQgY2ZyZWUgKHZvaWQgKik7CgppbnQgX2hlYXBzb3J0ICh2b2lkICosIHNpemVfdCwg c2l6ZV90LCBpbnQgKCopKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7CgppbnQgX21lcmdl c29ydCAodm9pZCAqLCBzaXplX3QsIHNpemVfdCwgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0 IHZvaWQgKikpOwoKaW50IF9yYWRpeHNvcnQgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiosIGludCwg Y29uc3QgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCk7CgppbnQgX3NyYWRpeHNvcnQgKGNvbnN0 IHVuc2lnbmVkIGNoYXIgKiosIGludCwgY29uc3QgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCk7 CgoKaW50IF9zZXRlbnYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOwp2b2lkIF91 bnNldGVudiAoY29uc3QgY2hhciAqKTsKdm9pZCBfc2V0cHJvY3RpdGxlIChjb25zdCBjaGFyICos IC4uLikKICAgICAgICAgICAgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhfX3ByaW50Zl9fLCAx LCAyKSkpOwpjb25zdCBjaGFyICpfZ2V0cHJvZ25hbWUgKHZvaWQpIF9fYXR0cmlidXRlX18oKF9f Y29uc3RfXykpOwp2b2lkIHNldHByb2duYW1lIChjb25zdCBjaGFyICopOwoKcXVhZF90IF9xYWJz IChxdWFkX3QpOwpxdWFkX3Qgc3RydG9xIChjb25zdCBjaGFyICogX19yZXN0cmljdCwgY2hhciAq KiBfX3Jlc3RyaWN0LCBpbnQpOwp1X3F1YWRfdCBzdHJ0b3VxIChjb25zdCBjaGFyICogX19yZXN0 cmljdCwgY2hhciAqKiBfX3Jlc3RyaWN0LCBpbnQpOwoKaW50IF9sNjRhX3IgKGxvbmcsIGNoYXIg KiwgaW50KTsKCnNpemVfdCBzaHF1b3RlIChjb25zdCBjaGFyICphcmcsIGNoYXIgKmJ1Ziwgc2l6 ZV90IGJ1ZnNpemUpOwpzaXplX3Qgc2hxdW90ZXYgKGludCBhcmdjLCBjaGFyICogY29uc3QgKiBh cmd2LCBjaGFyICpidWYsIHNpemVfdCBidWZzaXplKTsKCgoKCgoKcWRpdl90IF9xZGl2IChxdWFk X3QsIHF1YWRfdCk7CgoKIyA1NSAiL3UxL25ldGJzZC9zcmMvbGliL2xpYmMvZ2VuL2dldHVzZXJz aGVsbC5jIiAyCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N0cmluZy5o IiAxIDMgNAojIDUwICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3RyaW5nLmgi IDMgNAojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZXRl c3QuaCIgMSAzIDQKIyA1MSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N0cmlu Zy5oIiAyIDMgNAoKCnZvaWQgKm1lbWNociAoY29uc3Qgdm9pZCAqLCBpbnQsIHNpemVfdCk7Cmlu dCBtZW1jbXAgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwp2b2lkICptZW1j cHkgKHZvaWQgKiBfX3Jlc3RyaWN0LCBjb25zdCB2b2lkICogX19yZXN0cmljdCwgc2l6ZV90KTsK dm9pZCAqbWVtbW92ZSAodm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7CnZvaWQgKm1lbXNl dCAodm9pZCAqLCBpbnQsIHNpemVfdCk7CmNoYXIgKnN0cmNhdCAoY2hhciAqIF9fcmVzdHJpY3Qs IGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0KTsKY2hhciAqc3RyY2hyIChjb25zdCBjaGFyICosIGlu dCk7CmludCBzdHJjbXAgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKaW50IHN0cmNvbGwg KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqc3RyY3B5IChjaGFyICogX19yZXN0 cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QpOwpzaXplX3Qgc3RyY3NwbiAoY29uc3QgY2hh ciAqLCBjb25zdCBjaGFyICopOwogY2hhciAqc3RyZXJyb3IgKGludCk7CnNpemVfdCBzdHJsZW4g KGNvbnN0IGNoYXIgKik7CmNoYXIgKnN0cm5jYXQgKGNoYXIgKiBfX3Jlc3RyaWN0LCBjb25zdCBj aGFyICogX19yZXN0cmljdCwgc2l6ZV90KTsKaW50IHN0cm5jbXAgKGNvbnN0IGNoYXIgKiwgY29u c3QgY2hhciAqLCBzaXplX3QpOwpjaGFyICpzdHJuY3B5IChjaGFyICogX19yZXN0cmljdCwgY29u c3QgY2hhciAqIF9fcmVzdHJpY3QsIHNpemVfdCk7CmNoYXIgKnN0cnBicmsgKGNvbnN0IGNoYXIg KiwgY29uc3QgY2hhciAqKTsKY2hhciAqc3RycmNociAoY29uc3QgY2hhciAqLCBpbnQpOwpzaXpl X3Qgc3Ryc3BuIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmNoYXIgKnN0cnN0ciAoY29u c3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpjaGFyICpzdHJ0b2sgKGNoYXIgKiBfX3Jlc3RyaWN0 LCBjb25zdCBjaGFyICogX19yZXN0cmljdCk7CgoKCmNoYXIgKl9zdHJ0b2tfciAoY2hhciAqLCBj b25zdCBjaGFyICosIGNoYXIgKiopOwoKc2l6ZV90IHN0cnhmcm0gKGNoYXIgKiBfX3Jlc3RyaWN0 LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwgc2l6ZV90KTsKCgoKdm9pZCAqbWVtY2NweSAodm9p ZCAqLCBjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsKY2hhciAqX3N0cmR1cCAoY29uc3QgY2hh ciAqKTsKCgoKCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N0cmluZ3Mu aCIgMSAzIDQKIyA0MyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N0cmluZ3Mu aCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJl dGVzdC5oIiAxIDMgNAojIDQ0ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3Ry aW5ncy5oIiAyIDMgNAojIDU2ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3Ry aW5ncy5oIiAzIDQKCmludCBiY21wIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90 KTsKdm9pZCBiY29weSAoY29uc3Qgdm9pZCAqLCB2b2lkICosIHNpemVfdCk7CnZvaWQgYnplcm8g KHZvaWQgKiwgc2l6ZV90KTsKaW50IGZmcyAoaW50KTsKY2hhciAqaW5kZXggKGNvbnN0IGNoYXIg KiwgaW50KTsKY2hhciAqcmluZGV4IChjb25zdCBjaGFyICosIGludCk7CmludCBfc3RyY2FzZWNt cCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwppbnQgX3N0cm5jYXNlY21wIChjb25zdCBj aGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKCgoKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAw LTEvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMyA0CiMgNjkgIi91MS9kaXNrbGVzcy9jcDE1MDAt MS91c3IvaW5jbHVkZS9zdHJpbmdzLmgiIDIgMyA0CiMgOTAgIi91MS9kaXNrbGVzcy9jcDE1MDAt MS91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzIDQKc2l6ZV90IF9zdHJsY2F0IChjaGFyICosIGNv bnN0IGNoYXIgKiwgc2l6ZV90KTsKc2l6ZV90IF9zdHJsY3B5IChjaGFyICosIGNvbnN0IGNoYXIg Kiwgc2l6ZV90KTsKY2hhciAqX3N0cnNlcCAoY2hhciAqKiwgY29uc3QgY2hhciAqKTsKCgojIDU2 ICIvdTEvbmV0YnNkL3NyYy9saWIvbGliYy9nZW4vZ2V0dXNlcnNoZWxsLmMiIDIKIyAxICIvdTEv ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3RyaW5nbGlzdC5oIiAxIDMgNAojIDQyICIv dTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3RyaW5nbGlzdC5oIiAzIDQKdHlwZWRl ZiBzdHJ1Y3QgX3N0cmluZ2xpc3QgewogICAgICAgIGNoYXIgKipzbF9zdHI7CiAgICAgICAgc2l6 ZV90IHNsX21heDsKICAgICAgICBzaXplX3Qgc2xfY3VyOwp9IFN0cmluZ0xpc3Q7CgoKU3RyaW5n TGlzdCAqX3NsX2luaXQgKHZvaWQpOwppbnQgX3NsX2FkZCAoU3RyaW5nTGlzdCAqLCBjaGFyICop Owp2b2lkIF9zbF9mcmVlIChTdHJpbmdMaXN0ICosIGludCk7CmNoYXIgKl9zbF9maW5kIChTdHJp bmdMaXN0ICosIGNoYXIgKik7CgojIDU3ICIvdTEvbmV0YnNkL3NyYy9saWIvbGliYy9nZW4vZ2V0 dXNlcnNoZWxsLmMiIDIKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvdW5p c3RkLmgiIDEgMyA0CiMgODAgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS91bmlz dGQuaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N5cy9mZWF0 dXJldGVzdC5oIiAxIDMgNAojIDgxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUv dW5pc3RkLmgiIDIgMyA0CiMgOTQgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS91 bmlzdGQuaCIgMyA0Cgogdm9pZCBfZXhpdCAoaW50KSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJu X18pKTsKaW50IGFjY2VzcyAoY29uc3QgY2hhciAqLCBpbnQpOwp1bnNpZ25lZCBpbnQgX2FsYXJt ICh1bnNpZ25lZCBpbnQpOwppbnQgY2hkaXIgKGNvbnN0IGNoYXIgKik7CgoKCmludCBjaG93biAo Y29uc3QgY2hhciAqLCBfX3VpZF90LCBfX2dpZF90KTsKCmludCBjbG9zZSAoaW50KTsKc2l6ZV90 IF9jb25mc3RyIChpbnQsIGNoYXIgKiwgc2l6ZV90KTsKCgoKCgppbnQgZHVwIChpbnQpOwppbnQg ZHVwMiAoaW50LCBpbnQpOwppbnQgX2V4ZWNsIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwg Li4uKTsKaW50IF9leGVjbGUgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQg X2V4ZWNscCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7CmludCBfZXhlY3YgKGNv bnN0IGNoYXIgKiwgY2hhciAqIGNvbnN0ICopOwppbnQgZXhlY3ZlIChjb25zdCBjaGFyICosIGNo YXIgKiBjb25zdCAqLCBjaGFyICogY29uc3QgKik7CmludCBfZXhlY3ZwIChjb25zdCBjaGFyICos IGNoYXIgKiBjb25zdCAqKTsKX19waWRfdCBfZm9yayAodm9pZCk7CmxvbmcgZnBhdGhjb25mIChp bnQsIGludCk7CmNoYXIgKl9nZXRjd2QgKGNoYXIgKiwgc2l6ZV90KTsKX19naWRfdCBnZXRlZ2lk ICh2b2lkKTsKX191aWRfdCBnZXRldWlkICh2b2lkKTsKX19naWRfdCBnZXRnaWQgKHZvaWQpOwpp bnQgZ2V0Z3JvdXBzIChpbnQsIF9fZ2lkX3QgW10pOwogY2hhciAqX2dldGxvZ2luICh2b2lkKTsK X19waWRfdCBnZXRwZ3JwICh2b2lkKTsKX19waWRfdCBnZXRwaWQgKHZvaWQpOwpfX3BpZF90IGdl dHBwaWQgKHZvaWQpOwpfX3VpZF90IGdldHVpZCAodm9pZCk7CmludCBfaXNhdHR5IChpbnQpOwpp bnQgbGluayAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpsb25nIHBhdGhjb25mIChjb25z dCBjaGFyICosIGludCk7CmludCBfcGF1c2UgKHZvaWQpOwppbnQgX3BpcGUgKGludCAqKTsKc3Np emVfdCByZWFkIChpbnQsIHZvaWQgKiwgc2l6ZV90KTsKaW50IHJtZGlyIChjb25zdCBjaGFyICop OwppbnQgc2V0Z2lkIChfX2dpZF90KTsKaW50IHNldHBnaWQgKF9fcGlkX3QsIF9fcGlkX3QpOwpf X3BpZF90IHNldHNpZCAodm9pZCk7CmludCBzZXR1aWQgKF9fdWlkX3QpOwp1bnNpZ25lZCBpbnQg X3NsZWVwICh1bnNpZ25lZCBpbnQpOwpsb25nIF9fc3lzY29uZiAoaW50KTsKX19waWRfdCBfdGNn ZXRwZ3JwIChpbnQpOwppbnQgX3Rjc2V0cGdycCAoaW50LCBfX3BpZF90KTsKIGNoYXIgKl90dHlu YW1lIChpbnQpOwppbnQgdW5saW5rIChjb25zdCBjaGFyICopOwpzc2l6ZV90IHdyaXRlIChpbnQs IGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKCgoKCgoKCmludCBfZ2V0b3B0IChpbnQsIGNoYXIgKiBj b25zdCBbXSwgY29uc3QgY2hhciAqKTsKCmV4dGVybiBjaGFyICpvcHRhcmc7CmV4dGVybiBpbnQg b3B0ZXJyOwpleHRlcm4gaW50IG9wdGluZDsKZXh0ZXJuIGludCBvcHRvcHQ7CiMgMTkxICIvdTEv ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNAppbnQgZmRhdGFzeW5j IChpbnQpOwppbnQgZnN5bmMgKGludCk7CgoKCgoKCgppbnQgY2hyb290IChjb25zdCBjaGFyICop OwppbnQgX25pY2UgKGludCk7CiMgMjE4ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1 ZGUvdW5pc3RkLmgiIDMgNAogY2hhciAqY3J5cHQgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq KTsKaW50IGVuY3J5cHQgKGNoYXIgKiwgaW50KTsKY2hhciAqX2dldHBhc3MgKGNvbnN0IGNoYXIg Kik7Cl9fcGlkX3QgZ2V0c2lkIChfX3BpZF90KTsKIyAyNDEgIi91MS9kaXNrbGVzcy9jcDE1MDAt MS91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CmludCBfYnJrICh2b2lkICopOwppbnQgZmNoZGly IChpbnQpOwoKCgppbnQgZmNob3duIChpbnQsIF9fdWlkX3QsIF9fZ2lkX3QpOwoKaW50IGdldGR0 YWJsZXNpemUgKHZvaWQpOwpsb25nIGdldGhvc3RpZCAodm9pZCk7CmludCBfZ2V0aG9zdG5hbWUg KGNoYXIgKiwgc2l6ZV90KTsKIGludAogICAgICAgICBfZ2V0cGFnZXNpemUgKHZvaWQpOwpfX3Bp ZF90IGdldHBnaWQgKF9fcGlkX3QpOwoKCgppbnQgbGNob3duIChjb25zdCBjaGFyICosIF9fdWlk X3QsIF9fZ2lkX3QpOwoKaW50IF9sb2NrZiAoaW50LCBpbnQsIF9fb2ZmX3QpOwppbnQgcmVhZGxp bmsgKGNvbnN0IGNoYXIgKiwgY2hhciAqLCBzaXplX3QpOwp2b2lkICpfc2JyayAoX19pbnRwdHJf dCk7CgppbnQgc2V0cGdycCAoX19waWRfdCBwaWQsIF9fcGlkX3QgcGdycCk7CmludCBzZXRyZWdp ZCAoX19naWRfdCwgX19naWRfdCk7CmludCBzZXRyZXVpZCAoX191aWRfdCwgX191aWRfdCk7CnZv aWQgc3dhYiAoY29uc3Qgdm9pZCAqLCB2b2lkICosIHNpemVfdCk7CmludCBzeW1saW5rIChjb25z dCBjaGFyICosIGNvbnN0IGNoYXIgKik7CnZvaWQgc3luYyAodm9pZCk7CnVzZWNvbmRzX3QgX3Vh bGFybSAodXNlY29uZHNfdCwgdXNlY29uZHNfdCk7CmludCBfdXNsZWVwICh1c2Vjb25kc190KTsK CgoKCl9fcGlkX3QgdmZvcmsgKHZvaWQpIF9fYXNtX18oIl9fdmZvcmsxNCIpOwoKCgpjaGFyICpn ZXR3ZCAoY2hhciAqKTsKCgoKCnN0cnVjdCB0aW1ldmFsOwoKaW50IHNlbGVjdCAoaW50LCBmZF9z ZXQgKiwgZmRfc2V0ICosIGZkX3NldCAqLCBzdHJ1Y3QgdGltZXZhbCAqKTsKIyAyOTUgIi91MS9k aXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CnNzaXplX3QgX3ByZWFk IChpbnQsIHZvaWQgKiwgc2l6ZV90LCBfX29mZl90KTsKc3NpemVfdCBfcHdyaXRlIChpbnQsIGNv bnN0IHZvaWQgKiwgc2l6ZV90LCBfX29mZl90KTsKCgoKCgoKCmludCBhY2N0IChjb25zdCBjaGFy ICopOwppbnQgZGVzX2NpcGhlciAoY29uc3QgY2hhciAqLCBjaGFyICosIGxvbmcsIGludCk7Cmlu dCBkZXNfc2V0a2V5IChjb25zdCBjaGFyICopOwp2b2lkIF9lbmR1c2Vyc2hlbGwgKHZvaWQpOwpp bnQgZXhlY3QgKGNvbnN0IGNoYXIgKiwgY2hhciAqIGNvbnN0ICosIGNoYXIgKiBjb25zdCAqKTsK aW50IGZjaHJvb3QgKGludCk7CmludCBfZ2V0ZG9tYWlubmFtZSAoY2hhciAqLCBzaXplX3QpOwpp bnQgX2dldGdyb3VwbGlzdCAoY29uc3QgY2hhciAqLCBfX2dpZF90LCBfX2dpZF90ICosIGludCAq KTsKX19tb2RlX3QgX2dldG1vZGUgKGNvbnN0IHZvaWQgKiwgX19tb2RlX3QpOwppbnQgX2dldHN1 Ym9wdCAoY2hhciAqKiwgY2hhciAqIGNvbnN0ICosIGNoYXIgKiopOwogY2hhciAqX2dldHVzZXJz aGVsbCAodm9pZCk7CmludCBfaW5pdGdyb3VwcyAoY29uc3QgY2hhciAqLCBfX2dpZF90KTsKaW50 IGlydXNlcm9rICh1X2ludDMyX3QsIGludCwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpp bnQgaXNzZXR1Z2lkICh2b2lkKTsKaW50IG5mc3N2YyAoaW50LCB2b2lkICopOwppbnQgcHJvZmls IChjaGFyICosIHNpemVfdCwgdV9sb25nLCB1X2ludCk7CgoKCnZvaWQgX3BzaWduYWwgKHVuc2ln bmVkIGludCwgY29uc3QgY2hhciAqKTsKCmludCByY21kIChjaGFyICoqLCBpbnQsIGNvbnN0IGNo YXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCAqKTsKCmludCByZWJvb3QgKGlu dCwgY2hhciAqKTsKaW50IHJldm9rZSAoY29uc3QgY2hhciAqKTsKaW50IHJyZXN2cG9ydCAoaW50 ICopOwppbnQgcnVzZXJvayAoY29uc3QgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgY29uc3Qg Y2hhciAqKTsKaW50IF9zZXRkb21haW5uYW1lIChjb25zdCBjaGFyICosIHNpemVfdCk7CmludCBz ZXRlZ2lkIChfX2dpZF90KTsKaW50IHNldGV1aWQgKF9fdWlkX3QpOwppbnQgc2V0Z3JvdXBzIChp bnQsIGNvbnN0IF9fZ2lkX3QgKik7CmludCBzZXRob3N0aWQgKGxvbmcpOwppbnQgX3NldGhvc3Ru YW1lIChjb25zdCBjaGFyICosIHNpemVfdCk7CmludCBzZXRsb2dpbiAoY29uc3QgY2hhciAqKTsK dm9pZCAqX3NldG1vZGUgKGNvbnN0IGNoYXIgKik7CmludCBzZXRyZ2lkIChfX2dpZF90KTsKaW50 IHNldHJ1aWQgKF9fdWlkX3QpOwp2b2lkIF9zZXR1c2Vyc2hlbGwgKHZvaWQpOwp2b2lkIHN0cm1v ZGUgKF9fbW9kZV90LCBjaGFyICopOwogY2hhciAqX3N0cnNpZ25hbCAoaW50KTsKaW50IHN3YXBj dGwgKGludCwgY29uc3Qgdm9pZCAqLCBpbnQpOwppbnQgc3dhcG9uIChjb25zdCBjaGFyICopOwpp bnQgc3lzY2FsbCAoaW50LCAuLi4pOwpxdWFkX3QgX19zeXNjYWxsIChxdWFkX3QsIC4uLik7Cmlu dCB1bmRlbGV0ZSAoY29uc3QgY2hhciAqKTsKCgppbnQgcmNtZF9hZiAoY2hhciAqKiwgaW50LCBj b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQgKiwgaW50KTsKCmlu dCBycmVzdnBvcnRfYWYgKGludCAqLCBpbnQpOwppbnQgaXJ1c2Vyb2tfc2EgKGNvbnN0IHZvaWQg KiwgaW50LCBpbnQsIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKCgoKCgpleHRlcm4gY29u c3QgY2hhciAqY29uc3QgKl9zeXNfc2lnbGlzdCBfX2FzbV9fKCJfX3N5c19zaWdsaXN0MTQiKTsK CmV4dGVybiBpbnQgb3B0cmVzZXQ7CmV4dGVybiBjaGFyICpzdWJvcHRhcmc7CgoKCiMgNTggIi91 MS9uZXRic2Qvc3JjL2xpYi9saWJjL2dlbi9nZXR1c2Vyc2hlbGwuYyIgMgoKCiMgMSAiL3UxL2Rp c2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMgNAojIDUxICIvdTEvZGlz a2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3RkYXJnLmgiIDMgNAojIDEgIi91MS9kaXNrbGVz cy9jcDE1MDAtMS91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZXRlc3QuaCIgMSAzIDQKIyA1MiAiL3Ux L2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3N0ZGFyZy5oIiAyIDMgNAojIDYwICIvdTEv ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvc3RkYXJnLmgiIDMgNAp0eXBlZGVmIGNoYXIg KiB2YV9saXN0OwojIDYxICIvdTEvbmV0YnNkL3NyYy9saWIvbGliYy9nZW4vZ2V0dXNlcnNoZWxs LmMiIDIKCgoKCgojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9oZXNpb2Qu aCIgMSAzIDQKIyA4MSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL2hlc2lvZC5o IiAzIDQKCmludCBfaGVzaW9kX2luaXQgKHZvaWQgKiopOwpjaGFyICoqX2hlc2lvZF9yZXNvbHZl ICh2b2lkICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKdm9pZCBfaGVzaW9kX2ZyZWVf bGlzdCAodm9pZCAqLCBjaGFyICoqKTsKY2hhciAqX2hlc2lvZF90b19iaW5kICh2b2lkICosIGNv bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKdm9pZCBfaGVzaW9kX2VuZCAodm9pZCAqKTsKCgpp bnQgX2hlc19pbml0ICh2b2lkKTsKY2hhciAqX2hlc190b19iaW5kIChjb25zdCBjaGFyICosIGNv bnN0IGNoYXIgKik7CmNoYXIgKipfaGVzX3Jlc29sdmUgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh ciAqKTsKaW50IF9oZXNfZXJyb3IgKHZvaWQpOwp2b2lkIF9oZXNfZnJlZSAoY2hhciAqKik7Cgoj IDY3ICIvdTEvbmV0YnNkL3NyYy9saWIvbGliYy9nZW4vZ2V0dXNlcnNoZWxsLmMiIDIKCgojIDEg Ii91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvcnBjLmgiIDEgMyA0CiMgNDQg Ii91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvcnBjLmgiIDMgNAojIDEgIi91 MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvdHlwZXMuaCIgMSAzIDQKIyA0MyAi L3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy90eXBlcy5oIiAzIDQKdHlwZWRl ZiBfX2ludDMyX3QgYm9vbF90Owp0eXBlZGVmIF9faW50MzJfdCBlbnVtX3Q7Cgp0eXBlZGVmIHVf aW50MzJfdCBycGNwcm9nX3Q7CnR5cGVkZWYgdV9pbnQzMl90IHJwY3ZlcnNfdDsKdHlwZWRlZiB1 X2ludDMyX3QgcnBjcHJvY190Owp0eXBlZGVmIHVfaW50MzJfdCBycGNwcm90X3Q7CnR5cGVkZWYg dV9pbnQzMl90IHJwY3BvcnRfdDsKdHlwZWRlZiBfX2ludDMyX3QgcnBjX2lubGluZV90OwojIDY5 ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3R5cGVzLmgiIDMgNAojIDEg Ii91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9uZXRjb25maWcuaCIgMSAzIDQKIyAx MiAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL25ldGNvbmZpZy5oIiAzIDQKc3Ry dWN0IG5ldGNvbmZpZyB7CiAgICAgICAgY2hhciAqbmNfbmV0aWQ7CiAgICAgICAgdW5zaWduZWQg bG9uZyBuY19zZW1hbnRpY3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBuY19mbGFnOwogICAgICAg IGNoYXIgKm5jX3Byb3RvZm1seTsKICAgICAgICBjaGFyICpuY19wcm90bzsKICAgICAgICBjaGFy ICpuY19kZXZpY2U7CiAgICAgICAgdW5zaWduZWQgbG9uZyBuY19ubG9va3VwczsKICAgICAgICBj aGFyICoqbmNfbG9va3VwczsKICAgICAgICB1bnNpZ25lZCBsb25nIG5jX3VudXNlZFs5XTsKfTsK CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBzdHJ1Y3QgbmV0Y29uZmlnICoqbmNfaGVhZDsKICAg ICAgICBzdHJ1Y3QgbmV0Y29uZmlnICoqbmNfY3VycjsKfSBOQ09ORl9IQU5ETEU7CiMgODAgIi91 MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9uZXRjb25maWcuaCIgMyA0Cgp2b2lkICpf c2V0bmV0Y29uZmlnICh2b2lkKTsKc3RydWN0IG5ldGNvbmZpZyAqX2dldG5ldGNvbmZpZyAodm9p ZCAqKTsKc3RydWN0IG5ldGNvbmZpZyAqX2dldG5ldGNvbmZpZ2VudCAoY2hhciAqKTsKdm9pZCBf ZnJlZW5ldGNvbmZpZ2VudCAoc3RydWN0IG5ldGNvbmZpZyAqKTsKaW50IF9lbmRuZXRjb25maWcg KHZvaWQgKik7Cgp2b2lkICpfc2V0bmV0cGF0aCAodm9pZCk7CnN0cnVjdCBuZXRjb25maWcgKl9n ZXRuZXRwYXRoICh2b2lkICopOwppbnQgZW5kbmV0cGF0aCh2b2lkICopOwoKdm9pZCBfbmNfcGVy cm9yIChjb25zdCBjaGFyICopOwpjaGFyICpfbmNfc3BlcnJvciAodm9pZCk7CgojIDcwICIvdTEv ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3R5cGVzLmgiIDIgMyA0CiMgODAgIi91 MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvdHlwZXMuaCIgMyA0CnN0cnVjdCBu ZXRidWYgewogICAgICAgIHVuc2lnbmVkIGludCBtYXhsZW47CiAgICAgICAgdW5zaWduZWQgaW50 IGxlbjsKICAgICAgICB2b2lkICpidWY7Cn07CgoKCgoKCnN0cnVjdCB0X2JpbmQgewogICAgICAg IHN0cnVjdCBuZXRidWYgYWRkcjsKICAgICAgICB1bnNpZ25lZCBpbnQgcWxlbjsKfTsKCgoKCgpz dHJ1Y3QgX19ycGNfc29ja2luZm8gewogICAgICAgIGludCBzaV9hZjsKICAgICAgICBpbnQgc2lf cHJvdG87CiAgICAgICAgaW50IHNpX3NvY2t0eXBlOwogICAgICAgIGludCBzaV9hbGVuOwp9Owoj IDQ1ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3JwYy5oIiAyIDMgNAoj IDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDEgMyA0 CiMgNDkgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDMg NAp0eXBlZGVmIF9fc2FfZmFtaWx5X3Qgc2FfZmFtaWx5X3Q7CiMgMTMxICIvdTEvZGlza2xlc3Mv Y3AxNTAwLTEvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAzIDQKc3RydWN0IGluX2FkZHIgewog ICAgICAgIHVfaW50MzJfdCBzX2FkZHI7Cn0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpOwoj IDIwMyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaCIgMyA0 CnN0cnVjdCBzb2NrYWRkcl9pbiB7CiAgICAgICAgdV9pbnQ4X3Qgc2luX2xlbjsKICAgICAgICBf X3NhX2ZhbWlseV90IHNpbl9mYW1pbHk7CiAgICAgICAgdV9pbnQxNl90IHNpbl9wb3J0OwogICAg ICAgIHN0cnVjdCBpbl9hZGRyIHNpbl9hZGRyOwogICAgICAgIF9faW50OF90IHNpbl96ZXJvWzhd Owp9OwojIDIyMCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL25ldGluZXQvaW4u aCIgMyA0CnN0cnVjdCBpcF9vcHRzIHsKICAgICAgICBzdHJ1Y3QgaW5fYWRkciBpcF9kc3Q7CiAg ICAgICAgX19pbnQ4X3QgaXBfb3B0c1s0MF07Cn07CiMgMjU5ICIvdTEvZGlza2xlc3MvY3AxNTAw LTEvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAzIDQKc3RydWN0IGlwX21yZXEgewogICAgICAg IHN0cnVjdCBpbl9hZGRyIGltcl9tdWx0aWFkZHI7CiAgICAgICAgc3RydWN0IGluX2FkZHIgaW1y X2ludGVyZmFjZTsKfTsKIyAzODggIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9u ZXRpbmV0L2luLmgiIDMgNAojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9u ZXRpbmV0Ni9pbjYuaCIgMSAzIDQKIyAxMjAgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5j bHVkZS9uZXRpbmV0Ni9pbjYuaCIgMyA0CnN0cnVjdCBpbjZfYWRkciB7CiAgICAgICAgdW5pb24g ewogICAgICAgICAgICAgICAgdV9pbnQ4X3QgX191Nl9hZGRyOFsxNl07CiAgICAgICAgICAgICAg ICB1X2ludDE2X3QgX191Nl9hZGRyMTZbOF07CiAgICAgICAgICAgICAgICB1X2ludDMyX3QgX191 Nl9hZGRyMzJbNF07CiAgICAgICAgfSBfX3U2X2FkZHI7Cn07CiMgMTQzICIvdTEvZGlza2xlc3Mv Y3AxNTAwLTEvdXNyL2luY2x1ZGUvbmV0aW5ldDYvaW42LmgiIDMgNApzdHJ1Y3Qgc29ja2FkZHJf aW42IHsKICAgICAgICB1X2ludDhfdCBzaW42X2xlbjsKICAgICAgICBfX3NhX2ZhbWlseV90IHNp bjZfZmFtaWx5OwogICAgICAgIHVfaW50MTZfdCBzaW42X3BvcnQ7CiAgICAgICAgdV9pbnQzMl90 IHNpbjZfZmxvd2luZm87CiAgICAgICAgc3RydWN0IGluNl9hZGRyIHNpbjZfYWRkcjsKICAgICAg ICB1X2ludDMyX3Qgc2luNl9zY29wZV9pZDsKfTsKIyAyMjEgIi91MS9kaXNrbGVzcy9jcDE1MDAt MS91c3IvaW5jbHVkZS9uZXRpbmV0Ni9pbjYuaCIgMyA0CmV4dGVybiBjb25zdCBzdHJ1Y3QgaW42 X2FkZHIgX2luNmFkZHJfYW55OwpleHRlcm4gY29uc3Qgc3RydWN0IGluNl9hZGRyIF9pbjZhZGRy X2xvb3BiYWNrOwpleHRlcm4gY29uc3Qgc3RydWN0IGluNl9hZGRyIF9pbjZhZGRyX25vZGVsb2Nh bF9hbGxub2RlczsKZXh0ZXJuIGNvbnN0IHN0cnVjdCBpbjZfYWRkciBfaW42YWRkcl9saW5rbG9j YWxfYWxsbm9kZXM7CmV4dGVybiBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgaW42YWRkcl9saW5rbG9j YWxfYWxscm91dGVyczsKIyAzNjUgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9u ZXRpbmV0Ni9pbjYuaCIgMyA0CnN0cnVjdCByb3V0ZV9pbjYgewogICAgICAgIHN0cnVjdCBydGVu dHJ5ICpyb19ydDsKICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42IHJvX2RzdDsKfTsKIyA0MTkg Ii91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9uZXRpbmV0Ni9pbjYuaCIgMyA0CnN0 cnVjdCBpcHY2X21yZXEgewogICAgICAgIHN0cnVjdCBpbjZfYWRkciBpcHY2bXJfbXVsdGlhZGRy OwogICAgICAgIHVuc2lnbmVkIGludCBpcHY2bXJfaW50ZXJmYWNlOwp9OwoKCgoKc3RydWN0IGlu Nl9wa3RpbmZvIHsKICAgICAgICBzdHJ1Y3QgaW42X2FkZHIgaXBpNl9hZGRyOwogICAgICAgIHVu c2lnbmVkIGludCBpcGk2X2lmaW5kZXg7Cn07CiMgNjM4ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEv dXNyL2luY2x1ZGUvbmV0aW5ldDYvaW42LmgiIDMgNAoKc3RydWN0IGNtc2doZHI7CgpleHRlcm4g aW50IF9pbmV0Nl9vcHRpb25fc3BhY2UgKGludCk7CmV4dGVybiBpbnQgX2luZXQ2X29wdGlvbl9p bml0ICh2b2lkICosIHN0cnVjdCBjbXNnaGRyICoqLCBpbnQpOwpleHRlcm4gaW50IF9pbmV0Nl9v cHRpb25fYXBwZW5kIChzdHJ1Y3QgY21zZ2hkciAqLCBjb25zdCB1X2ludDhfdCAqLCBpbnQsIGlu dCk7CgpleHRlcm4gdV9pbnQ4X3QgKl9pbmV0Nl9vcHRpb25fYWxsb2MgKHN0cnVjdCBjbXNnaGRy ICosIGludCwgaW50LCBpbnQpOwpleHRlcm4gaW50IF9pbmV0Nl9vcHRpb25fbmV4dCAoY29uc3Qg c3RydWN0IGNtc2doZHIgKiwgdV9pbnQ4X3QgKiopOwpleHRlcm4gaW50IF9pbmV0Nl9vcHRpb25f ZmluZCAoY29uc3Qgc3RydWN0IGNtc2doZHIgKiwgdV9pbnQ4X3QgKiosIGludCk7CgpleHRlcm4g c2l6ZV90IF9pbmV0Nl9ydGhkcl9zcGFjZSAoaW50LCBpbnQpOwpleHRlcm4gc3RydWN0IGNtc2do ZHIgKl9pbmV0Nl9ydGhkcl9pbml0ICh2b2lkICosIGludCk7CmV4dGVybiBpbnQgX2luZXQ2X3J0 aGRyX2FkZCAoc3RydWN0IGNtc2doZHIgKiwgY29uc3Qgc3RydWN0IGluNl9hZGRyICosIHVuc2ln bmVkIGludCk7CgpleHRlcm4gaW50IF9pbmV0Nl9ydGhkcl9sYXN0aG9wIChzdHJ1Y3QgY21zZ2hk ciAqLCB1bnNpZ25lZCBpbnQpOwoKCgpleHRlcm4gaW50IF9pbmV0Nl9ydGhkcl9zZWdtZW50cyAo Y29uc3Qgc3RydWN0IGNtc2doZHIgKik7CmV4dGVybiBzdHJ1Y3QgaW42X2FkZHIgKl9pbmV0Nl9y dGhkcl9nZXRhZGRyIChzdHJ1Y3QgY21zZ2hkciAqLCBpbnQpOwpleHRlcm4gaW50IF9pbmV0Nl9y dGhkcl9nZXRmbGFncyAoY29uc3Qgc3RydWN0IGNtc2doZHIgKiwgaW50KTsKCiMgMzg5ICIvdTEv ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAyIDMgNAojIDQ2ICIv dTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3JwYy5oIiAyIDMgNAoKCiMgMSAi L3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy94ZHIuaCIgMSAzIDQKIyA4MCAi L3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy94ZHIuaCIgMyA0CmVudW0geGRy X29wIHsKICAgICAgICBYRFJfRU5DT0RFPTAsCiAgICAgICAgWERSX0RFQ09ERT0xLAogICAgICAg IFhEUl9GUkVFPTIKfTsKIyA5OSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3Jw Yy94ZHIuaCIgMyA0CnR5cGVkZWYgc3RydWN0IF9fcnBjX3hkciB7CiAgICAgICAgZW51bSB4ZHJf b3AgeF9vcDsKICAgICAgICBjb25zdCBzdHJ1Y3QgeGRyX29wcyB7CgogICAgICAgICAgICAgICAg Ym9vbF90ICgqeF9nZXRsb25nKSAoc3RydWN0IF9fcnBjX3hkciAqLCBsb25nICopOwoKICAgICAg ICAgICAgICAgIGJvb2xfdCAoKnhfcHV0bG9uZykgKHN0cnVjdCBfX3JwY194ZHIgKiwgY29uc3Qg bG9uZyAqKTsKCiAgICAgICAgICAgICAgICBib29sX3QgKCp4X2dldGJ5dGVzKSAoc3RydWN0IF9f cnBjX3hkciAqLCBjaGFyICosIHVfaW50KTsKCiAgICAgICAgICAgICAgICBib29sX3QgKCp4X3B1 dGJ5dGVzKSAoc3RydWN0IF9fcnBjX3hkciAqLCBjb25zdCBjaGFyICosIHVfaW50KTsKCiAgICAg ICAgICAgICAgICB1X2ludCAoKnhfZ2V0cG9zdG4pIChzdHJ1Y3QgX19ycGNfeGRyICopOwoKICAg ICAgICAgICAgICAgIGJvb2xfdCAoKnhfc2V0cG9zdG4pIChzdHJ1Y3QgX19ycGNfeGRyICosIHVf aW50KTsKCiAgICAgICAgICAgICAgICBfX2ludDMyX3QgKigqeF9pbmxpbmUpIChzdHJ1Y3QgX19y cGNfeGRyICosIHVfaW50KTsKCiAgICAgICAgICAgICAgICB2b2lkICgqeF9kZXN0cm95KSAoc3Ry dWN0IF9fcnBjX3hkciAqKTsKICAgICAgICAgICAgICAgIGJvb2xfdCAoKnhfY29udHJvbCkgKHN0 cnVjdCBfX3JwY194ZHIgKiwgaW50LCB2b2lkICopOwogICAgICAgIH0gKnhfb3BzOwogICAgICAg IGNoYXIgKiB4X3B1YmxpYzsKICAgICAgICB2b2lkICogeF9wcml2YXRlOwogICAgICAgIGNoYXIg KiB4X2Jhc2U7CiAgICAgICAgaW50IHhfaGFuZHk7Cn0gWERSOwojIDEzNiAiL3UxL2Rpc2tsZXNz L2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy94ZHIuaCIgMyA0CnR5cGVkZWYgYm9vbF90ICgqeGRy cHJvY190KSAoICk7CiMgMTU3ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBj L3hkci5oIiAzIDQKc3RhdGljIF9faW5saW5lIGludAp4ZHJfZ2V0aW50MzIoWERSICp4ZHJzLCBf X2ludDMyX3QgKmlwKQp7CiAgICAgICAgbG9uZyBsOwoKICAgICAgICBpZiAoISgqKHhkcnMpLT54 X29wcy0+eF9nZXRsb25nKSh4ZHJzLCAmbCkpCiAgICAgICAgICAgICAgICByZXR1cm4gKCgwKSk7 CiAgICAgICAgKmlwID0gKF9faW50MzJfdClsOwogICAgICAgIHJldHVybiAoKDEpKTsKfQoKc3Rh dGljIF9faW5saW5lIGludAp4ZHJfcHV0aW50MzIoWERSICp4ZHJzLCBfX2ludDMyX3QgKmlwKQp7 CiAgICAgICAgbG9uZyBsOwoKICAgICAgICBsID0gKGxvbmcpKmlwOwogICAgICAgIHJldHVybiAo Kih4ZHJzKS0+eF9vcHMtPnhfcHV0bG9uZykoeGRycywgJmwpOwp9CiMgMjM4ICIvdTEvZGlza2xl c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3hkci5oIiAzIDQKc3RydWN0IHhkcl9kaXNjcmlt IHsKICAgICAgICBpbnQgdmFsdWU7CiAgICAgICAgeGRycHJvY190IHByb2M7Cn07CiMgMjgxICIv dTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3hkci5oIiAzIDQKCmV4dGVybiBi b29sX3QgX3hkcl92b2lkICh2b2lkKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX2ludCAoWERSICosIGlu dCAqKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX3VfaW50IChYRFIgKiwgdV9pbnQgKik7CmV4dGVybiBi b29sX3QgX3hkcl9sb25nIChYRFIgKiwgbG9uZyAqKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX3VfbG9u ZyAoWERSICosIHVfbG9uZyAqKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX3Nob3J0IChYRFIgKiwgc2hv cnQgKik7CmV4dGVybiBib29sX3QgX3hkcl91X3Nob3J0IChYRFIgKiwgdV9zaG9ydCAqKTsKZXh0 ZXJuIGJvb2xfdCBfeGRyX2ludDE2X3QgKFhEUiAqLCBfX2ludDE2X3QgKik7CmV4dGVybiBib29s X3QgX3hkcl91X2ludDE2X3QgKFhEUiAqLCB1X2ludDE2X3QgKik7CmV4dGVybiBib29sX3QgX3hk cl9pbnQzMl90IChYRFIgKiwgX19pbnQzMl90ICopOwpleHRlcm4gYm9vbF90IF94ZHJfdV9pbnQz Ml90IChYRFIgKiwgdV9pbnQzMl90ICopOwpleHRlcm4gYm9vbF90IF94ZHJfaW50NjRfdCAoWERS ICosIF9faW50NjRfdCAqKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX3VfaW50NjRfdCAoWERSICosIHVf aW50NjRfdCAqKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX2Jvb2wgKFhEUiAqLCBib29sX3QgKik7CmV4 dGVybiBib29sX3QgX3hkcl9lbnVtIChYRFIgKiwgZW51bV90ICopOwpleHRlcm4gYm9vbF90IF94 ZHJfYXJyYXkgKFhEUiAqLCBjaGFyICoqLCB1X2ludCAqLCB1X2ludCwgdV9pbnQsIHhkcnByb2Nf dCk7CmV4dGVybiBib29sX3QgX3hkcl9ieXRlcyAoWERSICosIGNoYXIgKiosIHVfaW50ICosIHVf aW50KTsKZXh0ZXJuIGJvb2xfdCBfeGRyX29wYXF1ZSAoWERSICosIGNoYXIgKiwgdV9pbnQpOwpl eHRlcm4gYm9vbF90IF94ZHJfc3RyaW5nIChYRFIgKiwgY2hhciAqKiwgdV9pbnQpOwpleHRlcm4g Ym9vbF90IF94ZHJfdW5pb24gKFhEUiAqLCBlbnVtX3QgKiwgY2hhciAqLCBjb25zdCBzdHJ1Y3Qg eGRyX2Rpc2NyaW0gKiwgeGRycHJvY190KTsKZXh0ZXJuIGJvb2xfdCBfeGRyX2NoYXIgKFhEUiAq LCBjaGFyICopOwpleHRlcm4gYm9vbF90IF94ZHJfdV9jaGFyIChYRFIgKiwgdV9jaGFyICopOwpl eHRlcm4gYm9vbF90IF94ZHJfdmVjdG9yIChYRFIgKiwgY2hhciAqLCB1X2ludCwgdV9pbnQsIHhk cnByb2NfdCk7CmV4dGVybiBib29sX3QgX3hkcl9mbG9hdCAoWERSICosIGZsb2F0ICopOwpleHRl cm4gYm9vbF90IF94ZHJfZG91YmxlIChYRFIgKiwgZG91YmxlICopOwpleHRlcm4gYm9vbF90IHhk cl9xdWFkcnVwbGUgKFhEUiAqLCBsb25nIGRvdWJsZSAqKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX3Jl ZmVyZW5jZSAoWERSICosIGNoYXIgKiosIHVfaW50LCB4ZHJwcm9jX3QpOwpleHRlcm4gYm9vbF90 IF94ZHJfcG9pbnRlciAoWERSICosIGNoYXIgKiosIHVfaW50LCB4ZHJwcm9jX3QpOwpleHRlcm4g Ym9vbF90IF94ZHJfd3JhcHN0cmluZyAoWERSICosIGNoYXIgKiopOwpleHRlcm4gdm9pZCBfeGRy X2ZyZWUgKHhkcnByb2NfdCwgY2hhciAqKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX2h5cGVyIChYRFIg KiwgbG9uZ2xvbmdfdCAqKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX3VfaHlwZXIgKFhEUiAqLCB1X2xv bmdsb25nX3QgKik7CmV4dGVybiBib29sX3QgX3hkcl9sb25nbG9uZ190IChYRFIgKiwgbG9uZ2xv bmdfdCAqKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX3VfbG9uZ2xvbmdfdCAoWERSICosIHVfbG9uZ2xv bmdfdCAqKTsKCgoKCgoKCnN0cnVjdCBuZXRvYmogewogICAgICAgIHVfaW50IG5fbGVuOwogICAg ICAgIGNoYXIgKm5fYnl0ZXM7Cn07CnR5cGVkZWYgc3RydWN0IG5ldG9iaiBuZXRvYmo7CmV4dGVy biBib29sX3QgX3hkcl9uZXRvYmogKFhEUiAqLCBzdHJ1Y3QgbmV0b2JqICopOwoKCgoKCgoKZXh0 ZXJuIHZvaWQgX3hkcm1lbV9jcmVhdGUgKFhEUiAqLCBjaGFyICosIHVfaW50LCBlbnVtIHhkcl9v cCk7CgoKCmV4dGVybiB2b2lkIF94ZHJzdGRpb19jcmVhdGUgKFhEUiAqLCBGSUxFICosIGVudW0g eGRyX29wKTsKCgoKZXh0ZXJuIHZvaWQgX3hkcnJlY19jcmVhdGUgKFhEUiAqLCB1X2ludCwgdV9p bnQsIGNoYXIgKiwgaW50ICgqKSAoY2hhciAqLCBjaGFyICosIGludCksIGludCAoKikgKGNoYXIg KiwgY2hhciAqLCBpbnQpKTsKCgoKCmV4dGVybiBib29sX3QgX3hkcnJlY19lbmRvZnJlY29yZCAo WERSICosIGludCk7CgoKZXh0ZXJuIGJvb2xfdCBfeGRycmVjX3NraXByZWNvcmQgKFhEUiAqKTsK CgpleHRlcm4gYm9vbF90IF94ZHJyZWNfZW9mIChYRFIgKik7CmV4dGVybiB1X2ludCB4ZHJyZWNf cmVhZGJ5dGVzIChYRFIgKiwgX19jYWRkcl90LCB1X2ludCk7CgojIDQ5ICIvdTEvZGlza2xlc3Mv Y3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3JwYy5oIiAyIDMgNAoKCiMgMSAiL3UxL2Rpc2tsZXNz L2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9hdXRoLmgiIDEgMyA0CiMgNTUgIi91MS9kaXNrbGVz cy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvYXV0aC5oIiAzIDQKZW51bSBhdXRoX3N0YXQgewog ICAgICAgIEFVVEhfT0s9MCwKCgoKICAgICAgICBBVVRIX0JBRENSRUQ9MSwKICAgICAgICBBVVRI X1JFSkVDVEVEQ1JFRD0yLAogICAgICAgIEFVVEhfQkFEVkVSRj0zLAogICAgICAgIEFVVEhfUkVK RUNURURWRVJGPTQsCiAgICAgICAgQVVUSF9UT09XRUFLPTUsCgoKCiAgICAgICAgQVVUSF9JTlZB TElEUkVTUD02LAogICAgICAgIEFVVEhfRkFJTEVEPTcKfTsKCnR5cGVkZWYgdV9pbnQzMl90IHVf aW50MzI7Cgp1bmlvbiBkZXNfYmxvY2sgewogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg ICB1X2ludDMyIGhpZ2g7CiAgICAgICAgICAgICAgICB1X2ludDMyIGxvdzsKICAgICAgICB9IGtl eTsKICAgICAgICBjaGFyIGNbOF07Cn07CnR5cGVkZWYgdW5pb24gZGVzX2Jsb2NrIGRlc19ibG9j azsKCmV4dGVybiBib29sX3QgX3hkcl9kZXNfYmxvY2sgKFhEUiAqLCBkZXNfYmxvY2sgKik7CgoK CgoKc3RydWN0IG9wYXF1ZV9hdXRoIHsKICAgICAgICBlbnVtX3Qgb2FfZmxhdm9yOwogICAgICAg IF9fY2FkZHJfdCBvYV9iYXNlOwogICAgICAgIHVfaW50IG9hX2xlbmd0aDsKfTsKCgoKCgp0eXBl ZGVmIHN0cnVjdCBfX3JwY19hdXRoIHsKICAgICAgICBzdHJ1Y3Qgb3BhcXVlX2F1dGggYWhfY3Jl ZDsKICAgICAgICBzdHJ1Y3Qgb3BhcXVlX2F1dGggYWhfdmVyZjsKICAgICAgICB1bmlvbiBkZXNf YmxvY2sgYWhfa2V5OwogICAgICAgIGNvbnN0IHN0cnVjdCBhdXRoX29wcyB7CiAgICAgICAgICAg ICAgICB2b2lkICgqYWhfbmV4dHZlcmYpIChzdHJ1Y3QgX19ycGNfYXV0aCAqKTsKCiAgICAgICAg ICAgICAgICBpbnQgKCphaF9tYXJzaGFsKSAoc3RydWN0IF9fcnBjX2F1dGggKiwgWERSICopOwoK ICAgICAgICAgICAgICAgIGludCAoKmFoX3ZhbGlkYXRlKSAoc3RydWN0IF9fcnBjX2F1dGggKiwg c3RydWN0IG9wYXF1ZV9hdXRoICopOwoKCiAgICAgICAgICAgICAgICBpbnQgKCphaF9yZWZyZXNo KSAoc3RydWN0IF9fcnBjX2F1dGggKik7CgogICAgICAgICAgICAgICAgdm9pZCAoKmFoX2Rlc3Ry b3kpIChzdHJ1Y3QgX19ycGNfYXV0aCAqKTsKICAgICAgICB9ICphaF9vcHM7CiAgICAgICAgdm9p ZCAqYWhfcHJpdmF0ZTsKfSBBVVRIOwojIDE1MyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9p bmNsdWRlL3JwYy9hdXRoLmgiIDMgNApleHRlcm4gc3RydWN0IG9wYXF1ZV9hdXRoIF9udWxsX2F1 dGg7CiMgMTY5ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL2F1dGguaCIg MyA0CgpzdHJ1Y3Qgc29ja2FkZHJfaW47CmV4dGVybiBBVVRIICpfYXV0aHVuaXhfY3JlYXRlIChj aGFyICosIGludCwgaW50LCBpbnQsIGludCAqKTsKZXh0ZXJuIEFVVEggKl9hdXRodW5peF9jcmVh dGVfZGVmYXVsdCAodm9pZCk7CmV4dGVybiBBVVRIICpfYXV0aG5vbmVfY3JlYXRlICh2b2lkKTsK ZXh0ZXJuIEFVVEggKmF1dGhkZXNfY3JlYXRlIChjaGFyICosIHVfaW50LCBzdHJ1Y3Qgc29ja2Fk ZHJfaW4gKiwgZGVzX2Jsb2NrICopOwoKZXh0ZXJuIGJvb2xfdCBfeGRyX29wYXF1ZV9hdXRoIChY RFIgKiwgc3RydWN0IG9wYXF1ZV9hdXRoICopOwoKCgoKc3RydWN0IHN2Y19yZXE7CnN0cnVjdCBy cGNfbXNnOwplbnVtIGF1dGhfc3RhdCBfc3ZjYXV0aF9udWxsIChzdHJ1Y3Qgc3ZjX3JlcSAqLCBz dHJ1Y3QgcnBjX21zZyAqKTsKZW51bSBhdXRoX3N0YXQgX3N2Y2F1dGhfc2hvcnQgKHN0cnVjdCBz dmNfcmVxICosIHN0cnVjdCBycGNfbXNnICopOwplbnVtIGF1dGhfc3RhdCBfc3ZjYXV0aF91bml4 IChzdHJ1Y3Qgc3ZjX3JlcSAqLCBzdHJ1Y3QgcnBjX21zZyAqKTsKCiMgNTIgIi91MS9kaXNrbGVz cy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvcnBjLmgiIDIgMyA0CgoKIyAxICIvdTEvZGlza2xl c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL2NsbnQuaCIgMSAzIDQKIyA1NSAiL3UxL2Rpc2ts ZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9jbG50LmgiIDMgNAplbnVtIGNsbnRfc3RhdCB7 CiAgICAgICAgUlBDX1NVQ0NFU1M9MCwKCgoKICAgICAgICBSUENfQ0FOVEVOQ09ERUFSR1M9MSwK ICAgICAgICBSUENfQ0FOVERFQ09ERVJFUz0yLAogICAgICAgIFJQQ19DQU5UU0VORD0zLAogICAg ICAgIFJQQ19DQU5UUkVDVj00LAogICAgICAgIFJQQ19USU1FRE9VVD01LAoKCgogICAgICAgIFJQ Q19WRVJTTUlTTUFUQ0g9NiwKICAgICAgICBSUENfQVVUSEVSUk9SPTcsCiAgICAgICAgUlBDX1BS T0dVTkFWQUlMPTgsCiAgICAgICAgUlBDX1BST0dWRVJTTUlTTUFUQ0g9OSwKICAgICAgICBSUENf UFJPQ1VOQVZBSUw9MTAsCiAgICAgICAgUlBDX0NBTlRERUNPREVBUkdTPTExLAogICAgICAgIFJQ Q19TWVNURU1FUlJPUj0xMiwKCgoKCiAgICAgICAgUlBDX1VOS05PV05IT1NUPTEzLAogICAgICAg IFJQQ19VTktOT1dOUFJPVE89MTcsCiAgICAgICAgUlBDX1VOS05PV05BRERSID0gMTksCiAgICAg ICAgUlBDX05PQlJPQURDQVNUID0gMjEsCgoKCgogICAgICAgIFJQQ19SUENCRkFJTFVSRT0xNCwK CiAgICAgICAgUlBDX1BST0dOT1RSRUdJU1RFUkVEPTE1LAogICAgICAgIFJQQ19OMkFYTEFURUZB SUxVUkUgPSAyMiwKCgoKCiAgICAgICAgUlBDX1RMSUVSUk9SID0gMjAsCgoKCgogICAgICAgIFJQ Q19GQUlMRUQ9MTYsCgoKCgogICAgICAgIFJQQ19JTlBST0dSRVNTID0gMjQsCiAgICAgICAgUlBD X1NUQUxFUkFDSEFORExFID0gMjUKfTsKCgoKCgpzdHJ1Y3QgcnBjX2VyciB7CiAgICAgICAgZW51 bSBjbG50X3N0YXQgcmVfc3RhdHVzOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIGlu dCBSRV9lcnJubzsKICAgICAgICAgICAgICAgIGVudW0gYXV0aF9zdGF0IFJFX3doeTsKICAgICAg ICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJwY3ZlcnNfdCBsb3c7 CiAgICAgICAgICAgICAgICAgICAgICAgIHJwY3ZlcnNfdCBoaWdoOwogICAgICAgICAgICAgICAg fSBSRV92ZXJzOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg ICAgX19pbnQzMl90IHMxOwogICAgICAgICAgICAgICAgICAgICAgICBfX2ludDMyX3QgczI7CiAg ICAgICAgICAgICAgICB9IFJFX2xiOwogICAgICAgIH0gcnU7CgoKCgp9OwoKCgoKCgoKdHlwZWRl ZiBzdHJ1Y3QgX19ycGNfY2xpZW50IHsKICAgICAgICBBVVRIICpjbF9hdXRoOwogICAgICAgIGNv bnN0IHN0cnVjdCBjbG50X29wcyB7CgogICAgICAgICAgICAgICAgZW51bSBjbG50X3N0YXQgKCpj bF9jYWxsKSAoc3RydWN0IF9fcnBjX2NsaWVudCAqLCBycGNwcm9jX3QsIHhkcnByb2NfdCwgX19j YWRkcl90LCB4ZHJwcm9jX3QsIF9fY2FkZHJfdCwgc3RydWN0IHRpbWV2YWwpOwoKCgogICAgICAg ICAgICAgICAgdm9pZCAoKmNsX2Fib3J0KSAoc3RydWN0IF9fcnBjX2NsaWVudCAqKTsKCiAgICAg ICAgICAgICAgICB2b2lkICgqY2xfZ2V0ZXJyKSAoc3RydWN0IF9fcnBjX2NsaWVudCAqLCBzdHJ1 Y3QgcnBjX2VyciAqKTsKCgogICAgICAgICAgICAgICAgYm9vbF90ICgqY2xfZnJlZXJlcykgKHN0 cnVjdCBfX3JwY19jbGllbnQgKiwgeGRycHJvY190LCBfX2NhZGRyX3QpOwoKCiAgICAgICAgICAg ICAgICB2b2lkICgqY2xfZGVzdHJveSkgKHN0cnVjdCBfX3JwY19jbGllbnQgKik7CgogICAgICAg ICAgICAgICAgYm9vbF90ICgqY2xfY29udHJvbCkgKHN0cnVjdCBfX3JwY19jbGllbnQgKiwgdV9p bnQsIGNoYXIgKik7CgogICAgICAgIH0gKmNsX29wczsKICAgICAgICB2b2lkICpjbF9wcml2YXRl OwogICAgICAgIGNoYXIgKmNsX25ldGlkOwogICAgICAgIGNoYXIgKmNsX3RwOwp9IENMSUVOVDsK CgoKCgpzdHJ1Y3QgcnBjX3RpbWVycyB7CiAgICAgICAgdV9zaG9ydCBydF9zcnR0OwogICAgICAg IHVfc2hvcnQgcnRfZGV2aWF0ZTsKICAgICAgICB1X2xvbmcgcnRfcnR4Y3VyOwp9OwojIDMxNyAi L3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9jbG50LmgiIDMgNAoKZXh0ZXJu IENMSUVOVCAqX2NsbnRfY3JlYXRlIChjb25zdCBjaGFyICosIGNvbnN0IHJwY3Byb2dfdCwgY29u c3QgcnBjdmVyc190LCBjb25zdCBjaGFyICopOwojIDMzMiAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0x L3Vzci9pbmNsdWRlL3JwYy9jbG50LmgiIDMgNApleHRlcm4gQ0xJRU5UICpfY2xudF9jcmVhdGVf dmVycyAoY29uc3QgY2hhciAqLCBjb25zdCBycGNwcm9nX3QsIHJwY3ZlcnNfdCAqLCBjb25zdCBy cGN2ZXJzX3QsIGNvbnN0IHJwY3ZlcnNfdCwgY29uc3QgY2hhciAqKTsKIyAzNDkgIi91MS9kaXNr bGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvY2xudC5oIiAzIDQKZXh0ZXJuIENMSUVOVCAq X2NsbnRfdHBfY3JlYXRlIChjb25zdCBjaGFyICosIGNvbnN0IHJwY3Byb2dfdCwgY29uc3QgcnBj dmVyc190LCBjb25zdCBzdHJ1Y3QgbmV0Y29uZmlnICopOwojIDM2MiAiL3UxL2Rpc2tsZXNzL2Nw MTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9jbG50LmgiIDMgNApleHRlcm4gQ0xJRU5UICpfY2xudF90 bGlfY3JlYXRlIChjb25zdCBpbnQsIGNvbnN0IHN0cnVjdCBuZXRjb25maWcgKiwgY29uc3Qgc3Ry dWN0IG5ldGJ1ZiAqLCBjb25zdCBycGNwcm9nX3QsIGNvbnN0IHJwY3ZlcnNfdCwgY29uc3QgdV9p bnQsIGNvbnN0IHVfaW50KTsKIyAzNzggIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVk ZS9ycGMvY2xudC5oIiAzIDQKZXh0ZXJuIENMSUVOVCAqX2NsbnRfdmNfY3JlYXRlIChjb25zdCBp bnQsIGNvbnN0IHN0cnVjdCBuZXRidWYgKiwgY29uc3QgcnBjcHJvZ190LCBjb25zdCBycGN2ZXJz X3QsIGNvbnN0IHVfaW50LCBjb25zdCB1X2ludCk7CiMgMzkzICIvdTEvZGlza2xlc3MvY3AxNTAw LTEvdXNyL2luY2x1ZGUvcnBjL2NsbnQuaCIgMyA0CmV4dGVybiBDTElFTlQgKl9jbG50X2RnX2Ny ZWF0ZSAoY29uc3QgaW50LCBjb25zdCBzdHJ1Y3QgbmV0YnVmICosIGNvbnN0IHJwY3Byb2dfdCwg Y29uc3QgcnBjdmVyc190LCBjb25zdCB1X2ludCwgY29uc3QgdV9pbnQpOwojIDQxMiAiL3UxL2Rp c2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9jbG50LmgiIDMgNApleHRlcm4gQ0xJRU5U ICpfY2xudF9yYXdfY3JlYXRlIChycGNwcm9nX3QsIHJwY3ZlcnNfdCk7CgoKCgoKCgoKZXh0ZXJu IHZvaWQgX2NsbnRfcGNyZWF0ZWVycm9yIChjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqX2Ns bnRfc3BjcmVhdGVlcnJvciAoY29uc3QgY2hhciAqKTsKCgoKCgoKZXh0ZXJuIHZvaWQgX2NsbnRf cGVycm5vIChlbnVtIGNsbnRfc3RhdCk7CmV4dGVybiBjaGFyICpfY2xudF9zcGVycm5vIChlbnVt IGNsbnRfc3RhdCk7CgoKCgoKCmV4dGVybiB2b2lkIF9jbG50X3BlcnJvciAoQ0xJRU5UICosIGNv bnN0IGNoYXIgKik7CmV4dGVybiBjaGFyICpfY2xudF9zcGVycm9yIChDTElFTlQgKiwgY29uc3Qg Y2hhciAqKTsKCgoKCgoKc3RydWN0IHJwY19jcmVhdGVlcnIgewogICAgICAgIGVudW0gY2xudF9z dGF0IGNmX3N0YXQ7CiAgICAgICAgc3RydWN0IHJwY19lcnIgY2ZfZXJyb3I7Cn07CgoKCmV4dGVy biBzdHJ1Y3QgcnBjX2NyZWF0ZWVyciAqX19ycGNfY3JlYXRlZXJyICh2b2lkKTsKCiMgNDcyICIv dTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL2NsbnQuaCIgMyA0CgpleHRlcm4g ZW51bSBjbG50X3N0YXQgX3JwY19jYWxsIChjb25zdCBjaGFyICosIGNvbnN0IHJwY3Byb2dfdCwg Y29uc3QgcnBjdmVyc190LCBjb25zdCBycGNwcm9jX3QsIGNvbnN0IHhkcnByb2NfdCwgY29uc3Qg Y2hhciAqLCBjb25zdCB4ZHJwcm9jX3QsIGNoYXIgKiwgY29uc3QgY2hhciAqKTsKCgoKCiMgNTIz ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL2NsbnQuaCIgMyA0CnR5cGVk ZWYgYm9vbF90ICgqcmVzdWx0cHJvY190KSAoX19jYWRkcl90LCAuLi4pOwoKCmV4dGVybiBlbnVt IGNsbnRfc3RhdCBfcnBjX2Jyb2FkY2FzdCAoY29uc3QgcnBjcHJvZ190LCBjb25zdCBycGN2ZXJz X3QsIGNvbnN0IHJwY3Byb2NfdCwgY29uc3QgeGRycHJvY190LCBfX2NhZGRyX3QsIGNvbnN0IHhk cnByb2NfdCwgX19jYWRkcl90LCBjb25zdCByZXN1bHRwcm9jX3QsIGNvbnN0IGNoYXIgKik7CgoK CmV4dGVybiBlbnVtIGNsbnRfc3RhdCBfcnBjX2Jyb2FkY2FzdF9leHAgKGNvbnN0IHJwY3Byb2df dCwgY29uc3QgcnBjdmVyc190LCBjb25zdCBycGNwcm9jX3QsIGNvbnN0IHhkcnByb2NfdCwgX19j YWRkcl90LCBjb25zdCB4ZHJwcm9jX3QsIF9fY2FkZHJfdCwgY29uc3QgcmVzdWx0cHJvY190LCBj b25zdCBpbnQsIGNvbnN0IGludCwgY29uc3QgY2hhciAqKTsKCgoKCgoKCiMgMSAiL3UxL2Rpc2ts ZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9jbG50X3NvYy5oIiAxIDMgNAojIDY0ICIvdTEv ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL2NsbnRfc29jLmgiIDMgNAoKZXh0ZXJu IENMSUVOVCAqX2NsbnR0Y3BfY3JlYXRlIChzdHJ1Y3Qgc29ja2FkZHJfaW4gKiwgdV9sb25nLCB1 X2xvbmcsIGludCAqLCB1X2ludCwgdV9pbnQpOwoKCgoKCgoKCgoKCmV4dGVybiBDTElFTlQgKl9j bG50cmF3X2NyZWF0ZSAodV9sb25nLCB1X2xvbmcpOwoKIyAxMDIgIi91MS9kaXNrbGVzcy9jcDE1 MDAtMS91c3IvaW5jbHVkZS9ycGMvY2xudF9zb2MuaCIgMyA0CgpleHRlcm4gQ0xJRU5UICpfY2xu dHVkcF9jcmVhdGUgKHN0cnVjdCBzb2NrYWRkcl9pbiAqLCB1X2xvbmcsIHVfbG9uZywgc3RydWN0 IHRpbWV2YWwsIGludCAqKTsKCgoKCmV4dGVybiBDTElFTlQgKl9jbG50dWRwX2J1ZmNyZWF0ZSAo c3RydWN0IHNvY2thZGRyX2luICosIHVfbG9uZywgdV9sb25nLCBzdHJ1Y3QgdGltZXZhbCwgaW50 ICosIHVfaW50LCB1X2ludCk7CgoKCgoKCgojIDUzOSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vz ci9pbmNsdWRlL3JwYy9jbG50LmgiIDIgMyA0CiMgNTUgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91 c3IvaW5jbHVkZS9ycGMvcnBjLmgiIDIgMyA0CgoKIyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEv dXNyL2luY2x1ZGUvcnBjL3JwY19tc2cuaCIgMSAzIDQKIyA1NCAiL3UxL2Rpc2tsZXNzL2NwMTUw MC0xL3Vzci9pbmNsdWRlL3JwYy9ycGNfbXNnLmgiIDMgNAplbnVtIG1zZ190eXBlIHsKICAgICAg ICBDQUxMPTAsCiAgICAgICAgUkVQTFk9MQp9OwoKZW51bSByZXBseV9zdGF0IHsKICAgICAgICBN U0dfQUNDRVBURUQ9MCwKICAgICAgICBNU0dfREVOSUVEPTEKfTsKCmVudW0gYWNjZXB0X3N0YXQg ewogICAgICAgIFNVQ0NFU1M9MCwKICAgICAgICBQUk9HX1VOQVZBSUw9MSwKICAgICAgICBQUk9H X01JU01BVENIPTIsCiAgICAgICAgUFJPQ19VTkFWQUlMPTMsCiAgICAgICAgR0FSQkFHRV9BUkdT PTQsCiAgICAgICAgU1lTVEVNX0VSUj01Cn07CgplbnVtIHJlamVjdF9zdGF0IHsKICAgICAgICBS UENfTUlTTUFUQ0g9MCwKICAgICAgICBBVVRIX0VSUk9SPTEKfTsKIyA4NyAiL3UxL2Rpc2tsZXNz L2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGNfbXNnLmgiIDMgNApzdHJ1Y3QgYWNjZXB0ZWRf cmVwbHkgewogICAgICAgIHN0cnVjdCBvcGFxdWVfYXV0aCBhcl92ZXJmOwogICAgICAgIGVudW0g YWNjZXB0X3N0YXQgYXJfc3RhdDsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1 Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBycGN2ZXJzX3QgbG93OwogICAgICAgICAgICAg ICAgICAgICAgICBycGN2ZXJzX3QgaGlnaDsKICAgICAgICAgICAgICAgIH0gQVJfdmVyc2lvbnM7 CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX2NhZGRy X3Qgd2hlcmU7CiAgICAgICAgICAgICAgICAgICAgICAgIHhkcnByb2NfdCBwcm9jOwogICAgICAg ICAgICAgICAgfSBBUl9yZXN1bHRzOwoKICAgICAgICB9IHJ1OwoKCn07CgoKCgpzdHJ1Y3QgcmVq ZWN0ZWRfcmVwbHkgewogICAgICAgIGVudW0gcmVqZWN0X3N0YXQgcmpfc3RhdDsKICAgICAgICB1 bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBy cGN2ZXJzX3QgbG93OwogICAgICAgICAgICAgICAgICAgICAgICBycGN2ZXJzX3QgaGlnaDsKICAg ICAgICAgICAgICAgIH0gUkpfdmVyc2lvbnM7CiAgICAgICAgICAgICAgICBlbnVtIGF1dGhfc3Rh dCBSSl93aHk7CiAgICAgICAgfSBydTsKCgp9OwoKCgoKc3RydWN0IHJlcGx5X2JvZHkgewogICAg ICAgIGVudW0gcmVwbHlfc3RhdCBycF9zdGF0OwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAg ICAgIHN0cnVjdCBhY2NlcHRlZF9yZXBseSBSUF9hcjsKICAgICAgICAgICAgICAgIHN0cnVjdCBy ZWplY3RlZF9yZXBseSBSUF9kcjsKICAgICAgICB9IHJ1OwoKCn07CgoKCgpzdHJ1Y3QgY2FsbF9i b2R5IHsKICAgICAgICBycGN2ZXJzX3QgY2JfcnBjdmVyczsKICAgICAgICBycGNwcm9nX3QgY2Jf cHJvZzsKICAgICAgICBycGN2ZXJzX3QgY2JfdmVyczsKICAgICAgICBycGNwcm9jX3QgY2JfcHJv YzsKICAgICAgICBzdHJ1Y3Qgb3BhcXVlX2F1dGggY2JfY3JlZDsKICAgICAgICBzdHJ1Y3Qgb3Bh cXVlX2F1dGggY2JfdmVyZjsKfTsKCgoKCnN0cnVjdCBycGNfbXNnIHsKICAgICAgICB1X2ludDMy X3Qgcm1feGlkOwogICAgICAgIGVudW0gbXNnX3R5cGUgcm1fZGlyZWN0aW9uOwogICAgICAgIHVu aW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBjYWxsX2JvZHkgUk1fY21iOwogICAgICAgICAg ICAgICAgc3RydWN0IHJlcGx5X2JvZHkgUk1fcm1iOwogICAgICAgIH0gcnU7CgoKfTsKCgoKCgoK CgoKCmV4dGVybiBib29sX3QgX3hkcl9jYWxsbXNnIChYRFIgKiwgc3RydWN0IHJwY19tc2cgKik7 CgoKCgoKCgpleHRlcm4gYm9vbF90IF94ZHJfY2FsbGhkciAoWERSICosIHN0cnVjdCBycGNfbXNn ICopOwoKCgoKCgoKZXh0ZXJuIGJvb2xfdCBfeGRyX3JlcGx5bXNnIChYRFIgKiwgc3RydWN0IHJw Y19tc2cgKik7CiMgMTk0ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3Jw Y19tc2cuaCIgMyA0CmV4dGVybiBib29sX3QgX3hkcl9hY2NlcHRlZF9yZXBseSAoWERSICosIHN0 cnVjdCBhY2NlcHRlZF9yZXBseSAqKTsKCgoKCgoKCmV4dGVybiBib29sX3QgX3hkcl9yZWplY3Rl ZF9yZXBseSAoWERSICosIHN0cnVjdCByZWplY3RlZF9yZXBseSAqKTsKCgoKCgoKCmV4dGVybiB2 b2lkIF9zZXRlcnJfcmVwbHkgKHN0cnVjdCBycGNfbXNnICosIHN0cnVjdCBycGNfZXJyICopOwoK IyA1OCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGMuaCIgMiAzIDQK IyAxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL2F1dGhfdW5peC5oIiAx IDMgNAojIDYxICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL2F1dGhfdW5p eC5oIiAzIDQKc3RydWN0IGF1dGh1bml4X3Bhcm1zIHsKICAgICAgICB1X2xvbmcgYXVwX3RpbWU7 CiAgICAgICAgY2hhciAqYXVwX21hY2huYW1lOwogICAgICAgIGludCBhdXBfdWlkOwogICAgICAg IGludCBhdXBfZ2lkOwogICAgICAgIHVfaW50IGF1cF9sZW47CiAgICAgICAgaW50ICphdXBfZ2lk czsKfTsKCgpleHRlcm4gYm9vbF90IF94ZHJfYXV0aHVuaXhfcGFybXMgKFhEUiAqLCBzdHJ1Y3Qg YXV0aHVuaXhfcGFybXMgKik7CgoKCgoKCgpzdHJ1Y3Qgc2hvcnRfaGFuZF92ZXJmIHsKICAgICAg ICBzdHJ1Y3Qgb3BhcXVlX2F1dGggbmV3X2NyZWQ7Cn07CiMgNTkgIi91MS9kaXNrbGVzcy9jcDE1 MDAtMS91c3IvaW5jbHVkZS9ycGMvcnBjLmgiIDIgMyA0CiMgNjggIi91MS9kaXNrbGVzcy9jcDE1 MDAtMS91c3IvaW5jbHVkZS9ycGMvcnBjLmgiIDMgNAojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAt MS91c3IvaW5jbHVkZS9ycGMvc3ZjLmgiIDEgMyA0CiMgNzQgIi91MS9kaXNrbGVzcy9jcDE1MDAt MS91c3IvaW5jbHVkZS9ycGMvc3ZjLmgiIDMgNAplbnVtIHhwcnRfc3RhdCB7CiAgICAgICAgWFBS VF9ESUVELAogICAgICAgIFhQUlRfTU9SRVJFUVMsCiAgICAgICAgWFBSVF9JRExFCn07CgoKCgp0 eXBlZGVmIHN0cnVjdCBfX3JwY19zdmN4cHJ0IHsKICAgICAgICBpbnQgeHBfZmQ7CiAgICAgICAg dV9zaG9ydCB4cF9wb3J0OwogICAgICAgIGNvbnN0IHN0cnVjdCB4cF9vcHMgewoKICAgICAgICAg ICAgICAgIGJvb2xfdCAoKnhwX3JlY3YpIChzdHJ1Y3QgX19ycGNfc3ZjeHBydCAqLCBzdHJ1Y3Qg cnBjX21zZyAqKTsKCgogICAgICAgICAgICAgICAgZW51bSB4cHJ0X3N0YXQgKCp4cF9zdGF0KSAo c3RydWN0IF9fcnBjX3N2Y3hwcnQgKik7CgogICAgICAgICAgICAgICAgYm9vbF90ICgqeHBfZ2V0 YXJncykgKHN0cnVjdCBfX3JwY19zdmN4cHJ0ICosIHhkcnByb2NfdCwgX19jYWRkcl90KTsKCgog ICAgICAgICAgICAgICAgYm9vbF90ICgqeHBfcmVwbHkpIChzdHJ1Y3QgX19ycGNfc3ZjeHBydCAq LCBzdHJ1Y3QgcnBjX21zZyAqKTsKCgogICAgICAgICAgICAgICAgYm9vbF90ICgqeHBfZnJlZWFy Z3MpIChzdHJ1Y3QgX19ycGNfc3ZjeHBydCAqLCB4ZHJwcm9jX3QsIF9fY2FkZHJfdCk7CgoKICAg ICAgICAgICAgICAgIHZvaWQgKCp4cF9kZXN0cm95KSAoc3RydWN0IF9fcnBjX3N2Y3hwcnQgKik7 CiAgICAgICAgfSAqeHBfb3BzOwogICAgICAgIGludCB4cF9hZGRybGVuOwogICAgICAgIHN0cnVj dCBzb2NrYWRkcl9pbiB4cF9yYWRkcjsKCiAgICAgICAgY29uc3Qgc3RydWN0IHhwX29wczIgewoK ICAgICAgICAgICAgICAgIGJvb2xfdCAoKnhwX2NvbnRyb2wpIChzdHJ1Y3QgX19ycGNfc3ZjeHBy dCAqLCBjb25zdCB1X2ludCwgdm9pZCAqKTsKCiAgICAgICAgfSAqeHBfb3BzMjsKICAgICAgICBj aGFyICp4cF90cDsKICAgICAgICBjaGFyICp4cF9uZXRpZDsKICAgICAgICBzdHJ1Y3QgbmV0YnVm IHhwX2x0YWRkcjsKICAgICAgICBzdHJ1Y3QgbmV0YnVmIHhwX3J0YWRkcjsKICAgICAgICBzdHJ1 Y3Qgb3BhcXVlX2F1dGggeHBfdmVyZjsKICAgICAgICB2b2lkICp4cF9wMTsKICAgICAgICB2b2lk ICp4cF9wMjsKICAgICAgICB2b2lkICp4cF9wMzsKICAgICAgICBpbnQgeHBfdHlwZTsKfSBTVkNY UFJUOwoKCgoKc3RydWN0IHN2Y19yZXEgewogICAgICAgIHVfaW50MzJfdCBycV9wcm9nOwogICAg ICAgIHVfaW50MzJfdCBycV92ZXJzOwogICAgICAgIHVfaW50MzJfdCBycV9wcm9jOwogICAgICAg IHN0cnVjdCBvcGFxdWVfYXV0aCBycV9jcmVkOwogICAgICAgIHZvaWQgKnJxX2NsbnRjcmVkOwog ICAgICAgIFNWQ1hQUlQgKnJxX3hwcnQ7Cn07CiMgMTk3ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEv dXNyL2luY2x1ZGUvcnBjL3N2Yy5oIiAzIDQKCmV4dGVybiBib29sX3QgX3N2Y19yZWcgKFNWQ1hQ UlQgKiwgY29uc3QgcnBjcHJvZ190LCBjb25zdCBycGN2ZXJzX3QsIHZvaWQgKCopIChzdHJ1Y3Qg c3ZjX3JlcSAqLCBTVkNYUFJUICopLCBjb25zdCBzdHJ1Y3QgbmV0Y29uZmlnICopOwoKCgojIDIx MSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9zdmMuaCIgMyA0CgpleHRl cm4gdm9pZCBfc3ZjX3VucmVnIChjb25zdCBycGNwcm9nX3QsIGNvbnN0IHJwY3ZlcnNfdCk7CgoK CgoKCgoKCmV4dGVybiB2b2lkIF94cHJ0X3JlZ2lzdGVyIChTVkNYUFJUICopOwoKCgoKCgoKCgpl eHRlcm4gdm9pZCBfeHBydF91bnJlZ2lzdGVyIChTVkNYUFJUICopOwoKIyAyNjIgIi91MS9kaXNr bGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvc3ZjLmgiIDMgNAoKZXh0ZXJuIGJvb2xfdCBf c3ZjX3NlbmRyZXBseSAoU1ZDWFBSVCAqLCB4ZHJwcm9jX3QsIGNoYXIgKik7CmV4dGVybiB2b2lk IF9zdmNlcnJfZGVjb2RlIChTVkNYUFJUICopOwpleHRlcm4gdm9pZCBfc3ZjZXJyX3dlYWthdXRo IChTVkNYUFJUICopOwpleHRlcm4gdm9pZCBfc3ZjZXJyX25vcHJvYyAoU1ZDWFBSVCAqKTsKZXh0 ZXJuIHZvaWQgX3N2Y2Vycl9wcm9ndmVycyAoU1ZDWFBSVCAqLCBycGN2ZXJzX3QsIHJwY3ZlcnNf dCk7CmV4dGVybiB2b2lkIF9zdmNlcnJfYXV0aCAoU1ZDWFBSVCAqLCBlbnVtIGF1dGhfc3RhdCk7 CmV4dGVybiB2b2lkIF9zdmNlcnJfbm9wcm9nIChTVkNYUFJUICopOwpleHRlcm4gdm9pZCBfc3Zj ZXJyX3N5c3RlbWVyciAoU1ZDWFBSVCAqKTsKZXh0ZXJuIGludCBfcnBjX3JlZyAocnBjcHJvZ190 LCBycGN2ZXJzX3QsIHJwY3Byb2NfdCwgY2hhciAqKCopIChjaGFyICopLCB4ZHJwcm9jX3QsIHhk cnByb2NfdCwgY2hhciAqKTsKCgoKIyAyOTEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5j bHVkZS9ycGMvc3ZjLmgiIDMgNApleHRlcm4gaW50IHN2Y19tYXhmZDsKCmV4dGVybiBmZF9zZXQg c3ZjX2Zkc2V0OwojIDMwMyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9z dmMuaCIgMyA0CgpleHRlcm4gdm9pZCBycGN0ZXN0X3NlcnZpY2UgKHZvaWQpOwoKCgpleHRlcm4g dm9pZCBfc3ZjX2dldHJlcSAoaW50KTsKZXh0ZXJuIHZvaWQgX3N2Y19nZXRyZXFzZXQgKGZkX3Nl dCAqKTsKZXh0ZXJuIHZvaWQgX3N2Y19nZXRyZXFfY29tbW9uIChpbnQpOwpzdHJ1Y3QgcG9sbGZk OwpleHRlcm4gdm9pZCBzdmNfZ2V0cmVxX3BvbGwgKHN0cnVjdCBwb2xsZmQgKiwgaW50KTsKCmV4 dGVybiB2b2lkIF9zdmNfcnVuICh2b2lkKTsKZXh0ZXJuIHZvaWQgX3N2Y19leGl0ICh2b2lkKTsK CiMgMzI4ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3N2Yy5oIiAzIDQK CgoKCmV4dGVybiBpbnQgX3N2Y19jcmVhdGUgKHZvaWQgKCopIChzdHJ1Y3Qgc3ZjX3JlcSAqLCBT VkNYUFJUICopLCBjb25zdCBycGNwcm9nX3QsIGNvbnN0IHJwY3ZlcnNfdCwgY29uc3QgY2hhciAq KTsKIyAzNDcgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvc3ZjLmgiIDMg NApleHRlcm4gU1ZDWFBSVCAqX3N2Y190cF9jcmVhdGUgKHZvaWQgKCopIChzdHJ1Y3Qgc3ZjX3Jl cSAqLCBTVkNYUFJUICopLCBjb25zdCBycGNwcm9nX3QsIGNvbnN0IHJwY3ZlcnNfdCwgY29uc3Qg c3RydWN0IG5ldGNvbmZpZyAqKTsKIyAzNjEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5j bHVkZS9ycGMvc3ZjLmgiIDMgNApleHRlcm4gU1ZDWFBSVCAqX3N2Y190bGlfY3JlYXRlIChjb25z dCBpbnQsIGNvbnN0IHN0cnVjdCBuZXRjb25maWcgKiwgY29uc3Qgc3RydWN0IHRfYmluZCAqLCBj b25zdCB1X2ludCwgY29uc3QgdV9pbnQpOwojIDM3NiAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vz ci9pbmNsdWRlL3JwYy9zdmMuaCIgMyA0CmV4dGVybiBTVkNYUFJUICpfc3ZjX3ZjX2NyZWF0ZSAo Y29uc3QgaW50LCBjb25zdCB1X2ludCwgY29uc3QgdV9pbnQpOwoKCgoKCgpleHRlcm4gU1ZDWFBS VCAqX3N2Y19kZ19jcmVhdGUgKGNvbnN0IGludCwgY29uc3QgdV9pbnQsIGNvbnN0IHVfaW50KTsK IyAzOTUgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvc3ZjLmgiIDMgNApl eHRlcm4gU1ZDWFBSVCAqX3N2Y19mZF9jcmVhdGUgKGNvbnN0IGludCwgY29uc3QgdV9pbnQsIGNv bnN0IHVfaW50KTsKIyA0MDUgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMv c3ZjLmgiIDMgNApleHRlcm4gU1ZDWFBSVCAqX3N2Y19yYXdfY3JlYXRlICh2b2lkKTsKCgoKCmlu dCBzdmNfZGdfZW5hYmxlY2FjaGUgKFNWQ1hQUlQgKiwgY29uc3QgdV9pbnQpOwoKCgoKCiMgMSAi L3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9zdmNfc29jLmgiIDEgMyA0CiMg NjYgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvc3ZjX3NvYy5oIiAzIDQK CmV4dGVybiBib29sX3QgX3N2Y19yZWdpc3RlciAoU1ZDWFBSVCAqLCB1X2xvbmcsIHVfbG9uZywg dm9pZCAoKikgKHN0cnVjdCBzdmNfcmVxICosIFNWQ1hQUlQgKiksIGludCk7CgoKIyA3OCAiL3Ux L2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9zdmNfc29jLmgiIDMgNAoKZXh0ZXJu IHZvaWQgX3N2Y191bnJlZ2lzdGVyICh1X2xvbmcsIHVfbG9uZyk7CgoKCgoKCgpleHRlcm4gU1ZD WFBSVCAqX3N2Y3Jhd19jcmVhdGUgKHZvaWQpOwoKCgoKCgoKZXh0ZXJuIFNWQ1hQUlQgKl9zdmN1 ZHBfY3JlYXRlIChpbnQpOwpleHRlcm4gU1ZDWFBSVCAqX3N2Y3VkcF9idWZjcmVhdGUgKGludCwg dV9pbnQsIHVfaW50KTsKZXh0ZXJuIGludCBfc3ZjdWRwX2VuYWJsZWNhY2hlIChTVkNYUFJUICos IHVfbG9uZyk7CgoKCgoKCgpleHRlcm4gU1ZDWFBSVCAqX3N2Y3RjcF9jcmVhdGUgKGludCwgdV9p bnQsIHVfaW50KTsKCgoKCgoKZXh0ZXJuIFNWQ1hQUlQgKl9zdmNmZF9jcmVhdGUgKGludCwgdV9p bnQsIHVfaW50KTsKCiMgNDE3ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBj L3N2Yy5oIiAyIDMgNAojIDY5ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBj L3JwYy5oIiAyIDMgNAojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMv c3ZjX2F1dGguaCIgMSAzIDQKIyA0NyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRl L3JwYy9zdmNfYXV0aC5oIiAzIDQKCmV4dGVybiBlbnVtIGF1dGhfc3RhdCBfYXV0aGVudGljYXRl IChzdHJ1Y3Qgc3ZjX3JlcSAqLCBzdHJ1Y3QgcnBjX21zZyAqKTsKZXh0ZXJuIGludCBfc3ZjX2F1 dGhfcmVnIChpbnQsIGVudW0gYXV0aF9zdGF0ICgqKSAoc3RydWN0IHN2Y19yZXEgKiwgc3RydWN0 IHJwY19tc2cgKikpOwoKCgojIDcwICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUv cnBjL3JwYy5oIiAyIDMgNAoKCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRl L3JwYy9wbWFwX2NsbnQuaCIgMSAzIDQKIyA2OCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9p bmNsdWRlL3JwYy9wbWFwX2NsbnQuaCIgMyA0CgpleHRlcm4gYm9vbF90IF9wbWFwX3NldCAodV9s b25nLCB1X2xvbmcsIGludCwgaW50KTsKZXh0ZXJuIGJvb2xfdCBfcG1hcF91bnNldCAodV9sb25n LCB1X2xvbmcpOwpleHRlcm4gc3RydWN0IHBtYXBsaXN0ICpfcG1hcF9nZXRtYXBzIChzdHJ1Y3Qg c29ja2FkZHJfaW4gKik7CmV4dGVybiBlbnVtIGNsbnRfc3RhdCBfcG1hcF9ybXRjYWxsIChzdHJ1 Y3Qgc29ja2FkZHJfaW4gKiwgdV9sb25nLCB1X2xvbmcsIHVfbG9uZywgeGRycHJvY190LCBfX2Nh ZGRyX3QsIHhkcnByb2NfdCwgX19jYWRkcl90LCBzdHJ1Y3QgdGltZXZhbCwgdV9sb25nICopOwoK CgoKZXh0ZXJuIGVudW0gY2xudF9zdGF0IF9jbG50X2Jyb2FkY2FzdCAodV9sb25nLCB1X2xvbmcs IHVfbG9uZywgeGRycHJvY190LCBjaGFyICosIHhkcnByb2NfdCwgY2hhciAqLCByZXN1bHRwcm9j X3QpOwoKCgpleHRlcm4gdV9zaG9ydCBfcG1hcF9nZXRwb3J0IChzdHJ1Y3Qgc29ja2FkZHJfaW4g KiwgdV9sb25nLCB1X2xvbmcsIHVfaW50KTsKCgojIDczICIvdTEvZGlza2xlc3MvY3AxNTAwLTEv dXNyL2luY2x1ZGUvcnBjL3JwYy5oIiAyIDMgNAojIDEgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91 c3IvaW5jbHVkZS9ycGMvcG1hcF9wcm90LmgiIDEgMyA0CiMgODggIi91MS9kaXNrbGVzcy9jcDE1 MDAtMS91c3IvaW5jbHVkZS9ycGMvcG1hcF9wcm90LmgiIDMgNApzdHJ1Y3QgcG1hcCB7CiAgICAg ICAgbG9uZyB1bnNpZ25lZCBwbV9wcm9nOwogICAgICAgIGxvbmcgdW5zaWduZWQgcG1fdmVyczsK ICAgICAgICBsb25nIHVuc2lnbmVkIHBtX3Byb3Q7CiAgICAgICAgbG9uZyB1bnNpZ25lZCBwbV9w b3J0Owp9OwoKc3RydWN0IHBtYXBsaXN0IHsKICAgICAgICBzdHJ1Y3QgcG1hcCBwbWxfbWFwOwog ICAgICAgIHN0cnVjdCBwbWFwbGlzdCAqcG1sX25leHQ7Cn07CgoKZXh0ZXJuIGJvb2xfdCBfeGRy X3BtYXAgKFhEUiAqLCBzdHJ1Y3QgcG1hcCAqKTsKZXh0ZXJuIGJvb2xfdCBfeGRyX3BtYXBsaXN0 IChYRFIgKiwgc3RydWN0IHBtYXBsaXN0ICoqKTsKZXh0ZXJuIGJvb2xfdCB4ZHJfcG1hcGxpc3Rf cHRyIChYRFIgKiwgc3RydWN0IHBtYXBsaXN0ICopOwoKIyA3NCAiL3UxL2Rpc2tsZXNzL2NwMTUw MC0xL3Vzci9pbmNsdWRlL3JwYy9ycGMuaCIgMiAzIDQKCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUw MC0xL3Vzci9pbmNsdWRlL3JwYy9ycGNiX2NsbnQuaCIgMSAzIDQKIyA2MSAiL3UxL2Rpc2tsZXNz L2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGNiX2NsbnQuaCIgMyA0CiMgMSAiL3UxL2Rpc2ts ZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGNiX3Byb3QuaCIgMSAzIDQKIyAxMSAiL3Ux L2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGNiX3Byb3QuaCIgMyA0CiMgMSAi L3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGMuaCIgMSAzIDQKIyAxMiAi L3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGNiX3Byb3QuaCIgMiAzIDQK IyAxMjkgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvcnBjYl9wcm90Lmgi IDMgNApzdHJ1Y3QgcnBjYiB7CiAgICAgICAgcnBjcHJvZ190IHJfcHJvZzsKICAgICAgICBycGN2 ZXJzX3Qgcl92ZXJzOwogICAgICAgIGNoYXIgKnJfbmV0aWQ7CiAgICAgICAgY2hhciAqcl9hZGRy OwogICAgICAgIGNoYXIgKnJfb3duZXI7Cn07CnR5cGVkZWYgc3RydWN0IHJwY2IgcnBjYjsKCgoK ZXh0ZXJuIGJvb2xfdCBfeGRyX3JwY2IoWERSICosIHJwY2IgKik7CgoKCgoKdHlwZWRlZiBycGNi IFJQQ0I7CiMgMTYwICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3JwY2Jf cHJvdC5oIiAzIDQKc3RydWN0IHJwX19saXN0IHsKICAgICAgICBycGNiIHJwY2JfbWFwOwogICAg ICAgIHN0cnVjdCBycF9fbGlzdCAqcnBjYl9uZXh0Owp9Owp0eXBlZGVmIHN0cnVjdCBycF9fbGlz dCBycF9fbGlzdDsKCgoKZXh0ZXJuIGJvb2xfdCB4ZHJfcnBfX2xpc3QoWERSICosIHJwX19saXN0 ICopOwoKCgoKCnR5cGVkZWYgcnBfX2xpc3QgKnJwY2JsaXN0X3B0cjsKCgoKZXh0ZXJuIGJvb2xf dCBfeGRyX3JwY2JsaXN0X3B0cihYRFIgKiwgcnBjYmxpc3RfcHRyICopOwoKCgoKCnR5cGVkZWYg c3RydWN0IHJwX19saXN0IHJwY2JsaXN0Owp0eXBlZGVmIHN0cnVjdCBycF9fbGlzdCBSUENCTElT VDsKCgpzdHJ1Y3QgcnBjYmxpc3QgewogUlBDQiBycGNiX21hcDsKIHN0cnVjdCBycGNibGlzdCAq cnBjYl9uZXh0Owp9OwoKCgoKCgpleHRlcm4gYm9vbF90IF94ZHJfcnBjYmxpc3QoWERSICosIHJw Y2JsaXN0KiopOwojIDIxMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9y cGNiX3Byb3QuaCIgMyA0CnN0cnVjdCBycGNiX3JtdGNhbGxhcmdzIHsKICAgICAgICBycGNwcm9n X3QgcHJvZzsKICAgICAgICBycGN2ZXJzX3QgdmVyczsKICAgICAgICBycGNwcm9jX3QgcHJvYzsK ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdV9pbnQgYXJnc19sZW47CiAgICAgICAg ICAgICAgICBjaGFyICphcmdzX3ZhbDsKICAgICAgICB9IGFyZ3M7Cn07CnR5cGVkZWYgc3RydWN0 IHJwY2Jfcm10Y2FsbGFyZ3MgcnBjYl9ybXRjYWxsYXJnczsKCgoKZXh0ZXJuIGJvb2xfdCBfeGRy X3JwY2Jfcm10Y2FsbGFyZ3MoWERSICosIHJwY2Jfcm10Y2FsbGFyZ3MgKik7CiMgMjQxICIvdTEv ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3JwY2JfcHJvdC5oIiAzIDQKc3RydWN0 IHJfcnBjYl9ybXRjYWxsYXJncyB7CiBycGNwcm9nX3QgcHJvZzsKIHJwY3ZlcnNfdCB2ZXJzOwog cnBjcHJvY190IHByb2M7CiBzdHJ1Y3QgewogdV9pbnQgYXJnc19sZW47CiBjaGFyICphcmdzX3Zh bDsKIH0gYXJnczsKIHhkcnByb2NfdCB4ZHJfYXJnczsKfTsKCgoKCgoKc3RydWN0IHJwY2Jfcm10 Y2FsbHJlcyB7CiAgICAgICAgY2hhciAqYWRkcjsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg ICAgICAgdV9pbnQgcmVzdWx0c19sZW47CiAgICAgICAgICAgICAgICBjaGFyICpyZXN1bHRzX3Zh bDsKICAgICAgICB9IHJlc3VsdHM7Cn07CnR5cGVkZWYgc3RydWN0IHJwY2Jfcm10Y2FsbHJlcyBy cGNiX3JtdGNhbGxyZXM7CgoKCmV4dGVybiBib29sX3QgX3hkcl9ycGNiX3JtdGNhbGxyZXMoWERS ICosIHJwY2Jfcm10Y2FsbHJlcyAqKTsKIyAyNzcgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3Iv aW5jbHVkZS9ycGMvcnBjYl9wcm90LmgiIDMgNApzdHJ1Y3Qgcl9ycGNiX3JtdGNhbGxyZXMgewog Y2hhciAqYWRkcjsKIHN0cnVjdCB7CiB1X2ludDMyX3QgcmVzdWx0c19sZW47CiBjaGFyICpyZXN1 bHRzX3ZhbDsKIH0gcmVzdWx0czsKIHhkcnByb2NfdCB4ZHJfcmVzOwp9OwojIDI5MyAiL3UxL2Rp c2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGNiX3Byb3QuaCIgMyA0CnN0cnVjdCBy cGNiX2VudHJ5IHsKICAgICAgICBjaGFyICpyX21hZGRyOwogICAgICAgIGNoYXIgKnJfbmNfbmV0 aWQ7CiAgICAgICAgdV9pbnQgcl9uY19zZW1hbnRpY3M7CiAgICAgICAgY2hhciAqcl9uY19wcm90 b2ZtbHk7CiAgICAgICAgY2hhciAqcl9uY19wcm90bzsKfTsKdHlwZWRlZiBzdHJ1Y3QgcnBjYl9l bnRyeSBycGNiX2VudHJ5OwoKCgpleHRlcm4gYm9vbF90IF94ZHJfcnBjYl9lbnRyeShYRFIgKiwg cnBjYl9lbnRyeSAqKTsKIyAzMTQgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9y cGMvcnBjYl9wcm90LmgiIDMgNApzdHJ1Y3QgcnBjYl9lbnRyeV9saXN0IHsKICAgICAgICBycGNi X2VudHJ5IHJwY2JfZW50cnlfbWFwOwogICAgICAgIHN0cnVjdCBycGNiX2VudHJ5X2xpc3QgKnJw Y2JfZW50cnlfbmV4dDsKfTsKdHlwZWRlZiBzdHJ1Y3QgcnBjYl9lbnRyeV9saXN0IHJwY2JfZW50 cnlfbGlzdDsKCgoKZXh0ZXJuIGJvb2xfdCB4ZHJfcnBjYl9lbnRyeV9saXN0KFhEUiAqLCBycGNi X2VudHJ5X2xpc3QgKik7CgoKCgoKdHlwZWRlZiBycGNiX2VudHJ5X2xpc3QgKnJwY2JfZW50cnlf bGlzdF9wdHI7CgoKCmV4dGVybiBib29sX3QgX3hkcl9ycGNiX2VudHJ5X2xpc3RfcHRyKFhEUiAq LCBycGNiX2VudHJ5X2xpc3RfcHRyICopOwojIDM1MyAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vz ci9pbmNsdWRlL3JwYy9ycGNiX3Byb3QuaCIgMyA0CnN0cnVjdCBycGNic19hZGRybGlzdCB7CiAg ICAgICAgcnBjcHJvZ190IHByb2c7CiAgICAgICAgcnBjdmVyc190IHZlcnM7CiAgICAgICAgaW50 IHN1Y2Nlc3M7CiAgICAgICAgaW50IGZhaWx1cmU7CiAgICAgICAgY2hhciAqbmV0aWQ7CiAgICAg ICAgc3RydWN0IHJwY2JzX2FkZHJsaXN0ICpuZXh0Owp9Owp0eXBlZGVmIHN0cnVjdCBycGNic19h ZGRybGlzdCBycGNic19hZGRybGlzdDsKCgoKZXh0ZXJuIGJvb2xfdCBfeGRyX3JwY2JzX2FkZHJs aXN0KFhEUiAqLCBycGNic19hZGRybGlzdCAqKTsKCgoKCgoKCnN0cnVjdCBycGNic19ybXRjYWxs bGlzdCB7CiAgICAgICAgcnBjcHJvZ190IHByb2c7CiAgICAgICAgcnBjdmVyc190IHZlcnM7CiAg ICAgICAgcnBjcHJvY190IHByb2M7CiAgICAgICAgaW50IHN1Y2Nlc3M7CiAgICAgICAgaW50IGZh aWx1cmU7CiAgICAgICAgaW50IGluZGlyZWN0OwogICAgICAgIGNoYXIgKm5ldGlkOwogICAgICAg IHN0cnVjdCBycGNic19ybXRjYWxsbGlzdCAqbmV4dDsKfTsKdHlwZWRlZiBzdHJ1Y3QgcnBjYnNf cm10Y2FsbGxpc3QgcnBjYnNfcm10Y2FsbGxpc3Q7CgoKCmV4dGVybiBib29sX3QgX3hkcl9ycGNi c19ybXRjYWxsbGlzdChYRFIgKiwgcnBjYnNfcm10Y2FsbGxpc3QgKik7CgoKCgoKdHlwZWRlZiBp bnQgcnBjYnNfcHJvY1sxM107CgoKCmV4dGVybiBib29sX3QgX3hkcl9ycGNic19wcm9jKFhEUiAq LCBycGNic19wcm9jKTsKCgoKCgp0eXBlZGVmIHJwY2JzX2FkZHJsaXN0ICpycGNic19hZGRybGlz dF9wdHI7CgoKCmV4dGVybiBib29sX3QgX3hkcl9ycGNic19hZGRybGlzdF9wdHIoWERSICosIHJw Y2JzX2FkZHJsaXN0X3B0ciAqKTsKCgoKCgp0eXBlZGVmIHJwY2JzX3JtdGNhbGxsaXN0ICpycGNi c19ybXRjYWxsbGlzdF9wdHI7CgoKCmV4dGVybiBib29sX3QgX3hkcl9ycGNic19ybXRjYWxsbGlz dF9wdHIoWERSICosIHJwY2JzX3JtdGNhbGxsaXN0X3B0ciAqKTsKCgoKCgpzdHJ1Y3QgcnBjYl9z dGF0IHsKICAgICAgICBycGNic19wcm9jIGluZm87CiAgICAgICAgaW50IHNldGluZm87CiAgICAg ICAgaW50IHVuc2V0aW5mbzsKICAgICAgICBycGNic19hZGRybGlzdF9wdHIgYWRkcmluZm87CiAg ICAgICAgcnBjYnNfcm10Y2FsbGxpc3RfcHRyIHJtdGluZm87Cn07CnR5cGVkZWYgc3RydWN0IHJw Y2Jfc3RhdCBycGNiX3N0YXQ7CgoKCmV4dGVybiBib29sX3QgX3hkcl9ycGNiX3N0YXQoWERSICos IHJwY2Jfc3RhdCAqKTsKIyA0NDUgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9y cGMvcnBjYl9wcm90LmgiIDMgNAp0eXBlZGVmIHJwY2Jfc3RhdCBycGNiX3N0YXRfYnl2ZXJzWzNd OwoKCgpleHRlcm4gYm9vbF90IF94ZHJfcnBjYl9zdGF0X2J5dmVycyhYRFIgKiwgcnBjYl9zdGF0 X2J5dmVycyk7CiMgNDY1ICIvdTEvZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjL3Jw Y2JfcHJvdC5oIiAzIDQKZXh0ZXJuIGJvb2xfdCBfeGRyX25ldGJ1ZihYRFIgKiwgc3RydWN0IG5l dGJ1ZiAqKTsKIyA2NDcgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvcnBj Yl9wcm90LmgiIDMgNApleHRlcm4gYm9vbF90ICpycGNicHJvY19zZXRfMyhycGNiICosIENMSUVO VCAqKTsKZXh0ZXJuIGJvb2xfdCAqcnBjYnByb2Nfc2V0XzNfc3ZjKHJwY2IgKiwgc3RydWN0IHN2 Y19yZXEgKik7CgpleHRlcm4gYm9vbF90ICpycGNicHJvY191bnNldF8zKHJwY2IgKiwgQ0xJRU5U ICopOwpleHRlcm4gYm9vbF90ICpycGNicHJvY191bnNldF8zX3N2YyhycGNiICosIHN0cnVjdCBz dmNfcmVxICopOwoKZXh0ZXJuIGNoYXIgKipycGNicHJvY19nZXRhZGRyXzMocnBjYiAqLCBDTElF TlQgKik7CmV4dGVybiBjaGFyICoqcnBjYnByb2NfZ2V0YWRkcl8zX3N2YyhycGNiICosIHN0cnVj dCBzdmNfcmVxICopOwoKZXh0ZXJuIHJwY2JsaXN0X3B0ciAqcnBjYnByb2NfZHVtcF8zKHZvaWQg KiwgQ0xJRU5UICopOwpleHRlcm4gcnBjYmxpc3RfcHRyICpycGNicHJvY19kdW1wXzNfc3ZjKHZv aWQgKiwgc3RydWN0IHN2Y19yZXEgKik7CgpleHRlcm4gcnBjYl9ybXRjYWxscmVzICpycGNicHJv Y19jYWxsaXRfMyhycGNiX3JtdGNhbGxhcmdzICosIENMSUVOVCAqKTsKZXh0ZXJuIHJwY2Jfcm10 Y2FsbHJlcyAqcnBjYnByb2NfY2FsbGl0XzNfc3ZjKHJwY2Jfcm10Y2FsbGFyZ3MgKiwgc3RydWN0 IHN2Y19yZXEgKik7CgpleHRlcm4gdV9pbnQgKnJwY2Jwcm9jX2dldHRpbWVfMyh2b2lkICosIENM SUVOVCAqKTsKZXh0ZXJuIHVfaW50ICpycGNicHJvY19nZXR0aW1lXzNfc3ZjKHZvaWQgKiwgc3Ry dWN0IHN2Y19yZXEgKik7CgpleHRlcm4gc3RydWN0IG5ldGJ1ZiAqcnBjYnByb2NfdWFkZHIydGFk ZHJfMyhjaGFyICoqLCBDTElFTlQgKik7CmV4dGVybiBzdHJ1Y3QgbmV0YnVmICpycGNicHJvY191 YWRkcjJ0YWRkcl8zX3N2YyhjaGFyICoqLCBzdHJ1Y3Qgc3ZjX3JlcSAqKTsKCmV4dGVybiBjaGFy ICoqcnBjYnByb2NfdGFkZHIydWFkZHJfMyhzdHJ1Y3QgbmV0YnVmICosIENMSUVOVCAqKTsKZXh0 ZXJuIGNoYXIgKipycGNicHJvY190YWRkcjJ1YWRkcl8zX3N2YyhzdHJ1Y3QgbmV0YnVmICosIHN0 cnVjdCBzdmNfcmVxICopOwojIDczMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRl L3JwYy9ycGNiX3Byb3QuaCIgMyA0CmV4dGVybiBib29sX3QgKnJwY2Jwcm9jX3NldF80KHJwY2Ig KiwgQ0xJRU5UICopOwpleHRlcm4gYm9vbF90ICpycGNicHJvY19zZXRfNF9zdmMocnBjYiAqLCBz dHJ1Y3Qgc3ZjX3JlcSAqKTsKZXh0ZXJuIGJvb2xfdCAqcnBjYnByb2NfdW5zZXRfNChycGNiICos IENMSUVOVCAqKTsKZXh0ZXJuIGJvb2xfdCAqcnBjYnByb2NfdW5zZXRfNF9zdmMocnBjYiAqLCBz dHJ1Y3Qgc3ZjX3JlcSAqKTsKZXh0ZXJuIGNoYXIgKipycGNicHJvY19nZXRhZGRyXzQocnBjYiAq LCBDTElFTlQgKik7CmV4dGVybiBjaGFyICoqcnBjYnByb2NfZ2V0YWRkcl80X3N2YyhycGNiICos IHN0cnVjdCBzdmNfcmVxICopOwpleHRlcm4gcnBjYmxpc3RfcHRyICpycGNicHJvY19kdW1wXzQo dm9pZCAqLCBDTElFTlQgKik7CmV4dGVybiBycGNibGlzdF9wdHIgKnJwY2Jwcm9jX2R1bXBfNF9z dmModm9pZCAqLCBzdHJ1Y3Qgc3ZjX3JlcSAqKTsKCmV4dGVybiBycGNiX3JtdGNhbGxyZXMgKnJw Y2Jwcm9jX2JjYXN0XzQocnBjYl9ybXRjYWxsYXJncyAqLCBDTElFTlQgKik7CmV4dGVybiBycGNi X3JtdGNhbGxyZXMgKnJwY2Jwcm9jX2JjYXN0XzRfc3ZjKHJwY2Jfcm10Y2FsbGFyZ3MgKiwgc3Ry dWN0IHN2Y19yZXEgKik7CmV4dGVybiB1X2ludCAqcnBjYnByb2NfZ2V0dGltZV80KHZvaWQgKiwg Q0xJRU5UICopOwpleHRlcm4gdV9pbnQgKnJwY2Jwcm9jX2dldHRpbWVfNF9zdmModm9pZCAqLCBz dHJ1Y3Qgc3ZjX3JlcSAqKTsKZXh0ZXJuIHN0cnVjdCBuZXRidWYgKnJwY2Jwcm9jX3VhZGRyMnRh ZGRyXzQoY2hhciAqKiwgQ0xJRU5UICopOwpleHRlcm4gc3RydWN0IG5ldGJ1ZiAqcnBjYnByb2Nf dWFkZHIydGFkZHJfNF9zdmMoY2hhciAqKiwgc3RydWN0IHN2Y19yZXEgKik7CmV4dGVybiBjaGFy ICoqcnBjYnByb2NfdGFkZHIydWFkZHJfNChzdHJ1Y3QgbmV0YnVmICosIENMSUVOVCAqKTsKZXh0 ZXJuIGNoYXIgKipycGNicHJvY190YWRkcjJ1YWRkcl80X3N2YyhzdHJ1Y3QgbmV0YnVmICosIHN0 cnVjdCBzdmNfcmVxICopOwoKZXh0ZXJuIGNoYXIgKipycGNicHJvY19nZXR2ZXJzYWRkcl80KHJw Y2IgKiwgQ0xJRU5UICopOwpleHRlcm4gY2hhciAqKnJwY2Jwcm9jX2dldHZlcnNhZGRyXzRfc3Zj KHJwY2IgKiwgc3RydWN0IHN2Y19yZXEgKik7CgpleHRlcm4gcnBjYl9ybXRjYWxscmVzICpycGNi cHJvY19pbmRpcmVjdF80KHJwY2Jfcm10Y2FsbGFyZ3MgKiwgQ0xJRU5UICopOwpleHRlcm4gcnBj Yl9ybXRjYWxscmVzICpycGNicHJvY19pbmRpcmVjdF80X3N2YyhycGNiX3JtdGNhbGxhcmdzICos IHN0cnVjdCBzdmNfcmVxICopOwoKZXh0ZXJuIHJwY2JfZW50cnlfbGlzdF9wdHIgKnJwY2Jwcm9j X2dldGFkZHJsaXN0XzQocnBjYiAqLCBDTElFTlQgKik7CmV4dGVybiBycGNiX2VudHJ5X2xpc3Rf cHRyICpycGNicHJvY19nZXRhZGRybGlzdF80X3N2YyhycGNiICosIHN0cnVjdCBzdmNfcmVxICop OwoKZXh0ZXJuIHJwY2Jfc3RhdCAqcnBjYnByb2NfZ2V0c3RhdF80KHZvaWQgKiwgQ0xJRU5UICop OwpleHRlcm4gcnBjYl9zdGF0ICpycGNicHJvY19nZXRzdGF0XzRfc3ZjKHZvaWQgKiwgc3RydWN0 IHN2Y19yZXEgKik7CiMgNjIgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMv cnBjYl9jbG50LmgiIDIgMyA0CgoKZXh0ZXJuIGJvb2xfdCBfcnBjYl9zZXQgKGNvbnN0IHJwY3By b2dfdCwgY29uc3QgcnBjdmVyc190LCBjb25zdCBzdHJ1Y3QgbmV0Y29uZmlnICosIGNvbnN0IHN0 cnVjdCBuZXRidWYgKik7CgpleHRlcm4gYm9vbF90IF9ycGNiX3Vuc2V0IChjb25zdCBycGNwcm9n X3QsIGNvbnN0IHJwY3ZlcnNfdCwgY29uc3Qgc3RydWN0IG5ldGNvbmZpZyAqKTsKCmV4dGVybiBy cGNibGlzdCAqX3JwY2JfZ2V0bWFwcyAoY29uc3Qgc3RydWN0IG5ldGNvbmZpZyAqLCBjb25zdCBj aGFyICopOwpleHRlcm4gZW51bSBjbG50X3N0YXQgX3JwY2Jfcm10Y2FsbCAoY29uc3Qgc3RydWN0 IG5ldGNvbmZpZyAqLCBjb25zdCBjaGFyICosIGNvbnN0IHJwY3Byb2dfdCwgY29uc3QgcnBjdmVy c190LCBjb25zdCBycGNwcm9jX3QsIGNvbnN0IHhkcnByb2NfdCwgY29uc3QgX19jYWRkcl90LCBj b25zdCB4ZHJwcm9jX3QsIGNvbnN0IF9fY2FkZHJfdCwgY29uc3Qgc3RydWN0IHRpbWV2YWwsIGNv bnN0IHN0cnVjdCBuZXRidWYgKik7CgoKCgoKCmV4dGVybiBib29sX3QgcnBjYl9nZXRhZGRyIChj b25zdCBycGNwcm9nX3QsIGNvbnN0IHJwY3ZlcnNfdCwgY29uc3Qgc3RydWN0IG5ldGNvbmZpZyAq LCBzdHJ1Y3QgbmV0YnVmICosIGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIGJvb2xfdCBfcnBjYl9n ZXR0aW1lIChjb25zdCBjaGFyICosIHRpbWVfdCAqKTsKZXh0ZXJuIGNoYXIgKl9ycGNiX3RhZGRy MnVhZGRyIChzdHJ1Y3QgbmV0Y29uZmlnICosIHN0cnVjdCBuZXRidWYgKik7CmV4dGVybiBzdHJ1 Y3QgbmV0YnVmICpfcnBjYl91YWRkcjJ0YWRkciAoc3RydWN0IG5ldGNvbmZpZyAqLCBjaGFyICop OwoKIyA3NiAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGMuaCIgMiAz IDQKCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGNlbnQuaCIg MSAzIDQKIyA0OCAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwYy9ycGNlbnQu aCIgMyA0CnN0cnVjdCBycGNlbnQgewogICAgICBjaGFyICpyX25hbWU7CiAgICAgIGNoYXIgKipy X2FsaWFzZXM7CiAgICAgIGludCByX251bWJlcjsKfTsKCgpleHRlcm4gc3RydWN0IHJwY2VudCAq Z2V0cnBjYnluYW1lX3IgKGNvbnN0IGNoYXIgKiwgc3RydWN0IHJwY2VudCAqLCBjaGFyICosIGlu dCk7CgpleHRlcm4gc3RydWN0IHJwY2VudCAqZ2V0cnBjYnludW1iZXJfciAoaW50LCBzdHJ1Y3Qg cnBjZW50ICosIGNoYXIgKiwgaW50KTsKZXh0ZXJuIHN0cnVjdCBycGNlbnQgKmdldHJwY2VudF9y IChzdHJ1Y3QgcnBjZW50ICosIGNoYXIgKiwgaW50KTsKCgpleHRlcm4gc3RydWN0IHJwY2VudCAq X2dldHJwY2J5bmFtZSAoY2hhciAqKTsKZXh0ZXJuIHN0cnVjdCBycGNlbnQgKl9nZXRycGNieW51 bWJlciAoaW50KTsKZXh0ZXJuIHN0cnVjdCBycGNlbnQgKl9nZXRycGNlbnQgKHZvaWQpOwpleHRl cm4gdm9pZCBfc2V0cnBjZW50IChpbnQpOwpleHRlcm4gdm9pZCBfZW5kcnBjZW50ICh2b2lkKTsK CiMgNzggIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGMvcnBjLmgiIDIgMyA0 CgoKZXh0ZXJuIGludCBfZ2V0X215YWRkcmVzcyAoc3RydWN0IHNvY2thZGRyX2luICopOwpleHRl cm4gaW50IF9iaW5kcmVzdnBvcnQgKGludCwgc3RydWN0IHNvY2thZGRyX2luICopOwpleHRlcm4g aW50IF9yZWdpc3RlcnJwYyAoaW50LCBpbnQsIGludCwgY2hhciAqKCopIChjaGFyIFs4ODAwXSks IHhkcnByb2NfdCwgeGRycHJvY190KTsKCmV4dGVybiBpbnQgX2NhbGxycGMgKGNoYXIgKiwgaW50 LCBpbnQsIGludCwgeGRycHJvY190LCBjaGFyICosIHhkcnByb2NfdCAsIGNoYXIgKik7CgpleHRl cm4gaW50IF9nZXRycGNwb3J0IChjaGFyICosIGludCwgaW50LCBpbnQpOwoKY2hhciAqdGFkZHIy dWFkZHIgKGNvbnN0IHN0cnVjdCBuZXRjb25maWcgKiwgY29uc3Qgc3RydWN0IG5ldGJ1ZiAqKTsK c3RydWN0IG5ldGJ1ZiAqdWFkZHIydGFkZHIgKGNvbnN0IHN0cnVjdCBuZXRjb25maWcgKiwgY29u c3QgY2hhciAqKTsKCnN0cnVjdCBzb2NrYWRkcjsKZXh0ZXJuIGludCBfYmluZHJlc3Zwb3J0X3Nh IChpbnQsIHN0cnVjdCBzb2NrYWRkciAqKTsKCgoKCgoKCmludCBfX3JwY19uY29uZjJmZCAoY29u c3Qgc3RydWN0IG5ldGNvbmZpZyAqKTsKaW50IF9fcnBjX25jb25mMnNvY2tpbmZvIChjb25zdCBz dHJ1Y3QgbmV0Y29uZmlnICosIHN0cnVjdCBfX3JwY19zb2NraW5mbyAqKTsKCmludCBfX3JwY19m ZDJzb2NraW5mbyAoaW50LCBzdHJ1Y3QgX19ycGNfc29ja2luZm8gKik7CnVfaW50IF9fcnBjX2dl dF90X3NpemUgKGludCwgaW50LCBpbnQpOwoKIyA3MCAiL3UxL25ldGJzZC9zcmMvbGliL2xpYmMv Z2VuL2dldHVzZXJzaGVsbC5jIiAyCiMgMSAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNs dWRlL3JwY3N2Yy95cGNsbnQuaCIgMSAzIDQKIyA2MiAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vz ci9pbmNsdWRlL3JwY3N2Yy95cGNsbnQuaCIgMyA0CnN0cnVjdCB5cGFsbF9jYWxsYmFjayB7Cgog ICAgICAgIGludCAoKmZvcmVhY2gpIChpbnQsIGNoYXIgKiwgaW50LCBjaGFyICosIGludCwgY2hh ciAqKTsKICAgICAgICBjaGFyICpkYXRhOwp9OwoKCmludCBfeXBfYmluZCAoY29uc3QgY2hhciAq KTsKc3RydWN0IGRvbV9iaW5kaW5nOwppbnQgX3lwX2RvYmluZCAoY29uc3QgY2hhciAqLCBzdHJ1 Y3QgZG9tX2JpbmRpbmcgKiopOwppbnQgX3lwX2NoZWNrIChjaGFyICoqKTsKdm9pZCBfeXBfdW5i aW5kIChjb25zdCBjaGFyICopOwppbnQgX3lwX2dldF9kZWZhdWx0X2RvbWFpbiAoY2hhciAqKik7 CnN0cnVjdCB5cG1hcGxpc3Q7CmludCBfeXBfbWFwbGlzdCAoY29uc3QgY2hhciAqLCBzdHJ1Y3Qg eXBtYXBsaXN0ICoqKTsKaW50IF95cF9tYXRjaCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICos IGNvbnN0IGNoYXIgKiwgaW50ICwgY2hhciAqKiwgaW50ICopOwoKaW50IF95cF9maXJzdCAoY29u c3QgY2hhciAqLCBjb25zdCBjaGFyICosIGNoYXIgKiosIGludCAqLCBjaGFyICoqLCBpbnQgKik7 CgppbnQgX3lwX25leHQgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICos IGludCwgY2hhciAqKiwgaW50ICosIGNoYXIgKiosIGludCAqKTsKCmludCBfeXBfbWFzdGVyIChj b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY2hhciAqKik7CmludCBfeXBfb3JkZXIgKGNvbnN0 IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQgKik7CmludCBfeXBfYWxsIChjb25zdCBjaGFyICos IGNvbnN0IGNoYXIgKiwgc3RydWN0IHlwYWxsX2NhbGxiYWNrICopOwoKY2hhciAqIF95cGVycl9z dHJpbmcgKGludCk7CmludCBfeXBwcm90X2VyciAodW5zaWduZWQgaW50KTsKCiMgNzEgIi91MS9u ZXRic2Qvc3JjL2xpYi9saWJjL2dlbi9nZXR1c2Vyc2hlbGwuYyIgMgojIDEgIi91MS9kaXNrbGVz cy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGNzdmMveXBfcHJvdC5oIiAxIDMgNAojIDczICIvdTEv ZGlza2xlc3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjc3ZjL3lwX3Byb3QuaCIgMyA0CnR5cGVk ZWYgdV9pbnQgYm9vbDsKIyA5NiAiL3UxL2Rpc2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3Jw Y3N2Yy95cF9wcm90LmgiIDMgNAp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgY29uc3QgY2hhciAq ZHB0cjsKICAgICAgICBpbnQgZHNpemU7Cn0gZGF0dW07CgoKCnN0cnVjdCB5cG1hcF9wYXJtcyB7 CiAgICAgICAgY29uc3QgY2hhciAqZG9tYWluOwogICAgICAgIGNvbnN0IGNoYXIgKm1hcDsKICAg ICAgICB1bnNpZ25lZCBpbnQgb3JkZXJudW07CiAgICAgICAgY2hhciAqb3duZXI7Cn07CgpzdHJ1 Y3QgeXByZXFfa2V5IHsKICAgICAgICBjb25zdCBjaGFyICpkb21haW47CiAgICAgICAgY29uc3Qg Y2hhciAqbWFwOwogICAgICAgIGRhdHVtIGtleWRhdDsKfTsKCnN0cnVjdCB5cHJlcV9ub2tleSB7 CiAgICAgICAgY29uc3QgY2hhciAqZG9tYWluOwogICAgICAgIGNvbnN0IGNoYXIgKm1hcDsKfTsK CnN0cnVjdCB5cHJlcV94ZnIgewogICAgICAgIHN0cnVjdCB5cG1hcF9wYXJtcyBtYXBfcGFybXM7 CiAgICAgICAgdW5zaWduZWQgaW50IHRyYW5zaWQ7CiAgICAgICAgdW5zaWduZWQgaW50IHByb3Rv OwogICAgICAgIHVuc2lnbmVkIGludCBwb3J0Owp9OwoKCgoKCnN0cnVjdCB5cHJlc3BfdmFsIHsK ICAgICAgICB1bnNpZ25lZCBpbnQgc3RhdHVzOwogICAgICAgIGRhdHVtIHZhbGRhdDsKfTsKCnN0 cnVjdCB5cHJlc3Bfa2V5X3ZhbCB7CiAgICAgICAgdW5zaWduZWQgaW50IHN0YXR1czsKICAgICAg ICBkYXR1bSBrZXlkYXQ7CiAgICAgICAgZGF0dW0gdmFsZGF0Owp9OwoKc3RydWN0IHlwcmVzcF9t YXN0ZXIgewogICAgICAgIHVuc2lnbmVkIGludCBzdGF0dXM7CiAgICAgICAgY2hhciAqbWFzdGVy Owp9OwoKc3RydWN0IHlwcmVzcF9vcmRlciB7CiAgICAgICAgdW5zaWduZWQgaW50IHN0YXR1czsK ICAgICAgICB1bnNpZ25lZCBpbnQgb3JkZXJudW07Cn07CgpzdHJ1Y3QgeXBtYXBsaXN0IHsKICAg ICAgICBjaGFyIHlwbWxfbmFtZVs2NCArIDFdOwogICAgICAgIHN0cnVjdCB5cG1hcGxpc3QgKnlw bWxfbmV4dDsKfTsKCnN0cnVjdCB5cHJlc3BfbWFwbGlzdCB7CiAgICAgICAgdW5zaWduZWQgaW50 IHN0YXR1czsKICAgICAgICBzdHJ1Y3QgeXBtYXBsaXN0ICpsaXN0Owp9OwojIDIwMiAiL3UxL2Rp c2tsZXNzL2NwMTUwMC0xL3Vzci9pbmNsdWRlL3JwY3N2Yy95cF9wcm90LmgiIDMgNApzdHJ1Y3Qg ZG9tX2JpbmRpbmcgewogICAgICAgIHN0cnVjdCBkb21fYmluZGluZyAqZG9tX3BuZXh0OwogICAg ICAgIGNoYXIgZG9tX2RvbWFpbls2NCArIDFdOwogICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBk b21fc2VydmVyX2FkZHI7CiAgICAgICAgdV9zaG9ydCBkb21fc2VydmVyX3BvcnQ7CiAgICAgICAg aW50IGRvbV9zb2NrZXQ7CiAgICAgICAgQ0xJRU5UICpkb21fY2xpZW50OwogICAgICAgIHVfc2hv cnQgZG9tX2xvY2FsX3BvcnQ7CiAgICAgICAgbG9uZyBkb21fdmVyczsKfTsKIyAyMzcgIi91MS9k aXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGNzdmMveXBfcHJvdC5oIiAzIDQKZW51bSB5 cGJpbmRfcmVzcHR5cGUgewogICAgICAgIFlQQklORF9TVUNDX1ZBTCA9IDEsCiAgICAgICAgWVBC SU5EX0ZBSUxfVkFMID0gMgp9OwoKCnN0cnVjdCB5cGJpbmRfYmluZGluZyB7CiAgICAgICAgc3Ry dWN0IGluX2FkZHIgeXBiaW5kX2JpbmRpbmdfYWRkcjsKICAgICAgICB1X2ludDE2X3QgeXBiaW5k X2JpbmRpbmdfcG9ydDsKfTsKCnN0cnVjdCB5cGJpbmRfcmVzcCB7CiAgICAgICAgZW51bSB5cGJp bmRfcmVzcHR5cGUgeXBiaW5kX3N0YXR1czsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgeXBiaW5kX2Vycm9yOwogICAgICAgICAgICAgICAgc3RydWN0IHlwYmlu ZF9iaW5kaW5nIHlwYmluZF9iaW5kaW5mbzsKICAgICAgICB9IHlwYmluZF9yZXNwYm9keTsKfTsK IyAyNjQgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVkZS9ycGNzdmMveXBfcHJvdC5o IiAzIDQKc3RydWN0IHlwYmluZF9zZXRkb20gewogICAgICAgIGNoYXIgeXBzZXRkb21fZG9tYWlu WzY0ICsgMV07CiAgICAgICAgc3RydWN0IHlwYmluZF9iaW5kaW5nIHlwc2V0ZG9tX2JpbmRpbmc7 CiAgICAgICAgdW5zaWduZWQgaW50IHlwc2V0ZG9tX3ZlcnM7Cn07CiMgMjkxICIvdTEvZGlza2xl c3MvY3AxNTAwLTEvdXNyL2luY2x1ZGUvcnBjc3ZjL3lwX3Byb3QuaCIgMyA0CnN0cnVjdCB5cHB1 c2hyZXNwX3hmciB7CiAgICAgICAgdW5zaWduZWQgaW50IHRyYW5zaWQ7CiAgICAgICAgdW5zaWdu ZWQgaW50IHN0YXR1czsKfTsKIyAzMTQgIi91MS9kaXNrbGVzcy9jcDE1MDAtMS91c3IvaW5jbHVk ZS9ycGNzdmMveXBfcHJvdC5oIiAzIDQKc3RydWN0IHlwYWxsX2NhbGxiYWNrOwoKCmJvb2xfdCBf eGRyX2RvbWFpbm5hbWUgKFhEUiAqLCBjaGFyICopOwpib29sX3QgX3hkcl9wZWVybmFtZSAoWERS ICosIGNoYXIgKik7CmJvb2xfdCBfeGRyX21hcG5hbWUgKFhEUiAqLCBjaGFyICopOwpib29sX3Qg X3hkcl9kYXR1bSAoWERSICosIGRhdHVtICopOwpib29sX3QgX3hkcl95cGRvbWFpbl93cmFwX3N0 cmluZyAoWERSICosIGNoYXIgKiopOwpib29sX3QgX3hkcl95cG1hcF93cmFwX3N0cmluZyAoWERS ICosIGNoYXIgKiopOwpib29sX3QgX3hkcl95cHJlcV9rZXkgKFhEUiAqLCBzdHJ1Y3QgeXByZXFf a2V5ICopOwpib29sX3QgX3hkcl95cHJlcV9ub2tleSAoWERSICosIHN0cnVjdCB5cHJlcV9ub2tl eSAqKTsKYm9vbF90IF94ZHJfeXByZXFfeGZyIChYRFIgKiwgc3RydWN0IHlwcmVxX3hmciAqKTsK Ym9vbF90IF94ZHJfeXByZXNwX3ZhbCAoWERSICosIHN0cnVjdCB5cHJlc3BfdmFsICopOwpib29s X3QgX3hkcl95cHJlc3Bfa2V5X3ZhbCAoWERSICosIHN0cnVjdCB5cHJlc3Bfa2V5X3ZhbCAqKTsK Ym9vbF90IF94ZHJfeXBtYXBfcGFybXMgKFhEUiAqLCBzdHJ1Y3QgeXBtYXBfcGFybXMgKik7CmJv b2xfdCBfeGRyX3lwb3duZXJfd3JhcF9zdHJpbmcgKFhEUiAqLCBjaGFyICoqKTsKYm9vbF90IF94 ZHJfeXBwdXNocmVzcF94ZnIgKFhEUiAqLCBzdHJ1Y3QgeXBwdXNocmVzcF94ZnIgKik7CmJvb2xf dCBfeGRyX3lwcmVzcF9vcmRlciAoWERSICosIHN0cnVjdCB5cHJlc3Bfb3JkZXIgKik7CmJvb2xf dCBfeGRyX3lwcmVzcF9tYXN0ZXIgKFhEUiAqLCBzdHJ1Y3QgeXByZXNwX21hc3RlciAqKTsKYm9v bF90IF94ZHJfeXBhbGwgKFhEUiAqLCBzdHJ1Y3QgeXBhbGxfY2FsbGJhY2sgKik7CmJvb2xfdCBf eGRyX3lwcmVzcF9tYXBsaXN0IChYRFIgKiwgc3RydWN0IHlwcmVzcF9tYXBsaXN0ICopOwpib29s X3QgX3hkcl95cGJpbmRfcmVzcCAoWERSICosIHN0cnVjdCB5cGJpbmRfcmVzcCAqKTsKYm9vbF90 IF94ZHJfeXBiaW5kX3NldGRvbSAoWERSICosIHN0cnVjdCB5cGJpbmRfc2V0ZG9tICopOwpib29s X3QgX3hkcl95cG1hcGxpc3QgKFhEUiAqLCBzdHJ1Y3QgeXBtYXBsaXN0ICopOwpib29sX3QgX3hk cl95cF9pbmFkZHIgKFhEUiAqLCBzdHJ1Y3QgaW5fYWRkciAqKTsKCiMgNzIgIi91MS9uZXRic2Qv c3JjL2xpYi9saWJjL2dlbi9nZXR1c2Vyc2hlbGwuYyIgMgoKCgpfX2FzbV9fKCIud2VhayAiICJl bmR1c2Vyc2hlbGwiICIgOyAiICJlbmR1c2Vyc2hlbGwiICIgPSAiICJfZW5kdXNlcnNoZWxsIik7 Cl9fYXNtX18oIi53ZWFrICIgImdldHVzZXJzaGVsbCIgIiA7ICIgImdldHVzZXJzaGVsbCIgIiA9 ICIgIl9nZXR1c2Vyc2hlbGwiKTsKX19hc21fXygiLndlYWsgIiAic2V0dXNlcnNoZWxsIiAiIDsg IiAic2V0dXNlcnNoZWxsIiAiID0gIiAiX3NldHVzZXJzaGVsbCIpOwoKCgoKCgoKc3RhdGljIGNv bnN0IGNoYXIgKmNvbnN0IG9rc2hlbGxzW10gPSB7ICIvYmluL3NoIiwgIi9iaW4vY3NoIiwgMCB9 OwpzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgKmN1cnNoZWxsOwpzdGF0aWMgU3RyaW5nTGlzdCAq c2w7CgpzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgKmluaXRzaGVsbHMgKHZvaWQpOwoKCgoKIGNo YXIgKgpfZ2V0dXNlcnNoZWxsKCkKewogICAgICAgIGNoYXIgKnJldDsKCiAgICAgICAgaWYgKGN1 cnNoZWxsID09IDApCiAgICAgICAgICAgICAgICBjdXJzaGVsbCA9IGluaXRzaGVsbHMoKTsKCiAg ICAgICAgcmV0ID0gKCBjaGFyICopKmN1cnNoZWxsOwogICAgICAgIGlmIChyZXQgIT0gMCkKICAg ICAgICAgICAgICAgIGN1cnNoZWxsKys7CiAgICAgICAgcmV0dXJuIChyZXQpOwp9Cgp2b2lkCl9l bmR1c2Vyc2hlbGwoKQp7CiAgICAgICAgaWYgKHNsKQogICAgICAgICAgICAgICAgX3NsX2ZyZWUo c2wsIDEpOwogICAgICAgIHNsID0gMDsKICAgICAgICBjdXJzaGVsbCA9IDA7Cn0KCnZvaWQKX3Nl dHVzZXJzaGVsbCgpCnsKCiAgICAgICAgY3Vyc2hlbGwgPSBpbml0c2hlbGxzKCk7Cn0KCgpzdGF0 aWMgaW50IF9sb2NhbF9pbml0c2hlbGxzICh2b2lkICosIHZvaWQgKiwgdmFfbGlzdCk7CgoKc3Rh dGljIGludApfbG9jYWxfaW5pdHNoZWxscyhydiwgY2JfZGF0YSwgYXApCiAgICAgICAgdm9pZCAq cnY7CiAgICAgICAgdm9pZCAqY2JfZGF0YTsKICAgICAgICB2YV9saXN0IGFwOwp7CiAgICAgICAg Y2hhciAqc3AsICpjcDsKICAgICAgICBGSUxFICpmcDsKICAgICAgICBjaGFyIGxpbmVbMTAyNCAr IDJdOwoKICAgICAgICBpZiAoc2wpCiAgICAgICAgICAgICAgICBfc2xfZnJlZShzbCwgMSk7CiAg ICAgICAgc2wgPSBfc2xfaW5pdCgpOwogICAgICAgIGlmICghc2wpCiAgICAgICAgICAgICAgICBy ZXR1cm4gKCgxPDwxKSk7CgogICAgICAgIGlmICgoZnAgPSBmb3BlbigiL2V0Yy9zaGVsbHMiLCAi ciIpKSA9PSAwKQogICAgICAgICAgICAgICAgcmV0dXJuICgoMTw8MSkpOwoKICAgICAgICBzcCA9 IGNwID0gbGluZTsKICAgICAgICB3aGlsZSAoZmdldHMoY3AsIDEwMjQgKyAxLCBmcCkgIT0gMCkg ewogICAgICAgICAgICAgICAgd2hpbGUgKCpjcCAhPSAnIycgJiYgKmNwICE9ICcvJyAmJiAqY3Ag IT0gJ1wwJykKICAgICAgICAgICAgICAgICAgICAgICAgY3ArKzsKICAgICAgICAgICAgICAgIGlm ICgqY3AgPT0gJyMnIHx8ICpjcCA9PSAnXDAnKQogICAgICAgICAgICAgICAgICAgICAgICBjb250 aW51ZTsKICAgICAgICAgICAgICAgIHNwID0gY3A7CiAgICAgICAgICAgICAgICB3aGlsZSAoISgo aW50KSgoX2N0eXBlXyArIDEpWyhpbnQpKCh1bnNpZ25lZCBjaGFyKSAqY3ApXSAmIDB4MDgpKSAm JiAqY3AgIT0gJyMnCiAgICAgICAgICAgICAgICAgICAgJiYgKmNwICE9ICdcMCcpCiAgICAgICAg ICAgICAgICAgICAgICAgIGNwKys7CiAgICAgICAgICAgICAgICAqY3ArKyA9ICdcMCc7CiAgICAg ICAgICAgICAgICBpZiAoX3NsX2FkZChzbCwgX3N0cmR1cChzcCkpID09IC0xKQogICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gKCgxPDwxKSk7CiAgICAgICAgfQogICAgICAgICh2b2lkKWZj bG9zZShmcCk7CiAgICAgICAgcmV0dXJuICgoMTw8MCkpOwp9CgoKc3RhdGljIGludCBfZG5zX2lu aXRzaGVsbHMgKHZvaWQgKiwgdm9pZCAqLCB2YV9saXN0KTsKCgpzdGF0aWMgaW50Cl9kbnNfaW5p dHNoZWxscyhydiwgY2JfZGF0YSwgYXApCiAgICAgICAgdm9pZCAqcnY7CiAgICAgICAgdm9pZCAq Y2JfZGF0YTsKICAgICAgICB2YV9saXN0IGFwOwp7CiAgICAgICAgY2hhciBzaGVsbG5hbWVbXSA9 ICJzaGVsbHMtWFhYWFgiOwogICAgICAgIGludCBoc2luZGV4LCBocGksIHI7CiAgICAgICAgY2hh ciAqKmhwOwogICAgICAgIHZvaWQgKmNvbnRleHQ7CgogICAgICAgIGlmIChzbCkKICAgICAgICAg ICAgICAgIF9zbF9mcmVlKHNsLCAxKTsKICAgICAgICBzbCA9IF9zbF9pbml0KCk7CiAgICAgICAg aWYgKCFzbCkKICAgICAgICAgICAgICAgIHJldHVybiAoKDE8PDEpKTsKCiAgICAgICAgciA9ICgx PDwxKTsKICAgICAgICBpZiAoX2hlc2lvZF9pbml0KCZjb250ZXh0KSA9PSAtMSkKICAgICAgICAg ICAgICAgIHJldHVybiAocik7CgogICAgICAgIGZvciAoaHNpbmRleCA9IDA7IDsgaHNpbmRleCsr KSB7CiAgICAgICAgICAgICAgICBfc25wcmludGYoc2hlbGxuYW1lLCBzaXplb2Yoc2hlbGxuYW1l KS0xLCAic2hlbGxzLSVkIiwgaHNpbmRleCk7CiAgICAgICAgICAgICAgICBocCA9IF9oZXNpb2Rf cmVzb2x2ZShjb250ZXh0LCBzaGVsbG5hbWUsICJzaGVsbHMiKTsKICAgICAgICAgICAgICAgIGlm IChocCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKl9fZXJybm8oKSkgPT0g MikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoc2luZGV4ID09IDApCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gKDE8PDIpOwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHIgPSAoMTw8MCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg ICAgICAgICAgICAgICAgICBpbnQgYmFkID0gMDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZv ciAoaHBpID0gMDsgaHBbaHBpXTsgaHBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaWYgKF9zbF9hZGQoc2wsIGhwW2hwaV0pID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBiYWQgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgICAgICAgICBmcmVlKGhwKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYg KGJhZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg ICAgIH0KICAgICAgICB9CiAgICAgICAgX2hlc2lvZF9lbmQoY29udGV4dCk7CiAgICAgICAgcmV0 dXJuIChyKTsKfQoKCgpzdGF0aWMgaW50IF9uaXNfaW5pdHNoZWxscyAodm9pZCAqLCB2b2lkICos IHZhX2xpc3QpOwoKCnN0YXRpYyBpbnQKX25pc19pbml0c2hlbGxzKHJ2LCBjYl9kYXRhLCBhcCkK ICAgICAgICB2b2lkICpydjsKICAgICAgICB2b2lkICpjYl9kYXRhOwogICAgICAgIHZhX2xpc3Qg YXA7CnsKICAgICAgICBzdGF0aWMgY2hhciAqeXBkb21haW47CgogICAgICAgIGlmIChzbCkKICAg ICAgICAgICAgICAgIF9zbF9mcmVlKHNsLCAxKTsKICAgICAgICBzbCA9IF9zbF9pbml0KCk7CiAg ICAgICAgaWYgKCFzbCkKICAgICAgICAgICAgICAgIHJldHVybiAoKDE8PDEpKTsKCiAgICAgICAg aWYgKHlwZG9tYWluID09IDApIHsKICAgICAgICAgICAgICAgIHN3aXRjaCAoX3lwX2dldF9kZWZh dWx0X2RvbWFpbigmeXBkb21haW4pKSB7CiAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAg ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gKCgxPDwzKSk7CiAgICAgICAgICAgICAgICBkZWZhdWx0Ogog ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCgxPDwxKSk7CiAgICAgICAgICAgICAgICB9 CiAgICAgICAgfQoKICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICBjaGFyICp5cGN1 ciA9IDA7CiAgICAgICAgICAgICAgICBpbnQgeXBjdXJsZW4gPSAwOwogICAgICAgICAgICAgICAg Y2hhciAqa2V5LCAqZGF0YTsKICAgICAgICAgICAgICAgIGludCBrZXlsZW4sIGRhdGFsZW47CiAg ICAgICAgICAgICAgICBpbnQgcjsKCiAgICAgICAgICAgICAgICBrZXkgPSBkYXRhID0gMDsKICAg ICAgICAgICAgICAgIGlmICh5cGN1cikgewogICAgICAgICAgICAgICAgICAgICAgICByID0gX3lw X25leHQoeXBkb21haW4sICJzaGVsbHMiLCB5cGN1ciwgeXBjdXJsZW4sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAma2V5LCAma2V5bGVuLCAmZGF0YSwgJmRhdGFsZW4p OwogICAgICAgICAgICAgICAgICAgICAgICBmcmVlKHlwY3VyKTsKICAgICAgICAgICAgICAgICAg ICAgICAgc3dpdGNoIChyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAg Y2FzZSA4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUoa2V5KTsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlKGRhdGEpOwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiAoKDE8PDApKTsKICAgICAgICAgICAgICAgICAgICAgICAgZGVm YXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlKGtleSk7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZnJlZShkYXRhKTsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gKCgxPDwxKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgICAgICAgICAgeXBjdXIgPSBrZXk7CiAgICAgICAgICAgICAgICAgICAgICAg IHlwY3VybGVuID0ga2V5bGVuOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKF95cF9maXJzdCh5cGRvbWFpbiwgInNoZWxscyIsICZ5cGN1ciwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnlwY3VybGVuLCAmZGF0YSwgJmRhdGFs ZW4pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZShkYXRhKTsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCgxPDwxKSk7CiAgICAgICAgICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRhdGFbZGF0YWxl bl0gPSAnXDAnOwogICAgICAgICAgICAgICAgaWYgKF9zbF9hZGQoc2wsIGRhdGEpID09IC0xKQog ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCgxPDwxKSk7CiAgICAgICAgfQp9CgoKc3Rh dGljIGNvbnN0IGNoYXIgKmNvbnN0ICoKaW5pdHNoZWxscygpCnsKICAgICAgICBzdGF0aWMgY29u c3QgbnNfZHRhYiBkdGFiW10gPSB7CiAgICAgICAgICAgICAgICB7ICJmaWxlcyIsIF9sb2NhbF9p bml0c2hlbGxzLCAwIH0sCiAgICAgICAgICAgICAgICB7ICJkbnMiLCBfZG5zX2luaXRzaGVsbHMs IDAgfSwKICAgICAgICAgICAgICAgIHsgIm5pcyIsIF9uaXNfaW5pdHNoZWxscywgMCB9LAogICAg ICAgICAgICAgICAgeyAwIH0KICAgICAgICB9OwogICAgICAgIGlmIChzbCkKICAgICAgICAgICAg ICAgIF9zbF9mcmVlKHNsLCAxKTsKICAgICAgICBzbCA9IF9zbF9pbml0KCk7CiAgICAgICAgaWYg KCFzbCkKICAgICAgICAgICAgICAgIGdvdG8gYmFkaW5pdHNoZWxsczsKCiAgICAgICAgaWYgKF9u c2Rpc3BhdGNoKDAsIGR0YWIsICJzaGVsbHMiLCAiaW5pdHNoZWxscyIsIF9fbnNkZWZhdWx0c3Jj KQogICAgICAgICAgICAhPSAoMTw8MCkpIHsKIGJhZGluaXRzaGVsbHM6CiAgICAgICAgICAgICAg ICBpZiAoc2wpCiAgICAgICAgICAgICAgICAgICAgICAgIF9zbF9mcmVlKHNsLCAxKTsKICAgICAg ICAgICAgICAgIHNsID0gMDsKICAgICAgICAgICAgICAgIHJldHVybiAob2tzaGVsbHMpOwogICAg ICAgIH0KICAgICAgICBpZiAoX3NsX2FkZChzbCwgMCkgPT0gLTEpCiAgICAgICAgICAgICAgICBn b3RvIGJhZGluaXRzaGVsbHM7CgogICAgICAgIHJldHVybiAoY29uc3QgY2hhciAqY29uc3QgKiko c2wtPnNsX3N0cik7Cn0K