From mboxrd@z Thu Jan 1 00:00:00 1970 From: thomr9am@ss1000.ms.mff.cuni.cz To: gcc-gnats@gcc.gnu.org Subject: optimization/4413: GCC 3.0.2 prerelease internal error when compiling linux-2.4.10 Date: Thu, 27 Sep 2001 13:56:00 -0000 Message-id: <20010927204613.22877.qmail@sourceware.cygnus.com> X-SW-Source: 2001-09/msg00511.html List-Id: >Number: 4413 >Category: optimization >Synopsis: GCC 3.0.2 prerelease internal error when compiling linux-2.4.10 >Confidential: no >Severity: critical >Priority: medium >Responsible: unassigned >State: open >Class: ice-on-legal-code >Submitter-Id: net >Arrival-Date: Thu Sep 27 13:56:01 PDT 2001 >Closed-Date: >Last-Modified: >Originator: thomr9am@ss1000.ms.mff.cuni.cz >Release: GNU C version 3.0.2 20010927 (prerelease) (i586-pc-linux-gnu) >Organization: >Environment: SuSE Linux 7.2, glibc 2.2.2, anything else? >Description: GCC fails with internal compiler error when compiling drivers/usb/usb-uhci.c from linux-2.4.10. After I replaced `-O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common' with `-O0', everything went well. Preprocessed file is attached. Here is the output from gcc: gcc: Warning: -pipe ignored because -save-temps specified Reading specs from /usr/src/rudo/gcc-CVS/prefix/lib/gcc-lib/i586-pc-linux-gnu/3.0.2/specs Configured with: ../gcc/configure --prefix=/usr/src/rudo/gcc-CVS/prefix --enable-shared --enable-static --enable-threads --with-cpu=k6 Thread model: posix gcc version 3.0.2 20010927 (prerelease) /usr/src/rudo/gcc-CVS/prefix/lib/gcc-lib/i586-pc-linux-gnu/3.0.2/cpp0 -lang-c -v -I/usr/src/rudo/linux-2.4.10/include -D__GNUC__=3 -D__GNUC_MINOR__=0 -D__GNUC_PATCHLEVEL__=2 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -Wall -Wstrict-prototypes -Wno-trigraphs -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__k6 -D__k6__ -D__tune_k6__ -D__KERNEL__ -DMODULE -DMODVERSIONS -include /usr/src/rudo/linux-2.4.10/include/linux/modversions.h usb-uhci.c usb-uhci.i GNU CPP version 3.0.2 20010927 (prerelease) (cpplib) (i386 Linux/ELF) ignoring nonexistent directory "/usr/src/rudo/gcc-CVS/prefix/i586-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /usr/src/rudo/linux-2.4.10/include /usr/local/include /usr/src/rudo/gcc-CVS/prefix/lib/gcc-lib/i586-pc-linux-gnu/3.0.2/include /usr/include End of search list. /usr/src/rudo/gcc-CVS/prefix/lib/gcc-lib/i586-pc-linux-gnu/3.0.2/cc1 -fpreprocessed usb-uhci.i -quiet -dumpbase usb-uhci.c -mpreferred-stack-boundary=2 -march=k6 -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -version -fomit-frame-pointer -fno-strict-aliasing -fno-common -o usb-uhci.s GNU CPP version 3.0.2 20010927 (prerelease) (cpplib) (i386 Linux/ELF) GNU C version 3.0.2 20010927 (prerelease) (i586-pc-linux-gnu) compiled by GNU C version 3.0.2 20010927 (prerelease). usb-uhci.c: In function `process_urb': usb-uhci.c:2719: Unrecognizable insn: (insn 653 588 470 (parallel[ (set (reg:SI 3 ebx [77]) (const_int 0 [0x0])) (clobber (reg:CC 17 flags)) ] ) -1 (nil) (expr_list:REG_UNUSED (reg:CC 17 flags) (nil))) usb-uhci.c:2719: Internal compiler error in insn_default_length, at insn-attrtab.c:223 >How-To-Repeat: Try to compile it yourself. It's in the vanilla linux version 2.4.10. >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="usb-uhci.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="usb-uhci.i" IyAxICJ1c2ItdWhjaS5jIgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvbW9kdmVyc2lvbnMuaCIgMQoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9tb2RzZXR2ZXIuaCIgMQojIDQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy81M2M3MDAtbWVtLnZlciIgMQojIDUgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy81M2M3 MDAudmVyIiAxCiMgNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9t b2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s aW51eC9tb2R1bGVzLzgzOTAudmVyIiAxCiMgNyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL0RBQzk2MC52ZXIiIDEKIyA4ICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvRGl2YXNfbW9kLnZl ciIgMQojIDkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVy c2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv bW9kdWxlcy9hYzk3LnZlciIgMQojIDEwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYWM5N19jb2RlYy52ZXIiIDEKIyAxMSAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2FjaS52ZXIiIDEK IyAxMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9u cy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1 bGVzL2FjcGlfa3N5bXMudmVyIiAxCiMgMTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9hZDE4NDgudmVyIiAxCiMgMTQgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9hZGIudmVyIiAxCiMg MTUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxl cy9hZl9heDI1LnZlciIgMQojIDE2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p bmNsdWRlL2xpbnV4L21vZHVsZXMvYWZfaXB4LnZlciIgMQojIDE3ICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYWZfbmV0bGluay52ZXIiIDEK IyAxOCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9u cy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1 bGVzL2FmX3NweC52ZXIiIDEKIyAxOSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9tb2R1bGVzL2FncGdhcnRfYmUudmVyIiAxCiMgMjAgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9haXJvLnZlciIgMQoj IDIxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25z LmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVs ZXMvYWlyb25ldDQ1MDBfY2FyZC52ZXIiIDEKIyAyMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2Fpcm9uZXQ0NTAwX2NvcmUudmVyIiAxCiMg MjMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxl cy9hbWQ3OTMwLnZlciIgMQojIDI0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p bmNsdWRlL2xpbnV4L21vZHVsZXMvYXJjbmV0LnZlciIgMQojIDI1ICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYXJsYW4udmVyIiAxCiMgMjYg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIg MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9h dG1fbWlzYy52ZXIiIDEKIyAyNyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s aW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9tb2R1bGVzL2F0eWZiX2Jhc2UudmVyIiAxCiMgMjggIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9hdWRpby52ZXIiIDEKIyAy OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5o IiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVz L2F1ZGlvX3N5bXMudmVyIiAxCiMgMzAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvbGludXgvbW9kdWxlcy9hdXRvX2lycS52ZXIiIDEKIyAzMSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2IxLnZlciIgMQojIDMy ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv YjFkbWEudmVyIiAxCiMgMzMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu dXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvbW9kdWxlcy9iMXBjbWNpYS52ZXIiIDEKIyAzNCAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2Jhc2UudmVyIiAxCiMgMzUgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9iYmNf aTJjLnZlciIgMQojIDM2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L21vZHVsZXMvYmxrcGcudmVyIiAxCiMgMzcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9ibV9vc2wudmVyIiAxCiMgMzggIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9ib290bGRy LnZlciIgMQojIDM5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21v ZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L21vZHVsZXMvYnR0di1pZi52ZXIiIDEKIyA0MCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2J1c21vdXNlLnZlciIgMQojIDQxICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvY2FwaWZz LnZlciIgMQojIDQyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21v ZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L21vZHVsZXMvY2FwaXV0aWwudmVyIiAxCiMgNDMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9jYl9lbmFibGVyLnZlciIgMQojIDQ0ICIv dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIK IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvY2Ry b20udmVyIiAxCiMgNDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvbW9kdWxlcy9jaGVjay52ZXIiIDEKIyA0NiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2NoaXByZWcudmVyIiAxCiMgNDcgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9jbWRsaW5l LnZlciIgMQojIDQ4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21v ZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L21vZHVsZXMvY29tMjAwMjAudmVyIiAxCiMgNDkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9jb21tb24udmVyIiAxCiMgNTAgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9jb214LnZl ciIgMQojIDUxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZl cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L21vZHVsZXMvY29uZmlnLnZlciIgMQojIDUyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p bmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvY29uc29sZS52ZXIiIDEKIyA1MyAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2NvbnRleHQudmVy IiAxCiMgNTQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVy c2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv bW9kdWxlcy9jcGlhLnZlciIgMQojIDU1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvY3B1aWQudmVyIiAxCiMgNTYgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9jcy52ZXIiIDEKIyA1NyAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2N5 YmVyMjAwMGZiLnZlciIgMQojIDU4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p bmNsdWRlL2xpbnV4L21vZHVsZXMvY3ljeF9kcnYudmVyIiAxCiMgNTkgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9kYnJpLnZlciIgMQojIDYw ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv ZGNhY2hlLnZlciIgMQojIDYxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L21vZHVsZXMvZGRwLnZlciIgMQojIDYyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZGVjX2FuZF9sb2NrLnZlciIgMQojIDYz ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv ZG1hc291bmRfY29yZS52ZXIiIDEKIyA2NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2RzLnZlciIgMQojIDY1ICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZWljb25fbW9kLnZlciIgMQoj IDY2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25z LmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVs ZXMvZXhlY19kb21haW4udmVyIiAxCiMgNjcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9mYXRmc19zeW1zLnZlciIgMQojIDY4ICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIv dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZmJjbWFwLnZl ciIgMQojIDY5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZl cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L21vZHVsZXMvZmJjb24tYWZiLnZlciIgMQojIDcwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZmJjb24tY2ZiMTYudmVyIiAxCiMgNzEgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9mYmNv bi1jZmIyLnZlciIgMQojIDcyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L21vZHVsZXMvZmJjb24tY2ZiMjQudmVyIiAxCiMgNzMgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9mYmNvbi1jZmIzMi52ZXIi IDEKIyA3NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJz aW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9t b2R1bGVzL2ZiY29uLWNmYjQudmVyIiAxCiMgNzUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9mYmNvbi1jZmI4LnZlciIgMQojIDc2ICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZmJjb24t aGdhLnZlciIgMQojIDc3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L21vZHVsZXMvZmJjb24taWxibS52ZXIiIDEKIyA3OCAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2ZiY29uLWlwbGFuMnAyLnZlciIg MQojIDc5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNp b25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21v ZHVsZXMvZmJjb24taXBsYW4ycDQudmVyIiAxCiMgODAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9mYmNvbi1pcGxhbjJwOC52ZXIiIDEKIyA4 MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5o IiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVz L2ZiY29uLW1hYy52ZXIiIDEKIyA4MiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9tb2R1bGVzL2ZiY29uLW1mYi52ZXIiIDEKIyA4MyAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2ZiY29uLXZnYS1wbGFu ZXMudmVyIiAxCiMgODQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvbW9kdWxlcy9mYmNvbi12Z2EudmVyIiAxCiMgODUgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9mYmNvbi52ZXIiIDEKIyA4NiAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMg MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2ZibWVt LnZlciIgMQojIDg3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21v ZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L21vZHVsZXMvZmJtb24udmVyIiAxCiMgODggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9mY19zeW1zLnZlciIgMQojIDg5ICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIv dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZmlsZXN5c3Rl bXMudmVyIiAxCiMgOTAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvbW9kdWxlcy9mc20udmVyIiAxCiMgOTEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9mdGFwZV9zeW1zLnZlciIgMQojIDkyICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZ2FtZXBv cnQudmVyIiAxCiMgOTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvbW9kdWxlcy9nZW5oZC52ZXIiIDEKIyA5NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2hkbGMudmVyIiAxCiMgOTUgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9oZGxjZHJ2LnZl ciIgMQojIDk2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZl cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L21vZHVsZXMvaGVybWVzLnZlciIgMQojIDk3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p bmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaTJjLWFsZ28tYml0LnZlciIgMQojIDk4ICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaTJjLWFs Z28tcGNmLnZlciIgMQojIDk5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L21vZHVsZXMvaTJjLWNvcmUudmVyIiAxCiMgMTAwICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaTJjLW9sZC52ZXIiIDEKIyAx MDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxl cy9pMm9fYmxvY2sudmVyIiAxCiMgMTAyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaTJvX2NvbmZpZy52ZXIiIDEKIyAxMDMgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9pMm9fY29yZS52 ZXIiIDEKIyAxMDQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9k dmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu dXgvbW9kdWxlcy9pMm9fbGFuLnZlciIgMQojIDEwNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2kyb19wY2kudmVyIiAxCiMgMTA2ICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaTJvX3By b2MudmVyIiAxCiMgMTA3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L21vZHVsZXMvaTJvX3Njc2kudmVyIiAxCiMgMTA4ICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRv L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaTM4Nl9rc3ltcy52ZXIiIDEKIyAx MDkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxl cy9pYm0udmVyIiAxCiMgMTEwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L21vZHVsZXMvaWRlLWZlYXR1cmVzLnZlciIgMQojIDExMSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2lkZS52ZXIiIDEKIyAx MTIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxl cy9pZHQ3NzEwNS52ZXIiIDEKIyAxMTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvbGludXgvbW9kdWxlcy9pZWVlMTM5NF9zeW1zLnZlciIgMQojIDExNCAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2luaXQudmVy IiAxCiMgMTE1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZl cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L21vZHVsZXMvaW5wdXQudmVyIiAxCiMgMTE2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p bmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaXBfY29ubnRyYWNrX2Z0cC52ZXIiIDEKIyAxMTcg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIg MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9p cF9jb25udHJhY2tfc3RhbmRhbG9uZS52ZXIiIDEKIyAxMTggIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9pcF9md19jb21wYXQudmVyIiAxCiMg MTE5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25z LmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVs ZXMvaXBfZ3JlLnZlciIgMQojIDEyMCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9tb2R1bGVzL2lwX25hdF9zdGFuZGFsb25lLnZlciIgMQojIDEyMSAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMg MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2lwX3Rh Ymxlcy52ZXIiIDEKIyAxMjIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu dXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvbW9kdWxlcy9pcGNvbW1vbi52ZXIiIDEKIyAxMjMgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9pcGlwLnZlciIgMQojIDEyNCAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2ly cG9ydC52ZXIiIDEKIyAxMjUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu dXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvbW9kdWxlcy9pcnN5bXMudmVyIiAxCiMgMTI2ICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRv L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaXNhcG5wLnZlciIgMQojIDEyNyAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2lz ZG5fY29tbW9uLnZlciIgMQojIDEyOCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9tb2R1bGVzL2lzZW5zZS52ZXIiIDEKIyAxMjkgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9peGoudmVyIiAxCiMgMTMw ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv a2NhcGkudmVyIiAxCiMgMTMxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L21vZHVsZXMva2V5Ym9hcmQudmVyIiAxCiMgMTMyICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMva21vZC52ZXIiIDEKIyAxMzMg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIg MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9r c3ltcy52ZXIiIDEKIyAxMzQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu dXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvbW9kdWxlcy9sYXBiX2lmYWNlLnZlciIgMQojIDEzNSAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2xsX3J3X2Jsay52ZXIiIDEK IyAxMzYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lv bnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9k dWxlcy9sbGNfbWFjaW5pdC52ZXIiIDEKIyAxMzcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9sb2NrZF9zeW1zLnZlciIgMQojIDEzOCAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMg MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL2xvb3Au dmVyIiAxCiMgMTM5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21v ZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L21vZHVsZXMvbWFjX2hpZC52ZXIiIDEKIyAxNDAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9tYWNoNjRfYWNjZWwudmVyIiAxCiMgMTQx ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv bWF0cm94ZmJfREFDMTA2NC52ZXIiIDEKIyAxNDIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9tYXRyb3hmYl9UaTMwMjYudmVyIiAxCiMgMTQz ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv bWF0cm94ZmJfYWNjZWwudmVyIiAxCiMgMTQ0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p bmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbWF0cm94ZmJfYmFzZS52ZXIiIDEKIyAxNDUgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9tYXRy b3hmYl9taXNjLnZlciIgMQojIDE0NiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9tb2R1bGVzL21jYS52ZXIiIDEKIyAxNDcgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9tZC52ZXIiIDEKIyAxNDggIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9taWNy b2NvZGUudmVyIiAxCiMgMTQ5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L21vZHVsZXMvbWlkaV9zeW1zLnZlciIgMQojIDE1MCAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL21pcm9wY20yMC1yZHMtY29y ZS52ZXIiIDEKIyAxNTEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvbW9kdWxlcy9taXNjLnZlciIgMQojIDE1MiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL21vZGVkYi52ZXIiIDEKIyAxNTMgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9tcHRiYXNl LnZlciIgMQojIDE1NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9t b2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s aW51eC9tb2R1bGVzL21wdGN0bC52ZXIiIDEKIyAxNTUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9tcHRsYW4udmVyIiAxCiMgMTU2ICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbXB0c2Nz aWgudmVyIiAxCiMgMTU3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L21vZHVsZXMvbXB1NDAxLnZlciIgMQojIDE1OCAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL21zZG9zZnNfc3ltcy52ZXIiIDEKIyAx NTkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxl cy9tc25kLnZlciIgMQojIDE2MCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s aW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9tb2R1bGVzL21zci52ZXIiIDEKIyAxNjEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9tdGRjb3JlLnZlciIgMQojIDE2MiAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL210 ZHBhcnQudmVyIiAxCiMgMTYzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L21vZHVsZXMvbXRyci52ZXIiIDEKIyAxNjQgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9uYW5kLnZlciIgMQojIDE2NSAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMg MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL25hbmRf ZWNjLnZlciIgMQojIDE2NiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC9tb2R1bGVzL25ldF9pbml0LnZlciIgMQojIDE2NyAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL25ldGZpbHRlci52ZXIiIDEKIyAx NjggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxl cy9uZXRzeW1zLnZlciIgMQojIDE2OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9tb2R1bGVzL25ld3BvcnQudmVyIiAxCiMgMTcwICIvdXNyL3NyYy9ydWRv L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbmxzX2Jhc2UudmVyIiAx CiMgMTcxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNp b25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21v ZHVsZXMvbmxzX2NwODUwLnZlciIgMQojIDE3MiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL25sc19jcDg1Mi52ZXIiIDEKIyAxNzMgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9ubHNfaXNv ODg1OS0xLnZlciIgMQojIDE3NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s aW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9tb2R1bGVzL25sc19pc284ODU5LTIudmVyIiAxCiMgMTc1ICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbmxzX3V0ZjgudmVy IiAxCiMgMTc2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZl cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L21vZHVsZXMvbm0yNTZfYXVkaW8udmVyIiAxCiMgMTc3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbnVidXNfc3ltcy52ZXIiIDEKIyAxNzgg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIg MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9v cGVuLnZlciIgMQojIDE3OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC9tb2R1bGVzL29wbDMudmVyIiAxCiMgMTgwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvb3Jpbm9jby52ZXIiIDEKIyAxODEgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9wODAy Mi52ZXIiIDEKIyAxODIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvbW9kdWxlcy9wYXJwb3J0X3BjLnZlciIgMQojIDE4MyAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3BjaS52ZXIiIDEKIyAxODQgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9wY2lf c29ja2V0LnZlciIgMQojIDE4NSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s aW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9tb2R1bGVzL3Bob25lZGV2LnZlciIgMQojIDE4NiAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3BtLnZlciIgMQojIDE4NyAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3Bw cF9hc3luYy52ZXIiIDEKIyAxODggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvbW9kdWxlcy9wcHBfZ2VuZXJpYy52ZXIiIDEKIyAxODkgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9wcHBveC52ZXIiIDEK IyAxOTAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lv bnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9k dWxlcy9wcmludGsudmVyIiAxCiMgMTkxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcHJvYy52ZXIiIDEKIyAxOTIgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9wcm9maWxlLnZlciIgMQoj IDE5MyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9u cy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1 bGVzL3BzbmFwLnZlciIgMQojIDE5NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9tb2R1bGVzL3B0eS52ZXIiIDEKIyAxOTUgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9wd2MtdW5jb21wcmVzcy52ZXIi IDEKIyAxOTYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVy c2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv bW9kdWxlcy9yYW5kb20udmVyIiAxCiMgMTk3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p bmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcmF3LnZlciIgMQojIDE5OCAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3JheV9jcy52ZXIiIDEK IyAxOTkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lv bnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9k dWxlcy9yZWRib290LnZlciIgMQojIDIwMCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3Jlc291cmNlcy52ZXIiIDEKIyAyMDEgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9yb290LnZlciIg MQojIDIwMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJz aW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9t b2R1bGVzL3J0Yy52ZXIiIDEKIyAyMDMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvbGludXgvbW9kdWxlcy9yd3NlbS1zcGlubG9jay52ZXIiIDEKIyAyMDQgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9yd3NlbS52 ZXIiIDEKIyAyMDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9k dmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu dXgvbW9kdWxlcy9zYl9jb21tb24udmVyIiAxCiMgMjA2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvc2NzaV9zeW1zLnZlciIgMQojIDIwNyAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3Nk bGFkcnYudmVyIiAxCiMgMjA4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L21vZHVsZXMvc2VsZWN0aW9uLnZlciIgMQojIDIwOSAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3NlcXVlbmNlcl9zeW1zLnZl ciIgMQojIDIxMCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2 ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC9tb2R1bGVzL3NlcmlhbC52ZXIiIDEKIyAyMTEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9zZXJpby52ZXIiIDEKIyAyMTIgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9zZ2ljb25zLnZl ciIgMQojIDIxMyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2 ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC9tb2R1bGVzL3NobWVtLnZlciIgMQojIDIxNCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3NobWlxLnZlciIgMQojIDIxNSAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3NpZ25hbC52ZXIi IDEKIyAyMTYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVy c2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv bW9kdWxlcy9zbGhjLnZlciIgMQojIDIxNyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3NvbnlwaS52ZXIiIDEKIyAyMTggIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9zb3VuZF9jb3JlLnZl ciIgMQojIDIxOSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2 ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC9tb2R1bGVzL3NvdW5kX3N5bXMudmVyIiAxCiMgMjIwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvc3UudmVyIiAxCiMgMjIxICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIv dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvc3VuaS52ZXIi IDEKIyAyMjIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVy c2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv bW9kdWxlcy9zdW5ycGNfc3ltcy52ZXIiIDEKIyAyMjMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy9zeW1zLnZlciIgMQojIDIyNCAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3N5bmNwcHAu dmVyIiAxCiMgMjI1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21v ZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L21vZHVsZXMvc3lzLnZlciIgMQojIDIyNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3N5c3JxLnZlciIgMQojIDIyNyAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3RjLnZlciIgMQoj IDIyOCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9u cy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1 bGVzL3RtczM4MHRyLnZlciIgMQojIDIyOSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3R0eV9pby52ZXIiIDEKIyAyMzAgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy90dHlfaW9jdGwudmVy IiAxCiMgMjMxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZl cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L21vZHVsZXMvdVBEOTg0MDIudmVyIiAxCiMgMjMyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvdWFydDQwMS52ZXIiIDEKIyAyMzMgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy91c2IudmVy IiAxCiMgMjM0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZl cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L21vZHVsZXMvdXNic2VyaWFsLnZlciIgMQojIDIzNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3VzZW1hLnZlciIgMQojIDIzNiAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3V0aWwudmVy IiAxCiMgMjM3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZl cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L21vZHVsZXMvdmZhdGZzX3N5bXMudmVyIiAxCiMgMjM4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvdmlhLXBtdS52ZXIiIDEKIyAyMzkgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy92aWRl b2Rldi52ZXIiIDEKIyAyNDAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu dXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvbW9kdWxlcy93YW5tYWluLnZlciIgMQojIDI0MSAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGVzL3hvci52ZXIiIDEKIyAyNDIgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlcy95ZW50 YS52ZXIiIDEKIyAyNDMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvbW9kdWxlcy96ODUyMzAudmVyIiAxCiMgMjQ0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvemZ0YXBlX3N5bXMudmVyIiAxCiMgMjQ1 ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv em9ycm8udmVyIiAxCiMgMjQ2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L21vZHZlcnNpb25zLmgiIDIKIyAyICJ1c2ItdWhjaS5jIiAyCiMgMjIgInVzYi11aGNpLmMi CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9jb25maWcuaCIg MQoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvYXV0b2Nv bmYuaCIgMQojIDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29u ZmlnLmgiIDIKIyAyMyAidXNiLXVoY2kuYyIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlLmgiIDEKIyAxMCAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGUuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRv L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAyCiMgNTIgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIKICB0eXBlZGVmIHN0 cnVjdCB7IH0gc3BpbmxvY2tfdDsKIyAxMTUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvc3BpbmxvY2suaCIKICB0eXBlZGVmIHN0cnVjdCB7IH0gcndsb2NrX3Q7CiMg MTIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlLmgiIDIK IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQoK CgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9wcmVmZXRj aC5oIiAxCiMgMTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcHJl ZmV0Y2guaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wcm9j ZXNzb3IuaCIgMQojIDEwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9w cm9jZXNzb3IuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS92 bTg2LmgiIDEKIyA2OCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vdm04 Ni5oIgpzdHJ1Y3Qgdm04Nl9yZWdzIHsKCgoKICAgICAgICBsb25nIGVieDsKICAgICAgICBsb25n IGVjeDsKICAgICAgICBsb25nIGVkeDsKICAgICAgICBsb25nIGVzaTsKICAgICAgICBsb25nIGVk aTsKICAgICAgICBsb25nIGVicDsKICAgICAgICBsb25nIGVheDsKICAgICAgICBsb25nIF9fbnVs bF9kczsKICAgICAgICBsb25nIF9fbnVsbF9lczsKICAgICAgICBsb25nIF9fbnVsbF9mczsKICAg ICAgICBsb25nIF9fbnVsbF9nczsKICAgICAgICBsb25nIG9yaWdfZWF4OwogICAgICAgIGxvbmcg ZWlwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNzLCBfX2NzaDsKICAgICAgICBsb25nIGVmbGFn czsKICAgICAgICBsb25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcywgX19zc2g7CgoK CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXMsIF9fZXNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0 IGRzLCBfX2RzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmcywgX19mc2g7CiAgICAgICAgdW5z aWduZWQgc2hvcnQgZ3MsIF9fZ3NoOwp9OwoKc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IHsKICAg ICAgICB1bnNpZ25lZCBsb25nIF9fbWFwWzhdOwp9OwoKc3RydWN0IHZtODZfc3RydWN0IHsKICAg ICAgICBzdHJ1Y3Qgdm04Nl9yZWdzIHJlZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsK ICAgICAgICB1bnNpZ25lZCBsb25nIHNjcmVlbl9iaXRtYXA7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBjcHVfdHlwZTsKICAgICAgICBzdHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgaW50X3JldmVjdG9y ZWQ7CiAgICAgICAgc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IGludDIxX3JldmVjdG9yZWQ7Cn07 CgoKCgoKCnN0cnVjdCB2bTg2cGx1c19pbmZvX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBmb3JjZV9yZXR1cm5fZm9yX3BpYzoxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdm04NmRiZ19h Y3RpdmU6MTsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtODZkYmdfVEZwZW5kaWc6MTsKICAgICAg ICB1bnNpZ25lZCBsb25nIHVudXNlZDoyODsKICAgICAgICB1bnNpZ25lZCBsb25nIGlzX3ZtODZw dXM6MTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHZtODZkYmdfaW50eHh0YWJbMzJdOwp9OwoKc3Ry dWN0IHZtODZwbHVzX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IHZtODZfcmVncyByZWdzOwogICAg ICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzY3JlZW5fYml0 bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3R5cGU7CiAgICAgICAgc3RydWN0IHJldmVj dG9yZWRfc3RydWN0IGludF9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCByZXZlY3RvcmVkX3N0 cnVjdCBpbnQyMV9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCB2bTg2cGx1c19pbmZvX3N0cnVj dCB2bTg2cGx1czsKfTsKIyAxNDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv YXNtL3ZtODYuaCIKc3RydWN0IGtlcm5lbF92bTg2X3JlZ3MgewoKCgogICAgICAgIGxvbmcgZWJ4 OwogICAgICAgIGxvbmcgZWN4OwogICAgICAgIGxvbmcgZWR4OwogICAgICAgIGxvbmcgZXNpOwog ICAgICAgIGxvbmcgZWRpOwogICAgICAgIGxvbmcgZWJwOwogICAgICAgIGxvbmcgZWF4OwogICAg ICAgIGxvbmcgX19udWxsX2RzOwogICAgICAgIGxvbmcgX19udWxsX2VzOwogICAgICAgIGxvbmcg b3JpZ19lYXg7CiAgICAgICAgbG9uZyBlaXA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY3MsIF9f Y3NoOwogICAgICAgIGxvbmcgZWZsYWdzOwogICAgICAgIGxvbmcgZXNwOwogICAgICAgIHVuc2ln bmVkIHNob3J0IHNzLCBfX3NzaDsKCgoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcywgX19lc2g7 CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZHMsIF9fZHNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0 IGZzLCBfX2ZzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBncywgX19nc2g7Cn07CgpzdHJ1Y3Qg a2VybmVsX3ZtODZfc3RydWN0IHsKICAgICAgICBzdHJ1Y3Qga2VybmVsX3ZtODZfcmVncyByZWdz OwojIDE4NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vdm04Ni5oIgog ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzY3JlZW5f Yml0bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3R5cGU7CiAgICAgICAgc3RydWN0IHJl dmVjdG9yZWRfc3RydWN0IGludF9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCByZXZlY3RvcmVk X3N0cnVjdCBpbnQyMV9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCB2bTg2cGx1c19pbmZvX3N0 cnVjdCB2bTg2cGx1czsKICAgICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVnczMyOwojIDIwMSAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vdm04Ni5oIgp9OwoKdm9pZCBoYW5k bGVfdm04Nl9mYXVsdChzdHJ1Y3Qga2VybmVsX3ZtODZfcmVncyAqLCBsb25nKTsKaW50IGhhbmRs ZV92bTg2X3RyYXAoc3RydWN0IGtlcm5lbF92bTg2X3JlZ3MgKiwgbG9uZywgaW50KTsKIyAxMSAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAx ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9tYXRoX2VtdS5oIiAxCgoK CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc2lnY29udGV4dC5o IiAxCiMgMTggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3NpZ2NvbnRl eHQuaCIKc3RydWN0IF9mcHJlZyB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2lnbmlmaWNhbmRb NF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXhwb25lbnQ7Cn07CgpzdHJ1Y3QgX2ZweHJlZyB7 CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2lnbmlmaWNhbmRbNF07CiAgICAgICAgdW5zaWduZWQg c2hvcnQgZXhwb25lbnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGFkZGluZ1szXTsKfTsKCnN0 cnVjdCBfeG1tcmVnIHsKICAgICAgICB1bnNpZ25lZCBsb25nIGVsZW1lbnRbNF07Cn07CgpzdHJ1 Y3QgX2Zwc3RhdGUgewoKICAgICAgICB1bnNpZ25lZCBsb25nIGN3OwogICAgICAgIHVuc2lnbmVk IGxvbmcgc3c7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0YWc7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBpcG9mZjsKICAgICAgICB1bnNpZ25lZCBsb25nIGNzc2VsOwogICAgICAgIHVuc2lnbmVkIGxv bmcgZGF0YW9mZjsKICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGFzZWw7CiAgICAgICAgc3RydWN0 IF9mcHJlZyBfc3RbOF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RhdHVzOwogICAgICAgIHVu c2lnbmVkIHNob3J0IG1hZ2ljOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBfZnhzcl9lbnZbNl07 CiAgICAgICAgdW5zaWduZWQgbG9uZyBteGNzcjsKICAgICAgICB1bnNpZ25lZCBsb25nIHJlc2Vy dmVkOwogICAgICAgIHN0cnVjdCBfZnB4cmVnIF9meHNyX3N0WzhdOwogICAgICAgIHN0cnVjdCBf eG1tcmVnIF94bW1bOF07CiAgICAgICAgdW5zaWduZWQgbG9uZyBwYWRkaW5nWzU2XTsKfTsKCgoK c3RydWN0IHNpZ2NvbnRleHQgewogICAgICAgIHVuc2lnbmVkIHNob3J0IGdzLCBfX2dzaDsKICAg ICAgICB1bnNpZ25lZCBzaG9ydCBmcywgX19mc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXMs IF9fZXNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRzLCBfX2RzaDsKICAgICAgICB1bnNpZ25l ZCBsb25nIGVkaTsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzaTsKICAgICAgICB1bnNpZ25lZCBs b25nIGVicDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBsb25n IGVieDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVkeDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVj eDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVheDsKICAgICAgICB1bnNpZ25lZCBsb25nIHRyYXBu bzsKICAgICAgICB1bnNpZ25lZCBsb25nIGVycjsKICAgICAgICB1bnNpZ25lZCBsb25nIGVpcDsK ICAgICAgICB1bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7CiAgICAgICAgdW5zaWduZWQgbG9uZyBl ZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3BfYXRfc2lnbmFsOwogICAgICAgIHVuc2ln bmVkIHNob3J0IHNzLCBfX3NzaDsKICAgICAgICBzdHJ1Y3QgX2Zwc3RhdGUgKiBmcHN0YXRlOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkbWFzazsKICAgICAgICB1bnNpZ25lZCBsb25nIGNyMjsK fTsKIyA1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9tYXRoX2VtdS5o IiAyCgppbnQgcmVzdG9yZV9pMzg3X3NvZnQodm9pZCAqczM4Nywgc3RydWN0IF9mcHN0YXRlICpi dWYpOwppbnQgc2F2ZV9pMzg3X3NvZnQodm9pZCAqczM4Nywgc3RydWN0IF9mcHN0YXRlICogYnVm KTsKCgoKCgpzdHJ1Y3QgaW5mbyB7CiAgICAgICAgbG9uZyBfX19vcmlnX2VpcDsKICAgICAgICBs b25nIF9fX2VieDsKICAgICAgICBsb25nIF9fX2VjeDsKICAgICAgICBsb25nIF9fX2VkeDsKICAg ICAgICBsb25nIF9fX2VzaTsKICAgICAgICBsb25nIF9fX2VkaTsKICAgICAgICBsb25nIF9fX2Vi cDsKICAgICAgICBsb25nIF9fX2VheDsKICAgICAgICBsb25nIF9fX2RzOwogICAgICAgIGxvbmcg X19fZXM7CiAgICAgICAgbG9uZyBfX19vcmlnX2VheDsKICAgICAgICBsb25nIF9fX2VpcDsKICAg ICAgICBsb25nIF9fX2NzOwogICAgICAgIGxvbmcgX19fZWZsYWdzOwogICAgICAgIGxvbmcgX19f ZXNwOwogICAgICAgIGxvbmcgX19fc3M7CiAgICAgICAgbG9uZyBfX192bTg2X2VzOwogICAgICAg IGxvbmcgX19fdm04Nl9kczsKICAgICAgICBsb25nIF9fX3ZtODZfZnM7CiAgICAgICAgbG9uZyBf X192bTg2X2dzOwp9OwojIDEyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2Fz bS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv YXNtL3NlZ21lbnQuaCIgMQojIDEzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvYXNtL3BhZ2UuaCIgMQojIDEyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2FzbS9wYWdlLmgiCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC9jb25maWcuaCIgMQojIDEzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2Fz bS9wYWdlLmgiIDIKIyA0NSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20v cGFnZS5oIgp0eXBlZGVmIHN0cnVjdCB7IHVuc2lnbmVkIGxvbmcgcHRlX2xvdzsgfSBwdGVfdDsK dHlwZWRlZiBzdHJ1Y3QgeyB1bnNpZ25lZCBsb25nIHBtZDsgfSBwbWRfdDsKdHlwZWRlZiBzdHJ1 Y3QgeyB1bnNpZ25lZCBsb25nIHBnZDsgfSBwZ2RfdDsKCgoKCnR5cGVkZWYgc3RydWN0IHsgdW5z aWduZWQgbG9uZyBwZ3Byb3Q7IH0gcGdwcm90X3Q7CiMgMTA1ICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2FzbS9wYWdlLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBnZXRfb3Jk ZXIodW5zaWduZWQgbG9uZyBzaXplKQp7CiAgICAgICAgaW50IG9yZGVyOwoKICAgICAgICBzaXpl ID0gKHNpemUtMSkgPj4gKDEyIC0xKTsKICAgICAgICBvcmRlciA9IC0xOwogICAgICAgIGRvIHsK ICAgICAgICAgICAgICAgIHNpemUgPj49IDE7CiAgICAgICAgICAgICAgICBvcmRlcisrOwogICAg ICAgIH0gd2hpbGUgKHNpemUpOwogICAgICAgIHJldHVybiBvcmRlcjsKfQojIDE0ICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3R5cGVzLmgiIDEKCgoKdHlwZWRlZiB1 bnNpZ25lZCBzaG9ydCB1bW9kZV90OwoKCgoKCgp0eXBlZGVmIF9fc2lnbmVkX18gY2hhciBfX3M4 Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191ODsKCnR5cGVkZWYgX19zaWduZWRfXyBzaG9ydCBf X3MxNjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3UxNjsKCnR5cGVkZWYgX19zaWduZWRfXyBp bnQgX19zMzI7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdTMyOwoKCnR5cGVkZWYgX19zaWduZWRf XyBsb25nIGxvbmcgX19zNjQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdTY0OwoKCgoK CgoKdHlwZWRlZiBzaWduZWQgY2hhciBzODsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHU4OwoKdHlw ZWRlZiBzaWduZWQgc2hvcnQgczE2Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHUxNjsKCnR5cGVk ZWYgc2lnbmVkIGludCBzMzI7CnR5cGVkZWYgdW5zaWduZWQgaW50IHUzMjsKCnR5cGVkZWYgc2ln bmVkIGxvbmcgbG9uZyBzNjQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKCgoKCgp0 eXBlZGVmIHUzMiBkbWFfYWRkcl90OwojIDE1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p bmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvYXNtL3NpZ2NvbnRleHQuaCIgMQojIDE2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaCIgMQojIDE3ICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY2FjaGUuaCIgMQoKCgojIDEgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NhY2hlLmgiIDIKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9jYWNoZS5oIiAxCgoKCgoKCiMgMSAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDggIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2NhY2hlLmgiIDIKIyA2ICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NhY2hlLmgiIDIKIyAxOCAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAxICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTkgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMgMSAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90aHJlYWRzLmgiIDEKCgoK IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAx CiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90aHJlYWRzLmgi IDIKIyAyMCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcHJvY2Vzc29y LmgiIDIKIyAzMyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcHJvY2Vz c29yLmgiCnN0cnVjdCBjcHVpbmZvX3g4NiB7CiAgICAgICAgX191OCB4ODY7CiAgICAgICAgX191 OCB4ODZfdmVuZG9yOwogICAgICAgIF9fdTggeDg2X21vZGVsOwogICAgICAgIF9fdTggeDg2X21h c2s7CiAgICAgICAgY2hhciB3cF93b3Jrc19vazsKICAgICAgICBjaGFyIGhsdF93b3Jrc19vazsK ICAgICAgICBjaGFyIGhhcmRfbWF0aDsKICAgICAgICBjaGFyIHJmdTsKICAgICAgICBpbnQgY3B1 aWRfbGV2ZWw7CiAgICAgICAgX191MzIgeDg2X2NhcGFiaWxpdHlbNF07CiAgICAgICAgY2hhciB4 ODZfdmVuZG9yX2lkWzE2XTsKICAgICAgICBjaGFyIHg4Nl9tb2RlbF9pZFs2NF07CiAgICAgICAg aW50IHg4Nl9jYWNoZV9zaXplOwoKICAgICAgICBpbnQgZmRpdl9idWc7CiAgICAgICAgaW50IGYw MGZfYnVnOwogICAgICAgIGludCBjb21hX2J1ZzsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvb3Bz X3Blcl9qaWZmeV9SYmE0OTdmMTM7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqcGdkX3F1aWNrOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgKnBtZF9xdWljazsKICAgICAgICB1bnNpZ25lZCBsb25nICpw dGVfcXVpY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwZ3RhYmxlX2NhY2hlX3N6Owp9IF9fYXR0 cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICgoNSkpKSkpKTsKIyA3MiAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4dGVybiBzdHJ1Y3QgY3B1 aW5mb194ODYgYm9vdF9jcHVfZGF0YV9SMDY1N2QwMzc7CmV4dGVybiBzdHJ1Y3QgdHNzX3N0cnVj dCBpbml0X3Rzc1sxXTsKIyA5NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9h c20vcHJvY2Vzc29yLmgiCmV4dGVybiBjaGFyIGlnbm9yZV9pcnExMzsKCmV4dGVybiB2b2lkIGlk ZW50aWZ5X2NwdShzdHJ1Y3QgY3B1aW5mb194ODYgKik7CmV4dGVybiB2b2lkIHByaW50X2NwdV9p bmZvKHN0cnVjdCBjcHVpbmZvX3g4NiAqKTsKZXh0ZXJuIHZvaWQgZG9kZ3lfdHNjKHZvaWQpOwoj IDEyNCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgi CnN0YXRpYyBpbmxpbmUgdm9pZCBjcHVpZChpbnQgb3AsIGludCAqZWF4LCBpbnQgKmVieCwgaW50 ICplY3gsIGludCAqZWR4KQp7CiAgICAgICAgX19hc21fXygiY3B1aWQiCiAgICAgICAgICAgICAg ICA6ICI9YSIgKCplYXgpLAogICAgICAgICAgICAgICAgICAiPWIiICgqZWJ4KSwKICAgICAgICAg ICAgICAgICAgIj1jIiAoKmVjeCksCiAgICAgICAgICAgICAgICAgICI9ZCIgKCplZHgpCiAgICAg ICAgICAgICAgICA6ICIwIiAob3ApKTsKfQoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQg Y3B1aWRfZWF4KHVuc2lnbmVkIGludCBvcCkKewogICAgICAgIHVuc2lnbmVkIGludCBlYXg7Cgog ICAgICAgIF9fYXNtX18oImNwdWlkIgogICAgICAgICAgICAgICAgOiAiPWEiIChlYXgpCiAgICAg ICAgICAgICAgICA6ICIwIiAob3ApCiAgICAgICAgICAgICAgICA6ICJieCIsICJjeCIsICJkeCIp OwogICAgICAgIHJldHVybiBlYXg7Cn0Kc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgY3B1aWRf ZWJ4KHVuc2lnbmVkIGludCBvcCkKewogICAgICAgIHVuc2lnbmVkIGludCBlYXgsIGVieDsKCiAg ICAgICAgX19hc21fXygiY3B1aWQiCiAgICAgICAgICAgICAgICA6ICI9YSIgKGVheCksICI9YiIg KGVieCkKICAgICAgICAgICAgICAgIDogIjAiIChvcCkKICAgICAgICAgICAgICAgIDogImN4Iiwg ImR4IiApOwogICAgICAgIHJldHVybiBlYng7Cn0Kc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQg Y3B1aWRfZWN4KHVuc2lnbmVkIGludCBvcCkKewogICAgICAgIHVuc2lnbmVkIGludCBlYXgsIGVj eDsKCiAgICAgICAgX19hc21fXygiY3B1aWQiCiAgICAgICAgICAgICAgICA6ICI9YSIgKGVheCks ICI9YyIgKGVjeCkKICAgICAgICAgICAgICAgIDogIjAiIChvcCkKICAgICAgICAgICAgICAgIDog ImJ4IiwgImR4IiApOwogICAgICAgIHJldHVybiBlY3g7Cn0Kc3RhdGljIGlubGluZSB1bnNpZ25l ZCBpbnQgY3B1aWRfZWR4KHVuc2lnbmVkIGludCBvcCkKewogICAgICAgIHVuc2lnbmVkIGludCBl YXgsIGVkeDsKCiAgICAgICAgX19hc21fXygiY3B1aWQiCiAgICAgICAgICAgICAgICA6ICI9YSIg KGVheCksICI9ZCIgKGVkeCkKICAgICAgICAgICAgICAgIDogIjAiIChvcCkKICAgICAgICAgICAg ICAgIDogImJ4IiwgImN4Iik7CiAgICAgICAgcmV0dXJuIGVkeDsKfQojIDE5OSAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4dGVybiB1bnNpZ25l ZCBsb25nIG1tdV9jcjRfZmVhdHVyZXM7CgpzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2luX2NyNCAo dW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgbW11X2NyNF9mZWF0dXJlcyB8PSBtYXNrOwog ICAgICAgIF9fYXNtX18oIm1vdmwgJSVjcjQsJSVlYXhcblx0IgogICAgICAgICAgICAgICAgIm9y bCAlMCwlJWVheFxuXHQiCiAgICAgICAgICAgICAgICAibW92bCAlJWVheCwlJWNyNFxuIgogICAg ICAgICAgICAgICAgOiA6ICJpcmciIChtYXNrKQogICAgICAgICAgICAgICAgOiJheCIpOwp9Cgpz dGF0aWMgaW5saW5lIHZvaWQgY2xlYXJfaW5fY3I0ICh1bnNpZ25lZCBsb25nIG1hc2spCnsKICAg ICAgICBtbXVfY3I0X2ZlYXR1cmVzICY9IH5tYXNrOwogICAgICAgIF9fYXNtX18oIm1vdmwgJSVj cjQsJSVlYXhcblx0IgogICAgICAgICAgICAgICAgImFuZGwgJTAsJSVlYXhcblx0IgogICAgICAg ICAgICAgICAgIm1vdmwgJSVlYXgsJSVjcjRcbiIKICAgICAgICAgICAgICAgIDogOiAiaXJnIiAo fm1hc2spCiAgICAgICAgICAgICAgICA6ImF4Iik7Cn0KIyAyNTYgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpleHRlcm4gaW50IE1DQV9idXNfUmY0 OGEyYzRjOwoKCgpleHRlcm4gdW5zaWduZWQgaW50IG1hY2hpbmVfaWQ7CmV4dGVybiB1bnNpZ25l ZCBpbnQgbWFjaGluZV9zdWJtb2RlbF9pZDsKZXh0ZXJuIHVuc2lnbmVkIGludCBCSU9TX3Jldmlz aW9uOwpleHRlcm4gdW5zaWduZWQgaW50IG1jYV9wZW50aXVtX2ZsYWc7CiMgMjgyICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKc3RydWN0IGkzODdf ZnNhdmVfc3RydWN0IHsKICAgICAgICBsb25nIGN3ZDsKICAgICAgICBsb25nIHN3ZDsKICAgICAg ICBsb25nIHR3ZDsKICAgICAgICBsb25nIGZpcDsKICAgICAgICBsb25nIGZjczsKICAgICAgICBs b25nIGZvbzsKICAgICAgICBsb25nIGZvczsKICAgICAgICBsb25nIHN0X3NwYWNlWzIwXTsKICAg ICAgICBsb25nIHN0YXR1czsKfTsKCnN0cnVjdCBpMzg3X2Z4c2F2ZV9zdHJ1Y3QgewogICAgICAg IHVuc2lnbmVkIHNob3J0IGN3ZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzd2Q7CiAgICAgICAg dW5zaWduZWQgc2hvcnQgdHdkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZvcDsKICAgICAgICBs b25nIGZpcDsKICAgICAgICBsb25nIGZjczsKICAgICAgICBsb25nIGZvbzsKICAgICAgICBsb25n IGZvczsKICAgICAgICBsb25nIG14Y3NyOwogICAgICAgIGxvbmcgcmVzZXJ2ZWQ7CiAgICAgICAg bG9uZyBzdF9zcGFjZVszMl07CiAgICAgICAgbG9uZyB4bW1fc3BhY2VbMzJdOwogICAgICAgIGxv bmcgcGFkZGluZ1s1Nl07Cn0gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKDE2KSkpOwoKc3RydWN0 IGkzODdfc29mdF9zdHJ1Y3QgewogICAgICAgIGxvbmcgY3dkOwogICAgICAgIGxvbmcgc3dkOwog ICAgICAgIGxvbmcgdHdkOwogICAgICAgIGxvbmcgZmlwOwogICAgICAgIGxvbmcgZmNzOwogICAg ICAgIGxvbmcgZm9vOwogICAgICAgIGxvbmcgZm9zOwogICAgICAgIGxvbmcgc3Rfc3BhY2VbMjBd OwogICAgICAgIHVuc2lnbmVkIGNoYXIgZnRvcCwgY2hhbmdlZCwgbG9va2FoZWFkLCBub191cGRh dGUsIHJtLCBhbGltaXQ7CiAgICAgICAgc3RydWN0IGluZm8gKmluZm87CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBlbnRyeV9laXA7Cn07Cgp1bmlvbiBpMzg3X3VuaW9uIHsKICAgICAgICBzdHJ1Y3Qg aTM4N19mc2F2ZV9zdHJ1Y3QgZnNhdmU7CiAgICAgICAgc3RydWN0IGkzODdfZnhzYXZlX3N0cnVj dCBmeHNhdmU7CiAgICAgICAgc3RydWN0IGkzODdfc29mdF9zdHJ1Y3Qgc29mdDsKfTsKCnR5cGVk ZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlZzsKfSBtbV9zZWdtZW50X3Q7Cgpz dHJ1Y3QgdHNzX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgYmFja19saW5rLF9fYmxo OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwMDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzczAs X19zczBoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwMTsKICAgICAgICB1bnNpZ25lZCBzaG9y dCBzczEsX19zczFoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwMjsKICAgICAgICB1bnNpZ25l ZCBzaG9ydCBzczIsX19zczJoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX19jcjM7CiAgICAgICAg dW5zaWduZWQgbG9uZyBlaXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlZmxhZ3M7CiAgICAgICAg dW5zaWduZWQgbG9uZyBlYXgsZWN4LGVkeCxlYng7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3A7 CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYnA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc2k7CiAg ICAgICAgdW5zaWduZWQgbG9uZyBlZGk7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXMsIF9fZXNo OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNzLCBfX2NzaDsKICAgICAgICB1bnNpZ25lZCBzaG9y dCBzcywgX19zc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZHMsIF9fZHNoOwogICAgICAgIHVu c2lnbmVkIHNob3J0IGZzLCBfX2ZzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBncywgX19nc2g7 CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGR0LCBfX2xkdGg7CiAgICAgICAgdW5zaWduZWQgc2hv cnQgdHJhY2UsIGJpdG1hcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGlvX2JpdG1hcFszMiArMV07 CgoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBfX2NhY2hlbGluZV9maWxsZXJbNV07Cn07CgpzdHJ1 Y3QgdGhyZWFkX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3AwOwogICAgICAgIHVu c2lnbmVkIGxvbmcgZWlwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwOwogICAgICAgIHVuc2ln bmVkIGxvbmcgZnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBnczsKCiAgICAgICAgdW5zaWduZWQg bG9uZyBkZWJ1Z3JlZ1s4XTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBjcjIsIHRyYXBfbm8sIGVy cm9yX2NvZGU7CgogICAgICAgIHVuaW9uIGkzODdfdW5pb24gaTM4NzsKCiAgICAgICAgc3RydWN0 IHZtODZfc3RydWN0ICogdm04Nl9pbmZvOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2NyZWVuX2Jp dG1hcDsKICAgICAgICB1bnNpZ25lZCBsb25nIHY4NmZsYWdzLCB2ODZtYXNrLCB2ODZtb2RlLCBz YXZlZF9lc3AwOwoKICAgICAgICBpbnQgaW9wZXJtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaW9f Yml0bWFwWzMyICsxXTsKfTsKIyA0MjQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CnN0cnVjdCBtbV9zdHJ1Y3Q7 CgoKZXh0ZXJuIHZvaWQgcmVsZWFzZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICopOwoKCgpl eHRlcm4gaW50IGtlcm5lbF90aHJlYWRfUjdlOWViYjA1KGludCAoKmZuKSh2b2lkICopLCB2b2lk ICogYXJnLCB1bnNpZ25lZCBsb25nIGZsYWdzKTsKCgpleHRlcm4gdm9pZCBjb3B5X3NlZ21lbnRz KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IG1tX3N0cnVjdCAqIG1tKTsKZXh0ZXJuIHZv aWQgcmVsZWFzZV9zZWdtZW50cyhzdHJ1Y3QgbW1fc3RydWN0ICogbW0pOwoKCgoKc3RhdGljIGlu bGluZSB1bnNpZ25lZCBsb25nIHRocmVhZF9zYXZlZF9wYyhzdHJ1Y3QgdGhyZWFkX3N0cnVjdCAq dCkKewogICAgICAgIHJldHVybiAoKHVuc2lnbmVkIGxvbmcgKil0LT5lc3ApWzNdOwp9Cgp1bnNp Z25lZCBsb25nIGdldF93Y2hhbl9SMmQ4Njk3Zjgoc3RydWN0IHRhc2tfc3RydWN0ICpwKTsKIyA0 NTggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpz dHJ1Y3QgbWljcm9jb2RlIHsKICAgICAgICB1bnNpZ25lZCBpbnQgaGRydmVyOwogICAgICAgIHVu c2lnbmVkIGludCByZXY7CiAgICAgICAgdW5zaWduZWQgaW50IGRhdGU7CiAgICAgICAgdW5zaWdu ZWQgaW50IHNpZzsKICAgICAgICB1bnNpZ25lZCBpbnQgY2tzdW07CiAgICAgICAgdW5zaWduZWQg aW50IGxkcnZlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgcGY7CiAgICAgICAgdW5zaWduZWQgaW50 IHJlc2VydmVkWzVdOwogICAgICAgIHVuc2lnbmVkIGludCBiaXRzWzUwMF07Cn07CgoKCgoKc3Rh dGljIGlubGluZSB2b2lkIHJlcF9ub3Aodm9pZCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGls ZV9fKCJyZXA7bm9wIik7Cn0KIyAxNCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC9wcmVmZXRjaC5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9hc20vY2FjaGUuaCIgMQojIDE1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L3ByZWZldGNoLmgiIDIKIyA0MyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgcHJlZmV0Y2goY29u c3Qgdm9pZCAqeCkgezt9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgcHJlZmV0Y2h3KGNvbnN0IHZv aWQgKngpIHs7fQojIDcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv bGlzdC5oIiAyCiMgMTggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv bGlzdC5oIgpzdHJ1Y3QgbGlzdF9oZWFkIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0 LCAqcHJldjsKfTsKIyAzNyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC9saXN0LmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19saXN0X2FkZChzdHJ1Y3QgbGlzdF9o ZWFkICogbmV3LAogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKiBwcmV2LAogICAgICAgIHN0cnVj dCBsaXN0X2hlYWQgKiBuZXh0KQp7CiAgICAgICAgbmV4dC0+cHJldiA9IG5ldzsKICAgICAgICBu ZXctPm5leHQgPSBuZXh0OwogICAgICAgIG5ldy0+cHJldiA9IHByZXY7CiAgICAgICAgcHJldi0+ bmV4dCA9IG5ldzsKfQojIDU1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L2xpc3QuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBsaXN0X2FkZChzdHJ1Y3QgbGlzdF9o ZWFkICpuZXcsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsKICAgICAgICBfX2xpc3RfYWRkKG5l dywgaGVhZCwgaGVhZC0+bmV4dCk7Cn0KIyA2OCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgbGlzdF9hZGRfdGFp bChzdHJ1Y3QgbGlzdF9oZWFkICpuZXcsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsKICAgICAg ICBfX2xpc3RfYWRkKG5ldywgaGVhZC0+cHJldiwgaGVhZCk7Cn0KIyA4MCAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBfX2lubGluZV9fIHZv aWQgX19saXN0X2RlbChzdHJ1Y3QgbGlzdF9oZWFkICogcHJldiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKiBuZXh0KQp7CiAgICAgICAgbmV4dC0+ cHJldiA9IHByZXY7CiAgICAgICAgcHJldi0+bmV4dCA9IG5leHQ7Cn0KCgoKCgoKc3RhdGljIF9f aW5saW5lX18gdm9pZCBsaXN0X2RlbChzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeSkKewogICAgICAg IF9fbGlzdF9kZWwoZW50cnktPnByZXYsIGVudHJ5LT5uZXh0KTsKICAgICAgICBlbnRyeS0+bmV4 dCA9IGVudHJ5LT5wcmV2ID0gMDsKfQoKCgoKCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgbGlzdF9k ZWxfaW5pdChzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeSkKewogICAgICAgIF9fbGlzdF9kZWwoZW50 cnktPnByZXYsIGVudHJ5LT5uZXh0KTsKICAgICAgICBkbyB7IChlbnRyeSktPm5leHQgPSAoZW50 cnkpOyAoZW50cnkpLT5wcmV2ID0gKGVudHJ5KTsgfSB3aGlsZSAoMCk7Cn0KCgoKCgpzdGF0aWMg X19pbmxpbmVfXyBpbnQgbGlzdF9lbXB0eShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICAg ICAgcmV0dXJuIGhlYWQtPm5leHQgPT0gaGVhZDsKfQoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyB2 b2lkIGxpc3Rfc3BsaWNlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsIHN0cnVjdCBsaXN0X2hlYWQg KmhlYWQpCnsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpmaXJzdCA9IGxpc3QtPm5leHQ7Cgog ICAgICAgIGlmIChmaXJzdCAhPSBsaXN0KSB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbGlzdF9o ZWFkICpsYXN0ID0gbGlzdC0+cHJldjsKICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg KmF0ID0gaGVhZC0+bmV4dDsKCiAgICAgICAgICAgICAgICBmaXJzdC0+cHJldiA9IGhlYWQ7CiAg ICAgICAgICAgICAgICBoZWFkLT5uZXh0ID0gZmlyc3Q7CgogICAgICAgICAgICAgICAgbGFzdC0+ bmV4dCA9IGF0OwogICAgICAgICAgICAgICAgYXQtPnByZXYgPSBsYXN0OwogICAgICAgIH0KfQoj IDEzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21vZHVsZS5oIiAy CiMgMjUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlLmgi CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEK CgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5o IiAxCiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYXRvbWljLmgi IDIKIyAyMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYXRvbWljLmgi CnR5cGVkZWYgc3RydWN0IHsgdm9sYXRpbGUgaW50IGNvdW50ZXI7IH0gYXRvbWljX3Q7CiMgNTMg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMg X19pbmxpbmVfXyB2b2lkIGF0b21pY19hZGQoaW50IGksIGF0b21pY190ICp2KQp7CiAgICAgICAg X19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAiYWRkbCAlMSwlMCIKICAg ICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKQogICAgICAgICAgICAgICAgOiJpciIgKGkp LCAibSIgKHYtPmNvdW50ZXIpKTsKfQojIDY5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p bmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWNfc3ViKGlu dCBpLCBhdG9taWNfdCAqdikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAg ICAgICAgICAgIiIgInN1YmwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRl cikKICAgICAgICAgICAgICAgIDoiaXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSk7Cn0KIyA4NyAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBf X2lubGluZV9fIGludCBhdG9taWNfc3ViX2FuZF90ZXN0KGludCBpLCBhdG9taWNfdCAqdikKewog ICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAg ICAgICAgICAgICAgICAiIiAic3VibCAlMiwlMDsgc2V0ZSAlMSIKICAgICAgICAgICAgICAgIDoi PW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAgICAgICAgICAgICA6ImlyIiAoaSksICJt IiAodi0+Y291bnRlcikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIGM7Cn0KIyAxMDUgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19p bmxpbmVfXyB2b2lkIGF0b21pY19pbmMoYXRvbWljX3QgKnYpCnsKICAgICAgICBfX2FzbV9fIF9f dm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIiICJpbmNsICUwIgogICAgICAgICAgICAgICAg OiI9bSIgKHYtPmNvdW50ZXIpCiAgICAgICAgICAgICAgICA6Im0iICh2LT5jb3VudGVyKSk7Cn0K IyAxMjAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2F0b21pYy5oIgpz dGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY19kZWMoYXRvbWljX3QgKnYpCnsKICAgICAgICBf X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIiICJkZWNsICUwIgogICAgICAg ICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpCiAgICAgICAgICAgICAgICA6Im0iICh2LT5jb3Vu dGVyKSk7Cn0KIyAxMzcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2F0 b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX2RlY19hbmRfdGVzdChhdG9taWNf dCAqdikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0 aWxlX18oCiAgICAgICAgICAgICAgICAiIiAiZGVjbCAlMDsgc2V0ZSAlMSIKICAgICAgICAgICAg ICAgIDoiPW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAgICAgICAgICAgICA6Im0iICh2 LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gYyAhPSAwOwp9CiMgMTU3ICIv dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9f aW5saW5lX18gaW50IGF0b21pY19pbmNfYW5kX3Rlc3QoYXRvbWljX3QgKnYpCnsKICAgICAgICB1 bnNpZ25lZCBjaGFyIGM7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAg ICAgICAgIiIgImluY2wgJTA7IHNldGUgJTEiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291 bnRlciksICI9cW0iIChjKQogICAgICAgICAgICAgICAgOiJtIiAodi0+Y291bnRlcikgOiAibWVt b3J5Iik7CiAgICAgICAgcmV0dXJuIGMgIT0gMDsKfQojIDE3OCAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBhdG9t aWNfYWRkX25lZ2F0aXZlKGludCBpLCBhdG9taWNfdCAqdikKewogICAgICAgIHVuc2lnbmVkIGNo YXIgYzsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAi YWRkbCAlMiwlMDsgc2V0cyAlMSIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKSwg Ij1xbSIgKGMpCiAgICAgICAgICAgICAgICA6ImlyIiAoaSksICJtIiAodi0+Y291bnRlcikgOiAi bWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIGM7Cn0KIyAyNiAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9tb2R1bGUuaCIgMgoKCnN0cnVjdCBleGNlcHRpb25fdGFibGVf ZW50cnk7CgoKc3RydWN0IGtlcm5lbF9zeW0KewogICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWU7 CiAgICAgICAgY2hhciBuYW1lWzYwXTsKfTsKCnN0cnVjdCBtb2R1bGVfc3ltYm9sCnsKICAgICAg ICB1bnNpZ25lZCBsb25nIHZhbHVlOwogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7Cn07CgpzdHJ1 Y3QgbW9kdWxlX3JlZgp7CiAgICAgICAgc3RydWN0IG1vZHVsZSAqZGVwOwogICAgICAgIHN0cnVj dCBtb2R1bGUgKnJlZjsKICAgICAgICBzdHJ1Y3QgbW9kdWxlX3JlZiAqbmV4dF9yZWY7Cn07CgoK c3RydWN0IG1vZHVsZV9wZXJzaXN0OwoKc3RydWN0IG1vZHVsZQp7CiAgICAgICAgdW5zaWduZWQg bG9uZyBzaXplX29mX3N0cnVjdDsKICAgICAgICBzdHJ1Y3QgbW9kdWxlICpuZXh0OwogICAgICAg IGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaXplOwoKICAgICAgICB1 bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIGF0b21pY190IHVzZWNvdW50OwogICAgICAg ICAgICAgICAgbG9uZyBwYWQ7CiAgICAgICAgfSB1YzsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBm bGFnczsKCiAgICAgICAgdW5zaWduZWQgbnN5bXM7CiAgICAgICAgdW5zaWduZWQgbmRlcHM7Cgog ICAgICAgIHN0cnVjdCBtb2R1bGVfc3ltYm9sICpzeW1zOwogICAgICAgIHN0cnVjdCBtb2R1bGVf cmVmICpkZXBzOwogICAgICAgIHN0cnVjdCBtb2R1bGVfcmVmICpyZWZzOwogICAgICAgIGludCAo KmluaXQpKHZvaWQpOwogICAgICAgIHZvaWQgKCpjbGVhbnVwKSh2b2lkKTsKICAgICAgICBjb25z dCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleF90YWJsZV9zdGFydDsKICAgICAgICBj b25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleF90YWJsZV9lbmQ7CgoKCgoKCiAg ICAgICAgY29uc3Qgc3RydWN0IG1vZHVsZV9wZXJzaXN0ICpwZXJzaXN0X3N0YXJ0OwogICAgICAg IGNvbnN0IHN0cnVjdCBtb2R1bGVfcGVyc2lzdCAqcGVyc2lzdF9lbmQ7CiAgICAgICAgaW50ICgq Y2FuX3VubG9hZCkodm9pZCk7CiAgICAgICAgaW50IHJ1bnNpemU7CiAgICAgICAgY29uc3QgY2hh ciAqa2FsbHN5bXNfc3RhcnQ7CiAgICAgICAgY29uc3QgY2hhciAqa2FsbHN5bXNfZW5kOwogICAg ICAgIGNvbnN0IGNoYXIgKmFyY2hkYXRhX3N0YXJ0OwogICAgICAgIGNvbnN0IGNoYXIgKmFyY2hk YXRhX2VuZDsKICAgICAgICBjb25zdCBjaGFyICprZXJuZWxfZGF0YTsKfTsKCnN0cnVjdCBtb2R1 bGVfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBhZGRyOwogICAgICAgIHVuc2lnbmVkIGxv bmcgc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIGxvbmcgdXNlY291 bnQ7Cn07CiMgMTgzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21v ZHVsZS5oIgpleHRlcm4gdm9pZCBpbnRlcl9tb2R1bGVfcmVnaXN0ZXJfUjYyZGFkYTA1KGNvbnN0 IGNoYXIgKiwgc3RydWN0IG1vZHVsZSAqLCBjb25zdCB2b2lkICopOwpleHRlcm4gdm9pZCBpbnRl cl9tb2R1bGVfdW5yZWdpc3Rlcl9SN2E5ZTg0NWUoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNvbnN0 IHZvaWQgKmludGVyX21vZHVsZV9nZXRfUmY2YTBjZTI0KGNvbnN0IGNoYXIgKik7CmV4dGVybiBj b25zdCB2b2lkICppbnRlcl9tb2R1bGVfZ2V0X3JlcXVlc3RfUmI2OWY4MjZiKGNvbnN0IGNoYXIg KiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIHZvaWQgaW50ZXJfbW9kdWxlX3B1dF9SNmI5OWY3ZDgo Y29uc3QgY2hhciAqKTsKCnN0cnVjdCBpbnRlcl9tb2R1bGVfZW50cnkgewogICAgICAgIHN0cnVj dCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICBjb25zdCBjaGFyICppbV9uYW1lOwogICAgICAgIHN0 cnVjdCBtb2R1bGUgKm93bmVyOwogICAgICAgIGNvbnN0IHZvaWQgKnVzZXJkYXRhOwp9OwoKZXh0 ZXJuIGludCB0cnlfaW5jX21vZF9jb3VudF9SZTYxMDViMjMoc3RydWN0IG1vZHVsZSAqbW9kKTsK IyAyOTIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlLmgi CmV4dGVybiBzdHJ1Y3QgbW9kdWxlIF9fdGhpc19tb2R1bGU7CgoKCgoKCiMgMSAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC92ZXJzaW9uLmgiIDEKIyAzMDAgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW9kdWxlLmgiIDIKc3RhdGljIGNv bnN0IGNoYXIgX19tb2R1bGVfa2VybmVsX3ZlcnNpb25bXSBfX2F0dHJpYnV0ZV9fKChzZWN0aW9u KCIubW9kaW5mbyIpKSkgPQoia2VybmVsX3ZlcnNpb249IiAiMi40LjEwIjsKCnN0YXRpYyBjb25z dCBjaGFyIF9fbW9kdWxlX3VzaW5nX2NoZWNrc3Vtc1tdIF9fYXR0cmlidXRlX18oKHNlY3Rpb24o Ii5tb2RpbmZvIikpKSA9CiJ1c2luZ19jaGVja3N1bXM9MSI7CiMgMjQgInVzYi11aGNpLmMiIDIK IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3BjaS5oIiAxCiMg Mjc2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3BjaS5oIgojIDEg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcGNpX2lkcy5oIiAxCiMg Mjc3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3BjaS5oIiAyCiMg Mjk5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3BjaS5oIgojIDEg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQoKCgoK IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAx CiMgNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90eXBlcy5oIiAy CgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5 cGVzLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L3N0ZGRlZi5oIiAxCiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC9wb3NpeF90eXBlcy5oIiAyCiMgMzYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvcG9zaXhfdHlwZXMuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVk IGxvbmcgZmRzX2JpdHMgWygxMDI0Lyg4ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKSldOwp9IF9f a2VybmVsX2ZkX3NldDsKCgp0eXBlZGVmIHZvaWQgKCpfX2tlcm5lbF9zaWdoYW5kbGVyX3QpKGlu dCk7CgoKdHlwZWRlZiBpbnQgX19rZXJuZWxfa2V5X3Q7CgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgiIDEKIyAxMCAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCIKdHlwZWRlZiB1bnNpZ25l ZCBzaG9ydCBfX2tlcm5lbF9kZXZfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fa2VybmVsX2lu b190Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX21vZGVfdDsKdHlwZWRlZiB1bnNp Z25lZCBzaG9ydCBfX2tlcm5lbF9ubGlua190Owp0eXBlZGVmIGxvbmcgX19rZXJuZWxfb2ZmX3Q7 CnR5cGVkZWYgaW50IF9fa2VybmVsX3BpZF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2Vy bmVsX2lwY19waWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF91aWRfdDsKdHlw ZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9naWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg X19rZXJuZWxfc2l6ZV90Owp0eXBlZGVmIGludCBfX2tlcm5lbF9zc2l6ZV90Owp0eXBlZGVmIGlu dCBfX2tlcm5lbF9wdHJkaWZmX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5lbF90aW1lX3Q7CnR5cGVk ZWYgbG9uZyBfX2tlcm5lbF9zdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIF9fa2VybmVsX2Nsb2Nr X3Q7CnR5cGVkZWYgaW50IF9fa2VybmVsX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAqIF9fa2VybmVs X2NhZGRyX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfdWlkMTZfdDsKdHlwZWRl ZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9naWQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBf X2tlcm5lbF91aWQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF9naWQzMl90OwoK dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9vbGRfdWlkX3Q7CnR5cGVkZWYgdW5zaWdu ZWQgc2hvcnQgX19rZXJuZWxfb2xkX2dpZF90OwoKCnR5cGVkZWYgbG9uZyBsb25nIF9fa2VybmVs X2xvZmZfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CgogICAgICAgIGludCB2YWxbMl07CgoKCn0gX19r ZXJuZWxfZnNpZF90OwojIDQ3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L3Bvc2l4X3R5cGVzLmgiIDIKIyA5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L3R5cGVzLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2FzbS90eXBlcy5oIiAxCiMgMTAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvdHlwZXMuaCIgMgoKCgp0eXBlZGVmIF9fa2VybmVsX2ZkX3NldCBmZF9zZXQ7CnR5 cGVkZWYgX19rZXJuZWxfZGV2X3QgZGV2X3Q7CnR5cGVkZWYgX19rZXJuZWxfaW5vX3QgaW5vX3Q7 CnR5cGVkZWYgX19rZXJuZWxfbW9kZV90IG1vZGVfdDsKdHlwZWRlZiBfX2tlcm5lbF9ubGlua190 IG5saW5rX3Q7CnR5cGVkZWYgX19rZXJuZWxfb2ZmX3Qgb2ZmX3Q7CnR5cGVkZWYgX19rZXJuZWxf cGlkX3QgcGlkX3Q7CnR5cGVkZWYgX19rZXJuZWxfZGFkZHJfdCBkYWRkcl90Owp0eXBlZGVmIF9f a2VybmVsX2tleV90IGtleV90Owp0eXBlZGVmIF9fa2VybmVsX3N1c2Vjb25kc190IHN1c2Vjb25k c190OwoKCnR5cGVkZWYgX19rZXJuZWxfdWlkMzJfdCB1aWRfdDsKdHlwZWRlZiBfX2tlcm5lbF9n aWQzMl90IGdpZF90Owp0eXBlZGVmIF9fa2VybmVsX3VpZDE2X3QgdWlkMTZfdDsKdHlwZWRlZiBf X2tlcm5lbF9naWQxNl90IGdpZDE2X3Q7CgoKCnR5cGVkZWYgX19rZXJuZWxfb2xkX3VpZF90IG9s ZF91aWRfdDsKdHlwZWRlZiBfX2tlcm5lbF9vbGRfZ2lkX3Qgb2xkX2dpZF90OwojIDQ1ICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiCnR5cGVkZWYgX19r ZXJuZWxfbG9mZl90IGxvZmZfdDsKIyA1NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC90eXBlcy5oIgp0eXBlZGVmIF9fa2VybmVsX3NpemVfdCBzaXplX3Q7CgoKCgp0 eXBlZGVmIF9fa2VybmVsX3NzaXplX3Qgc3NpemVfdDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfcHRy ZGlmZl90IHB0cmRpZmZfdDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfdGltZV90IHRpbWVfdDsKCgoK CnR5cGVkZWYgX19rZXJuZWxfY2xvY2tfdCBjbG9ja190OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF9j YWRkcl90IGNhZGRyX3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1X2NoYXI7CnR5cGVkZWYg dW5zaWduZWQgc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ7CnR5cGVk ZWYgdW5zaWduZWQgbG9uZyB1X2xvbmc7CgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVuY2hhcjsK dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7 CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1bG9uZzsKCgoKCnR5cGVkZWYgX191OCB1X2ludDhfdDsK dHlwZWRlZiBfX3M4IGludDhfdDsKdHlwZWRlZiBfX3UxNiB1X2ludDE2X3Q7CnR5cGVkZWYgX19z MTYgaW50MTZfdDsKdHlwZWRlZiBfX3UzMiB1X2ludDMyX3Q7CnR5cGVkZWYgX19zMzIgaW50MzJf dDsKCgoKdHlwZWRlZiBfX3U4IHVpbnQ4X3Q7CnR5cGVkZWYgX191MTYgdWludDE2X3Q7CnR5cGVk ZWYgX191MzIgdWludDMyX3Q7CgoKdHlwZWRlZiBfX3U2NCB1aW50NjRfdDsKdHlwZWRlZiBfX3U2 NCB1X2ludDY0X3Q7CnR5cGVkZWYgX19zNjQgaW50NjRfdDsKIyAxMjMgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIKc3RydWN0IHVzdGF0IHsKICAgICAg ICBfX2tlcm5lbF9kYWRkcl90IGZfdGZyZWU7CiAgICAgICAgX19rZXJuZWxfaW5vX3QgZl90aW5v ZGU7CiAgICAgICAgY2hhciBmX2ZuYW1lWzZdOwogICAgICAgIGNoYXIgZl9mcGFja1s2XTsKfTsK IyAzMDAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcGNpLmgiIDIK IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAx CiMgMzAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3BjaS5oIiAy CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pb3BvcnQuaCIg MQojIDE1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2lvcG9ydC5o IgpzdHJ1Y3QgcmVzb3VyY2UgewogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgdW5z aWduZWQgbG9uZyBzdGFydCwgZW5kOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAg ICAgc3RydWN0IHJlc291cmNlICpwYXJlbnQsICpzaWJsaW5nLCAqY2hpbGQ7Cn07CgpzdHJ1Y3Qg cmVzb3VyY2VfbGlzdCB7CiAgICAgICAgc3RydWN0IHJlc291cmNlX2xpc3QgKm5leHQ7CiAgICAg ICAgc3RydWN0IHJlc291cmNlICpyZXM7CiAgICAgICAgc3RydWN0IHBjaV9kZXYgKmRldjsKfTsK IyA4MyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pb3BvcnQuaCIK ZXh0ZXJuIHN0cnVjdCByZXNvdXJjZSBpb3BvcnRfcmVzb3VyY2VfUjg2NWViY2NkOwpleHRlcm4g c3RydWN0IHJlc291cmNlIGlvbWVtX3Jlc291cmNlX1I5ZWZlZDVhZjsKCmV4dGVybiBpbnQgZ2V0 X3Jlc291cmNlX2xpc3Qoc3RydWN0IHJlc291cmNlICosIGNoYXIgKmJ1ZiwgaW50IHNpemUpOwoK ZXh0ZXJuIGludCBjaGVja19yZXNvdXJjZV9SZDhkNzhhYWEoc3RydWN0IHJlc291cmNlICpyb290 LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIGludCByZXF1ZXN0X3Jlc291 cmNlX1I0MTY4NWNmYihzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHN0cnVjdCByZXNvdXJjZSAqbmV3 KTsKZXh0ZXJuIGludCByZWxlYXNlX3Jlc291cmNlX1I4MTRlODQwNyhzdHJ1Y3QgcmVzb3VyY2Ug Km5ldyk7CmV4dGVybiBpbnQgYWxsb2NhdGVfcmVzb3VyY2VfUmE3MTU4MTJiKHN0cnVjdCByZXNv dXJjZSAqcm9vdCwgc3RydWN0IHJlc291cmNlICpuZXcsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGxvbmcgbWluLCB1bnNpZ25lZCBsb25nIG1heCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIGFsaWduLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg IHZvaWQgKCphbGlnbmYpKHZvaWQgKiwgc3RydWN0IHJlc291cmNlICosIHVuc2lnbmVkIGxvbmcp LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFsaWduZl9kYXRhKTsKCgoKCgpl eHRlcm4gc3RydWN0IHJlc291cmNlICogX19yZXF1ZXN0X3JlZ2lvbl9SMWExYTRmMDkoc3RydWN0 IHJlc291cmNlICosIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbiwgY29uc3Qg Y2hhciAqbmFtZSk7CgoKCgoKCgpleHRlcm4gaW50IF9fY2hlY2tfcmVnaW9uX1JmMWQwY2RhYihz dHJ1Y3QgcmVzb3VyY2UgKiwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CmV4dGVybiB2 b2lkIF9fcmVsZWFzZV9yZWdpb25fUmQ0OTUwMWQ0KHN0cnVjdCByZXNvdXJjZSAqLCB1bnNpZ25l ZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKCgoKCgpleHRlcm4gdm9pZCBhdXRvaXJxX3NldHVwX1I1 YTVhMjI4MChpbnQgd2FpdHRpbWUpOwpleHRlcm4gaW50IGF1dG9pcnFfcmVwb3J0X1I4NDUzMGM1 MyhpbnQgd2FpdHRpbWUpOwojIDMwMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC9wY2kuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvbGlzdC5oIiAxCiMgMzAzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L3BjaS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s aW51eC9lcnJuby5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9hc20vZXJybm8uaCIgMQojIDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvZXJybm8uaCIgMgojIDMwNCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC9wY2kuaCIgMgoKCmVudW0gcGNpX21tYXBfc3RhdGUgewogICAgICAgIHBjaV9tbWFw X2lvLAogICAgICAgIHBjaV9tbWFwX21lbQp9OwojIDMzNiAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9wY2kuaCIKc3RydWN0IHBjaV9kZXYgewogICAgICAgIHN0cnVj dCBsaXN0X2hlYWQgZ2xvYmFsX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBidXNfbGlz dDsKICAgICAgICBzdHJ1Y3QgcGNpX2J1cyAqYnVzOwogICAgICAgIHN0cnVjdCBwY2lfYnVzICpz dWJvcmRpbmF0ZTsKCiAgICAgICAgdm9pZCAqc3lzZGF0YTsKICAgICAgICBzdHJ1Y3QgcHJvY19k aXJfZW50cnkgKnByb2NlbnQ7CgogICAgICAgIHVuc2lnbmVkIGludCBkZXZmbjsKICAgICAgICB1 bnNpZ25lZCBzaG9ydCB2ZW5kb3I7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZGV2aWNlOwogICAg ICAgIHVuc2lnbmVkIHNob3J0IHN1YnN5c3RlbV92ZW5kb3I7CiAgICAgICAgdW5zaWduZWQgc2hv cnQgc3Vic3lzdGVtX2RldmljZTsKICAgICAgICB1bnNpZ25lZCBpbnQgY2xhc3M7CiAgICAgICAg dTggaGRyX3R5cGU7CiAgICAgICAgdTggcm9tX2Jhc2VfcmVnOwoKICAgICAgICBzdHJ1Y3QgcGNp X2RyaXZlciAqZHJpdmVyOwogICAgICAgIHZvaWQgKmRyaXZlcl9kYXRhOwogICAgICAgIGRtYV9h ZGRyX3QgZG1hX21hc2s7CgoKCgoKICAgICAgICB1MzIgY3VycmVudF9zdGF0ZTsKCgoKCiAgICAg ICAgdW5zaWduZWQgc2hvcnQgdmVuZG9yX2NvbXBhdGlibGVbNF07CiAgICAgICAgdW5zaWduZWQg c2hvcnQgZGV2aWNlX2NvbXBhdGlibGVbNF07CgoKCgoKICAgICAgICB1bnNpZ25lZCBpbnQgaXJx OwogICAgICAgIHN0cnVjdCByZXNvdXJjZSByZXNvdXJjZVsxMl07CiAgICAgICAgc3RydWN0IHJl c291cmNlIGRtYV9yZXNvdXJjZVsyXTsKICAgICAgICBzdHJ1Y3QgcmVzb3VyY2UgaXJxX3Jlc291 cmNlWzJdOwoKICAgICAgICBjaGFyIG5hbWVbODBdOwogICAgICAgIGNoYXIgc2xvdF9uYW1lWzhd OwogICAgICAgIGludCBhY3RpdmU7CiAgICAgICAgaW50IHJvOwogICAgICAgIHVuc2lnbmVkIHNo b3J0IHJlZ3M7CgogICAgICAgIGludCAoKnByZXBhcmUpKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwog ICAgICAgIGludCAoKmFjdGl2YXRlKShzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKICAgICAgICBpbnQg KCpkZWFjdGl2YXRlKShzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKfTsKIyA0MDcgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcGNpLmgiCnN0cnVjdCBwY2lfYnVzIHsKICAg ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7CiAgICAgICAgc3RydWN0IHBjaV9idXMgKnBhcmVu dDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGNoaWxkcmVuOwogICAgICAgIHN0cnVjdCBsaXN0 X2hlYWQgZGV2aWNlczsKICAgICAgICBzdHJ1Y3QgcGNpX2RldiAqc2VsZjsKICAgICAgICBzdHJ1 Y3QgcmVzb3VyY2UgKnJlc291cmNlWzRdOwoKICAgICAgICBzdHJ1Y3QgcGNpX29wcyAqb3BzOwog ICAgICAgIHZvaWQgKnN5c2RhdGE7CiAgICAgICAgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwcm9j ZGlyOwoKICAgICAgICB1bnNpZ25lZCBjaGFyIG51bWJlcjsKICAgICAgICB1bnNpZ25lZCBjaGFy IHByaW1hcnk7CiAgICAgICAgdW5zaWduZWQgY2hhciBzZWNvbmRhcnk7CiAgICAgICAgdW5zaWdu ZWQgY2hhciBzdWJvcmRpbmF0ZTsKCiAgICAgICAgY2hhciBuYW1lWzQ4XTsKICAgICAgICB1bnNp Z25lZCBzaG9ydCB2ZW5kb3I7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZGV2aWNlOwogICAgICAg IHVuc2lnbmVkIGludCBzZXJpYWw7CiAgICAgICAgdW5zaWduZWQgY2hhciBwbnB2ZXI7CiAgICAg ICAgdW5zaWduZWQgY2hhciBwcm9kdWN0dmVyOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY2hlY2tz dW07CiAgICAgICAgdW5zaWduZWQgY2hhciBwYWQxOwp9OwoKCgpleHRlcm4gc3RydWN0IGxpc3Rf aGVhZCBwY2lfcm9vdF9idXNlc19SMDgyYzMyMTM7CmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIHBj aV9kZXZpY2VzX1I3YTg0YjEwMjsKIyA0NTIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvcGNpLmgiCnN0cnVjdCBwY2lfb3BzIHsKICAgICAgICBpbnQgKCpyZWFkX2J5 dGUpKHN0cnVjdCBwY2lfZGV2ICosIGludCB3aGVyZSwgdTggKnZhbCk7CiAgICAgICAgaW50ICgq cmVhZF93b3JkKShzdHJ1Y3QgcGNpX2RldiAqLCBpbnQgd2hlcmUsIHUxNiAqdmFsKTsKICAgICAg ICBpbnQgKCpyZWFkX2R3b3JkKShzdHJ1Y3QgcGNpX2RldiAqLCBpbnQgd2hlcmUsIHUzMiAqdmFs KTsKICAgICAgICBpbnQgKCp3cml0ZV9ieXRlKShzdHJ1Y3QgcGNpX2RldiAqLCBpbnQgd2hlcmUs IHU4IHZhbCk7CiAgICAgICAgaW50ICgqd3JpdGVfd29yZCkoc3RydWN0IHBjaV9kZXYgKiwgaW50 IHdoZXJlLCB1MTYgdmFsKTsKICAgICAgICBpbnQgKCp3cml0ZV9kd29yZCkoc3RydWN0IHBjaV9k ZXYgKiwgaW50IHdoZXJlLCB1MzIgdmFsKTsKfTsKCnN0cnVjdCBwYnVzX3NldF9yYW5nZXNfZGF0 YQp7CiAgICAgICAgaW50IGZvdW5kX3ZnYTsKICAgICAgICB1bnNpZ25lZCBsb25nIGlvX3N0YXJ0 LCBpb19lbmQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtZW1fc3RhcnQsIG1lbV9lbmQ7Cn07Cgpz dHJ1Y3QgcGNpX2RldmljZV9pZCB7CiAgICAgICAgdW5zaWduZWQgaW50IHZlbmRvciwgZGV2aWNl OwogICAgICAgIHVuc2lnbmVkIGludCBzdWJ2ZW5kb3IsIHN1YmRldmljZTsKICAgICAgICB1bnNp Z25lZCBpbnQgY2xhc3MsIGNsYXNzX21hc2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkcml2ZXJf ZGF0YTsKfTsKCnN0cnVjdCBwY2lfZHJpdmVyIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG5v ZGU7CiAgICAgICAgY2hhciAqbmFtZTsKICAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9p ZCAqaWRfdGFibGU7CiAgICAgICAgaW50ICgqcHJvYmUpIChzdHJ1Y3QgcGNpX2RldiAqZGV2LCBj b25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpOwogICAgICAgIHZvaWQgKCpyZW1vdmUpIChz dHJ1Y3QgcGNpX2RldiAqZGV2KTsKICAgICAgICBpbnQgKCpzYXZlX3N0YXRlKSAoc3RydWN0IHBj aV9kZXYgKmRldiwgdTMyIHN0YXRlKTsKICAgICAgICBpbnQgKCpzdXNwZW5kKShzdHJ1Y3QgcGNp X2RldiAqZGV2LCB1MzIgc3RhdGUpOwogICAgICAgIGludCAoKnJlc3VtZSkgKHN0cnVjdCBwY2lf ZGV2ICpkZXYpOwogICAgICAgIGludCAoKmVuYWJsZV93YWtlKSAoc3RydWN0IHBjaV9kZXYgKmRl diwgdTMyIHN0YXRlLCBpbnQgZW5hYmxlKTsKfTsKIyA0OTQgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvcGNpLmgiCnZvaWQgcGNpYmlvc19pbml0KHZvaWQpOwp2b2lk IHBjaWJpb3NfZml4dXBfYnVzKHN0cnVjdCBwY2lfYnVzICopOwppbnQgcGNpYmlvc19lbmFibGVf ZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICopOwpjaGFyICpwY2liaW9zX3NldHVwIChjaGFyICpzdHIp OwoKCnZvaWQgcGNpYmlvc19hbGlnbl9yZXNvdXJjZSh2b2lkICosIHN0cnVjdCByZXNvdXJjZSAq LCB1bnNpZ25lZCBsb25nKTsKdm9pZCBwY2liaW9zX3VwZGF0ZV9yZXNvdXJjZShzdHJ1Y3QgcGNp X2RldiAqLCBzdHJ1Y3QgcmVzb3VyY2UgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgcmVzb3VyY2UgKiwgaW50KTsKdm9pZCBwY2liaW9zX3VwZGF0ZV9pcnEoc3RydWN0IHBj aV9kZXYgKiwgaW50IGlycSk7CnZvaWQgcGNpYmlvc19maXh1cF9wYnVzX3JhbmdlcyhzdHJ1Y3Qg cGNpX2J1cyAqLCBzdHJ1Y3QgcGJ1c19zZXRfcmFuZ2VzX2RhdGEgKik7CgoKCmludCBwY2liaW9z X3ByZXNlbnRfUjUyMGE3NWI5KHZvaWQpOwppbnQgcGNpYmlvc19yZWFkX2NvbmZpZ19ieXRlX1Jk ODAxMTVlMSAodW5zaWduZWQgY2hhciBidXMsIHVuc2lnbmVkIGNoYXIgZGV2X2ZuLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHdoZXJlLCB1bnNpZ25lZCBjaGFy ICp2YWwpOwppbnQgcGNpYmlvc19yZWFkX2NvbmZpZ193b3JkX1JhYTllZmZkNyAodW5zaWduZWQg Y2hhciBidXMsIHVuc2lnbmVkIGNoYXIgZGV2X2ZuLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBjaGFyIHdoZXJlLCB1bnNpZ25lZCBzaG9ydCAqdmFsKTsKaW50IHBjaWJp b3NfcmVhZF9jb25maWdfZHdvcmRfUjM4YWU2Njg5ICh1bnNpZ25lZCBjaGFyIGJ1cywgdW5zaWdu ZWQgY2hhciBkZXZfZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj aGFyIHdoZXJlLCB1bnNpZ25lZCBpbnQgKnZhbCk7CmludCBwY2liaW9zX3dyaXRlX2NvbmZpZ19i eXRlX1I3MTk4NTZlZSAodW5zaWduZWQgY2hhciBidXMsIHVuc2lnbmVkIGNoYXIgZGV2X2ZuLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB3aGVyZSwgdW5zaWdu ZWQgY2hhciB2YWwpOwppbnQgcGNpYmlvc193cml0ZV9jb25maWdfd29yZF9SNGYxYzJlMzMgKHVu c2lnbmVkIGNoYXIgYnVzLCB1bnNpZ25lZCBjaGFyIGRldl9mbiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgd2hlcmUsIHVuc2lnbmVkIHNob3J0IHZhbCk7Cmlu dCBwY2liaW9zX3dyaXRlX2NvbmZpZ19kd29yZF9SODFiNGY0NjUgKHVuc2lnbmVkIGNoYXIgYnVz LCB1bnNpZ25lZCBjaGFyIGRldl9mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBjaGFyIHdoZXJlLCB1bnNpZ25lZCBpbnQgdmFsKTsKaW50IHBjaWJpb3NfZmluZF9j bGFzc19SZWYzMzNmN2IgKHVuc2lnbmVkIGludCBjbGFzc19jb2RlLCB1bnNpZ25lZCBzaG9ydCBp bmRleCwgdW5zaWduZWQgY2hhciAqYnVzLCB1bnNpZ25lZCBjaGFyICpkZXZfZm4pOwppbnQgcGNp Ymlvc19maW5kX2RldmljZV9SOTdkNDljNGQgKHVuc2lnbmVkIHNob3J0IHZlbmRvciwgdW5zaWdu ZWQgc2hvcnQgZGV2X2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQg aW5kZXgsIHVuc2lnbmVkIGNoYXIgKmJ1cywKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGNoYXIgKmRldl9mbik7CgoKCnZvaWQgcGNpX2luaXQodm9pZCk7CmludCBwY2lfYnVzX2V4 aXN0cyhjb25zdCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBpbnQgbnIpOwpzdHJ1Y3QgcGNpX2J1 cyAqcGNpX3NjYW5fYnVzKGludCBidXMsIHN0cnVjdCBwY2lfb3BzICpvcHMsIHZvaWQgKnN5c2Rh dGEpOwpzdHJ1Y3QgcGNpX2J1cyAqcGNpX2FsbG9jX3ByaW1hcnlfYnVzKGludCBidXMpOwpzdHJ1 Y3QgcGNpX2RldiAqcGNpX3NjYW5fc2xvdChzdHJ1Y3QgcGNpX2RldiAqdGVtcCk7CmludCBwY2lf cHJvY19hdHRhY2hfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwppbnQgcGNpX3Byb2NfZGV0 YWNoX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKdm9pZCBwY2lfbmFtZV9kZXZpY2Uoc3Ry dWN0IHBjaV9kZXYgKmRldik7CmNoYXIgKnBjaV9jbGFzc19uYW1lKHUzMiBjbGFzcyk7CnZvaWQg cGNpX3JlYWRfYnJpZGdlX2Jhc2VzKHN0cnVjdCBwY2lfYnVzICpjaGlsZCk7CnN0cnVjdCByZXNv dXJjZSAqcGNpX2ZpbmRfcGFyZW50X3Jlc291cmNlX1I1Y2NjZmEzNyhjb25zdCBzdHJ1Y3QgcGNp X2RldiAqZGV2LCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcyk7CmludCBwY2lfc2V0dXBfZGV2aWNlKHN0 cnVjdCBwY2lfZGV2ICpkZXYpOwppbnQgcGNpX2dldF9pbnRlcnJ1cHRfcGluKHN0cnVjdCBwY2lf ZGV2ICpkZXYsIHN0cnVjdCBwY2lfZGV2ICoqYnJpZGdlKTsKCgoKc3RydWN0IHBjaV9kZXYgKnBj aV9maW5kX2RldmljZV9SNGVmYmI3Y2IgKHVuc2lnbmVkIGludCB2ZW5kb3IsIHVuc2lnbmVkIGlu dCBkZXZpY2UsIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpmcm9tKTsKc3RydWN0IHBjaV9kZXYgKnBj aV9maW5kX3N1YnN5c19SODVhNTk5NTIgKHVuc2lnbmVkIGludCB2ZW5kb3IsIHVuc2lnbmVkIGlu dCBkZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBz c192ZW5kb3IsIHVuc2lnbmVkIGludCBzc19kZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpmcm9tKTsKc3RydWN0IHBjaV9kZXYgKnBj aV9maW5kX2NsYXNzX1I2ODEwMjc2YiAodW5zaWduZWQgaW50IGNsYXNzLCBjb25zdCBzdHJ1Y3Qg cGNpX2RldiAqZnJvbSk7CnN0cnVjdCBwY2lfZGV2ICpwY2lfZmluZF9zbG90X1JlMjllYjY1ZCAo dW5zaWduZWQgaW50IGJ1cywgdW5zaWduZWQgaW50IGRldmZuKTsKaW50IHBjaV9maW5kX2NhcGFi aWxpdHlfUmFmMjc5ZmIyIChzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgY2FwKTsKCmludCBwY2lf cmVhZF9jb25maWdfYnl0ZV9SZTQyNmMwZTgoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHdoZXJl LCB1OCAqdmFsKTsKaW50IHBjaV9yZWFkX2NvbmZpZ193b3JkX1IxMWFiYzBkNChzdHJ1Y3QgcGNp X2RldiAqZGV2LCBpbnQgd2hlcmUsIHUxNiAqdmFsKTsKaW50IHBjaV9yZWFkX2NvbmZpZ19kd29y ZF9SYTNiODI4MTMoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHdoZXJlLCB1MzIgKnZhbCk7Cmlu dCBwY2lfd3JpdGVfY29uZmlnX2J5dGVfUmJiNDNlMTE0KHN0cnVjdCBwY2lfZGV2ICpkZXYsIGlu dCB3aGVyZSwgdTggdmFsKTsKaW50IHBjaV93cml0ZV9jb25maWdfd29yZF9SMjBmODU4NDUoc3Ry dWN0IHBjaV9kZXYgKmRldiwgaW50IHdoZXJlLCB1MTYgdmFsKTsKaW50IHBjaV93cml0ZV9jb25m aWdfZHdvcmRfUjhjNGUxYTIxKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCB3aGVyZSwgdTMyIHZh bCk7CgppbnQgcGNpX2VuYWJsZV9kZXZpY2VfUmQwNGZlYTA4KHN0cnVjdCBwY2lfZGV2ICpkZXYp Owp2b2lkIHBjaV9kaXNhYmxlX2RldmljZV9SNWEzNDNhNzgoc3RydWN0IHBjaV9kZXYgKmRldik7 CnZvaWQgcGNpX3NldF9tYXN0ZXJfUjJkMDc2MGFlKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwppbnQg cGNpX3NldF9kbWFfbWFza19SZTE1YTdkMjQoc3RydWN0IHBjaV9kZXYgKmRldiwgZG1hX2FkZHJf dCBtYXNrKTsKaW50IHBjaV9hc3NpZ25fcmVzb3VyY2VfUmY1YmVjNzNmKHN0cnVjdCBwY2lfZGV2 ICpkZXYsIGludCBpKTsKCgppbnQgcGNpX3NhdmVfc3RhdGVfUjFlMmZhOTI5KHN0cnVjdCBwY2lf ZGV2ICpkZXYsIHUzMiAqYnVmZmVyKTsKaW50IHBjaV9yZXN0b3JlX3N0YXRlX1I5N2FkNGUwYShz dHJ1Y3QgcGNpX2RldiAqZGV2LCB1MzIgKmJ1ZmZlcik7CmludCBwY2lfc2V0X3Bvd2VyX3N0YXRl X1I1MTYyZWQ2YyhzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgc3RhdGUpOwppbnQgcGNpX2VuYWJs ZV93YWtlX1I2NDM1M2FmMyhzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1MzIgc3RhdGUsIGludCBlbmFi bGUpOwoKCgppbnQgcGNpX2NsYWltX3Jlc291cmNlKHN0cnVjdCBwY2lfZGV2ICosIGludCk7CnZv aWQgcGNpX2Fzc2lnbl91bmFzc2lnbmVkX3Jlc291cmNlcyh2b2lkKTsKdm9pZCBwZGV2X2VuYWJs ZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKik7CnZvaWQgcGRldl9zb3J0X3Jlc291cmNlcyhzdHJ1 Y3QgcGNpX2RldiAqLCBzdHJ1Y3QgcmVzb3VyY2VfbGlzdCAqLCB1MzIpOwp1bnNpZ25lZCBsb25n IHBjaV9icmlkZ2VfY2hlY2tfaW8oc3RydWN0IHBjaV9kZXYgKik7CnZvaWQgcGNpX2ZpeHVwX2ly cXModTggKCopKHN0cnVjdCBwY2lfZGV2ICosIHU4ICopLAogICAgICAgICAgICAgICAgICAgIGlu dCAoKikoc3RydWN0IHBjaV9kZXYgKiwgdTgsIHU4KSk7CgppbnQgcGNpX3JlcXVlc3RfcmVnaW9u c19SM2E5ZjZiMmQoc3RydWN0IHBjaV9kZXYgKiwgY2hhciAqKTsKdm9pZCBwY2lfcmVsZWFzZV9y ZWdpb25zX1JlOWEwODY1MShzdHJ1Y3QgcGNpX2RldiAqKTsKCgppbnQgcGNpX3JlZ2lzdGVyX2Ry aXZlcl9SZGU3YjI3NTEoc3RydWN0IHBjaV9kcml2ZXIgKik7CnZvaWQgcGNpX3VucmVnaXN0ZXJf ZHJpdmVyX1I4MzZlYTIxMShzdHJ1Y3QgcGNpX2RyaXZlciAqKTsKdm9pZCBwY2lfaW5zZXJ0X2Rl dmljZShzdHJ1Y3QgcGNpX2RldiAqLCBzdHJ1Y3QgcGNpX2J1cyAqKTsKdm9pZCBwY2lfcmVtb3Zl X2RldmljZShzdHJ1Y3QgcGNpX2RldiAqKTsKc3RydWN0IHBjaV9kcml2ZXIgKnBjaV9kZXZfZHJp dmVyX1JmY2M0NTBjNChjb25zdCBzdHJ1Y3QgcGNpX2RldiAqKTsKY29uc3Qgc3RydWN0IHBjaV9k ZXZpY2VfaWQgKnBjaV9tYXRjaF9kZXZpY2VfUjQwMWFmYzliKGNvbnN0IHN0cnVjdCBwY2lfZGV2 aWNlX2lkICppZHMsIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpkZXYpOwoKCnN0cnVjdCBwY2lfcG9v bCAqcGNpX3Bvb2xfY3JlYXRlX1I2OWI2Nzg0MyAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHBj aV9kZXYgKmRldiwKICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ24sIHNp emVfdCBhbGxvY2F0aW9uLCBpbnQgZmxhZ3MpOwp2b2lkIHBjaV9wb29sX2Rlc3Ryb3lfUjFkN2I5 Y2MyIChzdHJ1Y3QgcGNpX3Bvb2wgKnBvb2wpOwoKdm9pZCAqcGNpX3Bvb2xfYWxsb2NfUjUxMzFi ODE4IChzdHJ1Y3QgcGNpX3Bvb2wgKnBvb2wsIGludCBmbGFncywgZG1hX2FkZHJfdCAqaGFuZGxl KTsKdm9pZCBwY2lfcG9vbF9mcmVlX1I3N2I4N2NmMyAoc3RydWN0IHBjaV9wb29sICpwb29sLCB2 b2lkICp2YWRkciwgZG1hX2FkZHJfdCBhZGRyKTsKCgoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvYXNtL3BjaS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvYXNtL3BjaS5oIiAyCiMgMTMgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvYXNtL3BjaS5oIgpleHRlcm4gdW5zaWduZWQgaW50IHBjaWJpb3NfYXNz aWduX2FsbF9idXNzZXModm9pZCk7CgoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBwY2lfbWVtX3N0 YXJ0X1IzZGExNzFmOTsKCgoKdm9pZCBwY2liaW9zX3NldF9tYXN0ZXIoc3RydWN0IHBjaV9kZXYg KmRldik7CnZvaWQgcGNpYmlvc19wZW5hbGl6ZV9pc2FfaXJxX1I1MjExYzhiZihpbnQgaXJxKTsK CgoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHlwZXMu aCIgMQojIDMwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wY2kuaCIg MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2xhYi5oIiAx CiMgMTIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2xhYi5oIgp0 eXBlZGVmIHN0cnVjdCBrbWVtX2NhY2hlX3Mga21lbV9jYWNoZV90OwoKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21tLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDEKCgoKIyAxICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wYXJhbS5oIiAxCiMgNSAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgpleHRlcm4gdW5zaWdu ZWQgbG9uZyBldmVudF9SN2IxNmMzNDQ7CgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIgMQoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvcHRyYWNlLmgiIDEKIyAyNCAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9wdHJhY2UuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2FzbS9wdHJhY2UuaCIgMQojIDI2ICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2FzbS9wdHJhY2UuaCIKc3RydWN0IHB0X3JlZ3MgewogICAgICAgIGxv bmcgZWJ4OwogICAgICAgIGxvbmcgZWN4OwogICAgICAgIGxvbmcgZWR4OwogICAgICAgIGxvbmcg ZXNpOwogICAgICAgIGxvbmcgZWRpOwogICAgICAgIGxvbmcgZWJwOwogICAgICAgIGxvbmcgZWF4 OwogICAgICAgIGludCB4ZHM7CiAgICAgICAgaW50IHhlczsKICAgICAgICBsb25nIG9yaWdfZWF4 OwogICAgICAgIGxvbmcgZWlwOwogICAgICAgIGludCB4Y3M7CiAgICAgICAgbG9uZyBlZmxhZ3M7 CiAgICAgICAgbG9uZyBlc3A7CiAgICAgICAgaW50IHhzczsKfTsKIyA2MCAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcHRyYWNlLmgiCmV4dGVybiB2b2lkIHNob3dfcmVn cyhzdHJ1Y3QgcHRfcmVncyAqKTsKIyAyNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9wdHJhY2UuaCIgMgojIDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvYmluZm10cy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiIDEKIyAxNiAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiCiMgMSAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTcgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAxCiMgOSAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxMCAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9saW5rYWdlLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9saW5rYWdlLmgiIDIKIyAxMSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9saW1pdHMuaCIgMQojIDEyICIvdXNyL3NyYy9ydWRv L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMQojIDEzICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMgMTAgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvbGludXgva2VybmVsLmgiCiMgMSAiL3Vzci9zcmMvcnVkby9nY2Mt Q1ZTL3ByZWZpeC9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjAuMi9pbmNsdWRlL3N0 ZGFyZy5oIiAxIDMKIyA0MyAiL3Vzci9zcmMvcnVkby9nY2MtQ1ZTL3ByZWZpeC9saWIvZ2NjLWxp Yi9pNTg2LXBjLWxpbnV4LWdudS8zLjAuMi9pbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19i dWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgMTEwICIvdXNyL3NyYy9ydWRvL2djYy1D VlMvcHJlZml4L2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMC4yL2luY2x1ZGUvc3Rk YXJnLmgiIDMKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDExICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCiMgMSAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9saW5rYWdlLmgiIDEKIyAxMiAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMgojIDEgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc3RkZGVmLmgiIDEKIyAxMyAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMgojIDEgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDE0ICIv dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCiMgNDkg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgva2VybmVsLmgiCnN0cnVj dCBjb21wbGV0aW9uOwoKZXh0ZXJuIHN0cnVjdCBub3RpZmllcl9ibG9jayAqcGFuaWNfbm90aWZp ZXJfbGlzdDsKICAgICAgICAgICB2b2lkIHBhbmljX1IwMTA3NWJmMChjb25zdCBjaGFyICogZm10 LCAuLi4pCiAgICAgICAgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuLCBmb3JtYXQgKHByaW50Ziwg MSwgMikpKTsKICAgICAgICAgICB2b2lkIGRvX2V4aXQobG9uZyBlcnJvcl9jb2RlKQogICAgICAg IF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CiAgICAgICAgICAgdm9pZCBjb21wbGV0ZV9hbmRf ZXhpdF9SOTVkZWZmYjcoc3RydWN0IGNvbXBsZXRpb24gKiwgbG9uZykKICAgICAgICBfX2F0dHJp YnV0ZV9fKChub3JldHVybikpOwpleHRlcm4gaW50IGFicyhpbnQpOwpleHRlcm4gdW5zaWduZWQg bG9uZyBzaW1wbGVfc3RydG91bF9SMjAwMDAzMjkoY29uc3QgY2hhciAqLGNoYXIgKiosdW5zaWdu ZWQgaW50KTsKZXh0ZXJuIGxvbmcgc2ltcGxlX3N0cnRvbF9SMGI3NDJmZDcoY29uc3QgY2hhciAq LGNoYXIgKiosdW5zaWduZWQgaW50KTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBzaW1wbGVf c3RydG91bGwoY29uc3QgY2hhciAqLGNoYXIgKiosdW5zaWduZWQgaW50KTsKZXh0ZXJuIGxvbmcg bG9uZyBzaW1wbGVfc3RydG9sbChjb25zdCBjaGFyICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwpl eHRlcm4gaW50IHNwcmludGZfUjNjMmM1YWY1KGNoYXIgKiBidWYsIGNvbnN0IGNoYXIgKiBmbXQs IC4uLik7CmV4dGVybiBpbnQgdnNwcmludGZfUjk1NGNiYjI2KGNoYXIgKmJ1ZiwgY29uc3QgY2hh ciAqLCB2YV9saXN0KTsKZXh0ZXJuIGludCBzbnByaW50Zl9SNzAxZDBlYmQoY2hhciAqIGJ1Ziwg c2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKZXh0ZXJuIGludCB2c25wcmludGZf UjU3YTY1MDRlKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlz dCBhcmdzKTsKCmV4dGVybiBpbnQgc3NjYW5mX1I4NTkyMDRhZihjb25zdCBjaGFyICosIGNvbnN0 IGNoYXIgKiwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHNjYW5mLDIsMykp KTsKZXh0ZXJuIGludCB2c3NjYW5mX1JiNTA0NDI3MShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg KiwgdmFfbGlzdCk7CgpleHRlcm4gaW50IGdldF9vcHRpb25fUmIwZTEwNzgxKGNoYXIgKipzdHIs IGludCAqcGludCk7CmV4dGVybiBjaGFyICpnZXRfb3B0aW9uc19SMGZiZmY5YjkoY2hhciAqc3Ry LCBpbnQgbmludHMsIGludCAqaW50cyk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgbWVtcGFy c2VfUjIzZjJkMzZmKGNoYXIgKnB0ciwgY2hhciAqKnJldHB0cik7CmV4dGVybiB2b2lkIGRldl9w cm9iZV9sb2NrKHZvaWQpOwpleHRlcm4gdm9pZCBkZXZfcHJvYmVfdW5sb2NrKHZvaWQpOwoKZXh0 ZXJuIGludCBzZXNzaW9uX29mX3BncnAoaW50IHBncnApOwoKIF9fYXR0cmlidXRlX18oKHJlZ3Bh cm0oMCkpKSBpbnQgcHJpbnRrX1IxYjdkNDA3NChjb25zdCBjaGFyICogZm10LCAuLi4pCiAgICAg ICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpOwoKZXh0ZXJuIGludCBj b25zb2xlX2xvZ2xldmVsOwoKc3RhdGljIGlubGluZSB2b2lkIGNvbnNvbGVfc2lsZW50KHZvaWQp CnsKICAgICAgICBjb25zb2xlX2xvZ2xldmVsID0gMDsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNv bnNvbGVfdmVyYm9zZSh2b2lkKQp7CiAgICAgICAgaWYgKGNvbnNvbGVfbG9nbGV2ZWwpCiAgICAg ICAgICAgICAgICBjb25zb2xlX2xvZ2xldmVsID0gMTU7Cn0KCmV4dGVybiB2b2lkIGJ1c3Rfc3Bp bmxvY2tzKGludCB5ZXMpOwpleHRlcm4gaW50IG9vcHNfaW5fcHJvZ3Jlc3M7CiMgMTU3ICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgpzdHJ1Y3Qgc3lz aW5mbyB7CiAgICAgICAgbG9uZyB1cHRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb2Fkc1sz XTsKICAgICAgICB1bnNpZ25lZCBsb25nIHRvdGFscmFtOwogICAgICAgIHVuc2lnbmVkIGxvbmcg ZnJlZXJhbTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNoYXJlZHJhbTsKICAgICAgICB1bnNpZ25l ZCBsb25nIGJ1ZmZlcnJhbTsKICAgICAgICB1bnNpZ25lZCBsb25nIHRvdGFsc3dhcDsKICAgICAg ICB1bnNpZ25lZCBsb25nIGZyZWVzd2FwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHByb2NzOwog ICAgICAgIHVuc2lnbmVkIHNob3J0IHBhZDsKICAgICAgICB1bnNpZ25lZCBsb25nIHRvdGFsaGln aDsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVoaWdoOwogICAgICAgIHVuc2lnbmVkIGludCBt ZW1fdW5pdDsKICAgICAgICBjaGFyIF9mWzIwLTIqc2l6ZW9mKGxvbmcpLXNpemVvZihpbnQpXTsK fTsKIyAxNCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC93YWl0Lmgi IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIg MQojIDE1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIg MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc3RkZGVmLmgi IDEKIyAxNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC93YWl0Lmgi IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NwaW5sb2Nr LmgiIDEKIyAxNyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC93YWl0 LmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZp Zy5oIiAxCiMgMTggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvd2Fp dC5oIiAyCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3BhZ2Uu aCIgMQojIDIwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3dhaXQu aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nv ci5oIiAxCiMgMjEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvd2Fp dC5oIiAyCiMgMzEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvd2Fp dC5oIgpzdHJ1Y3QgX193YWl0X3F1ZXVlIHsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7Cgog ICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqIHRhc2s7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh ZCB0YXNrX2xpc3Q7CgoKCgp9Owp0eXBlZGVmIHN0cnVjdCBfX3dhaXRfcXVldWUgd2FpdF9xdWV1 ZV90OwojIDc3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3dhaXQu aCIKc3RydWN0IF9fd2FpdF9xdWV1ZV9oZWFkIHsKICAgICAgICBzcGlubG9ja190IGxvY2s7CiAg ICAgICAgc3RydWN0IGxpc3RfaGVhZCB0YXNrX2xpc3Q7CgoKCgp9Owp0eXBlZGVmIHN0cnVjdCBf X3dhaXRfcXVldWVfaGVhZCB3YWl0X3F1ZXVlX2hlYWRfdDsKIyAxNTUgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvd2FpdC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgaW5p dF93YWl0cXVldWVfaGVhZCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSkKewoKCgoKICAgICAgICBxLT5s b2NrID0gKHNwaW5sb2NrX3QpIHsgfTsKICAgICAgICBkbyB7ICgmcS0+dGFza19saXN0KS0+bmV4 dCA9ICgmcS0+dGFza19saXN0KTsgKCZxLT50YXNrX2xpc3QpLT5wcmV2ID0gKCZxLT50YXNrX2xp c3QpOyB9IHdoaWxlICgwKTsKCgoKCn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3dhaXRxdWV1 ZV9lbnRyeSh3YWl0X3F1ZXVlX3QgKnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewoKCgoKICAg ICAgICBxLT5mbGFncyA9IDA7CiAgICAgICAgcS0+dGFzayA9IHA7CgoKCn0KCnN0YXRpYyBpbmxp bmUgaW50IHdhaXRxdWV1ZV9hY3RpdmUod2FpdF9xdWV1ZV9oZWFkX3QgKnEpCnsKCgoKCgoKICAg ICAgICByZXR1cm4gIWxpc3RfZW1wdHkoJnEtPnRhc2tfbGlzdCk7Cn0KCnN0YXRpYyBpbmxpbmUg dm9pZCBfX2FkZF93YWl0X3F1ZXVlKHdhaXRfcXVldWVfaGVhZF90ICpoZWFkLCB3YWl0X3F1ZXVl X3QgKm5ldykKewojIDIwMyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC93YWl0LmgiCiAgICAgICAgbGlzdF9hZGQoJm5ldy0+dGFza19saXN0LCAmaGVhZC0+dGFza19s aXN0KTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fYWRkX3dhaXRfcXVldWVfdGFpbCh3YWl0 X3F1ZXVlX2hlYWRfdCAqaGVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgd2FpdF9xdWV1ZV90ICpuZXcpCnsKIyAyMjAgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvbGludXgvd2FpdC5oIgogICAgICAgIGxpc3RfYWRkX3RhaWwoJm5l dy0+dGFza19saXN0LCAmaGVhZC0+dGFza19saXN0KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIF9f cmVtb3ZlX3dhaXRfcXVldWUod2FpdF9xdWV1ZV9oZWFkX3QgKmhlYWQsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdF9xdWV1ZV90ICpv bGQpCnsKCgoKCgogICAgICAgIGxpc3RfZGVsKCZvbGQtPnRhc2tfbGlzdCk7Cn0KIyAxMyAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTQgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdmZzLmgiIDEKCgoKIyAxICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9zdGF0ZnMuaCIgMQoKCgoKCiMgMSAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgNyAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc3RhdGZzLmgiIDIKCnR5cGVkZWYg X19rZXJuZWxfZnNpZF90IGZzaWRfdDsKCgoKc3RydWN0IHN0YXRmcyB7CiAgICAgICAgbG9uZyBm X3R5cGU7CiAgICAgICAgbG9uZyBmX2JzaXplOwogICAgICAgIGxvbmcgZl9ibG9ja3M7CiAgICAg ICAgbG9uZyBmX2JmcmVlOwogICAgICAgIGxvbmcgZl9iYXZhaWw7CiAgICAgICAgbG9uZyBmX2Zp bGVzOwogICAgICAgIGxvbmcgZl9mZnJlZTsKICAgICAgICBfX2tlcm5lbF9mc2lkX3QgZl9mc2lk OwogICAgICAgIGxvbmcgZl9uYW1lbGVuOwogICAgICAgIGxvbmcgZl9zcGFyZVs2XTsKfTsKIyA1 ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3Zmcy5oIiAyCiMgMTUg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbmV0LmgiIDEKIyAyMSAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9uZXQuaCIKIyAxICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMjIgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbmV0LmgiIDIKIyAxICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIiAxCgoKCgoKIyAxICIv dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9zb2NrZXQuaCIgMQoKCgojIDEg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3NvY2tpb3MuaCIgMQojIDUg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3NvY2tldC5oIiAyCiMgNyAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIgMgojIDEg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc29ja2lvcy5oIiAxCiMg MjEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc29ja2lvcy5oIgoj IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3NvY2tpb3MuaCIgMQoj IDIyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NvY2tpb3MuaCIg MgojIDggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc29ja2V0Lmgi IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3Vpby5oIiAx CgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90eXBlcy5o IiAxCiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC91aW8uaCIg MgojIDE5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3Vpby5oIgpz dHJ1Y3QgaW92ZWMKewogICAgICAgIHZvaWQgKmlvdl9iYXNlOwogICAgICAgIF9fa2VybmVsX3Np emVfdCBpb3ZfbGVuOwp9OwojIDkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvc29ja2V0LmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L3R5cGVzLmgiIDEKIyAxMCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC9zb2NrZXQuaCIgMgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBzYV9mYW1pbHlfdDsK CgoKCgpzdHJ1Y3Qgc29ja2FkZHIgewogICAgICAgIHNhX2ZhbWlseV90IHNhX2ZhbWlseTsKICAg ICAgICBjaGFyIHNhX2RhdGFbMTRdOwp9OwoKc3RydWN0IGxpbmdlciB7CiAgICAgICAgaW50IGxf b25vZmY7CiAgICAgICAgaW50IGxfbGluZ2VyOwp9OwoKCgoKCgoKc3RydWN0IG1zZ2hkciB7CiAg ICAgICAgdm9pZCAqIG1zZ19uYW1lOwogICAgICAgIGludCBtc2dfbmFtZWxlbjsKICAgICAgICBz dHJ1Y3QgaW92ZWMgKiBtc2dfaW92OwogICAgICAgIF9fa2VybmVsX3NpemVfdCBtc2dfaW92bGVu OwogICAgICAgIHZvaWQgKiBtc2dfY29udHJvbDsKICAgICAgICBfX2tlcm5lbF9zaXplX3QgbXNn X2NvbnRyb2xsZW47CiAgICAgICAgdW5zaWduZWQgbXNnX2ZsYWdzOwp9OwoKCgoKCgoKc3RydWN0 IGNtc2doZHIgewogICAgICAgIF9fa2VybmVsX3NpemVfdCBjbXNnX2xlbjsKICAgICAgICBpbnQg Y21zZ19sZXZlbDsKICAgICAgICBpbnQgY21zZ190eXBlOwp9OwojIDEwMiAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIKc3RhdGljIGlubGluZSBzdHJ1 Y3QgY21zZ2hkciAqIF9fY21zZ19ueHRoZHIodm9pZCAqX19jdGwsIF9fa2VybmVsX3NpemVfdCBf X3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGNtc2doZHIgKl9fY21zZykKewogICAgICAgIHN0cnVjdCBjbXNnaGRyICogX19wdHI7Cgog ICAgICAgIF9fcHRyID0gKHN0cnVjdCBjbXNnaGRyKikoKCh1bnNpZ25lZCBjaGFyICopIF9fY21z ZykgKyAoICgoX19jbXNnLT5jbXNnX2xlbikrc2l6ZW9mKGxvbmcpLTEpICYgfihzaXplb2YobG9u ZyktMSkgKSk7CiAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSgoY2hhciopKF9fcHRyKzEpIC0g KGNoYXIgKikgX19jdGwpID4gX19zaXplKQogICAgICAgICAgICAgICAgcmV0dXJuIChzdHJ1Y3Qg Y21zZ2hkciAqKTA7CgogICAgICAgIHJldHVybiBfX3B0cjsKfQoKc3RhdGljIGlubGluZSBzdHJ1 Y3QgY21zZ2hkciAqIGNtc2dfbnh0aGRyIChzdHJ1Y3QgbXNnaGRyICpfX21zZywgc3RydWN0IGNt c2doZHIgKl9fY21zZykKewogICAgICAgIHJldHVybiBfX2Ntc2dfbnh0aGRyKF9fbXNnLT5tc2df Y29udHJvbCwgX19tc2ctPm1zZ19jb250cm9sbGVuLCBfX2Ntc2cpOwp9CgoKCgoKCgpzdHJ1Y3Qg dWNyZWQgewogICAgICAgIF9fdTMyIHBpZDsKICAgICAgICBfX3UzMiB1aWQ7CiAgICAgICAgX191 MzIgZ2lkOwp9OwojIDI0NSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC9zb2NrZXQuaCIKZXh0ZXJuIGludCBtZW1jcHlfZnJvbWlvdmVjX1I5ZmIzZGQzMCh1bnNpZ25l ZCBjaGFyICprZGF0YSwgc3RydWN0IGlvdmVjICppb3YsIGludCBsZW4pOwpleHRlcm4gaW50IG1l bWNweV9mcm9taW92ZWNlbmQodW5zaWduZWQgY2hhciAqa2RhdGEsIHN0cnVjdCBpb3ZlYyAqaW92 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQsIGludCBsZW4pOwpl eHRlcm4gaW50IGNzdW1fcGFydGlhbF9jb3B5X2Zyb21pb3ZlY2VuZCh1bnNpZ25lZCBjaGFyICpr ZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlv dmVjICppb3YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBv ZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBsZW4sIGludCAqY3N1bXApOwoKZXh0ZXJuIGludCB2ZXJpZnlfaW92ZWMoc3RydWN0IG1z Z2hkciAqbSwgc3RydWN0IGlvdmVjICppb3YsIGNoYXIgKmFkZHJlc3MsIGludCBtb2RlKTsKZXh0 ZXJuIGludCBtZW1jcHlfdG9pb3ZlY19SOWNlYjE2M2Moc3RydWN0IGlvdmVjICp2LCB1bnNpZ25l ZCBjaGFyICprZGF0YSwgaW50IGxlbik7CmV4dGVybiB2b2lkIG1lbWNweV90b2tlcm5lbGlvdmVj X1JjMTI1ZTA4OChzdHJ1Y3QgaW92ZWMgKmlvdiwgdW5zaWduZWQgY2hhciAqa2RhdGEsIGludCBs ZW4pOwpleHRlcm4gaW50IG1vdmVfYWRkcl90b191c2VyKHZvaWQgKmthZGRyLCBpbnQga2xlbiwg dm9pZCAqdWFkZHIsIGludCAqdWxlbik7CmV4dGVybiBpbnQgbW92ZV9hZGRyX3RvX2tlcm5lbCh2 b2lkICp1YWRkciwgaW50IHVsZW4sIHZvaWQgKmthZGRyKTsKZXh0ZXJuIGludCBwdXRfY21zZ19S ZjM5YmY0ZDkoc3RydWN0IG1zZ2hkciosIGludCBsZXZlbCwgaW50IHR5cGUsIGludCBsZW4sIHZv aWQgKmRhdGEpOwojIDIzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L25ldC5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC93 YWl0LmgiIDEKIyAyNCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9u ZXQuaCIgMgoKc3RydWN0IHBvbGxfdGFibGVfc3RydWN0OwojIDQ5ICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L25ldC5oIgp0eXBlZGVmIGVudW0gewogIFNTX0ZSRUUg PSAwLAogIFNTX1VOQ09OTkVDVEVELAogIFNTX0NPTk5FQ1RJTkcsCiAgU1NfQ09OTkVDVEVELAog IFNTX0RJU0NPTk5FQ1RJTkcKfSBzb2NrZXRfc3RhdGU7CiMgNjUgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvbGludXgvbmV0LmgiCnN0cnVjdCBzb2NrZXQKewogICAgICAgIHNv Y2tldF9zdGF0ZSBzdGF0ZTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICBz dHJ1Y3QgcHJvdG9fb3BzICpvcHM7CiAgICAgICAgc3RydWN0IGlub2RlICppbm9kZTsKICAgICAg ICBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqZmFzeW5jX2xpc3Q7CiAgICAgICAgc3RydWN0IGZpbGUg KmZpbGU7CiAgICAgICAgc3RydWN0IHNvY2sgKnNrOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90 IHdhaXQ7CgogICAgICAgIHNob3J0IHR5cGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBwYXNzY3Jl ZDsKfTsKCgoKc3RydWN0IHNjbV9jb29raWU7CnN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKc3RydWN0 IHBhZ2U7CgpzdHJ1Y3QgcHJvdG9fb3BzIHsKICBpbnQgZmFtaWx5OwoKICBpbnQgKCpyZWxlYXNl KSAoc3RydWN0IHNvY2tldCAqc29jayk7CiAgaW50ICgqYmluZCkgKHN0cnVjdCBzb2NrZXQgKnNv Y2ssIHN0cnVjdCBzb2NrYWRkciAqdW15YWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBzb2NrYWRkcl9sZW4pOwogIGludCAoKmNvbm5lY3QpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBz dHJ1Y3Qgc29ja2FkZHIgKnVzZXJ2YWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBz b2NrYWRkcl9sZW4sIGludCBmbGFncyk7CiAgaW50ICgqc29ja2V0cGFpcikgKHN0cnVjdCBzb2Nr ZXQgKnNvY2sxLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrMik7CiAgaW50ICgqYWNjZXB0KSAoc3RydWN0 IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jaywKICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBmbGFncyk7CiAgaW50ICgqZ2V0bmFtZV9SN2M2MGQ2NmUpIChzdHJ1Y3Qgc29j a2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLAogICAgICAgICAgICAgICAgICAgICAg ICAgaW50ICp1c29ja2FkZHJfbGVuLCBpbnQgcGVlcik7CiAgdW5zaWduZWQgaW50ICgqcG9sbCkg KHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgcG9sbF90YWJs ZV9zdHJ1Y3QgKndhaXQpOwogIGludCAoKmlvY3RsKSAoc3RydWN0IHNvY2tldCAqc29jaywgdW5z aWduZWQgaW50IGNtZCwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYXJn KTsKICBpbnQgKCpsaXN0ZW4pIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGVuKTsKICBpbnQg KCpzaHV0ZG93bikgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBmbGFncyk7CiAgaW50ICgqc2V0 c29ja29wdCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAg ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpvcHR2YWwsIGludCBvcHRsZW4pOwogIGludCAo KmdldHNvY2tvcHQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1l LAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3B0dmFsLCBpbnQgKm9wdGxlbik7CiAg aW50ICgqc2VuZG1zZykgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIGlu dCB0b3RhbF9sZW4sIHN0cnVjdCBzY21fY29va2llICpzY20pOwogIGludCAoKnJlY3Ztc2cpIChz dHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgdG90YWxfbGVuLCBpbnQg ZmxhZ3MsIHN0cnVjdCBzY21fY29va2llICpzY20pOwogIGludCAoKm1tYXApIChzdHJ1Y3QgZmls ZSAqZmlsZSwgc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogdm1h KTsKICBzc2l6ZV90ICgqc2VuZHBhZ2UpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgcGFn ZSAqcGFnZSwgaW50IG9mZnNldCwgc2l6ZV90IHNpemUsIGludCBmbGFncyk7Cn07CgpzdHJ1Y3Qg bmV0X3Byb3RvX2ZhbWlseQp7CiAgICAgICAgaW50IGZhbWlseTsKICAgICAgICBpbnQgKCpjcmVh dGUpKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBwcm90b2NvbCk7CgoKICAgICAgICBzaG9ydCBh dXRoZW50aWNhdGlvbjsKICAgICAgICBzaG9ydCBlbmNyeXB0aW9uOwogICAgICAgIHNob3J0IGVu Y3J5cHRfbmV0Owp9OwoKc3RydWN0IG5ldF9wcm90bwp7CiAgICAgICAgY29uc3QgY2hhciAqbmFt ZTsKICAgICAgICB2b2lkICgqaW5pdF9mdW5jKShzdHJ1Y3QgbmV0X3Byb3RvICopOwp9OwoKZXh0 ZXJuIGludCBzb2NrX3dha2VfYXN5bmNfUjVkZmY2NDE3KHN0cnVjdCBzb2NrZXQgKnNrLCBpbnQg aG93LCBpbnQgYmFuZCk7CmV4dGVybiBpbnQgc29ja19yZWdpc3Rlcl9SNzBmNDIyMDUoc3RydWN0 IG5ldF9wcm90b19mYW1pbHkgKmZhbSk7CmV4dGVybiBpbnQgc29ja191bnJlZ2lzdGVyX1IyMzk0 YTA2MihpbnQgZmFtaWx5KTsKZXh0ZXJuIHN0cnVjdCBzb2NrZXQgKnNvY2tfYWxsb2NfUjE0YTg2 ODZmKHZvaWQpOwpleHRlcm4gaW50IHNvY2tfY3JlYXRlX1JlMjdhZGE5ZChpbnQgZmFtaWx5LCBp bnQgdHlwZSwgaW50IHByb3RvLCBzdHJ1Y3Qgc29ja2V0ICoqKTsKZXh0ZXJuIHZvaWQgc29ja19y ZWxlYXNlX1JhOTNjMWY2NihzdHJ1Y3Qgc29ja2V0ICopOwpleHRlcm4gaW50IHNvY2tfc2VuZG1z Z19SMTZmMGRkYWYoc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgbGVuKTsK ZXh0ZXJuIGludCBzb2NrX3JlY3Ztc2dfUjJiYmVhMWE1KHN0cnVjdCBzb2NrZXQgKiwgc3RydWN0 IG1zZ2hkciAqbSwgaW50IGxlbiwgaW50IGZsYWdzKTsKZXh0ZXJuIGludCBzb2NrX3JlYWR2X3dy aXRldihpbnQgdHlwZSwgc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBmaWxlICogZmlsZSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBpb3ZlYyAqIGlv diwgbG9uZyBjb3VudCwgbG9uZyBzaXplKTsKCmV4dGVybiBpbnQgbmV0X3JhdGVsaW1pdF9SZjZl YmMwM2Iodm9pZCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIG5ldF9yYW5kb21fUjFjNjZmNjRjKHZv aWQpOwpleHRlcm4gdm9pZCBuZXRfc3JhbmRvbV9SZmY5NjNlZDgodW5zaWduZWQgbG9uZyk7CiMg MTYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgva2Rldl90LmgiIDEKIyA2 NyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9rZGV2X3QuaCIKdHlw ZWRlZiB1bnNpZ25lZCBzaG9ydCBrZGV2X3Q7CiMgNzYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgva2Rldl90LmgiCmV4dGVybiBjb25zdCBjaGFyICoga2Rldm5hbWVf UmMyNThjOTA2KGtkZXZfdCk7CgoKCgoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGtkZXZf dF90b19ucihrZGV2X3QgZGV2KSB7CiAgICAgICAgcmV0dXJuICgoKHVuc2lnbmVkIGludCkgKChk ZXYpID4+IDgpKTw8OCkgfCAoKHVuc2lnbmVkIGludCkgKChkZXYpICYgKCgxVSA8PCA4KSAtIDEp KSk7Cn0KCnN0YXRpYyBpbmxpbmUga2Rldl90IHRvX2tkZXZfdChpbnQgZGV2KQp7CiAgICAgICAg aW50IG1ham9yLCBtaW5vcjsKIyA5OCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC9rZGV2X3QuaCIKICAgICAgICBtYWpvciA9IChkZXYgPj4gOCk7CiAgICAgICAgbWlu b3IgPSAoZGV2ICYgMHhmZik7CgogICAgICAgIHJldHVybiAoKChtYWpvcikgPDwgOCkgfCAobWlu b3IpKTsKfQojIDE3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2Zz LmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2lvY3Rs LmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9pb2N0 bC5oIiAxCiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pb2N0 bC5oIiAyCiMgMTggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMu aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbGlzdC5o IiAxCiMgMTkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIg MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZGNhY2hlLmgi IDEKCgoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2F0b21p Yy5oIiAxCiMgNyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9kY2Fj aGUuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW91 bnQuaCIgMQojIDE5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21v dW50LmgiCnN0cnVjdCB2ZnNtb3VudAp7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBtbnRfaGFz aDsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm1udF9wYXJlbnQ7CiAgICAgICAgc3RydWN0IGRl bnRyeSAqbW50X21vdW50cG9pbnQ7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqbW50X3Jvb3Q7CiAg ICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICptbnRfc2I7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh ZCBtbnRfbW91bnRzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X2NoaWxkOwogICAgICAg IGF0b21pY190IG1udF9jb3VudDsKICAgICAgICBpbnQgbW50X2ZsYWdzOwogICAgICAgIGNoYXIg Km1udF9kZXZuYW1lOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X2xpc3Q7CiAgICAgICAg dWlkX3QgbW50X293bmVyOwp9OwoKc3RhdGljIGlubGluZSBzdHJ1Y3QgdmZzbW91bnQgKm1udGdl dChzdHJ1Y3QgdmZzbW91bnQgKm1udCkKewogICAgICAgIGlmIChtbnQpCiAgICAgICAgICAgICAg ICBhdG9taWNfaW5jKCZtbnQtPm1udF9jb3VudCk7CiAgICAgICAgcmV0dXJuIG1udDsKfQoKZXh0 ZXJuIHZvaWQgX19tbnRwdXRfUjk3Njk1ZGFhKHN0cnVjdCB2ZnNtb3VudCAqbW50KTsKCnN0YXRp YyBpbmxpbmUgdm9pZCBtbnRwdXQoc3RydWN0IHZmc21vdW50ICptbnQpCnsKICAgICAgICBpZiAo bW50KSB7CiAgICAgICAgICAgICAgICBpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmbW50LT5tbnRf Y291bnQpKQogICAgICAgICAgICAgICAgICAgICAgICBfX21udHB1dF9SOTc2OTVkYWEobW50KTsK ICAgICAgICB9Cn0KIyA4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L2RjYWNoZS5oIiAyCiMgMjQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu dXgvZGNhY2hlLmgiCnN0cnVjdCBxc3RyIHsKICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICog bmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHVuc2lnbmVkIGludCBoYXNo Owp9OwoKc3RydWN0IGRlbnRyeV9zdGF0X3QgewogICAgICAgIGludCBucl9kZW50cnk7CiAgICAg ICAgaW50IG5yX3VudXNlZDsKICAgICAgICBpbnQgYWdlX2xpbWl0OwogICAgICAgIGludCB3YW50 X3BhZ2VzOwogICAgICAgIGludCBkdW1teVsyXTsKfTsKZXh0ZXJuIHN0cnVjdCBkZW50cnlfc3Rh dF90IGRlbnRyeV9zdGF0OwoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIHBh cnRpYWxfbmFtZV9oYXNoKHVuc2lnbmVkIGxvbmcgYywgdW5zaWduZWQgbG9uZyBwcmV2aGFzaCkK ewogICAgICAgIHJldHVybiAocHJldmhhc2ggKyAoYyA8PCA0KSArIChjID4+IDQpKSAqIDExOwp9 CgoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBlbmRfbmFtZV9oYXNoKHVuc2lnbmVk IGxvbmcgaGFzaCkKewogICAgICAgIHJldHVybiAodW5zaWduZWQgaW50KSBoYXNoOwp9CgoKc3Rh dGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IGZ1bGxfbmFtZV9oYXNoKGNvbnN0IHVuc2lnbmVk IGNoYXIgKiBuYW1lLCB1bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBo YXNoID0gMDsKICAgICAgICB3aGlsZSAobGVuLS0pCiAgICAgICAgICAgICAgICBoYXNoID0gcGFy dGlhbF9uYW1lX2hhc2goKm5hbWUrKywgaGFzaCk7CiAgICAgICAgcmV0dXJuIGVuZF9uYW1lX2hh c2goaGFzaCk7Cn0KCgoKc3RydWN0IGRlbnRyeSB7CiAgICAgICAgYXRvbWljX3QgZF9jb3VudDsK ICAgICAgICB1bnNpZ25lZCBpbnQgZF9mbGFnczsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBkX2lu b2RlOwogICAgICAgIHN0cnVjdCBkZW50cnkgKiBkX3BhcmVudDsKICAgICAgICBzdHJ1Y3QgbGlz dF9oZWFkIGRfaGFzaDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfbHJ1OwogICAgICAgIHN0 cnVjdCBsaXN0X2hlYWQgZF9jaGlsZDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfc3ViZGly czsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfYWxpYXM7CiAgICAgICAgaW50IGRfbW91bnRl ZDsKICAgICAgICBzdHJ1Y3QgcXN0ciBkX25hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3Rp bWU7CiAgICAgICAgc3RydWN0IGRlbnRyeV9vcGVyYXRpb25zICpkX29wOwogICAgICAgIHN0cnVj dCBzdXBlcl9ibG9jayAqIGRfc2I7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3Zmc19mbGFnczsK ICAgICAgICB2b2lkICogZF9mc2RhdGE7CiAgICAgICAgdW5zaWduZWQgY2hhciBkX2luYW1lWzE2 XTsKfTsKCnN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqZF9yZXZhbGlk YXRlKShzdHJ1Y3QgZGVudHJ5ICosIGludCk7CiAgICAgICAgaW50ICgqZF9oYXNoKSAoc3RydWN0 IGRlbnRyeSAqLCBzdHJ1Y3QgcXN0ciAqKTsKICAgICAgICBpbnQgKCpkX2NvbXBhcmUpIChzdHJ1 Y3QgZGVudHJ5ICosIHN0cnVjdCBxc3RyICosIHN0cnVjdCBxc3RyICopOwogICAgICAgIGludCAo KmRfZGVsZXRlX1IzNTVjZWQ5NSkoc3RydWN0IGRlbnRyeSAqKTsKICAgICAgICB2b2lkICgqZF9y ZWxlYXNlKShzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIHZvaWQgKCpkX2lwdXQpKHN0cnVjdCBk ZW50cnkgKiwgc3RydWN0IGlub2RlICopOwp9OwojIDEyNyAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKZXh0ZXJuIHNwaW5sb2NrX3QgZGNhY2hlX2xv Y2tfUjczNDYzY2VmOwojIDE0NiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s aW51eC9kY2FjaGUuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBkX2Ryb3Aoc3RydWN0IGRlbnRy eSAqIGRlbnRyeSkKewogICAgICAgICh2b2lkKSgmZGNhY2hlX2xvY2tfUjczNDYzY2VmKTsKICAg ICAgICBsaXN0X2RlbCgmZGVudHJ5LT5kX2hhc2gpOwogICAgICAgIGRvIHsgKCZkZW50cnktPmRf aGFzaCktPm5leHQgPSAoJmRlbnRyeS0+ZF9oYXNoKTsgKCZkZW50cnktPmRfaGFzaCktPnByZXYg PSAoJmRlbnRyeS0+ZF9oYXNoKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8geyB9IHdoaWxlKDAp Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZG5hbWVfZXh0ZXJuYWwoc3RydWN0IGRlbnRyeSAq ZCkKewogICAgICAgIHJldHVybiBkLT5kX25hbWUubmFtZSAhPSBkLT5kX2luYW1lOwp9CgoKCgpl eHRlcm4gdm9pZCBkX2luc3RhbnRpYXRlX1IxYjg3NzFjYShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVj dCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgZF9kZWxldGVfUjM1NWNlZDk1KHN0cnVjdCBkZW50cnkg Kik7CgoKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2FsbG9jX1IyMjk3Yzk1NChzdHJ1Y3QgZGVu dHJ5ICosIGNvbnN0IHN0cnVjdCBxc3RyICopOwpleHRlcm4gdm9pZCBzaHJpbmtfZGNhY2hlX3Ni X1JjOGNmYmVkMChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CmV4dGVybiB2b2lkIHNocmlua19kY2Fj aGVfcGFyZW50X1IyZWI4OTU4NihzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gaW50IGRfaW52YWxp ZGF0ZV9SYjJlNzJjYzkoc3RydWN0IGRlbnRyeSAqKTsKCgpzdHJ1Y3Qgem9uZV9zdHJ1Y3Q7Cgpl eHRlcm4gaW50IHNocmlua19kY2FjaGVfbWVtb3J5KGludCwgdW5zaWduZWQgaW50KTsKZXh0ZXJu IHZvaWQgcHJ1bmVfZGNhY2hlX1I2Y2YyOGY3NyhpbnQpOwoKCmV4dGVybiBpbnQgc2hyaW5rX2lj YWNoZV9tZW1vcnkoaW50LCBpbnQpOwpleHRlcm4gdm9pZCBwcnVuZV9pY2FjaGUoaW50KTsKCgpl eHRlcm4gc3RydWN0IGRlbnRyeSAqIGRfYWxsb2Nfcm9vdF9SMjljYThiOWYoc3RydWN0IGlub2Rl ICopOwoKCmV4dGVybiB2b2lkIGRfZ2Vub2NpZGUoc3RydWN0IGRlbnRyeSAqKTsKCmV4dGVybiBz dHJ1Y3QgZGVudHJ5ICpkX2ZpbmRfYWxpYXNfUjdkZWJjNzU4KHN0cnVjdCBpbm9kZSAqKTsKZXh0 ZXJuIHZvaWQgZF9wcnVuZV9hbGlhc2VzX1IzMTg1MGViMChzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0 ZXJuIGludCBoYXZlX3N1Ym1vdW50c19SZTkyMTA1Mjcoc3RydWN0IGRlbnRyeSAqKTsKCgoKCmV4 dGVybiB2b2lkIGRfcmVoYXNoX1JlZjY4Y2UwOChzdHJ1Y3QgZGVudHJ5ICopOwojIDIwNyAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKc3RhdGljIF9f aW5saW5lX18gdm9pZCBkX2FkZChzdHJ1Y3QgZGVudHJ5ICogZW50cnksIHN0cnVjdCBpbm9kZSAq IGlub2RlKQp7CiAgICAgICAgZF9pbnN0YW50aWF0ZV9SMWI4NzcxY2EoZW50cnksIGlub2RlKTsK ICAgICAgICBkX3JlaGFzaF9SZWY2OGNlMDgoZW50cnkpOwp9CgoKZXh0ZXJuIHZvaWQgZF9tb3Zl X1IzYzA5NDdiYyhzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBkZW50cnkgKik7CgoKZXh0ZXJuIHN0 cnVjdCBkZW50cnkgKiBkX2xvb2t1cF9SNmRmYjY3YzAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg cXN0ciAqKTsKCgpleHRlcm4gaW50IGRfdmFsaWRhdGVfUjVmOTVhYzdlKHN0cnVjdCBkZW50cnkg Kiwgc3RydWN0IGRlbnRyeSAqKTsKCmV4dGVybiBjaGFyICogX19kX3BhdGhfUjZjZjNkOTQ4KHN0 cnVjdCBkZW50cnkgKiwgc3RydWN0IHZmc21vdW50ICosIHN0cnVjdCBkZW50cnkgKiwKICAgICAg ICBzdHJ1Y3QgdmZzbW91bnQgKiwgY2hhciAqLCBpbnQpOwojIDI0MCAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKc3RhdGljIF9faW5saW5lX18gc3Ry dWN0IGRlbnRyeSAqIGRnZXQoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgaWYgKGRl bnRyeSkgewogICAgICAgICAgICAgICAgaWYgKCEoKCZkZW50cnktPmRfY291bnQpLT5jb3VudGVy KSkKICAgICAgICAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4 MGYsMHgwYiIpOwogICAgICAgICAgICAgICAgYXRvbWljX2luYygmZGVudHJ5LT5kX2NvdW50KTsK ICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRlbnRyeTsKfQoKZXh0ZXJuIHN0cnVjdCBkZW50cnkg KiBkZ2V0X2xvY2tlZF9SMTk2Y2Y3NWQoc3RydWN0IGRlbnRyeSAqKTsKIyAyNTkgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBfX2lubGlu ZV9fIGludCBkX3VuaGFzaGVkKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJldHVy biBsaXN0X2VtcHR5KCZkZW50cnktPmRfaGFzaCk7Cn0KCmV4dGVybiB2b2lkIGRwdXRfUmQ2Y2Q4 Mjg0KHN0cnVjdCBkZW50cnkgKik7CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZF9tb3VudHBvaW50 KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJldHVybiBkZW50cnktPmRfbW91bnRl ZDsKfQoKZXh0ZXJuIHN0cnVjdCB2ZnNtb3VudCAqbG9va3VwX21udF9SYzE0NGFiZGQoc3RydWN0 IHZmc21vdW50ICosIHN0cnVjdCBkZW50cnkgKik7CiMgMjAgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvc3RhdC5oIiAxCgoKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2FzbS9zdGF0LmgiIDEKCgoKc3RydWN0IF9fb2xkX2tlcm5lbF9zdGF0 IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9kZXY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg c3RfaW5vOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X21vZGU7CiAgICAgICAgdW5zaWduZWQg c2hvcnQgc3Rfbmxpbms7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfdWlkOwogICAgICAgIHVu c2lnbmVkIHNob3J0IHN0X2dpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwogICAg ICAgIHVuc2lnbmVkIGxvbmcgc3Rfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2F0aW1l OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfbXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz dF9jdGltZTsKfTsKCnN0cnVjdCBzdGF0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9kZXY7 CiAgICAgICAgdW5zaWduZWQgc2hvcnQgX19wYWQxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rf aW5vOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X21vZGU7CiAgICAgICAgdW5zaWduZWQgc2hv cnQgc3Rfbmxpbms7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfdWlkOwogICAgICAgIHVuc2ln bmVkIHNob3J0IHN0X2dpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwogICAgICAg IHVuc2lnbmVkIHNob3J0IF9fcGFkMjsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X3NpemU7CiAg ICAgICAgdW5zaWduZWQgbG9uZyBzdF9ibGtzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rf YmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYXRpbWU7CiAgICAgICAgdW5zaWduZWQg bG9uZyBfX3VudXNlZDE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9tdGltZTsKICAgICAgICB1 bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2N0aW1lOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191 bnVzZWQ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQ1Owp9OwoKCgoKc3RydWN0IHN0 YXQ2NCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfZGV2OwogICAgICAgIHVuc2lnbmVkIGNo YXIgX19wYWQwWzEwXTsKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgX19zdF9pbm87CgogICAgICAg IHVuc2lnbmVkIGludCBzdF9tb2RlOwogICAgICAgIHVuc2lnbmVkIGludCBzdF9ubGluazsKCiAg ICAgICAgdW5zaWduZWQgbG9uZyBzdF91aWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9naWQ7 CgogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X3JkZXY7CiAgICAgICAgdW5zaWduZWQgY2hhciBf X3BhZDNbMTBdOwoKICAgICAgICBsb25nIGxvbmcgc3Rfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBs b25nIHN0X2Jsa3NpemU7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYmxvY2tzOwogICAgICAg IHVuc2lnbmVkIGxvbmcgX19wYWQ0OwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2F0aW1lOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgX19wYWQ1OwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X210 aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX19wYWQ2OwoKICAgICAgICB1bnNpZ25lZCBsb25n IHN0X2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX19wYWQ3OwoKICAgICAgICB1bnNpZ25l ZCBsb25nIGxvbmcgc3RfaW5vOwp9OwojIDcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvc3RhdC5oIiAyCiMgMjEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvY2FjaGUuaCIgMQojIDIyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L3N0ZGRlZi5oIiAxCiMgMjMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvc3RyaW5nLmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgOSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvbGludXgvc3RkZGVmLmgiIDEKIyAxMCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMgoKCgoKCmV4dGVybiBjaGFyICogX19fc3RydG9r X1IyOTgwNWMxMzsKZXh0ZXJuIGNoYXIgKiBzdHJwYnJrX1I5YTFkZmQ2NShjb25zdCBjaGFyICos Y29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKiBzdHJ0b2tfUmVlOWMxYmQ0KGNoYXIgKixjb25z dCBjaGFyICopOwpleHRlcm4gY2hhciAqIHN0cnNlcF9SODVkZjliNmMoY2hhciAqKixjb25zdCBj aGFyICopOwpleHRlcm4gX19rZXJuZWxfc2l6ZV90IHN0cnNwbl9SYzdlYzZjMjcoY29uc3QgY2hh ciAqLGNvbnN0IGNoYXIgKik7CgoKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p bmNsdWRlL2FzbS9zdHJpbmcuaCIgMQoKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9hc20vc3RyaW5nLmgiIDIKIyAzMyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9hc20vc3RyaW5nLmgiCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cmNweShjaGFy ICogZGVzdCxjb25zdCBjaGFyICpzcmMpCnsKaW50IGQwLCBkMSwgZDI7Cl9fYXNtX18gX192b2xh dGlsZV9fKAogICAgICAgICIxOlx0bG9kc2Jcblx0IgogICAgICAgICJzdG9zYlxuXHQiCiAgICAg ICAgInRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAxYiIKICAgICAgICA6ICI9JlMi IChkMCksICI9JkQiIChkMSksICI9JmEiIChkMikKICAgICAgICA6IjAiIChzcmMpLCIxIiAoZGVz dCkgOiAibWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKc3RhdGljIGlubGluZSBjaGFyICogc3Ry bmNweShjaGFyICogZGVzdCxjb25zdCBjaGFyICpzcmMsc2l6ZV90IGNvdW50KQp7CmludCBkMCwg ZDEsIGQyLCBkMzsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgIjE6XHRkZWNsICUyXG5c dCIKICAgICAgICAianMgMmZcblx0IgogICAgICAgICJsb2RzYlxuXHQiCiAgICAgICAgInN0b3Ni XG5cdCIKICAgICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG5cdCIK ICAgICAgICAicmVwXG5cdCIKICAgICAgICAic3Rvc2JcbiIKICAgICAgICAiMjoiCiAgICAgICAg OiAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZjIiAoZDIpLCAiPSZhIiAoZDMpCiAgICAgICAg OiIwIiAoc3JjKSwiMSIgKGRlc3QpLCIyIiAoY291bnQpIDogIm1lbW9yeSIpOwpyZXR1cm4gZGVz dDsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cmNhdChjaGFyICogZGVzdCxjb25zdCBjaGFy ICogc3JjKQp7CmludCBkMCwgZDEsIGQyLCBkMzsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAg ICAgInJlcG5lXG5cdCIKICAgICAgICAic2Nhc2Jcblx0IgogICAgICAgICJkZWNsICUxXG4iCiAg ICAgICAgIjE6XHRsb2RzYlxuXHQiCiAgICAgICAgInN0b3NiXG5cdCIKICAgICAgICAidGVzdGIg JSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiIgogICAgICAgIDogIj0mUyIgKGQwKSwgIj0m RCIgKGQxKSwgIj0mYSIgKGQyKSwgIj0mYyIgKGQzKQogICAgICAgIDogIjAiIChzcmMpLCAiMSIg KGRlc3QpLCAiMiIgKDApLCAiMyIgKDB4ZmZmZmZmZmYpOiJtZW1vcnkiKTsKcmV0dXJuIGRlc3Q7 Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBzdHJuY2F0KGNoYXIgKiBkZXN0LGNvbnN0IGNoYXIg KiBzcmMsc2l6ZV90IGNvdW50KQp7CmludCBkMCwgZDEsIGQyLCBkMzsKX19hc21fXyBfX3ZvbGF0 aWxlX18oCiAgICAgICAgInJlcG5lXG5cdCIKICAgICAgICAic2Nhc2Jcblx0IgogICAgICAgICJk ZWNsICUxXG5cdCIKICAgICAgICAibW92bCAlOCwlM1xuIgogICAgICAgICIxOlx0ZGVjbCAlM1xu XHQiCiAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAibG9kc2Jcblx0IgogICAgICAgICJzdG9z YlxuXHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAxYlxuIgog ICAgICAgICIyOlx0eG9ybCAlMiwlMlxuXHQiCiAgICAgICAgInN0b3NiIgogICAgICAgIDogIj0m UyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mYSIgKGQyKSwgIj0mYyIgKGQzKQogICAgICAgIDogIjAi IChzcmMpLCIxIiAoZGVzdCksIjIiICgwKSwiMyIgKDB4ZmZmZmZmZmYpLCAiZyIgKGNvdW50KQog ICAgICAgIDogIm1lbW9yeSIpOwpyZXR1cm4gZGVzdDsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IHN0 cmNtcChjb25zdCBjaGFyICogY3MsY29uc3QgY2hhciAqIGN0KQp7CmludCBkMCwgZDE7CnJlZ2lz dGVyIGludCBfX3JlczsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgIjE6XHRsb2RzYlxu XHQiCiAgICAgICAgInNjYXNiXG5cdCIKICAgICAgICAiam5lIDJmXG5cdCIKICAgICAgICAidGVz dGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG5cdCIKICAgICAgICAieG9ybCAlJWVh eCwlJWVheFxuXHQiCiAgICAgICAgImptcCAzZlxuIgogICAgICAgICIyOlx0c2JibCAlJWVheCwl JWVheFxuXHQiCiAgICAgICAgIm9yYiAkMSwlJWFsXG4iCiAgICAgICAgIjM6IgogICAgICAgIDoi PWEiIChfX3JlcyksICI9JlMiIChkMCksICI9JkQiIChkMSkKICAgICAgICAgICAgICAgICAgICAg OiIxIiAoY3MpLCIyIiAoY3QpKTsKcmV0dXJuIF9fcmVzOwp9CgoKc3RhdGljIGlubGluZSBpbnQg c3RybmNtcChjb25zdCBjaGFyICogY3MsY29uc3QgY2hhciAqIGN0LHNpemVfdCBjb3VudCkKewpy ZWdpc3RlciBpbnQgX19yZXM7CmludCBkMCwgZDEsIGQyOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygK ICAgICAgICAiMTpcdGRlY2wgJTNcblx0IgogICAgICAgICJqcyAyZlxuXHQiCiAgICAgICAgImxv ZHNiXG5cdCIKICAgICAgICAic2Nhc2Jcblx0IgogICAgICAgICJqbmUgM2Zcblx0IgogICAgICAg ICJ0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWJcbiIKICAgICAgICAiMjpcdHhv cmwgJSVlYXgsJSVlYXhcblx0IgogICAgICAgICJqbXAgNGZcbiIKICAgICAgICAiMzpcdHNiYmwg JSVlYXgsJSVlYXhcblx0IgogICAgICAgICJvcmIgJDEsJSVhbFxuIgogICAgICAgICI0OiIKICAg ICAgICAgICAgICAgICAgICAgOiI9YSIgKF9fcmVzKSwgIj0mUyIgKGQwKSwgIj0mRCIgKGQxKSwg Ij0mYyIgKGQyKQogICAgICAgICAgICAgICAgICAgICA6IjEiIChjcyksIjIiIChjdCksIjMiIChj b3VudCkpOwpyZXR1cm4gX19yZXM7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBzdHJjaHIoY29u c3QgY2hhciAqIHMsIGludCBjKQp7CmludCBkMDsKcmVnaXN0ZXIgY2hhciAqIF9fcmVzOwpfX2Fz bV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAibW92YiAlJWFsLCUlYWhcbiIKICAgICAgICAiMTpc dGxvZHNiXG5cdCIKICAgICAgICAiY21wYiAlJWFoLCUlYWxcblx0IgogICAgICAgICJqZSAyZlxu XHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAxYlxuXHQiCiAg ICAgICAgIm1vdmwgJDEsJTFcbiIKICAgICAgICAiMjpcdG1vdmwgJTEsJTBcblx0IgogICAgICAg ICJkZWNsICUwIgogICAgICAgIDoiPWEiIChfX3JlcyksICI9JlMiIChkMCkgOiAiMSIgKHMpLCIw IiAoYykpOwpyZXR1cm4gX19yZXM7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBzdHJyY2hyKGNv bnN0IGNoYXIgKiBzLCBpbnQgYykKewppbnQgZDAsIGQxOwpyZWdpc3RlciBjaGFyICogX19yZXM7 Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJtb3ZiICUlYWwsJSVhaFxuIgogICAgICAg ICIxOlx0bG9kc2Jcblx0IgogICAgICAgICJjbXBiICUlYWgsJSVhbFxuXHQiCiAgICAgICAgImpu ZSAyZlxuXHQiCiAgICAgICAgImxlYWwgLTEoJSVlc2kpLCUwXG4iCiAgICAgICAgIjI6XHR0ZXN0 YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWIiCiAgICAgICAgOiI9ZyIgKF9fcmVzKSwg Ij0mUyIgKGQwKSwgIj0mYSIgKGQxKSA6IjAiICgwKSwiMSIgKHMpLCIyIiAoYykpOwpyZXR1cm4g X19yZXM7Cn0KCgpzdGF0aWMgaW5saW5lIHNpemVfdCBzdHJsZW4oY29uc3QgY2hhciAqIHMpCnsK aW50IGQwOwpyZWdpc3RlciBpbnQgX19yZXM7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAg ICJyZXBuZVxuXHQiCiAgICAgICAgInNjYXNiXG5cdCIKICAgICAgICAibm90bCAlMFxuXHQiCiAg ICAgICAgImRlY2wgJTAiCiAgICAgICAgOiI9YyIgKF9fcmVzKSwgIj0mRCIgKGQwKSA6IjEiIChz KSwiYSIgKDApLCAiMCIgKDB4ZmZmZmZmZmYpKTsKcmV0dXJuIF9fcmVzOwp9CgpzdGF0aWMgaW5s aW5lIHZvaWQgKiBfX21lbWNweSh2b2lkICogdG8sIGNvbnN0IHZvaWQgKiBmcm9tLCBzaXplX3Qg bikKewppbnQgZDAsIGQxLCBkMjsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcCA7 IG1vdnNsXG5cdCIKICAgICAgICAidGVzdGIgJDIsJWI0XG5cdCIKICAgICAgICAiamUgMWZcblx0 IgogICAgICAgICJtb3Zzd1xuIgogICAgICAgICIxOlx0dGVzdGIgJDEsJWI0XG5cdCIKICAgICAg ICAiamUgMmZcblx0IgogICAgICAgICJtb3ZzYlxuIgogICAgICAgICIyOiIKICAgICAgICA6ICI9 JmMiIChkMCksICI9JkQiIChkMSksICI9JlMiIChkMikKICAgICAgICA6IjAiIChuLzQpLCAicSIg KG4pLCIxIiAoKGxvbmcpIHRvKSwiMiIgKChsb25nKSBmcm9tKQogICAgICAgIDogIm1lbW9yeSIp OwpyZXR1cm4gKHRvKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCAqIF9fY29uc3RhbnRfbWVt Y3B5KHZvaWQgKiB0bywgY29uc3Qgdm9pZCAqIGZyb20sIHNpemVfdCBuKQp7CiAgICAgICAgc3dp dGNoIChuKSB7CiAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAg ICAgKih1bnNpZ25lZCBjaGFyICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilmcm9tOwog ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDI6 CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgc2hvcnQgKil0byA9ICooY29uc3Qg dW5zaWduZWQgc2hvcnQgKilmcm9tOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87 CiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWdu ZWQgc2hvcnQgKil0byA9ICooY29uc3QgdW5zaWduZWQgc2hvcnQgKilmcm9tOwogICAgICAgICAg ICAgICAgICAgICAgICAqKDIrKHVuc2lnbmVkIGNoYXIgKil0bykgPSAqKDIrKGNvbnN0IHVuc2ln bmVkIGNoYXIgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAg ICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGxv bmcgKil0byA9ICooY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb207CiAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICAg ICAgICAgICAgKih1bnNpZ25lZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilm cm9tOwogICAgICAgICAgICAgICAgICAgICAgICAqKDIrKHVuc2lnbmVkIHNob3J0ICopdG8pID0g KigyKyhjb25zdCB1bnNpZ25lZCBzaG9ydCAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgICAgICAg ICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbTsK ICAgICAgICAgICAgICAgICAgICAgICAgKigxKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigxKyhj b25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgICAgICAgICAgICoo dW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbTsKICAgICAg ICAgICAgICAgICAgICAgICAgKigxKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigxKyhjb25zdCB1 bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICooMisodW5zaWdu ZWQgbG9uZyAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDE2OgogICAg ICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgKil0byA9ICooY29uc3QgdW5zaWdu ZWQgbG9uZyAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgICooMSsodW5zaWduZWQgbG9u ZyAqKXRvKSA9ICooMSsoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAgICAgICAg ICAgICAgICAgICAqKDIrKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDIrKGNvbnN0IHVuc2lnbmVk IGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgKigzKyh1bnNpZ25lZCBsb25n ICopdG8pID0gKigzKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMjA6CiAgICAgICAgICAg ICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBsb25n ICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgKigxKyh1bnNpZ25lZCBsb25nICopdG8p ID0gKigxKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAg ICAgICooMisodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQgbG9uZyAq KWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICAqKDMrKHVuc2lnbmVkIGxvbmcgKil0bykg PSAqKDMrKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAg ICAgKig0Kyh1bnNpZ25lZCBsb25nICopdG8pID0gKig0Kyhjb25zdCB1bnNpZ25lZCBsb25nICop ZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICB9CgoKCgoK Cgp7CiAgICAgICAgaW50IGQwLCBkMSwgZDI7CiAgICAgICAgc3dpdGNoIChuICUgNCkgewogICAg ICAgICAgICAgICAgY2FzZSAwOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IG1vdnNsIiAi IiA6ICI9JmMiIChkMCksICI9JkQiIChkMSksICI9JlMiIChkMikgOiAiMCIgKG4vNCksIjEiICgo bG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pIDogIm1lbW9yeSIpOzsgcmV0dXJuIHRvOwogICAg ICAgICAgICAgICAgY2FzZSAxOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IG1vdnNsIiAi XG5cdG1vdnNiIiA6ICI9JmMiIChkMCksICI9JkQiIChkMSksICI9JlMiIChkMikgOiAiMCIgKG4v NCksIjEiICgobG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pIDogIm1lbW9yeSIpOzsgcmV0dXJu IHRvOwogICAgICAgICAgICAgICAgY2FzZSAyOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7 IG1vdnNsIiAiXG5cdG1vdnN3IiA6ICI9JmMiIChkMCksICI9JkQiIChkMSksICI9JlMiIChkMikg OiAiMCIgKG4vNCksIjEiICgobG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pIDogIm1lbW9yeSIp OzsgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgZGVmYXVsdDogX19hc21fXyBfX3ZvbGF0aWxl X18oICJyZXAgOyBtb3ZzbCIgIlxuXHRtb3Zzd1xuXHRtb3ZzYiIgOiAiPSZjIiAoZDApLCAiPSZE IiAoZDEpLCAiPSZTIiAoZDIpIDogIjAiIChuLzQpLCIxIiAoKGxvbmcpIHRvKSwiMiIgKChsb25n KSBmcm9tKSA6ICJtZW1vcnkiKTs7IHJldHVybiB0bzsKICAgICAgICB9Cn0KCgp9CiMgMzM1ICIv dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKZXh0ZXJuIHZv aWQgX19zdHJ1Y3RfY3B5X2J1ZyAodm9pZCk7CiMgMzQ1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKc3RhdGljIGlubGluZSB2b2lkICogbWVtbW92ZSh2 b2lkICogZGVzdCxjb25zdCB2b2lkICogc3JjLCBzaXplX3QgbikKewppbnQgZDAsIGQxLCBkMjsK aWYgKGRlc3Q8c3JjKQpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwXG5cdCIKICAg ICAgICAibW92c2IiCiAgICAgICAgOiAiPSZjIiAoZDApLCAiPSZTIiAoZDEpLCAiPSZEIiAoZDIp CiAgICAgICAgOiIwIiAobiksIjEiIChzcmMpLCIyIiAoZGVzdCkKICAgICAgICA6ICJtZW1vcnki KTsKZWxzZQpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAic3RkXG5cdCIKICAgICAgICAi cmVwXG5cdCIKICAgICAgICAibW92c2Jcblx0IgogICAgICAgICJjbGQiCiAgICAgICAgOiAiPSZj IiAoZDApLCAiPSZTIiAoZDEpLCAiPSZEIiAoZDIpCiAgICAgICAgOiIwIiAobiksCiAgICAgICAg ICIxIiAobi0xKyhjb25zdCBjaGFyICopc3JjKSwKICAgICAgICAgIjIiIChuLTErKGNoYXIgKilk ZXN0KQogICAgICAgIDoibWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKCgpzdGF0aWMgaW5saW5l IHZvaWQgKiBtZW1jaHIoY29uc3Qgdm9pZCAqIGNzLGludCBjLHNpemVfdCBjb3VudCkKewppbnQg ZDA7CnJlZ2lzdGVyIHZvaWQgKiBfX3JlczsKaWYgKCFjb3VudCkKICAgICAgICByZXR1cm4gKCh2 b2lkICopMCk7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXBuZVxuXHQiCiAgICAg ICAgInNjYXNiXG5cdCIKICAgICAgICAiamUgMWZcblx0IgogICAgICAgICJtb3ZsICQxLCUwXG4i CiAgICAgICAgIjE6XHRkZWNsICUwIgogICAgICAgIDoiPUQiIChfX3JlcyksICI9JmMiIChkMCkg OiAiYSIgKGMpLCIwIiAoY3MpLCIxIiAoY291bnQpKTsKcmV0dXJuIF9fcmVzOwp9CgpzdGF0aWMg aW5saW5lIHZvaWQgKiBfX21lbXNldF9nZW5lcmljKHZvaWQgKiBzLCBjaGFyIGMsc2l6ZV90IGNv dW50KQp7CmludCBkMCwgZDE7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXBcblx0 IgogICAgICAgICJzdG9zYiIKICAgICAgICA6ICI9JmMiIChkMCksICI9JkQiIChkMSkKICAgICAg ICA6ImEiIChjKSwiMSIgKHMpLCIwIiAoY291bnQpCiAgICAgICAgOiJtZW1vcnkiKTsKcmV0dXJu IHM7Cn0KIyA0MDggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3N0cmlu Zy5oIgpzdGF0aWMgaW5saW5lIHZvaWQgKiBfX2NvbnN0YW50X2NfbWVtc2V0KHZvaWQgKiBzLCB1 bnNpZ25lZCBsb25nIGMsIHNpemVfdCBjb3VudCkKewppbnQgZDAsIGQxOwpfX2FzbV9fIF9fdm9s YXRpbGVfXygKICAgICAgICAicmVwIDsgc3Rvc2xcblx0IgogICAgICAgICJ0ZXN0YiAkMiwlYjNc blx0IgogICAgICAgICJqZSAxZlxuXHQiCiAgICAgICAgInN0b3N3XG4iCiAgICAgICAgIjE6XHR0 ZXN0YiAkMSwlYjNcblx0IgogICAgICAgICJqZSAyZlxuXHQiCiAgICAgICAgInN0b3NiXG4iCiAg ICAgICAgIjI6IgogICAgICAgIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKQogICAgICAgIDoiYSIg KGMpLCAicSIgKGNvdW50KSwgIjAiIChjb3VudC80KSwgIjEiICgobG9uZykgcykKICAgICAgICA6 Im1lbW9yeSIpOwpyZXR1cm4gKHMpOwp9CgoKCnN0YXRpYyBpbmxpbmUgc2l6ZV90IHN0cm5sZW4o Y29uc3QgY2hhciAqIHMsIHNpemVfdCBjb3VudCkKewppbnQgZDA7CnJlZ2lzdGVyIGludCBfX3Jl czsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgIm1vdmwgJTIsJTBcblx0IgogICAgICAg ICJqbXAgMmZcbiIKICAgICAgICAiMTpcdGNtcGIgJDAsKCUwKVxuXHQiCiAgICAgICAgImplIDNm XG5cdCIKICAgICAgICAiaW5jbCAlMFxuIgogICAgICAgICIyOlx0ZGVjbCAlMVxuXHQiCiAgICAg ICAgImNtcGwgJC0xLCUxXG5cdCIKICAgICAgICAiam5lIDFiXG4iCiAgICAgICAgIjM6XHRzdWJs ICUyLCUwIgogICAgICAgIDoiPWEiIChfX3JlcyksICI9JmQiIChkMCkKICAgICAgICA6ImMiIChz KSwiMSIgKGNvdW50KSk7CnJldHVybiBfX3JlczsKfQoKCgoKZXh0ZXJuIGNoYXIgKnN0cnN0cl9S MWU2ZDI2YTgoY29uc3QgY2hhciAqY3MsIGNvbnN0IGNoYXIgKmN0KTsKCgoKCgpzdGF0aWMgaW5s aW5lIHZvaWQgKiBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCh2b2lkICogcywgdW5zaWdu ZWQgbG9uZyBwYXR0ZXJuLCBzaXplX3QgY291bnQpCnsKICAgICAgICBzd2l0Y2ggKGNvdW50KSB7 CiAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBz OwogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2ln bmVkIGNoYXIgKilzID0gcGF0dGVybjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7 CiAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWdu ZWQgc2hvcnQgKilzID0gcGF0dGVybjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7 CiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWdu ZWQgc2hvcnQgKilzID0gcGF0dGVybjsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNp Z25lZCBjaGFyICopcykgPSBwYXR0ZXJuOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g czsKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNp Z25lZCBsb25nICopcyA9IHBhdHRlcm47CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBz OwogICAgICAgIH0KCgoKCgoKCnsKICAgICAgICBpbnQgZDAsIGQxOwogICAgICAgIHN3aXRjaCAo Y291bnQgJSA0KSB7CiAgICAgICAgICAgICAgICBjYXNlIDA6IF9fYXNtX18gX192b2xhdGlsZV9f KCAicmVwIDsgc3Rvc2wiICIiIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0dGVy biksIjAiIChjb3VudC80KSwiMSIgKChsb25nKSBzKSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAg ICAgICAgICAgICAgICBjYXNlIDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wi ICJcblx0c3Rvc2IiIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0dGVybiksIjAi IChjb3VudC80KSwiMSIgKChsb25nKSBzKSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAgICAgICAg ICAgICAgICBjYXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wiICJcblx0 c3Rvc3ciIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0dGVybiksIjAiIChjb3Vu dC80KSwiMSIgKChsb25nKSBzKSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAgICAgICAgICAgICAg ICBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IHN0b3NsIiAiXG5cdHN0b3N3 XG5cdHN0b3NiIiA6ICI9JmMiIChkMCksICI9JkQiIChkMSkgOiAiYSIgKHBhdHRlcm4pLCIwIiAo Y291bnQvNCksIjEiICgobG9uZykgcykgOiAibWVtb3J5Iik7IHJldHVybiBzOwogICAgICAgIH0K fQoKCn0KIyA1MTUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3N0cmlu Zy5oIgpzdGF0aWMgaW5saW5lIHZvaWQgKiBtZW1zY2FuKHZvaWQgKiBhZGRyLCBpbnQgYywgc2l6 ZV90IHNpemUpCnsKICAgICAgICBpZiAoIXNpemUpCiAgICAgICAgICAgICAgICByZXR1cm4gYWRk cjsKICAgICAgICBfX2FzbV9fKCJyZXBuejsgc2Nhc2Jcblx0IgogICAgICAgICAgICAgICAgImpu eiAxZlxuXHQiCiAgICAgICAgICAgICAgICAiZGVjICUlZWRpXG4iCiAgICAgICAgICAgICAgICAi MToiCiAgICAgICAgICAgICAgICA6ICI9RCIgKGFkZHIpLCAiPWMiIChzaXplKQogICAgICAgICAg ICAgICAgOiAiMCIgKGFkZHIpLCAiMSIgKHNpemUpLCAiYSIgKGMpKTsKICAgICAgICByZXR1cm4g YWRkcjsKfQojIDI2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3N0 cmluZy5oIiAyCiMgNDYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv c3RyaW5nLmgiCmV4dGVybiBpbnQgc3RybmljbXBfUjRlODMwYTNlKGNvbnN0IGNoYXIgKiwgY29u c3QgY2hhciAqLCBfX2tlcm5lbF9zaXplX3QpOwojIDc3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIgpleHRlcm4gaW50IF9fYnVpbHRpbl9tZW1jbXAo Y29uc3Qgdm9pZCAqLGNvbnN0IHZvaWQgKixfX2tlcm5lbF9zaXplX3QpOwojIDI0ICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCiMgMSAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyAyNiAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYml0b3BzLmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDkgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAyCiMgMzYgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxp bmVfXyB2b2lkIHNldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAg IF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAgICAgImJ0c2wgJTEsJTAiCiAg ICAgICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAg ICAgICAgIDoiSXIiIChucikpOwp9CiMgNTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fc2V0X2JpdChpbnQg bnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgX19hc21fXygKICAgICAgICAgICAg ICAgICJidHNsICUxLCUwIgogICAgICAgICAgICAgICAgOiI9bSIgKCgqKHZvbGF0aWxlIGxvbmcg KikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpKTsKfQojIDcxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18g dm9pZCBjbGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIF9f YXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAgICAgImJ0cmwgJTEsJTAiCiAgICAg ICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAg ICAgIDoiSXIiIChucikpOwp9CiMgOTAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fY2hhbmdlX2JpdChpbnQg bnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o CiAgICAgICAgICAgICAgICAiYnRjbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0iICgoKih2 b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7Cn0KIyAx MDcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0 aWMgX19pbmxpbmVfXyB2b2lkIGNoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRk cikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAgICAgImJ0 Y2wgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRy KSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikpOwp9CiMgMTIzICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHRl c3RfYW5kX3NldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGlu dCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAg ICAgImJ0c2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRi aXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6Ikly IiAobnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAxNDMgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxp bmVfXyBpbnQgX190ZXN0X2FuZF9zZXRfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIp CnsKICAgICAgICBpbnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9fKAogICAgICAgICAgICAgICAg ImJ0c2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQp LCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAo bnIpKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMTYyICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHRlc3Rf YW5kX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50 IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oICIiCiAgICAgICAgICAgICAg ICAiYnRybCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAgICAgICAgICAgOiI9ciIgKG9sZGJp dCksIj1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIi IChucikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIG9sZGJpdDsKfQojIDE4MiAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGlu ZV9fIGludCBfX3Rlc3RfYW5kX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRy KQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXygKICAgICAgICAgICAgICAg ICJidHJsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0 KSwiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIg KG5yKSk7CiAgICAgICAgcmV0dXJuIG9sZGJpdDsKfQoKCnN0YXRpYyBfX2lubGluZV9fIGludCBf X3Rlc3RfYW5kX2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAg ICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAg ICAgICAgImJ0Y2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChv bGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6 IklyIiAobnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAyMTMgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19p bmxpbmVfXyBpbnQgdGVzdF9hbmRfY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBh ZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o ICIiCiAgICAgICAgICAgICAgICAiYnRjbCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAgICAg ICAgICAgOiI9ciIgKG9sZGJpdCksIj1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAg ICAgICAgICAgICAgIDoiSXIiIChucikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIG9sZGJp dDsKfQojIDIzMyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYml0b3Bz LmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBjb25zdGFudF90ZXN0X2JpdChpbnQgbnIsIGNvbnN0 IHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgcmV0dXJuICgoMVVMIDw8IChuciAmIDMx KSkgJiAoKChjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgYWRkcilbbnIgPj4gNV0pKSAh PSAwOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgdmFyaWFibGVfdGVzdF9iaXQoaW50IG5yLCB2 b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9fYXNt X18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgImJ0bCAlMiwlMVxuXHRzYmJsICUwLCUw IgogICAgICAgICAgICAgICAgOiI9ciIgKG9sZGJpdCkKICAgICAgICAgICAgICAgIDoibSIgKCgq KHZvbGF0aWxlIGxvbmcgKikgYWRkcikpLCJJciIgKG5yKSk7CiAgICAgICAgcmV0dXJuIG9sZGJp dDsKfQojIDI2MiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYml0b3Bz LmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBmaW5kX2ZpcnN0X3plcm9fYml0KHZvaWQgKiBhZGRy LCB1bnNpZ25lZCBzaXplKQp7CiAgICAgICAgaW50IGQwLCBkMSwgZDI7CiAgICAgICAgaW50IHJl czsKCiAgICAgICAgaWYgKCFzaXplKQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CgogICAgICAg IF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIm1vdmwgJC0xLCUlZWF4XG5c dCIKICAgICAgICAgICAgICAgICJ4b3JsICUlZWR4LCUlZWR4XG5cdCIKICAgICAgICAgICAgICAg ICJyZXBlOyBzY2FzbFxuXHQiCiAgICAgICAgICAgICAgICAiamUgMWZcblx0IgogICAgICAgICAg ICAgICAgInhvcmwgLTQoJSVlZGkpLCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJzdWJsICQ0 LCUlZWRpXG5cdCIKICAgICAgICAgICAgICAgICJic2ZsICUlZWF4LCUlZWR4XG4iCiAgICAgICAg ICAgICAgICAiMTpcdHN1YmwgJSVlYngsJSVlZGlcblx0IgogICAgICAgICAgICAgICAgInNobGwg JDMsJSVlZGlcblx0IgogICAgICAgICAgICAgICAgImFkZGwgJSVlZGksJSVlZHgiCiAgICAgICAg ICAgICAgICA6Ij1kIiAocmVzKSwgIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mYSIgKGQyKQog ICAgICAgICAgICAgICAgOiIxIiAoKHNpemUgKyAzMSkgPj4gNSksICIyIiAoYWRkciksICJiIiAo YWRkcikpOwogICAgICAgIHJldHVybiByZXM7Cn0KCgoKCgoKCnN0YXRpYyBfX2lubGluZV9fIGlu dCBmaW5kX25leHRfemVyb19iaXQgKHZvaWQgKiBhZGRyLCBpbnQgc2l6ZSwgaW50IG9mZnNldCkK ewogICAgICAgIHVuc2lnbmVkIGxvbmcgKiBwID0gKCh1bnNpZ25lZCBsb25nICopIGFkZHIpICsg KG9mZnNldCA+PiA1KTsKICAgICAgICBpbnQgc2V0ID0gMCwgYml0ID0gb2Zmc2V0ICYgMzEsIHJl czsKCiAgICAgICAgaWYgKGJpdCkgewoKCgogICAgICAgICAgICAgICAgX19hc21fXygiYnNmbCAl MSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICJqbmUgMWZcblx0IgogICAgICAgICAg ICAgICAgICAgICAgICAibW92bCAkMzIsICUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIx OiIKICAgICAgICAgICAgICAgICAgICAgICAgOiAiPXIiIChzZXQpCiAgICAgICAgICAgICAgICAg ICAgICAgIDogInIiICh+KCpwID4+IGJpdCkpKTsKICAgICAgICAgICAgICAgIGlmIChzZXQgPCAo MzIgLSBiaXQpKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0ICsgb2Zmc2V0Owog ICAgICAgICAgICAgICAgc2V0ID0gMzIgLSBiaXQ7CiAgICAgICAgICAgICAgICBwKys7CiAgICAg ICAgfQoKCgogICAgICAgIHJlcyA9IGZpbmRfZmlyc3RfemVyb19iaXQgKHAsIHNpemUgLSAzMiAq IChwIC0gKHVuc2lnbmVkIGxvbmcgKikgYWRkcikpOwogICAgICAgIHJldHVybiAob2Zmc2V0ICsg c2V0ICsgcmVzKTsKfQoKCgoKCgoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBmZnoo dW5zaWduZWQgbG9uZyB3b3JkKQp7CiAgICAgICAgX19hc21fXygiYnNmbCAlMSwlMCIKICAgICAg ICAgICAgICAgIDoiPXIiICh3b3JkKQogICAgICAgICAgICAgICAgOiJyIiAofndvcmQpKTsKICAg ICAgICByZXR1cm4gd29yZDsKfQojIDM0MyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBmZnMoaW50IHgpCnsKICAg ICAgICBpbnQgcjsKCiAgICAgICAgX19hc21fXygiYnNmbCAlMSwlMFxuXHQiCiAgICAgICAgICAg ICAgICAiam56IDFmXG5cdCIKICAgICAgICAgICAgICAgICJtb3ZsICQtMSwlMFxuIgogICAgICAg ICAgICAgICAgIjE6IiA6ICI9ciIgKHIpIDogImciICh4KSk7CiAgICAgICAgcmV0dXJuIHIrMTsK fQojIDI3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK CnN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdDsKIyA1NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9mcy5oIgpzdHJ1Y3QgZmlsZXNfc3RhdF9zdHJ1Y3QgewogICAgICAg IGludCBucl9maWxlczsKICAgICAgICBpbnQgbnJfZnJlZV9maWxlczsKICAgICAgICBpbnQgbWF4 X2ZpbGVzOwp9OwpleHRlcm4gc3RydWN0IGZpbGVzX3N0YXRfc3RydWN0IGZpbGVzX3N0YXRfUjAz Y2FkYTI3OwoKc3RydWN0IGlub2Rlc19zdGF0X3QgewogICAgICAgIGludCBucl9pbm9kZXM7CiAg ICAgICAgaW50IG5yX3VudXNlZDsKICAgICAgICBpbnQgZHVtbXlbNV07Cn07CmV4dGVybiBzdHJ1 Y3QgaW5vZGVzX3N0YXRfdCBpbm9kZXNfc3RhdDsKCmV4dGVybiBpbnQgbGVhc2VzX2VuYWJsZSwg ZGlyX25vdGlmeV9lbmFibGUsIGxlYXNlX2JyZWFrX3RpbWU7CiMgMjAwICIvdXNyL3NyYy9ydWRv L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCiMgMSAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRv L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2xpbmthZ2UuaCIgMQojIDUgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAyCiMgMzkgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIgojIDEgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAxCgoKCiMgMSAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAyCiMgMSAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDYgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAyCiMgMSAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc2VnbWVudC5oIiAxCiMgNyAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc3lzdGVtLmgiIDIKIyAxICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIiAxCiMgMTEgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvYml0b3BzLmgiCnN0YXRpYyBpbmxp bmUgaW50IGdlbmVyaWNfZmZzKGludCB4KQp7CiAgICAgICAgaW50IHIgPSAxOwoKICAgICAgICBp ZiAoIXgpCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICBpZiAoISh4ICYgMHhmZmZm KSkgewogICAgICAgICAgICAgICAgeCA+Pj0gMTY7CiAgICAgICAgICAgICAgICByICs9IDE2Owog ICAgICAgIH0KICAgICAgICBpZiAoISh4ICYgMHhmZikpIHsKICAgICAgICAgICAgICAgIHggPj49 IDg7CiAgICAgICAgICAgICAgICByICs9IDg7CiAgICAgICAgfQogICAgICAgIGlmICghKHggJiAw eGYpKSB7CiAgICAgICAgICAgICAgICB4ID4+PSA0OwogICAgICAgICAgICAgICAgciArPSA0Owog ICAgICAgIH0KICAgICAgICBpZiAoISh4ICYgMykpIHsKICAgICAgICAgICAgICAgIHggPj49IDI7 CiAgICAgICAgICAgICAgICByICs9IDI7CiAgICAgICAgfQogICAgICAgIGlmICghKHggJiAxKSkg ewogICAgICAgICAgICAgICAgeCA+Pj0gMTsKICAgICAgICAgICAgICAgIHIgKz0gMTsKICAgICAg ICB9CiAgICAgICAgcmV0dXJuIHI7Cn0KCgoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQg Z2VuZXJpY19od2VpZ2h0MzIodW5zaWduZWQgaW50IHcpCnsKICAgICAgICB1bnNpZ25lZCBpbnQg cmVzID0gKHcgJiAweDU1NTU1NTU1KSArICgodyA+PiAxKSAmIDB4NTU1NTU1NTUpOwogICAgICAg IHJlcyA9IChyZXMgJiAweDMzMzMzMzMzKSArICgocmVzID4+IDIpICYgMHgzMzMzMzMzMyk7CiAg ICAgICAgcmVzID0gKHJlcyAmIDB4MEYwRjBGMEYpICsgKChyZXMgPj4gNCkgJiAweDBGMEYwRjBG KTsKICAgICAgICByZXMgPSAocmVzICYgMHgwMEZGMDBGRikgKyAoKHJlcyA+PiA4KSAmIDB4MDBG RjAwRkYpOwogICAgICAgIHJldHVybiAocmVzICYgMHgwMDAwRkZGRikgKyAoKHJlcyA+PiAxNikg JiAweDAwMDBGRkZGKTsKfQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ2VuZXJpY19od2Vp Z2h0MTYodW5zaWduZWQgaW50IHcpCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzID0gKHcgJiAw eDU1NTUpICsgKCh3ID4+IDEpICYgMHg1NTU1KTsKICAgICAgICByZXMgPSAocmVzICYgMHgzMzMz KSArICgocmVzID4+IDIpICYgMHgzMzMzKTsKICAgICAgICByZXMgPSAocmVzICYgMHgwRjBGKSAr ICgocmVzID4+IDQpICYgMHgwRjBGKTsKICAgICAgICByZXR1cm4gKHJlcyAmIDB4MDBGRikgKyAo KHJlcyA+PiA4KSAmIDB4MDBGRik7Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdlbmVy aWNfaHdlaWdodDgodW5zaWduZWQgaW50IHcpCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzID0g KHcgJiAweDU1KSArICgodyA+PiAxKSAmIDB4NTUpOwogICAgICAgIHJlcyA9IChyZXMgJiAweDMz KSArICgocmVzID4+IDIpICYgMHgzMyk7CiAgICAgICAgcmV0dXJuIChyZXMgJiAweDBGKSArICgo cmVzID4+IDQpICYgMHgwRik7Cn0KCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9hc20vYml0b3BzLmgiIDEKIyA3MCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9iaXRvcHMuaCIgMgojIDggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvYXNtL3N5c3RlbS5oIiAyCgoKCnN0cnVjdCB0YXNrX3N0cnVjdDsKZXh0ZXJuIHZvaWQg X19zd2l0Y2hfdG8oc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3QgdGFza19zdHJ1Y3Qg Km5leHQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIyA2MyAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQg bG9uZyBfZ2V0X2Jhc2UoY2hhciAqIGFkZHIpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fYmFz ZTsKICAgICAgICBfX2FzbV9fKCJtb3ZiICUzLCUlZGhcblx0IgogICAgICAgICAgICAgICAgIm1v dmIgJTIsJSVkbFxuXHQiCiAgICAgICAgICAgICAgICAic2hsbCAkMTYsJSVlZHhcblx0IgogICAg ICAgICAgICAgICAgIm1vdncgJTEsJSVkeCIKICAgICAgICAgICAgICAgIDoiPSZkIiAoX19iYXNl KQogICAgICAgICAgICAgICAgOiJtIiAoKigoYWRkcikrMikpLAogICAgICAgICAgICAgICAgICJt IiAoKigoYWRkcikrNCkpLAogICAgICAgICAgICAgICAgICJtIiAoKigoYWRkcikrNykpKTsKICAg ICAgICByZXR1cm4gX19iYXNlOwp9CiMgMTMwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p bmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGdldF9saW1p dCh1bnNpZ25lZCBsb25nIHNlZ21lbnQpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fbGltaXQ7 CiAgICAgICAgX19hc21fXygibHNsbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChfX2xp bWl0KToiciIgKHNlZ21lbnQpKTsKICAgICAgICByZXR1cm4gX19saW1pdCsxOwp9CgoKCgoKCgpz dHJ1Y3QgX194Y2hnX2R1bW15IHsgdW5zaWduZWQgbG9uZyBhWzEwMF07IH07CiMgMTU3ICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGljIGlubGlu ZSB2b2lkIF9fc2V0XzY0Yml0ICh1bnNpZ25lZCBsb25nIGxvbmcgKiBwdHIsCiAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgbG93LCB1bnNpZ25lZCBpbnQgaGlnaCkKewogICAgICAgIF9fYXNt X18gX192b2xhdGlsZV9fICgKICAgICAgICAgICAgICAgICJcbjE6XHQiCiAgICAgICAgICAgICAg ICAibW92bCAoJTApLCAlJWVheFxuXHQiCiAgICAgICAgICAgICAgICAibW92bCA0KCUwKSwgJSVl ZHhcblx0IgogICAgICAgICAgICAgICAgImNtcHhjaGc4YiAoJTApXG5cdCIKICAgICAgICAgICAg ICAgICJqbnogMWIiCiAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICA6ICJEIihwdHIp LAogICAgICAgICAgICAgICAgICAgICAgICAiYiIobG93KSwKICAgICAgICAgICAgICAgICAgICAg ICAgImMiKGhpZ2gpCiAgICAgICAgICAgICAgICA6ICJheCIsImR4IiwibWVtb3J5Iik7Cn0KCnN0 YXRpYyBpbmxpbmUgdm9pZCBfX3NldF82NGJpdF9jb25zdGFudCAodW5zaWduZWQgbG9uZyBsb25n ICpwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpCnsKICAgICAgICBfX3NldF82NGJpdChwdHIsKHVuc2ln bmVkIGludCkodmFsdWUpLCAodW5zaWduZWQgaW50KSgodmFsdWUpPj4zMlVMTCkpOwp9CgoKCnN0 YXRpYyBpbmxpbmUgdm9pZCBfX3NldF82NGJpdF92YXIgKHVuc2lnbmVkIGxvbmcgbG9uZyAqcHRy LAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKQp7CiAg ICAgICAgX19zZXRfNjRiaXQocHRyLCooKCh1bnNpZ25lZCBpbnQqKSYodmFsdWUpKSswKSwgKigo KHVuc2lnbmVkIGludCopJih2YWx1ZSkpKzEpKTsKfQojIDIwMiAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9u ZyBfX3hjaGcodW5zaWduZWQgbG9uZyB4LCB2b2xhdGlsZSB2b2lkICogcHRyLCBpbnQgc2l6ZSkK ewogICAgICAgIHN3aXRjaCAoc2l6ZSkgewogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAg ICAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygieGNoZ2IgJWIwLCUxIgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoiPXEiICh4KQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDoibSIgKCooKHN0cnVjdCBfX3hjaGdfZHVtbXkgKikocHRyKSkpLCAiMCIg KHgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAg ICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJ4Y2hndyAldzAsJTEiCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOiI9ciIgKHgpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOiJtIiAoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIiAoeCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Im1lbW9yeSIpOwogICAgICAgICAgICAg ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAg ICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInhjaGdsICUwLCUxIgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDoiPXIiICh4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDoibSIgKCooKHN0cnVjdCBfX3hjaGdfZHVtbXkgKikocHRyKSkpLCAiMCIgKHgpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHJldHVybiB4Owp9CiMgMjM2ICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGljIGlubGluZSB1 bnNpZ25lZCBsb25nIF9fY21weGNoZyh2b2xhdGlsZSB2b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcg b2xkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg bmV3LCBpbnQgc2l6ZSkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgcHJldjsKICAgICAgICBzd2l0 Y2ggKHNpemUpIHsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9s YXRpbGVfXygiIiAiY21weGNoZ2IgJWIxLCUyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOiAiPWEiKHByZXYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA6ICJxIihuZXcpLCAibSIoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIihv bGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKICAg ICAgICAgICAgICAgIHJldHVybiBwcmV2OwogICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAg IF9fYXNtX18gX192b2xhdGlsZV9fKCIiICJjbXB4Y2hndyAldzEsJTIiCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA6ICI9YSIocHJldikKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDogInEiKG5ldyksICJtIigqKChzdHJ1Y3QgX194Y2hnX2R1bW15ICop KHB0cikpKSwgIjAiKG9sZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog Im1lbW9yeSIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7CiAgICAgICAgY2FzZSA0Ogog ICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiIgImNtcHhjaGdsICUxLCUyIgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPWEiKHByZXYpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJxIihuZXcpLCAibSIoKigoc3RydWN0IF9f eGNoZ19kdW1teSAqKShwdHIpKSksICIwIihvbGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA6ICJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIHJldHVybiBwcmV2OwogICAg ICAgIH0KICAgICAgICByZXR1cm4gb2xkOwp9CiMgMzQwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKdm9pZCBkaXNhYmxlX2hsdF9SNzk0NDg3ZWUodm9p ZCk7CnZvaWQgZW5hYmxlX2hsdF9SOWM3MDc3YmQodm9pZCk7CiMgNDAgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyA0MSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDIKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMQojIDQyICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIgMgojIDEgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcndzZW0uaCIgMQojIDEwICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiCiMgMSAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9saW5rYWdlLmgiIDEKIyAxMSAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9yd3NlbS5oIiAyCgoKCgoKIyAxICIv dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTcg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcndzZW0uaCIgMgojIDEg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDE4 ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDIKIyAx ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMg MTkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcndzZW0uaCIgMgoj IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAxCiMg MjAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcndzZW0uaCIgMgoj IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMg MjEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcndzZW0uaCIgMgoK c3RydWN0IHJ3X3NlbWFwaG9yZTsKCgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9hc20vcndzZW0uaCIgMQojIDQxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p bmNsdWRlL2FzbS9yd3NlbS5oIgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvbGlzdC5oIiAxCiMgNDIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvYXNtL3J3c2VtLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L3NwaW5sb2NrLmgiIDEKIyA0MyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9hc20vcndzZW0uaCIgMgoKc3RydWN0IHJ3c2VtX3dhaXRlcjsKCmV4dGVybiBzdHJ1Y3Qg cndfc2VtYXBob3JlICpyd3NlbV9kb3duX3JlYWRfZmFpbGVkKHN0cnVjdCByd19zZW1hcGhvcmUg KnNlbSkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gc3RydWN0IHJ3X3NlbWFw aG9yZSAqcndzZW1fZG93bl93cml0ZV9mYWlsZWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKSBf X2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBzdHJ1Y3Qgcndfc2VtYXBob3JlICpy d3NlbV93YWtlKHN0cnVjdCByd19zZW1hcGhvcmUgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgz KSkpOwoKCgoKc3RydWN0IHJ3X3NlbWFwaG9yZSB7CiAgICAgICAgc2lnbmVkIGxvbmcgY291bnQ7 CgoKCgoKCiAgICAgICAgc3BpbmxvY2tfdCB3YWl0X2xvY2s7CiAgICAgICAgc3RydWN0IGxpc3Rf aGVhZCB3YWl0X2xpc3Q7CgoKCn07CiMgODQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvYXNtL3J3c2VtLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3J3c2VtX1JhYzQ1ODM3 NShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBzZW0tPmNvdW50ID0gMHgwMDAw MDAwMDsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgZG8geyAoJnNlbS0+d2FpdF9s aXN0KS0+bmV4dCA9ICgmc2VtLT53YWl0X2xpc3QpOyAoJnNlbS0+d2FpdF9saXN0KS0+cHJldiA9 ICgmc2VtLT53YWl0X2xpc3QpOyB9IHdoaWxlICgwKTsKCgoKfQoKCgoKc3RhdGljIGlubGluZSB2 b2lkIF9fZG93bl9yZWFkX1I2ZWJkNDZhNShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAg ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIjIGJlZ2lubmluZyBk b3duX3JlYWRcblx0IgoiIiAiICBpbmNsICAgICAgKCUlZWF4KVxuXHQiCiAgICAgICAgICAgICAg ICAiICBqcyAgICAgICAgMmZcblx0IgogICAgICAgICAgICAgICAgIjE6XG5cdCIKICAgICAgICAg ICAgICAgICIuc2VjdGlvbiAudGV4dC5sb2NrLFwiYXhcIlxuIgogICAgICAgICAgICAgICAgIjI6 XG5cdCIKICAgICAgICAgICAgICAgICIgIHB1c2hsICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAg ICAgICAiICBwdXNobCAgICAgJSVlZHhcblx0IgogICAgICAgICAgICAgICAgIiAgY2FsbCAgICAg IHJ3c2VtX2Rvd25fcmVhZF9mYWlsZWRcblx0IgogICAgICAgICAgICAgICAgIiAgcG9wbCAgICAg ICUlZWR4XG5cdCIKICAgICAgICAgICAgICAgICIgIHBvcGwgICAgICAlJWVjeFxuXHQiCiAgICAg ICAgICAgICAgICAiICBqbXAgICAgICAgMWJcbiIKICAgICAgICAgICAgICAgICIucHJldmlvdXMi CiAgICAgICAgICAgICAgICAiIyBlbmRpbmcgZG93bl9yZWFkXG5cdCIKICAgICAgICAgICAgICAg IDogIittIihzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiAiYSIoc2VtKQogICAgICAgICAg ICAgICAgOiAibWVtb3J5IiwgImNjIik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2Rvd25f d3JpdGVfUjdmZDU0YzVjKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIGludCB0 bXA7CgogICAgICAgIHRtcCA9ICgoLTB4MDAwMTAwMDApICsgMHgwMDAwMDAwMSk7CiAgICAgICAg X19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBiZWdpbm5pbmcgZG93bl93 cml0ZVxuXHQiCiIiICIgIHhhZGQgICAgICAlMCwoJSVlYXgpXG5cdCIKICAgICAgICAgICAgICAg ICIgIHRlc3RsICAgICAlMCwlMFxuXHQiCiAgICAgICAgICAgICAgICAiICBqbnogICAgICAgMmZc blx0IgogICAgICAgICAgICAgICAgIjE6XG5cdCIKICAgICAgICAgICAgICAgICIuc2VjdGlvbiAu dGV4dC5sb2NrLFwiYXhcIlxuIgogICAgICAgICAgICAgICAgIjI6XG5cdCIKICAgICAgICAgICAg ICAgICIgIHB1c2hsICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAiICBjYWxsICAgICAg cndzZW1fZG93bl93cml0ZV9mYWlsZWRcblx0IgogICAgICAgICAgICAgICAgIiAgcG9wbCAgICAg ICUlZWN4XG5cdCIKICAgICAgICAgICAgICAgICIgIGptcCAgICAgICAxYlxuIgogICAgICAgICAg ICAgICAgIi5wcmV2aW91c1xuIgogICAgICAgICAgICAgICAgIiMgZW5kaW5nIGRvd25fd3JpdGUi CiAgICAgICAgICAgICAgICA6ICIrZCIodG1wKSwgIittIihzZW0tPmNvdW50KQogICAgICAgICAg ICAgICAgOiAiYSIoc2VtKQogICAgICAgICAgICAgICAgOiAibWVtb3J5IiwgImNjIik7Cn0KCgoK CnN0YXRpYyBpbmxpbmUgdm9pZCBfX3VwX3JlYWRfUjU3ODNlOGVjKHN0cnVjdCByd19zZW1hcGhv cmUgKnNlbSkKewogICAgICAgIF9fczMyIHRtcCA9IC0weDAwMDAwMDAxOwogICAgICAgIF9fYXNt X18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYmVnaW5uaW5nIF9fdXBfcmVhZFxu XHQiCiIiICIgIHhhZGQgICAgICAlJWVkeCwoJSVlYXgpXG5cdCIKICAgICAgICAgICAgICAgICIg IGpzICAgICAgICAyZlxuXHQiCiAgICAgICAgICAgICAgICAiMTpcblx0IgogICAgICAgICAgICAg ICAgIi5zZWN0aW9uIC50ZXh0LmxvY2ssXCJheFwiXG4iCiAgICAgICAgICAgICAgICAiMjpcblx0 IgogICAgICAgICAgICAgICAgIiAgZGVjdyAgICAgICUlZHhcblx0IgogICAgICAgICAgICAgICAg IiAgam56ICAgICAgIDFiXG5cdCIKICAgICAgICAgICAgICAgICIgIHB1c2hsICAgICAlJWVjeFxu XHQiCiAgICAgICAgICAgICAgICAiICBjYWxsICAgICAgcndzZW1fd2FrZVxuXHQiCiAgICAgICAg ICAgICAgICAiICBwb3BsICAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgam1wICAg ICAgIDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzXG4iCiAgICAgICAgICAgICAgICAi IyBlbmRpbmcgX191cF9yZWFkXG4iCiAgICAgICAgICAgICAgICA6ICIrbSIoc2VtLT5jb3VudCks ICIrZCIodG1wKQogICAgICAgICAgICAgICAgOiAiYSIoc2VtKQogICAgICAgICAgICAgICAgOiAi bWVtb3J5IiwgImNjIik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3VwX3dyaXRlX1I3MGVj OGJjNihzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRp bGVfXygKICAgICAgICAgICAgICAgICIjIGJlZ2lubmluZyBfX3VwX3dyaXRlXG5cdCIKICAgICAg ICAgICAgICAgICIgIG1vdmwgICAgICAlMiwlJWVkeFxuXHQiCiIiICIgIHhhZGRsICAgICAlJWVk eCwoJSVlYXgpXG5cdCIKICAgICAgICAgICAgICAgICIgIGpueiAgICAgICAyZlxuXHQiCiAgICAg ICAgICAgICAgICAiMTpcblx0IgogICAgICAgICAgICAgICAgIi5zZWN0aW9uIC50ZXh0LmxvY2ss XCJheFwiXG4iCiAgICAgICAgICAgICAgICAiMjpcblx0IgogICAgICAgICAgICAgICAgIiAgZGVj dyAgICAgICUlZHhcblx0IgogICAgICAgICAgICAgICAgIiAgam56ICAgICAgIDFiXG5cdCIKICAg ICAgICAgICAgICAgICIgIHB1c2hsICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAiICBj YWxsICAgICAgcndzZW1fd2FrZVxuXHQiCiAgICAgICAgICAgICAgICAiICBwb3BsICAgICAgJSVl Y3hcblx0IgogICAgICAgICAgICAgICAgIiAgam1wICAgICAgIDFiXG4iCiAgICAgICAgICAgICAg ICAiLnByZXZpb3VzXG4iCiAgICAgICAgICAgICAgICAiIyBlbmRpbmcgX191cF93cml0ZVxuIgog ICAgICAgICAgICAgICAgOiAiK20iKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ICJhIihz ZW0pLCAiaSIoLSgoLTB4MDAwMTAwMDApICsgMHgwMDAwMDAwMSkpCiAgICAgICAgICAgICAgICA6 ICJtZW1vcnkiLCAiY2MiLCAiZWR4Iik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCByd3NlbV9h dG9taWNfYWRkKGludCBkZWx0YSwgc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAg X19hc21fXyBfX3ZvbGF0aWxlX18oCiIiICJhZGRsICUxLCUwIgogICAgICAgICAgICAgICAgOiI9 bSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDoiaXIiKGRlbHRhKSwgIm0iKHNlbS0+Y291 bnQpKTsKfQoKCgoKc3RhdGljIGlubGluZSBpbnQgcndzZW1fYXRvbWljX3VwZGF0ZShpbnQgZGVs dGEsIHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIGludCB0bXAgPSBkZWx0YTsK CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiIiICJ4YWRkICUwLCglMikiCiAgICAgICAg ICAgICAgICA6ICIrciIodG1wKSwgIj1tIihzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiAi ciIoc2VtKSwgIm0iKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKCiAg ICAgICAgcmV0dXJuIHRtcCtkZWx0YTsKfQojIDI4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDIKIyA0MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9yd3NlbS5oIgpzdGF0aWMgaW5saW5lIHZvaWQgZG93bl9yZWFkKHN0 cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDsKICAgICAgICBfX2Rvd25fcmVhZF9SNmViZDQ2YTUoc2VtKTsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQoKCgoKc3RhdGljIGlubGlu ZSB2b2lkIGRvd25fd3JpdGUoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICBfX2Rvd25fd3JpdGVf UjdmZDU0YzVjKHNlbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgdXBfcmVhZChzdHJ1Y3Qgcndfc2VtYXBob3Jl ICpzZW0pCnsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAg ICAgIF9fdXBfcmVhZF9SNTc4M2U4ZWMoc2VtKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCB1cF93cml0ZShzdHJ1Y3Qg cndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsKICAgICAgICBfX3VwX3dyaXRlX1I3MGVjOGJjNihzZW0pOwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7Cn0KIyA0MyAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDIKCnN0cnVjdCBzZW1hcGhvcmUgewog ICAgICAgIGF0b21pY190IGNvdW50OwogICAgICAgIGludCBzbGVlcGVyczsKICAgICAgICB3YWl0 X3F1ZXVlX2hlYWRfdCB3YWl0OwoKCgp9OwojIDczICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIKc3RhdGljIGlubGluZSB2b2lkIHNlbWFfaW5pdCAo c3RydWN0IHNlbWFwaG9yZSAqc2VtLCBpbnQgdmFsKQp7CgoKCgoKCiAgICAgICAgKCgoJnNlbS0+ Y291bnQpLT5jb3VudGVyKSA9ICh2YWwpKTsKICAgICAgICBzZW0tPnNsZWVwZXJzID0gMDsKICAg ICAgICBpbml0X3dhaXRxdWV1ZV9oZWFkKCZzZW0tPndhaXQpOwoKCgp9CgpzdGF0aWMgaW5saW5l IHZvaWQgaW5pdF9NVVRFWCAoc3RydWN0IHNlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgc2VtYV9p bml0KHNlbSwgMSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X01VVEVYX0xPQ0tFRCAoc3Ry dWN0IHNlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgc2VtYV9pbml0KHNlbSwgMCk7Cn0KCiBfX2F0 dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgdm9pZCBfX2Rvd25fZmFpbGVkKHZvaWQgKTsKIF9fYXR0 cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQgX19kb3duX2ZhaWxlZF9pbnRlcnJ1cHRpYmxlKHZv aWQgKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQgX19kb3duX2ZhaWxlZF90cnls b2NrKHZvaWQgKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIF9fdXBfd2FrZXVw KHZvaWQgKTsKCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgdm9pZCBfX2Rvd24oc3RydWN0 IHNlbWFwaG9yZSAqIHNlbSk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgaW50IF9fZG93 bl9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pOwogX19hdHRyaWJ1dGVfXygo cmVncGFybSgwKSkpIGludCBfX2Rvd25fdHJ5bG9jayhzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKTsK IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIF9fdXAoc3RydWN0IHNlbWFwaG9yZSAq IHNlbSk7CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3duKHN0cnVjdCBzZW1hcGhvcmUgKiBz ZW0pCnsKCgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAi IyBhdG9taWMgZG93biBvcGVyYXRpb25cblx0IgogICAgICAgICAgICAgICAgIiIgImRlY2wgJTBc blx0IgogICAgICAgICAgICAgICAgImpzIDJmXG4iCiAgICAgICAgICAgICAgICAiMTpcbiIKICAg ICAgICAgICAgICAgICIuc2VjdGlvbiAudGV4dC5sb2NrLFwiYXhcIlxuIgogICAgICAgICAgICAg ICAgIjI6XHRjYWxsIF9fZG93bl9mYWlsZWRcblx0IgogICAgICAgICAgICAgICAgImptcCAxYlxu IgogICAgICAgICAgICAgICAgIi5wcmV2aW91cyIKICAgICAgICAgICAgICAgIDoiPW0iIChzZW0t PmNvdW50KQogICAgICAgICAgICAgICAgOiJjIiAoc2VtKQogICAgICAgICAgICAgICAgOiJtZW1v cnkiKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IGRvd25faW50ZXJydXB0aWJsZShzdHJ1Y3Qg c2VtYXBob3JlICogc2VtKQp7CiAgICAgICAgaW50IHJlc3VsdDsKCgoKCgogICAgICAgIF9fYXNt X18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYXRvbWljIGludGVycnVwdGlibGUg ZG93biBvcGVyYXRpb25cblx0IgogICAgICAgICAgICAgICAgIiIgImRlY2wgJTFcblx0IgogICAg ICAgICAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAgICAgICAgICJ4b3JsICUwLCUwXG4iCiAg ICAgICAgICAgICAgICAiMTpcbiIKICAgICAgICAgICAgICAgICIuc2VjdGlvbiAudGV4dC5sb2Nr LFwiYXhcIlxuIgogICAgICAgICAgICAgICAgIjI6XHRjYWxsIF9fZG93bl9mYWlsZWRfaW50ZXJy dXB0aWJsZVxuXHQiCiAgICAgICAgICAgICAgICAiam1wIDFiXG4iCiAgICAgICAgICAgICAgICAi LnByZXZpb3VzIgogICAgICAgICAgICAgICAgOiI9YSIgKHJlc3VsdCksICI9bSIgKHNlbS0+Y291 bnQpCiAgICAgICAgICAgICAgICA6ImMiIChzZW0pCiAgICAgICAgICAgICAgICA6Im1lbW9yeSIp OwogICAgICAgIHJldHVybiByZXN1bHQ7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIGludCBkb3duX3Ry eWxvY2soc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewogICAgICAgIGludCByZXN1bHQ7CgoKCgoK ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIjIGF0b21pYyBp bnRlcnJ1cHRpYmxlIGRvd24gb3BlcmF0aW9uXG5cdCIKICAgICAgICAgICAgICAgICIiICJkZWNs ICUxXG5cdCIKICAgICAgICAgICAgICAgICJqcyAyZlxuXHQiCiAgICAgICAgICAgICAgICAieG9y bCAlMCwlMFxuIgogICAgICAgICAgICAgICAgIjE6XG4iCiAgICAgICAgICAgICAgICAiLnNlY3Rp b24gLnRleHQubG9jayxcImF4XCJcbiIKICAgICAgICAgICAgICAgICIyOlx0Y2FsbCBfX2Rvd25f ZmFpbGVkX3RyeWxvY2tcblx0IgogICAgICAgICAgICAgICAgImptcCAxYlxuIgogICAgICAgICAg ICAgICAgIi5wcmV2aW91cyIKICAgICAgICAgICAgICAgIDoiPWEiIChyZXN1bHQpLCAiPW0iIChz ZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiJjIiAoc2VtKQogICAgICAgICAgICAgICAgOiJt ZW1vcnkiKTsKICAgICAgICByZXR1cm4gcmVzdWx0Owp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIHZv aWQgdXAoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewoKCgogICAgICAgIF9fYXNtX18gX192b2xh dGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYXRvbWljIHVwIG9wZXJhdGlvblxuXHQiCiAgICAg ICAgICAgICAgICAiIiAiaW5jbCAlMFxuXHQiCiAgICAgICAgICAgICAgICAiamxlIDJmXG4iCiAg ICAgICAgICAgICAgICAiMTpcbiIKICAgICAgICAgICAgICAgICIuc2VjdGlvbiAudGV4dC5sb2Nr LFwiYXhcIlxuIgogICAgICAgICAgICAgICAgIjI6XHRjYWxsIF9fdXBfd2FrZXVwXG5cdCIKICAg ICAgICAgICAgICAgICJqbXAgMWJcbiIKICAgICAgICAgICAgICAgICIucHJldmlvdXMiCiAgICAg ICAgICAgICAgICA6Ij1tIiAoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDoiYyIgKHNlbSkK ICAgICAgICAgICAgICAgIDoibWVtb3J5Iik7Cn0KIyAyMDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9hc20vdHlwZXMuaCIgMQojIDUgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIiAyCgoKCgoKIyAxICIvdXNyL3NyYy9ydWRv L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTEgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIiAyCgoKc3RhdGljIF9faW5s aW5lX18gX19jb25zdF9fIF9fdTMyIF9fX2FyY2hfX3N3YWIzMihfX3UzMiB4KQp7CgogICAgICAg IF9fYXNtX18oImJzd2FwICUwIiA6ICI9ciIgKHgpIDogIjAiICh4KSk7CgoKCgoKCgogICAgICAg IHJldHVybiB4Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2NvbnN0X18gX191MTYgX19fYXJjaF9f c3dhYjE2KF9fdTE2IHgpCnsKICAgICAgICBfX2FzbV9fKCJ4Y2hnYiAlYjAsJWgwIiA6ICI9cSIg KHgpIDogIjAiICh4KSk7IHJldHVybiB4OwoKCgp9CiMgNDUgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMQojIDExICIv dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9saXR0bGVf ZW5kaWFuLmgiCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9i eXRlb3JkZXIvc3dhYi5oIiAxCiMgMTMxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L2J5dGVvcmRlci9zd2FiLmgiCnN0YXRpYyBfX2lubGluZV9fIF9fY29uc3RfXyBf X3UxNiBfX2Zzd2FiMTYoX191MTYgeCkKewogICAgICAgIHJldHVybiBfX19hcmNoX19zd2FiMTYo eCk7Cn0Kc3RhdGljIF9faW5saW5lX18gX191MTYgX19zd2FiMTZwKF9fdTE2ICp4KQp7CiAgICAg ICAgcmV0dXJuIF9fX2FyY2hfX3N3YWIxNigqKHgpKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2b2lk IF9fc3dhYjE2cyhfX3UxNiAqYWRkcikKewogICAgICAgIGRvIHsgKihhZGRyKSA9IF9fX2FyY2hf X3N3YWIxNigqKChhZGRyKSkpOyB9IHdoaWxlICgwKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19j b25zdF9fIF9fdTMyIF9fZnN3YWIzMihfX3UzMiB4KQp7CiAgICAgICAgcmV0dXJuIF9fX2FyY2hf X3N3YWIzMih4KTsKfQpzdGF0aWMgX19pbmxpbmVfXyBfX3UzMiBfX3N3YWIzMnAoX191MzIgKngp CnsKICAgICAgICByZXR1cm4gX19fYXJjaF9fc3dhYjMyKCooeCkpOwp9CnN0YXRpYyBfX2lubGlu ZV9fIHZvaWQgX19zd2FiMzJzKF9fdTMyICphZGRyKQp7CiAgICAgICAgZG8geyAqKGFkZHIpID0g X19fYXJjaF9fc3dhYjMyKCooKGFkZHIpKSk7IH0gd2hpbGUgKDApOwp9CgoKc3RhdGljIF9faW5s aW5lX18gX19jb25zdF9fIF9fdTY0IF9fZnN3YWI2NChfX3U2NCB4KQp7CgogICAgICAgIF9fdTMy IGggPSB4ID4+IDMyOwogICAgICAgIF9fdTMyIGwgPSB4ICYgKCgxVUxMPDwzMiktMSk7CiAgICAg ICAgcmV0dXJuICgoKF9fdTY0KShfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MzIpKGwpKSA/ICh7 IF9fdTMyIF9feCA9ICgobCkpOyAoKF9fdTMyKSggKCgoX191MzIpKF9feCkgJiAoX191MzIpMHgw MDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMikoX194KSAmIChfX3UzMikweDAwMDBmZjAwVUwp IDw8IDgpIHwgKCgoX191MzIpKF9feCkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiA4KSB8ICgo KF9fdTMyKShfX3gpICYgKF9fdTMyKTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkpOyB9KSA6IF9fZnN3 YWIzMigobCkpKSkgPDwgMzIpIHwgKChfX3U2NCkoKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3Uz MikoaCkpID8gKHsgX191MzIgX194ID0gKChoKSk7ICgoX191MzIpKCAoKChfX3UzMikoX194KSAm IChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDI0KSB8ICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4 MDAwMGZmMDBVTCkgPDwgOCkgfCAoKChfX3UzMikoX194KSAmIChfX3UzMikweDAwZmYwMDAwVUwp ID4+IDgpIHwgKCgoX191MzIpKF9feCkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSk7 IH0pIDogX19mc3dhYjMyKChoKSkpKSk7CgoKCn0Kc3RhdGljIF9faW5saW5lX18gX191NjQgX19z d2FiNjRwKF9fdTY0ICp4KQp7CiAgICAgICAgcmV0dXJuICh7IF9fdTY0IF9fdG1wID0gKCooeCkp IDsgKHsgX191NjQgX194ID0gKF9fdG1wKTsgKChfX3U2NCkoIChfX3U2NCkoKChfX3U2NCkoX194 KSAmIChfX3U2NCkweDAwMDAwMDAwMDAwMDAwZmZVTEwpIDw8IDU2KSB8IChfX3U2NCkoKChfX3U2 NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwMDAwMGZmMDBVTEwpIDw8IDQwKSB8IChfX3U2NCko KChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwMDBmZjAwMDBVTEwpIDw8IDI0KSB8IChf X3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwZmYwMDAwMDBVTEwpIDw8IDgp IHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwZmYwMDAwMDAwMFVMTCkg Pj4gOCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwZmYwMDAwMDAwMDAw VUxMKSA+PiAyNCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMGZmMDAwMDAw MDAwMDAwVUxMKSA+PiA0MCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHhmZjAw MDAwMDAwMDAwMDAwVUxMKSA+PiA1NikgKSk7IH0pOyB9KTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2 b2lkIF9fc3dhYjY0cyhfX3U2NCAqYWRkcikKewogICAgICAgIGRvIHsgKihhZGRyKSA9ICh7IF9f dTY0IF9fdG1wID0gKCooKGFkZHIpKSkgOyAoeyBfX3U2NCBfX3ggPSAoX190bXApOyAoKF9fdTY0 KSggKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwMDBmZlVMTCkg PDwgNTYpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwZmYw MFVMTCkgPDwgNDApIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAw MGZmMDAwMFVMTCkgPDwgMjQpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAw MDAwMDBmZjAwMDAwMFVMTCkgPDwgOCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQp MHgwMDAwMDBmZjAwMDAwMDAwVUxMKSA+PiA4KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChf X3U2NCkweDAwMDBmZjAwMDAwMDAwMDBVTEwpID4+IDI0KSB8IChfX3U2NCkoKChfX3U2NCkoX194 KSAmIChfX3U2NCkweDAwZmYwMDAwMDAwMDAwMDBVTEwpID4+IDQwKSB8IChfX3U2NCkoKChfX3U2 NCkoX194KSAmIChfX3U2NCkweGZmMDAwMDAwMDAwMDAwMDBVTEwpID4+IDU2KSApKTsgfSk7IH0p OyB9IHdoaWxlICgwKTsKfQojIDEyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiIDIKIyA2NiAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIgojIDEg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2dlbmVy aWMuaCIgMQojIDE1MCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9i eXRlb3JkZXIvZ2VuZXJpYy5oIgpleHRlcm4gX191MzIgbnRvaGwoX191MzIpOwpleHRlcm4gX191 MzIgaHRvbmwoX191MzIpOwoKCgoKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGludCBudG9ocyh1bnNp Z25lZCBzaG9ydCBpbnQpOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50IGh0b25zKHVuc2lnbmVk IHNob3J0IGludCk7CiMgNjcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu dXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMgojIDQ2ICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIgMgojIDIwMiAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCgpleHRlcm4gdm9pZCB1cGRhdGVfYXRp bWVfUjdmZmUxZmRiIChzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0ZXJuIHZvaWQgYnVmZmVyX2luaXQo dW5zaWduZWQgbG9uZyk7CmV4dGVybiB2b2lkIGlub2RlX2luaXQodW5zaWduZWQgbG9uZyk7CmV4 dGVybiB2b2lkIG1udF9pbml0KHVuc2lnbmVkIGxvbmcpOwoKCmVudW0gYmhfc3RhdGVfYml0cyB7 CiAgICAgICAgQkhfVXB0b2RhdGUsCiAgICAgICAgQkhfRGlydHksCiAgICAgICAgQkhfTG9jaywK ICAgICAgICBCSF9SZXEsCiAgICAgICAgQkhfTWFwcGVkLAogICAgICAgIEJIX05ldywKICAgICAg ICBCSF9Bc3luYywKICAgICAgICBCSF9XYWl0X0lPLAoKICAgICAgICBCSF9Qcml2YXRlU3RhcnQs CgoKfTsKIyAyMzcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMu aCIKc3RydWN0IGJ1ZmZlcl9oZWFkIHsKCiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiX25l eHQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBiX2Jsb2NrbnI7CiAgICAgICAgdW5zaWduZWQgc2hv cnQgYl9zaXplOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGJfbGlzdDsKICAgICAgICBrZGV2X3Qg Yl9kZXY7CgogICAgICAgIGF0b21pY190IGJfY291bnQ7CiAgICAgICAga2Rldl90IGJfcmRldjsK ICAgICAgICB1bnNpZ25lZCBsb25nIGJfc3RhdGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBiX2Zs dXNodGltZTsKCiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiX25leHRfZnJlZTsKICAgICAg ICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfcHJldl9mcmVlOwogICAgICAgIHN0cnVjdCBidWZmZXJf aGVhZCAqYl90aGlzX3BhZ2U7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiX3JlcW5leHQ7 CgogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKmJfcHByZXY7CiAgICAgICAgY2hhciAqIGJf ZGF0YTsKICAgICAgICBzdHJ1Y3QgcGFnZSAqYl9wYWdlOwogICAgICAgIHZvaWQgKCpiX2VuZF9p bykoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgaW50IHVwdG9kYXRlKTsKICAgICAgICB2b2lkICpi X3ByaXZhdGU7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgYl9yc2VjdG9yOwogICAgICAgIHdhaXRf cXVldWVfaGVhZF90IGJfd2FpdDsKCiAgICAgICAgc3RydWN0IGlub2RlICogYl9pbm9kZTsKICAg ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJfaW5vZGVfYnVmZmVyczsKfTsKCnR5cGVkZWYgdm9pZCAo YmhfZW5kX2lvX3QpKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCB1cHRvZGF0ZSk7CnZvaWQg aW5pdF9idWZmZXJfUjlmZDZjZmQ1KHN0cnVjdCBidWZmZXJfaGVhZCAqLCBiaF9lbmRfaW9fdCAq LCB2b2lkICopOwojIDI4MyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC9mcy5oIgpleHRlcm4gdm9pZCBzZXRfYmhfcGFnZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBz dHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOwoKCgoKIyAxICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3BpcGVfZnNfaS5oIiAxCgoKCgpzdHJ1 Y3QgcGlwZV9pbm9kZV9pbmZvIHsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwogICAg ICAgIGNoYXIgKmJhc2U7CiAgICAgICAgdW5zaWduZWQgaW50IGxlbjsKICAgICAgICB1bnNpZ25l ZCBpbnQgc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgaW50IHJlYWRlcnM7CiAgICAgICAgdW5zaWdu ZWQgaW50IHdyaXRlcnM7CiAgICAgICAgdW5zaWduZWQgaW50IHdhaXRpbmdfcmVhZGVyczsKICAg ICAgICB1bnNpZ25lZCBpbnQgd2FpdGluZ193cml0ZXJzOwogICAgICAgIHVuc2lnbmVkIGludCBy X2NvdW50ZXI7CiAgICAgICAgdW5zaWduZWQgaW50IHdfY291bnRlcjsKfTsKIyA0MiAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9waXBlX2ZzX2kuaCIKdm9pZCBwaXBl X3dhaXQoc3RydWN0IGlub2RlICogaW5vZGUpOwoKc3RydWN0IGlub2RlKiBwaXBlX25ldyhzdHJ1 Y3QgaW5vZGUqIGlub2RlKTsKIyAyODkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvbWluaXhfZnNfaS5oIiAxCgoKCgoKCnN0cnVjdCBtaW5peF9pbm9kZV9pbmZvIHsKICAg ICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBfX3UxNiBpMV9kYXRhWzE2XTsKICAgICAgICAg ICAgICAgIF9fdTMyIGkyX2RhdGFbMTZdOwogICAgICAgIH0gdTsKfTsKIyAyOTAgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZXh0Ml9mc19pLmgiIDEKIyAyMiAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9leHQyX2ZzX2kuaCIKc3RydWN0IGV4 dDJfaW5vZGVfaW5mbyB7CiAgICAgICAgX191MzIgaV9kYXRhWzE1XTsKICAgICAgICBfX3UzMiBp X2ZsYWdzOwogICAgICAgIF9fdTMyIGlfZmFkZHI7CiAgICAgICAgX191OCBpX2ZyYWdfbm87CiAg ICAgICAgX191OCBpX2ZyYWdfc2l6ZTsKICAgICAgICBfX3UxNiBpX29zeW5jOwogICAgICAgIF9f dTMyIGlfZmlsZV9hY2w7CiAgICAgICAgX191MzIgaV9kaXJfYWNsOwogICAgICAgIF9fdTMyIGlf ZHRpbWU7CiAgICAgICAgX191MzIgaV9ibG9ja19ncm91cDsKICAgICAgICBfX3UzMiBpX25leHRf YWxsb2NfYmxvY2s7CiAgICAgICAgX191MzIgaV9uZXh0X2FsbG9jX2dvYWw7CiAgICAgICAgX191 MzIgaV9wcmVhbGxvY19ibG9jazsKICAgICAgICBfX3UzMiBpX3ByZWFsbG9jX2NvdW50OwogICAg ICAgIF9fdTMyIGlfZGlyX3N0YXJ0X2xvb2t1cDsKICAgICAgICBpbnQgaV9uZXdfaW5vZGU6MTsK fTsKIyAyOTEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIg MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaHBmc19mc19p LmgiIDEKCgoKc3RydWN0IGhwZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBt bXVfcHJpdmF0ZTsKICAgICAgICBpbm9fdCBpX3BhcmVudF9kaXI7CiAgICAgICAgdW5zaWduZWQg aV9kbm87CiAgICAgICAgdW5zaWduZWQgaV9kcG9zOwogICAgICAgIHVuc2lnbmVkIGlfZHN1YmRu bzsKICAgICAgICB1bnNpZ25lZCBpX2ZpbGVfc2VjOwogICAgICAgIHVuc2lnbmVkIGlfZGlza19z ZWM7CiAgICAgICAgdW5zaWduZWQgaV9uX3NlY3M7CiAgICAgICAgdW5zaWduZWQgaV9lYV9zaXpl OwogICAgICAgIHVuc2lnbmVkIGlfY29udiA6IDI7CiAgICAgICAgdW5zaWduZWQgaV9lYV9tb2Rl IDogMTsKICAgICAgICB1bnNpZ25lZCBpX2VhX3VpZCA6IDE7CiAgICAgICAgdW5zaWduZWQgaV9l YV9naWQgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfZGlydHkgOiAxOwogICAgICAgIHN0cnVjdCBz ZW1hcGhvcmUgaV9zZW07CiAgICAgICAgbG9mZl90ICoqaV9yZGRpcl9vZmY7Cn07CiMgMjkyICIv dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L250ZnNfZnNfaS5oIiAxCgoKCiMg MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMg NSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9udGZzX2ZzX2kuaCIg MgoKCnN0cnVjdCBudGZzX2F0dHJpYnV0ZTsKc3RydWN0IG50ZnNfc2JfaW5mbzsKCgoKCnR5cGVk ZWYgdTggbnRmc191ODsKdHlwZWRlZiB1MTYgbnRmc191MTY7CnR5cGVkZWYgdTMyIG50ZnNfdTMy Owp0eXBlZGVmIHU2NCBudGZzX3U2NDsKdHlwZWRlZiBzOCBudGZzX3M4Owp0eXBlZGVmIHMxNiBu dGZzX3MxNjsKdHlwZWRlZiBzMzIgbnRmc19zMzI7CnR5cGVkZWYgczY0IG50ZnNfczY0OwoKCgoK dHlwZWRlZiBfX2tlcm5lbF9tb2RlX3QgbnRtb2RlX3Q7CgoKCnR5cGVkZWYgdWlkX3QgbnRmc191 aWRfdDsKCgoKdHlwZWRlZiBnaWRfdCBudGZzX2dpZF90OwoKCgp0eXBlZGVmIF9fa2VybmVsX3Np emVfdCBudGZzX3NpemVfdDsKCgoKdHlwZWRlZiBfX2tlcm5lbF90aW1lX3QgbnRmc190aW1lX3Q7 CgoKCgoKdHlwZWRlZiB1MTYgbnRmc193Y2hhcl90OwoKCgoKdHlwZWRlZiBzNjQgbnRmc19vZmZz ZXRfdDsKCgoKCnR5cGVkZWYgdTY0IG50ZnNfdGltZTY0X3Q7CiMgNjkgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbnRmc19mc19pLmgiCnR5cGVkZWYgczMyIG50ZnNf Y2x1c3Rlcl90OwoKCgpzdHJ1Y3QgbnRmc19pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbnRm c19zYl9pbmZvICp2b2w7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX251bWJlcjsKICAgICAgICBf X3UxNiBzZXF1ZW5jZV9udW1iZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciAqYXR0cjsKICAgICAg ICBpbnQgYXR0cl9jb3VudDsKICAgICAgICBzdHJ1Y3QgbnRmc19hdHRyaWJ1dGUgKmF0dHJzOwog ICAgICAgIGludCByZWNvcmRfY291bnQ7CiAgICAgICAgaW50ICpyZWNvcmRzOwoKICAgICAgICB1 bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBp bnQgcmVjb3Jkc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsdXN0ZXJzX3Blcl9y ZWNvcmQ7CiAgICAgICAgICAgICAgICB9IGluZGV4OwogICAgICAgIH0gdTsKfTsKIyAyOTMgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbXNkb3NfZnNfaS5oIiAxCgoKCgoK CgpzdHJ1Y3QgbXNkb3NfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJp dmF0ZTsKICAgICAgICBpbnQgaV9zdGFydDsKICAgICAgICBpbnQgaV9sb2dzdGFydDsKICAgICAg ICBpbnQgaV9hdHRyczsKICAgICAgICBpbnQgaV9jdGltZV9tczsKICAgICAgICBpbnQgaV9sb2Nh dGlvbjsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlfZmF0X2lub2RlOwogICAgICAgIHN0cnVjdCBs aXN0X2hlYWQgaV9mYXRfaGFzaDsKfTsKIyAyOTQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvdW1zZG9zX2ZzX2kuaCIgMQoKCgoKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21zZG9zX2ZzX2kuaCIgMQojIDkgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdW1zZG9zX2ZzX2kuaCIgMgojIDEgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcGlwZV9mc19pLmgiIDEKIyAxMCAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC91bXNkb3NfZnNfaS5oIiAy CiMgMzkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdW1zZG9zX2Zz X2kuaCIKc3RydWN0IGRpcl9sb2NraW5nX2luZm8gewogICAgICAgIHdhaXRfcXVldWVfaGVhZF90 IHA7CiAgICAgICAgc2hvcnQgaW50IGxvb2tpbmc7CiAgICAgICAgc2hvcnQgaW50IGNyZWF0aW5n OwoKCgogICAgICAgIGxvbmcgcGlkOwoKfTsKCnN0cnVjdCB1bXNkb3NfaW5vZGVfaW5mbyB7CiAg ICAgICAgc3RydWN0IG1zZG9zX2lub2RlX2luZm8gbXNkb3NfaW5mbzsKICAgICAgICBzdHJ1Y3Qg ZGlyX2xvY2tpbmdfaW5mbyBkaXJfaW5mbzsKICAgICAgICBpbnQgaV9wYXRjaGVkOwogICAgICAg IGludCBpX2lzX2hsaW5rOwogICAgICAgIG9mZl90IHBvczsKfTsKIyAyOTUgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaXNvX2ZzX2kuaCIgMQoKCgoKCgpzdHJ1Y3QgaXNv X2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGludCBpX2ZpcnN0X2V4dGVudDsKICAgICAg ICB1bnNpZ25lZCBjaGFyIGlfZmlsZV9mb3JtYXQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX25l eHRfc2VjdGlvbl9pbm87CiAgICAgICAgb2ZmX3QgaV9zZWN0aW9uX3NpemU7Cn07CiMgMjk2ICIv dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDEKCgoKIyAx ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS90eXBlcy5oIiAxCiMgNSAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9uZnNfZnNfaS5oIiAyCiMg MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyA2 ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDIK IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L25mcy5oIiAxCiMg MTAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbmZzLmgiCiMgMSAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zdW5ycGMvbXNnX3Byb3Qu aCIgMQojIDE0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3N1bnJw Yy9tc2dfcHJvdC5oIgplbnVtIHJwY19hdXRoX2ZsYXZvciB7CiAgICAgICAgUlBDX0FVVEhfTlVM TCA9IDAsCiAgICAgICAgUlBDX0FVVEhfVU5JWCA9IDEsCiAgICAgICAgUlBDX0FVVEhfU0hPUlQg PSAyLAogICAgICAgIFJQQ19BVVRIX0RFUyA9IDMsCiAgICAgICAgUlBDX0FVVEhfS1JCID0gNCwK fTsKCmVudW0gcnBjX21zZ190eXBlIHsKICAgICAgICBSUENfQ0FMTCA9IDAsCiAgICAgICAgUlBD X1JFUExZID0gMQp9OwoKZW51bSBycGNfcmVwbHlfc3RhdCB7CiAgICAgICAgUlBDX01TR19BQ0NF UFRFRCA9IDAsCiAgICAgICAgUlBDX01TR19ERU5JRUQgPSAxCn07CgplbnVtIHJwY19hY2NlcHRf c3RhdCB7CiAgICAgICAgUlBDX1NVQ0NFU1MgPSAwLAogICAgICAgIFJQQ19QUk9HX1VOQVZBSUwg PSAxLAogICAgICAgIFJQQ19QUk9HX01JU01BVENIID0gMiwKICAgICAgICBSUENfUFJPQ19VTkFW QUlMID0gMywKICAgICAgICBSUENfR0FSQkFHRV9BUkdTID0gNCwKICAgICAgICBSUENfU1lTVEVN X0VSUiA9IDUKfTsKCmVudW0gcnBjX3JlamVjdF9zdGF0IHsKICAgICAgICBSUENfTUlTTUFUQ0gg PSAwLAogICAgICAgIFJQQ19BVVRIX0VSUk9SID0gMQp9OwoKZW51bSBycGNfYXV0aF9zdGF0IHsK ICAgICAgICBSUENfQVVUSF9PSyA9IDAsCiAgICAgICAgUlBDX0FVVEhfQkFEQ1JFRCA9IDEsCiAg ICAgICAgUlBDX0FVVEhfUkVKRUNURURDUkVEID0gMiwKICAgICAgICBSUENfQVVUSF9CQURWRVJG ID0gMywKICAgICAgICBSUENfQVVUSF9SRUpFQ1RFRFZFUkYgPSA0LAogICAgICAgIFJQQ19BVVRI X1RPT1dFQUsgPSA1Cn07CiMgMTEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvbmZzLmgiIDIKIyA0MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s aW51eC9uZnMuaCIKIGVudW0gbmZzX3N0YXQgewogICAgICAgIE5GU19PSyA9IDAsCiAgICAgICAg TkZTRVJSX1BFUk0gPSAxLAogICAgICAgIE5GU0VSUl9OT0VOVCA9IDIsCiAgICAgICAgTkZTRVJS X0lPID0gNSwKICAgICAgICBORlNFUlJfTlhJTyA9IDYsCiAgICAgICAgTkZTRVJSX0VBR0FJTiA9 IDExLAogICAgICAgIE5GU0VSUl9BQ0NFUyA9IDEzLAogICAgICAgIE5GU0VSUl9FWElTVCA9IDE3 LAogICAgICAgIE5GU0VSUl9YREVWID0gMTgsCiAgICAgICAgTkZTRVJSX05PREVWID0gMTksCiAg ICAgICAgTkZTRVJSX05PVERJUiA9IDIwLAogICAgICAgIE5GU0VSUl9JU0RJUiA9IDIxLAogICAg ICAgIE5GU0VSUl9JTlZBTCA9IDIyLAogICAgICAgIE5GU0VSUl9GQklHID0gMjcsCiAgICAgICAg TkZTRVJSX05PU1BDID0gMjgsCiAgICAgICAgTkZTRVJSX1JPRlMgPSAzMCwKICAgICAgICBORlNF UlJfTUxJTksgPSAzMSwKICAgICAgICBORlNFUlJfT1BOT1RTVVBQID0gNDUsCiAgICAgICAgTkZT RVJSX05BTUVUT09MT05HID0gNjMsCiAgICAgICAgTkZTRVJSX05PVEVNUFRZID0gNjYsCiAgICAg ICAgTkZTRVJSX0RRVU9UID0gNjksCiAgICAgICAgTkZTRVJSX1NUQUxFID0gNzAsCiAgICAgICAg TkZTRVJSX1JFTU9URSA9IDcxLAogICAgICAgIE5GU0VSUl9XRkxVU0ggPSA5OSwKICAgICAgICBO RlNFUlJfQkFESEFORExFID0gMTAwMDEsCiAgICAgICAgTkZTRVJSX05PVF9TWU5DID0gMTAwMDIs CiAgICAgICAgTkZTRVJSX0JBRF9DT09LSUUgPSAxMDAwMywKICAgICAgICBORlNFUlJfTk9UU1VQ UCA9IDEwMDA0LAogICAgICAgIE5GU0VSUl9UT09TTUFMTCA9IDEwMDA1LAogICAgICAgIE5GU0VS Ul9TRVJWRVJGQVVMVCA9IDEwMDA2LAogICAgICAgIE5GU0VSUl9CQURUWVBFID0gMTAwMDcsCiAg ICAgICAgTkZTRVJSX0pVS0VCT1ggPSAxMDAwOAogfTsKCgoKZW51bSBuZnNfZnR5cGUgewogICAg ICAgIE5GTk9OID0gMCwKICAgICAgICBORlJFRyA9IDEsCiAgICAgICAgTkZESVIgPSAyLAogICAg ICAgIE5GQkxLID0gMywKICAgICAgICBORkNIUiA9IDQsCiAgICAgICAgTkZMTksgPSA1LAogICAg ICAgIE5GU09DSyA9IDYsCiAgICAgICAgTkZCQUQgPSA3LAogICAgICAgIE5GRklGTyA9IDgKfTsK CgoKCgoKc3RydWN0IG5mc19maCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2l6ZTsKICAgICAg ICB1bnNpZ25lZCBjaGFyIGRhdGFbNjRdOwp9OwojIDEwNyAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9uZnMuaCIKZW51bSBuZnMzX3N0YWJsZV9ob3cgewogICAgICAg IE5GU19VTlNUQUJMRSA9IDAsCiAgICAgICAgTkZTX0RBVEFfU1lOQyA9IDEsCiAgICAgICAgTkZT X0ZJTEVfU1lOQyA9IDIKfTsKIyA3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L25mc19mc19pLmgiIDIKCgoKCnN0cnVjdCBuZnNfaW5vZGVfaW5mbyB7CgoKCiAgICAg ICAgX191NjQgZnNpZDsKICAgICAgICBfX3U2NCBmaWxlaWQ7CgoKCgogICAgICAgIHN0cnVjdCBu ZnNfZmggZmg7CgoKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IGZsYWdzOwojIDQ1ICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiCiAgICAgICAgdW5z aWduZWQgbG9uZyByZWFkX2NhY2hlX2ppZmZpZXM7CiAgICAgICAgX191NjQgcmVhZF9jYWNoZV9j dGltZTsKICAgICAgICBfX3U2NCByZWFkX2NhY2hlX210aW1lOwogICAgICAgIF9fdTY0IHJlYWRf Y2FjaGVfaXNpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRydGltZW87CiAgICAgICAgdW5z aWduZWQgbG9uZyBhdHRydGltZW9fdGltZXN0YW1wOwoKCgoKCiAgICAgICAgX191MzIgY29va2ll dmVyZlsyXTsKCgoKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCByZWFkOwogICAgICAgIHN0cnVj dCBsaXN0X2hlYWQgZGlydHk7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBjb21taXQ7CiAgICAg ICAgc3RydWN0IGxpc3RfaGVhZCB3cml0ZWJhY2s7CgogICAgICAgIHVuc2lnbmVkIGludCBucmVh ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGlydHksCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmNvbW1pdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBucGFnZXM7CgoKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmhhc2hfbmV4dCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqaGFzaF9wcmV2OwogICAgICAgIHVuc2lnbmVkIGxvbmcgbmV4 dHNjYW47CgoKICAgICAgICBzdHJ1Y3QgcnBjX2NyZWQgKm1tX2NyZWQ7Cn07CiMgOTIgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIKc3RydWN0IG5m c19sb2NrX2luZm8gewogICAgICAgIHUzMiBzdGF0ZTsKICAgICAgICB1MzIgZmxhZ3M7CiAgICAg ICAgc3RydWN0IG5sbV9ob3N0ICpob3N0Owp9OwojIDI5NyAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9zeXN2X2ZzX2kuaCIgMQoKCgoKCgpzdHJ1Y3Qgc3lzdl9pbm9kZV9p bmZvIHsKICAgICAgICB1MzIgaV9kYXRhWzEwKzErMSsxXTsKCgoKCn07CiMgMjk4ICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfaS5oIiAxCgoKCiMgMSAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9hLm91dC5oIiAxCgoKCgoKCgoj IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2Eub3V0LmgiIDEKCgoK c3RydWN0IGV4ZWMKewogIHVuc2lnbmVkIGxvbmcgYV9pbmZvOwogIHVuc2lnbmVkIGFfdGV4dDsK ICB1bnNpZ25lZCBhX2RhdGE7CiAgdW5zaWduZWQgYV9ic3M7CiAgdW5zaWduZWQgYV9zeW1zOwog IHVuc2lnbmVkIGFfZW50cnk7CiAgdW5zaWduZWQgYV90cnNpemU7CiAgdW5zaWduZWQgYV9kcnNp emU7Cn07CiMgOSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9hLm91 dC5oIiAyCgoKCgplbnVtIG1hY2hpbmVfdHlwZSB7CgoKCiAgTV9PTERTVU4yID0gMCwKCgoKCiAg TV82ODAxMCA9IDEsCgoKCgogIE1fNjgwMjAgPSAyLAoKCgoKICBNX1NQQVJDID0gMywKCgogIE1f Mzg2ID0gMTAwLAogIE1fTUlQUzEgPSAxNTEsCiAgTV9NSVBTMiA9IDE1Mgp9OwojIDEzMSAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9hLm91dC5oIgojIDEgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3BhZ2UuaCIgMQojIDEzMiAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9hLm91dC5oIiAyCiMgMTU3ICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiCnN0cnVjdCBubGlz dCB7CiAgdW5pb24gewogICAgY2hhciAqbl9uYW1lOwogICAgc3RydWN0IG5saXN0ICpuX25leHQ7 CiAgICBsb25nIG5fc3RyeDsKICB9IG5fdW47CiAgdW5zaWduZWQgY2hhciBuX3R5cGU7CiAgY2hh ciBuX290aGVyOwogIHNob3J0IG5fZGVzYzsKICB1bnNpZ25lZCBsb25nIG5fdmFsdWU7Cn07CiMg MjM1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiCnN0 cnVjdCByZWxvY2F0aW9uX2luZm8KewoKICBpbnQgcl9hZGRyZXNzOwoKICB1bnNpZ25lZCBpbnQg cl9zeW1ib2xudW06MjQ7CgoKCiAgdW5zaWduZWQgaW50IHJfcGNyZWw6MTsKCgogIHVuc2lnbmVk IGludCByX2xlbmd0aDoyOwoKCgoKCgogIHVuc2lnbmVkIGludCByX2V4dGVybjoxOwoKCgoKCgoK ICB1bnNpZ25lZCBpbnQgcl9wYWQ6NDsKCn07CiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9hZmZzX2ZzX2kuaCIgMgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC90aW1lLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wYXJhbS5oIiAxCiMgNSAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC90aW1lLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyA2ICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3RpbWUuaCIgMgoKCgpzdHJ1Y3QgdGltZXNwZWMgewogICAg ICAgIHRpbWVfdCB0dl9zZWM7CiAgICAgICAgbG9uZyB0dl9uc2VjOwp9OwojIDMxICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3RpbWUuaCIKc3RhdGljIF9faW5saW5l X18gdW5zaWduZWQgbG9uZwp0aW1lc3BlY190b19qaWZmaWVzKHN0cnVjdCB0aW1lc3BlYyAqdmFs dWUpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlYyA9IHZhbHVlLT50dl9zZWM7CiAgICAgICAg bG9uZyBuc2VjID0gdmFsdWUtPnR2X25zZWM7CgogICAgICAgIGlmIChzZWMgPj0gKCgofjBVTCA+ PiAxKS0xKSAvIDEwMCkpCiAgICAgICAgICAgICAgICByZXR1cm4gKCh+MFVMID4+IDEpLTEpOwog ICAgICAgIG5zZWMgKz0gMTAwMDAwMDAwMEwgLyAxMDAgLSAxOwogICAgICAgIG5zZWMgLz0gMTAw MDAwMDAwMEwgLyAxMDA7CiAgICAgICAgcmV0dXJuIDEwMCAqIHNlYyArIG5zZWM7Cn0KCnN0YXRp YyBfX2lubGluZV9fIHZvaWQKamlmZmllc190b190aW1lc3BlYyh1bnNpZ25lZCBsb25nIGppZmZp ZXNfUjBkYTAyZDY3LCBzdHJ1Y3QgdGltZXNwZWMgKnZhbHVlKQp7CiAgICAgICAgdmFsdWUtPnR2 X25zZWMgPSAoamlmZmllc19SMGRhMDJkNjcgJSAxMDApICogKDEwMDAwMDAwMDBMIC8gMTAwKTsK ICAgICAgICB2YWx1ZS0+dHZfc2VjID0gamlmZmllc19SMGRhMDJkNjcgLyAxMDA7Cn0KIyA2NyAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90aW1lLmgiCnN0YXRpYyBp bmxpbmUgdW5zaWduZWQgbG9uZwpta3RpbWUgKHVuc2lnbmVkIGludCB5ZWFyLCB1bnNpZ25lZCBp bnQgbW9uLAogICAgICAgIHVuc2lnbmVkIGludCBkYXksIHVuc2lnbmVkIGludCBob3VyLAogICAg ICAgIHVuc2lnbmVkIGludCBtaW4sIHVuc2lnbmVkIGludCBzZWMpCnsKICAgICAgICBpZiAoMCA+ PSAoaW50KSAobW9uIC09IDIpKSB7CiAgICAgICAgICAgICAgICBtb24gKz0gMTI7CiAgICAgICAg ICAgICAgICB5ZWFyIC09IDE7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKCgoCiAgICAgICAg ICAgICAgICAodW5zaWduZWQgbG9uZykgKHllYXIvNCAtIHllYXIvMTAwICsgeWVhci80MDAgKyAz NjcqbW9uLzEyICsgZGF5KSArCiAgICAgICAgICAgICAgICAgICAgICAgIHllYXIqMzY1IC0gNzE5 NDk5CiAgICAgICAgICAgICkqMjQgKyBob3VyCiAgICAgICAgICApKjYwICsgbWluCiAgICAgICAg KSo2MCArIHNlYzsKfQoKCgoKc3RydWN0IHRpbWV2YWwgewogICAgICAgIHRpbWVfdCB0dl9zZWM7 CiAgICAgICAgc3VzZWNvbmRzX3QgdHZfdXNlYzsKfTsKCnN0cnVjdCB0aW1lem9uZSB7CiAgICAg ICAgaW50IHR6X21pbnV0ZXN3ZXN0OwogICAgICAgIGludCB0el9kc3R0aW1lOwp9OwoKCgoKZXh0 ZXJuIHZvaWQgZG9fZ2V0dGltZW9mZGF5X1I3MjI3MGUzNShzdHJ1Y3QgdGltZXZhbCAqdHYpOwpl eHRlcm4gdm9pZCBkb19zZXR0aW1lb2ZkYXlfUjE5ZDdiMWZmKHN0cnVjdCB0aW1ldmFsICp0dik7 CmV4dGVybiB2b2lkIGdldF9mYXN0X3RpbWVfUjYwNzQzMDIyKHN0cnVjdCB0aW1ldmFsICp0dik7 CmV4dGVybiB2b2lkICgqZG9fZ2V0X2Zhc3RfdGltZSkoc3RydWN0IHRpbWV2YWwgKik7CiMgMTIx ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3RpbWUuaCIKc3RydWN0 IGl0aW1lcnNwZWMgewogICAgICAgIHN0cnVjdCB0aW1lc3BlYyBpdF9pbnRlcnZhbDsKICAgICAg ICBzdHJ1Y3QgdGltZXNwZWMgaXRfdmFsdWU7Cn07CgpzdHJ1Y3QgaXRpbWVydmFsIHsKICAgICAg ICBzdHJ1Y3QgdGltZXZhbCBpdF9pbnRlcnZhbDsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBpdF92 YWx1ZTsKfTsKIyA4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2Fm ZnNfZnNfaS5oIiAyCiMgMTcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu dXgvYWZmc19mc19pLmgiCnN0cnVjdCBhZmZzX2V4dF9rZXkgewogICAgICAgIHUzMiBleHQ7CiAg ICAgICAgdTMyIGtleTsKfTsKCgoKCnN0cnVjdCBhZmZzX2lub2RlX2luZm8gewogICAgICAgIHUz MiBpX29wZW5jbnQ7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBpX2xpbmtfbG9jazsKICAgICAg ICBzdHJ1Y3Qgc2VtYXBob3JlIGlfZXh0X2xvY2s7CgogICAgICAgIHUzMiBpX2Jsa2NudDsKICAg ICAgICB1MzIgaV9leHRjbnQ7CiAgICAgICAgdTMyICppX2xjOwogICAgICAgIHUzMiBpX2xjX3Np emU7CiAgICAgICAgdTMyIGlfbGNfc2hpZnQ7CiAgICAgICAgdTMyIGlfbGNfbWFzazsKICAgICAg ICBzdHJ1Y3QgYWZmc19leHRfa2V5ICppX2FjOwogICAgICAgIHUzMiBpX2V4dF9sYXN0OwogICAg ICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqaV9leHRfYmg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBt bXVfcHJpdmF0ZTsKICAgICAgICB1MzIgaV9wcm90ZWN0OwogICAgICAgIHUzMiBpX2xhc3RhbGxv YzsKICAgICAgICBpbnQgaV9wYV9jbnQ7CiMgNTEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvbGludXgvYWZmc19mc19pLmgiCn07CiMgMjk5ICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L3Vmc19mc19pLmgiIDEKIyAxNiAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC91ZnNfZnNfaS5oIgpzdHJ1Y3QgdWZzX2lub2RlX2luZm8g ewogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdTMyIGlfZGF0YVsxNV07CiAgICAg ICAgICAgICAgICBfX3U4IGlfc3ltbGlua1s0KjE1XTsKICAgICAgICB9IGlfdTE7CiAgICAgICAg X191NjQgaV9zaXplOwogICAgICAgIF9fdTMyIGlfZmxhZ3M7CiAgICAgICAgX191MzIgaV9nZW47 CiAgICAgICAgX191MzIgaV9zaGFkb3c7CiAgICAgICAgX191MzIgaV91bnVzZWQxOwogICAgICAg IF9fdTMyIGlfdW51c2VkMjsKICAgICAgICBfX3UzMiBpX29lZnRmbGFnOwogICAgICAgIF9fdTE2 IGlfb3N5bmM7CiAgICAgICAgX191MzIgaV9sYXN0ZnJhZzsKfTsKIyAzMDAgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZWZzX2ZzX2kuaCIgMQojIDEyICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2Vmc19mc19pLmgiCnR5cGVkZWYgaW50MzJf dCBlZnNfYmxvY2tfdDsKdHlwZWRlZiB1aW50MzJfdCBlZnNfaW5vX3Q7CgoKCgoKCnR5cGVkZWYg dW5pb24gZXh0ZW50X3UgewogICAgICAgIHVuc2lnbmVkIGNoYXIgcmF3WzhdOwogICAgICAgIHN0 cnVjdCBleHRlbnRfcyB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXhfbWFnaWM6ODsK ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleF9ibjoyNDsKICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBleF9sZW5ndGg6ODsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleF9v ZmZzZXQ6MjQ7CiAgICAgICAgfSBjb29rZWQ7Cn0gZWZzX2V4dGVudDsKCnR5cGVkZWYgc3RydWN0 IGVkZXZzIHsKICAgICAgICBzaG9ydCBvZGV2OwogICAgICAgIHVuc2lnbmVkIGludCBuZGV2Owp9 IGVmc19kZXZzOwoKCgoKCnN0cnVjdCBlZnNfZGlub2RlIHsKICAgICAgICB1X3Nob3J0IGRpX21v ZGU7CiAgICAgICAgc2hvcnQgZGlfbmxpbms7CiAgICAgICAgdV9zaG9ydCBkaV91aWQ7CiAgICAg ICAgdV9zaG9ydCBkaV9naWQ7CiAgICAgICAgaW50MzJfdCBkaV9zaXplOwogICAgICAgIGludDMy X3QgZGlfYXRpbWU7CiAgICAgICAgaW50MzJfdCBkaV9tdGltZTsKICAgICAgICBpbnQzMl90IGRp X2N0aW1lOwogICAgICAgIHVpbnQzMl90IGRpX2dlbjsKICAgICAgICBzaG9ydCBkaV9udW1leHRl bnRzOwogICAgICAgIHVfY2hhciBkaV92ZXJzaW9uOwogICAgICAgIHVfY2hhciBkaV9zcGFyZTsK ICAgICAgICB1bmlvbiBkaV9hZGRyIHsKICAgICAgICAgICAgICAgIGVmc19leHRlbnQgZGlfZXh0 ZW50c1sxMl07CiAgICAgICAgICAgICAgICBlZnNfZGV2cyBkaV9kZXY7CiAgICAgICAgfSBkaV91 Owp9OwoKCnN0cnVjdCBlZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgaW50IG51bWV4dGVudHM7CiAg ICAgICAgaW50IGxhc3RleHRlbnQ7CgogICAgICAgIGVmc19leHRlbnQgZXh0ZW50c1sxMl07Cn07 CiMgMzAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5o IiAxCiMgMTIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29kYV9m c19pLmgiCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90eXBl cy5oIiAxCiMgMTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29k YV9mc19pLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L2xpc3QuaCIgMQojIDE0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L2NvZGFfZnNfaS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s aW51eC9jb2RhLmgiIDEKIyAxMDkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvY29kYS5oIgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1X3F1YWRfdDsKIyAxNjQg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29kYS5oIgpzdHJ1Y3Qg dmVudXNfZGlyZW50IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGRfZmlsZW5vOwogICAgICAgIHVu c2lnbmVkIHNob3J0IGRfcmVjbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF90eXBlOwogICAg ICAgIHVuc2lnbmVkIGNoYXIgZF9uYW1sZW47CiAgICAgICAgY2hhciBkX25hbWVbMjU1ICsgMV07 Cn07CiMgMTk4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvZGEu aCIKdHlwZWRlZiB1X2xvbmcgVm9sdW1lSWQ7CnR5cGVkZWYgdV9sb25nIFZub2RlSWQ7CnR5cGVk ZWYgdV9sb25nIFVuaXF1ZV90Owp0eXBlZGVmIHVfbG9uZyBGaWxlVmVyc2lvbjsKCgoKCnR5cGVk ZWYgc3RydWN0IFZpY2VGaWQgewogICAgVm9sdW1lSWQgVm9sdW1lOwogICAgVm5vZGVJZCBWbm9k ZTsKICAgIFVuaXF1ZV90IFVuaXF1ZTsKfSBWaWNlRmlkOwoKCgoKc3RhdGljIF9faW5saW5lX18g aW5vX3QgY29kYV9mMmkoc3RydWN0IFZpY2VGaWQgKmZpZCkKewogICAgICAgIGlmICggISBmaWQg KQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgaWYgKGZpZC0+Vm5vZGUgPT0gMHhm ZmZmZmZmZSB8fCBmaWQtPlZub2RlID09IDB4ZmZmZmZmZmYpCiAgICAgICAgICAgICAgICByZXR1 cm4gKChmaWQtPlZvbHVtZSA8PCAyMCkgfCAoZmlkLT5VbmlxdWUgJiAweGZmZmZmKSk7CiAgICAg ICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJuIChmaWQtPlVuaXF1ZSArIChmaWQtPlZub2Rl PDwxMCkgKyAoZmlkLT5Wb2x1bWU8PDIwKSk7Cn0KIyAyMzMgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvY29kYS5oIgp0eXBlZGVmIHVfaW50MzJfdCB2dWlkX3Q7CnR5 cGVkZWYgdV9pbnQzMl90IHZnaWRfdDsKCgoKCnN0cnVjdCBjb2RhX2NyZWQgewogICAgdnVpZF90 IGNyX3VpZCwgY3JfZXVpZCwgY3Jfc3VpZCwgY3JfZnN1aWQ7CiAgICB2Z2lkX3QgY3JfZ3JvdXBp ZCwgY3JfZWdpZCwgY3Jfc2dpZCwgY3JfZnNnaWQ7Cn07CgoKCgoKCgplbnVtIGNvZGFfdnR5cGUg eyBDX1ZOT04sIENfVlJFRywgQ19WRElSLCBDX1ZCTEssIENfVkNIUiwgQ19WTE5LLCBDX1ZTT0NL LCBDX1ZGSUZPLCBDX1ZCQUQgfTsKCnN0cnVjdCBjb2RhX3ZhdHRyIHsKICAgICAgICBsb25nIHZh X3R5cGU7CiAgICAgICAgdV9zaG9ydCB2YV9tb2RlOwogICAgICAgIHNob3J0IHZhX25saW5rOwog ICAgICAgIHZ1aWRfdCB2YV91aWQ7CiAgICAgICAgdmdpZF90IHZhX2dpZDsKICAgICAgICBsb25n IHZhX2ZpbGVpZDsKICAgICAgICB1X3F1YWRfdCB2YV9zaXplOwogICAgICAgIGxvbmcgdmFfYmxv Y2tzaXplOwogICAgICAgIHN0cnVjdCB0aW1lc3BlYyB2YV9hdGltZTsKICAgICAgICBzdHJ1Y3Qg dGltZXNwZWMgdmFfbXRpbWU7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIHZhX2N0aW1lOwogICAg ICAgIHVfbG9uZyB2YV9nZW47CiAgICAgICAgdV9sb25nIHZhX2ZsYWdzOwogICAgICAgIHVfcXVh ZF90IHZhX3JkZXY7CiAgICAgICAgdV9xdWFkX3QgdmFfYnl0ZXM7CiAgICAgICAgdV9xdWFkX3Qg dmFfZmlsZXJldjsKfTsKCgoKCnN0cnVjdCBjb2RhX3N0YXRmcyB7CiAgICBpbnQzMl90IGZfYmxv Y2tzOwogICAgaW50MzJfdCBmX2JmcmVlOwogICAgaW50MzJfdCBmX2JhdmFpbDsKICAgIGludDMy X3QgZl9maWxlczsKICAgIGludDMyX3QgZl9mZnJlZTsKfTsKIyAzMzcgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29kYS5oIgpzdHJ1Y3QgY29kYV9pbl9oZHIgewog ICAgdW5zaWduZWQgbG9uZyBvcGNvZGU7CiAgICB1bnNpZ25lZCBsb25nIHVuaXF1ZTsKICAgIHVf c2hvcnQgcGlkOwogICAgdV9zaG9ydCBwZ2lkOwogICAgdV9zaG9ydCBzaWQ7CiAgICBzdHJ1Y3Qg Y29kYV9jcmVkIGNyZWQ7Cn07CgoKc3RydWN0IGNvZGFfb3V0X2hkciB7CiAgICB1bnNpZ25lZCBs b25nIG9wY29kZTsKICAgIHVuc2lnbmVkIGxvbmcgdW5pcXVlOwogICAgdW5zaWduZWQgbG9uZyBy ZXN1bHQ7Cn07CgoKc3RydWN0IGNvZGFfcm9vdF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hk ciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3Jvb3RfaW4gewogICAgc3Ry dWN0IGNvZGFfaW5faGRyIGluOwp9OwoKCnN0cnVjdCBjb2RhX29wZW5faW4gewogICAgc3RydWN0 IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3Ry dWN0IGNvZGFfb3Blbl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHVfcXVh ZF90IGRldjsKICAgIGlub190IGlub2RlOwp9OwoKCgpzdHJ1Y3QgY29kYV9zdG9yZV9pbiB7CiAg ICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7 Cn07CgpzdHJ1Y3QgY29kYV9zdG9yZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7 Cn07CgoKc3RydWN0IGNvZGFfcmVsZWFzZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7 CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9yZWxlYXNl X291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9jbG9z ZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBp bnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9jbG9zZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0 X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfaW9jdGxfaW4gewogICAgc3RydWN0IGNvZGFfaW5f aGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGNtZDsKICAgIGludCBsZW47CiAgICBp bnQgcndmbGFnOwogICAgY2hhciAqZGF0YTsKfTsKCnN0cnVjdCBjb2RhX2lvY3RsX291dCB7CiAg ICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgaW50IGxlbjsKICAgIGNhZGRyX3QgZGF0YTsK fTsKCgoKc3RydWN0IGNvZGFfZ2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7 CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9nZXRhdHRyX291dCB7CiAgICBzdHJ1 Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKfTsKCgoKc3Ry dWN0IGNvZGFfc2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNl RmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwp9OwoKc3RydWN0IGNvZGFfc2V0 YXR0cl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFf YWNjZXNzX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsK ICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX2FjY2Vzc19vdXQgewogICAgc3RydWN0IGNv ZGFfb3V0X2hkciBvdXQ7Cn07CgoKCgoKCgpzdHJ1Y3QgY29kYV9sb29rdXBfaW4gewogICAgc3Ry dWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IG5hbWU7CiAgICBp bnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9sb29rdXBfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291 dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgdnR5cGU7Cn07CgoKCnN0cnVjdCBj b2RhX2NyZWF0ZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZG aWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IGV4Y2w7CiAgICBpbnQgbW9k ZTsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfY3JlYXRlX291dCB7CiAgICBzdHJ1Y3Qg Y29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0dHIg YXR0cjsKfTsKCgoKc3RydWN0IGNvZGFfcmVtb3ZlX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hk ciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfcmVt b3ZlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9s aW5rX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgc291cmNlRmlk OwogICAgVmljZUZpZCBkZXN0RmlkOwogICAgaW50IHRuYW1lOwp9OwoKc3RydWN0IGNvZGFfbGlu a19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKCnN0cnVjdCBjb2RhX3Jl bmFtZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIHNvdXJjZUZp ZDsKICAgIGludCBzcmNuYW1lOwogICAgVmljZUZpZCBkZXN0RmlkOwogICAgaW50IGRlc3RuYW1l Owp9OwoKc3RydWN0IGNvZGFfcmVuYW1lX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91 dDsKfTsKCgpzdHJ1Y3QgY29kYV9ta2Rpcl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7 CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IG5h bWU7Cn07CgpzdHJ1Y3QgY29kYV9ta2Rpcl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBv aDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7Cn07CgoKCnN0 cnVjdCBjb2RhX3JtZGlyX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VG aWQgVkZpZDsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfcm1kaXJfb3V0IHsKICAgIHN0 cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX3N5bWxpbmtfaW4gewogICAg c3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IHNyY25hbWU7 CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IHRuYW1lOwp9OwoKc3RydWN0IGNv ZGFfc3ltbGlua19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0 IGNvZGFfcmVhZGxpbmtfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZp ZCBWRmlkOwp9OwoKc3RydWN0IGNvZGFfcmVhZGxpbmtfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291 dF9oZHIgb2g7CiAgICBpbnQgY291bnQ7CiAgICBjYWRkcl90IGRhdGE7Cn07CgoKCnN0cnVjdCBj b2RhX2ZzeW5jX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZp ZDsKfTsKCnN0cnVjdCBjb2RhX2ZzeW5jX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91 dDsKfTsKCgpzdHJ1Y3QgY29kYV92Z2V0X2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsK ICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3ZnZXRfb3V0IHsKICAgIHN0cnVjdCBj b2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgdnR5cGU7Cn07CiMgNjE2 ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKc3RydWN0 IGNvZGFfcHVyZ2V1c2VyX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3Ry dWN0IGNvZGFfY3JlZCBjcmVkOwp9OwoKCgpzdHJ1Y3QgY29kYV96YXBmaWxlX291dCB7CiAgICBz dHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBDb2RhRmlkOwp9OwoKCgpzdHJ1Y3Qg Y29kYV96YXBkaXJfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlk IENvZGFGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3phcHZub2RlX291dCB7CiAgICBzdHJ1Y3QgY29k YV9vdXRfaGRyIG9oOwogICAgc3RydWN0IGNvZGFfY3JlZCBjcmVkOwogICAgVmljZUZpZCBWRmlk Owp9OwoKCgpzdHJ1Y3QgY29kYV9wdXJnZWZpZF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hk ciBvaDsKICAgIFZpY2VGaWQgQ29kYUZpZDsKfTsKCgoKc3RydWN0IGNvZGFfcmVwbGFjZV9vdXQg ewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgTmV3RmlkOwogICAgVmlj ZUZpZCBPbGRGaWQ7Cn07CgoKc3RydWN0IGNvZGFfb3Blbl9ieV9mZF9pbiB7CiAgICBzdHJ1Y3Qg Y29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1 Y3QgY29kYV9vcGVuX2J5X2ZkX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAg aW50IGZkOwoKCiAgICBzdHJ1Y3QgZmlsZSAqZmg7Cgp9OwoKCnN0cnVjdCBjb2RhX29wZW5fYnlf cGF0aF9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAg ICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhfb3V0IHsKICAgIHN0cnVj dCBjb2RhX291dF9oZHIgb2g7CiAgICAgICAgaW50IHBhdGg7Cn07CgoKc3RydWN0IGNvZGFfc3Rh dGZzX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpbjsKfTsKCnN0cnVjdCBjb2RhX3N0YXRm c19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHN0cnVjdCBjb2RhX3N0YXRm cyBzdGF0Owp9OwojIDcwMyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC9jb2RhLmgiCnVuaW9uIGlucHV0QXJncyB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAg ICBzdHJ1Y3QgY29kYV9vcGVuX2luIGNvZGFfb3BlbjsKICAgIHN0cnVjdCBjb2RhX3N0b3JlX2lu IGNvZGFfc3RvcmU7CiAgICBzdHJ1Y3QgY29kYV9yZWxlYXNlX2luIGNvZGFfcmVsZWFzZTsKICAg IHN0cnVjdCBjb2RhX2Nsb3NlX2luIGNvZGFfY2xvc2U7CiAgICBzdHJ1Y3QgY29kYV9pb2N0bF9p biBjb2RhX2lvY3RsOwogICAgc3RydWN0IGNvZGFfZ2V0YXR0cl9pbiBjb2RhX2dldGF0dHI7CiAg ICBzdHJ1Y3QgY29kYV9zZXRhdHRyX2luIGNvZGFfc2V0YXR0cjsKICAgIHN0cnVjdCBjb2RhX2Fj Y2Vzc19pbiBjb2RhX2FjY2VzczsKICAgIHN0cnVjdCBjb2RhX2xvb2t1cF9pbiBjb2RhX2xvb2t1 cDsKICAgIHN0cnVjdCBjb2RhX2NyZWF0ZV9pbiBjb2RhX2NyZWF0ZTsKICAgIHN0cnVjdCBjb2Rh X3JlbW92ZV9pbiBjb2RhX3JlbW92ZTsKICAgIHN0cnVjdCBjb2RhX2xpbmtfaW4gY29kYV9saW5r OwogICAgc3RydWN0IGNvZGFfcmVuYW1lX2luIGNvZGFfcmVuYW1lOwogICAgc3RydWN0IGNvZGFf bWtkaXJfaW4gY29kYV9ta2RpcjsKICAgIHN0cnVjdCBjb2RhX3JtZGlyX2luIGNvZGFfcm1kaXI7 CiAgICBzdHJ1Y3QgY29kYV9zeW1saW5rX2luIGNvZGFfc3ltbGluazsKICAgIHN0cnVjdCBjb2Rh X3JlYWRsaW5rX2luIGNvZGFfcmVhZGxpbms7CiAgICBzdHJ1Y3QgY29kYV9mc3luY19pbiBjb2Rh X2ZzeW5jOwogICAgc3RydWN0IGNvZGFfdmdldF9pbiBjb2RhX3ZnZXQ7CiAgICBzdHJ1Y3QgY29k YV9vcGVuX2J5X2ZkX2luIGNvZGFfb3Blbl9ieV9mZDsKICAgIHN0cnVjdCBjb2RhX29wZW5fYnlf cGF0aF9pbiBjb2RhX29wZW5fYnlfcGF0aDsKICAgIHN0cnVjdCBjb2RhX3N0YXRmc19pbiBjb2Rh X3N0YXRmczsKfTsKCnVuaW9uIG91dHB1dEFyZ3MgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBv aDsKICAgIHN0cnVjdCBjb2RhX3Jvb3Rfb3V0IGNvZGFfcm9vdDsKICAgIHN0cnVjdCBjb2RhX29w ZW5fb3V0IGNvZGFfb3BlbjsKICAgIHN0cnVjdCBjb2RhX2lvY3RsX291dCBjb2RhX2lvY3RsOwog ICAgc3RydWN0IGNvZGFfZ2V0YXR0cl9vdXQgY29kYV9nZXRhdHRyOwogICAgc3RydWN0IGNvZGFf bG9va3VwX291dCBjb2RhX2xvb2t1cDsKICAgIHN0cnVjdCBjb2RhX2NyZWF0ZV9vdXQgY29kYV9j cmVhdGU7CiAgICBzdHJ1Y3QgY29kYV9ta2Rpcl9vdXQgY29kYV9ta2RpcjsKICAgIHN0cnVjdCBj b2RhX3JlYWRsaW5rX291dCBjb2RhX3JlYWRsaW5rOwogICAgc3RydWN0IGNvZGFfdmdldF9vdXQg Y29kYV92Z2V0OwogICAgc3RydWN0IGNvZGFfcHVyZ2V1c2VyX291dCBjb2RhX3B1cmdldXNlcjsK ICAgIHN0cnVjdCBjb2RhX3phcGZpbGVfb3V0IGNvZGFfemFwZmlsZTsKICAgIHN0cnVjdCBjb2Rh X3phcGRpcl9vdXQgY29kYV96YXBkaXI7CiAgICBzdHJ1Y3QgY29kYV96YXB2bm9kZV9vdXQgY29k YV96YXB2bm9kZTsKICAgIHN0cnVjdCBjb2RhX3B1cmdlZmlkX291dCBjb2RhX3B1cmdlZmlkOwog ICAgc3RydWN0IGNvZGFfcmVwbGFjZV9vdXQgY29kYV9yZXBsYWNlOwogICAgc3RydWN0IGNvZGFf b3Blbl9ieV9mZF9vdXQgY29kYV9vcGVuX2J5X2ZkOwogICAgc3RydWN0IGNvZGFfb3Blbl9ieV9w YXRoX291dCBjb2RhX29wZW5fYnlfcGF0aDsKICAgIHN0cnVjdCBjb2RhX3N0YXRmc19vdXQgY29k YV9zdGF0ZnM7Cn07Cgp1bmlvbiBjb2RhX2Rvd25jYWxscyB7CgoKICAgIHN0cnVjdCBjb2RhX3B1 cmdldXNlcl9vdXQgcHVyZ2V1c2VyOwogICAgc3RydWN0IGNvZGFfemFwZmlsZV9vdXQgemFwZmls ZTsKICAgIHN0cnVjdCBjb2RhX3phcGRpcl9vdXQgemFwZGlyOwogICAgc3RydWN0IGNvZGFfemFw dm5vZGVfb3V0IHphcHZub2RlOwogICAgc3RydWN0IGNvZGFfcHVyZ2VmaWRfb3V0IHB1cmdlZmlk OwogICAgc3RydWN0IGNvZGFfcmVwbGFjZV9vdXQgcmVwbGFjZTsKfTsKCgoKCgoKCnN0cnVjdCBW aWNlSW9jdGwgewogICAgICAgIGNhZGRyX3QgaW4sIG91dDsKICAgICAgICBzaG9ydCBpbl9zaXpl OwogICAgICAgIHNob3J0IG91dF9zaXplOwp9OwoKc3RydWN0IFBpb2N0bERhdGEgewogICAgICAg IGNvbnN0IGNoYXIgKnBhdGg7CiAgICAgICAgaW50IGZvbGxvdzsKICAgICAgICBzdHJ1Y3QgVmlj ZUlvY3RsIHZpOwp9OwojIDc5NyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s aW51eC9jb2RhLmgiCnN0cnVjdCBjb2RhX21vdW50X2RhdGEgewogICAgICAgIGludCB2ZXJzaW9u OwogICAgICAgIGludCBmZDsKfTsKIyAxNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9jb2RhX2ZzX2kuaCIgMgoKCgoKc3RydWN0IGNvZGFfaW5vZGVfaW5mbyB7CiAg ICAgICAgc3RydWN0IFZpY2VGaWQgY19maWQ7CiAgICAgICAgdV9zaG9ydCBjX2ZsYWdzOwogICAg ICAgIHN0cnVjdCBsaXN0X2hlYWQgY19jaWxpc3Q7CiAgICAgICAgc3RydWN0IGZpbGUgKmNfY29u dGFpbmVyOwogICAgICAgIHVuc2lnbmVkIGludCBjX2NvbnRjb3VudDsKICAgICAgICBzdHJ1Y3Qg Y29kYV9jcmVkIGNfY2FjaGVkX2NyZWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGNfY2FjaGVkX3Bl cm07Cn07CgoKCgoKCgppbnQgY29kYV9jbm9kZV9tYWtlKHN0cnVjdCBpbm9kZSAqKiwgc3RydWN0 IFZpY2VGaWQgKiwgc3RydWN0IHN1cGVyX2Jsb2NrICopOwppbnQgY29kYV9jbm9kZV9tYWtlY3Rs KHN0cnVjdCBpbm9kZSAqKmlub2RlLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKc3RydWN0IGlu b2RlICpjb2RhX2ZpZF90b19pbm9kZShWaWNlRmlkICpmaWQsIHN0cnVjdCBzdXBlcl9ibG9jayAq c2IpOwp2b2lkIGNvZGFfcmVwbGFjZV9maWQoc3RydWN0IGlub2RlICosIFZpY2VGaWQgKiwgVmlj ZUZpZCAqKTsKIyAzMDIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv ZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcm9t ZnNfZnNfaS5oIiAxCgoKCgoKc3RydWN0IHJvbWZzX2lub2RlX2luZm8gewogICAgICAgIHVuc2ln bmVkIGxvbmcgaV9tZXRhc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfZGF0YW9mZnNldDsK fTsKIyAzMDMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIg MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2htZW1fZnMu aCIgMQojIDE2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NobWVt X2ZzLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIHZhbDsKfSBzd3Bf ZW50cnlfdDsKCnN0cnVjdCBzaG1lbV9pbm9kZV9pbmZvIHsKICAgICAgICBzcGlubG9ja190IGxv Y2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtYXhfaW5kZXg7CiAgICAgICAgc3dwX2VudHJ5X3Qg aV9kaXJlY3RbMTZdOwogICAgICAgIHN3cF9lbnRyeV90ICoqaV9pbmRpcmVjdDsKICAgICAgICB1 bnNpZ25lZCBsb25nIHN3YXBwZWQ7CiAgICAgICAgaW50IGxvY2tlZDsKICAgICAgICBzdHJ1Y3Qg bGlzdF9oZWFkIGxpc3Q7Cn07CgpzdHJ1Y3Qgc2htZW1fc2JfaW5mbyB7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBtYXhfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZV9ibG9ja3M7CiAg ICAgICAgdW5zaWduZWQgbG9uZyBtYXhfaW5vZGVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJl ZV9pbm9kZXM7CiAgICAgICAgc3BpbmxvY2tfdCBzdGF0X2xvY2s7Cn07CiMgMzA0ICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NtYl9mc19pLmgiIDEKIyAxMyAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zbWJfZnNfaS5oIgojIDEgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDE0ICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NtYl9mc19pLmgiIDIKCgoKCnN0 cnVjdCBzbWJfaW5vZGVfaW5mbyB7CgoKCgoKICAgICAgICB1bnNpZ25lZCBpbnQgb3BlbjsKICAg ICAgICBfX3UxNiBmaWxlaWQ7CiAgICAgICAgX191MTYgYXR0cjsKCiAgICAgICAgX191MTYgYWNj ZXNzOwogICAgICAgIF9fdTE2IGZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkbXRpbWU7 CiAgICAgICAgdW5zaWduZWQgbG9uZyBjbG9zZWQ7CiAgICAgICAgdW5zaWduZWQgb3BlbmVyczsK fTsKIyAzMDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIg MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaGZzX2ZzX2ku aCIgMQojIDE5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2hmc19m c19pLmgiCnN0cnVjdCBoZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgaW50IG1hZ2ljOwoKICAgICAg ICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIHN0cnVjdCBoZnNfY2F0X2VudHJ5 ICplbnRyeTsKCgogICAgICAgIHN0cnVjdCBoZnNfZm9yayAqZm9yazsKICAgICAgICBpbnQgY29u dmVydDsKCgogICAgICAgIGlub190IGZpbGVfdHlwZTsKICAgICAgICBjaGFyIGRpcl9zaXplOwoK CiAgICAgICAgY29uc3Qgc3RydWN0IGhmc19oZHJfbGF5b3V0ICpkZWZhdWx0X2xheW91dDsKICAg ICAgICBzdHJ1Y3QgaGZzX2hkcl9sYXlvdXQgKmxheW91dDsKCgogICAgICAgIGludCB0el9zZWNv bmRzd2VzdDsKCgogICAgICAgIHZvaWQgKCpkX2Ryb3Bfb3ApKHN0cnVjdCBkZW50cnkgKiwgY29u c3QgaW5vX3QpOwp9OwojIDMwNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s aW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC9hZGZzX2ZzX2kuaCIgMQojIDEzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L2FkZnNfZnNfaS5oIgpzdHJ1Y3QgYWRmc19pbm9kZV9pbmZvIHsKICAgICAgICB1bnNp Z25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcGFyZW50X2lkOwog ICAgICAgIF9fdTMyIGxvYWRhZGRyOwogICAgICAgIF9fdTMyIGV4ZWNhZGRyOwogICAgICAgIHVu c2lnbmVkIGludCBmaWxldHlwZTsKICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cjsKICAgICAgICBp bnQgc3RhbXBlZDoxOwp9OwojIDMwNyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s aW51eC9xbng0X2ZzX2kuaCIgMQojIDE0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L3FueDRfZnNfaS5oIgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvcW54dHlwZXMuaCIgMQojIDE1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L3FueHR5cGVzLmgiCnR5cGVkZWYgX191MTYgcW54NF9ueHRudF90Owp0 eXBlZGVmIF9fdTggcW54NF9mdHlwZV90OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIF9fdTMy IHh0bnRfYmxrOwogICAgICAgIF9fdTMyIHh0bnRfc2l6ZTsKfSBxbng0X3h0bnRfdDsKCnR5cGVk ZWYgX191MTYgcW54NF9tb2RlX3Q7CnR5cGVkZWYgX191MTYgcW54NF9tdWlkX3Q7CnR5cGVkZWYg X191MTYgcW54NF9tZ2lkX3Q7CnR5cGVkZWYgX191MzIgcW54NF9vZmZfdDsKdHlwZWRlZiBfX3Ux NiBxbng0X25saW5rX3Q7CiMgMTUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvcW54NF9mc19pLmgiIDIKCgoKCnN0cnVjdCBxbng0X2lub2RlX2luZm8gewogICAgICAg IGNoYXIgaV9yZXNlcnZlZFsxNl07CiAgICAgICAgcW54NF9vZmZfdCBpX3NpemU7CiAgICAgICAg cW54NF94dG50X3QgaV9maXJzdF94dG50OwogICAgICAgIF9fdTMyIGlfeGJsazsKICAgICAgICBf X3MzMiBpX2Z0aW1lOwogICAgICAgIF9fczMyIGlfbXRpbWU7CiAgICAgICAgX19zMzIgaV9hdGlt ZTsKICAgICAgICBfX3MzMiBpX2N0aW1lOwogICAgICAgIHFueDRfbnh0bnRfdCBpX251bV94dG50 czsKICAgICAgICBxbng0X21vZGVfdCBpX21vZGU7CiAgICAgICAgcW54NF9tdWlkX3QgaV91aWQ7 CiAgICAgICAgcW54NF9tZ2lkX3QgaV9naWQ7CiAgICAgICAgcW54NF9ubGlua190IGlfbmxpbms7 CiAgICAgICAgX191OCBpX3plcm9bNF07CiAgICAgICAgcW54NF9mdHlwZV90IGlfdHlwZTsKICAg ICAgICBfX3U4IGlfc3RhdHVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7Cn07 CiMgMzA4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2Zz X2kuaCIgMQoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv bGlzdC5oIiAxCiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9y ZWlzZXJmc19mc19pLmgiIDIKCnN0cnVjdCByZWlzZXJmc19pbm9kZV9pbmZvIHsKICBfX3UzMiBp X2tleSBbNF07CgoKCgoKCiAgaW50IGlfdmVyc2lvbjsKCiAgaW50IGlfcGFja19vbl9jbG9zZSA7 CgogIF9fdTMyIGlfZmlyc3RfZGlyZWN0X2J5dGU7CiMgMzUgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfaS5oIgogIGludCBpX3ByZWFsbG9jX2Js b2NrOwogIGludCBpX3ByZWFsbG9jX2NvdW50OwogIHN0cnVjdCBsaXN0X2hlYWQgaV9wcmVhbGxv Y19saXN0OwoKCgoKICBpbnQgbm9wYWNrOwp9OwojIDMwOSAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9iZnNfZnNfaS5oIiAxCiMgMTIgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvYmZzX2ZzX2kuaCIKc3RydWN0IGJmc19pbm9kZV9pbmZvIHsK ICAgICAgICB1bnNpZ25lZCBsb25nIGlfZHNrX2lubzsKICAgICAgICB1bnNpZ25lZCBsb25nIGlf c2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9lYmxvY2s7Cn07CiMgMzEwICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3VkZl9mc19pLmgiIDEKIyAyNCAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC91ZGZfZnNfaS5oIgp0eXBlZGVmIHN0 cnVjdAp7CiAgICAgICAgX191MzIgbG9naWNhbEJsb2NrTnVtOwogICAgICAgIF9fdTE2IHBhcnRp dGlvblJlZmVyZW5jZU51bTsKfSBsYl9hZGRyOwoKCnN0cnVjdCB1ZGZfaW5vZGVfaW5mbwp7CiAg ICAgICAgbG9uZyBpX3VtdGltZTsKICAgICAgICBsb25nIGlfdWN0aW1lOwogICAgICAgIGxvbmcg aV9jcnRpbWU7CiAgICAgICAgbG9uZyBpX3VjcnRpbWU7CgogICAgICAgIGxiX2FkZHIgaV9sb2Nh dGlvbjsKICAgICAgICBfX3U2NCBpX3VuaXF1ZTsKICAgICAgICBfX3UzMiBpX2xlbkVBdHRyOwog ICAgICAgIF9fdTMyIGlfbGVuQWxsb2M7CiAgICAgICAgX191NjQgaV9sZW5FeHRlbnRzOwogICAg ICAgIF9fdTMyIGlfbmV4dF9hbGxvY19ibG9jazsKICAgICAgICBfX3UzMiBpX25leHRfYWxsb2Nf Z29hbDsKICAgICAgICB1bnNpZ25lZCBpX2FsbG9jX3R5cGUgOiAzOwogICAgICAgIHVuc2lnbmVk IGlfZXh0ZW5kZWRfZmUgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfc3RyYXRfNDA5NiA6IDE7CiAg ICAgICAgdW5zaWduZWQgaV9uZXdfaW5vZGUgOiAxOwogICAgICAgIHVuc2lnbmVkIHJlc2VydmVk IDogMjY7Cn07CiMgMzExICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L25j cF9mc19pLmgiIDEKIyAxNyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC9uY3BfZnNfaS5oIgpzdHJ1Y3QgbmNwX2lub2RlX2luZm8gewogICAgICAgIF9fdTMyIGRpckVu dE51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBEb3NEaXJOdW0gX19h dHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgdm9sTnVtYmVyIF9fYXR0cmlidXRl X18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG53YXR0cjsKICAgICAgICBzdHJ1Y3Qgc2VtYXBo b3JlIG9wZW5fc2VtOwogICAgICAgIGF0b21pY190IG9wZW5lZDsKICAgICAgICBpbnQgYWNjZXNz OwogICAgICAgIF9fdTMyIHNlcnZlcl9maWxlX2hhbmRsZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp KTsKICAgICAgICBfX3U4IG9wZW5fY3JlYXRlX2FjdGlvbiBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp KTsKICAgICAgICBfX3U4IGZpbGVfaGFuZGxlWzZdIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwp9 OwojIDMxMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAy CiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9wcm9jX2ZzX2ku aCIgMQpzdHJ1Y3QgcHJvY19pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnRhc2s7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAg aW50ICgqcHJvY19nZXRfbGluaykoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiosIHN0 cnVjdCB2ZnNtb3VudCAqKik7CiAgICAgICAgICAgICAgICBpbnQgKCpwcm9jX3JlYWQpKHN0cnVj dCB0YXNrX3N0cnVjdCAqdGFzaywgY2hhciAqcGFnZSk7CiAgICAgICAgfSBvcDsKICAgICAgICBz dHJ1Y3QgZmlsZSAqZmlsZTsKfTsKIyAzMTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvdXNiZGV2X2ZzX2kuaCIgMQpzdHJ1Y3QgdXNiX2RldmljZTsKc3RydWN0IHVzYl9i dXM7CgpzdHJ1Y3QgdXNiZGV2X2lub2RlX2luZm8gewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg ZGxpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzbGlzdDsKICAgICAgICB1bmlvbiB7CiAg ICAgICAgICAgICAgICBzdHJ1Y3QgdXNiX2RldmljZSAqZGV2OwogICAgICAgICAgICAgICAgc3Ry dWN0IHVzYl9idXMgKmJ1czsKICAgICAgICB9IHA7Cn07CiMgMzE0ICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIgMQojIDE2ICIvdXNyL3NyYy9ydWRv L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIKc3RydWN0IGpmZnMyX2lu b2RlX2luZm8gewojIDI2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L2pmZnMyX2ZzX2kuaCIKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKCgogICAgICAgIF9f dTMyIGhpZ2hlc3RfdmVyc2lvbjsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9ub2RlX2ZyYWcgKmZy YWdsaXN0OwoKCgoKCgogICAgICAgIHN0cnVjdCBqZmZzMl9mdWxsX2Rub2RlICptZXRhZGF0YTsK CgogICAgICAgIHN0cnVjdCBqZmZzMl9mdWxsX2RpcmVudCAqZGVudHM7CgoKICAgICAgICBzdHJ1 Y3QgamZmczJfaW5vZGVfY2FjaGUgKmlub2NhY2hlOwoKCgoKCiAgICAgICAgX191MTYgZmxhZ3M7 CiAgICAgICAgX191OCB1c2VyY29tcHI7Cn07CiMgMzE1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L2NyYW1mc19mc19zYi5oIiAxCgoKCgoKCnN0cnVjdCBjcmFtZnNfc2Jf aW5mbyB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWFnaWM7CiAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZTsKICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBibG9ja3M7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgZmlsZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxh Z3M7Cn07CiMgMzE2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2Zz LmgiIDIKIyAzNDIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMu aCIKc3RydWN0IGlhdHRyIHsKICAgICAgICB1bnNpZ25lZCBpbnQgaWFfdmFsaWQ7CiAgICAgICAg dW1vZGVfdCBpYV9tb2RlOwogICAgICAgIHVpZF90IGlhX3VpZDsKICAgICAgICBnaWRfdCBpYV9n aWQ7CiAgICAgICAgbG9mZl90IGlhX3NpemU7CiAgICAgICAgdGltZV90IGlhX2F0aW1lOwogICAg ICAgIHRpbWVfdCBpYV9tdGltZTsKICAgICAgICB0aW1lX3QgaWFfY3RpbWU7CiAgICAgICAgdW5z aWduZWQgaW50IGlhX2F0dHJfZmxhZ3M7Cn07CiMgMzY2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9xdW90YS5oIiAxCiMgNDIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvbGludXgvcXVvdGEuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p bmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEKIyA0MyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9xdW90YS5oIiAyCiMgODQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvbGludXgvcXVvdGEuaCIKZXh0ZXJuIGludCBucl9kcXVvdHMsIG5yX2ZyZWVfZHF1 b3RzOwpleHRlcm4gaW50IG1heF9kcXVvdHM7CmV4dGVybiBpbnQgZHF1b3Rfcm9vdF9zcXVhc2g7 CiMgMTE2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3F1b3RhLmgi CnN0cnVjdCBkcWJsayB7CiAgICAgICAgX191MzIgZHFiX2JoYXJkbGltaXQ7CiAgICAgICAgX191 MzIgZHFiX2Jzb2Z0bGltaXQ7CiAgICAgICAgX191MzIgZHFiX2N1cmJsb2NrczsKICAgICAgICBf X3UzMiBkcWJfaWhhcmRsaW1pdDsKICAgICAgICBfX3UzMiBkcWJfaXNvZnRsaW1pdDsKICAgICAg ICBfX3UzMiBkcWJfY3VyaW5vZGVzOwogICAgICAgIHRpbWVfdCBkcWJfYnRpbWU7CiAgICAgICAg dGltZV90IGRxYl9pdGltZTsKfTsKIyAxNDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvcXVvdGEuaCIKc3RydWN0IGRxc3RhdHMgewogICAgICAgIF9fdTMyIGxvb2t1 cHM7CiAgICAgICAgX191MzIgZHJvcHM7CiAgICAgICAgX191MzIgcmVhZHM7CiAgICAgICAgX191 MzIgd3JpdGVzOwogICAgICAgIF9fdTMyIGNhY2hlX2hpdHM7CiAgICAgICAgX191MzIgYWxsb2Nh dGVkX2RxdW90czsKICAgICAgICBfX3UzMiBmcmVlX2RxdW90czsKICAgICAgICBfX3UzMiBzeW5j czsKfTsKIyAxNjcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcXVv dGEuaCIKc3RydWN0IGRxdW90IHsKICAgICAgICBzdHJ1Y3QgZHF1b3QgKmRxX25leHQ7CiAgICAg ICAgc3RydWN0IGRxdW90ICoqZHFfcHByZXY7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkcV9m cmVlOwogICAgICAgIHN0cnVjdCBkcXVvdCAqZHFfaGFzaF9uZXh0OwogICAgICAgIHN0cnVjdCBk cXVvdCAqKmRxX2hhc2hfcHByZXY7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZHFfd2FpdDsK ICAgICAgICBpbnQgZHFfY291bnQ7CgoKICAgICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmRxX3Ni OwogICAgICAgIHVuc2lnbmVkIGludCBkcV9pZDsKICAgICAgICBrZGV2X3QgZHFfZGV2OwogICAg ICAgIHNob3J0IGRxX3R5cGU7CiAgICAgICAgc2hvcnQgZHFfZmxhZ3M7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBkcV9yZWZlcmVuY2VkOwoKICAgICAgICBzdHJ1Y3QgZHFibGsgZHFfZHFiOwp9Owoj IDM2NyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMg MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tb3VudC5oIiAxCiMg MzY4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCgoK CnN0cnVjdCBwYWdlOwpzdHJ1Y3QgYWRkcmVzc19zcGFjZTsKc3RydWN0IGtpb2J1ZjsKCnN0cnVj dCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgewogICAgICAgIGludCAoKndyaXRlcGFnZSkoc3Ry dWN0IHBhZ2UgKik7CiAgICAgICAgaW50ICgqcmVhZHBhZ2UpKHN0cnVjdCBmaWxlICosIHN0cnVj dCBwYWdlICopOwogICAgICAgIGludCAoKnN5bmNfcGFnZSkoc3RydWN0IHBhZ2UgKik7CiAgICAg ICAgaW50ICgqcHJlcGFyZV93cml0ZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5z aWduZWQsIHVuc2lnbmVkKTsKICAgICAgICBpbnQgKCpjb21taXRfd3JpdGUpKHN0cnVjdCBmaWxl ICosIHN0cnVjdCBwYWdlICosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CgogICAgICAgIGludCAoKmJt YXBfUmJkNDQ3NmM0KShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBsb25nKTsKCiAgICAgICAgaW50 ICgqZGlyZWN0X0lPKShpbnQsIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qga2lvYnVmICosIHVuc2ln bmVkIGxvbmcsIGludCk7Cn07CgpzdHJ1Y3QgYWRkcmVzc19zcGFjZSB7CiAgICAgICAgc3RydWN0 IGxpc3RfaGVhZCBjbGVhbl9wYWdlczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5X3Bh Z2VzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbG9ja2VkX3BhZ2VzOwogICAgICAgIHVuc2ln bmVkIGxvbmcgbnJwYWdlczsKICAgICAgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25z ICphX29wczsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmhvc3Q7CiAgICAgICAgc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICppX21tYXA7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICppX21tYXBf c2hhcmVkOwogICAgICAgIHNwaW5sb2NrX3QgaV9zaGFyZWRfbG9jazsKICAgICAgICBpbnQgZ2Zw X21hc2s7Cn07CgpzdHJ1Y3QgY2hhcl9kZXZpY2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg aGFzaDsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICBkZXZfdCBkZXY7CiAgICAgICAg YXRvbWljX3Qgb3BlbmVyczsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKfTsKCnN0cnVj dCBibG9ja19kZXZpY2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmRfaGFzaDsKICAgICAg ICBhdG9taWNfdCBiZF9jb3VudDsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBiZF9pbm9kZTsKICAg ICAgICBkZXZfdCBiZF9kZXY7CiAgICAgICAgaW50IGJkX29wZW5lcnM7CiAgICAgICAgY29uc3Qg c3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zICpiZF9vcDsKICAgICAgICBzdHJ1Y3Qgc2Vt YXBob3JlIGJkX3NlbTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJkX2lub2RlczsKfTsKCnN0 cnVjdCBpbm9kZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2hhc2g7CiAgICAgICAgc3Ry dWN0IGxpc3RfaGVhZCBpX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2RlbnRyeTsK CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2RpcnR5X2J1ZmZlcnM7CiAgICAgICAgc3RydWN0 IGxpc3RfaGVhZCBpX2RpcnR5X2RhdGFfYnVmZmVyczsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBp X2lubzsKICAgICAgICBhdG9taWNfdCBpX2NvdW50OwogICAgICAgIGtkZXZfdCBpX2RldjsKICAg ICAgICB1bW9kZV90IGlfbW9kZTsKICAgICAgICBubGlua190IGlfbmxpbms7CiAgICAgICAgdWlk X3QgaV91aWQ7CiAgICAgICAgZ2lkX3QgaV9naWQ7CiAgICAgICAga2Rldl90IGlfcmRldjsKICAg ICAgICBsb2ZmX3QgaV9zaXplOwogICAgICAgIHRpbWVfdCBpX2F0aW1lOwogICAgICAgIHRpbWVf dCBpX210aW1lOwogICAgICAgIHRpbWVfdCBpX2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcg aV9ibGtzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9ibG9ja3M7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBpX3ZlcnNpb247CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBpX3NlbTsKICAgICAg ICBzdHJ1Y3Qgc2VtYXBob3JlIGlfem9tYmllOwogICAgICAgIHN0cnVjdCBpbm9kZV9vcGVyYXRp b25zICppX29wOwogICAgICAgIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmlfZm9wOwogICAgICAg IHN0cnVjdCBzdXBlcl9ibG9jayAqaV9zYjsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBpX3dh aXQ7CiAgICAgICAgc3RydWN0IGZpbGVfbG9jayAqaV9mbG9jazsKICAgICAgICBzdHJ1Y3QgYWRk cmVzc19zcGFjZSAqaV9tYXBwaW5nOwogICAgICAgIHN0cnVjdCBhZGRyZXNzX3NwYWNlIGlfZGF0 YTsKICAgICAgICBzdHJ1Y3QgZHF1b3QgKmlfZHF1b3RbMl07CgogICAgICAgIHN0cnVjdCBsaXN0 X2hlYWQgaV9kZXZpY2VzOwogICAgICAgIHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKmlfcGlwZTsK ICAgICAgICBzdHJ1Y3QgYmxvY2tfZGV2aWNlICppX2JkZXY7CiAgICAgICAgc3RydWN0IGNoYXJf ZGV2aWNlICppX2NkZXY7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9kbm90aWZ5X21hc2s7CiAg ICAgICAgc3RydWN0IGRub3RpZnlfc3RydWN0ICppX2Rub3RpZnk7CgogICAgICAgIHVuc2lnbmVk IGxvbmcgaV9zdGF0ZTsKCiAgICAgICAgdW5zaWduZWQgaW50IGlfZmxhZ3M7CiAgICAgICAgdW5z aWduZWQgY2hhciBpX3NvY2s7CgogICAgICAgIGF0b21pY190IGlfd3JpdGVjb3VudDsKICAgICAg ICB1bnNpZ25lZCBpbnQgaV9hdHRyX2ZsYWdzOwogICAgICAgIF9fdTMyIGlfZ2VuZXJhdGlvbjsK ICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbWluaXhfaW5vZGVfaW5mbyBt aW5peF9pOwogICAgICAgICAgICAgICAgc3RydWN0IGV4dDJfaW5vZGVfaW5mbyBleHQyX2k7CiAg ICAgICAgICAgICAgICBzdHJ1Y3QgaHBmc19pbm9kZV9pbmZvIGhwZnNfaTsKICAgICAgICAgICAg ICAgIHN0cnVjdCBudGZzX2lub2RlX2luZm8gbnRmc19pOwogICAgICAgICAgICAgICAgc3RydWN0 IG1zZG9zX2lub2RlX2luZm8gbXNkb3NfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCB1bXNkb3Nf aW5vZGVfaW5mbyB1bXNkb3NfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBpc29faW5vZGVfaW5m byBpc29mc19pOwogICAgICAgICAgICAgICAgc3RydWN0IG5mc19pbm9kZV9pbmZvIG5mc19pOwog ICAgICAgICAgICAgICAgc3RydWN0IHN5c3ZfaW5vZGVfaW5mbyBzeXN2X2k7CiAgICAgICAgICAg ICAgICBzdHJ1Y3QgYWZmc19pbm9kZV9pbmZvIGFmZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVj dCB1ZnNfaW5vZGVfaW5mbyB1ZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBlZnNfaW5vZGVf aW5mbyBlZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCByb21mc19pbm9kZV9pbmZvIHJvbWZz X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2htZW1faW5vZGVfaW5mbyBzaG1lbV9pOwogICAg ICAgICAgICAgICAgc3RydWN0IGNvZGFfaW5vZGVfaW5mbyBjb2RhX2k7CiAgICAgICAgICAgICAg ICBzdHJ1Y3Qgc21iX2lub2RlX2luZm8gc21iZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBo ZnNfaW5vZGVfaW5mbyBoZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBhZGZzX2lub2RlX2lu Zm8gYWRmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHFueDRfaW5vZGVfaW5mbyBxbng0X2k7 CiAgICAgICAgICAgICAgICBzdHJ1Y3QgcmVpc2VyZnNfaW5vZGVfaW5mbyByZWlzZXJmc19pOwog ICAgICAgICAgICAgICAgc3RydWN0IGJmc19pbm9kZV9pbmZvIGJmc19pOwogICAgICAgICAgICAg ICAgc3RydWN0IHVkZl9pbm9kZV9pbmZvIHVkZl9pOwogICAgICAgICAgICAgICAgc3RydWN0IG5j cF9pbm9kZV9pbmZvIG5jcGZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgcHJvY19pbm9kZV9p bmZvIHByb2NfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrZXQgc29ja2V0X2k7CiAgICAg ICAgICAgICAgICBzdHJ1Y3QgdXNiZGV2X2lub2RlX2luZm8gdXNiZGV2X2k7CiAgICAgICAgICAg ICAgICBzdHJ1Y3QgamZmczJfaW5vZGVfaW5mbyBqZmZzMl9pOwogICAgICAgICAgICAgICAgdm9p ZCAqZ2VuZXJpY19pcDsKICAgICAgICB9IHU7Cn07CgpzdHJ1Y3QgZm93bl9zdHJ1Y3QgewogICAg ICAgIGludCBwaWQ7CiAgICAgICAgdWlkX3QgdWlkLCBldWlkOwogICAgICAgIGludCBzaWdudW07 Cn07CgpzdHJ1Y3QgZmlsZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBmX2xpc3Q7CiAgICAg ICAgc3RydWN0IGRlbnRyeSAqZl9kZW50cnk7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICpmX3Zm c21udDsKICAgICAgICBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmX29wOwogICAgICAgIGF0b21p Y190IGZfY291bnQ7CiAgICAgICAgdW5zaWduZWQgaW50IGZfZmxhZ3M7CiAgICAgICAgbW9kZV90 IGZfbW9kZTsKICAgICAgICBsb2ZmX3QgZl9wb3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmX3Jl YWRhLCBmX3JhbWF4LCBmX3JhZW5kLCBmX3JhbGVuLCBmX3Jhd2luOwogICAgICAgIHN0cnVjdCBm b3duX3N0cnVjdCBmX293bmVyOwogICAgICAgIHVuc2lnbmVkIGludCBmX3VpZCwgZl9naWQ7CiAg ICAgICAgaW50IGZfZXJyb3I7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgZl92ZXJzaW9uOwoKCiAg ICAgICAgdm9pZCAqcHJpdmF0ZV9kYXRhOwoKCiAgICAgICAgc3RydWN0IGtpb2J1ZiAqZl9pb2J1 ZjsKICAgICAgICBsb25nIGZfaW9idWZfbG9jazsKfTsKZXh0ZXJuIHNwaW5sb2NrX3QgZmlsZXNf bG9ja19SZjllZmIxNmE7CgoKCgoKCmV4dGVybiBpbnQgaW5pdF9wcml2YXRlX2ZpbGVfUjNiMTM4 NWI5KHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwgaW50KTsKIyA1NTYgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIKdHlwZWRlZiBzdHJ1Y3QgZmls ZXNfc3RydWN0ICpmbF9vd25lcl90OwoKc3RydWN0IGZpbGVfbG9jayB7CiAgICAgICAgc3RydWN0 IGZpbGVfbG9jayAqZmxfbmV4dDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZsX2xpbms7CiAg ICAgICAgc3RydWN0IGxpc3RfaGVhZCBmbF9ibG9jazsKICAgICAgICBmbF9vd25lcl90IGZsX293 bmVyOwogICAgICAgIHVuc2lnbmVkIGludCBmbF9waWQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFk X3QgZmxfd2FpdDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmxfZmlsZTsKICAgICAgICB1bnNpZ25l ZCBjaGFyIGZsX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZmxfdHlwZTsKICAgICAgICBs b2ZmX3QgZmxfc3RhcnQ7CiAgICAgICAgbG9mZl90IGZsX2VuZDsKCiAgICAgICAgdm9pZCAoKmZs X25vdGlmeSkoc3RydWN0IGZpbGVfbG9jayAqKTsKICAgICAgICB2b2lkICgqZmxfaW5zZXJ0KShz dHJ1Y3QgZmlsZV9sb2NrICopOwogICAgICAgIHZvaWQgKCpmbF9yZW1vdmUpKHN0cnVjdCBmaWxl X2xvY2sgKik7CgogICAgICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0ICogZmxfZmFzeW5jOwoKICAg ICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmZzX2xvY2tfaW5mbyBuZnNfZmw7 CiAgICAgICAgfSBmbF91Owp9OwojIDU4OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9mcy5oIgpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBmaWxlX2xvY2tfbGlzdF9S NmU4NTExOWQ7CgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv ZmNudGwuaCIgMQoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNt L2ZjbnRsLmgiIDEKIyA2OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20v ZmNudGwuaCIKc3RydWN0IGZsb2NrIHsKICAgICAgICBzaG9ydCBsX3R5cGU7CiAgICAgICAgc2hv cnQgbF93aGVuY2U7CiAgICAgICAgb2ZmX3QgbF9zdGFydDsKICAgICAgICBvZmZfdCBsX2xlbjsK ICAgICAgICBwaWRfdCBsX3BpZDsKfTsKCnN0cnVjdCBmbG9jazY0IHsKICAgICAgICBzaG9ydCBs X3R5cGU7CiAgICAgICAgc2hvcnQgbF93aGVuY2U7CiAgICAgICAgbG9mZl90IGxfc3RhcnQ7CiAg ICAgICAgbG9mZl90IGxfbGVuOwogICAgICAgIHBpZF90IGxfcGlkOwp9OwojIDUgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZmNudGwuaCIgMgojIDU5MiAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCgpleHRlcm4gaW50IGZj bnRsX2dldGxrKHVuc2lnbmVkIGludCwgc3RydWN0IGZsb2NrICopOwpleHRlcm4gaW50IGZjbnRs X3NldGxrKHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50LCBzdHJ1Y3QgZmxvY2sgKik7CgpleHRl cm4gaW50IGZjbnRsX2dldGxrNjQodW5zaWduZWQgaW50LCBzdHJ1Y3QgZmxvY2s2NCAqKTsKZXh0 ZXJuIGludCBmY250bF9zZXRsazY0KHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50LCBzdHJ1Y3Qg ZmxvY2s2NCAqKTsKCgpleHRlcm4gdm9pZCBsb2Nrc19pbml0X2xvY2tfUjE1ZjQzYTg4KHN0cnVj dCBmaWxlX2xvY2sgKik7CmV4dGVybiB2b2lkIGxvY2tzX2NvcHlfbG9ja19SMjUwZDc0YzQoc3Ry dWN0IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gdm9pZCBsb2Nrc19y ZW1vdmVfcG9zaXgoc3RydWN0IGZpbGUgKiwgZmxfb3duZXJfdCk7CmV4dGVybiB2b2lkIGxvY2tz X3JlbW92ZV9mbG9jayhzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIHN0cnVjdCBmaWxlX2xvY2sgKnBv c2l4X3Rlc3RfbG9ja19SOTQ1ZDY2YTkoc3RydWN0IGZpbGUgKiwgc3RydWN0IGZpbGVfbG9jayAq KTsKZXh0ZXJuIGludCBwb3NpeF9sb2NrX2ZpbGVfUjgyZmZhODNkKHN0cnVjdCBmaWxlICosIHN0 cnVjdCBmaWxlX2xvY2sgKiwgdW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgcG9zaXhfYmxvY2tf bG9ja19SYzdlZDhhZTcoc3RydWN0IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpl eHRlcm4gdm9pZCBwb3NpeF91bmJsb2NrX2xvY2tfUmY4ZTNjMDBjKHN0cnVjdCBmaWxlX2xvY2sg Kik7CmV4dGVybiBpbnQgX19nZXRfbGVhc2VfUmYzOWYzYjc2KHN0cnVjdCBpbm9kZSAqaW5vZGUs IHVuc2lnbmVkIGludCBmbGFncyk7CmV4dGVybiB0aW1lX3QgbGVhc2VfZ2V0X210aW1lX1I0NDI2 NGY5OShzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgbG9ja19tYXlfcmVhZF9SMmE1YmJmNjco c3RydWN0IGlub2RlICosIGxvZmZfdCBzdGFydCwgdW5zaWduZWQgbG9uZyBjb3VudCk7CmV4dGVy biBpbnQgbG9ja19tYXlfd3JpdGVfUmYwY2RmZjc0KHN0cnVjdCBpbm9kZSAqLCBsb2ZmX3Qgc3Rh cnQsIHVuc2lnbmVkIGxvbmcgY291bnQpOwoKc3RydWN0IGZhc3luY19zdHJ1Y3QgewogICAgICAg IGludCBtYWdpYzsKICAgICAgICBpbnQgZmFfZmQ7CiAgICAgICAgc3RydWN0IGZhc3luY19zdHJ1 Y3QgKmZhX25leHQ7CiAgICAgICAgc3RydWN0IGZpbGUgKmZhX2ZpbGU7Cn07CgoKCgpleHRlcm4g aW50IGZhc3luY19oZWxwZXJfUjc5MDU4MzI0KGludCwgc3RydWN0IGZpbGUgKiwgaW50LCBzdHJ1 Y3QgZmFzeW5jX3N0cnVjdCAqKik7CgpleHRlcm4gdm9pZCBraWxsX2Zhc3luY19SZjE3MzhlZWUo c3RydWN0IGZhc3luY19zdHJ1Y3QgKiosIGludCwgaW50KTsKCmV4dGVybiB2b2lkIF9fa2lsbF9m YXN5bmNfUjRhOWFiMmIzKHN0cnVjdCBmYXN5bmNfc3RydWN0ICosIGludCwgaW50KTsKCnN0cnVj dCBuYW1laWRhdGEgewogICAgICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeTsKICAgICAgICBzdHJ1 Y3QgdmZzbW91bnQgKm1udDsKICAgICAgICBzdHJ1Y3QgcXN0ciBsYXN0OwogICAgICAgIHVuc2ln bmVkIGludCBmbGFnczsKICAgICAgICBpbnQgbGFzdF90eXBlOwp9OwoKCgoKc3RydWN0IHF1b3Rh X21vdW50X29wdGlvbnMKewogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICBzdHJ1 Y3Qgc2VtYXBob3JlIGRxaW9fc2VtOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgZHFvZmZfc2Vt OwogICAgICAgIHN0cnVjdCBmaWxlICpmaWxlc1syXTsKICAgICAgICB0aW1lX3QgaW5vZGVfZXhw aXJlWzJdOwogICAgICAgIHRpbWVfdCBibG9ja19leHBpcmVbMl07CiAgICAgICAgY2hhciByc3F1 YXNoWzJdOwp9OwoKCgoKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L21pbml4X2ZzX3NiLmgiIDEKCgoKCgoKc3RydWN0IG1pbml4X3NiX2luZm8gewogICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfbmlub2RlczsKICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX256b25lczsKICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgbG9uZyBzX2ltYXBfYmxvY2tzOwogICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIHNfem1hcF9ibG9ja3M7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgc19maXJzdGRhdGF6b25lOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIHNfbG9nX3pvbmVfc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyBzX21heF9zaXplOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19kaXJzaXplOwog ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19uYW1lbGVuOwogICAgICAgICAgICAgICAgICAg ICAgICBpbnQgc19saW5rX21heDsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZl cl9oZWFkICoqIHNfaW1hcDsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9o ZWFkICoqIHNfem1hcDsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFk ICogc19zYmg7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtaW5peF9zdXBlcl9ibG9j ayAqIHNfbXM7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbW91bnRf c3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHNfdmVyc2lvbjsK fTsKIyA2NTggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIg MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZXh0Ml9mc19z Yi5oIiAxCiMgMzAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZXh0 Ml9mc19zYi5oIgpzdHJ1Y3QgZXh0Ml9zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNf ZnJhZ19zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnc19wZXJfYmxvY2s7CiAgICAg ICAgdW5zaWduZWQgbG9uZyBzX2lub2Rlc19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBzX2ZyYWdzX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfYmxvY2tzX3Blcl9n cm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVzX3Blcl9ncm91cDsKICAgICAgICB1 bnNpZ25lZCBsb25nIHNfaXRiX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZ2Ri X2NvdW50OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19kZXNjX3Blcl9ibG9jazsKICAgICAgICB1 bnNpZ25lZCBsb25nIHNfZ3JvdXBzX2NvdW50OwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAq IHNfc2JoOwogICAgICAgIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICogc19lczsKICAgICAgICBz dHJ1Y3QgYnVmZmVyX2hlYWQgKiogc19ncm91cF9kZXNjOwogICAgICAgIHVuc2lnbmVkIHNob3J0 IHNfbG9hZGVkX2lub2RlX2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19sb2FkZWRf YmxvY2tfYml0bWFwczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVfYml0bWFwX251bWJl cls4XTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX2lub2RlX2JpdG1hcFs4XTsKICAg ICAgICB1bnNpZ25lZCBsb25nIHNfYmxvY2tfYml0bWFwX251bWJlcls4XTsKICAgICAgICBzdHJ1 Y3QgYnVmZmVyX2hlYWQgKiBzX2Jsb2NrX2JpdG1hcFs4XTsKICAgICAgICB1bnNpZ25lZCBsb25n IHNfbW91bnRfb3B0OwogICAgICAgIHVpZF90IHNfcmVzdWlkOwogICAgICAgIGdpZF90IHNfcmVz Z2lkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAgICAgdW5zaWdu ZWQgc2hvcnQgc19wYWQ7CiAgICAgICAgaW50IHNfYWRkcl9wZXJfYmxvY2tfYml0czsKICAgICAg ICBpbnQgc19kZXNjX3Blcl9ibG9ja19iaXRzOwogICAgICAgIGludCBzX2lub2RlX3NpemU7CiAg ICAgICAgaW50IHNfZmlyc3RfaW5vOwp9OwojIDY1OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9ocGZzX2ZzX3NiLmgiIDEKCgoKc3RydWN0IGhwZnNfc2JfaW5mbyB7CiAg ICAgICAgaW5vX3Qgc2Jfcm9vdDsKICAgICAgICB1bnNpZ25lZCBzYl9mc19zaXplOwogICAgICAg IHVuc2lnbmVkIHNiX2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2JfZGlyYmFuZF9zdGFydDsK ICAgICAgICB1bnNpZ25lZCBzYl9kaXJiYW5kX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2JfZG1h cDsKICAgICAgICB1bnNpZ25lZCBzYl9uX2ZyZWU7CiAgICAgICAgdW5zaWduZWQgc2Jfbl9mcmVl X2Rub2RlczsKICAgICAgICB1aWRfdCBzYl91aWQ7CiAgICAgICAgZ2lkX3Qgc2JfZ2lkOwogICAg ICAgIHVtb2RlX3Qgc2JfbW9kZTsKICAgICAgICB1bnNpZ25lZCBzYl9jb252IDogMjsKICAgICAg ICB1bnNpZ25lZCBzYl9lYXMgOiAyOwogICAgICAgIHVuc2lnbmVkIHNiX2VyciA6IDI7CiAgICAg ICAgdW5zaWduZWQgc2JfY2hrIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9sb3dlcmNhc2UgOiAx OwogICAgICAgIHVuc2lnbmVkIHNiX3dhc19lcnJvciA6IDE7CiAgICAgICAgdW5zaWduZWQgc2Jf Y2hrZHNrIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9yZF9mbm9kZSA6IDI7CiAgICAgICAgdW5z aWduZWQgc2JfcmRfaW5vZGUgOiAyOwoKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgc2JfaWdl dF9xOwogICAgICAgIHVuc2lnbmVkIGNoYXIgKnNiX2NwX3RhYmxlOwoKCiAgICAgICAgdW5zaWdu ZWQgKnNiX2JtcF9kaXI7CiAgICAgICAgdW5zaWduZWQgc2JfY19iaXRtYXA7CiAgICAgICAgd2Fp dF9xdWV1ZV9oZWFkX3Qgc2JfY3JlYXRpb25fZGU7CgogICAgICAgIHVuc2lnbmVkIHNiX2NyZWF0 aW9uX2RlX2xvY2sgOiAxOwoKICAgICAgICBpbnQgc2JfdGltZXNoaWZ0Owp9OwojIDY2MCAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9udGZzX2ZzX3NiLmgiIDEKCgoKIyAx ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L250ZnNfZnNfaS5oIiAx CiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9udGZzX2ZzX3Ni LmgiIDIKCnN0cnVjdCBudGZzX3NiX2luZm97CgogICAgICAgIG50ZnNfdWlkX3QgdWlkOwogICAg ICAgIG50ZnNfZ2lkX3QgZ2lkOwogICAgICAgIG50bW9kZV90IHVtYXNrOwogICAgICAgIHZvaWQg Km5sc19tYXA7CiAgICAgICAgdW5zaWduZWQgaW50IG5ndDsKICAgICAgICBjaGFyIG1mdF96b25l X211bHRpcGxpZXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtZnRfZGF0YV9wb3M7CiAgICAgICAg bnRmc19jbHVzdGVyX3QgbWZ0X3pvbmVfcG9zOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG1mdF96 b25lX3N0YXJ0OwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG1mdF96b25lX2VuZDsKICAgICAgICBu dGZzX2NsdXN0ZXJfdCBkYXRhMV96b25lX3BvczsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBkYXRh Ml96b25lX3BvczsKCgogICAgICAgIG50ZnNfc2l6ZV90IHBhcnRpdGlvbl9iaWFzOwoKICAgICAg ICBudGZzX3UzMiBhdF9zdGFuZGFyZF9pbmZvcm1hdGlvbjsKICAgICAgICBudGZzX3UzMiBhdF9h dHRyaWJ1dGVfbGlzdDsKICAgICAgICBudGZzX3UzMiBhdF9maWxlX25hbWU7CiAgICAgICAgbnRm c191MzIgYXRfdm9sdW1lX3ZlcnNpb247CiAgICAgICAgbnRmc191MzIgYXRfc2VjdXJpdHlfZGVz Y3JpcHRvcjsKICAgICAgICBudGZzX3UzMiBhdF92b2x1bWVfbmFtZTsKICAgICAgICBudGZzX3Uz MiBhdF92b2x1bWVfaW5mb3JtYXRpb247CiAgICAgICAgbnRmc191MzIgYXRfZGF0YTsKICAgICAg ICBudGZzX3UzMiBhdF9pbmRleF9yb290OwogICAgICAgIG50ZnNfdTMyIGF0X2luZGV4X2FsbG9j YXRpb247CiAgICAgICAgbnRmc191MzIgYXRfYml0bWFwOwogICAgICAgIG50ZnNfdTMyIGF0X3N5 bWxpbms7CgogICAgICAgIGludCBzZWN0b3Jfc2l6ZTsKICAgICAgICBpbnQgY2x1c3Rlcl9zaXpl OwogICAgICAgIGludCBjbHVzdGVyX3NpemVfYml0czsKICAgICAgICBpbnQgbWZ0X2NsdXN0ZXJz X3Blcl9yZWNvcmQ7CiAgICAgICAgaW50IG1mdF9yZWNvcmRfc2l6ZTsKICAgICAgICBpbnQgbWZ0 X3JlY29yZF9zaXplX2JpdHM7CiAgICAgICAgaW50IGluZGV4X2NsdXN0ZXJzX3Blcl9yZWNvcmQ7 CiAgICAgICAgaW50IGluZGV4X3JlY29yZF9zaXplOwogICAgICAgIGludCBpbmRleF9yZWNvcmRf c2l6ZV9iaXRzOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG5yX2NsdXN0ZXJzOwogICAgICAgIG50 ZnNfY2x1c3Rlcl90IG1mdF9sY247CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbWZ0X21pcnJfbGNu OwoKICAgICAgICB1bnNpZ25lZCBjaGFyICptZnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKnVw Y2FzZTsKICAgICAgICB1bnNpZ25lZCBpbnQgdXBjYXNlX2xlbmd0aDsKCiAgICAgICAgc3RydWN0 IG50ZnNfaW5vZGVfaW5mbyAqbWZ0X2lubzsKICAgICAgICBzdHJ1Y3QgbnRmc19pbm9kZV9pbmZv ICptZnRtaXJyOwogICAgICAgIHN0cnVjdCBudGZzX2lub2RlX2luZm8gKmJpdG1hcDsKICAgICAg ICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaW5vX2ZsYWdz Owp9OwojIDY2MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5o IiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tc2Rvc19m c19zYi5oIiAxCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L2ZhdF9jdmYuaCIgMQoKCgoKCnN0cnVjdCBjdmZfZm9ybWF0CnsgaW50IGN2Zl92ZXJzaW9uOwog IGNoYXIqIGN2Zl92ZXJzaW9uX3RleHQ7CiAgdW5zaWduZWQgbG9uZyBmbGFnczsKICBpbnQgKCpk ZXRlY3RfY3ZmKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiKTsKICBpbnQgKCptb3VudF9jdmYpIChz dHJ1Y3Qgc3VwZXJfYmxvY2sqc2IsY2hhcipvcHRpb25zKTsKICBpbnQgKCp1bm1vdW50X2N2Zikg KHN0cnVjdCBzdXBlcl9ibG9jaypzYik7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkKiAoKmN2Zl9icmVh ZCkgKHN0cnVjdCBzdXBlcl9ibG9jaypzYixpbnQgYmxvY2spOwogIHN0cnVjdCBidWZmZXJfaGVh ZCogKCpjdmZfZ2V0YmxrKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiLGludCBibG9jayk7CiAgdm9p ZCAoKmN2Zl9icmVsc2UpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLHN0cnVjdCBidWZmZXJfaGVh ZCAqYmgpOwogIHZvaWQgKCpjdmZfbWFya19idWZmZXJfZGlydHkpIChzdHJ1Y3Qgc3VwZXJfYmxv Y2sgKnNiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQg KmJoKTsKICB2b2lkICgqY3ZmX3NldF91cHRvZGF0ZSkgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Is CiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLAogICAgICAg ICAgICAgICAgICAgICAgICAgaW50IHZhbCk7CiAgaW50ICgqY3ZmX2lzX3VwdG9kYXRlKSAoc3Ry dWN0IHN1cGVyX2Jsb2NrICpzYixzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKTsKICB2b2lkICgqY3Zm X2xsX3J3X2Jsb2NrKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKICAgICAgICAgICAgICAgICAg ICAgICAgaW50IG9wciwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5icmVxLAogICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoWzMyXSk7CiAgaW50ICgqZmF0 X2FjY2VzcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsaW50IG5yLGludCBuZXdfdmFsdWUpOwog IGludCAoKmN2Zl9zdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLHN0cnVjdCBzdGF0ZnMg KmJ1ZiwgaW50IGJ1ZnNpeik7CiAgaW50ICgqY3ZmX2JtYXApIChzdHJ1Y3QgaW5vZGUgKmlub2Rl LGludCBibG9jayk7CiAgc3NpemVfdCAoKmN2Zl9maWxlX3JlYWQpICggc3RydWN0IGZpbGUgKiwg Y2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKICBzc2l6ZV90ICgqY3ZmX2ZpbGVfd3JpdGUpICgg c3RydWN0IGZpbGUgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKICBpbnQgKCpj dmZfbW1hcCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKICBpbnQg KCpjdmZfcmVhZHBhZ2UpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHBhZ2UgKik7CiAgaW50ICgq Y3ZmX3dyaXRlcGFnZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgcGFnZSAqKTsKICBpbnQgKCpj dmZfZGlyX2lvY3RsKSAoc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBmaWxlICogZmlscCwK ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBh cmcpOwogIHZvaWQgKCp6ZXJvX291dF9jbHVzdGVyKSAoc3RydWN0IGlub2RlKiwgaW50IGNsdXN0 ZXJucik7Cn07CgppbnQgcmVnaXN0ZXJfY3ZmX2Zvcm1hdF9SZGM5NjhkOGEoc3RydWN0IGN2Zl9m b3JtYXQqY3ZmX2Zvcm1hdCk7CmludCB1bnJlZ2lzdGVyX2N2Zl9mb3JtYXRfUmVhN2IwNzYwKHN0 cnVjdCBjdmZfZm9ybWF0KmN2Zl9mb3JtYXQpOwp2b2lkIGRlY19jdmZfZm9ybWF0X3VzZV9jb3Vu dF9ieV92ZXJzaW9uKGludCB2ZXJzaW9uKTsKaW50IGRldGVjdF9jdmYoc3RydWN0IHN1cGVyX2Js b2NrKnNiLGNoYXIqZm9yY2UpOwoKZXh0ZXJuIHN0cnVjdCBjdmZfZm9ybWF0ICpjdmZfZm9ybWF0 c1tdOwpleHRlcm4gaW50IGN2Zl9mb3JtYXRfdXNlX2NvdW50W107CiMgNCAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tc2Rvc19mc19zYi5oIiAyCgoKCgoKc3RydWN0 IGZhdF9tb3VudF9vcHRpb25zIHsKICAgICAgICB1aWRfdCBmc191aWQ7CiAgICAgICAgZ2lkX3Qg ZnNfZ2lkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZzX3VtYXNrOwogICAgICAgIHVuc2lnbmVk IHNob3J0IGNvZGVwYWdlOwogICAgICAgIGNoYXIgKmlvY2hhcnNldDsKICAgICAgICB1bnNpZ25l ZCBjaGFyIG5hbWVfY2hlY2s7CiAgICAgICAgdW5zaWduZWQgY2hhciBjb252ZXJzaW9uOwogICAg ICAgIHVuc2lnbmVkIHF1aWV0OjEsCiAgICAgICAgICAgICAgICAgc2hvd2V4ZWM6MSwKICAgICAg ICAgICAgICAgICBzeXNfaW1tdXRhYmxlOjEsCiAgICAgICAgICAgICAgICAgZG90c09LOjEsCiAg ICAgICAgICAgICAgICAgaXN2ZmF0OjEsCiAgICAgICAgICAgICAgICAgdXRmODoxLAogICAgICAg ICAgICAgICAgIHVuaWNvZGVfeGxhdGU6MSwKICAgICAgICAgICAgICAgICBwb3NpeGZzOjEsCiAg ICAgICAgICAgICAgICAgbnVtdGFpbDoxLAogICAgICAgICAgICAgICAgIGF0YXJpOjEsCiAgICAg ICAgICAgICAgICAgZmF0MzI6MSwKICAgICAgICAgICAgICAgICBub2Nhc2U6MTsKfTsKCnN0cnVj dCB2ZmF0X3VuaWNvZGUgewogICAgICAgIHVuc2lnbmVkIGNoYXIgdW5pMTsKICAgICAgICB1bnNp Z25lZCBjaGFyIHVuaTI7Cn07CgpzdHJ1Y3QgbXNkb3Nfc2JfaW5mbyB7CiAgICAgICAgdW5zaWdu ZWQgc2hvcnQgY2x1c3Rlcl9zaXplOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNsdXN0ZXJfYml0 czsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZhdHMsZmF0X2JpdHM7CiAgICAgICAgdW5zaWduZWQg c2hvcnQgZmF0X3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmF0X2xlbmd0aDsKICAgICAg ICB1bnNpZ25lZCBsb25nIGRpcl9zdGFydDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkaXJfZW50 cmllczsKICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGFfc3RhcnQ7CiAgICAgICAgdW5zaWduZWQg bG9uZyBjbHVzdGVyczsKICAgICAgICB1bnNpZ25lZCBsb25nIHJvb3RfY2x1c3RlcjsKICAgICAg ICB1bnNpZ25lZCBsb25nIGZzaW5mb19zZWN0b3I7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qg ZmF0X3dhaXQ7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBmYXRfbG9jazsKICAgICAgICBpbnQg cHJldl9mcmVlOwogICAgICAgIGludCBmcmVlX2NsdXN0ZXJzOwogICAgICAgIHN0cnVjdCBmYXRf bW91bnRfb3B0aW9ucyBvcHRpb25zOwogICAgICAgIHN0cnVjdCBubHNfdGFibGUgKm5sc19kaXNr OwogICAgICAgIHN0cnVjdCBubHNfdGFibGUgKm5sc19pbzsKICAgICAgICBzdHJ1Y3QgY3ZmX2Zv cm1hdCogY3ZmX2Zvcm1hdDsKICAgICAgICB2b2lkICpkaXJfb3BzOwogICAgICAgIHZvaWQgKnBy aXZhdGVfZGF0YTsKICAgICAgICBpbnQgZGlyX3Blcl9ibG9jazsKICAgICAgICBpbnQgZGlyX3Bl cl9ibG9ja19iaXRzOwp9OwojIDY2MiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s aW51eC9pc29fZnNfc2IuaCIgMQoKCgoKCgpzdHJ1Y3QgaXNvZnNfc2JfaW5mbyB7CiAgICAgICAg dW5zaWduZWQgbG9uZyBzX25pbm9kZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX256b25lczsK ICAgICAgICB1bnNpZ25lZCBsb25nIHNfZmlyc3RkYXRhem9uZTsKICAgICAgICB1bnNpZ25lZCBs b25nIHNfbG9nX3pvbmVfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbWF4X3NpemU7Cgog ICAgICAgIHVuc2lnbmVkIGNoYXIgc19oaWdoX3NpZXJyYTsKICAgICAgICB1bnNpZ25lZCBjaGFy IHNfbWFwcGluZzsKICAgICAgICBpbnQgc19yb2NrX29mZnNldDsKICAgICAgICB1bnNpZ25lZCBj aGFyIHNfcm9jazsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfam9saWV0X2xldmVsOwogICAgICAg IHVuc2lnbmVkIGNoYXIgc191dGY4OwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19jcnVmdDsKCgog ICAgICAgIHVuc2lnbmVkIGNoYXIgc191bmhpZGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX25v c3VpZDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfbm9kZXY7CiAgICAgICAgbW9kZV90IHNfbW9k ZTsKICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1aWRfdCBzX3VpZDsKICAgICAgICBzdHJ1 Y3QgbmxzX3RhYmxlICpzX25sc19pb2NoYXJzZXQ7Cn07CiMgNjYzICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2xpbnV4L25mc19mc19zYi5oIiAxCgoKCgoKCnN0cnVjdCBuZnNfc2Vy dmVyIHsKICAgICAgICBzdHJ1Y3QgcnBjX2NsbnQgKiBjbGllbnQ7CiAgICAgICAgc3RydWN0IG5m c19ycGNfb3BzICogcnBjX29wczsKICAgICAgICBpbnQgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQg aW50IHJzaXplOwogICAgICAgIHVuc2lnbmVkIGludCBycGFnZXM7CiAgICAgICAgdW5zaWduZWQg aW50IHdzaXplOwogICAgICAgIHVuc2lnbmVkIGludCB3cGFnZXM7CiAgICAgICAgdW5zaWduZWQg aW50IGR0c2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgYnNpemU7CiAgICAgICAgdW5zaWduZWQg aW50IGFjcmVnbWluOwogICAgICAgIHVuc2lnbmVkIGludCBhY3JlZ21heDsKICAgICAgICB1bnNp Z25lZCBpbnQgYWNkaXJtaW47CiAgICAgICAgdW5zaWduZWQgaW50IGFjZGlybWF4OwogICAgICAg IHVuc2lnbmVkIGludCBuYW1lbGVuOwogICAgICAgIGNoYXIgKiBob3N0bmFtZTsKICAgICAgICBz dHJ1Y3QgbmZzX3JlcWxpc3QgKiByd19yZXF1ZXN0czsKfTsKCgoKCnN0cnVjdCBuZnNfc2JfaW5m byB7CiAgICAgICAgc3RydWN0IG5mc19zZXJ2ZXIgc19zZXJ2ZXI7Cn07CiMgNjY0ICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3N5c3ZfZnNfc2IuaCIgMQojIDEzICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3N5c3ZfZnNfc2IuaCIKc3RydWN0 IHN5c3Zfc2JfaW5mbyB7CiAgICAgICAgaW50IHNfdHlwZTsKICAgICAgICBjaGFyIHNfYnl0ZXNl eDsKICAgICAgICBjaGFyIHNfa2x1ZGdlX3N5bWxpbmtzOwogICAgICAgIGNoYXIgc190cnVuY2F0 ZTsKCiAgICAgICAgbmxpbmtfdCBzX2xpbmtfbWF4OwogICAgICAgIHVuc2lnbmVkIGludCBzX2lu b2Rlc19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5vZGVzX3Blcl9ibG9ja18x OwogICAgICAgIHVuc2lnbmVkIGludCBzX2lub2Rlc19wZXJfYmxvY2tfYml0czsKICAgICAgICB1 bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGludCBzX2luZF9w ZXJfYmxvY2tfYml0czsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrXzI7CiAg ICAgICAgdW5zaWduZWQgaW50IHNfdG9vYmlnX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGludCBz X2Jsb2NrX2Jhc2U7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19maWNfc2l6ZTsKICAgICAgICB1 bnNpZ25lZCBzaG9ydCBzX2ZsY19zaXplOwoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNf YmgxOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqc19iaDI7CgoKICAgICAgICBjaGFyICog c19zYmQxOwogICAgICAgIGNoYXIgKiBzX3NiZDI7CiAgICAgICAgdTE2ICpzX3NiX2ZpY19jb3Vu dDsKICAgICAgICB1MTYgKnNfc2JfZmljX2lub2RlczsKICAgICAgICB1MTYgKnNfc2JfdG90YWxf ZnJlZV9pbm9kZXM7CiAgICAgICAgdTE2ICpzX2JjYWNoZV9jb3VudDsKICAgICAgICB1MzIgKnNf YmNhY2hlOwogICAgICAgIHUzMiAqc19mcmVlX2Jsb2NrczsKICAgICAgICB1MzIgKnNfc2JfdGlt ZTsKICAgICAgICB1MzIgKnNfc2Jfc3RhdGU7CgoKICAgICAgICB1MzIgc19maXJzdGlub2Rlem9u ZTsKICAgICAgICB1MzIgc19maXJzdGRhdGF6b25lOwogICAgICAgIHUzMiBzX25pbm9kZXM7CiAg ICAgICAgdTMyIHNfbmRhdGF6b25lczsKICAgICAgICB1MzIgc19uem9uZXM7CiAgICAgICAgdTE2 IHNfbmFtZWxlbjsKfTsKIyA2NjUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu dXgvYWZmc19mc19zYi5oIiAxCiMgMTEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvYWZmc19mc19zYi5oIgpzdHJ1Y3QgYWZmc19ibV9pbmZvIHsKICAgICAgICB1MzIg Ym1fa2V5OwogICAgICAgIHUzMiBibV9mcmVlOwp9OwoKc3RydWN0IGFmZnNfc2JfaW5mbyB7CiAg ICAgICAgaW50IHNfcGFydGl0aW9uX3NpemU7CiAgICAgICAgaW50IHNfcmVzZXJ2ZWQ7CgogICAg ICAgIHUzMiBzX2RhdGFfYmxrc2l6ZTsKICAgICAgICB1MzIgc19yb290X2Jsb2NrOwogICAgICAg IGludCBzX2hhc2hzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mbGFnczsKICAgICAgICB1 aWRfdCBzX3VpZDsKICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1bW9kZV90IHNfbW9kZTsK ICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfcm9vdF9iaDsKICAgICAgICBzdHJ1Y3Qgc2Vt YXBob3JlIHNfYm1sb2NrOwogICAgICAgIHN0cnVjdCBhZmZzX2JtX2luZm8gKnNfYml0bWFwOwog ICAgICAgIHUzMiBzX2JtYXBfY291bnQ7CiAgICAgICAgdTMyIHNfYm1hcF9iaXRzOwogICAgICAg IHUzMiBzX2xhc3RfYm1hcDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfYm1hcF9iaDsK ICAgICAgICBjaGFyICpzX3ByZWZpeDsKICAgICAgICBpbnQgc19wcmVmaXhfbGVuOwogICAgICAg IGNoYXIgc192b2x1bWVbMzJdOwp9OwojIDY2NiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC91ZnNfZnNfc2IuaCIgMQojIDE3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L3Vmc19mc19zYi5oIgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiIDEKIyAzMCAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAzMSAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgva2VybmVsLmgiIDEKIyAzMiAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvbGludXgvdGltZS5oIiAxCiMgMzMgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3N0YXQuaCIgMQojIDM0ICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIiAyCiMgMjQ4ICIvdXNyL3NyYy9ydWRv L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIgpzdHJ1Y3QgdWZzX3RpbWV2YWwg ewogICAgICAgIF9fczMyIHR2X3NlYzsKICAgICAgICBfX3MzMiB0dl91c2VjOwp9OwoKc3RydWN0 IHVmc19kaXJfZW50cnkgewogICAgICAgIF9fdTMyIGRfaW5vOwogICAgICAgIF9fdTE2IGRfcmVj bGVuOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdTE2IGRfbmFtbGVuOwogICAg ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191OCBkX3R5cGU7 CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTggZF9uYW1sZW47CiAgICAgICAgICAgICAgICB9 IGRfNDQ7CiAgICAgICAgfSBkX3U7CiAgICAgICAgX191OCBkX25hbWVbMjU1ICsgMV07Cn07Cgpz dHJ1Y3QgdWZzX2NzdW0gewogICAgICAgIF9fdTMyIGNzX25kaXI7CiAgICAgICAgX191MzIgY3Nf bmJmcmVlOwogICAgICAgIF9fdTMyIGNzX25pZnJlZTsKICAgICAgICBfX3UzMiBjc19uZmZyZWU7 Cn07CgoKCgpzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrIHsKICAgICAgICBfX3UzMiBmc19saW5rOwog ICAgICAgIF9fdTMyIGZzX3JsaW5rOwogICAgICAgIF9fdTMyIGZzX3NibGtubzsKICAgICAgICBf X3UzMiBmc19jYmxrbm87CiAgICAgICAgX191MzIgZnNfaWJsa25vOwogICAgICAgIF9fdTMyIGZz X2RibGtubzsKICAgICAgICBfX3UzMiBmc19jZ29mZnNldDsKICAgICAgICBfX3UzMiBmc19jZ21h c2s7CiAgICAgICAgX191MzIgZnNfdGltZTsKICAgICAgICBfX3UzMiBmc19zaXplOwogICAgICAg IF9fdTMyIGZzX2RzaXplOwogICAgICAgIF9fdTMyIGZzX25jZzsKICAgICAgICBfX3UzMiBmc19i c2l6ZTsKICAgICAgICBfX3UzMiBmc19mc2l6ZTsKICAgICAgICBfX3UzMiBmc19mcmFnOwoKICAg ICAgICBfX3UzMiBmc19taW5mcmVlOwogICAgICAgIF9fdTMyIGZzX3JvdGRlbGF5OwogICAgICAg IF9fdTMyIGZzX3JwczsKCiAgICAgICAgX191MzIgZnNfYm1hc2s7CiAgICAgICAgX191MzIgZnNf Zm1hc2s7CiAgICAgICAgX191MzIgZnNfYnNoaWZ0OwogICAgICAgIF9fdTMyIGZzX2ZzaGlmdDsK CiAgICAgICAgX191MzIgZnNfbWF4Y29udGlnOwogICAgICAgIF9fdTMyIGZzX21heGJwZzsKCiAg ICAgICAgX191MzIgZnNfZnJhZ3NoaWZ0OwogICAgICAgIF9fdTMyIGZzX2ZzYnRvZGI7CiAgICAg ICAgX191MzIgZnNfc2JzaXplOwogICAgICAgIF9fdTMyIGZzX2NzbWFzazsKICAgICAgICBfX3Uz MiBmc19jc3NoaWZ0OwogICAgICAgIF9fdTMyIGZzX25pbmRpcjsKICAgICAgICBfX3UzMiBmc19p bm9wYjsKICAgICAgICBfX3UzMiBmc19uc3BmOwoKICAgICAgICBfX3UzMiBmc19vcHRpbTsKCiAg ICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAg ICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAgICAgICAgfSBmc19zdW47CiAgICAgICAg ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsK ICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAgICAgIH0gZnNfdTE7CiAgICAgICAgX191 MzIgZnNfaW50ZXJsZWF2ZTsKICAgICAgICBfX3UzMiBmc190cmFja3NrZXc7CgoKCgogICAgICAg IF9fdTMyIGZzX2lkWzJdOwoKICAgICAgICBfX3UzMiBmc19jc2FkZHI7CiAgICAgICAgX191MzIg ZnNfY3NzaXplOwogICAgICAgIF9fdTMyIGZzX2Nnc2l6ZTsKCiAgICAgICAgX191MzIgZnNfbnRy YWs7CiAgICAgICAgX191MzIgZnNfbnNlY3Q7CiAgICAgICAgX191MzIgZnNfc3BjOwoKICAgICAg ICBfX3UzMiBmc19uY3lsOwoKICAgICAgICBfX3UzMiBmc19jcGc7CiAgICAgICAgX191MzIgZnNf aXBnOwogICAgICAgIF9fdTMyIGZzX2ZwZzsKCiAgICAgICAgc3RydWN0IHVmc19jc3VtIGZzX2Nz dG90YWw7CgogICAgICAgIF9fczggZnNfZm1vZDsKICAgICAgICBfX3M4IGZzX2NsZWFuOwogICAg ICAgIF9fczggZnNfcm9ubHk7CiAgICAgICAgX19zOCBmc19mbGFnczsKICAgICAgICBfX3M4IGZz X2ZzbW50WzUxMl07CgogICAgICAgIF9fdTMyIGZzX2Nncm90b3I7CiAgICAgICAgX191MzIgZnNf Y3NwWzMxXTsKICAgICAgICBfX3UzMiBmc19tYXhjbHVzdGVyOwogICAgICAgIF9fdTMyIGZzX2Nw YzsKICAgICAgICBfX3UxNiBmc19vcG9zdGJsWzE2XVs4XTsKICAgICAgICB1bmlvbiB7CiAgICAg ICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFy ZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAg ICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAgICAgICAgICAgICAg ICAgICAgICAgX19zMzIgZnNfc3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZz X3FibWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwog ICAgICAgICAgICAgICAgfSBmc19zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAg ICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1M107CiAgICAgICAgICAgICAgICAg ICAgICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZz X3NwYXJlY29uMlsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbnBzZWN0Owog ICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAgICAgICAg ICAgICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2 OwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIg ZnNfc3BhcmVjb25bNTBdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19jb250aWdz dW1zaXplOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19tYXhzeW1saW5rbGVuOwog ICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19pbm9kZWZtdDsKICAgICAgICAgICAgICAg ICAgICAgICAgX191MzIgZnNfbWF4ZmlsZXNpemVbMl07CiAgICAgICAgICAgICAgICAgICAgICAg IF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZt YXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAg ICAgICAgIH0gZnNfNDQ7CiAgICAgICAgfSBmc191MjsKICAgICAgICBfX3MzMiBmc19wb3N0Ymxm b3JtYXQ7CiAgICAgICAgX19zMzIgZnNfbnJwb3M7CiAgICAgICAgX19zMzIgZnNfcG9zdGJsb2Zm OwogICAgICAgIF9fczMyIGZzX3JvdGJsb2ZmOwogICAgICAgIF9fczMyIGZzX21hZ2ljOwogICAg ICAgIF9fdTggZnNfc3BhY2VbMV07Cn07CiMgNDI1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIgpzdHJ1Y3QgdWZzX2N5bGluZGVyX2dyb3VwIHsKICAg ICAgICBfX3UzMiBjZ19saW5rOwogICAgICAgIF9fdTMyIGNnX21hZ2ljOwogICAgICAgIF9fdTMy IGNnX3RpbWU7CiAgICAgICAgX191MzIgY2dfY2d4OwogICAgICAgIF9fdTE2IGNnX25jeWw7CiAg ICAgICAgX191MTYgY2dfbmlibGs7CiAgICAgICAgX191MzIgY2dfbmRibGs7CiAgICAgICAgc3Ry dWN0IHVmc19jc3VtIGNnX2NzOwogICAgICAgIF9fdTMyIGNnX3JvdG9yOwogICAgICAgIF9fdTMy IGNnX2Zyb3RvcjsKICAgICAgICBfX3UzMiBjZ19pcm90b3I7CiAgICAgICAgX191MzIgY2dfZnJz dW1bKDgxOTIgLyAxMDI0KV07CiAgICAgICAgX191MzIgY2dfYnRvdG9mZjsKICAgICAgICBfX3Uz MiBjZ19ib2ZmOwogICAgICAgIF9fdTMyIGNnX2l1c2Vkb2ZmOwogICAgICAgIF9fdTMyIGNnX2Zy ZWVvZmY7CiAgICAgICAgX191MzIgY2dfbmV4dGZyZWVvZmY7CiAgICAgICAgdW5pb24gewogICAg ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgY2dfY2x1 c3RlcnN1bW9mZjsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgY2dfY2x1c3Rlcm9mZjsK ICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgY2dfbmNsdXN0ZXJibGtzOwogICAgICAgICAg ICAgICAgICAgICAgICBfX3UzMiBjZ19zcGFyZWNvblsxM107CiAgICAgICAgICAgICAgICB9IGNn XzQ0OwogICAgICAgICAgICAgICAgX191MzIgY2dfc3BhcmVjb25bMTZdOwogICAgICAgIH0gY2df dTsKICAgICAgICBfX3U4IGNnX3NwYWNlWzFdOwoKfTsKCgoKCnN0cnVjdCB1ZnNfaW5vZGUgewog ICAgICAgIF9fdTE2IHVpX21vZGU7CiAgICAgICAgX191MTYgdWlfbmxpbms7CiAgICAgICAgdW5p b24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191 MTYgdWlfc3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MTYgdWlfc2dpZDsKICAgICAg ICAgICAgICAgIH0gb2xkaWRzOwogICAgICAgICAgICAgICAgX191MzIgdWlfaW51bWJlcjsKICAg ICAgICAgICAgICAgIF9fdTMyIHVpX2F1dGhvcjsKICAgICAgICB9IHVpX3UxOwogICAgICAgIF9f dTY0IHVpX3NpemU7CiAgICAgICAgc3RydWN0IHVmc190aW1ldmFsIHVpX2F0aW1lOwogICAgICAg IHN0cnVjdCB1ZnNfdGltZXZhbCB1aV9tdGltZTsKICAgICAgICBzdHJ1Y3QgdWZzX3RpbWV2YWwg dWlfY3RpbWU7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAg ICAgICAgICAgICAgICAgICAgX191MzIgdWlfZGJbMTJdOwogICAgICAgICAgICAgICAgICAgICAg ICBfX3UzMiB1aV9pYlszXTsKICAgICAgICAgICAgICAgIH0gdWlfYWRkcjsKICAgICAgICAgICAg ICAgIF9fdTggdWlfc3ltbGlua1s0KigxMiArMyldOwogICAgICAgIH0gdWlfdTI7CiAgICAgICAg X191MzIgdWlfZmxhZ3M7CiAgICAgICAgX191MzIgdWlfYmxvY2tzOwogICAgICAgIF9fdTMyIHVp X2dlbjsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg ICAgICAgICAgICAgICBfX3UzMiB1aV9zaGFkb3c7CiAgICAgICAgICAgICAgICAgICAgICAgIF9f dTMyIHVpX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfZ2lkOwogICAgICAg ICAgICAgICAgICAgICAgICBfX3UzMiB1aV9vZWZ0ZmxhZzsKICAgICAgICAgICAgICAgIH0gdWlf c3VuOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191 MzIgdWlfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9naWQ7CiAgICAgICAg ICAgICAgICAgICAgICAgIF9fczMyIHVpX3NwYXJlWzJdOwogICAgICAgICAgICAgICAgfSB1aV80 NDsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMy IHVpX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfZ2lkOwogICAgICAgICAg ICAgICAgICAgICAgICBfX3UxNiB1aV9tb2RlaDsKICAgICAgICAgICAgICAgICAgICAgICAgX191 MTYgdWlfc3BhcmU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX3RyYW5zOwogICAg ICAgICAgICAgICAgfSB1aV9odXJkOwogICAgICAgIH0gdWlfdTM7Cn07CiMgNTI0ICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIgpleHRlcm4gdm9pZCB1 ZnNfZnJlZV9mcmFnbWVudHMgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQpOwpl eHRlcm4gdm9pZCB1ZnNfZnJlZV9ibG9ja3MgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCwgdW5z aWduZWQpOwpleHRlcm4gdW5zaWduZWQgdWZzX25ld19mcmFnbWVudHMgKHN0cnVjdCBpbm9kZSAq LCB1MzIgKiwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgaW50ICopOwoKCmV4dGVybiBz dHJ1Y3QgdWZzX2NnX3ByaXZhdGVfaW5mbyAqIHVmc19sb2FkX2N5bGluZGVyIChzdHJ1Y3Qgc3Vw ZXJfYmxvY2sgKiwgdW5zaWduZWQpOwpleHRlcm4gdm9pZCB1ZnNfcHV0X2N5bGluZGVyIChzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKiwgdW5zaWduZWQpOwoKCmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0 aW9ucyB1ZnNfZGlyX2lub2RlX29wZXJhdGlvbnM7CmV4dGVybiBpbnQgdWZzX2NoZWNrX2Rpcl9l bnRyeSAoY29uc3QgY2hhciAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHVmc19kaXJfZW50cnkg Kiwgc3RydWN0IGJ1ZmZlcl9oZWFkICosIHVuc2lnbmVkIGxvbmcpOwoKCmV4dGVybiBzdHJ1Y3Qg aW5vZGVfb3BlcmF0aW9ucyB1ZnNfZmlsZV9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gc3RydWN0 IGZpbGVfb3BlcmF0aW9ucyB1ZnNfZmlsZV9vcGVyYXRpb25zOwoKZXh0ZXJuIHN0cnVjdCBhZGRy ZXNzX3NwYWNlX29wZXJhdGlvbnMgdWZzX2FvcHM7CgoKZXh0ZXJuIHZvaWQgdWZzX2ZyZWVfaW5v ZGUgKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gc3RydWN0IGlub2RlICogdWZzX25ld19p bm9kZSAoY29uc3Qgc3RydWN0IGlub2RlICosIGludCwgaW50ICopOwoKCmV4dGVybiBpbnQgdWZz X2ZyYWdfbWFwIChzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIHZvaWQgdWZzX3JlYWRfaW5v ZGUgKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgdWZzX3B1dF9pbm9kZSAoc3RydWN0IGlu b2RlICopOwpleHRlcm4gdm9pZCB1ZnNfd3JpdGVfaW5vZGUgKHN0cnVjdCBpbm9kZSAqLCBpbnQp OwpleHRlcm4gaW50IHVmc19zeW5jX2lub2RlIChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lk IHVmc19kZWxldGVfaW5vZGUgKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJf aGVhZCAqIHVmc19nZXRmcmFnIChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQsIGludCwgaW50ICop OwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogdWZzX2JyZWFkIChzdHJ1Y3QgaW5vZGUgKiwg dW5zaWduZWQsIGludCwgaW50ICopOwoKCmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHVm c19kaXJfb3BlcmF0aW9uczsKCgpleHRlcm4gc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgdWZzX2Zz X3R5cGU7CmV4dGVybiB2b2lkIHVmc193YXJuaW5nIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgY29u c3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJp bnRmLCAzLCA0KSkpOwpleHRlcm4gdm9pZCB1ZnNfZXJyb3IgKHN0cnVjdCBzdXBlcl9ibG9jayAq LCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0 IChwcmludGYsIDMsIDQpKSk7CmV4dGVybiB2b2lkIHVmc19wYW5pYyAoc3RydWN0IHN1cGVyX2Js b2NrICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0cmlidXRlX18gKChm b3JtYXQgKHByaW50ZiwgMywgNCkpKTsKZXh0ZXJuIHZvaWQgdWZzX3dyaXRlX3N1cGVyIChzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKik7CgoKZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHVmc19m YXN0X3N5bWxpbmtfaW5vZGVfb3BlcmF0aW9uczsKCgpleHRlcm4gdm9pZCB1ZnNfdHJ1bmNhdGUg KHN0cnVjdCBpbm9kZSAqKTsKIyAxOCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC91ZnNfZnNfc2IuaCIgMgoKCgoKCnN0cnVjdCB1ZnNfYnVmZmVyX2hlYWQgewogICAg ICAgIHVuc2lnbmVkIGZyYWdtZW50OwogICAgICAgIHVuc2lnbmVkIGNvdW50OwogICAgICAgIHN0 cnVjdCBidWZmZXJfaGVhZCAqIGJoWyg4MTkyIC8gMTAyNCldOwp9OwoKc3RydWN0IHVmc19jZ19w cml2YXRlX2luZm8gewogICAgICAgIHN0cnVjdCB1ZnNfY3lsaW5kZXJfZ3JvdXAgdWNnOwogICAg ICAgIF9fdTMyIGNfY2d4OwogICAgICAgIF9fdTE2IGNfbmN5bDsKICAgICAgICBfX3UxNiBjX25p YmxrOwogICAgICAgIF9fdTMyIGNfbmRibGs7CiAgICAgICAgX191MzIgY19yb3RvcjsKICAgICAg ICBfX3UzMiBjX2Zyb3RvcjsKICAgICAgICBfX3UzMiBjX2lyb3RvcjsKICAgICAgICBfX3UzMiBj X2J0b3RvZmY7CiAgICAgICAgX191MzIgY19ib2ZmOwogICAgICAgIF9fdTMyIGNfaXVzZWRvZmY7 CiAgICAgICAgX191MzIgY19mcmVlb2ZmOwogICAgICAgIF9fdTMyIGNfbmV4dGZyZWVvZmY7CiAg ICAgICAgX191MzIgY19jbHVzdGVyc3Vtb2ZmOwogICAgICAgIF9fdTMyIGNfY2x1c3Rlcm9mZjsK ICAgICAgICBfX3UzMiBjX25jbHVzdGVyYmxrczsKfTsKCnN0cnVjdCB1ZnNfc2JfcHJpdmF0ZV9p bmZvIHsKICAgICAgICBzdHJ1Y3QgdWZzX2J1ZmZlcl9oZWFkIHNfdWJoOwogICAgICAgIF9fdTMy IHNfc2Jsa25vOwogICAgICAgIF9fdTMyIHNfY2Jsa25vOwogICAgICAgIF9fdTMyIHNfaWJsa25v OwogICAgICAgIF9fdTMyIHNfZGJsa25vOwogICAgICAgIF9fdTMyIHNfY2dvZmZzZXQ7CiAgICAg ICAgX191MzIgc19jZ21hc2s7CiAgICAgICAgX191MzIgc19zaXplOwogICAgICAgIF9fdTMyIHNf ZHNpemU7CiAgICAgICAgX191MzIgc19uY2c7CiAgICAgICAgX191MzIgc19ic2l6ZTsKICAgICAg ICBfX3UzMiBzX2ZzaXplOwogICAgICAgIF9fdTMyIHNfZnBiOwogICAgICAgIF9fdTMyIHNfbWlu ZnJlZTsKICAgICAgICBfX3UzMiBzX2JtYXNrOwogICAgICAgIF9fdTMyIHNfZm1hc2s7CiAgICAg ICAgX191MzIgc19ic2hpZnQ7CiAgICAgICAgX191MzIgc19mc2hpZnQ7CiAgICAgICAgX191MzIg c19mcGJzaGlmdDsKICAgICAgICBfX3UzMiBzX2ZzYnRvZGI7CiAgICAgICAgX191MzIgc19zYnNp emU7CiAgICAgICAgX191MzIgc19jc21hc2s7CiAgICAgICAgX191MzIgc19jc3NoaWZ0OwogICAg ICAgIF9fdTMyIHNfbmluZGlyOwogICAgICAgIF9fdTMyIHNfaW5vcGI7CiAgICAgICAgX191MzIg c19uc3BmOwogICAgICAgIF9fdTMyIHNfbnBzZWN0OwogICAgICAgIF9fdTMyIHNfaW50ZXJsZWF2 ZTsKICAgICAgICBfX3UzMiBzX3RyYWNrc2tldzsKICAgICAgICBfX3UzMiBzX2NzYWRkcjsKICAg ICAgICBfX3UzMiBzX2Nzc2l6ZTsKICAgICAgICBfX3UzMiBzX2Nnc2l6ZTsKICAgICAgICBfX3Uz MiBzX250cmFrOwogICAgICAgIF9fdTMyIHNfbnNlY3Q7CiAgICAgICAgX191MzIgc19zcGM7CiAg ICAgICAgX191MzIgc19pcGc7CiAgICAgICAgX191MzIgc19mcGc7CiAgICAgICAgX191MzIgc19j cGM7CiAgICAgICAgX19zMzIgc19jb250aWdzdW1zaXplOwogICAgICAgIF9fczY0IHNfcWJtYXNr OwogICAgICAgIF9fczY0IHNfcWZtYXNrOwogICAgICAgIF9fczMyIHNfcG9zdGJsZm9ybWF0Owog ICAgICAgIF9fczMyIHNfbnJwb3M7CiAgICAgICAgX19zMzIgc19wb3N0YmxvZmY7CiAgICAgICAg X19zMzIgc19yb3RibG9mZjsKCiAgICAgICAgX191MzIgc19mcGJtYXNrOwogICAgICAgIF9fdTMy IHNfYXBiOwogICAgICAgIF9fdTMyIHNfMmFwYjsKICAgICAgICBfX3UzMiBzXzNhcGI7CiAgICAg ICAgX191MzIgc19hcGJtYXNrOwogICAgICAgIF9fdTMyIHNfYXBic2hpZnQ7CiAgICAgICAgX191 MzIgc18yYXBic2hpZnQ7CiAgICAgICAgX191MzIgc18zYXBic2hpZnQ7CiAgICAgICAgX191MzIg c19uc3Bmc2hpZnQ7CiAgICAgICAgX191MzIgc19uc3BiOwogICAgICAgIF9fdTMyIHNfaW5vcGY7 CiAgICAgICAgX191MzIgc19zYmJhc2U7CiAgICAgICAgX191MzIgc19icGY7CiAgICAgICAgX191 MzIgc19icGZzaGlmdDsKICAgICAgICBfX3UzMiBzX2JwZm1hc2s7CgogICAgICAgIF9fdTMyIHNf bWF4c3ltbGlua2xlbjsKfTsKCgoKCgpzdHJ1Y3QgdWZzX3NiX2luZm8gewogICAgICAgIHN0cnVj dCB1ZnNfc2JfcHJpdmF0ZV9pbmZvICogc191c3BpOwogICAgICAgIHN0cnVjdCB1ZnNfY3N1bSAq IHNfY3NwWzMxXTsKICAgICAgICB1bnNpZ25lZCBzX3N3YWI7CiAgICAgICAgdW5zaWduZWQgc19m bGFnczsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogc191Y2c7CiAgICAgICAgc3RydWN0 IHVmc19jZ19wcml2YXRlX2luZm8gKiBzX3VjcGlbOF07CiAgICAgICAgdW5zaWduZWQgc19jZ25v WzhdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfY2dfbG9hZGVkOwogICAgICAgIHVuc2lnbmVk IHNfbW91bnRfb3B0Owp9OwoKCgoKCgoKc3RydWN0IHVmc19zdXBlcl9ibG9ja19maXJzdCB7CiAg ICAgICAgX191MzIgZnNfbGluazsKICAgICAgICBfX3UzMiBmc19ybGluazsKICAgICAgICBfX3Uz MiBmc19zYmxrbm87CiAgICAgICAgX191MzIgZnNfY2Jsa25vOwogICAgICAgIF9fdTMyIGZzX2li bGtubzsKICAgICAgICBfX3UzMiBmc19kYmxrbm87CiAgICAgICAgX191MzIgZnNfY2dvZmZzZXQ7 CiAgICAgICAgX191MzIgZnNfY2dtYXNrOwogICAgICAgIF9fdTMyIGZzX3RpbWU7CiAgICAgICAg X191MzIgZnNfc2l6ZTsKICAgICAgICBfX3UzMiBmc19kc2l6ZTsKICAgICAgICBfX3UzMiBmc19u Y2c7CiAgICAgICAgX191MzIgZnNfYnNpemU7CiAgICAgICAgX191MzIgZnNfZnNpemU7CiAgICAg ICAgX191MzIgZnNfZnJhZzsKICAgICAgICBfX3UzMiBmc19taW5mcmVlOwogICAgICAgIF9fdTMy IGZzX3JvdGRlbGF5OwogICAgICAgIF9fdTMyIGZzX3JwczsKICAgICAgICBfX3UzMiBmc19ibWFz azsKICAgICAgICBfX3UzMiBmc19mbWFzazsKICAgICAgICBfX3UzMiBmc19ic2hpZnQ7CiAgICAg ICAgX191MzIgZnNfZnNoaWZ0OwogICAgICAgIF9fdTMyIGZzX21heGNvbnRpZzsKICAgICAgICBf X3UzMiBmc19tYXhicGc7CiAgICAgICAgX191MzIgZnNfZnJhZ3NoaWZ0OwogICAgICAgIF9fdTMy IGZzX2ZzYnRvZGI7CiAgICAgICAgX191MzIgZnNfc2JzaXplOwogICAgICAgIF9fdTMyIGZzX2Nz bWFzazsKICAgICAgICBfX3UzMiBmc19jc3NoaWZ0OwogICAgICAgIF9fdTMyIGZzX25pbmRpcjsK ICAgICAgICBfX3UzMiBmc19pbm9wYjsKICAgICAgICBfX3UzMiBmc19uc3BmOwogICAgICAgIF9f dTMyIGZzX29wdGltOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAg ICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX25wc2VjdDsKICAgICAgICAgICAgICAgIH0g ZnNfc3VuOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAg X19zMzIgZnNfc3RhdGU7CiAgICAgICAgICAgICAgICB9IGZzX3N1bng4NjsKICAgICAgICB9IGZz X3UxOwogICAgICAgIF9fdTMyIGZzX2ludGVybGVhdmU7CiAgICAgICAgX191MzIgZnNfdHJhY2tz a2V3OwogICAgICAgIF9fdTMyIGZzX2lkWzJdOwogICAgICAgIF9fdTMyIGZzX2NzYWRkcjsKICAg ICAgICBfX3UzMiBmc19jc3NpemU7CiAgICAgICAgX191MzIgZnNfY2dzaXplOwogICAgICAgIF9f dTMyIGZzX250cmFrOwogICAgICAgIF9fdTMyIGZzX25zZWN0OwogICAgICAgIF9fdTMyIGZzX3Nw YzsKICAgICAgICBfX3UzMiBmc19uY3lsOwogICAgICAgIF9fdTMyIGZzX2NwZzsKICAgICAgICBf X3UzMiBmc19pcGc7CiAgICAgICAgX191MzIgZnNfZnBnOwogICAgICAgIHN0cnVjdCB1ZnNfY3N1 bSBmc19jc3RvdGFsOwogICAgICAgIF9fczggZnNfZm1vZDsKICAgICAgICBfX3M4IGZzX2NsZWFu OwogICAgICAgIF9fczggZnNfcm9ubHk7CiAgICAgICAgX19zOCBmc19mbGFnczsKICAgICAgICBf X3M4IGZzX2ZzbW50WzUxMiAtIDIxMl07Cgp9OwoKc3RydWN0IHVmc19zdXBlcl9ibG9ja19zZWNv bmQgewogICAgICAgIF9fczggZnNfZnNtbnRbMjEyXTsKICAgICAgICBfX3UzMiBmc19jZ3JvdG9y OwogICAgICAgIF9fdTMyIGZzX2NzcFszMV07CiAgICAgICAgX191MzIgZnNfbWF4Y2x1c3RlcjsK ICAgICAgICBfX3UzMiBmc19jcGM7CiAgICAgICAgX191MTYgZnNfb3Bvc3RibFs4Ml07Cn07Cgpz dHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrX3RoaXJkIHsKICAgICAgICBfX3UxNiBmc19vcG9zdGJsWzQ2 XTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg ICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAgICAg IF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJl Y29uMlsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3RhdGU7CiAgICAgICAg ICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAgICAg ICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgfSBmc19zdW47CiAgICAgICAg ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNv bls1M107CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAg ICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAgICAgICAgICAgICAgICAg ICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19x Ym1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsKICAg ICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAg ICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTBdOwogICAgICAgICAgICAgICAg ICAgICAgICBfX3MzMiBmc19jb250aWdzdW1zaXplOwogICAgICAgICAgICAgICAgICAgICAgICBf X3MzMiBmc19tYXhzeW1saW5rbGVuOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19p bm9kZWZtdDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbWF4ZmlsZXNpemVbMl07 CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAg ICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBf X3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0gZnNfNDQ7CiAgICAgICAgfSBmc191MjsK ICAgICAgICBfX3MzMiBmc19wb3N0Ymxmb3JtYXQ7CiAgICAgICAgX19zMzIgZnNfbnJwb3M7CiAg ICAgICAgX19zMzIgZnNfcG9zdGJsb2ZmOwogICAgICAgIF9fczMyIGZzX3JvdGJsb2ZmOwogICAg ICAgIF9fczMyIGZzX21hZ2ljOwogICAgICAgIF9fdTggZnNfc3BhY2VbMV07Cn07CiMgNjY3ICIv dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2Vmc19mc19zYi5oIiAxCiMgMjUg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZWZzX2ZzX3NiLmgiCnN0 cnVjdCBlZnNfc3VwZXIgewogICAgICAgIGludDMyX3QgZnNfc2l6ZTsKICAgICAgICBpbnQzMl90 IGZzX2ZpcnN0Y2c7CiAgICAgICAgaW50MzJfdCBmc19jZ2ZzaXplOwogICAgICAgIHNob3J0IGZz X2NnaXNpemU7CiAgICAgICAgc2hvcnQgZnNfc2VjdG9yczsKICAgICAgICBzaG9ydCBmc19oZWFk czsKICAgICAgICBzaG9ydCBmc19uY2c7CiAgICAgICAgc2hvcnQgZnNfZGlydHk7CiAgICAgICAg aW50MzJfdCBmc190aW1lOwogICAgICAgIGludDMyX3QgZnNfbWFnaWM7CiAgICAgICAgY2hhciBm c19mbmFtZVs2XTsKICAgICAgICBjaGFyIGZzX2ZwYWNrWzZdOwogICAgICAgIGludDMyX3QgZnNf Ym1zaXplOwogICAgICAgIGludDMyX3QgZnNfdGZyZWU7CiAgICAgICAgaW50MzJfdCBmc190aW5v ZGU7CiAgICAgICAgaW50MzJfdCBmc19ibWJsb2NrOwogICAgICAgIGludDMyX3QgZnNfcmVwbHNi OwogICAgICAgIGludDMyX3QgZnNfbGFzdGlhbGxvYzsKICAgICAgICBjaGFyIGZzX3NwYXJlWzIw XTsKICAgICAgICBpbnQzMl90IGZzX2NoZWNrc3VtOwp9OwoKCnN0cnVjdCBlZnNfc2JfaW5mbyB7 CiAgICAgICAgaW50MzJfdCBmc19tYWdpYzsKICAgICAgICBpbnQzMl90IGZzX3N0YXJ0OwogICAg ICAgIGludDMyX3QgZmlyc3RfYmxvY2s7CiAgICAgICAgaW50MzJfdCB0b3RhbF9ibG9ja3M7CiAg ICAgICAgaW50MzJfdCBncm91cF9zaXplOwogICAgICAgIGludDMyX3QgZGF0YV9mcmVlOwogICAg ICAgIGludDMyX3QgaW5vZGVfZnJlZTsKICAgICAgICBzaG9ydCBpbm9kZV9ibG9ja3M7CiAgICAg ICAgc2hvcnQgdG90YWxfZ3JvdXBzOwp9OwojIDY2OCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9yb21mc19mc19zYi5oIiAxCgoKCgoKc3RydWN0IHJvbWZzX3NiX2luZm8g ewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19tYXhzaXplOwp9OwojIDY2OSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaCIgMQojIDE0ICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NtYl9mc19zYi5oIgojIDEgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDE1ICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NtYl9mc19zYi5oIiAyCiMgMSAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zbWIuaCIgMQojIDEyICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NtYi5oIgojIDEgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDEzICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NtYi5oIiAyCgplbnVtIHNtYl9wcm90 b2NvbCB7CiAgICAgICAgU01CX1BST1RPQ09MX05PTkUsCiAgICAgICAgU01CX1BST1RPQ09MX0NP UkUsCiAgICAgICAgU01CX1BST1RPQ09MX0NPUkVQTFVTLAogICAgICAgIFNNQl9QUk9UT0NPTF9M QU5NQU4xLAogICAgICAgIFNNQl9QUk9UT0NPTF9MQU5NQU4yLAogICAgICAgIFNNQl9QUk9UT0NP TF9OVDEKfTsKCmVudW0gc21iX2Nhc2VfaG5kbCB7CiAgICAgICAgU01CX0NBU0VfREVGQVVMVCwK ICAgICAgICBTTUJfQ0FTRV9MT1dFUiwKICAgICAgICBTTUJfQ0FTRV9VUFBFUgp9OwoKc3RydWN0 IHNtYl9kc2thdHRyIHsKICAgICAgICBfX3UxNiB0b3RhbDsKICAgICAgICBfX3UxNiBhbGxvY2Js b2NrczsKICAgICAgICBfX3UxNiBibG9ja3NpemU7CiAgICAgICAgX191MTYgZnJlZTsKfTsKCnN0 cnVjdCBzbWJfY29ubl9vcHQgewoKCiAgICAgICAgdW5zaWduZWQgaW50IGZkOwoKICAgICAgICBl bnVtIHNtYl9wcm90b2NvbCBwcm90b2NvbDsKICAgICAgICBlbnVtIHNtYl9jYXNlX2huZGwgY2Fz ZV9oYW5kbGluZzsKCgoKICAgICAgICBfX3UzMiBtYXhfeG1pdDsKICAgICAgICBfX3UxNiBzZXJ2 ZXJfdWlkOwogICAgICAgIF9fdTE2IHRpZDsKCgogICAgICAgIF9fdTE2IHNlY21vZGU7CiAgICAg ICAgX191MTYgbWF4bXV4OwogICAgICAgIF9fdTE2IG1heHZjczsKICAgICAgICBfX3UxNiByYXdt b2RlOwogICAgICAgIF9fdTMyIHNlc3NrZXk7CgoKICAgICAgICBfX3UzMiBtYXhyYXc7CiAgICAg ICAgX191MzIgY2FwYWJpbGl0aWVzOwogICAgICAgIF9fczE2IHNlcnZlcnpvbmU7Cn07CgoKCgpz dHJ1Y3Qgc21iX25sc19jb2RlcGFnZSB7CiAgICAgICAgY2hhciBsb2NhbF9uYW1lWzIwXTsKICAg ICAgICBjaGFyIHJlbW90ZV9uYW1lWzIwXTsKfTsKIyA3OCAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9zbWIuaCIKc3RydWN0IHNtYl9mYXR0ciB7CgogICAgICAgIF9f dTE2IGF0dHI7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgZl9pbm87CiAgICAgICAgdW1vZGVfdCBm X21vZGU7CiAgICAgICAgbmxpbmtfdCBmX25saW5rOwogICAgICAgIHVpZF90IGZfdWlkOwogICAg ICAgIGdpZF90IGZfZ2lkOwogICAgICAgIGtkZXZfdCBmX3JkZXY7CiAgICAgICAgb2ZmX3QgZl9z aXplOwogICAgICAgIHRpbWVfdCBmX2F0aW1lOwogICAgICAgIHRpbWVfdCBmX210aW1lOwogICAg ICAgIHRpbWVfdCBmX2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZl9ibGtzaXplOwogICAg ICAgIHVuc2lnbmVkIGxvbmcgZl9ibG9ja3M7Cn07CgplbnVtIHNtYl9jb25uX3N0YXRlIHsKICAg ICAgICBDT05OX1ZBTElELAogICAgICAgIENPTk5fSU5WQUxJRCwKCiAgICAgICAgQ09OTl9SRVRS SUVELAogICAgICAgIENPTk5fUkVUUllJTkcKfTsKIyAxNiAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaCIgMgoKCgoKCgoKc3RydWN0IHNtYl9zYl9p bmZvIHsKICAgICAgICBlbnVtIHNtYl9jb25uX3N0YXRlIHN0YXRlOwogICAgICAgIHN0cnVjdCBm aWxlICogc29ja19maWxlOwoKICAgICAgICBzdHJ1Y3Qgc21iX21vdW50X2RhdGFfa2VybmVsICpt bnQ7CiAgICAgICAgdW5zaWduZWQgY2hhciAqdGVtcF9idWY7CgoKCgogICAgICAgIHVuc2lnbmVk IGludCBnZW5lcmF0aW9uOwogICAgICAgIHBpZF90IGNvbm5fcGlkOwogICAgICAgIHN0cnVjdCBz bWJfY29ubl9vcHQgb3B0OwoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKICAgICAgICB3 YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwoKICAgICAgICBfX3UzMiBwYWNrZXRfc2l6ZTsKICAgICAg ICB1bnNpZ25lZCBjaGFyICogcGFja2V0OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHJjbHM7CiAg ICAgICAgdW5zaWduZWQgc2hvcnQgZXJyOwoKCiAgICAgICAgdm9pZCAqZGF0YV9yZWFkeTsKCgog ICAgICAgIHN0cnVjdCBubHNfdGFibGUgKnJlbW90ZV9ubHM7CiAgICAgICAgc3RydWN0IG5sc190 YWJsZSAqbG9jYWxfbmxzOwoKCgoKICAgICAgICBjaGFyICpuYW1lX2J1ZjsKCiAgICAgICAgaW50 ICgqY29udmVydCkoY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50LAogICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBubHNfdGFibGUgKiwgc3RydWN0IG5sc190YWJsZSAqKTsKfTsKCgpz dGF0aWMgaW5saW5lIHZvaWQKc21iX2xvY2tfc2VydmVyKHN0cnVjdCBzbWJfc2JfaW5mbyAqc2Vy dmVyKQp7CiAgICAgICAgZG93bigmKHNlcnZlci0+c2VtKSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9p ZApzbWJfdW5sb2NrX3NlcnZlcihzdHJ1Y3Qgc21iX3NiX2luZm8gKnNlcnZlcikKewogICAgICAg IHVwKCYoc2VydmVyLT5zZW0pKTsKfQojIDY3MCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9oZnNfZnNfc2IuaCIgMQojIDE1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L2hmc19mc19zYi5oIgpzdHJ1Y3QgaGZzX25hbWU7Cgp0eXBlZGVmIGlu dCAoKmhmc19uYW1laW5fZm4pIChjaGFyICosIGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqKTsKdHlw ZWRlZiB2b2lkICgqaGZzX25hbWVvdXRfZm4pIChzdHJ1Y3QgaGZzX25hbWUgKiwgY29uc3QgY2hh ciAqLCBpbnQpOwp0eXBlZGVmIHZvaWQgKCpoZnNfaWZpbGxfZm4pIChzdHJ1Y3QgaW5vZGUgKiwg aW5vX3QsIGNvbnN0IGludCk7CgoKCgoKCnN0cnVjdCBoZnNfc2JfaW5mbyB7CiAgICAgICAgaW50 IG1hZ2ljOwogICAgICAgIHN0cnVjdCBoZnNfbWRiICpzX21kYjsKICAgICAgICBpbnQgc19xdWll dDsKCiAgICAgICAgaW50IHNfbG93ZXJjYXNlOwogICAgICAgIGludCBzX2FmcGQ7CiAgICAgICAg aW50IHNfdmVyc2lvbjsKICAgICAgICBoZnNfbmFtZWluX2ZuIHNfbmFtZWluOwoKCiAgICAgICAg aGZzX25hbWVvdXRfZm4gc19uYW1lb3V0OwoKCiAgICAgICAgaGZzX2lmaWxsX2ZuIHNfaWZpbGw7 CgogICAgICAgIGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqc19yZXNlcnZlZDE7CiAgICAgICAgY29u c3Qgc3RydWN0IGhmc19uYW1lICpzX3Jlc2VydmVkMjsKICAgICAgICBfX3UzMiBzX3R5cGU7CiAg ICAgICAgX191MzIgc19jcmVhdG9yOwogICAgICAgIHVtb2RlX3Qgc191bWFzazsKCiAgICAgICAg dWlkX3Qgc191aWQ7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAgICAgICAgY2hhciBzX2NvbnY7Cn07 CiMgNjcxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2FkZnNfZnNfc2Iu aCIgMQojIDEzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2FkZnNf ZnNfc2IuaCIKc3RydWN0IGFkZnNfZGlzY21hcDsKc3RydWN0IGFkZnNfZGlyX29wczsKCgoKCnN0 cnVjdCBhZGZzX3NiX2luZm8gewogICAgICAgIHN0cnVjdCBhZGZzX2Rpc2NtYXAgKnNfbWFwOwog ICAgICAgIHN0cnVjdCBhZGZzX2Rpcl9vcHMgKnNfZGlyOwoKICAgICAgICB1aWRfdCBzX3VpZDsK ICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1bW9kZV90IHNfb3duZXJfbWFzazsKICAgICAg ICB1bW9kZV90IHNfb3RoZXJfbWFzazsKCiAgICAgICAgX191MzIgc19pZHNfcGVyX3pvbmU7CiAg ICAgICAgX191MzIgc19pZGxlbjsKICAgICAgICBfX3UzMiBzX21hcF9zaXplOwogICAgICAgIHVu c2lnbmVkIGxvbmcgc19zaXplOwogICAgICAgIHNpZ25lZCBpbnQgc19tYXAyYmxrOwogICAgICAg IHVuc2lnbmVkIGludCBzX2xvZzJzaGFyZXNpemU7CiAgICAgICAgdW5zaWduZWQgaW50IHNfdmVy c2lvbjsKICAgICAgICB1bnNpZ25lZCBpbnQgc19uYW1lbGVuOwp9OwojIDY3MiAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9xbng0X2ZzX3NiLmgiIDEKIyAxNCAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9xbng0X2ZzX3NiLmgiCiMgMSAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9xbng0X2ZzLmgiIDEKIyAxMyAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9xbng0X2ZzLmgiCiMgMSAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9xbnh0eXBlcy5oIiAxCiMg MTQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcW54NF9mcy5oIiAy CiMgNDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcW54NF9mcy5o IgpzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSB7CiAgICAgICAgY2hhciBkaV9mbmFtZVsxNl07CiAg ICAgICAgcW54NF9vZmZfdCBkaV9zaXplOwogICAgICAgIHFueDRfeHRudF90IGRpX2ZpcnN0X3h0 bnQ7CiAgICAgICAgX191MzIgZGlfeGJsazsKICAgICAgICBfX3MzMiBkaV9mdGltZTsKICAgICAg ICBfX3MzMiBkaV9tdGltZTsKICAgICAgICBfX3MzMiBkaV9hdGltZTsKICAgICAgICBfX3MzMiBk aV9jdGltZTsKICAgICAgICBxbng0X254dG50X3QgZGlfbnVtX3h0bnRzOwogICAgICAgIHFueDRf bW9kZV90IGRpX21vZGU7CiAgICAgICAgcW54NF9tdWlkX3QgZGlfdWlkOwogICAgICAgIHFueDRf bWdpZF90IGRpX2dpZDsKICAgICAgICBxbng0X25saW5rX3QgZGlfbmxpbms7CiAgICAgICAgX191 OCBkaV96ZXJvWzRdOwogICAgICAgIHFueDRfZnR5cGVfdCBkaV90eXBlOwogICAgICAgIF9fdTgg ZGlfc3RhdHVzOwp9OwoKc3RydWN0IHFueDRfbGlua19pbmZvIHsKICAgICAgICBjaGFyIGRsX2Zu YW1lWzQ4XTsKICAgICAgICBfX3UzMiBkbF9pbm9kZV9ibGs7CiAgICAgICAgX191OCBkbF9pbm9k ZV9uZHg7CiAgICAgICAgX191OCBkbF9zcGFyZVsxMF07CiAgICAgICAgX191OCBkbF9zdGF0dXM7 Cn07CgpzdHJ1Y3QgcW54NF94YmxrIHsKICAgICAgICBfX3UzMiB4YmxrX25leHRfeGJsazsKICAg ICAgICBfX3UzMiB4YmxrX3ByZXZfeGJsazsKICAgICAgICBfX3U4IHhibGtfbnVtX3h0bnRzOwog ICAgICAgIF9fdTggeGJsa19zcGFyZVszXTsKICAgICAgICBfX3MzMiB4YmxrX251bV9ibG9ja3M7 CiAgICAgICAgcW54NF94dG50X3QgeGJsa194dG50c1s2MF07CiAgICAgICAgY2hhciB4YmxrX3Np Z25hdHVyZVs4XTsKICAgICAgICBxbng0X3h0bnRfdCB4YmxrX2ZpcnN0X3h0bnQ7Cn07CgpzdHJ1 Y3QgcW54NF9zdXBlcl9ibG9jayB7CiAgICAgICAgc3RydWN0IHFueDRfaW5vZGVfZW50cnkgUm9v dERpcjsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSBJbm9kZTsKICAgICAgICBzdHJ1 Y3QgcW54NF9pbm9kZV9lbnRyeSBCb290OwogICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5 IEFsdEJvb3Q7Cn07CiMgMTAwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L3FueDRfZnMuaCIKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKnFueDRfbG9va3VwKHN0cnVjdCBp bm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBx bng0X2NvdW50X2ZyZWVfYmxvY2tzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwpleHRlcm4gdW5z aWduZWQgbG9uZyBxbng0X2Jsb2NrX21hcChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb25nIGlibG9j ayk7CgpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICpxbng0X2dldGJsayhzdHJ1Y3QgaW5vZGUg KiwgaW50LCBpbnQpOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICpxbng0X2JyZWFkKHN0cnVj dCBpbm9kZSAqLCBpbnQsIGludCk7CgpleHRlcm4gaW50IHFueDRfY3JlYXRlKHN0cnVjdCBpbm9k ZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBtb2RlKTsKZXh0ZXJuIHN0cnVjdCBp bm9kZV9vcGVyYXRpb25zIHFueDRfZmlsZV9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gc3RydWN0 IGlub2RlX29wZXJhdGlvbnMgcW54NF9kaXJfaW5vZGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVj dCBmaWxlX29wZXJhdGlvbnMgcW54NF9maWxlX29wZXJhdGlvbnM7CmV4dGVybiBzdHJ1Y3QgZmls ZV9vcGVyYXRpb25zIHFueDRfZGlyX29wZXJhdGlvbnM7CmV4dGVybiBpbnQgcW54NF9pc19mcmVl KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGxvbmcgYmxvY2spOwpleHRlcm4gaW50IHFueDRfc2V0 X2JpdG1hcChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBsb25nIGJsb2NrLCBpbnQgYnVzeSk7CmV4 dGVybiBpbnQgcW54NF9jcmVhdGUoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGRlbnRyeSAq ZGVudHJ5LCBpbnQgbW9kZSk7CmV4dGVybiB2b2lkIHFueDRfdHJ1bmNhdGUoc3RydWN0IGlub2Rl ICppbm9kZSk7CmV4dGVybiB2b2lkIHFueDRfZnJlZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2Rl KTsKZXh0ZXJuIGludCBxbng0X3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRy eSAqZGVudHJ5KTsKZXh0ZXJuIGludCBxbng0X3JtZGlyKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1 Y3QgZGVudHJ5ICpkZW50cnkpOwpleHRlcm4gaW50IHFueDRfc3luY19maWxlKHN0cnVjdCBmaWxl ICpmaWxlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCk7CmV4dGVybiBpbnQgcW54NF9zeW5j X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gaW50IHFueDRfZ2V0X2Jsb2NrKHN0 cnVjdCBpbm9kZSAqaW5vZGUsIGxvbmcgaWJsb2NrLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBp bnQgY3JlYXRlKTsKIyAxNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC9xbng0X2ZzX3NiLmgiIDIKCgoKCgpzdHJ1Y3QgcW54NF9zYl9pbmZvIHsKICAgICAgICBzdHJ1 Y3QgYnVmZmVyX2hlYWQgKnNiX2J1ZjsKICAgICAgICBzdHJ1Y3QgcW54NF9zdXBlcl9ibG9jayAq c2I7CiAgICAgICAgdW5zaWduZWQgaW50IFZlcnNpb247CiAgICAgICAgc3RydWN0IHFueDRfaW5v ZGVfZW50cnkgKkJpdE1hcDsKfTsKIyA2NzMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIgMQoKCgoKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAxCiMgMTYgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiCiMgMSAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMgMTcgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDIKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQojIDE4ICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAyCiMgMSAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYml0b3BzLmgiIDEKIyAxOSAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90cXVldWUuaCIgMgojIDEgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAxCiMgMjAgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDIKIyAzOCAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90cXVldWUuaCIKc3RydWN0IHRxX3N0 cnVjdCB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogICAgICAgIHVuc2lnbmVkIGxv bmcgc3luYzsKICAgICAgICB2b2lkICgqcm91dGluZSkodm9pZCAqKTsKICAgICAgICB2b2lkICpk YXRhOwp9OwojIDY0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3Rx dWV1ZS5oIgp0eXBlZGVmIHN0cnVjdCBsaXN0X2hlYWQgdGFza19xdWV1ZTsKCgoKCmV4dGVybiB0 YXNrX3F1ZXVlIHRxX3RpbWVyX1JmYTNlOWFjYywgdHFfaW1tZWRpYXRlX1IwZGEwZGNkMSwgdHFf ZGlza19SNTM3M2RiYjY7CiMgOTQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvdHF1ZXVlLmgiCmV4dGVybiBzcGlubG9ja190IHRxdWV1ZV9sb2NrOwoKCgoKCnN0YXRp YyBpbmxpbmUgaW50IHF1ZXVlX3Rhc2soc3RydWN0IHRxX3N0cnVjdCAqYmhfcG9pbnRlciwgdGFz a19xdWV1ZSAqYmhfbGlzdCkKewogICAgICAgIGludCByZXQgPSAwOwogICAgICAgIGlmICghdGVz dF9hbmRfc2V0X2JpdCgwLCZiaF9wb2ludGVyLT5zeW5jKSkgewogICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBmbGFnczsKICAgICAgICAgICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxl X18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsgKHZv aWQpKCZ0cXVldWVfbG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgbGlzdF9hZGRf dGFpbCgmYmhfcG9pbnRlci0+bGlzdCwgYmhfbGlzdCk7CiAgICAgICAgICAgICAgICBkbyB7IGRv IHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6 ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAg IHJldCA9IDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXQ7Cn0KCgoKCgpleHRlcm4gdm9p ZCBfX3J1bl90YXNrX3F1ZXVlX1IzODg5YjExYyh0YXNrX3F1ZXVlICpsaXN0KTsKCnN0YXRpYyBp bmxpbmUgdm9pZCBydW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0KQp7CiAgICAgICAgaWYg KCghbGlzdF9lbXB0eSgmKmxpc3QpKSkKICAgICAgICAgICAgICAgIF9fcnVuX3Rhc2tfcXVldWVf UjM4ODliMTFjKGxpc3QpOwp9CiMgOSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC9yZWlzZXJmc19mc19zYi5oIiAyCiMgMjYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIKc3RydWN0IHJlaXNlcmZzX3N1cGVy X2Jsb2NrCnsKICBfX3UzMiBzX2Jsb2NrX2NvdW50OwogIF9fdTMyIHNfZnJlZV9ibG9ja3M7CiAg X191MzIgc19yb290X2Jsb2NrOwogIF9fdTMyIHNfam91cm5hbF9ibG9jazsKICBfX3UzMiBzX2pv dXJuYWxfZGV2OwojIDQzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L3JlaXNlcmZzX2ZzX3NiLmgiCiAgX191MzIgc19vcmlnX2pvdXJuYWxfc2l6ZTsKICBfX3UzMiBz X2pvdXJuYWxfdHJhbnNfbWF4IDsKICBfX3UzMiBzX2pvdXJuYWxfYmxvY2tfY291bnQgOwogIF9f dTMyIHNfam91cm5hbF9tYXhfYmF0Y2ggOwogIF9fdTMyIHNfam91cm5hbF9tYXhfY29tbWl0X2Fn ZSA7CiAgX191MzIgc19qb3VybmFsX21heF90cmFuc19hZ2UgOwogIF9fdTE2IHNfYmxvY2tzaXpl OwogIF9fdTE2IHNfb2lkX21heHNpemU7CiAgX191MTYgc19vaWRfY3Vyc2l6ZTsKICBfX3UxNiBz X3N0YXRlOwogIGNoYXIgc19tYWdpY1sxMl07CiAgX191MzIgc19oYXNoX2Z1bmN0aW9uX2NvZGU7 CiAgX191MTYgc190cmVlX2hlaWdodDsKICBfX3UxNiBzX2JtYXBfbnI7CiAgX191MTYgc192ZXJz aW9uOwoKCgoKICBfX3UxNiBzX3Jlc2VydmVkOwogIF9fdTMyIHNfaW5vZGVfZ2VuZXJhdGlvbjsK ICBjaGFyIHNfdW51c2VkWzEyNF0gOwp9IF9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSk7CgoK CgpzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2tfdjEKewogIF9fdTMyIHNfYmxvY2tfY291bnQ7 CiAgX191MzIgc19mcmVlX2Jsb2NrczsKICBfX3UzMiBzX3Jvb3RfYmxvY2s7CiAgX191MzIgc19q b3VybmFsX2Jsb2NrOwogIF9fdTMyIHNfam91cm5hbF9kZXY7CiAgX191MzIgc19vcmlnX2pvdXJu YWxfc2l6ZTsKICBfX3UzMiBzX2pvdXJuYWxfdHJhbnNfbWF4IDsKICBfX3UzMiBzX2pvdXJuYWxf YmxvY2tfY291bnQgOwogIF9fdTMyIHNfam91cm5hbF9tYXhfYmF0Y2ggOwogIF9fdTMyIHNfam91 cm5hbF9tYXhfY29tbWl0X2FnZSA7CiAgX191MzIgc19qb3VybmFsX21heF90cmFuc19hZ2UgOwog IF9fdTE2IHNfYmxvY2tzaXplOwogIF9fdTE2IHNfb2lkX21heHNpemU7CiAgX191MTYgc19vaWRf Y3Vyc2l6ZTsKICBfX3UxNiBzX3N0YXRlOwogIGNoYXIgc19tYWdpY1sxNl07CiAgX191MTYgc190 cmVlX2hlaWdodDsKICBfX3UxNiBzX2JtYXBfbnI7CiAgX191MzIgc19yZXNlcnZlZDsKfSBfX2F0 dHJpYnV0ZV9fICgoX19wYWNrZWRfXykpOwojIDE0OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIgpzdHJ1Y3QgcmVpc2VyZnNfam91cm5h bF9jbm9kZSB7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCA7CiAga2Rldl90IGRldiA7CiAgdW5z aWduZWQgbG9uZyBibG9ja25yIDsKICBpbnQgc3RhdGUgOwogIHN0cnVjdCByZWlzZXJmc19qb3Vy bmFsX2xpc3QgKmpsaXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqbmV4dCA7 CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKnByZXYgOwogIHN0cnVjdCByZWlzZXJm c19qb3VybmFsX2Nub2RlICpocHJldiA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUg KmhuZXh0IDsKfTsKCnN0cnVjdCByZWlzZXJmc19iaXRtYXBfbm9kZSB7CiAgaW50IGlkIDsKICBj aGFyICpkYXRhIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3QgOwp9IDsKCnN0cnVjdCByZWlzZXJm c19saXN0X2JpdG1hcCB7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCAqam91cm5hbF9s aXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfYml0bWFwX25vZGUgKipiaXRtYXBzIDsKfSA7CgoKCgpz dHJ1Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25faGFuZGxlIHsKCiAgY2hhciAqdF9jYWxsZXIgOwog IGludCB0X2Jsb2Nrc19sb2dnZWQgOwogIGludCB0X2Jsb2Nrc19hbGxvY2F0ZWQgOwogIHVuc2ln bmVkIGxvbmcgdF90cmFuc19pZCA7CiAgc3RydWN0IHN1cGVyX2Jsb2NrICp0X3N1cGVyIDsKCgp9 IDsKCgoKCgoKCnN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3QgewogIHVuc2lnbmVkIGxvbmcg al9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xlbiA7CiAgYXRvbWljX3Qgal9ub256ZXJvbGVu IDsKICBhdG9taWNfdCBqX2NvbW1pdF9sZWZ0IDsKICBhdG9taWNfdCBqX2ZsdXNoaW5nIDsKICBh dG9taWNfdCBqX2NvbW1pdF9mbHVzaGluZyA7CiAgYXRvbWljX3Qgal9vbGRlcl9jb21taXRzX2Rv bmUgOwogIHVuc2lnbmVkIGxvbmcgal90cmFuc19pZCA7CiAgdGltZV90IGpfdGltZXN0YW1wIDsK ICBzdHJ1Y3QgcmVpc2VyZnNfbGlzdF9iaXRtYXAgKmpfbGlzdF9iaXRtYXAgOwogIHN0cnVjdCBi dWZmZXJfaGVhZCAqal9jb21taXRfYmggOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2Rl ICpqX3JlYWxibG9jayA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfZnJlZWRs aXN0IDsKICB3YWl0X3F1ZXVlX2hlYWRfdCBqX2NvbW1pdF93YWl0IDsKICB3YWl0X3F1ZXVlX2hl YWRfdCBqX2ZsdXNoX3dhaXQgOwp9IDsKCnN0cnVjdCByZWlzZXJmc19wYWdlX2xpc3QgOwoKc3Ry dWN0IHJlaXNlcmZzX2pvdXJuYWwgewogIHN0cnVjdCBidWZmZXJfaGVhZCAqKiBqX2FwX2Jsb2Nr cyA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfbGFzdCA7CiAgc3RydWN0IHJl aXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfZmlyc3QgOwoKICBpbnQgal9zdGF0ZSA7CiAgdW5zaWdu ZWQgbG9uZyBqX3RyYW5zX2lkIDsKICB1bnNpZ25lZCBsb25nIGpfbW91bnRfaWQgOwogIHVuc2ln bmVkIGxvbmcgal9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xlbiA7CiAgdW5zaWduZWQgbG9u ZyBqX2xlbl9hbGxvYyA7CiAgYXRvbWljX3Qgal93Y291bnQgOwogIHVuc2lnbmVkIGxvbmcgal9i Y291bnQgOwogIHVuc2lnbmVkIGxvbmcgal9maXJzdF91bmZsdXNoZWRfb2Zmc2V0IDsKICB1bnNp Z25lZCBsb25nIGpfbGFzdF9mbHVzaF90cmFuc19pZCA7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICpq X2hlYWRlcl9iaCA7CgoKCgogIHN0cnVjdCByZWlzZXJmc19wYWdlX2xpc3QgKmpfZmx1c2hfcGFn ZXMgOwogIHRpbWVfdCBqX3RyYW5zX3N0YXJ0X3RpbWUgOwogIHdhaXRfcXVldWVfaGVhZF90IGpf d2FpdCA7CiAgYXRvbWljX3Qgal93bG9jayA7CiAgd2FpdF9xdWV1ZV9oZWFkX3Qgal9qb2luX3dh aXQgOwogIGF0b21pY190IGpfamxvY2sgOwogIGludCBqX2pvdXJuYWxfbGlzdF9pbmRleCA7CiAg aW50IGpfbGlzdF9iaXRtYXBfaW5kZXggOwogIGludCBqX211c3Rfd2FpdCA7CiAgaW50IGpfbmV4 dF9mdWxsX2ZsdXNoIDsKICBpbnQgal9uZXh0X2FzeW5jX2ZsdXNoIDsKCiAgaW50IGpfY25vZGVf dXNlZCA7CiAgaW50IGpfY25vZGVfZnJlZSA7CgogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nu b2RlICpqX2Nub2RlX2ZyZWVfbGlzdCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUg KmpfY25vZGVfZnJlZV9vcmlnIDsKCiAgaW50IGpfZnJlZV9iaXRtYXBfbm9kZXMgOwogIGludCBq X3VzZWRfYml0bWFwX25vZGVzIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGpfYml0bWFwX25vZGVzIDsK ICBzdHJ1Y3QgaW5vZGUgal9kdW1teV9pbm9kZSA7CiAgc3RydWN0IHJlaXNlcmZzX2xpc3RfYml0 bWFwIGpfbGlzdF9iaXRtYXBbNV0gOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3Qgal9q b3VybmFsX2xpc3RbNjRdIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9oYXNo X3RhYmxlWzgxOTJdIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9saXN0X2hh c2hfdGFibGVbODE5Ml0gOwoKICBzdHJ1Y3QgbGlzdF9oZWFkIGpfcHJlYWxsb2NfbGlzdDsKfTsK CgoKCnR5cGVkZWYgX191MzIgKCpoYXNoZl90KSAoY29uc3QgY2hhciAqLCBpbnQpOwoKCnN0cnVj dCByZWlzZXJmc19zYl9pbmZvCnsKICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfc2JoOwoKCiAg ICBzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2sgKiBzX3JzOwogICAgc3RydWN0IGJ1ZmZlcl9o ZWFkICoqIHNfYXBfYml0bWFwOwogICAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWwgKnNfam91cm5h bCA7CiAgICB1bnNpZ25lZCBzaG9ydCBzX21vdW50X3N0YXRlOwoKCiAgICB2b2lkICgqZW5kX2lv X2hhbmRsZXIpKHN0cnVjdCBidWZmZXJfaGVhZCAqLCBpbnQpOwogICAgaGFzaGZfdCBzX2hhc2hf ZnVuY3Rpb247CgoKICAgIHVuc2lnbmVkIGxvbmcgc19tb3VudF9vcHQ7CgoKCgogICAgd2FpdF9x dWV1ZV9oZWFkX3Qgc193YWl0OwoKICAgIGF0b21pY190IHNfZ2VuZXJhdGlvbl9jb3VudGVyOwoK CgogICAgaW50IHNfa21hbGxvY3M7CiAgICBpbnQgc19kaXNrX3JlYWRzOwogICAgaW50IHNfZGlz a193cml0ZXM7CiAgICBpbnQgc19maXhfbm9kZXM7CiAgICBpbnQgc19kb19iYWxhbmNlOwogICAg aW50IHNfdW5uZWVkZWRfbGVmdF9uZWlnaGJvcjsKICAgIGludCBzX2dvb2Rfc2VhcmNoX2J5X2tl eV9yZWFkYTsKICAgIGludCBzX2JtYXBzOwogICAgaW50IHNfYm1hcHNfd2l0aG91dF9zZWFyY2g7 CiAgICBpbnQgc19kaXJlY3QyaW5kaXJlY3Q7CiAgICBpbnQgc19pbmRpcmVjdDJkaXJlY3Q7Cn07 CiMgMzYwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZz X2ZzX3NiLmgiCnZvaWQgcmVpc2VyZnNfZmlsZV9idWZmZXIgKHN0cnVjdCBidWZmZXJfaGVhZCAq IGJoLCBpbnQgbGlzdCk7CmludCByZWlzZXJmc19pc19zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sg KnMpIDsKaW50IGpvdXJuYWxfbWFya19kaXJ0eShzdHJ1Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25f aGFuZGxlICosIHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKSA7 CmludCBmbHVzaF9vbGRfY29tbWl0cyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMsIGludCkgOwppbnQg c2hvd19yZWlzZXJmc19sb2Nrcyh2b2lkKSA7CmludCByZWlzZXJmc19yZXNpemUoc3RydWN0IHN1 cGVyX2Jsb2NrICosIHVuc2lnbmVkIGxvbmcpIDsKIyA2NzQgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvYmZzX2ZzX3NiLmgiIDEKIyAxMiAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9iZnNfZnNfc2IuaCIKc3RydWN0IGJmc19zYl9pbmZvIHsK ICAgICAgICB1bnNpZ25lZCBsb25nIHNpX2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNp X2ZyZWViOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfZnJlZWk7CiAgICAgICAgdW5zaWduZWQg bG9uZyBzaV9sZl9pb2ZmOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGZfc2JsazsKICAgICAg ICB1bnNpZ25lZCBsb25nIHNpX2xmX2VibGs7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9sYXN0 aTsKICAgICAgICBjaGFyICogc2lfaW1hcDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBz aV9zYmg7CiAgICAgICAgc3RydWN0IGJmc19zdXBlcl9ibG9jayAqIHNpX2Jmc19zYjsKfTsKIyA2 NzUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiIDEK IyAyNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC91ZGZfZnNfc2Iu aCIKI3ByYWdtYSBwYWNrKDEpCiMgMzQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvdWRmX2ZzX3NiLmgiCnN0cnVjdCB1ZGZfc3BhcmluZ19kYXRhCnsKICAgICAgICBf X3UxNiBzX3BhY2tldF9sZW47CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzX3NwYXJfbWFw WzRdOwp9OwoKc3RydWN0IHVkZl92aXJ0dWFsX2RhdGEKewogICAgICAgIF9fdTMyIHNfbnVtX2Vu dHJpZXM7CiAgICAgICAgX191MTYgc19zdGFydF9vZmZzZXQ7Cn07CgpzdHJ1Y3QgdWRmX2JpdG1h cAp7CiAgICAgICAgX191MzIgc19leHRMZW5ndGg7CiAgICAgICAgX191MzIgc19leHRQb3NpdGlv bjsKICAgICAgICBfX3UxNiBzX25yX2dyb3VwczsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQg KipzX2Jsb2NrX2JpdG1hcDsKfTsKCnN0cnVjdCB1ZGZfcGFydF9tYXAKewogICAgICAgIHVuaW9u CiAgICAgICAgewogICAgICAgICAgICAgICAgc3RydWN0IHVkZl9iaXRtYXAgKnNfYml0bWFwOwog ICAgICAgICAgICAgICAgc3RydWN0IGlub2RlICpzX3RhYmxlOwogICAgICAgIH0gc191c3BhY2U7 CiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRmX2JpdG1h cCAqc19iaXRtYXA7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKnNfdGFibGU7CiAgICAg ICAgfSBzX2ZzcGFjZTsKICAgICAgICBfX3UzMiBzX3BhcnRpdGlvbl9yb290OwogICAgICAgIF9f dTMyIHNfcGFydGl0aW9uX2xlbjsKICAgICAgICBfX3UxNiBzX3BhcnRpdGlvbl90eXBlOwogICAg ICAgIF9fdTE2IHNfcGFydGl0aW9uX251bTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAg ICAgICAgICAgIHN0cnVjdCB1ZGZfc3BhcmluZ19kYXRhIHNfc3BhcmluZzsKICAgICAgICAgICAg ICAgIHN0cnVjdCB1ZGZfdmlydHVhbF9kYXRhIHNfdmlydHVhbDsKICAgICAgICB9IHNfdHlwZV9z cGVjaWZpYzsKICAgICAgICBfX3UzMiAoKnNfcGFydGl0aW9uX2Z1bmMpKHN0cnVjdCBzdXBlcl9i bG9jayAqLCBfX3UzMiwgX191MTYsIF9fdTMyKTsKICAgICAgICBfX3UxNiBzX3ZvbHVtZXNlcW51 bTsKICAgICAgICBfX3UxNiBzX3BhcnRpdGlvbl9mbGFnczsKfTsKCiNwcmFnbWEgcGFjaygpCgpz dHJ1Y3QgdWRmX3NiX2luZm8KewogICAgICAgIHN0cnVjdCB1ZGZfcGFydF9tYXAgKnNfcGFydG1h cHM7CiAgICAgICAgX191OCBzX3ZvbGlkZW50WzMyXTsKCgogICAgICAgIF9fdTE2IHNfcGFydGl0 aW9uczsKICAgICAgICBfX3UxNiBzX3BhcnRpdGlvbjsKCgogICAgICAgIF9fdTMyIHNfc2Vzc2lv bjsKICAgICAgICBfX3UzMiBzX2FuY2hvcls0XTsKICAgICAgICBfX3UzMiBzX2xhc3RibG9jazsK CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzX2x2aWRiaDsKCgogICAgICAgIG1vZGVfdCBz X3VtYXNrOwogICAgICAgIGdpZF90IHNfZ2lkOwogICAgICAgIHVpZF90IHNfdWlkOwoKCiAgICAg ICAgdGltZV90IHNfcmVjb3JkdGltZTsKCgogICAgICAgIF9fdTE2IHNfc2VyaWFsbnVtOwoKCiAg ICAgICAgX191MTYgc191ZGZyZXY7CgoKICAgICAgICBfX3UzMiBzX2ZsYWdzOwoKCiAgICAgICAg c3RydWN0IG5sc190YWJsZSAqc19ubHNfbWFwOwoKCiAgICAgICAgc3RydWN0IGlub2RlICpzX3Zh dDsKfTsKIyA2NzYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMu aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbmNwX2Zz X3NiLmgiIDEKIyAxMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9u Y3BfZnNfc2IuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L3R5cGVzLmgiIDEKIyAxMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC9uY3BfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvbmNwX21vdW50LmgiIDEKIyAxMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9uY3BfbW91bnQuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p bmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9uY3BfbW91bnQuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvbmNwLmgiIDEKIyAxMyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9uY3AuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p bmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxNCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9uY3AuaCIgMgojIDIyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p bmNsdWRlL2xpbnV4L25jcC5oIgpzdHJ1Y3QgbmNwX3JlcXVlc3RfaGVhZGVyIHsKICAgICAgICBf X3UxNiB0eXBlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggc2VxdWVuY2Ug X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25uX2xvdyBfX2F0dHJpYnV0 ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IHRhc2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7 CiAgICAgICAgX191OCBjb25uX2hpZ2ggX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAg X191OCBmdW5jdGlvbiBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGRhdGFb MF0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CgoKCgpzdHJ1Y3QgbmNwX3JlcGx5X2hlYWRl ciB7CiAgICAgICAgX191MTYgdHlwZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf X3U4IHNlcXVlbmNlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29ubl9s b3cgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCB0YXNrIF9fYXR0cmlidXRl X18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29ubl9oaWdoIF9fYXR0cmlidXRlX18oKHBhY2tl ZCkpOwogICAgICAgIF9fdTggY29tcGxldGlvbl9jb2RlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp OwogICAgICAgIF9fdTggY29ubmVjdGlvbl9zdGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK ICAgICAgICBfX3U4IGRhdGFbMF0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CgoKCnN0cnVj dCBuY3Bfdm9sdW1lX2luZm8gewogICAgICAgIF9fdTMyIHRvdGFsX2Jsb2NrczsKICAgICAgICBf X3UzMiBmcmVlX2Jsb2NrczsKICAgICAgICBfX3UzMiBwdXJnZWFibGVfYmxvY2tzOwogICAgICAg IF9fdTMyIG5vdF95ZXRfcHVyZ2VhYmxlX2Jsb2NrczsKICAgICAgICBfX3UzMiB0b3RhbF9kaXJf ZW50cmllczsKICAgICAgICBfX3UzMiBhdmFpbGFibGVfZGlyX2VudHJpZXM7CiAgICAgICAgX191 OCBzZWN0b3JzX3Blcl9ibG9jazsKICAgICAgICBjaGFyIHZvbHVtZV9uYW1lWygxNikgKyAxXTsK fTsKIyAxMTIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbmNwLmgi CnN0cnVjdCBud19pbmZvX3N0cnVjdCB7CiAgICAgICAgX191MzIgc3BhY2VBbGxvYyBfX2F0dHJp YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBhdHRyaWJ1dGVzIF9fYXR0cmlidXRlX18o KHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGZsYWdzIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog ICAgICAgIF9fdTMyIGRhdGFTdHJlYW1TaXplIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg ICAgIF9fdTMyIHRvdGFsU3RyZWFtU2l6ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAg ICBfX3UxNiBudW1iZXJPZlN0cmVhbXMgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAg X191MTYgY3JlYXRpb25UaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2 IGNyZWF0aW9uRGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBjcmVh dG9ySUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbW9kaWZ5VGltZSBf X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBtb2RpZnlEYXRlIF9fYXR0cmli dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG1vZGlmaWVySUQgX19hdHRyaWJ1dGVfXygo cGFja2VkKSk7CiAgICAgICAgX191MTYgbGFzdEFjY2Vzc0RhdGUgX19hdHRyaWJ1dGVfXygocGFj a2VkKSk7CiAgICAgICAgX191MTYgYXJjaGl2ZVRpbWUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7 CiAgICAgICAgX191MTYgYXJjaGl2ZURhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAg ICAgX191MzIgYXJjaGl2ZXJJRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3Ux NiBpbmhlcml0ZWRSaWdodHNNYXNrIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9f dTMyIGRpckVudE51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBEb3NE aXJOdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgdm9sTnVtYmVyIF9f YXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIEVBRGF0YVNpemUgX19hdHRyaWJ1 dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgRUFLZXlDb3VudCBfX2F0dHJpYnV0ZV9fKChw YWNrZWQpKTsKICAgICAgICBfX3UzMiBFQUtleVNpemUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7 CiAgICAgICAgX191MzIgTlNDcmVhdG9yIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAg IF9fdTggbmFtZUxlbiBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGVudHJ5 TmFtZVsyNTZdIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwp9OwojIDE1NiAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9uY3AuaCIKc3RydWN0IG53X21vZGlmeV9kb3Nf aW5mbyB7CiAgICAgICAgX191MzIgYXR0cmlidXRlcyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK ICAgICAgICBfX3UxNiBjcmVhdGlvbkRhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAg ICAgX191MTYgY3JlYXRpb25UaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9f dTMyIGNyZWF0b3JJRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBtb2Rp ZnlEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1vZGlmeVRpbWUg X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgbW9kaWZpZXJJRCBfX2F0dHJp YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlRGF0ZSBfX2F0dHJpYnV0ZV9f KChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlVGltZSBfX2F0dHJpYnV0ZV9fKChwYWNr ZWQpKTsKICAgICAgICBfX3UzMiBhcmNoaXZlcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog ICAgICAgIF9fdTE2IGxhc3RBY2Nlc3NEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg ICAgIF9fdTE2IGluaGVyaXRhbmNlR3JhbnRNYXNrIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog ICAgICAgIF9fdTE2IGluaGVyaXRhbmNlUmV2b2tlTWFzayBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp KTsKICAgICAgICBfX3UzMiBtYXhpbXVtU3BhY2UgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07 CgpzdHJ1Y3Qgbndfc2VhcmNoX3NlcXVlbmNlIHsKICAgICAgICBfX3U4IHZvbE51bWJlciBfX2F0 dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBkaXJCYXNlIF9fYXR0cmlidXRlX18o KHBhY2tlZCkpOwogICAgICAgIF9fdTMyIHNlcXVlbmNlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp Owp9OwojIDEzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L25jcF9t b3VudC5oIiAyCiMgMjUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv bmNwX21vdW50LmgiCnN0cnVjdCBuY3BfbW91bnRfZGF0YSB7CiAgICAgICAgaW50IHZlcnNpb247 CiAgICAgICAgdW5zaWduZWQgaW50IG5jcF9mZDsKICAgICAgICBfX2tlcm5lbF91aWRfdCBtb3Vu dGVkX3VpZDsKICAgICAgICBfX2tlcm5lbF9waWRfdCB3ZG9nX3BpZDsKCiAgICAgICAgdW5zaWdu ZWQgY2hhciBtb3VudGVkX3ZvbFsoMTYpICsgMV07CiAgICAgICAgdW5zaWduZWQgaW50IHRpbWVf b3V0OwoKICAgICAgICB1bnNpZ25lZCBpbnQgcmV0cnlfY291bnQ7CiAgICAgICAgdW5zaWduZWQg aW50IGZsYWdzOwoKICAgICAgICBfX2tlcm5lbF91aWRfdCB1aWQ7CiAgICAgICAgX19rZXJuZWxf Z2lkX3QgZ2lkOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBmaWxlX21vZGU7CiAgICAgICAgX19r ZXJuZWxfbW9kZV90IGRpcl9tb2RlOwp9OwoKCgpzdHJ1Y3QgbmNwX21vdW50X2RhdGFfdjQgewog ICAgICAgIGludCB2ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgoKICAgICAg ICB1bnNpZ25lZCBsb25nIG1vdW50ZWRfdWlkOwoKICAgICAgICBsb25nIHdkb2dfcGlkOwoKICAg ICAgICB1bnNpZ25lZCBpbnQgbmNwX2ZkOwogICAgICAgIHVuc2lnbmVkIGludCB0aW1lX291dDsK CiAgICAgICAgdW5zaWduZWQgaW50IHJldHJ5X2NvdW50OwoKCgogICAgICAgIHVuc2lnbmVkIGxv bmcgdWlkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZ2lkOwoKICAgICAgICB1bnNpZ25lZCBsb25n IGZpbGVfbW9kZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGRpcl9tb2RlOwp9OwoKCgpzdHJ1Y3Qg bmNwX21vdW50X2RhdGFfa2VybmVsIHsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAg ICAgIHVuc2lnbmVkIGludCBpbnRfZmxhZ3M7CgogICAgICAgIF9fa2VybmVsX3VpZDMyX3QgbW91 bnRlZF91aWQ7CiAgICAgICAgX19rZXJuZWxfcGlkX3Qgd2RvZ19waWQ7CiAgICAgICAgdW5zaWdu ZWQgaW50IG5jcF9mZDsKICAgICAgICB1bnNpZ25lZCBpbnQgdGltZV9vdXQ7CgogICAgICAgIHVu c2lnbmVkIGludCByZXRyeV9jb3VudDsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1vdW50ZWRfdm9s WygxNikgKyAxXTsKICAgICAgICBfX2tlcm5lbF91aWQzMl90IHVpZDsKICAgICAgICBfX2tlcm5l bF9naWQzMl90IGdpZDsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZmlsZV9tb2RlOwogICAgICAg IF9fa2VybmVsX21vZGVfdCBkaXJfbW9kZTsKfTsKIyAxMyAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9uY3BfZnNfc2IuaCIgMgoKCgoKCnN0cnVjdCBuY3Bfc2VydmVy IHsKCiAgICAgICAgc3RydWN0IG5jcF9tb3VudF9kYXRhX2tlcm5lbCBtOwoKCgogICAgICAgIF9f dTggbmFtZV9zcGFjZVsoNjQpICsgMl07CgogICAgICAgIHN0cnVjdCBmaWxlICpuY3BfZmlscDsK CiAgICAgICAgdTggc2VxdWVuY2U7CiAgICAgICAgdTggdGFzazsKICAgICAgICB1MTYgY29ubmVj dGlvbjsKCiAgICAgICAgdTggY29tcGxldGlvbjsKICAgICAgICB1OCBjb25uX3N0YXR1czsKCgoK ICAgICAgICBpbnQgYnVmZmVyX3NpemU7CgogICAgICAgIGludCByZXBseV9zaXplOwoKICAgICAg ICBpbnQgcGFja2V0X3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciAqcGFja2V0OwoKCiAgICAg ICAgaW50IGxvY2s7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzZW07CgogICAgICAgIGludCBj dXJyZW50X3NpemU7CiAgICAgICAgaW50IGhhc19zdWJmdW5jdGlvbjsKICAgICAgICBpbnQgbmNw X3JlcGx5X3NpemU7CgogICAgICAgIGludCByb290X3NldHVwZWQ7CgoKICAgICAgICBpbnQgc2ln bl93YW50ZWQ7CiAgICAgICAgaW50IHNpZ25fYWN0aXZlOwogICAgICAgIGNoYXIgc2lnbl9yb290 WzhdOwogICAgICAgIGNoYXIgc2lnbl9sYXN0WzE2XTsKCgogICAgICAgIHN0cnVjdCB7CiAgICAg ICAgICAgICAgICBpbnQgYXV0aF90eXBlOwogICAgICAgICAgICAgICAgc2l6ZV90IG9iamVjdF9u YW1lX2xlbjsKICAgICAgICAgICAgICAgIHZvaWQqIG9iamVjdF9uYW1lOwogICAgICAgICAgICAg ICAgaW50IG9iamVjdF90eXBlOwogICAgICAgIH0gYXV0aDsKCiAgICAgICAgc3RydWN0IHsKICAg ICAgICAgICAgICAgIHNpemVfdCBsZW47CiAgICAgICAgICAgICAgICB2b2lkKiBkYXRhOwogICAg ICAgIH0gcHJpdjsKCgogICAgICAgIHN0cnVjdCBubHNfdGFibGUgKm5sc192b2w7CiAgICAgICAg c3RydWN0IG5sc190YWJsZSAqbmxzX2lvOwoKCiAgICAgICAgaW50IGRlbnRyeV90dGw7CgoKICAg ICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7Cn07CiMgOTIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvbmNwX2ZzX3NiLmgiCnN0YXRpYyBpbmxpbmUgaW50IG5jcF9jb25u X3ZhbGlkKHN0cnVjdCBuY3Bfc2VydmVyICpzZXJ2ZXIpCnsKICAgICAgICByZXR1cm4gKChzZXJ2 ZXItPmNvbm5fc3RhdHVzICYgMHgxMSkgPT0gMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBuY3Bf aW52YWxpZGF0ZV9jb25uKHN0cnVjdCBuY3Bfc2VydmVyICpzZXJ2ZXIpCnsKICAgICAgICBzZXJ2 ZXItPmNvbm5fc3RhdHVzIHw9IDB4MDE7Cn0KIyA2NzcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvbGludXgvdXNiZGV2X2ZzX3NiLmgiIDEKc3RydWN0IHVzYmRldl9zYl9pbmZvIHsK ICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNsaXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg aWxpc3Q7CiAgICAgICAgdWlkX3QgZGV2dWlkOwogICAgICAgIGdpZF90IGRldmdpZDsKICAgICAg ICB1bW9kZV90IGRldm1vZGU7CiAgICAgICAgdWlkX3QgYnVzdWlkOwogICAgICAgIGdpZF90IGJ1 c2dpZDsKICAgICAgICB1bW9kZV90IGJ1c21vZGU7CiAgICAgICAgdWlkX3QgbGlzdHVpZDsKICAg ICAgICBnaWRfdCBsaXN0Z2lkOwogICAgICAgIHVtb2RlX3QgbGlzdG1vZGU7Cn07CiMgNjc4ICIv dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NyYW1mc19mc19zYi5oIiAxCiMg Njc5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAx ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX3NiLmgi IDEKCgoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHlw ZXMuaCIgMQojIDcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvamZm czJfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu dXgvc3BpbmxvY2suaCIgMQojIDggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvamZmczJfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvY29tcGxldGlvbi5oIiAxCiMgMTEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvY29tcGxldGlvbi5oIgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvd2FpdC5oIiAxCiMgMTIgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvY29tcGxldGlvbi5oIiAyCgpzdHJ1Y3QgY29tcGxldGlvbiB7 CiAgICAgICAgdW5zaWduZWQgaW50IGRvbmU7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2Fp dDsKfTsKCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X2NvbXBsZXRpb24oc3RydWN0IGNv bXBsZXRpb24gKngpCnsKICAgICAgICB4LT5kb25lID0gMDsKICAgICAgICBpbml0X3dhaXRxdWV1 ZV9oZWFkKCZ4LT53YWl0KTsKfQoKZXh0ZXJuIHZvaWQgd2FpdF9mb3JfY29tcGxldGlvbl9SZGMw MTY0ODgoc3RydWN0IGNvbXBsZXRpb24gKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpl eHRlcm4gdm9pZCBjb21wbGV0ZV9SOTQyNjEzYWQoc3RydWN0IGNvbXBsZXRpb24gKikgX19hdHRy aWJ1dGVfXygocmVncGFybSgzKSkpOwojIDkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAxCiMgMTAgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbGlzdC5oIiAxCiMgMTEgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMgojIDIwICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX3NiLmgiCnN0cnVjdCBq ZmZzMl9zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbXRkX2luZm8gKm10ZDsKCiAgICAgICAgX191 MzIgaGlnaGVzdF9pbm87CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAgIHNwaW5s b2NrX3Qgbm9kZWxpc3RfbG9jazsKCgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqZ2NfdGFz azsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGdjX3RocmVhZF9zZW07CiAgICAgICAgc3RydWN0 IGNvbXBsZXRpb24gZ2NfdGhyZWFkX2V4aXQ7CgoKCgogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUg YWxsb2Nfc2VtOwoKCgoKICAgICAgICBfX3UzMiBmbGFzaF9zaXplOwogICAgICAgIF9fdTMyIHVz ZWRfc2l6ZTsKICAgICAgICBfX3UzMiBkaXJ0eV9zaXplOwogICAgICAgIF9fdTMyIGZyZWVfc2l6 ZTsKICAgICAgICBfX3UzMiBlcmFzaW5nX3NpemU7CiAgICAgICAgX191MzIgYmFkX3NpemU7CiAg ICAgICAgX191MzIgc2VjdG9yX3NpemU7CgoKCiAgICAgICAgX191MzIgbnJfZnJlZV9ibG9ja3M7 CiAgICAgICAgX191MzIgbnJfZXJhc2luZ19ibG9ja3M7CgogICAgICAgIF9fdTMyIG5yX2Jsb2Nr czsKICAgICAgICBzdHJ1Y3QgamZmczJfZXJhc2VibG9jayAqYmxvY2tzOwoKICAgICAgICBzdHJ1 Y3QgamZmczJfZXJhc2VibG9jayAqbmV4dGJsb2NrOwoKICAgICAgICBzdHJ1Y3QgamZmczJfZXJh c2VibG9jayAqZ2NibG9jazsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBjbGVhbl9saXN0Owog ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZGlydHlfbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9o ZWFkIGVyYXNpbmdfbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGVyYXNlX3BlbmRpbmdf bGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGVyYXNlX2NvbXBsZXRlX2xpc3Q7CiAgICAg ICAgc3RydWN0IGxpc3RfaGVhZCBmcmVlX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBi YWRfbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJhZF91c2VkX2xpc3Q7CgogICAgICAg IHNwaW5sb2NrX3QgZXJhc2VfY29tcGxldGlvbl9sb2NrOwoKICAgICAgICB3YWl0X3F1ZXVlX2hl YWRfdCBlcmFzZV93YWl0OwogICAgICAgIHN0cnVjdCBqZmZzMl9pbm9kZV9jYWNoZSAqaW5vY2Fj aGVfbGlzdFsxXTsKICAgICAgICBzcGlubG9ja190IGlub2NhY2hlX2xvY2s7Cn07CiMgNjgwICIv dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCmV4dGVybiBz dHJ1Y3QgbGlzdF9oZWFkIHN1cGVyX2Jsb2NrczsKZXh0ZXJuIHNwaW5sb2NrX3Qgc2JfbG9jazsK CgoKc3RydWN0IHN1cGVyX2Jsb2NrIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfbGlzdDsK ICAgICAgICBrZGV2X3Qgc19kZXY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2Jsb2Nrc2l6ZTsK ICAgICAgICB1bnNpZ25lZCBjaGFyIHNfYmxvY2tzaXplX2JpdHM7CiAgICAgICAgdW5zaWduZWQg Y2hhciBzX2RpcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHNfbWF4Ynl0ZXM7CiAgICAg ICAgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKnNfdHlwZTsKICAgICAgICBzdHJ1Y3Qgc3VwZXJf b3BlcmF0aW9ucyAqc19vcDsKICAgICAgICBzdHJ1Y3QgZHF1b3Rfb3BlcmF0aW9ucyAqZHFfb3A7 CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19t YWdpYzsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpzX3Jvb3Q7CiAgICAgICAgc3RydWN0IHJ3X3Nl bWFwaG9yZSBzX3Vtb3VudDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfbG9jazsKICAgICAg ICBpbnQgc19jb3VudDsKICAgICAgICBhdG9taWNfdCBzX2FjdGl2ZTsKCiAgICAgICAgc3RydWN0 IGxpc3RfaGVhZCBzX2RpcnR5OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc19sb2NrZWRfaW5v ZGVzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc19maWxlczsKCiAgICAgICAgc3RydWN0IGJs b2NrX2RldmljZSAqc19iZGV2OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc19pbnN0YW5jZXM7 CiAgICAgICAgc3RydWN0IHF1b3RhX21vdW50X29wdGlvbnMgc19kcXVvdDsKCiAgICAgICAgdW5p b24gewogICAgICAgICAgICAgICAgc3RydWN0IG1pbml4X3NiX2luZm8gbWluaXhfc2I7CiAgICAg ICAgICAgICAgICBzdHJ1Y3QgZXh0Ml9zYl9pbmZvIGV4dDJfc2I7CiAgICAgICAgICAgICAgICBz dHJ1Y3QgaHBmc19zYl9pbmZvIGhwZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbnRmc19z Yl9pbmZvIG50ZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbXNkb3Nfc2JfaW5mbyBtc2Rv c19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBpc29mc19zYl9pbmZvIGlzb2ZzX3NiOwogICAg ICAgICAgICAgICAgc3RydWN0IG5mc19zYl9pbmZvIG5mc19zYjsKICAgICAgICAgICAgICAgIHN0 cnVjdCBzeXN2X3NiX2luZm8gc3lzdl9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBhZmZzX3Ni X2luZm8gYWZmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCB1ZnNfc2JfaW5mbyB1ZnNfc2I7 CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZWZzX3NiX2luZm8gZWZzX3NiOwogICAgICAgICAgICAg ICAgc3RydWN0IHNobWVtX3NiX2luZm8gc2htZW1fc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg cm9tZnNfc2JfaW5mbyByb21mc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBzbWJfc2JfaW5m byBzbWJmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBoZnNfc2JfaW5mbyBoZnNfc2I7CiAg ICAgICAgICAgICAgICBzdHJ1Y3QgYWRmc19zYl9pbmZvIGFkZnNfc2I7CiAgICAgICAgICAgICAg ICBzdHJ1Y3QgcW54NF9zYl9pbmZvIHFueDRfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgcmVp c2VyZnNfc2JfaW5mbyByZWlzZXJmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBiZnNfc2Jf aW5mbyBiZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRmX3NiX2luZm8gdWRmX3NiOwog ICAgICAgICAgICAgICAgc3RydWN0IG5jcF9zZXJ2ZXIgbmNwZnNfc2I7CiAgICAgICAgICAgICAg ICBzdHJ1Y3QgdXNiZGV2X3NiX2luZm8gdXNiZGV2ZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1 Y3QgamZmczJfc2JfaW5mbyBqZmZzMl9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBjcmFtZnNf c2JfaW5mbyBjcmFtZnNfc2I7CiAgICAgICAgICAgICAgICB2b2lkICpnZW5lcmljX3NicDsKICAg ICAgICB9IHU7CgoKCgogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc192ZnNfcmVuYW1lX3NlbTsK IyA3NTIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIKICAg ICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfbmZzZF9mcmVlX3BhdGhfc2VtOwp9OwoKCgoKZXh0ZXJu IGludCB2ZnNfY3JlYXRlX1I4NjI3MWFkOChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAq LCBpbnQpOwpleHRlcm4gaW50IHZmc19ta2Rpcl9SMjdmNmNmY2Moc3RydWN0IGlub2RlICosIHN0 cnVjdCBkZW50cnkgKiwgaW50KTsKZXh0ZXJuIGludCB2ZnNfbWtub2RfUjdjNmYyZDM5KHN0cnVj dCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCwgZGV2X3QpOwpleHRlcm4gaW50IHZmc19z eW1saW5rX1JmMTQ4MmM0MihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBjb25zdCBj aGFyICopOwpleHRlcm4gaW50IHZmc19saW5rX1I5OWU0ZDg1OChzdHJ1Y3QgZGVudHJ5ICosIHN0 cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gaW50IHZmc19ybWRpcl9SMTRj MDJmZjQoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4dGVybiBpbnQgdmZzX3Vu bGlua19SMTNjYzBlZjkoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4dGVybiBp bnQgdmZzX3JlbmFtZV9SZTUxZGFjZDIoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwg c3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CiMgNzg2ICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnR5cGVkZWYgaW50ICgqZmlsbGRpcl90KSh2 b2lkICosIGNvbnN0IGNoYXIgKiwgaW50LCBsb2ZmX3QsIGlub190LCB1bnNpZ25lZCk7CgpzdHJ1 Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgewogICAgICAgIGludCAoKm9wZW4pIChzdHJ1Y3Qg aW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CiAgICAgICAgaW50ICgqcmVsZWFzZSkgKHN0cnVjdCBp bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCppb2N0bCkgKHN0cnVjdCBpbm9k ZSAqLCBzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAgaW50 ICgqY2hlY2tfbWVkaWFfY2hhbmdlKSAoa2Rldl90KTsKICAgICAgICBpbnQgKCpyZXZhbGlkYXRl KSAoa2Rldl90KTsKfTsKCgoKCgoKc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB7CiAgICAgICAgc3Ry dWN0IG1vZHVsZSAqb3duZXI7CiAgICAgICAgbG9mZl90ICgqbGxzZWVrKSAoc3RydWN0IGZpbGUg KiwgbG9mZl90LCBpbnQpOwogICAgICAgIHNzaXplX3QgKCpyZWFkKSAoc3RydWN0IGZpbGUgKiwg Y2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKICAgICAgICBzc2l6ZV90ICgqd3JpdGUpIChzdHJ1 Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwogICAgICAgIGludCAo KnJlYWRkaXIpIChzdHJ1Y3QgZmlsZSAqLCB2b2lkICosIGZpbGxkaXJfdCk7CiAgICAgICAgdW5z aWduZWQgaW50ICgqcG9sbCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwb2xsX3RhYmxlX3N0cnVj dCAqKTsKICAgICAgICBpbnQgKCppb2N0bCkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAq LCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGxvbmcpOwogICAgICAgIGludCAoKm1tYXApIChzdHJ1 Y3QgZmlsZSAqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CiAgICAgICAgaW50ICgqb3Blbikg KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCpmbHVzaCkgKHN0 cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKnJlbGVhc2UpIChzdHJ1Y3QgaW5vZGUgKiwgc3Ry dWN0IGZpbGUgKik7CiAgICAgICAgaW50ICgqZnN5bmMpIChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3Qg ZGVudHJ5ICosIGludCBkYXRhc3luYyk7CiAgICAgICAgaW50ICgqZmFzeW5jKSAoaW50LCBzdHJ1 Y3QgZmlsZSAqLCBpbnQpOwogICAgICAgIGludCAoKmxvY2spIChzdHJ1Y3QgZmlsZSAqLCBpbnQs IHN0cnVjdCBmaWxlX2xvY2sgKik7CiAgICAgICAgc3NpemVfdCAoKnJlYWR2KSAoc3RydWN0IGZp bGUgKiwgY29uc3Qgc3RydWN0IGlvdmVjICosIHVuc2lnbmVkIGxvbmcsIGxvZmZfdCAqKTsKICAg ICAgICBzc2l6ZV90ICgqd3JpdGV2KSAoc3RydWN0IGZpbGUgKiwgY29uc3Qgc3RydWN0IGlvdmVj ICosIHVuc2lnbmVkIGxvbmcsIGxvZmZfdCAqKTsKICAgICAgICBzc2l6ZV90ICgqc2VuZHBhZ2Up IChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgcGFnZSAqLCBpbnQsIHNpemVfdCwgbG9mZl90ICosIGlu dCk7CiAgICAgICAgdW5zaWduZWQgbG9uZyAoKmdldF91bm1hcHBlZF9hcmVhX1JiMDQxZjRmMiko c3RydWN0IGZpbGUgKiwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9u ZywgdW5zaWduZWQgbG9uZyk7Cn07CgpzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyB7CiAgICAgICAg aW50ICgqY3JlYXRlKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqLGludCk7CiAgICAg ICAgc3RydWN0IGRlbnRyeSAqICgqbG9va3VwKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRy eSAqKTsKICAgICAgICBpbnQgKCpsaW5rKSAoc3RydWN0IGRlbnRyeSAqLHN0cnVjdCBpbm9kZSAq LHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgaW50ICgqdW5saW5rKSAoc3RydWN0IGlub2RlICos c3RydWN0IGRlbnRyeSAqKTsKICAgICAgICBpbnQgKCpzeW1saW5rKSAoc3RydWN0IGlub2RlICos c3RydWN0IGRlbnRyeSAqLGNvbnN0IGNoYXIgKik7CiAgICAgICAgaW50ICgqbWtkaXIpIChzdHJ1 Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICosaW50KTsKICAgICAgICBpbnQgKCpybWRpcikgKHN0 cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgaW50ICgqbWtub2QpIChzdHJ1 Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICosaW50LGludCk7CiAgICAgICAgaW50ICgqcmVuYW1l KSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwKICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgaW50ICgqcmVhZGxp bmspIChzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKixpbnQpOwogICAgICAgIGludCAoKmZvbGxvd19s aW5rKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgbmFtZWlkYXRhICopOwogICAgICAgIHZvaWQg KCp0cnVuY2F0ZSkgKHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICBpbnQgKCpwZXJtaXNzaW9uX1I1 ZGNkMTgzYikgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwogICAgICAgIGludCAoKnJldmFsaWRhdGUp IChzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKnNldGF0dHIpIChzdHJ1Y3QgZGVudHJ5 ICosIHN0cnVjdCBpYXR0ciAqKTsKICAgICAgICBpbnQgKCpnZXRhdHRyKSAoc3RydWN0IGRlbnRy eSAqLCBzdHJ1Y3QgaWF0dHIgKik7Cn07CgoKCgoKc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgewog ICAgICAgIHZvaWQgKCpyZWFkX2lub2RlKSAoc3RydWN0IGlub2RlICopOwoKCgoKCgoKICAgICAg ICB2b2lkICgqcmVhZF9pbm9kZTIpIChzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqKSA7CiAgICAgICAg dm9pZCAoKmRpcnR5X2lub2RlKSAoc3RydWN0IGlub2RlICopOwogICAgICAgIHZvaWQgKCp3cml0 ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwogICAgICAgIHZvaWQgKCpwdXRfaW5vZGUp IChzdHJ1Y3QgaW5vZGUgKik7CiAgICAgICAgdm9pZCAoKmRlbGV0ZV9pbm9kZSkgKHN0cnVjdCBp bm9kZSAqKTsKICAgICAgICB2b2lkICgqcHV0X3N1cGVyKSAoc3RydWN0IHN1cGVyX2Jsb2NrICop OwogICAgICAgIHZvaWQgKCp3cml0ZV9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAg ICAgICB2b2lkICgqd3JpdGVfc3VwZXJfbG9ja2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwog ICAgICAgIHZvaWQgKCp1bmxvY2tmcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICBp bnQgKCpzdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IHN0YXRmcyAqKTsKICAg ICAgICBpbnQgKCpyZW1vdW50X2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCAqLCBjaGFy ICopOwogICAgICAgIHZvaWQgKCpjbGVhcl9pbm9kZV9SNDUwNjM4NTcpIChzdHJ1Y3QgaW5vZGUg Kik7CiAgICAgICAgdm9pZCAoKnVtb3VudF9iZWdpbikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsK IyA4OTEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIKICAg ICAgICBzdHJ1Y3QgZGVudHJ5ICogKCpmaF90b19kZW50cnkpKHN0cnVjdCBzdXBlcl9ibG9jayAq c2IsIF9fdTMyICpmaCwgaW50IGxlbiwgaW50IGZodHlwZSwgaW50IHBhcmVudCk7CiAgICAgICAg aW50ICgqZGVudHJ5X3RvX2ZoKShzdHJ1Y3QgZGVudHJ5ICosIF9fdTMyICpmaCwgaW50ICpsZW5w LCBpbnQgbmVlZF9wYXJlbnQpOwp9OwojIDkwNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9mcy5oIgpleHRlcm4gdm9pZCBfX21hcmtfaW5vZGVfZGlydHlfUjRiOWY2 YzAwKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19pbm9kZV9k aXJ0eShzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAgX19tYXJrX2lub2RlX2RpcnR5X1I0 YjlmNmMwMChpbm9kZSwgKDEgfCAyIHwgNCkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19p bm9kZV9kaXJ0eV9zeW5jKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBfX21hcmtfaW5v ZGVfZGlydHlfUjRiOWY2YzAwKGlub2RlLCAxKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG1hcmtf aW5vZGVfZGlydHlfcGFnZXMoc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIF9fbWFya19p bm9kZV9kaXJ0eV9SNGI5ZjZjMDAoaW5vZGUsIDQpOwp9CgpzdHJ1Y3QgZHF1b3Rfb3BlcmF0aW9u cyB7CiAgICAgICAgdm9pZCAoKmluaXRpYWxpemUpIChzdHJ1Y3QgaW5vZGUgKiwgc2hvcnQpOwog ICAgICAgIHZvaWQgKCpkcm9wKSAoc3RydWN0IGlub2RlICopOwogICAgICAgIGludCAoKmFsbG9j X2Jsb2NrKSAoY29uc3Qgc3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxvbmcsIGNoYXIpOwogICAg ICAgIGludCAoKmFsbG9jX2lub2RlKSAoY29uc3Qgc3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxv bmcpOwogICAgICAgIHZvaWQgKCpmcmVlX2Jsb2NrKSAoY29uc3Qgc3RydWN0IGlub2RlICosIHVu c2lnbmVkIGxvbmcpOwogICAgICAgIHZvaWQgKCpmcmVlX2lub2RlKSAoY29uc3Qgc3RydWN0IGlu b2RlICosIHVuc2lnbmVkIGxvbmcpOwogICAgICAgIGludCAoKnRyYW5zZmVyKSAoc3RydWN0IGRl bnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7Cn07CgpzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSB7CiAg ICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICBpbnQgZnNfZmxhZ3M7CiAgICAgICAgc3Ry dWN0IHN1cGVyX2Jsb2NrICooKnJlYWRfc3VwZXIpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdm9p ZCAqLCBpbnQpOwogICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyOwogICAgICAgIHN0cnVjdCBm aWxlX3N5c3RlbV90eXBlICogbmV4dDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZzX3N1cGVy czsKfTsKIyA5NjMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMu aCIKZXh0ZXJuIGludCByZWdpc3Rlcl9maWxlc3lzdGVtX1JjZGY0MzY5ZihzdHJ1Y3QgZmlsZV9z eXN0ZW1fdHlwZSAqKTsKZXh0ZXJuIGludCB1bnJlZ2lzdGVyX2ZpbGVzeXN0ZW1fUjU3MWYxYjQw KHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICopOwpleHRlcm4gc3RydWN0IHZmc21vdW50ICprZXJu X21vdW50X1I1YTQ0MmZiOShzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqKTsKZXh0ZXJuIGludCBt YXlfdW1vdW50X1JkYzVkYmZmNihzdHJ1Y3QgdmZzbW91bnQgKik7CmV4dGVybiBsb25nIGRvX21v dW50KGNoYXIgKiwgY2hhciAqLCBjaGFyICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7CgoKCmV4 dGVybiBpbnQgdmZzX3N0YXRmc19SNDFiMTFhMmUoc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVj dCBzdGF0ZnMgKik7CiMgOTgxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L2ZzLmgiCmV4dGVybiBpbnQgbG9ja3NfbWFuZGF0b3J5X2xvY2tlZChzdHJ1Y3QgaW5vZGUg Kik7CmV4dGVybiBpbnQgbG9ja3NfbWFuZGF0b3J5X2FyZWFfUjM4YWIwMjMzKGludCwgc3RydWN0 IGlub2RlICosIHN0cnVjdCBmaWxlICosIGxvZmZfdCwgc2l6ZV90KTsKIyA5OTEgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIKc3RhdGljIGlubGluZSBpbnQg bG9ja3NfdmVyaWZ5X2xvY2tlZChzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAgaWYgKCgo KGlub2RlKS0+aV9zYi0+c19mbGFncyAmICg2NCkpICYmICgoaW5vZGUpLT5pX21vZGUgJiAoMDAw MjAwMCB8IDAwMDEwKSkgPT0gMDAwMjAwMCkpCiAgICAgICAgICAgICAgICByZXR1cm4gbG9ja3Nf bWFuZGF0b3J5X2xvY2tlZChpbm9kZSk7CiAgICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxp bmUgaW50IGxvY2tzX3ZlcmlmeV9hcmVhKGludCByZWFkX3dyaXRlLCBzdHJ1Y3QgaW5vZGUgKmlu b2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZSAqZmls cCwgbG9mZl90IG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZV90IGNvdW50KQp7CiAgICAgICAgaWYgKGlub2RlLT5pX2Zsb2NrICYmICgoKGlub2RlKS0+aV9z Yi0+c19mbGFncyAmICg2NCkpICYmICgoaW5vZGUpLT5pX21vZGUgJiAoMDAwMjAwMCB8IDAwMDEw KSkgPT0gMDAwMjAwMCkpCiAgICAgICAgICAgICAgICByZXR1cm4gbG9ja3NfbWFuZGF0b3J5X2Fy ZWFfUjM4YWIwMjMzKHJlYWRfd3JpdGUsIGlub2RlLCBmaWxwLCBvZmZzZXQsIGNvdW50KTsKICAg ICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgbG9ja3NfdmVyaWZ5X3RydW5jYXRl KHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBmaWxlICpmaWxwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs b2ZmX3Qgc2l6ZSkKewogICAgICAgIGlmIChpbm9kZS0+aV9mbG9jayAmJiAoKChpbm9kZSktPmlf c2ItPnNfZmxhZ3MgJiAoNjQpKSAmJiAoKGlub2RlKS0+aV9tb2RlICYgKDAwMDIwMDAgfCAwMDAx MCkpID09IDAwMDIwMDApKQogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2tzX21hbmRhdG9yeV9h cmVhX1IzOGFiMDIzMygKICAgICAgICAgICAgICAgICAgICAgICAgMiwgaW5vZGUsIGZpbHAsCiAg ICAgICAgICAgICAgICAgICAgICAgIHNpemUgPCBpbm9kZS0+aV9zaXplID8gc2l6ZSA6IGlub2Rl LT5pX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIChzaXplIDwgaW5vZGUtPmlfc2l6ZSA/ IGlub2RlLT5pX3NpemUgLSBzaXplCiAgICAgICAgICAgICAgICAgICAgICAgICA6IHNpemUgLSBp bm9kZS0+aV9zaXplKQogICAgICAgICAgICAgICAgKTsKICAgICAgICByZXR1cm4gMDsKfQoKc3Rh dGljIGlubGluZSBpbnQgZ2V0X2xlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGlu dCBtb2RlKQp7CiAgICAgICAgaWYgKGlub2RlLT5pX2Zsb2NrICYmIChpbm9kZS0+aV9mbG9jay0+ ZmxfZmxhZ3MgJiAzMikpCiAgICAgICAgICAgICAgICByZXR1cm4gX19nZXRfbGVhc2VfUmYzOWYz Yjc2KGlub2RlLCBtb2RlKTsKICAgICAgICByZXR1cm4gMDsKfQoKCgogX19hdHRyaWJ1dGVfXygo cmVncGFybSgwKSkpIGxvbmcgc3lzX29wZW4oY29uc3QgY2hhciAqLCBpbnQsIGludCk7CiBfX2F0 dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfY2xvc2VfUjI2OGNjNmEyKHVuc2lnbmVk IGludCk7CmV4dGVybiBpbnQgZG9fdHJ1bmNhdGUoc3RydWN0IGRlbnRyeSAqLCBsb2ZmX3Qgc3Rh cnQpOwoKZXh0ZXJuIHN0cnVjdCBmaWxlICpmaWxwX29wZW5fUjMzN2EwYTE2KGNvbnN0IGNoYXIg KiwgaW50LCBpbnQpOwpleHRlcm4gc3RydWN0IGZpbGUgKiBkZW50cnlfb3Blbl9SMzMwYzMyY2Yo c3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgdmZzbW91bnQgKiwgaW50KTsKZXh0ZXJuIGludCBmaWxw X2Nsb3NlX1IxODY3ZDIzNChzdHJ1Y3QgZmlsZSAqLCBmbF9vd25lcl90IGlkKTsKZXh0ZXJuIGNo YXIgKiBnZXRuYW1lX1I3YzYwZDY2ZShjb25zdCBjaGFyICopOwoKCmV4dGVybiB2b2lkIHZmc19j YWNoZXNfaW5pdCh1bnNpZ25lZCBsb25nKTsKCgoKCmVudW0ge0JERVZfRklMRSwgQkRFVl9TV0FQ LCBCREVWX0ZTLCBCREVWX1JBV307CmV4dGVybiBpbnQgcmVnaXN0ZXJfYmxrZGV2X1I2NTU1Y2M0 MCh1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKiwgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRp b25zICopOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfYmxrZGV2X1JlYWMxYzRhZih1bnNpZ25lZCBp bnQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGdldF9SNzhl YWRkNTEoZGV2X3QpOwpleHRlcm4gaW50IGJkX2FjcXVpcmUoc3RydWN0IGlub2RlICppbm9kZSk7 CmV4dGVybiB2b2lkIGJkX2ZvcmdldChzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIHZvaWQg YmRwdXRfUjIwMTU3ZTg1KHN0cnVjdCBibG9ja19kZXZpY2UgKik7CmV4dGVybiBzdHJ1Y3QgY2hh cl9kZXZpY2UgKmNkZ2V0X1JkZWU3MGYzZShkZXZfdCk7CmV4dGVybiB2b2lkIGNkcHV0X1JkN2Fi NGYxZChzdHJ1Y3QgY2hhcl9kZXZpY2UgKik7CmV4dGVybiBpbnQgYmxrZGV2X29wZW5fUjA1MzY5 ZTEzKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIGludCBibGtkZXZfY2xv c2Uoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpleHRlcm4gc3RydWN0IGZpbGVfb3Bl cmF0aW9ucyBkZWZfYmxrX2ZvcHNfUjU3Y2M2MzBlOwpleHRlcm4gc3RydWN0IGFkZHJlc3Nfc3Bh Y2Vfb3BlcmF0aW9ucyBkZWZfYmxrX2FvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z IGRlZl9maWZvX2ZvcHM7CmV4dGVybiBpbnQgaW9jdGxfYnlfYmRldl9SMmFmOTE1NjAoc3RydWN0 IGJsb2NrX2RldmljZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBpbnQgYmxr ZGV2X2dldF9SZWJlMjVmYWUoc3RydWN0IGJsb2NrX2RldmljZSAqLCBtb2RlX3QsIHVuc2lnbmVk LCBpbnQpOwpleHRlcm4gaW50IGJsa2Rldl9wdXRfUjlmYjZjYjAzKHN0cnVjdCBibG9ja19kZXZp Y2UgKiwgaW50KTsKCgpleHRlcm4gY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25z ICpnZXRfYmxrZm9wcyh1bnNpZ25lZCBpbnQpOwpleHRlcm4gaW50IHJlZ2lzdGVyX2NocmRldl9S NjUxMDY1MTIodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICosIHN0cnVjdCBmaWxlX29wZXJhdGlv bnMgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9jaHJkZXZfUmMxOTJkNDkxKHVuc2lnbmVkIGlu dCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBjaHJkZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKiwg c3RydWN0IGZpbGUgKik7CmV4dGVybiBjb25zdCBjaGFyICogYmRldm5hbWVfUmQwNDc4MmU2KGtk ZXZfdCk7CmV4dGVybiBjb25zdCBjaGFyICogY2Rldm5hbWVfUjk3NTQ3NDFkKGtkZXZfdCk7CmV4 dGVybiBjb25zdCBjaGFyICoga2Rldm5hbWVfUmMyNThjOTA2KGtkZXZfdCk7CmV4dGVybiB2b2lk IGluaXRfc3BlY2lhbF9pbm9kZV9SNmVlNjJlZDcoc3RydWN0IGlub2RlICosIHVtb2RlX3QsIGlu dCk7CgoKZXh0ZXJuIHZvaWQgbWFrZV9iYWRfaW5vZGVfUjY3ODY5MTljKHN0cnVjdCBpbm9kZSAq KTsKZXh0ZXJuIGludCBpc19iYWRfaW5vZGVfUjMwZDk4ZmYxKHN0cnVjdCBpbm9kZSAqKTsKCmV4 dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJlYWRfZmlmb19mb3BzOwpleHRlcm4gc3RydWN0 IGZpbGVfb3BlcmF0aW9ucyB3cml0ZV9maWZvX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVy YXRpb25zIHJkd3JfZmlmb19mb3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyByZWFk X3BpcGVfZm9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgd3JpdGVfcGlwZV9mb3Bz OwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyByZHdyX3BpcGVfZm9wczsKCmV4dGVybiBp bnQgZnNfbWF5X3JlbW91bnRfcm8oc3RydWN0IHN1cGVyX2Jsb2NrICopOwoKZXh0ZXJuIGludCB0 cnlfdG9fZnJlZV9idWZmZXJzKHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGludCk7CmV4dGVybiB2 b2lkIHJlZmlsZV9idWZmZXJfUjk0Mzc3YWM1KHN0cnVjdCBidWZmZXJfaGVhZCAqIGJ1Zik7CmV4 dGVybiB2b2lkIGVuZF9idWZmZXJfaW9fc3luYyhzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBpbnQg dXB0b2RhdGUpOwoKCmV4dGVybiB2b2lkIHNldF9idWZmZXJfYXN5bmNfaW9fUmM5NDIyNjAwKHN0 cnVjdCBidWZmZXJfaGVhZCAqYmgpIDsKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGdldF9iaChz dHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCkKewogICAgICAgIGF0b21pY19pbmMoJihiaCktPmJfY291 bnQpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgcHV0X2JoKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgp CnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogICAgICAg IGF0b21pY19kZWMoJmJoLT5iX2NvdW50KTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIG1hcmtf YnVmZmVyX3VwdG9kYXRlKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoLCBpbnQgb24pCnsKICAgICAg ICBpZiAob24pCiAgICAgICAgICAgICAgICBzZXRfYml0KEJIX1VwdG9kYXRlLCAmYmgtPmJfc3Rh dGUpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGNsZWFyX2JpdChCSF9VcHRvZGF0ZSwg JmJoLT5iX3N0YXRlKTsKfQoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19tYXJrX2J1ZmZlcl9jbGVh bihzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQp7CiAgICAgICAgcmVmaWxlX2J1ZmZlcl9SOTQzNzdh YzUoYmgpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19idWZmZXJfY2xlYW4oc3RydWN0IGJ1 ZmZlcl9oZWFkICogYmgpCnsKICAgICAgICBpZiAodGVzdF9hbmRfY2xlYXJfYml0KEJIX0RpcnR5 LCAmKGJoKS0+Yl9zdGF0ZSkpCiAgICAgICAgICAgICAgICBfX21hcmtfYnVmZmVyX2NsZWFuKGJo KTsKfQoKZXh0ZXJuIHZvaWQgX19tYXJrX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIF9f YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgX19tYXJrX2J1ZmZlcl9kaXJ0 eV9SMThkN2FlZTQoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkgX19hdHRyaWJ1dGVfXygocmVncGFy bSgzKSkpOwpleHRlcm4gdm9pZCBtYXJrX2J1ZmZlcl9kaXJ0eV9SZTAyNjM2Zjcoc3RydWN0IGJ1 ZmZlcl9oZWFkICpiaCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBi dWZmZXJfaW5zZXJ0X2lub2RlX2RhdGFfcXVldWUoc3RydWN0IGJ1ZmZlcl9oZWFkICosIHN0cnVj dCBpbm9kZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CgoKCnN0YXRpYyBpbmxpbmUg dm9pZCBtYXJrX2J1ZmZlcl9hc3luYyhzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCwgaW50IG9uKQp7 CiAgICAgICAgaWYgKG9uKQogICAgICAgICAgICAgICAgc2V0X2JpdChCSF9Bc3luYywgJmJoLT5i X3N0YXRlKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBjbGVhcl9iaXQoQkhfQXN5bmMs ICZiaC0+Yl9zdGF0ZSk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBidWZmZXJfSU9fZXJy b3Ioc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpCnsKICAgICAgICBtYXJrX2J1ZmZlcl9jbGVhbihi aCk7CgoKCiAgICAgICAgYmgtPmJfZW5kX2lvKGJoLCAwKTsKfQoKZXh0ZXJuIHZvaWQgYnVmZmVy X2luc2VydF9pbm9kZV9xdWV1ZV9SNjJlNGYwZTgoc3RydWN0IGJ1ZmZlcl9oZWFkICosIHN0cnVj dCBpbm9kZSAqKTsKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYnVmZmVyX2RpcnR5X2lub2RlKHN0 cnVjdCBidWZmZXJfaGVhZCAqYmgsIHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBtYXJr X2J1ZmZlcl9kaXJ0eV9SZTAyNjM2ZjcoYmgpOwogICAgICAgIGJ1ZmZlcl9pbnNlcnRfaW5vZGVf cXVldWVfUjYyZTRmMGU4KGJoLCBpbm9kZSk7Cn0KCmV4dGVybiB2b2lkIGJhbGFuY2VfZGlydHko dm9pZCk7CmV4dGVybiBpbnQgY2hlY2tfZGlza19jaGFuZ2VfUjExZDQwNzZkKGtkZXZfdCk7CmV4 dGVybiBpbnQgaW52YWxpZGF0ZV9pbm9kZXNfUjE2ZjdmNTI5KHN0cnVjdCBzdXBlcl9ibG9jayAq KTsKZXh0ZXJuIGludCBpbnZhbGlkYXRlX2RldmljZV9SMjVhNGIwYjIoa2Rldl90LCBpbnQpOwpl eHRlcm4gdm9pZCBpbnZhbGlkYXRlX2lub2RlX3BhZ2VzX1JmNTUzMzYyYihzdHJ1Y3QgaW5vZGUg Kik7CmV4dGVybiB2b2lkIGludmFsaWRhdGVfaW5vZGVfcGFnZXMyKHN0cnVjdCBhZGRyZXNzX3Nw YWNlICopOwpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2lub2RlX2J1ZmZlcnMoc3RydWN0IGlub2Rl ICopOwoKCgoKCgoKZXh0ZXJuIHZvaWQgX19pbnZhbGlkYXRlX2J1ZmZlcnNfUjUxNzI2NDllKGtk ZXZfdCBkZXYsIGludCwgaW50KTsKZXh0ZXJuIHZvaWQgc3luY19pbm9kZXMoa2Rldl90KTsKZXh0 ZXJuIHZvaWQgc3luY191bmxvY2tlZF9pbm9kZXModm9pZCk7CmV4dGVybiB2b2lkIHdyaXRlX2lu b2RlX25vd19SYjRiMjhjZmEoc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQgc3luY19i dWZmZXJzKGtkZXZfdCwgaW50KTsKZXh0ZXJuIHZvaWQgc3luY19kZXZfUmZjMGIwZjQ5KGtkZXZf dCk7CmV4dGVybiBpbnQgZnN5bmNfZGV2X1I4ZWExMjhlMihrZGV2X3QpOwpleHRlcm4gaW50IGZz eW5jX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKZXh0ZXJuIGludCBmc3luY19ub19zdXBl cl9SNTc1MjA2NDQoa2Rldl90KTsKZXh0ZXJuIHZvaWQgc3luY19pbm9kZXNfc2Ioc3RydWN0IHN1 cGVyX2Jsb2NrICopOwpleHRlcm4gaW50IG9zeW5jX2lub2RlX2J1ZmZlcnMoc3RydWN0IGlub2Rl ICopOwpleHRlcm4gaW50IG9zeW5jX2lub2RlX2RhdGFfYnVmZmVycyhzdHJ1Y3QgaW5vZGUgKik7 CmV4dGVybiBpbnQgZnN5bmNfaW5vZGVfYnVmZmVyc19SOTYxNDBmMDQoc3RydWN0IGlub2RlICop OwpleHRlcm4gaW50IGZzeW5jX2lub2RlX2RhdGFfYnVmZmVyc19SMjA1ZmNmYmUoc3RydWN0IGlu b2RlICopOwpleHRlcm4gaW50IGlub2RlX2hhc19idWZmZXJzKHN0cnVjdCBpbm9kZSAqKTsKZXh0 ZXJuIHZvaWQgZmlsZW1hcF9mZGF0YXN5bmNfUmQzODY0Yjg2KHN0cnVjdCBhZGRyZXNzX3NwYWNl ICopOwpleHRlcm4gdm9pZCBmaWxlbWFwX2ZkYXRhd2FpdF9SYzc2ODU1ZDMoc3RydWN0IGFkZHJl c3Nfc3BhY2UgKik7CmV4dGVybiB2b2lkIHN5bmNfc3VwZXJzKGtkZXZfdCk7CmV4dGVybiBpbnQg Ym1hcF9SYmQ0NDc2YzQoc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQgbm90aWZ5X2No YW5nZV9SMTUzZWU4ZTYoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7CmV4dGVybiBp bnQgcGVybWlzc2lvbl9SNWRjZDE4M2Ioc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQg dmZzX3Blcm1pc3Npb25fUjhmOTU1MmM4KHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4gaW50 IGdldF93cml0ZV9hY2Nlc3NfUjhiY2YyNTgwKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBk ZW55X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgZmlsZSAqKTsKc3RhdGljIGlubGluZSB2b2lkIHB1dF93 cml0ZV9hY2Nlc3Moc3RydWN0IGlub2RlICogaW5vZGUpCnsKICAgICAgICBhdG9taWNfZGVjKCZp bm9kZS0+aV93cml0ZWNvdW50KTsKfQpzdGF0aWMgaW5saW5lIHZvaWQgYWxsb3dfd3JpdGVfYWNj ZXNzKHN0cnVjdCBmaWxlICpmaWxlKQp7CiAgICAgICAgaWYgKGZpbGUpCiAgICAgICAgICAgICAg ICBhdG9taWNfaW5jKCZmaWxlLT5mX2RlbnRyeS0+ZF9pbm9kZS0+aV93cml0ZWNvdW50KTsKfQpl eHRlcm4gaW50IGRvX3BpcGUoaW50ICopOwoKZXh0ZXJuIGludCBvcGVuX25hbWVpKGNvbnN0IGNo YXIgKiwgaW50LCBpbnQsIHN0cnVjdCBuYW1laWRhdGEgKik7CgpleHRlcm4gaW50IGtlcm5lbF9y ZWFkX1I3MWQ4ZTJmNShzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCBsb25nLCBjaGFyICosIHVuc2ln bmVkIGxvbmcpOwpleHRlcm4gc3RydWN0IGZpbGUgKiBvcGVuX2V4ZWNfUjE5OTRlNTgzKGNvbnN0 IGNoYXIgKik7CgoKZXh0ZXJuIGludCBpc19zdWJkaXJfUmZlNmQ4MzlmKHN0cnVjdCBkZW50cnkg Kiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGlub190IGZpbmRfaW5vZGVfbnVtYmVyX1JlZTUz ZjI2NihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBxc3RyICopOwojIDEyMzYgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIKc3RhdGljIGlubGluZSB2b2lkICpF UlJfUFRSKGxvbmcgZXJyb3IpCnsKICAgICAgICByZXR1cm4gKHZvaWQgKikgZXJyb3I7Cn0KCnN0 YXRpYyBpbmxpbmUgbG9uZyBQVFJfRVJSKGNvbnN0IHZvaWQgKnB0cikKewogICAgICAgIHJldHVy biAobG9uZykgcHRyOwp9CgpzdGF0aWMgaW5saW5lIGxvbmcgSVNfRVJSKGNvbnN0IHZvaWQgKnB0 cikKewogICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZylwdHIgPiAodW5zaWduZWQgbG9uZykt MTAwMEw7Cn0KIyAxMjY3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L2ZzLmgiCmVudW0ge0xBU1RfTk9STSwgTEFTVF9ST09ULCBMQVNUX0RPVCwgTEFTVF9ET1RET1Qs IExBU1RfQklORH07CiMgMTI3OCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s aW51eC9mcy5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgc2l6ZV90IHdyaXR0ZW47CiAgICAg ICAgc2l6ZV90IGNvdW50OwogICAgICAgIGNoYXIgKiBidWY7CiAgICAgICAgaW50IGVycm9yOwp9 IHJlYWRfZGVzY3JpcHRvcl90OwoKdHlwZWRlZiBpbnQgKCpyZWFkX2FjdG9yX3QpKHJlYWRfZGVz Y3JpcHRvcl90ICosIHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcp OwoKCmV4dGVybiBsb2ZmX3QgZGVmYXVsdF9sbHNlZWtfUjVjMmUyMGQ4KHN0cnVjdCBmaWxlICpm aWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgb3JpZ2luKTsKCmV4dGVybiBpbnQgX191c2VyX3dhbGtf UmRjNTk3MTcyKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQsIHN0cnVjdCBuYW1laWRhdGEgKik7CmV4 dGVybiBpbnQgcGF0aF9pbml0X1JiNDE3MjNkNyhjb25zdCBjaGFyICosIHVuc2lnbmVkLCBzdHJ1 Y3QgbmFtZWlkYXRhICopOwpleHRlcm4gaW50IHBhdGhfd2Fsa19SYzNiODJiOTcoY29uc3QgY2hh ciAqLCBzdHJ1Y3QgbmFtZWlkYXRhICopOwpleHRlcm4gdm9pZCBwYXRoX3JlbGVhc2VfUjRlYjA0 ZWYxKHN0cnVjdCBuYW1laWRhdGEgKik7CmV4dGVybiBpbnQgZm9sbG93X2Rvd25fUjhkMzZjYzdj KHN0cnVjdCB2ZnNtb3VudCAqKiwgc3RydWN0IGRlbnRyeSAqKik7CmV4dGVybiBpbnQgZm9sbG93 X3VwX1IzOTE2YTdlZihzdHJ1Y3QgdmZzbW91bnQgKiosIHN0cnVjdCBkZW50cnkgKiopOwpleHRl cm4gc3RydWN0IGRlbnRyeSAqIGxvb2t1cF9vbmVfbGVuX1JkZjdlYjJkMChjb25zdCBjaGFyICos IHN0cnVjdCBkZW50cnkgKiwgaW50KTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBsb29rdXBfaGFz aF9SNzg4ZTcxNTMoc3RydWN0IHFzdHIgKiwgc3RydWN0IGRlbnRyeSAqKTsKCgoKZXh0ZXJuIHZv aWQgaXB1dF9SYjM1MTk3MTIoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBmb3JjZV9kZWxl dGVfUjg4YWNkMzFlKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIGlncmFi X1IzMTRmZjQxZihzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbm9fdCBpdW5pcXVlX1JkNGQ0OGMy YihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW5vX3QpOwoKdHlwZWRlZiBpbnQgKCpmaW5kX2lub2Rl X3QpKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwpleHRlcm4gc3RydWN0 IGlub2RlICogaWdldDRfUjJjZWUwOGM3KHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNpZ25lZCBs b25nLCBmaW5kX2lub2RlX3QsIHZvaWQgKik7CnN0YXRpYyBpbmxpbmUgc3RydWN0IGlub2RlICpp Z2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vKQp7CiAgICAgICAg cmV0dXJuIGlnZXQ0X1IyY2VlMDhjNyhzYiwgaW5vLCAoKHZvaWQgKikwKSwgKCh2b2lkICopMCkp Owp9CgpleHRlcm4gdm9pZCBjbGVhcl9pbm9kZV9SNDUwNjM4NTcoc3RydWN0IGlub2RlICopOwpl eHRlcm4gc3RydWN0IGlub2RlICogZ2V0X2VtcHR5X2lub2RlX1IzNzk2NmQ1MSh2b2lkKTsKc3Rh dGljIGlubGluZSBzdHJ1Y3QgaW5vZGUgKiBuZXdfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpz YikKewogICAgICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBnZXRfZW1wdHlfaW5vZGVfUjM3OTY2 ZDUxKCk7CiAgICAgICAgaWYgKGlub2RlKSB7CiAgICAgICAgICAgICAgICBpbm9kZS0+aV9zYiA9 IHNiOwogICAgICAgICAgICAgICAgaW5vZGUtPmlfZGV2ID0gc2ItPnNfZGV2OwogICAgICAgIH0K ICAgICAgICByZXR1cm4gaW5vZGU7Cn0KZXh0ZXJuIHZvaWQgcmVtb3ZlX3N1aWQoc3RydWN0IGlu b2RlICppbm9kZSk7CgpleHRlcm4gdm9pZCBpbnNlcnRfaW5vZGVfaGFzaF9SZDUyZGQxMjAoc3Ry dWN0IGlub2RlICopOwpleHRlcm4gdm9pZCByZW1vdmVfaW5vZGVfaGFzaF9SYzUxMDFhZDcoc3Ry dWN0IGlub2RlICopOwpleHRlcm4gc3RydWN0IGZpbGUgKiBnZXRfZW1wdHlfZmlscF9SZTAxOGFi ZTgodm9pZCk7CmV4dGVybiB2b2lkIGZpbGVfbW92ZShzdHJ1Y3QgZmlsZSAqZiwgc3RydWN0IGxp c3RfaGVhZCAqbGlzdCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBnZXRfaGFzaF90YWJs ZV9SYjZjODAyMWYoa2Rldl90LCBpbnQsIGludCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQg KiBnZXRibGtfUjI3MTQyODI0KGtkZXZfdCwgaW50LCBpbnQpOwpleHRlcm4gdm9pZCBsbF9yd19i bG9ja19SZWIzOWFiMDYoaW50LCBpbnQsIHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoW10pOwpleHRl cm4gdm9pZCBzdWJtaXRfYmhfUjQ4NDE5Yzk3KGludCwgc3RydWN0IGJ1ZmZlcl9oZWFkICopOwpl eHRlcm4gaW50IGlzX3JlYWRfb25seV9SNzQwMjc0Y2Eoa2Rldl90KTsKZXh0ZXJuIHZvaWQgX19i cmVsc2VfUmU1MGZlZTYwKHN0cnVjdCBidWZmZXJfaGVhZCAqKTsKc3RhdGljIGlubGluZSB2b2lk IGJyZWxzZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJ1ZikKewogICAgICAgIGlmIChidWYpCiAgICAg ICAgICAgICAgICBfX2JyZWxzZV9SZTUwZmVlNjAoYnVmKTsKfQpleHRlcm4gdm9pZCBfX2Jmb3Jn ZXRfUjdjY2IwMTY3KHN0cnVjdCBidWZmZXJfaGVhZCAqKTsKc3RhdGljIGlubGluZSB2b2lkIGJm b3JnZXQoc3RydWN0IGJ1ZmZlcl9oZWFkICpidWYpCnsKICAgICAgICBpZiAoYnVmKQogICAgICAg ICAgICAgICAgX19iZm9yZ2V0X1I3Y2NiMDE2NyhidWYpOwp9CmV4dGVybiB2b2lkIHNldF9ibG9j a3NpemVfUmE4NDI3MjJhKGtkZXZfdCwgaW50KTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAq IGJyZWFkX1JkNzE3MDgxNChrZGV2X3QsIGludCwgaW50KTsKZXh0ZXJuIHZvaWQgd2FrZXVwX2Jk Zmx1c2godm9pZCk7CgpleHRlcm4gaW50IGJyd19wYWdlX1I0NzdkMGU2ZChpbnQsIHN0cnVjdCBw YWdlICosIGtkZXZfdCwgaW50IFtdLCBpbnQpOwoKdHlwZWRlZiBpbnQgKGdldF9ibG9ja190KShz dHJ1Y3QgaW5vZGUqLGxvbmcsc3RydWN0IGJ1ZmZlcl9oZWFkKixpbnQpOwoKCmV4dGVybiBpbnQg ZGlzY2FyZF9iaF9wYWdlKHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxvbmcsIGludCk7CgoKZXh0 ZXJuIGludCBibG9ja19zeW1saW5rX1I4M2IzYjMyMChzdHJ1Y3QgaW5vZGUgKiwgY29uc3QgY2hh ciAqLCBpbnQpOwpleHRlcm4gaW50IGJsb2NrX3dyaXRlX2Z1bGxfcGFnZV9SMjU5NzFiYjkoc3Ry dWN0IHBhZ2UqLCBnZXRfYmxvY2tfdCopOwpleHRlcm4gaW50IGJsb2NrX3JlYWRfZnVsbF9wYWdl X1IzY2M2YzZiYihzdHJ1Y3QgcGFnZSosIGdldF9ibG9ja190Kik7CmV4dGVybiBpbnQgYmxvY2tf cHJlcGFyZV93cml0ZV9SOTZjODU5MTcoc3RydWN0IHBhZ2UqLCB1bnNpZ25lZCwgdW5zaWduZWQs IGdldF9ibG9ja190Kik7CmV4dGVybiBpbnQgY29udF9wcmVwYXJlX3dyaXRlX1JkYWI1ZjJmYihz dHJ1Y3QgcGFnZSosIHVuc2lnbmVkLCB1bnNpZ25lZCwgZ2V0X2Jsb2NrX3QqLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKik7CmV4dGVybiBpbnQgYmxvY2tf c3luY19wYWdlX1IxZGVkYTE0MyhzdHJ1Y3QgcGFnZSAqKTsKCmludCBnZW5lcmljX2Jsb2NrX2Jt YXBfUmY1ZTNlOTg1KHN0cnVjdCBhZGRyZXNzX3NwYWNlICosIGxvbmcsIGdldF9ibG9ja190ICop OwppbnQgZ2VuZXJpY19jb21taXRfd3JpdGVfUjI4MGJlYjJlKHN0cnVjdCBmaWxlICosIHN0cnVj dCBwYWdlICosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CmludCBibG9ja190cnVuY2F0ZV9wYWdlX1I1 ODIwZThkYShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBsb2ZmX3QsIGdldF9ibG9ja190ICopOwpl eHRlcm4gaW50IGdlbmVyaWNfZGlyZWN0X0lPX1I5ZDQ2Y2I3OChpbnQsIHN0cnVjdCBpbm9kZSAq LCBzdHJ1Y3Qga2lvYnVmICosIHVuc2lnbmVkIGxvbmcsIGludCwgZ2V0X2Jsb2NrX3QgKik7CmV4 dGVybiB2b2lkIGNyZWF0ZV9lbXB0eV9idWZmZXJzKHN0cnVjdCBwYWdlICosIGtkZXZfdCwgdW5z aWduZWQgbG9uZyk7CgpleHRlcm4gaW50IHdhaXRmb3Jfb25lX3BhZ2VfUmNiYjM2ZmIxKHN0cnVj dCBwYWdlKik7CmV4dGVybiBpbnQgZ2VuZXJpY19maWxlX21tYXBfUjJjNmI0ZTA3KHN0cnVjdCBm aWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBmaWxlX3JlYWRfYWN0 b3IocmVhZF9kZXNjcmlwdG9yX3QgKiBkZXNjLCBzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQg bG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNf ZmlsZV9yZWFkX1I2Mjc3NDg5YyhzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90 ICopOwpleHRlcm4gc3NpemVfdCBnZW5lcmljX2ZpbGVfd3JpdGVfUjE5OWUzOGRkKHN0cnVjdCBm aWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiB2b2lkIGRvX2dl bmVyaWNfZmlsZV9yZWFkX1I2NjM0MDBhMShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QgKiwgcmVhZF9k ZXNjcmlwdG9yX3QgKiwgcmVhZF9hY3Rvcl90KTsKZXh0ZXJuIGxvZmZfdCBub19sbHNlZWtfUjNi NTUxNDRhKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgb3JpZ2luKTsKZXh0 ZXJuIGxvZmZfdCBnZW5lcmljX2ZpbGVfbGxzZWVrX1JjYzY0NTFjYShzdHJ1Y3QgZmlsZSAqZmls ZSwgbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbik7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfcmVh ZF9kaXJfUmE4NDE1ZGFhKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7 CmV4dGVybiBpbnQgZ2VuZXJpY19maWxlX29wZW5fUmNiNjc5MmJkKHN0cnVjdCBpbm9kZSAqIGlu b2RlLCBzdHJ1Y3QgZmlsZSAqIGZpbHApOwoKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMg Z2VuZXJpY19yb19mb3BzX1I2ZTAzZDgzMTsKCmV4dGVybiBpbnQgdmZzX3JlYWRsaW5rX1JmZjM3 MjVhZChzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKiwgaW50LCBjb25zdCBjaGFyICopOwpleHRlcm4g aW50IHZmc19mb2xsb3dfbGlua19SZDM5N2I5NzUoc3RydWN0IG5hbWVpZGF0YSAqLCBjb25zdCBj aGFyICopOwpleHRlcm4gaW50IHBhZ2VfcmVhZGxpbmtfUmI5ZjY5ZmVkKHN0cnVjdCBkZW50cnkg KiwgY2hhciAqLCBpbnQpOwpleHRlcm4gaW50IHBhZ2VfZm9sbG93X2xpbmtfUjU5NzViYmQ4KHN0 cnVjdCBkZW50cnkgKiwgc3RydWN0IG5hbWVpZGF0YSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZV9v cGVyYXRpb25zIHBhZ2Vfc3ltbGlua19pbm9kZV9vcGVyYXRpb25zX1I4MzFjZjg5MjsKCmV4dGVy biBpbnQgdmZzX3JlYWRkaXJfUjFjMDBjMDkyKHN0cnVjdCBmaWxlICosIGZpbGxkaXJfdCwgdm9p ZCAqKTsKZXh0ZXJuIGludCBkY2FjaGVfcmVhZGRpcl9SMDc5MGRhOWIoc3RydWN0IGZpbGUgKiwg dm9pZCAqLCBmaWxsZGlyX3QpOwoKZXh0ZXJuIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpnZXRf ZnNfdHlwZV9SNThmNDNiNzAoY29uc3QgY2hhciAqbmFtZSk7CmV4dGVybiBzdHJ1Y3Qgc3VwZXJf YmxvY2sgKmdldF9zdXBlcl9SYjZmOTg2NWMoa2Rldl90KTsKZXh0ZXJuIHZvaWQgZHJvcF9zdXBl cl9SOTVhZGE3NzQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CnN0YXRpYyBpbmxpbmUgaW50IGlz X21vdW50ZWQoa2Rldl90IGRldikKewogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBn ZXRfc3VwZXJfUmI2Zjk4NjVjKGRldik7CiAgICAgICAgaWYgKHNiKSB7CiAgICAgICAgICAgICAg ICBkcm9wX3N1cGVyX1I5NWFkYTc3NChzYik7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAg ICAgICB9CiAgICAgICAgcmV0dXJuIDA7Cn0KdW5zaWduZWQgbG9uZyBnZW5lcmF0ZV9jbHVzdGVy KGtkZXZfdCwgaW50IGJbXSwgaW50KTsKdW5zaWduZWQgbG9uZyBnZW5lcmF0ZV9jbHVzdGVyX3N3 YWIzMihrZGV2X3QsIGludCBiW10sIGludCk7CmV4dGVybiBrZGV2X3QgUk9PVF9ERVZfUmIzMjQ5 NmU4OwpleHRlcm4gY2hhciByb290X2RldmljZV9uYW1lW107CgoKZXh0ZXJuIHZvaWQgc2hvd19i dWZmZXJzKHZvaWQpOwpleHRlcm4gdm9pZCBtb3VudF9yb290KHZvaWQpOwoKCgoKCgpleHRlcm4g c3NpemVfdCBjaGFyX3JlYWQoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAq KTsKZXh0ZXJuIHNzaXplX3QgYmxvY2tfcmVhZChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVf dCwgbG9mZl90ICopOwpleHRlcm4gaW50IHJlYWRfYWhlYWRfUjBhYmI3YjA3W107CgpleHRlcm4g c3NpemVfdCBjaGFyX3dyaXRlKHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBs b2ZmX3QgKik7CmV4dGVybiBzc2l6ZV90IGJsb2NrX3dyaXRlKHN0cnVjdCBmaWxlICosIGNvbnN0 IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CgpleHRlcm4gaW50IGZpbGVfZnN5bmNfUjdmOWQw MjU2KHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwgaW50KTsKZXh0ZXJuIGludCBnZW5l cmljX2J1ZmZlcl9mZGF0YXN5bmNfUjYxMmZjYzY3KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2ln bmVkIGxvbmcgc3RhcnRfaWR4LCB1bnNpZ25lZCBsb25nIGVuZF9pZHgpOwpleHRlcm4gaW50IGdl bmVyaWNfb3N5bmNfaW5vZGUoc3RydWN0IGlub2RlICosIGludCk7CgoKCgpleHRlcm4gaW50IGlu b2RlX2NoYW5nZV9va19SYmMwYjU2NDIoc3RydWN0IGlub2RlICosIHN0cnVjdCBpYXR0ciAqKTsK ZXh0ZXJuIGludCBpbm9kZV9zZXRhdHRyX1I1M2M2ZDNkMChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0 IGlhdHRyICopOwojIDE0NTcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu dXgvZnMuaCIKc3RhdGljIGlubGluZSBzdHJ1Y3QgZGVudHJ5ICpsb2NrX3BhcmVudChzdHJ1Y3Qg ZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkaXIgPSBkZ2V0KGRlbnRy eS0+ZF9wYXJlbnQpOwoKICAgICAgICBkb3duKCZkaXItPmRfaW5vZGUtPmlfc2VtKTsKICAgICAg ICByZXR1cm4gZGlyOwp9CgpzdGF0aWMgaW5saW5lIHN0cnVjdCBkZW50cnkgKmdldF9wYXJlbnQo c3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgcmV0dXJuIGRnZXQoZGVudHJ5LT5kX3Bh cmVudCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB1bmxvY2tfZGlyKHN0cnVjdCBkZW50cnkgKmRp cikKewogICAgICAgIHVwKCZkaXItPmRfaW5vZGUtPmlfc2VtKTsKICAgICAgICBkcHV0X1JkNmNk ODI4NChkaXIpOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV9kb3duKHN0cnVjdCBz ZW1hcGhvcmUgKnMxLCBzdHJ1Y3Qgc2VtYXBob3JlICpzMikKewogICAgICAgIGlmIChzMSAhPSBz MikgewogICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSBzMSA8ICh1bnNpZ25lZCBs b25nKSBzMikgewogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAg PSBzMjsKICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBzMTsgczEgPSB0bXA7CiAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICBkb3duKHMxKTsKICAgICAgICB9CiAgICAgICAgZG93 bihzMik7Cn0KIyAxNTAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L2ZzLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCB0cmlwbGVfZG93bihzdHJ1Y3Qgc2VtYXBob3JlICpz MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMyLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqczMpCnsKICAg ICAgICBpZiAoczEgIT0gczIpIHsKICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykg czEgPCAodW5zaWduZWQgbG9uZykgczIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh1 bnNpZ25lZCBsb25nKSBzMSA8ICh1bnNpZ25lZCBsb25nKSBzMykgewogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnRtcCA9IHMzOwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHMzID0gczE7IHMxID0gdG1wOwogICAgICAgICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAo dW5zaWduZWQgbG9uZykgczIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3Qgc2VtYXBob3JlICp0bXAgPSBzMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz MiA9IHMxOyBzMSA9IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSBz MSA8ICh1bnNpZ25lZCBsb25nKSBzMykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBzZW1hcGhvcmUgKnRtcCA9IHMzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHMzID0gczE7IHMxID0gdG1wOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczIgPCAodW5zaWduZWQgbG9uZykg czMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0 bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHMyOyBzMiA9IHRt cDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgZG93bihzMSk7CiAgICAgICAgfSBlbHNlIGlmICgodW5zaWduZWQgbG9uZykgczIgPCAo dW5zaWduZWQgbG9uZykgczMpIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnRt cCA9IHMzOwogICAgICAgICAgICAgICAgczMgPSBzMjsgczIgPSB0bXA7CiAgICAgICAgfQogICAg ICAgIGRvd24oczIpOwogICAgICAgIGRvd24oczMpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgZG91 YmxlX3VwKHN0cnVjdCBzZW1hcGhvcmUgKnMxLCBzdHJ1Y3Qgc2VtYXBob3JlICpzMikKewogICAg ICAgIHVwKHMxKTsKICAgICAgICBpZiAoczEgIT0gczIpCiAgICAgICAgICAgICAgICB1cChzMik7 Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0cmlwbGVfdXAoc3RydWN0IHNlbWFwaG9yZSAqczEsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqczIsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqczMpCnsKICAgICAgICB1cChz MSk7CiAgICAgICAgaWYgKHMxICE9IHMyKQogICAgICAgICAgICAgICAgdXAoczIpOwogICAgICAg IHVwKHMzKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV9sb2NrKHN0cnVjdCBkZW50cnkg KmQxLCBzdHJ1Y3QgZGVudHJ5ICpkMikKewogICAgICAgIGRvdWJsZV9kb3duKCZkMS0+ZF9pbm9k ZS0+aV9zZW0sICZkMi0+ZF9pbm9kZS0+aV9zZW0pOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgZG91 YmxlX3VubG9jayhzdHJ1Y3QgZGVudHJ5ICpkMSwgc3RydWN0IGRlbnRyeSAqZDIpCnsKICAgICAg ICBkb3VibGVfdXAoJmQxLT5kX2lub2RlLT5pX3NlbSwmZDItPmRfaW5vZGUtPmlfc2VtKTsKICAg ICAgICBkcHV0X1JkNmNkODI4NChkMSk7CiAgICAgICAgZHB1dF9SZDZjZDgyODQoZDIpOwp9CiMg MTggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5o IiAyCiMgMzIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY2FwYWJp bGl0eS5oIgp0eXBlZGVmIHN0cnVjdCBfX3VzZXJfY2FwX2hlYWRlcl9zdHJ1Y3QgewogICAgICAg IF9fdTMyIHZlcnNpb247CiAgICAgICAgaW50IHBpZDsKfSAqY2FwX3VzZXJfaGVhZGVyX3Q7Cgp0 eXBlZGVmIHN0cnVjdCBfX3VzZXJfY2FwX2RhdGFfc3RydWN0IHsKICAgICAgICBfX3UzMiBlZmZl Y3RpdmU7CiAgICAgICAgX191MzIgcGVybWl0dGVkOwogICAgICAgIF9fdTMyIGluaGVyaXRhYmxl Owp9ICpjYXBfdXNlcl9kYXRhX3Q7CiMgNTUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIgp0eXBlZGVmIF9fdTMyIGtlcm5lbF9jYXBfdDsKIyAy ODQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5o IgpleHRlcm4ga2VybmVsX2NhcF90IGNhcF9ic2V0X1I1OWFiNDA4MDsKIyAzMTIgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIgpzdGF0aWMgaW5s aW5lIGtlcm5lbF9jYXBfdCBjYXBfY29tYmluZShrZXJuZWxfY2FwX3QgYSwga2VybmVsX2NhcF90 IGIpCnsKICAgICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkgPSAoYSkgfCAoYik7CiAg ICAgcmV0dXJuIGRlc3Q7Cn0KCnN0YXRpYyBpbmxpbmUga2VybmVsX2NhcF90IGNhcF9pbnRlcnNl Y3Qoa2VybmVsX2NhcF90IGEsIGtlcm5lbF9jYXBfdCBiKQp7CiAgICAga2VybmVsX2NhcF90IGRl c3Q7CiAgICAgKGRlc3QpID0gKGEpICYgKGIpOwogICAgIHJldHVybiBkZXN0Owp9CgpzdGF0aWMg aW5saW5lIGtlcm5lbF9jYXBfdCBjYXBfZHJvcChrZXJuZWxfY2FwX3QgYSwga2VybmVsX2NhcF90 IGRyb3ApCnsKICAgICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkgPSAoYSkgJiB+KGRy b3ApOwogICAgIHJldHVybiBkZXN0Owp9CgpzdGF0aWMgaW5saW5lIGtlcm5lbF9jYXBfdCBjYXBf aW52ZXJ0KGtlcm5lbF9jYXBfdCBjKQp7CiAgICAga2VybmVsX2NhcF90IGRlc3Q7CiAgICAgKGRl c3QpID0gfihjKTsKICAgICByZXR1cm4gZGVzdDsKfQojIDYgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvYmluZm10cy5oIiAyCiMgMjIgIi91c3Ivc3JjL3J1ZG8vbGlu dXgtMi40LjEwL2luY2x1ZGUvbGludXgvYmluZm10cy5oIgpzdHJ1Y3QgbGludXhfYmlucHJtewog ICAgICAgIGNoYXIgYnVmWzEyOF07CiAgICAgICAgc3RydWN0IHBhZ2UgKnBhZ2VbMzJdOwogICAg ICAgIHVuc2lnbmVkIGxvbmcgcDsKICAgICAgICBpbnQgc2hfYmFuZzsKICAgICAgICBzdHJ1Y3Qg ZmlsZSAqIGZpbGU7CiAgICAgICAgaW50IGVfdWlkLCBlX2dpZDsKICAgICAgICBrZXJuZWxfY2Fw X3QgY2FwX2luaGVyaXRhYmxlLCBjYXBfcGVybWl0dGVkLCBjYXBfZWZmZWN0aXZlOwogICAgICAg IGludCBhcmdjLCBlbnZjOwogICAgICAgIGNoYXIgKiBmaWxlbmFtZTsKICAgICAgICB1bnNpZ25l ZCBsb25nIGxvYWRlciwgZXhlYzsKfTsKCgoKCgpzdHJ1Y3QgbGludXhfYmluZm10IHsKICAgICAg ICBzdHJ1Y3QgbGludXhfYmluZm10ICogbmV4dDsKICAgICAgICBzdHJ1Y3QgbW9kdWxlICptb2R1 bGU7CiAgICAgICAgaW50ICgqbG9hZF9iaW5hcnkpKHN0cnVjdCBsaW51eF9iaW5wcm0gKiwgc3Ry dWN0IHB0X3JlZ3MgKiByZWdzKTsKICAgICAgICBpbnQgKCpsb2FkX3NobGliKShzdHJ1Y3QgZmls ZSAqKTsKICAgICAgICBpbnQgKCpjb3JlX2R1bXApKGxvbmcgc2lnbnIsIHN0cnVjdCBwdF9yZWdz ICogcmVncywgc3RydWN0IGZpbGUgKiBmaWxlKTsKICAgICAgICB1bnNpZ25lZCBsb25nIG1pbl9j b3JlZHVtcDsKfTsKCmV4dGVybiBpbnQgcmVnaXN0ZXJfYmluZm10X1IwYzcwMzJlMShzdHJ1Y3Qg bGludXhfYmluZm10ICopOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfYmluZm10X1JmZjQwNmU5ZShz dHJ1Y3QgbGludXhfYmluZm10ICopOwoKZXh0ZXJuIGludCBwcmVwYXJlX2JpbnBybV9SZTQxMTAy ODAoc3RydWN0IGxpbnV4X2JpbnBybSAqKTsKZXh0ZXJuIHZvaWQgcmVtb3ZlX2FyZ196ZXJvX1I2 MzRjZTVjNChzdHJ1Y3QgbGludXhfYmlucHJtICopOwpleHRlcm4gaW50IHNlYXJjaF9iaW5hcnlf aGFuZGxlcl9SZTQ5M2QxZGIoc3RydWN0IGxpbnV4X2JpbnBybSAqLHN0cnVjdCBwdF9yZWdzICop OwpleHRlcm4gaW50IGZsdXNoX29sZF9leGVjX1I4ZjVlMmY0ZShzdHJ1Y3QgbGludXhfYmlucHJt ICogYnBybSk7CmV4dGVybiBpbnQgc2V0dXBfYXJnX3BhZ2VzX1I5ZmMzMTMxNShzdHJ1Y3QgbGlu dXhfYmlucHJtICogYnBybSk7CmV4dGVybiBpbnQgY29weV9zdHJpbmdzKGludCBhcmdjLGNoYXIg KiogYXJndixzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKTsKZXh0ZXJuIGludCBjb3B5X3N0cmlu Z3Nfa2VybmVsX1I3YTk4ZWQ2YyhpbnQgYXJnYyxjaGFyICoqIGFyZ3Ysc3RydWN0IGxpbnV4X2Jp bnBybSAqYnBybSk7CmV4dGVybiB2b2lkIGNvbXB1dGVfY3JlZHNfUmZiMjk1MGEwKHN0cnVjdCBs aW51eF9iaW5wcm0gKmJpbnBybSk7CmV4dGVybiBpbnQgZG9fY29yZWR1bXAobG9uZyBzaWduciwg c3RydWN0IHB0X3JlZ3MgKiByZWdzKTsKZXh0ZXJuIHZvaWQgc2V0X2JpbmZtdF9SOGU4NmNjMjco c3RydWN0IGxpbnV4X2JpbmZtdCAqbmV3KTsKIyAxMCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC90aHJlYWRzLmgiIDEKIyAxMSAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDEyICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxMyAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC90aW1lcy5oIiAxCgoKCnN0cnVjdCB0bXMgewogICAgICAg IGNsb2NrX3QgdG1zX3V0aW1lOwogICAgICAgIGNsb2NrX3QgdG1zX3N0aW1lOwogICAgICAgIGNs b2NrX3QgdG1zX2N1dGltZTsKICAgICAgICBjbG9ja190IHRtc19jc3RpbWU7Cn07CiMgMTQgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdGltZXguaCIgMQojIDU0ICIv dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiCiMgMSAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcGFyYW0uaCIgMQojIDU1ICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiIDIKIyAxNTIgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdGltZXguaCIKIyAxICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS90aW1leC5oIiAxCiMgOSAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vdGltZXguaCIKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTAgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3RpbWV4LmgiIDIKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9tc3IuaCIgMQojIDExICIvdXNyL3NyYy9ydWRv L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS90aW1leC5oIiAyCiMgMzIgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3RpbWV4LmgiCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBs b25nIGN5Y2xlc190OwoKZXh0ZXJuIGN5Y2xlc190IGNhY2hlZmx1c2hfdGltZTsKCnN0YXRpYyBp bmxpbmUgY3ljbGVzX3QgZ2V0X2N5Y2xlcyAodm9pZCkKewoKCgogICAgICAgIHVuc2lnbmVkIGxv bmcgbG9uZyByZXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJyZHRzYyIgOiAiPUEi IChyZXQpKTsKICAgICAgICByZXR1cm4gcmV0OwoKfQoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgY3B1 X2toejsKIyAxNTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdGlt ZXguaCIgMgojIDE2MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90 aW1leC5oIgpzdHJ1Y3QgdGltZXggewogICAgICAgIHVuc2lnbmVkIGludCBtb2RlczsKICAgICAg ICBsb25nIG9mZnNldDsKICAgICAgICBsb25nIGZyZXE7CiAgICAgICAgbG9uZyBtYXhlcnJvcjsK ICAgICAgICBsb25nIGVzdGVycm9yOwogICAgICAgIGludCBzdGF0dXM7CiAgICAgICAgbG9uZyBj b25zdGFudDsKICAgICAgICBsb25nIHByZWNpc2lvbjsKICAgICAgICBsb25nIHRvbGVyYW5jZTsK CgogICAgICAgIHN0cnVjdCB0aW1ldmFsIHRpbWU7CiAgICAgICAgbG9uZyB0aWNrOwoKICAgICAg ICBsb25nIHBwc2ZyZXE7CiAgICAgICAgbG9uZyBqaXR0ZXI7CiAgICAgICAgaW50IHNoaWZ0Owog ICAgICAgIGxvbmcgc3RhYmlsOwogICAgICAgIGxvbmcgaml0Y250OwogICAgICAgIGxvbmcgY2Fs Y250OwogICAgICAgIGxvbmcgZXJyY250OwogICAgICAgIGxvbmcgc3RiY250OwoKICAgICAgICBp bnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOwogICAgICAgIGludCA6MzI7IGludCA6 MzI7IGludCA6MzI7IGludCA6MzI7CiAgICAgICAgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsg aW50IDozMjsKfTsKIyAyNTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu dXgvdGltZXguaCIKZXh0ZXJuIGxvbmcgdGljazsKZXh0ZXJuIGludCB0aWNrYWRqOwoKCgoKZXh0 ZXJuIGludCB0aW1lX3N0YXRlOwpleHRlcm4gaW50IHRpbWVfc3RhdHVzOwpleHRlcm4gbG9uZyB0 aW1lX29mZnNldDsKZXh0ZXJuIGxvbmcgdGltZV9jb25zdGFudDsKZXh0ZXJuIGxvbmcgdGltZV90 b2xlcmFuY2U7CmV4dGVybiBsb25nIHRpbWVfcHJlY2lzaW9uOwpleHRlcm4gbG9uZyB0aW1lX21h eGVycm9yOwpleHRlcm4gbG9uZyB0aW1lX2VzdGVycm9yOwoKZXh0ZXJuIGxvbmcgdGltZV9waGFz ZTsKZXh0ZXJuIGxvbmcgdGltZV9mcmVxOwpleHRlcm4gbG9uZyB0aW1lX2FkajsKZXh0ZXJuIGxv bmcgdGltZV9yZWZ0aW1lOwoKZXh0ZXJuIGxvbmcgdGltZV9hZGp1c3Q7CgoKZXh0ZXJuIGxvbmcg cHBzX29mZnNldDsKZXh0ZXJuIGxvbmcgcHBzX2ppdHRlcjsKZXh0ZXJuIGxvbmcgcHBzX2ZyZXE7 CmV4dGVybiBsb25nIHBwc19zdGFiaWw7CmV4dGVybiBsb25nIHBwc192YWxpZDsKCgpleHRlcm4g aW50IHBwc19zaGlmdDsKZXh0ZXJuIGxvbmcgcHBzX2ppdGNudDsKZXh0ZXJuIGxvbmcgcHBzX2Nh bGNudDsKZXh0ZXJuIGxvbmcgcHBzX2VycmNudDsKZXh0ZXJuIGxvbmcgcHBzX3N0YmNudDsKIyAx NSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMg MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9yYnRyZWUuaCIgMQoj IDk3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3JidHJlZS5oIgoj IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgva2VybmVsLmgiIDEK IyA5OCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9yYnRyZWUuaCIg MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc3RkZGVmLmgi IDEKIyA5OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9yYnRyZWUu aCIgMgoKdHlwZWRlZiBzdHJ1Y3QgcmJfbm9kZV9zCnsKICAgICAgICBzdHJ1Y3QgcmJfbm9kZV9z ICogcmJfcGFyZW50OwogICAgICAgIGludCByYl9jb2xvcjsKCgogICAgICAgIHN0cnVjdCByYl9u b2RlX3MgKiByYl9yaWdodDsKICAgICAgICBzdHJ1Y3QgcmJfbm9kZV9zICogcmJfbGVmdDsKfQpy Yl9ub2RlX3Q7Cgp0eXBlZGVmIHN0cnVjdCByYl9yb290X3MKewogICAgICAgIHN0cnVjdCByYl9u b2RlX3MgKiByYl9ub2RlOwp9CnJiX3Jvb3RfdDsKCgoKCgpleHRlcm4gdm9pZCByYl9pbnNlcnRf Y29sb3IocmJfbm9kZV90ICosIHJiX3Jvb3RfdCAqKTsKZXh0ZXJuIHZvaWQgcmJfZXJhc2UocmJf bm9kZV90ICosIHJiX3Jvb3RfdCAqKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCByYl9saW5rX25vZGUo cmJfbm9kZV90ICogbm9kZSwgcmJfbm9kZV90ICogcGFyZW50LCByYl9ub2RlX3QgKiogcmJfbGlu aykKewogICAgICAgIG5vZGUtPnJiX3BhcmVudCA9IHBhcmVudDsKICAgICAgICBub2RlLT5yYl9j b2xvciA9IDA7CiAgICAgICAgbm9kZS0+cmJfbGVmdCA9IG5vZGUtPnJiX3JpZ2h0ID0gKCh2b2lk ICopMCk7CgogICAgICAgICpyYl9saW5rID0gbm9kZTsKfQojIDE2ICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCiMgMSAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc3lzdGVtLmgiIDEKIyAxOCAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDEKIyAxOSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcGFnZS5oIiAxCiMgMjAgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3B0cmFjZS5oIiAxCiMgMjEgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvYXNtL21tdS5oIiAxCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7 CiAgICAgICAgdm9pZCAqc2VnbWVudHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHV2YWxpZDsK fSBtbV9jb250ZXh0X3Q7CiMgMjIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvc2NoZWQuaCIgMgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L3NtcC5oIiAxCiMgOSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s aW51eC9zbXAuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L2NvbmZpZy5oIiAxCiMgMTAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu dXgvc21wLmgiIDIKIyAyNCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC90dHkuaCIgMQojIDE5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L3R0eS5oIgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29u ZmlnLmgiIDEKIyAyMCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90 dHkuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMu aCIgMQojIDIxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3R0eS5o IiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tYWpvci5o IiAxCiMgMTc3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21ham9y LmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBzY3NpX2Jsa19tYWpvcihpbnQgbSkgewogICAgICAg IHJldHVybiAoKChtKSA9PSA4IHx8ICgobSkgPj0gNjUgJiYgKG0pIDw9IDcxKSkgfHwgKG0pID09 IDExKTsKfQojIDE5MCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9t YWpvci5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgaWRlX2Jsa19tYWpvcihpbnQgbSkKewogICAg ICAgIHJldHVybiAoKG0pID09IDMgfHwgKG0pID09IDIyIHx8IChtKSA9PSAzMyB8fCAobSkgPT0g MzQgfHwgKG0pID09IDU2IHx8IChtKSA9PSA1NyB8fCAobSkgPT0gODggfHwgKG0pID09IDg5IHx8 IChtKSA9PSA5MCB8fCAobSkgPT0gOTEpOwp9CiMgMjIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvdHR5LmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L3Rlcm1pb3MuaCIgMQoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDUgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvdGVybWlvcy5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9hc20vdGVybWlvcy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9hc20vdGVybWJpdHMuaCIgMQoKCgojIDEgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCIgMQojIDUgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3Rlcm1iaXRzLmgiIDIKCnR5cGVkZWYg dW5zaWduZWQgY2hhciBjY190Owp0eXBlZGVmIHVuc2lnbmVkIGludCBzcGVlZF90Owp0eXBlZGVm IHVuc2lnbmVkIGludCB0Y2ZsYWdfdDsKCgpzdHJ1Y3QgdGVybWlvcyB7CiAgICAgICAgdGNmbGFn X3QgY19pZmxhZzsKICAgICAgICB0Y2ZsYWdfdCBjX29mbGFnOwogICAgICAgIHRjZmxhZ190IGNf Y2ZsYWc7CiAgICAgICAgdGNmbGFnX3QgY19sZmxhZzsKICAgICAgICBjY190IGNfbGluZTsKICAg ICAgICBjY190IGNfY2NbMTldOwp9OwojIDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvYXNtL3Rlcm1pb3MuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvYXNtL2lvY3Rscy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9hc20vaW9jdGwuaCIgMQojIDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvYXNtL2lvY3Rscy5oIiAyCiMgNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9hc20vdGVybWlvcy5oIiAyCgpzdHJ1Y3Qgd2luc2l6ZSB7CiAgICAgICAgdW5zaWduZWQg c2hvcnQgd3Nfcm93OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX2NvbDsKICAgICAgICB1bnNp Z25lZCBzaG9ydCB3c194cGl4ZWw7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd3NfeXBpeGVsOwp9 OwoKCnN0cnVjdCB0ZXJtaW8gewogICAgICAgIHVuc2lnbmVkIHNob3J0IGNfaWZsYWc7CiAgICAg ICAgdW5zaWduZWQgc2hvcnQgY19vZmxhZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjX2NmbGFn OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNfbGZsYWc7CiAgICAgICAgdW5zaWduZWQgY2hhciBj X2xpbmU7CiAgICAgICAgdW5zaWduZWQgY2hhciBjX2NjWzhdOwp9OwojIDYgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdGVybWlvcy5oIiAyCiMgMjMgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHR5LmgiIDIKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAxCiMgMjQgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdHR5LmgiIDIKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3R0eV9kcml2ZXIuaCIgMQojIDExOCAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90dHlfZHJpdmVyLmgiCiMgMSAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9mcy5oIiAxCiMgMTE5ICIv dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3R0eV9kcml2ZXIuaCIgMgoK c3RydWN0IHR0eV9kcml2ZXIgewogICAgICAgIGludCBtYWdpYzsKICAgICAgICBjb25zdCBjaGFy ICpkcml2ZXJfbmFtZTsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIGludCBuYW1l X2Jhc2U7CiAgICAgICAgc2hvcnQgbWFqb3I7CiAgICAgICAgc2hvcnQgbWlub3Jfc3RhcnQ7CiAg ICAgICAgc2hvcnQgbnVtOwogICAgICAgIHNob3J0IHR5cGU7CiAgICAgICAgc2hvcnQgc3VidHlw ZTsKICAgICAgICBzdHJ1Y3QgdGVybWlvcyBpbml0X3Rlcm1pb3M7CiAgICAgICAgaW50IGZsYWdz OwogICAgICAgIGludCAqcmVmY291bnQ7CiAgICAgICAgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpw cm9jX2VudHJ5OwogICAgICAgIHN0cnVjdCB0dHlfZHJpdmVyICpvdGhlcjsKCgoKCiAgICAgICAg c3RydWN0IHR0eV9zdHJ1Y3QgKip0YWJsZTsKICAgICAgICBzdHJ1Y3QgdGVybWlvcyAqKnRlcm1p b3M7CiAgICAgICAgc3RydWN0IHRlcm1pb3MgKip0ZXJtaW9zX2xvY2tlZDsKICAgICAgICB2b2lk ICpkcml2ZXJfc3RhdGU7CgoKCgoKICAgICAgICBpbnQgKCpvcGVuKShzdHJ1Y3QgdHR5X3N0cnVj dCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxwKTsKICAgICAgICB2b2lkICgqY2xvc2UpKHN0cnVj dCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbHApOwogICAgICAgIGludCAoKndy aXRlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgaW50IGZyb21fdXNlciwKICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IGNvdW50KTsKICAgICAgICB2 b2lkICgqcHV0X2NoYXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHVuc2lnbmVkIGNoYXIgY2gp OwogICAgICAgIHZvaWQgKCpmbHVzaF9jaGFycykoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAg ICAgICAgaW50ICgqd3JpdGVfcm9vbSkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAg aW50ICgqY2hhcnNfaW5fYnVmZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICBp bnQgKCppb2N0bCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAog ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTsK ICAgICAgICB2b2lkICgqc2V0X3Rlcm1pb3MpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVj dCB0ZXJtaW9zICogb2xkKTsKICAgICAgICB2b2lkICgqdGhyb3R0bGUpKHN0cnVjdCB0dHlfc3Ry dWN0ICogdHR5KTsKICAgICAgICB2b2lkICgqdW50aHJvdHRsZSkoc3RydWN0IHR0eV9zdHJ1Y3Qg KiB0dHkpOwogICAgICAgIHZvaWQgKCpzdG9wKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAg ICAgICB2b2lkICgqc3RhcnQpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHZvaWQg KCpoYW5ndXApKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHZvaWQgKCpicmVha19j dGwpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBzdGF0ZSk7CiAgICAgICAgdm9pZCAoKmZs dXNoX2J1ZmZlcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAoKnNldF9s ZGlzYykoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAoKndhaXRfdW50aWxf c2VudCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IHRpbWVvdXQpOwogICAgICAgIHZvaWQg KCpzZW5kX3hjaGFyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBjaGFyIGNoKTsKICAgICAgICBp bnQgKCpyZWFkX3Byb2MpKGNoYXIgKnBhZ2UsIGNoYXIgKipzdGFydCwgb2ZmX3Qgb2ZmLAogICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudCwgaW50ICplb2YsIHZvaWQgKmRhdGEpOwog ICAgICAgIGludCAoKndyaXRlX3Byb2MpKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyICpi dWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjb3VudCwgdm9p ZCAqZGF0YSk7CgoKCgogICAgICAgIHN0cnVjdCB0dHlfZHJpdmVyICpuZXh0OwogICAgICAgIHN0 cnVjdCB0dHlfZHJpdmVyICpwcmV2Owp9OwojIDI1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L3R0eS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC90dHlfbGRpc2MuaCIgMQojIDEwMCAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC90dHlfbGRpc2MuaCIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDEKIyAxMDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvdHR5X2xkaXNjLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMQojIDEwMiAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90dHlfbGRpc2MuaCIgMgoKc3RydWN0IHR0eV9sZGlz YyB7CiAgICAgICAgaW50IG1hZ2ljOwogICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgaW50IG51 bTsKICAgICAgICBpbnQgZmxhZ3M7CgoKCiAgICAgICAgaW50ICgqb3Blbikoc3RydWN0IHR0eV9z dHJ1Y3QgKik7CiAgICAgICAgdm9pZCAoKmNsb3NlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsKICAg ICAgICB2b2lkICgqZmx1c2hfYnVmZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAg ICBzc2l6ZV90ICgqY2hhcnNfaW5fYnVmZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAg ICAgICBzc2l6ZV90ICgqcmVhZCkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxl ICogZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqIGJ1Ziwgc2l6 ZV90IG5yKTsKICAgICAgICBzc2l6ZV90ICgqd3JpdGUpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5 LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNp Z25lZCBjaGFyICogYnVmLCBzaXplX3QgbnIpOwogICAgICAgIGludCAoKmlvY3RsKShzdHJ1Y3Qg dHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwogICAgICAgIHZvaWQg KCpzZXRfdGVybWlvcykoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IHRlcm1pb3MgKiBv bGQpOwogICAgICAgIHVuc2lnbmVkIGludCAoKnBvbGwpKHN0cnVjdCB0dHlfc3RydWN0ICosIHN0 cnVjdCBmaWxlICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBvbGxfdGFi bGVfc3RydWN0ICopOwoKCgoKICAgICAgICB2b2lkICgqcmVjZWl2ZV9idWYpKHN0cnVjdCB0dHlf c3RydWN0ICosIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNwLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2hhciAqZnAsIGludCBjb3VudCk7CiAgICAgICAgaW50ICgqcmVjZWl2ZV9yb29t KShzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfd2FrZXVwKShzdHJ1 Y3QgdHR5X3N0cnVjdCAqKTsKfTsKIyAyNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC90dHkuaCIgMgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2FzbS9zeXN0ZW0uaCIgMQojIDI4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L3R0eS5oIiAyCiMgNTkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvdHR5LmgiCnN0cnVjdCBzY3JlZW5faW5mb19SYzdkOGQ0ZDYgewogICAgICAgIHVu c2lnbmVkIGNoYXIgb3JpZ194OwogICAgICAgIHVuc2lnbmVkIGNoYXIgb3JpZ195OwogICAgICAg IHVuc2lnbmVkIHNob3J0IGRvbnR1c2UxOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG9yaWdfdmlk ZW9fcGFnZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIG9yaWdfdmlkZW9fbW9kZTsKICAgICAgICB1 bnNpZ25lZCBjaGFyIG9yaWdfdmlkZW9fY29sczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB1bnVz ZWQyOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG9yaWdfdmlkZW9fZWdhX2J4OwogICAgICAgIHVu c2lnbmVkIHNob3J0IHVudXNlZDM7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcmlnX3ZpZGVvX2xp bmVzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgb3JpZ192aWRlb19pc1ZHQTsKICAgICAgICB1bnNp Z25lZCBzaG9ydCBvcmlnX3ZpZGVvX3BvaW50czsKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IGxm Yl93aWR0aDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBsZmJfaGVpZ2h0OwogICAgICAgIHVuc2ln bmVkIHNob3J0IGxmYl9kZXB0aDsKICAgICAgICB1bnNpZ25lZCBsb25nIGxmYl9iYXNlOwogICAg ICAgIHVuc2lnbmVkIGxvbmcgbGZiX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZG9udHVz ZTIsIGRvbnR1c2UzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGxmYl9saW5lbGVuZ3RoOwogICAg ICAgIHVuc2lnbmVkIGNoYXIgcmVkX3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciByZWRfcG9z OwogICAgICAgIHVuc2lnbmVkIGNoYXIgZ3JlZW5fc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFy IGdyZWVuX3BvczsKICAgICAgICB1bnNpZ25lZCBjaGFyIGJsdWVfc2l6ZTsKICAgICAgICB1bnNp Z25lZCBjaGFyIGJsdWVfcG9zOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcnN2ZF9zaXplOwogICAg ICAgIHVuc2lnbmVkIGNoYXIgcnN2ZF9wb3M7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdmVzYXBt X3NlZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB2ZXNhcG1fb2ZmOwogICAgICAgIHVuc2lnbmVk IHNob3J0IHBhZ2VzOwoKfTsKCmV4dGVybiBzdHJ1Y3Qgc2NyZWVuX2luZm9fUmM3ZDhkNGQ2IHNj cmVlbl9pbmZvX1JjN2Q4ZDRkNjsKIyAxMzkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvdHR5LmgiCnN0cnVjdCB0dHlfZmxpcF9idWZmZXIgewogICAgICAgIHN0cnVj dCB0cV9zdHJ1Y3QgdHF1ZXVlOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgcHR5X3NlbTsKICAg ICAgICBjaGFyICpjaGFyX2J1Zl9wdHI7CiAgICAgICAgdW5zaWduZWQgY2hhciAqZmxhZ19idWZf cHRyOwogICAgICAgIGludCBjb3VudDsKICAgICAgICBpbnQgYnVmX251bTsKICAgICAgICB1bnNp Z25lZCBjaGFyIGNoYXJfYnVmWzIqNTEyXTsKICAgICAgICBjaGFyIGZsYWdfYnVmWzIqNTEyXTsK ICAgICAgICB1bnNpZ25lZCBjaGFyIHNsb3BbNF07Cn07CiMgMjU5ICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3R0eS5oIgpzdHJ1Y3QgdHR5X3N0cnVjdCB7CiAgICAg ICAgaW50IG1hZ2ljOwogICAgICAgIHN0cnVjdCB0dHlfZHJpdmVyIGRyaXZlcjsKICAgICAgICBz dHJ1Y3QgdHR5X2xkaXNjIGxkaXNjOwogICAgICAgIHN0cnVjdCB0ZXJtaW9zICp0ZXJtaW9zLCAq dGVybWlvc19sb2NrZWQ7CiAgICAgICAgaW50IHBncnA7CiAgICAgICAgaW50IHNlc3Npb247CiAg ICAgICAga2Rldl90IGRldmljZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAg IGludCBjb3VudDsKICAgICAgICBzdHJ1Y3Qgd2luc2l6ZSB3aW5zaXplOwogICAgICAgIHVuc2ln bmVkIGNoYXIgc3RvcHBlZDoxLCBod19zdG9wcGVkOjEsIGZsb3dfc3RvcHBlZDoxLCBwYWNrZXQ6 MTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGxvd19sYXRlbmN5OjEsIHdhcm5lZDoxOwogICAgICAg IHVuc2lnbmVkIGNoYXIgY3RybF9zdGF0dXM7CgogICAgICAgIHN0cnVjdCB0dHlfc3RydWN0ICps aW5rOwogICAgICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0ICpmYXN5bmM7CiAgICAgICAgc3RydWN0 IHR0eV9mbGlwX2J1ZmZlciBmbGlwOwogICAgICAgIGludCBtYXhfZmxpcF9jbnQ7CiAgICAgICAg aW50IGFsdF9zcGVlZDsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3cml0ZV93YWl0OwogICAg ICAgIHdhaXRfcXVldWVfaGVhZF90IHJlYWRfd2FpdDsKICAgICAgICBzdHJ1Y3QgdHFfc3RydWN0 IHRxX2hhbmd1cDsKICAgICAgICB2b2lkICpkaXNjX2RhdGE7CiAgICAgICAgdm9pZCAqZHJpdmVy X2RhdGE7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB0dHlfZmlsZXM7CgoKCgoKCgogICAgICAg IHVuc2lnbmVkIGludCBjb2x1bW47CiAgICAgICAgdW5zaWduZWQgY2hhciBsbmV4dDoxLCBlcmFz aW5nOjEsIHJhdzoxLCByZWFsX3JhdzoxLCBpY2Fub246MTsKICAgICAgICB1bnNpZ25lZCBjaGFy IGNsb3Npbmc6MTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtaW5pbXVtX3RvX3dha2U7CiAgICAg ICAgdW5zaWduZWQgb3ZlcnJ1bl90aW1lOwogICAgICAgIGludCBudW1fb3ZlcnJ1bjsKICAgICAg ICB1bnNpZ25lZCBsb25nIHByb2Nlc3NfY2hhcl9tYXBbMjU2Lyg4KnNpemVvZih1bnNpZ25lZCBs b25nKSldOwogICAgICAgIGNoYXIgKnJlYWRfYnVmOwogICAgICAgIGludCByZWFkX2hlYWQ7CiAg ICAgICAgaW50IHJlYWRfdGFpbDsKICAgICAgICBpbnQgcmVhZF9jbnQ7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyByZWFkX2ZsYWdzWzQwOTYvKDgqc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKV07CiAgICAg ICAgaW50IGNhbm9uX2RhdGE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjYW5vbl9oZWFkOwogICAg ICAgIHVuc2lnbmVkIGludCBjYW5vbl9jb2x1bW47CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBh dG9taWNfcmVhZDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGF0b21pY193cml0ZTsKICAgICAg ICBzcGlubG9ja190IHJlYWRfbG9jazsKCiAgICAgICAgc3RydWN0IHRxX3N0cnVjdCBTQUtfdHE7 Cn07CiMgMzQxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3R0eS5o IgpleHRlcm4gdm9pZCB0dHlfd3JpdGVfZmx1c2goc3RydWN0IHR0eV9zdHJ1Y3QgKik7CgpleHRl cm4gc3RydWN0IHRlcm1pb3MgdHR5X3N0ZF90ZXJtaW9zX1I4OWFjNTI1NDsKZXh0ZXJuIHN0cnVj dCB0dHlfc3RydWN0ICogcmVkaXJlY3Q7CmV4dGVybiBzdHJ1Y3QgdHR5X2xkaXNjIGxkaXNjc1td OwpleHRlcm4gaW50IGZnX2NvbnNvbGVfUjRlNmU4ZWE3LCBsYXN0X2NvbnNvbGUsIHdhbnRfY29u c29sZTsKCmV4dGVybiBpbnQga21zZ19yZWRpcmVjdDsKCmV4dGVybiB2b2lkIGNvbl9pbml0KHZv aWQpOwpleHRlcm4gdm9pZCBjb25zb2xlX2luaXQodm9pZCk7CgpleHRlcm4gaW50IGxwX2luaXQo dm9pZCk7CmV4dGVybiBpbnQgcHR5X2luaXQodm9pZCk7CmV4dGVybiB2b2lkIHR0eV9pbml0KHZv aWQpOwpleHRlcm4gaW50IG14c2VyX2luaXQodm9pZCk7CmV4dGVybiBpbnQgbW94YV9pbml0KHZv aWQpOwpleHRlcm4gaW50IGlwMl9pbml0KHZvaWQpOwpleHRlcm4gaW50IHBjeGVfaW5pdCh2b2lk KTsKZXh0ZXJuIGludCBwY19pbml0KHZvaWQpOwpleHRlcm4gaW50IHZjc19pbml0KHZvaWQpOwpl eHRlcm4gaW50IHJwX2luaXQodm9pZCk7CmV4dGVybiBpbnQgY3lfaW5pdCh2b2lkKTsKZXh0ZXJu IGludCBzdGxfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBzdGxpX2luaXQodm9pZCk7CmV4dGVybiBp bnQgc3BlY2lhbGl4X2luaXQodm9pZCk7CmV4dGVybiBpbnQgZXNwc2VyaWFsX2luaXQodm9pZCk7 CmV4dGVybiBpbnQgbWFjc2VyaWFsX2luaXQodm9pZCk7CmV4dGVybiBpbnQgYTIyMzJib2FyZF9p bml0KHZvaWQpOwoKZXh0ZXJuIGludCB0dHlfcGFyYW5vaWFfY2hlY2soc3RydWN0IHR0eV9zdHJ1 Y3QgKnR0eSwga2Rldl90IGRldmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgY2hhciAqcm91dGluZSk7CmV4dGVybiBjaGFyICp0dHlfbmFtZShzdHJ1Y3QgdHR5X3N0cnVj dCAqdHR5LCBjaGFyICpidWYpOwpleHRlcm4gdm9pZCB0dHlfd2FpdF91bnRpbF9zZW50X1I0OTRl ZDQwYihzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgbG9uZyB0aW1lb3V0KTsKZXh0ZXJuIGludCB0 dHlfY2hlY2tfY2hhbmdlX1JhZjYwZmUzYShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CmV4dGVy biB2b2lkIHN0b3BfdHR5KHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKZXh0ZXJuIHZvaWQgc3Rh cnRfdHR5KHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKZXh0ZXJuIGludCB0dHlfcmVnaXN0ZXJf bGRpc2NfUmQ4MzJkNzEyKGludCBkaXNjLCBzdHJ1Y3QgdHR5X2xkaXNjICpuZXdfbGRpc2MpOwpl eHRlcm4gaW50IHR0eV9yZWdpc3Rlcl9kcml2ZXJfUjU0ZDU2MzY3KHN0cnVjdCB0dHlfZHJpdmVy ICpkcml2ZXIpOwpleHRlcm4gaW50IHR0eV91bnJlZ2lzdGVyX2RyaXZlcl9SYjlmMjQwYmUoc3Ry dWN0IHR0eV9kcml2ZXIgKmRyaXZlcik7CmV4dGVybiB2b2lkIHR0eV9yZWdpc3Rlcl9kZXZmc19S ZTU1ZDNlZGIgKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2ZXIsIHVuc2lnbmVkIGludCBmbGFncywK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtaW5vcik7CmV4dGVybiB2 b2lkIHR0eV91bnJlZ2lzdGVyX2RldmZzX1IzZGUzYmJjNyAoc3RydWN0IHR0eV9kcml2ZXIgKmRy aXZlciwgdW5zaWduZWQgbWlub3IpOwpleHRlcm4gaW50IHR0eV9yZWFkX3Jhd19kYXRhKHN0cnVj dCB0dHlfc3RydWN0ICp0dHksIHVuc2lnbmVkIGNoYXIgKmJ1ZnAsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IGJ1Zmxlbik7CmV4dGVybiB2b2lkIHR0eV93cml0ZV9tZXNzYWdlKHN0 cnVjdCB0dHlfc3RydWN0ICp0dHksIGNoYXIgKm1zZyk7CgpleHRlcm4gaW50IGlzX29ycGhhbmVk X3BncnAoaW50IHBncnApOwpleHRlcm4gaW50IGlzX2lnbm9yZWQoaW50IHNpZyk7CmV4dGVybiBp bnQgdHR5X3NpZ25hbChpbnQgc2lnLCBzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKZXh0ZXJuIHZv aWQgdHR5X2hhbmd1cF9SOTA1MDU1MjYoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwpleHRlcm4g dm9pZCB0dHlfdmhhbmd1cChzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CmV4dGVybiB2b2lkIHR0 eV91bmhhbmd1cChzdHJ1Y3QgZmlsZSAqZmlscCk7CmV4dGVybiBpbnQgdHR5X2h1bmdfdXBfcF9S YzMxZDYyNWUoc3RydWN0IGZpbGUgKiBmaWxwKTsKZXh0ZXJuIHZvaWQgZG9fU0FLX1IzODI0Yjc4 NShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKZXh0ZXJuIHZvaWQgZGlzYXNzb2NpYXRlX2N0dHko aW50IHByaXYpOwpleHRlcm4gdm9pZCB0dHlfZmxpcF9idWZmZXJfcHVzaF9SYWQ2MDc5Yzkoc3Ry dWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CmV4dGVybiBpbnQgdHR5X2dldF9iYXVkX3JhdGVfUmYyNGE1 MmIzKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwoKCmV4dGVybiBzdHJ1Y3QgdHR5X2xkaXNjIHR0 eV9sZGlzY19OX1RUWTsKCgpleHRlcm4gaW50IG5fdHR5X2lvY3RsX1I4MTc0NjZkMyhzdHJ1Y3Qg dHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTsKCgoKZXh0ZXJuIHZvaWQg c2VyaWFsX2NvbnNvbGVfaW5pdCh2b2lkKTsKCgoKZXh0ZXJuIGludCBwY3hlX29wZW4oc3RydWN0 IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKmZpbHApOwoKCgpleHRlcm4gdm9pZCBjb25z b2xlX3ByaW50X1JiNzE0YTk4MShjb25zdCBjaGFyICopOwoKCgpleHRlcm4gaW50IHZ0X2lvY3Rs KHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7CiMgMjUgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2VtLmgiIDEKCgoKIyAxICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2lwYy5oIiAxCgoKCiMgMSAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgNSAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pcGMuaCIgMgoKCgoKc3RydWN0 IGlwY19wZXJtCnsKICAgICAgICBfX2tlcm5lbF9rZXlfdCBrZXk7CiAgICAgICAgX19rZXJuZWxf dWlkX3QgdWlkOwogICAgICAgIF9fa2VybmVsX2dpZF90IGdpZDsKICAgICAgICBfX2tlcm5lbF91 aWRfdCBjdWlkOwogICAgICAgIF9fa2VybmVsX2dpZF90IGNnaWQ7CiAgICAgICAgX19rZXJuZWxf bW9kZV90IG1vZGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2VxOwp9OwoKCiMgMSAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vaXBjYnVmLmgiIDEKIyAxNCAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vaXBjYnVmLmgiCnN0cnVjdCBpcGM2NF9w ZXJtCnsKICAgICAgICBfX2tlcm5lbF9rZXlfdCBrZXk7CiAgICAgICAgX19rZXJuZWxfdWlkMzJf dCB1aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lkMzJfdCBnaWQ7CiAgICAgICAgX19rZXJuZWxfdWlk MzJfdCBjdWlkOwogICAgICAgIF9fa2VybmVsX2dpZDMyX3QgY2dpZDsKICAgICAgICBfX2tlcm5l bF9tb2RlX3QgbW9kZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBfX3BhZDE7CiAgICAgICAgdW5z aWduZWQgc2hvcnQgc2VxOwogICAgICAgIHVuc2lnbmVkIHNob3J0IF9fcGFkMjsKICAgICAgICB1 bnNpZ25lZCBsb25nIF9fdW51c2VkMTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsK fTsKIyAyMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pcGMuaCIg MgojIDU3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2lwYy5oIgpz dHJ1Y3Qga2Vybl9pcGNfcGVybQp7CiAgICAgICAga2V5X3Qga2V5OwogICAgICAgIHVpZF90IHVp ZDsKICAgICAgICBnaWRfdCBnaWQ7CiAgICAgICAgdWlkX3QgY3VpZDsKICAgICAgICBnaWRfdCBj Z2lkOwogICAgICAgIG1vZGVfdCBtb2RlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VxOwp9Owoj IDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2VtLmgiIDIKIyAy MyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zZW0uaCIKc3RydWN0 IHNlbWlkX2RzIHsKICAgICAgICBzdHJ1Y3QgaXBjX3Blcm0gc2VtX3Blcm07CiAgICAgICAgX19r ZXJuZWxfdGltZV90IHNlbV9vdGltZTsKICAgICAgICBfX2tlcm5lbF90aW1lX3Qgc2VtX2N0aW1l OwogICAgICAgIHN0cnVjdCBzZW0gKnNlbV9iYXNlOwogICAgICAgIHN0cnVjdCBzZW1fcXVldWUg KnNlbV9wZW5kaW5nOwogICAgICAgIHN0cnVjdCBzZW1fcXVldWUgKipzZW1fcGVuZGluZ19sYXN0 OwogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqdW5kbzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBz ZW1fbnNlbXM7Cn07CgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2Fz bS9zZW1idWYuaCIgMQojIDE0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2Fz bS9zZW1idWYuaCIKc3RydWN0IHNlbWlkNjRfZHMgewogICAgICAgIHN0cnVjdCBpcGM2NF9wZXJt IHNlbV9wZXJtOwogICAgICAgIF9fa2VybmVsX3RpbWVfdCBzZW1fb3RpbWU7CiAgICAgICAgdW5z aWduZWQgbG9uZyBfX3VudXNlZDE7CiAgICAgICAgX19rZXJuZWxfdGltZV90IHNlbV9jdGltZTsK ICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKICAgICAgICB1bnNpZ25lZCBsb25nIHNl bV9uc2VtczsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMzsKICAgICAgICB1bnNpZ25l ZCBsb25nIF9fdW51c2VkNDsKfTsKIyAzNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9zZW0uaCIgMgoKCnN0cnVjdCBzZW1idWYgewogICAgICAgIHVuc2lnbmVkIHNo b3J0IHNlbV9udW07CiAgICAgICAgc2hvcnQgc2VtX29wOwogICAgICAgIHNob3J0IHNlbV9mbGc7 Cn07CgoKdW5pb24gc2VtdW4gewogICAgICAgIGludCB2YWw7CiAgICAgICAgc3RydWN0IHNlbWlk X2RzICpidWY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKmFycmF5OwogICAgICAgIHN0cnVjdCBz ZW1pbmZvICpfX2J1ZjsKICAgICAgICB2b2lkICpfX3BhZDsKfTsKCnN0cnVjdCBzZW1pbmZvIHsK ICAgICAgICBpbnQgc2VtbWFwOwogICAgICAgIGludCBzZW1tbmk7CiAgICAgICAgaW50IHNlbW1u czsKICAgICAgICBpbnQgc2VtbW51OwogICAgICAgIGludCBzZW1tc2w7CiAgICAgICAgaW50IHNl bW9wbTsKICAgICAgICBpbnQgc2VtdW1lOwogICAgICAgIGludCBzZW11c3o7CiAgICAgICAgaW50 IHNlbXZteDsKICAgICAgICBpbnQgc2VtYWVtOwp9OwojIDgyICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NlbS5oIgpzdHJ1Y3Qgc2VtIHsKICAgICAgICBpbnQgc2Vt dmFsOwogICAgICAgIGludCBzZW1waWQ7Cn07CgoKc3RydWN0IHNlbV9hcnJheSB7CiAgICAgICAg c3RydWN0IGtlcm5faXBjX3Blcm0gc2VtX3Blcm07CiAgICAgICAgdGltZV90IHNlbV9vdGltZTsK ICAgICAgICB0aW1lX3Qgc2VtX2N0aW1lOwogICAgICAgIHN0cnVjdCBzZW0gKnNlbV9iYXNlOwog ICAgICAgIHN0cnVjdCBzZW1fcXVldWUgKnNlbV9wZW5kaW5nOwogICAgICAgIHN0cnVjdCBzZW1f cXVldWUgKipzZW1fcGVuZGluZ19sYXN0OwogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqdW5kbzsK ICAgICAgICB1bnNpZ25lZCBsb25nIHNlbV9uc2VtczsKfTsKCgpzdHJ1Y3Qgc2VtX3F1ZXVlIHsK ICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICogbmV4dDsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVl ICoqIHByZXY7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0KiBzbGVlcGVyOwogICAgICAgIHN0 cnVjdCBzZW1fdW5kbyAqIHVuZG87CiAgICAgICAgaW50IHBpZDsKICAgICAgICBpbnQgc3RhdHVz OwogICAgICAgIHN0cnVjdCBzZW1fYXJyYXkgKiBzbWE7CiAgICAgICAgaW50IGlkOwogICAgICAg IHN0cnVjdCBzZW1idWYgKiBzb3BzOwogICAgICAgIGludCBuc29wczsKICAgICAgICBpbnQgYWx0 ZXI7Cn07CgoKCgpzdHJ1Y3Qgc2VtX3VuZG8gewogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqIHBy b2NfbmV4dDsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKiBpZF9uZXh0OwogICAgICAgIGludCBz ZW1pZDsKICAgICAgICBzaG9ydCAqIHNlbWFkajsKfTsKCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt KDApKSkgbG9uZyBzeXNfc2VtZ2V0IChrZXlfdCBrZXksIGludCBuc2VtcywgaW50IHNlbWZsZyk7 CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc2Vtb3AgKGludCBzZW1pZCwg c3RydWN0IHNlbWJ1ZiAqc29wcywgdW5zaWduZWQgbnNvcHMpOwogX19hdHRyaWJ1dGVfXygocmVn cGFybSgwKSkpIGxvbmcgc3lzX3NlbWN0bCAoaW50IHNlbWlkLCBpbnQgc2VtbnVtLCBpbnQgY21k LCB1bmlvbiBzZW11biBhcmcpOwojIDI2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L3NpZ25hbC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9hc20vc2lnbmFsLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyA1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2FzbS9zaWduYWwuaCIgMgoKCnN0cnVjdCBzaWdpbmZvOwojIDE3ICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9zaWduYWwuaCIKdHlwZWRlZiB1bnNpZ25l ZCBsb25nIG9sZF9zaWdzZXRfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBs b25nIHNpZ1soNjQgLyAzMildOwp9IHNpZ3NldF90OwojIDEyOSAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9hc20vc2lnbmFsLmgiCnR5cGVkZWYgdm9pZCAoKl9fc2lnaGFuZGxl cl90KShpbnQpOwoKCgoKCgpzdHJ1Y3Qgb2xkX3NpZ2FjdGlvbiB7CiAgICAgICAgX19zaWdoYW5k bGVyX3Qgc2FfaGFuZGxlcjsKICAgICAgICBvbGRfc2lnc2V0X3Qgc2FfbWFzazsKICAgICAgICB1 bnNpZ25lZCBsb25nIHNhX2ZsYWdzOwogICAgICAgIHZvaWQgKCpzYV9yZXN0b3Jlcikodm9pZCk7 Cn07CgpzdHJ1Y3Qgc2lnYWN0aW9uIHsKICAgICAgICBfX3NpZ2hhbmRsZXJfdCBzYV9oYW5kbGVy OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2FfZmxhZ3M7CiAgICAgICAgdm9pZCAoKnNhX3Jlc3Rv cmVyKSh2b2lkKTsKICAgICAgICBzaWdzZXRfdCBzYV9tYXNrOwp9OwoKc3RydWN0IGtfc2lnYWN0 aW9uIHsKICAgICAgICBzdHJ1Y3Qgc2lnYWN0aW9uIHNhOwp9OwojIDE3MSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc2lnbmFsLmgiCnR5cGVkZWYgc3RydWN0IHNpZ2Fs dHN0YWNrIHsKICAgICAgICB2b2lkICpzc19zcDsKICAgICAgICBpbnQgc3NfZmxhZ3M7CiAgICAg ICAgc2l6ZV90IHNzX3NpemU7Cn0gc3RhY2tfdDsKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvYXNtL3NpZ2NvbnRleHQuaCIgMQojIDE3OSAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc2lnbmFsLmgiIDIKCgoKc3RhdGljIF9faW5saW5lX18g dm9pZCBzaWdhZGRzZXQoc2lnc2V0X3QgKnNldCwgaW50IF9zaWcpCnsKICAgICAgICBfX2FzbV9f KCJidHNsICUxLCUwIiA6ICI9bSIoKnNldCkgOiAiSXIiKF9zaWcgLSAxKSA6ICJjYyIpOwp9Cgpz dGF0aWMgX19pbmxpbmVfXyB2b2lkIHNpZ2RlbHNldChzaWdzZXRfdCAqc2V0LCBpbnQgX3NpZykK ewogICAgICAgIF9fYXNtX18oImJ0cmwgJTEsJTAiIDogIj1tIigqc2V0KSA6ICJJciIoX3NpZyAt IDEpIDogImNjIik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX2NvbnN0X3NpZ2lzbWVtYmVy KHNpZ3NldF90ICpzZXQsIGludCBfc2lnKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaWcgPSBf c2lnIC0gMTsKICAgICAgICByZXR1cm4gMSAmIChzZXQtPnNpZ1tzaWcgLyAzMl0gPj4gKHNpZyAl IDMyKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX2dlbl9zaWdpc21lbWJlcihzaWdzZXRf dCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIGludCByZXQ7CiAgICAgICAgX19hc21fXygiYnRs ICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6ICI9ciIocmV0KSA6ICJtIigq c2V0KSwgIklyIihfc2lnLTEpIDogImNjIik7CiAgICAgICAgcmV0dXJuIHJldDsKfQojIDIxMyAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc2lnbmFsLmgiCnN0YXRpYyBf X2lubGluZV9fIGludCBzaWdmaW5kaW53b3JkKHVuc2lnbmVkIGxvbmcgd29yZCkKewogICAgICAg IF9fYXNtX18oImJzZmwgJTEsJTAiIDogIj1yIih3b3JkKSA6ICJybSIod29yZCkgOiAiY2MiKTsK ICAgICAgICByZXR1cm4gd29yZDsKfQojIDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvc2lnbmFsLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p bmNsdWRlL2FzbS9zaWdpbmZvLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyA1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2FzbS9zaWdpbmZvLmgiIDIKCgoKdHlwZWRlZiB1bmlvbiBzaWd2YWwgewogICAg ICAgIGludCBzaXZhbF9pbnQ7CiAgICAgICAgdm9pZCAqc2l2YWxfcHRyOwp9IHNpZ3ZhbF90OwoK CgoKdHlwZWRlZiBzdHJ1Y3Qgc2lnaW5mbyB7CiAgICAgICAgaW50IHNpX3NpZ25vOwogICAgICAg IGludCBzaV9lcnJubzsKICAgICAgICBpbnQgc2lfY29kZTsKCiAgICAgICAgdW5pb24gewogICAg ICAgICAgICAgICAgaW50IF9wYWRbKCgxMjgvc2l6ZW9mKGludCkpIC0gMyldOwoKCiAgICAgICAg ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCBfcGlkOwogICAg ICAgICAgICAgICAgICAgICAgICB1aWRfdCBfdWlkOwogICAgICAgICAgICAgICAgfSBfa2lsbDsK CgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IF90aW1lcjE7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfdGlt ZXIyOwogICAgICAgICAgICAgICAgfSBfdGltZXI7CgoKICAgICAgICAgICAgICAgIHN0cnVjdCB7 CiAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IF9waWQ7CiAgICAgICAgICAgICAgICAgICAg ICAgIHVpZF90IF91aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHNpZ3ZhbF90IF9zaWd2YWw7 CiAgICAgICAgICAgICAgICB9IF9ydDsKCgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAg ICAgICAgICAgICAgICAgICAgcGlkX3QgX3BpZDsKICAgICAgICAgICAgICAgICAgICAgICAgdWlk X3QgX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9zdGF0dXM7CiAgICAgICAgICAg ICAgICAgICAgICAgIGNsb2NrX3QgX3V0aW1lOwogICAgICAgICAgICAgICAgICAgICAgICBjbG9j a190IF9zdGltZTsKICAgICAgICAgICAgICAgIH0gX3NpZ2NobGQ7CgoKICAgICAgICAgICAgICAg IHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKl9hZGRyOwogICAgICAgICAg ICAgICAgfSBfc2lnZmF1bHQ7CgoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg ICAgICAgICAgICAgIGludCBfYmFuZDsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9mZDsK ICAgICAgICAgICAgICAgIH0gX3NpZ3BvbGw7CiAgICAgICAgfSBfc2lmaWVsZHM7Cn0gc2lnaW5m b190OwojIDE5OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vc2lnaW5m by5oIgp0eXBlZGVmIHN0cnVjdCBzaWdldmVudCB7CiAgICAgICAgc2lndmFsX3Qgc2lnZXZfdmFs dWU7CiAgICAgICAgaW50IHNpZ2V2X3NpZ25vOwogICAgICAgIGludCBzaWdldl9ub3RpZnk7CiAg ICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgaW50IF9wYWRbKCg2NC9zaXplb2YoaW50KSkg LSAzKV07CgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAg dm9pZCAoKl9mdW5jdGlvbikoc2lndmFsX3QpOwogICAgICAgICAgICAgICAgICAgICAgICB2b2lk ICpfYXR0cmlidXRlOwogICAgICAgICAgICAgICAgfSBfc2lnZXZfdGhyZWFkOwogICAgICAgIH0g X3NpZ2V2X3VuOwp9IHNpZ2V2ZW50X3Q7CgoKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAxCiMgMjE4ICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2FzbS9zaWdpbmZvLmgiIDIKCnN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5 X3NpZ2luZm8oc2lnaW5mb190ICp0bywgc2lnaW5mb190ICpmcm9tKQp7CiAgICAgICAgaWYgKGZy b20tPnNpX2NvZGUgPCAwKQogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKHNp emVvZihzaWdpbmZvX3QpKSA/IF9fY29uc3RhbnRfbWVtY3B5KCh0byksKGZyb20pLChzaXplb2Yo c2lnaW5mb190KSkpIDogX19tZW1jcHkoKHRvKSwoZnJvbSksKHNpemVvZihzaWdpbmZvX3QpKSkp OwogICAgICAgIGVsc2UKCiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMypz aXplb2YoaW50KSArIHNpemVvZihmcm9tLT5fc2lmaWVsZHMuX3NpZ2NobGQpKSA/IF9fY29uc3Rh bnRfbWVtY3B5KCh0byksKGZyb20pLCgzKnNpemVvZihpbnQpICsgc2l6ZW9mKGZyb20tPl9zaWZp ZWxkcy5fc2lnY2hsZCkpKSA6IF9fbWVtY3B5KCh0byksKGZyb20pLCgzKnNpemVvZihpbnQpICsg c2l6ZW9mKGZyb20tPl9zaWZpZWxkcy5fc2lnY2hsZCkpKSk7Cn0KCmV4dGVybiBpbnQgY29weV9z aWdpbmZvX3RvX3VzZXIoc2lnaW5mb190ICp0bywgc2lnaW5mb190ICpmcm9tKTsKIyA2ICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIiAyCgoKCgoKCnN0 cnVjdCBzaWdxdWV1ZSB7CiAgICAgICAgc3RydWN0IHNpZ3F1ZXVlICpuZXh0OwogICAgICAgIHNp Z2luZm9fdCBpbmZvOwp9OwoKc3RydWN0IHNpZ3BlbmRpbmcgewogICAgICAgIHN0cnVjdCBzaWdx dWV1ZSAqaGVhZCwgKip0YWlsOwogICAgICAgIHNpZ3NldF90IHNpZ25hbDsKfTsKIyA2OCAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zaWduYWwuaCIKIyAxICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAxCiMgNjkgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2lnbmFsLmgiIDIKIyAxMDgg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2lnbmFsLmgiCnN0YXRp YyBpbmxpbmUgdm9pZCBzaWdvcnNldHMoc2lnc2V0X3QgKnIsIGNvbnN0IHNpZ3NldF90ICphLCBj b25zdCBzaWdzZXRfdCAqYikgeyB1bnNpZ25lZCBsb25nIGEwLCBhMSwgYTIsIGEzLCBiMCwgYjEs IGIyLCBiMzsgdW5zaWduZWQgbG9uZyBpOyBmb3IgKGkgPSAwOyBpIDwgKDY0IC8gMzIpLzQ7ICsr aSkgeyBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdb NCppKzJdOyBhMyA9IGEtPnNpZ1s0KmkrM107IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5z aWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IGIzID0gYi0+c2lnWzQqaSszXTsgci0+c2ln WzQqaSswXSA9ICgoYTApIHwgKGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSB8IChiMSkpOyBy LT5zaWdbNCppKzJdID0gKChhMikgfCAoYjIpKTsgci0+c2lnWzQqaSszXSA9ICgoYTMpIHwgKGIz KSk7IH0gc3dpdGNoICgoNjQgLyAzMikgJSA0KSB7IGNhc2UgMzogYTAgPSBhLT5zaWdbNCppKzBd OyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEyID0gYS0+c2lnWzQqaSsyXTsgYjAgPSBiLT5zaWdbNCpp KzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0gYi0+c2lnWzQqaSsyXTsgci0+c2lnWzQqaSsw XSA9ICgoYTApIHwgKGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSB8IChiMSkpOyByLT5zaWdb NCppKzJdID0gKChhMikgfCAoYjIpKTsgYnJlYWs7IGNhc2UgMjogYTAgPSBhLT5zaWdbNCppKzBd OyBhMSA9IGEtPnNpZ1s0KmkrMV07IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCpp KzFdOyByLT5zaWdbNCppKzBdID0gKChhMCkgfCAoYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEp IHwgKGIxKSk7IGJyZWFrOyBjYXNlIDE6IGEwID0gYS0+c2lnWzQqaSswXTsgYjAgPSBiLT5zaWdb NCppKzBdOyByLT5zaWdbNCppKzBdID0gKChhMCkgfCAoYjApKTsgYnJlYWs7IH0gfQoKCnN0YXRp YyBpbmxpbmUgdm9pZCBzaWdhbmRzZXRzKHNpZ3NldF90ICpyLCBjb25zdCBzaWdzZXRfdCAqYSwg Y29uc3Qgc2lnc2V0X3QgKmIpIHsgdW5zaWduZWQgbG9uZyBhMCwgYTEsIGEyLCBhMywgYjAsIGIx LCBiMiwgYjM7IHVuc2lnbmVkIGxvbmcgaTsgZm9yIChpID0gMDsgaSA8ICg2NCAvIDMyKS80OyAr K2kpIHsgYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEyID0gYS0+c2ln WzQqaSsyXTsgYTMgPSBhLT5zaWdbNCppKzNdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+ c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdbNCppKzJdOyBiMyA9IGItPnNpZ1s0KmkrM107IHItPnNp Z1s0KmkrMF0gPSAoKGEwKSAmIChiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiAoYjEpKTsg ci0+c2lnWzQqaSsyXSA9ICgoYTIpICYgKGIyKSk7IHItPnNpZ1s0KmkrM10gPSAoKGEzKSAmIChi MykpOyB9IHN3aXRjaCAoKDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6IGEwID0gYS0+c2lnWzQqaSsw XTsgYTEgPSBhLT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGIwID0gYi0+c2lnWzQq aSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IHItPnNpZ1s0Kmkr MF0gPSAoKGEwKSAmIChiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiAoYjEpKTsgci0+c2ln WzQqaSsyXSA9ICgoYTIpICYgKGIyKSk7IGJyZWFrOyBjYXNlIDI6IGEwID0gYS0+c2lnWzQqaSsw XTsgYTEgPSBhLT5zaWdbNCppKzFdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQq aSsxXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgKGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGEx KSAmIChiMSkpOyBicmVhazsgY2FzZSAxOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGIwID0gYi0+c2ln WzQqaSswXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgKGIwKSk7IGJyZWFrOyB9IH0KCgpzdGF0 aWMgaW5saW5lIHZvaWQgc2lnbmFuZHNldHMoc2lnc2V0X3QgKnIsIGNvbnN0IHNpZ3NldF90ICph LCBjb25zdCBzaWdzZXRfdCAqYikgeyB1bnNpZ25lZCBsb25nIGEwLCBhMSwgYTIsIGEzLCBiMCwg YjEsIGIyLCBiMzsgdW5zaWduZWQgbG9uZyBpOyBmb3IgKGkgPSAwOyBpIDwgKDY0IC8gMzIpLzQ7 ICsraSkgeyBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5z aWdbNCppKzJdOyBhMyA9IGEtPnNpZ1s0KmkrM107IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBi LT5zaWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IGIzID0gYi0+c2lnWzQqaSszXTsgci0+ c2lnWzQqaSswXSA9ICgoYTApICYgfihiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiB+KGIx KSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSAmIH4oYjIpKTsgci0+c2lnWzQqaSszXSA9ICgoYTMp ICYgfihiMykpOyB9IHN3aXRjaCAoKDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6IGEwID0gYS0+c2ln WzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGIwID0gYi0+ c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IHItPnNp Z1s0KmkrMF0gPSAoKGEwKSAmIH4oYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgfihiMSkp OyByLT5zaWdbNCppKzJdID0gKChhMikgJiB+KGIyKSk7IGJyZWFrOyBjYXNlIDI6IGEwID0gYS0+ c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0g Yi0+c2lnWzQqaSsxXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgfihiMCkpOyByLT5zaWdbNCpp KzFdID0gKChhMSkgJiB+KGIxKSk7IGJyZWFrOyBjYXNlIDE6IGEwID0gYS0+c2lnWzQqaSswXTsg YjAgPSBiLT5zaWdbNCppKzBdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiB+KGIwKSk7IGJyZWFr OyB9IH0KIyAxNDAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2ln bmFsLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdub3RzZXQoc2lnc2V0X3QgKnNldCkgeyB1bnNp Z25lZCBsb25nIGk7IGZvciAoaSA9IDA7IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IHNldC0+c2ln WzQqaSswXSA9ICh+KHNldC0+c2lnWzQqaSswXSkpOyBzZXQtPnNpZ1s0KmkrMV0gPSAofihzZXQt PnNpZ1s0KmkrMV0pKTsgc2V0LT5zaWdbNCppKzJdID0gKH4oc2V0LT5zaWdbNCppKzJdKSk7IHNl dC0+c2lnWzQqaSszXSA9ICh+KHNldC0+c2lnWzQqaSszXSkpOyB9IHN3aXRjaCAoKDY0IC8gMzIp ICUgNCkgeyBjYXNlIDM6IHNldC0+c2lnWzQqaSsyXSA9ICh+KHNldC0+c2lnWzQqaSsyXSkpOyBj YXNlIDI6IHNldC0+c2lnWzQqaSsxXSA9ICh+KHNldC0+c2lnWzQqaSsxXSkpOyBjYXNlIDE6IHNl dC0+c2lnWzQqaSswXSA9ICh+KHNldC0+c2lnWzQqaSswXSkpOyB9IH0KCgoKCnN0YXRpYyBpbmxp bmUgdm9pZCBzaWdlbXB0eXNldChzaWdzZXRfdCAqc2V0KQp7CiAgICAgICAgc3dpdGNoICgoNjQg LyAzMikpIHsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25z dGFudF9wKDApID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2Yoc2lnc2V0X3QpKSkgPyBf X2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKHNldCkpLCgoMHgwMTAxMDEwMVVMKih1bnNp Z25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKHNpZ3NldF90KSkpKSA6IF9fY29uc3RhbnRfY19tZW1z ZXQoKChzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihz aWdzZXRfdCkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2Yoc2lnc2V0X3QpKSkg PyBfX21lbXNldF9nZW5lcmljKCgoKHNldCkpKSwoKCgwKSkpLCgoKHNpemVvZihzaWdzZXRfdCkp KSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKHNldCkpLCgoMCkpLCgoc2l6ZW9mKHNpZ3NldF90KSkp KSkpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAyOiBzZXQtPnNpZ1sxXSA9 IDA7CiAgICAgICAgY2FzZSAxOiBzZXQtPnNpZ1swXSA9IDA7CiAgICAgICAgICAgICAgICBicmVh azsKICAgICAgICB9Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdmaWxsc2V0KHNpZ3NldF90ICpz ZXQpCnsKICAgICAgICBzd2l0Y2ggKCg2NCAvIDMyKSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAg ICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoLTEpID8gKF9fYnVpbHRpbl9jb25zdGFu dF9wKChzaXplb2Yoc2lnc2V0X3QpKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgo KHNldCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgtMSkpKSwoKHNpemVvZihzaWdz ZXRfdCkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoc2V0KSksKCgweDAxMDEwMTAxVUwqKHVu c2lnbmVkIGNoYXIpKC0xKSkpLCgoc2l6ZW9mKHNpZ3NldF90KSkpKSkgOiAoX19idWlsdGluX2Nv bnN0YW50X3AoKHNpemVvZihzaWdzZXRfdCkpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoc2V0KSkp LCgoKC0xKSkpLCgoKHNpemVvZihzaWdzZXRfdCkpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKHNl dCkpLCgoLTEpKSwoKHNpemVvZihzaWdzZXRfdCkpKSkpKTsKICAgICAgICAgICAgICAgIGJyZWFr OwogICAgICAgIGNhc2UgMjogc2V0LT5zaWdbMV0gPSAtMTsKICAgICAgICBjYXNlIDE6IHNldC0+ c2lnWzBdID0gLTE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9Cn0KCmV4dGVybiBj aGFyICogcmVuZGVyX3NpZ3NldF90KHNpZ3NldF90ICpzZXQsIGNoYXIgKmJ1ZmZlcik7CgoKCnN0 YXRpYyBpbmxpbmUgdm9pZCBzaWdhZGRzZXRtYXNrKHNpZ3NldF90ICpzZXQsIHVuc2lnbmVkIGxv bmcgbWFzaykKewogICAgICAgIHNldC0+c2lnWzBdIHw9IG1hc2s7Cn0KCnN0YXRpYyBpbmxpbmUg dm9pZCBzaWdkZWxzZXRtYXNrKHNpZ3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykKewog ICAgICAgIHNldC0+c2lnWzBdICY9IH5tYXNrOwp9CgpzdGF0aWMgaW5saW5lIGludCBzaWd0ZXN0 c2V0bWFzayhzaWdzZXRfdCAqc2V0LCB1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICByZXR1 cm4gKHNldC0+c2lnWzBdICYgbWFzaykgIT0gMDsKfQoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2lu aXRzZXQoc2lnc2V0X3QgKnNldCwgdW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgc2V0LT5z aWdbMF0gPSBtYXNrOwogICAgICAgIHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVs dDoKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5f Y29uc3RhbnRfcCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSA/IF9fY29uc3RhbnRfY19h bmRfY291bnRfbWVtc2V0KCgoJnNldC0+c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVk IGNoYXIpKDApKSksKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpKSA6IF9fY29uc3RhbnRf Y19tZW1zZXQoKCgmc2V0LT5zaWdbMV0pKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhciko MCkpKSwoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkpKSA6IChfX2J1aWx0aW5fY29uc3Rh bnRfcCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgo JnNldC0+c2lnWzFdKSkpLCgoKDApKSksKCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkp IDogX19tZW1zZXRfZ2VuZXJpYygoKCZzZXQtPnNpZ1sxXSkpLCgoMCkpLCgoc2l6ZW9mKGxvbmcp KigoNjQgLyAzMiktMSkpKSkpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2Ug Mjogc2V0LT5zaWdbMV0gPSAwOwogICAgICAgIGNhc2UgMTogOwogICAgICAgIH0KfQoKc3RhdGlj IGlubGluZSB2b2lkIHNpZ2luaXRzZXRpbnYoc2lnc2V0X3QgKnNldCwgdW5zaWduZWQgbG9uZyBt YXNrKQp7CiAgICAgICAgc2V0LT5zaWdbMF0gPSB+bWFzazsKICAgICAgICBzd2l0Y2ggKCg2NCAv IDMyKSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0 YW50X3AoLTEpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YobG9uZykqKCg2NCAvIDMy KS0xKSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKCgmc2V0LT5zaWdbMV0pKSwo KDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoLTEpKSksKChzaXplb2YobG9uZykqKCg2NCAv IDMyKS0xKSkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKCgmc2V0LT5zaWdbMV0pKSwoKDB4MDEw MTAxMDFVTCoodW5zaWduZWQgY2hhcikoLTEpKSksKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0x KSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEp KSkgPyBfX21lbXNldF9nZW5lcmljKCgoKCZzZXQtPnNpZ1sxXSkpKSwoKCgtMSkpKSwoKChzaXpl b2YobG9uZykqKCg2NCAvIDMyKS0xKSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgoJnNldC0+c2ln WzFdKSksKCgtMSkpLCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpKTsKICAgICAgICAg ICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMjogc2V0LT5zaWdbMV0gPSAtMTsKICAgICAgICBj YXNlIDE6IDsKICAgICAgICB9Cn0KCgoKc3RhdGljIGlubGluZSB2b2lkIGluaXRfc2lncGVuZGlu ZyhzdHJ1Y3Qgc2lncGVuZGluZyAqc2lnKQp7CiAgICAgICAgc2lnZW1wdHlzZXQoJnNpZy0+c2ln bmFsKTsKICAgICAgICBzaWctPmhlYWQgPSAoKHZvaWQgKikwKTsKICAgICAgICBzaWctPnRhaWwg PSAmc2lnLT5oZWFkOwp9CgpleHRlcm4gbG9uZyBkb19zaWdwZW5kaW5nKHZvaWQgKiwgdW5zaWdu ZWQgbG9uZyk7CiMgMjcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv c2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv c2VjdXJlYml0cy5oIiAxCgoKCgoKZXh0ZXJuIHVuc2lnbmVkIHNlY3VyZWJpdHNfUmFiZTc3NDg0 OwojIDI4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgi IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzX3N0cnVj dC5oIiAxCgoKCgpzdHJ1Y3QgZnNfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAg ICAgICByd2xvY2tfdCBsb2NrOwogICAgICAgIGludCB1bWFzazsKICAgICAgICBzdHJ1Y3QgZGVu dHJ5ICogcm9vdCwgKiBwd2QsICogYWx0cm9vdDsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKiBy b290bW50LCAqIHB3ZG1udCwgKiBhbHRyb290bW50Owp9OwojIDIwICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ZzX3N0cnVjdC5oIgpleHRlcm4gdm9pZCBleGl0X2Zz X1IxYzllNTk4NihzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIHNldF9mc19hbHRy b290KHZvaWQpOwoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2ZzX3Jvb3Qoc3RydWN0IGZz X3N0cnVjdCAqZnMsCiAgICAgICAgc3RydWN0IHZmc21vdW50ICptbnQsCiAgICAgICAgc3RydWN0 IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqb2xkX3Jvb3Q7CiAgICAg ICAgc3RydWN0IHZmc21vdW50ICpvbGRfcm9vdG1udDsKICAgICAgICAodm9pZCkoJmZzLT5sb2Nr KTsKICAgICAgICBvbGRfcm9vdCA9IGZzLT5yb290OwogICAgICAgIG9sZF9yb290bW50ID0gZnMt PnJvb3RtbnQ7CiAgICAgICAgZnMtPnJvb3RtbnQgPSBtbnRnZXQobW50KTsKICAgICAgICBmcy0+ cm9vdCA9IGRnZXQoZGVudHJ5KTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgaWYg KG9sZF9yb290KSB7CiAgICAgICAgICAgICAgICBkcHV0X1JkNmNkODI4NChvbGRfcm9vdCk7CiAg ICAgICAgICAgICAgICBtbnRwdXQob2xkX3Jvb3RtbnQpOwogICAgICAgIH0KfQoKCgoKCgpzdGF0 aWMgaW5saW5lIHZvaWQgc2V0X2ZzX3B3ZChzdHJ1Y3QgZnNfc3RydWN0ICpmcywKICAgICAgICBz dHJ1Y3QgdmZzbW91bnQgKm1udCwKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKICAg ICAgICBzdHJ1Y3QgZGVudHJ5ICpvbGRfcHdkOwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqb2xk X3B3ZG1udDsKICAgICAgICAodm9pZCkoJmZzLT5sb2NrKTsKICAgICAgICBvbGRfcHdkID0gZnMt PnB3ZDsKICAgICAgICBvbGRfcHdkbW50ID0gZnMtPnB3ZG1udDsKICAgICAgICBmcy0+cHdkbW50 ID0gbW50Z2V0KG1udCk7CiAgICAgICAgZnMtPnB3ZCA9IGRnZXQoZGVudHJ5KTsKICAgICAgICBk byB7IH0gd2hpbGUoMCk7CiAgICAgICAgaWYgKG9sZF9wd2QpIHsKICAgICAgICAgICAgICAgIGRw dXRfUmQ2Y2Q4Mjg0KG9sZF9wd2QpOwogICAgICAgICAgICAgICAgbW50cHV0KG9sZF9wd2RtbnQp OwogICAgICAgIH0KfQoKc3RydWN0IGZzX3N0cnVjdCAqY29weV9mc19zdHJ1Y3Qoc3RydWN0IGZz X3N0cnVjdCAqb2xkKTsKdm9pZCBwdXRfZnNfc3RydWN0KHN0cnVjdCBmc19zdHJ1Y3QgKmZzKTsK IyAyOSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAy CgpzdHJ1Y3QgZXhlY19kb21haW47CiMgNTggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgYXZlbnJ1bltdOwojIDc1 ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCmV4dGVy biBpbnQgbnJfcnVubmluZ19SY2EzYzZkNzgsIG5yX3RocmVhZHM7CmV4dGVybiBpbnQgbGFzdF9w aWQ7CgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvZnMuaCIg MQojIDc5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgi IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3RpbWUuaCIg MQojIDgwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgi IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3BhcmFtLmgi IDEKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wYXJhbS5o IiAxCiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9wYXJhbS5o IiAyCiMgODEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2NoZWQu aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcmVzb3Vy Y2UuaCIgMQoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv dGltZS5oIiAxCiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9y ZXNvdXJjZS5oIiAyCiMgMjEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu dXgvcmVzb3VyY2UuaCIKc3RydWN0IHJ1c2FnZSB7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgcnVf dXRpbWU7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgcnVfc3RpbWU7CiAgICAgICAgbG9uZyBydV9t YXhyc3M7CiAgICAgICAgbG9uZyBydV9peHJzczsKICAgICAgICBsb25nIHJ1X2lkcnNzOwogICAg ICAgIGxvbmcgcnVfaXNyc3M7CiAgICAgICAgbG9uZyBydV9taW5mbHQ7CiAgICAgICAgbG9uZyBy dV9tYWpmbHQ7CiAgICAgICAgbG9uZyBydV9uc3dhcDsKICAgICAgICBsb25nIHJ1X2luYmxvY2s7 CiAgICAgICAgbG9uZyBydV9vdWJsb2NrOwogICAgICAgIGxvbmcgcnVfbXNnc25kOwogICAgICAg IGxvbmcgcnVfbXNncmN2OwogICAgICAgIGxvbmcgcnVfbnNpZ25hbHM7CiAgICAgICAgbG9uZyBy dV9udmNzdzsKICAgICAgICBsb25nIHJ1X25pdmNzdzsKfTsKCnN0cnVjdCBybGltaXQgewogICAg ICAgIHVuc2lnbmVkIGxvbmcgcmxpbV9jdXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBybGltX21h eDsKfTsKIyA1NiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9yZXNv dXJjZS5oIgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3Jlc291 cmNlLmgiIDEKIyA1NyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9y ZXNvdXJjZS5oIiAyCiMgODIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu dXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu dXgvdGltZXIuaCIgMQoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L3RpbWVyLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L2xpc3QuaCIgMQojIDYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvdGltZXIuaCIgMgojIDE2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L3RpbWVyLmgiCnN0cnVjdCB0aW1lcl9saXN0IHsKICAgICAgICBzdHJ1Y3QgbGlzdF9o ZWFkIGxpc3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyBleHBpcmVzOwogICAgICAgIHVuc2lnbmVk IGxvbmcgZGF0YTsKICAgICAgICB2b2lkICgqZnVuY3Rpb24pKHVuc2lnbmVkIGxvbmcpOwp9Owp0 eXBlZGVmIHN0cnVjdCB0aW1lcl9saXN0IHRpbWVyX3Q7CgpleHRlcm4gdm9pZCBhZGRfdGltZXJf UmExOWVhY2Y4KHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIpOwpleHRlcm4gaW50IGRlbF90aW1l cl9SZmM2MmYxNmQoc3RydWN0IHRpbWVyX2xpc3QgKiB0aW1lcik7CiMgNDIgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdGltZXIuaCIKaW50IG1vZF90aW1lcl9SMWYx M2QzMDkoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyLCB1bnNpZ25lZCBsb25nIGV4cGlyZXMpOwoK ZXh0ZXJuIHZvaWQgaXRfcmVhbF9mbih1bnNpZ25lZCBsb25nKTsKCnN0YXRpYyBpbmxpbmUgdm9p ZCBpbml0X3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIpCnsKICAgICAgICB0aW1lci0+ bGlzdC5uZXh0ID0gdGltZXItPmxpc3QucHJldiA9ICgodm9pZCAqKTApOwp9CgpzdGF0aWMgaW5s aW5lIGludCB0aW1lcl9wZW5kaW5nIChjb25zdCBzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVyKQp7 CiAgICAgICAgcmV0dXJuIHRpbWVyLT5saXN0Lm5leHQgIT0gKCh2b2lkICopMCk7Cn0KIyA4MyAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgojIDEg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAxCiMg ODUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoj IDEyNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpz dHJ1Y3Qgc2NoZWRfcGFyYW0gewogICAgICAgIGludCBzY2hlZF9wcmlvcml0eTsKfTsKCnN0cnVj dCBjb21wbGV0aW9uOwoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv bGludXgvc3BpbmxvY2suaCIgMQojIDEzNCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9zY2hlZC5oIiAyCgoKCgoKCgpleHRlcm4gcndsb2NrX3QgdGFza2xpc3RfbG9j a19SOTk5YzgwYTI7CmV4dGVybiBzcGlubG9ja190IHJ1bnF1ZXVlX2xvY2s7CmV4dGVybiBzcGlu bG9ja190IG1tbGlzdF9sb2NrOwoKZXh0ZXJuIHZvaWQgc2NoZWRfaW5pdCh2b2lkKTsKZXh0ZXJu IHZvaWQgaW5pdF9pZGxlKHZvaWQpOwpleHRlcm4gdm9pZCBzaG93X3N0YXRlKHZvaWQpOwpleHRl cm4gdm9pZCBjcHVfaW5pdCAodm9pZCk7CmV4dGVybiB2b2lkIHRyYXBfaW5pdCh2b2lkKTsKZXh0 ZXJuIHZvaWQgdXBkYXRlX3Byb2Nlc3NfdGltZXMoaW50IHVzZXIpOwpleHRlcm4gdm9pZCB1cGRh dGVfb25lX3Byb2Nlc3Moc3RydWN0IHRhc2tfc3RydWN0ICpwLCB1bnNpZ25lZCBsb25nIHVzZXIs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN5c3RlbSwgaW50 IGNwdSk7CgoKZXh0ZXJuIHNpZ25lZCBsb25nIHNjaGVkdWxlX3RpbWVvdXRfUjE3ZDU5ZDAxKHNp Z25lZCBsb25nIHRpbWVvdXQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIF9fYXR0cmli dXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIHNjaGVkdWxlX1I0MjkyMzY0Yyh2b2lkKTsKCmV4dGVy biBpbnQgc2NoZWR1bGVfdGFza19SMmQ2YzNkMDQoc3RydWN0IHRxX3N0cnVjdCAqdGFzayk7CmV4 dGVybiB2b2lkIGZsdXNoX3NjaGVkdWxlZF90YXNrc19SN2MzMjQyYjQodm9pZCk7CmV4dGVybiBp bnQgc3RhcnRfY29udGV4dF90aHJlYWQodm9pZCk7CmV4dGVybiBpbnQgY3VycmVudF9pc19rZXZl bnRkKHZvaWQpOwojIDE3MiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC9zY2hlZC5oIgpzdHJ1Y3QgZmlsZXNfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsK ICAgICAgICByd2xvY2tfdCBmaWxlX2xvY2s7CiAgICAgICAgaW50IG1heF9mZHM7CiAgICAgICAg aW50IG1heF9mZHNldDsKICAgICAgICBpbnQgbmV4dF9mZDsKICAgICAgICBzdHJ1Y3QgZmlsZSAq KiBmZDsKICAgICAgICBmZF9zZXQgKmNsb3NlX29uX2V4ZWM7CiAgICAgICAgZmRfc2V0ICpvcGVu X2ZkczsKICAgICAgICBmZF9zZXQgY2xvc2Vfb25fZXhlY19pbml0OwogICAgICAgIGZkX3NldCBv cGVuX2Zkc19pbml0OwogICAgICAgIHN0cnVjdCBmaWxlICogZmRfYXJyYXlbMzJdOwp9OwojIDIw NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdHJ1 Y3QgbW1fc3RydWN0IHsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBtbWFwOwogICAg ICAgIHJiX3Jvb3RfdCBtbV9yYjsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBtbWFw X2NhY2hlOwogICAgICAgIHBnZF90ICogcGdkOwogICAgICAgIGF0b21pY190IG1tX3VzZXJzOwog ICAgICAgIGF0b21pY190IG1tX2NvdW50OwogICAgICAgIGludCBtYXBfY291bnQ7CiAgICAgICAg c3RydWN0IHJ3X3NlbWFwaG9yZSBtbWFwX3NlbTsKICAgICAgICBzcGlubG9ja190IHBhZ2VfdGFi bGVfbG9jazsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBtbWxpc3Q7CgoKCgogICAgICAgIHVu c2lnbmVkIGxvbmcgc3RhcnRfY29kZSwgZW5kX2NvZGUsIHN0YXJ0X2RhdGEsIGVuZF9kYXRhOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfYnJrLCBicmssIHN0YXJ0X3N0YWNrOwogICAgICAg IHVuc2lnbmVkIGxvbmcgYXJnX3N0YXJ0LCBhcmdfZW5kLCBlbnZfc3RhcnQsIGVudl9lbmQ7CiAg ICAgICAgdW5zaWduZWQgbG9uZyByc3MsIHRvdGFsX3ZtLCBsb2NrZWRfdm07CiAgICAgICAgdW5z aWduZWQgbG9uZyBkZWZfZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHVfdm1fbWFzazsK ICAgICAgICB1bnNpZ25lZCBsb25nIHN3YXBfYWRkcmVzczsKCiAgICAgICAgdW5zaWduZWQgZHVt cGFibGU6MTsKCgogICAgICAgIG1tX2NvbnRleHRfdCBjb250ZXh0Owp9OwoKZXh0ZXJuIGludCBt bWxpc3RfbnI7CiMgMjQ3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L3NjaGVkLmgiCnN0cnVjdCBzaWduYWxfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsK ICAgICAgICBzdHJ1Y3Qga19zaWdhY3Rpb24gYWN0aW9uWzY0XTsKICAgICAgICBzcGlubG9ja190 IHNpZ2xvY2s7Cn07CiMgMjYzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L3NjaGVkLmgiCnN0cnVjdCB1c2VyX3N0cnVjdCB7CiAgICAgICAgYXRvbWljX3QgX19jb3Vu dDsKICAgICAgICBhdG9taWNfdCBwcm9jZXNzZXM7CiAgICAgICAgYXRvbWljX3QgZmlsZXM7CgoK ICAgICAgICBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKm5leHQsICoqcHByZXY7CiAgICAgICAgdWlkX3Qg dWlkOwp9OwoKCgoKCgpleHRlcm4gc3RydWN0IHVzZXJfc3RydWN0IHJvb3RfdXNlcjsKCgpzdHJ1 Y3QgdGFza19zdHJ1Y3QgewoKCgogICAgICAgIHZvbGF0aWxlIGxvbmcgc3RhdGU7CiAgICAgICAg dW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICBpbnQgc2lncGVuZGluZzsKICAgICAgICBtbV9z ZWdtZW50X3QgYWRkcl9saW1pdDsKCgoKICAgICAgICBzdHJ1Y3QgZXhlY19kb21haW4gKmV4ZWNf ZG9tYWluOwogICAgICAgIHZvbGF0aWxlIGxvbmcgbmVlZF9yZXNjaGVkOwogICAgICAgIHVuc2ln bmVkIGxvbmcgcHRyYWNlOwoKICAgICAgICBpbnQgbG9ja19kZXB0aDsKCgoKCgoKICAgICAgICBs b25nIGNvdW50ZXI7CiAgICAgICAgbG9uZyBuaWNlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcG9s aWN5OwogICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tOwogICAgICAgIGludCBoYXNfY3B1LCBw cm9jZXNzb3I7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHVzX2FsbG93ZWQ7CgoKCgogICAgICAg IHN0cnVjdCBsaXN0X2hlYWQgcnVuX2xpc3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzbGVlcF90 aW1lOwoKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHRfdGFzaywgKnByZXZfdGFzazsK ICAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICphY3RpdmVfbW07CiAgICAgICAgc3RydWN0IGxpc3Rf aGVhZCBsb2NhbF9wYWdlczsKICAgICAgICB1bnNpZ25lZCBpbnQgYWxsb2NhdGlvbl9vcmRlciwg bnJfbG9jYWxfcGFnZXM7CgoKICAgICAgICBzdHJ1Y3QgbGludXhfYmluZm10ICpiaW5mbXQ7CiAg ICAgICAgaW50IGV4aXRfY29kZSwgZXhpdF9zaWduYWw7CiAgICAgICAgaW50IHBkZWF0aF9zaWdu YWw7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgcGVyc29uYWxpdHk7CiAgICAgICAgaW50IGRpZF9l eGVjOjE7CiAgICAgICAgcGlkX3QgcGlkOwogICAgICAgIHBpZF90IHBncnA7CiAgICAgICAgcGlk X3QgdHR5X29sZF9wZ3JwOwogICAgICAgIHBpZF90IHNlc3Npb247CiAgICAgICAgcGlkX3QgdGdp ZDsKCiAgICAgICAgaW50IGxlYWRlcjsKCgoKCgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAq cF9vcHB0ciwgKnBfcHB0ciwgKnBfY3B0ciwgKnBfeXNwdHIsICpwX29zcHRyOwogICAgICAgIHN0 cnVjdCBsaXN0X2hlYWQgdGhyZWFkX2dyb3VwOwoKCiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0 ICpwaWRoYXNoX25leHQ7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICoqcGlkaGFzaF9wcHJl djsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdF9jaGxkZXhpdDsKICAgICAgICBzdHJ1 Y3QgY29tcGxldGlvbiAqdmZvcmtfZG9uZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ0X3ByaW9y aXR5OwogICAgICAgIHVuc2lnbmVkIGxvbmcgaXRfcmVhbF92YWx1ZSwgaXRfcHJvZl92YWx1ZSwg aXRfdmlydF92YWx1ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGl0X3JlYWxfaW5jciwgaXRfcHJv Zl9pbmNyLCBpdF92aXJ0X2luY3I7CiAgICAgICAgc3RydWN0IHRpbWVyX2xpc3QgcmVhbF90aW1l cjsKICAgICAgICBzdHJ1Y3QgdG1zIHRpbWVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRf dGltZTsKICAgICAgICBsb25nIHBlcl9jcHVfdXRpbWVbMV0sIHBlcl9jcHVfc3RpbWVbMV07Cgog ICAgICAgIHVuc2lnbmVkIGxvbmcgbWluX2ZsdCwgbWFqX2ZsdCwgbnN3YXAsIGNtaW5fZmx0LCBj bWFqX2ZsdCwgY25zd2FwOwogICAgICAgIGludCBzd2FwcGFibGU6MTsKCiAgICAgICAgdWlkX3Qg dWlkLGV1aWQsc3VpZCxmc3VpZDsKICAgICAgICBnaWRfdCBnaWQsZWdpZCxzZ2lkLGZzZ2lkOwog ICAgICAgIGludCBuZ3JvdXBzOwogICAgICAgIGdpZF90IGdyb3Vwc1szMl07CiAgICAgICAga2Vy bmVsX2NhcF90IGNhcF9lZmZlY3RpdmUsIGNhcF9pbmhlcml0YWJsZSwgY2FwX3Blcm1pdHRlZDsK ICAgICAgICBpbnQga2VlcF9jYXBhYmlsaXRpZXM6MTsKICAgICAgICBzdHJ1Y3QgdXNlcl9zdHJ1 Y3QgKnVzZXI7CgogICAgICAgIHN0cnVjdCBybGltaXQgcmxpbVsxMV07CiAgICAgICAgdW5zaWdu ZWQgc2hvcnQgdXNlZF9tYXRoOwogICAgICAgIGNoYXIgY29tbVsxNl07CgogICAgICAgIGludCBs aW5rX2NvdW50OwogICAgICAgIHN0cnVjdCB0dHlfc3RydWN0ICp0dHk7CiAgICAgICAgdW5zaWdu ZWQgaW50IGxvY2tzOwoKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKnNlbXVuZG87CiAgICAgICAg c3RydWN0IHNlbV9xdWV1ZSAqc2Vtc2xlZXBpbmc7CgogICAgICAgIHN0cnVjdCB0aHJlYWRfc3Ry dWN0IHRocmVhZDsKCiAgICAgICAgc3RydWN0IGZzX3N0cnVjdCAqZnM7CgogICAgICAgIHN0cnVj dCBmaWxlc19zdHJ1Y3QgKmZpbGVzOwoKICAgICAgICBzcGlubG9ja190IHNpZ21hc2tfbG9jazsK ICAgICAgICBzdHJ1Y3Qgc2lnbmFsX3N0cnVjdCAqc2lnOwoKICAgICAgICBzaWdzZXRfdCBibG9j a2VkOwogICAgICAgIHN0cnVjdCBzaWdwZW5kaW5nIHBlbmRpbmc7CgogICAgICAgIHVuc2lnbmVk IGxvbmcgc2FzX3NzX3NwOwogICAgICAgIHNpemVfdCBzYXNfc3Nfc2l6ZTsKICAgICAgICBpbnQg KCpub3RpZmllcikodm9pZCAqcHJpdik7CiAgICAgICAgdm9pZCAqbm90aWZpZXJfZGF0YTsKICAg ICAgICBzaWdzZXRfdCAqbm90aWZpZXJfbWFzazsKCgogICAgICAgIHUzMiBwYXJlbnRfZXhlY19p ZDsKICAgICAgICB1MzIgc2VsZl9leGVjX2lkOwoKICAgICAgICBzcGlubG9ja190IGFsbG9jX2xv Y2s7Cn07CiMgNDQ0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3Nj aGVkLmgiCmV4dGVybiBzdHJ1Y3QgZXhlY19kb21haW4gZGVmYXVsdF9leGVjX2RvbWFpbjsKIyA0 OTYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKdW5p b24gdGFza191bmlvbiB7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0IHRhc2s7CiAgICAgICAg dW5zaWduZWQgbG9uZyBzdGFja1syMDQ4KnNpemVvZihsb25nKS9zaXplb2YobG9uZyldOwp9OwoK ZXh0ZXJuIHVuaW9uIHRhc2tfdW5pb24gaW5pdF90YXNrX3VuaW9uX1I4MjhhYjkzNzsKCmV4dGVy biBzdHJ1Y3QgbW1fc3RydWN0IGluaXRfbW1fUjZmY2JmMGU4OwpleHRlcm4gc3RydWN0IHRhc2tf c3RydWN0ICppbml0X3Rhc2tzWzFdOwoKCgpleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICpwaWRo YXNoX1JhYmJjNTdlZlsoNDA5NiA+PiAyKV07CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBoYXNoX3Bp ZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKipo dGFibGUgPSAmcGlkaGFzaF9SYWJiYzU3ZWZbKCgoKHAtPnBpZCkgPj4gOCkgXiAocC0+cGlkKSkg JiAoKDQwOTYgPj4gMikgLSAxKSldOwoKICAgICAgICBpZigocC0+cGlkaGFzaF9uZXh0ID0gKmh0 YWJsZSkgIT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgICAgICAoKmh0YWJsZSktPnBpZGhhc2hf cHByZXYgPSAmcC0+cGlkaGFzaF9uZXh0OwogICAgICAgICpodGFibGUgPSBwOwogICAgICAgIHAt PnBpZGhhc2hfcHByZXYgPSBodGFibGU7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB1bmhhc2hfcGlk KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgIGlmKHAtPnBpZGhhc2hfbmV4dCkKICAg ICAgICAgICAgICAgIHAtPnBpZGhhc2hfbmV4dC0+cGlkaGFzaF9wcHJldiA9IHAtPnBpZGhhc2hf cHByZXY7CiAgICAgICAgKnAtPnBpZGhhc2hfcHByZXYgPSBwLT5waWRoYXNoX25leHQ7Cn0KCnN0 YXRpYyBpbmxpbmUgc3RydWN0IHRhc2tfc3RydWN0ICpmaW5kX3Rhc2tfYnlfcGlkKGludCBwaWQp CnsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsICoqaHRhYmxlID0gJnBpZGhhc2hfUmFi YmM1N2VmWygoKChwaWQpID4+IDgpIF4gKHBpZCkpICYgKCg0MDk2ID4+IDIpIC0gMSkpXTsKCiAg ICAgICAgZm9yKHAgPSAqaHRhYmxlOyBwICYmIHAtPnBpZCAhPSBwaWQ7IHAgPSBwLT5waWRoYXNo X25leHQpCiAgICAgICAgICAgICAgICA7CgogICAgICAgIHJldHVybiBwOwp9CgoKZXh0ZXJuIHN0 cnVjdCB1c2VyX3N0cnVjdCAqIGFsbG9jX3VpZCh1aWRfdCk7CmV4dGVybiB2b2lkIGZyZWVfdWlk KHN0cnVjdCB1c2VyX3N0cnVjdCAqKTsKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9hc20vY3VycmVudC5oIiAxCgoKCnN0cnVjdCB0YXNrX3N0cnVjdDsKCnN0YXRpYyBp bmxpbmUgc3RydWN0IHRhc2tfc3RydWN0ICogZ2V0X2N1cnJlbnQodm9pZCkKewogICAgICAgIHN0 cnVjdCB0YXNrX3N0cnVjdCAqY3VycmVudDsKICAgICAgICBfX2FzbV9fKCJhbmRsICUlZXNwLCUw OyAiOiI9ciIgKGN1cnJlbnQpIDogIjAiICh+ODE5MVVMKSk7CiAgICAgICAgcmV0dXJuIGN1cnJl bnQ7CiB9CiMgNTQ0ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3Nj aGVkLmgiIDIKCmV4dGVybiB1bnNpZ25lZCBsb25nIHZvbGF0aWxlIGppZmZpZXNfUjBkYTAyZDY3 OwpleHRlcm4gdW5zaWduZWQgbG9uZyBpdGltZXJfdGlja3M7CmV4dGVybiB1bnNpZ25lZCBsb25n IGl0aW1lcl9uZXh0OwpleHRlcm4gc3RydWN0IHRpbWV2YWwgeHRpbWVfUmYzMWRkZjgzOwpleHRl cm4gdm9pZCBkb190aW1lcihzdHJ1Y3QgcHRfcmVncyAqKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQg KiBwcm9mX2J1ZmZlcjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcHJvZl9sZW47CmV4dGVybiB1bnNp Z25lZCBsb25nIHByb2Zfc2hpZnQ7CgoKCmV4dGVybiB2b2lkIF9fd2FrZV91cF9SYjc2YzVmMWUo d2FpdF9xdWV1ZV9oZWFkX3QgKnEsIHVuc2lnbmVkIGludCBtb2RlLCBpbnQgbnIpIF9fYXR0cmli dXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgX193YWtlX3VwX3N5bmNfUjAyMzFkOWVh KHdhaXRfcXVldWVfaGVhZF90ICpxLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50IG5yKSBfX2F0dHJp YnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIHNsZWVwX29uX1JlMDY3OWEzZih3YWl0 X3F1ZXVlX2hlYWRfdCAqcSkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gbG9u ZyBzbGVlcF9vbl90aW1lb3V0X1I3NWM4ZTM5NCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgc2lnbmVk IGxvbmcgdGltZW91dCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKZXh0ZXJuIHZvaWQg aW50ZXJydXB0aWJsZV9zbGVlcF9vbl9SN2U0Zjg5YzMod2FpdF9xdWV1ZV9oZWFkX3QgKnEpIF9f YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIGxvbmcgaW50ZXJydXB0aWJsZV9zbGVl cF9vbl90aW1lb3V0X1I0MDdhMjhkOCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgc2lnbmVkIGxvbmcg dGltZW91dCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKZXh0ZXJuIGludCB3YWtlX3Vw X3Byb2Nlc3NfUjY4MzZlNzVkKHN0cnVjdCB0YXNrX3N0cnVjdCAqIHRzaykgX19hdHRyaWJ1dGVf XygocmVncGFybSgzKSkpOwojIDU3NyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC9zY2hlZC5oIgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3dh aXQ0KHBpZF90IHBpZCx1bnNpZ25lZCBpbnQgKiBzdGF0X2FkZHIsIGludCBvcHRpb25zLCBzdHJ1 Y3QgcnVzYWdlICogcnUpOwoKZXh0ZXJuIGludCBpbl9ncm91cF9wX1JjM2NmMTEyOChnaWRfdCk7 CmV4dGVybiBpbnQgaW5fZWdyb3VwX3BfUmQ4YTJhYjk1KGdpZF90KTsKCmV4dGVybiB2b2lkIHBy b2NfY2FjaGVzX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGZsdXNoX3NpZ25hbHNfUmViZjY5Nzdl KHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgZmx1c2hfc2lnbmFsX2hhbmRsZXJz KHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBkZXF1ZXVlX3NpZ25hbF9SOGUzOTMx OWIoc2lnc2V0X3QgKiwgc2lnaW5mb190ICopOwpleHRlcm4gdm9pZCBibG9ja19hbGxfc2lnbmFs c19SNGIzNGZiZjUoaW50ICgqbm90aWZpZXIpKHZvaWQgKnByaXYpLCB2b2lkICpwcml2LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaWdzZXRfdCAqbWFzayk7CmV4dGVybiB2b2lkIHVu YmxvY2tfYWxsX3NpZ25hbHNfUjBhMjQ4N2UwKHZvaWQpOwpleHRlcm4gaW50IHNlbmRfc2lnX2lu Zm9fUjJiZmRkMDAzKGludCwgc3RydWN0IHNpZ2luZm8gKiwgc3RydWN0IHRhc2tfc3RydWN0ICop OwpleHRlcm4gaW50IGZvcmNlX3NpZ19pbmZvX1IzZTk1MDk0ZihpbnQsIHN0cnVjdCBzaWdpbmZv ICosIHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBraWxsX3BnX2luZm9fUjhlMmQ0 OTkwKGludCwgc3RydWN0IHNpZ2luZm8gKiwgcGlkX3QpOwpleHRlcm4gaW50IGtpbGxfc2xfaW5m b19SMTk4OGQyMWUoaW50LCBzdHJ1Y3Qgc2lnaW5mbyAqLCBwaWRfdCk7CmV4dGVybiBpbnQga2ls bF9wcm9jX2luZm9fUmZiNjhiMjY0KGludCwgc3RydWN0IHNpZ2luZm8gKiwgcGlkX3QpOwpleHRl cm4gdm9pZCBub3RpZnlfcGFyZW50X1IzNjExYjA3YShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgaW50 KTsKZXh0ZXJuIHZvaWQgZG9fbm90aWZ5X3BhcmVudChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgaW50 KTsKZXh0ZXJuIHZvaWQgZm9yY2Vfc2lnX1IxNDJiNDMwNihpbnQsIHN0cnVjdCB0YXNrX3N0cnVj dCAqKTsKZXh0ZXJuIGludCBzZW5kX3NpZ19SYzBiZmVjMmYoaW50LCBzdHJ1Y3QgdGFza19zdHJ1 Y3QgKiwgaW50KTsKZXh0ZXJuIGludCBraWxsX3BnX1IzOGYyOTcxOShwaWRfdCwgaW50LCBpbnQp OwpleHRlcm4gaW50IGtpbGxfc2xfUmZiYTEyZmQwKHBpZF90LCBpbnQsIGludCk7CmV4dGVybiBp bnQga2lsbF9wcm9jX1I5MzJkYTY3ZShwaWRfdCwgaW50LCBpbnQpOwpleHRlcm4gaW50IGRvX3Np Z2FjdGlvbihpbnQsIGNvbnN0IHN0cnVjdCBrX3NpZ2FjdGlvbiAqLCBzdHJ1Y3Qga19zaWdhY3Rp b24gKik7CmV4dGVybiBpbnQgZG9fc2lnYWx0c3RhY2soY29uc3Qgc3RhY2tfdCAqLCBzdGFja190 ICosIHVuc2lnbmVkIGxvbmcpOwoKc3RhdGljIGlubGluZSBpbnQgc2lnbmFsX3BlbmRpbmcoc3Ry dWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgcmV0dXJuIChwLT5zaWdwZW5kaW5nICE9IDAp Owp9CgoKCgoKc3RhdGljIGlubGluZSBpbnQgaGFzX3BlbmRpbmdfc2lnbmFscyhzaWdzZXRfdCAq c2lnbmFsLCBzaWdzZXRfdCAqYmxvY2tlZCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVhZHk7 CiAgICAgICAgbG9uZyBpOwoKICAgICAgICBzd2l0Y2ggKCg2NCAvIDMyKSkgewogICAgICAgIGRl ZmF1bHQ6CiAgICAgICAgICAgICAgICBmb3IgKGkgPSAoNjQgLyAzMiksIHJlYWR5ID0gMDsgLS1p ID49IDAgOykKICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHkgfD0gc2lnbmFsLT5zaWdbaV0g Jn4gYmxvY2tlZC0+c2lnW2ldOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2Ug NDogcmVhZHkgPSBzaWduYWwtPnNpZ1szXSAmfiBibG9ja2VkLT5zaWdbM107CiAgICAgICAgICAg ICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1syXSAmfiBibG9ja2VkLT5zaWdbMl07CiAgICAgICAg ICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1sxXSAmfiBibG9ja2VkLT5zaWdbMV07CiAgICAg ICAgICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1swXSAmfiBibG9ja2VkLT5zaWdbMF07CiAg ICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAyOiByZWFkeSA9IHNpZ25hbC0+c2ln WzFdICZ+IGJsb2NrZWQtPnNpZ1sxXTsKICAgICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+ c2lnWzBdICZ+IGJsb2NrZWQtPnNpZ1swXTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAg ICBjYXNlIDE6IHJlYWR5ID0gc2lnbmFsLT5zaWdbMF0gJn4gYmxvY2tlZC0+c2lnWzBdOwogICAg ICAgIH0KICAgICAgICByZXR1cm4gcmVhZHkgIT0gMDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9p ZCByZWNhbGNfc2lncGVuZGluZ19SNzM4MDFkZmUoc3RydWN0IHRhc2tfc3RydWN0ICp0KQp7CiAg ICAgICAgdC0+c2lncGVuZGluZyA9IGhhc19wZW5kaW5nX3NpZ25hbHMoJnQtPnBlbmRpbmcuc2ln bmFsLCAmdC0+YmxvY2tlZCk7Cn0KCgoKc3RhdGljIGlubGluZSBpbnQgb25fc2lnX3N0YWNrKHVu c2lnbmVkIGxvbmcgc3ApCnsKICAgICAgICByZXR1cm4gKHNwIC0gZ2V0X2N1cnJlbnQoKS0+c2Fz X3NzX3NwIDwgZ2V0X2N1cnJlbnQoKS0+c2FzX3NzX3NpemUpOwp9CgpzdGF0aWMgaW5saW5lIGlu dCBzYXNfc3NfZmxhZ3ModW5zaWduZWQgbG9uZyBzcCkKewogICAgICAgIHJldHVybiAoZ2V0X2N1 cnJlbnQoKS0+c2FzX3NzX3NpemUgPT0gMCA/IDIKICAgICAgICAgICAgICAgIDogb25fc2lnX3N0 YWNrKHNwKSA/IDEgOiAwKTsKfQoKZXh0ZXJuIGludCByZXF1ZXN0X2lycV9SMGM2MGYyZTAodW5z aWduZWQgaW50LAogICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpoYW5kbGVyKShpbnQsIHZv aWQgKiwgc3RydWN0IHB0X3JlZ3MgKiksCiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZywgY29uc3QgY2hhciAqLCB2b2lkICopOwpleHRlcm4gdm9pZCBmcmVlX2lycV9SZjIwZGFi ZDgodW5zaWduZWQgaW50LCB2b2lkICopOwojIDY4MCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdGF0aWMgaW5saW5lIGludCBzdXNlcih2b2lkKQp7 CiAgICAgICAgaWYgKCEoICgxIDw8ICgwICsxKSkgJiAweDAwMDAwMDAwID8gKDEgPDwgKDApKSAm IDB4MDAwMDAwMDAgOiAoMSA8PCAoMCkpICYgc2VjdXJlYml0c19SYWJlNzc0ODQgKSAmJiBnZXRf Y3VycmVudCgpLT5ldWlkID09IDApIHsKICAgICAgICAgICAgICAgIGdldF9jdXJyZW50KCktPmZs YWdzIHw9IDB4MDAwMDAxMDA7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAg ICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGZzdXNlcih2b2lkKQp7CiAgICAg ICAgaWYgKCEoICgxIDw8ICgwICsxKSkgJiAweDAwMDAwMDAwID8gKDEgPDwgKDApKSAmIDB4MDAw MDAwMDAgOiAoMSA8PCAoMCkpICYgc2VjdXJlYml0c19SYWJlNzc0ODQgKSAmJiBnZXRfY3VycmVu dCgpLT5mc3VpZCA9PSAwKSB7CiAgICAgICAgICAgICAgICBnZXRfY3VycmVudCgpLT5mbGFncyB8 PSAweDAwMDAwMTAwOwogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAg IHJldHVybiAwOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIGludCBjYXBhYmxlKGludCBjYXApCnsK CiAgICAgICAgaWYgKCgoZ2V0X2N1cnJlbnQoKS0+Y2FwX2VmZmVjdGl2ZSkgJiAoMSA8PCAoY2Fw KSkpKQoKCgogICAgICAgIHsKICAgICAgICAgICAgICAgIGdldF9jdXJyZW50KCktPmZsYWdzIHw9 IDB4MDAwMDAxMDA7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAg cmV0dXJuIDA7Cn0KCgoKCmV4dGVybiBzdHJ1Y3QgbW1fc3RydWN0ICogbW1fYWxsb2Modm9pZCk7 CgpleHRlcm4gc3RydWN0IG1tX3N0cnVjdCAqIHN0YXJ0X2xhenlfdGxiKHZvaWQpOwpleHRlcm4g dm9pZCBlbmRfbGF6eV90bGIoc3RydWN0IG1tX3N0cnVjdCAqbW0pOwoKCmV4dGVybiBpbmxpbmUg dm9pZCBfX21tZHJvcChzdHJ1Y3QgbW1fc3RydWN0ICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o MykpKTsKc3RhdGljIGlubGluZSB2b2lkIG1tZHJvcChzdHJ1Y3QgbW1fc3RydWN0ICogbW0pCnsK ICAgICAgICBpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmbW0tPm1tX2NvdW50KSkKICAgICAgICAg ICAgICAgIF9fbW1kcm9wKG1tKTsKfQoKCmV4dGVybiB2b2lkIG1tcHV0KHN0cnVjdCBtbV9zdHJ1 Y3QgKik7CgpleHRlcm4gdm9pZCBtbV9yZWxlYXNlKHZvaWQpOwoKCgoKZXh0ZXJuIHN0cnVjdCBm aWxlICoqIGFsbG9jX2ZkX2FycmF5KGludCk7CmV4dGVybiBpbnQgZXhwYW5kX2ZkX2FycmF5KHN0 cnVjdCBmaWxlc19zdHJ1Y3QgKiwgaW50IG5yKTsKZXh0ZXJuIHZvaWQgZnJlZV9mZF9hcnJheShz dHJ1Y3QgZmlsZSAqKiwgaW50KTsKCmV4dGVybiBmZF9zZXQgKmFsbG9jX2Zkc2V0KGludCk7CmV4 dGVybiBpbnQgZXhwYW5kX2Zkc2V0KHN0cnVjdCBmaWxlc19zdHJ1Y3QgKiwgaW50IG5yKTsKZXh0 ZXJuIHZvaWQgZnJlZV9mZHNldChmZF9zZXQgKiwgaW50KTsKCmV4dGVybiBpbnQgY29weV90aHJl YWQoaW50LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBzdHJ1 Y3QgdGFza19zdHJ1Y3QgKiwgc3RydWN0IHB0X3JlZ3MgKik7CmV4dGVybiB2b2lkIGZsdXNoX3Ro cmVhZCh2b2lkKTsKZXh0ZXJuIHZvaWQgZXhpdF90aHJlYWQodm9pZCk7CgpleHRlcm4gdm9pZCBl eGl0X21tX1JkNDViYmUyOShzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIGV4aXRf ZmlsZXNfUjljYzdlM2Q0KHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgZXhpdF9z aWdoYW5kX1I1MGE5NTgzNChzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CgpleHRlcm4gdm9pZCByZXBh cmVudF90b19pbml0X1JlYzYxNThkMCh2b2lkKTsKZXh0ZXJuIHZvaWQgZGFlbW9uaXplX1JkNjZh MzU0YSh2b2lkKTsKCmV4dGVybiBpbnQgZG9fZXhlY3ZlX1I5YzYyMDk4ZihjaGFyICosIGNoYXIg KiosIGNoYXIgKiosIHN0cnVjdCBwdF9yZWdzICopOwpleHRlcm4gaW50IGRvX2ZvcmsodW5zaWdu ZWQgbG9uZywgdW5zaWduZWQgbG9uZywgc3RydWN0IHB0X3JlZ3MgKiwgdW5zaWduZWQgbG9uZyk7 CgpleHRlcm4gdm9pZCBhZGRfd2FpdF9xdWV1ZV9SMWUzMTU2NGUod2FpdF9xdWV1ZV9oZWFkX3Qg KnEsIHdhaXRfcXVldWVfdCAqIHdhaXQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0 ZXJuIHZvaWQgYWRkX3dhaXRfcXVldWVfZXhjbHVzaXZlX1I1YmNjOWQ1MSh3YWl0X3F1ZXVlX2hl YWRfdCAqcSwgd2FpdF9xdWV1ZV90ICogd2FpdCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp OwpleHRlcm4gdm9pZCByZW1vdmVfd2FpdF9xdWV1ZV9SNjM2OGQ4Mzkod2FpdF9xdWV1ZV9oZWFk X3QgKnEsIHdhaXRfcXVldWVfdCAqIHdhaXQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsK IyA4NDggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIK c3RhdGljIGlubGluZSB2b2lkIGRlbF9mcm9tX3J1bnF1ZXVlKHN0cnVjdCB0YXNrX3N0cnVjdCAq IHApCnsKICAgICAgICBucl9ydW5uaW5nX1JjYTNjNmQ3OC0tOwogICAgICAgIHAtPnNsZWVwX3Rp bWUgPSBqaWZmaWVzX1IwZGEwMmQ2NzsKICAgICAgICBsaXN0X2RlbCgmcC0+cnVuX2xpc3QpOwog ICAgICAgIHAtPnJ1bl9saXN0Lm5leHQgPSAoKHZvaWQgKikwKTsKfQoKc3RhdGljIGlubGluZSBp bnQgdGFza19vbl9ydW5xdWV1ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICByZXR1 cm4gKHAtPnJ1bl9saXN0Lm5leHQgIT0gKCh2b2lkICopMCkpOwp9CgpzdGF0aWMgaW5saW5lIHZv aWQgdW5oYXNoX3Byb2Nlc3Moc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgaWYgKHRh c2tfb25fcnVucXVldWUocCkpIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIi KTsKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVtb3J5Iik7 ICh2b2lkKSgmdGFza2xpc3RfbG9ja19SOTk5YzgwYTIpOyB9IHdoaWxlICgwKTsKICAgICAgICBu cl90aHJlYWRzLS07CiAgICAgICAgdW5oYXNoX3BpZChwKTsKICAgICAgICBkbyB7IChwKS0+bmV4 dF90YXNrLT5wcmV2X3Rhc2sgPSAocCktPnByZXZfdGFzazsgKHApLT5wcmV2X3Rhc2stPm5leHRf dGFzayA9IChwKS0+bmV4dF90YXNrOyBpZiAoKHApLT5wX29zcHRyKSAocCktPnBfb3NwdHItPnBf eXNwdHIgPSAocCktPnBfeXNwdHI7IGlmICgocCktPnBfeXNwdHIpIChwKS0+cF95c3B0ci0+cF9v c3B0ciA9IChwKS0+cF9vc3B0cjsgZWxzZSAocCktPnBfcHB0ci0+cF9jcHRyID0gKHApLT5wX29z cHRyOyB9IHdoaWxlICgwKTsKICAgICAgICBsaXN0X2RlbCgmcC0+dGhyZWFkX2dyb3VwKTsKICAg ICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0aSI6IDog OiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7Cn0KCgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza19sb2Nr KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgICh2b2lkKSgmcC0+YWxsb2NfbG9jayk7 Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrX3VubG9jayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAp CnsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBkX3Bh dGgoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgdmZzbW91bnQgKnZmc21udCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYsIGludCBidWZsZW4pCnsKICAgICAg ICBjaGFyICpyZXM7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICpyb290bW50OwogICAgICAgIHN0 cnVjdCBkZW50cnkgKnJvb3Q7CiAgICAgICAgKHZvaWQpKCZnZXRfY3VycmVudCgpLT5mcy0+bG9j ayk7CiAgICAgICAgcm9vdG1udCA9IG1udGdldChnZXRfY3VycmVudCgpLT5mcy0+cm9vdG1udCk7 CiAgICAgICAgcm9vdCA9IGRnZXQoZ2V0X2N1cnJlbnQoKS0+ZnMtPnJvb3QpOwogICAgICAgIGRv IHsgfSB3aGlsZSgwKTsKICAgICAgICAodm9pZCkoJmRjYWNoZV9sb2NrX1I3MzQ2M2NlZik7CiAg ICAgICAgcmVzID0gX19kX3BhdGhfUjZjZjNkOTQ4KGRlbnRyeSwgdmZzbW50LCByb290LCByb290 bW50LCBidWYsIGJ1Zmxlbik7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwogICAgICAgIGRwdXRf UmQ2Y2Q4Mjg0KHJvb3QpOwogICAgICAgIG1udHB1dChyb290bW50KTsKICAgICAgICByZXR1cm4g cmVzOwp9CiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbS5o IiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9lcnJuby5o IiAxCiMgNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbS5oIiAy CgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9jb25maWcu aCIgMQojIDEwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21tLmgi IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3N0cmluZy5o IiAxCiMgMTEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW0uaCIg MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbGlzdC5oIiAx CiMgMTIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW0uaCIgMgoj IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW16b25lLmgiIDEK CgoKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZp Zy5oIiAxCiMgOCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbXpv bmUuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc3Bp bmxvY2suaCIgMQojIDkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv bW16b25lLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L2xpc3QuaCIgMQojIDEwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L21tem9uZS5oIiAyCiMgMjEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu dXgvbW16b25lLmgiCnR5cGVkZWYgc3RydWN0IGZyZWVfYXJlYV9zdHJ1Y3QgewogICAgICAgIHN0 cnVjdCBsaXN0X2hlYWQgZnJlZV9saXN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgKm1hcDsKfSBm cmVlX2FyZWFfdDsKCnN0cnVjdCBwZ2xpc3RfZGF0YTsKIyAzNiAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKdHlwZWRlZiBzdHJ1Y3Qgem9uZV9zdHJ1 Y3QgewoKCgogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIGZy ZWVfcGFnZXNfUjk5NDFjY2I4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgcGFnZXNfbWluLCBwYWdl c19sb3csIHBhZ2VzX2hpZ2g7CiAgICAgICAgaW50IG5lZWRfYmFsYW5jZTsKCgoKCiAgICAgICAg ZnJlZV9hcmVhX3QgZnJlZV9hcmVhWzEwXTsKCgoKCiAgICAgICAgc3RydWN0IHBnbGlzdF9kYXRh ICp6b25lX3BnZGF0OwogICAgICAgIHN0cnVjdCBwYWdlICp6b25lX21lbV9tYXA7CiAgICAgICAg dW5zaWduZWQgbG9uZyB6b25lX3N0YXJ0X3BhZGRyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgem9u ZV9zdGFydF9tYXBucjsKCgoKCiAgICAgICAgY2hhciAqbmFtZTsKICAgICAgICB1bnNpZ25lZCBs b25nIHNpemU7Cn0gem9uZV90OwojIDgxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L21tem9uZS5oIgp0eXBlZGVmIHN0cnVjdCB6b25lbGlzdF9zdHJ1Y3QgewogICAg ICAgIHpvbmVfdCAqIHpvbmVzIFszICsxXTsKfSB6b25lbGlzdF90OwojIDk4ICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgpzdHJ1Y3QgYm9vdG1lbV9k YXRhOwp0eXBlZGVmIHN0cnVjdCBwZ2xpc3RfZGF0YSB7CiAgICAgICAgem9uZV90IG5vZGVfem9u ZXNbM107CiAgICAgICAgem9uZWxpc3RfdCBub2RlX3pvbmVsaXN0c1sweDBmICsxXTsKICAgICAg ICBpbnQgbnJfem9uZXM7CiAgICAgICAgc3RydWN0IHBhZ2UgKm5vZGVfbWVtX21hcDsKICAgICAg ICB1bnNpZ25lZCBsb25nICp2YWxpZF9hZGRyX2JpdG1hcDsKICAgICAgICBzdHJ1Y3QgYm9vdG1l bV9kYXRhICpiZGF0YTsKICAgICAgICB1bnNpZ25lZCBsb25nIG5vZGVfc3RhcnRfcGFkZHI7CiAg ICAgICAgdW5zaWduZWQgbG9uZyBub2RlX3N0YXJ0X21hcG5yOwogICAgICAgIHVuc2lnbmVkIGxv bmcgbm9kZV9zaXplOwogICAgICAgIGludCBub2RlX2lkOwogICAgICAgIHN0cnVjdCBwZ2xpc3Rf ZGF0YSAqbm9kZV9uZXh0Owp9IHBnX2RhdGFfdDsKCmV4dGVybiBpbnQgbnVtbm9kZXM7CmV4dGVy biBwZ19kYXRhX3QgKnBnZGF0X2xpc3Q7CiMgMTIzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgpzdHJ1Y3QgcGFnZTsKZXh0ZXJuIHZvaWQgc2hvd19m cmVlX2FyZWFzX2NvcmUocGdfZGF0YV90ICpwZ2RhdCk7CmV4dGVybiB2b2lkIGZyZWVfYXJlYV9p bml0X2NvcmUoaW50IG5pZCwgcGdfZGF0YV90ICpwZ2RhdCwgc3RydWN0IHBhZ2UgKipnbWFwLAog IHVuc2lnbmVkIGxvbmcgKnpvbmVzX3NpemUsIHVuc2lnbmVkIGxvbmcgcGFkZHIsIHVuc2lnbmVk IGxvbmcgKnpob2xlc19zaXplLAogIHN0cnVjdCBwYWdlICpwbWFwKTsKCmV4dGVybiBwZ19kYXRh X3QgY29udGlnX3BhZ2VfZGF0YTsKIyAxMyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9tbS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC9zd2FwLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKIyA1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p bmNsdWRlL2xpbnV4L3N3YXAuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvYXNtL3BhZ2UuaCIgMQojIDYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvc3dhcC5oIiAyCiMgMjUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvbGludXgvc3dhcC5oIgp1bmlvbiBzd2FwX2hlYWRlciB7CiAgICAgICAgc3RydWN0CiAgICAg ICAgewogICAgICAgICAgICAgICAgY2hhciByZXNlcnZlZFsoMVVMIDw8IDEyKSAtIDEwXTsKICAg ICAgICAgICAgICAgIGNoYXIgbWFnaWNbMTBdOwogICAgICAgIH0gbWFnaWM7CiAgICAgICAgc3Ry dWN0CiAgICAgICAgewogICAgICAgICAgICAgICAgY2hhciBib290Yml0c1sxMDI0XTsKICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCB2ZXJzaW9uOwogICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IGxhc3RfcGFnZTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9iYWRwYWdlczsK ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWRkaW5nWzEyNV07CiAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgYmFkcGFnZXNbMV07CiAgICAgICAgfSBpbmZvOwp9OwojIDUxICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3N3YXAuaCIKIyAxICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQojIDUyICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3N3YXAuaCIgMgojIDY0ICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3N3YXAuaCIKc3RydWN0IHN3YXBfaW5m b19zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICBrZGV2X3Qgc3dh cF9kZXZpY2U7CiAgICAgICAgc3BpbmxvY2tfdCBzZGV2X2xvY2s7CiAgICAgICAgc3RydWN0IGRl bnRyeSAqIHN3YXBfZmlsZTsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKnN3YXBfdmZzbW50Owog ICAgICAgIHVuc2lnbmVkIHNob3J0ICogc3dhcF9tYXA7CiAgICAgICAgdW5zaWduZWQgaW50IGxv d2VzdF9iaXQ7CiAgICAgICAgdW5zaWduZWQgaW50IGhpZ2hlc3RfYml0OwogICAgICAgIHVuc2ln bmVkIGludCBjbHVzdGVyX25leHQ7CiAgICAgICAgdW5zaWduZWQgaW50IGNsdXN0ZXJfbnI7CiAg ICAgICAgaW50IHByaW87CiAgICAgICAgaW50IHBhZ2VzOwogICAgICAgIHVuc2lnbmVkIGxvbmcg bWF4OwogICAgICAgIGludCBuZXh0Owp9OwoKZXh0ZXJuIGludCBucl9zd2FwX3BhZ2VzOwpleHRl cm4gdW5zaWduZWQgaW50IG5yX2ZyZWVfcGFnZXModm9pZCk7CmV4dGVybiB1bnNpZ25lZCBpbnQg bnJfZnJlZV9idWZmZXJfcGFnZXModm9pZCk7CmV4dGVybiBpbnQgbnJfYWN0aXZlX3BhZ2VzOwpl eHRlcm4gaW50IG5yX2luYWN0aXZlX3BhZ2VzOwpleHRlcm4gYXRvbWljX3QgbnJfYXN5bmNfcGFn ZXNfUmE4MGE1ZGYyOwpleHRlcm4gYXRvbWljX3QgcGFnZV9jYWNoZV9zaXplOwpleHRlcm4gYXRv bWljX3QgYnVmZmVybWVtX3BhZ2VzOwpleHRlcm4gc3BpbmxvY2tfdCBwYWdlY2FjaGVfbG9jazsK ZXh0ZXJuIHZvaWQgX19yZW1vdmVfaW5vZGVfcGFnZShzdHJ1Y3QgcGFnZSAqKTsKCgpzdHJ1Y3Qg dGFza19zdHJ1Y3Q7CnN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKc3RydWN0IHN5c2luZm87CgpzdHJ1 Y3Qgem9uZV90OwoKCmV4dGVybiB2b2lkIGxydV9jYWNoZV9hZGQoc3RydWN0IHBhZ2UgKikgX19h dHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBfX2xydV9jYWNoZV9kZWwoc3Ry dWN0IHBhZ2UgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBscnVf Y2FjaGVfZGVsKHN0cnVjdCBwYWdlICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCmV4 dGVybiB2b2lkIGRlYWN0aXZhdGVfcGFnZV9SNGRlOTRlMWUoc3RydWN0IHBhZ2UgKikgX19hdHRy aWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBkZWFjdGl2YXRlX3BhZ2Vfbm9sb2Nr KHN0cnVjdCBwYWdlICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQg YWN0aXZhdGVfcGFnZShzdHJ1Y3QgcGFnZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7 CmV4dGVybiB2b2lkIGFjdGl2YXRlX3BhZ2Vfbm9sb2NrKHN0cnVjdCBwYWdlICopIF9fYXR0cmli dXRlX18oKHJlZ3Bhcm0oMykpKTsKCmV4dGVybiB2b2lkIHN3YXBfc2V0dXAodm9pZCk7CgoKZXh0 ZXJuIHdhaXRfcXVldWVfaGVhZF90IGtzd2FwZF93YWl0OwpleHRlcm4gaW50IHRyeV90b19mcmVl X3BhZ2VzKHpvbmVfdCAqLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCkgX19hdHRyaWJ1dGVf XygocmVncGFybSgzKSkpOwoKCmV4dGVybiB2b2lkIHJ3X3N3YXBfcGFnZShpbnQsIHN0cnVjdCBw YWdlICopOwpleHRlcm4gdm9pZCByd19zd2FwX3BhZ2Vfbm9sb2NrKGludCwgc3dwX2VudHJ5X3Qs IGNoYXIgKik7CgoKCgpleHRlcm4gdm9pZCBzaG93X3N3YXBfY2FjaGVfaW5mbyh2b2lkKTsKZXh0 ZXJuIHZvaWQgYWRkX3RvX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2UgKiwgc3dwX2VudHJ5X3QpOwpl eHRlcm4gdm9pZCBfX2RlbGV0ZV9mcm9tX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2UgKnBhZ2UpOwpl eHRlcm4gdm9pZCBkZWxldGVfZnJvbV9zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICpwYWdlKTsKZXh0 ZXJuIHZvaWQgZnJlZV9wYWdlX2FuZF9zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICpwYWdlKTsKZXh0 ZXJuIHN0cnVjdCBwYWdlICogbG9va3VwX3N3YXBfY2FjaGUoc3dwX2VudHJ5X3QpOwpleHRlcm4g c3RydWN0IHBhZ2UgKiByZWFkX3N3YXBfY2FjaGVfYXN5bmMoc3dwX2VudHJ5X3QpOwoKCmV4dGVy biB2b2lkIG9vbV9raWxsKHZvaWQpOwoKCmV4dGVybiB1bnNpZ25lZCBpbnQgbnJfc3dhcGZpbGVz OwpleHRlcm4gc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3Qgc3dhcF9pbmZvW107CmV4dGVybiBpbnQg aXNfc3dhcF9wYXJ0aXRpb24oa2Rldl90KTsKZXh0ZXJuIHZvaWQgc2lfc3dhcGluZm8oc3RydWN0 IHN5c2luZm8gKik7CmV4dGVybiBzd3BfZW50cnlfdCBnZXRfc3dhcF9wYWdlKHZvaWQpOwpleHRl cm4gdm9pZCBnZXRfc3dhcGhhbmRsZV9pbmZvKHN3cF9lbnRyeV90LCB1bnNpZ25lZCBsb25nICos IGtkZXZfdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGlub2RlICoqKTsKZXh0ZXJuIGludCBzd2FwX2R1cGxpY2F0ZShzd3BfZW50cnlfdCk7CmV4dGVy biBpbnQgc3dhcF9jb3VudChzdHJ1Y3QgcGFnZSAqKTsKZXh0ZXJuIGludCB2YWxpZF9zd2FwaGFu ZGxlcyhzd3BfZW50cnlfdCwgdW5zaWduZWQgbG9uZyAqKTsKZXh0ZXJuIHZvaWQgc3dhcF9mcmVl KHN3cF9lbnRyeV90KTsKc3RydWN0IHN3YXBfbGlzdF90IHsKICAgICAgICBpbnQgaGVhZDsKICAg ICAgICBpbnQgbmV4dDsKfTsKZXh0ZXJuIHN0cnVjdCBzd2FwX2xpc3RfdCBzd2FwX2xpc3Q7CiBf X2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc3dhcG9mZihjb25zdCBjaGFyICop OwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3N3YXBvbihjb25zdCBjaGFy ICosIGludCk7CgoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBzd2FwX2NhY2hlX2FkZF90b3RhbDsK ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc3dhcF9jYWNoZV9kZWxfdG90YWw7CmV4dGVybiB1bnNpZ25l ZCBsb25nIHN3YXBfY2FjaGVfZmluZF90b3RhbDsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc3dhcF9j YWNoZV9maW5kX3N1Y2Nlc3M7CgoKZXh0ZXJuIHNwaW5sb2NrX3QgcGFnZW1hcF9scnVfbG9jazsK CmV4dGVybiB2b2lkIG1hcmtfcGFnZV9hY2Nlc3NlZChzdHJ1Y3QgcGFnZSAqKSBfX2F0dHJpYnV0 ZV9fKChyZWdwYXJtKDMpKSk7CiMgMjI2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L3N3YXAuaCIKZXh0ZXJuIHNwaW5sb2NrX3Qgc3dhcGxvY2s7CgoKCgoKCmV4dGVy biB2b2lkIHNobWVtX3VudXNlKHN3cF9lbnRyeV90IGVudHJ5LCBzdHJ1Y3QgcGFnZSAqcGFnZSk7 CiMgMTQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW0uaCIgMgoj IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcmJ0cmVlLmgiIDEK IyAxNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbS5oIiAyCgpl eHRlcm4gdW5zaWduZWQgbG9uZyBtYXhfbWFwbnJfUjAxMTM5ZmZjOwpleHRlcm4gdW5zaWduZWQg bG9uZyBudW1fcGh5c3BhZ2VzX1IwOTQ4Y2RlOTsKZXh0ZXJuIHZvaWQgKiBoaWdoX21lbW9yeV9S OGE3ZDFjMzE7CmV4dGVybiBpbnQgcGFnZV9jbHVzdGVyOwoKZXh0ZXJuIHN0cnVjdCBsaXN0X2hl YWQgYWN0aXZlX2xpc3Q7CmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGluYWN0aXZlX2xpc3Q7Cgoj IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3BhZ2UuaCIgMQojIDI1 ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L21tLmgiIDIKIyAxICIv dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDEKCgoKIyAx ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMg NSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAyCiMg MTYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3BndGFibGUuaCIKIyAx ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMQoj IDE3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDIK IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMQoj IDE2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9maXhtYXAuaCIKIyAx ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMg MTcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAyCiMg MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQoj IDE4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMgoj IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2FwaWNkZWYuaCIgMQoj IDEyMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYXBpY2RlZi5oIgpz dHJ1Y3QgbG9jYWxfYXBpYyB7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2Vy dmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDE7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBf X3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDI7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8xIDogMjQsCiAgICAgICAgICAgICAgICAg ICAgICAgIHBoeXNfYXBpY19pZCA6IDQsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2 ZWRfMiA6IDQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAg ICAgICB9IGlkOwoKICAgICAgICBjb25zdAogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgdmVyc2lvbiA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVz ZXJ2ZWRfMSA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIG1heF9sdnQgOiA4LAogICAgICAg ICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiA4OwogICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IF9fcmVzZXJ2ZWRbM107CiAgICAgICAgfSB2ZXJzaW9uOwoKICAgICAgICBzdHJ1Y3Qg eyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzAzOwoKICAgICAgICBz dHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA0OwoKICAg ICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA1 OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2Vy dmVkXzA2OwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBy aW9yaXR5IDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMjQ7CiAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwogICAgICAgIH0gdHBy OwoKICAgICAgICBjb25zdAogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgcHJpb3JpdHkgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEg OiAyNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAgICAg ICAgfSBhcHI7CgogICAgICAgIGNvbnN0CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBwcmlvcml0eSA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVz ZXJ2ZWRfMSA6IDI0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlsz XTsKICAgICAgICB9IHBwcjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBlb2k7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsK ICAgICAgICB9IGVvaTsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRb NF07IH0gX19yZXNlcnZlZF8wNzsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBfX3Jlc2VydmVkXzEgOiAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgbG9n aWNhbF9kZXN0IDogODsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJb M107CiAgICAgICAgfSBsZHI7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgX19yZXNlcnZlZF8xIDogMjgsCiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVs IDogNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAgICAg ICAgfSBkZnI7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg c3B1cmlvdXNfdmVjdG9yIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgYXBpY19lbmFibGVk IDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNfY3B1IDogMSwKICAgICAgICAgICAg ICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMjI7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgX19yZXNlcnZlZF8zWzNdOwogICAgICAgIH0gc3ZyOwoKICAgICAgICBzdHJ1Y3QgewogICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IGJpdGZpZWxkOwogICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IF9fcmVzZXJ2ZWRbM107CiAgICAgICAgfSBpc3IgWzhdOwoKICAgICAgICBzdHJ1Y3Qg ewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGJpdGZpZWxkOwogICAgICAgICAgICAgICAg dW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CiAgICAgICAgfSB0bXIgWzhdOwoKICAgICAgICBz dHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGJpdGZpZWxkOwogICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CiAgICAgICAgfSBpcnIgWzhdOwoKICAg ICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgc2VuZF9jc19lcnJvciA6IDEsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVjZWl2ZV9jc19lcnJvciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VuZF9hY2NlcHRfZXJyb3IgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlY2VpdmVfYWNjZXB0X2Vycm9yIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBfX3Jlc2VydmVkXzEgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbmRfaWxsZWdhbF92ZWN0b3IgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlY2VpdmVfaWxsZWdhbF92ZWN0b3IgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlsbGVnYWxfcmVnaXN0ZXJfYWRkcmVzcyA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgX19yZXNlcnZlZF8yIDogMjQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBfX3Jlc2VydmVkXzNbM107CiAgICAgICAgICAgICAgICB9IGVycm9yX2JpdHM7CiAg ICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgZXJyb3JzOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZl ZF8zWzNdOwogICAgICAgICAgICAgICAgfSBhbGxfZXJyb3JzOwogICAgICAgIH0gZXNyOwoKICAg ICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA4 OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2Vy dmVkXzA5OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBf X3Jlc2VydmVkXzEwOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0 XTsgfSBfX3Jlc2VydmVkXzExOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNl cnZlZFs0XTsgfSBfX3Jlc2VydmVkXzEyOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQg X19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzEzOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25l ZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE0OwoKICAgICAgICBzdHJ1Y3Qgewog ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICAg ICAgICAgIGRlbGl2ZXJ5X21vZGUgOiAzLAogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5h dGlvbl9tb2RlIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDog MSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMSwKICAgICAgICAgICAg ICAgICAgICAgICAgbGV2ZWwgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyIDog MSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMiwKICAgICAgICAgICAg ICAgICAgICAgICAgc2hvcnRoYW5kIDogMiwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNl cnZlZF8zIDogMTI7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF80WzNd OwogICAgICAgIH0gaWNyMTsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuaW9u IHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMSA6IDI0 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBoeXNfZGVzdCA6IDQsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogNDsKICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMyA6IDI0LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxvZ2ljYWxfZGVzdCA6IDg7CiAgICAgICAgICAgICAgICB9IGRlc3Q7 CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF80WzNdOwogICAgICAgIH0g aWNyMjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZWN0 b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiA0LAogICAgICAg ICAgICAgICAgICAgICAgICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogICAgICAgICAgICAgICAgICAg ICAgICBfX3Jlc2VydmVkXzIgOiAzLAogICAgICAgICAgICAgICAgICAgICAgICBtYXNrIDogMSwK ICAgICAgICAgICAgICAgICAgICAgICAgdGltZXJfbW9kZSA6IDEsCiAgICAgICAgICAgICAgICAg ICAgICAgIF9fcmVzZXJ2ZWRfMyA6IDE0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9f cmVzZXJ2ZWRfNFszXTsKICAgICAgICB9IGx2dF90aW1lcjsKCiAgICAgICAgc3RydWN0IHsgdW5z aWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xNTsKCiAgICAgICAgc3RydWN0 IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZWN0b3IgOiA4LAogICAgICAgICAgICAg ICAgICAgICAgICBkZWxpdmVyeV9tb2RlIDogMywKICAgICAgICAgICAgICAgICAgICAgICAgX19y ZXNlcnZlZF8xIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDog MSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMywKICAgICAgICAgICAg ICAgICAgICAgICAgbWFzayA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRf MyA6IDE1OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfNFszXTsKICAg ICAgICB9IGx2dF9wYzsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCB2ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9tb2RlIDog MywKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMSwKICAgICAgICAgICAg ICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAg cG9sYXJpdHkgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVfaXJyIDogMSwKICAg ICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAg IG1hc2sgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAxNTsKICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzNbM107CiAgICAgICAgfSBsdnRf bGludDA7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVj dG9yIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfbW9kZSA6IDMsCiAgICAg ICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDEsCiAgICAgICAgICAgICAgICAgICAg ICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGFyaXR5 IDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlX2lyciA6IDEsCiAgICAgICAgICAg ICAgICAgICAgICAgIHRyaWdnZXIgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBtYXNrIDog MSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMTU7CiAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8zWzNdOwogICAgICAgIH0gbHZ0X2xpbnQxOwoK ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgs CiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDQsCiAgICAgICAgICAgICAg ICAgICAgICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9f cmVzZXJ2ZWRfMiA6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hc2sgOiAxLAogICAgICAg ICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzMgOiAxNTsKICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBfX3Jlc2VydmVkXzRbM107CiAgICAgICAgfSBsdnRfZXJyb3I7CgogICAgICAgIHN0 cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaW5pdGlhbF9jb3VudDsKICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAgfSB0aW1lcl9p Y3I7CgogICAgICAgIGNvbnN0CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBjdXJyX2NvdW50OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2 ZWRfMlszXTsKICAgICAgICB9IHRpbWVyX2NjcjsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQg aW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xNjsKCiAgICAgICAgc3RydWN0IHsgdW5z aWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xNzsKCiAgICAgICAgc3RydWN0 IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xODsKCiAgICAgICAg c3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xOTsKCiAg ICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkaXZpc29yIDogNCwK ICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMjg7CiAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwogICAgICAgIH0gdGltZXJfZGNyOwoKICAg ICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzIw OwoKfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiMgMTkgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9hc20vcGFnZS5oIiAxCiMgMjAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAyCiMgNTAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgplbnVtIGZpeGVkX2FkZHJlc3NlcyB7CgogICAgICAg IEZJWF9BUElDX0JBU0UsCgoKICAgICAgICBGSVhfSU9fQVBJQ19CQVNFXzAsCiAgICAgICAgRklY X0lPX0FQSUNfQkFTRV9FTkQgPSBGSVhfSU9fQVBJQ19CQVNFXzAgKyA4IC0xLAojIDY4ICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9maXhtYXAuaCIKICAgICAgICBfX2Vu ZF9vZl9maXhlZF9hZGRyZXNzZXMKfTsKCmV4dGVybiB2b2lkIF9fc2V0X2ZpeG1hcCAoZW51bSBm aXhlZF9hZGRyZXNzZXMgaWR4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgbG9uZyBwaHlzLCBwZ3Byb3RfdCBmbGFncyk7CiMgOTQgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgpleHRlcm4gdm9pZCBfX3RoaXNf Zml4bWFwX2RvZXNfbm90X2V4aXN0KHZvaWQpOwoKCgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVk IGxvbmcgZml4X3RvX3ZpcnQoY29uc3QgdW5zaWduZWQgaW50IGlkeCkKewojIDExMiAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vZml4bWFwLmgiCiAgICAgICAgaWYgKGlk eCA+PSBfX2VuZF9vZl9maXhlZF9hZGRyZXNzZXMpCiAgICAgICAgICAgICAgICBfX3RoaXNfZml4 bWFwX2RvZXNfbm90X2V4aXN0KCk7CgogICAgICAgIHJldHVybiAoKDB4ZmZmZmUwMDBVTCkgLSAo KGlkeCkgPDwgMTIpKTsKfQojIDE4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2FzbS9wZ3RhYmxlLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L3RocmVhZHMuaCIgMQojIDE5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2FzbS9wZ3RhYmxlLmgiIDIKCgoKCgpleHRlcm4gcGdkX3Qgc3dhcHBlcl9wZ19kaXJbMTAy NF07CmV4dGVybiB2b2lkIHBhZ2luZ19pbml0KHZvaWQpOwojIDY3ICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIHBn a2Vybl9tYXNrOwojIDk1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9w Z3RhYmxlLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIGVtcHR5X3plcm9fcGFnZVsxMDI0XTsKIyAx MDkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3BndGFibGUuaCIKIyAx ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLTJsZXZlbC5o IiAxCiMgMzIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3BndGFibGUt MmxldmVsLmgiCnN0YXRpYyBpbmxpbmUgaW50IHBnZF9ub25lKHBnZF90IHBnZCkgeyByZXR1cm4g MDsgfQpzdGF0aWMgaW5saW5lIGludCBwZ2RfYmFkKHBnZF90IHBnZCkgeyByZXR1cm4gMDsgfQpz dGF0aWMgaW5saW5lIGludCBwZ2RfcHJlc2VudChwZ2RfdCBwZ2QpIHsgcmV0dXJuIDE7IH0KIyA1 MyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcGd0YWJsZS0ybGV2ZWwu aCIKc3RhdGljIGlubGluZSBwbWRfdCAqIHBtZF9vZmZzZXQocGdkX3QgKiBkaXIsIHVuc2lnbmVk IGxvbmcgYWRkcmVzcykKewogICAgICAgIHJldHVybiAocG1kX3QgKikgZGlyOwp9CiMgMTEwICIv dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDIKIyAyNDQg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3BndGFibGUuaCIKZXh0ZXJu IHVuc2lnbmVkIGxvbmcgcGcwWzEwMjRdOwojIDI2NSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQu MTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oIgpzdGF0aWMgaW5saW5lIGludCBwdGVfcmVhZChwdGVf dCBwdGUpIHsgcmV0dXJuIChwdGUpLnB0ZV9sb3cgJiAweDAwNDsgfQpzdGF0aWMgaW5saW5lIGlu dCBwdGVfZXhlYyhwdGVfdCBwdGUpIHsgcmV0dXJuIChwdGUpLnB0ZV9sb3cgJiAweDAwNDsgfQpz dGF0aWMgaW5saW5lIGludCBwdGVfZGlydHkocHRlX3QgcHRlKSB7IHJldHVybiAocHRlKS5wdGVf bG93ICYgMHgwNDA7IH0Kc3RhdGljIGlubGluZSBpbnQgcHRlX3lvdW5nKHB0ZV90IHB0ZSkgeyBy ZXR1cm4gKHB0ZSkucHRlX2xvdyAmIDB4MDIwOyB9CnN0YXRpYyBpbmxpbmUgaW50IHB0ZV93cml0 ZShwdGVfdCBwdGUpIHsgcmV0dXJuIChwdGUpLnB0ZV9sb3cgJiAweDAwMjsgfQoKc3RhdGljIGlu bGluZSBwdGVfdCBwdGVfcmRwcm90ZWN0KHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93ICY9IH4w eDAwNDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9leHByb3RlY3QocHRl X3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgJj0gfjB4MDA0OyByZXR1cm4gcHRlOyB9CnN0YXRpYyBp bmxpbmUgcHRlX3QgcHRlX21rY2xlYW4ocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgJj0gfjB4 MDQwOyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rb2xkKHB0ZV90IHB0 ZSkgeyAocHRlKS5wdGVfbG93ICY9IH4weDAyMDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5l IHB0ZV90IHB0ZV93cnByb3RlY3QocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgJj0gfjB4MDAy OyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rcmVhZChwdGVfdCBwdGUp IHsgKHB0ZSkucHRlX2xvdyB8PSAweDAwNDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0 ZV90IHB0ZV9ta2V4ZWMocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgfD0gMHgwMDQ7IHJldHVy biBwdGU7IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWtkaXJ0eShwdGVfdCBwdGUpIHsgKHB0 ZSkucHRlX2xvdyB8PSAweDA0MDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0 ZV9ta3lvdW5nKHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93IHw9IDB4MDIwOyByZXR1cm4gcHRl OyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rd3JpdGUocHRlX3QgcHRlKSB7IChwdGUpLnB0 ZV9sb3cgfD0gMHgwMDI7IHJldHVybiBwdGU7IH0KCnN0YXRpYyBpbmxpbmUgaW50IHB0ZXBfdGVz dF9hbmRfY2xlYXJfZGlydHkocHRlX3QgKnB0ZXApIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2Jp dCg2LCBwdGVwKTsgfQpzdGF0aWMgaW5saW5lIGludCBwdGVwX3Rlc3RfYW5kX2NsZWFyX3lvdW5n KHB0ZV90ICpwdGVwKSB7IHJldHVybiB0ZXN0X2FuZF9jbGVhcl9iaXQoNSwgcHRlcCk7IH0Kc3Rh dGljIGlubGluZSB2b2lkIHB0ZXBfc2V0X3dycHJvdGVjdChwdGVfdCAqcHRlcCkgeyBjbGVhcl9i aXQoMSwgcHRlcCk7IH0Kc3RhdGljIGlubGluZSB2b2lkIHB0ZXBfbWtkaXJ0eShwdGVfdCAqcHRl cCkgeyBzZXRfYml0KDYsIHB0ZXApOyB9CiMgMjk3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiCnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21vZGlmeShw dGVfdCBwdGUsIHBncHJvdF90IG5ld3Byb3QpCnsKICAgICAgICBwdGUucHRlX2xvdyAmPSAoKH4o KDFVTCA8PCAxMiktMSkpIHwgMHgwMjAgfCAweDA0MCk7CiAgICAgICAgcHRlLnB0ZV9sb3cgfD0g KChuZXdwcm90KS5wZ3Byb3QpOwogICAgICAgIHJldHVybiBwdGU7Cn0KIyAyNiAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyAyNyAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbS5oIiAyCiMgNDMgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW0uaCIKc3RydWN0IHZtX2FyZWFfc3RydWN0IHsK ICAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICogdm1fbW07CiAgICAgICAgdW5zaWduZWQgbG9uZyB2 bV9zdGFydDsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtX2VuZDsKCgogICAgICAgIHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1fbmV4dDsKCiAgICAgICAgcGdwcm90X3Qgdm1fcGFnZV9wcm90Owog ICAgICAgIHVuc2lnbmVkIGxvbmcgdm1fZmxhZ3M7CgogICAgICAgIHJiX25vZGVfdCB2bV9yYjsK CgoKCgoKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtX25leHRfc2hhcmU7CiAgICAg ICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICoqdm1fcHByZXZfc2hhcmU7CgoKICAgICAgICBzdHJ1 Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgKiB2bV9vcHM7CgoKICAgICAgICB1bnNpZ25lZCBsb25n IHZtX3Bnb2ZmOwoKICAgICAgICBzdHJ1Y3QgZmlsZSAqIHZtX2ZpbGU7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyB2bV9yYWVuZDsKICAgICAgICB2b2lkICogdm1fcHJpdmF0ZV9kYXRhOwp9OwojIDEx NyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbS5oIgpleHRlcm4g cGdwcm90X3QgcHJvdGVjdGlvbl9tYXBbMTZdOwoKCgoKCgoKc3RydWN0IHZtX29wZXJhdGlvbnNf c3RydWN0IHsKICAgICAgICB2b2lkICgqb3Blbikoc3RydWN0IHZtX2FyZWFfc3RydWN0ICogYXJl YSk7CiAgICAgICAgdm9pZCAoKmNsb3NlKShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBhcmVhKTsK ICAgICAgICBzdHJ1Y3QgcGFnZSAqICgqbm9wYWdlKShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBh cmVhLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIGludCB3cml0ZV9hY2Nlc3MpOwp9OwojIDE0NiAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbS5oIgp0eXBlZGVmIHN0 cnVjdCBwYWdlIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAgICAgICAgc3RydWN0 IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpbmRleDsKICAg ICAgICBzdHJ1Y3QgcGFnZSAqbmV4dF9oYXNoOwoKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAg ICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxydTsK CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKICAgICAgICBzdHJ1Y3QgcGFnZSAqKnBw cmV2X2hhc2g7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYnVmZmVyczsKICAgICAgICB2 b2lkICp2aXJ0dWFsOwoKICAgICAgICBzdHJ1Y3Qgem9uZV9zdHJ1Y3QgKnpvbmU7Cn0gbWVtX21h cF90OwojIDI5NiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbS5o IgpleHRlcm4gdm9pZCBfX3NldF9wYWdlX2RpcnR5KHN0cnVjdCBwYWdlICopOwoKc3RhdGljIGlu bGluZSB2b2lkIHNldF9wYWdlX2RpcnR5KHN0cnVjdCBwYWdlICogcGFnZSkKewogICAgICAgIGlm ICghdGVzdF9hbmRfc2V0X2JpdCg0LCAmcGFnZS0+ZmxhZ3MpKQogICAgICAgICAgICAgICAgX19z ZXRfcGFnZV9kaXJ0eShwYWdlKTsKfQojIDM2MCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9saW51eC9tbS5oIgpleHRlcm4gbWVtX21hcF90ICogbWVtX21hcF9SOGQyZGI0ZjI7 CgoKCgoKCgpleHRlcm4gc3RydWN0IHBhZ2UgKiBfYWxsb2NfcGFnZXNfUmNmYTNlYTg3KHVuc2ln bmVkIGludCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKSBfX2F0dHJpYnV0ZV9fKChyZWdw YXJtKDMpKSk7CmV4dGVybiBzdHJ1Y3QgcGFnZSAqIF9fYWxsb2NfcGFnZXNfUmNjZGNhMzUwKHVu c2lnbmVkIGludCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLCB6b25lbGlzdF90ICp6b25l bGlzdCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gc3RydWN0IHBhZ2UgKiBh bGxvY19wYWdlc19ub2RlX1I2ZGVlMDVmMyhpbnQgbmlkLCB1bnNpZ25lZCBpbnQgZ2ZwX21hc2ss IHVuc2lnbmVkIGludCBvcmRlcik7CgpzdGF0aWMgaW5saW5lIHN0cnVjdCBwYWdlICogYWxsb2Nf cGFnZXModW5zaWduZWQgaW50IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpCnsKCgoKICAg ICAgICBpZiAob3JkZXIgPj0gMTApCiAgICAgICAgICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7 CiAgICAgICAgcmV0dXJuIF9hbGxvY19wYWdlc19SY2ZhM2VhODcoZ2ZwX21hc2ssIG9yZGVyKTsK fQoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBfX2dldF9mcmVlX3BhZ2VzX1I0Nzg0ZTQyNCh1bnNp Z25lZCBpbnQgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcikgX19hdHRyaWJ1dGVfXygocmVn cGFybSgzKSkpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBnZXRfemVyb2VkX3BhZ2VfUjBjMjE4OGM3 KHVuc2lnbmVkIGludCBnZnBfbWFzaykgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwojIDQw MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbS5oIgpleHRlcm4g dm9pZCBfX2ZyZWVfcGFnZXNfUmY1OWU5NDAyKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBp bnQgb3JkZXIpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgZnJlZV9w YWdlc19SOTk0MWNjYjgodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBpbnQgb3JkZXIpIF9f YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCgoKCmV4dGVybiB2b2lkIHNob3dfZnJlZV9hcmVh cyh2b2lkKTsKZXh0ZXJuIHZvaWQgc2hvd19mcmVlX2FyZWFzX25vZGUocGdfZGF0YV90ICpwZ2Rh dCk7CgpleHRlcm4gdm9pZCBjbGVhcl9wYWdlX3RhYmxlcyhzdHJ1Y3QgbW1fc3RydWN0ICosIHVu c2lnbmVkIGxvbmcsIGludCk7CgpzdHJ1Y3QgcGFnZSAqIHNobWVtX25vcGFnZShzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKiB2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgaW50IG5vX3NoYXJlKTsK c3RydWN0IGZpbGUgKnNobWVtX2ZpbGVfc2V0dXBfUjhhZThiMThmKGNoYXIgKiBuYW1lLCBsb2Zm X3Qgc2l6ZSk7CmV4dGVybiB2b2lkIHNobWVtX2xvY2soc3RydWN0IGZpbGUgKiBmaWxlLCBpbnQg bG9jayk7CmV4dGVybiBpbnQgc2htZW1femVyb19zZXR1cChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg Kik7CgpleHRlcm4gdm9pZCB6YXBfcGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5z aWduZWQgbG9uZyBhZGRyZXNzLCB1bnNpZ25lZCBsb25nIHNpemUpOwpleHRlcm4gaW50IGNvcHlf cGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICpkc3QsIHN0cnVjdCBtbV9zdHJ1Y3QgKnNyYywg c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwpleHRlcm4gaW50IHJlbWFwX3BhZ2VfcmFuZ2Vf UjY5ZDAxZTczKHVuc2lnbmVkIGxvbmcgZnJvbSwgdW5zaWduZWQgbG9uZyB0bywgdW5zaWduZWQg bG9uZyBzaXplLCBwZ3Byb3RfdCBwcm90KTsKZXh0ZXJuIGludCB6ZXJvbWFwX3BhZ2VfcmFuZ2Uo dW5zaWduZWQgbG9uZyBmcm9tLCB1bnNpZ25lZCBsb25nIHNpemUsIHBncHJvdF90IHByb3QpOwoK ZXh0ZXJuIGludCB2bXRydW5jYXRlX1I1NDE2MTI3YyhzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgbG9m Zl90IG9mZnNldCk7CmV4dGVybiBwbWRfdCAqX19wbWRfYWxsb2Moc3RydWN0IG1tX3N0cnVjdCAq bW0sIHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykgX19hdHRyaWJ1dGVfXygocmVn cGFybSgzKSkpOwpleHRlcm4gcHRlX3QgKnB0ZV9hbGxvYyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwg cG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt KDMpKSk7CmV4dGVybiBpbnQgaGFuZGxlX21tX2ZhdWx0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLHN0 cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIGludCB3cml0 ZV9hY2Nlc3MpOwpleHRlcm4gaW50IG1ha2VfcGFnZXNfcHJlc2VudCh1bnNpZ25lZCBsb25nIGFk ZHIsIHVuc2lnbmVkIGxvbmcgZW5kKTsKZXh0ZXJuIGludCBhY2Nlc3NfcHJvY2Vzc192bShzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnRzaywgdW5zaWduZWQgbG9uZyBhZGRyLCB2b2lkICpidWYsIGludCBs ZW4sIGludCB3cml0ZSk7CmV4dGVybiBpbnQgcHRyYWNlX3JlYWRkYXRhKHN0cnVjdCB0YXNrX3N0 cnVjdCAqdHNrLCB1bnNpZ25lZCBsb25nIHNyYywgY2hhciAqZHN0LCBpbnQgbGVuKTsKZXh0ZXJu IGludCBwdHJhY2Vfd3JpdGVkYXRhKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBjaGFyICogc3Jj LCB1bnNpZ25lZCBsb25nIGRzdCwgaW50IGxlbik7CmV4dGVybiBpbnQgcHRyYWNlX2F0dGFjaChz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayk7CmV4dGVybiBpbnQgcHRyYWNlX2RldGFjaChzdHJ1Y3Qg dGFza19zdHJ1Y3QgKiwgdW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgcHRyYWNlX2Rpc2FibGUo c3RydWN0IHRhc2tfc3RydWN0ICopOwoKCgoKCgpzdGF0aWMgaW5saW5lIHBtZF90ICpwbWRfYWxs b2Moc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVz cykKewogICAgICAgIGlmIChwZ2Rfbm9uZSgqcGdkKSkKICAgICAgICAgICAgICAgIHJldHVybiBf X3BtZF9hbGxvYyhtbSwgcGdkLCBhZGRyZXNzKTsKICAgICAgICByZXR1cm4gcG1kX29mZnNldChw Z2QsIGFkZHJlc3MpOwp9CgpleHRlcm4gaW50IHBndF9jYWNoZV93YXRlclsyXTsKZXh0ZXJuIGlu dCBjaGVja19wZ3RfY2FjaGUodm9pZCk7CgpleHRlcm4gdm9pZCBmcmVlX2FyZWFfaW5pdCh1bnNp Z25lZCBsb25nICogem9uZXNfc2l6ZSk7CmV4dGVybiB2b2lkIGZyZWVfYXJlYV9pbml0X25vZGUo aW50IG5pZCwgcGdfZGF0YV90ICpwZ2RhdCwgc3RydWN0IHBhZ2UgKnBtYXAsCiAgICAgICAgdW5z aWduZWQgbG9uZyAqIHpvbmVzX3NpemUsIHVuc2lnbmVkIGxvbmcgem9uZV9zdGFydF9wYWRkciwK ICAgICAgICB1bnNpZ25lZCBsb25nICp6aG9sZXNfc2l6ZSk7CmV4dGVybiB2b2lkIG1lbV9pbml0 KHZvaWQpOwpleHRlcm4gdm9pZCBzaG93X21lbSh2b2lkKTsKZXh0ZXJuIHZvaWQgc2lfbWVtaW5m b19SYjNhMzA3YzYoc3RydWN0IHN5c2luZm8gKiB2YWwpOwpleHRlcm4gdm9pZCBzd2FwaW5fcmVh ZGFoZWFkKHN3cF9lbnRyeV90KTsKCmV4dGVybiBzdHJ1Y3QgYWRkcmVzc19zcGFjZSBzd2FwcGVy X3NwYWNlOwoKCnN0YXRpYyBpbmxpbmUgaW50IGlzX3BhZ2VfY2FjaGVfZnJlZWFibGUoc3RydWN0 IHBhZ2UgKiBwYWdlKQp7CiAgICAgICAgcmV0dXJuICgoJihwYWdlKS0+Y291bnQpLT5jb3VudGVy KSAtICEhcGFnZS0+YnVmZmVycyA9PSAxOwp9CgoKCgoKc3RhdGljIGlubGluZSBpbnQgZXhjbHVz aXZlX3N3YXBfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKewogICAgICAgIGlmICghKF9fYnVpbHRp bl9jb25zdGFudF9wKDApID8gY29uc3RhbnRfdGVzdF9iaXQoKDApLCgmKHBhZ2UpLT5mbGFncykp IDogdmFyaWFibGVfdGVzdF9iaXQoKDApLCgmKHBhZ2UpLT5mbGFncykpKSkKICAgICAgICAgICAg ICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIiKTsKICAgICAgICBpZiAo ISgocGFnZSktPm1hcHBpbmcgPT0gJnN3YXBwZXJfc3BhY2UpKQogICAgICAgICAgICAgICAgcmV0 dXJuIDA7CiAgICAgICAgaWYgKCgoJihwYWdlKS0+Y291bnQpLT5jb3VudGVyKSAtICEhcGFnZS0+ YnVmZmVycyAhPSAyKQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgcmV0dXJuIHN3 YXBfY291bnQocGFnZSkgPT0gMTsKfQoKZXh0ZXJuIHZvaWQgX19mcmVlX3B0ZShwdGVfdCk7CgoK ZXh0ZXJuIHZvaWQgbG9ja192bWFfbWFwcGluZ3Moc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwpl eHRlcm4gdm9pZCB1bmxvY2tfdm1hX21hcHBpbmdzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsK ZXh0ZXJuIHZvaWQgaW5zZXJ0X3ZtX3N0cnVjdChzdHJ1Y3QgbW1fc3RydWN0ICosIHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgX19pbnNlcnRfdm1fc3RydWN0KHN0cnVjdCBt bV9zdHJ1Y3QgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwpleHRlcm4gdm9pZCBidWlsZF9t bWFwX3JiKHN0cnVjdCBtbV9zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIGV4aXRfbW1hcChzdHJ1Y3Qg bW1fc3RydWN0ICopOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZ2V0X3VubWFwcGVkX2FyZWFfUmIw NDFmNGYyKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2ln bmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZG9fbW1hcF9w Z29mZl9SMzU2YzMxMjYoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgYWRkciwKICAg ICAgICB1bnNpZ25lZCBsb25nIGxlbiwgdW5zaWduZWQgbG9uZyBwcm90LAogICAgICAgIHVuc2ln bmVkIGxvbmcgZmxhZywgdW5zaWduZWQgbG9uZyBwZ29mZik7CgpzdGF0aWMgaW5saW5lIHVuc2ln bmVkIGxvbmcgZG9fbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgbG9uZyBhZGRyLAog ICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuLCB1bnNpZ25lZCBsb25nIHByb3QsCiAgICAgICAgdW5z aWduZWQgbG9uZyBmbGFnLCB1bnNpZ25lZCBsb25nIG9mZnNldCkKewogICAgICAgIHVuc2lnbmVk IGxvbmcgcmV0ID0gLTIyOwogICAgICAgIGlmICgob2Zmc2V0ICsgKCgobGVuKSsoMVVMIDw8IDEy KS0xKSYofigoMVVMIDw8IDEyKS0xKSkpKSA8IG9mZnNldCkKICAgICAgICAgICAgICAgIGdvdG8g b3V0OwogICAgICAgIGlmICghKG9mZnNldCAmIH4ofigoMVVMIDw8IDEyKS0xKSkpKQogICAgICAg ICAgICAgICAgcmV0ID0gZG9fbW1hcF9wZ29mZl9SMzU2YzMxMjYoZmlsZSwgYWRkciwgbGVuLCBw cm90LCBmbGFnLCBvZmZzZXQgPj4gMTIpOwpvdXQ6CiAgICAgICAgcmV0dXJuIHJldDsKfQoKZXh0 ZXJuIGludCBkb19tdW5tYXBfUjFjMzYwMTMwKHN0cnVjdCBtbV9zdHJ1Y3QgKiwgdW5zaWduZWQg bG9uZywgc2l6ZV90KTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGRvX2Jya19SOWVlY2RlMTYodW5z aWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CgpzdGF0aWMgaW5saW5lIHZvaWQgX192bWFfdW5s aW5rKHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogdm1hLCBz dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBwcmV2KQp7CiAgICAgICAgcHJldi0+dm1fbmV4dCA9IHZt YS0+dm1fbmV4dDsKICAgICAgICByYl9lcmFzZSgmdm1hLT52bV9yYiwgJm1tLT5tbV9yYik7CiAg ICAgICAgaWYgKG1tLT5tbWFwX2NhY2hlID09IHZtYSkKICAgICAgICAgICAgICAgIG1tLT5tbWFw X2NhY2hlID0gcHJldjsKfQoKc3RhdGljIGlubGluZSBpbnQgY2FuX3ZtYV9tZXJnZShzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKiB2bWEsIHVuc2lnbmVkIGxvbmcgdm1fZmxhZ3MpCnsKICAgICAgICBp ZiAoIXZtYS0+dm1fZmlsZSAmJiB2bWEtPnZtX2ZsYWdzID09IHZtX2ZsYWdzKQogICAgICAgICAg ICAgICAgcmV0dXJuIDE7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJuIDA7Cn0K CnN0cnVjdCB6b25lX3Q7CgpleHRlcm4gdm9pZCByZW1vdmVfaW5vZGVfcGFnZShzdHJ1Y3QgcGFn ZSAqKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcGFnZV91bnVzZShzdHJ1Y3QgcGFnZSAqKTsKZXh0 ZXJuIHZvaWQgdHJ1bmNhdGVfaW5vZGVfcGFnZXNfUjU0ZjQ5OGNlKHN0cnVjdCBhZGRyZXNzX3Nw YWNlICosIGxvZmZfdCk7CgoKZXh0ZXJuIGludCBmaWxlbWFwX3N5bmNfUmMxM2QwMmYxKHN0cnVj dCB2bV9hcmVhX3N0cnVjdCAqLCB1bnNpZ25lZCBsb25nLCBzaXplX3QsIHVuc2lnbmVkIGludCk7 CmV4dGVybiBzdHJ1Y3QgcGFnZSAqZmlsZW1hcF9ub3BhZ2VfUjRkNThmZmFmKHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqLCB1bnNpZ25lZCBsb25nLCBpbnQpOwojIDU3MSAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9tbS5oIgpzdGF0aWMgaW5saW5lIGludCBleHBhbmRf c3RhY2soc3RydWN0IHZtX2FyZWFfc3RydWN0ICogdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3Mp CnsKICAgICAgICB1bnNpZ25lZCBsb25nIGdyb3c7CgoKCgoKCiAgICAgICAgYWRkcmVzcyAmPSAo figoMVVMIDw8IDEyKS0xKSk7CiAgICAgICAgZ3JvdyA9ICh2bWEtPnZtX3N0YXJ0IC0gYWRkcmVz cykgPj4gMTI7CiAgICAgICAgaWYgKHZtYS0+dm1fZW5kIC0gYWRkcmVzcyA+IGdldF9jdXJyZW50 KCktPnJsaW1bM10ucmxpbV9jdXIgfHwKICAgICAgICAgICAgKCh2bWEtPnZtX21tLT50b3RhbF92 bSArIGdyb3cpIDw8IDEyKSA+IGdldF9jdXJyZW50KCktPnJsaW1bOV0ucmxpbV9jdXIpCiAgICAg ICAgICAgICAgICByZXR1cm4gLTEyOwogICAgICAgICh2b2lkKSgmdm1hLT52bV9tbS0+cGFnZV90 YWJsZV9sb2NrKTsKICAgICAgICB2bWEtPnZtX3N0YXJ0ID0gYWRkcmVzczsKICAgICAgICB2bWEt PnZtX3Bnb2ZmIC09IGdyb3c7CiAgICAgICAgdm1hLT52bV9tbS0+dG90YWxfdm0gKz0gZ3JvdzsK ICAgICAgICBpZiAodm1hLT52bV9mbGFncyAmIDB4MDAwMDIwMDApCiAgICAgICAgICAgICAgICB2 bWEtPnZtX21tLT5sb2NrZWRfdm0gKz0gZ3JvdzsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAg ICAgICAgcmV0dXJuIDA7Cn0KCgpleHRlcm4gc3RydWN0IHZtX2FyZWFfc3RydWN0ICogZmluZF92 bWFfUmU3MWMxMGUwKHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSwgdW5zaWduZWQgbG9uZyBhZGRyKTsK ZXh0ZXJuIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIGZpbmRfdm1hX3ByZXYoc3RydWN0IG1tX3N0 cnVjdCAqIG1tLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnBwcmV2KTsKCgoKc3Rh dGljIGlubGluZSBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBmaW5kX3ZtYV9pbnRlcnNlY3Rpb24o c3RydWN0IG1tX3N0cnVjdCAqIG1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0X2FkZHIsIHVuc2lnbmVk IGxvbmcgZW5kX2FkZHIpCnsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEgPSBm aW5kX3ZtYV9SZTcxYzEwZTAobW0sc3RhcnRfYWRkcik7CgogICAgICAgIGlmICh2bWEgJiYgZW5k X2FkZHIgPD0gdm1hLT52bV9zdGFydCkKICAgICAgICAgICAgICAgIHZtYSA9ICgodm9pZCAqKTAp OwogICAgICAgIHJldHVybiB2bWE7Cn0KCmV4dGVybiBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKmZp bmRfZXh0ZW5kX3ZtYShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyKTsK IyAxNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zbGFiLmgiIDIK IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NhY2hlLmgiIDEK IyAxNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zbGFiLmgiIDIK IyA0OCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zbGFiLmgiCmV4 dGVybiB2b2lkIGttZW1fY2FjaGVfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQga21lbV9jYWNoZV9z aXplc19pbml0KHZvaWQpOwoKZXh0ZXJuIGttZW1fY2FjaGVfdCAqa21lbV9maW5kX2dlbmVyYWxf Y2FjaGVwX1I1MmJiNjg5MShzaXplX3QsIGludCBnZnBmbGFncyk7CmV4dGVybiBrbWVtX2NhY2hl X3QgKmttZW1fY2FjaGVfY3JlYXRlX1JkMWMwYjRlNihjb25zdCBjaGFyICosIHNpemVfdCwgc2l6 ZV90LCB1bnNpZ25lZCBsb25nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2b2lkICgqKSh2b2lkICosIGttZW1fY2FjaGVfdCAqLCB1bnNpZ25lZCBsb25nKSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKikodm9pZCAqLCBrbWVtX2Nh Y2hlX3QgKiwgdW5zaWduZWQgbG9uZykpOwpleHRlcm4gaW50IGttZW1fY2FjaGVfZGVzdHJveV9S ZGY4M2M2OTIoa21lbV9jYWNoZV90ICopOwpleHRlcm4gaW50IGttZW1fY2FjaGVfc2hyaW5rX1Ix MmY3Y2YwNChrbWVtX2NhY2hlX3QgKik7CmV4dGVybiB2b2lkICprbWVtX2NhY2hlX2FsbG9jX1I3 NTgxMDk1NihrbWVtX2NhY2hlX3QgKiwgaW50KTsKZXh0ZXJuIHZvaWQga21lbV9jYWNoZV9mcmVl X1I4OTFmMjY4NihrbWVtX2NhY2hlX3QgKiwgdm9pZCAqKTsKCmV4dGVybiB2b2lkICprbWFsbG9j X1I5M2Q0Y2ZlNihzaXplX3QsIGludCk7CmV4dGVybiB2b2lkIGtmcmVlX1IwMzdhMGNiYShjb25z dCB2b2lkICopOwoKZXh0ZXJuIGludCBrbWVtX2NhY2hlX3JlYXAoaW50KSBfX2F0dHJpYnV0ZV9f KChyZWdwYXJtKDMpKSk7CmV4dGVybiBpbnQgc2xhYmluZm9fcmVhZF9wcm9jKGNoYXIgKnBhZ2Us IGNoYXIgKipzdGFydCwgb2ZmX3Qgb2ZmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgY291bnQsIGludCAqZW9mLCB2b2lkICpkYXRhKTsKZXh0ZXJuIGludCBzbGFiaW5mb193 cml0ZV9wcm9jKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyICpidWZmZXIsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgY291bnQsIHZvaWQgKmRhdGEpOwoKCmV4 dGVybiBrbWVtX2NhY2hlX3QgKnZtX2FyZWFfY2FjaGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpt bV9jYWNoZXA7CmV4dGVybiBrbWVtX2NhY2hlX3QgKm5hbWVzX2NhY2hlcF9SZDI1NDY5YjQ7CmV4 dGVybiBrbWVtX2NhY2hlX3QgKmZpbGVzX2NhY2hlcDsKZXh0ZXJuIGttZW1fY2FjaGVfdCAqZmls cF9jYWNoZXA7CmV4dGVybiBrbWVtX2NhY2hlX3QgKmRxdW90X2NhY2hlcDsKZXh0ZXJuIGttZW1f Y2FjaGVfdCAqYmhfY2FjaGVwX1JkY2MwYmIzNzsKZXh0ZXJuIGttZW1fY2FjaGVfdCAqZnNfY2Fj aGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpzaWdhY3RfY2FjaGVwOwojIDMxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wY2kuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3NjYXR0ZXJsaXN0LmgiIDEKCgoKc3RydWN0IHNjYXR0 ZXJsaXN0IHsKICAgIGNoYXIgKiBhZGRyZXNzOwogICAgY2hhciAqIGFsdF9hZGRyZXNzOwoKICAg IHVuc2lnbmVkIGludCBsZW5ndGg7Cn07CiMgMzIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvYXNtL3BjaS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9zdHJpbmcuaCIgMQojIDMzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9p bmNsdWRlL2FzbS9wY2kuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1 ZGUvYXNtL2lvLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9hc20vaW8uaCIgMgojIDg1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2Fz bS9pby5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgaW5iKHVuc2lnbmVkIHNob3J0IHBv cnQpIHsgdW5zaWduZWQgY2hhciBfdjsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJpbiIgImIiICIg JSIgInciICIxLCUiICIiICIwIiA6ICI9YSIgKF92KSA6ICJOZCIgKHBvcnQpICk7IHJldHVybiBf djsgfSBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgaW5iX3AodW5zaWduZWQgc2hvcnQgcG9y dCkgeyB1bnNpZ25lZCBjaGFyIF92OyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImluIiAiYiIgIiAl IiAidyIgIjEsJSIgIiIgIjAiICJcbm91dGIgJSVhbCwkMHg4MCIgOiAiPWEiIChfdikgOiAiTmQi IChwb3J0KSApOyByZXR1cm4gX3Y7IH0KCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHNob3J0IGlu dyh1bnNpZ25lZCBzaG9ydCBwb3J0KSB7IHVuc2lnbmVkIHNob3J0IF92OyBfX2FzbV9fIF9fdm9s YXRpbGVfXyAoImluIiAidyIgIiAlIiAidyIgIjEsJSIgIiIgIjAiIDogIj1hIiAoX3YpIDogIk5k IiAocG9ydCkgKTsgcmV0dXJuIF92OyB9IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgc2hvcnQgaW53 X3AodW5zaWduZWQgc2hvcnQgcG9ydCkgeyB1bnNpZ25lZCBzaG9ydCBfdjsgX19hc21fXyBfX3Zv bGF0aWxlX18gKCJpbiIgInciICIgJSIgInciICIxLCUiICIiICIwIiAiXG5vdXRiICUlYWwsJDB4 ODAiIDogIj1hIiAoX3YpIDogIk5kIiAocG9ydCkgKTsgcmV0dXJuIF92OyB9CgoKc3RhdGljIGlu bGluZSB1bnNpZ25lZCBpbnQgaW5sKHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgdW5zaWduZWQgaW50 IF92OyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImluIiAibCIgIiAlIiAidyIgIjEsJSIgIiIgIjAi IDogIj1hIiAoX3YpIDogIk5kIiAocG9ydCkgKTsgcmV0dXJuIF92OyB9IHN0YXRpYyBpbmxpbmUg dW5zaWduZWQgaW50IGlubF9wKHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgdW5zaWduZWQgaW50IF92 OyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImluIiAibCIgIiAlIiAidyIgIjEsJSIgIiIgIjAiICJc bm91dGIgJSVhbCwkMHg4MCIgOiAiPWEiIChfdikgOiAiTmQiIChwb3J0KSApOyByZXR1cm4gX3Y7 IH0KCgpzdGF0aWMgaW5saW5lIHZvaWQgb3V0Yih1bnNpZ25lZCBjaGFyIHZhbHVlLCB1bnNpZ25l ZCBzaG9ydCBwb3J0KSB7IF9fYXNtX18gX192b2xhdGlsZV9fICgib3V0IiAiYiIgIiAlIiAiYiIg IjAsJSIgInciICIxIiA6IDogImEiICh2YWx1ZSksICJOZCIgKHBvcnQpKTsgfSBzdGF0aWMgaW5s aW5lIHZvaWQgb3V0Yl9wKHVuc2lnbmVkIGNoYXIgdmFsdWUsIHVuc2lnbmVkIHNob3J0IHBvcnQp IHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJvdXQiICJiIiAiICUiICJiIiAiMCwlIiAidyIgIjEi ICJcbm91dGIgJSVhbCwkMHg4MCIgOiA6ICJhIiAodmFsdWUpLCAiTmQiIChwb3J0KSk7fQpzdGF0 aWMgaW5saW5lIHZvaWQgb3V0dyh1bnNpZ25lZCBzaG9ydCB2YWx1ZSwgdW5zaWduZWQgc2hvcnQg cG9ydCkgeyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIm91dCIgInciICIgJSIgInciICIwLCUiICJ3 IiAiMSIgOiA6ICJhIiAodmFsdWUpLCAiTmQiIChwb3J0KSk7IH0gc3RhdGljIGlubGluZSB2b2lk IG91dHdfcCh1bnNpZ25lZCBzaG9ydCB2YWx1ZSwgdW5zaWduZWQgc2hvcnQgcG9ydCkgeyBfX2Fz bV9fIF9fdm9sYXRpbGVfXyAoIm91dCIgInciICIgJSIgInciICIwLCUiICJ3IiAiMSIgIlxub3V0 YiAlJWFsLCQweDgwIiA6IDogImEiICh2YWx1ZSksICJOZCIgKHBvcnQpKTt9CnN0YXRpYyBpbmxp bmUgdm9pZCBvdXRsKHVuc2lnbmVkIGludCB2YWx1ZSwgdW5zaWduZWQgc2hvcnQgcG9ydCkgeyBf X2FzbV9fIF9fdm9sYXRpbGVfXyAoIm91dCIgImwiICIgJSIgIjAsJSIgInciICIxIiA6IDogImEi ICh2YWx1ZSksICJOZCIgKHBvcnQpKTsgfSBzdGF0aWMgaW5saW5lIHZvaWQgb3V0bF9wKHVuc2ln bmVkIGludCB2YWx1ZSwgdW5zaWduZWQgc2hvcnQgcG9ydCkgeyBfX2FzbV9fIF9fdm9sYXRpbGVf XyAoIm91dCIgImwiICIgJSIgIjAsJSIgInciICIxIiAiXG5vdXRiICUlYWwsJDB4ODAiIDogOiAi YSIgKHZhbHVlKSwgIk5kIiAocG9ydCkpO30KCnN0YXRpYyBpbmxpbmUgdm9pZCBpbnNiKHVuc2ln bmVkIHNob3J0IHBvcnQsIHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBsb25nIGNvdW50KSB7IF9fYXNt X18gX192b2xhdGlsZV9fICgicmVwIDsgaW5zIiAiYiIgOiAiPUQiIChhZGRyKSwgIj1jIiAoY291 bnQpIDogImQiIChwb3J0KSwiMCIgKGFkZHIpLCIxIiAoY291bnQpKTsgfQpzdGF0aWMgaW5saW5l IHZvaWQgaW5zdyh1bnNpZ25lZCBzaG9ydCBwb3J0LCB2b2lkICogYWRkciwgdW5zaWduZWQgbG9u ZyBjb3VudCkgeyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoInJlcCA7IGlucyIgInciIDogIj1EIiAo YWRkciksICI9YyIgKGNvdW50KSA6ICJkIiAocG9ydCksIjAiIChhZGRyKSwiMSIgKGNvdW50KSk7 IH0Kc3RhdGljIGlubGluZSB2b2lkIGluc2wodW5zaWduZWQgc2hvcnQgcG9ydCwgdm9pZCAqIGFk ZHIsIHVuc2lnbmVkIGxvbmcgY291bnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJyZXAgOyBp bnMiICJsIiA6ICI9RCIgKGFkZHIpLCAiPWMiIChjb3VudCkgOiAiZCIgKHBvcnQpLCIwIiAoYWRk ciksIjEiIChjb3VudCkpOyB9CgpzdGF0aWMgaW5saW5lIHZvaWQgb3V0c2IodW5zaWduZWQgc2hv cnQgcG9ydCwgY29uc3Qgdm9pZCAqIGFkZHIsIHVuc2lnbmVkIGxvbmcgY291bnQpIHsgX19hc21f XyBfX3ZvbGF0aWxlX18gKCJyZXAgOyBvdXRzIiAiYiIgOiAiPVMiIChhZGRyKSwgIj1jIiAoY291 bnQpIDogImQiIChwb3J0KSwiMCIgKGFkZHIpLCIxIiAoY291bnQpKTsgfQpzdGF0aWMgaW5saW5l IHZvaWQgb3V0c3codW5zaWduZWQgc2hvcnQgcG9ydCwgY29uc3Qgdm9pZCAqIGFkZHIsIHVuc2ln bmVkIGxvbmcgY291bnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJyZXAgOyBvdXRzIiAidyIg OiAiPVMiIChhZGRyKSwgIj1jIiAoY291bnQpIDogImQiIChwb3J0KSwiMCIgKGFkZHIpLCIxIiAo Y291bnQpKTsgfQpzdGF0aWMgaW5saW5lIHZvaWQgb3V0c2wodW5zaWduZWQgc2hvcnQgcG9ydCwg Y29uc3Qgdm9pZCAqIGFkZHIsIHVuc2lnbmVkIGxvbmcgY291bnQpIHsgX19hc21fXyBfX3ZvbGF0 aWxlX18gKCJyZXAgOyBvdXRzIiAibCIgOiAiPVMiIChhZGRyKSwgIj1jIiAoY291bnQpIDogImQi IChwb3J0KSwiMCIgKGFkZHIpLCIxIiAoY291bnQpKTsgfQoKCgoKCiMgMSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC92bWFsbG9jLmgiIDEKCgoKIyAxICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDEKIyA1ICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3ZtYWxsb2MuaCIgMgojIDEgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvbW0uaCIgMQojIDYgIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdm1hbGxvYy5oIiAyCiMgMSAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMgNyAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC92bWFsbG9jLmgiIDIKCiMgMSAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAxCiMgOSAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC92bWFsbG9jLmgiIDIKCgoK CgpzdHJ1Y3Qgdm1fc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAg IHZvaWQgKiBhZGRyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZTsKICAgICAgICBzdHJ1Y3Qg dm1fc3RydWN0ICogbmV4dDsKfTsKCmV4dGVybiBzdHJ1Y3Qgdm1fc3RydWN0ICogZ2V0X3ZtX2Fy ZWEgKHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyBmbGFncyk7CmV4dGVybiB2b2lk IHZmcmVlX1IyZmQxZDgxYyh2b2lkICogYWRkcik7CmV4dGVybiB2b2lkICogX192bWFsbG9jX1I3 OTk5NWM1YiAodW5zaWduZWQgbG9uZyBzaXplLCBpbnQgZ2ZwX21hc2ssIHBncHJvdF90IHByb3Qp OwpleHRlcm4gbG9uZyB2cmVhZChjaGFyICpidWYsIGNoYXIgKmFkZHIsIHVuc2lnbmVkIGxvbmcg Y291bnQpOwpleHRlcm4gdm9pZCB2bWZyZWVfYXJlYV9wYWdlcyh1bnNpZ25lZCBsb25nIGFkZHJl c3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiBpbnQgdm1hbGxvY19hcmVhX3BhZ2VzKHVu c2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgbG9uZyBzaXplLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgZ2ZwX21hc2ssIHBncHJvdF90IHByb3QpOwoKCgoKCnN0YXRpYyBp bmxpbmUgdm9pZCAqIHZtYWxsb2MgKHVuc2lnbmVkIGxvbmcgc2l6ZSkKewogICAgICAgIHJldHVy biBfX3ZtYWxsb2NfUjc5OTk1YzViKHNpemUsICgweDIwIHwgMHgxMCB8IDB4NDAgfCAweDgwIHwg MHgxMDApIHwgMHgwMiwgKHsgcGdwcm90X3QgX19yZXQ7IGlmICgoKF9fYnVpbHRpbl9jb25zdGFu dF9wKCgwKjMyKzEzKSkgPyBjb25zdGFudF90ZXN0X2JpdCgoKDAqMzIrMTMpKSwoYm9vdF9jcHVf ZGF0YV9SMDY1N2QwMzcueDg2X2NhcGFiaWxpdHkpKSA6IHZhcmlhYmxlX3Rlc3RfYml0KCgoMCoz MisxMykpLChib290X2NwdV9kYXRhX1IwNjU3ZDAzNy54ODZfY2FwYWJpbGl0eSkpKSkpIF9fcmV0 ID0gKChwZ3Byb3RfdCkgeyAoKCgweDAwMSB8IDB4MDAyIHwgMHgwNDAgfCAweDAyMCkpIHwgMHgx MDApIH0gKTsgZWxzZSBfX3JldCA9ICgocGdwcm90X3QpIHsgKCgweDAwMSB8IDB4MDAyIHwgMHgw NDAgfCAweDAyMCkpIH0gKTsgX19yZXQ7IH0pKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCAq IHZtYWxsb2NfZG1hICh1bnNpZ25lZCBsb25nIHNpemUpCnsKICAgICAgICByZXR1cm4gX192bWFs bG9jX1I3OTk5NWM1YihzaXplLCAoMHgyMCB8IDB4MTAgfCAweDQwIHwgMHg4MCB8IDB4MTAwKXww eDAxLCAoeyBwZ3Byb3RfdCBfX3JldDsgaWYgKCgoX19idWlsdGluX2NvbnN0YW50X3AoKDAqMzIr MTMpKSA/IGNvbnN0YW50X3Rlc3RfYml0KCgoMCozMisxMykpLChib290X2NwdV9kYXRhX1IwNjU3 ZDAzNy54ODZfY2FwYWJpbGl0eSkpIDogdmFyaWFibGVfdGVzdF9iaXQoKCgwKjMyKzEzKSksKGJv b3RfY3B1X2RhdGFfUjA2NTdkMDM3Lng4Nl9jYXBhYmlsaXR5KSkpKSkgX19yZXQgPSAoKHBncHJv dF90KSB7ICgoKDB4MDAxIHwgMHgwMDIgfCAweDA0MCB8IDB4MDIwKSkgfCAweDEwMCkgfSApOyBl bHNlIF9fcmV0ID0gKChwZ3Byb3RfdCkgeyAoKDB4MDAxIHwgMHgwMDIgfCAweDA0MCB8IDB4MDIw KSkgfSApOyBfX3JldDsgfSkpOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogdm1hbGxvY18z Mih1bnNpZ25lZCBsb25nIHNpemUpCnsKICAgICAgICByZXR1cm4gX192bWFsbG9jX1I3OTk5NWM1 YihzaXplLCAoMHgyMCB8IDB4MTAgfCAweDQwIHwgMHg4MCB8IDB4MTAwKSwgKHsgcGdwcm90X3Qg X19yZXQ7IGlmICgoKF9fYnVpbHRpbl9jb25zdGFudF9wKCgwKjMyKzEzKSkgPyBjb25zdGFudF90 ZXN0X2JpdCgoKDAqMzIrMTMpKSwoYm9vdF9jcHVfZGF0YV9SMDY1N2QwMzcueDg2X2NhcGFiaWxp dHkpKSA6IHZhcmlhYmxlX3Rlc3RfYml0KCgoMCozMisxMykpLChib290X2NwdV9kYXRhX1IwNjU3 ZDAzNy54ODZfY2FwYWJpbGl0eSkpKSkpIF9fcmV0ID0gKChwZ3Byb3RfdCkgeyAoKCgweDAwMSB8 IDB4MDAyIHwgMHgwNDAgfCAweDAyMCkpIHwgMHgxMDApIH0gKTsgZWxzZSBfX3JldCA9ICgocGdw cm90X3QpIHsgKCgweDAwMSB8IDB4MDAyIHwgMHgwNDAgfCAweDAyMCkpIH0gKTsgX19yZXQ7IH0p KTsKfQoKCgoKCmV4dGVybiByd2xvY2tfdCB2bWxpc3RfbG9jazsKCmV4dGVybiBzdHJ1Y3Qgdm1f c3RydWN0ICogdm1saXN0OwojIDExMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9hc20vaW8uaCIgMgojIDEzMCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9h c20vaW8uaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHZpcnRfdG9fcGh5cyh2b2xhdGls ZSB2b2lkICogYWRkcmVzcykKewogICAgICAgIHJldHVybiAoKHVuc2lnbmVkIGxvbmcpKGFkZHJl c3MpLSgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKTsKfQoKc3RhdGljIGlubGluZSB2b2lk ICogcGh5c190b192aXJ0KHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewogICAgICAgIHJldHVybiAo KHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpKGFkZHJlc3MpKygodW5zaWduZWQgbG9uZykoMHhDMDAw MDAwMCkpKSk7Cn0KCgoKCgoKZXh0ZXJuIHZvaWQgKiBfX2lvcmVtYXBfUjllYWMwNDJhKHVuc2ln bmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgZmxhZ3Mp OwoKc3RhdGljIGlubGluZSB2b2lkICogaW9yZW1hcCAodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVu c2lnbmVkIGxvbmcgc2l6ZSkKewogICAgICAgIHJldHVybiBfX2lvcmVtYXBfUjllYWMwNDJhKG9m ZnNldCwgc2l6ZSwgMCk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogaW9yZW1hcF9ub2Nh Y2hlICh1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBzaXplKQp7CiAgICAgICAg cmV0dXJuIF9faW9yZW1hcF9SOWVhYzA0MmEob2Zmc2V0LCBzaXplLCAweDAxMCk7Cn0KCmV4dGVy biB2b2lkIGlvdW5tYXBfUjVmYjE5NmQ0KHZvaWQgKmFkZHIpOwojIDIyNCAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vaW8uaCIKc3RhdGljIGlubGluZSBpbnQgY2hlY2tf c2lnbmF0dXJlKHVuc2lnbmVkIGxvbmcgaW9fYWRkciwKICAgICAgICBjb25zdCB1bnNpZ25lZCBj aGFyICpzaWduYXR1cmUsIGludCBsZW5ndGgpCnsKICAgICAgICBpbnQgcmV0dmFsID0gMDsKICAg ICAgICBkbyB7CiAgICAgICAgICAgICAgICBpZiAoKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAq KSAoKHZvaWQgKikoaW9fYWRkcikpKSAhPSAqc2lnbmF0dXJlKQogICAgICAgICAgICAgICAgICAg ICAgICBnb3RvIG91dDsKICAgICAgICAgICAgICAgIGlvX2FkZHIrKzsKICAgICAgICAgICAgICAg IHNpZ25hdHVyZSsrOwogICAgICAgICAgICAgICAgbGVuZ3RoLS07CiAgICAgICAgfSB3aGlsZSAo bGVuZ3RoKTsKICAgICAgICByZXR2YWwgPSAxOwpvdXQ6CiAgICAgICAgcmV0dXJuIHJldHZhbDsK fQoKc3RhdGljIGlubGluZSBpbnQgaXNhX2NoZWNrX3NpZ25hdHVyZSh1bnNpZ25lZCBsb25nIGlv X2FkZHIsCiAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2lnbmF0dXJlLCBpbnQgbGVuZ3Ro KQp7CiAgICAgICAgaW50IHJldHZhbCA9IDA7CiAgICAgICAgZG8gewogICAgICAgICAgICAgICAg aWYgKCgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKCgoY2hhciAqKSgoKHVu c2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkpICsgKGlvX2FkZHIpKSkpICE9ICpzaWduYXR1cmUp CiAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgaW9fYWRk cisrOwogICAgICAgICAgICAgICAgc2lnbmF0dXJlKys7CiAgICAgICAgICAgICAgICBsZW5ndGgt LTsKICAgICAgICB9IHdoaWxlIChsZW5ndGgpOwogICAgICAgIHJldHZhbCA9IDE7Cm91dDoKICAg ICAgICByZXR1cm4gcmV0dmFsOwp9CiMgMzQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvYXNtL3BjaS5oIiAyCgpzdHJ1Y3QgcGNpX2RldjsKIyA0NCAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcGNpLmgiCmV4dGVybiB2b2lkICpwY2lfYWxsb2NfY29u c2lzdGVudF9SZGIxNjhjYzQoc3RydWN0IHBjaV9kZXYgKmh3ZGV2LCBzaXplX3Qgc2l6ZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRtYV9hZGRyX3QgKmRtYV9oYW5kbGUpOwoj IDU1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wY2kuaCIKZXh0ZXJu IHZvaWQgcGNpX2ZyZWVfY29uc2lzdGVudF9SYmVhMDY4ZDcoc3RydWN0IHBjaV9kZXYgKmh3ZGV2 LCBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWRk ciwgZG1hX2FkZHJfdCBkbWFfaGFuZGxlKTsKCgoKCgoKCnN0YXRpYyBpbmxpbmUgZG1hX2FkZHJf dCBwY2lfbWFwX3NpbmdsZShzdHJ1Y3QgcGNpX2RldiAqaHdkZXYsIHZvaWQgKnB0ciwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLCBpbnQgZGlyZWN0 aW9uKQp7CiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSAzKQogICAgICAgICAgICAgICAgX19hc21f XyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwogICAgICAgIHJldHVybiB2aXJ0X3Rv X3BoeXMocHRyKTsKfQojIDc5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2Fz bS9wY2kuaCIKc3RhdGljIGlubGluZSB2b2lkIHBjaV91bm1hcF9zaW5nbGUoc3RydWN0IHBjaV9k ZXYgKmh3ZGV2LCBkbWFfYWRkcl90IGRtYV9hZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaXplX3Qgc2l6ZSwgaW50IGRpcmVjdGlvbikKewogICAgICAgIGlmIChkaXJl Y3Rpb24gPT0gMykKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAw eDBmLDB4MGIiKTsKCn0KIyAxMDIgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUv YXNtL3BjaS5oIgpzdGF0aWMgaW5saW5lIGludCBwY2lfbWFwX3NnKHN0cnVjdCBwY2lfZGV2ICpo d2Rldiwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgbmVudHMsIGludCBkaXJlY3Rpb24pCnsKICAgICAgICBpZiAoZGlyZWN0aW9uID09IDMp CiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUgMHgwZiwweDBiIik7 CiAgICAgICAgcmV0dXJuIG5lbnRzOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIHBjaV91bm1h cF9zZyhzdHJ1Y3QgcGNpX2RldiAqaHdkZXYsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2csCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5lbnRzLCBpbnQgZGlyZWN0aW9uKQp7CiAg ICAgICAgaWYgKGRpcmVjdGlvbiA9PSAzKQogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0 aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwoKfQojIDEzMSAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9hc20vcGNpLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBwY2lfZG1hX3N5bmNf c2luZ2xlKHN0cnVjdCBwY2lfZGV2ICpod2RldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZG1hX2FkZHJfdCBkbWFfaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwgaW50IGRpcmVjdGlvbikKewogICAgICAgIGlm IChkaXJlY3Rpb24gPT0gMykKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIu Ynl0ZSAweDBmLDB4MGIiKTsKCn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBwY2lfZG1hX3N5 bmNfc2coc3RydWN0IHBjaV9kZXYgKmh3ZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBzY2F0dGVybGlzdCAqc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IG5lbGVtcywgaW50IGRpcmVjdGlvbikKewogICAgICAgIGlmIChkaXJlY3Rp b24gPT0gMykKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAweDBm LDB4MGIiKTsKCn0KCgoKCgoKc3RhdGljIGlubGluZSBpbnQgcGNpX2RtYV9zdXBwb3J0ZWQoc3Ry dWN0IHBjaV9kZXYgKmh3ZGV2LCBkbWFfYWRkcl90IG1hc2spCnsKCgoKCgogICAgICAgIGlmKG1h c2sgPCAweDAwZmZmZmZmKQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CgogICAgICAgIHJldHVy biAxOwp9CiMgMTgzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wY2ku aCIKc3RhdGljIGlubGluZSBpbnQgcGNpX2NvbnRyb2xsZXJfbnVtKHN0cnVjdCBwY2lfZGV2ICpk ZXYpCnsKICAgICAgICByZXR1cm4gMDsKfQoKCmV4dGVybiBpbnQgcGNpX21tYXBfcGFnZV9yYW5n ZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcGNpX21tYXBfc3RhdGUgbW1hcF9zdGF0ZSwg aW50IHdyaXRlX2NvbWJpbmUpOwojIDYwNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9wY2kuaCIgMgojIDY2OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9wY2kuaCIKc3RhdGljIGlubGluZSBpbnQgcGNpX21vZHVsZV9pbml0KHN0cnVj dCBwY2lfZHJpdmVyICpkcnYpCnsKICAgICAgICBpbnQgcmMgPSBwY2lfcmVnaXN0ZXJfZHJpdmVy X1JkZTdiMjc1MSAoZHJ2KTsKCiAgICAgICAgaWYgKHJjID4gMCkKICAgICAgICAgICAgICAgIHJl dHVybiAwOwojIDY4NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9w Y2kuaCIKICAgICAgICBpZiAocmMgPT0gMCkKICAgICAgICAgICAgICAgIHJjID0gLTE5OwoKCgoK ICAgICAgICBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJfUjgzNmVhMjExIChkcnYpOwoKICAgICAgICBy ZXR1cm4gcmM7Cn0KIyA3MTQgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGlu dXgvcGNpLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAqcGNpX2dldF9kcnZkYXRhIChzdHJ1Y3QgcGNp X2RldiAqcGRldikKewogICAgICAgIHJldHVybiBwZGV2LT5kcml2ZXJfZGF0YTsKfQoKc3RhdGlj IGlubGluZSB2b2lkIHBjaV9zZXRfZHJ2ZGF0YSAoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHZvaWQg KmRhdGEpCnsKICAgICAgICBwZGV2LT5kcml2ZXJfZGF0YSA9IGRhdGE7Cn0KIyA3MzEgIi91c3Iv c3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcGNpLmgiCnN0cnVjdCBwY2lfZml4 dXAgewogICAgICAgIGludCBwYXNzOwogICAgICAgIHUxNiB2ZW5kb3IsIGRldmljZTsKICAgICAg ICB2b2lkICgqaG9vaykoc3RydWN0IHBjaV9kZXYgKmRldik7Cn07CgpleHRlcm4gc3RydWN0IHBj aV9maXh1cCBwY2liaW9zX2ZpeHVwc1tdOwoKCgoKdm9pZCBwY2lfZml4dXBfZGV2aWNlKGludCBw YXNzLCBzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKCmV4dGVybiBpbnQgcGNpX3BjaV9wcm9ibGVtc19S ZGMxNGVkYTc7CiMgMjUgInVzYi11aGNpLmMiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMgMjYgInVzYi11aGNpLmMiIDIKIyAxICIv dXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2RlbGF5LmgiIDEKIyAxMCAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9kZWxheS5oIgpleHRlcm4g dW5zaWduZWQgbG9uZyBsb29wc19wZXJfamlmZnlfUmJhNDk3ZjEzOwoKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9kZWxheS5oIiAxCiMgMTAgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2RlbGF5LmgiCmV4dGVybiB2b2lkIF9fYmFkX3Vk ZWxheSh2b2lkKTsKCmV4dGVybiB2b2lkIF9fdWRlbGF5X1I5ZTdkNmJkMCh1bnNpZ25lZCBsb25n IHVzZWNzKTsKZXh0ZXJuIHZvaWQgX19jb25zdF91ZGVsYXlfUmVhZTNkZmQ2KHVuc2lnbmVkIGxv bmcgdXNlY3MpOwpleHRlcm4gdm9pZCBfX2RlbGF5X1I0NjZjMTRhNyh1bnNpZ25lZCBsb25nIGxv b3BzKTsKIyAxMyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9kZWxh eS5oIiAyCiMgMjcgInVzYi11aGNpLmMiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oIiAxCiMgMjggInVzYi11aGNpLmMiIDIKIyAxICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDEKIyAyOSAidXNi LXVoY2kuYyIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgv c2xhYi5oIiAxCiMgMzAgInVzYi11aGNpLmMiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIu NC4xMC9pbmNsdWRlL2xpbnV4L3NtcF9sb2NrLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zbXBfbG9jay5oIiAyCiMgMzEgInVzYi11aGNpLmMi IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2Vycm5vLmgi IDEKIyAzMiAidXNiLXVoY2kuYyIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvdW5pc3RkLmgiIDEKCgoKZXh0ZXJuIGludCBlcnJubzsKCgoKCiMgMSAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vdW5pc3RkLmgiIDEKIyAxMCAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC91bmlzdGQuaCIgMgojIDMzICJ1 c2ItdWhjaS5jIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC9pbnRlcnJ1cHQuaCIgMQoKCgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNs dWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5j bHVkZS9saW51eC9pbnRlcnJ1cHQuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvbGludXgva2VybmVsLmgiIDEKIyA3ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9zbXAuaCIgMQojIDggIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NhY2hlLmgiIDEKIyA5ICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIiAyCgojIDEgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAxCiMgMTEgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQojIDEyICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIiAyCiMgMSAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vcHRyYWNlLmgiIDEKIyAxMyAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIgMgoKc3RydWN0 IGlycWFjdGlvbiB7CiAgICAgICAgdm9pZCAoKmhhbmRsZXIpKGludCwgdm9pZCAqLCBzdHJ1Y3Qg cHRfcmVncyAqKTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHVuc2lnbmVk IGxvbmcgbWFzazsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIHZvaWQgKmRldl9p ZDsKICAgICAgICBzdHJ1Y3QgaXJxYWN0aW9uICpuZXh0Owp9OwoKCgoKCmVudW0gewogICAgICAg IFRJTUVSX0JIID0gMCwKICAgICAgICBUUVVFVUVfQkgsCiAgICAgICAgRElHSV9CSCwKICAgICAg ICBTRVJJQUxfQkgsCiAgICAgICAgUklTQ09NOF9CSCwKICAgICAgICBTUEVDSUFMSVhfQkgsCiAg ICAgICAgQVVST1JBX0JILAogICAgICAgIEVTUF9CSCwKICAgICAgICBTQ1NJX0JILAogICAgICAg IElNTUVESUFURV9CSCwKICAgICAgICBDWUNMQURFU19CSCwKICAgICAgICBDTTIwNl9CSCwKICAg ICAgICBKU19CSCwKICAgICAgICBNQUNTRVJJQUxfQkgsCiAgICAgICAgSVNJQ09NX0JICn07Cgoj IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2hhcmRpcnEuaCIgMQoK CgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29uZmlnLmgi IDEKIyA1ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9oYXJkaXJxLmgi IDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3RocmVhZHMu aCIgMQojIDYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2hhcmRpcnEu aCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaXJxLmgi IDEKIyAxMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pcnEuaCIK IyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAx CiMgMTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaXJxLmgiIDIK CgoKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2NhY2hlLmgi IDEKIyAxNyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pcnEuaCIg MgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc3BpbmxvY2su aCIgMQojIDE4ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2lycS5o IiAyCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2lycS5oIiAx CiMgMTMgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL2lycS5oIgojIDEg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAx NCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vaXJxLmgiIDIKIyAyOCAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vaXJxLmgiCnN0YXRpYyBfX2lu bGluZV9fIGludCBpcnFfY2Fubm9uaWNhbGl6ZShpbnQgaXJxKQp7CiAgICAgICAgcmV0dXJuICgo aXJxID09IDIpID8gOSA6IGlycSk7Cn0KCmV4dGVybiB2b2lkIGRpc2FibGVfaXJxX1IzY2U0Y2E2 Zih1bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBkaXNhYmxlX2lycV9ub3N5bmNfUjI3YmJmMjIx KHVuc2lnbmVkIGludCk7CmV4dGVybiB2b2lkIGVuYWJsZV9pcnFfUmZjZWMwOTg3KHVuc2lnbmVk IGludCk7CiMgMjAgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaXJx LmgiIDIKIyAxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wdHJhY2Uu aCIgMQojIDIxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2lycS5o IiAyCiMgMzkgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaXJxLmgi CnN0cnVjdCBod19pbnRlcnJ1cHRfdHlwZSB7CiAgICAgICAgY29uc3QgY2hhciAqIHR5cGVuYW1l OwogICAgICAgIHVuc2lnbmVkIGludCAoKnN0YXJ0dXApKHVuc2lnbmVkIGludCBpcnEpOwogICAg ICAgIHZvaWQgKCpzaHV0ZG93bikodW5zaWduZWQgaW50IGlycSk7CiAgICAgICAgdm9pZCAoKmVu YWJsZSkodW5zaWduZWQgaW50IGlycSk7CiAgICAgICAgdm9pZCAoKmRpc2FibGUpKHVuc2lnbmVk IGludCBpcnEpOwogICAgICAgIHZvaWQgKCphY2spKHVuc2lnbmVkIGludCBpcnEpOwogICAgICAg IHZvaWQgKCplbmQpKHVuc2lnbmVkIGludCBpcnEpOwogICAgICAgIHZvaWQgKCpzZXRfYWZmaW5p dHkpKHVuc2lnbmVkIGludCBpcnEsIHVuc2lnbmVkIGxvbmcgbWFzayk7Cn07Cgp0eXBlZGVmIHN0 cnVjdCBod19pbnRlcnJ1cHRfdHlwZSBod19pcnFfY29udHJvbGxlcjsKIyA1OSAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pcnEuaCIKdHlwZWRlZiBzdHJ1Y3Qgewog ICAgICAgIHVuc2lnbmVkIGludCBzdGF0dXM7CiAgICAgICAgaHdfaXJxX2NvbnRyb2xsZXIgKmhh bmRsZXI7CiAgICAgICAgc3RydWN0IGlycWFjdGlvbiAqYWN0aW9uOwogICAgICAgIHVuc2lnbmVk IGludCBkZXB0aDsKICAgICAgICBzcGlubG9ja190IGxvY2s7Cn0gX19hdHRyaWJ1dGVfXygoX19h bGlnbmVkX18oKDEgPDwgKCg1KSkpKSkpIGlycV9kZXNjX3Q7CgpleHRlcm4gaXJxX2Rlc2NfdCBp cnFfZGVzYyBbMjI0XTsKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9h c20vaHdfaXJxLmgiIDEKIyAxNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9h c20vaHdfaXJxLmgiCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC9jb25maWcuaCIgMQojIDE2ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2Fz bS9od19pcnEuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNt L2F0b21pYy5oIiAxCiMgMTcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNt L2h3X2lycS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20v aXJxLmgiIDEKIyAxOCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vaHdf aXJxLmgiIDIKIyA2MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vaHdf aXJxLmgiCmV4dGVybiBpbnQgaXJxX3ZlY3RvclsyMjRdOwojIDcxICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9od19pcnEuaCIKZXh0ZXJuIHZvaWQgbWFza19pcnEodW5z aWduZWQgaW50IGlycSk7CmV4dGVybiB2b2lkIHVubWFza19pcnEodW5zaWduZWQgaW50IGlycSk7 CmV4dGVybiB2b2lkIGRpc2FibGVfODI1OUFfaXJxKHVuc2lnbmVkIGludCBpcnEpOwpleHRlcm4g dm9pZCBlbmFibGVfODI1OUFfaXJxKHVuc2lnbmVkIGludCBpcnEpOwpleHRlcm4gaW50IGk4MjU5 QV9pcnFfcGVuZGluZyh1bnNpZ25lZCBpbnQgaXJxKTsKZXh0ZXJuIHZvaWQgbWFrZV84MjU5QV9p cnEodW5zaWduZWQgaW50IGlycSk7CmV4dGVybiB2b2lkIGluaXRfODI1OUEoaW50IGFlb2kpOwpl eHRlcm4gdm9pZCBzZW5kX0lQSV9zZWxmKGludCB2ZWN0b3IpIF9fYXR0cmlidXRlX18oKHJlZ3Bh cm0oMykpKTsKZXh0ZXJuIHZvaWQgaW5pdF9WSVNXU19BUElDX2lycXModm9pZCk7CmV4dGVybiB2 b2lkIHNldHVwX0lPX0FQSUModm9pZCk7CmV4dGVybiB2b2lkIGRpc2FibGVfSU9fQVBJQyh2b2lk KTsKZXh0ZXJuIHZvaWQgcHJpbnRfSU9fQVBJQyh2b2lkKTsKZXh0ZXJuIGludCBJT19BUElDX2dl dF9QQ0lfaXJxX3ZlY3RvcihpbnQgYnVzLCBpbnQgc2xvdCwgaW50IGZuKTsKZXh0ZXJuIHZvaWQg c2VuZF9JUEkoaW50IGRlc3QsIGludCB2ZWN0b3IpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW9f YXBpY19pcnFzOwoKZXh0ZXJuIGF0b21pY190IGlycV9lcnJfY291bnQ7CmV4dGVybiBhdG9taWNf dCBpcnFfbWlzX2NvdW50OwoKZXh0ZXJuIGNoYXIgX3N0ZXh0LCBfZXRleHQ7CiMgMTgzICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9od19pcnEuaCIKZXh0ZXJuIHVuc2ln bmVkIGxvbmcgcHJvZl9jcHVfbWFzazsKZXh0ZXJuIHVuc2lnbmVkIGludCAqIHByb2ZfYnVmZmVy OwpleHRlcm4gdW5zaWduZWQgbG9uZyBwcm9mX2xlbjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcHJv Zl9zaGlmdDsKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgeDg2X2RvX3Byb2ZpbGUgKHVuc2lnbmVk IGxvbmcgZWlwKQp7CiAgICAgICAgaWYgKCFwcm9mX2J1ZmZlcikKICAgICAgICAgICAgICAgIHJl dHVybjsKCgoKCgogICAgICAgIGlmICghKCgxPDwwKSAmIHByb2ZfY3B1X21hc2spKQogICAgICAg ICAgICAgICAgcmV0dXJuOwoKICAgICAgICBlaXAgLT0gKHVuc2lnbmVkIGxvbmcpICZfc3RleHQ7 CiAgICAgICAgZWlwID4+PSBwcm9mX3NoaWZ0OwoKCgoKCiAgICAgICAgaWYgKGVpcCA+IHByb2Zf bGVuLTEpCiAgICAgICAgICAgICAgICBlaXAgPSBwcm9mX2xlbi0xOwogICAgICAgIGF0b21pY19p bmMoKGF0b21pY190ICopJnByb2ZfYnVmZmVyW2VpcF0pOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5l IHZvaWQgaHdfcmVzZW5kX2lycShzdHJ1Y3QgaHdfaW50ZXJydXB0X3R5cGUgKmgsIHVuc2lnbmVk IGludCBpKSB7fQojIDcwICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L2lycS5oIiAyCgpleHRlcm4gaW50IGhhbmRsZV9JUlFfZXZlbnQodW5zaWduZWQgaW50LCBzdHJ1 Y3QgcHRfcmVncyAqLCBzdHJ1Y3QgaXJxYWN0aW9uICopOwpleHRlcm4gaW50IHNldHVwX2lycSh1 bnNpZ25lZCBpbnQgLCBzdHJ1Y3QgaXJxYWN0aW9uICogKTsKCmV4dGVybiBod19pcnFfY29udHJv bGxlciBub19pcnFfdHlwZTsKZXh0ZXJuIHZvaWQgbm9fYWN0aW9uKGludCBjcGwsIHZvaWQgKmRl dl9pZCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwojIDcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvYXNtL2hhcmRpcnEuaCIgMgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1 bnNpZ25lZCBpbnQgX19zb2Z0aXJxX3BlbmRpbmc7CiAgICAgICAgdW5zaWduZWQgaW50IF9fbG9j YWxfaXJxX2NvdW50OwogICAgICAgIHVuc2lnbmVkIGludCBfX2xvY2FsX2JoX2NvdW50OwogICAg ICAgIHVuc2lnbmVkIGludCBfX3N5c2NhbGxfY291bnQ7CiAgICAgICAgc3RydWN0IHRhc2tfc3Ry dWN0ICogX19rc29mdGlycWRfdGFzazsKICAgICAgICB1bnNpZ25lZCBpbnQgX19ubWlfY291bnQ7 Cn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKCg1KSkpKSkpIGlycV9jcHVzdGF0 X3Q7CgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaXJxX2Nw dXN0YXQuaCIgMQojIDEyICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4 L2lycV9jcHVzdGF0LmgiCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9s aW51eC9jb25maWcuaCIgMQojIDEzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2xpbnV4L2lycV9jcHVzdGF0LmgiIDIKCgoKCgoKCmV4dGVybiBpcnFfY3B1c3RhdF90IGlycV9z dGF0X1I5ZTM2ZjA2ZVtdOwojIDE5ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRl L2FzbS9oYXJkaXJxLmgiIDIKIyA0NiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVk ZS9saW51eC9pbnRlcnJ1cHQuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvYXNtL3NvZnRpcnEuaCIgMQoKCgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMgNSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9hc20vc29mdGlycS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9hc20vaGFyZGlycS5oIiAxCiMgNiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9hc20vc29mdGlycS5oIiAyCiMgNDcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKIyA1NiAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIKZW51bQp7CiAgICAgICAgSElfU09GVElS UT0wLAogICAgICAgIE5FVF9UWF9TT0ZUSVJRLAogICAgICAgIE5FVF9SWF9TT0ZUSVJRLAogICAg ICAgIFRBU0tMRVRfU09GVElSUQp9OwoKCgoKCnN0cnVjdCBzb2Z0aXJxX2FjdGlvbgp7CiAgICAg ICAgdm9pZCAoKmFjdGlvbikoc3RydWN0IHNvZnRpcnFfYWN0aW9uICopOwogICAgICAgIHZvaWQg KmRhdGE7Cn07CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIHZvaWQgZG9fc29mdGlycV9S ZjBhNTI5Yjcodm9pZCk7CmV4dGVybiB2b2lkIG9wZW5fc29mdGlycShpbnQgbnIsIHZvaWQgKCph Y3Rpb24pKHN0cnVjdCBzb2Z0aXJxX2FjdGlvbiopLCB2b2lkICpkYXRhKTsKZXh0ZXJuIHZvaWQg c29mdGlycV9pbml0KHZvaWQpOwoKZXh0ZXJuIHZvaWQgY3B1X3JhaXNlX3NvZnRpcnFfUmQwMWYz ZWU4KHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGludCBucikgX19hdHRyaWJ1dGVfXygocmVn cGFybSgzKSkpOwpleHRlcm4gdm9pZCByYWlzZV9zb2Z0aXJxX1JkOGU0ZmExYyh1bnNpZ25lZCBp bnQgbnIpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIyAxMDMgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiCnN0cnVjdCB0YXNrbGV0X3N0 cnVjdAp7CiAgICAgICAgc3RydWN0IHRhc2tsZXRfc3RydWN0ICpuZXh0OwogICAgICAgIHVuc2ln bmVkIGxvbmcgc3RhdGU7CiAgICAgICAgYXRvbWljX3QgY291bnQ7CiAgICAgICAgdm9pZCAoKmZ1 bmMpKHVuc2lnbmVkIGxvbmcpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YTsKfTsKIyAxMTkg Ii91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiCmVu dW0KewogICAgICAgIFRBU0tMRVRfU1RBVEVfU0NIRUQsCiAgICAgICAgVEFTS0xFVF9TVEFURV9S VU4KfTsKCnN0cnVjdCB0YXNrbGV0X2hlYWQKewogICAgICAgIHN0cnVjdCB0YXNrbGV0X3N0cnVj dCAqbGlzdDsKfSBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18oKDEgPDwgKCg1KSkpKSkpOwoK ZXh0ZXJuIHN0cnVjdCB0YXNrbGV0X2hlYWQgdGFza2xldF92ZWNfUjQxZDNiMzY3WzFdOwpleHRl cm4gc3RydWN0IHRhc2tsZXRfaGVhZCB0YXNrbGV0X2hpX3ZlY19SYmIwNjU3NWZbMV07CiMgMTU1 ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIgpl eHRlcm4gdm9pZCBfX3Rhc2tsZXRfc2NoZWR1bGVfUmVkNWM3M2JmKHN0cnVjdCB0YXNrbGV0X3N0 cnVjdCAqdCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKc3RhdGljIGlubGluZSB2b2lk IHRhc2tsZXRfc2NoZWR1bGUoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQp7CiAgICAgICAgaWYg KCF0ZXN0X2FuZF9zZXRfYml0KFRBU0tMRVRfU1RBVEVfU0NIRUQsICZ0LT5zdGF0ZSkpCiAgICAg ICAgICAgICAgICBfX3Rhc2tsZXRfc2NoZWR1bGVfUmVkNWM3M2JmKHQpOwp9CgpleHRlcm4gdm9p ZCBfX3Rhc2tsZXRfaGlfc2NoZWR1bGVfUjYwZWE1ZmU3KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAq dCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKc3RhdGljIGlubGluZSB2b2lkIHRhc2ts ZXRfaGlfc2NoZWR1bGUoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQp7CiAgICAgICAgaWYgKCF0 ZXN0X2FuZF9zZXRfYml0KFRBU0tMRVRfU1RBVEVfU0NIRUQsICZ0LT5zdGF0ZSkpCiAgICAgICAg ICAgICAgICBfX3Rhc2tsZXRfaGlfc2NoZWR1bGVfUjYwZWE1ZmU3KHQpOwp9CgoKc3RhdGljIGlu bGluZSB2b2lkIHRhc2tsZXRfZGlzYWJsZV9ub3N5bmMoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0 KQp7CiAgICAgICAgYXRvbWljX2luYygmdC0+Y291bnQpOwogICAgICAgIF9fYXNtX18gX192b2xh dGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0X2Rp c2FibGUoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQp7CiAgICAgICAgdGFza2xldF9kaXNhYmxl X25vc3luYyh0KTsKICAgICAgICBkbyB7IH0gd2hpbGUgKDApOwogICAgICAgIF9fYXNtX18gX192 b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0 X2VuYWJsZShzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpCnsKICAgICAgICBfX2FzbV9fIF9fdm9s YXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogICAgICAgIGF0b21pY19kZWMoJnQtPmNvdW50KTsK fQoKc3RhdGljIGlubGluZSB2b2lkIHRhc2tsZXRfaGlfZW5hYmxlKHN0cnVjdCB0YXNrbGV0X3N0 cnVjdCAqdCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7 CiAgICAgICAgYXRvbWljX2RlYygmdC0+Y291bnQpOwp9CgpleHRlcm4gdm9pZCB0YXNrbGV0X2tp bGxfUjc5YWQyMjRiKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCk7CmV4dGVybiB2b2lkIHRhc2ts ZXRfaW5pdF9SYTU4MDhiYmYoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0LAogICAgICAgICAgICAg ICAgICAgICAgICAgdm9pZCAoKmZ1bmMpKHVuc2lnbmVkIGxvbmcpLCB1bnNpZ25lZCBsb25nIGRh dGEpOwojIDIyMiAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pbnRl cnJ1cHQuaCIKZXh0ZXJuIHN0cnVjdCB0YXNrbGV0X3N0cnVjdCBiaF90YXNrX3ZlY19SMjg0MTc3 YjhbXTsKCgpleHRlcm4gc3BpbmxvY2tfdCBnbG9iYWxfYmhfbG9jazsKCnN0YXRpYyBpbmxpbmUg dm9pZCBtYXJrX2JoKGludCBucikKewogICAgICAgIHRhc2tsZXRfaGlfc2NoZWR1bGUoYmhfdGFz a192ZWNfUjI4NDE3N2I4K25yKTsKfQoKZXh0ZXJuIHZvaWQgaW5pdF9iaF9SZjZjZjI3Y2MoaW50 IG5yLCB2b2lkICgqcm91dGluZSkodm9pZCkpOwpleHRlcm4gdm9pZCByZW1vdmVfYmhfUmJjNTI0 YTMyKGludCBucik7CiMgMjYzICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xp bnV4L2ludGVycnVwdC5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBwcm9iZV9pcnFfb25fUmIxMjEz OTBhKHZvaWQpOwpleHRlcm4gaW50IHByb2JlX2lycV9vZmZfUmFiNjAwNDIxKHVuc2lnbmVkIGxv bmcpOwpleHRlcm4gdW5zaWduZWQgaW50IHByb2JlX2lycV9tYXNrX1IzNjBiMWFmZSh1bnNpZ25l ZCBsb25nKTsKIyAzNCAidXNiLXVoY2kuYyIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvaW5pdC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvaW5pdC5oIiAyCiMgMTMxICIvdXNyL3NyYy9ydWRvL2xpbnV4 LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2luaXQuaCIKdHlwZWRlZiBpbnQgKCpfX2luaXRfbW9kdWxl X2Z1bmNfdCkodm9pZCk7CnR5cGVkZWYgdm9pZCAoKl9fY2xlYW51cF9tb2R1bGVfZnVuY190KSh2 b2lkKTsKIyAzNSAidXNiLXVoY2kuYyIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEw L2luY2x1ZGUvbGludXgvdmVyc2lvbi5oIiAxCiMgMzYgInVzYi11aGNpLmMiIDIKIyAxICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3BtLmgiIDEKIyAyNiAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9wbS5oIgojIDEgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAyNyAiL3Vzci9zcmMv cnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9wbS5oIiAyCiMgMSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyAyOCAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9wbS5oIiAyCgoKCgplbnVtCnsKICAgICAgICBQ TV9TVVNQRU5ELAogICAgICAgIFBNX1JFU1VNRSwKCiAgICAgICAgUE1fU0FWRV9TVEFURSwKCgog ICAgICAgIFBNX1NFVF9XQUtFVVAsCgoKICAgICAgICBQTV9HRVRfUkVTT1VSQ0VTLAogICAgICAg IFBNX1NFVF9SRVNPVVJDRVMsCgoKICAgICAgICBQTV9FSkVDVCwKICAgICAgICBQTV9MT0NLLAp9 OwoKdHlwZWRlZiBpbnQgcG1fcmVxdWVzdF90OwoKCgoKZW51bQp7CiAgICAgICAgUE1fVU5LTk9X Tl9ERVYgPSAwLAogICAgICAgIFBNX1NZU19ERVYsCiAgICAgICAgUE1fUENJX0RFViwKICAgICAg ICBQTV9VU0JfREVWLAogICAgICAgIFBNX1NDU0lfREVWLAogICAgICAgIFBNX0lTQV9ERVYsCiAg ICAgICAgUE1fTVREX0RFViwKfTsKCnR5cGVkZWYgaW50IHBtX2Rldl90OwoKCgoKZW51bQp7CiAg ICAgICAgUE1fU1lTX1VOS05PV04gPSAweDAwMDAwMDAwLAogICAgICAgIFBNX1NZU19LQkMgPSAw eDQxZDAwMzAzLAogICAgICAgIFBNX1NZU19DT00gPSAweDQxZDAwNTAwLAogICAgICAgIFBNX1NZ U19JUkRBID0gMHg0MWQwMDUxMCwKICAgICAgICBQTV9TWVNfRkRDID0gMHg0MWQwMDcwMCwKICAg ICAgICBQTV9TWVNfVkdBID0gMHg0MWQwMDkwMCwKICAgICAgICBQTV9TWVNfUENNQ0lBID0gMHg0 MWQwMGUwMCwKfTsKIyA5MSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51 eC9wbS5oIgpzdHJ1Y3QgcG1fZGV2OwoKdHlwZWRlZiBpbnQgKCpwbV9jYWxsYmFjaykoc3RydWN0 IHBtX2RldiAqZGV2LCBwbV9yZXF1ZXN0X3QgcnFzdCwgdm9pZCAqZGF0YSk7CgoKCgpzdHJ1Y3Qg cG1fZGV2CnsKICAgICAgICBwbV9kZXZfdCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaWQ7 CiAgICAgICAgcG1fY2FsbGJhY2sgY2FsbGJhY2s7CiAgICAgICAgdm9pZCAqZGF0YTsKCiAgICAg ICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICBpbnQgc3RhdGU7CiAgICAgICAgaW50IHBy ZXZfc3RhdGU7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZW50cnk7Cn07CgoKCmV4dGVybiBp bnQgcG1fYWN0aXZlX1JlYmQzODdmNjsKCgoKCgoKc3RydWN0IHBtX2RldiAqcG1fcmVnaXN0ZXJf UjhkYmFiMTFjKHBtX2Rldl90IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBtX2NhbGxiYWNrIGNhbGxi YWNrKTsKCgoKCnZvaWQgcG1fdW5yZWdpc3Rlcl9SZWNjZDFlNjQoc3RydWN0IHBtX2RldiAqZGV2 KTsKCgoKCnZvaWQgcG1fdW5yZWdpc3Rlcl9hbGxfUjljMGJhNWIyKHBtX2NhbGxiYWNrIGNhbGxi YWNrKTsKCgoKCmludCBwbV9zZW5kX1IzOGZmM2VkMShzdHJ1Y3QgcG1fZGV2ICpkZXYsIHBtX3Jl cXVlc3RfdCBycXN0LCB2b2lkICpkYXRhKTsKCgoKCmludCBwbV9zZW5kX2FsbF9SZWNiZjljYWQo cG1fcmVxdWVzdF90IHJxc3QsIHZvaWQgKmRhdGEpOwoKCgoKc3RydWN0IHBtX2RldiAqcG1fZmlu ZF9SMWE1NTc4MGEocG1fZGV2X3QgdHlwZSwgc3RydWN0IHBtX2RldiAqZnJvbSk7CgpzdGF0aWMg aW5saW5lIHZvaWQgcG1fYWNjZXNzKHN0cnVjdCBwbV9kZXYgKmRldikge30Kc3RhdGljIGlubGlu ZSB2b2lkIHBtX2Rldl9pZGxlKHN0cnVjdCBwbV9kZXYgKmRldikge30KIyAxODggIi91c3Ivc3Jj L3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcG0uaCIKZXh0ZXJuIHZvaWQgKCpwbV9p ZGxlX1JmODkwZmU3Zikodm9pZCk7CmV4dGVybiB2b2lkICgqcG1fcG93ZXJfb2ZmX1I2MGEzMmVh OSkodm9pZCk7CiMgMzcgInVzYi11aGNpLmMiIDIKCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0y LjQuMTAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIiAxCgoKCgoKCiMgMSAiL3Vzci9zcmMvcnVkby9s aW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDggIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMQojIDkgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIgMQojIDEwICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiIDIKIyAxICIvdXNyL3NyYy9y dWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS9wYWdlLmgiIDEKIyAxMSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIiAyCiMgMzUgIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKZXh0ZXJuIGludCBfX3Zlcmlm eV93cml0ZV9SMjAzYWZiZWIoY29uc3Qgdm9pZCAqLCB1bnNpZ25lZCBsb25nKTsKIyA2MiAiL3Vz ci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpzdGF0aWMgaW5s aW5lIGludCB2ZXJpZnlfYXJlYShpbnQgdHlwZSwgY29uc3Qgdm9pZCAqIGFkZHIsIHVuc2lnbmVk IGxvbmcgc2l6ZSkKewogICAgICAgIHJldHVybiAoKHsgdW5zaWduZWQgbG9uZyBmbGFnLHN1bTsg YXNtKCJhZGRsICUzLCUxIDsgc2JibCAlMCwlMDsgY21wbCAlMSwlNDsgc2JibCAkMCwlMCIgOiI9 JnIiIChmbGFnKSwgIj1yIiAoc3VtKSA6IjEiIChhZGRyKSwiZyIgKChpbnQpKHNpemUpKSwiZyIg KGdldF9jdXJyZW50KCktPmFkZHJfbGltaXQuc2VnKSk7IGZsYWc7IH0pID09IDApID8gMCA6IC0x NDsKfQojIDgxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS91YWNjZXNz LmgiCnN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkKewogICAgICAgIHVuc2lnbmVkIGxvbmcg aW5zbiwgZml4dXA7Cn07CgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc2VhcmNoX2V4Y2VwdGlvbl90 YWJsZSh1bnNpZ25lZCBsb25nKTsKIyAxMDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvYXNtL3VhY2Nlc3MuaCIKZXh0ZXJuIHZvaWQgX19nZXRfdXNlcl8xKHZvaWQpOwpleHRl cm4gdm9pZCBfX2dldF91c2VyXzIodm9pZCk7CmV4dGVybiB2b2lkIF9fZ2V0X3VzZXJfNCh2b2lk KTsKIyAxMjcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3VhY2Nlc3Mu aCIKZXh0ZXJuIHZvaWQgX19wdXRfdXNlcl8xKHZvaWQpOwpleHRlcm4gdm9pZCBfX3B1dF91c2Vy XzIodm9pZCk7CmV4dGVybiB2b2lkIF9fcHV0X3VzZXJfNCh2b2lkKTsKZXh0ZXJuIHZvaWQgX19w dXRfdXNlcl84KHZvaWQpOwoKZXh0ZXJuIHZvaWQgX19wdXRfdXNlcl9iYWQodm9pZCk7CiMgMTg4 ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCnN0cnVj dCBfX2xhcmdlX3N0cnVjdCB7IHVuc2lnbmVkIGxvbmcgYnVmWzEwMF07IH07CiMgMjIwICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCmV4dGVybiBsb25n IF9fZ2V0X3VzZXJfYmFkKHZvaWQpOwojIDMwOCAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19nZW5l cmljX2NvcHlfZnJvbV91c2VyX25vY2hlY2sodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVu c2lnbmVkIGxvbmcgbikKewogICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IF9fYXNtX18gX192 b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiCW1vdmwgJTMsJTBcbiIgIjE6CXJlcDsgbW92 c2JcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglsZWEgMCglMywlMCw0 KSwlMFxuIiAiNDoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVl YXhcbiIgIglyZXA7IHN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglqbXAg MmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGln biA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9 JmMiKG4pLCAiPSZEIiAoX19kMCksICI9JlMiIChfX2QxKSA6ICJyIihuICYgMyksICIwIihuIC8g NCksICIxIih0byksICIyIihmcm9tKSA6ICJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAg cmV0dXJuIG47Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwpfX2dlbmVyaWNfY29weV90 b191c2VyX25vY2hlY2sodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcg bikKewogICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IF9fYXNtX18gX192b2xhdGlsZV9fKCAi MDoJcmVwOyBtb3ZzbFxuIiAiCW1vdmwgJTMsJTBcbiIgIjE6CXJlcDsgbW92c2JcbiIgIjI6XG4i ICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglsZWEgMCglMywlMCw0KSwlMFxuIiAiCWpt cCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFs aWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDJiXG4iICIucHJldmlvdXMiIDog Ij0mYyIobiksICI9JkQiIChfX2QwKSwgIj0mUyIgKF9fZDEpIDogInIiKG4gJiAzKSwgIjAiKG4g LyA0KSwgIjEiKHRvKSwgIjIiKGZyb20pIDogIm1lbW9yeSIpOyB9IHdoaWxlICgwKTsKICAgICAg ICByZXR1cm4gbjsKfQojIDU0MyAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9h c20vdWFjY2Vzcy5oIgp1bnNpZ25lZCBsb25nIF9fZ2VuZXJpY19jb3B5X3RvX3VzZXJfUmQ1MjNm ZGQzKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCB1bnNpZ25lZCBsb25nKTsKdW5zaWduZWQgbG9uZyBf X2dlbmVyaWNfY29weV9mcm9tX3VzZXJfUjExNjE2NmFhKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCB1 bnNpZ25lZCBsb25nKTsKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwpfX2NvbnN0YW50X2Nv cHlfdG9fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQp7 CiAgICAgICAgcHJlZmV0Y2goZnJvbSk7CiAgICAgICAgaWYgKCgoeyB1bnNpZ25lZCBsb25nIGZs YWcsc3VtOyBhc20oImFkZGwgJTMsJTEgOyBzYmJsICUwLCUwOyBjbXBsICUxLCU0OyBzYmJsICQw LCUwIiA6Ij0mciIgKGZsYWcpLCAiPXIiIChzdW0pIDoiMSIgKHRvKSwiZyIgKChpbnQpKG4pKSwi ZyIgKGdldF9jdXJyZW50KCktPmFkZHJfbGltaXQuc2VnKSk7IGZsYWc7IH0pID09IDApKQogICAg ICAgICAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsgc3dpdGNoIChuICYgMykgeyBkZWZhdWx0 OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6XG4iICIuc2VjdGlv biAuZml4dXAsXCJheFwiXG4iICIyOglzaGwgJDIsJTBcbiIgIglqbXAgMWJcbiIgIi5wcmV2aW91 c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcg MGIsMmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2Qx KSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNl IDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c2JcbiIg IjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglzaGwgJDIsJTBcbiIgIjQ6CWlu Y2wgJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxc ImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAi LnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZy b20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMjogX19hc21f XyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjpcbiIgIi5z ZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXNobCAkMiwlMFxuIiAiNDoJYWRkbCAkMiwlMFxu IiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4i ICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlv dXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIy Iih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAzOiBfX2FzbV9fIF9fdm9s YXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnN3XG4iICIyOgltb3ZzYlxuIiAiMzpc biIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjQ6CXNobCAkMiwlMFxuIiAiNToJYWRkbCAk MiwlMFxuIiAiNjoJaW5jbCAlMFxuIiAiCWptcCAzYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlv biBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiw0YlxuIiAiCS5s b25nIDFiLDViXG4iICIJLmxvbmcgMmIsNmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZT IiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAi bWVtb3J5Iik7IGJyZWFrOyB9IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiBuOwp9CgpzdGF0 aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19jb25zdGFudF9jb3B5X2Zyb21fdXNlcih2b2lkICp0 bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQp7CiAgICAgICAgaWYgKCgoeyB1 bnNpZ25lZCBsb25nIGZsYWcsc3VtOyBhc20oImFkZGwgJTMsJTEgOyBzYmJsICUwLCUwOyBjbXBs ICUxLCU0OyBzYmJsICQwLCUwIiA6Ij0mciIgKGZsYWcpLCAiPXIiIChzdW0pIDoiMSIgKGZyb20p LCJnIiAoKGludCkobikpLCJnIiAoZ2V0X2N1cnJlbnQoKS0+YWRkcl9saW1pdC5zZWcpKTsgZmxh ZzsgfSkgPT0gMCkpCiAgICAgICAgICAgICAgICBkbyB7IGludCBfX2QwLCBfX2QxOyBzd2l0Y2gg KG4gJiAzKSB7IGRlZmF1bHQ6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxu IiAiMTpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjI6CXB1c2hsICUwXG4iICIJcHVz aGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXBvcGwg JSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJam1wIDFiXG4iICIucHJldmlv dXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25n IDBiLDJiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19k MSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2Fz ZSAxOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNiXG4i ICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJcHVzaGwgJTBcbiIgIglwdXNo bCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc2Jc biIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWluY2wgJTBc biIgIglqbXAgMmJcbiIgIjQ6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAi CXN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCWluY2wgJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2 aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxv bmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMi IChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJt ZW1vcnkiKTsgYnJlYWs7IGNhc2UgMjogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1v dnNsXG4iICIxOgltb3Zzd1xuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6 CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVw OyBzdG9zbFxuIiAiCXN0b3N3XG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwg JDIsJTBcbiIgIglhZGRsICQyLCUwXG4iICIJam1wIDJiXG4iICI0OglwdXNobCAlJWVheFxuIiAi CXhvcmwgJSVlYXgsJSVlYXhcbiIgIglzdG9zd1xuIiAiCXBvcGwgJSVlYXhcbiIgIglhZGRsICQy LCUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJh XCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5w cmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9t KSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDM6IF9fYXNtX18g X192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6CW1vdnNiXG4i ICIzOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiNDoJcHVzaGwgJTBcbiIgIglwdXNo bCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc3dc biIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4i ICIJYWRkbCAkMywlMFxuIiAiCWptcCAyYlxuIiAiNToJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUl ZWF4LCUlZWF4XG4iICIJc3Rvc3dcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglhZGRs ICQzLCUwXG4iICIJam1wIDJiXG4iICI2OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVl YXhcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglpbmNsICUwXG4iICIJam1wIDNiXG4i ICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxu IiAiCS5sb25nIDBiLDRiXG4iICIJLmxvbmcgMWIsNWJcbiIgIgkubG9uZyAyYiw2YlxuIiAiLnBy ZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20p LCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gfSB3aGlsZSAoMCk7CiAg ICAgICAgZWxzZQogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDApID8gKF9f YnVpbHRpbl9jb25zdGFudF9wKChuKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgo KHRvKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChuKSkpIDogX19jb25z dGFudF9jX21lbXNldCgoKHRvKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSks KChuKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgobikpID8gX19tZW1zZXRfZ2VuZXJpYygo KCh0bykpKSwoKCgwKSkpLCgoKG4pKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKHRvKSksKCgwKSks KChuKSkpKSk7CiAgICAgICAgcmV0dXJuIG47Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9u ZwpfX2NvbnN0YW50X2NvcHlfdG9fdXNlcl9ub2NoZWNrKHZvaWQgKnRvLCBjb25zdCB2b2lkICpm cm9tLCB1bnNpZ25lZCBsb25nIG4pCnsKICAgICAgICBkbyB7IGludCBfX2QwLCBfX2QxOyBzd2l0 Y2ggKG4gJiAzKSB7IGRlZmF1bHQ6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3Zz bFxuIiAiMTpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjI6CXNobCAkMiwlMFxuIiAi CWptcCAxYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJ LmFsaWduIDRcbiIgIgkubG9uZyAwYiwyYlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMi IChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJt ZW1vcnkiKTsgYnJlYWs7IGNhc2UgMTogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1v dnNsXG4iICIxOgltb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6 CXNobCAkMiwlMFxuIiAiNDoJaW5jbCAlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIu c2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxu IiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAi PSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBi cmVhazsgY2FzZSAyOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6 CW1vdnN3XG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJc2hsICQyLCUw XG4iICI0OglhZGRsICQyLCUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9u IF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxv bmcgMWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChf X2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBj YXNlIDM6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dc biIgIjI6CW1vdnNiXG4iICIzOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiNDoJc2hs ICQyLCUwXG4iICI1OglhZGRsICQyLCUwXG4iICI2OglpbmNsICUwXG4iICIJam1wIDNiXG4iICIu cHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAi CS5sb25nIDBiLDRiXG4iICIJLmxvbmcgMWIsNWJcbiIgIgkubG9uZyAyYiw2YlxuIiAiLnByZXZp b3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAi MiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gfSB3aGlsZSAoMCk7CiAgICAg ICAgcmV0dXJuIG47Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwpfX2NvbnN0YW50X2Nv cHlfZnJvbV91c2VyX25vY2hlY2sodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVk IGxvbmcgbikKewogICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IHN3aXRjaCAobiAmIDMpIHsg ZGVmYXVsdDogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOlxuIiAi LnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMjoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxu IiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJcG9wbCAlJWVheFxuIiAi CXBvcGwgJTBcbiIgIglzaGwgJDIsJTBcbiIgIglqbXAgMWJcbiIgIi5wcmV2aW91c1xuIiAiLnNl Y3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsMmJcbiIg Ii5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihm cm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDE6IF9fYXNt X18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c2JcbiIgIjI6XG4iICIu c2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4i ICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglzdG9zYlxuIiAiCXBvcGwg JSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJaW5jbCAlMFxuIiAiCWptcCAy YlxuIiAiNDoJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc2JcbiIg Iglwb3BsICUlZWF4XG4iICIJaW5jbCAlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIu c2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxu IiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAi PSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBi cmVhazsgY2FzZSAyOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6 CW1vdnN3XG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJcHVzaGwgJTBc biIgIglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4i ICIJc3Rvc3dcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAi CWFkZGwgJDIsJTBcbiIgIglqbXAgMmJcbiIgIjQ6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVh eCwlJWVheFxuIiAiCXN0b3N3XG4iICIJcG9wbCAlJWVheFxuIiAiCWFkZGwgJDIsJTBcbiIgIglq bXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5h bGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6 ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8p LCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMzogX19hc21fXyBfX3ZvbGF0aWxl X18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjoJbW92c2JcbiIgIjM6XG4iICIu c2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICI0OglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4i ICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglzdG9zd1xuIiAiCXN0b3Ni XG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwgJDIsJTBcbiIgIglhZGRsICQz LCUwXG4iICIJam1wIDJiXG4iICI1OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhc biIgIglzdG9zd1xuIiAiCXN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCWFkZGwgJDMsJTBcbiIg IglqbXAgMmJcbiIgIjY6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0 b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCWluY2wgJTBcbiIgIglqbXAgM2JcbiIgIi5wcmV2aW91 c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcg MGIsNGJcbiIgIgkubG9uZyAxYiw1YlxuIiAiCS5sb25nIDJiLDZiXG4iICIucHJldmlvdXMiIDog Ij1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byks ICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgfSB9IHdoaWxlICgwKTsKICAgICAgICByZXR1 cm4gbjsKfQojIDU5OSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vdWFj Y2Vzcy5oIgpsb25nIHN0cm5jcHlfZnJvbV91c2VyX1IyNDQyOGJlNShjaGFyICpkc3QsIGNvbnN0 IGNoYXIgKnNyYywgbG9uZyBjb3VudCk7CmxvbmcgX19zdHJuY3B5X2Zyb21fdXNlcl9SYzAwM2M2 MzcoY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMsIGxvbmcgY291bnQpOwoKbG9uZyBzdHJubGVu X3VzZXJfUmJjYzMwOGJiKGNvbnN0IGNoYXIgKnN0ciwgbG9uZyBuKTsKdW5zaWduZWQgbG9uZyBj bGVhcl91c2VyX1I3YWVjOTA4OSh2b2lkICptZW0sIHVuc2lnbmVkIGxvbmcgbGVuKTsKdW5zaWdu ZWQgbG9uZyBfX2NsZWFyX3VzZXJfUmYzMzQxMjY4KHZvaWQgKm1lbSwgdW5zaWduZWQgbG9uZyBs ZW4pOwojIDM5ICJ1c2ItdWhjaS5jIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAv aW5jbHVkZS9hc20vaW8uaCIgMQojIDQwICJ1c2ItdWhjaS5jIiAyCiMgMSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9hc20vaXJxLmgiIDEKIyA0MSAidXNiLXVoY2kuYyIgMgoj IDEgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAxCiMg NDIgInVzYi11aGNpLmMiIDIKIyA1NyAidXNiLXVoY2kuYyIKIyAxICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3VzYi5oIiAxCiMgMTMxICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3VzYi5oIgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDEzMiAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC91c2IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvaW9jdGwuaCIgMQojIDEzMyAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC91c2IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8vbGludXgt Mi40LjEwL2luY2x1ZGUvbGludXgvdmVyc2lvbi5oIiAxCiMgMTM0ICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3VzYi5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAxCiMgMTM1ICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3VzYi5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9kZWxheS5oIiAxCiMgMTM2ICIvdXNyL3NyYy9ydWRvL2xp bnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3VzYi5oIiAyCiMgMSAiL3Vzci9zcmMvcnVkby9saW51 eC0yLjQuMTAvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIgMQojIDEzNyAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC91c2IuaCIgMgojIDEgIi91c3Ivc3JjL3J1ZG8v bGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxMzggIi91c3Ivc3JjL3J1 ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdXNiLmgiIDIKIyAxICIvdXNyL3NyYy9ydWRv L2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQojIDEzOSAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC91c2IuaCIgMgoKCgpzdGF0aWMgX19pbmxpbmVf XyB2b2lkIHdhaXRfbXModW5zaWduZWQgaW50IG1zKQp7CiAgICAgICAgaWYoISh7IGludCBfX2Nw dSA9IDA7ICgoKHZvaWQpKChfX2NwdSkpLCBpcnFfc3RhdF9SOWUzNmYwNmVbMF0uX19sb2NhbF9p cnFfY291bnQpICsgKCh2b2lkKSgoX19jcHUpKSwgaXJxX3N0YXRfUjllMzZmMDZlWzBdLl9fbG9j YWxfYmhfY291bnQpICE9IDApOyB9KSkgewogICAgICAgICAgICAgICAgZ2V0X2N1cnJlbnQoKS0+ c3RhdGUgPSAyOwogICAgICAgICAgICAgICAgc2NoZWR1bGVfdGltZW91dF9SMTdkNTlkMDEoMSAr IG1zICogMTAwIC8gMTAwMCk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICAgICAgICAg ICggKF9fYnVpbHRpbl9jb25zdGFudF9wKG1zKSAmJiAobXMpPD01KSA/IChfX2J1aWx0aW5fY29u c3RhbnRfcCgobXMpKjEwMDApID8gKCgobXMpKjEwMDApID4gMjAwMDAgPyBfX2JhZF91ZGVsYXko KSA6IF9fY29uc3RfdWRlbGF5X1JlYWUzZGZkNigoKG1zKSoxMDAwKSAqIDB4MTBjNnVsKSkgOiBf X3VkZWxheV9SOWU3ZDZiZDAoKG1zKSoxMDAwKSkgOiAoe3Vuc2lnbmVkIGxvbmcgbXNlYz0obXMp OyB3aGlsZSAobXNlYy0tKSAoX19idWlsdGluX2NvbnN0YW50X3AoMTAwMCkgPyAoKDEwMDApID4g MjAwMDAgPyBfX2JhZF91ZGVsYXkoKSA6IF9fY29uc3RfdWRlbGF5X1JlYWUzZGZkNigoMTAwMCkg KiAweDEwYzZ1bCkpIDogX191ZGVsYXlfUjllN2Q2YmQwKDEwMDApKTt9KSk7Cn0KCnR5cGVkZWYg c3RydWN0IHsKICAgICAgICBfX3U4IHJlcXVlc3R0eXBlOwogICAgICAgIF9fdTggcmVxdWVzdDsK ICAgICAgICBfX3UxNiB2YWx1ZTsKICAgICAgICBfX3UxNiBpbmRleDsKICAgICAgICBfX3UxNiBs ZW5ndGg7Cn0gZGV2cmVxdWVzdCBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiMgMTkwICIvdXNy L3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3VzYi5oIgpzdHJ1Y3QgdXNiX2Rl dm1hcCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkZXZpY2VtYXBbMTI4IC8gKDgqc2l6ZW9mKHVu c2lnbmVkIGxvbmcpKV07Cn07CgoKCnN0cnVjdCB1c2JfYnVzbWFwIHsKICAgICAgICB1bnNpZ25l ZCBsb25nIGJ1c21hcFs2NCAvICg4KnNpemVvZih1bnNpZ25lZCBsb25nKSldOwp9OwojIDIxNCAi L3Vzci9zcmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC91c2IuaCIKc3RydWN0IHVz Yl9kZXNjcmlwdG9yX2hlYWRlciB7CiAgICAgICAgX191OCBiTGVuZ3RoOwogICAgICAgIF9fdTgg YkRlc2NyaXB0b3JUeXBlOwp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKCgpzdHJ1Y3QgdXNi X2RldmljZV9kZXNjcmlwdG9yIHsKICAgICAgICBfX3U4IGJMZW5ndGg7CiAgICAgICAgX191OCBi RGVzY3JpcHRvclR5cGU7CiAgICAgICAgX191MTYgYmNkVVNCOwogICAgICAgIF9fdTggYkRldmlj ZUNsYXNzOwogICAgICAgIF9fdTggYkRldmljZVN1YkNsYXNzOwogICAgICAgIF9fdTggYkRldmlj ZVByb3RvY29sOwogICAgICAgIF9fdTggYk1heFBhY2tldFNpemUwOwogICAgICAgIF9fdTE2IGlk VmVuZG9yOwogICAgICAgIF9fdTE2IGlkUHJvZHVjdDsKICAgICAgICBfX3UxNiBiY2REZXZpY2U7 CiAgICAgICAgX191OCBpTWFudWZhY3R1cmVyOwogICAgICAgIF9fdTggaVByb2R1Y3Q7CiAgICAg ICAgX191OCBpU2VyaWFsTnVtYmVyOwogICAgICAgIF9fdTggYk51bUNvbmZpZ3VyYXRpb25zOwp9 IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKCgpzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0 b3IgewogICAgICAgIF9fdTggYkxlbmd0aCBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAg ICAgX191OCBiRGVzY3JpcHRvclR5cGUgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwogICAgICAg IF9fdTggYkVuZHBvaW50QWRkcmVzcyBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAg X191OCBibUF0dHJpYnV0ZXMgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwogICAgICAgIF9fdTE2 IHdNYXhQYWNrZXRTaXplIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGJJ bnRlcnZhbCBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191OCBiUmVmcmVzaCBf X2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191OCBiU3luY2hBZGRyZXNzIF9fYXR0 cmlidXRlX18gKChwYWNrZWQpKTsKCiAgICAgICAgdW5zaWduZWQgY2hhciAqZXh0cmE7CiAgICAg ICAgaW50IGV4dHJhbGVuOwp9OwoKCnN0cnVjdCB1c2JfaW50ZXJmYWNlX2Rlc2NyaXB0b3Igewog ICAgICAgIF9fdTggYkxlbmd0aCBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191 OCBiRGVzY3JpcHRvclR5cGUgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwogICAgICAgIF9fdTgg YkludGVyZmFjZU51bWJlciBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191OCBi QWx0ZXJuYXRlU2V0dGluZyBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191OCBi TnVtRW5kcG9pbnRzIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGJJbnRl cmZhY2VDbGFzcyBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191OCBiSW50ZXJm YWNlU3ViQ2xhc3MgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwogICAgICAgIF9fdTggYkludGVy ZmFjZVByb3RvY29sIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGlJbnRl cmZhY2UgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwoKICAgICAgICBzdHJ1Y3QgdXNiX2VuZHBv aW50X2Rlc2NyaXB0b3IgKmVuZHBvaW50OwoKICAgICAgICB1bnNpZ25lZCBjaGFyICpleHRyYTsK ICAgICAgICBpbnQgZXh0cmFsZW47Cn07CgpzdHJ1Y3QgdXNiX2ludGVyZmFjZSB7CiAgICAgICAg c3RydWN0IHVzYl9pbnRlcmZhY2VfZGVzY3JpcHRvciAqYWx0c2V0dGluZzsKCiAgICAgICAgaW50 IGFjdF9hbHRzZXR0aW5nOwogICAgICAgIGludCBudW1fYWx0c2V0dGluZzsKICAgICAgICBpbnQg bWF4X2FsdHNldHRpbmc7CgogICAgICAgIHN0cnVjdCB1c2JfZHJpdmVyICpkcml2ZXI7CiAgICAg ICAgdm9pZCAqcHJpdmF0ZV9kYXRhOwp9OwoKCnN0cnVjdCB1c2JfY29uZmlnX2Rlc2NyaXB0b3Ig ewogICAgICAgIF9fdTggYkxlbmd0aCBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAg X191OCBiRGVzY3JpcHRvclR5cGUgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwogICAgICAgIF9f dTE2IHdUb3RhbExlbmd0aCBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191OCBi TnVtSW50ZXJmYWNlcyBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191OCBiQ29u ZmlndXJhdGlvblZhbHVlIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGlD b25maWd1cmF0aW9uIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGJtQXR0 cmlidXRlcyBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191OCBNYXhQb3dlciBf X2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CgogICAgICAgIHN0cnVjdCB1c2JfaW50ZXJmYWNlICpp bnRlcmZhY2U7CgogICAgICAgIHVuc2lnbmVkIGNoYXIgKmV4dHJhOwogICAgICAgIGludCBleHRy YWxlbjsKfTsKCgpzdHJ1Y3QgdXNiX3N0cmluZ19kZXNjcmlwdG9yIHsKICAgICAgICBfX3U4IGJM ZW5ndGg7CiAgICAgICAgX191OCBiRGVzY3JpcHRvclR5cGU7CiAgICAgICAgX191MTYgd0RhdGFb MV07Cn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwoKc3RydWN0IHVzYl9kZXZpY2U7CiMgMzQ4 ICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3VzYi5oIgpzdHJ1Y3Qg dXNiX2RldmljZV9pZCB7CgoKCiAgICAgICAgX191MTYgbWF0Y2hfZmxhZ3M7CgoKCgoKCiAgICAg ICAgX191MTYgaWRWZW5kb3I7CiAgICAgICAgX191MTYgaWRQcm9kdWN0OwogICAgICAgIF9fdTE2 IGJjZERldmljZV9sbywgYmNkRGV2aWNlX2hpOwoKCgoKCiAgICAgICAgX191OCBiRGV2aWNlQ2xh c3M7CiAgICAgICAgX191OCBiRGV2aWNlU3ViQ2xhc3M7CiAgICAgICAgX191OCBiRGV2aWNlUHJv dG9jb2w7CgoKCgoKICAgICAgICBfX3U4IGJJbnRlcmZhY2VDbGFzczsKICAgICAgICBfX3U4IGJJ bnRlcmZhY2VTdWJDbGFzczsKICAgICAgICBfX3U4IGJJbnRlcmZhY2VQcm90b2NvbDsKCgoKCiAg ICAgICAgdW5zaWduZWQgbG9uZyBkcml2ZXJfaW5mbzsKfTsKCnN0cnVjdCB1c2JfZHJpdmVyIHsK ICAgICAgICBjb25zdCBjaGFyICpuYW1lOwoKICAgICAgICB2b2lkICooKnByb2JlKSgKICAgICAg ICAgICAgc3RydWN0IHVzYl9kZXZpY2UgKmRldiwKICAgICAgICAgICAgdW5zaWduZWQgaW50ZiwK ICAgICAgICAgICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkCiAgICAgICAgICAgICk7 CiAgICAgICAgdm9pZCAoKmRpc2Nvbm5lY3QpKHN0cnVjdCB1c2JfZGV2aWNlICosIHZvaWQgKik7 CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZHJpdmVyX2xpc3Q7CgogICAgICAgIHN0cnVjdCBm aWxlX29wZXJhdGlvbnMgKmZvcHM7CiAgICAgICAgaW50IG1pbm9yOwoKICAgICAgICBzdHJ1Y3Qg c2VtYXBob3JlIHNlcmlhbGl6ZTsKCgogICAgICAgIGludCAoKmlvY3RsKShzdHJ1Y3QgdXNiX2Rl dmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgY29kZSwgdm9pZCAqYnVmKTsKCgoKCiAgICAgICAgY29u c3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkX3RhYmxlOwoKCgoKCn07CiMgNDMxICIvdXNyL3Ny Yy9ydWRvL2xpbnV4LTIuNC4xMC9pbmNsdWRlL2xpbnV4L3VzYi5oIgp0eXBlZGVmIHN0cnVjdAp7 CiAgICAgICAgdW5zaWduZWQgaW50IG9mZnNldDsKICAgICAgICB1bnNpZ25lZCBpbnQgbGVuZ3Ro OwogICAgICAgIHVuc2lnbmVkIGludCBhY3R1YWxfbGVuZ3RoOwogICAgICAgIHVuc2lnbmVkIGlu dCBzdGF0dXM7Cn0gaXNvX3BhY2tldF9kZXNjcmlwdG9yX3QsICpwaXNvX3BhY2tldF9kZXNjcmlw dG9yX3Q7CgpzdHJ1Y3QgdXJiOwp0eXBlZGVmIHZvaWQgKCp1c2JfY29tcGxldGVfdCkoc3RydWN0 IHVyYiAqKTsKCnR5cGVkZWYgc3RydWN0IHVyYgp7CiAgICAgICAgc3BpbmxvY2tfdCBsb2NrOwog ICAgICAgIHZvaWQgKmhjcHJpdjsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHVyYl9saXN0Owog ICAgICAgIHN0cnVjdCB1cmIgKm5leHQ7CiAgICAgICAgc3RydWN0IHVzYl9kZXZpY2UgKmRldjsK ICAgICAgICB1bnNpZ25lZCBpbnQgcGlwZTsKICAgICAgICBpbnQgc3RhdHVzOwogICAgICAgIHVu c2lnbmVkIGludCB0cmFuc2Zlcl9mbGFnczsKICAgICAgICB2b2lkICp0cmFuc2Zlcl9idWZmZXI7 CiAgICAgICAgaW50IHRyYW5zZmVyX2J1ZmZlcl9sZW5ndGg7CiAgICAgICAgaW50IGFjdHVhbF9s ZW5ndGg7CiAgICAgICAgaW50IGJhbmR3aWR0aDsKICAgICAgICB1bnNpZ25lZCBjaGFyICpzZXR1 cF9wYWNrZXQ7CgogICAgICAgIGludCBzdGFydF9mcmFtZTsKICAgICAgICBpbnQgbnVtYmVyX29m X3BhY2tldHM7CiAgICAgICAgaW50IGludGVydmFsOwogICAgICAgIGludCBlcnJvcl9jb3VudDsK ICAgICAgICBpbnQgdGltZW91dDsKCiAgICAgICAgdm9pZCAqY29udGV4dDsKICAgICAgICB1c2Jf Y29tcGxldGVfdCBjb21wbGV0ZV9SOTQyNjEzYWQ7CgogICAgICAgIGlzb19wYWNrZXRfZGVzY3Jp cHRvcl90IGlzb19mcmFtZV9kZXNjWzBdOwp9IHVyYl90LCAqcHVyYl90OwojIDUzMSAiL3Vzci9z cmMvcnVkby9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC91c2IuaCIKcHVyYl90IHVzYl9hbGxv Y191cmJfUjEzOWE0NDRmKGludCBpc29fcGFja2V0cyk7CnZvaWQgdXNiX2ZyZWVfdXJiX1IzZDVj MGM1OCAocHVyYl90IHB1cmIpOwppbnQgdXNiX3N1Ym1pdF91cmJfUjMzMjdkNjE4KHB1cmJfdCBw dXJiKTsKaW50IHVzYl91bmxpbmtfdXJiX1I5Nzg2OTgyNShwdXJiX3QgcHVyYik7CmludCB1c2Jf aW50ZXJuYWxfY29udHJvbF9tc2coc3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYsIHVuc2lnbmVk IGludCBwaXBlLCBkZXZyZXF1ZXN0ICpjbWQsIHZvaWQgKmRhdGEsIGludCBsZW4sIGludCB0aW1l b3V0KTsKaW50IHVzYl9idWxrX21zZ19SNTg5Y2JkZTQoc3RydWN0IHVzYl9kZXZpY2UgKnVzYl9k ZXYsIHVuc2lnbmVkIGludCBwaXBlLCB2b2lkICpkYXRhLCBpbnQgbGVuLCBpbnQgKmFjdHVhbF9s ZW5ndGgsIGludCB0aW1lb3V0KTsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgd2FpdF9xdWV1ZV9o ZWFkX3QgKndha2V1cDsKCiAgdm9pZCogc3R1ZmY7Cgp9IGFwaV93cmFwcGVyX2RhdGE7CgoKCnN0 cnVjdCB1c2Jfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqYWxsb2NhdGUpKHN0cnVjdCB1c2Jf ZGV2aWNlICopOwogICAgICAgIGludCAoKmRlYWxsb2NhdGUpKHN0cnVjdCB1c2JfZGV2aWNlICop OwogICAgICAgIGludCAoKmdldF9mcmFtZV9udW1iZXIpIChzdHJ1Y3QgdXNiX2RldmljZSAqdXNi X2Rldik7CiAgICAgICAgaW50ICgqc3VibWl0X3VyYikgKHN0cnVjdCB1cmIqIHB1cmIpOwogICAg ICAgIGludCAoKnVubGlua191cmIpIChzdHJ1Y3QgdXJiKiBwdXJiKTsKfTsKCgoKCgoKc3RydWN0 IHVzYl9idXMgewogICAgICAgIGludCBidXNudW07CgoKICAgICAgICBpbnQgZGV2bnVtX25leHQ7 CgoKICAgICAgICBzdHJ1Y3QgdXNiX2Rldm1hcCBkZXZtYXA7CiAgICAgICAgc3RydWN0IHVzYl9v cGVyYXRpb25zICpvcDsKICAgICAgICBzdHJ1Y3QgdXNiX2RldmljZSAqcm9vdF9odWI7CiAgICAg ICAgc3RydWN0IGxpc3RfaGVhZCBidXNfbGlzdDsKICAgICAgICB2b2lkICpoY3ByaXY7CgogICAg ICAgIGludCBiYW5kd2lkdGhfYWxsb2NhdGVkOwoKCgoKICAgICAgICBpbnQgYmFuZHdpZHRoX2lu dF9yZXFzOwogICAgICAgIGludCBiYW5kd2lkdGhfaXNvY19yZXFzOwoKCiAgICAgICAgc3RydWN0 IGxpc3RfaGVhZCBpbm9kZXM7CgogICAgICAgIGF0b21pY190IHJlZmNudDsKfTsKCgoKCgoKCnN0 cnVjdCB1c2JfZGV2aWNlIHsKICAgICAgICBpbnQgZGV2bnVtOwoKICAgICAgICBlbnVtIHsKICAg ICAgICAgICAgICAgIFVTQl9TUEVFRF9VTktOT1dOID0gMCwKICAgICAgICAgICAgICAgIFVTQl9T UEVFRF9MT1csIFVTQl9TUEVFRF9GVUxMLAogICAgICAgICAgICAgICAgVVNCX1NQRUVEX0hJR0gK ICAgICAgICB9IHNwZWVkOwoKICAgICAgICBzdHJ1Y3QgdXNiX2RldmljZSAqdHQ7CiAgICAgICAg aW50IHR0cG9ydDsKCiAgICAgICAgYXRvbWljX3QgcmVmY250OwogICAgICAgIHN0cnVjdCBzZW1h cGhvcmUgc2VyaWFsaXplOwoKICAgICAgICB1bnNpZ25lZCBpbnQgdG9nZ2xlWzJdOwogICAgICAg IHVuc2lnbmVkIGludCBoYWx0ZWRbMl07CgogICAgICAgIGludCBlcG1heHBhY2tldGluWzE2XTsK ICAgICAgICBpbnQgZXBtYXhwYWNrZXRvdXRbMTZdOwoKICAgICAgICBzdHJ1Y3QgdXNiX2Rldmlj ZSAqcGFyZW50OwogICAgICAgIHN0cnVjdCB1c2JfYnVzICpidXM7CgogICAgICAgIHN0cnVjdCB1 c2JfZGV2aWNlX2Rlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICAgICBzdHJ1Y3QgdXNiX2NvbmZp Z19kZXNjcmlwdG9yICpjb25maWc7CiAgICAgICAgc3RydWN0IHVzYl9jb25maWdfZGVzY3JpcHRv ciAqYWN0Y29uZmlnOwoKICAgICAgICBjaGFyICoqcmF3ZGVzY3JpcHRvcnM7CgogICAgICAgIGlu dCBoYXZlX2xhbmdpZDsKICAgICAgICBpbnQgc3RyaW5nX2xhbmdpZDsKCiAgICAgICAgdm9pZCAq aGNwcml2OwoKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpbm9kZXM7CiAgICAgICAgc3RydWN0 IGxpc3RfaGVhZCBmaWxlbGlzdDsKIyA2NDUgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvdXNiLmgiCiAgICAgICAgaW50IG1heGNoaWxkOwogICAgICAgIHN0cnVjdCB1 c2JfZGV2aWNlICpjaGlsZHJlblsoMTYpXTsKfTsKCmV4dGVybiBzdHJ1Y3QgdXNiX2ludGVyZmFj ZSAqdXNiX2lmbnVtX3RvX2lmX1IzMWUwMDJhNihzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1bnNp Z25lZCBpZm51bSk7CmV4dGVybiBzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgKnVzYl9l cG51bV90b19lcF9kZXNjX1JiODJhMTY2YihzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1bnNpZ25l ZCBlcG51bSk7CgpleHRlcm4gaW50IHVzYl9yZWdpc3Rlcl9SYjQwNjkyMWQoc3RydWN0IHVzYl9k cml2ZXIgKik7CmV4dGVybiB2b2lkIHVzYl9kZXJlZ2lzdGVyX1JhZDgwN2Q0MChzdHJ1Y3QgdXNi X2RyaXZlciAqKTsKZXh0ZXJuIHZvaWQgdXNiX3NjYW5fZGV2aWNlc19SY2E0ZjYzMDEodm9pZCk7 CgoKZXh0ZXJuIHZvaWQgdXNiX2RyaXZlcl9jbGFpbV9pbnRlcmZhY2VfUjUxNjk5MjM1KHN0cnVj dCB1c2JfZHJpdmVyICpkcml2ZXIsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppZmFjZSwgdm9pZCog cHJpdik7CmV4dGVybiBpbnQgdXNiX2ludGVyZmFjZV9jbGFpbWVkX1JkODAxNjdjZChzdHJ1Y3Qg dXNiX2ludGVyZmFjZSAqaWZhY2UpOwpleHRlcm4gdm9pZCB1c2JfZHJpdmVyX3JlbGVhc2VfaW50 ZXJmYWNlX1I1OGI3ZDA0MChzdHJ1Y3QgdXNiX2RyaXZlciAqZHJpdmVyLCBzdHJ1Y3QgdXNiX2lu dGVyZmFjZSAqaWZhY2UpOwpjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqdXNiX21hdGNoX2lk X1IzMzgyNDIyNihzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHVzYl9kZXZp Y2VfaWQgKmlkKTsKCmV4dGVybiBzdHJ1Y3QgdXNiX2J1cyAqdXNiX2FsbG9jX2J1c19SNzNiMjg4 ZmEoc3RydWN0IHVzYl9vcGVyYXRpb25zICopOwpleHRlcm4gdm9pZCB1c2JfZnJlZV9idXNfUjM2 MzdmZGI0KHN0cnVjdCB1c2JfYnVzICopOwpleHRlcm4gdm9pZCB1c2JfcmVnaXN0ZXJfYnVzX1Jj YmUzMTkzMyhzdHJ1Y3QgdXNiX2J1cyAqKTsKZXh0ZXJuIHZvaWQgdXNiX2RlcmVnaXN0ZXJfYnVz X1JiYzhiZmM5NihzdHJ1Y3QgdXNiX2J1cyAqKTsKCmV4dGVybiBzdHJ1Y3QgdXNiX2RldmljZSAq dXNiX2FsbG9jX2Rldl9SMTcxOTYxZDMoc3RydWN0IHVzYl9kZXZpY2UgKnBhcmVudCwgc3RydWN0 IHVzYl9idXMgKik7CmV4dGVybiB2b2lkIHVzYl9mcmVlX2Rldl9SNDFiZDgwMTEoc3RydWN0IHVz Yl9kZXZpY2UgKik7CmV4dGVybiB2b2lkIHVzYl9pbmNfZGV2X3VzZV9SZDZlM2VlODYoc3RydWN0 IHVzYl9kZXZpY2UgKik7CgoKZXh0ZXJuIGludCB1c2JfY2hlY2tfYmFuZHdpZHRoX1JiODRkN2Rj NiAoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgc3RydWN0IHVyYiAqdXJiKTsKZXh0ZXJuIHZvaWQg dXNiX2NsYWltX2JhbmR3aWR0aF9SZWJjYzkxZjMgKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIHN0 cnVjdCB1cmIgKnVyYiwgaW50IGJ1c3RpbWUsIGludCBpc29jKTsKZXh0ZXJuIHZvaWQgdXNiX3Jl bGVhc2VfYmFuZHdpZHRoX1JmODA1NGY3YihzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCBzdHJ1Y3Qg dXJiICp1cmIsIGludCBpc29jKTsKCmV4dGVybiBpbnQgdXNiX2NvbnRyb2xfbXNnX1I2NzRlNzE0 YyhzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSwgX191OCByZXF1ZXN0 LCBfX3U4IHJlcXVlc3R0eXBlLCBfX3UxNiB2YWx1ZSwgX191MTYgaW5kZXgsIHZvaWQgKmRhdGEs IF9fdTE2IHNpemUsIGludCB0aW1lb3V0KTsKCmV4dGVybiBpbnQgdXNiX3Jvb3RfaHViX3N0cmlu Z19SYTY4NzE4ZjAoaW50IGlkLCBpbnQgc2VyaWFsLCBjaGFyICp0eXBlLCBfX3U4ICpkYXRhLCBp bnQgbGVuKTsKZXh0ZXJuIHZvaWQgdXNiX2Nvbm5lY3RfUjljZmNhNDc3KHN0cnVjdCB1c2JfZGV2 aWNlICpkZXYpOwpleHRlcm4gdm9pZCB1c2JfZGlzY29ubmVjdF9SOWFmNmNlYzkoc3RydWN0IHVz Yl9kZXZpY2UgKiopOwoKZXh0ZXJuIHZvaWQgdXNiX2Rlc3Ryb3lfY29uZmlndXJhdGlvbihzdHJ1 Y3QgdXNiX2RldmljZSAqZGV2KTsKCmludCB1c2JfZ2V0X2N1cnJlbnRfZnJhbWVfbnVtYmVyX1I4 OTAzMDg4YSAoc3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYpOwojIDc2MCAiL3Vzci9zcmMvcnVk by9saW51eC0yLjQuMTAvaW5jbHVkZS9saW51eC91c2IuaCIKc3RhdGljIGlubGluZSB1bnNpZ25l ZCBpbnQgX19jcmVhdGVfcGlwZShzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQg ZW5kcG9pbnQpCnsKICAgICAgICByZXR1cm4gKGRldi0+ZGV2bnVtIDw8IDgpIHwgKGVuZHBvaW50 IDw8IDE1KSB8CiAgICAgICAgICAgICAgICAoKGRldi0+c3BlZWQgPT0gVVNCX1NQRUVEX0xPVykg PDwgMjYpOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBfX2RlZmF1bHRfcGlwZShzdHJ1 Y3QgdXNiX2RldmljZSAqZGV2KQp7CiAgICAgICAgcmV0dXJuICgoZGV2LT5zcGVlZCA9PSBVU0Jf U1BFRURfTE9XKSA8PCAyNik7Cn0KIyA3ODYgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2lu Y2x1ZGUvbGludXgvdXNiLmgiCmludCB1c2JfbmV3X2RldmljZV9SYTFjYzkxMjYoc3RydWN0IHVz Yl9kZXZpY2UgKmRldik7CmludCB1c2JfcmVzZXRfZGV2aWNlX1JhYTBmM2EyOChzdHJ1Y3QgdXNi X2RldmljZSAqZGV2KTsKaW50IHVzYl9zZXRfYWRkcmVzc19SNjhjMWI4NGMoc3RydWN0IHVzYl9k ZXZpY2UgKmRldik7CmludCB1c2JfZ2V0X2Rlc2NyaXB0b3JfUjExZTlkN2VlKHN0cnVjdCB1c2Jf ZGV2aWNlICpkZXYsIHVuc2lnbmVkIGNoYXIgZGVzY3R5cGUsCiAgICAgICAgdW5zaWduZWQgY2hh ciBkZXNjaW5kZXgsIHZvaWQgKmJ1ZiwgaW50IHNpemUpOwppbnQgdXNiX2dldF9jbGFzc19kZXNj cmlwdG9yX1IxMjU0MmU4ZChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCBpbnQgaWZudW0sIHVuc2ln bmVkIGNoYXIgZGVzY3R5cGUsCiAgICAgICAgdW5zaWduZWQgY2hhciBkZXNjaW5kZXgsIHZvaWQg KmJ1ZiwgaW50IHNpemUpOwppbnQgdXNiX2dldF9kZXZpY2VfZGVzY3JpcHRvcl9SMjJmM2ZkMTQo c3RydWN0IHVzYl9kZXZpY2UgKmRldik7CmludCBfX3VzYl9nZXRfZXh0cmFfZGVzY3JpcHRvcl9S OTkyNGM0OTYoY2hhciAqYnVmZmVyLCB1bnNpZ25lZCBzaXplLCB1bnNpZ25lZCBjaGFyIHR5cGUs IHZvaWQgKipwdHIpOwppbnQgdXNiX2dldF9zdGF0dXMoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwg aW50IHR5cGUsIGludCB0YXJnZXQsIHZvaWQgKmRhdGEpOwppbnQgdXNiX2dldF9jb25maWd1cmF0 aW9uX1JlNGJhYzI0NyhzdHJ1Y3QgdXNiX2RldmljZSAqZGV2KTsKaW50IHVzYl9nZXRfcHJvdG9j b2xfUjQxOGJlYTQyKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIGludCBpZm51bSk7CmludCB1c2Jf c2V0X3Byb3RvY29sX1JmMWYzNjQ4MShzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCBpbnQgaWZudW0s IGludCBwcm90b2NvbCk7CmludCB1c2Jfc2V0X2ludGVyZmFjZV9SYWE3NWM1ZDcoc3RydWN0IHVz Yl9kZXZpY2UgKmRldiwgaW50IGlmbnVtLCBpbnQgYWx0ZXJuYXRlKTsKaW50IHVzYl9zZXRfaWRs ZV9SZWMxZmI1YmIoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgaW50IGlmbnVtLCBpbnQgZHVyYXRp b24sIGludCByZXBvcnRfaWQpOwppbnQgdXNiX3NldF9jb25maWd1cmF0aW9uX1JlNjVmMDNlZihz dHJ1Y3QgdXNiX2RldmljZSAqZGV2LCBpbnQgY29uZmlndXJhdGlvbik7CmludCB1c2JfZ2V0X3Jl cG9ydF9SODRjNjJhNzUoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgaW50IGlmbnVtLCB1bnNpZ25l ZCBjaGFyIHR5cGUsCiAgICAgICAgdW5zaWduZWQgY2hhciBpZCwgdm9pZCAqYnVmLCBpbnQgc2l6 ZSk7CmludCB1c2Jfc2V0X3JlcG9ydF9SZTgwYmQ2ZmQoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwg aW50IGlmbnVtLCB1bnNpZ25lZCBjaGFyIHR5cGUsCiAgICAgICAgdW5zaWduZWQgY2hhciBpZCwg dm9pZCAqYnVmLCBpbnQgc2l6ZSk7CmludCB1c2Jfc3RyaW5nX1JjM2YyZjBiNChzdHJ1Y3QgdXNi X2RldmljZSAqZGV2LCBpbnQgaW5kZXgsIGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUpOwppbnQgdXNi X2NsZWFyX2hhbHRfUjg4NmE3ODhmKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIGludCBwaXBlKTsK dm9pZCB1c2Jfc2V0X21heHBhY2tldChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2KTsKIyA4MzYgIi91 c3Ivc3JjL3J1ZG8vbGludXgtMi40LjEwL2luY2x1ZGUvbGludXgvdXNiLmgiCnZvaWQgdXNiX3No b3dfZGV2aWNlX2Rlc2NyaXB0b3Ioc3RydWN0IHVzYl9kZXZpY2VfZGVzY3JpcHRvciAqKTsKdm9p ZCB1c2Jfc2hvd19jb25maWdfZGVzY3JpcHRvcihzdHJ1Y3QgdXNiX2NvbmZpZ19kZXNjcmlwdG9y ICopOwp2b2lkIHVzYl9zaG93X2ludGVyZmFjZV9kZXNjcmlwdG9yKHN0cnVjdCB1c2JfaW50ZXJm YWNlX2Rlc2NyaXB0b3IgKik7CnZvaWQgdXNiX3Nob3dfZW5kcG9pbnRfZGVzY3JpcHRvcihzdHJ1 Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgKik7CnZvaWQgdXNiX3Nob3dfZGV2aWNlKHN0cnVj dCB1c2JfZGV2aWNlICopOwp2b2lkIHVzYl9zaG93X3N0cmluZyhzdHJ1Y3QgdXNiX2RldmljZSAq ZGV2LCBjaGFyICppZCwgaW50IGluZGV4KTsKIyA4NTcgIi91c3Ivc3JjL3J1ZG8vbGludXgtMi40 LjEwL2luY2x1ZGUvbGludXgvdXNiLmgiCmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIHVzYl9kcml2 ZXJfbGlzdDsKZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgdXNiX2J1c19saXN0OwpleHRlcm4gcnds b2NrX3QgdXNiX2J1c19saXN0X2xvY2s7CiMgODcxICIvdXNyL3NyYy9ydWRvL2xpbnV4LTIuNC4x MC9pbmNsdWRlL2xpbnV4L3VzYi5oIgpleHRlcm4gdm9pZCB1c2JkZXZmc19hZGRfYnVzKHN0cnVj dCB1c2JfYnVzICpidXMpOwpleHRlcm4gdm9pZCB1c2JkZXZmc19yZW1vdmVfYnVzKHN0cnVjdCB1 c2JfYnVzICpidXMpOwpleHRlcm4gdm9pZCB1c2JkZXZmc19hZGRfZGV2aWNlKHN0cnVjdCB1c2Jf ZGV2aWNlICpkZXYpOwpleHRlcm4gdm9pZCB1c2JkZXZmc19yZW1vdmVfZGV2aWNlKHN0cnVjdCB1 c2JfZGV2aWNlICpkZXYpOwoKZXh0ZXJuIGludCB1c2JkZXZmc19pbml0KHZvaWQpOwpleHRlcm4g dm9pZCB1c2JkZXZmc19jbGVhbnVwKHZvaWQpOwojIDU4ICJ1c2ItdWhjaS5jIiAyCiMgMSAidXNi LXVoY2kuaCIgMQojIDEwICJ1c2ItdWhjaS5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHVoY2lf d2FpdF9tcyh1bnNpZ25lZCBpbnQgbXMpCnsKICAgICAgICBpZighKHsgaW50IF9fY3B1ID0gMDsg KCgodm9pZCkoKF9fY3B1KSksIGlycV9zdGF0X1I5ZTM2ZjA2ZVswXS5fX2xvY2FsX2lycV9jb3Vu dCkgKyAoKHZvaWQpKChfX2NwdSkpLCBpcnFfc3RhdF9SOWUzNmYwNmVbMF0uX19sb2NhbF9iaF9j b3VudCkgIT0gMCk7IH0pKQogICAgICAgIHsKICAgICAgICAgICAgICAgIGdldF9jdXJyZW50KCkt PnN0YXRlID0gMjsKICAgICAgICAgICAgICAgIHNjaGVkdWxlX3RpbWVvdXRfUjE3ZDU5ZDAxKDEg KyBtcyAqIDEwMCAvIDEwMDApOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICAgICAg ICAoIChfX2J1aWx0aW5fY29uc3RhbnRfcChtcykgJiYgKG1zKTw9NSkgPyAoX19idWlsdGluX2Nv bnN0YW50X3AoKG1zKSoxMDAwKSA/ICgoKG1zKSoxMDAwKSA+IDIwMDAwID8gX19iYWRfdWRlbGF5 KCkgOiBfX2NvbnN0X3VkZWxheV9SZWFlM2RmZDYoKChtcykqMTAwMCkgKiAweDEwYzZ1bCkpIDog X191ZGVsYXlfUjllN2Q2YmQwKChtcykqMTAwMCkpIDogKHt1bnNpZ25lZCBsb25nIG1zZWM9KG1z KTsgd2hpbGUgKG1zZWMtLSkgKF9fYnVpbHRpbl9jb25zdGFudF9wKDEwMDApID8gKCgxMDAwKSA+ IDIwMDAwID8gX19iYWRfdWRlbGF5KCkgOiBfX2NvbnN0X3VkZWxheV9SZWFlM2RmZDYoKDEwMDAp ICogMHgxMGM2dWwpKSA6IF9fdWRlbGF5X1I5ZTdkNmJkMCgxMDAwKSk7fSkpOwp9CiMgMTI3ICJ1 c2ItdWhjaS5oIgp0eXBlZGVmIGVudW0gewogICAgICAgIFREX1RZUEUsIFFIX1RZUEUKfSB1aGNp X2Rlc2NfdHlwZV90OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIF9fdTMyIGxpbms7CiAgICAg ICAgX191MzIgc3RhdHVzOwogICAgICAgIF9fdTMyIGluZm87CiAgICAgICAgX191MzIgYnVmZmVy Owp9IHVoY2lfdGRfdCwgKnB1aGNpX3RkX3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgX191 MzIgaGVhZDsKICAgICAgICBfX3UzMiBlbGVtZW50Owp9IHVoY2lfcWhfdCwgKnB1aGNpX3FoX3Q7 Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgdWhjaV90 ZF90IHRkOwogICAgICAgICAgICAgICAgdWhjaV9xaF90IHFoOwogICAgICAgIH0gaHc7CiAgICAg ICAgdWhjaV9kZXNjX3R5cGVfdCB0eXBlOwogICAgICAgIGRtYV9hZGRyX3QgZG1hX2FkZHI7CiAg ICAgICAgc3RydWN0IGxpc3RfaGVhZCBob3Jpem9udGFsOwogICAgICAgIHN0cnVjdCBsaXN0X2hl YWQgdmVydGljYWw7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkZXNjX2xpc3Q7CiAgICAgICAg aW50IGxhc3RfdXNlZDsKfSB1aGNpX2Rlc2NfdCwgKnB1aGNpX2Rlc2NfdDsKCnR5cGVkZWYgc3Ry dWN0IHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRlc2NfbGlzdDsKICAgICAgICBkbWFfYWRk cl90IHNldHVwX3BhY2tldF9kbWE7CiAgICAgICAgZG1hX2FkZHJfdCB0cmFuc2Zlcl9idWZmZXJf ZG1hOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRlZDsKICAgICAgICB1cmJfdCAqbmV4dF9x dWV1ZWRfdXJiOwogICAgICAgIHVyYl90ICpwcmV2X3F1ZXVlZF91cmI7CiAgICAgICAgdWhjaV9k ZXNjX3QgKmJvdHRvbV9xaDsKICAgICAgICB1aGNpX2Rlc2NfdCAqbmV4dF9xaDsKICAgICAgICBj aGFyIHVzZV9sb29wOwogICAgICAgIGNoYXIgZmxhZ3M7Cn0gdXJiX3ByaXZfdCwgKnB1cmJfcHJp dl90OwoKc3RydWN0IHZpcnRfcm9vdF9odWIgewogICAgICAgIGludCBkZXZudW07CiAgICAgICAg dm9pZCAqdXJiOwogICAgICAgIHZvaWQgKmludF9hZGRyOwogICAgICAgIGludCBzZW5kOwogICAg ICAgIGludCBpbnRlcnZhbDsKICAgICAgICBpbnQgbnVtcG9ydHM7CiAgICAgICAgaW50IGNfcF9y WzhdOwogICAgICAgIHN0cnVjdCB0aW1lcl9saXN0IHJoX2ludF90aW1lcjsKfTsKCnR5cGVkZWYg c3RydWN0IHVoY2kgewogICAgICAgIGludCBpcnE7CiAgICAgICAgdW5zaWduZWQgaW50IGlvX2Fk ZHI7CiAgICAgICAgdW5zaWduZWQgaW50IGlvX3NpemU7CiAgICAgICAgdW5zaWduZWQgaW50IG1h eHBvcnRzOwogICAgICAgIGludCBydW5uaW5nOwoKICAgICAgICBpbnQgYXBtX3N0YXRlOwoKICAg ICAgICBzdHJ1Y3QgdWhjaSAqbmV4dDsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB1cmJfbGlz dDsKCiAgICAgICAgc3BpbmxvY2tfdCB1cmJfbGlzdF9sb2NrOwoKICAgICAgICBpbnQgdW5saW5r X3VyYl9kb25lOwogICAgICAgIGF0b21pY190IGF2b2lkX2J1bGs7CgogICAgICAgIHN0cnVjdCB1 c2JfYnVzICpidXM7CgogICAgICAgIF9fdTMyICpmcmFtZWxpc3Q7CiAgICAgICAgZG1hX2FkZHJf dCBmcmFtZWxpc3RfZG1hOwogICAgICAgIHVoY2lfZGVzY190ICoqaXNvX3RkOwogICAgICAgIHVo Y2lfZGVzY190ICppbnRfY2hhaW5bOF07CiAgICAgICAgdWhjaV9kZXNjX3QgKmxzX2NvbnRyb2xf Y2hhaW47CiAgICAgICAgdWhjaV9kZXNjX3QgKmNvbnRyb2xfY2hhaW47CiAgICAgICAgdWhjaV9k ZXNjX3QgKmJ1bGtfY2hhaW47CiAgICAgICAgdWhjaV9kZXNjX3QgKmNoYWluX2VuZDsKICAgICAg ICB1aGNpX2Rlc2NfdCAqdGQxbXM7CiAgICAgICAgdWhjaV9kZXNjX3QgKnRkMzJtczsKICAgICAg ICBzdHJ1Y3QgbGlzdF9oZWFkIGZyZWVfZGVzYzsKICAgICAgICBzcGlubG9ja190IHFoX2xvY2s7 CiAgICAgICAgc3BpbmxvY2tfdCB0ZF9sb2NrOwogICAgICAgIHN0cnVjdCB2aXJ0X3Jvb3RfaHVi IHJoOwogICAgICAgIGludCBsb29wX3VzYWdlOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHVy Yl91bmxpbmtlZDsKICAgICAgICBsb25nIHRpbWVvdXRfY2hlY2s7CiAgICAgICAgaW50IHRpbWVv dXRfdXJiczsKICAgICAgICBzdHJ1Y3QgcGNpX2RldiAqdWhjaV9wY2k7CiAgICAgICAgc3RydWN0 IHBjaV9wb29sICpkZXNjX3Bvb2w7CiAgICAgICAgbG9uZyBsYXN0X2Vycm9yX3RpbWU7Cn0gdWhj aV90LCAqcHVoY2lfdDsKIyA1OSAidXNiLXVoY2kuYyIgMgojIDEgInVzYi11aGNpLWRlYnVnLmgi IDEKCnN0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSB1aGNpX3Nob3dfcWgg KHB1aGNpX2Rlc2NfdCBxaCkKewogICAgICAgIGlmIChxaC0+dHlwZSAhPSBRSF9UWVBFKSB7CiAg ICAgICAgICAgICAgICBwcmludGtfUjFiN2Q0MDc0KCI8Nz4iICJ1c2ItdWhjaS1kZWJ1Zy5oIiAi OiAiICJxaCBoYXMgbm90IFFIX1RZUEUiICJcbiIpOwogICAgICAgICAgICAgICAgcmV0dXJuOwog ICAgICAgIH0KICAgICAgICBwcmludGtfUjFiN2Q0MDc0KCI8Nz4iICJ1c2ItdWhjaS1kZWJ1Zy5o IiAiOiAiICJRSCBAICVwLyUwOFg6IiAiXG4iICwgcWgsIHFoLT5kbWFfYWRkcik7CgogICAgICAg IGlmIChxaC0+aHcucWguaGVhZCAmIDB4MDAwMSkKICAgICAgICAgICAgICAgIHByaW50a19SMWI3 ZDQwNzQoIjw3PiIgInVzYi11aGNpLWRlYnVnLmgiICI6ICIgIiAgICBIZWFkIFRlcm1pbmF0ZSIg IlxuIik7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcHJpbnRrX1IxYjdkNDA3NCgiPDc+ IiAidXNiLXVoY2ktZGVidWcuaCIgIjogIiAiICAgIEhlYWQ6ICVzIEAgJTA4WCIgIlxuIiAsIChx aC0+aHcucWguaGVhZCAmIDB4MDAwMj8iUUgiOiJURCIpLCBxaC0+aHcucWguaGVhZCAmIH4weDAw MEYpOwoKCgogICAgICAgIGlmIChxaC0+aHcucWguZWxlbWVudCAmIDB4MDAwMSkKICAgICAgICAg ICAgICAgIHByaW50a19SMWI3ZDQwNzQoIjw3PiIgInVzYi11aGNpLWRlYnVnLmgiICI6ICIgIiAg ICBFbGVtZW50IFRlcm1pbmF0ZSIgIlxuIik7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg cHJpbnRrX1IxYjdkNDA3NCgiPDc+IiAidXNiLXVoY2ktZGVidWcuaCIgIjogIiAiICAgIEVsZW1l bnQ6ICVzIEAgJTA4WCIgIlxuIiAsIChxaC0+aHcucWguZWxlbWVudCAmIDB4MDAwMj8iUUgiOiJU RCIpLCBxaC0+aHcucWguZWxlbWVudCAmIH4weDAwMEYpOwoKCn0KIyA4MSAidXNiLXVoY2ktZGVi dWcuaCIKc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIHVoY2lfc2hvd190 ZF9xdWV1ZSAocHVoY2lfZGVzY190IHRkKQp7CgoKICAgICAgICByZXR1cm47CiMgOTkgInVzYi11 aGNpLWRlYnVnLmgiCn0KCnN0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSB1 aGNpX3Nob3dfcXVldWUgKHB1aGNpX2Rlc2NfdCBxaCkKewoKCgoKICAgICAgICBwcmludGtfUjFi N2Q0MDc0KCI8Nz4iICJ1c2ItdWhjaS1kZWJ1Zy5oIiAiOiAiICJ1aGNpX3Nob3dfcXVldWUgJXA6 IiAiXG4iICwgcWgpOwoKICAgICAgICByZXR1cm47CiMgMTMzICJ1c2ItdWhjaS1kZWJ1Zy5oIgp9 CgpzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgdWhjaV9zaG93X3NjIChp bnQgcG9ydCwgdW5zaWduZWQgc2hvcnQgc3RhdHVzKQp7CiAgICAgICAgcHJpbnRrX1IxYjdkNDA3 NCgiPDc+IiAidXNiLXVoY2ktZGVidWcuaCIgIjogIiAiICBzdGF0JWQgICAgID0gICAgICUwNHgg ICAlcyVzJXMlcyVzJXMlcyVzIiAiXG4iICwgcG9ydCwgc3RhdHVzLCAoc3RhdHVzICYgMHgxMDAw KSA/ICJQb3J0U3VzcGVuZCAiIDogIiIsIChzdGF0dXMgJiAweDAyMDApID8gIlBvcnRSZXNldCAi IDogIiIsIChzdGF0dXMgJiAweDAxMDApID8gIkxvd1NwZWVkICIgOiAiIiwgKHN0YXR1cyAmIDB4 MDA0MCkgPyAiUmVzdW1lRGV0ZWN0ICIgOiAiIiwgKHN0YXR1cyAmIDB4MDAwOCkgPyAiRW5hYmxl Q2hhbmdlICIgOiAiIiwgKHN0YXR1cyAmIDB4MDAwNCkgPyAiUG9ydEVuYWJsZWQgIiA6ICIiLCAo c3RhdHVzICYgMHgwMDAyKSA/ICJDb25uZWN0Q2hhbmdlICIgOiAiIiwgKHN0YXR1cyAmIDB4MDAw MSkgPyAiUG9ydENvbm5lY3RlZCAiIDogIiIpOwojIDE0OCAidXNiLXVoY2ktZGVidWcuaCIKfQoK dm9pZCB1aGNpX3Nob3dfc3RhdHVzIChwdWhjaV90IHMpCnsKICAgICAgICB1bnNpZ25lZCBpbnQg aW9fYWRkciA9IHMtPmlvX2FkZHI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdXNiY21kLCB1c2Jz dGF0LCB1c2JpbnQsIHVzYmZybnVtOwogICAgICAgIHVuc2lnbmVkIGludCBmbGJhc2VhZGQ7CiAg ICAgICAgdW5zaWduZWQgY2hhciBzb2Y7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9ydHNjMSwg cG9ydHNjMjsKCiAgICAgICAgdXNiY21kID0gaW53IChpb19hZGRyICsgMCk7CiAgICAgICAgdXNi c3RhdCA9IGludyAoaW9fYWRkciArIDIpOwogICAgICAgIHVzYmludCA9IGludyAoaW9fYWRkciAr IDQpOwogICAgICAgIHVzYmZybnVtID0gaW53IChpb19hZGRyICsgNik7CiAgICAgICAgZmxiYXNl YWRkID0gaW5sIChpb19hZGRyICsgOCk7CiAgICAgICAgc29mID0gaW5iIChpb19hZGRyICsgMTIp OwogICAgICAgIHBvcnRzYzEgPSBpbncgKGlvX2FkZHIgKyAxNik7CiAgICAgICAgcG9ydHNjMiA9 IGludyAoaW9fYWRkciArIDE4KTsKCiAgICAgICAgcHJpbnRrX1IxYjdkNDA3NCgiPDc+IiAidXNi LXVoY2ktZGVidWcuaCIgIjogIiAiICB1c2JjbWQgICAgPSAgICAgJTA0eCAgICVzJXMlcyVzJXMl cyVzJXMiICJcbiIgLCB1c2JjbWQsICh1c2JjbWQgJiAweDAwODApID8gIk1heHA2NCAiIDogIk1h eHAzMiAiLCAodXNiY21kICYgMHgwMDQwKSA/ICJDRiAiIDogIiIsICh1c2JjbWQgJiAweDAwMjAp ID8gIlNXREJHICIgOiAiIiwgKHVzYmNtZCAmIDB4MDAxMCkgPyAiRkdSICIgOiAiIiwgKHVzYmNt ZCAmIDB4MDAwOCkgPyAiRUdTTSAiIDogIiIsICh1c2JjbWQgJiAweDAwMDQpID8gIkdSRVNFVCAi IDogIiIsICh1c2JjbWQgJiAweDAwMDIpID8gIkhDUkVTRVQgIiA6ICIiLCAodXNiY21kICYgMHgw MDAxKSA/ICJSUyAiIDogIiIpOwojIDE3OCAidXNiLXVoY2ktZGVidWcuaCIKICAgICAgICBwcmlu dGtfUjFiN2Q0MDc0KCI8Nz4iICJ1c2ItdWhjaS1kZWJ1Zy5oIiAiOiAiICIgIHVzYnN0YXQgICA9 ICAgICAlMDR4ICAgJXMlcyVzJXMlcyVzIiAiXG4iICwgdXNic3RhdCwgKHVzYnN0YXQgJiAweDAw MjApID8gIkhDSGFsdGVkICIgOiAiIiwgKHVzYnN0YXQgJiAweDAwMTApID8gIkhvc3RDb250cm9s bGVyUHJvY2Vzc0Vycm9yICIgOiAiIiwgKHVzYnN0YXQgJiAweDAwMDgpID8gIkhvc3RTeXN0ZW1F cnJvciAiIDogIiIsICh1c2JzdGF0ICYgMHgwMDA0KSA/ICJSZXN1bWVEZXRlY3QgIiA6ICIiLCAo dXNic3RhdCAmIDB4MDAwMikgPyAiVVNCRXJyb3IgIiA6ICIiLCAodXNic3RhdCAmIDB4MDAwMSkg PyAiVVNCSU5UICIgOiAiIik7CiMgMTg3ICJ1c2ItdWhjaS1kZWJ1Zy5oIgogICAgICAgIHByaW50 a19SMWI3ZDQwNzQoIjw3PiIgInVzYi11aGNpLWRlYnVnLmgiICI6ICIgIiAgdXNiaW50ICAgID0g ICAgICUwNHgiICJcbiIgLCB1c2JpbnQpOwogICAgICAgIHByaW50a19SMWI3ZDQwNzQoIjw3PiIg InVzYi11aGNpLWRlYnVnLmgiICI6ICIgIiAgdXNiZnJudW0gID0gICAoJWQpJTAzeCIgIlxuIiAs ICh1c2Jmcm51bSA+PiAxMCkgJiAxLCAweGZmZiAmICg0ICogKHVuc2lnbmVkIGludCkgdXNiZnJu dW0pKTsKCiAgICAgICAgcHJpbnRrX1IxYjdkNDA3NCgiPDc+IiAidXNiLXVoY2ktZGVidWcuaCIg IjogIiAiICBmbGJhc2VhZGQgPSAlMDh4IiAiXG4iICwgZmxiYXNlYWRkKTsKICAgICAgICBwcmlu dGtfUjFiN2Q0MDc0KCI8Nz4iICJ1c2ItdWhjaS1kZWJ1Zy5oIiAiOiAiICIgIHNvZiAgICAgICA9 ICAgICAgICUwMngiICJcbiIgLCBzb2YpOwogICAgICAgIHVoY2lfc2hvd19zYyAoMSwgcG9ydHNj MSk7CiAgICAgICAgdWhjaV9zaG93X3NjICgyLCBwb3J0c2MyKTsKfQojIDYwICJ1c2ItdWhjaS5j IiAyCiMgODUgInVzYi11aGNpLmMiCiAgICAgICAgc3RhdGljIGttZW1fY2FjaGVfdCAqdXJiX3By aXZfa21lbTsKIyAxMTkgInVzYi11aGNpLmMiCiAgICAgICAgaW50IHJoX3N1Ym1pdF91cmIgKHVy Yl90ICp1cmIpOwogICAgICAgIGludCByaF91bmxpbmtfdXJiICh1cmJfdCAqdXJiKTsKICAgICAg ICBpbnQgZGVsZXRlX3FoICh1aGNpX3QgKnMsIHVoY2lfZGVzY190ICpxaCk7CiAgICAgICAgaW50 IHByb2Nlc3NfdHJhbnNmZXIgKHVoY2lfdCAqcywgdXJiX3QgKnVyYiwgaW50IG1vZGUpOwogICAg ICAgIGludCBwcm9jZXNzX2ludGVycnVwdCAodWhjaV90ICpzLCB1cmJfdCAqdXJiKTsKICAgICAg ICBpbnQgcHJvY2Vzc19pc28gKHVoY2lfdCAqcywgdXJiX3QgKnVyYiwgaW50IGZvcmNlKTsKCgoK CnN0YXRpYyB1aGNpX3QgKmRldnMgPSAoKHZvaWQgKikwKTsKCgp1aGNpX3QgKip1aGNpX2Rldmlj ZXMgPSAmZGV2czsKCgoKdm9pZCBjbGVhbl9kZXNjcyh1aGNpX3QgKnMsIGludCBmb3JjZSkKewog ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnE7CiAgICAgICAgdWhjaV9kZXNjX3QgKnFoOwogICAg ICAgIGludCBub3c9KGludyAoKHMpLT5pb19hZGRyICsgNikpLCBuPTA7CgogICAgICAgIHE9cy0+ ZnJlZV9kZXNjLnByZXY7CgogICAgICAgIHdoaWxlIChxICE9ICZzLT5mcmVlX2Rlc2MgJiYgKGZv cmNlIHx8IG48MTAwKSkgewogICAgICAgICAgICAgICAgcWggPSAoKHVoY2lfZGVzY190ICopKChj aGFyICopKHEpLSh1bnNpZ25lZCBsb25nKSgmKCh1aGNpX2Rlc2NfdCAqKTApLT5ob3Jpem9udGFs KSkpOwogICAgICAgICAgICAgICAgcT1xaC0+aG9yaXpvbnRhbC5wcmV2OwoKICAgICAgICAgICAg ICAgIGlmICgocWgtPmxhc3RfdXNlZCE9bm93KSB8fCBmb3JjZSkKICAgICAgICAgICAgICAgICAg ICAgICAgZGVsZXRlX3FoKHMscWgpOwogICAgICAgICAgICAgICAgbisrOwogICAgICAgIH0KfQoK ICAgICAgICB2b2lkIHVoY2lfc3dpdGNoX3RpbWVyX2ludCh1aGNpX3QgKnMpCnsKCiAgICAgICAg aWYgKCFsaXN0X2VtcHR5KCZzLT51cmJfdW5saW5rZWQpKQogICAgICAgICAgICAgICAgKHMtPnRk MW1zKS0+aHcudGQuc3RhdHVzIHw9ICgoX191MzIpKCgxIDw8IDI0KSkpOwogICAgICAgIGVsc2UK ICAgICAgICAgICAgICAgIChzLT50ZDFtcyktPmh3LnRkLnN0YXR1cyAmPSAoKF9fdTMyKSh+KDEg PDwgMjQpKSk7CgogICAgICAgIGlmIChzLT50aW1lb3V0X3VyYnMpCiAgICAgICAgICAgICAgICAo cy0+dGQzMm1zKS0+aHcudGQuc3RhdHVzIHw9ICgoX191MzIpKCgxIDw8IDI0KSkpOwogICAgICAg IGVsc2UKICAgICAgICAgICAgICAgIChzLT50ZDMybXMpLT5ody50ZC5zdGF0dXMgJj0gKChfX3Uz MikofigxIDw8IDI0KSkpOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgiIjogOiA6Im1l bW9yeSIpOwp9CgoKICAgICAgICB2b2lkIGVuYWJsZV9kZXNjX2xvb3AodWhjaV90ICpzLCB1cmJf dCAqdXJiKQp7CiAgICAgICAgaW50IGZsYWdzOwoKICAgICAgICBpZiAodXJiLT50cmFuc2Zlcl9m bGFncyAmIDB4MDAyMCkKICAgICAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgZG8geyBfX2Fz bV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6 Im1lbW9yeSIpOyAodm9pZCkoJnMtPnFoX2xvY2spOyB9IHdoaWxlICgwKTsKICAgICAgICBzLT5j aGFpbl9lbmQtPmh3LnFoLmhlYWQmPSgoX191MzIpKH4weDAwMDEpKTsKICAgICAgICBfX2FzbV9f IF9fdm9sYXRpbGVfXyAoImxvY2s7IGFkZGwgJDAsMCglJWVzcCkiOiA6IDoibWVtb3J5Iik7CiAg ICAgICAgcy0+bG9vcF91c2FnZSsrOwogICAgICAgICgodXJiX3ByaXZfdCopdXJiLT5oY3ByaXYp LT51c2VfbG9vcD0xOwogICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9s YXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7 IH0gd2hpbGUgKDApOwp9CgogICAgICAgIHZvaWQgZGlzYWJsZV9kZXNjX2xvb3AodWhjaV90ICpz LCB1cmJfdCAqdXJiKQp7CiAgICAgICAgaW50IGZsYWdzOwoKICAgICAgICBpZiAodXJiLT50cmFu c2Zlcl9mbGFncyAmIDB4MDAyMCkKICAgICAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgZG8g eyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxh Z3MpOiA6Im1lbW9yeSIpOyAodm9pZCkoJnMtPnFoX2xvY2spOyB9IHdoaWxlICgwKTsKICAgICAg ICBpZiAoKCh1cmJfcHJpdl90Kil1cmItPmhjcHJpdiktPnVzZV9sb29wKSB7CiAgICAgICAgICAg ICAgICBzLT5sb29wX3VzYWdlLS07CgogICAgICAgICAgICAgICAgaWYgKCFzLT5sb29wX3VzYWdl KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNoYWluX2VuZC0+aHcucWguaGVhZHw9KChf X3UzMikoMHgwMDAxKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGls ZV9fICgibG9jazsgYWRkbCAkMCwwKCUlZXNwKSI6IDogOiJtZW1vcnkiKTsKICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICgodXJiX3ByaXZfdCopdXJiLT5oY3ByaXYpLT51c2VfbG9v cD0wOwogICAgICAgIH0KICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3Zv bGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIp OyB9IHdoaWxlICgwKTsKfQoKCiAgICAgICAgdm9pZCBxdWV1ZV91cmJfdW5sb2NrZWQgKHVoY2lf dCAqcywgdXJiX3QgKnVyYikKewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnA9JnVyYi0+dXJi X2xpc3Q7CgogICAgICAgIHsKICAgICAgICAgICAgICAgIGludCB0eXBlOwogICAgICAgICAgICAg ICAgdHlwZT0oKCh1cmItPnBpcGUpID4+IDMwKSAmIDMpOwoKICAgICAgICAgICAgICAgIGlmICgo dHlwZSA9PSAzKSB8fCAodHlwZSA9PSAyKSkKICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxl X2Rlc2NfbG9vcChzLCB1cmIpOwogICAgICAgIH0KCiAgICAgICAgdXJiLT5zdGF0dXMgPSAtMTE1 OwogICAgICAgICgodXJiX3ByaXZfdCopdXJiLT5oY3ByaXYpLT5zdGFydGVkPWppZmZpZXNfUjBk YTAyZDY3OwogICAgICAgIGxpc3RfYWRkIChwLCAmcy0+dXJiX2xpc3QpOwogICAgICAgIGlmICh1 cmItPnRpbWVvdXQpCiAgICAgICAgICAgICAgICBzLT50aW1lb3V0X3VyYnMrKzsKICAgICAgICB1 aGNpX3N3aXRjaF90aW1lcl9pbnQocyk7Cn0KCiAgICAgICAgdm9pZCBxdWV1ZV91cmIgKHVoY2lf dCAqcywgdXJiX3QgKnVyYikKewogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M9MDsKCiAgICAg ICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1n IiAoZmxhZ3MpOiA6Im1lbW9yeSIpOyAodm9pZCkoJnMtPnVyYl9saXN0X2xvY2spOyB9IHdoaWxl ICgwKTsKICAgICAgICBxdWV1ZV91cmJfdW5sb2NrZWQocyx1cmIpOwogICAgICAgIGRvIHsgZG8g eyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoi ZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwp9CgogICAgICAgIHZvaWQg ZGVxdWV1ZV91cmIgKHVoY2lfdCAqcywgdXJiX3QgKnVyYikKewoKICAgICAgICBpbnQgdHlwZTsK CiAgICAgICAgdHlwZT0oKCh1cmItPnBpcGUpID4+IDMwKSAmIDMpOwoKICAgICAgICBpZiAoKHR5 cGUgPT0gMykgfHwgKHR5cGUgPT0gMikpCiAgICAgICAgICAgICAgICBkaXNhYmxlX2Rlc2NfbG9v cChzLCB1cmIpOwoKCiAgICAgICAgbGlzdF9kZWwgKCZ1cmItPnVyYl9saXN0KTsKICAgICAgICBp ZiAodXJiLT50aW1lb3V0ICYmIHMtPnRpbWVvdXRfdXJicykKICAgICAgICAgICAgICAgIHMtPnRp bWVvdXRfdXJicy0tOwoKfQoKICAgICAgICBpbnQgYWxsb2NfdGQgKHVoY2lfdCAqcywgdWhjaV9k ZXNjX3QgKiogbmV3LCBpbnQgZmxhZ3MpCnsKICAgICAgICBkbWFfYWRkcl90IGRtYV9oYW5kbGU7 CgogICAgICAgICpuZXcgPSBwY2lfcG9vbF9hbGxvY19SNTEzMWI4MTgocy0+ZGVzY19wb29sLCAw eDAxIHwgKDB4MjApLCAmZG1hX2hhbmRsZSk7CiAgICAgICAgaWYgKCEqbmV3KQogICAgICAgICAg ICAgICAgcmV0dXJuIC0xMjsKICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19i dWlsdGluX2NvbnN0YW50X3AoKHNpemVvZiAodWhjaV9kZXNjX3QpKSkgPyBfX2NvbnN0YW50X2Nf YW5kX2NvdW50X21lbXNldCgoKCpuZXcpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhciko MCkpKSwoKHNpemVvZiAodWhjaV9kZXNjX3QpKSkpIDogX19jb25zdGFudF9jX21lbXNldCgoKCpu ZXcpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZiAodWhjaV9k ZXNjX3QpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mICh1aGNpX2Rlc2NfdCkp KSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoKm5ldykpKSwoKCgwKSkpLCgoKHNpemVvZiAodWhjaV9k ZXNjX3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCgqbmV3KSksKCgwKSksKChzaXplb2YgKHVo Y2lfZGVzY190KSkpKSkpOwogICAgICAgICgqbmV3KS0+ZG1hX2FkZHIgPSBkbWFfaGFuZGxlOwog ICAgICAgICgoKm5ldykpLT5ody50ZC5saW5rPSgoX191MzIpKDB4MDAwMSB8IChmbGFncyAmIDB4 MDAwRikpKTsKICAgICAgICAoKm5ldyktPnR5cGUgPSBURF9UWVBFOwogICAgICAgIF9fYXNtX18g X192b2xhdGlsZV9fICgibG9jazsgYWRkbCAkMCwwKCUlZXNwKSI6IDogOiJtZW1vcnkiKTsKICAg ICAgICBkbyB7ICgmKCpuZXcpLT52ZXJ0aWNhbCktPm5leHQgPSAoJigqbmV3KS0+dmVydGljYWwp OyAoJigqbmV3KS0+dmVydGljYWwpLT5wcmV2ID0gKCYoKm5ldyktPnZlcnRpY2FsKTsgfSB3aGls ZSAoMCk7CiAgICAgICAgZG8geyAoJigqbmV3KS0+aG9yaXpvbnRhbCktPm5leHQgPSAoJigqbmV3 KS0+aG9yaXpvbnRhbCk7ICgmKCpuZXcpLT5ob3Jpem9udGFsKS0+cHJldiA9ICgmKCpuZXcpLT5o b3Jpem9udGFsKTsgfSB3aGlsZSAoMCk7CgogICAgICAgIHJldHVybiAwOwp9CgoKICAgICAgICB2 b2lkIGFwcGVuZF9xaCh1aGNpX3QgKnMsIHVoY2lfZGVzY190ICp0ZCwgdWhjaV9kZXNjX3QqIHFo LCBpbnQgZmxhZ3MpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHh4eDsKCiAgICAgICAgZG8geyBf X2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoeHh4KTog OiJtZW1vcnkiKTsgKHZvaWQpKCZzLT50ZF9sb2NrKTsgfSB3aGlsZSAoMCk7CgogICAgICAgICh0 ZCktPmh3LnRkLmxpbms9KChfX3UzMikocWgtPmRtYV9hZGRyIHwgKGZsYWdzICYgMHgwMDA0KSB8 IDB4MDAwMikpOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxvY2s7IGFkZGwgJDAs MCglJWVzcCkiOiA6IDoibWVtb3J5Iik7CiAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9f YXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoeHh4KToibWVtb3J5 IiwgImNjIik7IH0gd2hpbGUgKDApOwp9CgoKICAgICAgICBpbnQgaW5zZXJ0X3RkICh1aGNpX3Qg KnMsIHVoY2lfZGVzY190ICpxaCwgdWhjaV9kZXNjX3QqIG5ldywgaW50IGZsYWdzKQp7CiAgICAg ICAgdWhjaV9kZXNjX3QgKnByZXY7CiAgICAgICAgdW5zaWduZWQgbG9uZyB4eHg7CgogICAgICAg IGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIg KHh4eCk6IDoibWVtb3J5Iik7ICh2b2lkKSgmcy0+dGRfbG9jayk7IH0gd2hpbGUgKDApOwoKICAg ICAgICBsaXN0X2FkZF90YWlsICgmbmV3LT52ZXJ0aWNhbCwgJnFoLT52ZXJ0aWNhbCk7CgogICAg ICAgIHByZXYgPSAoKHVoY2lfZGVzY190ICopKChjaGFyICopKG5ldy0+dmVydGljYWwucHJldikt KHVuc2lnbmVkIGxvbmcpKCYoKHVoY2lfZGVzY190ICopMCktPnZlcnRpY2FsKSkpOwoKICAgICAg ICBpZiAocWggPT0gcHJldiApIHsKCiAgICAgICAgICAgICAgICAocWgpLT5ody5xaC5lbGVtZW50 PSgoX191MzIpKG5ldy0+ZG1hX2FkZHIgfCAweDAwMDEpKTsKICAgICAgICB9CiAgICAgICAgZWxz ZSB7CgogICAgICAgICAgICAgICAgKHByZXYpLT5ody50ZC5saW5rPSgoX191MzIpKG5ldy0+ZG1h X2FkZHIgfCAoZmxhZ3MgJiAweDAwMDQpKSk7CiAgICAgICAgfQogICAgICAgIF9fYXNtX18gX192 b2xhdGlsZV9fICgibG9jazsgYWRkbCAkMCwwKCUlZXNwKSI6IDogOiJtZW1vcnkiKTsKICAgICAg ICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsg cG9wZmwiOiA6ImciICh4eHgpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CgogICAgICAg IHJldHVybiAwOwp9CgoKICAgICAgICBpbnQgaW5zZXJ0X3RkX2hvcml6b250YWwgKHVoY2lfdCAq cywgdWhjaV9kZXNjX3QgKnRkLCB1aGNpX2Rlc2NfdCogbmV3KQp7CiAgICAgICAgdWhjaV9kZXNj X3QgKm5leHQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAgICAgZG8geyBfX2Fz bV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6 Im1lbW9yeSIpOyAodm9pZCkoJnMtPnRkX2xvY2spOyB9IHdoaWxlICgwKTsKCiAgICAgICAgbmV4 dCA9ICgodWhjaV9kZXNjX3QgKikoKGNoYXIgKikodGQtPmhvcml6b250YWwubmV4dCktKHVuc2ln bmVkIGxvbmcpKCYoKHVoY2lfZGVzY190ICopMCktPmhvcml6b250YWwpKSk7CiAgICAgICAgbGlz dF9hZGQgKCZuZXctPmhvcml6b250YWwsICZ0ZC0+aG9yaXpvbnRhbCk7CiAgICAgICAgbmV3LT5o dy50ZC5saW5rID0gdGQtPmh3LnRkLmxpbms7CiAgICAgICAgKHRkKS0+aHcudGQubGluaz0oKF9f dTMyKShuZXctPmRtYV9hZGRyKSk7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsb2Nr OyBhZGRsICQwLDAoJSVlc3ApIjogOiA6Im1lbW9yeSIpOwogICAgICAgIGRvIHsgZG8geyB9IHdo aWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZs YWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwoKICAgICAgICByZXR1cm4gMDsKfQoK ICAgICAgICBpbnQgdW5saW5rX3RkICh1aGNpX3QgKnMsIHVoY2lfZGVzY190ICplbGVtZW50LCBp bnQgcGh5c191bmxpbmspCnsKICAgICAgICB1aGNpX2Rlc2NfdCAqbmV4dCwgKnByZXY7CiAgICAg ICAgaW50IGRpciA9IDA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAgICAgZG8g eyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxh Z3MpOiA6Im1lbW9yeSIpOyAodm9pZCkoJnMtPnRkX2xvY2spOyB9IHdoaWxlICgwKTsKCiAgICAg ICAgbmV4dCA9ICgodWhjaV9kZXNjX3QgKikoKGNoYXIgKikoZWxlbWVudC0+dmVydGljYWwubmV4 dCktKHVuc2lnbmVkIGxvbmcpKCYoKHVoY2lfZGVzY190ICopMCktPnZlcnRpY2FsKSkpOwoKICAg ICAgICBpZiAobmV4dCA9PSBlbGVtZW50KSB7CiAgICAgICAgICAgICAgICBkaXIgPSAxOwogICAg ICAgICAgICAgICAgcHJldiA9ICgodWhjaV9kZXNjX3QgKikoKGNoYXIgKikoZWxlbWVudC0+aG9y aXpvbnRhbC5wcmV2KS0odW5zaWduZWQgbG9uZykoJigodWhjaV9kZXNjX3QgKikwKS0+aG9yaXpv bnRhbCkpKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcHJldiA9ICgo dWhjaV9kZXNjX3QgKikoKGNoYXIgKikoZWxlbWVudC0+dmVydGljYWwucHJldiktKHVuc2lnbmVk IGxvbmcpKCYoKHVoY2lfZGVzY190ICopMCktPnZlcnRpY2FsKSkpOwoKICAgICAgICBpZiAocGh5 c191bmxpbmspIHsKCiAgICAgICAgICAgICAgICBpZiAocHJldi0+dHlwZSA9PSBURF9UWVBFKQog ICAgICAgICAgICAgICAgICAgICAgICBwcmV2LT5ody50ZC5saW5rID0gZWxlbWVudC0+aHcudGQu bGluazsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgcHJldi0+ aHcucWguZWxlbWVudCA9IGVsZW1lbnQtPmh3LnRkLmxpbms7CiAgICAgICAgfQoKICAgICAgICBf X2FzbV9fIF9fdm9sYXRpbGVfXyAoImxvY2s7IGFkZGwgJDAsMCglJWVzcCkiOiA6IDoibWVtb3J5 Iik7CgogICAgICAgIGlmIChkaXIgPT0gMCkKICAgICAgICAgICAgICAgIGxpc3RfZGVsICgmZWxl bWVudC0+dmVydGljYWwpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGxpc3RfZGVsICgm ZWxlbWVudC0+aG9yaXpvbnRhbCk7CgogICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2Fz bV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5 IiwgImNjIik7IH0gd2hpbGUgKDApOwoKICAgICAgICByZXR1cm4gMDsKfQoKCiAgICAgICAgaW50 IGRlbGV0ZV9kZXNjICh1aGNpX3QgKnMsIHVoY2lfZGVzY190ICplbGVtZW50KQp7CiAgICAgICAg cGNpX3Bvb2xfZnJlZV9SNzdiODdjZjMocy0+ZGVzY19wb29sLCBlbGVtZW50LCBlbGVtZW50LT5k bWFfYWRkcik7CiAgICAgICAgcmV0dXJuIDA7Cn0KCgogICAgICAgIGludCBhbGxvY19xaCAodWhj aV90ICpzLCB1aGNpX2Rlc2NfdCAqKiBuZXcpCnsKICAgICAgICBkbWFfYWRkcl90IGRtYV9oYW5k bGU7CgogICAgICAgICpuZXcgPSBwY2lfcG9vbF9hbGxvY19SNTEzMWI4MTgocy0+ZGVzY19wb29s LCAweDAxIHwgKDB4MjApLCAmZG1hX2hhbmRsZSk7CiAgICAgICAgaWYgKCEqbmV3KQogICAgICAg ICAgICAgICAgcmV0dXJuIC0xMjsKICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAo X19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZiAodWhjaV9kZXNjX3QpKSkgPyBfX2NvbnN0YW50 X2NfYW5kX2NvdW50X21lbXNldCgoKCpuZXcpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hh cikoMCkpKSwoKHNpemVvZiAodWhjaV9kZXNjX3QpKSkpIDogX19jb25zdGFudF9jX21lbXNldCgo KCpuZXcpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZiAodWhj aV9kZXNjX3QpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mICh1aGNpX2Rlc2Nf dCkpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoKm5ldykpKSwoKCgwKSkpLCgoKHNpemVvZiAodWhj aV9kZXNjX3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCgqbmV3KSksKCgwKSksKChzaXplb2Yg KHVoY2lfZGVzY190KSkpKSkpOwogICAgICAgICgqbmV3KS0+ZG1hX2FkZHIgPSBkbWFfaGFuZGxl OwogICAgICAgICgqbmV3KS0+aHcucWguaGVhZD0oKF9fdTMyKSgweDAwMDEpKTsKICAgICAgICAo Km5ldyktPmh3LnFoLmVsZW1lbnQ9KChfX3UzMikoMHgwMDAxKSk7CiAgICAgICAgKCpuZXcpLT50 eXBlID0gUUhfVFlQRTsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsb2NrOyBhZGRs ICQwLDAoJSVlc3ApIjogOiA6Im1lbW9yeSIpOwogICAgICAgIGRvIHsgKCYoKm5ldyktPmhvcml6 b250YWwpLT5uZXh0ID0gKCYoKm5ldyktPmhvcml6b250YWwpOyAoJigqbmV3KS0+aG9yaXpvbnRh bCktPnByZXYgPSAoJigqbmV3KS0+aG9yaXpvbnRhbCk7IH0gd2hpbGUgKDApOwogICAgICAgIGRv IHsgKCYoKm5ldyktPnZlcnRpY2FsKS0+bmV4dCA9ICgmKCpuZXcpLT52ZXJ0aWNhbCk7ICgmKCpu ZXcpLT52ZXJ0aWNhbCktPnByZXYgPSAoJigqbmV3KS0+dmVydGljYWwpOyB9IHdoaWxlICgwKTsK CiAgICAgICAgZG8ge30gd2hpbGUgKDApOwoKICAgICAgICByZXR1cm4gMDsKfQoKCgogICAgICAg IGludCBpbnNlcnRfcWggKHVoY2lfdCAqcywgdWhjaV9kZXNjX3QgKnBvcywgdWhjaV9kZXNjX3Qg Km5ldywgaW50IG9yZGVyKQp7CiAgICAgICAgdWhjaV9kZXNjX3QgKm9sZDsKICAgICAgICB1bnNp Z25lZCBsb25nIGZsYWdzOwoKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNo ZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmcy0+ cWhfbG9jayk7IH0gd2hpbGUgKDApOwoKICAgICAgICBpZiAoIW9yZGVyKSB7CgogICAgICAgICAg ICAgICAgb2xkID0gKCh1aGNpX2Rlc2NfdCAqKSgoY2hhciAqKShwb3MtPmhvcml6b250YWwucHJl diktKHVuc2lnbmVkIGxvbmcpKCYoKHVoY2lfZGVzY190ICopMCktPmhvcml6b250YWwpKSk7CiAg ICAgICAgICAgICAgICBsaXN0X2FkZF90YWlsICgmbmV3LT5ob3Jpem9udGFsLCAmcG9zLT5ob3Jp em9udGFsKTsKICAgICAgICAgICAgICAgIChuZXcpLT5ody5xaC5oZWFkPSgoX191MzIpKCgocG9z KS0+ZG1hX2FkZHJ8MHgwMDAyKSkpIDsKICAgICAgICAgICAgICAgIGlmICghKG9sZC0+aHcucWgu aGVhZCAmICgoX191MzIpKDB4MDAwMSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgKG9sZCkt Pmh3LnFoLmhlYWQ9KChfX3UzMikoKChuZXcpLT5kbWFfYWRkcnwweDAwMDIpKSkgOwogICAgICAg IH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICBvbGQgPSAoKHVoY2lfZGVzY190ICop KChjaGFyICopKHBvcy0+aG9yaXpvbnRhbC5uZXh0KS0odW5zaWduZWQgbG9uZykoJigodWhjaV9k ZXNjX3QgKikwKS0+aG9yaXpvbnRhbCkpKTsKICAgICAgICAgICAgICAgIGxpc3RfYWRkICgmbmV3 LT5ob3Jpem9udGFsLCAmcG9zLT5ob3Jpem9udGFsKTsKICAgICAgICAgICAgICAgIChuZXcpLT5o dy5xaC5oZWFkPSgoX191MzIpKCgob2xkKS0+ZG1hX2FkZHJ8MHgwMDAyKSkpOwogICAgICAgICAg ICAgICAgKHBvcyktPmh3LnFoLmhlYWQ9KChfX3UzMikoKChuZXcpLT5kbWFfYWRkcnwweDAwMDIp KSkgOwogICAgICAgIH0KCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsb2NrOyBhZGRs ICQwLDAoJSVlc3ApIjogOiA6Im1lbW9yeSIpOwoKICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgw KTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6 Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgcmV0dXJuIDA7Cn0KCgogICAg ICAgIGludCB1bmxpbmtfcWggKHVoY2lfdCAqcywgdWhjaV9kZXNjX3QgKmVsZW1lbnQpCnsKICAg ICAgICB1aGNpX2Rlc2NfdCAqcHJldjsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwoKICAg ICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoi PWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmcy0+cWhfbG9jayk7IH0gd2hpbGUgKDAp OwoKICAgICAgICBwcmV2ID0gKCh1aGNpX2Rlc2NfdCAqKSgoY2hhciAqKShlbGVtZW50LT5ob3Jp em9udGFsLnByZXYpLSh1bnNpZ25lZCBsb25nKSgmKCh1aGNpX2Rlc2NfdCAqKTApLT5ob3Jpem9u dGFsKSkpOwogICAgICAgIHByZXYtPmh3LnFoLmhlYWQgPSBlbGVtZW50LT5ody5xaC5oZWFkOwoK ICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgoKICAgICAgICBsaXN0X2RlbCgmZWxlbWVudC0+aG9y aXpvbnRhbCk7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgibG9jazsgYWRkbCAkMCww KCUlZXNwKSI6IDogOiJtZW1vcnkiKTsKICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19h c21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9y eSIsICJjYyIpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgcmV0dXJuIDA7Cn0KCiAgICAgICAgaW50 IGRlbGV0ZV9xaCAodWhjaV90ICpzLCB1aGNpX2Rlc2NfdCAqcWgpCnsKICAgICAgICB1aGNpX2Rl c2NfdCAqdGQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqcDsKCiAgICAgICAgbGlzdF9kZWwg KCZxaC0+aG9yaXpvbnRhbCk7CgogICAgICAgIHdoaWxlICgocCA9IHFoLT52ZXJ0aWNhbC5uZXh0 KSAhPSAmcWgtPnZlcnRpY2FsKSB7CiAgICAgICAgICAgICAgICB0ZCA9ICgodWhjaV9kZXNjX3Qg KikoKGNoYXIgKikocCktKHVuc2lnbmVkIGxvbmcpKCYoKHVoY2lfZGVzY190ICopMCktPnZlcnRp Y2FsKSkpOwogICAgICAgICAgICAgICAgZG8ge30gd2hpbGUgKDApOwogICAgICAgICAgICAgICAg dW5saW5rX3RkIChzLCB0ZCwgMCk7CiAgICAgICAgICAgICAgICBkZWxldGVfZGVzYyAocywgdGQp OwogICAgICAgIH0KCiAgICAgICAgZGVsZXRlX2Rlc2MgKHMsIHFoKTsKCiAgICAgICAgcmV0dXJu IDA7Cn0KCiAgICAgICAgdm9pZCBjbGVhbl90ZF9jaGFpbiAodWhjaV90ICpzLCB1aGNpX2Rlc2Nf dCAqdGQpCnsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwOwogICAgICAgIHVoY2lfZGVzY190 ICp0ZDE7CgogICAgICAgIGlmICghdGQpCiAgICAgICAgICAgICAgICByZXR1cm47CgogICAgICAg IHdoaWxlICgocCA9IHRkLT5ob3Jpem9udGFsLm5leHQpICE9ICZ0ZC0+aG9yaXpvbnRhbCkgewog ICAgICAgICAgICAgICAgdGQxID0gKCh1aGNpX2Rlc2NfdCAqKSgoY2hhciAqKShwKS0odW5zaWdu ZWQgbG9uZykoJigodWhjaV9kZXNjX3QgKikwKS0+aG9yaXpvbnRhbCkpKTsKICAgICAgICAgICAg ICAgIGRlbGV0ZV9kZXNjIChzLCB0ZDEpOwogICAgICAgIH0KCiAgICAgICAgZGVsZXRlX2Rlc2Mg KHMsIHRkKTsKfQoKCiAgICAgICAgdm9pZCBmaWxsX3RkICh1aGNpX2Rlc2NfdCAqdGQsIGludCBz dGF0dXMsIGludCBpbmZvLCBfX3UzMiBidWZmZXIpCnsKICAgICAgICB0ZC0+aHcudGQuc3RhdHVz ID0gKChfX3UzMikoc3RhdHVzKSk7CiAgICAgICAgdGQtPmh3LnRkLmluZm8gPSAoKF9fdTMyKShp bmZvKSk7CiAgICAgICAgdGQtPmh3LnRkLmJ1ZmZlciA9ICgoX191MzIpKGJ1ZmZlcikpOwp9CgoK ICAgICAgICB2b2lkIGNsZWFudXBfc2tlbCAodWhjaV90ICpzKQp7CiAgICAgICAgdW5zaWduZWQg aW50IG47CiAgICAgICAgdWhjaV9kZXNjX3QgKnRkOwoKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7 CgogICAgICAgIGNsZWFuX2Rlc2NzKHMsMSk7CgoKICAgICAgICBpZiAocy0+dGQzMm1zKSB7Cgog ICAgICAgICAgICAgICAgdW5saW5rX3RkKHMscy0+dGQzMm1zLDEpOwogICAgICAgICAgICAgICAg ZGVsZXRlX2Rlc2Mocywgcy0+dGQzMm1zKTsKICAgICAgICB9CgogICAgICAgIGZvciAobiA9IDA7 IG4gPCA4OyBuKyspIHsKICAgICAgICAgICAgICAgIHRkID0gcy0+aW50X2NoYWluW25dOwogICAg ICAgICAgICAgICAgY2xlYW5fdGRfY2hhaW4gKHMsIHRkKTsKICAgICAgICB9CgogICAgICAgIGlm IChzLT5pc29fdGQpIHsKICAgICAgICAgICAgICAgIGZvciAobiA9IDA7IG4gPCAxMDI0OyBuKysp IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGQgPSBzLT5pc29fdGRbbl07CiAgICAgICAgICAg ICAgICAgICAgICAgIGNsZWFuX3RkX2NoYWluIChzLCB0ZCk7CiAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICBrZnJlZV9SMDM3YTBjYmEgKHMtPmlzb190ZCk7CiAgICAgICAgfQoKICAg ICAgICBpZiAocy0+ZnJhbWVsaXN0KQogICAgICAgICAgICAgICAgcGNpX2ZyZWVfY29uc2lzdGVu dF9SYmVhMDY4ZDcocy0+dWhjaV9wY2ksICgxVUwgPDwgMTIpLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzLT5mcmFtZWxpc3QsIHMtPmZyYW1lbGlzdF9kbWEpOwoKICAgICAg ICBpZiAocy0+Y29udHJvbF9jaGFpbikgewoKICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hl YWQgKnA7CiAgICAgICAgICAgICAgICB1aGNpX2Rlc2NfdCAqcWgsICpxaDE7CgogICAgICAgICAg ICAgICAgcWggPSBzLT5jb250cm9sX2NoYWluOwogICAgICAgICAgICAgICAgd2hpbGUgKChwID0g cWgtPmhvcml6b250YWwubmV4dCkgIT0gJnFoLT5ob3Jpem9udGFsKSB7CiAgICAgICAgICAgICAg ICAgICAgICAgIHFoMSA9ICgodWhjaV9kZXNjX3QgKikoKGNoYXIgKikocCktKHVuc2lnbmVkIGxv bmcpKCYoKHVoY2lfZGVzY190ICopMCktPmhvcml6b250YWwpKSk7CiAgICAgICAgICAgICAgICAg ICAgICAgIGRlbGV0ZV9xaCAocywgcWgxKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg ICAgICBkZWxldGVfcWggKHMsIHFoKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAg ICAgICAgICBpZiAocy0+bHNfY29udHJvbF9jaGFpbikKICAgICAgICAgICAgICAgICAgICAgICAg ZGVsZXRlX2Rlc2MgKHMsIHMtPmxzX2NvbnRyb2xfY2hhaW4pOwogICAgICAgICAgICAgICAgaWYg KHMtPmNvbnRyb2xfY2hhaW4pCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZV9kZXNjIChz LCBzLT5jb250cm9sX2NoYWluKTsKICAgICAgICAgICAgICAgIGlmIChzLT5idWxrX2NoYWluKQog ICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVfZGVzYyAocywgcy0+YnVsa19jaGFpbik7CiAg ICAgICAgICAgICAgICBpZiAocy0+Y2hhaW5fZW5kKQogICAgICAgICAgICAgICAgICAgICAgICBk ZWxldGVfZGVzYyAocywgcy0+Y2hhaW5fZW5kKTsKICAgICAgICB9CgogICAgICAgIGlmIChzLT5k ZXNjX3Bvb2wpIHsKICAgICAgICAgICAgICAgIHBjaV9wb29sX2Rlc3Ryb3lfUjFkN2I5Y2MyKHMt PmRlc2NfcG9vbCk7CiAgICAgICAgICAgICAgICBzLT5kZXNjX3Bvb2wgPSAoKHZvaWQgKikwKTsK ICAgICAgICB9CgogICAgICAgIGRvIHt9IHdoaWxlICgwKTsKfQoKCgogICAgICAgIGludCBpbml0 X3NrZWwgKHVoY2lfdCAqcykKewogICAgICAgIGludCBuLCByZXQ7CiAgICAgICAgdWhjaV9kZXNj X3QgKnFoLCAqdGQ7CgogICAgICAgIGRvIHt9IHdoaWxlICgwKTsKCiAgICAgICAgcy0+ZnJhbWVs aXN0ID0gcGNpX2FsbG9jX2NvbnNpc3RlbnRfUmRiMTY4Y2M0KHMtPnVoY2lfcGNpLCAoMVVMIDw8 IDEyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcy0+ZnJh bWVsaXN0X2RtYSk7CgogICAgICAgIGlmICghcy0+ZnJhbWVsaXN0KQogICAgICAgICAgICAgICAg cmV0dXJuIC0xMjsKCiAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDApID8gKF9fYnVpbHRp bl9jb25zdGFudF9wKCg0MDk2KSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKHMt PmZyYW1lbGlzdCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoNDA5Nikp KSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKChzLT5mcmFtZWxpc3QpKSwoKDB4MDEwMTAxMDFVTCoo dW5zaWduZWQgY2hhcikoMCkpKSwoKDQwOTYpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKCg0 MDk2KSkgPyBfX21lbXNldF9nZW5lcmljKCgoKHMtPmZyYW1lbGlzdCkpKSwoKCgwKSkpLCgoKDQw OTYpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKHMtPmZyYW1lbGlzdCkpLCgoMCkpLCgoNDA5Nikp KSkpOwoKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgogICAgICAgIHMtPmRlc2NfcG9vbCA9IHBj aV9wb29sX2NyZWF0ZV9SNjliNjc4NDMoInVoY2lfZGVzYyIsIHMtPnVoY2lfcGNpLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodWhjaV9kZXNjX3QpLCAxNiwg MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSB8ICgweDIwKSk7 CiAgICAgICAgaWYgKCFzLT5kZXNjX3Bvb2wpCiAgICAgICAgICAgICAgICBnb3RvIGluaXRfc2tl bF9jbGVhbnVwOwoKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CiAgICAgICAgcy0+aXNvX3RkID0g KHVoY2lfZGVzY190ICoqKSBrbWFsbG9jX1I5M2Q0Y2ZlNiAoMTAyNCAqIHNpemVvZiAodWhjaV9k ZXNjX3QqKSwgKDB4MjAgfCAweDEwIHwgMHg0MCB8IDB4ODAgfCAweDEwMCkpOwoKICAgICAgICBp ZiAoIXMtPmlzb190ZCkKICAgICAgICAgICAgICAgIGdvdG8gaW5pdF9za2VsX2NsZWFudXA7Cgog ICAgICAgIHMtPmxzX2NvbnRyb2xfY2hhaW4gPSAoKHZvaWQgKikwKTsKICAgICAgICBzLT5jb250 cm9sX2NoYWluID0gKCh2b2lkICopMCk7CiAgICAgICAgcy0+YnVsa19jaGFpbiA9ICgodm9pZCAq KTApOwogICAgICAgIHMtPmNoYWluX2VuZCA9ICgodm9pZCAqKTApOwoKICAgICAgICBkbyB7fSB3 aGlsZSAoMCk7CiAgICAgICAgZm9yIChuID0gMDsgbiA8IDEwMjQ7IG4rKykgewoKICAgICAgICAg ICAgICAgIGlmIChhbGxvY190ZCAocywgJnRkLCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAg Z290byBpbml0X3NrZWxfY2xlYW51cDsKCiAgICAgICAgICAgICAgICBzLT5pc29fdGRbbl0gPSB0 ZDsKICAgICAgICAgICAgICAgIHMtPmZyYW1lbGlzdFtuXSA9ICgoX191MzIpKChfX3UzMikgdGQt PmRtYV9hZGRyKSk7CiAgICAgICAgfQoKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CiAgICAgICAg aWYgKGFsbG9jX3FoIChzLCAmcWgpKQogICAgICAgICAgICAgICAgZ290byBpbml0X3NrZWxfY2xl YW51cDsKCiAgICAgICAgcy0+Y2hhaW5fZW5kID0gcWg7CgogICAgICAgIGlmIChhbGxvY190ZCAo cywgJnRkLCAwKSkKICAgICAgICAgICAgICAgIGdvdG8gaW5pdF9za2VsX2NsZWFudXA7CgogICAg ICAgIGZpbGxfdGQgKHRkLCAwICogKDEgPDwgMjQpLCAwLCAwKTsKICAgICAgICBpbnNlcnRfdGQg KHMsIHFoLCB0ZCwgMCk7CiAgICAgICAgcWgtPmh3LnFoLmVsZW1lbnQgJj0gKChfX3UzMikofjB4 MDAwMSkpOwogICAgICAgIHMtPnRkMW1zPXRkOwoKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CiAg ICAgICAgaWYgKGFsbG9jX3FoIChzLCAmcWgpKQogICAgICAgICAgICAgICAgZ290byBpbml0X3Nr ZWxfY2xlYW51cDsKCiAgICAgICAgaW5zZXJ0X3FoIChzLCBzLT5jaGFpbl9lbmQsIHFoLCAwKTsK ICAgICAgICBzLT5idWxrX2NoYWluID0gcWg7CgogICAgICAgIGRvIHt9IHdoaWxlICgwKTsKICAg ICAgICByZXQgPSBhbGxvY19xaCAocywgJnFoKTsKICAgICAgICBpZiAocmV0KQogICAgICAgICAg ICAgICAgZ290byBpbml0X3NrZWxfY2xlYW51cDsKCiAgICAgICAgaW5zZXJ0X3FoIChzLCBzLT5i dWxrX2NoYWluLCBxaCwgMCk7CiAgICAgICAgcy0+Y29udHJvbF9jaGFpbiA9IHFoOwoKCgogICAg ICAgIChzLT5jaGFpbl9lbmQpLT5ody5xaC5oZWFkPSgoX191MzIpKHMtPmNvbnRyb2xfY2hhaW4t PmRtYV9hZGRyIHwgMHgwMDAyIHwgMHgwMDAxKSk7CgoKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7 CiAgICAgICAgaWYgKGFsbG9jX3FoIChzLCAmcWgpKQogICAgICAgICAgICAgICAgZ290byBpbml0 X3NrZWxfY2xlYW51cDsKCiAgICAgICAgaW5zZXJ0X3FoIChzLCBzLT5jb250cm9sX2NoYWluLCBx aCwgMCk7CiAgICAgICAgcy0+bHNfY29udHJvbF9jaGFpbiA9IHFoOwoKICAgICAgICBmb3IgKG4g PSAwOyBuIDwgODsgbisrKQogICAgICAgICAgICAgICAgcy0+aW50X2NoYWluW25dID0gMDsKCiAg ICAgICAgZG8ge30gd2hpbGUgKDApOwoKICAgICAgICBmb3IgKG4gPSAwOyBuIDwgODsgbisrKSB7 CiAgICAgICAgICAgICAgICB1aGNpX2Rlc2NfdCAqdGQ7CgogICAgICAgICAgICAgICAgaWYgKGFs bG9jX3RkIChzLCAmdGQsIDApKQogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGluaXRfc2tl bF9jbGVhbnVwOwoKICAgICAgICAgICAgICAgIHMtPmludF9jaGFpbltuXSA9IHRkOwogICAgICAg ICAgICAgICAgaWYgKG4gPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAocy0+aW50X2No YWluWzBdKS0+aHcudGQubGluaz0oKF9fdTMyKShzLT5sc19jb250cm9sX2NoYWluLT5kbWFfYWRk ciB8IDB4MDAwMikpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAg ICAgICAgICAgICAgICAgICAgICAgIChzLT5pbnRfY2hhaW5bbl0pLT5ody50ZC5saW5rPSgoX191 MzIpKHMtPmludF9jaGFpblswXS0+ZG1hX2FkZHIpKTsKICAgICAgICAgICAgICAgIH0KICAgICAg ICB9CgogICAgICAgIGRvIHt9IHdoaWxlICgwKTsKCiAgICAgICAgZm9yIChuID0gMDsgbiA8IDEw MjQ7IG4rKykgewoKICAgICAgICAgICAgICAgIGludCBtLCBvOwogICAgICAgICAgICAgICAgZG8g e30gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgaWYgKChuJjEyNyk9PTEyNykKICAgICAgICAg ICAgICAgICAgICAgICAgKCh1aGNpX2Rlc2NfdCopIHMtPmlzb190ZFtuXSktPmh3LnRkLmxpbmsg PSAoKF9fdTMyKShzLT5pbnRfY2hhaW5bMF0tPmRtYV9hZGRyKSk7CiAgICAgICAgICAgICAgICBl bHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobyA9IDEsIG0gPSAyOyBtIDw9IDEyODsg bysrLCBtICs9IG0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuICYgKG0g LSAxKSkgPT0gKChtIC0gMSkgLyAyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgoKHVoY2lfZGVzY190Kikgcy0+aXNvX3RkW25dKSktPmh3LnRkLmxpbms9KChfX3Uz Mikocy0+aW50X2NoYWluW29dLT5kbWFfYWRkcikpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGFs bG9jX3RkIChzLCAmdGQsIDApKQogICAgICAgICAgICAgICAgZ290byBpbml0X3NrZWxfY2xlYW51 cDsKCiAgICAgICAgZmlsbF90ZCAodGQsIDAgKiAoMSA8PCAyNCksIDAsIDApOwogICAgICAgIHMt PnRkMzJtcz10ZDsKCiAgICAgICAgaW5zZXJ0X3RkX2hvcml6b250YWwgKHMsIHMtPmludF9jaGFp bls1XSwgdGQpOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxvY2s7IGFkZGwgJDAs MCglJWVzcCkiOiA6IDoibWVtb3J5Iik7CgogICAgICAgIGRvIHt9IHdoaWxlICgwKTsKICAgICAg ICByZXR1cm4gMDsKCiAgICAgIGluaXRfc2tlbF9jbGVhbnVwOgogICAgICAgIGNsZWFudXBfc2tl bCAocyk7CiAgICAgICAgcmV0dXJuIC0xMjsKfQoKCgoKCiAgICAgICAgaW50IHVoY2lfc3VibWl0 X2NvbnRyb2xfdXJiICh1cmJfdCAqdXJiKQp7CiAgICAgICAgdWhjaV9kZXNjX3QgKnFoLCAqdGQ7 CiAgICAgICAgdWhjaV90ICpzID0gKHVoY2lfdCopIHVyYi0+ZGV2LT5idXMtPmhjcHJpdjsKICAg ICAgICB1cmJfcHJpdl90ICp1cmJfcHJpdiA9IHVyYi0+aGNwcml2OwogICAgICAgIHVuc2lnbmVk IGxvbmcgZGVzdGluYXRpb24sIHN0YXR1czsKICAgICAgICBpbnQgbWF4c3plID0gKCgoKCh1cmIt PnBpcGUpID4+IDcpICYgMSkgXiAxKSA/ICh1cmItPmRldiktPmVwbWF4cGFja2V0b3V0WygoKHVy Yi0+cGlwZSkgPj4gMTUpICYgMHhmKV0gOiAodXJiLT5kZXYpLT5lcG1heHBhY2tldGluIFsoKCh1 cmItPnBpcGUpID4+IDE1KSAmIDB4ZildICk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsZW47CiAg ICAgICAgY2hhciAqZGF0YTsKICAgICAgICBpbnQgZGVwdGhfZmlyc3Q9MDsKCiAgICAgICAgZG8g e30gd2hpbGUgKDApOwogICAgICAgIGlmIChhbGxvY19xaCAocywgJnFoKSkKICAgICAgICAgICAg ICAgIHJldHVybiAtMTI7CgogICAgICAgIGlmIChhbGxvY190ZCAocywgJnRkLCAweDAwMDQgKiBk ZXB0aF9maXJzdCkpCiAgICAgICAgewogICAgICAgICAgICAgICAgZGVsZXRlX3FoIChzLCBxaCk7 CiAgICAgICAgICAgICAgICByZXR1cm4gLTEyOwogICAgICAgIH0KCgogICAgICAgIGRlc3RpbmF0 aW9uID0gKHVyYi0+cGlwZSAmIDB4MDAwN2ZmMDApIHwgMHgyZDsKCgogICAgICAgIHN0YXR1cyA9 ICh1cmItPnBpcGUgJiAoMSA8PCAyNikpIHwgKDEgPDwgMjMpIHwKICAgICAgICAgICAgICAgICh1 cmItPnRyYW5zZmVyX2ZsYWdzICYgMHgwMDAxID8gMCA6ICgxIDw8IDI5KSkgfCAoMyA8PCAyNyk7 CgoKICAgICAgICBmaWxsX3RkICh0ZCwgc3RhdHVzLCBkZXN0aW5hdGlvbiB8ICg3IDw8IDIxKSwg dXJiX3ByaXYtPnNldHVwX3BhY2tldF9kbWEpOwoKICAgICAgICBpbnNlcnRfdGQgKHMsIHFoLCB0 ZCwgMCk7CiMgNzQxICJ1c2ItdWhjaS5jIgogICAgICAgIGxlbiA9IHVyYi0+dHJhbnNmZXJfYnVm ZmVyX2xlbmd0aDsKICAgICAgICBkYXRhID0gdXJiLT50cmFuc2Zlcl9idWZmZXI7CgoKCgogICAg ICAgIGRlc3RpbmF0aW9uID0gKHVyYi0+cGlwZSAmIDB4MDAwN2ZmMDApIHwgKCgoKCh1cmItPnBp cGUpID4+IDcpICYgMSkgXiAxKT8weGUxOjB4NjkpOwoKICAgICAgICB3aGlsZSAobGVuID4gMCkg ewogICAgICAgICAgICAgICAgaW50IHBrdHN6ZSA9IGxlbjsKCiAgICAgICAgICAgICAgICBpZiAo YWxsb2NfdGQgKHMsICZ0ZCwgMHgwMDA0ICogZGVwdGhfZmlyc3QpKQogICAgICAgICAgICAgICAg ICAgICAgICBnb3RvIGZhaWxfdW5tYXBfZW5vbWVtOwoKICAgICAgICAgICAgICAgIGlmIChwa3Rz emUgPiBtYXhzemUpCiAgICAgICAgICAgICAgICAgICAgICAgIHBrdHN6ZSA9IG1heHN6ZTsKCiAg ICAgICAgICAgICAgICBkZXN0aW5hdGlvbiBePSAxIDw8IDE5OwoKCiAgICAgICAgICAgICAgICBm aWxsX3RkICh0ZCwgc3RhdHVzLCBkZXN0aW5hdGlvbiB8ICgocGt0c3plIC0gMSkgPDwgMjEpLAog ICAgICAgICAgICAgICAgICAgICAgICAgdXJiX3ByaXYtPnRyYW5zZmVyX2J1ZmZlcl9kbWEgKyAo ZGF0YSAtIChjaGFyICopdXJiLT50cmFuc2Zlcl9idWZmZXIpKTsKCiAgICAgICAgICAgICAgICBp bnNlcnRfdGQgKHMsIHFoLCB0ZCwgMHgwMDA0ICogZGVwdGhfZmlyc3QpOwoKICAgICAgICAgICAg ICAgIGRhdGEgKz0gcGt0c3plOwogICAgICAgICAgICAgICAgbGVuIC09IHBrdHN6ZTsKICAgICAg ICB9CgoKCgogICAgICAgIGRlc3RpbmF0aW9uICY9IH4weGZmOwoKICAgICAgICBpZiAoKCgoKHVy Yi0+cGlwZSkgPj4gNykgJiAxKSBeIDEpIHx8ICh1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGgg PT0gMCkpCiAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbiB8PSAweDY5OwogICAgICAgIGVsc2UK ICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uIHw9IDB4ZTE7CgogICAgICAgIGRlc3RpbmF0aW9u IHw9IDEgPDwgMTk7CgogICAgICAgIGlmIChhbGxvY190ZCAocywgJnRkLCAweDAwMDQpKQogICAg ICAgICAgICAgICAgZ290byBmYWlsX3VubWFwX2Vub21lbTsKCiAgICAgICAgc3RhdHVzICY9figx IDw8IDI5KTsKCgogICAgICAgIGZpbGxfdGQgKHRkLCBzdGF0dXMgfCAoMSA8PCAyNCksIGRlc3Rp bmF0aW9uIHwgKDB4N2ZmIDw8IDIxKSwKICAgICAgICAgICAgICAgICAwKTsKCiAgICAgICAgaW5z ZXJ0X3RkIChzLCBxaCwgdGQsIDB4MDAwNCAqIGRlcHRoX2ZpcnN0KTsKCiAgICAgICAgbGlzdF9h ZGQgKCZxaC0+ZGVzY19saXN0LCAmdXJiX3ByaXYtPmRlc2NfbGlzdCk7CgogICAgICAgIHF1ZXVl X3VyYiAocywgdXJiKTsKCiAgICAgICAgcWgtPmh3LnFoLmVsZW1lbnQgJj0gKChfX3UzMikofjB4 MDAwMSkpOwoKCgogICAgICAgIGlmICh1cmItPnBpcGUgJiAoMSA8PCAyNikpCiAgICAgICAgICAg ICAgICBpbnNlcnRfcWggKHMsIHMtPmNvbnRyb2xfY2hhaW4sIHFoLCAwKTsKICAgICAgICBlbHNl CiAgICAgICAgICAgICAgICBpbnNlcnRfcWggKHMsIHMtPmJ1bGtfY2hhaW4sIHFoLCAwKTsKCiAg ICAgICAgZG8ge30gd2hpbGUgKDApOwogICAgICAgIHJldHVybiAwOwoKZmFpbF91bm1hcF9lbm9t ZW06CiAgICAgICAgZGVsZXRlX3FoKHMsIHFoKTsKICAgICAgICByZXR1cm4gLTEyOwp9CgoKCgog ICAgICAgIGludCB1aGNpX3N1Ym1pdF9idWxrX3VyYiAodXJiX3QgKnVyYiwgdXJiX3QgKmJ1bGtf dXJiKQp7CiAgICAgICAgdWhjaV90ICpzID0gKHVoY2lfdCopIHVyYi0+ZGV2LT5idXMtPmhjcHJp djsKICAgICAgICB1cmJfcHJpdl90ICp1cmJfcHJpdiA9IHVyYi0+aGNwcml2LCAqdXByaXYsICpi cHJpdj0oKHZvaWQgKikwKTsKICAgICAgICB1aGNpX2Rlc2NfdCAqcWgsICp0ZCwgKm5xaD0oKHZv aWQgKikwKSwgKmJxaD0oKHZvaWQgKikwKSwgKmZpcnN0X3RkPSgodm9pZCAqKTApOwogICAgICAg IHVuc2lnbmVkIGxvbmcgZGVzdGluYXRpb24sIHN0YXR1czsKICAgICAgICBjaGFyICpkYXRhOwog ICAgICAgIHVuc2lnbmVkIGludCBwaXBlID0gdXJiLT5waXBlOwogICAgICAgIGludCBtYXhzemUg PSAoKCgoKHBpcGUpID4+IDcpICYgMSkgXiAxKSA/ICh1cmItPmRldiktPmVwbWF4cGFja2V0b3V0 WygoKHBpcGUpID4+IDE1KSAmIDB4ZildIDogKHVyYi0+ZGV2KS0+ZXBtYXhwYWNrZXRpbiBbKCgo cGlwZSkgPj4gMTUpICYgMHhmKV0gKTsKICAgICAgICBpbnQgaW5mbywgbGVuLCBsYXN0OwogICAg ICAgIGludCBkZXB0aF9maXJzdD0wOwoKICAgICAgICBpZiAoKCh1cmItPmRldiktPmhhbHRlZFso KCgocGlwZSkgPj4gNykgJiAxKSBeIDEpXSAmICgxIDw8ICgoKChwaXBlKSA+PiAxNSkgJiAweGYp KSkpKQogICAgICAgICAgICAgICAgcmV0dXJuIC0zMjsKCiAgICAgICAgZG8ge30gd2hpbGUgKDAp OwoKCiAgICAgICAgdXByaXYgPSAodXJiX3ByaXZfdCopdXJiLT5oY3ByaXY7CgogICAgICAgIGlm ICghYnVsa191cmIpIHsKICAgICAgICAgICAgICAgIGlmIChhbGxvY19xaCAocywgJnFoKSkKICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xMjsKCiAgICAgICAgICAgICAgICBpZiAodXJi LT50cmFuc2Zlcl9mbGFncyAmIDB4MDAxMCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAo YWxsb2NfcWgocywgJm5xaCkpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkZWxldGVfZGVzYyAocywgcWgpOwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiAtMTI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgICAgICAgICAgdXByaXYtPm5leHRfcWggPSBucWg7CiAgICAgICAgICAgICAg ICAgICAgICAgIGRvIHt9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAg ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBicHJpdiA9ICh1cmJfcHJpdl90KilidWxrX3Vy Yi0+aGNwcml2OwogICAgICAgICAgICAgICAgcWggPSBicHJpdi0+Ym90dG9tX3FoOwogICAgICAg ICAgICAgICAgbnFoID0gYnByaXYtPm5leHRfcWg7CiAgICAgICAgICAgICAgICB1cHJpdi0+bmV4 dF9xaD1ucWg7CiAgICAgICAgICAgICAgICB1cHJpdi0+cHJldl9xdWV1ZWRfdXJiPWJ1bGtfdXJi OwogICAgICAgIH0KCiAgICAgICAgaWYgKHVyYi0+dHJhbnNmZXJfZmxhZ3MgJiAweDAwMTApIHsK ICAgICAgICAgICAgICAgIGlmIChhbGxvY19xaCAocywgJmJxaCkpCiAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYnVsa191cmIpIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkZWxldGVfZGVzYyhzLCBxaCk7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGVsZXRlX2Rlc2MocywgbnFoKTsKICAgICAgICAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTEyOwogICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAgKGJxaCktPmh3LnFoLmVsZW1lbnQ9KChfX3UzMikoMHgwMDAxKSk7CiAg ICAgICAgICAgICAgICAoYnFoKS0+aHcucWguaGVhZD0oKF9fdTMyKShucWgtPmRtYV9hZGRyIHwg MHgwMDAyKSk7CiAgICAgICAgICAgICAgICB1cHJpdi0+Ym90dG9tX3FoID0gYnFoOwogICAgICAg IH0KICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgoKICAgICAgICBkZXN0aW5hdGlvbiA9IChwaXBl ICYgMHgwMDA3ZmYwMCkgfCAoKChwaXBlKSAmIDB4ODApID8gMHg2OSA6IDB4ZTEpOwoKCiAgICAg ICAgc3RhdHVzID0gKHBpcGUgJiAoMSA8PCAyNikpIHwgKDEgPDwgMjMpIHwKICAgICAgICAgICAg ICAgICgodXJiLT50cmFuc2Zlcl9mbGFncyAmIDB4MDAwMSkgPyAwIDogKDEgPDwgMjkpKSB8ICgz IDw8IDI3KTsKCgogICAgICAgIGxlbiA9IHVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aDsKICAg ICAgICBkYXRhID0gdXJiLT50cmFuc2Zlcl9idWZmZXI7CgogICAgICAgIGRvIHsKICAgICAgICAg ICAgICAgIGludCBwa3RzemUgPSBsZW47CgogICAgICAgICAgICAgICAgaWYgKGFsbG9jX3RkIChz LCAmdGQsIDB4MDAwNCAqIGRlcHRoX2ZpcnN0KSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgZGVsZXRlX3FoIChzLCBxaCk7CiAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiAtMTI7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKHBrdHN6 ZSA+IG1heHN6ZSkKICAgICAgICAgICAgICAgICAgICAgICAgcGt0c3plID0gbWF4c3plOwoKCiAg ICAgICAgICAgICAgICBpbmZvID0gZGVzdGluYXRpb24gfCAoKChwa3RzemUgLSAxKSYweDdmZikg PDwgMjEpIHwKICAgICAgICAgICAgICAgICAgICAgICAgKCgoKHVyYi0+ZGV2KS0+dG9nZ2xlWygo KChwaXBlKSA+PiA3KSAmIDEpIF4gMSldID4+ICgoKHBpcGUpID4+IDE1KSAmIDB4ZikpICYgMSkg PDwgMTkpOwoKICAgICAgICAgICAgICAgIGZpbGxfdGQgKHRkLCBzdGF0dXMsIGluZm8sCiAgICAg ICAgICAgICAgICAgICAgICAgICB1cmJfcHJpdi0+dHJhbnNmZXJfYnVmZmVyX2RtYSArIChkYXRh IC0gKGNoYXIgKil1cmItPnRyYW5zZmVyX2J1ZmZlcikpOwoKICAgICAgICAgICAgICAgIGRhdGEg Kz0gcGt0c3plOwogICAgICAgICAgICAgICAgbGVuIC09IHBrdHN6ZTsKCiAgICAgICAgICAgICAg ICBsYXN0ID0gKGxlbiA9PSAwICYmICgoKChwaXBlKSA+PiA3KSAmIDEpIHx8IHBrdHN6ZSA8IG1h eHN6ZSB8fCAhKHVyYi0+dHJhbnNmZXJfZmxhZ3MgJiAweDAwNDApKSk7CgogICAgICAgICAgICAg ICAgaWYgKGxhc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICh0ZCktPmh3LnRkLnN0YXR1cyB8 PSAoKF9fdTMyKSgoMSA8PCAyNCkpKTsKCiAgICAgICAgICAgICAgICBpbnNlcnRfdGQgKHMsIHFo LCB0ZCwgMHgwMDA0ICogZGVwdGhfZmlyc3QpOwogICAgICAgICAgICAgICAgaWYgKCFmaXJzdF90 ZCkKICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfdGQ9dGQ7CiAgICAgICAgICAgICAgICAo KHVyYi0+ZGV2KS0+dG9nZ2xlWygoKChwaXBlKSA+PiA3KSAmIDEpIF4gMSldIF49ICgxIDw8ICgo KHBpcGUpID4+IDE1KSAmIDB4ZikpKTsKCiAgICAgICAgfSB3aGlsZSAoIWxhc3QpOwoKICAgICAg ICBpZiAoYnVsa191cmIgJiYgYnByaXYpCiAgICAgICAgICAgICAgICBicHJpdi0+bmV4dF9xdWV1 ZWRfdXJiPXVyYjsKCiAgICAgICAgbGlzdF9hZGQgKCZxaC0+ZGVzY19saXN0LCAmdXJiX3ByaXYt PmRlc2NfbGlzdCk7CgogICAgICAgIGlmICh1cmItPnRyYW5zZmVyX2ZsYWdzICYgMHgwMDEwKQog ICAgICAgICAgICAgICAgYXBwZW5kX3FoKHMsIHRkLCBicWgsIDB4MDAwNCAqIGRlcHRoX2ZpcnN0 KTsKCiAgICAgICAgcXVldWVfdXJiX3VubG9ja2VkIChzLCB1cmIpOwoKICAgICAgICBpZiAodXJi LT50cmFuc2Zlcl9mbGFncyAmIDB4MDAxMCkKICAgICAgICAgICAgICAgIChxaCktPmh3LnFoLmVs ZW1lbnQ9KChfX3UzMikoZmlyc3RfdGQtPmRtYV9hZGRyKSk7CiAgICAgICAgZWxzZQogICAgICAg ICAgICAgICAgcWgtPmh3LnFoLmVsZW1lbnQgJj0gKChfX3UzMikofjB4MDAwMSkpOwoKICAgICAg ICBpZiAoIWJ1bGtfdXJiKSB7CiAgICAgICAgICAgICAgICBpZiAodXJiLT50cmFuc2Zlcl9mbGFn cyAmIDB4MDAxMCkgewogICAgICAgICAgICAgICAgICAgICAgICAodm9pZCkoJnMtPnRkX2xvY2sp OwogICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRfcWggKHMsIHMtPmNoYWluX2VuZCwgcWgs IDApOwogICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRfcWggKHMsIHMtPmNoYWluX2VuZCwg bnFoLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyB9IHdoaWxlKDApOwogICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBp bnNlcnRfcWggKHMsIHMtPmNoYWluX2VuZCwgcWgsIDApOwogICAgICAgIH0KCgoKICAgICAgICBy ZXR1cm4gMDsKfQoKICAgICAgICB2b2lkIHVoY2lfY2xlYW5faXNvX3N0ZXAxKHVoY2lfdCAqcywg dXJiX3ByaXZfdCAqdXJiX3ByaXYpCnsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwOwogICAg ICAgIHVoY2lfZGVzY190ICp0ZDsKCiAgICAgICAgZm9yIChwID0gdXJiX3ByaXYtPmRlc2NfbGlz dC5uZXh0OyBwICE9ICZ1cmJfcHJpdi0+ZGVzY19saXN0OyBwID0gcC0+bmV4dCkgewogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRkID0gKCh1aGNpX2Rlc2NfdCAqKSgoY2hhciAqKShw KS0odW5zaWduZWQgbG9uZykoJigodWhjaV9kZXNjX3QgKikwKS0+ZGVzY19saXN0KSkpOwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubGlua190ZCAocywgdGQsIDEpOwogICAgICAg IH0KfQoKICAgICAgICB2b2lkIHVoY2lfY2xlYW5faXNvX3N0ZXAyKHVoY2lfdCAqcywgdXJiX3By aXZfdCAqdXJiX3ByaXYpCnsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwOwogICAgICAgIHVo Y2lfZGVzY190ICp0ZDsKCiAgICAgICAgd2hpbGUgKChwID0gdXJiX3ByaXYtPmRlc2NfbGlzdC5u ZXh0KSAhPSAmdXJiX3ByaXYtPmRlc2NfbGlzdCkgewogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRkID0gKCh1aGNpX2Rlc2NfdCAqKSgoY2hhciAqKShwKS0odW5zaWduZWQgbG9uZyko JigodWhjaV9kZXNjX3QgKikwKS0+ZGVzY19saXN0KSkpOwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxpc3RfZGVsIChwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk ZWxldGVfZGVzYyAocywgdGQpOwogICAgICAgIH0KfQoKCgoKCgoKICAgICAgICB2b2lkIHVoY2lf Y2xlYW5fdHJhbnNmZXIgKHVoY2lfdCAqcywgdXJiX3QgKnVyYiwgdWhjaV9kZXNjX3QgKnFoLCBp bnQgbW9kZSkKewogICAgICAgIHVoY2lfZGVzY190ICpicWgsICpucWgsICpwcmV2cWgsICpwcmV2 dGQ7CiAgICAgICAgaW50IG5vdzsKICAgICAgICB1cmJfcHJpdl90ICpwcml2PSh1cmJfcHJpdl90 Kil1cmItPmhjcHJpdjsKCiAgICAgICAgbm93PShpbncgKChzKS0+aW9fYWRkciArIDYpKTsKCiAg ICAgICAgYnFoPXByaXYtPmJvdHRvbV9xaDsKCiAgICAgICAgaWYgKCFwcml2LT5uZXh0X3F1ZXVl ZF91cmIpIHsKCiAgICAgICAgICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgogICAgICAgICAgICAg ICAgaWYgKHByaXYtPnByZXZfcXVldWVkX3VyYiAmJiBtb2RlICE9IDIpIHsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVyYl9wcml2X3QqIHBwcml2PSh1cmJfcHJpdl90Kilwcml2LT5wcmV2 X3F1ZXVlZF91cmItPmhjcHJpdjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8g eyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxh Z3MpOiA6Im1lbW9yeSIpOyAodm9pZCkoJnMtPnFoX2xvY2spOyB9IHdoaWxlICgwKTsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2cWggPSAoKHVoY2lfZGVzY190ICopKChjaGFy ICopKHBwcml2LT5kZXNjX2xpc3QubmV4dCktKHVuc2lnbmVkIGxvbmcpKCYoKHVoY2lfZGVzY190 ICopMCktPmRlc2NfbGlzdCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2 dGQgPSAoKHVoY2lfZGVzY190ICopKChjaGFyICopKHByZXZxaC0+dmVydGljYWwucHJldiktKHVu c2lnbmVkIGxvbmcpKCYoKHVoY2lfZGVzY190ICopMCktPnZlcnRpY2FsKSkpOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChwcmV2dGQpLT5ody50ZC5saW5rPSgoX191MzIpKHByaXYt PmJvdHRvbV9xaC0+ZG1hX2FkZHIgfCAweDAwMDIpKTsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxvY2s7IGFkZGwgJDAsMCglJWVzcCkiOiA6 IDoibWVtb3J5Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8ge30gd2hpbGUg KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDAp OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToi bWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwcHJpdi0+Ym90dG9tX3FoID0gcHJpdi0+Ym90dG9tX3FoOwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBwcml2LT5uZXh0X3F1ZXVlZF91cmIgPSAoKHZvaWQgKikwKTsKICAg ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAg ICAgICAgICAgICAgICBpZiAobW9kZSAhPSAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVubGlua19xaChzLCBxaCk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnFoKSB7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnFoPXByaXYtPm5leHRfcWg7CgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2RlICE9IDIpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxpbmtfcWgocywgbnFoKTsKCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUgIT0gMCkgewogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbnFoLT5sYXN0X3VzZWQgPSBicWgtPmxhc3RfdXNlZCA9IG5v dzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfYWRkX3RhaWwg KCZucWgtPmhvcml6b250YWwsICZzLT5mcmVlX2Rlc2MpOwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCAoJmJxaC0+aG9yaXpvbnRhbCwgJnMtPmZy ZWVfZGVzYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewoK ICAgICAgICAgIGRvIHt9IHdoaWxlICgwKTsKCgogICAgICAgICAgICAgICAgaWYgKG1vZGUgIT0g MikgewogICAgICAgICAgICAgICAgICAgICAgICB1cmJfdCAqbnVyYjsKICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAgICAgICAgICAgICAgICAgICAgIG51 cmIgPSBwcml2LT5uZXh0X3F1ZXVlZF91cmI7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsg X19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIgKGZsYWdz KTogOiJtZW1vcnkiKTsgKHZvaWQpKCZzLT5xaF9sb2NrKTsgfSB3aGlsZSAoMCk7CgogICAgICAg ICAgICAgICAgICAgICAgICBpZiAoIXByaXYtPnByZXZfcXVldWVkX3VyYikgewoKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwcmV2cWggPSAoKHVoY2lfZGVzY190ICopKChjaGFyICop KHFoLT5ob3Jpem9udGFsLnByZXYpLSh1bnNpZ25lZCBsb25nKSgmKCh1aGNpX2Rlc2NfdCAqKTAp LT5ob3Jpem9udGFsKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmV2cWgp LT5ody5xaC5oZWFkPSgoX191MzIpKGJxaC0+ZG1hX2FkZHIgfCAweDAwMDIpKTsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2RlbCAoJnFoLT5ob3Jpem9udGFsKTsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2FkZCAoJmJxaC0+aG9yaXpvbnRhbCwgJnBy ZXZxaC0+aG9yaXpvbnRhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJiX3By aXZfdCogcHByaXY9KHVyYl9wcml2X3QqKXByaXYtPnByZXZfcXVldWVkX3VyYi0+aGNwcml2Owog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyYl9wcml2X3QqIG5wcml2PSh1cmJfcHJp dl90KiludXJiLT5oY3ByaXY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWhjaV9k ZXNjX3QgKiBibnFoOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibnFoID0gKCh1 aGNpX2Rlc2NfdCAqKSgoY2hhciAqKShucHJpdi0+ZGVzY19saXN0Lm5leHQpLSh1bnNpZ25lZCBs b25nKSgmKCh1aGNpX2Rlc2NfdCAqKTApLT5kZXNjX2xpc3QpKSk7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcHByaXYtPmJvdHRvbV9xaCA9IGJucWg7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcHByaXYtPm5leHRfcXVldWVkX3VyYiA9IG51cmI7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcHJldnFoID0gKCh1aGNpX2Rlc2NfdCAqKSgoY2hhciAqKShw cHJpdi0+ZGVzY19saXN0Lm5leHQpLSh1bnNpZ25lZCBsb25nKSgmKCh1aGNpX2Rlc2NfdCAqKTAp LT5kZXNjX2xpc3QpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZXZxaCkt Pmh3LnFoLmhlYWQ9KChfX3UzMikoYnFoLT5kbWFfYWRkciB8IDB4MDAwMikpOwogICAgICAgICAg ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRp bGVfXyAoImxvY2s7IGFkZGwgJDAsMCglJWVzcCkiOiA6IDoibWVtb3J5Iik7CiAgICAgICAgICAg ICAgICAgICAgICAgICgodXJiX3ByaXZfdCopbnVyYi0+aGNwcml2KS0+cHJldl9xdWV1ZWRfdXJi PXByaXYtPnByZXZfcXVldWVkX3VyYjsKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyBkbyB7 IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJn IiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICB9 CiAgICAgICAgfQoKICAgICAgICBpZiAobW9kZSAhPSAwKSB7CiAgICAgICAgICAgICAgICBxaC0+ bGFzdF91c2VkID0gbm93OwogICAgICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCAoJnFoLT5ob3Jp em9udGFsLCAmcy0+ZnJlZV9kZXNjKTsKICAgICAgICB9Cn0KCgogICAgICAgIHZvaWQgdWhjaV9y ZWxlYXNlX2JhbmR3aWR0aCh1cmJfdCAqdXJiKQp7CiAgICAgICAgaWYgKHVyYi0+YmFuZHdpZHRo KSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKCgoKHVyYi0+cGlwZSkgPj4gMzApICYgMykpIHsK ICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgdXNiX3JlbGVh c2VfYmFuZHdpZHRoX1JmODA1NGY3YiAodXJiLT5kZXYsIHVyYiwgMCk7CiAgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAg ICAgICAgICB1c2JfcmVsZWFzZV9iYW5kd2lkdGhfUmY4MDU0ZjdiICh1cmItPmRldiwgdXJiLCAx KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0 OgogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAg ICB9Cn0KCiAgICAgICAgdm9pZCB1aGNpX3VyYl9kbWFfc3luYyh1aGNpX3QgKnMsIHVyYl90ICp1 cmIsIHVyYl9wcml2X3QgKnVyYl9wcml2KQp7CiAgICAgICAgaWYgKHVyYl9wcml2LT5zZXR1cF9w YWNrZXRfZG1hKQogICAgICAgICAgICAgICAgcGNpX2RtYV9zeW5jX3NpbmdsZShzLT51aGNpX3Bj aSwgdXJiX3ByaXYtPnNldHVwX3BhY2tldF9kbWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemVvZihkZXZyZXF1ZXN0KSwgMSk7CgogICAgICAgIGlmICh1cmJfcHJpdi0+ dHJhbnNmZXJfYnVmZmVyX2RtYSkKICAgICAgICAgICAgICAgIHBjaV9kbWFfc3luY19zaW5nbGUo cy0+dWhjaV9wY2ksIHVyYl9wcml2LT50cmFuc2Zlcl9idWZmZXJfZG1hLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGgsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHVyYi0+cGlwZSkgPj4gNykgJiAxKSA/ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgOgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAxKTsKfQoKICAgICAgICB2b2lkIHVoY2lfdXJiX2RtYV91bm1h cCh1aGNpX3QgKnMsIHVyYl90ICp1cmIsIHVyYl9wcml2X3QgKnVyYl9wcml2KQp7CiAgICAgICAg aWYgKHVyYl9wcml2LT5zZXR1cF9wYWNrZXRfZG1hKSB7CiAgICAgICAgICAgICAgICBwY2lfdW5t YXBfc2luZ2xlKHMtPnVoY2lfcGNpLCB1cmJfcHJpdi0+c2V0dXBfcGFja2V0X2RtYSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGRldnJlcXVlc3QpLCAxKTsKICAgICAg ICAgICAgICAgIHVyYl9wcml2LT5zZXR1cF9wYWNrZXRfZG1hID0gMDsKICAgICAgICB9CiAgICAg ICAgaWYgKHVyYl9wcml2LT50cmFuc2Zlcl9idWZmZXJfZG1hKSB7CiAgICAgICAgICAgICAgICBw Y2lfdW5tYXBfc2luZ2xlKHMtPnVoY2lfcGNpLCB1cmJfcHJpdi0+dHJhbnNmZXJfYnVmZmVyX2Rt YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJiLT50cmFuc2Zlcl9idWZmZXJf bGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCh1cmItPnBpcGUpID4+ IDcpICYgMSkgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyIDoKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMSk7CiAgICAgICAgICAgICAgICB1cmJfcHJpdi0+dHJh bnNmZXJfYnVmZmVyX2RtYSA9IDA7CiAgICAgICAgfQp9CgoKCgoKICAgICAgICBpbnQgdWhjaV91 bmxpbmtfdXJiX2FzeW5jICh1aGNpX3QgKnMsdXJiX3QgKnVyYiwgaW50IG1vZGUpCnsKICAgICAg ICB1aGNpX2Rlc2NfdCAqcWg7CiAgICAgICAgdXJiX3ByaXZfdCAqdXJiX3ByaXY7CgogICAgICAg IGRvIHt9IHdoaWxlICgwKTsKCiAgICAgICAgaWYgKCh1cmItPnN0YXR1cyA9PSAtMTE1KSB8fAog ICAgICAgICAgICAoKCgoKHVyYi0+cGlwZSkgPj4gMzApICYgMykgPT0gMSkgJiYgKCh1cmJfcHJp dl90Kil1cmItPmhjcHJpdiktPmZsYWdzKSkKICAgICAgICB7CiAgICAgICAgICAgICAgICAoKHVy Yl9wcml2X3QqKXVyYi0+aGNwcml2KS0+c3RhcnRlZCA9IH4wOwogICAgICAgICAgICAgICAgZGVx dWV1ZV91cmIgKHMsIHVyYik7CgogICAgICAgICAgICAgICAgaWYgKG1vZGU9PTApCiAgICAgICAg ICAgICAgICAgICAgICAgIGxpc3RfYWRkX3RhaWwgKCZ1cmItPnVyYl9saXN0LCAmcy0+dXJiX3Vu bGlua2VkKTsKCiAgICAgICAgICAgICAgICB1aGNpX3N3aXRjaF90aW1lcl9pbnQocyk7CiAgICAg ICAgICAgICAgICBzLT51bmxpbmtfdXJiX2RvbmUgPSAxOwogICAgICAgICAgICAgICAgdWhjaV9y ZWxlYXNlX2JhbmR3aWR0aCh1cmIpOwoKICAgICAgICAgICAgICAgIHVyYi0+c3RhdHVzID0gLTEw MzsKICAgICAgICAgICAgICAgIHVyYl9wcml2ID0gKHVyYl9wcml2X3QqKXVyYi0+aGNwcml2OwoK ICAgICAgICAgICAgICAgIHN3aXRjaCAoKCgodXJiLT5waXBlKSA+PiAzMCkgJiAzKSkgewogICAg ICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAoKHVyYi0+ZGV2KS0+ dG9nZ2xlWygoKCh1cmItPnBpcGUpID4+IDcpICYgMSkgXiAxKV0gXj0gKDEgPDwgKCgodXJiLT5w aXBlKSA+PiAxNSkgJiAweGYpKSk7CgogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAg ICAgICAgICAgICAgICB1aGNpX2NsZWFuX2lzb19zdGVwMSAocywgdXJiX3ByaXYpOwogICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAg ICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgIHFoID0gKCh1aGNpX2Rlc2Nf dCAqKSgoY2hhciAqKSh1cmJfcHJpdi0+ZGVzY19saXN0Lm5leHQpLSh1bnNpZ25lZCBsb25nKSgm KCh1aGNpX2Rlc2NfdCAqKTApLT5kZXNjX2xpc3QpKSk7CiAgICAgICAgICAgICAgICAgICAgICAg IHVoY2lfY2xlYW5fdHJhbnNmZXIgKHMsIHVyYiwgcWgsIDApOwogICAgICAgICAgICAgICAgICAg ICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICgodXJiX3ByaXZf dCopdXJiLT5oY3ByaXYpLT5zdGFydGVkID0gKGludyAoKHMpLT5pb19hZGRyICsgNikpOwogICAg ICAgICAgICAgICAgcmV0dXJuIC0xMTU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gMDsKfQoK CiAgICAgICAgaW50IHVoY2lfdW5saW5rX3VyYl9zeW5jICh1aGNpX3QgKnMsIHVyYl90ICp1cmIp CnsKICAgICAgICB1aGNpX2Rlc2NfdCAqcWg7CiAgICAgICAgdXJiX3ByaXZfdCAqdXJiX3ByaXY7 CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFncz0wOwogICAgICAgIHN0cnVjdCB1c2JfZGV2aWNl ICp1c2JfZGV2OwoKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBw b3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmcy0+dXJiX2xp c3RfbG9jayk7IH0gd2hpbGUgKDApOwoKICAgICAgICBpZiAodXJiLT5zdGF0dXMgPT0gLTExNSkg ewoKCiAgICAgICAgICAgICAgICB1aGNpX3VubGlua191cmJfYXN5bmMocywgdXJiLCAxKTsKCiAg ICAgICAgICAgICAgICB1cmJfcHJpdiA9IHVyYi0+aGNwcml2OwogICAgICAgICAgICAgICAgdXJi LT5zdGF0dXMgPSAtMjsKICAgICAgICAgICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2Fz bV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5 IiwgImNjIik7IH0gd2hpbGUgKDApOwoKCiAgICAgICAgICAgICAgICBzd2l0Y2ggKCgoKHVyYi0+ cGlwZSkgPj4gMzApICYgMykpIHsKCiAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAg ICAgICAgICAgICAgIHVoY2lfd2FpdF9tcygxKTsKICAgICAgICAgICAgICAgICAgICAgICAgdWhj aV9jbGVhbl9pc29fc3RlcDIocywgdXJiX3ByaXYpOwogICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICBjYXNlIDI6CiAg ICAgICAgICAgICAgICAgICAgICAgIHFoID0gKCh1aGNpX2Rlc2NfdCAqKSgoY2hhciAqKSh1cmJf cHJpdi0+ZGVzY19saXN0Lm5leHQpLSh1bnNpZ25lZCBsb25nKSgmKCh1aGNpX2Rlc2NfdCAqKTAp LT5kZXNjX2xpc3QpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHVoY2lfY2xlYW5fdHJhbnNm ZXIocywgdXJiLCBxaCwgMik7CiAgICAgICAgICAgICAgICAgICAgICAgIHVoY2lfd2FpdF9tcygx KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVyYi0+c3RhdHVzID0gLTI7Cgog ICAgICAgICAgICAgICAgdWhjaV91cmJfZG1hX3VubWFwKHMsIHVyYiwgdXJiLT5oY3ByaXYpOwoK CiAgICAgICAgICAgICAgICBrbWVtX2NhY2hlX2ZyZWVfUjg5MWYyNjg2ICh1cmJfcHJpdl9rbWVt LCB1cmItPmhjcHJpdik7CgoKCiAgICAgICAgICAgICAgICB1c2JfZGV2ID0gdXJiLT5kZXY7CiAg ICAgICAgICAgICAgICBpZiAodXJiLT5jb21wbGV0ZV9SOTQyNjEzYWQpIHsKICAgICAgICAgICAg ICAgICAgICAgICAgZG8ge30gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICB1cmIt PmRldiA9ICgodm9pZCAqKTApOwogICAgICAgICAgICAgICAgICAgICAgICB1cmItPmNvbXBsZXRl X1I5NDI2MTNhZCAoKHN0cnVjdCB1cmIgKikgdXJiKTsKICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgIHVzYl9mcmVlX2Rldl9SNDFiZDgwMTEgKHVzYl9kZXYpOwogICAgICAgIH0KICAg ICAgICBlbHNlCiAgICAgICAgICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBf X3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJj YyIpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgcmV0dXJuIDA7Cn0KCgoKCgoKICAgICAgICB2b2lk IHVoY2lfY2xlYW51cF91bmxpbmsodWhjaV90ICpzLCBpbnQgZm9yY2UpCnsKICAgICAgICBzdHJ1 Y3QgbGlzdF9oZWFkICpxOwogICAgICAgIHVyYl90ICp1cmI7CiAgICAgICAgc3RydWN0IHVzYl9k ZXZpY2UgKmRldjsKICAgICAgICBpbnQgbm93LCB0eXBlOwogICAgICAgIHVyYl9wcml2X3QgKnVy Yl9wcml2OwoKICAgICAgICBxPXMtPnVyYl91bmxpbmtlZC5uZXh0OwogICAgICAgIG5vdz0oaW53 ICgocyktPmlvX2FkZHIgKyA2KSk7CgogICAgICAgIHdoaWxlIChxICE9ICZzLT51cmJfdW5saW5r ZWQpIHsKCiAgICAgICAgICAgICAgICB1cmIgPSAoKHVyYl90ICopKChjaGFyICopKHEpLSh1bnNp Z25lZCBsb25nKSgmKCh1cmJfdCAqKTApLT51cmJfbGlzdCkpKTsKCiAgICAgICAgICAgICAgICB1 cmJfcHJpdiA9ICh1cmJfcHJpdl90Kil1cmItPmhjcHJpdjsKICAgICAgICAgICAgICAgIHEgPSB1 cmItPnVyYl9saXN0Lm5leHQ7CgogICAgICAgICAgICAgICAgaWYgKCF1cmJfcHJpdikKICAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgaWYgKGZvcmNlIHx8ICgo dXJiX3ByaXYtPnN0YXJ0ZWQgIT0gfjApICYmICh1cmJfcHJpdi0+c3RhcnRlZCAhPSBub3cpKSkg ewogICAgICAgICAgICAgICAgICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAg ICAgICAgICAgIHR5cGU9KCgodXJiLT5waXBlKSA+PiAzMCkgJiAzKTsKCiAgICAgICAgICAgICAg ICAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc190cmFuc2ZlciAocywgdXJi LCAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg ICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh cy0+YXZvaWRfYnVsay5jb3VudGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcHJvY2Vzc190cmFuc2ZlciAocywgdXJiLCAyKTsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg ICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy b2Nlc3NfaXNvIChzLCB1cmIsIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHJvY2Vzc19pbnRlcnJ1cHQgKHMsIHVyYik7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAg ICAgICAgICAgICAgICAgIGlmICghKHVyYi0+dHJhbnNmZXJfZmxhZ3MgJiAweDEwMDApKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyYi0+c3RhdHVzID0gLTEwNDsKCiAgICAgICAg ICAgICAgICAgICAgICAgIGRldiA9IHVyYi0+ZGV2OwogICAgICAgICAgICAgICAgICAgICAgICB1 cmJfcHJpdiA9IHVyYi0+aGNwcml2OwogICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2RlbCAo JnVyYi0+dXJiX2xpc3QpOwoKICAgICAgICAgICAgICAgICAgICAgICAgdWhjaV91cmJfZG1hX3N5 bmMocywgdXJiLCB1cmJfcHJpdik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cmItPmNv bXBsZXRlX1I5NDI2MTNhZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsg fSB3aGlsZSgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmItPmRldiA9ICgo dm9pZCAqKTApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyYi0+Y29tcGxldGVf Ujk0MjYxM2FkICgoc3RydWN0IHVyYiAqKSB1cmIpOwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh2b2lkKSgmcy0+dXJiX2xpc3RfbG9jayk7CiAgICAgICAgICAgICAgICAgICAgICAg IH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHVyYi0+dHJhbnNmZXJfZmxhZ3MgJiAw eDEwMDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyYi0+c3RhdHVzID0gLTI7 CgogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgICAgICAg ICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWhjaV9jbGVhbl9pc29fc3RlcDIocywgdXJiX3ByaXYp OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg ICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB1aGNpX3VyYl9kbWFfdW5tYXAocywg dXJiLCB1cmJfcHJpdik7CgogICAgICAgICAgICAgICAgICAgICAgICB1c2JfZnJlZV9kZXZfUjQx YmQ4MDExIChkZXYpOwoKICAgICAgICAgICAgICAgICAgICAgICAga21lbV9jYWNoZV9mcmVlX1I4 OTFmMjY4NiAodXJiX3ByaXZfa21lbSwgdXJiX3ByaXYpOwoKCgoKICAgICAgICAgICAgICAgIH0K ICAgICAgICB9Cn0KCgogICAgICAgIGludCB1aGNpX3VubGlua191cmIgKHVyYl90ICp1cmIpCnsK ICAgICAgICB1aGNpX3QgKnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFncz0wOwogICAgICAg IGRvIHt9IHdoaWxlICgwKTsKICAgICAgICBpZiAoIXVyYiB8fCAhdXJiLT5kZXYpCiAgICAgICAg ICAgICAgICByZXR1cm4gLTIyOwoKICAgICAgICBzID0gKHVoY2lfdCopIHVyYi0+ZGV2LT5idXMt PmhjcHJpdjsKCiAgICAgICAgaWYgKCgoKHVyYi0+cGlwZSkgPj4gOCkgJiAweDdmKSA9PSBzLT5y aC5kZXZudW0pCiAgICAgICAgICAgICAgICByZXR1cm4gcmhfdW5saW5rX3VyYiAodXJiKTsKCiAg ICAgICAgaWYgKCF1cmItPmhjcHJpdikKICAgICAgICAgICAgICAgIHJldHVybiAtMjI7CgogICAg ICAgIGlmICh1cmItPnRyYW5zZmVyX2ZsYWdzICYgMHgwMDA4KSB7CiAgICAgICAgICAgICAgICBp bnQgcmV0OwogICAgICAgICAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZs IDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9yeSIpOyAodm9pZCkoJnMtPnVy Yl9saXN0X2xvY2spOyB9IHdoaWxlICgwKTsKCiAgICAgICAgICAgICAgICB1aGNpX3JlbGVhc2Vf YmFuZHdpZHRoKHVyYik7CiAgICAgICAgICAgICAgICByZXQgPSB1aGNpX3VubGlua191cmJfYXN5 bmMocywgdXJiLCAwKTsKCiAgICAgICAgICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19h c21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9y eSIsICJjYyIpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAg ICAgfQogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHJldHVybiB1aGNpX3VubGlua191cmJf c3luYyhzLCB1cmIpOwp9CgoKCgogICAgICAgIGludCBmaW5kX2lzb19saW1pdHMgKHVyYl90ICp1 cmIsIHVuc2lnbmVkIGludCAqc3RhcnQsIHVuc2lnbmVkIGludCAqZW5kKQp7CiAgICAgICAgdXJi X3QgKnUsICpsYXN0X3VyYiA9ICgodm9pZCAqKTApOwogICAgICAgIHVoY2lfdCAqcyA9ICh1aGNp X3QqKSB1cmItPmRldi0+YnVzLT5oY3ByaXY7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqcDsK ICAgICAgICBpbnQgcmV0PS0xOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgogICAgICAg IGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIg KGZsYWdzKTogOiJtZW1vcnkiKTsgKHZvaWQpKCZzLT51cmJfbGlzdF9sb2NrKTsgfSB3aGlsZSAo MCk7CiAgICAgICAgcD1zLT51cmJfbGlzdC5wcmV2OwoKICAgICAgICBmb3IgKDsgcCAhPSAmcy0+ dXJiX2xpc3Q7IHAgPSBwLT5wcmV2KSB7CiAgICAgICAgICAgICAgICB1ID0gKCh1cmJfdCAqKSgo Y2hhciAqKShwKS0odW5zaWduZWQgbG9uZykoJigodXJiX3QgKikwKS0+dXJiX2xpc3QpKSk7CgoK ICAgICAgICAgICAgICAgIGlmICgodXJiLT5waXBlID09IHUtPnBpcGUpICYmICh1cmItPmRldiA9 PSB1LT5kZXYpICYmICh1LT5zdGF0dXMgPT0gLTExNSkpIHsKICAgICAgICAgICAgICAgICAgICAg ICAgaWYgKCFsYXN0X3VyYikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhcnQg PSB1LT5zdGFydF9mcmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF91cmIgPSB1Owog ICAgICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGxhc3RfdXJiKSB7CiAgICAg ICAgICAgICAgICAqZW5kID0gKGxhc3RfdXJiLT5zdGFydF9mcmFtZSArIGxhc3RfdXJiLT5udW1i ZXJfb2ZfcGFja2V0cykgJiAxMDIzOwogICAgICAgICAgICAgICAgcmV0PTA7CiAgICAgICAgfQoK ICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hs ICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsK CiAgICAgICAgcmV0dXJuIHJldDsKfQoKCgogICAgICAgIGludCBpc29fZmluZF9zdGFydCAodXJi X3QgKnVyYikKewogICAgICAgIHVoY2lfdCAqcyA9ICh1aGNpX3QqKSB1cmItPmRldi0+YnVzLT5o Y3ByaXY7CiAgICAgICAgdW5zaWduZWQgaW50IG5vdzsKICAgICAgICB1bnNpZ25lZCBpbnQgc3Rh cnRfbGltaXQgPSAwLCBzdG9wX2xpbWl0ID0gMCwgcXVldWVkX3NpemU7CiAgICAgICAgaW50IGxp bWl0czsKCiAgICAgICAgbm93ID0gKGludyAoKHMpLT5pb19hZGRyICsgNikpICYgMTAyMzsKCiAg ICAgICAgaWYgKCh1bnNpZ25lZCkgdXJiLT5udW1iZXJfb2ZfcGFja2V0cyA+IDkwMCkKICAgICAg ICAgICAgICAgIHJldHVybiAtMjc7CgogICAgICAgIGxpbWl0cyA9IGZpbmRfaXNvX2xpbWl0cyAo dXJiLCAmc3RhcnRfbGltaXQsICZzdG9wX2xpbWl0KTsKICAgICAgICBxdWV1ZWRfc2l6ZSA9IChz dG9wX2xpbWl0IC0gc3RhcnRfbGltaXQpICYgMTAyMzsKCiAgICAgICAgaWYgKHVyYi0+dHJhbnNm ZXJfZmxhZ3MgJiAweDAwMDIpIHsKCiAgICAgICAgICAgICAgICBpZiAobGltaXRzKSB7CgogICAg ICAgICAgICAgICAgICAgICAgICB1cmItPnN0YXJ0X2ZyYW1lID0gKG5vdyArIDEwKSAmIDEwMjM7 CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg ICAgICAgICAgdXJiLT5zdGFydF9mcmFtZSA9IHN0b3BfbGltaXQ7CgogICAgICAgICAgICAgICAg ICAgICAgICBpZiAoKChub3cgLSB1cmItPnN0YXJ0X2ZyYW1lKSAmIDEwMjMpIDw9ICh1bnNpZ25l ZCkgdXJiLT5udW1iZXJfb2ZfcGFja2V0cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHByaW50a19SMWI3ZDQwNzQoIjw2PiIgInVzYi11aGNpLmMiICI6ICIgImlzb19maW5kX3N0 YXJ0OiBnYXAgaW4gc2VhbWxlc3MgaXNvY2hyb25vdXMgc2NoZWR1bGluZyIgIlxuIik7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8ge30gd2hpbGUgKDApOwoKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1cmItPnN0YXJ0X2ZyYW1lID0gKG5vdyArIDUpICYgMTAyMzsK ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAg ICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHVyYi0+c3RhcnRfZnJhbWUgJj0gMTAyMzsKICAg ICAgICAgICAgICAgIGlmICgoKG5vdyAtIHVyYi0+c3RhcnRfZnJhbWUpICYgMTAyMykgPCAodW5z aWduZWQpIHVyYi0+bnVtYmVyX29mX3BhY2tldHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAg ZG8ge30gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTExOwogICAg ICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgICAgIGlmIChsaW1pdHMpCiAgICAgICAgICAg ICAgICByZXR1cm4gMDsKCiAgICAgICAgaWYgKCgodXJiLT5zdGFydF9mcmFtZSAtIHN0YXJ0X2xp bWl0KSAmIDEwMjMpIDwgcXVldWVkX3NpemUgfHwKICAgICAgICAgICAgKCh1cmItPnN0YXJ0X2Zy YW1lICsgdXJiLT5udW1iZXJfb2ZfcGFja2V0cyAtIDEgLSBzdGFydF9saW1pdCkgJiAxMDIzKSA8 IHF1ZXVlZF9zaXplKSB7CiAgICAgICAgICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgogICAgICAg ICAgICAgICAgcmV0dXJuIC0xMTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAwOwp9CgoKCgoK ICAgICAgICBpbnQgdWhjaV9zdWJtaXRfaW50X3VyYiAodXJiX3QgKnVyYikKewogICAgICAgIHVo Y2lfdCAqcyA9ICh1aGNpX3QqKSB1cmItPmRldi0+YnVzLT5oY3ByaXY7CiAgICAgICAgdXJiX3By aXZfdCAqdXJiX3ByaXYgPSB1cmItPmhjcHJpdjsKICAgICAgICBpbnQgbmludCwgbjsKICAgICAg ICB1aGNpX2Rlc2NfdCAqdGQ7CiAgICAgICAgaW50IHN0YXR1cywgZGVzdGluYXRpb247CiAgICAg ICAgaW50IGluZm87CiAgICAgICAgdW5zaWduZWQgaW50IHBpcGUgPSB1cmItPnBpcGU7CgogICAg ICAgIGlmICh1cmItPmludGVydmFsIDwgMCB8fCB1cmItPmludGVydmFsID49IDI1NikKICAgICAg ICAgICAgICAgIHJldHVybiAtMjI7CgogICAgICAgIGlmICh1cmItPmludGVydmFsID09IDApCiAg ICAgICAgICAgICAgICBuaW50ID0gMDsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGZv ciAobmludCA9IDAsIG4gPSAxOyBuaW50IDw9IDg7IG5pbnQrKywgbiArPSBuKQogICAgICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVyYi0+aW50ZXJ2YWwgPCBuKSB7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJiLT5pbnRlcnZhbCA9IG4gLyAyOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuaW50LS07CiAgICAgICAg fQoKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgogICAgICAgIHVyYi0+c3RhcnRfZnJhbWUgPSAo aW53ICgocyktPmlvX2FkZHIgKyA2KSkgJiAxMDIzOwoKICAgICAgICB1cmItPm51bWJlcl9vZl9w YWNrZXRzID0gMTsKCgogICAgICAgIGlmICh1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGggPiAo KCgoKHBpcGUpID4+IDcpICYgMSkgXiAxKSA/ICh1cmItPmRldiktPmVwbWF4cGFja2V0b3V0Wygo KHBpcGUpID4+IDE1KSAmIDB4ZildIDogKHVyYi0+ZGV2KS0+ZXBtYXhwYWNrZXRpbiBbKCgocGlw ZSkgPj4gMTUpICYgMHhmKV0gKSkKICAgICAgICAgICAgICAgIHJldHVybiAtMjI7CgogICAgICAg IGlmIChhbGxvY190ZCAocywgJnRkLCAweDAwMDQpKQogICAgICAgICAgICAgICAgcmV0dXJuIC0x MjsKCiAgICAgICAgc3RhdHVzID0gKHBpcGUgJiAoMSA8PCAyNikpIHwgKDEgPDwgMjMpIHwgKDEg PDwgMjQpIHwKICAgICAgICAgICAgICAgICh1cmItPnRyYW5zZmVyX2ZsYWdzICYgMHgwMDAxID8g MCA6ICgxIDw8IDI5KSkgfCAoMyA8PCAyNyk7CgogICAgICAgIGRlc3RpbmF0aW9uID0gKHVyYi0+ cGlwZSAmIDB4MDAwN2ZmMDApIHwgKCgodXJiLT5waXBlKSAmIDB4ODApID8gMHg2OSA6IDB4ZTEp IHwKICAgICAgICAgICAgICAgICgoKHVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aCAtIDEpICYg MHg3ZmYpIDw8IDIxKTsKCgogICAgICAgIGluZm8gPSBkZXN0aW5hdGlvbiB8ICgoKCh1cmItPmRl diktPnRvZ2dsZVsoKCgocGlwZSkgPj4gNykgJiAxKSBeIDEpXSA+PiAoKChwaXBlKSA+PiAxNSkg JiAweGYpKSAmIDEpIDw8IDE5KTsKCiAgICAgICAgZmlsbF90ZCAodGQsIHN0YXR1cywgaW5mbywg dXJiX3ByaXYtPnRyYW5zZmVyX2J1ZmZlcl9kbWEpOwogICAgICAgIGxpc3RfYWRkX3RhaWwgKCZ0 ZC0+ZGVzY19saXN0LCAmdXJiX3ByaXYtPmRlc2NfbGlzdCk7CgogICAgICAgIHF1ZXVlX3VyYiAo cywgdXJiKTsKCiAgICAgICAgaW5zZXJ0X3RkX2hvcml6b250YWwgKHMsIHMtPmludF9jaGFpbltu aW50XSwgdGQpOwoKICAgICAgICAoKHVyYi0+ZGV2KS0+dG9nZ2xlWygoKChwaXBlKSA+PiA3KSAm IDEpIF4gMSldIF49ICgxIDw8ICgoKHBpcGUpID4+IDE1KSAmIDB4ZikpKTsKCiAgICAgICAgcmV0 dXJuIDA7Cn0KCiAgICAgICAgaW50IHVoY2lfc3VibWl0X2lzb191cmIgKHVyYl90ICp1cmIpCnsK ICAgICAgICB1aGNpX3QgKnMgPSAodWhjaV90KikgdXJiLT5kZXYtPmJ1cy0+aGNwcml2OwogICAg ICAgIHVyYl9wcml2X3QgKnVyYl9wcml2ID0gdXJiLT5oY3ByaXY7CgoKCgogICAgICAgIGludCBu LCByZXQsIGxhc3Q9MDsKICAgICAgICB1aGNpX2Rlc2NfdCAqdGQsICoqdGRtOwogICAgICAgIGlu dCBzdGF0dXMsIGRlc3RpbmF0aW9uOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgogICAg ICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIjoiPWciIChmbGFncyk6 ICk7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsKICAg ICAgICByZXQgPSBpc29fZmluZF9zdGFydCAodXJiKTsKCiAgICAgICAgaWYgKHJldCkKICAgICAg ICAgICAgICAgIGdvdG8gZXJyOwoKICAgICAgICB0ZG0gPSAodWhjaV9kZXNjX3QgKiopIGttYWxs b2NfUjkzZDRjZmU2ICh1cmItPm51bWJlcl9vZl9wYWNrZXRzICogc2l6ZW9mICh1aGNpX2Rlc2Nf dCopLCAoKHsgaW50IF9fY3B1ID0gMDsgKCgodm9pZCkoKF9fY3B1KSksIGlycV9zdGF0X1I5ZTM2 ZjA2ZVswXS5fX2xvY2FsX2lycV9jb3VudCkgKyAoKHZvaWQpKChfX2NwdSkpLCBpcnFfc3RhdF9S OWUzNmYwNmVbMF0uX19sb2NhbF9iaF9jb3VudCkgIT0gMCk7IH0pPyAoMHgyMCkgOiAoMHgyMCB8 IDB4MTAgfCAweDQwIHwgMHg4MCB8IDB4MTAwKSkpOwoKICAgICAgICBpZiAoIXRkbSkgewogICAg ICAgICAgICAgICAgcmV0ID0gLTEyOwogICAgICAgICAgICAgICAgZ290byBlcnI7CiAgICAgICAg fQoKICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50 X3AoKHVyYi0+bnVtYmVyX29mX3BhY2tldHMgKiBzaXplb2YgKHVoY2lfZGVzY190KikpKSA/IF9f Y29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgodGRtKSksKCgweDAxMDEwMTAxVUwqKHVuc2ln bmVkIGNoYXIpKDApKSksKCh1cmItPm51bWJlcl9vZl9wYWNrZXRzICogc2l6ZW9mICh1aGNpX2Rl c2NfdCopKSkpIDogX19jb25zdGFudF9jX21lbXNldCgoKHRkbSkpLCgoMHgwMTAxMDEwMVVMKih1 bnNpZ25lZCBjaGFyKSgwKSkpLCgodXJiLT5udW1iZXJfb2ZfcGFja2V0cyAqIHNpemVvZiAodWhj aV9kZXNjX3QqKSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHVyYi0+bnVtYmVyX29mX3Bh Y2tldHMgKiBzaXplb2YgKHVoY2lfZGVzY190KikpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgodGRt KSkpLCgoKDApKSksKCgodXJiLT5udW1iZXJfb2ZfcGFja2V0cyAqIHNpemVvZiAodWhjaV9kZXNj X3QqKSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgodGRtKSksKCgwKSksKCh1cmItPm51bWJlcl9v Zl9wYWNrZXRzICogc2l6ZW9mICh1aGNpX2Rlc2NfdCopKSkpKSk7CgoKCgoKICAgICAgICBmb3Ig KG4gPSAwOyBuIDwgdXJiLT5udW1iZXJfb2ZfcGFja2V0czsgbisrKSB7CiAgICAgICAgICAgICAg ICBkbyB7fSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBpZiAoIXVyYi0+aXNvX2ZyYW1lX2Rl c2Nbbl0ubGVuZ3RoKQogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIyAxNTQxICJ1 c2ItdWhjaS5jIgogICAgICAgICAgICAgICAgaWYgKGFsbG9jX3RkIChzLCAmdGQsIDB4MDAwNCkp IHsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGk7CgogICAgICAgICAgICAgICAgICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgbjsgbisrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmICh0ZG1baV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVs ZXRlX2Rlc2MocywgdGRtW2ldKTsKICAgICAgICAgICAgICAgICAgICAgICAga2ZyZWVfUjAzN2Ew Y2JhICh0ZG0pOwogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgIGxhc3Q9bjsKICAgICAgICAgICAgICAgIHRkbVtuXSA9IHRk OwogICAgICAgIH0KCiAgICAgICAgc3RhdHVzID0gKDEgPDwgMjMpIHwgKDEgPDwgMjUpOwoKICAg ICAgICBkZXN0aW5hdGlvbiA9ICh1cmItPnBpcGUgJiAweDAwMDdmZjAwKSB8ICgoKHVyYi0+cGlw ZSkgJiAweDgwKSA/IDB4NjkgOiAweGUxKTsKCgogICAgICAgIGZvciAobiA9IDA7IG4gPCB1cmIt Pm51bWJlcl9vZl9wYWNrZXRzOyBuKyspIHsKICAgICAgICAgICAgICAgIHRkID0gdGRtW25dOwog ICAgICAgICAgICAgICAgaWYgKCF0ZCkKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7 CgogICAgICAgICAgICAgICAgaWYgKG4gPT0gbGFzdCkgewogICAgICAgICAgICAgICAgICAgICAg ICBzdGF0dXMgfD0gKDEgPDwgMjQpOwogICAgICAgICAgICAgICAgICAgICAgICBxdWV1ZV91cmIg KHMsIHVyYik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZmlsbF90ZCAodGQs IHN0YXR1cywgZGVzdGluYXRpb24gfCAoKCh1cmItPmlzb19mcmFtZV9kZXNjW25dLmxlbmd0aCAt IDEpICYgMHg3ZmYpIDw8IDIxKSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVyYl9wcml2LT50 cmFuc2Zlcl9idWZmZXJfZG1hICsgdXJiLT5pc29fZnJhbWVfZGVzY1tuXS5vZmZzZXQpOwogICAg ICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCAoJnRkLT5kZXNjX2xpc3QsICZ1cmJfcHJpdi0+ZGVz Y19saXN0KTsKCiAgICAgICAgICAgICAgICBpbnNlcnRfdGRfaG9yaXpvbnRhbCAocywgcy0+aXNv X3RkWyh1cmItPnN0YXJ0X2ZyYW1lICsgbikgJiAxMDIzXSwgdGQpOwogICAgICAgIH0KCiAgICAg ICAga2ZyZWVfUjAzN2EwY2JhICh0ZG0pOwogICAgICAgIGRvIHt9IHdoaWxlICgwKTsKICAgICAg ICByZXQgPSAwOwoKICAgICAgZXJyOgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNo bCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsKICAgICAgICByZXR1 cm4gcmV0Owp9CgoKCiAgICAgICAgdXJiX3QqIHNlYXJjaF9kZXZfZXAgKHVoY2lfdCAqcywgdXJi X3QgKnVyYikKewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnA7CiAgICAgICAgdXJiX3QgKnRt cDsKICAgICAgICB1bnNpZ25lZCBpbnQgbWFzayA9ICgoKCgodXJiLT5waXBlKSkgPj4gMzApICYg MykgPT0gMikgPyAofjB4ODApIDogKH4wKTsKCiAgICAgICAgZG8ge30gd2hpbGUgKDApOwoKICAg ICAgICBwPXMtPnVyYl9saXN0Lm5leHQ7CgogICAgICAgIGZvciAoOyBwICE9ICZzLT51cmJfbGlz dDsgcCA9IHAtPm5leHQpIHsKICAgICAgICAgICAgICAgIHRtcCA9ICgodXJiX3QgKikoKGNoYXIg KikocCktKHVuc2lnbmVkIGxvbmcpKCYoKHVyYl90ICopMCktPnVyYl9saXN0KSkpOwogICAgICAg ICAgICAgICAgZG8ge30gd2hpbGUgKDApOwoKCiAgICAgICAgICAgICAgICBpZiAoKCEoKCgoKHVy Yi0+cGlwZSkpID4+IDMwKSAmIDMpID09IDApICYmICh0bXAtPmRldiA9PSB1cmItPmRldikgJiYg ISgodG1wLT5waXBlIF4gdXJiLT5waXBlKSAmIG1hc2spKSB8fAogICAgICAgICAgICAgICAgICAg ICh1cmIgPT0gdG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG1wOwogICAg ICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIDA7Cn0KCiAgICAgICAgaW50 IHVoY2lfc3VibWl0X3VyYiAodXJiX3QgKnVyYikKewogICAgICAgIHVoY2lfdCAqczsKICAgICAg ICB1cmJfcHJpdl90ICp1cmJfcHJpdjsKICAgICAgICBpbnQgcmV0ID0gMCwgdHlwZTsKICAgICAg ICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHVyYl90ICpxdWV1ZWRfdXJiPSgodm9pZCAq KTApOwogICAgICAgIGludCBidXN0aW1lOwoKICAgICAgICBpZiAoIXVyYi0+ZGV2IHx8ICF1cmIt PmRldi0+YnVzKQogICAgICAgICAgICAgICAgcmV0dXJuIC0xOTsKCiAgICAgICAgcyA9ICh1aGNp X3QqKSB1cmItPmRldi0+YnVzLT5oY3ByaXY7CgoKICAgICAgICBpZiAoIXMtPnJ1bm5pbmcpCiAg ICAgICAgICAgICAgICByZXR1cm4gLTE5OwoKICAgICAgICB0eXBlID0gKCgodXJiLT5waXBlKSA+ PiAzMCkgJiAzKTsKCiAgICAgICAgaWYgKCgoKHVyYi0+cGlwZSkgPj4gOCkgJiAweDdmKSA9PSBz LT5yaC5kZXZudW0pCiAgICAgICAgICAgICAgICByZXR1cm4gcmhfc3VibWl0X3VyYiAodXJiKTsK CgogICAgICAgIGlmICgoKCgoKHVyYi0+cGlwZSkgPj4gNykgJiAxKSBeIDEpID8gKHVyYi0+ZGV2 KS0+ZXBtYXhwYWNrZXRvdXRbKCgodXJiLT5waXBlKSA+PiAxNSkgJiAweGYpXSA6ICh1cmItPmRl diktPmVwbWF4cGFja2V0aW4gWygoKHVyYi0+cGlwZSkgPj4gMTUpICYgMHhmKV0gKSA8PSAwKSB7 CiAgICAgICAgICAgICAgICBwcmludGtfUjFiN2Q0MDc0KCI8Mz4iICJ1c2ItdWhjaS5jIiAiOiAi ICJ1aGNpX3N1Ym1pdF91cmI6IHBpcGVzaXplIGZvciBwaXBlICV4IGlzIHplcm8iICJcbiIgLCB1 cmItPnBpcGUpOwogICAgICAgICAgICAgICAgcmV0dXJuIC05MDsKICAgICAgICB9CgogICAgICAg IGlmICh1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGggPCAwICYmIHR5cGUgIT0gMCkgewogICAg ICAgICAgICAgICAgcHJpbnRrX1IxYjdkNDA3NCgiPDM+IiAidXNiLXVoY2kuYyIgIjogIiAidWhj aV9zdWJtaXRfdXJiOiBOZWdhdGl2ZSB0cmFuc2ZlciBsZW5ndGggZm9yIHVyYiAlcCIgIlxuIiAs IHVyYik7CiAgICAgICAgICAgICAgICByZXR1cm4gLTIyOwogICAgICAgIH0KCiAgICAgICAgdXNi X2luY19kZXZfdXNlX1JkNmUzZWU4NiAodXJiLT5kZXYpOwoKICAgICAgICBkbyB7IF9fYXNtX18g X192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVt b3J5Iik7ICh2b2lkKSgmcy0+dXJiX2xpc3RfbG9jayk7IH0gd2hpbGUgKDApOwoKICAgICAgICBx dWV1ZWRfdXJiID0gc2VhcmNoX2Rldl9lcCAocywgdXJiKTsKCiAgICAgICAgaWYgKHF1ZXVlZF91 cmIpIHsKCiAgICAgICAgICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgogICAgICAgICAgICAgICAg aWYgKCggdHlwZSAhPSAzKSB8fAogICAgICAgICAgICAgICAgICAgICgodHlwZSA9PSAzKSAmJgog ICAgICAgICAgICAgICAgICAgICAoISh1cmItPnRyYW5zZmVyX2ZsYWdzICYgMHgwMDEwKSB8fCAh KHF1ZXVlZF91cmItPnRyYW5zZmVyX2ZsYWdzICYgMHgwMDEwKSkpKSB7CiAgICAgICAgICAgICAg ICAgICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVz aGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDAp OwogICAgICAgICAgICAgICAgICAgICAgICB1c2JfZnJlZV9kZXZfUjQxYmQ4MDExICh1cmItPmRl dik7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50a19SMWI3ZDQwNzQoIjwzPiIgInVzYi11 aGNpLmMiICI6ICIgIkVOWElPICUwOHgsIGZsYWdzICV4LCB1cmIgJXAsIGJ1cmIgJXAiICJcbiIg LCB1cmItPnBpcGUsdXJiLT50cmFuc2Zlcl9mbGFncyx1cmIscXVldWVkX3VyYik7CiAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiAtNjsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgoK ICAgICAgICB1cmJfcHJpdiA9IGttZW1fY2FjaGVfYWxsb2NfUjc1ODEwOTU2KHVyYl9wcml2X2tt ZW0sICgoeyBpbnQgX19jcHUgPSAwOyAoKCh2b2lkKSgoX19jcHUpKSwgaXJxX3N0YXRfUjllMzZm MDZlWzBdLl9fbG9jYWxfaXJxX2NvdW50KSArICgodm9pZCkoKF9fY3B1KSksIGlycV9zdGF0X1I5 ZTM2ZjA2ZVswXS5fX2xvY2FsX2JoX2NvdW50KSAhPSAwKTsgfSk/ICgweDIwKSA6ICgweDIwIHwg MHgxMCB8IDB4NDAgfCAweDgwIHwgMHgxMDApKSk7CgoKCiAgICAgICAgaWYgKCF1cmJfcHJpdikg ewogICAgICAgICAgICAgICAgdXNiX2ZyZWVfZGV2X1I0MWJkODAxMSAodXJiLT5kZXYpOwogICAg ICAgICAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJw dXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAo MCk7CiAgICAgICAgICAgICAgICByZXR1cm4gLTEyOwogICAgICAgIH0KCiAgICAgICAgKF9fYnVp bHRpbl9jb25zdGFudF9wKDApID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YodXJiX3By aXZfdCkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgodXJiX3ByaXYpKSwoKDB4 MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZih1cmJfcHJpdl90KSkpKSA6 IF9fY29uc3RhbnRfY19tZW1zZXQoKCh1cmJfcHJpdikpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25l ZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKHVyYl9wcml2X3QpKSkpKSA6IChfX2J1aWx0aW5fY29uc3Rh bnRfcCgoc2l6ZW9mKHVyYl9wcml2X3QpKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKHVyYl9wcml2 KSkpLCgoKDApKSksKCgoc2l6ZW9mKHVyYl9wcml2X3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMo KCh1cmJfcHJpdikpLCgoMCkpLCgoc2l6ZW9mKHVyYl9wcml2X3QpKSkpKSk7CiAgICAgICAgdXJi LT5oY3ByaXYgPSB1cmJfcHJpdjsKICAgICAgICBkbyB7ICgmdXJiX3ByaXYtPmRlc2NfbGlzdCkt Pm5leHQgPSAoJnVyYl9wcml2LT5kZXNjX2xpc3QpOyAoJnVyYl9wcml2LT5kZXNjX2xpc3QpLT5w cmV2ID0gKCZ1cmJfcHJpdi0+ZGVzY19saXN0KTsgfSB3aGlsZSAoMCk7CgogICAgICAgIGRvIHt9 IHdoaWxlICgwKTsKCiAgICAgICAgaWYgKHR5cGUgPT0gMikKICAgICAgICAgICAgICAgIHVyYl9w cml2LT5zZXR1cF9wYWNrZXRfZG1hID0gcGNpX21hcF9zaW5nbGUocy0+dWhjaV9wY2ksIHVyYi0+ c2V0dXBfcGFja2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzaXplb2YoZGV2cmVxdWVzdCksIDEpOwoKICAgICAgICBpZiAodXJi LT50cmFuc2Zlcl9idWZmZXJfbGVuZ3RoKQogICAgICAgICAgICAgICAgdXJiX3ByaXYtPnRyYW5z ZmVyX2J1ZmZlcl9kbWEgPSBwY2lfbWFwX3NpbmdsZShzLT51aGNpX3BjaSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJiLT50 cmFuc2Zlcl9idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KCgodXJiLT5waXBlKSA+PiA3KSAmIDEpID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiA6CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpOwoKICAgICAgICBp ZiAodHlwZSA9PSAzKSB7CgogICAgICAgICAgICAgICAgaWYgKHF1ZXVlZF91cmIpIHsKICAgICAg ICAgICAgICAgICAgICAgICAgd2hpbGUgKCgodXJiX3ByaXZfdCopcXVldWVkX3VyYi0+aGNwcml2 KS0+bmV4dF9xdWV1ZWRfdXJiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVl ZF91cmI9KCh1cmJfcHJpdl90KilxdWV1ZWRfdXJiLT5oY3ByaXYpLT5uZXh0X3F1ZXVlZF91cmI7 CgogICAgICAgICAgICAgICAgICAgICAgICAoKHVyYl9wcml2X3QqKXF1ZXVlZF91cmItPmhjcHJp diktPm5leHRfcXVldWVkX3VyYj11cmI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg ICBhdG9taWNfaW5jICgmcy0+YXZvaWRfYnVsayk7CiAgICAgICAgICAgICAgICByZXQgPSB1aGNp X3N1Ym1pdF9idWxrX3VyYiAodXJiLCBxdWV1ZWRfdXJiKTsKICAgICAgICAgICAgICAgIGF0b21p Y19kZWMgKCZzLT5hdm9pZF9idWxrKTsKICAgICAgICAgICAgICAgIGRvIHsgZG8geyB9IHdoaWxl KDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdz KToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsK ICAgICAgICAgICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVf XygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hp bGUgKDApOwogICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgICAgICAgICBj YXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cmItPmJhbmR3aWR0aCA9PSAwKSB7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVyYi0+bnVtYmVyX29mX3BhY2tl dHMgPD0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0g LTIyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBidXN0aW1lID0gdXNiX2NoZWNrX2JhbmR3aWR0aF9SYjg0ZDdkYzYgKHVyYi0+ZGV2LCB1 cmIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidXN0aW1lIDwgMCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IGJ1c3RpbWU7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXQgPSB1aGNpX3N1Ym1pdF9pc29fdXJiKHVyYik7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0ID09IDApCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYl9jbGFpbV9iYW5kd2lkdGhf UmViY2M5MWYzICh1cmItPmRldiwgdXJiLCBidXN0aW1lLCAxKTsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gdWhjaV9zdWJtaXRfaXNvX3VyYih1cmIpOwog ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog ICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodXJiLT5i YW5kd2lkdGggPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1c3RpbWUg PSB1c2JfY2hlY2tfYmFuZHdpZHRoX1JiODRkN2RjNiAodXJiLT5kZXYsIHVyYik7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1c3RpbWUgPCAwKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gYnVzdGltZTsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJldCA9IHVoY2lfc3VibWl0X2ludF91cmIodXJiKTsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIChyZXQgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdXNiX2NsYWltX2JhbmR3aWR0aF9SZWJjYzkxZjMgKHVy Yi0+ZGV2LCB1cmIsIGJ1c3RpbWUsIDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXQgPSB1aGNpX3N1Ym1pdF9pbnRfdXJiKHVyYik7CiAgICAgICAgICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg ICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHVoY2lfc3VibWl0X2NvbnRy b2xfdXJiICh1cmIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IC0yMjsKICAgICAgICAg ICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGRvIHt9IHdoaWxlICgwKTsKCiAgICAgICAgaWYg KHJldCAhPSAwKSB7CiAgICAgICAgICAgICAgICB1aGNpX3VyYl9kbWFfdW5tYXAocywgdXJiLCB1 cmJfcHJpdik7CiAgICAgICAgICAgICAgICB1c2JfZnJlZV9kZXZfUjQxYmQ4MDExICh1cmItPmRl dik7CgogICAgICAgICAgICAgICAga21lbV9jYWNoZV9mcmVlX1I4OTFmMjY4Nih1cmJfcHJpdl9r bWVtLCB1cmJfcHJpdik7CgoKCiAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgIH0K CiAgICAgICAgcmV0dXJuIDA7Cn0KCgogICAgICAgIHZvaWQgdWhjaV9jaGVja190aW1lb3V0cyh1 aGNpX3QgKnMpCnsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwLCpwMjsKICAgICAgICB1cmJf dCAqdXJiOwogICAgICAgIGludCB0eXBlOwoKICAgICAgICBwID0gcy0+dXJiX2xpc3QucHJldjsK CiAgICAgICAgd2hpbGUgKHAgIT0gJnMtPnVyYl9saXN0KSB7CiAgICAgICAgICAgICAgICB1cmJf cHJpdl90ICpoY3ByaXY7CgogICAgICAgICAgICAgICAgcDIgPSBwOwogICAgICAgICAgICAgICAg cCA9IHAtPnByZXY7CiAgICAgICAgICAgICAgICB1cmIgPSAoKHVyYl90ICopKChjaGFyICopKHAy KS0odW5zaWduZWQgbG9uZykoJigodXJiX3QgKikwKS0+dXJiX2xpc3QpKSk7CiAgICAgICAgICAg ICAgICB0eXBlID0gKCgodXJiLT5waXBlKSA+PiAzMCkgJiAzKTsKCiAgICAgICAgICAgICAgICBo Y3ByaXYgPSAodXJiX3ByaXZfdCopdXJiLT5oY3ByaXY7CgogICAgICAgICAgICAgICAgaWYgKCB1 cmItPnRpbWVvdXQgJiYKICAgICAgICAgICAgICAgICAgICAgICAgKChoY3ByaXYtPnN0YXJ0ZWQg KyB1cmItPnRpbWVvdXQpIDwgamlmZmllc19SMGRhMDJkNjcpKSB7CiAgICAgICAgICAgICAgICAg ICAgICAgIHVyYi0+dHJhbnNmZXJfZmxhZ3MgfD0gMHgxMDAwIHwgMHgwMDA4OwogICAgICAgICAg ICAgICAgICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHVo Y2lfdW5saW5rX3VyYl9hc3luYyhzLCB1cmIsIDApOwogICAgICAgICAgICAgICAgfQoKICAgICAg ICAgICAgICAgIGVsc2UgaWYgKCgodHlwZSA9PSAzKSB8fCAodHlwZSA9PSAyKSkgJiYKICAgICAg ICAgICAgICAgICAgICAgKGhjcHJpdi0+dXNlX2xvb3ApICYmCiAgICAgICAgICAgICAgICAgICAg ICgoaGNwcml2LT5zdGFydGVkICsgKDEwMC8yMCkpIDwgamlmZmllc19SMGRhMDJkNjcpKQogICAg ICAgICAgICAgICAgICAgICAgICBkaXNhYmxlX2Rlc2NfbG9vcChzLCB1cmIpOwoKCiAgICAgICAg fQogICAgICAgIHMtPnRpbWVvdXRfY2hlY2s9amlmZmllc19SMGRhMDJkNjc7Cn0KCgoKCgogICAg ICAgIF9fdTggcm9vdF9odWJfZGV2X2Rlc1tdID0KewogICAgICAgIDB4MTIsCiAgICAgICAgMHgw MSwKICAgICAgICAweDAwLAogICAgICAgIDB4MDEsCiAgICAgICAgMHgwOSwKICAgICAgICAweDAw LAogICAgICAgIDB4MDAsCiAgICAgICAgMHgwOCwKICAgICAgICAweDAwLAogICAgICAgIDB4MDAs CiAgICAgICAgMHgwMCwKICAgICAgICAweDAwLAogICAgICAgIDB4MDAsCiAgICAgICAgMHgwMCwK ICAgICAgICAweDAwLAogICAgICAgIDB4MDIsCiAgICAgICAgMHgwMSwKICAgICAgICAweDAxCn07 CgoKCiAgICAgICAgX191OCByb290X2h1Yl9jb25maWdfZGVzW10gPQp7CiAgICAgICAgMHgwOSwK ICAgICAgICAweDAyLAogICAgICAgIDB4MTksCiAgICAgICAgMHgwMCwKICAgICAgICAweDAxLAog ICAgICAgIDB4MDEsCiAgICAgICAgMHgwMCwKICAgICAgICAweDQwLAoKICAgICAgICAweDAwLAoK CiAgICAgICAgMHgwOSwKICAgICAgICAweDA0LAogICAgICAgIDB4MDAsCiAgICAgICAgMHgwMCwK ICAgICAgICAweDAxLAogICAgICAgIDB4MDksCiAgICAgICAgMHgwMCwKICAgICAgICAweDAwLAog ICAgICAgIDB4MDAsCgoKICAgICAgICAweDA3LAogICAgICAgIDB4MDUsCiAgICAgICAgMHg4MSwK ICAgICAgICAweDAzLAogICAgICAgIDB4MDgsCiAgICAgICAgMHgwMCwKICAgICAgICAweGZmCn07 CgoKICAgICAgICBfX3U4IHJvb3RfaHViX2h1Yl9kZXNbXSA9CnsKICAgICAgICAweDA5LAogICAg ICAgIDB4MjksCiAgICAgICAgMHgwMiwKICAgICAgICAweDAwLAogICAgICAgIDB4MDAsCiAgICAg ICAgMHgwMSwKICAgICAgICAweDAwLAogICAgICAgIDB4MDAsCiAgICAgICAgMHhmZgp9OwoKCgog ICAgICAgIGludCByaF9zZW5kX2lycSAodXJiX3QgKnVyYikKewogICAgICAgIGludCBsZW4gPSAx OwogICAgICAgIGludCBpOwogICAgICAgIHVoY2lfdCAqdWhjaSA9IHVyYi0+ZGV2LT5idXMtPmhj cHJpdjsKICAgICAgICB1bnNpZ25lZCBpbnQgaW9fYWRkciA9IHVoY2ktPmlvX2FkZHI7CiAgICAg ICAgX191MTYgZGF0YSA9IDA7CgogICAgICAgIGZvciAoaSA9IDA7IGkgPCB1aGNpLT5yaC5udW1w b3J0czsgaSsrKSB7CiAgICAgICAgICAgICAgICBkYXRhIHw9ICgoaW53IChpb19hZGRyICsgMTYg KyBpICogMikgJiAweGEpID4gMCA/ICgxIDw8IChpICsgMSkpIDogMCk7CiAgICAgICAgICAgICAg ICBsZW4gPSAoaSArIDEpIC8gOCArIDE7CiAgICAgICAgfQoKICAgICAgICAqKF9fdTE2ICopIHVy Yi0+dHJhbnNmZXJfYnVmZmVyID0gKChfX3UxNikoZGF0YSkpOwogICAgICAgIHVyYi0+YWN0dWFs X2xlbmd0aCA9IGxlbjsKICAgICAgICB1cmItPnN0YXR1cyA9IDA7CgogICAgICAgIGlmICgoZGF0 YSA+IDApICYmICh1aGNpLT5yaC5zZW5kICE9IDApKSB7CiAgICAgICAgICAgICAgICBkbyB7fSB3 aGlsZSAoMCk7CgogICAgICAgICAgICAgICAgdXJiLT5jb21wbGV0ZV9SOTQyNjEzYWQgKHVyYik7 CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwp9CgoKCiAgICAgICAgaW50IHJoX2luaXRfaW50 X3RpbWVyICh1cmJfdCAqdXJiKTsKCiAgICAgICAgdm9pZCByaF9pbnRfdGltZXJfZG8gKHVuc2ln bmVkIGxvbmcgcHRyKQp7CiAgICAgICAgaW50IGxlbjsKICAgICAgICB1cmJfdCAqdXJiID0gKHVy Yl90KikgcHRyOwogICAgICAgIHVoY2lfdCAqdWhjaSA9IHVyYi0+ZGV2LT5idXMtPmhjcHJpdjsK CiAgICAgICAgaWYgKHVoY2ktPnJoLnNlbmQpIHsKICAgICAgICAgICAgICAgIGxlbiA9IHJoX3Nl bmRfaXJxICh1cmIpOwogICAgICAgICAgICAgICAgaWYgKGxlbiA+IDApIHsKICAgICAgICAgICAg ICAgICAgICAgICAgdXJiLT5hY3R1YWxfbGVuZ3RoID0gbGVuOwogICAgICAgICAgICAgICAgICAg ICAgICBpZiAodXJiLT5jb21wbGV0ZV9SOTQyNjEzYWQpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdXJiLT5jb21wbGV0ZV9SOTQyNjEzYWQgKHVyYik7CiAgICAgICAgICAgICAgICB9 CiAgICAgICAgfQogICAgICAgIHJoX2luaXRfaW50X3RpbWVyICh1cmIpOwp9CgoKCgogICAgICAg IGludCByaF9pbml0X2ludF90aW1lciAodXJiX3QgKnVyYikKewogICAgICAgIHVoY2lfdCAqdWhj aSA9IHVyYi0+ZGV2LT5idXMtPmhjcHJpdjsKCiAgICAgICAgdWhjaS0+cmguaW50ZXJ2YWwgPSB1 cmItPmludGVydmFsOwogICAgICAgIGluaXRfdGltZXIgKCZ1aGNpLT5yaC5yaF9pbnRfdGltZXIp OwogICAgICAgIHVoY2ktPnJoLnJoX2ludF90aW1lci5mdW5jdGlvbiA9IHJoX2ludF90aW1lcl9k bzsKICAgICAgICB1aGNpLT5yaC5yaF9pbnRfdGltZXIuZGF0YSA9ICh1bnNpZ25lZCBsb25nKSB1 cmI7CiAgICAgICAgdWhjaS0+cmgucmhfaW50X3RpbWVyLmV4cGlyZXMgPSBqaWZmaWVzX1IwZGEw MmQ2NyArICgxMDAgKiAyMCkgLyAxMDAwOwogICAgICAgIGFkZF90aW1lcl9SYTE5ZWFjZjggKCZ1 aGNpLT5yaC5yaF9pbnRfdGltZXIpOwoKICAgICAgICByZXR1cm4gMDsKfQojIDE5NjQgInVzYi11 aGNpLmMiCiAgICAgICAgaW50IHJoX3N1Ym1pdF91cmIgKHVyYl90ICp1cmIpCnsKICAgICAgICBz dHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldiA9IHVyYi0+ZGV2OwogICAgICAgIHVoY2lfdCAqdWhj aSA9IHVzYl9kZXYtPmJ1cy0+aGNwcml2OwogICAgICAgIHVuc2lnbmVkIGludCBwaXBlID0gdXJi LT5waXBlOwogICAgICAgIGRldnJlcXVlc3QgKmNtZCA9IChkZXZyZXF1ZXN0ICopIHVyYi0+c2V0 dXBfcGFja2V0OwogICAgICAgIHZvaWQgKmRhdGEgPSB1cmItPnRyYW5zZmVyX2J1ZmZlcjsKICAg ICAgICBpbnQgbGVuaSA9IHVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aDsKICAgICAgICBpbnQg bGVuID0gMDsKICAgICAgICBpbnQgc3RhdHVzID0gMDsKICAgICAgICBpbnQgc3RhdCA9IDA7CiAg ICAgICAgaW50IGk7CiAgICAgICAgdW5zaWduZWQgaW50IGlvX2FkZHIgPSB1aGNpLT5pb19hZGRy OwogICAgICAgIF9fdTE2IGNzdGF0dXM7CgogICAgICAgIF9fdTE2IGJtUlR5cGVfYlJlcTsKICAg ICAgICBfX3UxNiB3VmFsdWU7CiAgICAgICAgX191MTYgd0luZGV4OwogICAgICAgIF9fdTE2IHdM ZW5ndGg7CgogICAgICAgIGlmICgoKChwaXBlKSA+PiAzMCkgJiAzKSA9PSAxKSB7CiAgICAgICAg ICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICB1aGNpLT5yaC51cmIgPSB1 cmI7CiAgICAgICAgICAgICAgICB1aGNpLT5yaC5zZW5kID0gMTsKICAgICAgICAgICAgICAgIHVo Y2ktPnJoLmludGVydmFsID0gdXJiLT5pbnRlcnZhbDsKICAgICAgICAgICAgICAgIHJoX2luaXRf aW50X3RpbWVyICh1cmIpOwoKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCgog ICAgICAgIGJtUlR5cGVfYlJlcSA9IGNtZC0+cmVxdWVzdHR5cGUgfCBjbWQtPnJlcXVlc3QgPDwg ODsKICAgICAgICB3VmFsdWUgPSAoKF9fdTE2KShjbWQtPnZhbHVlKSk7CiAgICAgICAgd0luZGV4 ID0gKChfX3UxNikoY21kLT5pbmRleCkpOwogICAgICAgIHdMZW5ndGggPSAoKF9fdTE2KShjbWQt Pmxlbmd0aCkpOwoKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQogICAgICAgICAgICAg ICAgdWhjaS0+cmguY19wX3JbaV0gPSAwOwoKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgoKICAg ICAgICBzd2l0Y2ggKGJtUlR5cGVfYlJlcSkgewojIDIwMTUgInVzYi11aGNpLmMiCiAgICAgICAg Y2FzZSAweDAwODA6CiAgICAgICAgICAgICAgICAqKF9fdTE2ICopIGRhdGEgPSAoKF9fdTE2KSgx KSk7CiAgICAgICAgICAgICAgICBsZW4gPSAoMik7IGJyZWFrOwogICAgICAgIGNhc2UgMHgwMDgw IHwgMHgwMToKICAgICAgICAgICAgICAgICooX191MTYgKikgZGF0YSA9ICgoX191MTYpKDApKTsK ICAgICAgICAgICAgICAgIGxlbiA9ICgyKTsgYnJlYWs7CiAgICAgICAgY2FzZSAweDAwODAgfCAw eDAyOgogICAgICAgICAgICAgICAgKihfX3UxNiAqKSBkYXRhID0gKChfX3UxNikoMCkpOwogICAg ICAgICAgICAgICAgbGVuID0gKDIpOyBicmVhazsKICAgICAgICBjYXNlIDB4MDA4MCB8IDB4MjA6 CiAgICAgICAgICAgICAgICAqKF9fdTMyICopIGRhdGEgPSAoKF9fdTMyKSgwKSk7CiAgICAgICAg ICAgICAgICBsZW4gPSAoNCk7IGJyZWFrOwogICAgICAgIGNhc2UgMHgwMDgwIHwgMHgwMyB8IDB4 MjA6CiAgICAgICAgICAgICAgICBzdGF0dXMgPSBpbncgKGlvX2FkZHIgKyAxNiArIDIgKiAod0lu ZGV4IC0gMSkpOwogICAgICAgICAgICAgICAgY3N0YXR1cyA9ICgoc3RhdHVzICYgMHgwMDAyKSA+ PiAoMSAtIDApKSB8CiAgICAgICAgICAgICAgICAgICAgICAgICgoc3RhdHVzICYgMHgwMDA4KSA+ PiAoMyAtIDEpKSB8CiAgICAgICAgICAgICAgICAgICAgICAgICh1aGNpLT5yaC5jX3Bfclt3SW5k ZXggLSAxXSA8PCAoMCArIDQpKTsKICAgICAgICAgICAgICAgIHN0YXR1cyA9IChzdGF0dXMgJiAw eDAwMDEpIHwKICAgICAgICAgICAgICAgICAgICAgICAgKChzdGF0dXMgJiAweDAwMDQpID4+ICgy IC0gMSkpIHwKICAgICAgICAgICAgICAgICAgICAgICAgKChzdGF0dXMgJiAweDEwMDApID4+ICgx MiAtIDIpKSB8CiAgICAgICAgICAgICAgICAgICAgICAgICgoc3RhdHVzICYgMHgwMjAwKSA+PiAo OSAtIDQpKSB8CiAgICAgICAgICAgICAgICAgICAgICAgICgxIDw8IDgpIHwKICAgICAgICAgICAg ICAgICAgICAgICAgKChzdGF0dXMgJiAweDAxMDApIDw8ICgtOCArIDkpKTsKCiAgICAgICAgICAg ICAgICAqKF9fdTE2ICopIGRhdGEgPSAoKF9fdTE2KShzdGF0dXMpKTsKICAgICAgICAgICAgICAg ICooX191MTYgKikgKGRhdGEgKyAyKSA9ICgoX191MTYpKGNzdGF0dXMpKTsKICAgICAgICAgICAg ICAgIGxlbiA9ICg0KTsgYnJlYWs7CgogICAgICAgIGNhc2UgMHgwMTAwIHwgMHgwMjoKICAgICAg ICAgICAgICAgIHN3aXRjaCAod1ZhbHVlKSB7CiAgICAgICAgICAgICAgICBjYXNlICgweDAxKToK ICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gKDApOyBicmVhazsKICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDB4MDEwMCB8IDB4MjA6CiAg ICAgICAgICAgICAgICBzd2l0Y2ggKHdWYWx1ZSkgewogICAgICAgICAgICAgICAgY2FzZSAoMHgw MSk6CiAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9ICgwKTsgYnJlYWs7CiAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAweDAxMDAgfCAweDAz IHwgMHgyMDoKICAgICAgICAgICAgICAgIHN3aXRjaCAod1ZhbHVlKSB7CiAgICAgICAgICAgICAg ICBjYXNlICgweDAxKToKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gaW53KGlvX2Fk ZHIrMTYgKzIqKHdJbmRleC0xKSk7IHN0YXR1cyA9IChzdGF0dXMgJiAweGZmZjUpICYgfigweDAw MDQpOyBvdXR3KHN0YXR1cywgaW9fYWRkcisxNiArMiood0luZGV4LTEpKTsKICAgICAgICAgICAg ICAgICAgICAgICAgbGVuID0gKDApOyBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgKDB4MDIp OgogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBpbncoaW9fYWRkcisxNiArMiood0lu ZGV4LTEpKTsgc3RhdHVzID0gKHN0YXR1cyAmIDB4ZmZmNSkgJiB+KDB4MTAwMCk7IG91dHcoc3Rh dHVzLCBpb19hZGRyKzE2ICsyKih3SW5kZXgtMSkpOwogICAgICAgICAgICAgICAgICAgICAgICBs ZW4gPSAoMCk7IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAoMHgwOCk6CiAgICAgICAgICAg ICAgICAgICAgICAgIGxlbiA9ICgwKTsgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICgweDEw KToKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gaW53KGlvX2FkZHIrMTYgKzIqKHdJ bmRleC0xKSk7IHN0YXR1cyA9IChzdGF0dXMgJiAweGZmZjUpIHwgKDB4MDAwMik7IG91dHcoc3Rh dHVzLCBpb19hZGRyKzE2ICsyKih3SW5kZXgtMSkpOwogICAgICAgICAgICAgICAgICAgICAgICBs ZW4gPSAoMCk7IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAoMHgxMSk6CiAgICAgICAgICAg ICAgICAgICAgICAgIHN0YXR1cyA9IGludyhpb19hZGRyKzE2ICsyKih3SW5kZXgtMSkpOyBzdGF0 dXMgPSAoc3RhdHVzICYgMHhmZmY1KSB8ICgweDAwMDgpOyBvdXR3KHN0YXR1cywgaW9fYWRkcisx NiArMiood0luZGV4LTEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gKDApOyBicmVh azsKICAgICAgICAgICAgICAgIGNhc2UgKDB4MTIpOgoKICAgICAgICAgICAgICAgICAgICAgICAg bGVuID0gKDApOyBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgKDB4MTMpOgogICAgICAgICAg ICAgICAgICAgICAgICBsZW4gPSAoMCk7IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAoMHgx NCk6CiAgICAgICAgICAgICAgICAgICAgICAgIHVoY2ktPnJoLmNfcF9yW3dJbmRleCAtIDFdID0g MDsKICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gKDApOyBicmVhazsKICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDB4MDMwMCB8IDB4MDMg fCAweDIwOgogICAgICAgICAgICAgICAgc3dpdGNoICh3VmFsdWUpIHsKICAgICAgICAgICAgICAg IGNhc2UgKDB4MDIpOgogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBpbncoaW9fYWRk cisxNiArMiood0luZGV4LTEpKTsgc3RhdHVzID0gKHN0YXR1cyAmIDB4ZmZmNSkgfCAoMHgxMDAw KTsgb3V0dyhzdGF0dXMsIGlvX2FkZHIrMTYgKzIqKHdJbmRleC0xKSk7CiAgICAgICAgICAgICAg ICAgICAgICAgIGxlbiA9ICgwKTsgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICgweDA0KToK ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gaW53KGlvX2FkZHIrMTYgKzIqKHdJbmRl eC0xKSk7IHN0YXR1cyA9IChzdGF0dXMgJiAweGZmZjUpIHwgKDB4MDIwMCk7IG91dHcoc3RhdHVz LCBpb19hZGRyKzE2ICsyKih3SW5kZXgtMSkpOwogICAgICAgICAgICAgICAgICAgICAgICB1aGNp X3dhaXRfbXMgKDEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgdWhjaS0+cmguY19wX3Jbd0lu ZGV4IC0gMV0gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBpbncoaW9fYWRk cisxNiArMiood0luZGV4LTEpKTsgc3RhdHVzID0gKHN0YXR1cyAmIDB4ZmZmNSkgJiB+KDB4MDIw MCk7IG91dHcoc3RhdHVzLCBpb19hZGRyKzE2ICsyKih3SW5kZXgtMSkpOwogICAgICAgICAgICAg ICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMTApID8gKCgxMCkgPiAyMDAwMCA/IF9f YmFkX3VkZWxheSgpIDogX19jb25zdF91ZGVsYXlfUmVhZTNkZmQ2KCgxMCkgKiAweDEwYzZ1bCkp IDogX191ZGVsYXlfUjllN2Q2YmQwKDEwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1 cyA9IGludyhpb19hZGRyKzE2ICsyKih3SW5kZXgtMSkpOyBzdGF0dXMgPSAoc3RhdHVzICYgMHhm ZmY1KSB8ICgweDAwMDQpOyBvdXR3KHN0YXR1cywgaW9fYWRkcisxNiArMiood0luZGV4LTEpKTsK ICAgICAgICAgICAgICAgICAgICAgICAgdWhjaV93YWl0X21zICgxMCk7CiAgICAgICAgICAgICAg ICAgICAgICAgIHN0YXR1cyA9IGludyhpb19hZGRyKzE2ICsyKih3SW5kZXgtMSkpOyBzdGF0dXMg PSAoc3RhdHVzICYgMHhmZmY1KSB8ICgweGEpOyBvdXR3KHN0YXR1cywgaW9fYWRkcisxNiArMioo d0luZGV4LTEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gKDApOyBicmVhazsKICAg ICAgICAgICAgICAgIGNhc2UgKDB4MDgpOgogICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSAo MCk7IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAoMHgwMSk6CiAgICAgICAgICAgICAgICAg ICAgICAgIHN0YXR1cyA9IGludyhpb19hZGRyKzE2ICsyKih3SW5kZXgtMSkpOyBzdGF0dXMgPSAo c3RhdHVzICYgMHhmZmY1KSB8ICgweDAwMDQpOyBvdXR3KHN0YXR1cywgaW9fYWRkcisxNiArMioo d0luZGV4LTEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gKDApOyBicmVhazsKICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDB4MDUw MDoKICAgICAgICAgICAgICAgIHVoY2ktPnJoLmRldm51bSA9IHdWYWx1ZTsKICAgICAgICAgICAg ICAgIGxlbiA9ICgwKTsgYnJlYWs7CgogICAgICAgIGNhc2UgMHgwNjgwOgogICAgICAgICAgICAg ICAgc3dpdGNoICgod1ZhbHVlICYgMHhmZjAwKSA+PiA4KSB7CiAgICAgICAgICAgICAgICBjYXNl ICgweDAxKToKICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gKHsgdW5zaWduZWQgaW50IF9f eCA9IChsZW5pKTsgdW5zaWduZWQgaW50IF9feSA9ICgoeyB1bnNpZ25lZCBpbnQgX194ID0gKHNp emVvZiAocm9vdF9odWJfZGV2X2RlcykpOyB1bnNpZ25lZCBpbnQgX195ID0gKHdMZW5ndGgpOyBf X3ggPCBfX3kgPyBfX3g6IF9feTsgfSkpOyBfX3ggPCBfX3kgPyBfX3g6IF9feTsgfSk7CgoKICAg ICAgICAgICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKGxlbikgPyBfX2NvbnN0 YW50X21lbWNweSgoZGF0YSksKHJvb3RfaHViX2Rldl9kZXMpLChsZW4pKSA6IF9fbWVtY3B5KChk YXRhKSwocm9vdF9odWJfZGV2X2RlcyksKGxlbikpKTsKICAgICAgICAgICAgICAgICAgICAgICAg bGVuID0gKGxlbik7IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAoMHgwMik6CiAgICAgICAg ICAgICAgICAgICAgICAgIGxlbiA9ICh7IHVuc2lnbmVkIGludCBfX3ggPSAobGVuaSk7IHVuc2ln bmVkIGludCBfX3kgPSAoKHsgdW5zaWduZWQgaW50IF9feCA9IChzaXplb2YgKHJvb3RfaHViX2Nv bmZpZ19kZXMpKTsgdW5zaWduZWQgaW50IF9feSA9ICh3TGVuZ3RoKTsgX194IDwgX195ID8gX194 OiBfX3k7IH0pKTsgX194IDwgX195ID8gX194OiBfX3k7IH0pOwoKCiAgICAgICAgICAgICAgICAg ICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcChsZW4pID8gX19jb25zdGFudF9tZW1jcHkoKGRh dGEpLChyb290X2h1Yl9jb25maWdfZGVzKSwobGVuKSkgOiBfX21lbWNweSgoZGF0YSksKHJvb3Rf aHViX2NvbmZpZ19kZXMpLChsZW4pKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IChs ZW4pOyBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgKDB4MDMpOgogICAgICAgICAgICAgICAg ICAgICAgICBsZW4gPSB1c2Jfcm9vdF9odWJfc3RyaW5nX1JhNjg3MThmMCAod1ZhbHVlICYgMHhm ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aGNpLT5pb19hZGRyLCAiVUhDSSIs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSwgd0xlbmd0aCk7CiAgICAgICAg ICAgICAgICAgICAgICAgIGlmIChsZW4gPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGVuID0gKCh7IGludCBfX3ggPSAobGVuaSk7IGludCBfX3kgPSAobGVuKTsgX194IDwg X195ID8gX194OiBfX3k7IH0pKTsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXQgPSAtMzI7CiAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAweDA2ODAgfCAweDIw OgogICAgICAgICAgICAgICAgcm9vdF9odWJfaHViX2Rlc1syXSA9IHVoY2ktPnJoLm51bXBvcnRz OwogICAgICAgICAgICAgICAgbGVuID0gKHsgdW5zaWduZWQgaW50IF9feCA9IChsZW5pKTsgdW5z aWduZWQgaW50IF9feSA9ICgoeyB1bnNpZ25lZCBpbnQgX194ID0gKHNpemVvZiAocm9vdF9odWJf aHViX2RlcykpOyB1bnNpZ25lZCBpbnQgX195ID0gKHdMZW5ndGgpOyBfX3ggPCBfX3kgPyBfX3g6 IF9feTsgfSkpOyBfX3ggPCBfX3kgPyBfX3g6IF9feTsgfSk7CgogICAgICAgICAgICAgICAgKF9f YnVpbHRpbl9jb25zdGFudF9wKGxlbikgPyBfX2NvbnN0YW50X21lbWNweSgoZGF0YSksKHJvb3Rf aHViX2h1Yl9kZXMpLChsZW4pKSA6IF9fbWVtY3B5KChkYXRhKSwocm9vdF9odWJfaHViX2Rlcyks KGxlbikpKTsKICAgICAgICAgICAgICAgIGxlbiA9IChsZW4pOyBicmVhazsKCiAgICAgICAgY2Fz ZSAweDA4ODA6CiAgICAgICAgICAgICAgICAqKF9fdTggKikgZGF0YSA9IDB4MDE7CiAgICAgICAg ICAgICAgICBsZW4gPSAoMSk7IGJyZWFrOwoKICAgICAgICBjYXNlIDB4MDkwMDoKICAgICAgICAg ICAgICAgIGxlbiA9ICgwKTsgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAg IHN0YXQgPSAtMzI7CiAgICAgICAgfQoKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgoKICAgICAg ICB1cmItPmFjdHVhbF9sZW5ndGggPSBsZW47CiAgICAgICAgdXJiLT5zdGF0dXMgPSBzdGF0Owog ICAgICAgIHVyYi0+ZGV2PSgodm9pZCAqKTApOwogICAgICAgIGlmICh1cmItPmNvbXBsZXRlX1I5 NDI2MTNhZCkKICAgICAgICAgICAgICAgIHVyYi0+Y29tcGxldGVfUjk0MjYxM2FkICh1cmIpOwog ICAgICAgIHJldHVybiAwOwp9CgoKICAgICAgICBpbnQgcmhfdW5saW5rX3VyYiAodXJiX3QgKnVy YikKewogICAgICAgIHVoY2lfdCAqdWhjaSA9IHVyYi0+ZGV2LT5idXMtPmhjcHJpdjsKCiAgICAg ICAgaWYgKHVoY2ktPnJoLnVyYj09dXJiKSB7CiAgICAgICAgICAgICAgICBkbyB7fSB3aGlsZSAo MCk7CiAgICAgICAgICAgICAgICB1aGNpLT5yaC5zZW5kID0gMDsKICAgICAgICAgICAgICAgIGRl bF90aW1lcl9SZmM2MmYxNmQgKCZ1aGNpLT5yaC5yaF9pbnRfdGltZXIpOwogICAgICAgIH0KICAg ICAgICByZXR1cm4gMDsKfQojIDIxODQgInVzYi11aGNpLmMiCiAgICAgICAgaW50IHVoY2lfbWFw X3N0YXR1cyAoaW50IHN0YXR1cywgaW50IGRpcl9vdXQpCnsKICAgICAgICBpZiAoIXN0YXR1cykK ICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGlmIChzdGF0dXMgJiAoMSA8PCAxNykp CiAgICAgICAgICAgICAgICByZXR1cm4gLTcxOwogICAgICAgIGlmIChzdGF0dXMgJiAoMSA8PCAx OCkpIHsKICAgICAgICAgICAgICAgIGlmIChkaXJfb3V0KQogICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gLTExMDsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIC04NDsKICAgICAgICB9CiAgICAgICAgaWYgKHN0YXR1cyAmICgxIDw8IDE5KSkK ICAgICAgICAgICAgICAgIHJldHVybiAtMTEwOwogICAgICAgIGlmIChzdGF0dXMgJiAoMSA8PCAy MCkpCiAgICAgICAgICAgICAgICByZXR1cm4gLTMyOwogICAgICAgIGlmIChzdGF0dXMgJiAoMSA8 PCAyMSkpCiAgICAgICAgICAgICAgICByZXR1cm4gLTYzOwogICAgICAgIGlmIChzdGF0dXMgJiAo MSA8PCAyMikpCiAgICAgICAgICAgICAgICByZXR1cm4gLTMyOwogICAgICAgIGlmIChzdGF0dXMg JiAoMSA8PCAyMykpCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKCiAgICAgICAgcmV0dXJuIC03 MTsKfQoKCgoKICAgICAgICBpbnQgdWhjaV9hbGxvY19kZXYgKHN0cnVjdCB1c2JfZGV2aWNlICp1 c2JfZGV2KQp7CiAgICAgICAgcmV0dXJuIDA7Cn0KCiAgICAgICAgdm9pZCB1aGNpX3VubGlua191 cmJzKHVoY2lfdCAqcywgc3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYsIGludCByZW1vdmVfYWxs KQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFk ICpwOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnAyOwogICAgICAgIHVyYl90ICp1cmI7Cgog ICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGki OiI9ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsgKHZvaWQpKCZzLT51cmJfbGlzdF9sb2NrKTsgfSB3 aGlsZSAoMCk7CiAgICAgICAgcCA9IHMtPnVyYl9saXN0LnByZXY7CiAgICAgICAgd2hpbGUgKHAg IT0gJnMtPnVyYl9saXN0KSB7CiAgICAgICAgICAgICAgICBwMiA9IHA7CiAgICAgICAgICAgICAg ICBwID0gcC0+cHJldiA7CiAgICAgICAgICAgICAgICB1cmIgPSAoKHVyYl90ICopKChjaGFyICop KHAyKS0odW5zaWduZWQgbG9uZykoJigodXJiX3QgKikwKS0+dXJiX2xpc3QpKSk7CiAgICAgICAg ICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgoKCiAgICAgICAgICAgICAgICBpZiAocmVtb3ZlX2Fs bCB8fCAodXNiX2RldiA9PSB1cmItPmRldikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG8g eyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZs IjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAg ICAgICAgICAgICAgIHByaW50a19SMWI3ZDQwNzQoIjw0PiIgInVzYi11aGNpLmMiICI6ICIgImZv cmNlZCByZW1vdmluZyBvZiBxdWV1ZWQgVVJCICVwIGR1ZSB0byBkaXNjb25uZWN0IiAiXG4iICwg dXJiKTsKICAgICAgICAgICAgICAgICAgICAgICAgdWhjaV91bmxpbmtfdXJiKHVyYik7CiAgICAg ICAgICAgICAgICAgICAgICAgIHVyYi0+ZGV2ID0gKCh2b2lkICopMCk7CiAgICAgICAgICAgICAg ICAgICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBj bGkiOiI9ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsgKHZvaWQpKCZzLT51cmJfbGlzdF9sb2NrKTsg fSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBzLT51cmJfbGlzdC5wcmV2 OwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgw KTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6 Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKfQoKICAgICAgICBpbnQgdWhjaV9mcmVlX2Rl diAoc3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYpCnsKICAgICAgICB1aGNpX3QgKnM7CgoKICAg ICAgICBpZighdXNiX2RldiB8fCAhdXNiX2Rldi0+YnVzIHx8ICF1c2JfZGV2LT5idXMtPmhjcHJp dikKICAgICAgICAgICAgICAgIHJldHVybiAtMjI7CgogICAgICAgIHM9KHVoY2lfdCopIHVzYl9k ZXYtPmJ1cy0+aGNwcml2OwogICAgICAgIHVoY2lfdW5saW5rX3VyYnMocywgdXNiX2RldiwgMCk7 CgogICAgICAgIHJldHVybiAwOwp9CgoKCgoKCiAgICAgICAgaW50IHVoY2lfZ2V0X2N1cnJlbnRf ZnJhbWVfbnVtYmVyIChzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldikKewogICAgICAgIHJldHVy biAoaW53ICgoKHVoY2lfdCopIHVzYl9kZXYtPmJ1cy0+aGNwcml2KS0+aW9fYWRkciArIDYpKTsK fQoKc3RydWN0IHVzYl9vcGVyYXRpb25zIHVoY2lfZGV2aWNlX29wZXJhdGlvbnMgPQp7CiAgICAg ICAgdWhjaV9hbGxvY19kZXYsCiAgICAgICAgdWhjaV9mcmVlX2RldiwKICAgICAgICB1aGNpX2dl dF9jdXJyZW50X2ZyYW1lX251bWJlciwKICAgICAgICB1aGNpX3N1Ym1pdF91cmIsCiAgICAgICAg dWhjaV91bmxpbmtfdXJiCn07CgogICAgICAgIHZvaWQgY29ycmVjdF9kYXRhX3RvZ2dsZXModXJi X3QgKnVyYikKewogICAgICAgICgodXJiLT5kZXYpLT50b2dnbGVbKCgoKHVyYi0+cGlwZSkgPj4g NykgJiAxKSBeIDEpXSA9ICgodXJiLT5kZXYpLT50b2dnbGVbKCgoKHVyYi0+cGlwZSkgPj4gNykg JiAxKSBeIDEpXSAmIH4oMSA8PCAoKCh1cmItPnBpcGUpID4+IDE1KSAmIDB4ZikpKSB8ICgoISgo KHVyYi0+ZGV2KS0+dG9nZ2xlWygoKCh1cmItPnBpcGUpID4+IDcpICYgMSkgXiAxKV0gPj4gKCgo dXJiLT5waXBlKSA+PiAxNSkgJiAweGYpKSAmIDEpKSA8PCAoKCh1cmItPnBpcGUpID4+IDE1KSAm IDB4ZikpKTsKCgogICAgICAgIHdoaWxlKHVyYikgewogICAgICAgICAgICAgICAgdXJiX3ByaXZf dCAqcHJpdj11cmItPmhjcHJpdjsKICAgICAgICAgICAgICAgIHVoY2lfZGVzY190ICpxaCA9ICgo dWhjaV9kZXNjX3QgKikoKGNoYXIgKikocHJpdi0+ZGVzY19saXN0Lm5leHQpLSh1bnNpZ25lZCBs b25nKSgmKCh1aGNpX2Rlc2NfdCAqKTApLT5kZXNjX2xpc3QpKSk7CiAgICAgICAgICAgICAgICBz dHJ1Y3QgbGlzdF9oZWFkICpwID0gcWgtPnZlcnRpY2FsLm5leHQ7CiAgICAgICAgICAgICAgICB1 aGNpX2Rlc2NfdCAqdGQ7CiAgICAgICAgICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgogICAgICAg ICAgICAgICAgZm9yICg7IHAgIT0gJnFoLT52ZXJ0aWNhbDsgcCA9IHAtPm5leHQpIHsKICAgICAg ICAgICAgICAgICAgICAgICAgdGQgPSAoKHVoY2lfZGVzY190ICopKChjaGFyICopKHApLSh1bnNp Z25lZCBsb25nKSgmKCh1aGNpX2Rlc2NfdCAqKTApLT52ZXJ0aWNhbCkpKTsKICAgICAgICAgICAg ICAgICAgICAgICAgdGQtPmh3LnRkLmluZm9ePSgoX191MzIpKDE8PDE5KSk7CiAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICB1cmI9cHJpdi0+bmV4dF9xdWV1ZWRfdXJiOwogICAgICAg IH0KfQojIDIzMTAgInVzYi11aGNpLmMiCiAgICAgICAgaW50IHByb2Nlc3NfdHJhbnNmZXIgKHVo Y2lfdCAqcywgdXJiX3QgKnVyYiwgaW50IG1vZGUpCnsKICAgICAgICBpbnQgcmV0ID0gMDsKICAg ICAgICB1cmJfcHJpdl90ICp1cmJfcHJpdiA9IHVyYi0+aGNwcml2OwogICAgICAgIHN0cnVjdCBs aXN0X2hlYWQgKnFobCA9IHVyYl9wcml2LT5kZXNjX2xpc3QubmV4dDsKICAgICAgICB1aGNpX2Rl c2NfdCAqcWggPSAoKHVoY2lfZGVzY190ICopKChjaGFyICopKHFobCktKHVuc2lnbmVkIGxvbmcp KCYoKHVoY2lfZGVzY190ICopMCktPmRlc2NfbGlzdCkpKTsKICAgICAgICBzdHJ1Y3QgbGlzdF9o ZWFkICpwID0gcWgtPnZlcnRpY2FsLm5leHQ7CiAgICAgICAgdWhjaV9kZXNjX3QgKmRlc2M9ICgo dWhjaV9kZXNjX3QgKikoKGNoYXIgKikodXJiX3ByaXYtPmRlc2NfbGlzdC5wcmV2KS0odW5zaWdu ZWQgbG9uZykoJigodWhjaV9kZXNjX3QgKikwKS0+ZGVzY19saXN0KSkpOwogICAgICAgIHVoY2lf ZGVzY190ICpsYXN0X2Rlc2MgPSAoKHVoY2lfZGVzY190ICopKChjaGFyICopKGRlc2MtPnZlcnRp Y2FsLnByZXYpLSh1bnNpZ25lZCBsb25nKSgmKCh1aGNpX2Rlc2NfdCAqKTApLT52ZXJ0aWNhbCkp KTsKICAgICAgICBpbnQgZGF0YV90b2dnbGUgPSAoKCh1cmItPmRldiktPnRvZ2dsZVsoKCgodXJi LT5waXBlKSA+PiA3KSAmIDEpIF4gMSldID4+ICgoKHVyYi0+cGlwZSkgPj4gMTUpICYgMHhmKSkg JiAxKTsKICAgICAgICBpbnQgbWF4bGVuZ3RoOwogICAgICAgIGludCBhY3R1YWxfbGVuZ3RoOwog ICAgICAgIGludCBzdGF0dXMgPSAwOwojIDIzMzEgInVzYi11aGNpLmMiCiAgICAgICAgaWYgKHVy Yl9wcml2LT5mbGFncyAmJgogICAgICAgICAgICAoKHFoLT5ody5xaC5lbGVtZW50ID09ICgoX191 MzIpKDB4MDAwMSkpKSB8fCAhKGRlc2MtPmh3LnRkLnN0YXR1cyAmICgoX191MzIpKCgxIDw8IDIz KSkpKSkpCiAgICAgICAgICAgICAgICBnb3RvIHRyYW5zZmVyX2ZpbmlzaGVkOwoKICAgICAgICB1 cmItPmFjdHVhbF9sZW5ndGg9MDsKCiAgICAgICAgZm9yICg7IHAgIT0gJnFoLT52ZXJ0aWNhbDsg cCA9IHAtPm5leHQpIHsKICAgICAgICAgICAgICAgIGRlc2MgPSAoKHVoY2lfZGVzY190ICopKChj aGFyICopKHApLSh1bnNpZ25lZCBsb25nKSgmKCh1aGNpX2Rlc2NfdCAqKTApLT52ZXJ0aWNhbCkp KTsKCiAgICAgICAgICAgICAgICBpZiAoKGRlc2MtPmh3LnRkLnN0YXR1cyAmICgoX191MzIpKCgx IDw8IDIzKSkpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kZSA9PSAyKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVoY2lfY2xlYW5fdHJhbnNmZXIocywgdXJiLCBx aCwgMik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAgICAgICAg ICB9CgogICAgICAgICAgICAgICAgYWN0dWFsX2xlbmd0aCA9ICgoKChfX3UzMikoZGVzYy0+aHcu dGQuc3RhdHVzKSkgKyAxKSAmIDB4N2ZmKTsKICAgICAgICAgICAgICAgIG1heGxlbmd0aCA9ICgo KCgoX191MzIpKGRlc2MtPmh3LnRkLmluZm8pKSA+PiAyMSkgJiAweDdmZikgKyAxKSAmIDB4N2Zm OwogICAgICAgICAgICAgICAgc3RhdHVzID0gdWhjaV9tYXBfc3RhdHVzICgoKChfX3UzMikoZGVz Yy0+aHcudGQuc3RhdHVzKSkgJiAweEZFMDAwMCksICgoKCh1cmItPnBpcGUpID4+IDcpICYgMSkg XiAxKSk7CgogICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAtMzIpIHsKCiAgICAgICAgICAg ICAgICAgICAgICAgICgodXJiLT5kZXYpLT5oYWx0ZWRbKCgoKHVyYi0+cGlwZSkgPj4gNykgJiAx KSBeIDEpXSB8PSAoMSA8PCAoKCgodXJiLT5waXBlKSA+PiAxNSkgJiAweGYpKSkpOwogICAgICAg ICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgJiYgKHN0YXR1cyAhPSAtMzIp KSB7CgogIGlzX2Vycm9yOgogICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBzdGF0dXM7CiAg ICAgICAgICAgICAgICAgICAgICAgIHVyYi0+ZXJyb3JfY291bnQrKzsKICAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlm ICgoKChfX3UzMikoZGVzYy0+aHcudGQuaW5mbykpICYgMHhmZikgIT0gMHgyZCkKICAgICAgICAg ICAgICAgICAgICAgICAgdXJiLT5hY3R1YWxfbGVuZ3RoICs9IGFjdHVhbF9sZW5ndGg7CgoKICAg ICAgICAgICAgICAgIGlmICggKGFjdHVhbF9sZW5ndGggPCBtYXhsZW5ndGgpKSB7CiAgICAgICAg ICAgICAgICAgICAgICAgIGlmICh1cmItPnRyYW5zZmVyX2ZsYWdzICYgMHgwMDAxKSB7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gLTEyMTsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAg ICAgICAgICAgICBpZiAoKCgoKHVyYi0+cGlwZSkgPj4gMzApICYgMykgPT0gMikpIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCgoKF9fdTMyKShsYXN0X2Rlc2MtPmh3LnRk LmluZm8pKSkgJiAweGZmKSA9PSAweGUxKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHFoKS0+aHcucWguZWxlbWVudD0oKF9fdTMyKShsYXN0X2Rlc2MtPmRtYV9h ZGRyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7fSB3aGls ZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmJfcHJpdi0+ ZmxhZ3MgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg ICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3RvZ2dsZSA9ICgoKCgoX191MzIp KGRlc2MtPmh3LnRkLmluZm8pKSkgPj4gMTkpICYgMSk7CiAgICAgICAgICAgICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhdHVz KQogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGlzX2Vycm9yOwoKICAgICAgICAgICAgICAg IGRhdGFfdG9nZ2xlID0gKCgoKChfX3UzMikoZGVzYy0+aHcudGQuaW5mbykpKSA+PiAxOSkgJiAx KTsKICAgICAgICAgICAgICAgIGRvIHt9IHdoaWxlICgwKTsKCiAgICAgICAgfQoKICAgICAgICBp ZiAoKCgodXJiLT5waXBlKSA+PiAzMCkgJiAzKSA9PSAzICkgewoKICAgICAgICAgICAgICAgIHVy Yl9wcml2X3QgKnByaXY9KHVyYl9wcml2X3QqKXVyYi0+aGNwcml2OwogICAgICAgICAgICAgICAg dXJiX3QgKm5leHRfcXVldWVkX3VyYj1wcml2LT5uZXh0X3F1ZXVlZF91cmI7CgogICAgICAgICAg ICAgICAgaWYgKG5leHRfcXVldWVkX3VyYikgewogICAgICAgICAgICAgICAgICAgICAgICB1cmJf cHJpdl90ICpuZXh0X3ByaXY9KHVyYl9wcml2X3QqKW5leHRfcXVldWVkX3VyYi0+aGNwcml2Owog ICAgICAgICAgICAgICAgICAgICAgICB1aGNpX2Rlc2NfdCAqcWggPSAoKHVoY2lfZGVzY190ICop KChjaGFyICopKG5leHRfcHJpdi0+ZGVzY19saXN0Lm5leHQpLSh1bnNpZ25lZCBsb25nKSgmKCh1 aGNpX2Rlc2NfdCAqKTApLT5kZXNjX2xpc3QpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHVo Y2lfZGVzY190ICpmaXJzdF90ZD0oKHVoY2lfZGVzY190ICopKChjaGFyICopKHFoLT52ZXJ0aWNh bC5uZXh0KS0odW5zaWduZWQgbG9uZykoJigodWhjaV9kZXNjX3QgKikwKS0+dmVydGljYWwpKSk7 CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YV90b2dnbGUgPT0gKCgoKChfX3UzMiko Zmlyc3RfdGQtPmh3LnRkLmluZm8pKSkgPj4gMTkpICYgMSkpIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwcmludGtfUjFiN2Q0MDc0KCI8Mz4iICJ1c2ItdWhjaS5jIiAiOiAiICJw cm9jZXNzX3RyYW5zZmVyOiBmaXhlZCB0b2dnbGUiICJcbiIpOwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvcnJlY3RfZGF0YV90b2dnbGVzKG5leHRfcXVldWVkX3VyYik7CiAgICAg ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVs c2UKICAgICAgICAgICAgICAgICAgICAgICAgKCh1cmItPmRldiktPnRvZ2dsZVsoKCgodXJiLT5w aXBlKSA+PiA3KSAmIDEpIF4gMSldID0gKCh1cmItPmRldiktPnRvZ2dsZVsoKCgodXJiLT5waXBl KSA+PiA3KSAmIDEpIF4gMSldICYgfigxIDw8ICgoKHVyYi0+cGlwZSkgPj4gMTUpICYgMHhmKSkp IHwgKCghZGF0YV90b2dnbGUpIDw8ICgoKHVyYi0+cGlwZSkgPj4gMTUpICYgMHhmKSkpOwogICAg ICAgIH0KCiB0cmFuc2Zlcl9maW5pc2hlZDoKCiAgICAgICAgdWhjaV9jbGVhbl90cmFuc2Zlcihz LCB1cmIsIHFoLCBtb2RlKTsKCiAgICAgICAgdXJiLT5zdGF0dXMgPSBzdGF0dXM7CgoKICAgICAg ICBkaXNhYmxlX2Rlc2NfbG9vcChzLHVyYik7CgoKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7Cgog ICAgICAgIHJldHVybiByZXQ7Cn0KCiAgICAgICAgaW50IHByb2Nlc3NfaW50ZXJydXB0ICh1aGNp X3QgKnMsIHVyYl90ICp1cmIpCnsKICAgICAgICBpbnQgaSwgcmV0ID0gLTExNTsKICAgICAgICB1 cmJfcHJpdl90ICp1cmJfcHJpdiA9IHVyYi0+aGNwcml2OwogICAgICAgIHN0cnVjdCBsaXN0X2hl YWQgKnAgPSB1cmJfcHJpdi0+ZGVzY19saXN0Lm5leHQ7CiAgICAgICAgdWhjaV9kZXNjX3QgKmRl c2MgPSAoKHVoY2lfZGVzY190ICopKChjaGFyICopKHVyYl9wcml2LT5kZXNjX2xpc3QucHJldikt KHVuc2lnbmVkIGxvbmcpKCYoKHVoY2lfZGVzY190ICopMCktPmRlc2NfbGlzdCkpKTsKCiAgICAg ICAgaW50IGFjdHVhbF9sZW5ndGg7CiAgICAgICAgaW50IHN0YXR1cyA9IDA7CgoKCiAgICAgICAg Zm9yIChpID0gMDsgcCAhPSAmdXJiX3ByaXYtPmRlc2NfbGlzdDsgcCA9IHAtPm5leHQsIGkrKykK ICAgICAgICB7CiAgICAgICAgICAgICAgICBkZXNjID0gKCh1aGNpX2Rlc2NfdCAqKSgoY2hhciAq KShwKS0odW5zaWduZWQgbG9uZykoJigodWhjaV9kZXNjX3QgKikwKS0+ZGVzY19saXN0KSkpOwoK ICAgICAgICAgICAgICAgIGlmICgoZGVzYy0+aHcudGQuc3RhdHVzICYgKChfX3UzMikoKDEgPDwg MjMpKSkpKSB7CgoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg ICB9CgogICAgICAgICAgICAgICAgaWYgKCFkZXNjLT5ody50ZC5zdGF0dXMgJiAoKF9fdTMyKSgo MSA8PCAyNCkpKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg ICAgICB9CgoKICAgICAgICAgICAgICAgIGFjdHVhbF9sZW5ndGggPSAoKCgoX191MzIpKGRlc2Mt Pmh3LnRkLnN0YXR1cykpICsgMSkgJiAweDdmZik7CiAgICAgICAgICAgICAgICBzdGF0dXMgPSB1 aGNpX21hcF9zdGF0dXMgKCgoKF9fdTMyKShkZXNjLT5ody50ZC5zdGF0dXMpKSAmIDB4RkUwMDAw KSwgKCgoKHVyYi0+cGlwZSkgPj4gNykgJiAxKSBeIDEpKTsKCgogICAgICAgICAgICAgICAgaWYg KHN0YXR1cyA9PSAtMzIpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICgodXJiLT5kZXYpLT5o YWx0ZWRbKCgoKHVyYi0+cGlwZSkgPj4gNykgJiAxKSBeIDEpXSB8PSAoMSA8PCAoKCgodXJiLT5w aXBlKSA+PiAxNSkgJiAweGYpKSkpOwogICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAg ICBpZiAoc3RhdHVzICE9IDApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIHVyYi0+ZXJyb3Jf Y291bnQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZWN5Y2xlOwogICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICB1cmIt PmFjdHVhbF9sZW5ndGggPSBhY3R1YWxfbGVuZ3RoOwoKICAgICAgICByZWN5Y2xlOgogICAgICAg ICAgICAgICAgdWhjaV91cmJfZG1hX3N5bmMocywgdXJiLCB1cmItPmhjcHJpdik7CiAgICAgICAg ICAgICAgICBpZiAodXJiLT5jb21wbGV0ZV9SOTQyNjEzYWQpIHsKCiAgICAgICAgICAgICAgICAg ICAgICAgIHVyYi0+c3RhdHVzID0gc3RhdHVzOwogICAgICAgICAgICAgICAgICAgICAgICAoKHVy Yl9wcml2X3QqKXVyYi0+aGNwcml2KS0+ZmxhZ3M9MTsKCiAgICAgICAgICAgICAgICAgICAgICAg IGRvIHsgfSB3aGlsZSgwKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHVyYi0+Y29tcGxldGVf Ujk0MjYxM2FkICgoc3RydWN0IHVyYiAqKSB1cmIpOwoKICAgICAgICAgICAgICAgICAgICAgICAg KHZvaWQpKCZzLT51cmJfbGlzdF9sb2NrKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICgodXJi X3ByaXZfdCopdXJiLT5oY3ByaXYpLT5mbGFncz0wOwogICAgICAgICAgICAgICAgfQoKICAgICAg ICAgICAgICAgIGlmICgodXJiLT5zdGF0dXMgIT0gLTEwMykgJiYgKHVyYi0+c3RhdHVzICE9IDEw NCkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1cmItPnN0YXR1cyAhPSAtMikpIHsK CiAgICAgICAgICAgICAgICAgICAgICAgIHVyYi0+c3RhdHVzID0gLTExNTsKCgogICAgICAgICAg ICAgICAgICAgICAgICBpZiAodXJiLT5pbnRlcnZhbCkgewoKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkZXNjLT5ody50ZC5pbmZvICY9ICgoX191MzIpKH4oMSA8PCAxOSkpKTsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzPT0wKSB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVyYl9wcml2X3QqKXVyYi0+aGNwcml2KS0+ c3RhcnRlZD1qaWZmaWVzX1IwZGEwMmQ2NzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRlc2MtPmh3LnRkLmluZm8gfD0gKChfX3UzMikoKCgoKHVyYi0+ZGV2KS0+dG9n Z2xlWygoKCh1cmItPnBpcGUpID4+IDcpICYgMSkgXiAxKV0gPj4gKCgodXJiLT5waXBlKSA+PiAx NSkgJiAweGYpKSAmIDEpIDw8IDE5KSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICgodXJiLT5kZXYpLT50b2dnbGVbKCgoKHVyYi0+cGlwZSkgPj4gNykgJiAxKSBe IDEpXSBePSAoMSA8PCAoKCh1cmItPnBpcGUpID4+IDE1KSAmIDB4ZikpKTsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGVzYy0+aHcudGQuaW5mbyB8PSAoKF9fdTMyKSgoISgoKHVyYi0+ZGV2KS0+ dG9nZ2xlWygoKCh1cmItPnBpcGUpID4+IDcpICYgMSkgXiAxKV0gPj4gKCgodXJiLT5waXBlKSA+ PiAxNSkgJiAweGYpKSAmIDEpIDw8IDE5KSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYy0+aHcudGQuc3RhdHVz PSAoKF9fdTMyKSgodXJiLT5waXBlICYgKDEgPDwgMjYpKSB8ICgxIDw8IDIzKSB8ICgxIDw8IDI0 KSB8ICh1cmItPnRyYW5zZmVyX2ZsYWdzICYgMHgwMDAxID8gMCA6ICgxIDw8IDI5KSkgfCAoMyA8 PCAyNykpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0 aWxlX18gKCJsb2NrOyBhZGRsICQwLDAoJSVlc3ApIjogOiA6Im1lbW9yeSIpOwogICAgICAgICAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVoY2lfdW5saW5rX3VyYl9hc3luYyhzLCB1cmIsIDApOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZXNjKS0+aHcudGQuc3RhdHVzICY9ICgo X191MzIpKH4oMSA8PCAyNCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHJldDsKfQoKCgoKICAgICAgICBpbnQg cHJvY2Vzc19pc28gKHVoY2lfdCAqcywgdXJiX3QgKnVyYiwgaW50IG1vZGUpCnsKICAgICAgICBp bnQgaTsKICAgICAgICBpbnQgcmV0ID0gMDsKICAgICAgICB1cmJfcHJpdl90ICp1cmJfcHJpdiA9 IHVyYi0+aGNwcml2OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnAgPSB1cmJfcHJpdi0+ZGVz Y19saXN0Lm5leHQ7CiAgICAgICAgdWhjaV9kZXNjX3QgKmRlc2MgPSAoKHVoY2lfZGVzY190ICop KChjaGFyICopKHVyYl9wcml2LT5kZXNjX2xpc3QucHJldiktKHVuc2lnbmVkIGxvbmcpKCYoKHVo Y2lfZGVzY190ICopMCktPmRlc2NfbGlzdCkpKTsKCiAgICAgICAgZG8ge30gd2hpbGUgKDApOwog ICAgICAgIGlmICgoZGVzYy0+aHcudGQuc3RhdHVzICYgKChfX3UzMikoKDEgPDwgMjMpKSkpICYm IG1vZGU9PTApCiAgICAgICAgICAgICAgICByZXR1cm4gLTE4OwoKICAgICAgICB1cmItPmVycm9y X2NvdW50ID0gMDsKICAgICAgICB1cmItPmFjdHVhbF9sZW5ndGggPSAwOwogICAgICAgIHVyYi0+ c3RhdHVzID0gMDsKICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CgoKICAgICAgICBmb3IgKGkgPSAw OyBwICE9ICZ1cmJfcHJpdi0+ZGVzY19saXN0OyBpKyspIHsKICAgICAgICAgICAgICAgIGRlc2Mg PSAoKHVoY2lfZGVzY190ICopKChjaGFyICopKHApLSh1bnNpZ25lZCBsb25nKSgmKCh1aGNpX2Rl c2NfdCAqKTApLT5kZXNjX2xpc3QpKSk7CgoKICAgICAgICAgICAgICAgIGlmICgoZGVzYy0+aHcu dGQuc3RhdHVzICYgKChfX3UzMikoKDEgPDwgMjMpKSkpKSB7CgogICAgICAgICAgICAgICAgICAg ICAgICBkZXNjLT5ody50ZC5zdGF0dXMgJj0gKChfX3UzMikofigxIDw8IDIzKSkpOwogICAgICAg ICAgICAgICAgICAgICAgICBkbyB7fSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAg IHJldCA9IC0xODsKICAgICAgICAgICAgICAgICAgICAgICAgdXJiLT5pc29fZnJhbWVfZGVzY1tp XS5zdGF0dXMgPSByZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHVubGlua190ZCAocywgZGVz YywgMSk7CgogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgICAgICAg IH0KCiAgICAgICAgICAgICAgICBpZiAobW9kZSA9PSAwKQogICAgICAgICAgICAgICAgICAgICAg ICB1bmxpbmtfdGQgKHMsIGRlc2MsIDEpOwoKICAgICAgICAgICAgICAgIGlmICh1cmItPm51bWJl cl9vZl9wYWNrZXRzIDw9IGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG8ge30gd2hpbGUg KDApOwogICAgICAgICAgICAgICAgICAgICAgICByZXQgPSAtMjI7CiAgICAgICAgICAgICAgICAg ICAgICAgIGdvdG8gZXJyOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHVyYi0+ aXNvX2ZyYW1lX2Rlc2NbaV0uYWN0dWFsX2xlbmd0aCA9ICgoKChfX3UzMikoZGVzYy0+aHcudGQu c3RhdHVzKSkgKyAxKSAmIDB4N2ZmKTsKICAgICAgICAgICAgICAgIHVyYi0+aXNvX2ZyYW1lX2Rl c2NbaV0uc3RhdHVzID0gdWhjaV9tYXBfc3RhdHVzICgoKChfX3UzMikoZGVzYy0+aHcudGQuc3Rh dHVzKSkgJiAweEZFMDAwMCksICgoKCh1cmItPnBpcGUpID4+IDcpICYgMSkgXiAxKSk7CiAgICAg ICAgICAgICAgICB1cmItPmFjdHVhbF9sZW5ndGggKz0gdXJiLT5pc29fZnJhbWVfZGVzY1tpXS5h Y3R1YWxfbGVuZ3RoOwoKICAgICAgICAgICAgICBlcnI6CgogICAgICAgICAgICAgICAgaWYgKHVy Yi0+aXNvX2ZyYW1lX2Rlc2NbaV0uc3RhdHVzICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAg ICAgdXJiLT5lcnJvcl9jb3VudCsrOwogICAgICAgICAgICAgICAgICAgICAgICB1cmItPnN0YXR1 cyA9IHVyYi0+aXNvX2ZyYW1lX2Rlc2NbaV0uc3RhdHVzOwogICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgZG8ge30gd2hpbGUgKDApOwoKCiAgICAgICAgICAgICAgICBsaXN0X2RlbCAo cCk7CiAgICAgICAgICAgICAgICBwID0gcC0+bmV4dDsKICAgICAgICAgICAgICAgIGRlbGV0ZV9k ZXNjIChzLCBkZXNjKTsKICAgICAgICB9CgogICAgICAgIGRvIHt9IHdoaWxlICgwKTsKICAgICAg ICByZXR1cm4gcmV0Owp9CgoKICAgICAgICBpbnQgcHJvY2Vzc191cmIgKHVoY2lfdCAqcywgc3Ry dWN0IGxpc3RfaGVhZCAqcCkKewogICAgICAgIGludCByZXQgPSAwOwogICAgICAgIHVyYl90ICp1 cmI7CgogICAgICAgIHVyYj0oKHVyYl90ICopKChjaGFyICopKHApLSh1bnNpZ25lZCBsb25nKSgm KCh1cmJfdCAqKTApLT51cmJfbGlzdCkpKTsKCgogICAgICAgIHN3aXRjaCAoKCgodXJiLT5waXBl KSA+PiAzMCkgJiAzKSkgewogICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIHJldCA9IHBy b2Nlc3NfdHJhbnNmZXIgKHMsIHVyYiwgMSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAg ICBjYXNlIDM6CiAgICAgICAgICAgICAgICBpZiAoIXMtPmF2b2lkX2J1bGsuY291bnRlcikKICAg ICAgICAgICAgICAgICAgICAgICAgcmV0ID0gcHJvY2Vzc190cmFuc2ZlciAocywgdXJiLCAxKTsK ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAg ICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICByZXQg PSBwcm9jZXNzX2lzbyAocywgdXJiLCAwKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg IGNhc2UgMToKICAgICAgICAgICAgICAgIHJldCA9IHByb2Nlc3NfaW50ZXJydXB0IChzLCB1cmIp OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBpZiAodXJiLT5zdGF0 dXMgIT0gLTExNSkgewogICAgICAgICAgICAgICAgdXJiX3ByaXZfdCAqdXJiX3ByaXY7CiAgICAg ICAgICAgICAgICBzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldjsKCiAgICAgICAgICAgICAgICB1 c2JfZGV2PXVyYi0+ZGV2OwoKCiAgICAgICAgICAgICAgICBpZiAodXJiLT5iYW5kd2lkdGgpIHsK ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoKHVyYi0+cGlwZSkgPj4gMzApICYgMyk9PTAp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNiX3JlbGVhc2VfYmFuZHdpZHRoX1Jm ODA1NGY3YiAodXJiLT5kZXYsIHVyYiwgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ug aWYgKCgoKHVyYi0+cGlwZSkgPj4gMzApICYgMyk9PTEgJiYgdXJiLT5pbnRlcnZhbCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1c2JfcmVsZWFzZV9iYW5kd2lkdGhfUmY4MDU0Zjdi ICh1cmItPmRldiwgdXJiLCAwKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBk byB7fSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBkZXF1ZXVlX3VyYiAocywgdXJiKTsKCiAg ICAgICAgICAgICAgICB1cmJfcHJpdiA9IHVyYi0+aGNwcml2OwoKICAgICAgICAgICAgICAgIHVo Y2lfdXJiX2RtYV91bm1hcChzLCB1cmIsIHVyYl9wcml2KTsKCgogICAgICAgICAgICAgICAga21l bV9jYWNoZV9mcmVlX1I4OTFmMjY4Nih1cmJfcHJpdl9rbWVtLCB1cmJfcHJpdik7CgoKCgogICAg ICAgICAgICAgICAgaWYgKCgoKCh1cmItPnBpcGUpID4+IDMwKSAmIDMpICE9IDEpKSB7CiAgICAg ICAgICAgICAgICAgICAgICAgIHVyYl90ICpuZXh0X3VyYiA9IHVyYi0+bmV4dDsKICAgICAgICAg ICAgICAgICAgICAgICAgaW50IGlzX3JpbmcgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBp bnQgY29udGFpbnNfa2lsbGVkID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxvb3Bf Y291bnQ9MDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0X3VyYikgewoKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAobmV4dF91cmIgIT0gKCh2b2lkICopMCkg JiYgbmV4dF91cmIgIT0gdXJiICYmIGxvb3BfY291bnQgPCAyMDQ4KSB7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dF91cmItPnN0YXR1cyA9PSAtMikgewog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluc19r aWxsZWQgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfdXJiID0gbmV4dF91cmItPm5l eHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wX2NvdW50Kys7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiAobG9vcF9jb3VudCA9PSAyMDQ4KQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcHJpbnRrX1IxYjdkNDA3NCgiPDM+IiAidXNiLXVoY2kuYyIgIjog IiAicHJvY2Vzc191cmI6IFRvbyBtdWNoIGxpbmtlZCBVUkJzIGluIHJpbmcgZGV0ZWN0aW9uISIg IlxuIik7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0X3VyYiA9PSB1 cmIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19yaW5nPTE7CiAg ICAgICAgICAgICAgICAgICAgICAgIH0KCgoKCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRf dXJiID0gdXJiLT5uZXh0OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dF91cmIgJiYg IWNvbnRhaW5zX2tpbGxlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBy ZXRfc3VibWl0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfdXJiID0gdXJi LT5uZXh0OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wX2NvdW50PTA7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG5leHRfdXJiICE9ICgodm9pZCAq KTApICYmIG5leHRfdXJiICE9IHVyYiAmJiBsb29wX2NvdW50IDwgMjA0OCkgewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRfdXJiLT5zdGF0dXMgIT0gLTEx NSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg KG5leHRfdXJiLT5zdGF0dXMgPT0gLTIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRfc3VibWl0PXVoY2lfc3VibWl0X3Vy YihuZXh0X3VyYik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh2b2lkKSgmcy0+dXJiX2xpc3RfbG9jayk7CgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0X3N1Ym1pdCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxvb3BfY291bnQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5leHRfdXJiID0gbmV4dF91cmItPm5leHQ7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb29wX2Nv dW50ID09IDIwNDgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlu dGtfUjFiN2Q0MDc0KCI8Mz4iICJ1c2ItdWhjaS5jIiAiOiAiICJwcm9jZXNzX3VyYjogVG9vIG11 Y2ggbGlua2VkIFVSQnMgaW4gcmVzdWJtaXNzaW9uISIgIlxuIik7CiAgICAgICAgICAgICAgICAg ICAgICAgIH0KCgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodXJiLT5jb21wbGV0ZV9SOTQy NjEzYWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2FzX3VubGlua2Vk ID0gKHVyYi0+c3RhdHVzID09IC0yKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 cmItPmRldiA9ICgodm9pZCAqKTApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv IHsgfSB3aGlsZSgwKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJiLT5jb21w bGV0ZV9SOTQyNjEzYWQgKChzdHJ1Y3QgdXJiICopIHVyYik7CgoKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiAoaXNfcmluZyAmJiAhd2FzX3VubGlua2VkICYmICFjb250YWluc19r aWxsZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyYi0+ZGV2 PXVzYl9kZXY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aGNpX3N1 Ym1pdF91cmIgKHVyYik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSgmcy0+dXJiX2xpc3RfbG9jayk7CiAgICAg ICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHVzYl9mcmVlX2Rl dl9SNDFiZDgwMTEgKHVzYl9kZXYpOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAg ICAgcmV0dXJuIHJldDsKfQoKICAgICAgICB2b2lkIHVoY2lfaW50ZXJydXB0IChpbnQgaXJxLCB2 b2lkICpfX3VoY2ksIHN0cnVjdCBwdF9yZWdzICpyZWdzKQp7CiAgICAgICAgdWhjaV90ICpzID0g X191aGNpOwogICAgICAgIHVuc2lnbmVkIGludCBpb19hZGRyID0gcy0+aW9fYWRkcjsKICAgICAg ICB1bnNpZ25lZCBzaG9ydCBzdGF0dXM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqcCwgKnAy OwogICAgICAgIGludCByZXN0YXJ0cywgd29ya19kb25lOwoKCgoKCgogICAgICAgIHN0YXR1cyA9 IGludyAoaW9fYWRkciArIDIpOwoKICAgICAgICBpZiAoIXN0YXR1cykKICAgICAgICAgICAgICAg IHJldHVybjsKCiAgICAgICAgZG8ge30gd2hpbGUgKDApOwoKICAgICAgICBpZiAoc3RhdHVzICE9 IDEpIHsKCiAgICAgICAgICAgICAgICBpZiAoKGppZmZpZXNfUjBkYTAyZDY3IC0gcy0+bGFzdF9l cnJvcl90aW1lID4gKDEwMCo1KSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrX1Ix YjdkNDA3NCgiPDQ+IiAidXNiLXVoY2kuYyIgIjogIiAiaW50ZXJydXB0LCBzdGF0dXMgJXgsIGZy YW1lIyAlaSIgIlxuIiAsIHN0YXR1cywgKGludyAoKHMpLT5pb19hZGRyICsgNikpKTsKCiAgICAg ICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfZXJyb3JfdGltZSA9IGppZmZpZXNfUjBkYTAyZDY3 OwogICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICBpZiAoKHN0YXR1cyYweDIwKSAm JiAocy0+cnVubmluZykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrX1IxYjdkNDA3 NCgiPDM+IiAidXNiLXVoY2kuYyIgIjogIiAiSG9zdCBjb250cm9sbGVyIGhhbHRlZCwgdHJ5aW5n IHRvIHJlc3RhcnQuIiAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgb3V0dyAoMHgwMDAx IHwgaW53KGlvX2FkZHIgKyAwKSwgaW9fYWRkciArIDApOwogICAgICAgICAgICAgICAgfQoKICAg ICAgICB9CiMgMjc2NCAidXNiLXVoY2kuYyIKICAgICAgICAodm9pZCkoJnMtPnVyYl9saXN0X2xv Y2spOwoKICAgICAgICByZXN0YXJ0cz0wOwogICAgICAgIHdvcmtfZG9uZT0wOwoKcmVzdGFydDoK ICAgICAgICBzLT51bmxpbmtfdXJiX2RvbmU9MDsKICAgICAgICBwID0gcy0+dXJiX2xpc3QucHJl djsKCiAgICAgICAgd2hpbGUgKHAgIT0gJnMtPnVyYl9saXN0ICYmICh3b3JrX2RvbmUgPCAxMDI0 KSkgewogICAgICAgICAgICAgICAgcDIgPSBwOwogICAgICAgICAgICAgICAgcCA9IHAtPnByZXY7 CgogICAgICAgICAgICAgICAgcHJvY2Vzc191cmIgKHMsIHAyKTsKCiAgICAgICAgICAgICAgICB3 b3JrX2RvbmUrKzsKCiAgICAgICAgICAgICAgICBpZiAocy0+dW5saW5rX3VyYl9kb25lKSB7CiAg ICAgICAgICAgICAgICAgICAgICAgIHMtPnVubGlua191cmJfZG9uZT0wOwogICAgICAgICAgICAg ICAgICAgICAgICByZXN0YXJ0cysrOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3Rh cnRzPDE2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzdGFydDsKICAg ICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoKGppZmZpZXNf UjBkYTAyZDY3IC0gcy0+dGltZW91dF9jaGVjaykgPiAoMTAwLzMwKSkKICAgICAgICAgICAgICAg IHVoY2lfY2hlY2tfdGltZW91dHMocyk7CgogICAgICAgIGNsZWFuX2Rlc2NzKHMsIDApOwogICAg ICAgIHVoY2lfY2xlYW51cF91bmxpbmsocywgMCk7CiAgICAgICAgdWhjaV9zd2l0Y2hfdGltZXJf aW50KHMpOwoKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CgogICAgICAgIG91dHcgKHN0YXR1cywg aW9fYWRkciArIDIpOwoKCn0KCiAgICAgICAgdm9pZCByZXNldF9oYyAodWhjaV90ICpzKQp7CiAg ICAgICAgdW5zaWduZWQgaW50IGlvX2FkZHIgPSBzLT5pb19hZGRyOwoKICAgICAgICBzLT5hcG1f c3RhdGUgPSAwOwoKICAgICAgICBvdXR3ICgweDAwMDQsIGlvX2FkZHIgKyAwKTsKICAgICAgICB1 aGNpX3dhaXRfbXMgKDUwKTsKICAgICAgICBvdXR3ICgwLCBpb19hZGRyICsgMCk7CiAgICAgICAg dWhjaV93YWl0X21zICgxMCk7Cn0KCiAgICAgICAgdm9pZCBzdGFydF9oYyAodWhjaV90ICpzKQp7 CiAgICAgICAgdW5zaWduZWQgaW50IGlvX2FkZHIgPSBzLT5pb19hZGRyOwogICAgICAgIGludCB0 aW1lb3V0ID0gMTAwMDsKCgoKCgoKCiAgICAgICAgb3V0dyAoMHgwMDAyLCBpb19hZGRyICsgMCk7 CgogICAgICAgIHdoaWxlIChpbncgKGlvX2FkZHIgKyAwKSAmIDB4MDAwMikgewogICAgICAgICAg ICAgICAgaWYgKCEtLXRpbWVvdXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrX1Ix YjdkNDA3NCgiPDM+IiAidXNiLXVoY2kuYyIgIjogIiAiVVNCQ01EX0hDUkVTRVQgdGltZWQgb3V0 ISIgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg fQogICAgICAgIH0KCgogICAgICAgIG91dHcgKDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4 MDAwOCwgaW9fYWRkciArIDQpOwoKCiAgICAgICAgb3V0dyAoMCwgaW9fYWRkciArIDYpOwogICAg ICAgIG91dGwgKHMtPmZyYW1lbGlzdF9kbWEsIGlvX2FkZHIgKyA4KTsKCgogICAgICAgIG91dHcg KDB4MDAwMSB8IDB4MDA0MCB8IDB4MDA4MCwgaW9fYWRkciArIDApOwogICAgICAgIHMtPmFwbV9z dGF0ZSA9IDE7CiAgICAgICAgcy0+cnVubmluZyA9IDE7Cn0KCiAgICAgICAgdm9pZAp1aGNpX3Bj aV9yZW1vdmUgKHN0cnVjdCBwY2lfZGV2ICpkZXYpCnsKICAgICAgICB1aGNpX3QgKnMgPSAodWhj aV90KikgZGV2LT5kcml2ZXJfZGF0YTsKICAgICAgICBzdHJ1Y3QgdXNiX2RldmljZSAqcm9vdF9o dWIgPSBzLT5idXMtPnJvb3RfaHViOwoKICAgICAgICBzLT5ydW5uaW5nID0gMDsKCiAgICAgICAg aWYgKHJvb3RfaHViKQogICAgICAgICAgICAgICAgdXNiX2Rpc2Nvbm5lY3RfUjlhZjZjZWM5ICgm cm9vdF9odWIpOwoKICAgICAgICByZXNldF9oYyAocyk7CiAgICAgICAgd2FpdF9tcyAoMSk7Cgog ICAgICAgIHVoY2lfdW5saW5rX3VyYnMgKHMsIDAsIDEpOwogICAgICAgIHVoY2lfY2xlYW51cF91 bmxpbmsgKHMsIDEpOwoKICAgICAgICB1c2JfZGVyZWdpc3Rlcl9idXNfUmJjOGJmYzk2IChzLT5i dXMpOwoKICAgICAgICBfX3JlbGVhc2VfcmVnaW9uX1JkNDk1MDFkNCgmaW9wb3J0X3Jlc291cmNl X1I4NjVlYmNjZCwgKHMtPmlvX2FkZHIpLCAocy0+aW9fc2l6ZSkpOwogICAgICAgIGZyZWVfaXJx X1JmMjBkYWJkOCAocy0+aXJxLCBzKTsKICAgICAgICB1c2JfZnJlZV9idXNfUjM2MzdmZGI0IChz LT5idXMpOwogICAgICAgIGNsZWFudXBfc2tlbCAocyk7CiAgICAgICAga2ZyZWVfUjAzN2EwY2Jh IChzKTsKfQoKICAgICAgICBpbnQgdWhjaV9zdGFydF91c2IgKHVoY2lfdCAqcykKewoKICAgICAg ICBzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldjsKCiAgICAgICAgdXNiX2RldiA9IHVzYl9hbGxv Y19kZXZfUjE3MTk2MWQzICgoKHZvaWQgKikwKSwgcy0+YnVzKTsKICAgICAgICBpZiAoIXVzYl9k ZXYpCiAgICAgICAgICAgICAgICByZXR1cm4gLTE7CgogICAgICAgIHMtPmJ1cy0+cm9vdF9odWIg PSB1c2JfZGV2OwogICAgICAgIHVzYl9jb25uZWN0X1I5Y2ZjYTQ3NyAodXNiX2Rldik7CgogICAg ICAgIGlmICh1c2JfbmV3X2RldmljZV9SYTFjYzkxMjYgKHVzYl9kZXYpICE9IDApIHsKICAgICAg ICAgICAgICAgIHVzYl9mcmVlX2Rldl9SNDFiZDgwMTEgKHVzYl9kZXYpOwogICAgICAgICAgICAg ICAgcmV0dXJuIC0xOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIDA7Cn0KCgogICAgICAgIGlu dAp1aGNpX3BjaV9zdXNwZW5kIChzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1MzIgc3RhdGUpCnsKICAg ICAgICByZXNldF9oYygodWhjaV90ICopIGRldi0+ZHJpdmVyX2RhdGEpOwogICAgICAgIHJldHVy biAwOwp9CgogICAgICAgIGludAp1aGNpX3BjaV9yZXN1bWUgKHN0cnVjdCBwY2lfZGV2ICpkZXYp CnsKICAgICAgICBzdGFydF9oYygodWhjaV90ICopIGRldi0+ZHJpdmVyX2RhdGEpOwogICAgICAg IHJldHVybiAwOwp9CgoKICAgICAgICBpbnQgYWxsb2NfdWhjaSAoc3RydWN0IHBjaV9kZXYgKmRl diwgaW50IGlycSwgdW5zaWduZWQgaW50IGlvX2FkZHIsIHVuc2lnbmVkIGludCBpb19zaXplKQp7 CiAgICAgICAgdWhjaV90ICpzOwogICAgICAgIHN0cnVjdCB1c2JfYnVzICpidXM7CiAgICAgICAg Y2hhciBidWZbOF0sICpidWZwID0gYnVmOwoKCiAgICAgICAgc3ByaW50Zl9SM2MyYzVhZjUoYnVm LCAiJWQiLCBpcnEpOwoKCgogICAgICAgIHByaW50a19SMWI3ZDQwNzQoIjw2PiIgInVzYi11aGNp LmMiICI6IFVTQiBVSENJIGF0IEkvTyAweCV4LCBJUlEgJXNcbiIsCiAgICAgICAgICAgICAgICBp b19hZGRyLCBidWZwKTsKCiAgICAgICAgcyA9IGttYWxsb2NfUjkzZDRjZmU2IChzaXplb2YgKHVo Y2lfdCksICgweDIwIHwgMHgxMCB8IDB4NDAgfCAweDgwIHwgMHgxMDApKTsKICAgICAgICBpZiAo IXMpCiAgICAgICAgICAgICAgICByZXR1cm4gLTE7CgogICAgICAgIChfX2J1aWx0aW5fY29uc3Rh bnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mICh1aGNpX3QpKSkgPyBfX2Nv bnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKHMpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQg Y2hhcikoMCkpKSwoKHNpemVvZiAodWhjaV90KSkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKChz KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2YgKHVoY2lfdCkp KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YgKHVoY2lfdCkpKSA/IF9fbWVtc2V0 X2dlbmVyaWMoKCgocykpKSwoKCgwKSkpLCgoKHNpemVvZiAodWhjaV90KSkpKSkgOiBfX21lbXNl dF9nZW5lcmljKCgocykpLCgoMCkpLCgoc2l6ZW9mICh1aGNpX3QpKSkpKSk7CiAgICAgICAgZG8g eyAoJnMtPmZyZWVfZGVzYyktPm5leHQgPSAoJnMtPmZyZWVfZGVzYyk7ICgmcy0+ZnJlZV9kZXNj KS0+cHJldiA9ICgmcy0+ZnJlZV9kZXNjKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8geyAoJnMt PnVyYl9saXN0KS0+bmV4dCA9ICgmcy0+dXJiX2xpc3QpOyAoJnMtPnVyYl9saXN0KS0+cHJldiA9 ICgmcy0+dXJiX2xpc3QpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7ICgmcy0+dXJiX3VubGlu a2VkKS0+bmV4dCA9ICgmcy0+dXJiX3VubGlua2VkKTsgKCZzLT51cmJfdW5saW5rZWQpLT5wcmV2 ID0gKCZzLT51cmJfdW5saW5rZWQpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7IH0gd2hpbGUo MCk7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAg ICAgICAoKCgmcy0+YXZvaWRfYnVsayktPmNvdW50ZXIpID0gKDApKTsKICAgICAgICBzLT5pcnEg PSAtMTsKICAgICAgICBzLT5pb19hZGRyID0gaW9fYWRkcjsKICAgICAgICBzLT5pb19zaXplID0g aW9fc2l6ZTsKICAgICAgICBzLT51aGNpX3BjaT1kZXY7CgogICAgICAgIGJ1cyA9IHVzYl9hbGxv Y19idXNfUjczYjI4OGZhICgmdWhjaV9kZXZpY2Vfb3BlcmF0aW9ucyk7CiAgICAgICAgaWYgKCFi dXMpIHsKICAgICAgICAgICAgICAgIGtmcmVlX1IwMzdhMGNiYSAocyk7CiAgICAgICAgICAgICAg ICByZXR1cm4gLTE7CiAgICAgICAgfQoKICAgICAgICBzLT5idXMgPSBidXM7CiAgICAgICAgYnVz LT5oY3ByaXYgPSBzOwoKCgoKCgoKICAgICAgICBmb3IgKHMtPm1heHBvcnRzID0gMDsgcy0+bWF4 cG9ydHMgPCAoaW9fc2l6ZSAtIDB4MTApIC8gMjsgcy0+bWF4cG9ydHMrKykgewogICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50IHBvcnRzdGF0dXM7CgogICAgICAgICAgICAgICAgcG9ydHN0YXR1 cyA9IGludyAoaW9fYWRkciArIDB4MTAgKyAocy0+bWF4cG9ydHMgKiAyKSk7CiAgICAgICAgICAg ICAgICBkbyB7fSB3aGlsZSAoMCk7CgogICAgICAgICAgICAgICAgaWYgKCEocG9ydHN0YXR1cyAm IDB4MDA4MCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAg ICBwcmludGtfUjFiN2Q0MDc0KCI8ND4iICJ1c2ItdWhjaS5jIiAiOiAiICJEZXRlY3RlZCAlZCBw b3J0cyIgIlxuIiAsIHMtPm1heHBvcnRzKTsKCgoKICAgICAgICBpZiAocy0+bWF4cG9ydHMgPCAy IHx8IHMtPm1heHBvcnRzID4gOCkgewogICAgICAgICAgICAgICAgZG8ge30gd2hpbGUgKDApOwog ICAgICAgICAgICAgICAgcy0+bWF4cG9ydHMgPSAyOwogICAgICAgIH0KCiAgICAgICAgcy0+cmgu bnVtcG9ydHMgPSBzLT5tYXhwb3J0czsKICAgICAgICBzLT5sb29wX3VzYWdlPTA7CiAgICAgICAg aWYgKGluaXRfc2tlbCAocykpIHsKICAgICAgICAgICAgICAgIHVzYl9mcmVlX2J1c19SMzYzN2Zk YjQgKGJ1cyk7CiAgICAgICAgICAgICAgICBrZnJlZV9SMDM3YTBjYmEocyk7CiAgICAgICAgICAg ICAgICByZXR1cm4gLTE7CiAgICAgICAgfQoKICAgICAgICBfX3JlcXVlc3RfcmVnaW9uX1IxYTFh NGYwOSgmaW9wb3J0X3Jlc291cmNlX1I4NjVlYmNjZCwgKHMtPmlvX2FkZHIpLCAoaW9fc2l6ZSks ICgidXNiLXVoY2kiKSk7CiAgICAgICAgcmVzZXRfaGMgKHMpOwogICAgICAgIHVzYl9yZWdpc3Rl cl9idXNfUmNiZTMxOTMzIChzLT5idXMpOwoKICAgICAgICBzdGFydF9oYyAocyk7CgogICAgICAg IGlmIChyZXF1ZXN0X2lycV9SMGM2MGYyZTAgKGlycSwgdWhjaV9pbnRlcnJ1cHQsIDB4MDQwMDAw MDAsICJ1c2ItdWhjaSIsIHMpKSB7CiAgICAgICAgICAgICAgICBwcmludGtfUjFiN2Q0MDc0KCI8 Mz4iICJ1c2ItdWhjaS5jIiAiOiAiICJyZXF1ZXN0X2lycSAlZCBmYWlsZWQhIiAiXG4iICwgaXJx KTsKICAgICAgICAgICAgICAgIHVzYl9mcmVlX2J1c19SMzYzN2ZkYjQgKGJ1cyk7CiAgICAgICAg ICAgICAgICByZXNldF9oYyAocyk7CiAgICAgICAgICAgICAgICBfX3JlbGVhc2VfcmVnaW9uX1Jk NDk1MDFkNCgmaW9wb3J0X3Jlc291cmNlX1I4NjVlYmNjZCwgKHMtPmlvX2FkZHIpLCAocy0+aW9f c2l6ZSkpOwogICAgICAgICAgICAgICAgY2xlYW51cF9za2VsKHMpOwogICAgICAgICAgICAgICAg a2ZyZWVfUjAzN2EwY2JhKHMpOwogICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgIH0K CgogICAgICAgIHBjaV93cml0ZV9jb25maWdfd29yZF9SMjBmODU4NDUgKGRldiwgMHhjMCwgMHgy MDAwKTsKCiAgICAgICAgcy0+aXJxID0gaXJxOwoKICAgICAgICBpZih1aGNpX3N0YXJ0X3VzYiAo cykgPCAwKSB7CiAgICAgICAgICAgICAgICB1aGNpX3BjaV9yZW1vdmUoZGV2KTsKICAgICAgICAg ICAgICAgIHJldHVybiAtMTsKICAgICAgICB9CgoKICAgICAgICBkZXYtPmRyaXZlcl9kYXRhID0g czsKICAgICAgICBkZXZzPXM7CgogICAgICAgIHJldHVybiAwOwp9CgogICAgICAgIGludAp1aGNp X3BjaV9wcm9iZSAoc3RydWN0IHBjaV9kZXYgKmRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2Vf aWQgKmlkKQp7CiAgICAgICAgaW50IGk7CgogICAgICAgIGlmIChwY2lfZW5hYmxlX2RldmljZV9S ZDA0ZmVhMDgoZGV2KSA8IDApCiAgICAgICAgICAgICAgICByZXR1cm4gLTE5OwoKICAgICAgICBp ZiAoIWRldi0+aXJxKSB7CiAgICAgICAgICAgICAgICBwcmludGtfUjFiN2Q0MDc0KCI8Mz4iICJ1 c2ItdWhjaS5jIiAiOiAiICJmb3VuZCBVSENJIGRldmljZSB3aXRoIG5vIElSUSBhc3NpZ25lZC4g Y2hlY2sgQklPUyBzZXR0aW5ncyEiICJcbiIpOwogICAgICAgICAgICAgICAgcmV0dXJuIC0xOTsK ICAgICAgICB9CgogICAgICAgIHBjaV9zZXRfbWFzdGVyX1IyZDA3NjBhZShkZXYpOwoKCiAgICAg ICAgZm9yIChpID0gMDsgaSA8IDY7IGkrKykgewoKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBpb19hZGRyID0gKChkZXYpLT5yZXNvdXJjZVsoaSldLnN0YXJ0KTsKICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBpb19zaXplID0gKCgoKChkZXYpKS0+cmVzb3VyY2VbKChpKSldLnN0YXJ0 KSA9PSAwICYmICgoKGRldikpLT5yZXNvdXJjZVsoKGkpKV0uZW5kKSA9PSAoKChkZXYpKS0+cmVz b3VyY2VbKChpKSldLnN0YXJ0KSkgPyAwIDogKCgoKGRldikpLT5yZXNvdXJjZVsoKGkpKV0uZW5k KSAtICgoKGRldikpLT5yZXNvdXJjZVsoKGkpKV0uc3RhcnQpICsgMSkpOwogICAgICAgICAgICAg ICAgaWYgKCEoKChkZXYpLT5yZXNvdXJjZVsoaSldLmZsYWdzKSAmIDB4MDAwMDAxMDApKQogICAg ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKCgogICAgICAgICAgICAgICAgaWYgKF9fY2hl Y2tfcmVnaW9uX1JmMWQwY2RhYigmaW9wb3J0X3Jlc291cmNlX1I4NjVlYmNjZCwgKGlvX2FkZHIp LCAoaW9fc2l6ZSkpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAg ICAgICBwY2lfd3JpdGVfY29uZmlnX3dvcmRfUjIwZjg1ODQ1IChkZXYsIDB4YzAsIDApOwoKICAg ICAgICAgICAgICAgIHJldHVybiBhbGxvY191aGNpKGRldiwgZGV2LT5pcnEsIGlvX2FkZHIsIGlv X3NpemUpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gLTE5Owp9CgoKCnN0YXRpYyBjb25zdCBz dHJ1Y3QgcGNpX2RldmljZV9pZCB1aGNpX3BjaV9pZHMgW10gPSB7IHsKCgogICAgICAgIGNsYXNz OiAoKDB4MGMwMyA8PCA4KSB8IDB4MDApLAogICAgICAgIGNsYXNzX21hc2s6IH4wLAoKCiAgICAg ICAgdmVuZG9yOiAofjApLAogICAgICAgIGRldmljZTogKH4wKSwKICAgICAgICBzdWJ2ZW5kb3I6 ICh+MCksCiAgICAgICAgc3ViZGV2aWNlOiAofjApLAoKICAgICAgICB9LCB7IH0KfTsKCnN0YXRp YyBjb25zdCB1bnNpZ25lZCBsb25nIF9fbW9kdWxlX3BjaV9kZXZpY2Vfc2l6ZSBfX2F0dHJpYnV0 ZV9fICgodW51c2VkKSkgPSBzaXplb2Yoc3RydWN0IHBjaV9kZXZpY2VfaWQpOyBzdGF0aWMgY29u c3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKiBfX21vZHVsZV9wY2lfZGV2aWNlX3RhYmxlIF9fYXR0 cmlidXRlX18gKCh1bnVzZWQpKSA9IHVoY2lfcGNpX2lkczsKCnN0YXRpYyBzdHJ1Y3QgcGNpX2Ry aXZlciB1aGNpX3BjaV9kcml2ZXIgPSB7CiAgICAgICAgbmFtZTogInVzYi11aGNpIiwKICAgICAg ICBpZF90YWJsZTogJnVoY2lfcGNpX2lkcyBbMF0sCgogICAgICAgIHByb2JlOiB1aGNpX3BjaV9w cm9iZSwKICAgICAgICByZW1vdmU6IHVoY2lfcGNpX3JlbW92ZSwKCgogICAgICAgIHN1c3BlbmQ6 IHVoY2lfcGNpX3N1c3BlbmQsCiAgICAgICAgcmVzdW1lOiB1aGNpX3BjaV9yZXN1bWUsCgoKfTsK CgoKc3RhdGljIGludCB1aGNpX2hjZF9pbml0ICh2b2lkKQp7CiAgICAgICAgaW50IHJldHZhbDsK CgogICAgICAgIHVyYl9wcml2X2ttZW0gPSBrbWVtX2NhY2hlX2NyZWF0ZV9SZDFjMGI0ZTYoInVy Yl9wcml2Iiwgc2l6ZW9mKHVyYl9wcml2X3QpLCAwLCAweDAwMDAyMDAwVUwsICgodm9pZCAqKTAp LCAoKHZvaWQgKikwKSk7CgogICAgICAgIGlmKCF1cmJfcHJpdl9rbWVtKSB7CiAgICAgICAgICAg ICAgICBwcmludGtfUjFiN2Q0MDc0KCI8Mz4iICJ1c2ItdWhjaS5jIiAiOiAiICJrbWVtX2NhY2hl X2NyZWF0ZSBmb3IgdXJiX3ByaXZfdCBmYWlsZWQgKG91dCBvZiBtZW1vcnkpIiAiXG4iKTsKICAg ICAgICAgICAgICAgIHJldHVybiAtMTI7CiAgICAgICAgfQoKICAgICAgICBwcmludGtfUjFiN2Q0 MDc0KCI8Nj4iICJ1c2ItdWhjaS5jIiAiOiAiICIkUmV2aXNpb246IDEuMjY4ICQgdGltZSAiICIy MjoyODoyNyIgIiAiICJTZXAgMjcgMjAwMSIgIlxuIik7CgoKICAgICAgICBwcmludGtfUjFiN2Q0 MDc0KCI8Nj4iICJ1c2ItdWhjaS5jIiAiOiAiICJIaWdoIGJhbmR3aWR0aCBtb2RlIGVuYWJsZWQi ICJcbiIpOwoKCiAgICAgICAgcmV0dmFsID0gcGNpX21vZHVsZV9pbml0ICgmdWhjaV9wY2lfZHJp dmVyKTsKCgogICAgICAgIGlmIChyZXR2YWwgPCAwICkgewogICAgICAgICAgICAgICAgaWYgKGtt ZW1fY2FjaGVfZGVzdHJveV9SZGY4M2M2OTIodXJiX3ByaXZfa21lbSkpCiAgICAgICAgICAgICAg ICAgICAgICAgIHByaW50a19SMWI3ZDQwNzQoIjwzPiIgInVzYi11aGNpLmMiICI6ICIgInVyYl9w cml2X2ttZW0gcmVtYWluZWQiICJcbiIpOwogICAgICAgIH0KCgogICAgICAgIHByaW50a19SMWI3 ZDQwNzQoIjw2PiIgInVzYi11aGNpLmMiICI6ICIgInYxLjI2OCIgIjoiICJVU0IgVW5pdmVyc2Fs IEhvc3QgQ29udHJvbGxlciBJbnRlcmZhY2UgZHJpdmVyIiAiXG4iKTsKCiAgICAgICAgcmV0dXJu IHJldHZhbDsKfQoKc3RhdGljIHZvaWQgdWhjaV9oY2RfY2xlYW51cCAodm9pZCkKewogICAgICAg IHBjaV91bnJlZ2lzdGVyX2RyaXZlcl9SODM2ZWEyMTEgKCZ1aGNpX3BjaV9kcml2ZXIpOwoKCiAg ICAgICAgaWYoa21lbV9jYWNoZV9kZXN0cm95X1JkZjgzYzY5Mih1cmJfcHJpdl9rbWVtKSkKICAg ICAgICAgICAgICAgIHByaW50a19SMWI3ZDQwNzQoIjwzPiIgInVzYi11aGNpLmMiICI6ICIgInVy Yl9wcml2X2ttZW0gcmVtYWluZWQiICJcbiIpOwoKfQoKaW50IGluaXRfbW9kdWxlKHZvaWQpIF9f YXR0cmlidXRlX18oKGFsaWFzKCJ1aGNpX2hjZF9pbml0IikpKTsgc3RhdGljIGlubGluZSBfX2lu aXRfbW9kdWxlX2Z1bmNfdCBfX2luaXRfbW9kdWxlX2lubGluZSh2b2lkKSB7IHJldHVybiB1aGNp X2hjZF9pbml0OyB9Owp2b2lkIGNsZWFudXBfbW9kdWxlKHZvaWQpIF9fYXR0cmlidXRlX18oKGFs aWFzKCJ1aGNpX2hjZF9jbGVhbnVwIikpKTsgc3RhdGljIGlubGluZSBfX2NsZWFudXBfbW9kdWxl X2Z1bmNfdCBfX2NsZWFudXBfbW9kdWxlX2lubGluZSh2b2lkKSB7IHJldHVybiB1aGNpX2hjZF9j bGVhbnVwOyB9OwoKCmNvbnN0IGNoYXIgX19tb2R1bGVfYXV0aG9yW10gX19hdHRyaWJ1dGVfXygo c2VjdGlvbigiLm1vZGluZm8iKSkpID0gImF1dGhvcj0iICJHZW9yZyBBY2hlciwgRGV0aSBGbGll Z2wsIFRob21hcyBTYWlsZXIsIFJvbWFuIFdlaXNzZ2FlcmJlciI7CmNvbnN0IGNoYXIgX19tb2R1 bGVfZGVzY3JpcHRpb25bXSBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIubW9kaW5mbyIpKSkgPSAi ZGVzY3JpcHRpb249IiAiVVNCIFVuaXZlcnNhbCBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlIGRy aXZlciI7Cg==