From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29700 invoked by alias); 23 May 2002 00:56:03 -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 29653 invoked by uid 71); 23 May 2002 00:56:01 -0000 Resent-Date: 23 May 2002 00:56:01 -0000 Resent-Message-ID: <20020523005601.29651.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, fvdl@wasabisystems.com Resent-Reply-To: gcc-gnats@gcc.gnu.org, thorpej@wasabisystems.com Received:(qmail 12903 invoked by uid 61); 23 May 2002 00:50:15 -0000 Message-Id:<20020523005015.12902.qmail@sources.redhat.com> Date: Wed, 22 May 2002 17:56:00 -0000 From: thorpej@wasabisystems.com Reply-To: thorpej@wasabisystems.com To: gcc-gnats@gcc.gnu.org Cc: fvdl@wasabisystems.com X-Send-Pr-Version:gnatsweb-2.9.3 (1.1.1.1.2.31) X-GNATS-Notify:fvdl@wasabisystems.com Subject: target/6775: x86-64-netbsd compiler dies with SIGILL when using -Os X-SW-Source: 2002-05/txt/msg00696.txt.bz2 List-Id: >Number: 6775 >Category: target >Synopsis: x86-64-netbsd compiler dies with SIGILL when using -Os >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed May 22 17:56:01 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Jason R Thorpe >Release: GNU C version 3.2 20020521 (experimental) (x86_64-unknown-netbsd) >Organization: >Environment: i386-netbsdelf host, x86_64-netbsd target building NetBSD/x86_64 kernel >Description: When building the NetBSD/x86_64 kernel with -Os (as we do for use in the simulator), cc1 dies with an illegal instruction when compiling the interrupt service routine of the LANCE Ethernet driver. >How-To-Repeat: The attached preprocessed source file contains the function which causes the compiler to croak. The following will reproduce the problem: x86_64-unknown-netbsd-gcc -Os -ffreestanding -c am7990.i >Fix: The file can be compiled with -O0, -O1, -O2, and -O3. Only -Os exhibits the problem. >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="am7990.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="am7990.i" IyAxICJhbTc5OTAuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+IgojIDEg ImFtNzk5MC5jIgojIDc4ICJhbTc5OTAuYyIKIyAxICIuLi8uLi8uLi8uLi9zeXMvY2RlZnMuaCIg MQojIDYzICIuLi8uLi8uLi8uLi9zeXMvY2RlZnMuaCIKIyAxICJtYWNoaW5lL2NkZWZzLmgiIDEK IyA2NCAiLi4vLi4vLi4vLi4vc3lzL2NkZWZzLmgiIDIKCiMgMSAiLi4vLi4vLi4vLi4vc3lzL2Nk ZWZzX2VsZi5oIiAxCiMgNjYgIi4uLy4uLy4uLy4uL3N5cy9jZGVmcy5oIiAyCiMgNzkgImFtNzk5 MC5jIiAyCl9fYXNtX18oIi5zZWN0aW9uICIgIi5pZGVudCIgIiA7IC5hc2NpeiBcIiIgIiROZXRC U0Q6IGFtNzk5MC5jLHYgMS42NCAyMDAxLzExLzEzIDEzOjE0OjM0IGx1a2VtIEV4cCAkIiAiXCIg OyAudGV4dCIpOwoKIyAxICJicGZpbHRlci5oIiAxCiMgODIgImFtNzk5MC5jIiAyCiMgMSAicm5k LmgiIDEKIyA4MyAiYW03OTkwLmMiIDIKCiMgMSAiLi4vLi4vLi4vLi4vc3lzL3BhcmFtLmgiIDEK IyA4NiAiLi4vLi4vLi4vLi4vc3lzL3BhcmFtLmgiCiMgMSAiLi4vLi4vLi4vLi4vc3lzL251bGwu aCIgMQojIDg3ICIuLi8uLi8uLi8uLi9zeXMvcGFyYW0uaCIgMgoKCiMgMSAiLi4vLi4vLi4vLi4v c3lzL2ludHR5cGVzLmgiIDEKIyA0NiAiLi4vLi4vLi4vLi4vc3lzL2ludHR5cGVzLmgiCiMgMSAi Li4vLi4vLi4vLi4vc3lzL3N0ZGludC5oIiAxCiMgNDIgIi4uLy4uLy4uLy4uL3N5cy9zdGRpbnQu aCIKIyAxICJtYWNoaW5lL2ludF90eXBlcy5oIiAxCiMgNDcgIm1hY2hpbmUvaW50X3R5cGVzLmgi CnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3Vp bnQ4X3Q7CnR5cGVkZWYgc2hvcnQgaW50IF9faW50MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9y dCBpbnQgX191aW50MTZfdDsKdHlwZWRlZiBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVk IGludCBfX3VpbnQzMl90Owp0eXBlZGVmIGxvbmcgaW50IF9faW50NjRfdDsKdHlwZWRlZiB1bnNp Z25lZCBsb25nIGludCBfX3VpbnQ2NF90OwoKCgoKCnR5cGVkZWYgbG9uZyBfX2ludHB0cl90Owp0 eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191aW50cHRyX3Q7CiMgNDMgIi4uLy4uLy4uLy4uL3N5cy9z dGRpbnQuaCIgMgoKCnR5cGVkZWYgX19pbnQ4X3QgaW50OF90OwoKCgoKdHlwZWRlZiBfX3VpbnQ4 X3QgdWludDhfdDsKCgoKCnR5cGVkZWYgX19pbnQxNl90IGludDE2X3Q7CgoKCgp0eXBlZGVmIF9f dWludDE2X3QgdWludDE2X3Q7CgoKCgp0eXBlZGVmIF9faW50MzJfdCBpbnQzMl90OwoKCgoKdHlw ZWRlZiBfX3VpbnQzMl90IHVpbnQzMl90OwoKCgoKdHlwZWRlZiBfX2ludDY0X3QgaW50NjRfdDsK CgoKCnR5cGVkZWYgX191aW50NjRfdCB1aW50NjRfdDsKCgoKCnR5cGVkZWYgX19pbnRwdHJfdCBp bnRwdHJfdDsKCgoKCnR5cGVkZWYgX191aW50cHRyX3QgdWludHB0cl90OwoKCgojIDEgIm1hY2hp bmUvaW50X213Z3d0eXBlcy5oIiAxCiMgNDggIm1hY2hpbmUvaW50X213Z3d0eXBlcy5oIgp0eXBl ZGVmIHNpZ25lZCBjaGFyIGludF9sZWFzdDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnRf bGVhc3Q4X3Q7CnR5cGVkZWYgc2hvcnQgaW50IGludF9sZWFzdDE2X3Q7CnR5cGVkZWYgdW5zaWdu ZWQgc2hvcnQgaW50IHVpbnRfbGVhc3QxNl90Owp0eXBlZGVmIGludCBpbnRfbGVhc3QzMl90Owp0 eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2xlYXN0MzJfdDsKdHlwZWRlZiBsb25nIGludCBpbnRf bGVhc3Q2NF90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHVpbnRfbGVhc3Q2NF90OwoKCnR5 cGVkZWYgaW50IGludF9mYXN0OF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2Zhc3Q4X3Q7 CnR5cGVkZWYgaW50IGludF9mYXN0MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9mYXN0 MTZfdDsKdHlwZWRlZiBpbnQgaW50X2Zhc3QzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50 X2Zhc3QzMl90Owp0eXBlZGVmIGxvbmcgaW50IGludF9mYXN0NjRfdDsKdHlwZWRlZiB1bnNpZ25l ZCBsb25nIGludCB1aW50X2Zhc3Q2NF90OwoKCgp0eXBlZGVmIGxvbmcgaW50IGludG1heF90Owp0 eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHVpbnRtYXhfdDsKIyA5NSAiLi4vLi4vLi4vLi4vc3lz L3N0ZGludC5oIiAyCgoKIyAxICJtYWNoaW5lL2ludF9saW1pdHMuaCIgMQojIDk4ICIuLi8uLi8u Li8uLi9zeXMvc3RkaW50LmgiIDIKCgoKIyAxICJtYWNoaW5lL2ludF9jb25zdC5oIiAxCiMgMTAy ICIuLi8uLi8uLi8uLi9zeXMvc3RkaW50LmgiIDIKIyA0NyAiLi4vLi4vLi4vLi4vc3lzL2ludHR5 cGVzLmgiIDIKCgojIDEgIm1hY2hpbmUvaW50X2ZtdGlvLmgiIDEKIyA1MCAiLi4vLi4vLi4vLi4v c3lzL2ludHR5cGVzLmgiIDIKIyA5MCAiLi4vLi4vLi4vLi4vc3lzL3BhcmFtLmgiIDIKIyAxICIu Li8uLi8uLi8uLi9zeXMvdHlwZXMuaCIgMQojIDQ3ICIuLi8uLi8uLi8uLi9zeXMvdHlwZXMuaCIK IyAxICJtYWNoaW5lL3R5cGVzLmgiIDEKIyA0NSAibWFjaGluZS90eXBlcy5oIgp0eXBlZGVmIHN0 cnVjdCBsYWJlbF90IHsKICAgICAgICBsb25nIHZhbFs4XTsKfSBsYWJlbF90OwoKCgoKdHlwZWRl ZiB1bnNpZ25lZCBsb25nIHBhZGRyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBwc2l6ZV90Owp0 eXBlZGVmIHVuc2lnbmVkIGxvbmcgdmFkZHJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHZzaXpl X3Q7CgoKdHlwZWRlZiBsb25nIGludCByZWdpc3Rlcl90Owp0eXBlZGVmIGludCByZWdpc3RlcjMy X3Q7CiMgNDggIi4uLy4uLy4uLy4uL3N5cy90eXBlcy5oIiAyCgojIDEgIm1hY2hpbmUvYW5zaS5o IiAxCiMgOTQgIm1hY2hpbmUvYW5zaS5oIgp0eXBlZGVmIHVuaW9uIHsKICAgICAgICBjaGFyIF9f bWJzdGF0ZThbMTI4XTsKICAgICAgICBfX2ludDY0X3QgX19tYnN0YXRlTDsKfSBfX21ic3RhdGVf dDsKIyA1MCAiLi4vLi4vLi4vLi4vc3lzL3R5cGVzLmgiIDIKCgoKIyAxICIuLi8uLi8uLi8uLi9z eXMvYW5zaS5oIiAxCiMgNDQgIi4uLy4uLy4uLy4uL3N5cy9hbnNpLmgiCnR5cGVkZWYgY2hhciAq IF9fY2FkZHJfdDsKdHlwZWRlZiBfX3VpbnQzMl90IF9fZ2lkX3Q7CnR5cGVkZWYgX191aW50MzJf dCBfX2luX2FkZHJfdDsKdHlwZWRlZiBfX3VpbnQxNl90IF9faW5fcG9ydF90Owp0eXBlZGVmIF9f dWludDMyX3QgX19tb2RlX3Q7CnR5cGVkZWYgX19pbnQ2NF90IF9fb2ZmX3Q7CnR5cGVkZWYgX19p bnQzMl90IF9fcGlkX3Q7CnR5cGVkZWYgX191aW50OF90IF9fc2FfZmFtaWx5X3Q7CnR5cGVkZWYg dW5zaWduZWQgaW50IF9fc29ja2xlbl90Owp0eXBlZGVmIF9fdWludDMyX3QgX191aWRfdDsKIyA1 NCAiLi4vLi4vLi4vLi4vc3lzL3R5cGVzLmgiIDIKIyA5NSAiLi4vLi4vLi4vLi4vc3lzL3R5cGVz LmgiCnR5cGVkZWYgX191aW50OF90IHVfaW50OF90Owp0eXBlZGVmIF9fdWludDE2X3QgdV9pbnQx Nl90Owp0eXBlZGVmIF9fdWludDMyX3QgdV9pbnQzMl90Owp0eXBlZGVmIF9fdWludDY0X3QgdV9p bnQ2NF90OwoKIyAxICJtYWNoaW5lL2VuZGlhbi5oIiAxCgoKIyAxICIuLi8uLi8uLi8uLi9zeXMv ZW5kaWFuLmgiIDEKIyA0OSAiLi4vLi4vLi4vLi4vc3lzL2VuZGlhbi5oIgojIDEgIm1hY2hpbmUv ZW5kaWFuX21hY2hkZXAuaCIgMQoKCgoKCgojIDEgIm1hY2hpbmUvYnl0ZV9zd2FwLmgiIDEKIyA0 NyAibWFjaGluZS9ieXRlX3N3YXAuaCIKc3RhdGljIF9faW5saW5lIHVfaW50MzJfdCBfX2J5dGVf c3dhcF9sb25nX3ZhcmlhYmxlKHVfaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZSB1X2ludDE2X3Qg X19ieXRlX3N3YXBfd29yZF92YXJpYWJsZSh1X2ludDE2X3QpOwoKc3RhdGljIF9faW5saW5lIHVf aW50MzJfdApfX2J5dGVfc3dhcF9sb25nX3ZhcmlhYmxlKHVfaW50MzJfdCB4KQp7CiAgICAgICAg X19hc20gdm9sYXRpbGUgKCAiYnN3YXAgJTEiIDogIj1yIiAoeCkgOiAiMCIgKHgpKTsKICAgICAg ICByZXR1cm4gKHgpOwp9CgpzdGF0aWMgX19pbmxpbmUgdV9pbnQxNl90Cl9fYnl0ZV9zd2FwX3dv cmRfdmFyaWFibGUodV9pbnQxNl90IHgpCnsKICAgICAgICBfX2FzbSB2b2xhdGlsZSAoInJvcncg JDgsICV3MSIgOiAiPXIiICh4KSA6ICIwIiAoeCkpOwogICAgICAgIHJldHVybiAoeCk7Cn0KIyA4 ICJtYWNoaW5lL2VuZGlhbl9tYWNoZGVwLmgiIDIKIyA1MCAiLi4vLi4vLi4vLi4vc3lzL2VuZGlh bi5oIiAyCiMgODEgIi4uLy4uLy4uLy4uL3N5cy9lbmRpYW4uaCIKIyAxICIuLi8uLi8uLi8uLi9z eXMvdHlwZXMuaCIgMQojIDgyICIuLi8uLi8uLi8uLi9zeXMvZW5kaWFuLmgiIDIKCgp0eXBlZGVm IF9faW5fYWRkcl90IGluX2FkZHJfdDsKCgoKCnR5cGVkZWYgX19pbl9wb3J0X3QgaW5fcG9ydF90 OwoKCgoKX191aW50MzJfdCBodG9ubCAoX191aW50MzJfdCkgX19hdHRyaWJ1dGVfXygoX19jb25z dF9fKSk7Cl9fdWludDE2X3QgaHRvbnMgKF9fdWludDE2X3QpIF9fYXR0cmlidXRlX18oKF9fY29u c3RfXykpOwpfX3VpbnQzMl90IG50b2hsIChfX3VpbnQzMl90KSBfX2F0dHJpYnV0ZV9fKChfX2Nv bnN0X18pKTsKX191aW50MTZfdCBudG9ocyAoX191aW50MTZfdCkgX19hdHRyaWJ1dGVfXygoX19j b25zdF9fKSk7CgojIDEyNiAiLi4vLi4vLi4vLi4vc3lzL2VuZGlhbi5oIgojIDEgIm1hY2hpbmUv YnN3YXAuaCIgMQojIDkgIm1hY2hpbmUvYnN3YXAuaCIKIyAxICIuLi8uLi8uLi8uLi9zeXMvYnN3 YXAuaCIgMQojIDE2ICIuLi8uLi8uLi8uLi9zeXMvYnN3YXAuaCIKCgp1X2ludDE2X3QgYnN3YXAx NiAodV9pbnQxNl90KTsKdV9pbnQzMl90IGJzd2FwMzIgKHVfaW50MzJfdCk7CgoKCgp1X2ludDY0 X3QgYnN3YXA2NCAodV9pbnQ2NF90KTsKCiMgMTAgIm1hY2hpbmUvYnN3YXAuaCIgMgojIDEyNyAi Li4vLi4vLi4vLi4vc3lzL2VuZGlhbi5oIiAyCiMgNCAibWFjaGluZS9lbmRpYW4uaCIgMgojIDEw MSAiLi4vLi4vLi4vLi4vc3lzL3R5cGVzLmgiIDIKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdV9j aGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVfc2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50 IHVfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdV9sb25nOwoKdHlwZWRlZiB1bnNpZ25lZCBj aGFyIHVuY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1c2hvcnQ7CnR5cGVkZWYgdW5zaWdu ZWQgaW50IHVpbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1bG9uZzsKCnR5cGVkZWYgdV9sb25n IGNwdWlkX3Q7CgoKdHlwZWRlZiB1X2ludDY0X3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19pbnQ2NF90 IHF1YWRfdDsKdHlwZWRlZiBxdWFkX3QgKiBxYWRkcl90OwojIDEzMCAiLi4vLi4vLi4vLi4vc3lz L3R5cGVzLmgiCnR5cGVkZWYgcXVhZF90IGxvbmdsb25nX3Q7CnR5cGVkZWYgdV9xdWFkX3QgdV9s b25nbG9uZ190OwoKdHlwZWRlZiBfX2ludDY0X3QgYmxrY250X3Q7CnR5cGVkZWYgdV9pbnQzMl90 IGJsa3NpemVfdDsKCgp0eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBlZGVmIF9faW50 MzJfdCBkYWRkcl90Owp0eXBlZGVmIHVfaW50MzJfdCBkZXZfdDsKdHlwZWRlZiB1X2ludDMyX3Qg Zml4cHRfdDsKCgp0eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CgoKCnR5cGVkZWYgdV9pbnQzMl90IGlk X3Q7CnR5cGVkZWYgdV9pbnQzMl90IGlub190Owp0eXBlZGVmIGxvbmcga2V5X3Q7CgoKdHlwZWRl ZiBfX21vZGVfdCBtb2RlX3Q7CgoKCnR5cGVkZWYgdV9pbnQzMl90IG5saW5rX3Q7CgoKdHlwZWRl ZiBfX29mZl90IG9mZl90OwoKCgoKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgp0eXBlZGVmIHF1 YWRfdCBybGltX3Q7CnR5cGVkZWYgX19pbnQzMl90IHNlZ3N6X3Q7CnR5cGVkZWYgX19pbnQzMl90 IHN3YmxrX3Q7CgoKdHlwZWRlZiBfX3VpZF90IHVpZF90OwoKCgp0eXBlZGVmIF9faW50MzJfdCBk dGltZV90OwoKCgoKCgoKdW5pb24gX19zZW11biB7CiAgICAgICAgaW50IHZhbDsKICAgICAgICBz dHJ1Y3Qgc2VtaWRfZHMgKmJ1ZjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCAqYXJyYXk7Cn07CiMg MjI1ICIuLi8uLi8uLi8uLi9zeXMvdHlwZXMuaCIKdHlwZWRlZiB1bnNpZ25lZCBpbnQgY2xvY2tf dDsKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBzaXplX3Q7CgoKCgoKdHlwZWRlZiBsb25nIHNz aXplX3Q7CgoKCgp0eXBlZGVmIGludCB0aW1lX3Q7CgoKCgp0eXBlZGVmIGludCBjbG9ja2lkX3Q7 CgoKCgp0eXBlZGVmIGludCB0aW1lcl90OwoKCgoKdHlwZWRlZiBpbnQgc3VzZWNvbmRzX3Q7CgoK Cgp0eXBlZGVmIHVuc2lnbmVkIGludCB1c2Vjb25kc190OwojIDI3NCAiLi4vLi4vLi4vLi4vc3lz L3R5cGVzLmgiCnR5cGVkZWYgX19pbnQzMl90IF9fZmRfbWFzazsKIyAyOTMgIi4uLy4uLy4uLy4u L3N5cy90eXBlcy5oIgp0eXBlZGVmIHN0cnVjdCBmZF9zZXQgewogICAgICAgIF9fZmRfbWFzayBm ZHNfYml0c1soKCgyNTYpICsgKCgoc2l6ZW9mKF9fZmRfbWFzaykgKiA4KSkgLSAxKSkgLyAoKHNp emVvZihfX2ZkX21hc2spICogOCkpKV07Cn0gZmRfc2V0OwojIDMyNyAiLi4vLi4vLi4vLi4vc3lz L3R5cGVzLmgiCnN0cnVjdCBwcm9jOwpzdHJ1Y3QgcGdycDsKc3RydWN0IHVjcmVkOwpzdHJ1Y3Qg cnVzYWdlOwpzdHJ1Y3QgZmlsZTsKc3RydWN0IGJ1ZjsKc3RydWN0IHR0eTsKc3RydWN0IHVpbzsK IyA5MSAiLi4vLi4vLi4vLi4vc3lzL3BhcmFtLmgiIDIKIyAxMDAgIi4uLy4uLy4uLy4uL3N5cy9w YXJhbS5oIgojIDEgIi4uLy4uLy4uLy4uL3N5cy9zeXNsaW1pdHMuaCIgMQojIDQxICIuLi8uLi8u Li8uLi9zeXMvc3lzbGltaXRzLmgiCiMgMSAiLi4vLi4vLi4vLi4vc3lzL2ZlYXR1cmV0ZXN0Lmgi IDEKIyA0MiAiLi4vLi4vLi4vLi4vc3lzL3N5c2xpbWl0cy5oIiAyCiMgMTAxICIuLi8uLi8uLi8u Li9zeXMvcGFyYW0uaCIgMgojIDEyMyAiLi4vLi4vLi4vLi4vc3lzL3BhcmFtLmgiCiMgMSAiLi4v Li4vLi4vLi4vc3lzL2Vycm5vLmgiIDEKIyAxMjQgIi4uLy4uLy4uLy4uL3N5cy9wYXJhbS5oIiAy CiMgMSAiLi4vLi4vLi4vLi4vc3lzL3RpbWUuaCIgMQojIDQ3ICIuLi8uLi8uLi8uLi9zeXMvdGlt ZS5oIgpzdHJ1Y3QgdGltZXZhbCB7CiAgICAgICAgbG9uZyB0dl9zZWM7CiAgICAgICAgbG9uZyB0 dl91c2VjOwp9OwoKCgoKc3RydWN0IHRpbWVzcGVjIHsKICAgICAgICB0aW1lX3QgdHZfc2VjOwog ICAgICAgIGxvbmcgdHZfbnNlYzsKfTsKIyA3MyAiLi4vLi4vLi4vLi4vc3lzL3RpbWUuaCIKc3Ry dWN0IHRpbWV6b25lIHsKICAgICAgICBpbnQgdHpfbWludXRlc3dlc3Q7CiAgICAgICAgaW50IHR6 X2RzdHRpbWU7Cn07CiMgMTM4ICIuLi8uLi8uLi8uLi9zeXMvdGltZS5oIgpzdHJ1Y3QgaXRpbWVy dmFsIHsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBpdF9pbnRlcnZhbDsKICAgICAgICBzdHJ1Y3Qg dGltZXZhbCBpdF92YWx1ZTsKfTsKCgoKCnN0cnVjdCBjbG9ja2luZm8gewogICAgICAgIGludCBo ejsKICAgICAgICBpbnQgdGljazsKICAgICAgICBpbnQgdGlja2FkajsKICAgICAgICBpbnQgc3Rh dGh6OwogICAgICAgIGludCBwcm9maHo7Cn07CiMgMTYzICIuLi8uLi8uLi8uLi9zeXMvdGltZS5o IgppbnQgaXRpbWVyZml4IChzdHJ1Y3QgdGltZXZhbCAqdHYpOwppbnQgaXRpbWVyZGVjciAoc3Ry dWN0IGl0aW1lcnZhbCAqaXRwLCBpbnQgdXNlYyk7CnZvaWQgbWljcm90aW1lIChzdHJ1Y3QgdGlt ZXZhbCAqdHYpOwppbnQgc2V0dGltZSAoc3RydWN0IHRpbWV2YWwgKik7CmludCByYXRlY2hlY2sg KHN0cnVjdCB0aW1ldmFsICosIGNvbnN0IHN0cnVjdCB0aW1ldmFsICopOwppbnQgcHBzcmF0ZWNo ZWNrIChzdHJ1Y3QgdGltZXZhbCAqLCBpbnQgKiwgaW50KTsKaW50IHNldHRpbWVvZmRheTEgKGNv bnN0IHN0cnVjdCB0aW1ldmFsICosIGNvbnN0IHN0cnVjdCB0aW1lem9uZSAqLCBzdHJ1Y3QgcHJv YyAqKTsKCmludCBhZGp0aW1lMSAoY29uc3Qgc3RydWN0IHRpbWV2YWwgKiwgc3RydWN0IHRpbWV2 YWwgKiwgc3RydWN0IHByb2MgKik7CmludCBjbG9ja19zZXR0aW1lMSAoY2xvY2tpZF90LCBjb25z dCBzdHJ1Y3QgdGltZXNwZWMgKik7CiMgMTI1ICIuLi8uLi8uLi8uLi9zeXMvcGFyYW0uaCIgMgoj IDEgIi4uLy4uLy4uLy4uL3N5cy9yZXNvdXJjZS5oIiAxCiMgNjAgIi4uLy4uLy4uLy4uL3N5cy9y ZXNvdXJjZS5oIgpzdHJ1Y3QgcnVzYWdlIHsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBydV91dGlt ZTsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBydV9zdGltZTsKICAgICAgICBsb25nIHJ1X21heHJz czsKCiAgICAgICAgbG9uZyBydV9peHJzczsKICAgICAgICBsb25nIHJ1X2lkcnNzOwogICAgICAg IGxvbmcgcnVfaXNyc3M7CiAgICAgICAgbG9uZyBydV9taW5mbHQ7CiAgICAgICAgbG9uZyBydV9t YWpmbHQ7CiAgICAgICAgbG9uZyBydV9uc3dhcDsKICAgICAgICBsb25nIHJ1X2luYmxvY2s7CiAg ICAgICAgbG9uZyBydV9vdWJsb2NrOwogICAgICAgIGxvbmcgcnVfbXNnc25kOwogICAgICAgIGxv bmcgcnVfbXNncmN2OwogICAgICAgIGxvbmcgcnVfbnNpZ25hbHM7CiAgICAgICAgbG9uZyBydV9u dmNzdzsKICAgICAgICBsb25nIHJ1X25pdmNzdzsKCn07CiMgMTAyICIuLi8uLi8uLi8uLi9zeXMv cmVzb3VyY2UuaCIKc3RydWN0IG9ybGltaXQgewogICAgICAgIF9faW50MzJfdCBybGltX2N1cjsK ICAgICAgICBfX2ludDMyX3QgcmxpbV9tYXg7Cn07CgoKc3RydWN0IHJsaW1pdCB7CiAgICAgICAg cmxpbV90IHJsaW1fY3VyOwogICAgICAgIHJsaW1fdCBybGltX21heDsKfTsKCgoKc3RydWN0IGxv YWRhdmcgewogICAgICAgIGZpeHB0X3QgbGRhdmdbM107CiAgICAgICAgbG9uZyBmc2NhbGU7Cn07 CgoKCmV4dGVybiBzdHJ1Y3QgbG9hZGF2ZyBhdmVydW5uYWJsZTsKc3RydWN0IHBjcmVkOwppbnQg ZG9zZXRybGltaXQgKHN0cnVjdCBwcm9jICosIHN0cnVjdCBwY3JlZCAqLCBpbnQsIHN0cnVjdCBy bGltaXQgKik7CmludCBkb25pY2UgKHN0cnVjdCBwcm9jICosIHN0cnVjdCBwcm9jICosIGludCk7 CiMgMTI2ICIuLi8uLi8uLi8uLi9zeXMvcGFyYW0uaCIgMgojIDEgIi4uLy4uLy4uLy4uL3N5cy91 Y3JlZC5oIiAxCiMgNDYgIi4uLy4uLy4uLy4uL3N5cy91Y3JlZC5oIgpzdHJ1Y3QgdXVjcmVkIHsK ICAgICAgICB1X3Nob3J0IGNyX3VudXNlZDsKICAgICAgICBfX3VpZF90IGNyX3VpZDsKICAgICAg ICBfX2dpZF90IGNyX2dpZDsKICAgICAgICBzaG9ydCBjcl9uZ3JvdXBzOwogICAgICAgIF9fZ2lk X3QgY3JfZ3JvdXBzWzE2XTsKfTsKCnN0cnVjdCB1Y3JlZCB7CiAgICAgICAgdV9pbnQzMl90IGNy X3JlZjsKICAgICAgICBfX3VpZF90IGNyX3VpZDsKICAgICAgICBfX2dpZF90IGNyX2dpZDsKICAg ICAgICB1X2ludDMyX3QgY3Jfbmdyb3VwczsKICAgICAgICBfX2dpZF90IGNyX2dyb3Vwc1sxNl07 Cn07CiMgNjkgIi4uLy4uLy4uLy4uL3N5cy91Y3JlZC5oIgpzdHJ1Y3QgdWNyZWQgKmNyY29weSAo c3RydWN0IHVjcmVkICopOwpzdHJ1Y3QgdWNyZWQgKmNyZHVwIChzdHJ1Y3QgdWNyZWQgKik7CnZv aWQgY3JmcmVlIChzdHJ1Y3QgdWNyZWQgKik7CnN0cnVjdCB1Y3JlZCAqY3JnZXQgKHZvaWQpOwpp bnQgc3VzZXIgKHN0cnVjdCB1Y3JlZCAqLCB1X3Nob3J0ICopOwp2b2lkIGNyY3Z0IChzdHJ1Y3Qg dWNyZWQgKiwgY29uc3Qgc3RydWN0IHV1Y3JlZCAqKTsKIyAxMjcgIi4uLy4uLy4uLy4uL3N5cy9w YXJhbS5oIiAyCiMgMSAiLi4vLi4vLi4vLi4vc3lzL3Vpby5oIiAxCiMgNDIgIi4uLy4uLy4uLy4u L3N5cy91aW8uaCIKIyAxICIuLi8uLi8uLi8uLi9zeXMvZmVhdHVyZXRlc3QuaCIgMQojIDQzICIu Li8uLi8uLi8uLi9zeXMvdWlvLmgiIDIKIyA1NCAiLi4vLi4vLi4vLi4vc3lzL3Vpby5oIgpzdHJ1 Y3QgaW92ZWMgewogICAgICAgIHZvaWQgKmlvdl9iYXNlOwogICAgICAgIHNpemVfdCBpb3ZfbGVu Owp9OwojIDY3ICIuLi8uLi8uLi8uLi9zeXMvdWlvLmgiCmVudW0gdWlvX3J3IHsgVUlPX1JFQUQs IFVJT19XUklURSB9OwoKCmVudW0gdWlvX3NlZyB7CiAgICAgICAgVUlPX1VTRVJTUEFDRSwKICAg ICAgICBVSU9fU1lTU1BBQ0UKfTsKCnN0cnVjdCB1aW8gewogICAgICAgIHN0cnVjdCBpb3ZlYyAq dWlvX2lvdjsKICAgICAgICBpbnQgdWlvX2lvdmNudDsKICAgICAgICBfX29mZl90IHVpb19vZmZz ZXQ7CiAgICAgICAgc2l6ZV90IHVpb19yZXNpZDsKICAgICAgICBlbnVtIHVpb19zZWcgdWlvX3Nl Z2ZsZzsKICAgICAgICBlbnVtIHVpb19ydyB1aW9fcnc7CiAgICAgICAgc3RydWN0IHByb2MgKnVp b19wcm9jcDsKfTsKIyAxMDggIi4uLy4uLy4uLy4uL3N5cy91aW8uaCIKaW50IHVyZWFkYyAoaW50 IGMsIHN0cnVjdCB1aW8gKik7CiMgMTI4ICIuLi8uLi8uLi8uLi9zeXMvcGFyYW0uaCIgMgojIDE0 MSAiLi4vLi4vLi4vLi4vc3lzL3BhcmFtLmgiCiMgMSAiLi4vLi4vLi4vLi4vc3lzL3NpZ25hbC5o IiAxCiMgNDYgIi4uLy4uLy4uLy4uL3N5cy9zaWduYWwuaCIKIyAxICIuLi8uLi8uLi8uLi9zeXMv ZmVhdHVyZXRlc3QuaCIgMQojIDQ3ICIuLi8uLi8uLi8uLi9zeXMvc2lnbmFsLmgiIDIKIyAxMjMg Ii4uLy4uLy4uLy4uL3N5cy9zaWduYWwuaCIKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2lnc2V0MTNf dDsKIyAxMzggIi4uLy4uLy4uLy4uL3N5cy9zaWduYWwuaCIKc3RydWN0IHNpZ2FjdGlvbjEzIHsK ICAgICAgICB2b2lkICgqc2FfaGFuZGxlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChp bnQpOwogICAgICAgIHNpZ3NldDEzX3Qgc2FfbWFzazsKICAgICAgICBpbnQgc2FfZmxhZ3M7Cn07 CgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVfaW50MzJfdCBfX2JpdHNbNF07Cn0gc2lnc2V0 X3Q7CiMgMTkyICIuLi8uLi8uLi8uLi9zeXMvc2lnbmFsLmgiCnN0cnVjdCBzaWdhY3Rpb24gewog ICAgICAgIHZvaWQgKCpzYV9oYW5kbGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlu dCk7CiAgICAgICAgc2lnc2V0X3Qgc2FfbWFzazsKICAgICAgICBpbnQgc2FfZmxhZ3M7Cn07CiMg MjI1ICIuLi8uLi8uLi8uLi9zeXMvc2lnbmFsLmgiCnR5cGVkZWYgdm9pZCAoKnNpZ190KSAoaW50 KTsKCgoKCgoKc3RydWN0IHNpZ2FsdHN0YWNrMTMgewogICAgICAgIGNoYXIgKnNzX3NwOwogICAg ICAgIGludCBzc19zaXplOwogICAgICAgIGludCBzc19mbGFnczsKfTsKCgoKCgp0eXBlZGVmIHN0 cnVjdAoKICAgICAgICAgICAgICAgc2lnYWx0c3RhY2sKCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsKICAgICAgICB2b2lkICpzc19zcDsKICAgICAgICBzaXplX3Qgc3Nfc2l6ZTsKICAgICAg ICBpbnQgc3NfZmxhZ3M7Cn0gc3RhY2tfdDsKIyAyNjYgIi4uLy4uLy4uLy4uL3N5cy9zaWduYWwu aCIKc3RydWN0IHNpZ3ZlYyB7CiAgICAgICAgdm9pZCAoKnN2X2hhbmRsZXIpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoaW50KTsKICAgICAgICBpbnQgc3ZfbWFzazsKICAgICAgICBpbnQg c3ZfZmxhZ3M7Cn07CiMgMjg0ICIuLi8uLi8uLi8uLi9zeXMvc2lnbmFsLmgiCnN0cnVjdCBzaWdz dGFjayB7CiAgICAgICAgdm9pZCAqc3Nfc3A7CiAgICAgICAgaW50IHNzX29uc3RhY2s7Cn07CgoK IyAxICJtYWNoaW5lL3NpZ25hbC5oIiAxCiMgNDEgIm1hY2hpbmUvc2lnbmFsLmgiCnR5cGVkZWYg aW50IHNpZ19hdG9taWNfdDsKCgoKCgoKIyAxICJtYWNoaW5lL3RyYXAuaCIgMQoKCgojIDEgIi4u Ly4uLy4uLy4uL2FyY2gvaTM4Ni9pbmNsdWRlL3RyYXAuaCIgMQojIDUgIm1hY2hpbmUvdHJhcC5o IiAyCiMgNDkgIm1hY2hpbmUvc2lnbmFsLmgiIDIKIyAxICJtYWNoaW5lL2ZwdS5oIiAxCiMgMTIg Im1hY2hpbmUvZnB1LmgiCnN0cnVjdCBmeHNhdmU2NCB7CiAgICAgICAgICAgICAgICAgdV9pbnQ2 NF90IGZ4X2ZjdzoxNjsKICAgICAgICAgICAgICAgICB1X2ludDY0X3QgZnhfZnN3OjE2OwogICAg ICAgICAgICAgICAgIHVfaW50NjRfdCBmeF91bnVzZWQxOjg7CiAgICAgICAgICAgICAgICAgdV9p bnQ2NF90IGZ4X2Z0dzo4OwogICAgICAgICAgICAgICAgIHVfaW50NjRfdCBmeF9mb3A6MTY7CiAg ICAgICAgICAgICAgICAgdV9pbnQ2NF90IGZ4X3JpcDsKICAgICAgICAgICAgICAgICB1X2ludDY0 X3QgZnhfZHA7CiAgICAgICAgICAgICAgICAgdV9pbnQ2NF90IGZ4X214Y3NyOjMyOwogICAgICAg ICAgICAgICAgIHVfaW50NjRfdCBmeF91bnVzZWQyOjMyOwogICAgICAgICAgICAgICAgIHVfaW50 NjRfdCBmeF9zdFs4ICogMl07CiAgICAgICAgICAgICAgICAgdV9pbnQ2NF90IGZ4X3htbVsxNiAq IDJdOwogICAgICAgICAgICAgICAgIHVfaW50OF90IGZ4X3VudXNlZDNbOTZdOwp9IF9fYXR0cmli dXRlX18gKChhbGlnbmVkICgxNikpKTsKCgoKCnN0cnVjdCBvbGRmc2F2ZSB7CiAgICAgICAgdV9p bnQxNl90IGZzX2NvbnRyb2w7CiAgICAgICAgdV9pbnQxNl90IGZzX3VudXNlZDA7CiAgICAgICAg dV9pbnQxNl90IGZzX3N0YXR1czsKICAgICAgICB1X2ludDE2X3QgZnNfdW51c2VkMTsKICAgICAg ICB1X2ludDE2X3QgZnNfdGFnOwogICAgICAgIHVfaW50MTZfdCBmc191bnVzZWQyOwogICAgICAg IHVfaW50MzJfdCBmc19pcG9mZjsKICAgICAgICB1X2ludDE2X3QgZnNfaXBzZWw7CiAgICAgICAg dV9pbnQxNl90IGZzX29wOwogICAgICAgIHVfaW50MzJfdCBmc19vcG9mZjsKICAgICAgICB1X2lu dDE2X3QgZnNfb3BzZWw7Cn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwojIDc1ICJtYWNoaW5l L2ZwdS5oIgpzdHJ1Y3QgdHJhcGZyYW1lOwoKZXh0ZXJuIHZvaWQgZnB1aW5pdCh2b2lkKTsKZXh0 ZXJuIHZvaWQgZnB1ZHJvcCh2b2lkKTsKZXh0ZXJuIHZvaWQgZnB1c2F2ZSh2b2lkKTsKZXh0ZXJu IHZvaWQgZnB1dHJhcChzdHJ1Y3QgdHJhcGZyYW1lICopOwoKZXh0ZXJuIHN0cnVjdCBwcm9jICpm cHVwcm9jOwojIDUwICJtYWNoaW5lL3NpZ25hbC5oIiAyCiMgNTggIm1hY2hpbmUvc2lnbmFsLmgi CnN0cnVjdCBzaWdjb250ZXh0IHsKICAgICAgICBpbnQgc2NfZ3M7CiAgICAgICAgaW50IHNjX2Zz OwogICAgICAgIGludCBzY19lczsKICAgICAgICBpbnQgc2NfZHM7CiAgICAgICAgdV9pbnQ2NF90 IHNjX3I4OwogICAgICAgIHVfaW50NjRfdCBzY19yOTsKICAgICAgICB1X2ludDY0X3Qgc2NfcjEw OwogICAgICAgIHVfaW50NjRfdCBzY19yMTE7CiAgICAgICAgdV9pbnQ2NF90IHNjX3IxMjsKICAg ICAgICB1X2ludDY0X3Qgc2NfcjEzOwogICAgICAgIHVfaW50NjRfdCBzY19yMTQ7CiAgICAgICAg dV9pbnQ2NF90IHNjX3IxNTsKICAgICAgICB1X2ludDY0X3Qgc2NfcmRpOwogICAgICAgIHVfaW50 NjRfdCBzY19yc2k7CiAgICAgICAgdV9pbnQ2NF90IHNjX3JicDsKICAgICAgICB1X2ludDY0X3Qg c2NfcmJ4OwogICAgICAgIHVfaW50NjRfdCBzY19yZHg7CiAgICAgICAgdV9pbnQ2NF90IHNjX3Jj eDsKICAgICAgICB1X2ludDY0X3Qgc2NfcmF4OwogICAgICAgIHVfaW50NjRfdCBzY190cmFwbm87 CiAgICAgICAgdV9pbnQ2NF90IHNjX2VycjsKICAgICAgICB1X2ludDY0X3Qgc2NfcmlwOwogICAg ICAgIGludCBzY19jczsKICAgICAgICBpbnQgc2NfcGFkMDsKICAgICAgICB1X2ludDY0X3Qgc2Nf ZWZsYWdzOwogICAgICAgIHVfaW50NjRfdCBzY19yc3Bfb25zaWc7CiAgICAgICAgc3RydWN0IGZ4 c2F2ZTY0ICpzY19mcHN0YXRlOwogICAgICAgIGludCBzY19zczsKICAgICAgICBpbnQgc2NfcGFk MTsKCiAgICAgICAgc2lnc2V0X3Qgc2NfbWFzazsKICAgICAgICB1X2ludDY0X3Qgc2Nfb25zdGFj azsKCiAgICAgICAgdV9pbnQ2NF90IHNjX3JzcDsKfTsKIyAyOTEgIi4uLy4uLy4uLy4uL3N5cy9z aWduYWwuaCIgMgojIDMwOCAiLi4vLi4vLi4vLi4vc3lzL3NpZ25hbC5oIgoKdm9pZCAoKnNpZ25h bCAoaW50LCB2b2lkICgqKSAoaW50KSkpIChpbnQpOwoKIyAxNDIgIi4uLy4uLy4uLy4uL3N5cy9w YXJhbS5oIiAyCgoKIyAxICJtYWNoaW5lL3BhcmFtLmgiIDEKCgoKCgoKIyAxICJtYWNoaW5lL2Nw dS5oIiAxCiMgNTAgIm1hY2hpbmUvY3B1LmgiCiMgMSAib3B0X211bHRpcHJvY2Vzc29yLmgiIDEK IyA1MSAibWFjaGluZS9jcHUuaCIgMgojIDEgIm9wdF9sb2NrZGVidWcuaCIgMQojIDUyICJtYWNo aW5lL2NwdS5oIiAyCgoKCgoKIyAxICJtYWNoaW5lL3BzbC5oIiAxCgoKCiMgMSAiLi4vLi4vLi4v Li4vYXJjaC9pMzg2L2luY2x1ZGUvcHNsLmgiIDEKIyA3MCAiLi4vLi4vLi4vLi4vYXJjaC9pMzg2 L2luY2x1ZGUvcHNsLmgiCiMgMSAib3B0X3ZtODYuaCIgMQojIDcxICIuLi8uLi8uLi8uLi9hcmNo L2kzODYvaW5jbHVkZS9wc2wuaCIgMgojIDc5ICIuLi8uLi8uLi8uLi9hcmNoL2kzODYvaW5jbHVk ZS9wc2wuaCIKIyAxICJtYWNoaW5lL2ludHIuaCIgMQojIDc3ICJtYWNoaW5lL2ludHIuaCIKdm9s YXRpbGUgaW50IGNwbCwgaXBlbmRpbmcsIGFzdHBlbmRpbmc7CmludCBpbWFza1sxMF07CgpleHRl cm4gdm9pZCBYc3BsbG93ZXIgKHZvaWQpOwoKc3RhdGljIF9faW5saW5lIGludCBzcGxyYWlzZSAo aW50KTsKc3RhdGljIF9faW5saW5lIHZvaWQgc3BsbG93ZXIgKGludCk7CnN0YXRpYyBfX2lubGlu ZSB2b2lkIHNvZnRpbnRyIChpbnQpOwoKCgoKc3RhdGljIF9faW5saW5lIGludApzcGxyYWlzZShu Y3BsKQogICAgICAgIHJlZ2lzdGVyIGludCBuY3BsOwp7CiAgICAgICAgcmVnaXN0ZXIgaW50IG9j cGwgPSBjcGw7CgogICAgICAgIGNwbCA9IG9jcGwgfCBuY3BsOwogICAgICAgIHJldHVybiAob2Nw bCk7Cn0KCgoKCgpzdGF0aWMgX19pbmxpbmUgdm9pZApzcGxsb3dlcihuY3BsKQogICAgICAgIHJl Z2lzdGVyIGludCBuY3BsOwp7CgogICAgICAgIGNwbCA9IG5jcGw7CiAgICAgICAgaWYgKGlwZW5k aW5nICYgfm5jcGwpCiAgICAgICAgICAgICAgICBYc3BsbG93ZXIoKTsKfQojIDE1MyAibWFjaGlu ZS9pbnRyLmgiCnN0YXRpYyBfX2lubGluZSB2b2lkCnNvZnRpbnRyKG1hc2spCiAgICAgICAgcmVn aXN0ZXIgaW50IG1hc2s7CnsKICAgICAgICBfX2FzbSB2b2xhdGlsZSgib3JsICUxLCAlMCIgOiAi PW0iKGlwZW5kaW5nKSA6ICJpciIgKDEgPDwgbWFzaykpOwp9CiMgODAgIi4uLy4uLy4uLy4uL2Fy Y2gvaTM4Ni9pbmNsdWRlL3BzbC5oIiAyCiMgNSAibWFjaGluZS9wc2wuaCIgMgojIDU4ICJtYWNo aW5lL2NwdS5oIiAyCiMgMSAibWFjaGluZS9mcmFtZS5oIiAxCiMgOTQgIm1hY2hpbmUvZnJhbWUu aCIKc3RydWN0IHRyYXBmcmFtZSB7CiAgICAgICAgX19pbnQ2NF90IHRmX3IxNTsKICAgICAgICBf X2ludDY0X3QgdGZfcjE0OwogICAgICAgIF9faW50NjRfdCB0Zl9yMTM7CiAgICAgICAgX19pbnQ2 NF90IHRmX3IxMjsKICAgICAgICBfX2ludDY0X3QgdGZfcjExOwogICAgICAgIF9faW50NjRfdCB0 Zl9yMTA7CiAgICAgICAgX19pbnQ2NF90IHRmX3I5OwogICAgICAgIF9faW50NjRfdCB0Zl9yODsK ICAgICAgICBfX2ludDY0X3QgdGZfcmRpOwogICAgICAgIF9faW50NjRfdCB0Zl9yc2k7CiAgICAg ICAgX19pbnQ2NF90IHRmX3JicDsKICAgICAgICBfX2ludDY0X3QgdGZfcmJ4OwogICAgICAgIF9f aW50NjRfdCB0Zl9yZHg7CiAgICAgICAgX19pbnQ2NF90IHRmX3JjeDsKICAgICAgICBfX2ludDY0 X3QgdGZfcmF4OwogICAgICAgIF9faW50NjRfdCB0Zl90cmFwbm87CgogICAgICAgIF9faW50NjRf dCB0Zl9lcnI7CiAgICAgICAgX19pbnQ2NF90IHRmX3JpcDsKICAgICAgICBfX2ludDY0X3QgdGZf Y3M7CiAgICAgICAgX19pbnQ2NF90IHRmX2VmbGFnczsKCiAgICAgICAgX19pbnQ2NF90IHRmX3Jz cDsKICAgICAgICBfX2ludDY0X3QgdGZfc3M7Cn07CgoKCgpzdHJ1Y3QgaW50cmZyYW1lIHsKICAg ICAgICBfX2ludDY0X3QgaWZfcHBsOwogICAgICAgIF9faW50NjRfdCBpZl9yMTU7CiAgICAgICAg X19pbnQ2NF90IGlmX3IxNDsKICAgICAgICBfX2ludDY0X3QgaWZfcjEzOwogICAgICAgIF9faW50 NjRfdCBpZl9yMTI7CiAgICAgICAgX19pbnQ2NF90IGlmX3IxMTsKICAgICAgICBfX2ludDY0X3Qg aWZfcjEwOwogICAgICAgIF9faW50NjRfdCBpZl9yOTsKICAgICAgICBfX2ludDY0X3QgaWZfcjg7 CiAgICAgICAgX19pbnQ2NF90IGlmX3JkaTsKICAgICAgICBfX2ludDY0X3QgaWZfcnNpOwogICAg ICAgIF9faW50NjRfdCBpZl9yYnA7CiAgICAgICAgX19pbnQ2NF90IGlmX3JieDsKICAgICAgICBf X2ludDY0X3QgaWZfcmR4OwogICAgICAgIF9faW50NjRfdCBpZl9yY3g7CiAgICAgICAgX19pbnQ2 NF90IGlmX3JheDsKICAgICAgICB1X2ludDY0X3QgX19pZl90cmFwbm87CiAgICAgICAgdV9pbnQ2 NF90IF9faWZfZXJyOwoKICAgICAgICBfX2ludDY0X3QgaWZfcmlwOwogICAgICAgIF9faW50NjRf dCBpZl9jczsKICAgICAgICBfX2ludDY0X3QgaWZfZWZsYWdzOwoKICAgICAgICBfX2ludDY0X3Qg aWZfcnNwOwogICAgICAgIF9faW50NjRfdCBpZl9zczsKfTsKCgoKCnN0cnVjdCBzd2l0Y2hmcmFt ZSB7CiAgICAgICAgX19pbnQ2NF90IHNmX3BwbDsKICAgICAgICBfX2ludDY0X3Qgc2ZfcjE1Owog ICAgICAgIF9faW50NjRfdCBzZl9yMTQ7CiAgICAgICAgX19pbnQ2NF90IHNmX3IxMzsKICAgICAg ICBfX2ludDY0X3Qgc2ZfcjEyOwogICAgICAgIF9faW50NjRfdCBzZl9yYnA7CiAgICAgICAgX19p bnQ2NF90IHNmX3JieDsKICAgICAgICBfX2ludDY0X3Qgc2ZfcmlwOwp9OwoKCgoKc3RydWN0IHNp Z2ZyYW1lIHsKICAgICAgICBfX2ludDY0X3Qgc2Zfc2lnbnVtOwogICAgICAgIF9faW50NjRfdCBz Zl9jb2RlOwogICAgICAgIHN0cnVjdCBzaWdjb250ZXh0ICpzZl9zY3A7CiAgICAgICAgc2lnX3Qg c2ZfaGFuZGxlcjsKICAgICAgICBzdHJ1Y3Qgc2lnY29udGV4dCBzZl9zYzsKICAgICAgICBzdHJ1 Y3QgZnhzYXZlNjQgKnNmX2ZwcDsKICAgICAgICBzdHJ1Y3QgZnhzYXZlNjQgc2ZfZnA7Cn07CiMg NTkgIm1hY2hpbmUvY3B1LmgiIDIKIyAxICJtYWNoaW5lL3NlZ21lbnRzLmgiIDEKIyAxMDEgIm1h Y2hpbmUvc2VnbWVudHMuaCIKc3RydWN0IHN5c19zZWdtZW50X2Rlc2NyaXB0b3IgewogICAgICAg ICAgICAgICAgIHVfaW50NjRfdCBzZF9sb2xpbWl0OjE2OwogICAgICAgICAgICAgICAgIHVfaW50 NjRfdCBzZF9sb2Jhc2U6MjQ7CiAgICAgICAgICAgICAgICAgdV9pbnQ2NF90IHNkX3R5cGU6NTsK ICAgICAgICAgICAgICAgICB1X2ludDY0X3Qgc2RfZHBsOjI7CiAgICAgICAgICAgICAgICAgdV9p bnQ2NF90IHNkX3A6MTsKICAgICAgICAgICAgICAgICB1X2ludDY0X3Qgc2RfaGlsaW1pdDo0Owog ICAgICAgICAgICAgICAgIHVfaW50NjRfdCBzZF94eDE6MzsKICAgICAgICAgICAgICAgICB1X2lu dDY0X3Qgc2RfZ3JhbjoxOwogICAgICAgICAgICAgICAgIHVfaW50NjRfdCBzZF9oaWJhc2U6NDA7 CiAgICAgICAgICAgICAgICAgdV9pbnQ2NF90IHNkX3h4Mjo4OwogICAgICAgICAgICAgICAgIHVf aW50NjRfdCBzZF96ZXJvOjU7CiAgICAgICAgICAgICAgICAgdV9pbnQ2NF90IHNkX3h4MzoxOTsK fSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCgoKCnN0cnVjdCBtZW1fc2VnbWVudF9kZXNjcmlw dG9yIHsKICAgICAgICB1bnNpZ25lZCBzZF9sb2xpbWl0OjE2OwogICAgICAgIHVuc2lnbmVkIHNk X2xvYmFzZToyNDsKICAgICAgICB1bnNpZ25lZCBzZF90eXBlOjU7CiAgICAgICAgdW5zaWduZWQg c2RfZHBsOjI7CiAgICAgICAgdW5zaWduZWQgc2RfcDoxOwogICAgICAgIHVuc2lnbmVkIHNkX2hp bGltaXQ6NDsKICAgICAgICB1bnNpZ25lZCBzZF9hdmw6MTsKICAgICAgICB1bnNpZ25lZCBzZF9s b25nOjE7CiAgICAgICAgdW5zaWduZWQgc2RfZGVmMzI6MTsKICAgICAgICB1bnNpZ25lZCBzZF9n cmFuOjE7CiAgICAgICAgdW5zaWduZWQgc2RfaGliYXNlOjg7Cn0gX19hdHRyaWJ1dGVfXygocGFj a2VkKSk7CgoKCgpzdHJ1Y3QgZ2F0ZV9kZXNjcmlwdG9yIHsKICAgICAgICAgICAgICAgICB1X2lu dDY0X3QgZ2RfbG9vZmZzZXQ6MTY7CiAgICAgICAgICAgICAgICAgdV9pbnQ2NF90IGdkX3NlbGVj dG9yOjE2OwogICAgICAgICAgICAgICAgIHVfaW50NjRfdCBnZF9pc3Q6MzsKICAgICAgICAgICAg ICAgICB1X2ludDY0X3QgZ2RfeHgxOjU7CiAgICAgICAgICAgICAgICAgdV9pbnQ2NF90IGdkX3R5 cGU6NTsKICAgICAgICAgICAgICAgICB1X2ludDY0X3QgZ2RfZHBsOjI7CiAgICAgICAgICAgICAg ICAgdV9pbnQ2NF90IGdkX3A6MTsKICAgICAgICAgICAgICAgICB1X2ludDY0X3QgZ2RfaGlvZmZz ZXQ6NDg7CiAgICAgICAgICAgICAgICAgdV9pbnQ2NF90IGdkX3h4Mjo4OwogICAgICAgICAgICAg ICAgIHVfaW50NjRfdCBnZF96ZXJvOjU7CiAgICAgICAgICAgICAgICAgdV9pbnQ2NF90IGdkX3h4 MzoxOTsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCgoKCnN0cnVjdCByZWdpb25fZGVzY3Jp cHRvciB7CiAgICAgICAgdV9pbnQxNl90IHJkX2xpbWl0OwogICAgICAgIHVfaW50NjRfdCByZF9i YXNlOwp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKCmV4dGVybiBzdHJ1Y3Qgc3lzX3NlZ21l bnRfZGVzY3JpcHRvciAqbGR0OwpleHRlcm4gc3RydWN0IGdhdGVfZGVzY3JpcHRvciAqaWR0Owpl eHRlcm4gY2hhciAqZ2R0c3RvcmU7Cgp2b2lkIHNldGdhdGUgKHN0cnVjdCBnYXRlX2Rlc2NyaXB0 b3IgKiwgdm9pZCAqLCBpbnQsIGludCwgaW50KTsKdm9pZCBzZXRyZWdpb24gKHN0cnVjdCByZWdp b25fZGVzY3JpcHRvciAqLCB2b2lkICosIHVfaW50MTZfdCk7CnZvaWQgc2V0X3N5c19zZWdtZW50 IChzdHJ1Y3Qgc3lzX3NlZ21lbnRfZGVzY3JpcHRvciAqLCB2b2lkICosIHNpemVfdCwgaW50LCBp bnQsIGludCk7Cgp2b2lkIHNldF9tZW1fc2VnbWVudCAoc3RydWN0IG1lbV9zZWdtZW50X2Rlc2Ny aXB0b3IgKiwgdm9pZCAqLCBzaXplX3QsIGludCwgaW50LCBpbnQsIGludCwgaW50KTsKIyA2MCAi bWFjaGluZS9jcHUuaCIgMgoKIyAxICIuLi8uLi8uLi8uLi9zeXMvc2NoZWQuaCIgMQojIDgzICIu Li8uLi8uLi8uLi9zeXMvc2NoZWQuaCIKIyAxICJvcHRfbXVsdGlwcm9jZXNzb3IuaCIgMQojIDg0 ICIuLi8uLi8uLi8uLi9zeXMvc2NoZWQuaCIgMgojIDEgIm9wdF9sb2NrZGVidWcuaCIgMQojIDg1 ICIuLi8uLi8uLi8uLi9zeXMvc2NoZWQuaCIgMgojIDEwNSAiLi4vLi4vLi4vLi4vc3lzL3NjaGVk LmgiCnN0cnVjdCBzbHBxdWUgewogICAgICAgIHN0cnVjdCBwcm9jICpzcV9oZWFkOwogICAgICAg IHN0cnVjdCBwcm9jICoqc3FfdGFpbHA7Cn07CiMgMTIwICIuLi8uLi8uLi8uLi9zeXMvc2NoZWQu aCIKc3RydWN0IHByb2NoZCB7CiAgICAgICAgc3RydWN0IHByb2MgKnBoX2xpbms7CiAgICAgICAg c3RydWN0IHByb2MgKnBoX3JsaW5rOwp9OwojIDE0MCAiLi4vLi4vLi4vLi4vc3lzL3NjaGVkLmgi CnN0cnVjdCBzY2hlZHN0YXRlX3BlcmNwdSB7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgc3BjX3J1 bnRpbWU7CiAgICAgICAgdm9sYXRpbGUgaW50IHNwY19mbGFnczsKICAgICAgICB1X2ludCBzcGNf c2NoZWR0aWNrczsKICAgICAgICB1X2ludDY0X3Qgc3BjX2NwX3RpbWVbNV07CiAgICAgICAgdV9j aGFyIHNwY19jdXJwcmlvcml0eTsKICAgICAgICBpbnQgc3BjX3JydGlja3M7CiAgICAgICAgaW50 IHNwY19wc2NudDsKICAgICAgICBpbnQgc3BjX3BzZGl2Owp9OwojIDE3OSAiLi4vLi4vLi4vLi4v c3lzL3NjaGVkLmgiCmV4dGVybiBpbnQgc2NoZWRoejsKZXh0ZXJuIGludCBycnRpY2tzOwojIDE5 MCAiLi4vLi4vLi4vLi4vc3lzL3NjaGVkLmgiCmV4dGVybiBzdHJ1Y3QgcHJvY2hkIHNjaGVkX3Fz W107CmV4dGVybiBzdHJ1Y3Qgc2xwcXVlIHNjaGVkX3NscHF1ZVtdOwpleHRlcm4gdm9sYXRpbGUg dV9pbnQzMl90IHNjaGVkX3doaWNocXM7CgoKCnN0cnVjdCBwcm9jOwpzdHJ1Y3QgY3B1X2luZm87 Cgp2b2lkIHNjaGVkY2xvY2soc3RydWN0IHByb2MgKnApOwp2b2lkIHNjaGVkX3dha2V1cCh2b2lk ICopOwp2b2lkIHJvdW5kcm9iaW4oc3RydWN0IGNwdV9pbmZvICopOwojIDYyICJtYWNoaW5lL2Nw dS5oIiAyCnN0cnVjdCBjcHVfaW5mbyB7CiAgICAgICAgc3RydWN0IHNjaGVkc3RhdGVfcGVyY3B1 IGNpX3NjaGVkc3RhdGU7CgoKCgp9OwoKCmV4dGVybiBzdHJ1Y3QgY3B1X2luZm8gY3B1X2luZm9f c3RvcmU7CiMgMTA3ICJtYWNoaW5lL2NwdS5oIgppbnQgd2FudF9yZXNjaGVkOwojIDEzMyAibWFj aGluZS9jcHUuaCIKZXh0ZXJuIGludCBiaW9zYmFzZW1lbTsKZXh0ZXJuIGludCBiaW9zZXh0bWVt OwpleHRlcm4gaW50IGNwdTsKZXh0ZXJuIGludCBjcHVfZmVhdHVyZTsKZXh0ZXJuIGludCBjcHVf aWQ7CmV4dGVybiBjaGFyIGNwdV92ZW5kb3JbXTsKZXh0ZXJuIGludCBjcHVpZF9sZXZlbDsKCgp2 b2lkIGRlbGF5IChpbnQpOwp2b2lkIGR1bXBjb25mICh2b2lkKTsKdm9pZCBjcHVfcmVzZXQgKHZv aWQpOwp2b2lkIHg4Nl82NF9wcm9jMF90c3NfbGR0X2luaXQgKHZvaWQpOwp2b2lkIHg4Nl82NF9i dWZpbml0ICh2b2lkKTsKCgpzdHJ1Y3QgcmVnaW9uX2Rlc2NyaXB0b3I7CnZvaWQgbGdkdCAoc3Ry dWN0IHJlZ2lvbl9kZXNjcmlwdG9yICopOwp2b2lkIGZpbGx3IChzaG9ydCwgdm9pZCAqLCBzaXpl X3QpOwoKc3RydWN0IHBjYjsKdm9pZCBzYXZlY3R4IChzdHJ1Y3QgcGNiICopOwp2b2lkIHN3aXRj aF9leGl0IChzdHJ1Y3QgcHJvYyAqKTsKdm9pZCBwcm9jX3RyYW1wb2xpbmUgKHZvaWQpOwoKCnZv aWQgaW5pdHJ0Y2xvY2sgKHZvaWQpOwp2b2lkIHN0YXJ0cnRjbG9jayAodm9pZCk7CgoKaW50IGt2 dG9wIChfX2NhZGRyX3QpOwojIDE3MiAibWFjaGluZS9jcHUuaCIKdm9pZCBpc2FfZGVmYXVsdGly cSAodm9pZCk7CmludCBpc2Ffbm1pICh2b2lkKTsKCgp2b2lkIGNoaWxkX3JldHVybiAodm9pZCAq KTsKCgp2b2lkIGtnZGJfcG9ydF9pbml0ICh2b2lkKTsKCgp2b2lkIHg4Nl82NF9idXNfc3BhY2Vf aW5pdCAodm9pZCk7CnZvaWQgeDg2XzY0X2J1c19zcGFjZV9tYWxsb2NvayAodm9pZCk7CiMgMjE3 ICJtYWNoaW5lL2NwdS5oIgpzdHJ1Y3QgZGlza2xpc3QgewogICAgICAgIGludCBkbF9uYmlvc2Rp c2tzOwogICAgICAgIHN0cnVjdCBiaW9zZGlza19pbmZvIHsKICAgICAgICAgICAgICAgIGludCBi aV9kZXY7CiAgICAgICAgICAgICAgICBpbnQgYmlfY3lsOwogICAgICAgICAgICAgICAgaW50IGJp X2hlYWQ7CiAgICAgICAgICAgICAgICBpbnQgYmlfc2VjOwogICAgICAgICAgICAgICAgdV9pbnQ2 NF90IGJpX2xiYXNlY3M7CgoKICAgICAgICAgICAgICAgIGludCBiaV9mbGFnczsKICAgICAgICB9 IGRsX2Jpb3NkaXNrc1sxNl07CgogICAgICAgIGludCBkbF9ubmF0aXZlZGlza3M7CiAgICAgICAg c3RydWN0IG5hdGl2ZWRpc2tfaW5mbyB7CiAgICAgICAgICAgICAgICBjaGFyIG5pX2Rldm5hbWVb MTZdOwogICAgICAgICAgICAgICAgaW50IG5pX25tYXRjaGVzOwogICAgICAgICAgICAgICAgaW50 IG5pX2Jpb3NtYXRjaGVzWzE2XTsKICAgICAgICB9IGRsX25hdGl2ZWRpc2tzWzFdOwp9OwojIDgg Im1hY2hpbmUvcGFyYW0uaCIgMgojIDg4ICJtYWNoaW5lL3BhcmFtLmgiCiMgMSAib3B0X2dhdGV3 YXkuaCIgMQojIDg5ICJtYWNoaW5lL3BhcmFtLmgiIDIKIyAxNDUgIi4uLy4uLy4uLy4uL3N5cy9w YXJhbS5oIiAyCiMgMSAibWFjaGluZS9saW1pdHMuaCIgMQojIDE0NiAiLi4vLi4vLi4vLi4vc3lz L3BhcmFtLmgiIDIKIyA4NSAiYW03OTkwLmMiIDIKIyAxICIuLi8uLi8uLi8uLi9zeXMvc3lzdG0u aCIgMQojIDc1ICIuLi8uLi8uLi8uLi9zeXMvc3lzdG0uaCIKIyAxICJvcHRfZGRiLmgiIDEKIyA3 NiAiLi4vLi4vLi4vLi4vc3lzL3N5c3RtLmgiIDIKIyAxICJvcHRfbXVsdGlwcm9jZXNzb3IuaCIg MQojIDc3ICIuLi8uLi8uLi8uLi9zeXMvc3lzdG0uaCIgMgoKCiMgMSAibWFjaGluZS9lbmRpYW4u aCIgMQojIDgwICIuLi8uLi8uLi8uLi9zeXMvc3lzdG0uaCIgMgoKc3RydWN0IGludHJmcmFtZTsK c3RydWN0IGRldmljZTsKc3RydWN0IHByb2M7CnN0cnVjdCB0aW1ldmFsOwpzdHJ1Y3QgdHR5Owpz dHJ1Y3QgdWlvOwpzdHJ1Y3Qgdm5vZGU7CgpleHRlcm4gaW50IHNlY3VyZWxldmVsOwpleHRlcm4g Y29uc3QgY2hhciAqcGFuaWNzdHI7CmV4dGVybiBpbnQgZG9pbmdfc2h1dGRvd247CgpleHRlcm4g Y29uc3QgY2hhciBjb3B5cmlnaHRbXTsKZXh0ZXJuIGNoYXIgY3B1X21vZGVsW107CmV4dGVybiBj aGFyIG1hY2hpbmVbXTsKZXh0ZXJuIGNoYXIgbWFjaGluZV9hcmNoW107CmV4dGVybiBjb25zdCBj aGFyIG9zcmVsZWFzZVtdOwpleHRlcm4gY29uc3QgY2hhciBvc3R5cGVbXTsKZXh0ZXJuIGNvbnN0 IGNoYXIgdmVyc2lvbltdOwoKZXh0ZXJuIGludCBhdXRvbmljZXRpbWU7CmV4dGVybiBpbnQgYXV0 b25pY2V2YWw7CgpleHRlcm4gaW50IG5ibGtkZXY7CmV4dGVybiBpbnQgbmNocmRldjsKCmV4dGVy biBpbnQgc2Vsd2FpdDsKCmV4dGVybiBpbnQgbWF4bWVtOwpleHRlcm4gaW50IHBoeXNtZW07Cgpl eHRlcm4gZGV2X3QgZHVtcGRldjsKZXh0ZXJuIGxvbmcgZHVtcGxvOwpleHRlcm4gaW50IGR1bXBz aXplOwpleHRlcm4gY29uc3QgY2hhciAqZHVtcHNwZWM7CgpleHRlcm4gZGV2X3Qgcm9vdGRldjsK ZXh0ZXJuIHN0cnVjdCB2bm9kZSAqcm9vdHZwOwpleHRlcm4gc3RydWN0IGRldmljZSAqcm9vdF9k ZXZpY2U7CmV4dGVybiBjb25zdCBjaGFyICpyb290c3BlYzsKCgoKCgoKZXh0ZXJuIGRldl90IHN3 YXBkZXY7CmV4dGVybiBzdHJ1Y3Qgdm5vZGUgKnN3YXBkZXZfdnA7Cgp0eXBlZGVmIGludCBzeV9j YWxsX3Qoc3RydWN0IHByb2MgKiwgdm9pZCAqLCByZWdpc3Rlcl90ICopOwoKZXh0ZXJuIHN0cnVj dCBzeXNlbnQgewogICAgICAgIHNob3J0IHN5X25hcmc7CiAgICAgICAgc2hvcnQgc3lfYXJnc2l6 ZTsKICAgICAgICBpbnQgc3lfZmxhZ3M7CiAgICAgICAgc3lfY2FsbF90ICpzeV9jYWxsOwp9IHN5 c2VudFtdOwpleHRlcm4gaW50IG5zeXNlbnQ7CiMgMTQ5ICIuLi8uLi8uLi8uLi9zeXMvc3lzdG0u aCIKZXh0ZXJuIGludCBib290aG93dG87CgoKCmV4dGVybiB2b2lkICgqdl9wdXRjKSAoaW50KTsK CmV4dGVybiB2b2lkIF9pbnNxdWUgKHZvaWQgKiwgdm9pZCAqKTsKZXh0ZXJuIHZvaWQgX3JlbXF1 ZSAodm9pZCAqKTsKIyAxNjUgIi4uLy4uLy4uLy4uL3N5cy9zeXN0bS5oIgppbnQgbnVsbG9wICh2 b2lkICopOwppbnQgZW5vZGV2ICh2b2lkKTsKaW50IGVub3N5cyAodm9pZCk7CmludCBlbm9pb2N0 bCAodm9pZCk7CmludCBlbnhpbyAodm9pZCk7CmludCBlb3Bub3RzdXBwICh2b2lkKTsKCgoKCgpl bnVtIGhhc2h0eXBlIHsKICAgICAgICBIQVNIX0xJU1QsCiAgICAgICAgSEFTSF9UQUlMUQp9OwoK dm9pZCAqaGFzaGluaXQgKGludCwgZW51bSBoYXNodHlwZSwgaW50LCBpbnQsIHVfbG9uZyAqKTsK dm9pZCBoYXNoZG9uZSAodm9pZCAqLCBpbnQpOwppbnQgc2VsdHJ1ZSAoZGV2X3QsIGludCwgc3Ry dWN0IHByb2MgKik7CmludCBzeXNfbm9zeXMgKHN0cnVjdCBwcm9jICosIHZvaWQgKiwgcmVnaXN0 ZXJfdCAqKTsKCgoKdm9pZCBwcmludGYgKGNvbnN0IGNoYXIgKiwgLi4uKQogICAgX19hdHRyaWJ1 dGVfXygoX19mb3JtYXRfXyhfX3ByaW50Zl9fLDEsMikpKTsKaW50IHNwcmludGYgKGNoYXIgKiwg Y29uc3QgY2hhciAqLCAuLi4pCiAgICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fcHJpbnRm X18sMiwzKSkpOwppbnQgc25wcmludGYgKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIC4u LikKICAgIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18oX19wcmludGZfXywzLDQpKSk7CnZvaWQg dnByaW50ZiAoY29uc3QgY2hhciAqLCBfX2J1aWx0aW5fdmFfbGlzdCk7CmludCB2c3ByaW50ZiAo Y2hhciAqLCBjb25zdCBjaGFyICosIF9fYnVpbHRpbl92YV9saXN0KTsKaW50IHZzbnByaW50ZiAo Y2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgX19idWlsdGluX3ZhX2xpc3QpOwoKCnZvaWQg cGFuaWMgKGNvbnN0IGNoYXIgKiwgLi4uKQogICAgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9f LF9fZm9ybWF0X18oX19wcmludGZfXywxLDIpKSk7CnZvaWQgdXByaW50ZiAoY29uc3QgY2hhciAq LCAuLi4pCiAgICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fcHJpbnRmX18sMSwyKSkpOwp2 b2lkIHR0eXByaW50ZiAoc3RydWN0IHR0eSAqLCBjb25zdCBjaGFyICosIC4uLikKICAgIF9fYXR0 cmlidXRlX18oKF9fZm9ybWF0X18oX19wcmludGZfXywyLDMpKSk7CgpjaGFyICpiaXRtYXNrX3Nu cHJpbnRmICh1X3F1YWRfdCwgY29uc3QgY2hhciAqLCBjaGFyICosIHNpemVfdCk7CgppbnQgaHVt YW5pemVfbnVtYmVyIChjaGFyICosIHNpemVfdCwgdV9pbnQ2NF90LCBjb25zdCBjaGFyICosIGlu dCk7CmludCBmb3JtYXRfYnl0ZXMgKGNoYXIgKiwgc2l6ZV90LCB1X2ludDY0X3QpOwoKdm9pZCB0 YWJsZWZ1bGwgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKCmludCBrY29weSAoY29uc3Qg dm9pZCAqLCB2b2lkICosIHNpemVfdCk7CgoKCgoKCgppbnQgY29weXN0ciAoY29uc3Qgdm9pZCAq LCB2b2lkICosIHNpemVfdCwgc2l6ZV90ICopOwppbnQgY29weWluc3RyIChjb25zdCB2b2lkICos IHZvaWQgKiwgc2l6ZV90LCBzaXplX3QgKik7CmludCBjb3B5b3V0c3RyIChjb25zdCB2b2lkICos IHZvaWQgKiwgc2l6ZV90LCBzaXplX3QgKik7CmludCBjb3B5aW4gKGNvbnN0IHZvaWQgKiwgdm9p ZCAqLCBzaXplX3QpOwppbnQgY29weW91dCAoY29uc3Qgdm9pZCAqLCB2b2lkICosIHNpemVfdCk7 CgppbnQgc3VieXRlICh2b2lkICosIGludCk7CmludCBzdWlieXRlICh2b2lkICosIGludCk7Cmlu dCBzdXN3b3JkICh2b2lkICosIHNob3J0KTsKaW50IHN1aXN3b3JkICh2b2lkICosIHNob3J0KTsK aW50IHN1c3dpbnRyICh2b2lkICosIHNob3J0KTsKaW50IHN1d29yZCAodm9pZCAqLCBsb25nKTsK aW50IHN1aXdvcmQgKHZvaWQgKiwgbG9uZyk7CgppbnQgZnVieXRlIChjb25zdCB2b2lkICopOwpp bnQgZnVpYnl0ZSAoY29uc3Qgdm9pZCAqKTsKaW50IGZ1c3dvcmQgKGNvbnN0IHZvaWQgKik7Cmlu dCBmdWlzd29yZCAoY29uc3Qgdm9pZCAqKTsKaW50IGZ1c3dpbnRyIChjb25zdCB2b2lkICopOwps b25nIGZ1d29yZCAoY29uc3Qgdm9pZCAqKTsKbG9uZyBmdWl3b3JkIChjb25zdCB2b2lkICopOwoK aW50IGh6dG8gKHN0cnVjdCB0aW1ldmFsICopOwp2b2lkIHJlYWxpdGV4cGlyZSAodm9pZCAqKTsK CnZvaWQgaGFyZGNsb2NrIChzdHJ1Y3QgaW50cmZyYW1lICopOwoKdm9pZCBzb2Z0Y2xvY2sgKHZv aWQgKik7Cgp2b2lkIHN0YXRjbG9jayAoc3RydWN0IGludHJmcmFtZSAqKTsKCgoKCgoKCnZvaWQg aW5pdGNsb2NrcyAodm9pZCk7CnZvaWQgaW5pdHRvZHIgKHRpbWVfdCk7CnZvaWQgcmVzZXR0b2Ry ICh2b2lkKTsKdm9pZCBjcHVfaW5pdGNsb2NrcyAodm9pZCk7Cgp2b2lkIHN0YXJ0cHJvZmNsb2Nr IChzdHJ1Y3QgcHJvYyAqKTsKdm9pZCBzdG9wcHJvZmNsb2NrIChzdHJ1Y3QgcHJvYyAqKTsKdm9p ZCBzZXRzdGF0Y2xvY2tyYXRlIChpbnQpOwoKCgoKCnZvaWQgKnNodXRkb3duaG9va19lc3RhYmxp c2ggKHZvaWQgKCopKHZvaWQgKiksIHZvaWQgKik7CnZvaWQgc2h1dGRvd25ob29rX2Rpc2VzdGFi bGlzaCAodm9pZCAqKTsKdm9pZCBkb3NodXRkb3duaG9va3MgKHZvaWQpOwoKCgoKdm9pZCAqcG93 ZXJob29rX2VzdGFibGlzaCAodm9pZCAoKikoaW50LCB2b2lkICopLCB2b2lkICopOwp2b2lkIHBv d2VyaG9va19kaXNlc3RhYmxpc2ggKHZvaWQgKik7CnZvaWQgZG9wb3dlcmhvb2tzIChpbnQpOwoj IDI5MyAiLi4vLi4vLi4vLi4vc3lzL3N5c3RtLmgiCmV4dGVybiBpbnQgKCptb3VudHJvb3QpKHZv aWQpOwp2b2lkICptb3VudHJvb3Rob29rX2VzdGFibGlzaCAodm9pZCAoKikoc3RydWN0IGRldmlj ZSAqKSwgc3RydWN0IGRldmljZSAqKTsKCnZvaWQgbW91bnRyb290aG9va19kaXNlc3RhYmxpc2gg KHZvaWQgKik7CnZvaWQgbW91bnRyb290aG9va19kZXN0cm95ICh2b2lkKTsKdm9pZCBkb21vdW50 cm9vdGhvb2sgKHZvaWQpOwoKCgoKCnZvaWQgKmV4ZWNob29rX2VzdGFibGlzaCAodm9pZCAoKiko c3RydWN0IHByb2MgKiwgdm9pZCAqKSwgdm9pZCAqKTsKdm9pZCBleGVjaG9va19kaXNlc3RhYmxp c2ggKHZvaWQgKik7CnZvaWQgZG9leGVjaG9va3MgKHN0cnVjdCBwcm9jICopOwoKCgoKdm9pZCAq ZXhpdGhvb2tfZXN0YWJsaXNoICh2b2lkICgqKShzdHJ1Y3QgcHJvYyAqLCB2b2lkICopLCB2b2lk ICopOwp2b2lkIGV4aXRob29rX2Rpc2VzdGFibGlzaCAodm9pZCAqKTsKdm9pZCBkb2V4aXRob29r cyAoc3RydWN0IHByb2MgKik7CgppbnQgdWlvbW92ZSAodm9pZCAqLCBpbnQsIHN0cnVjdCB1aW8g Kik7CgoKX19jYWRkcl90IGFsbG9jc3lzIChfX2NhZGRyX3QsIF9fY2FkZHJfdCAoKikoX19jYWRk cl90KSk7CgoKCmludCBzZXRqbXAgKGxhYmVsX3QgKik7CnZvaWQgbG9uZ2ptcCAobGFiZWxfdCAq KTsKCgp2b2lkIGNvbnNpbml0ICh2b2lkKTsKCnZvaWQgY3B1X3N0YXJ0dXAgKHZvaWQpOwp2b2lk IGNwdV9jb25maWd1cmUgKHZvaWQpOwp2b2lkIGNwdV9yb290Y29uZiAodm9pZCk7CnZvaWQgY3B1 X2R1bXBjb25mICh2b2lkKTsKCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9saWIvbGlia2Vybi9saWJr ZXJuLmgiIDEKIyA0OCAiLi4vLi4vLi4vLi4vbGliL2xpYmtlcm4vbGlia2Vybi5oIgpzdGF0aWMg X19pbmxpbmUgaW50IGltYXggKGludCwgaW50KSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7CnN0 YXRpYyBfX2lubGluZSBpbnQgaW1pbiAoaW50LCBpbnQpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQp KTsKc3RhdGljIF9faW5saW5lIHVfaW50IG1heCAodV9pbnQsIHVfaW50KSBfX2F0dHJpYnV0ZV9f ICgodW51c2VkKSk7CnN0YXRpYyBfX2lubGluZSB1X2ludCBtaW4gKHVfaW50LCB1X2ludCkgX19h dHRyaWJ1dGVfXyAoKHVudXNlZCkpOwpzdGF0aWMgX19pbmxpbmUgbG9uZyBsbWF4IChsb25nLCBs b25nKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7CnN0YXRpYyBfX2lubGluZSBsb25nIGxtaW4g KGxvbmcsIGxvbmcpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKc3RhdGljIF9faW5saW5lIHVf bG9uZyB1bG1heCAodV9sb25nLCB1X2xvbmcpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKc3Rh dGljIF9faW5saW5lIHVfbG9uZyB1bG1pbiAodV9sb25nLCB1X2xvbmcpIF9fYXR0cmlidXRlX18g KCh1bnVzZWQpKTsKc3RhdGljIF9faW5saW5lIGludCBhYnMgKGludCkgX19hdHRyaWJ1dGVfXyAo KHVudXNlZCkpOwoKc3RhdGljIF9faW5saW5lIGludCBpc3NwYWNlIChpbnQpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKTsKc3RhdGljIF9faW5saW5lIGludCBpc2FzY2lpIChpbnQpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKTsKc3RhdGljIF9faW5saW5lIGludCBpc3VwcGVyIChpbnQp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKTsKc3RhdGljIF9faW5saW5lIGludCBpc2xvd2Vy IChpbnQpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKTsKc3RhdGljIF9faW5saW5lIGludCBp c2FscGhhIChpbnQpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKTsKc3RhdGljIF9faW5saW5l IGludCBpc2RpZ2l0IChpbnQpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKTsKc3RhdGljIF9f aW5saW5lIGludCBpc3hkaWdpdCAoaW50KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSk7CnN0 YXRpYyBfX2lubGluZSBpbnQgdG91cHBlciAoaW50KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSk7CnN0YXRpYyBfX2lubGluZSBpbnQgdG9sb3dlciAoaW50KSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSk7CgoKc3RhdGljIF9faW5saW5lIGludAppbWF4KGEsIGIpCiAgICAgICAgaW50IGEs IGI7CnsKICAgICAgICByZXR1cm4gKGEgPiBiID8gYSA6IGIpOwp9CnN0YXRpYyBfX2lubGluZSBp bnQKaW1pbihhLCBiKQogICAgICAgIGludCBhLCBiOwp7CiAgICAgICAgcmV0dXJuIChhIDwgYiA/ IGEgOiBiKTsKfQpzdGF0aWMgX19pbmxpbmUgbG9uZwpsbWF4KGEsIGIpCiAgICAgICAgbG9uZyBh LCBiOwp7CiAgICAgICAgcmV0dXJuIChhID4gYiA/IGEgOiBiKTsKfQpzdGF0aWMgX19pbmxpbmUg bG9uZwpsbWluKGEsIGIpCiAgICAgICAgbG9uZyBhLCBiOwp7CiAgICAgICAgcmV0dXJuIChhIDwg YiA/IGEgOiBiKTsKfQpzdGF0aWMgX19pbmxpbmUgdV9pbnQKbWF4KGEsIGIpCiAgICAgICAgdV9p bnQgYSwgYjsKewogICAgICAgIHJldHVybiAoYSA+IGIgPyBhIDogYik7Cn0Kc3RhdGljIF9faW5s aW5lIHVfaW50Cm1pbihhLCBiKQogICAgICAgIHVfaW50IGEsIGI7CnsKICAgICAgICByZXR1cm4g KGEgPCBiID8gYSA6IGIpOwp9CnN0YXRpYyBfX2lubGluZSB1X2xvbmcKdWxtYXgoYSwgYikKICAg ICAgICB1X2xvbmcgYSwgYjsKewogICAgICAgIHJldHVybiAoYSA+IGIgPyBhIDogYik7Cn0Kc3Rh dGljIF9faW5saW5lIHVfbG9uZwp1bG1pbihhLCBiKQogICAgICAgIHVfbG9uZyBhLCBiOwp7CiAg ICAgICAgcmV0dXJuIChhIDwgYiA/IGEgOiBiKTsKfQoKc3RhdGljIF9faW5saW5lIGludAphYnMo aikKICAgICAgICBpbnQgajsKewogICAgICAgIHJldHVybihqIDwgMCA/IC1qIDogaik7Cn0KCnN0 YXRpYyBfX2lubGluZSBpbnQKaXNzcGFjZShjaCkKICAgICAgICBpbnQgY2g7CnsKCiAgICAgICAg cmV0dXJuIChjaCA9PSAnICcgfHwgKGNoID49ICdcdCcgJiYgY2ggPD0gJ1xyJykpOwp9CgpzdGF0 aWMgX19pbmxpbmUgaW50CmlzYXNjaWkoY2gpCiAgICAgICAgaW50IGNoOwp7CgogICAgICAgIHJl dHVybiAoKGNoICYgfjB4N2YpID09IDApOwp9CgpzdGF0aWMgX19pbmxpbmUgaW50CmlzdXBwZXIo Y2gpCiAgICAgICAgaW50IGNoOwp7CgogICAgICAgIHJldHVybiAoY2ggPj0gJ0EnICYmIGNoIDw9 ICdaJyk7Cn0KCnN0YXRpYyBfX2lubGluZSBpbnQKaXNsb3dlcihjaCkKICAgICAgICBpbnQgY2g7 CnsKCiAgICAgICAgcmV0dXJuIChjaCA+PSAnYScgJiYgY2ggPD0gJ3onKTsKfQoKc3RhdGljIF9f aW5saW5lIGludAppc2FscGhhKGNoKQogICAgICAgIGludCBjaDsKewoKICAgICAgICByZXR1cm4g KGlzdXBwZXIoY2gpIHx8IGlzbG93ZXIoY2gpKTsKfQoKc3RhdGljIF9faW5saW5lIGludAppc2Rp Z2l0KGNoKQogICAgICAgIGludCBjaDsKewoKICAgICAgICByZXR1cm4gKGNoID49ICcwJyAmJiBj aCA8PSAnOScpOwp9CgpzdGF0aWMgX19pbmxpbmUgaW50CmlzeGRpZ2l0KGNoKQogICAgICAgIGlu dCBjaDsKewoKICAgICAgICByZXR1cm4gKGlzZGlnaXQoY2gpIHx8CiAgICAgICAgICAgIChjaCA+ PSAnQScgJiYgY2ggPD0gJ0YnKSB8fAogICAgICAgICAgICAoY2ggPj0gJ2EnICYmIGNoIDw9ICdm JykpOwp9CgpzdGF0aWMgX19pbmxpbmUgaW50CnRvdXBwZXIoY2gpCiAgICAgICAgaW50IGNoOwp7 CgogICAgICAgIGlmIChpc2xvd2VyKGNoKSkKICAgICAgICAgICAgICAgIHJldHVybiAoY2ggLSAw eDIwKTsKICAgICAgICByZXR1cm4gKGNoKTsKfQoKc3RhdGljIF9faW5saW5lIGludAp0b2xvd2Vy KGNoKQogICAgICAgIGludCBjaDsKewoKICAgICAgICBpZiAoaXN1cHBlcihjaCkpCiAgICAgICAg ICAgICAgICByZXR1cm4gKGNoICsgMHgyMCk7CiAgICAgICAgcmV0dXJuIChjaCk7Cn0KIyAyNTQg Ii4uLy4uLy4uLy4uL2xpYi9saWJrZXJuL2xpYmtlcm4uaCIKaW50IGJjbXAgKGNvbnN0IHZvaWQg KiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwp2b2lkIGJ6ZXJvICh2b2lkICosIHNpemVfdCk7CgoK CnZvaWQgKm1lbWNweSAodm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7CmludCBtZW1jbXAg KGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwp2b2lkICptZW1zZXQgKHZvaWQg KiwgaW50LCBzaXplX3QpOwoKCgoKCgpjaGFyICpzdHJjcHkgKGNoYXIgKiwgY29uc3QgY2hhciAq KTsKaW50IHN0cmNtcCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpzaXplX3Qgc3RybGVu IChjb25zdCBjaGFyICopOwojIDI4MyAiLi4vLi4vLi4vLi4vbGliL2xpYmtlcm4vbGlia2Vybi5o IgpjaGFyICpzdHJjYXQgKGNoYXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqc3RybmNweSAoY2hh ciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmludCBzdHJuY21wIChjb25zdCBjaGFyICosIGNv bnN0IGNoYXIgKiwgc2l6ZV90KTsKY2hhciAqc3RyY2hyIChjb25zdCBjaGFyICosIGludCk7CmNo YXIgKnN0cnJjaHIgKGNvbnN0IGNoYXIgKiwgaW50KTsKCgppbnQgZmZzIChpbnQpOwoKdm9pZCBf X2Fzc2VydCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCwgY29uc3QgY2hhciAqKQog ICAgICAgICAgICBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKdV9pbnQzMl90CiAgICAg ICAgIGluZXRfYWRkciAoY29uc3QgY2hhciAqKTsKY2hhciAqaW50b2EgKHVfaW50MzJfdCk7Cgp2 b2lkICptZW1jaHIgKGNvbnN0IHZvaWQgKiwgaW50LCBzaXplX3QpOwp2b2lkICptZW1tb3ZlICh2 b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKaW50IHBtYXRjaCAoY29uc3QgY2hhciAqLCBj b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiopOwp1X2xvbmcgcmFuZG9tICh2b2lkKTsKaW50IHNj YW5jICh1X2ludCwgY29uc3QgdV9jaGFyICosIGNvbnN0IHVfY2hhciAqLCBpbnQpOwppbnQgc2tw YyAoaW50LCBzaXplX3QsIHVfY2hhciAqKTsKaW50IHN0cmNhc2VjbXAgKGNvbnN0IGNoYXIgKiwg Y29uc3QgY2hhciAqKTsKaW50IHN0cm5jYXNlY21wIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg Kiwgc2l6ZV90KTsKdV9sb25nIHN0cnRvdWwgKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsK IyAzMzkgIi4uLy4uLy4uLy4uL3N5cy9zeXN0bS5oIiAyCiMgMzQ4ICIuLi8uLi8uLi8uLi9zeXMv c3lzdG0uaCIKdHlwZWRlZiBzdHJ1Y3QgY25tX3N0YXRlIHsKICAgICAgICBpbnQgY25tX3N0YXRl OwogICAgICAgIHVfc2hvcnQgKmNubV9tYWdpYzsKfSBjbm1fc3RhdGVfdDsKIyAzNjEgIi4uLy4u Ly4uLy4uL3N5cy9zeXN0bS5oIgp2b2lkIGNuX2luaXRfbWFnaWMgKGNubV9zdGF0ZV90ICpjbm0p Owp2b2lkIGNuX2Rlc3Ryb3lfbWFnaWMgKGNubV9zdGF0ZV90ICpjbm0pOwppbnQgY25fc2V0X21h Z2ljIChjaGFyICptYWdpYyk7CmludCBjbl9nZXRfbWFnaWMgKGNoYXIgKm1hZ2ljLCBpbnQgbGVu KTsKIyA4NiAiYW03OTkwLmMiIDIKIyAxICIuLi8uLi8uLi8uLi9zeXMvbWJ1Zi5oIiAxCiMgODAg Ii4uLy4uLy4uLy4uL3N5cy9tYnVmLmgiCiMgMSAiLi4vLi4vLi4vLi4vc3lzL21hbGxvYy5oIiAx CiMgNDIgIi4uLy4uLy4uLy4uL3N5cy9tYWxsb2MuaCIKIyAxICJvcHRfa21lbXN0YXRzLmgiIDEK IyA0MyAiLi4vLi4vLi4vLi4vc3lzL21hbGxvYy5oIiAyCiMgMSAib3B0X21hbGxvY2xvZy5oIiAx CiMgNDQgIi4uLy4uLy4uLy4uL3N5cy9tYWxsb2MuaCIgMgojIDEgIm9wdF9tYWxsb2NfZGVidWcu aCIgMQojIDQ1ICIuLi8uLi8uLi8uLi9zeXMvbWFsbG9jLmgiIDIKIyAxICJvcHRfbG9ja2RlYnVn LmgiIDEKIyA0NiAiLi4vLi4vLi4vLi4vc3lzL21hbGxvYy5oIiAyCiMgMzM1ICIuLi8uLi8uLi8u Li9zeXMvbWFsbG9jLmgiCnN0cnVjdCBrbWVtc3RhdHMgewogICAgICAgIHVfbG9uZyBrc19pbnVz ZTsKICAgICAgICB1X2xvbmcga3NfY2FsbHM7CiAgICAgICAgdV9sb25nIGtzX21lbXVzZTsKICAg ICAgICB1X3Nob3J0IGtzX2xpbWJsb2NrczsKICAgICAgICB1X3Nob3J0IGtzX21hcGJsb2NrczsK ICAgICAgICB1X2xvbmcga3NfbWF4dXNlZDsKICAgICAgICB1X2xvbmcga3NfbGltaXQ7CiAgICAg ICAgdV9sb25nIGtzX3NpemU7CiAgICAgICAgdV9sb25nIGtzX3NwYXJlOwp9OwoKCgoKc3RydWN0 IGttZW11c2FnZSB7CiAgICAgICAgc2hvcnQga3VfaW5keDsKICAgICAgICB1bmlvbiB7CiAgICAg ICAgICAgICAgICB1X3Nob3J0IGZyZWVjbnQ7CiAgICAgICAgICAgICAgICB1X3Nob3J0IHBhZ2Vj bnQ7CiAgICAgICAgfSBrdV91bjsKfTsKCgoKCgoKc3RydWN0IGttZW1idWNrZXRzIHsKICAgICAg ICBfX2NhZGRyX3Qga2JfbmV4dDsKICAgICAgICBfX2NhZGRyX3Qga2JfbGFzdDsKICAgICAgICBs b25nIGtiX2NhbGxzOwogICAgICAgIGxvbmcga2JfdG90YWw7CiAgICAgICAgbG9uZyBrYl90b3Rh bGZyZWU7CiAgICAgICAgbG9uZyBrYl9lbG1wZXJjbDsKICAgICAgICBsb25nIGtiX2hpZ2h3YXQ7 CiAgICAgICAgbG9uZyBrYl9jb3VsZGZyZWU7Cn07CiMgNDU5ICIuLi8uLi8uLi8uLi9zeXMvbWFs bG9jLmgiCmV4dGVybiBzdHJ1Y3Qga21lbXN0YXRzIGttZW1zdGF0c1tdOwpleHRlcm4gc3RydWN0 IGttZW11c2FnZSAqa21lbXVzYWdlOwpleHRlcm4gY2hhciAqa21lbWJhc2U7CmV4dGVybiBzdHJ1 Y3Qga21lbWJ1Y2tldHMgYnVja2V0W107CiMgNDczICIuLi8uLi8uLi8uLi9zeXMvbWFsbG9jLmgi CnZvaWQgKm1hbGxvYyh1bnNpZ25lZCBsb25nIHNpemUsIGludCB0eXBlLCBpbnQgZmxhZ3MpOwp2 b2lkIGZyZWUodm9pZCAqYWRkciwgaW50IHR5cGUpOwojIDQ4NiAiLi4vLi4vLi4vLi4vc3lzL21h bGxvYy5oIgp2b2lkICpyZWFsbG9jKHZvaWQgKmN1cmFkZHIsIHVuc2lnbmVkIGxvbmcgbmV3c2l6 ZSwgaW50IHR5cGUsCiAgICAgICAgICAgIGludCBmbGFncyk7CnVuc2lnbmVkIGxvbmcKICAgICAg ICBtYWxsb2Nfcm91bmR1cCh1bnNpZ25lZCBsb25nKTsKIyA4MSAiLi4vLi4vLi4vLi4vc3lzL21i dWYuaCIgMgoKIyAxICIuLi8uLi8uLi8uLi9zeXMvcG9vbC5oIiAxCiMgNDggIi4uLy4uLy4uLy4u L3N5cy9wb29sLmgiCiMgMSAib3B0X3Bvb2wuaCIgMQojIDQ5ICIuLi8uLi8uLi8uLi9zeXMvcG9v bC5oIiAyCgoKCiMgMSAiLi4vLi4vLi4vLi4vc3lzL2xvY2suaCIgMQojIDg2ICIuLi8uLi8uLi8u Li9zeXMvbG9jay5oIgojIDEgIm9wdF9sb2NrZGVidWcuaCIgMQojIDg3ICIuLi8uLi8uLi8uLi9z eXMvbG9jay5oIiAyCiMgMSAib3B0X211bHRpcHJvY2Vzc29yLmgiIDEKIyA4OCAiLi4vLi4vLi4v Li4vc3lzL2xvY2suaCIgMgoKCiMgMSAiLi4vLi4vLi4vLi4vc3lzL3F1ZXVlLmgiIDEKIyA5MSAi Li4vLi4vLi4vLi4vc3lzL2xvY2suaCIgMgojIDEgIm1hY2hpbmUvbG9jay5oIiAxCiMgNDYgIm1h Y2hpbmUvbG9jay5oIgp0eXBlZGVmIHZvbGF0aWxlIGludCBfX2NwdV9zaW1wbGVfbG9ja190OwoK CgoKc3RhdGljIF9faW5saW5lIHZvaWQgX19jcHVfc2ltcGxlX2xvY2tfaW5pdCAoX19jcHVfc2lt cGxlX2xvY2tfdCAqKQogICAgICAgIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKTsKc3RhdGlj IF9faW5saW5lIHZvaWQgX19jcHVfc2ltcGxlX2xvY2sgKF9fY3B1X3NpbXBsZV9sb2NrX3QgKikK ICAgICAgICBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSk7CnN0YXRpYyBfX2lubGluZSBpbnQg X19jcHVfc2ltcGxlX2xvY2tfdHJ5IChfX2NwdV9zaW1wbGVfbG9ja190ICopCiAgICAgICAgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpOwpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX2NwdV9zaW1w bGVfdW5sb2NrIChfX2NwdV9zaW1wbGVfbG9ja190ICopCiAgICAgICAgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpOwoKc3RhdGljIF9faW5saW5lIHZvaWQKX19jcHVfc2ltcGxlX2xvY2tfaW5p dChfX2NwdV9zaW1wbGVfbG9ja190ICphbHApCnsKCiAgICAgICAgKmFscCA9IDA7Cn0KCnN0YXRp YyBfX2lubGluZSB2b2lkCl9fY3B1X3NpbXBsZV9sb2NrKF9fY3B1X3NpbXBsZV9sb2NrX3QgKmFs cCkKewogICAgICAgIGludCBfX3ZhbCA9IDE7CgogICAgICAgIGRvIHsKICAgICAgICAgICAgICAg IF9fYXNtIHZvbGF0aWxlKCJ4Y2hnbCAlMCwgJTIiCiAgICAgICAgICAgICAgICAgICAgICAgIDog Ij1yIiAoX192YWwpCiAgICAgICAgICAgICAgICAgICAgICAgIDogIjAiIChfX3ZhbCksICJtIiAo KmFscCkpOwogICAgICAgIH0gd2hpbGUgKF9fdmFsICE9IDApOwp9CgpzdGF0aWMgX19pbmxpbmUg aW50Cl9fY3B1X3NpbXBsZV9sb2NrX3RyeShfX2NwdV9zaW1wbGVfbG9ja190ICphbHApCnsKICAg ICAgICBpbnQgX192YWwgPSAxOwoKICAgICAgICBfX2FzbSB2b2xhdGlsZSgieGNoZ2wgJTAsICUy IgogICAgICAgICAgICAgICAgOiAiPXIiIChfX3ZhbCkKICAgICAgICAgICAgICAgIDogIjAiIChf X3ZhbCksICJtIiAoKmFscCkpOwoKICAgICAgICByZXR1cm4gKChfX3ZhbCA9PSAwKSA/IDEgOiAw KTsKfQoKdm9pZApfX2NwdV9zaW1wbGVfdW5sb2NrKF9fY3B1X3NpbXBsZV9sb2NrX3QgKmFscCkK ewoKICAgICAgICAqYWxwID0gMDsKfQojIDkyICIuLi8uLi8uLi8uLi9zeXMvbG9jay5oIiAyCgoK CgoKCnN0cnVjdCBzaW1wbGVsb2NrIHsKICAgICAgICBfX2NwdV9zaW1wbGVfbG9ja190IGxvY2tf ZGF0YTsKIyAxMDggIi4uLy4uLy4uLy4uL3N5cy9sb2NrLmgiCn07CiMgMTIyICIuLi8uLi8uLi8u Li9zeXMvbG9jay5oIgpzdHJ1Y3QgbG9jayB7CiAgICAgICAgc3RydWN0IHNpbXBsZWxvY2sgbGtf aW50ZXJsb2NrOwogICAgICAgIHVfaW50IGxrX2ZsYWdzOwogICAgICAgIGludCBsa19zaGFyZWNv dW50OwogICAgICAgIHNob3J0IGxrX2V4Y2x1c2l2ZWNvdW50OwogICAgICAgIHNob3J0IGxrX3Jl Y3Vyc2VsZXZlbDsKICAgICAgICBpbnQgbGtfd2FpdGNvdW50OwoKCgoKCiAgICAgICAgY29uc3Qg Y2hhciAqbGtfd21lc2c7CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7 CgogICAgICAgICAgICAgICAgICAgICAgICBfX3BpZF90IGxrX3NsZWVwX2xvY2tob2xkZXI7CgoK ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxrX3NsZWVwX3ByaW87CgoKICAgICAgICAgICAg ICAgICAgICAgICAgaW50IGxrX3NsZWVwX3RpbW87CiAgICAgICAgICAgICAgICB9IGxrX3VuX3Ns ZWVwOwogICAgICAgICAgICAgICAgc3RydWN0IHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNw dWlkX3QgbGtfc3Bpbl9jcHU7CgoKCiAgICAgICAgICAgICAgICB9IGxrX3VuX3NwaW47CiAgICAg ICAgfSBsa191bjsKIyAxNzEgIi4uLy4uLy4uLy4uL3N5cy9sb2NrLmgiCn07CiMgMjc1ICIuLi8u Li8uLi8uLi9zeXMvbG9jay5oIgpzdHJ1Y3QgcHJvYzsKCnZvaWQgbG9ja2luaXQoc3RydWN0IGxv Y2sgKiwgaW50IHByaW8sIGNvbnN0IGNoYXIgKndtZXNnLCBpbnQgdGltbywKICAgICAgICAgICAg ICAgICAgICAgICAgaW50IGZsYWdzKTsKCgoKCgppbnQgbG9ja21ncih2b2xhdGlsZSBzdHJ1Y3Qg bG9jayAqLCB1X2ludCBmbGFncywgc3RydWN0IHNpbXBsZWxvY2sgKik7CgppbnQgbG9ja3N0YXR1 cyhzdHJ1Y3QgbG9jayAqKTsKdm9pZCBsb2NrbWdyX3ByaW50aW5mbyh2b2xhdGlsZSBzdHJ1Y3Qg bG9jayAqKTsKIyAzMTIgIi4uLy4uLy4uLy4uL3N5cy9sb2NrLmgiCmludCBzcGlubG9ja19yZWxl YXNlX2FsbCh2b2xhdGlsZSBzdHJ1Y3QgbG9jayAqKTsKdm9pZCBzcGlubG9ja19hY3F1aXJlX2Nv dW50KHZvbGF0aWxlIHN0cnVjdCBsb2NrICosIGludCk7CiMgNTMgIi4uLy4uLy4uLy4uL3N5cy9w b29sLmgiIDIKIyA2MiAiLi4vLi4vLi4vLi4vc3lzL3Bvb2wuaCIKc3RydWN0IHBvb2xfY2FjaGVf Z3JvdXAgewogICAgICAgIHN0cnVjdCB7IHN0cnVjdCBwb29sX2NhY2hlX2dyb3VwICp0cWVfbmV4 dDsgc3RydWN0IHBvb2xfY2FjaGVfZ3JvdXAgKip0cWVfcHJldjsgfQogICAgICAgICAgICAgICAg cGNnX2xpc3Q7CiAgICAgICAgdV9pbnQgcGNnX2F2YWlsOwoKICAgICAgICB2b2lkICpwY2dfb2Jq ZWN0c1sxNl07Cn07CgpzdHJ1Y3QgcG9vbF9jYWNoZSB7CiAgICAgICAgc3RydWN0IHsgc3RydWN0 IHBvb2xfY2FjaGUgKnRxZV9uZXh0OyBzdHJ1Y3QgcG9vbF9jYWNoZSAqKnRxZV9wcmV2OyB9CiAg ICAgICAgICAgICAgICAgICAgICAgIHBjX3Bvb2xsaXN0OwogICAgICAgIHN0cnVjdCB7IHN0cnVj dCBwb29sX2NhY2hlX2dyb3VwICp0cWhfZmlyc3Q7IHN0cnVjdCBwb29sX2NhY2hlX2dyb3VwICoq dHFoX2xhc3Q7IH0KICAgICAgICAgICAgICAgICAgICAgICAgcGNfZ3JvdXBsaXN0OwogICAgICAg IHN0cnVjdCBwb29sX2NhY2hlX2dyb3VwCiAgICAgICAgICAgICAgICAgICAgICAgICpwY19hbGxv Y2Zyb207CiAgICAgICAgc3RydWN0IHBvb2xfY2FjaGVfZ3JvdXAKICAgICAgICAgICAgICAgICAg ICAgICAgKnBjX2ZyZWV0bzsKICAgICAgICBzdHJ1Y3QgcG9vbCAqcGNfcG9vbDsKICAgICAgICBz dHJ1Y3Qgc2ltcGxlbG9jayBwY19zbG9jazsKCiAgICAgICAgaW50ICgqcGNfY3Rvcikodm9pZCAq LCB2b2lkICosIGludCk7CiAgICAgICAgdm9pZCAoKnBjX2R0b3IpKHZvaWQgKiwgdm9pZCAqKTsK ICAgICAgICB2b2lkICpwY19hcmc7CgoKICAgICAgICB1bnNpZ25lZCBsb25nIHBjX2hpdHM7CiAg ICAgICAgdW5zaWduZWQgbG9uZyBwY19taXNzZXM7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgcGNf bmdyb3VwczsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBwY19uaXRlbXM7Cn07CgpzdHJ1Y3QgcG9v bF9hbGxvY2F0b3IgewogICAgICAgIHZvaWQgKigqcGFfYWxsb2MpKHN0cnVjdCBwb29sICosIGlu dCk7CiAgICAgICAgdm9pZCAoKnBhX2ZyZWUpKHN0cnVjdCBwb29sICosIHZvaWQgKik7CiAgICAg ICAgaW50IHBhX3BhZ2VzejsKCgogICAgICAgIHN0cnVjdCBzaW1wbGVsb2NrIHBhX3Nsb2NrOwog ICAgICAgIHN0cnVjdCB7IHN0cnVjdCBwb29sICp0cWhfZmlyc3Q7IHN0cnVjdCBwb29sICoqdHFo X2xhc3Q7IH0gcGFfbGlzdDsKICAgICAgICBpbnQgcGFfZmxhZ3M7CgoKICAgICAgICBpbnQgcGFf cGFnZW1hc2s7CiAgICAgICAgaW50IHBhX3BhZ2VzaGlmdDsKfTsKCnN0cnVjdCBwb29sIHsKICAg ICAgICBzdHJ1Y3QgeyBzdHJ1Y3QgcG9vbCAqdHFlX25leHQ7IHN0cnVjdCBwb29sICoqdHFlX3By ZXY7IH0KICAgICAgICAgICAgICAgICAgICAgICAgcHJfcG9vbGxpc3Q7CiAgICAgICAgc3RydWN0 IHsgc3RydWN0IHBvb2xfaXRlbV9oZWFkZXIgKnRxaF9maXJzdDsgc3RydWN0IHBvb2xfaXRlbV9o ZWFkZXIgKip0cWhfbGFzdDsgfQogICAgICAgICAgICAgICAgICAgICAgICBwcl9wYWdlbGlzdDsK ICAgICAgICBzdHJ1Y3QgcG9vbF9pdGVtX2hlYWRlciAqcHJfY3VycGFnZTsKICAgICAgICBzdHJ1 Y3QgeyBzdHJ1Y3QgcG9vbF9jYWNoZSAqdHFoX2ZpcnN0OyBzdHJ1Y3QgcG9vbF9jYWNoZSAqKnRx aF9sYXN0OyB9CiAgICAgICAgICAgICAgICAgICAgICAgIHByX2NhY2hlbGlzdDsKICAgICAgICB1 bnNpZ25lZCBpbnQgcHJfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgcHJfYWxpZ247CiAgICAg ICAgdW5zaWduZWQgaW50IHByX2l0ZW1vZmZzZXQ7CiAgICAgICAgdW5zaWduZWQgaW50IHByX21p bml0ZW1zOwogICAgICAgIHVuc2lnbmVkIGludCBwcl9taW5wYWdlczsKICAgICAgICB1bnNpZ25l ZCBpbnQgcHJfbWF4cGFnZXM7CiAgICAgICAgdW5zaWduZWQgaW50IHByX25wYWdlczsKICAgICAg ICB1bnNpZ25lZCBpbnQgcHJfaXRlbXNwZXJwYWdlOwogICAgICAgIHVuc2lnbmVkIGludCBwcl9z bGFjazsKICAgICAgICB1bnNpZ25lZCBpbnQgcHJfbml0ZW1zOwogICAgICAgIHVuc2lnbmVkIGlu dCBwcl9ub3V0OwogICAgICAgIHVuc2lnbmVkIGludCBwcl9oYXJkbGltaXQ7CgogICAgICAgIHN0 cnVjdCBwb29sX2FsbG9jYXRvciAqcHJfYWxsb2M7CiAgICAgICAgc3RydWN0IHsgc3RydWN0IHBv b2wgKnRxZV9uZXh0OyBzdHJ1Y3QgcG9vbCAqKnRxZV9wcmV2OyB9IHByX2FsbG9jX2xpc3Q7CgoK ICAgICAgICB2b2lkICgqcHJfZHJhaW5faG9vaykodm9pZCAqLCBpbnQpOwogICAgICAgIHZvaWQg KnByX2RyYWluX2hvb2tfYXJnOwoKICAgICAgICBjb25zdCBjaGFyICpwcl93Y2hhbjsKICAgICAg ICB1bnNpZ25lZCBpbnQgcHJfZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgaW50IHByX3JvZmxhZ3M7 CiMgMTU4ICIuLi8uLi8uLi8uLi9zeXMvcG9vbC5oIgogICAgICAgIHN0cnVjdCBzaW1wbGVsb2Nr IHByX3Nsb2NrOwoKICAgICAgICBzdHJ1Y3QgeyBzdHJ1Y3QgcG9vbF9pdGVtX2hlYWRlciAqbGhf Zmlyc3Q7IH0KICAgICAgICAgICAgICAgICAgICAgICAgcHJfaGFzaHRhYls4XTsKCiAgICAgICAg aW50IHByX21heGNvbG9yOwogICAgICAgIGludCBwcl9jdXJjb2xvcjsKICAgICAgICBpbnQgcHJf cGhvZmZzZXQ7CgoKCgoKICAgICAgICBjb25zdCBjaGFyICpwcl9oYXJkbGltaXRfd2FybmluZzsK ICAgICAgICBzdHJ1Y3QgdGltZXZhbCBwcl9oYXJkbGltaXRfcmF0ZWNhcDsKICAgICAgICBzdHJ1 Y3QgdGltZXZhbCBwcl9oYXJkbGltaXRfd2FybmluZ19sYXN0OwoKCgoKICAgICAgICB1bnNpZ25l ZCBsb25nIHByX25nZXQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwcl9uZmFpbDsKICAgICAgICB1 bnNpZ25lZCBsb25nIHByX25wdXQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwcl9ucGFnZWFsbG9j OwogICAgICAgIHVuc2lnbmVkIGxvbmcgcHJfbnBhZ2VmcmVlOwogICAgICAgIHVuc2lnbmVkIGlu dCBwcl9oaXdhdDsKICAgICAgICB1bnNpZ25lZCBsb25nIHByX25pZGxlOwoKCgoKICAgICAgICBz dHJ1Y3QgcG9vbF9sb2cgKnByX2xvZzsKICAgICAgICBpbnQgcHJfY3VybG9nZW50cnk7CiAgICAg ICAgaW50IHByX2xvZ3NpemU7CgogICAgICAgIGNvbnN0IGNoYXIgKnByX2VudGVyZWRfZmlsZTsK ICAgICAgICBsb25nIHByX2VudGVyZWRfbGluZTsKfTsKIyAyMDUgIi4uLy4uLy4uLy4uL3N5cy9w b29sLmgiCmV4dGVybiBzdHJ1Y3QgcG9vbF9hbGxvY2F0b3IgcG9vbF9hbGxvY2F0b3Jfa21lbTsK ZXh0ZXJuIHN0cnVjdCBwb29sX2FsbG9jYXRvciBwb29sX2FsbG9jYXRvcl9ub2ludHI7Cgp2b2lk IHBvb2xfaW5pdChzdHJ1Y3QgcG9vbCAqLCBzaXplX3QsIHVfaW50LCB1X2ludCwKICAgICAgICAg ICAgICAgICAgICBpbnQsIGNvbnN0IGNoYXIgKiwgc3RydWN0IHBvb2xfYWxsb2NhdG9yICopOwp2 b2lkIHBvb2xfZGVzdHJveShzdHJ1Y3QgcG9vbCAqKTsKCnZvaWQgcG9vbF9zZXRfZHJhaW5faG9v ayhzdHJ1Y3QgcG9vbCAqLAogICAgICAgICAgICAgICAgICAgIHZvaWQgKCopKHZvaWQgKiwgaW50 KSwgdm9pZCAqKTsKCnZvaWQgKnBvb2xfZ2V0KHN0cnVjdCBwb29sICosIGludCk7CnZvaWQgcG9v bF9wdXQoc3RydWN0IHBvb2wgKiwgdm9pZCAqKTsKaW50IHBvb2xfcmVjbGFpbShzdHJ1Y3QgcG9v bCAqKTsKIyAyMzEgIi4uLy4uLy4uLy4uL3N5cy9wb29sLmgiCmludCBwb29sX3ByaW1lKHN0cnVj dCBwb29sICosIGludCk7CnZvaWQgcG9vbF9zZXRsb3dhdChzdHJ1Y3QgcG9vbCAqLCBpbnQpOwp2 b2lkIHBvb2xfc2V0aGl3YXQoc3RydWN0IHBvb2wgKiwgaW50KTsKdm9pZCBwb29sX3NldGhhcmRs aW1pdChzdHJ1Y3QgcG9vbCAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50KTsKdm9pZCBwb29sX2Ry YWluKHZvaWQgKik7CgoKCgp2b2lkIHBvb2xfcHJpbnQoc3RydWN0IHBvb2wgKiwgY29uc3QgY2hh ciAqKTsKdm9pZCBwb29sX3ByaW50aXQoc3RydWN0IHBvb2wgKiwgY29uc3QgY2hhciAqLAogICAg ICAgICAgICAgICAgICAgIHZvaWQgKCopKGNvbnN0IGNoYXIgKiwgLi4uKSk7CmludCBwb29sX2No ayhzdHJ1Y3QgcG9vbCAqLCBjb25zdCBjaGFyICopOwoKCgoKdm9pZCBwb29sX2NhY2hlX2luaXQo c3RydWN0IHBvb2xfY2FjaGUgKiwgc3RydWN0IHBvb2wgKiwKICAgICAgICAgICAgICAgICAgICBp bnQgKCpjdG9yKSh2b2lkICosIHZvaWQgKiwgaW50KSwKICAgICAgICAgICAgICAgICAgICB2b2lk ICgqZHRvcikodm9pZCAqLCB2b2lkICopLAogICAgICAgICAgICAgICAgICAgIHZvaWQgKik7CnZv aWQgcG9vbF9jYWNoZV9kZXN0cm95KHN0cnVjdCBwb29sX2NhY2hlICopOwp2b2lkICpwb29sX2Nh Y2hlX2dldChzdHJ1Y3QgcG9vbF9jYWNoZSAqLCBpbnQpOwp2b2lkIHBvb2xfY2FjaGVfcHV0KHN0 cnVjdCBwb29sX2NhY2hlICosIHZvaWQgKik7CnZvaWQgcG9vbF9jYWNoZV9kZXN0cnVjdF9vYmpl Y3Qoc3RydWN0IHBvb2xfY2FjaGUgKiwgdm9pZCAqKTsKdm9pZCBwb29sX2NhY2hlX2ludmFsaWRh dGUoc3RydWN0IHBvb2xfY2FjaGUgKik7CiMgODMgIi4uLy4uLy4uLy4uL3N5cy9tYnVmLmgiIDIK IyAxMDUgIi4uLy4uLy4uLy4uL3N5cy9tYnVmLmgiCnN0cnVjdCBtX2hkciB7CiAgICAgICAgc3Ry dWN0IG1idWYgKm1oX25leHQ7CiAgICAgICAgc3RydWN0IG1idWYgKm1oX25leHRwa3Q7CiAgICAg ICAgX19jYWRkcl90IG1oX2RhdGE7CiAgICAgICAgaW50IG1oX2xlbjsKICAgICAgICBzaG9ydCBt aF90eXBlOwogICAgICAgIHNob3J0IG1oX2ZsYWdzOwp9OwojIDEyOCAiLi4vLi4vLi4vLi4vc3lz L21idWYuaCIKc3RydWN0IHBrdGhkciB7CiAgICAgICAgc3RydWN0IGlmbmV0ICpyY3ZpZjsKICAg ICAgICBpbnQgbGVuOwogICAgICAgIGludCBjc3VtX2ZsYWdzOwogICAgICAgIHVfaW50MzJfdCBj c3VtX2RhdGE7CiAgICAgICAgc3RydWN0IG1idWYgKmF1eDsKfTsKIyAxNTAgIi4uLy4uLy4uLy4u L3N5cy9tYnVmLmgiCnN0cnVjdCBtX2V4dCB7CiAgICAgICAgX19jYWRkcl90IGV4dF9idWY7CiAg ICAgICAgdm9pZCAoKmV4dF9mcmVlKQogICAgICAgICAgICAgICAgKHN0cnVjdCBtYnVmICosIF9f Y2FkZHJfdCwgdV9pbnQsIHZvaWQgKik7CiAgICAgICAgdm9pZCAqZXh0X2FyZzsKICAgICAgICB1 X2ludCBleHRfc2l6ZTsKICAgICAgICBpbnQgZXh0X3R5cGU7CiAgICAgICAgc3RydWN0IG1idWYg KmV4dF9uZXh0cmVmOwogICAgICAgIHN0cnVjdCBtYnVmICpleHRfcHJldnJlZjsKCgoKCgoKfTsK CnN0cnVjdCBtYnVmIHsKICAgICAgICBzdHJ1Y3QgbV9oZHIgbV9oZHI7CiAgICAgICAgdW5pb24g ewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHBrdGhkciBNSF9wa3RoZHI7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbV9leHQgTUhfZXh0OwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgTUhfZGF0YWJ1ZlsoKDI1NiAtIHNpemVvZihzdHJ1 Y3QgbV9oZHIpKSAtIHNpemVvZihzdHJ1Y3QgcGt0aGRyKSldOwogICAgICAgICAgICAgICAgICAg ICAgICB9IE1IX2RhdDsKICAgICAgICAgICAgICAgIH0gTUg7CiAgICAgICAgICAgICAgICBjaGFy IE1fZGF0YWJ1ZlsoMjU2IC0gc2l6ZW9mKHN0cnVjdCBtX2hkcikpXTsKICAgICAgICB9IE1fZGF0 Owp9OwojIDU4MiAiLi4vLi4vLi4vLi4vc3lzL21idWYuaCIKc3RydWN0IG1hdXh0YWcgewogICAg ICAgIGludCBhZjsKICAgICAgICBpbnQgdHlwZTsKfTsKCgoKCgoKc3RydWN0IG1ic3RhdCB7CiAg ICAgICAgdV9sb25nIF9tX3NwYXJlOwogICAgICAgIHVfbG9uZyBfbV9zcGFyZTE7CiAgICAgICAg dV9sb25nIF9tX3NwYXJlMjsKICAgICAgICB1X2xvbmcgX21fc3BhcmUzOwogICAgICAgIHVfbG9u ZyBtX2Ryb3BzOwogICAgICAgIHVfbG9uZyBtX3dhaXQ7CiAgICAgICAgdV9sb25nIG1fZHJhaW47 CiAgICAgICAgdV9zaG9ydCBtX210eXBlc1syNTZdOwp9OwojIDYyNiAiLi4vLi4vLi4vLi4vc3lz L21idWYuaCIKZXh0ZXJuIHN0cnVjdCBtYnN0YXQgbWJzdGF0OwpleHRlcm4gaW50IG5tYmNsdXN0 ZXJzOwpleHRlcm4gaW50IG1ibG93YXQ7CmV4dGVybiBpbnQgbWNsbG93YXQ7CmV4dGVybiBpbnQg bWF4X2xpbmtoZHI7CmV4dGVybiBpbnQgbWF4X3Byb3RvaGRyOwpleHRlcm4gaW50IG1heF9oZHI7 CmV4dGVybiBpbnQgbWF4X2RhdGFsZW47CmV4dGVybiBjb25zdCBpbnQgbXNpemU7CmV4dGVybiBj b25zdCBpbnQgbWNsYnl0ZXM7CmV4dGVybiBjb25zdCBpbnQgbWJ0eXBlc1tdOwpleHRlcm4gc3Ry dWN0IHBvb2wgbWJwb29sOwpleHRlcm4gc3RydWN0IHBvb2wgbWNscG9vbDsKZXh0ZXJuIHN0cnVj dCBwb29sX2NhY2hlIG1icG9vbF9jYWNoZTsKZXh0ZXJuIHN0cnVjdCBwb29sX2NhY2hlIG1jbHBv b2xfY2FjaGU7CgpzdHJ1Y3QgbWJ1ZiAqbV9jb3B5bSAoc3RydWN0IG1idWYgKiwgaW50LCBpbnQs IGludCk7CnN0cnVjdCBtYnVmICptX2NvcHlwYWNrZXQgKHN0cnVjdCBtYnVmICosIGludCk7CnN0 cnVjdCBtYnVmICptX2RldmdldCAoY2hhciAqLCBpbnQsIGludCwgc3RydWN0IGlmbmV0ICosIHZv aWQgKCpjb3B5KShjb25zdCB2b2lkICosIHZvaWQgKiwgc2l6ZV90KSk7CgpzdHJ1Y3QgbWJ1ZiAq bV9kdXAgKHN0cnVjdCBtYnVmICosIGludCwgaW50LCBpbnQpOwpzdHJ1Y3QgbWJ1ZiAqbV9mcmVl IChzdHJ1Y3QgbWJ1ZiAqKTsKc3RydWN0IG1idWYgKm1fZ2V0IChpbnQsIGludCk7CnN0cnVjdCBt YnVmICptX2dldGNsciAoaW50LCBpbnQpOwpzdHJ1Y3QgbWJ1ZiAqbV9nZXRoZHIgKGludCwgaW50 KTsKc3RydWN0IG1idWYgKm1fcHJlcGVuZCAoc3RydWN0IG1idWYgKixpbnQsaW50KTsKc3RydWN0 IG1idWYgKm1fcHVsbGRvd24gKHN0cnVjdCBtYnVmICosIGludCwgaW50LCBpbnQgKik7CnN0cnVj dCBtYnVmICptX3B1bGx1cCAoc3RydWN0IG1idWYgKiwgaW50KTsKc3RydWN0IG1idWYgKm1fc2x1 cnAgKHN0cnVjdCBtYnVmICosIGludCwgaW50KTsKc3RydWN0IG1idWYgKm1fc3BsaXQgKHN0cnVj dCBtYnVmICosaW50LGludCk7CnZvaWQgbV9hZGogKHN0cnVjdCBtYnVmICosIGludCk7CnZvaWQg bV9jYXQgKHN0cnVjdCBtYnVmICosc3RydWN0IG1idWYgKik7CmludCBtX21iYWxsb2MgKGludCwg aW50KTsKdm9pZCBtX2NvcHliYWNrIChzdHJ1Y3QgbWJ1ZiAqLCBpbnQsIGludCwgX19jYWRkcl90 KTsKdm9pZCBtX2NvcHlkYXRhIChzdHJ1Y3QgbWJ1ZiAqLGludCxpbnQsX19jYWRkcl90KTsKdm9p ZCBtX2ZyZWVtIChzdHJ1Y3QgbWJ1ZiAqKTsKdm9pZCBtX3JlY2xhaW0gKHZvaWQgKiwgaW50KTsK dm9pZCBtYmluaXQgKHZvaWQpOwoKc3RydWN0IG1idWYgKm1fYXV4X2FkZCAoc3RydWN0IG1idWYg KiwgaW50LCBpbnQpOwpzdHJ1Y3QgbWJ1ZiAqbV9hdXhfZmluZCAoc3RydWN0IG1idWYgKiwgaW50 LCBpbnQpOwp2b2lkIG1fYXV4X2RlbGV0ZSAoc3RydWN0IG1idWYgKiwgc3RydWN0IG1idWYgKik7 CiMgODcgImFtNzk5MC5jIiAyCgojIDEgIi4uLy4uLy4uLy4uL3N5cy9zb2NrZXQuaCIgMQojIDgw ICIuLi8uLi8uLi8uLi9zeXMvc29ja2V0LmgiCnR5cGVkZWYgX19zYV9mYW1pbHlfdCBzYV9mYW1p bHlfdDsKCgoKCnR5cGVkZWYgX19zb2NrbGVuX3Qgc29ja2xlbl90OwojIDE0MiAiLi4vLi4vLi4v Li4vc3lzL3NvY2tldC5oIgpzdHJ1Y3QgbGluZ2VyIHsKICAgICAgICBpbnQgbF9vbm9mZjsKICAg ICAgICBpbnQgbF9saW5nZXI7Cn07CiMgMjA1ICIuLi8uLi8uLi8uLi9zeXMvc29ja2V0LmgiCnN0 cnVjdCBzb2NrYWRkciB7CiAgICAgICAgX191aW50OF90IHNhX2xlbjsKICAgICAgICBfX3NhX2Zh bWlseV90IHNhX2ZhbWlseTsKICAgICAgICBjaGFyIHNhX2RhdGFbMTRdOwp9OwoKCgoKCgpzdHJ1 Y3Qgc29ja3Byb3RvIHsKICAgICAgICB1X3Nob3J0IHNwX2ZhbWlseTsKICAgICAgICB1X3Nob3J0 IHNwX3Byb3RvY29sOwp9OwojIDIzMyAiLi4vLi4vLi4vLi4vc3lzL3NvY2tldC5oIgpzdHJ1Y3Qg c29ja2FkZHJfc3RvcmFnZSB7CiAgICAgICAgX191aW50OF90IHNzX2xlbjsKICAgICAgICBfX3Nh X2ZhbWlseV90IHNzX2ZhbWlseTsKICAgICAgICBjaGFyIF9fc3NfcGFkMVsoKHNpemVvZihfX2lu dDY0X3QpKSAtIDIpXTsKICAgICAgICBfX2ludDY0X3QgX19zc19hbGlnbjsKICAgICAgICBjaGFy IF9fc3NfcGFkMlsoMTI4IC0gMiAtICgoc2l6ZW9mKF9faW50NjRfdCkpIC0gMikgLSAoc2l6ZW9m KF9faW50NjRfdCkpKV07Cn07CiMgMzAzICIuLi8uLi8uLi8uLi9zeXMvc29ja2V0LmgiCnN0cnVj dCBzb2NrY3JlZCB7CiAgICAgICAgX191aWRfdCBzY191aWQ7CiAgICAgICAgX191aWRfdCBzY19l dWlkOwogICAgICAgIF9fZ2lkX3Qgc2NfZ2lkOwogICAgICAgIF9fZ2lkX3Qgc2NfZWdpZDsKICAg ICAgICBpbnQgc2Nfbmdyb3VwczsKICAgICAgICBfX2dpZF90IHNjX2dyb3Vwc1sxXTsKfTsKIyAz OTkgIi4uLy4uLy4uLy4uL3N5cy9zb2NrZXQuaCIKc3RydWN0IG1zZ2hkciB7CiAgICAgICAgdm9p ZCAqbXNnX25hbWU7CiAgICAgICAgX19zb2NrbGVuX3QgbXNnX25hbWVsZW47CiAgICAgICAgc3Ry dWN0IGlvdmVjICptc2dfaW92OwogICAgICAgIGludCBtc2dfaW92bGVuOwogICAgICAgIHZvaWQg Km1zZ19jb250cm9sOwogICAgICAgIF9fc29ja2xlbl90IG1zZ19jb250cm9sbGVuOwogICAgICAg IGludCBtc2dfZmxhZ3M7Cn07CiMgNDI2ICIuLi8uLi8uLi8uLi9zeXMvc29ja2V0LmgiCnN0cnVj dCBjbXNnaGRyIHsKICAgICAgICBfX3NvY2tsZW5fdCBjbXNnX2xlbjsKICAgICAgICBpbnQgY21z Z19sZXZlbDsKICAgICAgICBpbnQgY21zZ190eXBlOwoKfTsKIyA0OTAgIi4uLy4uLy4uLy4uL3N5 cy9zb2NrZXQuaCIKc3RydWN0IG9zb2NrYWRkciB7CiAgICAgICAgX191aW50MTZfdCBzYV9mYW1p bHk7CiAgICAgICAgY2hhciBzYV9kYXRhWzE0XTsKfTsKCgoKCnN0cnVjdCBvbXNnaGRyIHsKICAg ICAgICBfX2NhZGRyX3QgbXNnX25hbWU7CiAgICAgICAgaW50IG1zZ19uYW1lbGVuOwogICAgICAg IHN0cnVjdCBpb3ZlYyAqbXNnX2lvdjsKICAgICAgICBpbnQgbXNnX2lvdmxlbjsKICAgICAgICBf X2NhZGRyX3QgbXNnX2FjY3JpZ2h0czsKICAgICAgICBpbnQgbXNnX2FjY3JpZ2h0c2xlbjsKfTsK CgoKCgppbnQgX19jbXNnX2FsaWduYnl0ZXMgKHZvaWQpOwoKIyA4OSAiYW03OTkwLmMiIDIKIyAx ICIuLi8uLi8uLi8uLi9zeXMvZGV2aWNlLmgiIDEKIyA5MCAiLi4vLi4vLi4vLi4vc3lzL2Rldmlj ZS5oIgplbnVtIGRldmNsYXNzIHsKICAgICAgICBEVl9EVUxMLAogICAgICAgIERWX0NQVSwKICAg ICAgICBEVl9ESVNLLAogICAgICAgIERWX0lGTkVULAogICAgICAgIERWX1RBUEUsCiAgICAgICAg RFZfVFRZCn07CgoKCgplbnVtIGRldmFjdCB7CiAgICAgICAgRFZBQ1RfQUNUSVZBVEUsCiAgICAg ICAgRFZBQ1RfREVBQ1RJVkFURQp9OwoKc3RydWN0IGRldmljZSB7CiAgICAgICAgZW51bSBkZXZj bGFzcyBkdl9jbGFzczsKICAgICAgICBzdHJ1Y3QgeyBzdHJ1Y3QgZGV2aWNlICp0cWVfbmV4dDsg c3RydWN0IGRldmljZSAqKnRxZV9wcmV2OyB9IGR2X2xpc3Q7CiAgICAgICAgc3RydWN0IGNmZGF0 YSAqZHZfY2ZkYXRhOwogICAgICAgIGludCBkdl91bml0OwogICAgICAgIGNoYXIgZHZfeG5hbWVb MTZdOwogICAgICAgIHN0cnVjdCBkZXZpY2UgKmR2X3BhcmVudDsKICAgICAgICBpbnQgZHZfZmxh Z3M7Cn07CgoKCgpzdHJ1Y3QgZGV2aWNlbGlzdCB7IHN0cnVjdCBkZXZpY2UgKnRxaF9maXJzdDsg c3RydWN0IGRldmljZSAqKnRxaF9sYXN0OyB9OwoKCgoKCnN0cnVjdCBldmNudCB7CiAgICAgICAg dV9pbnQ2NF90IGV2X2NvdW50OwogICAgICAgIHN0cnVjdCB7IHN0cnVjdCBldmNudCAqdHFlX25l eHQ7IHN0cnVjdCBldmNudCAqKnRxZV9wcmV2OyB9IGV2X2xpc3Q7CiAgICAgICAgdW5zaWduZWQg Y2hhciBldl90eXBlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZXZfZ3JvdXBsZW47CiAgICAgICAg dW5zaWduZWQgY2hhciBldl9uYW1lbGVuOwogICAgICAgIGNoYXIgZXZfcGFkMTsKICAgICAgICBj b25zdCBzdHJ1Y3QgZXZjbnQgKmV2X3BhcmVudDsKICAgICAgICBjb25zdCBjaGFyICpldl9ncm91 cDsKICAgICAgICBjb25zdCBjaGFyICpldl9uYW1lOwp9OwpzdHJ1Y3QgZXZjbnRsaXN0IHsgc3Ry dWN0IGV2Y250ICp0cWhfZmlyc3Q7IHN0cnVjdCBldmNudCAqKnRxaF9sYXN0OyB9OwojIDE2NyAi Li4vLi4vLi4vLi4vc3lzL2RldmljZS5oIgpzdHJ1Y3QgY2ZkYXRhIHsKICAgICAgICBzdHJ1Y3Qg Y2ZhdHRhY2ggKmNmX2F0dGFjaDsKICAgICAgICBzdHJ1Y3QgY2Zkcml2ZXIgKmNmX2RyaXZlcjsK ICAgICAgICBzaG9ydCBjZl91bml0OwogICAgICAgIHNob3J0IGNmX2ZzdGF0ZTsKICAgICAgICBp bnQgKmNmX2xvYzsKICAgICAgICBpbnQgY2ZfZmxhZ3M7CiAgICAgICAgc2hvcnQgKmNmX3BhcmVu dHM7CiAgICAgICAgY29uc3QgY2hhciAqKmNmX2xvY25hbWVzOwp9OwoKCgoKCgp0eXBlZGVmIGlu dCAoKmNmbWF0Y2hfdCkoc3RydWN0IGRldmljZSAqLCBzdHJ1Y3QgY2ZkYXRhICosIHZvaWQgKik7 CiMgMjAwICIuLi8uLi8uLi8uLi9zeXMvZGV2aWNlLmgiCnN0cnVjdCBjZmF0dGFjaCB7CiAgICAg ICAgc2l6ZV90IGNhX2RldnNpemU7CiAgICAgICAgY2ZtYXRjaF90IGNhX21hdGNoOwogICAgICAg IHZvaWQgKCpjYV9hdHRhY2gpKHN0cnVjdCBkZXZpY2UgKiwgc3RydWN0IGRldmljZSAqLCB2b2lk ICopOwogICAgICAgIGludCAoKmNhX2RldGFjaCkoc3RydWN0IGRldmljZSAqLCBpbnQpOwogICAg ICAgIGludCAoKmNhX2FjdGl2YXRlKShzdHJ1Y3QgZGV2aWNlICosIGVudW0gZGV2YWN0KTsKfTsK CgoKCgpzdHJ1Y3QgY2Zkcml2ZXIgewogICAgICAgIHZvaWQgKipjZF9kZXZzOwogICAgICAgIGNo YXIgKmNkX25hbWU7CiAgICAgICAgZW51bSBkZXZjbGFzcyBjZF9jbGFzczsKICAgICAgICBpbnQg Y2RfbmRldnM7Cn07CgoKCgoKCgp0eXBlZGVmIGludCAoKmNmcHJpbnRfdCkodm9pZCAqLCBjb25z dCBjaGFyICopOwoKCgoKCgoKc3RydWN0IHBkZXZpbml0IHsKICAgICAgICB2b2lkICgqcGRldl9h dHRhY2gpKGludCk7CiAgICAgICAgaW50IHBkZXZfY291bnQ7Cn07CgoKCmV4dGVybiBzdHJ1Y3Qg ZGV2aWNlbGlzdCBhbGxkZXZzOwpleHRlcm4gc3RydWN0IGV2Y250bGlzdCBhbGxldmVudHM7CmV4 dGVybiBzdHJ1Y3QgZGV2aWNlICpib290ZWRfZGV2aWNlOwoKZXh0ZXJuIHZvbGF0aWxlIGludCBj b25maWdfcGVuZGluZzsKCnZvaWQgY29uZmlndXJlKHZvaWQpOwpzdHJ1Y3QgY2ZkYXRhICpjb25m aWdfc2VhcmNoKGNmbWF0Y2hfdCwgc3RydWN0IGRldmljZSAqLCB2b2lkICopOwpzdHJ1Y3QgY2Zk YXRhICpjb25maWdfcm9vdHNlYXJjaChjZm1hdGNoX3QsIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsK c3RydWN0IGRldmljZSAqY29uZmlnX2ZvdW5kX3NtKHN0cnVjdCBkZXZpY2UgKiwgdm9pZCAqLCBj ZnByaW50X3QsIGNmbWF0Y2hfdCk7CnN0cnVjdCBkZXZpY2UgKmNvbmZpZ19yb290Zm91bmQoY29u c3QgY2hhciAqLCB2b2lkICopOwpzdHJ1Y3QgZGV2aWNlICpjb25maWdfYXR0YWNoKHN0cnVjdCBk ZXZpY2UgKiwgc3RydWN0IGNmZGF0YSAqLCB2b2lkICosCiAgICBjZnByaW50X3QpOwp2b2lkIGNv bmZpZ19tYWtlcm9vbShpbnQgbiwgc3RydWN0IGNmZHJpdmVyICpjZCk7CmludCBjb25maWdfZGV0 YWNoKHN0cnVjdCBkZXZpY2UgKiwgaW50KTsKaW50IGNvbmZpZ19hY3RpdmF0ZShzdHJ1Y3QgZGV2 aWNlICopOwppbnQgY29uZmlnX2RlYWN0aXZhdGUoc3RydWN0IGRldmljZSAqKTsKdm9pZCBjb25m aWdfZGVmZXIoc3RydWN0IGRldmljZSAqLCB2b2lkICgqKShzdHJ1Y3QgZGV2aWNlICopKTsKdm9p ZCBjb25maWdfaW50ZXJydXB0cyhzdHJ1Y3QgZGV2aWNlICosIHZvaWQgKCopKHN0cnVjdCBkZXZp Y2UgKikpOwp2b2lkIGNvbmZpZ19wZW5kaW5nX2luY3Iodm9pZCk7CnZvaWQgY29uZmlnX3BlbmRp bmdfZGVjcih2b2lkKTsKCgp2b2lkIGRldmljZV9yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICosIHZv aWQgKik7CgoKdm9pZCBldmNudF9hdHRhY2hfc3RhdGljKHN0cnVjdCBldmNudCAqKTsKdm9pZCBl dmNudF9hdHRhY2hfZHluYW1pYyhzdHJ1Y3QgZXZjbnQgKiwgaW50LCBjb25zdCBzdHJ1Y3QgZXZj bnQgKiwKICAgICAgICAgICAgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwp2b2lkIGV2Y250 X2RldGFjaChzdHJ1Y3QgZXZjbnQgKik7CiMgOTAgImFtNzk5MC5jIiAyCgoKCgoKCgojIDEgIi4u Ly4uLy4uLy4uL25ldC9pZi5oIiAxCiMgODAgIi4uLy4uLy4uLy4uL25ldC9pZi5oIgojIDEgIi4u Ly4uLy4uLy4uL25ldC9kbHQuaCIgMQojIDgxICIuLi8uLi8uLi8uLi9uZXQvaWYuaCIgMgojIDEg Ii4uLy4uLy4uLy4uL25ldC9wZmlsLmgiIDEKIyAzOCAiLi4vLi4vLi4vLi4vbmV0L3BmaWwuaCIK c3RydWN0IG1idWY7CnN0cnVjdCBpZm5ldDsKCgoKCgpzdHJ1Y3QgcGFja2V0X2ZpbHRlcl9ob29r IHsKICAgICAgICBzdHJ1Y3QgeyBzdHJ1Y3QgcGFja2V0X2ZpbHRlcl9ob29rICp0cWVfbmV4dDsg c3RydWN0IHBhY2tldF9maWx0ZXJfaG9vayAqKnRxZV9wcmV2OyB9IHBmaWxfbGluazsKICAgICAg ICBpbnQgKCpwZmlsX2Z1bmMpKHZvaWQgKiwgc3RydWN0IG1idWYgKiosIHN0cnVjdCBpZm5ldCAq LCBpbnQpOwogICAgICAgIHZvaWQgKnBmaWxfYXJnOwogICAgICAgIGludCBwZmlsX2ZsYWdzOwp9 OwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBwZmlsX2xpc3QgeyBzdHJ1Y3QgcGFja2V0X2ZpbHRlcl9o b29rICp0cWhfZmlyc3Q7IHN0cnVjdCBwYWNrZXRfZmlsdGVyX2hvb2sgKip0cWhfbGFzdDsgfSBw ZmlsX2xpc3RfdDsKCgoKCnN0cnVjdCBwZmlsX2hlYWQgewogICAgICAgIHBmaWxfbGlzdF90IHBo X2luOwogICAgICAgIHBmaWxfbGlzdF90IHBoX291dDsKICAgICAgICBpbnQgcGhfdHlwZTsKICAg ICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICB1X2xvbmcgcGh1X3ZhbDsKICAgICAgICAgICAg ICAgIHZvaWQgKnBodV9wdHI7CiAgICAgICAgfSBwaF91bjsKCgogICAgICAgIHN0cnVjdCB7IHN0 cnVjdCBwZmlsX2hlYWQgKmxlX25leHQ7IHN0cnVjdCBwZmlsX2hlYWQgKipsZV9wcmV2OyB9IHBo X2xpc3Q7Cn07CnR5cGVkZWYgc3RydWN0IHBmaWxfaGVhZCBwZmlsX2hlYWRfdDsKCmludCBwZmls X3J1bl9ob29rcyhzdHJ1Y3QgcGZpbF9oZWFkICosIHN0cnVjdCBtYnVmICoqLCBzdHJ1Y3QgaWZu ZXQgKiwKICAgICAgICAgICAgaW50KTsKCmludCBwZmlsX2FkZF9ob29rKGludCAoKmZ1bmMpKHZv aWQgKiwgc3RydWN0IG1idWYgKiosCiAgICAgICAgICAgIHN0cnVjdCBpZm5ldCAqLCBpbnQpLCB2 b2lkICosIGludCwgc3RydWN0IHBmaWxfaGVhZCAqKTsKaW50IHBmaWxfcmVtb3ZlX2hvb2soaW50 ICgqZnVuYykodm9pZCAqLCBzdHJ1Y3QgbWJ1ZiAqKiwKICAgICAgICAgICAgc3RydWN0IGlmbmV0 ICosIGludCksIHZvaWQgKiwgaW50LCBzdHJ1Y3QgcGZpbF9oZWFkICopOwoKaW50IHBmaWxfaGVh ZF9yZWdpc3RlcihzdHJ1Y3QgcGZpbF9oZWFkICopOwppbnQgcGZpbF9oZWFkX3VucmVnaXN0ZXIo c3RydWN0IHBmaWxfaGVhZCAqKTsKCnN0cnVjdCBwZmlsX2hlYWQgKnBmaWxfaGVhZF9nZXQoaW50 LCB1X2xvbmcpOwoKc3RhdGljIF9faW5saW5lIHN0cnVjdCBwYWNrZXRfZmlsdGVyX2hvb2sgKgpw ZmlsX2hvb2tfZ2V0KGludCBkaXIsIHN0cnVjdCBwZmlsX2hlYWQgKnBoKQp7CgogICAgICAgIGlm IChkaXIgPT0gMHgwMDAwMDAwMSkKICAgICAgICAgICAgICAgIHJldHVybiAoKCgmcGgtPnBoX2lu KS0+dHFoX2ZpcnN0KSk7CiAgICAgICAgZWxzZSBpZiAoZGlyID09IDB4MDAwMDAwMDIpCiAgICAg ICAgICAgICAgICByZXR1cm4gKCgoJnBoLT5waF9vdXQpLT50cWhfZmlyc3QpKTsKICAgICAgICBl bHNlCiAgICAgICAgICAgICAgICByZXR1cm4gKDApOwp9CgoKCiMgMSAiaXBmaWx0ZXIuaCIgMQoj IDEwNCAiLi4vLi4vLi4vLi4vbmV0L3BmaWwuaCIgMgojIDgyICIuLi8uLi8uLi8uLi9uZXQvaWYu aCIgMgoKCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9hbHRxL2lmX2FsdHEuaCIgMQojIDMzICIuLi8u Li8uLi8uLi9hbHRxL2lmX2FsdHEuaCIKIyAxICIuLi8uLi8uLi8uLi9hbHRxL2FsdHFjb25mLmgi IDEKCgoKIyAxICJvcHRfYWx0cV9lbmFibGVkLmgiIDEKIyA1ICIuLi8uLi8uLi8uLi9hbHRxL2Fs dHFjb25mLmgiIDIKCiMgMSAiLi4vLi4vLi4vLi4vc3lzL2NvbmYuaCIgMQojIDUwICIuLi8uLi8u Li8uLi9zeXMvY29uZi5oIgpzdHJ1Y3QgYnVmOwpzdHJ1Y3QgcHJvYzsKc3RydWN0IHR0eTsKc3Ry dWN0IHVpbzsKc3RydWN0IHZub2RlOwojIDgxICIuLi8uLi8uLi8uLi9zeXMvY29uZi5oIgpzdHJ1 Y3QgYmRldnN3IHsKICAgICAgICBpbnQgKCpkX29wZW4pIChkZXZfdCBkZXYsIGludCBvZmxhZ3Ms IGludCBkZXZ0eXBlLCBzdHJ1Y3QgcHJvYyAqcCk7CgogICAgICAgIGludCAoKmRfY2xvc2UpIChk ZXZfdCBkZXYsIGludCBmZmxhZywgaW50IGRldnR5cGUsIHN0cnVjdCBwcm9jICpwKTsKCiAgICAg ICAgdm9pZCAoKmRfc3RyYXRlZ3kpIChzdHJ1Y3QgYnVmICpicCk7CiAgICAgICAgaW50ICgqZF9p b2N0bCkgKGRldl90IGRldiwgdV9sb25nIGNtZCwgX19jYWRkcl90IGRhdGEsIGludCBmZmxhZywg c3RydWN0IHByb2MgKnApOwoKICAgICAgICBpbnQgKCpkX2R1bXApIChkZXZfdCBkZXYsIGRhZGRy X3QgYmxrbm8sIF9fY2FkZHJfdCB2YSwgc2l6ZV90IHNpemUpOwoKICAgICAgICBpbnQgKCpkX3Bz aXplKSAoZGV2X3QgZGV2KTsKICAgICAgICBpbnQgZF90eXBlOwp9OwoKCgpleHRlcm4gc3RydWN0 IGJkZXZzdyBiZGV2c3dbXTsKIyAxNDQgIi4uLy4uLy4uLy4uL3N5cy9jb25mLmgiCnN0cnVjdCBj ZGV2c3cgewogICAgICAgIGludCAoKmRfb3BlbikgKGRldl90IGRldiwgaW50IG9mbGFncywgaW50 IGRldnR5cGUsIHN0cnVjdCBwcm9jICpwKTsKCiAgICAgICAgaW50ICgqZF9jbG9zZSkgKGRldl90 IGRldiwgaW50IGZmbGFnLCBpbnQgZGV2dHlwZSwgc3RydWN0IHByb2MgKik7CgogICAgICAgIGlu dCAoKmRfcmVhZCkgKGRldl90IGRldiwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKTsKICAg ICAgICBpbnQgKCpkX3dyaXRlKSAoZGV2X3QgZGV2LCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2Zs YWcpOwogICAgICAgIGludCAoKmRfaW9jdGwpIChkZXZfdCBkZXYsIHVfbG9uZyBjbWQsIF9fY2Fk ZHJfdCBkYXRhLCBpbnQgZmZsYWcsIHN0cnVjdCBwcm9jICpwKTsKCiAgICAgICAgdm9pZCAoKmRf c3RvcCkgKHN0cnVjdCB0dHkgKnRwLCBpbnQgcncpOwogICAgICAgIHN0cnVjdCB0dHkgKgogICAg ICAgICAgICAgICAgKCpkX3R0eSkgKGRldl90IGRldik7CiAgICAgICAgaW50ICgqZF9wb2xsKSAo ZGV2X3QgZGV2LCBpbnQgZXZlbnRzLCBzdHJ1Y3QgcHJvYyAqcCk7CiAgICAgICAgcGFkZHJfdCAo KmRfbW1hcCkgKGRldl90LCBfX29mZl90LCBpbnQpOwogICAgICAgIGludCBkX3R5cGU7Cn07CgoK CmV4dGVybiBzdHJ1Y3QgY2RldnN3IGNkZXZzd1tdOwojIDQ2NyAiLi4vLi4vLi4vLi4vc3lzL2Nv bmYuaCIKZXh0ZXJuIGNvbnN0IGNoYXIgZGV2b3BuW10sIGRldmlvW10sIGRldndhaXRbXSwgZGV2 aW5bXSwgZGV2b3V0W107CmV4dGVybiBjb25zdCBjaGFyIGRldmlvY1tdLCBkZXZjbHNbXTsKCgoK CgoKc3RydWN0IGxpbmVzdyB7CiAgICAgICAgY2hhciAqbF9uYW1lOwogICAgICAgIGludCBsX25v OwoKICAgICAgICBpbnQgKCpsX29wZW4pIChkZXZfdCBkZXYsIHN0cnVjdCB0dHkgKnRwKTsKICAg ICAgICBpbnQgKCpsX2Nsb3NlKSAoc3RydWN0IHR0eSAqdHAsIGludCBmbGFncyk7CiAgICAgICAg aW50ICgqbF9yZWFkKSAoc3RydWN0IHR0eSAqdHAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGZsYWcp OwoKICAgICAgICBpbnQgKCpsX3dyaXRlKSAoc3RydWN0IHR0eSAqdHAsIHN0cnVjdCB1aW8gKnVp bywgaW50IGZsYWcpOwoKICAgICAgICBpbnQgKCpsX2lvY3RsKSAoc3RydWN0IHR0eSAqdHAsIHVf bG9uZyBjbWQsIF9fY2FkZHJfdCBkYXRhLCBpbnQgZmxhZywgc3RydWN0IHByb2MgKnApOwoKICAg ICAgICBpbnQgKCpsX3JpbnQpIChpbnQgYywgc3RydWN0IHR0eSAqdHApOwogICAgICAgIGludCAo Kmxfc3RhcnQpIChzdHJ1Y3QgdHR5ICp0cCk7CiAgICAgICAgaW50ICgqbF9tb2RlbSkgKHN0cnVj dCB0dHkgKnRwLCBpbnQgZmxhZyk7CiAgICAgICAgaW50ICgqbF9wb2xsKSAoc3RydWN0IHR0eSAq dHAsIGludCBldmVudHMsIHN0cnVjdCBwcm9jICpwKTsKCn07CgoKZXh0ZXJuIHN0cnVjdCBsaW5l c3cgKipsaW5lc3c7CmV4dGVybiBpbnQgbmxpbmVzdzsKZXh0ZXJuIHZvaWQgdHR5bGRpc2NfaW5p dCAodm9pZCk7CmludCB0dHlsZGlzY19hZGQgKHN0cnVjdCBsaW5lc3cgKmRpc2MsIGludCBubyk7 CnN0cnVjdCBsaW5lc3cgKnR0eWxkaXNjX3JlbW92ZSAoY2hhciAqbmFtZSk7CnN0cnVjdCBsaW5l c3cgKnR0eWxkaXNjX2xvb2t1cCAoY2hhciAqbmFtZSk7CiMgNTEwICIuLi8uLi8uLi8uLi9zeXMv Y29uZi5oIgppbnQgbnVsbGlvY3RsIChzdHJ1Y3QgdHR5ICosIHVfbG9uZywgX19jYWRkcl90LCBp bnQsIHN0cnVjdCBwcm9jICopOwoKCgoKCnN0cnVjdCBzd2RldnQgewogICAgICAgIGRldl90IHN3 X2RldjsKICAgICAgICBpbnQgc3dfZmxhZ3M7CiAgICAgICAgaW50IHN3X25ibGtzOwogICAgICAg IHN0cnVjdCB2bm9kZSAqc3dfdnA7Cn07CgoKCgoKZXh0ZXJuIHN0cnVjdCBzd2RldnQgc3dkZXZ0 W107CgpkZXZfdCBjaHJ0b2JsayAoZGV2X3QpOwppbnQgaXNrbWVtZGV2IChkZXZfdCk7CmludCBp c3plcm9kZXYgKGRldl90KTsKCgoKCmludCBjbm9wZW4gKGRldl90LCBpbnQsIGludCwgc3RydWN0 IHByb2MgKik7IGludCBjbmNsb3NlIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyBp bnQgY25yZWFkIChkZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgY253cml0ZSAoZGV2X3Qs IHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IGNuaW9jdGwgKGRldl90LCB1X2xvbmcsIF9fY2FkZHJf dCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgdm9pZCBjbnN0b3AgKHN0cnVjdCB0dHkgKiwgaW50KTsg c3RydWN0IHR0eSAqY250dHkgKGRldl90KTsgaW50IGNucG9sbCAoZGV2X3QsIGludCwgc3RydWN0 IHByb2MgKik7IHBhZGRyX3QgY25tbWFwIChkZXZfdCwgX19vZmZfdCwgaW50KTsKCmludCBjdHR5 b3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IGN0dHljbG9zZSAoZGV2 X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IGN0dHlyZWFkIChkZXZfdCwgc3RydWN0 IHVpbyAqLCBpbnQpOyBpbnQgY3R0eXdyaXRlIChkZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBp bnQgY3R0eWlvY3RsIChkZXZfdCwgdV9sb25nLCBfX2NhZGRyX3QsIGludCwgc3RydWN0IHByb2Mg Kik7IHZvaWQgY3R0eXN0b3AgKHN0cnVjdCB0dHkgKiwgaW50KTsgc3RydWN0IHR0eSAqY3R0eXR0 eSAoZGV2X3QpOyBpbnQgY3R0eXBvbGwgKGRldl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyBwYWRk cl90IGN0dHltbWFwIChkZXZfdCwgX19vZmZfdCwgaW50KTsKCgoKaW50IHB0Y29wZW4gKGRldl90 LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBwdGNjbG9zZSAoZGV2X3QsIGludCwgaW50 LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IHB0Y3JlYWQgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7 IGludCBwdGN3cml0ZSAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IHB0eWlvY3RsIChk ZXZfdCwgdV9sb25nLCBfX2NhZGRyX3QsIGludCwgc3RydWN0IHByb2MgKik7IHZvaWQgcHRjc3Rv cCAoc3RydWN0IHR0eSAqLCBpbnQpOyBzdHJ1Y3QgdHR5ICpwdHl0dHkgKGRldl90KTsgaW50IHB0 Y3BvbGwgKGRldl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyBwYWRkcl90IHB0Y21tYXAgKGRldl90 LCBfX29mZl90LCBpbnQpOwoKCgppbnQgcHRzb3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3Qg cHJvYyAqKTsgaW50IHB0c2Nsb3NlIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyBp bnQgcHRzcmVhZCAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IHB0c3dyaXRlIChkZXZf dCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgcHR5aW9jdGwgKGRldl90LCB1X2xvbmcsIF9fY2Fk ZHJfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgdm9pZCBwdHNzdG9wIChzdHJ1Y3QgdHR5ICosIGlu dCk7IHN0cnVjdCB0dHkgKnB0eXR0eSAoZGV2X3QpOyBpbnQgcHRzcG9sbCAoZGV2X3QsIGludCwg c3RydWN0IHByb2MgKik7IHBhZGRyX3QgcHRzbW1hcCAoZGV2X3QsIF9fb2ZmX3QsIGludCk7CgoK CmludCBtbW9wZW4gKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBtbWNsb3Nl IChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyBpbnQgbW1ydyAoZGV2X3QsIHN0cnVj dCB1aW8gKiwgaW50KTsgaW50IG1tcncgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCBt bWlvY3RsIChkZXZfdCwgdV9sb25nLCBfX2NhZGRyX3QsIGludCwgc3RydWN0IHByb2MgKik7IHZv aWQgbW1zdG9wIChzdHJ1Y3QgdHR5ICosIGludCk7IHN0cnVjdCB0dHkgKm1tdHR5IChkZXZfdCk7 IGludCBtbXBvbGwgKGRldl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyBwYWRkcl90IG1tbW1hcCAo ZGV2X3QsIF9fb2ZmX3QsIGludCk7CiMgNTY0ICIuLi8uLi8uLi8uLi9zeXMvY29uZi5oIgppbnQg Y2Nkb3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IGNjZGNsb3NlIChk ZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIGNjZHN0cmF0ZWd5IChzdHJ1Y3Qg YnVmICopOyBpbnQgY2NkaW9jdGwgKGRldl90LCB1X2xvbmcsIF9fY2FkZHJfdCwgaW50LCBzdHJ1 Y3QgcHJvYyAqKTsgaW50IGNjZGR1bXAgKGRldl90LCBkYWRkcl90LCBfX2NhZGRyX3QsIHNpemVf dCk7IGludCBjY2RzaXplIChkZXZfdCk7CmludCBjY2RvcGVuIChkZXZfdCwgaW50LCBpbnQsIHN0 cnVjdCBwcm9jICopOyBpbnQgY2NkY2xvc2UgKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2Mg Kik7IGludCBjY2RyZWFkIChkZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgY2Nkd3JpdGUg KGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCBjY2Rpb2N0bCAoZGV2X3QsIHVfbG9uZywg X19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIGNjZHN0b3AgKHN0cnVjdCB0dHkg KiwgaW50KTsgc3RydWN0IHR0eSAqY2NkdHR5IChkZXZfdCk7IGludCBjY2Rwb2xsIChkZXZfdCwg aW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCBjY2RtbWFwIChkZXZfdCwgX19vZmZfdCwgaW50 KTsKCmludCBtZG9wZW4gKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBtZGNs b3NlIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIG1kc3RyYXRlZ3kgKHN0 cnVjdCBidWYgKik7IGludCBtZGlvY3RsIChkZXZfdCwgdV9sb25nLCBfX2NhZGRyX3QsIGludCwg c3RydWN0IHByb2MgKik7IGludCBtZGR1bXAgKGRldl90LCBkYWRkcl90LCBfX2NhZGRyX3QsIHNp emVfdCk7IGludCBtZHNpemUgKGRldl90KTsKaW50IG1kb3BlbiAoZGV2X3QsIGludCwgaW50LCBz dHJ1Y3QgcHJvYyAqKTsgaW50IG1kY2xvc2UgKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2Mg Kik7IGludCBtZHJlYWQgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCBtZHdyaXRlIChk ZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgbWRpb2N0bCAoZGV2X3QsIHVfbG9uZywgX19j YWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIG1kc3RvcCAoc3RydWN0IHR0eSAqLCBp bnQpOyBzdHJ1Y3QgdHR5ICptZHR0eSAoZGV2X3QpOyBpbnQgbWRwb2xsIChkZXZfdCwgaW50LCBz dHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCBtZG1tYXAgKGRldl90LCBfX29mZl90LCBpbnQpOwoKaW50 IHJhaWRvcGVuIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyBpbnQgcmFpZGNsb3Nl IChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIHJhaWRzdHJhdGVneSAoc3Ry dWN0IGJ1ZiAqKTsgaW50IHJhaWRpb2N0bCAoZGV2X3QsIHVfbG9uZywgX19jYWRkcl90LCBpbnQs IHN0cnVjdCBwcm9jICopOyBpbnQgcmFpZGR1bXAgKGRldl90LCBkYWRkcl90LCBfX2NhZGRyX3Qs IHNpemVfdCk7IGludCByYWlkc2l6ZSAoZGV2X3QpOwppbnQgcmFpZG9wZW4gKGRldl90LCBpbnQs IGludCwgc3RydWN0IHByb2MgKik7IGludCByYWlkY2xvc2UgKGRldl90LCBpbnQsIGludCwgc3Ry dWN0IHByb2MgKik7IGludCByYWlkcmVhZCAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50 IHJhaWR3cml0ZSAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IHJhaWRpb2N0bCAoZGV2 X3QsIHVfbG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIHJhaWRzdG9w IChzdHJ1Y3QgdHR5ICosIGludCk7IHN0cnVjdCB0dHkgKnJhaWR0dHkgKGRldl90KTsgaW50IHJh aWRwb2xsIChkZXZfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCByYWlkbW1hcCAoZGV2 X3QsIF9fb2ZmX3QsIGludCk7CgppbnQgdm5kb3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3Qg cHJvYyAqKTsgaW50IHZuZGNsb3NlIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2 b2lkIHZuZHN0cmF0ZWd5IChzdHJ1Y3QgYnVmICopOyBpbnQgdm5kaW9jdGwgKGRldl90LCB1X2xv bmcsIF9fY2FkZHJfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IHZuZGR1bXAgKGRldl90LCBk YWRkcl90LCBfX2NhZGRyX3QsIHNpemVfdCk7IGludCB2bmRzaXplIChkZXZfdCk7CmludCB2bmRv cGVuIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyBpbnQgdm5kY2xvc2UgKGRldl90 LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCB2bmRyZWFkIChkZXZfdCwgc3RydWN0IHVp byAqLCBpbnQpOyBpbnQgdm5kd3JpdGUgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCB2 bmRpb2N0bCAoZGV2X3QsIHVfbG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2 b2lkIHZuZHN0b3AgKHN0cnVjdCB0dHkgKiwgaW50KTsgc3RydWN0IHR0eSAqdm5kdHR5IChkZXZf dCk7IGludCB2bmRwb2xsIChkZXZfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCB2bmRt bWFwIChkZXZfdCwgX19vZmZfdCwgaW50KTsKCgoKCmludCBjZG9wZW4gKGRldl90LCBpbnQsIGlu dCwgc3RydWN0IHByb2MgKik7IGludCBjZGNsb3NlIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBw cm9jICopOyB2b2lkIGNkc3RyYXRlZ3kgKHN0cnVjdCBidWYgKik7IGludCBjZGlvY3RsIChkZXZf dCwgdV9sb25nLCBfX2NhZGRyX3QsIGludCwgc3RydWN0IHByb2MgKik7IGludCBjZGR1bXAgKGRl dl90LCBkYWRkcl90LCBfX2NhZGRyX3QsIHNpemVfdCk7IGludCBjZHNpemUgKGRldl90KTsKaW50 IGNkb3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IGNkY2xvc2UgKGRl dl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBjZHJlYWQgKGRldl90LCBzdHJ1Y3Qg dWlvICosIGludCk7IGludCBjZHdyaXRlIChkZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQg Y2Rpb2N0bCAoZGV2X3QsIHVfbG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2 b2lkIGNkc3RvcCAoc3RydWN0IHR0eSAqLCBpbnQpOyBzdHJ1Y3QgdHR5ICpjZHR0eSAoZGV2X3Qp OyBpbnQgY2Rwb2xsIChkZXZfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCBjZG1tYXAg KGRldl90LCBfX29mZl90LCBpbnQpOwoKaW50IGNob3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1 Y3QgcHJvYyAqKTsgaW50IGNoY2xvc2UgKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7 IGludCBjaHJlYWQgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCBjaHdyaXRlIChkZXZf dCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgY2hpb2N0bCAoZGV2X3QsIHVfbG9uZywgX19jYWRk cl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIGNoc3RvcCAoc3RydWN0IHR0eSAqLCBpbnQp OyBzdHJ1Y3QgdHR5ICpjaHR0eSAoZGV2X3QpOyBpbnQgY2hwb2xsIChkZXZfdCwgaW50LCBzdHJ1 Y3QgcHJvYyAqKTsgcGFkZHJfdCBjaG1tYXAgKGRldl90LCBfX29mZl90LCBpbnQpOwoKaW50IHNk b3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IHNkY2xvc2UgKGRldl90 LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IHZvaWQgc2RzdHJhdGVneSAoc3RydWN0IGJ1ZiAq KTsgaW50IHNkaW9jdGwgKGRldl90LCB1X2xvbmcsIF9fY2FkZHJfdCwgaW50LCBzdHJ1Y3QgcHJv YyAqKTsgaW50IHNkZHVtcCAoZGV2X3QsIGRhZGRyX3QsIF9fY2FkZHJfdCwgc2l6ZV90KTsgaW50 IHNkc2l6ZSAoZGV2X3QpOwppbnQgc2RvcGVuIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9j ICopOyBpbnQgc2RjbG9zZSAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IHNk cmVhZCAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IHNkd3JpdGUgKGRldl90LCBzdHJ1 Y3QgdWlvICosIGludCk7IGludCBzZGlvY3RsIChkZXZfdCwgdV9sb25nLCBfX2NhZGRyX3QsIGlu dCwgc3RydWN0IHByb2MgKik7IHZvaWQgc2RzdG9wIChzdHJ1Y3QgdHR5ICosIGludCk7IHN0cnVj dCB0dHkgKnNkdHR5IChkZXZfdCk7IGludCBzZHBvbGwgKGRldl90LCBpbnQsIHN0cnVjdCBwcm9j ICopOyBwYWRkcl90IHNkbW1hcCAoZGV2X3QsIF9fb2ZmX3QsIGludCk7CgoKaW50IHNlb3BlbiAo ZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IHNlY2xvc2UgKGRldl90LCBpbnQs IGludCwgc3RydWN0IHByb2MgKik7IGludCBzZWlvY3RsIChkZXZfdCwgdV9sb25nLCBfX2NhZGRy X3QsIGludCwgc3RydWN0IHByb2MgKik7CgppbnQgc3RvcGVuIChkZXZfdCwgaW50LCBpbnQsIHN0 cnVjdCBwcm9jICopOyBpbnQgc3RjbG9zZSAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAq KTsgdm9pZCBzdHN0cmF0ZWd5IChzdHJ1Y3QgYnVmICopOyBpbnQgc3Rpb2N0bCAoZGV2X3QsIHVf bG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyBpbnQgc3RkdW1wIChkZXZfdCwg ZGFkZHJfdCwgX19jYWRkcl90LCBzaXplX3QpOyBpbnQgc3RzaXplIChkZXZfdCk7CmludCBzdG9w ZW4gKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBzdGNsb3NlIChkZXZfdCwg aW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyBpbnQgc3RyZWFkIChkZXZfdCwgc3RydWN0IHVpbyAq LCBpbnQpOyBpbnQgc3R3cml0ZSAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IHN0aW9j dGwgKGRldl90LCB1X2xvbmcsIF9fY2FkZHJfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgdm9pZCBz dHN0b3AgKHN0cnVjdCB0dHkgKiwgaW50KTsgc3RydWN0IHR0eSAqc3R0dHkgKGRldl90KTsgaW50 IHN0cG9sbCAoZGV2X3QsIGludCwgc3RydWN0IHByb2MgKik7IHBhZGRyX3Qgc3RtbWFwIChkZXZf dCwgX19vZmZfdCwgaW50KTsKCmludCBzc29wZW4gKGRldl90LCBpbnQsIGludCwgc3RydWN0IHBy b2MgKik7IGludCBzc2Nsb3NlIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lk IHNzc3RyYXRlZ3kgKHN0cnVjdCBidWYgKik7IGludCBzc2lvY3RsIChkZXZfdCwgdV9sb25nLCBf X2NhZGRyX3QsIGludCwgc3RydWN0IHByb2MgKik7IGludCBzc2R1bXAgKGRldl90LCBkYWRkcl90 LCBfX2NhZGRyX3QsIHNpemVfdCk7IGludCBzc3NpemUgKGRldl90KTsKaW50IHNzb3BlbiAoZGV2 X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IHNzY2xvc2UgKGRldl90LCBpbnQsIGlu dCwgc3RydWN0IHByb2MgKik7IGludCBzc3JlYWQgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7 IGludCBzc3dyaXRlIChkZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgc3Npb2N0bCAoZGV2 X3QsIHVfbG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIHNzc3RvcCAo c3RydWN0IHR0eSAqLCBpbnQpOyBzdHJ1Y3QgdHR5ICpzc3R0eSAoZGV2X3QpOyBpbnQgc3Nwb2xs IChkZXZfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCBzc21tYXAgKGRldl90LCBfX29m Zl90LCBpbnQpOwoKaW50IHVrb3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsg aW50IHVrY2xvc2UgKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IHZvaWQgdWtzdHJh dGVneSAoc3RydWN0IGJ1ZiAqKTsgaW50IHVraW9jdGwgKGRldl90LCB1X2xvbmcsIF9fY2FkZHJf dCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IHVrZHVtcCAoZGV2X3QsIGRhZGRyX3QsIF9fY2Fk ZHJfdCwgc2l6ZV90KTsgaW50IHVrc2l6ZSAoZGV2X3QpOwppbnQgdWtvcGVuIChkZXZfdCwgaW50 LCBpbnQsIHN0cnVjdCBwcm9jICopOyBpbnQgdWtjbG9zZSAoZGV2X3QsIGludCwgaW50LCBzdHJ1 Y3QgcHJvYyAqKTsgaW50IHVrcmVhZCAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IHVr d3JpdGUgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCB1a2lvY3RsIChkZXZfdCwgdV9s b25nLCBfX2NhZGRyX3QsIGludCwgc3RydWN0IHByb2MgKik7IHZvaWQgdWtzdG9wIChzdHJ1Y3Qg dHR5ICosIGludCk7IHN0cnVjdCB0dHkgKnVrdHR5IChkZXZfdCk7IGludCB1a3BvbGwgKGRldl90 LCBpbnQsIHN0cnVjdCBwcm9jICopOyBwYWRkcl90IHVrbW1hcCAoZGV2X3QsIF9fb2ZmX3QsIGlu dCk7CgoKCgppbnQgbGRvcGVuIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyBpbnQg bGRjbG9zZSAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgdm9pZCBsZHN0cmF0ZWd5 IChzdHJ1Y3QgYnVmICopOyBpbnQgbGRpb2N0bCAoZGV2X3QsIHVfbG9uZywgX19jYWRkcl90LCBp bnQsIHN0cnVjdCBwcm9jICopOyBpbnQgbGRkdW1wIChkZXZfdCwgZGFkZHJfdCwgX19jYWRkcl90 LCBzaXplX3QpOyBpbnQgbGRzaXplIChkZXZfdCk7CmludCBsZG9wZW4gKGRldl90LCBpbnQsIGlu dCwgc3RydWN0IHByb2MgKik7IGludCBsZGNsb3NlIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBw cm9jICopOyBpbnQgbGRyZWFkIChkZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgbGR3cml0 ZSAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IGxkaW9jdGwgKGRldl90LCB1X2xvbmcs IF9fY2FkZHJfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgdm9pZCBsZHN0b3AgKHN0cnVjdCB0dHkg KiwgaW50KTsgc3RydWN0IHR0eSAqbGR0dHkgKGRldl90KTsgaW50IGxkcG9sbCAoZGV2X3QsIGlu dCwgc3RydWN0IHByb2MgKik7IHBhZGRyX3QgbGRtbWFwIChkZXZfdCwgX19vZmZfdCwgaW50KTsK CgoKCmludCBia3Ryb3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IGJr dHJjbG9zZSAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IGJrdHJyZWFkIChk ZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgYmt0cndyaXRlIChkZXZfdCwgc3RydWN0IHVp byAqLCBpbnQpOyBpbnQgYmt0cmlvY3RsIChkZXZfdCwgdV9sb25nLCBfX2NhZGRyX3QsIGludCwg c3RydWN0IHByb2MgKik7IHZvaWQgYmt0cnN0b3AgKHN0cnVjdCB0dHkgKiwgaW50KTsgc3RydWN0 IHR0eSAqYmt0cnR0eSAoZGV2X3QpOyBpbnQgYmt0cnBvbGwgKGRldl90LCBpbnQsIHN0cnVjdCBw cm9jICopOyBwYWRkcl90IGJrdHJtbWFwIChkZXZfdCwgX19vZmZfdCwgaW50KTsKCgoKCmludCBi cGZvcGVuIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyBpbnQgYnBmY2xvc2UgKGRl dl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBicGZyZWFkIChkZXZfdCwgc3RydWN0 IHVpbyAqLCBpbnQpOyBpbnQgYnBmd3JpdGUgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGlu dCBicGZpb2N0bCAoZGV2X3QsIHVfbG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICop OyB2b2lkIGJwZnN0b3AgKHN0cnVjdCB0dHkgKiwgaW50KTsgc3RydWN0IHR0eSAqYnBmdHR5IChk ZXZfdCk7IGludCBicGZwb2xsIChkZXZfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCBi cGZtbWFwIChkZXZfdCwgX19vZmZfdCwgaW50KTsKCmludCBpcGxvcGVuIChkZXZfdCwgaW50LCBp bnQsIHN0cnVjdCBwcm9jICopOyBpbnQgaXBsY2xvc2UgKGRldl90LCBpbnQsIGludCwgc3RydWN0 IHByb2MgKik7IGludCBpcGxyZWFkIChkZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgaXBs d3JpdGUgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCBpcGxpb2N0bCAoZGV2X3QsIHVf bG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIGlwbHN0b3AgKHN0cnVj dCB0dHkgKiwgaW50KTsgc3RydWN0IHR0eSAqaXBsdHR5IChkZXZfdCk7IGludCBpcGxwb2xsIChk ZXZfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCBpcGxtbWFwIChkZXZfdCwgX19vZmZf dCwgaW50KTsKCgoKCgoKaW50IHN2cjRfbmV0b3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3Qg cHJvYyAqKTsgaW50IHN2cjRfbmV0Y2xvc2UgKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2Mg Kik7IGludCBzdnI0X25ldHJlYWQgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCBzdnI0 X25ldHdyaXRlIChkZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgc3ZyNF9uZXRpb2N0bCAo ZGV2X3QsIHVfbG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIHN2cjRf bmV0c3RvcCAoc3RydWN0IHR0eSAqLCBpbnQpOyBzdHJ1Y3QgdHR5ICpzdnI0X25ldHR0eSAoZGV2 X3QpOyBpbnQgc3ZyNF9uZXRwb2xsIChkZXZfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJf dCBzdnI0X25ldG1tYXAgKGRldl90LCBfX29mZl90LCBpbnQpOwoKaW50IHR1bm9wZW4gKGRldl90 LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCB0dW5jbG9zZSAoZGV2X3QsIGludCwgaW50 LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IHR1bnJlYWQgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7 IGludCB0dW53cml0ZSAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IHR1bmlvY3RsIChk ZXZfdCwgdV9sb25nLCBfX2NhZGRyX3QsIGludCwgc3RydWN0IHByb2MgKik7IHZvaWQgdHVuc3Rv cCAoc3RydWN0IHR0eSAqLCBpbnQpOyBzdHJ1Y3QgdHR5ICp0dW50dHkgKGRldl90KTsgaW50IHR1 bnBvbGwgKGRldl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyBwYWRkcl90IHR1bm1tYXAgKGRldl90 LCBfX29mZl90LCBpbnQpOwoKCgoKaW50IGF1ZGlvb3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1 Y3QgcHJvYyAqKTsgaW50IGF1ZGlvY2xvc2UgKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2Mg Kik7IGludCBhdWRpb3JlYWQgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCBhdWRpb3dy aXRlIChkZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgYXVkaW9pb2N0bCAoZGV2X3QsIHVf bG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIGF1ZGlvc3RvcCAoc3Ry dWN0IHR0eSAqLCBpbnQpOyBzdHJ1Y3QgdHR5ICphdWRpb3R0eSAoZGV2X3QpOyBpbnQgYXVkaW9w b2xsIChkZXZfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCBhdWRpb21tYXAgKGRldl90 LCBfX29mZl90LCBpbnQpOwppbnQgbWlkaW9wZW4gKGRldl90LCBpbnQsIGludCwgc3RydWN0IHBy b2MgKik7IGludCBtaWRpY2xvc2UgKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGlu dCBtaWRpcmVhZCAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IG1pZGl3cml0ZSAoZGV2 X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IG1pZGlpb2N0bCAoZGV2X3QsIHVfbG9uZywgX19j YWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIG1pZGlzdG9wIChzdHJ1Y3QgdHR5ICos IGludCk7IHN0cnVjdCB0dHkgKm1pZGl0dHkgKGRldl90KTsgaW50IG1pZGlwb2xsIChkZXZfdCwg aW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCBtaWRpbW1hcCAoZGV2X3QsIF9fb2ZmX3QsIGlu dCk7CmludCBzZXF1ZW5jZXJvcGVuIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyBp bnQgc2VxdWVuY2VyY2xvc2UgKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBz ZXF1ZW5jZXJyZWFkIChkZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgc2VxdWVuY2Vyd3Jp dGUgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCBzZXF1ZW5jZXJpb2N0bCAoZGV2X3Qs IHVfbG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIHNlcXVlbmNlcnN0 b3AgKHN0cnVjdCB0dHkgKiwgaW50KTsgc3RydWN0IHR0eSAqc2VxdWVuY2VydHR5IChkZXZfdCk7 IGludCBzZXF1ZW5jZXJwb2xsIChkZXZfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCBz ZXF1ZW5jZXJtbWFwIChkZXZfdCwgX19vZmZfdCwgaW50KTsKCmludCBmaWxlZGVzY29wZW4gKGRl dl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBmaWxlZGVzY2Nsb3NlIChkZXZfdCwg aW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyBpbnQgZmlsZWRlc2NyZWFkIChkZXZfdCwgc3RydWN0 IHVpbyAqLCBpbnQpOyBpbnQgZmlsZWRlc2N3cml0ZSAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50 KTsgaW50IGZpbGVkZXNjaW9jdGwgKGRldl90LCB1X2xvbmcsIF9fY2FkZHJfdCwgaW50LCBzdHJ1 Y3QgcHJvYyAqKTsgdm9pZCBmaWxlZGVzY3N0b3AgKHN0cnVjdCB0dHkgKiwgaW50KTsgc3RydWN0 IHR0eSAqZmlsZWRlc2N0dHkgKGRldl90KTsgaW50IGZpbGVkZXNjcG9sbCAoZGV2X3QsIGludCwg c3RydWN0IHByb2MgKik7IHBhZGRyX3QgZmlsZWRlc2NtbWFwIChkZXZfdCwgX19vZmZfdCwgaW50 KTsKCgoKCgoKaW50IGxrbW9wZW4gKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGlu dCBsa21jbG9zZSAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IGxrbXJlYWQg KGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCBsa213cml0ZSAoZGV2X3QsIHN0cnVjdCB1 aW8gKiwgaW50KTsgaW50IGxrbWlvY3RsIChkZXZfdCwgdV9sb25nLCBfX2NhZGRyX3QsIGludCwg c3RydWN0IHByb2MgKik7IHZvaWQgbGttc3RvcCAoc3RydWN0IHR0eSAqLCBpbnQpOyBzdHJ1Y3Qg dHR5ICpsa210dHkgKGRldl90KTsgaW50IGxrbXBvbGwgKGRldl90LCBpbnQsIHN0cnVjdCBwcm9j ICopOyBwYWRkcl90IGxrbW1tYXAgKGRldl90LCBfX29mZl90LCBpbnQpOwoKaW50IGxvZ29wZW4g KGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBsb2djbG9zZSAoZGV2X3QsIGlu dCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IGxvZ3JlYWQgKGRldl90LCBzdHJ1Y3QgdWlvICos IGludCk7IGludCBsb2d3cml0ZSAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IGxvZ2lv Y3RsIChkZXZfdCwgdV9sb25nLCBfX2NhZGRyX3QsIGludCwgc3RydWN0IHByb2MgKik7IHZvaWQg bG9nc3RvcCAoc3RydWN0IHR0eSAqLCBpbnQpOyBzdHJ1Y3QgdHR5ICpsb2d0dHkgKGRldl90KTsg aW50IGxvZ3BvbGwgKGRldl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyBwYWRkcl90IGxvZ21tYXAg KGRldl90LCBfX29mZl90LCBpbnQpOwoKaW50IHJuZG9wZW4gKGRldl90LCBpbnQsIGludCwgc3Ry dWN0IHByb2MgKik7IGludCBybmRjbG9zZSAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAq KTsgaW50IHJuZHJlYWQgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCBybmR3cml0ZSAo ZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IHJuZGlvY3RsIChkZXZfdCwgdV9sb25nLCBf X2NhZGRyX3QsIGludCwgc3RydWN0IHByb2MgKik7IHZvaWQgcm5kc3RvcCAoc3RydWN0IHR0eSAq LCBpbnQpOyBzdHJ1Y3QgdHR5ICpybmR0dHkgKGRldl90KTsgaW50IHJuZHBvbGwgKGRldl90LCBp bnQsIHN0cnVjdCBwcm9jICopOyBwYWRkcl90IHJuZG1tYXAgKGRldl90LCBfX29mZl90LCBpbnQp OwojIDY1MyAiLi4vLi4vLi4vLi4vc3lzL2NvbmYuaCIKc3RydWN0IGRldm5hbWV0b2JkZXZtYWog ewogICAgICAgIGNvbnN0IGNoYXIgKmRfbmFtZTsKICAgICAgICBpbnQgZF9tYWo7Cn07CgoKZXh0 ZXJuIHN0cnVjdCBkZXZuYW1ldG9iZGV2bWFqIGRldl9uYW1lMmJsa1tdOwpzdHJ1Y3QgZGV2aWNl Owp2b2lkIHNldHJvb3QgKHN0cnVjdCBkZXZpY2UgKiwgaW50KTsKdm9pZCBzd2FwY29uZiAodm9p ZCk7CiMgNyAiLi4vLi4vLi4vLi4vYWx0cS9hbHRxY29uZi5oIiAyCgoKCgoKCgppbnQgYWx0cW9w ZW4gKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBhbHRxY2xvc2UgKGRldl90 LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBhbHRxcmVhZCAoZGV2X3QsIHN0cnVjdCB1 aW8gKiwgaW50KTsgaW50IGFsdHF3cml0ZSAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50 IGFsdHFpb2N0bCAoZGV2X3QsIHVfbG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICop OyB2b2lkIGFsdHFzdG9wIChzdHJ1Y3QgdHR5ICosIGludCk7IHN0cnVjdCB0dHkgKmFsdHF0dHkg KGRldl90KTsgaW50IGFsdHFwb2xsIChkZXZfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJf dCBhbHRxbW1hcCAoZGV2X3QsIF9fb2ZmX3QsIGludCk7CiMgMzQgIi4uLy4uLy4uLy4uL2FsdHEv aWZfYWx0cS5oIiAyCgoKc3RydWN0IGFsdHFfcGt0YXR0cjsgc3RydWN0IHRiX3JlZ3VsYXRvcjsg c3RydWN0IHRvcF9jZG5yOwoKCgoKc3RydWN0IGlmYWx0cSB7CgogICAgICAgIHN0cnVjdCBtYnVm ICppZnFfaGVhZDsKICAgICAgICBzdHJ1Y3QgbWJ1ZiAqaWZxX3RhaWw7CiAgICAgICAgaW50IGlm cV9sZW47CiAgICAgICAgaW50IGlmcV9tYXhsZW47CiAgICAgICAgaW50IGlmcV9kcm9wczsKCgog ICAgICAgIGludCBhbHRxX3R5cGU7CiAgICAgICAgaW50IGFsdHFfZmxhZ3M7CiAgICAgICAgdm9p ZCAqYWx0cV9kaXNjOwogICAgICAgIHN0cnVjdCBpZm5ldCAqYWx0cV9pZnA7CgogICAgICAgIGlu dCAoKmFsdHFfZW5xdWV1ZSkgKHN0cnVjdCBpZmFsdHEgKiwgc3RydWN0IG1idWYgKiwgc3RydWN0 IGFsdHFfcGt0YXR0ciAqKTsKCiAgICAgICAgc3RydWN0IG1idWYgKigqYWx0cV9kZXF1ZXVlKSAo c3RydWN0IGlmYWx0cSAqLCBpbnQpOwogICAgICAgIGludCAoKmFsdHFfcmVxdWVzdCkgKHN0cnVj dCBpZmFsdHEgKiwgaW50LCB2b2lkICopOwoKCiAgICAgICAgdm9pZCAqYWx0cV9jbGZpZXI7CiAg ICAgICAgdm9pZCAqKCphbHRxX2NsYXNzaWZ5KSAodm9pZCAqLCBzdHJ1Y3QgbWJ1ZiAqLCBpbnQp OwoKCiAgICAgICAgc3RydWN0IHRiX3JlZ3VsYXRvciAqYWx0cV90YnI7CgoKICAgICAgICBzdHJ1 Y3QgdG9wX2NkbnIgKmFsdHFfY2RucjsKfTsKIyA4NSAiLi4vLi4vLi4vLi4vYWx0cS9pZl9hbHRx LmgiCnN0cnVjdCBhbHRxX3BrdGF0dHIgewogICAgICAgIHZvaWQgKnBhdHRyX2NsYXNzOwogICAg ICAgIGludCBwYXR0cl9hZjsKICAgICAgICBfX2NhZGRyX3QgcGF0dHJfaGRyOwp9OwojIDEwMCAi Li4vLi4vLi4vLi4vYWx0cS9pZl9hbHRxLmgiCnN0cnVjdCB0Yl9yZWd1bGF0b3IgewogICAgICAg IF9faW50NjRfdCB0YnJfcmF0ZTsKICAgICAgICBfX2ludDY0X3QgdGJyX2RlcHRoOwoKICAgICAg ICBfX2ludDY0X3QgdGJyX3Rva2VuOwogICAgICAgIF9faW50NjRfdCB0YnJfZmlsbHVwdGltZTsK ICAgICAgICB1X2ludDY0X3QgdGJyX2xhc3Q7CgogICAgICAgIGludCB0YnJfbGFzdG9wOwoKfTsK IyAxNDkgIi4uLy4uLy4uLy4uL2FsdHEvaWZfYWx0cS5oIgpleHRlcm4gaW50IGFsdHFfYXR0YWNo IChzdHJ1Y3QgaWZhbHRxICosIGludCwgdm9pZCAqLCBpbnQgKCopKHN0cnVjdCBpZmFsdHEgKiwg c3RydWN0IG1idWYgKiwgc3RydWN0IGFsdHFfcGt0YXR0ciAqKSwgc3RydWN0IG1idWYgKigqKShz dHJ1Y3QgaWZhbHRxICosIGludCksIGludCAoKikoc3RydWN0IGlmYWx0cSAqLCBpbnQsIHZvaWQg KiksIHZvaWQgKiwgdm9pZCAqKCopKHZvaWQgKiwgc3RydWN0IG1idWYgKiwgaW50KSk7CgoKCgoK CmV4dGVybiBpbnQgYWx0cV9kZXRhY2ggKHN0cnVjdCBpZmFsdHEgKik7CmV4dGVybiBpbnQgYWx0 cV9lbmFibGUgKHN0cnVjdCBpZmFsdHEgKik7CmV4dGVybiBpbnQgYWx0cV9kaXNhYmxlIChzdHJ1 Y3QgaWZhbHRxICopOwpleHRlcm4gc3RydWN0IG1idWYgKnRicl9kZXF1ZXVlIChzdHJ1Y3QgaWZh bHRxICosIGludCk7CmV4dGVybiBpbnQgKCphbHRxX2lucHV0KSAoc3RydWN0IG1idWYgKiwgaW50 KTsKdm9pZCBhbHRxX2V0aGVyY2xhc3NpZnkgKHN0cnVjdCBpZmFsdHEgKiwgc3RydWN0IG1idWYg Kiwgc3RydWN0IGFsdHFfcGt0YXR0ciAqKTsKIyA5MCAiLi4vLi4vLi4vLi4vbmV0L2lmLmgiIDIK IyAxMTkgIi4uLy4uLy4uLy4uL25ldC9pZi5oIgojIDEgIm9wdF9jb21wYXRfbmV0YnNkLmgiIDEK IyAxMjAgIi4uLy4uLy4uLy4uL25ldC9pZi5oIiAyCgoKc3RydWN0IG1idWY7CnN0cnVjdCBwcm9j OwpzdHJ1Y3QgcnRlbnRyeTsKc3RydWN0IHNvY2tldDsKc3RydWN0IGV0aGVyX2hlYWRlcjsKc3Ry dWN0IGlmbmV0OwpzdHJ1Y3QgcnRfYWRkcmluZm87CiMgMTQwICIuLi8uLi8uLi8uLi9uZXQvaWYu aCIKc3RydWN0IGlmX2Nsb25lIHsKICAgICAgICBzdHJ1Y3QgeyBzdHJ1Y3QgaWZfY2xvbmUgKmxl X25leHQ7IHN0cnVjdCBpZl9jbG9uZSAqKmxlX3ByZXY7IH0gaWZjX2xpc3Q7CiAgICAgICAgY29u c3QgY2hhciAqaWZjX25hbWU7CiAgICAgICAgc2l6ZV90IGlmY19uYW1lbGVuOwoKICAgICAgICBp bnQgKCppZmNfY3JlYXRlKShzdHJ1Y3QgaWZfY2xvbmUgKiwgaW50KTsKICAgICAgICB2b2lkICgq aWZjX2Rlc3Ryb3kpKHN0cnVjdCBpZm5ldCAqKTsKfTsKCgoKCgoKCnN0cnVjdCBpZl9jbG9uZXJl cSB7CiAgICAgICAgaW50IGlmY3JfdG90YWw7CiAgICAgICAgaW50IGlmY3JfY291bnQ7CiAgICAg ICAgY2hhciAqaWZjcl9idWZmZXI7Cn07CgoKCgoKc3RydWN0IGlmX2RhdGEgewoKICAgICAgICB1 X2NoYXIgaWZpX3R5cGU7CiAgICAgICAgdV9jaGFyIGlmaV9hZGRybGVuOwogICAgICAgIHVfY2hh ciBpZmlfaGRybGVuOwogICAgICAgIGludCBpZmlfbGlua19zdGF0ZTsKICAgICAgICB1X3F1YWRf dCBpZmlfbXR1OwogICAgICAgIHVfcXVhZF90IGlmaV9tZXRyaWM7CiAgICAgICAgdV9xdWFkX3Qg aWZpX2JhdWRyYXRlOwoKICAgICAgICB1X3F1YWRfdCBpZmlfaXBhY2tldHM7CiAgICAgICAgdV9x dWFkX3QgaWZpX2llcnJvcnM7CiAgICAgICAgdV9xdWFkX3QgaWZpX29wYWNrZXRzOwogICAgICAg IHVfcXVhZF90IGlmaV9vZXJyb3JzOwogICAgICAgIHVfcXVhZF90IGlmaV9jb2xsaXNpb25zOwog ICAgICAgIHVfcXVhZF90IGlmaV9pYnl0ZXM7CiAgICAgICAgdV9xdWFkX3QgaWZpX29ieXRlczsK ICAgICAgICB1X3F1YWRfdCBpZmlfaW1jYXN0czsKICAgICAgICB1X3F1YWRfdCBpZmlfb21jYXN0 czsKICAgICAgICB1X3F1YWRfdCBpZmlfaXFkcm9wczsKICAgICAgICB1X3F1YWRfdCBpZmlfbm9w cm90bzsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBpZmlfbGFzdGNoYW5nZTsKfTsKIyAyMjUgIi4u Ly4uLy4uLy4uL25ldC9pZi5oIgpzdHJ1Y3QgaWZxdWV1ZSB7CiAgICAgICAgc3RydWN0IG1idWYg KmlmcV9oZWFkOwogICAgICAgIHN0cnVjdCBtYnVmICppZnFfdGFpbDsKICAgICAgICBpbnQgaWZx X2xlbjsKICAgICAgICBpbnQgaWZxX21heGxlbjsKICAgICAgICBpbnQgaWZxX2Ryb3BzOwp9OwoK CgoKCgpzdHJ1Y3QgaWZuZXRfaGVhZCB7IHN0cnVjdCBpZm5ldCAqdHFoX2ZpcnN0OyBzdHJ1Y3Qg aWZuZXQgKip0cWhfbGFzdDsgfTsKCnN0cnVjdCBpZm5ldCB7CiAgICAgICAgdm9pZCAqaWZfc29m dGM7CiAgICAgICAgc3RydWN0IHsgc3RydWN0IGlmbmV0ICp0cWVfbmV4dDsgc3RydWN0IGlmbmV0 ICoqdHFlX3ByZXY7IH0gaWZfbGlzdDsKICAgICAgICBzdHJ1Y3QgeyBzdHJ1Y3QgaWZhZGRyICp0 cWhfZmlyc3Q7IHN0cnVjdCBpZmFkZHIgKip0cWhfbGFzdDsgfSBpZl9hZGRybGlzdDsKICAgICAg ICBjaGFyIGlmX3huYW1lWzE2XTsKICAgICAgICBpbnQgaWZfcGNvdW50OwogICAgICAgIF9fY2Fk ZHJfdCBpZl9icGY7CiAgICAgICAgdV9zaG9ydCBpZl9pbmRleDsKICAgICAgICBzaG9ydCBpZl90 aW1lcjsKICAgICAgICBzaG9ydCBpZl9mbGFnczsKICAgICAgICBzaG9ydCBpZl9fcGFkMTsKICAg ICAgICBzdHJ1Y3QgaWZfZGF0YSBpZl9kYXRhOwoKCgoKICAgICAgICBpbnQgKCppZl9vdXRwdXQp CiAgICAgICAgICAgICAgICAoc3RydWN0IGlmbmV0ICosIHN0cnVjdCBtYnVmICosIHN0cnVjdCBz b2NrYWRkciAqLCBzdHJ1Y3QgcnRlbnRyeSAqKTsKCiAgICAgICAgdm9pZCAoKmlmX2lucHV0KQog ICAgICAgICAgICAgICAgKHN0cnVjdCBpZm5ldCAqLCBzdHJ1Y3QgbWJ1ZiAqKTsKICAgICAgICB2 b2lkICgqaWZfc3RhcnQpCiAgICAgICAgICAgICAgICAoc3RydWN0IGlmbmV0ICopOwogICAgICAg IGludCAoKmlmX2lvY3RsKQogICAgICAgICAgICAgICAgKHN0cnVjdCBpZm5ldCAqLCB1X2xvbmcs IF9fY2FkZHJfdCk7CiAgICAgICAgaW50ICgqaWZfaW5pdCkKICAgICAgICAgICAgICAgIChzdHJ1 Y3QgaWZuZXQgKik7CiAgICAgICAgdm9pZCAoKmlmX3N0b3ApCiAgICAgICAgICAgICAgICAoc3Ry dWN0IGlmbmV0ICosIGludCk7CiAgICAgICAgdm9pZCAoKmlmX3dhdGNoZG9nKQogICAgICAgICAg ICAgICAgKHN0cnVjdCBpZm5ldCAqKTsKICAgICAgICB2b2lkICgqaWZfZHJhaW4pCiAgICAgICAg ICAgICAgICAoc3RydWN0IGlmbmV0ICopOwogICAgICAgIHN0cnVjdCBpZmFsdHEgaWZfc25kOwog ICAgICAgIHN0cnVjdCBzb2NrYWRkcl9kbCAqaWZfc2FkbDsKICAgICAgICB1X2ludDhfdCAqaWZf YnJvYWRjYXN0YWRkcjsKICAgICAgICBzdHJ1Y3QgaWZwcmVmaXggKmlmX3ByZWZpeGxpc3Q7CiAg ICAgICAgdm9pZCAqaWZfYnJpZGdlOwogICAgICAgIGludCBpZl9kbHQ7CiAgICAgICAgc3RydWN0 IHBmaWxfaGVhZCBpZl9wZmlsOwogICAgICAgIF9fdWludDY0X3QgaWZfY2FwYWJpbGl0aWVzOwog ICAgICAgIF9fdWludDY0X3QgaWZfY2FwZW5hYmxlOwoKCgoKCiAgICAgICAgaW50IGlmX2NzdW1f ZmxhZ3NfdHg7CiAgICAgICAgaW50IGlmX2NzdW1fZmxhZ3Nfcng7Cn07CiMgNDA0ICIuLi8uLi8u Li8uLi9uZXQvaWYuaCIKc3RydWN0IGlmYWRkcl9kYXRhIHsKICAgICAgICBfX2ludDY0X3QgaWZh ZF9pbmJ5dGVzOwogICAgICAgIF9faW50NjRfdCBpZmFkX291dGJ5dGVzOwp9OwoKCgoKCgoKc3Ry dWN0IGlmYWRkciB7CiAgICAgICAgc3RydWN0IHNvY2thZGRyICppZmFfYWRkcjsKICAgICAgICBz dHJ1Y3Qgc29ja2FkZHIgKmlmYV9kc3RhZGRyOwoKICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKmlm YV9uZXRtYXNrOwogICAgICAgIHN0cnVjdCBpZm5ldCAqaWZhX2lmcDsKICAgICAgICBzdHJ1Y3Qg eyBzdHJ1Y3QgaWZhZGRyICp0cWVfbmV4dDsgc3RydWN0IGlmYWRkciAqKnRxZV9wcmV2OyB9IGlm YV9saXN0OwogICAgICAgIHN0cnVjdCBpZmFkZHJfZGF0YSBpZmFfZGF0YTsKICAgICAgICB2b2lk ICgqaWZhX3J0cmVxdWVzdCkKICAgICAgICAgICAgICAgICAgICAoaW50LCBzdHJ1Y3QgcnRlbnRy eSAqLCBzdHJ1Y3QgcnRfYWRkcmluZm8gKik7CiAgICAgICAgdV9pbnQgaWZhX2ZsYWdzOwogICAg ICAgIGludCBpZmFfcmVmY250OwogICAgICAgIGludCBpZmFfbWV0cmljOwp9OwojIDQzNyAiLi4v Li4vLi4vLi4vbmV0L2lmLmgiCnN0cnVjdCBpZnByZWZpeCB7CiAgICAgICAgc3RydWN0IHNvY2th ZGRyICppZnByX3ByZWZpeDsKICAgICAgICBzdHJ1Y3QgaWZuZXQgKmlmcHJfaWZwOwogICAgICAg IHN0cnVjdCBpZnByZWZpeCAqaWZwcl9uZXh0OwogICAgICAgIHVfY2hhciBpZnByX3BsZW47CiAg ICAgICAgdV9jaGFyIGlmcHJfdHlwZTsKfTsKCgoKCgpzdHJ1Y3QgaWZfbXNnaGRyIHsKICAgICAg ICB1X3Nob3J0IGlmbV9tc2dsZW47CiAgICAgICAgdV9jaGFyIGlmbV92ZXJzaW9uOwogICAgICAg IHVfY2hhciBpZm1fdHlwZTsKICAgICAgICBpbnQgaWZtX2FkZHJzOwogICAgICAgIGludCBpZm1f ZmxhZ3M7CiAgICAgICAgdV9zaG9ydCBpZm1faW5kZXg7CiAgICAgICAgc3RydWN0IGlmX2RhdGEg aWZtX2RhdGE7Cn07CiMgNDc2ICIuLi8uLi8uLi8uLi9uZXQvaWYuaCIKc3RydWN0IGlmYV9tc2do ZHIgewogICAgICAgIHVfc2hvcnQgaWZhbV9tc2dsZW47CiAgICAgICAgdV9jaGFyIGlmYW1fdmVy c2lvbjsKICAgICAgICB1X2NoYXIgaWZhbV90eXBlOwogICAgICAgIGludCBpZmFtX2FkZHJzOwog ICAgICAgIGludCBpZmFtX2ZsYWdzOwogICAgICAgIHVfc2hvcnQgaWZhbV9pbmRleDsKICAgICAg ICBpbnQgaWZhbV9tZXRyaWM7Cn07CgoKCgpzdHJ1Y3QgaWZfYW5ub3VuY2Vtc2doZHIgewogICAg ICAgIHVfc2hvcnQgaWZhbl9tc2dsZW47CiAgICAgICAgdV9jaGFyIGlmYW5fdmVyc2lvbjsKICAg ICAgICB1X2NoYXIgaWZhbl90eXBlOwogICAgICAgIHVfc2hvcnQgaWZhbl9pbmRleDsKICAgICAg ICBjaGFyIGlmYW5fbmFtZVsxNl07CiAgICAgICAgdV9zaG9ydCBpZmFuX3doYXQ7Cn07CiMgNTA3 ICIuLi8uLi8uLi8uLi9uZXQvaWYuaCIKc3RydWN0IGlmcmVxIHsKICAgICAgICBjaGFyIGlmcl9u YW1lWzE2XTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIg aWZydV9hZGRyOwogICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyIGlmcnVfZHN0YWRkcjsK ICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciBpZnJ1X2Jyb2FkYWRkcjsKICAgICAgICAg ICAgICAgIHNob3J0IGlmcnVfZmxhZ3M7CiAgICAgICAgICAgICAgICBpbnQgaWZydV9tZXRyaWM7 CiAgICAgICAgICAgICAgICBpbnQgaWZydV9tdHU7CiAgICAgICAgICAgICAgICBpbnQgaWZydV9k bHQ7CiAgICAgICAgICAgICAgICB1X2ludCBpZnJ1X3ZhbHVlOwogICAgICAgICAgICAgICAgX19j YWRkcl90IGlmcnVfZGF0YTsKICAgICAgICB9IGlmcl9pZnJ1OwojIDUzMCAiLi4vLi4vLi4vLi4v bmV0L2lmLmgiCn07CgpzdHJ1Y3QgaWZjYXByZXEgewogICAgICAgIGNoYXIgaWZjcl9uYW1lWzE2 XTsKICAgICAgICBfX3VpbnQ2NF90IGlmY3JfY2FwYWJpbGl0aWVzOwogICAgICAgIF9fdWludDY0 X3QgaWZjcl9jYXBlbmFibGU7Cn07CgpzdHJ1Y3QgaWZhbGlhc3JlcSB7CiAgICAgICAgY2hhciBp ZnJhX25hbWVbMTZdOwogICAgICAgIHN0cnVjdCBzb2NrYWRkciBpZnJhX2FkZHI7CiAgICAgICAg c3RydWN0IHNvY2thZGRyIGlmcmFfZHN0YWRkcjsKCiAgICAgICAgc3RydWN0IHNvY2thZGRyIGlm cmFfbWFzazsKfTsKCnN0cnVjdCBpZm1lZGlhcmVxIHsKICAgICAgICBjaGFyIGlmbV9uYW1lWzE2 XTsKICAgICAgICBpbnQgaWZtX2N1cnJlbnQ7CiAgICAgICAgaW50IGlmbV9tYXNrOwogICAgICAg IGludCBpZm1fc3RhdHVzOwogICAgICAgIGludCBpZm1fYWN0aXZlOwogICAgICAgIGludCBpZm1f Y291bnQ7CgogICAgICAgIGludCAqaWZtX3VsaXN0Owp9OwoKCnN0cnVjdCBpZmRydiB7CiAgICAg ICAgY2hhciBpZmRfbmFtZVsxNl07CiAgICAgICAgdW5zaWduZWQgbG9uZyBpZmRfY21kOwogICAg ICAgIHNpemVfdCBpZmRfbGVuOwogICAgICAgIHZvaWQgKmlmZF9kYXRhOwp9OwoKCgoKCgoKc3Ry dWN0IGlmY29uZiB7CiAgICAgICAgaW50IGlmY19sZW47CiAgICAgICAgdW5pb24gewogICAgICAg ICAgICAgICAgX19jYWRkcl90IGlmY3VfYnVmOwogICAgICAgICAgICAgICAgc3RydWN0IGlmcmVx ICppZmN1X3JlcTsKICAgICAgICB9IGlmY19pZmN1OwoKCn07CgoKCgpzdHJ1Y3QgaWZfbGFkZHJy ZXEgewogICAgICAgIGNoYXIgaWZscl9uYW1lWzE2XTsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxh Z3M7CgogICAgICAgIHVuc2lnbmVkIGludCBwcmVmaXhsZW47CiAgICAgICAgc3RydWN0IHNvY2th ZGRyX3N0b3JhZ2UgYWRkcjsKICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBkc3RhZGRy Owp9OwoKIyAxICIuLi8uLi8uLi8uLi9uZXQvaWZfYXJwLmgiIDEKIyA1MCAiLi4vLi4vLi4vLi4v bmV0L2lmX2FycC5oIgpzdHJ1Y3QgYXJwaGRyIHsKICAgICAgICB1X2ludDE2X3QgYXJfaHJkOwoK CgoKCgogICAgICAgIHVfaW50MTZfdCBhcl9wcm87CiAgICAgICAgdV9pbnQ4X3QgYXJfaGxuOwog ICAgICAgIHVfaW50OF90IGFyX3BsbjsKICAgICAgICB1X2ludDE2X3QgYXJfb3A7CiMgODIgIi4u Ly4uLy4uLy4uL25ldC9pZl9hcnAuaCIKfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSk7CgoK CgoKc3RydWN0IGFycHJlcSB7CiAgICAgICAgc3RydWN0IHNvY2thZGRyIGFycF9wYTsKICAgICAg ICBzdHJ1Y3Qgc29ja2FkZHIgYXJwX2hhOwogICAgICAgIGludCBhcnBfZmxhZ3M7Cn07CiMgMTAz ICIuLi8uLi8uLi8uLi9uZXQvaWZfYXJwLmgiCnN0cnVjdCBhcnBzdGF0IHsKICAgICAgICB1X3F1 YWRfdCBhc19zbmR0b3RhbDsKICAgICAgICB1X3F1YWRfdCBhc19zbmRyZXBseTsKICAgICAgICB1 X3F1YWRfdCBhc19zbmRyZXF1ZXN0OwoKICAgICAgICB1X3F1YWRfdCBhc19yY3Z0b3RhbDsKICAg ICAgICB1X3F1YWRfdCBhc19yY3ZyZXF1ZXN0OwogICAgICAgIHVfcXVhZF90IGFzX3JjdnJlcGx5 OwogICAgICAgIHVfcXVhZF90IGFzX3Jjdm1jYXN0OwogICAgICAgIHVfcXVhZF90IGFzX3JjdmJh ZHByb3RvOwogICAgICAgIHVfcXVhZF90IGFzX3JjdmJhZGxlbjsKICAgICAgICB1X3F1YWRfdCBh c19yY3Z6ZXJvdHBhOwogICAgICAgIHVfcXVhZF90IGFzX3Jjdnplcm9zcGE7CiAgICAgICAgdV9x dWFkX3QgYXNfcmN2bm9pbnQ7CiAgICAgICAgdV9xdWFkX3QgYXNfcmN2bG9jYWxzaGE7CiAgICAg ICAgdV9xdWFkX3QgYXNfcmN2YmNhc3RzaGE7CiAgICAgICAgdV9xdWFkX3QgYXNfcmN2bG9jYWxz cGE7CiAgICAgICAgdV9xdWFkX3QgYXNfcmN2b3ZlcnBlcm07CiAgICAgICAgdV9xdWFkX3QgYXNf cmN2b3ZlcmludDsKICAgICAgICB1X3F1YWRfdCBhc19yY3ZvdmVyOwogICAgICAgIHVfcXVhZF90 IGFzX3JjdmxlbmNoZzsKCiAgICAgICAgdV9xdWFkX3QgYXNfZGZydG90YWw7CiAgICAgICAgdV9x dWFkX3QgYXNfZGZyc2VudDsKICAgICAgICB1X3F1YWRfdCBhc19kZnJkcm9wcGVkOwoKICAgICAg ICB1X3F1YWRfdCBhc19hbGxvY2ZhaWw7Cn07CiMgNTk0ICIuLi8uLi8uLi8uLi9uZXQvaWYuaCIg MgojIDczMyAiLi4vLi4vLi4vLi4vbmV0L2lmLmgiCmV4dGVybiBzdHJ1Y3QgaWZuZXRfaGVhZCBp Zm5ldDsKZXh0ZXJuIHN0cnVjdCBpZm5ldCAqKmlmaW5kZXgyaWZuZXQ7CgoKCmV4dGVybiBpbnQg aWZfaW5kZXg7CgpjaGFyICpldGhlcl9zcHJpbnRmIChjb25zdCB1X2NoYXIgKik7Cgp2b2lkIGlm X2FsbG9jX3NhZGwgKHN0cnVjdCBpZm5ldCAqKTsKdm9pZCBpZl9mcmVlX3NhZGwgKHN0cnVjdCBp Zm5ldCAqKTsKdm9pZCBpZl9hdHRhY2ggKHN0cnVjdCBpZm5ldCAqKTsKdm9pZCBpZl9kZWFjdGl2 YXRlIChzdHJ1Y3QgaWZuZXQgKik7CnZvaWQgaWZfZGV0YWNoIChzdHJ1Y3QgaWZuZXQgKik7CnZv aWQgaWZfZG93biAoc3RydWN0IGlmbmV0ICopOwp2b2lkIGlmX3Nsb3d0aW1vICh2b2lkICopOwp2 b2lkIGlmX3VwIChzdHJ1Y3QgaWZuZXQgKik7CmludCBpZmNvbmYgKHVfbG9uZywgX19jYWRkcl90 KTsKdm9pZCBpZmluaXQgKHZvaWQpOwppbnQgaWZpb2N0bCAoc3RydWN0IHNvY2tldCAqLCB1X2xv bmcsIF9fY2FkZHJfdCwgc3RydWN0IHByb2MgKik7CmludCBpZnByb21pc2MgKHN0cnVjdCBpZm5l dCAqLCBpbnQpOwpzdHJ1Y3QgaWZuZXQgKmlmdW5pdCAoY29uc3QgY2hhciAqKTsKCnN0cnVjdCBp ZmFkZHIgKmlmYV9pZndpdGhhZGRyIChzdHJ1Y3Qgc29ja2FkZHIgKik7CnN0cnVjdCBpZmFkZHIg KmlmYV9pZndpdGhhZiAoaW50KTsKc3RydWN0IGlmYWRkciAqaWZhX2lmd2l0aGRzdGFkZHIgKHN0 cnVjdCBzb2NrYWRkciAqKTsKc3RydWN0IGlmYWRkciAqaWZhX2lmd2l0aG5ldCAoc3RydWN0IHNv Y2thZGRyICopOwpzdHJ1Y3QgaWZhZGRyICppZmFfaWZ3aXRobGFkZHIgKHN0cnVjdCBzb2NrYWRk ciAqKTsKc3RydWN0IGlmYWRkciAqaWZhX2lmd2l0aHJvdXRlIChpbnQsIHN0cnVjdCBzb2NrYWRk ciAqLCBzdHJ1Y3Qgc29ja2FkZHIgKik7CgpzdHJ1Y3QgaWZhZGRyICppZmFvZl9pZnBmb3JhZGRy IChzdHJ1Y3Qgc29ja2FkZHIgKiwgc3RydWN0IGlmbmV0ICopOwp2b2lkIGlmYWZyZWUgKHN0cnVj dCBpZmFkZHIgKik7CnZvaWQgbGlua19ydHJlcXVlc3QgKGludCwgc3RydWN0IHJ0ZW50cnkgKiwg c3RydWN0IHJ0X2FkZHJpbmZvICopOwoKdm9pZCBpZl9jbG9uZV9hdHRhY2ggKHN0cnVjdCBpZl9j bG9uZSAqKTsKdm9pZCBpZl9jbG9uZV9kZXRhY2ggKHN0cnVjdCBpZl9jbG9uZSAqKTsKCmludCBp Zl9jbG9uZV9jcmVhdGUgKGNvbnN0IGNoYXIgKik7CmludCBpZl9jbG9uZV9kZXN0cm95IChjb25z dCBjaGFyICopOwoKaW50IGxvaW9jdGwgKHN0cnVjdCBpZm5ldCAqLCB1X2xvbmcsIF9fY2FkZHJf dCk7CnZvaWQgbG9vcGF0dGFjaCAoaW50KTsKaW50IGxvb3V0cHV0IChzdHJ1Y3QgaWZuZXQgKiwg c3RydWN0IG1idWYgKiwgc3RydWN0IHNvY2thZGRyICosIHN0cnVjdCBydGVudHJ5ICopOwoKdm9p ZCBsb3J0cmVxdWVzdCAoaW50LCBzdHJ1Y3QgcnRlbnRyeSAqLCBzdHJ1Y3QgcnRfYWRkcmluZm8g Kik7CgoKCgoKaW50IGlmX251bGxvdXRwdXQgKHN0cnVjdCBpZm5ldCAqLCBzdHJ1Y3QgbWJ1ZiAq LCBzdHJ1Y3Qgc29ja2FkZHIgKiwgc3RydWN0IHJ0ZW50cnkgKik7Cgp2b2lkIGlmX251bGxpbnB1 dCAoc3RydWN0IGlmbmV0ICosIHN0cnVjdCBtYnVmICopOwp2b2lkIGlmX251bGxzdGFydCAoc3Ry dWN0IGlmbmV0ICopOwppbnQgaWZfbnVsbGlvY3RsIChzdHJ1Y3QgaWZuZXQgKiwgdV9sb25nLCBf X2NhZGRyX3QpOwppbnQgaWZfbnVsbGluaXQgKHN0cnVjdCBpZm5ldCAqKTsKdm9pZCBpZl9udWxs c3RvcCAoc3RydWN0IGlmbmV0ICosIGludCk7CnZvaWQgaWZfbnVsbHdhdGNoZG9nIChzdHJ1Y3Qg aWZuZXQgKik7CnZvaWQgaWZfbnVsbGRyYWluIChzdHJ1Y3QgaWZuZXQgKik7CiMgOTggImFtNzk5 MC5jIiAyCiMgMSAiLi4vLi4vLi4vLi4vbmV0L2lmX2RsLmgiIDEKIyA2OSAiLi4vLi4vLi4vLi4v bmV0L2lmX2RsLmgiCnN0cnVjdCBzb2NrYWRkcl9kbCB7CiAgICAgICAgdV9jaGFyIHNkbF9sZW47 CiAgICAgICAgX19zYV9mYW1pbHlfdCBzZGxfZmFtaWx5OwogICAgICAgIHVfaW50MTZfdCBzZGxf aW5kZXg7CiAgICAgICAgdV9jaGFyIHNkbF90eXBlOwogICAgICAgIHVfY2hhciBzZGxfbmxlbjsK ICAgICAgICB1X2NoYXIgc2RsX2FsZW47CiAgICAgICAgdV9jaGFyIHNkbF9zbGVuOwogICAgICAg IGNoYXIgc2RsX2RhdGFbMTJdOwoKfTsKIyA5OSAiYW03OTkwLmMiIDIKIyAxICIuLi8uLi8uLi8u Li9uZXQvaWZfZXRoZXIuaCIgMQojIDYxICIuLi8uLi8uLi8uLi9uZXQvaWZfZXRoZXIuaCIKc3Ry dWN0IGV0aGVyX2FkZHIgewogICAgICAgIHVfaW50OF90IGV0aGVyX2FkZHJfb2N0ZXRbNl07Cn0g X19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpOwoKCgoKc3RydWN0IGV0aGVyX2hlYWRlciB7CiAg ICAgICAgdV9pbnQ4X3QgZXRoZXJfZGhvc3RbNl07CiAgICAgICAgdV9pbnQ4X3QgZXRoZXJfc2hv c3RbNl07CiAgICAgICAgdV9pbnQxNl90IGV0aGVyX3R5cGU7Cn0gX19hdHRyaWJ1dGVfXygoX19w YWNrZWRfXykpOwoKIyAxICIuLi8uLi8uLi8uLi9uZXQvZXRoZXJ0eXBlcy5oIiAxCiMgNzUgIi4u Ly4uLy4uLy4uL25ldC9pZl9ldGhlci5oIiAyCiMgMTQ0ICIuLi8uLi8uLi8uLi9uZXQvaWZfZXRo ZXIuaCIKc3RydWN0IGV0aGVyY29tIHsKICAgICAgICBzdHJ1Y3QgaWZuZXQgZWNfaWY7CiAgICAg ICAgc3RydWN0IHsgc3RydWN0IGV0aGVyX211bHRpICpsaF9maXJzdDsgfSBlY19tdWx0aWFkZHJz OwoKICAgICAgICBpbnQgZWNfbXVsdGljbnQ7CgogICAgICAgIGludCBlY19jYXBhYmlsaXRpZXM7 CgogICAgICAgIGludCBlY19jYXBlbmFibGU7CgoKICAgICAgICBpbnQgZWNfbnZsYW5zOwp9OwoK CgoKCgpleHRlcm4gdV9pbnQ4X3QgZXRoZXJicm9hZGNhc3RhZGRyWzZdOwpleHRlcm4gdV9pbnQ4 X3QgZXRoZXJfaXBtdWx0aWNhc3RfbWluWzZdOwpleHRlcm4gdV9pbnQ4X3QgZXRoZXJfaXBtdWx0 aWNhc3RfbWF4WzZdOwoKaW50IGV0aGVyX2lvY3RsKHN0cnVjdCBpZm5ldCAqLCB1X2xvbmcsIF9f Y2FkZHJfdCk7CmludCBldGhlcl9hZGRtdWx0aSAoc3RydWN0IGlmcmVxICosIHN0cnVjdCBldGhl cmNvbSAqKTsKaW50IGV0aGVyX2RlbG11bHRpIChzdHJ1Y3QgaWZyZXEgKiwgc3RydWN0IGV0aGVy Y29tICopOwppbnQgZXRoZXJfY2hhbmdlYWRkciAoc3RydWN0IGlmcmVxICosIHN0cnVjdCBldGhl cmNvbSAqKTsKaW50IGV0aGVyX211bHRpYWRkcihzdHJ1Y3Qgc29ja2FkZHIgKiwgdV9pbnQ4X3Rb XSwgdV9pbnQ4X3RbXSk7CiMgMTgwICIuLi8uLi8uLi8uLi9uZXQvaWZfZXRoZXIuaCIKc3RydWN0 IGV0aGVyX211bHRpIHsKICAgICAgICB1X2ludDhfdCBlbm1fYWRkcmxvWzZdOwogICAgICAgIHVf aW50OF90IGVubV9hZGRyaGlbNl07CiAgICAgICAgc3RydWN0IGV0aGVyY29tICplbm1fZWM7CiAg ICAgICAgdV9pbnQgZW5tX3JlZmNvdW50OwogICAgICAgIHN0cnVjdCB7IHN0cnVjdCBldGhlcl9t dWx0aSAqbGVfbmV4dDsgc3RydWN0IGV0aGVyX211bHRpICoqbGVfcHJldjsgfSBlbm1fbGlzdDsK fTsKCgoKCgpzdHJ1Y3QgZXRoZXJfbXVsdGlzdGVwIHsKICAgICAgICBzdHJ1Y3QgZXRoZXJfbXVs dGkgKmVfZW5tOwp9OwojIDIzOSAiLi4vLi4vLi4vLi4vbmV0L2lmX2V0aGVyLmgiCnZvaWQgZXRo ZXJfaWZhdHRhY2goc3RydWN0IGlmbmV0ICosIGNvbnN0IHVfaW50OF90ICopOwp2b2lkIGV0aGVy X2lmZGV0YWNoKHN0cnVjdCBpZm5ldCAqKTsKCmNoYXIgKmV0aGVyX3NwcmludGYoY29uc3QgdV9p bnQ4X3QgKik7Cgp1X2ludDMyX3QgZXRoZXJfY3JjMzJfbGUoY29uc3QgdV9pbnQ4X3QgKiwgc2l6 ZV90KTsKdV9pbnQzMl90IGV0aGVyX2NyYzMyX2JlKGNvbnN0IHVfaW50OF90ICosIHNpemVfdCk7 CiMgMTAwICJhbTc5OTAuYyIgMgojIDEgIi4uLy4uLy4uLy4uL25ldC9pZl9tZWRpYS5oIiAxCiMg OTYgIi4uLy4uLy4uLy4uL25ldC9pZl9tZWRpYS5oIgp0eXBlZGVmIGludCAoKmlmbV9jaGFuZ2Vf Y2JfdCkgKHN0cnVjdCBpZm5ldCAqaWZwKTsKdHlwZWRlZiB2b2lkICgqaWZtX3N0YXRfY2JfdCkg KHN0cnVjdCBpZm5ldCAqaWZwLCBzdHJ1Y3QgaWZtZWRpYXJlcSAqcmVxKTsKCgoKCnN0cnVjdCBp Zm1lZGlhX2VudHJ5IHsKICAgICAgICBzdHJ1Y3QgeyBzdHJ1Y3QgaWZtZWRpYV9lbnRyeSAqdHFl X25leHQ7IHN0cnVjdCBpZm1lZGlhX2VudHJ5ICoqdHFlX3ByZXY7IH0gaWZtX2xpc3Q7CiAgICAg ICAgaW50IGlmbV9tZWRpYTsKICAgICAgICBpbnQgaWZtX2RhdGE7CiAgICAgICAgdm9pZCAqaWZt X2F1eDsKfTsKCgoKCgpzdHJ1Y3QgaWZtZWRpYSB7CiAgICAgICAgaW50IGlmbV9tYXNrOwogICAg ICAgIGludCBpZm1fbWVkaWE7CiAgICAgICAgc3RydWN0IGlmbWVkaWFfZW50cnkgKmlmbV9jdXI7 CiAgICAgICAgc3RydWN0IHsgc3RydWN0IGlmbWVkaWFfZW50cnkgKnRxaF9maXJzdDsgc3RydWN0 IGlmbWVkaWFfZW50cnkgKip0cWhfbGFzdDsgfSBpZm1fbGlzdDsKICAgICAgICBpZm1fY2hhbmdl X2NiX3QgaWZtX2NoYW5nZTsKICAgICAgICBpZm1fc3RhdF9jYl90IGlmbV9zdGF0dXM7Cn07CgoK dm9pZCBpZm1lZGlhX2luaXQgKHN0cnVjdCBpZm1lZGlhICppZm0sIGludCBkb250Y2FyZV9tYXNr LCBpZm1fY2hhbmdlX2NiX3QgY2hhbmdlX2NhbGxiYWNrLCBpZm1fc3RhdF9jYl90IHN0YXR1c19j YWxsYmFjayk7CgoKCnZvaWQgaWZtZWRpYV9hZGQgKHN0cnVjdCBpZm1lZGlhICppZm0sIGludCBt d29yZCwgaW50IGRhdGEsIHZvaWQgKmF1eCk7CgoKdm9pZCBpZm1lZGlhX2xpc3RfYWRkKHN0cnVj dCBpZm1lZGlhICptcCwgc3RydWN0IGlmbWVkaWFfZW50cnkgKmxwLAogICAgICAgICAgICBpbnQg Y291bnQpOwoKCnZvaWQgaWZtZWRpYV9zZXQgKHN0cnVjdCBpZm1lZGlhICppZm0sIGludCBtd29y ZCk7CgoKaW50IGlmbWVkaWFfaW9jdGwgKHN0cnVjdCBpZm5ldCAqaWZwLCBzdHJ1Y3QgaWZyZXEg Kmlmciwgc3RydWN0IGlmbWVkaWEgKmlmbSwgdV9sb25nIGNtZCk7CgoKCnN0cnVjdCBpZm1lZGlh X2VudHJ5ICppZm1lZGlhX21hdGNoIChzdHJ1Y3QgaWZtZWRpYSAqaWZtLCBpbnQgZmxhZ3MsIGlu dCBtYXNrKTsKCgoKdm9pZCBpZm1lZGlhX2RlbGV0ZV9pbnN0YW5jZSAoc3RydWN0IGlmbWVkaWEg KiwgaW50KTsKCgppbnQgaWZtZWRpYV9iYXVkcmF0ZSAoaW50KTsKIyAyOTUgIi4uLy4uLy4uLy4u L25ldC9pZl9tZWRpYS5oIgpzdHJ1Y3QgaWZtZWRpYV9kZXNjcmlwdGlvbiB7CiAgICAgICAgaW50 IGlmbXRfd29yZDsKICAgICAgICBjb25zdCBjaGFyICppZm10X3N0cmluZzsKfTsKIyA0MjUgIi4u Ly4uLy4uLy4uL25ldC9pZl9tZWRpYS5oIgpzdHJ1Y3QgaWZtZWRpYV9iYXVkcmF0ZSB7CiAgICAg ICAgaW50IGlmbWJfd29yZDsKICAgICAgICBpbnQgaWZtYl9iYXVkcmF0ZTsKfTsKIyA0NjkgIi4u Ly4uLy4uLy4uL25ldC9pZl9tZWRpYS5oIgpzdHJ1Y3QgaWZtZWRpYV9zdGF0dXNfZGVzY3JpcHRp b24gewogICAgICAgIGludCBpZm1zX3R5cGU7CiAgICAgICAgaW50IGlmbXNfdmFsaWQ7CiAgICAg ICAgaW50IGlmbXNfYml0OwogICAgICAgIGNvbnN0IGNoYXIgKmlmbXNfc3RyaW5nWzJdOwp9Owoj IDEwMSAiYW03OTkwLmMiIDIKCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9kZXYvaWMvbGFuY2VyZWcu aCIgMQojIDEwOCAiYW03OTkwLmMiIDIKIyAxICIuLi8uLi8uLi8uLi9kZXYvaWMvbGFuY2V2YXIu aCIgMQojIDQwICIuLi8uLi8uLi8uLi9kZXYvaWMvbGFuY2V2YXIuaCIKIyAxICJybmQuaCIgMQoj IDQxICIuLi8uLi8uLi8uLi9kZXYvaWMvbGFuY2V2YXIuaCIgMgoKCgoKCnN0cnVjdCBsYW5jZV9z b2Z0YyB7CiAgICAgICAgc3RydWN0IGRldmljZSBzY19kZXY7CiAgICAgICAgc3RydWN0IGV0aGVy Y29tIHNjX2V0aGVyY29tOwogICAgICAgIHN0cnVjdCBpZm1lZGlhIHNjX21lZGlhOwojIDU4ICIu Li8uLi8uLi8uLi9kZXYvaWMvbGFuY2V2YXIuaCIKICAgICAgICB2b2lkICgqc2NfY29weXRvZGVz YykKICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGxhbmNlX3NvZnRjICosIHZvaWQgKiwgaW50 LCBpbnQpOwogICAgICAgIHZvaWQgKCpzY19jb3B5ZnJvbWRlc2MpCiAgICAgICAgICAgICAgICAg ICAgKHN0cnVjdCBsYW5jZV9zb2Z0YyAqLCB2b2lkICosIGludCwgaW50KTsKICAgICAgICB2b2lk ICgqc2NfY29weXRvYnVmKQogICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgbGFuY2Vfc29mdGMg Kiwgdm9pZCAqLCBpbnQsIGludCk7CiAgICAgICAgdm9pZCAoKnNjX2NvcHlmcm9tYnVmKQogICAg ICAgICAgICAgICAgICAgIChzdHJ1Y3QgbGFuY2Vfc29mdGMgKiwgdm9pZCAqLCBpbnQsIGludCk7 CiAgICAgICAgdm9pZCAoKnNjX3plcm9idWYpCiAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBs YW5jZV9zb2Z0YyAqLCBpbnQsIGludCk7CiMgNzggIi4uLy4uLy4uLy4uL2Rldi9pYy9sYW5jZXZh ci5oIgogICAgICAgIHVfaW50MTZfdCAoKnNjX3JkY3NyKQogICAgICAgICAgICAgICAgICAgIChz dHJ1Y3QgbGFuY2Vfc29mdGMgKiwgdV9pbnQxNl90KTsKICAgICAgICB2b2lkICgqc2Nfd3Jjc3Ip CiAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBsYW5jZV9zb2Z0YyAqLCB1X2ludDE2X3QsIHVf aW50MTZfdCk7CiAgICAgICAgdm9pZCAoKnNjX2h3cmVzZXQpIChzdHJ1Y3QgbGFuY2Vfc29mdGMg Kik7CiAgICAgICAgdm9pZCAoKnNjX2h3aW5pdCkgKHN0cnVjdCBsYW5jZV9zb2Z0YyAqKTsKICAg ICAgICB2b2lkICgqc2Nfbm9jYXJyaWVyKSAoc3RydWN0IGxhbmNlX3NvZnRjICopOwogICAgICAg IGludCAoKnNjX21lZGlhY2hhbmdlKSAoc3RydWN0IGxhbmNlX3NvZnRjICopOwogICAgICAgIHZv aWQgKCpzY19tZWRpYXN0YXR1cykgKHN0cnVjdCBsYW5jZV9zb2Z0YyAqLCBzdHJ1Y3QgaWZtZWRp YXJlcSAqKTsKCgoKCgoKICAgICAgICBpbnQgKnNjX3N1cG1lZGlhOwogICAgICAgIGludCBzY19u c3VwbWVkaWE7CiAgICAgICAgaW50IHNjX2RlZmF1bHRtZWRpYTsKCgogICAgICAgIGludCBzY19p bml0bW9kZW1lZGlhOwoKICAgICAgICBpbnQgc2NfaGF2ZWNhcnJpZXI7CgogICAgICAgIHZvaWQg KnNjX3NoOwoKICAgICAgICB1X2ludDE2X3Qgc2NfY29uZjM7CiAgICAgICAgdV9pbnQxNl90IHNj X3NhdmVkX2NzcjA7CgogICAgICAgIHZvaWQgKnNjX21lbTsKICAgICAgICB1X2xvbmcgc2NfYWRk cjsKCiAgICAgICAgdV9sb25nIHNjX21lbXNpemU7CgogICAgICAgIGludCBzY19ucmJ1ZjsKICAg ICAgICBpbnQgc2NfbnRidWY7CiAgICAgICAgaW50IHNjX2xhc3RfcmQ7CiAgICAgICAgaW50IHNj X2ZpcnN0X3RkLCBzY19sYXN0X3RkLCBzY19ub190ZDsKCiAgICAgICAgaW50IHNjX2luaXRhZGRy OwogICAgICAgIGludCBzY19ybWRhZGRyOwogICAgICAgIGludCBzY190bWRhZGRyOwogICAgICAg IGludCAqc2NfcmJ1ZmFkZHI7CiAgICAgICAgaW50ICpzY190YnVmYWRkcjsKCgoKCiAgICAgICAg dV9pbnQ4X3Qgc2NfZW5hZGRyWzZdOwogICAgICAgIHVfaW50OF90IHNjX3BhZFsyXTsKCgoKCiAg ICAgICAgdm9pZCAoKnNjX21lbWluaXQpIChzdHJ1Y3QgbGFuY2Vfc29mdGMgKik7CiAgICAgICAg dm9pZCAoKnNjX3N0YXJ0KSAoc3RydWN0IGlmbmV0ICopOwp9OwoKdm9pZCBsYW5jZV9jb25maWcg KHN0cnVjdCBsYW5jZV9zb2Z0YyAqKTsKdm9pZCBsYW5jZV9yZXNldCAoc3RydWN0IGxhbmNlX3Nv ZnRjICopOwppbnQgbGFuY2VfaW5pdCAoc3RydWN0IGlmbmV0ICopOwppbnQgbGFuY2VfcHV0IChz dHJ1Y3QgbGFuY2Vfc29mdGMgKiwgaW50LCBzdHJ1Y3QgbWJ1ZiAqKTsKdm9pZCBsYW5jZV9yZWFk IChzdHJ1Y3QgbGFuY2Vfc29mdGMgKiwgaW50LCBpbnQpOwp2b2lkIGxhbmNlX3NldGxhZHJmIChz dHJ1Y3QgZXRoZXJjb20gKiwgdV9pbnQxNl90ICopOwoKCgoKCgoKdm9pZCBsYW5jZV9jb3B5dG9i dWZfY29udGlnIChzdHJ1Y3QgbGFuY2Vfc29mdGMgKiwgdm9pZCAqLCBpbnQsIGludCk7CnZvaWQg bGFuY2VfY29weWZyb21idWZfY29udGlnIChzdHJ1Y3QgbGFuY2Vfc29mdGMgKiwgdm9pZCAqLCBp bnQsIGludCk7CnZvaWQgbGFuY2VfemVyb2J1Zl9jb250aWcgKHN0cnVjdCBsYW5jZV9zb2Z0YyAq LCBpbnQsIGludCk7CiMgMTA5ICJhbTc5OTAuYyIgMgojIDEgIi4uLy4uLy4uLy4uL2Rldi9pYy9h bTc5OTByZWcuaCIgMQojIDgwICIuLi8uLi8uLi8uLi9kZXYvaWMvYW03OTkwcmVnLmgiCnN0cnVj dCBsZXJtZCB7CiAgICAgICAgdV9pbnQxNl90IHJtZDA7CgoKCgogICAgICAgIHVfaW50OF90IHJt ZDFfaGFkcjsKICAgICAgICB1X2ludDhfdCBybWQxX2JpdHM7CgogICAgICAgIF9faW50MTZfdCBy bWQyOwogICAgICAgIHVfaW50MTZfdCBybWQzOwp9OwoKCgoKc3RydWN0IGxldG1kIHsKICAgICAg ICB1X2ludDE2X3QgdG1kMDsKCgoKCiAgICAgICAgdV9pbnQ4X3QgdG1kMV9oYWRyOwogICAgICAg IHVfaW50OF90IHRtZDFfYml0czsKCiAgICAgICAgX19pbnQxNl90IHRtZDI7CiAgICAgICAgdV9p bnQxNl90IHRtZDM7Cn07CgoKCgpzdHJ1Y3QgbGVpbml0IHsKICAgICAgICB1X2ludDE2X3QgaW5p dF9tb2RlOwogICAgICAgIHVfaW50MTZfdCBpbml0X3BhZHJbM107CiAgICAgICAgdV9pbnQxNl90 IGluaXRfbGFkcmZbNF07CiAgICAgICAgdV9pbnQxNl90IGluaXRfcmRyYTsKICAgICAgICB1X2lu dDE2X3QgaW5pdF9ybGVuOwogICAgICAgIHVfaW50MTZfdCBpbml0X3RkcmE7CiAgICAgICAgdV9p bnQxNl90IGluaXRfdGxlbjsKICAgICAgICBfX2ludDE2X3QgcGFkMFs0XTsKfTsKIyAxMTAgImFt Nzk5MC5jIiAyCiMgMSAiLi4vLi4vLi4vLi4vZGV2L2ljL2FtNzk5MHZhci5oIiAxCiMgNDkgIi4u Ly4uLy4uLy4uL2Rldi9pYy9hbTc5OTB2YXIuaCIKc3RydWN0IGFtNzk5MF9zb2Z0YyB7CiAgICAg ICAgc3RydWN0IGxhbmNlX3NvZnRjIGxzYzsKfTsKCnZvaWQgYW03OTkwX2NvbmZpZyAoc3RydWN0 IGFtNzk5MF9zb2Z0YyAqKTsKaW50IGFtNzk5MF9pbnRyICh2b2lkICopOwojIDExMSAiYW03OTkw LmMiIDIKCnZvaWQgYW03OTkwX21lbWluaXQgKHN0cnVjdCBsYW5jZV9zb2Z0YyAqKTsKdm9pZCBh bTc5OTBfc3RhcnQgKHN0cnVjdCBpZm5ldCAqKTsKCgojIDEgIm9wdF9kZGIuaCIgMQojIDExNyAi YW03OTkwLmMiIDIKIyAxMjggImFtNzk5MC5jIgogdm9pZCBhbTc5OTBfcmludCAoc3RydWN0IGxh bmNlX3NvZnRjICopOwogdm9pZCBhbTc5OTBfdGludCAoc3RydWN0IGxhbmNlX3NvZnRjICopOwoj IDQwNSAiYW03OTkwLmMiCmludAphbTc5OTBfaW50cihhcmcpCiAgICAgICAgdm9pZCAqYXJnOwp7 CiAgICAgICAgc3RydWN0IGxhbmNlX3NvZnRjICpzYyA9IGFyZzsKICAgICAgICB1X2ludDE2X3Qg aXNyOwoKICAgICAgICBpc3IgPSAoKnNjLT5zY19yZGNzcikoc2MsIDB4MDAwMCkgfCBzYy0+c2Nf c2F2ZWRfY3NyMDsKICAgICAgICBzYy0+c2Nfc2F2ZWRfY3NyMCA9IDA7CgoKCgoKICAgICAgICBp ZiAoKGlzciAmIDB4MDA4MCkgPT0gMCkKICAgICAgICAgICAgICAgIHJldHVybiAoMCk7CiMgNDMx ICJhbTc5OTAuYyIKICAgICAgICAoKnNjLT5zY193cmNzcikoc2MsIDB4MDAwMCwKICAgICAgICAg ICAgaXNyICYgKDB4MDA0MCB8IDB4NDAwMCB8IDB4MTAwMCB8IDB4MDgwMCB8CiAgICAgICAgICAg ICAgICAgICAweDA0MDAgfCAweDAyMDAgfCAweDAxMDApKTsKCiAgICAgICAgaWYgKGlzciAmIDB4 ODAwMCkgewogICAgICAgICAgICAgICAgaWYgKGlzciAmIDB4NDAwMCkgewoKCgogICAgICAgICAg ICAgICAgICAgICAgICAoJnNjLT5zY19ldGhlcmNvbS5lY19pZiktPmlmX2RhdGEuaWZpX29lcnJv cnMrKzsKICAgICAgICAgICAgICAgIH0KCgoKCgoKICAgICAgICAgICAgICAgIGlmIChpc3IgJiAw eDEwMDApIHsKCgoKICAgICAgICAgICAgICAgICAgICAgICAgKCZzYy0+c2NfZXRoZXJjb20uZWNf aWYpLT5pZl9kYXRhLmlmaV9pZXJyb3JzKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg ICAgICBpZiAoaXNyICYgMHgwODAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50Zigi JXM6IG1lbW9yeSBlcnJvclxuIiwgc2MtPnNjX2Rldi5kdl94bmFtZSk7CiAgICAgICAgICAgICAg ICAgICAgICAgIGxhbmNlX3Jlc2V0KHNjKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu ICgxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgoaXNyICYgMHgw MDIwKSA9PSAwKSB7CiAgICAgICAgICAgICAgICBwcmludGYoIiVzOiByZWNlaXZlciBkaXNhYmxl ZFxuIiwgc2MtPnNjX2Rldi5kdl94bmFtZSk7CiAgICAgICAgICAgICAgICAoJnNjLT5zY19ldGhl cmNvbS5lY19pZiktPmlmX2RhdGEuaWZpX2llcnJvcnMrKzsKICAgICAgICAgICAgICAgIGxhbmNl X3Jlc2V0KHNjKTsKICAgICAgICAgICAgICAgIHJldHVybiAoMSk7CiAgICAgICAgfQogICAgICAg IGlmICgoaXNyICYgMHgwMDEwKSA9PSAwKSB7CiAgICAgICAgICAgICAgICBwcmludGYoIiVzOiB0 cmFuc21pdHRlciBkaXNhYmxlZFxuIiwgc2MtPnNjX2Rldi5kdl94bmFtZSk7CiAgICAgICAgICAg ICAgICAoJnNjLT5zY19ldGhlcmNvbS5lY19pZiktPmlmX2RhdGEuaWZpX29lcnJvcnMrKzsKICAg ICAgICAgICAgICAgIGxhbmNlX3Jlc2V0KHNjKTsKICAgICAgICAgICAgICAgIHJldHVybiAoMSk7 CiAgICAgICAgfQoKCgoKCiAgICAgICAgc2MtPnNjX2hhdmVjYXJyaWVyID0gMTsKCiAgICAgICAg aWYgKGlzciAmIDB4MDQwMCkKICAgICAgICAgICAgICAgIGFtNzk5MF9yaW50KHNjKTsKICAgICAg ICBpZiAoaXNyICYgMHgwMjAwKQogICAgICAgICAgICAgICAgYW03OTkwX3RpbnQoc2MpOwoKCgoK CiAgICAgICAgcmV0dXJuICgxKTsKfQo=