From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21274 invoked by alias); 3 Jul 2002 16:56:03 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 21229 invoked by uid 71); 3 Jul 2002 16:56:02 -0000 Resent-Date: 3 Jul 2002 16:56:02 -0000 Resent-Message-ID: <20020703165602.21227.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org, obrien@FreeBSD.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, sobomax@FreeBSD.org Received: (qmail 19687 invoked by uid 61); 3 Jul 2002 16:54:49 -0000 Message-Id: <20020703165449.19686.qmail@sources.redhat.com> Date: Wed, 03 Jul 2002 09:56:00 -0000 From: sobomax@FreeBSD.org Reply-To: sobomax@FreeBSD.org To: gcc-gnats@gcc.gnu.org Cc: obrien@FreeBSD.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) X-GNATS-Notify: obrien@FreeBSD.org Subject: c/7200: Can't compile XFree86-4.2.0 with gcc 3.1 X-SW-Source: 2002-07/txt/msg00112.txt.bz2 List-Id: >Number: 7200 >Category: c >Synopsis: Can't compile XFree86-4.2.0 with gcc 3.1 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Jul 03 09:56:01 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Maxim Sobolev >Release: gcc (GCC) 3.1 [FreeBSD] 20020509 (prerelease) >Organization: >Environment: $ uname -a FreeBSD notebook 5.0-CURRENT FreeBSD 5.0-CURRENT #43: Fri Jun 28 14:12:22 EEST 2 002 root@notebook:/usr/src/sys/i386/compile/NOTEBOOK i386 >Description: When I am trying to compile XFree86-4.2.0 on FreeBSD 5.0-CURRENT system with gcc 3.1 base system compiler I am getting the following error message: rm -f translate.o LD_LIBRARY_PATH=../../../../exports/lib cc -c -pipe -O -mpreferred-stack-boundar y=2 -march=pentium-mmx -ansi -pedantic -Dasm=__asm -Wall -Wpointer-arith -I.. /../../../exports/include -I../../../../exports/include/X11 -I../../../../includ e/extensions -I../../../../extras/Mesa/src -I../../../../lib/GL/dri -I../../../.. -I../../../../exports/include -DCSRG_BASED -DFUNCPROTO=15 -DNAR ROWPROTO -DXTHREADS -DXUSE_MTSAFE_API -DXNO_MTSAFE_PWDAPI -DMALLOC_0_RETURN S_NULL -DGLXEXT -DXF86DRI -DGLX_DIRECT_RENDERING -DGLX_USE_DLOPEN -DGLX_USE_MESA -DUSE_X86_ASM -DUSE_MMX_ASM -ansi -pedantic -Dasm=__asm -W all -Wpointer-arith -I../../../../exports/include -I../../../../exports/include /X11 -I../../../../include/extensions -I../../../../extras/Mesa/src -I ../../../../lib/GL/dri -I../../../.. -I../../../../exports/include -DCSRG_BAS ED -DFUNCPROTO=15 -DNARROWPROTO -DXTHREADS -DXUSE_MTSAFE_API -DXNO_MTSAFE_PWD API -DMALLOC_0_RETURNS_NULL -DGLXEXT -DXF86DRI -DGLX_DIRECT_RENDERING -DGLX_U SE_DLOPEN -DGLX_USE_MESA -DUSE_X86_ASM -DUSE_MMX_ASM -fPIC translate.c In file included from translate.c:779: ../../../../extras/Mesa/src/trans_tmp.h: In function `trans_1_GLdouble_1ub_elt': ../../../../extras/Mesa/src/trans_tmp.h:124: could not find a spill register (insn 96 94 97 (set (subreg:SF (reg:QI 75) 0) (plus:SF (reg:SF 8 st(0) [76]) (reg:SF 9 st(1) [80]))) 525 {*fop_sf_comm_nosse} (insn_list 87 (nil) ) (expr_list:REG_DEAD (reg:SF 8 st(0) [76]) (nil))) ../../../../extras/Mesa/src/trans_tmp.h:124: Internal compiler error in failed_r eload, at reload1.c:5050 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. *** Error code 1 Stop in /tmp/portbuild/usr/ports/x11-servers/XFree86-4-Server/work/xc/lib/GL/mes a/src. *** Error code 1 Pre-processed translate.c is attached, the bug could be triggered as follows: $ cc -c -O -fPIC translate.i In file included from translate.c:779: ../../../../extras/Mesa/src/trans_tmp.h: In function `trans_1_GLdouble_1ub_elt': ../../../../extras/Mesa/src/trans_tmp.h:124: could not find a spill register (insn 96 94 97 (set (subreg:SF (reg:QI 75) 0) (plus:SF (reg:SF 8 st(0) [76]) (reg:SF 9 st(1) [80]))) 525 {*fop_sf_comm_nosse} (insn_list 87 (nil) ) (expr_list:REG_DEAD (reg:SF 8 st(0) [76]) (nil))) ../../../../extras/Mesa/src/trans_tmp.h:124: Internal compiler error in failed_r eload, at reload1.c:5050 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. >How-To-Repeat: $ cc -c -O -fPIC translate.i >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="translate.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="translate.i" IyAxICJ0cmFuc2xhdGUuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+Igoj IDEgInRyYW5zbGF0ZS5jIgojIDM0ICJ0cmFuc2xhdGUuYyIKIyAxICIuLi8uLi8uLi8uLi9leHRy YXMvTWVzYS9zcmMvZ2xoZWFkZXIuaCIgMQojIDUxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9z cmMvZ2xoZWFkZXIuaCIKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEgMwojIDQyICIvdXNy L2luY2x1ZGUvYXNzZXJ0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDEgMwoj IDQzICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDIgMwojIDYyICIvdXNyL2luY2x1ZGUvYXNzZXJ0 LmgiIDMKCnZvaWQgX19hc3NlcnQoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCwgY29u c3QgY2hhciAqKTsKCiMgNTIgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy9nbGhlYWRlci5o IiAyCiMgMSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDEgMwojIDUyICIvdXNyL2luY2x1ZGUvY3R5 cGUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9ydW5ldHlwZS5oIiAxIDMKIyA0NCAiL3Vzci9pbmNs dWRlL3J1bmV0eXBlLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbWFjaGluZS9hbnNpLmgiIDEgMwoj IDgxICIvdXNyL2luY2x1ZGUvbWFjaGluZS9hbnNpLmgiIDMKdHlwZWRlZiBfX2J1aWx0aW5fdmFf bGlzdCBfX2dudWNfdmFfbGlzdDsKIyAxMjkgIi91c3IvaW5jbHVkZS9tYWNoaW5lL2Fuc2kuaCIg Mwp0eXBlZGVmIGludCBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX0RJX18pKSkgX19pbnQ2NF90 Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX0RJX18pKSkg X191aW50NjRfdDsKIyAxNDEgIi91c3IvaW5jbHVkZS9tYWNoaW5lL2Fuc2kuaCIgMwp0eXBlZGVm IHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0 eXBlZGVmIHNob3J0IF9faW50MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3VpbnQxNl90 Owp0eXBlZGVmIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7 Cgp0eXBlZGVmIGludCBfX2ludHB0cl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnRwdHJf dDsKCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnRfbGVhc3Q4X3Q7CnR5cGVkZWYgdW5zaWduZWQg Y2hhciBfX3VpbnRfbGVhc3Q4X3Q7CnR5cGVkZWYgc2hvcnQgX19pbnRfbGVhc3QxNl90Owp0eXBl ZGVmIHVuc2lnbmVkIHNob3J0IF9fdWludF9sZWFzdDE2X3Q7CnR5cGVkZWYgaW50IF9faW50X2xl YXN0MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aW50X2xlYXN0MzJfdDsKdHlwZWRlZiBf X2ludDY0X3QgX19pbnRfbGVhc3Q2NF90Owp0eXBlZGVmIF9fdWludDY0X3QgX191aW50X2xlYXN0 NjRfdDsKCnR5cGVkZWYgaW50IF9faW50X2Zhc3Q4X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9f dWludF9mYXN0OF90Owp0eXBlZGVmIGludCBfX2ludF9mYXN0MTZfdDsKdHlwZWRlZiB1bnNpZ25l ZCBpbnQgX191aW50X2Zhc3QxNl90Owp0eXBlZGVmIGludCBfX2ludF9mYXN0MzJfdDsKdHlwZWRl ZiB1bnNpZ25lZCBpbnQgX191aW50X2Zhc3QzMl90Owp0eXBlZGVmIF9faW50NjRfdCBfX2ludF9m YXN0NjRfdDsKdHlwZWRlZiBfX3VpbnQ2NF90IF9fdWludF9mYXN0NjRfdDsKCnR5cGVkZWYgX19p bnQ2NF90IF9faW50bWF4X3Q7CnR5cGVkZWYgX191aW50NjRfdCBfX3VpbnRtYXhfdDsKIyAxODkg Ii91c3IvaW5jbHVkZS9tYWNoaW5lL2Fuc2kuaCIgMwp0eXBlZGVmIHVuaW9uIHsKICAgICAgICBj aGFyIF9fbWJzdGF0ZThbMTI4XTsKICAgICAgICBfX2ludDY0X3QgX21ic3RhdGVMOwp9IF9fbWJz dGF0ZV90OwojIDQ1ICIvdXNyL2luY2x1ZGUvcnVuZXR5cGUuaCIgMiAzCgoKdHlwZWRlZiBpbnQg cnVuZV90OwoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwoKCgoKdHlwZWRlZiBpbnQg d2NoYXJfdDsKIyA2NyAiL3Vzci9pbmNsdWRlL3J1bmV0eXBlLmgiIDMKdHlwZWRlZiBzdHJ1Y3Qg ewogICAgICAgIHJ1bmVfdCBtaW47CiAgICAgICAgcnVuZV90IG1heDsKICAgICAgICBydW5lX3Qg bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgKnR5cGVzOwp9IF9SdW5lRW50cnk7Cgp0eXBlZGVm IHN0cnVjdCB7CiAgICAgICAgaW50IG5yYW5nZXM7CiAgICAgICAgX1J1bmVFbnRyeSAqcmFuZ2Vz Owp9IF9SdW5lUmFuZ2U7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgY2hhciBtYWdpY1s4XTsK ICAgICAgICBjaGFyIGVuY29kaW5nWzMyXTsKCiAgICAgICAgcnVuZV90ICgqc2dldHJ1bmUpKGNv bnN0IGNoYXIgKiwgc2l6ZV90LCBjaGFyIGNvbnN0ICoqKTsKICAgICAgICBpbnQgKCpzcHV0cnVu ZSkocnVuZV90LCBjaGFyICosIHNpemVfdCwgY2hhciAqKik7CiAgICAgICAgcnVuZV90IGludmFs aWRfcnVuZTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBydW5ldHlwZVsoMSA8PDggKV07CiAgICAg ICAgcnVuZV90IG1hcGxvd2VyWygxIDw8OCApXTsKICAgICAgICBydW5lX3QgbWFwdXBwZXJbKDEg PDw4ICldOwoKCgoKCgogICAgICAgIF9SdW5lUmFuZ2UgcnVuZXR5cGVfZXh0OwogICAgICAgIF9S dW5lUmFuZ2UgbWFwbG93ZXJfZXh0OwogICAgICAgIF9SdW5lUmFuZ2UgbWFwdXBwZXJfZXh0OwoK ICAgICAgICB2b2lkICp2YXJpYWJsZTsKICAgICAgICBpbnQgdmFyaWFibGVfbGVuOwp9IF9SdW5l TG9jYWxlOwoKCgpleHRlcm4gX1J1bmVMb2NhbGUgX0RlZmF1bHRSdW5lTG9jYWxlOwpleHRlcm4g X1J1bmVMb2NhbGUgKl9DdXJyZW50UnVuZUxvY2FsZTsKIyA1MyAiL3Vzci9pbmNsdWRlL2N0eXBl LmgiIDIgMwojIDY5ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMwoKaW50IGlzYWxudW0oaW50KTsK aW50IGlzYWxwaGEoaW50KTsKaW50IGlzY250cmwoaW50KTsKaW50IGlzZGlnaXQoaW50KTsKaW50 IGlzZ3JhcGgoaW50KTsKaW50IGlzbG93ZXIoaW50KTsKaW50IGlzcHJpbnQoaW50KTsKaW50IGlz cHVuY3QoaW50KTsKaW50IGlzc3BhY2UoaW50KTsKaW50IGlzdXBwZXIoaW50KTsKaW50IGlzeGRp Z2l0KGludCk7CmludCB0b2xvd2VyKGludCk7CmludCB0b3VwcGVyKGludCk7CgoKaW50IGRpZ2l0 dG9pbnQoaW50KTsKaW50IGlzYXNjaWkoaW50KTsKaW50IGlzYmxhbmsoaW50KTsKaW50IGlzaGV4 bnVtYmVyKGludCk7CmludCBpc2lkZW9ncmFtKGludCk7CmludCBpc251bWJlcihpbnQpOwppbnQg aXNwaG9ub2dyYW0oaW50KTsKaW50IGlzcnVuZShpbnQpOwppbnQgaXNzcGVjaWFsKGludCk7Cmlu dCB0b2FzY2lpKGludCk7CgoKIyAxMjYgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCgp1bnNpZ25l ZCBsb25nIF9fX3J1bmV0eXBlKGludCk7CmludCBfX190b2xvd2VyKGludCk7CmludCBfX190b3Vw cGVyKGludCk7CgojIDE0NyAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKc3RhdGljIF9faW5saW5l IGludApfX21hc2tydW5lKGludCBfYywgdW5zaWduZWQgbG9uZyBfZikKewogICAgICAgIHJldHVy biAoKF9jIDwgMCB8fCBfYyA+PSAoMSA8PDggKSkgPyBfX19ydW5ldHlwZShfYykgOgogICAgICAg ICAgICAgICAgX0N1cnJlbnRSdW5lTG9jYWxlLT5ydW5ldHlwZVtfY10pICYgX2Y7Cn0KCnN0YXRp YyBfX2lubGluZSBpbnQKX19pc3R5cGUoaW50IF9jLCB1bnNpZ25lZCBsb25nIF9mKQp7CiAgICAg ICAgcmV0dXJuICghIV9fbWFza3J1bmUoX2MsIF9mKSk7Cn0KCnN0YXRpYyBfX2lubGluZSBpbnQK X19pc2N0eXBlKGludCBfYywgdW5zaWduZWQgbG9uZyBfZikKewogICAgICAgIHJldHVybiAoX2Mg PCAwIHx8IF9jID49ICgxIDw8OCApKSA/IDAgOgogICAgICAgICAgICAgICAhIShfRGVmYXVsdFJ1 bmVMb2NhbGUucnVuZXR5cGVbX2NdICYgX2YpOwp9CgpzdGF0aWMgX19pbmxpbmUgaW50Cl9fdG91 cHBlcihpbnQgX2MpCnsKICAgICAgICByZXR1cm4gKF9jIDwgMCB8fCBfYyA+PSAoMSA8PDggKSkg PyBfX190b3VwcGVyKF9jKSA6CiAgICAgICAgICAgICAgIF9DdXJyZW50UnVuZUxvY2FsZS0+bWFw dXBwZXJbX2NdOwp9CgpzdGF0aWMgX19pbmxpbmUgaW50Cl9fdG9sb3dlcihpbnQgX2MpCnsKICAg ICAgICByZXR1cm4gKF9jIDwgMCB8fCBfYyA+PSAoMSA8PDggKSkgPyBfX190b2xvd2VyKF9jKSA6 CiAgICAgICAgICAgICAgIF9DdXJyZW50UnVuZUxvY2FsZS0+bWFwbG93ZXJbX2NdOwp9CiMgNTMg Ii4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy9nbGhlYWRlci5oIiAyCgoKCgojIDEgIi91c3Iv aW5jbHVkZS9tYXRoLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCmV4dGVybiBj aGFyIF9faW5maW5pdHlbXTsKIyA0NSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwpleHRlcm4gaW50 IHNpZ25nYW07CgoKZW51bSBmZHZlcnNpb24ge2ZkbGlibV9pZWVlID0gLTEsIGZkbGlibV9zdmlk LCBmZGxpYm1feG9wZW4sIGZkbGlibV9wb3NpeH07CiMgNjAgIi91c3IvaW5jbHVkZS9tYXRoLmgi IDMKZXh0ZXJuIGVudW0gZmR2ZXJzaW9uIF9mZGxpYl92ZXJzaW9uOwojIDcwICIvdXNyL2luY2x1 ZGUvbWF0aC5oIiAzCnN0cnVjdCBleGNlcHRpb24gewogICAgICAgIGludCB0eXBlOwogICAgICAg IGNoYXIgKm5hbWU7CiAgICAgICAgZG91YmxlIGFyZzE7CiAgICAgICAgZG91YmxlIGFyZzI7CiAg ICAgICAgZG91YmxlIHJldHZhbDsKfTsKIyAxMDAgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKCgoK CmRvdWJsZSBhY29zKGRvdWJsZSk7CmRvdWJsZSBhc2luKGRvdWJsZSk7CmRvdWJsZSBhdGFuKGRv dWJsZSk7CmRvdWJsZSBhdGFuMihkb3VibGUsIGRvdWJsZSk7CmRvdWJsZSBjb3MoZG91YmxlKTsK ZG91YmxlIHNpbihkb3VibGUpOwpkb3VibGUgdGFuKGRvdWJsZSk7Cgpkb3VibGUgY29zaChkb3Vi bGUpOwpkb3VibGUgc2luaChkb3VibGUpOwpkb3VibGUgdGFuaChkb3VibGUpOwoKZG91YmxlIGV4 cChkb3VibGUpOwpkb3VibGUgZnJleHAoZG91YmxlLCBpbnQgKik7CmRvdWJsZSBsZGV4cChkb3Vi bGUsIGludCk7CmRvdWJsZSBsb2coZG91YmxlKTsKZG91YmxlIGxvZzEwKGRvdWJsZSk7CmRvdWJs ZSBtb2RmKGRvdWJsZSwgZG91YmxlICopOwoKZG91YmxlIHBvdyhkb3VibGUsIGRvdWJsZSk7CmRv dWJsZSBzcXJ0KGRvdWJsZSk7Cgpkb3VibGUgY2VpbChkb3VibGUpOwpkb3VibGUgZmFicyhkb3Vi bGUpOwpkb3VibGUgZmxvb3IoZG91YmxlKTsKZG91YmxlIGZtb2QoZG91YmxlLCBkb3VibGUpOwoK CmRvdWJsZSBlcmYoZG91YmxlKTsKZG91YmxlIGVyZmMoZG91YmxlKTsKZG91YmxlIGdhbW1hKGRv dWJsZSk7CmRvdWJsZSBoeXBvdChkb3VibGUsIGRvdWJsZSk7CmludCBpc2luZihkb3VibGUpOwpp bnQgaXNuYW4oZG91YmxlKTsKaW50IGZpbml0ZShkb3VibGUpOwpkb3VibGUgajAoZG91YmxlKTsK ZG91YmxlIGoxKGRvdWJsZSk7CmRvdWJsZSBqbihpbnQsIGRvdWJsZSk7CmRvdWJsZSBsZ2FtbWEo ZG91YmxlKTsKZG91YmxlIHkwKGRvdWJsZSk7CmRvdWJsZSB5MShkb3VibGUpOwpkb3VibGUgeW4o aW50LCBkb3VibGUpOwoKCmRvdWJsZSBhY29zaChkb3VibGUpOwpkb3VibGUgYXNpbmgoZG91Ymxl KTsKZG91YmxlIGF0YW5oKGRvdWJsZSk7CmRvdWJsZSBjYnJ0KGRvdWJsZSk7CmRvdWJsZSBsb2di KGRvdWJsZSk7CmRvdWJsZSBuZXh0YWZ0ZXIoZG91YmxlLCBkb3VibGUpOwpkb3VibGUgcmVtYWlu ZGVyKGRvdWJsZSwgZG91YmxlKTsKZG91YmxlIHNjYWxiKGRvdWJsZSwgZG91YmxlKTsKZG91Ymxl IHRnYW1tYShkb3VibGUpOwoKCmludCBtYXRoZXJyKHN0cnVjdCBleGNlcHRpb24gKik7CgoKCgoK ZG91YmxlIHNpZ25pZmljYW5kKGRvdWJsZSk7CgoKCgpkb3VibGUgY29weXNpZ24oZG91YmxlLCBk b3VibGUpOwppbnQgaWxvZ2IoZG91YmxlKTsKZG91YmxlIHJpbnQoZG91YmxlKTsKZG91YmxlIHNj YWxibihkb3VibGUsIGludCk7CgoKCgpkb3VibGUgZHJlbShkb3VibGUsIGRvdWJsZSk7CmRvdWJs ZSBleHBtMShkb3VibGUpOwpkb3VibGUgbG9nMXAoZG91YmxlKTsKIyAxOTIgIi91c3IvaW5jbHVk ZS9tYXRoLmgiIDMKZmxvYXQgYWNvc2YoZmxvYXQpOwpmbG9hdCBhc2luZihmbG9hdCk7CmZsb2F0 IGF0YW5mKGZsb2F0KTsKZmxvYXQgYXRhbjJmKGZsb2F0LCBmbG9hdCk7CmZsb2F0IGNvc2YoZmxv YXQpOwpmbG9hdCBzaW5mKGZsb2F0KTsKZmxvYXQgdGFuZihmbG9hdCk7CgpmbG9hdCBjb3NoZihm bG9hdCk7CmZsb2F0IHNpbmhmKGZsb2F0KTsKZmxvYXQgdGFuaGYoZmxvYXQpOwoKZmxvYXQgZXhw ZihmbG9hdCk7CmZsb2F0IGZyZXhwZihmbG9hdCwgaW50ICopOwpmbG9hdCBsZGV4cGYoZmxvYXQs IGludCk7CmZsb2F0IGxvZ2YoZmxvYXQpOwpmbG9hdCBsb2cxMGYoZmxvYXQpOwpmbG9hdCBtb2Rm ZihmbG9hdCwgZmxvYXQgKik7CgpmbG9hdCBwb3dmKGZsb2F0LCBmbG9hdCk7CmZsb2F0IHNxcnRm KGZsb2F0KTsKCmZsb2F0IGNlaWxmKGZsb2F0KTsKZmxvYXQgZmFic2YoZmxvYXQpOwpmbG9hdCBm bG9vcmYoZmxvYXQpOwpmbG9hdCBmbW9kZihmbG9hdCwgZmxvYXQpOwoKZmxvYXQgZXJmZihmbG9h dCk7CmZsb2F0IGVyZmNmKGZsb2F0KTsKZmxvYXQgZ2FtbWFmKGZsb2F0KTsKZmxvYXQgaHlwb3Rm KGZsb2F0LCBmbG9hdCk7CmludCBpc25hbmYoZmxvYXQpOwppbnQgZmluaXRlZihmbG9hdCk7CmZs b2F0IGowZihmbG9hdCk7CmZsb2F0IGoxZihmbG9hdCk7CmZsb2F0IGpuZihpbnQsIGZsb2F0KTsK ZmxvYXQgbGdhbW1hZihmbG9hdCk7CmZsb2F0IHkwZihmbG9hdCk7CmZsb2F0IHkxZihmbG9hdCk7 CmZsb2F0IHluZihpbnQsIGZsb2F0KTsKCmZsb2F0IGFjb3NoZihmbG9hdCk7CmZsb2F0IGFzaW5o ZihmbG9hdCk7CmZsb2F0IGF0YW5oZihmbG9hdCk7CmZsb2F0IGNicnRmKGZsb2F0KTsKZmxvYXQg bG9nYmYoZmxvYXQpOwpmbG9hdCBuZXh0YWZ0ZXJmKGZsb2F0LCBmbG9hdCk7CmZsb2F0IHJlbWFp bmRlcmYoZmxvYXQsIGZsb2F0KTsKZmxvYXQgc2NhbGJmKGZsb2F0LCBmbG9hdCk7CgoKCgpmbG9h dCBzaWduaWZpY2FuZGYoZmxvYXQpOwoKCgoKCmZsb2F0IGNvcHlzaWduZihmbG9hdCwgZmxvYXQp OwppbnQgaWxvZ2JmKGZsb2F0KTsKZmxvYXQgcmludGYoZmxvYXQpOwpmbG9hdCBzY2FsYm5mKGZs b2F0LCBpbnQpOwoKCgoKZmxvYXQgZHJlbWYoZmxvYXQsIGZsb2F0KTsKZmxvYXQgZXhwbTFmKGZs b2F0KTsKZmxvYXQgbG9nMXBmKGZsb2F0KTsKIyAyNzUgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMK CiMgNTggIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy9nbGhlYWRlci5oIiAyCgojIDEgIi91 c3IvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMgMzkgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMwoj IDEgIi91c3IvaW5jbHVkZS9zeXMvX3Bvc2l4LmgiIDEgMwojIDQwICIvdXNyL2luY2x1ZGUvbGlt aXRzLmgiIDIgMwojIDk1ICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDMKIyAxICIvdXNyL2luY2x1 ZGUvbWFjaGluZS9saW1pdHMuaCIgMSAzCiMgOTYgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAz CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3lzbGltaXRzLmgiIDEgMwojIDk4ICIvdXNyL2luY2x1 ZGUvbGltaXRzLmgiIDIgMwojIDYwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvZ2xoZWFk ZXIuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiMgNjEgIi91c3IvaW5jbHVk ZS9zdGRsaWIuaCIgMwp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHF1b3Q7CiAgICAgICAg aW50IHJlbTsKfSBkaXZfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBsb25nIHF1b3Q7CiAg ICAgICAgbG9uZyByZW07Cn0gbGRpdl90OwojIDg5ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMK ZXh0ZXJuIGludCBfX21iX2N1cl9tYXg7CgoKCnZvaWQgYWJvcnQodm9pZCkgX19hdHRyaWJ1dGVf XygoX19ub3JldHVybl9fKSk7CmludCBhYnMoaW50KSBfX2F0dHJpYnV0ZV9fKChfX2NvbnN0X18p KTsKaW50IGF0ZXhpdCh2b2lkICgqKSh2b2lkKSk7CmRvdWJsZSBhdG9mKGNvbnN0IGNoYXIgKik7 CmludCBhdG9pKGNvbnN0IGNoYXIgKik7CmxvbmcgYXRvbChjb25zdCBjaGFyICopOwp2b2lkICpi c2VhcmNoKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QsCiAgICAgICAgICAgIHNp emVfdCwgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwp2b2lkICpjYWxsb2Mo c2l6ZV90LCBzaXplX3QpOwpkaXZfdCBkaXYoaW50LCBpbnQpIF9fYXR0cmlidXRlX18oKF9fY29u c3RfXykpOwp2b2lkIGV4aXQoaW50KSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKdm9p ZCBmcmVlKHZvaWQgKik7CmNoYXIgKmdldGVudihjb25zdCBjaGFyICopOwpsb25nIGxhYnMobG9u ZykgX19hdHRyaWJ1dGVfXygoX19jb25zdF9fKSk7CmxkaXZfdCBsZGl2KGxvbmcsIGxvbmcpIF9f YXR0cmlidXRlX18oKF9fY29uc3RfXykpOwp2b2lkICptYWxsb2Moc2l6ZV90KTsKdm9pZCBxc29y dCh2b2lkICosIHNpemVfdCwgc2l6ZV90LAogICAgICAgICAgICBpbnQgKCopKGNvbnN0IHZvaWQg KiwgY29uc3Qgdm9pZCAqKSk7CmludCByYW5kKHZvaWQpOwp2b2lkICpyZWFsbG9jKHZvaWQgKiwg c2l6ZV90KTsKdm9pZCBzcmFuZCh1bnNpZ25lZCk7CmRvdWJsZSBzdHJ0b2QoY29uc3QgY2hhciAq LCBjaGFyICoqKTsKbG9uZyBzdHJ0b2woY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwp1bnNp Z25lZCBsb25nCiAgICAgICAgIHN0cnRvdWwoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwpp bnQgc3lzdGVtKGNvbnN0IGNoYXIgKik7CgppbnQgbWJsZW4oY29uc3QgY2hhciAqLCBzaXplX3Qp OwpzaXplX3QgbWJzdG93Y3Mod2NoYXJfdCAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmludCB3 Y3RvbWIoY2hhciAqLCB3Y2hhcl90KTsKaW50IG1idG93Yyh3Y2hhcl90ICosIGNvbnN0IGNoYXIg Kiwgc2l6ZV90KTsKc2l6ZV90IHdjc3RvbWJzKGNoYXIgKiwgY29uc3Qgd2NoYXJfdCAqLCBzaXpl X3QpOwoKCmV4dGVybiBjb25zdCBjaGFyICpfbWFsbG9jX29wdGlvbnM7CmV4dGVybiB2b2lkICgq X21hbGxvY19tZXNzYWdlKShjb25zdCBjaGFyICpwMSwgY29uc3QgY2hhciAqcDIsIGNvbnN0IGNo YXIgKnAzLCBjb25zdCBjaGFyICpwNCk7CgppbnQgcHV0ZW52KGNvbnN0IGNoYXIgKik7CmludCBz ZXRlbnYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7Cgpkb3VibGUgZHJhbmQ0OCh2 b2lkKTsKZG91YmxlIGVyYW5kNDgodW5zaWduZWQgc2hvcnRbM10pOwpsb25nIGpyYW5kNDgodW5z aWduZWQgc2hvcnRbM10pOwp2b2lkIGxjb25nNDgodW5zaWduZWQgc2hvcnRbN10pOwpsb25nIGxy YW5kNDgodm9pZCk7CmxvbmcgbXJhbmQ0OCh2b2lkKTsKbG9uZyBucmFuZDQ4KHVuc2lnbmVkIHNo b3J0WzNdKTsKdW5zaWduZWQgc2hvcnQKICAgICAgICAqc2VlZDQ4KHVuc2lnbmVkIHNob3J0WzNd KTsKdm9pZCBzcmFuZDQ4KGxvbmcpOwoKdm9pZCAqYWxsb2NhKHNpemVfdCk7CgpfX3VpbnQzMl90 CiAgICAgICAgIGFyYzRyYW5kb20odm9pZCk7CnZvaWQgYXJjNHJhbmRvbV9hZGRyYW5kb20odW5z aWduZWQgY2hhciAqZGF0LCBpbnQgZGF0bGVuKTsKdm9pZCBhcmM0cmFuZG9tX3N0aXIodm9pZCk7 CgoKCgpjaGFyICpnZXRic2l6ZShpbnQgKiwgbG9uZyAqKTsKY2hhciAqY2dldGNhcChjaGFyICos IGNvbnN0IGNoYXIgKiwgaW50KTsKaW50IGNnZXRjbG9zZSh2b2lkKTsKaW50IGNnZXRlbnQoY2hh ciAqKiwgY2hhciAqKiwgY29uc3QgY2hhciAqKTsKaW50IGNnZXRmaXJzdChjaGFyICoqLCBjaGFy ICoqKTsKaW50IGNnZXRtYXRjaChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCBjZ2V0 bmV4dChjaGFyICoqLCBjaGFyICoqKTsKaW50IGNnZXRudW0oY2hhciAqLCBjb25zdCBjaGFyICos IGxvbmcgKik7CmludCBjZ2V0c2V0KGNvbnN0IGNoYXIgKik7CmludCBjZ2V0c3RyKGNoYXIgKiwg Y29uc3QgY2hhciAqLCBjaGFyICoqKTsKaW50IGNnZXR1c3RyKGNoYXIgKiwgY29uc3QgY2hhciAq LCBjaGFyICoqKTsKCmludCBkYWVtb24oaW50LCBpbnQpOwpjaGFyICpkZXZuYW1lKGludCwgaW50 KTsKaW50IGdldGxvYWRhdmcoZG91YmxlIFtdLCBpbnQpOwpjb25zdCBjaGFyICoKICAgICAgICAg Z2V0cHJvZ25hbWUodm9pZCk7CgppbnQgaGVhcHNvcnQodm9pZCAqLCBzaXplX3QsIHNpemVfdCwg aW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwpjaGFyICppbml0c3RhdGUodW5z aWduZWQgbG9uZywgY2hhciAqLCBsb25nKTsKCgoKCgppbnQgbWVyZ2Vzb3J0KHZvaWQgKiwgc2l6 ZV90LCBzaXplX3QsIGludCAoKikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKaW50IHJh ZGl4c29ydChjb25zdCB1bnNpZ25lZCBjaGFyICoqLCBpbnQsIGNvbnN0IHVuc2lnbmVkIGNoYXIg KiwKICAgICAgICAgICAgdW5zaWduZWQpOwppbnQgc3JhZGl4c29ydChjb25zdCB1bnNpZ25lZCBj aGFyICoqLCBpbnQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgdW5zaWduZWQp OwppbnQgcmFuZF9yKHVuc2lnbmVkICopOwpsb25nIHJhbmRvbSh2b2lkKTsKdm9pZCAqcmVhbGxv Y2Yodm9pZCAqLCBzaXplX3QpOwpjaGFyICpyZWFscGF0aChjb25zdCBjaGFyICosIGNoYXIgcmVz b2x2ZWRfcGF0aFtdKTsKdm9pZCBzZXRwcm9nbmFtZShjb25zdCBjaGFyICopOwpjaGFyICpzZXRz dGF0ZShjaGFyICopOwp2b2lkIHNyYW5kZGV2KHZvaWQpOwp2b2lkIHNyYW5kb20odW5zaWduZWQg bG9uZyk7CnZvaWQgc3JhbmRvbWRldih2b2lkKTsKCgoKCl9faW50NjRfdCBzdHJ0b3EoY29uc3Qg Y2hhciAqLCBjaGFyICoqLCBpbnQpOwoKCgoKX191aW50NjRfdAogICAgICAgICBzdHJ0b3VxKGNv bnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKdm9pZCB1bnNldGVudihjb25zdCBjaGFyICopOwoK CiMgNjEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy9nbGhlYWRlci5oIiAyCiMgMSAiL3Vz ci9pbmNsdWRlL3N0ZGlvLmgiIDEgMwojIDU1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBl ZGVmIF9faW50NjRfdCBmcG9zX3Q7CiMgNjYgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCnN0cnVj dCBfX3NidWYgewogICAgICAgIHVuc2lnbmVkIGNoYXIgKl9iYXNlOwogICAgICAgIGludCBfc2l6 ZTsKfTsKCgpzdHJ1Y3QgX19zRklMRVg7CiMgMTAwICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwp0 eXBlZGVmIHN0cnVjdCBfX3NGSUxFIHsKICAgICAgICB1bnNpZ25lZCBjaGFyICpfcDsKICAgICAg ICBpbnQgX3I7CiAgICAgICAgaW50IF93OwogICAgICAgIHNob3J0IF9mbGFnczsKICAgICAgICBz aG9ydCBfZmlsZTsKICAgICAgICBzdHJ1Y3QgX19zYnVmIF9iZjsKICAgICAgICBpbnQgX2xiZnNp emU7CgoKICAgICAgICB2b2lkICpfY29va2llOwogICAgICAgIGludCAoKl9jbG9zZSkodm9pZCAq KTsKICAgICAgICBpbnQgKCpfcmVhZCkodm9pZCAqLCBjaGFyICosIGludCk7CiAgICAgICAgZnBv c190ICgqX3NlZWspKHZvaWQgKiwgZnBvc190LCBpbnQpOwogICAgICAgIGludCAoKl93cml0ZSko dm9pZCAqLCBjb25zdCBjaGFyICosIGludCk7CgoKICAgICAgICBzdHJ1Y3QgX19zYnVmIF91YjsK ICAgICAgICBzdHJ1Y3QgX19zRklMRVggKl9leHRyYTsKICAgICAgICBpbnQgX3VyOwoKCiAgICAg ICAgdW5zaWduZWQgY2hhciBfdWJ1ZlszXTsKICAgICAgICB1bnNpZ25lZCBjaGFyIF9uYnVmWzFd OwoKCiAgICAgICAgc3RydWN0IF9fc2J1ZiBfbGI7CgoKICAgICAgICBpbnQgX2Jsa3NpemU7CiAg ICAgICAgZnBvc190IF9vZmZzZXQ7Cn0gRklMRTsKCgpleHRlcm4gRklMRSBfX3NGW107CmV4dGVy biBGSUxFICpfX3N0ZGlucDsKZXh0ZXJuIEZJTEUgKl9fc3Rkb3V0cDsKZXh0ZXJuIEZJTEUgKl9f c3RkZXJycDsKCiMgMjE0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoKdm9pZCBjbGVhcmVycihG SUxFICopOwppbnQgZmNsb3NlKEZJTEUgKik7CmludCBmZW9mKEZJTEUgKik7CmludCBmZXJyb3Io RklMRSAqKTsKaW50IGZmbHVzaChGSUxFICopOwppbnQgZmdldGMoRklMRSAqKTsKaW50IGZnZXRw b3MoRklMRSAqLCBmcG9zX3QgKik7CmNoYXIgKmZnZXRzKGNoYXIgKiwgaW50LCBGSUxFICopOwpG SUxFICpmb3Blbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCBmcHJpbnRmKEZJTEUg KiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgZnB1dGMoaW50LCBGSUxFICopOwppbnQgZnB1dHMo Y29uc3QgY2hhciAqLCBGSUxFICopOwpzaXplX3QgZnJlYWQodm9pZCAqLCBzaXplX3QsIHNpemVf dCwgRklMRSAqKTsKRklMRSAqZnJlb3Blbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgRklM RSAqKTsKaW50IGZzY2FuZihGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IGZzZWVrKEZJ TEUgKiwgbG9uZywgaW50KTsKaW50IGZzZXRwb3MoRklMRSAqLCBjb25zdCBmcG9zX3QgKik7Cmxv bmcgZnRlbGwoRklMRSAqKTsKc2l6ZV90IGZ3cml0ZShjb25zdCB2b2lkICosIHNpemVfdCwgc2l6 ZV90LCBGSUxFICopOwppbnQgZ2V0YyhGSUxFICopOwppbnQgZ2V0Y2hhcih2b2lkKTsKY2hhciAq Z2V0cyhjaGFyICopOwoKZXh0ZXJuIGNvbnN0IGludCBzeXNfbmVycjsKZXh0ZXJuIGNvbnN0IGNo YXIgKmNvbnN0IHN5c19lcnJsaXN0W107Cgp2b2lkIHBlcnJvcihjb25zdCBjaGFyICopOwppbnQg cHJpbnRmKGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IHB1dGMoaW50LCBGSUxFICopOwppbnQgcHV0 Y2hhcihpbnQpOwppbnQgcHV0cyhjb25zdCBjaGFyICopOwppbnQgcmVtb3ZlKGNvbnN0IGNoYXIg Kik7CmludCByZW5hbWUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwp2b2lkIHJld2luZChG SUxFICopOwppbnQgc2NhbmYoY29uc3QgY2hhciAqLCAuLi4pOwp2b2lkIHNldGJ1ZihGSUxFICos IGNoYXIgKik7CmludCBzZXR2YnVmKEZJTEUgKiwgY2hhciAqLCBpbnQsIHNpemVfdCk7CmludCBz cHJpbnRmKGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgc3NjYW5mKGNvbnN0IGNoYXIg KiwgY29uc3QgY2hhciAqLCAuLi4pOwpGSUxFICp0bXBmaWxlKHZvaWQpOwpjaGFyICp0bXBuYW0o Y2hhciAqKTsKaW50IHVuZ2V0YyhpbnQsIEZJTEUgKik7CmludCB2ZnByaW50ZihGSUxFICosIGNv bnN0IGNoYXIgKiwgX19idWlsdGluX3ZhX2xpc3QpOwppbnQgdnByaW50Zihjb25zdCBjaGFyICos IF9fYnVpbHRpbl92YV9saXN0KTsKaW50IHZzcHJpbnRmKGNoYXIgKiwgY29uc3QgY2hhciAqLCBf X2J1aWx0aW5fdmFfbGlzdCk7CgojIDI3MSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCmNoYXIg KmN0ZXJtaWQoY2hhciAqKTsKRklMRSAqZmRvcGVuKGludCwgY29uc3QgY2hhciAqKTsKaW50IGZp bGVubyhGSUxFICopOwppbnQgZnRyeWxvY2tmaWxlKEZJTEUgKik7CnZvaWQgZmxvY2tmaWxlKEZJ TEUgKik7CnZvaWQgZnVubG9ja2ZpbGUoRklMRSAqKTsKCgoKCgoKCgoKCmludCBmdHJ1bmNhdGUo aW50LCBfX2ludDY0X3QpOwoKCgpfX2ludDY0X3QgbHNlZWsoaW50LCBfX2ludDY0X3QsIGludCk7 CgoKCnZvaWQgKm1tYXAodm9pZCAqLCBzaXplX3QsIGludCwgaW50LCBpbnQsIF9faW50NjRfdCk7 CgoKCmludCB0cnVuY2F0ZShjb25zdCBjaGFyICosIF9faW50NjRfdCk7CgoKCgoKCgoKCmludCBh c3ByaW50ZihjaGFyICoqLCBjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXygoX19mb3Jt YXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKY2hhciAqY3Rlcm1pZF9yKGNoYXIgKik7CmNoYXIg KmZnZXRsbihGSUxFICosIHNpemVfdCAqKTsKCgoKCgpjb25zdCBjaGFyICpmbXRjaGVjayhjb25z dCBjaGFyICosIGNvbnN0IGNoYXIgKikgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfYXJnX18oMikp KTsKaW50IGZwdXJnZShGSUxFICopOwppbnQgZnNlZWtvKEZJTEUgKiwgX19pbnQ2NF90LCBpbnQp OwpfX2ludDY0X3QgZnRlbGxvKEZJTEUgKik7CmludCBnZXR3KEZJTEUgKik7CmludCBwY2xvc2Uo RklMRSAqKTsKRklMRSAqcG9wZW4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwppbnQgcHV0 dyhpbnQsIEZJTEUgKik7CnZvaWQgc2V0YnVmZmVyKEZJTEUgKiwgY2hhciAqLCBpbnQpOwppbnQg c2V0bGluZWJ1ZihGSUxFICopOwpjaGFyICp0ZW1wbmFtKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh ciAqKTsKaW50IHNucHJpbnRmKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIC4uLikgX19h dHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgNCkpKTsKaW50IHZhc3ByaW50 ZihjaGFyICoqLCBjb25zdCBjaGFyICosIF9fYnVpbHRpbl92YV9saXN0KQogICAgICAgICAgICBf X2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpOwppbnQgdnNucHJp bnRmKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIF9fYnVpbHRpbl92YV9saXN0KQogICAg ICAgICAgICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwpp bnQgdnNjYW5mKGNvbnN0IGNoYXIgKiwgX19idWlsdGluX3ZhX2xpc3QpIF9fYXR0cmlidXRlX18o KF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMSwgMCkpKTsKaW50IHZzc2NhbmYoY29uc3QgY2hhciAq LCBjb25zdCBjaGFyICosIF9fYnVpbHRpbl92YV9saXN0KQogICAgICAgICAgICBfX2F0dHJpYnV0 ZV9fKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7CgojIDM0OSAiL3Vzci9pbmNsdWRl L3N0ZGlvLmgiIDMKCkZJTEUgKmZ1bm9wZW4oY29uc3Qgdm9pZCAqLAogICAgICAgICAgICBpbnQg KCopKHZvaWQgKiwgY2hhciAqLCBpbnQpLAogICAgICAgICAgICBpbnQgKCopKHZvaWQgKiwgY29u c3QgY2hhciAqLCBpbnQpLAogICAgICAgICAgICBmcG9zX3QgKCopKHZvaWQgKiwgZnBvc190LCBp bnQpLAogICAgICAgICAgICBpbnQgKCopKHZvaWQgKikpOwoKCgoKCgoKCgppbnQgX19zcmdldChG SUxFICopOwppbnQgX192ZnNjYW5mKEZJTEUgKiwgY29uc3QgY2hhciAqLCBfX2J1aWx0aW5fdmFf bGlzdCk7CmludCBfX3N2ZnNjYW5mKEZJTEUgKiwgY29uc3QgY2hhciAqLCBfX2J1aWx0aW5fdmFf bGlzdCk7CmludCBfX3N3YnVmKGludCwgRklMRSAqKTsKCgoKCgoKCgpzdGF0aWMgX19pbmxpbmUg aW50IF9fc3B1dGMoaW50IF9jLCBGSUxFICpfcCkgewogICAgICAgIGlmICgtLV9wLT5fdyA+PSAw IHx8IChfcC0+X3cgPj0gX3AtPl9sYmZzaXplICYmIChjaGFyKV9jICE9ICdcbicpKQogICAgICAg ICAgICAgICAgcmV0dXJuICgqX3AtPl9wKysgPSBfYyk7CiAgICAgICAgZWxzZQogICAgICAgICAg ICAgICAgcmV0dXJuIChfX3N3YnVmKF9jLCBfcCkpOwp9CiMgNjIgIi4uLy4uLy4uLy4uL2V4dHJh cy9NZXNhL3NyYy9nbGhlYWRlci5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAxIDMK IyA0OCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZ3Mu aCIgMSAzCiMgNDAgIi91c3IvaW5jbHVkZS9zdHJpbmdzLmgiIDMKCmludCBiY21wKGNvbnN0IHZv aWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwp2b2lkIGJjb3B5KGNvbnN0IHZvaWQgKiwgdm9p ZCAqLCBzaXplX3QpOwp2b2lkIGJ6ZXJvKHZvaWQgKiwgc2l6ZV90KTsKaW50IGZmcyhpbnQpOwpj aGFyICppbmRleChjb25zdCBjaGFyICosIGludCk7CmNoYXIgKnJpbmRleChjb25zdCBjaGFyICos IGludCk7CmludCBzdHJjYXNlY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKaW50IHN0 cm5jYXNlY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwoKIyA0OSAiL3Vz ci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKIyA2MCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCgp2 b2lkICptZW1jaHIoY29uc3Qgdm9pZCAqLCBpbnQsIHNpemVfdCk7CmludCBtZW1jbXAoY29uc3Qg dm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7CnZvaWQgKm1lbWNweSh2b2lkICogLCBjb25z dCB2b2lkICogLCBzaXplX3QpOwp2b2lkICptZW1tb3ZlKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBz aXplX3QpOwp2b2lkICptZW1zZXQodm9pZCAqLCBpbnQsIHNpemVfdCk7CmNoYXIgKnN0cmNhdChj aGFyICogLCBjb25zdCBjaGFyICogKTsKY2hhciAqc3RyY2hyKGNvbnN0IGNoYXIgKiwgaW50KTsK aW50IHN0cmNtcChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCBzdHJjb2xsKGNvbnN0 IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqc3RyY3B5KGNoYXIgKiAsIGNvbnN0IGNoYXIg KiApOwpzaXplX3Qgc3RyY3Nwbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmNoYXIgKnN0 cmVycm9yKGludCk7CnNpemVfdCBzdHJsZW4oY29uc3QgY2hhciAqKTsKY2hhciAqc3RybmNhdChj aGFyICogLCBjb25zdCBjaGFyICogLCBzaXplX3QpOwppbnQgc3RybmNtcChjb25zdCBjaGFyICos IGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKY2hhciAqc3RybmNweShjaGFyICogLCBjb25zdCBjaGFy ICogLCBzaXplX3QpOwpjaGFyICpzdHJwYnJrKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsK Y2hhciAqc3RycmNocihjb25zdCBjaGFyICosIGludCk7CnNpemVfdCBzdHJzcG4oY29uc3QgY2hh ciAqLCBjb25zdCBjaGFyICopOwpjaGFyICpzdHJzdHIoY29uc3QgY2hhciAqLCBjb25zdCBjaGFy ICopOwpjaGFyICpzdHJ0b2soY2hhciAqICwgY29uc3QgY2hhciAqICk7CnNpemVfdCBzdHJ4ZnJt KGNoYXIgKiAsIGNvbnN0IGNoYXIgKiAsIHNpemVfdCk7CgoKdm9pZCAqbWVtY2NweSh2b2lkICog LCBjb25zdCB2b2lkICogLCBpbnQsIHNpemVfdCk7CmNoYXIgKnN0cmR1cChjb25zdCBjaGFyICop OwpjaGFyICpzdHJ0b2tfcihjaGFyICosIGNvbnN0IGNoYXIgKiwgY2hhciAqKik7CgoKCmludCBz dHJlcnJvcl9yKGludCwgY2hhciAqLCBzaXplX3QpOwoKCgpjaGFyICpzdHJjYXNlc3RyKGNvbnN0 IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKc2l6ZV90IHN0cmxjYXQoY2hhciAqLCBjb25zdCBjaGFy ICosIHNpemVfdCk7CnNpemVfdCBzdHJsY3B5KGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3Qp Owp2b2lkIHN0cm1vZGUoaW50LCBjaGFyICopOwpjaGFyICpzdHJuc3RyKGNvbnN0IGNoYXIgKiwg Y29uc3QgY2hhciAqLCBzaXplX3QpOwpjaGFyICpzdHJzZXAoY2hhciAqKiwgY29uc3QgY2hhciAq KTsKY2hhciAqc3Ryc2lnbmFsKGludCk7CnZvaWQgc3dhYihjb25zdCB2b2lkICosIHZvaWQgKiwg c2l6ZV90KTsKCgojIDYzICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvZ2xoZWFkZXIuaCIg MgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvZmxvYXQuaCIgMSAzCiMgNjggIi4uLy4uLy4uLy4uL2V4 dHJhcy9NZXNhL3NyYy9nbGhlYWRlci5oIiAyCiMgMTY1ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVz YS9zcmMvZ2xoZWFkZXIuaCIKIyAxICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2wu aCIgMQojIDk3ICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2wuaCIKdHlwZWRlZiB1 bnNpZ25lZCBpbnQgR0xlbnVtOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgR0xib29sZWFuOwp0eXBl ZGVmIHVuc2lnbmVkIGludCBHTGJpdGZpZWxkOwp0eXBlZGVmIHZvaWQgR0x2b2lkOwp0eXBlZGVm IHNpZ25lZCBjaGFyIEdMYnl0ZTsKdHlwZWRlZiBzaG9ydCBHTHNob3J0Owp0eXBlZGVmIGludCBH TGludDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIEdMdWJ5dGU7CnR5cGVkZWYgdW5zaWduZWQgc2hv cnQgR0x1c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IEdMdWludDsKdHlwZWRlZiBpbnQgR0xz aXplaTsKdHlwZWRlZiBmbG9hdCBHTGZsb2F0Owp0eXBlZGVmIGZsb2F0IEdMY2xhbXBmOwp0eXBl ZGVmIGRvdWJsZSBHTGRvdWJsZTsKdHlwZWRlZiBkb3VibGUgR0xjbGFtcGQ7CiMgODY4ICIuLi8u Li8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2wuaCIKZXh0ZXJuIHZvaWQgZ2xDbGVhckluZGV4 KCBHTGZsb2F0IGMgKTsKCmV4dGVybiB2b2lkIGdsQ2xlYXJDb2xvciggR0xjbGFtcGYgcmVkLAog ICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2xhbXBmIGdyZWVuLAogICAgICAgICAgICAgICAg ICAgICAgICAgIEdMY2xhbXBmIGJsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjbGFt cGYgYWxwaGEgKTsKCmV4dGVybiB2b2lkIGdsQ2xlYXIoIEdMYml0ZmllbGQgbWFzayApOwoKZXh0 ZXJuIHZvaWQgZ2xJbmRleE1hc2soIEdMdWludCBtYXNrICk7CgpleHRlcm4gdm9pZCBnbENvbG9y TWFzayggR0xib29sZWFuIHJlZCwgR0xib29sZWFuIGdyZWVuLAogICAgICAgICAgICAgICAgICAg ICAgICAgR0xib29sZWFuIGJsdWUsIEdMYm9vbGVhbiBhbHBoYSApOwoKZXh0ZXJuIHZvaWQgZ2xB bHBoYUZ1bmMoIEdMZW51bSBmdW5jLCBHTGNsYW1wZiByZWYgKTsKCmV4dGVybiB2b2lkIGdsQmxl bmRGdW5jKCBHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IgKTsKCmV4dGVybiB2b2lkIGds TG9naWNPcCggR0xlbnVtIG9wY29kZSApOwoKZXh0ZXJuIHZvaWQgZ2xDdWxsRmFjZSggR0xlbnVt IG1vZGUgKTsKCmV4dGVybiB2b2lkIGdsRnJvbnRGYWNlKCBHTGVudW0gbW9kZSApOwoKZXh0ZXJu IHZvaWQgZ2xQb2ludFNpemUoIEdMZmxvYXQgc2l6ZSApOwoKZXh0ZXJuIHZvaWQgZ2xMaW5lV2lk dGgoIEdMZmxvYXQgd2lkdGggKTsKCmV4dGVybiB2b2lkIGdsTGluZVN0aXBwbGUoIEdMaW50IGZh Y3RvciwgR0x1c2hvcnQgcGF0dGVybiApOwoKZXh0ZXJuIHZvaWQgZ2xQb2x5Z29uTW9kZSggR0xl bnVtIGZhY2UsIEdMZW51bSBtb2RlICk7CgpleHRlcm4gdm9pZCBnbFBvbHlnb25PZmZzZXQoIEdM ZmxvYXQgZmFjdG9yLCBHTGZsb2F0IHVuaXRzICk7CgpleHRlcm4gdm9pZCBnbFBvbHlnb25TdGlw cGxlKCBjb25zdCBHTHVieXRlICptYXNrICk7CgpleHRlcm4gdm9pZCBnbEdldFBvbHlnb25TdGlw cGxlKCBHTHVieXRlICptYXNrICk7CgpleHRlcm4gdm9pZCBnbEVkZ2VGbGFnKCBHTGJvb2xlYW4g ZmxhZyApOwoKZXh0ZXJuIHZvaWQgZ2xFZGdlRmxhZ3YoIGNvbnN0IEdMYm9vbGVhbiAqZmxhZyAp OwoKZXh0ZXJuIHZvaWQgZ2xTY2lzc29yKCBHTGludCB4LCBHTGludCB5LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKCmV4 dGVybiB2b2lkIGdsQ2xpcFBsYW5lKCBHTGVudW0gcGxhbmUsIGNvbnN0IEdMZG91YmxlICplcXVh dGlvbiApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRDbGlwUGxhbmUoIEdMZW51bSBwbGFuZSwgR0xkb3Vi bGUgKmVxdWF0aW9uICk7CgpleHRlcm4gdm9pZCBnbERyYXdCdWZmZXIoIEdMZW51bSBtb2RlICk7 CgpleHRlcm4gdm9pZCBnbFJlYWRCdWZmZXIoIEdMZW51bSBtb2RlICk7CgpleHRlcm4gdm9pZCBn bEVuYWJsZSggR0xlbnVtIGNhcCApOwoKZXh0ZXJuIHZvaWQgZ2xEaXNhYmxlKCBHTGVudW0gY2Fw ICk7CgpleHRlcm4gR0xib29sZWFuIGdsSXNFbmFibGVkKCBHTGVudW0gY2FwICk7CgoKZXh0ZXJu IHZvaWQgZ2xFbmFibGVDbGllbnRTdGF0ZSggR0xlbnVtIGNhcCApOwoKZXh0ZXJuIHZvaWQgZ2xE aXNhYmxlQ2xpZW50U3RhdGUoIEdMZW51bSBjYXAgKTsKCgpleHRlcm4gdm9pZCBnbEdldEJvb2xl YW52KCBHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEdl dERvdWJsZXYoIEdMZW51bSBwbmFtZSwgR0xkb3VibGUgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQg Z2xHZXRGbG9hdHYoIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zICk7CgpleHRlcm4gdm9p ZCBnbEdldEludGVnZXJ2KCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMgKTsKCgpleHRlcm4g dm9pZCBnbFB1c2hBdHRyaWIoIEdMYml0ZmllbGQgbWFzayApOwoKZXh0ZXJuIHZvaWQgZ2xQb3BB dHRyaWIoIHZvaWQgKTsKCgpleHRlcm4gdm9pZCBnbFB1c2hDbGllbnRBdHRyaWIoIEdMYml0Zmll bGQgbWFzayApOwoKZXh0ZXJuIHZvaWQgZ2xQb3BDbGllbnRBdHRyaWIoIHZvaWQgKTsKCgpleHRl cm4gR0xpbnQgZ2xSZW5kZXJNb2RlKCBHTGVudW0gbW9kZSApOwoKZXh0ZXJuIEdMZW51bSBnbEdl dEVycm9yKCB2b2lkICk7CgpleHRlcm4gY29uc3QgR0x1Ynl0ZSogZ2xHZXRTdHJpbmcoIEdMZW51 bSBuYW1lICk7CgpleHRlcm4gdm9pZCBnbEZpbmlzaCggdm9pZCApOwoKZXh0ZXJuIHZvaWQgZ2xG bHVzaCggdm9pZCApOwoKZXh0ZXJuIHZvaWQgZ2xIaW50KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0g bW9kZSApOwoKCgoKCgoKZXh0ZXJuIHZvaWQgZ2xDbGVhckRlcHRoKCBHTGNsYW1wZCBkZXB0aCAp OwoKZXh0ZXJuIHZvaWQgZ2xEZXB0aEZ1bmMoIEdMZW51bSBmdW5jICk7CgpleHRlcm4gdm9pZCBn bERlcHRoTWFzayggR0xib29sZWFuIGZsYWcgKTsKCmV4dGVybiB2b2lkIGdsRGVwdGhSYW5nZSgg R0xjbGFtcGQgbmVhcl92YWwsIEdMY2xhbXBkIGZhcl92YWwgKTsKCgoKCgoKZXh0ZXJuIHZvaWQg Z2xDbGVhckFjY3VtKCBHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEgKTsKCmV4 dGVybiB2b2lkIGdsQWNjdW0oIEdMZW51bSBvcCwgR0xmbG9hdCB2YWx1ZSApOwoKCgoKCgoKZXh0 ZXJuIHZvaWQgZ2xNYXRyaXhNb2RlKCBHTGVudW0gbW9kZSApOwoKZXh0ZXJuIHZvaWQgZ2xPcnRo byggR0xkb3VibGUgbGVmdCwgR0xkb3VibGUgcmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMZG91YmxlIGJvdHRvbSwgR0xkb3VibGUgdG9wLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHTGRvdWJsZSBuZWFyX3ZhbCwgR0xkb3VibGUgZmFyX3ZhbCApOwoK ZXh0ZXJuIHZvaWQgZ2xGcnVzdHVtKCBHTGRvdWJsZSBsZWZ0LCBHTGRvdWJsZSByaWdodCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSBib3R0b20sIEdMZG91Ymxl IHRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSBuZWFyX3Zh bCwgR0xkb3VibGUgZmFyX3ZhbCApOwoKZXh0ZXJuIHZvaWQgZ2xWaWV3cG9ydCggR0xpbnQgeCwg R0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0 aCwgR0xzaXplaSBoZWlnaHQgKTsKCmV4dGVybiB2b2lkIGdsUHVzaE1hdHJpeCggdm9pZCApOwoK ZXh0ZXJuIHZvaWQgZ2xQb3BNYXRyaXgoIHZvaWQgKTsKCmV4dGVybiB2b2lkIGdsTG9hZElkZW50 aXR5KCB2b2lkICk7CgpleHRlcm4gdm9pZCBnbExvYWRNYXRyaXhkKCBjb25zdCBHTGRvdWJsZSAq bSApOwpleHRlcm4gdm9pZCBnbExvYWRNYXRyaXhmKCBjb25zdCBHTGZsb2F0ICptICk7CgpleHRl cm4gdm9pZCBnbE11bHRNYXRyaXhkKCBjb25zdCBHTGRvdWJsZSAqbSApOwpleHRlcm4gdm9pZCBn bE11bHRNYXRyaXhmKCBjb25zdCBHTGZsb2F0ICptICk7CgpleHRlcm4gdm9pZCBnbFJvdGF0ZWQo IEdMZG91YmxlIGFuZ2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91 YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHogKTsKZXh0ZXJuIHZvaWQgZ2xSb3RhdGVmKCBH TGZsb2F0IGFuZ2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg eCwgR0xmbG9hdCB5LCBHTGZsb2F0IHogKTsKCmV4dGVybiB2b2lkIGdsU2NhbGVkKCBHTGRvdWJs ZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6ICk7CmV4dGVybiB2b2lkIGdsU2NhbGVmKCBHTGZs b2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6ICk7CgpleHRlcm4gdm9pZCBnbFRyYW5zbGF0ZWQo IEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHogKTsKZXh0ZXJuIHZvaWQgZ2xUcmFu c2xhdGVmKCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6ICk7CgoKCgoKCgpleHRlcm4g R0xib29sZWFuIGdsSXNMaXN0KCBHTHVpbnQgbGlzdCApOwoKZXh0ZXJuIHZvaWQgZ2xEZWxldGVM aXN0cyggR0x1aW50IGxpc3QsIEdMc2l6ZWkgcmFuZ2UgKTsKCmV4dGVybiBHTHVpbnQgZ2xHZW5M aXN0cyggR0xzaXplaSByYW5nZSApOwoKZXh0ZXJuIHZvaWQgZ2xOZXdMaXN0KCBHTHVpbnQgbGlz dCwgR0xlbnVtIG1vZGUgKTsKCmV4dGVybiB2b2lkIGdsRW5kTGlzdCggdm9pZCApOwoKZXh0ZXJu IHZvaWQgZ2xDYWxsTGlzdCggR0x1aW50IGxpc3QgKTsKCmV4dGVybiB2b2lkIGdsQ2FsbExpc3Rz KCBHTHNpemVpIG4sIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgR0x2b2lkICpsaXN0cyApOwoKZXh0ZXJuIHZvaWQgZ2xMaXN0QmFzZSggR0x1 aW50IGJhc2UgKTsKCgoKCgoKCmV4dGVybiB2b2lkIGdsQmVnaW4oIEdMZW51bSBtb2RlICk7Cgpl eHRlcm4gdm9pZCBnbEVuZCggdm9pZCApOwoKCmV4dGVybiB2b2lkIGdsVmVydGV4MmQoIEdMZG91 YmxlIHgsIEdMZG91YmxlIHkgKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgyZiggR0xmbG9hdCB4LCBH TGZsb2F0IHkgKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgyaSggR0xpbnQgeCwgR0xpbnQgeSApOwpl eHRlcm4gdm9pZCBnbFZlcnRleDJzKCBHTHNob3J0IHgsIEdMc2hvcnQgeSApOwoKZXh0ZXJuIHZv aWQgZ2xWZXJ0ZXgzZCggR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiApOwpleHRl cm4gdm9pZCBnbFZlcnRleDNmKCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6ICk7CmV4 dGVybiB2b2lkIGdsVmVydGV4M2koIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHogKTsKZXh0ZXJu IHZvaWQgZ2xWZXJ0ZXgzcyggR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeiApOwoKZXh0 ZXJuIHZvaWQgZ2xWZXJ0ZXg0ZCggR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiwg R0xkb3VibGUgdyApOwpleHRlcm4gdm9pZCBnbFZlcnRleDRmKCBHTGZsb2F0IHgsIEdMZmxvYXQg eSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcgKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXg0aSggR0xpbnQg eCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyApOwpleHRlcm4gdm9pZCBnbFZlcnRleDRzKCBH THNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6LCBHTHNob3J0IHcgKTsKCmV4dGVybiB2b2lk IGdsVmVydGV4MmR2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gdm9pZCBnbFZlcnRleDJm diggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbFZlcnRleDJpdiggY29uc3QgR0xp bnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgyc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCmV4 dGVybiB2b2lkIGdsVmVydGV4M2R2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gdm9pZCBn bFZlcnRleDNmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbFZlcnRleDNpdigg Y29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXgzc3YoIGNvbnN0IEdMc2hvcnQg KnYgKTsKCmV4dGVybiB2b2lkIGdsVmVydGV4NGR2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRl cm4gdm9pZCBnbFZlcnRleDRmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbFZl cnRleDRpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xWZXJ0ZXg0c3YoIGNvbnN0 IEdMc2hvcnQgKnYgKTsKCgpleHRlcm4gdm9pZCBnbE5vcm1hbDNiKCBHTGJ5dGUgbngsIEdMYnl0 ZSBueSwgR0xieXRlIG56ICk7CmV4dGVybiB2b2lkIGdsTm9ybWFsM2QoIEdMZG91YmxlIG54LCBH TGRvdWJsZSBueSwgR0xkb3VibGUgbnogKTsKZXh0ZXJuIHZvaWQgZ2xOb3JtYWwzZiggR0xmbG9h dCBueCwgR0xmbG9hdCBueSwgR0xmbG9hdCBueiApOwpleHRlcm4gdm9pZCBnbE5vcm1hbDNpKCBH TGludCBueCwgR0xpbnQgbnksIEdMaW50IG56ICk7CmV4dGVybiB2b2lkIGdsTm9ybWFsM3MoIEdM c2hvcnQgbngsIEdMc2hvcnQgbnksIEdMc2hvcnQgbnogKTsKCmV4dGVybiB2b2lkIGdsTm9ybWFs M2J2KCBjb25zdCBHTGJ5dGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xOb3JtYWwzZHYoIGNvbnN0IEdM ZG91YmxlICp2ICk7CmV4dGVybiB2b2lkIGdsTm9ybWFsM2Z2KCBjb25zdCBHTGZsb2F0ICp2ICk7 CmV4dGVybiB2b2lkIGdsTm9ybWFsM2l2KCBjb25zdCBHTGludCAqdiApOwpleHRlcm4gdm9pZCBn bE5vcm1hbDNzdiggY29uc3QgR0xzaG9ydCAqdiApOwoKCmV4dGVybiB2b2lkIGdsSW5kZXhkKCBH TGRvdWJsZSBjICk7CmV4dGVybiB2b2lkIGdsSW5kZXhmKCBHTGZsb2F0IGMgKTsKZXh0ZXJuIHZv aWQgZ2xJbmRleGkoIEdMaW50IGMgKTsKZXh0ZXJuIHZvaWQgZ2xJbmRleHMoIEdMc2hvcnQgYyAp OwpleHRlcm4gdm9pZCBnbEluZGV4dWIoIEdMdWJ5dGUgYyApOwoKZXh0ZXJuIHZvaWQgZ2xJbmRl eGR2KCBjb25zdCBHTGRvdWJsZSAqYyApOwpleHRlcm4gdm9pZCBnbEluZGV4ZnYoIGNvbnN0IEdM ZmxvYXQgKmMgKTsKZXh0ZXJuIHZvaWQgZ2xJbmRleGl2KCBjb25zdCBHTGludCAqYyApOwpleHRl cm4gdm9pZCBnbEluZGV4c3YoIGNvbnN0IEdMc2hvcnQgKmMgKTsKZXh0ZXJuIHZvaWQgZ2xJbmRl eHVidiggY29uc3QgR0x1Ynl0ZSAqYyApOwoKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNiKCBHTGJ5dGUg cmVkLCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlICk7CmV4dGVybiB2b2lkIGdsQ29sb3IzZCgg R0xkb3VibGUgcmVkLCBHTGRvdWJsZSBncmVlbiwgR0xkb3VibGUgYmx1ZSApOwpleHRlcm4gdm9p ZCBnbENvbG9yM2YoIEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUgKTsK ZXh0ZXJuIHZvaWQgZ2xDb2xvcjNpKCBHTGludCByZWQsIEdMaW50IGdyZWVuLCBHTGludCBibHVl ICk7CmV4dGVybiB2b2lkIGdsQ29sb3IzcyggR0xzaG9ydCByZWQsIEdMc2hvcnQgZ3JlZW4sIEdM c2hvcnQgYmx1ZSApOwpleHRlcm4gdm9pZCBnbENvbG9yM3ViKCBHTHVieXRlIHJlZCwgR0x1Ynl0 ZSBncmVlbiwgR0x1Ynl0ZSBibHVlICk7CmV4dGVybiB2b2lkIGdsQ29sb3IzdWkoIEdMdWludCBy ZWQsIEdMdWludCBncmVlbiwgR0x1aW50IGJsdWUgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjN1cygg R0x1c2hvcnQgcmVkLCBHTHVzaG9ydCBncmVlbiwgR0x1c2hvcnQgYmx1ZSApOwoKZXh0ZXJuIHZv aWQgZ2xDb2xvcjRiKCBHTGJ5dGUgcmVkLCBHTGJ5dGUgZ3JlZW4sCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR0xieXRlIGJsdWUsIEdMYnl0ZSBhbHBoYSApOwpleHRlcm4gdm9p ZCBnbENvbG9yNGQoIEdMZG91YmxlIHJlZCwgR0xkb3VibGUgZ3JlZW4sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgYmx1ZSwgR0xkb3VibGUgYWxwaGEgKTsKZXh0 ZXJuIHZvaWQgZ2xDb2xvcjRmKCBHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEgKTsK ZXh0ZXJuIHZvaWQgZ2xDb2xvcjRpKCBHTGludCByZWQsIEdMaW50IGdyZWVuLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJsdWUsIEdMaW50IGFscGhhICk7CmV4dGVy biB2b2lkIGdsQ29sb3I0cyggR0xzaG9ydCByZWQsIEdMc2hvcnQgZ3JlZW4sCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaG9ydCBibHVlLCBHTHNob3J0IGFscGhhICk7CmV4 dGVybiB2b2lkIGdsQ29sb3I0dWIoIEdMdWJ5dGUgcmVkLCBHTHVieXRlIGdyZWVuLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVieXRlIGJsdWUsIEdMdWJ5dGUgYWxwaGEg KTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjR1aSggR0x1aW50IHJlZCwgR0x1aW50IGdyZWVuLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYmx1ZSwgR0x1aW50IGFscGhh ICk7CmV4dGVybiB2b2lkIGdsQ29sb3I0dXMoIEdMdXNob3J0IHJlZCwgR0x1c2hvcnQgZ3JlZW4s CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdXNob3J0IGJsdWUsIEdMdXNo b3J0IGFscGhhICk7CgoKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNidiggY29uc3QgR0xieXRlICp2ICk7 CmV4dGVybiB2b2lkIGdsQ29sb3IzZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVybiB2b2lk IGdsQ29sb3IzZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNpdigg Y29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjNzdiggY29uc3QgR0xzaG9ydCAq diApOwpleHRlcm4gdm9pZCBnbENvbG9yM3VidiggY29uc3QgR0x1Ynl0ZSAqdiApOwpleHRlcm4g dm9pZCBnbENvbG9yM3VpdiggY29uc3QgR0x1aW50ICp2ICk7CmV4dGVybiB2b2lkIGdsQ29sb3Iz dXN2KCBjb25zdCBHTHVzaG9ydCAqdiApOwoKZXh0ZXJuIHZvaWQgZ2xDb2xvcjRidiggY29uc3Qg R0xieXRlICp2ICk7CmV4dGVybiB2b2lkIGdsQ29sb3I0ZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7 CmV4dGVybiB2b2lkIGdsQ29sb3I0ZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuIHZvaWQg Z2xDb2xvcjRpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjRzdiggY29u c3QgR0xzaG9ydCAqdiApOwpleHRlcm4gdm9pZCBnbENvbG9yNHVidiggY29uc3QgR0x1Ynl0ZSAq diApOwpleHRlcm4gdm9pZCBnbENvbG9yNHVpdiggY29uc3QgR0x1aW50ICp2ICk7CmV4dGVybiB2 b2lkIGdsQ29sb3I0dXN2KCBjb25zdCBHTHVzaG9ydCAqdiApOwoKCmV4dGVybiB2b2lkIGdsVGV4 Q29vcmQxZCggR0xkb3VibGUgcyApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMWYoIEdMZmxvYXQg cyApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMWkoIEdMaW50IHMgKTsKZXh0ZXJuIHZvaWQgZ2xU ZXhDb29yZDFzKCBHTHNob3J0IHMgKTsKCmV4dGVybiB2b2lkIGdsVGV4Q29vcmQyZCggR0xkb3Vi bGUgcywgR0xkb3VibGUgdCApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMmYoIEdMZmxvYXQgcywg R0xmbG9hdCB0ICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQyaSggR0xpbnQgcywgR0xpbnQgdCAp OwpleHRlcm4gdm9pZCBnbFRleENvb3JkMnMoIEdMc2hvcnQgcywgR0xzaG9ydCB0ICk7CgpleHRl cm4gdm9pZCBnbFRleENvb3JkM2QoIEdMZG91YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91YmxlIHIg KTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDNmKCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9h dCByICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQzaSggR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQg ciApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkM3MoIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBHTHNo b3J0IHIgKTsKCmV4dGVybiB2b2lkIGdsVGV4Q29vcmQ0ZCggR0xkb3VibGUgcywgR0xkb3VibGUg dCwgR0xkb3VibGUgciwgR0xkb3VibGUgcSApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkNGYoIEdM ZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIsIEdMZmxvYXQgcSApOwpleHRlcm4gdm9pZCBn bFRleENvb3JkNGkoIEdMaW50IHMsIEdMaW50IHQsIEdMaW50IHIsIEdMaW50IHEgKTsKZXh0ZXJu IHZvaWQgZ2xUZXhDb29yZDRzKCBHTHNob3J0IHMsIEdMc2hvcnQgdCwgR0xzaG9ydCByLCBHTHNo b3J0IHEgKTsKCmV4dGVybiB2b2lkIGdsVGV4Q29vcmQxZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7 CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQxZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuIHZv aWQgZ2xUZXhDb29yZDFpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29y ZDFzdiggY29uc3QgR0xzaG9ydCAqdiApOwoKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJkdiggY29u c3QgR0xkb3VibGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJmdiggY29uc3QgR0xmbG9h dCAqdiApOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMml2KCBjb25zdCBHTGludCAqdiApOwpleHRl cm4gdm9pZCBnbFRleENvb3JkMnN2KCBjb25zdCBHTHNob3J0ICp2ICk7CgpleHRlcm4gdm9pZCBn bFRleENvb3JkM2R2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gdm9pZCBnbFRleENvb3Jk M2Z2KCBjb25zdCBHTGZsb2F0ICp2ICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQzaXYoIGNvbnN0 IEdMaW50ICp2ICk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQzc3YoIGNvbnN0IEdMc2hvcnQgKnYg KTsKCmV4dGVybiB2b2lkIGdsVGV4Q29vcmQ0ZHYoIGNvbnN0IEdMZG91YmxlICp2ICk7CmV4dGVy biB2b2lkIGdsVGV4Q29vcmQ0ZnYoIGNvbnN0IEdMZmxvYXQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xU ZXhDb29yZDRpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDRzdigg Y29uc3QgR0xzaG9ydCAqdiApOwoKCmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zMmQoIEdMZG91Ymxl IHgsIEdMZG91YmxlIHkgKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MyZiggR0xmbG9hdCB4LCBH TGZsb2F0IHkgKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MyaSggR0xpbnQgeCwgR0xpbnQgeSAp OwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczJzKCBHTHNob3J0IHgsIEdMc2hvcnQgeSApOwoKZXh0 ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MzZCggR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUg eiApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczNmKCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xm bG9hdCB6ICk7CmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zM2koIEdMaW50IHgsIEdMaW50IHksIEdM aW50IHogKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3MzcyggR0xzaG9ydCB4LCBHTHNob3J0IHks IEdMc2hvcnQgeiApOwoKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3M0ZCggR0xkb3VibGUgeCwgR0xk b3VibGUgeSwgR0xkb3VibGUgeiwgR0xkb3VibGUgdyApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBv czRmKCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcgKTsKZXh0ZXJu IHZvaWQgZ2xSYXN0ZXJQb3M0aSggR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyAp OwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczRzKCBHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9y dCB6LCBHTHNob3J0IHcgKTsKCmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zMmR2KCBjb25zdCBHTGRv dWJsZSAqdiApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczJmdiggY29uc3QgR0xmbG9hdCAqdiAp OwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczJpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZv aWQgZ2xSYXN0ZXJQb3Myc3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCmV4dGVybiB2b2lkIGdsUmFz dGVyUG9zM2R2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczNm diggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBnbFJhc3RlclBvczNpdiggY29uc3Qg R0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3Mzc3YoIGNvbnN0IEdMc2hvcnQgKnYg KTsKCmV4dGVybiB2b2lkIGdsUmFzdGVyUG9zNGR2KCBjb25zdCBHTGRvdWJsZSAqdiApOwpleHRl cm4gdm9pZCBnbFJhc3RlclBvczRmdiggY29uc3QgR0xmbG9hdCAqdiApOwpleHRlcm4gdm9pZCBn bFJhc3RlclBvczRpdiggY29uc3QgR0xpbnQgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xSYXN0ZXJQb3M0 c3YoIGNvbnN0IEdMc2hvcnQgKnYgKTsKCgpleHRlcm4gdm9pZCBnbFJlY3RkKCBHTGRvdWJsZSB4 MSwgR0xkb3VibGUgeTEsIEdMZG91YmxlIHgyLCBHTGRvdWJsZSB5MiApOwpleHRlcm4gdm9pZCBn bFJlY3RmKCBHTGZsb2F0IHgxLCBHTGZsb2F0IHkxLCBHTGZsb2F0IHgyLCBHTGZsb2F0IHkyICk7 CmV4dGVybiB2b2lkIGdsUmVjdGkoIEdMaW50IHgxLCBHTGludCB5MSwgR0xpbnQgeDIsIEdMaW50 IHkyICk7CmV4dGVybiB2b2lkIGdsUmVjdHMoIEdMc2hvcnQgeDEsIEdMc2hvcnQgeTEsIEdMc2hv cnQgeDIsIEdMc2hvcnQgeTIgKTsKCgpleHRlcm4gdm9pZCBnbFJlY3RkdiggY29uc3QgR0xkb3Vi bGUgKnYxLCBjb25zdCBHTGRvdWJsZSAqdjIgKTsKZXh0ZXJuIHZvaWQgZ2xSZWN0ZnYoIGNvbnN0 IEdMZmxvYXQgKnYxLCBjb25zdCBHTGZsb2F0ICp2MiApOwpleHRlcm4gdm9pZCBnbFJlY3Rpdigg Y29uc3QgR0xpbnQgKnYxLCBjb25zdCBHTGludCAqdjIgKTsKZXh0ZXJuIHZvaWQgZ2xSZWN0c3Yo IGNvbnN0IEdMc2hvcnQgKnYxLCBjb25zdCBHTHNob3J0ICp2MiApOwoKCgoKCgoKZXh0ZXJuIHZv aWQgZ2xWZXJ0ZXhQb2ludGVyKCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAq cHRyICk7CgpleHRlcm4gdm9pZCBnbE5vcm1hbFBvaW50ZXIoIEdMZW51bSB0eXBlLCBHTHNpemVp IHN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2 b2lkICpwdHIgKTsKCmV4dGVybiB2b2lkIGdsQ29sb3JQb2ludGVyKCBHTGludCBzaXplLCBHTGVu dW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0 cmlkZSwgY29uc3QgR0x2b2lkICpwdHIgKTsKCmV4dGVybiB2b2lkIGdsSW5kZXhQb2ludGVyKCBH TGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgR0x2b2lkICpwdHIgKTsKCmV4dGVybiB2b2lkIGdsVGV4Q29vcmRQb2lu dGVyKCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwdHIgKTsKCmV4dGVy biB2b2lkIGdsRWRnZUZsYWdQb2ludGVyKCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpw dHIgKTsKCmV4dGVybiB2b2lkIGdsR2V0UG9pbnRlcnYoIEdMZW51bSBwbmFtZSwgdm9pZCAqKnBh cmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xBcnJheUVsZW1lbnQoIEdMaW50IGkgKTsKCmV4dGVybiB2 b2lkIGdsRHJhd0FycmF5cyggR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50 ICk7CgpleHRlcm4gdm9pZCBnbERyYXdFbGVtZW50cyggR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291 bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsIGNv bnN0IEdMdm9pZCAqaW5kaWNlcyApOwoKZXh0ZXJuIHZvaWQgZ2xJbnRlcmxlYXZlZEFycmF5cygg R0xlbnVtIGZvcm1hdCwgR0xzaXplaSBzdHJpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBvaW50ZXIgKTsKCgoKCgoKZXh0ZXJuIHZv aWQgZ2xTaGFkZU1vZGVsKCBHTGVudW0gbW9kZSApOwoKZXh0ZXJuIHZvaWQgZ2xMaWdodGYoIEdM ZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtICk7CmV4dGVybiB2b2lkIGds TGlnaHRpKCBHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0gKTsKZXh0ZXJu IHZvaWQgZ2xMaWdodGZ2KCBHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiB2b2lk IGdsTGlnaHRpdiggR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsR2V0 TGlnaHRmdiggR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyApOwpleHRlcm4gdm9pZCBnbEdldExpZ2h0 aXYoIEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbExpZ2h0TW9kZWxmKCBH TGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJuIHZvaWQgZ2xMaWdodE1vZGVsaSgg R0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSApOwpleHRlcm4gdm9pZCBnbExpZ2h0TW9kZWxmdigg R0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMgKTsKZXh0ZXJuIHZvaWQgZ2xMaWdo dE1vZGVsaXYoIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyApOwoKZXh0ZXJuIHZv aWQgZ2xNYXRlcmlhbGYoIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0g KTsKZXh0ZXJuIHZvaWQgZ2xNYXRlcmlhbGkoIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdM aW50IHBhcmFtICk7CmV4dGVybiB2b2lkIGdsTWF0ZXJpYWxmdiggR0xlbnVtIGZhY2UsIEdMZW51 bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiB2b2lkIGdsTWF0ZXJpYWxp diggR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyApOwoKZXh0 ZXJuIHZvaWQgZ2xHZXRNYXRlcmlhbGZ2KCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGZs b2F0ICpwYXJhbXMgKTsKZXh0ZXJuIHZvaWQgZ2xHZXRNYXRlcmlhbGl2KCBHTGVudW0gZmFjZSwg R0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbENvbG9yTWF0ZXJp YWwoIEdMZW51bSBmYWNlLCBHTGVudW0gbW9kZSApOwojIDEzMjUgIi4uLy4uLy4uLy4uL2V4cG9y dHMvaW5jbHVkZS9HTC9nbC5oIgpleHRlcm4gdm9pZCBnbFBpeGVsWm9vbSggR0xmbG9hdCB4ZmFj dG9yLCBHTGZsb2F0IHlmYWN0b3IgKTsKCmV4dGVybiB2b2lkIGdsUGl4ZWxTdG9yZWYoIEdMZW51 bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSApOwpleHRlcm4gdm9pZCBnbFBpeGVsU3RvcmVpKCBHTGVu dW0gcG5hbWUsIEdMaW50IHBhcmFtICk7CgpleHRlcm4gdm9pZCBnbFBpeGVsVHJhbnNmZXJmKCBH TGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJuIHZvaWQgZ2xQaXhlbFRyYW5zZmVy aSggR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSApOwoKZXh0ZXJuIHZvaWQgZ2xQaXhlbE1hcGZ2 KCBHTGVudW0gbWFwLCBHTGludCBtYXBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZXMgKTsKZXh0ZXJuIHZvaWQgZ2xQaXhlbE1hcHVp diggR0xlbnVtIG1hcCwgR0xpbnQgbWFwc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWVzICk7CmV4dGVybiB2b2lkIGdsUGl4ZWxNYXB1 c3YoIEdMZW51bSBtYXAsIEdMaW50IG1hcHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBHTHVzaG9ydCAqdmFsdWVzICk7CgpleHRlcm4gdm9pZCBnbEdldFBp eGVsTWFwZnYoIEdMZW51bSBtYXAsIEdMZmxvYXQgKnZhbHVlcyApOwpleHRlcm4gdm9pZCBnbEdl dFBpeGVsTWFwdWl2KCBHTGVudW0gbWFwLCBHTHVpbnQgKnZhbHVlcyApOwpleHRlcm4gdm9pZCBn bEdldFBpeGVsTWFwdXN2KCBHTGVudW0gbWFwLCBHTHVzaG9ydCAqdmFsdWVzICk7CgpleHRlcm4g dm9pZCBnbEJpdG1hcCggR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB4b3JpZywgR0xmbG9hdCB5b3JpZywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHhtb3ZlLCBHTGZsb2F0IHltb3ZlLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmJpdG1hcCApOwoK ZXh0ZXJuIHZvaWQgZ2xSZWFkUGl4ZWxzKCBHTGludCB4LCBHTGludCB5LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5 cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzICk7 CgpleHRlcm4gdm9pZCBnbERyYXdQaXhlbHMoIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVu dW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lk ICpwaXhlbHMgKTsKCmV4dGVybiB2b2lkIGdsQ29weVBpeGVscyggR0xpbnQgeCwgR0xpbnQgeSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXpl aSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl ICk7CgoKCgoKCgpleHRlcm4gdm9pZCBnbFN0ZW5jaWxGdW5jKCBHTGVudW0gZnVuYywgR0xpbnQg cmVmLCBHTHVpbnQgbWFzayApOwoKZXh0ZXJuIHZvaWQgZ2xTdGVuY2lsTWFzayggR0x1aW50IG1h c2sgKTsKCmV4dGVybiB2b2lkIGdsU3RlbmNpbE9wKCBHTGVudW0gZmFpbCwgR0xlbnVtIHpmYWls LCBHTGVudW0genBhc3MgKTsKCmV4dGVybiB2b2lkIGdsQ2xlYXJTdGVuY2lsKCBHTGludCBzICk7 CgoKCgoKCgpleHRlcm4gdm9pZCBnbFRleEdlbmQoIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1l LCBHTGRvdWJsZSBwYXJhbSApOwpleHRlcm4gdm9pZCBnbFRleEdlbmYoIEdMZW51bSBjb29yZCwg R0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtICk7CmV4dGVybiB2b2lkIGdsVGV4R2VuaSggR0xl bnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtICk7CgpleHRlcm4gdm9pZCBnbFRl eEdlbmR2KCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xkb3VibGUgKnBhcmFt cyApOwpleHRlcm4gdm9pZCBnbFRleEdlbmZ2KCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwg Y29uc3QgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiB2b2lkIGdsVGV4R2VuaXYoIEdMZW51bSBj b29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBn bEdldFRleEdlbmR2KCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xkb3VibGUgKnBhcmFt cyApOwpleHRlcm4gdm9pZCBnbEdldFRleEdlbmZ2KCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFt ZSwgR0xmbG9hdCAqcGFyYW1zICk7CmV4dGVybiB2b2lkIGdsR2V0VGV4R2VuaXYoIEdMZW51bSBj b29yZCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zICk7CgoKZXh0ZXJuIHZvaWQgZ2xUZXhF bnZmKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0gKTsKZXh0ZXJu IHZvaWQgZ2xUZXhFbnZpKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFt ICk7CgpleHRlcm4gdm9pZCBnbFRleEVudmZ2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUs IGNvbnN0IEdMZmxvYXQgKnBhcmFtcyApOwpleHRlcm4gdm9pZCBnbFRleEVudml2KCBHTGVudW0g dGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lk IGdsR2V0VGV4RW52ZnYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFy YW1zICk7CmV4dGVybiB2b2lkIGdsR2V0VGV4RW52aXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBw bmFtZSwgR0xpbnQgKnBhcmFtcyApOwoKCmV4dGVybiB2b2lkIGdsVGV4UGFyYW1ldGVyZiggR0xl bnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtICk7CmV4dGVybiB2b2lkIGds VGV4UGFyYW1ldGVyaSggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSAp OwoKZXh0ZXJuIHZvaWQgZ2xUZXhQYXJhbWV0ZXJmdiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs b2F0ICpwYXJhbXMgKTsKZXh0ZXJuIHZvaWQgZ2xUZXhQYXJhbWV0ZXJpdiggR0xlbnVtIHRhcmdl dCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEdldFRleFBhcmFtZXRlcmZ2 KCBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwpleHRlcm4gdm9pZCBnbEdldFRleFBh cmFtZXRlcml2KCBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBn bEdldFRleExldmVsUGFyYW1ldGVyZnYoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs IEdMZmxvYXQgKnBhcmFtcyApOwpleHRlcm4gdm9pZCBnbEdldFRleExldmVsUGFyYW1ldGVyaXYo IEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMgKTsKCgpleHRl cm4gdm9pZCBnbFRleEltYWdlMUQoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xpbnQgYm9yZGVy LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVu dW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lk ICpwaXhlbHMgKTsKCmV4dGVybiB2b2lkIGdsVGV4SW1hZ2UyRCggR0xlbnVtIHRhcmdldCwgR0xp bnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVy bmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdp ZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMgKTsKCmV4dGVybiB2b2lk IGdsR2V0VGV4SW1hZ2UoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKnBpeGVscyApOwoKCgoKCmV4 dGVybiB2b2lkIGdsR2VuVGV4dHVyZXMoIEdMc2l6ZWkgbiwgR0x1aW50ICp0ZXh0dXJlcyApOwoK ZXh0ZXJuIHZvaWQgZ2xEZWxldGVUZXh0dXJlcyggR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnRl eHR1cmVzKTsKCmV4dGVybiB2b2lkIGdsQmluZFRleHR1cmUoIEdMZW51bSB0YXJnZXQsIEdMdWlu dCB0ZXh0dXJlICk7CgpleHRlcm4gdm9pZCBnbFByaW9yaXRpemVUZXh0dXJlcyggR0xzaXplaSBu LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWlu dCAqdGV4dHVyZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgR0xjbGFtcGYgKnByaW9yaXRpZXMgKTsKCmV4dGVybiBHTGJvb2xlYW4gZ2xBcmVUZXh0 dXJlc1Jlc2lkZW50KCBHTHNpemVpIG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp0ZXh0dXJlcywKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gKnJlc2lkZW5jZXMg KTsKCmV4dGVybiBHTGJvb2xlYW4gZ2xJc1RleHR1cmUoIEdMdWludCB0ZXh0dXJlICk7CgoKZXh0 ZXJuIHZvaWQgZ2xUZXhTdWJJbWFnZTFEKCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xlbnVtIGZv cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs IGNvbnN0IEdMdm9pZCAqcGl4ZWxzICk7CgoKZXh0ZXJuIHZvaWQgZ2xUZXhTdWJJbWFnZTJEKCBH TGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0 eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQg KnBpeGVscyApOwoKCmV4dGVybiB2b2lkIGdsQ29weVRleEltYWdlMUQoIEdMZW51bSB0YXJnZXQs IEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl bnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdMc2l6ZWkgd2lkdGgsIEdMaW50IGJvcmRlciApOwoKCmV4dGVybiB2b2lkIGdsQ29weVRl eEltYWdlMkQoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyICk7 CgoKZXh0ZXJuIHZvaWQgZ2xDb3B5VGV4U3ViSW1hZ2UxRCggR0xlbnVtIHRhcmdldCwgR0xpbnQg bGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4 b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR0xzaXplaSB3aWR0aCApOwoKCmV4dGVybiB2b2lkIGdsQ29weVRleFN1Yklt YWdlMkQoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsIEdMaW50IHksCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBH THNpemVpIGhlaWdodCApOwojIDE1MDQgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9HTC9n bC5oIgpleHRlcm4gdm9pZCBnbE1hcDFkKCBHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSB1MSwgR0xk b3VibGUgdTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzdHJpZGUsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBvcmRlciwgY29uc3QgR0xkb3VibGUg KnBvaW50cyApOwpleHRlcm4gdm9pZCBnbE1hcDFmKCBHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHUx LCBHTGZsb2F0IHUyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RyaWRl LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgb3JkZXIsIGNvbnN0IEdMZmxv YXQgKnBvaW50cyApOwoKZXh0ZXJuIHZvaWQgZ2xNYXAyZCggR0xlbnVtIHRhcmdldCwKICAgICAg ICAgICAgICAgICAgICAgR0xkb3VibGUgdTEsIEdMZG91YmxlIHUyLCBHTGludCB1c3RyaWRlLCBH TGludCB1b3JkZXIsCiAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHYxLCBHTGRvdWJsZSB2 MiwgR0xpbnQgdnN0cmlkZSwgR0xpbnQgdm9yZGVyLAogICAgICAgICAgICAgICAgICAgICBjb25z dCBHTGRvdWJsZSAqcG9pbnRzICk7CmV4dGVybiB2b2lkIGdsTWFwMmYoIEdMZW51bSB0YXJnZXQs CiAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdTEsIEdMZmxvYXQgdTIsIEdMaW50IHVzdHJp ZGUsIEdMaW50IHVvcmRlciwKICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MSwgR0xmbG9h dCB2MiwgR0xpbnQgdnN0cmlkZSwgR0xpbnQgdm9yZGVyLAogICAgICAgICAgICAgICAgICAgICBj b25zdCBHTGZsb2F0ICpwb2ludHMgKTsKCmV4dGVybiB2b2lkIGdsR2V0TWFwZHYoIEdMZW51bSB0 YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xkb3VibGUgKnYgKTsKZXh0ZXJuIHZvaWQgZ2xHZXRNYXBm diggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1ZXJ5LCBHTGZsb2F0ICp2ICk7CmV4dGVybiB2b2lk IGdsR2V0TWFwaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xpbnQgKnYgKTsKCmV4 dGVybiB2b2lkIGdsRXZhbENvb3JkMWQoIEdMZG91YmxlIHUgKTsKZXh0ZXJuIHZvaWQgZ2xFdmFs Q29vcmQxZiggR0xmbG9hdCB1ICk7CgpleHRlcm4gdm9pZCBnbEV2YWxDb29yZDFkdiggY29uc3Qg R0xkb3VibGUgKnUgKTsKZXh0ZXJuIHZvaWQgZ2xFdmFsQ29vcmQxZnYoIGNvbnN0IEdMZmxvYXQg KnUgKTsKCmV4dGVybiB2b2lkIGdsRXZhbENvb3JkMmQoIEdMZG91YmxlIHUsIEdMZG91YmxlIHYg KTsKZXh0ZXJuIHZvaWQgZ2xFdmFsQ29vcmQyZiggR0xmbG9hdCB1LCBHTGZsb2F0IHYgKTsKCmV4 dGVybiB2b2lkIGdsRXZhbENvb3JkMmR2KCBjb25zdCBHTGRvdWJsZSAqdSApOwpleHRlcm4gdm9p ZCBnbEV2YWxDb29yZDJmdiggY29uc3QgR0xmbG9hdCAqdSApOwoKZXh0ZXJuIHZvaWQgZ2xNYXBH cmlkMWQoIEdMaW50IHVuLCBHTGRvdWJsZSB1MSwgR0xkb3VibGUgdTIgKTsKZXh0ZXJuIHZvaWQg Z2xNYXBHcmlkMWYoIEdMaW50IHVuLCBHTGZsb2F0IHUxLCBHTGZsb2F0IHUyICk7CgpleHRlcm4g dm9pZCBnbE1hcEdyaWQyZCggR0xpbnQgdW4sIEdMZG91YmxlIHUxLCBHTGRvdWJsZSB1MiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2biwgR0xkb3VibGUgdjEsIEdM ZG91YmxlIHYyICk7CmV4dGVybiB2b2lkIGdsTWFwR3JpZDJmKCBHTGludCB1biwgR0xmbG9hdCB1 MSwgR0xmbG9hdCB1MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2 biwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2MiApOwoKZXh0ZXJuIHZvaWQgZ2xFdmFsUG9pbnQxKCBH TGludCBpICk7CgpleHRlcm4gdm9pZCBnbEV2YWxQb2ludDIoIEdMaW50IGksIEdMaW50IGogKTsK CmV4dGVybiB2b2lkIGdsRXZhbE1lc2gxKCBHTGVudW0gbW9kZSwgR0xpbnQgaTEsIEdMaW50IGky ICk7CgpleHRlcm4gdm9pZCBnbEV2YWxNZXNoMiggR0xlbnVtIG1vZGUsIEdMaW50IGkxLCBHTGlu dCBpMiwgR0xpbnQgajEsIEdMaW50IGoyICk7CgoKCgoKCgpleHRlcm4gdm9pZCBnbEZvZ2YoIEdM ZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSApOwoKZXh0ZXJuIHZvaWQgZ2xGb2dpKCBHTGVudW0g cG5hbWUsIEdMaW50IHBhcmFtICk7CgpleHRlcm4gdm9pZCBnbEZvZ2Z2KCBHTGVudW0gcG5hbWUs IGNvbnN0IEdMZmxvYXQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQgZ2xGb2dpdiggR0xlbnVtIHBu YW1lLCBjb25zdCBHTGludCAqcGFyYW1zICk7CgoKCgoKCgpleHRlcm4gdm9pZCBnbEZlZWRiYWNr QnVmZmVyKCBHTHNpemVpIHNpemUsIEdMZW51bSB0eXBlLCBHTGZsb2F0ICpidWZmZXIgKTsKCmV4 dGVybiB2b2lkIGdsUGFzc1Rocm91Z2goIEdMZmxvYXQgdG9rZW4gKTsKCmV4dGVybiB2b2lkIGds U2VsZWN0QnVmZmVyKCBHTHNpemVpIHNpemUsIEdMdWludCAqYnVmZmVyICk7CgpleHRlcm4gdm9p ZCBnbEluaXROYW1lcyggdm9pZCApOwoKZXh0ZXJuIHZvaWQgZ2xMb2FkTmFtZSggR0x1aW50IG5h bWUgKTsKCmV4dGVybiB2b2lkIGdsUHVzaE5hbWUoIEdMdWludCBuYW1lICk7CgpleHRlcm4gdm9p ZCBnbFBvcE5hbWUoIHZvaWQgKTsKCgoKCmV4dGVybiB2b2lkIGdsRHJhd1JhbmdlRWxlbWVudHMo IEdMZW51bSBtb2RlLCBHTHVpbnQgc3RhcnQsCiAgICAgICAgR0x1aW50IGVuZCwgR0xzaXplaSBj b3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcyApOwoKZXh0ZXJuIHZvaWQg Z2xUZXhJbWFnZTNEKCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLCBHTGlu dCBib3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZv cm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgR0x2b2lkICpwaXhlbHMgKTsKCmV4dGVybiB2b2lkIGdsVGV4U3ViSW1hZ2UzRCggR0xl bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LCBHTHNp emVpIGRlcHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51 bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt IHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKCmV4dGVybiB2b2lkIGdsQ29weVRleFN1Yklt YWdlM0QoIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB6b2Zmc2V0LCBH TGludCB4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu dCB5LCBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHTHNpemVpIGhlaWdodCApOwoKCgoKZXh0ZXJuIHZvaWQgZ2xDb2xvclRhYmxlKCBH TGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnRhYmxl ICk7CgpleHRlcm4gdm9pZCBnbENvbG9yU3ViVGFibGUoIEdMZW51bSB0YXJnZXQsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RhcnQsIEdMc2l6ZWkgY291 bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQs IEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBHTHZvaWQgKmRhdGEgKTsKCmV4dGVybiB2b2lkIGdsQ29sb3JUYWJsZVBhcmFtZXRlcml2KEdM ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOwoKZXh0ZXJuIHZvaWQgZ2xDb2xv clRhYmxlUGFyYW1ldGVyZnYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1z KTsKCmV4dGVybiB2b2lkIGdsQ29weUNvbG9yU3ViVGFibGUoIEdMZW51bSB0YXJnZXQsIEdMc2l6 ZWkgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu dCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoICk7CgpleHRlcm4gdm9pZCBnbENvcHlDb2xvclRh YmxlKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRo ICk7CgpleHRlcm4gdm9pZCBnbEdldENvbG9yVGFibGUoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBm b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl LCBHTHZvaWQgKnRhYmxlICk7CgpleHRlcm4gdm9pZCBnbEdldENvbG9yVGFibGVQYXJhbWV0ZXJm diggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyApOwoKZXh0ZXJuIHZvaWQg Z2xHZXRDb2xvclRhYmxlUGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq cGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEJsZW5kRXF1YXRpb24oIEdMZW51bSBtb2RlICk7Cgpl eHRlcm4gdm9pZCBnbEJsZW5kQ29sb3IoIEdMY2xhbXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2xhbXBmIGJsdWUsIEdMY2xhbXBm IGFscGhhICk7CgpleHRlcm4gdm9pZCBnbEhpc3RvZ3JhbSggR0xlbnVtIHRhcmdldCwgR0xzaXpl aSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu YWxmb3JtYXQsIEdMYm9vbGVhbiBzaW5rICk7CgpleHRlcm4gdm9pZCBnbFJlc2V0SGlzdG9ncmFt KCBHTGVudW0gdGFyZ2V0ICk7CgpleHRlcm4gdm9pZCBnbEdldEhpc3RvZ3JhbSggR0xlbnVtIHRh cmdldCwgR0xib29sZWFuIHJlc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdMdm9pZCAqdmFsdWVzICk7CgpleHRlcm4gdm9pZCBnbEdldEhpc3RvZ3Jh bVBhcmFtZXRlcmZ2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMgKTsKCmV4 dGVybiB2b2lkIGdsR2V0SGlzdG9ncmFtUGFyYW1ldGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51 bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsTWlubWF4KCBHTGVudW0gdGFyZ2V0LCBH TGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi b29sZWFuIHNpbmsgKTsKCmV4dGVybiB2b2lkIGdsUmVzZXRNaW5tYXgoIEdMZW51bSB0YXJnZXQg KTsKCmV4dGVybiB2b2lkIGdsR2V0TWlubWF4KCBHTGVudW0gdGFyZ2V0LCBHTGJvb2xlYW4gcmVz ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xl bnVtIHR5cGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqdmFs dWVzICk7CgpleHRlcm4gdm9pZCBnbEdldE1pbm1heFBhcmFtZXRlcmZ2KCBHTGVudW0gdGFyZ2V0 LCBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHTGZsb2F0ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsR2V0TWlubWF4UGFyYW1ldGVy aXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMgKTsKCmV4dGVybiB2b2lkIGdsQ29u dm9sdXRpb25GaWx0ZXIxRCggR0xlbnVtIHRhcmdldCwKICAgICAgICBHTGVudW0gaW50ZXJuYWxm b3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAg IGNvbnN0IEdMdm9pZCAqaW1hZ2UgKTsKCmV4dGVybiB2b2lkIGdsQ29udm9sdXRpb25GaWx0ZXIy RCggR0xlbnVtIHRhcmdldCwKICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkg d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LAogICAgICAgIEdMZW51bSB0eXBl LCBjb25zdCBHTHZvaWQgKmltYWdlICk7CgpleHRlcm4gdm9pZCBnbENvbnZvbHV0aW9uUGFyYW1l dGVyZiggR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLAogICAgICAgIEdMZmxvYXQgcGFyYW1z ICk7CgpleHRlcm4gdm9pZCBnbENvbnZvbHV0aW9uUGFyYW1ldGVyZnYoIEdMZW51bSB0YXJnZXQs IEdMZW51bSBwbmFtZSwKICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMgKTsKCmV4dGVybiB2 b2lkIGdsQ29udm9sdXRpb25QYXJhbWV0ZXJpKCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUs CiAgICAgICAgR0xpbnQgcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbENvbnZvbHV0aW9uUGFyYW1l dGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAgICBjb25zdCBHTGludCAq cGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbENvcHlDb252b2x1dGlvbkZpbHRlcjFEKCBHTGVudW0g dGFyZ2V0LAogICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwg R0xzaXplaSB3aWR0aCApOwoKZXh0ZXJuIHZvaWQgZ2xDb3B5Q29udm9sdXRpb25GaWx0ZXIyRCgg R0xlbnVtIHRhcmdldCwKICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdM aW50IHksIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgR0xzaXplaSBoZWlnaHQpOwoKZXh0ZXJuIHZv aWQgZ2xHZXRDb252b2x1dGlvbkZpbHRlciggR0xlbnVtIHRhcmdldCwgR0xlbnVtIGZvcm1hdCwK ICAgICAgICBHTGVudW0gdHlwZSwgR0x2b2lkICppbWFnZSApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRD b252b2x1dGlvblBhcmFtZXRlcmZ2KCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsCiAgICAg ICAgR0xmbG9hdCAqcGFyYW1zICk7CgpleHRlcm4gdm9pZCBnbEdldENvbnZvbHV0aW9uUGFyYW1l dGVyaXYoIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAgICBHTGludCAqcGFyYW1z ICk7CgpleHRlcm4gdm9pZCBnbFNlcGFyYWJsZUZpbHRlcjJEKCBHTGVudW0gdGFyZ2V0LAogICAg ICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs IEdMZW51bSBmb3JtYXQsCiAgICAgICAgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcm93LCBj b25zdCBHTHZvaWQgKmNvbHVtbiApOwoKZXh0ZXJuIHZvaWQgZ2xHZXRTZXBhcmFibGVGaWx0ZXIo IEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQsCiAgICAgICAgR0xlbnVtIHR5cGUsIEdMdm9p ZCAqcm93LCBHTHZvaWQgKmNvbHVtbiwgR0x2b2lkICpzcGFuICk7CiMgMTc2NyAiLi4vLi4vLi4v Li4vZXhwb3J0cy9pbmNsdWRlL0dML2dsLmgiCmV4dGVybiB2b2lkIGdsQWN0aXZlVGV4dHVyZUFS QihHTGVudW0gdGV4dHVyZSk7CmV4dGVybiB2b2lkIGdsQ2xpZW50QWN0aXZlVGV4dHVyZUFSQihH TGVudW0gdGV4dHVyZSk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDFkQVJCKEdMZW51bSB0 YXJnZXQsIEdMZG91YmxlIHMpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxZHZBUkIoR0xl bnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29v cmQxZkFSQihHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4 Q29vcmQxZnZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xmbG9hdCAqdik7CmV4dGVybiB2b2lk IGdsTXVsdGlUZXhDb29yZDFpQVJCKEdMZW51bSB0YXJnZXQsIEdMaW50IHMpOwpleHRlcm4gdm9p ZCBnbE11bHRpVGV4Q29vcmQxaXZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKnYpOwpl eHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxc0FSQihHTGVudW0gdGFyZ2V0LCBHTHNob3J0IHMp OwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQxc3ZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3Qg R0xzaG9ydCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDJkQVJCKEdMZW51bSB0YXJn ZXQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQy ZHZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYpOwpleHRlcm4gdm9pZCBnbE11 bHRpVGV4Q29vcmQyZkFSQihHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCk7CmV4 dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDJmdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZs b2F0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkMmlBUkIoR0xlbnVtIHRhcmdldCwg R0xpbnQgcywgR0xpbnQgdCk7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDJpdkFSQihHTGVu dW0gdGFyZ2V0LCBjb25zdCBHTGludCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDJz QVJCKEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0KTsKZXh0ZXJuIHZvaWQgZ2xN dWx0aVRleENvb3JkMnN2QVJCKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMc2hvcnQgKnYpOwpleHRl cm4gdm9pZCBnbE11bHRpVGV4Q29vcmQzZEFSQihHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSBzLCBH TGRvdWJsZSB0LCBHTGRvdWJsZSByKTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkM2R2QVJC KEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZG91YmxlICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRl eENvb3JkM2ZBUkIoR0xlbnVtIHRhcmdldCwgR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQg cik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDNmdkFSQihHTGVudW0gdGFyZ2V0LCBjb25z dCBHTGZsb2F0ICp2KTsKZXh0ZXJuIHZvaWQgZ2xNdWx0aVRleENvb3JkM2lBUkIoR0xlbnVtIHRh cmdldCwgR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQgcik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhD b29yZDNpdkFSQihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGludCAqdik7CmV4dGVybiB2b2lkIGds TXVsdGlUZXhDb29yZDNzQVJCKEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBH THNob3J0IHIpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQzc3ZBUkIoR0xlbnVtIHRhcmdl dCwgY29uc3QgR0xzaG9ydCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDRkQVJCKEdM ZW51bSB0YXJnZXQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91YmxlIHIsIEdMZG91Ymxl IHEpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0ZHZBUkIoR0xlbnVtIHRhcmdldCwgY29u c3QgR0xkb3VibGUgKnYpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0ZkFSQihHTGVudW0g dGFyZ2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZsb2F0IHEpOwpleHRl cm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0ZnZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xmbG9h dCAqdik7CmV4dGVybiB2b2lkIGdsTXVsdGlUZXhDb29yZDRpQVJCKEdMZW51bSB0YXJnZXQsIEdM aW50IHMsIEdMaW50IHQsIEdMaW50IHIsIEdMaW50IHEpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4 Q29vcmQ0aXZBUkIoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKnYpOwpleHRlcm4gdm9pZCBn bE11bHRpVGV4Q29vcmQ0c0FSQihHTGVudW0gdGFyZ2V0LCBHTHNob3J0IHMsIEdMc2hvcnQgdCwg R0xzaG9ydCByLCBHTHNob3J0IHEpOwpleHRlcm4gdm9pZCBnbE11bHRpVGV4Q29vcmQ0c3ZBUkIo R0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAqdik7CiMgMjI0NSAiLi4vLi4vLi4vLi4vZXhw b3J0cy9pbmNsdWRlL0dML2dsLmgiCiMgMSAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL0dM L2dsZXh0LmgiIDEKIyAxNjcyICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2xleHQu aCIKZXh0ZXJuIHZvaWQgZ2xMb2FkVHJhbnNwb3NlTWF0cml4ZkFSQiAoY29uc3QgR0xmbG9hdCAq KTsKZXh0ZXJuIHZvaWQgZ2xMb2FkVHJhbnNwb3NlTWF0cml4ZEFSQiAoY29uc3QgR0xkb3VibGUg Kik7CmV4dGVybiB2b2lkIGdsTXVsdFRyYW5zcG9zZU1hdHJpeGZBUkIgKGNvbnN0IEdMZmxvYXQg Kik7CmV4dGVybiB2b2lkIGdsTXVsdFRyYW5zcG9zZU1hdHJpeGRBUkIgKGNvbnN0IEdMZG91Ymxl ICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTExPQURUUkFOU1BPU0VNQVRSSVhGQVJCUFJPQykg KGNvbnN0IEdMZmxvYXQgKm0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTE9BRFRSQU5TUE9TRU1B VFJJWERBUkJQUk9DKSAoY29uc3QgR0xkb3VibGUgKm0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM TVVMVFRSQU5TUE9TRU1BVFJJWEZBUkJQUk9DKSAoY29uc3QgR0xmbG9hdCAqbSk7CnR5cGVkZWYg dm9pZCAoICogUEZOR0xNVUxUVFJBTlNQT1NFTUFUUklYREFSQlBST0MpIChjb25zdCBHTGRvdWJs ZSAqbSk7CgoKCgoKZXh0ZXJuIHZvaWQgZ2xTYW1wbGVDb3ZlcmFnZUFSQiAoR0xjbGFtcGYsIEdM Ym9vbGVhbik7CmV4dGVybiB2b2lkIGdsU2FtcGxlUGFzc0FSQiAoR0xlbnVtKTsKCnR5cGVkZWYg dm9pZCAoICogUEZOR0xTQU1QTEVDT1ZFUkFHRUFSQlBST0MpIChHTGNsYW1wZiB2YWx1ZSwgR0xi b29sZWFuIGludmVydCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTQU1QTEVQQVNTQVJCUFJPQykg KEdMZW51bSBwYXNzKTsKIyAxNzA0ICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2xl eHQuaCIKZXh0ZXJuIHZvaWQgZ2xDb21wcmVzc2VkVGV4SW1hZ2UzREFSQiAoR0xlbnVtLCBHTGlu dCwgR0xlbnVtLCBHTHNpemVpLCBHTHNpemVpLCBHTHNpemVpLCBHTGludCwgR0xzaXplaSwgY29u c3QgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbENvbXByZXNzZWRUZXhJbWFnZTJEQVJCIChHTGVu dW0sIEdMaW50LCBHTGVudW0sIEdMc2l6ZWksIEdMc2l6ZWksIEdMaW50LCBHTHNpemVpLCBjb25z dCBHTHZvaWQgKik7CmV4dGVybiB2b2lkIGdsQ29tcHJlc3NlZFRleEltYWdlMURBUkIgKEdMZW51 bSwgR0xpbnQsIEdMZW51bSwgR0xzaXplaSwgR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMdm9pZCAq KTsKZXh0ZXJuIHZvaWQgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UzREFSQiAoR0xlbnVtLCBHTGlu dCwgR0xpbnQsIEdMaW50LCBHTGludCwgR0xzaXplaSwgR0xzaXplaSwgR0xzaXplaSwgR0xlbnVt LCBHTHNpemVpLCBjb25zdCBHTHZvaWQgKik7CmV4dGVybiB2b2lkIGdsQ29tcHJlc3NlZFRleFN1 YkltYWdlMkRBUkIgKEdMZW51bSwgR0xpbnQsIEdMaW50LCBHTGludCwgR0xzaXplaSwgR0xzaXpl aSwgR0xlbnVtLCBHTHNpemVpLCBjb25zdCBHTHZvaWQgKik7CmV4dGVybiB2b2lkIGdsQ29tcHJl c3NlZFRleFN1YkltYWdlMURBUkIgKEdMZW51bSwgR0xpbnQsIEdMaW50LCBHTHNpemVpLCBHTGVu dW0sIEdMc2l6ZWksIGNvbnN0IEdMdm9pZCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRDb21wcmVzc2Vk VGV4SW1hZ2VBUkIgKEdMZW51bSwgR0xpbnQsIHZvaWQgKik7Cgp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMQ09NUFJFU1NFRFRFWElNQUdFM0RBUkJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2 ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs IEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdM dm9pZCAqZGF0YSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT01QUkVTU0VEVEVYSU1BR0UyREFS QlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0 LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGlt YWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTVBS RVNTRURURVhJTUFHRTFEQVJCUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVu dW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMaW50IGJvcmRlciwgR0xzaXplaSBp bWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqZGF0YSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT01Q UkVTU0VEVEVYU1VCSU1BR0UzREFSQlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwg R0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0 aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkg aW1hZ2VTaXplLCBjb25zdCBHTHZvaWQgKmRhdGEpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09N UFJFU1NFRFRFWFNVQklNQUdFMkRBUkJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws IEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp Z2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRh KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTVBSRVNTRURURVhTVUJJTUFHRTFEQVJCUFJPQykg KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTHNpemVpIHdpZHRo LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhKTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVENPTVBSRVNTRURURVhJTUFHRUFSQlBST0MpIChHTGVu dW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgdm9pZCAqaW1nKTsKIyAxNzI4ICIuLi8uLi8uLi8uLi9l eHBvcnRzL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xCbGVuZENvbG9yRVhUIChH TGNsYW1wZiwgR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNsYW1wZik7Cgp0eXBlZGVmIHZvaWQgKCAq IFBGTkdMQkxFTkRDT0xPUkVYVFBST0MpIChHTGNsYW1wZiByZWQsIEdMY2xhbXBmIGdyZWVuLCBH TGNsYW1wZiBibHVlLCBHTGNsYW1wZiBhbHBoYSk7CgoKCgoKZXh0ZXJuIHZvaWQgZ2xQb2x5Z29u T2Zmc2V0RVhUIChHTGZsb2F0LCBHTGZsb2F0KTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xQT0xZ R09OT0ZGU0VURVhUUFJPQykgKEdMZmxvYXQgZmFjdG9yLCBHTGZsb2F0IGJpYXMpOwojIDE3NDgg Ii4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbFRl eEltYWdlM0RFWFQgKEdMZW51bSwgR0xpbnQsIEdMZW51bSwgR0xzaXplaSwgR0xzaXplaSwgR0xz aXplaSwgR0xpbnQsIEdMZW51bSwgR0xlbnVtLCBjb25zdCBHTHZvaWQgKik7CmV4dGVybiB2b2lk IGdsVGV4U3ViSW1hZ2UzREVYVCAoR0xlbnVtLCBHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCwg R0xzaXplaSwgR0xzaXplaSwgR0xzaXplaSwgR0xlbnVtLCBHTGVudW0sIGNvbnN0IEdMdm9pZCAq KTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhJTUFHRTNERVhUUFJPQykgKEdMZW51bSB0YXJn ZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdM c2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQs IEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnBpeGVscyk7CnR5cGVkZWYgdm9pZCAoICogUEZO R0xURVhTVUJJTUFHRTNERVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGlu dCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBH THNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUs IGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKCgoKCgpleHRlcm4gdm9pZCBnbEdldFRleEZpbHRlckZ1 bmNTR0lTIChHTGVudW0sIEdMZW51bSwgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xUZXhGaWx0 ZXJGdW5jU0dJUyAoR0xlbnVtLCBHTGVudW0sIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQgKik7Cgp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUVEVYRklMVEVSRlVOQ1NHSVNQUk9DKSAoR0xlbnVtIHRh cmdldCwgR0xlbnVtIGZpbHRlciwgR0xmbG9hdCAqd2VpZ2h0cyk7CnR5cGVkZWYgdm9pZCAoICog UEZOR0xURVhGSUxURVJGVU5DU0dJU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gZmlsdGVy LCBHTHNpemVpIG4sIGNvbnN0IEdMZmxvYXQgKndlaWdodHMpOwoKCgoKCmV4dGVybiB2b2lkIGds VGV4U3ViSW1hZ2UxREVYVCAoR0xlbnVtLCBHTGludCwgR0xpbnQsIEdMc2l6ZWksIEdMZW51bSwg R0xlbnVtLCBjb25zdCBHTHZvaWQgKik7CmV4dGVybiB2b2lkIGdsVGV4U3ViSW1hZ2UyREVYVCAo R0xlbnVtLCBHTGludCwgR0xpbnQsIEdMaW50LCBHTHNpemVpLCBHTHNpemVpLCBHTGVudW0sIEdM ZW51bSwgY29uc3QgR0x2b2lkICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWFNVQklNQUdF MURFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdM c2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnBp eGVscyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhTVUJJTUFHRTJERVhUUFJPQykgKEdMZW51 bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNp emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNv bnN0IEdMdm9pZCAqcGl4ZWxzKTsKCgoKCgpleHRlcm4gdm9pZCBnbENvcHlUZXhJbWFnZTFERVhU IChHTGVudW0sIEdMaW50LCBHTGVudW0sIEdMaW50LCBHTGludCwgR0xzaXplaSwgR0xpbnQpOwpl eHRlcm4gdm9pZCBnbENvcHlUZXhJbWFnZTJERVhUIChHTGVudW0sIEdMaW50LCBHTGVudW0sIEdM aW50LCBHTGludCwgR0xzaXplaSwgR0xzaXplaSwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbENvcHlU ZXhTdWJJbWFnZTFERVhUIChHTGVudW0sIEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50LCBHTHNp emVpKTsKZXh0ZXJuIHZvaWQgZ2xDb3B5VGV4U3ViSW1hZ2UyREVYVCAoR0xlbnVtLCBHTGludCwg R0xpbnQsIEdMaW50LCBHTGludCwgR0xpbnQsIEdMc2l6ZWksIEdMc2l6ZWkpOwpleHRlcm4gdm9p ZCBnbENvcHlUZXhTdWJJbWFnZTNERVhUIChHTGVudW0sIEdMaW50LCBHTGludCwgR0xpbnQsIEdM aW50LCBHTGludCwgR0xpbnQsIEdMc2l6ZWksIEdMc2l6ZWkpOwoKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTENPUFlURVhJTUFHRTFERVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBH TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdM aW50IGJvcmRlcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT1BZVEVYSU1BR0UyREVYVFBST0Mp IChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGlu dCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVy KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPUFlURVhTVUJJTUFHRTFERVhUUFJPQykgKEdMZW51 bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBH THNpemVpIHdpZHRoKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPUFlURVhTVUJJTUFHRTJERVhU UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5 b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7 CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT1BZVEVYU1VCSU1BR0UzREVYVFBST0MpIChHTGVudW0g dGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQg em9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp OwoKCgoKCmV4dGVybiB2b2lkIGdsR2V0SGlzdG9ncmFtRVhUIChHTGVudW0sIEdMYm9vbGVhbiwg R0xlbnVtLCBHTGVudW0sIEdMdm9pZCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRIaXN0b2dyYW1QYXJh bWV0ZXJmdkVYVCAoR0xlbnVtLCBHTGVudW0sIEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsR2V0 SGlzdG9ncmFtUGFyYW1ldGVyaXZFWFQgKEdMZW51bSwgR0xlbnVtLCBHTGludCAqKTsKZXh0ZXJu IHZvaWQgZ2xHZXRNaW5tYXhFWFQgKEdMZW51bSwgR0xib29sZWFuLCBHTGVudW0sIEdMZW51bSwg R0x2b2lkICopOwpleHRlcm4gdm9pZCBnbEdldE1pbm1heFBhcmFtZXRlcmZ2RVhUIChHTGVudW0s IEdMZW51bSwgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRNaW5tYXhQYXJhbWV0ZXJpdkVY VCAoR0xlbnVtLCBHTGVudW0sIEdMaW50ICopOwpleHRlcm4gdm9pZCBnbEhpc3RvZ3JhbUVYVCAo R0xlbnVtLCBHTHNpemVpLCBHTGVudW0sIEdMYm9vbGVhbik7CmV4dGVybiB2b2lkIGdsTWlubWF4 RVhUIChHTGVudW0sIEdMZW51bSwgR0xib29sZWFuKTsKZXh0ZXJuIHZvaWQgZ2xSZXNldEhpc3Rv Z3JhbUVYVCAoR0xlbnVtKTsKZXh0ZXJuIHZvaWQgZ2xSZXNldE1pbm1heEVYVCAoR0xlbnVtKTsK CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRISVNUT0dSQU1FWFRQUk9DKSAoR0xlbnVtIHRhcmdl dCwgR0xib29sZWFuIHJlc2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICp2 YWx1ZXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUSElTVE9HUkFNUEFSQU1FVEVSRlZFWFRQ Uk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMR0VUSElTVE9HUkFNUEFSQU1FVEVSSVZFWFRQUk9DKSAoR0xlbnVt IHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTEdFVE1JTk1BWEVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGJvb2xlYW4gcmVzZXQsIEdM ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKnZhbHVlcyk7CnR5cGVkZWYgdm9pZCAo ICogUEZOR0xHRVRNSU5NQVhQQVJBTUVURVJGVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVu dW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRNSU5N QVhQQVJBTUVURVJJVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50 ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMSElTVE9HUkFNRVhUUFJPQykgKEdMZW51 bSB0YXJnZXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xib29sZWFu IHNpbmspOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTUlOTUFYRVhUUFJPQykgKEdMZW51bSB0YXJn ZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xib29sZWFuIHNpbmspOwp0eXBlZGVmIHZvaWQg KCAqIFBGTkdMUkVTRVRISVNUT0dSQU1FWFRQUk9DKSAoR0xlbnVtIHRhcmdldCk7CnR5cGVkZWYg dm9pZCAoICogUEZOR0xSRVNFVE1JTk1BWEVYVFBST0MpIChHTGVudW0gdGFyZ2V0KTsKCgoKCgpl eHRlcm4gdm9pZCBnbENvbnZvbHV0aW9uRmlsdGVyMURFWFQgKEdMZW51bSwgR0xlbnVtLCBHTHNp emVpLCBHTGVudW0sIEdMZW51bSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbENvbnZv bHV0aW9uRmlsdGVyMkRFWFQgKEdMZW51bSwgR0xlbnVtLCBHTHNpemVpLCBHTHNpemVpLCBHTGVu dW0sIEdMZW51bSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbENvbnZvbHV0aW9uUGFy YW1ldGVyZkVYVCAoR0xlbnVtLCBHTGVudW0sIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbENvbnZv bHV0aW9uUGFyYW1ldGVyZnZFWFQgKEdMZW51bSwgR0xlbnVtLCBjb25zdCBHTGZsb2F0ICopOwpl eHRlcm4gdm9pZCBnbENvbnZvbHV0aW9uUGFyYW1ldGVyaUVYVCAoR0xlbnVtLCBHTGVudW0sIEdM aW50KTsKZXh0ZXJuIHZvaWQgZ2xDb252b2x1dGlvblBhcmFtZXRlcml2RVhUIChHTGVudW0sIEdM ZW51bSwgY29uc3QgR0xpbnQgKik7CmV4dGVybiB2b2lkIGdsQ29weUNvbnZvbHV0aW9uRmlsdGVy MURFWFQgKEdMZW51bSwgR0xlbnVtLCBHTGludCwgR0xpbnQsIEdMc2l6ZWkpOwpleHRlcm4gdm9p ZCBnbENvcHlDb252b2x1dGlvbkZpbHRlcjJERVhUIChHTGVudW0sIEdMZW51bSwgR0xpbnQsIEdM aW50LCBHTHNpemVpLCBHTHNpemVpKTsKZXh0ZXJuIHZvaWQgZ2xHZXRDb252b2x1dGlvbkZpbHRl ckVYVCAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbEdl dENvbnZvbHV0aW9uUGFyYW1ldGVyZnZFWFQgKEdMZW51bSwgR0xlbnVtLCBHTGZsb2F0ICopOwpl eHRlcm4gdm9pZCBnbEdldENvbnZvbHV0aW9uUGFyYW1ldGVyaXZFWFQgKEdMZW51bSwgR0xlbnVt LCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRTZXBhcmFibGVGaWx0ZXJFWFQgKEdMZW51bSwg R0xlbnVtLCBHTGVudW0sIEdMdm9pZCAqLCBHTHZvaWQgKiwgR0x2b2lkICopOwpleHRlcm4gdm9p ZCBnbFNlcGFyYWJsZUZpbHRlcjJERVhUIChHTGVudW0sIEdMZW51bSwgR0xzaXplaSwgR0xzaXpl aSwgR0xlbnVtLCBHTGVudW0sIGNvbnN0IEdMdm9pZCAqLCBjb25zdCBHTHZvaWQgKik7Cgp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMQ09OVk9MVVRJT05GSUxURVIxREVYVFBST0MpIChHTGVudW0gdGFy Z2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQs IEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmltYWdlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TENPTlZPTFVUSU9ORklMVEVSMkRFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVy bmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwg R0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW1hZ2UpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM Q09OVk9MVVRJT05QQVJBTUVURVJGRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt ZSwgR0xmbG9hdCBwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09OVk9MVVRJT05QQVJB TUVURVJGVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxv YXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT05WT0xVVElPTlBBUkFNRVRFUklF WFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbXMpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMQ09OVk9MVVRJT05QQVJBTUVURVJJVkVYVFBST0MpIChHTGVudW0g dGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQg KCAqIFBGTkdMQ09QWUNPTlZPTFVUSU9ORklMVEVSMURFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwg R0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoKTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTENPUFlDT05WT0xVVElPTkZJTFRFUjJERVhUUFJPQykgKEdM ZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xz aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUQ09O Vk9MVVRJT05GSUxURVJFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGZvcm1hdCwgR0xl bnVtIHR5cGUsIEdMdm9pZCAqaW1hZ2UpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUQ09OVk9M VVRJT05QQVJBTUVURVJGVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdM ZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRDT05WT0xVVElPTlBBUkFN RVRFUklWRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFt cyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRTRVBBUkFCTEVGSUxURVJFWFRQUk9DKSAoR0xl bnVtIHRhcmdldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqcm93LCBHTHZv aWQgKmNvbHVtbiwgR0x2b2lkICpzcGFuKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFUEFSQUJM RUZJTFRFUjJERVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl LCBjb25zdCBHTHZvaWQgKnJvdywgY29uc3QgR0x2b2lkICpjb2x1bW4pOwojIDE4NTYgIi4uLy4u Ly4uLy4uL2V4cG9ydHMvaW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbENvbG9yVGFi bGVTR0kgKEdMZW51bSwgR0xlbnVtLCBHTHNpemVpLCBHTGVudW0sIEdMZW51bSwgY29uc3QgR0x2 b2lkICopOwpleHRlcm4gdm9pZCBnbENvbG9yVGFibGVQYXJhbWV0ZXJmdlNHSSAoR0xlbnVtLCBH TGVudW0sIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsQ29sb3JUYWJsZVBhcmFtZXRl cml2U0dJIChHTGVudW0sIEdMZW51bSwgY29uc3QgR0xpbnQgKik7CmV4dGVybiB2b2lkIGdsQ29w eUNvbG9yVGFibGVTR0kgKEdMZW51bSwgR0xlbnVtLCBHTGludCwgR0xpbnQsIEdMc2l6ZWkpOwpl eHRlcm4gdm9pZCBnbEdldENvbG9yVGFibGVTR0kgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdM dm9pZCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRDb2xvclRhYmxlUGFyYW1ldGVyZnZTR0kgKEdMZW51 bSwgR0xlbnVtLCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbEdldENvbG9yVGFibGVQYXJhbWV0 ZXJpdlNHSSAoR0xlbnVtLCBHTGVudW0sIEdMaW50ICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5H TENPTE9SVEFCTEVTR0lQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0 LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lk ICp0YWJsZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUlRBQkxFUEFSQU1FVEVSRlZTR0lQ Uk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMp Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1JUQUJMRVBBUkFNRVRFUklWU0dJUFJPQykgKEdM ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYg dm9pZCAoICogUEZOR0xDT1BZQ09MT1JUQUJMRVNHSVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVu dW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMR0VUQ09MT1JUQUJMRVNHSVBST0MpIChHTGVudW0gdGFyZ2V0LCBH TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICp0YWJsZSk7CnR5cGVkZWYgdm9pZCAo ICogUEZOR0xHRVRDT0xPUlRBQkxFUEFSQU1FVEVSRlZTR0lQUk9DKSAoR0xlbnVtIHRhcmdldCwg R0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VU Q09MT1JUQUJMRVBBUkFNRVRFUklWU0dJUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt ZSwgR0xpbnQgKnBhcmFtcyk7CgoKCgoKZXh0ZXJuIHZvaWQgZ2xQaXhlbFRleEdlblNHSVggKEdM ZW51bSk7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxURVhHRU5TR0lYUFJPQykgKEdMZW51 bSBtb2RlKTsKCgoKCgpleHRlcm4gdm9pZCBnbFBpeGVsVGV4R2VuUGFyYW1ldGVyaVNHSVMgKEdM ZW51bSwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbFBpeGVsVGV4R2VuUGFyYW1ldGVyaXZTR0lTIChH TGVudW0sIGNvbnN0IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbFBpeGVsVGV4R2VuUGFyYW1ldGVy ZlNHSVMgKEdMZW51bSwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsUGl4ZWxUZXhHZW5QYXJhbWV0 ZXJmdlNHSVMgKEdMZW51bSwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRQaXhl bFRleEdlblBhcmFtZXRlcml2U0dJUyAoR0xlbnVtLCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xH ZXRQaXhlbFRleEdlblBhcmFtZXRlcmZ2U0dJUyAoR0xlbnVtLCBHTGZsb2F0ICopOwoKdHlwZWRl ZiB2b2lkICggKiBQRk5HTFBJWEVMVEVYR0VOUEFSQU1FVEVSSVNHSVNQUk9DKSAoR0xlbnVtIHBu YW1lLCBHTGludCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xQSVhFTFRFWEdFTlBBUkFN RVRFUklWU0dJU1BST0MpIChHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxURVhHRU5QQVJBTUVURVJGU0dJU1BST0MpIChHTGVudW0g cG5hbWUsIEdMZmxvYXQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxURVhHRU5Q QVJBTUVURVJGVlNHSVNQUk9DKSAoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMp Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUUElYRUxURVhHRU5QQVJBTUVURVJJVlNHSVNQUk9D KSAoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdF VFBJWEVMVEVYR0VOUEFSQU1FVEVSRlZTR0lTUFJPQykgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCAq cGFyYW1zKTsKCgoKCgpleHRlcm4gdm9pZCBnbFRleEltYWdlNERTR0lTIChHTGVudW0sIEdMaW50 LCBHTGVudW0sIEdMc2l6ZWksIEdMc2l6ZWksIEdMc2l6ZWksIEdMc2l6ZWksIEdMaW50LCBHTGVu dW0sIEdMZW51bSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbFRleFN1YkltYWdlNERT R0lTIChHTGVudW0sIEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCwgR0xzaXplaSwg R0xzaXplaSwgR0xzaXplaSwgR0xzaXplaSwgR0xlbnVtLCBHTGVudW0sIGNvbnN0IEdMdm9pZCAq KTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhJTUFHRTREU0dJU1BST0MpIChHTGVudW0gdGFy Z2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBH THNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xzaXplaSBzaXplNGQsIEdMaW50IGJvcmRl ciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTFRFWFNVQklNQUdFNERTR0lTUFJPQykgKEdMZW51bSB0YXJnZXQs IEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0 LCBHTGludCB3b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBk ZXB0aCwgR0xzaXplaSBzaXplNGQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBH THZvaWQgKnBpeGVscyk7CiMgMTkyMCAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL0dML2ds ZXh0LmgiCmV4dGVybiBHTGJvb2xlYW4gZ2xBcmVUZXh0dXJlc1Jlc2lkZW50RVhUIChHTHNpemVp LCBjb25zdCBHTHVpbnQgKiwgR0xib29sZWFuICopOwpleHRlcm4gdm9pZCBnbEJpbmRUZXh0dXJl RVhUIChHTGVudW0sIEdMdWludCk7CmV4dGVybiB2b2lkIGdsRGVsZXRlVGV4dHVyZXNFWFQgKEdM c2l6ZWksIGNvbnN0IEdMdWludCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZW5UZXh0dXJlc0VYVCAoR0xz aXplaSwgR0x1aW50ICopOwpleHRlcm4gR0xib29sZWFuIGdsSXNUZXh0dXJlRVhUIChHTHVpbnQp OwpleHRlcm4gdm9pZCBnbFByaW9yaXRpemVUZXh0dXJlc0VYVCAoR0xzaXplaSwgY29uc3QgR0x1 aW50ICosIGNvbnN0IEdMY2xhbXBmICopOwoKdHlwZWRlZiBHTGJvb2xlYW4gKCAqIFBGTkdMQVJF VEVYVFVSRVNSRVNJREVOVEVYVFBST0MpIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqdGV4dHVy ZXMsIEdMYm9vbGVhbiAqcmVzaWRlbmNlcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xCSU5EVEVY VFVSRUVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSk7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xERUxFVEVURVhUVVJFU0VYVFBST0MpIChHTHNpemVpIG4sIGNvbnN0IEdMdWlu dCAqdGV4dHVyZXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VOVEVYVFVSRVNFWFRQUk9DKSAo R0xzaXplaSBuLCBHTHVpbnQgKnRleHR1cmVzKTsKdHlwZWRlZiBHTGJvb2xlYW4gKCAqIFBGTkdM SVNURVhUVVJFRVhUUFJPQykgKEdMdWludCB0ZXh0dXJlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TFBSSU9SSVRJWkVURVhUVVJFU0VYVFBST0MpIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqdGV4 dHVyZXMsIGNvbnN0IEdMY2xhbXBmICpwcmlvcml0aWVzKTsKCgoKCgpleHRlcm4gdm9pZCBnbERl dGFpbFRleEZ1bmNTR0lTIChHTGVudW0sIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVy biB2b2lkIGdsR2V0RGV0YWlsVGV4RnVuY1NHSVMgKEdMZW51bSwgR0xmbG9hdCAqKTsKCnR5cGVk ZWYgdm9pZCAoICogUEZOR0xERVRBSUxURVhGVU5DU0dJU1BST0MpIChHTGVudW0gdGFyZ2V0LCBH THNpemVpIG4sIGNvbnN0IEdMZmxvYXQgKnBvaW50cyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xH RVRERVRBSUxURVhGVU5DU0dJU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGZsb2F0ICpwb2ludHMp OwoKCgoKCmV4dGVybiB2b2lkIGdsU2hhcnBlblRleEZ1bmNTR0lTIChHTGVudW0sIEdMc2l6ZWks IGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsR2V0U2hhcnBlblRleEZ1bmNTR0lTIChH TGVudW0sIEdMZmxvYXQgKik7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0hBUlBFTlRFWEZVTkNT R0lTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbiwgY29uc3QgR0xmbG9hdCAqcG9pbnRz KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVFNIQVJQRU5URVhGVU5DU0dJU1BST0MpIChHTGVu dW0gdGFyZ2V0LCBHTGZsb2F0ICpwb2ludHMpOwojIDE5NjYgIi4uLy4uLy4uLy4uL2V4cG9ydHMv aW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbFNhbXBsZU1hc2tTR0lTIChHTGNsYW1w ZiwgR0xib29sZWFuKTsKZXh0ZXJuIHZvaWQgZ2xTYW1wbGVQYXR0ZXJuU0dJUyAoR0xlbnVtKTsK CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTQU1QTEVNQVNLU0dJU1BST0MpIChHTGNsYW1wZiB2YWx1 ZSwgR0xib29sZWFuIGludmVydCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTQU1QTEVQQVRURVJO U0dJU1BST0MpIChHTGVudW0gcGF0dGVybik7CiMgMTk4MCAiLi4vLi4vLi4vLi4vZXhwb3J0cy9p bmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsQXJyYXlFbGVtZW50RVhUIChHTGludCk7 CmV4dGVybiB2b2lkIGdsQ29sb3JQb2ludGVyRVhUIChHTGludCwgR0xlbnVtLCBHTHNpemVpLCBH THNpemVpLCBjb25zdCBHTHZvaWQgKik7CmV4dGVybiB2b2lkIGdsRHJhd0FycmF5c0VYVCAoR0xl bnVtLCBHTGludCwgR0xzaXplaSk7CmV4dGVybiB2b2lkIGdsRWRnZUZsYWdQb2ludGVyRVhUIChH THNpemVpLCBHTHNpemVpLCBjb25zdCBHTGJvb2xlYW4gKik7CmV4dGVybiB2b2lkIGdsR2V0UG9p bnRlcnZFWFQgKEdMZW51bSwgR0x2b2lkKiAqKTsKZXh0ZXJuIHZvaWQgZ2xJbmRleFBvaW50ZXJF WFQgKEdMZW51bSwgR0xzaXplaSwgR0xzaXplaSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4gdm9p ZCBnbE5vcm1hbFBvaW50ZXJFWFQgKEdMZW51bSwgR0xzaXplaSwgR0xzaXplaSwgY29uc3QgR0x2 b2lkICopOwpleHRlcm4gdm9pZCBnbFRleENvb3JkUG9pbnRlckVYVCAoR0xpbnQsIEdMZW51bSwg R0xzaXplaSwgR0xzaXplaSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbFZlcnRleFBv aW50ZXJFWFQgKEdMaW50LCBHTGVudW0sIEdMc2l6ZWksIEdMc2l6ZWksIGNvbnN0IEdMdm9pZCAq KTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xBUlJBWUVMRU1FTlRFWFRQUk9DKSAoR0xpbnQgaSk7 CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUlBPSU5URVJFWFRQUk9DKSAoR0xpbnQgc2l6ZSwg R0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHZvaWQg KnBvaW50ZXIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRFJBV0FSUkFZU0VYVFBST0MpIChHTGVu dW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMRURHRUZMQUdQT0lOVEVSRVhUUFJPQykgKEdMc2l6ZWkgc3RyaWRlLCBHTHNpemVpIGNvdW50 LCBjb25zdCBHTGJvb2xlYW4gKnBvaW50ZXIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUUE9J TlRFUlZFWFRQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTHZvaWQqICpwYXJhbXMpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMSU5ERVhQT0lOVEVSRVhUUFJPQykgKEdMZW51bSB0eXBlLCBHTHNpemVpIHN0 cmlkZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTE5PUk1BTFBPSU5URVJFWFRQUk9DKSAoR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3Ry aWRlLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOwp0eXBlZGVmIHZvaWQg KCAqIFBGTkdMVEVYQ09PUkRQT0lOVEVSRVhUUFJPQykgKEdMaW50IHNpemUsIEdMZW51bSB0eXBl LCBHTHNpemVpIHN0cmlkZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWFBPSU5URVJFWFRQUk9DKSAoR0xpbnQgc2l6ZSwg R0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHZvaWQg KnBvaW50ZXIpOwojIDIwMjggIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9HTC9nbGV4dC5o IgpleHRlcm4gdm9pZCBnbEJsZW5kRXF1YXRpb25FWFQgKEdMZW51bSk7Cgp0eXBlZGVmIHZvaWQg KCAqIFBGTkdMQkxFTkRFUVVBVElPTkVYVFBST0MpIChHTGVudW0gbW9kZSk7CiMgMjA1NiAiLi4v Li4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsU3ByaXRl UGFyYW1ldGVyZlNHSVggKEdMZW51bSwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsU3ByaXRlUGFy YW1ldGVyZnZTR0lYIChHTGVudW0sIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsU3By aXRlUGFyYW1ldGVyaVNHSVggKEdMZW51bSwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbFNwcml0ZVBh cmFtZXRlcml2U0dJWCAoR0xlbnVtLCBjb25zdCBHTGludCAqKTsKCnR5cGVkZWYgdm9pZCAoICog UEZOR0xTUFJJVEVQQVJBTUVURVJGU0dJWFBST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFy YW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU1BSSVRFUEFSQU1FVEVSRlZTR0lYUFJPQykgKEdM ZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TFNQUklURVBBUkFNRVRFUklTR0lYUFJPQykgKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMU1BSSVRFUEFSQU1FVEVSSVZTR0lYUFJPQykgKEdMZW51bSBw bmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CiMgMjA3NCAiLi4vLi4vLi4vLi4vZXhwb3J0cy9p bmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsUG9pbnRQYXJhbWV0ZXJmRVhUIChHTGVu dW0sIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbFBvaW50UGFyYW1ldGVyZnZFWFQgKEdMZW51bSwg Y29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xQb2ludFBhcmFtZXRlcmZTR0lTIChHTGVu dW0sIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbFBvaW50UGFyYW1ldGVyZnZTR0lTIChHTGVudW0s IGNvbnN0IEdMZmxvYXQgKik7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUE9JTlRQQVJBTUVURVJG RVhUUFJPQykgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICog UEZOR0xQT0lOVFBBUkFNRVRFUkZWRVhUUFJPQykgKEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9h dCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFBPSU5UUEFSQU1FVEVSRlNHSVNQUk9D KSAoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFBP SU5UUEFSQU1FVEVSRlZTR0lTUFJPQykgKEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFy YW1zKTsKCgoKCgpleHRlcm4gR0xpbnQgZ2xHZXRJbnN0cnVtZW50c1NHSVggKHZvaWQpOwpleHRl cm4gdm9pZCBnbEluc3RydW1lbnRzQnVmZmVyU0dJWCAoR0xzaXplaSwgR0xpbnQgKik7CmV4dGVy biBHTGludCBnbFBvbGxJbnN0cnVtZW50c1NHSVggKEdMaW50ICopOwpleHRlcm4gdm9pZCBnbFJl YWRJbnN0cnVtZW50c1NHSVggKEdMaW50KTsKZXh0ZXJuIHZvaWQgZ2xTdGFydEluc3RydW1lbnRz U0dJWCAodm9pZCk7CmV4dGVybiB2b2lkIGdsU3RvcEluc3RydW1lbnRzU0dJWCAoR0xpbnQpOwoK dHlwZWRlZiBHTGludCAoICogUEZOR0xHRVRJTlNUUlVNRU5UU1NHSVhQUk9DKSAodm9pZCk7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xJTlNUUlVNRU5UU0JVRkZFUlNHSVhQUk9DKSAoR0xzaXplaSBz aXplLCBHTGludCAqYnVmZmVyKTsKdHlwZWRlZiBHTGludCAoICogUEZOR0xQT0xMSU5TVFJVTUVO VFNTR0lYUFJPQykgKEdMaW50ICptYXJrZXJfcCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRUFE SU5TVFJVTUVOVFNTR0lYUFJPQykgKEdMaW50IG1hcmtlcik7CnR5cGVkZWYgdm9pZCAoICogUEZO R0xTVEFSVElOU1RSVU1FTlRTU0dJWFBST0MpICh2b2lkKTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TFNUT1BJTlNUUlVNRU5UU1NHSVhQUk9DKSAoR0xpbnQgbWFya2VyKTsKIyAyMTEwICIuLi8uLi8u Li8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xGcmFtZVpvb21T R0lYIChHTGludCk7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRlJBTUVaT09NU0dJWFBST0MpIChH TGludCBmYWN0b3IpOwoKCgoKCmV4dGVybiB2b2lkIGdsVGFnU2FtcGxlQnVmZmVyU0dJWCAodm9p ZCk7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEFHU0FNUExFQlVGRkVSU0dJWFBST0MpICh2b2lk KTsKCgoKCgpleHRlcm4gdm9pZCBnbERlZm9ybWF0aW9uTWFwM2RTR0lYIChHTGVudW0sIEdMZG91 YmxlLCBHTGRvdWJsZSwgR0xpbnQsIEdMaW50LCBHTGRvdWJsZSwgR0xkb3VibGUsIEdMaW50LCBH TGludCwgR0xkb3VibGUsIEdMZG91YmxlLCBHTGludCwgR0xpbnQsIGNvbnN0IEdMZG91YmxlICop OwpleHRlcm4gdm9pZCBnbERlZm9ybWF0aW9uTWFwM2ZTR0lYIChHTGVudW0sIEdMZmxvYXQsIEdM ZmxvYXQsIEdMaW50LCBHTGludCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xpbnQsIEdMaW50LCBHTGZs b2F0LCBHTGZsb2F0LCBHTGludCwgR0xpbnQsIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lk IGdsRGVmb3JtU0dJWCAoR0xiaXRmaWVsZCk7CmV4dGVybiB2b2lkIGdsTG9hZElkZW50aXR5RGVm b3JtYXRpb25NYXBTR0lYIChHTGJpdGZpZWxkKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xERUZP Uk1BVElPTk1BUDNEU0dJWFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSB1MSwgR0xkb3Vi bGUgdTIsIEdMaW50IHVzdHJpZGUsIEdMaW50IHVvcmRlciwgR0xkb3VibGUgdjEsIEdMZG91Ymxl IHYyLCBHTGludCB2c3RyaWRlLCBHTGludCB2b3JkZXIsIEdMZG91YmxlIHcxLCBHTGRvdWJsZSB3 MiwgR0xpbnQgd3N0cmlkZSwgR0xpbnQgd29yZGVyLCBjb25zdCBHTGRvdWJsZSAqcG9pbnRzKTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTERFRk9STUFUSU9OTUFQM0ZTR0lYUFJPQykgKEdMZW51bSB0 YXJnZXQsIEdMZmxvYXQgdTEsIEdMZmxvYXQgdTIsIEdMaW50IHVzdHJpZGUsIEdMaW50IHVvcmRl ciwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2MiwgR0xpbnQgdnN0cmlkZSwgR0xpbnQgdm9yZGVyLCBH TGZsb2F0IHcxLCBHTGZsb2F0IHcyLCBHTGludCB3c3RyaWRlLCBHTGludCB3b3JkZXIsIGNvbnN0 IEdMZmxvYXQgKnBvaW50cyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xERUZPUk1TR0lYUFJPQykg KEdMYml0ZmllbGQgbWFzayk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xMT0FESURFTlRJVFlERUZP Uk1BVElPTk1BUFNHSVhQUk9DKSAoR0xiaXRmaWVsZCBtYXNrKTsKCgoKCgpleHRlcm4gdm9pZCBn bFJlZmVyZW5jZVBsYW5lU0dJWCAoY29uc3QgR0xkb3VibGUgKik7Cgp0eXBlZGVmIHZvaWQgKCAq IFBGTkdMUkVGRVJFTkNFUExBTkVTR0lYUFJPQykgKGNvbnN0IEdMZG91YmxlICplcXVhdGlvbik7 CgoKCgoKZXh0ZXJuIHZvaWQgZ2xGbHVzaFJhc3RlclNHSVggKHZvaWQpOwoKdHlwZWRlZiB2b2lk ICggKiBQRk5HTEZMVVNIUkFTVEVSU0dJWFBST0MpICh2b2lkKTsKIyAyMTYwICIuLi8uLi8uLi8u Li9leHBvcnRzL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xGb2dGdW5jU0dJUyAo R0xzaXplaSwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRGb2dGdW5jU0dJUyAo Y29uc3QgR0xmbG9hdCAqKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xGT0dGVU5DU0dJU1BST0Mp IChHTHNpemVpIG4sIGNvbnN0IEdMZmxvYXQgKnBvaW50cyk7CnR5cGVkZWYgdm9pZCAoICogUEZO R0xHRVRGT0dGVU5DU0dJU1BST0MpIChjb25zdCBHTGZsb2F0ICpwb2ludHMpOwojIDIxNzQgIi4u Ly4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbEltYWdl VHJhbnNmb3JtUGFyYW1ldGVyaUhQIChHTGVudW0sIEdMZW51bSwgR0xpbnQpOwpleHRlcm4gdm9p ZCBnbEltYWdlVHJhbnNmb3JtUGFyYW1ldGVyZkhQIChHTGVudW0sIEdMZW51bSwgR0xmbG9hdCk7 CmV4dGVybiB2b2lkIGdsSW1hZ2VUcmFuc2Zvcm1QYXJhbWV0ZXJpdkhQIChHTGVudW0sIEdMZW51 bSwgY29uc3QgR0xpbnQgKik7CmV4dGVybiB2b2lkIGdsSW1hZ2VUcmFuc2Zvcm1QYXJhbWV0ZXJm dkhQIChHTGVudW0sIEdMZW51bSwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRJ bWFnZVRyYW5zZm9ybVBhcmFtZXRlcml2SFAgKEdMZW51bSwgR0xlbnVtLCBHTGludCAqKTsKZXh0 ZXJuIHZvaWQgZ2xHZXRJbWFnZVRyYW5zZm9ybVBhcmFtZXRlcmZ2SFAgKEdMZW51bSwgR0xlbnVt LCBHTGZsb2F0ICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTElNQUdFVFJBTlNGT1JNUEFSQU1F VEVSSUhQUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMSU1BR0VUUkFOU0ZPUk1QQVJBTUVURVJGSFBQUk9DKSAoR0xl bnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTElNQUdFVFJBTlNGT1JNUEFSQU1FVEVSSVZIUFBST0MpIChHTGVudW0gdGFyZ2V0LCBH TGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM SU1BR0VUUkFOU0ZPUk1QQVJBTUVURVJGVkhQUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBw bmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVElN QUdFVFJBTlNGT1JNUEFSQU1FVEVSSVZIUFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5h bWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUSU1BR0VUUkFOU0ZP Uk1QQVJBTUVURVJGVkhQUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9h dCAqcGFyYW1zKTsKIyAyMjAwICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2xleHQu aCIKZXh0ZXJuIHZvaWQgZ2xDb2xvclN1YlRhYmxlRVhUIChHTGVudW0sIEdMc2l6ZWksIEdMc2l6 ZWksIEdMZW51bSwgR0xlbnVtLCBjb25zdCBHTHZvaWQgKik7CmV4dGVybiB2b2lkIGdsQ29weUNv bG9yU3ViVGFibGVFWFQgKEdMZW51bSwgR0xzaXplaSwgR0xpbnQsIEdMaW50LCBHTHNpemVpKTsK CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUlNVQlRBQkxFRVhUUFJPQykgKEdMZW51bSB0YXJn ZXQsIEdMc2l6ZWkgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0 eXBlLCBjb25zdCBHTHZvaWQgKmRhdGEpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09QWUNPTE9S U1VCVEFCTEVFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzdGFydCwgR0xpbnQgeCwg R0xpbnQgeSwgR0xzaXplaSB3aWR0aCk7CiMgMjIxNCAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNs dWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsSGludFBHSSAoR0xlbnVtLCBHTGludCk7Cgp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMSElOVFBHSVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBt b2RlKTsKCgoKCgpleHRlcm4gdm9pZCBnbENvbG9yVGFibGVFWFQgKEdMZW51bSwgR0xlbnVtLCBH THNpemVpLCBHTGVudW0sIEdMZW51bSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4gdm9pZCBnbEdl dENvbG9yVGFibGVFWFQgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdm9pZCAqKTsKZXh0ZXJu IHZvaWQgZ2xHZXRDb2xvclRhYmxlUGFyYW1ldGVyaXZFWFQgKEdMZW51bSwgR0xlbnVtLCBHTGlu dCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRDb2xvclRhYmxlUGFyYW1ldGVyZnZFWFQgKEdMZW51bSwg R0xlbnVtLCBHTGZsb2F0ICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTE9SVEFCTEVFWFRQ Uk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTHNpemVpIHdpZHRo LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICp0YWJsZSk7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xHRVRDT0xPUlRBQkxFRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdM ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKmRhdGEpOwp0eXBlZGVmIHZvaWQgKCAq IFBGTkdMR0VUQ09MT1JUQUJMRVBBUkFNRVRFUklWRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdM ZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHRVRDT0xP UlRBQkxFUEFSQU1FVEVSRlZFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBH TGZsb2F0ICpwYXJhbXMpOwojIDIyNDAgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9HTC9n bGV4dC5oIgpleHRlcm4gdm9pZCBnbEdldExpc3RQYXJhbWV0ZXJmdlNHSVggKEdMdWludCwgR0xl bnVtLCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbEdldExpc3RQYXJhbWV0ZXJpdlNHSVggKEdM dWludCwgR0xlbnVtLCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xMaXN0UGFyYW1ldGVyZlNHSVgg KEdMdWludCwgR0xlbnVtLCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xMaXN0UGFyYW1ldGVyZnZT R0lYIChHTHVpbnQsIEdMZW51bSwgY29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xMaXN0 UGFyYW1ldGVyaVNHSVggKEdMdWludCwgR0xlbnVtLCBHTGludCk7CmV4dGVybiB2b2lkIGdsTGlz dFBhcmFtZXRlcml2U0dJWCAoR0x1aW50LCBHTGVudW0sIGNvbnN0IEdMaW50ICopOwoKdHlwZWRl ZiB2b2lkICggKiBQRk5HTEdFVExJU1RQQVJBTUVURVJGVlNHSVhQUk9DKSAoR0x1aW50IGxpc3Qs IEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdF VExJU1RQQVJBTUVURVJJVlNHSVhQUk9DKSAoR0x1aW50IGxpc3QsIEdMZW51bSBwbmFtZSwgR0xp bnQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xMSVNUUEFSQU1FVEVSRlNHSVhQUk9D KSAoR0x1aW50IGxpc3QsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xMSVNUUEFSQU1FVEVSRlZTR0lYUFJPQykgKEdMdWludCBsaXN0LCBHTGVudW0g cG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xMSVNU UEFSQU1FVEVSSVNHSVhQUk9DKSAoR0x1aW50IGxpc3QsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFy YW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTElTVFBBUkFNRVRFUklWU0dJWFBST0MpIChHTHVp bnQgbGlzdCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKIyAyMjc4ICIuLi8u Li8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xJbmRleE1h dGVyaWFsRVhUIChHTGVudW0sIEdMZW51bSk7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMSU5ERVhN QVRFUklBTEVYVFBST0MpIChHTGVudW0gZmFjZSwgR0xlbnVtIG1vZGUpOwoKCgoKCmV4dGVybiB2 b2lkIGdsSW5kZXhGdW5jRVhUIChHTGVudW0sIEdMY2xhbXBmKTsKCnR5cGVkZWYgdm9pZCAoICog UEZOR0xJTkRFWEZVTkNFWFRQUk9DKSAoR0xlbnVtIGZ1bmMsIEdMY2xhbXBmIHJlZik7CiMgMjI5 OCAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGds TG9ja0FycmF5c0VYVCAoR0xpbnQsIEdMc2l6ZWkpOwpleHRlcm4gdm9pZCBnbFVubG9ja0FycmF5 c0VYVCAodm9pZCk7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTE9DS0FSUkFZU0VYVFBST0MpIChH TGludCBmaXJzdCwgR0xzaXplaSBjb3VudCk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xVTkxPQ0tB UlJBWVNFWFRQUk9DKSAodm9pZCk7CgoKCgoKZXh0ZXJuIHZvaWQgZ2xDdWxsUGFyYW1ldGVyZHZF WFQgKEdMZW51bSwgR0xkb3VibGUgKik7CmV4dGVybiB2b2lkIGdsQ3VsbFBhcmFtZXRlcmZ2RVhU IChHTGVudW0sIEdMZmxvYXQgKik7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ1VMTFBBUkFNRVRF UkRWRVhUUFJPQykgKEdMZW51bSBwbmFtZSwgR0xkb3VibGUgKnBhcmFtcyk7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xDVUxMUEFSQU1FVEVSRlZFWFRQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGZsb2F0 ICpwYXJhbXMpOwojIDIzMjIgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9HTC9nbGV4dC5o IgpleHRlcm4gdm9pZCBnbEZyYWdtZW50Q29sb3JNYXRlcmlhbFNHSVggKEdMZW51bSwgR0xlbnVt KTsKZXh0ZXJuIHZvaWQgZ2xGcmFnbWVudExpZ2h0ZlNHSVggKEdMZW51bSwgR0xlbnVtLCBHTGZs b2F0KTsKZXh0ZXJuIHZvaWQgZ2xGcmFnbWVudExpZ2h0ZnZTR0lYIChHTGVudW0sIEdMZW51bSwg Y29uc3QgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xGcmFnbWVudExpZ2h0aVNHSVggKEdMZW51 bSwgR0xlbnVtLCBHTGludCk7CmV4dGVybiB2b2lkIGdsRnJhZ21lbnRMaWdodGl2U0dJWCAoR0xl bnVtLCBHTGVudW0sIGNvbnN0IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbEZyYWdtZW50TGlnaHRN b2RlbGZTR0lYIChHTGVudW0sIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbEZyYWdtZW50TGlnaHRN b2RlbGZ2U0dJWCAoR0xlbnVtLCBjb25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbEZyYWdt ZW50TGlnaHRNb2RlbGlTR0lYIChHTGVudW0sIEdMaW50KTsKZXh0ZXJuIHZvaWQgZ2xGcmFnbWVu dExpZ2h0TW9kZWxpdlNHSVggKEdMZW51bSwgY29uc3QgR0xpbnQgKik7CmV4dGVybiB2b2lkIGds RnJhZ21lbnRNYXRlcmlhbGZTR0lYIChHTGVudW0sIEdMZW51bSwgR0xmbG9hdCk7CmV4dGVybiB2 b2lkIGdsRnJhZ21lbnRNYXRlcmlhbGZ2U0dJWCAoR0xlbnVtLCBHTGVudW0sIGNvbnN0IEdMZmxv YXQgKik7CmV4dGVybiB2b2lkIGdsRnJhZ21lbnRNYXRlcmlhbGlTR0lYIChHTGVudW0sIEdMZW51 bSwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbEZyYWdtZW50TWF0ZXJpYWxpdlNHSVggKEdMZW51bSwg R0xlbnVtLCBjb25zdCBHTGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRGcmFnbWVudExpZ2h0ZnZT R0lYIChHTGVudW0sIEdMZW51bSwgR0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xHZXRGcmFnbWVu dExpZ2h0aXZTR0lYIChHTGVudW0sIEdMZW51bSwgR0xpbnQgKik7CmV4dGVybiB2b2lkIGdsR2V0 RnJhZ21lbnRNYXRlcmlhbGZ2U0dJWCAoR0xlbnVtLCBHTGVudW0sIEdMZmxvYXQgKik7CmV4dGVy biB2b2lkIGdsR2V0RnJhZ21lbnRNYXRlcmlhbGl2U0dJWCAoR0xlbnVtLCBHTGVudW0sIEdMaW50 ICopOwpleHRlcm4gdm9pZCBnbExpZ2h0RW52aVNHSVggKEdMZW51bSwgR0xpbnQpOwoKdHlwZWRl ZiB2b2lkICggKiBQRk5HTEZSQUdNRU5UQ09MT1JNQVRFUklBTFNHSVhQUk9DKSAoR0xlbnVtIGZh Y2UsIEdMZW51bSBtb2RlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5UTElHSFRGU0dJ WFBST0MpIChHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xGUkFHTUVOVExJR0hURlZTR0lYUFJPQykgKEdMZW51bSBsaWdodCwg R0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMRlJBR01FTlRMSUdIVElTR0lYUFJPQykgKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBH TGludCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xGUkFHTUVOVExJR0hUSVZTR0lYUFJP QykgKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5UTElHSFRNT0RFTEZTR0lYUFJPQykgKEdMZW51bSBw bmFtZSwgR0xmbG9hdCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xGUkFHTUVOVExJR0hU TU9ERUxGVlNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMRlJBR01FTlRMSUdIVE1PREVMSVNHSVhQUk9DKSAoR0xlbnVt IHBuYW1lLCBHTGludCBwYXJhbSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xGUkFHTUVOVExJR0hU TU9ERUxJVlNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5UTUFURVJJQUxGU0dJWFBST0MpIChHTGVudW0gZmFj ZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZS QUdNRU5UTUFURVJJQUxGVlNHSVhQUk9DKSAoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgY29u c3QgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZSQUdNRU5UTUFURVJJ QUxJU0dJWFBST0MpIChHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xGUkFHTUVOVE1BVEVSSUFMSVZTR0lYUFJPQykgKEdMZW51bSBm YWNlLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAq IFBGTkdMR0VURlJBR01FTlRMSUdIVEZWU0dJWFBST0MpIChHTGVudW0gbGlnaHQsIEdMZW51bSBw bmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdFVEZSQUdNRU5U TElHSFRJVlNHSVhQUk9DKSAoR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJh bXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VURlJBR01FTlRNQVRFUklBTEZWU0dJWFBST0Mp IChHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMR0VURlJBR01FTlRNQVRFUklBTElWU0dJWFBST0MpIChHTGVudW0gZmFjZSwg R0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTExJR0hU RU5WSVNHSVhQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CiMgMjM3MiAiLi4vLi4v Li4vLi4vZXhwb3J0cy9pbmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsRHJhd1Jhbmdl RWxlbWVudHNFWFQgKEdMZW51bSwgR0x1aW50LCBHTHVpbnQsIEdMc2l6ZWksIEdMZW51bSwgY29u c3QgR0x2b2lkICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTERSQVdSQU5HRUVMRU1FTlRTRVhU UFJPQykgKEdMZW51bSBtb2RlLCBHTHVpbnQgc3RhcnQsIEdMdWludCBlbmQsIEdMc2l6ZWkgY291 bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMpOwojIDIzODggIi4uLy4uLy4u Ly4uL2V4cG9ydHMvaW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbEFwcGx5VGV4dHVy ZUVYVCAoR0xlbnVtKTsKZXh0ZXJuIHZvaWQgZ2xUZXh0dXJlTGlnaHRFWFQgKEdMZW51bSk7CmV4 dGVybiB2b2lkIGdsVGV4dHVyZU1hdGVyaWFsRVhUIChHTGVudW0sIEdMZW51bSk7Cgp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMQVBQTFlURVhUVVJFRVhUUFJPQykgKEdMZW51bSBtb2RlKTsKdHlwZWRl ZiB2b2lkICggKiBQRk5HTFRFWFRVUkVMSUdIVEVYVFBST0MpIChHTGVudW0gcG5hbWUpOwp0eXBl ZGVmIHZvaWQgKCAqIFBGTkdMVEVYVFVSRU1BVEVSSUFMRVhUUFJPQykgKEdMZW51bSBmYWNlLCBH TGVudW0gbW9kZSk7CiMgMjQwOCAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL0dML2dsZXh0 LmgiCmV4dGVybiB2b2lkIGdsQXN5bmNNYXJrZXJTR0lYIChHTHVpbnQpOwpleHRlcm4gR0xpbnQg Z2xGaW5pc2hBc3luY1NHSVggKEdMdWludCAqKTsKZXh0ZXJuIEdMaW50IGdsUG9sbEFzeW5jU0dJ WCAoR0x1aW50ICopOwpleHRlcm4gR0x1aW50IGdsR2VuQXN5bmNNYXJrZXJzU0dJWCAoR0xzaXpl aSk7CmV4dGVybiB2b2lkIGdsRGVsZXRlQXN5bmNNYXJrZXJzU0dJWCAoR0x1aW50LCBHTHNpemVp KTsKZXh0ZXJuIEdMYm9vbGVhbiBnbElzQXN5bmNNYXJrZXJTR0lYIChHTHVpbnQpOwoKdHlwZWRl ZiB2b2lkICggKiBQRk5HTEFTWU5DTUFSS0VSU0dJWFBST0MpIChHTHVpbnQgbWFya2VyKTsKdHlw ZWRlZiBHTGludCAoICogUEZOR0xGSU5JU0hBU1lOQ1NHSVhQUk9DKSAoR0x1aW50ICptYXJrZXJw KTsKdHlwZWRlZiBHTGludCAoICogUEZOR0xQT0xMQVNZTkNTR0lYUFJPQykgKEdMdWludCAqbWFy a2VycCk7CnR5cGVkZWYgR0x1aW50ICggKiBQRk5HTEdFTkFTWU5DTUFSS0VSU1NHSVhQUk9DKSAo R0xzaXplaSByYW5nZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xERUxFVEVBU1lOQ01BUktFUlNT R0lYUFJPQykgKEdMdWludCBtYXJrZXIsIEdMc2l6ZWkgcmFuZ2UpOwp0eXBlZGVmIEdMYm9vbGVh biAoICogUEZOR0xJU0FTWU5DTUFSS0VSU0dJWFBST0MpIChHTHVpbnQgbWFya2VyKTsKIyAyNDM0 ICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xW ZXJ0ZXhQb2ludGVydklOVEVMIChHTGludCwgR0xlbnVtLCBjb25zdCBHTHZvaWQqICopOwpleHRl cm4gdm9pZCBnbE5vcm1hbFBvaW50ZXJ2SU5URUwgKEdMZW51bSwgY29uc3QgR0x2b2lkKiAqKTsK ZXh0ZXJuIHZvaWQgZ2xDb2xvclBvaW50ZXJ2SU5URUwgKEdMaW50LCBHTGVudW0sIGNvbnN0IEdM dm9pZCogKik7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmRQb2ludGVydklOVEVMIChHTGludCwgR0xl bnVtLCBjb25zdCBHTHZvaWQqICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWFBPSU5U RVJWSU5URUxQUk9DKSAoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKnBv aW50ZXIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTk9STUFMUE9JTlRFUlZJTlRFTFBST0MpIChH TGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRlcik7CnR5cGVkZWYgdm9pZCAoICogUEZO R0xDT0xPUlBPSU5URVJWSU5URUxQUk9DKSAoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIGNvbnN0 IEdMdm9pZCogKnBvaW50ZXIpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkRQT0lOVEVS VklOVEVMUFJPQykgKEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqICpwb2lu dGVyKTsKIyAyNDUyICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0 ZXJuIHZvaWQgZ2xQaXhlbFRyYW5zZm9ybVBhcmFtZXRlcmlFWFQgKEdMZW51bSwgR0xlbnVtLCBH TGludCk7CmV4dGVybiB2b2lkIGdsUGl4ZWxUcmFuc2Zvcm1QYXJhbWV0ZXJmRVhUIChHTGVudW0s IEdMZW51bSwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsUGl4ZWxUcmFuc2Zvcm1QYXJhbWV0ZXJp dkVYVCAoR0xlbnVtLCBHTGVudW0sIGNvbnN0IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbFBpeGVs VHJhbnNmb3JtUGFyYW1ldGVyZnZFWFQgKEdMZW51bSwgR0xlbnVtLCBjb25zdCBHTGZsb2F0ICop OwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTFBJWEVMVFJBTlNGT1JNUEFSQU1FVEVSSUVYVFBST0Mp IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTFBJWEVMVFJBTlNGT1JNUEFSQU1FVEVSRkVYVFBST0MpIChHTGVudW0gdGFyZ2V0 LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElY RUxUUkFOU0ZPUk1QQVJBTUVURVJJVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5h bWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUElYRUxUUkFO U0ZPUk1QQVJBTUVURVJGVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNv bnN0IEdMZmxvYXQgKnBhcmFtcyk7CiMgMjQ3OCAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRl L0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzYkVYVCAoR0xieXRlLCBH TGJ5dGUsIEdMYnl0ZSk7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzYnZFWFQgKGNvbnN0 IEdMYnl0ZSAqKTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjNkRVhUIChHTGRvdWJsZSwg R0xkb3VibGUsIEdMZG91YmxlKTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjNkdkVYVCAo Y29uc3QgR0xkb3VibGUgKik7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzZkVYVCAoR0xm bG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzZnZF WFQgKGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzaUVYVCAo R0xpbnQsIEdMaW50LCBHTGludCk7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzaXZFWFQg KGNvbnN0IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM3NFWFQgKEdMc2hv cnQsIEdMc2hvcnQsIEdMc2hvcnQpOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM3N2RVhU IChjb25zdCBHTHNob3J0ICopOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM3ViRVhUIChH THVieXRlLCBHTHVieXRlLCBHTHVieXRlKTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvcjN1 YnZFWFQgKGNvbnN0IEdMdWJ5dGUgKik7CmV4dGVybiB2b2lkIGdsU2Vjb25kYXJ5Q29sb3IzdWlF WFQgKEdMdWludCwgR0x1aW50LCBHTHVpbnQpOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9y M3VpdkVYVCAoY29uc3QgR0x1aW50ICopOwpleHRlcm4gdm9pZCBnbFNlY29uZGFyeUNvbG9yM3Vz RVhUIChHTHVzaG9ydCwgR0x1c2hvcnQsIEdMdXNob3J0KTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRh cnlDb2xvcjN1c3ZFWFQgKGNvbnN0IEdMdXNob3J0ICopOwpleHRlcm4gdm9pZCBnbFNlY29uZGFy eUNvbG9yUG9pbnRlckVYVCAoR0xpbnQsIEdMZW51bSwgR0xzaXplaSwgR0x2b2lkICopOwoKdHlw ZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM0JFWFRQUk9DKSAoR0xieXRlIHJlZCwg R0xieXRlIGdyZWVuLCBHTGJ5dGUgYmx1ZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRB UllDT0xPUjNCVkVYVFBST0MpIChjb25zdCBHTGJ5dGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMU0VDT05EQVJZQ09MT1IzREVYVFBST0MpIChHTGRvdWJsZSByZWQsIEdMZG91YmxlIGdyZWVu LCBHTGRvdWJsZSBibHVlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM0RW RVhUUFJPQykgKGNvbnN0IEdMZG91YmxlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09O REFSWUNPTE9SM0ZFWFRQUk9DKSAoR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQg Ymx1ZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNGVkVYVFBST0MpIChj b25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM0lF WFRQUk9DKSAoR0xpbnQgcmVkLCBHTGludCBncmVlbiwgR0xpbnQgYmx1ZSk7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNJVkVYVFBST0MpIChjb25zdCBHTGludCAqdik7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNTRVhUUFJPQykgKEdMc2hvcnQgcmVk LCBHTHNob3J0IGdyZWVuLCBHTHNob3J0IGJsdWUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VD T05EQVJZQ09MT1IzU1ZFWFRQUk9DKSAoY29uc3QgR0xzaG9ydCAqdik7CnR5cGVkZWYgdm9pZCAo ICogUEZOR0xTRUNPTkRBUllDT0xPUjNVQkVYVFBST0MpIChHTHVieXRlIHJlZCwgR0x1Ynl0ZSBn cmVlbiwgR0x1Ynl0ZSBibHVlKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9S M1VCVkVYVFBST0MpIChjb25zdCBHTHVieXRlICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNF Q09OREFSWUNPTE9SM1VJRVhUUFJPQykgKEdMdWludCByZWQsIEdMdWludCBncmVlbiwgR0x1aW50 IGJsdWUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMU0VDT05EQVJZQ09MT1IzVUlWRVhUUFJPQykg KGNvbnN0IEdMdWludCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUjNV U0VYVFBST0MpIChHTHVzaG9ydCByZWQsIEdMdXNob3J0IGdyZWVuLCBHTHVzaG9ydCBibHVlKTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTFNFQ09OREFSWUNPTE9SM1VTVkVYVFBST0MpIChjb25zdCBH THVzaG9ydCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xPUlBPSU5URVJF WFRQUk9DKSAoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTHZvaWQg KnBvaW50ZXIpOwoKCgoKCmV4dGVybiB2b2lkIGdsVGV4dHVyZU5vcm1hbEVYVCAoR0xlbnVtKTsK CnR5cGVkZWYgdm9pZCAoICogUEZOR0xURVhUVVJFTk9STUFMRVhUUFJPQykgKEdMZW51bSBtb2Rl KTsKCgoKCgpleHRlcm4gdm9pZCBnbE11bHRpRHJhd0FycmF5c0VYVCAoR0xlbnVtLCBHTGludCAq LCBHTHNpemVpICosIEdMc2l6ZWkpOwpleHRlcm4gdm9pZCBnbE11bHRpRHJhd0VsZW1lbnRzRVhU IChHTGVudW0sIGNvbnN0IEdMc2l6ZWkgKiwgR0xlbnVtLCBjb25zdCBHTHZvaWQqICosIEdMc2l6 ZWkpOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTE1VTFRJRFJBV0FSUkFZU0VYVFBST0MpIChHTGVu dW0gbW9kZSwgR0xpbnQgKmZpcnN0LCBHTHNpemVpICpjb3VudCwgR0xzaXplaSBwcmltY291bnQp Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTVVMVElEUkFXRUxFTUVOVFNFWFRQUk9DKSAoR0xlbnVt IG1vZGUsIGNvbnN0IEdMc2l6ZWkgKmNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiAq aW5kaWNlcywgR0xzaXplaSBwcmltY291bnQpOwoKCgoKCmV4dGVybiB2b2lkIGdsRm9nQ29vcmRm RVhUIChHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xGb2dDb29yZGZ2RVhUIChjb25zdCBHTGZsb2F0 ICopOwpleHRlcm4gdm9pZCBnbEZvZ0Nvb3JkZEVYVCAoR0xkb3VibGUpOwpleHRlcm4gdm9pZCBn bEZvZ0Nvb3JkZHZFWFQgKGNvbnN0IEdMZG91YmxlICopOwpleHRlcm4gdm9pZCBnbEZvZ0Nvb3Jk UG9pbnRlckVYVCAoR0xlbnVtLCBHTHNpemVpLCBjb25zdCBHTHZvaWQgKik7Cgp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMRk9HQ09PUkRGRVhUUFJPQykgKEdMZmxvYXQgY29vcmQpOwp0eXBlZGVmIHZv aWQgKCAqIFBGTkdMRk9HQ09PUkRGVkVYVFBST0MpIChjb25zdCBHTGZsb2F0ICpjb29yZCk7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xGT0dDT09SRERFWFRQUk9DKSAoR0xkb3VibGUgY29vcmQpOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMRk9HQ09PUkREVkVYVFBST0MpIChjb25zdCBHTGRvdWJsZSAq Y29vcmQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMRk9HQ09PUkRQT0lOVEVSRVhUUFJPQykgKEdM ZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsKIyAyNTU2 ICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xU YW5nZW50M2JFWFQgKEdMYnl0ZSwgR0xieXRlLCBHTGJ5dGUpOwpleHRlcm4gdm9pZCBnbFRhbmdl bnQzYnZFWFQgKGNvbnN0IEdMYnl0ZSAqKTsKZXh0ZXJuIHZvaWQgZ2xUYW5nZW50M2RFWFQgKEdM ZG91YmxlLCBHTGRvdWJsZSwgR0xkb3VibGUpOwpleHRlcm4gdm9pZCBnbFRhbmdlbnQzZHZFWFQg KGNvbnN0IEdMZG91YmxlICopOwpleHRlcm4gdm9pZCBnbFRhbmdlbnQzZkVYVCAoR0xmbG9hdCwg R0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsVGFuZ2VudDNmdkVYVCAoY29uc3QgR0xm bG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xUYW5nZW50M2lFWFQgKEdMaW50LCBHTGludCwgR0xpbnQp OwpleHRlcm4gdm9pZCBnbFRhbmdlbnQzaXZFWFQgKGNvbnN0IEdMaW50ICopOwpleHRlcm4gdm9p ZCBnbFRhbmdlbnQzc0VYVCAoR0xzaG9ydCwgR0xzaG9ydCwgR0xzaG9ydCk7CmV4dGVybiB2b2lk IGdsVGFuZ2VudDNzdkVYVCAoY29uc3QgR0xzaG9ydCAqKTsKZXh0ZXJuIHZvaWQgZ2xCaW5vcm1h bDNiRVhUIChHTGJ5dGUsIEdMYnl0ZSwgR0xieXRlKTsKZXh0ZXJuIHZvaWQgZ2xCaW5vcm1hbDNi dkVYVCAoY29uc3QgR0xieXRlICopOwpleHRlcm4gdm9pZCBnbEJpbm9ybWFsM2RFWFQgKEdMZG91 YmxlLCBHTGRvdWJsZSwgR0xkb3VibGUpOwpleHRlcm4gdm9pZCBnbEJpbm9ybWFsM2R2RVhUIChj b25zdCBHTGRvdWJsZSAqKTsKZXh0ZXJuIHZvaWQgZ2xCaW5vcm1hbDNmRVhUIChHTGZsb2F0LCBH TGZsb2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xCaW5vcm1hbDNmdkVYVCAoY29uc3QgR0xm bG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xCaW5vcm1hbDNpRVhUIChHTGludCwgR0xpbnQsIEdMaW50 KTsKZXh0ZXJuIHZvaWQgZ2xCaW5vcm1hbDNpdkVYVCAoY29uc3QgR0xpbnQgKik7CmV4dGVybiB2 b2lkIGdsQmlub3JtYWwzc0VYVCAoR0xzaG9ydCwgR0xzaG9ydCwgR0xzaG9ydCk7CmV4dGVybiB2 b2lkIGdsQmlub3JtYWwzc3ZFWFQgKGNvbnN0IEdMc2hvcnQgKik7CmV4dGVybiB2b2lkIGdsVGFu Z2VudFBvaW50ZXJFWFQgKEdMZW51bSwgR0xzaXplaSwgY29uc3QgR0x2b2lkICopOwpleHRlcm4g dm9pZCBnbEJpbm9ybWFsUG9pbnRlckVYVCAoR0xlbnVtLCBHTHNpemVpLCBjb25zdCBHTHZvaWQg Kik7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEFOR0VOVDNCRVhUUFJPQykgKEdMYnl0ZSB0eCwg R0xieXRlIHR5LCBHTGJ5dGUgdHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEFOR0VOVDNCVkVY VFBST0MpIChjb25zdCBHTGJ5dGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEFOR0VOVDNE RVhUUFJPQykgKEdMZG91YmxlIHR4LCBHTGRvdWJsZSB0eSwgR0xkb3VibGUgdHopOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMVEFOR0VOVDNEVkVYVFBST0MpIChjb25zdCBHTGRvdWJsZSAqdik7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xUQU5HRU5UM0ZFWFRQUk9DKSAoR0xmbG9hdCB0eCwgR0xmbG9h dCB0eSwgR0xmbG9hdCB0eik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xUQU5HRU5UM0ZWRVhUUFJP QykgKGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEFOR0VOVDNJRVhU UFJPQykgKEdMaW50IHR4LCBHTGludCB0eSwgR0xpbnQgdHopOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMVEFOR0VOVDNJVkVYVFBST0MpIChjb25zdCBHTGludCAqdik7CnR5cGVkZWYgdm9pZCAoICog UEZOR0xUQU5HRU5UM1NFWFRQUk9DKSAoR0xzaG9ydCB0eCwgR0xzaG9ydCB0eSwgR0xzaG9ydCB0 eik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xUQU5HRU5UM1NWRVhUUFJPQykgKGNvbnN0IEdMc2hv cnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklOT1JNQUwzQkVYVFBST0MpIChHTGJ5dGUg YngsIEdMYnl0ZSBieSwgR0xieXRlIGJ6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEJJTk9STUFM M0JWRVhUUFJPQykgKGNvbnN0IEdMYnl0ZSAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xCSU5P Uk1BTDNERVhUUFJPQykgKEdMZG91YmxlIGJ4LCBHTGRvdWJsZSBieSwgR0xkb3VibGUgYnopOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklOT1JNQUwzRFZFWFRQUk9DKSAoY29uc3QgR0xkb3VibGUg KnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklOT1JNQUwzRkVYVFBST0MpIChHTGZsb2F0IGJ4 LCBHTGZsb2F0IGJ5LCBHTGZsb2F0IGJ6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEJJTk9STUFM M0ZWRVhUUFJPQykgKGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQklO T1JNQUwzSUVYVFBST0MpIChHTGludCBieCwgR0xpbnQgYnksIEdMaW50IGJ6KTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTEJJTk9STUFMM0lWRVhUUFJPQykgKGNvbnN0IEdMaW50ICp2KTsKdHlwZWRl ZiB2b2lkICggKiBQRk5HTEJJTk9STUFMM1NFWFRQUk9DKSAoR0xzaG9ydCBieCwgR0xzaG9ydCBi eSwgR0xzaG9ydCBieik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xCSU5PUk1BTDNTVkVYVFBST0Mp IChjb25zdCBHTHNob3J0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRBTkdFTlRQT0lOVEVS RVhUUFJPQykgKEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwb2lu dGVyKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEJJTk9STUFMUE9JTlRFUkVYVFBST0MpIChHTGVu dW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7CiMgMjYyMiAi Li4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsRmlu aXNoVGV4dHVyZVNVTlggKHZvaWQpOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZJTklTSFRFWFRV UkVTVU5YUFJPQykgKHZvaWQpOwoKCgoKCmV4dGVybiB2b2lkIGdsR2xvYmFsQWxwaGFGYWN0b3Ji U1VOIChHTGJ5dGUpOwpleHRlcm4gdm9pZCBnbEdsb2JhbEFscGhhRmFjdG9yc1NVTiAoR0xzaG9y dCk7CmV4dGVybiB2b2lkIGdsR2xvYmFsQWxwaGFGYWN0b3JpU1VOIChHTGludCk7CmV4dGVybiB2 b2lkIGdsR2xvYmFsQWxwaGFGYWN0b3JmU1VOIChHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xHbG9i YWxBbHBoYUZhY3RvcmRTVU4gKEdMZG91YmxlKTsKZXh0ZXJuIHZvaWQgZ2xHbG9iYWxBbHBoYUZh Y3RvcnViU1VOIChHTHVieXRlKTsKZXh0ZXJuIHZvaWQgZ2xHbG9iYWxBbHBoYUZhY3RvcnVzU1VO IChHTHVzaG9ydCk7CmV4dGVybiB2b2lkIGdsR2xvYmFsQWxwaGFGYWN0b3J1aVNVTiAoR0x1aW50 KTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xHTE9CQUxBTFBIQUZBQ1RPUkJTVU5QUk9DKSAoR0xi eXRlIGZhY3Rvcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHTE9CQUxBTFBIQUZBQ1RPUlNTVU5Q Uk9DKSAoR0xzaG9ydCBmYWN0b3IpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0xPQkFMQUxQSEFG QUNUT1JJU1VOUFJPQykgKEdMaW50IGZhY3Rvcik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xHTE9C QUxBTFBIQUZBQ1RPUkZTVU5QUk9DKSAoR0xmbG9hdCBmYWN0b3IpOwp0eXBlZGVmIHZvaWQgKCAq IFBGTkdMR0xPQkFMQUxQSEFGQUNUT1JEU1VOUFJPQykgKEdMZG91YmxlIGZhY3Rvcik7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xHTE9CQUxBTFBIQUZBQ1RPUlVCU1VOUFJPQykgKEdMdWJ5dGUgZmFj dG9yKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdMT0JBTEFMUEhBRkFDVE9SVVNTVU5QUk9DKSAo R0x1c2hvcnQgZmFjdG9yKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTEdMT0JBTEFMUEhBRkFDVE9S VUlTVU5QUk9DKSAoR0x1aW50IGZhY3Rvcik7CgoKCgoKZXh0ZXJuIHZvaWQgZ2xSZXBsYWNlbWVu dENvZGV1aVNVTiAoR0x1aW50KTsKZXh0ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1c1NVTiAo R0x1c2hvcnQpOwpleHRlcm4gdm9pZCBnbFJlcGxhY2VtZW50Q29kZXViU1VOIChHTHVieXRlKTsK ZXh0ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1aXZTVU4gKGNvbnN0IEdMdWludCAqKTsKZXh0 ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1c3ZTVU4gKGNvbnN0IEdMdXNob3J0ICopOwpleHRl cm4gdm9pZCBnbFJlcGxhY2VtZW50Q29kZXVidlNVTiAoY29uc3QgR0x1Ynl0ZSAqKTsKZXh0ZXJu IHZvaWQgZ2xSZXBsYWNlbWVudENvZGVQb2ludGVyU1VOIChHTGVudW0sIEdMc2l6ZWksIGNvbnN0 IEdMdm9pZCogKik7Cgp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlTVU5Q Uk9DKSAoR0x1aW50IGNvZGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RF VVNTVU5QUk9DKSAoR0x1c2hvcnQgY29kZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNF TUVOVENPREVVQlNVTlBST0MpIChHTHVieXRlIGNvZGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdM UkVQTEFDRU1FTlRDT0RFVUlWU1VOUFJPQykgKGNvbnN0IEdMdWludCAqY29kZSk7CnR5cGVkZWYg dm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVU1ZTVU5QUk9DKSAoY29uc3QgR0x1c2hvcnQg KmNvZGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUJWU1VOUFJPQykg KGNvbnN0IEdMdWJ5dGUgKmNvZGUpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRD T0RFUE9JTlRFUlNVTlBST0MpIChHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdM dm9pZCogKnBvaW50ZXIpOwoKCgoKCmV4dGVybiB2b2lkIGdsQ29sb3I0dWJWZXJ0ZXgyZlNVTiAo R0x1Ynl0ZSwgR0x1Ynl0ZSwgR0x1Ynl0ZSwgR0x1Ynl0ZSwgR0xmbG9hdCwgR0xmbG9hdCk7CmV4 dGVybiB2b2lkIGdsQ29sb3I0dWJWZXJ0ZXgyZnZTVU4gKGNvbnN0IEdMdWJ5dGUgKiwgY29uc3Qg R0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xDb2xvcjR1YlZlcnRleDNmU1VOIChHTHVieXRlLCBH THVieXRlLCBHTHVieXRlLCBHTHVieXRlLCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsKZXh0 ZXJuIHZvaWQgZ2xDb2xvcjR1YlZlcnRleDNmdlNVTiAoY29uc3QgR0x1Ynl0ZSAqLCBjb25zdCBH TGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbENvbG9yM2ZWZXJ0ZXgzZlNVTiAoR0xmbG9hdCwgR0xm bG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGds Q29sb3IzZlZlcnRleDNmdlNVTiAoY29uc3QgR0xmbG9hdCAqLCBjb25zdCBHTGZsb2F0ICopOwpl eHRlcm4gdm9pZCBnbE5vcm1hbDNmVmVydGV4M2ZTVU4gKEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxv YXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbE5vcm1hbDNmVmVy dGV4M2Z2U1VOIChjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lk IGdsQ29sb3I0Zk5vcm1hbDNmVmVydGV4M2ZTVU4gKEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQs IEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdM ZmxvYXQpOwpleHRlcm4gdm9pZCBnbENvbG9yNGZOb3JtYWwzZlZlcnRleDNmdlNVTiAoY29uc3Qg R0xmbG9hdCAqLCBjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lk IGdsVGV4Q29vcmQyZlZlcnRleDNmU1VOIChHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZs b2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJmVmVydGV4M2Z2U1VOIChjb25z dCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQ0ZlZl cnRleDRmU1VOIChHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBH TGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDRmVmVydGV4 NGZ2U1VOIChjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGds VGV4Q29vcmQyZkNvbG9yNHViVmVydGV4M2ZTVU4gKEdMZmxvYXQsIEdMZmxvYXQsIEdMdWJ5dGUs IEdMdWJ5dGUsIEdMdWJ5dGUsIEdMdWJ5dGUsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpl eHRlcm4gdm9pZCBnbFRleENvb3JkMmZDb2xvcjR1YlZlcnRleDNmdlNVTiAoY29uc3QgR0xmbG9h dCAqLCBjb25zdCBHTHVieXRlICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsVGV4 Q29vcmQyZkNvbG9yM2ZWZXJ0ZXgzZlNVTiAoR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xm bG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGds VGV4Q29vcmQyZkNvbG9yM2ZWZXJ0ZXgzZnZTVU4gKGNvbnN0IEdMZmxvYXQgKiwgY29uc3QgR0xm bG9hdCAqLCBjb25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMmZOb3JtYWwz ZlZlcnRleDNmU1VOIChHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0 LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDJmTm9y bWFsM2ZWZXJ0ZXgzZnZTVU4gKGNvbnN0IEdMZmxvYXQgKiwgY29uc3QgR0xmbG9hdCAqLCBjb25z dCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbFRleENvb3JkMmZDb2xvcjRmTm9ybWFsM2ZWZXJ0 ZXgzZlNVTiAoR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xm bG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9h dCk7CmV4dGVybiB2b2lkIGdsVGV4Q29vcmQyZkNvbG9yNGZOb3JtYWwzZlZlcnRleDNmdlNVTiAo Y29uc3QgR0xmbG9hdCAqLCBjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKiwgY29uc3Qg R0xmbG9hdCAqKTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZDRmQ29sb3I0Zk5vcm1hbDNmVmVydGV4 NGZTVU4gKEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxv YXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQs IEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbFRleENvb3JkNGZDb2xv cjRmTm9ybWFsM2ZWZXJ0ZXg0ZnZTVU4gKGNvbnN0IEdMZmxvYXQgKiwgY29uc3QgR0xmbG9hdCAq LCBjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsUmVwbGFj ZW1lbnRDb2RldWlWZXJ0ZXgzZlNVTiAoR0xlbnVtLCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0 KTsKZXh0ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1aVZlcnRleDNmdlNVTiAoY29uc3QgR0xl bnVtICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsUmVwbGFjZW1lbnRDb2RldWlD b2xvcjR1YlZlcnRleDNmU1VOIChHTGVudW0sIEdMdWJ5dGUsIEdMdWJ5dGUsIEdMdWJ5dGUsIEdM dWJ5dGUsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpleHRlcm4gdm9pZCBnbFJlcGxhY2Vt ZW50Q29kZXVpQ29sb3I0dWJWZXJ0ZXgzZnZTVU4gKGNvbnN0IEdMZW51bSAqLCBjb25zdCBHTHVi eXRlICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsUmVwbGFjZW1lbnRDb2RldWlD b2xvcjNmVmVydGV4M2ZTVU4gKEdMZW51bSwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xm bG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsUmVwbGFjZW1lbnRDb2RldWlD b2xvcjNmVmVydGV4M2Z2U1VOIChjb25zdCBHTGVudW0gKiwgY29uc3QgR0xmbG9hdCAqLCBjb25z dCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbFJlcGxhY2VtZW50Q29kZXVpTm9ybWFsM2ZWZXJ0 ZXgzZlNVTiAoR0xlbnVtLCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZs b2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1aU5vcm1hbDNmVmVy dGV4M2Z2U1VOIChjb25zdCBHTGVudW0gKiwgY29uc3QgR0xmbG9hdCAqLCBjb25zdCBHTGZsb2F0 ICopOwpleHRlcm4gdm9pZCBnbFJlcGxhY2VtZW50Q29kZXVpQ29sb3I0Zk5vcm1hbDNmVmVydGV4 M2ZTVU4gKEdMZW51bSwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9h dCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7CmV4dGVybiB2 b2lkIGdsUmVwbGFjZW1lbnRDb2RldWlDb2xvcjRmTm9ybWFsM2ZWZXJ0ZXgzZnZTVU4gKGNvbnN0 IEdMZW51bSAqLCBjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKiwgY29uc3QgR0xmbG9h dCAqKTsKZXh0ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1aVRleENvb3JkMmZWZXJ0ZXgzZlNV TiAoR0xlbnVtLCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsK ZXh0ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1aVRleENvb3JkMmZWZXJ0ZXgzZnZTVU4gKGNv bnN0IEdMZW51bSAqLCBjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2 b2lkIGdsUmVwbGFjZW1lbnRDb2RldWlUZXhDb29yZDJmTm9ybWFsM2ZWZXJ0ZXgzZlNVTiAoR0xl bnVtLCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0 LCBHTGZsb2F0LCBHTGZsb2F0KTsKZXh0ZXJuIHZvaWQgZ2xSZXBsYWNlbWVudENvZGV1aVRleENv b3JkMmZOb3JtYWwzZlZlcnRleDNmdlNVTiAoY29uc3QgR0xlbnVtICosIGNvbnN0IEdMZmxvYXQg KiwgY29uc3QgR0xmbG9hdCAqLCBjb25zdCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbFJlcGxh Y2VtZW50Q29kZXVpVGV4Q29vcmQyZkNvbG9yNGZOb3JtYWwzZlZlcnRleDNmU1VOIChHTGVudW0s IEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdM ZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwpleHRl cm4gdm9pZCBnbFJlcGxhY2VtZW50Q29kZXVpVGV4Q29vcmQyZkNvbG9yNGZOb3JtYWwzZlZlcnRl eDNmdlNVTiAoY29uc3QgR0xlbnVtICosIGNvbnN0IEdMZmxvYXQgKiwgY29uc3QgR0xmbG9hdCAq LCBjb25zdCBHTGZsb2F0ICosIGNvbnN0IEdMZmxvYXQgKik7Cgp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMQ09MT1I0VUJWRVJURVgyRlNVTlBST0MpIChHTHVieXRlIHIsIEdMdWJ5dGUgZywgR0x1Ynl0 ZSBiLCBHTHVieXRlIGEsIEdMZmxvYXQgeCwgR0xmbG9hdCB5KTsKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTENPTE9SNFVCVkVSVEVYMkZWU1VOUFJPQykgKGNvbnN0IEdMdWJ5dGUgKmMsIGNvbnN0IEdM ZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1I0VUJWRVJURVgzRlNVTlBST0Mp IChHTHVieXRlIHIsIEdMdWJ5dGUgZywgR0x1Ynl0ZSBiLCBHTHVieXRlIGEsIEdMZmxvYXQgeCwg R0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1I0VUJWRVJU RVgzRlZTVU5QUk9DKSAoY29uc3QgR0x1Ynl0ZSAqYywgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xDT0xPUjNGVkVSVEVYM0ZTVU5QUk9DKSAoR0xmbG9hdCByLCBHTGZs b2F0IGcsIEdMZmxvYXQgYiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xDT0xPUjNGVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQg KmMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMTk9STUFMM0ZWRVJU RVgzRlNVTlBST0MpIChHTGZsb2F0IG54LCBHTGZsb2F0IG55LCBHTGZsb2F0IG56LCBHTGZsb2F0 IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTE5PUk1BTDNG VkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQgKm4sIGNvbnN0IEdMZmxvYXQgKnYpOwp0 eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09MT1I0Rk5PUk1BTDNGVkVSVEVYM0ZTVU5QUk9DKSAoR0xm bG9hdCByLCBHTGZsb2F0IGcsIEdMZmxvYXQgYiwgR0xmbG9hdCBhLCBHTGZsb2F0IG54LCBHTGZs b2F0IG55LCBHTGZsb2F0IG56LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlw ZWRlZiB2b2lkICggKiBQRk5HTENPTE9SNEZOT1JNQUwzRlZFUlRFWDNGVlNVTlBST0MpIChjb25z dCBHTGZsb2F0ICpjLCBjb25zdCBHTGZsb2F0ICpuLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRl ZiB2b2lkICggKiBQRk5HTFRFWENPT1JEMkZWRVJURVgzRlNVTlBST0MpIChHTGZsb2F0IHMsIEdM ZmxvYXQgdCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAo ICogUEZOR0xURVhDT09SRDJGVkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQgKnRjLCBj b25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWENPT1JENEZWRVJURVg0 RlNVTlBST0MpIChHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCBwLCBHTGZsb2F0IHEsIEdM ZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyk7CnR5cGVkZWYgdm9pZCAo ICogUEZOR0xURVhDT09SRDRGVkVSVEVYNEZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQgKnRjLCBj b25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWENPT1JEMkZDT0xPUjRV QlZFUlRFWDNGU1VOUFJPQykgKEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTHVieXRlIHIsIEdMdWJ5 dGUgZywgR0x1Ynl0ZSBiLCBHTHVieXRlIGEsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0 IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQyRkNPTE9SNFVCVkVSVEVYM0ZWU1VO UFJPQykgKGNvbnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTHVieXRlICpjLCBjb25zdCBHTGZsb2F0 ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWENPT1JEMkZDT0xPUjNGVkVSVEVYM0ZTVU5Q Uk9DKSAoR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgciwgR0xmbG9hdCBnLCBHTGZsb2F0 IGIsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMVEVYQ09PUkQyRkNPTE9SM0ZWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0xmbG9hdCAqdGMs IGNvbnN0IEdMZmxvYXQgKmMsIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMVEVYQ09PUkQyRk5PUk1BTDNGVkVSVEVYM0ZTVU5QUk9DKSAoR0xmbG9hdCBzLCBHTGZsb2F0 IHQsIEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xmbG9h dCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQyRk5PUk1BTDNG VkVSVEVYM0ZWU1VOUFJPQykgKGNvbnN0IEdMZmxvYXQgKnRjLCBjb25zdCBHTGZsb2F0ICpuLCBj b25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRFWENPT1JEMkZDT0xPUjRG Tk9STUFMM0ZWRVJURVgzRlNVTlBST0MpIChHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCBy LCBHTGZsb2F0IGcsIEdMZmxvYXQgYiwgR0xmbG9hdCBhLCBHTGZsb2F0IG54LCBHTGZsb2F0IG55 LCBHTGZsb2F0IG56LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTFRFWENPT1JEMkZDT0xPUjRGTk9STUFMM0ZWRVJURVgzRlZTVU5QUk9DKSAo Y29uc3QgR0xmbG9hdCAqdGMsIGNvbnN0IEdMZmxvYXQgKmMsIGNvbnN0IEdMZmxvYXQgKm4sIGNv bnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQ0RkNPTE9SNEZO T1JNQUwzRlZFUlRFWDRGU1VOUFJPQykgKEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHAs IEdMZmxvYXQgcSwgR0xmbG9hdCByLCBHTGZsb2F0IGcsIEdMZmxvYXQgYiwgR0xmbG9hdCBhLCBH TGZsb2F0IG54LCBHTGZsb2F0IG55LCBHTGZsb2F0IG56LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwg R0xmbG9hdCB6LCBHTGZsb2F0IHcpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVEVYQ09PUkQ0RkNP TE9SNEZOT1JNQUwzRlZFUlRFWDRGVlNVTlBST0MpIChjb25zdCBHTGZsb2F0ICp0YywgY29uc3Qg R0xmbG9hdCAqYywgY29uc3QgR0xmbG9hdCAqbiwgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYg dm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVSVZFUlRFWDNGU1VOUFJPQykgKEdMZW51bSBy YywgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CnR5cGVkZWYgdm9pZCAoICogUEZO R0xSRVBMQUNFTUVOVENPREVVSVZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBHTGVudW0gKnJjLCBj b25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJ Q09MT1I0VUJWRVJURVgzRlNVTlBST0MpIChHTGVudW0gcmMsIEdMdWJ5dGUgciwgR0x1Ynl0ZSBn LCBHTHVieXRlIGIsIEdMdWJ5dGUgYSwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7 CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVSUNPTE9SNFVCVkVSVEVYM0ZW U1VOUFJPQykgKGNvbnN0IEdMZW51bSAqcmMsIGNvbnN0IEdMdWJ5dGUgKmMsIGNvbnN0IEdMZmxv YXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlDT0xPUjNGVkVS VEVYM0ZTVU5QUk9DKSAoR0xlbnVtIHJjLCBHTGZsb2F0IHIsIEdMZmxvYXQgZywgR0xmbG9hdCBi LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TFJFUExBQ0VNRU5UQ09ERVVJQ09MT1IzRlZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBHTGVudW0g KnJjLCBjb25zdCBHTGZsb2F0ICpjLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJTk9STUFMM0ZWRVJURVgzRlNVTlBST0MpIChHTGVudW0g cmMsIEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xmbG9h dCB5LCBHTGZsb2F0IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlO T1JNQUwzRlZFUlRFWDNGVlNVTlBST0MpIChjb25zdCBHTGVudW0gKnJjLCBjb25zdCBHTGZsb2F0 ICpuLCBjb25zdCBHTGZsb2F0ICp2KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFJFUExBQ0VNRU5U Q09ERVVJQ09MT1I0Rk5PUk1BTDNGVkVSVEVYM0ZTVU5QUk9DKSAoR0xlbnVtIHJjLCBHTGZsb2F0 IHIsIEdMZmxvYXQgZywgR0xmbG9hdCBiLCBHTGZsb2F0IGEsIEdMZmxvYXQgbngsIEdMZmxvYXQg bnksIEdMZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwp0eXBlZGVm IHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlDT0xPUjRGTk9STUFMM0ZWRVJURVgzRlZT VU5QUk9DKSAoY29uc3QgR0xlbnVtICpyYywgY29uc3QgR0xmbG9hdCAqYywgY29uc3QgR0xmbG9h dCAqbiwgY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVO VENPREVVSVRFWENPT1JEMkZWRVJURVgzRlNVTlBST0MpIChHTGVudW0gcmMsIEdMZmxvYXQgcywg R0xmbG9hdCB0LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJVEVYQ09PUkQyRlZFUlRFWDNGVlNVTlBST0MpIChj b25zdCBHTGVudW0gKnJjLCBjb25zdCBHTGZsb2F0ICp0YywgY29uc3QgR0xmbG9hdCAqdik7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xSRVBMQUNFTUVOVENPREVVSVRFWENPT1JEMkZOT1JNQUwzRlZF UlRFWDNGU1VOUFJPQykgKEdMZW51bSByYywgR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQg bngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnosIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0 IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlURVhDT09SRDJGTk9S TUFMM0ZWRVJURVgzRlZTVU5QUk9DKSAoY29uc3QgR0xlbnVtICpyYywgY29uc3QgR0xmbG9hdCAq dGMsIGNvbnN0IEdMZmxvYXQgKm4sIGNvbnN0IEdMZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAq IFBGTkdMUkVQTEFDRU1FTlRDT0RFVUlURVhDT09SRDJGQ09MT1I0Rk5PUk1BTDNGVkVSVEVYM0ZT VU5QUk9DKSAoR0xlbnVtIHJjLCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZs b2F0IGcsIEdMZmxvYXQgYiwgR0xmbG9hdCBhLCBHTGZsb2F0IG54LCBHTGZsb2F0IG55LCBHTGZs b2F0IG56LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTFJFUExBQ0VNRU5UQ09ERVVJVEVYQ09PUkQyRkNPTE9SNEZOT1JNQUwzRlZFUlRFWDNG VlNVTlBST0MpIChjb25zdCBHTGVudW0gKnJjLCBjb25zdCBHTGZsb2F0ICp0YywgY29uc3QgR0xm bG9hdCAqYywgY29uc3QgR0xmbG9hdCAqbiwgY29uc3QgR0xmbG9hdCAqdik7CgoKCgoKZXh0ZXJu IHZvaWQgZ2xCbGVuZEZ1bmNTZXBhcmF0ZUVYVCAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xl bnVtKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xCTEVOREZVTkNTRVBBUkFURUVYVFBST0MpIChH TGVudW0gc2ZhY3RvclJHQiwgR0xlbnVtIGRmYWN0b3JSR0IsIEdMZW51bSBzZmFjdG9yQWxwaGEs IEdMZW51bSBkZmFjdG9yQWxwaGEpOwojIDI4MDIgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVk ZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbFZlcnRleFdlaWdodGZFWFQgKEdMZmxvYXQpOwpl eHRlcm4gdm9pZCBnbFZlcnRleFdlaWdodGZ2RVhUIChjb25zdCBHTGZsb2F0ICopOwpleHRlcm4g dm9pZCBnbFZlcnRleFdlaWdodFBvaW50ZXJFWFQgKEdMc2l6ZWksIEdMZW51bSwgR0xzaXplaSwg Y29uc3QgR0x2b2lkICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTFZFUlRFWFdFSUdIVEZFWFRQ Uk9DKSAoR0xmbG9hdCB3ZWlnaHQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYV0VJR0hU RlZFWFRQUk9DKSAoY29uc3QgR0xmbG9hdCAqd2VpZ2h0KTsKdHlwZWRlZiB2b2lkICggKiBQRk5H TFZFUlRFWFdFSUdIVFBPSU5URVJFWFRQUk9DKSAoR0xzaXplaSBzaXplLCBHTGVudW0gdHlwZSwg R0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7CiMgMjgxOCAiLi4vLi4vLi4v Li4vZXhwb3J0cy9pbmNsdWRlL0dML2dsZXh0LmgiCmV4dGVybiB2b2lkIGdsRmx1c2hWZXJ0ZXhB cnJheVJhbmdlTlYgKHZvaWQpOwpleHRlcm4gdm9pZCBnbFZlcnRleEFycmF5UmFuZ2VOViAoR0xz aXplaSwgY29uc3QgR0x2b2lkICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTEZMVVNIVkVSVEVY QVJSQVlSQU5HRU5WUFJPQykgKHZvaWQpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMVkVSVEVYQVJS QVlSQU5HRU5WUFJPQykgKEdMc2l6ZWkgc2l6ZSwgY29uc3QgR0x2b2lkICpwb2ludGVyKTsKCgoK CgpleHRlcm4gdm9pZCBnbENvbWJpbmVyUGFyYW1ldGVyZnZOViAoR0xlbnVtLCBjb25zdCBHTGZs b2F0ICopOwpleHRlcm4gdm9pZCBnbENvbWJpbmVyUGFyYW1ldGVyZk5WIChHTGVudW0sIEdMZmxv YXQpOwpleHRlcm4gdm9pZCBnbENvbWJpbmVyUGFyYW1ldGVyaXZOViAoR0xlbnVtLCBjb25zdCBH TGludCAqKTsKZXh0ZXJuIHZvaWQgZ2xDb21iaW5lclBhcmFtZXRlcmlOViAoR0xlbnVtLCBHTGlu dCk7CmV4dGVybiB2b2lkIGdsQ29tYmluZXJJbnB1dE5WIChHTGVudW0sIEdMZW51bSwgR0xlbnVt LCBHTGVudW0sIEdMZW51bSwgR0xlbnVtKTsKZXh0ZXJuIHZvaWQgZ2xDb21iaW5lck91dHB1dE5W IChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGVudW0s IEdMYm9vbGVhbiwgR0xib29sZWFuLCBHTGJvb2xlYW4pOwpleHRlcm4gdm9pZCBnbEZpbmFsQ29t YmluZXJJbnB1dE5WIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGVudW0pOwpleHRlcm4gdm9p ZCBnbEdldENvbWJpbmVySW5wdXRQYXJhbWV0ZXJmdk5WIChHTGVudW0sIEdMZW51bSwgR0xlbnVt LCBHTGVudW0sIEdMZmxvYXQgKik7CmV4dGVybiB2b2lkIGdsR2V0Q29tYmluZXJJbnB1dFBhcmFt ZXRlcml2TlYgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xpbnQgKik7CmV4dGVy biB2b2lkIGdsR2V0Q29tYmluZXJPdXRwdXRQYXJhbWV0ZXJmdk5WIChHTGVudW0sIEdMZW51bSwg R0xlbnVtLCBHTGZsb2F0ICopOwpleHRlcm4gdm9pZCBnbEdldENvbWJpbmVyT3V0cHV0UGFyYW1l dGVyaXZOViAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xpbnQgKik7CmV4dGVybiB2b2lkIGds R2V0RmluYWxDb21iaW5lcklucHV0UGFyYW1ldGVyZnZOViAoR0xlbnVtLCBHTGVudW0sIEdMZmxv YXQgKik7CmV4dGVybiB2b2lkIGdsR2V0RmluYWxDb21iaW5lcklucHV0UGFyYW1ldGVyaXZOViAo R0xlbnVtLCBHTGVudW0sIEdMaW50ICopOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTUJJTkVS UEFSQU1FVEVSRlZOVlBST0MpIChHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7 CnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT01CSU5FUlBBUkFNRVRFUkZOVlBST0MpIChHTGVudW0g cG5hbWUsIEdMZmxvYXQgcGFyYW0pOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMQ09NQklORVJQQVJB TUVURVJJVk5WUFJPQykgKEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xDT01CSU5FUlBBUkFNRVRFUklOVlBST0MpIChHTGVudW0gcG5hbWUs IEdMaW50IHBhcmFtKTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTENPTUJJTkVSSU5QVVROVlBST0Mp IChHTGVudW0gc3RhZ2UsIEdMZW51bSBwb3J0aW9uLCBHTGVudW0gdmFyaWFibGUsIEdMZW51bSBp bnB1dCwgR0xlbnVtIG1hcHBpbmcsIEdMZW51bSBjb21wb25lbnRVc2FnZSk7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xDT01CSU5FUk9VVFBVVE5WUFJPQykgKEdMZW51bSBzdGFnZSwgR0xlbnVtIHBv cnRpb24sIEdMZW51bSBhYk91dHB1dCwgR0xlbnVtIGNkT3V0cHV0LCBHTGVudW0gc3VtT3V0cHV0 LCBHTGVudW0gc2NhbGUsIEdMZW51bSBiaWFzLCBHTGJvb2xlYW4gYWJEb3RQcm9kdWN0LCBHTGJv b2xlYW4gY2REb3RQcm9kdWN0LCBHTGJvb2xlYW4gbXV4U3VtKTsKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTEZJTkFMQ09NQklORVJJTlBVVE5WUFJPQykgKEdMZW51bSB2YXJpYWJsZSwgR0xlbnVtIGlu cHV0LCBHTGVudW0gbWFwcGluZywgR0xlbnVtIGNvbXBvbmVudFVzYWdlKTsKdHlwZWRlZiB2b2lk ICggKiBQRk5HTEdFVENPTUJJTkVSSU5QVVRQQVJBTUVURVJGVk5WUFJPQykgKEdMZW51bSBzdGFn ZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51bSB2YXJpYWJsZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0 ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VUQ09NQklORVJJTlBVVFBBUkFNRVRF UklWTlZQUk9DKSAoR0xlbnVtIHN0YWdlLCBHTGVudW0gcG9ydGlvbiwgR0xlbnVtIHZhcmlhYmxl LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMR0VU Q09NQklORVJPVVRQVVRQQVJBTUVURVJGVk5WUFJPQykgKEdMZW51bSBzdGFnZSwgR0xlbnVtIHBv cnRpb24sIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICggKiBQ Rk5HTEdFVENPTUJJTkVST1VUUFVUUEFSQU1FVEVSSVZOVlBST0MpIChHTGVudW0gc3RhZ2UsIEdM ZW51bSBwb3J0aW9uLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwp0eXBlZGVmIHZvaWQg KCAqIFBGTkdMR0VURklOQUxDT01CSU5FUklOUFVUUEFSQU1FVEVSRlZOVlBST0MpIChHTGVudW0g dmFyaWFibGUsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTEdFVEZJTkFMQ09NQklORVJJTlBVVFBBUkFNRVRFUklWTlZQUk9DKSAoR0xlbnVtIHZh cmlhYmxlLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwojIDI4NzYgIi4uLy4uLy4uLy4u L2V4cG9ydHMvaW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbFJlc2l6ZUJ1ZmZlcnNN RVNBICh2b2lkKTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xSRVNJWkVCVUZGRVJTTUVTQVBST0Mp ICh2b2lkKTsKCgoKCgpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczJkTUVTQSAoR0xkb3VibGUsIEdM ZG91YmxlKTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MyZHZNRVNBIChjb25zdCBHTGRvdWJsZSAq KTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MyZk1FU0EgKEdMZmxvYXQsIEdMZmxvYXQpOwpleHRl cm4gdm9pZCBnbFdpbmRvd1BvczJmdk1FU0EgKGNvbnN0IEdMZmxvYXQgKik7CmV4dGVybiB2b2lk IGdsV2luZG93UG9zMmlNRVNBIChHTGludCwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbFdpbmRvd1Bv czJpdk1FU0EgKGNvbnN0IEdMaW50ICopOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczJzTUVTQSAo R0xzaG9ydCwgR0xzaG9ydCk7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zMnN2TUVTQSAoY29uc3Qg R0xzaG9ydCAqKTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MzZE1FU0EgKEdMZG91YmxlLCBHTGRv dWJsZSwgR0xkb3VibGUpOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczNkdk1FU0EgKGNvbnN0IEdM ZG91YmxlICopOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczNmTUVTQSAoR0xmbG9hdCwgR0xmbG9h dCwgR0xmbG9hdCk7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zM2Z2TUVTQSAoY29uc3QgR0xmbG9h dCAqKTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3MzaU1FU0EgKEdMaW50LCBHTGludCwgR0xpbnQp OwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczNpdk1FU0EgKGNvbnN0IEdMaW50ICopOwpleHRlcm4g dm9pZCBnbFdpbmRvd1BvczNzTUVTQSAoR0xzaG9ydCwgR0xzaG9ydCwgR0xzaG9ydCk7CmV4dGVy biB2b2lkIGdsV2luZG93UG9zM3N2TUVTQSAoY29uc3QgR0xzaG9ydCAqKTsKZXh0ZXJuIHZvaWQg Z2xXaW5kb3dQb3M0ZE1FU0EgKEdMZG91YmxlLCBHTGRvdWJsZSwgR0xkb3VibGUsIEdMZG91Ymxl KTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3M0ZHZNRVNBIChjb25zdCBHTGRvdWJsZSAqKTsKZXh0 ZXJuIHZvaWQgZ2xXaW5kb3dQb3M0Zk1FU0EgKEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdM ZmxvYXQpOwpleHRlcm4gdm9pZCBnbFdpbmRvd1BvczRmdk1FU0EgKGNvbnN0IEdMZmxvYXQgKik7 CmV4dGVybiB2b2lkIGdsV2luZG93UG9zNGlNRVNBIChHTGludCwgR0xpbnQsIEdMaW50LCBHTGlu dCk7CmV4dGVybiB2b2lkIGdsV2luZG93UG9zNGl2TUVTQSAoY29uc3QgR0xpbnQgKik7CmV4dGVy biB2b2lkIGdsV2luZG93UG9zNHNNRVNBIChHTHNob3J0LCBHTHNob3J0LCBHTHNob3J0LCBHTHNo b3J0KTsKZXh0ZXJuIHZvaWQgZ2xXaW5kb3dQb3M0c3ZNRVNBIChjb25zdCBHTHNob3J0ICopOwoK dHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzJETUVTQVBST0MpIChHTGRvdWJsZSB4LCBH TGRvdWJsZSB5KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzJEVk1FU0FQUk9DKSAo Y29uc3QgR0xkb3VibGUgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TMkZNRVNB UFJPQykgKEdMZmxvYXQgeCwgR0xmbG9hdCB5KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRP V1BPUzJGVk1FU0FQUk9DKSAoY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZO R0xXSU5ET1dQT1MySU1FU0FQUk9DKSAoR0xpbnQgeCwgR0xpbnQgeSk7CnR5cGVkZWYgdm9pZCAo ICogUEZOR0xXSU5ET1dQT1MySVZNRVNBUFJPQykgKGNvbnN0IEdMaW50ICp2KTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTFdJTkRPV1BPUzJTTUVTQVBST0MpIChHTHNob3J0IHgsIEdMc2hvcnQgeSk7 CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MyU1ZNRVNBUFJPQykgKGNvbnN0IEdMc2hv cnQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TM0RNRVNBUFJPQykgKEdMZG91 YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lO RE9XUE9TM0RWTUVTQVBST0MpIChjb25zdCBHTGRvdWJsZSAqdik7CnR5cGVkZWYgdm9pZCAoICog UEZOR0xXSU5ET1dQT1MzRk1FU0FQUk9DKSAoR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQg eik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MzRlZNRVNBUFJPQykgKGNvbnN0IEdM ZmxvYXQgKnYpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TM0lNRVNBUFJPQykgKEdM aW50IHgsIEdMaW50IHksIEdMaW50IHopOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9T M0lWTUVTQVBST0MpIChjb25zdCBHTGludCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5E T1dQT1MzU01FU0FQUk9DKSAoR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeik7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1MzU1ZNRVNBUFJPQykgKGNvbnN0IEdMc2hvcnQgKnYp Owp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lORE9XUE9TNERNRVNBUFJPQykgKEdMZG91YmxlIHgs IEdMZG91YmxlIHksIEdMZG91YmxlIHosIEdMZG91YmxlIHcpOwp0eXBlZGVmIHZvaWQgKCAqIFBG TkdMV0lORE9XUE9TNERWTUVTQVBST0MpIChjb25zdCBHTGRvdWJsZSAqdik7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xXSU5ET1dQT1M0Rk1FU0FQUk9DKSAoR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdM ZmxvYXQgeiwgR0xmbG9hdCB3KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzRGVk1F U0FQUk9DKSAoY29uc3QgR0xmbG9hdCAqdik7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQ T1M0SU1FU0FQUk9DKSAoR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyk7CnR5cGVk ZWYgdm9pZCAoICogUEZOR0xXSU5ET1dQT1M0SVZNRVNBUFJPQykgKGNvbnN0IEdMaW50ICp2KTsK dHlwZWRlZiB2b2lkICggKiBQRk5HTFdJTkRPV1BPUzRTTUVTQVBST0MpIChHTHNob3J0IHgsIEdM c2hvcnQgeSwgR0xzaG9ydCB6LCBHTHNob3J0IHcpOwp0eXBlZGVmIHZvaWQgKCAqIFBGTkdMV0lO RE9XUE9TNFNWTUVTQVBST0MpIChjb25zdCBHTHNob3J0ICp2KTsKIyAyOTQyICIuLi8uLi8uLi8u Li9leHBvcnRzL2luY2x1ZGUvR0wvZ2xleHQuaCIKZXh0ZXJuIHZvaWQgZ2xNdWx0aU1vZGVEcmF3 QXJyYXlzSUJNIChHTGVudW0sIGNvbnN0IEdMaW50ICosIGNvbnN0IEdMc2l6ZWkgKiwgR0xzaXpl aSwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbE11bHRpTW9kZURyYXdFbGVtZW50c0lCTSAoY29uc3Qg R0xlbnVtICosIGNvbnN0IEdMc2l6ZWkgKiwgR0xlbnVtLCBjb25zdCBHTHZvaWQqICosIEdMc2l6 ZWksIEdMaW50KTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xNVUxUSU1PREVEUkFXQVJSQVlTSUJN UFJPQykgKEdMZW51bSBtb2RlLCBjb25zdCBHTGludCAqZmlyc3QsIGNvbnN0IEdMc2l6ZWkgKmNv dW50LCBHTHNpemVpIHByaW1jb3VudCwgR0xpbnQgbW9kZXN0cmlkZSk7CnR5cGVkZWYgdm9pZCAo ICogUEZOR0xNVUxUSU1PREVEUkFXRUxFTUVOVFNJQk1QUk9DKSAoY29uc3QgR0xlbnVtICptb2Rl LCBjb25zdCBHTHNpemVpICpjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKmluZGlj ZXMsIEdMc2l6ZWkgcHJpbWNvdW50LCBHTGludCBtb2Rlc3RyaWRlKTsKCgoKCgpleHRlcm4gdm9p ZCBnbENvbG9yUG9pbnRlckxpc3RJQk0gKEdMaW50LCBHTGVudW0sIEdMaW50LCBjb25zdCBHTHZv aWQqICosIEdMaW50KTsKZXh0ZXJuIHZvaWQgZ2xTZWNvbmRhcnlDb2xvclBvaW50ZXJMaXN0SUJN IChHTGludCwgR0xlbnVtLCBHTGludCwgY29uc3QgR0x2b2lkKiAqLCBHTGludCk7CmV4dGVybiB2 b2lkIGdsRWRnZUZsYWdQb2ludGVyTGlzdElCTSAoR0xpbnQsIGNvbnN0IEdMYm9vbGVhbiogKiwg R0xpbnQpOwpleHRlcm4gdm9pZCBnbEZvZ0Nvb3JkUG9pbnRlckxpc3RJQk0gKEdMZW51bSwgR0xp bnQsIGNvbnN0IEdMdm9pZCogKiwgR0xpbnQpOwpleHRlcm4gdm9pZCBnbEluZGV4UG9pbnRlckxp c3RJQk0gKEdMZW51bSwgR0xpbnQsIGNvbnN0IEdMdm9pZCogKiwgR0xpbnQpOwpleHRlcm4gdm9p ZCBnbE5vcm1hbFBvaW50ZXJMaXN0SUJNIChHTGVudW0sIEdMaW50LCBjb25zdCBHTHZvaWQqICos IEdMaW50KTsKZXh0ZXJuIHZvaWQgZ2xUZXhDb29yZFBvaW50ZXJMaXN0SUJNIChHTGludCwgR0xl bnVtLCBHTGludCwgY29uc3QgR0x2b2lkKiAqLCBHTGludCk7CmV4dGVybiB2b2lkIGdsVmVydGV4 UG9pbnRlckxpc3RJQk0gKEdMaW50LCBHTGVudW0sIEdMaW50LCBjb25zdCBHTHZvaWQqICosIEdM aW50KTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xDT0xPUlBPSU5URVJMSVNUSUJNUFJPQykgKEdM aW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGludCBzdHJpZGUsIGNvbnN0IEdMdm9pZCogKnBvaW50 ZXIsIEdMaW50IHB0cnN0cmlkZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xTRUNPTkRBUllDT0xP UlBPSU5URVJMSVNUSUJNUFJPQykgKEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGludCBzdHJp ZGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIsIEdMaW50IHB0cnN0cmlkZSk7CnR5cGVkZWYgdm9p ZCAoICogUEZOR0xFREdFRkxBR1BPSU5URVJMSVNUSUJNUFJPQykgKEdMaW50IHN0cmlkZSwgY29u c3QgR0xib29sZWFuKiAqcG9pbnRlciwgR0xpbnQgcHRyc3RyaWRlKTsKdHlwZWRlZiB2b2lkICgg KiBQRk5HTEZPR0NPT1JEUE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xlbnVtIHR5cGUsIEdMaW50IHN0 cmlkZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRlciwgR0xpbnQgcHRyc3RyaWRlKTsKdHlwZWRlZiB2 b2lkICggKiBQRk5HTElOREVYUE9JTlRFUkxJU1RJQk1QUk9DKSAoR0xlbnVtIHR5cGUsIEdMaW50 IHN0cmlkZSwgY29uc3QgR0x2b2lkKiAqcG9pbnRlciwgR0xpbnQgcHRyc3RyaWRlKTsKdHlwZWRl ZiB2b2lkICggKiBQRk5HTE5PUk1BTFBPSU5URVJMSVNUSUJNUFJPQykgKEdMZW51bSB0eXBlLCBH TGludCBzdHJpZGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIsIEdMaW50IHB0cnN0cmlkZSk7CnR5 cGVkZWYgdm9pZCAoICogUEZOR0xURVhDT09SRFBPSU5URVJMSVNUSUJNUFJPQykgKEdMaW50IHNp emUsIEdMZW51bSB0eXBlLCBHTGludCBzdHJpZGUsIGNvbnN0IEdMdm9pZCogKnBvaW50ZXIsIEdM aW50IHB0cnN0cmlkZSk7CnR5cGVkZWYgdm9pZCAoICogUEZOR0xWRVJURVhQT0lOVEVSTElTVElC TVBST0MpIChHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xpbnQgc3RyaWRlLCBjb25zdCBHTHZv aWQqICpwb2ludGVyLCBHTGludCBwdHJzdHJpZGUpOwojIDI5OTggIi4uLy4uLy4uLy4uL2V4cG9y dHMvaW5jbHVkZS9HTC9nbGV4dC5oIgpleHRlcm4gdm9pZCBnbFRidWZmZXJNYXNrM0RGWCAoR0x1 aW50KTsKCnR5cGVkZWYgdm9pZCAoICogUEZOR0xUQlVGRkVSTUFTSzNERlhQUk9DKSAoR0x1aW50 IG1hc2spOwoKCgoKCmV4dGVybiB2b2lkIGdsU2FtcGxlTWFza0VYVCAoR0xjbGFtcGYsIEdMYm9v bGVhbik7CmV4dGVybiB2b2lkIGdsU2FtcGxlUGF0dGVybkVYVCAoR0xlbnVtKTsKCnR5cGVkZWYg dm9pZCAoICogUEZOR0xTQU1QTEVNQVNLRVhUUFJPQykgKEdMY2xhbXBmIHZhbHVlLCBHTGJvb2xl YW4gaW52ZXJ0KTsKdHlwZWRlZiB2b2lkICggKiBQRk5HTFNBTVBMRVBBVFRFUk5FWFRQUk9DKSAo R0xlbnVtIHBhdHRlcm4pOwojIDMwMzIgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9HTC9n bGV4dC5oIgpleHRlcm4gdm9pZCBnbFRleHR1cmVDb2xvck1hc2tTR0lTIChHTGJvb2xlYW4sIEdM Ym9vbGVhbiwgR0xib29sZWFuLCBHTGJvb2xlYW4pOwoKdHlwZWRlZiB2b2lkICggKiBQRk5HTFRF WFRVUkVDT0xPUk1BU0tTR0lTUFJPQykgKEdMYm9vbGVhbiByZWQsIEdMYm9vbGVhbiBncmVlbiwg R0xib29sZWFuIGJsdWUsIEdMYm9vbGVhbiBhbHBoYSk7CgoKCgoKZXh0ZXJuIHZvaWQgZ2xJZ2xv b0ludGVyZmFjZVNHSVggKEdMZW51bSwgY29uc3QgR0x2b2lkICopOwoKdHlwZWRlZiB2b2lkICgg KiBQRk5HTElHTE9PSU5URVJGQUNFU0dJWFBST0MpIChHTGVudW0gcG5hbWUsIGNvbnN0IEdMdm9p ZCAqcGFyYW1zKTsKIyAyMjQ2ICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvR0wvZ2wuaCIg MgojIDE2NiAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL2dsaGVhZGVyLmgiIDIKIyAzNSAi dHJhbnNsYXRlLmMiIDIKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvbWVtLmgiIDEK IyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL21lbS5oIgpleHRlcm4gdm9pZCAqX21l c2FfbWFsbG9jKHNpemVfdCBieXRlcyk7CmV4dGVybiB2b2lkICpfbWVzYV9jYWxsb2Moc2l6ZV90 IGJ5dGVzKTsKZXh0ZXJuIHZvaWQgX21lc2FfZnJlZSh2b2lkICpwdHIpOwoKZXh0ZXJuIHZvaWQg Kl9tZXNhX2FsaWduX21hbGxvYyhzaXplX3QgYnl0ZXMsIHVuc2lnbmVkIGxvbmcgYWxpZ25tZW50 KTsKZXh0ZXJuIHZvaWQgKl9tZXNhX2FsaWduX2NhbGxvYyhzaXplX3QgYnl0ZXMsIHVuc2lnbmVk IGxvbmcgYWxpZ25tZW50KTsKZXh0ZXJuIHZvaWQgX21lc2FfYWxpZ25fZnJlZSh2b2lkICpwdHIp OwojIDM2ICJ0cmFuc2xhdGUuYyIgMgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy9t YWNyb3MuaCIgMQojIDM3ICJ0cmFuc2xhdGUuYyIgMgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9N ZXNhL3NyYy9tbWF0aC5oIiAxCiMgMTU1ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvbW1h dGguaCIKc3RhdGljIF9faW5saW5lX18gaW50IEZsb2F0VG9JbnQoZmxvYXQgZikKewogICBpbnQg cjsKICAgX19hc21fXyAoImZpc3RwbCAlMCIgOiAiPW0iIChyKSA6ICJ0IiAoZikgOiAic3QiKTsK ICAgcmV0dXJuIHI7Cn0KIyAxOTggIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy9tbWF0aC5o IgpleHRlcm4gZmxvYXQgZ2xfc3FydChmbG9hdCB4KTsKIyAyOTEgIi4uLy4uLy4uLy4uL2V4dHJh cy9NZXNhL3NyYy9tbWF0aC5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgSVNfSU5GX09SX05BTigg ZmxvYXQgeCApCnsKICAgdW5pb24ge2Zsb2F0IGY7IGludCBpO30gdG1wOwogICB0bXAuZiA9IHg7 CiAgIHJldHVybiAhKGludCkoKHVuc2lnbmVkIGludCkoKHRtcC5pICYgMHg3ZmZmZmZmZiktMHg3 ZjgwMDAwMCkgPj4gMzEpOwp9CgoKCgpleHRlcm4gZmxvYXQgZ2xfdWJ5dGVfdG9fZmxvYXRfY29s b3JfdGFiWzI1Nl07CmV4dGVybiBmbG9hdCBnbF91Ynl0ZV90b19mbG9hdF8yNTVfY29sb3JfdGFi WzI1Nl07CiMgMzQ1ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvbW1hdGguaCIKZXh0ZXJu IHZvaWQKX21lc2FfaW5pdF9tYXRoKHZvaWQpOwoKCmV4dGVybiBHTHVpbnQKX21lc2FfYml0Y291 bnQoR0x1aW50IG4pOwojIDM4ICJ0cmFuc2xhdGUuYyIgMgojIDEgIi4uLy4uLy4uLy4uL2V4dHJh cy9NZXNhL3NyYy90cmFuc2xhdGUuaCIgMQojIDMwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9z cmMvdHJhbnNsYXRlLmgiCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5cGVzLmgi IDEKIyAzMyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5cGVzLmgiCiMgMSAiLi4vLi4v Li4vLi4vZXh0cmFzL01lc2Evc3JjL2NvbmZpZy5oIiAxCiMgMTk3ICIuLi8uLi8uLi8uLi9leHRy YXMvTWVzYS9zcmMvY29uZmlnLmgiCnR5cGVkZWYgc3RydWN0IGdsX2NvbnRleHQgR0xjb250ZXh0 OwoKZXh0ZXJuIHZvaWQKZ2xfcmVhZF9jb25maWdfZmlsZSggc3RydWN0IGdsX2NvbnRleHQgKmN0 eCApOwoKZXh0ZXJuIHZvaWQKZ2xfcmVnaXN0ZXJfY29uZmlnX3Zhcihjb25zdCBjaGFyICpuYW1l LCB2b2lkICgqbm90aWZ5KSggY29uc3QgY2hhciAqLCBpbnQgKSk7CiMgMzQgIi4uLy4uLy4uLy4u L2V4dHJhcy9NZXNhL3NyYy90eXBlcy5oIiAyCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Ev c3JjL2ZpeGVkLmgiIDEKIyAzMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL2ZpeGVkLmgi CnR5cGVkZWYgaW50IEdMZml4ZWQ7CiMgMzUgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90 eXBlcy5oIiAyCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL2dsYXBpdGFibGUuaCIg MQoKCgoKCgpzdHJ1Y3QgX2dsYXBpX3RhYmxlCnsKICAgdm9pZCAoKk5ld0xpc3QpKEdMdWludCBs aXN0LCBHTGVudW0gbW9kZSk7CiAgIHZvaWQgKCpFbmRMaXN0KSh2b2lkKTsKICAgdm9pZCAoKkNh bGxMaXN0KShHTHVpbnQgbGlzdCk7CiAgIHZvaWQgKCpDYWxsTGlzdHMpKEdMc2l6ZWkgbiwgR0xl bnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqIGxpc3RzKTsKICAgdm9pZCAoKkRlbGV0ZUxpc3RzKShH THVpbnQgbGlzdCwgR0xzaXplaSByYW5nZSk7CiAgIEdMdWludCAoKkdlbkxpc3RzKShHTHNpemVp IHJhbmdlKTsKICAgdm9pZCAoKkxpc3RCYXNlKShHTHVpbnQgYmFzZSk7CiAgIHZvaWQgKCpCZWdp bikoR0xlbnVtIG1vZGUpOwogICB2b2lkICgqQml0bWFwKShHTHNpemVpIHdpZHRoLCBHTHNpemVp IGhlaWdodCwgR0xmbG9hdCB4b3JpZywgR0xmbG9hdCB5b3JpZywgR0xmbG9hdCB4bW92ZSwgR0xm bG9hdCB5bW92ZSwgY29uc3QgR0x1Ynl0ZSAqIGJpdG1hcCk7CiAgIHZvaWQgKCpDb2xvcjNiKShH TGJ5dGUgcmVkLCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlKTsKICAgdm9pZCAoKkNvbG9yM2J2 KShjb25zdCBHTGJ5dGUgKiB2KTsKICAgdm9pZCAoKkNvbG9yM2QpKEdMZG91YmxlIHJlZCwgR0xk b3VibGUgZ3JlZW4sIEdMZG91YmxlIGJsdWUpOwogICB2b2lkICgqQ29sb3IzZHYpKGNvbnN0IEdM ZG91YmxlICogdik7CiAgIHZvaWQgKCpDb2xvcjNmKShHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVl biwgR0xmbG9hdCBibHVlKTsKICAgdm9pZCAoKkNvbG9yM2Z2KShjb25zdCBHTGZsb2F0ICogdik7 CiAgIHZvaWQgKCpDb2xvcjNpKShHTGludCByZWQsIEdMaW50IGdyZWVuLCBHTGludCBibHVlKTsK ICAgdm9pZCAoKkNvbG9yM2l2KShjb25zdCBHTGludCAqIHYpOwogICB2b2lkICgqQ29sb3Izcyko R0xzaG9ydCByZWQsIEdMc2hvcnQgZ3JlZW4sIEdMc2hvcnQgYmx1ZSk7CiAgIHZvaWQgKCpDb2xv cjNzdikoY29uc3QgR0xzaG9ydCAqIHYpOwogICB2b2lkICgqQ29sb3IzdWIpKEdMdWJ5dGUgcmVk LCBHTHVieXRlIGdyZWVuLCBHTHVieXRlIGJsdWUpOwogICB2b2lkICgqQ29sb3IzdWJ2KShjb25z dCBHTHVieXRlICogdik7CiAgIHZvaWQgKCpDb2xvcjN1aSkoR0x1aW50IHJlZCwgR0x1aW50IGdy ZWVuLCBHTHVpbnQgYmx1ZSk7CiAgIHZvaWQgKCpDb2xvcjN1aXYpKGNvbnN0IEdMdWludCAqIHYp OwogICB2b2lkICgqQ29sb3IzdXMpKEdMdXNob3J0IHJlZCwgR0x1c2hvcnQgZ3JlZW4sIEdMdXNo b3J0IGJsdWUpOwogICB2b2lkICgqQ29sb3IzdXN2KShjb25zdCBHTHVzaG9ydCAqIHYpOwogICB2 b2lkICgqQ29sb3I0YikoR0xieXRlIHJlZCwgR0xieXRlIGdyZWVuLCBHTGJ5dGUgYmx1ZSwgR0xi eXRlIGFscGhhKTsKICAgdm9pZCAoKkNvbG9yNGJ2KShjb25zdCBHTGJ5dGUgKiB2KTsKICAgdm9p ZCAoKkNvbG9yNGQpKEdMZG91YmxlIHJlZCwgR0xkb3VibGUgZ3JlZW4sIEdMZG91YmxlIGJsdWUs IEdMZG91YmxlIGFscGhhKTsKICAgdm9pZCAoKkNvbG9yNGR2KShjb25zdCBHTGRvdWJsZSAqIHYp OwogICB2b2lkICgqQ29sb3I0ZikoR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQg Ymx1ZSwgR0xmbG9hdCBhbHBoYSk7CiAgIHZvaWQgKCpDb2xvcjRmdikoY29uc3QgR0xmbG9hdCAq IHYpOwogICB2b2lkICgqQ29sb3I0aSkoR0xpbnQgcmVkLCBHTGludCBncmVlbiwgR0xpbnQgYmx1 ZSwgR0xpbnQgYWxwaGEpOwogICB2b2lkICgqQ29sb3I0aXYpKGNvbnN0IEdMaW50ICogdik7CiAg IHZvaWQgKCpDb2xvcjRzKShHTHNob3J0IHJlZCwgR0xzaG9ydCBncmVlbiwgR0xzaG9ydCBibHVl LCBHTHNob3J0IGFscGhhKTsKICAgdm9pZCAoKkNvbG9yNHN2KShjb25zdCBHTHNob3J0ICogdik7 CiAgIHZvaWQgKCpDb2xvcjR1YikoR0x1Ynl0ZSByZWQsIEdMdWJ5dGUgZ3JlZW4sIEdMdWJ5dGUg Ymx1ZSwgR0x1Ynl0ZSBhbHBoYSk7CiAgIHZvaWQgKCpDb2xvcjR1YnYpKGNvbnN0IEdMdWJ5dGUg KiB2KTsKICAgdm9pZCAoKkNvbG9yNHVpKShHTHVpbnQgcmVkLCBHTHVpbnQgZ3JlZW4sIEdMdWlu dCBibHVlLCBHTHVpbnQgYWxwaGEpOwogICB2b2lkICgqQ29sb3I0dWl2KShjb25zdCBHTHVpbnQg KiB2KTsKICAgdm9pZCAoKkNvbG9yNHVzKShHTHVzaG9ydCByZWQsIEdMdXNob3J0IGdyZWVuLCBH THVzaG9ydCBibHVlLCBHTHVzaG9ydCBhbHBoYSk7CiAgIHZvaWQgKCpDb2xvcjR1c3YpKGNvbnN0 IEdMdXNob3J0ICogdik7CiAgIHZvaWQgKCpFZGdlRmxhZykoR0xib29sZWFuIGZsYWcpOwogICB2 b2lkICgqRWRnZUZsYWd2KShjb25zdCBHTGJvb2xlYW4gKiBmbGFnKTsKICAgdm9pZCAoKkVuZCko dm9pZCk7CiAgIHZvaWQgKCpJbmRleGQpKEdMZG91YmxlIGMpOwogICB2b2lkICgqSW5kZXhkdiko Y29uc3QgR0xkb3VibGUgKiBjKTsKICAgdm9pZCAoKkluZGV4ZikoR0xmbG9hdCBjKTsKICAgdm9p ZCAoKkluZGV4ZnYpKGNvbnN0IEdMZmxvYXQgKiBjKTsKICAgdm9pZCAoKkluZGV4aSkoR0xpbnQg Yyk7CiAgIHZvaWQgKCpJbmRleGl2KShjb25zdCBHTGludCAqIGMpOwogICB2b2lkICgqSW5kZXhz KShHTHNob3J0IGMpOwogICB2b2lkICgqSW5kZXhzdikoY29uc3QgR0xzaG9ydCAqIGMpOwogICB2 b2lkICgqTm9ybWFsM2IpKEdMYnl0ZSBueCwgR0xieXRlIG55LCBHTGJ5dGUgbnopOwogICB2b2lk ICgqTm9ybWFsM2J2KShjb25zdCBHTGJ5dGUgKiB2KTsKICAgdm9pZCAoKk5vcm1hbDNkKShHTGRv dWJsZSBueCwgR0xkb3VibGUgbnksIEdMZG91YmxlIG56KTsKICAgdm9pZCAoKk5vcm1hbDNkdiko Y29uc3QgR0xkb3VibGUgKiB2KTsKICAgdm9pZCAoKk5vcm1hbDNmKShHTGZsb2F0IG54LCBHTGZs b2F0IG55LCBHTGZsb2F0IG56KTsKICAgdm9pZCAoKk5vcm1hbDNmdikoY29uc3QgR0xmbG9hdCAq IHYpOwogICB2b2lkICgqTm9ybWFsM2kpKEdMaW50IG54LCBHTGludCBueSwgR0xpbnQgbnopOwog ICB2b2lkICgqTm9ybWFsM2l2KShjb25zdCBHTGludCAqIHYpOwogICB2b2lkICgqTm9ybWFsM3Mp KEdMc2hvcnQgbngsIEdMc2hvcnQgbnksIEdMc2hvcnQgbnopOwogICB2b2lkICgqTm9ybWFsM3N2 KShjb25zdCBHTHNob3J0ICogdik7CiAgIHZvaWQgKCpSYXN0ZXJQb3MyZCkoR0xkb3VibGUgeCwg R0xkb3VibGUgeSk7CiAgIHZvaWQgKCpSYXN0ZXJQb3MyZHYpKGNvbnN0IEdMZG91YmxlICogdik7 CiAgIHZvaWQgKCpSYXN0ZXJQb3MyZikoR0xmbG9hdCB4LCBHTGZsb2F0IHkpOwogICB2b2lkICgq UmFzdGVyUG9zMmZ2KShjb25zdCBHTGZsb2F0ICogdik7CiAgIHZvaWQgKCpSYXN0ZXJQb3MyaSko R0xpbnQgeCwgR0xpbnQgeSk7CiAgIHZvaWQgKCpSYXN0ZXJQb3MyaXYpKGNvbnN0IEdMaW50ICog dik7CiAgIHZvaWQgKCpSYXN0ZXJQb3MycykoR0xzaG9ydCB4LCBHTHNob3J0IHkpOwogICB2b2lk ICgqUmFzdGVyUG9zMnN2KShjb25zdCBHTHNob3J0ICogdik7CiAgIHZvaWQgKCpSYXN0ZXJQb3Mz ZCkoR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeik7CiAgIHZvaWQgKCpSYXN0ZXJQ b3MzZHYpKGNvbnN0IEdMZG91YmxlICogdik7CiAgIHZvaWQgKCpSYXN0ZXJQb3MzZikoR0xmbG9h dCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CiAgIHZvaWQgKCpSYXN0ZXJQb3MzZnYpKGNvbnN0 IEdMZmxvYXQgKiB2KTsKICAgdm9pZCAoKlJhc3RlclBvczNpKShHTGludCB4LCBHTGludCB5LCBH TGludCB6KTsKICAgdm9pZCAoKlJhc3RlclBvczNpdikoY29uc3QgR0xpbnQgKiB2KTsKICAgdm9p ZCAoKlJhc3RlclBvczNzKShHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6KTsKICAgdm9p ZCAoKlJhc3RlclBvczNzdikoY29uc3QgR0xzaG9ydCAqIHYpOwogICB2b2lkICgqUmFzdGVyUG9z NGQpKEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHosIEdMZG91YmxlIHcpOwogICB2 b2lkICgqUmFzdGVyUG9zNGR2KShjb25zdCBHTGRvdWJsZSAqIHYpOwogICB2b2lkICgqUmFzdGVy UG9zNGYpKEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyk7CiAgIHZv aWQgKCpSYXN0ZXJQb3M0ZnYpKGNvbnN0IEdMZmxvYXQgKiB2KTsKICAgdm9pZCAoKlJhc3RlclBv czRpKShHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3KTsKICAgdm9pZCAoKlJhc3Rl clBvczRpdikoY29uc3QgR0xpbnQgKiB2KTsKICAgdm9pZCAoKlJhc3RlclBvczRzKShHTHNob3J0 IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6LCBHTHNob3J0IHcpOwogICB2b2lkICgqUmFzdGVyUG9z NHN2KShjb25zdCBHTHNob3J0ICogdik7CiAgIHZvaWQgKCpSZWN0ZCkoR0xkb3VibGUgeDEsIEdM ZG91YmxlIHkxLCBHTGRvdWJsZSB4MiwgR0xkb3VibGUgeTIpOwogICB2b2lkICgqUmVjdGR2KShj b25zdCBHTGRvdWJsZSAqIHYxLCBjb25zdCBHTGRvdWJsZSAqIHYyKTsKICAgdm9pZCAoKlJlY3Rm KShHTGZsb2F0IHgxLCBHTGZsb2F0IHkxLCBHTGZsb2F0IHgyLCBHTGZsb2F0IHkyKTsKICAgdm9p ZCAoKlJlY3RmdikoY29uc3QgR0xmbG9hdCAqIHYxLCBjb25zdCBHTGZsb2F0ICogdjIpOwogICB2 b2lkICgqUmVjdGkpKEdMaW50IHgxLCBHTGludCB5MSwgR0xpbnQgeDIsIEdMaW50IHkyKTsKICAg dm9pZCAoKlJlY3RpdikoY29uc3QgR0xpbnQgKiB2MSwgY29uc3QgR0xpbnQgKiB2Mik7CiAgIHZv aWQgKCpSZWN0cykoR0xzaG9ydCB4MSwgR0xzaG9ydCB5MSwgR0xzaG9ydCB4MiwgR0xzaG9ydCB5 Mik7CiAgIHZvaWQgKCpSZWN0c3YpKGNvbnN0IEdMc2hvcnQgKiB2MSwgY29uc3QgR0xzaG9ydCAq IHYyKTsKICAgdm9pZCAoKlRleENvb3JkMWQpKEdMZG91YmxlIHMpOwogICB2b2lkICgqVGV4Q29v cmQxZHYpKGNvbnN0IEdMZG91YmxlICogdik7CiAgIHZvaWQgKCpUZXhDb29yZDFmKShHTGZsb2F0 IHMpOwogICB2b2lkICgqVGV4Q29vcmQxZnYpKGNvbnN0IEdMZmxvYXQgKiB2KTsKICAgdm9pZCAo KlRleENvb3JkMWkpKEdMaW50IHMpOwogICB2b2lkICgqVGV4Q29vcmQxaXYpKGNvbnN0IEdMaW50 ICogdik7CiAgIHZvaWQgKCpUZXhDb29yZDFzKShHTHNob3J0IHMpOwogICB2b2lkICgqVGV4Q29v cmQxc3YpKGNvbnN0IEdMc2hvcnQgKiB2KTsKICAgdm9pZCAoKlRleENvb3JkMmQpKEdMZG91Ymxl IHMsIEdMZG91YmxlIHQpOwogICB2b2lkICgqVGV4Q29vcmQyZHYpKGNvbnN0IEdMZG91YmxlICog dik7CiAgIHZvaWQgKCpUZXhDb29yZDJmKShHTGZsb2F0IHMsIEdMZmxvYXQgdCk7CiAgIHZvaWQg KCpUZXhDb29yZDJmdikoY29uc3QgR0xmbG9hdCAqIHYpOwogICB2b2lkICgqVGV4Q29vcmQyaSko R0xpbnQgcywgR0xpbnQgdCk7CiAgIHZvaWQgKCpUZXhDb29yZDJpdikoY29uc3QgR0xpbnQgKiB2 KTsKICAgdm9pZCAoKlRleENvb3JkMnMpKEdMc2hvcnQgcywgR0xzaG9ydCB0KTsKICAgdm9pZCAo KlRleENvb3JkMnN2KShjb25zdCBHTHNob3J0ICogdik7CiAgIHZvaWQgKCpUZXhDb29yZDNkKShH TGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByKTsKICAgdm9pZCAoKlRleENvb3JkM2R2 KShjb25zdCBHTGRvdWJsZSAqIHYpOwogICB2b2lkICgqVGV4Q29vcmQzZikoR0xmbG9hdCBzLCBH TGZsb2F0IHQsIEdMZmxvYXQgcik7CiAgIHZvaWQgKCpUZXhDb29yZDNmdikoY29uc3QgR0xmbG9h dCAqIHYpOwogICB2b2lkICgqVGV4Q29vcmQzaSkoR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQgcik7 CiAgIHZvaWQgKCpUZXhDb29yZDNpdikoY29uc3QgR0xpbnQgKiB2KTsKICAgdm9pZCAoKlRleENv b3JkM3MpKEdMc2hvcnQgcywgR0xzaG9ydCB0LCBHTHNob3J0IHIpOwogICB2b2lkICgqVGV4Q29v cmQzc3YpKGNvbnN0IEdMc2hvcnQgKiB2KTsKICAgdm9pZCAoKlRleENvb3JkNGQpKEdMZG91Ymxl IHMsIEdMZG91YmxlIHQsIEdMZG91YmxlIHIsIEdMZG91YmxlIHEpOwogICB2b2lkICgqVGV4Q29v cmQ0ZHYpKGNvbnN0IEdMZG91YmxlICogdik7CiAgIHZvaWQgKCpUZXhDb29yZDRmKShHTGZsb2F0 IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZsb2F0IHEpOwogICB2b2lkICgqVGV4Q29vcmQ0 ZnYpKGNvbnN0IEdMZmxvYXQgKiB2KTsKICAgdm9pZCAoKlRleENvb3JkNGkpKEdMaW50IHMsIEdM aW50IHQsIEdMaW50IHIsIEdMaW50IHEpOwogICB2b2lkICgqVGV4Q29vcmQ0aXYpKGNvbnN0IEdM aW50ICogdik7CiAgIHZvaWQgKCpUZXhDb29yZDRzKShHTHNob3J0IHMsIEdMc2hvcnQgdCwgR0xz aG9ydCByLCBHTHNob3J0IHEpOwogICB2b2lkICgqVGV4Q29vcmQ0c3YpKGNvbnN0IEdMc2hvcnQg KiB2KTsKICAgdm9pZCAoKlZlcnRleDJkKShHTGRvdWJsZSB4LCBHTGRvdWJsZSB5KTsKICAgdm9p ZCAoKlZlcnRleDJkdikoY29uc3QgR0xkb3VibGUgKiB2KTsKICAgdm9pZCAoKlZlcnRleDJmKShH TGZsb2F0IHgsIEdMZmxvYXQgeSk7CiAgIHZvaWQgKCpWZXJ0ZXgyZnYpKGNvbnN0IEdMZmxvYXQg KiB2KTsKICAgdm9pZCAoKlZlcnRleDJpKShHTGludCB4LCBHTGludCB5KTsKICAgdm9pZCAoKlZl cnRleDJpdikoY29uc3QgR0xpbnQgKiB2KTsKICAgdm9pZCAoKlZlcnRleDJzKShHTHNob3J0IHgs IEdMc2hvcnQgeSk7CiAgIHZvaWQgKCpWZXJ0ZXgyc3YpKGNvbnN0IEdMc2hvcnQgKiB2KTsKICAg dm9pZCAoKlZlcnRleDNkKShHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsKICAg dm9pZCAoKlZlcnRleDNkdikoY29uc3QgR0xkb3VibGUgKiB2KTsKICAgdm9pZCAoKlZlcnRleDNm KShHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKICAgdm9pZCAoKlZlcnRleDNmdiko Y29uc3QgR0xmbG9hdCAqIHYpOwogICB2b2lkICgqVmVydGV4M2kpKEdMaW50IHgsIEdMaW50IHks IEdMaW50IHopOwogICB2b2lkICgqVmVydGV4M2l2KShjb25zdCBHTGludCAqIHYpOwogICB2b2lk ICgqVmVydGV4M3MpKEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHopOwogICB2b2lkICgq VmVydGV4M3N2KShjb25zdCBHTHNob3J0ICogdik7CiAgIHZvaWQgKCpWZXJ0ZXg0ZCkoR0xkb3Vi bGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiwgR0xkb3VibGUgdyk7CiAgIHZvaWQgKCpWZXJ0 ZXg0ZHYpKGNvbnN0IEdMZG91YmxlICogdik7CiAgIHZvaWQgKCpWZXJ0ZXg0ZikoR0xmbG9hdCB4 LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3KTsKICAgdm9pZCAoKlZlcnRleDRmdiko Y29uc3QgR0xmbG9hdCAqIHYpOwogICB2b2lkICgqVmVydGV4NGkpKEdMaW50IHgsIEdMaW50IHks IEdMaW50IHosIEdMaW50IHcpOwogICB2b2lkICgqVmVydGV4NGl2KShjb25zdCBHTGludCAqIHYp OwogICB2b2lkICgqVmVydGV4NHMpKEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHosIEdM c2hvcnQgdyk7CiAgIHZvaWQgKCpWZXJ0ZXg0c3YpKGNvbnN0IEdMc2hvcnQgKiB2KTsKICAgdm9p ZCAoKkNsaXBQbGFuZSkoR0xlbnVtIHBsYW5lLCBjb25zdCBHTGRvdWJsZSAqIGVxdWF0aW9uKTsK ICAgdm9pZCAoKkNvbG9yTWF0ZXJpYWwpKEdMZW51bSBmYWNlLCBHTGVudW0gbW9kZSk7CiAgIHZv aWQgKCpDdWxsRmFjZSkoR0xlbnVtIG1vZGUpOwogICB2b2lkICgqRm9nZikoR0xlbnVtIHBuYW1l LCBHTGZsb2F0IHBhcmFtKTsKICAgdm9pZCAoKkZvZ2Z2KShHTGVudW0gcG5hbWUsIGNvbnN0IEdM ZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqRm9naSkoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJh bSk7CiAgIHZvaWQgKCpGb2dpdikoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqIHBhcmFtcyk7 CiAgIHZvaWQgKCpGcm9udEZhY2UpKEdMZW51bSBtb2RlKTsKICAgdm9pZCAoKkhpbnQpKEdMZW51 bSB0YXJnZXQsIEdMZW51bSBtb2RlKTsKICAgdm9pZCAoKkxpZ2h0ZikoR0xlbnVtIGxpZ2h0LCBH TGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwogICB2b2lkICgqTGlnaHRmdikoR0xlbnVtIGxp Z2h0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqTGln aHRpKShHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwogICB2b2lkICgq TGlnaHRpdikoR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICogcGFyYW1z KTsKICAgdm9pZCAoKkxpZ2h0TW9kZWxmKShHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwog ICB2b2lkICgqTGlnaHRNb2RlbGZ2KShHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKiBwYXJh bXMpOwogICB2b2lkICgqTGlnaHRNb2RlbGkpKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwog ICB2b2lkICgqTGlnaHRNb2RlbGl2KShHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICogcGFyYW1z KTsKICAgdm9pZCAoKkxpbmVTdGlwcGxlKShHTGludCBmYWN0b3IsIEdMdXNob3J0IHBhdHRlcm4p OwogICB2b2lkICgqTGluZVdpZHRoKShHTGZsb2F0IHdpZHRoKTsKICAgdm9pZCAoKk1hdGVyaWFs ZikoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CiAgIHZvaWQgKCpN YXRlcmlhbGZ2KShHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICogcGFy YW1zKTsKICAgdm9pZCAoKk1hdGVyaWFsaSkoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgR0xp bnQgcGFyYW0pOwogICB2b2lkICgqTWF0ZXJpYWxpdikoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFt ZSwgY29uc3QgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lkICgqUG9pbnRTaXplKShHTGZsb2F0IHNp emUpOwogICB2b2lkICgqUG9seWdvbk1vZGUpKEdMZW51bSBmYWNlLCBHTGVudW0gbW9kZSk7CiAg IHZvaWQgKCpQb2x5Z29uU3RpcHBsZSkoY29uc3QgR0x1Ynl0ZSAqIG1hc2spOwogICB2b2lkICgq U2Npc3NvcikoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp OwogICB2b2lkICgqU2hhZGVNb2RlbCkoR0xlbnVtIG1vZGUpOwogICB2b2lkICgqVGV4UGFyYW1l dGVyZikoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKICAgdm9p ZCAoKlRleFBhcmFtZXRlcmZ2KShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM ZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqVGV4UGFyYW1ldGVyaSkoR0xlbnVtIHRhcmdldCwg R0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CiAgIHZvaWQgKCpUZXhQYXJhbWV0ZXJpdikoR0xl bnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQg KCpUZXhJbWFnZTFEKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxm b3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVt IHR5cGUsIGNvbnN0IEdMdm9pZCAqIHBpeGVscyk7CiAgIHZvaWQgKCpUZXhJbWFnZTJEKShHTGVu dW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lk dGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0 eXBlLCBjb25zdCBHTHZvaWQgKiBwaXhlbHMpOwogICB2b2lkICgqVGV4RW52ZikoR0xlbnVtIHRh cmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKICAgdm9pZCAoKlRleEVudmZ2KShH TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKiBwYXJhbXMpOwogICB2 b2lkICgqVGV4RW52aSkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7 CiAgIHZvaWQgKCpUZXhFbnZpdikoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBH TGludCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpUZXhHZW5kKShHTGVudW0gY29vcmQsIEdMZW51bSBw bmFtZSwgR0xkb3VibGUgcGFyYW0pOwogICB2b2lkICgqVGV4R2VuZHYpKEdMZW51bSBjb29yZCwg R0xlbnVtIHBuYW1lLCBjb25zdCBHTGRvdWJsZSAqIHBhcmFtcyk7CiAgIHZvaWQgKCpUZXhHZW5m KShHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CiAgIHZvaWQgKCpU ZXhHZW5mdikoR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKiBwYXJh bXMpOwogICB2b2lkICgqVGV4R2VuaSkoR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMaW50 IHBhcmFtKTsKICAgdm9pZCAoKlRleEdlbml2KShHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwg Y29uc3QgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lkICgqRmVlZGJhY2tCdWZmZXIpKEdMc2l6ZWkg c2l6ZSwgR0xlbnVtIHR5cGUsIEdMZmxvYXQgKiBidWZmZXIpOwogICB2b2lkICgqU2VsZWN0QnVm ZmVyKShHTHNpemVpIHNpemUsIEdMdWludCAqIGJ1ZmZlcik7CiAgIEdMaW50ICgqUmVuZGVyTW9k ZSkoR0xlbnVtIG1vZGUpOwogICB2b2lkICgqSW5pdE5hbWVzKSh2b2lkKTsKICAgdm9pZCAoKkxv YWROYW1lKShHTHVpbnQgbmFtZSk7CiAgIHZvaWQgKCpQYXNzVGhyb3VnaCkoR0xmbG9hdCB0b2tl bik7CiAgIHZvaWQgKCpQb3BOYW1lKSh2b2lkKTsKICAgdm9pZCAoKlB1c2hOYW1lKShHTHVpbnQg bmFtZSk7CiAgIHZvaWQgKCpEcmF3QnVmZmVyKShHTGVudW0gbW9kZSk7CiAgIHZvaWQgKCpDbGVh cikoR0xiaXRmaWVsZCBtYXNrKTsKICAgdm9pZCAoKkNsZWFyQWNjdW0pKEdMZmxvYXQgcmVkLCBH TGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEpOwogICB2b2lkICgqQ2xl YXJJbmRleCkoR0xmbG9hdCBjKTsKICAgdm9pZCAoKkNsZWFyQ29sb3IpKEdMY2xhbXBmIHJlZCwg R0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdMY2xhbXBmIGFscGhhKTsKICAgdm9pZCAo KkNsZWFyU3RlbmNpbCkoR0xpbnQgcyk7CiAgIHZvaWQgKCpDbGVhckRlcHRoKShHTGNsYW1wZCBk ZXB0aCk7CiAgIHZvaWQgKCpTdGVuY2lsTWFzaykoR0x1aW50IG1hc2spOwogICB2b2lkICgqQ29s b3JNYXNrKShHTGJvb2xlYW4gcmVkLCBHTGJvb2xlYW4gZ3JlZW4sIEdMYm9vbGVhbiBibHVlLCBH TGJvb2xlYW4gYWxwaGEpOwogICB2b2lkICgqRGVwdGhNYXNrKShHTGJvb2xlYW4gZmxhZyk7CiAg IHZvaWQgKCpJbmRleE1hc2spKEdMdWludCBtYXNrKTsKICAgdm9pZCAoKkFjY3VtKShHTGVudW0g b3AsIEdMZmxvYXQgdmFsdWUpOwogICB2b2lkICgqRGlzYWJsZSkoR0xlbnVtIGNhcCk7CiAgIHZv aWQgKCpFbmFibGUpKEdMZW51bSBjYXApOwogICB2b2lkICgqRmluaXNoKSh2b2lkKTsKICAgdm9p ZCAoKkZsdXNoKSh2b2lkKTsKICAgdm9pZCAoKlBvcEF0dHJpYikodm9pZCk7CiAgIHZvaWQgKCpQ dXNoQXR0cmliKShHTGJpdGZpZWxkIG1hc2spOwogICB2b2lkICgqTWFwMWQpKEdMZW51bSB0YXJn ZXQsIEdMZG91YmxlIHUxLCBHTGRvdWJsZSB1MiwgR0xpbnQgc3RyaWRlLCBHTGludCBvcmRlciwg Y29uc3QgR0xkb3VibGUgKiBwb2ludHMpOwogICB2b2lkICgqTWFwMWYpKEdMZW51bSB0YXJnZXQs IEdMZmxvYXQgdTEsIEdMZmxvYXQgdTIsIEdMaW50IHN0cmlkZSwgR0xpbnQgb3JkZXIsIGNvbnN0 IEdMZmxvYXQgKiBwb2ludHMpOwogICB2b2lkICgqTWFwMmQpKEdMZW51bSB0YXJnZXQsIEdMZG91 YmxlIHUxLCBHTGRvdWJsZSB1MiwgR0xpbnQgdXN0cmlkZSwgR0xpbnQgdW9yZGVyLCBHTGRvdWJs ZSB2MSwgR0xkb3VibGUgdjIsIEdMaW50IHZzdHJpZGUsIEdMaW50IHZvcmRlciwgY29uc3QgR0xk b3VibGUgKiBwb2ludHMpOwogICB2b2lkICgqTWFwMmYpKEdMZW51bSB0YXJnZXQsIEdMZmxvYXQg dTEsIEdMZmxvYXQgdTIsIEdMaW50IHVzdHJpZGUsIEdMaW50IHVvcmRlciwgR0xmbG9hdCB2MSwg R0xmbG9hdCB2MiwgR0xpbnQgdnN0cmlkZSwgR0xpbnQgdm9yZGVyLCBjb25zdCBHTGZsb2F0ICog cG9pbnRzKTsKICAgdm9pZCAoKk1hcEdyaWQxZCkoR0xpbnQgdW4sIEdMZG91YmxlIHUxLCBHTGRv dWJsZSB1Mik7CiAgIHZvaWQgKCpNYXBHcmlkMWYpKEdMaW50IHVuLCBHTGZsb2F0IHUxLCBHTGZs b2F0IHUyKTsKICAgdm9pZCAoKk1hcEdyaWQyZCkoR0xpbnQgdW4sIEdMZG91YmxlIHUxLCBHTGRv dWJsZSB1MiwgR0xpbnQgdm4sIEdMZG91YmxlIHYxLCBHTGRvdWJsZSB2Mik7CiAgIHZvaWQgKCpN YXBHcmlkMmYpKEdMaW50IHVuLCBHTGZsb2F0IHUxLCBHTGZsb2F0IHUyLCBHTGludCB2biwgR0xm bG9hdCB2MSwgR0xmbG9hdCB2Mik7CiAgIHZvaWQgKCpFdmFsQ29vcmQxZCkoR0xkb3VibGUgdSk7 CiAgIHZvaWQgKCpFdmFsQ29vcmQxZHYpKGNvbnN0IEdMZG91YmxlICogdSk7CiAgIHZvaWQgKCpF dmFsQ29vcmQxZikoR0xmbG9hdCB1KTsKICAgdm9pZCAoKkV2YWxDb29yZDFmdikoY29uc3QgR0xm bG9hdCAqIHUpOwogICB2b2lkICgqRXZhbENvb3JkMmQpKEdMZG91YmxlIHUsIEdMZG91YmxlIHYp OwogICB2b2lkICgqRXZhbENvb3JkMmR2KShjb25zdCBHTGRvdWJsZSAqIHUpOwogICB2b2lkICgq RXZhbENvb3JkMmYpKEdMZmxvYXQgdSwgR0xmbG9hdCB2KTsKICAgdm9pZCAoKkV2YWxDb29yZDJm dikoY29uc3QgR0xmbG9hdCAqIHUpOwogICB2b2lkICgqRXZhbE1lc2gxKShHTGVudW0gbW9kZSwg R0xpbnQgaTEsIEdMaW50IGkyKTsKICAgdm9pZCAoKkV2YWxQb2ludDEpKEdMaW50IGkpOwogICB2 b2lkICgqRXZhbE1lc2gyKShHTGVudW0gbW9kZSwgR0xpbnQgaTEsIEdMaW50IGkyLCBHTGludCBq MSwgR0xpbnQgajIpOwogICB2b2lkICgqRXZhbFBvaW50MikoR0xpbnQgaSwgR0xpbnQgaik7CiAg IHZvaWQgKCpBbHBoYUZ1bmMpKEdMZW51bSBmdW5jLCBHTGNsYW1wZiByZWYpOwogICB2b2lkICgq QmxlbmRGdW5jKShHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpOwogICB2b2lkICgqTG9n aWNPcCkoR0xlbnVtIG9wY29kZSk7CiAgIHZvaWQgKCpTdGVuY2lsRnVuYykoR0xlbnVtIGZ1bmMs IEdMaW50IHJlZiwgR0x1aW50IG1hc2spOwogICB2b2lkICgqU3RlbmNpbE9wKShHTGVudW0gZmFp bCwgR0xlbnVtIHpmYWlsLCBHTGVudW0genBhc3MpOwogICB2b2lkICgqRGVwdGhGdW5jKShHTGVu dW0gZnVuYyk7CiAgIHZvaWQgKCpQaXhlbFpvb20pKEdMZmxvYXQgeGZhY3RvciwgR0xmbG9hdCB5 ZmFjdG9yKTsKICAgdm9pZCAoKlBpeGVsVHJhbnNmZXJmKShHTGVudW0gcG5hbWUsIEdMZmxvYXQg cGFyYW0pOwogICB2b2lkICgqUGl4ZWxUcmFuc2ZlcmkpKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFy YW0pOwogICB2b2lkICgqUGl4ZWxTdG9yZWYpKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7 CiAgIHZvaWQgKCpQaXhlbFN0b3JlaSkoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CiAgIHZv aWQgKCpQaXhlbE1hcGZ2KShHTGVudW0gbWFwLCBHTGludCBtYXBzaXplLCBjb25zdCBHTGZsb2F0 ICogdmFsdWVzKTsKICAgdm9pZCAoKlBpeGVsTWFwdWl2KShHTGVudW0gbWFwLCBHTGludCBtYXBz aXplLCBjb25zdCBHTHVpbnQgKiB2YWx1ZXMpOwogICB2b2lkICgqUGl4ZWxNYXB1c3YpKEdMZW51 bSBtYXAsIEdMaW50IG1hcHNpemUsIGNvbnN0IEdMdXNob3J0ICogdmFsdWVzKTsKICAgdm9pZCAo KlJlYWRCdWZmZXIpKEdMZW51bSBtb2RlKTsKICAgdm9pZCAoKkNvcHlQaXhlbHMpKEdMaW50IHgs IEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gdHlwZSk7CiAg IHZvaWQgKCpSZWFkUGl4ZWxzKShHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNp emVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqIHBpeGVscyk7 CiAgIHZvaWQgKCpEcmF3UGl4ZWxzKShHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xl bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqIHBpeGVscyk7CiAgIHZvaWQg KCpHZXRCb29sZWFudikoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKiBwYXJhbXMpOwogICB2b2lk ICgqR2V0Q2xpcFBsYW5lKShHTGVudW0gcGxhbmUsIEdMZG91YmxlICogZXF1YXRpb24pOwogICB2 b2lkICgqR2V0RG91YmxldikoR0xlbnVtIHBuYW1lLCBHTGRvdWJsZSAqIHBhcmFtcyk7CiAgIEdM ZW51bSAoKkdldEVycm9yKSh2b2lkKTsKICAgdm9pZCAoKkdldEZsb2F0dikoR0xlbnVtIHBuYW1l LCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldEludGVnZXJ2KShHTGVudW0gcG5hbWUs IEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldExpZ2h0ZnYpKEdMZW51bSBsaWdodCwgR0xl bnVtIHBuYW1lLCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldExpZ2h0aXYpKEdMZW51 bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRNYXBk dikoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1ZXJ5LCBHTGRvdWJsZSAqIHYpOwogICB2b2lkICgq R2V0TWFwZnYpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xmbG9hdCAqIHYpOwogICB2 b2lkICgqR2V0TWFwaXYpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xpbnQgKiB2KTsK ICAgdm9pZCAoKkdldE1hdGVyaWFsZnYpKEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZmxv YXQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0TWF0ZXJpYWxpdikoR0xlbnVtIGZhY2UsIEdMZW51 bSBwbmFtZSwgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0UGl4ZWxNYXBmdikoR0xlbnVt IG1hcCwgR0xmbG9hdCAqIHZhbHVlcyk7CiAgIHZvaWQgKCpHZXRQaXhlbE1hcHVpdikoR0xlbnVt IG1hcCwgR0x1aW50ICogdmFsdWVzKTsKICAgdm9pZCAoKkdldFBpeGVsTWFwdXN2KShHTGVudW0g bWFwLCBHTHVzaG9ydCAqIHZhbHVlcyk7CiAgIHZvaWQgKCpHZXRQb2x5Z29uU3RpcHBsZSkoR0x1 Ynl0ZSAqIG1hc2spOwogICBjb25zdCBHTHVieXRlICogKCpHZXRTdHJpbmcpKEdMZW51bSBuYW1l KTsKICAgdm9pZCAoKkdldFRleEVudmZ2KShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdM ZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0VGV4RW52aXYpKEdMZW51bSB0YXJnZXQsIEdM ZW51bSBwbmFtZSwgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0VGV4R2VuZHYpKEdMZW51 bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGRvdWJsZSAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRU ZXhHZW5mdikoR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBwYXJhbXMpOwog ICB2b2lkICgqR2V0VGV4R2VuaXYpKEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGludCAq IHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRUZXhJbWFnZSkoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2 ZWwsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKiBwaXhlbHMpOwogICB2b2lk ICgqR2V0VGV4UGFyYW1ldGVyZnYpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9h dCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRUZXhQYXJhbWV0ZXJpdikoR0xlbnVtIHRhcmdldCwg R0xlbnVtIHBuYW1lLCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRUZXhMZXZlbFBhcmFt ZXRlcmZ2KShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0 ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldFRleExldmVsUGFyYW1ldGVyaXYpKEdMZW51bSB0YXJn ZXQsIEdMaW50IGxldmVsLCBHTGVudW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsKICAgR0xib29s ZWFuICgqSXNFbmFibGVkKShHTGVudW0gY2FwKTsKICAgR0xib29sZWFuICgqSXNMaXN0KShHTHVp bnQgbGlzdCk7CiAgIHZvaWQgKCpEZXB0aFJhbmdlKShHTGNsYW1wZCBuZWFyLCBHTGNsYW1wZCBm YXIpOwogICB2b2lkICgqRnJ1c3R1bSkoR0xkb3VibGUgbGVmdCwgR0xkb3VibGUgcmlnaHQsIEdM ZG91YmxlIGJvdHRvbSwgR0xkb3VibGUgdG9wLCBHTGRvdWJsZSB6TmVhciwgR0xkb3VibGUgekZh cik7CiAgIHZvaWQgKCpMb2FkSWRlbnRpdHkpKHZvaWQpOwogICB2b2lkICgqTG9hZE1hdHJpeGYp KGNvbnN0IEdMZmxvYXQgKiBtKTsKICAgdm9pZCAoKkxvYWRNYXRyaXhkKShjb25zdCBHTGRvdWJs ZSAqIG0pOwogICB2b2lkICgqTWF0cml4TW9kZSkoR0xlbnVtIG1vZGUpOwogICB2b2lkICgqTXVs dE1hdHJpeGYpKGNvbnN0IEdMZmxvYXQgKiBtKTsKICAgdm9pZCAoKk11bHRNYXRyaXhkKShjb25z dCBHTGRvdWJsZSAqIG0pOwogICB2b2lkICgqT3J0aG8pKEdMZG91YmxlIGxlZnQsIEdMZG91Ymxl IHJpZ2h0LCBHTGRvdWJsZSBib3R0b20sIEdMZG91YmxlIHRvcCwgR0xkb3VibGUgek5lYXIsIEdM ZG91YmxlIHpGYXIpOwogICB2b2lkICgqUG9wTWF0cml4KSh2b2lkKTsKICAgdm9pZCAoKlB1c2hN YXRyaXgpKHZvaWQpOwogICB2b2lkICgqUm90YXRlZCkoR0xkb3VibGUgYW5nbGUsIEdMZG91Ymxl IHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopOwogICB2b2lkICgqUm90YXRlZikoR0xmbG9hdCBh bmdsZSwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CiAgIHZvaWQgKCpTY2FsZWQp KEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopOwogICB2b2lkICgqU2NhbGVmKShH TGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKICAgdm9pZCAoKlRyYW5zbGF0ZWQpKEdM ZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopOwogICB2b2lkICgqVHJhbnNsYXRlZiko R0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CiAgIHZvaWQgKCpWaWV3cG9ydCkoR0xp bnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwogICB2b2lkICgq QXJyYXlFbGVtZW50KShHTGludCBpKTsKICAgdm9pZCAoKkJpbmRUZXh0dXJlKShHTGVudW0gdGFy Z2V0LCBHTGVudW0gdGV4dHVyZSk7CiAgIHZvaWQgKCpDb2xvclBvaW50ZXIpKEdMaW50IHNpemUs IEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICogcG9pbnRlcik7CiAg IHZvaWQgKCpEaXNhYmxlQ2xpZW50U3RhdGUpKEdMZW51bSBhcnJheSk7CiAgIHZvaWQgKCpEcmF3 QXJyYXlzKShHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpOwogICB2b2lk ICgqRHJhd0VsZW1lbnRzKShHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUs IGNvbnN0IEdMdm9pZCAqIGluZGljZXMpOwogICB2b2lkICgqRWRnZUZsYWdQb2ludGVyKShHTHNp emVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICogcG9pbnRlcik7CiAgIHZvaWQgKCpFbmFibGVDbGll bnRTdGF0ZSkoR0xlbnVtIGFycmF5KTsKICAgdm9pZCAoKkluZGV4UG9pbnRlcikoR0xlbnVtIHR5 cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKiBwb2ludGVyKTsKICAgdm9pZCAoKklu ZGV4dWIpKEdMdWJ5dGUgYyk7CiAgIHZvaWQgKCpJbmRleHVidikoY29uc3QgR0x1Ynl0ZSAqIGMp OwogICB2b2lkICgqSW50ZXJsZWF2ZWRBcnJheXMpKEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc3Ry aWRlLCBjb25zdCBHTHZvaWQgKiBwb2ludGVyKTsKICAgdm9pZCAoKk5vcm1hbFBvaW50ZXIpKEdM ZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICogcG9pbnRlcik7CiAgIHZv aWQgKCpQb2x5Z29uT2Zmc2V0KShHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cyk7CiAgIHZv aWQgKCpUZXhDb29yZFBvaW50ZXIpKEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTHNpemVpIHN0 cmlkZSwgY29uc3QgR0x2b2lkICogcG9pbnRlcik7CiAgIHZvaWQgKCpWZXJ0ZXhQb2ludGVyKShH TGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqIHBv aW50ZXIpOwogICBHTGJvb2xlYW4gKCpBcmVUZXh0dXJlc1Jlc2lkZW50KShHTHNpemVpIG4sIGNv bnN0IEdMZW51bSAqIHRleHR1cmVzLCBHTGJvb2xlYW4gKiByZXNpZGVuY2VzKTsKICAgdm9pZCAo KkNvcHlUZXhJbWFnZTFEKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVy bmFsZm9ybWF0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTGludCBib3JkZXIp OwogICB2b2lkICgqQ29weVRleEltYWdlMkQpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBH TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdM c2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIpOwogICB2b2lkICgqQ29weVRleFN1YkltYWdlMUQp KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB4LCBHTGlu dCB5LCBHTHNpemVpIHdpZHRoKTsKICAgdm9pZCAoKkNvcHlUZXhTdWJJbWFnZTJEKShHTGVudW0g dGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQg eCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwogICB2b2lkICgqRGVs ZXRlVGV4dHVyZXMpKEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICogdGV4dHVyZXMpOwogICB2b2lk ICgqR2VuVGV4dHVyZXMpKEdMc2l6ZWkgbiwgR0xlbnVtICogdGV4dHVyZXMpOwogICB2b2lkICgq R2V0UG9pbnRlcnYpKEdMZW51bSBwbmFtZSwgR0x2b2lkICogKiBwYXJhbXMpOwogICBHTGJvb2xl YW4gKCpJc1RleHR1cmUpKEdMZW51bSB0ZXh0dXJlKTsKICAgdm9pZCAoKlByaW9yaXRpemVUZXh0 dXJlcykoR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKiB0ZXh0dXJlcywgY29uc3QgR0xjbGFtcGYg KiBwcmlvcml0aWVzKTsKICAgdm9pZCAoKlRleFN1YkltYWdlMUQpKEdMZW51bSB0YXJnZXQsIEdM aW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LCBH TGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICogcGl4ZWxzKTsKICAgdm9pZCAoKlRleFN1YkltYWdl MkQpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zm c2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVt IHR5cGUsIGNvbnN0IEdMdm9pZCAqIHBpeGVscyk7CiAgIHZvaWQgKCpQb3BDbGllbnRBdHRyaWIp KHZvaWQpOwogICB2b2lkICgqUHVzaENsaWVudEF0dHJpYikoR0xiaXRmaWVsZCBtYXNrKTsKICAg dm9pZCAoKkJsZW5kQ29sb3IpKEdMY2xhbXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBm IGJsdWUsIEdMY2xhbXBmIGFscGhhKTsKICAgdm9pZCAoKkJsZW5kRXF1YXRpb24pKEdMZW51bSBt b2RlKTsKICAgdm9pZCAoKkRyYXdSYW5nZUVsZW1lbnRzKShHTGVudW0gbW9kZSwgR0x1aW50IHN0 YXJ0LCBHTHVpbnQgZW5kLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lk ICogaW5kaWNlcyk7CiAgIHZvaWQgKCpDb2xvclRhYmxlKShHTGVudW0gdGFyZ2V0LCBHTGVudW0g aW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl LCBjb25zdCBHTHZvaWQgKiB0YWJsZSk7CiAgIHZvaWQgKCpDb2xvclRhYmxlUGFyYW1ldGVyZnYp KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqIHBhcmFtcyk7CiAg IHZvaWQgKCpDb2xvclRhYmxlUGFyYW1ldGVyaXYpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt ZSwgY29uc3QgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lkICgqQ29weUNvbG9yVGFibGUpKEdMZW51 bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXpl aSB3aWR0aCk7CiAgIHZvaWQgKCpHZXRDb2xvclRhYmxlKShHTGVudW0gdGFyZ2V0LCBHTGVudW0g Zm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICogdGFibGUpOwogICB2b2lkICgqR2V0Q29sb3JU YWJsZVBhcmFtZXRlcmZ2KShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBw YXJhbXMpOwogICB2b2lkICgqR2V0Q29sb3JUYWJsZVBhcmFtZXRlcml2KShHTGVudW0gdGFyZ2V0 LCBHTGVudW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAoKkNvbG9yU3ViVGFibGUp KEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMZW51bSBmb3Jt YXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKiBkYXRhKTsKICAgdm9pZCAoKkNvcHlDb2xv clN1YlRhYmxlKShHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHN0YXJ0LCBHTGludCB4LCBHTGludCB5 LCBHTHNpemVpIHdpZHRoKTsKICAgdm9pZCAoKkNvbnZvbHV0aW9uRmlsdGVyMUQpKEdMZW51bSB0 YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xlbnVtIGZvcm1h dCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqIGltYWdlKTsKICAgdm9pZCAoKkNvbnZvbHV0 aW9uRmlsdGVyMkQpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXpl aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25z dCBHTHZvaWQgKiBpbWFnZSk7CiAgIHZvaWQgKCpDb252b2x1dGlvblBhcmFtZXRlcmYpKEdMZW51 bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbXMpOwogICB2b2lkICgqQ29udm9s dXRpb25QYXJhbWV0ZXJmdikoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZs b2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkNvbnZvbHV0aW9uUGFyYW1ldGVyaSkoR0xlbnVtIHRh cmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbXMpOwogICB2b2lkICgqQ29udm9sdXRpb25Q YXJhbWV0ZXJpdikoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqIHBh cmFtcyk7CiAgIHZvaWQgKCpDb3B5Q29udm9sdXRpb25GaWx0ZXIxRCkoR0xlbnVtIHRhcmdldCwg R0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoKTsK ICAgdm9pZCAoKkNvcHlDb252b2x1dGlvbkZpbHRlcjJEKShHTGVudW0gdGFyZ2V0LCBHTGVudW0g aW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg aGVpZ2h0KTsKICAgdm9pZCAoKkdldENvbnZvbHV0aW9uRmlsdGVyKShHTGVudW0gdGFyZ2V0LCBH TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICogaW1hZ2UpOwogICB2b2lkICgqR2V0 Q29udm9sdXRpb25QYXJhbWV0ZXJmdikoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZs b2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldENvbnZvbHV0aW9uUGFyYW1ldGVyaXYpKEdMZW51 bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0U2Vw YXJhYmxlRmlsdGVyKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg R0x2b2lkICogcm93LCBHTHZvaWQgKiBjb2x1bW4sIEdMdm9pZCAqIHNwYW4pOwogICB2b2lkICgq U2VwYXJhYmxlRmlsdGVyMkQpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl LCBjb25zdCBHTHZvaWQgKiByb3csIGNvbnN0IEdMdm9pZCAqIGNvbHVtbik7CiAgIHZvaWQgKCpH ZXRIaXN0b2dyYW0pKEdMZW51bSB0YXJnZXQsIEdMYm9vbGVhbiByZXNldCwgR0xlbnVtIGZvcm1h dCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqIHZhbHVlcyk7CiAgIHZvaWQgKCpHZXRIaXN0b2dyYW1Q YXJhbWV0ZXJmdikoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICogcGFyYW1z KTsKICAgdm9pZCAoKkdldEhpc3RvZ3JhbVBhcmFtZXRlcml2KShHTGVudW0gdGFyZ2V0LCBHTGVu dW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldE1pbm1heCkoR0xlbnVtIHRh cmdldCwgR0xib29sZWFuIHJlc2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lk ICogdmFsdWVzKTsKICAgdm9pZCAoKkdldE1pbm1heFBhcmFtZXRlcmZ2KShHTGVudW0gdGFyZ2V0 LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0TWlubWF4UGFy YW1ldGVyaXYpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKiBwYXJhbXMpOwog ICB2b2lkICgqSGlzdG9ncmFtKShHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0g aW50ZXJuYWxmb3JtYXQsIEdMYm9vbGVhbiBzaW5rKTsKICAgdm9pZCAoKk1pbm1heCkoR0xlbnVt IHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGJvb2xlYW4gc2luayk7CiAgIHZvaWQg KCpSZXNldEhpc3RvZ3JhbSkoR0xlbnVtIHRhcmdldCk7CiAgIHZvaWQgKCpSZXNldE1pbm1heCko R0xlbnVtIHRhcmdldCk7CiAgIHZvaWQgKCpUZXhJbWFnZTNEKShHTGVudW0gdGFyZ2V0LCBHTGlu dCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp Z2h0LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0 eXBlLCBjb25zdCBHTHZvaWQgKiBwaXhlbHMpOwogICB2b2lkICgqVGV4U3ViSW1hZ2UzRCkoR0xl bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdM aW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRo LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICogcGl4ZWxzKTsKICAg dm9pZCAoKkNvcHlUZXhTdWJJbWFnZTNEKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xp bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xpbnQgeCwgR0xpbnQg eSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwogICB2b2lkICgqQWN0aXZlVGV4dHVy ZUFSQikoR0xlbnVtIHRleHR1cmUpOwogICB2b2lkICgqQ2xpZW50QWN0aXZlVGV4dHVyZUFSQiko R0xlbnVtIHRleHR1cmUpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDFkQVJCKShHTGVudW0gdGFy Z2V0LCBHTGRvdWJsZSBzKTsKICAgdm9pZCAoKk11bHRpVGV4Q29vcmQxZHZBUkIpKEdMZW51bSB0 YXJnZXQsIGNvbnN0IEdMZG91YmxlICogdik7CiAgIHZvaWQgKCpNdWx0aVRleENvb3JkMWZBUkIp KEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgcyk7CiAgIHZvaWQgKCpNdWx0aVRleENvb3JkMWZ2QVJC KShHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0ICogdik7CiAgIHZvaWQgKCpNdWx0aVRleENv b3JkMWlBUkIpKEdMZW51bSB0YXJnZXQsIEdMaW50IHMpOwogICB2b2lkICgqTXVsdGlUZXhDb29y ZDFpdkFSQikoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKiB2KTsKICAgdm9pZCAoKk11bHRp VGV4Q29vcmQxc0FSQikoR0xlbnVtIHRhcmdldCwgR0xzaG9ydCBzKTsKICAgdm9pZCAoKk11bHRp VGV4Q29vcmQxc3ZBUkIpKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMc2hvcnQgKiB2KTsKICAgdm9p ZCAoKk11bHRpVGV4Q29vcmQyZEFSQikoR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgcywgR0xkb3Vi bGUgdCk7CiAgIHZvaWQgKCpNdWx0aVRleENvb3JkMmR2QVJCKShHTGVudW0gdGFyZ2V0LCBjb25z dCBHTGRvdWJsZSAqIHYpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDJmQVJCKShHTGVudW0gdGFy Z2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCk7CiAgIHZvaWQgKCpNdWx0aVRleENvb3JkMmZ2QVJC KShHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0ICogdik7CiAgIHZvaWQgKCpNdWx0aVRleENv b3JkMmlBUkIpKEdMZW51bSB0YXJnZXQsIEdMaW50IHMsIEdMaW50IHQpOwogICB2b2lkICgqTXVs dGlUZXhDb29yZDJpdkFSQikoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKiB2KTsKICAgdm9p ZCAoKk11bHRpVGV4Q29vcmQyc0FSQikoR0xlbnVtIHRhcmdldCwgR0xzaG9ydCBzLCBHTHNob3J0 IHQpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDJzdkFSQikoR0xlbnVtIHRhcmdldCwgY29uc3Qg R0xzaG9ydCAqIHYpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDNkQVJCKShHTGVudW0gdGFyZ2V0 LCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByKTsKICAgdm9pZCAoKk11bHRpVGV4 Q29vcmQzZHZBUkIpKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZG91YmxlICogdik7CiAgIHZvaWQg KCpNdWx0aVRleENvb3JkM2ZBUkIpKEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgcywgR0xmbG9hdCB0 LCBHTGZsb2F0IHIpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDNmdkFSQikoR0xlbnVtIHRhcmdl dCwgY29uc3QgR0xmbG9hdCAqIHYpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDNpQVJCKShHTGVu dW0gdGFyZ2V0LCBHTGludCBzLCBHTGludCB0LCBHTGludCByKTsKICAgdm9pZCAoKk11bHRpVGV4 Q29vcmQzaXZBUkIpKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMaW50ICogdik7CiAgIHZvaWQgKCpN dWx0aVRleENvb3JkM3NBUkIpKEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBH THNob3J0IHIpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDNzdkFSQikoR0xlbnVtIHRhcmdldCwg Y29uc3QgR0xzaG9ydCAqIHYpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDRkQVJCKShHTGVudW0g dGFyZ2V0LCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByLCBHTGRvdWJsZSBxKTsK ICAgdm9pZCAoKk11bHRpVGV4Q29vcmQ0ZHZBUkIpKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZG91 YmxlICogdik7CiAgIHZvaWQgKCpNdWx0aVRleENvb3JkNGZBUkIpKEdMZW51bSB0YXJnZXQsIEdM ZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIsIEdMZmxvYXQgcSk7CiAgIHZvaWQgKCpNdWx0 aVRleENvb3JkNGZ2QVJCKShHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0ICogdik7CiAgIHZv aWQgKCpNdWx0aVRleENvb3JkNGlBUkIpKEdMZW51bSB0YXJnZXQsIEdMaW50IHMsIEdMaW50IHQs IEdMaW50IHIsIEdMaW50IHEpOwogICB2b2lkICgqTXVsdGlUZXhDb29yZDRpdkFSQikoR0xlbnVt IHRhcmdldCwgY29uc3QgR0xpbnQgKiB2KTsKICAgdm9pZCAoKk11bHRpVGV4Q29vcmQ0c0FSQiko R0xlbnVtIHRhcmdldCwgR0xzaG9ydCBzLCBHTHNob3J0IHQsIEdMc2hvcnQgciwgR0xzaG9ydCBx KTsKICAgdm9pZCAoKk11bHRpVGV4Q29vcmQ0c3ZBUkIpKEdMZW51bSB0YXJnZXQsIGNvbnN0IEdM c2hvcnQgKiB2KTsKICAgdm9pZCAoKkxvYWRUcmFuc3Bvc2VNYXRyaXhmQVJCKShjb25zdCBHTGZs b2F0ICogbSk7CiAgIHZvaWQgKCpMb2FkVHJhbnNwb3NlTWF0cml4ZEFSQikoY29uc3QgR0xkb3Vi bGUgKiBtKTsKICAgdm9pZCAoKk11bHRUcmFuc3Bvc2VNYXRyaXhmQVJCKShjb25zdCBHTGZsb2F0 ICogbSk7CiAgIHZvaWQgKCpNdWx0VHJhbnNwb3NlTWF0cml4ZEFSQikoY29uc3QgR0xkb3VibGUg KiBtKTsKICAgdm9pZCAoKlNhbXBsZUNvdmVyYWdlQVJCKShHTGNsYW1wZiB2YWx1ZSwgR0xib29s ZWFuIGludmVydCk7CiAgIHZvaWQgKCpTYW1wbGVQYXNzQVJCKShHTGVudW0gcGFzcyk7CiAgIHZv aWQgKCpQb2x5Z29uT2Zmc2V0RVhUKShHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCBiaWFzKTsKICAg dm9pZCAoKkdldFRleEZpbHRlckZ1bmNTR0lTKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gZmlsdGVy LCBHTGZsb2F0ICogd2VpZ2h0cyk7CiAgIHZvaWQgKCpUZXhGaWx0ZXJGdW5jU0dJUykoR0xlbnVt IHRhcmdldCwgR0xlbnVtIGZpbHRlciwgR0xzaXplaSBuLCBjb25zdCBHTGZsb2F0ICogd2VpZ2h0 cyk7CiAgIHZvaWQgKCpHZXRIaXN0b2dyYW1FWFQpKEdMZW51bSB0YXJnZXQsIEdMYm9vbGVhbiBy ZXNldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqIHZhbHVlcyk7CiAgIHZv aWQgKCpHZXRIaXN0b2dyYW1QYXJhbWV0ZXJmdkVYVCkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu YW1lLCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldEhpc3RvZ3JhbVBhcmFtZXRlcml2 RVhUKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsKICAgdm9p ZCAoKkdldE1pbm1heEVYVCkoR0xlbnVtIHRhcmdldCwgR0xib29sZWFuIHJlc2V0LCBHTGVudW0g Zm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICogdmFsdWVzKTsKICAgdm9pZCAoKkdldE1pbm1h eFBhcmFtZXRlcmZ2RVhUKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBw YXJhbXMpOwogICB2b2lkICgqR2V0TWlubWF4UGFyYW1ldGVyaXZFWFQpKEdMZW51bSB0YXJnZXQs IEdMZW51bSBwbmFtZSwgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0Q29udm9sdXRpb25G aWx0ZXJFWFQpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZv aWQgKiBpbWFnZSk7CiAgIHZvaWQgKCpHZXRDb252b2x1dGlvblBhcmFtZXRlcmZ2RVhUKShHTGVu dW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0 Q29udm9sdXRpb25QYXJhbWV0ZXJpdkVYVCkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBH TGludCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRTZXBhcmFibGVGaWx0ZXJFWFQpKEdMZW51bSB0 YXJnZXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKiByb3csIEdMdm9pZCAq IGNvbHVtbiwgR0x2b2lkICogc3Bhbik7CiAgIHZvaWQgKCpHZXRDb2xvclRhYmxlU0dJKShHTGVu dW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICogdGFibGUpOwog ICB2b2lkICgqR2V0Q29sb3JUYWJsZVBhcmFtZXRlcmZ2U0dJKShHTGVudW0gdGFyZ2V0LCBHTGVu dW0gcG5hbWUsIEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0Q29sb3JUYWJsZVBhcmFt ZXRlcml2U0dJKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsK ICAgdm9pZCAoKlBpeGVsVGV4R2VuU0dJWCkoR0xlbnVtIG1vZGUpOwogICB2b2lkICgqUGl4ZWxU ZXhHZW5QYXJhbWV0ZXJpU0dJUykoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CiAgIHZvaWQg KCpQaXhlbFRleEdlblBhcmFtZXRlcml2U0dJUykoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAq IHBhcmFtcyk7CiAgIHZvaWQgKCpQaXhlbFRleEdlblBhcmFtZXRlcmZTR0lTKShHTGVudW0gcG5h bWUsIEdMZmxvYXQgcGFyYW0pOwogICB2b2lkICgqUGl4ZWxUZXhHZW5QYXJhbWV0ZXJmdlNHSVMp KEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRQaXhl bFRleEdlblBhcmFtZXRlcml2U0dJUykoR0xlbnVtIHBuYW1lLCBHTGludCAqIHBhcmFtcyk7CiAg IHZvaWQgKCpHZXRQaXhlbFRleEdlblBhcmFtZXRlcmZ2U0dJUykoR0xlbnVtIHBuYW1lLCBHTGZs b2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKlRleEltYWdlNERTR0lTKShHTGVudW0gdGFyZ2V0LCBH TGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp IGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xzaXplaSBzaXplNGQsIEdMaW50IGJvcmRlciwgR0xl bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqIHBpeGVscyk7CiAgIHZvaWQg KCpUZXhTdWJJbWFnZTREU0dJUykoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhv ZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMaW50IHdvZmZzZXQsIEdMc2l6 ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTHNpemVpIHNpemU0ZCwg R0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqIHBpeGVscyk7CiAgIEdM Ym9vbGVhbiAoKkFyZVRleHR1cmVzUmVzaWRlbnRFWFQpKEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVt ICogdGV4dHVyZXMsIEdMYm9vbGVhbiAqIHJlc2lkZW5jZXMpOwogICB2b2lkICgqR2VuVGV4dHVy ZXNFWFQpKEdMc2l6ZWkgbiwgR0xlbnVtICogdGV4dHVyZXMpOwogICBHTGJvb2xlYW4gKCpJc1Rl eHR1cmVFWFQpKEdMZW51bSB0ZXh0dXJlKTsKICAgdm9pZCAoKkRldGFpbFRleEZ1bmNTR0lTKShH TGVudW0gdGFyZ2V0LCBHTHNpemVpIG4sIGNvbnN0IEdMZmxvYXQgKiBwb2ludHMpOwogICB2b2lk ICgqR2V0RGV0YWlsVGV4RnVuY1NHSVMpKEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgKiBwb2ludHMp OwogICB2b2lkICgqU2hhcnBlblRleEZ1bmNTR0lTKShHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG4s IGNvbnN0IEdMZmxvYXQgKiBwb2ludHMpOwogICB2b2lkICgqR2V0U2hhcnBlblRleEZ1bmNTR0lT KShHTGVudW0gdGFyZ2V0LCBHTGZsb2F0ICogcG9pbnRzKTsKICAgdm9pZCAoKlNhbXBsZU1hc2tT R0lTKShHTGNsYW1wZiB2YWx1ZSwgR0xib29sZWFuIGludmVydCk7CiAgIHZvaWQgKCpTYW1wbGVQ YXR0ZXJuU0dJUykoR0xlbnVtIHBhdHRlcm4pOwogICB2b2lkICgqQ29sb3JQb2ludGVyRVhUKShH TGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIEdMc2l6ZWkgY291bnQsIGNv bnN0IEdMdm9pZCAqIHBvaW50ZXIpOwogICB2b2lkICgqRWRnZUZsYWdQb2ludGVyRVhUKShHTHNp emVpIHN0cmlkZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xib29sZWFuICogcG9pbnRlcik7CiAg IHZvaWQgKCpJbmRleFBvaW50ZXJFWFQpKEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgR0xz aXplaSBjb3VudCwgY29uc3QgR0x2b2lkICogcG9pbnRlcik7CiAgIHZvaWQgKCpOb3JtYWxQb2lu dGVyRVhUKShHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIEdMc2l6ZWkgY291bnQsIGNvbnN0 IEdMdm9pZCAqIHBvaW50ZXIpOwogICB2b2lkICgqVGV4Q29vcmRQb2ludGVyRVhUKShHTGludCBz aXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM dm9pZCAqIHBvaW50ZXIpOwogICB2b2lkICgqVmVydGV4UG9pbnRlckVYVCkoR0xpbnQgc2l6ZSwg R0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHZvaWQg KiBwb2ludGVyKTsKICAgdm9pZCAoKlNwcml0ZVBhcmFtZXRlcmZTR0lYKShHTGVudW0gcG5hbWUs IEdMZmxvYXQgcGFyYW0pOwogICB2b2lkICgqU3ByaXRlUGFyYW1ldGVyZnZTR0lYKShHTGVudW0g cG5hbWUsIGNvbnN0IEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqU3ByaXRlUGFyYW1ldGVy aVNHSVgpKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwogICB2b2lkICgqU3ByaXRlUGFyYW1l dGVyaXZTR0lYKShHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAo KlBvaW50UGFyYW1ldGVyZkVYVCkoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKICAgdm9p ZCAoKlBvaW50UGFyYW1ldGVyZnZFWFQpKEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqIHBh cmFtcyk7CiAgIEdMaW50ICgqR2V0SW5zdHJ1bWVudHNTR0lYKSh2b2lkKTsKICAgdm9pZCAoKklu c3RydW1lbnRzQnVmZmVyU0dJWCkoR0xzaXplaSBzaXplLCBHTGludCAqIGJ1ZmZlcik7CiAgIEdM aW50ICgqUG9sbEluc3RydW1lbnRzU0dJWCkoR0xpbnQgKiBtYXJrZXJfcCk7CiAgIHZvaWQgKCpS ZWFkSW5zdHJ1bWVudHNTR0lYKShHTGludCBtYXJrZXIpOwogICB2b2lkICgqU3RhcnRJbnN0cnVt ZW50c1NHSVgpKHZvaWQpOwogICB2b2lkICgqU3RvcEluc3RydW1lbnRzU0dJWCkoR0xpbnQgbWFy a2VyKTsKICAgdm9pZCAoKkZyYW1lWm9vbVNHSVgpKEdMaW50IGZhY3Rvcik7CiAgIHZvaWQgKCpU YWdTYW1wbGVCdWZmZXJTR0lYKSh2b2lkKTsKICAgdm9pZCAoKlJlZmVyZW5jZVBsYW5lU0dJWCko Y29uc3QgR0xkb3VibGUgKiBlcXVhdGlvbik7CiAgIHZvaWQgKCpGbHVzaFJhc3RlclNHSVgpKHZv aWQpOwogICB2b2lkICgqR2V0TGlzdFBhcmFtZXRlcmZ2U0dJWCkoR0x1aW50IGxpc3QsIEdMZW51 bSBwbmFtZSwgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRMaXN0UGFyYW1ldGVyaXZT R0lYKShHTHVpbnQgbGlzdCwgR0xlbnVtIHBuYW1lLCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQg KCpMaXN0UGFyYW1ldGVyZlNHSVgpKEdMdWludCBsaXN0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQg cGFyYW0pOwogICB2b2lkICgqTGlzdFBhcmFtZXRlcmZ2U0dJWCkoR0x1aW50IGxpc3QsIEdMZW51 bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpMaXN0UGFyYW1ldGVy aVNHSVgpKEdMdWludCBsaXN0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKICAgdm9pZCAo Kkxpc3RQYXJhbWV0ZXJpdlNHSVgpKEdMdWludCBsaXN0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM aW50ICogcGFyYW1zKTsKICAgdm9pZCAoKkZyYWdtZW50Q29sb3JNYXRlcmlhbFNHSVgpKEdMZW51 bSBmYWNlLCBHTGVudW0gbW9kZSk7CiAgIHZvaWQgKCpGcmFnbWVudExpZ2h0ZlNHSVgpKEdMZW51 bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKICAgdm9pZCAoKkZyYWdtZW50 TGlnaHRmdlNHSVgpKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICog cGFyYW1zKTsKICAgdm9pZCAoKkZyYWdtZW50TGlnaHRpU0dJWCkoR0xlbnVtIGxpZ2h0LCBHTGVu dW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKICAgdm9pZCAoKkZyYWdtZW50TGlnaHRpdlNHSVgpKEdM ZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQg KCpGcmFnbWVudExpZ2h0TW9kZWxmU0dJWCkoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsK ICAgdm9pZCAoKkZyYWdtZW50TGlnaHRNb2RlbGZ2U0dJWCkoR0xlbnVtIHBuYW1lLCBjb25zdCBH TGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkZyYWdtZW50TGlnaHRNb2RlbGlTR0lYKShHTGVu dW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKICAgdm9pZCAoKkZyYWdtZW50TGlnaHRNb2RlbGl2U0dJ WCkoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpGcmFnbWVu dE1hdGVyaWFsZlNHSVgpKEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0p OwogICB2b2lkICgqRnJhZ21lbnRNYXRlcmlhbGZ2U0dJWCkoR0xlbnVtIGZhY2UsIEdMZW51bSBw bmFtZSwgY29uc3QgR0xmbG9hdCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpGcmFnbWVudE1hdGVyaWFs aVNHSVgpKEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKICAgdm9pZCAo KkZyYWdtZW50TWF0ZXJpYWxpdlNHSVgpKEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIGNvbnN0 IEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldEZyYWdtZW50TGlnaHRmdlNHSVgpKEdMZW51 bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldEZy YWdtZW50TGlnaHRpdlNHSVgpKEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGludCAqIHBh cmFtcyk7CiAgIHZvaWQgKCpHZXRGcmFnbWVudE1hdGVyaWFsZnZTR0lYKShHTGVudW0gZmFjZSwg R0xlbnVtIHBuYW1lLCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldEZyYWdtZW50TWF0 ZXJpYWxpdlNHSVgpKEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsK ICAgdm9pZCAoKkxpZ2h0RW52aVNHSVgpKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwogICB2 b2lkICgqVmVydGV4V2VpZ2h0ZkVYVCkoR0xmbG9hdCB3ZWlnaHQpOwogICB2b2lkICgqVmVydGV4 V2VpZ2h0ZnZFWFQpKGNvbnN0IEdMZmxvYXQgKiB3ZWlnaHQpOwogICB2b2lkICgqVmVydGV4V2Vp Z2h0UG9pbnRlckVYVCkoR0xzaXplaSBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUs IGNvbnN0IEdMdm9pZCAqIHBvaW50ZXIpOwogICB2b2lkICgqRmx1c2hWZXJ0ZXhBcnJheVJhbmdl TlYpKHZvaWQpOwogICB2b2lkICgqVmVydGV4QXJyYXlSYW5nZU5WKShHTHNpemVpIHNpemUsIGNv bnN0IEdMdm9pZCAqIHBvaW50ZXIpOwogICB2b2lkICgqQ29tYmluZXJQYXJhbWV0ZXJmdk5WKShH TGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqQ29tYmluZXJQ YXJhbWV0ZXJmTlYpKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7CiAgIHZvaWQgKCpDb21i aW5lclBhcmFtZXRlcml2TlYpKEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKiBwYXJhbXMpOwog ICB2b2lkICgqQ29tYmluZXJQYXJhbWV0ZXJpTlYpKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0p OwogICB2b2lkICgqQ29tYmluZXJJbnB1dE5WKShHTGVudW0gc3RhZ2UsIEdMZW51bSBwb3J0aW9u LCBHTGVudW0gdmFyaWFibGUsIEdMZW51bSBpbnB1dCwgR0xlbnVtIG1hcHBpbmcsIEdMZW51bSBj b21wb25lbnRVc2FnZSk7CiAgIHZvaWQgKCpDb21iaW5lck91dHB1dE5WKShHTGVudW0gc3RhZ2Us IEdMZW51bSBwb3J0aW9uLCBHTGVudW0gYWJPdXRwdXQsIEdMZW51bSBjZE91dHB1dCwgR0xlbnVt IHN1bU91dHB1dCwgR0xlbnVtIHNjYWxlLCBHTGVudW0gYmlhcywgR0xib29sZWFuIGFiRG90UHJv ZHVjdCwgR0xib29sZWFuIGNkRG90UHJvZHVjdCwgR0xib29sZWFuIG11eFN1bSk7CiAgIHZvaWQg KCpGaW5hbENvbWJpbmVySW5wdXROVikoR0xlbnVtIHZhcmlhYmxlLCBHTGVudW0gaW5wdXQsIEdM ZW51bSBtYXBwaW5nLCBHTGVudW0gY29tcG9uZW50VXNhZ2UpOwogICB2b2lkICgqR2V0Q29tYmlu ZXJJbnB1dFBhcmFtZXRlcmZ2TlYpKEdMZW51bSBzdGFnZSwgR0xlbnVtIHBvcnRpb24sIEdMZW51 bSB2YXJpYWJsZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICogcGFyYW1zKTsKICAgdm9pZCAoKkdl dENvbWJpbmVySW5wdXRQYXJhbWV0ZXJpdk5WKShHTGVudW0gc3RhZ2UsIEdMZW51bSBwb3J0aW9u LCBHTGVudW0gdmFyaWFibGUsIEdMZW51bSBwbmFtZSwgR0xpbnQgKiBwYXJhbXMpOwogICB2b2lk ICgqR2V0Q29tYmluZXJPdXRwdXRQYXJhbWV0ZXJmdk5WKShHTGVudW0gc3RhZ2UsIEdMZW51bSBw b3J0aW9uLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiBwYXJhbXMpOwogICB2b2lkICgqR2V0Q29t YmluZXJPdXRwdXRQYXJhbWV0ZXJpdk5WKShHTGVudW0gc3RhZ2UsIEdMZW51bSBwb3J0aW9uLCBH TGVudW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldEZpbmFsQ29tYmluZXJJ bnB1dFBhcmFtZXRlcmZ2TlYpKEdMZW51bSB2YXJpYWJsZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0 ICogcGFyYW1zKTsKICAgdm9pZCAoKkdldEZpbmFsQ29tYmluZXJJbnB1dFBhcmFtZXRlcml2TlYp KEdMZW51bSB2YXJpYWJsZSwgR0xlbnVtIHBuYW1lLCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQg KCpSZXNpemVCdWZmZXJzTUVTQSkodm9pZCk7CiAgIHZvaWQgKCpXaW5kb3dQb3MyZE1FU0EpKEdM ZG91YmxlIHgsIEdMZG91YmxlIHkpOwogICB2b2lkICgqV2luZG93UG9zMmR2TUVTQSkoY29uc3Qg R0xkb3VibGUgKiB2KTsKICAgdm9pZCAoKldpbmRvd1BvczJmTUVTQSkoR0xmbG9hdCB4LCBHTGZs b2F0IHkpOwogICB2b2lkICgqV2luZG93UG9zMmZ2TUVTQSkoY29uc3QgR0xmbG9hdCAqIHYpOwog ICB2b2lkICgqV2luZG93UG9zMmlNRVNBKShHTGludCB4LCBHTGludCB5KTsKICAgdm9pZCAoKldp bmRvd1BvczJpdk1FU0EpKGNvbnN0IEdMaW50ICogdik7CiAgIHZvaWQgKCpXaW5kb3dQb3Myc01F U0EpKEdMc2hvcnQgeCwgR0xzaG9ydCB5KTsKICAgdm9pZCAoKldpbmRvd1BvczJzdk1FU0EpKGNv bnN0IEdMc2hvcnQgKiB2KTsKICAgdm9pZCAoKldpbmRvd1BvczNkTUVTQSkoR0xkb3VibGUgeCwg R0xkb3VibGUgeSwgR0xkb3VibGUgeik7CiAgIHZvaWQgKCpXaW5kb3dQb3MzZHZNRVNBKShjb25z dCBHTGRvdWJsZSAqIHYpOwogICB2b2lkICgqV2luZG93UG9zM2ZNRVNBKShHTGZsb2F0IHgsIEdM ZmxvYXQgeSwgR0xmbG9hdCB6KTsKICAgdm9pZCAoKldpbmRvd1BvczNmdk1FU0EpKGNvbnN0IEdM ZmxvYXQgKiB2KTsKICAgdm9pZCAoKldpbmRvd1BvczNpTUVTQSkoR0xpbnQgeCwgR0xpbnQgeSwg R0xpbnQgeik7CiAgIHZvaWQgKCpXaW5kb3dQb3MzaXZNRVNBKShjb25zdCBHTGludCAqIHYpOwog ICB2b2lkICgqV2luZG93UG9zM3NNRVNBKShHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6 KTsKICAgdm9pZCAoKldpbmRvd1BvczNzdk1FU0EpKGNvbnN0IEdMc2hvcnQgKiB2KTsKICAgdm9p ZCAoKldpbmRvd1BvczRkTUVTQSkoR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiwg R0xkb3VibGUgdyk7CiAgIHZvaWQgKCpXaW5kb3dQb3M0ZHZNRVNBKShjb25zdCBHTGRvdWJsZSAq IHYpOwogICB2b2lkICgqV2luZG93UG9zNGZNRVNBKShHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xm bG9hdCB6LCBHTGZsb2F0IHcpOwogICB2b2lkICgqV2luZG93UG9zNGZ2TUVTQSkoY29uc3QgR0xm bG9hdCAqIHYpOwogICB2b2lkICgqV2luZG93UG9zNGlNRVNBKShHTGludCB4LCBHTGludCB5LCBH TGludCB6LCBHTGludCB3KTsKICAgdm9pZCAoKldpbmRvd1BvczRpdk1FU0EpKGNvbnN0IEdMaW50 ICogdik7CiAgIHZvaWQgKCpXaW5kb3dQb3M0c01FU0EpKEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBH THNob3J0IHosIEdMc2hvcnQgdyk7CiAgIHZvaWQgKCpXaW5kb3dQb3M0c3ZNRVNBKShjb25zdCBH THNob3J0ICogdik7CiAgIHZvaWQgKCpCbGVuZEZ1bmNTZXBhcmF0ZUVYVCkoR0xlbnVtIHNmYWN0 b3JSR0IsIEdMZW51bSBkZmFjdG9yUkdCLCBHTGVudW0gc2ZhY3RvckFscGhhLCBHTGVudW0gZGZh Y3RvckFscGhhKTsKICAgdm9pZCAoKkluZGV4TWF0ZXJpYWxFWFQpKEdMZW51bSBmYWNlLCBHTGVu dW0gbW9kZSk7CiAgIHZvaWQgKCpJbmRleEZ1bmNFWFQpKEdMZW51bSBmdW5jLCBHTGNsYW1wZiBy ZWYpOwogICB2b2lkICgqTG9ja0FycmF5c0VYVCkoR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQp OwogICB2b2lkICgqVW5sb2NrQXJyYXlzRVhUKSh2b2lkKTsKICAgdm9pZCAoKkN1bGxQYXJhbWV0 ZXJkdkVYVCkoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGRvdWJsZSAqIHBhcmFtcyk7CiAgIHZvaWQg KCpDdWxsUGFyYW1ldGVyZnZFWFQpKEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqIHBhcmFt cyk7CiAgIHZvaWQgKCpIaW50UEdJKShHTGVudW0gdGFyZ2V0LCBHTGludCBtb2RlKTsKICAgdm9p ZCAoKkZvZ0Nvb3JkZkVYVCkoR0xmbG9hdCBjb29yZCk7CiAgIHZvaWQgKCpGb2dDb29yZGZ2RVhU KShjb25zdCBHTGZsb2F0ICogY29vcmQpOwogICB2b2lkICgqRm9nQ29vcmRkRVhUKShHTGRvdWJs ZSBjb29yZCk7CiAgIHZvaWQgKCpGb2dDb29yZGR2RVhUKShjb25zdCBHTGRvdWJsZSAqIGNvb3Jk KTsKICAgdm9pZCAoKkZvZ0Nvb3JkUG9pbnRlckVYVCkoR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3Ry aWRlLCBjb25zdCBHTHZvaWQgKiBwb2ludGVyKTsKICAgdm9pZCAoKkdldENvbG9yVGFibGVFWFQp KEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKiBkYXRh KTsKICAgdm9pZCAoKkdldENvbG9yVGFibGVQYXJhbWV0ZXJpdkVYVCkoR0xlbnVtIHRhcmdldCwg R0xlbnVtIHBuYW1lLCBHTGludCAqIHBhcmFtcyk7CiAgIHZvaWQgKCpHZXRDb2xvclRhYmxlUGFy YW1ldGVyZnZFWFQpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqIHBhcmFt cyk7CiAgIHZvaWQgKCpUYnVmZmVyTWFzazNERlgpKEdMdWludCBtYXNrKTsKICAgdm9pZCAoKkNv bXByZXNzZWRUZXhJbWFnZTNEQVJCKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVt IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBk ZXB0aCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICogZGF0 YSk7CiAgIHZvaWQgKCpDb21wcmVzc2VkVGV4SW1hZ2UyREFSQikoR0xlbnVtIHRhcmdldCwgR0xp bnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo ZWlnaHQsIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqIGRh dGEpOwogICB2b2lkICgqQ29tcHJlc3NlZFRleEltYWdlMURBUkIpKEdMZW51bSB0YXJnZXQsIEdM aW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMaW50IGJv cmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqIGRhdGEpOwogICB2b2lkICgq Q29tcHJlc3NlZFRleFN1YkltYWdlM0RBUkIpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBH TGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRo LCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBp bWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqIGRhdGEpOwogICB2b2lkICgqQ29tcHJlc3NlZFRleFN1 YkltYWdlMkRBUkIpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBH TGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1h dCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCAqIGRhdGEpOwogICB2b2lkICgqQ29t cHJlc3NlZFRleFN1YkltYWdlMURBUkIpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGlu dCB4b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6 ZSwgY29uc3QgR0x2b2lkICogZGF0YSk7CiAgIHZvaWQgKCpHZXRDb21wcmVzc2VkVGV4SW1hZ2VB UkIpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCB2b2lkICogaW1nKTsKfTsKIyAzNiAiLi4v Li4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5cGVzLmgiIDIKIyAxICIuLi8uLi8uLi8uLi9leHRy YXMvTWVzYS9zcmMvZ2x0aHJlYWQuaCIgMQojIDE3NiAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Ev c3JjL2dsdGhyZWFkLmgiCiMgMSAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL1gxMS9YdGhy ZWFkcy5oIiAxCiMgMTk5ICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvWDExL1h0aHJlYWRz LmgiCiMgMSAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMSAzCiMgNDIgIi91c3IvaW5jbHVkZS9w dGhyZWFkLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDQ5ICIvdXNy L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbWFjaGluZS9lbmRpYW4u aCIgMSAzCiMgOTcgIi91c3IvaW5jbHVkZS9tYWNoaW5lL2VuZGlhbi5oIiAzCnN0YXRpYyBfX2lu bGluZSBfX3VpbnQ2NF90Cl9fYnN3YXA2NChfX3VpbnQ2NF90IF94KQp7CiAgICAgICAgcmV0dXJu ICgoX3ggPj4gNTYpIHwgKChfeCA+PiA0MCkgJiAweGZmMDApIHwgKChfeCA+PiAyNCkgJiAweGZm MDAwMCkgfAogICAgICAgICAgICAoKF94ID4+IDgpICYgMHhmZjAwMDAwMCkgfCAoKF94IDw8IDgp ICYgKChfX3VpbnQ2NF90KTB4ZmYgPDwgMzIpKSB8CiAgICAgICAgICAgICgoX3ggPDwgMjQpICYg KChfX3VpbnQ2NF90KTB4ZmYgPDwgNDApKSB8CiAgICAgICAgICAgICgoX3ggPDwgNDApICYgKChf X3VpbnQ2NF90KTB4ZmYgPDwgNDgpKSB8ICgoX3ggPDwgNTYpKSk7Cn0KCnN0YXRpYyBfX2lubGlu ZSBfX3VpbnQzMl90Cl9fYnN3YXAzMihfX3VpbnQzMl90IF94KQp7CgogICAgICAgIHJldHVybiAo X19leHRlbnNpb25fXyAoeyByZWdpc3RlciBfX3VpbnQzMl90IF9fWCA9IChfeCk7IF9fYXNtICgi eGNoZ2IgJWgwLCAlYjBcblx0cm9ybCAkMTYsICUwXG5cdHhjaGdiICVoMCwgJWIwIiA6ICIrcSIg KF9fWCkpOyBfX1g7IH0pKTsKfQoKc3RhdGljIF9faW5saW5lIF9fdWludDE2X3QKX19ic3dhcDE2 KF9fdWludDE2X3QgX3gpCnsKCiAgICAgICAgcmV0dXJuIChfX2V4dGVuc2lvbl9fICh7IHJlZ2lz dGVyIF9fdWludDE2X3QgX19YID0gKF94KTsgX19hc20gKCJ4Y2hnYiAlaDAsICViMCIgOiAiK3Ei IChfX1gpKTsgX19YOyB9KSk7Cn0KIyA1MCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMK IyAxICIvdXNyL2luY2x1ZGUvbWFjaGluZS90eXBlcy5oIiAxIDMKIyA0MSAiL3Vzci9pbmNsdWRl L21hY2hpbmUvdHlwZXMuaCIgMwp0eXBlZGVmIHN0cnVjdCBfcGh5c2FkciB7CiAgICAgICAgaW50 IHJbMV07Cn0gKnBoeXNhZHI7Cgp0eXBlZGVmIHN0cnVjdCBsYWJlbF90IHsKICAgICAgICBpbnQg dmFsWzZdOwp9IGxhYmVsX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdm1fb2Zmc2V0X3Q7CnR5 cGVkZWYgX19pbnQ2NF90IHZtX29vZmZzZXRfdDsKdHlwZWRlZiBfX3VpbnQ2NF90IHZtX3BpbmRl eF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB2bV9zaXplX3Q7Cgp0eXBlZGVmIF9faW50MzJfdCBy ZWdpc3Rlcl90Owp0eXBlZGVmIF9fdWludDMyX3QgdV9yZWdpc3Rlcl90OwoKCgoKCgoKdHlwZWRl ZiByZWdpc3Rlcl90IGNyaXRpY2FsX3Q7CgoKdHlwZWRlZiBfX3VpbnQzMl90IGludHJtYXNrX3Q7 CgoKdHlwZWRlZiB2b2lkIG9pbnRoYW5kMl90KGludCBfZGV2aWNlX2lkKTsKIyA1MSAiL3Vzci9p bmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIiAx IDMKIyA1MiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgp0eXBlZGVmIHVuc2lnbmVk IGNoYXIgdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVfc2hvcnQ7CnR5cGVkZWYgdW5z aWduZWQgaW50IHVfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdV9sb25nOwp0eXBlZGVmIHVu c2lnbmVkIHNob3J0IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKCgoKCgoKdHlw ZWRlZiBfX2ludDhfdCBpbnQ4X3Q7CgoKCgp0eXBlZGVmIF9faW50MTZfdCBpbnQxNl90OwoKCgoK dHlwZWRlZiBfX2ludDMyX3QgaW50MzJfdDsKCgoKCnR5cGVkZWYgX19pbnQ2NF90IGludDY0X3Q7 CgoKCgp0eXBlZGVmIF9fdWludDhfdCB1aW50OF90OwoKCgoKdHlwZWRlZiBfX3VpbnQxNl90IHVp bnQxNl90OwoKCgoKdHlwZWRlZiBfX3VpbnQzMl90IHVpbnQzMl90OwoKCgoKdHlwZWRlZiBfX3Vp bnQ2NF90IHVpbnQ2NF90OwoKCgoKdHlwZWRlZiBfX2ludHB0cl90IGludHB0cl90Owp0eXBlZGVm IF9fdWludHB0cl90IHVpbnRwdHJfdDsKCgoKCgoKdHlwZWRlZiBfX3VpbnQ4X3QgdV9pbnQ4X3Q7 CnR5cGVkZWYgX191aW50MTZfdCB1X2ludDE2X3Q7CnR5cGVkZWYgX191aW50MzJfdCB1X2ludDMy X3Q7CnR5cGVkZWYgX191aW50NjRfdCB1X2ludDY0X3Q7CgoKCgp0eXBlZGVmIHVfaW50NjRfdCB1 X3F1YWRfdDsKdHlwZWRlZiBpbnQ2NF90IHF1YWRfdDsKdHlwZWRlZiBxdWFkX3QgKiBxYWRkcl90 OwoKdHlwZWRlZiBjaGFyICogY2FkZHJfdDsKdHlwZWRlZiBjb25zdCBjaGFyICogY19jYWRkcl90 Owp0eXBlZGVmIHZvbGF0aWxlIGNoYXIgKnZfY2FkZHJfdDsKdHlwZWRlZiBpbnQ2NF90IGRhZGRy X3Q7CnR5cGVkZWYgdV9pbnQzMl90IGZpeHB0X3Q7CgoKdHlwZWRlZiBfX3VpbnQzMl90IGdpZF90 OwoKCgp0eXBlZGVmIHVfaW50MzJfdCBpbm9fdDsKdHlwZWRlZiBsb25nIGtleV90Owp0eXBlZGVm IHVfaW50MTZfdCBtb2RlX3Q7CnR5cGVkZWYgdV9pbnQxNl90IG5saW5rX3Q7CnR5cGVkZWYgX19p bnQ2NF90IG9mZl90Owp0eXBlZGVmIGludCBwaWRfdDsKdHlwZWRlZiBxdWFkX3QgcmxpbV90OwoK CnR5cGVkZWYgX19pbnQzMl90IHNlZ3N6X3Q7CgoKCnR5cGVkZWYgaW50MzJfdCBzd2Jsa190OwoK CnR5cGVkZWYgX191aW50MzJfdCB1aWRfdDsKIyAxNzEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu aCIgMwp0eXBlZGVmIHVfaW50MzJfdCBkZXZfdDsKIyAxOTAgIi91c3IvaW5jbHVkZS9zeXMvdHlw ZXMuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgY2xvY2tfdDsKCgoKCnR5cGVkZWYgaW50IGNs b2NraWRfdDsKCgoKCnR5cGVkZWYgX191aW50X2xlYXN0MzJfdCBmZmxhZ3NfdDsKCgoKCnR5cGVk ZWYgX191aW50NjRfdCBmc2Jsa2NudF90Owp0eXBlZGVmIF9fdWludDY0X3QgZnNmaWxjbnRfdDsK IyAyMTYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIGludCBzc2l6ZV90OwoK CgoKdHlwZWRlZiBpbnQgdGltZV90OwoKCgoKdHlwZWRlZiBpbnQgdGltZXJfdDsKIyAyNDMgIi91 c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgZmRfbWFzazsK CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgZmRfc2V0IHsKICAgICAgICBmZF9tYXNrIGZkc19iaXRzWygo KDEwMjRVKSArICgoKHNpemVvZihmZF9tYXNrKSAqIDgpKSAtIDFVKSkgLyAoKHNpemVvZihmZF9t YXNrKSAqIDgpKSldOwp9IGZkX3NldDsKIyAyNjcgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIg MwoKIyAyODQgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwoKIyA0MyAiL3Vzci9pbmNsdWRl L3B0aHJlYWQuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDEgMwojIDQxICIv dXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvdGltZXNwZWMu aCIgMSAzCiMgNTAgIi91c3IvaW5jbHVkZS9zeXMvdGltZXNwZWMuaCIgMwpzdHJ1Y3QgdGltZXNw ZWMgewogICAgICAgIHRpbWVfdCB0dl9zZWM7CiAgICAgICAgbG9uZyB0dl9uc2VjOwp9OwojIDQy ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzCgoKCgoKc3RydWN0IHRpbWV2YWwgewogICAg ICAgIGxvbmcgdHZfc2VjOwogICAgICAgIGxvbmcgdHZfdXNlYzsKfTsKCnN0cnVjdCB0aW1lem9u ZSB7CiAgICAgICAgaW50IHR6X21pbnV0ZXN3ZXN0OwogICAgICAgIGludCB0el9kc3R0aW1lOwp9 OwojIDY1ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwpzdHJ1Y3QgYmludGltZSB7CiAgICAg ICAgdGltZV90IHNlYzsKICAgICAgICB1aW50NjRfdCBmcmFjOwp9OwoKc3RhdGljIF9faW5saW5l IHZvaWQKYmludGltZV9hZGR4KHN0cnVjdCBiaW50aW1lICpidCwgdWludDY0X3QgeCkKewogICAg ICAgIHVpbnQ2NF90IHU7CgogICAgICAgIHUgPSBidC0+ZnJhYzsKICAgICAgICBidC0+ZnJhYyAr PSB4OwogICAgICAgIGlmICh1ID4gYnQtPmZyYWMpCiAgICAgICAgICAgICAgICBidC0+c2VjKys7 Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkCmJpbnRpbWVfYWRkKHN0cnVjdCBiaW50aW1lICpidCwg c3RydWN0IGJpbnRpbWUgKmJ0MikKewogICAgICAgIHVpbnQ2NF90IHU7CgogICAgICAgIHUgPSBi dC0+ZnJhYzsKICAgICAgICBidC0+ZnJhYyArPSBidDItPmZyYWM7CiAgICAgICAgaWYgKHUgPiBi dC0+ZnJhYykKICAgICAgICAgICAgICAgIGJ0LT5zZWMrKzsKICAgICAgICBidC0+c2VjICs9IGJ0 Mi0+c2VjOwp9CgpzdGF0aWMgX19pbmxpbmUgdm9pZApiaW50aW1lX3N1YihzdHJ1Y3QgYmludGlt ZSAqYnQsIHN0cnVjdCBiaW50aW1lICpidDIpCnsKICAgICAgICB1aW50NjRfdCB1OwoKICAgICAg ICB1ID0gYnQtPmZyYWM7CiAgICAgICAgYnQtPmZyYWMgLT0gYnQyLT5mcmFjOwogICAgICAgIGlm ICh1IDwgYnQtPmZyYWMpCiAgICAgICAgICAgICAgICBidC0+c2VjLS07CiAgICAgICAgYnQtPnNl YyAtPSBidDItPnNlYzsKfQojIDExOSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKc3RhdGlj IF9faW5saW5lIHZvaWQKYmludGltZTJ0aW1lc3BlYyhzdHJ1Y3QgYmludGltZSAqYnQsIHN0cnVj dCB0aW1lc3BlYyAqdHMpCnsKCiAgICAgICAgdHMtPnR2X3NlYyA9IGJ0LT5zZWM7CiAgICAgICAg dHMtPnR2X25zZWMgPSAoKHVpbnQ2NF90KTEwMDAwMDAwMDAgKiAodWludDMyX3QpKGJ0LT5mcmFj ID4+IDMyKSkgPj4gMzI7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkCnRpbWVzcGVjMmJpbnRpbWUo c3RydWN0IHRpbWVzcGVjICp0cywgc3RydWN0IGJpbnRpbWUgKmJ0KQp7CgogICAgICAgIGJ0LT5z ZWMgPSB0cy0+dHZfc2VjOwoKICAgICAgICBidC0+ZnJhYyA9IHRzLT50dl9uc2VjICogKHVpbnQ2 NF90KTE4NDQ2NzQ0MDczTEw7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkCmJpbnRpbWUydGltZXZh bChzdHJ1Y3QgYmludGltZSAqYnQsIHN0cnVjdCB0aW1ldmFsICp0dikKewoKICAgICAgICB0di0+ dHZfc2VjID0gYnQtPnNlYzsKICAgICAgICB0di0+dHZfdXNlYyA9ICgodWludDY0X3QpMTAwMDAw MCAqICh1aW50MzJfdCkoYnQtPmZyYWMgPj4gMzIpKSA+PiAzMjsKfQoKc3RhdGljIF9faW5saW5l IHZvaWQKdGltZXZhbDJiaW50aW1lKHN0cnVjdCB0aW1ldmFsICp0diwgc3RydWN0IGJpbnRpbWUg KmJ0KQp7CgogICAgICAgIGJ0LT5zZWMgPSB0di0+dHZfc2VjOwoKICAgICAgICBidC0+ZnJhYyA9 IHR2LT50dl91c2VjICogKHVpbnQ2NF90KTE4NDQ2NzQ0MDczNzA5TEw7Cn0KIyAyMzEgIi91c3Iv aW5jbHVkZS9zeXMvdGltZS5oIiAzCnN0cnVjdCBpdGltZXJ2YWwgewogICAgICAgIHN0cnVjdCB0 aW1ldmFsIGl0X2ludGVydmFsOwogICAgICAgIHN0cnVjdCB0aW1ldmFsIGl0X3ZhbHVlOwp9OwoK CgoKc3RydWN0IGNsb2NraW5mbyB7CiAgICAgICAgaW50IGh6OwogICAgICAgIGludCB0aWNrOwog ICAgICAgIGludCBzcGFyZTsKICAgICAgICBpbnQgc3RhdGh6OwogICAgICAgIGludCBwcm9maHo7 Cn07CiMgMzA4ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS90 aW1lLmgiIDEgMwojIDk4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnN0cnVjdCB0bSB7CiAgICAg ICAgaW50IHRtX3NlYzsKICAgICAgICBpbnQgdG1fbWluOwogICAgICAgIGludCB0bV9ob3VyOwog ICAgICAgIGludCB0bV9tZGF5OwogICAgICAgIGludCB0bV9tb247CiAgICAgICAgaW50IHRtX3ll YXI7CiAgICAgICAgaW50IHRtX3dkYXk7CiAgICAgICAgaW50IHRtX3lkYXk7CiAgICAgICAgaW50 IHRtX2lzZHN0OwogICAgICAgIGxvbmcgdG1fZ210b2ZmOwogICAgICAgIGNoYXIgKnRtX3pvbmU7 Cn07CgoKZXh0ZXJuIGNoYXIgKnR6bmFtZVtdOwoKCgpjaGFyICphc2N0aW1lKGNvbnN0IHN0cnVj dCB0bSAqKTsKY2xvY2tfdCBjbG9jayh2b2lkKTsKY2hhciAqY3RpbWUoY29uc3QgdGltZV90ICop Owpkb3VibGUgZGlmZnRpbWUodGltZV90LCB0aW1lX3QpOwpzdHJ1Y3QgdG0gKmdtdGltZShjb25z dCB0aW1lX3QgKik7CnN0cnVjdCB0bSAqbG9jYWx0aW1lKGNvbnN0IHRpbWVfdCAqKTsKdGltZV90 IG1rdGltZShzdHJ1Y3QgdG0gKik7CnNpemVfdCBzdHJmdGltZShjaGFyICosIHNpemVfdCwgY29u c3QgY2hhciAqLCBjb25zdCBzdHJ1Y3QgdG0gKik7CnRpbWVfdCB0aW1lKHRpbWVfdCAqKTsKCgp2 b2lkIHR6c2V0KHZvaWQpOwoKCmNoYXIgKmFzY3RpbWVfcihjb25zdCBzdHJ1Y3QgdG0gKiwgY2hh ciAqKTsKY2hhciAqY3RpbWVfcihjb25zdCB0aW1lX3QgKiwgY2hhciAqKTsKc3RydWN0IHRtICpn bXRpbWVfcihjb25zdCB0aW1lX3QgKiwgc3RydWN0IHRtICopOwpzdHJ1Y3QgdG0gKmxvY2FsdGlt ZV9yKGNvbnN0IHRpbWVfdCAqLCBzdHJ1Y3QgdG0gKik7CgoKCmNoYXIgKnN0cnB0aW1lKGNvbnN0 IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgdG0gKik7CgoKCmNoYXIgKnRpbWV6b25lKGlu dCwgaW50KTsKdm9pZCB0enNldHdhbGwodm9pZCk7CnRpbWVfdCB0aW1lbG9jYWwoc3RydWN0IHRt ICogY29uc3QpOwp0aW1lX3QgdGltZWdtKHN0cnVjdCB0bSAqIGNvbnN0KTsKCgoKCmludCBjbG9j a19nZXRyZXMoY2xvY2tpZF90LCBzdHJ1Y3QgdGltZXNwZWMgKik7CmludCBjbG9ja19nZXR0aW1l KGNsb2NraWRfdCwgc3RydWN0IHRpbWVzcGVjICopOwppbnQgY2xvY2tfc2V0dGltZShjbG9ja2lk X3QsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqKTsKaW50IG5hbm9zbGVlcChjb25zdCBzdHJ1Y3Qg dGltZXNwZWMgKiwgc3RydWN0IHRpbWVzcGVjICopOwoKCiMgMzA5ICIvdXNyL2luY2x1ZGUvc3lz L3RpbWUuaCIgMiAzCgoKCgppbnQgYWRqdGltZShjb25zdCBzdHJ1Y3QgdGltZXZhbCAqLCBzdHJ1 Y3QgdGltZXZhbCAqKTsKaW50IGZ1dGltZXMoaW50LCBjb25zdCBzdHJ1Y3QgdGltZXZhbCAqKTsK aW50IGdldGl0aW1lcihpbnQsIHN0cnVjdCBpdGltZXJ2YWwgKik7CmludCBnZXR0aW1lb2ZkYXko c3RydWN0IHRpbWV2YWwgKiwgc3RydWN0IHRpbWV6b25lICopOwppbnQgbHV0aW1lcyhjb25zdCBj aGFyICosIGNvbnN0IHN0cnVjdCB0aW1ldmFsICopOwppbnQgc2V0aXRpbWVyKGludCwgY29uc3Qg c3RydWN0IGl0aW1lcnZhbCAqLCBzdHJ1Y3QgaXRpbWVydmFsICopOwppbnQgc2V0dGltZW9mZGF5 KGNvbnN0IHN0cnVjdCB0aW1ldmFsICosIGNvbnN0IHN0cnVjdCB0aW1lem9uZSAqKTsKaW50IHV0 aW1lcyhjb25zdCBjaGFyICosIGNvbnN0IHN0cnVjdCB0aW1ldmFsICopOwoKIyA0NCAiL3Vzci9p bmNsdWRlL3B0aHJlYWQuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMSAz CiMgNDcgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lz L19zaWdzZXQuaCIgMSAzCiMgNTUgIi91c3IvaW5jbHVkZS9zeXMvX3NpZ3NldC5oIiAzCnR5cGVk ZWYgc3RydWN0IF9fc2lnc2V0IHsKICAgICAgICBfX3VpbnQzMl90IF9fYml0c1s0XTsKfSBzaWdz ZXRfdDsKIyA0OCAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMiAzCiMgMTEzICIvdXNyL2lu Y2x1ZGUvc3lzL3NpZ25hbC5oIiAzCnR5cGVkZWYgdm9pZCBfX3NpZ2hhbmRsZXJfdChpbnQpOwoK CgoKCgp1bmlvbiBzaWd2YWwgewoKICAgICAgICBpbnQgc2lndmFsX2ludDsKICAgICAgICB2b2lk ICpzaWd2YWxfcHRyOwp9OwoKc3RydWN0IHNpZ2V2ZW50IHsKICAgICAgICBpbnQgc2lnZXZfbm90 aWZ5OwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIGludCBfX3NpZ2V2X3NpZ25vOwog ICAgICAgICAgICAgICAgaW50IF9fc2lnZXZfbm90aWZ5X2txdWV1ZTsKICAgICAgICB9IF9fc2ln ZXZfdTsKICAgICAgICB1bmlvbiBzaWd2YWwgc2lnZXZfdmFsdWU7Cn07CgoKCgoKCgp0eXBlZGVm IHN0cnVjdCBfX3NpZ2luZm8gewogICAgICAgIGludCBzaV9zaWdubzsKICAgICAgICBpbnQgc2lf ZXJybm87CgoKCgoKCiAgICAgICAgaW50IHNpX2NvZGU7CiAgICAgICAgaW50IHNpX3BpZDsKICAg ICAgICB1bnNpZ25lZCBpbnQgc2lfdWlkOwogICAgICAgIGludCBzaV9zdGF0dXM7CiAgICAgICAg dm9pZCAqc2lfYWRkcjsKICAgICAgICB1bmlvbiBzaWd2YWwgc2lfdmFsdWU7CiAgICAgICAgbG9u ZyBzaV9iYW5kOwogICAgICAgIGludCBfX3NwYXJlX19bN107Cn0gc2lnaW5mb190OwoKCgoKCgoj IDEgIi91c3IvaW5jbHVkZS9tYWNoaW5lL3NpZ25hbC5oIiAxIDMKIyA0NCAiL3Vzci9pbmNsdWRl L21hY2hpbmUvc2lnbmFsLmgiIDMKdHlwZWRlZiBpbnQgc2lnX2F0b21pY190OwojIDU0ICIvdXNy L2luY2x1ZGUvbWFjaGluZS9zaWduYWwuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9tYWNoaW5lL3Ry YXAuaCIgMSAzCiMgNTUgIi91c3IvaW5jbHVkZS9tYWNoaW5lL3NpZ25hbC5oIiAyIDMKIyA5OCAi L3Vzci9pbmNsdWRlL21hY2hpbmUvc2lnbmFsLmgiIDMKc3RydWN0IHNpZ2NvbnRleHQgewogICAg ICAgIHNpZ3NldF90IHNjX21hc2s7CiAgICAgICAgaW50IHNjX29uc3RhY2s7CiAgICAgICAgaW50 IHNjX2dzOwogICAgICAgIGludCBzY19mczsKICAgICAgICBpbnQgc2NfZXM7CiAgICAgICAgaW50 IHNjX2RzOwogICAgICAgIGludCBzY19lZGk7CiAgICAgICAgaW50IHNjX2VzaTsKICAgICAgICBp bnQgc2NfZWJwOwogICAgICAgIGludCBzY19pc3A7CiAgICAgICAgaW50IHNjX2VieDsKICAgICAg ICBpbnQgc2NfZWR4OwogICAgICAgIGludCBzY19lY3g7CiAgICAgICAgaW50IHNjX2VheDsKICAg ICAgICBpbnQgc2NfdHJhcG5vOwogICAgICAgIGludCBzY19lcnI7CiAgICAgICAgaW50IHNjX2Vp cDsKICAgICAgICBpbnQgc2NfY3M7CiAgICAgICAgaW50IHNjX2VmbDsKICAgICAgICBpbnQgc2Nf ZXNwOwogICAgICAgIGludCBzY19zczsKCgoKCgogICAgICAgIGludCBzY19mcHJlZ3NbMjhdOwog ICAgICAgIGludCBzY19zcGFyZVsxN107Cn07CiMgMTY2ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25h bC5oIiAyIDMKCgoKc3RydWN0IF9fc2lnaW5mbzsKCgoKCnN0cnVjdCBzaWdhY3Rpb24gewogICAg ICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHZvaWQgKCpfX3NhX2hhbmRsZXIpKGludCk7CiAg ICAgICAgICAgICAgICB2b2lkICgqX19zYV9zaWdhY3Rpb24pKGludCwgc3RydWN0IF9fc2lnaW5m byAqLCB2b2lkICopOwogICAgICAgIH0gX19zaWdhY3Rpb25fdTsKICAgICAgICBpbnQgc2FfZmxh Z3M7CiAgICAgICAgc2lnc2V0X3Qgc2FfbWFzazsKfTsKIyAyMTQgIi91c3IvaW5jbHVkZS9zeXMv c2lnbmFsLmgiIDMKdHlwZWRlZiB2b2lkIF9fc2lnaW5mb2hhbmRsZXJfdChpbnQsIHN0cnVjdCBf X3NpZ2luZm8gKiwgdm9pZCAqKTsKCnR5cGVkZWYgX19zaWdoYW5kbGVyX3QgKnNpZ190OwojIDIy NiAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMwp0eXBlZGVmIHN0cnVjdCBzaWdhbHRzdGFj ayB7CiAgICAgICAgY2hhciAqc3Nfc3A7CiAgICAgICAgc2l6ZV90IHNzX3NpemU7CiAgICAgICAg aW50IHNzX2ZsYWdzOwp9IHN0YWNrX3Q7CiMgMjQwICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5o IiAzCnN0cnVjdCBfX3Vjb250ZXh0OwoKCgoKCnN0cnVjdCBzaWd2ZWMgewogICAgICAgIF9fc2ln aGFuZGxlcl90ICpzdl9oYW5kbGVyOwogICAgICAgIGludCBzdl9tYXNrOwogICAgICAgIGludCBz dl9mbGFnczsKfTsKIyAyNjMgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMKc3RydWN0IHNp Z3N0YWNrIHsKICAgICAgICBjaGFyICpzc19zcDsKICAgICAgICBpbnQgc3Nfb25zdGFjazsKfTsK IyAyOTEgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMKCl9fc2lnaGFuZGxlcl90ICpzaWdu YWwoaW50LCBfX3NpZ2hhbmRsZXJfdCAqKTsKCiMgNDUgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgi IDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvc2NoZWQuaCIgMSAzCiMgNTMgIi91c3IvaW5jbHVkZS9z Y2hlZC5oIiAzCnN0cnVjdCBzY2hlZF9wYXJhbQp7CiAgICAgICAgaW50IHNjaGVkX3ByaW9yaXR5 Owp9OwoKCgoKCmludCBzY2hlZF9zZXRwYXJhbShwaWRfdCwgY29uc3Qgc3RydWN0IHNjaGVkX3Bh cmFtICopOwppbnQgc2NoZWRfZ2V0cGFyYW0ocGlkX3QsIHN0cnVjdCBzY2hlZF9wYXJhbSAqKTsK CmludCBzY2hlZF9zZXRzY2hlZHVsZXIocGlkX3QsIGludCwgY29uc3Qgc3RydWN0IHNjaGVkX3Bh cmFtICopOwppbnQgc2NoZWRfZ2V0c2NoZWR1bGVyKHBpZF90KTsKCmludCBzY2hlZF95aWVsZCh2 b2lkKTsKaW50IHNjaGVkX2dldF9wcmlvcml0eV9tYXgoaW50KTsKaW50IHNjaGVkX2dldF9wcmlv cml0eV9taW4oaW50KTsKaW50IHNjaGVkX3JyX2dldF9pbnRlcnZhbChwaWRfdCwgc3RydWN0IHRp bWVzcGVjICopOwoKIyA0NyAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMiAzCiMgODkgIi91c3Iv aW5jbHVkZS9wdGhyZWFkLmgiIDMKc3RydWN0IHB0aHJlYWQ7CnN0cnVjdCBwdGhyZWFkX2F0dHI7 CnN0cnVjdCBwdGhyZWFkX2NvbmQ7CnN0cnVjdCBwdGhyZWFkX2NvbmRfYXR0cjsKc3RydWN0IHB0 aHJlYWRfbXV0ZXg7CnN0cnVjdCBwdGhyZWFkX211dGV4X2F0dHI7CnN0cnVjdCBwdGhyZWFkX29u Y2U7CnN0cnVjdCBwdGhyZWFkX3J3bG9jazsKc3RydWN0IHB0aHJlYWRfcndsb2NrYXR0cjsKIyAx MDYgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgcHRocmVhZCAqcHRo cmVhZF90Owp0eXBlZGVmIHN0cnVjdCBwdGhyZWFkX2F0dHIgKnB0aHJlYWRfYXR0cl90Owp0eXBl ZGVmIHN0cnVjdCBwdGhyZWFkX211dGV4ICpwdGhyZWFkX211dGV4X3Q7CnR5cGVkZWYgc3RydWN0 IHB0aHJlYWRfbXV0ZXhfYXR0ciAqcHRocmVhZF9tdXRleGF0dHJfdDsKdHlwZWRlZiBzdHJ1Y3Qg cHRocmVhZF9jb25kICpwdGhyZWFkX2NvbmRfdDsKdHlwZWRlZiBzdHJ1Y3QgcHRocmVhZF9jb25k X2F0dHIgKnB0aHJlYWRfY29uZGF0dHJfdDsKdHlwZWRlZiBpbnQgcHRocmVhZF9rZXlfdDsKdHlw ZWRlZiBzdHJ1Y3QgcHRocmVhZF9vbmNlIHB0aHJlYWRfb25jZV90Owp0eXBlZGVmIHN0cnVjdCBw dGhyZWFkX3J3bG9jayAqcHRocmVhZF9yd2xvY2tfdDsKdHlwZWRlZiBzdHJ1Y3QgcHRocmVhZF9y d2xvY2thdHRyICpwdGhyZWFkX3J3bG9ja2F0dHJfdDsKCgoKCgoKCnR5cGVkZWYgdm9pZCAqcHRo cmVhZF9hZGRyX3Q7CnR5cGVkZWYgdm9pZCAqKCpwdGhyZWFkX3N0YXJ0cm91dGluZV90KSh2b2lk ICopOwoKCgoKc3RydWN0IHB0aHJlYWRfb25jZSB7CiAgICAgICAgaW50IHN0YXRlOwogICAgICAg IHB0aHJlYWRfbXV0ZXhfdCBtdXRleDsKfTsKIyAxNzcgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgi IDMKZW51bSBwdGhyZWFkX211dGV4dHlwZSB7CiAgICAgICAgUFRIUkVBRF9NVVRFWF9FUlJPUkNI RUNLID0gMSwKICAgICAgICBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRSA9IDIsCiAgICAgICAgUFRI UkVBRF9NVVRFWF9OT1JNQUwgPSAzLAogICAgICAgIE1VVEVYX1RZUEVfTUFYCn07CiMgMTkxICIv dXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzCgppbnQgcHRocmVhZF9hdHRyX2Rlc3Ryb3kocHRocmVh ZF9hdHRyX3QgKik7CmludCBwdGhyZWFkX2F0dHJfZ2V0c3RhY2tzaXplKGNvbnN0IHB0aHJlYWRf YXR0cl90ICosIHNpemVfdCAqKTsKaW50IHB0aHJlYWRfYXR0cl9nZXRndWFyZHNpemUoY29uc3Qg cHRocmVhZF9hdHRyX3QgKiwgc2l6ZV90ICopOwppbnQgcHRocmVhZF9hdHRyX2dldHN0YWNrYWRk cihjb25zdCBwdGhyZWFkX2F0dHJfdCAqLCB2b2lkICoqKTsKaW50IHB0aHJlYWRfYXR0cl9nZXRk ZXRhY2hzdGF0ZShjb25zdCBwdGhyZWFkX2F0dHJfdCAqLCBpbnQgKik7CmludCBwdGhyZWFkX2F0 dHJfaW5pdChwdGhyZWFkX2F0dHJfdCAqKTsKaW50IHB0aHJlYWRfYXR0cl9zZXRzdGFja3NpemUo cHRocmVhZF9hdHRyX3QgKiwgc2l6ZV90KTsKaW50IHB0aHJlYWRfYXR0cl9zZXRndWFyZHNpemUo cHRocmVhZF9hdHRyX3QgKiwgc2l6ZV90KTsKaW50IHB0aHJlYWRfYXR0cl9zZXRzdGFja2FkZHIo cHRocmVhZF9hdHRyX3QgKiwgdm9pZCAqKTsKaW50IHB0aHJlYWRfYXR0cl9zZXRkZXRhY2hzdGF0 ZShwdGhyZWFkX2F0dHJfdCAqLCBpbnQpOwp2b2lkIHB0aHJlYWRfY2xlYW51cF9wb3AoaW50KTsK dm9pZCBwdGhyZWFkX2NsZWFudXBfcHVzaCh2b2lkICgqKSAodm9pZCAqKSwgdm9pZCAqcm91dGlu ZV9hcmcpOwppbnQgcHRocmVhZF9jb25kYXR0cl9kZXN0cm95KHB0aHJlYWRfY29uZGF0dHJfdCAq KTsKaW50IHB0aHJlYWRfY29uZGF0dHJfaW5pdChwdGhyZWFkX2NvbmRhdHRyX3QgKik7CgoKCgoK CmludCBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0KHB0aHJlYWRfY29uZF90ICopOwppbnQgcHRocmVh ZF9jb25kX2Rlc3Ryb3kocHRocmVhZF9jb25kX3QgKik7CmludCBwdGhyZWFkX2NvbmRfaW5pdChw dGhyZWFkX2NvbmRfdCAqLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwdGhyZWFkX2Nv bmRhdHRyX3QgKik7CmludCBwdGhyZWFkX2NvbmRfc2lnbmFsKHB0aHJlYWRfY29uZF90ICopOwpp bnQgcHRocmVhZF9jb25kX3RpbWVkd2FpdChwdGhyZWFkX2NvbmRfdCAqLAogICAgICAgICAgICAg ICAgICAgICAgICBwdGhyZWFkX211dGV4X3QgKiwgY29uc3Qgc3RydWN0IHRpbWVzcGVjICopOwpp bnQgcHRocmVhZF9jb25kX3dhaXQocHRocmVhZF9jb25kX3QgKiwgcHRocmVhZF9tdXRleF90ICop OwppbnQgcHRocmVhZF9jcmVhdGUocHRocmVhZF90ICosIGNvbnN0IHB0aHJlYWRfYXR0cl90ICos CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKigqKSAodm9pZCAqKSwgdm9pZCAqKTsKaW50 IHB0aHJlYWRfZGV0YWNoKHB0aHJlYWRfdCk7CmludCBwdGhyZWFkX2VxdWFsKHB0aHJlYWRfdCwg cHRocmVhZF90KTsKdm9pZCBwdGhyZWFkX2V4aXQodm9pZCAqKSBfX2F0dHJpYnV0ZV9fKChfX25v cmV0dXJuX18pKTsKdm9pZCAqcHRocmVhZF9nZXRzcGVjaWZpYyhwdGhyZWFkX2tleV90KTsKaW50 IHB0aHJlYWRfam9pbihwdGhyZWFkX3QsIHZvaWQgKiopOwppbnQgcHRocmVhZF9rZXlfY3JlYXRl KHB0aHJlYWRfa2V5X3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKikgKHZvaWQg KikpOwppbnQgcHRocmVhZF9rZXlfZGVsZXRlKHB0aHJlYWRfa2V5X3QpOwppbnQgcHRocmVhZF9r aWxsKHB0aHJlYWRfdCwgaW50KTsKaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2luaXQocHRocmVhZF9t dXRleGF0dHJfdCAqKTsKaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2Rlc3Ryb3kocHRocmVhZF9tdXRl eGF0dHJfdCAqKTsKaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2dldHR5cGUocHRocmVhZF9tdXRleGF0 dHJfdCAqLCBpbnQgKik7CmludCBwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKHB0aHJlYWRfbXV0 ZXhhdHRyX3QgKiwgaW50KTsKaW50IHB0aHJlYWRfbXV0ZXhfZGVzdHJveShwdGhyZWFkX211dGV4 X3QgKik7CmludCBwdGhyZWFkX211dGV4X2luaXQocHRocmVhZF9tdXRleF90ICosCiAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKik7CmludCBwdGhyZWFk X211dGV4X2xvY2socHRocmVhZF9tdXRleF90ICopOwppbnQgcHRocmVhZF9tdXRleF90cnlsb2Nr KHB0aHJlYWRfbXV0ZXhfdCAqKTsKaW50IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKHB0aHJlYWRfbXV0 ZXhfdCAqKTsKaW50IHB0aHJlYWRfb25jZShwdGhyZWFkX29uY2VfdCAqLCB2b2lkICgqKSAodm9p ZCkpOwppbnQgcHRocmVhZF9yd2xvY2tfZGVzdHJveShwdGhyZWFkX3J3bG9ja190ICopOwppbnQg cHRocmVhZF9yd2xvY2tfaW5pdChwdGhyZWFkX3J3bG9ja190ICosCiAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHB0aHJlYWRfcndsb2NrYXR0cl90ICopOwppbnQgcHRocmVhZF9yd2xvY2tf cmRsb2NrKHB0aHJlYWRfcndsb2NrX3QgKik7CmludCBwdGhyZWFkX3J3bG9ja190cnlyZGxvY2so cHRocmVhZF9yd2xvY2tfdCAqKTsKaW50IHB0aHJlYWRfcndsb2NrX3RyeXdybG9jayhwdGhyZWFk X3J3bG9ja190ICopOwppbnQgcHRocmVhZF9yd2xvY2tfdW5sb2NrKHB0aHJlYWRfcndsb2NrX3Qg Kik7CmludCBwdGhyZWFkX3J3bG9ja193cmxvY2socHRocmVhZF9yd2xvY2tfdCAqKTsKaW50IHB0 aHJlYWRfcndsb2NrYXR0cl9pbml0KHB0aHJlYWRfcndsb2NrYXR0cl90ICopOwppbnQgcHRocmVh ZF9yd2xvY2thdHRyX2dldHBzaGFyZWQoY29uc3QgcHRocmVhZF9yd2xvY2thdHRyX3QgKiwKICAg ICAgICAgICAgICAgICAgICAgICAgaW50ICopOwppbnQgcHRocmVhZF9yd2xvY2thdHRyX3NldHBz aGFyZWQocHRocmVhZF9yd2xvY2thdHRyX3QgKiwgaW50KTsKaW50IHB0aHJlYWRfcndsb2NrYXR0 cl9kZXN0cm95KHB0aHJlYWRfcndsb2NrYXR0cl90ICopOwpwdGhyZWFkX3QgcHRocmVhZF9zZWxm KHZvaWQpOwppbnQgcHRocmVhZF9zZXRzcGVjaWZpYyhwdGhyZWFkX2tleV90LCBjb25zdCB2b2lk ICopOwppbnQgcHRocmVhZF9zaWdtYXNrKGludCwgY29uc3Qgc2lnc2V0X3QgKiwgc2lnc2V0X3Qg Kik7CgppbnQgcHRocmVhZF9jYW5jZWwocHRocmVhZF90KTsKaW50IHB0aHJlYWRfc2V0Y2FuY2Vs c3RhdGUoaW50LCBpbnQgKik7CmludCBwdGhyZWFkX3NldGNhbmNlbHR5cGUoaW50LCBpbnQgKik7 CnZvaWQgcHRocmVhZF90ZXN0Y2FuY2VsKHZvaWQpOwoKaW50IHB0aHJlYWRfZ2V0cHJpbyhwdGhy ZWFkX3QpOwppbnQgcHRocmVhZF9zZXRwcmlvKHB0aHJlYWRfdCwgaW50KTsKdm9pZCBwdGhyZWFk X3lpZWxkKHZvaWQpOwojIDI3NSAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMwppbnQgcHRocmVh ZF9tdXRleGF0dHJfZ2V0cHJpb2NlaWxpbmcocHRocmVhZF9tdXRleGF0dHJfdCAqLAogICAgICAg ICAgICAgICAgICAgICAgICBpbnQgKik7CmludCBwdGhyZWFkX211dGV4YXR0cl9zZXRwcmlvY2Vp bGluZyhwdGhyZWFkX211dGV4YXR0cl90ICosCiAgICAgICAgICAgICAgICAgICAgICAgIGludCk7 CmludCBwdGhyZWFkX211dGV4X2dldHByaW9jZWlsaW5nKHB0aHJlYWRfbXV0ZXhfdCAqLCBpbnQg Kik7CmludCBwdGhyZWFkX211dGV4X3NldHByaW9jZWlsaW5nKHB0aHJlYWRfbXV0ZXhfdCAqLCBp bnQsIGludCAqKTsKCmludCBwdGhyZWFkX211dGV4YXR0cl9nZXRwcm90b2NvbChwdGhyZWFkX211 dGV4YXR0cl90ICosIGludCAqKTsKaW50IHB0aHJlYWRfbXV0ZXhhdHRyX3NldHByb3RvY29sKHB0 aHJlYWRfbXV0ZXhhdHRyX3QgKiwgaW50KTsKCmludCBwdGhyZWFkX2F0dHJfZ2V0aW5oZXJpdHNj aGVkKGNvbnN0IHB0aHJlYWRfYXR0cl90ICosIGludCAqKTsKaW50IHB0aHJlYWRfYXR0cl9nZXRz Y2hlZHBhcmFtKGNvbnN0IHB0aHJlYWRfYXR0cl90ICosCiAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBzY2hlZF9wYXJhbSAqKTsKaW50IHB0aHJlYWRfYXR0cl9nZXRzY2hlZHBvbGljeShj b25zdCBwdGhyZWFkX2F0dHJfdCAqLCBpbnQgKik7CmludCBwdGhyZWFkX2F0dHJfZ2V0c2NvcGUo Y29uc3QgcHRocmVhZF9hdHRyX3QgKiwgaW50ICopOwppbnQgcHRocmVhZF9hdHRyX3NldGluaGVy aXRzY2hlZChwdGhyZWFkX2F0dHJfdCAqLCBpbnQpOwppbnQgcHRocmVhZF9hdHRyX3NldHNjaGVk cGFyYW0ocHRocmVhZF9hdHRyX3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IHNjaGVkX3BhcmFtICopOwppbnQgcHRocmVhZF9hdHRyX3NldHNjaGVkcG9saWN5KHB0aHJl YWRfYXR0cl90ICosIGludCk7CmludCBwdGhyZWFkX2F0dHJfc2V0c2NvcGUocHRocmVhZF9hdHRy X3QgKiwgaW50KTsKaW50IHB0aHJlYWRfZ2V0c2NoZWRwYXJhbShwdGhyZWFkX3QgcHRocmVhZCwg aW50ICosCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY2hlZF9wYXJhbSAqKTsKaW50 IHB0aHJlYWRfc2V0c2NoZWRwYXJhbShwdGhyZWFkX3QsIGludCwKICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICopOwoKIyAyMDAgIi4uLy4uLy4uLy4uL2V4 cG9ydHMvaW5jbHVkZS9YMTEvWHRocmVhZHMuaCIgMgp0eXBlZGVmIHB0aHJlYWRfdCB4dGhyZWFk X3Q7CnR5cGVkZWYgcHRocmVhZF9rZXlfdCB4dGhyZWFkX2tleV90Owp0eXBlZGVmIHB0aHJlYWRf Y29uZF90IHhjb25kaXRpb25fcmVjOwp0eXBlZGVmIHB0aHJlYWRfbXV0ZXhfdCB4bXV0ZXhfcmVj OwojIDI1NSAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL1gxMS9YdGhyZWFkcy5oIgp0eXBl ZGVmIHhjb25kaXRpb25fcmVjICp4Y29uZGl0aW9uX3Q7CnR5cGVkZWYgeG11dGV4X3JlYyAqeG11 dGV4X3Q7CiMgMTc3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvZ2x0aHJlYWQuaCIgMgoK dHlwZWRlZiBzdHJ1Y3QgewogICB4dGhyZWFkX2tleV90IGtleTsKICAgaW50IGluaXRNYWdpYzsK fSBfZ2x0aHJlYWRfVFNEOwoKdHlwZWRlZiB4dGhyZWFkX3QgX2dsdGhyZWFkX1RocmVhZDsKCnR5 cGVkZWYgeG11dGV4X3JlYyBfZ2x0aHJlYWRfTXV0ZXg7CiMgMjM3ICIuLi8uLi8uLi8uLi9leHRy YXMvTWVzYS9zcmMvZ2x0aHJlYWQuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcKX2dsdGhyZWFkX0dl dElEKHZvaWQpOwoKCmV4dGVybiB2b2lkCl9nbHRocmVhZF9Jbml0VFNEKF9nbHRocmVhZF9UU0Qg Kik7CgoKZXh0ZXJuIHZvaWQgKgpfZ2x0aHJlYWRfR2V0VFNEKF9nbHRocmVhZF9UU0QgKik7CgoK ZXh0ZXJuIHZvaWQKX2dsdGhyZWFkX1NldFRTRChfZ2x0aHJlYWRfVFNEICosIHZvaWQgKik7CiMg MzcgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90eXBlcy5oIiAyCgojIDEgIi4uLy4uLy4u Ly4uL2V4dHJhcy9NZXNhL3NyYy9tYXRyaXguaCIgMQojIDMxICIuLi8uLi8uLi8uLi9leHRyYXMv TWVzYS9zcmMvbWF0cml4LmgiCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5cGVz LmgiIDEKIyAzMiAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL21hdHJpeC5oIiAyCgoKCnR5 cGVkZWYgc3RydWN0IHsKICAgR0xmbG9hdCAqbTsKICAgR0xmbG9hdCAqaW52OwogICBHTHVpbnQg ZmxhZ3M7CiAgIEdMdWludCB0eXBlOwp9IEdMbWF0cml4OwoKCgoKCgoKZXh0ZXJuIHZvaWQgZ2xf bWF0cml4X3RyYW5zcG9zZWYoIEdMZmxvYXQgdG9bMTZdLCBjb25zdCBHTGZsb2F0IGZyb21bMTZd ICk7CgpleHRlcm4gdm9pZCBnbF9tYXRyaXhfdHJhbnNwb3NlZCggR0xkb3VibGUgdG9bMTZdLCBj b25zdCBHTGRvdWJsZSBmcm9tWzE2XSApOwoKCmV4dGVybiB2b2lkIGdsX3JvdGF0aW9uX21hdHJp eCggR0xmbG9hdCBhbmdsZSwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IG1bXSApOwoKCmV4dGVybiB2b2lkIGds X21hdF9tdWxfZmxvYXRzKCBHTG1hdHJpeCAqbWF0LCBjb25zdCBHTGZsb2F0ICptLCBHTHVpbnQg ZmxhZ3MgKTsKCmV4dGVybiB2b2lkIGdsX21hdF9tdWxfbWF0KCBHTG1hdHJpeCAqbWF0LCBjb25z dCBHTG1hdHJpeCAqbWF0MiApOwoKZXh0ZXJuIHZvaWQgZ2xfY2FsY3VsYXRlX21vZGVsX3Byb2pl Y3RfbWF0cml4KCBHTGNvbnRleHQgKmN0eCApOwoKZXh0ZXJuIHZvaWQgZ2xfbWF0cml4X2NvcHko IEdMbWF0cml4ICp0bywgY29uc3QgR0xtYXRyaXggKmZyb20gKTsKCmV4dGVybiB2b2lkIGdsX21h dHJpeF9jdHIoIEdMbWF0cml4ICptICk7CgpleHRlcm4gdm9pZCBnbF9tYXRyaXhfZHRyKCBHTG1h dHJpeCAqbSApOwoKZXh0ZXJuIHZvaWQgZ2xfbWF0cml4X2FsbG9jX2ludiggR0xtYXRyaXggKm0g KTsKCmV4dGVybiB2b2lkIGdsX21hdHJpeF9tdWwoIEdMbWF0cml4ICpkZXN0LAogICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBHTG1hdHJpeCAqYSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgR0xtYXRyaXggKmIgKTsKCmV4dGVybiB2b2lkIGdsX21hdHJpeF9hbmFseXpl KCBHTG1hdHJpeCAqbWF0ICk7CgpleHRlcm4gR0xib29sZWFuIGdsX21hdHJpeF9pbnZlcnQoIEdM bWF0cml4ICptYXQgKTsKCmV4dGVybiB2b2lkIGdsX3ByaW50X21hdHJpeCggY29uc3QgR0xtYXRy aXggKm0gKTsKCgoKZXh0ZXJuIHZvaWQKX21lc2FfRnJ1c3R1bSggR0xkb3VibGUgbGVmdCwgR0xk b3VibGUgcmlnaHQsCiAgICAgICAgICAgICAgIEdMZG91YmxlIGJvdHRvbSwgR0xkb3VibGUgdG9w LAogICAgICAgICAgICAgICBHTGRvdWJsZSBuZWFydmFsLCBHTGRvdWJsZSBmYXJ2YWwgKTsKCmV4 dGVybiB2b2lkCl9tZXNhX09ydGhvKCBHTGRvdWJsZSBsZWZ0LCBHTGRvdWJsZSByaWdodCwKICAg ICAgICAgICAgIEdMZG91YmxlIGJvdHRvbSwgR0xkb3VibGUgdG9wLAogICAgICAgICAgICAgR0xk b3VibGUgbmVhcnZhbCwgR0xkb3VibGUgZmFydmFsICk7CgpleHRlcm4gdm9pZApfbWVzYV9QdXNo TWF0cml4KCB2b2lkICk7CgpleHRlcm4gdm9pZApfbWVzYV9Qb3BNYXRyaXgoIHZvaWQgKTsKCmV4 dGVybiB2b2lkCl9tZXNhX0xvYWRJZGVudGl0eSggdm9pZCApOwoKZXh0ZXJuIHZvaWQKX21lc2Ff TG9hZE1hdHJpeGYoIGNvbnN0IEdMZmxvYXQgKm0gKTsKCmV4dGVybiB2b2lkCl9tZXNhX0xvYWRN YXRyaXhkKCBjb25zdCBHTGRvdWJsZSAqbSApOwoKZXh0ZXJuIHZvaWQKX21lc2FfTWF0cml4TW9k ZSggR0xlbnVtIG1vZGUgKTsKCmV4dGVybiB2b2lkCl9tZXNhX011bHRNYXRyaXhmKCBjb25zdCBH TGZsb2F0ICptICk7CgpleHRlcm4gdm9pZApfbWVzYV9NdWx0TWF0cml4ZCggY29uc3QgR0xkb3Vi bGUgKm0gKTsKCmV4dGVybiB2b2lkCl9tZXNhX1JvdGF0ZWYoIEdMZmxvYXQgYW5nbGUsIEdMZmxv YXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHogKTsKCmV4dGVybiB2b2lkCl9tZXNhX1JvdGF0ZWQo IEdMZG91YmxlIGFuZ2xlLCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6ICk7Cgpl eHRlcm4gdm9pZApfbWVzYV9TY2FsZWYoIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHog KTsKCmV4dGVybiB2b2lkCl9tZXNhX1NjYWxlZCggR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xk b3VibGUgeiApOwoKZXh0ZXJuIHZvaWQKX21lc2FfVHJhbnNsYXRlZiggR0xmbG9hdCB4LCBHTGZs b2F0IHksIEdMZmxvYXQgeiApOwoKZXh0ZXJuIHZvaWQKX21lc2FfVHJhbnNsYXRlZCggR0xkb3Vi bGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiApOwoKZXh0ZXJuIHZvaWQKX21lc2FfTG9hZFRy YW5zcG9zZU1hdHJpeGZBUkIoIGNvbnN0IEdMZmxvYXQgKm0gKTsKCmV4dGVybiB2b2lkCl9tZXNh X0xvYWRUcmFuc3Bvc2VNYXRyaXhkQVJCKCBjb25zdCBHTGRvdWJsZSAqbSApOwoKZXh0ZXJuIHZv aWQKX21lc2FfTXVsdFRyYW5zcG9zZU1hdHJpeGZBUkIoIGNvbnN0IEdMZmxvYXQgKm0gKTsKCmV4 dGVybiB2b2lkCl9tZXNhX011bHRUcmFuc3Bvc2VNYXRyaXhkQVJCKCBjb25zdCBHTGRvdWJsZSAq bSApOwoKZXh0ZXJuIHZvaWQKX21lc2FfVmlld3BvcnQoIEdMaW50IHgsIEdMaW50IHksIEdMc2l6 ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0ICk7CgpleHRlcm4gdm9pZApnbF9WaWV3cG9ydCggR0xj b250ZXh0ICpjdHgsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp Z2h0ICk7CgpleHRlcm4gdm9pZApfbWVzYV9EZXB0aFJhbmdlKCBHTGNsYW1wZCBuZWFydmFsLCBH TGNsYW1wZCBmYXJ2YWwgKTsKIyAzOSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5cGVz LmgiIDIKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdmIuaCIgMQojIDUxICIuLi8u Li8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdmIuaCIKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVz YS9zcmMvdmVjdG9yLmgiIDEKIyA0NiAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3ZlY3Rv ci5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgIEdMZmxvYXQgKCpkYXRhKVs0XTsKICAgR0xmbG9hdCAq c3RhcnQ7CiAgIEdMdWludCBjb3VudDsKICAgR0x1aW50IHN0cmlkZTsKICAgR0x1aW50IHNpemU7 CiAgIEdMdWludCBmbGFnczsKICAgdm9pZCAqc3RvcmFnZTsKfSBHTHZlY3RvcjRmOwoKCmV4dGVy biB2b2lkIGdsX3ZlY3RvcjRmX3ByaW50KCBHTHZlY3RvcjRmICp2LCBHTHVieXRlICosIEdMYm9v bGVhbiApOwpleHRlcm4gdm9pZCBnbF92ZWN0b3I0Zl9pbml0KCBHTHZlY3RvcjRmICp2LCBHTHVp bnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKCpzdG9yYWdl KVs0XSApOwpleHRlcm4gdm9pZCBnbF92ZWN0b3I0Zl9hbGxvYyggR0x2ZWN0b3I0ZiAqdiwgR0x1 aW50IHN6LCBHTHVpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp bnQgY291bnQsIEdMdWludCBhbGlnbm1lbnQgKTsKZXh0ZXJuIHZvaWQgZ2xfdmVjdG9yNGZfZnJl ZSggR0x2ZWN0b3I0ZiAqdiApOwpleHRlcm4gdm9pZCBnbF92ZWN0b3I0Zl9jbGVhbl9lbGVtKCBH THZlY3RvcjRmICp2ZWMsIEdMdWludCBuciwgR0x1aW50IGVsdCApOwojIDg5ICIuLi8uLi8uLi8u Li9leHRyYXMvTWVzYS9zcmMvdmVjdG9yLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgR0xmbG9hdCAo KmRhdGEpWzNdOwogICBHTGZsb2F0ICpzdGFydDsKICAgR0x1aW50IGNvdW50OwogICBHTHVpbnQg c3RyaWRlOwogICBHTHVpbnQgZmxhZ3M7CiAgIHZvaWQgKnN0b3JhZ2U7Cn0gR0x2ZWN0b3IzZjsK CmV4dGVybiB2b2lkIGdsX3ZlY3RvcjNmX3ByaW50KCBHTHZlY3RvcjNmICp2LCBHTHVieXRlICos IEdMYm9vbGVhbiApOwpleHRlcm4gdm9pZCBnbF92ZWN0b3IzZl9mcmVlKCBHTHZlY3RvcjNmICp2 ICk7CmV4dGVybiB2b2lkIGdsX3ZlY3RvcjNmX2luaXQoIEdMdmVjdG9yM2YgKnYsIEdMdWludCBm bGFncywgR0xmbG9hdCAoKilbM10gKTsKZXh0ZXJuIHZvaWQgZ2xfdmVjdG9yM2ZfYWxsb2MoIEdM dmVjdG9yM2YgKnYsIEdMdWludCBmbGFncywgR0x1aW50IGNvdW50LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR0x1aW50IGFsaWdubWVudCApOwoKCgoKdHlwZWRlZiBzdHJ1Y3Qgewog ICBHTHVieXRlICgqZGF0YSlbNF07CiAgIEdMdWJ5dGUgKnN0YXJ0OwogICBHTHVpbnQgY291bnQ7 CiAgIEdMdWludCBzdHJpZGU7CiAgIEdMdWludCBmbGFnczsKICAgdm9pZCAqc3RvcmFnZTsKfSBH THZlY3RvcjR1YjsKCmV4dGVybiB2b2lkIGdsX3ZlY3RvcjR1Yl9pbml0KCBHTHZlY3RvcjR1YiAq diwgR0x1aW50IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSAo KnN0b3JhZ2UpWzRdICk7CmV4dGVybiB2b2lkIGdsX3ZlY3RvcjR1Yl9mcmVlKCBHTHZlY3RvcjR1 YiAqICk7CmV4dGVybiB2b2lkIGdsX3ZlY3RvcjR1Yl9hbGxvYyggR0x2ZWN0b3I0dWIgKnYsIEdM dWludCBmbGFncywgR0x1aW50IGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdMdWludCBhbGlnbm1lbnQgKTsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICBHTHVieXRlICpk YXRhOwogICBHTHVieXRlICpzdGFydDsKICAgR0x1aW50IGNvdW50OwogICBHTHVpbnQgc3RyaWRl OwogICBHTHVpbnQgZmxhZ3M7CiAgIHZvaWQgKnN0b3JhZ2U7Cn0gR0x2ZWN0b3IxdWI7CgpleHRl cm4gdm9pZCBnbF92ZWN0b3IxdWJfaW5pdCggR0x2ZWN0b3IxdWIgKnYsIEdMdWludCBmbGFncywg R0x1Ynl0ZSAqc3RvcmFnZSk7CmV4dGVybiB2b2lkIGdsX3ZlY3RvcjF1Yl9mcmVlKCBHTHZlY3Rv cjF1YiAqICk7CmV4dGVybiB2b2lkIGdsX3ZlY3RvcjF1Yl9hbGxvYyggR0x2ZWN0b3IxdWIgKnYs IEdMdWludCBmbGFncywgR0x1aW50IGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdMdWludCBhbGlnbm1lbnQgKTsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICBHTHVpbnQg KmRhdGE7CiAgIEdMdWludCAqc3RhcnQ7CiAgIEdMdWludCBjb3VudDsKICAgR0x1aW50IHN0cmlk ZTsKICAgR0x1aW50IGZsYWdzOwogICB2b2lkICpzdG9yYWdlOwp9IEdMdmVjdG9yMXVpOwoKZXh0 ZXJuIHZvaWQgZ2xfdmVjdG9yMXVpX2luaXQoIEdMdmVjdG9yMXVpICp2LCBHTHVpbnQgZmxhZ3Ms IEdMdWludCAqc3RvcmFnZSApOwpleHRlcm4gdm9pZCBnbF92ZWN0b3IxdWlfZnJlZSggR0x2ZWN0 b3IxdWkgKiApOwpleHRlcm4gdm9pZCBnbF92ZWN0b3IxdWlfYWxsb2MoIEdMdmVjdG9yMXVpICp2 LCBHTHVpbnQgZmxhZ3MsIEdMdWludCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHTHVpbnQgYWxpZ25tZW50ICk7CiMgNTIgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3Ny Yy92Yi5oIiAyCgoKCgplbnVtIHsKICAgVkJfSU1NRURJQVRFLAogICBWQl9DVkFfUFJFQ0FMQwp9 OwoKCgoKCnN0cnVjdCB2ZXJ0ZXhfZGF0YQp7CiAgIEdMZmxvYXQgKCpPYmopWzRdOwogICBHTGZs b2F0ICgqTm9ybWFsKVszXTsKICAgR0x1Ynl0ZSAoKkNvbG9yKVs0XTsKICAgR0x1aW50ICpJbmRl eDsKICAgR0x1Ynl0ZSAqRWRnZUZsYWc7CiAgIEdMZmxvYXQgKCpUZXhDb29yZFsyXSlbNF07CiAg IEdMdWludCAqRWx0Owp9OwoKc3RydWN0IHZlcnRleF9hcnJheXMKewogICBHTHZlY3RvcjRmIE9i ajsKICAgR0x2ZWN0b3IzZiBOb3JtYWw7CiAgIEdMdmVjdG9yNHViIENvbG9yOwogICBHTHZlY3Rv cjF1aSBJbmRleDsKICAgR0x2ZWN0b3IxdWIgRWRnZUZsYWc7CiAgIEdMdmVjdG9yNGYgVGV4Q29v cmRbMl07CiAgIEdMdmVjdG9yMXVpIEVsdDsKfTsKCnN0cnVjdCB2ZXJ0ZXhfYXJyYXlfcG9pbnRl cnMKewogICBHTHZlY3RvcjRmICpPYmo7CiAgIEdMdmVjdG9yM2YgKk5vcm1hbDsKICAgR0x2ZWN0 b3I0dWIgKkNvbG9yOwogICBHTHZlY3RvcjF1aSAqSW5kZXg7CiAgIEdMdmVjdG9yMXViICpFZGdl RmxhZzsKICAgR0x2ZWN0b3I0ZiAqVGV4Q29vcmRbMl07CiAgIEdMdmVjdG9yMXVpICpFbHQ7Cn07 CgoKCgoKCnN0cnVjdCBnbF9tYXRlcmlhbAp7CiAgIEdMZmxvYXQgQW1iaWVudFs0XTsKICAgR0xm bG9hdCBEaWZmdXNlWzRdOwogICBHTGZsb2F0IFNwZWN1bGFyWzRdOwogICBHTGZsb2F0IEVtaXNz aW9uWzRdOwogICBHTGZsb2F0IFNoaW5pbmVzczsKICAgR0xmbG9hdCBBbWJpZW50SW5kZXg7CiAg IEdMZmxvYXQgRGlmZnVzZUluZGV4OwogICBHTGZsb2F0IFNwZWN1bGFySW5kZXg7Cn07CiMgMTI1 ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdmIuaCIKc3RydWN0IGltbWVkaWF0ZQp7CiAg IHN0cnVjdCBpbW1lZGlhdGUgKm5leHQ7CiAgIEdMdWludCBpZCwgcmVmX2NvdW50OwoKCgogICBH THVpbnQgU3RhcnQsIENvdW50OwogICBHTHVpbnQgTGFzdERhdGE7CiAgIEdMdWludCBBbmRGbGFn LCBPckZsYWcsIEJlZ2luU3RhdGU7CiAgIEdMdWludCBMYXN0UHJpbWl0aXZlOwoKICAgR0x1aW50 IEFycmF5QW5kRmxhZ3M7CiAgIEdMdWludCBBcnJheUluY3I7CiAgIEdMdWludCBBcnJheUVsdEZs dXNoOwogICBHTHVpbnQgRmx1c2hFbHQ7CgogICBHTHVpbnQgVEYxWzJdOwogICBHTHVpbnQgVEYy WzJdOwogICBHTHVpbnQgVEYzWzJdOwogICBHTHVpbnQgVEY0WzJdOwoKICAgR0x1aW50IFByaW1p dGl2ZVsoKDIxNiArIDMpICsgKCgyICogKDYgKyA2KSkrMSkpXTsKICAgR0x1aW50IE5leHRQcmlt aXRpdmVbKCgyMTYgKyAzKSArICgoMiAqICg2ICsgNikpKzEpKV07CgoKCiAgIHN0cnVjdCBnbF9t YXRlcmlhbCAoKk1hdGVyaWFsKVsyXTsKICAgR0x1aW50ICpNYXRlcmlhbE1hc2s7CgogICBHTGZs b2F0ICgqVGV4Q29vcmRQdHJbMl0pWzRdOwoKICAgc3RydWN0IHZlcnRleF9hcnJheXMgdjsKCiAg IHN0cnVjdCBnbF9jb250ZXh0ICpiYWNrcmVmOwogICB2b2lkICgqbWF5YmVfdHJhbnNmb3JtX3Zi KSggc3RydWN0IGltbWVkaWF0ZSAqICk7CgoKCiAgIEdMZmxvYXQgKk5vcm1hbExlbmd0aHM7CiAg IEdMdWludCBMYXN0Q2FsY2VkTGVuZ3RoOwoKICAgR0x1aW50IEZsYWdbKCgyMTYgKyAzKSArICgo MiAqICg2ICsgNikpKzEpKV07CiAgIEdMdWJ5dGUgQ29sb3JbKCgyMTYgKyAzKSArICgoMiAqICg2 ICsgNikpKzEpKV1bNF07CiAgIEdMZmxvYXQgT2JqWygoMjE2ICsgMykgKyAoKDIgKiAoNiArIDYp KSsxKSldWzRdOwogICBHTGZsb2F0IE5vcm1hbFsoKDIxNiArIDMpICsgKCgyICogKDYgKyA2KSkr MSkpXVszXTsKICAgR0xmbG9hdCBUZXhDb29yZFsyXVsoKDIxNiArIDMpICsgKCgyICogKDYgKyA2 KSkrMSkpXVs0XTsKICAgR0x1aW50IEVsdFsoKDIxNiArIDMpICsgKCgyICogKDYgKyA2KSkrMSkp XTsKICAgR0x1Ynl0ZSBFZGdlRmxhZ1soKDIxNiArIDMpICsgKCgyICogKDYgKyA2KSkrMSkpXTsK ICAgR0x1aW50IEluZGV4WygoMjE2ICsgMykgKyAoKDIgKiAoNiArIDYpKSsxKSldOwp9OwoKCgoK CgoKc3RydWN0IHZlcnRleF9idWZmZXIKewoKCgoKCiAgIHN0cnVjdCBnbF9jb250ZXh0ICpjdHg7 CiAgIHN0cnVjdCBnbF9waXBlbGluZSAqcGlwZWxpbmU7CiAgIHZvaWQgKmRyaXZlcl9kYXRhOwoj IDIwMiAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3ZiLmgiCiAgIHN0cnVjdCBpbW1lZGlh dGUgKklNOwogICBzdHJ1Y3QgdmVydGV4X2FycmF5X3BvaW50ZXJzIHN0b3JlOwoKCgogICBzdHJ1 Y3QgaW1tZWRpYXRlICpwcmV2X2J1ZmZlcjsKCgogICBHTHVpbnQgVHlwZTsKICAgR0x1aW50IFNp emUsIFN0YXJ0LCBDb3VudDsKICAgR0x1aW50IEZyZWUsIEZpcnN0RnJlZTsKICAgR0x1aW50IENv cHlTdGFydDsKICAgR0x1aW50IFBhcml0eSwgT3ZmOwogICBHTHVpbnQgUHVyZ2VGbGFnczsKICAg R0x1aW50IEluZGlyZWN0Q291bnQ7CiAgIEdMdWludCBPckZsYWcsIFNhdmVkT3JGbGFnOwogICBH THVpbnQgRWFybHlDdWxsOwogICBHTHVpbnQgQ3VsbGVkLCBDdWxsRG9uZTsKCgoKICAgR0x2ZWN0 b3I0ZiAqT2JqUHRyOwogICBHTHZlY3RvcjNmICpOb3JtYWxQdHI7CiAgIEdMdmVjdG9yNHViICpD b2xvclB0cjsKICAgR0x2ZWN0b3IxdWkgKkluZGV4UHRyOwogICBHTHZlY3RvcjF1YiAqRWRnZUZs YWdQdHI7CiAgIEdMdmVjdG9yNGYgKlRleENvb3JkUHRyWzJdOwogICBHTHZlY3RvcjF1aSAqRWx0 UHRyOwogICBHTHVpbnQgKkZsYWcsIEZsYWdNYXg7CiAgIHN0cnVjdCBnbF9tYXRlcmlhbCAoKk1h dGVyaWFsKVsyXTsKICAgR0x1aW50ICpNYXRlcmlhbE1hc2s7CgogICBHTHVpbnQgKk5leHRQcmlt aXRpdmU7CiAgIEdMdWludCAqUHJpbWl0aXZlOwogICBHTHVpbnQgTGFzdFByaW1pdGl2ZTsKCiAg IEdMZmxvYXQgKCpCb3VuZHNQdHIpWzNdOwogICBHTGZsb2F0ICpOb3JtYWxMZW5ndGhQdHI7CgoK CgoKICAgR0x2ZWN0b3I0ZiBFeWU7CiAgIEdMdmVjdG9yNGYgQ2xpcDsKICAgR0x2ZWN0b3I0ZiBX aW47CiAgIEdMdmVjdG9yNHViIEJDb2xvcjsKICAgR0x2ZWN0b3IxdWkgQkluZGV4OwogICBHTHVi eXRlICgqU3BlY3VsYXIpWzRdOwogICBHTHVieXRlICgqU3BlY1syXSlbNF07CgoKCgogICBHTHVi eXRlICpDbGlwTWFzazsKICAgR0x1Ynl0ZSAqVXNlckNsaXBNYXNrOwoKCgoKCiAgIEdMdmVjdG9y NGYgKkV5ZVB0cjsKICAgR0x2ZWN0b3I0ZiAqQ2xpcFB0cjsKICAgR0x2ZWN0b3I0ZiAqVW5wcm9q ZWN0ZWQ7CiAgIEdMdmVjdG9yNGYgKlByb2plY3RlZDsKICAgR0x2ZWN0b3I0ZiAqQ3VycmVudFRl eENvb3JkOwogICBHTHVpbnQgKkluZGlyZWN0OwoKCgoKICAgR0x2ZWN0b3I0dWIgKkNvbG9yWzJd OwogICBHTHZlY3RvcjF1aSAqSW5kZXhbMl07CgoKCgogICBHTHZlY3RvcjR1YiAqTGl0Q29sb3Jb Ml07CiAgIEdMdmVjdG9yMXVpICpMaXRJbmRleFsyXTsKICAgR0x2ZWN0b3I0dWIgKkZvZ2dlZENv bG9yWzJdOwogICBHTHZlY3RvcjF1aSAqRm9nZ2VkSW5kZXhbMl07CgoKCgogICBHTGZsb2F0ICgq dG1wX2YpWzNdOwogICBHTGZsb2F0ICp0bXBfbTsKCgoKICAgR0x1aW50ICpFdmFsdWF0ZWRGbGFn czsKCgoKICAgR0x1Ynl0ZSAqTm9ybUN1bGxTdGFydDsKICAgR0x1Ynl0ZSAqQ3VsbE1hc2s7CiAg IEdMdWJ5dGUgKk5vcm1DdWxsTWFzazsKCgogICBHTHVieXRlIENsaXBPck1hc2s7CiAgIEdMdWJ5 dGUgQ2xpcEFuZE1hc2s7CiAgIEdMdWJ5dGUgQ3VsbEZsYWdbMl07CiAgIEdMdWJ5dGUgQ3VsbE1v ZGU7CgogICBHTHVpbnQgQ29weUNvdW50OwogICBHTHVpbnQgQ29weVszXTsKICAgR0xmbG9hdCBD b3B5UHJvalszXVs0XTsKfTsKCgpleHRlcm4gc3RydWN0IHZlcnRleF9idWZmZXIgKmdsX2FsbG9j X3ZiKCBHTGNvbnRleHQgKmN0eCApOwpleHRlcm4gc3RydWN0IGltbWVkaWF0ZSAqZ2xfYWxsb2Nf aW1tZWRpYXRlKCBHTGNvbnRleHQgKmN0eCApOwpleHRlcm4gdm9pZCBnbF9mcmVlX2ltbWVkaWF0 ZSggc3RydWN0IGltbWVkaWF0ZSAqaW0gKTsKCmV4dGVybiBzdHJ1Y3QgdmVydGV4X2J1ZmZlciAq Z2xfdmJfY3JlYXRlX2Zvcl9pbW1lZGlhdGUoIEdMY29udGV4dCAqY3R4ICk7CmV4dGVybiBzdHJ1 Y3QgdmVydGV4X2J1ZmZlciAqZ2xfdmJfY3JlYXRlX2Zvcl9jdmEoIEdMY29udGV4dCAqY3R4LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg c2l6ZSApOwpleHRlcm4gdm9pZCBnbF92Yl9mcmVlKCBzdHJ1Y3QgdmVydGV4X2J1ZmZlciAqICk7 CmV4dGVybiBzdHJ1Y3QgaW1tZWRpYXRlICpnbF9pbW1lZGlhdGVfYWxsb2MoIEdMY29udGV4dCAq Y3R4ICk7CmV4dGVybiB2b2lkIGdsX2ltbWVkaWF0ZV9mcmVlKCBzdHJ1Y3QgaW1tZWRpYXRlICpp bSApOwojIDQwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHlwZXMuaCIgMgoKCgoKCgoK ICAgdHlwZWRlZiBHTHVieXRlIEdMY2hhbjsKIyA2MSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Ev c3JjL3R5cGVzLmgiCiAgIHR5cGVkZWYgR0xzaG9ydCBHTGFjY3VtOwojIDcxICIuLi8uLi8uLi8u Li9leHRyYXMvTWVzYS9zcmMvdHlwZXMuaCIKICAgdHlwZWRlZiBHTHVieXRlIEdMc3RlbmNpbDsK IyA4NCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5cGVzLmgiCnR5cGVkZWYgR0x1aW50 IEdMZGVwdGg7CgoKCgoKCnN0cnVjdCBfbWVzYV9IYXNoVGFibGU7Cgp0eXBlZGVmIHN0cnVjdCBn bF92aXN1YWwgR0x2aXN1YWw7Cgp0eXBlZGVmIHN0cnVjdCBnbF9mcmFtZV9idWZmZXIgR0xmcmFt ZWJ1ZmZlcjsKCgoKCgp0eXBlZGVmIHZvaWQgKCAqIG5vcm1hbF9mdW5jKSggY29uc3QgR0xtYXRy aXggKm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHNjYWxlLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdmVjdG9yM2YgKmluLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgbGVuZ3Roc1tdLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgbWFza1tdLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMdmVjdG9yM2YgKmRlc3QgKTsKCgoKCgoKdHlwZWRlZiB2b2lkICgqcG9pbnRz X2Z1bmMpKCBHTGNvbnRleHQgKmN0eCwgR0x1aW50IGZpcnN0LCBHTHVpbnQgbGFzdCApOwoKdHlw ZWRlZiB2b2lkICgqbGluZV9mdW5jKSggR0xjb250ZXh0ICpjdHgsIEdMdWludCB2MSwgR0x1aW50 IHYyLCBHTHVpbnQgcHYgKTsKCnR5cGVkZWYgdm9pZCAoKnRyaWFuZ2xlX2Z1bmMpKCBHTGNvbnRl eHQgKmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MSwgR0x1aW50 IHYyLCBHTHVpbnQgdjMsIEdMdWludCBwdiApOwoKdHlwZWRlZiB2b2lkICgqcXVhZF9mdW5jKSgg R0xjb250ZXh0ICpjdHgsIEdMdWludCB2MSwgR0x1aW50IHYyLAogICAgICAgICAgICAgICAgICAg ICAgICAgICBHTHVpbnQgdjMsIEdMdWludCB2NCwgR0x1aW50IHB2ICk7Cgp0eXBlZGVmIHZvaWQg KCpyZWN0X2Z1bmMpKCBHTGNvbnRleHQgKmN0eCwgR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgR0xpbnQgd2lkdGgsIEdMaW50IGhlaWdodCApOwoKCgoKCgoKdHlw ZWRlZiB2b2lkICgqY2xpcF9pbnRlcnBfZnVuYykoIHN0cnVjdCB2ZXJ0ZXhfYnVmZmVyICpWQiwg R0x1aW50IGRzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdCwg R0x1aW50IGluLCBHTHVpbnQgb3V0ICk7CgoKCgoKdHlwZWRlZiB2b2lkICgqcmVuZGVyX3ZiX2Z1 bmMpKCBHTGNvbnRleHQgKmN0eCApOwoKCgp0eXBlZGVmIHZvaWQgKCpyZW5kZXJfZnVuYykoIHN0 cnVjdCB2ZXJ0ZXhfYnVmZmVyICpWQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp bnQgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGNvdW50LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXJpdHkgKTsKCgoKCgoKdHlwZWRlZiB2 b2lkICggKiBibGVuZF9mdW5jKSggR0xjb250ZXh0ICpjdHgsIEdMdWludCBuLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVieXRlIG1hc2tbXSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSBzcmNbXVs0XSwgY29uc3QgR0x1Ynl0 ZSBkc3RbXVs0XSApOwojIDE2NiAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5cGVzLmgi CnN0cnVjdCBnbF90ZXh0dXJlX29iamVjdDsKCnR5cGVkZWYgdm9pZCAoKlRleHR1cmVTYW1wbGVG dW5jKSggY29uc3Qgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICp0T2JqLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBuLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgc1tdLCBjb25zdCBHTGZsb2F0IHRbXSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0IHVbXSwgY29uc3QgR0xmbG9h dCBsYW1iZGFbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVieXRlIHJn YmFbXVs0XSApOwoKCgpzdHJ1Y3QgZ2xfdGV4dHVyZV9mb3JtYXQgewogICBHTGludCBJbnRGb3Jt YXQ7CgogICBHTHVieXRlIFJlZEJpdHM7CiAgIEdMdWJ5dGUgR3JlZW5CaXRzOwogICBHTHVieXRl IEJsdWVCaXRzOwogICBHTHVieXRlIEFscGhhQml0czsKICAgR0x1Ynl0ZSBMdW1pbmFuY2VCaXRz OwogICBHTHVieXRlIEludGVuc2l0eUJpdHM7CiAgIEdMdWJ5dGUgSW5kZXhCaXRzOwoKICAgR0xp bnQgVGV4ZWxCeXRlczsKfTsKCgpzdHJ1Y3QgZ2xfdGV4dHVyZV9pbWFnZSB7CiAgIEdMZW51bSBG b3JtYXQ7CgoKCiAgIEdMZW51bSBJbnRGb3JtYXQ7CiAgIEdMdWludCBCb3JkZXI7CiAgIEdMdWlu dCBXaWR0aDsKICAgR0x1aW50IEhlaWdodDsKICAgR0x1aW50IERlcHRoOwogICBHTHVpbnQgV2lk dGgyOwogICBHTHVpbnQgSGVpZ2h0MjsKICAgR0x1aW50IERlcHRoMjsKICAgR0x1aW50IFdpZHRo TG9nMjsKICAgR0x1aW50IEhlaWdodExvZzI7CiAgIEdMdWludCBEZXB0aExvZzI7CiAgIEdMdWlu dCBNYXhMb2cyOwogICBHTHVieXRlICpEYXRhOwoKICAgY29uc3Qgc3RydWN0IGdsX3RleHR1cmVf Zm9ybWF0ICpUZXhGb3JtYXQ7CgogICBHTGJvb2xlYW4gSXNDb21wcmVzc2VkOwogICBHTHVpbnQg Q29tcHJlc3NlZFNpemU7CgoKICAgdm9pZCAqRHJpdmVyRGF0YTsKfTsKCgoKc3RydWN0IGdsX2Nv bG9yX3RhYmxlIHsKICAgR0x2b2lkICpUYWJsZTsKICAgR0xlbnVtIFRhYmxlVHlwZTsKICAgR0x1 aW50IFNpemU7CiAgIEdMZW51bSBGb3JtYXQ7CiAgIEdMZW51bSBJbnRGb3JtYXQ7CiAgIEdMaW50 IFJlZFNpemU7CiAgIEdMaW50IEdyZWVuU2l6ZTsKICAgR0xpbnQgQmx1ZVNpemU7CiAgIEdMaW50 IEFscGhhU2l6ZTsKICAgR0xpbnQgTHVtaW5hbmNlU2l6ZTsKICAgR0xpbnQgSW50ZW5zaXR5U2l6 ZTsKfTsKCgoKCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL2RkLmgiIDEKIyAzNSAi Li4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL2RkLmgiCnN0cnVjdCBnbF9waXhlbHN0b3JlX2F0 dHJpYjsKCgpzdHJ1Y3QgdmVydGV4X2J1ZmZlcjsKc3RydWN0IGltbWVkaWF0ZTsKc3RydWN0IGds X3BpcGVsaW5lX3N0YWdlOwojIDEzNCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL2RkLmgi CnN0cnVjdCBkZF9mdW5jdGlvbl90YWJsZSB7CgoKCgoKCiAgIGNvbnN0IEdMdWJ5dGUgKiAoKkdl dFN0cmluZykoIEdMY29udGV4dCAqY3R4LCBHTGVudW0gbmFtZSApOwoKCgoKCiAgIHZvaWQgKCpV cGRhdGVTdGF0ZSkoIEdMY29udGV4dCAqY3R4ICk7CgoKCgoKCiAgIHZvaWQgKCpDbGVhckluZGV4 KSggR0xjb250ZXh0ICpjdHgsIEdMdWludCBpbmRleCApOwoKCgoKCiAgIHZvaWQgKCpDbGVhckNv bG9yKSggR0xjb250ZXh0ICpjdHgsIEdMdWJ5dGUgcmVkLCBHTHVieXRlIGdyZWVuLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSBibHVlLCBHTHVieXRlIGFs cGhhICk7CgoKCgoKICAgR0xiaXRmaWVsZCAoKkNsZWFyKSggR0xjb250ZXh0ICpjdHgsIEdMYml0 ZmllbGQgbWFzaywgR0xib29sZWFuIGFsbCwKICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg eCwgR0xpbnQgeSwgR0xpbnQgd2lkdGgsIEdMaW50IGhlaWdodCApOwojIDE4MCAiLi4vLi4vLi4v Li4vZXh0cmFzL01lc2Evc3JjL2RkLmgiCiAgIHZvaWQgKCpJbmRleCkoIEdMY29udGV4dCAqY3R4 LCBHTHVpbnQgaW5kZXggKTsKCgoKCgogICB2b2lkICgqQ29sb3IpKCBHTGNvbnRleHQgKmN0eCwK ICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSByZWQsIEdMdWJ5dGUgZ3JlZW4sIEdMdWJ5dGUgZ2x1 ZSwgR0x1Ynl0ZSBhbHBoYSApOwoKCgoKCiAgIEdMYm9vbGVhbiAoKlNldERyYXdCdWZmZXIpKCBH TGNvbnRleHQgKmN0eCwgR0xlbnVtIGJ1ZmZlciApOwojIDIxMyAiLi4vLi4vLi4vLi4vZXh0cmFz L01lc2Evc3JjL2RkLmgiCiAgIHZvaWQgKCpTZXRSZWFkQnVmZmVyKSggR0xjb250ZXh0ICpjdHgs IEdMZnJhbWVidWZmZXIgKmNvbG9yQnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdM ZW51bSBidWZmZXIgKTsKIyAyMjQgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy9kZC5oIgog ICB2b2lkICgqR2V0QnVmZmVyU2l6ZSkoIEdMY29udGV4dCAqY3R4LCBHTHVpbnQgKndpZHRoLCBH THVpbnQgKmhlaWdodCApOwojIDIzNCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL2RkLmgi CiAgIHZvaWQgKCpXcml0ZVJHQkFTcGFuKSggY29uc3QgR0xjb250ZXh0ICpjdHgsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgR0x1aW50IG4sIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSByZ2JhW11bNF0sIGNvbnN0IEdMdWJ5dGUgbWFz a1tdICk7CiAgIHZvaWQgKCpXcml0ZVJHQlNwYW4pKCBjb25zdCBHTGNvbnRleHQgKmN0eCwKICAg ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBuLCBHTGludCB4LCBHTGludCB5LAogICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSByZ2JbXVszXSwgY29uc3QgR0x1Ynl0ZSBt YXNrW10gKTsKCgoKCgogICB2b2lkICgqV3JpdGVNb25vUkdCQVNwYW4pKCBjb25zdCBHTGNvbnRl eHQgKmN0eCwgR0x1aW50IG4sIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgbWFza1tdICk7CgoKCgogICB2b2lkICgqV3JpdGVSR0JB UGl4ZWxzKSggY29uc3QgR0xjb250ZXh0ICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHTHVpbnQgbiwgY29uc3QgR0xpbnQgeFtdLCBjb25zdCBHTGludCB5W10sCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBHTHVieXRlIHJnYmFbXVs0XSwgY29uc3QgR0x1Ynl0ZSBt YXNrW10gKTsKCgoKICAgdm9pZCAoKldyaXRlTW9ub1JHQkFQaXhlbHMpKCBjb25zdCBHTGNvbnRl eHQgKmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbiwgY29uc3Qg R0xpbnQgeFtdLCBjb25zdCBHTGludCB5W10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgR0x1Ynl0ZSBtYXNrW10gKTsKCgoKICAgdm9pZCAoKldyaXRlQ0kzMlNwYW4pKCBj b25zdCBHTGNvbnRleHQgKmN0eCwgR0x1aW50IG4sIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50IGluZGV4W10sIGNvbnN0IEdMdWJ5dGUgbWFz a1tdICk7CiAgIHZvaWQgKCpXcml0ZUNJOFNwYW4pKCBjb25zdCBHTGNvbnRleHQgKmN0eCwgR0x1 aW50IG4sIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH THVieXRlIGluZGV4W10sIGNvbnN0IEdMdWJ5dGUgbWFza1tdICk7CgoKCgoKICAgdm9pZCAoKldy aXRlTW9ub0NJU3BhbikoIGNvbnN0IEdMY29udGV4dCAqY3R4LCBHTHVpbnQgbiwgR0xpbnQgeCwg R0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgbWFza1td ICk7CgoKCgogICB2b2lkICgqV3JpdGVDSTMyUGl4ZWxzKSggY29uc3QgR0xjb250ZXh0ICpjdHgs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbiwgY29uc3QgR0xpbnQgeFtdLCBj b25zdCBHTGludCB5W10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQg aW5kZXhbXSwgY29uc3QgR0x1Ynl0ZSBtYXNrW10gKTsKCgoKCiAgIHZvaWQgKCpXcml0ZU1vbm9D SVBpeGVscykoIGNvbnN0IEdMY29udGV4dCAqY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHTHVpbnQgbiwgY29uc3QgR0xpbnQgeFtdLCBjb25zdCBHTGludCB5W10sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgbWFza1tdICk7CiMgMjk3ICIuLi8u Li8uLi8uLi9leHRyYXMvTWVzYS9zcmMvZGQuaCIKICAgdm9pZCAoKlJlYWRDSTMyU3BhbikoIGNv bnN0IEdMY29udGV4dCAqY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG4sIEdM aW50IHgsIEdMaW50IHksIEdMdWludCBpbmRleFtdICk7CgoKCiAgIHZvaWQgKCpSZWFkUkdCQVNw YW4pKCBjb25zdCBHTGNvbnRleHQgKmN0eCwgR0x1aW50IG4sIEdMaW50IHgsIEdMaW50IHksCiAg ICAgICAgICAgICAgICAgICAgICAgICBHTHVieXRlIHJnYmFbXVs0XSApOwoKCgogICB2b2lkICgq UmVhZENJMzJQaXhlbHMpKCBjb25zdCBHTGNvbnRleHQgKmN0eCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0x1aW50IG4sIGNvbnN0IEdMaW50IHhbXSwgY29uc3QgR0xpbnQgeVtdLAogICAg ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5keFtdLCBjb25zdCBHTHVieXRlIG1hc2tb XSApOwoKCgogICB2b2lkICgqUmVhZFJHQkFQaXhlbHMpKCBjb25zdCBHTGNvbnRleHQgKmN0eCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG4sIGNvbnN0IEdMaW50IHhbXSwgY29u c3QgR0xpbnQgeVtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVieXRlIHJnYmFbXVs0 XSwgY29uc3QgR0x1Ynl0ZSBtYXNrW10gKTsKIyAzMjggIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNh L3NyYy9kZC5oIgogICB2b2lkICgqRmluaXNoKSggR0xjb250ZXh0ICpjdHggKTsKCgoKCiAgIHZv aWQgKCpGbHVzaCkoIEdMY29udGV4dCAqY3R4ICk7CgoKCgogICBHTGJvb2xlYW4gKCpJbmRleE1h c2spKCBHTGNvbnRleHQgKmN0eCwgR0x1aW50IG1hc2sgKTsKCgoKCiAgIEdMYm9vbGVhbiAoKkNv bG9yTWFzaykoIEdMY29udGV4dCAqY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv b2xlYW4gcm1hc2ssIEdMYm9vbGVhbiBnbWFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAg R0xib29sZWFuIGJtYXNrLCBHTGJvb2xlYW4gYW1hc2sgKTsKCgoKCiAgIEdMYm9vbGVhbiAoKkxv Z2ljT3ApKCBHTGNvbnRleHQgKmN0eCwgR0xlbnVtIG9wICk7CgoKCgogICB2b2lkICgqRGl0aGVy KSggR0xjb250ZXh0ICpjdHgsIEdMYm9vbGVhbiBlbmFibGUgKTsKCgoKCgoKICAgdm9pZCAoKkVy cm9yKSggR0xjb250ZXh0ICpjdHggKTsKCgoKCgogICB2b2lkICgqTmVhckZhcikoIEdMY29udGV4 dCAqY3R4LCBHTGZsb2F0IG5lYXJWYWwsIEdMZmxvYXQgZmFyVmFsICk7CgoKCgoKCiAgIEdMaW50 ICgqR2V0UGFyYW1ldGVyaSkoIGNvbnN0IEdMY29udGV4dCAqY3R4LCBHTGludCBwYXJhbSApOwoj IDM5NyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL2RkLmgiCiAgIHZvaWQgKCpXcml0ZURl cHRoU3BhbikoIEdMY29udGV4dCAqY3R4LCBHTHVpbnQgbiwgR0xpbnQgeCwgR0xpbnQgeSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkZXB0aCBkZXB0aFtdLCBjb25zdCBHTHVi eXRlIG1hc2tbXSApOwoKCgoKICAgdm9pZCAoKlJlYWREZXB0aFNwYW4pKCBHTGNvbnRleHQgKmN0 eCwgR0x1aW50IG4sIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAg R0xkZXB0aCBkZXB0aFtdICk7CgoKCgogICB2b2lkICgqV3JpdGVEZXB0aFBpeGVscykoIEdMY29u dGV4dCAqY3R4LCBHTHVpbnQgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH TGludCB4W10sIGNvbnN0IEdMaW50IHlbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBHTGRlcHRoIGRlcHRoW10sIGNvbnN0IEdMdWJ5dGUgbWFza1tdICk7CgoKCgogICB2b2lk ICgqUmVhZERlcHRoUGl4ZWxzKSggR0xjb250ZXh0ICpjdHgsIEdMdWludCBuLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgeFtdLCBjb25zdCBHTGludCB5W10sCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTGRlcHRoIGRlcHRoW10gKTsKIyA0MjkgIi4uLy4uLy4u Ly4uL2V4dHJhcy9NZXNhL3NyYy9kZC5oIgogICB2b2lkICgqV3JpdGVTdGVuY2lsU3BhbikoIEdM Y29udGV4dCAqY3R4LCBHTHVpbnQgbiwgR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBHTHN0ZW5jaWwgc3RlbmNpbFtdLCBjb25zdCBHTHVieXRlIG1h c2tbXSApOwoKCgoKCiAgIHZvaWQgKCpSZWFkU3RlbmNpbFNwYW4pKCBHTGNvbnRleHQgKmN0eCwg R0x1aW50IG4sIEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBH THN0ZW5jaWwgc3RlbmNpbFtdICk7CgoKCiAgIHZvaWQgKCpXcml0ZVN0ZW5jaWxQaXhlbHMpKCBH TGNvbnRleHQgKmN0eCwgR0x1aW50IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBHTGludCB4W10sIGNvbnN0IEdMaW50IHlbXSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IEdMc3RlbmNpbCBzdGVuY2lsW10sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBHTHVieXRlIG1hc2tbXSApOwoKCgoKCiAgIHZvaWQgKCpSZWFkU3RlbmNp bFBpeGVscykoIEdMY29udGV4dCAqY3R4LCBHTHVpbnQgbiwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgR0xpbnQgeFtdLCBjb25zdCBHTGludCB5W10sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdMc3RlbmNpbCBzdGVuY2lsW10gKTsKIyA0NjEgIi4uLy4uLy4uLy4u L2V4dHJhcy9NZXNhL3NyYy9kZC5oIgogICBHTGJvb2xlYW4gKCpEcmF3UGl4ZWxzKSggR0xjb250 ZXh0ICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LCBHTGludCB5LCBH THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IGdsX3BpeGVsc3RvcmVfYXR0cmliICp1bnBhY2ssCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyApOwoKCgoKCgogICBHTGJvb2xlYW4g KCpSZWFkUGl4ZWxzKSggR0xjb250ZXh0ICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX3BpeGVsc3RvcmVfYXR0cmliICp1 bnBhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKmRlc3QgKTsKCgoKCgog ICBHTGJvb2xlYW4gKCpDb3B5UGl4ZWxzKSggR0xjb250ZXh0ICpjdHgsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHTGludCBzcmN4LCBHTGludCBzcmN5LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHTGludCBkc3R4LCBHTGludCBkc3R5LCBHTGVudW0gdHlwZSApOwoKCgoKCiAg IEdMYm9vbGVhbiAoKkJpdG1hcCkoIEdMY29udGV4dCAqY3R4LAogICAgICAgICAgICAgICAgICAg ICAgICBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwKICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX3BpeGVsc3RvcmVfYXR0cmliICp1 bnBhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmJpdG1hcCApOwoj IDUwMyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL2RkLmgiCiAgIHZvaWQgKCpUZXhJbWFn ZSkoIEdMY29udGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgKnRPYmosIEdMaW50IGxldmVsLAogICAgICAgICAgICAg ICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IGdsX3RleHR1cmVfaW1hZ2UgKmltYWdlICk7CiMgNTE2ICIuLi8uLi8uLi8uLi9leHRy YXMvTWVzYS9zcmMvZGQuaCIKICAgdm9pZCAoKlRleFN1YkltYWdlKSggR0xjb250ZXh0ICpjdHgs IEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF90ZXh0dXJl X29iamVjdCAqdE9iaiwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50 IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRl cm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX3RleHR1 cmVfaW1hZ2UgKmltYWdlICk7CgoKCgoKICAgR0xib29sZWFuICgqVGV4SW1hZ2UxRCkoIEdMY29u dGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKnBpeGVs cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9waXhlbHN0b3Jl X2F0dHJpYiAqcGFja2luZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF90 ZXh0dXJlX29iamVjdCAqdGV4T2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGdsX3RleHR1cmVfaW1hZ2UgKnRleEltYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg R0xib29sZWFuICpyZXRhaW5JbnRlcm5hbENvcHkgKTsKICAgR0xib29sZWFuICgqVGV4SW1hZ2Uy RCkoIEdMY29udGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZv aWQgKnBpeGVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9w aXhlbHN0b3JlX2F0dHJpYiAqcGFja2luZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBnbF90ZXh0dXJlX29iamVjdCAqdGV4T2JqLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGdsX3RleHR1cmVfaW1hZ2UgKnRleEltYWdlLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0xib29sZWFuICpyZXRhaW5JbnRlcm5hbENvcHkgKTsKICAgR0xib29sZWFuICgq VGV4SW1hZ2UzRCkoIEdMY29udGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBj b25zdCBHTHZvaWQgKnBpeGVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0 cnVjdCBnbF9waXhlbHN0b3JlX2F0dHJpYiAqcGFja2luZywKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCAqdGV4T2JqLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGdsX3RleHR1cmVfaW1hZ2UgKnRleEltYWdlLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgR0xib29sZWFuICpyZXRhaW5JbnRlcm5hbENvcHkgKTsKIyA1NjEg Ii4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy9kZC5oIgogICBHTGJvb2xlYW4gKCpUZXhTdWJJ bWFnZTFEKSggR0xjb250ZXh0ICpjdHgsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xzaXplaSB3aWR0aCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfcGl4ZWxzdG9yZV9h dHRyaWIgKnBhY2tpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZ2xf dGV4dHVyZV9vYmplY3QgKnRleE9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBnbF90ZXh0dXJlX2ltYWdlICp0ZXhJbWFnZSApOwogICBHTGJvb2xlYW4gKCpUZXhTdWJJ bWFnZTJEKSggR0xjb250ZXh0ICpjdHgsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp Z2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVt IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVs cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9waXhlbHN0 b3JlX2F0dHJpYiAqcGFja2luZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBnbF90ZXh0dXJlX29iamVjdCAqdGV4T2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGdsX3RleHR1cmVfaW1hZ2UgKnRleEltYWdlICk7CiAgIEdMYm9vbGVhbiAoKlRl eFN1YkltYWdlM0QpKCBHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zm c2V0LCBHTGludCB6b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGRlcHRoLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscywKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9waXhlbHN0b3JlX2F0dHJpYiAqcGFja2luZywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCAqdGV4 T2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdsX3RleHR1cmVfaW1h Z2UgKnRleEltYWdlICk7CiMgNTk4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvZGQuaCIK ICAgR0xib29sZWFuICgqQ29weVRleEltYWdlMUQpKCBHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHRh cmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt IGludGVybmFsRm9ybWF0LCBHTGludCB4LCBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMaW50IGJvcmRlciApOwogICBHTGJvb2xlYW4gKCpD b3B5VGV4SW1hZ2UyRCkoIEdMY29udGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZl bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQs IEdMaW50IHgsIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciApOwoKCgoKCgogICBHTGJvb2xl YW4gKCpDb3B5VGV4U3ViSW1hZ2UxRCkoIEdMY29udGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LCBH TGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zm c2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsIEdMaW50IHks IEdMc2l6ZWkgd2lkdGggKTsKICAgR0xib29sZWFuICgqQ29weVRleFN1YkltYWdlMkQpKCBHTGNv bnRleHQgKmN0eCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LCBHTGludCB5LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0ICk7CiAg IEdMYm9vbGVhbiAoKkNvcHlUZXhTdWJJbWFnZTNEKSggR0xjb250ZXh0ICpjdHgsIEdMZW51bSB0 YXJnZXQsIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCApOwoKCgoKCgog ICBHTHZvaWQgKigqR2V0VGV4SW1hZ2UpKCBHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHRhcmdldCwg R0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF90 ZXh0dXJlX29iamVjdCAqdGV4T2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g KmZvcm1hdE91dCwgR0xlbnVtICp0eXBlT3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBH TGJvb2xlYW4gKmZyZWVJbWFnZU91dCApOwojIDY0MyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Ev c3JjL2RkLmgiCiAgIEdMYm9vbGVhbiAoKlRlc3RQcm94eVRleEltYWdlKShHTGNvbnRleHQgKmN0 eCwgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50 IGxldmVsLCBHTGludCBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR0xpbnQgd2lkdGgsIEdMaW50IGhlaWdodCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdMaW50IGRlcHRoLCBHTGludCBib3JkZXIpOwoKCgoKCiAgIEdMYm9v bGVhbiAoKkNvbXByZXNzZWRUZXhJbWFnZTFEKSggR0xjb250ZXh0ICpjdHgsIEdMZW51bSB0YXJn ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsIEdM c2l6ZWkgaW1hZ2VTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IEdMdm9pZCAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgKnRleE9iaiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZ2xfdGV4dHVyZV9pbWFnZSAqdGV4SW1hZ2UsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuICpyZXRhaW5JbnRlcm5hbENv cHkpOwogICBHTGJvb2xlYW4gKCpDb21wcmVzc2VkVGV4SW1hZ2UyRCkoIEdMY29udGV4dCAqY3R4 LCBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM aW50IGxldmVsLCBHTHNpemVpIGltYWdlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBHTHZvaWQgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICp0ZXhPYmosCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdsX3RleHR1cmVfaW1hZ2UgKnRleElt YWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiAqcmV0 YWluSW50ZXJuYWxDb3B5KTsKICAgR0xib29sZWFuICgqQ29tcHJlc3NlZFRleEltYWdlM0QpKCBH TGNvbnRleHQgKmN0eCwgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHTGludCBsZXZlbCwgR0xzaXplaSBpbWFnZVNpemUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpkYXRhLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCAqdGV4T2Jq LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF90ZXh0dXJl X2ltYWdlICp0ZXhJbWFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH TGJvb2xlYW4gKnJldGFpbkludGVybmFsQ29weSk7CiMgNjgzICIuLi8uLi8uLi8uLi9leHRyYXMv TWVzYS9zcmMvZGQuaCIKICAgR0xib29sZWFuICgqQ29tcHJlc3NlZFRleFN1YkltYWdlMUQpKCBH TGNvbnRleHQgKmN0eCwgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTGVudW0gZm9ybWF0LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXpl LCBjb25zdCBHTHZvaWQgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICp0ZXhPYmosCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdsX3RleHR1cmVfaW1hZ2UgKnRleEltYWdl ICk7CiAgIEdMYm9vbGVhbiAoKkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKSggR0xjb250ZXh0ICpj dHgsIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBoZWlnaHQsIEdMZW51bSBmb3JtYXQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNp emUsIGNvbnN0IEdMdm9pZCAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgKnRleE9iaiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZ2xfdGV4dHVyZV9pbWFnZSAqdGV4SW1h Z2UgKTsKICAgR0xib29sZWFuICgqQ29tcHJlc3NlZFRleFN1YkltYWdlM0QpKCBHTGNvbnRleHQg KmN0eCwgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMaW50IGhlaWdo dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkZXB0aCwg R0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH THNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCAqdGV4T2JqLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF90ZXh0dXJl X2ltYWdlICp0ZXhJbWFnZSApOwojIDcxNSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL2Rk LmgiCiAgIEdMaW50ICgqQmFzZUNvbXByZXNzZWRUZXhGb3JtYXQpKEdMY29udGV4dCAqY3R4LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCk7 CgoKCgoKCgogICBHTGludCAoKlNwZWNpZmljQ29tcHJlc3NlZFRleEZvcm1hdCkoR0xjb250ZXh0 ICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRl cm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50 IG51bURpbWVuc2lvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH TGludCAqbGV2ZWxwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz aXplaSAqd2lkdGhwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz aXplaSAqaGVpZ2h0cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM c2l6ZWkgKmRlcHRocCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM aW50ICpib3JkZXJwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl bnVtICpmb3JtYXRwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl bnVtICp0eXBlcCk7CiMgNzQ0ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvZGQuaCIKICAg R0xib29sZWFuICgqSXNDb21wcmVzc2VkRm9ybWF0KShHTGNvbnRleHQgKmN0eCwgR0xpbnQgaW50 ZXJuYWxGb3JtYXQpOwoKCgogICBHTHNpemVpICgqQ29tcHJlc3NlZEltYWdlU2l6ZSkoR0xjb250 ZXh0ICpjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu YWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnVtRGlt ZW5zaW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB3aWR0aCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBoZWlnaHQsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZGVwdGgpOwoKCgoKICAgdm9pZCAoKkdl dENvbXByZXNzZWRUZXhJbWFnZSkoIEdMY29udGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9kLCB2b2lkICppbWFnZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF90ZXh0dXJlX29i amVjdCAqdGV4T2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGds X3RleHR1cmVfaW1hZ2UgKnRleEltYWdlICk7CgoKCgoKCiAgIHZvaWQgKCpUZXhFbnYpKCBHTGNv bnRleHQgKmN0eCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAg ICAgY29uc3QgR0xmbG9hdCAqcGFyYW0gKTsKCgoKICAgdm9pZCAoKlRleFBhcmFtZXRlcikoIEdM Y29udGV4dCAqY3R4LCBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGdsX3RleHR1cmVfb2JqZWN0ICp0ZXhPYmosCiAgICAgICAgICAgICAgICAgICAgICAgICBH TGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyApOwojIDc4NCAiLi4vLi4vLi4vLi4v ZXh0cmFzL01lc2Evc3JjL2RkLmgiCiAgIHZvaWQgKCpCaW5kVGV4dHVyZSkoIEdMY29udGV4dCAq Y3R4LCBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZ2xfdGV4 dHVyZV9vYmplY3QgKnRPYmogKTsKCgoKICAgdm9pZCAoKkRlbGV0ZVRleHR1cmUpKCBHTGNvbnRl eHQgKmN0eCwgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICp0T2JqICk7CgoKCgogICBHTGJvb2xl YW4gKCpJc1RleHR1cmVSZXNpZGVudCkoIEdMY29udGV4dCAqY3R4LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCAqdCApOwoKCgogICB2 b2lkICgqUHJpb3JpdGl6ZVRleHR1cmUpKCBHTGNvbnRleHQgKmN0eCwgc3RydWN0IGdsX3RleHR1 cmVfb2JqZWN0ICp0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNsYW1wZiBwcmlv cml0eSApOwoKCgogICB2b2lkICgqQWN0aXZlVGV4dHVyZSkoIEdMY29udGV4dCAqY3R4LCBHTHVp bnQgdGV4VW5pdE51bWJlciApOwoKCgogICB2b2lkICgqVXBkYXRlVGV4dHVyZVBhbGV0dGUpKCBH TGNvbnRleHQgKmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGds X3RleHR1cmVfb2JqZWN0ICp0T2JqICk7CiMgODIxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9z cmMvZGQuaCIKICAgcG9pbnRzX2Z1bmMgUG9pbnRzRnVuYzsKICAgbGluZV9mdW5jIExpbmVGdW5j OwogICB0cmlhbmdsZV9mdW5jIFRyaWFuZ2xlRnVuYzsKICAgcXVhZF9mdW5jIFF1YWRGdW5jOwog ICByZWN0X2Z1bmMgUmVjdEZ1bmM7CgoKCgoKCiAgIHZvaWQgKCpSZW5kZXJTdGFydCkoIEdMY29u dGV4dCAqY3R4ICk7CiAgIHZvaWQgKCpSZW5kZXJGaW5pc2gpKCBHTGNvbnRleHQgKmN0eCApOwoK CgoKCgoKICAgdm9pZCAoKlJhc3RlclNldHVwKSggc3RydWN0IHZlcnRleF9idWZmZXIgKlZCLCBH THVpbnQgc3RhcnQsIEdMdWludCBlbmQgKTsKIyA4NTEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNh L3NyYy9kZC5oIgogICByZW5kZXJfZnVuYyAqUmVuZGVyVkJDbGlwcGVkVGFiOwogICByZW5kZXJf ZnVuYyAqUmVuZGVyVkJDdWxsZWRUYWI7CiAgIHJlbmRlcl9mdW5jICpSZW5kZXJWQlJhd1RhYjsK CgoKCgogICB2b2lkICgqUmVkdWNlZFByaW1pdGl2ZUNoYW5nZSkoIEdMY29udGV4dCAqY3R4LCBH TGVudW0gcHJpbWl0aXZlICk7CgoKCgoKCiAgIEdMdWludCBUcmlhbmdsZUNhcHM7CgoKCgoKCiAg IEdMYm9vbGVhbiAoKk11bHRpcGFzc0Z1bmMpKCBzdHJ1Y3QgdmVydGV4X2J1ZmZlciAqVkIsIEdM dWludCBwYXNzbm8gKTsKIyA4ODcgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy9kZC5oIgog ICB2b2lkICgqUmVnaXN0ZXJWQikoIHN0cnVjdCB2ZXJ0ZXhfYnVmZmVyICpWQiApOwogICB2b2lk ICgqVW5yZWdpc3RlclZCKSggc3RydWN0IHZlcnRleF9idWZmZXIgKlZCICk7CgoKCgoKICAgdm9p ZCAoKlJlc2V0VkIpKCBzdHJ1Y3QgdmVydGV4X2J1ZmZlciAqVkIgKTsKICAgdm9pZCAoKlJlc2V0 Q3ZhVkIpKCBzdHJ1Y3QgdmVydGV4X2J1ZmZlciAqVkIsIEdMdWludCBzdGFnZXMgKTsKCgoKCiAg IEdMdWludCBSZW5kZXJWZWN0b3JGbGFnczsKCgoKCiAgIEdMdWludCAoKlJlZ2lzdGVyUGlwZWxp bmVTdGFnZXMpKCBzdHJ1Y3QgZ2xfcGlwZWxpbmVfc3RhZ2UgKm91dCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9waXBlbGluZV9zdGFnZSAqaW4s CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnIgKTsKCgoKCgog ICBHTGJvb2xlYW4gKCpCdWlsZFByZWNhbGNQaXBlbGluZSkoIEdMY29udGV4dCAqY3R4ICk7CiAg IEdMYm9vbGVhbiAoKkJ1aWxkRWx0UGlwZWxpbmUpKCBHTGNvbnRleHQgKmN0eCApOwoKCgoKICAg dm9pZCAoKk9wdGltaXplUHJlY2FsY1BpcGVsaW5lKSggR0xjb250ZXh0ICpjdHgsIHN0cnVjdCBn bF9waXBlbGluZSAqcGlwZSApOwogICB2b2lkICgqT3B0aW1pemVJbW1lZGlhdGVQaXBlbGluZSko IEdMY29udGV4dCAqY3R4LCBzdHJ1Y3QgZ2xfcGlwZWxpbmUgKnBpcGUpOwojIDkzNSAiLi4vLi4v Li4vLi4vZXh0cmFzL01lc2Evc3JjL2RkLmgiCiAgIHZvaWQgKCpBbHBoYUZ1bmMpKEdMY29udGV4 dCAqY3R4LCBHTGVudW0gZnVuYywgR0xjbGFtcGYgcmVmKTsKICAgdm9pZCAoKkJsZW5kRXF1YXRp b24pKEdMY29udGV4dCAqY3R4LCBHTGVudW0gbW9kZSk7CiAgIHZvaWQgKCpCbGVuZEZ1bmMpKEdM Y29udGV4dCAqY3R4LCBHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpOwogICB2b2lkICgq QmxlbmRGdW5jU2VwYXJhdGUpKCBHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHNmYWN0b3JSR0IsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZmFjdG9yUkdCLCBHTGVudW0gc2Zh Y3RvckEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZmFjdG9yQSApOwog ICB2b2lkICgqQmxlbmRDb25zdENvbG9yKShHTGNvbnRleHQgKmN0eCwgR0xmbG9hdCByZWQsIEdM ZmxvYXQgZ3JlZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgYmx1ZSwgR0xm bG9hdCBhbHBoYSk7CiAgIHZvaWQgKCpDbGVhckRlcHRoKShHTGNvbnRleHQgKmN0eCwgR0xjbGFt cGQgZCk7CiAgIHZvaWQgKCpDdWxsRmFjZSkoR0xjb250ZXh0ICpjdHgsIEdMZW51bSBtb2RlKTsK ICAgdm9pZCAoKkZyb250RmFjZSkoR0xjb250ZXh0ICpjdHgsIEdMZW51bSBtb2RlKTsKICAgdm9p ZCAoKkRlcHRoRnVuYykoR0xjb250ZXh0ICpjdHgsIEdMZW51bSBmdW5jKTsKICAgdm9pZCAoKkRl cHRoTWFzaykoR0xjb250ZXh0ICpjdHgsIEdMYm9vbGVhbiBmbGFnKTsKICAgdm9pZCAoKkRlcHRo UmFuZ2UpKEdMY29udGV4dCAqY3R4LCBHTGNsYW1wZCBuZWFydmFsLCBHTGNsYW1wZCBmYXJ2YWwp OwogICB2b2lkICgqRW5hYmxlKShHTGNvbnRleHQqIGN0eCwgR0xlbnVtIGNhcCwgR0xib29sZWFu IHN0YXRlKTsKICAgdm9pZCAoKkZvZ2Z2KShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHBuYW1lLCBj b25zdCBHTGZsb2F0ICpwYXJhbXMpOwogICB2b2lkICgqSGludCkoR0xjb250ZXh0ICpjdHgsIEdM ZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlKTsKICAgdm9pZCAoKkxpZ2h0ZnYpKEdMY29udGV4dCAq Y3R4LCBHTGVudW0gbGlnaHQsCiAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsIGNvbnN0 IEdMZmxvYXQgKnBhcmFtcywgR0xpbnQgbnBhcmFtcyApOwogICB2b2lkICgqTGlnaHRNb2RlbGZ2 KShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwog ICB2b2lkICgqTGluZVN0aXBwbGUpKEdMY29udGV4dCAqY3R4LCBHTGludCBmYWN0b3IsIEdMdXNo b3J0IHBhdHRlcm4gKTsKICAgdm9pZCAoKkxpbmVXaWR0aCkoR0xjb250ZXh0ICpjdHgsIEdMZmxv YXQgd2lkdGgpOwogICB2b2lkICgqTG9naWNPcGNvZGUpKEdMY29udGV4dCAqY3R4LCBHTGVudW0g b3Bjb2RlKTsKICAgdm9pZCAoKlBvaW50U2l6ZSkoR0xjb250ZXh0ICpjdHgsIEdMZmxvYXQgc2l6 ZSk7CiAgIHZvaWQgKCpQb2x5Z29uTW9kZSkoR0xjb250ZXh0ICpjdHgsIEdMZW51bSBmYWNlLCBH TGVudW0gbW9kZSk7CiAgIHZvaWQgKCpQb2x5Z29uU3RpcHBsZSkoR0xjb250ZXh0ICpjdHgsIGNv bnN0IEdMdWJ5dGUgKm1hc2sgKTsKICAgdm9pZCAoKlNjaXNzb3IpKEdMY29udGV4dCAqY3R4LCBH TGludCB4LCBHTGludCB5LCBHTHNpemVpIHcsIEdMc2l6ZWkgaCk7CiAgIHZvaWQgKCpTaGFkZU1v ZGVsKShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIG1vZGUpOwogICB2b2lkICgqQ2xlYXJTdGVuY2ls KShHTGNvbnRleHQgKmN0eCwgR0xpbnQgcyk7CiAgIHZvaWQgKCpTdGVuY2lsRnVuYykoR0xjb250 ZXh0ICpjdHgsIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKTsKICAgdm9pZCAo KlN0ZW5jaWxNYXNrKShHTGNvbnRleHQgKmN0eCwgR0x1aW50IG1hc2spOwogICB2b2lkICgqU3Rl bmNpbE9wKShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVt IHpwYXNzKTsKICAgdm9pZCAoKlZpZXdwb3J0KShHTGNvbnRleHQgKmN0eCwgR0xpbnQgeCwgR0xp bnQgeSwgR0xzaXplaSB3LCBHTHNpemVpIGgpOwoKCgoKCiAgIEdMYm9vbGVhbiAoKkdldEJvb2xl YW52KShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnJlc3VsdCk7CiAg IEdMYm9vbGVhbiAoKkdldERvdWJsZXYpKEdMY29udGV4dCAqY3R4LCBHTGVudW0gcG5hbWUsIEdM ZG91YmxlICpyZXN1bHQpOwogICBHTGJvb2xlYW4gKCpHZXRGbG9hdHYpKEdMY29udGV4dCAqY3R4 LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnJlc3VsdCk7CiAgIEdMYm9vbGVhbiAoKkdldEludGVn ZXJ2KShHTGNvbnRleHQgKmN0eCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcmVzdWx0KTsKICAgR0xi b29sZWFuICgqR2V0UG9pbnRlcnYpKEdMY29udGV4dCAqY3R4LCBHTGVudW0gcG5hbWUsIEdMdm9p ZCAqKnJlc3VsdCk7Cn07CiMgMjM5ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHlwZXMu aCIgMgojIDI3NSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5cGVzLmgiCnN0cnVjdCBn bF9saWdodCB7CiAgIHN0cnVjdCBnbF9saWdodCAqbmV4dDsKICAgc3RydWN0IGdsX2xpZ2h0ICpw cmV2OwoKICAgR0xmbG9hdCBBbWJpZW50WzRdOwogICBHTGZsb2F0IERpZmZ1c2VbNF07CiAgIEdM ZmxvYXQgU3BlY3VsYXJbNF07CiAgIEdMZmxvYXQgRXllUG9zaXRpb25bNF07CiAgIEdMZmxvYXQg RXllRGlyZWN0aW9uWzRdOwogICBHTGZsb2F0IFNwb3RFeHBvbmVudDsKICAgR0xmbG9hdCBTcG90 Q3V0b2ZmOwogICBHTGZsb2F0IENvc0N1dG9mZjsKICAgR0xmbG9hdCBDb25zdGFudEF0dGVudWF0 aW9uOwogICBHTGZsb2F0IExpbmVhckF0dGVudWF0aW9uOwogICBHTGZsb2F0IFF1YWRyYXRpY0F0 dGVudWF0aW9uOwogICBHTGJvb2xlYW4gRW5hYmxlZDsKCgogICBHTHVpbnQgRmxhZ3M7CgogICBH TGZsb2F0IFBvc2l0aW9uWzRdOwogICBHTGZsb2F0IFZQX2luZl9ub3JtWzNdOwogICBHTGZsb2F0 IGhfaW5mX25vcm1bM107CiAgIEdMZmxvYXQgTm9ybURpcmVjdGlvbls0XTsKICAgR0xmbG9hdCBW UF9pbmZfc3BvdF9hdHRlbnVhdGlvbjsKCiAgIEdMZmxvYXQgU3BvdEV4cFRhYmxlWzUxMl1bMl07 CiAgIEdMZmxvYXQgTWF0QW1iaWVudFsyXVszXTsKICAgR0xmbG9hdCBNYXREaWZmdXNlWzJdWzNd OwogICBHTGZsb2F0IE1hdFNwZWN1bGFyWzJdWzNdOwogICBHTGZsb2F0IGRsaTsKICAgR0xmbG9h dCBzbGk7CiAgIEdMYm9vbGVhbiBJc01hdFNwZWN1bGFyWzJdOwp9OwoKCnN0cnVjdCBnbF9saWdo dG1vZGVsIHsKICAgR0xmbG9hdCBBbWJpZW50WzRdOwogICBHTGJvb2xlYW4gTG9jYWxWaWV3ZXI7 CiAgIEdMYm9vbGVhbiBUd29TaWRlOwogICBHTGVudW0gQ29sb3JDb250cm9sOwoKfTsKIyAzMjcg Ii4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90eXBlcy5oIgpzdHJ1Y3QgZ2xfYWNjdW1fYXR0 cmliIHsKICAgR0xmbG9hdCBDbGVhckNvbG9yWzRdOwp9OwojIDM0MSAiLi4vLi4vLi4vLi4vZXh0 cmFzL01lc2Evc3JjL3R5cGVzLmgiCnN0cnVjdCBnbF9jb2xvcmJ1ZmZlcl9hdHRyaWIgewogICBH THVpbnQgQ2xlYXJJbmRleDsKICAgR0xmbG9hdCBDbGVhckNvbG9yWzRdOwoKICAgR0x1aW50IElu ZGV4TWFzazsKICAgR0x1Ynl0ZSBDb2xvck1hc2tbNF07CiAgIEdMYm9vbGVhbiBTV21hc2tpbmc7 CgogICBHTGVudW0gRHJhd0J1ZmZlcjsKICAgR0xlbnVtIERyaXZlckRyYXdCdWZmZXI7CiAgIEdM Ym9vbGVhbiBNdWx0aURyYXdCdWZmZXI7CiAgIEdMdWJ5dGUgRHJhd0Rlc3RNYXNrOwoKCiAgIEdM Ym9vbGVhbiBBbHBoYUVuYWJsZWQ7CiAgIEdMZW51bSBBbHBoYUZ1bmM7CiAgIEdMdWJ5dGUgQWxw aGFSZWY7CgoKICAgR0xib29sZWFuIEJsZW5kRW5hYmxlZDsKICAgR0xlbnVtIEJsZW5kU3JjUkdC OwogICBHTGVudW0gQmxlbmREc3RSR0I7CiAgIEdMZW51bSBCbGVuZFNyY0E7CiAgIEdMZW51bSBC bGVuZERzdEE7CiAgIEdMZW51bSBCbGVuZEVxdWF0aW9uOwogICBHTGZsb2F0IEJsZW5kQ29sb3Jb NF07CiAgIGJsZW5kX2Z1bmMgQmxlbmRGdW5jOwoKCiAgIEdMZW51bSBMb2dpY09wOwogICBHTGJv b2xlYW4gSW5kZXhMb2dpY09wRW5hYmxlZDsKICAgR0xib29sZWFuIENvbG9yTG9naWNPcEVuYWJs ZWQ7CiAgIEdMYm9vbGVhbiBTV0xvZ2ljT3BFbmFibGVkOwoKICAgR0xib29sZWFuIERpdGhlckZs YWc7Cn07CgoKc3RydWN0IGdsX2N1cnJlbnRfYXR0cmliIHsKCgogICBHTHVpbnQgRmxhZzsKICAg R0xmbG9hdCBOb3JtYWxbM107CiAgIEdMdWJ5dGUgQnl0ZUNvbG9yWzRdOwogICBHTHVpbnQgSW5k ZXg7CiAgIEdMYm9vbGVhbiBFZGdlRmxhZzsKICAgR0xmbG9hdCBUZXhjb29yZFsyXVs0XTsKICAg R0xlbnVtIFByaW1pdGl2ZTsKCgoKICAgR0xmbG9hdCBSYXN0ZXJQb3NbNF07CiAgIEdMZmxvYXQg UmFzdGVyRGlzdGFuY2U7CiAgIEdMZmxvYXQgUmFzdGVyQ29sb3JbNF07CiAgIEdMdWludCBSYXN0 ZXJJbmRleDsKICAgR0xmbG9hdCAqUmFzdGVyVGV4Q29vcmQ7CiAgIEdMZmxvYXQgUmFzdGVyTXVs dGlUZXhDb29yZFsyXVs0XTsKICAgR0xib29sZWFuIFJhc3RlclBvc1ZhbGlkOwp9OwoKCnN0cnVj dCBnbF9kZXB0aGJ1ZmZlcl9hdHRyaWIgewogICBHTGVudW0gRnVuYzsKICAgR0xmbG9hdCBDbGVh cjsKICAgR0xib29sZWFuIFRlc3Q7CiAgIEdMYm9vbGVhbiBNYXNrOwogICBHTGJvb2xlYW4gT2Nj bHVzaW9uVGVzdDsKfTsKCgpzdHJ1Y3QgZ2xfZW5hYmxlX2F0dHJpYiB7CiAgIEdMYm9vbGVhbiBB bHBoYVRlc3Q7CiAgIEdMYm9vbGVhbiBBdXRvTm9ybWFsOwogICBHTGJvb2xlYW4gQmxlbmQ7CiAg IEdMYm9vbGVhbiBDbGlwUGxhbmVbNl07CiAgIEdMYm9vbGVhbiBDb2xvck1hdGVyaWFsOwogICBH TGJvb2xlYW4gQ29udm9sdXRpb24xRDsKICAgR0xib29sZWFuIENvbnZvbHV0aW9uMkQ7CiAgIEdM Ym9vbGVhbiBTZXBhcmFibGUyRDsKICAgR0xib29sZWFuIEN1bGxGYWNlOwogICBHTGJvb2xlYW4g RGVwdGhUZXN0OwogICBHTGJvb2xlYW4gRGl0aGVyOwogICBHTGJvb2xlYW4gRm9nOwogICBHTGJv b2xlYW4gSGlzdG9ncmFtOwogICBHTGJvb2xlYW4gTGlnaHRbOF07CiAgIEdMYm9vbGVhbiBMaWdo dGluZzsKICAgR0xib29sZWFuIExpbmVTbW9vdGg7CiAgIEdMYm9vbGVhbiBMaW5lU3RpcHBsZTsK ICAgR0xib29sZWFuIEluZGV4TG9naWNPcDsKICAgR0xib29sZWFuIENvbG9yTG9naWNPcDsKICAg R0xib29sZWFuIE1hcDFDb2xvcjQ7CiAgIEdMYm9vbGVhbiBNYXAxSW5kZXg7CiAgIEdMYm9vbGVh biBNYXAxTm9ybWFsOwogICBHTGJvb2xlYW4gTWFwMVRleHR1cmVDb29yZDE7CiAgIEdMYm9vbGVh biBNYXAxVGV4dHVyZUNvb3JkMjsKICAgR0xib29sZWFuIE1hcDFUZXh0dXJlQ29vcmQzOwogICBH TGJvb2xlYW4gTWFwMVRleHR1cmVDb29yZDQ7CiAgIEdMYm9vbGVhbiBNYXAxVmVydGV4MzsKICAg R0xib29sZWFuIE1hcDFWZXJ0ZXg0OwogICBHTGJvb2xlYW4gTWFwMkNvbG9yNDsKICAgR0xib29s ZWFuIE1hcDJJbmRleDsKICAgR0xib29sZWFuIE1hcDJOb3JtYWw7CiAgIEdMYm9vbGVhbiBNYXAy VGV4dHVyZUNvb3JkMTsKICAgR0xib29sZWFuIE1hcDJUZXh0dXJlQ29vcmQyOwogICBHTGJvb2xl YW4gTWFwMlRleHR1cmVDb29yZDM7CiAgIEdMYm9vbGVhbiBNYXAyVGV4dHVyZUNvb3JkNDsKICAg R0xib29sZWFuIE1hcDJWZXJ0ZXgzOwogICBHTGJvb2xlYW4gTWFwMlZlcnRleDQ7CiAgIEdMYm9v bGVhbiBNaW5NYXg7CiAgIEdMYm9vbGVhbiBOb3JtYWxpemU7CiAgIEdMYm9vbGVhbiBQaXhlbFRl eHR1cmU7CiAgIEdMYm9vbGVhbiBQb2ludFNtb290aDsKICAgR0xib29sZWFuIFBvbHlnb25PZmZz ZXRQb2ludDsKICAgR0xib29sZWFuIFBvbHlnb25PZmZzZXRMaW5lOwogICBHTGJvb2xlYW4gUG9s eWdvbk9mZnNldEZpbGw7CiAgIEdMYm9vbGVhbiBQb2x5Z29uU21vb3RoOwogICBHTGJvb2xlYW4g UG9seWdvblN0aXBwbGU7CiAgIEdMYm9vbGVhbiBSZXNjYWxlTm9ybWFsczsKICAgR0xib29sZWFu IFNjaXNzb3I7CiAgIEdMYm9vbGVhbiBTdGVuY2lsOwogICBHTHVpbnQgVGV4dHVyZVsyXTsKICAg R0x1aW50IFRleEdlblsyXTsKfTsKCgpzdHJ1Y3QgZ2xfZXZhbF9hdHRyaWIgewoKICAgR0xib29s ZWFuIE1hcDFDb2xvcjQ7CiAgIEdMYm9vbGVhbiBNYXAxSW5kZXg7CiAgIEdMYm9vbGVhbiBNYXAx Tm9ybWFsOwogICBHTGJvb2xlYW4gTWFwMVRleHR1cmVDb29yZDE7CiAgIEdMYm9vbGVhbiBNYXAx VGV4dHVyZUNvb3JkMjsKICAgR0xib29sZWFuIE1hcDFUZXh0dXJlQ29vcmQzOwogICBHTGJvb2xl YW4gTWFwMVRleHR1cmVDb29yZDQ7CiAgIEdMYm9vbGVhbiBNYXAxVmVydGV4MzsKICAgR0xib29s ZWFuIE1hcDFWZXJ0ZXg0OwogICBHTGJvb2xlYW4gTWFwMkNvbG9yNDsKICAgR0xib29sZWFuIE1h cDJJbmRleDsKICAgR0xib29sZWFuIE1hcDJOb3JtYWw7CiAgIEdMYm9vbGVhbiBNYXAyVGV4dHVy ZUNvb3JkMTsKICAgR0xib29sZWFuIE1hcDJUZXh0dXJlQ29vcmQyOwogICBHTGJvb2xlYW4gTWFw MlRleHR1cmVDb29yZDM7CiAgIEdMYm9vbGVhbiBNYXAyVGV4dHVyZUNvb3JkNDsKICAgR0xib29s ZWFuIE1hcDJWZXJ0ZXgzOwogICBHTGJvb2xlYW4gTWFwMlZlcnRleDQ7CiAgIEdMYm9vbGVhbiBB dXRvTm9ybWFsOwoKICAgR0xpbnQgTWFwR3JpZDF1bjsKICAgR0xmbG9hdCBNYXBHcmlkMXUxLCBN YXBHcmlkMXUyLCBNYXBHcmlkMWR1OwogICBHTGludCBNYXBHcmlkMnVuLCBNYXBHcmlkMnZuOwog ICBHTGZsb2F0IE1hcEdyaWQydTEsIE1hcEdyaWQydTIsIE1hcEdyaWQyZHU7CiAgIEdMZmxvYXQg TWFwR3JpZDJ2MSwgTWFwR3JpZDJ2MiwgTWFwR3JpZDJkdjsKfTsKCgpzdHJ1Y3QgZ2xfZm9nX2F0 dHJpYiB7CiAgIEdMYm9vbGVhbiBFbmFibGVkOwogICBHTGZsb2F0IENvbG9yWzRdOwogICBHTGZs b2F0IERlbnNpdHk7CiAgIEdMZmxvYXQgU3RhcnQ7CiAgIEdMZmxvYXQgRW5kOwogICBHTGZsb2F0 IEluZGV4OwogICBHTGVudW0gTW9kZTsKfTsKCgpzdHJ1Y3QgZ2xfaGludF9hdHRyaWIgewoKICAg R0xlbnVtIFBlcnNwZWN0aXZlQ29ycmVjdGlvbjsKICAgR0xlbnVtIFBvaW50U21vb3RoOwogICBH TGVudW0gTGluZVNtb290aDsKICAgR0xlbnVtIFBvbHlnb25TbW9vdGg7CiAgIEdMZW51bSBGb2c7 CgoKICAgR0xlbnVtIEFsbG93RHJhd1dpbjsKICAgR0xlbnVtIEFsbG93RHJhd0ZyZzsKICAgR0xl bnVtIEFsbG93RHJhd01lbTsKICAgR0xlbnVtIFN0cmljdExpZ2h0aW5nOwoKCiAgIEdMZW51bSBD bGlwVm9sdW1lQ2xpcHBpbmc7CgoKICAgR0xlbnVtIFRleHR1cmVDb21wcmVzc2lvbjsKfTsKCgpz dHJ1Y3QgZ2xfaGlzdG9ncmFtX2F0dHJpYiB7CiAgIEdMdWludCBXaWR0aDsKICAgR0xpbnQgRm9y bWF0OwogICBHTGJvb2xlYW4gU2luazsKICAgR0x1aW50IFJlZFNpemU7CiAgIEdMdWludCBHcmVl blNpemU7CiAgIEdMdWludCBCbHVlU2l6ZTsKICAgR0x1aW50IEFscGhhU2l6ZTsKICAgR0x1aW50 IEx1bWluYW5jZVNpemU7CiAgIEdMdWludCBDb3VudFsyNTZdWzRdOwp9OwoKCnN0cnVjdCBnbF9t aW5tYXhfYXR0cmliIHsKICAgR0xlbnVtIEZvcm1hdDsKICAgR0xib29sZWFuIFNpbms7CiAgIEdM ZmxvYXQgTWluWzRdLCBNYXhbNF07Cn07CgoKc3RydWN0IGdsX2NvbnZvbHV0aW9uX2F0dHJpYiB7 CgogICBHTGVudW0gRm9ybWF0OwogICBHTGVudW0gSW50ZXJuYWxGb3JtYXQ7CiAgIEdMdWludCBX aWR0aDsKICAgR0x1aW50IEhlaWdodDsKICAgR0xmbG9hdCBGaWx0ZXJbNSAqIDUgKiA0XTsKfTsK CgpzdHJ1Y3QgZ2xfbGlnaHRfYXR0cmliIHsKICAgc3RydWN0IGdsX2xpZ2h0IExpZ2h0WzhdOwog ICBzdHJ1Y3QgZ2xfbGlnaHRtb2RlbCBNb2RlbDsKICAgc3RydWN0IGdsX21hdGVyaWFsIE1hdGVy aWFsWzJdOwogICBHTGJvb2xlYW4gRW5hYmxlZDsKICAgR0xlbnVtIFNoYWRlTW9kZWw7CiAgIEdM ZW51bSBDb2xvck1hdGVyaWFsRmFjZTsKICAgR0xlbnVtIENvbG9yTWF0ZXJpYWxNb2RlOwogICBH THVpbnQgQ29sb3JNYXRlcmlhbEJpdG1hc2s7CiAgIEdMYm9vbGVhbiBDb2xvck1hdGVyaWFsRW5h YmxlZDsKCiAgIHN0cnVjdCBnbF9saWdodCBFbmFibGVkTGlzdDsKCgogICBHTGJvb2xlYW4gTmVl ZFZlcnRpY2VzOwogICBHTHVpbnQgRmxhZ3M7CiAgIEdMZmxvYXQgQmFzZUNvbG9yWzJdWzNdOwog ICBHTHVieXRlIEJhc2VBbHBoYVsyXTsKfTsKIyA1ODggIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNh L3NyYy90eXBlcy5oIgpzdHJ1Y3QgZ2xfbGluZV9hdHRyaWIgewogICBHTGJvb2xlYW4gU21vb3Ro RmxhZzsKICAgR0xib29sZWFuIFN0aXBwbGVGbGFnOwogICBHTHVzaG9ydCBTdGlwcGxlUGF0dGVy bjsKICAgR0xpbnQgU3RpcHBsZUZhY3RvcjsKICAgR0xmbG9hdCBXaWR0aDsKfTsKCgpzdHJ1Y3Qg Z2xfbGlzdF9hdHRyaWIgewogICBHTHVpbnQgTGlzdEJhc2U7Cn07CgoKc3RydWN0IGdsX3BpeGVs X2F0dHJpYiB7CiAgIEdMZW51bSBSZWFkQnVmZmVyOwogICBHTGVudW0gRHJpdmVyUmVhZEJ1ZmZl cjsKICAgR0xmbG9hdCBSZWRCaWFzLCBSZWRTY2FsZTsKICAgR0xmbG9hdCBHcmVlbkJpYXMsIEdy ZWVuU2NhbGU7CiAgIEdMZmxvYXQgQmx1ZUJpYXMsIEJsdWVTY2FsZTsKICAgR0xmbG9hdCBBbHBo YUJpYXMsIEFscGhhU2NhbGU7CiAgIEdMYm9vbGVhbiBTY2FsZU9yQmlhc1JHQkE7CiAgIEdMZmxv YXQgRGVwdGhCaWFzLCBEZXB0aFNjYWxlOwogICBHTGludCBJbmRleFNoaWZ0LCBJbmRleE9mZnNl dDsKICAgR0xib29sZWFuIE1hcENvbG9yRmxhZzsKICAgR0xib29sZWFuIE1hcFN0ZW5jaWxGbGFn OwogICBHTGZsb2F0IFpvb21YLCBab29tWTsKICAgR0xpbnQgTWFwU3RvU3NpemU7CiAgIEdMaW50 IE1hcEl0b0lzaXplOwogICBHTGludCBNYXBJdG9Sc2l6ZTsKICAgR0xpbnQgTWFwSXRvR3NpemU7 CiAgIEdMaW50IE1hcEl0b0JzaXplOwogICBHTGludCBNYXBJdG9Bc2l6ZTsKICAgR0xpbnQgTWFw UnRvUnNpemU7CiAgIEdMaW50IE1hcEd0b0dzaXplOwogICBHTGludCBNYXBCdG9Cc2l6ZTsKICAg R0xpbnQgTWFwQXRvQXNpemU7CiAgIEdMaW50IE1hcFN0b1NbMjU2XTsKICAgR0xpbnQgTWFwSXRv SVsyNTZdOwogICBHTGZsb2F0IE1hcEl0b1JbMjU2XTsKICAgR0xmbG9hdCBNYXBJdG9HWzI1Nl07 CiAgIEdMZmxvYXQgTWFwSXRvQlsyNTZdOwogICBHTGZsb2F0IE1hcEl0b0FbMjU2XTsKICAgR0x1 Ynl0ZSBNYXBJdG9SOFsyNTZdOwogICBHTHVieXRlIE1hcEl0b0c4WzI1Nl07CiAgIEdMdWJ5dGUg TWFwSXRvQjhbMjU2XTsKICAgR0x1Ynl0ZSBNYXBJdG9BOFsyNTZdOwogICBHTGZsb2F0IE1hcFJ0 b1JbMjU2XTsKICAgR0xmbG9hdCBNYXBHdG9HWzI1Nl07CiAgIEdMZmxvYXQgTWFwQnRvQlsyNTZd OwogICBHTGZsb2F0IE1hcEF0b0FbMjU2XTsKCiAgIEdMYm9vbGVhbiBIaXN0b2dyYW1FbmFibGVk OwogICBHTGJvb2xlYW4gTWluTWF4RW5hYmxlZDsKCiAgIEdMYm9vbGVhbiBQaXhlbFRleHR1cmVF bmFibGVkOwogICBHTGVudW0gRnJhZ21lbnRSZ2JTb3VyY2U7CiAgIEdMZW51bSBGcmFnbWVudEFs cGhhU291cmNlOwoKICAgR0xmbG9hdCBQb3N0Q29sb3JNYXRyaXhTY2FsZVs0XTsKICAgR0xmbG9h dCBQb3N0Q29sb3JNYXRyaXhCaWFzWzRdOwogICBHTGJvb2xlYW4gU2NhbGVPckJpYXNSR0JBcGNt OwoKICAgR0xmbG9hdCBDb2xvclRhYmxlU2NhbGVbNF07CiAgIEdMZmxvYXQgQ29sb3JUYWJsZUJp YXNbNF07CiAgIEdMYm9vbGVhbiBDb2xvclRhYmxlRW5hYmxlZDsKICAgR0xmbG9hdCBQQ0NUc2Nh bGVbNF07CiAgIEdMZmxvYXQgUENDVGJpYXNbNF07CiAgIEdMYm9vbGVhbiBQb3N0Q29udm9sdXRp b25Db2xvclRhYmxlRW5hYmxlZDsKICAgR0xmbG9hdCBQQ01DVHNjYWxlWzRdOwogICBHTGZsb2F0 IFBDTUNUYmlhc1s0XTsKICAgR0xib29sZWFuIFBvc3RDb2xvck1hdHJpeENvbG9yVGFibGVFbmFi bGVkOwoKICAgR0xib29sZWFuIENvbnZvbHV0aW9uMURFbmFibGVkOwogICBHTGJvb2xlYW4gQ29u dm9sdXRpb24yREVuYWJsZWQ7CiAgIEdMYm9vbGVhbiBTZXBhcmFibGUyREVuYWJsZWQ7CiAgIEdM ZmxvYXQgQ29udm9sdXRpb25Cb3JkZXJDb2xvclszXVs0XTsKICAgR0xlbnVtIENvbnZvbHV0aW9u Qm9yZGVyTW9kZVszXTsKICAgR0xmbG9hdCBDb252b2x1dGlvbkZpbHRlclNjYWxlWzNdWzRdOwog ICBHTGZsb2F0IENvbnZvbHV0aW9uRmlsdGVyQmlhc1szXVs0XTsKICAgR0xmbG9hdCBQb3N0Q29u dm9sdXRpb25TY2FsZVs0XTsKICAgR0xmbG9hdCBQb3N0Q29udm9sdXRpb25CaWFzWzRdOwp9OwoK CnN0cnVjdCBnbF9wb2ludF9hdHRyaWIgewogICBHTGJvb2xlYW4gU21vb3RoRmxhZzsKICAgR0xm bG9hdCBVc2VyU2l6ZTsKICAgR0xmbG9hdCBTaXplOwogICBHTGZsb2F0IFBhcmFtc1szXTsKCiAg IEdMZmxvYXQgTWluU2l6ZTsKICAgR0xmbG9hdCBNYXhTaXplOwogICBHTGZsb2F0IFRocmVzaG9s ZDsKICAgR0xib29sZWFuIEF0dGVudWF0ZWQ7Cn07CgoKc3RydWN0IGdsX3BvbHlnb25fYXR0cmli IHsKICAgR0xlbnVtIEZyb250RmFjZTsKICAgR0xlbnVtIEZyb250TW9kZTsKICAgR0xlbnVtIEJh Y2tNb2RlOwogICBHTGJvb2xlYW4gRnJvbnRCaXQ7CiAgIEdMYm9vbGVhbiBVbmZpbGxlZDsKICAg R0xib29sZWFuIEN1bGxGbGFnOwogICBHTHVieXRlIEN1bGxCaXRzOwogICBHTGJvb2xlYW4gU21v b3RoRmxhZzsKICAgR0xib29sZWFuIFN0aXBwbGVGbGFnOwogICBHTGVudW0gQ3VsbEZhY2VNb2Rl OwogICBHTGZsb2F0IE9mZnNldEZhY3RvcjsKICAgR0xmbG9hdCBPZmZzZXRVbml0czsKICAgR0xi b29sZWFuIE9mZnNldFBvaW50OwogICBHTGJvb2xlYW4gT2Zmc2V0TGluZTsKICAgR0xib29sZWFu IE9mZnNldEZpbGw7Cn07CgoKc3RydWN0IGdsX3NjaXNzb3JfYXR0cmliIHsKICAgR0xib29sZWFu IEVuYWJsZWQ7CiAgIEdMaW50IFgsIFk7CiAgIEdMc2l6ZWkgV2lkdGgsIEhlaWdodDsKfTsKCgpz dHJ1Y3QgZ2xfc3RlbmNpbF9hdHRyaWIgewogICBHTGJvb2xlYW4gRW5hYmxlZDsKICAgR0xlbnVt IEZ1bmN0aW9uOwogICBHTGVudW0gRmFpbEZ1bmM7CiAgIEdMZW51bSBaUGFzc0Z1bmM7CiAgIEdM ZW51bSBaRmFpbEZ1bmM7CiAgIEdMc3RlbmNpbCBSZWY7CiAgIEdMc3RlbmNpbCBWYWx1ZU1hc2s7 CiAgIEdMc3RlbmNpbCBDbGVhcjsKICAgR0xzdGVuY2lsIFdyaXRlTWFzazsKfTsKIyA3ODcgIi4u Ly4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90eXBlcy5oIgp0eXBlZGVmIHZvaWQgKCp0ZXhnZW5f ZnVuYykoIHN0cnVjdCB2ZXJ0ZXhfYnVmZmVyICpWQiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHTHVpbnQgdGV4dHVyZVNldCk7CgoKCnN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCB7CiAg IF9nbHRocmVhZF9NdXRleCBNdXRleDsKICAgR0xpbnQgUmVmQ291bnQ7CiAgIEdMdWludCBOYW1l OwogICBHTHVpbnQgRGltZW5zaW9uczsKICAgR0xmbG9hdCBQcmlvcml0eTsKICAgR0x1Ynl0ZSBC b3JkZXJDb2xvcls0XTsKICAgR0xlbnVtIFdyYXBTOwogICBHTGVudW0gV3JhcFQ7CiAgIEdMZW51 bSBXcmFwUjsKICAgR0xlbnVtIE1pbkZpbHRlcjsKICAgR0xlbnVtIE1hZ0ZpbHRlcjsKICAgR0xm bG9hdCBNaW5Mb2Q7CiAgIEdMZmxvYXQgTWF4TG9kOwogICBHTGludCBCYXNlTGV2ZWw7CiAgIEdM aW50IE1heExldmVsOwogICBHTGludCBQOwogICBHTGZsb2F0IE07CiAgIEdMZmxvYXQgTWluTWFn VGhyZXNoOwogICBzdHJ1Y3QgZ2xfdGV4dHVyZV9pbWFnZSAqSW1hZ2VbMTJdOwoKCgogICBzdHJ1 Y3QgZ2xfdGV4dHVyZV9pbWFnZSAqTmVnWFsxMl07CiAgIHN0cnVjdCBnbF90ZXh0dXJlX2ltYWdl ICpQb3NZWzEyXTsKICAgc3RydWN0IGdsX3RleHR1cmVfaW1hZ2UgKk5lZ1lbMTJdOwogICBzdHJ1 Y3QgZ2xfdGV4dHVyZV9pbWFnZSAqUG9zWlsxMl07CiAgIHN0cnVjdCBnbF90ZXh0dXJlX2ltYWdl ICpOZWdaWzEyXTsKCgogICBzdHJ1Y3QgZ2xfY29sb3JfdGFibGUgUGFsZXR0ZTsKCgogICBHTGJv b2xlYW4gRGlydHk7CiAgIHZvaWQgKkRyaXZlckRhdGE7CgogICBHTGJvb2xlYW4gQ29tcGxldGU7 CiAgIFRleHR1cmVTYW1wbGVGdW5jIFNhbXBsZUZ1bmM7CiAgIHN0cnVjdCBnbF90ZXh0dXJlX29i amVjdCAqTmV4dDsKICAgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICpOZXh0RGlydHk7Cn07CgoK CgoKCnN0cnVjdCBnbF90ZXh0dXJlX3VuaXQgewogICBHTHVpbnQgRW5hYmxlZDsKICAgR0x1aW50 IFJlYWxseUVuYWJsZWQ7CgogICBHTGVudW0gRW52TW9kZTsKICAgR0xlbnVtIExhc3RFbnZNb2Rl OwoKICAgR0xlbnVtIENvbWJpbmVTb3VyY2VSR0JbM107CiAgIEdMZW51bSBDb21iaW5lU291cmNl QVszXTsKICAgR0xlbnVtIENvbWJpbmVNb2RlUkdCOwogICBHTGVudW0gQ29tYmluZU1vZGVBOwog ICBHTGVudW0gQ29tYmluZU9wZXJhbmRSR0JbM107CiAgIEdMZW51bSBDb21iaW5lT3BlcmFuZEFb M107CiAgIEdMdWludCBDb21iaW5lU2NhbGVTaGlmdFJHQjsKICAgR0x1aW50IENvbWJpbmVTY2Fs ZVNoaWZ0QTsKCiAgIEdMZmxvYXQgRW52Q29sb3JbNF07CiAgIEdMdWludCBUZXhHZW5FbmFibGVk OwogICBHTGVudW0gR2VuTW9kZVM7CiAgIEdMZW51bSBHZW5Nb2RlVDsKICAgR0xlbnVtIEdlbk1v ZGVSOwogICBHTGVudW0gR2VuTW9kZVE7CiAgIEdMdWludCBHZW5CaXRTOwogICBHTHVpbnQgR2Vu Qml0VDsKICAgR0x1aW50IEdlbkJpdFI7CiAgIEdMdWludCBHZW5CaXRROwogICBHTHVpbnQgR2Vu RmxhZ3M7CiAgIEdMZmxvYXQgT2JqZWN0UGxhbmVTWzRdOwogICBHTGZsb2F0IE9iamVjdFBsYW5l VFs0XTsKICAgR0xmbG9hdCBPYmplY3RQbGFuZVJbNF07CiAgIEdMZmxvYXQgT2JqZWN0UGxhbmVR WzRdOwogICBHTGZsb2F0IEV5ZVBsYW5lU1s0XTsKICAgR0xmbG9hdCBFeWVQbGFuZVRbNF07CiAg IEdMZmxvYXQgRXllUGxhbmVSWzRdOwogICBHTGZsb2F0IEV5ZVBsYW5lUVs0XTsKICAgdGV4Z2Vu X2Z1bmMgKmZ1bmM7CiAgIEdMdWJ5dGUgSG9sZXM7CiAgIEdMdWludCBUZXhnZW5TaXplOwogICBH TGJvb2xlYW4gQW55VHJhbnNmb3JtOwogICBHTGZsb2F0IExvZEJpYXM7CgogICBzdHJ1Y3QgZ2xf dGV4dHVyZV9vYmplY3QgKkN1cnJlbnREWzRdOwogICBzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3Qg KkN1cnJlbnRDdWJlTWFwOwoKICAgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICpDdXJyZW50Owog ICBHTHVpbnQgQ3VycmVudERpbWVuc2lvbjsKCiAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCBT YXZlZDFEOwogICBzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgU2F2ZWQyRDsKICAgc3RydWN0IGds X3RleHR1cmVfb2JqZWN0IFNhdmVkM0Q7CiAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVjdCBTYXZl ZEN1YmVNYXA7Cn07CgoKc3RydWN0IGdsX3RleHR1cmVfYXR0cmliIHsKCiAgIEdMdWludCBDdXJy ZW50VW5pdDsKICAgR0x1aW50IEN1cnJlbnRUcmFuc2Zvcm1Vbml0OwoKICAgR0x1aW50IFJlYWxs eUVuYWJsZWQ7CgogICBHTHVpbnQgTGFzdEVuYWJsZWQ7CgogICBHTGJvb2xlYW4gTmVlZE5vcm1h bHM7CiAgIEdMYm9vbGVhbiBOZWVkRXllQ29vcmRzOwoKICAgc3RydWN0IGdsX3RleHR1cmVfdW5p dCBVbml0WzJdOwoKICAgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICpQcm94eTFEOwogICBzdHJ1 Y3QgZ2xfdGV4dHVyZV9vYmplY3QgKlByb3h5MkQ7CiAgIHN0cnVjdCBnbF90ZXh0dXJlX29iamVj dCAqUHJveHkzRDsKICAgc3RydWN0IGdsX3RleHR1cmVfb2JqZWN0ICpQcm94eUN1YmVNYXA7CgoK ICAgR0xib29sZWFuIFNoYXJlZFBhbGV0dGU7CiAgIHN0cnVjdCBnbF9jb2xvcl90YWJsZSBQYWxl dHRlOwp9OwoKCgoKCnN0cnVjdCBnbF90cmFuc2Zvcm1fYXR0cmliIHsKICAgR0xlbnVtIE1hdHJp eE1vZGU7CiAgIEdMZmxvYXQgRXllVXNlclBsYW5lWzZdWzRdOwogICBHTGZsb2F0IENsaXBVc2Vy UGxhbmVbNl1bNF07CiAgIEdMYm9vbGVhbiBDbGlwRW5hYmxlZFs2XTsKICAgR0x1Ynl0ZSBBbnlD bGlwOwogICBHTGJvb2xlYW4gTm9ybWFsaXplOwogICBHTGJvb2xlYW4gUmVzY2FsZU5vcm1hbHM7 Cn07CgoKc3RydWN0IGdsX3ZpZXdwb3J0X2F0dHJpYiB7CiAgIEdMaW50IFgsIFk7CiAgIEdMc2l6 ZWkgV2lkdGgsIEhlaWdodDsKICAgR0xmbG9hdCBOZWFyLCBGYXI7CiAgIEdMbWF0cml4IFdpbmRv d01hcDsKfTsKCgoKc3RydWN0IGdsX2F0dHJpYl9ub2RlIHsKICAgR0xiaXRmaWVsZCBraW5kOwog ICB2b2lkICpkYXRhOwogICBzdHJ1Y3QgZ2xfYXR0cmliX25vZGUgKm5leHQ7Cn07CgoKCgoKCnN0 cnVjdCBnbF9waXhlbHN0b3JlX2F0dHJpYiB7CiAgIEdMaW50IEFsaWdubWVudDsKICAgR0xpbnQg Um93TGVuZ3RoOwogICBHTGludCBTa2lwUGl4ZWxzOwogICBHTGludCBTa2lwUm93czsKICAgR0xp bnQgSW1hZ2VIZWlnaHQ7CiAgIEdMaW50IFNraXBJbWFnZXM7CiAgIEdMYm9vbGVhbiBTd2FwQnl0 ZXM7CiAgIEdMYm9vbGVhbiBMc2JGaXJzdDsKfTsKCgoKCgpzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5 IHsKICAgR0xpbnQgU2l6ZTsKICAgR0xlbnVtIFR5cGU7CiAgIEdMc2l6ZWkgU3RyaWRlOwogICBH THNpemVpIFN0cmlkZUI7CiAgIHZvaWQgKlB0cjsKICAgR0xib29sZWFuIEVuYWJsZWQ7Cn07CgoK CgoKCnR5cGVkZWYgdm9pZCAoKnRyYW5zXzF1aV9mdW5jKShHTHVpbnQgKnRvLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdMdWludCBuICk7Cgp0eXBlZGVmIHZvaWQgKCp0cmFuc18xdWJf ZnVuYykoR0x1Ynl0ZSAqdG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0x1aW50IHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG4g KTsKCnR5cGVkZWYgdm9pZCAoKnRyYW5zXzR1Yl9mdW5jKShHTHVieXRlICgqdG8pWzRdLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAq ZnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBuICk7Cgp0eXBlZGVmIHZvaWQgKCp0cmFu c180Zl9mdW5jKShHTGZsb2F0ICgqdG8pWzRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHTHVpbnQgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM dWludCBuICk7Cgp0eXBlZGVmIHZvaWQgKCp0cmFuc18zZl9mdW5jKShHTGZsb2F0ICgqdG8pWzNd LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2Fy cmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBuICk7CgoKCnR5cGVkZWYgdm9pZCAo KnRyYW5zX2VsdF8xdWlfZnVuYykoR0x1aW50ICp0bywKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR0x1aW50ICplbHRzLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMdWludCBtYXRjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHTHVpbnQgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50 IG4gKTsKCnR5cGVkZWYgdm9pZCAoKnRyYW5zX2VsdF8xdWJfZnVuYykoR0x1Ynl0ZSAqdG8sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9h cnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZs YWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZWx0cywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWF0Y2gsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdMdWludCBuICk7Cgp0eXBlZGVmIHZvaWQgKCp0cmFuc19lbHRfNHVi X2Z1bmMpKEdMdWJ5dGUgKCp0bylbNF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdMdWludCAqZWx0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHTHVpbnQgbWF0Y2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50 IHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBuICk7Cgp0 eXBlZGVmIHZvaWQgKCp0cmFuc19lbHRfNGZfZnVuYykoR0xmbG9hdCAoKnRvKVs0XSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkg KmZyb20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICplbHRzLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hdGNoLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR0x1aW50IG4gKTsKCnR5cGVkZWYgdm9pZCAoKnRyYW5zX2VsdF8zZl9mdW5jKShHTGZs b2F0ICgqdG8pWzNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdMdWludCAqZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp bnQgKmVsdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWF0Y2gs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbiApOwojIDEwODggIi4uLy4uLy4uLy4u L2V4dHJhcy9NZXNhL3NyYy90eXBlcy5oIgpzdHJ1Y3QgZ2xfYXJyYXlfYXR0cmliIHsKCgoKCgog ICBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5IFZlcnRleDsKICAgc3RydWN0IGdsX2NsaWVudF9hcnJh eSBOb3JtYWw7CiAgIHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgQ29sb3I7CiAgIHN0cnVjdCBnbF9j bGllbnRfYXJyYXkgSW5kZXg7CiAgIHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgVGV4Q29vcmRbMl07 CiAgIHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgRWRnZUZsYWc7CgogICB0cmFuc180Zl9mdW5jIFZl cnRleEZ1bmM7CiAgIHRyYW5zXzNmX2Z1bmMgTm9ybWFsRnVuYzsKICAgdHJhbnNfNHViX2Z1bmMg Q29sb3JGdW5jOwogICB0cmFuc18xdWlfZnVuYyBJbmRleEZ1bmM7CiAgIHRyYW5zXzRmX2Z1bmMg VGV4Q29vcmRGdW5jWzJdOwogICB0cmFuc18xdWJfZnVuYyBFZGdlRmxhZ0Z1bmM7CgogICB0cmFu c19lbHRfNGZfZnVuYyBWZXJ0ZXhFbHRGdW5jOwogICB0cmFuc19lbHRfM2ZfZnVuYyBOb3JtYWxF bHRGdW5jOwogICB0cmFuc19lbHRfNHViX2Z1bmMgQ29sb3JFbHRGdW5jOwogICB0cmFuc19lbHRf MXVpX2Z1bmMgSW5kZXhFbHRGdW5jOwogICB0cmFuc19lbHRfNGZfZnVuYyBUZXhDb29yZEVsdEZ1 bmNbMl07CiAgIHRyYW5zX2VsdF8xdWJfZnVuYyBFZGdlRmxhZ0VsdEZ1bmM7CgogICBHTGludCBU ZXhDb29yZEludGVybGVhdmVGYWN0b3I7CiAgIEdMaW50IEFjdGl2ZVRleHR1cmU7CgogICBHTHVp bnQgTG9ja0ZpcnN0OwogICBHTHVpbnQgTG9ja0NvdW50OwoKICAgR0x1aW50IEZsYWdbKCgyMTYg KyAzKSArICgoMiAqICg2ICsgNikpKzEpKV07CiAgIEdMdWludCBGbGFnczsKICAgR0x1aW50IFN1 bW1hcnk7CiAgIEdMdWludCBOZXdBcnJheVN0YXRlOwoKfTsKCgoKCgpzdHJ1Y3QgZ2xfZmFsbGJh Y2tfYXJyYXlzIHsKICAgc3RydWN0IGdsX2NsaWVudF9hcnJheSBOb3JtYWw7CiAgIHN0cnVjdCBn bF9jbGllbnRfYXJyYXkgQ29sb3I7CiAgIHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgSW5kZXg7CiAg IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgVGV4Q29vcmRbMl07CiAgIHN0cnVjdCBnbF9jbGllbnRf YXJyYXkgRWRnZUZsYWc7Cn07CiMgMTE2MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5 cGVzLmgiCnN0cnVjdCBnbF9wcmltX3N0YXRlIHsKICAgR0x1aW50IHYwLCB2MTsKICAgR0xib29s ZWFuIGRyYXc7CiAgIEdMYm9vbGVhbiBmaW5pc2hfbG9vcDsKICAgc3RydWN0IGdsX3ByaW1fc3Rh dGUgKm5leHQ7Cn07CgoKdHlwZWRlZiB2b2lkICgqdmJfZnVuYykoIHN0cnVjdCB2ZXJ0ZXhfYnVm ZmVyICpWQiApOwp0eXBlZGVmIHZvaWQgKCpjdHhfZnVuYykoIEdMY29udGV4dCAqICk7CgpzdHJ1 Y3QgZ2xfcGlwZWxpbmVfc3RhZ2UgewogICBjb25zdCBjaGFyICpuYW1lOwogICBHTHVpbnQgb3Bz OwogICBHTHVpbnQgdHlwZTsKICAgR0x1aW50IHNwZWNpYWw7CiAgIEdMdWludCBzdGF0ZV9jaGFu Z2U7CiAgIEdMdWludCBjdmFfc3RhdGVfY2hhbmdlOwogICBHTHVpbnQgZWx0X2ZvcmJpZGRlbl9p bnB1dHM7CiAgIEdMdWludCBwcmVfZm9yYmlkZGVuX2lucHV0czsKICAgR0x1aW50IGFjdGl2ZTsK ICAgR0x1aW50IGlucHV0czsKICAgR0x1aW50IG91dHB1dHM7CiAgIHZvaWQgKCpjaGVjaykoIEdM Y29udGV4dCAqY3R4LCBzdHJ1Y3QgZ2xfcGlwZWxpbmVfc3RhZ2UgKiApOwogICB2b2lkICgqcnVu KSggc3RydWN0IHZlcnRleF9idWZmZXIgKlZCICk7Cn07CgoKc3RydWN0IGdsX3BpcGVsaW5lIHsK ICAgR0x1aW50IHN0YXRlX2NoYW5nZTsKICAgR0x1aW50IGN2YV9zdGF0ZV9jaGFuZ2U7CiAgIEdM dWludCBmb3JiaWRkZW5faW5wdXRzOwogICBHTHVpbnQgb3BzOwogICBHTHVpbnQgY2hhbmdlZF9v cHM7CiAgIEdMdWludCBpbnB1dHM7CiAgIEdMdWludCBvdXRwdXRzOwogICBHTHVpbnQgbmV3X2lu cHV0czsKICAgR0x1aW50IG5ld19vdXRwdXRzOwogICBHTHVpbnQgZmFsbGJhY2s7CiAgIEdMdWlu dCB0eXBlOwogICBHTHVpbnQgcGlwZWxpbmVfdmFsaWQ6MTsKICAgR0x1aW50IGRhdGFfdmFsaWQ6 MTsKICAgR0x1aW50IGNvcHlfdHJhbnNmb3JtZWRfZGF0YToxOwogICBHTHVpbnQgcmVwbGF5X2Nv cGllZF92ZXJ0aWNlczoxOwogICBHTHVpbnQgbmV3X3N0YXRlOwogICBzdHJ1Y3QgZ2xfcGlwZWxp bmVfc3RhZ2UgKnN0YWdlc1szMF07Cn07CgoKc3RydWN0IGdsX2N2YSB7CiAgIHN0cnVjdCBnbF9w aXBlbGluZSBwcmU7CiAgIHN0cnVjdCBnbF9waXBlbGluZSBlbHQ7CgogICBzdHJ1Y3QgZ2xfY2xp ZW50X2FycmF5IEVsdDsKICAgdHJhbnNfMXVpX2Z1bmMgRWx0RnVuYzsKCiAgIHN0cnVjdCB2ZXJ0 ZXhfYnVmZmVyICpWQjsKICAgc3RydWN0IHZlcnRleF9hcnJheXMgdjsKICAgc3RydWN0IHZlcnRl eF9kYXRhIHN0b3JlOwoKICAgR0x1aW50IGVsdF9jb3VudDsKICAgR0xlbnVtIGVsdF9tb2RlOwog ICBHTHVpbnQgZWx0X3NpemU7CgogICBHTHVpbnQgZm9yYmlkZGVuX2lucHV0czsKICAgR0x1aW50 IG9yZmxhZzsKICAgR0x1aW50IG1lcmdlOwoKICAgR0x1aW50IGxvY2tfY2hhbmdlZDsKICAgR0x1 aW50IGxhc3Rfb3JmbGFnOwogICBHTHVpbnQgbGFzdF9hcnJheV9mbGFnczsKICAgR0x1aW50IGxh c3RfYXJyYXlfbmV3X3N0YXRlOwp9OwoKCnN0cnVjdCBnbF9mZWVkYmFjayB7CiAgIEdMZW51bSBU eXBlOwogICBHTHVpbnQgTWFzazsKICAgR0xmbG9hdCAqQnVmZmVyOwogICBHTHVpbnQgQnVmZmVy U2l6ZTsKICAgR0x1aW50IENvdW50Owp9OwoKCgpzdHJ1Y3QgZ2xfc2VsZWN0aW9uIHsKICAgR0x1 aW50ICpCdWZmZXI7CiAgIEdMdWludCBCdWZmZXJTaXplOwogICBHTHVpbnQgQnVmZmVyQ291bnQ7 CiAgIEdMdWludCBIaXRzOwogICBHTHVpbnQgTmFtZVN0YWNrRGVwdGg7CiAgIEdMdWludCBOYW1l U3RhY2tbNjRdOwogICBHTGJvb2xlYW4gSGl0RmxhZzsKICAgR0xmbG9hdCBIaXRNaW5aLCBIaXRN YXhaOwp9OwoKCgoKCgpzdHJ1Y3QgZ2xfMWRfbWFwIHsKICAgR0x1aW50IE9yZGVyOwogICBHTGZs b2F0IHUxLCB1MiwgZHU7CiAgIEdMZmxvYXQgKlBvaW50czsKfTsKCgoKCgpzdHJ1Y3QgZ2xfMmRf bWFwIHsKICAgR0x1aW50IFVvcmRlcjsKICAgR0x1aW50IFZvcmRlcjsKICAgR0xmbG9hdCB1MSwg dTIsIGR1OwogICBHTGZsb2F0IHYxLCB2MiwgZHY7CiAgIEdMZmxvYXQgKlBvaW50czsKfTsKCgoK CgpzdHJ1Y3QgZ2xfZXZhbHVhdG9ycyB7CgogICBzdHJ1Y3QgZ2xfMWRfbWFwIE1hcDFWZXJ0ZXgz OwogICBzdHJ1Y3QgZ2xfMWRfbWFwIE1hcDFWZXJ0ZXg0OwogICBzdHJ1Y3QgZ2xfMWRfbWFwIE1h cDFJbmRleDsKICAgc3RydWN0IGdsXzFkX21hcCBNYXAxQ29sb3I0OwogICBzdHJ1Y3QgZ2xfMWRf bWFwIE1hcDFOb3JtYWw7CiAgIHN0cnVjdCBnbF8xZF9tYXAgTWFwMVRleHR1cmUxOwogICBzdHJ1 Y3QgZ2xfMWRfbWFwIE1hcDFUZXh0dXJlMjsKICAgc3RydWN0IGdsXzFkX21hcCBNYXAxVGV4dHVy ZTM7CiAgIHN0cnVjdCBnbF8xZF9tYXAgTWFwMVRleHR1cmU0OwoKCiAgIHN0cnVjdCBnbF8yZF9t YXAgTWFwMlZlcnRleDM7CiAgIHN0cnVjdCBnbF8yZF9tYXAgTWFwMlZlcnRleDQ7CiAgIHN0cnVj dCBnbF8yZF9tYXAgTWFwMkluZGV4OwogICBzdHJ1Y3QgZ2xfMmRfbWFwIE1hcDJDb2xvcjQ7CiAg IHN0cnVjdCBnbF8yZF9tYXAgTWFwMk5vcm1hbDsKICAgc3RydWN0IGdsXzJkX21hcCBNYXAyVGV4 dHVyZTE7CiAgIHN0cnVjdCBnbF8yZF9tYXAgTWFwMlRleHR1cmUyOwogICBzdHJ1Y3QgZ2xfMmRf bWFwIE1hcDJUZXh0dXJlMzsKICAgc3RydWN0IGdsXzJkX21hcCBNYXAyVGV4dHVyZTQ7Cn07CgoK CgoKCnN0cnVjdCBnbF9zaGFyZWRfc3RhdGUgewogICBfZ2x0aHJlYWRfTXV0ZXggTXV0ZXg7CiAg IEdMaW50IFJlZkNvdW50OwogICBzdHJ1Y3QgX21lc2FfSGFzaFRhYmxlICpEaXNwbGF5TGlzdDsK ICAgc3RydWN0IF9tZXNhX0hhc2hUYWJsZSAqVGV4T2JqZWN0czsKCgoKICAgc3RydWN0IGdsX3Rl eHR1cmVfb2JqZWN0ICpUZXhPYmplY3RMaXN0OwogICBzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3Qg KkRpcnR5VGV4T2JqTGlzdDsKCgogICBzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgKkRlZmF1bHRE WzRdOwogICBzdHJ1Y3QgZ2xfdGV4dHVyZV9vYmplY3QgKkRlZmF1bHRDdWJlTWFwOwoKICAgdm9p ZCAqRHJpdmVyRGF0YTsKfTsKIyAxMzM3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHlw ZXMuaCIKc3RydWN0IGdsX3Zpc3VhbCB7CiAgIEdMYm9vbGVhbiBSR0JBZmxhZzsKICAgR0xib29s ZWFuIERCZmxhZzsKICAgR0xib29sZWFuIFN0ZXJlb0ZsYWc7CgogICBHTGludCBSZWRCaXRzOwog ICBHTGludCBHcmVlbkJpdHM7CiAgIEdMaW50IEJsdWVCaXRzOwogICBHTGludCBBbHBoYUJpdHM7 CgogICBHTGludCBJbmRleEJpdHM7CgogICBHTGludCBBY2N1bVJlZEJpdHM7CiAgIEdMaW50IEFj Y3VtR3JlZW5CaXRzOwogICBHTGludCBBY2N1bUJsdWVCaXRzOwogICBHTGludCBBY2N1bUFscGhh Qml0czsKICAgR0xpbnQgRGVwdGhCaXRzOwogICBHTGludCBTdGVuY2lsQml0czsKICAgR0xpbnQg TnVtU2FtcGxlczsKCiAgIEdMdWludCBEZXB0aE1heDsKICAgR0xmbG9hdCBEZXB0aE1heEY7Cn07 CiMgMTM2OSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5cGVzLmgiCnN0cnVjdCBnbF9m cmFtZV9idWZmZXIgewogICBHTHZpc3VhbCAqVmlzdWFsOwoKICAgR0xpbnQgV2lkdGgsIEhlaWdo dDsKCiAgIEdMYm9vbGVhbiBVc2VTb2Z0d2FyZURlcHRoQnVmZmVyOwogICBHTGJvb2xlYW4gVXNl U29mdHdhcmVBY2N1bUJ1ZmZlcjsKICAgR0xib29sZWFuIFVzZVNvZnR3YXJlU3RlbmNpbEJ1ZmZl cjsKICAgR0xib29sZWFuIFVzZVNvZnR3YXJlQWxwaGFCdWZmZXJzOwoKCiAgIEdMdm9pZCAqRGVw dGhCdWZmZXI7CgoKICAgR0xzdGVuY2lsICpTdGVuY2lsOwoKCiAgIEdMYWNjdW0gKkFjY3VtOwoK CiAgIEdMdWJ5dGUgKkZyb250TGVmdEFscGhhOwogICBHTHVieXRlICpCYWNrTGVmdEFscGhhOwog ICBHTHVieXRlICpGcm9udFJpZ2h0QWxwaGE7CiAgIEdMdWJ5dGUgKkJhY2tSaWdodEFscGhhOwog ICBHTHVieXRlICpBbHBoYTsKCgogICBHTGludCBYbWluLCBYbWF4LCBZbWluLCBZbWF4Owp9OwoK CgoKCnN0cnVjdCBnbF9jb25zdGFudHMgewogICBHTGludCBNYXhUZXh0dXJlU2l6ZTsKICAgR0xp bnQgTWF4Q3ViZVRleHR1cmVTaXplOwogICBHTGludCBNYXhUZXh0dXJlTGV2ZWxzOwogICBHTHVp bnQgTWF4VGV4dHVyZVVuaXRzOwogICBHTHVpbnQgTWF4QXJyYXlMb2NrU2l6ZTsKICAgR0xpbnQg U3ViUGl4ZWxCaXRzOwogICBHTGZsb2F0IE1pblBvaW50U2l6ZSwgTWF4UG9pbnRTaXplOwogICBH TGZsb2F0IE1pblBvaW50U2l6ZUFBLCBNYXhQb2ludFNpemVBQTsKICAgR0xmbG9hdCBQb2ludFNp emVHcmFudWxhcml0eTsKICAgR0xmbG9hdCBNaW5MaW5lV2lkdGgsIE1heExpbmVXaWR0aDsKICAg R0xmbG9hdCBNaW5MaW5lV2lkdGhBQSwgTWF4TGluZVdpZHRoQUE7CiAgIEdMZmxvYXQgTGluZVdp ZHRoR3JhbnVsYXJpdHk7CiAgIEdMdWludCBOdW1BdXhCdWZmZXJzOwogICBHTHVpbnQgTWF4Q29s b3JUYWJsZVNpemU7CiAgIEdMdWludCBNYXhDb252b2x1dGlvbldpZHRoOwogICBHTHVpbnQgTWF4 Q29udm9sdXRpb25IZWlnaHQ7CiAgIEdMdWludCBOdW1Db21wcmVzc2VkVGV4dHVyZUZvcm1hdHM7 CiAgIEdMZW51bSBDb21wcmVzc2VkVGV4dHVyZUZvcm1hdHNbMjVdOwp9OwoKCgoKCnN0cnVjdCBl eHRlbnNpb247CnN0cnVjdCBnbF9leHRlbnNpb25zIHsKICAgY2hhciAqZXh0X3N0cmluZzsKICAg c3RydWN0IGV4dGVuc2lvbiAqZXh0X2xpc3Q7CgogICBHTGJvb2xlYW4gSGF2ZVRleHR1cmVFbnZB ZGQ7CiAgIEdMYm9vbGVhbiBIYXZlVGV4dHVyZUVudkNvbWJpbmU7CiAgIEdMYm9vbGVhbiBIYXZl VGV4dHVyZUVudkRvdDM7CiAgIEdMYm9vbGVhbiBIYXZlVGV4dHVyZUxvZEJpYXM7CiAgIEdMYm9v bGVhbiBIYXZlSHBPY2NsdXNpb25UZXN0OwogICBHTGJvb2xlYW4gSGF2ZVRleHR1cmVDdWJlTWFw OwogICBHTGJvb2xlYW4gSGF2ZVRleHR1cmVDb21wcmVzc2lvbjsKICAgR0xib29sZWFuIEhhdmVU ZXh0dXJlQ29tcHJlc3Npb25TM1RDOwogICBHTGJvb2xlYW4gSGF2ZVRleHR1cmVDb21wcmVzc2lv bkZYVDE7CiAgIEdMYm9vbGVhbiBIYXZlQmxlbmRTcXVhcmU7Cn07CiMgMTY3NSAiLi4vLi4vLi4v Li4vZXh0cmFzL01lc2Evc3JjL3R5cGVzLmgiCnR5cGVkZWYgdm9pZCAoKmdsX3NoYWRlX2Z1bmMp KCBzdHJ1Y3QgdmVydGV4X2J1ZmZlciAqVkIgKTsKCgoKCgoKdW5pb24gbm9kZTsKdHlwZWRlZiB1 bmlvbiBub2RlIE5vZGU7CiMgMTc5NSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3R5cGVz LmgiCnR5cGVkZWYgdm9pZCAoKnZiX3RyYW5zZm9ybV9mdW5jKSggR0xjb250ZXh0ICpjdHggKTsK Cgp0eXBlZGVmIEdMdWludCAoKmNsaXBfbGluZV9mdW5jKSggc3RydWN0IHZlcnRleF9idWZmZXIg KlZCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICppLCBHTHVpbnQg KmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVieXRlIG1hc2spOwp0eXBl ZGVmIEdMdWludCAoKmNsaXBfcG9seV9mdW5jKSggc3RydWN0IHZlcnRleF9idWZmZXIgKlZCLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG4sIEdMdWludCB2bGlzdFtd LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSBtYXNrICk7CgoKCgoK c3RydWN0IGdsX2NvbnRleHQgewoKICAgc3RydWN0IGdsX3NoYXJlZF9zdGF0ZSAqU2hhcmVkOwoK CiAgIHN0cnVjdCBfZ2xhcGlfdGFibGUgKlNhdmU7CiAgIHN0cnVjdCBfZ2xhcGlfdGFibGUgKkV4 ZWM7CiAgIHN0cnVjdCBfZ2xhcGlfdGFibGUgKkN1cnJlbnREaXNwYXRjaDsKCiAgIEdMdmlzdWFs ICpWaXN1YWw7CiAgIEdMZnJhbWVidWZmZXIgKkRyYXdCdWZmZXI7CiAgIEdMZnJhbWVidWZmZXIg KlJlYWRCdWZmZXI7CgoKICAgc3RydWN0IGRkX2Z1bmN0aW9uX3RhYmxlIERyaXZlcjsKCiAgIHRy aWFuZ2xlX2Z1bmMgVHJpYW5nbGVGdW5jOwogICBxdWFkX2Z1bmMgUXVhZEZ1bmM7CiAgIHRyaWFu Z2xlX2Z1bmMgQ2xpcHBlZFRyaWFuZ2xlRnVuYzsKICAgY2xpcF9wb2x5X2Z1bmMgKnBvbHlfY2xp cF90YWI7CiAgIGNsaXBfbGluZV9mdW5jICpsaW5lX2NsaXBfdGFiOwoKICAgdm9pZCAqRHJpdmVy Q3R4OwogICB2b2lkICpEcml2ZXJNZ3JDdHg7CgoKICAgc3RydWN0IGdsX2NvbnN0YW50cyBDb25z dDsKCgogICBHTG1hdHJpeCBNb2RlbFZpZXc7CiAgIEdMdWludCBNb2RlbFZpZXdTdGFja0RlcHRo OwogICBHTG1hdHJpeCBNb2RlbFZpZXdTdGFja1szMiAtIDFdOwoKCiAgIEdMbWF0cml4IFByb2pl Y3Rpb25NYXRyaXg7CiAgIEdMdWludCBQcm9qZWN0aW9uU3RhY2tEZXB0aDsKICAgR0xtYXRyaXgg UHJvamVjdGlvblN0YWNrWzMyIC0gMV07CiAgIEdMZmxvYXQgTmVhckZhclN0YWNrWzMyXVsyXTsK CgogICBHTG1hdHJpeCBNb2RlbFByb2plY3RNYXRyaXg7CgoKICAgR0xtYXRyaXggTW9kZWxQcm9q ZWN0V2luTWF0cml4OwogICBHTGJvb2xlYW4gTW9kZWxQcm9qZWN0V2luTWF0cml4VXB0b2RhdGU7 CgoKICAgR0xtYXRyaXggVGV4dHVyZU1hdHJpeFsyXTsKICAgR0x1aW50IFRleHR1cmVTdGFja0Rl cHRoWzJdOwogICBHTG1hdHJpeCBUZXh0dXJlU3RhY2tbMl1bMTAgLSAxXTsKCgogICBHTG1hdHJp eCBDb2xvck1hdHJpeDsKICAgR0x1aW50IENvbG9yU3RhY2tEZXB0aDsKICAgR0xtYXRyaXggQ29s b3JTdGFja1s0IC0gMV07CgoKICAgR0x1aW50IENhbGxEZXB0aDsKICAgR0xib29sZWFuIEV4ZWN1 dGVGbGFnOwogICBHTGJvb2xlYW4gQ29tcGlsZUZsYWc7CiAgIEdMYm9vbGVhbiBDb21waWxlQ1ZB RmxhZzsKICAgTm9kZSAqQ3VycmVudExpc3RQdHI7CiAgIEdMdWludCBDdXJyZW50TGlzdE51bTsK ICAgTm9kZSAqQ3VycmVudEJsb2NrOwogICBHTHVpbnQgQ3VycmVudFBvczsKCgogICBzdHJ1Y3Qg Z2xfZXh0ZW5zaW9ucyBFeHRlbnNpb25zOwoKCgoKCiAgIHN0cnVjdCBnbF9waXBlbGluZV9zdGFn ZSBQaXBlbGluZVN0YWdlWzMwXTsKICAgR0x1aW50IE5yUGlwZWxpbmVTdGFnZXM7CgoKICAgc3Ry dWN0IGdsX2N2YSBDVkE7CgoKICAgR0x1aW50IEF0dHJpYlN0YWNrRGVwdGg7CiAgIHN0cnVjdCBn bF9hdHRyaWJfbm9kZSAqQXR0cmliU3RhY2tbMTZdOwoKCiAgIHN0cnVjdCBnbF9hY2N1bV9hdHRy aWIgQWNjdW07CiAgIHN0cnVjdCBnbF9jb2xvcmJ1ZmZlcl9hdHRyaWIgQ29sb3I7CiAgIHN0cnVj dCBnbF9jdXJyZW50X2F0dHJpYiBDdXJyZW50OwogICBzdHJ1Y3QgZ2xfZGVwdGhidWZmZXJfYXR0 cmliIERlcHRoOwogICBzdHJ1Y3QgZ2xfZXZhbF9hdHRyaWIgRXZhbDsKICAgc3RydWN0IGdsX2Zv Z19hdHRyaWIgRm9nOwogICBzdHJ1Y3QgZ2xfaGludF9hdHRyaWIgSGludDsKICAgc3RydWN0IGds X2xpZ2h0X2F0dHJpYiBMaWdodDsKICAgc3RydWN0IGdsX2xpbmVfYXR0cmliIExpbmU7CiAgIHN0 cnVjdCBnbF9saXN0X2F0dHJpYiBMaXN0OwogICBzdHJ1Y3QgZ2xfcGl4ZWxfYXR0cmliIFBpeGVs OwogICBzdHJ1Y3QgZ2xfcG9pbnRfYXR0cmliIFBvaW50OwogICBzdHJ1Y3QgZ2xfcG9seWdvbl9h dHRyaWIgUG9seWdvbjsKICAgR0x1aW50IFBvbHlnb25TdGlwcGxlWzMyXTsKICAgc3RydWN0IGds X3NjaXNzb3JfYXR0cmliIFNjaXNzb3I7CiAgIHN0cnVjdCBnbF9zdGVuY2lsX2F0dHJpYiBTdGVu Y2lsOwogICBzdHJ1Y3QgZ2xfdGV4dHVyZV9hdHRyaWIgVGV4dHVyZTsKICAgc3RydWN0IGdsX3Ry YW5zZm9ybV9hdHRyaWIgVHJhbnNmb3JtOwogICBzdHJ1Y3QgZ2xfdmlld3BvcnRfYXR0cmliIFZp ZXdwb3J0OwoKCiAgIHN0cnVjdCBnbF9oaXN0b2dyYW1fYXR0cmliIEhpc3RvZ3JhbTsKICAgc3Ry dWN0IGdsX21pbm1heF9hdHRyaWIgTWluTWF4OwogICBzdHJ1Y3QgZ2xfY29udm9sdXRpb25fYXR0 cmliIENvbnZvbHV0aW9uMUQ7CiAgIHN0cnVjdCBnbF9jb252b2x1dGlvbl9hdHRyaWIgQ29udm9s dXRpb24yRDsKICAgc3RydWN0IGdsX2NvbnZvbHV0aW9uX2F0dHJpYiBTZXBhcmFibGUyRDsKCgog ICBHTHVpbnQgQ2xpZW50QXR0cmliU3RhY2tEZXB0aDsKICAgc3RydWN0IGdsX2F0dHJpYl9ub2Rl ICpDbGllbnRBdHRyaWJTdGFja1sxNl07CgoKICAgc3RydWN0IGdsX2FycmF5X2F0dHJpYiBBcnJh eTsKICAgc3RydWN0IGdsX3BpeGVsc3RvcmVfYXR0cmliIFBhY2s7CiAgIHN0cnVjdCBnbF9waXhl bHN0b3JlX2F0dHJpYiBVbnBhY2s7CgogICBzdHJ1Y3QgZ2xfZXZhbHVhdG9ycyBFdmFsTWFwOwog ICBzdHJ1Y3QgZ2xfZmVlZGJhY2sgRmVlZGJhY2s7CiAgIHN0cnVjdCBnbF9zZWxlY3Rpb24gU2Vs ZWN0OwoKICAgc3RydWN0IGdsX2NvbG9yX3RhYmxlIENvbG9yVGFibGU7CiAgIHN0cnVjdCBnbF9j b2xvcl90YWJsZSBQcm94eUNvbG9yVGFibGU7CiAgIHN0cnVjdCBnbF9jb2xvcl90YWJsZSBQb3N0 Q29udm9sdXRpb25Db2xvclRhYmxlOwogICBzdHJ1Y3QgZ2xfY29sb3JfdGFibGUgUHJveHlQb3N0 Q29udm9sdXRpb25Db2xvclRhYmxlOwogICBzdHJ1Y3QgZ2xfY29sb3JfdGFibGUgUG9zdENvbG9y TWF0cml4Q29sb3JUYWJsZTsKICAgc3RydWN0IGdsX2NvbG9yX3RhYmxlIFByb3h5UG9zdENvbG9y TWF0cml4Q29sb3JUYWJsZTsKCgogICBHTGJvb2xlYW4gSW50ZWdlckFjY3VtTW9kZTsKICAgR0xm bG9hdCBJbnRlZ2VyQWNjdW1TY2FsZXI7CgogICBzdHJ1Y3QgZ2xfZmFsbGJhY2tfYXJyYXlzIEZh bGxiYWNrOwoKICAgR0xlbnVtIEVycm9yVmFsdWU7CgoKICAgR0x1aW50IE5ld1N0YXRlOwogICBH THVpbnQgRW5hYmxlZDsKICAgR0xlbnVtIFJlbmRlck1vZGU7CiAgIEdMdWludCBTdGlwcGxlQ291 bnRlcjsKICAgR0x1aW50IFJhc3Rlck1hc2s7CiAgIEdMdWludCBUcmlhbmdsZUNhcHM7CiAgIEdM dWludCBJbmRpcmVjdFRyaWFuZ2xlczsKICAgR0xmbG9hdCBQb2x5Z29uWm9mZnNldDsKICAgR0xm bG9hdCBMaW5lWm9mZnNldDsKICAgR0xmbG9hdCBQb2ludFpvZmZzZXQ7CiAgIEdMYm9vbGVhbiBO ZWVkTm9ybWFsczsKICAgR0x1aW50IEZvZ01vZGU7CgogICBHTGJvb2xlYW4gRG9WaWV3cG9ydE1h cHBpbmc7CgogICBHTHVpbnQgUmVuZGVyRmxhZ3M7CgogICBHTHVpbnQgUmVxdWlyZVdyaXRlYWJs ZUZsYWdzOwoKCiAgIGNsaXBfaW50ZXJwX2Z1bmMgQ2xpcEludGVycEZ1bmM7CiAgIEdMdWludCBD bGlwVGFiTWFzazsKCiAgIG5vcm1hbF9mdW5jICpOb3JtYWxUcmFuc2Zvcm07CgoKICAgZ2xfc2hh ZGVfZnVuYyAqc2hhZGVfZnVuY190YWI7CgogICBHTGZsb2F0IEV5ZVpEaXJbM107CiAgIEdMZmxv YXQgcmVzY2FsZV9mYWN0b3I7CgogICBHTGZsb2F0IHZiX3Jlc2NhbGVfZmFjdG9yOwogICBHTG1h dHJpeCAqdmJfcHJval9tYXRyaXg7CgogICBHTHVieXRlIEFsbG93VmVydGV4Q3VsbDsKICAgR0xi b29sZWFuIE5lZWRFeWVDb29yZHM7CiAgIEdMYm9vbGVhbiBOZWVkRXllTm9ybWFsczsKICAgR0xi b29sZWFuIE5lZWRDbGlwQ29vcmRzOwoKICAgR0xmbG9hdCBiYWNrZmFjZV9zaWduOwoKICAgR0xi b29sZWFuIE9jY2x1c2lvblJlc3VsdDsKICAgR0xib29sZWFuIE9jY2x1c2lvblJlc3VsdFNhdmVk OwoKCiAgIHN0cnVjdCBpbW1lZGlhdGUgKmlucHV0OwoKCgoKICAgc3RydWN0IGltbWVkaWF0ZSAq ZnJlZWRfaW1fcXVldWU7CiAgIEdMdWludCBucl9pbV9xdWV1ZWQ7CgoKCiAgIHN0cnVjdCB2ZXJ0 ZXhfYnVmZmVyICpWQjsKCgogICBzdHJ1Y3QgcGl4ZWxfYnVmZmVyKiBQQjsKCiAgIHN0cnVjdCBn bF9zaGluZV90YWIgKlNoaW5lVGFibGVbNF07CiAgIHN0cnVjdCBnbF9zaGluZV90YWIgKlNoaW5l VGFiTGlzdDsKCgogICBHTGJvb2xlYW4gQ2F0Y2hTaWduYWxzOwoKCiAgIEdMYm9vbGVhbiBOb1Jh c3RlcjsKICAgR0xib29sZWFuIEZpcnN0VGltZUN1cnJlbnQ7CgoKICAgR0xib29sZWFuIE5vRGl0 aGVyOwoKCgoKfTsKIyAyMDQwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHlwZXMuaCIK ZW51bSBfdmVyYm9zZSB7CiAgICAgICAgVkVSQk9TRV9WQVJSQVkgPSAweDEsCiAgICAgICAgVkVS Qk9TRV9URVhUVVJFID0gMHgyLAogICAgICAgIFZFUkJPU0VfSU1NRURJQVRFID0gMHg0LAogICAg ICAgIFZFUkJPU0VfUElQRUxJTkUgPSAweDgsCiAgICAgICAgVkVSQk9TRV9EUklWRVIgPSAweDEw LAogICAgICAgIFZFUkJPU0VfU1RBVEUgPSAweDIwLAogICAgICAgIFZFUkJPU0VfQVBJID0gMHg0 MCwKICAgICAgICBWRVJCT1NFX1RSSUFOR0xFX0NIRUNLUyA9IDB4ODAsCiAgICAgICAgVkVSQk9T RV9DVUxMID0gMHgxMDAsCiAgICAgICAgVkVSQk9TRV9ESVNQTEFZX0xJU1QgPSAweDIwMCwKICAg ICAgICBWRVJCT1NFX0xJR0hUSU5HID0gMHg0MDAKfTsKCgplbnVtIF9kZWJ1ZyB7CiAgICAgICAg REVCVUdfQUxXQVlTX0ZMVVNIID0gMHgxCn07CgoKZXh0ZXJuIHZvaWQgZ2xfZmx1c2hfdmIoIEdM Y29udGV4dCAqY3R4LCBjb25zdCBjaGFyICp3aGVyZSApOwoKZXh0ZXJuIHZvaWQgUkVTRVRfSU1N RURJQVRFKCBHTGNvbnRleHQgKmN0eCApOwojIDMxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9z cmMvdHJhbnNsYXRlLmgiIDIKIyA0MiAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5z bGF0ZS5oIgpleHRlcm4gdHJhbnNfMXVpX2Z1bmMgZ2xfdHJhbnNfMXVpX3RhYlsoKDB4MTQwQSkg JiAweGYpKzFdOwpleHRlcm4gdHJhbnNfMXViX2Z1bmMgZ2xfdHJhbnNfMXViX3RhYlsoKDB4MTQw QSkgJiAweGYpKzFdOwpleHRlcm4gdHJhbnNfM2ZfZnVuYyBnbF90cmFuc18zZl90YWJbKCgweDE0 MEEpICYgMHhmKSsxXTsKZXh0ZXJuIHRyYW5zXzR1Yl9mdW5jIGdsX3RyYW5zXzR1Yl90YWJbNV1b KCgweDE0MEEpICYgMHhmKSsxXTsKZXh0ZXJuIHRyYW5zXzRmX2Z1bmMgZ2xfdHJhbnNfNGZfdGFi WzVdWygoMHgxNDBBKSAmIDB4ZikrMV07CgpleHRlcm4gdHJhbnNfZWx0XzF1aV9mdW5jIGdsX3Ry YW5zX2VsdF8xdWlfdGFiWygoMHgxNDBBKSAmIDB4ZikrMV07CmV4dGVybiB0cmFuc19lbHRfMXVi X2Z1bmMgZ2xfdHJhbnNfZWx0XzF1Yl90YWJbKCgweDE0MEEpICYgMHhmKSsxXTsKZXh0ZXJuIHRy YW5zX2VsdF8zZl9mdW5jIGdsX3RyYW5zX2VsdF8zZl90YWJbKCgweDE0MEEpICYgMHhmKSsxXTsK ZXh0ZXJuIHRyYW5zX2VsdF80dWJfZnVuYyBnbF90cmFuc19lbHRfNHViX3RhYls1XVsoKDB4MTQw QSkgJiAweGYpKzFdOwpleHRlcm4gdHJhbnNfZWx0XzRmX2Z1bmMgZ2xfdHJhbnNfZWx0XzRmX3Rh Yls1XVsoKDB4MTQwQSkgJiAweGYpKzFdOwoKCmV4dGVybiB2b2lkIGdsX2luaXRfdHJhbnNsYXRl KCB2b2lkICk7CiMgMzkgInRyYW5zbGF0ZS5jIiAyCgoKCgoKCgp0cmFuc18xdWlfZnVuYyBnbF90 cmFuc18xdWlfdGFiWygoMHgxNDBBKSAmIDB4ZikrMV07CnRyYW5zXzF1Yl9mdW5jIGdsX3RyYW5z XzF1Yl90YWJbKCgweDE0MEEpICYgMHhmKSsxXTsKdHJhbnNfM2ZfZnVuYyBnbF90cmFuc18zZl90 YWJbKCgweDE0MEEpICYgMHhmKSsxXTsKdHJhbnNfNHViX2Z1bmMgZ2xfdHJhbnNfNHViX3RhYls1 XVsoKDB4MTQwQSkgJiAweGYpKzFdOwp0cmFuc180Zl9mdW5jIGdsX3RyYW5zXzRmX3RhYls1XVso KDB4MTQwQSkgJiAweGYpKzFdOwoKdHJhbnNfZWx0XzF1aV9mdW5jIGdsX3RyYW5zX2VsdF8xdWlf dGFiWygoMHgxNDBBKSAmIDB4ZikrMV07CnRyYW5zX2VsdF8xdWJfZnVuYyBnbF90cmFuc19lbHRf MXViX3RhYlsoKDB4MTQwQSkgJiAweGYpKzFdOwp0cmFuc19lbHRfM2ZfZnVuYyBnbF90cmFuc19l bHRfM2ZfdGFiWygoMHgxNDBBKSAmIDB4ZikrMV07CnRyYW5zX2VsdF80dWJfZnVuYyBnbF90cmFu c19lbHRfNHViX3RhYls1XVsoKDB4MTQwQSkgJiAweGYpKzFdOwp0cmFuc19lbHRfNGZfZnVuYyBn bF90cmFuc19lbHRfNGZfdGFiWzVdWygoMHgxNDBBKSAmIDB4ZikrMV07CiMgODggInRyYW5zbGF0 ZS5jIgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQojIDM3 ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRy YW5zXzRfR0xieXRlXzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAg ICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJp ZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQg KiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAo dm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsr LCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYgKDQgPj0gMSkg dFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0xieXRlICopZilbMF0pICk7CiAgICAgICAgIGlmICg0 ID49IDIpIHRbaV1bMV0gPSAoR0xmbG9hdCkoICgoKEdMYnl0ZSAqKWYpWzFdKSApOwogICAgICAg ICBpZiAoNCA+PSAzKSB0W2ldWzJdID0gKEdMZmxvYXQpKCAoKChHTGJ5dGUgKilmKVsyXSkgKTsK ICAgICAgICAgaWYgKDQgPT0gNCkgdFtpXVszXSA9IChHTGZsb2F0KSggKCgoR0xieXRlICopZilb M10pICk7CiAgICAgIH0KICAgfQp9CiMgODQgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90 cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfNF9HTGJ5dGVfNHViX3JhdyggR0x1Ynl0ZSAo KnQpWzRdLAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJh eSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsK ICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAo R0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAq Zmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7 CiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAg ICAgICA7CiAgICAgICAgIGlmICg0ID49IDEpIHRbaV1bMF0gPSAoKCgoR0xieXRlICopZilbMF0p IDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoR0xieXRlICopZilbMF0pKTsKICAgICAgICAgaWYgKDQg Pj0gMikgdFtpXVsxXSA9ICgoKChHTGJ5dGUgKilmKVsxXSkgPCAwID8gMCA6IChHTHVieXRlKSAo KChHTGJ5dGUgKilmKVsxXSkpOwogICAgICAgICBpZiAoNCA+PSAzKSB0W2ldWzJdID0gKCgoKEdM Ynl0ZSAqKWYpWzJdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgoKEdMYnl0ZSAqKWYpWzJdKSk7CiAg ICAgICAgIGlmICg0ID09IDQpIHRbaV1bM10gPSAoKCgoR0xieXRlICopZilbM10pIDwgMCA/IDAg OiAoR0x1Ynl0ZSkgKCgoR0xieXRlICopZilbM10pKTsgZWxzZSB0W2ldWzNdID0gMjU1OwogICAg ICB9CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5o IgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzRfR0xieXRlX3Jhdyh2b2lkKQp7CiMgMTY1ICIuLi8u Li8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zXzR1Yl90YWJb NF1bKCgweDE0MDApICYgMHhmKV0gPSB0cmFuc180X0dMYnl0ZV80dWJfcmF3OwoKCiAgIGdsX3Ry YW5zXzRmX3RhYls0XVsoKDB4MTQwMCkgJiAweGYpXSA9IHRyYW5zXzRfR0xieXRlXzRmX3JhdzsK Cgp9CiMgODkgInRyYW5zbGF0ZS5jIiAyCgoKCgoKCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01l c2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90 cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfM19HTGJ5dGVfNGZfcmF3KCBHTGZsb2F0ICgq dClbNF0sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkg KmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAg R0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1 Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmly c3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0Owog ICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7CiAgICAgIHsKICAgICAg ICAgOwogICAgICAgICBpZiAoMyA+PSAxKSB0W2ldWzBdID0gKEdMZmxvYXQpKCAoKChHTGJ5dGUg KilmKVswXSkgKTsKICAgICAgICAgaWYgKDMgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgo R0xieXRlICopZilbMV0pICk7CiAgICAgICAgIGlmICgzID49IDMpIHRbaV1bMl0gPSAoR0xmbG9h dCkoICgoKEdMYnl0ZSAqKWYpWzJdKSApOwogICAgICAgICBpZiAoMyA9PSA0KSB0W2ldWzNdID0g KEdMZmxvYXQpKCAoKChHTGJ5dGUgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KCgoKCnN0YXRp YyB2b2lkIHRyYW5zXzNfR0xieXRlXzNmX3JhdyggR0xmbG9hdCAoKnQpWzNdLAogICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAg ICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBm cm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRy ICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50 IGk7CiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSAwIDsgaSA8 IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7CiAgICAgIHsKICAgICAgICAgOwogICAgICAgICB0W2ld WzBdID0gKCgyLjBGICogKCgoKEdMYnl0ZSAqKWYpWzBdKSkgKyAxLjBGKSAqICgxLjBGLzI1NS4w RikpOwogICAgICAgICB0W2ldWzFdID0gKCgyLjBGICogKCgoKEdMYnl0ZSAqKWYpWzFdKSkgKyAx LjBGKSAqICgxLjBGLzI1NS4wRikpOwogICAgICAgICB0W2ldWzJdID0gKCgyLjBGICogKCgoKEdM Ynl0ZSAqKWYpWzJdKSkgKyAxLjBGKSAqICgxLjBGLzI1NS4wRikpOwogICAgICB9CiAgIH0KfQoK CgpzdGF0aWMgdm9pZCB0cmFuc18zX0dMYnl0ZV80dWJfcmF3KCBHTHVieXRlICgqdClbNF0sCiAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAog ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQg c3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICop IGZyb20tPlB0ciArIHN0YXJ0ICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7 CiAgIEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChp ID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAg ICAgICAgaWYgKDMgPj0gMSkgdFtpXVswXSA9ICgoKChHTGJ5dGUgKilmKVswXSkgPCAwID8gMCA6 IChHTHVieXRlKSAoKChHTGJ5dGUgKilmKVswXSkpOwogICAgICAgICBpZiAoMyA+PSAyKSB0W2ld WzFdID0gKCgoKEdMYnl0ZSAqKWYpWzFdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgoKEdMYnl0ZSAq KWYpWzFdKSk7CiAgICAgICAgIGlmICgzID49IDMpIHRbaV1bMl0gPSAoKCgoR0xieXRlICopZilb Ml0pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoR0xieXRlICopZilbMl0pKTsKICAgICAgICAgaWYg KDMgPT0gNCkgdFtpXVszXSA9ICgoKChHTGJ5dGUgKilmKVszXSkgPCAwID8gMCA6IChHTHVieXRl KSAoKChHTGJ5dGUgKilmKVszXSkpOyBlbHNlIHRbaV1bM10gPSAyNTU7CiAgICAgIH0KICAgfQp9 CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2 b2lkIGluaXRfdHJhbnNfM19HTGJ5dGVfcmF3KHZvaWQpCnsKIyAxNjEgIi4uLy4uLy4uLy4uL2V4 dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKICAgOwogICBnbF90cmFuc18zZl90YWJbKCgweDE0 MDApICYgMHhmKV0gPSB0cmFuc18zX0dMYnl0ZV8zZl9yYXc7CgoKICAgZ2xfdHJhbnNfNHViX3Rh YlszXVsoKDB4MTQwMCkgJiAweGYpXSA9IHRyYW5zXzNfR0xieXRlXzR1Yl9yYXc7CgoKICAgZ2xf dHJhbnNfNGZfdGFiWzNdWygoMHgxNDAwKSAmIDB4ZildID0gdHJhbnNfM19HTGJ5dGVfNGZfcmF3 OwoKCn0KIyA5NiAidHJhbnNsYXRlLmMiIDIKCgoKCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01l c2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90 cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfMl9HTGJ5dGVfNGZfcmF3KCBHTGZsb2F0ICgq dClbNF0sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkg KmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAg R0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1 Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmly c3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0Owog ICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7CiAgICAgIHsKICAgICAg ICAgOwogICAgICAgICBpZiAoMiA+PSAxKSB0W2ldWzBdID0gKEdMZmxvYXQpKCAoKChHTGJ5dGUg KilmKVswXSkgKTsKICAgICAgICAgaWYgKDIgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgo R0xieXRlICopZilbMV0pICk7CiAgICAgICAgIGlmICgyID49IDMpIHRbaV1bMl0gPSAoR0xmbG9h dCkoICgoKEdMYnl0ZSAqKWYpWzJdKSApOwogICAgICAgICBpZiAoMiA9PSA0KSB0W2ldWzNdID0g KEdMZmxvYXQpKCAoKChHTGJ5dGUgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KIyAxNTAgIi4u Ly4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgaW5pdF90 cmFuc18yX0dMYnl0ZV9yYXcodm9pZCkKewojIDE2OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Ev c3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFuc180Zl90YWJbMl1bKCgweDE0MDApICYgMHhmKV0g PSB0cmFuc18yX0dMYnl0ZV80Zl9yYXc7CgoKfQojIDEwMSAidHJhbnNsYXRlLmMiIDIKCgoKCgoK IyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4v Li4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18x X0dMYnl0ZV80Zl9yYXcoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgR0x1 aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsK ICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIHN0YXJ0ICogc3Ry aWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwoKICAgKHZvaWQp IGZpcnN0OwogICAodm9pZCkgc3RhcnQ7CiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiAr PSBzdHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIGlmICgxID49IDEpIHRbaV1b MF0gPSAoR0xmbG9hdCkoICgoKEdMYnl0ZSAqKWYpWzBdKSApOwogICAgICAgICBpZiAoMSA+PSAy KSB0W2ldWzFdID0gKEdMZmxvYXQpKCAoKChHTGJ5dGUgKilmKVsxXSkgKTsKICAgICAgICAgaWYg KDEgPj0gMykgdFtpXVsyXSA9IChHTGZsb2F0KSggKCgoR0xieXRlICopZilbMl0pICk7CiAgICAg ICAgIGlmICgxID09IDQpIHRbaV1bM10gPSAoR0xmbG9hdCkoICgoKEdMYnl0ZSAqKWYpWzNdKSAp OwogICAgICB9CiAgIH0KfQojIDEwOCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5z X3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18xX0dMYnl0ZV8xdWJfcmF3KCBHTHVieXRlICp0LAog ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwK ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50 IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAq KSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBm OwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7CiAgIGZvciAo aSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAg ICAgICAgICB0W2ldID0gKCgoKEdMYnl0ZSAqKWYpWzBdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgo KEdMYnl0ZSAqKWYpWzBdKSk7CiAgICAgIH0KICAgfQp9CgoKCgpzdGF0aWMgdm9pZCB0cmFuc18x X0dMYnl0ZV8xdWlfcmF3KCBHTHVpbnQgKnQsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50 IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAg Y29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIHN0YXJ0ICogc3RyaWRl OwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkgc3Rh cnQ7CiAgICh2b2lkKSBmaXJzdDsKCiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBz dHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIHRbaV0gPSAoKCgoR0xieXRlICop ZilbMF0pIDwgMCA/IDAgOiAoR0x1aW50KSAoKChHTGJ5dGUgKilmKVswXSkpOwogICAgICB9CiAg IH0KfQoKCgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzFfR0xieXRlX3Jhdyh2b2lkKQp7CgogICA7 CiAgIGdsX3RyYW5zXzF1aV90YWJbKCgweDE0MDApICYgMHhmKV0gPSB0cmFuc18xX0dMYnl0ZV8x dWlfcmF3OwoKCiAgIDsKICAgZ2xfdHJhbnNfMXViX3RhYlsoKDB4MTQwMCkgJiAweGYpXSA9IHRy YW5zXzFfR0xieXRlXzF1Yl9yYXc7CiMgMTY4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMv dHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zXzRmX3RhYlsxXVsoKDB4MTQwMCkgJiAweGYpXSA9IHRy YW5zXzFfR0xieXRlXzRmX3JhdzsKCgp9CiMgMTA4ICJ0cmFuc2xhdGUuYyIgMgojIDEzMSAidHJh bnNsYXRlLmMiCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAx CiMgODQgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZv aWQgdHJhbnNfM19HTHVieXRlXzR1Yl9yYXcoIEdMdWJ5dGUgKCp0KVs0XSwKICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAg ICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBm cm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRy ICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50 IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZvaWQpIGZpcnN0OwogICBmb3IgKGkgPSAwIDsgaSA8 IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7CiAgICAgIHsKICAgICAgICAgOwogICAgICAgICBpZiAo MyA+PSAxKSB0W2ldWzBdID0gKCgoR0x1Ynl0ZSAqKWYpWzBdKTsKICAgICAgICAgaWYgKDMgPj0g MikgdFtpXVsxXSA9ICgoKEdMdWJ5dGUgKilmKVsxXSk7CiAgICAgICAgIGlmICgzID49IDMpIHRb aV1bMl0gPSAoKChHTHVieXRlICopZilbMl0pOwogICAgICAgICBpZiAoMyA9PSA0KSB0W2ldWzNd ID0gKCgoR0x1Ynl0ZSAqKWYpWzNdKTsgZWxzZSB0W2ldWzNdID0gMjU1OwogICAgICB9CiAgIH0K fQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMg dm9pZCBpbml0X3RyYW5zXzNfR0x1Ynl0ZV9yYXcodm9pZCkKewojIDE2NSAiLi4vLi4vLi4vLi4v ZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFuc180dWJfdGFiWzNdWygoMHgx NDAxKSAmIDB4ZildID0gdHJhbnNfM19HTHVieXRlXzR1Yl9yYXc7CgoKCgoKfQojIDEzMiAidHJh bnNsYXRlLmMiIDIKCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNf dG1wLmgiIDEKIyAxMDggIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIK c3RhdGljIHZvaWQgdHJhbnNfMV9HTHVieXRlXzF1Yl9yYXcoIEdMdWJ5dGUgKnQsCiAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAg ICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRl ID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20t PlB0ciArIHN0YXJ0ICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdM dWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0gMCA7 IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAg IHRbaV0gPSAoKChHTHVieXRlICopZilbMF0pOwogICAgICB9CiAgIH0KfQoKCgoKc3RhdGljIHZv aWQgdHJhbnNfMV9HTHVieXRlXzF1aV9yYXcoIEdMdWludCAqdCwKICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAg ICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5T dHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3Rh cnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAg ICh2b2lkKSBzdGFydDsKICAgKHZvaWQpIGZpcnN0OwoKICAgZm9yIChpID0gMCA7IGkgPCBuIDsg aSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgdFtpXSA9IChH THVpbnQpKCgoR0x1Ynl0ZSAqKWYpWzBdKTsKICAgICAgfQogICB9Cn0KCgoKc3RhdGljIHZvaWQg aW5pdF90cmFuc18xX0dMdWJ5dGVfcmF3KHZvaWQpCnsKCiAgIDsKICAgZ2xfdHJhbnNfMXVpX3Rh YlsoKDB4MTQwMSkgJiAweGYpXSA9IHRyYW5zXzFfR0x1Ynl0ZV8xdWlfcmF3OwoKCiAgIDsKICAg Z2xfdHJhbnNfMXViX3RhYlsoKDB4MTQwMSkgJiAweGYpXSA9IHRyYW5zXzFfR0x1Ynl0ZV8xdWJf cmF3OwojIDE3MSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgp9CiMg MTM5ICJ0cmFuc2xhdGUuYyIgMgojIDE2MiAidHJhbnNsYXRlLmMiCiMgMSAiLi4vLi4vLi4vLi4v ZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4uLy4uLy4uL2V4dHJhcy9N ZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfNF9HTHNob3J0XzRmX3Jhdygg R0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xp ZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWlu dCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRl ICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdM dWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lk KSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAg ICB7CiAgICAgICAgIDsKICAgICAgICAgaWYgKDQgPj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSgg KCgoR0xzaG9ydCAqKWYpWzBdKSApOwogICAgICAgICBpZiAoNCA+PSAyKSB0W2ldWzFdID0gKEdM ZmxvYXQpKCAoKChHTHNob3J0ICopZilbMV0pICk7CiAgICAgICAgIGlmICg0ID49IDMpIHRbaV1b Ml0gPSAoR0xmbG9hdCkoICgoKEdMc2hvcnQgKilmKVsyXSkgKTsKICAgICAgICAgaWYgKDQgPT0g NCkgdFtpXVszXSA9IChHTGZsb2F0KSggKCgoR0xzaG9ydCAqKWYpWzNdKSApOwogICAgICB9CiAg IH0KfQojIDg0ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRp YyB2b2lkIHRyYW5zXzRfR0xzaG9ydF80dWJfcmF3KCBHTHVieXRlICgqdClbNF0sCiAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAg ICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRl ID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20t PlB0ciArIHN0YXJ0ICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdM dWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0gMCA7 IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAg aWYgKDQgPj0gMSkgdFtpXVswXSA9ICgoKChHTHNob3J0ICopZilbMF0pIDwgMCA/IDAgOiAoR0x1 Ynl0ZSkgKCgoKEdMc2hvcnQgKilmKVswXSkgPj4gNykpOwogICAgICAgICBpZiAoNCA+PSAyKSB0 W2ldWzFdID0gKCgoKEdMc2hvcnQgKilmKVsxXSkgPCAwID8gMCA6IChHTHVieXRlKSAoKCgoR0xz aG9ydCAqKWYpWzFdKSA+PiA3KSk7CiAgICAgICAgIGlmICg0ID49IDMpIHRbaV1bMl0gPSAoKCgo R0xzaG9ydCAqKWYpWzJdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgoKChHTHNob3J0ICopZilbMl0p ID4+IDcpKTsKICAgICAgICAgaWYgKDQgPT0gNCkgdFtpXVszXSA9ICgoKChHTHNob3J0ICopZilb M10pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMc2hvcnQgKilmKVszXSkgPj4gNykpOyBlbHNl IHRbaV1bM10gPSAyNTU7CiAgICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMv TWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfNF9HTHNob3J0X3Jh dyh2b2lkKQp7CiMgMTY1ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgi CiAgIGdsX3RyYW5zXzR1Yl90YWJbNF1bKCgweDE0MDIpICYgMHhmKV0gPSB0cmFuc180X0dMc2hv cnRfNHViX3JhdzsKCgogICBnbF90cmFuc180Zl90YWJbNF1bKCgweDE0MDIpICYgMHhmKV0gPSB0 cmFuc180X0dMc2hvcnRfNGZfcmF3OwoKCn0KIyAxNjMgInRyYW5zbGF0ZS5jIiAyCgoKCgoKCiMg MSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4u Ly4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfM19H THNob3J0XzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVp bnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwog ICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJp ZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkg Zmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9 IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYgKDMgPj0gMSkgdFtpXVsw XSA9IChHTGZsb2F0KSggKCgoR0xzaG9ydCAqKWYpWzBdKSApOwogICAgICAgICBpZiAoMyA+PSAy KSB0W2ldWzFdID0gKEdMZmxvYXQpKCAoKChHTHNob3J0ICopZilbMV0pICk7CiAgICAgICAgIGlm ICgzID49IDMpIHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMc2hvcnQgKilmKVsyXSkgKTsKICAg ICAgICAgaWYgKDMgPT0gNCkgdFtpXVszXSA9IChHTGZsb2F0KSggKCgoR0xzaG9ydCAqKWYpWzNd KSApOwogICAgICB9CiAgIH0KfQoKCgoKc3RhdGljIHZvaWQgdHJhbnNfM19HTHNob3J0XzNmX3Jh dyggR0xmbG9hdCAoKnQpWzNdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xf Y2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdM dWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVi eXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0 IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBmaXJzdDsKICAgKHZv aWQpIHN0YXJ0OwogICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7CiAg ICAgIHsKICAgICAgICAgOwogICAgICAgICB0W2ldWzBdID0gKCgyLjBGICogKCgoKEdMc2hvcnQg KilmKVswXSkpICsgMS4wRikgKiAoMS4wRi82NTUzNS4wRikpOwogICAgICAgICB0W2ldWzFdID0g KCgyLjBGICogKCgoKEdMc2hvcnQgKilmKVsxXSkpICsgMS4wRikgKiAoMS4wRi82NTUzNS4wRikp OwogICAgICAgICB0W2ldWzJdID0gKCgyLjBGICogKCgoKEdMc2hvcnQgKilmKVsyXSkpICsgMS4w RikgKiAoMS4wRi82NTUzNS4wRikpOwogICAgICB9CiAgIH0KfQoKCgpzdGF0aWMgdm9pZCB0cmFu c18zX0dMc2hvcnRfNHViX3JhdyggR0x1Ynl0ZSAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAg ICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0 cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFy dCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAg KHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7CiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkr KywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIGlmICgzID49IDEp IHRbaV1bMF0gPSAoKCgoR0xzaG9ydCAqKWYpWzBdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgoKChH THNob3J0ICopZilbMF0pID4+IDcpKTsKICAgICAgICAgaWYgKDMgPj0gMikgdFtpXVsxXSA9ICgo KChHTHNob3J0ICopZilbMV0pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMc2hvcnQgKilmKVsx XSkgPj4gNykpOwogICAgICAgICBpZiAoMyA+PSAzKSB0W2ldWzJdID0gKCgoKEdMc2hvcnQgKilm KVsyXSkgPCAwID8gMCA6IChHTHVieXRlKSAoKCgoR0xzaG9ydCAqKWYpWzJdKSA+PiA3KSk7CiAg ICAgICAgIGlmICgzID09IDQpIHRbaV1bM10gPSAoKCgoR0xzaG9ydCAqKWYpWzNdKSA8IDAgPyAw IDogKEdMdWJ5dGUpICgoKChHTHNob3J0ICopZilbM10pID4+IDcpKTsgZWxzZSB0W2ldWzNdID0g MjU1OwogICAgICB9CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3Ry YW5zX3RtcC5oIgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzNfR0xzaG9ydF9yYXcodm9pZCkKewoj IDE2MSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICA7CiAgIGds X3RyYW5zXzNmX3RhYlsoKDB4MTQwMikgJiAweGYpXSA9IHRyYW5zXzNfR0xzaG9ydF8zZl9yYXc7 CgoKICAgZ2xfdHJhbnNfNHViX3RhYlszXVsoKDB4MTQwMikgJiAweGYpXSA9IHRyYW5zXzNfR0xz aG9ydF80dWJfcmF3OwoKCiAgIGdsX3RyYW5zXzRmX3RhYlszXVsoKDB4MTQwMikgJiAweGYpXSA9 IHRyYW5zXzNfR0xzaG9ydF80Zl9yYXc7CgoKfQojIDE3MCAidHJhbnNsYXRlLmMiIDIKCgoKCiMg MSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4u Ly4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfMl9H THNob3J0XzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVp bnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwog ICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJp ZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkg Zmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9 IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYgKDIgPj0gMSkgdFtpXVsw XSA9IChHTGZsb2F0KSggKCgoR0xzaG9ydCAqKWYpWzBdKSApOwogICAgICAgICBpZiAoMiA+PSAy KSB0W2ldWzFdID0gKEdMZmxvYXQpKCAoKChHTHNob3J0ICopZilbMV0pICk7CiAgICAgICAgIGlm ICgyID49IDMpIHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMc2hvcnQgKilmKVsyXSkgKTsKICAg ICAgICAgaWYgKDIgPT0gNCkgdFtpXVszXSA9IChHTGZsb2F0KSggKCgoR0xzaG9ydCAqKWYpWzNd KSApOwogICAgICB9CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3Ry YW5zX3RtcC5oIgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzJfR0xzaG9ydF9yYXcodm9pZCkKewoj IDE2OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFu c180Zl90YWJbMl1bKCgweDE0MDIpICYgMHhmKV0gPSB0cmFuc18yX0dMc2hvcnRfNGZfcmF3OwoK Cn0KIyAxNzUgInRyYW5zbGF0ZS5jIiAyCgoKCgoKCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01l c2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90 cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfMV9HTHNob3J0XzRmX3JhdyggR0xmbG9hdCAo KnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5 ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAg IEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdM dWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZp cnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsK ICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAg ICAgIDsKICAgICAgICAgaWYgKDEgPj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0xzaG9y dCAqKWYpWzBdKSApOwogICAgICAgICBpZiAoMSA+PSAyKSB0W2ldWzFdID0gKEdMZmxvYXQpKCAo KChHTHNob3J0ICopZilbMV0pICk7CiAgICAgICAgIGlmICgxID49IDMpIHRbaV1bMl0gPSAoR0xm bG9hdCkoICgoKEdMc2hvcnQgKilmKVsyXSkgKTsKICAgICAgICAgaWYgKDEgPT0gNCkgdFtpXVsz XSA9IChHTGZsb2F0KSggKCgoR0xzaG9ydCAqKWYpWzNdKSApOwogICAgICB9CiAgIH0KfQojIDEw OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0 cmFuc18xX0dMc2hvcnRfMXViX3JhdyggR0x1Ynl0ZSAqdCwKICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAg ICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJp ZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQg KiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2 b2lkKSBzdGFydDsKICAgKHZvaWQpIGZpcnN0OwogICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyss IGYgKz0gc3RyaWRlKSB7CiAgICAgIHsKICAgICAgICAgOwogICAgICAgICAgdFtpXSA9ICgoKChH THNob3J0ICopZilbMF0pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMc2hvcnQgKilmKVswXSkg Pj4gNykpOwogICAgICB9CiAgIH0KfQoKCgoKc3RhdGljIHZvaWQgdHJhbnNfMV9HTHNob3J0XzF1 aV9yYXcoIEdMdWludCAqdCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9j bGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdM dWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVi eXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0 IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZv aWQpIGZpcnN0OwoKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewog ICAgICB7CiAgICAgICAgIDsKICAgICAgICAgdFtpXSA9ICgoKChHTHNob3J0ICopZilbMF0pIDwg MCA/IDAgOiAoR0x1aW50KSAoKChHTHNob3J0ICopZilbMF0pKTsKICAgICAgfQogICB9Cn0KCgoK c3RhdGljIHZvaWQgaW5pdF90cmFuc18xX0dMc2hvcnRfcmF3KHZvaWQpCnsKCiAgIDsKICAgZ2xf dHJhbnNfMXVpX3RhYlsoKDB4MTQwMikgJiAweGYpXSA9IHRyYW5zXzFfR0xzaG9ydF8xdWlfcmF3 OwoKCiAgIDsKICAgZ2xfdHJhbnNfMXViX3RhYlsoKDB4MTQwMikgJiAweGYpXSA9IHRyYW5zXzFf R0xzaG9ydF8xdWJfcmF3OwojIDE2OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5z X3RtcC5oIgogICBnbF90cmFuc180Zl90YWJbMV1bKCgweDE0MDIpICYgMHhmKV0gPSB0cmFuc18x X0dMc2hvcnRfNGZfcmF3OwoKCn0KIyAxODIgInRyYW5zbGF0ZS5jIiAyCiMgMjA2ICJ0cmFuc2xh dGUuYyIKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAz NyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0 cmFuc180X0dMdXNob3J0XzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAg ICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5T dHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3Rh cnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7Cgog ICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkgPCBuIDsg aSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYgKDQgPj0g MSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0x1c2hvcnQgKilmKVswXSkgKTsKICAgICAgICAg aWYgKDQgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgoR0x1c2hvcnQgKilmKVsxXSkgKTsK ICAgICAgICAgaWYgKDQgPj0gMykgdFtpXVsyXSA9IChHTGZsb2F0KSggKCgoR0x1c2hvcnQgKilm KVsyXSkgKTsKICAgICAgICAgaWYgKDQgPT0gNCkgdFtpXVszXSA9IChHTGZsb2F0KSggKCgoR0x1 c2hvcnQgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KIyA4NCAiLi4vLi4vLi4vLi4vZXh0cmFz L01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc180X0dMdXNob3J0XzR1Yl9y YXcoIEdMdWJ5dGUgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBn bF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQs IEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBH THVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNv bnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAg KHZvaWQpIGZpcnN0OwogICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7 CiAgICAgIHsKICAgICAgICAgOwogICAgICAgICBpZiAoNCA+PSAxKSB0W2ldWzBdID0gKEdMdWJ5 dGUpICgoKChHTHVzaG9ydCAqKWYpWzBdKSA+PiA4KTsKICAgICAgICAgaWYgKDQgPj0gMikgdFtp XVsxXSA9IChHTHVieXRlKSAoKCgoR0x1c2hvcnQgKilmKVsxXSkgPj4gOCk7CiAgICAgICAgIGlm ICg0ID49IDMpIHRbaV1bMl0gPSAoR0x1Ynl0ZSkgKCgoKEdMdXNob3J0ICopZilbMl0pID4+IDgp OwogICAgICAgICBpZiAoNCA9PSA0KSB0W2ldWzNdID0gKEdMdWJ5dGUpICgoKChHTHVzaG9ydCAq KWYpWzNdKSA+PiA4KTsgZWxzZSB0W2ldWzNdID0gMjU1OwogICAgICB9CiAgIH0KfQojIDE1MCAi Li4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCBpbml0 X3RyYW5zXzRfR0x1c2hvcnRfcmF3KHZvaWQpCnsKIyAxNjUgIi4uLy4uLy4uLy4uL2V4dHJhcy9N ZXNhL3NyYy90cmFuc190bXAuaCIKICAgZ2xfdHJhbnNfNHViX3RhYls0XVsoKDB4MTQwMykgJiAw eGYpXSA9IHRyYW5zXzRfR0x1c2hvcnRfNHViX3JhdzsKCgogICBnbF90cmFuc180Zl90YWJbNF1b KCgweDE0MDMpICYgMHhmKV0gPSB0cmFuc180X0dMdXNob3J0XzRmX3JhdzsKCgp9CiMgMjA3ICJ0 cmFuc2xhdGUuYyIgMgoKCgoKCgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFu c190bXAuaCIgMQojIDM3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgi CnN0YXRpYyB2b2lkIHRyYW5zXzNfR0x1c2hvcnRfNGZfcmF3KCBHTGZsb2F0ICgqdClbNF0sCiAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAg ICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0 cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBm cm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwog ICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkg PSAwIDsgaSA8IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7CiAgICAgIHsKICAgICAgICAgOwogICAg ICAgICBpZiAoMyA+PSAxKSB0W2ldWzBdID0gKEdMZmxvYXQpKCAoKChHTHVzaG9ydCAqKWYpWzBd KSApOwogICAgICAgICBpZiAoMyA+PSAyKSB0W2ldWzFdID0gKEdMZmxvYXQpKCAoKChHTHVzaG9y dCAqKWYpWzFdKSApOwogICAgICAgICBpZiAoMyA+PSAzKSB0W2ldWzJdID0gKEdMZmxvYXQpKCAo KChHTHVzaG9ydCAqKWYpWzJdKSApOwogICAgICAgICBpZiAoMyA9PSA0KSB0W2ldWzNdID0gKEdM ZmxvYXQpKCAoKChHTHVzaG9ydCAqKWYpWzNdKSApOwogICAgICB9CiAgIH0KfQoKCgoKc3RhdGlj IHZvaWQgdHJhbnNfM19HTHVzaG9ydF8zZl9yYXcoIEdMZmxvYXQgKCp0KVszXSwKICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAg ICAgICAgICAgICAgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0g ZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0 ciArIHN0YXJ0ICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWlu dCBpOwogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkg PCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgdFtp XVswXSA9ICgoR0xmbG9hdCkgKCgoKEdMdXNob3J0ICopZilbMF0pKSAqICgxLjBGIC8gNjU1MzUu MEYpKTsKICAgICAgICAgdFtpXVsxXSA9ICgoR0xmbG9hdCkgKCgoKEdMdXNob3J0ICopZilbMV0p KSAqICgxLjBGIC8gNjU1MzUuMEYpKTsKICAgICAgICAgdFtpXVsyXSA9ICgoR0xmbG9hdCkgKCgo KEdMdXNob3J0ICopZilbMl0pKSAqICgxLjBGIC8gNjU1MzUuMEYpKTsKICAgICAgfQogICB9Cn0K CgoKc3RhdGljIHZvaWQgdHJhbnNfM19HTHVzaG9ydF80dWJfcmF3KCBHTHVieXRlICgqdClbNF0s CiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9t LAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVp bnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRl ICopIGZyb20tPlB0ciArIHN0YXJ0ICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9 IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9y IChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsK ICAgICAgICAgaWYgKDMgPj0gMSkgdFtpXVswXSA9IChHTHVieXRlKSAoKCgoR0x1c2hvcnQgKilm KVswXSkgPj4gOCk7CiAgICAgICAgIGlmICgzID49IDIpIHRbaV1bMV0gPSAoR0x1Ynl0ZSkgKCgo KEdMdXNob3J0ICopZilbMV0pID4+IDgpOwogICAgICAgICBpZiAoMyA+PSAzKSB0W2ldWzJdID0g KEdMdWJ5dGUpICgoKChHTHVzaG9ydCAqKWYpWzJdKSA+PiA4KTsKICAgICAgICAgaWYgKDMgPT0g NCkgdFtpXVszXSA9IChHTHVieXRlKSAoKCgoR0x1c2hvcnQgKilmKVszXSkgPj4gOCk7IGVsc2Ug dFtpXVszXSA9IDI1NTsKICAgICAgfQogICB9Cn0KIyAxNTAgIi4uLy4uLy4uLy4uL2V4dHJhcy9N ZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgaW5pdF90cmFuc18zX0dMdXNob3J0X3Jh dyh2b2lkKQp7CiMgMTYxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgi CiAgIDsKICAgZ2xfdHJhbnNfM2ZfdGFiWygoMHgxNDAzKSAmIDB4ZildID0gdHJhbnNfM19HTHVz aG9ydF8zZl9yYXc7CgoKICAgZ2xfdHJhbnNfNHViX3RhYlszXVsoKDB4MTQwMykgJiAweGYpXSA9 IHRyYW5zXzNfR0x1c2hvcnRfNHViX3JhdzsKCgogICBnbF90cmFuc180Zl90YWJbM11bKCgweDE0 MDMpICYgMHhmKV0gPSB0cmFuc18zX0dMdXNob3J0XzRmX3JhdzsKCgp9CiMgMjE0ICJ0cmFuc2xh dGUuYyIgMgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgi IDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMg dm9pZCB0cmFuc18yX0dMdXNob3J0XzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAg ICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBm cm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRy ICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50 IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkg PCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYg KDIgPj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0x1c2hvcnQgKilmKVswXSkgKTsKICAg ICAgICAgaWYgKDIgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgoR0x1c2hvcnQgKilmKVsx XSkgKTsKICAgICAgICAgaWYgKDIgPj0gMykgdFtpXVsyXSA9IChHTGZsb2F0KSggKCgoR0x1c2hv cnQgKilmKVsyXSkgKTsKICAgICAgICAgaWYgKDIgPT0gNCkgdFtpXVszXSA9IChHTGZsb2F0KSgg KCgoR0x1c2hvcnQgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KIyAxNTAgIi4uLy4uLy4uLy4u L2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgaW5pdF90cmFuc18yX0dM dXNob3J0X3Jhdyh2b2lkKQp7CiMgMTY4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJh bnNfdG1wLmgiCiAgIGdsX3RyYW5zXzRmX3RhYlsyXVsoKDB4MTQwMykgJiAweGYpXSA9IHRyYW5z XzJfR0x1c2hvcnRfNGZfcmF3OwoKCn0KIyAyMTkgInRyYW5zbGF0ZS5jIiAyCgoKCgoKCiMgMSAi Li4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4uLy4u Ly4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfMV9HTHVz aG9ydF80Zl9yYXcoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgR0x1aW50 IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAg Y29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIHN0YXJ0ICogc3RyaWRl OwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwoKICAgKHZvaWQpIGZp cnN0OwogICAodm9pZCkgc3RhcnQ7CiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBz dHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIGlmICgxID49IDEpIHRbaV1bMF0g PSAoR0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilbMF0pICk7CiAgICAgICAgIGlmICgxID49IDIp IHRbaV1bMV0gPSAoR0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilbMV0pICk7CiAgICAgICAgIGlm ICgxID49IDMpIHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilbMl0pICk7CiAg ICAgICAgIGlmICgxID09IDQpIHRbaV1bM10gPSAoR0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilb M10pICk7CiAgICAgIH0KICAgfQp9CiMgMTA4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMv dHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzFfR0x1c2hvcnRfMXViX3JhdyggR0x1Ynl0 ZSAqdCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkg KmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAg IEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdM dWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZp cnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZvaWQpIGZpcnN0Owog ICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7CiAgICAgIHsKICAgICAg ICAgOwogICAgICAgICAgdFtpXSA9IChHTHVieXRlKSAoKCgoR0x1c2hvcnQgKilmKVswXSkgPj4g OCk7CiAgICAgIH0KICAgfQp9CgoKCgpzdGF0aWMgdm9pZCB0cmFuc18xX0dMdXNob3J0XzF1aV9y YXcoIEdMdWludCAqdCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGll bnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWlu dCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRl ICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdM dWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZvaWQp IGZpcnN0OwoKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAg ICB7CiAgICAgICAgIDsKICAgICAgICAgdFtpXSA9IChHTHVpbnQpICgoKEdMdXNob3J0ICopZilb MF0pOwogICAgICB9CiAgIH0KfQoKCgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzFfR0x1c2hvcnRf cmF3KHZvaWQpCnsKCiAgIDsKICAgZ2xfdHJhbnNfMXVpX3RhYlsoKDB4MTQwMykgJiAweGYpXSA9 IHRyYW5zXzFfR0x1c2hvcnRfMXVpX3JhdzsKCgogICA7CiAgIGdsX3RyYW5zXzF1Yl90YWJbKCgw eDE0MDMpICYgMHhmKV0gPSB0cmFuc18xX0dMdXNob3J0XzF1Yl9yYXc7CiMgMTY4ICIuLi8uLi8u Li8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zXzRmX3RhYlsxXVso KDB4MTQwMykgJiAweGYpXSA9IHRyYW5zXzFfR0x1c2hvcnRfNGZfcmF3OwoKCn0KIyAyMjYgInRy YW5zbGF0ZS5jIiAyCiMgMjQ5ICJ0cmFuc2xhdGUuYyIKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMv TWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3Jj L3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc180X0dMaW50XzRmX3JhdyggR0xmbG9hdCAo KnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5 ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAg IEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdM dWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZp cnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsK ICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAg ICAgIDsKICAgICAgICAgaWYgKDQgPj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0xpbnQg KilmKVswXSkgKTsKICAgICAgICAgaWYgKDQgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgo R0xpbnQgKilmKVsxXSkgKTsKICAgICAgICAgaWYgKDQgPj0gMykgdFtpXVsyXSA9IChHTGZsb2F0 KSggKCgoR0xpbnQgKilmKVsyXSkgKTsKICAgICAgICAgaWYgKDQgPT0gNCkgdFtpXVszXSA9IChH TGZsb2F0KSggKCgoR0xpbnQgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KIyA4NCAiLi4vLi4v Li4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc180X0dM aW50XzR1Yl9yYXcoIEdMdWJ5dGUgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVp bnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwog ICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJp ZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBz dGFydDsKICAgKHZvaWQpIGZpcnN0OwogICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYgKz0g c3RyaWRlKSB7CiAgICAgIHsKICAgICAgICAgOwogICAgICAgICBpZiAoNCA+PSAxKSB0W2ldWzBd ID0gKCgoKEdMaW50ICopZilbMF0pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMaW50ICopZilb MF0pID4+IDIzKSk7CiAgICAgICAgIGlmICg0ID49IDIpIHRbaV1bMV0gPSAoKCgoR0xpbnQgKilm KVsxXSkgPCAwID8gMCA6IChHTHVieXRlKSAoKCgoR0xpbnQgKilmKVsxXSkgPj4gMjMpKTsKICAg ICAgICAgaWYgKDQgPj0gMykgdFtpXVsyXSA9ICgoKChHTGludCAqKWYpWzJdKSA8IDAgPyAwIDog KEdMdWJ5dGUpICgoKChHTGludCAqKWYpWzJdKSA+PiAyMykpOwogICAgICAgICBpZiAoNCA9PSA0 KSB0W2ldWzNdID0gKCgoKEdMaW50ICopZilbM10pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdM aW50ICopZilbM10pID4+IDIzKSk7IGVsc2UgdFtpXVszXSA9IDI1NTsKICAgICAgfQogICB9Cn0K IyAxNTAgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZv aWQgaW5pdF90cmFuc180X0dMaW50X3Jhdyh2b2lkKQp7CiMgMTY1ICIuLi8uLi8uLi8uLi9leHRy YXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zXzR1Yl90YWJbNF1bKCgweDE0MDQp ICYgMHhmKV0gPSB0cmFuc180X0dMaW50XzR1Yl9yYXc7CgoKICAgZ2xfdHJhbnNfNGZfdGFiWzRd WygoMHgxNDA0KSAmIDB4ZildID0gdHJhbnNfNF9HTGludF80Zl9yYXc7CgoKfQojIDI1MCAidHJh bnNsYXRlLmMiIDIKCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNf dG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpz dGF0aWMgdm9pZCB0cmFuc18zX0dMaW50XzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAg ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAg ICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUg PSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+ UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1 aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7 IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAg aWYgKDMgPj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0xpbnQgKilmKVswXSkgKTsKICAg ICAgICAgaWYgKDMgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgoR0xpbnQgKilmKVsxXSkg KTsKICAgICAgICAgaWYgKDMgPj0gMykgdFtpXVsyXSA9IChHTGZsb2F0KSggKCgoR0xpbnQgKilm KVsyXSkgKTsKICAgICAgICAgaWYgKDMgPT0gNCkgdFtpXVszXSA9IChHTGZsb2F0KSggKCgoR0xp bnQgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KCgoKCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xp bnRfM2ZfcmF3KCBHTGZsb2F0ICgqdClbM10sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0 cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCBz dGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNv bnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsK ICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIGZpcnN0 OwogICAodm9pZCkgc3RhcnQ7CiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJp ZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIHRbaV1bMF0gPSAoKDIuMEYgKiAoKCgo R0xpbnQgKilmKVswXSkpICsgMS4wRikgKiAoMS4wRi80Mjk0OTY3Mjk0LjBGKSk7CiAgICAgICAg IHRbaV1bMV0gPSAoKDIuMEYgKiAoKCgoR0xpbnQgKilmKVsxXSkpICsgMS4wRikgKiAoMS4wRi80 Mjk0OTY3Mjk0LjBGKSk7CiAgICAgICAgIHRbaV1bMl0gPSAoKDIuMEYgKiAoKCgoR0xpbnQgKilm KVsyXSkpICsgMS4wRikgKiAoMS4wRi80Mjk0OTY3Mjk0LjBGKSk7CiAgICAgIH0KICAgfQp9CgoK CnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xpbnRfNHViX3JhdyggR0x1Ynl0ZSAoKnQpWzRdLAogICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAg ICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0 cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBm cm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwog ICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7CiAgIGZvciAoaSA9 IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAg ICAgIGlmICgzID49IDEpIHRbaV1bMF0gPSAoKCgoR0xpbnQgKilmKVswXSkgPCAwID8gMCA6IChH THVieXRlKSAoKCgoR0xpbnQgKilmKVswXSkgPj4gMjMpKTsKICAgICAgICAgaWYgKDMgPj0gMikg dFtpXVsxXSA9ICgoKChHTGludCAqKWYpWzFdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgoKChHTGlu dCAqKWYpWzFdKSA+PiAyMykpOwogICAgICAgICBpZiAoMyA+PSAzKSB0W2ldWzJdID0gKCgoKEdM aW50ICopZilbMl0pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMaW50ICopZilbMl0pID4+IDIz KSk7CiAgICAgICAgIGlmICgzID09IDQpIHRbaV1bM10gPSAoKCgoR0xpbnQgKilmKVszXSkgPCAw ID8gMCA6IChHTHVieXRlKSAoKCgoR0xpbnQgKilmKVszXSkgPj4gMjMpKTsgZWxzZSB0W2ldWzNd ID0gMjU1OwogICAgICB9CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3Jj L3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzNfR0xpbnRfcmF3KHZvaWQpCnsK IyAxNjEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKICAgOwogICBn bF90cmFuc18zZl90YWJbKCgweDE0MDQpICYgMHhmKV0gPSB0cmFuc18zX0dMaW50XzNmX3JhdzsK CgogICBnbF90cmFuc180dWJfdGFiWzNdWygoMHgxNDA0KSAmIDB4ZildID0gdHJhbnNfM19HTGlu dF80dWJfcmF3OwoKCiAgIGdsX3RyYW5zXzRmX3RhYlszXVsoKDB4MTQwNCkgJiAweGYpXSA9IHRy YW5zXzNfR0xpbnRfNGZfcmF3OwoKCn0KIyAyNTcgInRyYW5zbGF0ZS5jIiAyCgoKCgojIDEgIi4u Ly4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQojIDM3ICIuLi8uLi8uLi8u Li9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzJfR0xpbnRf NGZfcmF3KCBHTGZsb2F0ICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj dCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFy dCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0 IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAg Y29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsK ICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYgKz0gc3RyaWRl KSB7CiAgICAgIHsKICAgICAgICAgOwogICAgICAgICBpZiAoMiA+PSAxKSB0W2ldWzBdID0gKEdM ZmxvYXQpKCAoKChHTGludCAqKWYpWzBdKSApOwogICAgICAgICBpZiAoMiA+PSAyKSB0W2ldWzFd ID0gKEdMZmxvYXQpKCAoKChHTGludCAqKWYpWzFdKSApOwogICAgICAgICBpZiAoMiA+PSAzKSB0 W2ldWzJdID0gKEdMZmxvYXQpKCAoKChHTGludCAqKWYpWzJdKSApOwogICAgICAgICBpZiAoMiA9 PSA0KSB0W2ldWzNdID0gKEdMZmxvYXQpKCAoKChHTGludCAqKWYpWzNdKSApOwogICAgICB9CiAg IH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0 aWMgdm9pZCBpbml0X3RyYW5zXzJfR0xpbnRfcmF3KHZvaWQpCnsKIyAxNjggIi4uLy4uLy4uLy4u L2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKICAgZ2xfdHJhbnNfNGZfdGFiWzJdWygoMHgx NDA0KSAmIDB4ZildID0gdHJhbnNfMl9HTGludF80Zl9yYXc7CgoKfQojIDI2MiAidHJhbnNsYXRl LmMiIDIKCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgi IDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMg dm9pZCB0cmFuc18xX0dMaW50XzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAg ICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9t LT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsg c3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7 CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkgPCBu IDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYgKDEg Pj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0xpbnQgKilmKVswXSkgKTsKICAgICAgICAg aWYgKDEgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgoR0xpbnQgKilmKVsxXSkgKTsKICAg ICAgICAgaWYgKDEgPj0gMykgdFtpXVsyXSA9IChHTGZsb2F0KSggKCgoR0xpbnQgKilmKVsyXSkg KTsKICAgICAgICAgaWYgKDEgPT0gNCkgdFtpXVszXSA9IChHTGZsb2F0KSggKCgoR0xpbnQgKilm KVszXSkgKTsKICAgICAgfQogICB9Cn0KIyAxMDggIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3Ny Yy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfMV9HTGludF8xdWJfcmF3KCBHTHVieXRl ICp0LAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAq ZnJvbSwKICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAg R0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1 Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmly c3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7CiAg IGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAgICAg ICA7CiAgICAgICAgICB0W2ldID0gKCgoKEdMaW50ICopZilbMF0pIDwgMCA/IDAgOiAoR0x1Ynl0 ZSkgKCgoKEdMaW50ICopZilbMF0pID4+IDIzKSk7CiAgICAgIH0KICAgfQp9CgoKCgpzdGF0aWMg dm9pZCB0cmFuc18xX0dMaW50XzF1aV9yYXcoIEdMdWludCAqdCwKICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAg ICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5T dHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3Rh cnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAg ICh2b2lkKSBzdGFydDsKICAgKHZvaWQpIGZpcnN0OwoKICAgZm9yIChpID0gMCA7IGkgPCBuIDsg aSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgdFtpXSA9ICgo KChHTGludCAqKWYpWzBdKSA8IDAgPyAwIDogKEdMdWludCkgKCgoR0xpbnQgKilmKVswXSkpOwog ICAgICB9CiAgIH0KfQoKCgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzFfR0xpbnRfcmF3KHZvaWQp CnsKCiAgIDsKICAgZ2xfdHJhbnNfMXVpX3RhYlsoKDB4MTQwNCkgJiAweGYpXSA9IHRyYW5zXzFf R0xpbnRfMXVpX3JhdzsKCgogICA7CiAgIGdsX3RyYW5zXzF1Yl90YWJbKCgweDE0MDQpICYgMHhm KV0gPSB0cmFuc18xX0dMaW50XzF1Yl9yYXc7CiMgMTY4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVz YS9zcmMvdHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zXzRmX3RhYlsxXVsoKDB4MTQwNCkgJiAweGYp XSA9IHRyYW5zXzFfR0xpbnRfNGZfcmF3OwoKCn0KIyAyNjkgInRyYW5zbGF0ZS5jIiAyCiMgMjkz ICJ0cmFuc2xhdGUuYyIKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1w LmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0 aWMgdm9pZCB0cmFuc180X0dMdWludF80Zl9yYXcoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAg ICAgICAgICAgICAgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0g ZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0 ciArIHN0YXJ0ICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWlu dCBpOwoKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3RhcnQ7CiAgIGZvciAoaSA9IDAgOyBp IDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIGlm ICg0ID49IDEpIHRbaV1bMF0gPSAoR0xmbG9hdCkoICgoKEdMdWludCAqKWYpWzBdKSApOwogICAg ICAgICBpZiAoNCA+PSAyKSB0W2ldWzFdID0gKEdMZmxvYXQpKCAoKChHTHVpbnQgKilmKVsxXSkg KTsKICAgICAgICAgaWYgKDQgPj0gMykgdFtpXVsyXSA9IChHTGZsb2F0KSggKCgoR0x1aW50ICop ZilbMl0pICk7CiAgICAgICAgIGlmICg0ID09IDQpIHRbaV1bM10gPSAoR0xmbG9hdCkoICgoKEdM dWludCAqKWYpWzNdKSApOwogICAgICB9CiAgIH0KfQojIDg0ICIuLi8uLi8uLi8uLi9leHRyYXMv TWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzRfR0x1aW50XzR1Yl9yYXco IEdMdWJ5dGUgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9j bGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdM dWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVi eXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0 IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZv aWQpIGZpcnN0OwogICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7CiAg ICAgIHsKICAgICAgICAgOwogICAgICAgICBpZiAoNCA+PSAxKSB0W2ldWzBdID0gKEdMdWJ5dGUp ICgoKChHTHVpbnQgKilmKVswXSkgPj4gMjQpOwogICAgICAgICBpZiAoNCA+PSAyKSB0W2ldWzFd ID0gKEdMdWJ5dGUpICgoKChHTHVpbnQgKilmKVsxXSkgPj4gMjQpOwogICAgICAgICBpZiAoNCA+ PSAzKSB0W2ldWzJdID0gKEdMdWJ5dGUpICgoKChHTHVpbnQgKilmKVsyXSkgPj4gMjQpOwogICAg ICAgICBpZiAoNCA9PSA0KSB0W2ldWzNdID0gKEdMdWJ5dGUpICgoKChHTHVpbnQgKilmKVszXSkg Pj4gMjQpOyBlbHNlIHRbaV1bM10gPSAyNTU7CiAgICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8u Li8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNf NF9HTHVpbnRfcmF3KHZvaWQpCnsKIyAxNjUgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90 cmFuc190bXAuaCIKICAgZ2xfdHJhbnNfNHViX3RhYls0XVsoKDB4MTQwNSkgJiAweGYpXSA9IHRy YW5zXzRfR0x1aW50XzR1Yl9yYXc7CgoKICAgZ2xfdHJhbnNfNGZfdGFiWzRdWygoMHgxNDA1KSAm IDB4ZildID0gdHJhbnNfNF9HTHVpbnRfNGZfcmF3OwoKCn0KIyAyOTQgInRyYW5zbGF0ZS5jIiAy CgoKCgoKCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMg MzcgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQg dHJhbnNfM19HTHVpbnRfNGZfcmF3KCBHTGZsb2F0ICgqdClbNF0sCiAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAg ICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0 cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFy dCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAg ICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBp KyssIGYgKz0gc3RyaWRlKSB7CiAgICAgIHsKICAgICAgICAgOwogICAgICAgICBpZiAoMyA+PSAx KSB0W2ldWzBdID0gKEdMZmxvYXQpKCAoKChHTHVpbnQgKilmKVswXSkgKTsKICAgICAgICAgaWYg KDMgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgoR0x1aW50ICopZilbMV0pICk7CiAgICAg ICAgIGlmICgzID49IDMpIHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMdWludCAqKWYpWzJdKSAp OwogICAgICAgICBpZiAoMyA9PSA0KSB0W2ldWzNdID0gKEdMZmxvYXQpKCAoKChHTHVpbnQgKilm KVszXSkgKTsKICAgICAgfQogICB9Cn0KCgoKCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0x1aW50XzNm X3JhdyggR0xmbG9hdCAoKnQpWzNdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg Z2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQs IEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBH THVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNv bnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBmaXJzdDsKICAg KHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7 CiAgICAgIHsKICAgICAgICAgOwogICAgICAgICB0W2ldWzBdID0gKCgyLjBGICogKCgoKEdMdWlu dCAqKWYpWzBdKSkgKyAxLjBGKSAqICgxLjBGLzQyOTQ5NjcyOTQuMEYpKTsKICAgICAgICAgdFtp XVsxXSA9ICgoMi4wRiAqICgoKChHTHVpbnQgKilmKVsxXSkpICsgMS4wRikgKiAoMS4wRi80Mjk0 OTY3Mjk0LjBGKSk7CiAgICAgICAgIHRbaV1bMl0gPSAoKDIuMEYgKiAoKCgoR0x1aW50ICopZilb Ml0pKSArIDEuMEYpICogKDEuMEYvNDI5NDk2NzI5NC4wRikpOwogICAgICB9CiAgIH0KfQoKCgpz dGF0aWMgdm9pZCB0cmFuc18zX0dMdWludF80dWJfcmF3KCBHTHVieXRlICgqdClbNF0sCiAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAg ICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3Ry aWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZy b20tPlB0ciArIHN0YXJ0ICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAg IEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0g MCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAg ICAgaWYgKDMgPj0gMSkgdFtpXVswXSA9IChHTHVieXRlKSAoKCgoR0x1aW50ICopZilbMF0pID4+ IDI0KTsKICAgICAgICAgaWYgKDMgPj0gMikgdFtpXVsxXSA9IChHTHVieXRlKSAoKCgoR0x1aW50 ICopZilbMV0pID4+IDI0KTsKICAgICAgICAgaWYgKDMgPj0gMykgdFtpXVsyXSA9IChHTHVieXRl KSAoKCgoR0x1aW50ICopZilbMl0pID4+IDI0KTsKICAgICAgICAgaWYgKDMgPT0gNCkgdFtpXVsz XSA9IChHTHVieXRlKSAoKCgoR0x1aW50ICopZilbM10pID4+IDI0KTsgZWxzZSB0W2ldWzNdID0g MjU1OwogICAgICB9CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3Ry YW5zX3RtcC5oIgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzNfR0x1aW50X3Jhdyh2b2lkKQp7CiMg MTYxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIDsKICAgZ2xf dHJhbnNfM2ZfdGFiWygoMHgxNDA1KSAmIDB4ZildID0gdHJhbnNfM19HTHVpbnRfM2ZfcmF3OwoK CiAgIGdsX3RyYW5zXzR1Yl90YWJbM11bKCgweDE0MDUpICYgMHhmKV0gPSB0cmFuc18zX0dMdWlu dF80dWJfcmF3OwoKCiAgIGdsX3RyYW5zXzRmX3RhYlszXVsoKDB4MTQwNSkgJiAweGYpXSA9IHRy YW5zXzNfR0x1aW50XzRmX3JhdzsKCgp9CiMgMzAxICJ0cmFuc2xhdGUuYyIgMgoKCgoKIyAxICIu Li8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4v Li4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18yX0dMdWlu dF80Zl9yYXcoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0 YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29u c3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIHN0YXJ0ICogc3RyaWRlOwog ICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwoKICAgKHZvaWQpIGZpcnN0 OwogICAodm9pZCkgc3RhcnQ7CiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJp ZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIGlmICgyID49IDEpIHRbaV1bMF0gPSAo R0xmbG9hdCkoICgoKEdMdWludCAqKWYpWzBdKSApOwogICAgICAgICBpZiAoMiA+PSAyKSB0W2ld WzFdID0gKEdMZmxvYXQpKCAoKChHTHVpbnQgKilmKVsxXSkgKTsKICAgICAgICAgaWYgKDIgPj0g MykgdFtpXVsyXSA9IChHTGZsb2F0KSggKCgoR0x1aW50ICopZilbMl0pICk7CiAgICAgICAgIGlm ICgyID09IDQpIHRbaV1bM10gPSAoR0xmbG9hdCkoICgoKEdMdWludCAqKWYpWzNdKSApOwogICAg ICB9CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5o IgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzJfR0x1aW50X3Jhdyh2b2lkKQp7CiMgMTY4ICIuLi8u Li8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zXzRmX3RhYlsy XVsoKDB4MTQwNSkgJiAweGYpXSA9IHRyYW5zXzJfR0x1aW50XzRmX3JhdzsKCgp9CiMgMzA2ICJ0 cmFuc2xhdGUuYyIgMgoKCgoKCgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFu c190bXAuaCIgMQojIDM3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgi CnN0YXRpYyB2b2lkIHRyYW5zXzFfR0x1aW50XzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAg ICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJp ZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJv bS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAg R0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0g MCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAg ICAgaWYgKDEgPj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0x1aW50ICopZilbMF0pICk7 CiAgICAgICAgIGlmICgxID49IDIpIHRbaV1bMV0gPSAoR0xmbG9hdCkoICgoKEdMdWludCAqKWYp WzFdKSApOwogICAgICAgICBpZiAoMSA+PSAzKSB0W2ldWzJdID0gKEdMZmxvYXQpKCAoKChHTHVp bnQgKilmKVsyXSkgKTsKICAgICAgICAgaWYgKDEgPT0gNCkgdFtpXVszXSA9IChHTGZsb2F0KSgg KCgoR0x1aW50ICopZilbM10pICk7CiAgICAgIH0KICAgfQp9CiMgMTA4ICIuLi8uLi8uLi8uLi9l eHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzFfR0x1aW50XzF1 Yl9yYXcoIEdMdWJ5dGUgKnQsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xf Y2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LCBH THVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1 Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIHN0YXJ0ICogc3RyaWRlOwogICBjb25z dCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2 b2lkKSBmaXJzdDsKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewog ICAgICB7CiAgICAgICAgIDsKICAgICAgICAgIHRbaV0gPSAoR0x1Ynl0ZSkgKCgoKEdMdWludCAq KWYpWzBdKSA+PiAyNCk7CiAgICAgIH0KICAgfQp9CgoKCgpzdGF0aWMgdm9pZCB0cmFuc18xX0dM dWludF8xdWlfcmF3KCBHTHVpbnQgKnQsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0 YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29u c3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIHN0YXJ0ICogc3RyaWRlOwog ICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7 CiAgICh2b2lkKSBmaXJzdDsKCiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJp ZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIHRbaV0gPSAoKChHTHVpbnQgKilmKVsw XSk7CiAgICAgIH0KICAgfQp9CgoKCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfMV9HTHVpbnRfcmF3 KHZvaWQpCnsKCiAgIDsKICAgZ2xfdHJhbnNfMXVpX3RhYlsoKDB4MTQwNSkgJiAweGYpXSA9IHRy YW5zXzFfR0x1aW50XzF1aV9yYXc7CgoKICAgOwogICBnbF90cmFuc18xdWJfdGFiWygoMHgxNDA1 KSAmIDB4ZildID0gdHJhbnNfMV9HTHVpbnRfMXViX3JhdzsKIyAxNjggIi4uLy4uLy4uLy4uL2V4 dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKICAgZ2xfdHJhbnNfNGZfdGFiWzFdWygoMHgxNDA1 KSAmIDB4ZildID0gdHJhbnNfMV9HTHVpbnRfNGZfcmF3OwoKCn0KIyAzMTMgInRyYW5zbGF0ZS5j IiAyCiMgMzM2ICJ0cmFuc2xhdGUuYyIKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMv dHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3Rt cC5oIgpzdGF0aWMgdm9pZCB0cmFuc180X0dMZG91YmxlXzRmX3JhdyggR0xmbG9hdCAoKnQpWzRd LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9t LAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWlu dCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUg KikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0g ZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9y IChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsK ICAgICAgICAgaWYgKDQgPj0gMSkgdFtpXVswXSA9ICgoKEdMZG91YmxlICopZilbMF0pOwogICAg ICAgICBpZiAoNCA+PSAyKSB0W2ldWzFdID0gKCgoR0xkb3VibGUgKilmKVsxXSk7CiAgICAgICAg IGlmICg0ID49IDMpIHRbaV1bMl0gPSAoKChHTGRvdWJsZSAqKWYpWzJdKTsKICAgICAgICAgaWYg KDQgPT0gNCkgdFtpXVszXSA9ICgoKEdMZG91YmxlICopZilbM10pOwogICAgICB9CiAgIH0KfQoj IDg0ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lk IHRyYW5zXzRfR0xkb3VibGVfNHViX3JhdyggR0x1Ynl0ZSAoKnQpWzRdLAogICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAg ICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZy b20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIg KyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQg aTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7CiAgIGZvciAoaSA9IDAgOyBpIDwg biA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIGlmICg0 ID49IDEpIGRvIHsgdW5pb24geyBHTGZsb2F0IHI7IEdMdWludCBpOyB9IHRtcDsgdG1wLnIgPSAo KChHTGRvdWJsZSAqKWYpWzBdKTsgdFtpXVswXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAo KEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0g dG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hp bGUgKDApOwogICAgICAgICBpZiAoNCA+PSAyKSBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVp bnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xkb3VibGUgKilmKVsxXSk7IHRbaV1bMV0gPSAoKHRt cC5pID49IDB4M2Y3ZjAwMDApID8gKChHTGludCl0bXAuaSA8IDApID8gKEdMdWJ5dGUpMCA6IChH THVieXRlKTI1NSA6ICh0bXAuciA9IHRtcC5yKigyNTUuMEYvMjU2LjBGKSArIDMyNzY4LjBGLCAo R0x1Ynl0ZSl0bXAuaSkpOyB9IHdoaWxlICgwKTsKICAgICAgICAgaWYgKDQgPj0gMykgZG8geyB1 bmlvbiB7IEdMZmxvYXQgcjsgR0x1aW50IGk7IH0gdG1wOyB0bXAuciA9ICgoKEdMZG91YmxlICop ZilbMl0pOyB0W2ldWzJdID0gKCh0bXAuaSA+PSAweDNmN2YwMDAwKSA/ICgoR0xpbnQpdG1wLmkg PCAwKSA/IChHTHVieXRlKTAgOiAoR0x1Ynl0ZSkyNTUgOiAodG1wLnIgPSB0bXAuciooMjU1LjBG LzI1Ni4wRikgKyAzMjc2OC4wRiwgKEdMdWJ5dGUpdG1wLmkpKTsgfSB3aGlsZSAoMCk7CiAgICAg ICAgIGlmICg0ID09IDQpIGRvIHsgdW5pb24geyBHTGZsb2F0IHI7IEdMdWludCBpOyB9IHRtcDsg dG1wLnIgPSAoKChHTGRvdWJsZSAqKWYpWzNdKTsgdFtpXVszXSA9ICgodG1wLmkgPj0gMHgzZjdm MDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDog KHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5p KSk7IH0gd2hpbGUgKDApOyBlbHNlIHRbaV1bM10gPSAyNTU7CiAgICAgIH0KICAgfQp9CiMgMTUw ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGlu aXRfdHJhbnNfNF9HTGRvdWJsZV9yYXcodm9pZCkKewojIDE2NSAiLi4vLi4vLi4vLi4vZXh0cmFz L01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFuc180dWJfdGFiWzRdWygoMHgxNDBBKSAm IDB4ZildID0gdHJhbnNfNF9HTGRvdWJsZV80dWJfcmF3OwoKCiAgIGdsX3RyYW5zXzRmX3RhYls0 XVsoKDB4MTQwQSkgJiAweGYpXSA9IHRyYW5zXzRfR0xkb3VibGVfNGZfcmF3OwoKCn0KIyAzMzcg InRyYW5zbGF0ZS5jIiAyCgoKCgoKCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3Ry YW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAu aCIKc3RhdGljIHZvaWQgdHJhbnNfM19HTGRvdWJsZV80Zl9yYXcoIEdMZmxvYXQgKCp0KVs0XSwK ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwK ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQg c3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICop IGZyb20tPlB0ciArIHN0YXJ0ICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7 CiAgIEdMdWludCBpOwoKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3RhcnQ7CiAgIGZvciAo aSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAg ICAgICAgIGlmICgzID49IDEpIHRbaV1bMF0gPSAoKChHTGRvdWJsZSAqKWYpWzBdKTsKICAgICAg ICAgaWYgKDMgPj0gMikgdFtpXVsxXSA9ICgoKEdMZG91YmxlICopZilbMV0pOwogICAgICAgICBp ZiAoMyA+PSAzKSB0W2ldWzJdID0gKCgoR0xkb3VibGUgKilmKVsyXSk7CiAgICAgICAgIGlmICgz ID09IDQpIHRbaV1bM10gPSAoKChHTGRvdWJsZSAqKWYpWzNdKTsKICAgICAgfQogICB9Cn0KCgoK CnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xkb3VibGVfM2ZfcmF3KCBHTGZsb2F0ICgqdClbM10sCiAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAg ICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0 cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBm cm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwog ICBHTHVpbnQgaTsKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3RhcnQ7CiAgIGZvciAoaSA9 IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAg ICAgIHRbaV1bMF0gPSAoKChHTGRvdWJsZSAqKWYpWzBdKTsKICAgICAgICAgdFtpXVsxXSA9ICgo KEdMZG91YmxlICopZilbMV0pOwogICAgICAgICB0W2ldWzJdID0gKCgoR0xkb3VibGUgKilmKVsy XSk7CiAgICAgIH0KICAgfQp9CgoKCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xkb3VibGVfNHViX3Jh dyggR0x1Ynl0ZSAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGds X2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwg R0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdM dWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29u c3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAo dm9pZCkgZmlyc3Q7CiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsK ICAgICAgewogICAgICAgICA7CiAgICAgICAgIGlmICgzID49IDEpIGRvIHsgdW5pb24geyBHTGZs b2F0IHI7IEdMdWludCBpOyB9IHRtcDsgdG1wLnIgPSAoKChHTGRvdWJsZSAqKWYpWzBdKTsgdFtp XVswXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1 Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsg MzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOwogICAgICAgICBpZiAoMyA+ PSAyKSBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgo R0xkb3VibGUgKilmKVsxXSk7IHRbaV1bMV0gPSAoKHRtcC5pID49IDB4M2Y3ZjAwMDApID8gKChH TGludCl0bXAuaSA8IDApID8gKEdMdWJ5dGUpMCA6IChHTHVieXRlKTI1NSA6ICh0bXAuciA9IHRt cC5yKigyNTUuMEYvMjU2LjBGKSArIDMyNzY4LjBGLCAoR0x1Ynl0ZSl0bXAuaSkpOyB9IHdoaWxl ICgwKTsKICAgICAgICAgaWYgKDMgPj0gMykgZG8geyB1bmlvbiB7IEdMZmxvYXQgcjsgR0x1aW50 IGk7IH0gdG1wOyB0bXAuciA9ICgoKEdMZG91YmxlICopZilbMl0pOyB0W2ldWzJdID0gKCh0bXAu aSA+PSAweDNmN2YwMDAwKSA/ICgoR0xpbnQpdG1wLmkgPCAwKSA/IChHTHVieXRlKTAgOiAoR0x1 Ynl0ZSkyNTUgOiAodG1wLnIgPSB0bXAuciooMjU1LjBGLzI1Ni4wRikgKyAzMjc2OC4wRiwgKEdM dWJ5dGUpdG1wLmkpKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgIGlmICgzID09IDQpIGRvIHsgdW5p b24geyBHTGZsb2F0IHI7IEdMdWludCBpOyB9IHRtcDsgdG1wLnIgPSAoKChHTGRvdWJsZSAqKWYp WzNdKTsgdFtpXVszXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwg MCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8y NTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOyBlbHNlIHRb aV1bM10gPSAyNTU7CiAgICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVz YS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfM19HTGRvdWJsZV9yYXco dm9pZCkKewojIDE2MSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgog ICA7CiAgIGdsX3RyYW5zXzNmX3RhYlsoKDB4MTQwQSkgJiAweGYpXSA9IHRyYW5zXzNfR0xkb3Vi bGVfM2ZfcmF3OwoKCiAgIGdsX3RyYW5zXzR1Yl90YWJbM11bKCgweDE0MEEpICYgMHhmKV0gPSB0 cmFuc18zX0dMZG91YmxlXzR1Yl9yYXc7CgoKICAgZ2xfdHJhbnNfNGZfdGFiWzNdWygoMHgxNDBB KSAmIDB4ZildID0gdHJhbnNfM19HTGRvdWJsZV80Zl9yYXc7CgoKfQojIDM0NCAidHJhbnNsYXRl LmMiIDIKCgoKCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAx CiMgMzcgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZv aWQgdHJhbnNfMl9HTGRvdWJsZV80Zl9yYXcoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAg ICAgICAgICAgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJv bS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciAr IHN0YXJ0ICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBp OwoKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3RhcnQ7CiAgIGZvciAoaSA9IDAgOyBpIDwg biA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIGlmICgy ID49IDEpIHRbaV1bMF0gPSAoKChHTGRvdWJsZSAqKWYpWzBdKTsKICAgICAgICAgaWYgKDIgPj0g MikgdFtpXVsxXSA9ICgoKEdMZG91YmxlICopZilbMV0pOwogICAgICAgICBpZiAoMiA+PSAzKSB0 W2ldWzJdID0gKCgoR0xkb3VibGUgKilmKVsyXSk7CiAgICAgICAgIGlmICgyID09IDQpIHRbaV1b M10gPSAoKChHTGRvdWJsZSAqKWYpWzNdKTsKICAgICAgfQogICB9Cn0KIyAxNTAgIi4uLy4uLy4u Ly4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgaW5pdF90cmFuc18y X0dMZG91YmxlX3Jhdyh2b2lkKQp7CiMgMTY4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMv dHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zXzRmX3RhYlsyXVsoKDB4MTQwQSkgJiAweGYpXSA9IHRy YW5zXzJfR0xkb3VibGVfNGZfcmF3OwoKCn0KIyAzNDkgInRyYW5zbGF0ZS5jIiAyCgoKCgoKCiMg MSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4u Ly4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfMV9H TGRvdWJsZV80Zl9yYXcoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgR0x1 aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsK ICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIHN0YXJ0ICogc3Ry aWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwoKICAgKHZvaWQp IGZpcnN0OwogICAodm9pZCkgc3RhcnQ7CiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiAr PSBzdHJpZGUpIHsKICAgICAgewogICAgICAgICA7CiAgICAgICAgIGlmICgxID49IDEpIHRbaV1b MF0gPSAoKChHTGRvdWJsZSAqKWYpWzBdKTsKICAgICAgICAgaWYgKDEgPj0gMikgdFtpXVsxXSA9 ICgoKEdMZG91YmxlICopZilbMV0pOwogICAgICAgICBpZiAoMSA+PSAzKSB0W2ldWzJdID0gKCgo R0xkb3VibGUgKilmKVsyXSk7CiAgICAgICAgIGlmICgxID09IDQpIHRbaV1bM10gPSAoKChHTGRv dWJsZSAqKWYpWzNdKTsKICAgICAgfQogICB9Cn0KIyAxMDggIi4uLy4uLy4uLy4uL2V4dHJhcy9N ZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfMV9HTGRvdWJsZV8xdWJfcmF3 KCBHTHVieXRlICp0LAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVu dF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50 IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUg KmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1 Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkg Zmlyc3Q7CiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAg ewogICAgICAgICA7CiAgICAgICAgICBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsg fSB0bXA7IHRtcC5yID0gKCgoR0xkb3VibGUgKilmKVswXSk7IHRbaV0gPSAoKHRtcC5pID49IDB4 M2Y3ZjAwMDApID8gKChHTGludCl0bXAuaSA8IDApID8gKEdMdWJ5dGUpMCA6IChHTHVieXRlKTI1 NSA6ICh0bXAuciA9IHRtcC5yKigyNTUuMEYvMjU2LjBGKSArIDMyNzY4LjBGLCAoR0x1Ynl0ZSl0 bXAuaSkpOyB9IHdoaWxlICgwKTsKICAgICAgfQogICB9Cn0KCgoKCnN0YXRpYyB2b2lkIHRyYW5z XzFfR0xkb3VibGVfMXVpX3JhdyggR0x1aW50ICp0LAogICAgICAgICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgIEdM dWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7 CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0 cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQp IHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7CgogICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYg Kz0gc3RyaWRlKSB7CiAgICAgIHsKICAgICAgICAgOwogICAgICAgICB0W2ldID0gKEdMdWludCkg KEdMaW50KSAoKChHTGRvdWJsZSAqKWYpWzBdKTsKICAgICAgfQogICB9Cn0KCgoKc3RhdGljIHZv aWQgaW5pdF90cmFuc18xX0dMZG91YmxlX3Jhdyh2b2lkKQp7CgogICA7CiAgIGdsX3RyYW5zXzF1 aV90YWJbKCgweDE0MEEpICYgMHhmKV0gPSB0cmFuc18xX0dMZG91YmxlXzF1aV9yYXc7CgoKICAg OwogICBnbF90cmFuc18xdWJfdGFiWygoMHgxNDBBKSAmIDB4ZildID0gdHJhbnNfMV9HTGRvdWJs ZV8xdWJfcmF3OwojIDE2OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5o IgogICBnbF90cmFuc180Zl90YWJbMV1bKCgweDE0MEEpICYgMHhmKV0gPSB0cmFuc18xX0dMZG91 YmxlXzRmX3JhdzsKCgp9CiMgMzU2ICJ0cmFuc2xhdGUuYyIgMgojIDM2OCAidHJhbnNsYXRlLmMi CiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4u Ly4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNf NF9HTGZsb2F0XzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBH THVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVC OwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBz dHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9p ZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBm ICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYgKDQgPj0gMSkgdFtp XVswXSA9ICgoKEdMZmxvYXQgKilmKVswXSk7CiAgICAgICAgIGlmICg0ID49IDIpIHRbaV1bMV0g PSAoKChHTGZsb2F0ICopZilbMV0pOwogICAgICAgICBpZiAoNCA+PSAzKSB0W2ldWzJdID0gKCgo R0xmbG9hdCAqKWYpWzJdKTsKICAgICAgICAgaWYgKDQgPT0gNCkgdFtpXVszXSA9ICgoKEdMZmxv YXQgKilmKVszXSk7CiAgICAgIH0KICAgfQp9CiMgODQgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNh L3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfNF9HTGZsb2F0XzR1Yl9yYXcoIEdM dWJ5dGUgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGll bnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWlu dCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRl ICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdM dWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZvaWQp IGZpcnN0OwogICBmb3IgKGkgPSAwIDsgaSA8IG4gOyBpKyssIGYgKz0gc3RyaWRlKSB7CiAgICAg IHsKICAgICAgICAgOwogICAgICAgICBpZiAoNCA+PSAxKSBkbyB7IHVuaW9uIHsgR0xmbG9hdCBy OyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xmbG9hdCAqKWYpWzBdKTsgdFtpXVswXSA9 ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0ZSkw IDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3Njgu MEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOwogICAgICAgICBpZiAoNCA+PSAyKSBk byB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xmbG9h dCAqKWYpWzFdKTsgdFtpXVsxXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRt cC5pIDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1 NS4wRi8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOwog ICAgICAgICBpZiAoNCA+PSAzKSBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0 bXA7IHRtcC5yID0gKCgoR0xmbG9hdCAqKWYpWzJdKTsgdFtpXVsyXSA9ICgodG1wLmkgPj0gMHgz ZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1 IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRt cC5pKSk7IH0gd2hpbGUgKDApOwogICAgICAgICBpZiAoNCA9PSA0KSBkbyB7IHVuaW9uIHsgR0xm bG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xmbG9hdCAqKWYpWzNdKTsgdFtp XVszXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1 Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsg MzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOyBlbHNlIHRbaV1bM10gPSAy NTU7CiAgICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJh bnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfNF9HTGZsb2F0X3Jhdyh2b2lkKQp7CiMg MTY1ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5z XzR1Yl90YWJbNF1bKCgweDE0MDYpICYgMHhmKV0gPSB0cmFuc180X0dMZmxvYXRfNHViX3JhdzsK CgogICBnbF90cmFuc180Zl90YWJbNF1bKCgweDE0MDYpICYgMHhmKV0gPSB0cmFuc180X0dMZmxv YXRfNGZfcmF3OwoKCn0KIyAzNjkgInRyYW5zbGF0ZS5jIiAyCgoKCgoKCiMgMSAiLi4vLi4vLi4v Li4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4uLy4uLy4uL2V4dHJh cy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfM19HTGZsb2F0XzRmX3Jh dyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xf Y2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdM dWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVi eXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0 IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2 b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewog ICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYgKDMgPj0gMSkgdFtpXVswXSA9ICgoKEdMZmxv YXQgKilmKVswXSk7CiAgICAgICAgIGlmICgzID49IDIpIHRbaV1bMV0gPSAoKChHTGZsb2F0ICop ZilbMV0pOwogICAgICAgICBpZiAoMyA+PSAzKSB0W2ldWzJdID0gKCgoR0xmbG9hdCAqKWYpWzJd KTsKICAgICAgICAgaWYgKDMgPT0gNCkgdFtpXVszXSA9ICgoKEdMZmxvYXQgKilmKVszXSk7CiAg ICAgIH0KICAgfQp9CgoKCgpzdGF0aWMgdm9pZCB0cmFuc18zX0dMZmxvYXRfM2ZfcmF3KCBHTGZs b2F0ICgqdClbM10sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRf YXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4p CnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYg PSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0 ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3Rh cnQ7CiAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewog ICAgICAgICA7CiAgICAgICAgIHRbaV1bMF0gPSAoKChHTGZsb2F0ICopZilbMF0pOwogICAgICAg ICB0W2ldWzFdID0gKCgoR0xmbG9hdCAqKWYpWzFdKTsKICAgICAgICAgdFtpXVsyXSA9ICgoKEdM ZmxvYXQgKilmKVsyXSk7CiAgICAgIH0KICAgfQp9CgoKCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xm bG9hdF80dWJfcmF3KCBHTHVieXRlICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1 aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsK ICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIHN0YXJ0ICogc3Ry aWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkg c3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9 IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYgKDMgPj0gMSkgZG8geyB1 bmlvbiB7IEdMZmxvYXQgcjsgR0x1aW50IGk7IH0gdG1wOyB0bXAuciA9ICgoKEdMZmxvYXQgKilm KVswXSk7IHRbaV1bMF0gPSAoKHRtcC5pID49IDB4M2Y3ZjAwMDApID8gKChHTGludCl0bXAuaSA8 IDApID8gKEdMdWJ5dGUpMCA6IChHTHVieXRlKTI1NSA6ICh0bXAuciA9IHRtcC5yKigyNTUuMEYv MjU2LjBGKSArIDMyNzY4LjBGLCAoR0x1Ynl0ZSl0bXAuaSkpOyB9IHdoaWxlICgwKTsKICAgICAg ICAgaWYgKDMgPj0gMikgZG8geyB1bmlvbiB7IEdMZmxvYXQgcjsgR0x1aW50IGk7IH0gdG1wOyB0 bXAuciA9ICgoKEdMZmxvYXQgKilmKVsxXSk7IHRbaV1bMV0gPSAoKHRtcC5pID49IDB4M2Y3ZjAw MDApID8gKChHTGludCl0bXAuaSA8IDApID8gKEdMdWJ5dGUpMCA6IChHTHVieXRlKTI1NSA6ICh0 bXAuciA9IHRtcC5yKigyNTUuMEYvMjU2LjBGKSArIDMyNzY4LjBGLCAoR0x1Ynl0ZSl0bXAuaSkp OyB9IHdoaWxlICgwKTsKICAgICAgICAgaWYgKDMgPj0gMykgZG8geyB1bmlvbiB7IEdMZmxvYXQg cjsgR0x1aW50IGk7IH0gdG1wOyB0bXAuciA9ICgoKEdMZmxvYXQgKilmKVsyXSk7IHRbaV1bMl0g PSAoKHRtcC5pID49IDB4M2Y3ZjAwMDApID8gKChHTGludCl0bXAuaSA8IDApID8gKEdMdWJ5dGUp MCA6IChHTHVieXRlKTI1NSA6ICh0bXAuciA9IHRtcC5yKigyNTUuMEYvMjU2LjBGKSArIDMyNzY4 LjBGLCAoR0x1Ynl0ZSl0bXAuaSkpOyB9IHdoaWxlICgwKTsKICAgICAgICAgaWYgKDMgPT0gNCkg ZG8geyB1bmlvbiB7IEdMZmxvYXQgcjsgR0x1aW50IGk7IH0gdG1wOyB0bXAuciA9ICgoKEdMZmxv YXQgKilmKVszXSk7IHRbaV1bM10gPSAoKHRtcC5pID49IDB4M2Y3ZjAwMDApID8gKChHTGludCl0 bXAuaSA8IDApID8gKEdMdWJ5dGUpMCA6IChHTHVieXRlKTI1NSA6ICh0bXAuciA9IHRtcC5yKigy NTUuMEYvMjU2LjBGKSArIDMyNzY4LjBGLCAoR0x1Ynl0ZSl0bXAuaSkpOyB9IHdoaWxlICgwKTsg ZWxzZSB0W2ldWzNdID0gMjU1OwogICAgICB9CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0 cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzNfR0xmbG9h dF9yYXcodm9pZCkKewojIDE2MSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3Rt cC5oIgogICA7CiAgIGdsX3RyYW5zXzNmX3RhYlsoKDB4MTQwNikgJiAweGYpXSA9IHRyYW5zXzNf R0xmbG9hdF8zZl9yYXc7CgoKICAgZ2xfdHJhbnNfNHViX3RhYlszXVsoKDB4MTQwNikgJiAweGYp XSA9IHRyYW5zXzNfR0xmbG9hdF80dWJfcmF3OwoKCiAgIGdsX3RyYW5zXzRmX3RhYlszXVsoKDB4 MTQwNikgJiAweGYpXSA9IHRyYW5zXzNfR0xmbG9hdF80Zl9yYXc7CgoKfQojIDM3NiAidHJhbnNs YXRlLmMiIDIKCgoKCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5o IiAxCiMgMzcgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGlj IHZvaWQgdHJhbnNfMl9HTGZsb2F0XzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAg ICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBm cm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRy ICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50 IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkg PCBuIDsgaSsrLCBmICs9IHN0cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYg KDIgPj0gMSkgdFtpXVswXSA9ICgoKEdMZmxvYXQgKilmKVswXSk7CiAgICAgICAgIGlmICgyID49 IDIpIHRbaV1bMV0gPSAoKChHTGZsb2F0ICopZilbMV0pOwogICAgICAgICBpZiAoMiA+PSAzKSB0 W2ldWzJdID0gKCgoR0xmbG9hdCAqKWYpWzJdKTsKICAgICAgICAgaWYgKDIgPT0gNCkgdFtpXVsz XSA9ICgoKEdMZmxvYXQgKilmKVszXSk7CiAgICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8uLi8u Li9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfMl9H TGZsb2F0X3Jhdyh2b2lkKQp7CiMgMTY4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJh bnNfdG1wLmgiCiAgIGdsX3RyYW5zXzRmX3RhYlsyXVsoKDB4MTQwNikgJiAweGYpXSA9IHRyYW5z XzJfR0xmbG9hdF80Zl9yYXc7CgoKfQojIDM4MSAidHJhbnNsYXRlLmMiIDIKCgoKCgoKCiMgMSAi Li4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4uLy4u Ly4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfMV9HTGZs b2F0XzRmX3JhdyggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQg c3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBj b25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7 CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmly c3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0 cmlkZSkgewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgaWYgKDEgPj0gMSkgdFtpXVswXSA9 ICgoKEdMZmxvYXQgKilmKVswXSk7CiAgICAgICAgIGlmICgxID49IDIpIHRbaV1bMV0gPSAoKChH TGZsb2F0ICopZilbMV0pOwogICAgICAgICBpZiAoMSA+PSAzKSB0W2ldWzJdID0gKCgoR0xmbG9h dCAqKWYpWzJdKTsKICAgICAgICAgaWYgKDEgPT0gNCkgdFtpXVszXSA9ICgoKEdMZmxvYXQgKilm KVszXSk7CiAgICAgIH0KICAgfQp9CiMgMTA4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMv dHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzFfR0xmbG9hdF8xdWJfcmF3KCBHTHVieXRl ICp0LAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAq ZnJvbSwKICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAg R0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1 Ynl0ZSAqKSBmcm9tLT5QdHIgKyBzdGFydCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmly c3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7CiAg IGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgewogICAgICAg ICA7CiAgICAgICAgICBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7IHRt cC5yID0gKCgoR0xmbG9hdCAqKWYpWzBdKTsgdFtpXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkg PyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5y ID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0g d2hpbGUgKDApOwogICAgICB9CiAgIH0KfQoKCgoKc3RhdGljIHZvaWQgdHJhbnNfMV9HTGZsb2F0 XzF1aV9yYXcoIEdMdWludCAqdCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBn bF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQs IEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBH THVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgc3RhcnQgKiBzdHJpZGU7CiAgIGNv bnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAg KHZvaWQpIGZpcnN0OwoKICAgZm9yIChpID0gMCA7IGkgPCBuIDsgaSsrLCBmICs9IHN0cmlkZSkg ewogICAgICB7CiAgICAgICAgIDsKICAgICAgICAgdFtpXSA9IChHTHVpbnQpIChHTGludCkgKCgo R0xmbG9hdCAqKWYpWzBdKTsKICAgICAgfQogICB9Cn0KCgoKc3RhdGljIHZvaWQgaW5pdF90cmFu c18xX0dMZmxvYXRfcmF3KHZvaWQpCnsKCiAgIDsKICAgZ2xfdHJhbnNfMXVpX3RhYlsoKDB4MTQw NikgJiAweGYpXSA9IHRyYW5zXzFfR0xmbG9hdF8xdWlfcmF3OwoKCiAgIDsKICAgZ2xfdHJhbnNf MXViX3RhYlsoKDB4MTQwNikgJiAweGYpXSA9IHRyYW5zXzFfR0xmbG9hdF8xdWJfcmF3OwojIDE2 OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFuc180 Zl90YWJbMV1bKCgweDE0MDYpICYgMHhmKV0gPSB0cmFuc18xX0dMZmxvYXRfNGZfcmF3OwoKCn0K IyAzODkgInRyYW5zbGF0ZS5jIiAyCiMgMzk4ICJ0cmFuc2xhdGUuYyIKc3RhdGljIHZvaWQgdHJh bnNfNF9HTHVieXRlXzR1Yl9yYXcgKEdMdWJ5dGUgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsIEdMdWludCBu ICkKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAq ZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIHN0YXJ0ICogc3RyaWRlOwogICBHTHVpbnQgaTsK CiAgIGlmICgoKCgobG9uZykgZiB8IChsb25nKSBzdHJpZGUpKSAmIDNMKSA9PSAwTCkgewoKCiAg ICAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJpZGUpIHsKICAgICAgICAgZG8g eyAqKChHTHVpbnQqKSh0W2ldKSkgPSAqKChHTHVpbnQqKShmKSk7IH0gd2hpbGUgKDApOwogICAg ICB9CiAgIH0gZWxzZSB7CiAgICAgIGZvciAoaSA9IDAgOyBpIDwgbiA7IGkrKywgZiArPSBzdHJp ZGUpIHsKICAgICAgICAgdFtpXVswXSA9IGZbMF07CiAgICAgICAgIHRbaV1bMV0gPSBmWzFdOwog ICAgICAgICB0W2ldWzJdID0gZlsyXTsKICAgICAgICAgdFtpXVszXSA9IGZbM107CiAgICAgIH0K ICAgfQp9CgoKc3RhdGljIHZvaWQgaW5pdF90cmFuc2xhdGVfcmF3KHZvaWQpCnsKICAgbWVtc2V0 KCAodm9pZCAqKSAoZ2xfdHJhbnNfMXVpX3RhYiksIChpbnQpICgwKSwgKHNpemVfdCkgKHNpemVv ZihnbF90cmFuc18xdWlfdGFiKSkgKTsKICAgbWVtc2V0KCAodm9pZCAqKSAoZ2xfdHJhbnNfMXVi X3RhYiksIChpbnQpICgwKSwgKHNpemVfdCkgKHNpemVvZihnbF90cmFuc18xdWJfdGFiKSkgKTsK ICAgbWVtc2V0KCAodm9pZCAqKSAoZ2xfdHJhbnNfM2ZfdGFiKSwgKGludCkgKDApLCAoc2l6ZV90 KSAoc2l6ZW9mKGdsX3RyYW5zXzNmX3RhYikpICk7CiAgIG1lbXNldCggKHZvaWQgKikgKGdsX3Ry YW5zXzR1Yl90YWIpLCAoaW50KSAoMCksIChzaXplX3QpIChzaXplb2YoZ2xfdHJhbnNfNHViX3Rh YikpICk7CiAgIG1lbXNldCggKHZvaWQgKikgKGdsX3RyYW5zXzRmX3RhYiksIChpbnQpICgwKSwg KHNpemVfdCkgKHNpemVvZihnbF90cmFuc180Zl90YWIpKSApOwoKICAgZ2xfdHJhbnNfNHViX3Rh Yls0XVsoKDB4MTQwMSkgJiAweGYpXSA9IHRyYW5zXzRfR0x1Ynl0ZV80dWJfcmF3OwoKICAgaW5p dF90cmFuc180X0dMYnl0ZV9yYXcoKTsKICAgaW5pdF90cmFuc18zX0dMYnl0ZV9yYXcoKTsKICAg aW5pdF90cmFuc18yX0dMYnl0ZV9yYXcoKTsKICAgaW5pdF90cmFuc18xX0dMYnl0ZV9yYXcoKTsK ICAgaW5pdF90cmFuc18xX0dMdWJ5dGVfcmF3KCk7CiAgIGluaXRfdHJhbnNfM19HTHVieXRlX3Jh dygpOwogICBpbml0X3RyYW5zXzRfR0xzaG9ydF9yYXcoKTsKICAgaW5pdF90cmFuc18zX0dMc2hv cnRfcmF3KCk7CiAgIGluaXRfdHJhbnNfMl9HTHNob3J0X3JhdygpOwogICBpbml0X3RyYW5zXzFf R0xzaG9ydF9yYXcoKTsKICAgaW5pdF90cmFuc180X0dMdXNob3J0X3JhdygpOwogICBpbml0X3Ry YW5zXzNfR0x1c2hvcnRfcmF3KCk7CiAgIGluaXRfdHJhbnNfMl9HTHVzaG9ydF9yYXcoKTsKICAg aW5pdF90cmFuc18xX0dMdXNob3J0X3JhdygpOwogICBpbml0X3RyYW5zXzRfR0xpbnRfcmF3KCk7 CiAgIGluaXRfdHJhbnNfM19HTGludF9yYXcoKTsKICAgaW5pdF90cmFuc18yX0dMaW50X3Jhdygp OwogICBpbml0X3RyYW5zXzFfR0xpbnRfcmF3KCk7CiAgIGluaXRfdHJhbnNfNF9HTHVpbnRfcmF3 KCk7CiAgIGluaXRfdHJhbnNfM19HTHVpbnRfcmF3KCk7CiAgIGluaXRfdHJhbnNfMl9HTHVpbnRf cmF3KCk7CiAgIGluaXRfdHJhbnNfMV9HTHVpbnRfcmF3KCk7CiAgIGluaXRfdHJhbnNfNF9HTGRv dWJsZV9yYXcoKTsKICAgaW5pdF90cmFuc18zX0dMZG91YmxlX3JhdygpOwogICBpbml0X3RyYW5z XzJfR0xkb3VibGVfcmF3KCk7CiAgIGluaXRfdHJhbnNfMV9HTGRvdWJsZV9yYXcoKTsKICAgaW5p dF90cmFuc180X0dMZmxvYXRfcmF3KCk7CiAgIGluaXRfdHJhbnNfM19HTGZsb2F0X3JhdygpOwog ICBpbml0X3RyYW5zXzJfR0xmbG9hdF9yYXcoKTsKICAgaW5pdF90cmFuc18xX0dMZmxvYXRfcmF3 KCk7Cn0KIyA1MTIgInRyYW5zbGF0ZS5jIgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3Ny Yy90cmFuc190bXAuaCIgMQojIDM3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNf dG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzRfR0xieXRlXzRmX2VsdCggR0xmbG9hdCAoKnQpWzRd LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9t LAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWlu dCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJv bS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciAr IDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7Cgog ICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwg biA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7 CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICBpZiAoNCA+ PSAxKSB0W2ldWzBdID0gKEdMZmxvYXQpKCAoKChHTGJ5dGUgKilmKVswXSkgKTsKICAgICAgICAg aWYgKDQgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgoR0xieXRlICopZilbMV0pICk7CiAg ICAgICAgIGlmICg0ID49IDMpIHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMYnl0ZSAqKWYpWzJd KSApOwogICAgICAgICBpZiAoNCA9PSA0KSB0W2ldWzNdID0gKEdMZmxvYXQpKCAoKChHTGJ5dGUg KilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KIyA4NCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Ev c3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc180X0dMYnl0ZV80dWJfZWx0KCBHTHVi eXRlICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50 X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50 ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50 IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAq KSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAg IEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0g c3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNo KSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAg ICAgICBpZiAoNCA+PSAxKSB0W2ldWzBdID0gKCgoKEdMYnl0ZSAqKWYpWzBdKSA8IDAgPyAwIDog KEdMdWJ5dGUpICgoKEdMYnl0ZSAqKWYpWzBdKSk7CiAgICAgICAgIGlmICg0ID49IDIpIHRbaV1b MV0gPSAoKCgoR0xieXRlICopZilbMV0pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoR0xieXRlICop ZilbMV0pKTsKICAgICAgICAgaWYgKDQgPj0gMykgdFtpXVsyXSA9ICgoKChHTGJ5dGUgKilmKVsy XSkgPCAwID8gMCA6IChHTHVieXRlKSAoKChHTGJ5dGUgKilmKVsyXSkpOwogICAgICAgICBpZiAo NCA9PSA0KSB0W2ldWzNdID0gKCgoKEdMYnl0ZSAqKWYpWzNdKSA8IDAgPyAwIDogKEdMdWJ5dGUp ICgoKEdMYnl0ZSAqKWYpWzNdKSk7IGVsc2UgdFtpXVszXSA9IDI1NTsKICAgICAgfQogICB9Cn0K IyAxNTAgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZv aWQgaW5pdF90cmFuc180X0dMYnl0ZV9lbHQodm9pZCkKewojIDE2NSAiLi4vLi4vLi4vLi4vZXh0 cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFuc19lbHRfNHViX3RhYls0XVsoKDB4 MTQwMCkgJiAweGYpXSA9IHRyYW5zXzRfR0xieXRlXzR1Yl9lbHQ7CgoKICAgZ2xfdHJhbnNfZWx0 XzRmX3RhYls0XVsoKDB4MTQwMCkgJiAweGYpXSA9IHRyYW5zXzRfR0xieXRlXzRmX2VsdDsKCgp9 CiMgNTEzICJ0cmFuc2xhdGUuYyIgMgoKCgoKCgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNh L3NyYy90cmFuc190bXAuaCIgMQojIDM3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJh bnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xieXRlXzRmX2VsdCggR0xmbG9hdCAoKnQp WzRdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpm cm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdM dWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0g ZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0 ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7 CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gc3RhcnQgOyBp IDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIw KSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICBpZiAo MyA+PSAxKSB0W2ldWzBdID0gKEdMZmxvYXQpKCAoKChHTGJ5dGUgKilmKVswXSkgKTsKICAgICAg ICAgaWYgKDMgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgoR0xieXRlICopZilbMV0pICk7 CiAgICAgICAgIGlmICgzID49IDMpIHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMYnl0ZSAqKWYp WzJdKSApOwogICAgICAgICBpZiAoMyA9PSA0KSB0W2ldWzNdID0gKEdMZmxvYXQpKCAoKChHTGJ5 dGUgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KCgoKCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xi eXRlXzNmX2VsdCggR0xmbG9hdCAoKnQpWzNdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQg KmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQg bikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAq ZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUg KmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0 OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgo ZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAq IHN0cmlkZTs7CiAgICAgICAgIHRbaV1bMF0gPSAoKDIuMEYgKiAoKCgoR0xieXRlICopZilbMF0p KSArIDEuMEYpICogKDEuMEYvMjU1LjBGKSk7CiAgICAgICAgIHRbaV1bMV0gPSAoKDIuMEYgKiAo KCgoR0xieXRlICopZilbMV0pKSArIDEuMEYpICogKDEuMEYvMjU1LjBGKSk7CiAgICAgICAgIHRb aV1bMl0gPSAoKDIuMEYgKiAoKCgoR0xieXRlICopZilbMl0pKSArIDEuMEYpICogKDEuMEYvMjU1 LjBGKSk7CiAgICAgIH0KICAgfQp9CgoKCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xieXRlXzR1Yl9l bHQoIEdMdWJ5dGUgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBn bF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdz LCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewog ICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChH THVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0 ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZvaWQpIGZpcnN0OwogICBm b3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3Nb aV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlk ZTs7CiAgICAgICAgIGlmICgzID49IDEpIHRbaV1bMF0gPSAoKCgoR0xieXRlICopZilbMF0pIDwg MCA/IDAgOiAoR0x1Ynl0ZSkgKCgoR0xieXRlICopZilbMF0pKTsKICAgICAgICAgaWYgKDMgPj0g MikgdFtpXVsxXSA9ICgoKChHTGJ5dGUgKilmKVsxXSkgPCAwID8gMCA6IChHTHVieXRlKSAoKChH TGJ5dGUgKilmKVsxXSkpOwogICAgICAgICBpZiAoMyA+PSAzKSB0W2ldWzJdID0gKCgoKEdMYnl0 ZSAqKWYpWzJdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgoKEdMYnl0ZSAqKWYpWzJdKSk7CiAgICAg ICAgIGlmICgzID09IDQpIHRbaV1bM10gPSAoKCgoR0xieXRlICopZilbM10pIDwgMCA/IDAgOiAo R0x1Ynl0ZSkgKCgoR0xieXRlICopZilbM10pKTsgZWxzZSB0W2ldWzNdID0gMjU1OwogICAgICB9 CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpz dGF0aWMgdm9pZCBpbml0X3RyYW5zXzNfR0xieXRlX2VsdCh2b2lkKQp7CiMgMTYxICIuLi8uLi8u Li8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIDsKICAgZ2xfdHJhbnNfZWx0XzNm X3RhYlsoKDB4MTQwMCkgJiAweGYpXSA9IHRyYW5zXzNfR0xieXRlXzNmX2VsdDsKCgogICBnbF90 cmFuc19lbHRfNHViX3RhYlszXVsoKDB4MTQwMCkgJiAweGYpXSA9IHRyYW5zXzNfR0xieXRlXzR1 Yl9lbHQ7CgoKICAgZ2xfdHJhbnNfZWx0XzRmX3RhYlszXVsoKDB4MTQwMCkgJiAweGYpXSA9IHRy YW5zXzNfR0xieXRlXzRmX2VsdDsKCgp9CiMgNTIwICJ0cmFuc2xhdGUuYyIgMgoKCgoKIyAxICIu Li8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4v Li4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18yX0dMYnl0 ZV80Zl9lbHQoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpm bGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4p CnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYg PSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpm aXJzdCA9IGY7CiAgIEdMdWludCBpOwoKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3RhcnQ7 CiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYgKChm bGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICog c3RyaWRlOzsKICAgICAgICAgaWYgKDIgPj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0xi eXRlICopZilbMF0pICk7CiAgICAgICAgIGlmICgyID49IDIpIHRbaV1bMV0gPSAoR0xmbG9hdCko ICgoKEdMYnl0ZSAqKWYpWzFdKSApOwogICAgICAgICBpZiAoMiA+PSAzKSB0W2ldWzJdID0gKEdM ZmxvYXQpKCAoKChHTGJ5dGUgKilmKVsyXSkgKTsKICAgICAgICAgaWYgKDIgPT0gNCkgdFtpXVsz XSA9IChHTGZsb2F0KSggKCgoR0xieXRlICopZilbM10pICk7CiAgICAgIH0KICAgfQp9CiMgMTUw ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGlu aXRfdHJhbnNfMl9HTGJ5dGVfZWx0KHZvaWQpCnsKIyAxNjggIi4uLy4uLy4uLy4uL2V4dHJhcy9N ZXNhL3NyYy90cmFuc190bXAuaCIKICAgZ2xfdHJhbnNfZWx0XzRmX3RhYlsyXVsoKDB4MTQwMCkg JiAweGYpXSA9IHRyYW5zXzJfR0xieXRlXzRmX2VsdDsKCgp9CiMgNTI1ICJ0cmFuc2xhdGUuYyIg MgoKCgoKCgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQoj IDM3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lk IHRyYW5zXzFfR0xieXRlXzRmX2VsdCggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAg ICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0 YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29u c3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNv bnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAg ICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkg ewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJz dCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICBpZiAoMSA+PSAxKSB0W2ldWzBdID0gKEdM ZmxvYXQpKCAoKChHTGJ5dGUgKilmKVswXSkgKTsKICAgICAgICAgaWYgKDEgPj0gMikgdFtpXVsx XSA9IChHTGZsb2F0KSggKCgoR0xieXRlICopZilbMV0pICk7CiAgICAgICAgIGlmICgxID49IDMp IHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMYnl0ZSAqKWYpWzJdKSApOwogICAgICAgICBpZiAo MSA9PSA0KSB0W2ldWzNdID0gKEdMZmxvYXQpKCAoKChHTGJ5dGUgKilmKVszXSkgKTsKICAgICAg fQogICB9Cn0KIyAxMDggIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIK c3RhdGljIHZvaWQgdHJhbnNfMV9HTGJ5dGVfMXViX2VsdCggR0x1Ynl0ZSAqdCwKICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAg ICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwg R0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRl QjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJp ZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBz dGFydDsKICAgKHZvaWQpIGZpcnN0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAo dm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAg ZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgICB0W2ldID0gKCgoKEdMYnl0 ZSAqKWYpWzBdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgoKEdMYnl0ZSAqKWYpWzBdKSk7CiAgICAg IH0KICAgfQp9CgoKCgpzdGF0aWMgdm9pZCB0cmFuc18xX0dMYnl0ZV8xdWlfZWx0KCBHTHVpbnQg KnQsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpm cm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50ICplbHRzLCBH THVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9 IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5Q dHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBp OwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKCiAgIGZvciAoaSA9IHN0YXJ0IDsg aSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYgKChmbGFnc1tpXSZtYXRjaCkgPT0gMHgy MCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICogc3RyaWRlOzsKICAgICAgICAgdFtp XSA9ICgoKChHTGJ5dGUgKilmKVswXSkgPCAwID8gMCA6IChHTHVpbnQpICgoKEdMYnl0ZSAqKWYp WzBdKSk7CiAgICAgIH0KICAgfQp9CgoKCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfMV9HTGJ5dGVf ZWx0KHZvaWQpCnsKCiAgIDsKICAgZ2xfdHJhbnNfZWx0XzF1aV90YWJbKCgweDE0MDApICYgMHhm KV0gPSB0cmFuc18xX0dMYnl0ZV8xdWlfZWx0OwoKCiAgIDsKICAgZ2xfdHJhbnNfZWx0XzF1Yl90 YWJbKCgweDE0MDApICYgMHhmKV0gPSB0cmFuc18xX0dMYnl0ZV8xdWJfZWx0OwojIDE2OCAiLi4v Li4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFuc19lbHRfNGZf dGFiWzFdWygoMHgxNDAwKSAmIDB4ZildID0gdHJhbnNfMV9HTGJ5dGVfNGZfZWx0OwoKCn0KIyA1 MzIgInRyYW5zbGF0ZS5jIiAyCiMgNTU1ICJ0cmFuc2xhdGUuYyIKIyAxICIuLi8uLi8uLi8uLi9l eHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyA4NCAiLi4vLi4vLi4vLi4vZXh0cmFzL01l c2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18zX0dMdWJ5dGVfNHViX2VsdCgg R0x1Ynl0ZSAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2Ns aWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdM dWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdM dWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5 dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBm OwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7CiAgIGZvciAo aSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYgKChmbGFnc1tpXSZt YXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICogc3RyaWRlOzsK ICAgICAgICAgaWYgKDMgPj0gMSkgdFtpXVswXSA9ICgoKEdMdWJ5dGUgKilmKVswXSk7CiAgICAg ICAgIGlmICgzID49IDIpIHRbaV1bMV0gPSAoKChHTHVieXRlICopZilbMV0pOwogICAgICAgICBp ZiAoMyA+PSAzKSB0W2ldWzJdID0gKCgoR0x1Ynl0ZSAqKWYpWzJdKTsKICAgICAgICAgaWYgKDMg PT0gNCkgdFtpXVszXSA9ICgoKEdMdWJ5dGUgKilmKVszXSk7IGVsc2UgdFtpXVszXSA9IDI1NTsK ICAgICAgfQogICB9Cn0KIyAxNTAgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190 bXAuaCIKc3RhdGljIHZvaWQgaW5pdF90cmFuc18zX0dMdWJ5dGVfZWx0KHZvaWQpCnsKIyAxNjUg Ii4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKICAgZ2xfdHJhbnNfZWx0 XzR1Yl90YWJbM11bKCgweDE0MDEpICYgMHhmKV0gPSB0cmFuc18zX0dMdWJ5dGVfNHViX2VsdDsK CgoKCgp9CiMgNTU2ICJ0cmFuc2xhdGUuYyIgMgoKCgoKCgojIDEgIi4uLy4uLy4uLy4uL2V4dHJh cy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQojIDEwOCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Ev c3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18xX0dMdWJ5dGVfMXViX2VsdCggR0x1 Ynl0ZSAqdCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJy YXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVs dHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3Ry aWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZy b20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1 aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZvaWQpIGZpcnN0OwogICBmb3IgKGkgPSBzdGFy dCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09 IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAg ICB0W2ldID0gKCgoR0x1Ynl0ZSAqKWYpWzBdKTsKICAgICAgfQogICB9Cn0KCgoKCnN0YXRpYyB2 b2lkIHRyYW5zXzFfR0x1Ynl0ZV8xdWlfZWx0KCBHTHVpbnQgKnQsCiAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAg ICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBz dGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNv bnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBj b25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAg ICh2b2lkKSBmaXJzdDsKCiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEp IHsKICAgICAgaWYgKChmbGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmly c3QgKyBlbHRzW2ldICogc3RyaWRlOzsKICAgICAgICAgdFtpXSA9IChHTHVpbnQpKCgoR0x1Ynl0 ZSAqKWYpWzBdKTsKICAgICAgfQogICB9Cn0KCgoKc3RhdGljIHZvaWQgaW5pdF90cmFuc18xX0dM dWJ5dGVfZWx0KHZvaWQpCnsKCiAgIDsKICAgZ2xfdHJhbnNfZWx0XzF1aV90YWJbKCgweDE0MDEp ICYgMHhmKV0gPSB0cmFuc18xX0dMdWJ5dGVfMXVpX2VsdDsKCgogICA7CiAgIGdsX3RyYW5zX2Vs dF8xdWJfdGFiWygoMHgxNDAxKSAmIDB4ZildID0gdHJhbnNfMV9HTHVieXRlXzF1Yl9lbHQ7CiMg MTcxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCn0KIyA1NjMgInRy YW5zbGF0ZS5jIiAyCiMgNTg2ICJ0cmFuc2xhdGUuYyIKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMv TWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3Jj L3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc180X0dMc2hvcnRfNGZfZWx0KCBHTGZsb2F0 ICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJy YXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0 cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJp ZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJv bS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVp bnQgaTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFy dCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09 IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAg IGlmICg0ID49IDEpIHRbaV1bMF0gPSAoR0xmbG9hdCkoICgoKEdMc2hvcnQgKilmKVswXSkgKTsK ICAgICAgICAgaWYgKDQgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgoR0xzaG9ydCAqKWYp WzFdKSApOwogICAgICAgICBpZiAoNCA+PSAzKSB0W2ldWzJdID0gKEdMZmxvYXQpKCAoKChHTHNo b3J0ICopZilbMl0pICk7CiAgICAgICAgIGlmICg0ID09IDQpIHRbaV1bM10gPSAoR0xmbG9hdCko ICgoKEdMc2hvcnQgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KIyA4NCAiLi4vLi4vLi4vLi4v ZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc180X0dMc2hvcnRf NHViX2VsdCggR0x1Ynl0ZSAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAq ZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBu KQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpm ID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAq Zmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7 CiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYgKChm bGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICog c3RyaWRlOzsKICAgICAgICAgaWYgKDQgPj0gMSkgdFtpXVswXSA9ICgoKChHTHNob3J0ICopZilb MF0pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMc2hvcnQgKilmKVswXSkgPj4gNykpOwogICAg ICAgICBpZiAoNCA+PSAyKSB0W2ldWzFdID0gKCgoKEdMc2hvcnQgKilmKVsxXSkgPCAwID8gMCA6 IChHTHVieXRlKSAoKCgoR0xzaG9ydCAqKWYpWzFdKSA+PiA3KSk7CiAgICAgICAgIGlmICg0ID49 IDMpIHRbaV1bMl0gPSAoKCgoR0xzaG9ydCAqKWYpWzJdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgo KChHTHNob3J0ICopZilbMl0pID4+IDcpKTsKICAgICAgICAgaWYgKDQgPT0gNCkgdFtpXVszXSA9 ICgoKChHTHNob3J0ICopZilbM10pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMc2hvcnQgKilm KVszXSkgPj4gNykpOyBlbHNlIHRbaV1bM10gPSAyNTU7CiAgICAgIH0KICAgfQp9CiMgMTUwICIu Li8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRf dHJhbnNfNF9HTHNob3J0X2VsdCh2b2lkKQp7CiMgMTY1ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVz YS9zcmMvdHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zX2VsdF80dWJfdGFiWzRdWygoMHgxNDAyKSAm IDB4ZildID0gdHJhbnNfNF9HTHNob3J0XzR1Yl9lbHQ7CgoKICAgZ2xfdHJhbnNfZWx0XzRmX3Rh Yls0XVsoKDB4MTQwMikgJiAweGYpXSA9IHRyYW5zXzRfR0xzaG9ydF80Zl9lbHQ7CgoKfQojIDU4 NyAidHJhbnNsYXRlLmMiIDIKCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMv dHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3Rt cC5oIgpzdGF0aWMgdm9pZCB0cmFuc18zX0dMc2hvcnRfNGZfZWx0KCBHTGZsb2F0ICgqdClbNF0s CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20s CiAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50 IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9t LT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsg MCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAg ICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBu IDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsK ICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlmICgzID49 IDEpIHRbaV1bMF0gPSAoR0xmbG9hdCkoICgoKEdMc2hvcnQgKilmKVswXSkgKTsKICAgICAgICAg aWYgKDMgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgoR0xzaG9ydCAqKWYpWzFdKSApOwog ICAgICAgICBpZiAoMyA+PSAzKSB0W2ldWzJdID0gKEdMZmxvYXQpKCAoKChHTHNob3J0ICopZilb Ml0pICk7CiAgICAgICAgIGlmICgzID09IDQpIHRbaV1bM10gPSAoR0xmbG9hdCkoICgoKEdMc2hv cnQgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KCgoKCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xz aG9ydF8zZl9lbHQoIEdMZmxvYXQgKCp0KVszXSwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgR0x1aW50 ICpmbGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50 IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUg KmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRl ICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFy dDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAo KGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0g KiBzdHJpZGU7OwogICAgICAgICB0W2ldWzBdID0gKCgyLjBGICogKCgoKEdMc2hvcnQgKilmKVsw XSkpICsgMS4wRikgKiAoMS4wRi82NTUzNS4wRikpOwogICAgICAgICB0W2ldWzFdID0gKCgyLjBG ICogKCgoKEdMc2hvcnQgKilmKVsxXSkpICsgMS4wRikgKiAoMS4wRi82NTUzNS4wRikpOwogICAg ICAgICB0W2ldWzJdID0gKCgyLjBGICogKCgoKEdMc2hvcnQgKilmKVsyXSkpICsgMS4wRikgKiAo MS4wRi82NTUzNS4wRikpOwogICAgICB9CiAgIH0KfQoKCgpzdGF0aWMgdm9pZCB0cmFuc18zX0dM c2hvcnRfNHViX2VsdCggR0x1Ynl0ZSAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgIEdM dWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdM dWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVi eXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1 Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkg Zmlyc3Q7CiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAg aWYgKChmbGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRz W2ldICogc3RyaWRlOzsKICAgICAgICAgaWYgKDMgPj0gMSkgdFtpXVswXSA9ICgoKChHTHNob3J0 ICopZilbMF0pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMc2hvcnQgKilmKVswXSkgPj4gNykp OwogICAgICAgICBpZiAoMyA+PSAyKSB0W2ldWzFdID0gKCgoKEdMc2hvcnQgKilmKVsxXSkgPCAw ID8gMCA6IChHTHVieXRlKSAoKCgoR0xzaG9ydCAqKWYpWzFdKSA+PiA3KSk7CiAgICAgICAgIGlm ICgzID49IDMpIHRbaV1bMl0gPSAoKCgoR0xzaG9ydCAqKWYpWzJdKSA8IDAgPyAwIDogKEdMdWJ5 dGUpICgoKChHTHNob3J0ICopZilbMl0pID4+IDcpKTsKICAgICAgICAgaWYgKDMgPT0gNCkgdFtp XVszXSA9ICgoKChHTHNob3J0ICopZilbM10pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMc2hv cnQgKilmKVszXSkgPj4gNykpOyBlbHNlIHRbaV1bM10gPSAyNTU7CiAgICAgIH0KICAgfQp9CiMg MTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lk IGluaXRfdHJhbnNfM19HTHNob3J0X2VsdCh2b2lkKQp7CiMgMTYxICIuLi8uLi8uLi8uLi9leHRy YXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIDsKICAgZ2xfdHJhbnNfZWx0XzNmX3RhYlsoKDB4 MTQwMikgJiAweGYpXSA9IHRyYW5zXzNfR0xzaG9ydF8zZl9lbHQ7CgoKICAgZ2xfdHJhbnNfZWx0 XzR1Yl90YWJbM11bKCgweDE0MDIpICYgMHhmKV0gPSB0cmFuc18zX0dMc2hvcnRfNHViX2VsdDsK CgogICBnbF90cmFuc19lbHRfNGZfdGFiWzNdWygoMHgxNDAyKSAmIDB4ZildID0gdHJhbnNfM19H THNob3J0XzRmX2VsdDsKCgp9CiMgNTk0ICJ0cmFuc2xhdGUuYyIgMgoKCgoKIyAxICIuLi8uLi8u Li8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0 cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18yX0dMc2hvcnRfNGZf ZWx0KCBHTGZsb2F0ICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBn bF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3Ms IEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAg IEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdM dWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3Qg PSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBm b3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3Nb aV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlk ZTs7CiAgICAgICAgIGlmICgyID49IDEpIHRbaV1bMF0gPSAoR0xmbG9hdCkoICgoKEdMc2hvcnQg KilmKVswXSkgKTsKICAgICAgICAgaWYgKDIgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgo R0xzaG9ydCAqKWYpWzFdKSApOwogICAgICAgICBpZiAoMiA+PSAzKSB0W2ldWzJdID0gKEdMZmxv YXQpKCAoKChHTHNob3J0ICopZilbMl0pICk7CiAgICAgICAgIGlmICgyID09IDQpIHRbaV1bM10g PSAoR0xmbG9hdCkoICgoKEdMc2hvcnQgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KIyAxNTAg Ii4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgaW5p dF90cmFuc18yX0dMc2hvcnRfZWx0KHZvaWQpCnsKIyAxNjggIi4uLy4uLy4uLy4uL2V4dHJhcy9N ZXNhL3NyYy90cmFuc190bXAuaCIKICAgZ2xfdHJhbnNfZWx0XzRmX3RhYlsyXVsoKDB4MTQwMikg JiAweGYpXSA9IHRyYW5zXzJfR0xzaG9ydF80Zl9lbHQ7CgoKfQojIDU5OSAidHJhbnNsYXRlLmMi IDIKCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEK IyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9p ZCB0cmFuc18xX0dMc2hvcnRfNGZfZWx0KCBHTGZsb2F0ICgqdClbNF0sCiAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAg ICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQg c3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBj b25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAg Y29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsK ICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkx KSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZp cnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlmICgxID49IDEpIHRbaV1bMF0gPSAo R0xmbG9hdCkoICgoKEdMc2hvcnQgKilmKVswXSkgKTsKICAgICAgICAgaWYgKDEgPj0gMikgdFtp XVsxXSA9IChHTGZsb2F0KSggKCgoR0xzaG9ydCAqKWYpWzFdKSApOwogICAgICAgICBpZiAoMSA+ PSAzKSB0W2ldWzJdID0gKEdMZmxvYXQpKCAoKChHTHNob3J0ICopZilbMl0pICk7CiAgICAgICAg IGlmICgxID09IDQpIHRbaV1bM10gPSAoR0xmbG9hdCkoICgoKEdMc2hvcnQgKilmKVszXSkgKTsK ICAgICAgfQogICB9Cn0KIyAxMDggIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190 bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfMV9HTHNob3J0XzF1Yl9lbHQoIEdMdWJ5dGUgKnQsCiAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAog ICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQg bWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20t PlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAw ICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAo dm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7 IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAg ICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICAgdFtpXSA9ICgo KChHTHNob3J0ICopZilbMF0pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMc2hvcnQgKilmKVsw XSkgPj4gNykpOwogICAgICB9CiAgIH0KfQoKCgoKc3RhdGljIHZvaWQgdHJhbnNfMV9HTHNob3J0 XzF1aV9lbHQoIEdMdWludCAqdCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBn bF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdz LCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewog ICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChH THVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0 ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZvaWQpIGZpcnN0OwoKICAg Zm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdz W2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJp ZGU7OwogICAgICAgICB0W2ldID0gKCgoKEdMc2hvcnQgKilmKVswXSkgPCAwID8gMCA6IChHTHVp bnQpICgoKEdMc2hvcnQgKilmKVswXSkpOwogICAgICB9CiAgIH0KfQoKCgpzdGF0aWMgdm9pZCBp bml0X3RyYW5zXzFfR0xzaG9ydF9lbHQodm9pZCkKewoKICAgOwogICBnbF90cmFuc19lbHRfMXVp X3RhYlsoKDB4MTQwMikgJiAweGYpXSA9IHRyYW5zXzFfR0xzaG9ydF8xdWlfZWx0OwoKCiAgIDsK ICAgZ2xfdHJhbnNfZWx0XzF1Yl90YWJbKCgweDE0MDIpICYgMHhmKV0gPSB0cmFuc18xX0dMc2hv cnRfMXViX2VsdDsKIyAxNjggIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAu aCIKICAgZ2xfdHJhbnNfZWx0XzRmX3RhYlsxXVsoKDB4MTQwMikgJiAweGYpXSA9IHRyYW5zXzFf R0xzaG9ydF80Zl9lbHQ7CgoKfQojIDYwNiAidHJhbnNsYXRlLmMiIDIKIyA2MzAgInRyYW5zbGF0 ZS5jIgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQojIDM3 ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRy YW5zXzRfR0x1c2hvcnRfNGZfZWx0KCBHTGZsb2F0ICgqdClbNF0sCiAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAg ICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3Rh cnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25z dCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29u c3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsKICAg KHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7 CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0 ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlmICg0ID49IDEpIHRbaV1bMF0gPSAoR0xm bG9hdCkoICgoKEdMdXNob3J0ICopZilbMF0pICk7CiAgICAgICAgIGlmICg0ID49IDIpIHRbaV1b MV0gPSAoR0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilbMV0pICk7CiAgICAgICAgIGlmICg0ID49 IDMpIHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilbMl0pICk7CiAgICAgICAg IGlmICg0ID09IDQpIHRbaV1bM10gPSAoR0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilbM10pICk7 CiAgICAgIH0KICAgfQp9CiMgODQgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190 bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfNF9HTHVzaG9ydF80dWJfZWx0KCBHTHVieXRlICgqdClb NF0sCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpm cm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50ICplbHRzLCBH THVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9 IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5Q dHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBp OwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0gc3RhcnQgOyBp IDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIw KSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICBpZiAo NCA+PSAxKSB0W2ldWzBdID0gKEdMdWJ5dGUpICgoKChHTHVzaG9ydCAqKWYpWzBdKSA+PiA4KTsK ICAgICAgICAgaWYgKDQgPj0gMikgdFtpXVsxXSA9IChHTHVieXRlKSAoKCgoR0x1c2hvcnQgKilm KVsxXSkgPj4gOCk7CiAgICAgICAgIGlmICg0ID49IDMpIHRbaV1bMl0gPSAoR0x1Ynl0ZSkgKCgo KEdMdXNob3J0ICopZilbMl0pID4+IDgpOwogICAgICAgICBpZiAoNCA9PSA0KSB0W2ldWzNdID0g KEdMdWJ5dGUpICgoKChHTHVzaG9ydCAqKWYpWzNdKSA+PiA4KTsgZWxzZSB0W2ldWzNdID0gMjU1 OwogICAgICB9CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5z X3RtcC5oIgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzRfR0x1c2hvcnRfZWx0KHZvaWQpCnsKIyAx NjUgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKICAgZ2xfdHJhbnNf ZWx0XzR1Yl90YWJbNF1bKCgweDE0MDMpICYgMHhmKV0gPSB0cmFuc180X0dMdXNob3J0XzR1Yl9l bHQ7CgoKICAgZ2xfdHJhbnNfZWx0XzRmX3RhYls0XVsoKDB4MTQwMykgJiAweGYpXSA9IHRyYW5z XzRfR0x1c2hvcnRfNGZfZWx0OwoKCn0KIyA2MzEgInRyYW5zbGF0ZS5jIiAyCgoKCgoKCiMgMSAi Li4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4uLy4u Ly4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfM19HTHVz aG9ydF80Zl9lbHQoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgR0x1aW50 ICpmbGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50 IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUg KmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRl ICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwoKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3Rh cnQ7CiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYg KChmbGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ld ICogc3RyaWRlOzsKICAgICAgICAgaWYgKDMgPj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgo R0x1c2hvcnQgKilmKVswXSkgKTsKICAgICAgICAgaWYgKDMgPj0gMikgdFtpXVsxXSA9IChHTGZs b2F0KSggKCgoR0x1c2hvcnQgKilmKVsxXSkgKTsKICAgICAgICAgaWYgKDMgPj0gMykgdFtpXVsy XSA9IChHTGZsb2F0KSggKCgoR0x1c2hvcnQgKilmKVsyXSkgKTsKICAgICAgICAgaWYgKDMgPT0g NCkgdFtpXVszXSA9IChHTGZsb2F0KSggKCgoR0x1c2hvcnQgKilmKVszXSkgKTsKICAgICAgfQog ICB9Cn0KCgoKCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0x1c2hvcnRfM2ZfZWx0KCBHTGZsb2F0ICgq dClbM10sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkg KmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywg R0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUg PSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+ UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQg aTsKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3RhcnQ7CiAgIGZvciAoaSA9IHN0YXJ0IDsg aSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYgKChmbGFnc1tpXSZtYXRjaCkgPT0gMHgy MCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICogc3RyaWRlOzsKICAgICAgICAgdFtp XVswXSA9ICgoR0xmbG9hdCkgKCgoKEdMdXNob3J0ICopZilbMF0pKSAqICgxLjBGIC8gNjU1MzUu MEYpKTsKICAgICAgICAgdFtpXVsxXSA9ICgoR0xmbG9hdCkgKCgoKEdMdXNob3J0ICopZilbMV0p KSAqICgxLjBGIC8gNjU1MzUuMEYpKTsKICAgICAgICAgdFtpXVsyXSA9ICgoR0xmbG9hdCkgKCgo KEdMdXNob3J0ICopZilbMl0pKSAqICgxLjBGIC8gNjU1MzUuMEYpKTsKICAgICAgfQogICB9Cn0K CgoKc3RhdGljIHZvaWQgdHJhbnNfM19HTHVzaG9ydF80dWJfZWx0KCBHTHVieXRlICgqdClbNF0s CiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9t LAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50ICplbHRzLCBHTHVp bnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZy b20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIg KyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwog ICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwg biA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7 CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICBpZiAoMyA+ PSAxKSB0W2ldWzBdID0gKEdMdWJ5dGUpICgoKChHTHVzaG9ydCAqKWYpWzBdKSA+PiA4KTsKICAg ICAgICAgaWYgKDMgPj0gMikgdFtpXVsxXSA9IChHTHVieXRlKSAoKCgoR0x1c2hvcnQgKilmKVsx XSkgPj4gOCk7CiAgICAgICAgIGlmICgzID49IDMpIHRbaV1bMl0gPSAoR0x1Ynl0ZSkgKCgoKEdM dXNob3J0ICopZilbMl0pID4+IDgpOwogICAgICAgICBpZiAoMyA9PSA0KSB0W2ldWzNdID0gKEdM dWJ5dGUpICgoKChHTHVzaG9ydCAqKWYpWzNdKSA+PiA4KTsgZWxzZSB0W2ldWzNdID0gMjU1Owog ICAgICB9CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3Rt cC5oIgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzNfR0x1c2hvcnRfZWx0KHZvaWQpCnsKIyAxNjEg Ii4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKICAgOwogICBnbF90cmFu c19lbHRfM2ZfdGFiWygoMHgxNDAzKSAmIDB4ZildID0gdHJhbnNfM19HTHVzaG9ydF8zZl9lbHQ7 CgoKICAgZ2xfdHJhbnNfZWx0XzR1Yl90YWJbM11bKCgweDE0MDMpICYgMHhmKV0gPSB0cmFuc18z X0dMdXNob3J0XzR1Yl9lbHQ7CgoKICAgZ2xfdHJhbnNfZWx0XzRmX3RhYlszXVsoKDB4MTQwMykg JiAweGYpXSA9IHRyYW5zXzNfR0x1c2hvcnRfNGZfZWx0OwoKCn0KIyA2MzggInRyYW5zbGF0ZS5j IiAyCgoKCgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQoj IDM3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lk IHRyYW5zXzJfR0x1c2hvcnRfNGZfZWx0KCBHTGZsb2F0ICgqdClbNF0sCiAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAg ICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQg c3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBj b25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAg Y29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsK ICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkx KSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZp cnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlmICgyID49IDEpIHRbaV1bMF0gPSAo R0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilbMF0pICk7CiAgICAgICAgIGlmICgyID49IDIpIHRb aV1bMV0gPSAoR0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilbMV0pICk7CiAgICAgICAgIGlmICgy ID49IDMpIHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilbMl0pICk7CiAgICAg ICAgIGlmICgyID09IDQpIHRbaV1bM10gPSAoR0xmbG9hdCkoICgoKEdMdXNob3J0ICopZilbM10p ICk7CiAgICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJh bnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfMl9HTHVzaG9ydF9lbHQodm9pZCkKewoj IDE2OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFu c19lbHRfNGZfdGFiWzJdWygoMHgxNDAzKSAmIDB4ZildID0gdHJhbnNfMl9HTHVzaG9ydF80Zl9l bHQ7CgoKfQojIDY0MyAidHJhbnNsYXRlLmMiIDIKCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHRy YXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Ev c3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18xX0dMdXNob3J0XzRmX2VsdCggR0xm bG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50 X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQg KmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQg c3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICop IGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAg R0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0g c3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNo KSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAg ICAgICBpZiAoMSA+PSAxKSB0W2ldWzBdID0gKEdMZmxvYXQpKCAoKChHTHVzaG9ydCAqKWYpWzBd KSApOwogICAgICAgICBpZiAoMSA+PSAyKSB0W2ldWzFdID0gKEdMZmxvYXQpKCAoKChHTHVzaG9y dCAqKWYpWzFdKSApOwogICAgICAgICBpZiAoMSA+PSAzKSB0W2ldWzJdID0gKEdMZmxvYXQpKCAo KChHTHVzaG9ydCAqKWYpWzJdKSApOwogICAgICAgICBpZiAoMSA9PSA0KSB0W2ldWzNdID0gKEdM ZmxvYXQpKCAoKChHTHVzaG9ydCAqKWYpWzNdKSApOwogICAgICB9CiAgIH0KfQojIDEwOCAiLi4v Li4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18x X0dMdXNob3J0XzF1Yl9lbHQoIEdMdWJ5dGUgKnQsCiAgICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1 aW50ICpmbGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1 aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5 dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVi eXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBm aXJzdDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBp ZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNb aV0gKiBzdHJpZGU7OwogICAgICAgICAgdFtpXSA9IChHTHVieXRlKSAoKCgoR0x1c2hvcnQgKilm KVswXSkgPj4gOCk7CiAgICAgIH0KICAgfQp9CgoKCgpzdGF0aWMgdm9pZCB0cmFuc18xX0dMdXNo b3J0XzF1aV9lbHQoIEdMdWludCAqdCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj dCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZs YWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikK ewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9 IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZp cnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZvaWQpIGZpcnN0OwoK ICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZs YWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBz dHJpZGU7OwogICAgICAgICB0W2ldID0gKEdMdWludCkgKCgoR0x1c2hvcnQgKilmKVswXSk7CiAg ICAgIH0KICAgfQp9CgoKCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfMV9HTHVzaG9ydF9lbHQodm9p ZCkKewoKICAgOwogICBnbF90cmFuc19lbHRfMXVpX3RhYlsoKDB4MTQwMykgJiAweGYpXSA9IHRy YW5zXzFfR0x1c2hvcnRfMXVpX2VsdDsKCgogICA7CiAgIGdsX3RyYW5zX2VsdF8xdWJfdGFiWygo MHgxNDAzKSAmIDB4ZildID0gdHJhbnNfMV9HTHVzaG9ydF8xdWJfZWx0OwojIDE2OCAiLi4vLi4v Li4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFuc19lbHRfNGZfdGFi WzFdWygoMHgxNDAzKSAmIDB4ZildID0gdHJhbnNfMV9HTHVzaG9ydF80Zl9lbHQ7CgoKfQojIDY1 MCAidHJhbnNsYXRlLmMiIDIKIyA2NzMgInRyYW5zbGF0ZS5jIgojIDEgIi4uLy4uLy4uLy4uL2V4 dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQojIDM3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVz YS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzRfR0xpbnRfNGZfZWx0KCBHTGZs b2F0ICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRf YXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAq ZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBz dHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikg ZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBH THVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBz dGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gp ID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAg ICAgIGlmICg0ID49IDEpIHRbaV1bMF0gPSAoR0xmbG9hdCkoICgoKEdMaW50ICopZilbMF0pICk7 CiAgICAgICAgIGlmICg0ID49IDIpIHRbaV1bMV0gPSAoR0xmbG9hdCkoICgoKEdMaW50ICopZilb MV0pICk7CiAgICAgICAgIGlmICg0ID49IDMpIHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMaW50 ICopZilbMl0pICk7CiAgICAgICAgIGlmICg0ID09IDQpIHRbaV1bM10gPSAoR0xmbG9hdCkoICgo KEdMaW50ICopZilbM10pICk7CiAgICAgIH0KICAgfQp9CiMgODQgIi4uLy4uLy4uLy4uL2V4dHJh cy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfNF9HTGludF80dWJfZWx0 KCBHTHVieXRlICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xf Y2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywg R0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAg R0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1 Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9 IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9y IChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ld Jm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7 OwogICAgICAgICBpZiAoNCA+PSAxKSB0W2ldWzBdID0gKCgoKEdMaW50ICopZilbMF0pIDwgMCA/ IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMaW50ICopZilbMF0pID4+IDIzKSk7CiAgICAgICAgIGlmICg0 ID49IDIpIHRbaV1bMV0gPSAoKCgoR0xpbnQgKilmKVsxXSkgPCAwID8gMCA6IChHTHVieXRlKSAo KCgoR0xpbnQgKilmKVsxXSkgPj4gMjMpKTsKICAgICAgICAgaWYgKDQgPj0gMykgdFtpXVsyXSA9 ICgoKChHTGludCAqKWYpWzJdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgoKChHTGludCAqKWYpWzJd KSA+PiAyMykpOwogICAgICAgICBpZiAoNCA9PSA0KSB0W2ldWzNdID0gKCgoKEdMaW50ICopZilb M10pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMaW50ICopZilbM10pID4+IDIzKSk7IGVsc2Ug dFtpXVszXSA9IDI1NTsKICAgICAgfQogICB9Cn0KIyAxNTAgIi4uLy4uLy4uLy4uL2V4dHJhcy9N ZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgaW5pdF90cmFuc180X0dMaW50X2VsdCh2 b2lkKQp7CiMgMTY1ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAg IGdsX3RyYW5zX2VsdF80dWJfdGFiWzRdWygoMHgxNDA0KSAmIDB4ZildID0gdHJhbnNfNF9HTGlu dF80dWJfZWx0OwoKCiAgIGdsX3RyYW5zX2VsdF80Zl90YWJbNF1bKCgweDE0MDQpICYgMHhmKV0g PSB0cmFuc180X0dMaW50XzRmX2VsdDsKCgp9CiMgNjc0ICJ0cmFuc2xhdGUuYyIgMgoKCgoKCgoj IDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQojIDM3ICIuLi8u Li8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzNf R0xpbnRfNGZfZWx0KCBHTGZsb2F0ICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWlu dCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWlu dCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRl ICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0 ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0 YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlm ICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tp XSAqIHN0cmlkZTs7CiAgICAgICAgIGlmICgzID49IDEpIHRbaV1bMF0gPSAoR0xmbG9hdCkoICgo KEdMaW50ICopZilbMF0pICk7CiAgICAgICAgIGlmICgzID49IDIpIHRbaV1bMV0gPSAoR0xmbG9h dCkoICgoKEdMaW50ICopZilbMV0pICk7CiAgICAgICAgIGlmICgzID49IDMpIHRbaV1bMl0gPSAo R0xmbG9hdCkoICgoKEdMaW50ICopZilbMl0pICk7CiAgICAgICAgIGlmICgzID09IDQpIHRbaV1b M10gPSAoR0xmbG9hdCkoICgoKEdMaW50ICopZilbM10pICk7CiAgICAgIH0KICAgfQp9CgoKCgpz dGF0aWMgdm9pZCB0cmFuc18zX0dMaW50XzNmX2VsdCggR0xmbG9hdCAoKnQpWzNdLAogICAgICAg ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAg ICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwg R0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRl QjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJp ZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBm aXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAo dm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAg ZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIHRbaV1bMF0gPSAoKDIuMEYg KiAoKCgoR0xpbnQgKilmKVswXSkpICsgMS4wRikgKiAoMS4wRi80Mjk0OTY3Mjk0LjBGKSk7CiAg ICAgICAgIHRbaV1bMV0gPSAoKDIuMEYgKiAoKCgoR0xpbnQgKilmKVsxXSkpICsgMS4wRikgKiAo MS4wRi80Mjk0OTY3Mjk0LjBGKSk7CiAgICAgICAgIHRbaV1bMl0gPSAoKDIuMEYgKiAoKCgoR0xp bnQgKilmKVsyXSkpICsgMS4wRikgKiAoMS4wRi80Mjk0OTY3Mjk0LjBGKSk7CiAgICAgIH0KICAg fQp9CgoKCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xpbnRfNHViX2VsdCggR0x1Ynl0ZSAoKnQpWzRd LAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJv bSwKICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1 aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBm cm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRy ICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsK ICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7CiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8 IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYgKChmbGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkg ewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICogc3RyaWRlOzsKICAgICAgICAgaWYgKDMg Pj0gMSkgdFtpXVswXSA9ICgoKChHTGludCAqKWYpWzBdKSA8IDAgPyAwIDogKEdMdWJ5dGUpICgo KChHTGludCAqKWYpWzBdKSA+PiAyMykpOwogICAgICAgICBpZiAoMyA+PSAyKSB0W2ldWzFdID0g KCgoKEdMaW50ICopZilbMV0pIDwgMCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMaW50ICopZilbMV0p ID4+IDIzKSk7CiAgICAgICAgIGlmICgzID49IDMpIHRbaV1bMl0gPSAoKCgoR0xpbnQgKilmKVsy XSkgPCAwID8gMCA6IChHTHVieXRlKSAoKCgoR0xpbnQgKilmKVsyXSkgPj4gMjMpKTsKICAgICAg ICAgaWYgKDMgPT0gNCkgdFtpXVszXSA9ICgoKChHTGludCAqKWYpWzNdKSA8IDAgPyAwIDogKEdM dWJ5dGUpICgoKChHTGludCAqKWYpWzNdKSA+PiAyMykpOyBlbHNlIHRbaV1bM10gPSAyNTU7CiAg ICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1w LmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfM19HTGludF9lbHQodm9pZCkKewojIDE2MSAiLi4v Li4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICA7CiAgIGdsX3RyYW5zX2Vs dF8zZl90YWJbKCgweDE0MDQpICYgMHhmKV0gPSB0cmFuc18zX0dMaW50XzNmX2VsdDsKCgogICBn bF90cmFuc19lbHRfNHViX3RhYlszXVsoKDB4MTQwNCkgJiAweGYpXSA9IHRyYW5zXzNfR0xpbnRf NHViX2VsdDsKCgogICBnbF90cmFuc19lbHRfNGZfdGFiWzNdWygoMHgxNDA0KSAmIDB4ZildID0g dHJhbnNfM19HTGludF80Zl9lbHQ7CgoKfQojIDY4MSAidHJhbnNsYXRlLmMiIDIKCgoKCiMgMSAi Li4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcgIi4uLy4uLy4u Ly4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJhbnNfMl9HTGlu dF80Zl9lbHQoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpm bGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4p CnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYg PSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpm aXJzdCA9IGY7CiAgIEdMdWludCBpOwoKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3RhcnQ7 CiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYgKChm bGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICog c3RyaWRlOzsKICAgICAgICAgaWYgKDIgPj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0xp bnQgKilmKVswXSkgKTsKICAgICAgICAgaWYgKDIgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSgg KCgoR0xpbnQgKilmKVsxXSkgKTsKICAgICAgICAgaWYgKDIgPj0gMykgdFtpXVsyXSA9IChHTGZs b2F0KSggKCgoR0xpbnQgKilmKVsyXSkgKTsKICAgICAgICAgaWYgKDIgPT0gNCkgdFtpXVszXSA9 IChHTGZsb2F0KSggKCgoR0xpbnQgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KIyAxNTAgIi4u Ly4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgaW5pdF90 cmFuc18yX0dMaW50X2VsdCh2b2lkKQp7CiMgMTY4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9z cmMvdHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zX2VsdF80Zl90YWJbMl1bKCgweDE0MDQpICYgMHhm KV0gPSB0cmFuc18yX0dMaW50XzRmX2VsdDsKCgp9CiMgNjg2ICJ0cmFuc2xhdGUuYyIgMgoKCgoK CgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQojIDM3ICIu Li8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5z XzFfR0xpbnRfNGZfZWx0KCBHTGZsb2F0ICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdM dWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdM dWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVi eXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1 Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQp IHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAg IGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0 c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlmICgxID49IDEpIHRbaV1bMF0gPSAoR0xmbG9hdCko ICgoKEdMaW50ICopZilbMF0pICk7CiAgICAgICAgIGlmICgxID49IDIpIHRbaV1bMV0gPSAoR0xm bG9hdCkoICgoKEdMaW50ICopZilbMV0pICk7CiAgICAgICAgIGlmICgxID49IDMpIHRbaV1bMl0g PSAoR0xmbG9hdCkoICgoKEdMaW50ICopZilbMl0pICk7CiAgICAgICAgIGlmICgxID09IDQpIHRb aV1bM10gPSAoR0xmbG9hdCkoICgoKEdMaW50ICopZilbM10pICk7CiAgICAgIH0KICAgfQp9CiMg MTA4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lk IHRyYW5zXzFfR0xpbnRfMXViX2VsdCggR0x1Ynl0ZSAqdCwKICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAg ICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0 LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3Qg R0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0 IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZv aWQpIGZpcnN0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAg ICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsg ZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgICB0W2ldID0gKCgoKEdMaW50ICopZilbMF0pIDwg MCA/IDAgOiAoR0x1Ynl0ZSkgKCgoKEdMaW50ICopZilbMF0pID4+IDIzKSk7CiAgICAgIH0KICAg fQp9CgoKCgpzdGF0aWMgdm9pZCB0cmFuc18xX0dMaW50XzF1aV9lbHQoIEdMdWludCAqdCwKICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAg ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBt YXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+ U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAg KiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2 b2lkKSBzdGFydDsKICAgKHZvaWQpIGZpcnN0OwoKICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7 IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAg ICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICB0W2ldID0gKCgo KEdMaW50ICopZilbMF0pIDwgMCA/IDAgOiAoR0x1aW50KSAoKChHTGludCAqKWYpWzBdKSk7CiAg ICAgIH0KICAgfQp9CgoKCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfMV9HTGludF9lbHQodm9pZCkK ewoKICAgOwogICBnbF90cmFuc19lbHRfMXVpX3RhYlsoKDB4MTQwNCkgJiAweGYpXSA9IHRyYW5z XzFfR0xpbnRfMXVpX2VsdDsKCgogICA7CiAgIGdsX3RyYW5zX2VsdF8xdWJfdGFiWygoMHgxNDA0 KSAmIDB4ZildID0gdHJhbnNfMV9HTGludF8xdWJfZWx0OwojIDE2OCAiLi4vLi4vLi4vLi4vZXh0 cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFuc19lbHRfNGZfdGFiWzFdWygoMHgx NDA0KSAmIDB4ZildID0gdHJhbnNfMV9HTGludF80Zl9lbHQ7CgoKfQojIDY5MyAidHJhbnNsYXRl LmMiIDIKIyA3MTcgInRyYW5zbGF0ZS5jIgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3Ny Yy90cmFuc190bXAuaCIgMQojIDM3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNf dG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzRfR0x1aW50XzRmX2VsdCggR0xmbG9hdCAoKnQpWzRd LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9t LAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWlu dCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJv bS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciAr IDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7Cgog ICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwg biA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7 CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICBpZiAoNCA+ PSAxKSB0W2ldWzBdID0gKEdMZmxvYXQpKCAoKChHTHVpbnQgKilmKVswXSkgKTsKICAgICAgICAg aWYgKDQgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgoR0x1aW50ICopZilbMV0pICk7CiAg ICAgICAgIGlmICg0ID49IDMpIHRbaV1bMl0gPSAoR0xmbG9hdCkoICgoKEdMdWludCAqKWYpWzJd KSApOwogICAgICAgICBpZiAoNCA9PSA0KSB0W2ldWzNdID0gKEdMZmxvYXQpKCAoKChHTHVpbnQg KilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KIyA4NCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Ev c3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc180X0dMdWludF80dWJfZWx0KCBHTHVi eXRlICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50 X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50 ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50 IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAq KSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAg IEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0g c3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNo KSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAg ICAgICBpZiAoNCA+PSAxKSB0W2ldWzBdID0gKEdMdWJ5dGUpICgoKChHTHVpbnQgKilmKVswXSkg Pj4gMjQpOwogICAgICAgICBpZiAoNCA+PSAyKSB0W2ldWzFdID0gKEdMdWJ5dGUpICgoKChHTHVp bnQgKilmKVsxXSkgPj4gMjQpOwogICAgICAgICBpZiAoNCA+PSAzKSB0W2ldWzJdID0gKEdMdWJ5 dGUpICgoKChHTHVpbnQgKilmKVsyXSkgPj4gMjQpOwogICAgICAgICBpZiAoNCA9PSA0KSB0W2ld WzNdID0gKEdMdWJ5dGUpICgoKChHTHVpbnQgKilmKVszXSkgPj4gMjQpOyBlbHNlIHRbaV1bM10g PSAyNTU7CiAgICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMv dHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfNF9HTHVpbnRfZWx0KHZvaWQpCnsK IyAxNjUgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKICAgZ2xfdHJh bnNfZWx0XzR1Yl90YWJbNF1bKCgweDE0MDUpICYgMHhmKV0gPSB0cmFuc180X0dMdWludF80dWJf ZWx0OwoKCiAgIGdsX3RyYW5zX2VsdF80Zl90YWJbNF1bKCgweDE0MDUpICYgMHhmKV0gPSB0cmFu c180X0dMdWludF80Zl9lbHQ7CgoKfQojIDcxOCAidHJhbnNsYXRlLmMiIDIKCgoKCgoKIyAxICIu Li8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4v Li4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18zX0dMdWlu dF80Zl9lbHQoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpm bGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4p CnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYg PSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpm aXJzdCA9IGY7CiAgIEdMdWludCBpOwoKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3RhcnQ7 CiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYgKChm bGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICog c3RyaWRlOzsKICAgICAgICAgaWYgKDMgPj0gMSkgdFtpXVswXSA9IChHTGZsb2F0KSggKCgoR0x1 aW50ICopZilbMF0pICk7CiAgICAgICAgIGlmICgzID49IDIpIHRbaV1bMV0gPSAoR0xmbG9hdCko ICgoKEdMdWludCAqKWYpWzFdKSApOwogICAgICAgICBpZiAoMyA+PSAzKSB0W2ldWzJdID0gKEdM ZmxvYXQpKCAoKChHTHVpbnQgKilmKVsyXSkgKTsKICAgICAgICAgaWYgKDMgPT0gNCkgdFtpXVsz XSA9IChHTGZsb2F0KSggKCgoR0x1aW50ICopZilbM10pICk7CiAgICAgIH0KICAgfQp9CgoKCgpz dGF0aWMgdm9pZCB0cmFuc18zX0dMdWludF8zZl9lbHQoIEdMZmxvYXQgKCp0KVszXSwKICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAg ICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gs IEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlk ZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3Ry aWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkg Zmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywg KHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAg IGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICB0W2ldWzBdID0gKChHTGZs b2F0KSAoKCgoR0x1aW50ICopZilbMF0pKSAqICgxLjBGIC8gNDI5NDk2NzI5NS4wRikpOwogICAg ICAgICB0W2ldWzFdID0gKChHTGZsb2F0KSAoKCgoR0x1aW50ICopZilbMV0pKSAqICgxLjBGIC8g NDI5NDk2NzI5NS4wRikpOwogICAgICAgICB0W2ldWzJdID0gKChHTGZsb2F0KSAoKCgoR0x1aW50 ICopZilbMl0pKSAqICgxLjBGIC8gNDI5NDk2NzI5NS4wRikpOwogICAgICB9CiAgIH0KfQoKCgpz dGF0aWMgdm9pZCB0cmFuc18zX0dMdWludF80dWJfZWx0KCBHTHVieXRlICgqdClbNF0sCiAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAg ICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0 Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0 cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICog c3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9p ZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkr KywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAg ICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICBpZiAoMyA+PSAxKSB0 W2ldWzBdID0gKEdMdWJ5dGUpICgoKChHTHVpbnQgKilmKVswXSkgPj4gMjQpOwogICAgICAgICBp ZiAoMyA+PSAyKSB0W2ldWzFdID0gKEdMdWJ5dGUpICgoKChHTHVpbnQgKilmKVsxXSkgPj4gMjQp OwogICAgICAgICBpZiAoMyA+PSAzKSB0W2ldWzJdID0gKEdMdWJ5dGUpICgoKChHTHVpbnQgKilm KVsyXSkgPj4gMjQpOwogICAgICAgICBpZiAoMyA9PSA0KSB0W2ldWzNdID0gKEdMdWJ5dGUpICgo KChHTHVpbnQgKilmKVszXSkgPj4gMjQpOyBlbHNlIHRbaV1bM10gPSAyNTU7CiAgICAgIH0KICAg fQp9CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRp YyB2b2lkIGluaXRfdHJhbnNfM19HTHVpbnRfZWx0KHZvaWQpCnsKIyAxNjEgIi4uLy4uLy4uLy4u L2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKICAgOwogICBnbF90cmFuc19lbHRfM2ZfdGFi WygoMHgxNDA1KSAmIDB4ZildID0gdHJhbnNfM19HTHVpbnRfM2ZfZWx0OwoKCiAgIGdsX3RyYW5z X2VsdF80dWJfdGFiWzNdWygoMHgxNDA1KSAmIDB4ZildID0gdHJhbnNfM19HTHVpbnRfNHViX2Vs dDsKCgogICBnbF90cmFuc19lbHRfNGZfdGFiWzNdWygoMHgxNDA1KSAmIDB4ZildID0gdHJhbnNf M19HTHVpbnRfNGZfZWx0OwoKCn0KIyA3MjUgInRyYW5zbGF0ZS5jIiAyCgoKCgojIDEgIi4uLy4u Ly4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQojIDM3ICIuLi8uLi8uLi8uLi9l eHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzJfR0x1aW50XzRm X2VsdCggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg Z2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdz LCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewog ICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChH THVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0 ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAg Zm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdz W2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJp ZGU7OwogICAgICAgICBpZiAoMiA+PSAxKSB0W2ldWzBdID0gKEdMZmxvYXQpKCAoKChHTHVpbnQg KilmKVswXSkgKTsKICAgICAgICAgaWYgKDIgPj0gMikgdFtpXVsxXSA9IChHTGZsb2F0KSggKCgo R0x1aW50ICopZilbMV0pICk7CiAgICAgICAgIGlmICgyID49IDMpIHRbaV1bMl0gPSAoR0xmbG9h dCkoICgoKEdMdWludCAqKWYpWzJdKSApOwogICAgICAgICBpZiAoMiA9PSA0KSB0W2ldWzNdID0g KEdMZmxvYXQpKCAoKChHTHVpbnQgKilmKVszXSkgKTsKICAgICAgfQogICB9Cn0KIyAxNTAgIi4u Ly4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgaW5pdF90 cmFuc18yX0dMdWludF9lbHQodm9pZCkKewojIDE2OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Ev c3JjL3RyYW5zX3RtcC5oIgogICBnbF90cmFuc19lbHRfNGZfdGFiWzJdWygoMHgxNDA1KSAmIDB4 ZildID0gdHJhbnNfMl9HTHVpbnRfNGZfZWx0OwoKCn0KIyA3MzAgInRyYW5zbGF0ZS5jIiAyCgoK CgoKCiMgMSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIiAxCiMgMzcg Ii4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIKc3RhdGljIHZvaWQgdHJh bnNfMV9HTHVpbnRfNGZfZWx0KCBHTGZsb2F0ICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAg IEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQs IEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBH THVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3Qg R0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZv aWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAg ICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsg ZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlmICgxID49IDEpIHRbaV1bMF0gPSAoR0xmbG9h dCkoICgoKEdMdWludCAqKWYpWzBdKSApOwogICAgICAgICBpZiAoMSA+PSAyKSB0W2ldWzFdID0g KEdMZmxvYXQpKCAoKChHTHVpbnQgKilmKVsxXSkgKTsKICAgICAgICAgaWYgKDEgPj0gMykgdFtp XVsyXSA9IChHTGZsb2F0KSggKCgoR0x1aW50ICopZilbMl0pICk7CiAgICAgICAgIGlmICgxID09 IDQpIHRbaV1bM10gPSAoR0xmbG9hdCkoICgoKEdMdWludCAqKWYpWzNdKSApOwogICAgICB9CiAg IH0KfQojIDEwOCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0 aWMgdm9pZCB0cmFuc18xX0dMdWludF8xdWJfZWx0KCBHTHVieXRlICp0LAogICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAg ICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVp bnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwog ICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsK ICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0 OwogICAodm9pZCkgZmlyc3Q7CiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lk KTEpIHsKICAgICAgaWYgKChmbGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0g Zmlyc3QgKyBlbHRzW2ldICogc3RyaWRlOzsKICAgICAgICAgIHRbaV0gPSAoR0x1Ynl0ZSkgKCgo KEdMdWludCAqKWYpWzBdKSA+PiAyNCk7CiAgICAgIH0KICAgfQp9CgoKCgpzdGF0aWMgdm9pZCB0 cmFuc18xX0dMdWludF8xdWlfZWx0KCBHTHVpbnQgKnQsCiAgICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAg R0x1aW50ICpmbGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwg R0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdM dWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBH THVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lk KSBmaXJzdDsKCiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAg ICAgaWYgKChmbGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmlyc3QgKyBl bHRzW2ldICogc3RyaWRlOzsKICAgICAgICAgdFtpXSA9ICgoKEdMdWludCAqKWYpWzBdKTsKICAg ICAgfQogICB9Cn0KCgoKc3RhdGljIHZvaWQgaW5pdF90cmFuc18xX0dMdWludF9lbHQodm9pZCkK ewoKICAgOwogICBnbF90cmFuc19lbHRfMXVpX3RhYlsoKDB4MTQwNSkgJiAweGYpXSA9IHRyYW5z XzFfR0x1aW50XzF1aV9lbHQ7CgoKICAgOwogICBnbF90cmFuc19lbHRfMXViX3RhYlsoKDB4MTQw NSkgJiAweGYpXSA9IHRyYW5zXzFfR0x1aW50XzF1Yl9lbHQ7CiMgMTY4ICIuLi8uLi8uLi8uLi9l eHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zX2VsdF80Zl90YWJbMV1bKCgw eDE0MDUpICYgMHhmKV0gPSB0cmFuc18xX0dMdWludF80Zl9lbHQ7CgoKfQojIDczNyAidHJhbnNs YXRlLmMiIDIKIyA3NjAgInRyYW5zbGF0ZS5jIgojIDEgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNh L3NyYy90cmFuc190bXAuaCIgMQojIDM3ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJh bnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzRfR0xkb3VibGVfNGZfZWx0KCBHTGZsb2F0ICgq dClbNF0sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkg KmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywg R0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUg PSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+ UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQg aTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7 IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4 MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlm ICg0ID49IDEpIHRbaV1bMF0gPSAoKChHTGRvdWJsZSAqKWYpWzBdKTsKICAgICAgICAgaWYgKDQg Pj0gMikgdFtpXVsxXSA9ICgoKEdMZG91YmxlICopZilbMV0pOwogICAgICAgICBpZiAoNCA+PSAz KSB0W2ldWzJdID0gKCgoR0xkb3VibGUgKilmKVsyXSk7CiAgICAgICAgIGlmICg0ID09IDQpIHRb aV1bM10gPSAoKChHTGRvdWJsZSAqKWYpWzNdKTsKICAgICAgfQogICB9Cn0KIyA4NCAiLi4vLi4v Li4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc180X0dM ZG91YmxlXzR1Yl9lbHQoIEdMdWJ5dGUgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICBH THVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBH THVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1 Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdM dWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFydDsKICAgKHZvaWQp IGZpcnN0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAg IGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0 c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlmICg0ID49IDEpIGRvIHsgdW5pb24geyBHTGZsb2F0 IHI7IEdMdWludCBpOyB9IHRtcDsgdG1wLnIgPSAoKChHTGRvdWJsZSAqKWYpWzBdKTsgdFtpXVsw XSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0 ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3 NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOwogICAgICAgICBpZiAoNCA+PSAy KSBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xk b3VibGUgKilmKVsxXSk7IHRbaV1bMV0gPSAoKHRtcC5pID49IDB4M2Y3ZjAwMDApID8gKChHTGlu dCl0bXAuaSA8IDApID8gKEdMdWJ5dGUpMCA6IChHTHVieXRlKTI1NSA6ICh0bXAuciA9IHRtcC5y KigyNTUuMEYvMjU2LjBGKSArIDMyNzY4LjBGLCAoR0x1Ynl0ZSl0bXAuaSkpOyB9IHdoaWxlICgw KTsKICAgICAgICAgaWYgKDQgPj0gMykgZG8geyB1bmlvbiB7IEdMZmxvYXQgcjsgR0x1aW50IGk7 IH0gdG1wOyB0bXAuciA9ICgoKEdMZG91YmxlICopZilbMl0pOyB0W2ldWzJdID0gKCh0bXAuaSA+ PSAweDNmN2YwMDAwKSA/ICgoR0xpbnQpdG1wLmkgPCAwKSA/IChHTHVieXRlKTAgOiAoR0x1Ynl0 ZSkyNTUgOiAodG1wLnIgPSB0bXAuciooMjU1LjBGLzI1Ni4wRikgKyAzMjc2OC4wRiwgKEdMdWJ5 dGUpdG1wLmkpKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgIGlmICg0ID09IDQpIGRvIHsgdW5pb24g eyBHTGZsb2F0IHI7IEdMdWludCBpOyB9IHRtcDsgdG1wLnIgPSAoKChHTGRvdWJsZSAqKWYpWzNd KTsgdFtpXVszXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkg PyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYu MEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOyBlbHNlIHRbaV1b M10gPSAyNTU7CiAgICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9z cmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfNF9HTGRvdWJsZV9lbHQodm9p ZCkKewojIDE2NSAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgogICBn bF90cmFuc19lbHRfNHViX3RhYls0XVsoKDB4MTQwQSkgJiAweGYpXSA9IHRyYW5zXzRfR0xkb3Vi bGVfNHViX2VsdDsKCgogICBnbF90cmFuc19lbHRfNGZfdGFiWzRdWygoMHgxNDBBKSAmIDB4Zild ID0gdHJhbnNfNF9HTGRvdWJsZV80Zl9lbHQ7CgoKfQojIDc2MSAidHJhbnNsYXRlLmMiIDIKCgoK CgoKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAi Li4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFu c18zX0dMZG91YmxlXzRmX2VsdCggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAg ICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0 LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3Qg R0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0 IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2 b2lkKSBzdGFydDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewog ICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCAr IGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICBpZiAoMyA+PSAxKSB0W2ldWzBdID0gKCgoR0xk b3VibGUgKilmKVswXSk7CiAgICAgICAgIGlmICgzID49IDIpIHRbaV1bMV0gPSAoKChHTGRvdWJs ZSAqKWYpWzFdKTsKICAgICAgICAgaWYgKDMgPj0gMykgdFtpXVsyXSA9ICgoKEdMZG91YmxlICop ZilbMl0pOwogICAgICAgICBpZiAoMyA9PSA0KSB0W2ldWzNdID0gKCgoR0xkb3VibGUgKilmKVsz XSk7CiAgICAgIH0KICAgfQp9CgoKCgpzdGF0aWMgdm9pZCB0cmFuc18zX0dMZG91YmxlXzNmX2Vs dCggR0xmbG9hdCAoKnQpWzNdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xf Y2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBH THVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBH THVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVi eXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0g ZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3Ig KGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0m bWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7 CiAgICAgICAgIHRbaV1bMF0gPSAoKChHTGRvdWJsZSAqKWYpWzBdKTsKICAgICAgICAgdFtpXVsx XSA9ICgoKEdMZG91YmxlICopZilbMV0pOwogICAgICAgICB0W2ldWzJdID0gKCgoR0xkb3VibGUg KilmKVsyXSk7CiAgICAgIH0KICAgfQp9CgoKCnN0YXRpYyB2b2lkIHRyYW5zXzNfR0xkb3VibGVf NHViX2VsdCggR0x1Ynl0ZSAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAq ZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBu KQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpm ID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAq Zmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICAodm9pZCkgZmlyc3Q7 CiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYgKChm bGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICog c3RyaWRlOzsKICAgICAgICAgaWYgKDMgPj0gMSkgZG8geyB1bmlvbiB7IEdMZmxvYXQgcjsgR0x1 aW50IGk7IH0gdG1wOyB0bXAuciA9ICgoKEdMZG91YmxlICopZilbMF0pOyB0W2ldWzBdID0gKCh0 bXAuaSA+PSAweDNmN2YwMDAwKSA/ICgoR0xpbnQpdG1wLmkgPCAwKSA/IChHTHVieXRlKTAgOiAo R0x1Ynl0ZSkyNTUgOiAodG1wLnIgPSB0bXAuciooMjU1LjBGLzI1Ni4wRikgKyAzMjc2OC4wRiwg KEdMdWJ5dGUpdG1wLmkpKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgIGlmICgzID49IDIpIGRvIHsg dW5pb24geyBHTGZsb2F0IHI7IEdMdWludCBpOyB9IHRtcDsgdG1wLnIgPSAoKChHTGRvdWJsZSAq KWYpWzFdKTsgdFtpXVsxXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5p IDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4w Ri8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOwogICAg ICAgICBpZiAoMyA+PSAzKSBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7 IHRtcC5yID0gKCgoR0xkb3VibGUgKilmKVsyXSk7IHRbaV1bMl0gPSAoKHRtcC5pID49IDB4M2Y3 ZjAwMDApID8gKChHTGludCl0bXAuaSA8IDApID8gKEdMdWJ5dGUpMCA6IChHTHVieXRlKTI1NSA6 ICh0bXAuciA9IHRtcC5yKigyNTUuMEYvMjU2LjBGKSArIDMyNzY4LjBGLCAoR0x1Ynl0ZSl0bXAu aSkpOyB9IHdoaWxlICgwKTsKICAgICAgICAgaWYgKDMgPT0gNCkgZG8geyB1bmlvbiB7IEdMZmxv YXQgcjsgR0x1aW50IGk7IH0gdG1wOyB0bXAuciA9ICgoKEdMZG91YmxlICopZilbM10pOyB0W2ld WzNdID0gKCh0bXAuaSA+PSAweDNmN2YwMDAwKSA/ICgoR0xpbnQpdG1wLmkgPCAwKSA/IChHTHVi eXRlKTAgOiAoR0x1Ynl0ZSkyNTUgOiAodG1wLnIgPSB0bXAuciooMjU1LjBGLzI1Ni4wRikgKyAz Mjc2OC4wRiwgKEdMdWJ5dGUpdG1wLmkpKTsgfSB3aGlsZSAoMCk7IGVsc2UgdFtpXVszXSA9IDI1 NTsKICAgICAgfQogICB9Cn0KIyAxNTAgIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFu c190bXAuaCIKc3RhdGljIHZvaWQgaW5pdF90cmFuc18zX0dMZG91YmxlX2VsdCh2b2lkKQp7CiMg MTYxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIDsKICAgZ2xf dHJhbnNfZWx0XzNmX3RhYlsoKDB4MTQwQSkgJiAweGYpXSA9IHRyYW5zXzNfR0xkb3VibGVfM2Zf ZWx0OwoKCiAgIGdsX3RyYW5zX2VsdF80dWJfdGFiWzNdWygoMHgxNDBBKSAmIDB4ZildID0gdHJh bnNfM19HTGRvdWJsZV80dWJfZWx0OwoKCiAgIGdsX3RyYW5zX2VsdF80Zl90YWJbM11bKCgweDE0 MEEpICYgMHhmKV0gPSB0cmFuc18zX0dMZG91YmxlXzRmX2VsdDsKCgp9CiMgNzY4ICJ0cmFuc2xh dGUuYyIgMgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgi IDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMg dm9pZCB0cmFuc18yX0dMZG91YmxlXzRmX2VsdCggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAg ICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1 aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsK ICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7 CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmly c3Q7CiAgICh2b2lkKSBzdGFydDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZv aWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYg PSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICBpZiAoMiA+PSAxKSB0W2ldWzBd ID0gKCgoR0xkb3VibGUgKilmKVswXSk7CiAgICAgICAgIGlmICgyID49IDIpIHRbaV1bMV0gPSAo KChHTGRvdWJsZSAqKWYpWzFdKTsKICAgICAgICAgaWYgKDIgPj0gMykgdFtpXVsyXSA9ICgoKEdM ZG91YmxlICopZilbMl0pOwogICAgICAgICBpZiAoMiA9PSA0KSB0W2ldWzNdID0gKCgoR0xkb3Vi bGUgKilmKVszXSk7CiAgICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVz YS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfMl9HTGRvdWJsZV9lbHQo dm9pZCkKewojIDE2OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgog ICBnbF90cmFuc19lbHRfNGZfdGFiWzJdWygoMHgxNDBBKSAmIDB4ZildID0gdHJhbnNfMl9HTGRv dWJsZV80Zl9lbHQ7CgoKfQojIDc3MyAidHJhbnNsYXRlLmMiIDIKCgoKCgoKIyAxICIuLi8uLi8u Li8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0 cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18xX0dMZG91YmxlXzRm X2VsdCggR0xmbG9hdCAoKnQpWzRdLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg Z2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmZsYWdz LCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgbikKewog ICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChH THVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0 ID0gZjsKICAgR0x1aW50IGk7CgogICAodm9pZCkgZmlyc3Q7CiAgICh2b2lkKSBzdGFydDsKICAg Zm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdz W2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJp ZGU7OwogICAgICAgICBpZiAoMSA+PSAxKSB0W2ldWzBdID0gKCgoR0xkb3VibGUgKilmKVswXSk7 CiAgICAgICAgIGlmICgxID49IDIpIHRbaV1bMV0gPSAoKChHTGRvdWJsZSAqKWYpWzFdKTsKICAg ICAgICAgaWYgKDEgPj0gMykgdFtpXVsyXSA9ICgoKEdMZG91YmxlICopZilbMl0pOwogICAgICAg ICBpZiAoMSA9PSA0KSB0W2ldWzNdID0gKCgoR0xkb3VibGUgKilmKVszXSk7CiAgICAgIH0KICAg fQp9CiMgMTA4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRp YyB2b2lkIHRyYW5zXzFfR0xkb3VibGVfMXViX2VsdCggR0x1Ynl0ZSAqdCwKICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAg ICAgICAgICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1 aW50IHN0YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsK ICAgY29uc3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7 CiAgIGNvbnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBzdGFy dDsKICAgKHZvaWQpIGZpcnN0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9p ZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9 IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgICBkbyB7IHVuaW9uIHsgR0xmbG9h dCByOyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xkb3VibGUgKilmKVswXSk7IHRbaV0g PSAoKHRtcC5pID49IDB4M2Y3ZjAwMDApID8gKChHTGludCl0bXAuaSA8IDApID8gKEdMdWJ5dGUp MCA6IChHTHVieXRlKTI1NSA6ICh0bXAuciA9IHRtcC5yKigyNTUuMEYvMjU2LjBGKSArIDMyNzY4 LjBGLCAoR0x1Ynl0ZSl0bXAuaSkpOyB9IHdoaWxlICgwKTsKICAgICAgfQogICB9Cn0KCgoKCnN0 YXRpYyB2b2lkIHRyYW5zXzFfR0xkb3VibGVfMXVpX2VsdCggR0x1aW50ICp0LAogICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAg ICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBH THVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVC OwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlk ZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0 YXJ0OwogICAodm9pZCkgZmlyc3Q7CgogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAo dm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAg ZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIHRbaV0gPSAoR0x1aW50KSAo R0xpbnQpICgoKEdMZG91YmxlICopZilbMF0pOwogICAgICB9CiAgIH0KfQoKCgpzdGF0aWMgdm9p ZCBpbml0X3RyYW5zXzFfR0xkb3VibGVfZWx0KHZvaWQpCnsKCiAgIDsKICAgZ2xfdHJhbnNfZWx0 XzF1aV90YWJbKCgweDE0MEEpICYgMHhmKV0gPSB0cmFuc18xX0dMZG91YmxlXzF1aV9lbHQ7CgoK ICAgOwogICBnbF90cmFuc19lbHRfMXViX3RhYlsoKDB4MTQwQSkgJiAweGYpXSA9IHRyYW5zXzFf R0xkb3VibGVfMXViX2VsdDsKIyAxNjggIi4uLy4uLy4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFu c190bXAuaCIKICAgZ2xfdHJhbnNfZWx0XzRmX3RhYlsxXVsoKDB4MTQwQSkgJiAweGYpXSA9IHRy YW5zXzFfR0xkb3VibGVfNGZfZWx0OwoKCn0KIyA3ODAgInRyYW5zbGF0ZS5jIiAyCiMgNzkyICJ0 cmFuc2xhdGUuYyIKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgi IDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMg dm9pZCB0cmFuc180X0dMZmxvYXRfNGZfZWx0KCBHTGZsb2F0ICgqdClbNF0sCiAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAgICAgICAgICAg ICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVp bnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwog ICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsK ICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2b2lkKSBmaXJz dDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9p ZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9 IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlmICg0ID49IDEpIHRbaV1bMF0g PSAoKChHTGZsb2F0ICopZilbMF0pOwogICAgICAgICBpZiAoNCA+PSAyKSB0W2ldWzFdID0gKCgo R0xmbG9hdCAqKWYpWzFdKTsKICAgICAgICAgaWYgKDQgPj0gMykgdFtpXVsyXSA9ICgoKEdMZmxv YXQgKilmKVsyXSk7CiAgICAgICAgIGlmICg0ID09IDQpIHRbaV1bM10gPSAoKChHTGZsb2F0ICop ZilbM10pOwogICAgICB9CiAgIH0KfQojIDg0ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMv dHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzRfR0xmbG9hdF80dWJfZWx0KCBHTHVieXRl ICgqdClbNF0sCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2Fy cmF5ICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50ICpl bHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0 cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBm cm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdM dWludCBpOwogICAodm9pZCkgc3RhcnQ7CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0gc3Rh cnQgOyBpIDwgbiA7IGkrKywgKHZvaWQpMSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9 PSAweDIwKSB7CiAgICAgICAgIGYgPSBmaXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAg ICBpZiAoNCA+PSAxKSBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7IHRt cC5yID0gKCgoR0xmbG9hdCAqKWYpWzBdKTsgdFtpXVswXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAw MCkgPyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRt cC5yID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7 IH0gd2hpbGUgKDApOwogICAgICAgICBpZiAoNCA+PSAyKSBkbyB7IHVuaW9uIHsgR0xmbG9hdCBy OyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xmbG9hdCAqKWYpWzFdKTsgdFtpXVsxXSA9 ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0ZSkw IDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3Njgu MEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOwogICAgICAgICBpZiAoNCA+PSAzKSBk byB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xmbG9h dCAqKWYpWzJdKTsgdFtpXVsyXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRt cC5pIDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1 NS4wRi8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOwog ICAgICAgICBpZiAoNCA9PSA0KSBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0 bXA7IHRtcC5yID0gKCgoR0xmbG9hdCAqKWYpWzNdKTsgdFtpXVszXSA9ICgodG1wLmkgPj0gMHgz ZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1 IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRt cC5pKSk7IH0gd2hpbGUgKDApOyBlbHNlIHRbaV1bM10gPSAyNTU7CiAgICAgIH0KICAgfQp9CiMg MTUwICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lk IGluaXRfdHJhbnNfNF9HTGZsb2F0X2VsdCh2b2lkKQp7CiMgMTY1ICIuLi8uLi8uLi8uLi9leHRy YXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCiAgIGdsX3RyYW5zX2VsdF80dWJfdGFiWzRdWygoMHgx NDA2KSAmIDB4ZildID0gdHJhbnNfNF9HTGZsb2F0XzR1Yl9lbHQ7CgoKICAgZ2xfdHJhbnNfZWx0 XzRmX3RhYls0XVsoKDB4MTQwNikgJiAweGYpXSA9IHRyYW5zXzRfR0xmbG9hdF80Zl9lbHQ7CgoK fQojIDc5MyAidHJhbnNsYXRlLmMiIDIKCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVz YS9zcmMvdHJhbnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3Ry YW5zX3RtcC5oIgpzdGF0aWMgdm9pZCB0cmFuc18zX0dMZmxvYXRfNGZfZWx0KCBHTGZsb2F0ICgq dClbNF0sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkg KmZyb20sCiAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywg R0x1aW50IG1hdGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUg PSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+ UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQg aTsKCiAgICh2b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7 IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4 MjApIHsKICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlm ICgzID49IDEpIHRbaV1bMF0gPSAoKChHTGZsb2F0ICopZilbMF0pOwogICAgICAgICBpZiAoMyA+ PSAyKSB0W2ldWzFdID0gKCgoR0xmbG9hdCAqKWYpWzFdKTsKICAgICAgICAgaWYgKDMgPj0gMykg dFtpXVsyXSA9ICgoKEdMZmxvYXQgKilmKVsyXSk7CiAgICAgICAgIGlmICgzID09IDQpIHRbaV1b M10gPSAoKChHTGZsb2F0ICopZilbM10pOwogICAgICB9CiAgIH0KfQoKCgoKc3RhdGljIHZvaWQg dHJhbnNfM19HTGZsb2F0XzNmX2VsdCggR0xmbG9hdCAoKnQpWzNdLAogICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAgICAg ICAgICBHTHVpbnQgKmZsYWdzLCBHTHVpbnQgKmVsdHMsIEdMdWludCBtYXRjaCwgR0x1aW50IHN0 YXJ0LCBHTHVpbnQgbikKewogICBHTHVpbnQgc3RyaWRlID0gZnJvbS0+U3RyaWRlQjsKICAgY29u c3QgR0x1Ynl0ZSAqZiA9IChHTHVieXRlICopIGZyb20tPlB0ciArIDAgKiBzdHJpZGU7CiAgIGNv bnN0IEdMdWJ5dGUgKmZpcnN0ID0gZjsKICAgR0x1aW50IGk7CiAgICh2b2lkKSBmaXJzdDsKICAg KHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkxKSB7 CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZpcnN0 ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIHRbaV1bMF0gPSAoKChHTGZsb2F0ICopZilb MF0pOwogICAgICAgICB0W2ldWzFdID0gKCgoR0xmbG9hdCAqKWYpWzFdKTsKICAgICAgICAgdFtp XVsyXSA9ICgoKEdMZmxvYXQgKilmKVsyXSk7CiAgICAgIH0KICAgfQp9CgoKCnN0YXRpYyB2b2lk IHRyYW5zXzNfR0xmbG9hdF80dWJfZWx0KCBHTHVieXRlICgqdClbNF0sCiAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgZ2xfY2xpZW50X2FycmF5ICpmcm9tLAogICAgICAgICAgICAg ICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWlu dCBzdGFydCwgR0x1aW50IG4pCnsKICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAg IGNvbnN0IEdMdWJ5dGUgKmYgPSAoR0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwog ICBjb25zdCBHTHVieXRlICpmaXJzdCA9IGY7CiAgIEdMdWludCBpOwogICAodm9pZCkgc3RhcnQ7 CiAgICh2b2lkKSBmaXJzdDsKICAgZm9yIChpID0gc3RhcnQgOyBpIDwgbiA7IGkrKywgKHZvaWQp MSkgewogICAgICBpZiAoKGZsYWdzW2ldJm1hdGNoKSA9PSAweDIwKSB7CiAgICAgICAgIGYgPSBm aXJzdCArIGVsdHNbaV0gKiBzdHJpZGU7OwogICAgICAgICBpZiAoMyA+PSAxKSBkbyB7IHVuaW9u IHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xmbG9hdCAqKWYpWzBd KTsgdFtpXVswXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkg PyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYu MEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOwogICAgICAgICBp ZiAoMyA+PSAyKSBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5y ID0gKCgoR0xmbG9hdCAqKWYpWzFdKTsgdFtpXVsxXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkg PyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5y ID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0g d2hpbGUgKDApOwogICAgICAgICBpZiAoMyA+PSAzKSBkbyB7IHVuaW9uIHsgR0xmbG9hdCByOyBH THVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xmbG9hdCAqKWYpWzJdKTsgdFtpXVsyXSA9ICgo dG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5pIDwgMCkgPyAoR0x1Ynl0ZSkwIDog KEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4wRi8yNTYuMEYpICsgMzI3NjguMEYs IChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOwogICAgICAgICBpZiAoMyA9PSA0KSBkbyB7 IHVuaW9uIHsgR0xmbG9hdCByOyBHTHVpbnQgaTsgfSB0bXA7IHRtcC5yID0gKCgoR0xmbG9hdCAq KWYpWzNdKTsgdFtpXVszXSA9ICgodG1wLmkgPj0gMHgzZjdmMDAwMCkgPyAoKEdMaW50KXRtcC5p IDwgMCkgPyAoR0x1Ynl0ZSkwIDogKEdMdWJ5dGUpMjU1IDogKHRtcC5yID0gdG1wLnIqKDI1NS4w Ri8yNTYuMEYpICsgMzI3NjguMEYsIChHTHVieXRlKXRtcC5pKSk7IH0gd2hpbGUgKDApOyBlbHNl IHRbaV1bM10gPSAyNTU7CiAgICAgIH0KICAgfQp9CiMgMTUwICIuLi8uLi8uLi8uLi9leHRyYXMv TWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIGluaXRfdHJhbnNfM19HTGZsb2F0X2Vs dCh2b2lkKQp7CiMgMTYxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgi CiAgIDsKICAgZ2xfdHJhbnNfZWx0XzNmX3RhYlsoKDB4MTQwNikgJiAweGYpXSA9IHRyYW5zXzNf R0xmbG9hdF8zZl9lbHQ7CgoKICAgZ2xfdHJhbnNfZWx0XzR1Yl90YWJbM11bKCgweDE0MDYpICYg MHhmKV0gPSB0cmFuc18zX0dMZmxvYXRfNHViX2VsdDsKCgogICBnbF90cmFuc19lbHRfNGZfdGFi WzNdWygoMHgxNDA2KSAmIDB4ZildID0gdHJhbnNfM19HTGZsb2F0XzRmX2VsdDsKCgp9CiMgODAw ICJ0cmFuc2xhdGUuYyIgMgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJh bnNfdG1wLmgiIDEKIyAzNyAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5o IgpzdGF0aWMgdm9pZCB0cmFuc18yX0dMZmxvYXRfNGZfZWx0KCBHTGZsb2F0ICgqdClbNF0sCiAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZyb20sCiAg ICAgICAgICAgICAgICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1h dGNoLCBHTHVpbnQgc3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5T dHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAq IHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKCiAgICh2 b2lkKSBmaXJzdDsKICAgKHZvaWQpIHN0YXJ0OwogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsg aSsrLCAodm9pZCkxKSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAg ICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIGlmICgyID49IDEp IHRbaV1bMF0gPSAoKChHTGZsb2F0ICopZilbMF0pOwogICAgICAgICBpZiAoMiA+PSAyKSB0W2ld WzFdID0gKCgoR0xmbG9hdCAqKWYpWzFdKTsKICAgICAgICAgaWYgKDIgPj0gMykgdFtpXVsyXSA9 ICgoKEdMZmxvYXQgKilmKVsyXSk7CiAgICAgICAgIGlmICgyID09IDQpIHRbaV1bM10gPSAoKChH TGZsb2F0ICopZilbM10pOwogICAgICB9CiAgIH0KfQojIDE1MCAiLi4vLi4vLi4vLi4vZXh0cmFz L01lc2Evc3JjL3RyYW5zX3RtcC5oIgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zXzJfR0xmbG9hdF9l bHQodm9pZCkKewojIDE2OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5o IgogICBnbF90cmFuc19lbHRfNGZfdGFiWzJdWygoMHgxNDA2KSAmIDB4ZildID0gdHJhbnNfMl9H TGZsb2F0XzRmX2VsdDsKCgp9CiMgODA1ICJ0cmFuc2xhdGUuYyIgMgoKCgoKCgojIDEgIi4uLy4u Ly4uLy4uL2V4dHJhcy9NZXNhL3NyYy90cmFuc190bXAuaCIgMQojIDM3ICIuLi8uLi8uLi8uLi9l eHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2b2lkIHRyYW5zXzFfR0xmbG9hdF8z Zl9lbHQoIEdMZmxvYXQgKCp0KVs0XSwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0 IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFn cywgR0x1aW50ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4pCnsK ICAgR0x1aW50IHN0cmlkZSA9IGZyb20tPlN0cmlkZUI7CiAgIGNvbnN0IEdMdWJ5dGUgKmYgPSAo R0x1Ynl0ZSAqKSBmcm9tLT5QdHIgKyAwICogc3RyaWRlOwogICBjb25zdCBHTHVieXRlICpmaXJz dCA9IGY7CiAgIEdMdWludCBpOwoKICAgKHZvaWQpIGZpcnN0OwogICAodm9pZCkgc3RhcnQ7CiAg IGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEpIHsKICAgICAgaWYgKChmbGFn c1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICogc3Ry aWRlOzsKICAgICAgICAgaWYgKDEgPj0gMSkgdFtpXVswXSA9ICgoKEdMZmxvYXQgKilmKVswXSk7 CiAgICAgICAgIGlmICgxID49IDIpIHRbaV1bMV0gPSAoKChHTGZsb2F0ICopZilbMV0pOwogICAg ICAgICBpZiAoMSA+PSAzKSB0W2ldWzJdID0gKCgoR0xmbG9hdCAqKWYpWzJdKTsKICAgICAgICAg aWYgKDEgPT0gNCkgdFtpXVszXSA9ICgoKEdMZmxvYXQgKilmKVszXSk7CiAgICAgIH0KICAgfQp9 CiMgMTA4ICIuLi8uLi8uLi8uLi9leHRyYXMvTWVzYS9zcmMvdHJhbnNfdG1wLmgiCnN0YXRpYyB2 b2lkIHRyYW5zXzFfR0xmbG9hdF8xdWJfZWx0KCBHTHVieXRlICp0LAogICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAg ICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQg c3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBj b25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAg Y29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0Owog ICAodm9pZCkgZmlyc3Q7CiAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4gOyBpKyssICh2b2lkKTEp IHsKICAgICAgaWYgKChmbGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkgewogICAgICAgICBmID0gZmly c3QgKyBlbHRzW2ldICogc3RyaWRlOzsKICAgICAgICAgIGRvIHsgdW5pb24geyBHTGZsb2F0IHI7 IEdMdWludCBpOyB9IHRtcDsgdG1wLnIgPSAoKChHTGZsb2F0ICopZilbMF0pOyB0W2ldID0gKCh0 bXAuaSA+PSAweDNmN2YwMDAwKSA/ICgoR0xpbnQpdG1wLmkgPCAwKSA/IChHTHVieXRlKTAgOiAo R0x1Ynl0ZSkyNTUgOiAodG1wLnIgPSB0bXAuciooMjU1LjBGLzI1Ni4wRikgKyAzMjc2OC4wRiwg KEdMdWJ5dGUpdG1wLmkpKTsgfSB3aGlsZSAoMCk7CiAgICAgIH0KICAgfQp9CgoKCgpzdGF0aWMg dm9pZCB0cmFuc18xX0dMZmxvYXRfMXVpX2VsdCggR0x1aW50ICp0LAogICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IGdsX2NsaWVudF9hcnJheSAqZnJvbSwKICAgICAgICAgICAgICAg ICAgICAgIEdMdWludCAqZmxhZ3MsIEdMdWludCAqZWx0cywgR0x1aW50IG1hdGNoLCBHTHVpbnQg c3RhcnQsIEdMdWludCBuKQp7CiAgIEdMdWludCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBj b25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUgKikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAg Y29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwogICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0Owog ICAodm9pZCkgZmlyc3Q7CgogICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsgaSsrLCAodm9pZCkx KSB7CiAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsKICAgICAgICAgZiA9IGZp cnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgIHRbaV0gPSAoR0x1aW50KSAoR0xpbnQp ICgoKEdMZmxvYXQgKilmKVswXSk7CiAgICAgIH0KICAgfQp9CgoKCnN0YXRpYyB2b2lkIGluaXRf dHJhbnNfMV9HTGZsb2F0X2VsdCh2b2lkKQp7CgogICA7CiAgIGdsX3RyYW5zX2VsdF8xdWlfdGFi WygoMHgxNDA2KSAmIDB4ZildID0gdHJhbnNfMV9HTGZsb2F0XzF1aV9lbHQ7CgoKICAgOwogICBn bF90cmFuc19lbHRfMXViX3RhYlsoKDB4MTQwNikgJiAweGYpXSA9IHRyYW5zXzFfR0xmbG9hdF8x dWJfZWx0OwojIDE2OCAiLi4vLi4vLi4vLi4vZXh0cmFzL01lc2Evc3JjL3RyYW5zX3RtcC5oIgog ICBnbF90cmFuc19lbHRfNGZfdGFiWzFdWygoMHgxNDA2KSAmIDB4ZildID0gdHJhbnNfMV9HTGZs b2F0XzNmX2VsdDsKCgp9CiMgODEyICJ0cmFuc2xhdGUuYyIgMgojIDgyMSAidHJhbnNsYXRlLmMi CnN0YXRpYyB2b2lkIHRyYW5zXzRfR0x1Ynl0ZV80dWIoR0x1Ynl0ZSAoKnQpWzRdLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBnbF9jbGllbnRfYXJyYXkgKmZy b20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpmbGFncywgR0x1aW50 ICplbHRzLCBHTHVpbnQgbWF0Y2gsIEdMdWludCBzdGFydCwgR0x1aW50IG4gKQp7CiAgIEdMdWlu dCBzdHJpZGUgPSBmcm9tLT5TdHJpZGVCOwogICBjb25zdCBHTHVieXRlICpmID0gKEdMdWJ5dGUg KikgZnJvbS0+UHRyICsgMCAqIHN0cmlkZTsKICAgY29uc3QgR0x1Ynl0ZSAqZmlyc3QgPSBmOwog ICBHTHVpbnQgaTsKICAgKHZvaWQpIHN0YXJ0OwogICBpZiAoKCgoKGxvbmcpIGYgfCAobG9uZykg c3RyaWRlKSkgJiAzTCkgPT0gMEwpIHsKCgogICAgICBmb3IgKGkgPSBzdGFydCA7IGkgPCBuIDsg aSsrLCAodm9pZCkxKSB7CiAgICAgICAgIGlmICgoZmxhZ3NbaV0mbWF0Y2gpID09IDB4MjApIHsK ICAgICAgICAgICAgZiA9IGZpcnN0ICsgZWx0c1tpXSAqIHN0cmlkZTs7CiAgICAgICAgICAgIGRv IHsgKigoR0x1aW50KikodFtpXSkpID0gKigoR0x1aW50KikoZikpOyB9IHdoaWxlICgwKTsKICAg ICAgICAgfQogICAgICB9CiAgIH0gZWxzZSB7CiAgICAgIGZvciAoaSA9IHN0YXJ0IDsgaSA8IG4g OyBpKyssICh2b2lkKTEpIHsKICAgICAgICAgaWYgKChmbGFnc1tpXSZtYXRjaCkgPT0gMHgyMCkg ewogICAgICAgICAgICBmID0gZmlyc3QgKyBlbHRzW2ldICogc3RyaWRlOzsKICAgICAgICAgICAg dFtpXVswXSA9IGZbMF07CiAgICAgICAgICAgIHRbaV1bMV0gPSBmWzFdOwogICAgICAgICAgICB0 W2ldWzJdID0gZlsyXTsKICAgICAgICAgICAgdFtpXVszXSA9IGZbM107CiAgICAgICAgIH0KICAg ICAgfQogICB9Cn0KCgpzdGF0aWMgdm9pZCBpbml0X3RyYW5zbGF0ZV9lbHQodm9pZCkKewogICBt ZW1zZXQoICh2b2lkICopIChnbF90cmFuc19lbHRfMXVpX3RhYiksIChpbnQpICgwKSwgKHNpemVf dCkgKHNpemVvZihnbF90cmFuc19lbHRfMXVpX3RhYikpICk7CiAgIG1lbXNldCggKHZvaWQgKikg KGdsX3RyYW5zX2VsdF8xdWJfdGFiKSwgKGludCkgKDApLCAoc2l6ZV90KSAoc2l6ZW9mKGdsX3Ry YW5zX2VsdF8xdWJfdGFiKSkgKTsKICAgbWVtc2V0KCAodm9pZCAqKSAoZ2xfdHJhbnNfZWx0XzNm X3RhYiksIChpbnQpICgwKSwgKHNpemVfdCkgKHNpemVvZihnbF90cmFuc19lbHRfM2ZfdGFiKSkg KTsKICAgbWVtc2V0KCAodm9pZCAqKSAoZ2xfdHJhbnNfZWx0XzR1Yl90YWIpLCAoaW50KSAoMCks IChzaXplX3QpIChzaXplb2YoZ2xfdHJhbnNfZWx0XzR1Yl90YWIpKSApOwogICBtZW1zZXQoICh2 b2lkICopIChnbF90cmFuc19lbHRfNGZfdGFiKSwgKGludCkgKDApLCAoc2l6ZV90KSAoc2l6ZW9m KGdsX3RyYW5zX2VsdF80Zl90YWIpKSApOwoKICAgZ2xfdHJhbnNfZWx0XzR1Yl90YWJbNF1bKCgw eDE0MDEpICYgMHhmKV0gPSB0cmFuc180X0dMdWJ5dGVfNHViOwoKICAgaW5pdF90cmFuc180X0dM Ynl0ZV9lbHQoKTsKICAgaW5pdF90cmFuc18zX0dMYnl0ZV9lbHQoKTsKICAgaW5pdF90cmFuc18y X0dMYnl0ZV9lbHQoKTsKICAgaW5pdF90cmFuc18xX0dMYnl0ZV9lbHQoKTsKICAgaW5pdF90cmFu c18xX0dMdWJ5dGVfZWx0KCk7CiAgIGluaXRfdHJhbnNfM19HTHVieXRlX2VsdCgpOwogICBpbml0 X3RyYW5zXzRfR0xzaG9ydF9lbHQoKTsKICAgaW5pdF90cmFuc18zX0dMc2hvcnRfZWx0KCk7CiAg IGluaXRfdHJhbnNfMl9HTHNob3J0X2VsdCgpOwogICBpbml0X3RyYW5zXzFfR0xzaG9ydF9lbHQo KTsKICAgaW5pdF90cmFuc180X0dMdXNob3J0X2VsdCgpOwogICBpbml0X3RyYW5zXzNfR0x1c2hv cnRfZWx0KCk7CiAgIGluaXRfdHJhbnNfMl9HTHVzaG9ydF9lbHQoKTsKICAgaW5pdF90cmFuc18x X0dMdXNob3J0X2VsdCgpOwogICBpbml0X3RyYW5zXzRfR0xpbnRfZWx0KCk7CiAgIGluaXRfdHJh bnNfM19HTGludF9lbHQoKTsKICAgaW5pdF90cmFuc18yX0dMaW50X2VsdCgpOwogICBpbml0X3Ry YW5zXzFfR0xpbnRfZWx0KCk7CiAgIGluaXRfdHJhbnNfNF9HTHVpbnRfZWx0KCk7CiAgIGluaXRf dHJhbnNfM19HTHVpbnRfZWx0KCk7CiAgIGluaXRfdHJhbnNfMl9HTHVpbnRfZWx0KCk7CiAgIGlu aXRfdHJhbnNfMV9HTHVpbnRfZWx0KCk7CiAgIGluaXRfdHJhbnNfNF9HTGRvdWJsZV9lbHQoKTsK ICAgaW5pdF90cmFuc18zX0dMZG91YmxlX2VsdCgpOwogICBpbml0X3RyYW5zXzJfR0xkb3VibGVf ZWx0KCk7CiAgIGluaXRfdHJhbnNfMV9HTGRvdWJsZV9lbHQoKTsKICAgaW5pdF90cmFuc180X0dM ZmxvYXRfZWx0KCk7CiAgIGluaXRfdHJhbnNfM19HTGZsb2F0X2VsdCgpOwogICBpbml0X3RyYW5z XzJfR0xmbG9hdF9lbHQoKTsKICAgaW5pdF90cmFuc18xX0dMZmxvYXRfZWx0KCk7Cn0KIyA5MDUg InRyYW5zbGF0ZS5jIgp2b2lkIGdsX2luaXRfdHJhbnNsYXRlKCB2b2lkICkKewogICBpbml0X3Ry YW5zbGF0ZV9yYXcoKTsKICAgaW5pdF90cmFuc2xhdGVfZWx0KCk7Cn0K