From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16944 invoked by alias); 10 May 2002 00:56:02 -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 16856 invoked by uid 71); 10 May 2002 00:56:00 -0000 Resent-Date: 10 May 2002 00:56:00 -0000 Resent-Message-ID: <20020510005600.16854.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, thorpej@wasabisystems.com Received:(qmail 5422 invoked by uid 61); 10 May 2002 00:53:48 -0000 Message-Id:<20020510005348.5421.qmail@sources.redhat.com> Date: Thu, 09 May 2002 17:56:00 -0000 From: thorpej@wasabisystems.com Reply-To: thorpej@wasabisystems.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version:gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: optimization/6618: ICE in delete_insn, at cfgrtl.c:141 using shle-netbsdelf target X-SW-Source: 2002-05/txt/msg00281.txt.bz2 List-Id: >Number: 6618 >Category: optimization >Synopsis: ICE in delete_insn, at cfgrtl.c:141 using shle-netbsdelf target >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: ice-on-legal-code >Submitter-Id: net >Arrival-Date: Thu May 09 17:56:00 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Jason R Thorpe >Release: gcc version 3.2 20020509 (experimental) >Organization: >Environment: i386-netbsdelf host shle-netbsdelf target >Description: /usr/local/gnu/bin/shle-unknown-netbsdelf-gcc -O1 -c bug.i bug.c: In function `dophn_exec': bug.c:312: Internal compiler error in delete_insn, at cfgrtl.c:141 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. >How-To-Repeat: Build the attached file using shle-netbsdelf-gcc -O1. A sh-linux compiler should also show the bug, since the sh-netbsdelf configuration is very similar. sh-elf may also show the bug, if the -m3 flag is used. >Fix: The file can be compiled with either -O0 or -O2. >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="bug.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bug.i" IyAxICJidWcuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+IgojIDEgImJ1 Zy5jIgoKCiMgMSAiZmlsZS5oIiAxCiMgMzQgImZpbGUuaCIKIyAxICIvdTEvZGlza2xlc3MvZHJl YW1jYXN0L3Vzci9pbmNsdWRlL2ludHR5cGVzLmgiIDEgMyA0CiMgNDIgIi91MS9kaXNrbGVzcy9k cmVhbWNhc3QvdXNyL2luY2x1ZGUvaW50dHlwZXMuaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2Ry ZWFtY2FzdC91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzIDQKIyA2MyAiL3UxL2Rpc2tsZXNz L2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNz L2RyZWFtY2FzdC91c3IvaW5jbHVkZS9tYWNoaW5lL2NkZWZzLmgiIDEgMyA0CgoKCgojIDEgIi91 MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc2gzL2NkZWZzLmgiIDEgMyA0CiMgNiAi L3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9tYWNoaW5lL2NkZWZzLmgiIDIgMyA0 CiMgNjQgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDIg MyA0CgojIDEgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2Vs Zi5oIiAxIDMgNAojIDY2ICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3N5cy9j ZGVmcy5oIiAyIDMgNAojIDQzICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL2lu dHR5cGVzLmgiIDIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9z eXMvaW50dHlwZXMuaCIgMSAzIDQKIyA0NiAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5j bHVkZS9zeXMvaW50dHlwZXMuaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3Iv aW5jbHVkZS9zeXMvc3RkaW50LmgiIDEgMyA0CiMgNDIgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3Qv dXNyL2luY2x1ZGUvc3lzL3N0ZGludC5oIiAzIDQKIyAxICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0 L3Vzci9pbmNsdWRlL21hY2hpbmUvaW50X3R5cGVzLmgiIDEgMyA0CgoKIyAxICIvdTEvZGlza2xl c3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3NoMy9pbnRfdHlwZXMuaCIgMSAzIDQKIyA0NyAiL3Ux L2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zaDMvaW50X3R5cGVzLmgiIDMgNAp0eXBl ZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90 Owp0eXBlZGVmIHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50 IF9fdWludDE2X3Q7CnR5cGVkZWYgaW50IF9faW50MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg X191aW50MzJfdDsKCgoKCgp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwoKdHlwZWRl ZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdWludDY0X3Q7CgoKCgoKCnR5cGVkZWYgaW50IF9f aW50cHRyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludHB0cl90OwojIDQgIi91MS9kaXNr bGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvbWFjaGluZS9pbnRfdHlwZXMuaCIgMiAzIDQKIyA0 MyAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zeXMvc3RkaW50LmgiIDIgMyA0 CgoKdHlwZWRlZiBfX2ludDhfdCBpbnQ4X3Q7CgoKCgp0eXBlZGVmIF9fdWludDhfdCB1aW50OF90 OwoKCgoKdHlwZWRlZiBfX2ludDE2X3QgaW50MTZfdDsKCgoKCnR5cGVkZWYgX191aW50MTZfdCB1 aW50MTZfdDsKCgoKCnR5cGVkZWYgX19pbnQzMl90IGludDMyX3Q7CgoKCgp0eXBlZGVmIF9fdWlu dDMyX3QgdWludDMyX3Q7CgoKCgp0eXBlZGVmIF9faW50NjRfdCBpbnQ2NF90OwoKCgoKdHlwZWRl ZiBfX3VpbnQ2NF90IHVpbnQ2NF90OwoKCgoKdHlwZWRlZiBfX2ludHB0cl90IGludHB0cl90OwoK CgoKdHlwZWRlZiBfX3VpbnRwdHJfdCB1aW50cHRyX3Q7CgoKCiMgMSAiL3UxL2Rpc2tsZXNzL2Ry ZWFtY2FzdC91c3IvaW5jbHVkZS9tYWNoaW5lL2ludF9td2d3dHlwZXMuaCIgMSAzIDQKCgojIDEg Ii91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc2gzL2ludF9td2d3dHlwZXMuaCIg MSAzIDQKIyA0OCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zaDMvaW50X213 Z3d0eXBlcy5oIiAzIDQKdHlwZWRlZiBzaWduZWQgY2hhciBpbnRfbGVhc3Q4X3Q7CnR5cGVkZWYg dW5zaWduZWQgY2hhciB1aW50X2xlYXN0OF90Owp0eXBlZGVmIHNob3J0IGludCBpbnRfbGVhc3Qx Nl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1aW50X2xlYXN0MTZfdDsKdHlwZWRlZiBp bnQgaW50X2xlYXN0MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9sZWFzdDMyX3Q7CgoK CgoKdHlwZWRlZiBsb25nIGxvbmcgaW50IGludF9sZWFzdDY0X3Q7Cgp0eXBlZGVmIHVuc2lnbmVk IGxvbmcgbG9uZyBpbnQgdWludF9sZWFzdDY0X3Q7CgoKCnR5cGVkZWYgaW50IGludF9mYXN0OF90 Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2Zhc3Q4X3Q7CnR5cGVkZWYgaW50IGludF9mYXN0 MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9mYXN0MTZfdDsKdHlwZWRlZiBpbnQgaW50 X2Zhc3QzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2Zhc3QzMl90OwoKCgoKCnR5cGVk ZWYgbG9uZyBsb25nIGludCBpbnRfZmFzdDY0X3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9u ZyBpbnQgdWludF9mYXN0NjRfdDsKIyA4OCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5j bHVkZS9zaDMvaW50X213Z3d0eXBlcy5oIiAzIDQKdHlwZWRlZiBsb25nIGxvbmcgaW50IGludG1h eF90OwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnRtYXhfdDsKIyA0ICIvdTEv ZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL21hY2hpbmUvaW50X213Z3d0eXBlcy5oIiAy IDMgNAojIDk1ICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3N5cy9zdGRpbnQu aCIgMiAzIDQKCgojIDEgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvbWFjaGlu ZS9pbnRfbGltaXRzLmgiIDEgMyA0CgoKIyAxICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9p bmNsdWRlL3NoMy9pbnRfbGltaXRzLmgiIDEgMyA0CiMgNCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2Fz dC91c3IvaW5jbHVkZS9tYWNoaW5lL2ludF9saW1pdHMuaCIgMiAzIDQKIyA5OCAiL3UxL2Rpc2ts ZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zeXMvc3RkaW50LmgiIDIgMyA0CgoKCiMgMSAiL3Ux L2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9tYWNoaW5lL2ludF9jb25zdC5oIiAxIDMg NAoKCiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zaDMvaW50X2NvbnN0 LmgiIDEgMyA0CiMgNCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9tYWNoaW5l L2ludF9jb25zdC5oIiAyIDMgNAojIDEwMiAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5j bHVkZS9zeXMvc3RkaW50LmgiIDIgMyA0CiMgNDcgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNy L2luY2x1ZGUvc3lzL2ludHR5cGVzLmgiIDIgMyA0CgoKIyAxICIvdTEvZGlza2xlc3MvZHJlYW1j YXN0L3Vzci9pbmNsdWRlL21hY2hpbmUvaW50X2ZtdGlvLmgiIDEgMyA0CgoKIyAxICIvdTEvZGlz a2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3NoMy9pbnRfZm10aW8uaCIgMSAzIDQKIyA0ICIv dTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL21hY2hpbmUvaW50X2ZtdGlvLmgiIDIg MyA0CiMgNTAgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lzL2ludHR5cGVz LmgiIDIgMyA0CiMgNDQgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvaW50dHlw ZXMuaCIgMiAzIDQKCgppbnRtYXhfdCBzdHJ0b2ltYXggKGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0 LCBjaGFyICoqIF9fcmVzdHJpY3QsIGludCk7Cgp1aW50bWF4X3Qgc3RydG91bWF4IChjb25zdCBj aGFyICogX19yZXN0cmljdCwgY2hhciAqKiBfX3Jlc3RyaWN0LCBpbnQpOwoKCiMgMzUgImZpbGUu aCIgMgoKCiMgMSAiL3UxL25ldGJzZC9zcmMvdXNyLmJpbi9maWxlL2NvbmZpZy5oIiAxCiMgMzgg ImZpbGUuaCIgMgoKCnR5cGVkZWYgaW50IGludDMyOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50 MzI7CnR5cGVkZWYgc2hvcnQgaW50MTY7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWludDE2Owp0 eXBlZGVmIGNoYXIgaW50ODsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4OwojIDYwICJmaWxl LmgiCnN0cnVjdCBtYWdpYyB7CiAgICAgICAgdWludDE2IGNvbnRfbGV2ZWw7CiAgICAgICAgdWlu dDggbm9zcGZsYWc7CiAgICAgICAgdWludDggZmxhZzsKCgoKICAgICAgICB1aW50OCByZWxuOwog ICAgICAgIHVpbnQ4IHZhbGxlbjsKICAgICAgICB1aW50OCB0eXBlOwogICAgICAgIHVpbnQ4IGlu X3R5cGU7CiMgODYgImZpbGUuaCIKICAgICAgICB1aW50OCBpbl9vcDsKICAgICAgICB1aW50OCBt YXNrX29wOwojIDk3ICJmaWxlLmgiCiAgICAgICAgaW50MzIgb2Zmc2V0OwogICAgICAgIGludDMy IGluX29mZnNldDsKICAgICAgICB1bmlvbiBWQUxVRVRZUEUgewogICAgICAgICAgICAgICAgdW5z aWduZWQgY2hhciBiOwogICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgaDsKICAgICAgICAg ICAgICAgIHVpbnQzMiBsOwogICAgICAgICAgICAgICAgY2hhciBzWzMyXTsKICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGNoYXIgaHNbMl07CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGhs WzRdOwogICAgICAgIH0gdmFsdWU7CiAgICAgICAgdWludDMyIG1hc2s7CiAgICAgICAgY2hhciBk ZXNjWzUwXTsKfTsKIyAxMjEgImZpbGUuaCIKc3RydWN0IG1saXN0IHsKICAgICAgICBzdHJ1Y3Qg bWFnaWMgKm1hZ2ljOwogICAgICAgIHVpbnQzMiBubWFnaWM7CiAgICAgICAgc3RydWN0IG1saXN0 ICpuZXh0LCAqcHJldjsKfTsKCiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVk ZS9zdGRpby5oIiAxIDMgNAojIDQ0ICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRl L3N0ZGlvLmgiIDMgNAojIDEgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lz L2Fuc2kuaCIgMSAzIDQKIyA0MiAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9z eXMvYW5zaS5oIiAzIDQKIyAxICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL21h Y2hpbmUvaW50X3R5cGVzLmgiIDEgMyA0CiMgNDMgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNy L2luY2x1ZGUvc3lzL2Fuc2kuaCIgMiAzIDQKCnR5cGVkZWYgY2hhciAqIF9fY2FkZHJfdDsKdHlw ZWRlZiBfX3VpbnQzMl90IF9fZ2lkX3Q7CnR5cGVkZWYgX191aW50MzJfdCBfX21vZGVfdDsKdHlw ZWRlZiBfX2ludDY0X3QgX19vZmZfdDsKdHlwZWRlZiBfX2ludDMyX3QgX19waWRfdDsKdHlwZWRl ZiBfX3VpbnQ4X3QgX19zYV9mYW1pbHlfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19zb2NrbGVu X3Q7CnR5cGVkZWYgX191aW50MzJfdCBfX3VpZF90OwojIDQ1ICIvdTEvZGlza2xlc3MvZHJlYW1j YXN0L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CgoKIyAxICIvdTEvZGlza2xlc3MvZHJlYW1j YXN0L3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJldGVzdC5oIiAxIDMgNAojIDQ4ICIvdTEvZGlza2xl c3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CgojIDEgIi91MS9kaXNrbGVz cy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvbWFjaGluZS9hbnNpLmgiIDEgMyA0CgoKCgojIDEgIi91 MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc2gzL2Fuc2kuaCIgMSAzIDQKIyA0MSAi L3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zaDMvYW5zaS5oIiAzIDQKIyAxICIv dTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL21hY2hpbmUvaW50X3R5cGVzLmgiIDEg MyA0CiMgNDIgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc2gzL2Fuc2kuaCIg MiAzIDQKIyA4OCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zaDMvYW5zaS5o IiAzIDQKdHlwZWRlZiB1bmlvbiB7CiAgICAgICAgY2hhciBfX21ic3RhdGU4WzEyOF07CiAgICAg ICAgX19pbnQ2NF90IF9fbWJzdGF0ZUw7Cn0gX19tYnN0YXRlX3Q7CiMgNiAiL3UxL2Rpc2tsZXNz L2RyZWFtY2FzdC91c3IvaW5jbHVkZS9tYWNoaW5lL2Fuc2kuaCIgMiAzIDQKIyA1MCAiL3UxL2Rp c2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAoKdHlwZWRlZiB1bnNp Z25lZCBpbnQgc2l6ZV90OwoKCgojIDEgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1 ZGUvc3lzL251bGwuaCIgMSAzIDQKIyA1NiAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5j bHVkZS9zdGRpby5oIiAyIDMgNAoKCgoKCgoKdHlwZWRlZiBfX29mZl90IGZwb3NfdDsKIyA3OSAi L3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKc3RydWN0IF9f c2J1ZiB7CiAgICAgICAgdW5zaWduZWQgY2hhciAqX2Jhc2U7CiAgICAgICAgaW50IF9zaXplOwp9 OwojIDExMCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQK dHlwZWRlZiBzdHJ1Y3QgX19zRklMRSB7CiAgICAgICAgdW5zaWduZWQgY2hhciAqX3A7CiAgICAg ICAgaW50IF9yOwogICAgICAgIGludCBfdzsKICAgICAgICBzaG9ydCBfZmxhZ3M7CiAgICAgICAg c2hvcnQgX2ZpbGU7CiAgICAgICAgc3RydWN0IF9fc2J1ZiBfYmY7CiAgICAgICAgaW50IF9sYmZz aXplOwoKCiAgICAgICAgdm9pZCAqX2Nvb2tpZTsKICAgICAgICBpbnQgKCpfY2xvc2UpICh2b2lk ICopOwogICAgICAgIGludCAoKl9yZWFkKSAodm9pZCAqLCBjaGFyICosIGludCk7CiAgICAgICAg ZnBvc190ICgqX3NlZWspICh2b2lkICosIGZwb3NfdCwgaW50KTsKICAgICAgICBpbnQgKCpfd3Jp dGUpICh2b2lkICosIGNvbnN0IGNoYXIgKiwgaW50KTsKCgogICAgICAgIHN0cnVjdCBfX3NidWYg X2V4dDsKCgogICAgICAgIHVuc2lnbmVkIGNoYXIgKl91cDsKICAgICAgICBpbnQgX3VyOwoKCiAg ICAgICAgdW5zaWduZWQgY2hhciBfdWJ1ZlszXTsKICAgICAgICB1bnNpZ25lZCBjaGFyIF9uYnVm WzFdOwoKCiAgICAgICAgc3RydWN0IF9fc2J1ZiBfbGI7CgoKICAgICAgICBpbnQgX2Jsa3NpemU7 CiAgICAgICAgZnBvc190IF9vZmZzZXQ7Cn0gRklMRTsKCgpleHRlcm4gRklMRSBfX3NGW107Cgoj IDIxNiAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKCnZv aWQgY2xlYXJlcnIgKEZJTEUgKik7CmludCBmY2xvc2UgKEZJTEUgKik7CmludCBmZW9mIChGSUxF ICopOwppbnQgZmVycm9yIChGSUxFICopOwppbnQgZmZsdXNoIChGSUxFICopOwppbnQgZmdldGMg KEZJTEUgKik7CmludCBmZ2V0cG9zIChGSUxFICogX19yZXN0cmljdCwgZnBvc190ICogX19yZXN0 cmljdCk7CmNoYXIgKmZnZXRzIChjaGFyICogX19yZXN0cmljdCwgaW50LCBGSUxFICogX19yZXN0 cmljdCk7CkZJTEUgKmZvcGVuIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCBmcHJp bnRmIChGSUxFICogX19yZXN0cmljdCAsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCAuLi4pOwpp bnQgZnB1dGMgKGludCwgRklMRSAqKTsKaW50IGZwdXRzIChjb25zdCBjaGFyICogX19yZXN0cmlj dCwgRklMRSAqIF9fcmVzdHJpY3QpOwpzaXplX3QgZnJlYWQgKHZvaWQgKiBfX3Jlc3RyaWN0LCBz aXplX3QsIHNpemVfdCwgRklMRSAqIF9fcmVzdHJpY3QpOwpGSUxFICpmcmVvcGVuIChjb25zdCBj aGFyICosIGNvbnN0IGNoYXIgKiwgRklMRSAqIF9fcmVzdHJpY3QpOwppbnQgZnNjYW5mIChGSUxF ICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIC4uLik7CmludCBmc2VlayAo RklMRSAqLCBsb25nLCBpbnQpOwppbnQgZnNldHBvcyAoRklMRSAqLCBjb25zdCBmcG9zX3QgKik7 CmxvbmcgZnRlbGwgKEZJTEUgKik7CnNpemVfdCBmd3JpdGUgKGNvbnN0IHZvaWQgKiBfX3Jlc3Ry aWN0LCBzaXplX3QsIHNpemVfdCwgRklMRSAqIF9fcmVzdHJpY3QpOwoKaW50IGdldGMgKEZJTEUg Kik7CmludCBnZXRjaGFyICh2b2lkKTsKdm9pZCBwZXJyb3IgKGNvbnN0IGNoYXIgKik7CmludCBw cmludGYgKGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCAuLi4pOwppbnQgcHV0YyAoaW50LCBGSUxF ICopOwppbnQgcHV0Y2hhciAoaW50KTsKaW50IHB1dHMgKGNvbnN0IGNoYXIgKik7CmludCByZW1v dmUgKGNvbnN0IGNoYXIgKik7CnZvaWQgcmV3aW5kIChGSUxFICopOwppbnQgc2NhbmYgKGNvbnN0 IGNoYXIgKiBfX3Jlc3RyaWN0LCAuLi4pOwp2b2lkIHNldGJ1ZiAoRklMRSAqIF9fcmVzdHJpY3Qs IGNoYXIgKiBfX3Jlc3RyaWN0KTsKaW50IHNldHZidWYgKEZJTEUgKiBfX3Jlc3RyaWN0LCBjaGFy ICogX19yZXN0cmljdCwgaW50LCBzaXplX3QpOwppbnQgc3NjYW5mIChjb25zdCBjaGFyICogX19y ZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIC4uLik7CkZJTEUgKnRtcGZpbGUgKHZv aWQpOwppbnQgdW5nZXRjIChpbnQsIEZJTEUgKik7CmludCB2ZnByaW50ZiAoRklMRSAqIF9fcmVz dHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCB2b2lkICopOwoKaW50IHZwcmludGYgKGNv bnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCB2b2lkICopOwoKCmNoYXIgKmdldHMgKGNoYXIgKik7Cmlu dCBzcHJpbnRmIChjaGFyICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIC4u Lik7CmNoYXIgKnRtcG5hbSAoY2hhciAqKTsKaW50IHZzcHJpbnRmIChjaGFyICogX19yZXNpdHJj dCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIHZvaWQgKik7CgoKCgoKCmludCByZW5hbWUgKGNv bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKCgojIDI3OCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2Fz dC91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKCmNoYXIgKmN0ZXJtaWQgKGNoYXIgKik7CgoKCmNo YXIgKmN1c2VyaWQgKGNoYXIgKik7CgpGSUxFICpmZG9wZW4gKGludCwgY29uc3QgY2hhciAqKTsK aW50IGZpbGVubyAoRklMRSAqKTsKCiMgMjk2ICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9p bmNsdWRlL3N0ZGlvLmgiIDMgNAoKCgoKCgppbnQgZ2V0Y191bmxvY2tlZCAoRklMRSAqKTsKaW50 IGdldGNoYXJfdW5sb2NrZWQgKHZvaWQpOwppbnQgcHV0Y191bmxvY2tlZCAoaW50LCBGSUxFICop OwppbnQgcHV0Y2hhcl91bmxvY2tlZCAoaW50KTsKCiMgMzE1ICIvdTEvZGlza2xlc3MvZHJlYW1j YXN0L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoKaW50IHBjbG9zZSAoRklMRSAqKTsKRklMRSAq cG9wZW4gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKCgoKCgoKCgoKaW50IGdldHcgKEZJ TEUgKik7CmludCBwdXR3IChpbnQsIEZJTEUgKik7CmludCBzbnByaW50ZiAoY2hhciAqIF9fcmVz dHJpY3QsIHNpemVfdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIC4uLikKICAgICAgICAgICAg X19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhfX3ByaW50Zl9fLCAzLCA0KSkpOwppbnQgdnNucHJp bnRmIChjaGFyICogX19yZXN0cmljdCwgc2l6ZV90LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwg dm9pZCAqKQoKICAgICAgICAgICAgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhfX3ByaW50Zl9f LCAzLCAwKSkpOwoKCmNoYXIgKnRlbXBuYW0gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsK CgojIDM0NyAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQK dHlwZWRlZiBfX29mZl90IG9mZl90OwoKCgoKaW50IGZzZWVrbyAoRklMRSAqLCBfX29mZl90LCBp bnQpOwpfX29mZl90IGZ0ZWxsbyAoRklMRSAqKTsKCgoKCgoKCgoKaW50IGFzcHJpbnRmIChjaGFy ICoqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCAuLi4pCiAgICAgICAgICAg IF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18oX19wcmludGZfXywgMiwgMykpKTsKY2hhciAqZmdl dGxuIChGSUxFICogX19yZXN0cmljdCwgc2l6ZV90ICogX19yZXN0cmljdCk7CmludCBmcHVyZ2Ug KEZJTEUgKik7CnZvaWQgc2V0YnVmZmVyIChGSUxFICosIGNoYXIgKiwgaW50KTsKaW50IHNldGxp bmVidWYgKEZJTEUgKik7CmludCB2YXNwcmludGYgKGNoYXIgKiogX19yZXN0cmljdCwgY29uc3Qg Y2hhciAqIF9fcmVzdHJpY3QsIHZvaWQgKikKCiAgICAgICAgICAgIF9fYXR0cmlidXRlX18oKF9f Zm9ybWF0X18oX19wcmludGZfXywgMiwgMCkpKTsKaW50IHZzY2FuZiAoY29uc3QgY2hhciAqIF9f cmVzdHJpY3QsIHZvaWQgKikKICAgICAgICAgICAgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhf X3NjYW5mX18sIDEsIDApKSk7CmludCB2c3NjYW5mIChjb25zdCBjaGFyICogX19yZXN0cmljdCwg Y29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIHZvaWQgKikKCiAgICAgICAgICAgIF9fYXR0cmlidXRl X18oKF9fZm9ybWF0X18oX19zY2FuZl9fLCAyLCAwKSkpOwpjb25zdCBjaGFyICpmbXRjaGVjayAo Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopCiAgICAgICAgICAgIF9fYXR0cmlidXRlX18oKF9f Zm9ybWF0X2FyZ19fKDIpKSk7CgojIDM5MSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5j bHVkZS9zdGRpby5oIiAzIDQKCkZJTEUgKmZ1bm9wZW4gKGNvbnN0IHZvaWQgKiwgaW50ICgqKSh2 b2lkICosIGNoYXIgKiwgaW50KSwgaW50ICgqKSh2b2lkICosIGNvbnN0IGNoYXIgKiwgaW50KSwg ZnBvc190ICgqKSh2b2lkICosIGZwb3NfdCwgaW50KSwgaW50ICgqKSh2b2lkICopKTsKCgoKCgoK CgoKCgoKCmludCBfX3NyZ2V0IChGSUxFICopOwppbnQgX19zdmZzY2FuZiAoRklMRSAqIF9fcmVz dHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCB2b2lkICopOwoKaW50IF9fc3didWYgKGlu dCwgRklMRSAqKTsKCgoKCgoKCgpzdGF0aWMgX19pbmxpbmUgaW50IF9fc3B1dGMoaW50IF9jLCBG SUxFICpfcCkgewogICAgICAgIGlmICgtLV9wLT5fdyA+PSAwIHx8IChfcC0+X3cgPj0gX3AtPl9s YmZzaXplICYmIChjaGFyKV9jICE9ICdcbicpKQogICAgICAgICAgICAgICAgcmV0dXJuICgqX3At Pl9wKysgPSBfYyk7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJuIChfX3N3YnVm KF9jLCBfcCkpOwp9CiMgMTI4ICJmaWxlLmgiIDIKIyAxICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0 L3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMyA0CiMgNDcgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3Qv dXNyL2luY2x1ZGUvZXJybm8uaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3Iv aW5jbHVkZS9zeXMvZXJybm8uaCIgMSAzIDQKIyA0OCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91 c3IvaW5jbHVkZS9lcnJuby5oIiAyIDMgNAojIDEgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNy L2luY2x1ZGUvc3lzL2ZlYXR1cmV0ZXN0LmgiIDEgMyA0CiMgNDkgIi91MS9kaXNrbGVzcy9kcmVh bWNhc3QvdXNyL2luY2x1ZGUvZXJybm8uaCIgMiAzIDQKCgoKaW50ICpfX2Vycm5vICh2b2lkKTsK CgoKCgpleHRlcm4gY29uc3QgaW50IHN5c19uZXJyIF9fYXNtX18oIl9fc3lzX25lcnIxNCIpOwpl eHRlcm4gY29uc3QgY2hhciAqY29uc3QgKnN5c19lcnJsaXN0IF9fYXNtX18oIl9fc3lzX2Vycmxp c3QxNCIpOwoKCiMgMTI5ICJmaWxlLmgiIDIKIyAxMzkgImZpbGUuaCIKZXh0ZXJuIGludCBhcHBy ZW50aWNlIChjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBpbnQgYXNjbWFnaWMgKHVuc2lnbmVk IGNoYXIgKiwgaW50KTsKZXh0ZXJuIHZvaWQgZXJyb3IgKGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0 ZXJuIHZvaWQgY2tmcHV0cyAoY29uc3QgY2hhciAqLCBGSUxFICopOwpzdHJ1Y3Qgc3RhdDsKZXh0 ZXJuIGludCBmc21hZ2ljIChjb25zdCBjaGFyICosIHN0cnVjdCBzdGF0ICopOwpleHRlcm4gY2hh ciAqZm10dGltZSAobG9uZywgaW50KTsKZXh0ZXJuIGludCBpc19jb21wcmVzcyAoY29uc3QgdW5z aWduZWQgY2hhciAqLCBpbnQgKik7CmV4dGVybiBpbnQgaXNfdGFyICh1bnNpZ25lZCBjaGFyICos IGludCk7CmV4dGVybiB2b2lkIG1hZ3dhcm4gKGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0ZXJuIHZv aWQgbWR1bXAgKHN0cnVjdCBtYWdpYyAqKTsKZXh0ZXJuIHZvaWQgcHJvY2VzcyAoY29uc3QgY2hh ciAqLCBpbnQpOwpleHRlcm4gdm9pZCBzaG93c3RyIChGSUxFICosIGNvbnN0IGNoYXIgKiwgaW50 KTsKZXh0ZXJuIGludCBzb2Z0bWFnaWMgKHVuc2lnbmVkIGNoYXIgKiwgaW50KTsKZXh0ZXJuIGlu dCB0cnlpdCAodW5zaWduZWQgY2hhciAqLCBpbnQsIGludCk7CmV4dGVybiBpbnQgem1hZ2ljICh1 bnNpZ25lZCBjaGFyICosIGludCk7CmV4dGVybiB2b2lkIGNrZnByaW50ZiAoRklMRSAqLCBjb25z dCBjaGFyICosIC4uLik7CmV4dGVybiB1aW50MzIgc2lnbmV4dGVuZCAoc3RydWN0IG1hZ2ljICos IHVuc2lnbmVkIGludDMyKTsKZXh0ZXJuIHZvaWQgdHJ5ZWxmIChpbnQsIHVuc2lnbmVkIGNoYXIg KiwgaW50KTsKCmV4dGVybiBjaGFyICpwcm9nbmFtZTsKZXh0ZXJuIGNvbnN0IGNoYXIgKm1hZ2lj ZmlsZTsKZXh0ZXJuIGludCBsaW5lbm87CgpleHRlcm4gc3RydWN0IG1saXN0IG1saXN0OwoKZXh0 ZXJuIGludCBkZWJ1ZzsKZXh0ZXJuIGludCB6ZmxhZzsKZXh0ZXJuIGludCBsZmxhZzsKZXh0ZXJu IGludCBzZmxhZzsKZXh0ZXJuIGludCBpZmxhZzsKIyA0ICJidWcuYyIgMgoKCiMgMSAiL3UxL2Rp c2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzIDQKIyA0NyAiL3Ux L2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CiMgMSAiL3Ux L2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9tYWNoaW5lL3R5cGVzLmgiIDEgMyA0CgoK CgojIDEgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc2gzL3R5cGVzLmgiIDEg MyA0CiMgNTIgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc2gzL3R5cGVzLmgi IDMgNAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdm1fb2Zmc2V0X3Q7CnR5cGVkZWYgdW5zaWduZWQg bG9uZyB2bV9zaXplX3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcGFkZHJfdDsKdHlwZWRlZiB1 bnNpZ25lZCBsb25nIHBzaXplX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB2YWRkcl90Owp0eXBl ZGVmIHVuc2lnbmVkIGxvbmcgdnNpemVfdDsKCgp0eXBlZGVmIGludCByZWdpc3Rlcl90OwojIDYg Ii91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvbWFjaGluZS90eXBlcy5oIiAyIDMg NAojIDQ4ICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAy IDMgNAoKCiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9tYWNoaW5lL2lu dF90eXBlcy5oIiAxIDMgNAojIDUxICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRl L3N5cy90eXBlcy5oIiAyIDMgNAojIDk1ICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNs dWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBfX3VpbnQ4X3QgdV9pbnQ4X3Q7CnR5cGVkZWYg X191aW50MTZfdCB1X2ludDE2X3Q7CnR5cGVkZWYgX191aW50MzJfdCB1X2ludDMyX3Q7CnR5cGVk ZWYgX191aW50NjRfdCB1X2ludDY0X3Q7CgojIDEgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNy L2luY2x1ZGUvbWFjaGluZS9lbmRpYW4uaCIgMSAzIDQKCgojIDEgIi91MS9kaXNrbGVzcy9kcmVh bWNhc3QvdXNyL2luY2x1ZGUvc3lzL2VuZGlhbi5oIiAxIDMgNAojIDQ5ICIvdTEvZGlza2xlc3Mv ZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3N5cy9lbmRpYW4uaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNz L2RyZWFtY2FzdC91c3IvaW5jbHVkZS9tYWNoaW5lL2VuZGlhbl9tYWNoZGVwLmgiIDEgMyA0CgoK CiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zaDMvZW5kaWFuX21hY2hk ZXAuaCIgMSAzIDQKIyA1ICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL21hY2hp bmUvZW5kaWFuX21hY2hkZXAuaCIgMiAzIDQKIyA1MCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91 c3IvaW5jbHVkZS9zeXMvZW5kaWFuLmgiIDIgMyA0CiMgODAgIi91MS9kaXNrbGVzcy9kcmVhbWNh c3QvdXNyL2luY2x1ZGUvc3lzL2VuZGlhbi5oIiAzIDQKIyAxICIvdTEvZGlza2xlc3MvZHJlYW1j YXN0L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMgNAojIDgxICIvdTEvZGlza2xlc3MvZHJl YW1jYXN0L3Vzci9pbmNsdWRlL3N5cy9lbmRpYW4uaCIgMiAzIDQKCnR5cGVkZWYgdV9pbnQzMl90 IGluX2FkZHJfdDsKdHlwZWRlZiB1X2ludDE2X3QgaW5fcG9ydF90OwoKCl9fdWludDMyX3QgaHRv bmwgKF9fdWludDMyX3QpIF9fYXR0cmlidXRlX18oKF9fY29uc3RfXykpOwpfX3VpbnQxNl90IGh0 b25zIChfX3VpbnQxNl90KSBfX2F0dHJpYnV0ZV9fKChfX2NvbnN0X18pKTsKX191aW50MzJfdCBu dG9obCAoX191aW50MzJfdCkgX19hdHRyaWJ1dGVfXygoX19jb25zdF9fKSk7Cl9fdWludDE2X3Qg bnRvaHMgKF9fdWludDE2X3QpIF9fYXR0cmlidXRlX18oKF9fY29uc3RfXykpOwoKIyAxMTggIi91 MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lzL2VuZGlhbi5oIiAzIDQKIyAxICIv dTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL21hY2hpbmUvYnN3YXAuaCIgMSAzIDQK CgoKCiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zaDMvYnN3YXAuaCIg MSAzIDQKIyAxMiAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zaDMvYnN3YXAu aCIgMyA0Cgp1X2ludDE2X3QgYnN3YXAxNih1X2ludDE2X3QpOwp1X2ludDMyX3QgYnN3YXAzMih1 X2ludDMyX3QpOwp1X2ludDY0X3QgYnN3YXA2NCh1X2ludDY0X3QpOwoKIyA2ICIvdTEvZGlza2xl c3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL21hY2hpbmUvYnN3YXAuaCIgMiAzIDQKIyAxMTkgIi91 MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lzL2VuZGlhbi5oIiAyIDMgNAojIDQg Ii91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvbWFjaGluZS9lbmRpYW4uaCIgMiAz IDQKIyAxMDEgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgi IDIgMyA0CgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBz aG9ydCB1X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDsKdHlwZWRlZiB1bnNpZ25l ZCBsb25nIHVfbG9uZzsKCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1bmNoYXI7CnR5cGVkZWYgdW5z aWduZWQgc2hvcnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50Owp0eXBlZGVmIHVu c2lnbmVkIGxvbmcgdWxvbmc7Cgp0eXBlZGVmIHVfbG9uZyBjcHVpZF90OwoKCnR5cGVkZWYgdV9p bnQ2NF90IHVfcXVhZF90Owp0eXBlZGVmIF9faW50NjRfdCBxdWFkX3Q7CnR5cGVkZWYgcXVhZF90 ICogcWFkZHJfdDsKIyAxMzAgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lz L3R5cGVzLmgiIDMgNAp0eXBlZGVmIHF1YWRfdCBsb25nbG9uZ190Owp0eXBlZGVmIHVfcXVhZF90 IHVfbG9uZ2xvbmdfdDsKCnR5cGVkZWYgX19pbnQ2NF90IGJsa2NudF90Owp0eXBlZGVmIHVfaW50 MzJfdCBibGtzaXplX3Q7CgoKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJfdDsKCgoKdHlwZWRlZiBf X2ludDMyX3QgZGFkZHJfdDsKdHlwZWRlZiB1X2ludDMyX3QgZGV2X3Q7CnR5cGVkZWYgdV9pbnQz Ml90IGZpeHB0X3Q7CgoKdHlwZWRlZiBfX2dpZF90IGdpZF90OwoKCgp0eXBlZGVmIHVfaW50MzJf dCBpZF90Owp0eXBlZGVmIHVfaW50MzJfdCBpbm9fdDsKdHlwZWRlZiBsb25nIGtleV90OwoKCnR5 cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgp0eXBlZGVmIHVfaW50MzJfdCBubGlua190OwoKCgoK CgoKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgp0eXBlZGVmIHF1YWRfdCBybGltX3Q7CnR5cGVk ZWYgX19pbnQzMl90IHNlZ3N6X3Q7CnR5cGVkZWYgX19pbnQzMl90IHN3YmxrX3Q7CgoKdHlwZWRl ZiBfX3VpZF90IHVpZF90OwoKCgp0eXBlZGVmIF9faW50MzJfdCBkdGltZV90OwojIDIwNSAiL3Ux L2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CgpfX29mZl90 IGxzZWVrIChpbnQsIF9fb2ZmX3QsIGludCk7CmludCBmdHJ1bmNhdGUgKGludCwgX19vZmZfdCk7 CmludCB0cnVuY2F0ZSAoY29uc3QgY2hhciAqLCBfX29mZl90KTsKCiMgMjI1ICIvdTEvZGlza2xl c3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiB1bnNpZ25l ZCBsb25nIGNsb2NrX3Q7CiMgMjM2ICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRl L3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBpbnQgc3NpemVfdDsKCgoKCnR5cGVkZWYgbG9uZyB0 aW1lX3Q7CgoKCgp0eXBlZGVmIGludCBjbG9ja2lkX3Q7CgoKCgp0eXBlZGVmIGludCB0aW1lcl90 OwoKCgoKdHlwZWRlZiBpbnQgc3VzZWNvbmRzX3Q7CgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1 c2Vjb25kc190OwojIDI3NCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zeXMv dHlwZXMuaCIgMyA0CnR5cGVkZWYgX19pbnQzMl90IF9fZmRfbWFzazsKIyAyOTMgIi91MS9kaXNr bGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHN0cnVj dCBmZF9zZXQgewogICAgICAgIF9fZmRfbWFzayBmZHNfYml0c1soKCgyNTYpICsgKCgoc2l6ZW9m KF9fZmRfbWFzaykgKiA4KSkgLSAxKSkgLyAoKHNpemVvZihfX2ZkX21hc2spICogOCkpKV07Cn0g ZmRfc2V0OwojIDcgImJ1Zy5jIiAyCiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5j bHVkZS9zdHJpbmcuaCIgMSAzIDQKIyA1MCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5j bHVkZS9zdHJpbmcuaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVk ZS9zeXMvZmVhdHVyZXRlc3QuaCIgMSAzIDQKIyA1MSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91 c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzIDQKCgp2b2lkICptZW1jaHIgKGNvbnN0IHZvaWQgKiwg aW50LCBzaXplX3QpOwppbnQgbWVtY21wIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6 ZV90KTsKdm9pZCAqbWVtY3B5ICh2b2lkICogX19yZXN0cmljdCwgY29uc3Qgdm9pZCAqIF9fcmVz dHJpY3QsIHNpemVfdCk7CnZvaWQgKm1lbW1vdmUgKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXpl X3QpOwp2b2lkICptZW1zZXQgKHZvaWQgKiwgaW50LCBzaXplX3QpOwpjaGFyICpzdHJjYXQgKGNo YXIgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCk7CmNoYXIgKnN0cmNociAo Y29uc3QgY2hhciAqLCBpbnQpOwppbnQgc3RyY21wIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg Kik7CmludCBzdHJjb2xsIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmNoYXIgKnN0cmNw eSAoY2hhciAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0KTsKc2l6ZV90IHN0 cmNzcG4gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKIGNoYXIgKnN0cmVycm9yIChpbnQp OwpzaXplX3Qgc3RybGVuIChjb25zdCBjaGFyICopOwpjaGFyICpzdHJuY2F0IChjaGFyICogX19y ZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIHNpemVfdCk7CmludCBzdHJuY21wIChj b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKY2hhciAqc3RybmNweSAoY2hhciAq IF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBzaXplX3QpOwpjaGFyICpzdHJw YnJrIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmNoYXIgKnN0cnJjaHIgKGNvbnN0IGNo YXIgKiwgaW50KTsKc2l6ZV90IHN0cnNwbiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpj aGFyICpzdHJzdHIgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqc3RydG9rIChj aGFyICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QpOwoKCgpjaGFyICpzdHJ0 b2tfciAoY2hhciAqLCBjb25zdCBjaGFyICosIGNoYXIgKiopOwoKc2l6ZV90IHN0cnhmcm0gKGNo YXIgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwgc2l6ZV90KTsKCgoKdm9p ZCAqbWVtY2NweSAodm9pZCAqLCBjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsKY2hhciAqc3Ry ZHVwIChjb25zdCBjaGFyICopOwoKCgoKIyAxICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9p bmNsdWRlL3N0cmluZ3MuaCIgMSAzIDQKIyA0MyAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3Iv aW5jbHVkZS9zdHJpbmdzLmgiIDMgNAojIDEgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2lu Y2x1ZGUvc3lzL2ZlYXR1cmV0ZXN0LmgiIDEgMyA0CiMgNDQgIi91MS9kaXNrbGVzcy9kcmVhbWNh c3QvdXNyL2luY2x1ZGUvc3RyaW5ncy5oIiAyIDMgNAojIDU2ICIvdTEvZGlza2xlc3MvZHJlYW1j YXN0L3Vzci9pbmNsdWRlL3N0cmluZ3MuaCIgMyA0CgppbnQgYmNtcCAoY29uc3Qgdm9pZCAqLCBj b25zdCB2b2lkICosIHNpemVfdCk7CnZvaWQgYmNvcHkgKGNvbnN0IHZvaWQgKiwgdm9pZCAqLCBz aXplX3QpOwp2b2lkIGJ6ZXJvICh2b2lkICosIHNpemVfdCk7CmludCBmZnMgKGludCk7CmNoYXIg KmluZGV4IChjb25zdCBjaGFyICosIGludCk7CmNoYXIgKnJpbmRleCAoY29uc3QgY2hhciAqLCBp bnQpOwppbnQgc3RyY2FzZWNtcCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwppbnQgc3Ry bmNhc2VjbXAgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwoKCgojIDEgIi91 MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMyA0CiMgNjkgIi91 MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3RyaW5ncy5oIiAyIDMgNAojIDkwICIv dTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMgNApzaXplX3Qg c3RybGNhdCAoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CnNpemVfdCBzdHJsY3B5IChj aGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKY2hhciAqc3Ryc2VwIChjaGFyICoqLCBjb25z dCBjaGFyICopOwoKCiMgOCAiYnVnLmMiIDIKCiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91 c3IvaW5jbHVkZS9jdHlwZS5oIiAxIDMgNAojIDQ2ICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vz ci9pbmNsdWRlL2N0eXBlLmgiIDMgNAojIDEgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2lu Y2x1ZGUvc3lzL2ZlYXR1cmV0ZXN0LmgiIDEgMyA0CiMgNDcgIi91MS9kaXNrbGVzcy9kcmVhbWNh c3QvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMiAzIDQKIyA1OSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2Fz dC91c3IvaW5jbHVkZS9jdHlwZS5oIiAzIDQKZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9j dHlwZV87CmV4dGVybiBjb25zdCBzaG9ydCAqX3RvbG93ZXJfdGFiXzsKZXh0ZXJuIGNvbnN0IHNo b3J0ICpfdG91cHBlcl90YWJfOwoKCgppbnQgaXNhbG51bSAoaW50KTsKaW50IGlzYWxwaGEgKGlu dCk7CmludCBpc2NudHJsIChpbnQpOwppbnQgaXNkaWdpdCAoaW50KTsKaW50IGlzZ3JhcGggKGlu dCk7CmludCBpc2xvd2VyIChpbnQpOwppbnQgaXNwcmludCAoaW50KTsKaW50IGlzcHVuY3QgKGlu dCk7CmludCBpc3NwYWNlIChpbnQpOwppbnQgaXN1cHBlciAoaW50KTsKaW50IGlzeGRpZ2l0IChp bnQpOwppbnQgdG9sb3dlciAoaW50KTsKaW50IHRvdXBwZXIgKGludCk7CgoKCmludCBpc2FzY2lp IChpbnQpOwppbnQgdG9hc2NpaSAoaW50KTsKaW50IF90b2xvd2VyIChpbnQpOwppbnQgX3RvdXBw ZXIgKGludCk7CgoKCgppbnQgaXNibGFuayAoaW50KTsKCgojIDEwICJidWcuYyIgMgojIDEgIi91 MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMyA0CiMgNDIgIi91 MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAojIDEgIi91MS9k aXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmV0ZXN0LmgiIDEgMyA0CiMg NDMgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CiMg NTcgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAp0eXBl ZGVmIGludCB3Y2hhcl90OwoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHF1b3Q7CiAg ICAgICAgaW50IHJlbTsKfSBkaXZfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBsb25nIHF1 b3Q7CiAgICAgICAgbG9uZyByZW07Cn0gbGRpdl90OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewoKICAg ICAgICBsb25nIGxvbmcgaW50IHF1b3Q7CgogICAgICAgIGxvbmcgbG9uZyBpbnQgcmVtOwp9IGxs ZGl2X3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgcXVhZF90IHF1b3Q7CiAgICAgICAg cXVhZF90IHJlbTsKfSBxZGl2X3Q7CiMgOTggIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2lu Y2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gc2l6ZV90IF9fbWJfY3VyX21heDsKCgoKIHZvaWQg YWJvcnQgKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpOwogaW50IGFicyAoaW50 KTsKaW50IGF0ZXhpdCAodm9pZCAoKikodm9pZCkpOwpkb3VibGUgYXRvZiAoY29uc3QgY2hhciAq KTsKaW50IGF0b2kgKGNvbnN0IGNoYXIgKik7CmxvbmcgYXRvbCAoY29uc3QgY2hhciAqKTsKCgoK dm9pZCAqYnNlYXJjaCAoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCwgc2l6ZV90 LCBpbnQgKCopKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7CgoKdm9pZCAqY2FsbG9jIChz aXplX3QsIHNpemVfdCk7CmRpdl90IGRpdiAoaW50LCBpbnQpOwogdm9pZCBleGl0IChpbnQpIF9f YXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpOwp2b2lkIGZyZWUgKHZvaWQgKik7CiBjaGFyICpn ZXRlbnYgKGNvbnN0IGNoYXIgKik7CiBsb25nCiAgICAgICAgIGxhYnMgKGxvbmcpOwpsZGl2X3Qg bGRpdiAobG9uZywgbG9uZyk7CnZvaWQgKm1hbGxvYyAoc2l6ZV90KTsKdm9pZCBxc29ydCAodm9p ZCAqLCBzaXplX3QsIHNpemVfdCwgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikp OwoKaW50IHJhbmQgKHZvaWQpOwp2b2lkICpyZWFsbG9jICh2b2lkICosIHNpemVfdCk7CnZvaWQg c3JhbmQgKHVuc2lnbmVkKTsKZG91YmxlIHN0cnRvZCAoY29uc3QgY2hhciAqIF9fcmVzdHJpY3Qs IGNoYXIgKiogX19yZXN0cmljdCk7Cmxvbmcgc3RydG9sIChjb25zdCBjaGFyICogX19yZXN0cmlj dCwgY2hhciAqKiBfX3Jlc3RyaWN0LCBpbnQpOwp1bnNpZ25lZCBsb25nCiAgICAgICAgIHN0cnRv dWwgKGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBjaGFyICoqIF9fcmVzdHJpY3QsIGludCk7Cmlu dCBzeXN0ZW0gKGNvbnN0IGNoYXIgKik7CgoKaW50IG1ibGVuIChjb25zdCBjaGFyICosIHNpemVf dCk7CnNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBf X3Jlc3RyaWN0LCBzaXplX3QpOwppbnQgd2N0b21iIChjaGFyICosIHdjaGFyX3QpOwppbnQgbWJ0 b3djICh3Y2hhcl90ICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIHNpemVf dCk7CnNpemVfdCB3Y3N0b21icyAoY2hhciAqIF9fcmVzdHJpY3QsIGNvbnN0IHdjaGFyX3QgKiBf X3Jlc3RyaWN0LCBzaXplX3QpOwojIDE1MCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5j bHVkZS9zdGRsaWIuaCIgMyA0CmludCByYW5kX3IgKHVuc2lnbmVkIGludCAqKTsKIyAxNTkgIi91 MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApkb3VibGUgZHJh bmQ0OCAodm9pZCk7CmRvdWJsZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydFszXSk7CmxvbmcganJh bmQ0OCAodW5zaWduZWQgc2hvcnRbM10pOwp2b2lkIGxjb25nNDggKHVuc2lnbmVkIHNob3J0Wzdd KTsKbG9uZyBscmFuZDQ4ICh2b2lkKTsKbG9uZyBtcmFuZDQ4ICh2b2lkKTsKbG9uZyBucmFuZDQ4 ICh1bnNpZ25lZCBzaG9ydFszXSk7CnVuc2lnbmVkIHNob3J0ICoKICAgICAgICAgc2VlZDQ4ICh1 bnNpZ25lZCBzaG9ydFszXSk7CnZvaWQgc3JhbmQ0OCAobG9uZyk7CgppbnQgcHV0ZW52IChjb25z dCBjaGFyICopOwojIDE4MCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zdGRs aWIuaCIgMyA0CmxvbmcgYTY0bCAoY29uc3QgY2hhciAqKTsKY2hhciAqbDY0YSAobG9uZyk7Cgpj aGFyICppbml0c3RhdGUgKHVuc2lnbmVkIGxvbmcsIGNoYXIgKiwgc2l6ZV90KTsKbG9uZyByYW5k b20gKHZvaWQpOwpjaGFyICpzZXRzdGF0ZSAoY2hhciAqKTsKdm9pZCBzcmFuZG9tICh1bnNpZ25l ZCBsb25nKTsKCmNoYXIgKm1rZHRlbXAgKGNoYXIgKik7CmludCBta3N0ZW1wIChjaGFyICopOwoK Y2hhciAqbWt0ZW1wIChjaGFyICopOwoKCmludCBzZXRrZXkgKGNvbnN0IGNoYXIgKik7CgpjaGFy ICpyZWFscGF0aCAoY29uc3QgY2hhciAqLCBjaGFyICopOwoKaW50IHR0eXNsb3QgKHZvaWQpOwoK dm9pZCAqdmFsbG9jIChzaXplX3QpOwojIDIwOSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3Iv aW5jbHVkZS9zdGRsaWIuaCIgMyA0CmxvbmcgbG9uZyBpbnQgYXRvbGwgKGNvbnN0IGNoYXIgKik7 Cgpsb25nIGxvbmcgaW50IGxsYWJzIChsb25nIGxvbmcgaW50KTsKCmxsZGl2X3QgbGxkaXYgKGxv bmcgbG9uZyBpbnQsIGxvbmcgbG9uZyBpbnQpOwoKbG9uZyBsb25nIGludCBzdHJ0b2xsIChjb25z dCBjaGFyICogX19yZXN0cmljdCwgY2hhciAqKiBfX3Jlc3RyaWN0LCBpbnQpOwoKdW5zaWduZWQg bG9uZyBsb25nIGludAogICAgICAgICAgICAgICAgc3RydG91bGwgKGNvbnN0IGNoYXIgKiBfX3Jl c3RyaWN0LCBjaGFyICoqIF9fcmVzdHJpY3QsIGludCk7CiMgMjI5ICIvdTEvZGlza2xlc3MvZHJl YW1jYXN0L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKdm9pZCAqYWxsb2NhIChzaXplX3QpOwoK CmNoYXIgKmdldGJzaXplIChpbnQgKiwgbG9uZyAqKTsKY2hhciAqY2dldGNhcCAoY2hhciAqLCBj b25zdCBjaGFyICosIGludCk7CmludCBjZ2V0Y2xvc2UgKHZvaWQpOwppbnQgY2dldGVudCAoY2hh ciAqKiwgY2hhciAqKiwgY29uc3QgY2hhciAqKTsKaW50IGNnZXRmaXJzdCAoY2hhciAqKiwgY2hh ciAqKik7CmludCBjZ2V0bWF0Y2ggKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKaW50IGNn ZXRuZXh0IChjaGFyICoqLCBjaGFyICoqKTsKaW50IGNnZXRudW0gKGNoYXIgKiwgY29uc3QgY2hh ciAqLCBsb25nICopOwppbnQgY2dldHNldCAoY29uc3QgY2hhciAqKTsKaW50IGNnZXRzdHIgKGNo YXIgKiwgY29uc3QgY2hhciAqLCBjaGFyICoqKTsKaW50IGNnZXR1c3RyIChjaGFyICosIGNvbnN0 IGNoYXIgKiwgY2hhciAqKik7CgppbnQgZGFlbW9uIChpbnQsIGludCk7CiBjaGFyICpkZXZuYW1l IChkZXZfdCwgX19tb2RlX3QpOwppbnQgZ2V0bG9hZGF2ZyAoZG91YmxlIFtdLCBpbnQpOwoKdm9p ZCBjZnJlZSAodm9pZCAqKTsKCmludCBoZWFwc29ydCAodm9pZCAqLCBzaXplX3QsIHNpemVfdCwg aW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwoKaW50IG1lcmdlc29ydCAodm9p ZCAqLCBzaXplX3QsIHNpemVfdCwgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikp OwoKaW50IHJhZGl4c29ydCAoY29uc3QgdW5zaWduZWQgY2hhciAqKiwgaW50LCBjb25zdCB1bnNp Z25lZCBjaGFyICosIHVuc2lnbmVkKTsKCmludCBzcmFkaXhzb3J0IChjb25zdCB1bnNpZ25lZCBj aGFyICoqLCBpbnQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQpOwoKCmludCBzZXRl bnYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOwp2b2lkIHVuc2V0ZW52IChjb25z dCBjaGFyICopOwp2b2lkIHNldHByb2N0aXRsZSAoY29uc3QgY2hhciAqLCAuLi4pCiAgICAgICAg ICAgIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18oX19wcmludGZfXywgMSwgMikpKTsKY29uc3Qg Y2hhciAqZ2V0cHJvZ25hbWUgKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fY29uc3RfXykpOwp2b2lk IHNldHByb2duYW1lIChjb25zdCBjaGFyICopOwoKcXVhZF90IHFhYnMgKHF1YWRfdCk7CnF1YWRf dCBzdHJ0b3EgKGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBjaGFyICoqIF9fcmVzdHJpY3QsIGlu dCk7CnVfcXVhZF90IHN0cnRvdXEgKGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBjaGFyICoqIF9f cmVzdHJpY3QsIGludCk7CgppbnQgbDY0YV9yIChsb25nLCBjaGFyICosIGludCk7CgpzaXplX3Qg c2hxdW90ZSAoY29uc3QgY2hhciAqYXJnLCBjaGFyICpidWYsIHNpemVfdCBidWZzaXplKTsKc2l6 ZV90IHNocXVvdGV2IChpbnQgYXJnYywgY2hhciAqIGNvbnN0ICogYXJndiwgY2hhciAqYnVmLCBz aXplX3QgYnVmc2l6ZSk7CgoKCgoKCnFkaXZfdCBxZGl2IChxdWFkX3QsIHF1YWRfdCk7CgoKIyAx MSAiYnVnLmMiIDIKCiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS91bmlz dGQuaCIgMSAzIDQKIyA3OCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS91bmlz dGQuaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9tYWNoaW5l L2ludF90eXBlcy5oIiAxIDMgNAojIDc5ICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNs dWRlL3VuaXN0ZC5oIiAyIDMgNAoKIyAxICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNs dWRlL3N5cy9mZWF0dXJldGVzdC5oIiAxIDMgNAojIDgxICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0 L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMgNAoKIyAxICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0 L3Vzci9pbmNsdWRlL3N5cy91bmlzdGQuaCIgMSAzIDQKIyA0MSAiL3UxL2Rpc2tsZXNzL2RyZWFt Y2FzdC91c3IvaW5jbHVkZS9zeXMvdW5pc3RkLmgiIDMgNAojIDEgIi91MS9kaXNrbGVzcy9kcmVh bWNhc3QvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmV0ZXN0LmgiIDEgMyA0CiMgNDIgIi91MS9kaXNr bGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lzL3VuaXN0ZC5oIiAyIDMgNAojIDgzICIvdTEv ZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMgNAojIDk0ICIvdTEv ZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKCiB2b2lkIF9leGl0 IChpbnQpIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpOwppbnQgYWNjZXNzIChjb25zdCBj aGFyICosIGludCk7CnVuc2lnbmVkIGludCBhbGFybSAodW5zaWduZWQgaW50KTsKaW50IGNoZGly IChjb25zdCBjaGFyICopOwoKCgppbnQgY2hvd24gKGNvbnN0IGNoYXIgKiwgX191aWRfdCwgX19n aWRfdCk7CgppbnQgY2xvc2UgKGludCk7CnNpemVfdCBjb25mc3RyIChpbnQsIGNoYXIgKiwgc2l6 ZV90KTsKCgoKCgppbnQgZHVwIChpbnQpOwppbnQgZHVwMiAoaW50LCBpbnQpOwppbnQgZXhlY2wg KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgZXhlY2xlIChjb25zdCBjaGFy ICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IGV4ZWNscCAoY29uc3QgY2hhciAqLCBjb25zdCBj aGFyICosIC4uLik7CmludCBleGVjdiAoY29uc3QgY2hhciAqLCBjaGFyICogY29uc3QgKik7Cmlu dCBleGVjdmUgKGNvbnN0IGNoYXIgKiwgY2hhciAqIGNvbnN0ICosIGNoYXIgKiBjb25zdCAqKTsK aW50IGV4ZWN2cCAoY29uc3QgY2hhciAqLCBjaGFyICogY29uc3QgKik7Cl9fcGlkX3QgZm9yayAo dm9pZCk7CmxvbmcgZnBhdGhjb25mIChpbnQsIGludCk7CmNoYXIgKmdldGN3ZCAoY2hhciAqLCBz aXplX3QpOwpfX2dpZF90IGdldGVnaWQgKHZvaWQpOwpfX3VpZF90IGdldGV1aWQgKHZvaWQpOwpf X2dpZF90IGdldGdpZCAodm9pZCk7CmludCBnZXRncm91cHMgKGludCwgX19naWRfdCBbXSk7CiBj aGFyICpnZXRsb2dpbiAodm9pZCk7Cl9fcGlkX3QgZ2V0cGdycCAodm9pZCk7Cl9fcGlkX3QgZ2V0 cGlkICh2b2lkKTsKX19waWRfdCBnZXRwcGlkICh2b2lkKTsKX191aWRfdCBnZXR1aWQgKHZvaWQp OwppbnQgaXNhdHR5IChpbnQpOwppbnQgbGluayAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICop Owpsb25nIHBhdGhjb25mIChjb25zdCBjaGFyICosIGludCk7CmludCBwYXVzZSAodm9pZCk7Cmlu dCBwaXBlIChpbnQgKik7CnNzaXplX3QgcmVhZCAoaW50LCB2b2lkICosIHNpemVfdCk7CmludCBy bWRpciAoY29uc3QgY2hhciAqKTsKaW50IHNldGdpZCAoX19naWRfdCk7CmludCBzZXRwZ2lkIChf X3BpZF90LCBfX3BpZF90KTsKX19waWRfdCBzZXRzaWQgKHZvaWQpOwppbnQgc2V0dWlkIChfX3Vp ZF90KTsKdW5zaWduZWQgaW50IHNsZWVwICh1bnNpZ25lZCBpbnQpOwpsb25nIHN5c2NvbmYgKGlu dCk7Cl9fcGlkX3QgdGNnZXRwZ3JwIChpbnQpOwppbnQgdGNzZXRwZ3JwIChpbnQsIF9fcGlkX3Qp OwogY2hhciAqdHR5bmFtZSAoaW50KTsKaW50IHVubGluayAoY29uc3QgY2hhciAqKTsKc3NpemVf dCB3cml0ZSAoaW50LCBjb25zdCB2b2lkICosIHNpemVfdCk7CgoKCgoKCgppbnQgZ2V0b3B0IChp bnQsIGNoYXIgKiBjb25zdCBbXSwgY29uc3QgY2hhciAqKTsKCmV4dGVybiBjaGFyICpvcHRhcmc7 CmV4dGVybiBpbnQgb3B0ZXJyOwpleHRlcm4gaW50IG9wdGluZDsKZXh0ZXJuIGludCBvcHRvcHQ7 CiMgMTkxICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQK aW50IGZkYXRhc3luYyAoaW50KTsKaW50IGZzeW5jIChpbnQpOwoKCgoKCgoKaW50IGNocm9vdCAo Y29uc3QgY2hhciAqKTsKaW50IG5pY2UgKGludCk7CiMgMjE4ICIvdTEvZGlza2xlc3MvZHJlYW1j YXN0L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKIGNoYXIgKmNyeXB0IChjb25zdCBjaGFyICos IGNvbnN0IGNoYXIgKik7CmludCBlbmNyeXB0IChjaGFyICosIGludCk7CmNoYXIgKmdldHBhc3Mg KGNvbnN0IGNoYXIgKik7Cl9fcGlkX3QgZ2V0c2lkIChfX3BpZF90KTsKIyAyNDEgIi91MS9kaXNr bGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNAppbnQgYnJrICh2b2lkICop OwppbnQgZmNoZGlyIChpbnQpOwoKCgppbnQgZmNob3duIChpbnQsIF9fdWlkX3QsIF9fZ2lkX3Qp OwoKaW50IGdldGR0YWJsZXNpemUgKHZvaWQpOwpsb25nIGdldGhvc3RpZCAodm9pZCk7CmludCBn ZXRob3N0bmFtZSAoY2hhciAqLCBzaXplX3QpOwogaW50CiAgICAgICAgIGdldHBhZ2VzaXplICh2 b2lkKTsKX19waWRfdCBnZXRwZ2lkIChfX3BpZF90KTsKCgoKaW50IGxjaG93biAoY29uc3QgY2hh ciAqLCBfX3VpZF90LCBfX2dpZF90KTsKCmludCBsb2NrZiAoaW50LCBpbnQsIF9fb2ZmX3QpOwpp bnQgcmVhZGxpbmsgKGNvbnN0IGNoYXIgKiwgY2hhciAqLCBzaXplX3QpOwp2b2lkICpzYnJrIChf X2ludHB0cl90KTsKCmludCBzZXRwZ3JwIChfX3BpZF90IHBpZCwgX19waWRfdCBwZ3JwKTsKaW50 IHNldHJlZ2lkIChfX2dpZF90LCBfX2dpZF90KTsKaW50IHNldHJldWlkIChfX3VpZF90LCBfX3Vp ZF90KTsKdm9pZCBzd2FiIChjb25zdCB2b2lkICosIHZvaWQgKiwgc2l6ZV90KTsKaW50IHN5bWxp bmsgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKdm9pZCBzeW5jICh2b2lkKTsKdXNlY29u ZHNfdCB1YWxhcm0gKHVzZWNvbmRzX3QsIHVzZWNvbmRzX3QpOwppbnQgdXNsZWVwICh1c2Vjb25k c190KTsKCgoKCl9fcGlkX3QgdmZvcmsgKHZvaWQpIF9fYXNtX18oIl9fdmZvcmsxNCIpOwoKCgpj aGFyICpnZXR3ZCAoY2hhciAqKTsKCgoKCnN0cnVjdCB0aW1ldmFsOwoKaW50IHNlbGVjdCAoaW50 LCBmZF9zZXQgKiwgZmRfc2V0ICosIGZkX3NldCAqLCBzdHJ1Y3QgdGltZXZhbCAqKTsKIyAyOTUg Ii91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApzc2l6ZV90 IHByZWFkIChpbnQsIHZvaWQgKiwgc2l6ZV90LCBfX29mZl90KTsKc3NpemVfdCBwd3JpdGUgKGlu dCwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIF9fb2ZmX3QpOwoKCgoKCgoKaW50IGFjY3QgKGNvbnN0 IGNoYXIgKik7CmludCBkZXNfY2lwaGVyIChjb25zdCBjaGFyICosIGNoYXIgKiwgbG9uZywgaW50 KTsKaW50IGRlc19zZXRrZXkgKGNvbnN0IGNoYXIgKik7CnZvaWQgZW5kdXNlcnNoZWxsICh2b2lk KTsKaW50IGV4ZWN0IChjb25zdCBjaGFyICosIGNoYXIgKiBjb25zdCAqLCBjaGFyICogY29uc3Qg Kik7CmludCBmY2hyb290IChpbnQpOwppbnQgZ2V0ZG9tYWlubmFtZSAoY2hhciAqLCBzaXplX3Qp OwppbnQgZ2V0Z3JvdXBsaXN0IChjb25zdCBjaGFyICosIF9fZ2lkX3QsIF9fZ2lkX3QgKiwgaW50 ICopOwpfX21vZGVfdCBnZXRtb2RlIChjb25zdCB2b2lkICosIF9fbW9kZV90KTsKaW50IGdldHN1 Ym9wdCAoY2hhciAqKiwgY2hhciAqIGNvbnN0ICosIGNoYXIgKiopOwogY2hhciAqZ2V0dXNlcnNo ZWxsICh2b2lkKTsKaW50IGluaXRncm91cHMgKGNvbnN0IGNoYXIgKiwgX19naWRfdCk7CmludCBp cnVzZXJvayAodV9pbnQzMl90LCBpbnQsIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKaW50 IGlzc2V0dWdpZCAodm9pZCk7CmludCBuZnNzdmMgKGludCwgdm9pZCAqKTsKaW50IHByb2ZpbCAo Y2hhciAqLCBzaXplX3QsIHVfbG9uZywgdV9pbnQpOwoKCgp2b2lkIHBzaWduYWwgKHVuc2lnbmVk IGludCwgY29uc3QgY2hhciAqKTsKCmludCByY21kIChjaGFyICoqLCBpbnQsIGNvbnN0IGNoYXIg KiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCAqKTsKCmludCByZWJvb3QgKGludCwg Y2hhciAqKTsKaW50IHJldm9rZSAoY29uc3QgY2hhciAqKTsKaW50IHJyZXN2cG9ydCAoaW50ICop OwppbnQgcnVzZXJvayAoY29uc3QgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh ciAqKTsKaW50IHNldGRvbWFpbm5hbWUgKGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKaW50IHNldGVn aWQgKF9fZ2lkX3QpOwppbnQgc2V0ZXVpZCAoX191aWRfdCk7CmludCBzZXRncm91cHMgKGludCwg Y29uc3QgX19naWRfdCAqKTsKaW50IHNldGhvc3RpZCAobG9uZyk7CmludCBzZXRob3N0bmFtZSAo Y29uc3QgY2hhciAqLCBzaXplX3QpOwppbnQgc2V0bG9naW4gKGNvbnN0IGNoYXIgKik7CnZvaWQg KnNldG1vZGUgKGNvbnN0IGNoYXIgKik7CmludCBzZXRyZ2lkIChfX2dpZF90KTsKaW50IHNldHJ1 aWQgKF9fdWlkX3QpOwp2b2lkIHNldHVzZXJzaGVsbCAodm9pZCk7CnZvaWQgc3RybW9kZSAoX19t b2RlX3QsIGNoYXIgKik7CiBjaGFyICpzdHJzaWduYWwgKGludCk7CmludCBzd2FwY3RsIChpbnQs IGNvbnN0IHZvaWQgKiwgaW50KTsKaW50IHN3YXBvbiAoY29uc3QgY2hhciAqKTsKaW50IHN5c2Nh bGwgKGludCwgLi4uKTsKcXVhZF90IF9fc3lzY2FsbCAocXVhZF90LCAuLi4pOwppbnQgdW5kZWxl dGUgKGNvbnN0IGNoYXIgKik7CgoKaW50IHJjbWRfYWYgKGNoYXIgKiosIGludCwgY29uc3QgY2hh ciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50ICosIGludCk7CgppbnQgcnJlc3Zw b3J0X2FmIChpbnQgKiwgaW50KTsKaW50IGlydXNlcm9rX3NhIChjb25zdCB2b2lkICosIGludCwg aW50LCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CgoKCgoKZXh0ZXJuIGNvbnN0IGNoYXIg KmNvbnN0ICpzeXNfc2lnbGlzdCBfX2FzbV9fKCJfX3N5c19zaWdsaXN0MTQiKTsKCmV4dGVybiBp bnQgb3B0cmVzZXQ7CmV4dGVybiBjaGFyICpzdWJvcHRhcmc7CgoKCiMgMTMgImJ1Zy5jIiAyCgoK CiMgMSAicmVhZGVsZi5oIiAxCiMgMTQgInJlYWRlbGYuaCIKdHlwZWRlZiBfX3VpbnQzMl90IEVs ZjMyX0FkZHI7CnR5cGVkZWYgX191aW50MzJfdCBFbGYzMl9PZmY7CnR5cGVkZWYgX191aW50MTZf dCBFbGYzMl9IYWxmOwp0eXBlZGVmIF9fdWludDMyX3QgRWxmMzJfV29yZDsKdHlwZWRlZiBfX3Vp bnQ4X3QgRWxmMzJfQ2hhcjsKCgoKCgoKCnR5cGVkZWYgX191aW50NjRfdCBFbGY2NF9BZGRyOwp0 eXBlZGVmIF9fdWludDY0X3QgRWxmNjRfT2ZmOwp0eXBlZGVmIF9fdWludDY0X3QgRWxmNjRfWHdv cmQ7Cgp0eXBlZGVmIF9fdWludDE2X3QgRWxmNjRfSGFsZjsKdHlwZWRlZiBfX3VpbnQzMl90IEVs ZjY0X1dvcmQ7CnR5cGVkZWYgX191aW50OF90IEVsZjY0X0NoYXI7CgoKCnR5cGVkZWYgc3RydWN0 IHsKICAgIEVsZjMyX0NoYXIgZV9pZGVudFsxNl07CiAgICBFbGYzMl9IYWxmIGVfdHlwZTsKICAg IEVsZjMyX0hhbGYgZV9tYWNoaW5lOwogICAgRWxmMzJfV29yZCBlX3ZlcnNpb247CiAgICBFbGYz Ml9BZGRyIGVfZW50cnk7CiAgICBFbGYzMl9PZmYgZV9waG9mZjsKICAgIEVsZjMyX09mZiBlX3No b2ZmOwogICAgRWxmMzJfV29yZCBlX2ZsYWdzOwogICAgRWxmMzJfSGFsZiBlX2Voc2l6ZTsKICAg IEVsZjMyX0hhbGYgZV9waGVudHNpemU7CiAgICBFbGYzMl9IYWxmIGVfcGhudW07CiAgICBFbGYz Ml9IYWxmIGVfc2hlbnRzaXplOwogICAgRWxmMzJfSGFsZiBlX3NobnVtOwogICAgRWxmMzJfSGFs ZiBlX3Noc3RybmR4Owp9IEVsZjMyX0VoZHI7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBFbGY2NF9D aGFyIGVfaWRlbnRbMTZdOwogICAgRWxmNjRfSGFsZiBlX3R5cGU7CiAgICBFbGY2NF9IYWxmIGVf bWFjaGluZTsKICAgIEVsZjY0X1dvcmQgZV92ZXJzaW9uOwogICAgRWxmNjRfQWRkciBlX2VudHJ5 OwogICAgRWxmNjRfT2ZmIGVfcGhvZmY7CiAgICBFbGY2NF9PZmYgZV9zaG9mZjsKICAgIEVsZjY0 X1dvcmQgZV9mbGFnczsKICAgIEVsZjY0X0hhbGYgZV9laHNpemU7CiAgICBFbGY2NF9IYWxmIGVf cGhlbnRzaXplOwogICAgRWxmNjRfSGFsZiBlX3BobnVtOwogICAgRWxmNjRfSGFsZiBlX3NoZW50 c2l6ZTsKICAgIEVsZjY0X0hhbGYgZV9zaG51bTsKICAgIEVsZjY0X0hhbGYgZV9zaHN0cm5keDsK fSBFbGY2NF9FaGRyOwojIDEwOCAicmVhZGVsZi5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICBFbGYz Ml9Xb3JkIHBfdHlwZTsKICAgIEVsZjMyX09mZiBwX29mZnNldDsKICAgIEVsZjMyX0FkZHIgcF92 YWRkcjsKICAgIEVsZjMyX0FkZHIgcF9wYWRkcjsKICAgIEVsZjMyX1dvcmQgcF9maWxlc3o7CiAg ICBFbGYzMl9Xb3JkIHBfbWVtc3o7CiAgICBFbGYzMl9Xb3JkIHBfZmxhZ3M7CiAgICBFbGYzMl9X b3JkIHBfYWxpZ247Cn0gRWxmMzJfUGhkcjsKCnR5cGVkZWYgc3RydWN0IHsKICAgIEVsZjY0X1dv cmQgcF90eXBlOwogICAgRWxmNjRfV29yZCBwX2ZsYWdzOwogICAgRWxmNjRfT2ZmIHBfb2Zmc2V0 OwogICAgRWxmNjRfQWRkciBwX3ZhZGRyOwogICAgRWxmNjRfQWRkciBwX3BhZGRyOwogICAgRWxm NjRfWHdvcmQgcF9maWxlc3o7CiAgICBFbGY2NF9Yd29yZCBwX21lbXN6OwogICAgRWxmNjRfWHdv cmQgcF9hbGlnbjsKfSBFbGY2NF9QaGRyOwojIDEzOSAicmVhZGVsZi5oIgp0eXBlZGVmIHN0cnVj dCB7CiAgICBFbGYzMl9Xb3JkIHNoX25hbWU7CiAgICBFbGYzMl9Xb3JkIHNoX3R5cGU7CiAgICBF bGYzMl9Xb3JkIHNoX2ZsYWdzOwogICAgRWxmMzJfQWRkciBzaF9hZGRyOwogICAgRWxmMzJfT2Zm IHNoX29mZnNldDsKICAgIEVsZjMyX1dvcmQgc2hfc2l6ZTsKICAgIEVsZjMyX1dvcmQgc2hfbGlu azsKICAgIEVsZjMyX1dvcmQgc2hfaW5mbzsKICAgIEVsZjMyX1dvcmQgc2hfYWRkcmFsaWduOwog ICAgRWxmMzJfV29yZCBzaF9lbnRzaXplOwp9IEVsZjMyX1NoZHI7Cgp0eXBlZGVmIHN0cnVjdCB7 CiAgICBFbGY2NF9Xb3JkIHNoX25hbWU7CiAgICBFbGY2NF9Xb3JkIHNoX3R5cGU7CiAgICBFbGY2 NF9PZmYgc2hfZmxhZ3M7CiAgICBFbGY2NF9BZGRyIHNoX2FkZHI7CiAgICBFbGY2NF9PZmYgc2hf b2Zmc2V0OwogICAgRWxmNjRfT2ZmIHNoX3NpemU7CiAgICBFbGY2NF9Xb3JkIHNoX2xpbms7CiAg ICBFbGY2NF9Xb3JkIHNoX2luZm87CiAgICBFbGY2NF9PZmYgc2hfYWRkcmFsaWduOwogICAgRWxm NjRfT2ZmIHNoX2VudHNpemU7Cn0gRWxmNjRfU2hkcjsKIyAxNzQgInJlYWRlbGYuaCIKdHlwZWRl ZiBzdHJ1Y3QgZWxmX25vdGUgewogICAgRWxmMzJfV29yZCBuX25hbWVzejsKICAgIEVsZjMyX1dv cmQgbl9kZXNjc3o7CiAgICBFbGYzMl9Xb3JkIG5fdHlwZTsKfSBFbGYzMl9OaGRyOwoKdHlwZWRl ZiBzdHJ1Y3QgewogICAgRWxmNjRfV29yZCBuX25hbWVzejsKICAgIEVsZjY0X1dvcmQgbl9kZXNj c3o7CiAgICBFbGY2NF9Xb3JkIG5fdHlwZTsKfSBFbGY2NF9OaGRyOwojIDE3ICJidWcuYyIgMgoK CgoKCgpfX2FzbV9fKCIuc2VjdGlvbiAiICIuaWRlbnQiICIgOyAuYXNjaXogXCIiICIkTmV0QlNE OiByZWFkZWxmLmMsdiAxLjEyIDIwMDIvMDQvMDkgMTU6MTA6MTcgYmpoMjEgRXhwICQiICJcIiA7 IC50ZXh0Iik7CgoKCgpzdGF0aWMgdm9pZCBkb3Bobl9jb3JlIChpbnQsIGludCwgaW50LCBfX29m Zl90LCBpbnQsIHNpemVfdCk7CgpzdGF0aWMgdm9pZCBkb3Bobl9leGVjIChpbnQsIGludCwgaW50 LCBfX29mZl90LCBpbnQsIHNpemVfdCk7CnN0YXRpYyB2b2lkIGRvc2huIChpbnQsIGludCwgaW50 LCBfX29mZl90LCBpbnQsIHNpemVfdCk7CgpzdGF0aWMgX191aW50MTZfdCBnZXR1MTYgKGludCwg aW50KTsKc3RhdGljIF9fdWludDMyX3QgZ2V0dTMyIChpbnQsIF9fdWludDMyX3QpOwpzdGF0aWMg X191aW50NjRfdCBnZXR1NjQgKGludCwgX191aW50NjRfdCk7CgpzdGF0aWMgX191aW50MTZfdApn ZXR1MTYoc3dhcCwgdmFsdWUpCiAgICAgICAgaW50IHN3YXA7CiAgICAgICAgX191aW50MTZfdCB2 YWx1ZTsKewogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdWludDE2X3QgdWk7CiAg ICAgICAgICAgICAgICBjaGFyIGNbMl07CiAgICAgICAgfSByZXR2YWwsIHRtcHZhbDsKCiAgICAg ICAgaWYgKHN3YXApIHsKICAgICAgICAgICAgICAgIHRtcHZhbC51aSA9IHZhbHVlOwoKICAgICAg ICAgICAgICAgIHJldHZhbC5jWzBdID0gdG1wdmFsLmNbMV07CiAgICAgICAgICAgICAgICByZXR2 YWwuY1sxXSA9IHRtcHZhbC5jWzBdOwoKICAgICAgICAgICAgICAgIHJldHVybiByZXR2YWwudWk7 CiAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7Cn0KCnN0YXRpYyBf X3VpbnQzMl90CmdldHUzMihzd2FwLCB2YWx1ZSkKICAgICAgICBpbnQgc3dhcDsKICAgICAgICBf X3VpbnQzMl90IHZhbHVlOwp7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgX191aW50 MzJfdCB1aTsKICAgICAgICAgICAgICAgIGNoYXIgY1s0XTsKICAgICAgICB9IHJldHZhbCwgdG1w dmFsOwoKICAgICAgICBpZiAoc3dhcCkgewogICAgICAgICAgICAgICAgdG1wdmFsLnVpID0gdmFs dWU7CgogICAgICAgICAgICAgICAgcmV0dmFsLmNbMF0gPSB0bXB2YWwuY1szXTsKICAgICAgICAg ICAgICAgIHJldHZhbC5jWzFdID0gdG1wdmFsLmNbMl07CiAgICAgICAgICAgICAgICByZXR2YWwu Y1syXSA9IHRtcHZhbC5jWzFdOwogICAgICAgICAgICAgICAgcmV0dmFsLmNbM10gPSB0bXB2YWwu Y1swXTsKCiAgICAgICAgICAgICAgICByZXR1cm4gcmV0dmFsLnVpOwogICAgICAgIH0gZWxzZQog ICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwp9CgpzdGF0aWMgX191aW50NjRfdApnZXR1NjQo c3dhcCwgdmFsdWUpCiAgICAgICAgaW50IHN3YXA7CiAgICAgICAgX191aW50NjRfdCB2YWx1ZTsK ewogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdWludDY0X3QgdWk7CiAgICAgICAg ICAgICAgICBjaGFyIGNbOF07CiAgICAgICAgfSByZXR2YWwsIHRtcHZhbDsKCiAgICAgICAgaWYg KHN3YXApIHsKICAgICAgICAgICAgICAgIHRtcHZhbC51aSA9IHZhbHVlOwoKICAgICAgICAgICAg ICAgIHJldHZhbC5jWzBdID0gdG1wdmFsLmNbN107CiAgICAgICAgICAgICAgICByZXR2YWwuY1sx XSA9IHRtcHZhbC5jWzZdOwogICAgICAgICAgICAgICAgcmV0dmFsLmNbMl0gPSB0bXB2YWwuY1s1 XTsKICAgICAgICAgICAgICAgIHJldHZhbC5jWzNdID0gdG1wdmFsLmNbNF07CiAgICAgICAgICAg ICAgICByZXR2YWwuY1s0XSA9IHRtcHZhbC5jWzNdOwogICAgICAgICAgICAgICAgcmV0dmFsLmNb NV0gPSB0bXB2YWwuY1syXTsKICAgICAgICAgICAgICAgIHJldHZhbC5jWzZdID0gdG1wdmFsLmNb MV07CiAgICAgICAgICAgICAgICByZXR2YWwuY1s3XSA9IHRtcHZhbC5jWzBdOwoKICAgICAgICAg ICAgICAgIHJldHVybiByZXR2YWwudWk7CiAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICBy ZXR1cm4gdmFsdWU7Cn0KIyAxMzkgImJ1Zy5jIgpzdGF0aWMgdm9pZApkb3NobihjbGFzcywgc3dh cCwgZmQsIG9mZiwgbnVtLCBzaXplKQogICAgICAgIGludCBjbGFzczsKICAgICAgICBpbnQgc3dh cDsKICAgICAgICBpbnQgZmQ7CiAgICAgICAgX19vZmZfdCBvZmY7CiAgICAgICAgaW50IG51bTsK ICAgICAgICBzaXplX3Qgc2l6ZTsKewogICAgICAgIEVsZjMyX1NoZHIgc2gzMjsKICAgICAgICBF bGY2NF9TaGRyIHNoNjQ7CgogICAgICAgIGlmIChsc2VlayhmZCwgb2ZmLCAwKSA9PSAtMSkKICAg ICAgICAgICAgICAgIGVycm9yKCJsc2VlayBmYWlsZWQgKCVzKS5cbiIsIHN0cmVycm9yKCgqX19l cnJubygpKSkpOwoKICAgICAgICBmb3IgKCA7IG51bTsgbnVtLS0pIHsKICAgICAgICAgICAgICAg IGlmIChyZWFkKGZkLCAoY2xhc3MgPT0gMSA/ICh2b2lkICopICZzaDMyIDogKHZvaWQgKikgJnNo NjQpLCBzaXplKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoInJlYWQgZmFp bGVkICglcykuXG4iLCBzdHJlcnJvcigoKl9fZXJybm8oKSkpKTsKICAgICAgICAgICAgICAgIGlm ICgoY2xhc3MgPT0gMSA/IGdldHUzMihzd2FwLCBzaDMyLnNoX3R5cGUpIDogZ2V0dTMyKHN3YXAs IHNoNjQuc2hfdHlwZSkpID09IDIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSBw cmludGYgKCIsIG5vdCBzdHJpcHBlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47 CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICh2b2lkKSBwcmludGYgKCIsIHN0 cmlwcGVkIik7Cn0KCgoKCgoKc3RhdGljIHZvaWQKZG9waG5fZXhlYyhjbGFzcywgc3dhcCwgZmQs IG9mZiwgbnVtLCBzaXplKQogICAgICAgIGludCBjbGFzczsKICAgICAgICBpbnQgc3dhcDsKICAg ICAgICBpbnQgZmQ7CiAgICAgICAgX19vZmZfdCBvZmY7CiAgICAgICAgaW50IG51bTsKICAgICAg ICBzaXplX3Qgc2l6ZTsKewogICAgICAgIEVsZjMyX1BoZHIgcGgzMjsKICAgICAgICBFbGYzMl9O aGRyICpuaDMyOwogICAgICAgIEVsZjY0X1BoZHIgcGg2NDsKICAgICAgICBFbGY2NF9OaGRyICpu aDY0OwogICAgICAgIGNoYXIgKmxpbmtpbmdfc3R5bGUgPSAic3RhdGljYWxseSI7CiAgICAgICAg Y2hhciAqc2hhcmVkX2xpYnJhcmllcyA9ICIiOwogICAgICAgIGNoYXIgbmJ1ZlsxMDI0XTsKICAg ICAgICBpbnQgYnVmc2l6ZTsKICAgICAgICBzaXplX3Qgb2Zmc2V0LCBuYW1lb2Zmc2V0OwoKICAg ICAgICBpZiAobHNlZWsoZmQsIG9mZiwgMCkgPT0gLTEpCiAgICAgICAgICAgICAgICBlcnJvcigi bHNlZWsgZmFpbGVkICglcykuXG4iLCBzdHJlcnJvcigoKl9fZXJybm8oKSkpKTsKCiAgICAgICAg Zm9yICggOyBudW07IG51bS0tKSB7CiAgICAgICAgICAgICAgICBpZiAocmVhZChmZCwgKGNsYXNz ID09IDEgPyAodm9pZCAqKSAmcGgzMiA6ICh2b2lkICopICZwaDY0KSwgc2l6ZSkgPT0gLTEpCiAg ICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJyZWFkIGZhaWxlZCAoJXMpLlxuIiwgc3RyZXJy b3IoKCpfX2Vycm5vKCkpKSk7CgogICAgICAgICAgICAgICAgc3dpdGNoICgoY2xhc3MgPT0gMSA/ IGdldHUzMihzd2FwLCBwaDMyLnBfdHlwZSkgOiBnZXR1MzIoc3dhcCwgcGg2NC5wX3R5cGUpKSkg ewogICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICBsaW5raW5n X3N0eWxlID0gImR5bmFtaWNhbGx5IjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg ICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZF9saWJy YXJpZXMgPSAiICh1c2VzIHNoYXJlZCBsaWJzKSI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOwogICAgICAgICAgICAgICAgY2FzZSA0OgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAg aWYgKGxzZWVrKGZkLCAoX19vZmZfdCkgKGNsYXNzID09IDEgPyBnZXR1MzIoc3dhcCwgcGgzMi5w X29mZnNldCkgOiBnZXR1NjQoc3dhcCwgcGg2NC5wX29mZnNldCkpLCAwKSA9PSAtMSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigibHNlZWsgZmFpbGVkICglcykuXG4iLCBz dHJlcnJvcigoKl9fZXJybm8oKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnVmc2l6ZSA9 IHJlYWQoZmQsIG5idWYsIDEwMjQpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnVmc2l6 ZSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiOiAiICJyZWFk IGZhaWxlZCAoJXMpLlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry ZXJyb3IoKCpfX2Vycm5vKCkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IDA7 CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiAob2Zmc2V0ID49IGJ1ZnNpemUpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoY2xhc3MgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5o MzIgPSAoRWxmMzJfTmhkciAqKSZuYnVmW29mZnNldF07CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmg2 NCA9IChFbGY2NF9OaGRyICopJm5idWZbb2Zmc2V0XTsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvZmZzZXQgKz0gKGNsYXNzID09IDEgPyBzaXplb2YgKm5oMzIgOiBzaXplb2YgKm5o NjQpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0ICsgKGNsYXNz ID09IDEgPyBnZXR1MzIoc3dhcCwgbmgzMi0+bl9uYW1lc3opIDogZ2V0dTMyKHN3YXAsIG5oNjQt Pm5fbmFtZXN6KSkgPj0gYnVmc2l6ZSkgewoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lb2Zmc2V0ID0gb2Zmc2V0OwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAoY2xhc3MgPT0gMSA/IGdldHUzMihz d2FwLCBuaDMyLT5uX25hbWVzeikgOiBnZXR1MzIoc3dhcCwgbmg2NC0+bl9uYW1lc3opKTsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSAoKG9mZnNldCArIDMpLzQpKjQ7 CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgKyAoY2xhc3MgPT0g MSA/IGdldHUzMihzd2FwLCBuaDMyLT5uX2Rlc2NzeikgOiBnZXR1MzIoc3dhcCwgbmg2NC0+bl9k ZXNjc3opKSA+PSBidWZzaXplKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoY2xhc3MgPT0g MSA/IGdldHUzMihzd2FwLCBuaDMyLT5uX25hbWVzeikgOiBnZXR1MzIoc3dhcCwgbmg2NC0+bl9u YW1lc3opKSA9PSA0ICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNt cCgmbmJ1ZltuYW1lb2Zmc2V0XSwgIkdOVSIpID09IDAgJiYKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGNsYXNzID09IDEgPyBnZXR1MzIoc3dhcCwgbmgzMi0+bl90eXBlKSA6 IGdldHUzMihzd2FwLCBuaDY0LT5uX3R5cGUpKSA9PSAxICYmCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChjbGFzcyA9PSAxID8gZ2V0dTMyKHN3YXAsIG5oMzItPm5fZGVzY3N6 KSA6IGdldHUzMihzd2FwLCBuaDY0LT5uX2Rlc2NzeikpID09IDE2KSB7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBfX3VpbnQzMl90ICpkZXNjID0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX191aW50MzJfdCAqKSZuYnVmW29mZnNl dF07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIsIGZv ciBHTlUvIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg KGdldHUzMihzd2FwLCBkZXNjWzBdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwcmludGYoIkxpbnV4Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwcmludGYoIkh1cmQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHByaW50ZigiU29sYXJpcyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHByaW50ZigiPHVua25vd24+Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAl ZC4lZC4lZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0 dTMyKHN3YXAsIGRlc2NbMV0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGdldHUzMihzd2FwLCBkZXNjWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnZXR1MzIoc3dhcCwgZGVzY1szXSkpOwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChj bGFzcyA9PSAxID8gZ2V0dTMyKHN3YXAsIG5oMzItPm5fbmFtZXN6KSA6IGdldHUzMihzd2FwLCBu aDY0LT5uX25hbWVzeikpID09IDcgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RyY21wKCZuYnVmW25hbWVvZmZzZXRdLCAiTmV0QlNEIikgPT0gMCAmJgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xhc3MgPT0gMSA/IGdldHUzMihzd2FwLCBuaDMy LT5uX3R5cGUpIDogZ2V0dTMyKHN3YXAsIG5oNjQtPm5fdHlwZSkpID09IDEgJiYKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsYXNzID09IDEgPyBnZXR1MzIoc3dhcCwgbmgz Mi0+bl9kZXNjc3opIDogZ2V0dTMyKHN3YXAsIG5oNjQtPm5fZGVzY3N6KSkgPT0gNCkgewogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIsIGZvciBOZXRCU0Qi KTsKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiAoKGNsYXNzID09IDEgPyBnZXR1MzIoc3dhcCwgbmgzMi0+bl9u YW1lc3opIDogZ2V0dTMyKHN3YXAsIG5oNjQtPm5fbmFtZXN6KSkgPT0gOCAmJgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjbXAoJm5idWZbbmFtZW9mZnNldF0sICJGcmVl QlNEIikgPT0gMCAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xhc3Mg PT0gMSA/IGdldHUzMihzd2FwLCBuaDMyLT5uX3R5cGUpIDogZ2V0dTMyKHN3YXAsIG5oNjQtPm5f dHlwZSkpID09IDEgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsYXNz ID09IDEgPyBnZXR1MzIoc3dhcCwgbmgzMi0+bl9kZXNjc3opIDogZ2V0dTMyKHN3YXAsIG5oNjQt Pm5fZGVzY3N6KSkgPT0gNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgX191aW50MzJfdCBkZXNjID0gZ2V0dTMyKHN3YXAsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKihfX3VpbnQzMl90ICopJm5idWZbb2Zmc2V0XSk7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiwgZm9yIEZyZWVCU0Qi KTsKIyAyOTMgImJ1Zy5jIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cHJpbnRmKCIgJWQuJWQiLCBkZXNjIC8gMTAwMDAwLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRlc2MgLyAxMDAwMCAlIDEwKTsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXNjIC8gMTAwMCAlIDEwID4gMCkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIuJWQiLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYyAvIDEw MDAgJSAxMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAoKGNsYXNzID09IDEgPyBnZXR1MzIoc3dhcCwgbmgzMi0+ bl9uYW1lc3opIDogZ2V0dTMyKHN3YXAsIG5oNjQtPm5fbmFtZXN6KSkgPT0gOCAmJgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjbXAoJm5idWZbbmFtZW9mZnNldF0sICJP cGVuQlNEIikgPT0gMCAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xh c3MgPT0gMSA/IGdldHUzMihzd2FwLCBuaDMyLT5uX3R5cGUpIDogZ2V0dTMyKHN3YXAsIG5oNjQt Pm5fdHlwZSkpID09IDEgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNs YXNzID09IDEgPyBnZXR1MzIoc3dhcCwgbmgzMi0+bl9kZXNjc3opIDogZ2V0dTMyKHN3YXAsIG5o NjQtPm5fZGVzY3N6KSkgPT0gNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcHJpbnRmKCIsIGZvciBPcGVuQlNEIik7CgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcHJpbnRmKCIsICVz IGxpbmtlZCVzIiwgbGlua2luZ19zdHlsZSwgc2hhcmVkX2xpYnJhcmllcyk7Cn0KCgpzaXplX3Qg cHJwc29mZnNldHMzMltdID0gewogICAgICAgIDgsCiAgICAgICAgMjgsCiAgICAgICAgMzIsCiAg ICAgICAgODQsCn07CgpzaXplX3QgcHJwc29mZnNldHM2NFtdID0gewogICAgICAgMTIwLAp9Owoj IDM1NiAiYnVnLmMiCnN0YXRpYyBjb25zdCBjaGFyICpvc19zdHlsZV9uYW1lc1tdID0gewogICAg ICAgICJTVlI0IiwKICAgICAgICAiRnJlZUJTRCIsCiAgICAgICAgIk5ldEJTRCIsCn07CgpzdGF0 aWMgdm9pZApkb3Bobl9jb3JlKGNsYXNzLCBzd2FwLCBmZCwgb2ZmLCBudW0sIHNpemUpCiAgICAg ICAgaW50IGNsYXNzOwogICAgICAgIGludCBzd2FwOwogICAgICAgIGludCBmZDsKICAgICAgICBf X29mZl90IG9mZjsKICAgICAgICBpbnQgbnVtOwogICAgICAgIHNpemVfdCBzaXplOwp7CiAgICAg ICAgRWxmMzJfUGhkciBwaDMyOwogICAgICAgIEVsZjMyX05oZHIgKm5oMzI7CiAgICAgICAgRWxm NjRfUGhkciBwaDY0OwogICAgICAgIEVsZjY0X05oZHIgKm5oNjQ7CiAgICAgICAgc2l6ZV90IG9m ZnNldCwgbmFtZW9mZnNldCwgbm9mZnNldCwgcmVsb2Zmc2V0OwogICAgICAgIHVuc2lnbmVkIGNo YXIgYzsKICAgICAgICBpbnQgaSwgajsKICAgICAgICBjaGFyIG5idWZbMTAyNF07CiAgICAgICAg aW50IGJ1ZnNpemU7CiAgICAgICAgaW50IG9zX3N0eWxlID0gLTE7CgoKCgogICAgICAgIGZvciAo IDsgbnVtOyBudW0tLSkgewogICAgICAgICAgICAgICAgaWYgKGxzZWVrKGZkLCBvZmYsIDApID09 IC0xKQogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigibHNlZWsgZmFpbGVkICglcykuXG4i LCBzdHJlcnJvcigoKl9fZXJybm8oKSkpKTsKICAgICAgICAgICAgICAgIGlmIChyZWFkKGZkLCAo Y2xhc3MgPT0gMSA/ICh2b2lkICopICZwaDMyIDogKHZvaWQgKikgJnBoNjQpLCBzaXplKSA9PSAt MSkKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoInJlYWQgZmFpbGVkICglcykuXG4iLCBz dHJlcnJvcigoKl9fZXJybm8oKSkpKTsKICAgICAgICAgICAgICAgIG9mZiArPSBzaXplOwogICAg ICAgICAgICAgICAgaWYgKChjbGFzcyA9PSAxID8gZ2V0dTMyKHN3YXAsIHBoMzIucF90eXBlKSA6 IGdldHUzMihzd2FwLCBwaDY0LnBfdHlwZSkpICE9IDQpCiAgICAgICAgICAgICAgICAgICAgICAg IGNvbnRpbnVlOwoKCgoKCiAgICAgICAgICAgICAgICBpZiAobHNlZWsoZmQsIChfX29mZl90KSAo Y2xhc3MgPT0gMSA/IGdldHUzMihzd2FwLCBwaDMyLnBfb2Zmc2V0KSA6IGdldHU2NChzd2FwLCBw aDY0LnBfb2Zmc2V0KSksIDApID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigi bHNlZWsgZmFpbGVkICglcykuXG4iLCBzdHJlcnJvcigoKl9fZXJybm8oKSkpKTsKICAgICAgICAg ICAgICAgIGJ1ZnNpemUgPSByZWFkKGZkLCBuYnVmLCAxMDI0KTsKICAgICAgICAgICAgICAgIGlm IChidWZzaXplID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiOiAiICJyZWFk IGZhaWxlZCAoJXMpLlxuIiwgc3RyZXJyb3IoKCpfX2Vycm5vKCkpKSk7CiAgICAgICAgICAgICAg ICBvZmZzZXQgPSAwOwogICAgICAgICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgICAg ICAgICAgICBpZiAob2Zmc2V0ID49IGJ1ZnNpemUpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbGFzcyA9PSAxKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5oMzIgPSAoRWxmMzJfTmhkciAqKSZuYnVmW29m ZnNldF07CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBuaDY0ID0gKEVsZjY0X05oZHIgKikmbmJ1ZltvZmZzZXRdOwogICAgICAgICAg ICAgICAgICAgICAgICBvZmZzZXQgKz0gKGNsYXNzID09IDEgPyBzaXplb2YgKm5oMzIgOiBzaXpl b2YgKm5oNjQpOwoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgKyAoY2xh c3MgPT0gMSA/IGdldHUzMihzd2FwLCBuaDMyLT5uX25hbWVzeikgOiBnZXR1MzIoc3dhcCwgbmg2 NC0+bl9uYW1lc3opKSA+PSBidWZzaXplKSB7CgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAg ICAgICAgIG5hbWVvZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNl dCArPSAoY2xhc3MgPT0gMSA/IGdldHUzMihzd2FwLCBuaDMyLT5uX25hbWVzeikgOiBnZXR1MzIo c3dhcCwgbmg2NC0+bl9uYW1lc3opKTsKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0g KChvZmZzZXQgKyAzKS80KSo0OwojIDQ0MiAiYnVnLmMiCiAgICAgICAgICAgICAgICAgICAgICAg IGlmIChvc19zdHlsZSA9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm ICgoKGNsYXNzID09IDEgPyBnZXR1MzIoc3dhcCwgbmgzMi0+bl9uYW1lc3opIDogZ2V0dTMyKHN3 YXAsIG5oNjQtPm5fbmFtZXN6KSkgPT0gNCAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RybmNtcCgmbmJ1ZltuYW1lb2Zmc2V0XSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiQ09SRSIsIDQpID09IDApIHx8CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgoY2xhc3MgPT0gMSA/IGdldHUzMihzd2FwLCBuaDMyLT5u X25hbWVzeikgOiBnZXR1MzIoc3dhcCwgbmg2NC0+bl9uYW1lc3opKSA9PSA1ICYmCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjbXAoJm5idWZbbmFtZW9mZnNldF0sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNPUkUiKSA9PSAwKSkg ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Nfc3R5bGUgPSAwOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmICgoKGNsYXNzID09IDEgPyBnZXR1MzIoc3dhcCwgbmgzMi0+bl9uYW1l c3opIDogZ2V0dTMyKHN3YXAsIG5oNjQtPm5fbmFtZXN6KSkgPT0gOCAmJgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RyY21wKCZuYnVmW25hbWVvZmZzZXRdLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGcmVlQlNEIikgPT0gMCkpIHsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zX3N0eWxlID0gMTsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiAoKChjbGFzcyA9PSAxID8gZ2V0dTMyKHN3YXAsIG5oMzItPm5fbmFtZXN6 KSA6IGdldHUzMihzd2FwLCBuaDY0LT5uX25hbWVzeikpID49IDExICYmCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJuY21wKCZuYnVmW25hbWVvZmZzZXRdLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmV0QlNELUNPUkUiLCAxMSkg PT0gMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zX3N0eWxl ID0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHByaW50ZigiLCAlcy1zdHlsZSIsIG9zX3N0eWxlX25hbWVzW29zX3N0eWxl XSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlm IChvc19zdHlsZSA9PSAyICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xhc3MgPT0g MSA/IGdldHUzMihzd2FwLCBuaDMyLT5uX3R5cGUpIDogZ2V0dTMyKHN3YXAsIG5oNjQtPm5fdHlw ZSkpID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3VpbnQzMl90IHNp Z25vOwoKCgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiLCBmcm9t ICclLjMxcyciLCAmbmJ1ZltvZmZzZXQgKyAweDdjXSk7CgoKCgoKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtZW1jcHkoJnNpZ25vLCAmbmJ1ZltvZmZzZXQgKyAweDA4XSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHNpZ25vKSk7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgKHNpZ25hbCAldSkiLCBnZXR1MzIoc3dhcCwg c2lnbm8pKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAg ICAgICAgIGlmIChvc19zdHlsZSAhPSAyICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAo Y2xhc3MgPT0gMSA/IGdldHUzMihzd2FwLCBuaDMyLT5uX3R5cGUpIDogZ2V0dTMyKHN3YXAsIG5o NjQtPm5fdHlwZSkpID09IDMpIHsKIyA0OTYgImJ1Zy5jIgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAoY2xhc3MgPT0gMSA/IChzaXplb2YgcHJwc29mZnNl dHMzMiAvIHNpemVvZiBwcnBzb2Zmc2V0czMyWzBdKSA6IChzaXplb2YgcHJwc29mZnNldHM2NCAv IHNpemVvZiBwcnBzb2Zmc2V0czY0WzBdKSk7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVsb2Zmc2V0ID0gKGNsYXNzID09IDEgPyBwcnBzb2Zmc2V0czMy W2ldIDogcHJwc29mZnNldHM2NFtpXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBub2Zmc2V0ID0gb2Zmc2V0ICsgcmVsb2Zmc2V0OwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IDE2OwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGorKywgbm9mZnNldCsrLCByZWxvZmZzZXQrKykg ewoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm IChub2Zmc2V0ID49IGJ1ZnNpemUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ290byB0cnlhbm90aGVyOwoKCgoKCgoKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbG9mZnNldCA+PSAoY2xh c3MgPT0gMSA/IGdldHUzMihzd2FwLCBuaDMyLT5uX2Rlc2NzeikgOiBnZXR1MzIoc3dhcCwgbmg2 NC0+bl9kZXNjc3opKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnb3RvIHRyeWFub3RoZXI7CgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjID0gbmJ1Zltub2Zmc2V0XTsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1wwJykgewoKCgoKCgoK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoaiA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ290byB0cnlhbm90aGVyOwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewoKCgoK CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmICghKChpbnQpKChfY3R5cGVfICsgMSlbKGludCkoYyldICYgKDB4MTB8MHgwMXwweDAyfDB4 MDR8MHg4MCkpKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHN0cmNocigiJ1wiYCIsIChjKSkgIT0gMCkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3Rv IHRyeWFub3RoZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCgoKCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiwgZnJvbSAnJS4xNnMn IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJ1ZltvZmZz ZXQgKyAoY2xhc3MgPT0gMSA/IHBycHNvZmZzZXRzMzJbaV0gOiBwcnBzb2Zmc2V0czY0W2ldKV0p OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRyeWFub3RoZXI6CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAoY2xhc3MgPT0gMSA/IGdl dHUzMihzd2FwLCBuaDMyLT5uX2Rlc2NzeikgOiBnZXR1MzIoc3dhcCwgbmg2NC0+bl9kZXNjc3op KTsKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gKChvZmZzZXQgKyAzKS80KSo0Owog ICAgICAgICAgICAgICAgfQogICAgICAgIH0KfQoKCnZvaWQKdHJ5ZWxmKGZkLCBidWYsIG5ieXRl cykKICAgICAgICBpbnQgZmQ7CiAgICAgICAgdW5zaWduZWQgY2hhciAqYnVmOwogICAgICAgIGlu dCBuYnl0ZXM7CnsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBpbnQzMiBsOwogICAg ICAgICAgICAgICAgY2hhciBjW3NpemVvZiAoaW50MzIpXTsKICAgICAgICB9IHU7CiAgICAgICAg aW50IGNsYXNzOwogICAgICAgIGludCBzd2FwOwoKCgoKCgoKICAgICAgICBpZiAoYnVmWzBdICE9 IDB4N2YKICAgICAgICAgICAgfHwgKGJ1ZlsxXSAhPSAnRScgJiYgYnVmWzFdICE9ICdPJykKICAg ICAgICAgICAgfHwgYnVmWzJdICE9ICdMJyB8fCBidWZbM10gIT0gJ0YnKQogICAgICAgICAgICBy ZXR1cm47CgoKICAgICAgICBjbGFzcyA9IGJ1Zls0XTsKCiAgICAgICAgaWYgKGNsYXNzID09IDEp IHsKICAgICAgICAgICAgICAgIEVsZjMyX0VoZHIgZWxmaGRyOwogICAgICAgICAgICAgICAgaWYg KG5ieXRlcyA8PSBzaXplb2YgKEVsZjMyX0VoZHIpKQogICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm47CgoKICAgICAgICAgICAgICAgIHUubCA9IDE7CiAgICAgICAgICAgICAgICAodm9pZCkg bWVtY3B5KCZlbGZoZHIsIGJ1Ziwgc2l6ZW9mIGVsZmhkcik7CiAgICAgICAgICAgICAgICBzd2Fw ID0gKHUuY1tzaXplb2YoaW50MzIpIC0gMV0gKyAxKSAhPSBlbGZoZHIuZV9pZGVudFs1XTsKCiAg ICAgICAgICAgICAgICBpZiAoZ2V0dTE2KHN3YXAsIGVsZmhkci5lX3R5cGUpID09IDQpCgogICAg ICAgICAgICAgICAgICAgICAgICBkb3Bobl9jb3JlKGNsYXNzLCBzd2FwLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdldHUzMihzd2FwLCBlbGZoZHIuZV9waG9mZiksCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ2V0dTE2KHN3YXAsIGVsZmhkci5lX3BobnVtKSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnZXR1MTYoc3dhcCwgZWxmaGRyLmVfcGhlbnRzaXplKSk7CgoK CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldHUx Nihzd2FwLCBlbGZoZHIuZV90eXBlKSA9PSAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZG9waG5fZXhlYyhjbGFzcywgc3dhcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2V0dTMyKHN3YXAsIGVsZmhkci5lX3Bob2ZmKSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdldHUxNihzd2FwLCBlbGZoZHIuZV9waG51bSksCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR1MTYoc3dhcCwgZWxmaGRy LmVfcGhlbnRzaXplKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg ICAgICAgICAgZG9zaG4oY2xhc3MsIHN3YXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR1MzIoc3dhcCwgZWxmaGRyLmVf c2hvZmYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR1MTYoc3dhcCwgZWxmaGRy LmVfc2hudW0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR1MTYoc3dhcCwgZWxm aGRyLmVfc2hlbnRzaXplKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1 cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoY2xhc3MgPT0gMikgewogICAgICAgICAgICAgICAg RWxmNjRfRWhkciBlbGZoZHI7CiAgICAgICAgICAgICAgICBpZiAobmJ5dGVzIDw9IHNpemVvZiAo RWxmNjRfRWhkcikpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKCgogICAgICAgICAg ICAgICAgdS5sID0gMTsKICAgICAgICAgICAgICAgICh2b2lkKSBtZW1jcHkoJmVsZmhkciwgYnVm LCBzaXplb2YgZWxmaGRyKTsKICAgICAgICAgICAgICAgIHN3YXAgPSAodS5jW3NpemVvZihpbnQz MikgLSAxXSArIDEpICE9IGVsZmhkci5lX2lkZW50WzVdOwoKICAgICAgICAgICAgICAgIGlmIChn ZXR1MTYoc3dhcCwgZWxmaGRyLmVfdHlwZSkgPT0gNCkKCiAgICAgICAgICAgICAgICAgICAgICAg IGRvcGhuX2NvcmUoY2xhc3MsIHN3YXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZmQsCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dTY0KHN3YXAs IGVsZmhkci5lX3Bob2ZmKSwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0 dTE2KHN3YXAsIGVsZmhkci5lX3BobnVtKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnZXR1MTYoc3dhcCwgZWxmaGRyLmVfcGhlbnRzaXplKSk7CgoKCiAgICAgICAgICAgICAg ICBlbHNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXR1 MTYoc3dhcCwgZWxmaGRyLmVfdHlwZSkgPT0gMikgewogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRvcGhuX2V4ZWMoY2xhc3MsIHN3YXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmZCwKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdldHU2NChzd2FwLCBlbGZoZHIuZV9waG9mZiksCgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dTE2KHN3YXAsIGVsZmhkci5lX3BobnVtKSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHUxNihzd2FwLCBl bGZoZHIuZV9waGVudHNpemUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgICAgICAgICBkb3NobihjbGFzcywgc3dhcCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZmQsCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHU2NChzd2FwLCBl bGZoZHIuZV9zaG9mZiksCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR1MTYoc3dh cCwgZWxmaGRyLmVfc2hudW0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR1MTYo c3dhcCwgZWxmaGRyLmVfc2hlbnRzaXplKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg ICAgICByZXR1cm47CiAgICAgICAgfQp9Cg==