Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wcUAp-003O1B-1w for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Jun 2026 20:26:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wcUAn-002TeE-0K for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Jun 2026 20:26:13 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wcUAm-002Te6-0W for pgsql-hackers@lists.postgresql.org; Wed, 24 Jun 2026 20:26:12 +0000 Received: from meesny.iki.fi ([195.140.195.201]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wcUAf-000000005ad-1yYh for pgsql-hackers@postgresql.org; Wed, 24 Jun 2026 20:26:11 +0000 Received: from [10.0.2.15] (unknown [137.83.235.83]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by meesny.iki.fi (Postfix) with ESMTPSA id 4gltk12R9LzyQc; Wed, 24 Jun 2026 23:26:01 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=meesny; t=1782332763; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=ld0MZbac88fNQv+EOuuLZ1NPJWhX9sgwMZaiMmA4ugY=; b=QFGYWHELEYbP3SVKJWUl4T0B2ID3K3ykBLYRRn5O4N1UQ/pVjotaXAcdFcQ2OYJV6S7lzD aBL7fkg/TTZkF4srw5J2S2QDmdrCj4iaSUHyS3JnbI7nwfoyCEliA5mUWgNggbBW4PKPbI Y70knbbuICMrcSBNL9HKHpUJ+GVpvAI= ARC-Seal: i=1; a=rsa-sha256; d=iki.fi; s=meesny; cv=none; t=1782332763; b=XCHXJFOnMQLhe59tn3ZUT+5BGAMJw/Uz/BDsRUcEnTLsLsnEcWICEJ9bmTC/duLmqCMCAd PMH5hwZiaIlQKoIb8zRJQU9A6UhX0yRcra8p6GpXanJxG+njVeh07nL5wFaPA5uR3otegJ ENbu53RQS5VAaVasO9jajsD6q9bYljI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=meesny; t=1782332763; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=ld0MZbac88fNQv+EOuuLZ1NPJWhX9sgwMZaiMmA4ugY=; b=GZ/WKXINFnRqM293f8gKgoc+NIPlrXekuvTVYNYszjj92p5OFJAA5Q2EbVr7wxU+ZWlUTH Sv4yW1e/+aArOCh2Em3/kfq4F4z4UdEMAQaNYEIUgMNwkwsSasPZEbASGDSRDxpEumDRDq BYxeTxWrGEIJ5u8ApEK9MyNWeJsQxl8= ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi Content-Type: multipart/mixed; boundary="------------WzeNeixNPsQ0a7SXozrFhDu6" Message-ID: <0aac2b1a-ec0f-4bb6-a786-760e6cea4d1d@iki.fi> Date: Wed, 24 Jun 2026 23:25:59 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Interrupts vs signals To: Andres Freund Cc: Thomas Munro , Michael Paquier , Robert Haas , Fujii Masao , pgsql-hackers References: <4ddab51d-e932-40c5-b6fa-18c52db0e082@iki.fi> <08382e5c-a820-4aca-90ac-fab50cd4599c@iki.fi> <818bafaf-1e77-4c78-8037-d7120878d87c@iki.fi> <78c102b3-f1a6-4c70-a46f-2f04221b6193@iki.fi> <6dhkabcmuqvitikyxc56avfrqcyyenbis2l3wuwmrbj27uvm67@z6kpdljfhoot> Content-Language: en-US From: Heikki Linnakangas In-Reply-To: <6dhkabcmuqvitikyxc56avfrqcyyenbis2l3wuwmrbj27uvm67@z6kpdljfhoot> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------WzeNeixNPsQ0a7SXozrFhDu6 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 10/03/2026 21:43, Andres Freund wrote: > On 2026-02-20 16:22:48 +0200, Heikki Linnakangas wrote: >> Patch attached. The relevant changes for this "attention mechanism" are in >> the last patch, but there are some other small changes too so this split >> into patches is a little messy. I moved the list of standard interrupts to a >> separate header file, for example. So for reviewing, I recommend reading the >> resulting interrupt.h and interrupt.c files after applying all the patches, >> instead of trying to read the diff for those. > > I was just looking at these patches. They needed a rebase. Attached without > other changes. Thanks! Here's a new version, rebased again and with a big bunch of little fixes. > A few comments: > > - I don't think I really understand the interrupts.h / standard_interrupts.h > split. Also, the latter doesn't have the normal function header etc. Added standard file header. The idea is that "standard_interrupts.h" contains the definitions of all the different interrupt, and prototypes for functions related to them, whereas "interrupts.h" contains definitions for the interrupt system as whole, with no knowledge of what any of the individual bits mean. > - It probably doesn't matter, but it seems that for SendOrRaiseInterrupt() > could we skip the setting of PI_FLAG_ATTENTION if already set? Hmm, I guess, but I think it'd just make it more complicated to try to check for that. > - I see a bunch of core files like this: > > > #4 0x0000000000d6a4d8 in ExceptionalCondition (conditionName=0x1089ff8 "(pg_atomic_read_u32(&MyPendingInterrupts->flags) & PI_FLAG_SLEEPING) == 0", > fileName=0x1089f70 "../../../../../home/andres/src/postgresql/src/backend/ipc/interrupt.c", lineNumber=262) > at ../../../../../home/andres/src/postgresql/src/backend/utils/error/assert.c:65 > #5 0x000000000091aa12 in SwitchMyPendingInterruptsPtr (new_ptr=0x161dc30 ) at ../../../../../home/andres/src/postgresql/src/backend/ipc/interrupt.c:262 > #6 0x000000000091aaaa in SwitchToLocalInterrupts () at ../../../../../home/andres/src/postgresql/src/backend/ipc/interrupt.c:313 > #7 0x0000000000b71dca in AuxiliaryProcKill (code=1, arg=4) at ../../../../../home/andres/src/postgresql/src/backend/storage/lmgr/proc.c:1075 > #8 0x0000000000b411c4 in shmem_exit (code=1) at ../../../../../home/andres/src/postgresql/src/backend/storage/ipc/ipc.c:282 > #9 0x0000000000b40faa in proc_exit_prepare (code=1) at ../../../../../home/andres/src/postgresql/src/backend/storage/ipc/ipc.c:198 > #10 0x0000000000b40ef6 in proc_exit (code=1) at ../../../../../home/andres/src/postgresql/src/backend/storage/ipc/ipc.c:113 > #11 0x0000000000b53ba6 in WaitEventSetWaitBlock (set=0x257a1b40, cur_timeout=200, occurred_events=0x7fff8d4db130, nevents=1) > at ../../../../../home/andres/src/postgresql/src/backend/storage/ipc/waiteventset.c:1306 > #12 0x0000000000b53922 in WaitEventSetWait (set=0x257a1b40, timeout=200, occurred_events=0x7fff8d4db130, nevents=1, wait_event_info=83886083) > at ../../../../../home/andres/src/postgresql/src/backend/storage/ipc/waiteventset.c:1170 > #13 0x000000000091ae79 in WaitInterrupt (interruptMask=122, wakeEvents=41, timeout=200, wait_event_info=83886083) > at ../../../../../home/andres/src/postgresql/src/backend/ipc/interrupt.c:482 > #14 0x0000000000a7629c in BackgroundWriterMain (startup_data=0x0, startup_data_len=0) at ../../../../../home/andres/src/postgresql/src/backend/postmaster/bgwriter.c:298 > #15 0x0000000000a7869a in postmaster_child_launch (child_type=B_BG_WRITER, child_slot=35, startup_data=0x0, startup_data_len=0, client_sock=0x0) > at ../../../../../home/andres/src/postgresql/src/backend/postmaster/launch_backend.c:268 > > > interestingly that doesn't trigger any test failures. A-ha, yeah, that doesn't cause test failure because that happens in the WL_EXIT_ON_PM_DEATH case. Fixed by clearing the PI_FLAG_SLEEPING flag before bailing out in WaitEventSetWait() subroutines. > - Are we generally ok with having no memory barriers around > CHECK_FOR_INTERRUPTS()/InterruptPending()/ConsumeInterrupt()? It might be, > because we shouldn't rely on immediate processing of the interrupts, but at > the very least we need some documentation for why that is true. I think so. There's a comment in InterruptPending() about that. We could make it more prominent by moving it to CHECK_FOR_INTERRUPTS(). I'm not sure if this can ever be a problem in practice though. > Practically it's probably ok, even on architectures with loose memory > ordering, we don't typically have loops that do something like > > while (true) > { > CFI(); > very_cpu_intensive_but_nothing_else(); > } > > And once you actually wait for an interrupt, lock a page, or ... we'll be > guaranteed to see the interrupt. Hmm, even without a barrier, that won't get stuck forever, right? InterruptPending() uses pg_atomic_read_u64(), which still forces the value to be read on each iteration (the arg is 'volatile'). There's no cache coherency but I believe the CPU will *eventually* see the new value. I don't have a good idea of what "eventually" means on different architectures, but I'd guess << 1 s. > - CFI now is: > > ; determine address of MyPendingInterruptsFlags > mov 0x0(%rip),%rax # 3c9 > 3c5: R_X86_64_REX_GOTPCRELX MyPendingInterruptsFlags-0x4 > > ; load *MyPendingInterruptsFlags > mov (%rax),%rax > > ; load the contents of flags > mov (%rax),%eax > > ; test if flags is 0 > test %eax,%eax > > ; jump if flags are set > jne 51b > > > That's one indirection worse than what you had in > https://www.postgresql.org/message-id/78c102b3-f1a6-4c70-a46f-2f04221b6193%40iki.fi > > I don't know if it matters. AFAICS it's three indirections in both. Here are both again, with the indirections numbered: OLD: ; load address of MyPendingInterrupts->flags (1) lea 0x433f0f(%rip),%rax # 0x9728a0 ; load value of MyPendingInterrupts->flags (2) mov (%rax),%rax ; test if MyPendingInterrupts->flags == 0 (3) cmpl $0x0,(%rax) ; jump for ProcessInterrupts jne 0x53e9fd NEW: ; determine address of MyPendingInterruptsFlags (1) mov 0x0(%rip),%rax # 3c9 3c5: R_X86_64_REX_GOTPCRELX MyPendingInterruptsFlags-0x4 ; load *MyPendingInterruptsFlags (2) mov (%rax),%rax ; load the contents of flags (3) mov (%rax),%eax ; test if flags is 0 test %eax,%eax ; jump if flags are set jne 51b > - This continues to be a very very large commit. As I IIRC suggested before, > I'd at least introduce ipc/interrupt.h (including adding the #includes for > it) Done. There's now a separate commit to move CHECK_FOR_INTERRUPTS() to ipc/interrupt.h, and a few other preparatory refactorings. > I'd probably go further and introduce the new infra separately from > switching over to it, but... I feel the intermediate state would be too confusing to really help with the review. > - Wonder if it's worth putting the WIN32 stuff from InitProcGlobal() into its > own helper? Probably not, at least until there's another platform specific > thing? (InitProcGlobal() is called ProcGlobalShmemInit() now) It seems fine to me as it is. There's not much WIN32-specific code there, or elsewhere in these patches. > - Does it matter that we have a bunch of code that does > if (InterruptPending(a)) > stuff(); > if (InterruptPending(b)) > stuff(); > if (ConsumeInterrupt(c)) > stuff(); > if (ConsumeInterrupt(d)) > stuff(); > > that does end up rereading the same variable from shared memory > repeatedly... Hmm, it's probably fine, but if there's some place where that's performance critical, you could do a quick combined check first: if (InterruptPending(a | b | c | d)) { if (InterruptPending(a)) stuff(); if (InterruptPending(b)) stuff(); if (ConsumeInterrupt(c)) stuff(); if (ConsumeInterrupt(d)) stuff(); } Or we could add a function to return the pending mask so that you'd only need to read it once. I haven't really felt the need for that so far, but it would seem pretty logical to have one. > - Personally I rather dislike anonymous struct types (like PendingInterrupts), > as some debuggers and similar tooling won't be able to show names for them. Fixed > - I wonder if we should abstract the PG_HAVE_ATOMIC_U64_SIMULATION crap > somehow (or just remove platforms without it, but I don't think I want to be > the one doing that fight) I think it's fine as it is, there are only a few functions that need to check PG_HAVE_ATOMIC_U64_SIMULATION currently. (I'd be all in favor of desupporting PG_HAVE_ATOMIC_U64_SIMULATION though) - Heikki --------------WzeNeixNPsQ0a7SXozrFhDu6 Content-Type: text/x-patch; charset=UTF-8; name="v13-0001-Refactor-how-some-aux-processes-advertise-their-.patch" Content-Disposition: attachment; filename*0="v13-0001-Refactor-how-some-aux-processes-advertise-their-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2ZWZlZjYzMWM2NzQ3YjhjNjBjZGVhZTU0M2I0Y2Q5MWYwNmRhMmU0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IEZyaSwgMTMgRmViIDIwMjYgMTQ6MjM6MzUgKzAyMDAK U3ViamVjdDogW1BBVENIIHYxMyAxLzldIFJlZmFjdG9yIGhvdyBzb21lIGF1eCBwcm9jZXNz ZXMgYWR2ZXJ0aXNlIHRoZWlyCiBQcm9jTnVtYmVyCgpUaGlzIG1vdmVzIHRoZSByZXNwb25z aWJpbGl0eSBvZiBzZXR0aW5nIHRoZQpQcm9jR2xvYmFsLT53YWxyZXdyaXRlclByb2MgYW5k IGNoZWNrcG9pbnRlclByb2MgZmllbGRzIHRvCkluaXRBdXhpbGlhcnlQcm9jZXNzLiBBbHNv IHN3aXRjaCB0byB0aGUgc2FtZSBwYXR0ZXJuIHRvIGFkdmVydGlzZSB0aGUKYXV0b3ZhY3V1 bSBsYXVuY2hlcidzIFByb2NOdW1iZXIsIHJlcGxhY2luZyB0aGUgYWQgaG9jIGF2X2xhdW5j aGVycGlkCmZpZWxkIGluIHNoYXJlZCBtZW1vcnkuIFRoaXMgY2FuIGVhc2lseSBiZSBleHRl bmRlZCB0byBvdGhlciBhdXgKcHJvY2Vzc2VzIGluIHRoZSBmdXR1cmUsIGlmIG90aGVyIHBy b2Nlc3NlcyBuZWVkIHRvIGZpbmQgdGhlbS4KClN3aXRjaCB0byBwZ19hdG9taWNfdWludDMy IGZvciB0aGUgZmllbGRzLiBTZWVtcyBlYXNpZXIgdG8gcmVhc29uCmFib3V0IHRoYW4gdm9s YXRpbGUgcG9pbnRlcnMuIFRoZXJlIHdhcyBzb21lIHByZWNlZGVuY2UgZm9yIHRoYXQsIGFz CndlcmUgYWxyZWFkeSB1c2luZyBwZ19hdG9taWNfdWludDMyIGZvciB0aGUgcHJvY0FycmF5 R3JvdXBGaXJzdCBhbmQKY2xvZ0dyb3VwRmlyc3QgZmllbGRzLCB3aGljaCBhbHNvIHN0b3Jl IFByb2NOdW1iZXJzLgoKVE9ETzogY291bGQgYWxzbyByZXBsYWNlIFdhbFJlY3YtPnByb2Nu byB3aXRoIHRoaXMKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgICAg IHwgIDMgKy0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyAgIHwgMTkg KysrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVy LmMgfCAxNCArKysrLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHdyaXRl ci5jICAgIHwgIDYgLS0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jICAg ICAgIHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiBzcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2MuaCAgICAgICAgICAgIHwgIDcgKysrKy0tLQogNiBmaWxlcyBjaGFuZ2VkLCA0 NyBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9nLmMKaW5kZXggYTgxOTEyYjc0NDEuLmE4YmJmNjI4NGE3IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZy5jCkBAIC0yNjcxLDggKzI2NzEsNyBAQCBYTG9nU2V0QXN5bmNY YWN0TFNOKFhMb2dSZWNQdHIgYXN5bmNYYWN0TFNOKQogCiAJaWYgKHdha2V1cCkKIAl7Ci0J CXZvbGF0aWxlIFBST0NfSERSICpwcm9jZ2xvYmFsID0gUHJvY0dsb2JhbDsKLQkJUHJvY051 bWJlcgl3YWx3cml0ZXJQcm9jID0gcHJvY2dsb2JhbC0+d2Fsd3JpdGVyUHJvYzsKKwkJUHJv Y051bWJlcgl3YWx3cml0ZXJQcm9jID0gcGdfYXRvbWljX3JlYWRfdTMyKCZQcm9jR2xvYmFs LT53YWx3cml0ZXJQcm9jKTsKIAogCQlpZiAod2Fsd3JpdGVyUHJvYyAhPSBJTlZBTElEX1BS T0NfTlVNQkVSKQogCQkJU2V0TGF0Y2goJkdldFBHUHJvY0J5TnVtYmVyKHdhbHdyaXRlclBy b2MpLT5wcm9jTGF0Y2gpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9h dXRvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwppbmRl eCBlOWFhZjI0YzFiZS4uNzc3YWNhYTdjODQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0 b3ZhY3V1bS5jCkBAIC0yODYsNyArMjg2LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgQXV0b1ZhY3V1 bVdvcmtJdGVtCiAgKiBzdHJ1Y3QgYW5kIHRoZSBhcnJheSBvZiBXb3JrZXJJbmZvIHN0cnVj dHMuICBUaGlzIHN0cnVjdCBrZWVwczoKICAqCiAgKiBhdl9zaWduYWwJCXNldCBieSBvdGhl ciBwcm9jZXNzZXMgdG8gaW5kaWNhdGUgdmFyaW91cyBjb25kaXRpb25zCi0gKiBhdl9sYXVu Y2hlcnBpZAl0aGUgUElEIG9mIHRoZSBhdXRvdmFjdXVtIGxhdW5jaGVyCiAgKiBhdl9mcmVl V29ya2Vycwl0aGUgV29ya2VySW5mbyBmcmVlbGlzdAogICogYXZfcnVubmluZ1dvcmtlcnMg dGhlIFdvcmtlckluZm8gbm9uLWZyZWUgcXVldWUKICAqIGF2X3N0YXJ0aW5nV29ya2VyIHBv aW50ZXIgdG8gV29ya2VySW5mbyBjdXJyZW50bHkgYmVpbmcgc3RhcnRlZCAoY2xlYXJlZCBi eQpAQCAtMzAyLDcgKzMwMSw2IEBAIHR5cGVkZWYgc3RydWN0IEF1dG9WYWN1dW1Xb3JrSXRl bQogdHlwZWRlZiBzdHJ1Y3QKIHsKIAlzaWdfYXRvbWljX3QgYXZfc2lnbmFsW0F1dG9WYWNO dW1TaWduYWxzXTsKLQlwaWRfdAkJYXZfbGF1bmNoZXJwaWQ7CiAJZGNsaXN0X2hlYWQgYXZf ZnJlZVdvcmtlcnM7CiAJZGxpc3RfaGVhZAlhdl9ydW5uaW5nV29ya2VyczsKIAlXb3JrZXJJ bmZvCWF2X3N0YXJ0aW5nV29ya2VyOwpAQCAtNjAyLDggKzYwMCw2IEBAIEF1dG9WYWNMYXVu Y2hlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRh X2xlbikKIAkJcHJvY19leGl0KDApOwkJCS8qIGRvbmUgKi8KIAl9CiAKLQlBdXRvVmFjdXVt U2htZW0tPmF2X2xhdW5jaGVycGlkID0gTXlQcm9jUGlkOwotCiAJLyoKIAkgKiBDcmVhdGUg dGhlIGluaXRpYWwgZGF0YWJhc2UgbGlzdC4gIFRoZSBpbnZhcmlhbnQgd2Ugd2FudCB0aGlz IGxpc3QgdG8KIAkgKiBrZWVwIGlzIHRoYXQgaXQncyBvcmRlcmVkIGJ5IGRlY3JlYXNpbmcg bmV4dF93b3JrZXIuICBBcyBzb29uIGFzIGFuCkBAIC04MzcsOCArODMzLDYgQEAgQXV0b1Zh Y0xhdW5jaGVyU2h1dGRvd24odm9pZCkKIHsKIAllcmVwb3J0KERFQlVHMSwKIAkJCShlcnJt c2dfaW50ZXJuYWwoImF1dG92YWN1dW0gbGF1bmNoZXIgc2h1dHRpbmcgZG93biIpKSk7Ci0J QXV0b1ZhY3V1bVNobWVtLT5hdl9sYXVuY2hlcnBpZCA9IDA7Ci0KIAlwcm9jX2V4aXQoMCk7 CQkJCS8qIGRvbmUgKi8KIH0KIApAQCAtMTU2OSw2ICsxNTYzLDggQEAgQXV0b1ZhY1dvcmtl ck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xl bikKIAkgKi8KIAlpZiAoQXV0b1ZhY3V1bVNobWVtLT5hdl9zdGFydGluZ1dvcmtlciAhPSBO VUxMKQogCXsKKwkJUHJvY051bWJlcglsYXVuY2hlclByb2M7CisKIAkJTXlXb3JrZXJJbmZv ID0gQXV0b1ZhY3V1bVNobWVtLT5hdl9zdGFydGluZ1dvcmtlcjsKIAkJZGJpZCA9IE15V29y a2VySW5mby0+d2lfZGJvaWQ7CiAJCU15V29ya2VySW5mby0+d2lfcHJvYyA9IE15UHJvYzsK QEAgLTE1ODcsOCArMTU4MywxNCBAQCBBdXRvVmFjV29ya2VyTWFpbihjb25zdCB2b2lkICpz dGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQlvbl9zaG1lbV9leGl0 KEZyZWVXb3JrZXJJbmZvLCAwKTsKIAogCQkvKiB3YWtlIHVwIHRoZSBsYXVuY2hlciAqLwot CQlpZiAoQXV0b1ZhY3V1bVNobWVtLT5hdl9sYXVuY2hlcnBpZCAhPSAwKQotCQkJa2lsbChB dXRvVmFjdXVtU2htZW0tPmF2X2xhdW5jaGVycGlkLCBTSUdVU1IyKTsKKwkJbGF1bmNoZXJQ cm9jID0gcGdfYXRvbWljX3JlYWRfdTMyKCZQcm9jR2xvYmFsLT5hdkxhdW5jaGVyUHJvYyk7 CisJCWlmIChsYXVuY2hlclByb2MgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKKwkJeworCQkJ aW50CQkJcGlkID0gR2V0UEdQcm9jQnlOdW1iZXIobGF1bmNoZXJQcm9jKS0+cGlkOworCisJ CQlpZiAocGlkICE9IDApCisJCQkJa2lsbChwaWQsIFNJR1VTUjIpOworCQl9CiAJfQogCWVs c2UKIAl7CkBAIC0zNTU5LDcgKzM1NjEsNiBAQCBBdXRvVmFjdXVtU2htZW1Jbml0KHZvaWQg KmFyZykKIHsKIAlXb3JrZXJJbmZvCXdvcmtlcjsKIAotCUF1dG9WYWN1dW1TaG1lbS0+YXZf bGF1bmNoZXJwaWQgPSAwOwogCWRjbGlzdF9pbml0KCZBdXRvVmFjdXVtU2htZW0tPmF2X2Zy ZWVXb3JrZXJzKTsKIAlkbGlzdF9pbml0KCZBdXRvVmFjdXVtU2htZW0tPmF2X3J1bm5pbmdX b3JrZXJzKTsKIAlBdXRvVmFjdXVtU2htZW0tPmF2X3N0YXJ0aW5nV29ya2VyID0gTlVMTDsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCmluZGV4IDA4NzEyMGRiMDkw Li5hMDlkNDA5N2Q1MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVj a3BvaW50ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5j CkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJwb3J0 L2F0b21pY3MuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1eHByb2Nlc3MuaCIKICNpbmNs dWRlICJwb3N0bWFzdGVyL2Jnd3JpdGVyLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRl cnJ1cHQuaCIKQEAgLTM1OCwxMiArMzU5LDYgQEAgQ2hlY2twb2ludGVyTWFpbihjb25zdCB2 b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCSAqLwogCVVw ZGF0ZVNoYXJlZE1lbW9yeUNvbmZpZygpOwogCi0JLyoKLQkgKiBBZHZlcnRpc2Ugb3VyIHBy b2MgbnVtYmVyIHRoYXQgYmFja2VuZHMgY2FuIHVzZSB0byB3YWtlIHVzIHVwIHdoaWxlCi0J ICogd2UncmUgc2xlZXBpbmcuCi0JICovCi0JUHJvY0dsb2JhbC0+Y2hlY2twb2ludGVyUHJv YyA9IE15UHJvY051bWJlcjsKLQogCS8qCiAJICogTG9vcCB1bnRpbCB3ZSd2ZSBiZWVuIGFz a2VkIHRvIHdyaXRlIHRoZSBzaHV0ZG93biBjaGVja3BvaW50IG9yCiAJICogdGVybWluYXRl LgpAQCAtMTEyMCw3ICsxMTE1LDcgQEAgUmVxdWVzdENoZWNrcG9pbnQoaW50IGZsYWdzKQog CWZvciAobnRyaWVzID0gMDs7IG50cmllcysrKQogCXsKIAkJdm9sYXRpbGUgUFJPQ19IRFIg KnByb2NnbG9iYWwgPSBQcm9jR2xvYmFsOwotCQlQcm9jTnVtYmVyCWNoZWNrcG9pbnRlclBy b2MgPSBwcm9jZ2xvYmFsLT5jaGVja3BvaW50ZXJQcm9jOworCQlQcm9jTnVtYmVyCWNoZWNr cG9pbnRlclByb2MgPSBwZ19hdG9taWNfcmVhZF91MzIoJnByb2NnbG9iYWwtPmNoZWNrcG9p bnRlclByb2MpOwogCiAJCWlmIChjaGVja3BvaW50ZXJQcm9jID09IElOVkFMSURfUFJPQ19O VU1CRVIpCiAJCXsKQEAgLTEyNjEsOCArMTI1Niw3IEBAIEZvcndhcmRTeW5jUmVxdWVzdChj b25zdCBGaWxlVGFnICpmdGFnLCBTeW5jUmVxdWVzdFR5cGUgdHlwZSkKIAkvKiAuLi4gYnV0 IG5vdCB0aWxsIGFmdGVyIHdlIHJlbGVhc2UgdGhlIGxvY2sgKi8KIAlpZiAodG9vX2Z1bGwp CiAJewotCQl2b2xhdGlsZSBQUk9DX0hEUiAqcHJvY2dsb2JhbCA9IFByb2NHbG9iYWw7Ci0J CVByb2NOdW1iZXIJY2hlY2twb2ludGVyUHJvYyA9IHByb2NnbG9iYWwtPmNoZWNrcG9pbnRl clByb2M7CisJCVByb2NOdW1iZXIJY2hlY2twb2ludGVyUHJvYyA9IHBnX2F0b21pY19yZWFk X3UzMigmUHJvY0dsb2JhbC0+Y2hlY2twb2ludGVyUHJvYyk7CiAKIAkJaWYgKGNoZWNrcG9p bnRlclByb2MgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKIAkJCVNldExhdGNoKCZHZXRQR1By b2NCeU51bWJlcihjaGVja3BvaW50ZXJQcm9jKS0+cHJvY0xhdGNoKTsKQEAgLTE1NDMsNyAr MTUzNyw3IEBAIHZvaWQKIFdha2V1cENoZWNrcG9pbnRlcih2b2lkKQogewogCXZvbGF0aWxl IFBST0NfSERSICpwcm9jZ2xvYmFsID0gUHJvY0dsb2JhbDsKLQlQcm9jTnVtYmVyCWNoZWNr cG9pbnRlclByb2MgPSBwcm9jZ2xvYmFsLT5jaGVja3BvaW50ZXJQcm9jOworCVByb2NOdW1i ZXIJY2hlY2twb2ludGVyUHJvYyA9IHBnX2F0b21pY19yZWFkX3UzMigmcHJvY2dsb2JhbC0+ Y2hlY2twb2ludGVyUHJvYyk7CiAKIAlpZiAoY2hlY2twb2ludGVyUHJvYyAhPSBJTlZBTElE X1BST0NfTlVNQkVSKQogCQlTZXRMYXRjaCgmR2V0UEdQcm9jQnlOdW1iZXIoY2hlY2twb2lu dGVyUHJvYyktPnByb2NMYXRjaCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL3dhbHdyaXRlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3cml0ZXIuYwpp bmRleCBhZjI0ZDA1YzU0Mi4uNjhkZDUwNDdjMjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93 YWx3cml0ZXIuYwpAQCAtMjA2LDEyICsyMDYsNiBAQCBXYWxXcml0ZXJNYWluKGNvbnN0IHZv aWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJaGliZXJuYXRp bmcgPSBmYWxzZTsKIAlTZXRXYWxXcml0ZXJTbGVlcGluZyhmYWxzZSk7CiAKLQkvKgotCSAq IEFkdmVydGlzZSBvdXIgcHJvYyBudW1iZXIgdGhhdCBiYWNrZW5kcyBjYW4gdXNlIHRvIHdh a2UgdXMgdXAgd2hpbGUKLQkgKiB3ZSdyZSBzbGVlcGluZy4KLQkgKi8KLQlQcm9jR2xvYmFs LT53YWx3cml0ZXJQcm9jID0gTXlQcm9jTnVtYmVyOwotCiAJLyoKIAkgKiBMb29wIGZvcmV2 ZXIKIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCmluZGV4IDZmYTlkZTMzZTFjLi4y OGMwZWZjM2UyMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2Mu YworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCkBAIC0yNDAsOCArMjQw LDkgQEAgUHJvY0dsb2JhbFNobWVtSW5pdCh2b2lkICphcmcpCiAJZGxpc3RfaW5pdCgmUHJv Y0dsb2JhbC0+Ymd3b3JrZXJGcmVlUHJvY3MpOwogCWRsaXN0X2luaXQoJlByb2NHbG9iYWwt PndhbHNlbmRlckZyZWVQcm9jcyk7CiAJUHJvY0dsb2JhbC0+c3RhcnR1cEJ1ZmZlclBpbldh aXRCdWZJZCA9IC0xOwotCVByb2NHbG9iYWwtPndhbHdyaXRlclByb2MgPSBJTlZBTElEX1BS T0NfTlVNQkVSOwotCVByb2NHbG9iYWwtPmNoZWNrcG9pbnRlclByb2MgPSBJTlZBTElEX1BS T0NfTlVNQkVSOworCXBnX2F0b21pY19pbml0X3UzMigmUHJvY0dsb2JhbC0+YXZMYXVuY2hl clByb2MsIElOVkFMSURfUFJPQ19OVU1CRVIpOworCXBnX2F0b21pY19pbml0X3UzMigmUHJv Y0dsb2JhbC0+d2Fsd3JpdGVyUHJvYywgSU5WQUxJRF9QUk9DX05VTUJFUik7CisJcGdfYXRv bWljX2luaXRfdTMyKCZQcm9jR2xvYmFsLT5jaGVja3BvaW50ZXJQcm9jLCBJTlZBTElEX1BS T0NfTlVNQkVSKTsKIAlwZ19hdG9taWNfaW5pdF91MzIoJlByb2NHbG9iYWwtPnByb2NBcnJh eUdyb3VwRmlyc3QsIElOVkFMSURfUFJPQ19OVU1CRVIpOwogCXBnX2F0b21pY19pbml0X3Uz MigmUHJvY0dsb2JhbC0+Y2xvZ0dyb3VwRmlyc3QsIElOVkFMSURfUFJPQ19OVU1CRVIpOwog CkBAIC03MjUsNiArNzI2LDE0IEBAIEluaXRBdXhpbGlhcnlQcm9jZXNzKHZvaWQpCiAJICov CiAJUEdTZW1hcGhvcmVSZXNldChNeVByb2MtPnNlbSk7CiAKKwkvKiBTb21lIGF1eCBwcm9j ZXNzZXMgYXJlIGFsc28gYWR2ZXJ0aXNlZCBpbiBQcm9jR2xvYmFsICovCisJaWYgKE15QmFj a2VuZFR5cGUgPT0gQl9BVVRPVkFDX0xBVU5DSEVSKQorCQlwZ19hdG9taWNfd3JpdGVfdTMy KCZQcm9jR2xvYmFsLT5hdkxhdW5jaGVyUHJvYywgTXlQcm9jTnVtYmVyKTsKKwlpZiAoTXlC YWNrZW5kVHlwZSA9PSBCX1dBTF9XUklURVIpCisJCXBnX2F0b21pY193cml0ZV91MzIoJlBy b2NHbG9iYWwtPndhbHdyaXRlclByb2MsIE15UHJvY051bWJlcik7CisJaWYgKE15QmFja2Vu ZFR5cGUgPT0gQl9DSEVDS1BPSU5URVIpCisJCXBnX2F0b21pY193cml0ZV91MzIoJlByb2NH bG9iYWwtPmNoZWNrcG9pbnRlclByb2MsIE15UHJvY051bWJlcik7CisKIAkvKgogCSAqIEFy cmFuZ2UgdG8gY2xlYW4gdXAgYXQgcHJvY2VzcyBleGl0LgogCSAqLwpAQCAtMTEwMiw2ICsx MTExLDIzIEBAIEF1eGlsaWFyeVByb2NLaWxsKGludCBjb2RlLCBEYXR1bSBhcmcpCiAJU3dp dGNoQmFja1RvTG9jYWxMYXRjaCgpOwogCXBnc3RhdF9yZXNldF93YWl0X2V2ZW50X3N0b3Jh Z2UoKTsKIAorCS8qIElmIHRoaXMgd2FzIG9uZSBvZiBhdXggcHJvY2Vzc2VzIGFkdmVydGlz ZWQgaW4gUHJvY0dsb2JhbCwgY2xlYXIgaXQgKi8KKwlpZiAoTXlCYWNrZW5kVHlwZSA9PSBC X0FVVE9WQUNfTEFVTkNIRVIpCisJeworCQlBc3NlcnQocGdfYXRvbWljX3JlYWRfdTMyKCZQ cm9jR2xvYmFsLT5hdkxhdW5jaGVyUHJvYykgPT0gTXlQcm9jTnVtYmVyKTsKKwkJcGdfYXRv bWljX3dyaXRlX3UzMigmUHJvY0dsb2JhbC0+YXZMYXVuY2hlclByb2MsIElOVkFMSURfUFJP Q19OVU1CRVIpOworCX0KKwlpZiAoTXlCYWNrZW5kVHlwZSA9PSBCX1dBTF9XUklURVIpCisJ eworCQlBc3NlcnQocGdfYXRvbWljX3JlYWRfdTMyKCZQcm9jR2xvYmFsLT53YWx3cml0ZXJQ cm9jKSA9PSBNeVByb2NOdW1iZXIpOworCQlwZ19hdG9taWNfd3JpdGVfdTMyKCZQcm9jR2xv YmFsLT53YWx3cml0ZXJQcm9jLCBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwl9CisJaWYgKE15 QmFja2VuZFR5cGUgPT0gQl9DSEVDS1BPSU5URVIpCisJeworCQlBc3NlcnQocGdfYXRvbWlj X3JlYWRfdTMyKCZQcm9jR2xvYmFsLT5jaGVja3BvaW50ZXJQcm9jKSA9PSBNeVByb2NOdW1i ZXIpOworCQlwZ19hdG9taWNfd3JpdGVfdTMyKCZQcm9jR2xvYmFsLT5jaGVja3BvaW50ZXJQ cm9jLCBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwl9CisKIAlwcm9jID0gTXlQcm9jOwogCU15 UHJvYyA9IE5VTEw7CiAJTXlQcm9jTnVtYmVyID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9wcm9jLmgKaW5kZXggM2UxZDFmYWQ1ZjkuLjAzMTRmOTc5ZTYwIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdl L3Byb2MuaApAQCAtNDg4LDExICs0ODgsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUFJPQ19IRFIK IAlwZ19hdG9taWNfdWludDMyIGNsb2dHcm91cEZpcnN0OwogCiAJLyoKLQkgKiBDdXJyZW50 IHNsb3QgbnVtYmVycyBvZiBzb21lIGF1eGlsaWFyeSBwcm9jZXNzZXMuIFRoZXJlIGNhbiBi ZSBvbmx5IG9uZQorCSAqIEN1cnJlbnQgcHJvYyBudW1iZXJzIG9mIHNvbWUgYXV4aWxpYXJ5 IHByb2Nlc3Nlcy4gVGhlcmUgY2FuIGJlIG9ubHkgb25lCiAJICogb2YgZWFjaCBvZiB0aGVz ZSBydW5uaW5nIGF0IGEgdGltZS4KIAkgKi8KLQlQcm9jTnVtYmVyCXdhbHdyaXRlclByb2M7 Ci0JUHJvY051bWJlcgljaGVja3BvaW50ZXJQcm9jOworCXBnX2F0b21pY191aW50MzIgYXZM YXVuY2hlclByb2M7CisJcGdfYXRvbWljX3VpbnQzMiB3YWx3cml0ZXJQcm9jOworCXBnX2F0 b21pY191aW50MzIgY2hlY2twb2ludGVyUHJvYzsKIAogCS8qIEN1cnJlbnQgc2hhcmVkIGVz dGltYXRlIG9mIGFwcHJvcHJpYXRlIHNwaW5zX3Blcl9kZWxheSB2YWx1ZSAqLwogCWludAkJ CXNwaW5zX3Blcl9kZWxheTsKLS0gCjIuNDcuMwoK --------------WzeNeixNPsQ0a7SXozrFhDu6 Content-Type: text/x-patch; charset=UTF-8; name="v13-0002-Centralize-resetting-SIGCHLD-handler.patch" Content-Disposition: attachment; filename="v13-0002-Centralize-resetting-SIGCHLD-handler.patch" Content-Transfer-Encoding: base64 RnJvbSA3MmJiYzE0MjhjNGRhMGRiZmRiYmU5YTUwNjkxN2U2ODdhY2JjNDQ4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFR1ZSwgMTYgSnVuIDIwMjYgMjI6MDY6MzkgKzAzMDAK U3ViamVjdDogW1BBVENIIHYxMyAyLzldIENlbnRyYWxpemUgcmVzZXR0aW5nIFNJR0NITEQg aGFuZGxlcgoKLS0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyAgICAg ICAgfCAgMiAtLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jICAgICAgICAg IHwgIDEgLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5jICAgICAgICAgIHwg IDUgLS0tLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMgICAgICB8 ICA1IC0tLS0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jICAgICAgICAgICAg fCAgMyAtLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3RhcnR1cC5jICAgICAgICAgICB8 ICA1IC0tLS0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jICAgICAgICAg fCAgNSAtLS0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMgICAg IHwgIDUgLS0tLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMgICAgICAg ICB8ICA1IC0tLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5j LmMgfCAgMSAtCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jICAgICAg fCAgMyAtLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAgICB8 ICAzIC0tLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgIHwg IDcgLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jICAgICAgICAg IHwgMTQgKysrKysrKysrKysrKysKIDE0IGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMo KyksIDUwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMK aW5kZXggNzc3YWNhYTdjODQuLjMxY2FkNWRmMDE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2F1dG92YWN1dW0uYwpAQCAtNDQ3LDcgKzQ0Nyw2IEBAIEF1dG9WYWNMYXVuY2hlck1haW4o Y29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlw cXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcik7CiAJcHFzaWdu YWwoU0lHVVNSMiwgYXZsX3NpZ3VzcjJfaGFuZGxlcik7CiAJcHFzaWduYWwoU0lHRlBFLCBG bG9hdEV4Y2VwdGlvbkhhbmRsZXIpOwotCXBxc2lnbmFsKFNJR0NITEQsIFBHX1NJR19ERkwp OwogCiAJLyoKIAkgKiBDcmVhdGUgYSBwZXItYmFja2VuZCBQR1BST0Mgc3RydWN0IGluIHNo YXJlZCBtZW1vcnkuICBXZSBtdXN0IGRvIHRoaXMKQEAgLTE0NTQsNyArMTQ1Myw2IEBAIEF1 dG9WYWNXb3JrZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0 dXBfZGF0YV9sZW4pCiAJcHFzaWduYWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hh bmRsZXIpOwogCXBxc2lnbmFsKFNJR1VTUjIsIFBHX1NJR19JR04pOwogCXBxc2lnbmFsKFNJ R0ZQRSwgRmxvYXRFeGNlcHRpb25IYW5kbGVyKTsKLQlwcXNpZ25hbChTSUdDSExELCBQR19T SUdfREZMKTsKIAogCS8qCiAJICogQ3JlYXRlIGEgcGVyLWJhY2tlbmQgUEdQUk9DIHN0cnVj dCBpbiBzaGFyZWQgbWVtb3J5LiAgV2UgbXVzdCBkbyB0aGlzCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2Jnd29ya2VyLmMKaW5kZXggMmU0YWNhZDRmMDAuLjJmNTE4MTRjOTNkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9iZ3dvcmtlci5jCkBAIC03OTcsNyArNzk3LDYgQEAgQmFja2dyb3VuZFdv cmtlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRh X2xlbikKIAogCXBxc2lnbmFsKFNJR1BJUEUsIFBHX1NJR19JR04pOwogCXBxc2lnbmFsKFNJ R1VTUjIsIFBHX1NJR19JR04pOwotCXBxc2lnbmFsKFNJR0NITEQsIFBHX1NJR19ERkwpOwog CiAJLyoKIAkgKiBJZiBhbiBleGNlcHRpb24gaXMgZW5jb3VudGVyZWQsIHByb2Nlc3Npbmcg cmVzdW1lcyBoZXJlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dy aXRlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5jCmluZGV4IGQzNjQz ODIzMDNhLi5kNjEyMWYyYjRmZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9iZ3dyaXRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYwpA QCAtMTA5LDExICsxMDksNiBAQCBCYWNrZ3JvdW5kV3JpdGVyTWFpbihjb25zdCB2b2lkICpz dGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCXBxc2lnbmFsKFNJR1VT UjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKIAlwcXNpZ25hbChTSUdVU1IyLCBQ R19TSUdfSUdOKTsKIAotCS8qCi0JICogUmVzZXQgc29tZSBzaWduYWxzIHRoYXQgYXJlIGFj Y2VwdGVkIGJ5IHBvc3RtYXN0ZXIgYnV0IG5vdCBoZXJlCi0JICovCi0JcHFzaWduYWwoU0lH Q0hMRCwgUEdfU0lHX0RGTCk7Ci0KIAkvKgogCSAqIFdlIGp1c3Qgc3RhcnRlZCwgYXNzdW1l IHRoZXJlIGhhcyBiZWVuIGVpdGhlciBhIHNodXRkb3duIG9yCiAJICogZW5kLW9mLXJlY292 ZXJ5IHNuYXBzaG90LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVj a3BvaW50ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKaW5k ZXggYTA5ZDQwOTdkNTEuLjRiMDUxZWIzMTI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv Y2hlY2twb2ludGVyLmMKQEAgLTIzMSwxMSArMjMxLDYgQEAgQ2hlY2twb2ludGVyTWFpbihj b25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCXBx c2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKIAlwcXNpZ25h bChTSUdVU1IyLCBTaWduYWxIYW5kbGVyRm9yU2h1dGRvd25SZXF1ZXN0KTsKIAotCS8qCi0J ICogUmVzZXQgc29tZSBzaWduYWxzIHRoYXQgYXJlIGFjY2VwdGVkIGJ5IHBvc3RtYXN0ZXIg YnV0IG5vdCBoZXJlCi0JICovCi0JcHFzaWduYWwoU0lHQ0hMRCwgUEdfU0lHX0RGTCk7Ci0K IAkvKgogCSAqIEluaXRpYWxpemUgc28gdGhhdCBmaXJzdCB0aW1lLWRyaXZlbiBldmVudCBo YXBwZW5zIGF0IHRoZSBjb3JyZWN0IHRpbWUuCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2Fy Y2guYwppbmRleCAwZjIwN2FjMDM1Ni4uYTNmZDRmODMyMDEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9wZ2FyY2guYwpAQCAtMjM3LDkgKzIzNyw2IEBAIFBnQXJjaGl2ZXJNYWluKGNvbnN0IHZv aWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJcHFzaWduYWwo U0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOwogCXBxc2lnbmFsKFNJR1VT UjIsIHBnYXJjaF93YWtlbl9zdG9wKTsKIAotCS8qIFJlc2V0IHNvbWUgc2lnbmFscyB0aGF0 IGFyZSBhY2NlcHRlZCBieSBwb3N0bWFzdGVyIGJ1dCBub3QgaGVyZSAqLwotCXBxc2lnbmFs KFNJR0NITEQsIFBHX1NJR19ERkwpOwotCiAJLyogVW5ibG9jayBzaWduYWxzICh0aGV5IHdl cmUgYmxvY2tlZCB3aGVuIHRoZSBwb3N0bWFzdGVyIGZvcmtlZCB1cykgKi8KIAlzaWdwcm9j bWFzayhTSUdfU0VUTUFTSywgJlVuQmxvY2tTaWcsIE5VTEwpOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3N0YXJ0dXAuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvc3RhcnR1cC5jCmluZGV4IGQ5MWI3Y2FhYzAxLi42MzYyNGU4Y2FhMSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zdGFydHVwLmMKKysrIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9zdGFydHVwLmMKQEAgLTIzNCwxMSArMjM0LDYgQEAgU3RhcnR1cFByb2Nl c3NNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9s ZW4pCiAJcHFzaWduYWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOwog CXBxc2lnbmFsKFNJR1VTUjIsIFN0YXJ0dXBQcm9jVHJpZ2dlckhhbmRsZXIpOwogCi0JLyoK LQkgKiBSZXNldCBzb21lIHNpZ25hbHMgdGhhdCBhcmUgYWNjZXB0ZWQgYnkgcG9zdG1hc3Rl ciBidXQgbm90IGhlcmUKLQkgKi8KLQlwcXNpZ25hbChTSUdDSExELCBQR19TSUdfREZMKTsK LQogCS8qCiAJICogUmVnaXN0ZXIgdGltZW91dHMgbmVlZGVkIGZvciBzdGFuZGJ5IG1vZGUK IAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMg Yi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jCmluZGV4IDc2NDVjNDk1YTgx Li5iMzk5YWRjY2U3NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNs b2dnZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jCkBAIC0z MDMsMTEgKzMwMyw2IEBAIFN5c0xvZ2dlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRh LCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlwcXNpZ25hbChTSUdVU1IxLCBzaWdVc3Ix SGFuZGxlcik7CS8qIHJlcXVlc3QgbG9nIHJvdGF0aW9uICovCiAJcHFzaWduYWwoU0lHVVNS MiwgUEdfU0lHX0lHTik7CiAKLQkvKgotCSAqIFJlc2V0IHNvbWUgc2lnbmFscyB0aGF0IGFy ZSBhY2NlcHRlZCBieSBwb3N0bWFzdGVyIGJ1dCBub3QgaGVyZQotCSAqLwotCXBxc2lnbmFs KFNJR0NITEQsIFBHX1NJR19ERkwpOwotCiAJc2lncHJvY21hc2soU0lHX1NFVE1BU0ssICZV bkJsb2NrU2lnLCBOVUxMKTsKIAogI2lmZGVmIFdJTjMyCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvd2Fsc3VtbWFyaXplci5jCmluZGV4IDRmMTJlYWYyYzg1Li44OTMwMTgxNWRjMyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMKKysrIGIv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMKQEAgLTI2NCwxMSArMjY0 LDYgQEAgV2FsU3VtbWFyaXplck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXpl X3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJCQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMp OwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjb250ZXh0KTsKIAotCS8qCi0JICogUmVzZXQg c29tZSBzaWduYWxzIHRoYXQgYXJlIGFjY2VwdGVkIGJ5IHBvc3RtYXN0ZXIgYnV0IG5vdCBo ZXJlCi0JICovCi0JcHFzaWduYWwoU0lHQ0hMRCwgUEdfU0lHX0RGTCk7Ci0KIAkvKgogCSAq IElmIGFuIGV4Y2VwdGlvbiBpcyBlbmNvdW50ZXJlZCwgcHJvY2Vzc2luZyByZXN1bWVzIGhl cmUuCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHdyaXRl ci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3cml0ZXIuYwppbmRleCA2OGRkNTA0 N2MyMC4uMzQ5M2JlOGU2MzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv d2Fsd3JpdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3cml0ZXIuYwpA QCAtMTA5LDExICsxMDksNiBAQCBXYWxXcml0ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBf ZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJcHFzaWduYWwoU0lHVVNSMSwgcHJv Y3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOwogCXBxc2lnbmFsKFNJR1VTUjIsIFBHX1NJR19J R04pOwkvKiBub3QgdXNlZCAqLwogCi0JLyoKLQkgKiBSZXNldCBzb21lIHNpZ25hbHMgdGhh dCBhcmUgYWNjZXB0ZWQgYnkgcG9zdG1hc3RlciBidXQgbm90IGhlcmUKLQkgKi8KLQlwcXNp Z25hbChTSUdDSExELCBQR19TSUdfREZMKTsKLQogCS8qCiAJICogQ3JlYXRlIGEgbWVtb3J5 IGNvbnRleHQgdGhhdCB3ZSB3aWxsIGRvIGFsbCBvdXIgd29yayBpbi4gIFdlIGRvIHRoaXMg c28KIAkgKiB0aGF0IHdlIGNhbiByZXNldCB0aGUgY29udGV4dCBkdXJpbmcgZXJyb3IgcmVj b3ZlcnkgYW5kIHRoZXJlYnkgYXZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvc2xvdHN5bmMuYwppbmRleCAwNTYzNzM0NDM2My4uN2QyOTk5ZDc3ZmQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKQEAgLTE2MzIs NyArMTYzMiw2IEBAIFJlcGxTbG90U3luY1dvcmtlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1 cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlwcXNpZ25hbChTSUdVU1IxLCBw cm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcik7CiAJcHFzaWduYWwoU0lHVVNSMiwgUEdfU0lH X0lHTik7CiAJcHFzaWduYWwoU0lHUElQRSwgUEdfU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lH Q0hMRCwgUEdfU0lHX0RGTCk7CiAKIAljaGVja19hbmRfc2V0X3N5bmNfaW5mbyhNeVByb2NQ aWQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZl ci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYwppbmRleCAwNWUy ZjY5MGZhNy4uNDMxOWNiNmZkNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3dhbHJlY2VpdmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVj ZWl2ZXIuYwpAQCAtMjU2LDkgKzI1Niw2IEBAIFdhbFJlY2VpdmVyTWFpbihjb25zdCB2b2lk ICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCXBxc2lnbmFsKFNJ R1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKIAlwcXNpZ25hbChTSUdVU1Iy LCBQR19TSUdfSUdOKTsKIAotCS8qIFJlc2V0IHNvbWUgc2lnbmFscyB0aGF0IGFyZSBhY2Nl cHRlZCBieSBwb3N0bWFzdGVyIGJ1dCBub3QgaGVyZSAqLwotCXBxc2lnbmFsKFNJR0NITEQs IFBHX1NJR19ERkwpOwotCiAJLyogTG9hZCB0aGUgbGlicHEtc3BlY2lmaWMgZnVuY3Rpb25z ICovCiAJbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOwogCWlmIChXYWxS ZWNlaXZlckZ1bmN0aW9ucyA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5k ZXIuYwppbmRleCBjOTMxZDliNGZhOC4uNzk1MzkzYjBiZTAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHNlbmRlci5jCkBAIC0zOTc3LDkgKzM5NzcsNiBAQCBXYWxTbmRTaWduYWxz KHZvaWQpCiAJcHFzaWduYWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIp OwogCXBxc2lnbmFsKFNJR1VTUjIsIFdhbFNuZExhc3RDeWNsZUhhbmRsZXIpOwkvKiByZXF1 ZXN0IGEgbGFzdCBjeWNsZSBhbmQKIAkJCQkJCQkJCQkJCSAqIHNodXRkb3duICovCi0KLQkv KiBSZXNldCBzb21lIHNpZ25hbHMgdGhhdCBhcmUgYWNjZXB0ZWQgYnkgcG9zdG1hc3RlciBi dXQgbm90IGhlcmUgKi8KLQlwcXNpZ25hbChTSUdDSExELCBQR19TSUdfREZMKTsKIH0KIAog LyogUmVnaXN0ZXIgc2hhcmVkLW1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgd2Fsc2VuZGVyICov CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2Vu ZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggZGJlZjczNGE5M2YuLjFmMmZjM2NjZTliIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQv dGNvcC9wb3N0Z3Jlcy5jCkBAIC00MzMyLDEzICs0MzMyLDYgQEAgUG9zdGdyZXNNYWluKGNv bnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAqdXNlcm5hbWUpCiAJCXBxc2lnbmFsKFNJ R1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKIAkJcHFzaWduYWwoU0lHVVNS MiwgUEdfU0lHX0lHTik7CiAJCXBxc2lnbmFsKFNJR0ZQRSwgRmxvYXRFeGNlcHRpb25IYW5k bGVyKTsKLQotCQkvKgotCQkgKiBSZXNldCBzb21lIHNpZ25hbHMgdGhhdCBhcmUgYWNjZXB0 ZWQgYnkgcG9zdG1hc3RlciBidXQgbm90IGJ5Ci0JCSAqIGJhY2tlbmQKLQkJICovCi0JCXBx c2lnbmFsKFNJR0NITEQsIFBHX1NJR19ERkwpOwkvKiBzeXN0ZW0oKSByZXF1aXJlcyB0aGlz IG9uIHNvbWUKLQkJCQkJCQkJCQkgKiBwbGF0Zm9ybXMgKi8KIAl9CiAKIAkvKiBFYXJseSBp bml0aWFsaXphdGlvbiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9t aXNjaW5pdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jCmluZGV4IDdm ZmM4MDgwNzNhLi41MzQzZDQyMTlhZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv aW5pdC9taXNjaW5pdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQu YwpAQCAtMTQzLDYgKzE0MywxNSBAQCBJbml0UG9zdG1hc3RlckNoaWxkKHZvaWQpCiAJCWVs b2coRkFUQUwsICJzZXRzaWQoKSBmYWlsZWQ6ICVtIik7CiAjZW5kaWYKIAorCS8qCisJICog UmVzZXQgc2lnbmFscyB0aGF0IGFyZSB1c2VkIGJ5IHBvc3RtYXN0ZXIgYnV0IG5vdCBieSBj aGlsZCBwcm9jZXNzZXMuCisJICoKKwkgKiBDdXJyZW50bHkganVzdCBTSUdDSExELiAgVGhl IGhhbmRsZXJzIGZvciBvdGhlciBzaWduYWxzIGFyZSBvdmVycmlkZGVuCisJICogbGF0ZXIs IGRlcGVuZGluZyBvbiB0aGUgY2hpbGQgcHJvY2VzcyB0eXBlLgorCSAqLworCXBxc2lnbmFs KFNJR0NITEQsIFBHX1NJR19ERkwpOwkvKiBzeXN0ZW0oKSByZXF1aXJlcyB0aGlzIHRvIGJl IFNJR19ERkwKKwkJCQkJCQkJCSAqIHJhdGhlciB0aGFuIFNJR19JR04gb24gc29tZSBwbGF0 Zm9ybXMgKi8KKwogCS8qCiAJICogRXZlcnkgcG9zdG1hc3RlciBjaGlsZCBwcm9jZXNzIGlz IGV4cGVjdGVkIHRvIHJlc3BvbmQgcHJvbXB0bHkgdG8KIAkgKiBTSUdRVUlUIGF0IGFsbCB0 aW1lcy4gIFRoZXJlZm9yZSB3ZSBjZW50cmFsbHkgcmVtb3ZlIFNJR1FVSVQgZnJvbQpAQCAt MTU1LDYgKzE2NCwxMSBAQCBJbml0UG9zdG1hc3RlckNoaWxkKHZvaWQpCiAJc2lnZGVsc2V0 KCZCbG9ja1NpZywgU0lHUVVJVCk7CiAJc2lncHJvY21hc2soU0lHX1NFVE1BU0ssICZCbG9j a1NpZywgTlVMTCk7CiAKKwkvKgorCSAqIEl0IGlzIHVwIHRvIHRoZSAqTWFpbigpIGZ1bmN0 aW9uIHRvIHNldCBzaWduYWwgaGFuZGxlcnMgYXBwcm9wcmlhdGUgZm9yCisJICogdGhlIGNo aWxkIHByb2Nlc3MgYW5kIHVuYmxvY2sgdGhlIHJlc3Qgb2YgdGhlIHNpZ25hbHMuCisJICov CisKIAkvKiBSZXF1ZXN0IGEgc2lnbmFsIGlmIHRoZSBwb3N0bWFzdGVyIGRpZXMsIGlmIHBv c3NpYmxlLiAqLwogCVBvc3RtYXN0ZXJEZWF0aFNpZ25hbEluaXQoKTsKIAotLSAKMi40Ny4z Cgo= --------------WzeNeixNPsQ0a7SXozrFhDu6 Content-Type: text/x-patch; charset=UTF-8; name="v13-0003-Refactor-datachecksums-launcher-worker-comms-to-.patch" Content-Disposition: attachment; filename*0="v13-0003-Refactor-datachecksums-launcher-worker-comms-to-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0MmMwZDA2MGY1NzEzMTExZDRmNzFiZDM3MGI1NGQ0NDA2MDhkNWZkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFR1ZSwgMjMgSnVuIDIwMjYgMjA6NTg6MjIgKzAzMDAK U3ViamVjdDogW1BBVENIIHYxMyAzLzldIFJlZmFjdG9yIGRhdGFjaGVja3N1bXMgbGF1bmNo ZXIvd29ya2VyIGNvbW1zIHRvIHVzZQogcHJvY251bWJlcgoKSSdtIHRyeWluZyB0byBlbGlt aW5hdGUgdXNpbmcgUElEcyBpbiBwcmVwYXJhdGlvbiBvZiB0aGUgbmV4dCBwYXRjaGVzCi0t LQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9kYXRhY2hlY2tzdW1fc3RhdGUuYyB8IDQ4ICsr KysrKysrKysrKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyks IDE1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv ZGF0YWNoZWNrc3VtX3N0YXRlLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2RhdGFjaGVj a3N1bV9zdGF0ZS5jCmluZGV4IDY4NTU3YzE2Y2I5Li40N2I4N2Y1MWFkOSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9kYXRhY2hlY2tzdW1fc3RhdGUuYworKysgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2RhdGFjaGVja3N1bV9zdGF0ZS5jCkBAIC0yMDksNiAr MjA5LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKKyNpbmNsdWRlICJzdG9y YWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUg InN0b3JhZ2Uvc21nci5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgpAQCAt MzI2LDcgKzMyNyw5IEBAIHR5cGVkZWYgc3RydWN0IERhdGFDaGVja3N1bXNTdGF0ZVN0cnVj dAogCSAqLwogCXVpbnQ2NAkJd29ya2VyX2ludm9jYXRpb247CS8qIHVuaXF1ZSBpbnZvY2F0 aW9uIG51bWJlciAqLwogCU9pZAkJCWRhdGFiYXNlX29pZDsJLyogZGF0YWJhc2UgaXQncyBw cm9jZXNzaW5nICovCi0JcGlkX3QJCXdvcmtlcl9waWQ7CQkvKiB3b3JrZXIgcHJvY2Vzcydz IFBJRCAqLworCisJLyogV29ya2VyIHByb2Nlc3MncyBwcm9jIG51bWJlciwgc2V0IGJ5IHRo ZSB3b3JrZXIgd2hlbiBpdCBzdGFydHMgdXAgKi8KKwlQcm9jTnVtYmVyCXdvcmtlcl9wcm9j bm87CiAKIAkvKgogCSAqIFRoZXNlIGZpZWxkcyBpbmRpY2F0ZSB0aGUgdGFyZ2V0IHN0YXRl IHRoYXQgdGhlIHdvcmtlciBpcyBjdXJyZW50bHkKQEAgLTg0MCw3ICs4NDMsNyBAQCBQcm9j ZXNzRGF0YWJhc2UoRGF0YUNoZWNrc3Vtc1dvcmtlckRhdGFiYXNlICpkYikKIAkgKiBpZiBp dCBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5LgogCSAqLwogCURhdGFDaGVja3N1bVN0YXRlLT53 b3JrZXJfcmVzdWx0ID0gREFUQUNIRUNLU1VNU1dPUktFUl9GQUlMRUQ7Ci0JRGF0YUNoZWNr c3VtU3RhdGUtPndvcmtlcl9waWQgPSBJbnZhbGlkUGlkOworCURhdGFDaGVja3N1bVN0YXRl LT53b3JrZXJfcHJvY25vID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAogCWludm9jYXRpb24g PSArK0RhdGFDaGVja3N1bVN0YXRlLT53b3JrZXJfaW52b2NhdGlvbl9jb3VudGVyOwogCURh dGFDaGVja3N1bVN0YXRlLT53b3JrZXJfaW52b2NhdGlvbiA9IGludm9jYXRpb247CkBAIC04 ODMsNiArODg2LDcgQEAgUHJvY2Vzc0RhdGFiYXNlKERhdGFDaGVja3N1bXNXb3JrZXJEYXRh YmFzZSAqZGIpCiAJCSAqLwogCQlMV0xvY2tBY3F1aXJlKERhdGFDaGVja3N1bXNXb3JrZXJM b2NrLCBMV19TSEFSRUQpOwogCQlBc3NlcnQoRGF0YUNoZWNrc3VtU3RhdGUtPndvcmtlcl9p bnZvY2F0aW9uID09IGludm9jYXRpb24pOworCQlBc3NlcnQoRGF0YUNoZWNrc3VtU3RhdGUt Pndvcmtlcl9wcm9jbm8gPT0gSU5WQUxJRF9QUk9DX05VTUJFUik7CiAJCWlmIChEYXRhQ2hl Y2tzdW1TdGF0ZS0+d29ya2VyX3Jlc3VsdCA9PSBEQVRBQ0hFQ0tTVU1TV09SS0VSX1NVQ0NF U1NGVUwpCiAJCXsKIAkJCUxXTG9ja1JlbGVhc2UoRGF0YUNoZWNrc3Vtc1dvcmtlckxvY2sp OwpAQCAtOTI0LDEyICs5MjgsNiBAQCBQcm9jZXNzRGF0YWJhc2UoRGF0YUNoZWNrc3Vtc1dv cmtlckRhdGFiYXNlICpkYikKIAkJCWVycm1zZygiaW5pdGlhdGluZyBkYXRhIGNoZWNrc3Vt IHByb2Nlc3NpbmcgaW4gZGF0YWJhc2UgXCIlc1wiIiwKIAkJCQkgICBkYi0+ZGJuYW1lKSk7 CiAKLQkvKiBTYXZlIHRoZSBwaWQgb2YgdGhlIHdvcmtlciBzbyB3ZSBjYW4gc2lnbmFsIGl0 IGxhdGVyICovCi0JTFdMb2NrQWNxdWlyZShEYXRhQ2hlY2tzdW1zV29ya2VyTG9jaywgTFdf RVhDTFVTSVZFKTsKLQlBc3NlcnQoRGF0YUNoZWNrc3VtU3RhdGUtPndvcmtlcl9pbnZvY2F0 aW9uID09IGludm9jYXRpb24pOwotCURhdGFDaGVja3N1bVN0YXRlLT53b3JrZXJfcGlkID0g cGlkOwotCUxXTG9ja1JlbGVhc2UoRGF0YUNoZWNrc3Vtc1dvcmtlckxvY2spOwotCiAJc25w cmludGYoYWN0aXZpdHksIHNpemVvZihhY3Rpdml0eSkgLSAxLAogCQkJICJXYWl0aW5nIGZv ciB3b3JrZXIgaW4gZGF0YWJhc2UgJXMgKHBpZCAlbGQpIiwgZGItPmRibmFtZSwgKGxvbmcp IHBpZCk7CiAJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9SVU5OSU5HLCBhY3Rpdml0 eSk7CkBAIC05NDIsMTAgKzk0MCwxMCBAQCBQcm9jZXNzRGF0YWJhc2UoRGF0YUNoZWNrc3Vt c1dvcmtlckRhdGFiYXNlICpkYikKIAkJCQkJICAgZGItPmRibmFtZSksCiAJCQkJZXJyaGlu dCgiUmVzdGFydCB0aGUgZGF0YWJhc2UgYW5kIHJlc3RhcnQgZGF0YSBjaGVja3N1bSBwcm9j ZXNzaW5nIGJ5IGNhbGxpbmcgcGdfZW5hYmxlX2RhdGFfY2hlY2tzdW1zKCkuIikpOwogCi0J TFdMb2NrQWNxdWlyZShEYXRhQ2hlY2tzdW1zV29ya2VyTG9jaywgTFdfRVhDTFVTSVZFKTsK KwlMV0xvY2tBY3F1aXJlKERhdGFDaGVja3N1bXNXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwog CUFzc2VydChEYXRhQ2hlY2tzdW1TdGF0ZS0+d29ya2VyX2ludm9jYXRpb24gPT0gaW52b2Nh dGlvbik7CisJQXNzZXJ0KERhdGFDaGVja3N1bVN0YXRlLT53b3JrZXJfcHJvY25vID09IElO VkFMSURfUFJPQ19OVU1CRVIpOwogCXJlc3VsdCA9IERhdGFDaGVja3N1bVN0YXRlLT53b3Jr ZXJfcmVzdWx0OwotCURhdGFDaGVja3N1bVN0YXRlLT53b3JrZXJfcGlkID0gSW52YWxpZFBp ZDsKIAlMV0xvY2tSZWxlYXNlKERhdGFDaGVja3N1bXNXb3JrZXJMb2NrKTsKIAogCWlmIChy ZXN1bHQgPT0gREFUQUNIRUNLU1VNU1dPUktFUl9BQk9SVEVEKQpAQCAtOTc0LDEyICs5NzIs MTEgQEAgbGF1bmNoZXJfZXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKQogCWlmIChsYXVuY2hl cl9ydW5uaW5nKQogCXsKIAkJTFdMb2NrQWNxdWlyZShEYXRhQ2hlY2tzdW1zV29ya2VyTG9j aywgTFdfRVhDTFVTSVZFKTsKLQkJaWYgKERhdGFDaGVja3N1bVN0YXRlLT53b3JrZXJfcGlk ICE9IEludmFsaWRQaWQpCisJCWlmIChEYXRhQ2hlY2tzdW1TdGF0ZS0+d29ya2VyX3Byb2Nu byAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQogCQl7CiAJCQllcmVwb3J0KExPRywKIAkJCQkJ ZXJybXNnKCJkYXRhIGNoZWNrc3VtcyBsYXVuY2hlciBleGl0aW5nIHdoaWxlIHdvcmtlciBp cyBzdGlsbCBydW5uaW5nLCBzaWduYWxsaW5nIHdvcmtlciIpKTsKLQkJCWtpbGwoRGF0YUNo ZWNrc3VtU3RhdGUtPndvcmtlcl9waWQsIFNJR1RFUk0pOwotCQkJRGF0YUNoZWNrc3VtU3Rh dGUtPndvcmtlcl9waWQgPSBJbnZhbGlkUGlkOworCQkJa2lsbChHZXRQR1Byb2NCeU51bWJl cihEYXRhQ2hlY2tzdW1TdGF0ZS0+d29ya2VyX3Byb2NubyktPnBpZCwgU0lHVEVSTSk7CiAJ CX0KIAkJTFdMb2NrUmVsZWFzZShEYXRhQ2hlY2tzdW1zV29ya2VyTG9jayk7CiAJfQpAQCAt MTA5Miw3ICsxMDg5LDYgQEAgV2FpdEZvckFsbFRyYW5zYWN0aW9uc1RvRmluaXNoKHZvaWQp CiB2b2lkCiBEYXRhQ2hlY2tzdW1zV29ya2VyTGF1bmNoZXJNYWluKERhdHVtIGFyZykKIHsK LQogCWVyZXBvcnQoREVCVUcxLAogCQkJZXJybXNnKCJiYWNrZ3JvdW5kIHdvcmtlciBcImRh dGFjaGVja3N1bXMgbGF1bmNoZXJcIiBzdGFydGVkIikpOwogCkBAIC0xNTI5LDYgKzE1MjUs MjEgQEAgQnVpbGRSZWxhdGlvbkxpc3QoYm9vbCB0ZW1wX3JlbGF0aW9ucywgYm9vbCBpbmNs dWRlX3NoYXJlZCkKIAlyZXR1cm4gUmVsYXRpb25MaXN0OwogfQogCisvKgorICogd29ya2Vy X2V4aXQKKyAqCisgKiBJbnRlcm5hbCByb3V0aW5lIGZvciBjbGVhbmluZyB1cCBzdGF0ZSB3 aGVuIGEgd29ya2VyIHByb2Nlc3MgZXhpdHMgZHVlIHRvCisgKiBhbiBlcnJvci4KKyAqLwor c3RhdGljIHZvaWQKK3dvcmtlcl9leGl0KGludCBjb2RlLCBEYXR1bSBhcmcpCit7CisJTFdM b2NrQWNxdWlyZShEYXRhQ2hlY2tzdW1zV29ya2VyTG9jaywgTFdfRVhDTFVTSVZFKTsKKwlp ZiAoRGF0YUNoZWNrc3VtU3RhdGUtPndvcmtlcl9pbnZvY2F0aW9uID09IHdvcmtlcl9pbnZv Y2F0aW9uKQorCQlEYXRhQ2hlY2tzdW1TdGF0ZS0+d29ya2VyX3Byb2NubyA9IElOVkFMSURf UFJPQ19OVU1CRVI7CisJTFdMb2NrUmVsZWFzZShEYXRhQ2hlY2tzdW1zV29ya2VyTG9jayk7 Cit9CisKIC8qCiAgKiBEYXRhQ2hlY2tzdW1zV29ya2VyTWFpbgogICoKQEAgLTE1NjYsMTUg KzE1NzcsMjIgQEAgRGF0YUNoZWNrc3Vtc1dvcmtlck1haW4oRGF0dW0gYXJnKQogCU15QmFj a2VuZFR5cGUgPSBCX0RBVEFDSEVDS1NVTVNXT1JLRVJfV09SS0VSOwogCWluaXRfcHNfZGlz cGxheShOVUxMKTsKIAotCUxXTG9ja0FjcXVpcmUoRGF0YUNoZWNrc3Vtc1dvcmtlckxvY2ss IExXX1NIQVJFRCk7CisJTFdMb2NrQWNxdWlyZShEYXRhQ2hlY2tzdW1zV29ya2VyTG9jaywg TFdfRVhDTFVTSVZFKTsKIAlpZiAoRGF0YUNoZWNrc3VtU3RhdGUtPndvcmtlcl9pbnZvY2F0 aW9uICE9IHdvcmtlcl9pbnZvY2F0aW9uKQogCXsKIAkJTFdMb2NrUmVsZWFzZShEYXRhQ2hl Y2tzdW1zV29ya2VyTG9jayk7CiAJCXJldHVybjsKIAl9CisJaWYgKERhdGFDaGVja3N1bVN0 YXRlLT53b3JrZXJfcHJvY25vICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCisJCWVsb2coRVJS T1IsICJkYXRhIGNoZWNrc3VtcyBiYWNrZ3JvdW5kIHdvcmtlciBpcyBhbHJlYWR5IHJ1bm5p bmciKTsKKwlEYXRhQ2hlY2tzdW1TdGF0ZS0+d29ya2VyX3Byb2NubyA9IE15UHJvY051bWJl cjsKKwogCWRib2lkID0gRGF0YUNoZWNrc3VtU3RhdGUtPmRhdGFiYXNlX29pZDsKIAlMV0xv Y2tSZWxlYXNlKERhdGFDaGVja3N1bXNXb3JrZXJMb2NrKTsKIAorCS8qIEFycmFuZ2UgdG8g Y2xlYXIgd29ya2VyX3Byb2NubyBvbiBleGl0ICovCisJb25fc2htZW1fZXhpdCh3b3JrZXJf ZXhpdCwgMCk7CisKIAlCYWNrZ3JvdW5kV29ya2VySW5pdGlhbGl6ZUNvbm5lY3Rpb25CeU9p ZChkYm9pZCwgSW52YWxpZE9pZCwKIAkJCQkJCQkJCQkJICBCR1dPUktFUl9CWVBBU1NfQUxM T1dDT05OKTsKIAotLSAKMi40Ny4zCgo= --------------WzeNeixNPsQ0a7SXozrFhDu6 Content-Type: text/x-patch; charset=UTF-8; name="v13-0004-Refactor-PARALLEL_MESSAGE-procsignal-signaling.patch" Content-Disposition: attachment; filename*0="v13-0004-Refactor-PARALLEL_MESSAGE-procsignal-signaling.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSA2YTgyNzcxZmJhYjkzOGNkMTBlMTRkZTc0OTAzNDFjM2I1NDZkZmM2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFR1ZSwgMTYgSnVuIDIwMjYgMjI6MDY6MDMgKzAzMDAK U3ViamVjdDogW1BBVENIIHYxMyA0LzldIFJlZmFjdG9yIFBBUkFMTEVMX01FU1NBR0UgcHJv Y3NpZ25hbCBzaWduYWxpbmcKCldoZW4gYSBtZXNzYWdlIGlzIHNlbnQgdG8gYSBzaG1fbXEg aW4gcHFfcHV0bWVzc2FnZSgpLCB0aGUgc2VuZGVyCnNlbmRzIGEgUFJPQ1NJR19QQVJBTExF TF9NRVNTQUdFIHByb2NzaWduYWwgdG8gdGhlIHJlY2VpdmVyLCB0byBub3RpZnkKaXQgb2Yg dGhlIG5ldyBtZXNzYWdlLiBIb3dldmVyLCBpbiBjYXNlIG9mIGEgcGFyYWxsZWwgYXBwbHkg d29ya2VyIG9yCmEgcmVwYWNrIHdvcmtlciwgd2UgdXNlZCBQUk9DU0lHX1BBUkFMTEVMX0FQ UExZX01FU1NBR0Ugb3IKUFJPQ1NJR19SRVBBQ0tfTUVTU0FHRSBpbnN0ZWFkLiBSZW1vdmUg dGhvc2UgZXh0cmEgcHJvY3NpZ25hbHMsIGFsd2F5cwp1c2UgUFJPQ1NJR19QQVJBTExFTF9N RVNTQUdFLCBhbmQgbW92ZSB0aGUgbG9naWMgdG8gdGhlIHJlY2VpdmluZyBzaWRlCmluc3Rl YWQgdG8gY2hlY2sgYWxsIGRpZmZlcmVudCBraW5kcyBvZiBpbmNvbWluZyBtZXNzYWdlcy4K ClRoaXMgZGVkdXBsaWNhdGVzIHRoZSBjb2RlIGJldHdlZW4gUHJvY2Vzc1BhcmFsbGVsTWVz c2FnZXMoKSwKUHJvY2Vzc1BhcmFsbGVsQXBwbHlNZXNzYWdlcygpLCBhbmQgUHJvY2Vzc1Jl cGFja01lc3NhZ2VzKCkgdG8gc2V0IHVwCnRoZSBzaG9ydC1saXZlZCBtZW1vcnkgY29udGV4 dCBhbmQgdG8gaG9sZCBpbnRlcnJ1cHRzLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3BhcmFsbGVsLmMgICAgICAgICB8IDQxICsrKysrKysrKy0tLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvcmVwYWNrLmMgICAgICAgICAgICAgICAgIHwgNjAgKy0tLS0tLS0tLS0tLS0t LS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2tfd29ya2VyLmMgICAgICAgICAgfCAg MiArLQogc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jICAgICAgICAgICAgICAgICAgICAgIHwg MjAgKy0tLS0tCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2Vy LmMgfCA2MyArKy0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w cm9jc2lnbmFsLmMgICAgICAgICAgfCAgNiAtLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jICAgICAgICAgICAgICAgICAgIHwgIDggKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvcGFy YWxsZWwuaCAgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vbG9naWNhbHdvcmtlci5oICAgICAgIHwgIDEgLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9w cm9jc2lnbmFsLmggICAgICAgICAgICAgIHwgIDIgLQogMTAgZmlsZXMgY2hhbmdlZCwgNDYg aW5zZXJ0aW9ucygrKSwgMTU5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS9wYXJhbGxlbC5jCmluZGV4IDg5ZTlkMjI0ZWVjLi41YzkyZTA1YWQ4NiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCkBAIC0yNiw2ICsyNiw3IEBACiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19lbnVtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9zdG9yYWdl LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvYXN5bmMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9y ZXBhY2suaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKICNpbmNsdWRlICJleGVj dXRvci9leGVjUGFyYWxsZWwuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgpAQCAtMzQs NiArMzUsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm9wdGltaXpl ci9vcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNh dGlvbi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNs dWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgpA QCAtMTYwLDYgKzE2Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QKIH07CiAKIC8qIFByaXZh dGUgZnVuY3Rpb25zLiAqLworc3RhdGljIHZvaWQgUHJvY2Vzc1BhcmFsbGVsTWVzc2FnZXMo dm9pZCk7CiBzdGF0aWMgdm9pZCBQcm9jZXNzUGFyYWxsZWxNZXNzYWdlKFBhcmFsbGVsQ29u dGV4dCAqcGN4dCwgaW50IGksIFN0cmluZ0luZm8gbXNnKTsKIHN0YXRpYyB2b2lkIFdhaXRG b3JQYXJhbGxlbFdvcmtlcnNUb0V4aXQoUGFyYWxsZWxDb250ZXh0ICpwY3h0KTsKIHN0YXRp YyBwYXJhbGxlbF93b3JrZXJfbWFpbl90eXBlIExvb2t1cFBhcmFsbGVsV29ya2VyRnVuY3Rp b24oY29uc3QgY2hhciAqbGlicmFyeW5hbWUsIGNvbnN0IGNoYXIgKmZ1bmNuYW1lKTsKQEAg LTEwNTQsOSArMTA1Nyw4IEBAIEhhbmRsZVBhcmFsbGVsTWVzc2FnZUludGVycnVwdCh2b2lk KQogICogUHJvY2VzcyBhbnkgcXVldWVkIHByb3RvY29sIG1lc3NhZ2VzIHJlY2VpdmVkIGZy b20gcGFyYWxsZWwgd29ya2Vycy4KICAqLwogdm9pZAotUHJvY2Vzc1BhcmFsbGVsTWVzc2Fn ZXModm9pZCkKK1Byb2Nlc3NQYXJhbGxlbE1lc3NhZ2VJbnRlcnJ1cHQodm9pZCkKIHsKLQlk bGlzdF9pdGVyCWl0ZXI7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwogCiAJc3RhdGlj IE1lbW9yeUNvbnRleHQgaHBtX2NvbnRleHQgPSBOVUxMOwpAQCAtMTA4Nyw2ICsxMDg5LDM0 IEBAIFByb2Nlc3NQYXJhbGxlbE1lc3NhZ2VzKHZvaWQpCiAJLyogT0sgdG8gcHJvY2VzcyBt ZXNzYWdlcy4gIFJlc2V0IHRoZSBmbGFnIHNheWluZyB0aGVyZSBhcmUgbW9yZSB0byBkby4g Ki8KIAlQYXJhbGxlbE1lc3NhZ2VQZW5kaW5nID0gZmFsc2U7CiAKKwkvKiBQcm9jZXNzIG1l c3NhZ2VzIGZyb20gcGFyYWxsZWwgcXVlcnkgd29ya2VycyAqLworCVByb2Nlc3NQYXJhbGxl bE1lc3NhZ2VzKCk7CisKKwkvKiBQcm9jZXNzIG1lc3NhZ2VzIGZyb20gUkVQQUNLIENPTkNV UlJFTlRMWSB3b3JrZXJzICovCisJUHJvY2Vzc1JlcGFja01lc3NhZ2VzKCk7CisKKwkvKiBQ cm9jZXNzIG1lc3NhZ2VzIGZyb20gcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2Vy cyAqLworCVByb2Nlc3NQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKTsKKworCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCS8qIE1pZ2h0IGFzIHdlbGwgY2xlYXIgdGhl IGNvbnRleHQgb24gb3VyIHdheSBvdXQgKi8KKwlNZW1vcnlDb250ZXh0UmVzZXQoaHBtX2Nv bnRleHQpOworCisJUkVTVU1FX0lOVEVSUlVQVFMoKTsKK30KKworLyoKKyAqIFByb2Nlc3Mg YW55IGluY29taW5nIG1lc3NhZ2VzIGZyb20gcGFyYWxsZWwgd29ya2Vycy4KKyAqCisgKiBU aGlzIGlzIGNhbGxlZCBmcm9tIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCksIGJ1dCBpbiBhIHNo b3J0LWxpdmVkIG1lbW9yeQorICogY29udGV4dC4KKyAqLworc3RhdGljIHZvaWQKK1Byb2Nl c3NQYXJhbGxlbE1lc3NhZ2VzKHZvaWQpCit7CisJZGxpc3RfaXRlcglpdGVyOworCiAJZGxp c3RfZm9yZWFjaChpdGVyLCAmcGN4dF9saXN0KQogCXsKIAkJUGFyYWxsZWxDb250ZXh0ICpw Y3h0OwpAQCAtMTEzMCwxMyArMTE2MCw2IEBAIFByb2Nlc3NQYXJhbGxlbE1lc3NhZ2VzKHZv aWQpCiAJCQl9CiAJCX0KIAl9Ci0KLQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4 dCk7Ci0KLQkvKiBNaWdodCBhcyB3ZWxsIGNsZWFyIHRoZSBjb250ZXh0IG9uIG91ciB3YXkg b3V0ICovCi0JTWVtb3J5Q29udGV4dFJlc2V0KGhwbV9jb250ZXh0KTsKLQotCVJFU1VNRV9J TlRFUlJVUFRTKCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9yZXBhY2suYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jCmluZGV4IDRkMTc3 Yzg2OGJiLi5hMmE0YzI4Njc3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv cmVwYWNrLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMKQEAgLTE0NSwx MiArMTQ1LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgRGVjb2RpbmdXb3JrZXIKIC8qIFBvaW50ZXIg dG8gY3VycmVudGx5IHJ1bm5pbmcgZGVjb2Rpbmcgd29ya2VyLiAqLwogc3RhdGljIERlY29k aW5nV29ya2VyICpkZWNvZGluZ193b3JrZXIgPSBOVUxMOwogCi0vKgotICogSXMgdGhlcmUg YSBtZXNzYWdlIHNlbnQgYnkgYSByZXBhY2sgd29ya2VyIHRoYXQgdGhlIGJhY2tlbmQgbmVl ZHMgdG8KLSAqIHJlY2VpdmU/Ci0gKi8KLXZvbGF0aWxlIHNpZ19hdG9taWNfdCBSZXBhY2tN ZXNzYWdlUGVuZGluZyA9IGZhbHNlOwotCiBzdGF0aWMgTE9DS01PREUgUmVwYWNrTG9ja0xl dmVsKGJvb2wgY29uY3VycmVudCk7CiBzdGF0aWMgYm9vbCBjbHVzdGVyX3JlbF9yZWNoZWNr KFJlcGFja0NvbW1hbmQgY21kLCBSZWxhdGlvbiBPbGRIZWFwLAogCQkJCQkJCQlPaWQgaW5k ZXhPaWQsIE9pZCB1c2VyaWQsIExPQ0tNT0RFIGxtb2RlLApAQCAtMzY0NywzMCArMzY0MSwx NSBAQCBEZWNvZGluZ1dvcmtlckZpbGVOYW1lKGNoYXIgKmZuYW1lLCBPaWQgcmVsaWQsIHVp bnQzMiBzZXEpCiAJc25wcmludGYoZm5hbWUsIE1BWFBHUEFUSCwgIiV1LSV1IiwgcmVsaWQs IHNlcSk7CiB9CiAKLS8qCi0gKiBIYW5kbGUgcmVjZWlwdCBvZiBhbiBpbnRlcnJ1cHQgaW5k aWNhdGluZyBhIHJlcGFjayB3b3JrZXIgbWVzc2FnZS4KLSAqCi0gKiBOb3RlOiB0aGlzIGlz IGNhbGxlZCB3aXRoaW4gYSBzaWduYWwgaGFuZGxlciEgIEFsbCB3ZSBjYW4gZG8gaXMgc2V0 Ci0gKiBhIGZsYWcgdGhhdCB3aWxsIGNhdXNlIHRoZSBuZXh0IENIRUNLX0ZPUl9JTlRFUlJV UFRTKCkgdG8gaW52b2tlCi0gKiBQcm9jZXNzUmVwYWNrTWVzc2FnZXMoKS4KLSAqLwotdm9p ZAotSGFuZGxlUmVwYWNrTWVzc2FnZUludGVycnVwdCh2b2lkKQotewotCUludGVycnVwdFBl bmRpbmcgPSB0cnVlOwotCVJlcGFja01lc3NhZ2VQZW5kaW5nID0gdHJ1ZTsKLQlTZXRMYXRj aChNeUxhdGNoKTsKLX0KLQogLyoKICAqIFByb2Nlc3MgYW55IHF1ZXVlZCBwcm90b2NvbCBt ZXNzYWdlcyByZWNlaXZlZCBmcm9tIHRoZSByZXBhY2sgd29ya2VyLgorICoKKyAqIFRoaXMg aXMgY2FsbGVkIGZyb20gQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSwgYnV0IGluIGEgc2hvcnQt bGl2ZWQgbWVtb3J5CisgKiBjb250ZXh0LgogICovCiB2b2lkCiBQcm9jZXNzUmVwYWNrTWVz c2FnZXModm9pZCkKIHsKLQlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7Ci0Jc3RhdGljIE1l bW9yeUNvbnRleHQgaHBtX2NvbnRleHQgPSBOVUxMOwotCiAJLyoKIAkgKiBOb3RoaW5nIHRv IGRvIGlmIHdlIGhhdmVuJ3QgbGF1bmNoZWQgdGhlIHdvcmtlciB5ZXQgb3IgaGF2ZSBhbHJl YWR5CiAJICogdGVybWluYXRlZCBpdC4KQEAgLTM2NzgsMzIgKzM2NTcsNiBAQCBQcm9jZXNz UmVwYWNrTWVzc2FnZXModm9pZCkKIAlpZiAoZGVjb2Rpbmdfd29ya2VyID09IE5VTEwpCiAJ CXJldHVybjsKIAotCS8qCi0JICogVGhpcyBpcyBpbnZva2VkIGZyb20gUHJvY2Vzc0ludGVy cnVwdHMoKSwgYW5kIHNpbmNlIHNvbWUgb2YgdGhlCi0JICogZnVuY3Rpb25zIGl0IGNhbGxz IGNvbnRhaW4gQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSwgdGhlcmUgaXMgYSBwb3RlbnRpYWwK LQkgKiBmb3IgcmVjdXJzaXZlIGNhbGxzIGlmIG1vcmUgc2lnbmFscyBhcmUgcmVjZWl2ZWQg d2hpbGUgdGhpcyBydW5zLiAgSXQncwotCSAqIHVuY2xlYXIgdGhhdCByZWN1cnNpdmUgZW50 cnkgd291bGQgYmUgc2FmZSwgYW5kIGl0IGRvZXNuJ3Qgc2VlbSB1c2VmdWwKLQkgKiBldmVu IGlmIGl0IGlzIHNhZmUsIHNvIGxldCdzIGJsb2NrIGludGVycnVwdHMgdW50aWwgZG9uZS4K LQkgKi8KLQlIT0xEX0lOVEVSUlVQVFMoKTsKLQotCS8qCi0JICogTW9yZW92ZXIsIEN1cnJl bnRNZW1vcnlDb250ZXh0IG1pZ2h0IGJlIHBvaW50aW5nIGFsbW9zdCBhbnl3aGVyZS4gIFdl Ci0JICogZG9uJ3Qgd2FudCB0byByaXNrIGxlYWtpbmcgZGF0YSBpbnRvIGxvbmctbGl2ZWQg Y29udGV4dHMsIHNvIGxldCdzIGRvCi0JICogb3VyIHdvcmsgaGVyZSBpbiBhIHByaXZhdGUg Y29udGV4dCB0aGF0IHdlIGNhbiByZXNldCBvbiBlYWNoIHVzZS4KLQkgKi8KLQlpZiAoaHBt X2NvbnRleHQgPT0gTlVMTCkJLyogZmlyc3QgdGltZSB0aHJvdWdoPyAqLwotCQlocG1fY29u dGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BNZW1vcnlDb250ZXh0LAotCQkJCQkJ CQkJCQkiUHJvY2Vzc1JlcGFja01lc3NhZ2VzIiwKLQkJCQkJCQkJCQkJQUxMT0NTRVRfREVG QVVMVF9TSVpFUyk7Ci0JZWxzZQotCQlNZW1vcnlDb250ZXh0UmVzZXQoaHBtX2NvbnRleHQp OwotCi0Jb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhocG1fY29udGV4dCk7 Ci0KLQkvKiBPSyB0byBwcm9jZXNzIG1lc3NhZ2VzLiAgUmVzZXQgdGhlIGZsYWcgc2F5aW5n IHRoZXJlIGFyZSBtb3JlIHRvIGRvLiAqLwotCVJlcGFja01lc3NhZ2VQZW5kaW5nID0gZmFs c2U7Ci0KIAkvKgogCSAqIFJlYWQgYXMgbWFueSBtZXNzYWdlcyBhcyB3ZSBjYW4gZnJvbSB0 aGUgd29ya2VyLCBidXQgc3RvcCB3aGVuIG5vIG1vcmUKIAkgKiBtZXNzYWdlcyBjYW4gYmUg cmVhZCBmcm9tIHRoZSB3b3JrZXIgd2l0aG91dCBibG9ja2luZy4KQEAgLTM3MzgsMTMgKzM2 OTEsNiBAQCBQcm9jZXNzUmVwYWNrTWVzc2FnZXModm9pZCkKIAkJCWJyZWFrOwogCQl9CiAJ fQotCi0JTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwotCi0JLyogTWlnaHQg YXMgd2VsbCBjbGVhciB0aGUgY29udGV4dCBvbiBvdXIgd2F5IG91dCAqLwotCU1lbW9yeUNv bnRleHRSZXNldChocG1fY29udGV4dCk7Ci0KLQlSRVNVTUVfSU5URVJSVVBUUygpOwogfQog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrX3dvcmtlci5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrX3dvcmtlci5jCmluZGV4IGRiOWZmMDU3 Y2M2Li45ZmYyZTE0OTA0YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVw YWNrX3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFja193b3JrZXIu YwpAQCAtMTcyLDcgKzE3Miw3IEBAIFJlcGFja1dvcmtlclNodXRkb3duKGludCBjb2RlLCBE YXR1bSBhcmcpCiAJRGVjb2RpbmdXb3JrZXJTaGFyZWQgKnNoYXJlZCA9IChEZWNvZGluZ1dv cmtlclNoYXJlZCAqKSBEYXR1bUdldFBvaW50ZXIoYXJnKTsKIAogCVNlbmRQcm9jU2lnbmFs KHNoYXJlZC0+YmFja2VuZF9waWQsCi0JCQkJICAgUFJPQ1NJR19SRVBBQ0tfTUVTU0FHRSwK KwkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCiAJCQkJICAgc2hhcmVkLT5iYWNr ZW5kX3Byb2NfbnVtYmVyKTsKIAogCWRzbV9kZXRhY2god29ya2VyX2RzbV9zZWdtZW50KTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYyBiL3NyYy9iYWNrZW5kL2xp YnBxL3BxbXEuYwppbmRleCBkMDM4YTlkYTUxNS4uMjM4ZmI3M2ViZDggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9wcW1x LmMKQEAgLTE3MiwyMyArMTcyLDkgQEAgbXFfcHV0bWVzc2FnZShjaGFyIG1zZ3R5cGUsIGNv bnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pCiAJCXJlc3VsdCA9IHNobV9tcV9zZW5kdihwcV9t cV9oYW5kbGUsIGlvdiwgMiwgdHJ1ZSwgdHJ1ZSk7CiAKIAkJaWYgKHBxX21xX3BhcmFsbGVs X2xlYWRlcl9waWQgIT0gMCkKLQkJewotCQkJaWYgKElzTG9naWNhbFBhcmFsbGVsQXBwbHlX b3JrZXIoKSkKLQkJCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlk LAotCQkJCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSwKLQkJCQkJCQkg ICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcHJvY19udW1iZXIpOwotCQkJZWxzZSBpZiAoQW1S ZXBhY2tXb3JrZXIoKSkKLQkJCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJhbGxlbF9sZWFk ZXJfcGlkLAotCQkJCQkJCSAgIFBST0NTSUdfUkVQQUNLX01FU1NBR0UsCi0JCQkJCQkJICAg cHFfbXFfcGFyYWxsZWxfbGVhZGVyX3Byb2NfbnVtYmVyKTsKLQkJCWVsc2UKLQkJCXsKLQkJ CQlBc3NlcnQoSXNQYXJhbGxlbFdvcmtlcigpKTsKLQkJCQlTZW5kUHJvY1NpZ25hbChwcV9t cV9wYXJhbGxlbF9sZWFkZXJfcGlkLAotCQkJCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfTUVT U0FHRSwKLQkJCQkJCQkgICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcHJvY19udW1iZXIpOwot CQkJfQotCQl9CisJCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlk LAorCQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9NRVNTQUdFLAorCQkJCQkJICAgcHFfbXFf cGFyYWxsZWxfbGVhZGVyX3Byb2NfbnVtYmVyKTsKIAogCQlpZiAocmVzdWx0ICE9IFNITV9N UV9XT1VMRF9CTE9DSykKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCAwMTJkNTVl OWQzZC4uOTUzNWFiZWYxMjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCkBAIC0yNDEsMTIgKzI0MSw2 IEBAIHN0YXRpYyBMaXN0ICpQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCA9IE5JTDsKICAqLwog UGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqTXlQYXJhbGxlbFNoYXJlZCA9IE5VTEw7CiAK LS8qCi0gKiBJcyB0aGVyZSBhIG1lc3NhZ2Ugc2VudCBieSBhIHBhcmFsbGVsIGFwcGx5IHdv cmtlciB0aGF0IHRoZSBsZWFkZXIgYXBwbHkKLSAqIHdvcmtlciBuZWVkcyB0byByZWNlaXZl PwotICovCi12b2xhdGlsZSBzaWdfYXRvbWljX3QgUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5k aW5nID0gZmFsc2U7Ci0KIC8qCiAgKiBDYWNoZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGluZm9ybWF0aW9uIHJlcXVpcmVkIGZvciBhcHBseWluZyB0aGUKICAqIGN1cnJlbnQgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uLiBJdCBpcyB1c2VkIHRvIHNhdmUgdGhlIGNvc3Qgb2Ygc2Vh cmNoaW5nIHRoZQpAQCAtODU3LDcgKzg1MSw3IEBAIHN0YXRpYyB2b2lkCiBwYV9zaHV0ZG93 bihpbnQgY29kZSwgRGF0dW0gYXJnKQogewogCVNlbmRQcm9jU2lnbmFsKE15TG9naWNhbFJl cFdvcmtlci0+bGVhZGVyX3BpZCwKLQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01F U1NBR0UsCisJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9NRVNTQUdFLAogCQkJCSAgIElOVkFM SURfUFJPQ19OVU1CRVIpOwogCiAJZHNtX2RldGFjaCgoZHNtX3NlZ21lbnQgKikgRGF0dW1H ZXRQb2ludGVyKGFyZykpOwpAQCAtOTk3LDIxICs5OTEsNiBAQCBQYXJhbGxlbEFwcGx5V29y a2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlBc3NlcnQoZmFsc2UpOwogfQogCi0vKgotICog SGFuZGxlIHJlY2VpcHQgb2YgYW4gaW50ZXJydXB0IGluZGljYXRpbmcgYSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgbWVzc2FnZS4KLSAqCi0gKiBOb3RlOiB0aGlzIGlzIGNhbGxlZCB3aXRo aW4gYSBzaWduYWwgaGFuZGxlciEgQWxsIHdlIGNhbiBkbyBpcyBzZXQgYSBmbGFnCi0gKiB0 aGF0IHdpbGwgY2F1c2UgdGhlIG5leHQgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSB0byBpbnZv a2UKLSAqIFByb2Nlc3NQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKS4KLSAqLwotdm9pZAotSGFu ZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQodm9pZCkKLXsKLQlJbnRlcnJ1cHRQ ZW5kaW5nID0gdHJ1ZTsKLQlQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmcgPSB0cnVlOwot CS8qIGxhdGNoIHdpbGwgYmUgc2V0IGJ5IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyICov Ci19Ci0KIC8qCiAgKiBQcm9jZXNzIGEgc2luZ2xlIHByb3RvY29sIG1lc3NhZ2UgcmVjZWl2 ZWQgZnJvbSBhIHNpbmdsZSBwYXJhbGxlbCBhcHBseQogICogd29ya2VyLgpAQCAtMTA3Niw0 MCArMTA1NSwxNSBAQCBQcm9jZXNzUGFyYWxsZWxBcHBseU1lc3NhZ2UoU3RyaW5nSW5mbyBt c2cpCiB9CiAKIC8qCi0gKiBIYW5kbGUgYW55IHF1ZXVlZCBwcm90b2NvbCBtZXNzYWdlcyBy ZWNlaXZlZCBmcm9tIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKiBQcm9jZXNzIGFueSBx dWV1ZWQgcHJvdG9jb2wgbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSBwYXJhbGxlbCBhcHBseSB3 b3JrZXJzLgorICoKKyAqIFRoaXMgaXMgY2FsbGVkIGZyb20gQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKSwgYnV0IGluIGEgc2hvcnQtbGl2ZWQgbWVtb3J5CisgKiBjb250ZXh0LgogICovCiB2 b2lkCiBQcm9jZXNzUGFyYWxsZWxBcHBseU1lc3NhZ2VzKHZvaWQpCiB7CiAJTGlzdENlbGwg ICAqbGM7Ci0JTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwotCi0Jc3RhdGljIE1lbW9yeUNv bnRleHQgaHBhbV9jb250ZXh0ID0gTlVMTDsKLQotCS8qCi0JICogVGhpcyBpcyBpbnZva2Vk IGZyb20gUHJvY2Vzc0ludGVycnVwdHMoKSwgYW5kIHNpbmNlIHNvbWUgb2YgdGhlCi0JICog ZnVuY3Rpb25zIGl0IGNhbGxzIGNvbnRhaW4gQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSwgdGhl cmUgaXMgYSBwb3RlbnRpYWwKLQkgKiBmb3IgcmVjdXJzaXZlIGNhbGxzIGlmIG1vcmUgc2ln bmFscyBhcmUgcmVjZWl2ZWQgd2hpbGUgdGhpcyBydW5zLiBJdCdzCi0JICogdW5jbGVhciB0 aGF0IHJlY3Vyc2l2ZSBlbnRyeSB3b3VsZCBiZSBzYWZlLCBhbmQgaXQgZG9lc24ndCBzZWVt IHVzZWZ1bAotCSAqIGV2ZW4gaWYgaXQgaXMgc2FmZSwgc28gbGV0J3MgYmxvY2sgaW50ZXJy dXB0cyB1bnRpbCBkb25lLgotCSAqLwotCUhPTERfSU5URVJSVVBUUygpOwotCi0JLyoKLQkg KiBNb3Jlb3ZlciwgQ3VycmVudE1lbW9yeUNvbnRleHQgbWlnaHQgYmUgcG9pbnRpbmcgYWxt b3N0IGFueXdoZXJlLiBXZQotCSAqIGRvbid0IHdhbnQgdG8gcmlzayBsZWFraW5nIGRhdGEg aW50byBsb25nLWxpdmVkIGNvbnRleHRzLCBzbyBsZXQncyBkbwotCSAqIG91ciB3b3JrIGhl cmUgaW4gYSBwcml2YXRlIGNvbnRleHQgdGhhdCB3ZSBjYW4gcmVzZXQgb24gZWFjaCB1c2Uu Ci0JICovCi0JaWYgKCFocGFtX2NvbnRleHQpCQkJLyogZmlyc3QgdGltZSB0aHJvdWdoPyAq LwotCQlocGFtX2NvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9wTWVtb3J5Q29u dGV4dCwKLQkJCQkJCQkJCQkJICJQcm9jZXNzUGFyYWxsZWxBcHBseU1lc3NhZ2VzIiwKLQkJ CQkJCQkJCQkJIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOwotCWVsc2UKLQkJTWVtb3J5Q29u dGV4dFJlc2V0KGhwYW1fY29udGV4dCk7Ci0KLQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKGhwYW1fY29udGV4dCk7Ci0KLQlQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRp bmcgPSBmYWxzZTsKIAogCWZvcmVhY2gobGMsIFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKQog CXsKQEAgLTExNDUsMTMgKzEwOTksNiBAQCBQcm9jZXNzUGFyYWxsZWxBcHBseU1lc3NhZ2Vz KHZvaWQpCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJ VEVfU1RBVEUpLAogCQkJCQkgZXJybXNnKCJsb3N0IGNvbm5lY3Rpb24gdG8gdGhlIGxvZ2lj YWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIikpKTsKIAl9Ci0KLQlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7Ci0KLQkvKiBNaWdodCBhcyB3ZWxsIGNs ZWFyIHRoZSBjb250ZXh0IG9uIG91ciB3YXkgb3V0ICovCi0JTWVtb3J5Q29udGV4dFJlc2V0 KGhwYW1fY29udGV4dCk7Ci0KLQlSRVNVTUVfSU5URVJSVVBUUygpOwogfQogCiAvKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCmluZGV4IDEzOTdmNjVmNjdiLi4wMGI2 NDBmMmQ1MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25h bC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtNzEz LDEyICs3MTMsNiBAQCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcihTSUdOQUxfQVJHUykK IAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfTE9HX01FTU9SWV9DT05URVhUKSkKIAkJ SGFuZGxlTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOwogCi0JaWYgKENoZWNrUHJvY1Np Z25hbChQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UpKQotCQlIYW5kbGVQYXJhbGxl bEFwcGx5TWVzc2FnZUludGVycnVwdCgpOwotCi0JaWYgKENoZWNrUHJvY1NpZ25hbChQUk9D U0lHX1JFUEFDS19NRVNTQUdFKSkKLQkJSGFuZGxlUmVwYWNrTWVzc2FnZUludGVycnVwdCgp OwotCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1NMT1RTWU5DX01FU1NBR0UpKQog CQlIYW5kbGVTbG90U3luY01lc3NhZ2VJbnRlcnJ1cHQoKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5j CmluZGV4IDFmMmZjM2NjZTliLi44MDQ0OWIwYjNjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpA QCAtMzYwNCwxOSArMzYwNCwxMyBAQCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKQogCQlQcm9j ZXNzUHJvY1NpZ25hbEJhcnJpZXIoKTsKIAogCWlmIChQYXJhbGxlbE1lc3NhZ2VQZW5kaW5n KQotCQlQcm9jZXNzUGFyYWxsZWxNZXNzYWdlcygpOworCQlQcm9jZXNzUGFyYWxsZWxNZXNz YWdlSW50ZXJydXB0KCk7CiAKIAlpZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCiAJCVBy b2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CiAKLQlpZiAoUGFyYWxsZWxBcHBs eU1lc3NhZ2VQZW5kaW5nKQotCQlQcm9jZXNzUGFyYWxsZWxBcHBseU1lc3NhZ2VzKCk7Ci0K IAlpZiAoU2xvdFN5bmNTaHV0ZG93blBlbmRpbmcpCiAJCVByb2Nlc3NTbG90U3luY01lc3Nh Z2UoKTsKLQotCWlmIChSZXBhY2tNZXNzYWdlUGVuZGluZykKLQkJUHJvY2Vzc1JlcGFja01l c3NhZ2VzKCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFy YWxsZWwuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oCmluZGV4IDYwZjg1NzY3 NWUwLi4wZWQwYTg4ZDgzMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFs bGVsLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmgKQEAgLTczLDcgKzcz LDcgQEAgZXh0ZXJuIHZvaWQgRGVzdHJveVBhcmFsbGVsQ29udGV4dChQYXJhbGxlbENvbnRl eHQgKnBjeHQpOwogZXh0ZXJuIGJvb2wgUGFyYWxsZWxDb250ZXh0QWN0aXZlKHZvaWQpOwog CiBleHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxlbE1lc3NhZ2VJbnRlcnJ1cHQodm9pZCk7Ci1l eHRlcm4gdm9pZCBQcm9jZXNzUGFyYWxsZWxNZXNzYWdlcyh2b2lkKTsKK2V4dGVybiB2b2lk IFByb2Nlc3NQYXJhbGxlbE1lc3NhZ2VJbnRlcnJ1cHQodm9pZCk7CiBleHRlcm4gdm9pZCBB dEVPWGFjdF9QYXJhbGxlbChib29sIGlzQ29tbWl0KTsKIGV4dGVybiB2b2lkIEF0RU9TdWJY YWN0X1BhcmFsbGVsKGJvb2wgaXNDb21taXQsIFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJJZCk7 CiBleHRlcm4gdm9pZCBQYXJhbGxlbFdvcmtlclJlcG9ydExhc3RSZWNFbmQoWExvZ1JlY1B0 ciBsYXN0X3hsb2dfZW5kKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWx3b3JrZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3Jr ZXIuaAppbmRleCA3ZDc0OGEyOGRhOC4uZjY5OTRlOWExYTEgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaAorKysgYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKQEAgLTI0LDcgKzI0LDYgQEAgZXh0ZXJuIHZv aWQgU2VxdWVuY2VTeW5jV29ya2VyTWFpbihEYXR1bSBtYWluX2FyZyk7CiBleHRlcm4gYm9v bCBJc0xvZ2ljYWxXb3JrZXIodm9pZCk7CiBleHRlcm4gYm9vbCBJc0xvZ2ljYWxQYXJhbGxl bEFwcGx5V29ya2VyKHZvaWQpOwogCi1leHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxlbEFwcGx5 TWVzc2FnZUludGVycnVwdCh2b2lkKTsKIGV4dGVybiB2b2lkIFByb2Nlc3NQYXJhbGxlbEFw cGx5TWVzc2FnZXModm9pZCk7CiAKIGV4dGVybiB2b2lkIExvZ2ljYWxSZXBXb3JrZXJzV2Fr ZXVwQXRDb21taXQoT2lkIHN1YmlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKaW5k ZXggYWFhMTU4YmZkNjYuLjY5MTMxNGUyNmJmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9z dG9yYWdlL3Byb2NzaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWdu YWwuaApAQCAtMzUsOSArMzUsNyBAQCB0eXBlZGVmIGVudW0KIAlQUk9DU0lHX1dBTFNORF9J TklUX1NUT1BQSU5HLAkvKiBhc2sgd2Fsc2VuZGVycyB0byBwcmVwYXJlIGZvciBzaHV0ZG93 biAgKi8KIAlQUk9DU0lHX0JBUlJJRVIsCQkJLyogZ2xvYmFsIGJhcnJpZXIgaW50ZXJydXB0 ICAqLwogCVBST0NTSUdfTE9HX01FTU9SWV9DT05URVhULCAvKiBhc2sgYmFja2VuZCB0byBs b2cgdGhlIG1lbW9yeSBjb250ZXh0cyAqLwotCVBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVT U0FHRSwgLyogTWVzc2FnZSBmcm9tIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgKi8KIAlQUk9D U0lHX1NMT1RTWU5DX01FU1NBR0UsCS8qIGFzayBzbG90IHN5bmNocm9uaXphdGlvbiB0byBz dG9wICovCi0JUFJPQ1NJR19SRVBBQ0tfTUVTU0FHRSwJCS8qIE1lc3NhZ2UgZnJvbSByZXBh Y2sgd29ya2VyICovCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVCwJLyogYmFja2VuZCBp cyBibG9ja2luZyByZWNvdmVyeSwgY2hlY2sKIAkJCQkJCQkJICogUEdQUk9DLT5wZW5kaW5n UmVjb3ZlcnlDb25mbGljdHMgZm9yIHRoZQogCQkJCQkJCQkgKiByZWFzb24gKi8KLS0gCjIu NDcuMwoK --------------WzeNeixNPsQ0a7SXozrFhDu6 Content-Type: text/x-patch; charset=UTF-8; name="v13-0005-Move-CHECK_FOR_INTERRUPTS-and-friends-to-new-ipc.patch" Content-Disposition: attachment; filename*0="v13-0005-Move-CHECK_FOR_INTERRUPTS-and-friends-to-new-ipc.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBiNmRkMjRmZWM2N2Y1ZTlhNGUyNmVjYjRmZTdiYjc0ODdiYWZhZjMxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMjQgSnVuIDIwMjYgMTk6MDc6MTggKzAzMDAK U3ViamVjdDogW1BBVENIIHYxMyA1LzldIE1vdmUgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBh bmQgZnJpZW5kcyB0byBuZXcKIGlwYy9pbnRlcnJ1cHQuaCBoZWFkZXIKCi0tLQogY29udHJp Yi9hbWNoZWNrL3ZlcmlmeV9naW4uYyAgICAgICAgICAgICAgICAgIHwgICAxICsKIGNvbnRy aWIvYW1jaGVjay92ZXJpZnlfaGVhcGFtLmMgICAgICAgICAgICAgICB8ICAgMiArLQogY29u dHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYyAgICAgICAgICAgICAgIHwgICAyICstCiBj b250cmliL2Jsb29tL2JsaW5zZXJ0LmMgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0K IGNvbnRyaWIvZmlsZV9mZHcvZmlsZV9mZHcuYyAgICAgICAgICAgICAgICAgICB8ICAgMSAr CiBjb250cmliL2hzdG9yZV9wbHBlcmwvaHN0b3JlX3BscGVybC5jICAgICAgICAgfCAgIDIg Ky0KIGNvbnRyaWIvanNvbmJfcGxwZXJsL2pzb25iX3BscGVybC5jICAgICAgICAgICB8ICAg MSArCiBjb250cmliL2x0cmVlL2xxdWVyeV9vcC5jICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKwogY29udHJpYi9wZ19wcmV3YXJtL3BnX3ByZXdhcm0uYyAgICAgICAgICAgICAgIHwg ICAxICsKIGNvbnRyaWIvcGdfc3VyZ2VyeS9oZWFwX3N1cmdlcnkuYyAgICAgICAgICAgICB8 ICAgMSArCiBjb250cmliL3BnX3RyZ20vdHJnbV9vcC5jICAgICAgICAgICAgICAgICAgICAg fCAgIDIgKy0KIGNvbnRyaWIvcGdfdmlzaWJpbGl0eS9wZ192aXNpYmlsaXR5LmMgICAgICAg ICB8ICAgMiArLQogY29udHJpYi9wZ193YWxpbnNwZWN0L3BnX3dhbGluc3BlY3QuYyAgICAg ICAgIHwgICAxICsKIGNvbnRyaWIvcGdjcnlwdG8vY3J5cHQtYmxvd2Zpc2guYyAgICAgICAg ICAgICB8ICAgMyArLQogY29udHJpYi9wZ2NyeXB0by9jcnlwdC1kZXMuYyAgICAgICAgICAg ICAgICAgIHwgICAzICstCiBjb250cmliL3BnY3J5cHRvL2NyeXB0LXNoYS5jICAgICAgICAg ICAgICAgICAgfCAgIDIgKy0KIGNvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0YXBwcm94LmMg ICAgICAgICAgICB8ICAgMSArCiBjb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdGluZGV4LmMg ICAgICAgICAgICAgfCAgIDEgKwogY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5j ICAgICAgICAgICAgIHwgICAxICsKIGNvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24u YyAgICAgICAgICAgICB8ICAgMSArCiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19m ZHcuYyAgICAgICAgICAgfCAgIDEgKwogY29udHJpYi90c21fc3lzdGVtX3Jvd3MvdHNtX3N5 c3RlbV9yb3dzLmMgICAgIHwgICAyICstCiBjb250cmliL3RzbV9zeXN0ZW1fdGltZS90c21f c3lzdGVtX3RpbWUuYyAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW4uYyAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4v YnJpbl9wYWdlb3BzLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluX3Jldm1hcC5jICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vdG9hc3RfaW50ZXJuYWxzLmMgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNz L2dpbi9naW5idHJlZS5jICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nl c3MvZ2luL2dpbmRhdGFwYWdlLmMgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9naW4vZ2luZmFzdC5jICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9h Y2Nlc3MvZ2luL2dpbmdldC5jICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQv YWNjZXNzL2dpbi9naW5pbnNlcnQuYyAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvZ2luL2dpbnV0aWwuYyAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9naW4vZ2ludmFjdXVtLmMgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFj a2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgICAgICAgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RnZXQuYyAgICAgICAgICAgICB8ICAgMiArLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZhY3V1bS5jICAgICAgICAgIHwgICAyICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMgICAgICAgICAgICAgICAgfCAgIDIgKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYyAgICAgICAgICB8ICAgMiAr LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaG92ZmwuYyAgICAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNocGFnZS5jICAgICAgICAgICAgfCAg IDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hzZWFyY2guYyAgICAgICAgICB8 ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHNvcnQuYyAgICAgICAgICAg IHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAg ICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAg ICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFw LmMgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVw LmMgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5z ZXJ0LmMgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRw YWdlLmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c2VhcmNoLmMgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0 L3NwZ2RvaW5zZXJ0LmMgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdp c3Qvc3BnaW5zZXJ0LmMgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGdzY2FuLmMgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv c3BnaXN0L3NwZ3ZhY3V1bS5jICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL2dlbmVyaWNfeGxvZy5jICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9zbHJ1LmMgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYyAgICAgICAgfCAgIDIgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d3YWl0LmMgICAgICAgICB8ICAgMiArLQogc3Jj L2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXAuYyAgICAgICAgICAgICAgIHwgICAyICstCiBz cmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF90aHJvdHRsZS5jICAgICAgfCAgIDIgKy0K IHNyYy9iYWNrZW5kL2JhY2t1cC93YWxzdW1tYXJ5ZnVuY3MuYyAgICAgICAgICB8ICAgMiAr LQogc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RwYXJzZS55ICAgICAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2NhdGFsb2cuYyAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAgICAgIHwg ICAyICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N0b3JhZ2UuYyAgICAgICAgICAgICAgICAg fCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyAgICAgICAgICAgICAg ICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyAgICAgICAgICAg ICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMgICAgICAg ICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAg ICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jICAgICAg ICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNt ZHMuYyAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMgICAg ICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2tfd29y a2VyLmMgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2Uu YyAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0u YyAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uYyAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVj UHJvY25vZGUuYyAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1NSRi5jICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQWdnLmMgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUFwcGVuZC5jICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQml0bWFwSGVhcHNjYW4uYyAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYyAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQ3VzdG9tLmMgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVHYXRoZXIuYyAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYyAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVHcm91cC5jICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUhhc2guYyAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jICAgICAgICAgICB8ICAgMiArLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgICAgICB8ICAgMiArLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jICAgICAgICAgIHwgICAyICstCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYyAgICAgICAgICAgICAgfCAgIDIgKy0K IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jICAgICAgICAgICB8ICAgMiAr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMgICAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMgICAgICAgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyAgICAgICAgfCAg IDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYyAgICAgICAgICB8 ICAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgICAgICAg IHwgICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYyAgICAgICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMgICAg ICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9u LmMgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYyAgICAg ICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMgICAg ICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jICAg ICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnBsYW4u YyAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVG dW5jc2Nhbi5jICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNj YW4uYyAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5p cXVlLmMgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVX aW5kb3dBZ2cuYyAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9saWIvYmlwYXJ0aXRl X21hdGNoLmMgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvbGlicHEvYXV0aC5j ICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9saWJwcS9wcWNv bW0uYyAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2xpYnBxL3Bx bXEuYyAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvb3B0aW1p emVyL3ByZXAvcHJlcGpvaW50cmVlLmMgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL3BhdGhub2RlLmMgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9vcHRp bWl6ZXIvdXRpbC9wcmVkdGVzdC5jICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3Bh cnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQv cG9ydC93aW4zMl9zZW1hLmMgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5jICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jICAgICAgICAgfCAgIDIgKy0KIHNyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvZGF0YWNoZWNrc3VtX3N0YXRlLmMgICB8ICAgMiArLQogc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYyAgICAgICAgICAgIHwgICAxICsKIHNy Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvYmFja2VuZC9wb3N0bWFzdGVyL3N0YXJ0dXAuYyAgICAgICAgICAgICAgfCAgIDEgKwog c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMgICAgICAgIHwgICAyICst CiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHdyaXRlci5jICAgICAgICAgICAgfCAgIDIg Ky0KIC4uLi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYyAgICAgICB8ICAg MyArLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwg ICAxICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAgICB8 ICAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMgICAg IHwgICAyICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxjdGwu YyAgfCAgIDIgKy0KIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jICAg ICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4u YyAgICAgIHwgICAyICstCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVy LmMgICAgICAgfCAgIDIgKy0KIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL3NlcXVlbmNlc3lu Yy5jICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Ns b3RzeW5jLmMgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90 YWJsZXN5bmMuYyAgIHwgICAyICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMg ICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNy ZXAuYyAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fs cmVjZWl2ZXIuYyAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9h aW8uYyAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8v YWlvX2NhbGxiYWNrLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2Fp by9haW9faW8uYyAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv YWlvL21ldGhvZF9pb191cmluZy5jICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9haW8vbWV0aG9kX3dvcmtlci5jICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9zdG9y YWdlL2ZpbGUvYnVmZmlsZS5jICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3N0 b3JhZ2UvZmlsZS9jb3B5ZGlyLmMgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQv c3RvcmFnZS9maWxlL2ZkLmMgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2Vu ZC9zdG9yYWdlL2ZyZWVzcGFjZS9mcmVlc3BhY2UuYyAgICAgfCAgIDIgKy0KIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL2RzbS5jICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9pcGMuYyAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jICAgICAgICAgIHwgICAyICstCiBzcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zaG1fbXEuYyAgICAgICAgICAgICAgfCAgIDIgKy0KIHNy Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaWduYWxmdW5jcy5jICAgICAgICAgfCAgIDIgKy0K IHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyAgICAgICAgICAgICB8ICAgMiAr LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jIHwgICAy ICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jICAgICAgICAgICAgICAgfCAg IDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMgICAgICAgICAgICAgICB8 ICAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jICAgICAgICAgICAg IHwgICAyICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jICAgICAgICAgICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvcGFnZS9idWZwYWdlLmMgICAgICAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5jICAgICAgICAg ICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3Rjb3AvZmFzdHBhdGguYyAgICAgICAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jICAgICAgICAgICAg ICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3RzZWFyY2gvd3BhcnNlcl9kZWYuYyAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvZGJzaXplLmMgICAg ICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2dlb19vcHMuYyAg ICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aC5j ICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhf ZXhlYy5jICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRo X2dyYW0ueSAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvbGlrZS5j ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVy aWMuYyAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvb3Jh Y2xlX2NvbXBhdC5jICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9v cmRlcmVkc2V0YWdncy5jICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC91dGlscy9hZHQv cnVsZXV0aWxzLmMgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3RzcXVlcnlfcmV3cml0ZS5jICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC90c3ZlY3Rvcl9vcC5jICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvdmFybGVuYS5jICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL2ludmFsLmMgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC91dGls cy9pbml0L2dsb2JhbHMuYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy90aW1lb3V0LmMgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3V0 aWxzL21tZ3IvbWN4dC5jICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC91 dGlscy9zb3J0L3Fzb3J0X2ludGVycnVwdGlibGUuYyAgfCAgIDIgKy0KIHNyYy9iYWNrZW5k L3V0aWxzL3NvcnQvdHVwbGVzb3J0LmMgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tl bmQvdXRpbHMvc29ydC90dXBsZXN0b3JlLmMgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFj a2VuZC91dGlscy90aW1lL2NvbWJvY2lkLmMgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9j b21tb24vc2NyYW0tY29tbW9uLmMgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY1NjYW4uaCAgICAgICAgICAgICAgIHwgICAyICstCiBz cmMvaW5jbHVkZS9pcGMvaW50ZXJydXB0LmggICAgICAgICAgICAgICAgICAgfCAxOTIgKysr KysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS1mZS1oZWxwZXJz LmggICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL21pc2NhZG1pbi5oICAgICAgICAgICAg ICAgICAgICAgICB8IDEyOCAtLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL3JlZ2V4L3JlZ2N1 c3RvbS5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9iYWNr ZW5kX3N0YXR1cy5oICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvcGdz dGF0X2ludGVybmFsLmggICAgICAgICAgIHwgICAxICsKIHNyYy9wbC9wbHBlcmwvcGxwZXJs LmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvcGwvcGxwZ3NxbC9zcmMv cGxfZXhlYy5jICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9wb3J0L3BnX251bWEu YyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArLQogLi4uL2luamVjdGlvbl9w b2ludHMvcmVncmVzc19pbmplY3Rpb24uYyAgICAgIHwgICAyICstCiAuLi4vbW9kdWxlcy90 ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1hcHNldC5jICAgfCAgIDIgKy0KIC4uLi90ZXN0X2Js b29tZmlsdGVyL3Rlc3RfYmxvb21maWx0ZXIuYyAgICAgICB8ICAgMiArLQogLi4uL21vZHVs ZXMvdGVzdF9zYXNscHJlcC90ZXN0X3Nhc2xwcmVwLmMgICAgIHwgICAyICstCiBzcmMvdGVz dC9tb2R1bGVzL3Rlc3Rfc2htX21xL3NldHVwLmMgICAgICAgICAgfCAgIDEgKwogc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X3NobV9tcS90ZXN0LmMgICAgICAgICAgIHwgICAyICstCiBzcmMv dGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3dvcmtlci5jICAgICAgICAgfCAgIDIgKy0KIC4u Li9tb2R1bGVzL3hpZF93cmFwYXJvdW5kL3hpZF93cmFwYXJvdW5kLmMgICB8ICAgMiArLQog c3JjL3Rlc3QvcmVncmVzcy9yZWdyZXNzLmMgICAgICAgICAgICAgICAgICAgIHwgICAyICst CiAyMTUgZmlsZXMgY2hhbmdlZCwgNDExIGluc2VydGlvbnMoKyksIDI3MiBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9pcGMvaW50ZXJydXB0LmgKCmRp ZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X2dpbi5jIGIvY29udHJpYi9hbWNo ZWNrL3ZlcmlmeV9naW4uYwppbmRleCBhYmZhZDA3ZDVlNC4uMzE5YzEwMDhjNGQgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfZ2luLmMKKysrIGIvY29udHJpYi9hbWNo ZWNrL3ZlcmlmeV9naW4uYwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9n aW5fcHJpdmF0ZS5oIgogI2luY2x1ZGUgImFjY2Vzcy9uYnRyZWUuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX2FtLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUg InV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAi dmVyaWZ5X2NvbW1vbi5oIgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9o ZWFwYW0uYyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfaGVhcGFtLmMKaW5kZXggMjBmZjU4 YWE3ODIuLmQzYjFlNTc4N2Y5IDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svdmVyaWZ5 X2hlYXBhbS5jCisrKyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfaGVhcGFtLmMKQEAgLTIy LDcgKzIyLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19jbGFzcy5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKLSNpbmNsdWRlICJtaXNj YWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJvY2FycmF5LmgiCmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svdmVyaWZ5 X25idHJlZS5jIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwppbmRleCAzZWYy ZDY2ZjgyNi4uNGZmMmRmZWQ2MTggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay92ZXJp ZnlfbmJ0cmVlLmMKKysrIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwpAQCAt MzUsOCArMzUsOCBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfYW0uaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX29wZmFtaWx5X2QuaCIKICNpbmNsdWRlICJjb21tb24vcGdfcHJuZy5oIgor I2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJsaWIvYmxvb21maWx0ZXIu aCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIK ICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgpk aWZmIC0tZ2l0IGEvY29udHJpYi9ibG9vbS9ibGluc2VydC5jIGIvY29udHJpYi9ibG9vbS9i bGluc2VydC5jCmluZGV4IGRmMjQ4NTZkOWFlLi41ZTc3NDc5OGRhMCAxMDA2NDQKLS0tIGEv Y29udHJpYi9ibG9vbS9ibGluc2VydC5jCisrKyBiL2NvbnRyaWIvYmxvb20vYmxpbnNlcnQu YwpAQCAtMTYsNyArMTYsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9nZW5lcmljX3hsb2cuaCIK ICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1ZGUgImJsb29tLmgiCi0jaW5j bHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1 ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAj aW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZmlsZV9m ZHcvZmlsZV9mZHcuYyBiL2NvbnRyaWIvZmlsZV9mZHcvZmlsZV9mZHcuYwppbmRleCAzM2Ez N2Q4MzJjZS4uZjY4NGZkMDE0ZWIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvZmlsZV9mZHcvZmls ZV9mZHcuYworKysgYi9jb250cmliL2ZpbGVfZmR3L2ZpbGVfZmR3LmMKQEAgLTMwLDYgKzMw LDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgImZvcmVp Z24vZmR3YXBpLmgiCiAjaW5jbHVkZSAiZm9yZWlnbi9mb3JlaWduLmgiCisjaW5jbHVkZSAi aXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5v ZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvaHN0b3JlX3BscGVybC9oc3RvcmVfcGxwZXJsLmMgYi9jb250 cmliL2hzdG9yZV9wbHBlcmwvaHN0b3JlX3BscGVybC5jCmluZGV4IDMzNmVhZDY1YTE4Li42 YThlNDQ2MTAxNSAxMDA2NDQKLS0tIGEvY29udHJpYi9oc3RvcmVfcGxwZXJsL2hzdG9yZV9w bHBlcmwuYworKysgYi9jb250cmliL2hzdG9yZV9wbHBlcmwvaHN0b3JlX3BscGVybC5jCkBA IC0yLDcgKzIsNyBAQAogCiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUgImhzdG9yZS9o c3RvcmUuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJy dXB0LmgiCiAjaW5jbHVkZSAicGxwZXJsLmgiCiAKIFBHX01PRFVMRV9NQUdJQ19FWFQoCmRp ZmYgLS1naXQgYS9jb250cmliL2pzb25iX3BscGVybC9qc29uYl9wbHBlcmwuYyBiL2NvbnRy aWIvanNvbmJfcGxwZXJsL2pzb25iX3BscGVybC5jCmluZGV4IDk3ZDE0N2NjNjVhLi5jNGVh NzhkM2FmNSAxMDA2NDQKLS0tIGEvY29udHJpYi9qc29uYl9wbHBlcmwvanNvbmJfcGxwZXJs LmMKKysrIGIvY29udHJpYi9qc29uYl9wbHBlcmwvanNvbmJfcGxwZXJsLmMKQEAgLTMsNiAr Myw3IEBACiAjaW5jbHVkZSA8bWF0aC5oPgogCiAjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1 ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRl ICJwbHBlcmwuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCmRpZmYgLS1naXQg YS9jb250cmliL2x0cmVlL2xxdWVyeV9vcC5jIGIvY29udHJpYi9sdHJlZS9scXVlcnlfb3Au YwppbmRleCBlNmExOTY5YzNkMy4uYzZkMTc3OWI3OTkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv bHRyZWUvbHF1ZXJ5X29wLmMKKysrIGIvY29udHJpYi9sdHJlZS9scXVlcnlfb3AuYwpAQCAt OCw2ICs4LDcgQEAKICNpbmNsdWRlIDxjdHlwZS5oPgogCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19jb2xsYXRpb24uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAi bHRyZWUuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJ1dGlscy9hcnJh eS5oIgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19wcmV3YXJtL3BnX3ByZXdhcm0uYyBiL2Nv bnRyaWIvcGdfcHJld2FybS9wZ19wcmV3YXJtLmMKaW5kZXggYzI3MTYwODY2OTMuLjY4NTVi ZGM2ZDkzIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3ByZXdhcm0vcGdfcHJld2FybS5jCisr KyBiL2NvbnRyaWIvcGdfcHJld2FybS9wZ19wcmV3YXJtLmMKQEAgLTE4LDYgKzE4LDcgQEAK ICNpbmNsdWRlICJhY2Nlc3MvcmVsYXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL2luZGV4 LmgiCiAjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNp bmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvbG1nci5oIgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdXJnZXJ5 L2hlYXBfc3VyZ2VyeS5jIGIvY29udHJpYi9wZ19zdXJnZXJ5L2hlYXBfc3VyZ2VyeS5jCmlu ZGV4IGI4Y2UxMDk1NzgyLi4xMjYzYzdiNzZlYyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19z dXJnZXJ5L2hlYXBfc3VyZ2VyeS5jCisrKyBiL2NvbnRyaWIvcGdfc3VyZ2VyeS9oZWFwX3N1 cmdlcnkuYwpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5 bWFwLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX2FtX2QuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJ1 dGlscy9hY2wuaCIKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfdHJnbS90cmdtX29wLmMgYi9j b250cmliL3BnX3RyZ20vdHJnbV9vcC5jCmluZGV4IDIyYmNjM2MzMzYxLi43OTYzNGRlYjFl YyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ190cmdtL3RyZ21fb3AuYworKysgYi9jb250cmli L3BnX3RyZ20vdHJnbV9vcC5jCkBAIC04LDggKzgsOCBAQAogI2luY2x1ZGUgImNhdGFsb2cv cGdfY29sbGF0aW9uX2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNs dWRlICJjb21tb24vaW50LmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1 ZGUgImxpYi9xdW5pcXVlLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi dHJnbS5oIgogI2luY2x1ZGUgInRzZWFyY2gvdHNfbG9jYWxlLmgiCiAjaW5jbHVkZSAidXRp bHMvZm9ybWF0dGluZy5oIgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ192aXNpYmlsaXR5L3Bn X3Zpc2liaWxpdHkuYyBiL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9wZ192aXNpYmlsaXR5LmMK aW5kZXggZGZhYjBiNjRjZjUuLmZiOTdiZmJhNTQxIDEwMDY0NAotLS0gYS9jb250cmliL3Bn X3Zpc2liaWxpdHkvcGdfdmlzaWJpbGl0eS5jCisrKyBiL2NvbnRyaWIvcGdfdmlzaWJpbGl0 eS9wZ192aXNpYmlsaXR5LmMKQEAgLTE3LDcgKzE3LDcgQEAKICNpbmNsdWRlICJjYXRhbG9n L3BnX3R5cGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3N0b3JhZ2VfeGxvZy5oIgogI2luY2x1 ZGUgImZ1bmNhcGkuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMv aW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJz dG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgpkaWZmIC0t Z2l0IGEvY29udHJpYi9wZ193YWxpbnNwZWN0L3BnX3dhbGluc3BlY3QuYyBiL2NvbnRyaWIv cGdfd2FsaW5zcGVjdC9wZ193YWxpbnNwZWN0LmMKaW5kZXggNGNmNmU0MWUyZjUuLjEzYTkz ZjM1ZWIxIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3dhbGluc3BlY3QvcGdfd2FsaW5zcGVj dC5jCisrKyBiL2NvbnRyaWIvcGdfd2FsaW5zcGVjdC9wZ193YWxpbnNwZWN0LmMKQEAgLTIw LDYgKzIwLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3N0YXRzLmgiCiAjaW5jbHVkZSAi YWNjZXNzL3hsb2d1dGlscy5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJp cGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicG9y dC9wZ19iaXR1dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCmRpZmYgLS1naXQg YS9jb250cmliL3BnY3J5cHRvL2NyeXB0LWJsb3dmaXNoLmMgYi9jb250cmliL3BnY3J5cHRv L2NyeXB0LWJsb3dmaXNoLmMKaW5kZXggNTYzMzkzYzkyODQuLjQwYjlhZDFmYTk0IDEwMDY0 NAotLS0gYS9jb250cmliL3BnY3J5cHRvL2NyeXB0LWJsb3dmaXNoLmMKKysrIGIvY29udHJp Yi9wZ2NyeXB0by9jcnlwdC1ibG93ZmlzaC5jCkBAIC0zMyw3ICszMyw4IEBACiAgKi8KIAog I2luY2x1ZGUgInBvc3RncmVzLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisKKyNpbmNs dWRlICJpcGMvaW50ZXJydXB0LmgiCiAKICNpbmNsdWRlICJweC1jcnlwdC5oIgogI2luY2x1 ZGUgInB4LmgiCmRpZmYgLS1naXQgYS9jb250cmliL3BnY3J5cHRvL2NyeXB0LWRlcy5jIGIv Y29udHJpYi9wZ2NyeXB0by9jcnlwdC1kZXMuYwppbmRleCA5OGMzMGVhMTIyZS4uMWVlMjdh OTRjZGYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdjcnlwdG8vY3J5cHQtZGVzLmMKKysrIGIv Y29udHJpYi9wZ2NyeXB0by9jcnlwdC1kZXMuYwpAQCAtNjEsNyArNjEsOCBAQAogICovCiAK ICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorCisjaW5j bHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInBvcnQvcGdfYnN3YXAuaCIKIAog I2luY2x1ZGUgInB4LWNyeXB0LmgiCmRpZmYgLS1naXQgYS9jb250cmliL3BnY3J5cHRvL2Ny eXB0LXNoYS5jIGIvY29udHJpYi9wZ2NyeXB0by9jcnlwdC1zaGEuYwppbmRleCA4MTkxYmEw MmIyMy4uOGUwNDI0OWVmOGEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdjcnlwdG8vY3J5cHQt c2hhLmMKKysrIGIvY29udHJpYi9wZ2NyeXB0by9jcnlwdC1zaGEuYwpAQCAtNDYsOCArNDYs OCBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJjb21tb24vc3RyaW5n LmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFy LmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCiAKICNpbmNsdWRlICJweC1jcnlwdC5oIgog I2luY2x1ZGUgInB4LmgiCmRpZmYgLS1naXQgYS9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3Rh dGFwcHJveC5jIGIvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRhcHByb3guYwppbmRleCAy MWUwYjUwZmI0Yi4uOGRlNjYyNGJmZjEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdzdGF0dHVw bGUvcGdzdGF0YXBwcm94LmMKKysrIGIvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRhcHBy b3guYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfYW1fZC5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNp bmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZyZWVzcGFjZS5o IgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRpbmRleC5jIGIvY29u dHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRpbmRleC5jCmluZGV4IDNhM2YyNjM3YmQ5Li5mYjk1 OGIwMTk2NSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRpbmRleC5j CisrKyBiL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0aW5kZXguYwpAQCAtMzUsNiArMzUs NyBAQAogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19hbS5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJy dXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZt Z3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3JlYWRfc3RyZWFtLmgiCmRpZmYgLS1naXQgYS9j b250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMgYi9jb250cmliL3Bnc3RhdHR1cGxl L3Bnc3RhdHR1cGxlLmMKaW5kZXggNmE3ZjhjYjRhN2MuLmU4M2IxYmVmODc4IDEwMDY0NAot LS0gYS9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMKKysrIGIvY29udHJpYi9w Z3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi Y2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtX2QuaCIKICNp bmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9sbWdyLmgiCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9j b25uZWN0aW9uLmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKaW5kZXgg YWFiMjE2OTU5NzkuLjc3ZjBjMWNmODJjIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVz X2Zkdy9jb25uZWN0aW9uLmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlv bi5jCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKICNpbmNs dWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3R1cGxlc3RvcmUuaCIK KyNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAKIC8qCiAgKiBDb25uZWN0aW9uIGNh Y2hlIGhhc2ggdGFibGUgZW50cnkKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L3Bvc3RncmVzX2Zkdy5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMK aW5kZXggNmRiYWU1ODNlY2MuLjAwYWYxY2U4NWVlIDEwMDY0NAotLS0gYS9jb250cmliL3Bv c3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9w b3N0Z3Jlc19mZHcuYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL3Nw aS5oIgogI2luY2x1ZGUgImZvcmVpZ24vZmR3YXBpLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5o IgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK ICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVu Y3MuaCIKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdHNtX3N5c3RlbV9yb3dzL3RzbV9zeXN0ZW1f cm93cy5jIGIvY29udHJpYi90c21fc3lzdGVtX3Jvd3MvdHNtX3N5c3RlbV9yb3dzLmMKaW5k ZXggYTlhMjQ4MzM3MzAuLmZhNWZiNDAxYTY3IDEwMDY0NAotLS0gYS9jb250cmliL3RzbV9z eXN0ZW1fcm93cy90c21fc3lzdGVtX3Jvd3MuYworKysgYi9jb250cmliL3RzbV9zeXN0ZW1f cm93cy90c21fc3lzdGVtX3Jvd3MuYwpAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAi YWNjZXNzL3RzbWFwaS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgotI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRl ICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAidXRpbHMvc2FtcGxpbmcuaCIK IApkaWZmIC0tZ2l0IGEvY29udHJpYi90c21fc3lzdGVtX3RpbWUvdHNtX3N5c3RlbV90aW1l LmMgYi9jb250cmliL3RzbV9zeXN0ZW1fdGltZS90c21fc3lzdGVtX3RpbWUuYwppbmRleCA0 ODE0YzMxYmM2Zi4uYjUwYTVmNjA5MjMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdHNtX3N5c3Rl bV90aW1lL3RzbV9zeXN0ZW1fdGltZS5jCisrKyBiL2NvbnRyaWIvdHNtX3N5c3RlbV90aW1l L3RzbV9zeXN0ZW1fdGltZS5jCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJhY2Nl c3MvdHNtYXBpLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCi0jaW5jbHVkZSAi bWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm9w dGltaXplci9vcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJwb3J0YWJpbGl0eS9pbnN0cl90aW1l LmgiCiAjaW5jbHVkZSAidXRpbHMvc2FtcGxpbmcuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4u YwppbmRleCBiZGIzMDc1MmUwOS4uNzc0MzlmZWIwZjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluLmMKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1 bWVudC5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92 YWN1dW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9wYWdlb3BzLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluX3BhZ2VvcHMuYwppbmRleCA3ZGE5N2JlYzQzYi4uMzA4ZmZkN2U1Njcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fcGFnZW9wcy5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fcGFnZW9wcy5jCkBAIC0xNSw3ICsx NSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL2JyaW5fcmV2bWFwLmgiCiAjaW5jbHVkZSAiYWNj ZXNzL2JyaW5feGxvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCi0jaW5j bHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mcmVlc3BhY2UuaCIK ICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9icmluL2JyaW5fcmV2bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu X3Jldm1hcC5jCmluZGV4IDIzMzM1NWNiMmQ1Li41MjZiYTc0N2M2MCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9yZXZtYXAuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvYnJpbi9icmluX3Jldm1hcC5jCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVk ZSAiYWNjZXNzL2JyaW5feGxvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy9ybWdyLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNp bmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIK ICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2NvbW1vbi90b2FzdF9pbnRlcm5hbHMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21t b24vdG9hc3RfaW50ZXJuYWxzLmMKaW5kZXggNzdkNDJlN2VkNjUuLjZhMDAzNDU3MmM5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3RvYXN0X2ludGVybmFscy5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdG9hc3RfaW50ZXJuYWxzLmMKQEAg LTIxLDcgKzIxLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvdG9hc3RfaW50ZXJuYWxzLmgiCiAj aW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIK LSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAj aW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNp bmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2luL2dpbmJ0cmVlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmJ0cmVlLmMK aW5kZXggM2QzYTlkYTU2YjEuLmM0ZjI4YmZiMTFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvZ2luL2dpbmJ0cmVlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW5idHJlZS5jCkBAIC0xNyw3ICsxNyw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL2dpbl9wcml2 YXRlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2dpbnhsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3Mv eGxvZ2luc2VydC5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9p bnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgogI2luY2x1ZGUg InV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmRhdGFwYWdlLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmRhdGFwYWdlLmMKaW5kZXggYzVkN2RiMjgwNzcu LjA2Yzk5NmY2ZmMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmRh dGFwYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5kYXRhcGFnZS5jCkBA IC0xNyw4ICsxNyw4IEBACiAjaW5jbHVkZSAiYWNjZXNzL2dpbl9wcml2YXRlLmgiCiAjaW5j bHVkZSAiYWNjZXNzL2dpbnhsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5o IgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJsaWIvaWxpc3QuaCIK LSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5o IgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2luL2dpbmZhc3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZmFzdC5j CmluZGV4IGY1MDg0OGViNjVhLi5kZGY0MTQ2NjBlMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpbi9naW5mYXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW5mYXN0LmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2Vy dC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfYW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy92 YWN1dW0uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibWlzY2Fk bWluLmgiCiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgogI2luY2x1ZGUgInBvc3Rt YXN0ZXIvYXV0b3ZhY3V1bS5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dp bi9naW5nZXQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZ2V0LmMKaW5kZXggNmIx NDhlNjlhOGUuLjBlZjU1ZDMwNGI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2luL2dpbmdldC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZ2V0LmMKQEAg LTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvZ2luX3ByaXZhdGUuaCIKICNpbmNs dWRlICJhY2Nlc3MvcmVsc2Nhbi5oIgogI2luY2x1ZGUgImNvbW1vbi9wZ19wcm5nLmgiCisj aW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCmluZGV4IGNiOWVkM2I1NjNjLi5lYmU5 MmQ5YmExZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCkBAIC0yNCw3ICsy NCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNsdWRlICJj b21tYW5kcy9wcm9ncmVzcy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIK LSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAj aW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5j bHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2ludXRpbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW51dGlsLmMKaW5k ZXggZTdjYmE4MWQ0NzcuLjQ1ZTlhYmQ1YWIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2luL2dpbnV0aWwuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnV0 aWwuYwpAQCAtMjIsNyArMjIsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3Byb2dyZXNzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFj dXVtLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVw dC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaW5kZXhmc20uaCIKICNpbmNsdWRlICJ1dGlscy9i dWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2luZGV4X3NlbGZ1bmNzLmgiCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2dpbi9naW52YWN1dW0uYwppbmRleCA4NDA1NDNlYjY2NC4uMWE1Nzc5N2VhMTcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludmFjdXVtLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYwpAQCAtMTgsNiArMTgsNyBAQAog I2luY2x1ZGUgImFjY2Vzcy9naW54bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNl cnQuaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKKyNpbmNsdWRlICJpcGMvaW50 ZXJydXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9p bmRleGZzbS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3Qv Z2lzdC5jCmluZGV4IDg1NjVlMjI1YmU3Li40NjhiNTNiMzc4MyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9n aXN0L2dpc3QuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5z ZXJ0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNsdWRlICJj b21tYW5kcy92YWN1dW0uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVk ZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3RidWlsZC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxk LmMKaW5kZXggN2Y1N2M3ODdmNGMuLjhmYjI5ZThmODUzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0YnVpbGQuYwpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9n aXN0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1ZGUg ImFjY2Vzcy94bG9naW5zZXJ0LmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogI2lu Y2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9naXN0L2dpc3RnZXQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3Rn ZXQuYwppbmRleCA0ZDdjMTAwZDczNy4uNDljYWM1Y2Y1NTAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RnZXQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0Z2V0LmMKQEAgLTE4LDggKzE4LDggQEAKICNpbmNsdWRlICJhY2Nlc3MvZ2lz dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbHNjYW4uaCIKICNpbmNsdWRlICJl eGVjdXRvci9pbnN0cnVtZW50X25vZGUuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0Lmgi CiAjaW5jbHVkZSAibGliL3BhaXJpbmdoZWFwLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgi CiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIK ICNpbmNsdWRlICJ1dGlscy9mbG9hdC5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZh Y3V1bS5jCmluZGV4IDY4NmEwNDE4MDU0Li43MzBjYTAzZWU2ZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3R2YWN1dW0uYwpAQCAtMTgsOCArMTgsOCBAQAogI2luY2x1ZGUgImFj Y2Vzcy9naXN0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJsaWIvaW50ZWdlcnNldC5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgogI2luY2x1ZGUgInN0b3JhZ2UvaW5kZXhmc20uaCIKICNpbmNsdWRlICJzdG9yYWdlL2xt Z3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3JlYWRfc3RyZWFtLmgiCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFz aC9oYXNoLmMKaW5kZXggOGQ4Y2QzMGRjMzguLjdlZWM5MGU4YzIxIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hhc2gvaGFzaC5jCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dp bnNlcnQuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcm9ncmVzcy5oIgogI2luY2x1ZGUgImNv bW1hbmRzL3ZhY3V1bS5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlw Yy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKICNpbmNsdWRl ICJvcHRpbWl6ZXIvcGxhbmNhdC5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCmluZGV4IDMzOTViYmMxM2Y4Li43MDdiNjFjMTRh ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYwpAQCAtMTgsNyArMTgs NyBAQAogI2luY2x1ZGUgImFjY2Vzcy9oYXNoLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hhc2hf eGxvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCi0jaW5jbHVkZSAibWlz Y2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hvdmZsLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNob3ZmbC5jCmluZGV4IGRiYzU3ZWY5NThjLi5kZGZjMzQwNDc1MCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaG92ZmwuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNob3ZmbC5jCkBAIC0yMCw3ICsyMCw3IEBACiAjaW5j bHVkZSAiYWNjZXNzL2hhc2guaCIKICNpbmNsdWRlICJhY2Nlc3MvaGFzaF94bG9nLmgiCiAj aW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIK KyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHBhZ2UuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hwYWdlLmMKaW5kZXggODA5OWIwZDAyMWYuLjc2 MWRlN2YxMjZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNocGFn ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hwYWdlLmMKQEAgLTMxLDcg KzMxLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvaGFzaC5oIgogI2luY2x1ZGUgImFjY2Vzcy9o YXNoX3hsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgotI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJw b3J0L3BnX2JpdHV0aWxzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKICNp bmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oYXNoL2hhc2hzZWFyY2guYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hzZWFy Y2guYwppbmRleCA4OWQxYzViYzZkNy4uNGM2YTg5ODBlNTIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hzZWFyY2guYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoc2VhcmNoLmMKQEAgLTE2LDggKzE2LDggQEAKIAogI2luY2x1ZGUgImFj Y2Vzcy9oYXNoLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbHNjYW4uaCIKLSNpbmNsdWRlICJt aXNjYWRtaW4uaCIKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50X25vZGUuaCIKKyNp bmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hzb3J0LmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGFzaC9oYXNoc29ydC5jCmluZGV4IDc3YmJmYWE0NjFiLi4xYmJmMGQzMzk2 NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHNvcnQuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoc29ydC5jCkBAIC0yNyw3ICsyNyw3IEBA CiAKICNpbmNsdWRlICJhY2Nlc3MvaGFzaC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3Byb2dy ZXNzLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVw dC5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMu aCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXNvcnQuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IDIyNjhjYzI3N2JjLi4zZmFkOTc3ZmM5ZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0zNSw3 ICszNSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9zdG9yYWdlX3hsb2cuaCIKICNpbmNsdWRl ICJjb21tYW5kcy9wcm9ncmVzcy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgi Ci0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgog I2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9idWZwYWdlLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVh cC5jCmluZGV4IGZkZGRkMjMwMzViLi41M2FkNDEwMTBhMyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJhY2Nlc3Mv eGxvZ2luc2VydC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUg ImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNs dWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCAzOTM5NWFlZDBkNS4uNzVkODU1NGUxNmMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE0Myw3ICsxNDMs NyBAQAogI2luY2x1ZGUgImNvbW1vbi9pbnQuaCIKICNpbmNsdWRlICJjb21tb24vcGdfcHJu Zy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKLSNpbmNsdWRlICJtaXNj YWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicGdzdGF0 LmgiCiAjaW5jbHVkZSAicG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oIgogI2luY2x1ZGUgInBv c3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmlzaWJpbGl0eW1hcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJp bGl0eW1hcC5jCmluZGV4IDRmZDQ3MDcwMmFhLi4yNTZiODUwNzQ0OCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwpAQCAtMTAxLDcgKzEwMSw3IEBACiAj aW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxv Z2luc2VydC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ndXRpbHMuaCIKLSNpbmNsdWRlICJt aXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicG9y dC9wZ19iaXR1dGlscy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9zbWdyLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5k ZXgvZ2VuYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCmluZGV4IDE0 MDg5ODljNTY4Li5mMWFhMTQ0Zjk2YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2luZGV4L2dlbmFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMK QEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1 ZGUgImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgorI2lu Y2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgog I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMKaW5kZXggYWY3YWZmZGY0MDkuLmQ1 ODBjMmZjMDY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRl ZHVwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRkZWR1cC5jCkBAIC0x OCw3ICsxOCw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL25idHhsb2cuaCIKICNpbmNsdWRlICJh Y2Nlc3MvdGFibGVhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCi0jaW5j bHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1 ZGUgInV0aWxzL3JlbC5oIgogCiBzdGF0aWMgdm9pZCBfYnRfYm90dG9tdXBkZWxfZmluaXNo X3BlbmRpbmcoUGFnZSBwYWdlLCBCVERlZHVwU3RhdGUgc3RhdGUsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnRpbnNlcnQuYwppbmRleCBjOGFmOTdkZDIzZC4uOTVjMjk4ZGI4ZmQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYwpAQCAtMjIsOCArMjIs OCBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCiAjaW5jbHVkZSAiY29tbW9u L2ludC5oIgogI2luY2x1ZGUgImNvbW1vbi9wZ19wcm5nLmgiCisjaW5jbHVkZSAiaXBjL2lu dGVycnVwdC5oIgogI2luY2x1ZGUgImxpYi9xdW5pcXVlLmgiCi0jaW5jbHVkZSAibWlzY2Fk bWluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cmVkaWNhdGUuaCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMKaW5kZXggMDU0NzAzODYxNmUuLmRkZDgzNWQ5 YjE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYwpAQCAtMjksNiArMjks NyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dp bnNlcnQuaCIKICNpbmNsdWRlICJjb21tb24vaW50LmgiCisjaW5jbHVkZSAiaXBjL2ludGVy cnVwdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaW5k ZXhmc20uaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0c2VhcmNoLmMKaW5kZXggYWFlNmFjYjdmNTcuLjQ0YTlhYjNkYTRi IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJjaC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c2VhcmNoLmMKQEAgLTE5LDcgKzE5 LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvcmVsc2Nhbi5oIgogI2luY2x1ZGUgImFjY2Vzcy94 YWN0LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgiCi0jaW5jbHVk ZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUg InBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAi dXRpbHMvbHN5c2NhY2hlLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmlu ZGV4IDc1NmRmYTNkY2Y0Li4zZmJhOTNlOGI3YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRzb3J0LmMKQEAgLTQ5LDcgKzQ5LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL2luZGV4 LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHJvZ3Jlc3MuaCIKICNpbmNsdWRlICJleGVjdXRv ci9pbnN0cnVtZW50LmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBj L2ludGVycnVwdC5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv YnVsa193cml0ZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgi CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2RvaW5zZXJ0LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2RvaW5zZXJ0LmMKaW5kZXggN2M3Mzcx YzY5ZTguLmE4ZGZmNjljZGNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Bn aXN0L3NwZ2RvaW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdk b2luc2VydC5jCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNl cnQuaCIKICNpbmNsdWRlICJjb21tb24vaW50LmgiCiAjaW5jbHVkZSAiY29tbW9uL3BnX3By bmcuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0 LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwu aCIKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0LmMKaW5kZXggNzgwZWY2 NDZhNTQuLmMyZDdjYWY2ZjY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Bn aXN0L3NwZ2luc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5z ZXJ0LmMKQEAgLTIwLDcgKzIwLDcgQEAKICNpbmNsdWRlICJhY2Nlc3Mvc3BnaXN0X3ByaXZh dGUuaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy94 bG9naW5zZXJ0LmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2lu dGVycnVwdC5oIgogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWxrX3dyaXRlLmgiCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3NjYW4uYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bnc2Nhbi5jCmluZGV4IDJjYzVmMDZmNWQ3Li40NzVhNTBj ZGRjZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdzY2FuLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdzY2FuLmMKQEAgLTE5LDcgKzE5 LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvcmVsc2Nhbi5oIgogI2luY2x1ZGUgImFjY2Vzcy9z cGdpc3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnRfbm9kZS5o IgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIK ICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2lu Y2x1ZGUgInV0aWxzL2RhdHVtLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv c3BnaXN0L3NwZ3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1 dW0uYwppbmRleCBjNDYxZjhkYzAyZC4uODAxOTdlMTIxYjIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwpAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgImFj Y2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNs dWRlICJjb21tYW5kcy92YWN1dW0uaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNs dWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNp bmNsdWRlICJzdG9yYWdlL2luZGV4ZnNtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgi CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9nZW5lcmljX3hsb2cu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2dlbmVyaWNfeGxvZy5jCmluZGV4IDdm ODIxODZkMGQ2Li42ZWNhMjQ1MWE3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0vZ2VuZXJpY194bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0vZ2VuZXJpY194bG9nLmMKQEAgLTE2LDcgKzE2LDcgQEAKICNpbmNsdWRlICJhY2Nlc3Mv YnVmbWFzay5oIgogI2luY2x1ZGUgImFjY2Vzcy9nZW5lcmljX3hsb2cuaCIKICNpbmNsdWRl ICJhY2Nlc3MveGxvZ3V0aWxzLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVk ZSAiaXBjL2ludGVycnVwdC5oIgogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIEludGVy bmFsbHksIGEgZGVsdGEgYmV0d2VlbiBwYWdlcyBjb25zaXN0cyBvZiBhIHNldCBvZiBmcmFn bWVudHMuICBFYWNoCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9t dWx0aXhhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCmlu ZGV4IDEwY2JjMGQ3NmJkLi4xMDAwZTUzMzcwNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vbXVsdGl4YWN0LmMKQEAgLTc2LDcgKzc2LDcgQEAKICNpbmNsdWRlICJhY2Nlc3Mv eGxvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCiAjaW5jbHVkZSAiYWNj ZXNzL3hsb2d1dGlscy5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlw Yy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwZ190cmFjZS5oIgogI2luY2x1ZGUgInBnc3Rh dC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc2xydS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0vc2xydS5jCmluZGV4IDQ3ZGQ1MmQ2NzQ5Li4zOGVhYWIxMThjMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc2xydS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYwpAQCAtNjYsNyArNjYsNyBAQAogI2luY2x1ZGUg ImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKICNpbmNsdWRl ICJhY2Nlc3MveGxvZ3V0aWxzLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVk ZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vdHdvcGhhc2UuYwppbmRleCAxMDM1ZThiM2ZjNy4uM2U1YWEzNjkwZTQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYwpAQCAtOTEsNyArOTEs NyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNhdGFsb2cv c3RvcmFnZS5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4u aCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicGdfdHJhY2UuaCIK ICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9vcmlnaW4uaCIK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKaW5kZXggNjViYmFlZGE1 OWMuLjkzMGQ2MzJmNzczIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9nZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVu Y3MuYwpAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfYXV0aGlkLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgot I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNp bmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJy ZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9ndXRpbHMuYwppbmRleCBmZGMzNDFkOGZhNC4uZTUyMTM4ODM1ZjAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jCkBAIC0yMyw3ICsyMyw3IEBACiAjaW5j bHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nX2lu dGVybmFsLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2d1dGlscy5oIgotI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9y YWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMv aHNlYXJjaC5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Z3dhaXQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d3YWl0LmMKaW5kZXgg NTgyZGRlM2IwNjEuLmQyNDg1NTM4NWQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9nd2FpdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2d3YWl0LmMKQEAgLTUxLDcgKzUxLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZy5o IgogI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKICNpbmNsdWRlICJhY2Nlc3Mv eGxvZ3dhaXQuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50 ZXJydXB0LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24v d2FscmVjZWl2ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cC5jIGIvc3JjL2JhY2tlbmQvYmFja3Vw L2Jhc2ViYWNrdXAuYwppbmRleCA5Yzc5ZGFkYWFjYy4uNjI4YWQ5YTBlZDggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwLmMKKysrIGIvc3JjL2JhY2tlbmQv YmFja3VwL2Jhc2ViYWNrdXAuYwpAQCAtMjgsOCArMjgsOCBAQAogI2luY2x1ZGUgImNvbW1v bi9jb21wcmVzc2lvbi5oIgogI2luY2x1ZGUgImNvbW1vbi9maWxlX3Blcm0uaCIKICNpbmNs dWRlICJjb21tb24vZmlsZV91dGlscy5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIK ICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgog I2luY2x1ZGUgIm5vZGVzL3BnX2xpc3QuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNs dWRlICJwZ3Rhci5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNr dXBfdGhyb3R0bGUuYyBiL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX3Rocm90dGxl LmMKaW5kZXggNGQ4ZDkwZjM1NmIuLjI1NTI3Nzg0MjE3IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9iYWNrdXAvYmFzZWJhY2t1cF90aHJvdHRsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2Jh Y2t1cC9iYXNlYmFja3VwX3Rocm90dGxlLmMKQEAgLTE1LDcgKzE1LDcgQEAKICNpbmNsdWRl ICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYmFja3VwL2Jhc2ViYWNrdXBfc2luay5oIgot I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNp bmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVk ZSAidXRpbHMvdGltZXN0YW1wLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9iYWNrdXAv d2Fsc3VtbWFyeWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9iYWNrdXAvd2Fsc3VtbWFyeWZ1bmNz LmMKaW5kZXggZjgzYzE2MDQyNjMuLmRjMjdhMDkyNmQ2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9iYWNrdXAvd2Fsc3VtbWFyeWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvYmFja3Vw L3dhbHN1bW1hcnlmdW5jcy5jCkBAIC0xNiw3ICsxNiw3IEBACiAjaW5jbHVkZSAiYmFja3Vw L3dhbHN1bW1hcnkuaCIKICNpbmNsdWRlICJjb21tb24vYmxrcmVmdGFibGUuaCIKICNpbmNs dWRlICJmdW5jYXBpLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBj L2ludGVycnVwdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5oIgog I2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKICNpbmNsdWRlICJ1dGlscy9wZ19sc24u aCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290cGFyc2UueSBiL3Ny Yy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290cGFyc2UueQppbmRleCA5NDNmZjQ3MzNkMy4uYzRh ZDExYmUwYjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290cGFyc2Uu eQorKysgYi9zcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHBhcnNlLnkKQEAgLTI4LDcgKzI4 LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RhYmxlc3BhY2UuaCIKICNpbmNsdWRlICJj YXRhbG9nL3RvYXN0aW5nLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCi0jaW5j bHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1 ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvY2F0YWxvZy5jIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9jYXRhbG9nLmMKaW5kZXggN2JlNDkwMzI5MzQuLjRmMmU4NjQ1ZGFiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2NhdGFsb2cuYworKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL2NhdGFsb2cuYwpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgImNh dGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNw YWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiaXBjL2lu dGVycnVwdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInV0aWxzL2Zt Z3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eC5jCmluZGV4IDk0MDdjMzU3ZjI3Li5iOTNmYjA5N2NjYSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YwpAQCAtNTgsNyArNTgsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21kcy5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVj dXRvci5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9u b2RlRnVuY3MuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N0b3JhZ2UuYyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvc3RvcmFnZS5jCmluZGV4IGU0NDNhNDk5M2M1Li4yMTA5MTM5MjE4OSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9zdG9yYWdlLmMKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxv Z3V0aWxzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9zdG9yYWdlLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9zdG9yYWdlX3hsb2cuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRl ICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9idWxrX3dyaXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mcmVlc3BhY2UuaCIKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2FuYWx5emUuYwppbmRleCBmNjZlODBiNzU3Yy4uMWNiMDg3YTBiODMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9hbmFseXplLmMKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJl eGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIK ICNpbmNsdWRlICJmb3JlaWduL2Zkd2FwaS5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgor I2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3Mu aCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2Vfb3Blci5oIgogI2luY2x1ZGUgInBhcnNlci9w YXJzZV9yZWxhdGlvbi5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29w eWZyb20uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKaW5kZXggMDA4NzU4 NWIyYzQuLmU2YmEwMTJlN2Q2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5ZnJvbS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKQEAgLTM4 LDggKzM4LDggQEAKICNpbmNsdWRlICJleGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuaCIKICNp bmNsdWRlICJleGVjdXRvci90dXB0YWJsZS5oIgogI2luY2x1ZGUgImZvcmVpZ24vZmR3YXBp LmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFy LmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWlzY25vZGVz LmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2luY2x1ZGUgInBnc3Rh dC5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGJjb21tYW5kcy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZGJjb21tYW5kcy5jCmluZGV4IGYwODE5ZDE1YWI3Li4z OGZjZmNhOGJhNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGJjb21tYW5k cy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMuYwpAQCAtNDksOCAr NDksOCBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3NlY2xhYmVsLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgImNvbW1vbi9maWxlX3Blcm0uaCIKKyNp bmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKLSNp bmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJw b3N0bWFzdGVyL2Jnd3JpdGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCA5YWI3NGM4ZGYwYS4uOWU0YjQyNmUw YjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC00NCw4ICs0NCw4IEBACiAj aW5jbHVkZSAiY29tbWFuZHMvcHJvZ3Jlc3MuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJs ZWNtZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAi aXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCi0jaW5jbHVkZSAi bWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAi bm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvbWF0dmlldy5jCmluZGV4IGY3ZDgwMDdmNzk2Li4yZTVmYzczYmVhZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUg ImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5o IgogI2luY2x1ZGUgImV4ZWN1dG9yL3NwaS5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgor I2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNs dWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdy LmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IDQ0MGFk YjM1NmFkLi5lZDJkMjI5NmY4YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHVibGljYXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRp b25jbWRzLmMKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0u aCIKICNpbmNsdWRlICJjb21tYW5kcy9ldmVudF90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvcHVibGljYXRpb25jbWRzLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgog I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgog I2luY2x1ZGUgInBhcnNlci9wYXJzZV9jbGF1c2UuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3JlcGFjay5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMK aW5kZXggYTJhNGMyODY3NzIuLjRjNWU4ZWE3YTFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9yZXBhY2suYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2su YwpAQCAtNTgsOSArNTgsOSBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21kcy5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1 dG9yLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgImxpYnBxL3Bx Zm9ybWF0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFtcS5oIgotI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJwZ3N0 YXQuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCIKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFja193b3JrZXIuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3JlcGFja193b3JrZXIuYwppbmRleCA5ZmYyZTE0OTA0Yy4uNTg4OGE1 YTFmZTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFja193b3JrZXIu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2tfd29ya2VyLmMKQEAgLTIxLDYg KzIxLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3dhaXQuaCIKICNpbmNsdWRlICJjb21t YW5kcy9yZXBhY2suaCIKICNpbmNsdWRlICJjb21tYW5kcy9yZXBhY2tfaW50ZXJuYWwuaCIK KyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFtcS5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL3NuYXBidWlsZC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv aXBjLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwppbmRleCA1NTE2Njc2NTBiYS4uNGZj YzM2OWU0OTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwpAQCAtMzQsNyArMzQsNyBA QAogI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlX3hsb2cuaCIKICNpbmNsdWRlICJjb21t YW5kcy90YWJsZWNtZHMuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCi0jaW5jbHVkZSAibWlz Y2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm5vZGVz L21ha2VmdW5jcy5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90eXBlLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9idWZtZ3IuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKaW5kZXggYTRhYmIy OWNmNjQuLjIxZTc0MTg0YjYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92 YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpAQCAtNDIsNyAr NDIsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3Byb2dyZXNzLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvcmVwYWNrLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgiCi0jaW5jbHVk ZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUg Im5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBv c3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlv bi5jCmluZGV4IGQ5NmQ0Zjk5NDdiLi5jNTJkYzcwYjU0NCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImV4ZWN1 dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmgi CiAjaW5jbHVkZSAiZm9yZWlnbi9mZHdhcGkuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0 LmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK ICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUHJvY25vZGUuYwppbmRleCA3YzRjNjZlMzIzZi4uODFhOTc1NjgwZWUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCkBAIC0xMTcsNiArMTE3LDcgQEAKICNp bmNsdWRlICJleGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5oIgogI2luY2x1ZGUgImV4ZWN1dG9y L25vZGVXaW5kb3dBZ2cuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlV29ya3RhYmxlc2Nh bi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1NSRi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1NS Ri5jCmluZGV4IDhhZWRjYzZhNDU5Li5kOTVmMDY2ZmE0ZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1NSRi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNTUkYuYwpAQCAtMjIsNyArMjIsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWNj ZXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiZnVuY2Fw aS5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFy c2VfY29lcmNlLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdn LmMKaW5kZXggOTI1Y2FhZGQyY2UuLmRkZDAwMTliNDUyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUFnZy5jCkBAIC0yNTksNiArMjU5LDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRv ci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKICNpbmNsdWRlICJleGVj dXRvci9ub2RlQWdnLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUg ImxpYi9oeXBlcmxvZ2xvZy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUg Im5vZGVzL25vZGVGdW5jcy5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCmluZGV4 IDk4NzM1OGUyN2ZhLi4yYzY3MjE4OTEyZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBl bmQuYwpAQCAtNjIsNyArNjIsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgImV4ZWN1 dG9yL25vZGVBcHBlbmQuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJp cGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCmluZGV4IDgzZDY0NzhiYzJiLi5lMGZj ZjQ2ZDNiMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhl YXBzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2Fu LmMKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgog I2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKICNpbmNsdWRlICJleGVjdXRvci9u b2RlQml0bWFwSGVhcHNjYW4uaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRl ICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5o IgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nh bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCmluZGV4 IDc5Nzg1MTRlMWJjLi4yOGRhMzA4M2ZhNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVCaXRtYXBJbmRleHNjYW4uYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImV4 ZWN1dG9yL2luc3RydW1lbnQuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlQml0bWFwSW5k ZXhzY2FuLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5oIgorI2luY2x1 ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRl ICJub2Rlcy90aWRiaXRtYXAuaCIKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUN1c3RvbS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCmlu ZGV4IGI3Y2M4OTBjZDIwLi5iNTIwZmIxMzA3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVD dXN0b20uYwpAQCAtMTMsNyArMTMsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9wYXJhbGxlbC5o IgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Iv bm9kZUN1c3RvbS5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9p bnRlcnJ1cHQuaCIKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKICNpbmNsdWRlICJu b2Rlcy9leHRlbnNpYmxlLmgiCiAjaW5jbHVkZSAibm9kZXMvcGxhbm5vZGVzLmgiCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKaW5kZXggMTE0NjkzYWJiMzIuLmU1MDBhZTY2OGQw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCkBAIC0zNCw2ICszNCw3IEBACiAj aW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2Rl R2F0aGVyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvdHF1ZXVlLmgiCisjaW5jbHVkZSAiaXBj L2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm9wdGlt aXplci9vcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCmluZGV4IGMyYWM1ZTA3OTJjLi5kOWU0 YjU1OTMxNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1l cmdlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMKQEAg LTE5LDggKzE5LDggQEAKICNpbmNsdWRlICJleGVjdXRvci9leGVjUGFyYWxsZWwuaCIKICNp bmNsdWRlICJleGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuaCIKICNpbmNsdWRlICJleGVjdXRv ci90cXVldWUuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibGli L2JpbmFyeWhlYXAuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJvcHRp bWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYwppbmRleCAzNjk5ZDhhMzc0Ni4uNmFkOTc0MThi MWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCkBAIC0yNSw3ICsyNSw3IEBACiAj aW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9pbnN0 cnVtZW50LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZUdyb3VwLmgiCi0jaW5jbHVkZSAi bWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogCiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUhhc2guYwppbmRleCA4ODI1YmI2ZmEyMy4uYmYxMzdlMGVjNmIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYwpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg ImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlSGFzaC5o IgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVIYXNoam9pbi5oIgorI2luY2x1ZGUgImlwYy9p bnRlcnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwb3J0L3Bn X2JpdHV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVIYXNoam9pbi5jCmluZGV4IDBiMzY1ZDViNDc1Li44N2JiOTJiNTMyNyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKQEAgLTE2OSw3ICsxNjksNyBA QAogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKICNpbmNsdWRlICJleGVjdXRv ci9ub2RlSGFzaC5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVIYXNoam9pbi5oIgotI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNs dWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zaGFyZWR0dXBsZXN0 b3JlLmgiCiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzdG9yZS5oIgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCmluZGV4IDFkODMxMDQ5YjY1Li4zZGFi MzAxYTJhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVu dGFsU29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNv cnQuYwpAQCAtODAsNiArODAsNyBAQAogCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2RlYnVn LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5oIgorI2luY2x1 ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRl ICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXNvcnQuaCIKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCmluZGV4IGQ1MjAxMmU4 YTY5Li44MjFhMTc4YjA4ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUluZGV4b25seXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhv bmx5c2Nhbi5jCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1 bWVudC5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmgiCiAjaW5j bHVkZSAiZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1n ci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMv YnVpbHRpbnMuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRl eHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYwppbmRleCAz OWY2NjkxZWUzNS4uMGQ3NGI2Yzc3YWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVJbmRleHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5k ZXhzY2FuLmMKQEAgLTM2LDggKzM2LDggQEAKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRv ci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKICNpbmNsdWRlICJleGVj dXRvci9ub2RlSW5kZXhzY2FuLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2lu Y2x1ZGUgImxpYi9wYWlyaW5naGVhcC5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2lu Y2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgogI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAj aW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVMaW1pdC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMKaW5k ZXggOGY3NWNiYmVhZDIuLmQ5OWRlZDkwZTMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTGltaXQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGlt aXQuYwpAQCAtMjMsNyArMjMsNyBAQAogCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3Iu aCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlTGltaXQuaCIKLSNpbmNsdWRlICJtaXNjYWRt aW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAKIHN0YXRpYyB2b2lkIHJlY29t cHV0ZV9saW1pdHMoTGltaXRTdGF0ZSAqbm9kZSk7CiBzdGF0aWMgaW50NjQgY29tcHV0ZV90 dXBsZXNfbmVlZGVkKExpbWl0U3RhdGUgKm5vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TG9ja1Jvd3MuYwppbmRleCAzYmVlODE4YThiNC4uZTFkYWFlZDI1YmEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAi ZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlTG9ja1Jvd3Mu aCIKICNpbmNsdWRlICJmb3JlaWduL2Zkd2FwaS5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIK IAogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCmluZGV4IGU1ZjM4NzYxMmJj Li5jOGQ5NzVmOGUwNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1h dGVyaWFsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMKQEAg LTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5j bHVkZSAiZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVw dC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInV0aWxzL3R1cGxlc3Rv cmUuaCIKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKaW5kZXggZmRjYTk3ZDc0 MjYuLjExODU2Y2U3MTQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWVtb2l6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKQEAg LTcwLDYgKzcwLDcgQEAKICNpbmNsdWRlICJjb21tb24vaGFzaGZuLmgiCiAjaW5jbHVkZSAi ZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlTWVtb2l6ZS5o IgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJsaWIvaWxpc3QuaCIK ICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRleCAwMTczMDc0ZDg1ZC4u NDAwYzIwMTJiMzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJn ZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5j CkBAIC00Miw4ICs0Miw4IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNp bmNsdWRlICJleGVjdXRvci9leGVjUGFydGl0aW9uLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Iv bm9kZU1lcmdlQXBwZW5kLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1 ZGUgImxpYi9iaW5hcnloZWFwLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVk ZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVN ZXJnZWpvaW4uYwppbmRleCBmODQyMWE3NGM3NS4uYmUwZjBlY2MyMWIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKQEAgLTk2LDcgKzk2LDcgQEAKICNpbmNsdWRl ICJleGVjdXRvci9leGVjZGVidWcuaCIKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50 LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5oIgotI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ1dGls cy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IDg0NmRjNTE2YjQzLi5h MDIyNzY3OWRkOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlm eVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMK QEAgLTYzLDcgKzYzLDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCiAj aW5jbHVkZSAiZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmgiCiAjaW5jbHVkZSAiZm9yZWln bi9mZHdhcGkuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50 ZXJydXB0LmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAib3B0 aW1pemVyL29wdGltaXplci5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTmVzdGxvb3AuYwppbmRleCA4MDkzMTFhYjUxMy4uYmVhYzE2N2FjYzggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jCkBAIC0yNCw3ICsyNCw3IEBACiAj aW5jbHVkZSAiZXhlY3V0b3IvZXhlY2RlYnVnLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5z dHJ1bWVudC5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVOZXN0bG9vcC5oIgotI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKIAogCiAvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVj dFNldC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYwppbmRleCAz M2I1YzIwOWY1YS4uZjY4OTBkOTBlYjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVQcm9qZWN0U2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVBy b2plY3RTZXQuYwpAQCAtMjQsNyArMjQsNyBAQAogCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhl Y3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlUHJvamVjdFNldC5oIgotI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRl ICJub2Rlcy9ub2RlRnVuY3MuaCIKIAogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlUmVjdXJzaXZldW5pb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVS ZWN1cnNpdmV1bmlvbi5jCmluZGV4IDcxNjYzOTdlNTliLi45MzNkYjJjNTA5ZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKQEAgLTIwLDYgKzIw LDcgQEAKIAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZXhl Y3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5o IgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzdG9yZS5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJl c3VsdC5jCmluZGV4IDY2MDU2MWFlZDhkLi5mMDFmMDQ3M2M4ZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVSZXN1bHQuYwpAQCAtNDcsNyArNDcsNyBAQAogCiAjaW5jbHVkZSAiZXhlY3V0 b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlUmVzdWx0LmgiCi0jaW5j bHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogCiAKIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRP cC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMKaW5kZXggMjQ3MDk3Nzgz ODQuLjIyYzg2Mjk0NWVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U2V0T3AuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYwpAQCAtNDgs NyArNDgsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRl ICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVTZXRPcC5o IgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIK ICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBw b3J0LmgiCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jCmluZGV4IGUwMjMxM2Y3ODEzLi5k OTFmNjRkMmI5YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jCkBAIC0xOCw2ICsxOCw3 IEBACiAjaW5jbHVkZSAiYWNjZXNzL3BhcmFsbGVsLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Iv ZXhlY2RlYnVnLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZVNvcnQuaCIKKyNpbmNsdWRl ICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi dXRpbHMvdHVwbGVzb3J0LmgiCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVTdWJwbGFuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicGxhbi5jCmlu ZGV4IDgyODVjNzEwMWMyLi5hNzE3OGVlN2Q2OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVN1YnBsYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U3VicGxhbi5jCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0 YWlscy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZXhl Y3V0b3Ivbm9kZVN1YnBsYW4uaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRl ICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5j bHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jCmluZGV4IDkzOTQxNTZm NDA1Li43MWQ1NGViNWMwNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVRhYmxlRnVuY3NjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVG dW5jc2Nhbi5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0 b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5oIgogI2luY2x1 ZGUgImV4ZWN1dG9yL3RhYmxlZnVuYy5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIK ICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIK ICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRz Y2FuLmMKaW5kZXggNjY0MWRmMTA5OTkuLmJhMTYyZmY3MzA2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVUaWRzY2FuLmMKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJjYXRhbG9n L3BnX3R5cGUuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUg ImV4ZWN1dG9yL25vZGVUaWRzY2FuLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgog I2luY2x1ZGUgImxpYi9xdW5pcXVlLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKICNp bmNsdWRlICJ1dGlscy9yZWwuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVVbmlxdWUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYwppbmRl eCAwODk4ZDRlNjkzYi4uYzAzODEyODYyYzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVVbmlxdWUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5p cXVlLmMKQEAgLTM1LDcgKzM1LDcgQEAKIAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9y LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZVVuaXF1ZS5oIgotI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKIAogCiAvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKaW5kZXggZjFjNTI0ZDAwZGYu LmQxMDBiM2FmMjE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2lu ZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCkBA IC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNs dWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZVdp bmRvd0FnZy5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRlICJvcHRp bWl6ZXIvY2xhdXNlcy5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGliL2JpcGFydGl0 ZV9tYXRjaC5jIGIvc3JjL2JhY2tlbmQvbGliL2JpcGFydGl0ZV9tYXRjaC5jCmluZGV4IDEy NTIwZGM5MWI0Li41YmZkNGQ0ZmM0NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGliL2Jp cGFydGl0ZV9tYXRjaC5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYi9iaXBhcnRpdGVfbWF0Y2gu YwpAQCAtMTgsNiArMTgsNyBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKKyNpbmNsdWRl ICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibGliL2JpcGFydGl0ZV9tYXRjaC5oIgog I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJw cS9hdXRoLmMgYi9zcmMvYmFja2VuZC9saWJwcS9hdXRoLmMKaW5kZXggMmFmNTYxNWU1NGEu LmQ3YmQzMjY5ZDY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9hdXRoLmMKKysr IGIvc3JjL2JhY2tlbmQvbGlicHEvYXV0aC5jCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk ZSAiY29tbWFuZHMvdXNlci5oIgogI2luY2x1ZGUgImNvbW1vbi9pcC5oIgogI2luY2x1ZGUg ImNvbW1vbi9tZDUuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAi bGlicHEvYXV0aC5oIgogI2luY2x1ZGUgImxpYnBxL2NyeXB0LmgiCiAjaW5jbHVkZSAibGli cHEvbGlicHEuaCIKQEAgLTMzLDcgKzM0LDYgQEAKICNpbmNsdWRlICJsaWJwcS9wcWZvcm1h dC5oIgogI2luY2x1ZGUgImxpYnBxL3Nhc2wuaCIKICNpbmNsdWRlICJsaWJwcS9zY3JhbS5o IgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBvcnQvcGdfYnN3YXAuaCIK ICNpbmNsdWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNh dGlvbi93YWxzZW5kZXIuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL3BxY29t bS5jIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFjb21tLmMKaW5kZXggNGE0NDJmMjJkZjYuLjM0 ZWMxODgxM2I0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9wcWNvbW0uYworKysg Yi9zcmMvYmFja2VuZC9saWJwcS9wcWNvbW0uYwpAQCAtNzMsOCArNzMsOCBAQAogI2VuZGlm CiAKICNpbmNsdWRlICJjb21tb24vaXAuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0Lmgi CiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNp bmNsdWRlICJwb3J0L3BnX2Jzd2FwLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9wb3N0bWFz dGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2xpYnBxL3BxbXEuYyBiL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYwppbmRleCAyMzhm YjczZWJkOC4uYzExNDMzOTY4YzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYnBxL3Bx bXEuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMKQEAgLTE1LDEwICsxNSwxMCBA QAogCiAjaW5jbHVkZSAiYWNjZXNzL3BhcmFsbGVsLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv cmVwYWNrLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgImxpYnBx L2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJsaWJw cS9wcW1xLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0Lmgi CiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvbGF0Y2guaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVw L3ByZXBqb2ludHJlZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGpvaW50 cmVlLmMKaW5kZXggNDQyNGZkYmU5MDYuLjhlNTgyZDBmZWMwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUuYworKysgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUuYwpAQCAtMjksNiArMjksNyBAQAogI2lu Y2x1ZGUgImFjY2Vzcy90YWJsZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgog I2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5j bHVkZSAibm9kZXMvbXVsdGliaXRtYXBzZXQuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L29wdGltaXplci91dGlsL3BhdGhub2RlLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9wYXRobm9kZS5jCmluZGV4IDczNTE4YzhmODcwLi5mNWVhOTEwMmUyZCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYworKysgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5j bHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVT ZXRPcC5oIgogI2luY2x1ZGUgImZvcmVpZ24vZmR3YXBpLmgiCisjaW5jbHVkZSAiaXBjL2lu dGVycnVwdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL2V4 dGVuc2libGUuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvYXBwZW5kaW5mby5oIgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL3ByZWR0ZXN0LmMKaW5kZXggNjkwYTIzZDYxOWEuLjQ4OWEy MzNlODFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVz dC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3ByZWR0ZXN0LmMKQEAgLTE5 LDcgKzE5LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgotI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNs dWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIK ICNpbmNsdWRlICJub2Rlcy9wYXRobm9kZXMuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcv cGFydGJvdW5kcy5jCmluZGV4IDZmYjE1MGE4NzYzLi5kYjdmYWMxMDA3NSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYworKysgYi9zcmMvYmFj a2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5j bHVkZSAiY29tbWFuZHMvdGFibGVjbWRzLmgiCiAjaW5jbHVkZSAiY29tbW9uL2hhc2hmbi5o IgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCi0jaW5jbHVkZSAibWlzY2FkbWlu LmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2Vm dW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVz L3BhdGhub2Rlcy5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9ydC93aW4zMl9zZW1h LmMgYi9zcmMvYmFja2VuZC9wb3J0L3dpbjMyX3NlbWEuYwppbmRleCBhMzIwMjU1NDc2OS4u NTlmZDQ0NjlmYWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2VtYS5j CisrKyBiL3NyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2VtYS5jCkBAIC0xMyw2ICsxMyw3IEBA CiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5o IgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9wZ19zZW1hLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2F1eHByb2Nlc3MuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJv Y2Vzcy5jCmluZGV4IGFkNGJmNGJkMmE4Li5hYjJhZjg2MmQ2OSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9hdXhwcm9jZXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9hdXhwcm9jZXNzLmMKQEAgLTE2LDcgKzE2LDcgQEAKICNpbmNsdWRlIDxzaWdu YWwuaD4KIAogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCi0jaW5jbHVkZSAibWlzY2FkbWlu LmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgog I2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv Y29uZGl0aW9uX3ZhcmlhYmxlLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2Jnd3JpdGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd3JpdGVyLmMKaW5k ZXggZDYxMjFmMmI0ZmUuLjZiNzMxMmI3NWQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2Jnd3JpdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dy aXRlci5jCkBAIC0zMiw4ICszMiw4IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2lu Y2x1ZGUgImFjY2Vzcy94bG9nLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2lu Y2x1ZGUgImxpYnBxL3Bxc2lnbmFsLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXhwcm9jZXNzLmgiCiAj aW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dyaXRlci5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv Y2hlY2twb2ludGVyLmMKaW5kZXggNGIwNTFlYjMxMjguLmJkNzM4ODg3NDdiIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCisrKyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKQEAgLTQ0LDggKzQ0LDggQEAKICNp bmNsdWRlICJhY2Nlc3MveGxvZ3JlY292ZXJ5LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19h dXRoaWQuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKKyNpbmNsdWRlICJpcGMv aW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIKLSNpbmNsdWRlICJt aXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0L2F0b21p Y3MuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1eHByb2Nlc3MuaCIKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvZGF0YWNoZWNrc3VtX3N0YXRlLmMgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2RhdGFjaGVja3N1bV9zdGF0ZS5jCmluZGV4IDQ3Yjg3ZjUxYWQ5 Li4wMzcxN2E4YjAwOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9kYXRh Y2hlY2tzdW1fc3RhdGUuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2RhdGFjaGVj a3N1bV9zdGF0ZS5jCkBAIC0xOTgsNyArMTk4LDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9w cm9ncmVzcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImNv bW1vbi9yZWxwYXRoLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBj L2ludGVycnVwdC5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0 ZXIvYmd3b3JrZXIuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd3JpdGVyLmgiCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYwppbmRleCBhMmMwZmYwMTJjNS4uMjBmN2UzNGUy MDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMKKysr IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYwpAQCAtMTYsNiArMTYsNyBA QAogCiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0Lmgi CiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9wZ2FyY2guYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNo LmMKaW5kZXggYTNmZDRmODMyMDEuLjgwOThlMjlmZjY1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv cGdhcmNoLmMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ19pbnRl cm5hbC5oIgogI2luY2x1ZGUgImFyY2hpdmUvYXJjaGl2ZV9tb2R1bGUuaCIKICNpbmNsdWRl ICJhcmNoaXZlL3NoZWxsX2FyY2hpdmUuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0Lmgi CiAjaW5jbHVkZSAibGliL2JpbmFyeWhlYXAuaCIKICNpbmNsdWRlICJsaWJwcS9wcXNpZ25h bC5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9zdGFydHVwLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N0YXJ0dXAuYwpp bmRleCA2MzYyNGU4Y2FhMS4uZTdkYjNiM2U2ZTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvc3RhcnR1cC5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3Rh cnR1cC5jCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVy eS5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ndXRpbHMuaCIKICNpbmNsdWRlICJsaWJwcS9w cXNpZ25hbC5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1eHByb2Nlc3MuaCIKICNpbmNsdWRl ICJwb3N0bWFzdGVyL3N0YXJ0dXAuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvd2Fsc3VtbWFyaXplci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1t YXJpemVyLmMKaW5kZXggODkzMDE4MTVkYzMuLmVhNmFmYWI4ZDY5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwpAQCAtMzIsOCArMzIsOCBAQAogI2luY2x1 ZGUgImNhdGFsb2cvc3RvcmFnZV94bG9nLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGJjb21t YW5kc194bG9nLmgiCiAjaW5jbHVkZSAiY29tbW9uL2Jsa3JlZnRhYmxlLmgiCisjaW5jbHVk ZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgImxpYnBxL3Bxc2lnbmFsLmgiCi0jaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9z dG1hc3Rlci9hdXhwcm9jZXNzLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQu aCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHdyaXRlci5jCmluZGV4IDM0OTNiZThlNjMwLi5k MzIyOTdmYzI1OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3cml0 ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHdyaXRlci5jCkBAIC00Niw3 ICs0Niw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgogI2luY2x1ZGUgImxpYnBx L3Bxc2lnbmFsLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2lu dGVycnVwdC5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIv YXV4cHJvY2Vzcy5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBx d2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2 ZXIvbGlicHF3YWxyZWNlaXZlci5jCmluZGV4IDUzNzY1MTlmZWE1Li4xNjcyNDAzNmZmZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9s aWJwcXdhbHJlY2VpdmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3 YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMKQEAgLTI3LDE1ICsyNywxNCBAQAogI2lu Y2x1ZGUgImxpYnBxLWZlLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEtYmUtZmUtaGVscGVy cy5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgi CiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicHFleHBidWZmZXIuaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0 Y2guaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL21l bXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCiAjaW5jbHVkZSAidXRpbHMv dHVwbGVzdG9yZS5oIgorI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZlbnQuaCIKIAogUEdfTU9E VUxFX01BR0lDX0VYVCgKIAkJCQkJLm5hbWUgPSAibGlicHF3YWxyZWNlaXZlciIsCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3 b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxl bHdvcmtlci5jCmluZGV4IDk1MzVhYmVmMTIyLi42ZTVmM2FiMTIzZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29y a2VyLmMKQEAgLTE1Nyw2ICsxNTcsNyBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAor I2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5o IgogI2luY2x1ZGUgImxpYnBxL3BxbXEuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCAzMTNlMzFm ZjJlMy4uOTIwYzVhM2RlOTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2xhdW5jaGVyLmMKQEAgLTI1LDggKzI1LDggQEAKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3Jl bC5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0Lmgi CiAjaW5jbHVkZSAibGliL2RzaGFzaC5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2lu Y2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3b3JrZXIuaCIKICNp bmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2xvZ2ljYWwuYwppbmRleCAzNTQxZmM3OTNlNC4uZWY3ZTdlOWE4Yzgg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCkBAIC0z Miw3ICszMiw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dfaW50ZXJuYWwuaCIKICNpbmNs dWRlICJhY2Nlc3MveGxvZ3V0aWxzLmgiCiAjaW5jbHVkZSAiZm1nci5oIgotI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJw Z3N0YXQuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZWNvZGUuaCIKICNpbmNsdWRlICJy ZXBsaWNhdGlvbi9sb2dpY2FsLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2xvZ2ljYWxjdGwuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvbG9naWNhbGN0bC5jCmluZGV4IGMxMWQxMzE2NDUwLi5iOTJlNDhlZTNkNiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsY3RsLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsY3RsLmMKQEAg LTY1LDcgKzY1LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisj aW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3Qu aCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5o IgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2Fs ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNz LmMKaW5kZXggNzFmYmFmNzIyNjkuLmE0Y2JmNmU2Y2JmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKQEAgLTIyLDggKzIyLDgg QEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJmbWdyLmgiCiAj aW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNs dWRlICJtYi9wZ193Y2hhci5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUg Im5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RlY29kZS5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWwuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL29yaWdpbi5jCmluZGV4IGM5ZGZiMDk0YzJiLi4zNjVmODc1NzA1MSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCkBAIC03OSw3 ICs3OSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgotI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRl ICJub2Rlcy9leGVjbm9kZXMuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJy ZXBsaWNhdGlvbi9vcmlnaW4uaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKaW5kZXggMDU5ZWQ4NjAzMTQuLjhlNWFkYmQyYzRl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJi dWZmZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJi dWZmZXIuYwpAQCAtOTcsOCArOTcsOCBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9nX2ludGVy bmFsLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCiAjaW5jbHVkZSAiY29tbW9u L2ludC5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJsaWIvYmlu YXJ5aGVhcC5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5o IgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWwuaCIKICNpbmNsdWRlICJyZXBsaWNh dGlvbi9yZW9yZGVyYnVmZmVyLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3NlcXVlbmNlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9zZXF1ZW5jZXN5bmMuYwppbmRleCBmNDdmOTYyYzdkYi4uMWNmZDlhMzZiMzQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2Vz eW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5 bmMuYwpAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfc2VxdWVuY2Uu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCIKICNpbmNsdWRl ICJjb21tYW5kcy9zZXF1ZW5jZS5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNp bmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwppbmRleCA3ZDI5OTlkNzdmZC4uNDg5 YzExNWY0NWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv c2xvdHN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3Rz eW5jLmMKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ19pbnRlcm5h bC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX2RhdGFiYXNlLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1 ZGUgImxpYnBxL3Bxc2lnbmFsLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAi cG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IGEwNGI4NGViYzFkLi5kNjMxMTI2NmZlNSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBAIC0x MDAsNyArMTAwLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9j b3B5LmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVw dC5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgInBhcnNlci9w YXJzZV9yZWxhdGlvbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdC5jCmluZGV4IGQ3ZmI5ZjVhNjdmLi4wMTA2NTdmYjQwMCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Nsb3QuYwpAQCAtNDQsNyArNDQsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVj b3ZlcnkuaCIKICNpbmNsdWRlICJjb21tb24vZmlsZV91dGlscy5oIgogI2luY2x1ZGUgImNv bW1vbi9zdHJpbmcuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMv aW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rl ci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIu aCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAuYwppbmRleCBlMGUzMDU3OWM1OS4uM2Yx ZGE0ZGJlNGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwLmMKQEAgLTc2LDcgKzc2 LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY29tbW9uL2lu dC5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zeW5jcmVw LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vd2FscmVjZWl2ZXIuYwppbmRleCA0MzE5Y2I2ZmQ0My4uZDc4MDRhNzM0NTQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYwpAQCAtNjAsOSArNjAs OSBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9nd2FpdC5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfYXV0aGlkLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgImlwYy9pbnRl cnJ1cHQuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUgImxpYnBx L3Bxc2lnbmFsLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0 LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXhwcm9jZXNzLmgiCiAjaW5jbHVkZSAicG9z dG1hc3Rlci9pbnRlcnJ1cHQuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv YWlvL2Fpby5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vYWlvLmMKaW5kZXggOGY3ZTI2 NjA3YjkuLjFkNDA3M2VkMGRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2Fp by9haW8uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9haW8uYwpAQCAtMzgsNiAr MzgsNyBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImlwYy9pbnRl cnJ1cHQuaCIKICNpbmNsdWRlICJsaWIvaWxpc3QuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJwb3J0L2F0b21pY3MuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvYWlvL2Fpb19jYWxsYmFjay5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8v YWlvX2NhbGxiYWNrLmMKaW5kZXggMjA2YjgxZjUwMjguLmZjZDZjOTE2YWYwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9haW9fY2FsbGJhY2suYworKysgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2Fpby9haW9fY2FsbGJhY2suYwpAQCAtMTUsNyArMTUsNyBAQAog CiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2lu Y2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Fpby5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvYWlvX2ludGVybmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZt Z3IuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL2Fpb19pby5jIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vYWlvX2lvLmMKaW5kZXggNzJiNGM5ZmViM2EuLmRh N2VkNmNhNTNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9haW9faW8u YworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9haW9faW8uYwpAQCAtMTgsNyArMTgs NyBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAotI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Fpby5o IgogI2luY2x1ZGUgInN0b3JhZ2UvYWlvX2ludGVybmFsLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9mZC5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vbWV0aG9kX2lv X3VyaW5nLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9tZXRob2RfaW9fdXJpbmcuYwpp bmRleCBjMGY5ZmM5YzMwMy4uZTJhMmQ4NTU4OWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvYWlvL21ldGhvZF9pb191cmluZy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvYWlvL21ldGhvZF9pb191cmluZy5jCkBAIC0zNCw3ICszNCw3IEBACiAKICNpbmNsdWRl IDxsaWJ1cmluZy5oPgogCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBj L2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYWlvX2ludGVybmFsLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vbWV0aG9kX3dvcmtlci5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9haW8vbWV0aG9kX3dvcmtlci5jCmluZGV4IDYzZTM0ZDY2NjkwLi5h YmZmZWVmYzJjMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vbWV0aG9k X3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL21ldGhvZF93b3JrZXIu YwpAQCAtMzAsOCArMzAsOCBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKKyNpbmNsdWRl ICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIKLSNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCiAjaW5j bHVkZSAicG9zdG1hc3Rlci9hdXhwcm9jZXNzLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9p bnRlcnJ1cHQuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9idWZm aWxlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvYnVmZmlsZS5jCmluZGV4IGM0YWZl NGQzNjhhLi40NDc5ODk0M2VhZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9m aWxlL2J1ZmZpbGUuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvYnVmZmlsZS5j CkBAIC00Nyw3ICs0Nyw3IEBACiAKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudC5oIgotI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIK ICNpbmNsdWRlICJzdG9yYWdlL2J1ZmZpbGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1n ci5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2NvcHlkaXIuYyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9jb3B5ZGlyLmMKaW5kZXggNWVlMTQxZjEzYTUu LjM2MTE4ZDc0ZjFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvY29w eWRpci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9jb3B5ZGlyLmMKQEAgLTI1 LDcgKzI1LDcgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KIAogI2luY2x1ZGUgImNvbW1vbi9m aWxlX3V0aWxzLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2lu dGVycnVwdC5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29w eWRpci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvZmlsZS9mZC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2ZkLmMK aW5kZXggNGNmNDcxN2Y3NjQuLjdiNGNiOWExMjZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2ZpbGUvZmQuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvZmQu YwpAQCAtOTEsNyArOTEsNyBAQAogI2luY2x1ZGUgImNvbW1vbi9maWxlX3Blcm0uaCIKICNp bmNsdWRlICJjb21tb24vZmlsZV91dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi9wZ19wcm5n LmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5o IgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvc3RhcnR1cC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvYWlvLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2ZyZWVzcGFjZS9mcmVlc3BhY2UuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZnJl ZXNwYWNlL2ZyZWVzcGFjZS5jCmluZGV4IDAwNmVkYWI5ZDc3Li4yM2VlMjc1NzhkYyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9mcmVlc3BhY2UvZnJlZXNwYWNlLmMKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9mcmVlc3BhY2UvZnJlZXNwYWNlLmMKQEAgLTI2LDcg KzI2LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAi YWNjZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0aWxzLmgiCi0j aW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvZnJlZXNwYWNlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mc21faW50 ZXJuYWxzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9kc20uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2Rz bS5jCmluZGV4IDhiNjlkZjRmZjI2Li42Y2Y0NWNmYWM4YyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvZHNtLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv ZHNtLmMKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogCiAjaW5j bHVkZSAiY29tbW9uL3BnX3BybmcuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAj aW5jbHVkZSAibGliL2lsaXN0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVk ZSAicG9ydC9wZ19iaXR1dGlscy5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvaXBjLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGMuYwppbmRleCBjYjk0 NGVkZDhkZi4uNjUxZTljMjNlMTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL2lwYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwYy5jCkBAIC0yMyw2 ICsyMyw3IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4K IAorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK ICNpZmRlZiBQUk9GSUxFX1BJRF9ESVIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1 dW0uaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwu YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCAwMGI2NDBm MmQ1My4uNzM3YWQ4MTM2M2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3Byb2NzaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFs LmMKQEAgLTIwLDcgKzIwLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvcGFyYWxsZWwuaCIKICNp bmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3JlcGFjay5o IgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIK ICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCiAj aW5jbHVkZSAicG9zdG1hc3Rlci9kYXRhY2hlY2tzdW1fc3RhdGUuaCIKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobV9tcS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvc2htX21xLmMKaW5kZXggMjZiMjQxNThlZDkuLmVmMDE5NWY5Y2ZhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1fbXEuYworKysgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9zaG1fbXEuYwpAQCAtMTgsNyArMTgsNyBAQAogCiAjaW5jbHVkZSAi cG9zdGdyZXMuaCIKIAotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9p bnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0L3BnX2Jp dHV0aWxzLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtlci5oIgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3NobWVtLmMKaW5kZXggZjFmN2NkM2E0ZmYuLmNiNGU0MTExY2ZhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3NobWVtLmMKQEAgLTEzMyw2ICsxMzMsNyBAQAogI2luY2x1ZGUgImFj Y2Vzcy9zbHJ1LmgiCiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIK KyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgogI2luY2x1ZGUgInBvcnQvcGdfbnVtYS5o IgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lnbmFsZnVuY3MuYyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpZ25hbGZ1bmNzLmMKaW5kZXggODAwYjY5OWRl MjEuLjg0ZTQ0YjM5OGIyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9z aWduYWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpZ25hbGZ1bmNz LmMKQEAgLTE3LDcgKzE3LDcgQEAKICNpbmNsdWRlIDxzaWduYWwuaD4KIAogI2luY2x1ZGUg ImNhdGFsb2cvcGdfYXV0aGlkLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVk ZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBv c3RtYXN0ZXIvc3lzbG9nZ2VyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IDdmMDExZTA0OTkwLi5lNThhYzRj NDM2MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwpAQCAtMjIsNyArMjIsNyBA QAogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hs b2dyZWNvdmVyeS5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ndXRpbHMuaCIKLSNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAi cGdzdGF0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvYnVmbWdyLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv Y29uZGl0aW9uX3ZhcmlhYmxlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvY29uZGl0 aW9uX3ZhcmlhYmxlLmMKaW5kZXggMWYxNmIzZjc0NzUuLjNhNjJhNDQ3YWNhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvY29uZGl0aW9uX3ZhcmlhYmxlLmMKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jCkBAIC0y MCw3ICsyMCw3IEBACiAKICNpbmNsdWRlIDxsaW1pdHMuaD4KIAotI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwb3J0YWJp bGl0eS9pbnN0cl90aW1lLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFi bGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1n ci5jCmluZGV4IDJjY2Y3MjM3ZmVlLi4zYjVjODIwY2M4MSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvbG1nci5jCkBAIC0xOSw3ICsxOSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIK ICNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcm9n cmVzcy5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIK ICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvbG1nci9sb2NrLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCmlu ZGV4IDhkMjQ2ZWQ1YTRlLi41YTAxN2YyOGY2MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9sbWdyL2xvY2suYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9j ay5jCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3R3b3BoYXNlX3JtZ3Iu aCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ndXRp bHMuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0 LmgiCiAjaW5jbHVkZSAicGdfdHJhY2UuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNs dWRlICJzdG9yYWdlL2xtZ3IuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9sd2xvY2suYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYwppbmRl eCBiMWFkMzk2YmE3OS4uMDNjMTZmN2QyNmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvbG1nci9sd2xvY2suYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHds b2NrLmMKQEAgLTc2LDcgKzc2LDcgQEAKICAqLwogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAK LSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAj aW5jbHVkZSAicGdfdHJhY2UuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJw b3J0L3BnX2JpdHV0aWxzLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvcHJvYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwppbmRleCAyOGMw ZWZjM2UyMC4uZDliMGQ4ZjYyY2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9wcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpAQCAt MzgsNyArMzgsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy90d29waGFzZS5oIgogI2luY2x1ZGUg ImFjY2Vzcy94bG9ndXRpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3dhaXQuaCIKLSNp bmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5j bHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCiAj aW5jbHVkZSAicmVwbGljYXRpb24vc2xvdHN5bmMuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvcGFnZS9idWZwYWdlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3BhZ2Uv YnVmcGFnZS5jCmluZGV4IDFmZGZkYTU5ZWRkLi42YWZiM2Y4NDUxMyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9wYWdlL2J1ZnBhZ2UuYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL3BhZ2UvYnVmcGFnZS5jCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAiYWNj ZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9pdHVwLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3hsb2cuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVk ZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9jaGVja3N1bS5oIgogI2luY2x1ZGUg InV0aWxzL21lbWRlYnVnLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3Nt Z3Ivc21nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYwppbmRleCA1Mzkx NjQwZDg2MS4uYTliNmMxZWRlNmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv c21nci9zbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYwpAQCAt NjQsOCArNjQsOCBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nl c3MveGxvZ3V0aWxzLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUg ImxpYi9pbGlzdC5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvYWlvLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9y YWdlL2lwYy5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9mYXN0cGF0aC5jIGIv c3JjL2JhY2tlbmQvdGNvcC9mYXN0cGF0aC5jCmluZGV4IDUyNzcyYmM5MGE4Li5mZDY3NmVh MjdhMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9mYXN0cGF0aC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3Rjb3AvZmFzdHBhdGguYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUg ImNhdGFsb2cvb2JqZWN0YWNjZXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19uYW1lc3Bh Y2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKKyNpbmNsdWRlICJpcGMvaW50 ZXJydXB0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJsaWJw cS9wcm90b2NvbC5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC90Y29wL3BxdWVyeS5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpp bmRleCBlZTczMTAwMDgyMC4uMzM1ZTJkODk5OGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpAQCAtMjEs NyArMjEsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3ByZXBhcmUuaCIKICNpbmNsdWRlICJl eGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3RzdG9yZVJlY2VpdmVy LmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5o IgogI2luY2x1ZGUgInBnX3RyYWNlLmgiCiAjaW5jbHVkZSAidGNvcC9wcXVlcnkuaCIKICNp bmNsdWRlICJ0Y29wL3V0aWxpdHkuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3RzZWFy Y2gvd3BhcnNlcl9kZWYuYyBiL3NyYy9iYWNrZW5kL3RzZWFyY2gvd3BhcnNlcl9kZWYuYwpp bmRleCA0ODA5MTUwMzBkZi4uMDVhZmRlMjA1MmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3RzZWFyY2gvd3BhcnNlcl9kZWYuYworKysgYi9zcmMvYmFja2VuZC90c2VhcmNoL3dwYXJz ZXJfZGVmLmMKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlIDx3Y3R5cGUuaD4KIAogI2lu Y2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIK ICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2lu Y2x1ZGUgInRzZWFyY2gvdHNfcHVibGljLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvZGJzaXplLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZGJzaXplLmMKaW5k ZXggY2NjYzRhMjRjODQuLmQ2MjlhYTJhNGNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvZGJzaXplLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Ric2l6ZS5j CkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19kYXRhYmFzZS5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgImNvbW1hbmRz L3RhYmxlc3BhY2UuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInV0aWxz L2FjbC5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2dlb19vcHMuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW9fb3BzLmMKaW5kZXggNzMzMjRiOTFmZTUuLjky MTE0MjY0NTE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZ2VvX29wcy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW9fb3BzLmMKQEAgLTI5LDYgKzI5LDcg QEAKICNpbmNsdWRlIDxmbG9hdC5oPgogI2luY2x1ZGUgPGN0eXBlLmg+CiAKKyNpbmNsdWRl ICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9taXNjbm9kZXMuaCIKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aC5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25wYXRoLmMKaW5kZXggN2JmYzE4Yzk4ODguLjI5NjYwNTAxNjc0IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYwpAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1 ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNs dWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibGliL3N0cmluZ2luZm8uaCIKICNp bmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMKaW5kZXggNmNjMmFjYjQyNTQuLmQw ZDc4YWVlNzgzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhf ZXhlYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMKQEAg LTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxhdGlvbi5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNs dWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVk ZSAibm9kZXMvbWlzY25vZGVzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZ3JhbS55IGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2dyYW0ueQppbmRleCBmODI2Njk3ZDA5OC4u YWZlYWM0MDcxNTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0 aF9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2dyYW0ueQpA QCAtMTgsOCArMTgsOCBAQAogCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIK ICNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1 ZGUgImpzb25wYXRoX2ludGVybmFsLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAibm9kZXMvcGdfbGlzdC5oIgogI2luY2x1ZGUgInJlZ2V4L3JlZ2V4LmgiCiAjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9saWtlLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbGlrZS5jCmluZGV4IDM1MGJj MDdmMjEwLi5mNGIyM2VmNjQxYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2xpa2UuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbGlrZS5jCkBAIC0yMCw2ICsy MCw3IEBACiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29s bGF0aW9uLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1iL3Bn X3djaGFyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1n cnByb3Rvcy5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVyaWMu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMKaW5kZXggY2IyM2RmZTliOTUu LjgxZThlOTRlZmQ0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbnVtZXJp Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMKQEAgLTMwLDkgKzMw LDkgQEAKICNpbmNsdWRlICJjb21tb24vaW50LmgiCiAjaW5jbHVkZSAiY29tbW9uL2ludDEy OC5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0Lmgi CiAjaW5jbHVkZSAibGliL2h5cGVybG9nbG9nLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3Jt YXQuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVu Y3MuaCIKICNpbmNsdWRlICJub2Rlcy9zdXBwb3J0bm9kZXMuaCIKICNpbmNsdWRlICJvcHRp bWl6ZXIvb3B0aW1pemVyLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv b3JhY2xlX2NvbXBhdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L29yYWNsZV9jb21wYXQu YwppbmRleCA1YjBkMDk4YmQwNy4uNjNhZGJmZDQxMGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9vcmFjbGVfY29tcGF0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L29yYWNsZV9jb21wYXQuYwpAQCAtMTYsOCArMTYsOCBAQAogI2luY2x1ZGUgInBvc3Rn cmVzLmgiCiAKICNpbmNsdWRlICJjb21tb24vaW50LmgiCisjaW5jbHVkZSAiaXBjL2ludGVy cnVwdC5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCi0jaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9mb3Jt YXR0aW5nLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9vcmRlcmVkc2V0YWdncy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L29yZGVyZWRzZXRhZ2dzLmMKaW5kZXggZmQ4Yjg2NzY0NzAuLjkxNTcwZTgxMDI5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvb3JkZXJlZHNldGFnZ3MuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvb3JkZXJlZHNldGFnZ3MuYwpAQCAtMjAsNiAr MjAsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgorI2lu Y2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNs dWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVy LmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggODhkZTVjMDQ4MWMuLjJi OWZhNjdhNTJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxz LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC00Nyw2ICs0 Nyw3IEBACiAjaW5jbHVkZSAiY29tbW9uL2tleXdvcmRzLmgiCiAjaW5jbHVkZSAiZXhlY3V0 b3Ivc3BpLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3RzcXVlcnlfcmV3cml0ZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3RzcXVlcnlfcmV3cml0ZS5jCmluZGV4IGFhY2UyYTRjN2Q2Li45NTEzMWY1NWZhMiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzcXVlcnlfcmV3cml0ZS5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3F1ZXJ5X3Jld3JpdGUuYwpAQCAtMTYsNiArMTYs NyBAQAogCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiZXhlY3V0 b3Ivc3BpLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgogI2luY2x1ZGUgInRzZWFyY2gvdHNfdXRpbHMuaCIKICNpbmNsdWRlICJ1dGls cy9idWlsdGlucy5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzdmVj dG9yX29wLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdHN2ZWN0b3Jfb3AuYwppbmRleCA1 M2E5NTQxZTg5Zi4uOWM2ODlhNDBjZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC90c3ZlY3Rvcl9vcC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c3ZlY3Rv cl9vcC5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiY29tbW9uL2ludC5oIgogI2lu Y2x1ZGUgImV4ZWN1dG9yL3NwaS5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRl ICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibGliL3F1bmlxdWUuaCIKICNpbmNsdWRl ICJtYi9wZ193Y2hhci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC92YXJsZW5hLmMKaW5kZXggMGM2ZDNiYTRkMjIuLmNkNzc0MjY0ZDg2IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC92YXJsZW5hLmMKQEAgLTI4LDkgKzI4LDkgQEAKICNpbmNsdWRlICJjb21tb24v dW5pY29kZV9ub3JtLmgiCiAjaW5jbHVkZSAiY29tbW9uL3VuaWNvZGVfdmVyc2lvbi5oIgog I2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5j bHVkZSAibGliL2h5cGVybG9nbG9nLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIK LSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIK ICNpbmNsdWRlICJwYXJzZXIvc2NhbnN1cC5oIgogI2luY2x1ZGUgInBvcnQvcGdfYnN3YXAu aCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2ludmFsLmMgYi9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9pbnZhbC5jCmluZGV4IDYzZGMzNmQ0ZDkxLi5mM2NkMjQy Y2U3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvaW52YWwuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9pbnZhbC5jCkBAIC0xMTksNiArMTE5LDcgQEAK ICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgogI2luY2x1ZGUgImNhdGFsb2cvY2F0 YWxvZy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29uc3RyYWludC5oIgorI2luY2x1ZGUg ImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJz dG9yYWdlL3Byb2NudW1iZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbC5oIgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9pbml0L2dsb2JhbHMuYwppbmRleCBiYmQyOGQxNGQ5OS4uYjQxZGQwYTY5Mjgg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5j bHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImNvbW1vbi9maWxlX3Blcm0uaCIKKyNp bmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEtYmUuaCIK ICNpbmNsdWRlICJsaWJwcS9wcWNvbW0uaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvdGltZW91dC5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy90aW1lb3V0LmMKaW5kZXggZGRiYTVkYzYwN2MuLmVkNTQ0NDdkNGEw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3RpbWVvdXQuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9taXNjL3RpbWVvdXQuYwpAQCAtMTYsNiArMTYsNyBAQAogCiAj aW5jbHVkZSA8c3lzL3RpbWUuaD4KIAorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNp bmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5j bHVkZSAidXRpbHMvdGltZW91dC5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv bW1nci9tY3h0LmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYwppbmRleCA5MzBm YzQ1NzMyOC4uMjdiMzM5YTY0OWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21t Z3IvbWN4dC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jCkBAIC0zOSw2 ICszOSw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImNvbW1vbi9p bnQuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibWIvcGdfd2No YXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJ1dGlscy9tZW1kZWJ1 Zy5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC9xc29ydF9pbnRlcnJ1 cHRpYmxlLmMgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3Fzb3J0X2ludGVycnVwdGlibGUu YwppbmRleCBmMTc5YjI1NjI0OC4uZmQyM2U3MzEyZDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL3NvcnQvcXNvcnRfaW50ZXJydXB0aWJsZS5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL3NvcnQvcXNvcnRfaW50ZXJydXB0aWJsZS5jCkBAIC0zLDcgKzMsNyBAQAogICov CiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2lu Y2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKIAogI2RlZmluZSBTVF9TT1JUIHFzb3J0X2ludGVy cnVwdGlibGUKICNkZWZpbmUgU1RfRUxFTUVOVF9UWVBFX1ZPSUQKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0LmMgYi9zcmMvYmFja2VuZC91dGlscy9z b3J0L3R1cGxlc29ydC5jCmluZGV4IGMwZTc1MjdiOWNhLi4wY2ViMzE1M2MxZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnQuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9zb3J0L3R1cGxlc29ydC5jCkBAIC0xMDIsNyArMTAyLDcgQEAKICNpbmNs dWRlIDxsaW1pdHMuaD4KIAogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKLSNp bmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5j bHVkZSAicGdfdHJhY2UuaCIKICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9zaG1lbS5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv c29ydC90dXBsZXN0b3JlLmMgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc3RvcmUu YwppbmRleCBmOWUyZDk1MTg2YS4uNTAwMDVjN2Y1NTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL3NvcnQvdHVwbGVzdG9yZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3Nv cnQvdHVwbGVzdG9yZS5jCkBAIC01OSw3ICs1OSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL2h0 dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKICNpbmNs dWRlICJleGVjdXRvci9leGVjdXRvci5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2lu Y2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1ZmZpbGUuaCIK ICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3Jlc293bmVy LmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy90aW1lL2NvbWJvY2lkLmMgYi9z cmMvYmFja2VuZC91dGlscy90aW1lL2NvbWJvY2lkLmMKaW5kZXggNjE0YjdjMTAwNmIuLjkz ZDUyYzA3ODM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy90aW1lL2NvbWJvY2lk LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9jb21ib2NpZC5jCkBAIC00Myw3ICs0 Myw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAi YWNjZXNzL3hhY3QuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMv aW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgogI2luY2x1ZGUgInV0 aWxzL2NvbWJvY2lkLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgpkaWZmIC0tZ2l0 IGEvc3JjL2NvbW1vbi9zY3JhbS1jb21tb24uYyBiL3NyYy9jb21tb24vc2NyYW0tY29tbW9u LmMKaW5kZXggMjU5ZmE1NTU0YjYuLjAwYjkyYTdmZWExIDEwMDY0NAotLS0gYS9zcmMvY29t bW9uL3NjcmFtLWNvbW1vbi5jCisrKyBiL3NyYy9jb21tb24vc2NyYW0tY29tbW9uLmMKQEAg LTIzLDcgKzIzLDcgQEAKICNpbmNsdWRlICJjb21tb24vaG1hYy5oIgogI2luY2x1ZGUgImNv bW1vbi9zY3JhbS1jb21tb24uaCIKICNpZm5kZWYgRlJPTlRFTkQKLSNpbmNsdWRlICJtaXNj YWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjZW5kaWYKICNpbmNsdWRl ICJwb3J0L3BnX2Jzd2FwLmgiCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWNTY2FuLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjU2Nhbi5oCmluZGV4IDE4 YjAzMjM1YzNjLi44MDVhMzY3YjVmZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY1NjYW4uaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjU2Nhbi5oCkBA IC0xMyw5ICsxMyw5IEBACiAjaWZuZGVmIEVYRUNTQ0FOX0gKICNkZWZpbmUgRVhFQ1NDQU5f SAogCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0 b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCisjaW5jbHVkZSAiaXBj L2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogCiAvKgpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvaXBjL2ludGVycnVwdC5oIGIvc3JjL2luY2x1ZGUvaXBj L2ludGVycnVwdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5i NDA5ZWUxOGRkYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2lwYy9pbnRlcnJ1 cHQuaApAQCAtMCwwICsxLDE5MiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICog aW50ZXJydXB0LmgKKyAqCSAgSW50ZXItcHJvY2VzcyBpbnRlcnJ1cHRzCisgKgorICogUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMg b2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIElERU5USUZJQ0FUSU9O CisgKgkgIHNyYy9pbmNsdWRlL2lwYy9pbnRlcnJ1cHQuaAorICoKKyAqLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICovCisKKyNpZm5kZWYgSVBDX0lOVEVSUlVQVF9ICisjZGVmaW5lIElQQ19J TlRFUlJVUFRfSAorCisjaW5jbHVkZSA8c2lnbmFsLmg+CisKKyNpbmNsdWRlICJwb3J0L2F0 b21pY3MuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NudW1iZXIuaCIKKworLyoKKyAqIElu Y2x1ZGUgd2FpdGV2ZW50c2V0LmggZm9yIHRoZSBXTF8qIGZsYWdzLiBUaGV5J3JlIG5vdCBu ZWVkZWQgaGVyLCBidXQgYXJlCisgKiBuZWVkZWQgd2hpY2ggYXJlIG5lZWRlZCBieSBhbGwg Y2FsbGVycyBvZiBXYWl0SW50ZXJydXB0LCBzbyBpbmNsdWRlIGl0CisgKiBoZXJlLgorICoK KyAqIE5vdGU6IEludGVycnVwdE1hc2sgaXMgZGVmaW5lZCBpbiB3YWl0ZXZlbnRzZXQuaCB0 byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmN5CisgKi8KKyNpbmNsdWRlICJzdG9yYWdlL3dh aXRldmVudHNldC5oIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCSAgU3lzdGVt IGludGVycnVwdCBhbmQgY3JpdGljYWwgc2VjdGlvbiBoYW5kbGluZworICoKKyAqIFRoZXJl IGFyZSB0d28gdHlwZXMgb2YgaW50ZXJydXB0cyB0aGF0IGEgcnVubmluZyBiYWNrZW5kIG5l ZWRzIHRvIGFjY2VwdAorICogd2l0aG91dCBtZXNzaW5nIHVwIGl0cyBzdGF0ZTogUXVlcnlD YW5jZWwgKFNJR0lOVCkgYW5kIFByb2NEaWUgKFNJR1RFUk0pLgorICogSW4gYm90aCBjYXNl cywgd2UgbmVlZCB0byBiZSBhYmxlIHRvIGNsZWFuIHVwIHRoZSBjdXJyZW50IHRyYW5zYWN0 aW9uCisgKiBncmFjZWZ1bGx5LCBzbyB3ZSBjYW4ndCByZXNwb25kIHRvIHRoZSBpbnRlcnJ1 cHQgaW5zdGFudGFuZW91c2x5IC0tLQorICogdGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCBp bnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgd291bGQgYmUgc2VsZi1jb25zaXN0ZW50CisgKiBp ZiB0aGUgY29kZSBpcyBpbnRlcnJ1cHRlZCBhdCBhbiBhcmJpdHJhcnkgaW5zdGFudC4gIElu c3RlYWQsIHRoZSBzaWduYWwKKyAqIGhhbmRsZXJzIHNldCBmbGFncyB0aGF0IGFyZSBjaGVj a2VkIHBlcmlvZGljYWxseSBkdXJpbmcgZXhlY3V0aW9uLgorICoKKyAqIFRoZSBDSEVDS19G T1JfSU5URVJSVVBUUygpIG1hY3JvIGlzIGNhbGxlZCBhdCBzdHJhdGVnaWNhbGx5IGxvY2F0 ZWQgc3BvdHMKKyAqIHdoZXJlIGl0IGlzIG5vcm1hbGx5IHNhZmUgdG8gYWNjZXB0IGEgY2Fu Y2VsIG9yIGRpZSBpbnRlcnJ1cHQuICBJbiBzb21lCisgKiBjYXNlcywgd2UgaW52b2tlIENI RUNLX0ZPUl9JTlRFUlJVUFRTKCkgaW5zaWRlIGxvdy1sZXZlbCBzdWJyb3V0aW5lcyB0aGF0 CisgKiBtaWdodCBzb21ldGltZXMgYmUgY2FsbGVkIGluIGNvbnRleHRzIHRoYXQgZG8gKm5v dCogd2FudCB0byBhbGxvdyBhIGNhbmNlbAorICogb3IgZGllIGludGVycnVwdC4gIFRoZSBI T0xEX0lOVEVSUlVQVFMoKSBhbmQgUkVTVU1FX0lOVEVSUlVQVFMoKSBtYWNyb3MKKyAqIGFs bG93IGNvZGUgdG8gZW5zdXJlIHRoYXQgbm8gY2FuY2VsIG9yIGRpZSBpbnRlcnJ1cHQgd2ls bCBiZSBhY2NlcHRlZCwKKyAqIGV2ZW4gaWYgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBnZXRz IGNhbGxlZCBpbiBhIHN1YnJvdXRpbmUuICBUaGUgaW50ZXJydXB0CisgKiB3aWxsIGJlIGhl bGQgb2ZmIHVudGlsIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgaXMgZG9uZSBvdXRzaWRlIGFu eQorICogSE9MRF9JTlRFUlJVUFRTKCkgLi4uIFJFU1VNRV9JTlRFUlJVUFRTKCkgc2VjdGlv bi4KKyAqCisgKiBUaGVyZSBpcyBhbHNvIGEgbWVjaGFuaXNtIHRvIHByZXZlbnQgcXVlcnkg Y2FuY2VsIGludGVycnVwdHMsIHdoaWxlIHN0aWxsCisgKiBhbGxvd2luZyBkaWUgaW50ZXJy dXB0czogSE9MRF9DQU5DRUxfSU5URVJSVVBUUygpIGFuZAorICogUkVTVU1FX0NBTkNFTF9J TlRFUlJVUFRTKCkuCisgKgorICogTm90ZSB0aGF0IFByb2Nlc3NJbnRlcnJ1cHRzKCkgaGFz IGFsc28gYWNxdWlyZWQgYSBudW1iZXIgb2YgdGFza3MgdGhhdAorICogZG8gbm90IG5lY2Vz c2FyaWx5IGNhdXNlIGEgcXVlcnktY2FuY2VsLW9yLWRpZSByZXNwb25zZS4gIEhlbmNlLCBp dCdzCisgKiBwb3NzaWJsZSB0aGF0IGl0IHdpbGwganVzdCBjbGVhciBJbnRlcnJ1cHRQZW5k aW5nIGFuZCByZXR1cm4uCisgKgorICogSU5URVJSVVBUU19QRU5ESU5HX0NPTkRJVElPTigp IGNhbiBiZSBjaGVja2VkIHRvIHNlZSB3aGV0aGVyIGFuCisgKiBpbnRlcnJ1cHQgbmVlZHMg dG8gYmUgc2VydmljZWQsIHdpdGhvdXQgdHJ5aW5nIHRvIGRvIHNvIGltbWVkaWF0ZWx5Lgor ICogU29tZSBjYWxsZXJzIGFyZSBhbHNvIGludGVyZXN0ZWQgaW4gSU5URVJSVVBUU19DQU5f QkVfUFJPQ0VTU0VEKCksCisgKiB3aGljaCB0ZWxscyB3aGV0aGVyIFByb2Nlc3NJbnRlcnJ1 cHRzIGlzIHN1cmUgdG8gY2xlYXIgdGhlIGludGVycnVwdC4KKyAqCisgKiBTcGVjaWFsIG1l Y2hhbmlzbXMgYXJlIHVzZWQgdG8gbGV0IGFuIGludGVycnVwdCBiZSBhY2NlcHRlZCB3aGVu IHdlIGFyZQorICogd2FpdGluZyBmb3IgYSBsb2NrIG9yIHdoZW4gd2UgYXJlIHdhaXRpbmcg Zm9yIGNvbW1hbmQgaW5wdXQgKGJ1dCwgb2YKKyAqIGNvdXJzZSwgb25seSBpZiB0aGUgaW50 ZXJydXB0IGhvbGRvZmYgY291bnRlciBpcyB6ZXJvKS4gIFNlZSB0aGUKKyAqIHJlbGF0ZWQg Y29kZSBmb3IgZGV0YWlscy4KKyAqCisgKiBBIGxvc3QgY29ubmVjdGlvbiBpcyBoYW5kbGVk IHNpbWlsYXJseSwgYWx0aG91Z2ggdGhlIGxvc3Mgb2YgY29ubmVjdGlvbgorICogZG9lcyBu b3QgcmFpc2UgYSBzaWduYWwsIGJ1dCBpcyBkZXRlY3RlZCB3aGVuIHdlIGZhaWwgdG8gd3Jp dGUgdG8gdGhlCisgKiBzb2NrZXQuIElmIHRoZXJlIHdhcyBhIHNpZ25hbCBmb3IgYSBicm9r ZW4gY29ubmVjdGlvbiwgd2UgY291bGQgbWFrZSB1c2Ugb2YKKyAqIGl0IGJ5IHNldHRpbmcg Q2xpZW50Q29ubmVjdGlvbkxvc3QgaW4gdGhlIHNpZ25hbCBoYW5kbGVyLgorICoKKyAqIEEg cmVsYXRlZCwgYnV0IGNvbmNlcHR1YWxseSBkaXN0aW5jdCwgbWVjaGFuaXNtIGlzIHRoZSAi Y3JpdGljYWwgc2VjdGlvbiIKKyAqIG1lY2hhbmlzbS4gIEEgY3JpdGljYWwgc2VjdGlvbiBu b3Qgb25seSBob2xkcyBvZmYgY2FuY2VsL2RpZSBpbnRlcnJ1cHRzLAorICogYnV0IGNhdXNl cyBhbnkgZXJlcG9ydChFUlJPUikgb3IgZXJlcG9ydChGQVRBTCkgdG8gYmVjb21lIGVyZXBv cnQoUEFOSUMpCisgKiAtLS0gdGhhdCBpcywgYSBzeXN0ZW0td2lkZSByZXNldCBpcyBmb3Jj ZWQuICBOZWVkbGVzcyB0byBzYXksIG9ubHkgcmVhbGx5CisgKiAqY3JpdGljYWwqIGNvZGUg c2hvdWxkIGJlIG1hcmtlZCBhcyBhIGNyaXRpY2FsIHNlY3Rpb24hCUN1cnJlbnRseSwgdGhp cworICogbWVjaGFuaXNtIGlzIG9ubHkgdXNlZCBmb3IgWExPRy1yZWxhdGVkIGNvZGUuCisg KgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBpbiBnbG9iYWxzLmMgKi8KKy8q IHRoZXNlIGFyZSBtYXJrZWQgdm9sYXRpbGUgYmVjYXVzZSB0aGV5IGFyZSBzZXQgYnkgc2ln bmFsIGhhbmRsZXJzOiAqLworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9t aWNfdCBJbnRlcnJ1cHRQZW5kaW5nOworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNp Z19hdG9taWNfdCBRdWVyeUNhbmNlbFBlbmRpbmc7CitleHRlcm4gUEdETExJTVBPUlQgdm9s YXRpbGUgc2lnX2F0b21pY190IFByb2NEaWVQZW5kaW5nOworZXh0ZXJuIFBHRExMSU1QT1JU IHZvbGF0aWxlIGludCBQcm9jRGllU2VuZGVyUGlkOworZXh0ZXJuIFBHRExMSU1QT1JUIHZv bGF0aWxlIGludCBQcm9jRGllU2VuZGVyVWlkOworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0 aWxlIHNpZ19hdG9taWNfdCBJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0UGVuZGlu ZzsKK2V4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgVHJhbnNhY3Rp b25UaW1lb3V0UGVuZGluZzsKK2V4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRv bWljX3QgSWRsZVNlc3Npb25UaW1lb3V0UGVuZGluZzsKK2V4dGVybiBQR0RMTElNUE9SVCB2 b2xhdGlsZSBzaWdfYXRvbWljX3QgUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nOworZXh0ZXJu IFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBMb2dNZW1vcnlDb250ZXh0UGVu ZGluZzsKK2V4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVN0 YXRzVXBkYXRlVGltZW91dFBlbmRpbmc7CisKK2V4dGVybiBQR0RMTElNUE9SVCB2b2xhdGls ZSBzaWdfYXRvbWljX3QgQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGluZzsKK2V4dGVybiBQ R0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2xpZW50Q29ubmVjdGlvbkxvc3Q7 CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCkgYW5kIGZyaWVuZHMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIENo ZWNrIHdoZXRoZXIgYW55IGVuYWJsZWQgaW50ZXJydXB0IGlzIHBlbmRpbmcsIHdpdGhvdXQg dHJ5aW5nIHRvIHNlcnZpY2UKKyAqIGl0IGltbWVkaWF0ZWx5LiAgVGhpcyBpcyBjYW4gYmUg dXNlZCBpbiBhIEhPTERfSU5URVJSVVBUUygpIGJsb2NrIHRvIGNoZWNrCisgKiBpZiB0aGUg SE9MRF9JTlRFUlJVUFRTKCkgaXMgZGVsYXlpbmcgdGhlIGludGVycnVwdCBwcm9jZXNzaW5n LgorICovCisjaWZuZGVmIFdJTjMyCisjZGVmaW5lIElOVEVSUlVQVFNfUEVORElOR19DT05E SVRJT04oKSBcCisJKHVubGlrZWx5KEludGVycnVwdFBlbmRpbmcpKQorI2Vsc2UKKyNkZWZp bmUgSU5URVJSVVBUU19QRU5ESU5HX0NPTkRJVElPTigpIFwKKwkodW5saWtlbHkoVU5CTE9D S0VEX1NJR05BTF9RVUVVRSgpKSA/IFwKKwkgcGd3aW4zMl9kaXNwYXRjaF9xdWV1ZWRfc2ln bmFscygpIDogKHZvaWQpIDAsIFwKKwkgdW5saWtlbHkoSW50ZXJydXB0UGVuZGluZykpCisj ZW5kaWYKKworLyoKKyAqIENhbiBpbnRlcnJ1cHRzIGJlIHByb2Nlc3NlZCBpbiB0aGUgY3Vy cmVudCBzdGF0ZSwgaS5lLiBhcmUgdGhlIGludGVycnVwdHMKKyAqIG5vdCBwcmV2ZW50ZWQg YnkgdGhlIEhPTERfSU5URVJSVVBUUygpIG9yIGEgY3JpdGljYWwgc2VjdGlvbj8KKyAqLwor I2RlZmluZSBJTlRFUlJVUFRTX0NBTl9CRV9QUk9DRVNTRUQoKSBcCisJKEludGVycnVwdEhv bGRvZmZDb3VudCA9PSAwICYmIENyaXRTZWN0aW9uQ291bnQgPT0gMCAmJiBcCisJIFF1ZXJ5 Q2FuY2VsSG9sZG9mZkNvdW50ID09IDApCisKKy8qCisgKiBTZXJ2aWNlIGFuIGludGVycnVw dCwgaWYgb25lIGlzIHBlbmRpbmcgYW5kIGl0J3Mgc2FmZSB0byBzZXJ2aWNlIGl0IG5vdy4K KyAqCisgKiBOQjogVGhpcyBpcyBjYWxsZWQgZnJvbSBhbGwgb3ZlciB0aGUgY29kZWJhc2Us IGFuZCBpbiBmYWlybHkgdGlnaHQgbG9vcHMsCisgKiBzbyB0aGlzIG5lZWRzIHRvIGJlIHZl cnkgc2hvcnQgYW5kIGZhc3Qgd2hlbiB0aGVyZSBpcyBubyB3b3JrIHRvIGRvIQorICovCisj ZGVmaW5lIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgXAorZG8geyBcCisJaWYgKElOVEVSUlVQ VFNfUEVORElOR19DT05ESVRJT04oKSkgXAorCQlQcm9jZXNzSW50ZXJydXB0cygpOyBcCit9 IHdoaWxlKDApCisKKy8qIGluIHRjb3AvcG9zdGdyZXMuYyAqLworZXh0ZXJuIHZvaWQgUHJv Y2Vzc0ludGVycnVwdHModm9pZCk7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoJ CUNyaXRpY2FsIHNlY3Rpb24gYW5kIGludGVycnVwdCBob2xkb2ZmIG1lY2hhbmlzbQorICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworCisvKiB0aGVzZSBhcmUgbWFya2VkIHZvbGF0aWxl IGJlY2F1c2UgdGhleSBhcmUgZXhhbWluZWQgYnkgc2lnbmFsIGhhbmRsZXJzOiAqLworZXh0 ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHVpbnQzMiBJbnRlcnJ1cHRIb2xkb2ZmQ291bnQ7 CitleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgdWludDMyIFF1ZXJ5Q2FuY2VsSG9sZG9m ZkNvdW50OworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHVpbnQzMiBDcml0U2VjdGlv bkNvdW50OworCitzdGF0aWMgaW5saW5lIHZvaWQKK0hPTERfSU5URVJSVVBUUyh2b2lkKQor eworCUludGVycnVwdEhvbGRvZmZDb3VudCsrOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQK K1JFU1VNRV9JTlRFUlJVUFRTKHZvaWQpCit7CisJQXNzZXJ0KEludGVycnVwdEhvbGRvZmZD b3VudCA+IDApOworCUludGVycnVwdEhvbGRvZmZDb3VudC0tOworfQorCitzdGF0aWMgaW5s aW5lIHZvaWQKK0hPTERfQ0FOQ0VMX0lOVEVSUlVQVFModm9pZCkKK3sKKwlRdWVyeUNhbmNl bEhvbGRvZmZDb3VudCsrOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK1JFU1VNRV9DQU5D RUxfSU5URVJSVVBUUyh2b2lkKQoreworCUFzc2VydChRdWVyeUNhbmNlbEhvbGRvZmZDb3Vu dCA+IDApOworCVF1ZXJ5Q2FuY2VsSG9sZG9mZkNvdW50LS07Cit9CisKK3N0YXRpYyBpbmxp bmUgdm9pZAorU1RBUlRfQ1JJVF9TRUNUSU9OKHZvaWQpCit7CisJQ3JpdFNlY3Rpb25Db3Vu dCsrOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK0VORF9DUklUX1NFQ1RJT04odm9pZCkK K3sKKwlBc3NlcnQoQ3JpdFNlY3Rpb25Db3VudCA+IDApOworCUNyaXRTZWN0aW9uQ291bnQt LTsKK30KKworI2VuZGlmCQkJCQkJCS8qIElQQ19JTlRFUlJVUFRfSCAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEtYmUtZmUtaGVscGVycy5oIGIvc3JjL2luY2x1 ZGUvbGlicHEvbGlicHEtYmUtZmUtaGVscGVycy5oCmluZGV4IGNmZjY4Y2QxYzM3Li4wMTll NmM3MTBlNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEtYmUtZmUtaGVs cGVycy5oCisrKyBiL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLWZlLWhlbHBlcnMuaApA QCAtMzAsMTIgKzMwLDEzIEBACiAjaWZuZGVmIExJQlBRX0JFX0ZFX0hFTFBFUlNfSAogI2Rl ZmluZSBMSUJQUV9CRV9GRV9IRUxQRVJTX0gKIAorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS1iZS1mZS5oIgogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xhdGNo LmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCi0jaW5jbHVkZSAidXRpbHMvd2Fp dF9ldmVudC5oIgorI2luY2x1ZGUgInV0aWxzL3dhaXRfY2xhc3Nlcy5oIgogCiAKIHN0YXRp YyBpbmxpbmUgdm9pZCBsaWJwcXNydl9jb25uZWN0X3ByZXBhcmUodm9pZCk7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5o CmluZGV4IDcxNzBhNGJmZjk4Li41YTFiNjUyNDY3MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAgLTIzLDgg KzIzLDYgQEAKICNpZm5kZWYgTUlTQ0FETUlOX0gKICNkZWZpbmUgTUlTQ0FETUlOX0gKIAot I2luY2x1ZGUgPHNpZ25hbC5oPgotCiAjaW5jbHVkZSAiZGF0YXR5cGUvdGltZXN0YW1wLmgi IC8qIGZvciBUaW1lc3RhbXBUeiAqLwogI2luY2x1ZGUgInBndGltZS5oIgkJCQkvKiBmb3Ig cGdfdGltZV90ICovCiAKQEAgLTMyLDEzMiArMzAsNiBAQAogI2RlZmluZSBJbnZhbGlkUGlk CQkJCSgtMSkKIAogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCSAgU3lzdGVtIGlu dGVycnVwdCBhbmQgY3JpdGljYWwgc2VjdGlvbiBoYW5kbGluZwotICoKLSAqIFRoZXJlIGFy ZSB0d28gdHlwZXMgb2YgaW50ZXJydXB0cyB0aGF0IGEgcnVubmluZyBiYWNrZW5kIG5lZWRz IHRvIGFjY2VwdAotICogd2l0aG91dCBtZXNzaW5nIHVwIGl0cyBzdGF0ZTogUXVlcnlDYW5j ZWwgKFNJR0lOVCkgYW5kIFByb2NEaWUgKFNJR1RFUk0pLgotICogSW4gYm90aCBjYXNlcywg d2UgbmVlZCB0byBiZSBhYmxlIHRvIGNsZWFuIHVwIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9u Ci0gKiBncmFjZWZ1bGx5LCBzbyB3ZSBjYW4ndCByZXNwb25kIHRvIHRoZSBpbnRlcnJ1cHQg aW5zdGFudGFuZW91c2x5IC0tLQotICogdGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCBpbnRl cm5hbCBkYXRhIHN0cnVjdHVyZXMgd291bGQgYmUgc2VsZi1jb25zaXN0ZW50Ci0gKiBpZiB0 aGUgY29kZSBpcyBpbnRlcnJ1cHRlZCBhdCBhbiBhcmJpdHJhcnkgaW5zdGFudC4gIEluc3Rl YWQsIHRoZSBzaWduYWwKLSAqIGhhbmRsZXJzIHNldCBmbGFncyB0aGF0IGFyZSBjaGVja2Vk IHBlcmlvZGljYWxseSBkdXJpbmcgZXhlY3V0aW9uLgotICoKLSAqIFRoZSBDSEVDS19GT1Jf SU5URVJSVVBUUygpIG1hY3JvIGlzIGNhbGxlZCBhdCBzdHJhdGVnaWNhbGx5IGxvY2F0ZWQg c3BvdHMKLSAqIHdoZXJlIGl0IGlzIG5vcm1hbGx5IHNhZmUgdG8gYWNjZXB0IGEgY2FuY2Vs IG9yIGRpZSBpbnRlcnJ1cHQuICBJbiBzb21lCi0gKiBjYXNlcywgd2UgaW52b2tlIENIRUNL X0ZPUl9JTlRFUlJVUFRTKCkgaW5zaWRlIGxvdy1sZXZlbCBzdWJyb3V0aW5lcyB0aGF0Ci0g KiBtaWdodCBzb21ldGltZXMgYmUgY2FsbGVkIGluIGNvbnRleHRzIHRoYXQgZG8gKm5vdCog d2FudCB0byBhbGxvdyBhIGNhbmNlbAotICogb3IgZGllIGludGVycnVwdC4gIFRoZSBIT0xE X0lOVEVSUlVQVFMoKSBhbmQgUkVTVU1FX0lOVEVSUlVQVFMoKSBtYWNyb3MKLSAqIGFsbG93 IGNvZGUgdG8gZW5zdXJlIHRoYXQgbm8gY2FuY2VsIG9yIGRpZSBpbnRlcnJ1cHQgd2lsbCBi ZSBhY2NlcHRlZCwKLSAqIGV2ZW4gaWYgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBnZXRzIGNh bGxlZCBpbiBhIHN1YnJvdXRpbmUuICBUaGUgaW50ZXJydXB0Ci0gKiB3aWxsIGJlIGhlbGQg b2ZmIHVudGlsIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgaXMgZG9uZSBvdXRzaWRlIGFueQot ICogSE9MRF9JTlRFUlJVUFRTKCkgLi4uIFJFU1VNRV9JTlRFUlJVUFRTKCkgc2VjdGlvbi4K LSAqCi0gKiBUaGVyZSBpcyBhbHNvIGEgbWVjaGFuaXNtIHRvIHByZXZlbnQgcXVlcnkgY2Fu Y2VsIGludGVycnVwdHMsIHdoaWxlIHN0aWxsCi0gKiBhbGxvd2luZyBkaWUgaW50ZXJydXB0 czogSE9MRF9DQU5DRUxfSU5URVJSVVBUUygpIGFuZAotICogUkVTVU1FX0NBTkNFTF9JTlRF UlJVUFRTKCkuCi0gKgotICogTm90ZSB0aGF0IFByb2Nlc3NJbnRlcnJ1cHRzKCkgaGFzIGFs c28gYWNxdWlyZWQgYSBudW1iZXIgb2YgdGFza3MgdGhhdAotICogZG8gbm90IG5lY2Vzc2Fy aWx5IGNhdXNlIGEgcXVlcnktY2FuY2VsLW9yLWRpZSByZXNwb25zZS4gIEhlbmNlLCBpdCdz Ci0gKiBwb3NzaWJsZSB0aGF0IGl0IHdpbGwganVzdCBjbGVhciBJbnRlcnJ1cHRQZW5kaW5n IGFuZCByZXR1cm4uCi0gKgotICogSU5URVJSVVBUU19QRU5ESU5HX0NPTkRJVElPTigpIGNh biBiZSBjaGVja2VkIHRvIHNlZSB3aGV0aGVyIGFuCi0gKiBpbnRlcnJ1cHQgbmVlZHMgdG8g YmUgc2VydmljZWQsIHdpdGhvdXQgdHJ5aW5nIHRvIGRvIHNvIGltbWVkaWF0ZWx5LgotICog U29tZSBjYWxsZXJzIGFyZSBhbHNvIGludGVyZXN0ZWQgaW4gSU5URVJSVVBUU19DQU5fQkVf UFJPQ0VTU0VEKCksCi0gKiB3aGljaCB0ZWxscyB3aGV0aGVyIFByb2Nlc3NJbnRlcnJ1cHRz IGlzIHN1cmUgdG8gY2xlYXIgdGhlIGludGVycnVwdC4KLSAqCi0gKiBTcGVjaWFsIG1lY2hh bmlzbXMgYXJlIHVzZWQgdG8gbGV0IGFuIGludGVycnVwdCBiZSBhY2NlcHRlZCB3aGVuIHdl IGFyZQotICogd2FpdGluZyBmb3IgYSBsb2NrIG9yIHdoZW4gd2UgYXJlIHdhaXRpbmcgZm9y IGNvbW1hbmQgaW5wdXQgKGJ1dCwgb2YKLSAqIGNvdXJzZSwgb25seSBpZiB0aGUgaW50ZXJy dXB0IGhvbGRvZmYgY291bnRlciBpcyB6ZXJvKS4gIFNlZSB0aGUKLSAqIHJlbGF0ZWQgY29k ZSBmb3IgZGV0YWlscy4KLSAqCi0gKiBBIGxvc3QgY29ubmVjdGlvbiBpcyBoYW5kbGVkIHNp bWlsYXJseSwgYWx0aG91Z2ggdGhlIGxvc3Mgb2YgY29ubmVjdGlvbgotICogZG9lcyBub3Qg cmFpc2UgYSBzaWduYWwsIGJ1dCBpcyBkZXRlY3RlZCB3aGVuIHdlIGZhaWwgdG8gd3JpdGUg dG8gdGhlCi0gKiBzb2NrZXQuIElmIHRoZXJlIHdhcyBhIHNpZ25hbCBmb3IgYSBicm9rZW4g Y29ubmVjdGlvbiwgd2UgY291bGQgbWFrZSB1c2Ugb2YKLSAqIGl0IGJ5IHNldHRpbmcgQ2xp ZW50Q29ubmVjdGlvbkxvc3QgaW4gdGhlIHNpZ25hbCBoYW5kbGVyLgotICoKLSAqIEEgcmVs YXRlZCwgYnV0IGNvbmNlcHR1YWxseSBkaXN0aW5jdCwgbWVjaGFuaXNtIGlzIHRoZSAiY3Jp dGljYWwgc2VjdGlvbiIKLSAqIG1lY2hhbmlzbS4gIEEgY3JpdGljYWwgc2VjdGlvbiBub3Qg b25seSBob2xkcyBvZmYgY2FuY2VsL2RpZSBpbnRlcnJ1cHRzLAotICogYnV0IGNhdXNlcyBh bnkgZXJlcG9ydChFUlJPUikgb3IgZXJlcG9ydChGQVRBTCkgdG8gYmVjb21lIGVyZXBvcnQo UEFOSUMpCi0gKiAtLS0gdGhhdCBpcywgYSBzeXN0ZW0td2lkZSByZXNldCBpcyBmb3JjZWQu ICBOZWVkbGVzcyB0byBzYXksIG9ubHkgcmVhbGx5Ci0gKiAqY3JpdGljYWwqIGNvZGUgc2hv dWxkIGJlIG1hcmtlZCBhcyBhIGNyaXRpY2FsIHNlY3Rpb24hCUN1cnJlbnRseSwgdGhpcwot ICogbWVjaGFuaXNtIGlzIG9ubHkgdXNlZCBmb3IgWExPRy1yZWxhdGVkIGNvZGUuCi0gKgot ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKiBpbiBnbG9iYWxzLmMgKi8KLS8qIHRo ZXNlIGFyZSBtYXJrZWQgdm9sYXRpbGUgYmVjYXVzZSB0aGV5IGFyZSBzZXQgYnkgc2lnbmFs IGhhbmRsZXJzOiAqLwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNf dCBJbnRlcnJ1cHRQZW5kaW5nOwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19h dG9taWNfdCBRdWVyeUNhbmNlbFBlbmRpbmc7Ci1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRp bGUgc2lnX2F0b21pY190IFByb2NEaWVQZW5kaW5nOwotZXh0ZXJuIFBHRExMSU1QT1JUIHZv bGF0aWxlIGludCBQcm9jRGllU2VuZGVyUGlkOwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0 aWxlIGludCBQcm9jRGllU2VuZGVyVWlkOwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxl IHNpZ19hdG9taWNfdCBJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0UGVuZGluZzsK LWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgVHJhbnNhY3Rpb25U aW1lb3V0UGVuZGluZzsKLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWlj X3QgSWRsZVNlc3Npb25UaW1lb3V0UGVuZGluZzsKLWV4dGVybiBQR0RMTElNUE9SVCB2b2xh dGlsZSBzaWdfYXRvbWljX3QgUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nOwotZXh0ZXJuIFBH RExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBMb2dNZW1vcnlDb250ZXh0UGVuZGlu ZzsKLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVN0YXRz VXBkYXRlVGltZW91dFBlbmRpbmc7Ci0KLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBz aWdfYXRvbWljX3QgQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGluZzsKLWV4dGVybiBQR0RM TElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2xpZW50Q29ubmVjdGlvbkxvc3Q7Ci0K LS8qIHRoZXNlIGFyZSBtYXJrZWQgdm9sYXRpbGUgYmVjYXVzZSB0aGV5IGFyZSBleGFtaW5l ZCBieSBzaWduYWwgaGFuZGxlcnM6ICovCi1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUg dWludDMyIEludGVycnVwdEhvbGRvZmZDb3VudDsKLWV4dGVybiBQR0RMTElNUE9SVCB2b2xh dGlsZSB1aW50MzIgUXVlcnlDYW5jZWxIb2xkb2ZmQ291bnQ7Ci1leHRlcm4gUEdETExJTVBP UlQgdm9sYXRpbGUgdWludDMyIENyaXRTZWN0aW9uQ291bnQ7Ci0KLS8qIGluIHRjb3AvcG9z dGdyZXMuYyAqLwotZXh0ZXJuIHZvaWQgUHJvY2Vzc0ludGVycnVwdHModm9pZCk7Ci0KLS8q IFRlc3Qgd2hldGhlciBhbiBpbnRlcnJ1cHQgaXMgcGVuZGluZyAqLwotI2lmbmRlZiBXSU4z MgotI2RlZmluZSBJTlRFUlJVUFRTX1BFTkRJTkdfQ09ORElUSU9OKCkgXAotCSh1bmxpa2Vs eShJbnRlcnJ1cHRQZW5kaW5nKSkKLSNlbHNlCi0jZGVmaW5lIElOVEVSUlVQVFNfUEVORElO R19DT05ESVRJT04oKSBcCi0JKHVubGlrZWx5KFVOQkxPQ0tFRF9TSUdOQUxfUVVFVUUoKSkg PyBcCi0JIHBnd2luMzJfZGlzcGF0Y2hfcXVldWVkX3NpZ25hbHMoKSA6ICh2b2lkKSAwLCBc Ci0JIHVubGlrZWx5KEludGVycnVwdFBlbmRpbmcpKQotI2VuZGlmCi0KLS8qIFNlcnZpY2Ug aW50ZXJydXB0LCBpZiBvbmUgaXMgcGVuZGluZyBhbmQgaXQncyBzYWZlIHRvIHNlcnZpY2Ug aXQgbm93ICovCi0jZGVmaW5lIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgXAotZG8geyBcCi0J aWYgKElOVEVSUlVQVFNfUEVORElOR19DT05ESVRJT04oKSkgXAotCQlQcm9jZXNzSW50ZXJy dXB0cygpOyBcCi19IHdoaWxlKDApCi0KLS8qIElzIFByb2Nlc3NJbnRlcnJ1cHRzKCkgZ3Vh cmFudGVlZCB0byBjbGVhciBJbnRlcnJ1cHRQZW5kaW5nPyAqLwotI2RlZmluZSBJTlRFUlJV UFRTX0NBTl9CRV9QUk9DRVNTRUQoKSBcCi0JKEludGVycnVwdEhvbGRvZmZDb3VudCA9PSAw ICYmIENyaXRTZWN0aW9uQ291bnQgPT0gMCAmJiBcCi0JIFF1ZXJ5Q2FuY2VsSG9sZG9mZkNv dW50ID09IDApCi0KLSNkZWZpbmUgSE9MRF9JTlRFUlJVUFRTKCkgIChJbnRlcnJ1cHRIb2xk b2ZmQ291bnQrKykKLQotI2RlZmluZSBSRVNVTUVfSU5URVJSVVBUUygpIFwKLWRvIHsgXAot CUFzc2VydChJbnRlcnJ1cHRIb2xkb2ZmQ291bnQgPiAwKTsgXAotCUludGVycnVwdEhvbGRv ZmZDb3VudC0tOyBcCi19IHdoaWxlKDApCi0KLSNkZWZpbmUgSE9MRF9DQU5DRUxfSU5URVJS VVBUUygpICAoUXVlcnlDYW5jZWxIb2xkb2ZmQ291bnQrKykKLQotI2RlZmluZSBSRVNVTUVf Q0FOQ0VMX0lOVEVSUlVQVFMoKSBcCi1kbyB7IFwKLQlBc3NlcnQoUXVlcnlDYW5jZWxIb2xk b2ZmQ291bnQgPiAwKTsgXAotCVF1ZXJ5Q2FuY2VsSG9sZG9mZkNvdW50LS07IFwKLX0gd2hp bGUoMCkKLQotI2RlZmluZSBTVEFSVF9DUklUX1NFQ1RJT04oKSAgKENyaXRTZWN0aW9uQ291 bnQrKykKLQotI2RlZmluZSBFTkRfQ1JJVF9TRUNUSU9OKCkgXAotZG8geyBcCi0JQXNzZXJ0 KENyaXRTZWN0aW9uQ291bnQgPiAwKTsgXAotCUNyaXRTZWN0aW9uQ291bnQtLTsgXAotfSB3 aGlsZSgwKQotCi0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoJICBnbG9iYWxzLmgg LS0JCQkJCQkJCQkJCQkJCQkgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcmVnZXgvcmVnY3VzdG9tLmggYi9zcmMvaW5jbHVkZS9yZWdl eC9yZWdjdXN0b20uaAppbmRleCA4YzRkNWQ4Y2M3Yy4uYWIwMzhhMTJlOGEgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3JlZ2V4L3JlZ2N1c3RvbS5oCisrKyBiL3NyYy9pbmNsdWRlL3Jl Z2V4L3JlZ2N1c3RvbS5oCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSA8bGltaXRzLmg+ CiAjaW5jbHVkZSA8d2N0eXBlLmg+CiAKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAj aW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKIAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgkJCS8q IG5lZWRlZCBieSByc3RhY2t0b29kZWVwICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91 dGlscy9iYWNrZW5kX3N0YXR1cy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0 dXMuaAppbmRleCBhMzM0ZTA5NmU0YS4uOGIxMzgxMWYxNjcgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMv YmFja2VuZF9zdGF0dXMuaApAQCAtMTEsNiArMTEsNyBAQAogI2RlZmluZSBCQUNLRU5EX1NU QVRVU19ICiAKICNpbmNsdWRlICJkYXRhdHlwZS90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJp cGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFjb21tLmgiCiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCQkJLyogZm9yIEJhY2tlbmRUeXBlICovCiAjaW5jbHVkZSAic3RvcmFn ZS9wcm9jbnVtYmVyLmgiCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wZ3N0YXRf aW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3Bnc3RhdF9pbnRlcm5hbC5oCmluZGV4 IDNjYTRmNDU0ODk1Li42MmU3YzczNmU4NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRp bHMvcGdzdGF0X2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdzdGF0X2lu dGVybmFsLmgKQEAgLTE1LDYgKzE1LDcgQEAKIAogCiAjaW5jbHVkZSAiY29tbW9uL2hhc2hm bl91bnN0YWJsZS5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJs aWIvZHNoYXNoLmgiCiAjaW5jbHVkZSAibGliL2lsaXN0LmgiCiAjaW5jbHVkZSAicGdzdGF0 LmgiCmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZXJsL3BscGVybC5jIGIvc3JjL3BsL3BscGVy bC9wbHBlcmwuYwppbmRleCA5ZGRiODFkNDJiOS4uZDcxNTlkMDg0ZjEgMTAwNjQ0Ci0tLSBh L3NyYy9wbC9wbHBlcmwvcGxwZXJsLmMKKysrIGIvc3JjL3BsL3BscGVybC9wbHBlcmwuYwpA QCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNs dWRlICJleGVjdXRvci9zcGkuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAi aXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBh cnNlci9wYXJzZV90eXBlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKZGlmZiAtLWdp dCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMgYi9zcmMvcGwvcGxwZ3NxbC9zcmMv cGxfZXhlYy5jCmluZGV4IDY1YjBmZDA3OTBmLi4yMDYyNTBkYzM5YSAxMDA2NDQKLS0tIGEv c3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYworKysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMv cGxfZXhlYy5jCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSAiZXhlY3V0b3Ivc3BpLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3IvdHN0b3JlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJmdW5j YXBpLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1iL3N0cmlu Z2luZm9fbWIuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9u b2RlRnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9zdXBwb3J0bm9kZXMuaCIKICNpbmNsdWRl ICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCmRpZmYgLS1naXQgYS9zcmMvcG9ydC9wZ19udW1h LmMgYi9zcmMvcG9ydC9wZ19udW1hLmMKaW5kZXggODk1NDY2OTI3M2EuLjFkZjVlZTMwMzNm IDEwMDY0NAotLS0gYS9zcmMvcG9ydC9wZ19udW1hLmMKKysrIGIvc3JjL3BvcnQvcGdfbnVt YS5jCkBAIC0xNiw3ICsxNiwxMCBAQAogI2luY2x1ZGUgImMuaCIKICNpbmNsdWRlIDx1bmlz dGQuaD4KIAotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2lmbmRlZiBGUk9OVEVORAorI2lu Y2x1ZGUgInBvc3RncmVzLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgorI2VuZGlm CiAjaW5jbHVkZSAicG9ydC9wZ19udW1hLmgiCiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvcmVncmVzc19pbmplY3Rpb24uYyBiL3NyYy90 ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9yZWdyZXNzX2luamVjdGlvbi5jCmluZGV4 IDBjMzExM2VhYzJmLi5lMDkwZDVkMjhkMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL3JlZ3Jlc3NfaW5qZWN0aW9uLmMKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3JlZ3Jlc3NfaW5qZWN0aW9uLmMKQEAgLTE2LDcg KzE2LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgogI2luY2x1ZGUgImZtZ3Iu aCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0Lmgi CiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvdGVzdF9iaXRtYXBzZXQuYyBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvdGVzdF9iaXRtYXBzZXQuYwppbmRleCA2NmI2 YmFkYjgyZi4uNjRiNDQzYzViNGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9iaXRtYXBzZXQvdGVzdF9iaXRtYXBzZXQuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfYml0bWFwc2V0L3Rlc3RfYml0bWFwc2V0LmMKQEAgLTIwLDcgKzIwLDcgQEAKICNpbmNs dWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tb24vcGdfcHJuZy5oIgog I2luY2x1ZGUgImZtZ3IuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJp cGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibm9kZXMvYml0bWFwc2V0LmgiCiAjaW5jbHVk ZSAibm9kZXMvbm9kZXMuaCIKICNpbmNsdWRlICJub2Rlcy9wZ19saXN0LmgiCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYmxvb21maWx0ZXIvdGVzdF9ibG9vbWZpbHRl ci5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Jsb29tZmlsdGVyL3Rlc3RfYmxvb21maWx0 ZXIuYwppbmRleCBkZjQxMDY2MTM4Yy4uOWVmYTFiYmRmMmQgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9ibG9vbWZpbHRlci90ZXN0X2Jsb29tZmlsdGVyLmMKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Jsb29tZmlsdGVyL3Rlc3RfYmxvb21maWx0ZXIuYwpA QCAtMTQsOCArMTQsOCBAQAogCiAjaW5jbHVkZSAiY29tbW9uL3BnX3BybmcuaCIKICNpbmNs dWRlICJmbWdyLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgImxp Yi9ibG9vbWZpbHRlci5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogCiBQR19NT0RVTEVf TUFHSUM7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zYXNscHJlcC90 ZXN0X3Nhc2xwcmVwLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2FzbHByZXAvdGVzdF9z YXNscHJlcC5jCmluZGV4IDEyMTIxMmQ0ZmEyLi4xNWE0OWU2NDVlYSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nhc2xwcmVwL3Rlc3Rfc2FzbHByZXAuYworKysgYi9z cmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2FzbHByZXAvdGVzdF9zYXNscHJlcC5jCkBAIC0xNyw4 ICsxNyw4IEBACiAjaW5jbHVkZSAiY29tbW9uL3Nhc2xwcmVwLmgiCiAjaW5jbHVkZSAiZm1n ci5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0Lmgi CiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNp bmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogCiBQR19NT0RVTEVfTUFHSUM7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3NldHVwLmMgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3Rfc2htX21xL3NldHVwLmMKaW5kZXggNGY0MGE2MWUzZDkuLjI1OWMwYzgy NTNhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3NldHVwLmMK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS9zZXR1cC5jCkBAIC0xNSw2ICsx NSw3IEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiaXBjL2ludGVy cnVwdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgog I2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3b3JrZXIuaCIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9zaG1fbXEvdGVzdC5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3No bV9tcS90ZXN0LmMKaW5kZXggMGU1NTI4N2U1MTAuLjlmNDAxZDMwMTc2IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3Rlc3QuYworKysgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3Rfc2htX21xL3Rlc3QuYwpAQCAtMTQsNyArMTQsNyBAQAogI2luY2x1ZGUg InBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJmbWdyLmgiCi0jaW5jbHVkZSAibWlzY2FkbWlu LmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZlbnQu aCIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvd29ya2VyLmMg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3dvcmtlci5jCmluZGV4IGUxM2MwNWFl NWM3Li4xYjIyNTE1ZWM1YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3No bV9tcS93b3JrZXIuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3dvcmtl ci5jCkBAIC0xOSw3ICsxOSw3IEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCi0jaW5j bHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvYy5oIgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy94aWRf d3JhcGFyb3VuZC94aWRfd3JhcGFyb3VuZC5jIGIvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3Jh cGFyb3VuZC94aWRfd3JhcGFyb3VuZC5jCmluZGV4IGNhMjVkN2UwMjA2Li42NDM1M2FiMzYz ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC94aWRfd3Jh cGFyb3VuZC5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQveGlkX3dy YXBhcm91bmQuYwpAQCAtMTUsNyArMTUsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAK ICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2lu Y2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNp bmNsdWRlICJ1dGlscy94aWQ4LmgiCiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv cmVncmVzcy5jIGIvc3JjL3Rlc3QvcmVncmVzcy9yZWdyZXNzLmMKaW5kZXggZDVhYWZkZjM3 MGMuLjMyMWNkY2Q4YjU3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3JlZ3Jlc3Mu YworKysgYi9zcmMvdGVzdC9yZWdyZXNzL3JlZ3Jlc3MuYwpAQCAtMzMsOCArMzMsOCBAQAog I2luY2x1ZGUgImV4ZWN1dG9yL3NwaS5oIgogI2luY2x1ZGUgImZvcmVpZ24vZm9yZWlnbi5o IgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAj aW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNs dWRlICJub2Rlcy9zdXBwb3J0bm9kZXMuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1p emVyLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5jYXQuaCIKLS0gCjIuNDcuMwoK --------------WzeNeixNPsQ0a7SXozrFhDu6 Content-Type: text/x-patch; charset=UTF-8; name="v13-0006-Rename-postmaster-interrupt.c-to-ipc-signal_hand.patch" Content-Disposition: attachment; filename*0="v13-0006-Rename-postmaster-interrupt.c-to-ipc-signal_hand.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwMTc2ZDA1OWU0YjNkMDIwYmJkNmM3YWY3ZWNjZTZjMWNlZGUzOWEzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMTcgSnVuIDIwMjYgMDk6NTc6NTAgKzAzMDAK U3ViamVjdDogW1BBVENIIHYxMyA2LzldIFJlbmFtZSBwb3N0bWFzdGVyL2ludGVycnVwdC5j IHRvCiBpcGMvc2lnbmFsX2hhbmRsZXJzLmMKCnBvc3RtYXN0ZXIvaW50ZXJydXB0LmMgY29u dGFpbnMgc2lnbmFsIGhhbmRsaW5nIGZ1bmN0aW9ucywgc28gcmVuYW1lCml0IHRvIGlwYy9z aWduYWxfaGFuZGxlcnMuYywgdG8gYmV0dGVyIHJlZmxlY3QgaXRzIGNvbnRlbnRzLiBUaGUK ImludGVycnVwdCIgdGVybSBpcyBub3cgdXNlZCB0byBtZWFuIHRoZSBjb25jZXB0IGFyb3Vu ZApDSEVDS19GT1JfSU5URVJSVVBUUygpLiBJbnRlcnJ1cHRzIGNhbiBiZSByYWlzZWQgYnkg c2lnbmFsIGhhbmRsZXJzLApidXQgaXQncyBub3QgdGhlIHNhbWUgdGhpbmcuCi0tLQogY29u dHJpYi9wZ19wcmV3YXJtL2F1dG9wcmV3YXJtLmMgICAgICAgICAgICAgICB8ICAyICstCiBj b250cmliL3BnX3N0YXNoX2FkdmljZS9zdGFzaHBlcnNpc3QuYyAgICAgICAgIHwgIDIgKy0K IHNyYy9iYWNrZW5kL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSAr CiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAgICAgICAgICAgICAgIHwgIDEg Kwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgICAgICAgICAgICAgICAgICB8ICAy ICstCiBzcmMvYmFja2VuZC9pcGMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgIHwg MTggKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9pcGMvbWVzb24uYnVpbGQgICAg ICAgICAgICAgICAgICAgIHwgIDUgKysrKysKIC4uLi9pbnRlcnJ1cHQuYyA9PiBpcGMvc2ln bmFsX2hhbmRsZXJzLmN9ICAgICAgfCAgOCArKysrLS0tLQogc3JjL2JhY2tlbmQvbWVzb24u YnVpbGQgICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgMSAtCiBzcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYmd3cml0ZXIuYyAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL21lc29uLmJ1aWxkICAgICAgICAgICAgIHwgIDEgLQogc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9wZ2FyY2guYyAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFj a2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jICAgICAgICAgfCAgMiArLQogc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3cml0ZXIuYyAgICAgICAgICAgICB8ICAyICstCiAu Li4vcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgIHwgIDIgKy0K IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAgICAgfCAgMiAr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYyB8ICAy ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMgICAgIHwg IDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICAg fCAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgICAg ICB8ICAyICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jICAgICAg ICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAg ICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vbWV0aG9kX3dvcmtlci5j ICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAg ICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYyAg ICAgICAgICAgICAgfCAgMiArLQogLi4uL2ludGVycnVwdC5oID0+IGlwYy9zaWduYWxfaGFu ZGxlcnMuaH0gICAgICB8IDE2ICsrKysrKysrLS0tLS0tLS0KIHNyYy90ZXN0L21vZHVsZXMv d29ya2VyX3NwaS93b3JrZXJfc3BpLmMgICAgICAgfCAgMiArLQogMzEgZmlsZXMgY2hhbmdl ZCwgNjAgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL2JhY2tlbmQvaXBjL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jh Y2tlbmQvaXBjL21lc29uLmJ1aWxkCiByZW5hbWUgc3JjL2JhY2tlbmQve3Bvc3RtYXN0ZXIv aW50ZXJydXB0LmMgPT4gaXBjL3NpZ25hbF9oYW5kbGVycy5jfSAoOTYlKQogcmVuYW1lIHNy Yy9pbmNsdWRlL3twb3N0bWFzdGVyL2ludGVycnVwdC5oID0+IGlwYy9zaWduYWxfaGFuZGxl cnMuaH0gKDY4JSkKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3ByZXdhcm0vYXV0b3ByZXdh cm0uYyBiL2NvbnRyaWIvcGdfcHJld2FybS9hdXRvcHJld2FybS5jCmluZGV4IGJhMGJjOGU2 ZDRhLi5mMTE3NDVmNDc1NSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19wcmV3YXJtL2F1dG9w cmV3YXJtLmMKKysrIGIvY29udHJpYi9wZ19wcmV3YXJtL2F1dG9wcmV3YXJtLmMKQEAgLTMw LDkgKzMwLDkgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9yZWxhdGlvbi5oIgogI2luY2x1ZGUg ImFjY2Vzcy94YWN0LmgiCisjaW5jbHVkZSAiaXBjL3NpZ25hbF9oYW5kbGVycy5oIgogI2lu Y2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3b3JrZXIuaCIKLSNp bmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVm X2ludGVybmFscy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZHNtLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9kc21fcmVnaXN0cnkuaCIKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3Rhc2hfYWR2 aWNlL3N0YXNocGVyc2lzdC5jIGIvY29udHJpYi9wZ19zdGFzaF9hZHZpY2Uvc3Rhc2hwZXJz aXN0LmMKaW5kZXggNWJkZjRiZGRhYWUuLjllMDgzMDBjNTQxIDEwMDY0NAotLS0gYS9jb250 cmliL3BnX3N0YXNoX2FkdmljZS9zdGFzaHBlcnNpc3QuYworKysgYi9jb250cmliL3BnX3N0 YXNoX2FkdmljZS9zdGFzaHBlcnNpc3QuYwpAQCAtMTQsMTAgKzE0LDEwIEBACiAjaW5jbHVk ZSA8c3lzL3N0YXQuaD4KIAogI2luY2x1ZGUgImNvbW1vbi9oYXNoZm4uaCIKKyNpbmNsdWRl ICJpcGMvc2lnbmFsX2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAicGdfc3Rhc2hfYWR2aWNlLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtl ci5oIgotI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9mZC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9sYXRjaC5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvTWFrZWZpbGUgYi9zcmMvYmFj a2VuZC9NYWtlZmlsZQppbmRleCAxNjJkM2YxZjJhOS4uODIxNTZlZmYzYzIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL01ha2VmaWxlCkBA IC0yNiw2ICsyNiw3IEBAIFNVQkRJUlMgPSBcCiAJY29tbWFuZHMgXAogCWV4ZWN1dG9yIFwK IAlmb3JlaWduIFwKKwlpcGMgXAogCWxpYiBcCiAJbGlicHEgXAogCW1haW4gXApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHlmcm9tLmMKaW5kZXggZTZiYTAxMmU3ZDYuLjg2ZTQ4ZGY2NTM2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJw b3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzaWduYWwuaD4K ICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ZhY3V1bS5jCmluZGV4IDIxZTc0MTg0YjYxLi41Y2FkYTI4N2Q3OSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvdmFjdXVtLmMKQEAgLTQzLDExICs0MywxMSBAQAogI2luY2x1ZGUgImNvbW1hbmRz L3JlcGFjay5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImlw Yy9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJpcGMvc2lnbmFsX2hhbmRsZXJzLmgiCiAjaW5j bHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVk ZSAicG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dv cmtlcl9pbnRlcm5hbHMuaCIKLSNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgog I2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvaXBjL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvaXBjL01ha2VmaWxlCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40MTIwOTA5ZWJiZQotLS0gL2Rldi9udWxs CisrKyBiL3NyYy9iYWNrZW5kL2lwYy9NYWtlZmlsZQpAQCAtMCwwICsxLDE4IEBACisjLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIworIyBNYWtlZmlsZS0tCisjICAgIE1ha2VmaWxlIGZvciBi YWNrZW5kL2lwYworIworIyBJREVOVElGSUNBVElPTgorIyAgICBzcmMvYmFja2VuZC9pcGMv TWFrZWZpbGUKKyMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N1YmRpciA9IHNyYy9iYWNr ZW5kL2lwYwordG9wX2J1aWxkZGlyID0gLi4vLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRk aXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKKworT0JKUyA9IFwKKwlzaWduYWxfaGFuZGxlcnMu bworCitpbmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvY29tbW9uLm1rCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9pcGMvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9pcGMv bWVzb24uYnVpbGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFm N2RhZTEwYjYwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvaXBjL21lc29uLmJ1 aWxkCkBAIC0wLDAgKzEsNSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK2JhY2tlbmRfc291cmNlcyArPSBmaWxlcygK KyAgJ3NpZ25hbF9oYW5kbGVycy5jJywKKykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvaW50ZXJydXB0LmMgYi9zcmMvYmFja2VuZC9pcGMvc2lnbmFsX2hhbmRsZXJz LmMKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9pbnRlcnJ1cHQuYwpyZW5hbWUgdG8gc3JjL2JhY2tlbmQvaXBjL3NpZ25hbF9oYW5k bGVycy5jCmluZGV4IDIwZjdlMzRlMjA0Li40NGIzOWJjOWVjZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYworKysgYi9zcmMvYmFja2VuZC9pcGMv c2lnbmFsX2hhbmRsZXJzLmMKQEAgLTEsMTMgKzEsMTMgQEAKIC8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogICoKLSAqIGludGVycnVwdC5jCi0gKgkgIEludGVycnVwdCBoYW5kbGluZyByb3V0 aW5lcy4KKyAqIHNpZ25hbF9oYW5kbGVycy5jCisgKgkgIFN0YW5kYXJkIHNpZ25hbCBoYW5k bGVycy4KICAqCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKICAqIFBvcnRpb25zIENvcHlyaWdodCAo YykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCiAgKgog ICogSURFTlRJRklDQVRJT04KLSAqCSAgc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1 cHQuYworICoJICBzcmMvYmFja2VuZC9pcGMvc2lnbmFsX2hhbmRsZXJzLmMKICAqCiAgKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqLwpAQCAtMTcsOCArMTcsOCBAQAogI2luY2x1ZGUgPHVu aXN0ZC5oPgogCiAjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgorI2luY2x1ZGUgImlwYy9z aWduYWxfaGFuZGxlcnMuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKLSNpbmNsdWRlICJw b3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5o IgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9t ZXNvbi5idWlsZAppbmRleCBmNzM3ZDc5OWM2MS4uYjZhZjExYTIxMjUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL21lc29uLmJ1aWxk CkBAIC0xNSw2ICsxNSw3IEBAIHN1YmRpcignY2F0YWxvZycpCiBzdWJkaXIoJ2NvbW1hbmRz JykKIHN1YmRpcignZXhlY3V0b3InKQogc3ViZGlyKCdmb3JlaWduJykKK3N1YmRpcignaXBj JykKIHN1YmRpcignaml0JykKIHN1YmRpcignbGliJykKIHN1YmRpcignbGlicHEnKQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9NYWtlZmlsZSBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvTWFrZWZpbGUKaW5kZXggNTUwNDRiMmJjNmYuLmE0NzhkZGJhYjJlIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL01ha2VmaWxlCisrKyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvTWFrZWZpbGUKQEAgLTIwLDcgKzIwLDYgQEAgT0JKUyA9IFwK IAljaGVja3BvaW50ZXIubyBcCiAJZGF0YWNoZWNrc3VtX3N0YXRlLm8gXAogCWZvcmtfcHJv Y2Vzcy5vIFwKLQlpbnRlcnJ1cHQubyBcCiAJbGF1bmNoX2JhY2tlbmQubyBcCiAJcGdhcmNo Lm8gXAogCXBtY2hpbGQubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmlu ZGV4IDMxY2FkNWRmMDE1Li4zM2Q5YThkZGNkZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9h dXRvdmFjdXVtLmMKQEAgLTgxLDEzICs4MSwxMyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3Zh Y3V1bS5oIgogI2luY2x1ZGUgImNvbW1vbi9pbnQuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgi CisjaW5jbHVkZSAiaXBjL3NpZ25hbF9oYW5kbGVycy5oIgogI2luY2x1ZGUgImxpYi9pbGlz dC5oIgogI2luY2x1ZGUgImxpYnBxL3Bxc2lnbmFsLmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAicGdzdGF0Lmgi CiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCi0jaW5jbHVkZSAicG9zdG1h c3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuaCIK ICNpbmNsdWRlICJzdG9yYWdlL2Fpb19zdWJzeXMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1 Zm1nci5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5j IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5jCmluZGV4IDZiNzMxMmI3NWQ5 Li5mMTk5ZDkyZjU3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dy aXRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYwpAQCAtMzMs MTEgKzMzLDExIEBACiAKICNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgogI2luY2x1ZGUgImlw Yy9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJpcGMvc2lnbmFsX2hhbmRsZXJzLmgiCiAjaW5j bHVkZSAibGlicHEvcHFzaWduYWwuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRl ICJwb3N0bWFzdGVyL2F1eHByb2Nlc3MuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd3Jp dGVyLmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJz dG9yYWdlL2Fpb19zdWJzeXMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zl9pbnRlcm5hbHMu aCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv Y2hlY2twb2ludGVyLmMKaW5kZXggYmQ3Mzg4ODc0N2IuLjBiZTBiOTAwOWU4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCisrKyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKQEAgLTQ1LDEyICs0NSwxMiBAQAog I2luY2x1ZGUgImNhdGFsb2cvcGdfYXV0aGlkLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVm cmVtLmgiCiAjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgorI2luY2x1ZGUgImlwYy9zaWdu YWxfaGFuZGxlcnMuaCIKICNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgogI2luY2x1ZGUg InBnc3RhdC5oIgogI2luY2x1ZGUgInBvcnQvYXRvbWljcy5oIgogI2luY2x1ZGUgInBvc3Rt YXN0ZXIvYXV4cHJvY2Vzcy5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3cml0ZXIuaCIK LSNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL3N5bmNyZXAuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Fpb19zdWJzeXMuaCIKICNpbmNs dWRlICJzdG9yYWdlL2J1Zm1nci5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbWVzb24uYnVpbGQK aW5kZXggNmNiYTIzYmJlZWYuLmM4YmFlZjMzMGY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv bWVzb24uYnVpbGQKQEAgLTgsNyArOCw2IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygK ICAgJ2NoZWNrcG9pbnRlci5jJywKICAgJ2RhdGFjaGVja3N1bV9zdGF0ZS5jJywKICAgJ2Zv cmtfcHJvY2Vzcy5jJywKLSAgJ2ludGVycnVwdC5jJywKICAgJ2xhdW5jaF9iYWNrZW5kLmMn LAogICAncGdhcmNoLmMnLAogICAncG1jaGlsZC5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJj aC5jCmluZGV4IDgwOThlMjlmZjY1Li5mOWRiMzVjOTI4NSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L3BnYXJjaC5jCkBAIC0zNCwxMSArMzQsMTEgQEAKICNpbmNsdWRlICJhcmNoaXZlL2FyY2hp dmVfbW9kdWxlLmgiCiAjaW5jbHVkZSAiYXJjaGl2ZS9zaGVsbF9hcmNoaXZlLmgiCiAjaW5j bHVkZSAiaXBjL2ludGVycnVwdC5oIgorI2luY2x1ZGUgImlwYy9zaWduYWxfaGFuZGxlcnMu aCIKICNpbmNsdWRlICJsaWIvYmluYXJ5aGVhcC5oIgogI2luY2x1ZGUgImxpYnBxL3Bxc2ln bmFsLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXhw cm9jZXNzLmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRl ICJwb3N0bWFzdGVyL3BnYXJjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3Zh cmlhYmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9haW9fc3Vic3lzLmgiCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9zeXNsb2dnZXIuYwppbmRleCBiMzk5YWRjY2U3NS4uNjRkNzUxMWVlNWUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYwpAQCAtMzIsNiArMzIsNyBAQAogI2lu Y2x1ZGUgPHN5cy90aW1lLmg+CiAKICNpbmNsdWRlICJjb21tb24vZmlsZV9wZXJtLmgiCisj aW5jbHVkZSAiaXBjL3NpZ25hbF9oYW5kbGVycy5oIgogI2luY2x1ZGUgImxpYi9zdHJpbmdp bmZvLmgiCiAjaW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIKICNpbmNsdWRlICJtaXNjYWRt aW4uaCIKQEAgLTM5LDcgKzQwLDYgQEAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRl ICJwZ3RpbWUuaCIKICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCi0jaW5jbHVkZSAi cG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0 ZXIuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3N5c2xvZ2dlci5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvZHNtLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1 bW1hcml6ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCmlu ZGV4IGVhNmFmYWI4ZDY5Li5lZDA4MGNkYWM0OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci93YWxzdW1tYXJpemVyLmMKQEAgLTMzLDEwICszMywxMCBAQAogI2luY2x1ZGUgImNvbW1h bmRzL2RiY29tbWFuZHNfeGxvZy5oIgogI2luY2x1ZGUgImNvbW1vbi9ibGtyZWZ0YWJsZS5o IgogI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJpcGMvc2lnbmFsX2hh bmRsZXJzLmgiCiAjaW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIKICNpbmNsdWRlICJwZ3N0 YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1eHByb2Nlc3MuaCIKLSNpbmNsdWRlICJw b3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvd2Fsc3VtbWFy aXplci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9haW9fc3Vic3lzLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL3dhbHdyaXRlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3cml0ZXIu YwppbmRleCBkMzIyOTdmYzI1OS4uMjU3NDVlZDMwYjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci93YWx3cml0ZXIuYwpAQCAtNDcsOSArNDcsOSBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9n LmgiCiAjaW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIKICNpbmNsdWRlICJpcGMvaW50ZXJy dXB0LmgiCisjaW5jbHVkZSAiaXBjL3NpZ25hbF9oYW5kbGVycy5oIgogI2luY2x1ZGUgInBn c3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5oIgotI2luY2x1ZGUg InBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci93YWx3cml0 ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Fpb19zdWJzeXMuaCIKICNpbmNsdWRlICJzdG9y YWdlL2J1Zm1nci5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCA2ZTVmM2FiMTIzZi4uYWRmNzc2 NmU4YzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBw bHlwYXJhbGxlbHdvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCkBAIC0xNTgsMTAgKzE1OCwxMCBAQAogI2luY2x1 ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCisjaW5jbHVk ZSAiaXBjL3NpZ25hbF9oYW5kbGVycy5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0Lmgi CiAjaW5jbHVkZSAibGlicHEvcHFtcS5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgotI2luY2x1 ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9n aWNhbGxhdW5jaGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5o IgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCmluZGV4IDkyMGM1YTNkZTk5Li45NjIyMzhi ODIwMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVu Y2hlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIu YwpAQCAtMjcsOSArMjcsOSBAQAogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJp cGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibGliL2RzaGFzaC5oIgorI2luY2x1ZGUgImlw Yy9zaWduYWxfaGFuZGxlcnMuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJw b3N0bWFzdGVyL2Jnd29ya2VyLmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi9vcmlnaW4uaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90Lmgi CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3NlcXVlbmNl c3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5bmMu YwppbmRleCAxY2ZkOWEzNmIzNC4uYjcyMjI4OGFlMzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYwpAQCAtNTcsOCArNTcsOCBA QAogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oIgogI2luY2x1ZGUg ImNvbW1hbmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgorI2lu Y2x1ZGUgImlwYy9zaWduYWxfaGFuZGxlcnMuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKLSNp bmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L2xvZ2ljYWx3b3JrZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJu YWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCmluZGV4IDQ4OWMxMTVmNDVmLi45NjU5MmNl NDUxNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90 c3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMu YwpAQCAtNjQsOSArNjQsOSBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlLmgiCiAjaW5jbHVkZSAiaXBjL2ludGVy cnVwdC5oIgorI2luY2x1ZGUgImlwYy9zaWduYWxfaGFuZGxlcnMuaCIKICNpbmNsdWRlICJs aWJwcS9wcXNpZ25hbC5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgotI2luY2x1ZGUgInBvc3Rt YXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3RzeW5jLmgiCiAjaW5jbHVkZSAicmVwbGljYXRp b24vc25hcGJ1aWxkLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYwppbmRleCA3Nzk5MjY2YzYxNC4uNzIxOWI4MGMwZDQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMjYzLDYgKzI2Myw3IEBACiAjaW5j bHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9y LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIgorI2luY2x1ZGUgImlw Yy9zaWduYWxfaGFuZGxlcnMuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIK QEAgLTI3MCw3ICsyNzEsNiBAQAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBv cnQvcGdfYml0dXRpbHMuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCi0j aW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVy L3dhbHdyaXRlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2NvbmZsaWN0LmgiCiAjaW5j bHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgiCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMKaW5kZXggMDEwNjU3ZmI0MDAuLjhjNjE1ODNmYmZkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc2xvdC5jCkBAIC00NSw4ICs0NSw4IEBACiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVfdXRp bHMuaCIKICNpbmNsdWRlICJjb21tb24vc3RyaW5nLmgiCiAjaW5jbHVkZSAiaXBjL2ludGVy cnVwdC5oIgorI2luY2x1ZGUgImlwYy9zaWduYWxfaGFuZGxlcnMuaCIKICNpbmNsdWRlICJw Z3N0YXQuaCIKLSNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L3Nsb3RzeW5jLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKaW5kZXggZDc4MDRhNzM0NTQuLjlhYmM5ODE3 MzYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKQEAgLTYxLDEx ICs2MSwxMSBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfYXV0aGlkLmgiCiAjaW5jbHVkZSAi ZnVuY2FwaS5oIgogI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJpcGMv c2lnbmFsX2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNs dWRlICJsaWJwcS9wcXNpZ25hbC5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUg InBvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5oIgotI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJy dXB0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRleCA3OTUzOTNiMGJlMC4uZTVh YzA4ZWIxNzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC02NSwx MyArNjUsMTMgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJj b21tYW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAiaXBj L3NpZ25hbF9oYW5kbGVycy5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVk ZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJsaWJwcS9wcm90b2NvbC5oIgogI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL3JlcGxub2Rlcy5oIgogI2lu Y2x1ZGUgInBnc3RhdC5oIgotI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAj aW5jbHVkZSAicmVwbGljYXRpb24vZGVjb2RlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24v bG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3RzeW5jLmgiCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9tZXRob2Rfd29ya2VyLmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2Fpby9tZXRob2Rfd29ya2VyLmMKaW5kZXggYWJmZmVlZmMyYzEuLjc2 NjM1ZTNjNDFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9tZXRob2Rf d29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vbWV0aG9kX3dvcmtlci5j CkBAIC0zMSwxMCArMzEsMTAgQEAKICNpbmNsdWRlIDxsaW1pdHMuaD4KIAogI2luY2x1ZGUg ImlwYy9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJpcGMvc2lnbmFsX2hhbmRsZXJzLmgiCiAj aW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIKICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0aWxz LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXhwcm9jZXNzLmgiCi0jaW5jbHVkZSAicG9z dG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Fpby5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvYWlvX2ludGVybmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9haW9fc3Vi c3lzLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggODA0NDliMGIzY2QuLjFjOTI2OTI4ZTlj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiY29t bWFuZHMvcHJlcGFyZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3JlcGFjay5oIgogI2luY2x1 ZGUgImNvbW1vbi9wZ19wcm5nLmgiCisjaW5jbHVkZSAiaXBjL3NpZ25hbF9oYW5kbGVycy5o IgogI2luY2x1ZGUgImppdC9qaXQuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2lu Y2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCkBAIC01NSw3ICs1Niw2IEBACiAjaW5jbHVkZSAi cGdfdHJhY2UuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0L3BnX2dl dG9wdF9jdHguaCIKLSNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1 ZGUgInBvc3RtYXN0ZXIvcG9zdG1hc3Rlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xv Z2ljYWxsYXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIu aCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYwppbmRleCA1MzQzZDQyMTlhZS4uZjQ5 OTJmZjE2MjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMKQEAgLTMyLDEzICsz MiwxMyBAQAogI2luY2x1ZGUgImFjY2Vzcy9wYXJhbGxlbC5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfYXV0aGlkLmgiCiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVfcGVybS5oIgorI2luY2x1 ZGUgImlwYy9zaWduYWxfaGFuZGxlcnMuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgog I2luY2x1ZGUgImxpYnBxL3Bxc2lnbmFsLmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIK ICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRl ICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKLSNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVy cnVwdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvcG9zdG1hc3Rlci5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL3Nsb3RzeW5jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCBiL3NyYy9pbmNs dWRlL2lwYy9zaWduYWxfaGFuZGxlcnMuaApzaW1pbGFyaXR5IGluZGV4IDY4JQpyZW5hbWUg ZnJvbSBzcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2ludGVycnVwdC5oCnJlbmFtZSB0byBzcmMv aW5jbHVkZS9pcGMvc2lnbmFsX2hhbmRsZXJzLmgKaW5kZXggZTE0ODI2MjZkZmQuLmE0OTlh MjcxNTM4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2ludGVycnVwdC5o CisrKyBiL3NyYy9pbmNsdWRlL2lwYy9zaWduYWxfaGFuZGxlcnMuaApAQCAtMSwyMyArMSwy MyBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgotICogaW50ZXJydXB0LmgKLSAqCSAg SW50ZXJydXB0IGhhbmRsaW5nIHJvdXRpbmVzLgorICogc2lnbmFsX2hhbmRsZXJzLmgKKyAq CSAgU3RhbmRhcmQgc2lnbmFsIGhhbmRsaW5nIHJvdXRpbmVzLgogICoKLSAqIFJlc3BvbnNl cyB0byBpbnRlcnJ1cHRzIGFyZSBmYWlybHkgdmFyaWVkIGFuZCBtYW55IHR5cGVzIG9mIGJh Y2tlbmRzCi0gKiBoYXZlIHRoZWlyIG93biBpbXBsZW1lbnRhdGlvbnMsIGJ1dCB3ZSBwcm92 aWRlIGEgZmV3IGdlbmVyaWMgdGhpbmdzCi0gKiBoZXJlIHRvIGZhY2lsaXRhdGUgY29kZSBy ZXVzZS4KKyAqIFJlc3BvbnNlcyB0byBzaWduYWxzIGFyZSBmYWlybHkgdmFyaWVkIGFuZCBt YW55IHR5cGVzIG9mIGJhY2tlbmRzIGhhdmUKKyAqIHRoZWlyIG93biBpbXBsZW1lbnRhdGlv bnMsIGJ1dCB3ZSBwcm92aWRlIGEgZmV3IGdlbmVyaWMgdGhpbmdzIGhlcmUgdG8KKyAqIGZh Y2lsaXRhdGUgY29kZSByZXVzZS4KICAqCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5 OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKICAqIFBvcnRp b25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBD YWxpZm9ybmlhCiAgKgogICogSURFTlRJRklDQVRJT04KLSAqCSAgc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci9pbnRlcnJ1cHQuaAorICoJICBzcmMvaW5jbHVkZS9pcGMvc2lnbmFsX2hhbmRs ZXJzLmgKICAqCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogCi0jaWZuZGVmIElOVEVS UlVQVF9ICi0jZGVmaW5lIElOVEVSUlVQVF9ICisjaWZuZGVmIFNJR05BTF9IQU5ETEVSU19I CisjZGVmaW5lIFNJR05BTF9IQU5ETEVSU19ICiAKICNpbmNsdWRlIDxzaWduYWwuaD4KIApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYyBi L3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMKaW5kZXggYjYzNWE0 ODYzNDkuLmJkOTAwMmJmNDFkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3dvcmtl cl9zcGkvd29ya2VyX3NwaS5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93 b3JrZXJfc3BpLmMKQEAgLTIzLDkgKzIzLDkgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgog CiAvKiBUaGVzZSBhcmUgYWx3YXlzIG5lY2Vzc2FyeSBmb3IgYSBiZ3dvcmtlciAqLworI2lu Y2x1ZGUgImlwYy9zaWduYWxfaGFuZGxlcnMuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK ICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rl ci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAKIC8qIHRoZXNl IGhlYWRlcnMgYXJlIHVzZWQgYnkgdGhpcyBwYXJ0aWN1bGFyIHdvcmtlcidzIGNvZGUgKi8K LS0gCjIuNDcuMwoK --------------WzeNeixNPsQ0a7SXozrFhDu6 Content-Type: text/x-patch; charset=UTF-8; name="v13-0007-Remove-dependency-on-utils-resowner.h-just-for-R.patch" Content-Disposition: attachment; filename*0="v13-0007-Remove-dependency-on-utils-resowner.h-just-for-R.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhNjI1N2NmZjBjMTFiYTUzYWY4NTgxMGVmYjlkMTE5YTc4Yjk0Y2E1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFR1ZSwgMTYgSnVuIDIwMjYgMjE6NTY6NDUgKzAzMDAK U3ViamVjdDogW1BBVENIIHYxMyA3LzldIFJlbW92ZSBkZXBlbmRlbmN5IG9uIHV0aWxzL3Jl c293bmVyLmgganVzdCBmb3IKIFJlc291cmNlT3duZXIgdHlwZWRlZgoKLS0tCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICB8IDEgKwogc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9hdXhwcm9jZXNzLmMgfCAxICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvd2FpdGV2ZW50 c2V0LmggIHwgNSArKy0tLQogMyBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDMg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFw cGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCmluZGV4IDJjNjcy MTg5MTJlLi5jNmFiOWQ1ZTE5ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpA QCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgorI2luY2x1ZGUgInV0 aWxzL3Jlc293bmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvd2FpdF9ldmVudC5oIgogCiAvKiBT aGFyZWQgc3RhdGUgZm9yIHBhcmFsbGVsLWF3YXJlIEFwcGVuZC4gKi8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9hdXhwcm9jZXNzLmMKaW5kZXggYWIyYWY4NjJkNjkuLmFlNzUwNWI5OTAzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuYworKysgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuYwpAQCAtMjUsNiArMjUsNyBAQAog I2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0 aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcHNfc3RhdHVzLmgiCisjaW5jbHVkZSAidXRpbHMv cmVzb3duZXIuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAKIApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS93YWl0ZXZlbnRzZXQuaCBiL3NyYy9pbmNsdWRl L3N0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgKaW5kZXggNTM0MTI2N2YwYTAuLmIxOGU0ODE1YmZj IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3dhaXRldmVudHNldC5oCisrKyBi L3NyYy9pbmNsdWRlL3N0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgKQEAgLTI1LDggKzI1LDYgQEAK ICNpZm5kZWYgV0FJVEVWRU5UU0VUX0gKICNkZWZpbmUgV0FJVEVWRU5UU0VUX0gKIAotI2lu Y2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCi0KIC8qCiAgKiBCaXRtYXNrcyBmb3IgZXZlbnRz IHRoYXQgbWF5IHdha2UtdXAgV2FpdExhdGNoKCksIFdhaXRMYXRjaE9yU29ja2V0KCksIG9y CiAgKiBXYWl0RXZlbnRTZXRXYWl0KCkuCkBAIC03MSwxMyArNjksMTQgQEAgdHlwZWRlZiBz dHJ1Y3QgV2FpdEV2ZW50CiB0eXBlZGVmIHN0cnVjdCBXYWl0RXZlbnRTZXQgV2FpdEV2ZW50 U2V0OwogCiBzdHJ1Y3QgTGF0Y2g7CitzdHJ1Y3QgUmVzb3VyY2VPd25lckRhdGE7CiAKIC8q CiAgKiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4gd2FpdGV2ZW50c2V0LmMKICAqLwog ZXh0ZXJuIHZvaWQgSW5pdGlhbGl6ZVdhaXRFdmVudFN1cHBvcnQodm9pZCk7CiAKLWV4dGVy biBXYWl0RXZlbnRTZXQgKkNyZWF0ZVdhaXRFdmVudFNldChSZXNvdXJjZU93bmVyIHJlc293 bmVyLCBpbnQgbmV2ZW50cyk7CitleHRlcm4gV2FpdEV2ZW50U2V0ICpDcmVhdGVXYWl0RXZl bnRTZXQoc3RydWN0IFJlc291cmNlT3duZXJEYXRhICpyZXNvd25lciwgaW50IG5ldmVudHMp OwogZXh0ZXJuIHZvaWQgRnJlZVdhaXRFdmVudFNldChXYWl0RXZlbnRTZXQgKnNldCk7CiBl eHRlcm4gdm9pZCBGcmVlV2FpdEV2ZW50U2V0QWZ0ZXJGb3JrKFdhaXRFdmVudFNldCAqc2V0 KTsKIGV4dGVybiBpbnQJQWRkV2FpdEV2ZW50VG9TZXQoV2FpdEV2ZW50U2V0ICpzZXQsIHVp bnQzMiBldmVudHMsIHBnc29ja2V0IGZkLAotLSAKMi40Ny4zCgo= --------------WzeNeixNPsQ0a7SXozrFhDu6 Content-Type: text/x-patch; charset=UTF-8; name="v13-0008-Remove-unnecessary-include-from-tcopprot.h.patch" Content-Disposition: attachment; filename*0="v13-0008-Remove-unnecessary-include-from-tcopprot.h.patch" Content-Transfer-Encoding: base64 RnJvbSA2YWRhMGMxMWUwMWMzMWY2ZmUwZjVmZjhlNzljMjExODE5ZTBmZTQ5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFR1ZSwgMTYgSnVuIDIwMjYgMjI6Mzg6MzQgKzAzMDAK U3ViamVjdDogW1BBVENIIHYxMyA4LzldIFJlbW92ZSB1bm5lY2Vzc2FyeSAjaW5jbHVkZSBm cm9tIHRjb3Bwcm90LmgKCkl0IHdhcyBtYWRlIHVubmVjZXNzYXJ5IGluIGNvbW1pdCAxN2Y1 MWVhODE4LiBBZGQgY29ycmVzcG9uZGluZyAjaW5jbHVkZQp0byBzb3VyY2UgZmlsZXMgdGhh dCB3ZXJlIHJlbHlpbmcgb24gdGhlIGluZGlyZWN0ICNpbmNsdWRlLgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMgICAgICAgICAgICAgICAgIHwgMSArCiBz cmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2tfd29ya2VyLmMgICAgICAgICAgICAgICAgICB8 IDEgKwogc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAxICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJh bGxlbHdvcmtlci5jIHwgMSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Ns b3RzeW5jLmMgICAgICAgICAgICB8IDEgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fs c2VuZGVyLmMgICAgICAgICAgICAgICAgICAgfCAxICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv YWlvL21ldGhvZF93b3JrZXIuYyAgICAgICAgICAgICAgIHwgMSArCiBzcmMvaW5jbHVkZS90 Y29wL3Rjb3Bwcm90LmggICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEgLQogOCBmaWxl cyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwppbmRleCA1YzkyZTA1YWQ4Ni4uYWZiMmY5MmFl YzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwpAQCAtMzksNiAr MzksNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cmVkaWNhdGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRlICJzdG9y YWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKICNpbmNsdWRl ICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvY29tYm9jaWQuaCIKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFja193b3JrZXIuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3JlcGFja193b3JrZXIuYwppbmRleCA1ODg4YTVhMWZlMS4uMDRkOWZm MGQ4M2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFja193b3JrZXIu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2tfd29ya2VyLmMKQEAgLTI2LDYg KzI2LDcgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbmFwYnVpbGQuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgorI2luY2x1ZGUg InN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNp bmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9s aWJwcS9wcW1xLmMgYi9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMKaW5kZXggYzExNDMzOTY4 YzguLmM1NWI3MGU1NjM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMK KysrIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5j bHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5o IgogI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2Nz aWduYWwuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMv YnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtl ci5jCmluZGV4IGFkZjc3NjZlOGM3Li4yNmViMmJiNmJmZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMK QEAgLTE3MCw2ICsxNzAsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNs dWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNs dWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90Lmgi CiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5o IgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3lu Yy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCmluZGV4 IDk2NTkyY2U0NTE0Li4yMDgyOGU0MjQ5OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwpAQCAtNzQsNiArNzQsNyBAQAogI2luY2x1ZGUgInN0 b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJv dC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHNlbmRlci5jCmluZGV4IGU1YWMwOGViMTc5Li5iMWFkNDkyYWUzNSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKQEAgLTg4LDYgKzg4LDcgQEAKICNpbmNsdWRl ICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWdu YWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ0Y29w L2Rlc3QuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9zdG9yYWdlL2Fpby9tZXRob2Rfd29ya2VyLmMgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2Fpby9tZXRob2Rfd29ya2VyLmMKaW5kZXggNzY2MzVlM2M0MWMuLjk0MTU2ZjI2ZWI0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9tZXRob2Rfd29ya2VyLmMK KysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vbWV0aG9kX3dvcmtlci5jCkBAIC00NCw2 ICs0NCw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKICNpbmNsdWRlICJzdG9y YWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgogI2lu Y2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9p bnQuaCIKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaCBiL3NyYy9p bmNsdWRlL3Rjb3AvdGNvcHByb3QuaAppbmRleCA1YmM1YmNmYjIwZC4uMGQ0YWViZmQ1NDMg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaAorKysgYi9zcmMvaW5j bHVkZS90Y29wL3Rjb3Bwcm90LmgKQEAgLTE2LDcgKzE2LDYgQEAKIAogI2luY2x1ZGUgIm5v ZGVzL3BhcmFtcy5oIgogI2luY2x1ZGUgIm5vZGVzL3BsYW5ub2Rlcy5oIgotI2luY2x1ZGUg InN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1 ZGUgInV0aWxzL3F1ZXJ5ZW52aXJvbm1lbnQuaCIKIAotLSAKMi40Ny4zCgo= --------------WzeNeixNPsQ0a7SXozrFhDu6 Content-Type: text/x-patch; charset=UTF-8; name="v13-0009-Replace-Latches-with-Interrupts.patch" Content-Disposition: attachment; filename="v13-0009-Replace-Latches-with-Interrupts.patch" Content-Transfer-Encoding: base64 RnJvbSBjNjU5MGE5NjMxYTdkMGVmY2MwY2Q2ZWExNzU3ZmViOGFiNGUxNzA4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMjQgSnVuIDIwMjYgMjM6MjE6MjMgKzAzMDAK U3ViamVjdDogW1BBVENIIHYxMyA5LzldIFJlcGxhY2UgTGF0Y2hlcyB3aXRoIEludGVycnVw dHMKClRoZSBMYXRjaCB3YXMgYSBmbGFnLCB3aXRoIGFuIGludGVyLXByb2Nlc3Mgc2lnbmFs bGluZyBtZWNoYW5pc20gdGhhdAphbGxvd2VkIGEgcHJvY2VzcyB0byB3YWl0IGZvciB0aGUg TGF0Y2ggdG8gYmUgc2V0LiAgTXkgb3JpZ2luYWwgdmlzaW9uCmZvciBMYXRjaGVzIHdhcyB0 aGF0IHlvdSBjb3VsZCBoYXZlIGRpZmZlcmVudCBsYXRjaGVzIGZvciBkaWZmZXJlbnQKdGhp bmdzIHRoYXQgeW91IG5lZWQgdG8gd2FpdCBmb3IsIGJ1dCBpbiBwcmFjdGljZSwgYWxtb3N0 IGFsbCBjb2RlCnVzZWQgb25lICJwcm9jZXNzIGxhdGNoIiB0aGF0IHdhcyBzaGFyZWQgZm9y IGFsbCB3YWtldXBzLiAgVGhlIG9ubHkKZXhjZXB0aW9uIHdhcyB0aGUgInJlY292ZXJ5V2Fr ZXVwTGF0Y2giLiAgSSB0aGluayB0aGUgcmVhc29uIHRoYXQgd2UKZW5kZWQgdXAganVzdCBz aGFyaW5nIHRoZSBzYW1lIGxhdGNoIGZvciBhbGwgd2FrZXVwcyBpcyB0aGF0IGluCnByYWN0 aWNlLCBpdCB3YXMgY3VtYmVyc29tZSB0byBkZWFsIHdpdGggbXVsdGlwbGUgbGF0Y2hlcy4g IEZvcgpzdGFydGVycywgdGhlcmUgd2FzIG5vIG1hY2hpbmVyeSBmb3Igd2FpdGluZyBmb3Ig bXVsdGlwbGUgbGF0Y2hlcyBhdAp0aGUgc2FtZSB0aW1lLiAgU2Vjb25kbHksIGNoYW5naW5n IHRoZSAib3duZXJzaGlwIiBvZiBhIGxhdGNoIG5lZWRlZApleHRyYSBsb2NraW5nIG9yIG90 aGVyIGNvb3JkaW5hdGlvbi4gIFRoaXJkbHksIGVhY2ggaW50ZXItcHJvY2VzcwpsYXRjaCBu ZWVkZWQgdG8gYmUgaW5pdGlhbGl6ZWQgYXQgcG9zdG1hc3RlciBzdGFydHVwIHRpbWUuCgpU aGlzIHBhdGNoIGVtYnJhY2VzIHRoZSByZWFsaXR5IG9mIGhvdyBMYXRjaGVzIHdlcmUgdXNl ZCwgYW5kIHJlcGxhY2VzCnRoZSBMYXRjaGVzIHdpdGggYSBwZXItcHJvY2VzcyBpbnRlcnJ1 cHQgbWFzay4gIFlvdSBjYW4gbm8gbG9uZ2VyCmFsbG9jYXRlIExhdGNoZXMgaW4gYXJiaXRy YXJ5IHNoYXJlZCBtZW1vcnkgc3RydWN0cyBhbmQgYW4gaW50ZXJydXB0CmlzIGFsd2F5cyBk aXJlY3RlZCBhdCBhIHBhcnRpY3VsYXIgcHJvY2VzcywgYWRkcmVzc2VkIGJ5IGl0cwpQcm9j TnVtYmVyLiAgRWFjaCBwcm9jZXNzIGhhcyBhIGJpdG1hc2sgb2YgcGVuZGluZyBpbnRlcnJ1 cHRzIGluClBHUFJPQy4gIEJ1dCB0aGVyZSBhcmUgbm93IG1hbnkgaW50ZXJydXB0IGJpdHMg YXZhaWxhYmxlLCBhbmQgeW91IGNhbgp3YWl0IGZvciBhbnkgbnVtYmVyIG9mIHRoZW0gaW4g b25lIFdhaXRJbnRlcnJ1cHQgY2FsbC4KClRoZSBpbnRlcnJ1cHQgYml0cyByZXBsYWNlIFBy b2NTaWduYWxzIGFuZCBtYW55IGRpcmVjdCB1c2VzIG9mIFVuaXgKc2lnbmFscy4gIEZvciBl eGFtcGxlLCB0aGUgYmFja2VuZC1wcml2YXRlIFByb2NEaWVQZW5kaW5nIGZsYWcgaXMKcmVw bGFjZWQgd2l0aCB0aGUgSU5URVJSVVBUX1RFUk1JTkFURSBpbnRlcnJ1cHQuICBTSUdURVJN IHN0aWxsIHdvcmtzLApidXQgdGhlIGRlZmF1bHQgU0lHVEVSTSBzaWduYWwgaGFuZGxlciBu b3cganVzdCByYWlzZXMKSU5URVJSVVBUX1RFUk1JTkFURSwgYW5kIHRoZSBpbnRlcnJ1cHQg aGFuZGxlciBkb2VzIGFsbCB0aGUgd29yay4KCkhhbmRsaW5nIGludGVycnVwdHMKLS0tLS0t LS0tLS0tLS0tLS0tLQoKVG8gY29udHJvbCB3aGljaCBpbnRlcnJ1cHRzIGNhbiBiZSBwcm9j ZXNzZWQgYXQgd2hhdCB0aW1lLCB0aGVyZSBhcmUgYQpmZXcgbWVjaGFuaXNtcy4gIEZpcnN0 bHksIHlvdSBjYW4gcmVnaXN0ZXIgYSBoYW5kbGVyIGZ1bmN0aW9uIGZvciBlYWNoCmludGVy cnVwdCwgd2hpY2ggd2lsbCBiZSBjYWxsZWQgZnJvbSBDSEVDS19GT1JfSU5URVJSVVBUUygp IGlmIHRoZQppbnRlcnJ1cHQgaXMgcGVuZGluZy4gIEFmdGVyIHRoaXMgY29tbWl0LCBQcm9j ZXNzSW50ZXJydXB0cygpIGhhcyBubwprbm93bGVkZ2UgYWJvdXQgdGhlIG1lYW5pbmcgb2Yg dGhlIGRpZmZlcmVudCBpbnRlcnJ1cHRzLCBpdCBqdXN0IGNhbGxzCnRoZSByZWdpc3RlcmVk IGNhbGxiYWNrIGZ1bmN0aW9ucy4gIERpZmZlcmVudCBwcm9jZXNlc3MgY2FuIHNldCB1cApk aWZmZXJlbnQgaGFuZGxlcnMsIGFjY29yZGluZyB0byB0aGVpciBuZWVkcywgYnV0IHNvbWUg Y29tbW9ubHkgdXNlZApoYW5kbGVycyBhcmUgcHJvdmlkZWQgYW5kIGluc3RhbGxlZCBhdCBi YWNrZW5kIHN0YXJ0dXAuCgpJbiBhZGRpdGlvbiB0byBDSEVDS19GT1JfSU5URVJSVVBUUygp LCB5b3UgY2FuIGFsc28gY2hlY2sgd2hldGhlciBhCnBhcnRpY3VsYXIgaW50ZXJydXB0IGlz IHBlbmRpbmcgYW5kIGhhbmRsZSBpdCB5b3Vyc2VsZi4KCk1vc3QgY2FsbGVycyBvZiBXYWl0 SW50ZXJydXB0ICh3aGljaCByZXBsYWNlcyBXYWl0TGF0Y2gpIHVzZQpDaGVja0ZvckludGVy cnVwdE1hc2ssIHdoaWNoIGlzIGEgYml0bWFzayB0aGF0IGluY2x1ZGVzIGFsbCB0aGUKaW50 ZXJydXB0cyB0aGF0IGFyZSBoYW5kbGVkIGJ5IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgaW4g dGhlIGN1cnJlbnQKc3RhdGUuICBDSEVDS19GT1JfSU5URVJSVVBUUygpIGNsZWFycyB0aGUg aW50ZXJydXB0cyBiaXRzIHRoYXQgaXQKcHJvY2Vzc2VzLCB0aGUgY2FsbGVyIGlzIG5vIGxv bmdlciByZXF1aXJlZCB0byBkbyBDbGVhckludGVycnVwdCAob3IKUmVzZXRMYXRjaCkgZm9y IHRob3NlIGJpdHMuICBJZiB5b3Ugd2FrZSB1cCBmb3Igb3RoZXIgaW50ZXJydXB0cyB0aGF0 CmFyZSBub3QgaGFuZGxlZCBieSBDSEVDS19GT1JfSU5URVJSVVBUUygpLCB5b3Ugc3RpbGwg bmVlZCB0byBjbGVhcgp0aG9zZS4KCk5vdyB0aGF0IHRoZXJlIGFyZSBzZXBhcmF0ZSBiaXRz IGZvciBkaWZmZXJlbnQgdGhpbmdzLCBpdCdzIHBvc3NpYmxlCnRvIGRvIGUuZy4gV2FpdElu dGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCB8CklOVEVSUlVQVF9RVUVSWV9DQU5D RUwpIHRvIHdhaXQganVzdCBmb3IgYSBjb25maWcgcmVsb2FkIHJlcXVlc3Qgb3IKcXVlcnkg Y2FuY2VsbGF0aW9uLCBhbmQgbm90IHdha2UgdXAgb24gb3RoZXIgZXZlbnRzIGxpa2UgYSBz aHV0ZG93bgpyZXF1ZXN0LiAgVGhhdCdzIG5vdCB2ZXJ5IHVzZWZ1bCBpbiBwcmFjdGljZSwg YXMKQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBzdGlsbCBwcm9jZXNzZXMgdGhvc2UgaW50ZXJy dXB0cyBpZiB5b3UgY2FsbAppdCwgYW5kIHlvdSB3b3VsZCB3YW50IHRvIHByb2Nlc3MgYWxs IHRoZSBzdGFuZGFyZCBpbnRlcnJ1cHRzIHByb21wdGx5CmFueXdheS4gIEl0IG1pZ2h0IGJl IHVzZWZ1bCB0byBjaGVjayBmb3Igc3BlY2lmaWMgaW50ZXJydXB0cyB3aXRoCkludGVycnVw dFBlbmRpbmcoKSwgd2l0aG91dCBpbW1lZGlhdGVseSBwcm9jZXNzaW5nIHRoZW0sIGhvd2V2 ZXIuCnNwZ2RvaW5zZXJ0KCkgZG9lcyBzb21ldGhpbmcgbGlrZSB0aGF0LiAgSW4gdGhpcyBj b21taXQgSSBkaWRuJ3QKY2hhbmdlIGl0cyBvdmVyYWxsIGxvZ2ljLCBidXQgaXQgcHJvYmFi bHkgY291bGQgYmUgbWFkZSBtb3JlCmZpbmUtZ3JhaW5lZCBub3cuCgpNb3JlIGltcG9ydGFu dGx5LCB5b3UgY2FuIG5vdyBoYXZlIGFkZGl0aW9uYWwgaW50ZXJydXB0cyB0aGF0IGFyZQpw cm9jZXNzZWQgbGVzcyBmcmVxdWVudGx5IGFuZCBkbyBub3Qgd2FrZSB1cCB0aGUgYmFja2Vu ZCB3aGVuIGl0J3Mgbm90CnByZXBhcmVkIHRvIHByb2Nlc3MgdGhlbS4gIEZvciBleGFtcGxl LCB0aGUgU0lOVkFMX0NBVENIVVAgaW50ZXJydXB0CmlzIG9ubHkgcHJvY2Vzc2VkIHdoZW4g dGhlIGJhY2tlbmQgaXMgaWRsZS4gIFByZXZpb3VzbHksIGEgY2F0Y2h1cApyZXF1ZXN0IHdv dWxkIHdha2UgdXAgdGhlIHByb2Nlc3Mgd2hldGhlciBpdCB3YXMgcmVhZHkgdG8gaGFuZGxl IGl0IG9yCm5vdDsgbm93IGl0IG9ubHkgd2FrZXMgdXAgd2hlbiB0aGUgYmFja2VuZCBpcyBp ZGxlLiAgVGhhdCdzIG5vdCB0b28Kc2lnbmlmaWNhbnQgZm9yIGNhdGNodXAgaW50ZXJydXB0 cyBiZWNhdXNlIHRoZXkgZG9uJ3Qgb2NjdXIgdGhhdCBvZnRlbgphbnl3YXksIGJ1dCBpdCdz IHN0aWxsIG5pY2UgYW5kIGNvdWxkIGJlIG1vcmUgc2lnbmlmaWNhbnQgd2l0aCBvdGhlcgpp bnRlcnJ1cHRzLgoKVGhlcmUncyBzdGlsbCBhIGdlbmVyYWwtcHVycG9zZSBJTlRFUlJVUFRf V0FJVF9XQUtFVVAgaW50ZXJydXB0IHRoYXQKaXMgbXVsdGlwbGV4ZWQgZm9yIG1hbnkgZGlm ZmVyZW50IHB1cnBvc2VzIGluIGRpZmZlcmVudCBwcm9jZXNzZXMsIGZvcgpleGFtcGxlIHRv IHdha2UgdXAgdGhlIHdhbHdyaXRlciB3aGVuIGl0IGhhcyB3b3JrIHRvIGRvLCBhbmQgdG8g d2FrZQp1cCBwcm9jZXNzZXMgd2FpdGluZyBvbiBhIGNvbmRpdGlvbiB2YXJpYWJsZS4gIFRo ZSBjb21tb24gcHJvcGVydHkgb2YKdGhvc2UgdXNlcyBpcyB0aGF0IHRoZXJlJ3Mgc29tZSBv dGhlciBmbGFnIG9yIGNvbmRpdGlvbiB0aGF0IGlzCmNoZWNrZWQgb24gZWFjaCB3YWtldXAs IHRoZSB3YWtldXAgaW50ZXJydXB0IGl0c2VsZiBtZWFucyBtZXJlbHkgdGhhdApzb21ldGhp bmcgaW50ZXJlc3RpbmcgbWlnaHQndmUgaGFwcGVuZWQuCgpSZXBsYWNpbmcgcmVjb3ZlcnlX YWtldXBMYXRjaAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhlIElOVEVSUlVQ VF9SRUNPVkVSWV9DT05USU5VRSByZXBsYWNlcyByZWNvdmVyeVdha2V1cExhdGNoLiAgV2l0 aAp0aGlzIG5ldyBpbnRlcmZhY2UsIHRoZSBzdGFydHVwIHByb2Nlc3MgY2FuIGVhc2lseSB3 YWl0IGZvciB0aGUgY29tbW9uCmludGVycnVwdHMgYXQgdGhlIHNhbWUgdGltZSBhcyBJTlRF UlJVUFRfUkVDT1ZFUllfQ09OVElOVUUuClByZXZpb3VzbHksIHRoZSBjb2RlIHRoYXQgd2Fp dGVkIG9uIHJlY292ZXJ5V2FrZXVwTGF0Y2ggaGFkIHRvIHJlc29ydAp0byB0aW1lb3V0cyB0 byByZWFjdCB0byBvdGhlciBzaWduYWxzLCBiZWNhdXNlIGl0IHdhcyBub3QgcG9zc2libGUg dG8Kd2FpdCBmb3IgdHdvIGxhdGNoZXMgYXQgdGhlIHNhbWUgdGltZS4gIFByZXZpb3VzIGF0 dGVtcHQgYXQgdW5pZnlpbmcKdGhvc2Ugd2FrZXVwcyB3YXMgaW4gY29tbWl0IGFjMjI5Mjlh MjYsIGJ1dCBpdCB3YXMgcmV2ZXJ0ZWQgaW4gY29tbWl0CjAwZjY5MGEyMzkgYmVjYXVzZSBp dCBjYXVzZWQgYSBsb3Qgb2Ygc3B1cmlvdXMgd2FrZXVwcyB3aGVuIHRoZQpzdGFydHVwIHBy b2Nlc3Mgd2FzIHdhaXRpbmcgZm9yIHJlY292ZXJ5IGNvbmZsaWN0cy4KCkZpeGluZyBsb3N0 IHdha2V1cCBpc3N1ZSBpbiBsb2dpY2FsIHJlcGxpY2F0aW9uIGxhdW5jaGVyCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpTaW1p bGFybHkgdGhlcmUncyBub3cgYSBkZWRpY2F0ZWQgaW50ZXJydXB0IGJpdCB0byBub3RpZnkg dGhlIGxvZ2ljYWwKcmVwbGljYXRpb24gbGF1bmNoZXIgYWJvdXQgc3Vic2NyaXB0aW9uIGNo YW5nZXMuICBUaGF0IGZpeGVzIHRoZSBsb3N0Cndha2V1cCBpc3N1ZSBkaXNjdXNzZWQgYXQK aHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mZjA2NjNkOS04MDExLTQy MGYtYTE2OS1lZmJmNTczMjdjYjVAaWtpLmZpCgpCYWNrZ3JvdW5kIHdvcmtlciBzdGF0ZSBj aGFuZ2Ugbm90aWZpY2F0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KCklOVEVSUlVQVF9XQUlUX1dBS0VVUCBpcyB1c2VkIGZvciBiZ3dvcmtlciBz dGF0ZSBjaGFuZ2Ugbm90aWZpY2F0aW9uLgpBcyBwYXJ0IG9mIGEgcHJvamVjdCB0byByZW1v dmUgdGhlIHJlbGlhbmNlIG9uIFBJRHMgdG8gaWRlbnRpZnkKYmFja2VuZHMsIGJhY2tlbmRz IHRoYXQgcmVnaXN0ZXIgZHluYW1pYyBiYWNrZ3JvdW5kIHdvcmtlcnMgd2lsbCBub3cKcmVj ZWl2ZSBJTlRFUlJVUFRfV0FJVF9XQUtFVVAgc2VudCBkaXJlY3RseSBieSB0aGUgcG9zdG1h c3RlciB3aGVuIHRoZQp3b3JrZXIgc3RhdGUgY2hhbmdlcy4gIFByZXZpb3VzbHksIHRoZSBw b3N0bWFzdGVyIHdvdWxkIHNlbmQgYSBTSUdVU1IxCnNpZ25hbCwgd2hpY2ggcmVsaWVkIG9u IHRoZSBQcm9jU2lnbmFsIHN5c3RlbSdzIGhhbmRsZXIgc2V0dGluZyB0aGUKaW50ZXJydXB0 IGZsYWcsIHdpdGggdGhlIHNhbWUgZW5kIGVmZmVjdC4gIE5vdyB0aGF0IGludGVybWVkaWF0 ZSBzdGVwCmlzIHNraXBwZWQuCgpUaGUgZmllbGQgYmd3X25vdGlmeV9waWQgc3RpbGwgZXhp c3RzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgYnV0CmhhcyBubyBlZmZlY3QgYW5k IG1heSBiZSByZW1vdmVkIGluIGEgbGF0ZXIgcmVsZWFzZS4KUmVnaXN0ZXJCYWNrZ3JvdW5k V29ya2VyKCkgbm93IGF1dG9tYXRpY2FsbHkgYXNzdW1lcyB0aGF0IHRoZSBjYWxsZXIKd291 bGQgbGlrZSBzdGF0ZSBjaGFuZ2Ugbm90aWZpY2F0aW9ucyBkZWxpdmVyZWQgdG8gaXRzIHBy b2MgbnVtYmVyLAp1bmxlc3MgQkdXX05PX05PVElGWSBpcyBzZXQgaW4gYmd3X2ZsYWdzLgoK UmVtb3Zpbmcgb3RoZXIgY2FzZXMgb2YgUElEcyBmcm9tIHRoZSBiZ3dvcmtlciBBUEkgaXMg bGVmdCBmb3IgbGF0ZXIKd29yazsgdGhpcyBwYXRjaCBpcyBjb25jZXJuZWQgb25seSB3aXRo IHJlbW92aW5nIHRoZSBQcm9jU2lnbmFsCmluZnJhc3RydWN0dXJlLiAoQWxsIHRoYXQncyBs ZWZ0IGluIHByb2NzaWduYWwuYyBpcyB0aGUKUHJvY1NpZ25hbEJhcnJpZXIgc3R1ZmY7IHRo YXQgc2hvdWxkIHBlcmhhcHMgYmUgbW92ZWQgLyByZW5hbWVkIG5vdykuCgpDby1hdXRob3Jl ZC1ieTogVGhvbWFzIE11bnJvIDx0bXVucm9AcG9zdGdyZXNxbC5vcmc+ClJldmlld2VkLWJ5 OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+CkRpc2N1c3Npb246IGh0dHBz Oi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvNDc2NjcyZTctNjJmMS00Y2FiLWE4 MjItZjNhOGU5NDlkZDNmQGlraS5maQpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jl c3FsLm9yZy9tZXNzYWdlLWlkL2ZmMDY2M2Q5LTgwMTEtNDIwZi1hMTY5LWVmYmY1NzMyN2Ni NUBpa2kuZmkKLS0tCiBjb250cmliL3BnX3ByZXdhcm0vYXV0b3ByZXdhcm0uYyAgICAgICAg ICAgICAgfCAgNjMgKy0KIGNvbnRyaWIvcGdfc3Rhc2hfYWR2aWNlL3N0YXNocGVyc2lzdC5j ICAgICAgICB8ICA0MiArLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jICAg ICAgICAgICAgIHwgIDIyICstCiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcu YyAgICAgICAgICAgfCAgIDQgKy0KIGRvYy9zcmMvc2dtbC9iZ3dvcmtlci5zZ21sICAgICAg ICAgICAgICAgICAgICB8ICAzMiArLQogZG9jL3NyYy9zZ21sL29hdXRoLXZhbGlkYXRvcnMu c2dtbCAgICAgICAgICAgIHwgICAyICstCiBkb2Mvc3JjL3NnbWwvc291cmNlcy5zZ21sICAg ICAgICAgICAgICAgICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zh Y3V1bWxhenkuYyAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0vUkVBRE1FICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS9SRUFETUUucGFyYWxsZWwgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3BhcmFsbGVsLmMgICAgICAgICB8ICA4MCArLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYyAgICAgICAgICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMgICAgICAgIHwgIDExICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyAgICAgfCAgOTggKystCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nd2FpdC5jICAgICAgICAgfCAgMzggKy0KIHNyYy9iYWNr ZW5kL2JhY2t1cC9iYXNlYmFja3VwX3Rocm90dGxlLmMgICAgICB8ICAxNyArLQogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvYXN5bmMuYyAgICAgICAgICAgICAgICAgIHwgMTUzICsrLS0tCiBz cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMgICAgICAgICAgfCAgMTEgKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFja193b3JrZXIuYyAgICAgICAgICB8ICAgOSAr LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgICAgICAgICAgICAgICAgIHwgIDE0 ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICAgICAgICAgfCAg MjEgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYyAgICAgICAgICAgICB8 ICAxMCArLQogc3JjL2JhY2tlbmQvaXBjL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAg IHwgICAxICsKIHNyYy9iYWNrZW5kL2lwYy9SRUFETUUubWQgICAgICAgICAgICAgICAgICAg ICB8IDI2MSArKysrKysrKwogc3JjL2JhY2tlbmQvaXBjL2ludGVycnVwdC5jICAgICAgICAg ICAgICAgICAgIHwgNjE4ICsrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvaXBjL21l c29uLmJ1aWxkICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2lwYy9z aWduYWxfaGFuZGxlcnMuYyAgICAgICAgICAgICB8IDEyNSArKy0tCiBzcmMvYmFja2VuZC9s aWJwcS9hdXRoLmMgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5k L2xpYnBxL2JlLXNlY3VyZS1nc3NhcGkuYyAgICAgICAgICB8ICAxNyArLQogc3JjL2JhY2tl bmQvbGlicHEvYmUtc2VjdXJlLW9wZW5zc2wuYyAgICAgICAgIHwgICA4ICstCiBzcmMvYmFj a2VuZC9saWJwcS9iZS1zZWN1cmUuYyAgICAgICAgICAgICAgICAgfCAgNjIgKy0KIHNyYy9i YWNrZW5kL2xpYnBxL3BxY29tbS5jICAgICAgICAgICAgICAgICAgICB8ICAzNSArLQogc3Jj L2JhY2tlbmQvbGlicHEvcHFtcS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDI2ICstCiBz cmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAxNDkgKyst LS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jICAgICAgICAgICB8ICAg MSAtCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgICAgICAgICAgICAgfCAx ODEgKystLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYyAgICAgICAgICAg ICB8ICA0OSArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyAgICAg ICAgIHwgMTg4ICsrKy0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9kYXRhY2hlY2tzdW1f c3RhdGUuYyAgIHwgIDg1ICstLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYyAg ICAgICAgICAgICAgIHwgIDk3ICsrLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFz dGVyLmMgICAgICAgICAgIHwgIDU1ICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N0YXJ0 dXAuYyAgICAgICAgICAgICAgfCAxMDQgKy0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5 c2xvZ2dlci5jICAgICAgICAgICAgfCAgMzUgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv d2Fsc3VtbWFyaXplci5jICAgICAgICB8ICA3NyArLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvd2Fsd3JpdGVyLmMgICAgICAgICAgICB8ICA0NiArLQogLi4uL3JlcGxpY2F0aW9uL2xv Z2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgMTE2ICsrLS0KIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAgICB8IDEzNCArKy0tCiAuLi4vcmVwbGlj YXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYyAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyAgICB8IDE4MyArKystLS0KIHNy Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8ICAzNyArLQog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgIDQ3ICst CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAgICAgICAgfCAgMTQg Ky0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAuYyAgICAgICAgICAgICB8ICAz MyArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYyAgICAgICAgIHwg IDU0ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlcmZ1bmNzLmMgICAg fCAgIDMgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAgICAg ICB8IDIwMCArKystLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL2Fpby5jICAgICAgICAg ICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vYWlvX2lvLmMgICAg ICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9tZXRob2Rfd29y a2VyLmMgICAgICAgfCAgMzYgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1n ci5jICAgICAgICAgICB8ICAyMSArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJl ZWxpc3QuYyAgICAgICAgIHwgIDI3ICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9NYWtl ZmlsZSAgICAgICAgICAgICAgfCAgIDEgLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNt X2ltcGwuYyAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9p cGMuYyAgICAgICAgICAgICAgICAgfCAgMTQgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L2xhdGNoLmMgICAgICAgICAgICAgICB8IDM4OSAtLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvbWVzb24uYnVpbGQgICAgICAgICAgIHwgICAxIC0KIHNyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jICAgICAgICAgICB8ICAxNiArLQogc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jICAgICAgICAgIHwgMjI0ICstLS0tLS0KIHNy Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobV9tcS5jICAgICAgICAgICAgICB8IDEyNiArKy0t CiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaWduYWxmdW5jcy5jICAgICAgICAgfCAgMTMg Ky0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbC5jICAgICAgICAgICAgICB8ICA2 NiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMgICAgICAgICAgIHwg IDIzICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgICAgICAgICAgICAg fCAgNDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3dhaXRldmVudHNldC5jICAgICAg ICB8IDQ4NyArKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRp dGlvbl92YXJpYWJsZS5jIHwgIDM0ICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJl ZGljYXRlLmMgICAgICAgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9w cm9jLmMgICAgICAgICAgICAgICB8IDE1MSArKy0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9z bWdyL3NtZ3IuYyAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9zdG9yYWdl L3N5bmMvc3luYy5jICAgICAgICAgICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL3Rjb3Av YmFja2VuZF9zdGFydHVwLmMgICAgICAgICAgICB8ICAgOCArCiBzcmMvYmFja2VuZC90Y29w L3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCA2MDAgKysrKysrKystLS0tLS0tLS0K IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYyAgICAgICAgICAgICB8ICAxMSAr LQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21pc2MuYyAgICAgICAgICAgICAgICAgIHwgIDI2 ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMgICAgICAgICAgICAgfCAg IDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYyAgICAgICAgICAgICAgICB8 ICAgNSArLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMgICAgICAgICAgICAg IHwgIDI0ICstCiBzcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMgICAgICAgICAg ICAgfCAgNzYgKy0tCiBzcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgICAgICAg ICAgICAgfCAgNDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvdGltZW91dC5jICAgICAg ICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMgICAgICAg ICAgICAgICAgIHwgIDI0ICstCiBzcmMvaW5jbHVkZS9NYWtlZmlsZSAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmggICAg ICAgICAgICAgICAgIHwgICA0IC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3Zlcnku aCAgICAgICAgICAgICB8ICAxOCAtCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9hc3luYy5oICAg ICAgICAgICAgICAgICAgfCAgIDYgLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvcmVwYWNrLmgg ICAgICAgICAgICAgICAgIHwgICA2IC0KIHNyYy9pbmNsdWRlL2lwYy9pbnRlcnJ1cHQuaCAg ICAgICAgICAgICAgICAgICB8IDI4MCArKysrKy0tLQogc3JjL2luY2x1ZGUvaXBjL3NpZ25h bF9oYW5kbGVycy5oICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS9pcGMvc3Rh bmRhcmRfaW50ZXJydXB0cy5oICAgICAgICAgfCAyMTIgKysrKysrCiBzcmMvaW5jbHVkZS9s aWJwcS9saWJwcS1iZS1mZS1oZWxwZXJzLmggICAgICAgfCAgNDcgKy0KIHNyYy9pbmNsdWRl L2xpYnBxL2xpYnBxLmggICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1 ZGUvbGlicHEvcHFtcS5oICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5j bHVkZS9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2lu Y2x1ZGUvbWlzY2FkbWluLmggICAgICAgICAgICAgICAgICAgICAgIHwgICA3ICstCiBzcmMv aW5jbHVkZS9wb3N0bWFzdGVyL2Jnd29ya2VyLmggICAgICAgICAgICAgfCAgMTAgKy0KIHNy Yy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3JrZXJfaW50ZXJuYWxzLmggICB8ICAgNCArLQog c3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9zdGFydHVwLmggICAgICAgICAgICAgIHwgICA0ICst CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggICAgICAgfCAgIDQg LQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdHN5bmMuaCAgICAgICAgICAgIHwgICA3 IC0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmggICAgICAgICB8ICAg MSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaCAgICAgICAgICAgfCAg IDEgLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyX3ByaXZhdGUuaCAgIHwg ICAyICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8 ICAgNSArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9sYXRjaC5oICAgICAgICAgICAgICAgICAg IHwgMTQyIC0tLS0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oICAgICAgICAgICAgICAg ICAgICB8ICAxNyArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggICAgICAg ICAgICAgIHwgIDMzIC0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ludmFsLmggICAgICAgICAg ICAgICAgICB8ICAgNyAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3dhaXRldmVudHNldC5oICAg ICAgICAgICAgfCAgMzIgKy0KIHNyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaCAgICAgICAg ICAgICAgICAgICB8ICAgNiAtCiBzcmMvaW5jbHVkZS91dGlscy9tZW11dGlscy5oICAgICAg ICAgICAgICAgICAgfCAgIDEgLQogc3JjL3BvcnQvcGdzbGVlcC5jICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9udGVz dGVyLmMgICAgICAgICAgfCAgIDIgKy0KIC4uLi9tb2R1bGVzL3Rlc3RfY2hlY2tzdW1zL3Rl c3RfY2hlY2tzdW1zLmMgICB8ICAgNiArLQogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9t cS9zZXR1cC5jICAgICAgICAgIHwgIDE1ICstCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2ht X21xL3Rlc3QuYyAgICAgICAgICAgfCAgMTQgKy0KIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9z aG1fbXEvdGVzdF9zaG1fbXEuaCAgICB8ICAgMyArCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf c2htX21xL3dvcmtlci5jICAgICAgICAgfCAgMTAgKy0KIHNyYy90ZXN0L21vZHVsZXMvd29y a2VyX3NwaS93b3JrZXJfc3BpLmMgICAgICB8ICA0NSArLQogc3JjL3Rlc3QvcGVybC9Qb3N0 Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbSAgICAgIHwgICA0ICstCiBzcmMvdGVzdC9yZWNvdmVy eS90LzA0OV93YWl0X2Zvcl9sc24ucGwgICAgICAgfCAgIDIgKy0KIHNyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgNCArLQogMTMwIGZpbGVzIGNo YW5nZWQsIDM2NTggaW5zZXJ0aW9ucygrKSwgMzU2OCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvYmFja2VuZC9pcGMvUkVBRE1FLm1kCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL2JhY2tlbmQvaXBjL2ludGVycnVwdC5jCiBkZWxldGUgbW9kZSAxMDA2NDQgc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvbGF0Y2guYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9p bmNsdWRlL2lwYy9zdGFuZGFyZF9pbnRlcnJ1cHRzLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmMvaW5jbHVkZS9zdG9yYWdlL2xhdGNoLmgKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3By ZXdhcm0vYXV0b3ByZXdhcm0uYyBiL2NvbnRyaWIvcGdfcHJld2FybS9hdXRvcHJld2FybS5j CmluZGV4IGYxMTc0NWY0NzU1Li4xOWZiZDRiMTFkMCAxMDA2NDQKLS0tIGEvY29udHJpYi9w Z19wcmV3YXJtL2F1dG9wcmV3YXJtLmMKKysrIGIvY29udHJpYi9wZ19wcmV3YXJtL2F1dG9w cmV3YXJtLmMKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9yZWxhdGlv bi5oIgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCi0jaW5jbHVkZSAiaXBjL3NpZ25hbF9o YW5kbGVycy5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwZ3N0 YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9idWZfaW50ZXJuYWxzLmgiCkBAIC0zOCw5ICszOCw3IEBACiAjaW5jbHVkZSAic3Rv cmFnZS9kc21fcmVnaXN0cnkuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9pcGMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9sd2xvY2suaCIKLSNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIK ICNpbmNsdWRlICJzdG9yYWdlL3JlYWRfc3RyZWFtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9z bWdyLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgpAQCAtMTcxLDEwICsxNjksMTMg QEAgYXV0b3ByZXdhcm1fbWFpbihEYXR1bSBtYWluX2FyZykKIAlib29sCQlmaW5hbF9kdW1w X2FsbG93ZWQgPSB0cnVlOwogCVRpbWVzdGFtcFR6IGxhc3RfZHVtcF90aW1lID0gMDsKIAot CS8qIEVzdGFibGlzaCBzaWduYWwgaGFuZGxlcnM7IG9uY2UgdGhhdCdzIGRvbmUsIHVuYmxv Y2sgc2lnbmFscy4gKi8KLQlwcXNpZ25hbChTSUdURVJNLCBTaWduYWxIYW5kbGVyRm9yU2h1 dGRvd25SZXF1ZXN0KTsKLQlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25m aWdSZWxvYWQpOwotCXBxc2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5k bGVyKTsKKwkvKgorCSAqIFdlIHdpbGwgY2hlY2sgZm9yIElOVEVSUlVQVF9URVJNSU5BVEUg ZXhwbGljaXRseSBpbiB0aGUgbWFpbiBsb29wLCBzbworCSAqIGRpc2FibGUgdGhlIG5vcm1h bCBpbnRlcnJ1cHQgaGFuZGxlci4KKwkgKi8KKwlEaXNhYmxlSW50ZXJydXB0KElOVEVSUlVQ VF9URVJNSU5BVEUpOworCisJLyogRGVmYXVsdCBzaWduYWwgaGFuZGxlcnMgYXJlIE9LIGZv ciB1czsgdW5ibG9jayBzaWduYWxzLiAqLwogCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2ln bmFscygpOwogCiAJLyogQ3JlYXRlIChpZiBuZWNlc3NhcnkpIGFuZCBhdHRhY2ggdG8gb3Vy IHNoYXJlZCBtZW1vcnkgYXJlYS4gKi8KQEAgLTIyMywyNyArMjI0LDI3IEBAIGF1dG9wcmV3 YXJtX21haW4oRGF0dW0gbWFpbl9hcmcpCiAJaWYgKGZpcnN0X3RpbWUpCiAJewogCQlhcHdf bG9hZF9idWZmZXJzKCk7Ci0JCWZpbmFsX2R1bXBfYWxsb3dlZCA9ICFTaHV0ZG93blJlcXVl c3RQZW5kaW5nOworCQlmaW5hbF9kdW1wX2FsbG93ZWQgPSAhSW50ZXJydXB0UGVuZGluZyhJ TlRFUlJVUFRfVEVSTUlOQVRFKTsKIAkJbGFzdF9kdW1wX3RpbWUgPSBHZXRDdXJyZW50VGlt ZXN0YW1wKCk7CiAJfQogCiAJLyogUGVyaW9kaWNhbGx5IGR1bXAgYnVmZmVycyB1bnRpbCB0 ZXJtaW5hdGVkLiAqLwotCXdoaWxlICghU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwl3aGls ZSAoIUludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1RFUk1JTkFURSkpCiAJewotCQkvKiBJ biBjYXNlIG9mIGEgU0lHSFVQLCBqdXN0IHJlbG9hZCB0aGUgY29uZmlndXJhdGlvbi4gKi8K LQkJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCi0JCXsKLQkJCUNvbmZpZ1JlbG9hZFBlbmRp bmcgPSBmYWxzZTsKKwkJLyogQ2hlY2sgZm9yIHN0YW5kYXJkIGludGVycnVwdHMgYW5kIGNv bmZpZyByZWxvYWQgKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJaWYgKENvbnN1 bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQogCQkJUHJvY2Vzc0NvbmZp Z0ZpbGUoUEdDX1NJR0hVUCk7Ci0JCX0KIAogCQlpZiAoYXV0b3ByZXdhcm1faW50ZXJ2YWwg PD0gMCkKIAkJewogCQkJLyogV2UncmUgb25seSBkdW1waW5nIGF0IHNodXRkb3duLCBzbyBq dXN0IHdhaXQgZm9yZXZlci4gKi8KLQkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJ CQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkgLTFM LAotCQkJCQkJCSBQR19XQUlUX0VYVEVOU0lPTik7CisJCQkodm9pZCkgV2FpdEludGVycnVw dChDaGVja0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkJCQkJIElOVEVSUlVQVF9DT05GSUdf UkVMT0FEIHwKKwkJCQkJCQkJIElOVEVSUlVQVF9URVJNSU5BVEUsCisJCQkJCQkJCSBXTF9J TlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkgLTFMLAorCQkJCQkJ CQkgUEdfV0FJVF9FWFRFTlNJT04pOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMjY3LDE0ICsy NjgsMTMgQEAgYXV0b3ByZXdhcm1fbWFpbihEYXR1bSBtYWluX2FyZykKIAkJCX0KIAogCQkJ LyogU2xlZXAgdW50aWwgdGhlIG5leHQgZHVtcCB0aW1lLiAqLwotCQkJKHZvaWQpIFdhaXRM YXRjaChNeUxhdGNoLAotCQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkgZGVsYXlfaW5fbXMsCi0JCQkJCQkJIFBHX1dB SVRfRVhURU5TSU9OKTsKKwkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJy dXB0c01hc2sgfAorCQkJCQkJCQkgSU5URVJSVVBUX0NPTkZJR19SRUxPQUQgfAorCQkJCQkJ CQkgSU5URVJSVVBUX1RFUk1JTkFURSwKKwkJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJ TUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkgZGVsYXlfaW5fbXMsCisJ CQkJCQkJCSBQR19XQUlUX0VYVEVOU0lPTik7CiAJCX0KLQotCQkvKiBSZXNldCB0aGUgbGF0 Y2gsIGxvb3AuICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CiAJfQogCiAJLyoKQEAgLTQy NCw3ICs0MjQsNyBAQCBhcHdfbG9hZF9idWZmZXJzKHZvaWQpCiAJCSAqIExpa2V3aXNlLCBk b24ndCBsYXVuY2ggaWYgd2UndmUgYWxyZWFkeSBiZWVuIHRvbGQgdG8gc2h1dCBkb3duLgog CQkgKiAoVGhlIGxhdW5jaCB3b3VsZCBmYWlsIGFueXdheSwgYnV0IHdlIG1pZ2h0IGFzIHdl bGwgc2tpcCBpdC4pCiAJCSAqLwotCQlpZiAoU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwkJ aWYgKEludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1RFUk1JTkFURSkpCiAJCQlicmVhazsK IAogCQkvKgpAQCAtNDQ1LDcgKzQ0NSw3IEBAIGFwd19sb2FkX2J1ZmZlcnModm9pZCkKIAlM V0xvY2tSZWxlYXNlKCZhcHdfc3RhdGUtPmxvY2spOwogCiAJLyogUmVwb3J0IG91ciBzdWNj ZXNzLCBpZiB3ZSB3ZXJlIGFibGUgdG8gZmluaXNoLiAqLwotCWlmICghU2h1dGRvd25SZXF1 ZXN0UGVuZGluZykKKwlpZiAoIUludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1RFUk1JTkFU RSkpCiAJCWVyZXBvcnQoTE9HLAogCQkJCShlcnJtc2coImF1dG9wcmV3YXJtIHN1Y2Nlc3Nm dWxseSBwcmV3YXJtZWQgJWQgb2YgJWQgcHJldmlvdXNseS1sb2FkZWQgYmxvY2tzIiwKIAkJ CQkJCWFwd19zdGF0ZS0+cHJld2FybWVkX2Jsb2NrcywgbnVtX2VsZW1lbnRzKSkpOwpAQCAt NTA1LDggKzUwNSw3IEBAIGF1dG9wcmV3YXJtX2RhdGFiYXNlX21haW4oRGF0dW0gbWFpbl9h cmcpCiAJQmxvY2tJbmZvUmVjb3JkIGJsazsKIAlkc21fc2VnbWVudCAqc2VnOwogCi0JLyog RXN0YWJsaXNoIHNpZ25hbCBoYW5kbGVyczsgb25jZSB0aGF0J3MgZG9uZSwgdW5ibG9jayBz aWduYWxzLiAqLwotCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CisJLyogRGVmYXVsdCBzaWdu YWwgaGFuZGxlcnMgYXJlIE9LIGZvciB1czsgdW5ibG9jayBzaWduYWxzLiAqLwogCUJhY2tn cm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOwogCiAJLyogQ29ubmVjdCB0byBjb3JyZWN0 IGRhdGFiYXNlIGFuZCBnZXQgYmxvY2sgaW5mb3JtYXRpb24uICovCkBAIC05MjQsOSArOTIz LDYgQEAgYXB3X3N0YXJ0X2xlYWRlcl93b3JrZXIodm9pZCkKIAkJcmV0dXJuOwogCX0KIAot CS8qIG11c3Qgc2V0IG5vdGlmeSBQSUQgdG8gd2FpdCBmb3Igc3RhcnR1cCAqLwotCXdvcmtl ci5iZ3dfbm90aWZ5X3BpZCA9IE15UHJvY1BpZDsKLQogCWlmICghUmVnaXN0ZXJEeW5hbWlj QmFja2dyb3VuZFdvcmtlcigmd29ya2VyLCAmaGFuZGxlKSkKIAkJZXJlcG9ydChFUlJPUiwK IAkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9SRVNPVVJDRVMpLApAQCAtOTU5 LDkgKzk1NSw2IEBAIGFwd19zdGFydF9kYXRhYmFzZV93b3JrZXIodm9pZCkKIAlzdHJjcHko d29ya2VyLmJnd19uYW1lLCAiYXV0b3ByZXdhcm0gd29ya2VyIik7CiAJc3RyY3B5KHdvcmtl ci5iZ3dfdHlwZSwgImF1dG9wcmV3YXJtIHdvcmtlciIpOwogCi0JLyogbXVzdCBzZXQgbm90 aWZ5IFBJRCB0byB3YWl0IGZvciBzaHV0ZG93biAqLwotCXdvcmtlci5iZ3dfbm90aWZ5X3Bp ZCA9IE15UHJvY1BpZDsKLQogCWlmICghUmVnaXN0ZXJEeW5hbWljQmFja2dyb3VuZFdvcmtl cigmd29ya2VyLCAmaGFuZGxlKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShF UlJDT0RFX0lOU1VGRklDSUVOVF9SRVNPVVJDRVMpLApkaWZmIC0tZ2l0IGEvY29udHJpYi9w Z19zdGFzaF9hZHZpY2Uvc3Rhc2hwZXJzaXN0LmMgYi9jb250cmliL3BnX3N0YXNoX2Fkdmlj ZS9zdGFzaHBlcnNpc3QuYwppbmRleCA5ZTA4MzAwYzU0MS4uNzZjMGRlMGM5NDMgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcGdfc3Rhc2hfYWR2aWNlL3N0YXNocGVyc2lzdC5jCisrKyBiL2Nv bnRyaWIvcGdfc3Rhc2hfYWR2aWNlL3N0YXNocGVyc2lzdC5jCkBAIC0xNCwxOSArMTQsMTkg QEAKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogCiAjaW5jbHVkZSAiY29tbW9uL2hhc2hmbi5o IgotI2luY2x1ZGUgImlwYy9zaWduYWxfaGFuZGxlcnMuaCIKKyNpbmNsdWRlICJpcGMvaW50 ZXJydXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdfc3Rhc2hf YWR2aWNlLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtlci5oIgogI2luY2x1ZGUg InN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1ZGUgInN0 b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJz dG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1cy5o IgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAidXRpbHMvd2FpdF9j bGFzc2VzLmgiCiAKIHR5cGVkZWYgc3RydWN0IHBnc2Ffd3JpdGVyX2NvbnRleHQKIHsKQEAg LTk2LDEwICs5NiwxMSBAQCBwZ19zdGFzaF9hZHZpY2Vfd29ya2VyX21haW4oRGF0dW0gbWFp bl9hcmcpCiAJdWludDY0CQlsYXN0X2NoYW5nZV9jb3VudDsKIAlUaW1lc3RhbXBUeiBsYXN0 X3dyaXRlX3RpbWUgPSAwOwogCi0JLyogRXN0YWJsaXNoIHNpZ25hbCBoYW5kbGVyczsgb25j ZSB0aGF0J3MgZG9uZSwgdW5ibG9jayBzaWduYWxzLiAqLwotCXBxc2lnbmFsKFNJR1RFUk0s IFNpZ25hbEhhbmRsZXJGb3JTaHV0ZG93blJlcXVlc3QpOwotCXBxc2lnbmFsKFNJR0hVUCwg U2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7Ci0JcHFzaWduYWwoU0lHVVNSMSwgcHJv Y3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOworCS8qIEVzdGFibGlzaCBpbnRlcnJ1cHQgaGFu ZGxlcnMgKi8KKwlTZXRTdGFuZGFyZEludGVycnVwdEhhbmRsZXJzKCk7CisJLyogd2UnbGwg Y2hlY2sgZm9yIElOVEVSUlVQVF9URVJNSU5BVEUgb3Vyc2VsdmVzIGluIHRoZSBtYWluIGxv b3AgKi8KKwlEaXNhYmxlSW50ZXJydXB0KElOVEVSUlVQVF9URVJNSU5BVEUpOworCS8qIERl ZmF1bHQgc2lnbmFsIGhhbmRsZXJzIGFyZSBPSyBmb3IgdXM7IHVuYmxvY2sgc2lnbmFscy4g Ki8KIAlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKIAogCS8qIExvZyBhIGRl YnVnIG1lc3NhZ2UgKi8KQEAgLTE1MSwyMiArMTUyLDIxIEBAIHBnX3N0YXNoX2FkdmljZV93 b3JrZXJfbWFpbihEYXR1bSBtYWluX2FyZykKIAlsYXN0X2NoYW5nZV9jb3VudCA9IHBnX2F0 b21pY19yZWFkX3U2NCgmcGdzYV9zdGF0ZS0+Y2hhbmdlX2NvdW50KTsKIAogCS8qIFBlcmlv ZGljYWxseSB3cml0ZSB0byBkaXNrIHVudGlsIHRlcm1pbmF0ZWQuICovCi0Jd2hpbGUgKCFT aHV0ZG93blJlcXVlc3RQZW5kaW5nKQorCXdoaWxlICghSW50ZXJydXB0UGVuZGluZyhJTlRF UlJVUFRfVEVSTUlOQVRFKSkKIAl7CiAJCS8qIEluIGNhc2Ugb2YgYSBTSUdIVVAsIGp1c3Qg cmVsb2FkIHRoZSBjb25maWd1cmF0aW9uLiAqLwotCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGlu ZykKLQkJewotCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOworCQlpZiAoQ29uc3Vt ZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCkpCiAJCQlQcm9jZXNzQ29uZmln RmlsZShQR0NfU0lHSFVQKTsKLQkJfQogCiAJCWlmIChwZ19zdGFzaF9hZHZpY2VfcGVyc2lz dF9pbnRlcnZhbCA8PSAwKQogCQl7CiAJCQkvKiBPbmx5IHdyaXRpbmcgYXQgc2h1dGRvd24s IHNvIGp1c3Qgd2FpdCBmb3JldmVyLiAqLwotCQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNo LAotCQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJ CSAtMUwsCi0JCQkJCQkJIFBHX1dBSVRfRVhURU5TSU9OKTsKKwkJCSh2b2lkKSBXYWl0SW50 ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfAorCQkJCQkJCQkgSU5URVJSVVBUX1RF Uk1JTkFURSB8CisJCQkJCQkJCSBJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCwKKwkJCQkJCQkJ IFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCSAtMUwsCisJ CQkJCQkJCSBQR19XQUlUX0VYVEVOU0lPTik7CiAJCX0KIAkJZWxzZQogCQl7CkBAIC0yMDEs MTMgKzIwMSwxNSBAQCBwZ19zdGFzaF9hZHZpY2Vfd29ya2VyX21haW4oRGF0dW0gbWFpbl9h cmcpCiAJCQl9CiAKIAkJCS8qIFNsZWVwIHVudGlsIHRoZSBuZXh0IHdyaXRlIHRpbWUuICov Ci0JCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkJIFdMX0xBVENIX1NFVCB8 IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJCSBkZWxheV9pbl9t cywKLQkJCQkJCQkgUEdfV0FJVF9FWFRFTlNJT04pOworCQkJKHZvaWQpIFdhaXRJbnRlcnJ1 cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkJCSBJTlRFUlJVUFRfVEVSTUlO QVRFIHwKKwkJCQkJCQkJIElOVEVSUlVQVF9DT05GSUdfUkVMT0FELAorCQkJCQkJCQkgV0xf SU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJ CSBkZWxheV9pbl9tcywKKwkJCQkJCQkJIFBHX1dBSVRfRVhURU5TSU9OKTsKIAkJfQogCi0J CVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJfQog CiAJLyogV3JpdGUgb25lIGxhc3QgdGltZSBiZWZvcmUgZXhpdGluZy4gKi8KZGlmZiAtLWdp dCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyBiL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L2Nvbm5lY3Rpb24uYwppbmRleCA3N2YwYzFjZjgyYy4uN2RmODdkYmRiYzkgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYworKysgYi9jb250 cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKQEAgLTIyLDEzICsyMiwxMiBAQAogI2lu Y2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1vbi9iYXNlNjQuaCIK ICNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2lu Y2x1ZGUgImxpYnBxL2xpYnBxLWJlLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEtYmUtZmUt aGVscGVycy5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCi0jaW5jbHVkZSAibWlzY2Fk bWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdGdyZXNfZmR3Lmgi Ci0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5z LmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFs LmgiCkBAIC04NjgsOCArODY3LDggQEAgZG9fc3FsX2NvbW1hbmRfZW5kKFBHY29ubiAqY29u biwgY29uc3QgY2hhciAqc3FsLCBib29sIGNvbnN1bWVfaW5wdXQpCiAJLyoKIAkgKiBJZiBy ZXF1ZXN0ZWQsIGNvbnN1bWUgd2hhdGV2ZXIgZGF0YSBpcyBhdmFpbGFibGUgZnJvbSB0aGUg c29ja2V0LiAoTm90ZQogCSAqIHRoYXQgaWYgYWxsIGRhdGEgaXMgYXZhaWxhYmxlLCB0aGlz IGFsbG93cyBwZ2Zkd19nZXRfcmVzdWx0IHRvIGNhbGwKLQkgKiBQUWdldFJlc3VsdCB3aXRo b3V0IGZvcmNpbmcgdGhlIG92ZXJoZWFkIG9mIFdhaXRMYXRjaE9yU29ja2V0LCB3aGljaAot CSAqIHdvdWxkIGJlIGxhcmdlIGNvbXBhcmVkIHRvIHRoZSBvdmVyaGVhZCBvZiBQUWNvbnN1 bWVJbnB1dC4pCisJICogUFFnZXRSZXN1bHQgd2l0aG91dCBmb3JjaW5nIHRoZSBvdmVyaGVh ZCBvZiBXYWl0SW50ZXJydXB0T3JTb2NrZXQsCisJICogd2hpY2ggd291bGQgYmUgbGFyZ2Ug Y29tcGFyZWQgdG8gdGhlIG92ZXJoZWFkIG9mIFBRY29uc3VtZUlucHV0LikKIAkgKi8KIAlp ZiAoY29uc3VtZV9pbnB1dCAmJiAhUFFjb25zdW1lSW5wdXQoY29ubikpCiAJCXBnZmR3X3Jl cG9ydF9lcnJvcihOVUxMLCBjb25uLCBzcWwpOwpAQCAtMTYyNCw3ICsxNjIzLDcgQEAgcGdm ZHdfY2FuY2VsX3F1ZXJ5X2VuZChQR2Nvbm4gKmNvbm4sIFRpbWVzdGFtcFR6IGVuZHRpbWUs CiAJLyoKIAkgKiBJZiByZXF1ZXN0ZWQsIGNvbnN1bWUgd2hhdGV2ZXIgZGF0YSBpcyBhdmFp bGFibGUgZnJvbSB0aGUgc29ja2V0LiAoTm90ZQogCSAqIHRoYXQgaWYgYWxsIGRhdGEgaXMg YXZhaWxhYmxlLCB0aGlzIGFsbG93cyBwZ2Zkd19nZXRfY2xlYW51cF9yZXN1bHQgdG8KLQkg KiBjYWxsIFBRZ2V0UmVzdWx0IHdpdGhvdXQgZm9yY2luZyB0aGUgb3ZlcmhlYWQgb2YgV2Fp dExhdGNoT3JTb2NrZXQsCisJICogY2FsbCBQUWdldFJlc3VsdCB3aXRob3V0IGZvcmNpbmcg dGhlIG92ZXJoZWFkIG9mIFdhaXRJbnRlcnJ1cHRPclNvY2tldCwKIAkgKiB3aGljaCB3b3Vs ZCBiZSBsYXJnZSBjb21wYXJlZCB0byB0aGUgb3ZlcmhlYWQgb2YgUFFjb25zdW1lSW5wdXQu KQogCSAqLwogCWlmIChjb25zdW1lX2lucHV0ICYmICFQUWNvbnN1bWVJbnB1dChjb25uKSkK QEAgLTE3MTksNyArMTcxOCw3IEBAIHBnZmR3X2V4ZWNfY2xlYW51cF9xdWVyeV9lbmQoUEdj b25uICpjb25uLCBjb25zdCBjaGFyICpxdWVyeSwKIAkvKgogCSAqIElmIHJlcXVlc3RlZCwg Y29uc3VtZSB3aGF0ZXZlciBkYXRhIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBzb2NrZXQuIChO b3RlCiAJICogdGhhdCBpZiBhbGwgZGF0YSBpcyBhdmFpbGFibGUsIHRoaXMgYWxsb3dzIHBn ZmR3X2dldF9jbGVhbnVwX3Jlc3VsdCB0bwotCSAqIGNhbGwgUFFnZXRSZXN1bHQgd2l0aG91 dCBmb3JjaW5nIHRoZSBvdmVyaGVhZCBvZiBXYWl0TGF0Y2hPclNvY2tldCwKKwkgKiBjYWxs IFBRZ2V0UmVzdWx0IHdpdGhvdXQgZm9yY2luZyB0aGUgb3ZlcmhlYWQgb2YgV2FpdEludGVy cnVwdE9yU29ja2V0LAogCSAqIHdoaWNoIHdvdWxkIGJlIGxhcmdlIGNvbXBhcmVkIHRvIHRo ZSBvdmVyaGVhZCBvZiBQUWNvbnN1bWVJbnB1dC4pCiAJICovCiAJaWYgKGNvbnN1bWVfaW5w dXQgJiYgIVBRY29uc3VtZUlucHV0KGNvbm4pKQpAQCAtMTgyNywxMiArMTgyNiwxMSBAQCBw Z2Zkd19nZXRfY2xlYW51cF9yZXN1bHQoUEdjb25uICpjb25uLCBUaW1lc3RhbXBUeiBlbmR0 aW1lLAogCQkJCXBnZmR3X3dlX2NsZWFudXBfcmVzdWx0ID0gV2FpdEV2ZW50RXh0ZW5zaW9u TmV3KCJQb3N0Z3Jlc0Zkd0NsZWFudXBSZXN1bHQiKTsKIAogCQkJLyogU2xlZXAgdW50aWwg dGhlcmUncyBzb21ldGhpbmcgdG8gZG8gKi8KLQkJCXdjID0gV2FpdExhdGNoT3JTb2NrZXQo TXlMYXRjaCwKLQkJCQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfU09DS0VUX1JFQURBQkxF IHwKLQkJCQkJCQkJICAgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJ CQkJCSAgIFBRc29ja2V0KGNvbm4pLAotCQkJCQkJCQkgICBjdXJfdGltZW91dCwgcGdmZHdf d2VfY2xlYW51cF9yZXN1bHQpOwotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCXdjID0g V2FpdEludGVycnVwdE9yU29ja2V0KENoZWNrRm9ySW50ZXJydXB0c01hc2ssCisJCQkJCQkJ CQkgICBXTF9JTlRFUlJVUFQgfCBXTF9TT0NLRVRfUkVBREFCTEUgfAorCQkJCQkJCQkJICAg V0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCQkgICBQUXNvY2tl dChjb25uKSwKKwkJCQkJCQkJCSAgIGN1cl90aW1lb3V0LCBwZ2Zkd193ZV9jbGVhbnVwX3Jl c3VsdCk7CiAKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jIGIvY29udHJpYi9wb3N0Z3Jlc19m ZHcvcG9zdGdyZXNfZmR3LmMKaW5kZXggMDBhZjFjZTg1ZWUuLmU1OTVkZDM3Mzc4IDEwMDY0 NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYworKysgYi9jb250 cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwpAQCAtNDQsNyArNDQsNyBAQAogI2lu Y2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJwb3N0Z3Jlc19mZHcuaCIK ICNpbmNsdWRlICJzdGF0aXN0aWNzL3N0YXRpc3RpY3MuaCIKLSNpbmNsdWRlICJzdG9yYWdl L2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS93YWl0ZXZlbnRzZXQuaCIKICNpbmNsdWRl ICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2Zsb2F0LmgiCiAjaW5jbHVk ZSAidXRpbHMvZ3VjLmgiCkBAIC04MjI2LDcgKzgyMjYsNyBAQCBwb3N0Z3Jlc0ZvcmVpZ25B c3luY0NvbmZpZ3VyZVdhaXQoQXN5bmNSZXF1ZXN0ICphcmVxKQogCQlBc3NlcnQocGVuZGlu Z0FyZXEgPT0gYXJlcSk7CiAKIAlBZGRXYWl0RXZlbnRUb1NldChzZXQsIFdMX1NPQ0tFVF9S RUFEQUJMRSwgUFFzb2NrZXQoZnNzdGF0ZS0+Y29ubiksCi0JCQkJCSAgTlVMTCwgYXJlcSk7 CisJCQkJCSAgMCwgYXJlcSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv Ymd3b3JrZXIuc2dtbCBiL2RvYy9zcmMvc2dtbC9iZ3dvcmtlci5zZ21sCmluZGV4IDJhZmZi YTc0MzgyLi4wNmJjNTdmMTBiZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Jnd29ya2Vy LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Jnd29ya2VyLnNnbWwKQEAgLTYzLDcgKzYzLDcg QEAgdHlwZWRlZiBzdHJ1Y3QgQmFja2dyb3VuZFdvcmtlcgogICAgIGNoYXIgICAgICAgIGJn d19mdW5jdGlvbl9uYW1lW0JHV19NQVhMRU5dOwogICAgIERhdHVtICAgICAgIGJnd19tYWlu X2FyZzsKICAgICBjaGFyICAgICAgICBiZ3dfZXh0cmFbQkdXX0VYVFJBTEVOXTsKLSAgICBw aWRfdCAgICAgICBiZ3dfbm90aWZ5X3BpZDsKKyAgICBwaWRfdCAgICAgICBiZ3dfbm90aWZ5 X3BpZDsJCQkvKiBub3QgdXNlZCAqLwogfSBCYWNrZ3JvdW5kV29ya2VyOwogPC9wcm9ncmFt bGlzdGluZz4KICAgPC9wYXJhPgpAQCAtMTMxLDYgKzEzMSwyMSBAQCB0eXBlZGVmIHN0cnVj dCBCYWNrZ3JvdW5kV29ya2VyCiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50 cnk+CiAKKyAgICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48bGl0ZXJhbD5CR1dPUktF Ul9OT19OT1RJRlk8L2xpdGVyYWw+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8 cGFyYT4KKyAgICAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5PkJHV09SS0VSX05PX05PVElGWTwv cHJpbWFyeT48L2luZGV4dGVybT4gTm9ybWFsbHksCisgICAgICAgdGhlIGJhY2tlbmQgdGhh dCByZWdpc3RlcnMgYSBkeW5hbWljIHdvcmtlciB3aWxsIGJlIG5vdGlmaWVkCisgICAgICAg d2l0aCA8bGl0ZXJhbD5JTlRFUlJVUFRfV0FJVF9XQUtFVVA8L2xpdGVyYWw+IHdoZW4gdGhl IHdvcmtlcidzIHN0YXRlCisgICAgICAgY2hhbmdlcywgd2hpY2ggYWxsb3dzIHRoZSBjYWxs ZXIgdG8gd2FpdCBmb3IgdGhlIHdvcmtlciB0byBzdGFydCBhbmQKKyAgICAgICBzaHV0IGRv d24uICBUaGF0IGNhbiBiZSBzdXBwcmVzc2VkIGJ5IHNldHRpbmcgdGhpcyBmbGFnLgorICAg ICAgIDwhLS0gRklYTUU6IFNob3VsZCB3ZSByZXNlcnZlIGEgZGVkaWNhdGVkIElOVEVSUlVQ VCBiaXQgZm9yIGl0PyBBbmQgaWYKKyAgICAgICAgICAgIHdlIGRvLCBkbyB3ZSBldmVuIG5l ZWQgdGhlIEJHV09SS0VSX05PX05PVElGWSBmbGFnLCB0aGVyZSdzIHZlcnkgbGl0dGxlCisg ICAgICAgICAgICBvdmVyaGVhZCBpbiBzZW5kaW5nIGEgdXNlbGVzcyBpbnRlcnJ1cHQgLS0+ CisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+ CiAgICA8L3ZhcmlhYmxlbGlzdD4KIAogICA8L3BhcmE+CkBAIC0yMDQsMTIgKzIxOSw4IEBA IHR5cGVkZWYgc3RydWN0IEJhY2tncm91bmRXb3JrZXIKICAgPC9wYXJhPgogCiAgIDxwYXJh PgotICAgPHN0cnVjdGZpZWxkPmJnd19ub3RpZnlfcGlkPC9zdHJ1Y3RmaWVsZD4gaXMgdGhl IFBJRCBvZiBhIFBvc3RncmVTUUwKLSAgIGJhY2tlbmQgcHJvY2VzcyB0byB3aGljaCB0aGUg cG9zdG1hc3RlciBzaG91bGQgc2VuZCA8bGl0ZXJhbD5TSUdVU1IxPC9saXRlcmFsPgotICAg d2hlbiB0aGUgcHJvY2VzcyBpcyBzdGFydGVkIG9yIGV4aXRzLiAgSXQgc2hvdWxkIGJlIDAg Zm9yIHdvcmtlcnMgcmVnaXN0ZXJlZAotICAgYXQgcG9zdG1hc3RlciBzdGFydHVwIHRpbWUs IG9yIHdoZW4gdGhlIGJhY2tlbmQgcmVnaXN0ZXJpbmcgdGhlIHdvcmtlciBkb2VzCi0gICBu b3Qgd2lzaCB0byB3YWl0IGZvciB0aGUgd29ya2VyIHRvIHN0YXJ0IHVwLiAgT3RoZXJ3aXNl LCBpdCBzaG91bGQgYmUKLSAgIGluaXRpYWxpemVkIHRvIDxsaXRlcmFsPk15UHJvY1BpZDwv bGl0ZXJhbD4uCisgICA8c3RydWN0ZmllbGQ+Ymd3X25vdGlmeV9waWQ8L3N0cnVjdGZpZWxk PiBpcyBub3QgdXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQKKyAgIGluIGEgZnV0dXJlIHJlbGVh c2UuCiAgIDwvcGFyYT4KIAogICA8cGFyYT5PbmNlIHJ1bm5pbmcsIHRoZSBwcm9jZXNzIGNh biBjb25uZWN0IHRvIGEgZGF0YWJhc2UgYnkgY2FsbGluZwpAQCAtMjYwLDcgKzI3MSw3IEBA IHR5cGVkZWYgc3RydWN0IEJhY2tncm91bmRXb3JrZXIKICAgIHJlaW5pdGlhbGl6ZXMgdGhl IGNsdXN0ZXIgZHVlIHRvIGEgYmFja2VuZCBmYWlsdXJlLiAgQmFja2VuZHMgd2hpY2ggbmVl ZAogICAgdG8gc3VzcGVuZCBleGVjdXRpb24gb25seSB0ZW1wb3JhcmlseSBzaG91bGQgdXNl IGFuIGludGVycnVwdGlibGUgc2xlZXAKICAgIHJhdGhlciB0aGFuIGV4aXRpbmc7IHRoaXMg Y2FuIGJlIGFjaGlldmVkIGJ5IGNhbGxpbmcKLSAgIDxmdW5jdGlvbj5XYWl0TGF0Y2goKTwv ZnVuY3Rpb24+LiBNYWtlIHN1cmUgdGhlCisgICA8ZnVuY3Rpb24+V2FpdEludGVycnVwdCgp PC9mdW5jdGlvbj4uIE1ha2Ugc3VyZSB0aGUKICAgIDxsaXRlcmFsPldMX1BPU1RNQVNURVJf REVBVEg8L2xpdGVyYWw+IGZsYWcgaXMgc2V0IHdoZW4gY2FsbGluZyB0aGF0IGZ1bmN0aW9u LCBhbmQKICAgIHZlcmlmeSB0aGUgcmV0dXJuIGNvZGUgZm9yIGEgcHJvbXB0IGV4aXQgaW4g dGhlIGVtZXJnZW5jeSBjYXNlIHRoYXQKICAgIDxjb21tYW5kPnBvc3RncmVzPC9jb21tYW5k PiBpdHNlbGYgaGFzIHRlcm1pbmF0ZWQuCkBAIC0yOTEsMTAgKzMwMiw3IEBAIHR5cGVkZWYg c3RydWN0IEJhY2tncm91bmRXb3JrZXIKIAogICA8cGFyYT4KICAgIEluIHNvbWUgY2FzZXMs IGEgcHJvY2VzcyB3aGljaCByZWdpc3RlcnMgYSBiYWNrZ3JvdW5kIHdvcmtlciBtYXkgd2lz aCB0bwotICAgd2FpdCBmb3IgdGhlIHdvcmtlciB0byBzdGFydCB1cC4gIFRoaXMgY2FuIGJl IGFjY29tcGxpc2hlZCBieSBpbml0aWFsaXppbmcKLSAgIDxzdHJ1Y3RmaWVsZD5iZ3dfbm90 aWZ5X3BpZDwvc3RydWN0ZmllbGQ+IHRvIDxsaXRlcmFsPk15UHJvY1BpZDwvbGl0ZXJhbD4g YW5kCi0gICB0aGVuIHBhc3NpbmcgdGhlIDx0eXBlPkJhY2tncm91bmRXb3JrZXJIYW5kbGUg KjwvdHlwZT4gb2J0YWluZWQgYXQKLSAgIHJlZ2lzdHJhdGlvbiB0aW1lIHRvCisgICB3YWl0 IGZvciB0aGUgd29ya2VyIHRvIHN0YXJ0IHVwLiAgVGhpcyBjYW4gYmUgYWNjb21wbGlzaGVk IHdpdGggdGhlCiAgICA8ZnVuY3Rpb24+V2FpdEZvckJhY2tncm91bmRXb3JrZXJTdGFydHVw KDxwYXJhbWV0ZXI+QmFja2dyb3VuZFdvcmtlckhhbmRsZQogICAgKmhhbmRsZTwvcGFyYW1l dGVyPiwgPHBhcmFtZXRlcj5waWRfdCAqPC9wYXJhbWV0ZXI+KTwvZnVuY3Rpb24+IGZ1bmN0 aW9uLgogICAgVGhpcyBmdW5jdGlvbiB3aWxsIGJsb2NrIHVudGlsIHRoZSBwb3N0bWFzdGVy IGhhcyBhdHRlbXB0ZWQgdG8gc3RhcnQgdGhlCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv b2F1dGgtdmFsaWRhdG9ycy5zZ21sIGIvZG9jL3NyYy9zZ21sL29hdXRoLXZhbGlkYXRvcnMu c2dtbAppbmRleCA2YzRhNGY5NDc2OS4uMmJkMTQ3ZGIyYTggMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9vYXV0aC12YWxpZGF0b3JzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL29hdXRo LXZhbGlkYXRvcnMuc2dtbApAQCAtMjIwLDcgKzIyMCw3IEBACiAgICAgICAgY29ycmVjdGx5 IGhhbmRsZSBhdXRoZW50aWNhdGlvbiB0aW1lb3V0cyBhbmQgc2h1dGRvd24gc2lnbmFscyBm cm9tCiAgICAgICAgPGFwcGxpY2F0aW9uPnBnX2N0bDwvYXBwbGljYXRpb24+LiBGb3IgZXhh bXBsZSwgYmxvY2tpbmcgY2FsbHMgb24gc29ja2V0cwogICAgICAgIHNob3VsZCBnZW5lcmFs bHkgYmUgcmVwbGFjZWQgd2l0aCBjb2RlIHRoYXQgaGFuZGxlcyBib3RoIHNvY2tldCBldmVu dHMKLSAgICAgICBhbmQgaW50ZXJydXB0cyB3aXRob3V0IHJhY2VzIChzZWUgPGZ1bmN0aW9u PldhaXRMYXRjaE9yU29ja2V0KCk8L2Z1bmN0aW9uPiwKKyAgICAgICBhbmQgaW50ZXJydXB0 cyB3aXRob3V0IHJhY2VzIChzZWUgPGZ1bmN0aW9uPldhaXRJbnRlcnJ1cHRPclNvY2tldCgp PC9mdW5jdGlvbj4sCiAgICAgICAgPGZ1bmN0aW9uPldhaXRFdmVudFNldFdhaXQoKTwvZnVu Y3Rpb24+LCBldCBhbCksIGFuZCBsb25nLXJ1bm5pbmcgbG9vcHMKICAgICAgICBzaG91bGQg cGVyaW9kaWNhbGx5IGNhbGwgPGZ1bmN0aW9uPkNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk8L2Z1 bmN0aW9uPi4KICAgICAgICBGYWlsdXJlIHRvIGZvbGxvdyB0aGlzIGd1aWRhbmNlIG1heSBy ZXN1bHQgaW4gdW5yZXNwb25zaXZlIGJhY2tlbmQKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9zb3VyY2VzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvc291cmNlcy5zZ21sCmluZGV4IDc2MGY5 YjY5ZDQ3Li42MmZmOWUzZTM5NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3NvdXJjZXMu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc291cmNlcy5zZ21sCkBAIC05ODgsMjIgKzk4OCwy NSBAQCBNZW1vcnlDb250ZXh0U3dpdGNoVG8oTWVtb3J5Q29udGV4dCBjb250ZXh0KQogICAg ICBjYWxsIGFzeW5jLXNpZ25hbCBzYWZlIGZ1bmN0aW9ucyAoYXMgZGVmaW5lZCBpbiBQT1NJ WCkgYW5kIGFjY2VzcwogICAgICB2YXJpYWJsZXMgb2YgdHlwZSA8bGl0ZXJhbD52b2xhdGls ZSBzaWdfYXRvbWljX3Q8L2xpdGVyYWw+LiBBIGZldwogICAgICBmdW5jdGlvbnMgaW4gPGNv bW1hbmQ+cG9zdGdyZXM8L2NvbW1hbmQ+IGFyZSBhbHNvIGRlZW1lZCBzaWduYWwgc2FmZSwg aW1wb3J0YW50bHkKLSAgICAgPGZ1bmN0aW9uPlNldExhdGNoKCk8L2Z1bmN0aW9uPi4KKyAg ICAgPGZ1bmN0aW9uPlJhaXNlSW50ZXJydXB0KCk8L2Z1bmN0aW9uPi4KICAgICA8L3BhcmE+ CiAgICAgPHBhcmE+CiAgICAgIEluIG1vc3QgY2FzZXMgc2lnbmFsIGhhbmRsZXJzIHNob3Vs ZCBkbyBub3RoaW5nIG1vcmUgdGhhbiBub3RlCiAgICAgIHRoYXQgYSBzaWduYWwgaGFzIGFy cml2ZWQsIGFuZCB3YWtlIHVwIGNvZGUgcnVubmluZyBvdXRzaWRlIG9mCi0gICAgIHRoZSBo YW5kbGVyIHVzaW5nIGEgbGF0Y2guIEFuIGV4YW1wbGUgb2Ygc3VjaCBhIGhhbmRsZXIgaXMg dGhlCisgICAgIHRoZSBoYW5kbGVyIHVzaW5nIFJhaXNlSW50ZXJydXB0KCkuIEFuIGV4YW1w bGUgb2Ygc3VjaCBhIGhhbmRsZXIgaXMgdGhlCiAgICAgIGZvbGxvd2luZzoKIDxwcm9ncmFt bGlzdGluZz4KIHN0YXRpYyB2b2lkCiBoYW5kbGVfc2lnaHVwKFNJR05BTF9BUkdTKQogewot ICAgIGdvdF9TSUdIVVAgPSB0cnVlOwotICAgIFNldExhdGNoKE15TGF0Y2gpOworICAgIFJh aXNlSW50ZXJydXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKTsKIH0KIDwvcHJvZ3JhbWxp c3Rpbmc+CiAgICAgPC9wYXJhPgorICAgIDwhLS0gVE9ETzogVGhpcyBzZWN0aW9uIGlzIG5v dCB3cm9uZywgYnV0IHNob3VsZCBiZSB1cGRhdGVkLiBTaG91bGQKKyAgICAgICAgIGRvY3Vt ZW50IGFuZCBlbXBoYXNpemUgdGhlIGludGVycnVwdCBtZWNoYW5pc20gbW9yZSwgYW5kIHRo ZQorICAgICAgICAgaGFuZGxlX3NpZ2h1cCBleGFtcGxlIGlzIGJhZCBiZWNhdXNlIHRoZSBz dGFuZGFyZCBzaWduYWwgaGFuZGxlciBmb3IKKyAgICAgICAgIFNJR0hVUCBhbHJlYWR5IGRv ZXMgdGhhdCAtLT4KICAgIDwvc2ltcGxlc2VjdD4KIAogICAgPHNpbXBsZXNlY3QgaWQ9InNv dXJjZS1jb252ZW50aW9ucy1mdW5jdGlvbi1wb2ludGVycyI+CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92YWN1dW1sYXp5LmMKaW5kZXggNzVkODU1NGUxNmMuLmQ1MmMzYTBlMmExIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xNDksNyArMTQ5LDYgQEAK ICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKICNpbmNsdWRlICJzdG9yYWdl L2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZnJlZXNwYWNlLmgiCi0jaW5jbHVkZSAi c3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUg InN0b3JhZ2UvcmVhZF9zdHJlYW0uaCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9p bnQuaCIKQEAgLTMxOTIsMTEgKzMxOTEsMTAgQEAgbGF6eV90cnVuY2F0ZV9oZWFwKExWUmVs U3RhdGUgKnZhY3JlbCkKIAkJCQlyZXR1cm47CiAJCQl9CiAKLQkJCSh2b2lkKSBXYWl0TGF0 Y2goTXlMYXRjaCwKLQkJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsCi0JCQkJCQkJIFZBQ1VVTV9UUlVOQ0FURV9MT0NLX1dBSVRfSU5U RVJWQUwsCi0JCQkJCQkJIFdBSVRfRVZFTlRfVkFDVVVNX1RSVU5DQVRFKTsKLQkJCVJlc2V0 TGF0Y2goTXlMYXRjaCk7CisJCQkodm9pZCkgV2FpdEludGVycnVwdChDaGVja0ZvckludGVy cnVwdHNNYXNrLAorCQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsCisJCQkJCQkJCSBWQUNVVU1fVFJVTkNBVEVfTE9DS19XQUlUX0lO VEVSVkFMLAorCQkJCQkJCQkgV0FJVF9FVkVOVF9WQUNVVU1fVFJVTkNBVEUpOwogCQl9CiAK IAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JFQURNRSBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JFQURNRQppbmRleCAyMzExMDYyNzBmZC4u NzNhNzI3ZDUzZDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JF QURNRQorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9SRUFETUUKQEAgLTc5NCw3 ICs3OTQsNyBAQCBjb21taXQgdG8gbWluaW1pemUgdGhlIHdpbmRvdyBpbiB3aGljaCB0aGUg ZmlsZXN5c3RlbSBjaGFuZ2UgaGFzIGJlZW4gbWFkZQogYnV0IHRoZSB0cmFuc2FjdGlvbiBp c24ndCBndWFyYW50ZWVkIGNvbW1pdHRlZC4KIAogVGhlIHdhbHdyaXRlciByZWd1bGFybHkg d2FrZXMgdXAgKHZpYSB3YWxfd3JpdGVyX2RlbGF5KSBvciBpcyB3b2tlbiB1cAotKHZpYSBp dHMgbGF0Y2gsIHdoaWNoIGlzIHNldCBieSBiYWNrZW5kcyBjb21taXR0aW5nIGFzeW5jaHJv bm91c2x5KSBhbmQKKyh2aWEgYW4gaW50ZXJydXB0LCB3aGljaCBpcyBzZW50IGJ5IGJhY2tl bmRzIGNvbW1pdHRpbmcgYXN5bmNocm9ub3VzbHkpIGFuZAogcGVyZm9ybXMgYW4gWExvZ0Jh Y2tncm91bmRGbHVzaCgpLiAgVGhpcyBjaGVja3MgdGhlIGxvY2F0aW9uIG9mIHRoZSBsYXN0 CiBjb21wbGV0ZWx5IGZpbGxlZCBXQUwgcGFnZS4gIElmIHRoYXQgaGFzIG1vdmVkIGZvcndh cmRzLCB0aGVuIHdlIHdyaXRlIGFsbAogdGhlIGNoYW5nZWQgYnVmZmVycyB1cCB0byB0aGF0 IHBvaW50LCBzbyB0aGF0IHVuZGVyIGZ1bGwgbG9hZCB3ZSB3cml0ZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vUkVBRE1FLnBhcmFsbGVsIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vUkVBRE1FLnBhcmFsbGVsCmluZGV4IDlkZjNkYTkxYjBjLi5h MzU5M2RkNGY1NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vUkVB RE1FLnBhcmFsbGVsCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JFQURNRS5w YXJhbGxlbApAQCAtMzcsNyArMzcsNyBAQCB3aXRoIGZld2VyIHBhcmFsbGVsIHdvcmtlcnMg dGhhbiBpdCBvcmlnaW5hbGx5IHJlcXVlc3RlZCwgc28gY2F0ZXJpbmcgdG8KIHRoaXMgY2Fz ZSBpbXBvc2VzIG5vIGFkZGl0aW9uYWwgYnVyZGVuLgogCiBXaGVuZXZlciBhIG5ldyBtZXNz YWdlIChvciBwYXJ0aWFsIG1lc3NhZ2U7IHZlcnkgbGFyZ2UgbWVzc2FnZXMgbWF5IHdyYXAp IGlzCi1zZW50IHRvIHRoZSBlcnJvci1yZXBvcnRpbmcgcXVldWUsIFBST0NTSUdfUEFSQUxM RUxfTUVTU0FHRSBpcyBzZW50IHRvIHRoZQorc2VudCB0byB0aGUgZXJyb3ItcmVwb3J0aW5n IHF1ZXVlLCBJTlRFUlJVUFRfUEFSQUxMRUxfTUVTU0FHRSBpcyBzZW50IHRvIHRoZQogaW5p dGlhdGluZyBiYWNrZW5kLiAgVGhpcyBjYXVzZXMgdGhlIG5leHQgQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKSBpbiB0aGUKIGluaXRpYXRpbmcgYmFja2VuZCB0byByZWFkIGFuZCByZXRocm93 IHRoZSBtZXNzYWdlLiAgRm9yIHRoZSBtb3N0IHBhcnQsIHRoaXMKIG1ha2VzIGVycm9yIHJl cG9ydGluZyBpbiBwYXJhbGxlbCBtb2RlICJqdXN0IHdvcmsiLiAgT2YgY291cnNlLCB0byB3 b3JrCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwppbmRleCBhZmIyZjky YWVjNC4uMmM1NjgwYTk3MzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxs ZWwuYwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3JlcGFjay5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQ YXJhbGxlbC5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJsaWJw cS9saWJwcS5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibGli cHEvcHFtcS5oIgpAQCAtMzksNyArNDAsNiBAQAogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL3By b2MuaCIKLSNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJzdG9y YWdlL3NwaW4uaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRp bHMvY29tYm9jaWQuaCIKQEAgLTExOSw5ICsxMTksNiBAQCB0eXBlZGVmIHN0cnVjdCBGaXhl ZFBhcmFsbGVsU3RhdGUKICAqLwogaW50CQkJUGFyYWxsZWxXb3JrZXJOdW1iZXIgPSAtMTsK IAotLyogSXMgdGhlcmUgYSBwYXJhbGxlbCBtZXNzYWdlIHBlbmRpbmcgd2hpY2ggd2UgbmVl ZCB0byByZWNlaXZlPyAqLwotdm9sYXRpbGUgc2lnX2F0b21pY190IFBhcmFsbGVsTWVzc2Fn ZVBlbmRpbmcgPSBmYWxzZTsKLQogLyogQXJlIHdlIGluaXRpYWxpemluZyBhIHBhcmFsbGVs IHdvcmtlcj8gKi8KIGJvb2wJCUluaXRpYWxpemluZ1BhcmFsbGVsV29ya2VyID0gZmFsc2U7 CiAKQEAgLTEzMSw5ICsxMjgsNiBAQCBzdGF0aWMgRml4ZWRQYXJhbGxlbFN0YXRlICpNeUZp eGVkUGFyYWxsZWxTdGF0ZTsKIC8qIExpc3Qgb2YgYWN0aXZlIHBhcmFsbGVsIGNvbnRleHRz LiAqLwogc3RhdGljIGRsaXN0X2hlYWQgcGN4dF9saXN0ID0gRExJU1RfU1RBVElDX0lOSVQo cGN4dF9saXN0KTsKIAotLyogQmFja2VuZC1sb2NhbCBjb3B5IG9mIGRhdGEgZnJvbSBGaXhl ZFBhcmFsbGVsU3RhdGUuICovCi1zdGF0aWMgcGlkX3QgUGFyYWxsZWxMZWFkZXJQaWQ7Ci0K IC8qCiAgKiBMaXN0IG9mIGludGVybmFsIHBhcmFsbGVsIHdvcmtlciBlbnRyeSBwb2ludHMu ICBXZSBuZWVkIHRoaXMgZm9yCiAgKiByZWFzb25zIGV4cGxhaW5lZCBpbiBMb29rdXBQYXJh bGxlbFdvcmtlckZ1bmN0aW9uKCksIGJlbG93LgpAQCAtNjE3LDcgKzYxMSw2IEBAIExhdW5j aFBhcmFsbGVsV29ya2VycyhQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJc3ByaW50Zih3b3Jr ZXIuYmd3X2xpYnJhcnlfbmFtZSwgInBvc3RncmVzIik7CiAJc3ByaW50Zih3b3JrZXIuYmd3 X2Z1bmN0aW9uX25hbWUsICJQYXJhbGxlbFdvcmtlck1haW4iKTsKIAl3b3JrZXIuYmd3X21h aW5fYXJnID0gVUludDMyR2V0RGF0dW0oZHNtX3NlZ21lbnRfaGFuZGxlKHBjeHQtPnNlZykp OwotCXdvcmtlci5iZ3dfbm90aWZ5X3BpZCA9IE15UHJvY1BpZDsKIAogCS8qCiAJICogU3Rh cnQgd29ya2Vycy4KQEAgLTc3MiwxNiArNzY1LDIxIEBAIFdhaXRGb3JQYXJhbGxlbFdvcmtl cnNUb0F0dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCQl7CiAJCQkJLyoKIAkJCQkg KiBXb3JrZXIgbm90IHlldCBzdGFydGVkLCBzbyB3ZSBtdXN0IHdhaXQuICBUaGUgcG9zdG1h c3RlcgotCQkJCSAqIHdpbGwgbm90aWZ5IHVzIGlmIHRoZSB3b3JrZXIncyBzdGF0ZSBjaGFu Z2VzLiAgT3VyIGxhdGNoCi0JCQkJICogbWlnaHQgYWxzbyBnZXQgc2V0IGZvciBzb21lIG90 aGVyIHJlYXNvbiwgYnV0IGlmIHNvIHdlJ2xsCi0JCQkJICoganVzdCBlbmQgdXAgd2FpdGlu ZyBmb3IgdGhlIHNhbWUgd29ya2VyIGFnYWluLgorCQkJCSAqIHdpbGwgbm90aWZ5IHVzIGlm IHRoZSB3b3JrZXIncyBzdGF0ZSBjaGFuZ2VzIHdpdGgKKwkJCQkgKiBJTlRFUlJVUFRfV0FJ VF9XQUtFVVAuICBUaGUgaW50ZXJydXB0IG1pZ2h0IGFsc28gZ2V0IHNldAorCQkJCSAqIGZv ciBzb21lIG90aGVyIHJlYXNvbiwgYnV0IGlmIHNvIHdlJ2xsIGp1c3QgZW5kIHVwIHdhaXRp bmcKKwkJCQkgKiBmb3IgdGhlIHNhbWUgd29ya2VyIGFnYWluLgogCQkJCSAqLwotCQkJCXJj ID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJ VF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkgICAtMSwgV0FJVF9FVkVOVF9CR1dPUktFUl9TVEFS VFVQKTsKKwkJCQlyYyA9IFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8 CisJCQkJCQkJCSAgIElOVEVSUlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkJCQkJICAgV0xfSU5U RVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJICAgLTEsIFdBSVRfRVZF TlRfQkdXT1JLRVJfU1RBUlRVUCk7CiAKLQkJCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCi0J CQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQor CQkJCXsKKwkJCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKKwkJ CQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJCQl9CiAJCQl9CiAJCX0KIApAQCAtODkw LDE1ICs4ODgsMjAgQEAgV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvRmluaXNoKFBhcmFsbGVs Q29udGV4dCAqcGN4dCkKIAkJCQkgKiB0aGUgd29ya2VyIHdyaXRlcyBtZXNzYWdlcyBhbmQg dGVybWluYXRlcyBhZnRlciB0aGUKIAkJCQkgKiBDSEVDS19GT1JfSU5URVJSVVBUUygpIG5l YXIgdGhlIHRvcCBvZiB0aGlzIGZ1bmN0aW9uIGFuZAogCQkJCSAqIGJlZm9yZSB0aGUgY2Fs bCB0byBHZXRCYWNrZ3JvdW5kV29ya2VyUGlkKCkuICBJbiB0aGF0IGNhc2UsCi0JCQkJICog b3VyIGxhdGNoIHNob3VsZCBoYXZlIGJlZW4gc2V0IGFzIHdlbGwgYW5kIHRoZSByaWdodCB0 aGluZ3MKLQkJCQkgKiB3aWxsIGhhcHBlbiBvbiB0aGUgbmV4dCBwYXNzIHRocm91Z2ggdGhl IGxvb3AuCisJCQkJICogSU5URVJSVVBUX1dBSVRfV0FLRVVQIHNob3VsZCBoYXZlIGJlZW4g c2V0IGFzIHdlbGwgYW5kIHRoZQorCQkJCSAqIHJpZ2h0IHRoaW5ncyB3aWxsIGhhcHBlbiBv biB0aGUgbmV4dCBwYXNzIHRocm91Z2ggdGhlIGxvb3AuCiAJCQkJICovCiAJCQl9CiAJCX0K IAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsIC0xLAotCQkJCQkJIFdBSVRfRVZFTlRfUEFSQUxMRUxfRklOSVNIKTsK LQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJLyoKKwkJICogc2htX21xIHNlbmRzIElOVEVS UlVQVF9XQUlUX1dBS0VVUCB0byBpbmRpY2F0ZSB0aGF0IHRoZQorCQkgKiBjb3VudGVycGFy dHkgaGFzIGRldGFjaGVkLCBzbyB3YWtlIHVwIG9uIHRoYXQgdG9vCisJCSAqLworCQkodm9p ZCkgV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwgSU5URVJSVVBUX1dB SVRfV0FLRVVQLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRI LCAtMSwKKwkJCQkJCQkgV0FJVF9FVkVOVF9QQVJBTExFTF9GSU5JU0gpOworCQlDbGVhcklu dGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCX0KIAogCWlmIChwY3h0LT50b2Mg IT0gTlVMTCkKQEAgLTEwMzksMjEgKzEwNDIsNiBAQCBQYXJhbGxlbENvbnRleHRBY3RpdmUo dm9pZCkKIAlyZXR1cm4gIWRsaXN0X2lzX2VtcHR5KCZwY3h0X2xpc3QpOwogfQogCi0vKgot ICogSGFuZGxlIHJlY2VpcHQgb2YgYW4gaW50ZXJydXB0IGluZGljYXRpbmcgYSBwYXJhbGxl bCB3b3JrZXIgbWVzc2FnZS4KLSAqCi0gKiBOb3RlOiB0aGlzIGlzIGNhbGxlZCB3aXRoaW4g YSBzaWduYWwgaGFuZGxlciEgIEFsbCB3ZSBjYW4gZG8gaXMgc2V0Ci0gKiBhIGZsYWcgdGhh dCB3aWxsIGNhdXNlIHRoZSBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgdG8gaW52b2tl Ci0gKiBQcm9jZXNzUGFyYWxsZWxNZXNzYWdlcygpLgotICovCi12b2lkCi1IYW5kbGVQYXJh bGxlbE1lc3NhZ2VJbnRlcnJ1cHQodm9pZCkKLXsKLQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1 ZTsKLQlQYXJhbGxlbE1lc3NhZ2VQZW5kaW5nID0gdHJ1ZTsKLQkvKiBsYXRjaCB3aWxsIGJl IHNldCBieSBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAqLwotfQotCiAvKgogICogUHJv Y2VzcyBhbnkgcXVldWVkIHByb3RvY29sIG1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gcGFyYWxs ZWwgd29ya2Vycy4KICAqLwpAQCAtMTA4Nyw5ICsxMDc1LDYgQEAgUHJvY2Vzc1BhcmFsbGVs TWVzc2FnZUludGVycnVwdCh2b2lkKQogCiAJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhocG1fY29udGV4dCk7CiAKLQkvKiBPSyB0byBwcm9jZXNzIG1lc3NhZ2VzLiAg UmVzZXQgdGhlIGZsYWcgc2F5aW5nIHRoZXJlIGFyZSBtb3JlIHRvIGRvLiAqLwotCVBhcmFs bGVsTWVzc2FnZVBlbmRpbmcgPSBmYWxzZTsKLQogCS8qIFByb2Nlc3MgbWVzc2FnZXMgZnJv bSBwYXJhbGxlbCBxdWVyeSB3b3JrZXJzICovCiAJUHJvY2Vzc1BhcmFsbGVsTWVzc2FnZXMo KTsKIApAQCAtMTExOCw2ICsxMTAzLDcgQEAgUHJvY2Vzc1BhcmFsbGVsTWVzc2FnZXModm9p ZCkKIHsKIAlkbGlzdF9pdGVyCWl0ZXI7CiAKKwkvKiBPSyB0byBwcm9jZXNzIG1lc3NhZ2Vz ICovCiAJZGxpc3RfZm9yZWFjaChpdGVyLCAmcGN4dF9saXN0KQogCXsKIAkJUGFyYWxsZWxD b250ZXh0ICpwY3h0OwpAQCAtMTM1Miw3ICsxMzM4LDEwIEBAIFBhcmFsbGVsV29ya2VyTWFp bihEYXR1bSBtYWluX2FyZykKIAkvKiBTZXQgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IHdlJ3Jl IGluaXRpYWxpemluZyBhIHBhcmFsbGVsIHdvcmtlci4gKi8KIAlJbml0aWFsaXppbmdQYXJh bGxlbFdvcmtlciA9IHRydWU7CiAKLQkvKiBFc3RhYmxpc2ggc2lnbmFsIGhhbmRsZXJzLiAq LworCS8qCisJICogU3RhbmRhcmQgaW50ZXJydXB0IGhhbmRsZXJzIGhhdmUgYWxyZWFkeSBi ZWVuIGluc3RhbGxlZDsgdW5ibG9jaworCSAqIHNpZ25hbHMuCisJICovCiAJQmFja2dyb3Vu ZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7CiAKIAkvKiBEZXRlcm1pbmUgYW5kIHNldCBvdXIg cGFyYWxsZWwgd29ya2VyIG51bWJlci4gKi8KQEAgLTEzODgsOCArMTM3Nyw3IEBAIFBhcmFs bGVsV29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlmcHMgPSBzaG1fdG9jX2xvb2t1cCh0 b2MsIFBBUkFMTEVMX0tFWV9GSVhFRCwgZmFsc2UpOwogCU15Rml4ZWRQYXJhbGxlbFN0YXRl ID0gZnBzOwogCi0JLyogQXJyYW5nZSB0byBzaWduYWwgdGhlIGxlYWRlciBpZiB3ZSBleGl0 LiAqLwotCVBhcmFsbGVsTGVhZGVyUGlkID0gZnBzLT5wYXJhbGxlbF9sZWFkZXJfcGlkOwor CS8qIEFycmFuZ2UgdG8gc2VuZCBhbiBpbnRlcnJ1cHQgdG8gdGhlIGxlYWRlciBpZiB3ZSBl eGl0LiAqLwogCVBhcmFsbGVsTGVhZGVyUHJvY051bWJlciA9IGZwcy0+cGFyYWxsZWxfbGVh ZGVyX3Byb2NfbnVtYmVyOwogCWJlZm9yZV9zaG1lbV9leGl0KFBhcmFsbGVsV29ya2VyU2h1 dGRvd24sIFBvaW50ZXJHZXREYXR1bShzZWcpKTsKIApAQCAtMTQwNSw4ICsxMzkzLDcgQEAg UGFyYWxsZWxXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCXNobV9tcV9zZXRfc2VuZGVy KG1xLCBNeVByb2MpOwogCW1xaCA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CiAJ cHFfcmVkaXJlY3RfdG9fc2htX21xKHNlZywgbXFoKTsKLQlwcV9zZXRfcGFyYWxsZWxfbGVh ZGVyKGZwcy0+cGFyYWxsZWxfbGVhZGVyX3BpZCwKLQkJCQkJCSAgIGZwcy0+cGFyYWxsZWxf bGVhZGVyX3Byb2NfbnVtYmVyKTsKKwlwcV9zZXRfcGFyYWxsZWxfbGVhZGVyKGZwcy0+cGFy YWxsZWxfbGVhZGVyX3Byb2NfbnVtYmVyKTsKIAogCS8qCiAJICogSG9vcmF5ISBQcmltYXJ5 IGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlLiAgTm93LCB3ZSBuZWVkIHRvIHNldCB1cCBv dXIKQEAgLTE2NDUsOSArMTYzMiw4IEBAIFBhcmFsbGVsV29ya2VyUmVwb3J0TGFzdFJlY0Vu ZChYTG9nUmVjUHRyIGxhc3RfeGxvZ19lbmQpCiBzdGF0aWMgdm9pZAogUGFyYWxsZWxXb3Jr ZXJTaHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJnKQogewotCVNlbmRQcm9jU2lnbmFsKFBh cmFsbGVsTGVhZGVyUGlkLAotCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfTUVTU0FHRSwKLQkJ CQkgICBQYXJhbGxlbExlYWRlclByb2NOdW1iZXIpOworCVNlbmRJbnRlcnJ1cHQoSU5URVJS VVBUX1BBUkFMTEVMX01FU1NBR0UsCisJCQkJICBQYXJhbGxlbExlYWRlclByb2NOdW1iZXIp OwogCiAJZHNtX2RldGFjaCgoZHNtX3NlZ21lbnQgKikgRGF0dW1HZXRQb2ludGVyKGFyZykp OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IGE4YmJmNjI4NGE3Li42 ZGZjM2NmZWFkZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtNzAsNiAr NzAsNyBAQAogI2luY2x1ZGUgImNvbW1vbi9jb250cm9sZGF0YV91dGlscy5oIgogI2luY2x1 ZGUgImNvbW1vbi9maWxlX3V0aWxzLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVu dC5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJwZ190cmFjZS5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgpAQCAtODks NyArOTAsNiBAQAogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdl L2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbGFyZ2Vfb2JqZWN0LmgiCi0jaW5jbHVkZSAi c3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIK QEAgLTI2NzQsNyArMjY3NCw3IEBAIFhMb2dTZXRBc3luY1hhY3RMU04oWExvZ1JlY1B0ciBh c3luY1hhY3RMU04pCiAJCVByb2NOdW1iZXIJd2Fsd3JpdGVyUHJvYyA9IHBnX2F0b21pY19y ZWFkX3UzMigmUHJvY0dsb2JhbC0+d2Fsd3JpdGVyUHJvYyk7CiAKIAkJaWYgKHdhbHdyaXRl clByb2MgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKLQkJCVNldExhdGNoKCZHZXRQR1Byb2NC eU51bWJlcih3YWx3cml0ZXJQcm9jKS0+cHJvY0xhdGNoKTsKKwkJCVNlbmRJbnRlcnJ1cHQo SU5URVJSVVBUX1dBSVRfV0FLRVVQLCB3YWx3cml0ZXJQcm9jKTsKIAl9CiB9CiAKQEAgLTEw MDA3LDExICsxMDAwNywxMCBAQCBkb19wZ19iYWNrdXBfc3RvcChCYWNrdXBTdGF0ZSAqc3Rh dGUsIGJvb2wgd2FpdGZvcmFyY2hpdmUpCiAJCQkJcmVwb3J0ZWRfd2FpdGluZyA9IHRydWU7 CiAJCQl9CiAKLQkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCQkgV0xfTEFU Q0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJIDEw MDBMLAotCQkJCQkJCSBXQUlUX0VWRU5UX0JBQ0tVUF9XQUlUX1dBTF9BUkNISVZFKTsKLQkJ CVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkodm9pZCkgV2FpdEludGVycnVwdChDaGVja0Zv ckludGVycnVwdHNNYXNrLAorCQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8 IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCSAxMDAwTCwKKwkJCQkJCQkJIFdBSVRf RVZFTlRfQkFDS1VQX1dBSVRfV0FMX0FSQ0hJVkUpOwogCiAJCQlpZiAoKyt3YWl0cyA+PSBz ZWNvbmRzX2JlZm9yZV93YXJuaW5nKQogCQkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9nZnVuY3MuYwppbmRleCA5MzBkNjMyZjc3My4uYWQ1NmEwMDQ4YTMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jCkBAIC0zMCw3ICszMCw2IEBACiAj aW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2 ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRj aC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRieS5oIgogI2luY2x1ZGUgInV0aWxzL2J1 aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTczNywxNyArNzM2 LDE1IEBAIHBnX3Byb21vdGUoUEdfRlVOQ1RJT05fQVJHUykKIAl7CiAJCWludAkJCXJjOwog Ci0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7Ci0KIAkJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3Mo KSkKIAkJCVBHX1JFVFVSTl9CT09MKHRydWUpOwogCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CiAKLQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VU IHwgV0xfVElNRU9VVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsCi0JCQkJCSAgIDEwMEwsCi0J CQkJCSAgIFdBSVRfRVZFTlRfUFJPTU9URSk7CisJCXJjID0gV2FpdEludGVycnVwdChDaGVj a0ZvckludGVycnVwdHNNYXNrLAorCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9V VCB8IFdMX1BPU1RNQVNURVJfREVBVEgsCisJCQkJCQkgICAxMDBMLAorCQkJCQkJICAgV0FJ VF9FVkVOVF9QUk9NT1RFKTsKIAogCQkvKgogCQkgKiBFbWVyZ2VuY3kgYmFpbG91dCBpZiBw b3N0bWFzdGVyIGhhcyBkaWVkLiAgVGhpcyBpcyB0byBhdm9pZCB0aGUKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKaW5kZXggYzBhZTRkM2Y2M2YuLjZm MmZjOWQ1N2YwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n cmVjb3ZlcnkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3Zl cnkuYwpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29udHJvbC5o IgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKICNpbmNsdWRlICJjb21tb24v ZmlsZV91dGlscy5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJt aXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9taXNjbm9kZXMuaCIKICNpbmNsdWRlICJw Z3N0YXQuaCIKQEAgLTU0LDggKzU1LDggQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxy ZWNlaXZlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdl L2lwYy5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdl L3Btc2lnbmFsLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKICNpbmNsdWRl ICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKQEAgLTQxMSw3ICs0MTIsNiBAQCBYTG9nUmVjb3Zl cnlTaG1lbUluaXQodm9pZCAqYXJnKQogCW1lbXNldChYTG9nUmVjb3ZlcnlDdGwsIDAsIHNp emVvZihYTG9nUmVjb3ZlcnlDdGxEYXRhKSk7CiAKIAlTcGluTG9ja0luaXQoJlhMb2dSZWNv dmVyeUN0bC0+aW5mb19sY2spOwotCUluaXRTaGFyZWRMYXRjaCgmWExvZ1JlY292ZXJ5Q3Rs LT5yZWNvdmVyeVdha2V1cExhdGNoKTsKIAlDb25kaXRpb25WYXJpYWJsZUluaXQoJlhMb2dS ZWNvdmVyeUN0bC0+cmVjb3ZlcnlOb3RQYXVzZWRDVik7CiB9CiAKQEAgLTQ4NSwxMyArNDg1 LDYgQEAgSW5pdFdhbFJlY292ZXJ5KENvbnRyb2xGaWxlRGF0YSAqQ29udHJvbEZpbGUsIGJv b2wgKndhc1NodXRkb3duX3B0ciwKIAlyZWFkUmVjb3ZlcnlTaWduYWxGaWxlKCk7CiAJdmFs aWRhdGVSZWNvdmVyeVBhcmFtZXRlcnMoKTsKIAotCS8qCi0JICogVGFrZSBvd25lcnNoaXAg b2YgdGhlIHdha2V1cCBsYXRjaCBpZiB3ZSdyZSBnb2luZyB0byBzbGVlcCBkdXJpbmcKLQkg KiByZWNvdmVyeSwgaWYgcmVxdWlyZWQuCi0JICovCi0JaWYgKEFyY2hpdmVSZWNvdmVyeVJl cXVlc3RlZCkKLQkJT3duTGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBM YXRjaCk7Ci0KIAkvKgogCSAqIFNldCB0aGUgV0FMIHJlYWRpbmcgcHJvY2Vzc29yIG5vdywg YXMgaXQgd2lsbCBiZSBuZWVkZWQgd2hlbiByZWFkaW5nCiAJICogdGhlIGNoZWNrcG9pbnQg cmVjb3JkIHJlcXVpcmVkIChiYWNrdXBfbGFiZWwgb3Igbm90KS4KQEAgLTE1OTQsMTMgKzE1 ODcsNiBAQCBTaHV0ZG93bldhbFJlY292ZXJ5KHZvaWQpCiAJCXNucHJpbnRmKHJlY292ZXJ5 UGF0aCwgTUFYUEdQQVRILCBYTE9HRElSICIvUkVDT1ZFUllISVNUT1JZIik7CiAJCXVubGlu ayhyZWNvdmVyeVBhdGgpOwkvKiBpZ25vcmUgYW55IGVycm9yICovCiAJfQotCi0JLyoKLQkg KiBXZSBkb24ndCBuZWVkIHRoZSBsYXRjaCBhbnltb3JlLiBJdCdzIG5vdCBzdHJpY3RseSBu ZWNlc3NhcnkgdG8gZGlzb3duCi0JICogaXQsIGJ1dCBsZXQncyBkbyBpdCBmb3IgdGhlIHNh a2Ugb2YgdGlkaW5lc3MuCi0JICovCi0JaWYgKEFyY2hpdmVSZWNvdmVyeVJlcXVlc3RlZCkK LQkJRGlzb3duTGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCk7 CiB9CiAKIC8qCkBAIC0xNzMwLDggKzE3MTYsOCBAQCBQZXJmb3JtV2FsUmVjb3Zlcnkodm9p ZCkKIAkJCX0KICNlbmRpZgogCi0JCQkvKiBIYW5kbGUgaW50ZXJydXB0IHNpZ25hbHMgb2Yg c3RhcnR1cCBwcm9jZXNzICovCi0JCQlQcm9jZXNzU3RhcnR1cFByb2NJbnRlcnJ1cHRzKCk7 CisJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQkJU3RhcnR1cFByb2NDaGVja1Bvc3Rt YXN0ZXJEZWF0aCgpOwogCiAJCQkvKgogCQkJICogUGF1c2UgV0FMIHJlcGxheSwgaWYgcmVx dWVzdGVkIGJ5IGEgaG90LXN0YW5kYnkgc2Vzc2lvbiB2aWEKQEAgLTE3NjAsOCArMTc0Niw4 IEBAIFBlcmZvcm1XYWxSZWNvdmVyeSh2b2lkKQogCQkJfQogCiAJCQkvKgotCQkJICogSWYg d2UndmUgYmVlbiBhc2tlZCB0byBsYWcgdGhlIHByaW1hcnksIHdhaXQgb24gbGF0Y2ggdW50 aWwKLQkJCSAqIGVub3VnaCB0aW1lIGhhcyBwYXNzZWQuCisJCQkgKiBJZiB3ZSd2ZSBiZWVu IGFza2VkIHRvIGxhZyB0aGUgcHJpbWFyeSwgd2FpdCB1bnRpbCBlbm91Z2ggdGltZQorCQkJ ICogaGFzIHBhc3NlZC4KIAkJCSAqLwogCQkJaWYgKHJlY292ZXJ5QXBwbHlEZWxheSh4bG9n cmVhZGVyKSkKIAkJCXsKQEAgLTI5MjEsNyArMjkwNyw3IEBAIHJlY292ZXJ5UGF1c2VzSGVy ZShib29sIGVuZE9mUmVjb3ZlcnkpCiAJLyogbG9vcCB1bnRpbCByZWNvdmVyeVBhdXNlU3Rh dGUgaXMgc2V0IHRvIFJFQ09WRVJZX05PVF9QQVVTRUQgKi8KIAl3aGlsZSAoR2V0UmVjb3Zl cnlQYXVzZVN0YXRlKCkgIT0gUkVDT1ZFUllfTk9UX1BBVVNFRCkKIAl7Ci0JCVByb2Nlc3NT dGFydHVwUHJvY0ludGVycnVwdHMoKTsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJ aWYgKENoZWNrRm9yU3RhbmRieVRyaWdnZXIoKSkKIAkJCXJldHVybjsKIApAQCAtMjk5OCw4 ICsyOTg0LDggQEAgcmVjb3ZlcnlBcHBseURlbGF5KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3Jk KQogCWRlbGF5VW50aWwgPSBUaW1lc3RhbXBUelBsdXNNaWxsaXNlY29uZHMoeHRpbWUsIHJl Y292ZXJ5X21pbl9hcHBseV9kZWxheSk7CiAKIAkvKgotCSAqIEV4aXQgd2l0aG91dCBhcm1p bmcgdGhlIGxhdGNoIGlmIGl0J3MgYWxyZWFkeSBwYXN0IHRpbWUgdG8gYXBwbHkgdGhpcwot CSAqIHJlY29yZAorCSAqIEV4aXQgd2l0aG91dCBjbGVhcmluZyB0aGUgaW50ZXJydXB0IGlm IGl0J3MgYWxyZWFkeSBwYXN0IHRpbWUgdG8gYXBwbHkKKwkgKiB0aGlzIHJlY29yZAogCSAq LwogCW1zZWNzID0gVGltZXN0YW1wRGlmZmVyZW5jZU1pbGxpc2Vjb25kcyhHZXRDdXJyZW50 VGltZXN0YW1wKCksIGRlbGF5VW50aWwpOwogCWlmIChtc2VjcyA8PSAwKQpAQCAtMzAwNywx MSArMjk5MywxNiBAQCByZWNvdmVyeUFwcGx5RGVsYXkoWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAKIAl3aGlsZSAodHJ1ZSkKIAl7Ci0JCVJlc2V0TGF0Y2goJlhMb2dSZWNvdmVyeUN0 bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCk7Ci0KIAkJLyogVGhpcyBtaWdodCBjaGFuZ2UgcmVj b3ZlcnlfbWluX2FwcGx5X2RlbGF5LiAqLwotCQlQcm9jZXNzU3RhcnR1cFByb2NJbnRlcnJ1 cHRzKCk7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKKwkJLyoKKwkJICogV2FpdCB1 bnRpbCBtb3JlIFdBTCBhcnJpdmVzLiAgKFdlIHVzZSBhIGRlZGljYXRlZCBpbnRlcnJ1cHQg cmF0aGVyCisJCSAqIHRoYW4gSU5URVJSVVBUX1dBSVRfV0FLRVVQIGZvciB0aGlzLCBzbyB0 aGF0IG1vcmUgV0FMIGFycml2aW5nCisJCSAqIGRvZXNuJ3Qgd2FrZSB1cCB0aGUgc3RhcnR1 cCBwcm9jZXNzIGV4Y2Vzc2l2ZWx5IHdoZW4gd2UncmUgd2FpdGluZworCQkgKiBpbiBvdGhl ciBwbGFjZXMsIGxpa2UgZm9yIHJlY292ZXJ5IGNvbmZsaWN0cykuCisJCSAqLworCQlDbGVh ckludGVycnVwdChJTlRFUlJVUFRfV0FMX0FSUklWRUQpOwogCQlpZiAoQ2hlY2tGb3JTdGFu ZGJ5VHJpZ2dlcigpKQogCQkJYnJlYWs7CiAKQEAgLTMwMzIsMTAgKzMwMjMsMTIgQEAgcmVj b3ZlcnlBcHBseURlbGF5KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCiAJCWVsb2coREVC VUcyLCAicmVjb3ZlcnkgYXBwbHkgZGVsYXkgJWxkIG1pbGxpc2Vjb25kcyIsIG1zZWNzKTsK IAotCQkodm9pZCkgV2FpdExhdGNoKCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVw TGF0Y2gsCi0JCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsCi0JCQkJCQkgbXNlY3MsCi0JCQkJCQkgV0FJVF9FVkVOVF9SRUNPVkVSWV9B UFBMWV9ERUxBWSk7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0 c01hc2sgfAorCQkJCQkJCSBJTlRFUlJVUFRfV0FMX0FSUklWRUQgfAorCQkJCQkJCSBJTlRF UlJVUFRfQ0hFQ0tfUFJPTU9URSwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9V VCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJIG1zZWNzLAorCQkJCQkJCSBXQUlU X0VWRU5UX1JFQ09WRVJZX0FQUExZX0RFTEFZKTsKIAl9CiAJcmV0dXJuIHRydWU7CiB9CkBA IC0zNzE1LDE2ICszNzA4LDE2IEBAIFdhaXRGb3JXQUxUb0JlY29tZUF2YWlsYWJsZShYTG9n UmVjUHRyIFJlY1B0ciwgYm9vbCByYW5kQWNjZXNzLAogCQkJCQkJLyogRG8gYmFja2dyb3Vu ZCB0YXNrcyB0aGF0IG1pZ2h0IGJlbmVmaXQgdXMgbGF0ZXIuICovCiAJCQkJCQlLbm93bkFz c2lnbmVkVHJhbnNhY3Rpb25JZHNJZGxlTWFpbnRlbmFuY2UoKTsKIAotCQkJCQkJKHZvaWQp IFdhaXRMYXRjaCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeVdha2V1cExhdGNoLAotCQkJ CQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwKLQkJCQkJCQkJCQkgV0xfRVhJ VF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkJCQkgd2FpdF90aW1lLAotCQkJCQkJCQkJCSBXQUlU X0VWRU5UX1JFQ09WRVJZX1JFVFJJRVZFX1JFVFJZX0lOVEVSVkFMKTsKLQkJCQkJCVJlc2V0 TGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCk7CisJCQkJCQko dm9pZCkgV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkJCQkJ CQkJIElOVEVSUlVQVF9XQUxfQVJSSVZFRCwKKwkJCQkJCQkJCQkJIFdMX0lOVEVSUlVQVCB8 IFdMX1RJTUVPVVQgfAorCQkJCQkJCQkJCQkgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJ CQkJCQkJIHdhaXRfdGltZSwKKwkJCQkJCQkJCQkJIFdBSVRfRVZFTlRfUkVDT1ZFUllfUkVU UklFVkVfUkVUUllfSU5URVJWQUwpOworCQkJCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBU X1dBTF9BUlJJVkVEKTsKIAkJCQkJCW5vdyA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKIAot CQkJCQkJLyogSGFuZGxlIGludGVycnVwdCBzaWduYWxzIG9mIHN0YXJ0dXAgcHJvY2VzcyAq LwotCQkJCQkJUHJvY2Vzc1N0YXJ0dXBQcm9jSW50ZXJydXB0cygpOworCQkJCQkJQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKTsKIAkJCQkJfQogCQkJCQlsYXN0X2ZhaWxfdGltZSA9IG5vdzsK IAkJCQkJY3VycmVudFNvdXJjZSA9IFhMT0dfRlJPTV9BUkNISVZFOwpAQCAtMzk5MCwxMSAr Mzk4MywxMiBAQCBXYWl0Rm9yV0FMVG9CZWNvbWVBdmFpbGFibGUoWExvZ1JlY1B0ciBSZWNQ dHIsIGJvb2wgcmFuZEFjY2VzcywKIAkJCQkJICogV2FpdCBmb3IgbW9yZSBXQUwgdG8gYXJy aXZlLCB3aGVuIHdlIHdpbGwgYmUgd29rZW4KIAkJCQkJICogaW1tZWRpYXRlbHkgYnkgdGhl IFdBTCByZWNlaXZlci4KIAkJCQkJICovCi0JCQkJCSh2b2lkKSBXYWl0TGF0Y2goJlhMb2dS ZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCwKLQkJCQkJCQkJCSBXTF9MQVRDSF9T RVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJCQkJIC0xTCwKLQkJCQkJCQkJCSBX QUlUX0VWRU5UX1JFQ09WRVJZX1dBTF9TVFJFQU0pOwotCQkJCQlSZXNldExhdGNoKCZYTG9n UmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gpOworCQkJCQkodm9pZCkgV2FpdElu dGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkJCQkJCQkgSU5URVJSVVBU X1dBTF9BUlJJVkVELAorCQkJCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BN X0RFQVRILAorCQkJCQkJCQkJCSAtMUwsCisJCQkJCQkJCQkJIFdBSVRfRVZFTlRfUkVDT1ZF UllfV0FMX1NUUkVBTSk7CisJCQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9XQUxfQVJS SVZFRCk7CiAJCQkJCWJyZWFrOwogCQkJCX0KIApAQCAtNDAxMCwxMSArNDAwNCw4IEBAIFdh aXRGb3JXQUxUb0JlY29tZUF2YWlsYWJsZShYTG9nUmVjUHRyIFJlY1B0ciwgYm9vbCByYW5k QWNjZXNzLAogCQkJUkVDT1ZFUllfTk9UX1BBVVNFRCkKIAkJCXJlY292ZXJ5UGF1c2VzSGVy ZShmYWxzZSk7CiAKLQkJLyoKLQkJICogVGhpcyBwb3NzaWJseS1sb25nIGxvb3AgbmVlZHMg dG8gaGFuZGxlIGludGVycnVwdHMgb2Ygc3RhcnR1cAotCQkgKiBwcm9jZXNzLgotCQkgKi8K LQkJUHJvY2Vzc1N0YXJ0dXBQcm9jSW50ZXJydXB0cygpOworCQkvKiBUaGlzIHBvc3NpYmx5 LWxvbmcgbG9vcCBuZWVkcyB0byBoYW5kbGUgaW50ZXJydXB0cy4gKi8KKwkJQ0hFQ0tfRk9S X0lOVEVSUlVQVFMoKTsKIAl9CiAKIAlyZXR1cm4gWExSRUFEX0ZBSUw7CQkJLyogbm90IHJl YWNoZWQgKi8KQEAgLTQ0NDYsMTEgKzQ0MzcsMTEgQEAgQ2hlY2tGb3JTdGFuZGJ5VHJpZ2dl cih2b2lkKQogCWlmIChMb2NhbFByb21vdGVJc1RyaWdnZXJlZCkKIAkJcmV0dXJuIHRydWU7 CiAKLQlpZiAoSXNQcm9tb3RlU2lnbmFsZWQoKSAmJiBDaGVja1Byb21vdGVTaWduYWwoKSkK KwlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfQ0hFQ0tfUFJPTU9URSkgJiYgQ2hl Y2tQcm9tb3RlU2lnbmFsKCkpCiAJewogCQllcmVwb3J0KExPRywgKGVycm1zZygicmVjZWl2 ZWQgcHJvbW90ZSByZXF1ZXN0IikpKTsKIAkJUmVtb3ZlUHJvbW90ZVNpZ25hbEZpbGVzKCk7 Ci0JCVJlc2V0UHJvbW90ZVNpZ25hbGVkKCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQ VF9DSEVDS19QUk9NT1RFKTsKIAkJU2V0UHJvbW90ZUlzVHJpZ2dlcmVkKCk7CiAJCXJldHVy biB0cnVlOwogCX0KQEAgLTQ0ODgsNyArNDQ3OSwxMCBAQCBDaGVja1Byb21vdGVTaWduYWwo dm9pZCkKIHZvaWQKIFdha2V1cFJlY292ZXJ5KHZvaWQpCiB7Ci0JU2V0TGF0Y2goJlhMb2dS ZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCk7CisJUHJvY051bWJlcglzdGFydHVw UHJvYyA9IHBnX2F0b21pY19yZWFkX3UzMigmUHJvY0dsb2JhbC0+c3RhcnR1cFByb2MpOwor CisJaWYgKHN0YXJ0dXBQcm9jICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCisJCVNlbmRJbnRl cnJ1cHQoSU5URVJSVVBUX1dBTF9BUlJJVkVELCBzdGFydHVwUHJvYyk7CiB9CiAKIC8qCkBA IC00NjkyLDcgKzQ2ODYsNyBAQCBSZWNvdmVyeVJlcXVpcmVzSW50UGFyYW1ldGVyKGNvbnN0 IGNoYXIgKnBhcmFtX25hbWUsIGludCBjdXJyVmFsdWUsIGludCBtaW5WYWx1ZQogCiAJCQl3 aGlsZSAoR2V0UmVjb3ZlcnlQYXVzZVN0YXRlKCkgIT0gUkVDT1ZFUllfTk9UX1BBVVNFRCkK IAkJCXsKLQkJCQlQcm9jZXNzU3RhcnR1cFByb2NJbnRlcnJ1cHRzKCk7CisJCQkJQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKTsKIAogCQkJCWlmIChDaGVja0ZvclN0YW5kYnlUcmlnZ2VyKCkp CiAJCQkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3dh aXQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d3YWl0LmMKaW5kZXggZDI0 ODU1Mzg1ZDEuLjQxY2EyNDhhMjI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nd2FpdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2d3YWl0LmMKQEAgLTI0LDkgKzI0LDEwIEBACiAgKgogICoJCUluIGFkZGl0aW9uLCB0aGUg bGVhc3QtYXdhaXRlZCBMU04gZm9yIGVhY2ggdHlwZSBpcyBjYWNoZWQgaW4gdGhlCiAgKgkJ bWluV2FpdGVkTFNOIGFycmF5LiAgVGhlIHdhaXRlciBwcm9jZXNzIHB1Ymxpc2hlcyBpbmZv cm1hdGlvbiBhYm91dAotICoJCWl0c2VsZiB0byB0aGUgc2hhcmVkIG1lbW9yeSBhbmQgd2Fp dHMgb24gdGhlIGxhdGNoIHVudGlsIGl0IGlzIHdva2VuCi0gKgkJdXAgYnkgdGhlIGFwcHJv cHJpYXRlIHByb2Nlc3MsIHN0YW5kYnkgaXMgcHJvbW90ZWQsIG9yIHRoZSBwb3N0bWFzdGVy Ci0gKgkJZGllcy4gIFRoZW4sIGl0IGNsZWFucyBpbmZvcm1hdGlvbiBhYm91dCBpdHNlbGYg aW4gdGhlIHNoYXJlZCBtZW1vcnkuCisgKgkJaXRzZWxmIHRvIHRoZSBzaGFyZWQgbWVtb3J5 IGFuZCB3YWl0cyBvbiBJTlRFUlJVUFRfV0FJVF9XQUtFVVAgdW50aWwKKyAqCQlpdCBpcyB3 b2tlbiB1cCBieSB0aGUgYXBwcm9wcmlhdGUgcHJvY2Vzcywgc3RhbmRieSBpcyBwcm9tb3Rl ZCwgb3IgdGhlCisgKgkJcG9zdG1hc3RlciBkaWVzLiAgVGhlbiwgaXQgY2xlYW5zIGluZm9y bWF0aW9uIGFib3V0IGl0c2VsZiBpbiB0aGUKKyAqCQlzaGFyZWQgbWVtb3J5LgogICoKICAq CQlPbiBzdGFuZGJ5IHNlcnZlcnM6CiAgKgkJLSBBZnRlciByZXBsYXlpbmcgYSBXQUwgcmVj b3JkLCB0aGUgc3RhcnR1cCBwcm9jZXNzIHBlcmZvcm1zIGEgZmFzdApAQCAtNTQsNyArNTUs NiBAQAogI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIK ICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgotI2luY2x1ZGUgInN0b3Jh Z2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9y YWdlL3NobWVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCkBAIC03OCw3 ICs3OCw3IEBAIGNvbnN0IFNobWVtQ2FsbGJhY2tzIFdhaXRMU05TaG1lbUNhbGxiYWNrcyA9 IHsKIH07CiAKIC8qCi0gKiBXYWl0IGV2ZW50IGZvciBlYWNoIFdhaXRMU05UeXBlLCB1c2Vk IHdpdGggV2FpdExhdGNoKCkgdG8gcmVwb3J0CisgKiBXYWl0IGV2ZW50IGZvciBlYWNoIFdh aXRMU05UeXBlLCB1c2VkIHdpdGggV2FpdEludGVycnVwdCgpIHRvIHJlcG9ydAogICogdGhl IHdhaXQgaW4gcGdfc3RhdF9hY3Rpdml0eS4KICAqLwogc3RhdGljIGNvbnN0IHVpbnQzMiBX YWl0TFNOV2FpdEV2ZW50c1tdID0gewpAQCAtMjY4LDkgKzI2OCw5IEBAIGRlbGV0ZUxTTldh aXRlcihXYWl0TFNOVHlwZSBsc25UeXBlKQogI2RlZmluZQlXQUtFVVBfUFJPQ19TVEFUSUNf QVJSQVlfU0laRSAoMTYpCiAKIC8qCi0gKiBSZW1vdmUgd2FpdGVycyB3aG9zZSBMU04gaGFz IGJlZW4gcmVhY2hlZCBmcm9tIHRoZSBoZWFwIGFuZCBzZXQgdGhlaXIKLSAqIGxhdGNoZXMu ICBJZiBJbnZhbGlkWExvZ1JlY1B0ciBpcyBnaXZlbiwgcmVtb3ZlIGFsbCB3YWl0ZXJzIGZy b20gdGhlIGhlYXAKLSAqIGFuZCBzZXQgbGF0Y2hlcyBmb3IgYWxsIHdhaXRlcnMuCisgKiBS ZW1vdmUgd2FpdGVycyB3aG9zZSBMU04gaGFzIGJlZW4gcmVhY2hlZCBmcm9tIHRoZSBoZWFw IGFuZCB3YWtlIHRoZW0gdXAuCisgKiBJZiBJbnZhbGlkWExvZ1JlY1B0ciBpcyBnaXZlbiwg cmVtb3ZlIGFsbCB3YWl0ZXJzIGZyb20gdGhlIGhlYXAgYW5kIHdha2UKKyAqIHRoZW0gYWxs IHVwLgogICoKICAqIFRoaXMgZnVuY3Rpb24gZmlyc3QgYWNjdW11bGF0ZXMgd2FpdGVycyB0 byB3YWtlIHVwIGludG8gYW4gYXJyYXksIHRoZW4KICAqIHdha2VzIHRoZW0gdXAgd2l0aG91 dCBob2xkaW5nIGEgV2FpdExTTkxvY2suICBUaGUgYXJyYXkgc2l6ZSBpcyBzdGF0aWMgYW5k CkBAIC0zMjUsMTQgKzMyNSwxMyBAQCB3YWtldXBXYWl0ZXJzKFdhaXRMU05UeXBlIGxzblR5 cGUsIFhMb2dSZWNQdHIgY3VycmVudExTTikKIAkJTFdMb2NrUmVsZWFzZShXYWl0TFNOTG9j ayk7CiAKIAkJLyoKLQkJICogU2V0IGxhdGNoZXMgZm9yIHByb2Nlc3NlcyB3aG9zZSB3YWl0 ZWQgTFNOcyBoYXZlIGJlZW4gcmVhY2hlZC4KLQkJICogU2luY2UgU2V0TGF0Y2goKSBpcyBh IHRpbWUtY29uc3VtaW5nIG9wZXJhdGlvbiwgd2UgZG8gdGhpcyBvdXRzaWRlCi0JCSAqIG9m IFdhaXRMU05Mb2NrLiBUaGlzIGlzIHNhZmUgYmVjYXVzZSBwcm9jTGF0Y2ggaXMgbmV2ZXIg ZnJlZWQsIHNvCi0JCSAqIGF0IHdvcnN0IHdlIG1heSBzZXQgYSBsYXRjaCBmb3IgdGhlIHdy b25nIHByb2Nlc3Mgb3IgZm9yIG5vIHByb2Nlc3MKLQkJICogYXQgYWxsLCB3aGljaCBpcyBo YXJtbGVzcy4KKwkJICogV2FrZSB1cCBwcm9jZXNzZXMgd2hvc2Ugd2FpdGVkIExTTnMgaGF2 ZSBiZWVuIHJlYWNoZWQuICBTaW5jZQorCQkgKiBTZW5kSW50ZXJydXB0IGlzIGEgdGltZS1j b25zdW1pbmcgb3BlcmF0aW9uLCB3ZSBkbyB0aGlzIG91dHNpZGUgb2YKKwkJICogV2FpdExT TkxvY2suIChJZiB0aGUgYmFja2VuZCBleGl0cyBvciBpcyBubyBsb25nZXIgd2FpdGluZywg d2UnbGwKKwkJICogc2VuZCBzcHVyaW91cyB3YWtldXAsIGJ1dCB0aGF0J3MgaGFybWxlc3Mp CiAJCSAqLwogCQlmb3IgKGogPSAwOyBqIDwgbnVtV2FrZVVwUHJvY3M7IGorKykKLQkJCVNl dExhdGNoKCZHZXRQR1Byb2NCeU51bWJlcih3YWtlVXBQcm9jc1tqXSktPnByb2NMYXRjaCk7 CisJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgd2FrZVVwUHJvY3Nb al0pOwogCiAJfSB3aGlsZSAobnVtV2FrZVVwUHJvY3MgPT0gV0FLRVVQX1BST0NfU1RBVElD X0FSUkFZX1NJWkUpOwogfQpAQCAtMzkyLDcgKzM5MSw3IEBAIFdhaXRMU05UeXBlUmVxdWly ZXNSZWNvdmVyeShXYWl0TFNOVHlwZSB0KQogfQogCiAvKgotICogV2FpdCB1c2luZyBNeUxh dGNoIHRpbGwgdGhlIGdpdmVuIExTTiBpcyByZWFjaGVkLCB0aGUgcmVwbGljYSBnZXRzCisg KiBXYWl0IHVzaW5nIFdhaXRJbnRlcnJ1cHQgdGlsbCB0aGUgZ2l2ZW4gTFNOIGlzIHJlYWNo ZWQsIHRoZSByZXBsaWNhIGdldHMKICAqIHByb21vdGVkLCBvciB0aGUgcG9zdG1hc3RlciBk aWVzLgogICoKICAqIFJldHVybnMgV0FJVF9MU05fUkVTVUxUX1NVQ0NFU1MgaWYgdGFyZ2V0 IExTTiB3YXMgcmVhY2hlZC4KQEAgLTQwNCw3ICs0MDMsNyBAQCBXYWl0Rm9yTFNOKFdhaXRM U05UeXBlIGxzblR5cGUsIFhMb2dSZWNQdHIgdGFyZ2V0TFNOLCBpbnQ2NCB0aW1lb3V0KQog ewogCVhMb2dSZWNQdHIJY3VycmVudExTTjsKIAlUaW1lc3RhbXBUeiBlbmR0aW1lID0gMDsK LQlpbnQJCQl3YWtlX2V2ZW50cyA9IFdMX0xBVENIX1NFVCB8IFdMX1BPU1RNQVNURVJfREVB VEg7CisJaW50CQkJd2FrZV9ldmVudHMgPSBXTF9JTlRFUlJVUFQgfCBXTF9QT1NUTUFTVEVS X0RFQVRIOwogCiAJLyogU2hvdWxkbid0IGJlIGNhbGxlZCB3aGVuIHNobWVtIGlzbid0IGlu aXRpYWxpemVkICovCiAJQXNzZXJ0KHdhaXRMU05TdGF0ZSk7CkBAIC00NjIsOCArNDYxLDkg QEAgV2FpdEZvckxTTihXYWl0TFNOVHlwZSBsc25UeXBlLCBYTG9nUmVjUHRyIHRhcmdldExT TiwgaW50NjQgdGltZW91dCkKIAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCXJj ID0gV2FpdExhdGNoKE15TGF0Y2gsIHdha2VfZXZlbnRzLCBkZWxheV9tcywKLQkJCQkJICAg V2FpdExTTldhaXRFdmVudHNbbHNuVHlwZV0pOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoQ2hl Y2tGb3JJbnRlcnJ1cHRzTWFzayB8IElOVEVSUlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkJCSAg IHdha2VfZXZlbnRzLCBkZWxheV9tcywKKwkJCQkJCSAgIFdhaXRMU05XYWl0RXZlbnRzW2xz blR5cGVdKTsKIAogCQkvKgogCQkgKiBFbWVyZ2VuY3kgYmFpbG91dCBpZiBwb3N0bWFzdGVy IGhhcyBkaWVkLiAgVGhpcyBpcyB0byBhdm9pZCB0aGUKQEAgLTQ3NSw3ICs0NzUsNyBAQCBX YWl0Rm9yTFNOKFdhaXRMU05UeXBlIGxzblR5cGUsIFhMb2dSZWNQdHIgdGFyZ2V0TFNOLCBp bnQ2NCB0aW1lb3V0KQogCQkJCQllcnJtc2coInRlcm1pbmF0aW5nIGNvbm5lY3Rpb24gZHVl IHRvIHVuZXhwZWN0ZWQgcG9zdG1hc3RlciBleGl0IiksCiAJCQkJCWVycmNvbnRleHQoIndo aWxlIHdhaXRpbmcgZm9yIExTTiIpKTsKIAotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCX0KIAogCS8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF90aHJvdHRsZS5jIGIvc3Jj L2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfdGhyb3R0bGUuYwppbmRleCAyNTUyNzc4NDIx Ny4uODBhNDdlYzkzNWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFj a3VwX3Rocm90dGxlLmMKKysrIGIvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfdGhy b3R0bGUuYwpAQCAtMTcsNyArMTcsNiBAQAogI2luY2x1ZGUgImJhY2t1cC9iYXNlYmFja3Vw X3NpbmsuaCIKICNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicGdzdGF0 LmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVz dGFtcC5oIgogI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZlbnQuaCIKIApAQCAtMTQ3LDcgKzE0 Niw3IEBAIHRocm90dGxlKGJic2lua190aHJvdHRsZSAqc2luaywgc2l6ZV90IGluY3JlbWVu dCkKIAkJKHNpbmstPnRocm90dGxpbmdfY291bnRlciAvIHNpbmstPnRocm90dGxpbmdfc2Ft cGxlKTsKIAogCS8qCi0JICogU2luY2UgdGhlIGxhdGNoIGNvdWxkIGJlIHNldCByZXBlYXRl ZGx5IGJlY2F1c2Ugb2YgY29uY3VycmVudGx5IFdBTAorCSAqIFNpbmNlIHRoZSBpbnRlcnJ1 cHQgY291bGQgYmUgc2V0IHJlcGVhdGVkbHkgYmVjYXVzZSBvZiBjb25jdXJyZW50bHkgV0FM CiAJICogYWN0aXZpdHksIHNsZWVwIGluIGEgbG9vcCB0byBlbnN1cmUgZW5vdWdoIHRpbWUg aGFzIHBhc3NlZC4KIAkgKi8KIAlmb3IgKDs7KQpAQCAtMTY0LDIyICsxNjMsMTYgQEAgdGhy b3R0bGUoYmJzaW5rX3Rocm90dGxlICpzaW5rLCBzaXplX3QgaW5jcmVtZW50KQogCQlpZiAo c2xlZXAgPD0gMCkKIAkJCWJyZWFrOwogCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7Ci0KLQkJ LyogV2UncmUgZWF0aW5nIGEgcG90ZW50aWFsbHkgc2V0IGxhdGNoLCBzbyBjaGVjayBmb3Ig aW50ZXJydXB0cyAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCS8qCiAJCSAq IChUQVJfU0VORF9TSVpFIC8gdGhyb3R0bGluZ19zYW1wbGUgKiBlbGFwc2VkX21pbl91bml0 KSBzaG91bGQgYmUKIAkJICogdGhlIG1heGltdW0gdGltZSB0byBzbGVlcC4gVGh1cyB0aGUg Y2FzdCB0byBsb25nIGlzIHNhZmUuCiAJCSAqLwotCQl3YWl0X3Jlc3VsdCA9IFdhaXRMYXRj aChNeUxhdGNoLAotCQkJCQkJCQlXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJ VF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkJKGxvbmcpIChzbGVlcCAvIDEwMDApLAotCQkJCQkJ CQlXQUlUX0VWRU5UX0JBU0VfQkFDS1VQX1RIUk9UVExFKTsKLQotCQlpZiAod2FpdF9yZXN1 bHQgJiBXTF9MQVRDSF9TRVQpCi0JCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQl3YWl0 X3Jlc3VsdCA9IFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzaywKKwkJCQkJ CQkJCVdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAor CQkJCQkJCQkJKGxvbmcpIChzbGVlcCAvIDEwMDApLAorCQkJCQkJCQkJV0FJVF9FVkVOVF9C QVNFX0JBQ0tVUF9USFJPVFRMRSk7CiAKIAkJLyogRG9uZSB3YWl0aW5nPyAqLwogCQlpZiAo d2FpdF9yZXN1bHQgJiBXTF9USU1FT1VUKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvYXN5bmMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKaW5kZXggZWVl OGJjMjlmMzguLmE4MDFmNWQ3NjM3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9hc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKQEAgLTM2LDcg KzM2LDcgQEAKICAqCSAgaXMgbm8gbmVlZCBmb3IgV0FMIHN1cHBvcnQgb3IgZnN5bmMnaW5n LgogICoKICAqIDMuIEV2ZXJ5IGJhY2tlbmQgdGhhdCBpcyBsaXN0ZW5pbmcgb24gYXQgbGVh c3Qgb25lIGNoYW5uZWwgcmVnaXN0ZXJzIGJ5Ci0gKgkgIGVudGVyaW5nIGl0cyBQSUQgaW50 byB0aGUgYXJyYXkgaW4gQXN5bmNRdWV1ZUNvbnRyb2wuIEl0IHRoZW4gc2NhbnMgYWxsCisg KgkgIGVudGVyaW5nIGl0c2VsZiBpbnRvIHRoZSBhcnJheSBpbiBBc3luY1F1ZXVlQ29udHJv bC4gSXQgdGhlbiBzY2FucyBhbGwKICAqCSAgaW5jb21pbmcgbm90aWZpY2F0aW9ucyBpbiB0 aGUgY2VudHJhbCBxdWV1ZSBhbmQgZmlyc3QgY29tcGFyZXMgdGhlCiAgKgkgIGRhdGFiYXNl IE9JRCBvZiB0aGUgbm90aWZpY2F0aW9uIHdpdGggaXRzIG93biBkYXRhYmFzZSBPSUQgYW5k IHRoZW4KICAqCSAgY29tcGFyZXMgdGhlIG5vdGlmaWVkIGNoYW5uZWwgd2l0aCB0aGUgbGlz dCBvZiBjaGFubmVscyB0aGF0IGl0IGxpc3RlbnMKQEAgLTY4LDggKzY4LDggQEAKICAqCSAg bWFrZSBhbnkgcmVxdWlyZWQgdXBkYXRlcyB0byB0aGUgZWZmZWN0aXZlIGxpc3RlbiBzdGF0 ZSAoc2VlIGJlbG93KS4KICAqCSAgVGhlbiB3ZSBzaWduYWwgYW55IGJhY2tlbmRzIHRoYXQg bWF5IGJlIGludGVyZXN0ZWQgaW4gb3VyIG1lc3NhZ2VzCiAgKgkgIChpbmNsdWRpbmcgb3Vy IG93biBiYWNrZW5kLCBpZiBsaXN0ZW5pbmcpLiAgVGhpcyBpcyBkb25lIGJ5Ci0gKgkgIFNp Z25hbEJhY2tlbmRzKCksIHdoaWNoIHNlbmRzIGEgUFJPQ1NJR19OT1RJRllfSU5URVJSVVBU IHNpZ25hbCB0bwotICoJICBlYWNoIHJlbGV2YW50IGJhY2tlbmQsIGFzIGRlc2NyaWJlZCBi ZWxvdy4KKyAqCSAgU2lnbmFsQmFja2VuZHMoKSwgd2hpY2ggc2VuZHMgSU5URVJSVVBUX0FT WU5DX05PVElGWSB0byBlYWNoIHJlbGV2YW50CisgKgkgIGJhY2tlbmQsIGFzIGRlc2NyaWJl ZCBiZWxvdy4KICAqCiAgKgkgIEZpbmFsbHksIGFmdGVyIHdlIGFyZSBvdXQgb2YgdGhlIHRy YW5zYWN0aW9uIGFsdG9nZXRoZXIgYW5kIGFib3V0IHRvIGdvCiAgKgkgIGlkbGUsIHdlIHNj YW4gdGhlIHF1ZXVlIGZvciBtZXNzYWdlcyB0aGF0IG5lZWQgdG8gYmUgc2VudCB0byBvdXIK QEAgLTgyLDEzICs4MiwxMSBAQAogICoJICBmcm9udGVuZCB1bnRpbCB0aGUgY29tbWFuZCBp cyBkb25lOyBidXQgbm90aWZpZXMgdG8gb3RoZXIgYmFja2VuZHMKICAqCSAgc2hvdWxkIGdv IG91dCBpbW1lZGlhdGVseSBhZnRlciBlYWNoIGNvbW1pdC4KICAqCi0gKiA1LiBVcG9uIHJl Y2VpcHQgb2YgYSBQUk9DU0lHX05PVElGWV9JTlRFUlJVUFQgc2lnbmFsLCB0aGUgc2lnbmFs IGhhbmRsZXIKLSAqCSAgc2V0cyB0aGUgcHJvY2VzcydzIGxhdGNoLCB3aGljaCB0cmlnZ2Vy cyB0aGUgZXZlbnQgdG8gYmUgcHJvY2Vzc2VkCi0gKgkgIGltbWVkaWF0ZWx5IGlmIHRoaXMg YmFja2VuZCBpcyBpZGxlIChpLmUuLCBpdCBpcyB3YWl0aW5nIGZvciBhIGZyb250ZW5kCisg KiA1LiBUaGUgSU5URVJSVVBUX0FTWU5DX05PVElGWSBpbnRlcnJ1cHQgaXMgcHJvY2Vzc2Vk IGltbWVkaWF0ZWx5IGluIHRoZQorICoJICBsaXN0ZW5pbmcgYmFja2VuZCBpZiBpdCBpcyBp ZGxlIChpLmUuLCBpdCBpcyB3YWl0aW5nIGZvciBhIGZyb250ZW5kCiAgKgkgIGNvbW1hbmQg YW5kIGlzIG5vdCB3aXRoaW4gYSB0cmFuc2FjdGlvbiBibG9jay4gQy5mLgotICoJICBQcm9j ZXNzQ2xpZW50UmVhZEludGVycnVwdCgpKS4gIE90aGVyd2lzZSB0aGUgaGFuZGxlciBtYXkg b25seSBzZXQgYQotICoJICBmbGFnLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBwcm9jZXNzaW5n IHRvIG9jY3VyIGp1c3QgYmVmb3JlIHdlIG5leHQgZ28KLSAqCSAgaWRsZS4KKyAqCSAgbWFp biBsb29wIGluIFBvc3RncmVzQmFja2VuZCgpKS4gIE90aGVyd2lzZSB0aGUgaW50ZXJydXB0 IGlzIHByb2Nlc3NlZAorICoJICBsYXRlciwganVzdCBiZWZvcmUgd2UgbmV4dCBnbyBpZGxl LgogICoKICAqCSAgSW5ib3VuZC1ub3RpZnkgcHJvY2Vzc2luZyBjb25zaXN0cyBvZiByZWFk aW5nIGFsbCBvZiB0aGUgbm90aWZpY2F0aW9ucwogICoJICB0aGF0IGhhdmUgYXJyaXZlZCBz aW5jZSBzY2FubmluZyBsYXN0IHRpbWUuIFdlIHJlYWQgZXZlcnkgbm90aWZpY2F0aW9uCkBA IC0xMjYsOSArMTI0LDggQEAKICAqCiAgKgkgIFNpZ25hbEJhY2tlbmRzKCkgY29uc3VsdHMg dGhlIHNoYXJlZCBnbG9iYWwgY2hhbm5lbCB0YWJsZSB0byBpZGVudGlmeQogICoJICBsaXN0 ZW5lcnMgZm9yIHRoZSBjaGFubmVscyB0aGF0IHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIHNl bnQKLSAqCSAgbm90aWZpY2F0aW9uKHMpIHRvLiAgRWFjaCBzZWxlY3RlZCBiYWNrZW5kIGlz IG1hcmtlZCBhcyBoYXZpbmcgYSB3YWtldXAKLSAqCSAgcGVuZGluZyB0byBhdm9pZCBkdXBs aWNhdGUgc2lnbmFscywgYW5kIGEgUFJPQ1NJR19OT1RJRllfSU5URVJSVVBUCi0gKgkgIHNp Z25hbCBpcyBzZW50IHRvIGl0LgorICoJICBub3RpZmljYXRpb24ocykgdG8uICBJTlRFUlJV UFRfQVNZTkNfTk9USUZZIGlzIHNlbnQgdG8gZWFjaCBzZWxlY3RlZAorICoJICBiYWNrZW5k LgogICoKICAqIDguIFdoaWxlIHdyaXRpbmcgbm90aWZpY2F0aW9ucywgUHJlQ29tbWl0X05v dGlmeSgpIHJlY29yZHMgdGhlIHF1ZXVlIGhlYWQKICAqCSAgcG9zaXRpb24gYm90aCBiZWZv cmUgYW5kIGFmdGVyIHRoZSB3cml0ZS4gIEJlY2F1c2UgYWxsIHdyaXRlcnMgc2VyaWFsaXpl CkBAIC0xNjAsNyArMTU3LDYgQEAKIAogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUg PHVuaXN0ZC5oPgotI2luY2x1ZGUgPHNpZ25hbC5oPgogCiAjaW5jbHVkZSAiYWNjZXNzL3Bh cmFsbGVsLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3NscnUuaCIKQEAgLTE3MCwxNSArMTY2LDE0 IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvYXN5bmMuaCIKICNpbmNsdWRlICJjb21tb24vaGFz aGZuLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJsaWIvZHNoYXNoLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIK ICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgog I2luY2x1ZGUgInN0b3JhZ2UvZHNtX3JlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9p cGMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9s bWdyLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1 ZGUgInV0aWxzL2J1aWx0aW5zLmgiCkBAIC0yOTAsNyArMjg1LDggQEAgdHlwZWRlZiBzdHJ1 Y3QgUXVldWVCYWNrZW5kU3RhdHVzCiAJT2lkCQkJZGJvaWQ7CQkJLyogYmFja2VuZCdzIGRh dGFiYXNlIE9JRCwgb3IgSW52YWxpZE9pZCAqLwogCVByb2NOdW1iZXIJbmV4dExpc3RlbmVy OwkvKiBpZCBvZiBuZXh0IGxpc3RlbmVyLCBvciBJTlZBTElEX1BST0NfTlVNQkVSICovCiAJ UXVldWVQb3NpdGlvbiBwb3M7CQkJLyogYmFja2VuZCBoYXMgcmVhZCBxdWV1ZSB1cCB0byBo ZXJlICovCi0JYm9vbAkJd2FrZXVwUGVuZGluZzsJLyogc2lnbmFsIHNlbnQgdG8gYmFja2Vu ZCwgbm90IHlldCBwcm9jZXNzZWQgKi8KKwlib29sCQl3YWtldXBQZW5kaW5nOwkvKiBpbnRl cnJ1cHQgc2VudCB0byBiYWNrZW5kLCBub3QgeWV0CisJCQkJCQkJCSAqIHByb2Nlc3NlZCAq LwogCWJvb2wJCWlzQWR2YW5jaW5nOwkvKiBiYWNrZW5kIGlzIGFkdmFuY2luZyBpdHMgcG9z aXRpb24gKi8KIH0gUXVldWVCYWNrZW5kU3RhdHVzOwogCkBAIC0zMjAsNyArMzE2LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgUXVldWVCYWNrZW5kU3RhdHVzCiAgKiBnbG9iYWxDaGFubmVsVGFi bGUgcGFydGl0aW9uIGxvY2tzLgogICoKICAqIEVhY2ggYmFja2VuZCB1c2VzIHRoZSBiYWNr ZW5kW10gYXJyYXkgZW50cnkgd2l0aCBpbmRleCBlcXVhbCB0byBpdHMKLSAqIFByb2NOdW1i ZXIuICBXZSByZWx5IG9uIHRoaXMgdG8gbWFrZSBTZW5kUHJvY1NpZ25hbCBmYXN0LgorICog UHJvY051bWJlci4gIFdlIHJlbHkgb24gdGhpcyBmb3Igc2VuZGluZyBpbnRlcnJ1cHRzLgog ICoKICAqIFRoZSBiYWNrZW5kW10gYXJyYXkgZW50cmllcyBmb3IgYWN0aXZlbHktbGlzdGVu aW5nIGJhY2tlbmRzIGFyZSB0aHJlYWRlZAogICogdG9nZXRoZXIgdXNpbmcgZmlyc3RMaXN0 ZW5lciBhbmQgdGhlIG5leHRMaXN0ZW5lciBsaW5rcywgc28gdGhhdCB3ZSBjYW4KQEAgLTU0 MiwxNSArNTM4LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgQ2hhbm5lbE5hbWUKIAljaGFyCQljaGFu bmVsW05BTUVEQVRBTEVOXTsJLyogaGFzaCBrZXkgKi8KIH0gQ2hhbm5lbE5hbWU7CiAKLS8q Ci0gKiBJbmJvdW5kIG5vdGlmaWNhdGlvbnMgYXJlIGluaXRpYWxseSBwcm9jZXNzZWQgYnkg SGFuZGxlTm90aWZ5SW50ZXJydXB0KCksCi0gKiBjYWxsZWQgZnJvbSBpbnNpZGUgYSBzaWdu YWwgaGFuZGxlci4gVGhhdCBqdXN0IHNldHMgdGhlCi0gKiBub3RpZnlJbnRlcnJ1cHRQZW5k aW5nIGZsYWcgYW5kIHNldHMgdGhlIHByb2Nlc3MKLSAqIGxhdGNoLiBQcm9jZXNzTm90aWZ5 SW50ZXJydXB0KCkgd2lsbCB0aGVuIGJlIGNhbGxlZCB3aGVuZXZlciBpdCdzIHNhZmUgdG8K LSAqIGFjdHVhbGx5IGRlYWwgd2l0aCB0aGUgaW50ZXJydXB0LgotICovCi12b2xhdGlsZSBz aWdfYXRvbWljX3Qgbm90aWZ5SW50ZXJydXB0UGVuZGluZyA9IGZhbHNlOwotCiAvKiBUcnVl IGlmIHdlJ3ZlIHJlZ2lzdGVyZWQgYW4gb25fc2htZW1fZXhpdCBjbGVhbnVwICovCiBzdGF0 aWMgYm9vbCB1bmxpc3RlbkV4aXRSZWdpc3RlcmVkID0gZmFsc2U7CiAKQEAgLTU2NywxMSAr NTU0LDEwIEBAIHN0YXRpYyBRdWV1ZVBvc2l0aW9uIHF1ZXVlSGVhZEJlZm9yZVdyaXRlOwog c3RhdGljIFF1ZXVlUG9zaXRpb24gcXVldWVIZWFkQWZ0ZXJXcml0ZTsKIAogLyoKLSAqIFdv cmtzcGFjZSBhcnJheXMgZm9yIFNpZ25hbEJhY2tlbmRzLiAgVGhlc2UgYXJlIHByZWFsbG9j YXRlZCBpbgorICogV29ya3NwYWNlIGFycmF5IGZvciBTaWduYWxCYWNrZW5kcy4gIFRoaXMg aXMgcHJlYWxsb2NhdGVkIGluCiAgKiBQcmVDb21taXRfTm90aWZ5IHRvIGF2b2lkIG5lZWRp bmcgbWVtb3J5IGFsbG9jYXRpb24gYWZ0ZXIgY29tbWl0dGluZyB0bwogICogY2xvZy4KICAq Lwotc3RhdGljIGludDMyICpzaWduYWxQaWRzID0gTlVMTDsKIHN0YXRpYyBQcm9jTnVtYmVy ICpzaWduYWxQcm9jbm9zID0gTlVMTDsKIAogLyogaGF2ZSB3ZSBhZHZhbmNlZCB0byBhIHBh Z2UgdGhhdCdzIGEgbXVsdGlwbGUgb2YgUVVFVUVfQ0xFQU5VUF9ERUxBWT8gKi8KQEAgLTEy NzQsMTAgKzEyNjAsNiBAQCBQcmVDb21taXRfTm90aWZ5KHZvaWQpCiAJCX0KIAogCQkvKiBQ cmVhbGxvY2F0ZSB3b3Jrc3BhY2UgdGhhdCB3aWxsIGJlIG5lZWRlZCBieSBTaWduYWxCYWNr ZW5kcygpICovCi0JCWlmIChzaWduYWxQaWRzID09IE5VTEwpCi0JCQlzaWduYWxQaWRzID0g TWVtb3J5Q29udGV4dEFsbG9jKFRvcE1lbW9yeUNvbnRleHQsCi0JCQkJCQkJCQkJCU1heEJh Y2tlbmRzICogc2l6ZW9mKGludDMyKSk7Ci0KIAkJaWYgKHNpZ25hbFByb2Nub3MgPT0gTlVM TCkKIAkJCXNpZ25hbFByb2Nub3MgPSBNZW1vcnlDb250ZXh0QWxsb2MoVG9wTWVtb3J5Q29u dGV4dCwKIAkJCQkJCQkJCQkJICAgTWF4QmFja2VuZHMgKiBzaXplb2YoUHJvY051bWJlcikp OwpAQCAtMTM2OSw3ICsxMzUxLDcgQEAgUHJlQ29tbWl0X05vdGlmeSh2b2lkKQogICoKICAq CQlBcHBseSBwZW5kaW5nIGxpc3Rlbi91bmxpc3RlbiBjaGFuZ2VzIGFuZCBjbGVhciB0cmFu c2FjdGlvbi1sb2NhbCBzdGF0ZS4KICAqCi0gKgkJSWYgd2UgaXNzdWVkIGFueSBub3RpZmlj YXRpb25zIGluIHRoZSB0cmFuc2FjdGlvbiwgc2VuZCBzaWduYWxzIHRvCisgKgkJSWYgd2Ug aXNzdWVkIGFueSBub3RpZmljYXRpb25zIGluIHRoZSB0cmFuc2FjdGlvbiwgc2VuZCBpbnRl cnJ1cHRzIHRvCiAgKgkJbGlzdGVuaW5nIGJhY2tlbmRzIChwb3NzaWJseSBpbmNsdWRpbmcg b3Vyc2VsdmVzKSB0byBwcm9jZXNzIHRoZW0uCiAgKgkJQWxzbywgaWYgd2UgZmlsbGVkIGVu b3VnaCBxdWV1ZSBwYWdlcyB3aXRoIG5ldyBub3RpZmllcywgdHJ5IHRvCiAgKgkJYWR2YW5j ZSB0aGUgcXVldWUgdGFpbCBwb2ludGVyLgpAQCAtMTM5NSw5ICsxMzc3LDkgQEAgQXRDb21t aXRfTm90aWZ5KHZvaWQpCiAJCWFzeW5jUXVldWVVbnJlZ2lzdGVyKCk7CiAKIAkvKgotCSAq IFNlbmQgc2lnbmFscyB0byBsaXN0ZW5pbmcgYmFja2VuZHMuICBXZSBuZWVkIGRvIHRoaXMg b25seSBpZiB0aGVyZSBhcmUKLQkgKiBwZW5kaW5nIG5vdGlmaWVzLCB3aGljaCB3ZXJlIHBy ZXZpb3VzbHkgYWRkZWQgdG8gdGhlIHNoYXJlZCBxdWV1ZSBieQotCSAqIFByZUNvbW1pdF9O b3RpZnkoKS4KKwkgKiBTZW5kIGludGVycnVwdHMgdG8gbGlzdGVuaW5nIGJhY2tlbmRzLiAg V2UgbmVlZCBkbyB0aGlzIG9ubHkgaWYgdGhlcmUKKwkgKiBhcmUgcGVuZGluZyBub3RpZmll cywgd2hpY2ggd2VyZSBwcmV2aW91c2x5IGFkZGVkIHRvIHRoZSBzaGFyZWQgcXVldWUKKwkg KiBieSBQcmVDb21taXRfTm90aWZ5KCkuCiAJICovCiAJaWYgKHBlbmRpbmdOb3RpZmllcyAh PSBOVUxMKQogCQlTaWduYWxCYWNrZW5kcygpOwpAQCAtMTYyNSw3ICsxNjA3LDcgQEAgUHJl cGFyZVRhYmxlRW50cmllc0Zvckxpc3Rlbihjb25zdCBjaGFyICpjaGFubmVsKQogICoKICAq IFByZXBhcmUgYW4gVU5MSVNURU4gYnkgcmVjb3JkaW5nIGl0IGluIHBlbmRpbmdMaXN0ZW5B Y3Rpb25zLCBidXQgb25seSBpZgogICogd2UncmUgY3VycmVudGx5IGxpc3RlbmluZyAoY29t bWl0dGVkIG9yIHN0YWdlZCkuICBXZSBkb24ndCB0b3VjaAotICogZ2xvYmFsQ2hhbm5lbFRh YmxlIHlldCAtIHRoZSBsaXN0ZW5lciBrZWVwcyByZWNlaXZpbmcgc2lnbmFscyB1bnRpbAor ICogZ2xvYmFsQ2hhbm5lbFRhYmxlIHlldCAtIHRoZSBsaXN0ZW5lciBrZWVwcyByZWNlaXZp bmcgbm90aWZpY2F0aW9ucyB1bnRpbAogICogY29tbWl0LCB3aGVuIHRoZSBlbnRyeSBpcyBy ZW1vdmVkLgogICovCiBzdGF0aWMgdm9pZApAQCAtMTY0NSw3ICsxNjI3LDcgQEAgUHJlcGFy ZVRhYmxlRW50cmllc0ZvclVubGlzdGVuKGNvbnN0IGNoYXIgKmNoYW5uZWwpCiAJLyoKIAkg KiBSZWNvcmQgaW4gbG9jYWwgcGVuZGluZyBoYXNoIHRoYXQgd2Ugd2FudCB0byBVTkxJU1RF Tiwgb3ZlcndyaXRpbmcgYW55CiAJICogZWFybGllciBhdHRlbXB0IHRvIExJU1RFTi4gIERv bid0IHRvdWNoIGxvY2FsQ2hhbm5lbFRhYmxlIG9yCi0JICogZ2xvYmFsQ2hhbm5lbFRhYmxl IHlldCAtIHdlIGtlZXAgcmVjZWl2aW5nIHNpZ25hbHMgdW50aWwgY29tbWl0LgorCSAqIGds b2JhbENoYW5uZWxUYWJsZSB5ZXQgLSB3ZSBrZWVwIHJlY2VpdmluZyBub3RpZmljYXRpb25z IHVudGlsIGNvbW1pdC4KIAkgKi8KIAlwZW5kaW5nID0gKFBlbmRpbmdMaXN0ZW5FbnRyeSAq KQogCQloYXNoX3NlYXJjaChwZW5kaW5nTGlzdGVuQWN0aW9ucywgY2hhbm5lbCwgSEFTSF9F TlRFUiwgTlVMTCk7CkBAIC0yMjQ3LDE0ICsyMjI5LDE0IEBAIGFzeW5jUXVldWVGaWxsV2Fy bmluZyh2b2lkKQogfQogCiAvKgotICogU2VuZCBzaWduYWxzIHRvIGxpc3RlbmluZyBiYWNr ZW5kcy4KKyAqIFNlbmQgaW50ZXJydXB0cyB0byBsaXN0ZW5pbmcgYmFja2VuZHMuCiAgKgog ICogTm9ybWFsbHkgd2Ugc2lnbmFsIG9ubHkgYmFja2VuZHMgdGhhdCBhcmUgaW50ZXJlc3Rl ZCBpbiB0aGUgbm90aWZpZXMgdGhhdAogICogd2UganVzdCBzZW50LiAgSG93ZXZlciwgdGhh dCB3aWxsIGxlYXZlIGlkbGUgbGlzdGVuZXJzIGZhbGxpbmcgZnVydGhlciBhbmQKICAqIGZ1 cnRoZXIgYmVoaW5kLiAgV2FrZW4gdGhlbSBhbnl3YXkgaWYgdGhleSdyZSBmYXIgZW5vdWdo IGJlaGluZCwgc28gdGhleSdsbAogICogYWR2YW5jZSB0aGVpciBxdWV1ZSBwb3NpdGlvbiBw b2ludGVycywgYWxsb3dpbmcgdGhlIGdsb2JhbCB0YWlsIHRvIGFkdmFuY2UuCiAgKgotICog U2luY2Ugd2Uga25vdyB0aGUgUHJvY051bWJlciBhbmQgdGhlIFBpZCB0aGUgc2lnbmFsaW5n IGlzIHF1aXRlIGNoZWFwLgorICogU2luY2Ugd2Uga25vdyB0aGUgUHJvY051bWJlciB0aGUg c2lnbmFsaW5nIGlzIHF1aXRlIGNoZWFwLgogICoKICAqIFRoaXMgaXMgY2FsbGVkIGR1cmlu ZyBDb21taXRUcmFuc2FjdGlvbigpLCBzbyBpdCdzIGltcG9ydGFudCBmb3IgaXQKICAqIHRv IGhhdmUgdmVyeSBsb3cgcHJvYmFiaWxpdHkgb2YgZmFpbHVyZS4KQEAgLTIyNjcsMTMgKzIy NDksMTMgQEAgU2lnbmFsQmFja2VuZHModm9pZCkKIAkvKiBDYW4ndCBnZXQgaGVyZSB3aXRo b3V0IFByZUNvbW1pdF9Ob3RpZnkgaGF2aW5nIG1hZGUgdGhlIGdsb2JhbCB0YWJsZSAqLwog CUFzc2VydChnbG9iYWxDaGFubmVsVGFibGUgIT0gTlVMTCk7CiAKLQkvKiBJdCBzaG91bGQg aGF2ZSBzZXQgdXAgdGhlc2UgYXJyYXlzLCB0b28gKi8KLQlBc3NlcnQoc2lnbmFsUGlkcyAh PSBOVUxMICYmIHNpZ25hbFByb2Nub3MgIT0gTlVMTCk7CisJLyogSXQgc2hvdWxkIGhhdmUg c2V0IHVwIHRoaXMgYXJyYXksIHRvbyAqLworCUFzc2VydChzaWduYWxQcm9jbm9zICE9IE5V TEwpOwogCiAJLyoKIAkgKiBJZGVudGlmeSBiYWNrZW5kcyB0aGF0IHdlIG5lZWQgdG8gc2ln bmFsLiAgV2UgZG9uJ3Qgd2FudCB0byBzZW5kCiAJICogc2lnbmFscyB3aGlsZSBob2xkaW5n IHRoZSBOb3RpZnlRdWV1ZUxvY2ssIHNvIHRoaXMgcGFydCBqdXN0IGJ1aWxkcyBhCi0JICog bGlzdCBvZiB0YXJnZXQgUElEcyBpbiBzaWduYWxQaWRzW10gYW5kIHNpZ25hbFByb2Nub3Nb XS4KKwkgKiBsaXN0IG9mIHRhcmdldCBiYWNrZW5kcyBpbiBzaWduYWxQcm9jbm9zW10uCiAJ ICovCiAJY291bnQgPSAwOwogCkBAIC0yMzA4LDIyICsyMjkwLDE5IEBAIFNpZ25hbEJhY2tl bmRzKHZvaWQpCiAJCWZvciAoaW50IGogPSAwOyBqIDwgZW50cnktPm51bUxpc3RlbmVyczsg aisrKQogCQl7CiAJCQlQcm9jTnVtYmVyCWkgPSBsaXN0ZW5lcnNbal0ucHJvY05vOwotCQkJ aW50MzIJCXBpZDsKIAkJCVF1ZXVlUG9zaXRpb24gcG9zOwogCisJCQlBc3NlcnQoaSAhPSBJ TlZBTElEX1BST0NfTlVNQkVSKTsKKwogCQkJaWYgKFFVRVVFX0JBQ0tFTkRfV0FLRVVQX1BF TkRJTkcoaSkpCiAJCQkJY29udGludWU7CQkvKiBhbHJlYWR5IHNpZ25hbGVkLCBubyBuZWVk IHRvIHJlcGVhdCAqLwogCi0JCQlwaWQgPSBRVUVVRV9CQUNLRU5EX1BJRChpKTsKIAkJCXBv cyA9IFFVRVVFX0JBQ0tFTkRfUE9TKGkpOwogCiAJCQlpZiAoUVVFVUVfUE9TX0VRVUFMKHBv cywgUVVFVUVfSEVBRCkpCiAJCQkJY29udGludWU7CQkvKiBpdCdzIGZ1bGx5IGNhdWdodCB1 cCBhbHJlYWR5ICovCiAKLQkJCUFzc2VydChwaWQgIT0gSW52YWxpZFBpZCk7Ci0KIAkJCVFV RVVFX0JBQ0tFTkRfV0FLRVVQX1BFTkRJTkcoaSkgPSB0cnVlOwotCQkJc2lnbmFsUGlkc1tj b3VudF0gPSBwaWQ7CiAJCQlzaWduYWxQcm9jbm9zW2NvdW50XSA9IGk7CiAJCQljb3VudCsr OwogCQl9CkBAIC0yMzQwLDcgKzIzMTksNiBAQCBTaWduYWxCYWNrZW5kcyh2b2lkKQogCSAq LwogCWZvciAoUHJvY051bWJlciBpID0gUVVFVUVfRklSU1RfTElTVEVORVI7IGkgIT0gSU5W QUxJRF9QUk9DX05VTUJFUjsgaSA9IFFVRVVFX05FWFRfTElTVEVORVIoaSkpCiAJewotCQlp bnQzMgkJcGlkOwogCQlRdWV1ZVBvc2l0aW9uIHBvczsKIAogCQlpZiAoUVVFVUVfQkFDS0VO RF9XQUtFVVBfUEVORElORyhpKSkKQEAgLTIzNTAsNyArMjMyOCw2IEBAIFNpZ25hbEJhY2tl bmRzKHZvaWQpCiAJCWlmIChRVUVVRV9CQUNLRU5EX0lTX0FEVkFOQ0lORyhpKSkKIAkJCWNv bnRpbnVlOwogCi0JCXBpZCA9IFFVRVVFX0JBQ0tFTkRfUElEKGkpOwogCQlwb3MgPSBRVUVV RV9CQUNLRU5EX1BPUyhpKTsKIAogCQkvKgpAQCAtMjM3MCwxMCArMjM0Nyw3IEBAIFNpZ25h bEJhY2tlbmRzKHZvaWQpCiAJCQkJCQkJCQlRVUVVRV9QT1NfUEFHRShwb3MpKSA+PSBRVUVV RV9DTEVBTlVQX0RFTEFZKQogCQl7CiAJCQkvKiBJdCdzIGlkbGUgYW5kIGZhciBiZWhpbmQs IHNvIHdha2UgaXQgdXAgKi8KLQkJCUFzc2VydChwaWQgIT0gSW52YWxpZFBpZCk7Ci0KIAkJ CVFVRVVFX0JBQ0tFTkRfV0FLRVVQX1BFTkRJTkcoaSkgPSB0cnVlOwotCQkJc2lnbmFsUGlk c1tjb3VudF0gPSBwaWQ7CiAJCQlzaWduYWxQcm9jbm9zW2NvdW50XSA9IGk7CiAJCQljb3Vu dCsrOwogCQl9CkBAIC0yMzgxLDI5ICsyMzU1LDIwIEBAIFNpZ25hbEJhY2tlbmRzKHZvaWQp CiAKIAlMV0xvY2tSZWxlYXNlKE5vdGlmeVF1ZXVlTG9jayk7CiAKLQkvKiBOb3cgc2VuZCBz aWduYWxzICovCisJLyogTm93IHNlbmQgdGhlIGludGVycnVwdHMgKi8KIAlmb3IgKGludCBp ID0gMDsgaSA8IGNvdW50OyBpKyspCiAJewotCQlpbnQzMgkJcGlkID0gc2lnbmFsUGlkc1tp XTsKKwkJUHJvY051bWJlcglwcm9jbm8gPSBzaWduYWxQcm9jbm9zW2ldOwogCiAJCS8qCi0J CSAqIElmIHdlIGFyZSBzaWduYWxpbmcgb3VyIG93biBwcm9jZXNzLCBubyBuZWVkIHRvIGlu dm9sdmUgdGhlIGtlcm5lbDsKLQkJICoganVzdCBzZXQgdGhlIGZsYWcgZGlyZWN0bHkuCisJ CSAqIE5vdGU6IGl0J3MgdW5saWtlbHkgYnV0IGNlcnRhaW5seSBwb3NzaWJsZSB0aGF0IHRo ZSBiYWNrZW5kIGV4aXRlZAorCQkgKiBzaW5jZSB3ZSByZWxlYXNlZCBOb3RpZnlRdWV1ZUxv Y2suIFdlJ2xsIHNlbmQgdGhlIGludGVycnVwdCB0bworCQkgKiB3cm9uZyBiYWNrZW5kIGlu IHRoYXQgY2FzZSwgYnV0IHRoYXQncyBoYXJtbGVzcy4KIAkJICovCi0JCWlmIChwaWQgPT0g TXlQcm9jUGlkKQotCQl7Ci0JCQlub3RpZnlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQkJ CWNvbnRpbnVlOwotCQl9Ci0KLQkJLyoKLQkJICogTm90ZTogYXNzdW1pbmcgdGhpbmdzIGFy ZW4ndCBicm9rZW4sIGEgc2lnbmFsIGZhaWx1cmUgaGVyZSBjb3VsZAotCQkgKiBvbmx5IG9j Y3VyIGlmIHRoZSB0YXJnZXQgYmFja2VuZCBleGl0ZWQgc2luY2Ugd2UgcmVsZWFzZWQKLQkJ ICogTm90aWZ5UXVldWVMb2NrOyB3aGljaCBpcyB1bmxpa2VseSBidXQgY2VydGFpbmx5IHBv c3NpYmxlLiBTbyB3ZQotCQkgKiBqdXN0IGxvZyBhIGxvdy1sZXZlbCBkZWJ1ZyBtZXNzYWdl IGlmIGl0IGhhcHBlbnMuCi0JCSAqLwotCQlpZiAoU2VuZFByb2NTaWduYWwocGlkLCBQUk9D U0lHX05PVElGWV9JTlRFUlJVUFQsIHNpZ25hbFByb2Nub3NbaV0pIDwgMCkKLQkJCWVsb2co REVCVUczLCAiY291bGQgbm90IHNpZ25hbCBiYWNrZW5kIHdpdGggUElEICVkOiAlbSIsIHBp ZCk7CisJCWlmIChwcm9jbm8gPT0gTXlQcm9jTnVtYmVyKQorCQkJUmFpc2VJbnRlcnJ1cHQo SU5URVJSVVBUX0FTWU5DX05PVElGWSk7CisJCWVsc2UKKwkJCVNlbmRJbnRlcnJ1cHQoSU5U RVJSVVBUX0FTWU5DX05PVElGWSwgcHJvY25vKTsKIAl9CiB9CiAKQEAgLTI1NDAsMzggKzI1 MDUsMTIgQEAgQXRTdWJBYm9ydF9Ob3RpZnkodm9pZCkKIAl9CiB9CiAKLS8qCi0gKiBIYW5k bGVOb3RpZnlJbnRlcnJ1cHQKLSAqCi0gKgkJU2lnbmFsIGhhbmRsZXIgcG9ydGlvbiBvZiBp bnRlcnJ1cHQgaGFuZGxpbmcuIExldCB0aGUgYmFja2VuZCBrbm93Ci0gKgkJdGhhdCB0aGVy ZSdzIGEgcGVuZGluZyBub3RpZnkgaW50ZXJydXB0LiBJZiB3ZSdyZSBjdXJyZW50bHkgcmVh ZGluZwotICoJCWZyb20gdGhlIGNsaWVudCwgdGhpcyB3aWxsIGludGVycnVwdCB0aGUgcmVh ZCBhbmQKLSAqCQlQcm9jZXNzQ2xpZW50UmVhZEludGVycnVwdCgpIHdpbGwgY2FsbCBQcm9j ZXNzTm90aWZ5SW50ZXJydXB0KCkuCi0gKi8KLXZvaWQKLUhhbmRsZU5vdGlmeUludGVycnVw dCh2b2lkKQotewotCS8qCi0JICogTm90ZTogdGhpcyBpcyBjYWxsZWQgYnkgYSBTSUdOQUwg SEFORExFUi4gWW91IG11c3QgYmUgdmVyeSB3YXJ5IHdoYXQKLQkgKiB5b3UgZG8gaGVyZS4K LQkgKi8KLQotCS8qIHNpZ25hbCB0aGF0IHdvcmsgbmVlZHMgdG8gYmUgZG9uZSAqLwotCW5v dGlmeUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotCi0JLyogbGF0Y2ggd2lsbCBiZSBzZXQg YnkgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIgKi8KLX0KLQogLyoKICAqIFByb2Nlc3NO b3RpZnlJbnRlcnJ1cHQKICAqCi0gKgkJVGhpcyBpcyBjYWxsZWQgaWYgd2Ugc2VlIG5vdGlm eUludGVycnVwdFBlbmRpbmcgc2V0LCBqdXN0IGJlZm9yZQotICoJCXRyYW5zbWl0dGluZyBS ZWFkeUZvclF1ZXJ5IGF0IHRoZSBlbmQgb2YgYSBmcm9udGVuZCBjb21tYW5kLCBhbmQKLSAq CQlhbHNvIGlmIGEgbm90aWZ5IHNpZ25hbCBvY2N1cnMgd2hpbGUgcmVhZGluZyBmcm9tIHRo ZSBmcm9udGVuZC4KLSAqCQlIYW5kbGVOb3RpZnlJbnRlcnJ1cHQoKSB3aWxsIGNhdXNlIHRo ZSByZWFkIHRvIGJlIGludGVycnVwdGVkCi0gKgkJdmlhIHRoZSBwcm9jZXNzJ3MgbGF0Y2gs IGFuZCB0aGlzIHJvdXRpbmUgd2lsbCBnZXQgY2FsbGVkLgotICoJCUlmIHdlIGFyZSB0cnVs eSBpZGxlIChpZSwgKm5vdCogaW5zaWRlIGEgdHJhbnNhY3Rpb24gYmxvY2spLAotICoJCXBy b2Nlc3MgdGhlIGluY29taW5nIG5vdGlmaWVzLgorICoJCVRoaXMgaXMgY2FsbGVkIGlmIHdl IHNlZSBJTlRFUlJVUFRfQVNZTkNfTk9USUZZIHNldCwganVzdCBiZWZvcmUKKyAqCQl0cmFu c21pdHRpbmcgUmVhZHlGb3JRdWVyeSBhdCB0aGUgZW5kIG9mIGEgZnJvbnRlbmQgY29tbWFu ZCwgYW5kIGFsc28KKyAqCQlpZiB0aGUgaW50ZXJydXB0IG9jY3VycyB3aGlsZSByZWFkaW5n IGZyb20gdGhlIGZyb250ZW5kLgogICoKICAqCQlJZiAiZmx1c2giIGlzIHRydWUsIGZvcmNl IGFueSBmcm9udGVuZCBtZXNzYWdlcyBvdXQgaW1tZWRpYXRlbHkuCiAgKgkJVGhpcyBjYW4g YmUgZmFsc2Ugd2hlbiBiZWluZyBjYWxsZWQgYXQgdGhlIGVuZCBvZiBhIGZyb250ZW5kIGNv bW1hbmQsCkBAIC0yNTgwLDEyICsyNTE5LDEzIEBAIEhhbmRsZU5vdGlmeUludGVycnVwdCh2 b2lkKQogdm9pZAogUHJvY2Vzc05vdGlmeUludGVycnVwdChib29sIGZsdXNoKQogewotCWlm IChJc1RyYW5zYWN0aW9uT3JUcmFuc2FjdGlvbkJsb2NrKCkpCi0JCXJldHVybjsJCQkJCS8q IG5vdCByZWFsbHkgaWRsZSAqLworCUFzc2VydCghSXNUcmFuc2FjdGlvbk9yVHJhbnNhY3Rp b25CbG9jaygpKTsKIAotCS8qIExvb3AgaW4gY2FzZSBhbm90aGVyIHNpZ25hbCBhcnJpdmVz IHdoaWxlIHNlbmRpbmcgbWVzc2FnZXMgKi8KLQl3aGlsZSAobm90aWZ5SW50ZXJydXB0UGVu ZGluZykKKwkvKiBMb29wIGluIGNhc2UgYW5vdGhlciBpbnRlcnJ1cHQgYXJyaXZlcyB3aGls ZSBzZW5kaW5nIG1lc3NhZ2VzICovCisJZG8KKwl7CiAJCVByb2Nlc3NJbmNvbWluZ05vdGlm eShmbHVzaCk7CisJfSB3aGlsZSAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfQVNZTkNf Tk9USUZZKSk7CiB9CiAKIApAQCAtMjY5NSw3ICsyNjM1LDcgQEAgYXN5bmNRdWV1ZVJlYWRB bGxOb3RpZmljYXRpb25zKHZvaWQpCiAJCQkgKiBPdXIgc3RvcCBwb3NpdGlvbiBpcyB3aGF0 IHdlIGZvdW5kIHRvIGJlIHRoZSBoZWFkJ3MgcG9zaXRpb24KIAkJCSAqIHdoZW4gd2UgZW50 ZXJlZCB0aGlzIGZ1bmN0aW9uLiBJdCBtaWdodCBoYXZlIGNoYW5nZWQgYWxyZWFkeS4KIAkJ CSAqIEJ1dCBpZiBpdCBoYXMsIHdlIHdpbGwgcmVjZWl2ZSAob3IgaGF2ZSBhbHJlYWR5IHJl Y2VpdmVkIGFuZAotCQkJICogcXVldWVkKSBhbm90aGVyIHNpZ25hbCBhbmQgY29tZSBoZXJl IGFnYWluLgorCQkJICogcXVldWVkKSBhbm90aGVyIGludGVycnVwdCBhbmQgY29tZSBoZXJl IGFnYWluLgogCQkJICoKIAkJCSAqIFdlIGFyZSBub3QgaG9sZGluZyBOb3RpZnlRdWV1ZUxv Y2sgaGVyZSEgVGhlIHF1ZXVlIGNhbiBvbmx5CiAJCQkgKiBleHRlbmQgYmV5b25kIHRoZSBo ZWFkIHBvaW50ZXIgKHNlZSBhYm92ZSkgYW5kIHdlIGxlYXZlIG91cgpAQCAtMzA1Nyw5ICsy OTk3LDYgQEAgQXN5bmNOb3RpZnlGcmVlemVYaWRzKFRyYW5zYWN0aW9uSWQgbmV3RnJvemVu WGlkKQogc3RhdGljIHZvaWQKIFByb2Nlc3NJbmNvbWluZ05vdGlmeShib29sIGZsdXNoKQog ewotCS8qIFdlICptdXN0KiByZXNldCB0aGUgZmxhZyAqLwotCW5vdGlmeUludGVycnVwdFBl bmRpbmcgPSBmYWxzZTsKLQogCS8qIERvIG5vdGhpbmcgZWxzZSBpZiB3ZSBhcmVuJ3QgYWN0 aXZlbHkgbGlzdGVuaW5nICovCiAJaWYgKExvY2FsQ2hhbm5lbFRhYmxlSXNFbXB0eSgpKQog CQlyZXR1cm47CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBh cnNlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKaW5kZXggNjVm ZDVhMGFiNGYuLjBkYjc4ZWVmMzRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5ZnJvbXBhcnNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21w YXJzZS5jCkBAIC0yNzMsOSArMjczLDEzIEBAIENvcHlHZXREYXRhKENvcHlGcm9tU3RhdGUg Y3N0YXRlLCB2b2lkICpkYXRhYnVmLCBpbnQgbWlucmVhZCwgaW50IG1heHJlYWQpCiAJCQkJ CS8qIFRyeSB0byByZWNlaXZlIGFub3RoZXIgbWVzc2FnZSAqLwogCQkJCQlpbnQJCQltdHlw ZTsKIAkJCQkJaW50CQkJbWF4bXNnbGVuOworCQkJCQlib29sCQlzYXZlX3F1ZXJ5X2NhbmNl bF9lbmFibGVkOwogCiAJCQlyZWFkbWVzc2FnZToKLQkJCQkJSE9MRF9DQU5DRUxfSU5URVJS VVBUUygpOworCQkJCQlzYXZlX3F1ZXJ5X2NhbmNlbF9lbmFibGVkID0gKEVuYWJsZWRJbnRl cnJ1cHRzTWFzayAmIElOVEVSUlVQVF9RVUVSWV9DQU5DRUwpICE9IDA7CisJCQkJCWlmIChz YXZlX3F1ZXJ5X2NhbmNlbF9lbmFibGVkKQorCQkJCQkJRGlzYWJsZUludGVycnVwdChJTlRF UlJVUFRfUVVFUllfQ0FOQ0VMKTsKKwogCQkJCQlwcV9zdGFydG1zZ3JlYWQoKTsKIAkJCQkJ bXR5cGUgPSBwcV9nZXRieXRlKCk7CiAJCQkJCWlmIChtdHlwZSA9PSBFT0YpCkBAIC0zMDcs NyArMzExLDEwIEBAIENvcHlHZXREYXRhKENvcHlGcm9tU3RhdGUgY3N0YXRlLCB2b2lkICpk YXRhYnVmLCBpbnQgbWlucmVhZCwgaW50IG1heHJlYWQpCiAJCQkJCQllcmVwb3J0KEVSUk9S LAogCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0NPTk5FQ1RJT05fRkFJTFVSRSksCiAJCQkJ CQkJCSBlcnJtc2coInVuZXhwZWN0ZWQgRU9GIG9uIGNsaWVudCBjb25uZWN0aW9uIHdpdGgg YW4gb3BlbiB0cmFuc2FjdGlvbiIpKSk7Ci0JCQkJCVJFU1VNRV9DQU5DRUxfSU5URVJSVVBU UygpOworCisJCQkJCWlmIChzYXZlX3F1ZXJ5X2NhbmNlbF9lbmFibGVkKQorCQkJCQkJRW5h YmxlSW50ZXJydXB0KElOVEVSUlVQVF9RVUVSWV9DQU5DRUwpOworCiAJCQkJCS8qIC4uLiBh bmQgcHJvY2VzcyBpdCAqLwogCQkJCQlzd2l0Y2ggKG10eXBlKQogCQkJCQl7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2tfd29ya2VyLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9yZXBhY2tfd29ya2VyLmMKaW5kZXggMDRkOWZmMGQ4M2QuLmViNjRhNTI3 NzY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2tfd29ya2VyLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrX3dvcmtlci5jCkBAIC0yNiw3ICsy Niw2IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vc25hcGJ1aWxkLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKLSNpbmNsdWRlICJz dG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5j bHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIApAQCAtMTAwLDggKzk5LDcgQEAgUmVwYWNrV29y a2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlzaG1fbXFfc2V0X3NlbmRlcihtcSwgTXlQcm9j KTsKIAltcWggPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOwogCXBxX3JlZGlyZWN0 X3RvX3NobV9tcShzZWcsIG1xaCk7Ci0JcHFfc2V0X3BhcmFsbGVsX2xlYWRlcihzaGFyZWQt PmJhY2tlbmRfcGlkLAotCQkJCQkJICAgc2hhcmVkLT5iYWNrZW5kX3Byb2NfbnVtYmVyKTsK KwlwcV9zZXRfcGFyYWxsZWxfbGVhZGVyKHNoYXJlZC0+YmFja2VuZF9wcm9jX251bWJlcik7 CiAKIAkvKiBDb25uZWN0IHRvIHRoZSBkYXRhYmFzZS4gTE9HSU4gaXMgbm90IHJlcXVpcmVk LiAqLwogCUJhY2tncm91bmRXb3JrZXJJbml0aWFsaXplQ29ubmVjdGlvbkJ5T2lkKHNoYXJl ZC0+ZGJpZCwgc2hhcmVkLT5yb2xlaWQsCkBAIC0xNzMsOSArMTcxLDggQEAgUmVwYWNrV29y a2VyU2h1dGRvd24oaW50IGNvZGUsIERhdHVtIGFyZykKIHsKIAlEZWNvZGluZ1dvcmtlclNo YXJlZCAqc2hhcmVkID0gKERlY29kaW5nV29ya2VyU2hhcmVkICopIERhdHVtR2V0UG9pbnRl cihhcmcpOwogCi0JU2VuZFByb2NTaWduYWwoc2hhcmVkLT5iYWNrZW5kX3BpZCwKLQkJCQkg ICBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCi0JCQkJICAgc2hhcmVkLT5iYWNrZW5kX3By b2NfbnVtYmVyKTsKKwlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9QQVJBTExFTF9NRVNTQUdF LAorCQkJCSAgc2hhcmVkLT5iYWNrZW5kX3Byb2NfbnVtYmVyKTsKIAogCWRzbV9kZXRhY2go d29ya2VyX2RzbV9zZWdtZW50KTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKaW5kZXggNWNh ZGEyODdkNzkuLjU2YjgyZGFlNTRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpAQCAtNDMs NyArNDMsNiBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3JlcGFjay5oIgogI2luY2x1ZGUgImNv bW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKLSNpbmNsdWRl ICJpcGMvc2lnbmFsX2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgi CiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXRvdmFjdXVt LmgiCkBAIC0yNDQyLDkgKzI0NDEsNiBAQCB2YWN1dW1fZGVsYXlfcG9pbnQoYm9vbCBpc19h bmFseXplKQogCS8qIEFsd2F5cyBjaGVjayBmb3IgaW50ZXJydXB0cyAqLwogCUNIRUNLX0ZP Ul9JTlRFUlJVUFRTKCk7CiAKLQlpZiAoSW50ZXJydXB0UGVuZGluZykKLQkJcmV0dXJuOwot CiAJaWYgKElzUGFyYWxsZWxXb3JrZXIoKSkKIAl7CiAJCS8qCkBAIC0yNDU1LDcgKzI0NTEs NyBAQCB2YWN1dW1fZGVsYXlfcG9pbnQoYm9vbCBpc19hbmFseXplKQogCQlwYXJhbGxlbF92 YWN1dW1fdXBkYXRlX3NoYXJlZF9kZWxheV9wYXJhbXMoKTsKIAl9CiAKLQlpZiAoIVZhY3V1 bUNvc3RBY3RpdmUgJiYgIUNvbmZpZ1JlbG9hZFBlbmRpbmcpCisJaWYgKCFWYWN1dW1Db3N0 QWN0aXZlICYmICFJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKSkK IAkJcmV0dXJuOwogCiAJLyoKQEAgLTI0NjQsOSArMjQ2MCw5IEBAIHZhY3V1bV9kZWxheV9w b2ludChib29sIGlzX2FuYWx5emUpCiAJICogW2F1dG92YWN1dW1fXXZhY3V1bV9jb3N0X2Rl bGF5IHRvIHRha2UgZWZmZWN0IHdoaWxlIGEgdGFibGUgaXMgYmVpbmcKIAkgKiB2YWN1dW1l ZCBvciBhbmFseXplZC4KIAkgKi8KLQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZyAmJiBBbUF1 dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpCisJaWYgKEludGVycnVwdFBlbmRpbmcoSU5URVJS VVBUX0NPTkZJR19SRUxPQUQpICYmIEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKIAl7 Ci0JCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5U RVJSVVBUX0NPTkZJR19SRUxPQUQpOwogCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQ KTsKIAkJVmFjdXVtVXBkYXRlQ29zdHMoKTsKIApAQCAtMjU1OSw4ICsyNTU1LDggQEAgdmFj dXVtX2RlbGF5X3BvaW50KGJvb2wgaXNfYW5hbHl6ZSkKIAkJLyoKIAkJICogV2UgZG9uJ3Qg d2FudCB0byBpZ25vcmUgcG9zdG1hc3RlciBkZWF0aCBkdXJpbmcgdmVyeSBsb25nIHZhY3V1 bXMKIAkJICogd2l0aCB2YWN1dW1fY29zdF9kZWxheSBjb25maWd1cmVkLiAgV2UgY2FuJ3Qg dXNlIHRoZSB1c3VhbAotCQkgKiBXYWl0TGF0Y2goKSBhcHByb2FjaCBoZXJlIGJlY2F1c2Ug d2Ugd2FudCBtaWNyb3NlY29uZC1iYXNlZCBzbGVlcAotCQkgKiBkdXJhdGlvbnMgYWJvdmUu CisJCSAqIFdhaXRJbnRlcnJ1cHQoKSBhcHByb2FjaCBoZXJlIGJlY2F1c2Ugd2Ugd2FudCBt aWNyb3NlY29uZC1iYXNlZAorCQkgKiBzbGVlcCBkdXJhdGlvbnMgYWJvdmUuCiAJCSAqLwog CQlpZiAoSXNVbmRlclBvc3RtYXN0ZXIgJiYgIVBvc3RtYXN0ZXJJc0FsaXZlKCkpCiAJCQll eGl0KDEpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCmluZGV4IGM2YWI5ZDVlMTll Li4yMGQ0OTI3NDBiOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFw cGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpAQCAtNjQs NyArNjQsNiBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVBcHBlbmQuaCIKICNpbmNsdWRl ICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCi0jaW5jbHVkZSAic3Rv cmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAi dXRpbHMvcmVzb3duZXIuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCkBAIC0x MDQ3LDcgKzEwNDYsNyBAQCBFeGVjQXBwZW5kQXN5bmNFdmVudFdhaXQoQXBwZW5kU3RhdGUg Km5vZGUpCiAJQXNzZXJ0KG5vZGUtPmFzX2V2ZW50c2V0ID09IE5VTEwpOwogCW5vZGUtPmFz X2V2ZW50c2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0KEN1cnJlbnRSZXNvdXJjZU93bmVyLCBu ZXZlbnRzKTsKIAlBZGRXYWl0RXZlbnRUb1NldChub2RlLT5hc19ldmVudHNldCwgV0xfRVhJ VF9PTl9QTV9ERUFUSCwgUEdJTlZBTElEX1NPQ0tFVCwKLQkJCQkJICBOVUxMLCBOVUxMKTsK KwkJCQkJICAwLCBOVUxMKTsKIAogCS8qIEdpdmUgZWFjaCB3YWl0aW5nIHN1YnBsYW4gYSBj aGFuY2UgdG8gYWRkIGFuIGV2ZW50LiAqLwogCWkgPSAtMTsKQEAgLTEwNzEsOCArMTA3MCw4 IEBAIEV4ZWNBcHBlbmRBc3luY0V2ZW50V2FpdChBcHBlbmRTdGF0ZSAqbm9kZSkKIAl9CiAK IAkvKgotCSAqIEFkZCB0aGUgcHJvY2VzcyBsYXRjaCB0byB0aGUgc2V0LCBzbyB0aGF0IHdl IHdha2UgdXAgdG8gcHJvY2VzcyB0aGUKLQkgKiBzdGFuZGFyZCBpbnRlcnJ1cHRzIHdpdGgg Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKS4KKwkgKiBBZGQgdGhlIGN1cnJlbnRseSBlbmFibGVk IGludGVycnVwdHMgdG8gdGhlIHNldCwgc28gdGhhdCB3ZSB3YWtlIHVwIHRvCisJICogcHJv Y2VzcyB0aGVtIHdpdGggQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKS4KIAkgKgogCSAqIE5PVEU6 IEZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIGl0J3MgaW1wb3J0YW50IHRoYXQgdGhpcyBpcyBh ZGRlZCB0byB0aGUKIAkgKiBXYWl0RXZlbnRTZXQgYWZ0ZXIgdGhlIEV4ZWNBc3luY0NvbmZp Z3VyZVdhaXQoKSBjYWxscy4gIE5hbWVseSwKQEAgLTEwODIsOCArMTA4MSw4IEBAIEV4ZWNB cHBlbmRBc3luY0V2ZW50V2FpdChBcHBlbmRTdGF0ZSAqbm9kZSkKIAkgKiB3ZSBjYW5ub3Qg Y2hhbmdlIGl0IG5vdy4gIFRoZSBwYXR0ZXJuIGhhcyBwb3NzaWJseSBiZWVuIGNvcGllZCB0 byBvdGhlcgogCSAqIGV4dGVuc2lvbnMgdG9vLgogCSAqLwotCUFkZFdhaXRFdmVudFRvU2V0 KG5vZGUtPmFzX2V2ZW50c2V0LCBXTF9MQVRDSF9TRVQsIFBHSU5WQUxJRF9TT0NLRVQsCi0J CQkJCSAgTXlMYXRjaCwgTlVMTCk7CisJQWRkV2FpdEV2ZW50VG9TZXQobm9kZS0+YXNfZXZl bnRzZXQsIFdMX0lOVEVSUlVQVCwgUEdJTlZBTElEX1NPQ0tFVCwKKwkJCQkJICBDaGVja0Zv ckludGVycnVwdHNNYXNrLCBOVUxMKTsKIAogCS8qIFJldHVybiBhdCBtb3N0IEVWRU5UX0JV RkZFUl9TSVpFIGV2ZW50cyBpbiBvbmUgY2FsbC4gKi8KIAlpZiAobmV2ZW50cyA+IEVWRU5U X0JVRkZFUl9TSVpFKQpAQCAtMTEyNiwxNCArMTEyNSwxMCBAQCBFeGVjQXBwZW5kQXN5bmNF dmVudFdhaXQoQXBwZW5kU3RhdGUgKm5vZGUpCiAJCQkJRXhlY0FzeW5jTm90aWZ5KGFyZXEp OwogCQkJfQogCQl9Ci0KLQkJLyogSGFuZGxlIHN0YW5kYXJkIGludGVycnVwdHMgKi8KLQkJ aWYgKCh3LT5ldmVudHMgJiBXTF9MQVRDSF9TRVQpICE9IDApCi0JCXsKLQkJCVJlc2V0TGF0 Y2goTXlMYXRjaCk7Ci0JCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwotCQl9CiAJfQorCisJ LyogSGFuZGxlIHN0YW5kYXJkIGludGVycnVwdHMgKi8KKwlDSEVDS19GT1JfSU5URVJSVVBU UygpOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlR2F0aGVyLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMK aW5kZXggZTUwMGFlNjY4ZDAuLmEzN2Q2ZTkwNmIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUdhdGhlci5jCkBAIC0zNSw5ICszNSw3IEBACiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZUdh dGhlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3RxdWV1ZS5oIgogI2luY2x1ZGUgImlwYy9p bnRlcnJ1cHQuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJvcHRpbWl6 ZXIvb3B0aW1pemVyLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUg InV0aWxzL3dhaXRfZXZlbnQuaCIKIAogCkBAIC0zODQsOSArMzgyLDExIEBAIGdhdGhlcl9y ZWFkbmV4dChHYXRoZXJTdGF0ZSAqZ2F0aGVyc3RhdGUpCiAJCQkJcmV0dXJuIE5VTEw7CiAK IAkJCS8qIE5vdGhpbmcgdG8gZG8gZXhjZXB0IHdhaXQgZm9yIGRldmVsb3BtZW50cy4gKi8K LQkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9P Tl9QTV9ERUFUSCwgMCwKLQkJCQkJCQkgV0FJVF9FVkVOVF9FWEVDVVRFX0dBVEhFUik7Ci0J CQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoQ2hlY2tG b3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkJCSBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsCisJ CQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJ CQkgV0FJVF9FVkVOVF9FWEVDVVRFX0dBVEhFUik7CisJCQlDbGVhckludGVycnVwdChJTlRF UlJVUFRfV0FJVF9XQUtFVVApOwogCQkJbnZpc2l0ZWQgPSAwOwogCQl9CiAJfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvaXBjL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvaXBjL01ha2Vm aWxlCmluZGV4IDQxMjA5MDllYmJlLi43ZDQ2NWJjOTdkYiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvaXBjL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2lwYy9NYWtlZmlsZQpAQCAt MTMsNiArMTMsNyBAQCB0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgogaW5jbHVkZSAkKHRvcF9i dWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogCiBPQkpTID0gXAorCWludGVycnVwdC5v IFwKIAlzaWduYWxfaGFuZGxlcnMubwogCiBpbmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2Jh Y2tlbmQvY29tbW9uLm1rCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9pcGMvUkVBRE1FLm1k IGIvc3JjL2JhY2tlbmQvaXBjL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uMDg1YzFkODZkZWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFj a2VuZC9pcGMvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMjYxIEBACitJbnRlcnJ1cHRzCis9PT09 PT09PT09CisKKyJJbnRlcnJ1cHRzIiBhcmUgYSBzZXQgb2YgZmxhZ3MgdGhhdCByZXByZXNl bnQgY29uZGl0aW9ucyB0aGF0IHNob3VsZAorYmUgaGFuZGxlZCBhdCBhIGxhdGVyIHRpbWUu ICBUaGV5IGFyZSByb3VnaGx5IGFuYWxvZ291cyB0byBVbml4CitzaWduYWxzLCBleGNlcHQg dGhhdCB0aGV5IGFyZSBoYW5kbGVkIGNvb3BlcmF0aXZlbHkgYnkgY2hlY2tpbmcgZm9yCit0 aGVtIGF0IG1hbnkgcG9pbnRzIGluIHRoZSBjb2RlLiBUaGUgQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKSBtYWNybyBpcworY2FsbGVkIGF0IHN0cmF0ZWdpY2FsbHkgbG9jYXRlZCBzcG90cyB3 aGVyZSBpdCBpcyBub3JtYWxseSBzYWZlIHRvCitwcm9jZXNzIGludGVycnVwdHMuCisKK1dl bGwgYmVoYXZlZCBiYWNrZW5kIGNvZGUgY2FsbHMgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBw ZXJpb2RpY2FsbHkgaW4KK2FueSBsb25nLXJ1bm5pbmcgbG9vcHMgb3Igb3RoZXIgbG9uZyBj b21wdXRhdGlvbnMsIGFuZCBuZXZlciBzbGVlcHMKK3VzaW5nIG1lY2hhbmlzbXMgb3RoZXIg dGhhbiB0aGUgV2FpdEV2ZW50U2V0IG1lY2hhbmlzbSBvciB0aGUgbW9yZQorY29udmVuaWVu dCBXYWl0SW50ZXJydXB0IC8gV2FpdFNvY2tlck9ySW50ZXJydXB0IGZ1bmN0aW9ucyAoZXhj ZXB0IGZvcgorYm91bmRlZCBzaG9ydCBwZXJpb2RzLCBlZyBMV0xvY2sgd2FpdHMpLiBGb2xs b3dpbmcgdGhlc2UgcnVsZXMgZW5zdXJlcwordGhhdCB0aGUgYmFja2VuZCBkb2Vzbid0IGJl Y29tZSB1bmNhbmNlbGxhYmxlIGZvciB0b28gbG9uZy4KKworRWFjaCBpbnRlcnJ1cHQgdHlw ZSBjYW4gaGF2ZSBhIGhhbmRsZXIgZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoIGl0LAord2hp Y2ggd2lsbCBiZSBjYWxsZWQgYnkgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBpZiB0aGUgaW50 ZXJydXB0IGlzCitwZW5kaW5nLiAgQSBzdGFuZGFyZCBzZXQgb2YgaW50ZXJydXB0IGhhbmRs ZXJzIGFyZSBpbnN0YWxsZWQgYXQKK3Byb2Nlc3Mgc3RhcnR1cCwgYnV0IHRoZXkgY2FuIGJl IG92ZXJyaWRkZW4gYnkKK1NldEludGVycnVwdEhhbmRsZXIoKS4gQSBoYW5kbGVyIGNhbiBh bHNvIGJlIHRlbXBvcmFyaWx5IGRpc2FibGVkIGJ5CitjYWxsaW5nIERpc2FibGVJbnRlcnJ1 cHQgYW5kIHJlLWVuYWJsZWQgYnkgRW5hYmxlSW50ZXJydXB0LgorCitJZiBhbiBpbnRlcnJ1 cHQgaXMgcmFpc2VkIHRoYXQgZG9lc24ndCBoYXZlIGEgaGFuZGxlciBmdW5jdGlvbiBvciBp dAoraXMgbm90IGVuYWJsZWQsIHRoZSBpbnRlcnJ1cHQgd2lsbCByZW1haW4gcGVuZGluZyB1 bnRpbCBpdCBpcyBjbGVhcmVkLAorb3IgdGhlIGhhbmRsZXIgaXMgcmUtZW5hYmxlZC4KKwor SWYgYW4gaW50ZXJydXB0IGlzIHNlbnQgdGhhdCB3YXMgYWxyZWFkeSBwZW5kaW5nIGZvciB0 aGUgdGFyZ2V0Citwcm9jZXNzLCBpdCBpcyBjb2FsZXNjZWQsIGllLiB0aGUgdGFyZ2V0IHBy b2Nlc3Mgd2lsbCBwcm9jZXNzIGl0IG9ubHkKK29uY2UuIEF0dGVtcHRpbmcgdG8gc2V0IGFu IGludGVycnVwdCBiaXQgdGhhdCBpcyBhbHJlYWR5IHNldCBpcyB2ZXJ5CitmYXN0LCBhbW91 bnRpbmcgdG8gbWVyZWx5IGFuIGF0b21pYyBvcCBpbiBzaGFyZWQgbWVtb3J5LgorCitTZWUg c3JjL2luY2x1ZGUvaXBjL2ludGVycnVwdC5oIGZvciBhIGxpc3Qgb2YgYWxsIHRoZSBpbnRl cnJ1cHRzIHVzZWQKK2luIGNvcmUgY29kZS4gRXh0ZW5zaW9ucyBjYW4gZGVmaW5lIHRoZWly IG93biBpbnRlcnJ1cHRzLgorCitIT0xEL1JFU1VNRV9JTlRFUlJVUFRTCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisKK1Byb2Nlc3NpbmcgYW4gaW50ZXJydXB0IG1heSB0aHJvdyBhbiBl cnJvciB3aXRoIGVyZXBvcnQoKSAoZm9yCitleGFtcGxlLCBxdWVyeSBjYW5jZWxsYXRpb24p IG9yIHRlcm1pbmF0ZSB0aGUgcHJvY2VzcyBncmFjZWZ1bGx5LiBJbgorc29tZSBjYXNlcywg d2UgaW52b2tlIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgaW5zaWRlIGxvdy1sZXZlbAorc3Vi cm91dGluZXMgdGhhdCBtaWdodCBzb21ldGltZXMgYmUgY2FsbGVkIGluIGNvbnRleHRzIHRo YXQgZG8gKm5vdCoKK3dhbnQgdG8gYWxsb3cgaW50ZXJydXB0IHByb2Nlc3NpbmcuICBUaGUg SE9MRF9JTlRFUlJVUFRTKCkgYW5kCitSRVNVTUVfSU5URVJSVVBUUygpIG1hY3JvcyBhbGxv dyBjb2RlIHRvIGVuc3VyZSB0aGF0IG5vIGludGVycnVwdAoraGFuZGxlcnMgYXJlIGNhbGxl ZCwgZXZlbiBpZiBDSEVDS19GT1JfSU5URVJSVVBUUygpIGdldHMgY2FsbGVkIGluIGEKK3N1 YnJvdXRpbmUuICBUaGUgaW50ZXJydXB0IHdpbGwgYmUgaGVsZCBvZmYgdW50aWwKK0NIRUNL X0ZPUl9JTlRFUlJVUFRTKCkgaXMgZG9uZSBvdXRzaWRlIGFueSBIT0xEX0lOVEVSUlVQVFMo KSAuLi4KK1JFU1VNRV9JTlRFUlJVUFRTKCkgc2VjdGlvbi4KKworSE9MRF9JTlRFUlJVUFRT KCkgYmxvY2tzIGNhbiBiZSBuZXN0ZWQuIElmIEhPTERfSU5URVJSVVBUUygpIGlzIGNhbGxl ZAorbXVsdGlwbGUgdGltZXMsIGludGVycnVwdHMgYXJlIGhlbGQgdW50aWwgZXZlcnkgSE9M RF9JTlRFUlJVUFRTKCkgY2FsbAoraGFzIGJlZW4gYmFsYW5jZWQgd2l0aCBhIFJFU1VNRV9J TlRFUlJVUFRTKCkgY2FsbC4KKworQ3JpdGljYWwgc2VjdGlvbnMKKy0tLS0tLS0tLS0tLS0t LS0tCisKK0EgcmVsYXRlZCwgYnV0IGNvbmNlcHR1YWxseSBkaXN0aW5jdCwgbWVjaGFuaXNt IGlzIHRoZSAiY3JpdGljYWwKK3NlY3Rpb24iIG1lY2hhbmlzbS4gIEEgY3JpdGljYWwgc2Vj dGlvbiBub3Qgb25seSBob2xkcyBvZmYgY2FuY2VsL2RpZQoraW50ZXJydXB0cywgYnV0IGNh dXNlcyBhbnkgZXJlcG9ydChFUlJPUikgb3IgZXJlcG9ydChGQVRBTCkgdG8gYmVjb21lCitl cmVwb3J0KFBBTklDKSAtLS0gdGhhdCBpcywgYSBzeXN0ZW0td2lkZSByZXNldCBpcyBmb3Jj ZWQuICBOZWVkbGVzcwordG8gc2F5LCBvbmx5IHJlYWxseSAqY3JpdGljYWwqIGNvZGUgc2hv dWxkIGJlIG1hcmtlZCBhcyBhIGNyaXRpY2FsCitzZWN0aW9uISBUaGlzIG1lY2hhbmlzbSBp cyBtb3N0bHkgdXNlZCBmb3IgWExPRy1yZWxhdGVkIGNvZGUuCisKK1NlbmRpbmcgaW50ZXJy dXB0cworLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ludGVycnVwdCBmbGFncyBjYW4gYmUgInJh aXNlZCIgaW4gZGlmZmVyZW50IHdheXM6CistIHN5bmNocm9ub3VzbHkgYnkgY29kZSB0aGF0 IHdhbnRzIHRvIGRlZmVyIGFuIGFjdGlvbiwgYnkgY2FsbGluZworICBSYWlzZUludGVycnVw dCwKKy0gYXN5bmNocm9ub3VzbHkgYnkgdGltZXJzIG9yIG90aGVyIHNpZ25hbCBoYW5kbGVy cywgYWxzbyBieSBjYWxsaW5nCisgIFJhaXNlSW50ZXJydXB0LCBvcgorLSAic2VudCIgYnkg b3RoZXIgYmFja2VuZHMgd2l0aCBTZW5kSW50ZXJydXB0CisKK1Byb2Nlc3NpbmcgaW50ZXJy dXB0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ludGVycnVwdHMgYXJlIHVzdWFsbHkg aGFuZGxlZCBieSBoYW5kbGVyIGZ1bmN0aW9ucywgd2hpY2ggYXJlIGNhbGxlZAorZnJvbSBD SEVDS19GT1JfSU5URVJSVVBUUygpIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJydXB0 IGlzCitwZW5kaW5nLiBVc2UgU2V0SW50ZXJydXB0SGFuZGxlcigpIHRvIGluc3RhbGwgYSBo YW5kbGVyIGZ1bmN0aW9uLgorCitTb21ldGltZXMgeW91IGRvbid0IHdhbnQgYW4gaW50ZXJy dXB0IHRvIGJlIHByb2Nlc3NlZCBhdCBhbnkgcmFuZG9tCitDSEVDS19GT1JfSU5URVJSVVBU UygpIGludm9jYXRpb24uIEluIHRoYXQgY2FzZSwgeW91IGNhbiBsZWF2ZSB0aGUKK2ludGVy cnVwdCBoYW5kbGVyIGRpc2FibGVkLCBhbmQgY2hlY2sgZm9yIHRoZSBpbnRlcnJ1cHQgZXhw bGljaXRseSBhdAorc3VpdGFibGUgc3BvdHMgd2l0aCBJbnRlcnJ1cHRQZW5kaW5nKCkuCisK K0lOVEVSUlVQVFNfUEVORElOR19DT05ESVRJT04oKSBjYW4gYmUgY2hlY2tlZCB0byBzZWUg d2hldGhlciBhbgoraW50ZXJydXB0IG5lZWRzIHRvIGJlIHNlcnZpY2VkLCB3aXRob3V0IHRy eWluZyB0byBkbyBzbyBpbW1lZGlhdGVseS4KK1NvbWUgY2FsbGVycyBhcmUgYWxzbyBpbnRl cmVzdGVkIGluIElOVEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NFRCgpLAord2hpY2ggdGVsbHMg d2hldGhlciBDSEVDS19GT1JfSU5URVJSVVBUUygpIGlzIHN1cmUgdG8gY2xlYXIgdGhlCitp bnRlcnJ1cHQuCisKKworV2FpdGluZyBmb3IgYW4gaW50ZXJydXB0CistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK1RoZSBjb3JyZWN0IHBhdHRlcm4gdG8gd2FpdCBmb3IgYW4gZXZlbnQo cykgdGhhdCByYWlzZXMgYW4gaW50ZXJydXB0CitpczoKKworYGBgCitmb3IgKDs7KQorewor CS8qIEhhbmRsZSBhbnkgb3RoZXIgaW50ZXJydXB0cyByZWNlaXZlZCB3aGlsZSB3ZSdyZSB3 YWl0aW5nICovCisJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCS8qIENoZWNrIGlmIG91 ciBpbnRlcnJ1cHQgd2FzIHJhaXNlZCAoY2xlYXJpbmcgaXQgaWYgaXQgd2FzKSAqLworCWlm IChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9QUklOVEVSX09OX0ZJUkUpKQorCQlicmVh azsKKworCS8qCisJICogU2xlZXAgdW50aWwgb3VyIGludGVycnVwdCBvciBvbmUgb2YgdGhl IHN0YW5kYXJkIGludGVycnVwdHMgaXMKKwkgKiByZWNlaXZlZC4KKwkgKi8KKwlXYWl0SW50 ZXJydXB0KElOVEVSUlVQVF9DRklfTUFTSyB8CisJCQkJICBJTlRFUlJVUFRfUFJJTlRFUl9P Tl9GSVJFLAorCQkJCSAgLi4uKTsKK30KK2BgYAorCitPZnRlbiBhbiBpbnRlcnJ1cHQgaXMg dXNlZCB0byB3YWtlIHVwIGEgcHJvY2VzcyB0aGF0IGlzIGtub3duIHRvIGJlCit3YWl0aW5n IGFuZCBub3QgZG9pbmcgYW55dGhpbmcgZWxzZS4gVGhlIElOVEVSUlVQVF9XQUlUX1dBS0VV UAoraW50ZXJydXB0IGlzIHJlc2VydmVkIGZvciBzdWNoIHVzZSBjYXNlcyB3aGVyZSB5b3Ug ZG9uJ3QgbmVlZCBhCitkZWRpY2F0ZWQgaW50ZXJydXB0IGZsYWcuIFdoZW4gdXNpbmcgSU5U RVJSVVBUX1dBSVRfV0FLRVVQLCB5b3UgbmVlZAorc29tZSBvdGhlciBzaWduYWxpbmcsIGUu Zy4gYSBmbGFnIGluIHNoYXJlZCBtZW1vcnksIHRvIGluZGljYXRlIHRoYXQKK3RoZSBkZXNp cmVkIGV2ZW50IGhhcyBoYXBwZW4sIGFzIHlvdSBtYXkgc29tZXRpbWVzIHJlY2VpdmUgZmFs c2UKK3dha2V1cHMuIFRoZSBwYXR0ZXJuIHVzaW5nIElOVEVSUlVQVF9XQUlUX1dBS0VVUCBs b29rcyBsaWtlIHRoaXM6CisKK2BgYAorZm9yICg7OykKK3sKKwkvKiBIYW5kbGUgYW55IG90 aGVyIGludGVycnVwdHMgcmVjZWl2ZWQgd2hpbGUgd2UncmUgd2FpdGluZyAqLworCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CisKKwlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9X QUtFVVApOworCWlmICh3b3JrIHRvIGRvKQorCXsKKwkJLyogaW4gcGFydGljdWxhciwgZXhp dCB0aGUgbG9vcCBpZiBzb21lIGNvbmRpdGlvbiBzYXRpc2ZpZWQgKi8KKwkJRG8gU3R1ZmYo KTsKKwl9CisJV2FpdEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAsIC4uLik7Cit9 CitgYGAKKworSXQncyBpbXBvcnRhbnQgdG8gY2xlYXIgdGhlIGludGVycnVwdCAqYmVmb3Jl KiBjaGVja2luZyBpZiB0aGVyZSdzCit3b3JrIHRvIGRvLiBPdGhlcndpc2UsIGlmIHNvbWVv bmUgc2V0cyB0aGUgaW50ZXJydXB0IGJldHdlZW4gdGhlIGNoZWNrCithbmQgdGhlIENsZWFy SW50ZXJydXB0KCkgY2FsbCwgeW91IHdpbGwgbWlzcyBpdCBhbmQgV2FpdCB3aWxsCitpbmNv cnJlY3RseSBibG9jay4gQW5vdGhlciB2YWxpZCBjb2RpbmcgcGF0dGVybiBsb29rcyBsaWtl OgorCitgYGAKK2ZvciAoOzspCit7CisJaWYgKHdvcmsgdG8gZG8pCisJeworCQkvKiBpbiBw YXJ0aWN1bGFyLCBleGl0IHRoZSBsb29wIGlmIHNvbWUgY29uZGl0aW9uIHNhdGlzZmllZCAq LworCQlEbyBTdHVmZigpOworCX0KKwlXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dB S0VVUCwgLi4uKTsKKwlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwor fQorYGBgCisKK1RoaXMgaXMgdXNlZnVsIHRvIHJlZHVjZSBpbnRlcnJ1cHQgdHJhZmZpYyBp ZiBpdCdzIGV4cGVjdGVkIHRoYXQgdGhlCitsb29wJ3MgdGVybWluYXRpb24gY29uZGl0aW9u IHdpbGwgb2Z0ZW4gYmUgc2F0aXNmaWVkIGluIHRoZSBmaXJzdAoraXRlcmF0aW9uOyB0aGUg Y29zdCBpcyBhbiBleHRyYSBsb29wIGl0ZXJhdGlvbiBiZWZvcmUgYmxvY2tpbmcgd2hlbiBp dAoraXMgbm90LiAgV2hhdCBtdXN0IGJlIGF2b2lkZWQgaXMgcGxhY2luZyBhbnkgY2hlY2tz IGZvciBhc3luY2hyb25vdXMKK2V2ZW50cyBhZnRlciBXYWl0SW50ZXJydXB0IGFuZCBiZWZv cmUgQ2xlYXJJbnRlcnJ1cHQsIGFzIHRoYXQgY3JlYXRlcworYSByYWNlIGNvbmRpdGlvbi4K KworQ3VzdG9tIGludGVycnVwdHMgaW4gZXh0ZW5zaW9ucworLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorCitBbiBleHRlbnNpb24gY2FuIGFsbG9jYXRlIGludGVycnVwdCBi aXRzIGZvciBpdHMgb3duIHB1cnBvc2VzIGJ5CitjYWxsaW5nIFJlcXVlc3RBZGRpbkludGVy cnVwdCgpLiBOb3RlIHRoYXQgaW50ZXJydXB0cyBhcmUgYSBzb21ld2hhdAorc2NhcmNlIHJl c291cmNlLCBzbyBjb25zaWRlciB1c2luZyBJTlRFUlJVUFRfV0FJVF9XQUtFVVAgaWYgYWxs IHlvdQorbmVlZCBpcyBhIHNpbXBsZSB3YWtldXAgaW4gc29tZSBsb29wLgorCisKK1VuaXgg U2lnbmFscworPT09PT09PT09PT09CisKK1Bvc3RtYXN0ZXIgYW5kIG1vc3QgY2hpbGQgcHJv Y2Vzc2VzIGFsc28gcmVzcG9uZCB0byBhIGZldyBzdGFuZGFyZAorVW5peCBzaWduYWxzOgor CitTSUdIVVAgLT4gUmFpc2VzIElOVEVSUlVQVF9DT05GSUdfUkVMT0FECitTSUdJTlQgLT4g UmFpc2VzIElOVEVSUlVQVF9RVUVSWV9DQU5DRUwKK1NJR1RFUk0gLT4gUmFpc2VzIElOVEVS UlVQVF9URVJNSU5BVEUKK1NJR1FVSVQgLT4gaW1tZWRpYXRlIHNodXRkb3duLCBhYm9ydCB0 aGUgcHJvY2VzcworCitwZ19jdGwgdXNlcyB0aGVzZSBVbml4IHNpZ25hbHMgdG8gdGVsbCBw b3N0bWFzdGVyIHRvIHJlbG9hZCBjb25maWcsCitzdG9wLCBldGMuIFRoZXNlIGFyZSBhbHNv IG1lbnRpb25lZCBpbiB0aGUgdXNlciBkb2N1bWVudGF0aW9uLgorCitQb3N0bWFzdGVyIGNh bm5vdCBzZW5kIGludGVycnVwdHMgdG8gcHJvY2Vzc2VzIHdpdGhvdXQgUEdQUk9DIGVudHJp ZXMKKyhqdXN0IHN5c2xvZ2dlciBub3dhZGF5cyksIGFuZCBpdCBkb2Vzbid0IGtub3cgdGhl IFBHUFJPQyBlbnRyaWVzIG9mCitvdGhlciBjaGlsZCBwcm9jZXNzZXMgYW55d2F5LiBIZW5j ZSwgaXQgc3RpbGwgdXNlcyB0aGUgYWJvdmUgVW5peAorc2lnbmFscyBmb3IgcG9zdG1hc3Rl ciAtPiBjaGlsZCBzaWduYWxpbmcuIFRoZSBvbmx5IGV4Y2VwdGlvbiBpcyB3aGVuCitwb3N0 bWFzdGVyIG5vdGlmaWVzIGEgYmFja2VuZCB0aGF0IGEgYmd3b3JrZXIgaXQgbGF1bmNoZWQg aGFzCitleGl0ZWQuIFBvc3RtYXN0ZXIgc2VuZHMgdGhhdCBpbnRlcnJ1cHQgZGlyZWN0bHku IFRoZSBiYWNrZW5kCityZWdpc3RlcnMgZXhwbGljaXRseSBmb3IgdGhhdCBub3RpZmljYXRp b24sIGFuZCBzdXBwbGllcyB0aGUKK1Byb2NOdW1iZXIgdG8gcG9zdG1hc3RlciB3aGVuIHJl Z2lzdGVyaW5nLgorCitUaGVyZSBhcmUgYSBmZXcgbW9yZSBleGNlcHRpb25zOgorCistIEEg ZmV3IHByb2Nlc3NlcyBsaWtlIHRoZSBjaGVja3BvaW50ZXIsIGFyY2hpdmVyLCBhbmQgSU8g d29ya2VycworICBkb24ndCByZWFjdCB0byBTSUdURVJNLCBiZWNhdXNlIFVuaXggc3lzdGVt IHNodXRkb3duIHNlbmRzIGEgU0lHVEVSTQorICB0byBhbGwgcHJvY2Vzc2VzLCBhbmQgd2Ug d2FudCB0aGVtIHRvIGV4aXQgb25seSBvbmx5IGFmdGVyIGFsbCBvdGhlcgorICBwcm9jZXNz LiBJbnN0ZWFkLCB0aGUgcG9zdG1hc3RlciBzZW5kcyB0aGVtIFNJR1VTUjIgYWZ0ZXIgYWxs IHRoZQorICBvdGhlciBwcm9jZXNzZXMgaGF2ZSBleGl0ZWQuCisKKy0gQ2hpbGQgcHJvY2Vz c2VzIHVzZSBTSUdVU1IxIHRvIHJlcXVlc3QgdGhlIHBvc3RtYXN0ZXIgdG8gZG8gdmFyaW91 cworICBhY3Rpb25zIG9yIG5vdGlmeSB0aGF0IHNvbWUgZXZlbnQgaGFzIG9jY3VycmVkLiBT ZWUgcG1zaWduYWwuYyBmb3IKKyAgZGV0YWlscyBvbiB0aGF0IG1lY2hhbmlzbQorCisKK1RP RE86IE9wZW4gcXVlc3Rpb25zCis9PT09PT09PT09PT09PT09PT09PQorCitUT0RPOiBQdXQg cGVuZGluZ0ludGVycnVwdHMgaW4gUE1DaGlsZFNsb3Qgb3IgUEdQUk9DPworLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQb3N0bWFz dGVyIGNhbm5vdCBzZW5kIGludGVycnVwdHMgdG8gcHJvY2Vzc2VzIHdpdGhvdXQgUEdQUk9D IGVudHJpZXMuCitIZW5jZSwgaXQgc3RpbGwgdXNlcyBwbGFpbiBVbml4IHNpZ25hbHMuIFdv dWxkIGJlIG5pY2UgaWYgcG9zdG1hc3RlcgorY291bGQgc2VuZCBpbnRlcnJ1cHRzIGRpcmVj dGx5LiBJZiB3ZSBtb3ZlZCB0aGUgaW50ZXJydXB0IG1hc2sgdG8KK1BNQ2hpbGRTbG90LCBp dCBjb3VsZC4gSG93ZXZlciwgUEdQUk9DIHNlZW1zIGxpa2UgYSBtb3JlIG5hdHVyYWwKK2xv Y2F0aW9uIG90aGVyd2lzZS4KKworT3B0aW9uczoKKworYSkgTW92ZSBwZW5kaW5nSW50ZXJy dXB0cyB0byBQTUNoaWxkU2xvdC4gVGhhdCB3YXksIHlvdSBjYW4gc2VuZAorICAgaW50ZXJy dXB0cyBhbHNvIHRvIHByb2Nlc3NlcyB0aGF0IGRvbid0IGhhdmUgYSBQR1BST0MgZW50cnku CisKK2IpIEFkZCBhIHBlbmRpbmdJbnRlcnJ1cHRzIG1hc2sgdG8gUE1DaGlsZFNsb3QsIGJ1 dCBhbHNvIGhhdmUgaXQgaW4KKyAgIFBHUFJPQy4gIFdoZW4gcG9zdG1hc3RlciBzZW5zIGFu IGludGVycnVwdCwgaXQgY2FuIGNoZWNrIGlmIGl0IGhhcworICAgYSBQR1BST0MgZW50cnks IGFuZCBpZiBub3QsIHVzZSB0aGUgcGVuZGluZ0ludGVycnVwdHMgZmllbGQgaW4KKyAgIFBN Q2hpbGRTbG90IGluc3RlYWQuCisKK2MpIEFzc2lnbiBhIFBHUFJPQyBlbnRyeSBmb3IgZXZl cnkgY2hpbGQgcHJvY2VzcyBpbiBwb3N0bWFzdGVyCisgICBhbHJlYWR5LiAgKEV4Y2VwdCBk ZWFkLWVuZCBiYWNrZW5kcz8pLgorCitkKSBLZWVwIGl0IGFzIGl0IGlzLCBjb250aW51ZSB0 byB1c2Ugc2lnbmFscyBmb3IgcG9zdG1hc3RlciAtPiBjaGlsZAorICAgc2lnbmFsaW5nCisK KworVE9ETzogVW5pcXVlIHNlc3Npb24gaWQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor SW4gc29tZSBwbGFjZXMsIHdlIHJlYWQgdGhlIHBpZCBvZiBhIHByb2Nlc3MgKGZyb20gUEdQ Uk9DIG9yCitlbHNld2hlcmUpLCBhbmQgc2VuZCBzaWduYWwgdG8gaXQsIGFjY2VwdGluZyB0 aGF0IHRoZSBwcm9jZXNzIG1heSBoYXZlCithbHJlYWR5IGV4aXRlZC4gIElmIHdlIGRpcmVj dGx5IHJlcGxhY2UgdGhvc2UgdXNlcyBvZiAncGlkJyB3aXRoIGEKK1Byb2NOdW1iZXIsIHRo ZSBQcm9jTnVtYmVyIG1pZ2h0IGdldCByZXVzZWQgbXVjaCBmYXN0ZXIgdGhhbiB0aGUgcGlk Cit3b3VsZC4gU29sdXRpb25zOgorCithKSBJbnRyb2R1Y2UgdGhlIGNvbmNlcHQgb2YgYSB1 bmlxdWUgc2Vzc2lvbiBJRCB0aGF0IGlzIG5ldmVyIHJlY3ljbGVkCisgICAob3Igbm90IGZv ciBhIGxvbmcgdGltZSwgYW55d2F5KS4gV2hlbiByZWFkaW5nIHRoZSBQcm9jTnVtYmVyIHRv CisgICBzZW5kIGFuIGludGVycnVwdCB0bywgYWxzbyByZWFkIHRoZSBzZXNzaW9uIElELiBX aGVuIHNlbmRpbmcgdGhlCisgICBpbnRlcnJ1cHQsIGNoZWNrIHRoYXQgdGhlIHNlc3Npb24g SUQgbWF0Y2hlcy4KKworCitUT0RPOiBPdGhlcgorLS0tLS0tLS0tLS0KKworLSBDaGVjayBw ZXJmb3JtYW5jZSBvZiBDSEVDS19GT1JfSU5URVJSVVBUUygpLiBJdCdzIHZlcnkgY2hlYXAs IGJ1dAorICBpdCdzIG5ldmVydGhlbGVzcyBtb3JlIGluc3RydWN0aW9ucyB0aGFuIGl0IHVz ZWQgdG8gYmUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9pcGMvaW50ZXJydXB0LmMgYi9z cmMvYmFja2VuZC9pcGMvaW50ZXJydXB0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjA2YTk2ZmIxNDU2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tl bmQvaXBjL2ludGVycnVwdC5jCkBAIC0wLDAgKzEsNjE4IEBACisvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCisgKiBpbnRlcnJ1cHQuYworICoJICBJbnRlci1wcm9jZXNzIGludGVycnVw dHMuCisgKgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI1LCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAq CisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvaXBjL2ludGVycnVw dC5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3Rn cmVzLmgiCisKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAibWlzY2Fk bWluLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3By b2MuaCIKKyNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgorCisKKy8qIFZhcmlhYmxlcyBm b3IgdGhlIGhvbGRvZmYgbWVjaGFuaXNtICovCit1aW50MzIJCUludGVycnVwdEhvbGRvZmZD b3VudCA9IDA7Cit1aW50MzIJCUNyaXRTZWN0aW9uQ291bnQgPSAwOworCisvKgorICogQ3Vy cmVudGx5IGluc3RhbGxlZCBpbnRlcnJ1cHQgaGFuZGxlcnMKKyAqLworc3RhdGljIHBnX2lu dGVycnVwdF9oYW5kbGVyX3QgaW50ZXJydXB0X2hhbmRsZXJzWzY0XTsKKworLyogQml0bWFz ayBvZiBjdXJyZW50bHkgZW5hYmxlZCBpbnRlcnJ1cHRzICovCitJbnRlcnJ1cHRNYXNrIEVu YWJsZWRJbnRlcnJ1cHRzTWFzazsKKworLyogQSBjb21tb24gV2FpdEV2ZW50U2V0IHVzZWQg dG8gaW1wbGVtZW50IFdhaXRJbnRlcnJ1cHQoKSAqLworc3RhdGljIFdhaXRFdmVudFNldCAq SW50ZXJydXB0V2FpdFNldDsKKworLyogVGhlIHBvc2l0aW9uIG9mIHRoZSBpbnRlcnJ1cHQg aW4gSW50ZXJydXB0V2FpdFNldC4gKi8KKyNkZWZpbmUgSW50ZXJydXB0V2FpdFNldEludGVy cnVwdFBvcyAwCisjZGVmaW5lIEludGVycnVwdFdhaXRTZXRQb3N0bWFzdGVyRGVhdGhQb3Mg MQorCitzdGF0aWMgUGVuZGluZ0ludGVycnVwdHMgTG9jYWxQZW5kaW5nSW50ZXJydXB0czsK K1BlbmRpbmdJbnRlcnJ1cHRzICpNeVBlbmRpbmdJbnRlcnJ1cHRzID0gJkxvY2FsUGVuZGlu Z0ludGVycnVwdHM7CitwZ19hdG9taWNfdWludDMyICpNeVBlbmRpbmdJbnRlcnJ1cHRzRmxh Z3MgPSAmTG9jYWxQZW5kaW5nSW50ZXJydXB0cy5mbGFnczsKK2NvbnN0IHBnX2F0b21pY191 aW50MzIgWmVyb1BlbmRpbmdJbnRlcnJ1cHRzRmxhZ3M7CisKK3N0YXRpYyBpbnQJbmV4dEFk ZGluSW50ZXJydXB0Qml0ID0gQkVHSU5fQURESU5fSU5URVJSVVBUUzsKKworLyoKKyAqIElu c3RhbGwgYW4gaW50ZXJydXB0IGhhbmRsZXIgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSBn aXZlbiBpbnRlcnJ1cHQuCisgKgorICogWW91IG5lZWQgdG8gYWxzbyBlbmFibGUgdGhlIGlu dGVycnVwdCB3aXRoIEVuYWJsZUludGVycnVwdCgpLCB1bmxlc3MgeW91J3JlCisgKiByZXBs YWNpbmcgYW4gZXhpc3RpbmcgaGFuZGxlciBmdW5jdGlvbi4KKyAqLwordm9pZAorU2V0SW50 ZXJydXB0SGFuZGxlcihJbnRlcnJ1cHRNYXNrIGludGVycnVwdE1hc2ssIHBnX2ludGVycnVw dF9oYW5kbGVyX3QgaGFuZGxlcikKK3sKKwkvKgorCSAqIFhYWDogSXQncyBzb21ld2hhdCBp bmVmZmljaWVudCB0byBsb29wIHRocm91Z2ggYWxsIHRoZSBiaXRzLCBidXQgdGhpcworCSAq IGlzbid0IHBlcmZvcm1hbmNlIGNyaXRpY2FsLgorCSAqLworCWZvciAoaW50IGkgPSAwOyBp IDwgbGVuZ3Rob2YoaW50ZXJydXB0X2hhbmRsZXJzKTsgaSsrKQorCXsKKwkJaWYgKChpbnRl cnJ1cHRNYXNrICYgVUlOVDY0X0JJVChpKSkgIT0gMCkKKwkJeworCQkJLyogUmVwbGFjZSBv bGQgaGFuZGxlciAqLworCQkJaW50ZXJydXB0X2hhbmRsZXJzW2ldID0gaGFuZGxlcjsKKwkJ fQorCX0KK30KKworLyogRW5hYmxlIGFuIGludGVycnVwdCB0byBiZSBwcm9jZXNzZWQgYnkg Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSAqLwordm9pZAorRW5hYmxlSW50ZXJydXB0KEludGVy cnVwdE1hc2sgaW50ZXJydXB0TWFzaykKK3sKKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5H CisJLyogQ2hlY2sgdGhhdCB0aGUgaW50ZXJydXB0IGhhcyBhIGhhbmRsZXIgZGVmaW5lZCAq LworCWZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3Rob2YoaW50ZXJydXB0X2hhbmRsZXJzKTsg aSsrKQorCXsKKwkJaWYgKChpbnRlcnJ1cHRNYXNrICYgVUlOVDY0X0JJVChpKSkgIT0gMCkK KwkJCUFzc2VydChpbnRlcnJ1cHRfaGFuZGxlcnNbaV0gIT0gTlVMTCk7CisJfQorI2VuZGlm CisJRW5hYmxlZEludGVycnVwdHNNYXNrIHw9IGludGVycnVwdE1hc2s7CisJU2V0SW50ZXJy dXB0QXR0ZW50aW9uTWFzayhFbmFibGVkSW50ZXJydXB0c01hc2spOworfQorCisvKgorICog RGlzYWJsZSB0aGUgaGFuZGxlciBmdW5jdGlvbiBmb3IgYW4gaW50ZXJydXB0LgorICoKKyAq IFdoZW4gZGlzYWJsZWQsIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgd2lsbCBub3QgY2FsbCB0 aGUgaGFuZGxlciBmdW5jdGlvbgorICogZm9yIHRoZSBnaXZlbiBpbnRlcnJ1cHQuICBJZiB0 aGUgaW50ZXJydXB0IGlzIHJlY2VpdmVkLCBpdCB3aWxsIHJlbWFpbgorICogcGVuZGluZyB1 bnRpbCB5b3UgbWFudWFsbHkgY2hlY2sgYW5kIGNsZWFyIGl0IHdpdGggQ2xlYXJJbnRlcnJ1 cHQoKSwgb3IKKyAqIHJlLWVuYWJsZSB0aGUgaGFuZGxlciBmdW5jdGlvbi4KKyAqLwordm9p ZAorRGlzYWJsZUludGVycnVwdChJbnRlcnJ1cHRNYXNrIGludGVycnVwdE1hc2spCit7CisJ RW5hYmxlZEludGVycnVwdHNNYXNrICY9IH5pbnRlcnJ1cHRNYXNrOworI2lmbmRlZiBQR19I QVZFX0FUT01JQ19VNjRfU0lNVUxBVElPTgorCXBnX2F0b21pY193cml0ZV91NjQoJk15UGVu ZGluZ0ludGVycnVwdHMtPmF0dGVudGlvbl9tYXNrLCBFbmFibGVkSW50ZXJydXB0c01hc2sp OworI2Vsc2UKKwlwZ19hdG9taWNfd3JpdGVfdTMyKCZNeVBlbmRpbmdJbnRlcnJ1cHRzLT5h dHRlbnRpb25fbWFza19sbywgKHVpbnQzMikgRW5hYmxlZEludGVycnVwdHNNYXNrKTsKKwlw Z19hdG9taWNfd3JpdGVfdTMyKCZNeVBlbmRpbmdJbnRlcnJ1cHRzLT5hdHRlbnRpb25fbWFz a19oaSwgKHVpbnQzMikgKEVuYWJsZWRJbnRlcnJ1cHRzTWFzayA+PiAzMikpOworI2VuZGlm CisKKwkvKgorCSAqIE5vdGU6IHRoZSBBVFRFTlRJT04gZmxhZyBtaWdodCBub3cgYmUgdW5u ZWNlc3NhcmlseSBzZXQuIFdlIGRvbid0IHRyeQorCSAqIHRvIGNsZWFyIGl0IGhlcmUsIHRo ZSBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgd2lsbCB0YWtlIGNhcmUgb2YgaXQuCisJ ICovCit9CisKKy8qCisgKiBSZXNldCBJbnRlcnJ1cHRIb2xkb2ZmQ291bnQgYW5kIENyaXRT ZWN0aW9uQ291bnQgdG8gZ2l2ZW4gdmFsdWVzLiAgVXNlZAorICogd2hlbiByZWNvdmVyaW5n IGZyb20gYW4gZXJyb3IuCisgKi8KK3ZvaWQKK1Jlc2V0SW50ZXJydXB0SG9sZG9mZkNvdW50 cyh1aW50MzIgbmV3X2hvbGRvZmZfY291bnQsIHVpbnQzMiBuZXdfY3JpdF9zZWN0aW9uX2Nv dW50KQoreworCUludGVycnVwdEhvbGRvZmZDb3VudCA9IG5ld19ob2xkb2ZmX2NvdW50Owor CUNyaXRTZWN0aW9uQ291bnQgPSBuZXdfY3JpdF9zZWN0aW9uX2NvdW50OworCWlmIChJbnRl cnJ1cHRIb2xkb2ZmQ291bnQgPT0gMCAmJiBDcml0U2VjdGlvbkNvdW50ID09IDApCisJCU15 UGVuZGluZ0ludGVycnVwdHNGbGFncyA9ICZNeVBlbmRpbmdJbnRlcnJ1cHRzLT5mbGFnczsK KwllbHNlCisJCU15UGVuZGluZ0ludGVycnVwdHNGbGFncyA9IHVuY29uc3RpZnkocGdfYXRv bWljX3VpbnQzMiAqLCAmWmVyb1BlbmRpbmdJbnRlcnJ1cHRzRmxhZ3MpOworfQorCisvKgor ICogUHJvY2Vzc0ludGVycnVwdHM6IG91dC1vZi1saW5lIHBvcnRpb24gb2YgQ0hFQ0tfRk9S X0lOVEVSUlVQVFMoKSBtYWNybworICoKKyAqIElmIGFuIGludGVycnVwdCBjb25kaXRpb24g aXMgcGVuZGluZywgYW5kIGl0J3Mgc2FmZSB0byBzZXJ2aWNlIGl0LCB0aGVuCisgKiBjbGVh ciB0aGUgZmxhZyBhbmQgY2FsbCB0aGUgaW50ZXJydXB0IGhhbmRsZXIuCisgKgorICogTm90 ZTogaWYgSU5URVJSVVBUU19DQU5fQkVfUFJPQ0VTU0VEKCkgaXMgdHJ1ZSwgUHJvY2Vzc0lu dGVycnVwdHMoKSBpcworICogZ3VhcmFudGVlZCB0byBjbGVhciBhbGwgdGhlIGVuYWJsZWQg aW50ZXJydXB0cyBiZWZvcmUgcmV0dXJuaW5nLiAgKFRoaXMgaXMKKyAqIG5vdCB0aGUgc2Ft ZSBhcyBndWFyYW50ZWVpbmcgdGhhdCBpdCdzIHN0aWxsIGNsZWFyIHdoZW4gd2UgcmV0dXJu OyBhbm90aGVyCisgKiBpbnRlcnJ1cHQgY291bGQgaGF2ZSBhcnJpdmVkLiAgQnV0IHdlIHBy b21pc2UgdGhhdCBhbnkgcHJlLWV4aXN0aW5nIG9uZQorICogd2lsbCBoYXZlIGJlZW4gc2Vy dmljZWQuKQorICovCit2b2lkCitQcm9jZXNzSW50ZXJydXB0cyh2b2lkKQoreworCXVpbnQ2 NAkJcGVuZGluZzsKKwlJbnRlcnJ1cHRNYXNrIGludGVycnVwdHNUb1Byb2Nlc3M7CisKKwlB c3NlcnQoSU5URVJSVVBUU19DQU5fQkVfUFJPQ0VTU0VEKCkpOworCUFzc2VydCgocGdfYXRv bWljX3JlYWRfdTMyKCZNeVBlbmRpbmdJbnRlcnJ1cHRzLT5mbGFncykgJiBQSV9GTEFHX1NM RUVQSU5HKSA9PSAwKTsKKworCS8qCisJICogQ2xlYXIgdGhlIEFUVEVOVElPTiBmbGFnIGZp cnN0LiBUaGlzIGVuc3VyZXMgdGhhdCBpZiBhbnkgaW50ZXJydXB0cyBhcmUKKwkgKiByZWNl aXZlZCB3aGlsZSB3ZSdyZSBwcm9jZXNzaW5nLCB0aGUgZmxhZyBpcyBzZXQgYWdhaW4uCisJ ICovCisJKHZvaWQpIHBnX2F0b21pY193cml0ZV91MzIoJk15UGVuZGluZ0ludGVycnVwdHMt PmZsYWdzLCAwKTsKKworCS8qCisJICogTWFrZSBzdXJlIG90aGVycyBzZWUgdGhlIGNsZWFy aW5nIG9mIHRoZSBmbGFncywgYmVmb3JlIHdlIHJlYWQgdGhlCisJICogcGVuZGluZyBpbnRl cnJ1cHRzLgorCSAqLworCXBnX21lbW9yeV9iYXJyaWVyKCk7CisKKwkvKiBDaGVjayBvbmNl IHdoYXQgaW50ZXJydXB0cyBhcmUgcGVuZGluZyAqLworI2lmbmRlZiBQR19IQVZFX0FUT01J Q19VNjRfU0lNVUxBVElPTgorCXBlbmRpbmcgPSBwZ19hdG9taWNfcmVhZF91NjQoJk15UGVu ZGluZ0ludGVycnVwdHMtPnBlbmRpbmdfbWFzayk7CisjZWxzZQorCXBlbmRpbmcgPSAodWlu dDY0KSBwZ19hdG9taWNfcmVhZF91MzIoJk15UGVuZGluZ0ludGVycnVwdHMtPnBlbmRpbmdf bWFza19sbyk7CisJcGVuZGluZyB8PSAodWludDY0KSBwZ19hdG9taWNfcmVhZF91MzIoJk15 UGVuZGluZ0ludGVycnVwdHMtPnBlbmRpbmdfbWFza19oaSkgPDwgMzI7CisjZW5kaWYKKwlp bnRlcnJ1cHRzVG9Qcm9jZXNzID0gcGVuZGluZyAmIEVuYWJsZWRJbnRlcnJ1cHRzTWFzazsK KworCWlmIChpbnRlcnJ1cHRzVG9Qcm9jZXNzICE9IDApCisJeworCQlBc3NlcnQoSW50ZXJy dXB0SG9sZG9mZkNvdW50ID09IDAgJiYgQ3JpdFNlY3Rpb25Db3VudCA9PSAwKTsKKworCQkv KiBJbnRlcnJ1cHQgaGFuZGxlcnMgYXJlIG5vdCBleHBlY3RlZCB0byBiZSByZS1lbnRyYW50 LiAqLworCQlIT0xEX0lOVEVSUlVQVFMoKTsKKworCQlmb3IgKGludCBpID0gMDsgaSA8IGxl bmd0aG9mKGludGVycnVwdF9oYW5kbGVycyk7IGkrKykKKwkJeworCQkJaWYgKChpbnRlcnJ1 cHRzVG9Qcm9jZXNzICYgVUlOVDY0X0JJVChpKSkgIT0gMCkKKwkJCXsKKwkJCQkvKgorCQkJ CSAqIENsZWFyIHRoZSBpbnRlcnJ1cHQgKmJlZm9yZSogY2FsbGluZyB0aGUgaGFuZGxlciBm dW5jdGlvbiwKKwkJCQkgKiBzbyB0aGF0IGlmIHRoZSBpbnRlcnJ1cHQgaXMgcmVjZWl2ZWQg YWdhaW4gd2hpbGUgdGhlCisJCQkJICogaGFuZGxlciBmdW5jdGlvbiBpcyBiZWluZyBleGVj dXRlZCwgd2Ugd29uJ3QgbWlzcyBpdC4KKwkJCQkgKgorCQkJCSAqIEZvciBzaW1pbGFyIHJl YXNvbnMsIHdlIGFsc28gY2xlYXIgdGhlIGZsYWdzIG9uZSBieSBvbmUKKwkJCQkgKiBldmVu IGlmIG11bHRpcGxlIGludGVycnVwdHMgYXJlIHBlbmRpbmcuICBPdGhlcndpc2UgaWYgb25l CisJCQkJICogb2YgdGhlIGludGVycnVwdCBoYW5kbGVycyBiYWlsIG91dCB3aXRoIGFuIEVS Uk9SLCB3ZSB3b3VsZAorCQkJCSAqIGhhdmUgYWxyZWFkeSBjbGVhcmVkIHRoZSBvdGhlciBi aXRzLCBhbmQgd291bGQgbWlzcworCQkJCSAqIHByb2Nlc3NpbmcgdGhlbS4KKwkJCQkgKi8K KwkJCQlDbGVhckludGVycnVwdChVSU5UNjRfQklUKGkpKTsKKworCQkJCS8qIENhbGwgdGhl IGhhbmRsZXIgZnVuY3Rpb24gKi8KKwkJCQkoKmludGVycnVwdF9oYW5kbGVyc1tpXSkgKCk7 CisJCQl9CisJCX0KKworCQlSRVNVTUVfSU5URVJSVVBUUygpOworCX0KKworCS8qCisJICog SWYgd2UgZ2V0IGhlcmUsIHdlIHByb2Nlc3NlZCBhbGwgdGhlIGludGVycnVwdHMgdGhhdCB3 ZXJlIHBlbmRpbmcgd2hlbgorCSAqIHdlIHN0YXJ0ZWQuICBJZiBhbnkgbmV3IGludGVycnVw dHMgYXJyaXZlZCB3aGlsZSB3ZSB3ZXJlIHByb2Nlc3NpbmcsCisJICogdGhleSBtdXN0J3Zl IHNldCB0aGUgQVRURU5USU9OIGZsYWcgYWdhaW4gc28gd2UnbGwgZ2V0IGJhY2sgaGVyZSBv biB0aGUKKwkgKiBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkuCisJICovCit9CisKKy8q CisgKiBVcGRhdGUgTXlQZW5kaW5nSW50ZXJydXB0cy0+YXR0ZW50aW9uX21hc2ssIHNldHRp bmcgUElfRkxBR19BVFRFTlRJT04gaWYKKyAqIGFueSBvZiB0aGUgaW50ZXJydXB0cyBpbiB0 aGUgbmV3IG1hc2sgYXJlIGFscmVhZHkgcGVuZGluZy4gIFRoaXMgc2hvdWxkIGJlCisgKiBj YWxsZWQgZXZlcnkgdGltZSBhZnRlciBlbmFibGluZyBuZXcgYml0cyBpbiBFbmFibGVkSW50 ZXJydXB0c01hc2ssIHNvIHRoYXQKKyAqIHRoZSBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRT KCkgd2lsbCByZWFjdCBjb3JyZWN0bHkgdG8gdGhlIG5ld2x5IGVuYWJsZWQKKyAqIGludGVy cnVwdHMuCisgKi8KK3ZvaWQKK1NldEludGVycnVwdEF0dGVudGlvbk1hc2soSW50ZXJydXB0 TWFzayBtYXNrKQoreworCS8qCisJICogVGhpcyBzaG91bGQgbm90IGJlIGNhbGxlZCB3aGls ZSBzbGVlcGluZy4gTm8gb3RoZXIgcHJvY2VzcyBzZXRzIHRoZQorCSAqIGZsYWcsIHNvIHdo ZW4gd2UgY2xlYXIvc2V0ICdmbGFncycgYmVsb3csIHdlIGRvbid0IG5lZWQgdG8gd29ycnkg YWJvdXQKKwkgKiBvdmVyd3JpdGluZyBpdC4KKwkgKi8KKwlBc3NlcnQoKHBnX2F0b21pY19y ZWFkX3UzMigmTXlQZW5kaW5nSW50ZXJydXB0cy0+ZmxhZ3MpICYgUElfRkxBR19TTEVFUElO RykgPT0gMCk7CisKKyNpZm5kZWYgUEdfSEFWRV9BVE9NSUNfVTY0X1NJTVVMQVRJT04KKwlw Z19hdG9taWNfd3JpdGVfdTY0KCZNeVBlbmRpbmdJbnRlcnJ1cHRzLT5hdHRlbnRpb25fbWFz aywgbWFzayk7CisjZWxzZQorCXBnX2F0b21pY193cml0ZV91MzIoJk15UGVuZGluZ0ludGVy cnVwdHMtPmF0dGVudGlvbl9tYXNrX2xvLCAodWludDMyKSBtYXNrKTsKKwlwZ19hdG9taWNf d3JpdGVfdTMyKCZNeVBlbmRpbmdJbnRlcnJ1cHRzLT5hdHRlbnRpb25fbWFza19oaSwgKHVp bnQzMikgKG1hc2sgPj4gMzIpKTsKKyNlbmRpZgorCisJLyoKKwkgKiBNYWtlIHN1cmUgb3Ro ZXIgcHJvY2Vzc2VzIHNlZSB0aGUgdXBkYXRlZCBhdHRlbnRpb25fbWFzayBiZWZvcmUgd2Ug cmVhZAorCSAqIHRoZSBpbnRlcnJ1cHRzIHRoYXQgYXJlIGN1cnJlbnRseSBwZW5kaW5nLgor CSAqCisJICogWFhYOiBJdCBtaWdodCBiZSBjaGVhcGVyIHRvIHVzZSBwZ19hdG9taWNfd3Jp dGVfbWVtYmFycmllcl91NjQgdmFyaWFudAorCSAqIGFib3ZlLCBwYWlyZWQgd2l0aCBwZ19h dG9taWNfcmVhZF9tZW1iYXJyaWVyX3U2NCgpIGhlcmUgdG8gcmVhZCB0aGUKKwkgKiBwZW5k aW5nIGludGVycnVwdHMgaW5zdGVhZCBvZiB0aGUgYmFycmllci1sZXNzIEludGVycnVwdFBl bmRpbmcoKS4KKwkgKi8KKwlwZ19tZW1vcnlfYmFycmllcigpOworCisJaWYgKEludGVycnVw dFBlbmRpbmcobWFzaykpCisJCXBnX2F0b21pY193cml0ZV91MzIoJk15UGVuZGluZ0ludGVy cnVwdHMtPmZsYWdzLCBQSV9GTEFHX0FUVEVOVElPTik7Cit9CisKKworLyoKKyAqIE1ha2Ug J25ld19wdHInIHRoZSBhY3RpdmUgaW50ZXJydXB0IHZlY3RvciwgdHJhbnNmZXJpbmcgYWxs IHRoZSBwZW5kaW5nCisgKiBpbnRlcnJ1cHQgYml0cyBmcm9tIHRoZSBvbGQgTXlQZW5kaW5n SW50ZXJydXB0cyB2ZWN0b3IgdG8gdGhlIG5ldyBvbmUuCisgKi8KK3N0YXRpYyB2b2lkCitT d2l0Y2hNeVBlbmRpbmdJbnRlcnJ1cHRzUHRyKFBlbmRpbmdJbnRlcnJ1cHRzICpuZXdfcHRy KQoreworCVBlbmRpbmdJbnRlcnJ1cHRzICpvbGRfcHRyID0gTXlQZW5kaW5nSW50ZXJydXB0 czsKKworCS8qIHNob3VsZCBub3QgYmUgY2FsbGVkIHdoaWxlIHNsZWVwaW5nICovCisJQXNz ZXJ0KChwZ19hdG9taWNfcmVhZF91MzIoJk15UGVuZGluZ0ludGVycnVwdHMtPmZsYWdzKSAm IFBJX0ZMQUdfU0xFRVBJTkcpID09IDApOworCisJaWYgKG5ld19wdHIgPT0gb2xkX3B0cikK KwkJcmV0dXJuOworCisJTXlQZW5kaW5nSW50ZXJydXB0cyA9IG5ld19wdHI7CisJaWYgKE15 UGVuZGluZ0ludGVycnVwdHNGbGFncyA9PSAmb2xkX3B0ci0+ZmxhZ3MpCisJCU15UGVuZGlu Z0ludGVycnVwdHNGbGFncyA9ICZuZXdfcHRyLT5mbGFnczsKKworCS8qCisJICogTWFrZSBz dXJlIHRoYXQgU0lHQUxSTSBoYW5kbGVycyB0aGF0IGNhbGwgUmFpc2VJbnRlcnJ1cHQoKSBh cmUgbm93CisJICogc2VlaW5nIHRoZSBuZXcgTXlQZW5kaW5nSW50ZXJydXB0cyBkZXN0aW5h dGlvbi4KKwkgKi8KKwlwZ19tZW1vcnlfYmFycmllcigpOworCisJLyoKKwkgKiBNaXggaW4g dGhlIGludGVycnVwdHMgdGhhdCB3ZSBoYXZlIHJlY2VpdmVkIGFscmVhZHkgaW4gJ25ld19w dHInLCB3aGlsZQorCSAqIGF0b21pY2FsbHkgY2xlYXJpbmcgdGhlbSBmcm9tICdvbGRfcHRy Jy4gIE90aGVyIGJhY2tlbmRzIG1heSBjb250aW51ZQorCSAqIHRvIHNldCBiaXRzIGluICdv bGRfcHRyJyBhZnRlciB0aGlzIHBvaW50LCBidXQgd2UndmUgYXRvbWljYWxseQorCSAqIHRy YW5zZmVycmVkIHRoZSBleGlzdGluZyBiaXRzIHRvIG91ciBsb2NhbCB2ZWN0b3Igc28gd2Ug d29uJ3QgZ2V0CisJICogZHVwbGljYXRlZCBpbnRlcnJ1cHRzIGxhdGVyIGlmIHdlIHN3aXRj aCBiYWNrLgorCSAqLworI2lmbmRlZiBQR19IQVZFX0FUT01JQ19VNjRfU0lNVUxBVElPTgor CXsKKwkJdWludDY0CQlvbGRfcGVuZGluZzsKKworCQlvbGRfcGVuZGluZyA9IHBnX2F0b21p Y19leGNoYW5nZV91NjQoJm9sZF9wdHItPnBlbmRpbmdfbWFzaywgMCk7CisJCXBnX2F0b21p Y19mZXRjaF9vcl91NjQoJm5ld19wdHItPnBlbmRpbmdfbWFzaywgb2xkX3BlbmRpbmcpOwor CX0KKyNlbHNlCisJeworCQl1aW50MzIJCW9sZF9wZW5kaW5nX2xvOworCQl1aW50MzIJCW9s ZF9wZW5kaW5nX2hpOworCisJCW9sZF9wZW5kaW5nX2xvID0gcGdfYXRvbWljX2V4Y2hhbmdl X3UzMigmb2xkX3B0ci0+cGVuZGluZ19tYXNrX2xvLCAwKTsKKwkJb2xkX3BlbmRpbmdfaGkg PSBwZ19hdG9taWNfZXhjaGFuZ2VfdTMyKCZvbGRfcHRyLT5wZW5kaW5nX21hc2tfaGksIDAp OworCQlwZ19hdG9taWNfZmV0Y2hfb3JfdTMyKCZuZXdfcHRyLT5wZW5kaW5nX21hc2tfbG8s IG9sZF9wZW5kaW5nX2xvKTsKKwkJcGdfYXRvbWljX2ZldGNoX29yX3UzMigmbmV3X3B0ci0+ cGVuZGluZ19tYXNrX2hpLCBvbGRfcGVuZGluZ19oaSk7CisJfQorI2VuZGlmCisKKwlTZXRJ bnRlcnJ1cHRBdHRlbnRpb25NYXNrKEVuYWJsZWRJbnRlcnJ1cHRzTWFzayk7Cit9CisKKy8q CisgKiBTd2l0Y2ggdG8gbG9jYWwgaW50ZXJydXB0cy4gIE90aGVyIGJhY2tlbmRzIGNhbid0 IHNlbmQgaW50ZXJydXB0cyB0byB0aGlzCisgKiBvbmUuICBPbmx5IFJhaXNlSW50ZXJydXB0 KCkgY2FuIHNldCB0aGVtLCBmcm9tIGluc2lkZSB0aGlzIHByb2Nlc3MuCisgKi8KK3ZvaWQK K1N3aXRjaFRvTG9jYWxJbnRlcnJ1cHRzKHZvaWQpCit7CisJU3dpdGNoTXlQZW5kaW5nSW50 ZXJydXB0c1B0cigmTG9jYWxQZW5kaW5nSW50ZXJydXB0cyk7Cit9CisKKy8qCisgKiBTd2l0 Y2ggdG8gc2hhcmVkIG1lbW9yeSBpbnRlcnJ1cHRzLiAgT3RoZXIgYmFja2VuZHMgY2FuIHNl bmQgaW50ZXJydXB0cyB0bworICogdGhpcyBvbmUgaWYgdGhleSBrbm93IGl0cyBQcm9jTnVt YmVyLCBhbmQgd2UnbGwgbm93IHNlZSBhbnkgdGhhdCB3ZSBtaXNzZWQuCisgKi8KK3ZvaWQK K1N3aXRjaFRvU2hhcmVkSW50ZXJydXB0cyh2b2lkKQoreworCVN3aXRjaE15UGVuZGluZ0lu dGVycnVwdHNQdHIoJk15UHJvYy0+cGVuZGluZ0ludGVycnVwdHMpOworfQorCitzdGF0aWMg Ym9vbAorU2VuZE9yUmFpc2VJbnRlcnJ1cHQoUGVuZGluZ0ludGVycnVwdHMgKnB0ciwgSW50 ZXJydXB0TWFzayBpbnRlcnJ1cHRNYXNrKQoreworCXVpbnQ2NAkJb2xkX3BlbmRpbmc7CisJ dWludDY0CQlhdHRlbnRpb25fbWFzazsKKwl1aW50MzIJCW9sZF9mbGFnczsKKwlib29sCQl3 YWtldXAgPSBmYWxzZTsKKworCS8qCisJICogRG8gYW4gInVubG9ja2VkIiByZWFkIGZpcnN0 LCBmb3IgYSBxdWljayBleGl0IGlmIGFsbCB0aGUgYml0cyBhcmUKKwkgKiBhbHJlYWR5IHNl dC4KKwkgKi8KKyNpZm5kZWYgUEdfSEFWRV9BVE9NSUNfVTY0X1NJTVVMQVRJT04KKwlvbGRf cGVuZGluZyA9IHBnX2F0b21pY19yZWFkX3U2NCgmcHRyLT5wZW5kaW5nX21hc2spOworI2Vs c2UKKwlvbGRfcGVuZGluZyA9ICh1aW50NjQpIHBnX2F0b21pY19yZWFkX3UzMigmcHRyLT5w ZW5kaW5nX21hc2tfbG8pOworCW9sZF9wZW5kaW5nIHw9ICh1aW50NjQpIHBnX2F0b21pY19y ZWFkX3UzMigmcHRyLT5wZW5kaW5nX21hc2tfaGkpIDw8IDMyOworI2VuZGlmCisKKwlpZiAo KGludGVycnVwdE1hc2sgJiB+b2xkX3BlbmRpbmcpID09IDApCisJCXJldHVybiBmYWxzZTsJ CQkvKiBubyBuZXcgYml0cyB3ZXJlIHNldCAqLworCisJLyogT1Igb3VyIGJpdHMgdG8gdGhl IHRhcmdldCAqLworI2lmbmRlZiBQR19IQVZFX0FUT01JQ19VNjRfU0lNVUxBVElPTgorCSh2 b2lkKSBwZ19hdG9taWNfZmV0Y2hfb3JfdTY0KCZwdHItPnBlbmRpbmdfbWFzaywgaW50ZXJy dXB0TWFzayk7CisjZWxzZQorCSh2b2lkKSBwZ19hdG9taWNfZmV0Y2hfb3JfdTMyKCZwdHIt PnBlbmRpbmdfbWFza19sbywgKHVpbnQzMikgaW50ZXJydXB0TWFzayk7CisJKHZvaWQpIHBn X2F0b21pY19mZXRjaF9vcl91MzIoJnB0ci0+cGVuZGluZ19tYXNrX2hpLCAodWludDMyKSAo aW50ZXJydXB0TWFzayA+PiAzMikpOworI2VuZGlmCisKKwkvKgorCSAqIERpZCB3ZSBzZXQg YW55IGJpdHMgdGhhdCB0aGUgcmVxdWlyZXMgdGhlIHRhcmdldCBwcm9jZXNzJ3MgQVRURU5U SU9OPworCSAqLworI2lmbmRlZiBQR19IQVZFX0FUT01JQ19VNjRfU0lNVUxBVElPTgorCWF0 dGVudGlvbl9tYXNrID0gcGdfYXRvbWljX3JlYWRfdTY0KCZwdHItPmF0dGVudGlvbl9tYXNr KTsKKyNlbHNlCisJYXR0ZW50aW9uX21hc2sgPSAodWludDY0KSBwZ19hdG9taWNfcmVhZF91 MzIoJnB0ci0+YXR0ZW50aW9uX21hc2tfbG8pOworCWF0dGVudGlvbl9tYXNrIHw9ICh1aW50 NjQpIHBnX2F0b21pY19yZWFkX3UzMigmcHRyLT5hdHRlbnRpb25fbWFza19oaSkgPDwgMzI7 CisjZW5kaWYKKwlpZiAoKGF0dGVudGlvbl9tYXNrICYgaW50ZXJydXB0TWFzaykgIT0gMCkK Kwl7CisJCW9sZF9mbGFncyA9IHBnX2F0b21pY19mZXRjaF9vcl91MzIoJnB0ci0+ZmxhZ3Ms IFBJX0ZMQUdfQVRURU5USU9OKTsKKworCQkvKgorCQkgKiBGdXJ0aGVybW9yZSwgaWYgdGhl IHByb2Nlc3MgaXMgY3VycmVudGx5IHNsZWVwaW5nIG9uIHRoZXNlCisJCSAqIGludGVycnVw dHMsIHdha2UgaXQgdXAuCisJCSAqLworCQlpZiAoKG9sZF9mbGFncyAmIFBJX0ZMQUdfU0xF RVBJTkcpICE9IDApCisJCQl3YWtldXAgPSB0cnVlOworCX0KKworCXJldHVybiB3YWtldXA7 Cit9CisKKy8qCisgKiBTZXQgYW4gaW50ZXJydXB0IGZsYWcgaW4gdGhpcyBiYWNrZW5kLgor ICoKKyAqIE5vdGU6IFRoaXMgaXMgY2FsbGVkIGZyb20gc2lnbmFsIGhhbmRsZXJzLCBzbyBu ZWVkcyB0byBiZSBhc3luYy1zaWduYWwKKyAqIHNhZmUhCisgKi8KK3ZvaWQKK1JhaXNlSW50 ZXJydXB0KEludGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaykKK3sKKwlpZiAoU2VuZE9yUmFp c2VJbnRlcnJ1cHQoTXlQZW5kaW5nSW50ZXJydXB0cywgaW50ZXJydXB0TWFzaykpCisJCVdh a2V1cE15UHJvYygpOworfQorCisvKgorICogU2V0IGFuIGludGVycnVwdCBmbGFnIGluIGFu b3RoZXIgYmFja2VuZC4KKyAqCisgKiBOb3RlOiBUaGlzIGNhbiBhbHNvIGJlIGNhbGxlZCBm cm9tIHRoZSBwb3N0bWFzdGVyLCBzbyBiZSBjYXJlZnVsIHRvIG5vdAorICogdHJ1c3QgdGhl IGNvbnRlbnRzIG9mIHNoYXJlZCBtZW1vcnkuCisgKgorICogRklYTUU6IGl0J3MgZWFzeSB0 byBhY2NpZGVudGFsbHkgc3dhcCB0aGUgb3JkZXIgb2YgdGhlIGFyZ3MuICBDb3VsZCB3ZSBo YXZlCisgKiBzdHJpY3RlciB0eXBlIGNoZWNraW5nPworICovCit2b2lkCitTZW5kSW50ZXJy dXB0KEludGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaywgUHJvY051bWJlciBwZ3Byb2NubykK K3sKKwlQR1BST0MJICAgKnByb2M7CisKKwlBc3NlcnQocGdwcm9jbm8gIT0gSU5WQUxJRF9Q Uk9DX05VTUJFUik7CisJQXNzZXJ0KHBncHJvY25vID49IDApOworCUFzc2VydChwZ3Byb2Nu byA8IFByb2NHbG9iYWwtPmFsbFByb2NDb3VudCk7CisKKwlwcm9jID0gJlByb2NHbG9iYWwt PmFsbFByb2NzW3BncHJvY25vXTsKKworCS8qCisJICogSWYgdGhlIHByb2Nlc3MgaXMgY3Vy cmVudGx5IGJsb2NrZWQgd2FpdGluZyBmb3IgYW4gaW50ZXJydXB0IHRvIGFycml2ZSwKKwkg KiBhbmQgdGhlIGludGVycnVwdCB3YXNuJ3QgYWxyZWFkeSBwZW5kaW5nLCB3YWtlIGl0IHVw LgorCSAqLworCWlmIChTZW5kT3JSYWlzZUludGVycnVwdCgmcHJvYy0+cGVuZGluZ0ludGVy cnVwdHMsIGludGVycnVwdE1hc2spKQorCQlXYWtldXBPdGhlclByb2MocHJvYyk7Cit9CisK Ky8qCisgKiBMaWtlIFNlbmRJbnRlcnJ1cHQsIGJ1dCB3aXRoIGEgY3Jvc3MtY2hlY2sgdGhh dCB0aGUgcHJvY2VzcyBoYXMgdGhlIGdpdmVuCisgKiBQSUQuCisgKgorICogVGhpcyBhY3F1 aXJlcyBQcm9jQXJyYXlMb2NrIHRvIGVuc3VyZSBhdG9taWNpdHksIGkuZS4gdGhhdCB0aGUg cHJvY2VzcworICogZG9lc24ndCBnbyBhd2F5IHdoaWxlIHdlJ3JlIGFib3V0IHRvIHNlbmQg dGhlIGludGVycnVwdCwgc28gdGhpcyBjYW5ub3QgYmUKKyAqIHVzZWQgZnJvbSBwb3N0bWFz dGVyLgorICoKKyAqIE1vc3QgaW50ZXJydXB0cyBhcmUgaGFybWxlc3MgdG8gc2VuZCB0byB3 cm9uZyBwcm9jZXNzLCBidXQgd2l0aCBvdGhlcnMgbGlrZQorICogSU5URVJSVVBUX1RFUk1J TkFURSwgbm90IHNvIG11Y2guCisgKi8KK3ZvaWQKK1NlbmRJbnRlcnJ1cHRXaXRoUGlkKElu dGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaywgUHJvY051bWJlciBwZ3Byb2NubywgcGlkX3Qg cGlkKQoreworCVBHUFJPQwkgICAqcHJvYzsKKworCUFzc2VydChwZ3Byb2NubyAhPSBJTlZB TElEX1BST0NfTlVNQkVSKTsKKwlBc3NlcnQocGdwcm9jbm8gPj0gMCk7CisJQXNzZXJ0KHBn cHJvY25vIDwgUHJvY0dsb2JhbC0+YWxsUHJvY0NvdW50KTsKKworCXByb2MgPSAmUHJvY0ds b2JhbC0+YWxsUHJvY3NbcGdwcm9jbm9dOworCisJTFdMb2NrQWNxdWlyZShQcm9jQXJyYXlM b2NrLCBMV19TSEFSRUQpOworCWlmIChwcm9jLT5waWQgPT0gcGlkKQorCXsKKworCQkvKgor CQkgKiBJZiB0aGUgcHJvY2VzcyBpcyBjdXJyZW50bHkgYmxvY2tlZCB3YWl0aW5nIGZvciBh biBpbnRlcnJ1cHQgdG8KKwkJICogYXJyaXZlLCBhbmQgdGhlIGludGVycnVwdCB3YXNuJ3Qg YWxyZWFkeSBwZW5kaW5nLCB3YWtlIGl0IHVwLgorCQkgKi8KKwkJaWYgKFNlbmRPclJhaXNl SW50ZXJydXB0KCZwcm9jLT5wZW5kaW5nSW50ZXJydXB0cywgaW50ZXJydXB0TWFzaykpCisJ CQlXYWtldXBPdGhlclByb2MocHJvYyk7CisJfQorCUxXTG9ja1JlbGVhc2UoUHJvY0FycmF5 TG9jayk7Cit9CisKK3ZvaWQKK0luaXRpYWxpemVJbnRlcnJ1cHRXYWl0U2V0KHZvaWQpCit7 CisJaW50CQkJaW50ZXJydXB0X3BvcyBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CisKKwlB c3NlcnQoSW50ZXJydXB0V2FpdFNldCA9PSBOVUxMKTsKKworCS8qIFNldCB1cCB0aGUgV2Fp dEV2ZW50U2V0IHVzZWQgYnkgV2FpdEludGVycnVwdCgpLiAqLworCUludGVycnVwdFdhaXRT ZXQgPSBDcmVhdGVXYWl0RXZlbnRTZXQoTlVMTCwgMik7CisJaW50ZXJydXB0X3BvcyA9IEFk ZFdhaXRFdmVudFRvU2V0KEludGVycnVwdFdhaXRTZXQsIFdMX0lOVEVSUlVQVCwgUEdJTlZB TElEX1NPQ0tFVCwKKwkJCQkJCQkJCSAgMCwgTlVMTCk7CisJaWYgKElzVW5kZXJQb3N0bWFz dGVyKQorCQlBZGRXYWl0RXZlbnRUb1NldChJbnRlcnJ1cHRXYWl0U2V0LCBXTF9FWElUX09O X1BNX0RFQVRILAorCQkJCQkJICBQR0lOVkFMSURfU09DS0VULCAwLCBOVUxMKTsKKworCUFz c2VydChpbnRlcnJ1cHRfcG9zID09IEludGVycnVwdFdhaXRTZXRJbnRlcnJ1cHRQb3MpOwor fQorCisvKgorICogV2FpdCBmb3IgYW55IG9mIHRoZSBpbnRlcnJ1cHRzIGluIGludGVycnVw dE1hc2sgdG8gYmUgc2V0LCBvciBmb3IKKyAqIHBvc3RtYXN0ZXIgZGVhdGgsIG9yIHVudGls IHRpbWVvdXQgaXMgZXhjZWVkZWQuICd3YWtlRXZlbnRzJyBpcyBhIGJpdG1hc2sKKyAqIHRo YXQgc3BlY2lmaWVzIHdoaWNoIG9mIHRob3NlIGV2ZW50cyB0byB3YWl0IGZvci4gSWYgdGhl IGludGVycnVwdCBpcworICogYWxyZWFkeSBwZW5kaW5nIChhbmQgV0xfSU5URVJSVVBUIGlz IGdpdmVuKSwgdGhlIGZ1bmN0aW9uIHJldHVybnMKKyAqIGltbWVkaWF0ZWx5LgorICoKKyAq IFRoZSAidGltZW91dCIgaXMgZ2l2ZW4gaW4gbWlsbGlzZWNvbmRzLiBJdCBtdXN0IGJlID49 IDAgaWYgV0xfVElNRU9VVCBmbGFnCisgKiBpcyBnaXZlbi4gIEFsdGhvdWdoIGl0IGlzIGRl Y2xhcmVkIGFzICJsb25nIiwgd2UgZG9uJ3QgYWN0dWFsbHkgc3VwcG9ydAorICogdGltZW91 dHMgbG9uZ2VyIHRoYW4gSU5UX01BWCBtaWxsaXNlY29uZHMuICBOb3RlIHRoYXQgc29tZSBl eHRyYSBvdmVyaGVhZAorICogaXMgaW5jdXJyZWQgd2hlbiBXTF9USU1FT1VUIGlzIGdpdmVu LCBzbyBhdm9pZCB1c2luZyBhIHRpbWVvdXQgaWYgcG9zc2libGUuCisgKgorICogUmV0dXJu cyBiaXQgbWFzayBpbmRpY2F0aW5nIHdoaWNoIGNvbmRpdGlvbihzKSBjYXVzZWQgdGhlIHdh a2UtdXAuIE5vdGUKKyAqIHRoYXQgaWYgbXVsdGlwbGUgd2FrZS11cCBjb25kaXRpb25zIGFy ZSB0cnVlLCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdAorICogd2UgcmV0dXJuIGFsbCBv ZiB0aGVtIGluIG9uZSBjYWxsLCBidXQgd2Ugd2lsbCByZXR1cm4gYXQgbGVhc3Qgb25lLgor ICovCitpbnQKK1dhaXRJbnRlcnJ1cHQoSW50ZXJydXB0TWFzayBpbnRlcnJ1cHRNYXNrLCBp bnQgd2FrZUV2ZW50cywgbG9uZyB0aW1lb3V0LAorCQkJICB1aW50MzIgd2FpdF9ldmVudF9p bmZvKQoreworCVdhaXRFdmVudAlldmVudDsKKworCS8qIFBvc3RtYXN0ZXItbWFuYWdlZCBj YWxsZXJzIG11c3QgaGFuZGxlIHBvc3RtYXN0ZXIgZGVhdGggc29tZWhvdy4gKi8KKwlBc3Nl cnQoIUlzVW5kZXJQb3N0bWFzdGVyIHx8CisJCSAgICh3YWtlRXZlbnRzICYgV0xfRVhJVF9P Tl9QTV9ERUFUSCkgfHwKKwkJICAgKHdha2VFdmVudHMgJiBXTF9QT1NUTUFTVEVSX0RFQVRI KSk7CisKKwkvKgorCSAqIFNvbWUgY2FsbGVycyBtYXkgaGF2ZSBhbiBpbnRlcnJ1cHQgbWFz ayBkaWZmZXJlbnQgZnJvbSBsYXN0IHRpbWUsIG9yIG5vCisJICogaW50ZXJydXB0IG1hc2sg YXQgYWxsLCBvciB3YW50IHRvIGhhbmRsZSBwb3N0bWFzdGVyIGRlYXRoIGRpZmZlcmVudGx5 LgorCSAqIEl0J3MgY2hlYXAgdG8gYXNzaWduIHRob3NlLCBzbyBqdXN0IGRvIGl0IGV2ZXJ5 IHRpbWUuCisJICovCisJaWYgKCEod2FrZUV2ZW50cyAmIFdMX0lOVEVSUlVQVCkpCisJCWlu dGVycnVwdE1hc2sgPSAwOworCU1vZGlmeVdhaXRFdmVudChJbnRlcnJ1cHRXYWl0U2V0LCBJ bnRlcnJ1cHRXYWl0U2V0SW50ZXJydXB0UG9zLAorCQkJCQlXTF9JTlRFUlJVUFQsIGludGVy cnVwdE1hc2spOworCisJTW9kaWZ5V2FpdEV2ZW50KEludGVycnVwdFdhaXRTZXQsIEludGVy cnVwdFdhaXRTZXRQb3N0bWFzdGVyRGVhdGhQb3MsCisJCQkJCSh3YWtlRXZlbnRzICYgKFdM X0VYSVRfT05fUE1fREVBVEggfCBXTF9QT1NUTUFTVEVSX0RFQVRIKSksCisJCQkJCTApOwor CisJaWYgKFdhaXRFdmVudFNldFdhaXQoSW50ZXJydXB0V2FpdFNldCwKKwkJCQkJCSAod2Fr ZUV2ZW50cyAmIFdMX1RJTUVPVVQpID8gdGltZW91dCA6IC0xLAorCQkJCQkJICZldmVudCwg MSwKKwkJCQkJCSB3YWl0X2V2ZW50X2luZm8pID09IDApCisJCXJldHVybiBXTF9USU1FT1VU OworCWVsc2UKKwkJcmV0dXJuIGV2ZW50LmV2ZW50czsKK30KKworLyoKKyAqIExpa2UgV2Fp dEludGVycnVwdCwgYnV0IHdpdGggYW4gZXh0cmEgc29ja2V0IGFyZ3VtZW50IGZvciBXTF9T T0NLRVRfKgorICogY29uZGl0aW9ucy4KKyAqCisgKiBXaGVuIHdhaXRpbmcgb24gYSBzb2Nr ZXQsIEVPRiBhbmQgZXJyb3IgY29uZGl0aW9ucyBhbHdheXMgY2F1c2UgdGhlIHNvY2tldAor ICogdG8gYmUgcmVwb3J0ZWQgYXMgcmVhZGFibGUvd3JpdGFibGUvY29ubmVjdGVkLCBzbyB0 aGF0IHRoZSBjYWxsZXIgY2FuIGRlYWwKKyAqIHdpdGggdGhlIGNvbmRpdGlvbi4KKyAqCisg KiB3YWtlRXZlbnRzIG11c3QgaW5jbHVkZSBlaXRoZXIgV0xfRVhJVF9PTl9QTV9ERUFUSCBm b3IgYXV0b21hdGljIGV4aXQKKyAqIGlmIHRoZSBwb3N0bWFzdGVyIGRpZXMgb3IgV0xfUE9T VE1BU1RFUl9ERUFUSCBmb3IgYSBmbGFnIHNldCBpbiB0aGUKKyAqIHJldHVybiB2YWx1ZSBp ZiB0aGUgcG9zdG1hc3RlciBkaWVzLiAgVGhlIGxhdHRlciBpcyB1c2VmdWwgZm9yIHJhcmUg Y2FzZXMKKyAqIHdoZXJlIHNvbWUgYmVoYXZpb3Igb3RoZXIgdGhhbiBpbW1lZGlhdGUgZXhp dCBpcyBuZWVkZWQuCisgKgorICogTkI6IFRoZXNlIGRheXMgdGhpcyBpcyBqdXN0IGEgd3Jh cHBlciBhcm91bmQgdGhlIFdhaXRFdmVudFNldCBBUEkuIFdoZW4KKyAqIHVzaW5nIGFuIGlu dGVycnVwdCB2ZXJ5IGZyZXF1ZW50bHksIGNvbnNpZGVyIGNyZWF0aW5nIGEgbG9uZ2VyIGxp dmluZworICogV2FpdEV2ZW50U2V0IGluc3RlYWQ7IHRoYXQncyBtb3JlIGVmZmljaWVudC4K KyAqLworaW50CitXYWl0SW50ZXJydXB0T3JTb2NrZXQoSW50ZXJydXB0TWFzayBpbnRlcnJ1 cHRNYXNrLCBpbnQgd2FrZUV2ZW50cywgcGdzb2NrZXQgc29jaywKKwkJCQkJICBsb25nIHRp bWVvdXQsIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCit7CisJaW50CQkJcmV0OworCWludAkJ CXJjOworCVdhaXRFdmVudAlldmVudDsKKwlXYWl0RXZlbnRTZXQgKnNldCA9IENyZWF0ZVdh aXRFdmVudFNldChDdXJyZW50UmVzb3VyY2VPd25lciwgMyk7CisKKwlpZiAod2FrZUV2ZW50 cyAmIFdMX1RJTUVPVVQpCisJCUFzc2VydCh0aW1lb3V0ID49IDApOworCWVsc2UKKwkJdGlt ZW91dCA9IC0xOworCisJaWYgKHdha2VFdmVudHMgJiBXTF9JTlRFUlJVUFQpCisJCUFkZFdh aXRFdmVudFRvU2V0KHNldCwgV0xfSU5URVJSVVBULCBQR0lOVkFMSURfU09DS0VULAorCQkJ CQkJICBpbnRlcnJ1cHRNYXNrLCBOVUxMKTsKKworCS8qIFBvc3RtYXN0ZXItbWFuYWdlZCBj YWxsZXJzIG11c3QgaGFuZGxlIHBvc3RtYXN0ZXIgZGVhdGggc29tZWhvdy4gKi8KKwlBc3Nl cnQoIUlzVW5kZXJQb3N0bWFzdGVyIHx8CisJCSAgICh3YWtlRXZlbnRzICYgV0xfRVhJVF9P Tl9QTV9ERUFUSCkgfHwKKwkJICAgKHdha2VFdmVudHMgJiBXTF9QT1NUTUFTVEVSX0RFQVRI KSk7CisKKwlpZiAoKHdha2VFdmVudHMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKSAmJiBJc1Vu ZGVyUG9zdG1hc3RlcikKKwkJQWRkV2FpdEV2ZW50VG9TZXQoc2V0LCBXTF9QT1NUTUFTVEVS X0RFQVRILCBQR0lOVkFMSURfU09DS0VULAorCQkJCQkJICAwLCBOVUxMKTsKKworCWlmICgo d2FrZUV2ZW50cyAmIFdMX0VYSVRfT05fUE1fREVBVEgpICYmIElzVW5kZXJQb3N0bWFzdGVy KQorCQlBZGRXYWl0RXZlbnRUb1NldChzZXQsIFdMX0VYSVRfT05fUE1fREVBVEgsIFBHSU5W QUxJRF9TT0NLRVQsCisJCQkJCQkgIDAsIE5VTEwpOworCisJaWYgKHdha2VFdmVudHMgJiBX TF9TT0NLRVRfTUFTSykKKwl7CisJCWludAkJCWV2OworCisJCWV2ID0gd2FrZUV2ZW50cyAm IFdMX1NPQ0tFVF9NQVNLOworCQlBZGRXYWl0RXZlbnRUb1NldChzZXQsIGV2LCBzb2NrLCAw LCBOVUxMKTsKKwl9CisKKwlyYyA9IFdhaXRFdmVudFNldFdhaXQoc2V0LCB0aW1lb3V0LCAm ZXZlbnQsIDEsIHdhaXRfZXZlbnRfaW5mbyk7CisJaWYgKHJjID09IDApCisJCXJldCA9IFdM X1RJTUVPVVQ7CisJZWxzZQorCXsKKwkJcmV0ID0gZXZlbnQuZXZlbnRzICYgKFdMX0lOVEVS UlVQVCB8CisJCQkJCQkJICBXTF9QT1NUTUFTVEVSX0RFQVRIIHwKKwkJCQkJCQkgIFdMX1NP Q0tFVF9NQVNLKTsKKwl9CisKKwlGcmVlV2FpdEV2ZW50U2V0KHNldCk7CisKKwlyZXR1cm4g cmV0OworfQorCisvKgorICogVGhpcyBpcyB1c2VkIGFzIHRoZSBJTlRFUlJVUFRfVEVSTUlO QVRFIGhhbmRsZXIgaW4gc29tZSBhdXggcHJvY2Vzc2VzIHRoYXQKKyAqIHdhbnQgdG8ganVz dCBleGl0IGltbWVkaWF0ZWx5LgorICovCit2b2lkCitQcm9jZXNzQXV4UHJvY2Vzc1NodXRk b3duSW50ZXJydXB0KHZvaWQpCit7CisJcHJvY19leGl0KDApOworfQorCisvKiBSZXNlcnZl IGFuIGludGVycnVwdCBiaXQgZm9yIHVzZSBpbiBhbiBleHRlbnNpb24gKi8KK0ludGVycnVw dE1hc2sKK1JlcXVlc3RBZGRpbkludGVycnVwdCh2b2lkKQoreworCUludGVycnVwdE1hc2sg cmVzdWx0OworCisJaWYgKG5leHRBZGRpbkludGVycnVwdEJpdCA9PSBFTkRfQURESU5fSU5U RVJSVVBUUykKKwkJZWxvZyhFUlJPUiwgIm91dCBvZiBhZGRpbiBpbnRlcnJ1cHQgYml0cyIp OworCisJcmVzdWx0ID0gVUlOVDY0X0JJVChuZXh0QWRkaW5JbnRlcnJ1cHRCaXQpOworCW5l eHRBZGRpbkludGVycnVwdEJpdCsrOworCXJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9pcGMvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9pcGMvbWVzb24u YnVpbGQKaW5kZXggYWY3ZGFlMTBiNjAuLjFmNjk4YmQwYzY4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9pcGMvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvaXBjL21lc29uLmJ1 aWxkCkBAIC0xLDUgKzEsNiBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAKIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygK KyAgJ2ludGVycnVwdC5jJywKICAgJ3NpZ25hbF9oYW5kbGVycy5jJywKICkKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2lwYy9zaWduYWxfaGFuZGxlcnMuYyBiL3NyYy9iYWNrZW5kL2lw Yy9zaWduYWxfaGFuZGxlcnMuYwppbmRleCA0NGIzOWJjOWVjZi4uNTEzOWI2ZWYyZTMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2lwYy9zaWduYWxfaGFuZGxlcnMuYworKysgYi9zcmMv YmFja2VuZC9pcGMvc2lnbmFsX2hhbmRsZXJzLmMKQEAgLTMsNiArMywxNyBAQAogICogc2ln bmFsX2hhbmRsZXJzLmMKICAqCSAgU3RhbmRhcmQgc2lnbmFsIGhhbmRsZXJzLgogICoKKyAq IFRoZXNlIGp1c3QgcmFpc2UgdGhlIGNvcnJlc3BvbmRpbmcgSU5URVJSVVBUXyogZmxhZ3M6 CisgKgorICogU0lHSFVQIC0+ICByZXF1ZXN0IGNvbmZpZyByZWxvYWQKKyAqIFNJR0lOVCAt PiBxdWVyeSBjYW5jZWwKKyAqIFNJR1RFUk0gLT4gZ3JhY2VmdWwgdGVybWluYXRlIG9mIHRo ZSBwcm9jZXNzCisgKiBTSUdRVUlUIC0+IGV4aXQgaW1tZWRpYXRlbHkgKGNhdXNlcyBjcmFz aCByZXN0YXJ0KQorICoKKyAqIE1vc3QgcGxhY2VzIHNob3VsZCBub3Qgc2VuZCBzaWduYWxz IGRpcmVjdGx5IGJldHdlZW4gcHJvY2Vzc2VzIGFueW1vcmUuCisgKiBVc2UgU2VuZEludGVy cnVwdCBpbnN0ZWFkLgorICoKKyAqCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYt MjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKICAqIFBvcnRpb25z IENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxp Zm9ybmlhCiAgKgpAQCAtMTgsNTEgKzI5LDg3IEBACiAKICNpbmNsdWRlICJpcGMvaW50ZXJy dXB0LmgiCiAjaW5jbHVkZSAiaXBjL3NpZ25hbF9oYW5kbGVycy5oIgotI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgotI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3RvcmFn ZS9sYXRjaC5oIgotI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgotI2luY2x1ZGUg InV0aWxzL2d1Yy5oIgotI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCi0KLXZvbGF0aWxl IHNpZ19hdG9taWNfdCBDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7Ci12b2xhdGlsZSBz aWdfYXRvbWljX3QgU2h1dGRvd25SZXF1ZXN0UGVuZGluZyA9IGZhbHNlOworI2luY2x1ZGUg ImxpYnBxL3Bxc2lnbmFsLmgiCiAKIC8qCi0gKiBTaW1wbGUgaW50ZXJydXB0IGhhbmRsZXIg Zm9yIG1haW4gbG9vcHMgb2YgYmFja2dyb3VuZCBwcm9jZXNzZXMuCisgKiBTZXQgdGhlIHN0 YW5kYXJkIHNpZ25hbCBoYW5kbGVycyBzdWl0YWJsZSBmb3IgbW9zdCBwb3N0bWFzdGVyIGNo aWxkCisgKiBwcm9jZXNzZXMuCisgKgorICogTm90ZTogdGhpcyBkb2Vzbid0IHVuYmxvY2sg dGhlIHNpZ25hbHMgeWV0LiBZb3UgY2FuIG1ha2UgYWRkaXRpb25hbAorICogcHFzaWduYWwo KSBjYWxscyB0byBtb2RpZnkgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYmVmb3JlIHVuYmxvY2tp bmcuCiAgKi8KIHZvaWQKLVByb2Nlc3NNYWluTG9vcEludGVycnVwdHModm9pZCkKK1NldFBv c3RtYXN0ZXJDaGlsZFNpZ25hbEhhbmRsZXJzKHZvaWQpCiB7Ci0JaWYgKFByb2NTaWduYWxC YXJyaWVyUGVuZGluZykKLQkJUHJvY2Vzc1Byb2NTaWduYWxCYXJyaWVyKCk7CisJLyotLS0t LS0tLS0tCisJICogVGhlc2UgcmFpc2UgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJydXB0cyBp biB0aGUgcHJvY2VzczoKKwkgKgorCSAqIFNJR0hVUCAtPiBJTlRFUlJVUFRfQ09ORklHX1JF TE9BRAorCSAqIFNJR0lOVCAtPiBJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMCisJICogU0lHVEVS TSAtPiBJTlRFUlJVUFRfVEVSTUlOQVRFCisJICoKKwkgKiBUaGUgcHJvY2VzcyBtYXkgaWdu b3JlIHRoZSBpbnRlcnJ1cHRzIHRoYXQgdGhlc2UgcmFpc2UsIGUuZyBpZiBxdWVyeQorCSAq IGNhbmNlbGxhdGlvbiBpcyBub3QgYXBwbGljYWJsZS4gIEJ1dCB0aGVyZSdzIG5vIGhhcm0g aW4gaGF2aW5nIHRoZQorCSAqIHNpZ25hbCBoYW5kbGVycyBpbiBwbGFjZSBhbnl3YXkuCisJ ICovCisJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsK KwlwcXNpZ25hbChTSUdJTlQsIFNpZ25hbEhhbmRsZXJGb3JRdWVyeUNhbmNlbCk7CisJcHFz aWduYWwoU0lHVEVSTSwgU2lnbmFsSGFuZGxlckZvclNodXRkb3duUmVxdWVzdCk7CisKKwlw cXNpZ25hbChTSUdQSVBFLCBQR19TSUdfSUdOKTsKKwlwcXNpZ25hbChTSUdVU1IxLCBQR19T SUdfSUdOKTsKKworCS8qCisJICogU0lHVVNSMiBpcyBzZW50IGJ5IHBvc3RtYXN0ZXIgdG8g c29tZSBhdXggcHJvY2Vzc2VzLCBmb3IgZGlmZmVyZW50CisJICogcHVycG9zZXMuICBTdWNo IHByb2Nlc3NlcyBvdmVycmlkZSB0aGlzIGJlZm9yZSB1bmJsb2NraW5nIHNpZ25hbHMsIGJ1 dAorCSAqIGlnbm9yZSBpdCBieSBkZWZhdWx0LgorCSAqLworCXBxc2lnbmFsKFNJR1VTUjIs IFBHX1NJR19JR04pOworCisJLyogRklYTUU6IHNob3VsZCB3ZSBkbyB0aGlzIGluIGFsbCBw cm9jZXNzZXM/ICovCisJLyogcHFzaWduYWwoU0lHRlBFLCBGbG9hdEV4Y2VwdGlvbkhhbmRs ZXIpOyAqLworCisJLyoKKwkgKiBTSUdBTFJNIGlzIHVzZWQgZm9yIHRpbWVvdXRzLCBidXQg dGhlIGhhbmRsZXIgaXMgZXN0YWJsaXNoZWQgbGF0ZXIgaW4KKwkgKiBJbml0aWFsaXplVGlt ZW91dHMoKQorCSAqLworCXBxc2lnbmFsKFNJR0FMUk0sIFBHX1NJR19JR04pOwogCi0JaWYg KENvbmZpZ1JlbG9hZFBlbmRpbmcpCi0JewotCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFs c2U7Ci0JCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOwotCX0KKwkvKiBTSUdVUkcg aXMgaGFuZGxlZCBpbiB3YWl0ZXZlbnRzZXQuYyAqLworCisJLyoKKwkgKiBSZXNldCBzaWdu YWxzIHRoYXQgYXJlIHVzZWQgYnkgcG9zdG1hc3RlciBidXQgbm90IGJ5IGNoaWxkIHByb2Nl c3Nlcy4KKwkgKgorCSAqIEN1cnJlbnRseSBqdXN0IFNJR0NITEQuICBUaGUgaGFuZGxlcnMg Zm9yIG90aGVyIHNpZ25hbHMgYXJlIG92ZXJyaWRkZW4KKwkgKiBsYXRlciwgZGVwZW5kaW5n IG9uIHRoZSBjaGlsZCBwcm9jZXNzIHR5cGUuCisJICovCisJcHFzaWduYWwoU0lHQ0hMRCwg UEdfU0lHX0RGTCk7CS8qIHN5c3RlbSgpIHJlcXVpcmVzIHRoaXMgdG8gYmUgU0lHX0RGTAor CQkJCQkJCQkJICogcmF0aGVyIHRoYW4gU0lHX0lHTiBvbiBzb21lIHBsYXRmb3JtcyAqLwog Ci0JaWYgKFNodXRkb3duUmVxdWVzdFBlbmRpbmcpCi0JCXByb2NfZXhpdCgwKTsKKwkvKgor CSAqIEV2ZXJ5IHBvc3RtYXN0ZXIgY2hpbGQgcHJvY2VzcyBpcyBleHBlY3RlZCB0byByZXNw b25kIHByb21wdGx5IHRvCisJICogU0lHUVVJVCBhdCBhbGwgdGltZXMuICBUaGVyZWZvcmUg d2UgY2VudHJhbGx5IHJlbW92ZSBTSUdRVUlUIGZyb20KKwkgKiBCbG9ja1NpZyBhbmQgaW5z dGFsbCBhIHN1aXRhYmxlIHNpZ25hbCBoYW5kbGVyLiAgKENsaWVudC1mYWNpbmcKKwkgKiBw cm9jZXNzZXMgbWF5IGNob29zZSB0byByZXBsYWNlIHRoaXMgZGVmYXVsdCBjaG9pY2Ugb2Yg aGFuZGxlciB3aXRoCisJICogcXVpY2tkaWUoKS4pICBBbGwgb3RoZXIgYmxvY2thYmxlIHNp Z25hbHMgcmVtYWluIGJsb2NrZWQgZm9yIG5vdy4KKwkgKi8KKwlwcXNpZ25hbChTSUdRVUlU LCBTaWduYWxIYW5kbGVyRm9yQ3Jhc2hFeGl0KTsKIAotCS8qIFBlcmZvcm0gbG9nZ2luZyBv ZiBtZW1vcnkgY29udGV4dHMgb2YgdGhpcyBwcm9jZXNzICovCi0JaWYgKExvZ01lbW9yeUNv bnRleHRQZW5kaW5nKQotCQlQcm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOwor CXNpZ2RlbHNldCgmQmxvY2tTaWcsIFNJR1FVSVQpOworCXNpZ3Byb2NtYXNrKFNJR19TRVRN QVNLLCAmQmxvY2tTaWcsIE5VTEwpOwogfQogCiAvKgogICogU2ltcGxlIHNpZ25hbCBoYW5k bGVyIGZvciB0cmlnZ2VyaW5nIGEgY29uZmlndXJhdGlvbiByZWxvYWQuCiAgKgogICogTm9y bWFsbHksIHRoaXMgaGFuZGxlciB3b3VsZCBiZSB1c2VkIGZvciBTSUdIVVAuIFRoZSBpZGVh IGlzIHRoYXQgY29kZQotICogd2hpY2ggdXNlcyBpdCB3b3VsZCBhcnJhbmdlIHRvIGNoZWNr IHRoZSBDb25maWdSZWxvYWRQZW5kaW5nIGZsYWcgYXQKLSAqIGNvbnZlbmllbnQgcGxhY2Vz IGluc2lkZSBtYWluIGxvb3BzLCBvciBlbHNlIGNhbGwgUHJvY2Vzc01haW5Mb29wSW50ZXJy dXB0cy4KKyAqIHdoaWNoIHVzZXMgaXQgd291bGQgYXJyYW5nZSB0byBjaGVjayB0aGUgSU5U RVJSVVBUX0NPTkZJR19SRUxPQUQgaW50ZXJydXB0CisgKiBhdCBjb252ZW5pZW50IHBsYWNl cyBpbnNpZGUgbWFpbiBsb29wcy4KICAqLwogdm9pZAogU2lnbmFsSGFuZGxlckZvckNvbmZp Z1JlbG9hZChTSUdOQUxfQVJHUykKIHsKLQlDb25maWdSZWxvYWRQZW5kaW5nID0gdHJ1ZTsK LQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklH X1JFTE9BRCk7CiB9CiAKIC8qCkBAIC05MSwxOSArMTM4LDIzIEBAIFNpZ25hbEhhbmRsZXJG b3JDcmFzaEV4aXQoU0lHTkFMX0FSR1MpCiB9CiAKIC8qCi0gKiBTaW1wbGUgc2lnbmFsIGhh bmRsZXIgZm9yIHRyaWdnZXJpbmcgYSBsb25nLXJ1bm5pbmcgYmFja2dyb3VuZCBwcm9jZXNz IHRvCi0gKiBzaHV0IGRvd24gYW5kIGV4aXQuCisgKiBTaW1wbGUgc2lnbmFsIGhhbmRsZXIg Zm9yIHRyaWdnZXJpbmcgYSBsb25nLXJ1bm5pbmcgcHJvY2VzcyB0byBzaHV0IGRvd24KKyAq IGFuZCBleGl0LgogICoKLSAqIFR5cGljYWxseSwgdGhpcyBoYW5kbGVyIHdvdWxkIGJlIHVz ZWQgZm9yIFNJR1RFUk0sIGJ1dCBzb21lIHByb2Nlc3NlcyB1c2UKLSAqIG90aGVyIHNpZ25h bHMuIEluIHBhcnRpY3VsYXIsIHRoZSBjaGVja3BvaW50ZXIgYW5kIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcgotICogZXhpdCBvbiBTSUdVU1IyLCBhbmQgdGhlIFdBTCB3cml0ZXIgZXhpdHMg b24gZWl0aGVyIFNJR0lOVCBvciBTSUdURVJNLgotICoKLSAqIFNodXRkb3duUmVxdWVzdFBl bmRpbmcgc2hvdWxkIGJlIGNoZWNrZWQgYXQgYSBjb252ZW5pZW50IHBsYWNlIHdpdGhpbiB0 aGUKLSAqIG1haW4gbG9vcCwgb3IgZWxzZSB0aGUgbWFpbiBsb29wIHNob3VsZCBjYWxsIFBy b2Nlc3NNYWluTG9vcEludGVycnVwdHMuCisgKiBJbiBtb3N0IHByb2Nlc3NlcywgdGhpcyBo YW5kbGVyIGlzIHVzZWQgZm9yIFNJR1RFUk0sIGJ1dCBzb21lIHByb2Nlc3NlcyB1c2UKKyAq IG90aGVyIHNpZ25hbHMuCiAgKi8KIHZvaWQKIFNpZ25hbEhhbmRsZXJGb3JTaHV0ZG93blJl cXVlc3QoU0lHTkFMX0FSR1MpCiB7Ci0JU2h1dGRvd25SZXF1ZXN0UGVuZGluZyA9IHRydWU7 Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX1RFUk1J TkFURSk7Cit9CisKKy8qCisgKiBRdWVyeS1jYW5jZWwgc2lnbmFsOiBhYm9ydCBjdXJyZW50 IHRyYW5zYWN0aW9uIGF0IHNvb25lc3QgY29udmVuaWVudCB0aW1lCisgKi8KK3ZvaWQKK1Np Z25hbEhhbmRsZXJGb3JRdWVyeUNhbmNlbChTSUdOQUxfQVJHUykKK3sKKwlSYWlzZUludGVy cnVwdChJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2xpYnBxL2F1dGguYyBiL3NyYy9iYWNrZW5kL2xpYnBxL2F1dGguYwppbmRleCBkN2Jk MzI2OWQ2OS4uMjgyODAxOTQ3MTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYnBxL2F1 dGguYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9hdXRoLmMKQEAgLTE2NzgsOCArMTY3OCw5 IEBAIGludGVycHJldF9pZGVudF9yZXNwb25zZShjb25zdCBjaGFyICppZGVudF9yZXNwb25z ZSwKICAqCW93bnMgdGhlIHRjcCBjb25uZWN0aW9uIHRvICJsb2NhbF9hZGRyIgogICoJSWYg dGhlIHVzZXJuYW1lIGlzIHN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQsIGNoZWNrIHRoZSB1c2Vy bWFwLgogICoKLSAqCVhYWDogVXNpbmcgV2FpdExhdGNoT3JTb2NrZXQoKSBhbmQgZG9pbmcg YSBDSEVDS19GT1JfSU5URVJSVVBUUygpIGlmIHRoZQotICoJbGF0Y2ggd2FzIHNldCB3b3Vs ZCBpbXByb3ZlIHRoZSByZXNwb25zaXZlbmVzcyB0byB0aW1lb3V0cy9jYW5jZWxsYXRpb25z LgorICoJWFhYOiBVc2luZyBXYWl0SW50ZXJydXB0T3JTb2NrZXQoKSBhbmQgZG9pbmcgYSBD SEVDS19GT1JfSU5URVJSVVBUUygpCisgKglpZiB0aGUgaW50ZXJydXB0IHdhcyBwZW5kaW5n IHdvdWxkIGltcHJvdmUgdGhlIHJlc3BvbnNpdmVuZXNzIHRvCisgKgl0aW1lb3V0cy9jYW5j ZWxsYXRpb25zLgogICovCiBzdGF0aWMgaW50CiBpZGVudF9pbmV0KFBvcnQgKnBvcnQpCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtZ3NzYXBpLmMgYi9zcmMv YmFja2VuZC9saWJwcS9iZS1zZWN1cmUtZ3NzYXBpLmMKaW5kZXggNTQwZWQ2MmE1Y2MuLmZk OWRkMWQzN2RkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtZ3Nz YXBpLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLWdzc2FwaS5jCkBAIC0x NSwxMyArMTUsMTIgQEAKIAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCisjaW5jbHVkZSAiaXBj L2ludGVycnVwdC5oIgogI2luY2x1ZGUgImxpYnBxL2F1dGguaCIKICNpbmNsdWRlICJsaWJw cS9iZS1nc3NhcGktY29tbW9uLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKLSNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0 L3BnX2Jzd2FwLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInV0 aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAj aW5jbHVkZSAidXRpbHMvd2FpdF9ldmVudC5oIgpAQCAtNDIzLDcgKzQyMiw3IEBAIGJlX2dz c2FwaV9yZWFkKFBvcnQgKnBvcnQsIHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKIAogLyoKICAq IFJlYWQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYnl0ZXMgb2ZmIHRoZSB3aXJlLCB3YWl0 aW5nIHVzaW5nCi0gKiBXYWl0TGF0Y2hPclNvY2tldCBpZiB3ZSB3b3VsZCBibG9jay4KKyAq IFdhaXRJbnRlcnJ1cHRPclNvY2tldCBpZiB3ZSB3b3VsZCBibG9jay4KICAqCiAgKiBSZXN1 bHRzIGFyZSByZWFkIGludG8gUHFHU1NSZWN2QnVmZmVyLgogICoKQEAgLTQ1OSw5ICs0NTgs OCBAQCByZWFkX29yX3dhaXQoUG9ydCAqcG9ydCwgc3NpemVfdCBsZW4pCiAJCSAqLwogCQlp ZiAocmV0IDw9IDApCiAJCXsKLQkJCVdhaXRMYXRjaE9yU29ja2V0KE5VTEwsCi0JCQkJCQkJ ICBXTF9TT0NLRVRfUkVBREFCTEUgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJCSAg cG9ydC0+c29jaywgMCwgV0FJVF9FVkVOVF9HU1NfT1BFTl9TRVJWRVIpOworCQkJV2FpdElu dGVycnVwdE9yU29ja2V0KDAsIFdMX1NPQ0tFVF9SRUFEQUJMRSB8IFdMX0VYSVRfT05fUE1f REVBVEgsCisJCQkJCQkJCSAgcG9ydC0+c29jaywgMCwgV0FJVF9FVkVOVF9HU1NfT1BFTl9T RVJWRVIpOwogCiAJCQkvKgogCQkJICogSWYgd2UgZ290IGJhY2sgemVybyBieXRlcywgYW5k IHRoZW4gd2FpdGVkIG9uIHRoZSBzb2NrZXQgdG8gYmUKQEAgLTQ5OCw3ICs0OTYsNyBAQCBy ZWFkX29yX3dhaXQoUG9ydCAqcG9ydCwgc3NpemVfdCBsZW4pCiAgKgogICogTm90ZSB0aGF0 IHVubGlrZSB0aGUgYmVfZ3NzYXBpX3JlYWQvYmVfZ3NzYXBpX3dyaXRlIGZ1bmN0aW9ucywg dGhpcwogICogZnVuY3Rpb24gV0lMTCBibG9jayBvbiB0aGUgc29ja2V0IHRvIGJlIHJlYWR5 IGZvciByZWFkL3dyaXRlICh1c2luZwotICogV2FpdExhdGNoT3JTb2NrZXQpIGFzIGFwcHJv cHJpYXRlIHdoaWxlIGVzdGFibGlzaGluZyB0aGUgR1NTQVBJCisgKiBXYWl0SW50ZXJydXB0 T3JTb2NrZXQpIGFzIGFwcHJvcHJpYXRlIHdoaWxlIGVzdGFibGlzaGluZyB0aGUgR1NTQVBJ CiAgKiBzZXNzaW9uLgogICovCiBzc2l6ZV90CkBAIC02ODAsOSArNjc4LDggQEAgc2VjdXJl X29wZW5fZ3NzYXBpKFBvcnQgKnBvcnQpCiAJCQkJLyogV2FpdCBhbmQgcmV0cnkgaWYgd2Ug Y291bGRuJ3Qgd3JpdGUgeWV0ICovCiAJCQkJaWYgKHJldCA8PSAwKQogCQkJCXsKLQkJCQkJ V2FpdExhdGNoT3JTb2NrZXQoTlVMTCwKLQkJCQkJCQkJCSAgV0xfU09DS0VUX1dSSVRFQUJM RSB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJCQkgIHBvcnQtPnNvY2ssIDAsIFdB SVRfRVZFTlRfR1NTX09QRU5fU0VSVkVSKTsKKwkJCQkJV2FpdEludGVycnVwdE9yU29ja2V0 KDAsIFdMX1NPQ0tFVF9XUklURUFCTEUgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJ CQkJCSAgcG9ydC0+c29jaywgMCwgV0FJVF9FVkVOVF9HU1NfT1BFTl9TRVJWRVIpOwogCQkJ CQljb250aW51ZTsKIAkJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL2Jl LXNlY3VyZS1vcGVuc3NsLmMgYi9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtb3BlbnNz bC5jCmluZGV4IDc4OTBlNmMyZGUyLi44Yjc4NzJmYzg0NSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvbGlicHEvYmUtc2VjdXJlLW9wZW5zc2wuYworKysgYi9zcmMvYmFja2VuZC9saWJw cS9iZS1zZWN1cmUtb3BlbnNzbC5jCkBAIC0yOSwxMSArMjksMTEgQEAKIAogI2luY2x1ZGUg ImNvbW1vbi9oYXNoZm4uaCIKICNpbmNsdWRlICJjb21tb24vc3RyaW5nLmgiCisjaW5jbHVk ZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCi0jaW5jbHVk ZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9mZC5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJ1dGlscy9i dWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL21l bXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvd2FpdF9ldmVudC5oIgpAQCAtOTUyLDggKzk1 Miw4IEBAIGFsb29wOgogCQkJCWVsc2UKIAkJCQkJd2FpdGZvciA9IFdMX1NPQ0tFVF9XUklU RUFCTEUgfCBXTF9FWElUX09OX1BNX0RFQVRIOwogCi0JCQkJKHZvaWQpIFdhaXRMYXRjaE9y U29ja2V0KE5VTEwsIHdhaXRmb3IsIHBvcnQtPnNvY2ssIDAsCi0JCQkJCQkJCQkJIFdBSVRf RVZFTlRfU1NMX09QRU5fU0VSVkVSKTsKKwkJCQkodm9pZCkgV2FpdEludGVycnVwdE9yU29j a2V0KDAsIHdhaXRmb3IsIHBvcnQtPnNvY2ssIDAsCisJCQkJCQkJCQkJCSBXQUlUX0VWRU5U X1NTTF9PUEVOX1NFUlZFUik7CiAJCQkJZ290byBhbG9vcDsKIAkJCWNhc2UgU1NMX0VSUk9S X1NZU0NBTEw6CiAJCQkJaWYgKHIgPCAwICYmIGVycm5vICE9IDApCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUuYyBiL3NyYy9iYWNrZW5kL2xpYnBxL2JlLXNl Y3VyZS5jCmluZGV4IDg2Y2VlYTcyZTY0Li40NTg1NDkzNmZiYyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvYmUt c2VjdXJlLmMKQEAgLTI3LDkgKzI3LDggQEAKICNpbmNsdWRlIDxuZXRpbmV0L3RjcC5oPgog I2luY2x1ZGUgPGFycGEvaW5ldC5oPgogCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgog I2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCi0jaW5j bHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNp bmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0 X2V2ZW50LmgiCkBAIC0xNzgsNiArMTc3LDkgQEAgc2VjdXJlX2Nsb3NlKFBvcnQgKnBvcnQp CiAKIC8qCiAgKglSZWFkIGRhdGEgZnJvbSBhIHNlY3VyZSBjb25uZWN0aW9uLgorICoKKyAq IEluIGJsb2NraW5nIG1vZGUsIHdpbGwgcHJvY2VzcyBhbnkgaW50ZXJydXB0cyB0aGF0IGFy cml2ZSB3aGlsZSB3ZSdyZQorICogd2FpdGluZy4KICAqLwogc3NpemVfdAogc2VjdXJlX3Jl YWQoUG9ydCAqcG9ydCwgdm9pZCAqcHRyLCBzaXplX3QgbGVuKQpAQCAtMTg1LDkgKzE4Nyw2 IEBAIHNlY3VyZV9yZWFkKFBvcnQgKnBvcnQsIHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKIAlz c2l6ZV90CQluOwogCWludAkJCXdhaXRmb3I7CiAKLQkvKiBEZWFsIHdpdGggYW55IGFscmVh ZHktcGVuZGluZyBpbnRlcnJ1cHQgY29uZGl0aW9uLiAqLwotCVByb2Nlc3NDbGllbnRSZWFk SW50ZXJydXB0KGZhbHNlKTsKLQogcmV0cnk6CiAjaWZkZWYgVVNFX1NTTAogCXdhaXRmb3Ig PSAwOwpAQCAtMjE3LDcgKzIxNiw4IEBAIHJldHJ5OgogCiAJCUFzc2VydCh3YWl0Zm9yKTsK IAotCQlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0U29ja2V0UG9z LCB3YWl0Zm9yLCBOVUxMKTsKKwkJTW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0LCBGZUJl V2FpdFNldFNvY2tldFBvcywgd2FpdGZvciwgMCk7CisJCU1vZGlmeVdhaXRFdmVudChGZUJl V2FpdFNldCwgRmVCZVdhaXRTZXRJbnRlcnJ1cHRQb3MsIFdMX0lOVEVSUlVQVCwgQ2hlY2tG b3JJbnRlcnJ1cHRzTWFzayk7CiAKIAkJV2FpdEV2ZW50U2V0V2FpdChGZUJlV2FpdFNldCwg LTEgLyogbm8gdGltZW91dCAqLyAsICZldmVudCwgMSwKIAkJCQkJCSBXQUlUX0VWRU5UX0NM SUVOVF9SRUFEKTsKQEAgLTIzMiwyMyArMjMyLDIyIEBAIHJldHJ5OgogCQkgKiBuZXcgY29u bmVjdGlvbnMgY2FuIGJlIGFjY2VwdGVkLiAgRXhpdGluZyBjbGVhcnMgdGhlIGRlY2sgZm9y IGEKIAkJICogcG9zdG1hc3RlciByZXN0YXJ0LgogCQkgKgotCQkgKiAoTm90ZSB0aGF0IHdl IG9ubHkgbWFrZSB0aGlzIGNoZWNrIHdoZW4gd2Ugd291bGQgb3RoZXJ3aXNlIHNsZWVwIG9u Ci0JCSAqIG91ciBsYXRjaC4gIFdlIG1pZ2h0IHN0aWxsIGNvbnRpbnVlIHJ1bm5pbmcgZm9y IGEgd2hpbGUgaWYgdGhlCi0JCSAqIHBvc3RtYXN0ZXIgaXMga2lsbGVkIGluIG1pZC1xdWVy eSwgb3IgZXZlbiB0aHJvdWdoIG11bHRpcGxlIHF1ZXJpZXMKLQkJICogaWYgd2UgbmV2ZXIg aGF2ZSB0byB3YWl0IGZvciByZWFkLiAgV2UgZG9uJ3Qgd2FudCB0byBidXJuIHRvbyBtYW55 Ci0JCSAqIGN5Y2xlcyBjaGVja2luZyBmb3IgdGhpcyB2ZXJ5IHJhcmUgY29uZGl0aW9uLCBh bmQgdGhpcyBzaG91bGQgY2F1c2UKLQkJICogdXMgdG8gZXhpdCBxdWlja2x5IGluIG1vc3Qg Y2FzZXMuKQorCQkgKiAoTm90ZSB0aGF0IHdlIG9ubHkgbWFrZSB0aGlzIGNoZWNrIHdoZW4g d2Ugd291bGQgb3RoZXJ3aXNlIHNsZWVwCisJCSAqIHdhaXRpbmcgZm9yIGludGVycnVwdC4g IFdlIG1pZ2h0IHN0aWxsIGNvbnRpbnVlIHJ1bm5pbmcgZm9yIGEgd2hpbGUKKwkJICogaWYg dGhlIHBvc3RtYXN0ZXIgaXMga2lsbGVkIGluIG1pZC1xdWVyeSwgb3IgZXZlbiB0aHJvdWdo IG11bHRpcGxlCisJCSAqIHF1ZXJpZXMgaWYgd2UgbmV2ZXIgaGF2ZSB0byB3YWl0IGZvciBy ZWFkLiAgV2UgZG9uJ3Qgd2FudCB0byBidXJuCisJCSAqIHRvbyBtYW55IGN5Y2xlcyBjaGVj a2luZyBmb3IgdGhpcyB2ZXJ5IHJhcmUgY29uZGl0aW9uLCBhbmQgdGhpcworCQkgKiBzaG91 bGQgY2F1c2UgdXMgdG8gZXhpdCBxdWlja2x5IGluIG1vc3QgY2FzZXMuKQogCQkgKi8KIAkJ aWYgKGV2ZW50LmV2ZW50cyAmIFdMX1BPU1RNQVNURVJfREVBVEgpCiAJCQllcmVwb3J0KEZB VEFMLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0FETUlOX1NIVVRET1dOKSwKIAkJCQkJIGVy cm1zZygidGVybWluYXRpbmcgY29ubmVjdGlvbiBkdWUgdG8gdW5leHBlY3RlZCBwb3N0bWFz dGVyIGV4aXQiKSkpOwogCi0JCS8qIEhhbmRsZSBpbnRlcnJ1cHQuICovCi0JCWlmIChldmVu dC5ldmVudHMgJiBXTF9MQVRDSF9TRVQpCisJCS8qIEhhbmRsZSBpbnRlcnJ1cHRzLiAqLwor CQlpZiAoZXZlbnQuZXZlbnRzICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNo KE15TGF0Y2gpOwotCQkJUHJvY2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQodHJ1ZSk7CisJCQlD SEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCQkvKgogCQkJICogV2UnbGwgcmV0cnkgdGhl IHJlYWQuIE1vc3QgbGlrZWx5IGl0IHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5CkBAIC0yNTks MTIgKzI1OCw2IEBAIHJldHJ5OgogCQlnb3RvIHJldHJ5OwogCX0KIAotCS8qCi0JICogUHJv Y2VzcyBpbnRlcnJ1cHRzIHRoYXQgaGFwcGVuZWQgZHVyaW5nIGEgc3VjY2Vzc2Z1bCAob3Ig bm9uLWJsb2NraW5nLAotCSAqIG9yIGhhcmQtZmFpbGVkKSByZWFkLgotCSAqLwotCVByb2Nl c3NDbGllbnRSZWFkSW50ZXJydXB0KGZhbHNlKTsKLQogCXJldHVybiBuOwogfQogCkBAIC0y ODgsNyArMjgxLDggQEAgc2VjdXJlX3Jhd19yZWFkKFBvcnQgKnBvcnQsIHZvaWQgKnB0ciwg c2l6ZV90IGxlbikKIAogCS8qCiAJICogVHJ5IHRvIHJlYWQgZnJvbSB0aGUgc29ja2V0IHdp dGhvdXQgYmxvY2tpbmcuIElmIGl0IHN1Y2NlZWRzIHdlJ3JlCi0JICogZG9uZSwgb3RoZXJ3 aXNlIHdlJ2xsIHdhaXQgZm9yIHRoZSBzb2NrZXQgdXNpbmcgdGhlIGxhdGNoIG1lY2hhbmlz bS4KKwkgKiBkb25lLCBvdGhlcndpc2Ugd2UnbGwgd2FpdCBmb3IgdGhlIHNvY2tldCB1c2lu ZyB0aGUgaW50ZXJydXB0CisJICogbWVjaGFuaXNtLgogCSAqLwogI2lmZGVmIFdJTjMyCiAJ cGd3aW4zMl9ub2Jsb2NrID0gdHJ1ZTsKQEAgLTMwNCw2ICsyOTgsOSBAQCBzZWN1cmVfcmF3 X3JlYWQoUG9ydCAqcG9ydCwgdm9pZCAqcHRyLCBzaXplX3QgbGVuKQogCiAvKgogICoJV3Jp dGUgZGF0YSB0byBhIHNlY3VyZSBjb25uZWN0aW9uLgorICoKKyAqIEluIGJsb2NraW5nIG1v ZGUsIHdpbGwgcHJvY2VzcyBhbnkgaW50ZXJydXB0cyB0aGF0IGFycml2ZSB3aGlsZSB3ZSdy ZQorICogd2FpdGluZy4KICAqLwogc3NpemVfdAogc2VjdXJlX3dyaXRlKFBvcnQgKnBvcnQs IGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKQEAgLTMxMSw5ICszMDgsNiBAQCBzZWN1 cmVfd3JpdGUoUG9ydCAqcG9ydCwgY29uc3Qgdm9pZCAqcHRyLCBzaXplX3QgbGVuKQogCXNz aXplX3QJCW47CiAJaW50CQkJd2FpdGZvcjsKIAotCS8qIERlYWwgd2l0aCBhbnkgYWxyZWFk eS1wZW5kaW5nIGludGVycnVwdCBjb25kaXRpb24uICovCi0JUHJvY2Vzc0NsaWVudFdyaXRl SW50ZXJydXB0KGZhbHNlKTsKLQogcmV0cnk6CiAJd2FpdGZvciA9IDA7CiAjaWZkZWYgVVNF X1NTTApAQCAtMzQyLDcgKzMzNiw4IEBAIHJldHJ5OgogCiAJCUFzc2VydCh3YWl0Zm9yKTsK IAotCQlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0U29ja2V0UG9z LCB3YWl0Zm9yLCBOVUxMKTsKKwkJTW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0LCBGZUJl V2FpdFNldFNvY2tldFBvcywgd2FpdGZvciwgMCk7CisJCU1vZGlmeVdhaXRFdmVudChGZUJl V2FpdFNldCwgRmVCZVdhaXRTZXRJbnRlcnJ1cHRQb3MsIFdMX0lOVEVSUlVQVCwgQ2hlY2tG b3JJbnRlcnJ1cHRzTWFzayk7CiAKIAkJV2FpdEV2ZW50U2V0V2FpdChGZUJlV2FpdFNldCwg LTEgLyogbm8gdGltZW91dCAqLyAsICZldmVudCwgMSwKIAkJCQkJCSBXQUlUX0VWRU5UX0NM SUVOVF9XUklURSk7CkBAIC0zNTMsMTEgKzM0OCwxMCBAQCByZXRyeToKIAkJCQkJKGVycmNv ZGUoRVJSQ09ERV9BRE1JTl9TSFVURE9XTiksCiAJCQkJCSBlcnJtc2coInRlcm1pbmF0aW5n IGNvbm5lY3Rpb24gZHVlIHRvIHVuZXhwZWN0ZWQgcG9zdG1hc3RlciBleGl0IikpKTsKIAot CQkvKiBIYW5kbGUgaW50ZXJydXB0LiAqLwotCQlpZiAoZXZlbnQuZXZlbnRzICYgV0xfTEFU Q0hfU0VUKQorCQkvKiBIYW5kbGUgaW50ZXJydXB0cy4gKi8KKwkJaWYgKGV2ZW50LmV2ZW50 cyAmIFdMX0lOVEVSUlVQVCkKIAkJewotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKLQkJCVBy b2Nlc3NDbGllbnRXcml0ZUludGVycnVwdCh0cnVlKTsKKwkJCUNIRUNLX0ZPUl9JTlRFUlJV UFRTKCk7CiAKIAkJCS8qCiAJCQkgKiBXZSdsbCByZXRyeSB0aGUgd3JpdGUuIE1vc3QgbGlr ZWx5IGl0IHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5CkBAIC0zNjgsMTIgKzM2Miw2IEBAIHJl dHJ5OgogCQlnb3RvIHJldHJ5OwogCX0KIAotCS8qCi0JICogUHJvY2VzcyBpbnRlcnJ1cHRz IHRoYXQgaGFwcGVuZWQgZHVyaW5nIGEgc3VjY2Vzc2Z1bCAob3Igbm9uLWJsb2NraW5nLAot CSAqIG9yIGhhcmQtZmFpbGVkKSB3cml0ZS4KLQkgKi8KLQlQcm9jZXNzQ2xpZW50V3JpdGVJ bnRlcnJ1cHQoZmFsc2UpOwotCiAJcmV0dXJuIG47CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2xpYnBxL3BxY29tbS5jIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFjb21tLmMKaW5k ZXggMzRlYzE4ODEzYjQuLmZmNGIwNGY5ZTEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9s aWJwcS9wcWNvbW0uYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9wcWNvbW0uYwpAQCAtNzgs NyArNzgsNiBAQAogI2luY2x1ZGUgInBvcnQvcGdfYnN3YXAuaCIKICNpbmNsdWRlICJwb3N0 bWFzdGVyL3Bvc3RtYXN0ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1 ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKICNp bmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogCkBAIC0xNzYsNyArMTc1LDcgQEAgcHFfaW5p dChDbGllbnRTb2NrZXQgKmNsaWVudF9zb2NrKQogewogCVBvcnQJICAgKnBvcnQ7CiAJaW50 CQkJc29ja2V0X3BvcyBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7Ci0JaW50CQkJbGF0Y2hf cG9zIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKKwlpbnQJCQlpbnRlcnJ1cHRfcG9zIFBH X1VTRURfRk9SX0FTU0VSVFNfT05MWTsKIAogCS8qIGFsbG9jYXRlIHRoZSBQb3J0IHN0cnVj dCBhbmQgY29weSB0aGUgQ2xpZW50U29ja2V0IGNvbnRlbnRzIHRvIGl0ICovCiAJcG9ydCA9 IHBhbGxvYzBfb2JqZWN0KFBvcnQpOwpAQCAtMjg4LDggKzI4Nyw4IEBAIHBxX2luaXQoQ2xp ZW50U29ja2V0ICpjbGllbnRfc29jaykKIAogCS8qCiAJICogSW4gYmFja2VuZHMgKGFzIHNv b24gYXMgZm9ya2VkKSB3ZSBvcGVyYXRlIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBpbgotCSAq IG5vbmJsb2NraW5nIG1vZGUgYW5kIHVzZSBsYXRjaGVzIHRvIGltcGxlbWVudCBibG9ja2lu ZyBzZW1hbnRpY3MgaWYKLQkgKiBuZWVkZWQuIFRoYXQgYWxsb3dzIHVzIHRvIHByb3ZpZGUg c2FmZWx5IGludGVycnVwdGlibGUgcmVhZHMgYW5kCisJICogbm9uYmxvY2tpbmcgbW9kZSBh bmQgdXNlIFdhaXRFdmVudFNldCB0byBpbXBsZW1lbnQgYmxvY2tpbmcgc2VtYW50aWNzCisJ ICogaWYgbmVlZGVkLiBUaGF0IGFsbG93cyB1cyB0byBwcm92aWRlIHNhZmVseSBpbnRlcnJ1 cHRpYmxlIHJlYWRzIGFuZAogCSAqIHdyaXRlcy4KIAkgKi8KICNpZm5kZWYgV0lOMzIKQEAg LTMwNywxOCArMzA2LDE4IEBAIHBxX2luaXQoQ2xpZW50U29ja2V0ICpjbGllbnRfc29jaykK IAogCUZlQmVXYWl0U2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0KE5VTEwsIEZlQmVXYWl0U2V0 TkV2ZW50cyk7CiAJc29ja2V0X3BvcyA9IEFkZFdhaXRFdmVudFRvU2V0KEZlQmVXYWl0U2V0 LCBXTF9TT0NLRVRfV1JJVEVBQkxFLAotCQkJCQkJCQkgICBwb3J0LT5zb2NrLCBOVUxMLCBO VUxMKTsKLQlsYXRjaF9wb3MgPSBBZGRXYWl0RXZlbnRUb1NldChGZUJlV2FpdFNldCwgV0xf TEFUQ0hfU0VULCBQR0lOVkFMSURfU09DS0VULAotCQkJCQkJCQkgIE15TGF0Y2gsIE5VTEwp OworCQkJCQkJCQkgICBwb3J0LT5zb2NrLCAwLCBOVUxMKTsKKwlpbnRlcnJ1cHRfcG9zID0g QWRkV2FpdEV2ZW50VG9TZXQoRmVCZVdhaXRTZXQsIFdMX0lOVEVSUlVQVCwgUEdJTlZBTElE X1NPQ0tFVCwKKwkJCQkJCQkJCSAgQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzaywgTlVMTCk7CiAJ QWRkV2FpdEV2ZW50VG9TZXQoRmVCZVdhaXRTZXQsIFdMX1BPU1RNQVNURVJfREVBVEgsIFBH SU5WQUxJRF9TT0NLRVQsCi0JCQkJCSAgTlVMTCwgTlVMTCk7CisJCQkJCSAgMCwgTlVMTCk7 CiAKIAkvKgogCSAqIFRoZSBldmVudCBwb3NpdGlvbnMgbWF0Y2ggdGhlIG9yZGVyIHdlIGFk ZGVkIHRoZW0sIGJ1dCBsZXQncyBzYW5pdHkKIAkgKiBjaGVjayB0aGVtIHRvIGJlIHN1cmUu CiAJICovCiAJQXNzZXJ0KHNvY2tldF9wb3MgPT0gRmVCZVdhaXRTZXRTb2NrZXRQb3MpOwot CUFzc2VydChsYXRjaF9wb3MgPT0gRmVCZVdhaXRTZXRMYXRjaFBvcyk7CisJQXNzZXJ0KGlu dGVycnVwdF9wb3MgPT0gRmVCZVdhaXRTZXRJbnRlcnJ1cHRQb3MpOwogCiAJcmV0dXJuIHBv cnQ7CiB9CkBAIC0xNDEyLDggKzE0MTEsNyBAQCBpbnRlcm5hbF9mbHVzaF9idWZmZXIoY29u c3QgY2hhciAqYnVmLCBzaXplX3QgKnN0YXJ0LCBzaXplX3QgKmVuZCkKIAkJCSAqIHRoZSBj b25uZWN0aW9uLgogCQkJICovCiAJCQkqc3RhcnQgPSAqZW5kID0gMDsKLQkJCUNsaWVudENv bm5lY3Rpb25Mb3N0ID0gMTsKLQkJCUludGVycnVwdFBlbmRpbmcgPSAxOworCQkJUmFpc2VJ bnRlcnJ1cHQoSU5URVJSVVBUX0NMSUVOVF9DT05ORUNUSU9OX0xPU1QpOwogCQkJcmV0dXJu IEVPRjsKIAkJfQogCkBAIC0yMDYzLDI1ICsyMDYxLDE0IEBAIHBxX2NoZWNrX2Nvbm5lY3Rp b24odm9pZCkKIAkgKiBJdCdzIE9LIHRvIG1vZGlmeSB0aGUgc29ja2V0IGV2ZW50IGZpbHRl ciB3aXRob3V0IHJlc3RvcmluZywgYmVjYXVzZQogCSAqIGFsbCBGZUJlV2FpdFNldCBzb2Nr ZXQgd2FpdCBzaXRlcyBkbyB0aGUgc2FtZS4KIAkgKi8KLQlNb2RpZnlXYWl0RXZlbnQoRmVC ZVdhaXRTZXQsIEZlQmVXYWl0U2V0U29ja2V0UG9zLCBXTF9TT0NLRVRfQ0xPU0VELCBOVUxM KTsKKwlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0U29ja2V0UG9z LCBXTF9TT0NLRVRfQ0xPU0VELCAwKTsKKwlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQs IEZlQmVXYWl0U2V0SW50ZXJydXB0UG9zLCBXTF9JTlRFUlJVUFQsIDApOwogCi1yZXRyeToK IAlyYyA9IFdhaXRFdmVudFNldFdhaXQoRmVCZVdhaXRTZXQsIDAsIGV2ZW50cywgbGVuZ3Ro b2YoZXZlbnRzKSwgMCk7CiAJZm9yIChpbnQgaSA9IDA7IGkgPCByYzsgKytpKQogCXsKIAkJ aWYgKGV2ZW50c1tpXS5ldmVudHMgJiBXTF9TT0NLRVRfQ0xPU0VEKQogCQkJcmV0dXJuIGZh bHNlOwotCQlpZiAoZXZlbnRzW2ldLmV2ZW50cyAmIFdMX0xBVENIX1NFVCkKLQkJewotCQkJ LyoKLQkJCSAqIEEgbGF0Y2ggZXZlbnQgbWlnaHQgYmUgcHJldmVudGluZyBvdGhlciBldmVu dHMgZnJvbSBiZWluZwotCQkJICogcmVwb3J0ZWQuICBSZXNldCBpdCBhbmQgcG9sbCBhZ2Fp bi4gIE5vIG5lZWQgdG8gcmVzdG9yZSBpdAotCQkJICogYmVjYXVzZSBubyBjb2RlIHNob3Vs ZCBleHBlY3QgbGF0Y2hlcyB0byBzdXJ2aXZlIGFjcm9zcwotCQkJICogQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKS4KLQkJCSAqLwotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKLQkJCWdvdG8g cmV0cnk7Ci0JCX0KIAl9CiAKIAlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2xpYnBxL3BxbXEuYyBiL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYwppbmRleCBjNTVi NzBlNTYzNi4uYjZiNWUwODEyM2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYnBxL3Bx bXEuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMKQEAgLTIxLDE1ICsyMSwxMiBA QAogI2luY2x1ZGUgImxpYnBxL3BxbXEuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9s YXRjaC5oIgotI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInRj b3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUg InV0aWxzL3dhaXRfZXZlbnQuaCIKIAogc3RhdGljIHNobV9tcV9oYW5kbGUgKnBxX21xX2hh bmRsZSA9IE5VTEw7CiBzdGF0aWMgYm9vbCBwcV9tcV9idXN5ID0gZmFsc2U7Ci1zdGF0aWMg cGlkX3QgcHFfbXFfcGFyYWxsZWxfbGVhZGVyX3BpZCA9IDA7CiBzdGF0aWMgUHJvY051bWJl ciBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcHJvY19udW1iZXIgPSBJTlZBTElEX1BST0NfTlVN QkVSOwogCiBzdGF0aWMgdm9pZCBwcV9jbGVhbnVwX3JlZGlyZWN0X3RvX3NobV9tcShkc21f c2VnbWVudCAqc2VnLCBEYXR1bSBhcmcpOwpAQCAtNzksMTQgKzc2LDEzIEBAIHBxX2NsZWFu dXBfcmVkaXJlY3RfdG9fc2htX21xKGRzbV9zZWdtZW50ICpzZWcsIERhdHVtIGFyZykKIH0K IAogLyoKLSAqIEFycmFuZ2UgdG8gU2VuZFByb2NTaWduYWwoKSB0byB0aGUgcGFyYWxsZWwg bGVhZGVyIGVhY2ggdGltZSB3ZSB0cmFuc21pdAorICogQXJyYW5nZSB0byBzZW5kIGFuIGlu dGVycnVwdCB0byB0aGUgcGFyYWxsZWwgbGVhZGVyIGVhY2ggdGltZSB3ZSB0cmFuc21pdAog ICogbWVzc2FnZSBkYXRhIHZpYSB0aGUgc2htX21xLgogICovCiB2b2lkCi1wcV9zZXRfcGFy YWxsZWxfbGVhZGVyKHBpZF90IHBpZCwgUHJvY051bWJlciBwcm9jTnVtYmVyKQorcHFfc2V0 X3BhcmFsbGVsX2xlYWRlcihQcm9jTnVtYmVyIHByb2NOdW1iZXIpCiB7CiAJQXNzZXJ0KFBx Q29tbU1ldGhvZHMgPT0gJlBxQ29tbU1xTWV0aG9kcyk7Ci0JcHFfbXFfcGFyYWxsZWxfbGVh ZGVyX3BpZCA9IHBpZDsKIAlwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcHJvY19udW1iZXIgPSBw cm9jTnVtYmVyOwogfQogCkBAIC0xNzIsMTcgKzE2OCwyMSBAQCBtcV9wdXRtZXNzYWdlKGNo YXIgbXNndHlwZSwgY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbikKIAkJQXNzZXJ0KHBxX21x X2hhbmRsZSAhPSBOVUxMKTsKIAkJcmVzdWx0ID0gc2htX21xX3NlbmR2KHBxX21xX2hhbmRs ZSwgaW92LCAyLCB0cnVlLCB0cnVlKTsKIAotCQlpZiAocHFfbXFfcGFyYWxsZWxfbGVhZGVy X3BpZCAhPSAwKQotCQkJU2VuZFByb2NTaWduYWwocHFfbXFfcGFyYWxsZWxfbGVhZGVyX3Bp ZCwKLQkJCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfTUVTU0FHRSwKLQkJCQkJCSAgIHBxX21x X3BhcmFsbGVsX2xlYWRlcl9wcm9jX251bWJlcik7CisJCWlmIChwcV9tcV9wYXJhbGxlbF9s ZWFkZXJfcHJvY19udW1iZXIgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKKwkJCVNlbmRJbnRl cnJ1cHQoSU5URVJSVVBUX1BBUkFMTEVMX01FU1NBR0UsCisJCQkJCQkgIHBxX21xX3BhcmFs bGVsX2xlYWRlcl9wcm9jX251bWJlcik7CiAKIAkJaWYgKHJlc3VsdCAhPSBTSE1fTVFfV09V TERfQkxPQ0spCiAJCQlicmVhazsKIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsIFdM X0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCi0JCQkJCQkgV0FJVF9FVkVO VF9NRVNTQUdFX1FVRVVFX1BVVF9NRVNTQUdFKTsKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsK KwkJLyoKKwkJICogV2FpdCBmb3IgdGhlIHNobV9tcSByZWNlaXZlciB0byBzZW5kIElOVEVS UlVQVF9XQUlUX1dBS0VVUCB0byB1cywKKwkJICogdG8gaW5kaWNhdGUgdGhhdCBpdCBoYXMg ZHJhaW5lZCB0aGUgcXVldWUKKwkJICovCisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KENoZWNr Rm9ySW50ZXJydXB0c01hc2sgfCBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsCisJCQkJCQkJIFdM X0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJCQkJIFdBSVRfRVZF TlRfTUVTU0FHRV9RVUVVRV9QVVRfTUVTU0FHRSk7CisJCUNsZWFySW50ZXJydXB0KElOVEVS UlVQVF9XQUlUX1dBS0VVUCk7CiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IDMzZDlhOGRkY2RmLi5lZDAy YjJkZGQ1ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVt LmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTI3LDE1 ICsyNywxNyBAQAogICogbGF1bmNoZXIgaGFzIHNldCB1cC4KICAqCiAgKiBJZiB0aGUgZm9y aygpIGNhbGwgZmFpbHMgaW4gdGhlIHBvc3RtYXN0ZXIsIGl0IHNldHMgYSBmbGFnIGluIHRo ZSBzaGFyZWQKLSAqIG1lbW9yeSBhcmVhLCBhbmQgc2VuZHMgYSBzaWduYWwgdG8gdGhlIGxh dW5jaGVyLiAgVGhlIGxhdW5jaGVyLCB1cG9uCi0gKiBub3RpY2luZyB0aGUgZmxhZywgY2Fu IHRyeSBzdGFydGluZyB0aGUgd29ya2VyIGFnYWluIGJ5IHJlc2VuZGluZyB0aGUKKyAqIG1l bW9yeSBhcmVhLCBzZW5kcyBhIHNpZ25hbCB0byB0aGUgbGF1bmNoZXIsIHJhaXNpbmcgdGhl CisgKiBJTlRFUlJVUFRfQVVUT1ZBQ1VVTV9XT1JLRVJfRklOSVNIRUQgaW50ZXJydXB0LiBU aGUgbGF1bmNoZXIsIHVwb24KKyAqIG5vdGljaW5nIHRoZSBpbnRlcnJ1cHQsIGNhbiB0cnkg c3RhcnRpbmcgdGhlIHdvcmtlciBhZ2FpbiBieSByZXNlbmRpbmcgdGhlCiAgKiBzaWduYWwu ICBOb3RlIHRoYXQgdGhlIGZhaWx1cmUgY2FuIG9ubHkgYmUgdHJhbnNpZW50IChmb3JrIGZh aWx1cmUgZHVlIHRvCiAgKiBoaWdoIGxvYWQsIG1lbW9yeSBwcmVzc3VyZSwgdG9vIG1hbnkg cHJvY2Vzc2VzLCBldGMpOyBtb3JlIHBlcm1hbmVudAogICogcHJvYmxlbXMsIGxpa2UgZmFp bHVyZSB0byBjb25uZWN0IHRvIGEgZGF0YWJhc2UsIGFyZSBkZXRlY3RlZCBsYXRlciBpbiB0 aGUKICAqIHdvcmtlciBhbmQgZGVhbHQgd2l0aCBqdXN0IGJ5IGhhdmluZyB0aGUgd29ya2Vy IGV4aXQgbm9ybWFsbHkuICBUaGUgbGF1bmNoZXIKICAqIHdpbGwgbGF1bmNoIGEgbmV3IHdv cmtlciBhZ2FpbiBsYXRlciwgcGVyIHNjaGVkdWxlLgogICoKLSAqIFdoZW4gdGhlIHdvcmtl ciBpcyBkb25lIHZhY3V1bWluZyBpdCBzZW5kcyBTSUdVU1IyIHRvIHRoZSBsYXVuY2hlci4g IFRoZQorICogV2hlbiB0aGUgd29ya2VyIGlzIGRvbmUgdmFjdXVtaW5nIGFuZCBleGl0cywg dGhlIHBvc3RtYXN0ZXIgc2VuZHMgU0lHVVNSMgorICogdG8gdGhlIGxhdW5jaGVyLCByYWlz aW5nIElOVEVSUlVQVF9BVVRPVkFDVVVNX1dPUktFUl9GSU5JU0hFRC4gIFRoZQogICogbGF1 bmNoZXIgdGhlbiB3YWtlcyB1cCBhbmQgaXMgYWJsZSB0byBsYXVuY2ggYW5vdGhlciB3b3Jr ZXIsIGlmIHRoZSBzY2hlZHVsZQogICogaXMgc28gdGlnaHQgdGhhdCBhIG5ldyB3b3JrZXIg aXMgbmVlZGVkIGltbWVkaWF0ZWx5LiAgQXQgdGhpcyB0aW1lIHRoZQogICogbGF1bmNoZXIg Y2FuIGFsc28gYmFsYW5jZSB0aGUgc2V0dGluZ3MgZm9yIHRoZSB2YXJpb3VzIHJlbWFpbmlu ZyB3b3JrZXJzJwpAQCAtODEsMTAgKzgzLDkgQEAKICNpbmNsdWRlICJjb21tYW5kcy92YWN1 dW0uaCIKICNpbmNsdWRlICJjb21tb24vaW50LmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgot I2luY2x1ZGUgImlwYy9zaWduYWxfaGFuZGxlcnMuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJy dXB0LmgiCiAjaW5jbHVkZSAibGliL2lsaXN0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFzaWdu YWwuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVu Y3MuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92 YWN1dW0uaCIKQEAgLTkzLDcgKzk0LDYgQEAKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5o IgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgot I2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIK ICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9j LmgiCkBAIC0xNjEsOSArMTYxLDYgQEAgaW50CQkJTG9nX2F1dG9hbmFseXplX21pbl9kdXJh dGlvbiA9IDYwMDAwMDsKIHN0YXRpYyBkb3VibGUgYXZfc3RvcmFnZV9wYXJhbV9jb3N0X2Rl bGF5ID0gLTE7CiBzdGF0aWMgaW50CWF2X3N0b3JhZ2VfcGFyYW1fY29zdF9saW1pdCA9IC0x OwogCi0vKiBGbGFncyBzZXQgYnkgc2lnbmFsIGhhbmRsZXJzICovCi1zdGF0aWMgdm9sYXRp bGUgc2lnX2F0b21pY190IGdvdF9TSUdVU1IyID0gZmFsc2U7Ci0KIC8qIENvbXBhcmlzb24g cG9pbnRzIGZvciBkZXRlcm1pbmluZyB3aGV0aGVyIGZyZWV6ZV9tYXhfYWdlIGlzIGV4Y2Vl ZGVkICovCiBzdGF0aWMgVHJhbnNhY3Rpb25JZCByZWNlbnRYaWQ7CiBzdGF0aWMgTXVsdGlY YWN0SWQgcmVjZW50TXVsdGk7CkBAIC0yOTYsNiArMjkzLDkgQEAgdHlwZWRlZiBzdHJ1Y3Qg QXV0b1ZhY3V1bVdvcmtJdGVtCiAgKgogICogVGhpcyBzdHJ1Y3QgaXMgcHJvdGVjdGVkIGJ5 IEF1dG92YWN1dW1Mb2NrLCBleGNlcHQgZm9yIGF2X3NpZ25hbCBhbmQgcGFydHMKICAqIG9m IHRoZSB3b3JrZXIgbGlzdCAoc2VlIGFib3ZlKS4KKyAqCisgKiBYWFg6IGF2X3NpZ25hbCBj b3VsZCBiZSByZXBsYWNlZCB3aXRoIGluZGl2aWR1YWwgaW50ZXJydXB0cy4gVGhpcyB3b3Jr cworICogdG9vLCB0aG91Z2guCiAgKi0tLS0tLS0tLS0tLS0KICAqLwogdHlwZWRlZiBzdHJ1 Y3QKQEAgLTM2Myw3ICszNjMsNyBAQCBhdmxfZGJhc2UgICphdmxfZGJhc2VfYXJyYXk7CiBz dGF0aWMgV29ya2VySW5mbyBNeVdvcmtlckluZm8gPSBOVUxMOwogCiBzdGF0aWMgT2lkCWRv X3N0YXJ0X3dvcmtlcih2b2lkKTsKLXN0YXRpYyB2b2lkIFByb2Nlc3NBdXRvVmFjTGF1bmNo ZXJJbnRlcnJ1cHRzKHZvaWQpOworc3RhdGljIHZvaWQgUHJvY2Vzc0F1dG9WYWNMYXVuY2hl ckNvbmZpZ1JlbG9hZEludGVycnVwdCh2b2lkKTsKIHBnX25vcmV0dXJuIHN0YXRpYyB2b2lk IEF1dG9WYWNMYXVuY2hlclNodXRkb3duKHZvaWQpOwogc3RhdGljIHZvaWQgbGF1bmNoZXJf ZGV0ZXJtaW5lX3NsZWVwKGJvb2wgY2FubGF1bmNoLCBib29sIHJlY3Vyc2luZywKIAkJCQkJ CQkJCSBzdHJ1Y3QgdGltZXZhbCAqbmFwKTsKQEAgLTQzMiwyMSArNDMyLDIzIEBAIEF1dG9W YWNMYXVuY2hlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1 cF9kYXRhX2xlbikKIAlBc3NlcnQoR2V0UHJvY2Vzc2luZ01vZGUoKSA9PSBJbml0UHJvY2Vz c2luZyk7CiAKIAkvKgotCSAqIFNldCB1cCBzaWduYWwgaGFuZGxlcnMuICBXZSBvcGVyYXRl IG9uIGRhdGFiYXNlcyBtdWNoIGxpa2UgYSByZWd1bGFyCi0JICogYmFja2VuZCwgc28gd2Ug dXNlIHRoZSBzYW1lIHNpZ25hbCBoYW5kbGluZy4gIFNlZSBlcXVpdmFsZW50IGNvZGUgaW4K LQkgKiB0Y29wL3Bvc3RncmVzLmMuCisJICogU2V0IHVwIHNpZ25hbCBhbmQgaW50ZXJydXB0 IGhhbmRsZXJzLiAgV2Ugb3BlcmF0ZSBvbiBkYXRhYmFzZXMgbXVjaAorCSAqIGxpa2UgYSBy ZWd1bGFyIGJhY2tlbmQsIHNvIHdlIHVzZSBtb3N0bHkgdGhlIHNhbWUgaGFuZGxpbmcuICBT ZWUKKwkgKiBlcXVpdmFsZW50IGNvZGUgaW4gdGNvcC9wb3N0Z3Jlcy5jLgogCSAqLwotCXBx c2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7Ci0JcHFzaWdu YWwoU0lHSU5ULCBTdGF0ZW1lbnRDYW5jZWxIYW5kbGVyKTsKLQlwcXNpZ25hbChTSUdURVJN LCBTaWduYWxIYW5kbGVyRm9yU2h1dGRvd25SZXF1ZXN0KTsKLQkvKiBTSUdRVUlUIGhhbmRs ZXIgd2FzIGFscmVhZHkgc2V0IHVwIGJ5IEluaXRQb3N0bWFzdGVyQ2hpbGQgKi8KLQorCVNl dFN0YW5kYXJkSW50ZXJydXB0SGFuZGxlcnMoKTsKIAlJbml0aWFsaXplVGltZW91dHMoKTsJ CS8qIGVzdGFibGlzaGVzIFNJR0FMUk0gaGFuZGxlciAqLwogCi0JcHFzaWduYWwoU0lHUElQ RSwgUEdfU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3Ix X2hhbmRsZXIpOworCS8qIFBvc3RtYXN0ZXIgdXNlcyBTSUdVU1IyIHRvIHJhaXNlIElOVEVS UlVQVF9BVVRPVkFDVVVNX1dPUktFUl9GSU5JU0hFRCAqLwogCXBxc2lnbmFsKFNJR1VTUjIs IGF2bF9zaWd1c3IyX2hhbmRsZXIpOwotCXBxc2lnbmFsKFNJR0ZQRSwgRmxvYXRFeGNlcHRp b25IYW5kbGVyKTsKKworCVNldEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX1FVRVJZX0NB TkNFTCwgUHJvY2Vzc1F1ZXJ5Q2FuY2VsSW50ZXJydXB0KTsKKwlFbmFibGVJbnRlcnJ1cHQo SU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7CisKKwlTZXRJbnRlcnJ1cHRIYW5kbGVyKElOVEVS UlVQVF9URVJNSU5BVEUsIEF1dG9WYWNMYXVuY2hlclNodXRkb3duKTsKKworCS8qIFdlIGNh biBzYWZlbHkgcmVsb2FkIGNvbmZpZyBhdCBhbnkgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSAq LworCVNldEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQsIFByb2Nl c3NBdXRvVmFjTGF1bmNoZXJDb25maWdSZWxvYWRJbnRlcnJ1cHQpOwogCiAJLyoKIAkgKiBD cmVhdGUgYSBwZXItYmFja2VuZCBQR1BST0Mgc3RydWN0IGluIHNoYXJlZCBtZW1vcnkuICBX ZSBtdXN0IGRvIHRoaXMKQEAgLTQ5Myw3ICs0OTUsOCBAQCBBdXRvVmFjTGF1bmNoZXJNYWlu KGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAK IAkJLyogRm9yZ2V0IGFueSBwZW5kaW5nIFF1ZXJ5Q2FuY2VsIG9yIHRpbWVvdXQgcmVxdWVz dCAqLwogCQlkaXNhYmxlX2FsbF90aW1lb3V0cyhmYWxzZSk7Ci0JCVF1ZXJ5Q2FuY2VsUGVu ZGluZyA9IGZhbHNlOyAvKiBzZWNvbmQgdG8gYXZvaWQgcmFjZSBjb25kaXRpb24gKi8KKwkJ Q2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7IC8qIHNlY29uZCB0byBh dm9pZCByYWNlCisJCQkJCQkJCQkJCQkgKiBjb25kaXRpb24gKi8KIAogCQkvKiBSZXBvcnQg dGhlIGVycm9yIHRvIHRoZSBzZXJ2ZXIgbG9nICovCiAJCUVtaXRFcnJvclJlcG9ydCgpOwpA QCAtNTM1LDcgKzUzOCw3IEBAIEF1dG9WYWNMYXVuY2hlck1haW4oY29uc3Qgdm9pZCAqc3Rh cnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJUkVTVU1FX0lOVEVSUlVQ VFMoKTsKIAogCQkvKiBpZiBpbiBzaHV0ZG93biBtb2RlLCBubyBuZWVkIGZvciBhbnl0aGlu ZyBmdXJ0aGVyOyBqdXN0IGdvIGF3YXkgKi8KLQkJaWYgKFNodXRkb3duUmVxdWVzdFBlbmRp bmcpCisJCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9URVJNSU5BVEUpKQogCQkJ QXV0b1ZhY0xhdW5jaGVyU2h1dGRvd24oKTsKIAogCQkvKgpAQCAtNTk0LDcgKzU5Nyw3IEBA IEF1dG9WYWNMYXVuY2hlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qg c3RhcnR1cF9kYXRhX2xlbikKIAkgKi8KIAlpZiAoIUF1dG9WYWN1dW1pbmdBY3RpdmUoKSkK IAl7Ci0JCWlmICghU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwkJaWYgKEludGVycnVwdFBl bmRpbmcoSU5URVJSVVBUX1RFUk1JTkFURSkpCiAJCQlkb19zdGFydF93b3JrZXIoKTsKIAkJ cHJvY19leGl0KDApOwkJCS8qIGRvbmUgKi8KIAl9CkBAIC02MDksNDEgKzYxMiwzNyBAQCBB dXRvVmFjTGF1bmNoZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0 YXJ0dXBfZGF0YV9sZW4pCiAJcmVidWlsZF9kYXRhYmFzZV9saXN0KEludmFsaWRPaWQpOwog CiAJLyogbG9vcCB1bnRpbCBzaHV0ZG93biByZXF1ZXN0ICovCi0Jd2hpbGUgKCFTaHV0ZG93 blJlcXVlc3RQZW5kaW5nKQorCXdoaWxlICghSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRf VEVSTUlOQVRFKSkKIAl7CiAJCXN0cnVjdCB0aW1ldmFsIG5hcDsKIAkJVGltZXN0YW1wVHog Y3VycmVudF90aW1lID0gMDsKIAkJYm9vbAkJY2FuX2xhdW5jaDsKIAogCQkvKgotCQkgKiBU aGlzIGxvb3AgaXMgYSBiaXQgZGlmZmVyZW50IGZyb20gdGhlIG5vcm1hbCB1c2Ugb2YgV2Fp dExhdGNoLAorCQkgKiBUaGlzIGxvb3AgaXMgYSBiaXQgZGlmZmVyZW50IGZyb20gdGhlIG5v cm1hbCB1c2Ugb2YgV2FpdEludGVycnVwdCwKIAkJICogYmVjYXVzZSB3ZSdkIGxpa2UgdG8g c2xlZXAgYmVmb3JlIHRoZSBmaXJzdCBsYXVuY2ggb2YgYSBjaGlsZAotCQkgKiBwcm9jZXNz LiAgU28gaXQncyBXYWl0TGF0Y2gsIHRoZW4gUmVzZXRMYXRjaCwgdGhlbiBjaGVjayBmb3IK LQkJICogd2FrZW5pbmcgY29uZGl0aW9ucy4KKwkJICogcHJvY2Vzcy4gIFNvIGl0J3MgV2Fp dEludGVycnVwdCwgdGhlbiBjaGVjayBmb3Igd2FrZW5pbmcKKwkJICogY29uZGl0aW9ucy4K IAkJICovCiAKIAkJbGF1bmNoZXJfZGV0ZXJtaW5lX3NsZWVwKGF2X3dvcmtlcl9hdmFpbGFi bGUoKSwgZmFsc2UsICZuYXApOwogCiAJCS8qCi0JCSAqIFdhaXQgdW50aWwgbmFwdGltZSBl eHBpcmVzIG9yIHdlIGdldCBzb21lIHR5cGUgb2Ygc2lnbmFsIChhbGwgdGhlCi0JCSAqIHNp Z25hbCBoYW5kbGVycyB3aWxsIHdha2UgdXMgYnkgY2FsbGluZyBTZXRMYXRjaCkuCisJCSAq IFdhaXQgdW50aWwgbmFwdGltZSBleHBpcmVzIG9yIHdlIGdldCBzb21lIHR5cGUgb2YgaW50 ZXJydXB0LgogCQkgKi8KLQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJIFdM X0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJ IChuYXAudHZfc2VjICogMTAwMEwpICsgKG5hcC50dl91c2VjIC8gMTAwMEwpLAotCQkJCQkJ IFdBSVRfRVZFTlRfQVVUT1ZBQ1VVTV9NQUlOKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQo Q2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkJIElOVEVSUlVQVF9BVVRPVkFDVVVN X1dPUktFUl9GSU5JU0hFRCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8 IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJIChuYXAudHZfc2VjICogMTAwMEwpICsg KG5hcC50dl91c2VjIC8gMTAwMEwpLAorCQkJCQkJCSBXQUlUX0VWRU5UX0FVVE9WQUNVVU1f TUFJTik7CiAKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKLQotCQlQcm9jZXNzQXV0b1ZhY0xh dW5jaGVySW50ZXJydXB0cygpOworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCS8q CiAJCSAqIGEgd29ya2VyIGZpbmlzaGVkLCBvciBwb3N0bWFzdGVyIHNpZ25hbGVkIGZhaWx1 cmUgdG8gc3RhcnQgYSB3b3JrZXIKIAkJICovCi0JCWlmIChnb3RfU0lHVVNSMikKKwkJaWYg KENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0FVVE9WQUNVVU1fV09SS0VSX0ZJTklTSEVE KSkKIAkJewotCQkJZ290X1NJR1VTUjIgPSBmYWxzZTsKLQogCQkJLyogcmViYWxhbmNlIGNv c3QgbGltaXRzLCBpZiBuZWVkZWQgKi8KIAkJCWlmIChBdXRvVmFjdXVtU2htZW0tPmF2X3Np Z25hbFtBdXRvVmFjUmViYWxhbmNlXSkKIAkJCXsKQEAgLTc3OSwyMSArNzc4LDE3IEBAIEF1 dG9WYWNMYXVuY2hlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3Rh cnR1cF9kYXRhX2xlbikKIAlBdXRvVmFjTGF1bmNoZXJTaHV0ZG93bigpOwogfQogCi0vKgot ICogUHJvY2VzcyBhbnkgbmV3IGludGVycnVwdHMuCi0gKi8KIHN0YXRpYyB2b2lkCi1Qcm9j ZXNzQXV0b1ZhY0xhdW5jaGVySW50ZXJydXB0cyh2b2lkKQorUHJvY2Vzc0F1dG9WYWNMYXVu Y2hlckNvbmZpZ1JlbG9hZEludGVycnVwdCh2b2lkKQogewogCS8qIHRoZSBub3JtYWwgc2h1 dGRvd24gY2FzZSAqLwotCWlmIChTaHV0ZG93blJlcXVlc3RQZW5kaW5nKQorCWlmIChJbnRl cnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9URVJNSU5BVEUpKQogCQlBdXRvVmFjTGF1bmNoZXJT aHV0ZG93bigpOwogCi0JaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCisJaWYgKENvbnN1bWVJ bnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQogCXsKIAkJaW50CQkJYXV0b3Zh Y3V1bV9tYXhfd29ya2Vyc19wcmV2ID0gYXV0b3ZhY3V1bV9tYXhfd29ya2VyczsKIAotCQlD b25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CiAJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19T SUdIVVApOwogCiAJCS8qIHNodXRkb3duIHJlcXVlc3RlZCBpbiBjb25maWcgZmlsZT8gKi8K QEAgLTgxMSwxNyArODA2LDYgQEAgUHJvY2Vzc0F1dG9WYWNMYXVuY2hlckludGVycnVwdHMo dm9pZCkKIAkJLyogcmVidWlsZCB0aGUgbGlzdCBpbiBjYXNlIHRoZSBuYXB0aW1lIGNoYW5n ZWQgKi8KIAkJcmVidWlsZF9kYXRhYmFzZV9saXN0KEludmFsaWRPaWQpOwogCX0KLQotCS8q IFByb2Nlc3MgYmFycmllciBldmVudHMgKi8KLQlpZiAoUHJvY1NpZ25hbEJhcnJpZXJQZW5k aW5nKQotCQlQcm9jZXNzUHJvY1NpZ25hbEJhcnJpZXIoKTsKLQotCS8qIFBlcmZvcm0gbG9n Z2luZyBvZiBtZW1vcnkgY29udGV4dHMgb2YgdGhpcyBwcm9jZXNzICovCi0JaWYgKExvZ01l bW9yeUNvbnRleHRQZW5kaW5nKQotCQlQcm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVw dCgpOwotCi0JLyogUHJvY2VzcyBzaW52YWwgY2F0Y2h1cCBpbnRlcnJ1cHRzIHRoYXQgaGFw cGVuZWQgd2hpbGUgc2xlZXBpbmcgKi8KLQlQcm9jZXNzQ2F0Y2h1cEludGVycnVwdCgpOwog fQogCiAvKgpAQCAtMTM4OCw4ICsxMzcyLDggQEAgbGF1bmNoX3dvcmtlcihUaW1lc3RhbXBU eiBub3cpCiAKIC8qCiAgKiBDYWxsZWQgZnJvbSBwb3N0bWFzdGVyIHRvIHNpZ25hbCBhIGZh aWx1cmUgdG8gZm9yayBhIHByb2Nlc3MgdG8gYmVjb21lCi0gKiB3b3JrZXIuICBUaGUgcG9z dG1hc3RlciBzaG91bGQga2lsbChTSUdVU1IyKSB0aGUgbGF1bmNoZXIgc2hvcnRseQotICog YWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgorICogd29ya2VyLiAgVGhlIHBvc3RtYXN0 ZXIgc2hvdWxkIHNlbmQgSU5URVJSVVBUX0FVVE9WQUNVVU1fV09SS0VSX0ZJTklTSEVEIHRv CisgKiB0aGUgbGF1bmNoZXIgc2hvcnRseSBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24u CiAgKi8KIHZvaWQKIEF1dG9WYWNXb3JrZXJGYWlsZWQodm9pZCkKQEAgLTE0MDEsOCArMTM4 NSw3IEBAIEF1dG9WYWNXb3JrZXJGYWlsZWQodm9pZCkKIHN0YXRpYyB2b2lkCiBhdmxfc2ln dXNyMl9oYW5kbGVyKFNJR05BTF9BUkdTKQogewotCWdvdF9TSUdVU1IyID0gdHJ1ZTsKLQlT ZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfQVVUT1ZBQ1VV TV9XT1JLRVJfRklOSVNIRUQpOwogfQogCiAKQEAgLTE0MzcsMjIgKzE0MjAsMjEgQEAgQXV0 b1ZhY1dvcmtlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1 cF9kYXRhX2xlbikKIAkgKiBiYWNrZW5kLCBzbyB3ZSB1c2UgdGhlIHNhbWUgc2lnbmFsIGhh bmRsaW5nLiAgU2VlIGVxdWl2YWxlbnQgY29kZSBpbgogCSAqIHRjb3AvcG9zdGdyZXMuYy4K IAkgKi8KLQlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQp OwotCi0JLyoKLQkgKiBTSUdJTlQgaXMgdXNlZCB0byBzaWduYWwgY2FuY2VsaW5nIHRoZSBj dXJyZW50IHRhYmxlJ3MgdmFjdXVtOyBTSUdURVJNCi0JICogbWVhbnMgYWJvcnQgYW5kIGV4 aXQgY2xlYW5seSwgYW5kIFNJR1FVSVQgbWVhbnMgYWJhbmRvbiBzaGlwLgotCSAqLwotCXBx c2lnbmFsKFNJR0lOVCwgU3RhdGVtZW50Q2FuY2VsSGFuZGxlcik7Ci0JcHFzaWduYWwoU0lH VEVSTSwgZGllKTsKLQkvKiBTSUdRVUlUIGhhbmRsZXIgd2FzIGFscmVhZHkgc2V0IHVwIGJ5 IEluaXRQb3N0bWFzdGVyQ2hpbGQgKi8KIAogCUluaXRpYWxpemVUaW1lb3V0cygpOwkJLyog ZXN0YWJsaXNoZXMgU0lHQUxSTSBoYW5kbGVyICovCiAKLQlwcXNpZ25hbChTSUdQSVBFLCBQ R19TSUdfSUdOKTsKLQlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFu ZGxlcik7Ci0JcHFzaWduYWwoU0lHVVNSMiwgUEdfU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lH RlBFLCBGbG9hdEV4Y2VwdGlvbkhhbmRsZXIpOworCVNldEludGVycnVwdEhhbmRsZXIoSU5U RVJSVVBUX1BBUkFMTEVMX01FU1NBR0UsIFByb2Nlc3NQYXJhbGxlbE1lc3NhZ2VJbnRlcnJ1 cHQpOworCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfUEFSQUxMRUxfTUVTU0FHRSk7CisK KwlTZXRTdGFuZGFyZEludGVycnVwdEhhbmRsZXJzKCk7CisKKwkvKgorCSAqIElOVEVSUlVQ VF9RVUVSWV9DQU5DRUwgKFNJR0lOVCkgaXMgdXNlZCB0byBjYW5jZWwgdGhlIGN1cnJlbnQg dGFibGUncworCSAqIHZhY3V1bTsgSU5URVJSVVBUX1RFUk1JTkFUIChTSUdURVJNKSBtZWFu cyBhYm9ydCBhbmQgZXhpdCBjbGVhbmx5IGFzCisJICogdXN1YWwuCisJICovCisJU2V0SW50 ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMLCBQcm9jZXNzUXVlcnlDYW5j ZWxJbnRlcnJ1cHQpOworCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfUVVFUllfQ0FOQ0VM KTsKIAogCS8qCiAJICogQ3JlYXRlIGEgcGVyLWJhY2tlbmQgUEdQUk9DIHN0cnVjdCBpbiBz aGFyZWQgbWVtb3J5LiAgV2UgbXVzdCBkbyB0aGlzCkBAIC0xNTgzLDEyICsxNTY1LDcgQEAg QXV0b1ZhY1dvcmtlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3Rh cnR1cF9kYXRhX2xlbikKIAkJLyogd2FrZSB1cCB0aGUgbGF1bmNoZXIgKi8KIAkJbGF1bmNo ZXJQcm9jID0gcGdfYXRvbWljX3JlYWRfdTMyKCZQcm9jR2xvYmFsLT5hdkxhdW5jaGVyUHJv Yyk7CiAJCWlmIChsYXVuY2hlclByb2MgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKLQkJewot CQkJaW50CQkJcGlkID0gR2V0UEdQcm9jQnlOdW1iZXIobGF1bmNoZXJQcm9jKS0+cGlkOwot Ci0JCQlpZiAocGlkICE9IDApCi0JCQkJa2lsbChwaWQsIFNJR1VTUjIpOwotCQl9CisJCQlT ZW5kSW50ZXJydXB0KElOVEVSUlVQVF9BVVRPVkFDVVVNX1dPUktFUl9GSU5JU0hFRCwgbGF1 bmNoZXJQcm9jKTsKIAl9CiAJZWxzZQogCXsKQEAgLTIzNjIsOSArMjMzOSw4IEBAIGRvX2F1 dG92YWN1dW0odm9pZCkKIAkJLyoKIAkJICogQ2hlY2sgZm9yIGNvbmZpZyBjaGFuZ2VzIGJl Zm9yZSBwcm9jZXNzaW5nIGVhY2ggY29sbGVjdGVkIHRhYmxlLgogCQkgKi8KLQkJaWYgKENv bmZpZ1JlbG9hZFBlbmRpbmcpCisJCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9D T05GSUdfUkVMT0FEKSkKIAkJewotCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwog CQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CiAKIAkJCS8qCkBAIC0yNTIyLDcg KzI0OTgsNyBAQCBkb19hdXRvdmFjdXVtKHZvaWQpCiAJCQkgKiBjdXJyZW50IHRhYmxlICh3 ZSdyZSBkb25lIHdpdGggaXQsIHNvIGl0IHdvdWxkIG1ha2Ugbm8gc2Vuc2UgdG8KIAkJCSAq IGNhbmNlbCBhdCB0aGlzIHBvaW50LikKIAkJCSAqLwotCQkJUXVlcnlDYW5jZWxQZW5kaW5n ID0gZmFsc2U7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMKTsK IAkJfQogCQlQR19DQVRDSCgpOwogCQl7CkBAIC0yNjExLDkgKzI1ODcsOCBAQCBkZWxldGVk OgogCQkgKiBDaGVjayBmb3IgY29uZmlnIGNoYW5nZXMgYmVmb3JlIGFjcXVpcmluZyBsb2Nr IGZvciBmdXJ0aGVyIGpvYnMuCiAJCSAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwot CQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5U RVJSVVBUX0NPTkZJR19SRUxPQUQpKQogCQl7Ci0JCQlDb25maWdSZWxvYWRQZW5kaW5nID0g ZmFsc2U7CiAJCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKIAkJCVZhY3V1bVVw ZGF0ZUNvc3RzKCk7CiAJCX0KQEAgLTI3MzUsNyArMjcxMCw3IEBAIHBlcmZvcm1fd29ya19p dGVtKEF1dG9WYWN1dW1Xb3JrSXRlbSAqd29ya2l0ZW0pCiAJCSAqICh3ZSdyZSBkb25lIHdp dGggaXQsIHNvIGl0IHdvdWxkIG1ha2Ugbm8gc2Vuc2UgdG8gY2FuY2VsIGF0IHRoaXMKIAkJ ICogcG9pbnQuKQogCQkgKi8KLQkJUXVlcnlDYW5jZWxQZW5kaW5nID0gZmFsc2U7CisJCUNs ZWFySW50ZXJydXB0KElOVEVSUlVQVF9RVUVSWV9DQU5DRUwpOwogCX0KIAlQR19DQVRDSCgp OwogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5j IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXhwcm9jZXNzLmMKaW5kZXggYWU3NTA1Yjk5 MDMuLjMyZDIzYTY4M2VmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1 eHByb2Nlc3MuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuYwpA QCAtMTYsNyArMTYsNiBAQAogI2luY2x1ZGUgPHNpZ25hbC5oPgogCiAjaW5jbHVkZSAiYWNj ZXNzL3hsb2cuaCIKLSNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicGdz dGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXhwcm9jZXNzLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3Jr ZXIuYwppbmRleCAyZjUxODE0YzkzZC4uNTNjYmQyNzdkZTMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2Jnd29ya2VyLmMKQEAgLTE0LDggKzE0LDggQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9w YXJhbGxlbC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3JlcGFjay5oIgorI2luY2x1ZGUgImlw Yy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgotI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvcnQvYXRv bWljcy5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3b3JrZXJfaW50ZXJuYWxzLmgiCkBA IC0yNCwxMiArMjQsMTAgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNo ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9pcGMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9sd2xvY2suaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXku aCIKLSNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdl L3NobWVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAi dGNvcC90Y29wcHJvdC5oIgpAQCAtODMsNiArODEsOCBAQCB0eXBlZGVmIHN0cnVjdCBCYWNr Z3JvdW5kV29ya2VyU2xvdAogCXBpZF90CQlwaWQ7CQkJLyogSW52YWxpZFBpZCA9IG5vdCBz dGFydGVkIHlldDsgMCA9IGRlYWQgKi8KIAl1aW50NjQJCWdlbmVyYXRpb247CQkvKiBpbmNy ZW1lbnRlZCB3aGVuIHNsb3QgaXMgcmVjeWNsZWQgKi8KIAlCYWNrZ3JvdW5kV29ya2VyIHdv cmtlcjsKKwlpbnQJCQlub3RpZnlfcG1jaGlsZDsKKwlQcm9jTnVtYmVyCW5vdGlmeV9wcm9j X251bWJlcjsKIH0gQmFja2dyb3VuZFdvcmtlclNsb3Q7CiAKIC8qCkBAIC0yMjEsOCArMjIx LDkgQEAgQmFja2dyb3VuZFdvcmtlclNobWVtSW5pdCh2b2lkICphcmcpCiAJCXNsb3QtPnRl cm1pbmF0ZSA9IGZhbHNlOwogCQlzbG90LT5waWQgPSBJbnZhbGlkUGlkOwogCQlzbG90LT5n ZW5lcmF0aW9uID0gMDsKKwkJc2xvdC0+bm90aWZ5X3BtY2hpbGQgPSAwOworCQlzbG90LT5u b3RpZnlfcHJvY19udW1iZXIgPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCQlydy0+cndfc2ht ZW1fc2xvdCA9IHNsb3RubzsKLQkJcnctPnJ3X3dvcmtlci5iZ3dfbm90aWZ5X3BpZCA9IDA7 CS8qIG1pZ2h0IGJlIHJlaW5pdCBhZnRlciBjcmFzaCAqLwogCQltZW1jcHkoJnNsb3QtPndv cmtlciwgJnJ3LT5yd193b3JrZXIsIHNpemVvZihCYWNrZ3JvdW5kV29ya2VyKSk7CiAJCSsr c2xvdG5vOwogCX0KQEAgLTI2MCw2ICsyNjEsMjcgQEAgRmluZFJlZ2lzdGVyZWRXb3JrZXJC eVNsb3ROdW1iZXIoaW50IHNsb3RubykKIAlyZXR1cm4gTlVMTDsKIH0KIAorUHJvY051bWJl cgorR2V0Tm90aWZ5UHJvY051bWJlckZvclJlZ2lzdGVyZWRXb3JrZXIoUmVnaXN0ZXJlZEJn V29ya2VyICpydykKK3sKKwlCYWNrZ3JvdW5kV29ya2VyU2xvdCAqc2xvdCA9ICZCYWNrZ3Jv dW5kV29ya2VyRGF0YS0+c2xvdFtydy0+cndfc2htZW1fc2xvdF07CisJUHJvY051bWJlcgly ZXN1bHQ7CisKKwkvKgorCSAqIEJlIGV4dHJhIHBhcmFub2lkIGFuZCBkb24ndCB0cnVzdCB0 aGUgbWVtb3J5IGNvbnRlbnRzLCBzaW5jZSB0aGlzIHJ1bnMKKwkgKiBpbiB0aGUgcG9zdG1h c3Rlci4KKwkgKi8KKwlyZXN1bHQgPSBzbG90LT5ub3RpZnlfcHJvY19udW1iZXI7CisJaWYg KCEocmVzdWx0ID09IElOVkFMSURfUFJPQ19OVU1CRVIgfHwKKwkJICAocmVzdWx0ID49IDAg JiYgcmVzdWx0IDwgTWF4QmFja2VuZHMgKyBOVU1fQVVYSUxJQVJZX1BST0NTKSkpCisJewor CQllbG9nKExPRywgImludmFsaWQgcHJvYyBudW1iZXIgJWQgaW4gYmd3b3JrZXIgc2xvdCIs IHJlc3VsdCk7CisJCXJlc3VsdCA9IElOVkFMSURfUFJPQ19OVU1CRVI7CisJfQorCisJcmV0 dXJuIHJlc3VsdDsKK30KKwogLyoKICAqIE5vdGljZSBjaGFuZ2VzIHRvIHNoYXJlZCBtZW1v cnkgbWFkZSBieSBvdGhlciBiYWNrZW5kcy4KICAqIEFjY2VwdCBuZXcgd29ya2VyIHJlcXVl c3RzIG9ubHkgaWYgYWxsb3dfbmV3X3dvcmtlcnMgaXMgdHJ1ZS4KQEAgLTM0MSwyMCArMzYz LDIwIEBAIEJhY2tncm91bmRXb3JrZXJTdGF0ZUNoYW5nZShib29sIGFsbG93X25ld193b3Jr ZXJzKQogCQkvKgogCQkgKiBJZiB0aGUgd29ya2VyIGlzIG1hcmtlZCBmb3IgdGVybWluYXRp b24sIHdlIGRvbid0IG5lZWQgdG8gYWRkIGl0IHRvCiAJCSAqIHRoZSByZWdpc3RlcmVkIHdv cmtlcnMgbGlzdDsgd2UgY2FuIGp1c3QgZnJlZSB0aGUgc2xvdC4gSG93ZXZlciwgaWYKLQkJ ICogYmd3X25vdGlmeV9waWQgaXMgc2V0LCB0aGUgcHJvY2VzcyB0aGF0IHJlZ2lzdGVyZWQg dGhlIHdvcmtlciBtYXkKLQkJICogbmVlZCB0byBrbm93IHRoYXQgd2UndmUgcHJvY2Vzc2Vk IHRoZSB0ZXJtaW5hdGUgcmVxdWVzdCwgc28gYmUgc3VyZQotCQkgKiB0byBzaWduYWwgaXQu CisJCSAqIGJnd19ub3RpZnlfcHJvY19udW1iZXIgaXMgc2V0LCB0aGUgcHJvY2VzcyB0aGF0 IHJlZ2lzdGVyZWQgdGhlCisJCSAqIHdvcmtlciBtYXkgbmVlZCB0byBrbm93IHRoYXQgd2Un dmUgcHJvY2Vzc2VkIHRoZSB0ZXJtaW5hdGUgcmVxdWVzdCwKKwkJICogc28gYmUgc3VyZSB0 byBzaWduYWwgaXQuCiAJCSAqLwogCQlpZiAoc2xvdC0+dGVybWluYXRlKQogCQl7Ci0JCQlp bnQJCQlub3RpZnlfcGlkOworCQkJUHJvY051bWJlcglub3RpZnlfcHJvY19udW1iZXI7CiAK IAkJCS8qCiAJCQkgKiBXZSBuZWVkIGEgbWVtb3J5IGJhcnJpZXIgaGVyZSB0byBtYWtlIHN1 cmUgdGhhdCB0aGUgbG9hZCBvZgotCQkJICogYmd3X25vdGlmeV9waWQgYW5kIHRoZSB1cGRh dGUgb2YgcGFyYWxsZWxfdGVybWluYXRlX2NvdW50Ci0JCQkgKiBjb21wbGV0ZSBiZWZvcmUg dGhlIHN0b3JlIHRvIGluX3VzZS4KKwkJCSAqIGJnd19ub3RpZnlfcHJvY19udW1iZXIgYW5k IHRoZSB1cGRhdGUgb2YKKwkJCSAqIHBhcmFsbGVsX3Rlcm1pbmF0ZV9jb3VudCBjb21wbGV0 ZSBiZWZvcmUgdGhlIHN0b3JlIHRvIGluX3VzZS4KIAkJCSAqLwotCQkJbm90aWZ5X3BpZCA9 IHNsb3QtPndvcmtlci5iZ3dfbm90aWZ5X3BpZDsKKwkJCW5vdGlmeV9wcm9jX251bWJlciA9 IHNsb3QtPm5vdGlmeV9wcm9jX251bWJlcjsKIAkJCWlmICgoc2xvdC0+d29ya2VyLmJnd19m bGFncyAmIEJHV09SS0VSX0NMQVNTX1BBUkFMTEVMKSAhPSAwKQogCQkJCUJhY2tncm91bmRX b3JrZXJEYXRhLT5wYXJhbGxlbF90ZXJtaW5hdGVfY291bnQrKzsKIAkJCXNsb3QtPnBpZCA9 IDA7CkBAIC0zNjIsOCArMzg0LDggQEAgQmFja2dyb3VuZFdvcmtlclN0YXRlQ2hhbmdlKGJv b2wgYWxsb3dfbmV3X3dvcmtlcnMpCiAJCQlwZ19tZW1vcnlfYmFycmllcigpOwogCQkJc2xv dC0+aW5fdXNlID0gZmFsc2U7CiAKLQkJCWlmIChub3RpZnlfcGlkICE9IDApCi0JCQkJa2ls bChub3RpZnlfcGlkLCBTSUdVU1IxKTsKKwkJCWlmIChub3RpZnlfcHJvY19udW1iZXIgIT0g SU5WQUxJRF9QUk9DX05VTUJFUikKKwkJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUlU X1dBS0VVUCwgbm90aWZ5X3Byb2NfbnVtYmVyKTsKIAogCQkJY29udGludWU7CiAJCX0KQEAg LTQwOSwyMyArNDMxLDYgQEAgQmFja2dyb3VuZFdvcmtlclN0YXRlQ2hhbmdlKGJvb2wgYWxs b3dfbmV3X3dvcmtlcnMpCiAJCXJ3LT5yd193b3JrZXIuYmd3X21haW5fYXJnID0gc2xvdC0+ d29ya2VyLmJnd19tYWluX2FyZzsKIAkJbWVtY3B5KHJ3LT5yd193b3JrZXIuYmd3X2V4dHJh LCBzbG90LT53b3JrZXIuYmd3X2V4dHJhLCBCR1dfRVhUUkFMRU4pOwogCi0JCS8qCi0JCSAq IENvcHkgdGhlIFBJRCB0byBiZSBub3RpZmllZCBhYm91dCBzdGF0ZSBjaGFuZ2VzLCBidXQg b25seSBpZiB0aGUKLQkJICogcG9zdG1hc3RlciBrbm93cyBhYm91dCBhIGJhY2tlbmQgd2l0 aCB0aGF0IFBJRC4gIEl0IGlzbid0IGFuIGVycm9yCi0JCSAqIGlmIHRoZSBwb3N0bWFzdGVy IGRvZXNuJ3Qga25vdyBhYm91dCB0aGUgUElELCBiZWNhdXNlIHRoZSBiYWNrZW5kCi0JCSAq IHRoYXQgcmVxdWVzdGVkIHRoZSB3b3JrZXIgY291bGQgaGF2ZSBkaWVkIChvciBiZWVuIGtp bGxlZCkganVzdAotCQkgKiBhZnRlciBkb2luZyBzby4gIE5vbmV0aGVsZXNzLCBhdCBsZWFz dCB1bnRpbCB3ZSBnZXQgc29tZSBleHBlcmllbmNlCi0JCSAqIHdpdGggaG93IHRoaXMgcGxh eXMgb3V0IGluIHRoZSB3aWxkLCBsb2cgYSBtZXNzYWdlIGF0IGEgcmVsYXRpdmUKLQkJICog aGlnaCBkZWJ1ZyBsZXZlbC4KLQkJICovCi0JCXJ3LT5yd193b3JrZXIuYmd3X25vdGlmeV9w aWQgPSBzbG90LT53b3JrZXIuYmd3X25vdGlmeV9waWQ7Ci0JCWlmICghUG9zdG1hc3Rlck1h cmtQSURGb3JXb3JrZXJOb3RpZnkocnctPnJ3X3dvcmtlci5iZ3dfbm90aWZ5X3BpZCkpCi0J CXsKLQkJCWVsb2coREVCVUcxLCAid29ya2VyIG5vdGlmaWNhdGlvbiBQSUQgJWQgaXMgbm90 IHZhbGlkIiwKLQkJCQkgKGludCkgcnctPnJ3X3dvcmtlci5iZ3dfbm90aWZ5X3BpZCk7Ci0J CQlydy0+cndfd29ya2VyLmJnd19ub3RpZnlfcGlkID0gMDsKLQkJfQotCiAJCS8qIEluaXRp YWxpemUgcG9zdG1hc3RlciBib29ra2VlcGluZy4gKi8KIAkJcnctPnJ3X3BpZCA9IDA7CiAJ CXJ3LT5yd19jcmFzaGVkX2F0ID0gMDsKQEAgLTQ0Nyw3ICs0NTIsNyBAQCBCYWNrZ3JvdW5k V29ya2VyU3RhdGVDaGFuZ2UoYm9vbCBhbGxvd19uZXdfd29ya2VycykKICAqIE5PVEU6IFRo ZSBlbnRyeSBpcyB1bmxpbmtlZCBmcm9tIEJhY2tncm91bmRXb3JrZXJMaXN0LiAgSWYgdGhl IGNhbGxlciBpcwogICogaXRlcmF0aW5nIHRocm91Z2ggaXQsIGJldHRlciB1c2UgYSBtdXRh YmxlIGl0ZXJhdG9yIQogICoKLSAqIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3Igbm90aWZ5 aW5nIGJnd19ub3RpZnlfcGlkLCBpZiBhcHByb3ByaWF0ZS4KKyAqIENhbGxlciBpcyByZXNw b25zaWJsZSBmb3Igbm90aWZ5aW5nIGJnd19ub3RpZnlfcHJvY19udW1iZXIsIGlmIGFwcHJv cHJpYXRlLgogICoKICAqIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBpbnZva2VkIG9ubHkgaW4g dGhlIHBvc3RtYXN0ZXIuCiAgKi8KQEAgLTQ5Miw4ICs0OTcsOCBAQCBSZXBvcnRCYWNrZ3Jv dW5kV29ya2VyUElEKFJlZ2lzdGVyZWRCZ1dvcmtlciAqcncpCiAJc2xvdCA9ICZCYWNrZ3Jv dW5kV29ya2VyRGF0YS0+c2xvdFtydy0+cndfc2htZW1fc2xvdF07CiAJc2xvdC0+cGlkID0g cnctPnJ3X3BpZDsKIAotCWlmIChydy0+cndfd29ya2VyLmJnd19ub3RpZnlfcGlkICE9IDAp Ci0JCWtpbGwocnctPnJ3X3dvcmtlci5iZ3dfbm90aWZ5X3BpZCwgU0lHVVNSMSk7CisJaWYg KHNsb3QtPm5vdGlmeV9wcm9jX251bWJlciAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQorCQlT ZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgc2xvdC0+bm90aWZ5X3Byb2Nf bnVtYmVyKTsKIH0KIAogLyoKQEAgLTUwOSwxMiArNTE0LDEyIEBAIHZvaWQKIFJlcG9ydEJh Y2tncm91bmRXb3JrZXJFeGl0KFJlZ2lzdGVyZWRCZ1dvcmtlciAqcncpCiB7CiAJQmFja2dy b3VuZFdvcmtlclNsb3QgKnNsb3Q7Ci0JaW50CQkJbm90aWZ5X3BpZDsKKwlQcm9jTnVtYmVy CW5vdGlmeV9wcm9jX251bWJlcjsKIAogCUFzc2VydChydy0+cndfc2htZW1fc2xvdCA8IG1h eF93b3JrZXJfcHJvY2Vzc2VzKTsKIAlzbG90ID0gJkJhY2tncm91bmRXb3JrZXJEYXRhLT5z bG90W3J3LT5yd19zaG1lbV9zbG90XTsKIAlzbG90LT5waWQgPSBydy0+cndfcGlkOwotCW5v dGlmeV9waWQgPSBydy0+cndfd29ya2VyLmJnd19ub3RpZnlfcGlkOworCW5vdGlmeV9wcm9j X251bWJlciA9IHNsb3QtPm5vdGlmeV9wcm9jX251bWJlcjsKIAogCS8qCiAJICogSWYgdGhp cyB3b3JrZXIgaXMgc2xhdGVkIGZvciBkZXJlZ2lzdHJhdGlvbiwgZG8gdGhhdCBiZWZvcmUg bm90aWZ5aW5nCkBAIC01MjcsMjcgKzUzMiwzNCBAQCBSZXBvcnRCYWNrZ3JvdW5kV29ya2Vy RXhpdChSZWdpc3RlcmVkQmdXb3JrZXIgKnJ3KQogCQlydy0+cndfd29ya2VyLmJnd19yZXN0 YXJ0X3RpbWUgPT0gQkdXX05FVkVSX1JFU1RBUlQpCiAJCUZvcmdldEJhY2tncm91bmRXb3Jr ZXIocncpOwogCi0JaWYgKG5vdGlmeV9waWQgIT0gMCkKLQkJa2lsbChub3RpZnlfcGlkLCBT SUdVU1IxKTsKKwlpZiAobm90aWZ5X3Byb2NfbnVtYmVyICE9IElOVkFMSURfUFJPQ19OVU1C RVIpCisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQLCBub3RpZnlfcHJv Y19udW1iZXIpOwogfQogCiAvKgotICogQ2FuY2VsIFNJR1VTUjEgbm90aWZpY2F0aW9ucyBm b3IgYSBQSUQgYmVsb25naW5nIHRvIGFuIGV4aXRpbmcgYmFja2VuZC4KKyAqIENhbmNlbCBu b3RpZmljYXRpb25zIGZvciBhIGJnd29ya2VyIGJlbG9uZ2luZyB0byBhbiBleGl0aW5nIGJh Y2tlbmQuCiAgKgogICogVGhpcyBmdW5jdGlvbiBzaG91bGQgb25seSBiZSBjYWxsZWQgZnJv bSB0aGUgcG9zdG1hc3Rlci4KICAqLwogdm9pZAotQmFja2dyb3VuZFdvcmtlclN0b3BOb3Rp ZmljYXRpb25zKHBpZF90IHBpZCkKK0JhY2tncm91bmRXb3JrZXJTdG9wTm90aWZpY2F0aW9u cyhpbnQgcG1jaGlsZCkKIHsKIAlkbGlzdF9pdGVyCWl0ZXI7CiAKIAlkbGlzdF9mb3JlYWNo KGl0ZXIsICZCYWNrZ3JvdW5kV29ya2VyTGlzdCkKIAl7CiAJCVJlZ2lzdGVyZWRCZ1dvcmtl ciAqcnc7CisJCUJhY2tncm91bmRXb3JrZXJTbG90ICpzbG90OwogCiAJCXJ3ID0gZGxpc3Rf Y29udGFpbmVyKFJlZ2lzdGVyZWRCZ1dvcmtlciwgcndfbG5vZGUsIGl0ZXIuY3VyKTsKLQkJ aWYgKHJ3LT5yd193b3JrZXIuYmd3X25vdGlmeV9waWQgPT0gcGlkKQotCQkJcnctPnJ3X3dv cmtlci5iZ3dfbm90aWZ5X3BpZCA9IDA7CisJCUFzc2VydChydy0+cndfc2htZW1fc2xvdCA8 IG1heF93b3JrZXJfcHJvY2Vzc2VzKTsKKwkJc2xvdCA9ICZCYWNrZ3JvdW5kV29ya2VyRGF0 YS0+c2xvdFtydy0+cndfc2htZW1fc2xvdF07CisKKwkJaWYgKHNsb3QtPm5vdGlmeV9wbWNo aWxkID09IHBtY2hpbGQpCisJCXsKKwkJCXNsb3QtPm5vdGlmeV9wbWNoaWxkID0gMDsKKwkJ CXNsb3QtPm5vdGlmeV9wcm9jX251bWJlciA9IElOVkFMSURfUFJPQ19OVU1CRVI7CisJCX0K IAl9CiB9CiAKQEAgLTU3OSwxNCArNTkxLDE0IEBAIEZvcmdldFVuc3RhcnRlZEJhY2tncm91 bmRXb3JrZXJzKHZvaWQpCiAKIAkJLyogSWYgaXQncyBub3QgeWV0IHN0YXJ0ZWQsIGFuZCB0 aGVyZSdzIHNvbWVvbmUgd2FpdGluZyAuLi4gKi8KIAkJaWYgKHNsb3QtPnBpZCA9PSBJbnZh bGlkUGlkICYmCi0JCQlydy0+cndfd29ya2VyLmJnd19ub3RpZnlfcGlkICE9IDApCisJCQlz bG90LT5ub3RpZnlfcHJvY19udW1iZXIgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKIAkJewog CQkJLyogLi4uIHRoZW4gemFwIGl0LCBhbmQgbm90aWZ5IHRoZSB3YWl0ZXIgKi8KLQkJCWlu dAkJCW5vdGlmeV9waWQgPSBydy0+cndfd29ya2VyLmJnd19ub3RpZnlfcGlkOworCQkJUHJv Y051bWJlcglub3RpZnlfcHJvY19udW1iZXIgPSBzbG90LT5ub3RpZnlfcHJvY19udW1iZXI7 CiAKIAkJCUZvcmdldEJhY2tncm91bmRXb3JrZXIocncpOwotCQkJaWYgKG5vdGlmeV9waWQg IT0gMCkKLQkJCQlraWxsKG5vdGlmeV9waWQsIFNJR1VTUjEpOworCQkJaWYgKG5vdGlmeV9w cm9jX251bWJlciAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQorCQkJCVNlbmRJbnRlcnJ1cHQo SU5URVJSVVBUX1dBSVRfV0FLRVVQLCBub3RpZnlfcHJvY19udW1iZXIpOwogCQl9CiAJfQog fQpAQCAtNjQwLDExICs2NTIsNiBAQCBSZXNldEJhY2tncm91bmRXb3JrZXJDcmFzaFRpbWVz KHZvaWQpCiAJCQkgKi8KIAkJCXJ3LT5yd19jcmFzaGVkX2F0ID0gMDsKIAkJCXJ3LT5yd19w aWQgPSAwOwotCi0JCQkvKgotCQkJICogSWYgdGhlcmUgd2FzIGFueW9uZSB3YWl0aW5nIGZv ciBpdCwgdGhleSdyZSBoaXN0b3J5LgotCQkJICovCi0JCQlydy0+cndfd29ya2VyLmJnd19u b3RpZnlfcGlkID0gMDsKIAkJfQogCX0KIH0KQEAgLTc3MiwzMiArNzc5LDI4IEBAIEJhY2tn cm91bmRXb3JrZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0 dXBfZGF0YV9sZW4pCiAJLyoKIAkgKiBTZXQgdXAgc2lnbmFsIGhhbmRsZXJzLgogCSAqLwor CVNldFN0YW5kYXJkSW50ZXJydXB0SGFuZGxlcnMoKTsKIAlpZiAod29ya2VyLT5iZ3dfZmxh Z3MgJiBCR1dPUktFUl9CQUNLRU5EX0RBVEFCQVNFX0NPTk5FQ1RJT04pCiAJewogCQkvKgot CQkgKiBTSUdJTlQgaXMgdXNlZCB0byBzaWduYWwgY2FuY2VsaW5nIHRoZSBjdXJyZW50IGFj dGlvbgorCQkgKiBFbmFibGUgcXVlcnkgY2FuY2VsbGF0aW9uIGJ5IGRlZmF1bHQuIFRoZSBi YWNrZ3JvdW5kIHdvcmtlciBtYXkKKwkJICogZGlzYWJsZSBmb3IgbW9yZSBjb250cm9sIG9u IHdoZW4gY2FuY2VsbGF0aW9ucyBhcmUgYWNjZXB0ZWQuCiAJCSAqLwotCQlwcXNpZ25hbChT SUdJTlQsIFN0YXRlbWVudENhbmNlbEhhbmRsZXIpOwotCQlwcXNpZ25hbChTSUdVU1IxLCBw cm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcik7Ci0JCXBxc2lnbmFsKFNJR0ZQRSwgRmxvYXRF eGNlcHRpb25IYW5kbGVyKTsKKwkJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfUVVF UllfQ0FOQ0VMLCBQcm9jZXNzUXVlcnlDYW5jZWxJbnRlcnJ1cHQpOworCQlFbmFibGVJbnRl cnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7CiAKLQkJLyogWFhYIEFueSBvdGhlciBo YW5kbGVycyBuZWVkZWQgaGVyZT8gKi8KKwkJLyogbGlrZSBpbiByZWd1bGFyIGJhY2tlbmRz ICovCisJCXBxc2lnbmFsKFNJR0ZQRSwgRmxvYXRFeGNlcHRpb25IYW5kbGVyKTsKIAl9CiAJ ZWxzZQogCXsKKwkJLyogbm8gY2FuY2VsbGF0aW9uIGluIGJhY2tlbmRzIHRoYXQgZG9uJ3Qg cnVuIHF1ZXJpZXMgKi8KIAkJcHFzaWduYWwoU0lHSU5ULCBQR19TSUdfSUdOKTsKLQkJcHFz aWduYWwoU0lHVVNSMSwgUEdfU0lHX0lHTik7CiAJCXBxc2lnbmFsKFNJR0ZQRSwgUEdfU0lH X0lHTik7CiAJfQotCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7Ci0JLyogU0lHUVVJVCBoYW5k bGVyIHdhcyBhbHJlYWR5IHNldCB1cCBieSBJbml0UG9zdG1hc3RlckNoaWxkICovCi0JcHFz aWduYWwoU0lHSFVQLCBQR19TSUdfSUdOKTsKIAogCUluaXRpYWxpemVUaW1lb3V0cygpOwkJ LyogZXN0YWJsaXNoZXMgU0lHQUxSTSBoYW5kbGVyICovCiAKLQlwcXNpZ25hbChTSUdQSVBF LCBQR19TSUdfSUdOKTsKLQlwcXNpZ25hbChTSUdVU1IyLCBQR19TSUdfSUdOKTsKLQogCS8q CiAJICogSWYgYW4gZXhjZXB0aW9uIGlzIGVuY291bnRlcmVkLCBwcm9jZXNzaW5nIHJlc3Vt ZXMgaGVyZS4KIAkgKgpAQCAtMTAwMywxNSArMTAwNiw2IEBAIFJlZ2lzdGVyQmFja2dyb3Vu ZFdvcmtlcihCYWNrZ3JvdW5kV29ya2VyICp3b3JrZXIpCiAJaWYgKCFTYW5pdHlDaGVja0Jh Y2tncm91bmRXb3JrZXIod29ya2VyLCBMT0cpKQogCQlyZXR1cm47CiAKLQlpZiAod29ya2Vy LT5iZ3dfbm90aWZ5X3BpZCAhPSAwKQotCXsKLQkJZXJlcG9ydChMT0csCi0JCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCSBlcnJtc2coImJhY2tn cm91bmQgd29ya2VyIFwiJXNcIjogb25seSBkeW5hbWljIGJhY2tncm91bmQgd29ya2VycyBj YW4gcmVxdWVzdCBub3RpZmljYXRpb24iLAotCQkJCQkJd29ya2VyLT5iZ3dfbmFtZSkpKTsK LQkJcmV0dXJuOwotCX0KLQogCS8qCiAJICogRW5mb3JjZSBtYXhpbXVtIG51bWJlciBvZiB3 b3JrZXJzLiAgTm90ZSB0aGlzIGlzIG92ZXJseSByZXN0cmljdGl2ZTogd2UKIAkgKiBjb3Vs ZCBhbGxvdyBtb3JlIG5vbi1zaG1lbS1jb25uZWN0ZWQgd29ya2VycywgYmVjYXVzZSB0aGVz ZSBkb24ndCBjb3VudApAQCAtMTEyNyw2ICsxMTIxLDI1IEBAIFJlZ2lzdGVyRHluYW1pY0Jh Y2tncm91bmRXb3JrZXIoQmFja2dyb3VuZFdvcmtlciAqd29ya2VyLAogCQkJaWYgKHBhcmFs bGVsKQogCQkJCUJhY2tncm91bmRXb3JrZXJEYXRhLT5wYXJhbGxlbF9yZWdpc3Rlcl9jb3Vu dCsrOwogCisJCQlpZiAoKHNsb3QtPndvcmtlci5iZ3dfZmxhZ3MgJiBCR1dPUktFUl9TSE1F TV9BQ0NFU1MpICE9IDAgJiYKKwkJCQkoc2xvdC0+d29ya2VyLmJnd19mbGFncyAmIEJHV09S S0VSX05PX05PVElGWSkgPT0gMCkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFNldCBub3RpZnlf cHJvY19udW1iZXIgc28gdGhhdCBwb3N0bWFzdGVyIHdpbGwgc2VuZCB1cyBhbgorCQkJCSAq IGludGVycnVwdC4gQWxzbyByZW1lbWJlciB0aGUgcG1jaGlsZCBzbG90IG51bWJlcjsKKwkJ CQkgKiBwb3N0bWFzdGVyIG5lZWRzIGl0IHRvIGRldGVjdCB3aGVuIHdlIGV4aXQsIHRvIGRp c2FybSB0aGUKKwkJCQkgKiBub3RpZmljYXRpb24uCisJCQkJICovCisJCQkJc2xvdC0+bm90 aWZ5X3BtY2hpbGQgPSBNeVBNQ2hpbGRTbG90OworCQkJCXNsb3QtPm5vdGlmeV9wcm9jX251 bWJlciA9IE15UHJvY051bWJlcjsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkvKiBObyBu b3RpZmljYXRpb25zLiAqLworCQkJCXNsb3QtPm5vdGlmeV9wbWNoaWxkID0gMDsKKwkJCQlz bG90LT5ub3RpZnlfcHJvY19udW1iZXIgPSBJTlZBTElEX1BST0NfTlVNQkVSOworCQkJfQor CiAJCQkvKgogCQkJICogTWFrZSBzdXJlIHBvc3RtYXN0ZXIgZG9lc24ndCBzZWUgdGhlIHNs b3QgYXMgaW4gdXNlIGJlZm9yZSBpdAogCQkJICogc2VlcyB0aGUgbmV3IGNvbnRlbnRzLgpA QCAtMTIyNyw4ICsxMjQwLDkgQEAgR2V0QmFja2dyb3VuZFdvcmtlclBpZChCYWNrZ3JvdW5k V29ya2VySGFuZGxlICpoYW5kbGUsIHBpZF90ICpwaWRwKQogICogQkdXSF9QT1NUTUFTVEVS X0RJRUQsIHNpbmNlIGl0IHRoYXQgY2FzZSB3ZSBrbm93IHRoYXQgc3RhcnR1cCB3aWxsIG5v dAogICogdGFrZSBwbGFjZS4KICAqCi0gKiBUaGUgY2FsbGVyICptdXN0KiBoYXZlIHNldCBv dXIgUElEIGFzIHRoZSB3b3JrZXIncyBiZ3dfbm90aWZ5X3BpZCwKLSAqIGVsc2Ugd2Ugd2ls bCBub3QgYmUgYXdva2VuIHByb21wdGx5IHdoZW4gdGhlIHdvcmtlcidzIHN0YXRlIGNoYW5n ZXMuCisgKiBUaGlzIHdvcmtzIG9ubHkgaWYgdGhlIHdvcmtlciB3YXMgcmVnaXN0ZXJlZCB3 aXRoIEJHV09SS0VSX1NITUVNX0FDQ0VTUyBhbmQKKyAqIHdpdGhvdXQgQkdXT1JLRVJfTk9f Tk9USUZZLCBlbHNlIHdlIHdpbGwgbm90IGJlIGF3b2tlbiBwcm9tcHRseSB3aGVuIHRoZQor ICogd29ya2VyJ3Mgc3RhdGUgY2hhbmdlcy4KICAqLwogQmd3SGFuZGxlU3RhdHVzCiBXYWl0 Rm9yQmFja2dyb3VuZFdvcmtlclN0YXJ0dXAoQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqaGFu ZGxlLCBwaWRfdCAqcGlkcCkKQEAgLTEyNDgsOSArMTI2Miw5IEBAIFdhaXRGb3JCYWNrZ3Jv dW5kV29ya2VyU3RhcnR1cChCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUsIHBpZF90 ICpwaWRwKQogCQlpZiAoc3RhdHVzICE9IEJHV0hfTk9UX1lFVF9TVEFSVEVEKQogCQkJYnJl YWs7CiAKLQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VU IHwgV0xfUE9TVE1BU1RFUl9ERUFUSCwgMCwKLQkJCQkJICAgV0FJVF9FVkVOVF9CR1dPUktF Ul9TVEFSVFVQKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01h c2sgfCBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsCisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBX TF9QT1NUTUFTVEVSX0RFQVRILCAwLAorCQkJCQkJICAgV0FJVF9FVkVOVF9CR1dPUktFUl9T VEFSVFVQKTsKIAogCQlpZiAocmMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKQogCQl7CkBAIC0x MjU4LDcgKzEyNzIsNyBAQCBXYWl0Rm9yQmFja2dyb3VuZFdvcmtlclN0YXJ0dXAoQmFja2dy b3VuZFdvcmtlckhhbmRsZSAqaGFuZGxlLCBwaWRfdCAqcGlkcCkKIAkJCWJyZWFrOwogCQl9 CiAKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBU X1dBSVRfV0FLRVVQKTsKIAl9CiAKIAlyZXR1cm4gc3RhdHVzOwpAQCAtMTI3Miw4ICsxMjg2 LDkgQEAgV2FpdEZvckJhY2tncm91bmRXb3JrZXJTdGFydHVwKEJhY2tncm91bmRXb3JrZXJI YW5kbGUgKmhhbmRsZSwgcGlkX3QgKnBpZHApCiAgKiB1cCBhbmQgcmV0dXJuIEJHV0hfUE9T VE1BU1RFUl9ESUVELCBiZWNhdXNlIGl0J3MgdGhlIHBvc3RtYXN0ZXIgdGhhdAogICogbm90 aWZpZXMgdXMgd2hlbiBhIHdvcmtlcidzIHN0YXRlIGNoYW5nZXMuCiAgKgotICogVGhlIGNh bGxlciAqbXVzdCogaGF2ZSBzZXQgb3VyIFBJRCBhcyB0aGUgd29ya2VyJ3MgYmd3X25vdGlm eV9waWQsCi0gKiBlbHNlIHdlIHdpbGwgbm90IGJlIGF3b2tlbiBwcm9tcHRseSB3aGVuIHRo ZSB3b3JrZXIncyBzdGF0ZSBjaGFuZ2VzLgorICogVGhpcyB3b3JrcyBvbmx5IGlmIHRoZSB3 b3JrZXIgd2FzIHJlZ2lzdGVyZWQgd2l0aCBCR1dPUktFUl9TSE1FTV9BQ0NFU1MgYW5kCisg KiB3aXRob3V0IEJHV09SS0VSX05PX05PVElGWSwgZWxzZSB3ZSB3aWxsIG5vdCBiZSBhd29r ZW4gcHJvbXB0bHkgd2hlbiB0aGUKKyAqIHdvcmtlcidzIHN0YXRlIGNoYW5nZXMuCiAgKi8K IEJnd0hhbmRsZVN0YXR1cwogV2FpdEZvckJhY2tncm91bmRXb3JrZXJTaHV0ZG93bihCYWNr Z3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUpCkBAIC0xMjkxLDkgKzEzMDYsOSBAQCBXYWl0 Rm9yQmFja2dyb3VuZFdvcmtlclNodXRkb3duKEJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmhh bmRsZSkKIAkJaWYgKHN0YXR1cyA9PSBCR1dIX1NUT1BQRUQpCiAJCQlicmVhazsKIAotCQly YyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9QT1NU TUFTVEVSX0RFQVRILCAwLAotCQkJCQkgICBXQUlUX0VWRU5UX0JHV09SS0VSX1NIVVRET1dO KTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfCBJTlRF UlJVUFRfV0FJVF9XQUtFVVAsCisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9QT1NUTUFT VEVSX0RFQVRILCAwLAorCQkJCQkJICAgV0FJVF9FVkVOVF9CR1dPUktFUl9TSFVURE9XTik7 CiAKIAkJaWYgKHJjICYgV0xfUE9TVE1BU1RFUl9ERUFUSCkKIAkJewpAQCAtMTMwMSw3ICsx MzE2LDcgQEAgV2FpdEZvckJhY2tncm91bmRXb3JrZXJTaHV0ZG93bihCYWNrZ3JvdW5kV29y a2VySGFuZGxlICpoYW5kbGUpCiAJCQlicmVhazsKIAkJfQogCi0JCVJlc2V0TGF0Y2goTXlM YXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAJfQog CiAJcmV0dXJuIHN0YXR1czsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv Ymd3cml0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYwppbmRleCBm MTk5ZDkyZjU3Yy4uYzg0ODhkOTliNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvYmd3cml0ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd3JpdGVy LmMKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCiAjaW5j bHVkZSAiaXBjL2ludGVycnVwdC5oIgotI2luY2x1ZGUgImlwYy9zaWduYWxfaGFuZGxlcnMu aCIKICNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgog I2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5oIgpAQCAtOTgsMTYgKzk3LDExIEBA IEJhY2tncm91bmRXcml0ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90 IHN0YXJ0dXBfZGF0YV9sZW4pCiAJQXV4aWxpYXJ5UHJvY2Vzc01haW5Db21tb24oKTsKIAog CS8qCi0JICogUHJvcGVybHkgYWNjZXB0IG9yIGlnbm9yZSBzaWduYWxzIHRoYXQgbWlnaHQg YmUgc2VudCB0byB1cy4KKwkgKiBTZXQgdXAgaW50ZXJydXB0IGhhbmRsaW5nCiAJICovCi0J cHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKLQlwcXNp Z25hbChTSUdJTlQsIFBHX1NJR19JR04pOwotCXBxc2lnbmFsKFNJR1RFUk0sIFNpZ25hbEhh bmRsZXJGb3JTaHV0ZG93blJlcXVlc3QpOwotCS8qIFNJR1FVSVQgaGFuZGxlciB3YXMgYWxy ZWFkeSBzZXQgdXAgYnkgSW5pdFBvc3RtYXN0ZXJDaGlsZCAqLwotCXBxc2lnbmFsKFNJR0FM Uk0sIFBHX1NJR19JR04pOwotCXBxc2lnbmFsKFNJR1BJUEUsIFBHX1NJR19JR04pOwotCXBx c2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKLQlwcXNpZ25h bChTSUdVU1IyLCBQR19TSUdfSUdOKTsKKwlTZXRTdGFuZGFyZEludGVycnVwdEhhbmRsZXJz KCk7CisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfVEVSTUlOQVRFLCBQcm9jZXNz QXV4UHJvY2Vzc1NodXRkb3duSW50ZXJydXB0KTsKKwlFbmFibGVJbnRlcnJ1cHQoSU5URVJS VVBUX0NPTkZJR19SRUxPQUQpOwogCiAJLyoKIAkgKiBXZSBqdXN0IHN0YXJ0ZWQsIGFzc3Vt ZSB0aGVyZSBoYXMgYmVlbiBlaXRoZXIgYSBzaHV0ZG93biBvcgpAQCAtMjIxLDkgKzIxNSw5 IEBAIEJhY2tncm91bmRXcml0ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6 ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCWludAkJCXJjOwogCiAJCS8qIENsZWFyIGFueSBh bHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCi0JCVByb2Nlc3NNYWlu TG9vcEludGVycnVwdHMoKTsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCQkvKgog CQkgKiBEbyBvbmUgY3ljbGUgb2YgZGlydHktYnVmZmVyIHdyaXRpbmcuCkBAIC0yOTYsMjIg KzI5MCwyMiBAQCBCYWNrZ3JvdW5kV3JpdGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2Rh dGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkgKiB3aWxsIGNhbGwgaXQgZXZlcnkg QmdXcml0ZXJEZWxheSBtc2VjLiAgV2hpbGUgaXQncyBub3QgY3JpdGljYWwgZm9yCiAJCSAq IGNvcnJlY3RuZXNzIHRoYXQgdGhhdCBiZSBleGFjdCwgdGhlIGZlZWRiYWNrIGxvb3AgbWln aHQgbWlzYmVoYXZlCiAJCSAqIGlmIHdlIHN0cmF5IHRvbyBmYXIgZnJvbSB0aGF0LiAgSGVu Y2UsIGF2b2lkIGxvYWRpbmcgdGhpcyBwcm9jZXNzCi0JCSAqIGRvd24gd2l0aCBsYXRjaCBl dmVudHMgdGhhdCBhcmUgbGlrZWx5IHRvIGhhcHBlbiBmcmVxdWVudGx5IGR1cmluZwotCQkg KiBub3JtYWwgb3BlcmF0aW9uLgorCQkgKiBkb3duIHdpdGggaW50ZXJydXB0IGV2ZW50cyB0 aGF0IGFyZSBsaWtlbHkgdG8gaGFwcGVuIGZyZXF1ZW50bHkKKwkJICogZHVyaW5nIG5vcm1h bCBvcGVyYXRpb24uCiAJCSAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkg ICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJ CQkJICAgQmdXcml0ZXJEZWxheSAvKiBtcyAqLyAsIFdBSVRfRVZFTlRfQkdXUklURVJfTUFJ Tik7CisJCXJjID0gV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrLAorCQkJ CQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs CisJCQkJCQkgICBCZ1dyaXRlckRlbGF5IC8qIG1zICovICwgV0FJVF9FVkVOVF9CR1dSSVRF Ul9NQUlOKTsKIAogCQkvKgotCQkgKiBJZiBubyBsYXRjaCBldmVudCBhbmQgQmdCdWZmZXJT eW5jIHNheXMgbm90aGluZydzIGhhcHBlbmluZywgZXh0ZW5kCisJCSAqIElmIG5vIGludGVy cnVwdCBhbmQgQmdCdWZmZXJTeW5jIHNheXMgbm90aGluZydzIGhhcHBlbmluZywgZXh0ZW5k CiAJCSAqIHRoZSBzbGVlcCBpbiAiaGliZXJuYXRpb24iIG1vZGUsIHdoZXJlIHdlIHNsZWVw IGZvciBtdWNoIGxvbmdlcgogCQkgKiB0aGFuIGJnd3JpdGVyX2RlbGF5IHNheXMuICBGZXdl ciB3YWtldXBzIHNhdmUgZWxlY3RyaWNpdHkuICBXaGVuIGEKLQkJICogYmFja2VuZCBzdGFy dHMgdXNpbmcgYnVmZmVycyBhZ2FpbiwgaXQgd2lsbCB3YWtlIHVzIHVwIGJ5IHNldHRpbmcK LQkJICogb3VyIGxhdGNoLiAgQmVjYXVzZSB0aGUgZXh0cmEgc2xlZXAgd2lsbCBwZXJzaXN0 IG9ubHkgYXMgbG9uZyBhcyBubwotCQkgKiBidWZmZXIgYWxsb2NhdGlvbnMgaGFwcGVuLCB0 aGlzIHNob3VsZCBub3QgZGlzdG9ydCB0aGUgYmVoYXZpb3Igb2YKLQkJICogQmdCdWZmZXJT eW5jJ3MgY29udHJvbCBsb29wIHRvbyBiYWRseTsgZXNzZW50aWFsbHksIGl0IHdpbGwgdGhp bmsKLQkJICogdGhhdCB0aGUgc3lzdGVtLXdpZGUgaWRsZSBpbnRlcnZhbCBkaWRuJ3QgZXhp c3QuCisJCSAqIGJhY2tlbmQgc3RhcnRzIHVzaW5nIGJ1ZmZlcnMgYWdhaW4sIGl0IHdpbGwg d2FrZSB1cyB1cCBieSBzZW5kaW5nCisJCSAqIHVzIGFuIGludGVycnVwdC4gIEJlY2F1c2Ug dGhlIGV4dHJhIHNsZWVwIHdpbGwgcGVyc2lzdCBvbmx5IGFzIGxvbmcKKwkJICogYXMgbm8g YnVmZmVyIGFsbG9jYXRpb25zIGhhcHBlbiwgdGhpcyBzaG91bGQgbm90IGRpc3RvcnQgdGhl CisJCSAqIGJlaGF2aW9yIG9mIEJnQnVmZmVyU3luYydzIGNvbnRyb2wgbG9vcCB0b28gYmFk bHk7IGVzc2VudGlhbGx5LCBpdAorCQkgKiB3aWxsIHRoaW5rIHRoYXQgdGhlIHN5c3RlbS13 aWRlIGlkbGUgaW50ZXJ2YWwgZGlkbid0IGV4aXN0LgogCQkgKgogCQkgKiBUaGVyZSBpcyBh IHJhY2UgY29uZGl0aW9uIGhlcmUsIGluIHRoYXQgYSBiYWNrZW5kIG1pZ2h0IGFsbG9jYXRl IGEKIAkJICogYnVmZmVyIGJldHdlZW4gdGhlIHRpbWUgQmdCdWZmZXJTeW5jIHNhdyB0aGUg YWxsb2MgY291bnQgYXMgemVybwpAQCAtMzI2LDEwICszMjAsMTEgQEAgQmFja2dyb3VuZFdy aXRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRh X2xlbikKIAkJCS8qIEFzayBmb3Igbm90aWZpY2F0aW9uIGF0IG5leHQgYnVmZmVyIGFsbG9j YXRpb24gKi8KIAkJCVN0cmF0ZWd5Tm90aWZ5QmdXcml0ZXIoTXlQcm9jTnVtYmVyKTsKIAkJ CS8qIFNsZWVwIC4uLiAqLwotCQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJ CSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJ CQkJCQkgQmdXcml0ZXJEZWxheSAqIEhJQkVSTkFURV9GQUNUT1IsCi0JCQkJCQkJIFdBSVRf RVZFTlRfQkdXUklURVJfSElCRVJOQVRFKTsKKwkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KENo ZWNrRm9ySW50ZXJydXB0c01hc2sgfAorCQkJCQkJCQkgSU5URVJSVVBUX1dBSVRfV0FLRVVQ LAorCQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsCisJCQkJCQkJCSBCZ1dyaXRlckRlbGF5ICogSElCRVJOQVRFX0ZBQ1RPUiwKKwkJ CQkJCQkJIFdBSVRfRVZFTlRfQkdXUklURVJfSElCRVJOQVRFKTsKIAkJCS8qIFJlc2V0IHRo ZSBub3RpZmljYXRpb24gcmVxdWVzdCBpbiBjYXNlIHdlIHRpbWVkIG91dCAqLwogCQkJU3Ry YXRlZ3lOb3RpZnlCZ1dyaXRlcigtMSk7CiAJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2No ZWNrcG9pbnRlci5jCmluZGV4IDBiZTBiOTAwOWU4Li42YjMwMWZlMDk5MiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYworKysgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCkBAIC0xMSw4ICsxMSwxMCBAQAogICog Y29uZGl0aW9uLikKICAqCiAgKiBUaGUgbm9ybWFsIHRlcm1pbmF0aW9uIHNlcXVlbmNlIGlz IHRoYXQgY2hlY2twb2ludGVyIGlzIGluc3RydWN0ZWQgdG8KLSAqIGV4ZWN1dGUgdGhlIHNo dXRkb3duIGNoZWNrcG9pbnQgYnkgU0lHSU5ULiAgQWZ0ZXIgdGhhdCBjaGVja3BvaW50ZXIg d2FpdHMKLSAqIHRvIGJlIHRlcm1pbmF0ZWQgdmlhIFNJR1VTUjIsIHdoaWNoIGluc3RydWN0 cyB0aGUgY2hlY2twb2ludGVyIHRvIGV4aXQoMCkuCisgKiBleGVjdXRlIHRoZSBzaHV0ZG93 biBjaGVja3BvaW50IGJ5IFNJR0lOVCwgd2hpY2ggcmFpc2VzIHRoZQorICogSU5URVJSVVBU X1NIVVRET1dOX1hMT0cgaW50ZXJydXB0LiAgQWZ0ZXIgdGhhdCBjaGVja3BvaW50ZXIgd2Fp dHMKKyAqIHRvIGJlIHRlcm1pbmF0ZWQgdmlhIFNJR1VTUjIsIHJhaXNpbmcgSU5URVJSVVBf VEVSTUlOQVRFLCB3aGljaCBpbnN0cnVjdHMKKyAqIHRoZSBjaGVja3BvaW50ZXIgdG8gZXhp dCgwKS4KICAqIEFsbCBiYWNrZW5kcyBtdXN0IGJlIHN0b3BwZWQgYmVmb3JlIFNJR0lOVCBv ciBTSUdVU1IyIGlzIGlzc3VlZCEKICAqCiAgKiBFbWVyZ2VuY3kgdGVybWluYXRpb24gaXMg YnkgU0lHUVVJVDsgbGlrZSBhbnkgYmFja2VuZCwgdGhlIGNoZWNrcG9pbnRlcgpAQCAtODcs MTAgKzg5LDExIEBACiAgKiBUaGUgYWxnb3JpdGhtIGZvciBiYWNrZW5kcyBpczoKICAqCTEu IFJlY29yZCBjdXJyZW50IHZhbHVlcyBvZiBja3B0X2ZhaWxlZCBhbmQgY2twdF9zdGFydGVk LCBhbmQKICAqCSAgIHNldCByZXF1ZXN0IGZsYWdzLCB3aGlsZSBob2xkaW5nIGNrcHRfbGNr LgotICoJMi4gU2VuZCBzaWduYWwgdG8gcmVxdWVzdCBjaGVja3BvaW50LgorICoJMi4gU2Vu ZCBJTlRFUlJVUFRfV0FJVF9XQUtFVVAgdG8gd2FrZSB1cCB0aGUgY2hlY2twb2ludGVyLgog ICoJMy4gU2xlZXAgdW50aWwgY2twdF9zdGFydGVkIGNoYW5nZXMuICBOb3cgeW91IGtub3cg YSBjaGVja3BvaW50IGhhcwogICoJICAgYmVndW4gc2luY2UgeW91IHN0YXJ0ZWQgdGhpcyBh bGdvcml0aG0gKGFsdGhvdWdoICpub3QqIHRoYXQgaXQgd2FzCi0gKgkgICBzcGVjaWZpY2Fs bHkgaW5pdGlhdGVkIGJ5IHlvdXIgc2lnbmFsKSwgYW5kIHRoYXQgaXQgaXMgdXNpbmcgeW91 ciBmbGFncy4KKyAqCSAgIHNwZWNpZmljYWxseSBpbml0aWF0ZWQgYnkgeW91ciBpbnRlcnJ1 cHQpLCBhbmQgdGhhdCBpdCBpcyB1c2luZyB5b3VyCisgKgkgICBmbGFncy4KICAqCTQuIFJl Y29yZCBuZXcgdmFsdWUgb2YgY2twdF9zdGFydGVkLgogICoJNS4gU2xlZXAgdW50aWwgY2tw dF9kb25lID49IHNhdmVkIHZhbHVlIG9mIGNrcHRfc3RhcnRlZC4gIChVc2UgbW9kdWxvCiAg KgkgICBhcml0aG1ldGljIGhlcmUgaW4gY2FzZSBjb3VudGVycyB3cmFwIGFyb3VuZC4pICBO b3cgeW91IGtub3cgYQpAQCAtMTczLDcgKzE3Niw2IEBAIGRvdWJsZQkJQ2hlY2tQb2ludENv bXBsZXRpb25UYXJnZXQgPSAwLjk7CiAgKiBQcml2YXRlIHN0YXRlCiAgKi8KIHN0YXRpYyBi b29sIGNrcHRfYWN0aXZlID0gZmFsc2U7Ci1zdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190 IFNodXRkb3duWExPR1BlbmRpbmcgPSBmYWxzZTsKIAogLyogdGhlc2UgdmFsdWVzIGFyZSB2 YWxpZCB3aGVuIGNrcHRfYWN0aXZlIGlzIHRydWU6ICovCiBzdGF0aWMgcGdfdGltZV90IGNr cHRfc3RhcnRfdGltZTsKQEAgLTE4NSw3ICsxODcsNyBAQCBzdGF0aWMgcGdfdGltZV90IGxh c3RfeGxvZ19zd2l0Y2hfdGltZTsKIAogLyogUHJvdG90eXBlcyBmb3IgcHJpdmF0ZSBmdW5j dGlvbnMgKi8KIAotc3RhdGljIHZvaWQgUHJvY2Vzc0NoZWNrcG9pbnRlckludGVycnVwdHMo dm9pZCk7CitzdGF0aWMgdm9pZCBQcm9jZXNzQ2hlY2twb2ludGVyQ29uZmlnUmVsb2FkSW50 ZXJydXB0KHZvaWQpOwogc3RhdGljIHZvaWQgQ2hlY2tBcmNoaXZlVGltZW91dCh2b2lkKTsK IHN0YXRpYyBib29sIElzQ2hlY2twb2ludE9uU2NoZWR1bGUoZG91YmxlIHByb2dyZXNzKTsK IHN0YXRpYyBib29sIEZhc3RDaGVja3BvaW50UmVxdWVzdGVkKHZvaWQpOwpAQCAtMjE1LDIy ICsyMTcsMjggQEAgQ2hlY2twb2ludGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEs IHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCUNoZWNrcG9pbnRlclNobWVtLT5jaGVja3Bv aW50ZXJfcGlkID0gTXlQcm9jUGlkOwogCiAJLyoKLQkgKiBQcm9wZXJseSBhY2NlcHQgb3Ig aWdub3JlIHNpZ25hbHMgdGhlIHBvc3RtYXN0ZXIgbWlnaHQgc2VuZCB1cwotCSAqCi0JICog Tm90ZTogd2UgZGVsaWJlcmF0ZWx5IGlnbm9yZSBTSUdURVJNLCBiZWNhdXNlIGR1cmluZyBh IHN0YW5kYXJkIFVuaXgKLQkgKiBzeXN0ZW0gc2h1dGRvd24gY3ljbGUsIGluaXQgd2lsbCBT SUdURVJNIGFsbCBwcm9jZXNzZXMgYXQgb25jZS4gIFdlCi0JICogd2FudCB0byB3YWl0IGZv ciB0aGUgYmFja2VuZHMgdG8gZXhpdCwgd2hlcmV1cG9uIHRoZSBwb3N0bWFzdGVyIHdpbGwK LQkgKiB0ZWxsIHVzIGl0J3Mgb2theSB0byBzaHV0IGRvd24gKHZpYSBTSUdVU1IyKS4KKwkg KiBJZ25vcmUgU0lHVEVSTSwgYmVjYXVzZSBkdXJpbmcgYSBzdGFuZGFyZCBVbml4IHN5c3Rl bSBzaHV0ZG93biBjeWNsZSwKKwkgKiBpbml0IHdpbGwgU0lHVEVSTSBhbGwgcHJvY2Vzc2Vz IGF0IG9uY2UuICBXZSB3YW50IHRvIHdhaXQgZm9yIHRoZQorCSAqIGJhY2tlbmRzIHRvIGV4 aXQsIHdoZXJldXBvbiB0aGUgcG9zdG1hc3RlciB3aWxsIHRlbGwgdXMgaXQncyBva2F5IHRv CisJICogc2h1dCBkb3duICh2aWEgSU5URVJSVVBUX1NIVVRET1dOX1hMT0cpLgorCSAqLwor CXBxc2lnbmFsKFNJR1RFUk0sIFBHX1NJR19JR04pOworCisJLyoKKwkgKiBQb3N0bWFzdGVy IHVzZXMgU0lHSU5UIHRvIHNlbmQgdXMgSU5URVJSVVBUX1NIVVRET1dOX1hMT0csIGFuZCBT SUdVU1IyCisJICogZm9yIElOVEVSUlVQX1RFUk1JTkFURQogCSAqLwotCXBxc2lnbmFsKFNJ R0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7CiAJcHFzaWduYWwoU0lHSU5U LCBSZXFTaHV0ZG93blhMT0cpOwotCXBxc2lnbmFsKFNJR1RFUk0sIFBHX1NJR19JR04pOwkv KiBpZ25vcmUgU0lHVEVSTSAqLwotCS8qIFNJR1FVSVQgaGFuZGxlciB3YXMgYWxyZWFkeSBz ZXQgdXAgYnkgSW5pdFBvc3RtYXN0ZXJDaGlsZCAqLwotCXBxc2lnbmFsKFNJR0FMUk0sIFBH X1NJR19JR04pOwotCXBxc2lnbmFsKFNJR1BJUEUsIFBHX1NJR19JR04pOwotCXBxc2lnbmFs KFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKIAlwcXNpZ25hbChTSUdV U1IyLCBTaWduYWxIYW5kbGVyRm9yU2h1dGRvd25SZXF1ZXN0KTsKIAorCS8qIFNldCB1cCBp bnRlcnJ1cHQgaGFuZGxpbmcgKi8KKwlTZXRTdGFuZGFyZEludGVycnVwdEhhbmRsZXJzKCk7 CisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCwgUHJvY2Vz c0NoZWNrcG9pbnRlckNvbmZpZ1JlbG9hZEludGVycnVwdCk7CisJRW5hYmxlSW50ZXJydXB0 KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKTsKKworCS8qIHdlIHdpbGwgY2hlY2sgZm9yIElO VEVSUlVQVF9URVJNSU5BVEUgZXhwbGljaXRseSBpbiB0aGUgbG9vcCAqLworCURpc2FibGVJ bnRlcnJ1cHQoSU5URVJSVVBUX1RFUk1JTkFURSk7CisKIAkvKgogCSAqIEluaXRpYWxpemUg c28gdGhhdCBmaXJzdCB0aW1lLWRyaXZlbiBldmVudCBoYXBwZW5zIGF0IHRoZSBjb3JyZWN0 IHRpbWUuCiAJICovCkBAIC0zNjksMTUgKzM3NywxNSBAQCBDaGVja3BvaW50ZXJNYWluKGNv bnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCWJv b2wJCWNoa3B0X29yX3JzdHB0X3RpbWVkID0gZmFsc2U7CiAKIAkJLyogQ2xlYXIgYW55IGFs cmVhZHktcGVuZGluZyB3YWtldXBzICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNs ZWFySW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAKIAkJLyoKLQkJICogUHJv Y2VzcyBhbnkgcmVxdWVzdHMgb3Igc2lnbmFscyByZWNlaXZlZCByZWNlbnRseS4KKwkJICog UHJvY2VzcyBhbnkgcmVxdWVzdHMgb3IgaW50ZXJydXB0cyByZWNlaXZlZCByZWNlbnRseS4K IAkJICovCiAJCUFic29yYlN5bmNSZXF1ZXN0cygpOwogCi0JCVByb2Nlc3NDaGVja3BvaW50 ZXJJbnRlcnJ1cHRzKCk7Ci0JCWlmIChTaHV0ZG93blhMT0dQZW5kaW5nIHx8IFNodXRkb3du UmVxdWVzdFBlbmRpbmcpCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCWlmIChJbnRl cnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9TSFVURE9XTl9YTE9HKSB8fCBJbnRlcnJ1cHRQZW5k aW5nKElOVEVSUlVQVF9URVJNSU5BVEUpKQogCQkJYnJlYWs7CiAKIAkJLyoKQEAgLTU1MSwx MCArNTU5LDEwIEBAIENoZWNrcG9pbnRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRh LCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAogCQkJLyoKIAkJCSAqIFdlIG1heSBoYXZl IHJlY2VpdmVkIGFuIGludGVycnVwdCBkdXJpbmcgdGhlIGNoZWNrcG9pbnQgYW5kIHRoZQot CQkJICogbGF0Y2ggbWlnaHQgaGF2ZSBiZWVuIHJlc2V0IChlLmcuIGluIENoZWNrcG9pbnRX cml0ZURlbGF5KS4KKwkJCSAqIGludGVycnVwdCBtaWdodCBoYXZlIGJlZW4gcmVzZXQgKGUu Zy4gaW4gQ2hlY2twb2ludFdyaXRlRGVsYXkpLgogCQkJICovCi0JCQlQcm9jZXNzQ2hlY2tw b2ludGVySW50ZXJydXB0cygpOwotCQkJaWYgKFNodXRkb3duWExPR1BlbmRpbmcgfHwgU2h1 dGRvd25SZXF1ZXN0UGVuZGluZykKKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCQlp ZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfU0hVVERPV05fWExPRykgfHwgSW50ZXJy dXB0UGVuZGluZyhJTlRFUlJVUFRfVEVSTUlOQVRFKSkKIAkJCQlicmVhazsKIAkJfQogCkBA IC01NzksNyArNTg3LDcgQEAgQ2hlY2twb2ludGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVw X2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkJY29udGludWU7CiAKIAkJLyoK LQkJICogU2xlZXAgdW50aWwgd2UgYXJlIHNpZ25hbGVkIG9yIGl0J3MgdGltZSBmb3IgYW5v dGhlciBjaGVja3BvaW50IG9yCisJCSAqIFNsZWVwIHVudGlsIHdlIGFyZSB3b2tlbiB1cCBv ciBpdCdzIHRpbWUgZm9yIGFub3RoZXIgY2hlY2twb2ludCBvcgogCQkgKiB4bG9nIGZpbGUg c3dpdGNoLgogCQkgKi8KIAkJbm93ID0gKHBnX3RpbWVfdCkgdGltZShOVUxMKTsKQEAgLTU5 NSwxMCArNjAzLDEzIEBAIENoZWNrcG9pbnRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9k YXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJCWN1cl90aW1lb3V0ID0gTWluKGN1 cl90aW1lb3V0LCBYTG9nQXJjaGl2ZVRpbWVvdXQgLSBlbGFwc2VkX3NlY3MpOwogCQl9CiAK LQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdM X1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJIGN1cl90aW1lb3V0ICog MTAwMEwgLyogY29udmVydCB0byBtcyAqLyAsCi0JCQkJCQkgV0FJVF9FVkVOVF9DSEVDS1BP SU5URVJfTUFJTik7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0 c01hc2sgfAorCQkJCQkJCSBJTlRFUlJVUFRfV0FJVF9XQUtFVVAgfAorCQkJCQkJCSBJTlRF UlJVUFRfU0hVVERPV05fWExPRyB8CisJCQkJCQkJIElOVEVSUlVQVF9URVJNSU5BVEUsCisJ CQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRI LAorCQkJCQkJCSBjdXJfdGltZW91dCAqIDEwMDBMIC8qIGNvbnZlcnQgdG8gbXMgKi8gLAor CQkJCQkJCSBXQUlUX0VWRU5UX0NIRUNLUE9JTlRFUl9NQUlOKTsKIAl9CiAKIAkvKgpAQCAt NjA3LDcgKzYxOCw3IEBAIENoZWNrcG9pbnRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9k YXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkgKi8KIAlFeGl0T25BbnlFcnJvciA9 IHRydWU7CiAKLQlpZiAoU2h1dGRvd25YTE9HUGVuZGluZykKKwlpZiAoSW50ZXJydXB0UGVu ZGluZyhJTlRFUlJVUFRfU0hVVERPV05fWExPRykpCiAJewogCQkvKgogCQkgKiBDbG9zZSBk b3duIHRoZSBkYXRhYmFzZS4KQEAgLTYyNSw3ICs2MzYsNyBAQCBDaGVja3BvaW50ZXJNYWlu KGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJ CSAqIFRlbGwgcG9zdG1hc3RlciB0aGF0IHdlJ3JlIGRvbmUuCiAJCSAqLwogCQlTZW5kUG9z dG1hc3RlclNpZ25hbChQTVNJR05BTF9YTE9HX0lTX1NIVVRET1dOKTsKLQkJU2h1dGRvd25Y TE9HUGVuZGluZyA9IGZhbHNlOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfU0hVVERP V05fWExPRyk7CiAJfQogCiAJLyoKQEAgLTYzNSw1NSArNjQ2LDM4IEBAIENoZWNrcG9pbnRl ck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xl bikKIAkgKi8KIAlmb3IgKDs7KQogCXsKLQkJLyogQ2xlYXIgYW55IGFscmVhZHktcGVuZGlu ZyB3YWtldXBzICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7Ci0KLQkJUHJvY2Vzc0NoZWNr cG9pbnRlckludGVycnVwdHMoKTsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQlp ZiAoU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwkJaWYgKEludGVycnVwdFBlbmRpbmcoSU5U RVJSVVBUX1RFUk1JTkFURSkpCiAJCQlicmVhazsKIAotCQkodm9pZCkgV2FpdExhdGNoKE15 TGF0Y2gsCi0JCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJ CQkJCSAwLAotCQkJCQkJIFdBSVRfRVZFTlRfQ0hFQ0tQT0lOVEVSX1NIVVRET1dOKTsKKwkJ KHZvaWQpIFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkJ IElOVEVSUlVQVF9URVJNSU5BVEUsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsCisJCQkJCQkJIDAsCisJCQkJCQkJIFdBSVRfRVZFTlRfQ0hFQ0tQT0lO VEVSX1NIVVRET1dOKTsKIAl9CiAKIAkvKiBOb3JtYWwgZXhpdCBmcm9tIHRoZSBjaGVja3Bv aW50ZXIgaXMgaGVyZSAqLwogCXByb2NfZXhpdCgwKTsJCQkJLyogZG9uZSAqLwogfQogCi0v KgotICogUHJvY2VzcyBhbnkgbmV3IGludGVycnVwdHMuCi0gKi8KIHN0YXRpYyB2b2lkCi1Q cm9jZXNzQ2hlY2twb2ludGVySW50ZXJydXB0cyh2b2lkKQorUHJvY2Vzc0NoZWNrcG9pbnRl ckNvbmZpZ1JlbG9hZEludGVycnVwdCh2b2lkKQogewotCWlmIChQcm9jU2lnbmFsQmFycmll clBlbmRpbmcpCi0JCVByb2Nlc3NQcm9jU2lnbmFsQmFycmllcigpOwotCi0JaWYgKENvbmZp Z1JlbG9hZFBlbmRpbmcpCi0JewotCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7Ci0J CVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOworCVByb2Nlc3NDb25maWdGaWxlKFBH Q19TSUdIVVApOwogCi0JCS8qCi0JCSAqIENoZWNrcG9pbnRlciBpcyB0aGUgbGFzdCBwcm9j ZXNzIHRvIHNodXQgZG93biwgc28gd2UgYXNrIGl0IHRvIGhvbGQKLQkJICogdGhlIGtleXMg Zm9yIGEgcmFuZ2Ugb2Ygb3RoZXIgdGFza3MgcmVxdWlyZWQgbW9zdCBvZiB3aGljaCBoYXZl Ci0JCSAqIG5vdGhpbmcgdG8gZG8gd2l0aCBjaGVja3BvaW50aW5nIGF0IGFsbC4KLQkJICoK LQkJICogRm9yIHZhcmlvdXMgcmVhc29ucywgc29tZSBjb25maWcgdmFsdWVzIGNhbiBjaGFu Z2UgZHluYW1pY2FsbHkgc28KLQkJICogdGhlIHByaW1hcnkgY29weSBvZiB0aGVtIGlzIGhl bGQgaW4gc2hhcmVkIG1lbW9yeSB0byBtYWtlIHN1cmUgYWxsCi0JCSAqIGJhY2tlbmRzIHNl ZSB0aGUgc2FtZSB2YWx1ZS4gIFdlIG1ha2UgQ2hlY2twb2ludGVyIHJlc3BvbnNpYmxlIGZv cgotCQkgKiB1cGRhdGluZyB0aGUgc2hhcmVkIG1lbW9yeSBjb3B5IGlmIHRoZSBwYXJhbWV0 ZXIgc2V0dGluZyBjaGFuZ2VzCi0JCSAqIGJlY2F1c2Ugb2YgU0lHSFVQLgotCQkgKi8KLQkJ VXBkYXRlU2hhcmVkTWVtb3J5Q29uZmlnKCk7Ci0JfQotCi0JLyogUGVyZm9ybSBsb2dnaW5n IG9mIG1lbW9yeSBjb250ZXh0cyBvZiB0aGlzIHByb2Nlc3MgKi8KLQlpZiAoTG9nTWVtb3J5 Q29udGV4dFBlbmRpbmcpCi0JCVByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7 CisJLyoKKwkgKiBDaGVja3BvaW50ZXIgaXMgdGhlIGxhc3QgcHJvY2VzcyB0byBzaHV0IGRv d24sIHNvIHdlIGFzayBpdCB0byBob2xkIHRoZQorCSAqIGtleXMgZm9yIGEgcmFuZ2Ugb2Yg b3RoZXIgdGFza3MgcmVxdWlyZWQgbW9zdCBvZiB3aGljaCBoYXZlIG5vdGhpbmcgdG8KKwkg KiBkbyB3aXRoIGNoZWNrcG9pbnRpbmcgYXQgYWxsLgorCSAqCisJICogRm9yIHZhcmlvdXMg cmVhc29ucywgc29tZSBjb25maWcgdmFsdWVzIGNhbiBjaGFuZ2UgZHluYW1pY2FsbHkgc28g dGhlCisJICogcHJpbWFyeSBjb3B5IG9mIHRoZW0gaXMgaGVsZCBpbiBzaGFyZWQgbWVtb3J5 IHRvIG1ha2Ugc3VyZSBhbGwgYmFja2VuZHMKKwkgKiBzZWUgdGhlIHNhbWUgdmFsdWUuICBX ZSBtYWtlIENoZWNrcG9pbnRlciByZXNwb25zaWJsZSBmb3IgdXBkYXRpbmcgdGhlCisJICog c2hhcmVkIG1lbW9yeSBjb3B5IGlmIHRoZSBwYXJhbWV0ZXIgc2V0dGluZyBjaGFuZ2VzIGJl Y2F1c2Ugb2YgU0lHSFVQLgorCSAqLworCVVwZGF0ZVNoYXJlZE1lbW9yeUNvbmZpZygpOwog fQogCiAvKgpAQCAtNzk1LDI0ICs3ODksMTggQEAgQ2hlY2twb2ludFdyaXRlRGVsYXkoaW50 IGZsYWdzLCBkb3VibGUgcHJvZ3Jlc3MpCiAJaWYgKCFBbUNoZWNrcG9pbnRlclByb2Nlc3Mo KSkKIAkJcmV0dXJuOwogCisJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwogCS8qCiAJICog UGVyZm9ybSB0aGUgdXN1YWwgZHV0aWVzIGFuZCB0YWtlIGEgbmFwLCB1bmxlc3Mgd2UncmUg YmVoaW5kIHNjaGVkdWxlLAogCSAqIGluIHdoaWNoIGNhc2Ugd2UganVzdCB0cnkgdG8gY2F0 Y2ggdXAgYXMgcXVpY2tseSBhcyBwb3NzaWJsZS4KIAkgKi8KIAlpZiAoIShmbGFncyAmIENI RUNLUE9JTlRfRkFTVCkgJiYKLQkJIVNodXRkb3duWExPR1BlbmRpbmcgJiYKLQkJIVNodXRk b3duUmVxdWVzdFBlbmRpbmcgJiYKKwkJIUludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1NI VVRET1dOX1hMT0cpICYmCisJCSFJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9URVJNSU5B VEUpICYmCiAJCSFGYXN0Q2hlY2twb2ludFJlcXVlc3RlZCgpICYmCiAJCUlzQ2hlY2twb2lu dE9uU2NoZWR1bGUocHJvZ3Jlc3MpKQogCXsKLQkJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcp Ci0JCXsKLQkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKLQkJCVByb2Nlc3NDb25m aWdGaWxlKFBHQ19TSUdIVVApOwotCQkJLyogdXBkYXRlIHNobWVtIGNvcGllcyBvZiBjb25m aWcgdmFyaWFibGVzICovCi0JCQlVcGRhdGVTaGFyZWRNZW1vcnlDb25maWcoKTsKLQkJfQot CiAJCUFic29yYlN5bmNSZXF1ZXN0cygpOwogCQlhYnNvcmJfY291bnRlciA9IFdSSVRFU19Q RVJfQUJTT1JCOwogCkBAIC04MjcsMTAgKzgxNSwxMiBAQCBDaGVja3BvaW50V3JpdGVEZWxh eShpbnQgZmxhZ3MsIGRvdWJsZSBwcm9ncmVzcykKIAkJICogQ2hlY2twb2ludGVyIGFuZCBi Z3dyaXRlciBhcmUgbm8gbG9uZ2VyIHJlbGF0ZWQgc28gdGFrZSB0aGUgQmlnCiAJCSAqIFNs ZWVwLgogCQkgKi8KLQkJV2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VY SVRfT05fUE1fREVBVEggfCBXTF9USU1FT1VULAotCQkJCSAgMTAwLAotCQkJCSAgV0FJVF9F VkVOVF9DSEVDS1BPSU5UX1dSSVRFX0RFTEFZKTsKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsK KwkJV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkJICBJTlRF UlJVUFRfV0FJVF9XQUtFVVAsCisJCQkJCSAgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSCB8IFdMX1RJTUVPVVQsCisJCQkJCSAgMTAwLAorCQkJCQkgIFdBSVRfRVZFTlRf Q0hFQ0tQT0lOVF9XUklURV9ERUxBWSk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9X QUlUX1dBS0VVUCk7CiAJfQogCWVsc2UgaWYgKC0tYWJzb3JiX2NvdW50ZXIgPD0gMCkKIAl7 CkBAIC04NDIsMTAgKzgzMiw2IEBAIENoZWNrcG9pbnRXcml0ZURlbGF5KGludCBmbGFncywg ZG91YmxlIHByb2dyZXNzKQogCQlBYnNvcmJTeW5jUmVxdWVzdHMoKTsKIAkJYWJzb3JiX2Nv dW50ZXIgPSBXUklURVNfUEVSX0FCU09SQjsKIAl9Ci0KLQkvKiBDaGVjayBmb3IgYmFycmll ciBldmVudHMuICovCi0JaWYgKFByb2NTaWduYWxCYXJyaWVyUGVuZGluZykKLQkJUHJvY2Vz c1Byb2NTaWduYWxCYXJyaWVyKCk7CiB9CiAKIC8qCkBAIC05MzQsMTIgKzkyMCwxMSBAQCBJ c0NoZWNrcG9pbnRPblNjaGVkdWxlKGRvdWJsZSBwcm9ncmVzcykKICAqIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIAotLyogU0lHSU5UOiBzZXQgZmxhZyB0byB0 cmlnZ2VyIHdyaXRpbmcgb2Ygc2h1dGRvd24gY2hlY2twb2ludCAqLworLyogU0lHSU5UOiBy YWlzZSBpbnRlcnJ1cHQgdG8gdHJpZ2dlciB3cml0aW5nIG9mIHNodXRkb3duIGNoZWNrcG9p bnQgKi8KIHN0YXRpYyB2b2lkCiBSZXFTaHV0ZG93blhMT0coU0lHTkFMX0FSR1MpCiB7Ci0J U2h1dGRvd25YTE9HUGVuZGluZyA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFp c2VJbnRlcnJ1cHQoSU5URVJSVVBUX1NIVVRET1dOX1hMT0cpOwogfQogCiAKQEAgLTEwOTcs MTQgKzEwODIsMTUgQEAgUmVxdWVzdENoZWNrcG9pbnQoaW50IGZsYWdzKQogCVNwaW5Mb2Nr UmVsZWFzZSgmQ2hlY2twb2ludGVyU2htZW0tPmNrcHRfbGNrKTsKIAogCS8qCi0JICogU2V0 IGNoZWNrcG9pbnRlcidzIGxhdGNoIHRvIHJlcXVlc3QgY2hlY2twb2ludC4gIEl0J3MgcG9z c2libGUgdGhhdCB0aGUKLQkgKiBjaGVja3BvaW50ZXIgaGFzbid0IHN0YXJ0ZWQgeWV0LCBz byB3ZSB3aWxsIHJldHJ5IGEgZmV3IHRpbWVzIGlmCi0JICogbmVlZGVkLiAgKEFjdHVhbGx5 LCBtb3JlIHRoYW4gYSBmZXcgdGltZXMsIHNpbmNlIG9uIHNsb3cgb3Igb3ZlcmxvYWRlZAot CSAqIGJ1aWxkZmFybSBtYWNoaW5lcywgaXQncyBiZWVuIG9ic2VydmVkIHRoYXQgdGhlIGNo ZWNrcG9pbnRlciBjYW4gdGFrZQotCSAqIHNldmVyYWwgc2Vjb25kcyB0byBzdGFydC4pICBI b3dldmVyLCBpZiBub3QgdG9sZCB0byB3YWl0IGZvciB0aGUKLQkgKiBjaGVja3BvaW50IHRv IG9jY3VyLCB3ZSBjb25zaWRlciBmYWlsdXJlIHRvIHNldCB0aGUgbGF0Y2ggdG8gYmUKLQkg KiBub25mYXRhbCBhbmQgbWVyZWx5IExPRyBpdC4gIFRoZSBjaGVja3BvaW50ZXIgc2hvdWxk IHNlZSB0aGUgcmVxdWVzdAotCSAqIHdoZW4gaXQgZG9lcyBzdGFydCwgd2l0aCBvciB3aXRo b3V0IHRoZSBTZXRMYXRjaCgpLgorCSAqIFNlbmQgSU5URVJSVVBUX1dBSVRfV0FLRVVQIHRv IHdha2UgdXAgdGhlIGNoZWNrcG9pbnRlci4gIEl0J3MgcG9zc2libGUKKwkgKiB0aGF0IHRo ZSBjaGVja3BvaW50ZXIgaGFzbid0IHN0YXJ0ZWQgeWV0LCBzbyB3ZSB3aWxsIHJldHJ5IGEg ZmV3IHRpbWVzCisJICogaWYgbmVlZGVkLiAgKEFjdHVhbGx5LCBtb3JlIHRoYW4gYSBmZXcg dGltZXMsIHNpbmNlIG9uIHNsb3cgb3IKKwkgKiBvdmVybG9hZGVkIGJ1aWxkZmFybSBtYWNo aW5lcywgaXQncyBiZWVuIG9ic2VydmVkIHRoYXQgdGhlIGNoZWNrcG9pbnRlcgorCSAqIGNh biB0YWtlIHNldmVyYWwgc2Vjb25kcyB0byBzdGFydC4pICBIb3dldmVyLCBpZiBub3QgdG9s ZCB0byB3YWl0IGZvcgorCSAqIHRoZSBjaGVja3BvaW50IHRvIG9jY3VyLCB3ZSBjb25zaWRl ciBmYWlsdXJlIHRvIHdha2UgdXAgdGhlCisJICogY2hlY2twb2ludGVyIHRvIGJlIG5vbmZh dGFsIGFuZCBtZXJlbHkgTE9HIGl0LiAgVGhlIGNoZWNrcG9pbnRlciBzaG91bGQKKwkgKiBz ZWUgdGhlIHJlcXVlc3Qgd2hlbiBpdCBkb2VzIHN0YXJ0LCB3aXRoIG9yIHdpdGhvdXQgdGhl CisJICogU2VuZEludGVycnVwdCgpLgogCSAqLwogI2RlZmluZSBNQVhfU0lHTkFMX1RSSUVT IDYwMAkvKiBtYXggd2FpdCA2MC4wIHNlYyAqLwogCWZvciAobnRyaWVzID0gMDs7IG50cmll cysrKQpAQCAtMTEyMyw3ICsxMTA5LDcgQEAgUmVxdWVzdENoZWNrcG9pbnQoaW50IGZsYWdz KQogCQl9CiAJCWVsc2UKIAkJewotCQkJU2V0TGF0Y2goJkdldFBHUHJvY0J5TnVtYmVyKGNo ZWNrcG9pbnRlclByb2MpLT5wcm9jTGF0Y2gpOworCQkJU2VuZEludGVycnVwdChJTlRFUlJV UFRfV0FJVF9XQUtFVVAsIGNoZWNrcG9pbnRlclByb2MpOwogCQkJLyogbm90aWZpZWQgc3Vj Y2Vzc2Z1bGx5ICovCiAJCQlicmVhazsKIAkJfQpAQCAtMTI1NCw3ICsxMjQwLDcgQEAgRm9y d2FyZFN5bmNSZXF1ZXN0KGNvbnN0IEZpbGVUYWcgKmZ0YWcsIFN5bmNSZXF1ZXN0VHlwZSB0 eXBlKQogCQlQcm9jTnVtYmVyCWNoZWNrcG9pbnRlclByb2MgPSBwZ19hdG9taWNfcmVhZF91 MzIoJlByb2NHbG9iYWwtPmNoZWNrcG9pbnRlclByb2MpOwogCiAJCWlmIChjaGVja3BvaW50 ZXJQcm9jICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCi0JCQlTZXRMYXRjaCgmR2V0UEdQcm9j QnlOdW1iZXIoY2hlY2twb2ludGVyUHJvYyktPnByb2NMYXRjaCk7CisJCQlTZW5kSW50ZXJy dXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgY2hlY2twb2ludGVyUHJvYyk7CiAJfQogCiAJ cmV0dXJuIHRydWU7CkBAIC0xNTM1LDUgKzE1MjEsNSBAQCBXYWtldXBDaGVja3BvaW50ZXIo dm9pZCkKIAlQcm9jTnVtYmVyCWNoZWNrcG9pbnRlclByb2MgPSBwZ19hdG9taWNfcmVhZF91 MzIoJnByb2NnbG9iYWwtPmNoZWNrcG9pbnRlclByb2MpOwogCiAJaWYgKGNoZWNrcG9pbnRl clByb2MgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKLQkJU2V0TGF0Y2goJkdldFBHUHJvY0J5 TnVtYmVyKGNoZWNrcG9pbnRlclByb2MpLT5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJydXB0 KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgY2hlY2twb2ludGVyUHJvYyk7CiB9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2RhdGFjaGVja3N1bV9zdGF0ZS5jIGIvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9kYXRhY2hlY2tzdW1fc3RhdGUuYwppbmRleCAwMzcxN2E4 YjAwOC4uNmY5NGQ3ZDZiZTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv ZGF0YWNoZWNrc3VtX3N0YXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9kYXRh Y2hlY2tzdW1fc3RhdGUuYwpAQCAtMTg2LDYgKzE4Niw4IEBACiAgKi8KICNpbmNsdWRlICJw b3N0Z3Jlcy5oIgogCisjaW5jbHVkZSA8c2lnbmFsLmg+CisKICNpbmNsdWRlICJhY2Nlc3Mv Z2VuYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCiAjaW5jbHVkZSAiYWNjZXNz L2h0dXBfZGV0YWlscy5oIgpAQCAtMjA2LDEwICsyMDgsOCBAQAogI2luY2x1ZGUgInN0b3Jh Z2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9jaGVja3N1bS5oIgogI2luY2x1ZGUg InN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUg InN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCi0jaW5jbHVk ZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNp bmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMu aCIKQEAgLTM2OCw5ICszNjgsNiBAQCB0eXBlZGVmIHN0cnVjdCBEYXRhQ2hlY2tzdW1zV29y a2VyRGF0YWJhc2UKIAljaGFyCSAgICpkYm5hbWU7CiB9IERhdGFDaGVja3N1bXNXb3JrZXJE YXRhYmFzZTsKIAotLyogRmxhZyBzZXQgYnkgdGhlIGludGVycnVwdCBoYW5kbGVyICovCi1z dGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IGFib3J0X3JlcXVlc3RlZCA9IGZhbHNlOwot CiBzdGF0aWMgdWludDY0IHdvcmtlcl9pbnZvY2F0aW9uOwogCiAvKgpAQCAtMzk0LDcgKzM5 MSw2IEBAIHN0YXRpYyB2b2lkIEZyZWVEYXRhYmFzZUxpc3QoTGlzdCAqZGJsaXN0KTsKIHN0 YXRpYyBEYXRhQ2hlY2tzdW1zV29ya2VyUmVzdWx0IFByb2Nlc3NEYXRhYmFzZShEYXRhQ2hl Y2tzdW1zV29ya2VyRGF0YWJhc2UgKmRiKTsKIHN0YXRpYyBib29sIFByb2Nlc3NBbGxEYXRh YmFzZXModm9pZCk7CiBzdGF0aWMgYm9vbCBQcm9jZXNzU2luZ2xlUmVsYXRpb25Gb3JrKFJl bGF0aW9uIHJlbG4sIEZvcmtOdW1iZXIgZm9ya051bSwgQnVmZmVyQWNjZXNzU3RyYXRlZ3kg c3RyYXRlZ3kpOwotc3RhdGljIHZvaWQgbGF1bmNoZXJfY2FuY2VsX2hhbmRsZXIoU0lHTkFM X0FSR1MpOwogc3RhdGljIHZvaWQgV2FpdEZvckFsbFRyYW5zYWN0aW9uc1RvRmluaXNoKHZv aWQpOwogCiBjb25zdCBTaG1lbUNhbGxiYWNrcyBEYXRhQ2hlY2tzdW1zU2htZW1DYWxsYmFj a3MgPSB7CkBAIC00MDYsNyArNDAyLDcgQEAgY29uc3QgU2htZW1DYWxsYmFja3MgRGF0YUNo ZWNrc3Vtc1NobWVtQ2FsbGJhY2tzID0gewogCQlBc3NlcnQoTXlCYWNrZW5kVHlwZSA9PSBC X0RBVEFDSEVDS1NVTVNXT1JLRVJfTEFVTkNIRVIpOwlcCiAJCUxXTG9ja0FjcXVpcmUoRGF0 YUNoZWNrc3Vtc1dvcmtlckxvY2ssIExXX1NIQVJFRCk7CQkJXAogCQlpZiAoRGF0YUNoZWNr c3VtU3RhdGUtPmxhdW5jaF9vcGVyYXRpb24gIT0gb3BlcmF0aW9uKSAJCVwKLQkJCWFib3J0 X3JlcXVlc3RlZCA9IHRydWU7CQkJCQkJCQkJXAorCQkJUmFpc2VJbnRlcnJ1cHQoSU5URVJS VVBUX1FVRVJZX0NBTkNFTCk7CQkJCQlcCiAJCUxXTG9ja1JlbGVhc2UoRGF0YUNoZWNrc3Vt c1dvcmtlckxvY2spOwkJCQkJCVwKIAl9IHdoaWxlICgwKQogCkBAIC00MTYsNyArNDEyLDcg QEAgY29uc3QgU2htZW1DYWxsYmFja3MgRGF0YUNoZWNrc3Vtc1NobWVtQ2FsbGJhY2tzID0g ewogCQlMV0xvY2tBY3F1aXJlKERhdGFDaGVja3N1bXNXb3JrZXJMb2NrLCBMV19TSEFSRUQp OwkJCVwKIAkJaWYgKERhdGFDaGVja3N1bVN0YXRlLT53b3JrZXJfaW52b2NhdGlvbiAhPSB3 b3JrZXJfaW52b2NhdGlvbiB8fCBcCiAJCQlEYXRhQ2hlY2tzdW1TdGF0ZS0+bGF1bmNoX29w ZXJhdGlvbiAhPSBvcGVyYXRpb24pIAkJXAotCQkJYWJvcnRfcmVxdWVzdGVkID0gdHJ1ZTsJ CQkJCQkJCQlcCisJCQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMKTsJ CQkJCVwKIAkJTFdMb2NrUmVsZWFzZShEYXRhQ2hlY2tzdW1zV29ya2VyTG9jayk7CQkJCQkJ XAogCX0gd2hpbGUgKDApCiAKQEAgLTc1MCw3ICs3NDYsNyBAQCBQcm9jZXNzU2luZ2xlUmVs YXRpb25Gb3JrKFJlbGF0aW9uIHJlbG4sIEZvcmtOdW1iZXIgZm9ya051bSwgQnVmZmVyQWNj ZXNzU3RyYXRlZwogCQkvKiBDaGVjayBpZiB3ZSBhcmUgYXNrZWQgdG8gYWJvcnQsIHRoZSBh Ym9ydGlvbiB3aWxsIGJ1YmJsZSB1cC4gKi8KIAkJQXNzZXJ0KG9wZXJhdGlvbiA9PSBFTkFC TEVfREFUQUNIRUNLU1VNUyk7CiAJCUNIRUNLX0ZPUl9XT1JLRVJfQUJPUlRfUkVRVUVTVCgp OwotCQlpZiAoYWJvcnRfcmVxdWVzdGVkKQorCQlpZiAoSW50ZXJydXB0UGVuZGluZyhJTlRF UlJVUFRfUVVFUllfQ0FOQ0VMKSkKIAkJCXJldHVybiBmYWxzZTsKIAogCQkvKiB1cGRhdGUg dGhlIGJsb2NrIGNvdW50ZXIgKi8KQEAgLTk2Nyw4ICs5NjMsNiBAQCBQcm9jZXNzRGF0YWJh c2UoRGF0YUNoZWNrc3Vtc1dvcmtlckRhdGFiYXNlICpkYikKIHN0YXRpYyB2b2lkCiBsYXVu Y2hlcl9leGl0KGludCBjb2RlLCBEYXR1bSBhcmcpCiB7Ci0JYWJvcnRfcmVxdWVzdGVkID0g ZmFsc2U7Ci0KIAlpZiAobGF1bmNoZXJfcnVubmluZykKIAl7CiAJCUxXTG9ja0FjcXVpcmUo RGF0YUNoZWNrc3Vtc1dvcmtlckxvY2ssIExXX0VYQ0xVU0lWRSk7CkBAIC05NzYsNyArOTcw LDcgQEAgbGF1bmNoZXJfZXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKQogCQl7CiAJCQllcmVw b3J0KExPRywKIAkJCQkJZXJybXNnKCJkYXRhIGNoZWNrc3VtcyBsYXVuY2hlciBleGl0aW5n IHdoaWxlIHdvcmtlciBpcyBzdGlsbCBydW5uaW5nLCBzaWduYWxsaW5nIHdvcmtlciIpKTsK LQkJCWtpbGwoR2V0UEdQcm9jQnlOdW1iZXIoRGF0YUNoZWNrc3VtU3RhdGUtPndvcmtlcl9w cm9jbm8pLT5waWQsIFNJR1RFUk0pOworCQkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfUVVF UllfQ0FOQ0VMLCBEYXRhQ2hlY2tzdW1TdGF0ZS0+d29ya2VyX3Byb2Nubyk7CiAJCX0KIAkJ TFdMb2NrUmVsZWFzZShEYXRhQ2hlY2tzdW1zV29ya2VyTG9jayk7CiAJfQpAQCAtOTk0LDMx ICs5ODgsNiBAQCBsYXVuY2hlcl9leGl0KGludCBjb2RlLCBEYXR1bSBhcmcpCiAJTFdMb2Nr UmVsZWFzZShEYXRhQ2hlY2tzdW1zV29ya2VyTG9jayk7CiB9CiAKLS8qCi0gKiBsYXVuY2hl cl9jYW5jZWxfaGFuZGxlcgotICoKLSAqIEludGVybmFsIHJvdXRpbmUgZm9yIHJlYWN0aW5n IHRvIFNJR0lOVCBhbmQgZmxhZ2dpbmcgdGhlIHdvcmtlciB0byBhYm9ydC4KLSAqIFRoZSB3 b3JrZXIgd29uJ3QgYmUgaW50ZXJydXB0ZWQgaW1tZWRpYXRlbHkgYnV0IHdpbGwgY2hlY2sg Zm9yIGFib3J0IGZsYWcKLSAqIGJldHdlZW4gZWFjaCBibG9jayBpbiBhIHJlbGF0aW9uLgot ICovCi1zdGF0aWMgdm9pZAotbGF1bmNoZXJfY2FuY2VsX2hhbmRsZXIoU0lHTkFMX0FSR1Mp Ci17Ci0JaW50CQkJc2F2ZV9lcnJubyA9IGVycm5vOwotCi0JYWJvcnRfcmVxdWVzdGVkID0g dHJ1ZTsKLQotCS8qCi0JICogVGhlcmUgaXMgbm8gc2xlZXBpbmcgaW4gdGhlIG1haW4gbG9v cCwgdGhlIGZsYWcgd2lsbCBiZSBjaGVja2VkCi0JICogcGVyaW9kaWNhbGx5IGluIFByb2Nl c3NTaW5nbGVSZWxhdGlvbkZvcmsuIFRoZSB3b3JrZXIgZG9lcyBob3dldmVyCi0JICogc2xl ZXAgd2hlbiB3YWl0aW5nIGZvciBjb25jdXJyZW50IHRyYW5zYWN0aW9ucyB0byBlbmQgc28g d2Ugc3RpbGwgbmVlZAotCSAqIHRvIHNldCB0aGUgbGF0Y2guCi0JICovCi0JU2V0TGF0Y2go TXlMYXRjaCk7Ci0KLQllcnJubyA9IHNhdmVfZXJybm87Ci19Ci0KIC8qCiAgKiBXYWl0Rm9y QWxsVHJhbnNhY3Rpb25zVG9GaW5pc2gKICAqCQlCbG9ja3MgYXdhaXRpbmcgYWxsIGN1cnJl bnQgdHJhbnNhY3Rpb25zIHRvIGZpbmlzaApAQCAtMTA1MSwxMSArMTAyMCwxMSBAQCBXYWl0 Rm9yQWxsVHJhbnNhY3Rpb25zVG9GaW5pc2godm9pZCkKIAkJcGdzdGF0X3JlcG9ydF9hY3Rp dml0eShTVEFURV9SVU5OSU5HLCBhY3Rpdml0eSk7CiAKIAkJLyogUmV0cnkgZXZlcnkgMyBz ZWNvbmRzICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7Ci0JCXJjID0gV2FpdExhdGNoKE15 TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9QT1NUTUFT VEVSX0RFQVRILAotCQkJCQkgICAzMDAwLAotCQkJCQkgICBXQUlUX0VWRU5UX0NIRUNLU1VN X0VOQUJMRV9TVEFSVENPTkRJVElPTik7CisJCXJjID0gV2FpdEludGVycnVwdChDaGVja0Zv ckludGVycnVwdHNNYXNrIHwKKwkJCQkJCSAgIElOVEVSUlVQVF9RVUVSWV9DQU5DRUwsCisJ CQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfUE9TVE1BU1RFUl9ERUFU SCwKKwkJCQkJCSAgIDMwMDAsCisJCQkJCQkgICBXQUlUX0VWRU5UX0NIRUNLU1VNX0VOQUJM RV9TVEFSVENPTkRJVElPTik7CiAKIAkJLyoKIAkJICogSWYgdGhlIHBvc3RtYXN0ZXIgZGll ZCwgYmFpbCBvdXQuICBCdXQgZmlyc3QgcHJpbnQgYSBsb2cgbWVzc2FnZSB0bwpAQCAtMTA3 MCw3ICsxMDM5LDcgQEAgV2FpdEZvckFsbFRyYW5zYWN0aW9uc1RvRmluaXNoKHZvaWQpCiAJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCUNIRUNLX0ZPUl9MQVVOQ0hFUl9BQk9SVF9S RVFVRVNUKCk7CiAKLQkJaWYgKGFib3J0X3JlcXVlc3RlZCkKKwkJaWYgKEludGVycnVwdFBl bmRpbmcoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCkpCiAJCQlicmVhazsKIAl9CiAKQEAgLTEw OTIsMTEgKzEwNjEsNyBAQCBEYXRhQ2hlY2tzdW1zV29ya2VyTGF1bmNoZXJNYWluKERhdHVt IGFyZykKIAllcmVwb3J0KERFQlVHMSwKIAkJCWVycm1zZygiYmFja2dyb3VuZCB3b3JrZXIg XCJkYXRhY2hlY2tzdW1zIGxhdW5jaGVyXCIgc3RhcnRlZCIpKTsKIAotCXBxc2lnbmFsKFNJ R1RFUk0sIGRpZSk7Ci0JcHFzaWduYWwoU0lHSU5ULCBsYXVuY2hlcl9jYW5jZWxfaGFuZGxl cik7Ci0JcHFzaWduYWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOwot CXBxc2lnbmFsKFNJR1VTUjIsIFBHX1NJR19JR04pOwotCisJU2V0U3RhbmRhcmRJbnRlcnJ1 cHRIYW5kbGVycygpOwogCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOwogCiAJ TXlCYWNrZW5kVHlwZSA9IEJfREFUQUNIRUNLU1VNU1dPUktFUl9MQVVOQ0hFUjsKQEAgLTEx NjksNyArMTEzNCw3IEBAIGFnYWluOgogCQkJICogZmFpbHVyZSwgc28gcmVzdGFydCBwcm9j ZXNzaW5nIGluc3RlYWQuCiAJCQkgKi8KIAkJCUNIRUNLX0ZPUl9MQVVOQ0hFUl9BQk9SVF9S RVFVRVNUKCk7Ci0JCQlpZiAoYWJvcnRfcmVxdWVzdGVkKQorCQkJaWYgKEludGVycnVwdFBl bmRpbmcoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCkpCiAJCQkJZ290byBkb25lOwogCQkJZXJl cG9ydChFUlJPUiwKIAkJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9SRVNPVVJD RVMpLApAQCAtMTMxNSw3ICsxMjgwLDcgQEAgUHJvY2Vzc0FsbERhdGFiYXNlcyh2b2lkKQog CQkJCQllcnJtc2coImRhdGEgY2hlY2tzdW1zIGZhaWxlZCB0byBnZXQgZW5hYmxlZCBpbiBh bGwgZGF0YWJhc2VzLCBhYm9ydGluZyIpLAogCQkJCQllcnJoaW50KCJUaGUgc2VydmVyIGxv ZyBtaWdodCBoYXZlIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGNhdXNlIG9mIHRoZSBlcnJv ci4iKSk7CiAJCX0KLQkJZWxzZSBpZiAocmVzdWx0ID09IERBVEFDSEVDS1NVTVNXT1JLRVJf QUJPUlRFRCB8fCBhYm9ydF9yZXF1ZXN0ZWQpCisJCWVsc2UgaWYgKHJlc3VsdCA9PSBEQVRB Q0hFQ0tTVU1TV09SS0VSX0FCT1JURUQgfHwgSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRf UVVFUllfQ0FOQ0VMKSkKIAkJewogCQkJLyogQWJvcnQgZmxhZyBzZXQsIHNvIGV4aXQgdGhl IHdob2xlIHByb2Nlc3MgKi8KIAkJCXJldHVybiBmYWxzZTsKQEAgLTE1NjksOSArMTUzNCw3 IEBAIERhdGFDaGVja3N1bXNXb3JrZXJNYWluKERhdHVtIGFyZykKIAogCW9wZXJhdGlvbiA9 IEVOQUJMRV9EQVRBQ0hFQ0tTVU1TOwogCi0JcHFzaWduYWwoU0lHVEVSTSwgZGllKTsKLQlw cXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcik7Ci0KKwlTZXRT dGFuZGFyZEludGVycnVwdEhhbmRsZXJzKCk7CiAJQmFja2dyb3VuZFdvcmtlclVuYmxvY2tT aWduYWxzKCk7CiAKIAlNeUJhY2tlbmRUeXBlID0gQl9EQVRBQ0hFQ0tTVU1TV09SS0VSX1dP UktFUjsKQEAgLTE2NzAsNyArMTYzMyw3IEBAIERhdGFDaGVja3N1bXNXb3JrZXJNYWluKERh dHVtIGFyZykKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJQ0hFQ0tfRk9SX1dPUktF Ul9BQk9SVF9SRVFVRVNUKCk7CiAKLQkJaWYgKGFib3J0X3JlcXVlc3RlZCkKKwkJaWYgKElu dGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCkpCiAJCQlicmVhazsKIAog CQkvKgpAQCAtMTcwOSw3ICsxNjcyLDcgQEAgRGF0YUNoZWNrc3Vtc1dvcmtlck1haW4oRGF0 dW0gYXJnKQogCWxpc3RfZnJlZShSZWxhdGlvbkxpc3QpOwogCUZyZWVBY2Nlc3NTdHJhdGVn eShzdHJhdGVneSk7CiAKLQlpZiAoYWJvcnRlZCB8fCBhYm9ydF9yZXF1ZXN0ZWQpCisJaWYg KGFib3J0ZWQgfHwgSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMKSkK IAl7CiAJCUxXTG9ja0FjcXVpcmUoRGF0YUNoZWNrc3Vtc1dvcmtlckxvY2ssIExXX0VYQ0xV U0lWRSk7CiAJCWlmIChEYXRhQ2hlY2tzdW1TdGF0ZS0+d29ya2VyX2ludm9jYXRpb24gPT0g d29ya2VyX2ludm9jYXRpb24pCkBAIC0xNzczLDE2ICsxNzM2LDE2IEBAIERhdGFDaGVja3N1 bXNXb3JrZXJNYWluKERhdHVtIGFyZykKIAkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFU RV9SVU5OSU5HLCBhY3Rpdml0eSk7CiAKIAkJLyogUmV0cnkgZXZlcnkgMyBzZWNvbmRzICov Ci0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7Ci0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwK LQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwKLQkJCQkJCSAzMDAwLAotCQkJCQkJIFdBSVRfRVZFTlRfQ0hFQ0tTVU1fRU5BQkxFX1RF TVBUQUJMRV9XQUlUKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1 cHRzTWFzayB8CisJCQkJCQkJIElOVEVSUlVQVF9RVUVSWV9DQU5DRUwsCisJCQkJCQkJIFdM X0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJ CSAzMDAwLAorCQkJCQkJCSBXQUlUX0VWRU5UX0NIRUNLU1VNX0VOQUJMRV9URU1QVEFCTEVf V0FJVCk7CiAKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJQ0hFQ0tfRk9SX1dPUktF Ul9BQk9SVF9SRVFVRVNUKCk7CiAKLQkJaWYgKGFib3J0ZWQgfHwgYWJvcnRfcmVxdWVzdGVk KQorCQlpZiAoYWJvcnRlZCB8fCBJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9RVUVSWV9D QU5DRUwpKQogCQl7CiAJCQlMV0xvY2tBY3F1aXJlKERhdGFDaGVja3N1bXNXb3JrZXJMb2Nr LCBMV19FWENMVVNJVkUpOwogCQkJaWYgKERhdGFDaGVja3N1bVN0YXRlLT53b3JrZXJfaW52 b2NhdGlvbiA9PSB3b3JrZXJfaW52b2NhdGlvbikKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvcGdhcmNoLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5j CmluZGV4IGY5ZGIzNWM5Mjg1Li43MjdlZDQ3YTNhMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9wZ2FyY2guYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bn YXJjaC5jCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiYXJjaGl2ZS9hcmNoaXZlX21v ZHVsZS5oIgogI2luY2x1ZGUgImFyY2hpdmUvc2hlbGxfYXJjaGl2ZS5oIgogI2luY2x1ZGUg ImlwYy9pbnRlcnJ1cHQuaCIKLSNpbmNsdWRlICJpcGMvc2lnbmFsX2hhbmRsZXJzLmgiCiAj aW5jbHVkZSAibGliL2JpbmFyeWhlYXAuaCIKICNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5o IgogI2luY2x1ZGUgInBnc3RhdC5oIgpAQCAtNDQsNyArNDMsNiBAQAogI2luY2x1ZGUgInN0 b3JhZ2UvYWlvX3N1YnN5cy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2lwYy5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRl ICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCkBAIC0xMzUsMTEgKzEzMyw2IEBAIHN0cnVj dCBhcmNoX2ZpbGVzX3N0YXRlCiAKIHN0YXRpYyBzdHJ1Y3QgYXJjaF9maWxlc19zdGF0ZSAq YXJjaF9maWxlcyA9IE5VTEw7CiAKLS8qCi0gKiBGbGFncyBzZXQgYnkgaW50ZXJydXB0IGhh bmRsZXJzIGZvciBsYXRlciBzZXJ2aWNlIGluIHRoZSBtYWluIGxvb3AuCi0gKi8KLXN0YXRp YyB2b2xhdGlsZSBzaWdfYXRvbWljX3QgcmVhZHlfdG9fc3RvcCA9IGZhbHNlOwotCiAvKiAt LS0tLS0tLS0tCiAgKiBMb2NhbCBmdW5jdGlvbiBmb3J3YXJkIGRlY2xhcmF0aW9ucwogICog LS0tLS0tLS0tLQpAQCAtMTUxLDEwICsxNDQsMTEgQEAgc3RhdGljIGJvb2wgcGdhcmNoX2Fy Y2hpdmVYbG9nKGNoYXIgKnhsb2cpOwogc3RhdGljIGJvb2wgcGdhcmNoX3JlYWR5WGxvZyhj aGFyICp4bG9nKTsKIHN0YXRpYyB2b2lkIHBnYXJjaF9hcmNoaXZlRG9uZShjaGFyICp4bG9n KTsKIHN0YXRpYyB2b2lkIHBnYXJjaF9kaWUoaW50IGNvZGUsIERhdHVtIGFyZyk7Ci1zdGF0 aWMgdm9pZCBQcm9jZXNzUGdBcmNoSW50ZXJydXB0cyh2b2lkKTsKIHN0YXRpYyBpbnQJcmVh ZHlfZmlsZV9jb21wYXJhdG9yKERhdHVtIGEsIERhdHVtIGIsIHZvaWQgKmFyZyk7CiBzdGF0 aWMgdm9pZCBMb2FkQXJjaGl2ZUxpYnJhcnkodm9pZCk7CiBzdGF0aWMgdm9pZCBwZ2FyY2hf Y2FsbF9tb2R1bGVfc2h1dGRvd25fY2IoaW50IGNvZGUsIERhdHVtIGFyZyk7CitzdGF0aWMg dm9pZCBwZ2FyY2hfUHJvY2Vzc0NvbmZpZ1JlbG9hZEludGVycnVwdCh2b2lkKTsKKwogCiBz dGF0aWMgdm9pZCBQZ0FyY2hTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKIHN0YXRpYyB2b2lk IFBnQXJjaFNobWVtSW5pdCh2b2lkICphcmcpOwpAQCAtMjI2LDE4ICsyMjAsMjcgQEAgUGdB cmNoaXZlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9k YXRhX2xlbikKIAlBdXhpbGlhcnlQcm9jZXNzTWFpbkNvbW1vbigpOwogCiAJLyoKLQkgKiBJ Z25vcmUgYWxsIHNpZ25hbHMgdXN1YWxseSBib3VuZCB0byBzb21lIGFjdGlvbiBpbiB0aGUg cG9zdG1hc3RlciwKLQkgKiBleGNlcHQgZm9yIFNJR0hVUCwgU0lHVEVSTSwgU0lHVVNSMSwg U0lHVVNSMiwgYW5kIFNJR1FVSVQuCisJICogbm8gcXVlcnkgY2FuY2VsLiBYWFg6IHNob3Vs ZCB3ZSBsZWF2ZSB0aGUgc2lnbmFsIGhhbmRsZXIgaW4gcGxhY2UgYW5kCisJICoganVzdCBu b3QgaW5zdGFsbCBhbiBpbnRlcnJ1cHQgaGFuZGxlciBmb3IgaXQ/CiAJICovCi0JcHFzaWdu YWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKKwkvKiBhbiBpbnRl cnJ1cHQgaGFuZGxlciBmb3IgaXQ/ICovCiAJcHFzaWduYWwoU0lHSU5ULCBQR19TSUdfSUdO KTsKLQlwcXNpZ25hbChTSUdURVJNLCBTaWduYWxIYW5kbGVyRm9yU2h1dGRvd25SZXF1ZXN0 KTsKLQkvKiBTSUdRVUlUIGhhbmRsZXIgd2FzIGFscmVhZHkgc2V0IHVwIGJ5IEluaXRQb3N0 bWFzdGVyQ2hpbGQgKi8KLQlwcXNpZ25hbChTSUdBTFJNLCBQR19TSUdfSUdOKTsKLQlwcXNp Z25hbChTSUdQSVBFLCBQR19TSUdfSUdOKTsKLQlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2ln bmFsX3NpZ3VzcjFfaGFuZGxlcik7CisKKwkvKiBUT0RPOiB1c2UgaW50ZXJydXB0IGZvciB0 aGlzIGRpcmVjdGx5ICovCiAJcHFzaWduYWwoU0lHVVNSMiwgcGdhcmNoX3dha2VuX3N0b3Ap OwogCisJLyoKKwkgKiBUaGVzZSBpbnRlcnJ1cHQgaGFuZGxlcnMgYXJlIGNhbGxlZCBpbiB0 aGUgbG9vcHMgcGdhcmNoX01haW5Mb29wIGFuZAorCSAqIHBnYXJjaF9BcmNoaXZlckNvcHlM b29wLiAgSU5URVJSVVBUX1RFUk1JTkFURSBpcyBjaGVja2VkIGV4cGxpY2l0bHkgaW4KKwkg KiB0aGUgbG9vcHMuCisJICovCisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfQ09O RklHX1JFTE9BRCwgcGdhcmNoX1Byb2Nlc3NDb25maWdSZWxvYWRJbnRlcnJ1cHQpOworCUVu YWJsZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCk7CisJU2V0SW50ZXJydXB0 SGFuZGxlcihJTlRFUlJVUFRfQkFSUklFUiwgUHJvY2Vzc1Byb2NTaWduYWxCYXJyaWVyKTsK KwlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX0JBUlJJRVIpOworCVNldEludGVycnVwdEhh bmRsZXIoSU5URVJSVVBUX0xPR19NRU1PUllfQ09OVEVYVCwgUHJvY2Vzc0xvZ01lbW9yeUNv bnRleHRJbnRlcnJ1cHQpOworCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfTE9HX01FTU9S WV9DT05URVhUKTsKKwogCS8qIFVuYmxvY2sgc2lnbmFscyAodGhleSB3ZXJlIGJsb2NrZWQg d2hlbiB0aGUgcG9zdG1hc3RlciBmb3JrZWQgdXMpICovCiAJc2lncHJvY21hc2soU0lHX1NF VE1BU0ssICZVbkJsb2NrU2lnLCBOVUxMKTsKIApAQCAtMjQ4LDggKzI1MSw4IEBAIFBnQXJj aGl2ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0 YV9sZW4pCiAJb25fc2htZW1fZXhpdChwZ2FyY2hfZGllLCAwKTsKIAogCS8qCi0JICogQWR2 ZXJ0aXNlIG91ciBwcm9jIG51bWJlciBzbyB0aGF0IGJhY2tlbmRzIGNhbiB1c2Ugb3VyIGxh dGNoIHRvIHdha2UgdXMKLQkgKiB1cCB3aGlsZSB3ZSdyZSBzbGVlcGluZy4KKwkgKiBBZHZl cnRpc2Ugb3VyIHByb2MgbnVtYmVyIHNvIHRoYXQgYmFja2VuZHMgY2FuIHdha2UgdXMgdXAg d2hpbGUgd2UncmUKKwkgKiBzbGVlcGluZy4KIAkgKi8KIAlQZ0FyY2gtPnBncHJvY25vID0g TXlQcm9jTnVtYmVyOwogCkBAIC0yODMsMTMgKzI4NiwxMiBAQCBQZ0FyY2hXYWtldXAodm9p ZCkKIAlpbnQJCQlhcmNoX3BncHJvY25vID0gUGdBcmNoLT5wZ3Byb2NubzsKIAogCS8qCi0J ICogV2UgZG9uJ3QgYWNxdWlyZSBQcm9jQXJyYXlMb2NrIGhlcmUuICBJdCdzIGFjdHVhbGx5 IGZpbmUgYmVjYXVzZQotCSAqIHByb2NMYXRjaCBpc24ndCBldmVyIGZyZWVkLCBzbyB3ZSBq dXN0IGNhbiBwb3RlbnRpYWxseSBzZXQgdGhlIHdyb25nCi0JICogcHJvY2VzcycgKG9yIG5v IHByb2Nlc3MnKSBsYXRjaC4gIEV2ZW4gaW4gdGhhdCBjYXNlIHRoZSBhcmNoaXZlciB3aWxs Ci0JICogYmUgcmVsYXVuY2hlZCBzaG9ydGx5IGFuZCB3aWxsIHN0YXJ0IGFyY2hpdmluZy4K KwkgKiBXZSBkb24ndCBhY3F1aXJlIFByb2NBcnJheUxvY2sgaGVyZSwgc28gd2UgbWF5IHNl bmQgdGhlIGludGVycnVwdCB0bworCSAqIHdyb25nIHByb2Nlc3MsIGJ1dCB0aGF0J3MgaGFy bWxlc3MuICBFdmVuIGluIHRoYXQgY2FzZSB0aGUgYXJjaGl2ZXIKKwkgKiB3aWxsIGJlIHJl bGF1bmNoZWQgc2hvcnRseSBhbmQgd2lsbCBzdGFydCBhcmNoaXZpbmcuCiAJICovCiAJaWYg KGFyY2hfcGdwcm9jbm8gIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKLQkJU2V0TGF0Y2goJkdl dFBHUHJvY0J5TnVtYmVyKGFyY2hfcGdwcm9jbm8pLT5wcm9jTGF0Y2gpOworCQlTZW5kSW50 ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgYXJjaF9wZ3Byb2Nubyk7CiB9CiAKIApA QCAtMjk4LDggKzMwMCw3IEBAIHN0YXRpYyB2b2lkCiBwZ2FyY2hfd2FrZW5fc3RvcChTSUdO QUxfQVJHUykKIHsKIAkvKiBzZXQgZmxhZyB0byBkbyBhIGZpbmFsIGN5Y2xlIGFuZCBzaHV0 IGRvd24gYWZ0ZXJ3YXJkcyAqLwotCXJlYWR5X3RvX3N0b3AgPSB0cnVlOwotCVNldExhdGNo KE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9TSFVURE9XTl9QR0FSQ0gp OwogfQogCiAvKgpAQCAtMzEwLDcgKzMxMSw3IEBAIHBnYXJjaF93YWtlbl9zdG9wKFNJR05B TF9BUkdTKQogc3RhdGljIHZvaWQKIHBnYXJjaF9NYWluTG9vcCh2b2lkKQogewotCWJvb2wJ CXRpbWVfdG9fc3RvcDsKKwlib29sCQl0aW1lX3RvX3N0b3AgPSBmYWxzZTsKIAogCS8qCiAJ ICogVGhlcmUgc2hvdWxkbid0IGJlIGFueXRoaW5nIGZvciB0aGUgYXJjaGl2ZXIgdG8gZG8g ZXhjZXB0IHRvIHdhaXQgZm9yIGEKQEAgLTMxOSwxMyArMzIwLDE0IEBAIHBnYXJjaF9NYWlu TG9vcCh2b2lkKQogCSAqLwogCWRvCiAJewotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCiAJCS8qIFdoZW4gd2Ug Z2V0IFNJR1VTUjIsIHdlIGRvIG9uZSBtb3JlIGFyY2hpdmUgY3ljbGUsIHRoZW4gZXhpdCAq LwotCQl0aW1lX3RvX3N0b3AgPSByZWFkeV90b19zdG9wOworCQlpZiAoSW50ZXJydXB0UGVu ZGluZyhJTlRFUlJVUFRfU0hVVERPV05fUEdBUkNIKSkKKwkJCXRpbWVfdG9fc3RvcCA9IHRy dWU7CiAKIAkJLyogQ2hlY2sgZm9yIGJhcnJpZXIgZXZlbnRzIGFuZCBjb25maWcgdXBkYXRl ICovCi0JCVByb2Nlc3NQZ0FyY2hJbnRlcnJ1cHRzKCk7CisJCUNIRUNLX0ZPUl9JTlRFUlJV UFRTKCk7CiAKIAkJLyoKIAkJICogSWYgd2UndmUgZ290dGVuIFNJR1RFUk0sIHdlIG5vcm1h bGx5IGp1c3Qgc2l0IGFuZCBkbyBub3RoaW5nIHVudGlsCkBAIC0zMzUsNyArMzM3LDcgQEAg cGdhcmNoX01haW5Mb29wKHZvaWQpCiAJCSAqIHRoYXQgdGhlIHBvc3RtYXN0ZXIgY2FuIHN0 YXJ0IGEgbmV3IGFyY2hpdmVyIGlmIG5lZWRlZC4gIEFsc28gZXhpdAogCQkgKiBpZiB0aW1l IHVuZXhwZWN0ZWRseSBnb2VzIGJhY2t3YXJkLgogCQkgKi8KLQkJaWYgKFNodXRkb3duUmVx dWVzdFBlbmRpbmcpCisJCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9URVJNSU5B VEUpKQogCQl7CiAJCQl0aW1lX3QJCWN1cnRpbWUgPSB0aW1lKE5VTEwpOwogCkBAIC0zNDcs NiArMzQ5LDcgQEAgcGdhcmNoX01haW5Mb29wKHZvaWQpCiAJCX0KIAogCQkvKiBEbyB3aGF0 IHdlJ3JlIGhlcmUgZm9yICovCisKIAkJcGdhcmNoX0FyY2hpdmVyQ29weUxvb3AoKTsKIAog CQkvKgpAQCAtMzU3LDEwICszNjAsMTMgQEAgcGdhcmNoX01haW5Mb29wKHZvaWQpCiAJCXsK IAkJCWludAkJCXJjOwogCi0JCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJICAg V0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsCi0JCQkJ CQkgICBQR0FSQ0hfQVVUT1dBS0VfSU5URVJWQUwgKiAxMDAwTCwKLQkJCQkJCSAgIFdBSVRf RVZFTlRfQVJDSElWRVJfTUFJTik7CisJCQlyYyA9IFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJ bnRlcnJ1cHRzTWFzayB8CisJCQkJCQkJICAgSU5URVJSVVBUX1dBSVRfV0FLRVVQIHwKKwkJ CQkJCQkgICAoKGxhc3Rfc2lndGVybV90aW1lID09IDApID8gSU5URVJSVVBUX1RFUk1JTkFU RSA6IDApIHwKKwkJCQkJCQkgICBJTlRFUlJVUFRfU0hVVERPV05fUEdBUkNILAorCQkJCQkJ CSAgIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9QT1NUTUFTVEVSX0RFQVRILAor CQkJCQkJCSAgIFBHQVJDSF9BVVRPV0FLRV9JTlRFUlZBTCAqIDEwMDBMLAorCQkJCQkJCSAg IFdBSVRfRVZFTlRfQVJDSElWRVJfTUFJTik7CiAJCQlpZiAocmMgJiBXTF9QT1NUTUFTVEVS X0RFQVRIKQogCQkJCXRpbWVfdG9fc3RvcCA9IHRydWU7CiAJCX0KQEAgLTQwOSw3ICs0MTUs NyBAQCBwZ2FyY2hfQXJjaGl2ZXJDb3B5TG9vcCh2b2lkKQogCQkJICogY29tbWFuZCwgYW5k IHRoZSBzZWNvbmQgaXMgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggYW5vdGhlcgogCQkJICog YXJjaGl2ZXIgc3Bhd25lZCBieSBhIG5ld2VyIHBvc3RtYXN0ZXIuCiAJCQkgKi8KLQkJCWlm IChTaHV0ZG93blJlcXVlc3RQZW5kaW5nIHx8ICFQb3N0bWFzdGVySXNBbGl2ZSgpKQorCQkJ aWYgKEludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1RFUk1JTkFURSkgfHwgIVBvc3RtYXN0 ZXJJc0FsaXZlKCkpCiAJCQkJcmV0dXJuOwogCiAJCQkvKgpAQCAtNDE3LDcgKzQyMyw3IEBA IHBnYXJjaF9BcmNoaXZlckNvcHlMb29wKHZvaWQpCiAJCQkgKiB3ZSdsbCBhZG9wdCBhIG5l dyBzZXR0aW5nIGZvciBhcmNoaXZlX2NvbW1hbmQgYXMgc29vbiBhcwogCQkJICogcG9zc2li bGUsIGV2ZW4gaWYgdGhlcmUgaXMgYSBiYWNrbG9nIG9mIGZpbGVzIHRvIGJlIGFyY2hpdmVk LgogCQkJICovCi0JCQlQcm9jZXNzUGdBcmNoSW50ZXJydXB0cygpOworCQkJQ0hFQ0tfRk9S X0lOVEVSUlVQVFMoKTsKIAogCQkJLyogUmVzZXQgdmFyaWFibGVzIHRoYXQgbWlnaHQgYmUg c2V0IGJ5IHRoZSBjYWxsYmFjayAqLwogCQkJYXJjaF9tb2R1bGVfY2hlY2tfZXJyZGV0YWls X3N0cmluZyA9IE5VTEw7CkBAIC04NTAsMzAgKzg1NiwxMyBAQCBwZ2FyY2hfZGllKGludCBj b2RlLCBEYXR1bSBhcmcpCiAJUGdBcmNoLT5wZ3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1C RVI7CiB9CiAKLS8qCi0gKiBJbnRlcnJ1cHQgaGFuZGxlciBmb3IgV0FMIGFyY2hpdmVyIHBy b2Nlc3MuCi0gKgotICogVGhpcyBpcyBjYWxsZWQgaW4gdGhlIGxvb3BzIHBnYXJjaF9NYWlu TG9vcCBhbmQgcGdhcmNoX0FyY2hpdmVyQ29weUxvb3AuCi0gKiBJdCBjaGVja3MgZm9yIGJh cnJpZXIgZXZlbnRzLCBjb25maWcgdXBkYXRlIGFuZCByZXF1ZXN0IGZvciBsb2dnaW5nIG9m Ci0gKiBtZW1vcnkgY29udGV4dHMsIGJ1dCBub3Qgc2h1dGRvd24gcmVxdWVzdCBiZWNhdXNl IGhvdyB0byBoYW5kbGUKLSAqIHNodXRkb3duIHJlcXVlc3QgaXMgZGlmZmVyZW50IGJldHdl ZW4gdGhvc2UgbG9vcHMuCi0gKi8KIHN0YXRpYyB2b2lkCi1Qcm9jZXNzUGdBcmNoSW50ZXJy dXB0cyh2b2lkKQorcGdhcmNoX1Byb2Nlc3NDb25maWdSZWxvYWRJbnRlcnJ1cHQodm9pZCkK IHsKLQlpZiAoUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nKQotCQlQcm9jZXNzUHJvY1NpZ25h bEJhcnJpZXIoKTsKLQotCS8qIFBlcmZvcm0gbG9nZ2luZyBvZiBtZW1vcnkgY29udGV4dHMg b2YgdGhpcyBwcm9jZXNzICovCi0JaWYgKExvZ01lbW9yeUNvbnRleHRQZW5kaW5nKQotCQlQ cm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOwotCi0JaWYgKENvbmZpZ1JlbG9h ZFBlbmRpbmcpCiAJewogCQljaGFyCSAgICphcmNoaXZlTGliID0gcHN0cmR1cChYTG9nQXJj aGl2ZUxpYnJhcnkpOwogCQlib29sCQlhcmNoaXZlTGliQ2hhbmdlZDsKIAotCQlDb25maWdS ZWxvYWRQZW5kaW5nID0gZmFsc2U7CiAJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVAp OwogCiAJCWlmIChYTG9nQXJjaGl2ZUxpYnJhcnlbMF0gIT0gJ1wwJyAmJiBYTG9nQXJjaGl2 ZUNvbW1hbmRbMF0gIT0gJ1wwJykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvcG9zdG1hc3Rlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMK aW5kZXggOTBjN2M0NTI4ZTguLmFhMGZmNmE0YzcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L3Bvc3RtYXN0ZXIuYwpAQCAtNTQ0LDEwICs1NDQsOCBAQCBQb3N0bWFzdGVyTWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQogCSAqIFNldCB1cCBzaWduYWwgaGFuZGxlcnMgZm9yIHRo ZSBwb3N0bWFzdGVyIHByb2Nlc3MuCiAJICoKIAkgKiBDQVVUSU9OOiB3aGVuIGNoYW5naW5n IHRoaXMgbGlzdCwgY2hlY2sgZm9yIHNpZGUtZWZmZWN0cyBvbiB0aGUgc2lnbmFsCi0JICog aGFuZGxpbmcgc2V0dXAgb2YgY2hpbGQgcHJvY2Vzc2VzLiAgU2VlIHRjb3AvcG9zdGdyZXMu YywKLQkgKiBib290c3RyYXAvYm9vdHN0cmFwLmMsIHBvc3RtYXN0ZXIvYmd3cml0ZXIuYywg cG9zdG1hc3Rlci93YWx3cml0ZXIuYywKLQkgKiBwb3N0bWFzdGVyL2F1dG92YWN1dW0uYywg cG9zdG1hc3Rlci9wZ2FyY2guYywgcG9zdG1hc3Rlci9zeXNsb2dnZXIuYywKLQkgKiBwb3N0 bWFzdGVyL2Jnd29ya2VyLmMgYW5kIHBvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMuCisJICog aGFuZGxpbmcgc2V0dXAgb2YgY2hpbGQgcHJvY2Vzc2VzLiAgU2VlCisJICogU2V0UG9zdG1h c3RlckNoaWxkU2lnbmFsSGFuZGxlcnMoKQogCSAqLwogCXBxaW5pdG1hc2soKTsKIAlzaWdw cm9jbWFzayhTSUdfU0VUTUFTSywgJkJsb2NrU2lnLCBOVUxMKTsKQEAgLTU2NCw3ICs1NjIs NiBAQCBQb3N0bWFzdGVyTWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJLyogVGhp cyBtYXkgY29uZmlndXJlIFNJR1VSRywgZGVwZW5kaW5nIG9uIHBsYXRmb3JtLiAqLwogCUlu aXRpYWxpemVXYWl0RXZlbnRTdXBwb3J0KCk7Ci0JSW5pdFByb2Nlc3NMb2NhbExhdGNoKCk7 CiAKIAkvKgogCSAqIE5vIG90aGVyIHBsYWNlIGluIFBvc3RncmVzIHNob3VsZCB0b3VjaCBT SUdUVElOL1NJR1RUT1UgaGFuZGxpbmcuICBXZQpAQCAtNTg1LDYgKzU4Miw4IEBAIFBvc3Rt YXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJcHFzaWduYWwoU0lHWEZTWiwg UEdfU0lHX0lHTik7CS8qIGlnbm9yZWQgKi8KICNlbmRpZgogCisJLyogbm90ZTogd2UgZG8g bm90IGluc3RhbGwgdGhlIHN0YW5kYXJkIGludGVycnVwdCBoYW5kbGVycyBpbiBwb3N0bWFz dGVyICovCisKIAkvKiBCZWdpbiBhY2NlcHRpbmcgc2lnbmFscy4gKi8KIAlzaWdwcm9jbWFz ayhTSUdfU0VUTUFTSywgJlVuQmxvY2tTaWcsIE5VTEwpOwogCkBAIC0xNjYwLDE0ICsxNjU5 LDE1IEBAIENvbmZpZ3VyZVBvc3RtYXN0ZXJXYWl0U2V0KGJvb2wgYWNjZXB0X2Nvbm5lY3Rp b25zKQogCiAJcG1fd2FpdF9zZXQgPSBDcmVhdGVXYWl0RXZlbnRTZXQoTlVMTCwKIAkJCQkJ CQkJCSBhY2NlcHRfY29ubmVjdGlvbnMgPyAoMSArIE51bUxpc3RlblNvY2tldHMpIDogMSk7 Ci0JQWRkV2FpdEV2ZW50VG9TZXQocG1fd2FpdF9zZXQsIFdMX0xBVENIX1NFVCwgUEdJTlZB TElEX1NPQ0tFVCwgTXlMYXRjaCwKKwlBZGRXYWl0RXZlbnRUb1NldChwbV93YWl0X3NldCwg V0xfSU5URVJSVVBULCBQR0lOVkFMSURfU09DS0VULAorCQkJCQkgIElOVEVSUlVQVF9DT05G SUdfUkVMT0FEIHwgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAogCQkJCQkgIE5VTEwpOwogCiAJ aWYgKGFjY2VwdF9jb25uZWN0aW9ucykKIAl7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgTnVt TGlzdGVuU29ja2V0czsgaSsrKQogCQkJQWRkV2FpdEV2ZW50VG9TZXQocG1fd2FpdF9zZXQs IFdMX1NPQ0tFVF9BQ0NFUFQsIExpc3RlblNvY2tldHNbaV0sCi0JCQkJCQkJICBOVUxMLCBO VUxMKTsKKwkJCQkJCQkgIDAsIE5VTEwpOwogCX0KIH0KIApAQCAtMTY5NiwxOSArMTY5Niwy MCBAQCBTZXJ2ZXJMb29wKHZvaWQpCiAJCQkJCQkJCSAgIDAgLyogcG9zdG1hc3RlciBwb3N0 cyBubyB3YWl0X2V2ZW50cyAqLyApOwogCiAJCS8qCi0JCSAqIExhdGNoIHNldCBieSBzaWdu YWwgaGFuZGxlciwgb3IgbmV3IGNvbm5lY3Rpb24gcGVuZGluZyBvbiBhbnkgb2YKLQkJICog b3VyIHNvY2tldHM/IElmIHRoZSBsYXR0ZXIsIGZvcmsgYSBjaGlsZCBwcm9jZXNzIHRvIGRl YWwgd2l0aCBpdC4KKwkJICogSW50ZXJydXB0IHJhaXNlZCBieSBzaWduYWwgaGFuZGxlciwg b3IgbmV3IGNvbm5lY3Rpb24gcGVuZGluZyBvbgorCQkgKiBhbnkgb2Ygb3VyIHNvY2tldHM/ ICBJZiB0aGUgbGF0dGVyLCBmb3JrIGEgY2hpbGQgcHJvY2VzcyB0byBkZWFsCisJCSAqIHdp dGggaXQuCiAJCSAqLwogCQlmb3IgKGludCBpID0gMDsgaSA8IG5ldmVudHM7IGkrKykKIAkJ ewotCQkJaWYgKGV2ZW50c1tpXS5ldmVudHMgJiBXTF9MQVRDSF9TRVQpCi0JCQkJUmVzZXRM YXRjaChNeUxhdGNoKTsKKwkJCWlmIChldmVudHNbaV0uZXZlbnRzICYgV0xfSU5URVJSVVBU KQorCQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAKIAkJCS8q CiAJCQkgKiBUaGUgZm9sbG93aW5nIHJlcXVlc3RzIGFyZSBoYW5kbGVkIHVuY29uZGl0aW9u YWxseSwgZXZlbiBpZiB3ZQotCQkJICogZGlkbid0IHNlZSBXTF9MQVRDSF9TRVQuICBUaGlz IGdpdmVzIGhpZ2ggcHJpb3JpdHkgdG8gc2h1dGRvd24KLQkJCSAqIGFuZCByZWxvYWQgcmVx dWVzdHMgd2hlcmUgdGhlIGxhdGNoIGhhcHBlbnMgdG8gYXBwZWFyIGxhdGVyIGluCi0JCQkg KiBldmVudHNbXSBvciB3aWxsIGJlIHJlcG9ydGVkIGJ5IGEgbGF0ZXIgY2FsbCB0bworCQkJ ICogZGlkbid0IHNlZSBXTF9JTlRFUlJVUFQuICBUaGlzIGdpdmVzIGhpZ2ggcHJpb3JpdHkg dG8gc2h1dGRvd24KKwkJCSAqIGFuZCByZWxvYWQgcmVxdWVzdHMgd2hlcmUgdGhlIGludGVy cnVwdCBldmVudCBoYXBwZW5zIHRvIGFwcGVhcgorCQkJICogbGF0ZXIgaW4gZXZlbnRzW10g b3Igd2lsbCBiZSByZXBvcnRlZCBieSBhIGxhdGVyIGNhbGwgdG8KIAkJCSAqIFdhaXRFdmVu dFNldFdhaXQoKS4KIAkJCSAqLwogCQkJaWYgKHBlbmRpbmdfcG1fc2h1dGRvd25fcmVxdWVz dCkKQEAgLTIwMDMsNyArMjAwNCw3IEBAIHN0YXRpYyB2b2lkCiBoYW5kbGVfcG1fcG1zaWdu YWxfc2lnbmFsKFNJR05BTF9BUkdTKQogewogCXBlbmRpbmdfcG1fcG1zaWduYWwgPSB0cnVl OwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9XQUlU X1dBS0VVUCk7CiB9CiAKIC8qCkBAIC0yMDEzLDcgKzIwMTQsNyBAQCBzdGF0aWMgdm9pZAog aGFuZGxlX3BtX3JlbG9hZF9yZXF1ZXN0X3NpZ25hbChTSUdOQUxfQVJHUykKIHsKIAlwZW5k aW5nX3BtX3JlbG9hZF9yZXF1ZXN0ID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlS YWlzZUludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogfQogCiAvKgpAQCAtMjA5 MCw3ICsyMDkxLDcgQEAgaGFuZGxlX3BtX3NodXRkb3duX3JlcXVlc3Rfc2lnbmFsKFNJR05B TF9BUkdTKQogCQkJcGVuZGluZ19wbV9zaHV0ZG93bl9yZXF1ZXN0ID0gdHJ1ZTsKIAkJCWJy ZWFrOwogCX0KLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJV UFRfV0FJVF9XQUtFVVApOwogfQogCiAvKgpAQCAtMjI1MSw3ICsyMjUyLDcgQEAgc3RhdGlj IHZvaWQKIGhhbmRsZV9wbV9jaGlsZF9leGl0X3NpZ25hbChTSUdOQUxfQVJHUykKIHsKIAlw ZW5kaW5nX3BtX2NoaWxkX2V4aXQgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJh aXNlSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiB9CiAKIC8qCkBAIC0yNTkz LDYgKzI1OTQsNyBAQCBDbGVhbnVwQmFja2VuZChQTUNoaWxkICpicCwKIAlib29sCQljcmFz aGVkID0gZmFsc2U7CiAJYm9vbAkJbG9nZ2VkID0gZmFsc2U7CiAJcGlkX3QJCWJwX3BpZDsK KwlpbnQJCQlicF9jaGlsZF9zbG90OwogCWJvb2wJCWJwX2Jnd29ya2VyX25vdGlmeTsKIAlC YWNrZW5kVHlwZSBicF9ia2VuZF90eXBlOwogCVJlZ2lzdGVyZWRCZ1dvcmtlciAqcnc7CkBA IC0yNjQwLDYgKzI2NDIsNyBAQCBDbGVhbnVwQmFja2VuZChQTUNoaWxkICpicCwKIAkgKiBk ZXRhY2hlZCBjbGVhbmx5LgogCSAqLwogCWJwX3BpZCA9IGJwLT5waWQ7CisJYnBfY2hpbGRf c2xvdCA9IGJwLT5jaGlsZF9zbG90OwogCWJwX2Jnd29ya2VyX25vdGlmeSA9IGJwLT5iZ3dv cmtlcl9ub3RpZnk7CiAJYnBfYmtlbmRfdHlwZSA9IGJwLT5ia2VuZF90eXBlOwogCXJ3ID0g YnAtPnJ3OwpAQCAtMjY2NywxNCArMjY3MCwxNCBAQCBDbGVhbnVwQmFja2VuZChQTUNoaWxk ICpicCwKIAl9CiAKIAkvKgotCSAqIFRoaXMgYmFja2VuZCBtYXkgaGF2ZSBiZWVuIHNsYXRl ZCB0byByZWNlaXZlIFNJR1VTUjEgd2hlbiBzb21lCi0JICogYmFja2dyb3VuZCB3b3JrZXIg c3RhcnRlZCBvciBzdG9wcGVkLiAgQ2FuY2VsIHRob3NlIG5vdGlmaWNhdGlvbnMsIGFzCi0J ICogd2UgZG9uJ3Qgd2FudCB0byBzaWduYWwgUElEcyB0aGF0IGFyZSBub3QgUG9zdGdyZVNR TCBiYWNrZW5kcy4gIFRoaXMKKwkgKiBUaGlzIGJhY2tlbmQgbWF5IGhhdmUgYmVlbiBzbGF0 ZWQgdG8gcmVjZWl2ZSBJTlRFUlJVUFRfV0FJVF9XQUtFVVAgd2hlbgorCSAqIHNvbWUgYmFj a2dyb3VuZCB3b3JrZXIgc3RhcnRlZCBvciBzdG9wcGVkLiAgQ2FuY2VsIHRob3NlIG5vdGlm aWNhdGlvbnMsCisJICogYXMgd2UgZG9uJ3Qgd2FudCB0byBzaWduYWwgUElEcyB0aGF0IGFy ZSBub3QgUG9zdGdyZVNRTCBiYWNrZW5kcy4gIFRoaXMKIAkgKiBnZXRzIHNraXBwZWQgaW4g dGhlIChwcm9iYWJseSB2ZXJ5IGNvbW1vbikgY2FzZSB3aGVyZSB0aGUgYmFja2VuZCBoYXMK IAkgKiBuZXZlciByZXF1ZXN0ZWQgYW55IHN1Y2ggbm90aWZpY2F0aW9ucy4KIAkgKi8KIAlp ZiAoYnBfYmd3b3JrZXJfbm90aWZ5KQotCQlCYWNrZ3JvdW5kV29ya2VyU3RvcE5vdGlmaWNh dGlvbnMoYnBfcGlkKTsKKwkJQmFja2dyb3VuZFdvcmtlclN0b3BOb3RpZmljYXRpb25zKGJw X2NoaWxkX3Nsb3QpOwogCiAJLyoKIAkgKiBJZiBpdCB3YXMgYW4gYXV0b3ZhY3V1bSB3b3Jr ZXIsIHdha2UgdXAgdGhlIGxhdW5jaGVyIHNvIHRoYXQgaXQgY2FuCkBAIC00MzI3LDE1ICs0 MzMwLDE1IEBAIG1heWJlX3N0YXJ0X2Jnd29ya2Vycyh2b2lkKQogCQl7CiAJCQlpZiAocnct PnJ3X3dvcmtlci5iZ3dfcmVzdGFydF90aW1lID09IEJHV19ORVZFUl9SRVNUQVJUKQogCQkJ ewotCQkJCWludAkJCW5vdGlmeV9waWQ7CisJCQkJUHJvY051bWJlcglub3RpZnlfcHJvY19u dW1iZXI7CiAKLQkJCQlub3RpZnlfcGlkID0gcnctPnJ3X3dvcmtlci5iZ3dfbm90aWZ5X3Bp ZDsKKwkJCQlub3RpZnlfcHJvY19udW1iZXIgPSBHZXROb3RpZnlQcm9jTnVtYmVyRm9yUmVn aXN0ZXJlZFdvcmtlcihydyk7CiAKIAkJCQlGb3JnZXRCYWNrZ3JvdW5kV29ya2VyKHJ3KTsK IAogCQkJCS8qIFJlcG9ydCB3b3JrZXIgaXMgZ29uZSBub3cuICovCi0JCQkJaWYgKG5vdGlm eV9waWQgIT0gMCkKLQkJCQkJa2lsbChub3RpZnlfcGlkLCBTSUdVU1IxKTsKKwkJCQlpZiAo bm90aWZ5X3Byb2NfbnVtYmVyICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCisJCQkJCVNlbmRJ bnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQLCBub3RpZnlfcHJvY19udW1iZXIpOwog CiAJCQkJY29udGludWU7CiAJCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL3N0YXJ0dXAuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3RhcnR1cC5jCmluZGV4 IGU3ZGIzYjNlNmUxLi4zZjg4M2EwMTdkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9zdGFydHVwLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zdGFydHVw LmMKQEAgLTIyLDEzICsyMiwxNCBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ndXRp bHMuaCIKLSNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgogI2luY2x1ZGUgImlwYy9pbnRl cnJ1cHQuaCIKKyNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgogI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5oIgogI2luY2x1ZGUg InBvc3RtYXN0ZXIvc3RhcnR1cC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Rh bmRieS5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAtMzksMjEgKzQwLDE0IEBACiAj aWZuZGVmIFVTRV9QT1NUTUFTVEVSX0RFQVRIX1NJR05BTAogLyoKICAqIE9uIHN5c3RlbXMg dGhhdCBuZWVkIHRvIG1ha2UgYSBzeXN0ZW0gY2FsbCB0byBmaW5kIG91dCBpZiB0aGUgcG9z dG1hc3RlciBoYXMKLSAqIGdvbmUgYXdheSwgd2UnbGwgZG8gc28gb25seSBldmVyeSBOdGgg Y2FsbCB0byBQcm9jZXNzU3RhcnR1cFByb2NJbnRlcnJ1cHRzKCkuCisgKiBnb25lIGF3YXks IHdlJ2xsIGRvIHNvIG9ubHkgZXZlcnkgTnRoIGNhbGwgdG8gU3RhcnR1cENoZWNrUG9zdG1h c3RlckRlYXRoKCkuCiAgKiBUaGlzIG9ubHkgYWZmZWN0cyBob3cgbG9uZyBpdCB0YWtlcyB1 cyB0byBkZXRlY3QgdGhlIGNvbmRpdGlvbiB3aGlsZSB3ZSdyZQotICogYnVzeSByZXBsYXlp bmcgV0FMLiAgTGF0Y2ggd2FpdHMgYW5kIHNpbWlsYXIgd2hpY2ggc2hvdWxkIHJlYWN0IGlt bWVkaWF0ZWx5CisgKiBidXN5IHJlcGxheWluZyBXQUwuICBJbnRlcnJ1cHQgd2FpdHMgYW5k IHNpbWlsYXIgc2hvdWxkIHJlYWN0IGltbWVkaWF0ZWx5CiAgKiB0aHJvdWdoIHRoZSB1c3Vh bCB0ZWNobmlxdWVzLgogICovCiAjZGVmaW5lIFBPU1RNQVNURVJfUE9MTF9SQVRFX0xJTUlU IDEwMjQKICNlbmRpZgogCi0vKgotICogRmxhZ3Mgc2V0IGJ5IGludGVycnVwdCBoYW5kbGVy cyBmb3IgbGF0ZXIgc2VydmljZSBpbiB0aGUgcmVkbyBsb29wLgotICovCi1zdGF0aWMgdm9s YXRpbGUgc2lnX2F0b21pY190IGdvdF9TSUdIVVAgPSBmYWxzZTsKLXN0YXRpYyB2b2xhdGls ZSBzaWdfYXRvbWljX3Qgc2h1dGRvd25fcmVxdWVzdGVkID0gZmFsc2U7Ci1zdGF0aWMgdm9s YXRpbGUgc2lnX2F0b21pY190IHByb21vdGVfc2lnbmFsZWQgPSBmYWxzZTsKLQogLyoKICAq IEZsYWcgc2V0IHdoZW4gZXhlY3V0aW5nIGEgcmVzdG9yZSBjb21tYW5kLCB0byB0ZWxsIFNJ R1RFUk0gc2lnbmFsIGhhbmRsZXIKICAqIHRoYXQgaXQncyBzYWZlIHRvIGp1c3QgcHJvY19l eGl0LgpAQCAtNzgsNyArNzIsNyBAQCBpbnQJCQlsb2dfc3RhcnR1cF9wcm9ncmVzc19pbnRl cnZhbCA9IDEwMDAwOwkvKiAxMCBzZWMgKi8KIAogLyogU2lnbmFsIGhhbmRsZXJzICovCiBz dGF0aWMgdm9pZCBTdGFydHVwUHJvY1RyaWdnZXJIYW5kbGVyKFNJR05BTF9BUkdTKTsKLXN0 YXRpYyB2b2lkIFN0YXJ0dXBQcm9jU2lnSHVwSGFuZGxlcihTSUdOQUxfQVJHUyk7CitzdGF0 aWMgdm9pZCBTdGFydHVwUHJvY1NodXRkb3duSGFuZGxlcihTSUdOQUxfQVJHUyk7CiAKIC8q IENhbGxiYWNrcyAqLwogc3RhdGljIHZvaWQgU3RhcnR1cFByb2NFeGl0KGludCBjb2RlLCBE YXR1bSBhcmcpOwpAQCAtOTMsMTYgKzg3LDEyIEBAIHN0YXRpYyB2b2lkIFN0YXJ0dXBQcm9j RXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkCiBTdGFydHVwUHJvY1Ry aWdnZXJIYW5kbGVyKFNJR05BTF9BUkdTKQogewotCXByb21vdGVfc2lnbmFsZWQgPSB0cnVl OwotCVdha2V1cFJlY292ZXJ5KCk7Ci19Ci0KLS8qIFNJR0hVUDogc2V0IGZsYWcgdG8gcmUt cmVhZCBjb25maWcgZmlsZSBhdCBuZXh0IGNvbnZlbmllbnQgdGltZSAqLwotc3RhdGljIHZv aWQKLVN0YXJ0dXBQcm9jU2lnSHVwSGFuZGxlcihTSUdOQUxfQVJHUykKLXsKLQlnb3RfU0lH SFVQID0gdHJ1ZTsKLQlXYWtldXBSZWNvdmVyeSgpOworCS8qCisJICogVGhlIElOVEVSUlVQ VF9DSEVDS19QUk9NT1RFIGZsYWcgaGludHMgdGhlIHN0YXJ0dXAgcHJvY2VzcyB0byBjaGVj ayBmb3IKKwkgKiB0aGUgc2lnbmFsIGZpbGUsIHdoaWxlIElOVEVSUlVQVF9XQUxfQVJSSVZF RCB3YWtlcyB1cCB0aGUgcHJvY2VzcyBmcm9tCisJICogc2xlZXAuCisJICovCisJUmFpc2VJ bnRlcnJ1cHQoSU5URVJSVVBUX0NIRUNLX1BST01PVEUgfCBJTlRFUlJVUFRfV0FMX0FSUklW RUQpOwogfQogCiAvKiBTSUdURVJNOiBzZXQgZmxhZyB0byBhYm9ydCByZWRvIGFuZCBleGl0 ICovCkBAIC0xMTIsOCArMTAyLDE2IEBAIFN0YXJ0dXBQcm9jU2h1dGRvd25IYW5kbGVyKFNJ R05BTF9BUkdTKQogCWlmIChpbl9yZXN0b3JlX2NvbW1hbmQpCiAJCXByb2NfZXhpdCgxKTsK IAllbHNlCi0JCXNodXRkb3duX3JlcXVlc3RlZCA9IHRydWU7Ci0JV2FrZXVwUmVjb3Zlcnko KTsKKwkJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX1RFUk1JTkFURSk7Cit9CisKKy8qIFBy b2Nlc3MgdmFyaW91cyBpbnRlcnJ1cHRzIHRoYXQgbWlnaHQgYmUgc2VudCB0byB0aGUgc3Rh cnR1cCBwcm9jZXNzICovCisKK3N0YXRpYyB2b2lkCitQcm9jZXNzU3RhcnR1cFByb2NUZXJt aW5hdGVJbnRlcnJ1cHQodm9pZCkKK3sKKwkvKiB3ZSB3ZXJlIHJlcXVlc3RlZCB0byBleGl0 IHdpdGhvdXQgZmluaXNoaW5nIHJlY292ZXJ5LiAqLworCXByb2NfZXhpdCgxKTsKIH0KIAog LyoKQEAgLTEyMyw3ICsxMjEsOCBAQCBTdGFydHVwUHJvY1NodXRkb3duSGFuZGxlcihTSUdO QUxfQVJHUykKICAqIHByb2Nlc3MgdG8gcmVzdGFydCB0aGUgd2FscmVjZWl2ZXIuCiAgKi8K IHN0YXRpYyB2b2lkCi1TdGFydHVwUmVyZWFkQ29uZmlnKHZvaWQpCitQcm9jZXNzU3RhcnR1 cFByb2NDb25maWdSZWxvYWRJbnRlcnJ1cHQodm9pZCkKKwogewogCWNoYXIJICAgKmNvbm5p bmZvID0gcHN0cmR1cChQcmltYXJ5Q29ubkluZm8pOwogCWNoYXIJICAgKnNsb3RuYW1lID0g cHN0cmR1cChQcmltYXJ5U2xvdE5hbWUpOwpAQCAtMTUwLDI5ICsxNDksMTMgQEAgU3RhcnR1 cFJlcmVhZENvbmZpZyh2b2lkKQogCQlTdGFydHVwUmVxdWVzdFdhbFJlY2VpdmVyUmVzdGFy dCgpOwogfQogCi0vKiBQcm9jZXNzIHZhcmlvdXMgc2lnbmFscyB0aGF0IG1pZ2h0IGJlIHNl bnQgdG8gdGhlIHN0YXJ0dXAgcHJvY2VzcyAqLwogdm9pZAotUHJvY2Vzc1N0YXJ0dXBQcm9j SW50ZXJydXB0cyh2b2lkKQorU3RhcnR1cFByb2NDaGVja1Bvc3RtYXN0ZXJEZWF0aCh2b2lk KQogewogI2lmZGVmIFBPU1RNQVNURVJfUE9MTF9SQVRFX0xJTUlUCiAJc3RhdGljIHVpbnQz MiBwb3N0bWFzdGVyX3BvbGxfY291bnQgPSAwOwogI2VuZGlmCiAKLQkvKgotCSAqIFByb2Nl c3MgYW55IHJlcXVlc3RzIG9yIHNpZ25hbHMgcmVjZWl2ZWQgcmVjZW50bHkuCi0JICovCi0J aWYgKGdvdF9TSUdIVVApCi0JewotCQlnb3RfU0lHSFVQID0gZmFsc2U7Ci0JCVN0YXJ0dXBS ZXJlYWRDb25maWcoKTsKLQl9Ci0KLQkvKgotCSAqIENoZWNrIGlmIHdlIHdlcmUgcmVxdWVz dGVkIHRvIGV4aXQgd2l0aG91dCBmaW5pc2hpbmcgcmVjb3ZlcnkuCi0JICovCi0JaWYgKHNo dXRkb3duX3JlcXVlc3RlZCkKLQkJcHJvY19leGl0KDEpOwotCiAJLyoKIAkgKiBFbWVyZ2Vu Y3kgYmFpbG91dCBpZiBwb3N0bWFzdGVyIGhhcyBkaWVkLiAgVGhpcyBpcyB0byBhdm9pZCB0 aGUKIAkgKiBuZWNlc3NpdHkgZm9yIG1hbnVhbCBjbGVhbnVwIG9mIGFsbCBwb3N0bWFzdGVy IGNoaWxkcmVuLiAgRG8gdGhpcyBsZXNzCkBAIC0xODUsMTQgKzE2OCw2IEBAIFByb2Nlc3NT dGFydHVwUHJvY0ludGVycnVwdHModm9pZCkKICNlbmRpZgogCQkhUG9zdG1hc3RlcklzQWxp dmUoKSkKIAkJZXhpdCgxKTsKLQotCS8qIFByb2Nlc3MgYmFycmllciBldmVudHMgKi8KLQlp ZiAoUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nKQotCQlQcm9jZXNzUHJvY1NpZ25hbEJhcnJp ZXIoKTsKLQotCS8qIFBlcmZvcm0gbG9nZ2luZyBvZiBtZW1vcnkgY29udGV4dHMgb2YgdGhp cyBwcm9jZXNzICovCi0JaWYgKExvZ01lbW9yeUNvbnRleHRQZW5kaW5nKQotCQlQcm9jZXNz TG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOwogfQogCiAKQEAgLTIyNiwxNSArMjAxLDEz IEBAIFN0YXJ0dXBQcm9jZXNzTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVf dCBzdGFydHVwX2RhdGFfbGVuKQogCS8qCiAJICogUHJvcGVybHkgYWNjZXB0IG9yIGlnbm9y ZSBzaWduYWxzIHRoZSBwb3N0bWFzdGVyIG1pZ2h0IHNlbmQgdXMuCiAJICovCi0JcHFzaWdu YWwoU0lHSFVQLCBTdGFydHVwUHJvY1NpZ0h1cEhhbmRsZXIpOyAvKiByZWxvYWQgY29uZmln IGZpbGUgKi8KLQlwcXNpZ25hbChTSUdJTlQsIFBHX1NJR19JR04pOwkvKiBpZ25vcmUgcXVl cnkgY2FuY2VsICovCisKKwkvKiBvdmVycmlkZSBTSUdURVJNIGJlY2F1c2Ugd2UgbmVlZCBh IGxpdHRsZSBtb3JlIGNvbXBsaWNhdGVkIGhhbmRsaW5nICovCiAJcHFzaWduYWwoU0lHVEVS TSwgU3RhcnR1cFByb2NTaHV0ZG93bkhhbmRsZXIpOwkvKiByZXF1ZXN0IHNodXRkb3duICov Ci0JLyogU0lHUVVJVCBoYW5kbGVyIHdhcyBhbHJlYWR5IHNldCB1cCBieSBJbml0UG9zdG1h c3RlckNoaWxkICovCi0JSW5pdGlhbGl6ZVRpbWVvdXRzKCk7CQkvKiBlc3RhYmxpc2hlcyBT SUdBTFJNIGhhbmRsZXIgKi8KLQlwcXNpZ25hbChTSUdQSVBFLCBQR19TSUdfSUdOKTsKLQlw cXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcik7CiAJcHFzaWdu YWwoU0lHVVNSMiwgU3RhcnR1cFByb2NUcmlnZ2VySGFuZGxlcik7CiAKKwlJbml0aWFsaXpl VGltZW91dHMoKTsJCS8qIGVzdGFibGlzaGVzIFNJR0FMUk0gaGFuZGxlciAqLworCiAJLyoK IAkgKiBSZWdpc3RlciB0aW1lb3V0cyBuZWVkZWQgZm9yIHN0YW5kYnkgbW9kZQogCSAqLwpA QCAtMjQyLDYgKzIxNSwxMyBAQCBTdGFydHVwUHJvY2Vzc01haW4oY29uc3Qgdm9pZCAqc3Rh cnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlSZWdpc3RlclRpbWVvdXQo U1RBTkRCWV9USU1FT1VULCBTdGFuZGJ5VGltZW91dEhhbmRsZXIpOwogCVJlZ2lzdGVyVGlt ZW91dChTVEFOREJZX0xPQ0tfVElNRU9VVCwgU3RhbmRieUxvY2tUaW1lb3V0SGFuZGxlcik7 CiAKKwkvKiBPbmx5IHNldCB1cCBhIHN1YnNldCBvZiB0aGUgc3RhbmRhcmQgaW50ZXJydXB0 IGhhbmRsZXJzICovCisJU2V0U3RhbmRhcmRJbnRlcnJ1cHRIYW5kbGVycygpOworCVNldElu dGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX1RFUk1JTkFURSwgUHJvY2Vzc1N0YXJ0dXBQcm9j VGVybWluYXRlSW50ZXJydXB0KTsKKwlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX1RFUk1J TkFURSk7CisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCwg UHJvY2Vzc1N0YXJ0dXBQcm9jQ29uZmlnUmVsb2FkSW50ZXJydXB0KTsKKwlFbmFibGVJbnRl cnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpOworCiAJLyoKIAkgKiBVbmJsb2NrIHNp Z25hbHMgKHRoZXkgd2VyZSBibG9ja2VkIHdoZW4gdGhlIHBvc3RtYXN0ZXIgZm9ya2VkIHVz KQogCSAqLwpAQCAtMjY5LDcgKzI0OSw3IEBAIFByZVJlc3RvcmVDb21tYW5kKHZvaWQpCiAJ ICogc2h1dGRvd24gcmVxdWVzdCByZWNlaXZlZCBqdXN0IGJlZm9yZSB0aGlzLgogCSAqLwog CWluX3Jlc3RvcmVfY29tbWFuZCA9IHRydWU7Ci0JaWYgKHNodXRkb3duX3JlcXVlc3RlZCkK KwlpZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfVEVSTUlOQVRFKSkKIAkJcHJvY19l eGl0KDEpOwogfQogCkBAIC0yNzksMTggKzI1OSw2IEBAIFBvc3RSZXN0b3JlQ29tbWFuZCh2 b2lkKQogCWluX3Jlc3RvcmVfY29tbWFuZCA9IGZhbHNlOwogfQogCi1ib29sCi1Jc1Byb21v dGVTaWduYWxlZCh2b2lkKQotewotCXJldHVybiBwcm9tb3RlX3NpZ25hbGVkOwotfQotCi12 b2lkCi1SZXNldFByb21vdGVTaWduYWxlZCh2b2lkKQotewotCXByb21vdGVfc2lnbmFsZWQg PSBmYWxzZTsKLX0KLQogLyoKICAqIFNldCBhIGZsYWcgaW5kaWNhdGluZyB0aGF0IGl0J3Mg dGltZSB0byBsb2cgYSBwcm9ncmVzcyByZXBvcnQuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L3N5c2xvZ2dlci5jCmluZGV4IDY0ZDc1MTFlZTVlLi42YWI3OTQyYmUwYyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSA8 c3lzL3RpbWUuaD4KIAogI2luY2x1ZGUgImNvbW1vbi9maWxlX3Blcm0uaCIKLSNpbmNsdWRl ICJpcGMvc2lnbmFsX2hhbmRsZXJzLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgog I2luY2x1ZGUgImxpYi9zdHJpbmdpbmZvLmgiCiAjaW5jbHVkZSAibGlicHEvcHFzaWduYWwu aCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRl ICJzdG9yYWdlL2RzbS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJz dG9yYWdlL2lwYy5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJz dG9yYWdlL3BnX3NobWVtLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1 ZGUgInV0aWxzL2d1Yy5oIgpAQCAtMjkyLDE2ICsyOTEsMTMgQEAgU3lzTG9nZ2VyTWFpbihj b25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCSAq IHVwc3RyZWFtIHByb2Nlc3NlcyBhcmUgZ29uZSwgdG8gZW5zdXJlIHdlIGRvbid0IG1pc3Mg YW55IGR5aW5nIGdhc3BzIG9mCiAJICogYnJva2VuIGJhY2tlbmRzLi4uCiAJICovCi0KLQlw cXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOyAvKiBzZXQg ZmxhZyB0byByZWFkIGNvbmZpZwotCQkJCQkJCQkJCQkJCSAqIGZpbGUgKi8KIAlwcXNpZ25h bChTSUdJTlQsIFBHX1NJR19JR04pOwogCXBxc2lnbmFsKFNJR1RFUk0sIFBHX1NJR19JR04p OwogCXBxc2lnbmFsKFNJR1FVSVQsIFBHX1NJR19JR04pOwotCXBxc2lnbmFsKFNJR0FMUk0s IFBHX1NJR19JR04pOwotCXBxc2lnbmFsKFNJR1BJUEUsIFBHX1NJR19JR04pOwogCXBxc2ln bmFsKFNJR1VTUjEsIHNpZ1VzcjFIYW5kbGVyKTsJLyogcmVxdWVzdCBsb2cgcm90YXRpb24g Ki8KLQlwcXNpZ25hbChTSUdVU1IyLCBQR19TSUdfSUdOKTsKKworCVNldFN0YW5kYXJkSW50 ZXJydXB0SGFuZGxlcnMoKTsKKwlEaXNhYmxlSW50ZXJydXB0KElOVEVSUlVQVF9URVJNSU5B VEUpOwogCiAJc2lncHJvY21hc2soU0lHX1NFVE1BU0ssICZVbkJsb2NrU2lnLCBOVUxMKTsK IApAQCAtMzQyLDcgKzMzOCw3IEBAIFN5c0xvZ2dlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1 cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAl3aGVyZVRvU2VuZE91dHB1dCA9 IERlc3ROb25lOwogCiAJLyoKLQkgKiBTZXQgdXAgYSByZXVzYWJsZSBXYWl0RXZlbnRTZXQg b2JqZWN0IHdlJ2xsIHVzZSB0byB3YWl0IGZvciBvdXIgbGF0Y2gsCisJICogU2V0IHVwIGEg cmV1c2FibGUgV2FpdEV2ZW50U2V0IG9iamVjdCB3ZSdsbCB1c2UgdG8gd2FpdCBmb3IgaW50 ZXJydXB0cywKIAkgKiBhbmQgKGV4Y2VwdCBvbiBXaW5kb3dzKSBvdXIgc29ja2V0LgogCSAq CiAJICogVW5saWtlIGFsbCBvdGhlciBwb3N0bWFzdGVyIGNoaWxkIHByb2Nlc3Nlcywgd2Un bGwgaWdub3JlIHBvc3RtYXN0ZXIKQEAgLTM1Miw5ICszNDgsMTIgQEAgU3lzTG9nZ2VyTWFp bihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQog CSAqIChpbmNsdWRpbmcgdGhlIHBvc3RtYXN0ZXIpLgogCSAqLwogCXdlcyA9IENyZWF0ZVdh aXRFdmVudFNldChOVUxMLCAyKTsKLQlBZGRXYWl0RXZlbnRUb1NldCh3ZXMsIFdMX0xBVENI X1NFVCwgUEdJTlZBTElEX1NPQ0tFVCwgTXlMYXRjaCwgTlVMTCk7CisJQWRkV2FpdEV2ZW50 VG9TZXQod2VzLCBXTF9JTlRFUlJVUFQsIFBHSU5WQUxJRF9TT0NLRVQsCisJCQkJCSAgSU5U RVJSVVBUX0NPTkZJR19SRUxPQUQgfAorCQkJCQkgIElOVEVSUlVQVF9XQUlUX1dBS0VVUCwJ LyogZm9yIGxvZyByb3RhdGlvbiAqLworCQkJCQkgIE5VTEwpOwogI2lmbmRlZiBXSU4zMgot CUFkZFdhaXRFdmVudFRvU2V0KHdlcywgV0xfU09DS0VUX1JFQURBQkxFLCBzeXNsb2dQaXBl WzBdLCBOVUxMLCBOVUxMKTsKKwlBZGRXYWl0RXZlbnRUb1NldCh3ZXMsIFdMX1NPQ0tFVF9S RUFEQUJMRSwgc3lzbG9nUGlwZVswXSwgMCwgTlVMTCk7CiAjZW5kaWYKIAogCS8qIG1haW4g d29ya2VyIGxvb3AgKi8KQEAgLTM3MCwxNCArMzY5LDEzIEBAIFN5c0xvZ2dlck1haW4oY29u c3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKICNlbmRp ZgogCiAJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAqLwotCQlSZXNl dExhdGNoKE15TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtF VVApOwogCiAJCS8qCiAJCSAqIFByb2Nlc3MgYW55IHJlcXVlc3RzIG9yIHNpZ25hbHMgcmVj ZWl2ZWQgcmVjZW50bHkuCiAJCSAqLwotCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwkJ aWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQogCQl7Ci0J CQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CiAJCQlQcm9jZXNzQ29uZmlnRmlsZShQ R0NfU0lHSFVQKTsKIAogCQkJLyoKQEAgLTEyMDIsNyArMTIwMCw3IEBAIHBpcGVUaHJlYWQo dm9pZCAqYXJnKQogCQkJCSBmdGVsbG8oY3N2bG9nRmlsZSkgPj0gTG9nX1JvdGF0aW9uU2l6 ZSAqIChwZ29mZl90KSAxMDI0KSB8fAogCQkJCShqc29ubG9nRmlsZSAhPSBOVUxMICYmCiAJ CQkJIGZ0ZWxsbyhqc29ubG9nRmlsZSkgPj0gTG9nX1JvdGF0aW9uU2l6ZSAqIChwZ29mZl90 KSAxMDI0KSkKLQkJCQlTZXRMYXRjaChNeUxhdGNoKTsKKwkJCQlSYWlzZUludGVycnVwdChJ TlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCQl9CiAJCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZz eXNsb2dnZXJTZWN0aW9uKTsKIAl9CkBAIC0xMjEzLDggKzEyMTEsOCBAQCBwaXBlVGhyZWFk KHZvaWQgKmFyZykKIAkvKiBpZiB0aGVyZSdzIGFueSBkYXRhIGxlZnQgdGhlbiBmb3JjZSBp dCBvdXQgbm93ICovCiAJZmx1c2hfcGlwZV9pbnB1dChsb2didWZmZXIsICZieXRlc19pbl9s b2didWZmZXIpOwogCi0JLyogc2V0IHRoZSBsYXRjaCB0byB3YWtlbiB0aGUgbWFpbiB0aHJl YWQsIHdoaWNoIHdpbGwgcXVpdCAqLwotCVNldExhdGNoKE15TGF0Y2gpOworCS8qIHJhaXNl IHRoZSBpbnRlcnJ1cHQgdG8gd2FrZW4gdGhlIG1haW4gdGhyZWFkLCB3aGljaCB3aWxsIHF1 aXQgKi8KKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCiAJTGVh dmVDcml0aWNhbFNlY3Rpb24oJnN5c2xvZ2dlclNlY3Rpb24pOwogCV9lbmR0aHJlYWQoKTsK QEAgLTE2MDUsOSArMTYwMywxMCBAQCBSZW1vdmVMb2dyb3RhdGVTaWduYWxGaWxlcyh2b2lk KQogfQogCiAvKiBTSUdVU1IxOiBzZXQgZmxhZyB0byByb3RhdGUgbG9nZmlsZSAqLworLyog IFRPRE86IFVzZSBhbiBpbnRlcnJ1cHQgZmxhZyBmb3IgdGhpcyAqLwogc3RhdGljIHZvaWQK IHNpZ1VzcjFIYW5kbGVyKFNJR05BTF9BUkdTKQogewogCXJvdGF0aW9uX3JlcXVlc3RlZCA9 IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBU X1dBSVRfV0FLRVVQKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv d2Fsc3VtbWFyaXplci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVy LmMKaW5kZXggZWQwODBjZGFjNDkuLmNlY2Y1ZGU3ZTA4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwpAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgImNv bW1hbmRzL2RiY29tbWFuZHNfeGxvZy5oIgogI2luY2x1ZGUgImNvbW1vbi9ibGtyZWZ0YWJs ZS5oIgogI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKLSNpbmNsdWRlICJpcGMvc2lnbmFs X2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIKICNpbmNsdWRlICJw Z3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1eHByb2Nlc3MuaCIKQEAgLTQyLDcg KzQxLDYgQEAKICNpbmNsdWRlICJzdG9yYWdlL2Fpb19zdWJzeXMuaCIKICNpbmNsdWRlICJz dG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKLSNpbmNsdWRlICJzdG9y YWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKICNpbmNsdWRlICJz dG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKQEAgLTE1 Niw3ICsxNTQsNyBAQCBpbnQJCQl3YWxfc3VtbWFyeV9rZWVwX3RpbWUgPSAxMCAqIEhPVVJT X1BFUl9EQVkgKiBNSU5TX1BFUl9IT1VSOwogCiBzdGF0aWMgdm9pZCBXYWxTdW1tYXJpemVy U2h1dGRvd24oaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgWExvZ1JlY1B0ciBHZXRM YXRlc3RMU04oVGltZUxpbmVJRCAqdGxpKTsKLXN0YXRpYyB2b2lkIFByb2Nlc3NXYWxTdW1t YXJpemVySW50ZXJydXB0cyh2b2lkKTsKK3N0YXRpYyB2b2lkIFByb2Nlc3NXYWxTdW1tYXJp emVyQ29uZmlnUmVsb2FkSW50ZXJydXB0KHZvaWQpOwogc3RhdGljIFhMb2dSZWNQdHIgU3Vt bWFyaXplV0FMKFRpbWVMaW5lSUQgdGxpLCBYTG9nUmVjUHRyIHN0YXJ0X2xzbiwKIAkJCQkJ CQkgICBib29sIGV4YWN0LCBYTG9nUmVjUHRyIHN3aXRjaF9sc24sCiAJCQkJCQkJICAgWExv Z1JlY1B0ciBtYXhpbXVtX2xzbik7CkBAIC0yNDEsMTYgKzIzOSwxNSBAQCBXYWxTdW1tYXJp emVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFf bGVuKQogCQkJKGVycm1zZ19pbnRlcm5hbCgiV0FMIHN1bW1hcml6ZXIgc3RhcnRlZCIpKSk7 CiAKIAkvKgotCSAqIFByb3Blcmx5IGFjY2VwdCBvciBpZ25vcmUgc2lnbmFscyB0aGUgcG9z dG1hc3RlciBtaWdodCBzZW5kIHVzCisJICogU2V0IHVwIGludGVycnVwdCBoYW5kbGVycwog CSAqLwotCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7 Ci0JcHFzaWduYWwoU0lHSU5ULCBQR19TSUdfSUdOKTsJLyogbm8gcXVlcnkgdG8gY2FuY2Vs ICovCi0JcHFzaWduYWwoU0lHVEVSTSwgU2lnbmFsSGFuZGxlckZvclNodXRkb3duUmVxdWVz dCk7Ci0JLyogU0lHUVVJVCBoYW5kbGVyIHdhcyBhbHJlYWR5IHNldCB1cCBieSBJbml0UG9z dG1hc3RlckNoaWxkICovCi0JcHFzaWduYWwoU0lHQUxSTSwgUEdfU0lHX0lHTik7Ci0JcHFz aWduYWwoU0lHUElQRSwgUEdfU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHVVNSMSwgcHJvY3Np Z25hbF9zaWd1c3IxX2hhbmRsZXIpOwotCXBxc2lnbmFsKFNJR1VTUjIsIFBHX1NJR19JR04p OwkvKiBub3QgdXNlZCAqLworCVNldFN0YW5kYXJkSW50ZXJydXB0SGFuZGxlcnMoKTsKKwor CS8qIHdlIGNhbiBqdXN0IHByb2NfZXhpdCgwKSBhdCBhbnkgcG9pbnQgaWYgcmVxdWVzdGVk IHRvIHRlcm1pbmF0ZSAqLworCVNldEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX1RFUk1J TkFURSwgUHJvY2Vzc0F1eFByb2Nlc3NTaHV0ZG93bkludGVycnVwdCk7CisJRW5hYmxlSW50 ZXJydXB0KElOVEVSUlVQVF9URVJNSU5BVEUpOworCVNldEludGVycnVwdEhhbmRsZXIoSU5U RVJSVVBUX0NPTkZJR19SRUxPQUQsIFByb2Nlc3NXYWxTdW1tYXJpemVyQ29uZmlnUmVsb2Fk SW50ZXJydXB0KTsKKwlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQp OwogCiAJLyogQWR2ZXJ0aXNlIG91cnNlbHZlcy4gKi8KIAlvbl9zaG1lbV9leGl0KFdhbFN1 bW1hcml6ZXJTaHV0ZG93biwgKERhdHVtKSAwKTsKQEAgLTMxMCwxMCArMzA3LDggQEAgV2Fs U3VtbWFyaXplck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1 cF9kYXRhX2xlbikKIAkJICogU28gYSByZWFsbHkgZmFzdCByZXRyeSB0aW1lIGRvZXNuJ3Qg c2VlbSB0byBiZSBlc3BlY2lhbGx5CiAJCSAqIGJlbmVmaWNpYWwsIGFuZCBpdCB3aWxsIGNs dXR0ZXIgdGhlIGxvZ3MuCiAJCSAqLwotCQkodm9pZCkgV2FpdExhdGNoKE5VTEwsCi0JCQkJ CQkgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkgMTAwMDAsCi0J CQkJCQkgV0FJVF9FVkVOVF9XQUxfU1VNTUFSSVpFUl9FUlJPUik7CisJCSh2b2lkKSBXYWl0 SW50ZXJydXB0KDAsIFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAxMDAwMCwK KwkJCQkJCQkgV0FJVF9FVkVOVF9XQUxfU1VNTUFSSVpFUl9FUlJPUik7CiAJfQogCiAJLyog V2UgY2FuIG5vdyBoYW5kbGUgZXJlcG9ydChFUlJPUikgKi8KQEAgLTM1MCw3ICszNDUsNyBA QCBXYWxTdW1tYXJpemVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBz dGFydHVwX2RhdGFfbGVuKQogCQlNZW1vcnlDb250ZXh0UmVzZXQoY29udGV4dCk7CiAKIAkJ LyogUHJvY2VzcyBhbnkgc2lnbmFscyByZWNlaXZlZCByZWNlbnRseS4gKi8KLQkJUHJvY2Vz c1dhbFN1bW1hcml6ZXJJbnRlcnJ1cHRzKCk7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7 CiAKIAkJLyogSWYgaXQncyB0aW1lIHRvIHJlbW92ZSBhbnkgb2xkIFdBTCBzdW1tYXJpZXMs IGRvIHRoYXQgbm93LiAqLwogCQlNYXliZVJlbW92ZU9sZFdhbFN1bW1hcmllcygpOwpAQCAt NjI1LDggKzYyMCw4IEBAIEdldE9sZGVzdFVuc3VtbWFyaXplZExTTihUaW1lTGluZUlEICp0 bGksIGJvb2wgKmxzbl9pc19leGFjdCkKICAqCiAgKiBUaGlzIG1pZ2h0IG5vdCB3b3JrLCBi ZWNhdXNlIHRoZXJlJ3Mgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIFdBTCBzdW1tYXJpemVyCiAg KiBwcm9jZXNzIHdhcyBzdWNjZXNzZnVsbHkgc3RhcnRlZCwgYW5kIGl0IGFsc28gbWlnaHQg aGF2ZSBzdGFydGVkIGJ1dAotICogc3Vic2VxdWVudGx5IHRlcm1pbmF0ZWQuIFNvLCB1bmRl ciBub3JtYWwgY2lyY3Vtc3RhbmNlcywgdGhpcyB3aWxsIGdldCB0aGUKLSAqIGxhdGNoIHNl dCwgYnV0IHRoZXJlJ3Mgbm8gZ3VhcmFudGVlLgorICogc3Vic2VxdWVudGx5IHRlcm1pbmF0 ZWQuIFNvLCB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcywgdGhpcyB3aWxsIHNlbmQKKyAq IHRoZSBpbnRlcnJ1cHQsIGJ1dCB0aGVyZSdzIG5vIGd1YXJhbnRlZS4KICAqLwogdm9pZAog V2FrZXVwV2FsU3VtbWFyaXplcih2b2lkKQpAQCAtNjQxLDcgKzYzNiw3IEBAIFdha2V1cFdh bFN1bW1hcml6ZXIodm9pZCkKIAlMV0xvY2tSZWxlYXNlKFdBTFN1bW1hcml6ZXJMb2NrKTsK IAogCWlmIChwZ3Byb2NubyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQotCQlTZXRMYXRjaCgm R2V0UEdQcm9jQnlOdW1iZXIocGdwcm9jbm8pLT5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJy dXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgcGdwcm9jbm8pOwogfQogCiAvKgpAQCAtODUw LDI3ICs4NDUsMTcgQEAgR2V0TGF0ZXN0TFNOKFRpbWVMaW5lSUQgKnRsaSkKICAqIEludGVy cnVwdCBoYW5kbGVyIGZvciBtYWluIGxvb3Agb2YgV0FMIHN1bW1hcml6ZXIgcHJvY2Vzcy4K ICAqLwogc3RhdGljIHZvaWQKLVByb2Nlc3NXYWxTdW1tYXJpemVySW50ZXJydXB0cyh2b2lk KQorUHJvY2Vzc1dhbFN1bW1hcml6ZXJDb25maWdSZWxvYWRJbnRlcnJ1cHQodm9pZCkKIHsK LQlpZiAoUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nKQotCQlQcm9jZXNzUHJvY1NpZ25hbEJh cnJpZXIoKTsKLQotCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQotCXsKLQkJQ29uZmlnUmVs b2FkUGVuZGluZyA9IGZhbHNlOwotCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsK LQl9CisJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CiAKLQlpZiAoU2h1dGRvd25S ZXF1ZXN0UGVuZGluZyB8fCAhc3VtbWFyaXplX3dhbCkKKwkvKiBJZiAnc3VtbWFyaXplX3dh bCcgd2FzIHR1cm5lZCBvZmYsIGV4aXQgKi8KKwlpZiAoIXN1bW1hcml6ZV93YWwgJiYgIUlu dGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1RFUk1JTkFURSkpCiAJewogCQllcmVwb3J0KERF QlVHMSwKLQkJCQllcnJtc2dfaW50ZXJuYWwoIldBTCBzdW1tYXJpemVyIHNodXR0aW5nIGRv d24iKSk7Ci0JCXByb2NfZXhpdCgwKTsKKwkJCQllcnJtc2dfaW50ZXJuYWwoIldBTCBzdW1t YXJpemVyIHNodXR0aW5nIGRvd24gYmVjYXVzZSBzdW1tYXJpemVfd2FsIHdhcyBkaXNhYmxl ZCIpKTsKKwkJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX1RFUk1JTkFURSk7CiAJfQotCi0J LyogUGVyZm9ybSBsb2dnaW5nIG9mIG1lbW9yeSBjb250ZXh0cyBvZiB0aGlzIHByb2Nlc3Mg Ki8KLQlpZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCi0JCVByb2Nlc3NMb2dNZW1vcnlD b250ZXh0SW50ZXJydXB0KCk7CiB9CiAKIC8qCkBAIC0xMDE2LDcgKzEwMDEsNyBAQCBTdW1t YXJpemVXQUwoVGltZUxpbmVJRCB0bGksIFhMb2dSZWNQdHIgc3RhcnRfbHNuLCBib29sIGV4 YWN0LAogCQlYTG9nUmVjb3JkICpyZWNvcmQ7CiAJCXVpbnQ4CQlybWlkOwogCi0JCVByb2Nl c3NXYWxTdW1tYXJpemVySW50ZXJydXB0cygpOworCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OwogCiAJCS8qIFdlIHNob3VsZG4ndCBnbyBiYWNrd2FyZC4gKi8KIAkJQXNzZXJ0KHN1bW1h cnlfc3RhcnRfbHNuIDw9IHhsb2dyZWFkZXItPkVuZFJlY1B0cik7CkBAIC0xNTA3LDcgKzE0 OTIsNyBAQCBzdW1tYXJpemVyX3JlYWRfbG9jYWxfeGxvZ19wYWdlKFhMb2dSZWFkZXJTdGF0 ZSAqc3RhdGUsCiAJV0FMUmVhZEVycm9yIGVycmluZm87CiAJU3VtbWFyaXplclJlYWRMb2Nh bFhMb2dQcml2YXRlICpwcml2YXRlX2RhdGE7CiAKLQlQcm9jZXNzV2FsU3VtbWFyaXplcklu dGVycnVwdHMoKTsKKwlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJcHJpdmF0ZV9kYXRh ID0gKFN1bW1hcml6ZXJSZWFkTG9jYWxYTG9nUHJpdmF0ZSAqKQogCQlzdGF0ZS0+cHJpdmF0 ZV9kYXRhOwpAQCAtMTU0NSw3ICsxNTMwLDcgQEAgc3VtbWFyaXplcl9yZWFkX2xvY2FsX3hs b2dfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLAogCQkJCSAqIGN1cnJlbnQgdGltZWxp bmUsIHNvIG1vcmUgZGF0YSBtaWdodCBzaG93IHVwLiAgRGVsYXkgaGVyZQogCQkJCSAqIHNv IHdlIGRvbid0IHRpZ2h0LWxvb3AuCiAJCQkJICovCi0JCQkJUHJvY2Vzc1dhbFN1bW1hcml6 ZXJJbnRlcnJ1cHRzKCk7CisJCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJCQlzdW1t YXJpemVyX3dhaXRfZm9yX3dhbCgpOwogCiAJCQkJLyogUmVjaGVjayBlbmQtb2YtV0FMLiAq LwpAQCAtMTY0NSwxMSArMTYzMCwxMSBAQCBzdW1tYXJpemVyX3dhaXRfZm9yX3dhbCh2b2lk KQogCXBnc3RhdF9yZXBvcnRfd2FsKGZhbHNlKTsKIAogCS8qIE9LLCBub3cgc2xlZXAuICov Ci0JKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xf VElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCSBzbGVlcF9xdWFudGEgKiBN U19QRVJfU0xFRVBfUVVBTlRVTSwKLQkJCQkJIFdBSVRfRVZFTlRfV0FMX1NVTU1BUklaRVJf V0FMKTsKLQlSZXNldExhdGNoKE15TGF0Y2gpOworCSh2b2lkKSBXYWl0SW50ZXJydXB0KENo ZWNrRm9ySW50ZXJydXB0c01hc2sgfCBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsCisJCQkJCQkg V0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJ CQkgc2xlZXBfcXVhbnRhICogTVNfUEVSX1NMRUVQX1FVQU5UVU0sCisJCQkJCQkgV0FJVF9F VkVOVF9XQUxfU1VNTUFSSVpFUl9XQUwpOworCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9X QUlUX1dBS0VVUCk7CiAKIAkvKiBSZXNldCBjb3VudCBvZiBwYWdlcyByZWFkLiAqLwogCXBh Z2VzX3JlYWRfc2luY2VfbGFzdF9zbGVlcCA9IDA7CkBAIC0xNjk2LDcgKzE2ODEsNyBAQCBN YXliZVJlbW92ZU9sZFdhbFN1bW1hcmllcyh2b2lkKQogCQlYTG9nUmVjUHRyCW9sZGVzdF9s c24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAkJVGltZUxpbmVJRAlzZWxlY3RlZF90bGk7CiAK LQkJUHJvY2Vzc1dhbFN1bW1hcml6ZXJJbnRlcnJ1cHRzKCk7CisJCUNIRUNLX0ZPUl9JTlRF UlJVUFRTKCk7CiAKIAkJLyoKIAkJICogUGljayBhIHRpbWVsaW5lIGZvciB3aGljaCBzb21l IHN1bW1hcnkgZmlsZXMgc3RpbGwgZXhpc3Qgb24gZGlzaywKQEAgLTE3MTUsNyArMTcwMCw3 IEBAIE1heWJlUmVtb3ZlT2xkV2FsU3VtbWFyaWVzKHZvaWQpCiAJCXsKIAkJCVdhbFN1bW1h cnlGaWxlICp3cyA9IGxmaXJzdChsYyk7CiAKLQkJCVByb2Nlc3NXYWxTdW1tYXJpemVySW50 ZXJydXB0cygpOworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCQkJLyogSWYgaXQn cyBub3Qgb24gdGhpcyB0aW1lbGluZSwgaXQncyBub3QgdGltZSB0byBjb25zaWRlciBpdC4g Ki8KIAkJCWlmIChzZWxlY3RlZF90bGkgIT0gd3MtPnRsaSkKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L3dhbHdyaXRlci5jCmluZGV4IDI1NzQ1ZWQzMGIzLi43ZTIzZGUzNDUyNiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3cml0ZXIuYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3dhbHdyaXRlci5jCkBAIC00NSw5ICs0NSw4IEBACiAjaW5jbHVkZSA8 dW5pc3RkLmg+CiAKICNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgotI2luY2x1ZGUgImxpYnBx L3Bxc2lnbmFsLmgiCiAjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgotI2luY2x1ZGUgImlw Yy9zaWduYWxfaGFuZGxlcnMuaCIKKyNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgogI2lu Y2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5oIgog I2luY2x1ZGUgInBvc3RtYXN0ZXIvd2Fsd3JpdGVyLmgiCkBAIC05OCwxNiArOTcsMTUgQEAg V2FsV3JpdGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVw X2RhdGFfbGVuKQogCUF1eGlsaWFyeVByb2Nlc3NNYWluQ29tbW9uKCk7CiAKIAkvKgotCSAq IFByb3Blcmx5IGFjY2VwdCBvciBpZ25vcmUgc2lnbmFscyB0aGUgcG9zdG1hc3RlciBtaWdo dCBzZW5kIHVzCisJICogU2V0IHVwIGludGVycnVwdCBoYW5kbGVycwogCSAqLwotCXBxc2ln bmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7Ci0JcHFzaWduYWwo U0lHSU5ULCBQR19TSUdfSUdOKTsJLyogbm8gcXVlcnkgdG8gY2FuY2VsICovCi0JcHFzaWdu YWwoU0lHVEVSTSwgU2lnbmFsSGFuZGxlckZvclNodXRkb3duUmVxdWVzdCk7Ci0JLyogU0lH UVVJVCBoYW5kbGVyIHdhcyBhbHJlYWR5IHNldCB1cCBieSBJbml0UG9zdG1hc3RlckNoaWxk ICovCi0JcHFzaWduYWwoU0lHQUxSTSwgUEdfU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHUElQ RSwgUEdfU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3Ix X2hhbmRsZXIpOwotCXBxc2lnbmFsKFNJR1VTUjIsIFBHX1NJR19JR04pOwkvKiBub3QgdXNl ZCAqLworCVNldFN0YW5kYXJkSW50ZXJydXB0SGFuZGxlcnMoKTsKKworCS8qIHdlIGNhbiBy ZWxvYWQgY29uZmlnIGZpbGUgYXQgYW55IHBvaW50ICovCisJRW5hYmxlSW50ZXJydXB0KElO VEVSUlVQVF9DT05GSUdfUkVMT0FEKTsKKwkvKiB3ZSBjYW4ganVzdCBwcm9jX2V4aXQoMCkg YXQgYW55IHBvaW50IGlmIHJlcXVlc3RlZCB0byB0ZXJtaW5hdGUgKi8KKwlTZXRJbnRlcnJ1 cHRIYW5kbGVyKElOVEVSUlVQVF9URVJNSU5BVEUsIFByb2Nlc3NBdXhQcm9jZXNzU2h1dGRv d25JbnRlcnJ1cHQpOworCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfVEVSTUlOQVRFKTsK IAogCS8qCiAJICogQ3JlYXRlIGEgbWVtb3J5IGNvbnRleHQgdGhhdCB3ZSB3aWxsIGRvIGFs bCBvdXIgd29yayBpbi4gIFdlIGRvIHRoaXMgc28KQEAgLTIxMCwxMiArMjA4LDEyIEBAIFdh bFdyaXRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9k YXRhX2xlbikKIAogCQkvKgogCQkgKiBBZHZlcnRpc2Ugd2hldGhlciB3ZSBtaWdodCBoaWJl cm5hdGUgaW4gdGhpcyBjeWNsZS4gIFdlIGRvIHRoaXMKLQkJICogYmVmb3JlIHJlc2V0dGlu ZyB0aGUgbGF0Y2ggdG8gZW5zdXJlIHRoYXQgYW55IGFzeW5jIGNvbW1pdHMgd2lsbAotCQkg KiBzZWUgdGhlIGZsYWcgc2V0IGlmIHRoZXkgbWlnaHQgcG9zc2libHkgbmVlZCB0byB3YWtl IHVzIHVwLCBhbmQKLQkJICogdGhhdCB3ZSB3b24ndCBtaXNzIGFueSBzaWduYWwgdGhleSBz ZW5kIHVzLiAgKElmIHdlIGRpc2NvdmVyIHdvcmsKLQkJICogdG8gZG8gaW4gdGhlIGxhc3Qg Y3ljbGUgYmVmb3JlIHdlIHdvdWxkIGhpYmVybmF0ZSwgdGhlIGdsb2JhbCBmbGFnCi0JCSAq IHdpbGwgYmUgc2V0IHVubmVjZXNzYXJpbHksIGJ1dCBsaXR0bGUgaGFybSBpcyBkb25lLikg IEJ1dCBhdm9pZAotCQkgKiB0b3VjaGluZyB0aGUgZ2xvYmFsIGZsYWcgaWYgaXQgZG9lc24n dCBuZWVkIHRvIGNoYW5nZS4KKwkJICogYmVmb3JlIGNsZWFyaW5nIHRoZSBpbnRlcnJ1cHQg ZmxhZyB0byBlbnN1cmUgdGhhdCBhbnkgYXN5bmMgY29tbWl0cworCQkgKiB3aWxsIHNlZSB0 aGUgZmxhZyBzZXQgaWYgdGhleSBtaWdodCBwb3NzaWJseSBuZWVkIHRvIHdha2UgdXMgdXAs CisJCSAqIGFuZCB0aGF0IHdlIHdvbid0IG1pc3MgYW55IHNpZ25hbCB0aGV5IHNlbmQgdXMu ICAoSWYgd2UgZGlzY292ZXIKKwkJICogd29yayB0byBkbyBpbiB0aGUgbGFzdCBjeWNsZSBi ZWZvcmUgd2Ugd291bGQgaGliZXJuYXRlLCB0aGUgZ2xvYmFsCisJCSAqIGZsYWcgd2lsbCBi ZSBzZXQgdW5uZWNlc3NhcmlseSwgYnV0IGxpdHRsZSBoYXJtIGlzIGRvbmUuKSAgQnV0CisJ CSAqIGF2b2lkIHRvdWNoaW5nIHRoZSBnbG9iYWwgZmxhZyBpZiBpdCBkb2Vzbid0IG5lZWQg dG8gY2hhbmdlLgogCQkgKi8KIAkJaWYgKGhpYmVybmF0aW5nICE9IChsZWZ0X3RpbGxfaGli ZXJuYXRlIDw9IDEpKQogCQl7CkBAIC0yMjQsMTAgKzIyMiwxMCBAQCBXYWxXcml0ZXJNYWlu KGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJ CX0KIAogCQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8KLQkJUmVz ZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FL RVVQKTsKIAotCQkvKiBQcm9jZXNzIGFueSBzaWduYWxzIHJlY2VpdmVkIHJlY2VudGx5ICov Ci0JCVByb2Nlc3NNYWluTG9vcEludGVycnVwdHMoKTsKKwkJLyogUHJvY2VzcyBhbnkgaW50 ZXJydXB0cyByZWNlaXZlZCByZWNlbnRseSAqLworCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OwogCiAJCS8qCiAJCSAqIERvIHdoYXQgd2UncmUgaGVyZSBmb3I7IHRoZW4sIGlmIFhMb2dC YWNrZ3JvdW5kRmx1c2goKSBmb3VuZCB1c2VmdWwKQEAgLTI1MSw5ICsyNDksOSBAQCBXYWxX cml0ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0 YV9sZW4pCiAJCWVsc2UKIAkJCWN1cl90aW1lb3V0ID0gV2FsV3JpdGVyRGVsYXkgKiBISUJF Uk5BVEVfRkFDVE9SOwogCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCSBX TF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJ CSBjdXJfdGltZW91dCwKLQkJCQkJCSBXQUlUX0VWRU5UX1dBTF9XUklURVJfTUFJTik7CisJ CSh2b2lkKSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfCBJTlRFUlJV UFRfV0FJVF9XQUtFVVAsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBX TF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSBjdXJfdGltZW91dCwKKwkJCQkJCQkgV0FJ VF9FVkVOVF9XQUxfV1JJVEVSX01BSU4pOwogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKaW5kZXgg MjZlYjJiYjZiZmUuLmQ2MTgxNjkzMjQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtMTU4LDcg KzE1OCw2IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImlwYy9pbnRl cnJ1cHQuaCIKLSNpbmNsdWRlICJpcGMvc2lnbmFsX2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAi bGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJsaWJwcS9wcW1xLmgiCiAjaW5jbHVkZSAi cGdzdGF0LmgiCkBAIC0xNjcsMTAgKzE2Niw4IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24v b3JpZ2luLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCi0j aW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJv dC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRp bHMuaCIKQEAgLTcwNSwzMCArNzAyLDYgQEAgcGFfcHJvY2Vzc19zcG9vbGVkX21lc3NhZ2Vz X2lmX3JlcXVpcmVkKHZvaWQpCiAJcmV0dXJuIHRydWU7CiB9CiAKLS8qCi0gKiBJbnRlcnJ1 cHQgaGFuZGxlciBmb3IgbWFpbiBsb29wIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLSAq Lwotc3RhdGljIHZvaWQKLVByb2Nlc3NQYXJhbGxlbEFwcGx5SW50ZXJydXB0cyh2b2lkKQot ewotCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7Ci0KLQlpZiAoU2h1dGRvd25SZXF1ZXN0UGVu ZGluZykKLQl7Ci0JCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGlj YXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhh cyBmaW5pc2hlZCIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKLQotCQlwcm9j X2V4aXQoMCk7Ci0JfQotCi0JaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCi0JewotCQlDb25m aWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7Ci0JCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdI VVApOwotCX0KLX0KLQogLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIG1haW4gbG9vcC4gKi8K IHN0YXRpYyB2b2lkCiBMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Aoc2htX21xX2hhbmRsZSAq bXFoKQpAQCAtNzU4LDcgKzczMSwxOCBAQCBMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Aoc2ht X21xX2hhbmRsZSAqbXFoKQogCQl2b2lkCSAgICpkYXRhOwogCQlTaXplCQlsZW47CiAKLQkJ UHJvY2Vzc1BhcmFsbGVsQXBwbHlJbnRlcnJ1cHRzKCk7CisJCUNIRUNLX0ZPUl9JTlRFUlJV UFRTKCk7CisJCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9TSFVURE9XTl9QQVJB TExFTF9BUFBMWV9XT1JLRVIpKQorCQl7CisJCQllcmVwb3J0KExPRywKKwkJCQkJKGVycm1z ZygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNj cmlwdGlvbiBcIiVzXCIgaGFzIGZpbmlzaGVkIiwKKwkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+ bmFtZSkpKTsKKwkJCXByb2NfZXhpdCgwKTsKKwkJfQorCQlpZiAoQ29uc3VtZUludGVycnVw dChJTlRFUlJVUFRfVEVSTUlOQVRFKSkKKwkJCVByb2Nlc3NUZXJtaW5hdGVJbnRlcnJ1cHQo KTsKKwkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQor CQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CiAKIAkJLyogRW5zdXJlIHdlIGFy ZSByZWFkaW5nIHRoZSBkYXRhIGludG8gb3VyIG1lbW9yeSBjb250ZXh0LiAqLwogCQlNZW1v cnlDb250ZXh0U3dpdGNoVG8oQXBwbHlNZXNzYWdlQ29udGV4dCk7CkBAIC04MDQsMTMgKzc4 OCwxNyBAQCBMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Aoc2htX21xX2hhbmRsZSAqbXFoKQog CQkJCWludAkJCXJjOwogCiAJCQkJLyogV2FpdCBmb3IgbW9yZSB3b3JrLiAqLwotCQkJCXJj ID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElN RU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJICAgMTAwMEwsCi0JCQkJCQkJ ICAgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU4pOwotCi0JCQkJaWYg KHJjICYgV0xfTEFUQ0hfU0VUKQotCQkJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJCXJj ID0gV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkJCQkJICAg SU5URVJSVVBUX1NIVVRET1dOX1BBUkFMTEVMX0FQUExZX1dPUktFUiB8CisJCQkJCQkJCSAg IElOVEVSUlVQVF9URVJNSU5BVEUgfAorCQkJCQkJCQkgICBJTlRFUlJVUFRfQ09ORklHX1JF TE9BRCB8CisJCQkJCQkJCSAgIElOVEVSUlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkJCQkJICAg V0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJ CQkJCSAgIDEwMDBMLAorCQkJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxf QVBQTFlfTUFJTik7CisKKwkJCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCisJCQkJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAKIAkJCQkvKgogCQkJCSAqIEZv cmNlIHN0YXRzIHJlcG9ydGluZyB0byBhdm9pZCBsb25nIGRlbGF5cy4gVGhlcmUgY2FuIGJl CkBAIC04NTIsOSArODQwLDggQEAgTG9naWNhbFBhcmFsbGVsQXBwbHlMb29wKHNobV9tcV9o YW5kbGUgKm1xaCkKIHN0YXRpYyB2b2lkCiBwYV9zaHV0ZG93bihpbnQgY29kZSwgRGF0dW0g YXJnKQogewotCVNlbmRQcm9jU2lnbmFsKE15TG9naWNhbFJlcFdvcmtlci0+bGVhZGVyX3Bp ZCwKLQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCi0JCQkJICAgSU5WQUxJRF9Q Uk9DX05VTUJFUik7CisJU2VuZEludGVycnVwdChJTlRFUlJVUFRfUEFSQUxMRUxfTUVTU0FH RSwKKwkJCQkgIE15TG9naWNhbFJlcFdvcmtlci0+bGVhZGVyX3BncHJvY25vKTsKIAogCWRz bV9kZXRhY2goKGRzbV9zZWdtZW50ICopIERhdHVtR2V0UG9pbnRlcihhcmcpKTsKIH0KQEAg LTg3OSwxNSArODY2LDE4IEBAIFBhcmFsbGVsQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5f YXJnKQogCUluaXRpYWxpemluZ0FwcGx5V29ya2VyID0gdHJ1ZTsKIAogCS8qCi0JICogU2V0 dXAgc2lnbmFsIGhhbmRsaW5nLgorCSAqIFNldHVwIGludGVycnVwdCBoYW5kbGluZy4KIAkg KgotCSAqIE5vdGU6IFdlIGludGVudGlvbmFsbHkgdXNlZCBTSUdVU1IyIHRvIHRyaWdnZXIg YSBncmFjZWZ1bCBzaHV0ZG93bgotCSAqIGluaXRpYXRlZCBieSB0aGUgbGVhZGVyIGFwcGx5 IHdvcmtlci4gVGhpcyBoZWxwcyB0byBkaWZmZXJlbnRpYXRlIGl0Ci0JICogZnJvbSB0aGUg Y2FzZSB3aGVyZSB3ZSBhYm9ydCB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBhbmQgZXhpdCBv bgotCSAqIHJlY2VpdmluZyBTSUdURVJNLgorCSAqIEluIGFkZGl0aW9uIHRvIHRoZSB1c3Vh bCBpbnRlcnJ1cHRzLCB3ZSB1c2UKKwkgKiBJTlRFUlJVUFRfU0hVVERPV05fUEFSQUxMRUxf QVBQTFlfV09SS0VSIGFzIGFsdGVybmF0aXZlIHRvCisJICogSU5URVJSVVBUX1RFUk1JTkFU RSB0byB0cmlnZ2VyIGEgZ3JhY2VmdWwgc2h1dGRvd24gaW5pdGlhdGVkIGJ5IHRoZQorCSAq IGxlYWRlciBhcHBseSB3b3JrZXIuIFRoaXMgaGVscHMgdG8gZGlmZmVyZW50aWF0ZSBpdCBm cm9tIHRoZSBjYXNlIHdoZXJlCisJICogd2UgYWJvcnQgdGhlIGN1cnJlbnQgdHJhbnNhY3Rp b24gYW5kIGV4aXQgb24gcmVjZWl2aW5nIFNJR1RFUk0uCisJICoKKwkgKiBGSVhNRTogSXQg aGFzIHRoZSBzYW1lIGVmZmVjdCwgYnV0IHByaW50cyBhbiBhZGRpdGlvbmFsIG1lc3NhZ2Ug dG8gdGhlCisJICogbG9nLiBJcyBpdCB3b3J0aCBkaXN0aW5ndWlzaGluZywgYW5kIGRvIHdl IGV2ZW4gd2FudCB0aGUgbG9nIG1lc3NhZ2U/CiAJICovCi0JcHFzaWduYWwoU0lHSFVQLCBT aWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKLQlwcXNpZ25hbChTSUdVU1IyLCBTaWdu YWxIYW5kbGVyRm9yU2h1dGRvd25SZXF1ZXN0KTsKKwlTZXRTdGFuZGFyZEludGVycnVwdEhh bmRsZXJzKCk7CiAJQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7CiAKIAkvKgpA QCAtOTQ4LDggKzkzOCw3IEBAIFBhcmFsbGVsQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5f YXJnKQogCWVycm9yX21xaCA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CiAKIAlw cV9yZWRpcmVjdF90b19zaG1fbXEoc2VnLCBlcnJvcl9tcWgpOwotCXBxX3NldF9wYXJhbGxl bF9sZWFkZXIoTXlMb2dpY2FsUmVwV29ya2VyLT5sZWFkZXJfcGlkLAotCQkJCQkJICAgSU5W QUxJRF9QUk9DX05VTUJFUik7CisJcHFfc2V0X3BhcmFsbGVsX2xlYWRlcihNeUxvZ2ljYWxS ZXBXb3JrZXItPmxlYWRlcl9wZ3Byb2Nubyk7CiAKIAlNeUxvZ2ljYWxSZXBXb3JrZXItPmxh c3Rfc2VuZF90aW1lID0gTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3JlY3ZfdGltZSA9CiAJ CU15TG9naWNhbFJlcFdvcmtlci0+cmVwbHlfdGltZSA9IDA7CkBAIC05ODYsOSArOTc1LDgg QEAgUGFyYWxsZWxBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAKIAkvKgogCSAq IFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgbXVzdCBub3QgZ2V0IGhlcmUgYmVjYXVzZSB0 aGUgcGFyYWxsZWwgYXBwbHkKLQkgKiB3b3JrZXIgd2lsbCBvbmx5IHN0b3Agd2hlbiBpdCBy ZWNlaXZlcyBhIFNJR1RFUk0gb3IgU0lHVVNSMiBmcm9tIHRoZQotCSAqIGxlYWRlciwgb3Ig U0lHSU5UIGZyb20gaXRzZWxmLCBvciB3aGVuIHRoZXJlIGlzIGFuIGVycm9yLiBOb25lIG9m IHRoZXNlCi0JICogY2FzZXMgd2lsbCBhbGxvdyB0aGUgY29kZSB0byByZWFjaCBoZXJlLgor CSAqIHdvcmtlciB3aWxsIG9ubHkgc3RvcCB3aGVuIGluc3RydWN0ZWQgYnkgdGhlIGxlYWRl ciwgb3Igd2hlbiB0aGVyZSBpcworCSAqIGFuIGVycm9yLiBOb25lIG9mIHRoZXNlIGNhc2Vz IHdpbGwgYWxsb3cgdGhlIGNvZGUgdG8gcmVhY2ggaGVyZS4KIAkgKi8KIAlBc3NlcnQoZmFs c2UpOwogfQpAQCAtMTE1MCwxNCArMTEzOCwxNSBAQCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSkK IAkJQXNzZXJ0KHJlc3VsdCA9PSBTSE1fTVFfV09VTERfQkxPQ0spOwogCiAJCS8qIFdhaXQg YmVmb3JlIHJldHJ5aW5nLiAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkg ICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJ CQkJICAgU0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMsCi0JCQkJCSAgIFdBSVRfRVZFTlRf TE9HSUNBTF9BUFBMWV9TRU5EX0RBVEEpOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoQ2hlY2tG b3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkgICBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsCisJ CQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwKKwkJCQkJCSAgIFNITV9TRU5EX1JFVFJZX0lOVEVSVkFMX01TLAorCQkJCQkJICAgV0FJ VF9FVkVOVF9MT0dJQ0FMX0FQUExZX1NFTkRfREFUQSk7CiAKLQkJaWYgKHJjICYgV0xfTEFU Q0hfU0VUKQorCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0TGF0Y2go TXlMYXRjaCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwog CQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJfQogCkBAIC0xMjIyLDEzICsxMjExLDE0 IEBAIHBhX3dhaXRfZm9yX3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvLAogCQkJYnJlYWs7CiAKIAkJLyogV2FpdCB0byBiZSBzaWduYWxsZWQuICovCi0JCSh2 b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1F T1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCSAxMEwsCi0JCQkJCQkgV0FJVF9F VkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRSk7Ci0KLQkJLyogUmVz ZXQgdGhlIGxhdGNoIHNvIHdlIGRvbid0IHNwaW4uICovCi0JCVJlc2V0TGF0Y2goTXlMYXRj aCk7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfAor CQkJCQkJCSBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8 IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSAxMEwsCisJCQkJ CQkJIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9TVEFURV9DSEFOR0UpOwor CisJCS8qIENsZWFyIHRoZSBpbnRlcnJ1cHQgZmxhZyBzbyB3ZSBkb24ndCBzcGluLiAqLwor CQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCiAJCS8qIEFuIGlu dGVycnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICovCiAJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2xhdW5jaGVyLmMKaW5kZXggOTYyMjM4YjgyMDIuLjE3MjkwMjA4MzUyIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBAIC0yNyw3 ICsyNyw2IEBACiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgImlwYy9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJsaWIvZHNoYXNoLmgiCi0jaW5jbHVkZSAiaXBjL3NpZ25hbF9o YW5kbGVycy5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIv Ymd3b3JrZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIK QEAgLTYwLDcgKzU5LDcgQEAgTG9naWNhbFJlcFdvcmtlciAqTXlMb2dpY2FsUmVwV29ya2Vy ID0gTlVMTDsKIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBDdHhTdHJ1Y3QKIHsKIAkvKiBT dXBlcnZpc29yIHByb2Nlc3MuICovCi0JcGlkX3QJCWxhdW5jaGVyX3BpZDsKKwlQcm9jTnVt YmVyCWxhdW5jaGVyX3Byb2NubzsKIAogCS8qIEhhc2ggdGFibGUgaG9sZGluZyBsYXN0IHN0 YXJ0IHRpbWVzIG9mIHN1YnNjcmlwdGlvbnMnIGFwcGx5IHdvcmtlcnMuICovCiAJZHNhX2hh bmRsZQlsYXN0X3N0YXJ0X2RzYTsKQEAgLTE5MywxMyArMTkyLDExIEBAIFdhaXRGb3JSZXBs aWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsCiAJCQkJCQkJ ICAgQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqaGFuZGxlKQogewogCWJvb2wJCXJlc3VsdCA9 IGZhbHNlOwotCWJvb2wJCWRyb3BwZWRfbGF0Y2ggPSBmYWxzZTsKIAogCWZvciAoOzspCiAJ ewogCQlCZ3dIYW5kbGVTdGF0dXMgc3RhdHVzOwogCQlwaWRfdAkJcGlkOwotCQlpbnQJCQly YzsKIAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCkBAIC0yMjksMjggKzIyNiwxNSBA QCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29y a2VyLAogCQl9CiAKIAkJLyoKLQkJICogV2UgbmVlZCB0aW1lb3V0IGJlY2F1c2Ugd2UgZ2Vu ZXJhbGx5IGRvbid0IGdldCBub3RpZmllZCB2aWEgbGF0Y2gKLQkJICogYWJvdXQgdGhlIHdv cmtlciBhdHRhY2guICBCdXQgd2UgZG9uJ3QgZXhwZWN0IHRvIGhhdmUgdG8gd2FpdCBsb25n LgorCQkgKiBXZSBuZWVkIHRpbWVvdXQgYmVjYXVzZSB3ZSBnZW5lcmFsbHkgZG9uJ3QgZ2V0 IG5vdGlmaWVkIHZpYSBhbgorCQkgKiBpbnRlcnJ1cHQgYWJvdXQgdGhlIHdvcmtlciBhdHRh Y2guICBCdXQgd2UgZG9uJ3QgZXhwZWN0IHRvIGhhdmUgdG8KKwkJICogd2FpdCBsb25nLgog CQkgKi8KLQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VU IHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCSAgIDEwTCwgV0FJ VF9FVkVOVF9CR1dPUktFUl9TVEFSVFVQKTsKLQotCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQp Ci0JCXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7Ci0JCQlDSEVDS19GT1JfSU5URVJSVVBU UygpOwotCQkJZHJvcHBlZF9sYXRjaCA9IHRydWU7Ci0JCX0KKwkJKHZvaWQpIFdhaXRJbnRl cnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzaywKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwg V0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJIDEwTCwgV0FJVF9F VkVOVF9CR1dPUktFUl9TVEFSVFVQKTsKIAl9CiAKLQkvKgotCSAqIElmIHdlIGhhZCB0byBj bGVhciBhIGxhdGNoIGV2ZW50IGluIG9yZGVyIHRvIHdhaXQsIGJlIHN1cmUgdG8gcmVzdG9y ZQotCSAqIGl0IGJlZm9yZSBleGl0aW5nLiAgT3RoZXJ3aXNlIGNhbGxlciBtYXkgbWlzcyBl dmVudHMuCi0JICovCi0JaWYgKGRyb3BwZWRfbGF0Y2gpCi0JCVNldExhdGNoKE15TGF0Y2gp OwotCiAJcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDgzLDYgKzQ2Nyw3IEBAIHJldHJ5Ogog CXdvcmtlci0+cmVsc3RhdGVfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJd29ya2VyLT5z dHJlYW1fZmlsZXNldCA9IE5VTEw7CiAJd29ya2VyLT5sZWFkZXJfcGlkID0gaXNfcGFyYWxs ZWxfYXBwbHlfd29ya2VyID8gTXlQcm9jUGlkIDogSW52YWxpZFBpZDsKKwl3b3JrZXItPmxl YWRlcl9wZ3Byb2NubyA9IGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlciA/IE15UHJvY051bWJl ciA6IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJd29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGlz X3BhcmFsbGVsX2FwcGx5X3dvcmtlcjsKIAl3b3JrZXItPm9sZGVzdF9ub25yZW1vdmFibGVf eGlkID0gcmV0YWluX2RlYWRfdHVwbGVzCiAJCT8gTXlSZXBsaWNhdGlvblNsb3QtPmRhdGEu eG1pbgpAQCAtNTQ5LDcgKzUzNCw2IEBAIHJldHJ5OgogCX0KIAogCWJndy5iZ3dfcmVzdGFy dF90aW1lID0gQkdXX05FVkVSX1JFU1RBUlQ7Ci0JYmd3LmJnd19ub3RpZnlfcGlkID0gTXlQ cm9jUGlkOwogCWJndy5iZ3dfbWFpbl9hcmcgPSBJbnQzMkdldERhdHVtKHNsb3QpOwogCiAJ aWYgKCFSZWdpc3RlckR5bmFtaWNCYWNrZ3JvdW5kV29ya2VyKCZiZ3csICZiZ3dfaGFuZGxl KSkKQEAgLTU3Niw3ICs1NjAsNyBAQCByZXRyeToKICAqIHNsb3QuCiAgKi8KIHN0YXRpYyB2 b2lkCi1sb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2ljYWxSZXBXb3JrZXIg KndvcmtlciwgaW50IHNpZ25vKQorbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbChM b2dpY2FsUmVwV29ya2VyICp3b3JrZXIsIEludGVycnVwdE1hc2sgaW50ZXJydXB0KQogewog CXVpbnQxNgkJZ2VuZXJhdGlvbjsKIApAQCAtNTk0LDIwICs1NzgsMTQgQEAgbG9naWNhbHJl cF93b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsIGludCBz aWdubykKIAkgKi8KIAl3aGlsZSAod29ya2VyLT5pbl91c2UgJiYgIXdvcmtlci0+cHJvYykK IAl7Ci0JCWludAkJCXJjOwotCiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxv Y2spOwogCi0JCS8qIFdhaXQgYSBiaXQgLS0tIHdlIGRvbid0IGV4cGVjdCB0byBoYXZlIHRv IHdhaXQgbG9uZy4gKi8KLQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xf TEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCSAg IDEwTCwgV0FJVF9FVkVOVF9CR1dPUktFUl9TVEFSVFVQKTsKKwkJQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKTsKIAotCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCi0JCXsKLQkJCVJlc2V0TGF0 Y2goTXlMYXRjaCk7Ci0JCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwotCQl9CisJCS8qIFdh aXQgYSBiaXQgLS0tIHdlIGRvbid0IGV4cGVjdCB0byBoYXZlIHRvIHdhaXQgbG9uZy4gKi8K KwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzaywKKwkJCQkJ CQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJ CQkJCQkJIDEwTCwgV0FJVF9FVkVOVF9CR1dPUktFUl9TVEFSVFVQKTsKIAogCQkvKiBSZWNo ZWNrIHdvcmtlciBzdGF0dXMuICovCiAJCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtl ckxvY2ssIExXX1NIQVJFRCk7CkBAIC02MjYsMjkgKzYwNCwyMyBAQCBsb2dpY2FscmVwX3dv cmtlcl9zdG9wX2ludGVybmFsKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwgaW50IHNpZ25v KQogCX0KIAogCS8qIE5vdyB0ZXJtaW5hdGUgdGhlIHdvcmtlciAuLi4gKi8KLQlraWxsKHdv cmtlci0+cHJvYy0+cGlkLCBzaWdubyk7CisJU2VuZEludGVycnVwdChpbnRlcnJ1cHQsIEdl dE51bWJlckZyb21QR1Byb2Mod29ya2VyLT5wcm9jKSk7CiAKIAkvKiAuLi4gYW5kIHdhaXQg Zm9yIGl0IHRvIGRpZS4gKi8KIAlmb3IgKDs7KQogCXsKLQkJaW50CQkJcmM7Ci0KIAkJLyog aXMgaXQgZ29uZT8gKi8KIAkJaWYgKCF3b3JrZXItPnByb2MgfHwgd29ya2VyLT5nZW5lcmF0 aW9uICE9IGdlbmVyYXRpb24pCiAJCQlicmVhazsKIAogCQlMV0xvY2tSZWxlYXNlKExvZ2lj YWxSZXBXb3JrZXJMb2NrKTsKIAotCQkvKiBXYWl0IGEgYml0IC0tLSB3ZSBkb24ndCBleHBl Y3QgdG8gaGF2ZSB0byB3YWl0IGxvbmcuICovCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gs Ci0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RF QVRILAotCQkJCQkgICAxMEwsIFdBSVRfRVZFTlRfQkdXT1JLRVJfU0hVVERPV04pOworCQlD SEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKLQkJ ewotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKLQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7 Ci0JCX0KKwkJLyogV2FpdCBhIGJpdCAtLS0gd2UgZG9uJ3QgZXhwZWN0IHRvIGhhdmUgdG8g d2FpdCBsb25nLiAqLworCQkodm9pZCkgV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVw dHNNYXNrLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9P Tl9QTV9ERUFUSCwKKwkJCQkJCQkgMTBMLCBXQUlUX0VWRU5UX0JHV09SS0VSX1NIVVRET1dO KTsKIAogCQlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQp OwogCX0KQEAgLTY3Myw3ICs2NDUsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKExvZ2lj YWxSZXBXb3JrZXJUeXBlIHd0eXBlLCBPaWQgc3ViaWQsIE9pZCByZWxpZCkKIAlpZiAod29y a2VyKQogCXsKIAkJQXNzZXJ0KCFpc1BhcmFsbGVsQXBwbHlXb3JrZXIod29ya2VyKSk7Ci0J CWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwod29ya2VyLCBTSUdURVJNKTsKKwkJ bG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIsIElOVEVSUlVQVF9URVJN SU5BVEUpOwogCX0KIAogCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwpA QCAtNjgyLDggKzY1NCw5IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoTG9naWNhbFJlcFdv cmtlclR5cGUgd3R5cGUsIE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogLyoKICAqIFN0b3AgdGhl IGdpdmVuIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyLgogICoK LSAqIE5vZGUgdGhhdCB0aGUgZnVuY3Rpb24gc2VuZHMgU0lHVVNSMiBpbnN0ZWFkIG9mIFNJ R1RFUk0gdG8gdGhlIHBhcmFsbGVsIGFwcGx5Ci0gKiB3b3JrZXIgc28gdGhhdCB0aGUgd29y a2VyIGV4aXRzIGNsZWFubHkuCisgKiBOb2RlIHRoYXQgdGhlIGZ1bmN0aW9uIHNlbmRzIElO VEVSUlVQVF9TSFVURE9XTl9QQVJBTExFTF9BUFBMWV9XT1JLRVIKKyAqIGluc3RlYWQgb2Yg SU5URVJSVVBUX1RFUk1JTkFURSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHNvIHRo YXQgdGhlCisgKiB3b3JrZXIgZXhpdHMgbW9yZSBjbGVhbmx5LgogICovCiB2b2lkCiBsb2dp Y2FscmVwX3BhX3dvcmtlcl9zdG9wKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykK QEAgLTcyMCwxMyArNjkzLDEzIEBAIGxvZ2ljYWxyZXBfcGFfd29ya2VyX3N0b3AoUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQogCSAqIE9ubHkgc3RvcCB0aGUgd29ya2VyIGlm IHRoZSBnZW5lcmF0aW9uIG1hdGNoZXMgYW5kIHRoZSB3b3JrZXIgaXMgYWxpdmUuCiAJICov CiAJaWYgKHdvcmtlci0+Z2VuZXJhdGlvbiA9PSBnZW5lcmF0aW9uICYmIHdvcmtlci0+cHJv YykKLQkJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIsIFNJR1VTUjIp OworCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHdvcmtlciwgSU5URVJSVVBU X1NIVVRET1dOX1BBUkFMTEVMX0FQUExZX1dPUktFUik7CiAKIAlMV0xvY2tSZWxlYXNlKExv Z2ljYWxSZXBXb3JrZXJMb2NrKTsKIH0KIAogLyoKLSAqIFdha2UgdXAgKHVzaW5nIGxhdGNo KSBhbnkgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgdGhhdCBtYXRjaGVzIHRoZQorICog V2FrZSB1cCAodXNpbmcgaW50ZXJydXB0KSBhbnkgbG9naWNhbCByZXBsaWNhdGlvbiB3b3Jr ZXIgdGhhdCBtYXRjaGVzIHRoZQogICogc3BlY2lmaWVkIHdvcmtlciB0eXBlLCBzdWJzY3Jp cHRpb24gaWQsIGFuZCByZWxhdGlvbiBpZC4KICAqLwogdm9pZApAQCAtNzQ4LDcgKzcyMSw3 IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3dha2V1cChMb2dpY2FsUmVwV29ya2VyVHlwZSB3dHlw ZSwgT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiB9CiAKIC8qCi0gKiBXYWtlIHVwICh1c2luZyBs YXRjaCkgdGhlIHNwZWNpZmllZCBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlci4KKyAqIFdh a2UgdXAgKHVzaW5nIGludGVycnVwdCkgdGhlIHNwZWNpZmllZCBsb2dpY2FsIHJlcGxpY2F0 aW9uIHdvcmtlci4KICAqCiAgKiBDYWxsZXIgbXVzdCBob2xkIGxvY2ssIGVsc2Ugd29ya2Vy LT5wcm9jIGNvdWxkIGNoYW5nZSB1bmRlciB1cy4KICAqLwpAQCAtNzU3LDcgKzczMCw3IEBA IGxvZ2ljYWxyZXBfd29ya2VyX3dha2V1cF9wdHIoTG9naWNhbFJlcFdvcmtlciAqd29ya2Vy KQogewogCUFzc2VydChMV0xvY2tIZWxkQnlNZShMb2dpY2FsUmVwV29ya2VyTG9jaykpOwog Ci0JU2V0TGF0Y2goJndvcmtlci0+cHJvYy0+cHJvY0xhdGNoKTsKKwlTZW5kSW50ZXJydXB0 KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgR2V0TnVtYmVyRnJvbVBHUHJvYyh3b3JrZXItPnBy b2MpKTsKIH0KIAogLyoKQEAgLTgyNSw3ICs3OTgsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9k ZXRhY2godm9pZCkKIAkJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAoTG9naWNhbFJlcFdvcmtl ciAqKSBsZmlyc3QobGMpOwogCiAJCQlpZiAoaXNQYXJhbGxlbEFwcGx5V29ya2VyKHcpKQot CQkJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwodywgU0lHVEVSTSk7CisJCQkJ bG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3LCBJTlRFUlJVUFRfVEVSTUlOQVRF KTsKIAkJfQogCiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwpAQCAt ODU3LDYgKzgzMCw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX2NsZWFudXAoTG9naWNhbFJlcFdv cmtlciAqd29ya2VyKQogCXdvcmtlci0+c3ViaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+ cmVsaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+bGVhZGVyX3BpZCA9IEludmFsaWRQaWQ7 CisJd29ya2VyLT5sZWFkZXJfcGdwcm9jbm8gPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCXdv cmtlci0+cGFyYWxsZWxfYXBwbHkgPSBmYWxzZTsKIH0KIApAQCAtODY4LDcgKzg0Miw3IEBA IGxvZ2ljYWxyZXBfd29ya2VyX2NsZWFudXAoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKQog c3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfbGF1bmNoZXJfb25leGl0KGludCBjb2RlLCBEYXR1 bSBhcmcpCiB7Ci0JTG9naWNhbFJlcEN0eC0+bGF1bmNoZXJfcGlkID0gMDsKKwlMb2dpY2Fs UmVwQ3R4LT5sYXVuY2hlcl9wcm9jbm8gPSBJTlZBTElEX1BST0NfTlVNQkVSOwogfQogCiAv KgpAQCAtMTAzMiw3ICsxMDA2LDYgQEAgQXBwbHlMYXVuY2hlclJlZ2lzdGVyKHZvaWQpCiAJ c25wcmludGYoYmd3LmJnd190eXBlLCBCR1dfTUFYTEVOLAogCQkJICJsb2dpY2FsIHJlcGxp Y2F0aW9uIGxhdW5jaGVyIik7CiAJYmd3LmJnd19yZXN0YXJ0X3RpbWUgPSA1OwotCWJndy5i Z3dfbm90aWZ5X3BpZCA9IDA7CiAJYmd3LmJnd19tYWluX2FyZyA9IChEYXR1bSkgMDsKIAog CVJlZ2lzdGVyQmFja2dyb3VuZFdvcmtlcigmYmd3KTsKQEAgLTEwNDcsNiArMTAyMCw3IEBA IEFwcGx5TGF1bmNoZXJTaG1lbUluaXQodm9pZCAqYXJnKQogewogCWludAkJCXNsb3Q7CiAK KwlMb2dpY2FsUmVwQ3R4LT5sYXVuY2hlcl9wcm9jbm8gPSBJTlZBTElEX1BST0NfTlVNQkVS OwogCUxvZ2ljYWxSZXBDdHgtPmxhc3Rfc3RhcnRfZHNhID0gRFNBX0hBTkRMRV9JTlZBTElE OwogCUxvZ2ljYWxSZXBDdHgtPmxhc3Rfc3RhcnRfZHNoID0gRFNIQVNIX0hBTkRMRV9JTlZB TElEOwogCkBAIC0xMTk0LDggKzExNjgsMTIgQEAgQXBwbHlMYXVuY2hlcldha2V1cEF0Q29t bWl0KHZvaWQpCiB2b2lkCiBBcHBseUxhdW5jaGVyV2FrZXVwKHZvaWQpCiB7Ci0JaWYgKExv Z2ljYWxSZXBDdHgtPmxhdW5jaGVyX3BpZCAhPSAwKQotCQlraWxsKExvZ2ljYWxSZXBDdHgt PmxhdW5jaGVyX3BpZCwgU0lHVVNSMSk7CisJdm9sYXRpbGUgTG9naWNhbFJlcEN0eFN0cnVj dCAqcmVwY3R4ID0gTG9naWNhbFJlcEN0eDsKKwlQcm9jTnVtYmVyCWxhdW5jaGVyX3Byb2Nu bzsKKworCWxhdW5jaGVyX3Byb2NubyA9IHJlcGN0eC0+bGF1bmNoZXJfcHJvY25vOworCWlm IChsYXVuY2hlcl9wcm9jbm8gIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKKwkJU2VuZEludGVy cnVwdChJTlRFUlJVUFRfU1VCU0NSSVBUSU9OX0NIQU5HRSwgbGF1bmNoZXJfcHJvY25vKTsK IH0KIAogLyoKQEAgLTEyMDksMTMgKzExODcsMTYgQEAgQXBwbHlMYXVuY2hlck1haW4oRGF0 dW0gbWFpbl9hcmcpCiAKIAliZWZvcmVfc2htZW1fZXhpdChsb2dpY2FscmVwX2xhdW5jaGVy X29uZXhpdCwgKERhdHVtKSAwKTsKIAotCUFzc2VydChMb2dpY2FsUmVwQ3R4LT5sYXVuY2hl cl9waWQgPT0gMCk7Ci0JTG9naWNhbFJlcEN0eC0+bGF1bmNoZXJfcGlkID0gTXlQcm9jUGlk OworCUFzc2VydChMb2dpY2FsUmVwQ3R4LT5sYXVuY2hlcl9wcm9jbm8gPT0gSU5WQUxJRF9Q Uk9DX05VTUJFUik7CisJTG9naWNhbFJlcEN0eC0+bGF1bmNoZXJfcHJvY25vID0gTXlQcm9j TnVtYmVyOwogCi0JLyogRXN0YWJsaXNoIHNpZ25hbCBoYW5kbGVycy4gKi8KLQlwcXNpZ25h bChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOworCS8qIEVzdGFibGlz aCBpbnRlcnJ1cHQgaGFuZGxlcnMuICovCiAJQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWdu YWxzKCk7CiAKKwlTZXRTdGFuZGFyZEludGVycnVwdEhhbmRsZXJzKCk7CisJU2V0SW50ZXJy dXB0SGFuZGxlcihJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMLCBQcm9jZXNzUXVlcnlDYW5jZWxJ bnRlcnJ1cHQpOworCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMKTsK KwogCS8qCiAJICogRXN0YWJsaXNoIGNvbm5lY3Rpb24gdG8gbmFpbGVkIGNhdGFsb2dzICh3 ZSBvbmx5IGV2ZXIgYWNjZXNzCiAJICogcGdfc3Vic2NyaXB0aW9uKS4KQEAgLTEyNTcsNiAr MTIzOCw3IEBAIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQkgKiBkZXRl Y3Rpb24gaWYgb25lIG9mIHRoZSBzdWJzY3JpcHRpb24gZW5hYmxlcyByZXRhaW5fZGVhZF90 dXBsZXMKIAkJICogb3B0aW9uLgogCQkgKi8KKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBU X1NVQlNDUklQVElPTl9DSEFOR0UpOwogCQlzdWJsaXN0ID0gZ2V0X3N1YnNjcmlwdGlvbl9s aXN0KCk7CiAJCWZvcmVhY2gobGMsIHN1Ymxpc3QpCiAJCXsKQEAgLTE0MTgsMjEgKzE0MDAs MTkgQEAgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCU1lbW9yeUNvbnRl eHREZWxldGUoc3ViY3R4KTsKIAogCQkvKiBXYWl0IGZvciBtb3JlIHdvcmsuICovCi0JCXJj ID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVP VVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgICB3YWl0X3RpbWUsCi0JCQkJCSAg IFdBSVRfRVZFTlRfTE9HSUNBTF9MQVVOQ0hFUl9NQUlOKTsKLQotCQlpZiAocmMgJiBXTF9M QVRDSF9TRVQpCisJCXJjID0gV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNr IHwKKwkJCQkJCSAgIElOVEVSUlVQVF9DT05GSUdfUkVMT0FEIHwKKwkJCQkJCSAgIElOVEVS UlVQVF9TVUJTQ1JJUFRJT05fQ0hBTkdFLAorCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xf VElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkgICB3YWl0X3RpbWUsCisJ CQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfTEFVTkNIRVJfTUFJTik7CisKKwkJaWYgKHJj ICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOwogCQkJQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKTsKLQkJfQogCi0JCWlmIChDb25maWdSZWxvYWRQZW5kaW5n KQotCQl7Ci0JCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7Ci0JCQlQcm9jZXNzQ29u ZmlnRmlsZShQR0NfU0lHSFVQKTsKKwkJCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQ VF9DT05GSUdfUkVMT0FEKSkKKwkJCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsK IAkJfQogCX0KIApAQCAtMTU4Nyw3ICsxNTY3LDcgQEAgQ3JlYXRlQ29uZmxpY3REZXRlY3Rp b25TbG90KHZvaWQpCiBib29sCiBJc0xvZ2ljYWxMYXVuY2hlcih2b2lkKQogewotCXJldHVy biBMb2dpY2FsUmVwQ3R4LT5sYXVuY2hlcl9waWQgPT0gTXlQcm9jUGlkOworCXJldHVybiBM b2dpY2FsUmVwQ3R4LT5sYXVuY2hlcl9wcm9jbm8gPT0gTXlQcm9jTnVtYmVyOwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zZXF1ZW5j ZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5j LmMKaW5kZXggYjcyMjI4OGFlMzkuLjQ4OTlkYThkOGM5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3NlcXVlbmNlc3luYy5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMKQEAgLTU3LDcgKzU3LDYg QEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCIKICNpbmNsdWRl ICJjb21tYW5kcy9zZXF1ZW5jZS5oIgogI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKLSNp bmNsdWRlICJpcGMvc2lnbmFsX2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAj aW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInJlcGxp Y2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgpAQCAtNTI1LDExICs1MjQsOCBAQCBjb3B5X3Nl cXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4pCiAKIAkJCUNIRUNLX0ZPUl9JTlRFUlJV UFRTKCk7CiAKLQkJCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQotCQkJewotCQkJCUNvbmZp Z1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwkJCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVS UlVQVF9DT05GSUdfUkVMT0FEKSkKIAkJCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQ KTsKLQkJCX0KIAogCQkJc3luY19zdGF0dXMgPSBnZXRfYW5kX3ZhbGlkYXRlX3NlcV9pbmZv KHNsb3QsICZzZXF1ZW5jZV9yZWwsCiAJCQkJCQkJCQkJCQkJJnNlcWluZm8sICZzZXFpZHgp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3lu Yy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCmluZGV4 IDIwODI4ZTQyNDk5Li41ZDNmMjU3OWY2YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwpAQCAtNjQsNyArNjQsNiBAQAogI2luY2x1ZGUgImFj Y2Vzcy94bG9ncmVjb3ZlcnkuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlLmgi CiAjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgotI2luY2x1ZGUgImlwYy9zaWduYWxfaGFu ZGxlcnMuaCIKICNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgogI2luY2x1ZGUgInBnc3Rh dC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWwuaCIKQEAgLTc0LDcgKzczLDYg QEAKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2Mu aCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgotI2luY2x1ZGUgInN0b3JhZ2Uv cHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1 ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgpAQCAt ODcsMTAgKzg1LDEwIEBACiAvKgogICogU3RydWN0IGZvciBzaGFyaW5nIGluZm9ybWF0aW9u IHRvIGNvbnRyb2wgc2xvdCBzeW5jaHJvbml6YXRpb24uCiAgKgotICogVGhlICdwaWQnIGlz IGVpdGhlciB0aGUgc2xvdCBzeW5jIHdvcmtlcidzIHBpZCBvciB0aGUgYmFja2VuZCdzIHBp ZCBydW5uaW5nCisgKiBUaGUgJ3Byb2NubycgaXMgZWl0aGVyIHRoZSBzbG90IHN5bmMgd29y a2VyJ3MgcHJvY25vIG9yIHRoZSBiYWNrZW5kJ3MgcHJvY25vIHJ1bm5pbmcKICAqIHRoZSBT UUwgZnVuY3Rpb24gcGdfc3luY19yZXBsaWNhdGlvbl9zbG90cygpLiBPbiBwcm9tb3Rpb24s IHRoZSBzdGFydHVwCi0gKiBwcm9jZXNzIHNldHMgJ3N0b3BTaWduYWxlZCcgYW5kIHVzZXMg dGhpcyAncGlkJyB0byBzaWduYWwgdGhlIHN5bmNocm9uaXppbmcKLSAqIHByb2Nlc3Mgd2l0 aCBQUk9DU0lHX1NMT1RTWU5DX01FU1NBR0UgYW5kIGFsc28gdG8gd2FrZSBpdCB1cCBzbyB0 aGF0IHRoZQorICogcHJvY2VzcyBzZXRzICdzdG9wU2lnbmFsZWQnIGFuZCB1c2VzIHRoaXMg J3Byb2NubycgdG8gc2VuZCB0aGUgc3luY2hyb25pemluZworICogcHJvY2VzcyB0aGUgSU5U RVJSVVBUX0NIRUNLX1BST01PVEUgaW50ZXJydXB0IHRvIHdha2UgaXQgdXAgc28gdGhhdCB0 aGUKICAqIHByb2Nlc3MgY2FuIGltbWVkaWF0ZWx5IHN0b3AgaXRzIHN5bmNocm9uaXppbmcg d29yay4KICAqIFNldHRpbmcgJ3N0b3BTaWduYWxlZCcgb24gdGhlIG90aGVyIGhhbmQgaXMg dXNlZCB0byBoYW5kbGUgdGhlIHJhY2UKICAqIGNvbmRpdGlvbiB3aGVuIHRoZSBwb3N0bWFz dGVyIGhhcyBub3Qgbm90aWNlZCB0aGUgcHJvbW90aW9uIHlldCBhbmQgdGh1cyBtYXkKQEAg LTExMyw3ICsxMTEsNyBAQAogICovCiB0eXBlZGVmIHN0cnVjdCBTbG90U3luY0N0eFN0cnVj dAogewotCXBpZF90CQlwaWQ7CisJUHJvY051bWJlcglwcm9jbm87CiAJYm9vbAkJc3RvcFNp Z25hbGVkOwogCWJvb2wJCXN5bmNpbmc7CiAJdGltZV90CQlsYXN0X3N0YXJ0X3RpbWU7CkBA IC0xNTMsMTMgKzE1MSw2IEBAIHN0YXRpYyBsb25nIHNsZWVwX21zID0gTUlOX1NMT1RTWU5D X1dPUktFUl9OQVBUSU1FX01TOwogICovCiBzdGF0aWMgYm9vbCBzeW5jaW5nX3Nsb3RzID0g ZmFsc2U7CiAKLS8qCi0gKiBJbnRlcnJ1cHQgZmxhZyBzZXQgd2hlbiBQUk9DU0lHX1NMT1RT WU5DX01FU1NBR0UgaXMgcmVjZWl2ZWQsIGFza2luZyB0aGUKLSAqIHNsb3RzeW5jIHdvcmtl ciBvciBwZ19zeW5jX3JlcGxpY2F0aW9uX3Nsb3RzKCkgdG8gc3RvcCBiZWNhdXNlCi0gKiBz dGFuZGJ5IHByb21vdGlvbiBoYXMgYmVlbiB0cmlnZ2VyZWQuCi0gKi8KLXZvbGF0aWxlIHNp Z19hdG9taWNfdCBTbG90U3luY1NodXRkb3duUGVuZGluZyA9IGZhbHNlOwotCiAvKgogICog U3RydWN0dXJlIHRvIGhvbGQgaW5mb3JtYXRpb24gZmV0Y2hlZCBmcm9tIHRoZSBwcmltYXJ5 IHNlcnZlciBhYm91dCBhIGxvZ2ljYWwKICAqIHJlcGxpY2F0aW9uIHNsb3QuCkBAIC0xMjcw LDcgKzEyNjEsNyBAQCBzbG90c3luY19yZXJlYWRfY29uZmlnKHZvaWQpCiAJaWYgKGlzX3Ns b3RzeW5jX3dvcmtlcikKIAkJQXNzZXJ0KHN5bmNfcmVwbGljYXRpb25fc2xvdHMpOwogCi0J Q29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOworCUNsZWFySW50ZXJydXB0KElOVEVSUlVQ VF9DT05GSUdfUkVMT0FEKTsKIAlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKIAog CWNvbm5pbmZvX2NoYW5nZWQgPSBzdHJjbXAob2xkX3ByaW1hcnlfY29ubmluZm8sIFByaW1h cnlDb25uSW5mbykgIT0gMDsKQEAgLTEzMzMsNTIgKzEzMjQsNDIgQEAgc2xvdHN5bmNfcmVy ZWFkX2NvbmZpZyh2b2lkKQogfQogCiAvKgotICogSGFuZGxlIHJlY2VpcHQgb2YgYW4gaW50 ZXJydXB0IGluZGljYXRpbmcgYSBzbG90c3luYyBzaHV0ZG93biBtZXNzYWdlLgorICogSGFu ZGxlIGEgSU5URVJSVVBUX0NIRUNLX1BST01PVEUsIGNhbGxlZCBmcm9tIFByb2Nlc3NJbnRl cnJ1cHRzKCkuCiAgKgotICogVGhpcyBpcyBjYWxsZWQgd2l0aGluIHRoZSBTSUdVU1IxIGhh bmRsZXIuICBBbGwgd2UgZG8gaGVyZSBpcyBzZXQgYSBmbGFnCi0gKiB0aGF0IHdpbGwgY2F1 c2UgdGhlIG5leHQgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSB0byBpbnZva2UKLSAqIFByb2Nl c3NTbG90U3luY01lc3NhZ2UoKS4KKyAqIEluIHRoZSB0aGUgc2xvdHN5bmMgYmFja2dyb3Vu ZCB3b3JrZXIsIGxvZyBhIG1lc3NhZ2UgYW5kIGV4aXQgY2xlYW5seS4KICAqLwotdm9pZAot SGFuZGxlU2xvdFN5bmNNZXNzYWdlSW50ZXJydXB0KHZvaWQpCitzdGF0aWMgdm9pZAorQ2hl Y2tTdG9wU2lnbmFsZWRJbldvcmtlcih2b2lkKQogewotCUludGVycnVwdFBlbmRpbmcgPSB0 cnVlOwotCVNsb3RTeW5jU2h1dGRvd25QZW5kaW5nID0gdHJ1ZTsKLQkvKiBsYXRjaCB3aWxs IGJlIHNldCBieSBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAqLworCWlmICghU2xvdFN5 bmNDdHgtPnN0b3BTaWduYWxlZCkKKwkJcmV0dXJuOworCisJZXJlcG9ydChMT0csCisJCQll cnJtc2coInJlcGxpY2F0aW9uIHNsb3Qgc3luY2hyb25pemF0aW9uIHdvcmtlciB3aWxsIHN0 b3AgYmVjYXVzZSBwcm9tb3Rpb24gaXMgdHJpZ2dlcmVkIikpOworCXByb2NfZXhpdCgwKTsK IH0KIAogLyoKLSAqIEhhbmRsZSBhIFBST0NTSUdfU0xPVFNZTkNfTUVTU0FHRSBzaWduYWws IGNhbGxlZCBmcm9tIFByb2Nlc3NJbnRlcnJ1cHRzKCkuCi0gKgotICogSWYgdGhlIGN1cnJl bnQgcHJvY2VzcyBpcyB0aGUgc2xvdHN5bmMgYmFja2dyb3VuZCB3b3JrZXIsIGxvZyBhIG1l c3NhZ2UKLSAqIGFuZCBleGl0IGNsZWFubHkuICBJZiBpdCBpcyBhIGJhY2tlbmQgZXhlY3V0 aW5nIHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMoKSwKLSAqIHJhaXNlIGFuIGVycm9yLCB1 bmxlc3MgdGhlIHN5bmMgaGFzIGFscmVhZHkgZmluaXNoZWQsIGluIHdoaWNoIGNhc2UgdGhl cmUKLSAqIGlzIG5vIG5lZWQgdG8gaW50ZXJydXB0IHRoZSBjYWxsZXIuCisgKiBJbiBhIGJh Y2tlbmQgZXhlY3V0aW5nIHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMoKSwgcmFpc2UgYW4g ZXJyb3IsIHVubGVzcworICogdGhlIHN5bmMgaGFzIGFscmVhZHkgZmluaXNoZWQsIGluIHdo aWNoIGNhc2UgdGhlcmUgaXMgbm8gbmVlZCB0byBpbnRlcnJ1cHQKKyAqIHRoZSBjYWxsZXIu ICoKICAqLwotdm9pZAotUHJvY2Vzc1Nsb3RTeW5jTWVzc2FnZSh2b2lkKQorc3RhdGljIHZv aWQKK0NoZWNrU3RvcFNpZ25hbGVkSW5CYWNrZW5kKHZvaWQpCiB7Ci0JU2xvdFN5bmNTaHV0 ZG93blBlbmRpbmcgPSBmYWxzZTsKKwlpZiAoIVNsb3RTeW5jQ3R4LT5zdG9wU2lnbmFsZWQp CisJCXJldHVybjsKIAotCWlmIChBbUxvZ2ljYWxTbG90U3luY1dvcmtlclByb2Nlc3MoKSkK LQl7Ci0JCWVyZXBvcnQoTE9HLAotCQkJCWVycm1zZygicmVwbGljYXRpb24gc2xvdCBzeW5j aHJvbml6YXRpb24gd29ya2VyIHdpbGwgc3RvcCBiZWNhdXNlIHByb21vdGlvbiBpcyB0cmln Z2VyZWQiKSk7Ci0JCXByb2NfZXhpdCgwKTsKLQl9Ci0JZWxzZQotCXsKLQkJLyoKLQkJICog SWYgc3luYyBoYXMgYWxyZWFkeSBjb21wbGV0ZWQsIHRoZXJlIGlzIG5vIG5lZWQgdG8gaW50 ZXJydXB0IHRoZQotCQkgKiBjYWxsZXIgd2l0aCBhbiBlcnJvci4KLQkJICovCi0JCWlmICgh SXNTeW5jaW5nUmVwbGljYXRpb25TbG90cygpKQotCQkJcmV0dXJuOworCS8qCisJICogSWYg c3luYyBoYXMgYWxyZWFkeSBjb21wbGV0ZWQsIHRoZXJlIGlzIG5vIG5lZWQgdG8gaW50ZXJy dXB0IHRoZSBjYWxsZXIKKwkgKiB3aXRoIGFuIGVycm9yLgorCSAqLworCWlmICghSXNTeW5j aW5nUmVwbGljYXRpb25TbG90cygpKQorCQlyZXR1cm47CiAKLQkJZXJlcG9ydChFUlJPUiwK LQkJCQllcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LAotCQkJCWVycm1zZygicmVwbGljYXRpb24gc2xvdCBzeW5jaHJvbml6YXRpb24gd2lsbCBz dG9wIGJlY2F1c2UgcHJvbW90aW9uIGlzIHRyaWdnZXJlZCIpKTsKLQl9CisJZXJlcG9ydChF UlJPUiwKKwkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9T VEFURSksCisJCQllcnJtc2coInJlcGxpY2F0aW9uIHNsb3Qgc3luY2hyb25pemF0aW9uIHdp bGwgc3RvcCBiZWNhdXNlIHByb21vdGlvbiBpcyB0cmlnZ2VyZWQiKSk7CiB9CiAKIC8qCkBA IC0xNDIxLDcgKzE0MDIsNyBAQCBzbG90c3luY193b3JrZXJfb25leGl0KGludCBjb2RlLCBE YXR1bSBhcmcpCiAKIAlTcGluTG9ja0FjcXVpcmUoJlNsb3RTeW5jQ3R4LT5tdXRleCk7CiAK LQlTbG90U3luY0N0eC0+cGlkID0gSW52YWxpZFBpZDsKKwlTbG90U3luY0N0eC0+cHJvY25v ID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAogCS8qCiAJICogSWYgc3luY2luZ19zbG90cyBp cyB0cnVlLCBpdCBpbmRpY2F0ZXMgdGhhdCB0aGUgcHJvY2VzcyBlcnJvcmVkIG91dApAQCAt MTQ0NiwxMCArMTQyNyw4IEBAIHNsb3RzeW5jX3dvcmtlcl9vbmV4aXQoaW50IGNvZGUsIERh dHVtIGFyZykKICAqIHN5bmMtY3ljbGVzIGlzIHJlc2V0IHRvIHRoZSBtaW5pbXVtICgyMDBt cykuCiAgKi8KIHN0YXRpYyB2b2lkCi13YWl0X2Zvcl9zbG90X2FjdGl2aXR5KGJvb2wgc29t ZV9zbG90X3VwZGF0ZWQpCit3YWl0X2Zvcl9zbG90X2FjdGl2aXR5KGJvb2wgc29tZV9zbG90 X3VwZGF0ZWQsIEludGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaykKIHsKLQlpbnQJCQlyYzsK LQogCWlmICghc29tZV9zbG90X3VwZGF0ZWQpCiAJewogCQkvKgpAQCAtMTQ2NywxMyArMTQ0 NiwxMCBAQCB3YWl0X2Zvcl9zbG90X2FjdGl2aXR5KGJvb2wgc29tZV9zbG90X3VwZGF0ZWQp CiAJCXNsZWVwX21zID0gTUlOX1NMT1RTWU5DX1dPUktFUl9OQVBUSU1FX01TOwogCX0KIAot CXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElN RU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJICAgc2xlZXBfbXMsCi0JCQkJICAg V0FJVF9FVkVOVF9SRVBMSUNBVElPTl9TTE9UU1lOQ19NQUlOKTsKLQotCWlmIChyYyAmIFdM X0xBVENIX1NFVCkKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkodm9pZCkgV2FpdEludGVy cnVwdChpbnRlcnJ1cHRNYXNrLAorCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQg fCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJIHNsZWVwX21zLAorCQkJCQkJIFdBSVRf RVZFTlRfUkVQTElDQVRJT05fU0xPVFNZTkNfTUFJTik7CiB9CiAKIC8qCkBAIC0xNDgxLDcg KzE0NTcsNyBAQCB3YWl0X2Zvcl9zbG90X2FjdGl2aXR5KGJvb2wgc29tZV9zbG90X3VwZGF0 ZWQpCiAgKiBPdGhlcndpc2UsIGFkdmVydGlzZSB0aGF0IGEgc3luYyBpcyBpbiBwcm9ncmVz cy4KICAqLwogc3RhdGljIHZvaWQKLWNoZWNrX2FuZF9zZXRfc3luY19pbmZvKHBpZF90IHN5 bmNfcHJvY2Vzc19waWQpCitjaGVja19hbmRfc2V0X3N5bmNfaW5mbyhQcm9jTnVtYmVyIHN5 bmNfcHJvY2Vzc19wcm9jbm8pCiB7CiAJU3BpbkxvY2tBY3F1aXJlKCZTbG90U3luY0N0eC0+ bXV0ZXgpOwogCkBAIC0xNTIxLDE2ICsxNDk3LDE2IEBAIGNoZWNrX2FuZF9zZXRfc3luY19p bmZvKHBpZF90IHN5bmNfcHJvY2Vzc19waWQpCiAJCQkJZXJybXNnKCJjYW5ub3Qgc3luY2hy b25pemUgcmVwbGljYXRpb24gc2xvdHMgY29uY3VycmVudGx5IikpOwogCX0KIAotCS8qIFRo ZSBwaWQgbXVzdCBub3QgYmUgYWxyZWFkeSBhc3NpZ25lZCBpbiBTbG90U3luY0N0eCAqLwot CUFzc2VydChTbG90U3luY0N0eC0+cGlkID09IEludmFsaWRQaWQpOworCS8qIFRoZSBwcm9j bm8gbXVzdCBub3QgYmUgYWxyZWFkeSBhc3NpZ25lZCBpbiBTbG90U3luY0N0eCAqLworCUFz c2VydChTbG90U3luY0N0eC0+cHJvY25vID09IElOVkFMSURfUFJPQ19OVU1CRVIpOwogCiAJ U2xvdFN5bmNDdHgtPnN5bmNpbmcgPSB0cnVlOwogCiAJLyoKLQkgKiBBZHZlcnRpc2UgdGhl IHJlcXVpcmVkIFBJRCBzbyB0aGF0IHRoZSBzdGFydHVwIHByb2Nlc3MgY2FuIGtpbGwgdGhl Ci0JICogc2xvdCBzeW5jIHByb2Nlc3Mgb24gcHJvbW90aW9uLgorCSAqIEFkdmVydGlzZSB0 aGUgcmVxdWlyZWQgcHJvYyBudW1iZXIgc28gdGhhdCB0aGUgc3RhcnR1cCBwcm9jZXNzIGNh biBraWxsCisJICogdGhlIHNsb3Qgc3luYyBwcm9jZXNzIG9uIHByb21vdGlvbi4KIAkgKi8K LQlTbG90U3luY0N0eC0+cGlkID0gc3luY19wcm9jZXNzX3BpZDsKKwlTbG90U3luY0N0eC0+ cHJvY25vID0gc3luY19wcm9jZXNzX3Byb2NubzsKIAogCVNwaW5Mb2NrUmVsZWFzZSgmU2xv dFN5bmNDdHgtPm11dGV4KTsKIApAQCAtMTU0NSw3ICsxNTIxLDcgQEAgcmVzZXRfc3luY2lu Z19mbGFnKHZvaWQpCiB7CiAJU3BpbkxvY2tBY3F1aXJlKCZTbG90U3luY0N0eC0+bXV0ZXgp OwogCVNsb3RTeW5jQ3R4LT5zeW5jaW5nID0gZmFsc2U7Ci0JU2xvdFN5bmNDdHgtPnBpZCA9 IEludmFsaWRQaWQ7CisJU2xvdFN5bmNDdHgtPnByb2NubyA9IElOVkFMSURfUFJPQ19OVU1C RVI7CiAJU3BpbkxvY2tSZWxlYXNlKCZTbG90U3luY0N0eC0+bXV0ZXgpOwogCiAJc3luY2lu Z19zbG90cyA9IGZhbHNlOwpAQCAtMTYyNywxOSArMTYwMywxNyBAQCBSZXBsU2xvdFN5bmNX b3JrZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0 YV9sZW4pCiAJUEdfZXhjZXB0aW9uX3N0YWNrID0gJmxvY2FsX3NpZ2ptcF9idWY7CiAKIAkv KiBTZXR1cCBzaWduYWwgaGFuZGxpbmcgKi8KLQlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhh bmRsZXJGb3JDb25maWdSZWxvYWQpOwotCXBxc2lnbmFsKFNJR0lOVCwgU3RhdGVtZW50Q2Fu Y2VsSGFuZGxlcik7Ci0JcHFzaWduYWwoU0lHVEVSTSwgZGllKTsKIAlwcXNpZ25hbChTSUdG UEUsIEZsb2F0RXhjZXB0aW9uSGFuZGxlcik7Ci0JcHFzaWduYWwoU0lHVVNSMSwgcHJvY3Np Z25hbF9zaWd1c3IxX2hhbmRsZXIpOwotCXBxc2lnbmFsKFNJR1VTUjIsIFBHX1NJR19JR04p OwotCXBxc2lnbmFsKFNJR1BJUEUsIFBHX1NJR19JR04pOworCVNldFN0YW5kYXJkSW50ZXJy dXB0SGFuZGxlcnMoKTsKIAotCWNoZWNrX2FuZF9zZXRfc3luY19pbmZvKE15UHJvY1BpZCk7 CisJY2hlY2tfYW5kX3NldF9zeW5jX2luZm8oTXlQcm9jTnVtYmVyKTsKKworCVNldEludGVy cnVwdEhhbmRsZXIoSU5URVJSVVBUX0NIRUNLX1BST01PVEUsIENoZWNrU3RvcFNpZ25hbGVk SW5Xb3JrZXIpOworCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfQ0hFQ0tfUFJPTU9URSk7 CiAKIAllcmVwb3J0KExPRywgZXJybXNnKCJzbG90IHN5bmMgd29ya2VyIHN0YXJ0ZWQiKSk7 CiAKLQkvKiBSZWdpc3RlciBpdCBhcyBzb29uIGFzIFNsb3RTeW5jQ3R4LT5waWQgaXMgaW5p dGlhbGl6ZWQuICovCisJLyogUmVnaXN0ZXIgaXQgYXMgc29vbiBhcyBTbG90U3luY0N0eC0+ cHJvY25vIGlzIGluaXRpYWxpemVkLiAqLwogCWJlZm9yZV9zaG1lbV9leGl0KHNsb3RzeW5j X3dvcmtlcl9vbmV4aXQsIChEYXR1bSkgMCk7CiAKIAkvKgpAQCAtMTcyOSw3ICsxNzAzLDcg QEAgUmVwbFNsb3RTeW5jV29ya2VyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNp emVfdCBzdGFydHVwX2RhdGFfbGVuKQogCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAK LQkJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCisJCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElO VEVSUlVQVF9DT05GSUdfUkVMT0FEKSkKIAkJCXNsb3RzeW5jX3JlcmVhZF9jb25maWcoKTsK IAogCQkvKgpAQCAtMTc0OSw3ICsxNzIzLDggQEAgUmVwbFNsb3RTeW5jV29ya2VyTWFpbihj b25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQlp ZiAoc3RhcnRlZF90eCkKIAkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JCXdh aXRfZm9yX3Nsb3RfYWN0aXZpdHkoc29tZV9zbG90X3VwZGF0ZWQpOworCQl3YWl0X2Zvcl9z bG90X2FjdGl2aXR5KHNvbWVfc2xvdF91cGRhdGVkLAorCQkJCQkJCSAgIENoZWNrRm9ySW50 ZXJydXB0c01hc2sgfCBJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCk7CiAJfQogCiAJLyoKQEAg LTE3ODIsNyArMTc1Nyw3IEBAIHVwZGF0ZV9zeW5jZWRfc2xvdHNfaW5hY3RpdmVfc2luY2Uo dm9pZCkKIAkJcmV0dXJuOwogCiAJLyogVGhlIHNsb3Qgc3luYyB3b3JrZXIgb3IgdGhlIFNR TCBmdW5jdGlvbiBtdXN0bid0IGJlIHJ1bm5pbmcgYnkgbm93ICovCi0JQXNzZXJ0KChTbG90 U3luY0N0eC0+cGlkID09IEludmFsaWRQaWQpICYmICFTbG90U3luY0N0eC0+c3luY2luZyk7 CisJQXNzZXJ0KChTbG90U3luY0N0eC0+cHJvY25vID09IElOVkFMSURfUFJPQ19OVU1CRVIp ICYmICFTbG90U3luY0N0eC0+c3luY2luZyk7CiAKIAlMV0xvY2tBY3F1aXJlKFJlcGxpY2F0 aW9uU2xvdENvbnRyb2xMb2NrLCBMV19TSEFSRUQpOwogCkBAIC0xODIxLDcgKzE3OTYsNyBA QCB1cGRhdGVfc3luY2VkX3Nsb3RzX2luYWN0aXZlX3NpbmNlKHZvaWQpCiB2b2lkCiBTaHV0 RG93blNsb3RTeW5jKHZvaWQpCiB7Ci0JcGlkX3QJCXN5bmNfcHJvY2Vzc19waWQ7CisJUHJv Y051bWJlcglzeW5jX3Byb2Nlc3NfcHJvY25vOwogCiAJU3BpbkxvY2tBY3F1aXJlKCZTbG90 U3luY0N0eC0+bXV0ZXgpOwogCkBAIC0xODM4LDQ0ICsxODEzLDM3IEBAIFNodXREb3duU2xv dFN5bmModm9pZCkKIAkJcmV0dXJuOwogCX0KIAotCXN5bmNfcHJvY2Vzc19waWQgPSBTbG90 U3luY0N0eC0+cGlkOworCXN5bmNfcHJvY2Vzc19wcm9jbm8gPSBTbG90U3luY0N0eC0+cHJv Y25vOwogCiAJU3BpbkxvY2tSZWxlYXNlKCZTbG90U3luY0N0eC0+bXV0ZXgpOwogCiAJLyoK IAkgKiBTaWduYWwgcHJvY2VzcyBkb2luZyBzbG90c3luYywgaWYgYW55LCBhc2tpbmcgaXQg dG8gc3RvcC4KIAkgKi8KLQlpZiAoc3luY19wcm9jZXNzX3BpZCAhPSBJbnZhbGlkUGlkKQot CQlTZW5kUHJvY1NpZ25hbChzeW5jX3Byb2Nlc3NfcGlkLCBQUk9DU0lHX1NMT1RTWU5DX01F U1NBR0UsCi0JCQkJCSAgIElOVkFMSURfUFJPQ19OVU1CRVIpOworCWlmIChzeW5jX3Byb2Nl c3NfcHJvY25vICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCisJCVNlbmRJbnRlcnJ1cHQoSU5U RVJSVVBUX0NIRUNLX1BST01PVEUsIHN5bmNfcHJvY2Vzc19wcm9jbm8pOwogCiAJLyogV2Fp dCBmb3Igc2xvdCBzeW5jIHRvIGVuZCAqLwogCWZvciAoOzspCiAJewotCQlpbnQJCQlyYzsK KwkJYm9vbAkJaXNfc3luY2luZzsKIAogCQkvKiBXYWl0IGEgYml0LCB3ZSBkb24ndCBleHBl Y3QgdG8gaGF2ZSB0byB3YWl0IGxvbmcgKi8KLQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwK LQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVB VEgsCi0JCQkJCSAgIDEwTCwgV0FJVF9FVkVOVF9SRVBMSUNBVElPTl9TTE9UU1lOQ19TSFVU RE9XTik7CisJCVdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzaywKKwkJCQkJ ICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJ CQkJICAxMEwsIFdBSVRfRVZFTlRfUkVQTElDQVRJT05fU0xPVFNZTkNfU0hVVERPV04pOwog Ci0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKLQkJewotCQkJUmVzZXRMYXRjaChNeUxhdGNo KTsKLQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7Ci0JCX0KKwkJQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKTsKIAorCQkvKiBFbnN1cmUgdGhhdCBubyBwcm9jZXNzIGlzIHN5bmNpbmcgdGhl IHNsb3RzLiAqLwogCQlTcGluTG9ja0FjcXVpcmUoJlNsb3RTeW5jQ3R4LT5tdXRleCk7CisJ CWlzX3N5bmNpbmcgPSBTbG90U3luY0N0eC0+c3luY2luZzsKKwkJU3BpbkxvY2tSZWxlYXNl KCZTbG90U3luY0N0eC0+bXV0ZXgpOwogCi0JCS8qIEVuc3VyZSB0aGF0IG5vIHByb2Nlc3Mg aXMgc3luY2luZyB0aGUgc2xvdHMuICovCi0JCWlmICghU2xvdFN5bmNDdHgtPnN5bmNpbmcp CisJCWlmICghaXNfc3luY2luZykKIAkJCWJyZWFrOwotCi0JCVNwaW5Mb2NrUmVsZWFzZSgm U2xvdFN5bmNDdHgtPm11dGV4KTsKIAl9CiAKLQlTcGluTG9ja1JlbGVhc2UoJlNsb3RTeW5j Q3R4LT5tdXRleCk7Ci0KIAl1cGRhdGVfc3luY2VkX3Nsb3RzX2luYWN0aXZlX3NpbmNlKCk7 CiB9CiAKQEAgLTE5NDEsNyArMTkwOSw3IEBAIHN0YXRpYyB2b2lkCiBTbG90U3luY1NobWVt SW5pdCh2b2lkICphcmcpCiB7CiAJbWVtc2V0KFNsb3RTeW5jQ3R4LCAwLCBzaXplb2YoU2xv dFN5bmNDdHhTdHJ1Y3QpKTsKLQlTbG90U3luY0N0eC0+cGlkID0gSW52YWxpZFBpZDsKKwlT bG90U3luY0N0eC0+cHJvY25vID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAlTcGluTG9ja0lu aXQoJlNsb3RTeW5jQ3R4LT5tdXRleCk7CiB9CiAKQEAgLTE5NTMsNiArMTkyMSw4IEBAIHNs b3RzeW5jX2ZhaWx1cmVfY2FsbGJhY2soaW50IGNvZGUsIERhdHVtIGFyZykKIHsKIAlXYWxS ZWNlaXZlckNvbm4gKndyY29ubiA9IChXYWxSZWNlaXZlckNvbm4gKikgRGF0dW1HZXRQb2lu dGVyKGFyZyk7CiAKKwlEaXNhYmxlSW50ZXJydXB0KElOVEVSUlVQVF9DSEVDS19QUk9NT1RF KTsKKwogCS8qCiAJICogV2UgbmVlZCB0byBkbyBzbG90cyBjbGVhbnVwIGhlcmUganVzdCBs aWtlIFdhbFNuZEVycm9yQ2xlYW51cCgpIGRvZXMuCiAJICoKQEAgLTIwMTksNyArMTk4OSwx MCBAQCBTeW5jUmVwbGljYXRpb25TbG90cyhXYWxSZWNlaXZlckNvbm4gKndyY29ubikKIAkJ TGlzdAkgICAqc2xvdF9uYW1lcyA9IE5JTDsJLyogTGlzdCBvZiBzbG90IG5hbWVzIHRvIHRy YWNrICovCiAJCU1lbW9yeUNvbnRleHQgc3luY19yZXRyeV9jdHg7CiAKLQkJY2hlY2tfYW5k X3NldF9zeW5jX2luZm8oTXlQcm9jUGlkKTsKKwkJY2hlY2tfYW5kX3NldF9zeW5jX2luZm8o TXlQcm9jTnVtYmVyKTsKKworCQlTZXRJbnRlcnJ1cHRIYW5kbGVyKElOVEVSUlVQVF9DSEVD S19QUk9NT1RFLCBDaGVja1N0b3BTaWduYWxlZEluQmFja2VuZCk7CisJCUVuYWJsZUludGVy cnVwdChJTlRFUlJVUFRfQ0hFQ0tfUFJPTU9URSk7CiAKIAkJdmFsaWRhdGVfcmVtb3RlX2lu Zm8od3Jjb25uKTsKIApAQCAtMjA0Miw3ICsyMDE1LDcgQEAgU3luY1JlcGxpY2F0aW9uU2xv dHMoV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4pCiAJCQkvKiBDaGVjayBmb3IgaW50ZXJydXB0 cyBhbmQgY29uZmlnIGNoYW5nZXMgKi8KIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAK LQkJCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQorCQkJaWYgKEludGVycnVwdFBlbmRpbmco SU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQogCQkJCXNsb3RzeW5jX3JlcmVhZF9jb25maWco KTsKIAogCQkJLyogV2UgbXVzdCBiZSBpbiBhIHZhbGlkIHRyYW5zYWN0aW9uIHN0YXRlICov CkBAIC0yMDg1LDcgKzIwNTgsOSBAQCBTeW5jUmVwbGljYXRpb25TbG90cyhXYWxSZWNlaXZl ckNvbm4gKndyY29ubikKIAkJCQlicmVhazsKIAogCQkJLyogd2FpdCBiZWZvcmUgcmV0cnlp bmcgYWdhaW4gKi8KLQkJCXdhaXRfZm9yX3Nsb3RfYWN0aXZpdHkoc29tZV9zbG90X3VwZGF0 ZWQpOworCQkJd2FpdF9mb3Jfc2xvdF9hY3Rpdml0eShzb21lX3Nsb3RfdXBkYXRlZCwKKwkJ CQkJCQkJICAgQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkJCSAgIElOVEVSUlVQ VF9DT05GSUdfUkVMT0FEKTsKIAkJfQogCiAJCU1lbW9yeUNvbnRleHREZWxldGUoc3luY19y ZXRyeV9jdHgpOwpAQCAtMjA5Myw2ICsyMDY4LDggQEAgU3luY1JlcGxpY2F0aW9uU2xvdHMo V2FsUmVjZWl2ZXJDb25uICp3cmNvbm4pCiAJCWlmIChzbG90X25hbWVzKQogCQkJbGlzdF9m cmVlX2RlZXAoc2xvdF9uYW1lcyk7CiAKKwkJRGlzYWJsZUludGVycnVwdChJTlRFUlJVUFRf Q0hFQ0tfUFJPTU9URSk7CisKIAkJLyogQ2xlYW51cCB0aGUgc3luY2VkIHRlbXBvcmFyeSBz bG90cyAqLwogCQlSZXBsaWNhdGlvblNsb3RDbGVhbnVwKHRydWUpOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCBkNjMxMTI2NmZl NS4uYWZkMmNlYzA2ZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC90YWJsZXN5bmMuYwpAQCAtMTEyLDcgKzExMiw2IEBACiAjaW5jbHVkZSAicmVwbGljYXRp b24vd2FscmVjZWl2ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJu YWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0 Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wu aCIKICNpbmNsdWRlICJ1dGlscy9hcnJheS5oIgpAQCAtMTY5LDExICsxNjgsMTIgQEAgd2Fp dF9mb3JfdGFibGVfc3RhdGVfY2hhbmdlKE9pZCByZWxpZCwgY2hhciBleHBlY3RlZF9zdGF0 ZSkKIAkJaWYgKCF3b3JrZXIpCiAJCQlicmVhazsKIAotCQkodm9pZCkgV2FpdExhdGNoKE15 TGF0Y2gsCi0JCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsCi0JCQkJCQkgMTAwMEwsIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX1NUQVRF X0NIQU5HRSk7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01h c2sgfAorCQkJCQkJCSBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsCisJCQkJCQkJIFdMX0lOVEVS UlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSAxMDAw TCwgV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RBVEVfQ0hBTkdFKTsKIAotCQlSZXNldExh dGNoKE15TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAp OwogCX0KIAogCXJldHVybiBmYWxzZTsKQEAgLTIyMCwxNSArMjIwLDE2IEBAIHdhaXRfZm9y X3dvcmtlcl9zdGF0ZV9jaGFuZ2UoY2hhciBleHBlY3RlZF9zdGF0ZSkKIAkJCWJyZWFrOwog CiAJCS8qCi0JCSAqIFdhaXQuICBXZSBleHBlY3QgdG8gZ2V0IGEgbGF0Y2ggc2lnbmFsIGJh Y2sgZnJvbSB0aGUgYXBwbHkgd29ya2VyLAorCQkgKiBXYWl0LiAgV2UgZXhwZWN0IHRvIGdl dCBhbiBpbnRlcnJ1cHQgd2FrZXVwIGZyb20gdGhlIGFwcGx5IHdvcmtlciwKIAkJICogYnV0 IHVzZSBhIHRpbWVvdXQgaW4gY2FzZSBpdCBkaWVzIHdpdGhvdXQgc2VuZGluZyBvbmUuCiAJ CSAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBXTF9MQVRDSF9TRVQg fCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJICAgMTAwMEwsIFdB SVRfRVZFTlRfTE9HSUNBTF9TWU5DX1NUQVRFX0NIQU5HRSk7CisJCXJjID0gV2FpdEludGVy cnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkJCSAgIElOVEVSUlVQVF9XQUlU X1dBS0VVUCwKKwkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElU X09OX1BNX0RFQVRILAorCQkJCQkJICAgMTAwMEwsIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5D X1NUQVRFX0NIQU5HRSk7CiAKLQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQotCQkJUmVzZXRM YXRjaChNeUxhdGNoKTsKKwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQorCQkJQ2xlYXJJbnRl cnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAl9CiAKIAlyZXR1cm4gZmFsc2U7CkBA IC01MjAsNyArNTIxLDcgQEAgUHJvY2Vzc1N5bmNpbmdUYWJsZXNGb3JBcHBseShYTG9nUmVj UHRyIGN1cnJlbnRfbHNuKQogCQkJCQkJICogdGhlIGV4aXN0aW5nIGxvY2tzIGJlZm9yZSBl bnRlcmluZyBhIGJ1c3kgbG9vcC4KIAkJCQkJCSAqIFRoaXMgaXMgcmVxdWlyZWQgdG8gYXZv aWQgYW55IHVuZGV0ZWN0ZWQgZGVhZGxvY2tzCiAJCQkJCQkgKiBkdWUgdG8gYW55IGV4aXN0 aW5nIGxvY2sgYXMgZGVhZGxvY2sgZGV0ZWN0b3Igd29uJ3QKLQkJCQkJCSAqIGJlIGFibGUg dG8gZGV0ZWN0IHRoZSB3YWl0cyBvbiB0aGUgbGF0Y2guCisJCQkJCQkgKiBiZSBhYmxlIHRv IGRldGVjdCB0aGUgd2FpdHMgb24gdGhlIGludGVycnVwdC4KIAkJCQkJCSAqCiAJCQkJCQkg KiBBbHNvIGNsb3NlIGFueSB0YWJsZXMgcHJpb3IgdG8gdGhlIGNvbW1pdC4KIAkJCQkJCSAq LwpAQCAtNjk5LDE0ICs3MDAsMTIgQEAgY29weV9yZWFkX2RhdGEodm9pZCAqb3V0YnVmLCBp bnQgbWlucmVhZCwgaW50IG1heHJlYWQpCiAJCX0KIAogCQkvKgotCQkgKiBXYWl0IGZvciBt b3JlIGRhdGEgb3IgbGF0Y2guCisJCSAqIFdhaXQgZm9yIG1vcmUgZGF0YSBvciBpbnRlcnJ1 cHQuCiAJCSAqLwotCQkodm9pZCkgV2FpdExhdGNoT3JTb2NrZXQoTXlMYXRjaCwKLQkJCQkJ CQkJIFdMX1NPQ0tFVF9SRUFEQUJMRSB8IFdMX0xBVENIX1NFVCB8Ci0JCQkJCQkJCSBXTF9U SU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkJIGZkLCAxMDAwTCwgV0FJ VF9FVkVOVF9MT0dJQ0FMX1NZTkNfREFUQSk7Ci0KLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsK KwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHRPclNvY2tldChDaGVja0ZvckludGVycnVwdHNNYXNr LAorCQkJCQkJCQkJIFdMX1NPQ0tFVF9SRUFEQUJMRSB8IFdMX0lOVEVSUlVQVCB8CisJCQkJ CQkJCQkgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCQkgZmQs IDEwMDBMLCBXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19EQVRBKTsKIAl9CiAKIAlyZXR1cm4g Ynl0ZXNyZWFkOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMK aW5kZXggNzIxOWI4MGMwZDQuLjEwMGUxNTk5ODc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTI2Myw3ICsyNjMsNyBAQAogI2luY2x1ZGUg ImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgog I2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCIKLSNpbmNsdWRlICJpcGMvc2ln bmFsX2hhbmRsZXJzLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUg ImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi b3B0aW1pemVyL29wdGltaXplci5oIgpAQCAtMjg0LDcgKzI4NCw2IEBACiAjaW5jbHVkZSAi cmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmZmlsZS5o IgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2Fy cmF5LmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgpAQCAtNDA0Niw2ICs0MDQ1LDcg QEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJCWJv b2wJCWVuZG9mc3RyZWFtID0gZmFsc2U7CiAJCWxvbmcJCXdhaXRfdGltZTsKIAorCQlDbGVh ckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOwogCiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseU1lc3NhZ2VDb250ZXh0 KTsKQEAgLTQwNzUsMTEgKzQwNzUsOCBAQCBMb2dpY2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQ dHIgbGFzdF9yZWNlaXZlZCkKIAkJCQkJaW50CQkJYzsKIAkJCQkJU3RyaW5nSW5mb0RhdGEg czsKIAotCQkJCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKLQkJCQkJewotCQkJCQkJQ29u ZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOworCQkJCQlpZiAoQ29uc3VtZUludGVycnVwdChJ TlRFUlJVUFRfQ09ORklHX1JFTE9BRCkpCiAJCQkJCQlQcm9jZXNzQ29uZmlnRmlsZShQR0Nf U0lHSFVQKTsKLQkJCQkJfQogCiAJCQkJCS8qIFJlc2V0IHRpbWVvdXQuICovCiAJCQkJCWxh c3RfcmVjdl90aW1lc3RhbXAgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CkBAIC00MTk4LDEx ICs0MTk1LDExIEBAIExvZ2ljYWxSZXBBcHBseUxvb3AoWExvZ1JlY1B0ciBsYXN0X3JlY2Vp dmVkKQogCQkJYnJlYWs7CiAKIAkJLyoKLQkJICogV2FpdCBmb3IgbW9yZSBkYXRhIG9yIGxh dGNoLiAgSWYgd2UgaGF2ZSB1bmZsdXNoZWQgdHJhbnNhY3Rpb25zLAotCQkgKiB3YWtlIHVw IGFmdGVyIFdhbFdyaXRlckRlbGF5IHRvIHNlZSBpZiB0aGV5J3ZlIGJlZW4gZmx1c2hlZCB5 ZXQgKGluCi0JCSAqIHdoaWNoIGNhc2Ugd2Ugc2hvdWxkIHNlbmQgYSBmZWVkYmFjayBtZXNz YWdlKS4gIE90aGVyd2lzZSwgdGhlcmUncwotCQkgKiBubyBwYXJ0aWN1bGFyIHVyZ2VuY3kg YWJvdXQgd2FraW5nIHVwIHVubGVzcyB3ZSBnZXQgZGF0YSBvciBhCi0JCSAqIHNpZ25hbC4K KwkJICogV2FpdCBmb3IgbW9yZSBkYXRhIG9yIHdha2V1cCBpbnRlcnJ1cHQuICBJZiB3ZSBo YXZlIHVuZmx1c2hlZAorCQkgKiB0cmFuc2FjdGlvbnMsIHdha2UgdXAgYWZ0ZXIgV2FsV3Jp dGVyRGVsYXkgdG8gc2VlIGlmIHRoZXkndmUgYmVlbgorCQkgKiBmbHVzaGVkIHlldCAoaW4g d2hpY2ggY2FzZSB3ZSBzaG91bGQgc2VuZCBhIGZlZWRiYWNrIG1lc3NhZ2UpLgorCQkgKiBP dGhlcndpc2UsIHRoZXJlJ3Mgbm8gcGFydGljdWxhciB1cmdlbmN5IGFib3V0IHdha2luZyB1 cCB1bmxlc3Mgd2UKKwkJICogZ2V0IGRhdGEgb3IgYSBzaWduYWwuCiAJCSAqLwogCQlpZiAo IWRsaXN0X2lzX2VtcHR5KCZsc25fbWFwcGluZykpCiAJCQl3YWl0X3RpbWUgPSBXYWxXcml0 ZXJEZWxheTsKQEAgLTQyMjMsMjMgKzQyMjAsMTYgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChY TG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJCQkJd2FpdF90aW1lID0gTWluKHdhaXRfdGlt ZSwgTXlTdWJzY3JpcHRpb24tPm1heHJldGVudGlvbik7CiAJCX0KIAotCQlyYyA9IFdhaXRM YXRjaE9yU29ja2V0KE15TGF0Y2gsCi0JCQkJCQkJICAgV0xfU09DS0VUX1JFQURBQkxFIHwg V0xfTEFUQ0hfU0VUIHwKLQkJCQkJCQkgICBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKLQkJCQkJCQkgICBmZCwgd2FpdF90aW1lLAotCQkJCQkJCSAgIFdBSVRfRVZFTlRf TE9HSUNBTF9BUFBMWV9NQUlOKTsKLQotCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCi0JCXsK LQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7Ci0JCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwot CQl9CisJCXJjID0gV2FpdEludGVycnVwdE9yU29ja2V0KENoZWNrRm9ySW50ZXJydXB0c01h c2sgfAorCQkJCQkJCQkgICBJTlRFUlJVUFRfV0FJVF9XQUtFVVAgfAorCQkJCQkJCQkgICBJ TlRFUlJVUFRfQ09ORklHX1JFTE9BRCwKKwkJCQkJCQkJICAgV0xfU09DS0VUX1JFQURBQkxF IHwgV0xfSU5URVJSVVBUIHwKKwkJCQkJCQkJICAgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsCisJCQkJCQkJCSAgIGZkLCB3YWl0X3RpbWUsCisJCQkJCQkJCSAgIFdBSVRf RVZFTlRfTE9HSUNBTF9BUFBMWV9NQUlOKTsKIAotCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGlu ZykKLQkJewotCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOworCQlpZiAoQ29uc3Vt ZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCkpCiAJCQlQcm9jZXNzQ29uZmln RmlsZShQR0NfU0lHSFVQKTsKLQkJfQogCiAJCWlmIChyYyAmIFdMX1RJTUVPVVQpCiAJCXsK QEAgLTU5NjcsOCArNTk1Nyw5IEBAIFNldHVwQXBwbHlPclN5bmNXb3JrZXIoaW50IHdvcmtl cl9zbG90KQogCiAJQXNzZXJ0KGFtX3RhYmxlc3luY193b3JrZXIoKSB8fCBhbV9zZXF1ZW5j ZXN5bmNfd29ya2VyKCkgfHwgYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigpKTsKIAotCS8qIFNl dHVwIHNpZ25hbCBoYW5kbGluZyAqLwotCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxl ckZvckNvbmZpZ1JlbG9hZCk7CisJLyogU2V0dXAgaW50ZXJydXB0IGhhbmRsaW5nICovCisJ U2V0U3RhbmRhcmRJbnRlcnJ1cHRIYW5kbGVycygpOworCiAJQmFja2dyb3VuZFdvcmtlclVu YmxvY2tTaWduYWxzKCk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCmluZGV4IDhj NjE1ODNmYmZkLi4zODhhZDJjYjg2MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vc2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwpAQCAt NDUsNyArNDUsNiBAQAogI2luY2x1ZGUgImNvbW1vbi9maWxlX3V0aWxzLmgiCiAjaW5jbHVk ZSAiY29tbW9uL3N0cmluZy5oIgogI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKLSNpbmNs dWRlICJpcGMvc2lnbmFsX2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5j bHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vc2xvdHN5bmMuaCIKQEAgLTIxMTksNyArMjExOCw4IEBAIEludmFsaWRhdGVQb3Nz aWJseU9ic29sZXRlU2xvdCh1aW50MzIgcG9zc2libGVfY2F1c2VzLAogCQkJICovCiAJCQlp ZiAobGFzdF9zaWduYWxlZF9waWQgIT0gYWN0aXZlX3BpZCkKIAkJCXsKLQkJCQlSZXBvcnRT bG90SW52YWxpZGF0aW9uKGludmFsaWRhdGlvbl9jYXVzZSwgdHJ1ZSwgYWN0aXZlX3BpZCwK KwkJCQlSZXBvcnRTbG90SW52YWxpZGF0aW9uKGludmFsaWRhdGlvbl9jYXVzZSwgdHJ1ZSwK KwkJCQkJCQkJCSAgIGFjdGl2ZV9waWQsCiAJCQkJCQkJCQkgICBzbG90bmFtZSwgcmVzdGFy dF9sc24sCiAJCQkJCQkJCQkgICBvbGRlc3RMU04sIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9u LAogCQkJCQkJCQkJICAgc2xvdF9pZGxlX3NlY3MpOwpAQCAtMjEyOSw3ICsyMTI5LDcgQEAg SW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KHVpbnQzMiBwb3NzaWJsZV9jYXVzZXMs CiAJCQkJCQkJCQkJCQkgIGFjdGl2ZV9waWQsCiAJCQkJCQkJCQkJCQkgIFJFQ09WRVJZX0NP TkZMSUNUX0xPR0lDQUxTTE9UKTsKIAkJCQllbHNlCi0JCQkJCSh2b2lkKSBraWxsKGFjdGl2 ZV9waWQsIFNJR1RFUk0pOworCQkJCQlTZW5kSW50ZXJydXB0V2l0aFBpZChJTlRFUlJVUFRf VEVSTUlOQVRFLCBhY3RpdmVfcHJvYywgYWN0aXZlX3BpZCk7CiAKIAkJCQlsYXN0X3NpZ25h bGVkX3BpZCA9IGFjdGl2ZV9waWQ7CiAJCQl9CkBAIC0yMTcyLDcgKzIxNzIsOCBAQCBJbnZh bGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QodWludDMyIHBvc3NpYmxlX2NhdXNlcywKIAkJ CVJlcGxpY2F0aW9uU2xvdFNhdmUoKTsKIAkJCVJlcGxpY2F0aW9uU2xvdFJlbGVhc2UoKTsK IAotCQkJUmVwb3J0U2xvdEludmFsaWRhdGlvbihpbnZhbGlkYXRpb25fY2F1c2UsIGZhbHNl LCBhY3RpdmVfcGlkLAorCQkJUmVwb3J0U2xvdEludmFsaWRhdGlvbihpbnZhbGlkYXRpb25f Y2F1c2UsIGZhbHNlLAorCQkJCQkJCQkgICBhY3RpdmVfcGlkLAogCQkJCQkJCQkgICBzbG90 bmFtZSwgcmVzdGFydF9sc24sCiAJCQkJCQkJCSAgIG9sZGVzdExTTiwgc25hcHNob3RDb25m bGljdEhvcml6b24sCiAJCQkJCQkJCSAgIHNsb3RfaWRsZV9zZWNzKTsKQEAgLTMyNzAsMTEg KzMyNzEsOCBAQCBXYWl0Rm9yU3RhbmRieUNvbmZpcm1hdGlvbihYTG9nUmVjUHRyIHdhaXRf Zm9yX2xzbikKIAl7CiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJaWYgKENvbmZp Z1JlbG9hZFBlbmRpbmcpCi0JCXsKLQkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsK KwkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQogCQkJ UHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7Ci0JCX0KIAogCQkvKiBFeGl0IGlmIGRv bmUgd2FpdGluZyBmb3IgZXZlcnkgc2xvdC4gKi8KIAkJaWYgKFN0YW5kYnlTbG90c0hhdmVD YXVnaHR1cCh3YWl0X2Zvcl9sc24sIFdBUk5JTkcpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vc3luY3JlcC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3lu Y3JlcC5jCmluZGV4IDNmMWRhNGRiZTRlLi5jYmI3YTIwYjUwNCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3N5bmNyZXAuYwpAQCAtMjY2LDE4ICsyNjYsMTggQEAgU3luY1JlcFdhaXRGb3JM U04oWExvZ1JlY1B0ciBsc24sIGJvb2wgY29tbWl0KQogCS8qCiAJICogV2FpdCBmb3Igc3Bl Y2lmaWVkIExTTiB0byBiZSBjb25maXJtZWQuCiAJICoKLQkgKiBFYWNoIHByb2MgaGFzIGl0 cyBvd24gd2FpdCBsYXRjaCwgc28gd2UgcGVyZm9ybSBhIG5vcm1hbCBsYXRjaAorCSAqIEVh Y2ggcHJvYyBoYXMgaXRzIG93biB3YWl0IGludGVycnVwdCB2ZWN0b3IsIHNvIHdlIHBlcmZv cm0gYSBub3JtYWwKIAkgKiBjaGVjay93YWl0IGxvb3AgaGVyZS4KIAkgKi8KIAlmb3IgKDs7 KQogCXsKIAkJaW50CQkJcmM7CiAKLQkJLyogTXVzdCByZXNldCB0aGUgbGF0Y2ggYmVmb3Jl IHRlc3Rpbmcgc3RhdGUuICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCS8qIE11c3Qg Y2xlYXIgdGhlIGludGVycnVwdCBmbGFnIGJlZm9yZSB0ZXN0aW5nIHN0YXRlLiAqLworCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCiAJCS8qCi0JCSAqIEFj cXVpcmluZyB0aGUgbG9jayBpcyBub3QgbmVlZGVkLCB0aGUgbGF0Y2ggZW5zdXJlcyBwcm9w ZXIKKwkJICogQWNxdWlyaW5nIHRoZSBsb2NrIGlzIG5vdCBuZWVkZWQsIHRoZSBpbnRlcnJ1 cHQgZW5zdXJlcyBwcm9wZXIKIAkJICogYmFycmllcnMuIElmIGl0IGxvb2tzIGxpa2Ugd2Un cmUgZG9uZSwgd2UgbXVzdCByZWFsbHkgYmUgZG9uZSwKIAkJICogYmVjYXVzZSBvbmNlIHdh bHNlbmRlciBjaGFuZ2VzIHRoZSBzdGF0ZSB0byBTWU5DX1JFUF9XQUlUX0NPTVBMRVRFLAog CQkgKiBpdCB3aWxsIG5ldmVyIHVwZGF0ZSBpdCBhZ2Fpbiwgc28gd2UgY2FuJ3QgYmUgc2Vl aW5nIGEgc3RhbGUgdmFsdWUKQEAgLTI5NSwxMCArMjk1LDEwIEBAIFN5bmNSZXBXYWl0Rm9y TFNOKFhMb2dSZWNQdHIgbHNuLCBib29sIGNvbW1pdCkKIAkJICogZW50aXRsZWQgdG8gYXNz dW1lIHRoYXQgYW4gYWNrbm93bGVkZ2VkIGNvbW1pdCBpcyBhbHNvIHJlcGxpY2F0ZWQsCiAJ CSAqIHdoaWNoIG1pZ2h0IG5vdCBiZSB0cnVlLiBTbyBpbiB0aGlzIGNhc2Ugd2UgaXNzdWUg YSBXQVJOSU5HICh3aGljaAogCQkgKiBzb21lIGNsaWVudHMgbWF5IGJlIGFibGUgdG8gaW50 ZXJwcmV0KSBhbmQgc2h1dCBvZmYgZnVydGhlciBvdXRwdXQuCi0JCSAqIFdlIGRvIE5PVCBy ZXNldCBQcm9jRGllUGVuZGluZywgc28gdGhhdCB0aGUgcHJvY2VzcyB3aWxsIGRpZSBhZnRl cgotCQkgKiB0aGUgY29tbWl0IGlzIGNsZWFuZWQgdXAuCisJCSAqIFdlIGRvIE5PVCBjbGVh ciB0aGUgaW50ZXJydXB0IGJpdCwgc28gdGhhdCB0aGUgcHJvY2VzcyB3aWxsIGRpZQorCQkg KiBhZnRlciB0aGUgY29tbWl0IGlzIGNsZWFuZWQgdXAuCiAJCSAqLwotCQlpZiAoUHJvY0Rp ZVBlbmRpbmcpCisJCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9URVJNSU5BVEUp KQogCQl7CiAJCQlpZiAoUHJvY0RpZVNlbmRlclBpZCAhPSAwKQogCQkJCWVyZXBvcnQoV0FS TklORywKQEAgLTMyNCw5ICszMjQsOCBAQCBTeW5jUmVwV2FpdEZvckxTTihYTG9nUmVjUHRy IGxzbiwgYm9vbCBjb21taXQpCiAJCSAqIGFsdG9nZXRoZXIgaXMgbm90IGhlbHBmdWwsIHNv IHdlIGp1c3QgdGVybWluYXRlIHRoZSB3YWl0IHdpdGggYQogCQkgKiBzdWl0YWJsZSB3YXJu aW5nLgogCQkgKi8KLQkJaWYgKFF1ZXJ5Q2FuY2VsUGVuZGluZykKKwkJaWYgKENvbnN1bWVJ bnRlcnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCkpCiAJCXsKLQkJCVF1ZXJ5Q2FuY2Vs UGVuZGluZyA9IGZhbHNlOwogCQkJZXJlcG9ydChXQVJOSU5HLAogCQkJCQkoZXJybXNnKCJj YW5jZWxpbmcgd2FpdCBmb3Igc3luY2hyb25vdXMgcmVwbGljYXRpb24gZHVlIHRvIHVzZXIg cmVxdWVzdCIpLAogCQkJCQkgZXJyZGV0YWlsKCJUaGUgdHJhbnNhY3Rpb24gaGFzIGFscmVh ZHkgY29tbWl0dGVkIGxvY2FsbHksIGJ1dCBtaWdodCBub3QgaGF2ZSBiZWVuIHJlcGxpY2F0 ZWQgdG8gdGhlIHN0YW5kYnkuIikpKTsKQEAgLTMzNSwxMSArMzM0LDE1IEBAIFN5bmNSZXBX YWl0Rm9yTFNOKFhMb2dSZWNQdHIgbHNuLCBib29sIGNvbW1pdCkKIAkJfQogCiAJCS8qCi0J CSAqIFdhaXQgb24gbGF0Y2guICBBbnkgY29uZGl0aW9uIHRoYXQgc2hvdWxkIHdha2UgdXMg dXAgd2lsbCBzZXQgdGhlCi0JCSAqIGxhdGNoLCBzbyBubyBuZWVkIGZvciB0aW1lb3V0Lgor CQkgKiBXYWl0IG9uIGludGVycnVwdC4gIEFueSBjb25kaXRpb24gdGhhdCBzaG91bGQgd2Fr ZSB1cyB1cCB3aWxsIHNldAorCQkgKiB0aGUgYXBwcm9wcmlhdGUgaW50ZXJydXB0LCBzbyBu byBuZWVkIGZvciB0aW1lb3V0LgogCQkgKi8KLQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwg V0xfTEFUQ0hfU0VUIHwgV0xfUE9TVE1BU1RFUl9ERUFUSCwgLTEsCi0JCQkJCSAgIFdBSVRf RVZFTlRfU1lOQ19SRVApOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRf V0FLRVVQIHwKKwkJCQkJCSAgIElOVEVSUlVQVF9URVJNSU5BVEUgfAorCQkJCQkJICAgSU5U RVJSVVBUX1FVRVJZX0NBTkNFTCwKKwkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1BPU1RN QVNURVJfREVBVEgsCisJCQkJCQkgICAtMSwKKwkJCQkJCSAgIFdBSVRfRVZFTlRfU1lOQ19S RVApOwogCiAJCS8qCiAJCSAqIElmIHRoZSBwb3N0bWFzdGVyIGRpZXMsIHdlJ2xsIHByb2Jh Ymx5IG5ldmVyIGdldCBhbiBhY2tub3dsZWRnbWVudCwKQEAgLTM0Nyw3ICszNTAsNyBAQCBT eW5jUmVwV2FpdEZvckxTTihYTG9nUmVjUHRyIGxzbiwgYm9vbCBjb21taXQpCiAJCSAqLwog CQlpZiAocmMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKQogCQl7Ci0JCQlQcm9jRGllUGVuZGlu ZyA9IHRydWU7CisJCQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfVEVSTUlOQVRFKTsKIAkJ CXdoZXJlVG9TZW5kT3V0cHV0ID0gRGVzdE5vbmU7CiAJCQlTeW5jUmVwQ2FuY2VsV2FpdCgp OwogCQkJYnJlYWs7CkBAIC05NTQsNyArOTU3LDcgQEAgU3luY1JlcFdha2VRdWV1ZShib29s IGFsbCwgaW50IG1vZGUpCiAJCS8qCiAJCSAqIFdha2Ugb25seSB3aGVuIHdlIGhhdmUgc2V0 IHN0YXRlIGFuZCByZW1vdmVkIGZyb20gcXVldWUuCiAJCSAqLwotCQlTZXRMYXRjaCgmKHBy b2MtPnByb2NMYXRjaCkpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VV UCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhwcm9jKSk7CiAKIAkJbnVtcHJvY3MrKzsKIAl9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYwppbmRleCA5YWJjOTgxNzM2Mi4u YjBjZjAzMmRlM2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJl Y2VpdmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYwpA QCAtNjEsNyArNjEsNiBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfYXV0aGlkLmgiCiAjaW5j bHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKLSNpbmNsdWRl ICJpcGMvc2lnbmFsX2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIK ICNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgpAQCAt MjQ1LDE2ICsyNDQsOCBAQCBXYWxSZWNlaXZlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9k YXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkvKiBBcnJhbmdlIHRvIGNsZWFuIHVw IGF0IHdhbHJlY2VpdmVyIGV4aXQgKi8KIAlvbl9zaG1lbV9leGl0KFdhbFJjdkRpZSwgUG9p bnRlckdldERhdHVtKCZzdGFydHBvaW50VExJKSk7CiAKLQkvKiBQcm9wZXJseSBhY2NlcHQg b3IgaWdub3JlIHNpZ25hbHMgdGhlIHBvc3RtYXN0ZXIgbWlnaHQgc2VuZCB1cyAqLwotCXBx c2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7IC8qIHNldCBm bGFnIHRvIHJlYWQgY29uZmlnCi0JCQkJCQkJCQkJCQkJICogZmlsZSAqLwotCXBxc2lnbmFs KFNJR0lOVCwgUEdfU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHVEVSTSwgZGllKTsJCS8qIHJl cXVlc3Qgc2h1dGRvd24gKi8KLQkvKiBTSUdRVUlUIGhhbmRsZXIgd2FzIGFscmVhZHkgc2V0 IHVwIGJ5IEluaXRQb3N0bWFzdGVyQ2hpbGQgKi8KLQlwcXNpZ25hbChTSUdBTFJNLCBQR19T SUdfSUdOKTsKLQlwcXNpZ25hbChTSUdQSVBFLCBQR19TSUdfSUdOKTsKLQlwcXNpZ25hbChT SUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcik7Ci0JcHFzaWduYWwoU0lHVVNS MiwgUEdfU0lHX0lHTik7CisJLyogU2V0IHVwIGludGVycnVwdCBoYW5kbGVycy4gV2UgaGF2 ZSBubyBzcGVjaWFsIG5lZWRzLiAqLworCVNldFN0YW5kYXJkSW50ZXJydXB0SGFuZGxlcnMo KTsKIAogCS8qIExvYWQgdGhlIGxpYnBxLXNwZWNpZmljIGZ1bmN0aW9ucyAqLwogCWxvYWRf ZmlsZSgibGlicHF3YWxyZWNlaXZlciIsIGZhbHNlKTsKQEAgLTQ0OSw5ICs0NDAsOCBAQCBX YWxSZWNlaXZlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1 cF9kYXRhX2xlbikKIAkJCQkvKiBQcm9jZXNzIGFueSByZXF1ZXN0cyBvciBzaWduYWxzIHJl Y2VpdmVkIHJlY2VudGx5ICovCiAJCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQkJ CWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQorCQkJCWlmIChDb25zdW1lSW50ZXJydXB0KElO VEVSUlVQVF9DT05GSUdfUkVMT0FEKSkKIAkJCQl7Ci0JCQkJCUNvbmZpZ1JlbG9hZFBlbmRp bmcgPSBmYWxzZTsKIAkJCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CiAJCQkJ CS8qIHJlY29tcHV0ZSB3YWtldXAgdGltZXMgKi8KIAkJCQkJbm93ID0gR2V0Q3VycmVudFRp bWVzdGFtcCgpOwpAQCAtNTI0LDI1ICs1MTQsMjcgQEAgV2FsUmVjZWl2ZXJNYWluKGNvbnN0 IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAKIAkJCQkv KgogCQkJCSAqIElkZWFsbHkgd2Ugd291bGQgcmV1c2UgYSBXYWl0RXZlbnRTZXQgb2JqZWN0 IHJlcGVhdGVkbHkKLQkJCQkgKiBoZXJlIHRvIGF2b2lkIHRoZSBvdmVyaGVhZHMgb2YgV2Fp dExhdGNoT3JTb2NrZXQgb24gZXBvbGwKLQkJCQkgKiBzeXN0ZW1zLCBidXQgd2UgY2FuJ3Qg YmUgc3VyZSB0aGF0IGxpYnBxIChvciBhbnkgb3RoZXIKLQkJCQkgKiB3YWxyZWNlaXZlciBp bXBsZW1lbnRhdGlvbikgaGFzIHRoZSBzYW1lIHNvY2tldCAoZXZlbiBpZgotCQkJCSAqIHRo ZSBmZCBpcyB0aGUgc2FtZSBudW1iZXIsIGl0IG1heSBoYXZlIGJlZW4gY2xvc2VkIGFuZAor CQkJCSAqIGhlcmUgdG8gYXZvaWQgdGhlIG92ZXJoZWFkcyBvZiBXYWl0SW50ZXJydXB0T3JT b2NrZXQgb24KKwkJCQkgKiBlcG9sbCBzeXN0ZW1zLCBidXQgd2UgY2FuJ3QgYmUgc3VyZSB0 aGF0IGxpYnBxIChvciBhbnkKKwkJCQkgKiBvdGhlciB3YWxyZWNlaXZlciBpbXBsZW1lbnRh dGlvbikgaGFzIHRoZSBzYW1lIHNvY2tldCAoZXZlbgorCQkJCSAqIGlmIHRoZSBmZCBpcyB0 aGUgc2FtZSBudW1iZXIsIGl0IG1heSBoYXZlIGJlZW4gY2xvc2VkIGFuZAogCQkJCSAqIHJl b3BlbmVkIHNpbmNlIHRoZSBsYXN0IHRpbWUpLiAgSW4gZnV0dXJlLCBpZiB0aGVyZSBpcyBh CiAJCQkJICogZnVuY3Rpb24gZm9yIHJlbW92aW5nIHNvY2tldHMgZnJvbSBXYWl0RXZlbnRT ZXQsIHRoZW4gd2UKIAkJCQkgKiBjb3VsZCBhZGQgYW5kIHJlbW92ZSBqdXN0IHRoZSBzb2Nr ZXQgZWFjaCB0aW1lLCBwb3RlbnRpYWxseQogCQkJCSAqIGF2b2lkaW5nIHNvbWUgc3lzdGVt IGNhbGxzLgogCQkJCSAqLwogCQkJCUFzc2VydCh3YWl0X2ZkICE9IFBHSU5WQUxJRF9TT0NL RVQpOwotCQkJCXJjID0gV2FpdExhdGNoT3JTb2NrZXQoTXlMYXRjaCwKLQkJCQkJCQkJCSAg IFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9TT0NLRVRfUkVBREFCTEUgfAotCQkJCQkJCQkJ ICAgV0xfVElNRU9VVCB8IFdMX0xBVENIX1NFVCwKLQkJCQkJCQkJCSAgIHdhaXRfZmQsCi0J CQkJCQkJCQkgICBuYXAsCi0JCQkJCQkJCQkgICBXQUlUX0VWRU5UX1dBTF9SRUNFSVZFUl9N QUlOKTsKLQkJCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCQkJcmMgPSBXYWl0SW50ZXJy dXB0T3JTb2NrZXQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkJCQkJICAgSU5U RVJSVVBUX1dBSVRfV0FLRVVQIHwKKwkJCQkJCQkJCQkgICBJTlRFUlJVUFRfQ09ORklHX1JF TE9BRCwKKwkJCQkJCQkJCQkgICBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfU09DS0VUX1JF QURBQkxFIHwKKwkJCQkJCQkJCQkgICBXTF9USU1FT1VUIHwgV0xfSU5URVJSVVBULAorCQkJ CQkJCQkJCSAgIHdhaXRfZmQsCisJCQkJCQkJCQkJICAgbmFwLAorCQkJCQkJCQkJCSAgIFdB SVRfRVZFTlRfV0FMX1JFQ0VJVkVSX01BSU4pOworCQkJCWlmIChyYyAmIFdMX0lOVEVSUlVQ VCkKIAkJCQl7Ci0JCQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkJCUNsZWFySW50ZXJy dXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAJCQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CiAKIAkJCQkJaWYgKHdhbHJjdi0+YXBwbHlfcmVwbHlfcmVxdWVzdGVkKQpAQCAtNjkw LDcgKzY4Miw3IEBAIFdhbFJjdldhaXRGb3JTdGFydFBvc2l0aW9uKFhMb2dSZWNQdHIgKnN0 YXJ0cG9pbnQsIFRpbWVMaW5lSUQgKnN0YXJ0cG9pbnRUTEkpCiAJV2FrZXVwUmVjb3Zlcnko KTsKIAlmb3IgKDs7KQogCXsKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRl cnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAogCQlDSEVDS19GT1JfSU5URVJSVVBU UygpOwogCkBAIC03MjIsOCArNzE0LDEyIEBAIFdhbFJjdldhaXRGb3JTdGFydFBvc2l0aW9u KFhMb2dSZWNQdHIgKnN0YXJ0cG9pbnQsIFRpbWVMaW5lSUQgKnN0YXJ0cG9pbnRUTEkpCiAJ CX0KIAkJU3BpbkxvY2tSZWxlYXNlKCZ3YWxyY3YtPm11dGV4KTsKIAotCQkodm9pZCkgV2Fp dExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAs Ci0JCQkJCQkgV0FJVF9FVkVOVF9XQUxfUkVDRUlWRVJfV0FJVF9TVEFSVCk7CisJCSh2b2lk KSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfAorCQkJCQkJCSBJTlRF UlJVUFRfVEVSTUlOQVRFIHwKKwkJCQkJCQkgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJ CQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSAwLAor CQkJCQkJCSBXQUlUX0VWRU5UX1dBTF9SRUNFSVZFUl9XQUlUX1NUQVJUKTsKIAl9CiAKIAlp ZiAodXBkYXRlX3Byb2Nlc3NfdGl0bGUpCkBAIC0xNDAzLDcgKzEzOTksNyBAQCBXYWxSY3ZS ZXF1ZXN0QXBwbHlSZXBseSh2b2lkKQogCXByb2NubyA9IFdhbFJjdi0+cHJvY25vOwogCVNw aW5Mb2NrUmVsZWFzZSgmV2FsUmN2LT5tdXRleCk7CiAJaWYgKHByb2NubyAhPSBJTlZBTElE X1BST0NfTlVNQkVSKQotCQlTZXRMYXRjaCgmR2V0UEdQcm9jQnlOdW1iZXIocHJvY25vKS0+ cHJvY0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAsIHBy b2Nubyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxyZWNlaXZlcmZ1bmNzLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZl cmZ1bmNzLmMKaW5kZXggZWNmNTEwNTE3ZWIuLmJlZjMxODdhYTI2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlcmZ1bmNzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5jcy5jCkBAIC0yNCw2ICsyNCw3IEBA CiAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ19pbnRlcm5hbC5oIgogI2luY2x1ZGUgImFjY2Vz cy94bG9ncmVjb3ZlcnkuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVk ZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKICNp bmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCkBAIC0zNDIsNyArMzQzLDcgQEAgUmVxdWVz dFhMb2dTdHJlYW1pbmcoVGltZUxpbmVJRCB0bGksIFhMb2dSZWNQdHIgcmVjcHRyLCBjb25z dCBjaGFyICpjb25uaW5mbywKIAlpZiAobGF1bmNoKQogCQlTZW5kUG9zdG1hc3RlclNpZ25h bChQTVNJR05BTF9TVEFSVF9XQUxSRUNFSVZFUik7CiAJZWxzZSBpZiAod2FscmN2X3Byb2Mg IT0gSU5WQUxJRF9QUk9DX05VTUJFUikKLQkJU2V0TGF0Y2goJkdldFBHUHJvY0J5TnVtYmVy KHdhbHJjdl9wcm9jKS0+cHJvY0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRf V0FJVF9XQUtFVVAsIHdhbHJjdl9wcm9jKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2Fsc2VuZGVyLmMKaW5kZXggYjFhZDQ5MmFlMzUuLjliNGNkYjJjMmM1IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwpAQCAtMjUsMTQgKzI1LDE0IEBACiAgKiB0 aGUgd2Fsc2VuZGVyIHdpbGwgZXhpdCBxdWlja2x5IHdpdGhvdXQgc2VuZGluZyBhbnkgbW9y ZSBYTE9HIHJlY29yZHMuCiAgKgogICogSWYgdGhlIHNlcnZlciBpcyBzaHV0IGRvd24sIGNo ZWNrcG9pbnRlciBzZW5kcyB1cwotICogUFJPQ1NJR19XQUxTTkRfSU5JVF9TVE9QUElORyBh ZnRlciBhbGwgcmVndWxhciBiYWNrZW5kcyBoYXZlIGV4aXRlZC4gIElmCisgKiBJTlRFUlJV UFRfV0FMU05EX0lOSVRfU1RPUFBJTkcgYWZ0ZXIgYWxsIHJlZ3VsYXIgYmFja2VuZHMgaGF2 ZSBleGl0ZWQuICBJZgogICogdGhlIGJhY2tlbmQgaXMgaWRsZSBvciBydW5zIGFuIFNRTCBx dWVyeSB0aGlzIGNhdXNlcyB0aGUgYmFja2VuZCB0bwogICogc2h1dGRvd24sIGlmIGxvZ2lj YWwgcmVwbGljYXRpb24gaXMgaW4gcHJvZ3Jlc3MgYWxsIGV4aXN0aW5nIFdBTCByZWNvcmRz CiAgKiBhcmUgcHJvY2Vzc2VkIGZvbGxvd2VkIGJ5IGEgc2h1dGRvd24uICBPdGhlcndpc2Ug dGhpcyBjYXVzZXMgdGhlIHdhbHNlbmRlcgogICogdG8gc3dpdGNoIHRvIHRoZSAic3RvcHBp bmciIHN0YXRlLiBJbiB0aGlzIHN0YXRlLCB0aGUgd2Fsc2VuZGVyIHdpbGwgcmVqZWN0CiAg KiBhbnkgZnVydGhlciByZXBsaWNhdGlvbiBjb21tYW5kcy4gVGhlIGNoZWNrcG9pbnRlciBi ZWdpbnMgdGhlIHNodXRkb3duCiAgKiBjaGVja3BvaW50IG9uY2UgYWxsIHdhbHNlbmRlcnMg YXJlIGNvbmZpcm1lZCBhcyBzdG9wcGluZy4gV2hlbiB0aGUgc2h1dGRvd24KLSAqIGNoZWNr cG9pbnQgZmluaXNoZXMsIHRoZSBwb3N0bWFzdGVyIHNlbmRzIHVzIFNJR1VTUjIuIFRoaXMg aW5zdHJ1Y3RzCisgKiBjaGVja3BvaW50IGZpbmlzaGVzLCB0aGUgcG9zdG1hc3RlciBzZW5k cyB1cyBTSUdVU1IyLCByYWlzaW5nIElOVEVSUlVQVF9XQUxTTkRfU1RPUC4gVGhpcyBpbnN0 cnVjdHMKICAqIHdhbHNlbmRlciB0byBzZW5kIGFueSBvdXRzdGFuZGluZyBXQUwsIGluY2x1 ZGluZyB0aGUgc2h1dGRvd24gY2hlY2twb2ludAogICogcmVjb3JkLCB3YWl0IGZvciBpdCB0 byBiZSByZXBsaWNhdGVkIHRvIHRoZSBzdGFuZGJ5LCBhbmQgdGhlbiBleGl0LgogICogVGhp cyB3YWl0aW5nIHRpbWUgY2FuIGJlIGxpbWl0ZWQgYnkgdGhlIHdhbF9zZW5kZXJfc2h1dGRv d25fdGltZW91dApAQCAtNjUsNiArNjUsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlw ZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImZ1bmNhcGku aCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAiaXBjL3NpZ25hbF9o YW5kbGVycy5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEv cHFmb3JtYXQuaCIKQEAgLTg4LDcgKzg5LDYgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Btc2ln bmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cm9jYXJyYXkuaCIKLSNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRl ICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ0Y29wL2Rlc3QuaCIKICNpbmNs dWRlICJ0Y29wL3Rjb3Bwcm90LmgiCkBAIC0yMjksMTUgKzIyOSwxNSBAQCBzdGF0aWMgYm9v bCBzdHJlYW1pbmdEb25lUmVjZWl2aW5nOwogLyogQXJlIHdlIHRoZXJlIHlldD8gKi8KIHN0 YXRpYyBib29sIFdhbFNuZENhdWdodFVwID0gZmFsc2U7CiAKLS8qIEZsYWdzIHNldCBieSBz aWduYWwgaGFuZGxlcnMgZm9yIGxhdGVyIHNlcnZpY2UgaW4gbWFpbiBsb29wICovCi1zdGF0 aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IGdvdF9TSUdVU1IyID0gZmFsc2U7Ci1zdGF0aWMg dm9sYXRpbGUgc2lnX2F0b21pY190IGdvdF9TVE9QUElORyA9IGZhbHNlOworLyogRmxhZyBz ZXQgYnkgaW50ZXJydXB0IGhhbmRsZXIsIGlmIElOSVRfU1RPUFBJTkcgaGFzIGJlZW4gcmVj ZWl2ZWQgKi8KK3N0YXRpYyBib29sIGdvdF9TVE9QUElORyA9IGZhbHNlOwogCiAvKgogICog VGhpcyBpcyBzZXQgd2hpbGUgd2UgYXJlIHN0cmVhbWluZy4gV2hlbiBub3Qgc2V0Ci0gKiBQ Uk9DU0lHX1dBTFNORF9JTklUX1NUT1BQSU5HIHNpZ25hbCB3aWxsIGJlIGhhbmRsZWQgbGlr ZSBTSUdURVJNLiBXaGVuIHNldCwKLSAqIHRoZSBtYWluIGxvb3AgaXMgcmVzcG9uc2libGUg Zm9yIGNoZWNraW5nIGdvdF9TVE9QUElORyBhbmQgdGVybWluYXRpbmcgd2hlbgotICogaXQn cyBzZXQgKGFmdGVyIHN0cmVhbWluZyBhbnkgcmVtYWluaW5nIFdBTCkuCisgKiBJTlRFUlJV UFRfV0FMU05EX0lOSVRfU1RPUFBJTkcgaW50ZXJydXB0IHdpbGwgYmUgaGFuZGxlZCBsaWtl IFNJR1RFUk0uCisgKiBXaGVuIHNldCwgdGhlIG1haW4gbG9vcCBpcyByZXNwb25zaWJsZSBm b3IgY2hlY2tpbmcKKyAqIElOVEVSUlVQVF9XQUxTTkRfSU5JVF9TVE9QUElORyBhbmQgdGVy bWluYXRpbmcgd2hlbiBpdCdzIHNldCAoYWZ0ZXIKKyAqIHN0cmVhbWluZyBhbnkgcmVtYWlu aW5nIFdBTCkuCiAgKi8KIHN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3QgcmVwbGljYXRp b25fYWN0aXZlID0gZmFsc2U7CiAKQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgdm9pZCBX YWxTbmRLZWVwYWxpdmVJZk5lY2Vzc2FyeSh2b2lkKTsKIHN0YXRpYyB2b2lkIFdhbFNuZENo ZWNrVGltZU91dCh2b2lkKTsKIHN0YXRpYyB2b2lkIFdhbFNuZENoZWNrU2h1dGRvd25UaW1l b3V0KHZvaWQpOwogc3RhdGljIGxvbmcgV2FsU25kQ29tcHV0ZVNsZWVwdGltZShUaW1lc3Rh bXBUeiBub3cpOwotc3RhdGljIHZvaWQgV2FsU25kV2FpdCh1aW50MzIgc29ja2V0X2V2ZW50 cywgbG9uZyB0aW1lb3V0LCB1aW50MzIgd2FpdF9ldmVudCk7CitzdGF0aWMgdm9pZCBXYWxT bmRXYWl0KHVpbnQzMiBzb2NrZXRfZXZlbnRzLCBsb25nIHRpbWVvdXQsIHVpbnQzMiB3YWl0 X2V2ZW50LCBJbnRlcnJ1cHRNYXNrIGludGVycnVwdE1hc2spOwogc3RhdGljIHZvaWQgV2Fs U25kUHJlcGFyZVdyaXRlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY1B0 ciBsc24sIFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGxhc3Rfd3JpdGUpOwogc3RhdGljIHZv aWQgV2FsU25kV3JpdGVEYXRhKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1Jl Y1B0ciBsc24sIFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGxhc3Rfd3JpdGUpOwogc3RhdGlj IHZvaWQgV2FsU25kVXBkYXRlUHJvZ3Jlc3MoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 LCBYTG9nUmVjUHRyIGxzbiwgVHJhbnNhY3Rpb25JZCB4aWQsCkBAIC00MDAsNyArNDAwLDcg QEAgV2FsU25kRXJyb3JDbGVhbnVwKHZvaWQpCiAJaWYgKCFJc1RyYW5zYWN0aW9uT3JUcmFu c2FjdGlvbkJsb2NrKCkpCiAJCVJlbGVhc2VBdXhQcm9jZXNzUmVzb3VyY2VzKGZhbHNlKTsK IAotCWlmIChnb3RfU1RPUFBJTkcgfHwgZ290X1NJR1VTUjIpCisJaWYgKGdvdF9TVE9QUElO RyB8fCBJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9XQUxTTkRfU1RPUCkpCiAJCXByb2Nf ZXhpdCgwKTsKIAogCS8qIFJldmVydCBiYWNrIHRvIHN0YXJ0dXAgc3RhdGUgKi8KQEAgLTc3 MSw4ICs3NzEsMTYgQEAgSGFuZGxlVXBsb2FkTWFuaWZlc3RQYWNrZXQoU3RyaW5nSW5mbyBi dWYsIG9mZl90ICpvZmZzZXQsCiB7CiAJaW50CQkJbXR5cGU7CiAJaW50CQkJbWF4bXNnbGVu OworCWJvb2wJCXNhdmVfcXVlcnlfY2FuY2VsX2VuYWJsZWQ7CiAKLQlIT0xEX0NBTkNFTF9J TlRFUlJVUFRTKCk7CisJLyoKKwkgKiBMaWtlIGluIFNvY2tldEJhY2tlbmQsIGRvbid0IGFs bG93IHF1ZXJ5IGNhbmNlbCBpbnRlcnJ1cHRzIHdoaWxlCisJICogcmVhZGluZyBpbnB1dCBm cm9tIHRoZSBjbGllbnQsIGJlY2F1c2Ugd2UgbWlnaHQgbG9zZSBzeW5jIGluIHRoZSBGRS9C RQorCSAqIHByb3RvY29sLgorCSAqLworCXNhdmVfcXVlcnlfY2FuY2VsX2VuYWJsZWQgPSAo RW5hYmxlZEludGVycnVwdHNNYXNrICYgSU5URVJSVVBUX1FVRVJZX0NBTkNFTCkgIT0gMDsK KwlpZiAoc2F2ZV9xdWVyeV9jYW5jZWxfZW5hYmxlZCkKKwkJRGlzYWJsZUludGVycnVwdChJ TlRFUlJVUFRfUVVFUllfQ0FOQ0VMKTsKIAogCXBxX3N0YXJ0bXNncmVhZCgpOwogCW10eXBl ID0gcHFfZ2V0Ynl0ZSgpOwpAQCAtODA2LDcgKzgxNCw5IEBAIEhhbmRsZVVwbG9hZE1hbmlm ZXN0UGFja2V0KFN0cmluZ0luZm8gYnVmLCBvZmZfdCAqb2Zmc2V0LAogCQllcmVwb3J0KEVS Uk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfQ09OTkVDVElPTl9GQUlMVVJFKSwKIAkJCQkg ZXJybXNnKCJ1bmV4cGVjdGVkIEVPRiBvbiBjbGllbnQgY29ubmVjdGlvbiB3aXRoIGFuIG9w ZW4gdHJhbnNhY3Rpb24iKSkpOwotCVJFU1VNRV9DQU5DRUxfSU5URVJSVVBUUygpOworCisJ aWYgKHNhdmVfcXVlcnlfY2FuY2VsX2VuYWJsZWQpCisJCUVuYWJsZUludGVycnVwdChJTlRF UlJVUFRfUVVFUllfQ0FOQ0VMKTsKIAogCS8qIFByb2Nlc3MgdGhlIG1lc3NhZ2UgKi8KIAlz d2l0Y2ggKG10eXBlKQpAQCAtMTA3MCw5ICsxMDgwLDkgQEAgU3RhcnRSZXBsaWNhdGlvbihT dGFydFJlcGxpY2F0aW9uQ21kICpjbWQpCiAgKiBYTG9nUmVhZGVyUm91dGluZS0+cGFnZV9y ZWFkIGNhbGxiYWNrIGZvciBsb2dpY2FsIGRlY29kaW5nIGNvbnRleHRzLCBhcyBhCiAgKiB3 YWxzZW5kZXIgcHJvY2Vzcy4KICAqCi0gKiBJbnNpZGUgdGhlIHdhbHNlbmRlciB3ZSBjYW4g ZG8gYmV0dGVyIHRoYW4gcmVhZF9sb2NhbF94bG9nX3BhZ2UsCi0gKiB3aGljaCBoYXMgdG8g ZG8gYSBwbGFpbiBzbGVlcC9idXN5IGxvb3AsIGJlY2F1c2UgdGhlIHdhbHNlbmRlcidzIGxh dGNoIGdldHMKLSAqIHNldCBldmVyeSB0aW1lIFdBTCBpcyBmbHVzaGVkLgorICogSW5zaWRl IHRoZSB3YWxzZW5kZXIgd2UgY2FuIGRvIGJldHRlciB0aGFuIHJlYWRfbG9jYWxfeGxvZ19w YWdlLCB3aGljaCBoYXMKKyAqIHRvIGRvIGEgcGxhaW4gc2xlZXAvYnVzeSBsb29wLCBiZWNh dXNlIHRoZSB3YWxzZW5kZXIncyBpbnRlcnJ1cHQgZ2V0cyBzZXQKKyAqIGV2ZXJ5IHRpbWUg V0FMIGlzIGZsdXNoZWQuIEZJWE1FOiBjYW4gd2UgZG8gYmV0dGVyIG5vdz8KICAqLwogc3Rh dGljIGludAogbG9naWNhbF9yZWFkX3hsb2dfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRl LCBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIsIGludCByZXFMZW4sCkBAIC0xNTMzLDcgKzE1 NDMsNyBAQCBTdGFydExvZ2ljYWxSZXBsaWNhdGlvbihTdGFydFJlcGxpY2F0aW9uQ21kICpj bWQpCiAJewogCQllcmVwb3J0KExPRywKIAkJCQkoZXJybXNnKCJ0ZXJtaW5hdGluZyB3YWxz ZW5kZXIgcHJvY2VzcyBhZnRlciBwcm9tb3Rpb24iKSkpOwotCQlnb3RfU1RPUFBJTkcgPSB0 cnVlOworCQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfV0FMU05EX0lOSVRfU1RPUFBJTkcp OwogCX0KIAogCS8qCkBAIC0xNjc3LDEyICsxNjg3LDggQEAgV2FsU25kV3JpdGVEYXRhKExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY1B0ciBsc24sIFRyYW5zYWN0aW9u SWQgeGlkLAogICogdG8gY2hhbmdlcyBpbiBzeW5jaHJvbm91cyByZXBsaWNhdGlvbiByZXF1 aXJlbWVudHMuCiAgKi8KIHN0YXRpYyB2b2lkCi1XYWxTbmRIYW5kbGVDb25maWdSZWxvYWQo dm9pZCkKK1Byb2Nlc3NXYWxTbmRDb25maWdSZWxvYWRJbnRlcnJ1cHQodm9pZCkKIHsKLQlp ZiAoIUNvbmZpZ1JlbG9hZFBlbmRpbmcpCi0JCXJldHVybjsKLQotCUNvbmZpZ1JlbG9hZFBl bmRpbmcgPSBmYWxzZTsKIAlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKIAlTeW5j UmVwSW5pdENvbmZpZygpOwogCkBAIC0xNzI5LDIzICsxNzM1LDI2IEBAIFByb2Nlc3NQZW5k aW5nV3JpdGVzKHZvaWQpCiAKIAkJLyogU2xlZXAgdW50aWwgc29tZXRoaW5nIGhhcHBlbnMg b3Igd2UgdGltZSBvdXQgKi8KIAkJV2FsU25kV2FpdChXTF9TT0NLRVRfV1JJVEVBQkxFIHwg V0xfU09DS0VUX1JFQURBQkxFLCBzbGVlcHRpbWUsCi0JCQkJICAgV0FJVF9FVkVOVF9XQUxf U0VOREVSX1dSSVRFX0RBVEEpOworCQkJCSAgIFdBSVRfRVZFTlRfV0FMX1NFTkRFUl9XUklU RV9EQVRBLAorCQkJCSAgIENoZWNrRm9ySW50ZXJydXB0c01hc2sgfAorCQkJCSAgIElOVEVS UlVQVF9DT05GSUdfUkVMT0FEIHwKKwkJCQkgICBJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwog CiAJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAqLwotCQlSZXNldExh dGNoKE15TGF0Y2gpOwotCi0JCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCUNsZWFySW50 ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAKIAkJLyogUHJvY2VzcyBhbnkgcmVx dWVzdHMgb3Igc2lnbmFscyByZWNlaXZlZCByZWNlbnRseSAqLwotCQlXYWxTbmRIYW5kbGVD b25maWdSZWxvYWQoKTsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJaWYgKENvbnN1 bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQorCQkJUHJvY2Vzc1dhbFNu ZENvbmZpZ1JlbG9hZEludGVycnVwdCgpOwogCiAJCS8qIFRyeSB0byBmbHVzaCBwZW5kaW5n IG91dHB1dCB0byB0aGUgY2xpZW50ICovCiAJCWlmIChwcV9mbHVzaF9pZl93cml0YWJsZSgp ICE9IDApCiAJCQlXYWxTbmRTaHV0ZG93bigpOwogCX0KIAotCS8qIHJlYWN0aXZhdGUgbGF0 Y2ggc28gV2FsU25kTG9vcCBrbm93cyB0byBjb250aW51ZSAqLwotCVNldExhdGNoKE15TGF0 Y2gpOworCS8qIHJlYWN0aXZhdGUgaW50ZXJydXB0IHNvIFdhbFNuZExvb3Aga25vd3MgdG8g Y29udGludWUgKi8KKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwog fQogCiAvKgpAQCAtMTkzNSwxMiArMTk0NCwxMiBAQCBXYWxTbmRXYWl0Rm9yV2FsKFhMb2dS ZWNQdHIgbG9jKQogCQlUaW1lc3RhbXBUeiBub3c7CiAKIAkJLyogQ2xlYXIgYW55IGFscmVh ZHktcGVuZGluZyB3YWtldXBzICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7Ci0KLQkJQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRf V0FLRVVQKTsKIAogCQkvKiBQcm9jZXNzIGFueSByZXF1ZXN0cyBvciBzaWduYWxzIHJlY2Vp dmVkIHJlY2VudGx5ICovCi0JCVdhbFNuZEhhbmRsZUNvbmZpZ1JlbG9hZCgpOworCQlDSEVD S19GT1JfSU5URVJSVVBUUygpOworCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRf Q09ORklHX1JFTE9BRCkpCisJCQlQcm9jZXNzV2FsU25kQ29uZmlnUmVsb2FkSW50ZXJydXB0 KCk7CiAKIAkJLyogQ2hlY2sgZm9yIGlucHV0IGZyb20gdGhlIGNsaWVudCAqLwogCQlQcm9j ZXNzUmVwbGllc0lmQW55KCk7CkBAIC0yMDcwLDExICsyMDc5LDE0IEBAIFdhbFNuZFdhaXRG b3JXYWwoWExvZ1JlY1B0ciBsb2MpCiAJCQlsYXN0X2ZsdXNoID0gbm93OwogCQl9CiAKLQkJ V2FsU25kV2FpdCh3YWtlRXZlbnRzLCBzbGVlcHRpbWUsIHdhaXRfZXZlbnQpOworCQlXYWxT bmRXYWl0KHdha2VFdmVudHMsIHNsZWVwdGltZSwgd2FpdF9ldmVudCwKKwkJCQkgICBDaGVj a0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkgICBJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCB8 CisJCQkJICAgSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAl9CiAKLQkvKiByZWFjdGl2YXRl IGxhdGNoIHNvIFdhbFNuZExvb3Aga25vd3MgdG8gY29udGludWUgKi8KLQlTZXRMYXRjaChN eUxhdGNoKTsKKwkvKiByZWFjdGl2YXRlIGludGVycnVwdCBmbGFnIHNvIFdhbFNuZExvb3Ag a25vd3MgdG8gY29udGludWUgKi8KKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfV0FJVF9X QUtFVVApOwogCXJldHVybiBSZWNlbnRGbHVzaFB0cjsKIH0KIApAQCAtMjk5Nyw3ICszMDA5 LDcgQEAgV2FsU25kQ2hlY2tTaHV0ZG93blRpbWVvdXQodm9pZCkKIAlUaW1lc3RhbXBUeiBu b3c7CiAKIAkvKiBEbyBub3RoaW5nIGlmIHNodXRkb3duIGhhcyBub3QgYmVlbiByZXF1ZXN0 ZWQgeWV0ICovCi0JaWYgKCEoZ290X1NUT1BQSU5HIHx8IGdvdF9TSUdVU1IyKSkKKwlpZiAo IShnb3RfU1RPUFBJTkcgfHwgSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfV0FMU05EX1NU T1ApKSkKIAkJcmV0dXJuOwogCiAJLyogVGVybWluYXRlIGltbWVkaWF0ZWx5IGlmIHRoZSB0 aW1lb3V0IGlzIHNldCB0byAwICovCkBAIC0zMDQ2LDEyICszMDU4LDEyIEBAIFdhbFNuZExv b3AoV2FsU25kU2VuZERhdGFDYWxsYmFjayBzZW5kX2RhdGEpCiAJZm9yICg7OykKIAl7CiAJ CS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAqLwotCQlSZXNldExhdGNo KE15TGF0Y2gpOwotCi0JCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCUNsZWFySW50ZXJy dXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAKIAkJLyogUHJvY2VzcyBhbnkgcmVxdWVz dHMgb3Igc2lnbmFscyByZWNlaXZlZCByZWNlbnRseSAqLwotCQlXYWxTbmRIYW5kbGVDb25m aWdSZWxvYWQoKTsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJaWYgKENvbnN1bWVJ bnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQorCQkJUHJvY2Vzc1dhbFNuZENv bmZpZ1JlbG9hZEludGVycnVwdCgpOwogCiAJCS8qIENoZWNrIGZvciBpbnB1dCBmcm9tIHRo ZSBjbGllbnQgKi8KIAkJUHJvY2Vzc1JlcGxpZXNJZkFueSgpOwpAQCAtMzEwMCwxMyArMzEx MiwxMyBAQCBXYWxTbmRMb29wKFdhbFNuZFNlbmREYXRhQ2FsbGJhY2sgc2VuZF9kYXRhKQog CQkJfQogCiAJCQkvKgotCQkJICogV2hlbiBTSUdVU1IyIGFycml2ZXMsIHdlIHNlbmQgYW55 IG91dHN0YW5kaW5nIGxvZ3MgdXAgdG8gdGhlCi0JCQkgKiBzaHV0ZG93biBjaGVja3BvaW50 IHJlY29yZCAoaS5lLiwgdGhlIGxhdGVzdCByZWNvcmQpLCB3YWl0IGZvcgotCQkJICogdGhl bSB0byBiZSByZXBsaWNhdGVkIHRvIHRoZSBzdGFuZGJ5LCBhbmQgZXhpdC4gVGhpcyBtYXkg YmUgYQotCQkJICogbm9ybWFsIHRlcm1pbmF0aW9uIGF0IHNodXRkb3duLCBvciBhIHByb21v dGlvbiwgdGhlIHdhbHNlbmRlcgotCQkJICogaXMgbm90IHN1cmUgd2hpY2guCisJCQkgKiBX aGVuIElOVEVSUlVQVF9XQUxTTkRfU1RPUCBhcnJpdmVzLCB3ZSBzZW5kIGFueSBvdXRzdGFu ZGluZworCQkJICogbG9ncyB1cCB0byB0aGUgc2h1dGRvd24gY2hlY2twb2ludCByZWNvcmQg KGkuZS4sIHRoZSBsYXRlc3QKKwkJCSAqIHJlY29yZCksIHdhaXQgZm9yIHRoZW0gdG8gYmUg cmVwbGljYXRlZCB0byB0aGUgc3RhbmRieSwgYW5kCisJCQkgKiBleGl0LiBUaGlzIG1heSBi ZSBhIG5vcm1hbCB0ZXJtaW5hdGlvbiBhdCBzaHV0ZG93biwgb3IgYQorCQkJICogcHJvbW90 aW9uLCB0aGUgd2Fsc2VuZGVyIGlzIG5vdCBzdXJlIHdoaWNoLgogCQkJICovCi0JCQlpZiAo Z290X1NJR1VTUjIpCisJCQlpZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfV0FMU05E X1NUT1ApKQogCQkJCVdhbFNuZERvbmUoc2VuZF9kYXRhKTsKIAkJfQogCkBAIC0zMTY1LDcg KzMxNzcsMTEgQEAgV2FsU25kTG9vcChXYWxTbmRTZW5kRGF0YUNhbGxiYWNrIHNlbmRfZGF0 YSkKIAkJCX0KIAogCQkJLyogU2xlZXAgdW50aWwgc29tZXRoaW5nIGhhcHBlbnMgb3Igd2Ug dGltZSBvdXQgKi8KLQkJCVdhbFNuZFdhaXQod2FrZUV2ZW50cywgc2xlZXB0aW1lLCBXQUlU X0VWRU5UX1dBTF9TRU5ERVJfTUFJTik7CisJCQlXYWxTbmRXYWl0KHdha2VFdmVudHMsIHNs ZWVwdGltZSwgV0FJVF9FVkVOVF9XQUxfU0VOREVSX01BSU4sCisJCQkJCSAgIENoZWNrRm9y SW50ZXJydXB0c01hc2sgfAorCQkJCQkgICBJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCB8CisJ CQkJCSAgIElOVEVSUlVQVF9XQUlUX1dBS0VVUAorCQkJCSk7CiAJCX0KIAl9CiB9CkBAIC0z MjAzLDYgKzMyMTksNyBAQCBJbml0V2FsU2VuZGVyU2xvdCh2b2lkKQogCQkJLyoKIAkJCSAq IEZvdW5kIGEgZnJlZSBzbG90LiBSZXNlcnZlIGl0IGZvciB1cy4KIAkJCSAqLworCQkJd2Fs c25kLT5wZ3Byb2NubyA9IE15UHJvY051bWJlcjsKIAkJCXdhbHNuZC0+cGlkID0gTXlQcm9j UGlkOwogCQkJd2Fsc25kLT5zdGF0ZSA9IFdBTFNORFNUQVRFX1NUQVJUVVA7CiAJCQl3YWxz bmQtPnNlbnRQdHIgPSBJbnZhbGlkWExvZ1JlY1B0cjsKQEAgLTMyNTksNiArMzI3Niw3IEBA IFdhbFNuZEtpbGwoaW50IGNvZGUsIERhdHVtIGFyZykKIAlTcGluTG9ja0FjcXVpcmUoJndh bHNuZC0+bXV0ZXgpOwogCS8qIE1hcmsgV2FsU25kIHN0cnVjdCBhcyBubyBsb25nZXIgYmVp bmcgaW4gdXNlLiAqLwogCXdhbHNuZC0+cGlkID0gMDsKKwl3YWxzbmQtPnBncHJvY25vID0g SU5WQUxJRF9QUk9DX05VTUJFUjsKIAlTcGluTG9ja1JlbGVhc2UoJndhbHNuZC0+bXV0ZXgp OwogfQogCkBAIC0zNzIzLDcgKzM3NDEsNyBAQCBYTG9nU2VuZExvZ2ljYWwodm9pZCkKIAkg KiB0aGUgcGVuZGluZyBkYXRhLgogCSAqLwogCWlmIChXYWxTbmRDYXVnaHRVcCAmJiBnb3Rf U1RPUFBJTkcpCi0JCWdvdF9TSUdVU1IyID0gdHJ1ZTsKKwkJUmFpc2VJbnRlcnJ1cHQoSU5U RVJSVVBUX1dBTFNORF9TVE9QKTsKIAogCS8qIFVwZGF0ZSBzaGFyZWQgbWVtb3J5IHN0YXR1 cyAqLwogCXsKQEAgLTM4NDgsMTAgKzM4NjYsOSBAQCBXYWxTbmREb25lKFdhbFNuZFNlbmRE YXRhQ2FsbGJhY2sgc2VuZF9kYXRhKQogCiAJCQkvKiBTbGVlcCB1bnRpbCBzb21ldGhpbmcg aGFwcGVucyBvciB3ZSB0aW1lIG91dCAqLwogCQkJV2FsU25kV2FpdChXTF9TT0NLRVRfV1JJ VEVBQkxFLCBzbGVlcHRpbWUsCi0JCQkJCSAgIFdBSVRfRVZFTlRfV0FMX1NFTkRFUl9XUklU RV9EQVRBKTsKLQotCQkJLyogQ2xlYXIgYW55IGFscmVhZHktcGVuZGluZyB3YWtldXBzICov Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJCQkgICBXQUlUX0VWRU5UX1dBTF9TRU5E RVJfV1JJVEVfREFUQSwKKwkJCQkJICAgQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJ CSAgIElOVEVSUlVQVF9XQUxTTkRfSU5JVF9TVE9QUElORyk7CiAKIAkJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CiAKQEAgLTM5MzEsMTMgKzM5NDgsMTcgQEAgV2FsU25kUnFzdEZpbGVS ZWxvYWQodm9pZCkKIH0KIAogLyoKLSAqIEhhbmRsZSBQUk9DU0lHX1dBTFNORF9JTklUX1NU T1BQSU5HIHNpZ25hbC4KKyAqIFByb2Nlc3MgSU5URVJSVVBUX0lOSVRfU1RPUFBJTkcgaW50 ZXJydXB0LgorICoKKyAqIFVzZWQgdG8gcmVxdWVzdCBhIGxhc3QgY3ljbGUgYW5kIHNodXRk b3duLgogICovCi12b2lkCi1IYW5kbGVXYWxTbmRJbml0U3RvcHBpbmcodm9pZCkKK3N0YXRp YyB2b2lkCitQcm9jZXNzV2FsU25kSW5pdFN0b3BwaW5nSW50ZXJydXB0KHZvaWQpCiB7CiAJ QXNzZXJ0KGFtX3dhbHNlbmRlcik7CiAKKwlnb3RfU1RPUFBJTkcgPSB0cnVlOworCiAJLyoK IAkgKiBJZiByZXBsaWNhdGlvbiBoYXMgbm90IHlldCBzdGFydGVkLCBkaWUgbGlrZSB3aXRo IFNJR1RFUk0uIElmCiAJICogcmVwbGljYXRpb24gaXMgYWN0aXZlLCBvbmx5IHNldCBhIGZs YWcgYW5kIHdha2UgdXAgdGhlIG1haW4gbG9vcC4gSXQKQEAgLTM5NDUsMzkgKzM5NjYsNDEg QEAgSGFuZGxlV2FsU25kSW5pdFN0b3BwaW5nKHZvaWQpCiAJICogc3RhbmRieSwgYW5kIHRo ZW4gZXhpdCBncmFjZWZ1bGx5LgogCSAqLwogCWlmICghcmVwbGljYXRpb25fYWN0aXZlKQot CQlraWxsKE15UHJvY1BpZCwgU0lHVEVSTSk7CisJCVByb2Nlc3NUZXJtaW5hdGVJbnRlcnJ1 cHQoKTsKIAllbHNlCi0JCWdvdF9TVE9QUElORyA9IHRydWU7Ci0KLQkvKiBsYXRjaCB3aWxs IGJlIHNldCBieSBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAqLworCQlXYWxTbmRDaGVj a1NodXRkb3duVGltZW91dCgpOwogfQogCiAvKgogICogU0lHVVNSMjogc2V0IGZsYWcgdG8g ZG8gYSBsYXN0IGN5Y2xlIGFuZCBzaHV0IGRvd24gYWZ0ZXJ3YXJkcy4gVGhlIFdBTAogICog c2VuZGVyIHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBzd2l0Y2hlZCB0byBXQUxTTkRTVEFU RV9TVE9QUElORyBhdAogICogdGhpcyBwb2ludC4KKyAqCisgKiBYWFg6IFRoaXMgaXMgc3Rp bGwgbmVlZGVkIGJlY2F1c2UgdGhlIHBvc3RtYXN0ZXIgY2Fubm90IHNlbmQKKyAqIElOVEVS UlVQVF9XQUxTTkRfU1RPUCBkaXJlY3RseS4KICAqLwogc3RhdGljIHZvaWQKIFdhbFNuZExh c3RDeWNsZUhhbmRsZXIoU0lHTkFMX0FSR1MpCiB7Ci0JZ290X1NJR1VTUjIgPSB0cnVlOwot CVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9XQUxTTkRf U1RPUCk7CiB9CiAKLS8qIFNldCB1cCBzaWduYWwgaGFuZGxlcnMgKi8KKy8qIFNldCB1cCB3 YWxzZW5kZXItc3BlY2lmaWMgc2lnbmFsIGFuZCBpbnRlcnJ1cHQgaGFuZGxlcnMgKi8KIHZv aWQKIFdhbFNuZFNpZ25hbHModm9pZCkKIHsKLQkvKiBTZXQgdXAgc2lnbmFsIGhhbmRsZXJz ICovCi0JcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsK LQlwcXNpZ25hbChTSUdJTlQsIFN0YXRlbWVudENhbmNlbEhhbmRsZXIpOwkvKiBxdWVyeSBj YW5jZWwgKi8KLQlwcXNpZ25hbChTSUdURVJNLCBkaWUpOwkJLyogcmVxdWVzdCBzaHV0ZG93 biAqLwotCS8qIFNJR1FVSVQgaGFuZGxlciB3YXMgYWxyZWFkeSBzZXQgdXAgYnkgSW5pdFBv c3RtYXN0ZXJDaGlsZCAqLwotCUluaXRpYWxpemVUaW1lb3V0cygpOwkJLyogZXN0YWJsaXNo ZXMgU0lHQUxSTSBoYW5kbGVyICovCi0JcHFzaWduYWwoU0lHUElQRSwgUEdfU0lHX0lHTik7 Ci0JcHFzaWduYWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOwotCXBx c2lnbmFsKFNJR1VTUjIsIFdhbFNuZExhc3RDeWNsZUhhbmRsZXIpOwkvKiByZXF1ZXN0IGEg bGFzdCBjeWNsZSBhbmQKLQkJCQkJCQkJCQkJCSAqIHNodXRkb3duICovCisJcHFzaWduYWwo U0lHVEVSTSwgU2lnbmFsSGFuZGxlckZvclNodXRkb3duUmVxdWVzdCk7CisKKwkvKgorCSAq IE9uIElOVEVSUlVQVF9XQUxTTkRfU1RPUCBpcyB1c2VkIHRvIGZsdXNoIHJlbWFpbmluZyBX QUwgKHRoZSBzaHV0ZG93bgorCSAqIGNoZWNrcG9pbnQgcmVjb3JkKSBhbmQgZXhpdC4gV2Ug Y2hlY2sgZm9yIHRoYXQgZXhwbGljaXRseSwgc28gbm8KKwkgKiBoYW5kbGVyIGZ1bmN0aW9u LiBQb3N0bWFzdGVyIGNhbm5vdCBzZW5kIHRoZSBpbnRlcnJ1cHQgZGlyZWN0bHksIHNvIHdl CisJICogc2V0IHVwIGEgVW5peCBzaWduYWwgaGFuZGxlciB0byByYWlzZSBpdC4KKwkgKi8K KwlwcXNpZ25hbChTSUdVU1IyLCBXYWxTbmRMYXN0Q3ljbGVIYW5kbGVyKTsKKworCVNldElu dGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX1dBTFNORF9JTklUX1NUT1BQSU5HLCBQcm9jZXNz V2FsU25kSW5pdFN0b3BwaW5nSW50ZXJydXB0KTsKKwlFbmFibGVJbnRlcnJ1cHQoSU5URVJS VVBUX1dBTFNORF9JTklUX1NUT1BQSU5HKTsKIH0KIAogLyogUmVnaXN0ZXIgc2hhcmVkLW1l bW9yeSBzcGFjZSBuZWVkZWQgYnkgd2Fsc2VuZGVyICovCkBAIC00MDA2LDYgKzQwMjksNyBA QCBXYWxTbmRTaG1lbUluaXQodm9pZCAqYXJnKQogCQlXYWxTbmQJICAgKndhbHNuZCA9ICZX YWxTbmRDdGwtPndhbHNuZHNbaV07CiAKIAkJU3BpbkxvY2tJbml0KCZ3YWxzbmQtPm11dGV4 KTsKKwkJd2Fsc25kLT5wZ3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJfQogCiAJ Q29uZGl0aW9uVmFyaWFibGVJbml0KCZXYWxTbmRDdGwtPndhbF9mbHVzaF9jdik7CkBAIC00 MDUwLDI0ICs0MDc0LDI4IEBAIFdhbFNuZFdha2V1cChib29sIHBoeXNpY2FsLCBib29sIGxv Z2ljYWwpCiAgKiBvbiBwb3N0bWFzdGVyIGRlYXRoLgogICovCiBzdGF0aWMgdm9pZAotV2Fs U25kV2FpdCh1aW50MzIgc29ja2V0X2V2ZW50cywgbG9uZyB0aW1lb3V0LCB1aW50MzIgd2Fp dF9ldmVudCkKK1dhbFNuZFdhaXQodWludDMyIHNvY2tldF9ldmVudHMsIGxvbmcgdGltZW91 dCwgdWludDMyIHdhaXRfZXZlbnQsIEludGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaykKIHsK IAlXYWl0RXZlbnQJZXZlbnQ7CiAKLQlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZl QmVXYWl0U2V0U29ja2V0UG9zLCBzb2NrZXRfZXZlbnRzLCBOVUxMKTsKKwkvKiBmb3IgY29u ZGl0aW9uIHZhcmlhYmxlcyAqLworCWludGVycnVwdE1hc2sgfD0gSU5URVJSVVBUX1dBSVRf V0FLRVVQOworCisJTW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0LCBGZUJlV2FpdFNldFNv Y2tldFBvcywgc29ja2V0X2V2ZW50cywgMCk7CisJTW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0 U2V0LCBGZUJlV2FpdFNldEludGVycnVwdFBvcywgV0xfSU5URVJSVVBULCBpbnRlcnJ1cHRN YXNrKTsKIAogCS8qCiAJICogV2UgdXNlIGEgY29uZGl0aW9uIHZhcmlhYmxlIHRvIGVmZmlj aWVudGx5IHdha2UgdXAgd2Fsc2VuZGVycyBpbgogCSAqIFdhbFNuZFdha2V1cCgpLgogCSAq CiAJICogRXZlcnkgd2Fsc2VuZGVyIHByZXBhcmVzIHRvIHNsZWVwIG9uIGEgc2hhcmVkIG1l bW9yeSBDVi4gTm90ZSB0aGF0IGl0Ci0JICoganVzdCBwcmVwYXJlcyB0byBzbGVlcCBvbiB0 aGUgQ1YgKGkuZS4sIGFkZHMgaXRzZWxmIHRvIHRoZSBDVidzCi0JICogd2FpdGxpc3QpLCBi dXQgZG9lcyBub3QgYWN0dWFsbHkgd2FpdCBvbiB0aGUgQ1YgKElPVywgaXQgbmV2ZXIgY2Fs bHMKLQkgKiBDb25kaXRpb25WYXJpYWJsZVNsZWVwKCkpLiBJdCBzdGlsbCB1c2VzIFdhaXRF dmVudFNldFdhaXQoKSBmb3IKLQkgKiB3YWl0aW5nLCBiZWNhdXNlIHdlIGFsc28gbmVlZCB0 byB3YWl0IGZvciBzb2NrZXQgZXZlbnRzLiBUaGUgcHJvY2Vzc2VzCi0JICogKHN0YXJ0dXAg cHJvY2Vzcywgd2FscmVjZWl2ZXIgZXRjLikgd2FudGluZyB0byB3YWtlIHVwIHdhbHNlbmRl cnMgdXNlCi0JICogQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoKSwgd2hpY2ggaW4gdHVy biBjYWxscyBTZXRMYXRjaCgpLCBoZWxwaW5nCi0JICogd2Fsc2VuZGVycyBjb21lIG91dCBv ZiBXYWl0RXZlbnRTZXRXYWl0KCkuCisJICoganVzdCBwcmVwYXJlcyB0byBzbGVlcCBvbiB0 aGUgQ1Ygd2FpdGxpc3QpLCBidXQgZG9lcyBub3QgYWN0dWFsbHkgd2FpdAorCSAqIG9uIHRo ZSBDViAoSU9XLCBpdCBuZXZlciBjYWxscyBDb25kaXRpb25WYXJpYWJsZVNsZWVwKCkpLiBJ dCBzdGlsbCB1c2VzCisJICogV2FpdEV2ZW50U2V0V2FpdCgpIGZvciB3YWl0aW5nLCBiZWNh dXNlIHdlIGFsc28gbmVlZCB0byB3YWl0IGZvciBzb2NrZXQKKwkgKiBldmVudHMuIFRoZSBw cm9jZXNzZXMgKHN0YXJ0dXAgcHJvY2Vzcywgd2FscmVjZWl2ZXIgZXRjLikgd2FudGluZyB0 bworCSAqIHdha2UgdXAgd2Fsc2VuZGVycyB1c2UgQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNh c3QoKSwgd2hpY2ggaW4gdHVybgorCSAqIGNhbGxzIFNlbmRJbnRlcnJ1cHQoKSwgaGVscGlu ZyB3YWxzZW5kZXJzIGNvbWUgb3V0IG9mCisJICogV2FpdEV2ZW50U2V0V2FpdCgpLgogCSAq CiAJICogVGhpcyBhcHByb2FjaCBpcyBzaW1wbGUgYW5kIGVmZmljaWVudCBiZWNhdXNlLCBv bmUgZG9lc24ndCBoYXZlIHRvIGxvb3AKIAkgKiB0aHJvdWdoIGFsbCB0aGUgd2Fsc2VuZGVy cyBzbG90cywgd2l0aCBhIHNwaW5sb2NrIGFjcXVpc2l0aW9uIGFuZApAQCAtNDExNSwxNiAr NDE0MywxNiBAQCBXYWxTbmRJbml0U3RvcHBpbmcodm9pZCkKIAlmb3IgKGkgPSAwOyBpIDwg bWF4X3dhbF9zZW5kZXJzOyBpKyspCiAJewogCQlXYWxTbmQJICAgKndhbHNuZCA9ICZXYWxT bmRDdGwtPndhbHNuZHNbaV07Ci0JCXBpZF90CQlwaWQ7CisJCVByb2NOdW1iZXIJcHJvY25v OwogCiAJCVNwaW5Mb2NrQWNxdWlyZSgmd2Fsc25kLT5tdXRleCk7Ci0JCXBpZCA9IHdhbHNu ZC0+cGlkOworCQlwcm9jbm8gPSB3YWxzbmQtPnBncHJvY25vOwogCQlTcGluTG9ja1JlbGVh c2UoJndhbHNuZC0+bXV0ZXgpOwogCi0JCWlmIChwaWQgPT0gMCkKKwkJaWYgKHByb2NubyA9 PSBJTlZBTElEX1BST0NfTlVNQkVSKQogCQkJY29udGludWU7CiAKLQkJU2VuZFByb2NTaWdu YWwocGlkLCBQUk9DU0lHX1dBTFNORF9JTklUX1NUT1BQSU5HLCBJTlZBTElEX1BST0NfTlVN QkVSKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FMU05EX0lOSVRfU1RPUFBJTkcs IHByb2Nubyk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2Fp by9haW8uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL2Fpby5jCmluZGV4IDFkNDA3M2Vk MGRhLi5mYmU0NmQ2ZWU1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8v YWlvLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vYWlvLmMKQEAgLTM5MSw3ICsz OTEsNyBAQCBwZ2Fpb19pb191cGRhdGVfc3RhdGUoUGdBaW9IYW5kbGUgKmlvaCwgUGdBaW9I YW5kbGVTdGF0ZSBuZXdfc3RhdGUpCiAJICogaW50ZXJydXB0IHByb2Nlc3NpbmcgY291bGQg d2FpdCBmb3IgdGhlIElPIHRvIGNvbXBsZXRlLCB3aGlsZSBpbiBhbgogCSAqIGludGVybWVk aWFyeSBzdGF0ZS4KIAkgKi8KLQlBc3NlcnQoIUlOVEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NF RCgpKTsKKwlBc3NlcnQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayA9PSAwKTsKIAogCXBnYWlv X2RlYnVnX2lvKERFQlVHNSwgaW9oLAogCQkJCSAgICJ1cGRhdGluZyBzdGF0ZSB0byAlcyIs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9haW9faW8uYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYWlvL2Fpb19pby5jCmluZGV4IGRhN2VkNmNhNTNjLi5jMzFhM2Q5 MmYzOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vYWlvX2lvLmMKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vYWlvX2lvLmMKQEAgLTE2NCw3ICsxNjQsNyBA QCBwZ2Fpb19pb19iZWZvcmVfc3RhcnQoUGdBaW9IYW5kbGUgKmlvaCkKIAkgKiBPdGhlcndp c2UgdGhlIEZEcyByZWZlcmVuY2VkIGJ5IHRoZSBJTyBjb3VsZCBiZSBjbG9zZWQgZHVlIHRv IGludGVycnVwdAogCSAqIHByb2Nlc3NpbmcuCiAJICovCi0JQXNzZXJ0KCFJTlRFUlJVUFRT X0NBTl9CRV9QUk9DRVNTRUQoKSk7CisJQXNzZXJ0KENoZWNrRm9ySW50ZXJydXB0c01hc2sg PT0gMCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9t ZXRob2Rfd29ya2VyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9tZXRob2Rfd29ya2Vy LmMKaW5kZXggOTQxNTZmMjZlYjQuLmE1ZjI4NjcyYjBhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2Fpby9tZXRob2Rfd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9haW8vbWV0aG9kX3dvcmtlci5jCkBAIC00MCwxMSArNDAsOSBAQAogI2luY2x1ZGUg InN0b3JhZ2UvYWlvX3N1YnN5cy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaW9fd29ya2VyLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2ln bmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9w cm9jc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgogI2luY2x1ZGUgInRj b3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKQEAg LTM3OSw4ICszNzcsOCBAQCBwZ2Fpb193b3JrZXJfY2hvb3NlX2lkbGUoaW50IG9ubHlfd29y a2Vyc19hYm92ZSkKIH0KIAogLyoKLSAqIFRyeSB0byB3YWtlIGEgd29ya2VyIGJ5IHNldHRp bmcgaXRzIGxhdGNoLCB0byB0ZWxsIGl0IHRoZXJlIGFyZSBJT3MgdG8KLSAqIHByb2Nlc3Mg aW4gdGhlIHN1Ym1pc3Npb24gcXVldWUuCisgKiBUcnkgdG8gd2FrZSBhIHdvcmtlciBieSBz ZW5kaW5nIGl0IGFuIGludGVycnVwdCwgdG8gdGVsbCBpdCB0aGVyZSBhcmUgSU9zCisgKiB0 byBwcm9jZXNzIGluIHRoZSBzdWJtaXNzaW9uIHF1ZXVlLgogICovCiBzdGF0aWMgdm9pZAog cGdhaW9fd29ya2VyX3dha2UoaW50IHdvcmtlcikKQEAgLTM5Niw3ICszOTQsNyBAQCBwZ2Fp b193b3JrZXJfd2FrZShpbnQgd29ya2VyKQogCSAqLwogCXByb2NfbnVtYmVyID0gaW9fd29y a2VyX2NvbnRyb2wtPndvcmtlcnNbd29ya2VyXS5wcm9jX251bWJlcjsKIAlpZiAocHJvY19u dW1iZXIgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKLQkJU2V0TGF0Y2goJkdldFBHUHJvY0J5 TnVtYmVyKHByb2NfbnVtYmVyKS0+cHJvY0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJTlRF UlJVUFRfV0FJVF9XQUtFVVAsIHByb2NfbnVtYmVyKTsKIH0KIAogLyoKQEAgLTY3OCwyMCAr Njc2LDE5IEBAIElvV29ya2VyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVf dCBzdGFydHVwX2RhdGFfbGVuKQogCiAJQXV4aWxpYXJ5UHJvY2Vzc01haW5Db21tb24oKTsK IAotCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7Ci0J cHFzaWduYWwoU0lHSU5ULCBkaWUpOwkJLyogdG8gYWxsb3cgbWFudWFsbHkgdHJpZ2dlcmlu ZyB3b3JrZXIgcmVzdGFydCAqLworCXBxc2lnbmFsKFNJR0lOVCwgU2lnbmFsSGFuZGxlckZv clNodXRkb3duUmVxdWVzdCk7CS8qIHRvIGFsbG93IG1hbnVhbGx5CisJCQkJCQkJCQkJCQkJ CSAqIHRyaWdnZXJpbmcgd29ya2VyCisJCQkJCQkJCQkJCQkJCSAqIHJlc3RhcnQgKi8KIAog CS8qCiAJICogSWdub3JlIFNJR1RFUk0sIHdpbGwgZ2V0IGV4cGxpY2l0IHNodXRkb3duIHZp YSBTSUdVU1IyIGxhdGVyIGluIHRoZQogCSAqIHNodXRkb3duIHNlcXVlbmNlLCBzaW1pbGFy IHRvIGNoZWNrcG9pbnRlci4KIAkgKi8KIAlwcXNpZ25hbChTSUdURVJNLCBQR19TSUdfSUdO KTsKLQkvKiBTSUdRVUlUIGhhbmRsZXIgd2FzIGFscmVhZHkgc2V0IHVwIGJ5IEluaXRQb3N0 bWFzdGVyQ2hpbGQgKi8KLQlwcXNpZ25hbChTSUdBTFJNLCBQR19TSUdfSUdOKTsKLQlwcXNp Z25hbChTSUdQSVBFLCBQR19TSUdfSUdOKTsKLQlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2ln bmFsX3NpZ3VzcjFfaGFuZGxlcik7CiAJcHFzaWduYWwoU0lHVVNSMiwgU2lnbmFsSGFuZGxl ckZvclNodXRkb3duUmVxdWVzdCk7CiAKKwlTZXRTdGFuZGFyZEludGVycnVwdEhhbmRsZXJz KCk7CisKIAkvKiBhbHNvIHJlZ2lzdGVycyBhIHNodXRkb3duIGNhbGxiYWNrIHRvIHVucmVn aXN0ZXIgKi8KIAlwZ2Fpb193b3JrZXJfcmVnaXN0ZXIoKTsKIApAQCAtNzM5LDcgKzczNiw3 IEBAIElvV29ya2VyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFy dHVwX2RhdGFfbGVuKQogCiAJc2lncHJvY21hc2soU0lHX1NFVE1BU0ssICZVbkJsb2NrU2ln LCBOVUxMKTsKIAotCXdoaWxlICghU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwl3aGlsZSAo IUludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1RFUk1JTkFURSkpCiAJewogCQl1aW50MzIJ CWlvX2luZGV4OwogCQlpbnQJCQl3b3JrZXIgPSAtMTsKQEAgLTk4Nyw5ICs5ODQsMTMgQEAg SW9Xb3JrZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBf ZGF0YV9sZW4pCiAJCQlzZXRfcHNfZGlzcGxheShjbWQpOwogI2VuZGlmCiAKLQkJCWlmIChX YWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCB8 IFdMX1RJTUVPVVQsCi0JCQkJCQkgIHRpbWVvdXRfbXMsCi0JCQkJCQkgIFdBSVRfRVZFTlRf SU9fV09SS0VSX01BSU4pID09IFdMX1RJTUVPVVQpCisJCQlpZiAoV2FpdEludGVycnVwdChD aGVja0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkJCQkgIElOVEVSUlVQVF9DT05GSUdfUkVM T0FEIHwKKwkJCQkJCQkgIElOVEVSUlVQVF9URVJNSU5BVEUgfAorCQkJCQkJCSAgSU5URVJS VVBUX1dBSVRfV0FLRVVQLAorCQkJCQkJCSAgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSCB8IFdMX1RJTUVPVVQsCisJCQkJCQkJICB0aW1lb3V0X21zLAorCQkJCQkJCSAg V0FJVF9FVkVOVF9JT19XT1JLRVJfTUFJTikgPT0gV0xfVElNRU9VVCkKIAkJCXsKIAkJCQkv KiBXTF9USU1FT1VUICovCiAJCQkJaWYgKHBnYWlvX3dvcmtlcl9jYW5fdGltZW91dCgpKQpA QCAtMTAwNSwxNCArMTAwNiwxMyBAQCBJb1dvcmtlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1 cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJCQkJaGlzdF9pb3MgLz0gMjsK IAkJCQl9CiAJCQl9Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJQ2xlYXJJbnRlcnJ1 cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAkJfQogCiAJCUNIRUNLX0ZPUl9JTlRFUlJV UFRTKCk7CiAKLQkJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCisJCWlmIChDb25zdW1lSW50 ZXJydXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKSkKIAkJewotCQkJQ29uZmlnUmVsb2Fk UGVuZGluZyA9IGZhbHNlOwogCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CiAK IAkJCS8qIElmIGlvX21heF93b3JrZXJzIGhhcyBiZWVuIGRlY3JlYXNlZCwgZXhpdCBoaWdo ZXN0IGZpcnN0LiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIv YnVmbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwppbmRleCBk NmMwY2MxZjZkNC4uY2FmZWUxNTZjZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1 Zm1nci5jCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9zdG9yYWdlX3hs b2cuaCIKICNpbmNsdWRlICJjb21tb24vaGFzaGZuLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Iv aW5zdHJ1bWVudC5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJs aWIvYmluYXJ5aGVhcC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBn X3RyYWNlLmgiCkBAIC0zNDQ5LDcgKzM0NTAsNyBAQCBXYWtlUGluQ291bnRXYWl0ZXIoQnVm ZmVyRGVzYyAqYnVmKQogCQlVbmxvY2tCdWZIZHJFeHQoYnVmLCBidWZfc3RhdGUsCiAJCQkJ CQkwLCBCTV9QSU5fQ09VTlRfV0FJVEVSLAogCQkJCQkJMCk7Ci0JCVByb2NTZW5kU2lnbmFs KHdhaXRfYmFja2VuZF9wZ3Byb2Nubyk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1dB SVRfV0FLRVVQLCB3YWl0X2JhY2tlbmRfcGdwcm9jbm8pOwogCX0KIAllbHNlCiAJCVVubG9j a0J1ZkhkcihidWYpOwpAQCAtMzYyOSw3ICszNjMwLDcgQEAgQnVmZmVyU3luYyhpbnQgZmxh Z3MpCiAJCQkJCQkwKTsKIAogCQkvKiBDaGVjayBmb3IgYmFycmllciBldmVudHMgaW4gY2Fz ZSBOQnVmZmVycyBpcyBsYXJnZS4gKi8KLQkJaWYgKFByb2NTaWduYWxCYXJyaWVyUGVuZGlu ZykKKwkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0JBUlJJRVIpKQogCQkJUHJv Y2Vzc1Byb2NTaWduYWxCYXJyaWVyKCk7CiAJfQogCkBAIC0zNzEwLDcgKzM3MTEsNyBAQCBC dWZmZXJTeW5jKGludCBmbGFncykKIAkJcy0+bnVtX3RvX3NjYW4rKzsKIAogCQkvKiBDaGVj ayBmb3IgYmFycmllciBldmVudHMuICovCi0JCWlmIChQcm9jU2lnbmFsQmFycmllclBlbmRp bmcpCisJCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9CQVJSSUVSKSkKIAkJCVBy b2Nlc3NQcm9jU2lnbmFsQmFycmllcigpOwogCX0KIApAQCAtMzgwMSw3ICszODAyLDcgQEAg QnVmZmVyU3luYyhpbnQgZmxhZ3MpCiAJCS8qCiAJCSAqIFNsZWVwIHRvIHRocm90dGxlIG91 ciBJL08gcmF0ZS4KIAkJICoKLQkJICogKFRoaXMgd2lsbCBjaGVjayBmb3IgYmFycmllciBl dmVudHMgZXZlbiBpZiBpdCBkb2Vzbid0IHNsZWVwLikKKwkJICogKFRoaXMgd2lsbCBjaGVj ayBmb3IgaW50ZXJydXB0cyBldmVuIGlmIGl0IGRvZXNuJ3Qgc2xlZXAuKQogCQkgKi8KIAkJ Q2hlY2twb2ludFdyaXRlRGVsYXkoZmxhZ3MsIChkb3VibGUpIG51bV9wcm9jZXNzZWQgLyBu dW1fdG9fc2Nhbik7CiAJfQpAQCAtNjc5NCwxMiArNjc5NSwxOCBAQCBMb2NrQnVmZmVyRm9y Q2xlYW51cChCdWZmZXIgYnVmZmVyKQogCQkJU2V0U3RhcnR1cEJ1ZmZlclBpbldhaXRCdWZJ ZCgtMSk7CiAJCX0KIAkJZWxzZQotCQkJUHJvY1dhaXRGb3JTaWduYWwoV0FJVF9FVkVOVF9C VUZGRVJfQ0xFQU5VUCk7CisJCXsKKwkJCVdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1 cHRzTWFzayB8IElOVEVSUlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkJCSAgV0xfSU5URVJSVVBU IHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJCQkJCSAgV0FJVF9FVkVOVF9CVUZGRVJf Q0xFQU5VUCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwor CQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJfQogCiAJCS8qCiAJCSAqIFJlbW92ZSBm bGFnIG1hcmtpbmcgdXMgYXMgd2FpdGVyLiBOb3JtYWxseSB0aGlzIHdpbGwgbm90IGJlIHNl dAotCQkgKiBhbnltb3JlLCBidXQgUHJvY1dhaXRGb3JTaWduYWwoKSBjYW4gcmV0dXJuIGZv ciBvdGhlciBzaWduYWxzIGFzCi0JCSAqIHdlbGwuICBXZSB0YWtlIGNhcmUgdG8gb25seSBy ZXNldCB0aGUgZmxhZyBpZiB3ZSdyZSB0aGUgd2FpdGVyLCBhcworCQkgKiBhbnltb3JlLCBi dXQgV2FpdEludGVycnVwdCBjYW4gcmV0dXJuIGZvciBvdGhlciBzaWduYWxzIGFzIHdlbGwu IFdlCisJCSAqIHRha2UgY2FyZSB0byBvbmx5IHJlc2V0IHRoZSBmbGFnIGlmIHdlJ3JlIHRo ZSB3YWl0ZXIsIGFzCiAJCSAqIHRoZW9yZXRpY2FsbHkgYW5vdGhlciBiYWNrZW5kIGNvdWxk IGhhdmUgc3RhcnRlZCB3YWl0aW5nLiBUaGF0J3MKIAkJICogaW1wb3NzaWJsZSB3aXRoIHRo ZSBjdXJyZW50IHVzYWdlcyBkdWUgdG8gdGFibGUgbGV2ZWwgbG9ja2luZywgYnV0CiAJCSAq IGJldHRlciBiZSBzYWZlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZm ZXIvZnJlZWxpc3QuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMK aW5kZXggZmRiNWJhZDc5MTAuLmIzMWQ1YjUwZGJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv YnVmZmVyL2ZyZWVsaXN0LmMKQEAgLTE1LDYgKzE1LDcgQEAKICAqLwogI2luY2x1ZGUgInBv c3RncmVzLmgiCiAKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicGdz dGF0LmgiCiAjaW5jbHVkZSAicG9ydC9hdG9taWNzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9i dWZfaW50ZXJuYWxzLmgiCkBAIC0yMDYsMjcgKzIwNywyNSBAQCBTdHJhdGVneUdldEJ1ZmZl cihCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwgdWludDY0ICpidWZfc3RhdGUsIGJv b2wgKmZyb21fcgogCS8qCiAJICogSWYgYXNrZWQsIHdlIG5lZWQgdG8gd2FrZW4gdGhlIGJn d3JpdGVyLiBTaW5jZSB3ZSBkb24ndCB3YW50IHRvIHJlbHkgb24KIAkgKiBhIHNwaW5sb2Nr IGZvciB0aGlzIHdlIGZvcmNlIGEgcmVhZCBmcm9tIHNoYXJlZCBtZW1vcnkgb25jZSwgYW5k IHRoZW4KLQkgKiBzZXQgdGhlIGxhdGNoIGJhc2VkIG9uIHRoYXQgdmFsdWUuIFdlIG5lZWQg dG8gZ28gdGhyb3VnaCB0aGF0IGxlbmd0aAotCSAqIGJlY2F1c2Ugb3RoZXJ3aXNlIGJnd3By b2NubyBtaWdodCBiZSByZXNldCB3aGlsZS9hZnRlciB3ZSBjaGVjayBiZWNhdXNlCi0JICog dGhlIGNvbXBpbGVyIG1pZ2h0IGp1c3QgcmVyZWFkIGZyb20gbWVtb3J5LgorCSAqIHNlbmQg dGhlIGludGVycnVwdCBiYXNlZCBvbiB0aGF0IHZhbHVlLiBXZSBuZWVkIHRvIGdvIHRocm91 Z2ggdGhhdAorCSAqIGxlbmd0aCBiZWNhdXNlIG90aGVyd2lzZSBiZ3dwcm9jbm8gbWlnaHQg YmUgcmVzZXQgd2hpbGUvYWZ0ZXIgd2UgY2hlY2sKKwkgKiBiZWNhdXNlIHRoZSBjb21waWxl ciBtaWdodCBqdXN0IHJlcmVhZCBmcm9tIG1lbW9yeS4KIAkgKgotCSAqIFRoaXMgY2FuIHBv c3NpYmx5IHNldCB0aGUgbGF0Y2ggb2YgdGhlIHdyb25nIHByb2Nlc3MgaWYgdGhlIGJnd3Jp dGVyCi0JICogZGllcyBpbiB0aGUgd3JvbmcgbW9tZW50LiBCdXQgc2luY2UgUEdQUk9DLT5w cm9jTGF0Y2ggaXMgbmV2ZXIKLQkgKiBkZWFsbG9jYXRlZCB0aGUgd29yc3QgY29uc2VxdWVu Y2Ugb2YgdGhhdCBpcyB0aGF0IHdlIHNldCB0aGUgbGF0Y2ggb2YKLQkgKiBzb21lIGFyYml0 cmFyeSBwcm9jZXNzLgorCSAqIFRoaXMgY2FuIHBvc3NpYmx5IHNlbmQgdGhlIGludGVycnVw dCB0byB0aGUgd3JvbmcgcHJvY2VzcyBpZiB0aGUKKwkgKiBiZ3dyaXRlciBkaWVzIGluIHRo ZSB3cm9uZyBtb21lbnQsIGJ1dCB0aGF0J3MgaGFybWxlc3MuCiAJICovCiAJYmd3cHJvY25v ID0gSU5UX0FDQ0VTU19PTkNFKFN0cmF0ZWd5Q29udHJvbC0+Ymd3cHJvY25vKTsKIAlpZiAo Ymd3cHJvY25vICE9IC0xKQogCXsKLQkJLyogcmVzZXQgYmd3cHJvY25vIGZpcnN0LCBiZWZv cmUgc2V0dGluZyB0aGUgbGF0Y2ggKi8KKwkJLyogcmVzZXQgYmd3cHJvY25vIGZpcnN0LCBi ZWZvcmUgc2VuZGluZyB0aGUgaW50ZXJydXB0ICovCiAJCVN0cmF0ZWd5Q29udHJvbC0+Ymd3 cHJvY25vID0gLTE7CiAKIAkJLyoKLQkJICogTm90IGFjcXVpcmluZyBQcm9jQXJyYXlMb2Nr IGhlcmUgd2hpY2ggaXMgc2xpZ2h0bHkgaWNreS4gSXQncwotCQkgKiBhY3R1YWxseSBmaW5l IGJlY2F1c2UgcHJvY0xhdGNoIGlzbid0IGV2ZXIgZnJlZWQsIHNvIHdlIGp1c3QgY2FuCi0J CSAqIHBvdGVudGlhbGx5IHNldCB0aGUgd3JvbmcgcHJvY2VzcycgKG9yIG5vIHByb2Nlc3Mn KSBsYXRjaC4KKwkJICogTm90IGFjcXVpcmluZyBQcm9jQXJyYXlMb2NrIGhlcmUgd2hpY2gg aXMgc2xpZ2h0bHkgaWNreSwgYmVjYXVzZSB3ZQorCQkgKiBjYW4gcG90ZW50aWFsbHkgc2Vu ZCB0aGUgaW50ZXJydXB0IHRvIHRoZSB3cm9uZyBwcm9jZXNzIChvciBubworCQkgKiBwcm9j ZXNzKSwgYnV0IGl0J3MgaGFybWxlc3MuCiAJCSAqLwotCQlTZXRMYXRjaCgmR2V0UEdQcm9j QnlOdW1iZXIoYmd3cHJvY25vKS0+cHJvY0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJTlRF UlJVUFRfV0FJVF9XQUtFVVAsIGJnd3Byb2Nubyk7CiAJfQogCiAJLyoKQEAgLTM1NywxMCAr MzU2LDEwIEBAIFN0cmF0ZWd5U3luY1N0YXJ0KHVpbnQzMiAqY29tcGxldGVfcGFzc2VzLCB1 aW50MzIgKm51bV9idWZfYWxsb2MpCiB9CiAKIC8qCi0gKiBTdHJhdGVneU5vdGlmeUJnV3Jp dGVyIC0tIHNldCBvciBjbGVhciBhbGxvY2F0aW9uIG5vdGlmaWNhdGlvbiBsYXRjaAorICog U3RyYXRlZ3lOb3RpZnlCZ1dyaXRlciAtLSBzZXQgb3IgY2xlYXIgYWxsb2NhdGlvbiBub3Rp ZmljYXRpb24gcHJvY2VzcwogICoKICAqIElmIGJnd3Byb2NubyBpc24ndCAtMSwgdGhlIG5l eHQgaW52b2NhdGlvbiBvZiBTdHJhdGVneUdldEJ1ZmZlciB3aWxsCi0gKiBzZXQgdGhhdCBs YXRjaC4gIFBhc3MgLTEgdG8gY2xlYXIgdGhlIHBlbmRpbmcgbm90aWZpY2F0aW9uIGJlZm9y ZSBpdAorICogaW50ZXJydXB0IHRoYXQgcHJvY2Vzcy4gIFBhc3MgLTEgdG8gY2xlYXIgdGhl IHBlbmRpbmcgbm90aWZpY2F0aW9uIGJlZm9yZSBpdAogICogaGFwcGVucy4gIFRoaXMgZmVh dHVyZSBpcyB1c2VkIGJ5IHRoZSBiZ3dyaXRlciBwcm9jZXNzIHRvIHdha2UgaXRzZWxmIHVw CiAgKiBmcm9tIGhpYmVybmF0aW9uLCBhbmQgaXMgbm90IG1lYW50IGZvciBhbnlib2R5IGVs c2UgdG8gdXNlLgogICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9N YWtlZmlsZSBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL01ha2VmaWxlCmluZGV4IGY3MTY1 M2JiZTQ4Li4zMzJiNjI1MDA4YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvTWFrZWZpbGUKQEAg LTE1LDcgKzE1LDYgQEAgT0JKUyA9IFwKIAlkc21fcmVnaXN0cnkubyBcCiAJaXBjLm8gXAog CWlwY2kubyBcCi0JbGF0Y2gubyBcCiAJcG1zaWduYWwubyBcCiAJcHJvY2FycmF5Lm8gXAog CXByb2NzaWduYWwubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9k c21faW1wbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtX2ltcGwuYwppbmRleCBl OGMwNzgwNWY1OS4uOTcxNWM5MjlmNjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL2RzbV9pbXBsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtX2lt cGwuYwpAQCAtMzU4LDggKzM1OCw4IEBAIGRzbV9pbXBsX3Bvc2l4X3Jlc2l6ZShpbnQgZmQs IG9mZl90IHNpemUpCiAJLyoKIAkgKiBCbG9jayBhbGwgYmxvY2thYmxlIHNpZ25hbHMsIGV4 Y2VwdCBTSUdRVUlULiAgcG9zaXhfZmFsbG9jYXRlKCkgY2FuIHJ1bgogCSAqIGZvciBxdWl0 ZSBhIGxvbmcgdGltZSwgYW5kIGlzIGFuIGFsbC1vci1ub3RoaW5nIG9wZXJhdGlvbi4gIElm IHdlCi0JICogYWxsb3dlZCBTSUdVU1IxIHRvIGludGVycnVwdCB1cyByZXBlYXRlZGx5IChm b3IgZXhhbXBsZSwgZHVlIHRvCi0JICogcmVjb3ZlcnkgY29uZmxpY3RzKSwgdGhlIHJldHJ5 IGxvb3AgbWlnaHQgbmV2ZXIgc3VjY2VlZC4KKwkgKiBhbGxvd2VkIHNpZ25hbHMgdG8gaW50 ZXJydXB0IHVzIHJlcGVhdGVkbHkgKGZvciBleGFtcGxlLCBkdWUgdG8gY29uZmlnCisJICog ZmlsZSByZWxvYWRzKSwgdGhlIHJldHJ5IGxvb3AgbWlnaHQgbmV2ZXIgc3VjY2VlZC4KIAkg Ki8KIAlpZiAoSXNVbmRlclBvc3RtYXN0ZXIpCiAJCXNpZ3Byb2NtYXNrKFNJR19TRVRNQVNL LCAmQmxvY2tTaWcsICZzYXZlX3NpZ21hc2spOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvaXBjLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGMuYwppbmRl eCA2NTFlOWMyM2UxNi4uMGU4NjQ5MWUxYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL2lwYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwYy5jCkBA IC0xNzMsMTUgKzE3MywxMyBAQCBwcm9jX2V4aXRfcHJlcGFyZShpbnQgY29kZSkKIAlwcm9j X2V4aXRfaW5wcm9ncmVzcyA9IHRydWU7CiAKIAkvKgotCSAqIEZvcmdldCBhbnkgcGVuZGlu ZyBjYW5jZWwgb3IgZGllIHJlcXVlc3RzOyB3ZSdyZSBkb2luZyBvdXIgYmVzdCB0bwotCSAq IGNsb3NlIHVwIHNob3AgYWxyZWFkeS4gIE5vdGUgdGhhdCB0aGUgc2lnbmFsIGhhbmRsZXJz IHdpbGwgbm90IHNldAotCSAqIHRoZXNlIGZsYWdzIGFnYWluLCBub3cgdGhhdCBwcm9jX2V4 aXRfaW5wcm9ncmVzcyBpcyBzZXQuCisJICogRm9yZ2V0IGFueSBwZW5kaW5nIGNhbmNlbCBv ciBkaWUgcmVxdWVzdHMgYW5kIGhvbGQgaW50ZXJydXB0cyB0bworCSAqIHByZXZlbnQgYW55 IG1vcmUgaW50ZXJydXB0cyBmcm9tIGJlaW5nIHByb2Nlc3NlZDsgd2UncmUgZG9pbmcgb3Vy IGJlc3QKKwkgKiB0byBjbG9zZSB1cCBzaG9wIGFscmVhZHkuCiAJICovCi0JSW50ZXJydXB0 UGVuZGluZyA9IGZhbHNlOwotCVByb2NEaWVQZW5kaW5nID0gZmFsc2U7Ci0JUXVlcnlDYW5j ZWxQZW5kaW5nID0gZmFsc2U7Ci0JSW50ZXJydXB0SG9sZG9mZkNvdW50ID0gMTsKLQlDcml0 U2VjdGlvbkNvdW50ID0gMDsKKwlDbGVhckludGVycnVwdChJTlRFUlJVUFRfVEVSTUlOQVRF KTsKKwlDbGVhckludGVycnVwdChJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMKTsKKwlSZXNldElu dGVycnVwdEhvbGRvZmZDb3VudHMoMSwgMCk7CiAKIAkvKgogCSAqIEFsc28gY2xlYXIgdGhl IGVycm9yIGNvbnRleHQgc3RhY2ssIHRvIHByZXZlbnQgZXJyb3IgY2FsbGJhY2tzIGZyb20K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2xhdGNoLmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9sYXRjaC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA3ZDRmNGNmMzJiYi4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvbGF0Y2guYworKysgL2Rldi9udWxsCkBAIC0xLDM4OSArMCwwIEBACi0vKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KLSAqCi0gKiBsYXRjaC5jCi0gKgkgIFJvdXRpbmVzIGZvciBpbnRlci1w cm9jZXNzIGxhdGNoZXMKLSAqCi0gKiBUaGUgbGF0Y2ggaW50ZXJmYWNlIGlzIGEgcmVsaWFi bGUgcmVwbGFjZW1lbnQgZm9yIHRoZSBjb21tb24gcGF0dGVybiBvZgotICogdXNpbmcgcGdf dXNsZWVwKCkgb3Igc2VsZWN0KCkgdG8gd2FpdCB1bnRpbCBhIHNpZ25hbCBhcnJpdmVzLCB3 aGVyZSB0aGUKLSAqIHNpZ25hbCBoYW5kbGVyIHNldHMgYSBmbGFnIHZhcmlhYmxlLiAgU2Vl IGxhdGNoLmggZm9yIG1vcmUgaW5mb3JtYXRpb24KLSAqIG9uIGhvdyB0byB1c2UgdGhlbS4K LSAqCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5 NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCi0gKgotICogSURF TlRJRklDQVRJT04KLSAqCSAgc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbGF0Y2guYwotICoK LSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICovCi0jaW5jbHVkZSAicG9zdGdyZXMuaCIKLQot I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgotI2luY2x1ZGUgInBvcnQvYXRvbWljcy5oIgotI2lu Y2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKLSNpbmNsdWRlICJzdG9yYWdlL3dhaXRldmVudHNl dC5oIgotI2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCi0KLS8qIEEgY29tbW9uIFdhaXRF dmVudFNldCB1c2VkIHRvIGltcGxlbWVudCBXYWl0TGF0Y2goKSAqLwotc3RhdGljIFdhaXRF dmVudFNldCAqTGF0Y2hXYWl0U2V0OwotCi0vKiBUaGUgcG9zaXRpb25zIG9mIHRoZSBsYXRj aCBhbmQgUE0gZGVhdGggZXZlbnRzIGluIExhdGNoV2FpdFNldCAqLwotI2RlZmluZSBMYXRj aFdhaXRTZXRMYXRjaFBvcyAwCi0jZGVmaW5lIExhdGNoV2FpdFNldFBvc3RtYXN0ZXJEZWF0 aFBvcyAxCi0KLXZvaWQKLUluaXRpYWxpemVMYXRjaFdhaXRTZXQodm9pZCkKLXsKLQlpbnQJ CQlsYXRjaF9wb3MgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZOwotCi0JQXNzZXJ0KExhdGNo V2FpdFNldCA9PSBOVUxMKTsKLQotCS8qIFNldCB1cCB0aGUgV2FpdEV2ZW50U2V0IHVzZWQg YnkgV2FpdExhdGNoKCkuICovCi0JTGF0Y2hXYWl0U2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0 KE5VTEwsIDIpOwotCWxhdGNoX3BvcyA9IEFkZFdhaXRFdmVudFRvU2V0KExhdGNoV2FpdFNl dCwgV0xfTEFUQ0hfU0VULCBQR0lOVkFMSURfU09DS0VULAotCQkJCQkJCQkgIE15TGF0Y2gs IE5VTEwpOwotCUFzc2VydChsYXRjaF9wb3MgPT0gTGF0Y2hXYWl0U2V0TGF0Y2hQb3MpOwot Ci0JLyoKLQkgKiBXYWl0TGF0Y2ggd2lsbCBtb2RpZnkgdGhpcyB0byBXTF9FWElUX09OX1BN X0RFQVRIIG9yCi0JICogV0xfUE9TVE1BU1RFUl9ERUFUSCBvbiBlYWNoIGNhbGwuCi0JICov Ci0JaWYgKElzVW5kZXJQb3N0bWFzdGVyKQotCXsKLQkJbGF0Y2hfcG9zID0gQWRkV2FpdEV2 ZW50VG9TZXQoTGF0Y2hXYWl0U2V0LCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJCQkJ ICBQR0lOVkFMSURfU09DS0VULCBOVUxMLCBOVUxMKTsKLQkJQXNzZXJ0KGxhdGNoX3BvcyA9 PSBMYXRjaFdhaXRTZXRQb3N0bWFzdGVyRGVhdGhQb3MpOwotCX0KLX0KLQotLyoKLSAqIElu aXRpYWxpemUgYSBwcm9jZXNzLWxvY2FsIGxhdGNoLgotICovCi12b2lkCi1Jbml0TGF0Y2go TGF0Y2ggKmxhdGNoKQotewotCWxhdGNoLT5pc19zZXQgPSBmYWxzZTsKLQlsYXRjaC0+bWF5 YmVfc2xlZXBpbmcgPSBmYWxzZTsKLQlsYXRjaC0+b3duZXJfcGlkID0gTXlQcm9jUGlkOwot CWxhdGNoLT5pc19zaGFyZWQgPSBmYWxzZTsKLQotI2lmZGVmIFdJTjMyCi0JbGF0Y2gtPmV2 ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwgVFJVRSwgRkFMU0UsIE5VTEwpOwotCWlmIChsYXRj aC0+ZXZlbnQgPT0gTlVMTCkKLQkJZWxvZyhFUlJPUiwgIkNyZWF0ZUV2ZW50IGZhaWxlZDog ZXJyb3IgY29kZSAlbHUiLCBHZXRMYXN0RXJyb3IoKSk7Ci0jZW5kaWYJCQkJCQkJLyogV0lO MzIgKi8KLX0KLQotLyoKLSAqIEluaXRpYWxpemUgYSBzaGFyZWQgbGF0Y2ggdGhhdCBjYW4g YmUgc2V0IGZyb20gb3RoZXIgcHJvY2Vzc2VzLiBUaGUgbGF0Y2gKLSAqIGlzIGluaXRpYWxs eSBvd25lZCBieSBuby1vbmU7IHVzZSBPd25MYXRjaCB0byBhc3NvY2lhdGUgaXQgd2l0aCB0 aGUKLSAqIGN1cnJlbnQgcHJvY2Vzcy4KLSAqCi0gKiBJbml0U2hhcmVkTGF0Y2ggbmVlZHMg dG8gYmUgY2FsbGVkIGluIHBvc3RtYXN0ZXIgYmVmb3JlIGZvcmtpbmcgY2hpbGQKLSAqIHBy b2Nlc3NlcywgdXN1YWxseSByaWdodCBhZnRlciBpbml0aWFsaXppbmcgdGhlIHNoYXJlZCBt ZW1vcnkgYmxvY2sKLSAqIGNvbnRhaW5pbmcgdGhlIGxhdGNoLiAoVGhlIFVuaXggaW1wbGVt ZW50YXRpb24gZG9lc24ndCBhY3R1YWxseSByZXF1aXJlCi0gKiB0aGF0LCBidXQgdGhlIFdp bmRvd3Mgb25lIGRvZXMuKSBCZWNhdXNlIG9mIHRoaXMgcmVzdHJpY3Rpb24sIHdlIGhhdmUg bm8KLSAqIGNvbmN1cnJlbmN5IGlzc3VlcyB0byB3b3JyeSBhYm91dCBoZXJlLgotICoKLSAq IE5vdGUgdGhhdCBvdGhlciBoYW5kbGVzIGNyZWF0ZWQgaW4gdGhpcyBtb2R1bGUgYXJlIG5l dmVyIG1hcmtlZCBhcwotICogaW5oZXJpdGFibGUuICBUaHVzIHdlIGRvIG5vdCBuZWVkIHRv IHdvcnJ5IGFib3V0IGNsZWFuaW5nIHVwIGNoaWxkCi0gKiBwcm9jZXNzIHJlZmVyZW5jZXMg dG8gcG9zdG1hc3Rlci1wcml2YXRlIGxhdGNoZXMgb3IgV2FpdEV2ZW50U2V0cy4KLSAqLwot dm9pZAotSW5pdFNoYXJlZExhdGNoKExhdGNoICpsYXRjaCkKLXsKLSNpZmRlZiBXSU4zMgot CVNFQ1VSSVRZX0FUVFJJQlVURVMgc2E7Ci0KLQkvKgotCSAqIFNldCB1cCBzZWN1cml0eSBh dHRyaWJ1dGVzIHRvIHNwZWNpZnkgdGhhdCB0aGUgZXZlbnRzIGFyZSBpbmhlcml0ZWQuCi0J ICovCi0JWmVyb01lbW9yeSgmc2EsIHNpemVvZihzYSkpOwotCXNhLm5MZW5ndGggPSBzaXpl b2Yoc2EpOwotCXNhLmJJbmhlcml0SGFuZGxlID0gVFJVRTsKLQotCWxhdGNoLT5ldmVudCA9 IENyZWF0ZUV2ZW50KCZzYSwgVFJVRSwgRkFMU0UsIE5VTEwpOwotCWlmIChsYXRjaC0+ZXZl bnQgPT0gTlVMTCkKLQkJZWxvZyhFUlJPUiwgIkNyZWF0ZUV2ZW50IGZhaWxlZDogZXJyb3Ig Y29kZSAlbHUiLCBHZXRMYXN0RXJyb3IoKSk7Ci0jZW5kaWYKLQotCWxhdGNoLT5pc19zZXQg PSBmYWxzZTsKLQlsYXRjaC0+bWF5YmVfc2xlZXBpbmcgPSBmYWxzZTsKLQlsYXRjaC0+b3du ZXJfcGlkID0gMDsKLQlsYXRjaC0+aXNfc2hhcmVkID0gdHJ1ZTsKLX0KLQotLyoKLSAqIEFz c29jaWF0ZSBhIHNoYXJlZCBsYXRjaCB3aXRoIHRoZSBjdXJyZW50IHByb2Nlc3MsIGFsbG93 aW5nIGl0IHRvCi0gKiB3YWl0IG9uIHRoZSBsYXRjaC4KLSAqCi0gKiBBbHRob3VnaCB0aGVy ZSBpcyBhIHNhbml0eSBjaGVjayBmb3IgbGF0Y2gtYWxyZWFkeS1vd25lZCwgd2UgZG9uJ3Qg ZG8KLSAqIGFueSBzb3J0IG9mIGxvY2tpbmcgaGVyZSwgbWVhbmluZyB0aGF0IHdlIGNvdWxk IGZhaWwgdG8gZGV0ZWN0IHRoZSBlcnJvcgotICogaWYgdHdvIHByb2Nlc3NlcyB0cnkgdG8g b3duIHRoZSBzYW1lIGxhdGNoIGF0IGFib3V0IHRoZSBzYW1lIHRpbWUuICBJZgotICogdGhl cmUgaXMgYW55IHJpc2sgb2YgdGhhdCwgY2FsbGVyIG11c3QgcHJvdmlkZSBhbiBpbnRlcmxv Y2sgdG8gcHJldmVudCBpdC4KLSAqLwotdm9pZAotT3duTGF0Y2goTGF0Y2ggKmxhdGNoKQot ewotCWludAkJCW93bmVyX3BpZDsKLQotCS8qIFNhbml0eSBjaGVja3MgKi8KLQlBc3NlcnQo bGF0Y2gtPmlzX3NoYXJlZCk7Ci0KLQlvd25lcl9waWQgPSBsYXRjaC0+b3duZXJfcGlkOwot CWlmIChvd25lcl9waWQgIT0gMCkKLQkJZWxvZyhQQU5JQywgImxhdGNoIGFscmVhZHkgb3du ZWQgYnkgUElEICVkIiwgb3duZXJfcGlkKTsKLQotCWxhdGNoLT5vd25lcl9waWQgPSBNeVBy b2NQaWQ7Ci19Ci0KLS8qCi0gKiBEaXNvd24gYSBzaGFyZWQgbGF0Y2ggY3VycmVudGx5IG93 bmVkIGJ5IHRoZSBjdXJyZW50IHByb2Nlc3MuCi0gKi8KLXZvaWQKLURpc293bkxhdGNoKExh dGNoICpsYXRjaCkKLXsKLQlBc3NlcnQobGF0Y2gtPmlzX3NoYXJlZCk7Ci0JQXNzZXJ0KGxh dGNoLT5vd25lcl9waWQgPT0gTXlQcm9jUGlkKTsKLQotCWxhdGNoLT5vd25lcl9waWQgPSAw OwotfQotCi0vKgotICogV2FpdCBmb3IgYSBnaXZlbiBsYXRjaCB0byBiZSBzZXQsIG9yIGZv ciBwb3N0bWFzdGVyIGRlYXRoLCBvciB1bnRpbCB0aW1lb3V0Ci0gKiBpcyBleGNlZWRlZC4g J3dha2VFdmVudHMnIGlzIGEgYml0bWFzayB0aGF0IHNwZWNpZmllcyB3aGljaCBvZiB0aG9z ZSBldmVudHMKLSAqIHRvIHdhaXQgZm9yLiBJZiB0aGUgbGF0Y2ggaXMgYWxyZWFkeSBzZXQg KGFuZCBXTF9MQVRDSF9TRVQgaXMgZ2l2ZW4pLCB0aGUKLSAqIGZ1bmN0aW9uIHJldHVybnMg aW1tZWRpYXRlbHkuCi0gKgotICogVGhlICJ0aW1lb3V0IiBpcyBnaXZlbiBpbiBtaWxsaXNl Y29uZHMuIEl0IG11c3QgYmUgPj0gMCBpZiBXTF9USU1FT1VUIGZsYWcKLSAqIGlzIGdpdmVu LiAgQWx0aG91Z2ggaXQgaXMgZGVjbGFyZWQgYXMgImxvbmciLCB3ZSBkb24ndCBhY3R1YWxs eSBzdXBwb3J0Ci0gKiB0aW1lb3V0cyBsb25nZXIgdGhhbiBJTlRfTUFYIG1pbGxpc2Vjb25k cy4gIE5vdGUgdGhhdCBzb21lIGV4dHJhIG92ZXJoZWFkCi0gKiBpcyBpbmN1cnJlZCB3aGVu IFdMX1RJTUVPVVQgaXMgZ2l2ZW4sIHNvIGF2b2lkIHVzaW5nIGEgdGltZW91dCBpZiBwb3Nz aWJsZS4KLSAqCi0gKiBUaGUgbGF0Y2ggbXVzdCBiZSBvd25lZCBieSB0aGUgY3VycmVudCBw cm9jZXNzLCBpZS4gaXQgbXVzdCBiZSBhCi0gKiBwcm9jZXNzLWxvY2FsIGxhdGNoIGluaXRp YWxpemVkIHdpdGggSW5pdExhdGNoLCBvciBhIHNoYXJlZCBsYXRjaAotICogYXNzb2NpYXRl ZCB3aXRoIHRoZSBjdXJyZW50IHByb2Nlc3MgYnkgY2FsbGluZyBPd25MYXRjaC4KLSAqCi0g KiBSZXR1cm5zIGJpdCBtYXNrIGluZGljYXRpbmcgd2hpY2ggY29uZGl0aW9uKHMpIGNhdXNl ZCB0aGUgd2FrZS11cC4gTm90ZQotICogdGhhdCBpZiBtdWx0aXBsZSB3YWtlLXVwIGNvbmRp dGlvbnMgYXJlIHRydWUsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0Ci0gKiB3ZSByZXR1 cm4gYWxsIG9mIHRoZW0gaW4gb25lIGNhbGwsIGJ1dCB3ZSB3aWxsIHJldHVybiBhdCBsZWFz dCBvbmUuCi0gKi8KLWludAotV2FpdExhdGNoKExhdGNoICpsYXRjaCwgaW50IHdha2VFdmVu dHMsIGxvbmcgdGltZW91dCwKLQkJICB1aW50MzIgd2FpdF9ldmVudF9pbmZvKQotewotCVdh aXRFdmVudAlldmVudDsKLQotCS8qIFBvc3RtYXN0ZXItbWFuYWdlZCBjYWxsZXJzIG11c3Qg aGFuZGxlIHBvc3RtYXN0ZXIgZGVhdGggc29tZWhvdy4gKi8KLQlBc3NlcnQoIUlzVW5kZXJQ b3N0bWFzdGVyIHx8Ci0JCSAgICh3YWtlRXZlbnRzICYgV0xfRVhJVF9PTl9QTV9ERUFUSCkg fHwKLQkJICAgKHdha2VFdmVudHMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKSk7Ci0KLQkvKgot CSAqIFNvbWUgY2FsbGVycyBtYXkgaGF2ZSBhIGxhdGNoIG90aGVyIHRoYW4gTXlMYXRjaCwg b3Igbm8gbGF0Y2ggYXQgYWxsLAotCSAqIG9yIHdhbnQgdG8gaGFuZGxlIHBvc3RtYXN0ZXIg ZGVhdGggZGlmZmVyZW50bHkuICBJdCdzIGNoZWFwIHRvIGFzc2lnbgotCSAqIHRob3NlLCBz byBqdXN0IGRvIGl0IGV2ZXJ5IHRpbWUuCi0JICovCi0JaWYgKCEod2FrZUV2ZW50cyAmIFdM X0xBVENIX1NFVCkpCi0JCWxhdGNoID0gTlVMTDsKLQlNb2RpZnlXYWl0RXZlbnQoTGF0Y2hX YWl0U2V0LCBMYXRjaFdhaXRTZXRMYXRjaFBvcywgV0xfTEFUQ0hfU0VULCBsYXRjaCk7Ci0K LQlpZiAoSXNVbmRlclBvc3RtYXN0ZXIpCi0JCU1vZGlmeVdhaXRFdmVudChMYXRjaFdhaXRT ZXQsIExhdGNoV2FpdFNldFBvc3RtYXN0ZXJEZWF0aFBvcywKLQkJCQkJCSh3YWtlRXZlbnRz ICYgKFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9QT1NUTUFTVEVSX0RFQVRIKSksCi0JCQkJ CQlOVUxMKTsKLQotCWlmIChXYWl0RXZlbnRTZXRXYWl0KExhdGNoV2FpdFNldCwKLQkJCQkJ CSAod2FrZUV2ZW50cyAmIFdMX1RJTUVPVVQpID8gdGltZW91dCA6IC0xLAotCQkJCQkJICZl dmVudCwgMSwKLQkJCQkJCSB3YWl0X2V2ZW50X2luZm8pID09IDApCi0JCXJldHVybiBXTF9U SU1FT1VUOwotCWVsc2UKLQkJcmV0dXJuIGV2ZW50LmV2ZW50czsKLX0KLQotLyoKLSAqIExp a2UgV2FpdExhdGNoLCBidXQgd2l0aCBhbiBleHRyYSBzb2NrZXQgYXJndW1lbnQgZm9yIFdM X1NPQ0tFVF8qCi0gKiBjb25kaXRpb25zLgotICoKLSAqIFdoZW4gd2FpdGluZyBvbiBhIHNv Y2tldCwgRU9GIGFuZCBlcnJvciBjb25kaXRpb25zIGFsd2F5cyBjYXVzZSB0aGUgc29ja2V0 Ci0gKiB0byBiZSByZXBvcnRlZCBhcyByZWFkYWJsZS93cml0YWJsZS9jb25uZWN0ZWQsIHNv IHRoYXQgdGhlIGNhbGxlciBjYW4gZGVhbAotICogd2l0aCB0aGUgY29uZGl0aW9uLgotICoK LSAqIHdha2VFdmVudHMgbXVzdCBpbmNsdWRlIGVpdGhlciBXTF9FWElUX09OX1BNX0RFQVRI IGZvciBhdXRvbWF0aWMgZXhpdAotICogaWYgdGhlIHBvc3RtYXN0ZXIgZGllcyBvciBXTF9Q T1NUTUFTVEVSX0RFQVRIIGZvciBhIGZsYWcgc2V0IGluIHRoZQotICogcmV0dXJuIHZhbHVl IGlmIHRoZSBwb3N0bWFzdGVyIGRpZXMuICBUaGUgbGF0dGVyIGlzIHVzZWZ1bCBmb3IgcmFy ZSBjYXNlcwotICogd2hlcmUgc29tZSBiZWhhdmlvciBvdGhlciB0aGFuIGltbWVkaWF0ZSBl eGl0IGlzIG5lZWRlZC4KLSAqCi0gKiBOQjogVGhlc2UgZGF5cyB0aGlzIGlzIGp1c3QgYSB3 cmFwcGVyIGFyb3VuZCB0aGUgV2FpdEV2ZW50U2V0IEFQSS4gV2hlbgotICogdXNpbmcgYSBs YXRjaCB2ZXJ5IGZyZXF1ZW50bHksIGNvbnNpZGVyIGNyZWF0aW5nIGEgbG9uZ2VyIGxpdmlu ZwotICogV2FpdEV2ZW50U2V0IGluc3RlYWQ7IHRoYXQncyBtb3JlIGVmZmljaWVudC4KLSAq LwotaW50Ci1XYWl0TGF0Y2hPclNvY2tldChMYXRjaCAqbGF0Y2gsIGludCB3YWtlRXZlbnRz LCBwZ3NvY2tldCBzb2NrLAotCQkJCSAgbG9uZyB0aW1lb3V0LCB1aW50MzIgd2FpdF9ldmVu dF9pbmZvKQotewotCWludAkJCXJldCA9IDA7Ci0JaW50CQkJcmM7Ci0JV2FpdEV2ZW50CWV2 ZW50OwotCVdhaXRFdmVudFNldCAqc2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0KEN1cnJlbnRS ZXNvdXJjZU93bmVyLCAzKTsKLQotCWlmICh3YWtlRXZlbnRzICYgV0xfVElNRU9VVCkKLQkJ QXNzZXJ0KHRpbWVvdXQgPj0gMCk7Ci0JZWxzZQotCQl0aW1lb3V0ID0gLTE7Ci0KLQlpZiAo d2FrZUV2ZW50cyAmIFdMX0xBVENIX1NFVCkKLQkJQWRkV2FpdEV2ZW50VG9TZXQoc2V0LCBX TF9MQVRDSF9TRVQsIFBHSU5WQUxJRF9TT0NLRVQsCi0JCQkJCQkgIGxhdGNoLCBOVUxMKTsK LQotCS8qIFBvc3RtYXN0ZXItbWFuYWdlZCBjYWxsZXJzIG11c3QgaGFuZGxlIHBvc3RtYXN0 ZXIgZGVhdGggc29tZWhvdy4gKi8KLQlBc3NlcnQoIUlzVW5kZXJQb3N0bWFzdGVyIHx8Ci0J CSAgICh3YWtlRXZlbnRzICYgV0xfRVhJVF9PTl9QTV9ERUFUSCkgfHwKLQkJICAgKHdha2VF dmVudHMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKSk7Ci0KLQlpZiAoKHdha2VFdmVudHMgJiBX TF9QT1NUTUFTVEVSX0RFQVRIKSAmJiBJc1VuZGVyUG9zdG1hc3RlcikKLQkJQWRkV2FpdEV2 ZW50VG9TZXQoc2V0LCBXTF9QT1NUTUFTVEVSX0RFQVRILCBQR0lOVkFMSURfU09DS0VULAot CQkJCQkJICBOVUxMLCBOVUxMKTsKLQotCWlmICgod2FrZUV2ZW50cyAmIFdMX0VYSVRfT05f UE1fREVBVEgpICYmIElzVW5kZXJQb3N0bWFzdGVyKQotCQlBZGRXYWl0RXZlbnRUb1NldChz ZXQsIFdMX0VYSVRfT05fUE1fREVBVEgsIFBHSU5WQUxJRF9TT0NLRVQsCi0JCQkJCQkgIE5V TEwsIE5VTEwpOwotCi0JaWYgKHdha2VFdmVudHMgJiBXTF9TT0NLRVRfTUFTSykKLQl7Ci0J CWludAkJCWV2OwotCi0JCWV2ID0gd2FrZUV2ZW50cyAmIFdMX1NPQ0tFVF9NQVNLOwotCQlB ZGRXYWl0RXZlbnRUb1NldChzZXQsIGV2LCBzb2NrLCBOVUxMLCBOVUxMKTsKLQl9Ci0KLQly YyA9IFdhaXRFdmVudFNldFdhaXQoc2V0LCB0aW1lb3V0LCAmZXZlbnQsIDEsIHdhaXRfZXZl bnRfaW5mbyk7Ci0KLQlpZiAocmMgPT0gMCkKLQkJcmV0IHw9IFdMX1RJTUVPVVQ7Ci0JZWxz ZQotCXsKLQkJcmV0IHw9IGV2ZW50LmV2ZW50cyAmIChXTF9MQVRDSF9TRVQgfAotCQkJCQkJ CSAgIFdMX1BPU1RNQVNURVJfREVBVEggfAotCQkJCQkJCSAgIFdMX1NPQ0tFVF9NQVNLKTsK LQl9Ci0KLQlGcmVlV2FpdEV2ZW50U2V0KHNldCk7Ci0KLQlyZXR1cm4gcmV0OwotfQotCi0v KgotICogU2V0cyBhIGxhdGNoIGFuZCB3YWtlcyB1cCBhbnlvbmUgd2FpdGluZyBvbiBpdC4K LSAqCi0gKiBUaGlzIGlzIGNoZWFwIGlmIHRoZSBsYXRjaCBpcyBhbHJlYWR5IHNldCwgb3Ro ZXJ3aXNlIG5vdCBzbyBtdWNoLgotICoKLSAqIE5COiB3aGVuIGNhbGxpbmcgdGhpcyBpbiBh IHNpZ25hbCBoYW5kbGVyLCBiZSBzdXJlIHRvIHNhdmUgYW5kIHJlc3RvcmUKLSAqIGVycm5v IGFyb3VuZCBpdC4gIChUaGF0J3Mgc3RhbmRhcmQgcHJhY3RpY2UgaW4gbW9zdCBzaWduYWwg aGFuZGxlcnMsIG9mCi0gKiBjb3Vyc2UsIGJ1dCB3ZSB1c2VkIHRvIG9taXQgaXQgaW4gaGFu ZGxlcnMgdGhhdCBvbmx5IHNldCBhIGZsYWcuKQotICoKLSAqIE5COiB0aGlzIGZ1bmN0aW9u IGlzIGNhbGxlZCBmcm9tIGNyaXRpY2FsIHNlY3Rpb25zIGFuZCBzaWduYWwgaGFuZGxlcnMg c28KLSAqIHRocm93aW5nIGFuIGVycm9yIGlzIG5vdCBhIGdvb2QgaWRlYS4KLSAqLwotdm9p ZAotU2V0TGF0Y2goTGF0Y2ggKmxhdGNoKQotewotI2lmbmRlZiBXSU4zMgotCXBpZF90CQlv d25lcl9waWQ7Ci0jZWxzZQotCUhBTkRMRQkJaGFuZGxlOwotI2VuZGlmCi0KLQkvKgotCSAq IFRoZSBtZW1vcnkgYmFycmllciBoYXMgdG8gYmUgcGxhY2VkIGhlcmUgdG8gZW5zdXJlIHRo YXQgYW55IGZsYWcKLQkgKiB2YXJpYWJsZXMgcG9zc2libHkgY2hhbmdlZCBieSB0aGlzIHBy b2Nlc3MgaGF2ZSBiZWVuIGZsdXNoZWQgdG8gbWFpbgotCSAqIG1lbW9yeSwgYmVmb3JlIHdl IGNoZWNrL3NldCBpc19zZXQuCi0JICovCi0JcGdfbWVtb3J5X2JhcnJpZXIoKTsKLQotCS8q IFF1aWNrIGV4aXQgaWYgYWxyZWFkeSBzZXQgKi8KLQlpZiAobGF0Y2gtPmlzX3NldCkKLQkJ cmV0dXJuOwotCi0JbGF0Y2gtPmlzX3NldCA9IHRydWU7Ci0KLQlwZ19tZW1vcnlfYmFycmll cigpOwotCWlmICghbGF0Y2gtPm1heWJlX3NsZWVwaW5nKQotCQlyZXR1cm47Ci0KLSNpZm5k ZWYgV0lOMzIKLQotCS8qCi0JICogU2VlIGlmIGFueW9uZSdzIHdhaXRpbmcgZm9yIHRoZSBs YXRjaC4gSXQgY2FuIGJlIHRoZSBjdXJyZW50IHByb2Nlc3MgaWYKLQkgKiB3ZSdyZSBpbiBh IHNpZ25hbCBoYW5kbGVyLiBXZSB1c2UgdGhlIHNlbGYtcGlwZSBvciBTSUdVUkcgdG8gb3Vy c2VsdmVzCi0JICogdG8gd2FrZSB1cCBXYWl0RXZlbnRTZXRXYWl0QmxvY2soKSB3aXRob3V0 IHJhY2VzIGluIHRoYXQgY2FzZS4gSWYgaXQncwotCSAqIGFub3RoZXIgcHJvY2Vzcywgc2Vu ZCBhIHNpZ25hbC4KLQkgKgotCSAqIEZldGNoIG93bmVyX3BpZCBvbmx5IG9uY2UsIGluIGNh c2UgdGhlIGxhdGNoIGlzIGNvbmN1cnJlbnRseSBnZXR0aW5nCi0JICogb3duZWQgb3IgZGlz b3duZWQuIFhYWDogVGhpcyBhc3N1bWVzIHRoYXQgcGlkX3QgaXMgYXRvbWljLCB3aGljaCBp c24ndAotCSAqIGd1YXJhbnRlZWQgdG8gYmUgdHJ1ZSEgSW4gcHJhY3RpY2UsIHRoZSBlZmZl Y3RpdmUgcmFuZ2Ugb2YgcGlkX3QgZml0cwotCSAqIGluIGEgMzIgYml0IGludGVnZXIsIGFu ZCBzbyBzaG91bGQgYmUgYXRvbWljLiBJbiB0aGUgd29yc3QgY2FzZSwgd2UKLQkgKiBtaWdo dCBlbmQgdXAgc2lnbmFsaW5nIHRoZSB3cm9uZyBwcm9jZXNzLiBFdmVuIHRoZW4sIHlvdSdy ZSB2ZXJ5Ci0JICogdW5sdWNreSBpZiBhIHByb2Nlc3Mgd2l0aCB0aGF0IGJvZ3VzIHBpZCBl eGlzdHMgYW5kIGJlbG9uZ3MgdG8KLQkgKiBQb3N0Z3JlczsgYW5kIFBHIGRhdGFiYXNlIHBy b2Nlc3NlcyBzaG91bGQgaGFuZGxlIGV4Y2VzcyBTSUdVU1IxCi0JICogaW50ZXJydXB0cyB3 aXRob3V0IGEgcHJvYmxlbSBhbnlob3cuCi0JICoKLQkgKiBBbm90aGVyIHNvcnQgb2YgcmFj ZSBjb25kaXRpb24gdGhhdCdzIHBvc3NpYmxlIGhlcmUgaXMgZm9yIGEgbmV3Ci0JICogcHJv Y2VzcyB0byBvd24gdGhlIGxhdGNoIGltbWVkaWF0ZWx5IGFmdGVyIHdlIGxvb2ssIHNvIHdl IGRvbid0IHNpZ25hbAotCSAqIGl0LiBUaGlzIGlzIG9rYXkgc28gbG9uZyBhcyBhbGwgY2Fs bGVycyBvZiBSZXNldExhdGNoL1dhaXRMYXRjaCBmb2xsb3cKLQkgKiB0aGUgc3RhbmRhcmQg Y29kaW5nIGNvbnZlbnRpb24gb2Ygd2FpdGluZyBhdCB0aGUgYm90dG9tIG9mIHRoZWlyIGxv b3BzLAotCSAqIG5vdCB0aGUgdG9wLCBzbyB0aGF0IHRoZXknbGwgY29ycmVjdGx5IHByb2Nl c3MgbGF0Y2gtc2V0dGluZyBldmVudHMKLQkgKiB0aGF0IGhhcHBlbiBiZWZvcmUgdGhleSBl bnRlciB0aGUgbG9vcC4KLQkgKi8KLQlvd25lcl9waWQgPSBsYXRjaC0+b3duZXJfcGlkOwot CWlmIChvd25lcl9waWQgPT0gMCkKLQkJcmV0dXJuOwotCWVsc2UgaWYgKG93bmVyX3BpZCA9 PSBNeVByb2NQaWQpCi0JCVdha2V1cE15UHJvYygpOwotCWVsc2UKLQkJV2FrZXVwT3RoZXJQ cm9jKG93bmVyX3BpZCk7Ci0KLSNlbHNlCi0KLQkvKgotCSAqIFNlZSBpZiBhbnlvbmUncyB3 YWl0aW5nIGZvciB0aGUgbGF0Y2guIEl0IGNhbiBiZSB0aGUgY3VycmVudCBwcm9jZXNzIGlm Ci0JICogd2UncmUgaW4gYSBzaWduYWwgaGFuZGxlci4KLQkgKgotCSAqIFVzZSBhIGxvY2Fs IHZhcmlhYmxlIGhlcmUganVzdCBpbiBjYXNlIHNvbWVib2R5IGNoYW5nZXMgdGhlIGV2ZW50 IGZpZWxkCi0JICogY29uY3VycmVudGx5ICh3aGljaCByZWFsbHkgc2hvdWxkIG5vdCBoYXBw ZW4pLgotCSAqLwotCWhhbmRsZSA9IGxhdGNoLT5ldmVudDsKLQlpZiAoaGFuZGxlKQotCXsK LQkJU2V0RXZlbnQoaGFuZGxlKTsKLQotCQkvKgotCQkgKiBOb3RlIHRoYXQgd2Ugc2lsZW50 bHkgaWdub3JlIGFueSBlcnJvcnMuIFdlIG1pZ2h0IGJlIGluIGEgc2lnbmFsCi0JCSAqIGhh bmRsZXIgb3Igb3RoZXIgY3JpdGljYWwgcGF0aCB3aGVyZSBpdCdzIG5vdCBzYWZlIHRvIGNh bGwgZWxvZygpLgotCQkgKi8KLQl9Ci0jZW5kaWYKLX0KLQotLyoKLSAqIENsZWFyIHRoZSBs YXRjaC4gQ2FsbGluZyBXYWl0TGF0Y2ggYWZ0ZXIgdGhpcyB3aWxsIHNsZWVwLCB1bmxlc3MK LSAqIHRoZSBsYXRjaCBpcyBzZXQgYWdhaW4gYmVmb3JlIHRoZSBXYWl0TGF0Y2ggY2FsbC4K LSAqLwotdm9pZAotUmVzZXRMYXRjaChMYXRjaCAqbGF0Y2gpCi17Ci0JLyogT25seSB0aGUg b3duZXIgc2hvdWxkIHJlc2V0IHRoZSBsYXRjaCAqLwotCUFzc2VydChsYXRjaC0+b3duZXJf cGlkID09IE15UHJvY1BpZCk7Ci0JQXNzZXJ0KGxhdGNoLT5tYXliZV9zbGVlcGluZyA9PSBm YWxzZSk7Ci0KLQlsYXRjaC0+aXNfc2V0ID0gZmFsc2U7Ci0KLQkvKgotCSAqIEVuc3VyZSB0 aGF0IHRoZSB3cml0ZSB0byBpc19zZXQgZ2V0cyBmbHVzaGVkIHRvIG1haW4gbWVtb3J5IGJl Zm9yZSB3ZQotCSAqIGV4YW1pbmUgYW55IGZsYWcgdmFyaWFibGVzLiAgT3RoZXJ3aXNlIGEg Y29uY3VycmVudCBTZXRMYXRjaCBtaWdodAotCSAqIGZhbHNlbHkgY29uY2x1ZGUgdGhhdCBp dCBuZWVkbid0IHNpZ25hbCB1cywgZXZlbiB0aG91Z2ggd2UgaGF2ZSBtaXNzZWQKLQkgKiBz ZWVpbmcgc29tZSBmbGFnIHVwZGF0ZXMgdGhhdCBTZXRMYXRjaCB3YXMgc3VwcG9zZWQgdG8g aW5mb3JtIHVzIG9mLgotCSAqLwotCXBnX21lbW9yeV9iYXJyaWVyKCk7Ci19CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL21lc29uLmJ1aWxkCmluZGV4IGI4YzMxZTI5OTY3Li5kNzQ0ZWY4ZGZm NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbWVzb24uYnVpbGQKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbWVzb24uYnVpbGQKQEAgLTcsNyArNyw2IEBA IGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ2RzbV9yZWdpc3RyeS5jJywKICAgJ2lw Yy5jJywKICAgJ2lwY2kuYycsCi0gICdsYXRjaC5jJywKICAgJ3Btc2lnbmFsLmMnLAogICAn cHJvY2FycmF5LmMnLAogICAncHJvY3NpZ25hbC5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv cHJvY2FycmF5LmMKaW5kZXggNjAzMzZiMzE4MDMuLmNlZjIwZGZiOWIwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYworKysgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwpAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUg ImFjY2Vzcy94bG9ndXRpbHMuaCIKICNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX2F1dGhpZC5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNs dWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCkBAIC0zNDU4LDcgKzM0NTksNyBAQCBTaWdu YWxSZWNvdmVyeUNvbmZsaWN0KFBHUFJPQyAqcHJvYywgcGlkX3QgcGlkLCBSZWNvdmVyeUNv bmZsaWN0UmVhc29uIHJlYXNvbikKIAlMV0xvY2tBY3F1aXJlKFByb2NBcnJheUxvY2ssIExX X1NIQVJFRCk7CiAKIAkvKgotCSAqIEtpbGwgdGhlIHBpZCBpZiBpdCdzIHN0aWxsIGhlcmUu IElmIG5vdCwgdGhhdCdzIHdoYXQgd2Ugd2FudGVkIHNvCisJICogS2lsbCB0aGUgcHJvY2Vz cyBpZiBpdCdzIHN0aWxsIGhlcmUuIElmIG5vdCwgdGhhdCdzIHdoYXQgd2Ugd2FudGVkIHNv CiAJICogaWdub3JlIGFueSBlcnJvcnMuCiAJICovCiAJaWYgKHByb2MtPnBpZCA9PSBwaWQp CkBAIC0zNDY2LDcgKzM0NjcsNyBAQCBTaWduYWxSZWNvdmVyeUNvbmZsaWN0KFBHUFJPQyAq cHJvYywgcGlkX3QgcGlkLCBSZWNvdmVyeUNvbmZsaWN0UmVhc29uIHJlYXNvbikKIAkJKHZv aWQpIHBnX2F0b21pY19mZXRjaF9vcl91MzIoJnByb2MtPnBlbmRpbmdSZWNvdmVyeUNvbmZs aWN0cywgKDEgPDwgcmVhc29uKSk7CiAKIAkJLyogd2FrZSB1cCB0aGUgcHJvY2VzcyAqLwot CQkodm9pZCkgU2VuZFByb2NTaWduYWwocGlkLCBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU LCBHZXROdW1iZXJGcm9tUEdQcm9jKHByb2MpKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJV UFRfUkVDT1ZFUllfQ09ORkxJQ1QsIEdldE51bWJlckZyb21QR1Byb2MocHJvYykpOwogCQlm b3VuZCA9IHRydWU7CiAJfQogCkBAIC0zNTA2LDEwICszNTA3LDEwIEBAIFNpZ25hbFJlY292 ZXJ5Q29uZmxpY3RXaXRoVmlydHVhbFhJRChWaXJ0dWFsVHJhbnNhY3Rpb25JZCB2eGlkLCBS ZWNvdmVyeUNvbmZsaWN0CiAJCQkJKHZvaWQpIHBnX2F0b21pY19mZXRjaF9vcl91MzIoJnBy b2MtPnBlbmRpbmdSZWNvdmVyeUNvbmZsaWN0cywgKDEgPDwgcmVhc29uKSk7CiAKIAkJCQkv KgotCQkJCSAqIEtpbGwgdGhlIHBpZCBpZiBpdCdzIHN0aWxsIGhlcmUuIElmIG5vdCwgdGhh dCdzIHdoYXQgd2UKKwkJCQkgKiBLaWxsIHRoZSBwcm9jZXNzIGlmIGl0J3Mgc3RpbGwgaGVy ZS4gSWYgbm90LCB0aGF0J3Mgd2hhdCB3ZQogCQkJCSAqIHdhbnRlZCBzbyBpZ25vcmUgYW55 IGVycm9ycy4KIAkJCQkgKi8KLQkJCQkodm9pZCkgU2VuZFByb2NTaWduYWwocGlkLCBQUk9D U0lHX1JFQ09WRVJZX0NPTkZMSUNULCB2eGlkLnByb2NOdW1iZXIpOworCQkJCVNlbmRJbnRl cnJ1cHQoSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNULCB2eGlkLnByb2NOdW1iZXIpOwog CQkJfQogCQkJYnJlYWs7CiAJCX0KQEAgLTM1NDEsMjEgKzM1NDIsMTggQEAgU2lnbmFsUmVj b3ZlcnlDb25mbGljdFdpdGhEYXRhYmFzZShPaWQgZGF0YWJhc2VpZCwgUmVjb3ZlcnlDb25m bGljdFJlYXNvbiByZWFzb24KIAogCQlpZiAoZGF0YWJhc2VpZCA9PSBJbnZhbGlkT2lkIHx8 IHByb2MtPmRhdGFiYXNlSWQgPT0gZGF0YWJhc2VpZCkKIAkJewotCQkJVmlydHVhbFRyYW5z YWN0aW9uSWQgcHJvY3Z4aWQ7CiAJCQlwaWRfdAkJcGlkOwogCi0JCQlHRVRfVlhJRF9GUk9N X1BHUFJPQyhwcm9jdnhpZCwgKnByb2MpOwotCiAJCQlwaWQgPSBwcm9jLT5waWQ7CiAJCQlp ZiAocGlkICE9IDApCiAJCQl7CiAJCQkJKHZvaWQpIHBnX2F0b21pY19mZXRjaF9vcl91MzIo JnByb2MtPnBlbmRpbmdSZWNvdmVyeUNvbmZsaWN0cywgKDEgPDwgcmVhc29uKSk7CiAKIAkJ CQkvKgotCQkJCSAqIEtpbGwgdGhlIHBpZCBpZiBpdCdzIHN0aWxsIGhlcmUuIElmIG5vdCwg dGhhdCdzIHdoYXQgd2UKKwkJCQkgKiBLaWxsIHRoZSBwcm9jZXNzIGlmIGl0J3Mgc3RpbGwg aGVyZS4gSWYgbm90LCB0aGF0J3Mgd2hhdCB3ZQogCQkJCSAqIHdhbnRlZCBzbyBpZ25vcmUg YW55IGVycm9ycy4KIAkJCQkgKi8KLQkJCQkodm9pZCkgU2VuZFByb2NTaWduYWwocGlkLCBQ Uk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNULCBwcm9jdnhpZC5wcm9jTnVtYmVyKTsKKwkJCQlT ZW5kSW50ZXJydXB0KElOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVCwgR2V0TnVtYmVyRnJv bVBHUHJvYyhwcm9jKSk7CiAJCQl9CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w cm9jc2lnbmFsLmMKaW5kZXggNzM3YWQ4MTM2M2MuLmU3OTY5ZjY2MWJjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC0zMCw4ICszMCw4IEBACiAjaW5jbHVk ZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRp b25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1ZGUgInN0 b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRlICJz dG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9zaW52YWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKQEAg LTQxLDI4ICs0MSwyMSBAQAogI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZlbnQuaCIKIAogLyoK LSAqIFRoZSBTSUdVU1IxIHNpZ25hbCBpcyBtdWx0aXBsZXhlZCB0byBzdXBwb3J0IHNpZ25h bGluZyBtdWx0aXBsZSBldmVudAotICogdHlwZXMuIFRoZSBzcGVjaWZpYyByZWFzb24gaXMg Y29tbXVuaWNhdGVkIHZpYSBmbGFncyBpbiBzaGFyZWQgbWVtb3J5LgotICogV2Uga2VlcCBh IGJvb2xlYW4gZmxhZyBmb3IgZWFjaCBwb3NzaWJsZSAicmVhc29uIiwgc28gdGhhdCBkaWZm ZXJlbnQKLSAqIHJlYXNvbnMgY2FuIGJlIHNpZ25hbGVkIHRvIGEgcHJvY2VzcyBjb25jdXJy ZW50bHkuICAoSG93ZXZlciwgaWYgdGhlIHNhbWUKLSAqIHJlYXNvbiBpcyBzaWduYWxlZCBt b3JlIHRoYW4gb25jZSBuZWFybHkgc2ltdWx0YW5lb3VzbHksIHRoZSBwcm9jZXNzIG1heQot ICogb2JzZXJ2ZSBpdCBvbmx5IG9uY2UuKQorICogU3RhdGUgZm9yIHRoZSBQcm9jU2lnbmFs QmFycmllciBtZWNoYW5pc20gYW5kIHF1ZXJ5IGNhbmNlbGxhdGlvbi4KICAqCi0gKiBFYWNo IHByb2Nlc3MgdGhhdCB3YW50cyB0byByZWNlaXZlIHNpZ25hbHMgcmVnaXN0ZXJzIGl0cyBw cm9jZXNzIElECi0gKiBpbiB0aGUgUHJvY1NpZ25hbFNsb3RzIGFycmF5LiBUaGUgYXJyYXkg aXMgaW5kZXhlZCBieSBQcm9jTnVtYmVyIHRvIG1ha2UKLSAqIHNsb3QgYWxsb2NhdGlvbiBz aW1wbGUsIGFuZCB0byBhdm9pZCBoYXZpbmcgdG8gc2VhcmNoIHRoZSBhcnJheSB3aGVuIHlv dQotICoga25vdyB0aGUgUHJvY051bWJlciBvZiB0aGUgcHJvY2VzcyB5b3UncmUgc2lnbmFs aW5nLiAgKFdlIGRvIHN1cHBvcnQKLSAqIHNpZ25hbGluZyB3aXRob3V0IFByb2NOdW1iZXIs IGJ1dCBpdCdzIGEgYml0IGxlc3MgZWZmaWNpZW50LikKKyAqIEVhY2ggcHJvY2VzcyB0aGF0 IHdhbnRzIHRvIHBhcnRpY2lwYXRlIGluIGJhcnJpZXJzIG9yIHF1ZXJ5IGNhbmNlbGxhdGlv bgorICogcmVnaXN0ZXJzIGl0cyBwcm9jZXNzIElEIGluIHRoZSBQcm9jU2lnbmFsU2xvdHMg YXJyYXkuIFRoZSBhcnJheSBpcyBpbmRleGVkCisgKiBieSBQcm9jTnVtYmVyIHRvIG1ha2Ug c2xvdCBhbGxvY2F0aW9uIHNpbXBsZS4KICAqCiAgKiBUaGUgZmllbGRzIGluIGVhY2ggc2xv dCBhcmUgcHJvdGVjdGVkIGJ5IGEgc3BpbmxvY2ssIHBzc19tdXRleC4gcHNzX3BpZCBjYW4K ICAqIGFsc28gYmUgcmVhZCB3aXRob3V0IGhvbGRpbmcgdGhlIHNwaW5sb2NrLCBhcyBhIHF1 aWNrIHByZWxpbWluYXJ5IGNoZWNrCiAgKiB3aGVuIHNlYXJjaGluZyBmb3IgYSBwYXJ0aWN1 bGFyIFBJRCBpbiB0aGUgYXJyYXkuCiAgKgotICogcHNzX3NpZ25hbEZsYWdzIGFyZSBpbnRl bmRlZCB0byBiZSBzZXQgaW4gY2FzZXMgd2hlcmUgd2UgZG9uJ3QgbmVlZCB0bwotICoga2Vl cCB0cmFjayBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgdGFyZ2V0IHByb2Nlc3MgaGFzIGhhbmRs ZWQgdGhlIHNpZ25hbCwKLSAqIGJ1dCBzb21ldGltZXMgd2UgbmVlZCBjb25maXJtYXRpb24s IGFzIHdoZW4gbWFraW5nIGEgZ2xvYmFsIHN0YXRlIGNoYW5nZQotICogdGhhdCBjYW5ub3Qg YmUgY29uc2lkZXJlZCBjb21wbGV0ZSB1bnRpbCBhbGwgYmFja2VuZHMgaGF2ZSB0YWtlbiBu b3RpY2UKLSAqIG9mIGl0LiBGb3Igc3VjaCB1c2UgY2FzZXMsIHdlIHNldCBhIGJpdCBpbiBw c3NfYmFycmllckNoZWNrTWFzayBhbmQgdGhlbgorICogUGxhaW4gaW50ZXJydXB0cyBhcmUg aW50ZW5kZWQgdG8gYmUgc2V0IGluIGNhc2VzIHdoZXJlIHdlIGRvbid0IG5lZWQgdG8KKyAq IGtlZXAgdHJhY2sgb2Ygd2hldGhlciBvciBub3QgdGhlIHRhcmdldCBwcm9jZXNzIGhhcyBo YW5kbGVkIHRoZSBzaWduYWwsIGJ1dAorICogc29tZXRpbWVzIHdlIG5lZWQgY29uZmlybWF0 aW9uLCBhcyB3aGVuIG1ha2luZyBhIGdsb2JhbCBzdGF0ZSBjaGFuZ2UgdGhhdAorICogY2Fu bm90IGJlIGNvbnNpZGVyZWQgY29tcGxldGUgdW50aWwgYWxsIGJhY2tlbmRzIGhhdmUgdGFr ZW4gbm90aWNlIG9mCisgKiBpdC4gRm9yIHN1Y2ggdXNlIGNhc2VzLCB3ZSBzZXQgYSBiaXQg aW4gcHNzX2JhcnJpZXJDaGVja01hc2sgYW5kIHRoZW4KICAqIGluY3JlbWVudCB0aGUgY3Vy cmVudCAiYmFycmllciBnZW5lcmF0aW9uIjsgd2hlbiB0aGUgbmV3IGJhcnJpZXIgZ2VuZXJh dGlvbgogICogKG9yIGdyZWF0ZXIpIGFwcGVhcnMgaW4gdGhlIHBzc19iYXJyaWVyR2VuZXJh dGlvbiBmbGFnIG9mIGV2ZXJ5IHByb2Nlc3MsCiAgKiB3ZSBrbm93IHRoYXQgdGhlIG1lc3Nh Z2UgaGFzIGJlZW4gcmVjZWl2ZWQgZXZlcnl3aGVyZS4KQEAgLTcyLDcgKzY1LDYgQEAgdHlw ZWRlZiBzdHJ1Y3QKIAlwZ19hdG9taWNfdWludDMyIHBzc19waWQ7CiAJaW50CQkJcHNzX2Nh bmNlbF9rZXlfbGVuOyAvKiAwIG1lYW5zIG5vIGNhbmNlbGxhdGlvbiBpcyBwb3NzaWJsZSAq LwogCXVpbnQ4CQlwc3NfY2FuY2VsX2tleVtNQVhfQ0FOQ0VMX0tFWV9MRU5HVEhdOwotCXZv bGF0aWxlIHNpZ19hdG9taWNfdCBwc3Nfc2lnbmFsRmxhZ3NbTlVNX1BST0NTSUdOQUxTXTsK IAlzbG9ja190CQlwc3NfbXV0ZXg7CQkvKiBwcm90ZWN0cyB0aGUgYWJvdmUgZmllbGRzICov CiAKIAkvKiBCYXJyaWVyLXJlbGF0ZWQgZmllbGRzIChub3QgcHJvdGVjdGVkIGJ5IHBzc19t dXRleCkgKi8KQEAgLTEyMSw3ICsxMTMsNiBAQCBOT05fRVhFQ19TVEFUSUMgUHJvY1NpZ25h bEhlYWRlciAqUHJvY1NpZ25hbCA9IE5VTEw7CiAKIHN0YXRpYyBQcm9jU2lnbmFsU2xvdCAq TXlQcm9jU2lnbmFsU2xvdCA9IE5VTEw7CiAKLXN0YXRpYyBib29sIENoZWNrUHJvY1NpZ25h bChQcm9jU2lnbmFsUmVhc29uIHJlYXNvbik7CiBzdGF0aWMgdm9pZCBDbGVhbnVwUHJvY1Np Z25hbFN0YXRlKGludCBzdGF0dXMsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBSZXNldFBy b2NTaWduYWxCYXJyaWVyQml0cyh1aW50MzIgZmxhZ3MpOwogCkBAIC0xNTUsNyArMTQ2LDYg QEAgUHJvY1NpZ25hbFNobWVtSW5pdCh2b2lkICphcmcpCiAJCVNwaW5Mb2NrSW5pdCgmc2xv dC0+cHNzX211dGV4KTsKIAkJcGdfYXRvbWljX2luaXRfdTMyKCZzbG90LT5wc3NfcGlkLCAw KTsKIAkJc2xvdC0+cHNzX2NhbmNlbF9rZXlfbGVuID0gMDsKLQkJTWVtU2V0KHNsb3QtPnBz c19zaWduYWxGbGFncywgMCwgc2l6ZW9mKHNsb3QtPnBzc19zaWduYWxGbGFncykpOwogCQlw Z19hdG9taWNfaW5pdF91NjQoJnNsb3QtPnBzc19iYXJyaWVyR2VuZXJhdGlvbiwgUEdfVUlO VDY0X01BWCk7CiAJCXBnX2F0b21pY19pbml0X3UzMigmc2xvdC0+cHNzX2JhcnJpZXJDaGVj a01hc2ssIDApOwogCQlDb25kaXRpb25WYXJpYWJsZUluaXQoJnNsb3QtPnBzc19iYXJyaWVy Q1YpOwpAQCAtMTg1LDkgKzE3NSw2IEBAIFByb2NTaWduYWxJbml0KGNvbnN0IHVpbnQ4ICpj YW5jZWxfa2V5LCBpbnQgY2FuY2VsX2tleV9sZW4pCiAJLyogVmFsdWUgdXNlZCBmb3Igc2Fu aXR5IGNoZWNrIGJlbG93ICovCiAJb2xkX3Bzc19waWQgPSBwZ19hdG9taWNfcmVhZF91MzIo JnNsb3QtPnBzc19waWQpOwogCi0JLyogQ2xlYXIgb3V0IGFueSBsZWZ0b3ZlciBzaWduYWwg cmVhc29ucyAqLwotCU1lbVNldChzbG90LT5wc3Nfc2lnbmFsRmxhZ3MsIDAsIE5VTV9QUk9D U0lHTkFMUyAqIHNpemVvZihzaWdfYXRvbWljX3QpKTsKLQogCS8qCiAJICogUHVibGlzaCB0 aGUgUElEIGJlZm9yZSByZWFkaW5nIHRoZSBnbG9iYWwgYmFycmllciBnZW5lcmF0aW9uIHRv IGVuc3VyZQogCSAqIHRoYXQgRW1pdFByb2NTaWduYWxCYXJyaWVyKCkgZG9lc24ndCBza2lw IHVzIHdoaWxlIHdlIGFyZSBncmFiYmluZyBhbgpAQCAtMjQ0LDkgKzIzMSwxMCBAQCBDbGVh bnVwUHJvY1NpZ25hbFN0YXRlKGludCBzdGF0dXMsIERhdHVtIGFyZykKIAlQcm9jU2lnbmFs U2xvdCAqc2xvdCA9IE15UHJvY1NpZ25hbFNsb3Q7CiAKIAkvKgotCSAqIENsZWFyIE15UHJv Y1NpZ25hbFNsb3QsIHNvIHRoYXQgYSBTSUdVU1IxIHJlY2VpdmVkIGFmdGVyIHRoaXMgcG9p bnQKLQkgKiB3b24ndCB0cnkgdG8gYWNjZXNzIGl0IGFmdGVyIGl0J3Mgbm8gbG9uZ2VyIG91 cnMgKGFuZCBwZXJoYXBzIGV2ZW4KLQkgKiBhZnRlciB3ZSd2ZSB1bm1hcHBlZCB0aGUgc2hh cmVkIG1lbW9yeSBzZWdtZW50KS4KKwkgKiBDbGVhciBNeVByb2NTaWduYWxTbG90LCBzbyB0 aGF0IGlmIElOVEVSUlVQVF9CQVJSSUVSIGlzIHJlY2VpdmVkIGFmdGVyCisJICogdGhpcyBw b2ludCwgUHJvY2Vzc1Byb2NTaWduYWxCYXJyaWVyKCkgd29uJ3QgdHJ5IHRvIGFjY2VzcyBp dCBhZnRlcgorCSAqIGl0J3Mgbm8gbG9uZ2VyIG91cnMgKGFuZCBwZXJoYXBzIGV2ZW4gYWZ0 ZXIgd2UndmUgdW5tYXBwZWQgdGhlIHNoYXJlZAorCSAqIG1lbW9yeSBzZWdtZW50KS4KIAkg Ki8KIAlBc3NlcnQoTXlQcm9jU2lnbmFsU2xvdCAhPSBOVUxMKTsKIAlNeVByb2NTaWduYWxT bG90ID0gTlVMTDsKQEAgLTI4MSw3MyArMjY5LDYgQEAgQ2xlYW51cFByb2NTaWduYWxTdGF0 ZShpbnQgc3RhdHVzLCBEYXR1bSBhcmcpCiAJQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3Qo JnNsb3QtPnBzc19iYXJyaWVyQ1YpOwogfQogCi0vKgotICogU2VuZFByb2NTaWduYWwKLSAq CQlTZW5kIGEgc2lnbmFsIHRvIGEgUG9zdGdyZXMgcHJvY2VzcwotICoKLSAqIFByb3ZpZGlu ZyBwcm9jTnVtYmVyIGlzIG9wdGlvbmFsLCBidXQgaXQgd2lsbCBzcGVlZCB1cCB0aGUgb3Bl cmF0aW9uLgotICoKLSAqIE9uIHN1Y2Nlc3MgKGEgc2lnbmFsIHdhcyBzZW50KSwgemVybyBp cyByZXR1cm5lZC4KLSAqIE9uIGVycm9yLCAtMSBpcyByZXR1cm5lZCwgYW5kIGVycm5vIGlz IHNldCAodHlwaWNhbGx5IHRvIEVTUkNIIG9yIEVQRVJNKS4KLSAqCi0gKiBOb3QgdG8gYmUg Y29uZnVzZWQgd2l0aCBQcm9jU2VuZFNpZ25hbAotICovCi1pbnQKLVNlbmRQcm9jU2lnbmFs KHBpZF90IHBpZCwgUHJvY1NpZ25hbFJlYXNvbiByZWFzb24sIFByb2NOdW1iZXIgcHJvY051 bWJlcikKLXsKLQl2b2xhdGlsZSBQcm9jU2lnbmFsU2xvdCAqc2xvdDsKLQotCWlmIChwcm9j TnVtYmVyICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCi0JewotCQlBc3NlcnQocHJvY051bWJl ciA8IE51bVByb2NTaWduYWxTbG90cyk7Ci0JCXNsb3QgPSAmUHJvY1NpZ25hbC0+cHNoX3Ns b3RbcHJvY051bWJlcl07Ci0KLQkJU3BpbkxvY2tBY3F1aXJlKCZzbG90LT5wc3NfbXV0ZXgp OwotCQlpZiAocGdfYXRvbWljX3JlYWRfdTMyKCZzbG90LT5wc3NfcGlkKSA9PSBwaWQpCi0J CXsKLQkJCS8qIEF0b21pY2FsbHkgc2V0IHRoZSBwcm9wZXIgZmxhZyAqLwotCQkJc2xvdC0+ cHNzX3NpZ25hbEZsYWdzW3JlYXNvbl0gPSB0cnVlOwotCQkJU3BpbkxvY2tSZWxlYXNlKCZz bG90LT5wc3NfbXV0ZXgpOwotCQkJLyogU2VuZCBzaWduYWwgKi8KLQkJCXJldHVybiBraWxs KHBpZCwgU0lHVVNSMSk7Ci0JCX0KLQkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5wc3NfbXV0 ZXgpOwotCX0KLQllbHNlCi0JewotCQkvKgotCQkgKiBwcm9jTnVtYmVyIG5vdCBwcm92aWRl ZCwgc28gc2VhcmNoIHRoZSBhcnJheSB1c2luZyBwaWQuICBXZSBzZWFyY2gKLQkJICogdGhl IGFycmF5IGJhY2sgdG8gZnJvbnQgc28gYXMgdG8gcmVkdWNlIHNlYXJjaCBvdmVyaGVhZC4g IFBhc3NpbmcKLQkJICogSU5WQUxJRF9QUk9DX05VTUJFUiBtZWFucyB0aGF0IHRoZSB0YXJn ZXQgaXMgbW9zdCBsaWtlbHkgYW4KLQkJICogYXV4aWxpYXJ5IHByb2Nlc3MsIHdoaWNoIHdp bGwgaGF2ZSBhIHNsb3QgbmVhciB0aGUgZW5kIG9mIHRoZQotCQkgKiBhcnJheS4KLQkJICov Ci0JCWludAkJCWk7Ci0KLQkJZm9yIChpID0gTnVtUHJvY1NpZ25hbFNsb3RzIC0gMTsgaSA+ PSAwOyBpLS0pCi0JCXsKLQkJCXNsb3QgPSAmUHJvY1NpZ25hbC0+cHNoX3Nsb3RbaV07Ci0K LQkJCWlmIChwZ19hdG9taWNfcmVhZF91MzIoJnNsb3QtPnBzc19waWQpID09IHBpZCkKLQkJ CXsKLQkJCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPnBzc19tdXRleCk7Ci0JCQkJaWYgKHBn X2F0b21pY19yZWFkX3UzMigmc2xvdC0+cHNzX3BpZCkgPT0gcGlkKQotCQkJCXsKLQkJCQkJ LyogQXRvbWljYWxseSBzZXQgdGhlIHByb3BlciBmbGFnICovCi0JCQkJCXNsb3QtPnBzc19z aWduYWxGbGFnc1tyZWFzb25dID0gdHJ1ZTsKLQkJCQkJU3BpbkxvY2tSZWxlYXNlKCZzbG90 LT5wc3NfbXV0ZXgpOwotCQkJCQkvKiBTZW5kIHNpZ25hbCAqLwotCQkJCQlyZXR1cm4ga2ls bChwaWQsIFNJR1VTUjEpOwotCQkJCX0KLQkJCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPnBz c19tdXRleCk7Ci0JCQl9Ci0JCX0KLQl9Ci0KLQllcnJubyA9IEVTUkNIOwotCXJldHVybiAt MTsKLX0KLQogLyoKICAqIEVtaXRQcm9jU2lnbmFsQmFycmllcgogICoJCVNlbmQgYSBzaWdu YWwgdG8gZXZlcnkgUG9zdGdyZXMgcHJvY2VzcwpAQCAtMzkyLDggKzMxMyw4IEBAIEVtaXRQ cm9jU2lnbmFsQmFycmllcihQcm9jU2lnbmFsQmFycmllclR5cGUgdHlwZSkKIAkJcGdfYXRv bWljX2FkZF9mZXRjaF91NjQoJlByb2NTaWduYWwtPnBzaF9iYXJyaWVyR2VuZXJhdGlvbiwg MSk7CiAKIAkvKgotCSAqIFNpZ25hbCBhbGwgdGhlIHByb2Nlc3Nlcywgc28gdGhhdCB0aGV5 IHVwZGF0ZSB0aGVpciBhZHZlcnRpc2VkIGJhcnJpZXIKLQkgKiBnZW5lcmF0aW9uLgorCSAq IFNlbmQgYW4gaW50ZXJydXB0IHRvIGFsbCB0aGUgcHJvY2Vzc2VzLCBzbyB0aGF0IHRoZXkg dXBkYXRlIHRoZWlyCisJICogYWR2ZXJ0aXNlZCBiYXJyaWVyIGdlbmVyYXRpb24uCiAJICoK IAkgKiBDb25jdXJyZW5jeSBpcyBub3QgYSBwcm9ibGVtIGhlcmUuIEJhY2tlbmRzIHRoYXQg aGF2ZSBleGl0ZWQgZG9uJ3QKIAkgKiBtYXR0ZXIsIGFuZCBuZXcgYmFja2VuZHMgdGhhdCBo YXZlIGpvaW5lZCBzaW5jZSB3ZSBlbnRlcmVkIHRoaXMKQEAgLTQwNCwyNSArMzI1LDEyIEBA IEVtaXRQcm9jU2lnbmFsQmFycmllcihQcm9jU2lnbmFsQmFycmllclR5cGUgdHlwZSkKIAkg KiBiYWNrZW5kcyB0aGF0IG5lZWQgdG8gdXBkYXRlIHN0YXRlIC0gYnV0IHRoZXkgd29uJ3Qg YWN0dWFsbHkgbmVlZCB0bwogCSAqIGNoYW5nZSBhbnkgc3RhdGUuCiAJICovCi0JZm9yIChp bnQgaSA9IE51bVByb2NTaWduYWxTbG90cyAtIDE7IGkgPj0gMDsgaS0tKQorCWZvciAoUHJv Y051bWJlciBwZ3Byb2NubyA9IDA7IHBncHJvY25vIDwgTnVtUHJvY1NpZ25hbFNsb3RzOyBw Z3Byb2NubysrKQogCXsKLQkJdm9sYXRpbGUgUHJvY1NpZ25hbFNsb3QgKnNsb3QgPSAmUHJv Y1NpZ25hbC0+cHNoX3Nsb3RbaV07Ci0JCXBpZF90CQlwaWQgPSBwZ19hdG9taWNfcmVhZF91 MzIoJnNsb3QtPnBzc19waWQpOwotCi0JCWlmIChwaWQgIT0gMCkKLQkJewotCQkJU3Bpbkxv Y2tBY3F1aXJlKCZzbG90LT5wc3NfbXV0ZXgpOwotCQkJcGlkID0gcGdfYXRvbWljX3JlYWRf dTMyKCZzbG90LT5wc3NfcGlkKTsKLQkJCWlmIChwaWQgIT0gMCkKLQkJCXsKLQkJCQkvKiBz ZWUgU2VuZFByb2NTaWduYWwgZm9yIGRldGFpbHMgKi8KLQkJCQlzbG90LT5wc3Nfc2lnbmFs RmxhZ3NbUFJPQ1NJR19CQVJSSUVSXSA9IHRydWU7Ci0JCQkJU3BpbkxvY2tSZWxlYXNlKCZz bG90LT5wc3NfbXV0ZXgpOwotCQkJCWtpbGwocGlkLCBTSUdVU1IxKTsKLQkJCX0KLQkJCWVs c2UKLQkJCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPnBzc19tdXRleCk7Ci0JCX0KKwkJaWYg KHBncHJvY25vID09IE15UHJvY051bWJlcikKKwkJCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQ VF9CQVJSSUVSKTsKKwkJZWxzZQorCQkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfQkFSUklF UiwgcGdwcm9jbm8pOwogCX0KIAogCXJldHVybiBnZW5lcmF0aW9uOwpAQCAtNDgyLDIzICsz OTAsNiBAQCBXYWl0Rm9yUHJvY1NpZ25hbEJhcnJpZXIodWludDY0IGdlbmVyYXRpb24pCiAJ cGdfbWVtb3J5X2JhcnJpZXIoKTsKIH0KIAotLyoKLSAqIEhhbmRsZSByZWNlaXB0IG9mIGFu IGludGVycnVwdCBpbmRpY2F0aW5nIGEgZ2xvYmFsIGJhcnJpZXIgZXZlbnQuCi0gKgotICog QWxsIHRoZSBhY3R1YWwgd29yayBpcyBkZWZlcnJlZCB0byBQcm9jZXNzUHJvY1NpZ25hbEJh cnJpZXIoKSwgYmVjYXVzZSB3ZQotICogY2Fubm90IHNhZmVseSBhY2Nlc3MgdGhlIGJhcnJp ZXIgZ2VuZXJhdGlvbiBpbnNpZGUgdGhlIHNpZ25hbCBoYW5kbGVyIGFzCi0gKiA2NGJpdCBh dG9taWNzIG1pZ2h0IHVzZSBzcGlubG9jayBiYXNlZCBlbXVsYXRpb24sIGV2ZW4gZm9yIHJl YWRzLiBBcyB0aGlzCi0gKiByb3V0aW5lIG9ubHkgZ2V0cyBjYWxsZWQgd2hlbiBQUk9DU0lH X0JBUlJJRVIgaXMgc2VudCB0aGF0IHdvbid0IGNhdXNlIGEKLSAqIGxvdCBvZiB1bm5lY2Vz c2FyeSB3b3JrLgotICovCi1zdGF0aWMgdm9pZAotSGFuZGxlUHJvY1NpZ25hbEJhcnJpZXJJ bnRlcnJ1cHQodm9pZCkKLXsKLQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQlQcm9jU2ln bmFsQmFycmllclBlbmRpbmcgPSB0cnVlOwotCS8qIGxhdGNoIHdpbGwgYmUgc2V0IGJ5IHBy b2NzaWduYWxfc2lndXNyMV9oYW5kbGVyICovCi19Ci0KIC8qCiAgKiBQZXJmb3JtIGdsb2Jh bCBiYXJyaWVyIHJlbGF0ZWQgaW50ZXJydXB0IGNoZWNraW5nLgogICoKQEAgLTUxNCwxMiAr NDA1LDggQEAgUHJvY2Vzc1Byb2NTaWduYWxCYXJyaWVyKHZvaWQpCiAJdWludDY0CQlzaGFy ZWRfZ2VuOwogCXZvbGF0aWxlIHVpbnQzMiBmbGFnczsKIAotCUFzc2VydChNeVByb2NTaWdu YWxTbG90KTsKLQotCS8qIEV4aXQgcXVpY2tseSBpZiB0aGVyZSdzIG5vIHdvcmsgdG8gZG8u ICovCi0JaWYgKCFQcm9jU2lnbmFsQmFycmllclBlbmRpbmcpCisJaWYgKE15UHJvY1NpZ25h bFNsb3QgPT0gTlVMTCkKIAkJcmV0dXJuOwotCVByb2NTaWduYWxCYXJyaWVyUGVuZGluZyA9 IGZhbHNlOwogCiAJLyoKIAkgKiBJdCdzIG5vdCB1bmxpa2VseSB0byBwcm9jZXNzIG11bHRp cGxlIGJhcnJpZXJzIGF0IG9uY2UsIGJlZm9yZSB0aGUKQEAgLTY1OCw2OCArNTQ1LDcgQEAg c3RhdGljIHZvaWQKIFJlc2V0UHJvY1NpZ25hbEJhcnJpZXJCaXRzKHVpbnQzMiBmbGFncykK IHsKIAlwZ19hdG9taWNfZmV0Y2hfb3JfdTMyKCZNeVByb2NTaWduYWxTbG90LT5wc3NfYmFy cmllckNoZWNrTWFzaywgZmxhZ3MpOwotCVByb2NTaWduYWxCYXJyaWVyUGVuZGluZyA9IHRy dWU7Ci0JSW50ZXJydXB0UGVuZGluZyA9IHRydWU7Ci19Ci0KLS8qCi0gKiBDaGVja1Byb2NT aWduYWwgLSBjaGVjayB0byBzZWUgaWYgYSBwYXJ0aWN1bGFyIHJlYXNvbiBoYXMgYmVlbgot ICogc2lnbmFsZWQsIGFuZCBjbGVhciB0aGUgc2lnbmFsIGZsYWcuICBTaG91bGQgYmUgY2Fs bGVkIGFmdGVyIHJlY2VpdmluZwotICogU0lHVVNSMS4KLSAqLwotc3RhdGljIGJvb2wKLUNo ZWNrUHJvY1NpZ25hbChQcm9jU2lnbmFsUmVhc29uIHJlYXNvbikKLXsKLQl2b2xhdGlsZSBQ cm9jU2lnbmFsU2xvdCAqc2xvdCA9IE15UHJvY1NpZ25hbFNsb3Q7Ci0KLQlpZiAoc2xvdCAh PSBOVUxMKQotCXsKLQkJLyoKLQkJICogQ2FyZWZ1bCBoZXJlIC0tLSBkb24ndCBjbGVhciBm bGFnIGlmIHdlIGhhdmVuJ3Qgc2VlbiBpdCBzZXQuCi0JCSAqIHBzc19zaWduYWxGbGFncyBp cyBvZiB0eXBlICJ2b2xhdGlsZSBzaWdfYXRvbWljX3QiIHRvIGFsbG93IHVzIHRvCi0JCSAq IHJlYWQgaXQgaGVyZSBzYWZlbHksIHdpdGhvdXQgaG9sZGluZyB0aGUgc3BpbmxvY2suCi0J CSAqLwotCQlpZiAoc2xvdC0+cHNzX3NpZ25hbEZsYWdzW3JlYXNvbl0pCi0JCXsKLQkJCXNs b3QtPnBzc19zaWduYWxGbGFnc1tyZWFzb25dID0gZmFsc2U7Ci0JCQlyZXR1cm4gdHJ1ZTsK LQkJfQotCX0KLQotCXJldHVybiBmYWxzZTsKLX0KLQotLyoKLSAqIHByb2NzaWduYWxfc2ln dXNyMV9oYW5kbGVyIC0gaGFuZGxlIFNJR1VTUjEgc2lnbmFsLgotICovCi12b2lkCi1wcm9j c2lnbmFsX3NpZ3VzcjFfaGFuZGxlcihTSUdOQUxfQVJHUykKLXsKLQlpZiAoQ2hlY2tQcm9j U2lnbmFsKFBST0NTSUdfQ0FUQ0hVUF9JTlRFUlJVUFQpKQotCQlIYW5kbGVDYXRjaHVwSW50 ZXJydXB0KCk7Ci0KLQlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfTk9USUZZX0lOVEVS UlVQVCkpCi0JCUhhbmRsZU5vdGlmeUludGVycnVwdCgpOwotCi0JaWYgKENoZWNrUHJvY1Np Z25hbChQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UpKQotCQlIYW5kbGVQYXJhbGxlbE1lc3Nh Z2VJbnRlcnJ1cHQoKTsKLQotCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19XQUxTTkRf SU5JVF9TVE9QUElORykpCi0JCUhhbmRsZVdhbFNuZEluaXRTdG9wcGluZygpOwotCi0JaWYg KENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX0JBUlJJRVIpKQotCQlIYW5kbGVQcm9jU2lnbmFs QmFycmllckludGVycnVwdCgpOwotCi0JaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX0xP R19NRU1PUllfQ09OVEVYVCkpCi0JCUhhbmRsZUxvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQo KTsKLQotCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19TTE9UU1lOQ19NRVNTQUdFKSkK LQkJSGFuZGxlU2xvdFN5bmNNZXNzYWdlSW50ZXJydXB0KCk7Ci0KLQlpZiAoQ2hlY2tQcm9j U2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1QpKQotCQlIYW5kbGVSZWNvdmVyeUNv bmZsaWN0SW50ZXJydXB0KCk7Ci0KLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVy cnVwdChJTlRFUlJVUFRfQkFSUklFUik7CiB9CiAKIC8qCkBAIC03NzgsNiArNjA0LDEwIEBA IFNlbmRDYW5jZWxSZXF1ZXN0KGludCBiYWNrZW5kUElELCBjb25zdCB1aW50OCAqY2FuY2Vs X2tleSwgaW50IGNhbmNlbF9rZXlfbGVuKQogCQkJCS8qCiAJCQkJICogSWYgd2UgaGF2ZSBz ZXRzaWQoKSwgc2lnbmFsIHRoZSBiYWNrZW5kJ3Mgd2hvbGUgcHJvY2VzcwogCQkJCSAqIGdy b3VwCisJCQkJICoKKwkJCQkgKiBYWFg6IGNvdWxkIHdlIHNlbmQgSU5URVJSVVBUX1FVRVJZ X0NBTkNFTCBoZXJlIGRpcmVjdGx5PyBXZQorCQkJCSAqIGRvbid0IGhhdmUgYSBQR1BST0Mg ZW50cnkgeWV0LCBidXQgdGhlIHRhcmdldCBiYWNrZW5kCisJCQkJICogcHJlc3VtYWJseSBk b2VzLgogCQkJCSAqLwogI2lmZGVmIEhBVkVfU0VUU0lECiAJCQkJa2lsbCgtYmFja2VuZFBJ RCwgU0lHSU5UKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobV9t cS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htX21xLmMKaW5kZXggZWYwMTk1Zjlj ZmEuLjI2MDdiYWU5YTNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9z aG1fbXEuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1fbXEuYwpAQCAtNCw3 ICs0LDcgQEAKICAqCSAgc2luZ2xlLXJlYWRlciwgc2luZ2xlLXdyaXRlciBzaGFyZWQgbWVt b3J5IG1lc3NhZ2UgcXVldWUKICAqCiAgKiBCb3RoIHRoZSBzZW5kZXIgYW5kIHRoZSByZWNl aXZlciBtdXN0IGhhdmUgYSBQR1BST0M7IHRoZWlyIHJlc3BlY3RpdmUKLSAqIHByb2Nlc3Mg bGF0Y2hlcyBhcmUgdXNlZCBmb3Igc3luY2hyb25pemF0aW9uLiAgT25seSB0aGUgc2VuZGVy IG1heSBzZW5kLAorICogcHJvY2VzcyBpbnRlcnJ1cHRzIGFyZSB1c2VkIGZvciBzeW5jaHJv bml6YXRpb24uICBPbmx5IHRoZSBzZW5kZXIgbWF5IHNlbmQsCiAgKiBhbmQgb25seSB0aGUg cmVjZWl2ZXIgbWF5IHJlY2VpdmUuICBUaGlzIGlzIGludGVuZGVkIHRvIGFsbG93IGEgdXNl cgogICogYmFja2VuZCB0byBjb21tdW5pY2F0ZSB3aXRoIHdvcmtlciBiYWNrZW5kcyB0aGF0 IGl0IGhhcyByZWdpc3RlcmVkLgogICoKQEAgLTQ2LDEwICs0NiwxMSBAQAogICoKICAqIG1x X2RldGFjaGVkIG5lZWRzIG5vIGxvY2tpbmcuICBJdCBjYW4gYmUgc2V0IGJ5IGVpdGhlciB0 aGUgc2VuZGVyIG9yIHRoZQogICogcmVjZWl2ZXIsIGJ1dCBvbmx5IGV2ZXIgZnJvbSBmYWxz ZSB0byB0cnVlLCBzbyByZWR1bmRhbnQgd3JpdGVzIGRvbid0Ci0gKiBtYXR0ZXIuICBJdCBp cyBpbXBvcnRhbnQgdGhhdCBpZiB3ZSBzZXQgbXFfZGV0YWNoZWQgYW5kIHRoZW4gc2V0IHRo ZQotICogY291bnRlcnBhcnR5J3MgbGF0Y2gsIHRoZSBjb3VudGVycGFydHkgbXVzdCBiZSBj ZXJ0YWluIHRvIHNlZSB0aGUgY2hhbmdlCi0gKiBhZnRlciB3YWtpbmcgdXAuICBTaW5jZSBT ZXRMYXRjaCBiZWdpbnMgd2l0aCBhIG1lbW9yeSBiYXJyaWVyIGFuZCBSZXNldExhdGNoCi0g KiBlbmRzIHdpdGggb25lLCB0aGlzIHNob3VsZCBiZSBPSy4KKyAqIG1hdHRlci4gIEl0IGlz IGltcG9ydGFudCB0aGF0IGlmIHdlIHNldCBtcV9kZXRhY2hlZCBhbmQgdGhlbiBzZW5kIHRo ZQorICogaW50ZXJydXB0IHRvIHRoZSBjb3VudGVycGFydHksIHRoZSBjb3VudGVycGFydHkg bXVzdCBiZSBjZXJ0YWluIHRvIHNlZSB0aGUKKyAqIGNoYW5nZSBhZnRlciB3YWtpbmcgdXAu ICBTaW5jZSBTZW5kSW50ZXJydXB0IGJlZ2lucyB3aXRoIGEgbWVtb3J5IGJhcnJpZXIKKyAq IGFuZCBDbGVhckludGVycnVwdCBlbmRzIHdpdGggb25lLCB0aGlzIHNob3VsZCBiZSBPSy4K KyAqIFhYWDogTm8gZXhwbGljaXQgbWVtb3J5IGJhcnJpZXJzIGluIFNlbmRJbnRlcnJ1cHQv Q2xlYXJJbnRlcnJ1cHQsIGRvIHdlIG5lZWQgdG8gYWRkIHNvbWU/CiAgKgogICogbXFfcmlu Z19zaXplIGFuZCBtcV9yaW5nX29mZnNldCBuZXZlciBjaGFuZ2UgYWZ0ZXIgaW5pdGlhbGl6 YXRpb24sIGFuZAogICogY2FuIHRoZXJlZm9yZSBiZSByZWFkIHdpdGhvdXQgdGhlIGxvY2su CkBAIC0xMTQsNyArMTE1LDcgQEAgc3RydWN0IHNobV9tcQogICogeWV0IHVwZGF0ZWQgaW4g dGhlIHNoYXJlZCBtZW1vcnkuICBXZSB3aWxsIG5vdCB1cGRhdGUgaXQgdW50aWwgdGhlIHdy aXR0ZW4KICAqIGRhdGEgaXMgMS80dGggb2YgdGhlIHJpbmcgc2l6ZSBvciB0aGUgdHVwbGUg cXVldWUgaXMgZnVsbC4gIFRoaXMgd2lsbAogICogcHJldmVudCBmcmVxdWVudCBDUFUgY2Fj aGUgbWlzc2VzLCBhbmQgaXQgd2lsbCBhbHNvIGF2b2lkIGZyZXF1ZW50Ci0gKiBTZXRMYXRj aCgpIGNhbGxzLCB3aGljaCBhcmUgcXVpdGUgZXhwZW5zaXZlLgorICogU2VuZEludGVycnVw dCgpIGNhbGxzLCB3aGljaCBhcmUgcXVpdGUgZXhwZW5zaXZlLgogICoKICAqIG1xaF9wYXJ0 aWFsX2J5dGVzLCBtcWhfZXhwZWN0ZWRfYnl0ZXMsIGFuZCBtcWhfbGVuZ3RoX3dvcmRfY29t cGxldGUKICAqIGFyZSB1c2VkIHRvIHRyYWNrIHRoZSBzdGF0ZSBvZiBub24tYmxvY2tpbmcg b3BlcmF0aW9ucy4gIFdoZW4gdGhlIGNhbGxlcgpAQCAtMjE2LDcgKzIxNyw3IEBAIHNobV9t cV9zZXRfcmVjZWl2ZXIoc2htX21xICptcSwgUEdQUk9DICpwcm9jKQogCVNwaW5Mb2NrUmVs ZWFzZSgmbXEtPm1xX211dGV4KTsKIAogCWlmIChzZW5kZXIgIT0gTlVMTCkKLQkJU2V0TGF0 Y2goJnNlbmRlci0+cHJvY0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FJ VF9XQUtFVVAsIEdldE51bWJlckZyb21QR1Byb2Moc2VuZGVyKSk7CiB9CiAKIC8qCkBAIC0y MzQsNyArMjM1LDcgQEAgc2htX21xX3NldF9zZW5kZXIoc2htX21xICptcSwgUEdQUk9DICpw cm9jKQogCVNwaW5Mb2NrUmVsZWFzZSgmbXEtPm1xX211dGV4KTsKIAogCWlmIChyZWNlaXZl ciAhPSBOVUxMKQotCQlTZXRMYXRjaCgmcmVjZWl2ZXItPnByb2NMYXRjaCk7CisJCVNlbmRJ bnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKHJl Y2VpdmVyKSk7CiB9CiAKIC8qCkBAIC0zNDMsMTYgKzM0NCwxNSBAQCBzaG1fbXFfc2VuZChz aG1fbXFfaGFuZGxlICptcWgsIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhLCBib29s IG5vd2FpdCwKICAqIFdyaXRlIGEgbWVzc2FnZSBpbnRvIGEgc2hhcmVkIG1lc3NhZ2UgcXVl dWUsIGdhdGhlcmVkIGZyb20gbXVsdGlwbGUKICAqIGFkZHJlc3Nlcy4KICAqCi0gKiBXaGVu IG5vd2FpdCA9IGZhbHNlLCB3ZSdsbCB3YWl0IG9uIG91ciBwcm9jZXNzIGxhdGNoIHdoZW4g dGhlIHJpbmcgYnVmZmVyCi0gKiBmaWxscyB1cCwgYW5kIHRoZW4gY29udGludWUgd3JpdGlu ZyBvbmNlIHRoZSByZWNlaXZlciBoYXMgZHJhaW5lZCBzb21lIGRhdGEuCi0gKiBUaGUgcHJv Y2VzcyBsYXRjaCBpcyByZXNldCBhZnRlciBlYWNoIHdhaXQuCisgKiBXaGVuIG5vd2FpdCA9 IGZhbHNlLCB3ZSdsbCB3YWl0IHdoZW4gdGhlIHJpbmcgYnVmZmVyIGZpbGxzIHVwLCBhbmQg dGhlbgorICogY29udGludWUgd3JpdGluZyBvbmNlIHRoZSByZWNlaXZlciBoYXMgZHJhaW5l ZCBzb21lIGRhdGEuCiAgKgotICogV2hlbiBub3dhaXQgPSB0cnVlLCB3ZSBkbyBub3QgbWFu aXB1bGF0ZSB0aGUgc3RhdGUgb2YgdGhlIHByb2Nlc3MgbGF0Y2g7Ci0gKiBpbnN0ZWFkLCBp ZiB0aGUgYnVmZmVyIGJlY29tZXMgZnVsbCwgd2UgcmV0dXJuIFNITV9NUV9XT1VMRF9CTE9D Sy4gIEluCi0gKiB0aGlzIGNhc2UsIHRoZSBjYWxsZXIgc2hvdWxkIGNhbGwgdGhpcyBmdW5j dGlvbiBhZ2Fpbiwgd2l0aCB0aGUgc2FtZQotICogYXJndW1lbnRzLCBlYWNoIHRpbWUgdGhl IHByb2Nlc3MgbGF0Y2ggaXMgc2V0LiAgKE9uY2UgYmVndW4sIHRoZSBzZW5kaW5nCi0gKiBv ZiBhIG1lc3NhZ2UgY2Fubm90IGJlIGFib3J0ZWQgZXhjZXB0IGJ5IGRldGFjaGluZyBmcm9t IHRoZSBxdWV1ZTsgY2hhbmdpbmcKLSAqIHRoZSBsZW5ndGggb3IgcGF5bG9hZCB3aWxsIGNv cnJ1cHQgdGhlIHF1ZXVlLikKKyAqIFdoZW4gbm93YWl0ID0gdHJ1ZSwgaWYgdGhlIGJ1ZmZl ciBiZWNvbWVzIGZ1bGwsIHdlIHJldHVybgorICogU0hNX01RX1dPVUxEX0JMT0NLLiAgSW4g dGhpcyBjYXNlLCB0aGUgY2FsbGVyIHNob3VsZCBjYWxsIHRoaXMgZnVuY3Rpb24KKyAqIGFn YWluLCB3aXRoIHRoZSBzYW1lIGFyZ3VtZW50cywgZWFjaCB0aW1lIHRoZSBJTlRFUlJVUFRf V0FJVF9XQUtFVVAKKyAqIGludGVycnVwdCBpcyBzZXQuICAoT25jZSBiZWd1biwgdGhlIHNl bmRpbmcgb2YgYSBtZXNzYWdlIGNhbm5vdCBiZSBhYm9ydGVkCisgKiBleGNlcHQgYnkgZGV0 YWNoaW5nIGZyb20gdGhlIHF1ZXVlOyBjaGFuZ2luZyB0aGUgbGVuZ3RoIG9yIHBheWxvYWQg d2lsbAorICogY29ycnVwdCB0aGUgcXVldWUuKQogICoKICAqIFdoZW4gZm9yY2VfZmx1c2gg PSB0cnVlLCB3ZSBpbW1lZGlhdGVseSB1cGRhdGUgdGhlIHNobV9tcSdzIG1xX2J5dGVzX3dy aXR0ZW4KICAqIGFuZCBub3RpZnkgdGhlIHJlY2VpdmVyIChpZiBpdCBpcyBhbHJlYWR5IGF0 dGFjaGVkKS4gIE90aGVyd2lzZSwgd2UgZG9uJ3QKQEAgLTU0MSw3ICs1NDEsNyBAQCBzaG1f bXFfc2VuZHYoc2htX21xX2hhbmRsZSAqbXFoLCBzaG1fbXFfaW92ZWMgKmlvdiwgaW50IGlv dmNudCwgYm9vbCBub3dhaXQsCiAJewogCQlzaG1fbXFfaW5jX2J5dGVzX3dyaXR0ZW4obXEs IG1xaC0+bXFoX3NlbmRfcGVuZGluZyk7CiAJCWlmIChyZWNlaXZlciAhPSBOVUxMKQotCQkJ U2V0TGF0Y2goJnJlY2VpdmVyLT5wcm9jTGF0Y2gpOworCQkJU2VuZEludGVycnVwdChJTlRF UlJVUFRfV0FJVF9XQUtFVVAsIEdldE51bWJlckZyb21QR1Byb2MocmVjZWl2ZXIpKTsKIAkJ bXFoLT5tcWhfc2VuZF9wZW5kaW5nID0gMDsKIAl9CiAKQEAgLTU1OSwxNiArNTU5LDE1IEBA IHNobV9tcV9zZW5kdihzaG1fbXFfaGFuZGxlICptcWgsIHNobV9tcV9pb3ZlYyAqaW92LCBp bnQgaW92Y250LCBib29sIG5vd2FpdCwKICAqIHdoaWxlIHN0aWxsIGFsbG93aW5nIGxvbmdl ciBtZXNzYWdlcy4gIEluIGVpdGhlciBjYXNlLCB0aGUgcmV0dXJuIHZhbHVlCiAgKiByZW1h aW5zIHZhbGlkIHVudGlsIHRoZSBuZXh0IHJlY2VpdmUgb3BlcmF0aW9uIGlzIHBlcmZvcm1l ZCBvbiB0aGUgcXVldWUuCiAgKgotICogV2hlbiBub3dhaXQgPSBmYWxzZSwgd2UnbGwgd2Fp dCBvbiBvdXIgcHJvY2VzcyBsYXRjaCB3aGVuIHRoZSByaW5nIGJ1ZmZlcgotICogaXMgZW1w dHkgYW5kIHdlIGhhdmUgbm90IHlldCByZWNlaXZlZCBhIGZ1bGwgbWVzc2FnZS4gIFRoZSBz ZW5kZXIgd2lsbAotICogc2V0IG91ciBwcm9jZXNzIGxhdGNoIGFmdGVyIG1vcmUgZGF0YSBo YXMgYmVlbiB3cml0dGVuLCBhbmQgd2UnbGwgcmVzdW1lCi0gKiBwcm9jZXNzaW5nLiAgRWFj aCBjYWxsIHdpbGwgdGhlcmVmb3JlIHJldHVybiBhIGNvbXBsZXRlIG1lc3NhZ2UKLSAqICh1 bmxlc3MgdGhlIHNlbmRlciBkZXRhY2hlcyB0aGUgcXVldWUpLgorICogV2hlbiBub3dhaXQg PSBmYWxzZSwgd2UnbGwgd2hlbiB0aGUgcmluZyBidWZmZXIgaXMgZW1wdHkgYW5kIHdlIGhh dmUgbm90CisgKiB5ZXQgcmVjZWl2ZWQgYSBmdWxsIG1lc3NhZ2UuICBUaGUgc2VuZGVyIHdp bGwgc2VuZCB1cyBJTlRFUlJVUFRfV0FJVF9XQUtFVVAKKyAqIGFmdGVyIG1vcmUgZGF0YSBo YXMgYmVlbiB3cml0dGVuLCBhbmQgd2UnbGwgcmVzdW1lIHByb2Nlc3NpbmcuICBFYWNoIGNh bGwKKyAqIHdpbGwgdGhlcmVmb3JlIHJldHVybiBhIGNvbXBsZXRlIG1lc3NhZ2UgKHVubGVz cyB0aGUgc2VuZGVyIGRldGFjaGVzIHRoZQorICogcXVldWUpLgogICoKLSAqIFdoZW4gbm93 YWl0ID0gdHJ1ZSwgd2UgZG8gbm90IG1hbmlwdWxhdGUgdGhlIHN0YXRlIG9mIHRoZSBwcm9j ZXNzIGxhdGNoOwotICogaW5zdGVhZCwgd2hlbmV2ZXIgdGhlIGJ1ZmZlciBpcyBlbXB0eSBh bmQgd2UgbmVlZCB0byByZWFkIGZyb20gaXQsIHdlCi0gKiByZXR1cm4gU0hNX01RX1dPVUxE X0JMT0NLLiAgSW4gdGhpcyBjYXNlLCB0aGUgY2FsbGVyIHNob3VsZCBjYWxsIHRoaXMKLSAq IGZ1bmN0aW9uIGFnYWluIGFmdGVyIHRoZSBwcm9jZXNzIGxhdGNoIGhhcyBiZWVuIHNldC4K KyAqIFdoZW4gbm93YWl0ID0gdHJ1ZSwgd2UgZG8gbm90IHdhaXQgd2hlbiB0aGUgYnVmZmVy IGlzIGVtcHR5IGFuZCByZXR1cm4KKyAqIFNITV9NUV9XT1VMRF9CTE9DSyBpbnN0ZWFkLiAg SW4gdGhpcyBjYXNlLCB0aGUgY2FsbGVyIHNob3VsZCBjYWxsIHRoaXMKKyAqIGZ1bmN0aW9u IGFnYWluIGFmdGVyIElOVEVSUlVQVF9XQUlUX1dBS0VVUCBoYXMgYmVlbiBzZXQuCiAgKi8K IHNobV9tcV9yZXN1bHQKIHNobV9tcV9yZWNlaXZlKHNobV9tcV9oYW5kbGUgKm1xaCwgU2l6 ZSAqbmJ5dGVzcCwgdm9pZCAqKmRhdGFwLCBib29sIG5vd2FpdCkKQEAgLTYyMSw4ICs2MjAs OCBAQCBzaG1fbXFfcmVjZWl2ZShzaG1fbXFfaGFuZGxlICptcWgsIFNpemUgKm5ieXRlc3As IHZvaWQgKipkYXRhcCwgYm9vbCBub3dhaXQpCiAJICogSWYgd2UndmUgY29uc3VtZWQgYW4g YW1vdW50IG9mIGRhdGEgZ3JlYXRlciB0aGFuIDEvNHRoIG9mIHRoZSByaW5nCiAJICogc2l6 ZSwgbWFyayBpdCBjb25zdW1lZCBpbiBzaGFyZWQgbWVtb3J5LiAgV2UgdHJ5IHRvIGF2b2lk IGRvaW5nIHRoaXMKIAkgKiB1bm5lY2Vzc2FyaWx5IHdoZW4gb25seSBhIHNtYWxsIGFtb3Vu dCBvZiBkYXRhIGhhcyBiZWVuIGNvbnN1bWVkLAotCSAqIGJlY2F1c2UgU2V0TGF0Y2goKSBp cyBmYWlybHkgZXhwZW5zaXZlIGFuZCB3ZSBkb24ndCB3YW50IHRvIGRvIGl0IHRvbwotCSAq IG9mdGVuLgorCSAqIGJlY2F1c2UgU2VuZEludGVycnVwdCgpIGlzIGZhaXJseSBleHBlbnNp dmUgYW5kIHdlIGRvbid0IHdhbnQgdG8gZG8gaXQKKwkgKiB0b28gb2Z0ZW4uCiAJICovCiAJ aWYgKG1xaC0+bXFoX2NvbnN1bWVfcGVuZGluZyA+IG1xLT5tcV9yaW5nX3NpemUgLyA0KQog CXsKQEAgLTg5Nyw3ICs4OTYsNyBAQCBzaG1fbXFfZGV0YWNoX2ludGVybmFsKHNobV9tcSAq bXEpCiAJU3BpbkxvY2tSZWxlYXNlKCZtcS0+bXFfbXV0ZXgpOwogCiAJaWYgKHZpY3RpbSAh PSBOVUxMKQotCQlTZXRMYXRjaCgmdmljdGltLT5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJy dXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgR2V0TnVtYmVyRnJvbVBHUHJvYyh2aWN0aW0p KTsKIH0KIAogLyoKQEAgLTk5NSw3ICs5OTQsNyBAQCBzaG1fbXFfc2VuZF9ieXRlcyhzaG1f bXFfaGFuZGxlICptcWgsIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhLAogCQkJICog VGhlcmVmb3JlLCB3ZSBjYW4gcmVhZCBpdCB3aXRob3V0IGFjcXVpcmluZyB0aGUgc3Bpbmxv Y2suCiAJCQkgKi8KIAkJCUFzc2VydChtcWgtPm1xaF9jb3VudGVycGFydHlfYXR0YWNoZWQp OwotCQkJU2V0TGF0Y2goJm1xLT5tcV9yZWNlaXZlci0+cHJvY0xhdGNoKTsKKwkJCVNlbmRJ bnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKG1x LT5tcV9yZWNlaXZlcikpOwogCiAJCQkvKgogCQkJICogV2UgaGF2ZSBqdXN0IHVwZGF0ZWQg dGhlIG1xaF9zZW5kX3BlbmRpbmcgYnl0ZXMgaW4gdGhlIHNoYXJlZApAQCAtMTAwMyw3ICsx MDAyLDcgQEAgc2htX21xX3NlbmRfYnl0ZXMoc2htX21xX2hhbmRsZSAqbXFoLCBTaXplIG5i eXRlcywgY29uc3Qgdm9pZCAqZGF0YSwKIAkJCSAqLwogCQkJbXFoLT5tcWhfc2VuZF9wZW5k aW5nID0gMDsKIAotCQkJLyogU2tpcCBtYW5pcHVsYXRpb24gb2Ygb3VyIGxhdGNoIGlmIG5v d2FpdCA9IHRydWUuICovCisJCQkvKiBTa2lwIHdhaXRpbmcgaWYgbm93YWl0ID0gdHJ1ZS4g Ki8KIAkJCWlmIChub3dhaXQpCiAJCQl7CiAJCQkJKmJ5dGVzX3dyaXR0ZW4gPSBzZW50OwpA QCAtMTAxMSwxNyArMTAxMCwxOCBAQCBzaG1fbXFfc2VuZF9ieXRlcyhzaG1fbXFfaGFuZGxl ICptcWgsIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhLAogCQkJfQogCiAJCQkvKgot CQkJICogV2FpdCBmb3Igb3VyIGxhdGNoIHRvIGJlIHNldC4gIEl0IG1pZ2h0IGFscmVhZHkg YmUgc2V0IGZvciBzb21lCisJCQkgKiBXYWl0IGZvciB0aGUgaW50ZXJydXB0LiAgSXQgbWln aHQgYWxyZWFkeSBiZSBzZXQgZm9yIHNvbWUKIAkJCSAqIHVucmVsYXRlZCByZWFzb24sIGJ1 dCB0aGF0J2xsIGp1c3QgcmVzdWx0IGluIG9uZSBleHRyYSB0cmlwCi0JCQkgKiB0aHJvdWdo IHRoZSBsb29wLiAgSXQncyB3b3J0aCBpdCB0byBhdm9pZCByZXNldHRpbmcgdGhlIGxhdGNo Ci0JCQkgKiBhdCB0b3Agb2YgbG9vcCwgYmVjYXVzZSBzZXR0aW5nIGFuIGFscmVhZHktc2V0 IGxhdGNoIGlzIG11Y2gKLQkJCSAqIGNoZWFwZXIgdGhhbiBzZXR0aW5nIG9uZSB0aGF0IGhh cyBiZWVuIHJlc2V0LgorCQkJICogdGhyb3VnaCB0aGUgbG9vcC4gIEl0J3Mgd29ydGggaXQg dG8gYXZvaWQgY2xlYXJpbmcgdGhlCisJCQkgKiBpbnRlcnJ1cHQgYXQgdG9wIG9mIGxvb3As IGJlY2F1c2Ugc2V0dGluZyBhbiBhbHJlYWR5LXNldAorCQkJICogaW50ZXJydXB0IGlzIG11 Y2ggY2hlYXBlciB0aGFuIHNldHRpbmcgb25lIHRoYXQgaGFzIGJlZW4gcmVzZXQuCiAJCQkg Ki8KLQkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJ VF9PTl9QTV9ERUFUSCwgMCwKLQkJCQkJCQkgV0FJVF9FVkVOVF9NRVNTQUdFX1FVRVVFX1NF TkQpOworCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8 IElOVEVSUlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsIDAsCisJCQkJCQkJCSBXQUlUX0VWRU5UX01FU1NBR0VfUVVFVUVf U0VORCk7CiAKLQkJCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGluLiAqLwot CQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCS8qIENsZWFyIHRoZSBpbnRlcnJ1cHQgc28g d2UgZG9uJ3Qgc3Bpbi4gKi8KKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dB S0VVUCk7CiAKIAkJCS8qIEFuIGludGVycnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3 ZSB3ZXJlIHdhaXRpbmcuICovCiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwpAQCAtMTA1 Niw3ICsxMDU2LDcgQEAgc2htX21xX3NlbmRfYnl0ZXMoc2htX21xX2hhbmRsZSAqbXFoLCBT aXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSwKIAogCQkJLyoKIAkJCSAqIEZvciBlZmZp Y2llbmN5LCB3ZSBkb24ndCB1cGRhdGUgdGhlIGJ5dGVzIHdyaXR0ZW4gaW4gdGhlIHNoYXJl ZAotCQkJICogbWVtb3J5IGFuZCBhbHNvIGRvbid0IHNldCB0aGUgcmVhZGVyJ3MgbGF0Y2gg aGVyZS4gIFJlZmVyIHRvCisJCQkgKiBtZW1vcnkgYW5kIGFsc28gZG9uJ3Qgc2VuZCB0aGUg cmVhZGVyIGludGVycnVwdCBoZXJlLiAgUmVmZXIgdG8KIAkJCSAqIHRoZSBjb21tZW50cyBh dG9wIHRoZSBzaG1fbXFfaGFuZGxlIHN0cnVjdHVyZSBmb3IgbW9yZQogCQkJICogaW5mb3Jt YXRpb24uCiAJCQkgKi8KQEAgLTExNTIsMjUgKzExNTIsMjkgQEAgc2htX21xX3JlY2VpdmVf Ynl0ZXMoc2htX21xX2hhbmRsZSAqbXFoLCBTaXplIGJ5dGVzX25lZWRlZCwgYm9vbCBub3dh aXQsCiAJCQltcWgtPm1xaF9jb25zdW1lX3BlbmRpbmcgPSAwOwogCQl9CiAKLQkJLyogU2tp cCBtYW5pcHVsYXRpb24gb2Ygb3VyIGxhdGNoIGlmIG5vd2FpdCA9IHRydWUuICovCisJCS8q IFNraXAgd2FpdGluZyBpZiBub3dhaXQgPSB0cnVlLiAqLwogCQlpZiAobm93YWl0KQogCQkJ cmV0dXJuIFNITV9NUV9XT1VMRF9CTE9DSzsKIAogCQkvKgotCQkgKiBXYWl0IGZvciBvdXIg bGF0Y2ggdG8gYmUgc2V0LiAgSXQgbWlnaHQgYWxyZWFkeSBiZSBzZXQgZm9yIHNvbWUKKwkJ ICogV2FpdCBmb3IgdGhlIGludGVycnVwdCB0byBiZSBzZXQuICBJdCBtaWdodCBhbHJlYWR5 IGJlIHNldCBmb3Igc29tZQogCQkgKiB1bnJlbGF0ZWQgcmVhc29uLCBidXQgdGhhdCdsbCBq dXN0IHJlc3VsdCBpbiBvbmUgZXh0cmEgdHJpcCB0aHJvdWdoCi0JCSAqIHRoZSBsb29wLiAg SXQncyB3b3J0aCBpdCB0byBhdm9pZCByZXNldHRpbmcgdGhlIGxhdGNoIGF0IHRvcCBvZgot CQkgKiBsb29wLCBiZWNhdXNlIHNldHRpbmcgYW4gYWxyZWFkeS1zZXQgbGF0Y2ggaXMgbXVj aCBjaGVhcGVyIHRoYW4KLQkJICogc2V0dGluZyBvbmUgdGhhdCBoYXMgYmVlbiByZXNldC4K KwkJICogdGhlIGxvb3AuICBJdCdzIHdvcnRoIGl0IHRvIGF2b2lkIGNsZWFyaW5nIHRoZSBp bnRlcnJ1cHQgYXQgdG9wIG9mCisJCSAqIGxvb3AsIGJlY2F1c2Ugc2V0dGluZyBhbiBhbHJl YWR5LXNldCBpbnRlcnJ1cHQgaXMgbXVjaCBjaGVhcGVyIHRoYW4KKwkJICogc2V0dGluZyBv bmUgdGhhdCBoYXMgYmVlbiBjbGVhcmVkLgogCQkgKi8KLQkJKHZvaWQpIFdhaXRMYXRjaChN eUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAotCQkJCQkJ IFdBSVRfRVZFTlRfTUVTU0FHRV9RVUVVRV9SRUNFSVZFKTsKKwkJKHZvaWQpIFdhaXRJbnRl cnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8IElOVEVSUlVQVF9XQUlUX1dBS0VVUCwK KwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJCQkJ CQkgV0FJVF9FVkVOVF9NRVNTQUdFX1FVRVVFX1JFQ0VJVkUpOwogCi0JCS8qIFJlc2V0IHRo ZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGluLiAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOwot Ci0JCS8qIEFuIGludGVycnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdh aXRpbmcuICovCisJCS8qCisJCSAqIEhhbmRsZSBzdGFuZGFyZCBpbnRlcnJ1cHRzIHRoYXQg bWF5IGhhdmUgb2NjdXJyZWQgd2hpbGUgd2Ugd2VyZQorCQkgKiB3YWl0aW5nLgorCQkgKi8K IAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkvKiBDbGVhciB0aGUgaW50ZXJydXB0 IHNvIHdlIGRvbid0IHNwaW4uICovCisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9XQUlU X1dBS0VVUCk7CiAJfQogfQogCkBAIC0xMjUyLDE0ICsxMjU2LDE4IEBAIHNobV9tcV93YWl0 X2ludGVybmFsKHNobV9tcSAqbXEsIFBHUFJPQyAqKnB0ciwgQmFja2dyb3VuZFdvcmtlckhh bmRsZSAqaGFuZGxlKQogCQl9CiAKIAkJLyogV2FpdCB0byBiZSBzaWduYWxlZC4gKi8KLQkJ KHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BN X0RFQVRILCAwLAotCQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9RVUVVRV9JTlRFUk5BTCk7 CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfCBJTlRF UlJVUFRfV0FJVF9XQUtFVVAsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsIDAsCisJCQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9RVUVVRV9JTlRFUk5B TCk7CiAKLQkJLyogUmVzZXQgdGhlIGxhdGNoIHNvIHdlIGRvbid0IHNwaW4uICovCi0JCVJl c2V0TGF0Y2goTXlMYXRjaCk7Ci0KLQkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZlIG9jY3Vy cmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KKwkJLyoKKwkJICogSGFuZGxlIHN0YW5k YXJkIGludGVycnVwdHMgdGhhdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlCisJ CSAqIHdhaXRpbmcuCisJCSAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8q IENsZWFyIHRoZSBpbnRlcnJ1cHQgc28gd2UgZG9uJ3Qgc3Bpbi4gKi8KKwkJQ2xlYXJJbnRl cnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAl9CiAKIAlyZXR1cm4gcmVzdWx0OwpA QCAtMTI5NSw3ICsxMzAzLDcgQEAgc2htX21xX2luY19ieXRlc19yZWFkKHNobV9tcSAqbXEs IFNpemUgbikKIAkgKi8KIAlzZW5kZXIgPSBtcS0+bXFfc2VuZGVyOwogCUFzc2VydChzZW5k ZXIgIT0gTlVMTCk7Ci0JU2V0TGF0Y2goJnNlbmRlci0+cHJvY0xhdGNoKTsKKwlTZW5kSW50 ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhzZW5k ZXIpKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Np Z25hbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaWduYWxmdW5jcy5jCmlu ZGV4IDg0ZTQ0YjM5OGIyLi4wMTQyYTg2NDg1ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvc2lnbmFsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9zaWduYWxmdW5jcy5jCkBAIC00Miw2ICs0Miw5IEBACiAgKiBJbiB0aGUgZXZlbnQgb2Yg YSBnZW5lcmFsIGZhaWx1cmUgKHJldHVybiBjb2RlIDEpLCBhIHdhcm5pbmcgbWVzc2FnZSB3 aWxsCiAgKiBiZSBlbWl0dGVkLiBGb3IgcGVybWlzc2lvbiBlcnJvcnMsIGRvaW5nIHRoYXQg aXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mCiAgKiB0aGUgY2FsbGVyLgorICoKKyAqIFRPRE86 IFRoaXMgY291bGQgYmUgY2hhbmdlZCB0byBzZW5kIGFuIGludGVycnVwdCBkaXJlY3RseSBu b3cuIEJ1dCBzZW5kaW5nCisgKiBhIFNJR1RFUk0gb3IgU0lHSU5UIHN0aWxsIHdvcmtzIHRv by4KICAqLwogI2RlZmluZSBTSUdOQUxfQkFDS0VORF9TVUNDRVNTIDAKICNkZWZpbmUgU0lH TkFMX0JBQ0tFTkRfRVJST1IgMQpAQCAtMjAyLDEyICsyMDUsMTAgQEAgcGdfd2FpdF91bnRp bF90ZXJtaW5hdGlvbihpbnQgcGlkLCBpbnQ2NCB0aW1lb3V0KQogCQkvKiBQcm9jZXNzIGlu dGVycnVwdHMsIGlmIGFueSwgYmVmb3JlIHdhaXRpbmcgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKTsKIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkgV0xfTEFU Q0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkgd2Fp dHRpbWUsCi0JCQkJCQkgV0FJVF9FVkVOVF9CQUNLRU5EX1RFUk1JTkFUSU9OKTsKLQotCQlS ZXNldExhdGNoKE15TGF0Y2gpOworCQkodm9pZCkgV2FpdEludGVycnVwdChDaGVja0Zvcklu dGVycnVwdHNNYXNrLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgd2FpdHRpbWUsCisJCQkJCQkJIFdBSVRfRVZF TlRfQkFDS0VORF9URVJNSU5BVElPTik7CiAKIAkJcmVtYWluaW5ndGltZSAtPSB3YWl0dGlt ZTsKIAl9IHdoaWxlIChyZW1haW5pbmd0aW1lID4gMCk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9zaW52YWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Np bnZhbC5jCmluZGV4IDE1NDBjN2UwNjk2Li4yYzY2NDQ3MWM3MyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvc2ludmFsLmMKQEAgLTE1LDMwICsxNSwxNCBAQAogI2luY2x1ZGUgInBvc3RncmVz LmgiCiAKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNo LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaW52YWxhZHQuaCIKICNpbmNsdWRlICJ1dGlscy9p bnZhbC5oIgogCiAKIHVpbnQ2NAkJU2hhcmVkSW52YWxpZE1lc3NhZ2VDb3VudGVyOwogCi0K LS8qCi0gKiBCZWNhdXNlIGJhY2tlbmRzIHNpdHRpbmcgaWRsZSB3aWxsIG5vdCBiZSByZWFk aW5nIHNpbnZhbCBldmVudHMsIHdlCi0gKiBuZWVkIGEgd2F5IHRvIGdpdmUgYW4gaWRsZSBi YWNrZW5kIGEgc3dpZnQga2ljayBpbiB0aGUgcmVhciBhbmQgbWFrZQotICogaXQgY2F0Y2gg dXAgYmVmb3JlIHRoZSBzaW52YWwgcXVldWUgb3ZlcmZsb3dzIGFuZCBmb3JjZXMgaXQgdG8g Z28KLSAqIHRocm91Z2ggYSBjYWNoZSByZXNldCBleGVyY2lzZS4gIFRoaXMgaXMgZG9uZSBi eSBzZW5kaW5nCi0gKiBQUk9DU0lHX0NBVENIVVBfSU5URVJSVVBUIHRvIGFueSBiYWNrZW5k IHRoYXQgZ2V0cyB0b28gZmFyIGJlaGluZC4KLSAqCi0gKiBUaGUgc2lnbmFsIGhhbmRsZXIg d2lsbCBzZXQgYW4gaW50ZXJydXB0IHBlbmRpbmcgZmxhZyBhbmQgd2lsbCBzZXQgdGhlCi0g KiBwcm9jZXNzZXMgbGF0Y2guIFdoZW5ldmVyIHN0YXJ0aW5nIHRvIHJlYWQgZnJvbSB0aGUg Y2xpZW50LCBvciB3aGVuCi0gKiBpbnRlcnJ1cHRlZCB3aGlsZSBkb2luZyBzbywgUHJvY2Vz c0NsaWVudFJlYWRJbnRlcnJ1cHQoKSB3aWxsIGNhbGwKLSAqIFByb2Nlc3NDYXRjaHVwRXZl bnQoKS4KLSAqLwotdm9sYXRpbGUgc2lnX2F0b21pY190IGNhdGNodXBJbnRlcnJ1cHRQZW5k aW5nID0gZmFsc2U7Ci0KLQogLyoKICAqIFNlbmRTaGFyZWRJbnZhbGlkTWVzc2FnZXMKICAq CUFkZCBzaGFyZWQtY2FjaGUtaW52YWxpZGF0aW9uIG1lc3NhZ2UocykgdG8gdGhlIGdsb2Jh bCBTSSBtZXNzYWdlIHF1ZXVlLgpAQCAtMTMyLDM3ICsxMTYsMTMgQEAgUmVjZWl2ZVNoYXJl ZEludmFsaWRNZXNzYWdlcyh2b2lkICgqaW52YWxGdW5jdGlvbikgKFNoYXJlZEludmFsaWRh dGlvbk1lc3NhZ2UgKm0KIAkgKiBjYXRjaHVwIHNpZ25hbCB0aGlzIHdheSBhdm9pZHMgY3Jl YXRpbmcgc3Bpa2VzIGluIHN5c3RlbSBsb2FkIGZvciB3aGF0CiAJICogc2hvdWxkIGJlIGp1 c3QgYSBiYWNrZ3JvdW5kIG1haW50ZW5hbmNlIGFjdGl2aXR5LgogCSAqLwotCWlmIChjYXRj aHVwSW50ZXJydXB0UGVuZGluZykKKwlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRf U0lOVkFMX0NBVENIVVApKQogCXsKLQkJY2F0Y2h1cEludGVycnVwdFBlbmRpbmcgPSBmYWxz ZTsKIAkJZWxvZyhERUJVRzQsICJzaW52YWwgY2F0Y2h1cCBjb21wbGV0ZSwgY2xlYW5pbmcg cXVldWUiKTsKIAkJU0lDbGVhbnVwUXVldWUoZmFsc2UsIDApOwogCX0KIH0KIAotCi0vKgot ICogSGFuZGxlQ2F0Y2h1cEludGVycnVwdAotICoKLSAqIFRoaXMgaXMgY2FsbGVkIHdoZW4g UFJPQ1NJR19DQVRDSFVQX0lOVEVSUlVQVCBpcyByZWNlaXZlZC4KLSAqCi0gKiBXZSB1c2Vk IHRvIGRpcmVjdGx5IGNhbGwgUHJvY2Vzc0NhdGNodXBFdmVudCBkaXJlY3RseSB3aGVuIGlk bGUuIFRoZXNlIGRheXMKLSAqIHdlIGp1c3Qgc2V0IGEgZmxhZyB0byBkbyBpdCBsYXRlciBh bmQgbm90aWZ5IHRoZSBwcm9jZXNzIG9mIHRoYXQgZmFjdCBieQotICogc2V0dGluZyB0aGUg cHJvY2VzcydzIGxhdGNoLgotICovCi12b2lkCi1IYW5kbGVDYXRjaHVwSW50ZXJydXB0KHZv aWQpCi17Ci0JLyoKLQkgKiBOb3RlOiB0aGlzIGlzIGNhbGxlZCBieSBhIFNJR05BTCBIQU5E TEVSLiBZb3UgbXVzdCBiZSB2ZXJ5IHdhcnkgd2hhdAotCSAqIHlvdSBkbyBoZXJlLgotCSAq LwotCi0JY2F0Y2h1cEludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotCi0JLyogbGF0Y2ggd2ls bCBiZSBzZXQgYnkgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIgKi8KLX0KLQogLyoKICAq IFByb2Nlc3NDYXRjaHVwSW50ZXJydXB0CiAgKgpAQCAtMTcyLDE1ICsxMzIsMTUgQEAgSGFu ZGxlQ2F0Y2h1cEludGVycnVwdCh2b2lkKQogdm9pZAogUHJvY2Vzc0NhdGNodXBJbnRlcnJ1 cHQodm9pZCkKIHsKLQl3aGlsZSAoY2F0Y2h1cEludGVycnVwdFBlbmRpbmcpCisJZG8KIAl7 CiAJCS8qCiAJCSAqIFdoYXQgd2UgbmVlZCB0byBkbyBoZXJlIGlzIGNhdXNlIFJlY2VpdmVT aGFyZWRJbnZhbGlkTWVzc2FnZXMoKSB0bwotCQkgKiBydW4sIHdoaWNoIHdpbGwgZG8gdGhl IG5lY2Vzc2FyeSB3b3JrIGFuZCBhbHNvIHJlc2V0IHRoZQotCQkgKiBjYXRjaHVwSW50ZXJy dXB0UGVuZGluZyBmbGFnLiAgSWYgd2UgYXJlIGluc2lkZSBhIHRyYW5zYWN0aW9uIHdlCi0J CSAqIGNhbiBqdXN0IGNhbGwgQWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKSB0byBkbyB0 aGlzLiAgSWYgd2UKLQkJICogYXJlbid0LCB3ZSBzdGFydCBhbmQgaW1tZWRpYXRlbHkgZW5k IGEgdHJhbnNhY3Rpb247IHRoZSBjYWxsIHRvCi0JCSAqIEFjY2VwdEludmFsaWRhdGlvbk1l c3NhZ2VzKCkgaGFwcGVucyBkb3duIGluc2lkZSB0cmFuc2FjdGlvbiBzdGFydC4KKwkJICog cnVuLCB3aGljaCB3aWxsIGRvIHRoZSBuZWNlc3Nhcnkgd29yay4gIElmIHdlIGFyZSBpbnNp ZGUgYQorCQkgKiB0cmFuc2FjdGlvbiB3ZSBjYW4ganVzdCBjYWxsIEFjY2VwdEludmFsaWRh dGlvbk1lc3NhZ2VzKCkgdG8gZG8KKwkJICogdGhpcy4gIElmIHdlIGFyZW4ndCwgd2Ugc3Rh cnQgYW5kIGltbWVkaWF0ZWx5IGVuZCBhIHRyYW5zYWN0aW9uOworCQkgKiB0aGUgY2FsbCB0 byBBY2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcygpIGhhcHBlbnMgZG93biBpbnNpZGUKKwkJ ICogdHJhbnNhY3Rpb24gc3RhcnQuCiAJCSAqCiAJCSAqIEl0IGlzIGF3ZnVsbHkgdGVtcHRp bmcgdG8ganVzdCBjYWxsIEFjY2VwdEludmFsaWRhdGlvbk1lc3NhZ2VzKCkKIAkJICogd2l0 aG91dCB0aGUgcmVzdCBvZiB0aGUgeGFjdCBzdGFydC9zdG9wIG92ZXJoZWFkLCBhbmQgSSB0 aGluayB0aGF0CkBAIC0xODksMTQgKzE0OSwyMCBAQCBQcm9jZXNzQ2F0Y2h1cEludGVycnVw dCh2b2lkKQogCQkgKi8KIAkJaWYgKElzVHJhbnNhY3Rpb25PclRyYW5zYWN0aW9uQmxvY2so KSkKIAkJewotCQkJZWxvZyhERUJVRzQsICJQcm9jZXNzQ2F0Y2h1cEV2ZW50IGluc2lkZSB0 cmFuc2FjdGlvbiIpOworCQkJZWxvZyhERUJVRzQsICJQcm9jZXNzQ2F0Y2h1cEludGVycnVw dCBpbnNpZGUgdHJhbnNhY3Rpb24iKTsKIAkJCUFjY2VwdEludmFsaWRhdGlvbk1lc3NhZ2Vz KCk7CiAJCX0KIAkJZWxzZQogCQl7Ci0JCQllbG9nKERFQlVHNCwgIlByb2Nlc3NDYXRjaHVw RXZlbnQgb3V0c2lkZSB0cmFuc2FjdGlvbiIpOworCQkJZWxvZyhERUJVRzQsICJQcm9jZXNz Q2F0Y2h1cEludGVycnVwdCBvdXRzaWRlIHRyYW5zYWN0aW9uIik7CiAJCQlTdGFydFRyYW5z YWN0aW9uQ29tbWFuZCgpOwogCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJCX0K KworCQkvKgorCQkgKiBJZiBhbm90aGVyIGNhdGNodXAgaW50ZXJydXB0IGFycml2ZWQgd2hp bGUgd2Ugd2VyZSBwcm9jZXNpbmcgdGhlCisJCSAqIHByZXZpb3VzIG9uZSwgcHJvY2VzcyB0 aGUgbmV3IG9uZSB0b28uCisJCSAqLwogCX0KKwl3aGlsZSAoQ29uc3VtZUludGVycnVwdChJ TlRFUlJVUFRfU0lOVkFMX0NBVENIVVApKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3NpbnZhbGFkdC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lu dmFsYWR0LmMKaW5kZXggMzdhMjFmZmFmMWEuLmZiYzM5MGUwMTE4IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zaW52YWxhZHQuYwpAQCAtMTcsMTEgKzE3LDEwIEBACiAjaW5jbHVkZSA8 c2lnbmFsLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKLSNpbmNsdWRlICJtaXNjYWRtaW4u aCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMu aCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2Nu dW1iZXIuaCIKLSNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJz dG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaW52YWxhZHQuaCIKICNpbmNs dWRlICJzdG9yYWdlL3NwaW4uaCIKQEAgLTExOSw3ICsxMTgsNyBAQAogICogd2UgZXhjZWVk IENMRUFOVVBfTUlOLiAgU2hvdWxkIGJlIGEgcG93ZXIgb2YgMiBmb3Igc3BlZWQuCiAgKgog ICogU0lHX1RIUkVTSE9MRDogdGhlIG1pbmltdW0gbnVtYmVyIG9mIG1lc3NhZ2VzIGEgYmFj a2VuZCBtdXN0IGhhdmUgZmFsbGVuCi0gKiBiZWhpbmQgYmVmb3JlIHdlJ2xsIHNlbmQgaXQg UFJPQ1NJR19DQVRDSFVQX0lOVEVSUlVQVC4KKyAqIGJlaGluZCBiZWZvcmUgd2UnbGwgc2Vu ZCBpdCBJTlRFUlJVUFRfU0lOVkFMX0NBVENIVVAuCiAgKgogICogV1JJVEVfUVVBTlRVTTog dGhlIG1heCBudW1iZXIgb2YgbWVzc2FnZXMgdG8gcHVzaCBpbnRvIHRoZSBidWZmZXIgcGVy CiAgKiBpdGVyYXRpb24gb2YgU0lJbnNlcnREYXRhRW50cmllcy4gIE5vbmNyaXRpY2FsIGJ1 dCBzaG91bGQgYmUgbGVzcyB0aGFuCkBAIC0zMTYsNiArMzE1LDE0IEBAIFNoYXJlZEludmFs QmFja2VuZEluaXQoYm9vbCBzZW5kT25seSkKIAogCS8qIHJlZ2lzdGVyIGV4aXQgcm91dGlu ZSB0byBtYXJrIG15IGVudHJ5IGluYWN0aXZlIGF0IGV4aXQgKi8KIAlvbl9zaG1lbV9leGl0 KENsZWFudXBJbnZhbGlkYXRpb25TdGF0ZSwgUG9pbnRlckdldERhdHVtKHNlZ1ApKTsKKwor CS8qCisJICogYWxsIHByb2Nlc3NlcyB0aGF0IHBhcnRpY2lwYXRlIGluIHNoYXJlZCBpbnZh bGlkYXRpb25zIG11c3QgaGFuZGxlCisJICogY2F0Y2h1cCBpbnRlcnJ1cHRzIHByb21wdGx5 LiAoQ2xpZW50IGJhY2tlbmRzIHdpbGwgZGlzYWJsZSB0aGlzIHdoaWxlCisJICogcHJvY2Vz c2luZyBhIHF1ZXJ5LCBidXQgZW5hYmxlIGl0IGJ5IGRlZmF1bHQuKQorCSAqLworCVNldElu dGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX1NJTlZBTF9DQVRDSFVQLCBQcm9jZXNzQ2F0Y2h1 cEludGVycnVwdCk7CisJRW5hYmxlSW50ZXJydXB0KElOVEVSUlVQVF9TSU5WQUxfQ0FUQ0hV UCk7CiB9CiAKIC8qCkBAIC01NjcsNyArNTc0LDcgQEAgU0lHZXREYXRhRW50cmllcyhTaGFy ZWRJbnZhbGlkYXRpb25NZXNzYWdlICpkYXRhLCBpbnQgZGF0YXNpemUpCiAgKiBtaW5GcmVl IGlzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBtZXNzYWdlIHNsb3RzIHRvIG1ha2UgZnJlZS4K ICAqCiAgKiBQb3NzaWJsZSBzaWRlIGVmZmVjdHMgb2YgdGhpcyByb3V0aW5lIGluY2x1ZGUg bWFya2luZyBvbmUgb3IgbW9yZQotICogYmFja2VuZHMgYXMgInJlc2V0IiBpbiB0aGUgYXJy YXksIGFuZCBzZW5kaW5nIFBST0NTSUdfQ0FUQ0hVUF9JTlRFUlJVUFQKKyAqIGJhY2tlbmRz IGFzICJyZXNldCIgaW4gdGhlIGFycmF5LCBhbmQgc2VuZGluZyBJTlRFUlJVUFRfU0lOVkFM X0NBVENIVVAKICAqIHRvIHNvbWUgYmFja2VuZCB0aGF0IHNlZW1zIHRvIGJlIGdldHRpbmcg dG9vIGZhciBiZWhpbmQuICBXZSBzaWduYWwgYXQKICAqIG1vc3Qgb25lIGJhY2tlbmQgYXQg YSB0aW1lLCBmb3IgcmVhc29ucyBleHBsYWluZWQgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZS4K ICAqCkBAIC02NjAsOCArNjY3LDggQEAgU0lDbGVhbnVwUXVldWUoYm9vbCBjYWxsZXJIYXNX cml0ZUxvY2ssIGludCBtaW5GcmVlKQogCQlzZWdQLT5uZXh0VGhyZXNob2xkID0gKG51bU1z Z3MgLyBDTEVBTlVQX1FVQU5UVU0gKyAxKSAqIENMRUFOVVBfUVVBTlRVTTsKIAogCS8qCi0J ICogTGFzdGx5LCBzaWduYWwgYW55b25lIHdobyBuZWVkcyBhIGNhdGNodXAgaW50ZXJydXB0 LiAgU2luY2UKLQkgKiBTZW5kUHJvY1NpZ25hbCgpIG1pZ2h0IG5vdCBiZSBmYXN0LCB3ZSBk b24ndCB3YW50IHRvIGhvbGQgbG9ja3Mgd2hpbGUKKwkgKiBMYXN0bHksIHNpZ25hbCBhbnlv bmUgd2hvIG5lZWRzIGEgY2F0Y2h1cCBpbnRlcnJ1cHQuICBTZW5kSW50ZXJydXB0KCkKKwkg KiBpcyBwcmV0dHkgZmFzdCwgYnV0IHdlIG5ldmVydGhlbGVzcyBkb24ndCB3YW50IHRvIGhv bGQgbG9ja3Mgd2hpbGUKIAkgKiBleGVjdXRpbmcgaXQuCiAJICovCiAJaWYgKG5lZWRTaWcp CkBAIC02NzIsOCArNjc5LDggQEAgU0lDbGVhbnVwUXVldWUoYm9vbCBjYWxsZXJIYXNXcml0 ZUxvY2ssIGludCBtaW5GcmVlKQogCQluZWVkU2lnLT5zaWduYWxlZCA9IHRydWU7CiAJCUxX TG9ja1JlbGVhc2UoU0ludmFsUmVhZExvY2spOwogCQlMV0xvY2tSZWxlYXNlKFNJbnZhbFdy aXRlTG9jayk7Ci0JCWVsb2coREVCVUc0LCAic2VuZGluZyBzaW52YWwgY2F0Y2h1cCBzaWdu YWwgdG8gUElEICVkIiwgKGludCkgaGlzX3BpZCk7Ci0JCVNlbmRQcm9jU2lnbmFsKGhpc19w aWQsIFBST0NTSUdfQ0FUQ0hVUF9JTlRFUlJVUFQsIGhpc19wcm9jTnVtYmVyKTsKKwkJZWxv ZyhERUJVRzQsICJzZW5kaW5nIHNpbnZhbCBjYXRjaHVwIGludGVycnVwdCB0byBiYWNrZW5k IFBJRCAlZCIsIChpbnQpIGhpc19waWQpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9T SU5WQUxfQ0FUQ0hVUCwgaGlzX3Byb2NOdW1iZXIpOwogCQlpZiAoY2FsbGVySGFzV3JpdGVM b2NrKQogCQkJTFdMb2NrQWNxdWlyZShTSW52YWxXcml0ZUxvY2ssIExXX0VYQ0xVU0lWRSk7 CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IGU1OGFjNGM0MzYzLi4w MWVmYWUyNTE2ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRi eS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwpAQCAtNTk4LDcg KzU5OCw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aERhdGFiYXNlKE9pZCBkYmlk KQogICogUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoTG9jayBpcyBjYWxsZWQgZnJvbSBQ cm9jU2xlZXAoKQogICogdG8gcmVzb2x2ZSBjb25mbGljdHMgd2l0aCBvdGhlciBiYWNrZW5k cyBob2xkaW5nIHJlbGF0aW9uIGxvY2tzLgogICoKLSAqIFRoZSBXYWl0TGF0Y2ggc2xlZXAg bm9ybWFsbHkgZG9uZSBpbiBQcm9jU2xlZXAoKQorICogVGhlIFdhaXRJbnRlcnJ1cHQgc2xl ZXAgbm9ybWFsbHkgZG9uZSBpbiBQcm9jU2xlZXAoKQogICogKHdoZW4gbm90IEluSG90U3Rh bmRieSkgaXMgcGVyZm9ybWVkIGhlcmUsIGZvciBjb2RlIGNsYXJpdHkuCiAgKgogICogV2Ug ZWl0aGVyIHJlc29sdmUgY29uZmxpY3RzIGltbWVkaWF0ZWx5IG9yIHNldCBhIHRpbWVvdXQg dG8gd2FrZSB1cyBhdApAQCAtNzAwLDcgKzcwMCwxMSBAQCBSZXNvbHZlUmVjb3ZlcnlDb25m bGljdFdpdGhMb2NrKExPQ0tUQUcgbG9ja3RhZywgYm9vbCBsb2dnaW5nX2NvbmZsaWN0KQog CX0KIAogCS8qIFdhaXQgdG8gYmUgc2lnbmFsZWQgYnkgdGhlIHJlbGVhc2Ugb2YgdGhlIFJl bGF0aW9uIExvY2sgKi8KLQlQcm9jV2FpdEZvclNpZ25hbChQR19XQUlUX0xPQ0sgfCBsb2Nr dGFnLmxvY2t0YWdfdHlwZSk7CisJV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNN YXNrIHwgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJCSAgV0xfSU5URVJSVVBUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJCQkgIFBHX1dBSVRfTE9DSyB8IGxvY2t0YWcubG9j a3RhZ190eXBlKTsKKwlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAKIAkvKgogCSAqIEV4aXQgaWYgbHRpbWUgaXMg cmVhY2hlZC4gVGhlbiBhbGwgdGhlIGJhY2tlbmRzIGhvbGRpbmcgY29uZmxpY3RpbmcKQEAg LTc0OCw3ICs3NTIsMTEgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoTG9jayhMT0NL VEFHIGxvY2t0YWcsIGJvb2wgbG9nZ2luZ19jb25mbGljdCkKIAkJICogdW50aWwgdGhlIHJl bGF0aW9uIGxvY2tzIGFyZSByZWxlYXNlZCBvciBsdGltZSBpcyByZWFjaGVkLgogCQkgKi8K IAkJZ290X3N0YW5kYnlfZGVhZGxvY2tfdGltZW91dCA9IGZhbHNlOwotCQlQcm9jV2FpdEZv clNpZ25hbChQR19XQUlUX0xPQ0sgfCBsb2NrdGFnLmxvY2t0YWdfdHlwZSk7CisJCVdhaXRJ bnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCSAgSU5URVJSVVBUX1dB SVRfV0FLRVVQLCBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJ CQkgIFBHX1dBSVRfTE9DSyB8IGxvY2t0YWcubG9ja3RhZ190eXBlKTsKKwkJQ0hFQ0tfRk9S X0lOVEVSUlVQVFMoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQ KTsKIAl9CiAKIGNsZWFudXA6CkBAIC03NjgsMTUgKzc3NiwxNiBAQCBjbGVhbnVwOgogICog UmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoQnVmZmVyUGluIGlzIGNhbGxlZCBmcm9tIExv Y2tCdWZmZXJGb3JDbGVhbnVwKCkKICAqIHRvIHJlc29sdmUgY29uZmxpY3RzIHdpdGggb3Ro ZXIgYmFja2VuZHMgaG9sZGluZyBidWZmZXIgcGlucy4KICAqCi0gKiBUaGUgUHJvY1dhaXRG b3JTaWduYWwoKSBzbGVlcCBub3JtYWxseSBkb25lIGluIExvY2tCdWZmZXJGb3JDbGVhbnVw KCkKLSAqICh3aGVuIG5vdCBJbkhvdFN0YW5kYnkpIGlzIHBlcmZvcm1lZCBoZXJlLCBmb3Ig Y29kZSBjbGFyaXR5LgorICogVGhlIFdhaXRJbnRlcnJ1cHQgc2xlZXAgbm9ybWFsbHkgZG9u ZSBpbiBMb2NrQnVmZmVyRm9yQ2xlYW51cCgpICh3aGVuIG5vdAorICogSW5Ib3RTdGFuZGJ5 KSBpcyBwZXJmb3JtZWQgaGVyZSwgZm9yIGNvZGUgY2xhcml0eS4KICAqCiAgKiBXZSBlaXRo ZXIgcmVzb2x2ZSBjb25mbGljdHMgaW1tZWRpYXRlbHkgb3Igc2V0IGEgdGltZW91dCB0byB3 YWtlIHVzIGF0CiAgKiB0aGUgbGltaXQgb2Ygb3VyIHBhdGllbmNlLgogICoKLSAqIFJlc29s dmUgY29uZmxpY3RzIGJ5IHNlbmRpbmcgYSBQUk9DU0lHIHNpZ25hbCB0byBhbGwgYmFja2Vu ZHMgdG8gY2hlY2sgaWYKLSAqIHRoZXkgaG9sZCBvbmUgb2YgdGhlIGJ1ZmZlciBwaW5zIHRo YXQgaXMgYmxvY2tpbmcgU3RhcnR1cCBwcm9jZXNzLiBJZiBzbywKLSAqIHRob3NlIGJhY2tl bmRzIHdpbGwgdGFrZSBhbiBhcHByb3ByaWF0ZSBlcnJvciBhY3Rpb24sIEVSUk9SIG9yIEZB VEFMLgorICogUmVzb2x2ZSBjb25mbGljdHMgYnkgc2VuZGluZyBSRUNPVkVSWV9DT05GTElD VF9CVUZGRVJQSU4gdG8gYWxsCisgKiBiYWNrZW5kcyB0byBjaGVjayBpZiB0aGV5IGhvbGQg b25lIG9mIHRoZSBidWZmZXIgcGlucyB0aGF0IGlzIGJsb2NraW5nCisgKiBTdGFydHVwIHBy b2Nlc3MuIElmIHNvLCB0aG9zZSBiYWNrZW5kcyB3aWxsIHRha2UgYW4gYXBwcm9wcmlhdGUg ZXJyb3IKKyAqIGFjdGlvbiwgRVJST1Igb3IgRkFUQUwuCiAgKgogICogV2UgYWxzbyBtdXN0 IGNoZWNrIGZvciBkZWFkbG9ja3MuICBEZWFkbG9ja3Mgb2NjdXIgYmVjYXVzZSBpZiBxdWVy aWVzCiAgKiB3YWl0IG9uIGEgbG9jaywgdGhhdCBtdXN0IGJlIGJlaGluZCBhbiBBY2Nlc3NF eGNsdXNpdmVMb2NrLCB3aGljaCBjYW4gb25seQpAQCAtODQwLDkgKzg0OSwxOSBAQCBSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhCdWZmZXJQaW4odm9pZCkKIAkgKiBXZSBhc3N1bWUg dGhhdCBvbmx5IFVucGluQnVmZmVyKCkgYW5kIHRoZSB0aW1lb3V0IHJlcXVlc3RzIGVzdGFi bGlzaGVkCiAJICogYWJvdmUgY2FuIHdha2UgdXMgdXAgaGVyZS4gV2FrZXVwUmVjb3Zlcnko KSBjYWxsZWQgYnkgd2FscmVjZWl2ZXIgb3IKIAkgKiBTSUdIVVAgc2lnbmFsIGhhbmRsZXIs IGV0YyBjYW5ub3QgZG8gdGhhdCBiZWNhdXNlIGl0IHVzZXMgdGhlIGRpZmZlcmVudAotCSAq IGxhdGNoIGZyb20gdGhhdCBQcm9jV2FpdEZvclNpZ25hbCgpIHdhaXRzIG9uLgorCSAqIGlu dGVycnVwdCBmbGFnLgorCSAqCisJICogRklYTUU6IHNlZW1zIGxpa2UgYSBzaGFreSBhc3N1 bXB0aW9uLiBXYWtldXBSZWNvdmVyeSgpIGluZGVlZCB1c2VzIGEKKwkgKiBkaWZmZXJlbnQg aW50ZXJydXB0IGZsYWcgKGRpZmZlcmVudCBsYXRjaCBlYXJsaWVyKSwgYnV0IG90aGVyCisJ ICogaW50ZXJydXB0cyBjdXJyZW50bHkgaW4gQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayBjb3Vs ZCBzdXJlbHkgd2FrZSB1cyB1cAorCSAqIHRvby4gSG93ZXZlciwgdGhlIGNhbGxlciBsb29w cyBpZiB0aGUgYnVmZmVyIGlzIHN0aWxsIHBpbm5lZCwgc28gdGhpcworCSAqIGlzbid0IGNv bXBsZXRlbHkgYnJva2VuLiBUaGUgdGltZW91dHMgZ2V0IHJlc2V0IHRob3VnaC4KIAkgKi8K LQlQcm9jV2FpdEZvclNpZ25hbChXQUlUX0VWRU5UX0JVRkZFUl9DTEVBTlVQKTsKKwlXYWl0 SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfCBJTlRFUlJVUFRfV0FJVF9XQUtF VVAsCisJCQkJICBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJ CSAgV0FJVF9FVkVOVF9CVUZGRVJfQ0xFQU5VUCk7CisJQ2xlYXJJbnRlcnJ1cHQoSU5URVJS VVBUX1dBSVRfV0FLRVVQKTsKKwlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJaWYgKGdv dF9zdGFuZGJ5X2RlbGF5X3RpbWVvdXQpCiAJCVNlbmRSZWNvdmVyeUNvbmZsaWN0V2l0aEJ1 ZmZlclBpbihSRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU4pOwpAQCAtOTM4LDYgKzk1Nyw3 IEBAIHZvaWQKIFN0YW5kYnlEZWFkTG9ja0hhbmRsZXIodm9pZCkKIHsKIAlnb3Rfc3RhbmRi eV9kZWFkbG9ja190aW1lb3V0ID0gdHJ1ZTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRf V0FJVF9XQUtFVVApOwogfQogCiAvKgpAQCAtOTQ3LDYgKzk2Nyw3IEBAIHZvaWQKIFN0YW5k YnlUaW1lb3V0SGFuZGxlcih2b2lkKQogewogCWdvdF9zdGFuZGJ5X2RlbGF5X3RpbWVvdXQg PSB0cnVlOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiB9CiAK IC8qCkBAIC05NTYsNiArOTc3LDcgQEAgdm9pZAogU3RhbmRieUxvY2tUaW1lb3V0SGFuZGxl cih2b2lkKQogewogCWdvdF9zdGFuZGJ5X2xvY2tfdGltZW91dCA9IHRydWU7CisJUmFpc2VJ bnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3dhaXRldmVudHNldC5jIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvd2FpdGV2ZW50c2V0LmMKaW5kZXggNjI3ZGJhMGE4NDIuLjA3ZTIyMjk5 MWYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy93YWl0ZXZlbnRzZXQu YworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy93YWl0ZXZlbnRzZXQuYwpAQCAtOCw4 ICs4LDggQEAKICAqIHBzZWxlY3QoKSAoYXMgb3Bwb3NlZCB0byBwbGFpbiBwb2xsKCkvc2Vs ZWN0KCkpLgogICoKICAqIFlvdSBjYW4gd2FpdCBmb3I6Ci0gKiAtIGEgbGF0Y2ggYmVpbmcg c2V0IGZyb20gYW5vdGhlciBwcm9jZXNzIG9yIGZyb20gc2lnbmFsIGhhbmRsZXIgaW4gdGhl IHNhbWUKLSAqICAgcHJvY2VzcyAoV0xfTEFUQ0hfU0VUKQorICogLSBhbiBpbnRlcnJ1cHQg ZnJvbSBhbm90aGVyIHByb2Nlc3Mgb3IgZnJvbSBzaWduYWwgaGFuZGxlciBpbiB0aGUgc2Ft ZQorICogICBwcm9jZXNzIChXTF9JTlRFUlJVUFQpCiAgKiAtIGRhdGEgdG8gYmVjb21lIHJl YWRhYmxlIG9yIHdyaXRlYWJsZSBvbiBhIHNvY2tldCAoV0xfU09DS0VUXyopCiAgKiAtIHBv c3RtYXN0ZXIgZGVhdGggKFdMX1BPU1RNQVNURVJfREVBVEggb3IgV0xfRVhJVF9PTl9QTV9E RUFUSCkKICAqIC0gdGltZW91dCAoV0xfVElNRU9VVCkKQEAgLTE3LDE1ICsxNywxNiBAQAog ICogSW1wbGVtZW50YXRpb24KICAqIC0tLS0tLS0tLS0tLS0tCiAgKgotICogVGhlIHBvbGwo KSBpbXBsZW1lbnRhdGlvbiB1c2VzIHRoZSBzby1jYWxsZWQgc2VsZi1waXBlIHRyaWNrIHRv IG92ZXJjb21lIHRoZQotICogcmFjZSBjb25kaXRpb24gaW52b2x2ZWQgd2l0aCBwb2xsKCkg YW5kIHNldHRpbmcgYSBnbG9iYWwgZmxhZyBpbiB0aGUgc2lnbmFsCi0gKiBoYW5kbGVyLiBX aGVuIGEgbGF0Y2ggaXMgc2V0IGFuZCB0aGUgY3VycmVudCBwcm9jZXNzIGlzIHdhaXRpbmcg Zm9yIGl0LCB0aGUKLSAqIHNpZ25hbCBoYW5kbGVyIHdha2VzIHVwIHRoZSBwb2xsKCkgaW4g V2FpdExhdGNoIGJ5IHdyaXRpbmcgYSBieXRlIHRvIGEgcGlwZS4KLSAqIEEgc2lnbmFsIGJ5 IGl0c2VsZiBkb2Vzbid0IGludGVycnVwdCBwb2xsKCkgb24gYWxsIHBsYXRmb3JtcywgYW5k IGV2ZW4gb24KLSAqIHBsYXRmb3JtcyB3aGVyZSBpdCBkb2VzLCBhIHNpZ25hbCB0aGF0IGFy cml2ZXMganVzdCBiZWZvcmUgdGhlIHBvbGwoKSBjYWxsCi0gKiBkb2VzIG5vdCBwcmV2ZW50 IHBvbGwoKSBmcm9tIGVudGVyaW5nIHNsZWVwLiBBbiBpbmNvbWluZyBieXRlIG9uIGEgcGlw ZQotICogaG93ZXZlciByZWxpYWJseSBpbnRlcnJ1cHRzIHRoZSBzbGVlcCwgYW5kIGNhdXNl cyBwb2xsKCkgdG8gcmV0dXJuCi0gKiBpbW1lZGlhdGVseSBldmVuIGlmIHRoZSBzaWduYWwg YXJyaXZlcyBiZWZvcmUgcG9sbCgpIGJlZ2lucy4KKyAqIFRoZSBwb2xsKCkgaW1wbGVtZW50 YXRpb24gdXNlcyB0aGUgc28tY2FsbGVkIHNlbGYtcGlwZSB0cmljayB0byBvdmVyY29tZQor ICogdGhlIHJhY2UgY29uZGl0aW9uIGludm9sdmVkIHdpdGggcG9sbCgpIGFuZCBzZXR0aW5n IGEgZ2xvYmFsIGZsYWcgaW4gdGhlCisgKiBzaWduYWwgaGFuZGxlci4gV2hlbiBhbiBpbnRl cnJ1cHQgaXMgcmVjZWl2ZWQgYW5kIHRoZSBjdXJyZW50IHByb2Nlc3MgaXMKKyAqIHdhaXRp bmcgZm9yIGl0LCB0aGUgc2lnbmFsIGhhbmRsZXIgd2FrZXMgdXAgdGhlIHBvbGwoKSBpbiBX YWl0SW50ZXJydXB0IGJ5CisgKiB3cml0aW5nIGEgYnl0ZSB0byBhIHBpcGUuICBBIHNpZ25h bCBieSBpdHNlbGYgZG9lc24ndCBpbnRlcnJ1cHQgcG9sbCgpIG9uCisgKiBhbGwgcGxhdGZv cm1zLCBhbmQgZXZlbiBvbiBwbGF0Zm9ybXMgd2hlcmUgaXQgZG9lcywgYSBzaWduYWwgdGhh dCBhcnJpdmVzCisgKiBqdXN0IGJlZm9yZSB0aGUgcG9sbCgpIGNhbGwgZG9lcyBub3QgcHJl dmVudCBwb2xsKCkgZnJvbSBlbnRlcmluZyBzbGVlcC4gQW4KKyAqIGluY29taW5nIGJ5dGUg b24gYSBwaXBlIGhvd2V2ZXIgcmVsaWFibHkgaW50ZXJydXB0cyB0aGUgc2xlZXAsIGFuZCBj YXVzZXMKKyAqIHBvbGwoKSB0byByZXR1cm4gaW1tZWRpYXRlbHkgZXZlbiBpZiB0aGUgc2ln bmFsIGFycml2ZXMgYmVmb3JlIHBvbGwoKQorICogYmVnaW5zLgogICoKICAqIFRoZSBlcG9s bCgpIGltcGxlbWVudGF0aW9uIG92ZXJjb21lcyB0aGUgcmFjZSB3aXRoIGEgZGlmZmVyZW50 IHRlY2huaXF1ZTogaXQKICAqIGtlZXBzIFNJR1VSRyBibG9ja2VkIGFuZCBjb25zdW1lcyBm cm9tIGEgc2lnbmFsZmQoKSBkZXNjcmlwdG9yIGluc3RlYWQuICBXZQpAQCAtNjUsNyArNjYs NiBAQAogI2VuZGlmCiAKICNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgotI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvcnQvYXRv bWljcy5oIgogI2luY2x1ZGUgInBvcnRhYmlsaXR5L2luc3RyX3RpbWUuaCIKQEAgLTczLDcg KzczLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9p cGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCi0jaW5jbHVkZSAic3RvcmFn ZS9sYXRjaC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3Jh Z2Uvd2FpdGV2ZW50c2V0LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNs dWRlICJ1dGlscy9yZXNvd25lci5oIgpAQCAtMTI5LDEzICsxMjksMTMgQEAgc3RydWN0IFdh aXRFdmVudFNldAogCVdhaXRFdmVudCAgKmV2ZW50czsKIAogCS8qCi0JICogSWYgV0xfTEFU Q0hfU0VUIGlzIHNwZWNpZmllZCBpbiBhbnkgd2FpdCBldmVudCwgbGF0Y2ggaXMgYSBwb2lu dGVyIHRvCi0JICogc2FpZCBsYXRjaCwgYW5kIGxhdGNoX3BvcyB0aGUgb2Zmc2V0IGluIHRo ZSAtPmV2ZW50cyBhcnJheS4gVGhpcyBpcwotCSAqIHVzZWZ1bCBiZWNhdXNlIHdlIGNoZWNr IHRoZSBzdGF0ZSBvZiB0aGUgbGF0Y2ggYmVmb3JlIHBlcmZvcm1pbmcgZG9pbmcKLQkgKiBz eXNjYWxscyByZWxhdGVkIHRvIHdhaXRpbmcuCisJICogSWYgV0xfSU5URVJSVVBUIGlzIHNw ZWNpZmllZCBpbiBhbnkgd2FpdCBldmVudCwgaW50ZXJydXB0TWFzayBpcyB0aGUKKwkgKiBp bnRlcnJ1cHRzIHRvIHdhaXQgZm9yLCBhbmQgaW50ZXJydXB0X3BvcyB0aGUgb2Zmc2V0IGlu IHRoZSAtPmV2ZW50cworCSAqIGFycmF5LiBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIHdlIGNo ZWNrIHRoZSBzdGF0ZSBvZiBwZW5kaW5nIGludGVycnVwdHMKKwkgKiBiZWZvcmUgcGVyZm9y bWluZyBzeXNjYWxscyByZWxhdGVkIHRvIHdhaXRpbmcuCiAJICovCi0JTGF0Y2gJICAgKmxh dGNoOwotCWludAkJCWxhdGNoX3BvczsKKwlJbnRlcnJ1cHRNYXNrIGludGVycnVwdF9tYXNr OworCWludAkJCWludGVycnVwdF9wb3M7CiAKIAkvKgogCSAqIFdMX0VYSVRfT05fUE1fREVB VEggaXMgY29udmVydGVkIHRvIFdMX1BPU1RNQVNURVJfREVBVEgsIGJ1dCB0aGlzIGZsYWcK QEAgLTE2NywxMCArMTY3LDggQEAgc3RydWN0IFdhaXRFdmVudFNldAogI2VuZGlmCiB9Owog Ci0jaWZuZGVmIFdJTjMyCi0vKiBBcmUgd2UgY3VycmVudGx5IGluIFdhaXRMYXRjaD8gVGhl IHNpZ25hbCBoYW5kbGVyIHdvdWxkIGxpa2UgdG8ga25vdy4gKi8KKy8qIEFyZSB3ZSBjdXJy ZW50bHkgb24gYSBXYWl0RXZlbnRTZXQ/IFRoZSBzaWduYWwgaGFuZGxlciB3b3VsZCBsaWtl IHRvIGtub3cuICovCiBzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IHdhaXRpbmcgPSBm YWxzZTsKLSNlbmRpZgogCiAjaWZkZWYgV0FJVF9VU0VfU0lHTkFMRkQKIC8qIE9uIExpbnV4 LCB3ZSdsbCByZWNlaXZlIFNJR1VSRyB2aWEgYSBzaWduYWxmZCBmaWxlIGRlc2NyaXB0b3Iu ICovCkBAIC0xODQsOSArMTgyLDE2IEBAIHN0YXRpYyBpbnQJc2VsZnBpcGVfd3JpdGVmZCA9 IC0xOwogCiAvKiBQcm9jZXNzIG93bmluZyB0aGUgc2VsZi1waXBlIC0tLSBuZWVkZWQgZm9y IGNoZWNraW5nIHB1cnBvc2VzICovCiBzdGF0aWMgaW50CXNlbGZwaXBlX293bmVyX3BpZCA9 IDA7CisjZW5kaWYKKworI2lmZGVmIFdBSVRfVVNFX1dJTjMyCitzdGF0aWMgSEFORExFIExv Y2FsSW50ZXJydXB0V2FrZXVwRXZlbnQ7CisjZW5kaWYKIAogLyogUHJpdmF0ZSBmdW5jdGlv biBwcm90b3R5cGVzICovCi1zdGF0aWMgdm9pZCBsYXRjaF9zaWd1cmdfaGFuZGxlcihTSUdO QUxfQVJHUyk7CisKKyNpZmRlZiBXQUlUX1VTRV9TRUxGX1BJUEUKK3N0YXRpYyB2b2lkIGlu dGVycnVwdF9zaWd1cmdfaGFuZGxlcihTSUdOQUxfQVJHUyk7CiBzdGF0aWMgdm9pZCBzZW5k U2VsZlBpcGVCeXRlKHZvaWQpOwogI2VuZGlmCiAKQEAgLTIwNCw2ICsyMDksNyBAQCBzdGF0 aWMgdm9pZCBXYWl0RXZlbnRBZGp1c3RQb2xsKFdhaXRFdmVudFNldCAqc2V0LCBXYWl0RXZl bnQgKmV2ZW50KTsKIHN0YXRpYyB2b2lkIFdhaXRFdmVudEFkanVzdFdpbjMyKFdhaXRFdmVu dFNldCAqc2V0LCBXYWl0RXZlbnQgKmV2ZW50KTsKICNlbmRpZgogCitzdGF0aWMgdm9pZCBX YWl0RXZlbnRTZXRXYWl0QWJvcnQodm9pZCk7CiBzdGF0aWMgaW5saW5lIGludCBXYWl0RXZl bnRTZXRXYWl0QmxvY2soV2FpdEV2ZW50U2V0ICpzZXQsIGludCBjdXJfdGltZW91dCwKIAkJ CQkJCQkJCQlXYWl0RXZlbnQgKm9jY3VycmVkX2V2ZW50cywgaW50IG5ldmVudHMpOwogCkBA IC0yMzYsNyArMjQyLDcgQEAgUmVzb3VyY2VPd25lckZvcmdldFdhaXRFdmVudFNldChSZXNv dXJjZU93bmVyIG93bmVyLCBXYWl0RXZlbnRTZXQgKnNldCkKICAqIEluaXRpYWxpemUgdGhl IHByb2Nlc3MtbG9jYWwgd2FpdCBldmVudCBpbmZyYXN0cnVjdHVyZS4KICAqCiAgKiBUaGlz IG11c3QgYmUgY2FsbGVkIG9uY2UgZHVyaW5nIHN0YXJ0dXAgb2YgYW55IHByb2Nlc3MgdGhh dCBjYW4gd2FpdCBvbgotICogbGF0Y2hlcywgYmVmb3JlIGl0IGlzc3VlcyBhbnkgSW5pdExh dGNoKCkgb3IgT3duTGF0Y2goKSBjYWxscy4KKyAqIGludGVycnVwdHMuCiAgKi8KIHZvaWQK IEluaXRpYWxpemVXYWl0RXZlbnRTdXBwb3J0KHZvaWQpCkBAIC0yODYsMTIgKzI5MiwxMiBA QCBJbml0aWFsaXplV2FpdEV2ZW50U3VwcG9ydCh2b2lkKQogCiAJLyoKIAkgKiBTZXQgdXAg dGhlIHNlbGYtcGlwZSB0aGF0IGFsbG93cyBhIHNpZ25hbCBoYW5kbGVyIHRvIHdha2UgdXAg dGhlCi0JICogcG9sbCgpL2Vwb2xsX3dhaXQoKSBpbiBXYWl0TGF0Y2guIE1ha2UgdGhlIHdy aXRlLWVuZCBub24tYmxvY2tpbmcsIHNvCi0JICogdGhhdCBTZXRMYXRjaCB3b24ndCBibG9j ayBpZiB0aGUgZXZlbnQgaGFzIGFscmVhZHkgYmVlbiBzZXQgbWFueSB0aW1lcwotCSAqIGZp bGxpbmcgdGhlIGtlcm5lbCBidWZmZXIuIE1ha2UgdGhlIHJlYWQtZW5kIG5vbi1ibG9ja2lu ZyB0b28sIHNvIHRoYXQKLQkgKiB3ZSBjYW4gZWFzaWx5IGNsZWFyIHRoZSBwaXBlIGJ5IHJl YWRpbmcgdW50aWwgRUFHQUlOIG9yIEVXT1VMREJMT0NLLgotCSAqIEFsc28sIG1ha2UgYm90 aCBGRHMgY2xvc2Utb24tZXhlYywgc2luY2Ugd2Ugc3VyZWx5IGRvIG5vdCB3YW50IGFueQot CSAqIGNoaWxkIHByb2Nlc3NlcyBtZXNzaW5nIHdpdGggdGhlbS4KKwkgKiBwb2xsKCkvZXBv bGxfd2FpdCgpIGluIFdhaXRJbnRlcnJ1cHQuIE1ha2UgdGhlIHdyaXRlLWVuZCBub24tYmxv Y2tpbmcsCisJICogc28gdGhhdCBTZW5kSW50ZXJydXB0IHdvbid0IGJsb2NrIGlmIHRoZSBl dmVudCBoYXMgYWxyZWFkeSBiZWVuIHNldAorCSAqIG1hbnkgdGltZXMgZmlsbGluZyB0aGUg a2VybmVsIGJ1ZmZlci4gTWFrZSB0aGUgcmVhZC1lbmQgbm9uLWJsb2NraW5nCisJICogdG9v LCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgY2xlYXIgdGhlIHBpcGUgYnkgcmVhZGluZyB1bnRp bCBFQUdBSU4gb3IKKwkgKiBFV09VTERCTE9DSy4gQWxzbywgbWFrZSBib3RoIEZEcyBjbG9z ZS1vbi1leGVjLCBzaW5jZSB3ZSBzdXJlbHkgZG8gbm90CisJICogd2FudCBhbnkgY2hpbGQg cHJvY2Vzc2VzIG1lc3Npbmcgd2l0aCB0aGVtLgogCSAqLwogCWlmIChwaXBlKHBpcGVmZCkg PCAwKQogCQllbG9nKEZBVEFMLCAicGlwZSgpIGZhaWxlZDogJW0iKTsKQEAgLTMxMiw3ICsz MTgsNyBAQCBJbml0aWFsaXplV2FpdEV2ZW50U3VwcG9ydCh2b2lkKQogCVJlc2VydmVFeHRl cm5hbEZEKCk7CiAJUmVzZXJ2ZUV4dGVybmFsRkQoKTsKIAotCXBxc2lnbmFsKFNJR1VSRywg bGF0Y2hfc2lndXJnX2hhbmRsZXIpOworCXBxc2lnbmFsKFNJR1VSRywgaW50ZXJydXB0X3Np Z3VyZ19oYW5kbGVyKTsKICNlbmRpZgogCiAjaWZkZWYgV0FJVF9VU0VfU0lHTkFMRkQKQEAg LTM1MCw2ICszNTYsMTIgQEAgSW5pdGlhbGl6ZVdhaXRFdmVudFN1cHBvcnQodm9pZCkKIAkv KiBJZ25vcmUgU0lHVVJHLCBiZWNhdXNlIHdlJ2xsIHJlY2VpdmUgaXQgdmlhIGtxdWV1ZS4g Ki8KIAlwcXNpZ25hbChTSUdVUkcsIFBHX1NJR19JR04pOwogI2VuZGlmCisKKyNpZmRlZiBX QUlUX1VTRV9XSU4zMgorCUxvY2FsSW50ZXJydXB0V2FrZXVwRXZlbnQgPSBDcmVhdGVFdmVu dChOVUxMLCBUUlVFLCBGQUxTRSwgTlVMTCk7CisJaWYgKExvY2FsSW50ZXJydXB0V2FrZXVw RXZlbnQgPT0gTlVMTCkKKwkJZWxvZyhFUlJPUiwgIkNyZWF0ZUV2ZW50IGZhaWxlZDogZXJy b3IgY29kZSAlbHUiLCBHZXRMYXN0RXJyb3IoKSk7CisjZW5kaWYKIH0KIAogLyoKQEAgLTQx Myw3ICs0MjUsOCBAQCBDcmVhdGVXYWl0RXZlbnRTZXQoUmVzb3VyY2VPd25lciByZXNvd25l ciwgaW50IG5ldmVudHMpCiAJZGF0YSArPSBNQVhBTElHTihzaXplb2YoSEFORExFKSAqIG5l dmVudHMpOwogI2VuZGlmCiAKLQlzZXQtPmxhdGNoID0gTlVMTDsKKwlzZXQtPmludGVycnVw dF9tYXNrID0gMDsKKwlzZXQtPmludGVycnVwdF9wb3MgPSAtMTsKIAlzZXQtPm5ldmVudHNf c3BhY2UgPSBuZXZlbnRzOwogCXNldC0+ZXhpdF9vbl9wb3N0bWFzdGVyX2RlYXRoID0gZmFs c2U7CiAKQEAgLTQ5Nyw5ICs1MTAsOSBAQCBGcmVlV2FpdEV2ZW50U2V0KFdhaXRFdmVudFNl dCAqc2V0KQogCQkgY3VyX2V2ZW50IDwgKHNldC0+ZXZlbnRzICsgc2V0LT5uZXZlbnRzKTsK IAkJIGN1cl9ldmVudCsrKQogCXsKLQkJaWYgKGN1cl9ldmVudC0+ZXZlbnRzICYgV0xfTEFU Q0hfU0VUKQorCQlpZiAoY3VyX2V2ZW50LT5ldmVudHMgJiBXTF9JTlRFUlJVUFQpCiAJCXsK LQkJCS8qIHVzZXMgdGhlIGxhdGNoJ3MgSEFORExFICovCisJCQkvKiB1c2VzIHRoZSBwcm9j ZXNzJ3Mgd2FrZXVwIEhBTkRMRSAqLwogCQl9CiAJCWVsc2UgaWYgKGN1cl9ldmVudC0+ZXZl bnRzICYgV0xfUE9TVE1BU1RFUl9ERUFUSCkKIAkJewpAQCAtNTM2LDcgKzU0OSw3IEBAIEZy ZWVXYWl0RXZlbnRTZXRBZnRlckZvcmsoV2FpdEV2ZW50U2V0ICpzZXQpCiAKIC8qIC0tLQog ICogQWRkIGFuIGV2ZW50IHRvIHRoZSBzZXQuIFBvc3NpYmxlIGV2ZW50cyBhcmU6Ci0gKiAt IFdMX0xBVENIX1NFVDogV2FpdCBmb3IgdGhlIGxhdGNoIHRvIGJlIHNldAorICogLSBXTF9J TlRFUlJVUFQ6IFdhaXQgZm9yIHRoZSBpbnRlcnJ1cHQgdG8gYmUgcmFpc2VkCiAgKiAtIFdM X1BPU1RNQVNURVJfREVBVEg6IFdhaXQgZm9yIHBvc3RtYXN0ZXIgdG8gZGllCiAgKiAtIFdM X1NPQ0tFVF9SRUFEQUJMRTogV2FpdCBmb3Igc29ja2V0IHRvIGJlY29tZSByZWFkYWJsZSwK ICAqCSBjYW4gYmUgY29tYmluZWQgaW4gb25lIGV2ZW50IHdpdGggb3RoZXIgV0xfU09DS0VU XyogZXZlbnRzCkBAIC01NTQsMTAgKzU2Nyw2IEBAIEZyZWVXYWl0RXZlbnRTZXRBZnRlckZv cmsoV2FpdEV2ZW50U2V0ICpzZXQpCiAgKiBSZXR1cm5zIHRoZSBvZmZzZXQgaW4gV2FpdEV2 ZW50U2V0LT5ldmVudHMgKHN0YXJ0aW5nIGZyb20gMCksIHdoaWNoIGNhbiBiZQogICogdXNl ZCB0byBtb2RpZnkgcHJldmlvdXNseSBhZGRlZCB3YWl0IGV2ZW50cyB1c2luZyBNb2RpZnlX YWl0RXZlbnQoKS4KICAqCi0gKiBJbiB0aGUgV0xfTEFUQ0hfU0VUIGNhc2UgdGhlIGxhdGNo IG11c3QgYmUgb3duZWQgYnkgdGhlIGN1cnJlbnQgcHJvY2VzcywKLSAqIGkuZS4gaXQgbXVz dCBiZSBhIHByb2Nlc3MtbG9jYWwgbGF0Y2ggaW5pdGlhbGl6ZWQgd2l0aCBJbml0TGF0Y2gs IG9yIGEKLSAqIHNoYXJlZCBsYXRjaCBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgcHJv Y2VzcyBieSBjYWxsaW5nIE93bkxhdGNoLgotICoKICAqIEluIHRoZSBXTF9TT0NLRVRfUkVB REFCTEUvV1JJVEVBQkxFL0NPTk5FQ1RFRC9BQ0NFUFQgY2FzZXMsIEVPRiBhbmQgZXJyb3IK ICAqIGNvbmRpdGlvbnMgY2F1c2UgdGhlIHNvY2tldCB0byBiZSByZXBvcnRlZCBhcyByZWFk YWJsZS93cml0YWJsZS9jb25uZWN0ZWQsCiAgKiBzbyB0aGF0IHRoZSBjYWxsZXIgY2FuIGRl YWwgd2l0aCB0aGUgY29uZGl0aW9uLgpAQCAtNTY3LDggKzU3Niw4IEBAIEZyZWVXYWl0RXZl bnRTZXRBZnRlckZvcmsoV2FpdEV2ZW50U2V0ICpzZXQpCiAgKiBldmVudHMuCiAgKi8KIGlu dAotQWRkV2FpdEV2ZW50VG9TZXQoV2FpdEV2ZW50U2V0ICpzZXQsIHVpbnQzMiBldmVudHMs IHBnc29ja2V0IGZkLCBMYXRjaCAqbGF0Y2gsCi0JCQkJICB2b2lkICp1c2VyX2RhdGEpCitB ZGRXYWl0RXZlbnRUb1NldChXYWl0RXZlbnRTZXQgKnNldCwgdWludDMyIGV2ZW50cywgcGdz b2NrZXQgZmQsCisJCQkJICBJbnRlcnJ1cHRNYXNrIGludGVycnVwdE1hc2ssIHZvaWQgKnVz ZXJfZGF0YSkKIHsKIAlXYWl0RXZlbnQgICpldmVudDsKIApAQCAtNTgxLDE5ICs1OTAsMTYg QEAgQWRkV2FpdEV2ZW50VG9TZXQoV2FpdEV2ZW50U2V0ICpzZXQsIHVpbnQzMiBldmVudHMs IHBnc29ja2V0IGZkLCBMYXRjaCAqbGF0Y2gsCiAJCXNldC0+ZXhpdF9vbl9wb3N0bWFzdGVy X2RlYXRoID0gdHJ1ZTsKIAl9CiAKLQlpZiAobGF0Y2gpCi0JewotCQlpZiAobGF0Y2gtPm93 bmVyX3BpZCAhPSBNeVByb2NQaWQpCi0JCQllbG9nKEVSUk9SLCAiY2Fubm90IHdhaXQgb24g YSBsYXRjaCBvd25lZCBieSBhbm90aGVyIHByb2Nlc3MiKTsKLQkJaWYgKHNldC0+bGF0Y2gp Ci0JCQllbG9nKEVSUk9SLCAiY2Fubm90IHdhaXQgb24gbW9yZSB0aGFuIG9uZSBsYXRjaCIp OwotCQlpZiAoKGV2ZW50cyAmIFdMX0xBVENIX1NFVCkgIT0gV0xfTEFUQ0hfU0VUKQotCQkJ ZWxvZyhFUlJPUiwgImxhdGNoIGV2ZW50cyBvbmx5IHN1cHBvcnQgYmVpbmcgc2V0Iik7Ci0J fQotCWVsc2UKKwkvKgorCSAqIEl0IGRvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlIHRvIHdhaXQg Zm9yIFdMX0lOVEVSUlVQVCB3aXRoIGVtcHR5CisJICogaW50ZXJydXB0TWFzaywgYnV0IHdl IGFsbG93IGl0IHNvIHRoYXQgeW91IGNhbiB1c2UgTW9kaWZ5RXZlbnQgdG8gc2V0CisJICog dGhlIGludGVycnVwdE1hc2sgbGF0ZXIuIE5vbi16ZXJvIGludGVycnVwdE1hc2sgZG9lc24n dCBtYWtlIHNlbnNlCisJICogd2l0aG91dCBXTF9JTlRFUlJVUFQsIGhvd2V2ZXIuCisJICov CisJaWYgKGludGVycnVwdE1hc2sgIT0gMCkKIAl7Ci0JCWlmIChldmVudHMgJiBXTF9MQVRD SF9TRVQpCi0JCQllbG9nKEVSUk9SLCAiY2Fubm90IHdhaXQgb24gbGF0Y2ggd2l0aG91dCBh IHNwZWNpZmllZCBsYXRjaCIpOworCQlpZiAoKGV2ZW50cyAmIFdMX0lOVEVSUlVQVCkgIT0g V0xfSU5URVJSVVBUKQorCQkJZWxvZyhFUlJPUiwgImludGVycnVwdGVkIGV2ZW50cyBvbmx5 IHN1cHBvcnQgYmVpbmcgc2V0Iik7CiAJfQogCiAJLyogd2FpdGluZyBmb3Igc29ja2V0IHJl YWRpbmVzcyB3aXRob3V0IGEgc29ja2V0IGluZGljYXRlcyBhIGJ1ZyAqLwpAQCAtNjA5LDEw ICs2MTUsMTAgQEAgQWRkV2FpdEV2ZW50VG9TZXQoV2FpdEV2ZW50U2V0ICpzZXQsIHVpbnQz MiBldmVudHMsIHBnc29ja2V0IGZkLCBMYXRjaCAqbGF0Y2gsCiAJZXZlbnQtPnJlc2V0ID0g ZmFsc2U7CiAjZW5kaWYKIAotCWlmIChldmVudHMgPT0gV0xfTEFUQ0hfU0VUKQorCWlmIChl dmVudHMgPT0gV0xfSU5URVJSVVBUKQogCXsKLQkJc2V0LT5sYXRjaCA9IGxhdGNoOwotCQlz ZXQtPmxhdGNoX3BvcyA9IGV2ZW50LT5wb3M7CisJCXNldC0+aW50ZXJydXB0X21hc2sgPSBp bnRlcnJ1cHRNYXNrOworCQlzZXQtPmludGVycnVwdF9wb3MgPSBldmVudC0+cG9zOwogI2lm IGRlZmluZWQoV0FJVF9VU0VfU0VMRl9QSVBFKQogCQlldmVudC0+ZmQgPSBzZWxmcGlwZV9y ZWFkZmQ7CiAjZWxpZiBkZWZpbmVkKFdBSVRfVVNFX1NJR05BTEZEKQpAQCAtNjQ2LDE0ICs2 NTIsMTQgQEAgQWRkV2FpdEV2ZW50VG9TZXQoV2FpdEV2ZW50U2V0ICpzZXQsIHVpbnQzMiBl dmVudHMsIHBnc29ja2V0IGZkLCBMYXRjaCAqbGF0Y2gsCiB9CiAKIC8qCi0gKiBDaGFuZ2Ug dGhlIGV2ZW50IG1hc2sgYW5kLCBpbiB0aGUgV0xfTEFUQ0hfU0VUIGNhc2UsIHRoZSBsYXRj aCBhc3NvY2lhdGVkCi0gKiB3aXRoIHRoZSBXYWl0RXZlbnQuICBUaGUgbGF0Y2ggbWF5IGJl IGNoYW5nZWQgdG8gTlVMTCB0byBkaXNhYmxlIHRoZSBsYXRjaAotICogdGVtcG9yYXJpbHks IGFuZCB0aGVuIHNldCBiYWNrIHRvIGEgbGF0Y2ggbGF0ZXIuCisgKiBDaGFuZ2UgdGhlIGV2 ZW50IG1hc2sgYW5kLCBpbiB0aGUgV0xfSU5URVJSVVBUIGNhc2UsIHRoZSBpbnRlcnJ1cHQg bWFzaworICogYXNzb2NpYXRlZCB3aXRoIHRoZSBXYWl0RXZlbnQuICBUaGUgaW50ZXJydXB0 IG1hc2sgbWF5IGJlIGNoYW5nZWQgdG8gMCB0bworICogZGlzYWJsZSB0aGUgd2FrZXVwcyBv biBpbnRlcnJ1cHRzIHRlbXBvcmFyaWx5LCBhbmQgdGhlbiBzZXQgYmFjayBsYXRlci4KICAq CiAgKiAncG9zJyBpcyB0aGUgaWQgcmV0dXJuZWQgYnkgQWRkV2FpdEV2ZW50VG9TZXQuCiAg Ki8KIHZvaWQKLU1vZGlmeVdhaXRFdmVudChXYWl0RXZlbnRTZXQgKnNldCwgaW50IHBvcywg dWludDMyIGV2ZW50cywgTGF0Y2ggKmxhdGNoKQorTW9kaWZ5V2FpdEV2ZW50KFdhaXRFdmVu dFNldCAqc2V0LCBpbnQgcG9zLCB1aW50MzIgZXZlbnRzLCBJbnRlcnJ1cHRNYXNrIGludGVy cnVwdE1hc2spCiB7CiAJV2FpdEV2ZW50ICAqZXZlbnQ7CiAjaWYgZGVmaW5lZChXQUlUX1VT RV9LUVVFVUUpCkBAIC02ODMsNDAgKzY4OSwzMyBAQCBNb2RpZnlXYWl0RXZlbnQoV2FpdEV2 ZW50U2V0ICpzZXQsIGludCBwb3MsIHVpbnQzMiBldmVudHMsIExhdGNoICpsYXRjaCkKIAl9 CiAKIAkvKgotCSAqIElmIG5laXRoZXIgdGhlIGV2ZW50IG1hc2sgbm9yIHRoZSBhc3NvY2lh dGVkIGxhdGNoIGNoYW5nZXMsIHJldHVybgotCSAqIGVhcmx5LiBUaGF0J3MgYW4gaW1wb3J0 YW50IG9wdGltaXphdGlvbiBmb3Igc29tZSBzb2NrZXRzLCB3aGVyZQorCSAqIElmIG5laXRo ZXIgdGhlIGV2ZW50IG1hc2sgbm9yIHRoZSBhc3NvY2lhdGVkIGludGVycnVwdCBtYXNrIGNo YW5nZXMsCisJICogcmV0dXJuIGVhcmx5LiBUaGF0J3MgYW4gaW1wb3J0YW50IG9wdGltaXph dGlvbiBmb3Igc29tZSBzb2NrZXRzLCB3aGVyZQogCSAqIE1vZGlmeVdhaXRFdmVudCBpcyBm cmVxdWVudGx5IHVzZWQgdG8gc3dpdGNoIGZyb20gd2FpdGluZyBmb3IgcmVhZHMgdG8KIAkg KiB3YWl0aW5nIG9uIHdyaXRlcy4KIAkgKi8KIAlpZiAoZXZlbnRzID09IGV2ZW50LT5ldmVu dHMgJiYKLQkJKCEoZXZlbnQtPmV2ZW50cyAmIFdMX0xBVENIX1NFVCkgfHwgc2V0LT5sYXRj aCA9PSBsYXRjaCkpCisJCSghKGV2ZW50LT5ldmVudHMgJiBXTF9JTlRFUlJVUFQpIHx8IHNl dC0+aW50ZXJydXB0X21hc2sgPT0gaW50ZXJydXB0TWFzaykpCiAJCXJldHVybjsKIAotCWlm IChldmVudC0+ZXZlbnRzICYgV0xfTEFUQ0hfU0VUICYmIGV2ZW50cyAhPSBldmVudC0+ZXZl bnRzKQotCQllbG9nKEVSUk9SLCAiY2Fubm90IG1vZGlmeSBsYXRjaCBldmVudCIpOworCWlm IChldmVudC0+ZXZlbnRzICYgV0xfSU5URVJSVVBUICYmIGV2ZW50cyAhPSBldmVudC0+ZXZl bnRzKQorCQllbG9nKEVSUk9SLCAiY2Fubm90IG1vZGlmeSBpbnRlcnJ1cHRzIGV2ZW50Iik7 CiAKIAkvKiBGSVhNRTogdmFsaWRhdGUgZXZlbnQgbWFzayAqLwogCWV2ZW50LT5ldmVudHMg PSBldmVudHM7CiAKLQlpZiAoZXZlbnRzID09IFdMX0xBVENIX1NFVCkKKwlpZiAoZXZlbnRz ID09IFdMX0lOVEVSUlVQVCkKIAl7Ci0JCWlmIChsYXRjaCAmJiBsYXRjaC0+b3duZXJfcGlk ICE9IE15UHJvY1BpZCkKLQkJCWVsb2coRVJST1IsICJjYW5ub3Qgd2FpdCBvbiBhIGxhdGNo IG93bmVkIGJ5IGFub3RoZXIgcHJvY2VzcyIpOwotCQlzZXQtPmxhdGNoID0gbGF0Y2g7CisJ CXNldC0+aW50ZXJydXB0X21hc2sgPSBpbnRlcnJ1cHRNYXNrOwogCiAJCS8qCi0JCSAqIE9u IFVuaXgsIHdlIGRvbid0IG5lZWQgdG8gbW9kaWZ5IHRoZSBrZXJuZWwgb2JqZWN0IGJlY2F1 c2UgdGhlCi0JCSAqIHVuZGVybHlpbmcgcGlwZSAoaWYgdGhlcmUgaXMgb25lKSBpcyB0aGUg c2FtZSBmb3IgYWxsIGxhdGNoZXMgc28gd2UKLQkJICogY2FuIHJldHVybiBpbW1lZGlhdGVs eS4gIE9uIFdpbmRvd3MsIHdlIG5lZWQgdG8gdXBkYXRlIG91ciBhcnJheSBvZgotCQkgKiBo YW5kbGVzLCBidXQgd2UgbGVhdmUgdGhlIG9sZCBvbmUgaW4gcGxhY2UgYW5kIHRvbGVyYXRl IHNwdXJpb3VzCi0JCSAqIHdha2V1cHMgaWYgdGhlIGxhdGNoIGlzIGRpc2FibGVkLgorCQkg KiBXZSBkb24ndCBib3RoZXIgdG8gYWRqdXN0IHRoZSBldmVudCB3aGVuIHRoZSBpbnRlcnJ1 cHQgbWFzaworCQkgKiBjaGFuZ2VzLiAgSXQgbWVhbnMgdGhhdCB3aGVuIGludGVycnVwdCBt YXNrIGlzIHNldCB0byAwLCB3ZSB3aWxsCisJCSAqIGxpc3RlbiBvbiB0aGUga2VybmVsIG9i amVjdCB1bm5lY2Vzc2FyaWx5LCBhbmQgbWlnaHQgZ2V0IHNvbWUKKwkJICogc3B1cmlvdXMg d2FrZXVwcy4gVGhlIGludGVycnVwdCBzZW5kaW5nIGNvZGUgc2hvdWxkIG5vdCB3YWtlIHVz IHVwCisJCSAqIGlmIHRoZSBTTEVFUElORyBiaXQgaXMgbm90IGFybWVkLCB0aG91Z2gsIHNv IGl0IHNob3VsZCBiZSByYXJlLgogCQkgKi8KLSNpZiBkZWZpbmVkKFdBSVRfVVNFX1dJTjMy KQotCQlpZiAoIWxhdGNoKQotCQkJcmV0dXJuOwotI2Vsc2UKIAkJcmV0dXJuOwotI2VuZGlm CiAJfQogCiAjaWYgZGVmaW5lZChXQUlUX1VTRV9FUE9MTCkKQEAgLTc0Niw5ICs3NDUsOCBA QCBXYWl0RXZlbnRBZGp1c3RFcG9sbChXYWl0RXZlbnRTZXQgKnNldCwgV2FpdEV2ZW50ICpl dmVudCwgaW50IGFjdGlvbikKIAllcG9sbF9ldi5ldmVudHMgPSBFUE9MTEVSUiB8IEVQT0xM SFVQOwogCiAJLyogcHJlcGFyZSBwb2xsZmQgZW50cnkgb25jZSAqLwotCWlmIChldmVudC0+ ZXZlbnRzID09IFdMX0xBVENIX1NFVCkKKwlpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9JTlRF UlJVUFQpCiAJewotCQlBc3NlcnQoc2V0LT5sYXRjaCAhPSBOVUxMKTsKIAkJZXBvbGxfZXYu ZXZlbnRzIHw9IEVQT0xMSU47CiAJfQogCWVsc2UgaWYgKGV2ZW50LT5ldmVudHMgPT0gV0xf UE9TVE1BU1RFUl9ERUFUSCkKQEAgLTc5NSw5ICs3OTMsOCBAQCBXYWl0RXZlbnRBZGp1c3RQ b2xsKFdhaXRFdmVudFNldCAqc2V0LCBXYWl0RXZlbnQgKmV2ZW50KQogCXBvbGxmZC0+ZmQg PSBldmVudC0+ZmQ7CiAKIAkvKiBwcmVwYXJlIHBvbGxmZCBlbnRyeSBvbmNlICovCi0JaWYg KGV2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hfU0VUKQorCWlmIChldmVudC0+ZXZlbnRzID09 IFdMX0lOVEVSUlVQVCkKIAl7Ci0JCUFzc2VydChzZXQtPmxhdGNoICE9IE5VTEwpOwogCQlw b2xsZmQtPmV2ZW50cyA9IFBPTExJTjsKIAl9CiAJZWxzZSBpZiAoZXZlbnQtPmV2ZW50cyA9 PSBXTF9QT1NUTUFTVEVSX0RFQVRIKQpAQCAtODU5LDkgKzg1Niw5IEBAIFdhaXRFdmVudEFk anVzdEtxdWV1ZUFkZFBvc3RtYXN0ZXIoc3RydWN0IGtldmVudCAqa19ldiwgV2FpdEV2ZW50 ICpldmVudCkKIH0KIAogc3RhdGljIGlubGluZSB2b2lkCi1XYWl0RXZlbnRBZGp1c3RLcXVl dWVBZGRMYXRjaChzdHJ1Y3Qga2V2ZW50ICprX2V2LCBXYWl0RXZlbnQgKmV2ZW50KQorV2Fp dEV2ZW50QWRqdXN0S3F1ZXVlQWRkSW50ZXJydXB0V2FrZXVwKHN0cnVjdCBrZXZlbnQgKmtf ZXYsIFdhaXRFdmVudCAqZXZlbnQpCiB7Ci0JLyogRm9yIG5vdyBsYXRjaCBjYW4gb25seSBi ZSBhZGRlZCwgbm90IHJlbW92ZWQuICovCisJLyogRm9yIG5vdyBpbnRlcnJ1cHQgd2FrZXVw IGNhbiBvbmx5IGJlIGFkZGVkLCBub3QgcmVtb3ZlZC4gKi8KIAlrX2V2LT5pZGVudCA9IFNJ R1VSRzsKIAlrX2V2LT5maWx0ZXIgPSBFVkZJTFRfU0lHTkFMOwogCWtfZXYtPmZsYWdzID0g RVZfQUREOwpAQCAtODg3LDggKzg4NCw3IEBAIFdhaXRFdmVudEFkanVzdEtxdWV1ZShXYWl0 RXZlbnRTZXQgKnNldCwgV2FpdEV2ZW50ICpldmVudCwgaW50IG9sZF9ldmVudHMpCiAJaWYg KG9sZF9ldmVudHMgPT0gZXZlbnQtPmV2ZW50cykKIAkJcmV0dXJuOwogCi0JQXNzZXJ0KGV2 ZW50LT5ldmVudHMgIT0gV0xfTEFUQ0hfU0VUIHx8IHNldC0+bGF0Y2ggIT0gTlVMTCk7Ci0J QXNzZXJ0KGV2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hfU0VUIHx8CisJQXNzZXJ0KGV2ZW50 LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUIHx8CiAJCSAgIGV2ZW50LT5ldmVudHMgPT0gV0xf UE9TVE1BU1RFUl9ERUFUSCB8fAogCQkgICAoZXZlbnQtPmV2ZW50cyAmIChXTF9TT0NLRVRf UkVBREFCTEUgfAogCQkJCQkJCSBXTF9TT0NLRVRfV1JJVEVBQkxFIHwKQEAgLTkwMywxMCAr ODk5LDEwIEBAIFdhaXRFdmVudEFkanVzdEtxdWV1ZShXYWl0RXZlbnRTZXQgKnNldCwgV2Fp dEV2ZW50ICpldmVudCwgaW50IG9sZF9ldmVudHMpCiAJCSAqLwogCQlXYWl0RXZlbnRBZGp1 c3RLcXVldWVBZGRQb3N0bWFzdGVyKCZrX2V2W2NvdW50KytdLCBldmVudCk7CiAJfQotCWVs c2UgaWYgKGV2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hfU0VUKQorCWVsc2UgaWYgKGV2ZW50 LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUKQogCXsKLQkJLyogV2UgZGV0ZWN0IGxhdGNoIHdh a2V1cCB1c2luZyBhIHNpZ25hbCBldmVudC4gKi8KLQkJV2FpdEV2ZW50QWRqdXN0S3F1ZXVl QWRkTGF0Y2goJmtfZXZbY291bnQrK10sIGV2ZW50KTsKKwkJLyogV2UgZGV0ZWN0IGludGVy cnVwdCB3YWtldXAgdXNpbmcgYSBzaWduYWwgZXZlbnQuICovCisJCVdhaXRFdmVudEFkanVz dEtxdWV1ZUFkZEludGVycnVwdFdha2V1cCgma19ldltjb3VudCsrXSwgZXZlbnQpOwogCX0K IAllbHNlCiAJewpAQCAtOTg2LDEwICs5ODIsMTMgQEAgV2FpdEV2ZW50QWRqdXN0V2luMzIo V2FpdEV2ZW50U2V0ICpzZXQsIFdhaXRFdmVudCAqZXZlbnQpCiB7CiAJSEFORExFCSAgICpo YW5kbGUgPSAmc2V0LT5oYW5kbGVzW2V2ZW50LT5wb3MgKyAxXTsKIAotCWlmIChldmVudC0+ ZXZlbnRzID09IFdMX0xBVENIX1NFVCkKKwlpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9JTlRF UlJVUFQpCiAJewotCQlBc3NlcnQoc2V0LT5sYXRjaCAhPSBOVUxMKTsKLQkJKmhhbmRsZSA9 IHNldC0+bGF0Y2gtPmV2ZW50OworCQkvKgorCQkgKiBXZSByZWdpc3RlciB0aGUgZXZlbnQg ZXZlbiBpZiBpbnRlcnJ1cHRfbWFzayBpcyB6ZXJvLiBXZSBtaWdodCBnZXQKKwkJICogc29t ZSBzcHVyaW91cyB3YWtldXBzLCBidXQgdGhhdCdzIE9LCisJCSAqLworCQkqaGFuZGxlID0g TXlQcm9jID8gTXlQcm9jLT5pbnRlcnJ1cHRXYWtldXBFdmVudCA6IExvY2FsSW50ZXJydXB0 V2FrZXVwRXZlbnQ7CiAJfQogCWVsc2UgaWYgKGV2ZW50LT5ldmVudHMgPT0gV0xfUE9TVE1B U1RFUl9ERUFUSCkKIAl7CkBAIC0xMDEyLDEyICsxMDExLDE4IEBAIFdhaXRFdmVudEFkanVz dFdpbjMyKFdhaXRFdmVudFNldCAqc2V0LCBXYWl0RXZlbnQgKmV2ZW50KQogCQl7CiAJCQkq aGFuZGxlID0gV1NBQ3JlYXRlRXZlbnQoKTsKIAkJCWlmICgqaGFuZGxlID09IFdTQV9JTlZB TElEX0VWRU5UKQorCQkJeworCQkJCVdhaXRFdmVudFNldFdhaXRBYm9ydCgpOwogCQkJCWVs b2coRVJST1IsICJmYWlsZWQgdG8gY3JlYXRlIGV2ZW50IGZvciBzb2NrZXQ6IGVycm9yIGNv ZGUgJWQiLAogCQkJCQkgV1NBR2V0TGFzdEVycm9yKCkpOworCQkJfQogCQl9CiAJCWlmIChX U0FFdmVudFNlbGVjdChldmVudC0+ZmQsICpoYW5kbGUsIGZsYWdzKSAhPSAwKQorCQl7CisJ CQlXYWl0RXZlbnRTZXRXYWl0QWJvcnQoKTsKIAkJCWVsb2coRVJST1IsICJmYWlsZWQgdG8g c2V0IHVwIGV2ZW50IGZvciBzb2NrZXQ6IGVycm9yIGNvZGUgJWQiLAogCQkJCSBXU0FHZXRM YXN0RXJyb3IoKSk7CisJCX0KIAogCQlBc3NlcnQoZXZlbnQtPmZkICE9IFBHSU5WQUxJRF9T T0NLRVQpOwogCX0KQEAgLTEwNDUsNiArMTA1MCw3IEBAIFdhaXRFdmVudFNldFdhaXQoV2Fp dEV2ZW50U2V0ICpzZXQsIGxvbmcgdGltZW91dCwKIAlpbnN0cl90aW1lCXN0YXJ0X3RpbWU7 CiAJaW5zdHJfdGltZQljdXJfdGltZTsKIAlsb25nCQljdXJfdGltZW91dCA9IC0xOworCWJv b2wJCXNsZWVwaW5nX2ZsYWdfYXJtZWQgPSBmYWxzZTsKIAogCUFzc2VydChuZXZlbnRzID4g MCk7CiAKQEAgLTEwNjMsMTEyICsxMDY5LDE2OSBAQCBXYWl0RXZlbnRTZXRXYWl0KFdhaXRF dmVudFNldCAqc2V0LCBsb25nIHRpbWVvdXQsCiAKIAlwZ3N0YXRfcmVwb3J0X3dhaXRfc3Rh cnQod2FpdF9ldmVudF9pbmZvKTsKIAotI2lmbmRlZiBXSU4zMgogCXdhaXRpbmcgPSB0cnVl OwotI2Vsc2UKLQkvKiBFbnN1cmUgdGhhdCBzaWduYWxzIGFyZSBzZXJ2aWNlZCBldmVuIGlm IGxhdGNoIGlzIGFscmVhZHkgc2V0ICovCisjaWZkZWYgV0lOMzIKKwkvKiBFbnN1cmUgdGhh dCBzaWduYWxzIGFyZSBzZXJ2aWNlZCBldmVuIGlmIGludGVycnVwdCBpcyBhbHJlYWR5IHBl bmRpbmcgKi8KIAlwZ3dpbjMyX2Rpc3BhdGNoX3F1ZXVlZF9zaWduYWxzKCk7CiAjZW5kaWYK LQl3aGlsZSAocmV0dXJuZWRfZXZlbnRzID09IDApCisKKwkvKgorCSAqIFdlIHdpbGwgY2hh bmdlIHRoZSAnYXR0ZW50aW9uX21hc2snIGluIE15UGVuZGluZ0ludGVycnVwdHMgZm9yIHRo ZQorCSAqIHNsZWVwLCB3aGljaCBtZWFucyB0aGF0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkg d29uJ3Qgd29yayBjb3JyZWN0bHkuCisJICogVGhlcmUgYXJlIG5vIENIRUNLX0ZPUl9JTlRF UlJVUFRTKCkgY2FsbHMgYmVsb3csIGJ1dCBob2xkIGludGVycnVwdHMKKwkgKiB1bnRpbCB3 ZSd2ZSByZXN0b3JlZCAnYXR0ZW50aW9uX21hc2snIGp1c3QgdG8gYmUgc3VyZS4KKwkgKi8K KwlIT0xEX0lOVEVSUlVQVFMoKTsKKworCS8qCisJICogQXRvbWljYWxseSBjaGVjayBpZiB0 aGUgaW50ZXJydXB0IGlzIGFscmVhZHkgcGVuZGluZyBhbmQgYWR2ZXJ0aXNlIHRoYXQKKwkg KiB3ZSBhcmUgYWJvdXQgdG8gc3RhcnQgc2xlZXBpbmcuIElmIGl0IHdhcyBhbHJlYWR5IHBl bmRpbmcsIGF2b2lkCisJICogYmxvY2tpbmcgYWx0b2dldGhlci4KKwkgKgorCSAqIElmIHNv bWVvbmUgc2V0cyB0aGUgaW50ZXJydXB0IGZsYWcgYmV0d2VlbiB0aGlzIGFuZCB0aGUKKwkg KiBXYWl0RXZlbnRTZXRXYWl0QmxvY2soKSBiZWxvdywgdGhlIHNldHRlciB3aWxsIHdyaXRl IGEgYnl0ZSB0byB0aGUgcGlwZQorCSAqIChvciBzaWduYWwgdXMgYW5kIHRoZSBzaWduYWwg aGFuZGxlciB3aWxsIGRvIHRoYXQpLCBhbmQgdGhlIHJlYWRpbmVzcworCSAqIHJvdXRpbmUg d2lsbCByZXR1cm4gaW1tZWRpYXRlbHkuCisJICovCisJaWYgKHNldC0+aW50ZXJydXB0X21h c2sgIT0gMCkKIAl7Ci0JCWludAkJCXJjOworCQlib29sCQlhbHJlYWR5X3BlbmRpbmcgPSBm YWxzZTsKIAogCQkvKgotCQkgKiBDaGVjayBpZiB0aGUgbGF0Y2ggaXMgc2V0IGFscmVhZHkg Zmlyc3QuICBJZiBzbywgd2UgZWl0aGVyIGV4aXQKLQkJICogaW1tZWRpYXRlbHkgb3IgYXNr IHRoZSBrZXJuZWwgZm9yIGZ1cnRoZXIgZXZlbnRzIGF2YWlsYWJsZSByaWdodAotCQkgKiBu b3cgd2l0aG91dCB3YWl0aW5nLCBkZXBlbmRpbmcgb24gaG93IG1hbnkgZXZlbnRzIHRoZSBj YWxsZXIgd2FudHMuCi0JCSAqCi0JCSAqIElmIHNvbWVvbmUgc2V0cyB0aGUgbGF0Y2ggYmV0 d2VlbiB0aGlzIGFuZCB0aGUKLQkJICogV2FpdEV2ZW50U2V0V2FpdEJsb2NrKCkgYmVsb3cs IHRoZSBzZXR0ZXIgd2lsbCB3cml0ZSBhIGJ5dGUgdG8gdGhlCi0JCSAqIHBpcGUgKG9yIHNp Z25hbCB1cyBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIHdpbGwgZG8gdGhhdCksIGFuZCB0aGUK LQkJICogcmVhZGluZXNzIHJvdXRpbmUgd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkuCi0JCSAq Ci0JCSAqIE9uIHVuaXgsIElmIHRoZXJlJ3MgYSBwZW5kaW5nIGJ5dGUgaW4gdGhlIHNlbGYg cGlwZSwgd2UnbGwgbm90aWNlCi0JCSAqIHdoZW5ldmVyIGJsb2NraW5nLiBPbmx5IGNsZWFy aW5nIHRoZSBwaXBlIGluIHRoYXQgY2FzZSBhdm9pZHMKLQkJICogaGF2aW5nIHRvIGRyYWlu IGl0IGV2ZXJ5IHRpbWUgV2FpdExhdGNoT3JTb2NrZXQoKSBpcyB1c2VkLiBTaG91bGQKLQkJ ICogdGhlIHBpcGUtYnVmZmVyIGZpbGwgdXAgd2UncmUgc3RpbGwgb2ssIGJlY2F1c2UgdGhl IHBpcGUgaXMgaW4KLQkJICogbm9uYmxvY2tpbmcgbW9kZS4gSXQncyB1bmxpa2VseSBmb3Ig dGhhdCB0byBoYXBwZW4sIGJlY2F1c2UgdGhlCi0JCSAqIHNlbGYgcGlwZSBpc24ndCBmaWxs ZWQgdW5sZXNzIHdlJ3JlIGJsb2NraW5nICh3YWl0aW5nID0gdHJ1ZSksIG9yCi0JCSAqIGZy b20gaW5zaWRlIGEgc2lnbmFsIGhhbmRsZXIgaW4gbGF0Y2hfc2lndXJnX2hhbmRsZXIoKS4K LQkJICoKLQkJICogT24gd2luZG93cywgd2UnbGwgYWxzbyBub3RpY2UgaWYgdGhlcmUncyBh IHBlbmRpbmcgZXZlbnQgZm9yIHRoZQotCQkgKiBsYXRjaCB3aGVuIGJsb2NraW5nLCBidXQg dGhlcmUncyBubyBkYW5nZXIgb2YgYW55dGhpbmcgZmlsbGluZyB1cCwKLQkJICogYXMgIlNl dHRpbmcgYW4gZXZlbnQgdGhhdCBpcyBhbHJlYWR5IHNldCBoYXMgbm8gZWZmZWN0LiIuCi0J CSAqCi0JCSAqIE5vdGU6IHdlIGFzc3VtZSB0aGF0IHRoZSBrZXJuZWwgY2FsbHMgaW52b2x2 ZWQgaW4gbGF0Y2ggbWFuYWdlbWVudAotCQkgKiB3aWxsIHByb3ZpZGUgYWRlcXVhdGUgc3lu Y2hyb25pemF0aW9uIG9uIG1hY2hpbmVzIHdpdGggd2VhayBtZW1vcnkKLQkJICogb3JkZXJp bmcsIHNvIHRoYXQgd2UgY2Fubm90IG1pc3Mgc2VlaW5nIGlzX3NldCBpZiBhIG5vdGlmaWNh dGlvbgotCQkgKiBoYXMgYWxyZWFkeSBiZWVuIHF1ZXVlZC4KKwkJICogUGVyZm9ybSBhIHBs YWluIGF0b21pYyByZWFkIGZpcnN0IGFzIGEgZmFzdCBwYXRoIGZvciB0aGUgY2FzZSB0aGF0 CisJCSAqIGFuIGludGVycnVwdCBpcyBhbHJlYWR5IHBlbmRpbmcuCiAJCSAqLwotCQlpZiAo c2V0LT5sYXRjaCAmJiAhc2V0LT5sYXRjaC0+aXNfc2V0KQorCQlhbHJlYWR5X3BlbmRpbmcg PSBJbnRlcnJ1cHRQZW5kaW5nKHNldC0+aW50ZXJydXB0X21hc2spOworCisJCWlmICghYWxy ZWFkeV9wZW5kaW5nKQogCQl7Ci0JCQkvKiBhYm91dCB0byBzbGVlcCBvbiBhIGxhdGNoICov Ci0JCQlzZXQtPmxhdGNoLT5tYXliZV9zbGVlcGluZyA9IHRydWU7CisJCQkvKgorCQkJICog U2V0IHRoZSBhdHRlbnRpb24gbWFzayBhbmQgU0xFRVBJTkcgYml0IGFuZCByZS1jaGVjayBp ZiBhbgorCQkJICogaW50ZXJydXB0IGlzIGFscmVhZHkgcGVuZGluZy4gIFRoZSBtZW1vcnkg YmFycmllciBzeW5jaHJvbml6ZXMKKwkJCSAqIHdpdGggdGhlIGF0b21pYyBmZXRjaC1vciBp biBTZW5kT3JSYWlzZUludGVycnVwdCgpIHNvIHRoYXQgaWYKKwkJCSAqIGFuIGludGVycnVw dCBiaXQgaXMgc2V0IGFmdGVyIHNldHRpbmcgdGhlIGZsYWcsIHRoZSBzZXR0ZXIgd2lsbAor CQkJICogc2VlIHRoZSBTTEVFUElORyBmbGFnIGFuZCB3aWxsIHdha2UgdXMgdXAuCisJCQkg Ki8KKyNpZm5kZWYgUEdfSEFWRV9BVE9NSUNfVTY0X1NJTVVMQVRJT04KKwkJCXBnX2F0b21p Y193cml0ZV91NjQoJk15UGVuZGluZ0ludGVycnVwdHMtPmF0dGVudGlvbl9tYXNrLCBzZXQt PmludGVycnVwdF9tYXNrKTsKKyNlbHNlCisJCQlwZ19hdG9taWNfd3JpdGVfdTMyKCZNeVBl bmRpbmdJbnRlcnJ1cHRzLT5hdHRlbnRpb25fbWFza19sbywgKHVpbnQzMikgc2V0LT5pbnRl cnJ1cHRfbWFzayk7CisJCQlwZ19hdG9taWNfd3JpdGVfdTMyKCZNeVBlbmRpbmdJbnRlcnJ1 cHRzLT5hdHRlbnRpb25fbWFza19oaSwgKHVpbnQzMikgKHNldC0+aW50ZXJydXB0X21hc2sg Pj4gMzIpKTsKKyNlbmRpZgorCQkJcGdfYXRvbWljX3dyaXRlX3UzMigmTXlQZW5kaW5nSW50 ZXJydXB0cy0+ZmxhZ3MsIFBJX0ZMQUdfU0xFRVBJTkcpOworCiAJCQlwZ19tZW1vcnlfYmFy cmllcigpOwotCQkJLyogYW5kIHJlY2hlY2sgKi8KKwkJCWFscmVhZHlfcGVuZGluZyA9IElu dGVycnVwdFBlbmRpbmcoc2V0LT5pbnRlcnJ1cHRfbWFzayk7CisKKwkJCS8qIFJlbWVtYmVy IHRvIGNsZWFyIHRoZSBTTEVFUElORyBmbGFnIGFmdGVyd2FyZHMuICovCisJCQlzbGVlcGlu Z19mbGFnX2FybWVkID0gdHJ1ZTsKIAkJfQogCi0JCWlmIChzZXQtPmxhdGNoICYmIHNldC0+ bGF0Y2gtPmlzX3NldCkKKwkJaWYgKGFscmVhZHlfcGVuZGluZykKIAkJewogCQkJb2NjdXJy ZWRfZXZlbnRzLT5mZCA9IFBHSU5WQUxJRF9TT0NLRVQ7Ci0JCQlvY2N1cnJlZF9ldmVudHMt PnBvcyA9IHNldC0+bGF0Y2hfcG9zOworCQkJb2NjdXJyZWRfZXZlbnRzLT5wb3MgPSBzZXQt PmludGVycnVwdF9wb3M7CiAJCQlvY2N1cnJlZF9ldmVudHMtPnVzZXJfZGF0YSA9Ci0JCQkJ c2V0LT5ldmVudHNbc2V0LT5sYXRjaF9wb3NdLnVzZXJfZGF0YTsKLQkJCW9jY3VycmVkX2V2 ZW50cy0+ZXZlbnRzID0gV0xfTEFUQ0hfU0VUOworCQkJCXNldC0+ZXZlbnRzW3NldC0+aW50 ZXJydXB0X3Bvc10udXNlcl9kYXRhOworCQkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBX TF9JTlRFUlJVUFQ7CiAJCQlvY2N1cnJlZF9ldmVudHMrKzsKIAkJCXJldHVybmVkX2V2ZW50 cysrOwogCi0JCQkvKiBjb3VsZCBoYXZlIGJlZW4gc2V0IGFib3ZlICovCi0JCQlzZXQtPmxh dGNoLT5tYXliZV9zbGVlcGluZyA9IGZhbHNlOwotCi0JCQlpZiAocmV0dXJuZWRfZXZlbnRz ID09IG5ldmVudHMpCi0JCQkJYnJlYWs7CQkJLyogb3V0cHV0IGJ1ZmZlciBmdWxsIGFscmVh ZHkgKi8KLQogCQkJLyoKIAkJCSAqIEV2ZW4gdGhvdWdoIHdlIGFscmVhZHkgaGF2ZSBhbiBl dmVudCwgd2UnbGwgcG9sbCBqdXN0IG9uY2Ugd2l0aAotCQkJICogemVybyB0aW1lb3V0IHRv IHNlZSB3aGF0IG5vbi1sYXRjaCBldmVudHMgd2UgY2FuIGZpdCBpbnRvIHRoZQotCQkJICog b3V0cHV0IGJ1ZmZlciBhdCB0aGUgc2FtZSB0aW1lLgorCQkJICogemVybyB0aW1lb3V0IHRv IHNlZSB3aGF0IG5vbi1pbnRlcnJ1cHQgZXZlbnRzIHdlIGNhbiBmaXQgaW50bworCQkJICog dGhlIG91dHB1dCBidWZmZXIgYXQgdGhlIHNhbWUgdGltZS4KIAkJCSAqLwogCQkJY3VyX3Rp bWVvdXQgPSAwOwogCQkJdGltZW91dCA9IDA7CiAJCX0KKwl9CiAKKwlpZiAobmV2ZW50cyA+ IHJldHVybmVkX2V2ZW50cykKKwl7CiAJCS8qCiAJCSAqIFdhaXQgZm9yIGV2ZW50cyB1c2lu ZyB0aGUgcmVhZGluZXNzIHByaW1pdGl2ZSBjaG9zZW4gYXQgdGhlIHRvcCBvZgogCQkgKiB0 aGlzIGZpbGUuIElmIC0xIGlzIHJldHVybmVkLCBhIHRpbWVvdXQgaGFzIG9jY3VycmVkLCBp ZiAwIHdlIGhhdmUKIAkJICogdG8gcmV0cnksIGV2ZXJ5dGhpbmcgPj0gMSBpcyB0aGUgbnVt YmVyIG9mIHJldHVybmVkIGV2ZW50cy4KKwkJICoKKwkJICogT24gdW5peCwgSWYgdGhlcmUn cyBhIHBlbmRpbmcgYnl0ZSBpbiB0aGUgc2VsZiBwaXBlLCB3ZSdsbCBub3RpY2UKKwkJICog d2hlbmV2ZXIgYmxvY2tpbmcuIE9ubHkgY2xlYXJpbmcgdGhlIHBpcGUgaW4gdGhhdCBjYXNl IGF2b2lkcworCQkgKiBoYXZpbmcgdG8gZHJhaW4gaXQgZXZlcnkgdGltZSBXYWl0SW50ZXJy dXB0T3JTb2NrZXQoKSBpcyB1c2VkLgorCQkgKiBTaG91bGQgdGhlIHBpcGUtYnVmZmVyIGZp bGwgdXAgd2UncmUgc3RpbGwgb2ssIGJlY2F1c2UgdGhlIHBpcGUgaXMKKwkJICogaW4gbm9u YmxvY2tpbmcgbW9kZS4gSXQncyB1bmxpa2VseSBmb3IgdGhhdCB0byBoYXBwZW4sIGJlY2F1 c2UgdGhlCisJCSAqIHNlbGYgcGlwZSBpc24ndCBmaWxsZWQgdW5sZXNzIHdlJ3JlIGJsb2Nr aW5nICh3YWl0aW5nID0gdHJ1ZSksIG9yCisJCSAqIGZyb20gaW5zaWRlIGEgc2lnbmFsIGhh bmRsZXIgaW4gaW50ZXJydXB0X3NpZ3VyZ19oYW5kbGVyKCkuCisJCSAqCisJCSAqIE9uIHdp bmRvd3MsIHdlJ2xsIGFsc28gbm90aWNlIGlmIHRoZXJlJ3MgYSBwZW5kaW5nIGV2ZW50IGZv ciB0aGUKKwkJICogaW50ZXJydXB0IHdoZW4gYmxvY2tpbmcsIGJ1dCB0aGVyZSdzIG5vIGRh bmdlciBvZiBhbnl0aGluZyBmaWxsaW5nCisJCSAqIHVwLCBhcyAiU2V0dGluZyBhbiBldmVu dCB0aGF0IGlzIGFscmVhZHkgc2V0IGhhcyBubyBlZmZlY3QuIi4KIAkJICovCi0JCXJjID0g V2FpdEV2ZW50U2V0V2FpdEJsb2NrKHNldCwgY3VyX3RpbWVvdXQsCi0JCQkJCQkJCSAgIG9j Y3VycmVkX2V2ZW50cywgbmV2ZW50cyAtIHJldHVybmVkX2V2ZW50cyk7CisJCWZvciAoOzsp CisJCXsKKwkJCWludAkJCXJjOwogCi0JCWlmIChzZXQtPmxhdGNoICYmCi0JCQlzZXQtPmxh dGNoLT5tYXliZV9zbGVlcGluZykKLQkJCXNldC0+bGF0Y2gtPm1heWJlX3NsZWVwaW5nID0g ZmFsc2U7CisJCQlyYyA9IFdhaXRFdmVudFNldFdhaXRCbG9jayhzZXQsIGN1cl90aW1lb3V0 LAorCQkJCQkJCQkJICAgb2NjdXJyZWRfZXZlbnRzLCBuZXZlbnRzIC0gcmV0dXJuZWRfZXZl bnRzKTsKIAotCQlpZiAocmMgPT0gLTEpCi0JCQlicmVhazsJCQkJLyogdGltZW91dCBvY2N1 cnJlZCAqLwotCQllbHNlCi0JCQlyZXR1cm5lZF9ldmVudHMgKz0gcmM7CisJCQlpZiAocmMg PT0gLTEpCisJCQkJYnJlYWs7CQkJLyogdGltZW91dCBvY2N1cnJlZCAqLworCQkJZWxzZQor CQkJCXJldHVybmVkX2V2ZW50cyArPSByYzsKIAotCQkvKiBJZiB3ZSdyZSBub3QgZG9uZSwg dXBkYXRlIGN1cl90aW1lb3V0IGZvciBuZXh0IGl0ZXJhdGlvbiAqLwotCQlpZiAocmV0dXJu ZWRfZXZlbnRzID09IDAgJiYgdGltZW91dCA+PSAwKQotCQl7Ci0JCQlJTlNUUl9USU1FX1NF VF9DVVJSRU5UKGN1cl90aW1lKTsKLQkJCUlOU1RSX1RJTUVfU1VCVFJBQ1QoY3VyX3RpbWUs IHN0YXJ0X3RpbWUpOwotCQkJY3VyX3RpbWVvdXQgPSB0aW1lb3V0IC0gKGxvbmcpIElOU1RS X1RJTUVfR0VUX01JTExJU0VDKGN1cl90aW1lKTsKLQkJCWlmIChjdXJfdGltZW91dCA8PSAw KQorCQkJaWYgKHJldHVybmVkX2V2ZW50cyA+IDApCiAJCQkJYnJlYWs7CisKKwkJCS8qIElm IHdlJ3JlIG5vdCBkb25lLCB1cGRhdGUgY3VyX3RpbWVvdXQgZm9yIG5leHQgaXRlcmF0aW9u ICovCisJCQlpZiAodGltZW91dCA+PSAwKQorCQkJeworCQkJCUlOU1RSX1RJTUVfU0VUX0NV UlJFTlQoY3VyX3RpbWUpOworCQkJCUlOU1RSX1RJTUVfU1VCVFJBQ1QoY3VyX3RpbWUsIHN0 YXJ0X3RpbWUpOworCQkJCWN1cl90aW1lb3V0ID0gdGltZW91dCAtIChsb25nKSBJTlNUUl9U SU1FX0dFVF9NSUxMSVNFQyhjdXJfdGltZSk7CisJCQkJaWYgKGN1cl90aW1lb3V0IDw9IDAp CisJCQkJCWJyZWFrOworCQkJfQogCQl9CiAJfQotI2lmbmRlZiBXSU4zMgorCisJLyoKKwkg KiBJZiB3ZSBzbGVwdCwgY2xlYXIgdGhlIFNMRUVQSU5HIGZsYWcgYWdhaW4gYW5kIHJlc2V0 IHRoZSBhdHRlbnRpb24gbWFzaworCSAqIGZvciBDSEVDS19GT1JfSU5URVJSVVBUUygpCisJ ICovCisJaWYgKHNsZWVwaW5nX2ZsYWdfYXJtZWQpCisJeworCQlwZ19hdG9taWNfd3JpdGVf dTMyKCZNeVBlbmRpbmdJbnRlcnJ1cHRzLT5mbGFncywgMCk7CisJCVNldEludGVycnVwdEF0 dGVudGlvbk1hc2soRW5hYmxlZEludGVycnVwdHNNYXNrKTsKKwl9CiAJd2FpdGluZyA9IGZh bHNlOwotI2VuZGlmCisKKwlSRVNVTUVfSU5URVJSVVBUUygpOwogCiAJcGdzdGF0X3JlcG9y dF93YWl0X2VuZCgpOwogCiAJcmV0dXJuIHJldHVybmVkX2V2ZW50czsKIH0KIAorLyoKKyAq IElmIFdhaXRFdmVudFNldFdhaXRCbG9jaygpIGVycm9ycyBvdXQsIGl0IGNhbGxzIFdhaXRF dmVudFNldFdhaXRBYm9ydCgpIGZpcnN0IHRvIGdldAorICogdXMgb3V0IG9mIHRoZSB3YWl0 aW5nIHN0YXRlLgorICovCitzdGF0aWMgdm9pZAorV2FpdEV2ZW50U2V0V2FpdEFib3J0KHZv aWQpCit7CisJaWYgKHdhaXRpbmcpCisJeworCQkvKgorCQkgKiBDbGVhciB0aGUgU0xFRVBJ TkcgZmxhZyBhbmQgcmVzZXQgYXR0ZW50aW9uIG1hc2sgZm9yCisJCSAqIENIRUNLX0ZPUl9J TlRFUlJVUFRTKCkuICBUaGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHdlIHNsZXB0LCBidXQK KwkJICogdGhlcmUncyBubyBoYXJtIGluIGRvaW5nIGl0IGFsd2F5cyBhbmQgdGhpcyBlcnJv ciBwYXRoIGlzbid0CisJCSAqIHBlcmZvcm1hbmNlIHNlbnNpdGl2ZS4KKwkJICovCisJCXBn X2F0b21pY193cml0ZV91MzIoJk15UGVuZGluZ0ludGVycnVwdHMtPmZsYWdzLCAwKTsKKwkJ U2V0SW50ZXJydXB0QXR0ZW50aW9uTWFzayhFbmFibGVkSW50ZXJydXB0c01hc2spOworCisJ CXdhaXRpbmcgPSBmYWxzZTsKKwl9Cit9CiAKICNpZiBkZWZpbmVkKFdBSVRfVVNFX0VQT0xM KQogCkBAIC0xMTk5LDcgKzEyNjIsNyBAQCBXYWl0RXZlbnRTZXRXYWl0QmxvY2soV2FpdEV2 ZW50U2V0ICpzZXQsIGludCBjdXJfdGltZW91dCwKIAkJLyogRUlOVFIgaXMgb2theSwgb3Ro ZXJ3aXNlIGNvbXBsYWluICovCiAJCWlmIChlcnJubyAhPSBFSU5UUikKIAkJewotCQkJd2Fp dGluZyA9IGZhbHNlOworCQkJV2FpdEV2ZW50U2V0V2FpdEFib3J0KCk7CiAJCQllcmVwb3J0 KEVSUk9SLAogCQkJCQkoZXJyY29kZV9mb3Jfc29ja2V0X2FjY2VzcygpLAogCQkJCQkgZXJy bXNnKCIlcygpIGZhaWxlZDogJW0iLApAQCAtMTIzMCwxNiArMTI5MywxNiBAQCBXYWl0RXZl bnRTZXRXYWl0QmxvY2soV2FpdEV2ZW50U2V0ICpzZXQsIGludCBjdXJfdGltZW91dCwKIAkJ b2NjdXJyZWRfZXZlbnRzLT51c2VyX2RhdGEgPSBjdXJfZXZlbnQtPnVzZXJfZGF0YTsKIAkJ b2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSAwOwogCi0JCWlmIChjdXJfZXZlbnQtPmV2ZW50 cyA9PSBXTF9MQVRDSF9TRVQgJiYKKwkJaWYgKGN1cl9ldmVudC0+ZXZlbnRzID09IFdMX0lO VEVSUlVQVCAmJgogCQkJY3VyX2Vwb2xsX2V2ZW50LT5ldmVudHMgJiAoRVBPTExJTiB8IEVQ T0xMRVJSIHwgRVBPTExIVVApKQogCQl7CiAJCQkvKiBEcmFpbiB0aGUgc2lnbmFsZmQuICov CiAJCQlkcmFpbigpOwogCi0JCQlpZiAoc2V0LT5sYXRjaCAmJiBzZXQtPmxhdGNoLT5tYXli ZV9zbGVlcGluZyAmJiBzZXQtPmxhdGNoLT5pc19zZXQpCisJCQlpZiAoc2V0LT5pbnRlcnJ1 cHRfbWFzayAhPSAwICYmIEludGVycnVwdFBlbmRpbmcoc2V0LT5pbnRlcnJ1cHRfbWFzaykp CiAJCQl7CiAJCQkJb2NjdXJyZWRfZXZlbnRzLT5mZCA9IFBHSU5WQUxJRF9TT0NLRVQ7Ci0J CQkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9MQVRDSF9TRVQ7CisJCQkJb2NjdXJy ZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9JTlRFUlJVUFQ7CiAJCQkJb2NjdXJyZWRfZXZlbnRz Kys7CiAJCQkJcmV0dXJuZWRfZXZlbnRzKys7CiAJCQl9CkBAIC0xMjYxLDcgKzEzMjQsMTAg QEAgV2FpdEV2ZW50U2V0V2FpdEJsb2NrKFdhaXRFdmVudFNldCAqc2V0LCBpbnQgY3VyX3Rp bWVvdXQsCiAJCQlpZiAoIVBvc3RtYXN0ZXJJc0FsaXZlSW50ZXJuYWwoKSkKIAkJCXsKIAkJ CQlpZiAoc2V0LT5leGl0X29uX3Bvc3RtYXN0ZXJfZGVhdGgpCisJCQkJeworCQkJCQlXYWl0 RXZlbnRTZXRXYWl0QWJvcnQoKTsKIAkJCQkJcHJvY19leGl0KDEpOworCQkJCX0KIAkJCQlv Y2N1cnJlZF9ldmVudHMtPmZkID0gUEdJTlZBTElEX1NPQ0tFVDsKIAkJCQlvY2N1cnJlZF9l dmVudHMtPmV2ZW50cyA9IFdMX1BPU1RNQVNURVJfREVBVEg7CiAJCQkJb2NjdXJyZWRfZXZl bnRzKys7CkBAIC0xMzQzLDcgKzE0MDksMTAgQEAgV2FpdEV2ZW50U2V0V2FpdEJsb2NrKFdh aXRFdmVudFNldCAqc2V0LCBpbnQgY3VyX3RpbWVvdXQsCiAJaWYgKHVubGlrZWx5KHNldC0+ cmVwb3J0X3Bvc3RtYXN0ZXJfbm90X3J1bm5pbmcpKQogCXsKIAkJaWYgKHNldC0+ZXhpdF9v bl9wb3N0bWFzdGVyX2RlYXRoKQorCQl7CisJCQlXYWl0RXZlbnRTZXRXYWl0QWJvcnQoKTsK IAkJCXByb2NfZXhpdCgxKTsKKwkJfQogCQlvY2N1cnJlZF9ldmVudHMtPmZkID0gUEdJTlZB TElEX1NPQ0tFVDsKIAkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9QT1NUTUFTVEVS X0RFQVRIOwogCQlyZXR1cm4gMTsKQEAgLTEzNjEsNyArMTQzMCw3IEBAIFdhaXRFdmVudFNl dFdhaXRCbG9jayhXYWl0RXZlbnRTZXQgKnNldCwgaW50IGN1cl90aW1lb3V0LAogCQkvKiBF SU5UUiBpcyBva2F5LCBvdGhlcndpc2UgY29tcGxhaW4gKi8KIAkJaWYgKGVycm5vICE9IEVJ TlRSKQogCQl7Ci0JCQl3YWl0aW5nID0gZmFsc2U7CisJCQlXYWl0RXZlbnRTZXRXYWl0QWJv cnQoKTsKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlX2Zvcl9zb2NrZXRfYWNj ZXNzKCksCiAJCQkJCSBlcnJtc2coIiVzKCkgZmFpbGVkOiAlbSIsCkBAIC0xMzkyLDEzICsx NDYxLDEzIEBAIFdhaXRFdmVudFNldFdhaXRCbG9jayhXYWl0RXZlbnRTZXQgKnNldCwgaW50 IGN1cl90aW1lb3V0LAogCQlvY2N1cnJlZF9ldmVudHMtPnVzZXJfZGF0YSA9IGN1cl9ldmVu dC0+dXNlcl9kYXRhOwogCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IDA7CiAKLQkJaWYg KGN1cl9ldmVudC0+ZXZlbnRzID09IFdMX0xBVENIX1NFVCAmJgorCQlpZiAoY3VyX2V2ZW50 LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUICYmCiAJCQljdXJfa3F1ZXVlX2V2ZW50LT5maWx0 ZXIgPT0gRVZGSUxUX1NJR05BTCkKIAkJewotCQkJaWYgKHNldC0+bGF0Y2ggJiYgc2V0LT5s YXRjaC0+bWF5YmVfc2xlZXBpbmcgJiYgc2V0LT5sYXRjaC0+aXNfc2V0KQorCQkJaWYgKHNl dC0+aW50ZXJydXB0X21hc2sgIT0gMCAmJiBJbnRlcnJ1cHRQZW5kaW5nKHNldC0+aW50ZXJy dXB0X21hc2spKQogCQkJewogCQkJCW9jY3VycmVkX2V2ZW50cy0+ZmQgPSBQR0lOVkFMSURf U09DS0VUOwotCQkJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gV0xfTEFUQ0hfU0VUOwor CQkJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gV0xfSU5URVJSVVBUOwogCQkJCW9jY3Vy cmVkX2V2ZW50cysrOwogCQkJCXJldHVybmVkX2V2ZW50cysrOwogCQkJfQpAQCAtMTQxNSw3 ICsxNDg0LDEwIEBAIFdhaXRFdmVudFNldFdhaXRCbG9jayhXYWl0RXZlbnRTZXQgKnNldCwg aW50IGN1cl90aW1lb3V0LAogCQkJc2V0LT5yZXBvcnRfcG9zdG1hc3Rlcl9ub3RfcnVubmlu ZyA9IHRydWU7CiAKIAkJCWlmIChzZXQtPmV4aXRfb25fcG9zdG1hc3Rlcl9kZWF0aCkKKwkJ CXsKKwkJCQlXYWl0RXZlbnRTZXRXYWl0QWJvcnQoKTsKIAkJCQlwcm9jX2V4aXQoMSk7CisJ CQl9CiAJCQlvY2N1cnJlZF9ldmVudHMtPmZkID0gUEdJTlZBTElEX1NPQ0tFVDsKIAkJCW9j Y3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gV0xfUE9TVE1BU1RFUl9ERUFUSDsKIAkJCW9jY3Vy cmVkX2V2ZW50cysrOwpAQCAtMTQ4Nyw3ICsxNTU5LDcgQEAgV2FpdEV2ZW50U2V0V2FpdEJs b2NrKFdhaXRFdmVudFNldCAqc2V0LCBpbnQgY3VyX3RpbWVvdXQsCiAJCS8qIEVJTlRSIGlz IG9rYXksIG90aGVyd2lzZSBjb21wbGFpbiAqLwogCQlpZiAoZXJybm8gIT0gRUlOVFIpCiAJ CXsKLQkJCXdhaXRpbmcgPSBmYWxzZTsKKwkJCVdhaXRFdmVudFNldFdhaXRBYm9ydCgpOwog CQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGVfZm9yX3NvY2tldF9hY2Nlc3MoKSwK IAkJCQkJIGVycm1zZygiJXMoKSBmYWlsZWQ6ICVtIiwKQEAgLTE1MTQsMTYgKzE1ODYsMTYg QEAgV2FpdEV2ZW50U2V0V2FpdEJsb2NrKFdhaXRFdmVudFNldCAqc2V0LCBpbnQgY3VyX3Rp bWVvdXQsCiAJCW9jY3VycmVkX2V2ZW50cy0+dXNlcl9kYXRhID0gY3VyX2V2ZW50LT51c2Vy X2RhdGE7CiAJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gMDsKIAotCQlpZiAoY3VyX2V2 ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hfU0VUICYmCisJCWlmIChjdXJfZXZlbnQtPmV2ZW50 cyA9PSBXTF9JTlRFUlJVUFQgJiYKIAkJCShjdXJfcG9sbGZkLT5yZXZlbnRzICYgKFBPTExJ TiB8IFBPTExIVVAgfCBQT0xMRVJSIHwgUE9MTE5WQUwpKSkKIAkJewogCQkJLyogVGhlcmUn cyBkYXRhIGluIHRoZSBzZWxmLXBpcGUsIGNsZWFyIGl0LiAqLwogCQkJZHJhaW4oKTsKIAot CQkJaWYgKHNldC0+bGF0Y2ggJiYgc2V0LT5sYXRjaC0+bWF5YmVfc2xlZXBpbmcgJiYgc2V0 LT5sYXRjaC0+aXNfc2V0KQorCQkJaWYgKHNldC0+aW50ZXJydXB0X21hc2sgIT0gMCAmJiBJ bnRlcnJ1cHRQZW5kaW5nKHNldC0+aW50ZXJydXB0X21hc2spKQogCQkJewogCQkJCW9jY3Vy cmVkX2V2ZW50cy0+ZmQgPSBQR0lOVkFMSURfU09DS0VUOwotCQkJCW9jY3VycmVkX2V2ZW50 cy0+ZXZlbnRzID0gV0xfTEFUQ0hfU0VUOworCQkJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRz ID0gV0xfSU5URVJSVVBUOwogCQkJCW9jY3VycmVkX2V2ZW50cysrOwogCQkJCXJldHVybmVk X2V2ZW50cysrOwogCQkJfQpAQCAtMTU0NSw3ICsxNjE3LDEwIEBAIFdhaXRFdmVudFNldFdh aXRCbG9jayhXYWl0RXZlbnRTZXQgKnNldCwgaW50IGN1cl90aW1lb3V0LAogCQkJaWYgKCFQ b3N0bWFzdGVySXNBbGl2ZUludGVybmFsKCkpCiAJCQl7CiAJCQkJaWYgKHNldC0+ZXhpdF9v bl9wb3N0bWFzdGVyX2RlYXRoKQorCQkJCXsKKwkJCQkJV2FpdEV2ZW50U2V0V2FpdEFib3J0 KCk7CiAJCQkJCXByb2NfZXhpdCgxKTsKKwkJCQl9CiAJCQkJb2NjdXJyZWRfZXZlbnRzLT5m ZCA9IFBHSU5WQUxJRF9TT0NLRVQ7CiAJCQkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBX TF9QT1NUTUFTVEVSX0RFQVRIOwogCQkJCW9jY3VycmVkX2V2ZW50cysrOwpAQCAtMTYyMiw2 ICsxNjk3LDE1IEBAIFdhaXRFdmVudFNldFdhaXRCbG9jayhXYWl0RXZlbnRTZXQgKnNldCwg aW50IGN1cl90aW1lb3V0LAogCQkJY3VyX2V2ZW50LT5yZXNldCA9IGZhbHNlOwogCQl9CiAK KwkJLyoKKwkJICogV2UgbmVlZCB0byB1c2UgZGlmZmVyZW50IGV2ZW50IG9iamVjdCBkZXBl bmRpbmcgb24gd2hldGhlciAibG9jYWwiCisJCSAqIG9yICJzaGFyZWQgbWVtb3J5IiBpbnRl cnJ1cHRzIGFyZSBpbiB1c2UuIFRoZXJlJ3Mgbm8gZWFzeSB3YXkgdG8KKwkJICogYWRqdXN0 IGFsbCBleGlzdGluZyBXYWl0RXZlbnRTZXQgd2hlbiB5b3Ugc3dpdGNoIGZyb20gbG9jYWwg dG8KKwkJICogc2hhcmVkIG9yIGJhY2ssIHNvIHdlIHJlZnJlc2ggaXQgb24gZXZlcnkgY2Fs bC4KKwkJICovCisJCWlmIChjdXJfZXZlbnQtPmV2ZW50cyAmIFdMX0lOVEVSUlVQVCkKKwkJ CVdhaXRFdmVudEFkanVzdFdpbjMyKHNldCwgY3VyX2V2ZW50KTsKKwogCQkvKgogCQkgKiBX ZSBhc3NvY2lhdGUgdGhlIHNvY2tldCB3aXRoIGEgbmV3IGV2ZW50IGhhbmRsZSBmb3IgZWFj aAogCQkgKiBXYWl0RXZlbnRTZXQuICBGRF9DTE9TRSBpcyBvbmx5IGdlbmVyYXRlZCBvbmNl IGlmIHRoZSBvdGhlciBlbmQKQEAgLTE2OTcsOCArMTc4MSwxMSBAQCBXYWl0RXZlbnRTZXRX YWl0QmxvY2soV2FpdEV2ZW50U2V0ICpzZXQsIGludCBjdXJfdGltZW91dCwKIAogCS8qIENo ZWNrIHJldHVybiBjb2RlICovCiAJaWYgKHJjID09IFdBSVRfRkFJTEVEKQorCXsKKwkJV2Fp dEV2ZW50U2V0V2FpdEFib3J0KCk7CiAJCWVsb2coRVJST1IsICJXYWl0Rm9yTXVsdGlwbGVP YmplY3RzKCkgZmFpbGVkOiBlcnJvciBjb2RlICVsdSIsCiAJCQkgR2V0TGFzdEVycm9yKCkp OworCX0KIAllbHNlIGlmIChyYyA9PSBXQUlUX1RJTUVPVVQpCiAJewogCQkvKiB0aW1lb3V0 IGV4Y2VlZGVkICovCkBAIC0xNzI3LDE5ICsxODE0LDE4IEBAIFdhaXRFdmVudFNldFdhaXRC bG9jayhXYWl0RXZlbnRTZXQgKnNldCwgaW50IGN1cl90aW1lb3V0LAogCQlvY2N1cnJlZF9l dmVudHMtPnVzZXJfZGF0YSA9IGN1cl9ldmVudC0+dXNlcl9kYXRhOwogCQlvY2N1cnJlZF9l dmVudHMtPmV2ZW50cyA9IDA7CiAKLQkJaWYgKGN1cl9ldmVudC0+ZXZlbnRzID09IFdMX0xB VENIX1NFVCkKKwkJaWYgKGN1cl9ldmVudC0+ZXZlbnRzID09IFdMX0lOVEVSUlVQVCkKIAkJ ewotCQkJLyoKLQkJCSAqIFdlIGNhbm5vdCB1c2Ugc2V0LT5sYXRjaC0+ZXZlbnQgdG8gcmVz ZXQgdGhlIGZpcmVkIGV2ZW50IGlmIHdlCi0JCQkgKiBhcmVuJ3Qgd2FpdGluZyBvbiB0aGlz IGxhdGNoIG5vdy4KLQkJCSAqLwogCQkJaWYgKCFSZXNldEV2ZW50KHNldC0+aGFuZGxlc1tj dXJfZXZlbnQtPnBvcyArIDFdKSkKKwkJCXsKKwkJCQlXYWl0RXZlbnRTZXRXYWl0QWJvcnQo KTsKIAkJCQllbG9nKEVSUk9SLCAiUmVzZXRFdmVudCBmYWlsZWQ6IGVycm9yIGNvZGUgJWx1 IiwgR2V0TGFzdEVycm9yKCkpOworCQkJfQogCi0JCQlpZiAoc2V0LT5sYXRjaCAmJiBzZXQt PmxhdGNoLT5tYXliZV9zbGVlcGluZyAmJiBzZXQtPmxhdGNoLT5pc19zZXQpCisJCQlpZiAo c2V0LT5pbnRlcnJ1cHRfbWFzayAhPSAwICYmIEludGVycnVwdFBlbmRpbmcoc2V0LT5pbnRl cnJ1cHRfbWFzaykpCiAJCQl7CiAJCQkJb2NjdXJyZWRfZXZlbnRzLT5mZCA9IFBHSU5WQUxJ RF9TT0NLRVQ7Ci0JCQkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9MQVRDSF9TRVQ7 CisJCQkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9JTlRFUlJVUFQ7CiAJCQkJb2Nj dXJyZWRfZXZlbnRzKys7CiAJCQkJcmV0dXJuZWRfZXZlbnRzKys7CiAJCQl9CkBAIC0xNzU2 LDcgKzE4NDIsMTAgQEAgV2FpdEV2ZW50U2V0V2FpdEJsb2NrKFdhaXRFdmVudFNldCAqc2V0 LCBpbnQgY3VyX3RpbWVvdXQsCiAJCQlpZiAoIVBvc3RtYXN0ZXJJc0FsaXZlSW50ZXJuYWwo KSkKIAkJCXsKIAkJCQlpZiAoc2V0LT5leGl0X29uX3Bvc3RtYXN0ZXJfZGVhdGgpCisJCQkJ eworCQkJCQlXYWl0RXZlbnRTZXRXYWl0QWJvcnQoKTsKIAkJCQkJcHJvY19leGl0KDEpOwor CQkJCX0KIAkJCQlvY2N1cnJlZF9ldmVudHMtPmZkID0gUEdJTlZBTElEX1NPQ0tFVDsKIAkJ CQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IFdMX1BPU1RNQVNURVJfREVBVEg7CiAJCQkJ b2NjdXJyZWRfZXZlbnRzKys7CkBAIC0xNzc0LDggKzE4NjMsMTEgQEAgV2FpdEV2ZW50U2V0 V2FpdEJsb2NrKFdhaXRFdmVudFNldCAqc2V0LCBpbnQgY3VyX3RpbWVvdXQsCiAKIAkJCVpl cm9NZW1vcnkoJnJlc0V2ZW50cywgc2l6ZW9mKHJlc0V2ZW50cykpOwogCQkJaWYgKFdTQUVu dW1OZXR3b3JrRXZlbnRzKGN1cl9ldmVudC0+ZmQsIGhhbmRsZSwgJnJlc0V2ZW50cykgIT0g MCkKKwkJCXsKKwkJCQlXYWl0RXZlbnRTZXRXYWl0QWJvcnQoKTsKIAkJCQllbG9nKEVSUk9S LCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBuZXR3b3JrIGV2ZW50czogZXJyb3IgY29kZSAlZCIs CiAJCQkJCSBXU0FHZXRMYXN0RXJyb3IoKSk7CisJCQl9CiAJCQlpZiAoKGN1cl9ldmVudC0+ ZXZlbnRzICYgV0xfU09DS0VUX1JFQURBQkxFKSAmJgogCQkJCShyZXNFdmVudHMubE5ldHdv cmtFdmVudHMgJiBGRF9SRUFEKSkKIAkJCXsKQEAgLTE3ODQsNyArMTg3Niw3IEBAIFdhaXRF dmVudFNldFdhaXRCbG9jayhXYWl0RXZlbnRTZXQgKnNldCwgaW50IGN1cl90aW1lb3V0LAog CiAJCQkJLyotLS0tLS0KIAkJCQkgKiBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIGRvZXNuJ3Qg Z3VhcmFudGVlIHRoYXQgYSByZWFkIGV2ZW50Ci0JCQkJICogd2lsbCBiZSByZXR1cm5lZCBp ZiB0aGUgbGF0Y2ggaXMgc2V0IGF0IHRoZSBzYW1lIHRpbWUuICBFdmVuCisJCQkJICogd2ls bCBiZSByZXR1cm5lZCBpZiB0aGUgaW50ZXJydXB0IGlzIHNldCBhdCB0aGUgc2FtZSB0aW1l LiAgRXZlbgogCQkJCSAqIGlmIGl0IGRpZCwgdGhlIGNhbGxlciBtaWdodCBkcm9wIHRoYXQg ZXZlbnQgZXhwZWN0aW5nIGl0IHRvCiAJCQkJICogcmVvY2N1ciBvbiBuZXh0IGNhbGwuICBT bywgd2UgbXVzdCBmb3JjZSB0aGUgZXZlbnQgdG8gYmUKIAkJCQkgKiByZXNldCBpZiB0aGlz IFdhaXRFdmVudFNldCBpcyB1c2VkIGFnYWluIGluIG9yZGVyIHRvIGF2b2lkCkBAIC0xODkw LDE4ICsxOTgyLDE3IEBAIEdldE51bVJlZ2lzdGVyZWRXYWl0RXZlbnRzKFdhaXRFdmVudFNl dCAqc2V0KQogI2lmIGRlZmluZWQoV0FJVF9VU0VfU0VMRl9QSVBFKQogCiAvKgotICogU2V0 TGF0Y2ggdXNlcyBTSUdVUkcgdG8gd2FrZSB1cCB0aGUgcHJvY2VzcyB3YWl0aW5nIG9uIHRo ZSBsYXRjaC4KLSAqCi0gKiBXYWtlIHVwIFdhaXRMYXRjaCwgaWYgd2UncmUgd2FpdGluZy4K KyAqIFdha2V1cE90aGVyUHJvYyBhbmQgV2FrdXBNeVByb2MgdXNlIFNJR1VSRyB0byB3YWtl IHVwIHRoZSBwcm9jZXNzIHdhaXRpbmcKKyAqIGZvciBhbiBpbnRlcnJ1cHQKICAqLwogc3Rh dGljIHZvaWQKLWxhdGNoX3NpZ3VyZ19oYW5kbGVyKFNJR05BTF9BUkdTKQoraW50ZXJydXB0 X3NpZ3VyZ19oYW5kbGVyKFNJR05BTF9BUkdTKQogewogCWlmICh3YWl0aW5nKQogCQlzZW5k U2VsZlBpcGVCeXRlKCk7CiB9CiAKLS8qIFNlbmQgb25lIGJ5dGUgdG8gdGhlIHNlbGYtcGlw ZSwgdG8gd2FrZSB1cCBXYWl0TGF0Y2ggKi8KKy8qIFNlbmQgb25lIGJ5dGUgdG8gdGhlIHNl bGYtcGlwZSwgdG8gd2FrZSB1cCBXYWl0SW50ZXJydXB0ICovCiBzdGF0aWMgdm9pZAogc2Vu ZFNlbGZQaXBlQnl0ZSh2b2lkKQogewpAQCAtMTkxOCw3ICsyMDA5LDcgQEAgcmV0cnk6CiAK IAkJLyoKIAkJICogSWYgdGhlIHBpcGUgaXMgZnVsbCwgd2UgZG9uJ3QgbmVlZCB0byByZXRy eSwgdGhlIGRhdGEgdGhhdCdzIHRoZXJlCi0JCSAqIGFscmVhZHkgaXMgZW5vdWdoIHRvIHdh a2UgdXAgV2FpdExhdGNoLgorCQkgKiBhbHJlYWR5IGlzIGVub3VnaCB0byB3YWtlIHVwIFdh aXRJbnRlcnJ1cHQuCiAJCSAqLwogCQlpZiAoZXJybm8gPT0gRUFHQUlOIHx8IGVycm5vID09 IEVXT1VMREJMT0NLKQogCQkJcmV0dXJuOwpAQCAtMTk2Nyw3ICsyMDU4LDcgQEAgZHJhaW4o dm9pZCkKIAkJCQljb250aW51ZTsJCS8qIHJldHJ5ICovCiAJCQllbHNlCiAJCQl7Ci0JCQkJ d2FpdGluZyA9IGZhbHNlOworCQkJCVdhaXRFdmVudFNldFdhaXRBYm9ydCgpOwogI2lmZGVm IFdBSVRfVVNFX1NFTEZfUElQRQogCQkJCWVsb2coRVJST1IsICJyZWFkKCkgb24gc2VsZi1w aXBlIGZhaWxlZDogJW0iKTsKICNlbHNlCkBAIC0xOTc3LDcgKzIwNjgsNyBAQCBkcmFpbih2 b2lkKQogCQl9CiAJCWVsc2UgaWYgKHJjID09IDApCiAJCXsKLQkJCXdhaXRpbmcgPSBmYWxz ZTsKKwkJCVdhaXRFdmVudFNldFdhaXRBYm9ydCgpOwogI2lmZGVmIFdBSVRfVVNFX1NFTEZf UElQRQogCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgRU9GIG9uIHNlbGYtcGlwZSIpOwog I2Vsc2UKQEAgLTIwMDUsNyArMjA5Niw2IEBAIFJlc093bmVyUmVsZWFzZVdhaXRFdmVudFNl dChEYXR1bSByZXMpCiAJRnJlZVdhaXRFdmVudFNldChzZXQpOwogfQogCi0jaWZuZGVmIFdJ TjMyCiAvKgogICogV2FrZSB1cCBteSBwcm9jZXNzIGlmIGl0J3MgY3VycmVudGx5IHNsZWVw aW5nIGluIFdhaXRFdmVudFNldFdhaXRCbG9jaygpCiAgKgpAQCAtMjAxNSwxMiArMjEwNSwx MSBAQCBSZXNPd25lclJlbGVhc2VXYWl0RXZlbnRTZXQoRGF0dW0gcmVzKQogICoKICAqIE5C OiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGNyaXRpY2FsIHNlY3Rpb25zIGFuZCBz aWduYWwgaGFuZGxlcnMgc28KICAqIHRocm93aW5nIGFuIGVycm9yIGlzIG5vdCBhIGdvb2Qg aWRlYS4KLSAqCi0gKiBPbiBXaW5kb3dzLCBMYXRjaCB1c2VzIFNldEV2ZW50IGRpcmVjdGx5 IGFuZCB0aGlzIGlzIG5vdCB1c2VkLgogICovCiB2b2lkCiBXYWtldXBNeVByb2Modm9pZCkK IHsKKyNpZm5kZWYgV0lOMzIKICNpZiBkZWZpbmVkKFdBSVRfVVNFX1NFTEZfUElQRSkKIAlp ZiAod2FpdGluZykKIAkJc2VuZFNlbGZQaXBlQnl0ZSgpOwpAQCAtMjAyOCwxMiArMjExNywy OCBAQCBXYWtldXBNeVByb2Modm9pZCkKIAlpZiAod2FpdGluZykKIAkJa2lsbChNeVByb2NQ aWQsIFNJR1VSRyk7CiAjZW5kaWYKKyNlbHNlCisJU2V0RXZlbnQoTXlQcm9jID8gTXlQcm9j LT5pbnRlcnJ1cHRXYWtldXBFdmVudCA6IExvY2FsSW50ZXJydXB0V2FrZXVwRXZlbnQpOwor I2VuZGlmCiB9CiAKIC8qIFNpbWlsYXIgdG8gV2FrZXVwTXlQcm9jLCBidXQgd2FrZSB1cCBh bm90aGVyIHByb2Nlc3MgKi8KIHZvaWQKLVdha2V1cE90aGVyUHJvYyhpbnQgcGlkKQorV2Fr ZXVwT3RoZXJQcm9jKFBHUFJPQyAqcHJvYykKIHsKLQlraWxsKHBpZCwgU0lHVVJHKTsKLX0K KwkvKgorCSAqIE5vdGU6IFRoaXMgY2FuIGFsc28gYmUgY2FsbGVkIGZyb20gdGhlIHBvc3Rt YXN0ZXIsIHNvIGJlIGNhcmVmdWwgdG8gbm90CisJICogYXNzdW1lIHRoYXQgdGhlIGNvbnRl bnRzIG9mIHNoYXJlZCBtZW1vcnkgYXJlIHZhbGlkLiAgUmVhZGluZyB0aGUgJ3BpZCcKKwkg KiAob3IgZXZlbnQgaGFuZGxlIG9uIFdpbmRvd3MpIGlzIHNhZmUgZW5vdWdoLgorCSAqLwor I2lmbmRlZiBXSU4zMgorCWtpbGwocHJvYy0+cGlkLCBTSUdVUkcpOworI2Vsc2UKKwlTZXRF dmVudChwcm9jLT5pbnRlcnJ1cHRXYWtldXBFdmVudCk7CisKKwkvKgorCSAqIE5vdGUgdGhh dCB3ZSBzaWxlbnRseSBpZ25vcmUgYW55IGVycm9ycy4gV2UgbWlnaHQgYmUgaW4gYSBzaWdu YWwKKwkgKiBoYW5kbGVyIG9yIG90aGVyIGNyaXRpY2FsIHBhdGggd2hlcmUgaXQncyBub3Qg c2FmZSB0byBjYWxsIGVsb2coKS4KKwkgKi8KICNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jCmluZGV4IDNhNjJhNDQ3YWNh Li41OTMwNzcwMWY5NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2Nv bmRpdGlvbl92YXJpYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9jb25k aXRpb25fdmFyaWFibGUuYwpAQCAtMTQ5LDIzICsxNDksMjQgQEAgQ29uZGl0aW9uVmFyaWFi bGVUaW1lZFNsZWVwKENvbmRpdGlvblZhcmlhYmxlICpjdiwgbG9uZyB0aW1lb3V0LAogCQlJ TlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0X3RpbWUpOwogCQlBc3NlcnQodGltZW91dCA+ PSAwICYmIHRpbWVvdXQgPD0gSU5UX01BWCk7CiAJCWN1cl90aW1lb3V0ID0gdGltZW91dDsK LQkJd2FpdF9ldmVudHMgPSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9P Tl9QTV9ERUFUSDsKKwkJd2FpdF9ldmVudHMgPSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VU IHwgV0xfRVhJVF9PTl9QTV9ERUFUSDsKIAl9CiAJZWxzZQotCQl3YWl0X2V2ZW50cyA9IFdM X0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEg7CisJCXdhaXRfZXZlbnRzID0gV0xf SU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSDsKIAogCXdoaWxlICh0cnVlKQogCXsK IAkJYm9vbAkJZG9uZSA9IGZhbHNlOwogCiAJCS8qCi0JCSAqIFdhaXQgZm9yIGxhdGNoIHRv IGJlIHNldC4gIChJZiB3ZSdyZSBhd2FrZW5lZCBmb3Igc29tZSBvdGhlcgotCQkgKiByZWFz b24sIHRoZSBjb2RlIGJlbG93IHdpbGwgY29wZSBhbnl3YXkuKQorCQkgKiBXYWl0IGZvciBp bnRlcnJ1cHQuICAoSWYgd2UncmUgYXdha2VuZWQgZm9yIHNvbWUgb3RoZXIgcmVhc29uLCB0 aGUKKwkJICogY29kZSBiZWxvdyB3aWxsIGNvcGUgYW55d2F5LikKIAkJICovCi0JCSh2b2lk KSBXYWl0TGF0Y2goTXlMYXRjaCwgd2FpdF9ldmVudHMsIGN1cl90aW1lb3V0LCB3YWl0X2V2 ZW50X2luZm8pOworCQkodm9pZCkgV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNN YXNrIHwgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJCQkJCSB3YWl0X2V2ZW50cywgY3Vy X3RpbWVvdXQsIHdhaXRfZXZlbnRfaW5mbyk7CiAKLQkJLyogUmVzZXQgbGF0Y2ggYmVmb3Jl IGV4YW1pbmluZyB0aGUgc3RhdGUgb2YgdGhlIHdhaXQgbGlzdC4gKi8KLQkJUmVzZXRMYXRj aChNeUxhdGNoKTsKKwkJLyogQ2xlYXIgdGhlIGZsYWcgYmVmb3JlIGV4YW1pbmluZyB0aGUg c3RhdGUgb2YgdGhlIHdhaXQgbGlzdC4gKi8KKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBU X1dBSVRfV0FLRVVQKTsKIAogCQkvKgogCQkgKiBJZiB0aGlzIHByb2Nlc3MgaGFzIGJlZW4g dGFrZW4gb3V0IG9mIHRoZSB3YWl0IGxpc3QsIHRoZW4gd2Uga25vdwpAQCAtMTc4LDkgKzE3 OSwxMCBAQCBDb25kaXRpb25WYXJpYWJsZVRpbWVkU2xlZXAoQ29uZGl0aW9uVmFyaWFibGUg KmN2LCBsb25nIHRpbWVvdXQsCiAJCSAqIHRoZSB3YWl0IGxpc3Qgb25seSB3aGVuIHRoZSBj YWxsZXIgY2FsbHMKIAkJICogQ29uZGl0aW9uVmFyaWFibGVDYW5jZWxTbGVlcC4KIAkJICoK LQkJICogSWYgd2UncmUgc3RpbGwgaW4gdGhlIHdhaXQgbGlzdCwgdGhlbiB0aGUgbGF0Y2gg bXVzdCBoYXZlIGJlZW4gc2V0Ci0JCSAqIGJ5IHNvbWV0aGluZyBvdGhlciB0aGFuIENvbmRp dGlvblZhcmlhYmxlU2lnbmFsOyB0aG91Z2ggd2UgZG9uJ3QKLQkJICogZ3VhcmFudGVlIG5v dCB0byByZXR1cm4gc3B1cmlvdXNseSwgd2UnbGwgYXZvaWQgdGhpcyBvYnZpb3VzIGNhc2Uu CisJCSAqIElmIHdlJ3JlIHN0aWxsIGluIHRoZSB3YWl0IGxpc3QsIHRoZW4gdGhlIGludGVy cnVwdCBtdXN0IGhhdmUgYmVlbgorCQkgKiBzZW50IGJ5IHNvbWV0aGluZyBvdGhlciB0aGFu IENvbmRpdGlvblZhcmlhYmxlU2lnbmFsOyB0aG91Z2ggd2UKKwkJICogZG9uJ3QgZ3VhcmFu dGVlIG5vdCB0byByZXR1cm4gc3B1cmlvdXNseSwgd2UnbGwgYXZvaWQgdGhpcyBvYnZpb3Vz CisJCSAqIGNhc2UuCiAJCSAqLwogCQlTcGluTG9ja0FjcXVpcmUoJmN2LT5tdXRleCk7CiAJ CWlmICghcHJvY2xpc3RfY29udGFpbnMoJmN2LT53YWtldXAsIE15UHJvY051bWJlciwgY3ZX YWl0TGluaykpCkBAIC0yNjgsOSArMjcwLDkgQEAgQ29uZGl0aW9uVmFyaWFibGVTaWduYWwo Q29uZGl0aW9uVmFyaWFibGUgKmN2KQogCQlwcm9jID0gcHJvY2xpc3RfcG9wX2hlYWRfbm9k ZSgmY3YtPndha2V1cCwgY3ZXYWl0TGluayk7CiAJU3BpbkxvY2tSZWxlYXNlKCZjdi0+bXV0 ZXgpOwogCi0JLyogSWYgd2UgZm91bmQgc29tZW9uZSBzbGVlcGluZywgc2V0IHRoZWlyIGxh dGNoIHRvIHdha2UgdGhlbSB1cC4gKi8KKwkvKiBJZiB3ZSBmb3VuZCBzb21lb25lIHNsZWVw aW5nLCB3YWtlIHRoZW0gdXAuICovCiAJaWYgKHByb2MgIT0gTlVMTCkKLQkJU2V0TGF0Y2go JnByb2MtPnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FL RVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKHByb2MpKTsKIH0KIAogLyoKQEAgLTI5OSw4ICsz MDEsOCBAQCBDb25kaXRpb25WYXJpYWJsZUJyb2FkY2FzdChDb25kaXRpb25WYXJpYWJsZSAq Y3YpCiAJICogQ1YgYW5kIGluIGRvaW5nIHNvIHJlbW92ZSBvdXIgc2VudGluZWwgZW50cnku ICBCdXQgdGhhdCdzIGZpbmU6IHNpbmNlCiAJICogQ1Ygd2FpdGVycyBhcmUgYWx3YXlzIGFk ZGVkIGFuZCByZW1vdmVkIGluIG9yZGVyLCB0aGF0IG11c3QgbWVhbiB0aGF0CiAJICogZXZl cnkgcHJldmlvdXMgd2FpdGVyIGhhcyBiZWVuIHdha2VuZWQsIHNvIHdlJ3JlIGRvbmUuICBX ZSdsbCBnZXQgYW4KLQkgKiBleHRyYSAic2V0IiBvbiBvdXIgbGF0Y2ggZnJvbSB0aGUgc29t ZW9uZSBlbHNlJ3Mgc2lnbmFsLCB3aGljaCBpcwotCSAqIHNsaWdodGx5IGluZWZmaWNpZW50 IGJ1dCBoYXJtbGVzcy4KKwkgKiBleHRyYSBpbnRlcnJ1cHQgZnJvbSB0aGUgc29tZW9uZSBl bHNlJ3Mgc2lnbmFsLCB3aGljaCBpcyBzbGlnaHRseQorCSAqIGluZWZmaWNpZW50IGJ1dCBo YXJtbGVzcy4KIAkgKgogCSAqIFdlIGNhbid0IGluc2VydCBvdXIgY3ZXYWl0TGluayBhcyBh IHNlbnRpbmVsIGlmIGl0J3MgYWxyZWFkeSBpbiB1c2UgaW4KIAkgKiBzb21lIG90aGVyIHBy b2NsaXN0LiAgV2hpbGUgdGhhdCdzIG5vdCBleHBlY3RlZCB0byBiZSB0cnVlIGZvciB0eXBp Y2FsCkBAIC0zMzMsNyArMzM1LDcgQEAgQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoQ29u ZGl0aW9uVmFyaWFibGUgKmN2KQogCiAJLyogQXdha2VuIGZpcnN0IHdhaXRlciwgaWYgdGhl cmUgd2FzIG9uZS4gKi8KIAlpZiAocHJvYyAhPSBOVUxMKQotCQlTZXRMYXRjaCgmcHJvYy0+ cHJvY0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAsIEdl dE51bWJlckZyb21QR1Byb2MocHJvYykpOwogCiAJd2hpbGUgKGhhdmVfc2VudGluZWwpCiAJ ewpAQCAtMzU3LDYgKzM1OSw2IEBAIENvbmRpdGlvblZhcmlhYmxlQnJvYWRjYXN0KENvbmRp dGlvblZhcmlhYmxlICpjdikKIAkJU3BpbkxvY2tSZWxlYXNlKCZjdi0+bXV0ZXgpOwogCiAJ CWlmIChwcm9jICE9IE5VTEwgJiYgcHJvYyAhPSBNeVByb2MpCi0JCQlTZXRMYXRjaCgmcHJv Yy0+cHJvY0xhdGNoKTsKKwkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQ LCBHZXROdW1iZXJGcm9tUEdQcm9jKHByb2MpKTsKIAl9CiB9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2xtZ3IvcHJlZGljYXRlLmMKaW5kZXggMGFlODViN2Q1YjQuLmNiYzcxMjE5NmVhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKKysrIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCkBAIC0yMDAsNiArMjAwLDcgQEAK ICNpbmNsdWRlICJhY2Nlc3MvdHdvcGhhc2Vfcm1nci5oIgogI2luY2x1ZGUgImFjY2Vzcy94 YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJy dXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAj aW5jbHVkZSAicG9ydC9wZ19sZmluZC5oIgpAQCAtMTUxNSw3ICsxNTE2LDExIEBAIEdldFNh ZmVTbmFwc2hvdChTbmFwc2hvdCBvcmlnU25hcHNob3QpCiAJCQkJIFN4YWN0SXNST1Vuc2Fm ZShNeVNlcmlhbGl6YWJsZVhhY3QpKSkKIAkJewogCQkJTFdMb2NrUmVsZWFzZShTZXJpYWxp emFibGVYYWN0SGFzaExvY2spOwotCQkJUHJvY1dhaXRGb3JTaWduYWwoV0FJVF9FVkVOVF9T QUZFX1NOQVBTSE9UKTsKKwkJCVdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFz ayB8IElOVEVSUlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkJCSAgV0xfSU5URVJSVVBUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJCQkJCSAgV0FJVF9FVkVOVF9TQUZFX1NOQVBTSE9U KTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CisJCQlDSEVD S19GT1JfSU5URVJSVVBUUygpOwogCQkJTFdMb2NrQWNxdWlyZShTZXJpYWxpemFibGVYYWN0 SGFzaExvY2ssIExXX0VYQ0xVU0lWRSk7CiAJCX0KIAkJTXlTZXJpYWxpemFibGVYYWN0LT5m bGFncyAmPSB+U1hBQ1RfRkxBR19ERUZFUlJBQkxFX1dBSVRJTkc7CkBAIC0zNTQ4LDcgKzM1 NTMsNyBAQCBSZWxlYXNlUHJlZGljYXRlTG9ja3MoYm9vbCBpc0NvbW1pdCwgYm9vbCBpc1Jl YWRPbmx5U2FmZSkKIAkJCSAqLwogCQkJaWYgKFN4YWN0SXNEZWZlcnJhYmxlV2FpdGluZyhy b1hhY3QpICYmCiAJCQkJKFN4YWN0SXNST1Vuc2FmZShyb1hhY3QpIHx8IFN4YWN0SXNST1Nh ZmUocm9YYWN0KSkpCi0JCQkJUHJvY1NlbmRTaWduYWwocm9YYWN0LT5wZ3Byb2Nubyk7CisJ CQkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAsIHJvWGFjdC0+cGdwcm9j bm8pOwogCQl9CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv cHJvYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwppbmRleCBkOWIwZDhm NjJjZS4uNjY5ZGMzMTg5MDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9wcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpAQCAtMjQz LDYgKzI0Myw4IEBAIFByb2NHbG9iYWxTaG1lbUluaXQodm9pZCAqYXJnKQogCXBnX2F0b21p Y19pbml0X3UzMigmUHJvY0dsb2JhbC0+YXZMYXVuY2hlclByb2MsIElOVkFMSURfUFJPQ19O VU1CRVIpOwogCXBnX2F0b21pY19pbml0X3UzMigmUHJvY0dsb2JhbC0+d2Fsd3JpdGVyUHJv YywgSU5WQUxJRF9QUk9DX05VTUJFUik7CiAJcGdfYXRvbWljX2luaXRfdTMyKCZQcm9jR2xv YmFsLT5jaGVja3BvaW50ZXJQcm9jLCBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwlwZ19hdG9t aWNfaW5pdF91MzIoJlByb2NHbG9iYWwtPndhbHJlY2VpdmVyUHJvYywgSU5WQUxJRF9QUk9D X05VTUJFUik7CisJcGdfYXRvbWljX2luaXRfdTMyKCZQcm9jR2xvYmFsLT5zdGFydHVwUHJv YywgSU5WQUxJRF9QUk9DX05VTUJFUik7CiAJcGdfYXRvbWljX2luaXRfdTMyKCZQcm9jR2xv YmFsLT5wcm9jQXJyYXlHcm91cEZpcnN0LCBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAlwZ19h dG9taWNfaW5pdF91MzIoJlByb2NHbG9iYWwtPmNsb2dHcm91cEZpcnN0LCBJTlZBTElEX1BS T0NfTlVNQkVSKTsKIApAQCAtMzE0LDE0ICszMTYsMjggQEAgUHJvY0dsb2JhbFNobWVtSW5p dCh2b2lkICphcmcpCiAJCUFzc2VydChmcFB0ciA8PSBmcEVuZFB0cik7CiAKIAkJLyoKLQkJ ICogU2V0IHVwIHBlci1QR1BST0Mgc2VtYXBob3JlLCBsYXRjaCwgYW5kIGZwSW5mb0xvY2su ICBQcmVwYXJlZCB4YWN0Ci0JCSAqIGR1bW15IFBHUFJPQ3MgZG9uJ3QgbmVlZCB0aGVzZSB0 aG91Z2ggLSB0aGV5J3JlIG5ldmVyIGFzc29jaWF0ZWQKLQkJICogd2l0aCBhIHJlYWwgcHJv Y2VzcworCQkgKiBTZXQgdXAgcGVyLVBHUFJPQyBzZW1hcGhvcmUsIGludGVycnVwdCB3YWtl dXAgZXZlbnQgKG9uIFdpbmRvd3MpLAorCQkgKiBhbmQgZnBJbmZvTG9jay4gIFByZXBhcmVk IHhhY3QgZHVtbXkgUEdQUk9DcyBkb24ndCBuZWVkIHRoZXNlCisJCSAqIHRob3VnaCAtIHRo ZXkncmUgbmV2ZXIgYXNzb2NpYXRlZCB3aXRoIGEgcmVhbCBwcm9jZXNzCiAJCSAqLwogCQlp ZiAoaSA8IEZJUlNUX1BSRVBBUkVEX1hBQ1RfUFJPQ19OVU1CRVIpCiAJCXsKKyNpZmRlZiBX SU4zMgorCQkJU0VDVVJJVFlfQVRUUklCVVRFUyBzYTsKKworCQkJLyoKKwkJCSAqIFNldCB1 cCBzZWN1cml0eSBhdHRyaWJ1dGVzIHRvIHNwZWNpZnkgdGhhdCB0aGUgZXZlbnRzIGFyZQor CQkJICogaW5oZXJpdGVkLgorCQkJICovCisJCQlaZXJvTWVtb3J5KCZzYSwgc2l6ZW9mKHNh KSk7CisJCQlzYS5uTGVuZ3RoID0gc2l6ZW9mKHNhKTsKKwkJCXNhLmJJbmhlcml0SGFuZGxl ID0gVFJVRTsKKworCQkJcHJvYy0+aW50ZXJydXB0V2FrZXVwRXZlbnQgPSBDcmVhdGVFdmVu dCgmc2EsIFRSVUUsIEZBTFNFLCBOVUxMKTsKKwkJCWlmIChwcm9jLT5pbnRlcnJ1cHRXYWtl dXBFdmVudCA9PSBOVUxMKQorCQkJCWVsb2coRVJST1IsICJDcmVhdGVFdmVudCBmYWlsZWQ6 IGVycm9yIGNvZGUgJWx1IiwgR2V0TGFzdEVycm9yKCkpOworI2VuZGlmCiAJCQlwcm9jLT5z ZW0gPSBQR1NlbWFwaG9yZUNyZWF0ZSgpOwotCQkJSW5pdFNoYXJlZExhdGNoKCYocHJvYy0+ cHJvY0xhdGNoKSk7CiAJCQlMV0xvY2tJbml0aWFsaXplKCYocHJvYy0+ZnBJbmZvTG9jayks IExXVFJBTkNIRV9MT0NLX0ZBU1RQQVRIKTsKIAkJfQogCkBAIC01MzIsMTMgKzU0OCw4IEBA IEluaXRQcm9jZXNzKHZvaWQpCiAJTXlQcm9jLT5jbG9nR3JvdXBNZW1iZXJMc24gPSBJbnZh bGlkWExvZ1JlY1B0cjsKIAlBc3NlcnQocGdfYXRvbWljX3JlYWRfdTMyKCZNeVByb2MtPmNs b2dHcm91cE5leHQpID09IElOVkFMSURfUFJPQ19OVU1CRVIpOwogCi0JLyoKLQkgKiBBY3F1 aXJlIG93bmVyc2hpcCBvZiB0aGUgUEdQUk9DJ3MgbGF0Y2gsIHNvIHRoYXQgd2UgY2FuIHVz ZSBXYWl0TGF0Y2gKLQkgKiBvbiBpdC4gIFRoYXQgYWxsb3dzIHVzIHRvIHJlcG9pbnQgdGhl IHByb2Nlc3MgbGF0Y2gsIHdoaWNoIHNvIGZhcgotCSAqIHBvaW50cyB0byBwcm9jZXNzIGxv Y2FsIG9uZSwgdG8gdGhlIHNoYXJlZCBvbmUuCi0JICovCi0JT3duTGF0Y2goJk15UHJvYy0+ cHJvY0xhdGNoKTsKLQlTd2l0Y2hUb1NoYXJlZExhdGNoKCk7CisJLyogU3RhcnQgYWNjZXB0 aW5nIGludGVycnVwdHMgZnJvbSBvdGhlciBwcm9jZXNzZXMgKi8KKwlTd2l0Y2hUb1NoYXJl ZEludGVycnVwdHMoKTsKIAogCS8qIG5vdyB0aGF0IHdlIGhhdmUgYSBwcm9jLCByZXBvcnQg d2FpdCBldmVudHMgdG8gc2hhcmVkIG1lbW9yeSAqLwogCXBnc3RhdF9zZXRfd2FpdF9ldmVu dF9zdG9yYWdlKCZNeVByb2MtPndhaXRfZXZlbnRfaW5mbyk7CkBAIC03MDQsMTMgKzcxNSw4 IEBAIEluaXRBdXhpbGlhcnlQcm9jZXNzKHZvaWQpCiAjZW5kaWYKIAlwZ19hdG9taWNfd3Jp dGVfdTMyKCZNeVByb2MtPnBlbmRpbmdSZWNvdmVyeUNvbmZsaWN0cywgMCk7CiAKLQkvKgot CSAqIEFjcXVpcmUgb3duZXJzaGlwIG9mIHRoZSBQR1BST0MncyBsYXRjaCwgc28gdGhhdCB3 ZSBjYW4gdXNlIFdhaXRMYXRjaAotCSAqIG9uIGl0LiAgVGhhdCBhbGxvd3MgdXMgdG8gcmVw b2ludCB0aGUgcHJvY2VzcyBsYXRjaCwgd2hpY2ggc28gZmFyCi0JICogcG9pbnRzIHRvIHBy b2Nlc3MgbG9jYWwgb25lLCB0byB0aGUgc2hhcmVkIG9uZS4KLQkgKi8KLQlPd25MYXRjaCgm TXlQcm9jLT5wcm9jTGF0Y2gpOwotCVN3aXRjaFRvU2hhcmVkTGF0Y2goKTsKKwkvKiBTdGFy dCBhY2NlcHRpbmcgaW50ZXJydXB0cyBmcm9tIG90aGVyIHByb2Nlc3NlcyAqLworCVN3aXRj aFRvU2hhcmVkSW50ZXJydXB0cygpOwogCiAJLyogbm93IHRoYXQgd2UgaGF2ZSBhIHByb2Ms IHJlcG9ydCB3YWl0IGV2ZW50cyB0byBzaGFyZWQgbWVtb3J5ICovCiAJcGdzdGF0X3NldF93 YWl0X2V2ZW50X3N0b3JhZ2UoJk15UHJvYy0+d2FpdF9ldmVudF9pbmZvKTsKQEAgLTczMyw2 ICs3MzksMTAgQEAgSW5pdEF1eGlsaWFyeVByb2Nlc3Modm9pZCkKIAkJcGdfYXRvbWljX3dy aXRlX3UzMigmUHJvY0dsb2JhbC0+d2Fsd3JpdGVyUHJvYywgTXlQcm9jTnVtYmVyKTsKIAlp ZiAoTXlCYWNrZW5kVHlwZSA9PSBCX0NIRUNLUE9JTlRFUikKIAkJcGdfYXRvbWljX3dyaXRl X3UzMigmUHJvY0dsb2JhbC0+Y2hlY2twb2ludGVyUHJvYywgTXlQcm9jTnVtYmVyKTsKKwlp ZiAoTXlCYWNrZW5kVHlwZSA9PSBCX1dBTF9SRUNFSVZFUikKKwkJcGdfYXRvbWljX3dyaXRl X3UzMigmUHJvY0dsb2JhbC0+d2FscmVjZWl2ZXJQcm9jLCBNeVByb2NOdW1iZXIpOworCWlm IChNeUJhY2tlbmRUeXBlID09IEJfU1RBUlRVUCkKKwkJcGdfYXRvbWljX3dyaXRlX3UzMigm UHJvY0dsb2JhbC0+c3RhcnR1cFByb2MsIE15UHJvY051bWJlcik7CiAKIAkvKgogCSAqIEFy cmFuZ2UgdG8gY2xlYW4gdXAgYXQgcHJvY2VzcyBleGl0LgpAQCAtOTczLDEzICs5ODMsOSBA QCBQcm9jS2lsbChpbnQgY29kZSwgRGF0dW0gYXJnKQogCUNvbmRpdGlvblZhcmlhYmxlQ2Fu Y2VsU2xlZXAoKTsKIAogCS8qCi0JICogUmVzZXQgTXlMYXRjaCB0byB0aGUgcHJvY2VzcyBs b2NhbCBvbmUgYW5kIGRpc293biB0aGUgc2hhcmVkIGxhdGNoLCBzbwotCSAqIHRoYXQgc2ln bmFsIGhhbmRsZXJzIGV0IGFsIGNhbiBjb250aW51ZSB1c2luZyB0aGUgbGF0Y2ggYWZ0ZXIg dGhlCi0JICogc2hhcmVkIGxhdGNoIGlzbid0IG91cnMgYW55bW9yZS4KLQkgKgotCSAqIERp c293bkxhdGNoKCkgbXVzdCBoYXBwZW4gYmVmb3JlIG91ciBQR1BST0MgY2FuIGFwcGVhciBv biBhIGZyZWVsaXN0OiBhCi0JICogbmV3bHktZm9ya2VkIGJhY2tlbmQgdGhhdCBwb3BzIG91 ciBzbG90IGFuZCBjYWxscyBPd25MYXRjaCgpIHdvdWxkCi0JICogUEFOSUMgb24gYSBzdGls bC1vd25lZCBsYXRjaC4KKwkgKiBSZXNldCBpbnRlcnJ1cHQgdmVjdG9yIHRvIHRoZSBwcm9j ZXNzIGxvY2FsIG9uZSwgc28gdGhhdCBzaWduYWwKKwkgKiBoYW5kbGVycyBldCBhbCBjYW4g Y29udGludWUgdXNpbmcgaW50ZXJydXB0cyBhZnRlciB0aGUgUEdQUk9DIGVudHJ5CisJICog aXNuJ3Qgb3VycyBhbnltb3JlLgogCSAqCiAJICogcGdzdGF0X3Jlc2V0X3dhaXRfZXZlbnRf c3RvcmFnZSgpIGlzIGludGVudGlvbmFsbHkgZGVmZXJyZWQgdW50aWwgYWZ0ZXIKIAkgKiB0 aGUgbG9jay1ncm91cCBibG9jayBzbyB0aGF0IHdhaXRfZXZlbnRfaW5mbyByZW1haW5zIHZp c2libGUgaW4gb3VyCkBAIC05ODcsOCArOTkzLDcgQEAgUHJvY0tpbGwoaW50IGNvZGUsIERh dHVtIGFyZykKIAkgKiBiZWNhdXNlIG91ciBzbG90IGlzIG5vdCB5ZXQgb24gYW55IGZyZWVs aXN0IGF0IHRoaXMgcG9pbnQsIGFuZCB1c2VmdWwKIAkgKiBmb3IgdGVzdGluZyBwdXJwb3Nl cy4KIAkgKi8KLQlTd2l0Y2hCYWNrVG9Mb2NhbExhdGNoKCk7Ci0JRGlzb3duTGF0Y2goJk15 UHJvYy0+cHJvY0xhdGNoKTsKKwlTd2l0Y2hUb0xvY2FsSW50ZXJydXB0cygpOwogCiAJcHJv YyA9IE15UHJvYzsKIAlwcm9jZ2xvYmFsbGlzdCA9IHByb2MtPnByb2NnbG9iYWxsaXN0OwpA QCAtMTA0Niw3ICsxMDUxLDcgQEAgUHJvY0tpbGwoaW50IGNvZGUsIERhdHVtIGFyZykKIAkJ TFdMb2NrUmVsZWFzZShsZWFkZXJfbHdsb2NrKTsKIAl9CiAKLQkvKiBTZWUgY29tbWVudCBh Ym92ZSwgY2xvc2UgdG8gRGlzb3duTGF0Y2goKSAqLworCS8qIFNlZSBjb21tZW50IGFib3Zl LCBjbG9zZSB0byBTd2l0Y2hUb0xvY2FsSW50ZXJydXB0cygpICovCiAJcGdzdGF0X3Jlc2V0 X3dhaXRfZXZlbnRfc3RvcmFnZSgpOwogCiAJTXlQcm9jID0gTlVMTDsKQEAgLTExMDgsNyAr MTExMyw3IEBAIEF1eGlsaWFyeVByb2NLaWxsKGludCBjb2RlLCBEYXR1bSBhcmcpCiAJQ29u ZGl0aW9uVmFyaWFibGVDYW5jZWxTbGVlcCgpOwogCiAJLyogbG9vayBhdCB0aGUgZXF1aXZh bGVudCBQcm9jS2lsbCgpIGNvZGUgZm9yIGNvbW1lbnRzICovCi0JU3dpdGNoQmFja1RvTG9j YWxMYXRjaCgpOworCVN3aXRjaFRvTG9jYWxJbnRlcnJ1cHRzKCk7CiAJcGdzdGF0X3Jlc2V0 X3dhaXRfZXZlbnRfc3RvcmFnZSgpOwogCiAJLyogSWYgdGhpcyB3YXMgb25lIG9mIGF1eCBw cm9jZXNzZXMgYWR2ZXJ0aXNlZCBpbiBQcm9jR2xvYmFsLCBjbGVhciBpdCAqLwpAQCAtMTEy NywxMSArMTEzMiwyMCBAQCBBdXhpbGlhcnlQcm9jS2lsbChpbnQgY29kZSwgRGF0dW0gYXJn KQogCQlBc3NlcnQocGdfYXRvbWljX3JlYWRfdTMyKCZQcm9jR2xvYmFsLT5jaGVja3BvaW50 ZXJQcm9jKSA9PSBNeVByb2NOdW1iZXIpOwogCQlwZ19hdG9taWNfd3JpdGVfdTMyKCZQcm9j R2xvYmFsLT5jaGVja3BvaW50ZXJQcm9jLCBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAl9CisJ aWYgKE15QmFja2VuZFR5cGUgPT0gQl9XQUxfUkVDRUlWRVIpCisJeworCQlBc3NlcnQocGdf YXRvbWljX3JlYWRfdTMyKCZQcm9jR2xvYmFsLT53YWxyZWNlaXZlclByb2MpID09IE15UHJv Y051bWJlcik7CisJCXBnX2F0b21pY193cml0ZV91MzIoJlByb2NHbG9iYWwtPndhbHJlY2Vp dmVyUHJvYywgSU5WQUxJRF9QUk9DX05VTUJFUik7CisJfQorCWlmIChNeUJhY2tlbmRUeXBl ID09IEJfU1RBUlRVUCkKKwl7CisJCUFzc2VydChwZ19hdG9taWNfcmVhZF91MzIoJlByb2NH bG9iYWwtPnN0YXJ0dXBQcm9jKSA9PSBNeVByb2NOdW1iZXIpOworCQlwZ19hdG9taWNfd3Jp dGVfdTMyKCZQcm9jR2xvYmFsLT5zdGFydHVwUHJvYywgSU5WQUxJRF9QUk9DX05VTUJFUik7 CisJfQogCiAJcHJvYyA9IE15UHJvYzsKIAlNeVByb2MgPSBOVUxMOwogCU15UHJvY051bWJl ciA9IElOVkFMSURfUFJPQ19OVU1CRVI7Ci0JRGlzb3duTGF0Y2goJnByb2MtPnByb2NMYXRj aCk7CiAKIAlTcGluTG9ja0FjcXVpcmUoJlByb2NHbG9iYWwtPmZyZWVQcm9jc0xvY2spOwog CkBAIC0xNDYwLDE4ICsxNDc0LDE4IEBAIFByb2NTbGVlcChMT0NBTExPQ0sgKmxvY2FsbG9j aykKIAl9CiAKIAkvKgotCSAqIElmIHNvbWVib2R5IHdha2VzIHVzIGJldHdlZW4gTFdMb2Nr UmVsZWFzZSBhbmQgV2FpdExhdGNoLCB0aGUgbGF0Y2gKLQkgKiB3aWxsIG5vdCB3YWl0LiBC dXQgYSBzZXQgbGF0Y2ggZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0IHRoZSBsb2Nr Ci0JICogaXMgZnJlZSBub3csIGFzIHRoZXJlIGFyZSBtYW55IG90aGVyIHNvdXJjZXMgZm9y IGxhdGNoIHNldHMgdGhhbgotCSAqIHNvbWVib2R5IHJlbGVhc2luZyB0aGUgbG9jay4KKwkg KiBJZiBzb21lYm9keSB3YWtlcyB1cyBiZXR3ZWVuIExXTG9ja1JlbGVhc2UgYW5kIFdhaXRJ bnRlcnJ1cHQsCisJICogV2FpdEludGVycnVwdCB3aWxsIG5vdCB3YWl0LiBCdXQgYW4gaW50 ZXJydXB0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4KKwkgKiB0aGF0IHRoZSBsb2NrIGlz IGZyZWUgbm93LCBhcyB0aGVyZSBhcmUgbWFueSBvdGhlciBzb3VyY2VzIGZvciB0aGUKKwkg KiBpbnRlcnJ1cHQgdGhhbiBzb21lYm9keSByZWxlYXNpbmcgdGhlIGxvY2suCiAJICoKLQkg KiBXZSBwcm9jZXNzIGludGVycnVwdHMgd2hlbmV2ZXIgdGhlIGxhdGNoIGhhcyBiZWVuIHNl dCwgc28gY2FuY2VsL2RpZQotCSAqIGludGVycnVwdHMgYXJlIHByb2Nlc3NlZCBxdWlja2x5 LiBUaGlzIG1lYW5zIHdlIG11c3Qgbm90IG1pbmQgbG9zaW5nCi0JICogY29udHJvbCB0byBh IGNhbmNlbC9kaWUgaW50ZXJydXB0IGhlcmUuICBXZSBkb24ndCwgYmVjYXVzZSB3ZSBoYXZl IG5vCi0JICogc2hhcmVkLXN0YXRlLWNoYW5nZSB3b3JrIHRvIGRvIGFmdGVyIGJlaW5nIGdy YW50ZWQgdGhlIGxvY2sgKHRoZQotCSAqIGdyYW50b3IgZGlkIGl0IGFsbCkuICBXZSBkbyBo YXZlIHRvIHdvcnJ5IGFib3V0IGNhbmNlbGluZyB0aGUgZGVhZGxvY2sKLQkgKiB0aW1lb3V0 IGFuZCB1cGRhdGluZyB0aGUgbG9jYWxsb2NrIHRhYmxlLCBidXQgaWYgd2UgbG9zZSBjb250 cm9sIHRvIGFuCi0JICogZXJyb3IsIExvY2tFcnJvckNsZWFudXAgd2lsbCBmaXggdGhhdCB1 cC4KKwkgKiBXZSBwcm9jZXNzIGludGVycnVwdHMgd2hlbmV2ZXIgdGhlIGludGVycnVwdCBo YXMgYmVlbiBzZXQsIHNvCisJICogY2FuY2VsL2RpZSBpbnRlcnJ1cHRzIGFyZSBwcm9jZXNz ZWQgcXVpY2tseS4gVGhpcyBtZWFucyB3ZSBtdXN0IG5vdAorCSAqIG1pbmQgbG9zaW5nIGNv bnRyb2wgdG8gYSBjYW5jZWwvZGllIGludGVycnVwdCBoZXJlLiAgV2UgZG9uJ3QsIGJlY2F1 c2UKKwkgKiB3ZSBoYXZlIG5vIHNoYXJlZC1zdGF0ZS1jaGFuZ2Ugd29yayB0byBkbyBhZnRl ciBiZWluZyBncmFudGVkIHRoZSBsb2NrCisJICogKHRoZSBncmFudG9yIGRpZCBpdCBhbGwp LiAgV2UgZG8gaGF2ZSB0byB3b3JyeSBhYm91dCBjYW5jZWxpbmcgdGhlCisJICogZGVhZGxv Y2sgdGltZW91dCBhbmQgdXBkYXRpbmcgdGhlIGxvY2FsbG9jayB0YWJsZSwgYnV0IGlmIHdl IGxvc2UKKwkgKiBjb250cm9sIHRvIGFuIGVycm9yLCBMb2NrRXJyb3JDbGVhbnVwIHdpbGwg Zml4IHRoYXQgdXAuCiAJICovCiAJZG8KIAl7CkBAIC0xNTE3LDkgKzE1MzEsMTAgQEAgUHJv Y1NsZWVwKExPQ0FMTE9DSyAqbG9jYWxsb2NrKQogCQl9CiAJCWVsc2UKIAkJewotCQkJKHZv aWQpIFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RF QVRILCAwLAotCQkJCQkJCSBQR19XQUlUX0xPQ0sgfCBsb2NhbGxvY2stPnRhZy5sb2NrLmxv Y2t0YWdfdHlwZSk7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJKHZvaWQpIFdhaXRJ bnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8IElOVEVSUlVQVF9XQUlUX1dBS0VV UCwKKwkJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJ CQkJCQkJCSBQR19XQUlUX0xPQ0sgfCBsb2NhbGxvY2stPnRhZy5sb2NrLmxvY2t0YWdfdHlw ZSk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCQkJLyog Y2hlY2sgZm9yIGRlYWRsb2NrcyBmaXJzdCwgYXMgdGhhdCdzIHByb2JhYmx5IGxvZy13b3J0 aHkgKi8KIAkJCWlmIChnb3RfZGVhZGxvY2tfdGltZW91dCkKIAkJCXsKQEAgLTE3NTQsOCAr MTc2OSw4IEBAIFByb2NTbGVlcChMT0NBTExPQ0sgKmxvY2FsbG9jaykKIAkvKgogCSAqIERp c2FibGUgdGhlIHRpbWVycywgaWYgdGhleSBhcmUgc3RpbGwgcnVubmluZy4gIEFzIGluIExv Y2tFcnJvckNsZWFudXAsCiAJICogd2UgbXVzdCBwcmVzZXJ2ZSB0aGUgTE9DS19USU1FT1VU IGluZGljYXRvciBmbGFnOiBpZiBhIGxvY2sgdGltZW91dCBoYXMKLQkgKiBhbHJlYWR5IGNh dXNlZCBRdWVyeUNhbmNlbFBlbmRpbmcgdG8gYmVjb21lIHNldCwgd2Ugd2FudCB0aGUgY2Fu Y2VsIHRvCi0JICogYmUgcmVwb3J0ZWQgYXMgYSBsb2NrIHRpbWVvdXQsIG5vdCBhIHVzZXIg Y2FuY2VsLgorCSAqIGFscmVhZHkgcmFpc2VkIElOVEVSUlVQVF9RVUVSWV9DQU5DRUwsIHdl IHdhbnQgdGhlIGNhbmNlbCB0byBiZQorCSAqIHJlcG9ydGVkIGFzIGEgbG9jayB0aW1lb3V0 LCBub3QgYSB1c2VyIGNhbmNlbC4KIAkgKi8KIAlpZiAoIUluSG90U3RhbmRieSkKIAl7CkBA IC0xNzkyLDcgKzE4MDcsNyBAQCBQcm9jU2xlZXAoTE9DQUxMT0NLICpsb2NhbGxvY2spCiAK IAogLyoKLSAqIFByb2NXYWtldXAgLS0gd2FrZSB1cCBhIHByb2Nlc3MgYnkgc2V0dGluZyBp dHMgbGF0Y2guCisgKiBQcm9jV2FrZXVwIC0tIHdha2UgdXAgYSBwcm9jZXNzIGJ5IHNlbmRp bmcgaXQgYW4gaW50ZXJydXB0LgogICoKICAqCSBBbHNvIHJlbW92ZSB0aGUgcHJvY2VzcyBm cm9tIHRoZSB3YWl0IHF1ZXVlIGFuZCBzZXQgaXRzIHdhaXRMaW5rIGludmFsaWQuCiAgKgpA QCAtMTgyMSw3ICsxODM2LDcgQEAgUHJvY1dha2V1cChQR1BST0MgKnByb2MsIFByb2NXYWl0 U3RhdHVzIHdhaXRTdGF0dXMpCiAJcGdfYXRvbWljX3dyaXRlX3U2NCgmcHJvYy0+d2FpdFN0 YXJ0LCAwKTsKIAogCS8qIEFuZCBhd2FrZW4gaXQgKi8KLQlTZXRMYXRjaCgmcHJvYy0+cHJv Y0xhdGNoKTsKKwlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgR2V0TnVt YmVyRnJvbVBHUHJvYyhwcm9jKSk7CiB9CiAKIC8qCkBAIC0xOTc3LDE0ICsxOTkyLDEyIEBA IENoZWNrRGVhZExvY2tBbGVydCh2b2lkKQogCWdvdF9kZWFkbG9ja190aW1lb3V0ID0gdHJ1 ZTsKIAogCS8qCi0JICogSGF2ZSB0byBzZXQgdGhlIGxhdGNoIGFnYWluLCBldmVuIGlmIGhh bmRsZV9zaWdfYWxhcm0gYWxyZWFkeSBkaWQuIEJhY2sKLQkgKiB0aGVuIGdvdF9kZWFkbG9j a190aW1lb3V0IHdhc24ndCB5ZXQgc2V0Li4uIEl0J3MgdW5saWtlbHkgdGhhdCB0aGlzCi0J ICogZXZlciB3b3VsZCBiZSBhIHByb2JsZW0sIGJ1dCBzZXR0aW5nIGEgc2V0IGxhdGNoIGFn YWluIGlzIGNoZWFwLgotCSAqCi0JICogTm90ZSB0aGF0LCB3aGVuIHRoaXMgZnVuY3Rpb24g cnVucyBpbnNpZGUgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoKSwKLQkgKiB0aGUgaGFu ZGxlciBmdW5jdGlvbiBzZXRzIHRoZSBsYXRjaCBhZ2FpbiBhZnRlciB0aGUgbGF0Y2ggaXMg c2V0IGhlcmUuCisJICogSGF2ZSB0byByYWlzZSB0aGUgaW50ZXJydXB0IGFnYWluLCBldmVu IGlmIGhhbmRsZV9zaWdfYWxhcm0gYWxyZWFkeQorCSAqIGRpZC4gQmFjayB0aGVuIGdvdF9k ZWFkbG9ja190aW1lb3V0IHdhc24ndCB5ZXQgc2V0Li4uIEl0J3MgdW5saWtlbHkKKwkgKiB0 aGF0IHRoaXMgZXZlciB3b3VsZCBiZSBhIHByb2JsZW0sIGJ1dCByYWlzaW5nIGFuIGludGVy cnVwdCBhZ2FpbiBpcworCSAqIGNoZWFwLgogCSAqLwotCVNldExhdGNoKE15TGF0Y2gpOwor CVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAJZXJybm8gPSBzYXZl X2Vycm5vOwogfQogCkBAIC0yMDYzLDM0ICsyMDc2LDYgQEAgR2V0TG9ja0hvbGRlcnNBbmRX YWl0ZXJzKExPQ0FMTE9DSyAqbG9jYWxsb2NrLCBTdHJpbmdJbmZvIGxvY2tfaG9sZGVyc19z YnVmLAogCX0KIH0KIAotLyoKLSAqIFByb2NXYWl0Rm9yU2lnbmFsIC0gd2FpdCBmb3IgYSBz aWduYWwgZnJvbSBhbm90aGVyIGJhY2tlbmQuCi0gKgotICogQXMgdGhpcyB1c2VzIHRoZSBn ZW5lcmljIHByb2Nlc3MgbGF0Y2ggdGhlIGNhbGxlciBoYXMgdG8gYmUgcm9idXN0IGFnYWlu c3QKLSAqIHVucmVsYXRlZCB3YWtldXBzOiBBbHdheXMgY2hlY2sgdGhhdCB0aGUgZGVzaXJl ZCBzdGF0ZSBoYXMgb2NjdXJyZWQsIGFuZAotICogd2FpdCBhZ2FpbiBpZiBub3QuCi0gKi8K LXZvaWQKLVByb2NXYWl0Rm9yU2lnbmFsKHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCi17Ci0J KHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BN X0RFQVRILCAwLAotCQkJCQkgd2FpdF9ldmVudF9pbmZvKTsKLQlSZXNldExhdGNoKE15TGF0 Y2gpOwotCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7Ci19Ci0KLS8qCi0gKiBQcm9jU2VuZFNp Z25hbCAtIHNldCB0aGUgbGF0Y2ggb2YgYSBiYWNrZW5kIGlkZW50aWZpZWQgYnkgUHJvY051 bWJlcgotICovCi12b2lkCi1Qcm9jU2VuZFNpZ25hbChQcm9jTnVtYmVyIHByb2NOdW1iZXIp Ci17Ci0JaWYgKHByb2NOdW1iZXIgPCAwIHx8IHByb2NOdW1iZXIgPj0gUHJvY0dsb2JhbC0+ YWxsUHJvY0NvdW50KQotCQllbG9nKEVSUk9SLCAicHJvY051bWJlciBvdXQgb2YgcmFuZ2Ui KTsKLQotCVNldExhdGNoKCZHZXRQR1Byb2NCeU51bWJlcihwcm9jTnVtYmVyKS0+cHJvY0xh dGNoKTsKLX0KLQogLyoKICAqIEJlY29tZUxvY2tHcm91cExlYWRlciAtIGRlc2lnbmF0ZSBw cm9jZXNzIGFzIGxvY2sgZ3JvdXAgbGVhZGVyCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9zbWdyL3NtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdy LmMKaW5kZXggYTliNmMxZWRlNmMuLjBiZjZlNDhjNDVmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21n ci9zbWdyLmMKQEAgLTk5NCw3ICs5OTQsNyBAQCBzbWdyZmQoU01nclJlbGF0aW9uIHJlbG4s IEZvcmtOdW1iZXIgZm9ya251bSwgQmxvY2tOdW1iZXIgYmxvY2tudW0sIHVpbnQzMiAqb2Zm KQogCSAqIFRoZSBjYWxsZXIgbmVlZHMgdG8gcHJldmVudCBpbnRlcnJ1cHRzIGZyb20gYmVp bmcgcHJvY2Vzc2VkLCBvdGhlcndpc2UKIAkgKiB0aGUgRkQgY291bGQgYmUgY2xvc2VkIHBy ZW1hdHVyZWx5LgogCSAqLwotCUFzc2VydCghSU5URVJSVVBUU19DQU5fQkVfUFJPQ0VTU0VE KCkpOworCUFzc2VydChDaGVja0ZvckludGVycnVwdHNNYXNrID09IDApOwogCiAJZmQgPSBz bWdyc3dbcmVsbi0+c21ncl93aGljaF0uc21ncl9mZChyZWxuLCBmb3JrbnVtLCBibG9ja251 bSwgb2ZmKTsKIApAQCAtMTA3Myw3ICsxMDczLDcgQEAgc21ncl9haW9fcmVvcGVuKFBnQWlv SGFuZGxlICppb2gpCiAJICogVGhlIGNhbGxlciBuZWVkcyB0byBwcmV2ZW50IGludGVycnVw dHMgZnJvbSBiZWluZyBwcm9jZXNzZWQsIG90aGVyd2lzZQogCSAqIHRoZSBGRCBjb3VsZCBi ZSBjbG9zZWQgYWdhaW4gYmVmb3JlIHdlIGdldCB0byBleGVjdXRpbmcgdGhlIElPLgogCSAq LwotCUFzc2VydCghSU5URVJSVVBUU19DQU5fQkVfUFJPQ0VTU0VEKCkpOworCUFzc2VydChD aGVja0ZvckludGVycnVwdHNNYXNrID09IDApOwogCiAJaWYgKHNkLT5zbWdyLmlzX3RlbXAp CiAJCXByb2NubyA9IHBnYWlvX2lvX2dldF9vd25lcihpb2gpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3lu Yy9zeW5jLmMKaW5kZXggMmM5NjRiNmYzZDkuLmM1ZWI5OTMxYjA5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2Uvc3luYy9zeW5jLmMKQEAgLTIyLDEyICsyMiwxMSBAQAogI2luY2x1ZGUgImFjY2Vzcy9j b21taXRfdHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAi YWNjZXNzL3hsb2cuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMv aW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9ydGFiaWxp dHkvaW5zdHJfdGltZS5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3cml0ZXIuaCIKICNp bmNsdWRlICJzdG9yYWdlL2ZkLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvbWQuaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5j bHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTYxMiw4ICs2MTEsOCBAQCBSZWdpc3RlclN5 bmNSZXF1ZXN0KGNvbnN0IEZpbGVUYWcgKmZ0YWcsIFN5bmNSZXF1ZXN0VHlwZSB0eXBlLAog CQlpZiAocmV0IHx8ICghcmV0ICYmICFyZXRyeU9uRXJyb3IpKQogCQkJYnJlYWs7CiAKLQkJ V2FpdExhdGNoKE5VTEwsIFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9USU1FT1VULCAxMCwK LQkJCQkgIFdBSVRfRVZFTlRfUkVHSVNURVJfU1lOQ19SRVFVRVNUKTsKKwkJV2FpdEludGVy cnVwdCgwLCBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfVElNRU9VVCwgMTAsCisJCQkJCSAg V0FJVF9FVkVOVF9SRUdJU1RFUl9TWU5DX1JFUVVFU1QpOwogCX0KIAogCXJldHVybiByZXQ7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL2JhY2tlbmRfc3RhcnR1cC5jIGIvc3Jj L2JhY2tlbmQvdGNvcC9iYWNrZW5kX3N0YXJ0dXAuYwppbmRleCAyNTIwNWNlZTBmYS4uMzYy OTBhMTE2NjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvYmFja2VuZF9zdGFydHVw LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9iYWNrZW5kX3N0YXJ0dXAuYwpAQCAtMTk4LDYg KzE5OCwxNCBAQCBCYWNrZW5kSW5pdGlhbGl6ZShDbGllbnRTb2NrZXQgKmNsaWVudF9zb2Nr LCBDQUNfc3RhdGUgY2FjKQogCUluaXRpYWxpemVUaW1lb3V0cygpOwkJLyogZXN0YWJsaXNo ZXMgU0lHQUxSTSBoYW5kbGVyICovCiAJc2lncHJvY21hc2soU0lHX1NFVE1BU0ssICZTdGFy dHVwQmxvY2tTaWcsIE5VTEwpOwogCisJLyoKKwkgKiBGSVhNRTogaW5zdGFsbCBJTlRFUlJV UFRfVEVSTUlOQVRFIGhhbmRsZXIgYXQgbGVhc3Q/IE5vdCByZWFsbHkgbmVlZGVkCisJICog YmVjYXVzZSBubyBvbmUgZWxzZSBjYW4gc2VuZCB1cyBpbnRlcnJ1cHRzIHlldCwgYW5kIHdl IGRvbid0IHJhaXNlIHRoZW0KKwkgKiB3aXRoaW4gdGhlIGJhY2tlbmQgeWV0IGVpdGhlci4g QnV0IGlmIHdlIGNoYW5nZWQgcG9zdG1hc3RlciB0byBzZW5kCisJICogSU5URVJSVVBUX1RF Uk1JTkFURSBkaXJlY3RseSwgZm9yIGV4YW1wbGUsIHdlJ2QgbmVlZCB0byBoYW5kbGUgaXQK KwkgKiBhbHJlYWR5LgorCSAqLworCiAJLyoKIAkgKiBHZXQgdGhlIHJlbW90ZSBob3N0IG5h bWUgYW5kIHBvcnQgZm9yIGxvZ2dpbmcgYW5kIHN0YXR1cyBkaXNwbGF5LgogCSAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNv cC9wb3N0Z3Jlcy5jCmluZGV4IDFjOTI2OTI4ZTljLi5iODA4MjczYzZkYyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3Av cG9zdGdyZXMuYwpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3ByZXBh cmUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9yZXBhY2suaCIKICNpbmNsdWRlICJjb21tb24v cGdfcHJuZy5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJpcGMv c2lnbmFsX2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAiaml0L2ppdC5oIgogI2luY2x1ZGUgImxp YnBxL2xpYnBxLmgiCkBAIC0xOTIsOCArMTkzLDggQEAgc3RhdGljIGJvb2wgSXNUcmFuc2Fj dGlvbkV4aXRTdG10KE5vZGUgKnBhcnNldHJlZSk7CiBzdGF0aWMgYm9vbCBJc1RyYW5zYWN0 aW9uRXhpdFN0bXRMaXN0KExpc3QgKnBzdG10cyk7CiBzdGF0aWMgYm9vbCBJc1RyYW5zYWN0 aW9uU3RtdExpc3QoTGlzdCAqcHN0bXRzKTsKIHN0YXRpYyB2b2lkIGRyb3BfdW5uYW1lZF9z dG10KHZvaWQpOwotc3RhdGljIHZvaWQgUHJvY2Vzc1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1 cHRzKHZvaWQpOwotc3RhdGljIHZvaWQgUHJvY2Vzc1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1 cHQoUmVjb3ZlcnlDb25mbGljdFJlYXNvbiByZWFzb24pOworc3RhdGljIHZvaWQgUHJvY2Vz c1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQodm9pZCk7CitzdGF0aWMgdm9pZCBQcm9jZXNz UmVjb3ZlcnlDb25mbGljdChSZWNvdmVyeUNvbmZsaWN0UmVhc29uIHJlYXNvbik7CiBzdGF0 aWMgdm9pZCByZXBvcnRfcmVjb3ZlcnlfY29uZmxpY3QoUmVjb3ZlcnlDb25mbGljdFJlYXNv biByZWFzb24pOwogc3RhdGljIHZvaWQgbG9nX2Rpc2Nvbm5lY3Rpb25zKGludCBjb2RlLCBE YXR1bSBhcmcpOwogc3RhdGljIHZvaWQgZW5hYmxlX3N0YXRlbWVudF90aW1lb3V0KHZvaWQp OwpAQCAtMzQ4LDggKzM0OSw2IEBAIGludGVyYWN0aXZlX2dldGModm9pZCkKIAogCWMgPSBn ZXRjKHN0ZGluKTsKIAotCVByb2Nlc3NDbGllbnRSZWFkSW50ZXJydXB0KGZhbHNlKTsKLQog CXJldHVybiBjOwogfQogCkBAIC0zNjYsMTEgKzM2NSwyMyBAQCBTb2NrZXRCYWNrZW5kKFN0 cmluZ0luZm8gaW5CdWYpCiB7CiAJaW50CQkJcXR5cGU7CiAJaW50CQkJbWF4bXNnbGVuOwor CWJvb2wJCXNhdmVfcXVlcnlfY2FuY2VsX2VuYWJsZWQ7CisKKwkvKgorCSAqIERvbid0IGFs bG93IHF1ZXJ5IGNhbmNlbCBpbnRlcnJ1cHRzIHdoaWxlIHJlYWRpbmcgaW5wdXQgZnJvbSB0 aGUKKwkgKiBjbGllbnQsIGJlY2F1c2Ugd2UgbWlnaHQgbG9zZSBzeW5jIGluIHRoZSBGRS9C RSBwcm90b2NvbC4gIChEaWUKKwkgKiBpbnRlcnJ1cHRzIGFyZSBPSywgYmVjYXVzZSB3ZSB3 b24ndCByZWFkIGFueSBmdXJ0aGVyIG1lc3NhZ2VzIGZyb20gdGhlCisJICogY2xpZW50IGlu IHRoYXQgY2FzZS4pCisJICoKKwkgKiBTZWUgc2ltaWxhciBsb2dpYyBpbiBQcm9jZXNzUmVj b3ZlcnlDb25mbGljdEludGVycnVwdCgpLgorCSAqLworCXNhdmVfcXVlcnlfY2FuY2VsX2Vu YWJsZWQgPSAoRW5hYmxlZEludGVycnVwdHNNYXNrICYgSU5URVJSVVBUX1FVRVJZX0NBTkNF TCkgIT0gMDsKKwlpZiAoc2F2ZV9xdWVyeV9jYW5jZWxfZW5hYmxlZCkKKwkJRGlzYWJsZUlu dGVycnVwdChJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMKTsKIAogCS8qCiAJICogR2V0IG1lc3Nh Z2UgdHlwZSBjb2RlIGZyb20gdGhlIGZyb250ZW5kLgogCSAqLwotCUhPTERfQ0FOQ0VMX0lO VEVSUlVQVFMoKTsKIAlwcV9zdGFydG1zZ3JlYWQoKTsKIAlxdHlwZSA9IHBxX2dldGJ5dGUo KTsKIApAQCAtNDc3LDcgKzQ4OCw5IEBAIFNvY2tldEJhY2tlbmQoU3RyaW5nSW5mbyBpbkJ1 ZikKIAkgKi8KIAlpZiAocHFfZ2V0bWVzc2FnZShpbkJ1ZiwgbWF4bXNnbGVuKSkKIAkJcmV0 dXJuIEVPRjsJCQkJLyogc3VpdGFibGUgbWVzc2FnZSBhbHJlYWR5IGxvZ2dlZCAqLwotCVJF U1VNRV9DQU5DRUxfSU5URVJSVVBUUygpOworCisJaWYgKHNhdmVfcXVlcnlfY2FuY2VsX2Vu YWJsZWQpCisJCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMKTsKIAog CXJldHVybiBxdHlwZTsKIH0KQEAgLTUwMSwxMDQgKzUxNCw2IEBAIFJlYWRDb21tYW5kKFN0 cmluZ0luZm8gaW5CdWYpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAotLyoKLSAqIFByb2Nlc3ND bGllbnRSZWFkSW50ZXJydXB0KCkgLSBQcm9jZXNzIGludGVycnVwdHMgc3BlY2lmaWMgdG8g Y2xpZW50IHJlYWRzCi0gKgotICogVGhpcyBpcyBjYWxsZWQganVzdCBiZWZvcmUgYW5kIGFm dGVyIGxvdy1sZXZlbCByZWFkcy4KLSAqICdibG9ja2VkJyBpcyB0cnVlIGlmIG5vIGRhdGEg d2FzIGF2YWlsYWJsZSB0byByZWFkIGFuZCB3ZSBwbGFuIHRvIHJldHJ5LAotICogZmFsc2Ug aWYgYWJvdXQgdG8gcmVhZCBvciBkb25lIHJlYWRpbmcuCi0gKgotICogTXVzdCBwcmVzZXJ2 ZSBlcnJubyEKLSAqLwotdm9pZAotUHJvY2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQoYm9vbCBi bG9ja2VkKQotewotCWludAkJCXNhdmVfZXJybm8gPSBlcnJubzsKLQotCWlmIChEb2luZ0Nv bW1hbmRSZWFkKQotCXsKLQkJLyogQ2hlY2sgZm9yIGdlbmVyYWwgaW50ZXJydXB0cyB0aGF0 IGFycml2ZWQgYmVmb3JlL3doaWxlIHJlYWRpbmcgKi8KLQkJQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKTsKLQotCQkvKiBQcm9jZXNzIHNpbnZhbCBjYXRjaHVwIGludGVycnVwdHMsIGlmIGFu eSAqLwotCQlpZiAoY2F0Y2h1cEludGVycnVwdFBlbmRpbmcpCi0JCQlQcm9jZXNzQ2F0Y2h1 cEludGVycnVwdCgpOwotCi0JCS8qIFByb2Nlc3Mgbm90aWZ5IGludGVycnVwdHMsIGlmIGFu eSAqLwotCQlpZiAobm90aWZ5SW50ZXJydXB0UGVuZGluZykKLQkJCVByb2Nlc3NOb3RpZnlJ bnRlcnJ1cHQodHJ1ZSk7Ci0JfQotCWVsc2UgaWYgKFByb2NEaWVQZW5kaW5nKQotCXsKLQkJ LyoKLQkJICogV2UncmUgZHlpbmcuICBJZiB0aGVyZSBpcyBubyBkYXRhIGF2YWlsYWJsZSB0 byByZWFkLCB0aGVuIGl0J3Mgc2FmZQotCQkgKiAoYW5kIHNhbmUpIHRvIGhhbmRsZSB0aGF0 IG5vdy4gIElmIHdlIGhhdmVuJ3QgdHJpZWQgdG8gcmVhZCB5ZXQsCi0JCSAqIG1ha2Ugc3Vy ZSB0aGUgcHJvY2VzcyBsYXRjaCBpcyBzZXQsIHNvIHRoYXQgaWYgdGhlcmUgaXMgbm8gZGF0 YQotCQkgKiB0aGVuIHdlJ2xsIGNvbWUgYmFjayBoZXJlIGFuZCBkaWUuICBJZiB3ZSdyZSBk b25lIHJlYWRpbmcsIGFsc28KLQkJICogbWFrZSBzdXJlIHRoZSBwcm9jZXNzIGxhdGNoIGlz IHNldCwgYXMgd2UgbWlnaHQndmUgdW5kZXNpcmFibHkKLQkJICogY2xlYXJlZCBpdCB3aGls ZSByZWFkaW5nLgotCQkgKi8KLQkJaWYgKGJsb2NrZWQpCi0JCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOwotCQllbHNlCi0JCQlTZXRMYXRjaChNeUxhdGNoKTsKLQl9Ci0KLQllcnJubyA9 IHNhdmVfZXJybm87Ci19Ci0KLS8qCi0gKiBQcm9jZXNzQ2xpZW50V3JpdGVJbnRlcnJ1cHQo KSAtIFByb2Nlc3MgaW50ZXJydXB0cyBzcGVjaWZpYyB0byBjbGllbnQgd3JpdGVzCi0gKgot ICogVGhpcyBpcyBjYWxsZWQganVzdCBiZWZvcmUgYW5kIGFmdGVyIGxvdy1sZXZlbCB3cml0 ZXMuCi0gKiAnYmxvY2tlZCcgaXMgdHJ1ZSBpZiBubyBkYXRhIGNvdWxkIGJlIHdyaXR0ZW4g YW5kIHdlIHBsYW4gdG8gcmV0cnksCi0gKiBmYWxzZSBpZiBhYm91dCB0byB3cml0ZSBvciBk b25lIHdyaXRpbmcuCi0gKgotICogTXVzdCBwcmVzZXJ2ZSBlcnJubyEKLSAqLwotdm9pZAot UHJvY2Vzc0NsaWVudFdyaXRlSW50ZXJydXB0KGJvb2wgYmxvY2tlZCkKLXsKLQlpbnQJCQlz YXZlX2Vycm5vID0gZXJybm87Ci0KLQlpZiAoUHJvY0RpZVBlbmRpbmcpCi0JewotCQkvKgot CQkgKiBXZSdyZSBkeWluZy4gIElmIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHdyaXRlLCB0aGVu IHdlIHNob3VsZCBoYW5kbGUKLQkJICogdGhhdCBpbW1lZGlhdGVseSwgZWxzZSBhIHN0dWNr IGNsaWVudCBjb3VsZCBpbmRlZmluaXRlbHkgZGVsYXkgb3VyCi0JCSAqIHJlc3BvbnNlIHRv IHRoZSBzaWduYWwuICBJZiB3ZSBoYXZlbid0IHRyaWVkIHRvIHdyaXRlIHlldCwgbWFrZQot CQkgKiBzdXJlIHRoZSBwcm9jZXNzIGxhdGNoIGlzIHNldCwgc28gdGhhdCBpZiB0aGUgd3Jp dGUgd291bGQgYmxvY2sKLQkJICogdGhlbiB3ZSdsbCBjb21lIGJhY2sgaGVyZSBhbmQgZGll LiAgSWYgd2UncmUgZG9uZSB3cml0aW5nLCBhbHNvCi0JCSAqIG1ha2Ugc3VyZSB0aGUgcHJv Y2VzcyBsYXRjaCBpcyBzZXQsIGFzIHdlIG1pZ2h0J3ZlIHVuZGVzaXJhYmx5Ci0JCSAqIGNs ZWFyZWQgaXQgd2hpbGUgd3JpdGluZy4KLQkJICovCi0JCWlmIChibG9ja2VkKQotCQl7Ci0J CQkvKgotCQkJICogRG9uJ3QgbWVzcyB3aXRoIHdoZXJlVG9TZW5kT3V0cHV0IGlmIFByb2Nl c3NJbnRlcnJ1cHRzIHdvdWxkbid0Ci0JCQkgKiBzZXJ2aWNlIFByb2NEaWVQZW5kaW5nLgot CQkJICovCi0JCQlpZiAoSW50ZXJydXB0SG9sZG9mZkNvdW50ID09IDAgJiYgQ3JpdFNlY3Rp b25Db3VudCA9PSAwKQotCQkJewotCQkJCS8qCi0JCQkJICogV2UgZG9uJ3Qgd2FudCB0byBz ZW5kIHRoZSBjbGllbnQgdGhlIGVycm9yIG1lc3NhZ2UsIGFzIGEpCi0JCQkJICogdGhhdCB3 b3VsZCBwb3NzaWJseSBibG9jayBhZ2FpbiwgYW5kIGIpIGl0IHdvdWxkIGxpa2VseQotCQkJ CSAqIGxlYWQgdG8gbG9zcyBvZiBwcm90b2NvbCBzeW5jIGJlY2F1c2Ugd2UgbWF5IGhhdmUg YWxyZWFkeQotCQkJCSAqIHNlbnQgYSBwYXJ0aWFsIHByb3RvY29sIG1lc3NhZ2UuCi0JCQkJ ICovCi0JCQkJaWYgKHdoZXJlVG9TZW5kT3V0cHV0ID09IERlc3RSZW1vdGUpCi0JCQkJCXdo ZXJlVG9TZW5kT3V0cHV0ID0gRGVzdE5vbmU7Ci0KLQkJCQlDSEVDS19GT1JfSU5URVJSVVBU UygpOwotCQkJfQotCQl9Ci0JCWVsc2UKLQkJCVNldExhdGNoKE15TGF0Y2gpOwotCX0KLQot CWVycm5vID0gc2F2ZV9lcnJubzsKLX0KLQogLyoKICAqIERvIHJhdyBwYXJzaW5nIChvbmx5 KS4KICAqCkBAIC0yOTIzLDcgKzI4MzgsNyBAQCBkcm9wX3VubmFtZWRfc3RtdCh2b2lkKQog ICogRWl0aGVyIHNvbWUgYmFja2VuZCBoYXMgYm91Z2h0IHRoZSBmYXJtLCBvciB3ZSd2ZSBi ZWVuIHRvbGQgdG8gc2h1dCBkb3duCiAgKiAiaW1tZWRpYXRlbHkiOyBzbyB3ZSBuZWVkIHRv IHN0b3Agd2hhdCB3ZSdyZSBkb2luZyBhbmQgZXhpdC4KICAqLwotdm9pZAorc3RhdGljIHZv aWQKIHF1aWNrZGllKFNJR05BTF9BUkdTKQogewogCXNpZ2FkZHNldCgmQmxvY2tTaWcsIFNJ R1FVSVQpOwkvKiBwcmV2ZW50IG5lc3RlZCBjYWxscyAqLwpAQCAtMzAyMCwxNSArMjkzNSwx MiBAQCBxdWlja2RpZShTSUdOQUxfQVJHUykKICAqIFNodXRkb3duIHNpZ25hbCBmcm9tIHBv c3RtYXN0ZXI6IGFib3J0IHRyYW5zYWN0aW9uIGFuZCBleGl0CiAgKiBhdCBzb29uZXN0IGNv bnZlbmllbnQgdGltZQogICovCi12b2lkCitzdGF0aWMgdm9pZAogZGllKFNJR05BTF9BUkdT KQogewogCS8qIERvbid0IGpvZ2dsZSB0aGUgZWxib3cgb2YgcHJvY19leGl0ICovCiAJaWYg KCFwcm9jX2V4aXRfaW5wcm9ncmVzcykKIAl7Ci0JCUludGVycnVwdFBlbmRpbmcgPSB0cnVl OwotCQlQcm9jRGllUGVuZGluZyA9IHRydWU7Ci0KIAkJLyoKIAkJICogUmVjb3JkIHdobyBz ZW50IHRoZSBzaWduYWwuICBXaWxsIGJlIDAgb24gcGxhdGZvcm1zIHdpdGhvdXQKIAkJICog U0FfU0lHSU5GTywgd2hpY2ggaXMgZmluZSAtLSBQcm9jZXNzSW50ZXJydXB0cygpIGNoZWNr cyBmb3IgdGhhdC4KQEAgLTMwNDQsMzcgKzI5NTYsMTYgQEAgZGllKFNJR05BTF9BUkdTKQog CS8qIGZvciB0aGUgY3VtdWxhdGl2ZSBzdGF0cyBzeXN0ZW0gKi8KIAlwZ1N0YXRTZXNzaW9u RW5kQ2F1c2UgPSBESVNDT05ORUNUX0tJTExFRDsKIAotCS8qIElmIHdlJ3JlIHN0aWxsIGhl cmUsIHdha2VuIGFueXRoaW5nIHdhaXRpbmcgb24gdGhlIHByb2Nlc3MgbGF0Y2ggKi8KLQlT ZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfVEVSTUlOQVRF KTsKIAogCS8qCiAJICogSWYgd2UncmUgaW4gc2luZ2xlIHVzZXIgbW9kZSwgd2Ugd2FudCB0 byBxdWl0IGltbWVkaWF0ZWx5IC0gd2UgY2FuJ3QKLQkgKiByZWx5IG9uIGxhdGNoZXMgYXMg dGhleSB3b3VsZG4ndCB3b3JrIHdoZW4gc3RkaW4vc3Rkb3V0IGlzIGEgZmlsZS4KKwkgKiBy ZWx5IG9uIGludGVycnVwdHMgYXMgdGhleSB3b3VsZG4ndCB3b3JrIHdoZW4gc3RkaW4vc3Rk b3V0IGlzIGEgZmlsZS4KIAkgKiBSYXRoZXIgdWdseSwgYnV0IGl0J3MgdW5saWtlbHkgdG8g YmUgd29ydGh3aGlsZSB0byBpbnZlc3QgbXVjaCBtb3JlCiAJICogZWZmb3J0IGp1c3QgZm9y IHRoZSBiZW5lZml0IG9mIHNpbmdsZSB1c2VyIG1vZGUuCiAJICovCiAJaWYgKERvaW5nQ29t bWFuZFJlYWQgJiYgd2hlcmVUb1NlbmRPdXRwdXQgIT0gRGVzdFJlbW90ZSkKLQkJUHJvY2Vz c0ludGVycnVwdHMoKTsKLX0KLQotLyoKLSAqIFF1ZXJ5LWNhbmNlbCBzaWduYWwgZnJvbSBw b3N0bWFzdGVyOiBhYm9ydCBjdXJyZW50IHRyYW5zYWN0aW9uCi0gKiBhdCBzb29uZXN0IGNv bnZlbmllbnQgdGltZQotICovCi12b2lkCi1TdGF0ZW1lbnRDYW5jZWxIYW5kbGVyKFNJR05B TF9BUkdTKQotewotCS8qCi0JICogRG9uJ3Qgam9nZ2xlIHRoZSBlbGJvdyBvZiBwcm9jX2V4 aXQKLQkgKi8KLQlpZiAoIXByb2NfZXhpdF9pbnByb2dyZXNzKQotCXsKLQkJSW50ZXJydXB0 UGVuZGluZyA9IHRydWU7Ci0JCVF1ZXJ5Q2FuY2VsUGVuZGluZyA9IHRydWU7Ci0JfQotCi0J LyogSWYgd2UncmUgc3RpbGwgaGVyZSwgd2FrZW4gYW55dGhpbmcgd2FpdGluZyBvbiB0aGUg cHJvY2VzcyBsYXRjaCAqLwotCVNldExhdGNoKE15TGF0Y2gpOworCQlQcm9jZXNzVGVybWlu YXRlSW50ZXJydXB0KCk7CiB9CiAKIC8qIHNpZ25hbCBoYW5kbGVyIGZvciBmbG9hdGluZyBw b2ludCBleGNlcHRpb24gKi8KQEAgLTMwOTEsMjIgKzI5ODIsOTEgQEAgRmxvYXRFeGNlcHRp b25IYW5kbGVyKFNJR05BTF9BUkdTKQogfQogCiAvKgotICogVGVsbCB0aGUgbmV4dCBDSEVD S19GT1JfSU5URVJSVVBUUygpIHRvIHByb2Nlc3MgcmVjb3ZlcnkgY29uZmxpY3RzLiAgUnVu cwotICogaW4gYSBTSUdVU1IxIGhhbmRsZXIuCisgKiBTZXQgdGhlICJzdGFuZGFyZCIgc2V0 IG9mIGludGVycnVwdCBoYW5kbGVycywgdG8gaGFuZGxlIGNvbW1vbiBpbnRlcnJ1cHRzCisg KiB0aGF0IHNob3VsZCBiZSBoYW5kbGVkIGJ5IGFsbCBvciBtb3N0IGNoaWxkIHByb2Nlc3Nl cy4KKyAqCisgKiBUaGUgY2FsbGVyIG1heSBtb2RpZnkgdGhlIGRlZmF1bHRzIGFmdGVyIGNh bGxpbmcgdGhpcyB3aXRoIGZ1cnRoZXIKKyAqIFNldEludGVycnVwdEhhbmRsZXIoKSBvciBF bmFibGUvRGlzYWJsZUludGVycnVwdCgpIGNhbGxzLgogICovCiB2b2lkCi1IYW5kbGVSZWNv dmVyeUNvbmZsaWN0SW50ZXJydXB0KHZvaWQpCitTZXRTdGFuZGFyZEludGVycnVwdEhhbmRs ZXJzKHZvaWQpCiB7Ci0JaWYgKHBnX2F0b21pY19yZWFkX3UzMigmTXlQcm9jLT5wZW5kaW5n UmVjb3ZlcnlDb25mbGljdHMpICE9IDApCi0JCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwot CS8qIGxhdGNoIHdpbGwgYmUgc2V0IGJ5IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyICov CisJLyogQWxsIHByb2Nlc3NlcyBzaG91bGQgcmVhY3QgdG8gYmFycmllcnMgYW5kIG1lbW9y eSBjb250ZXh0IGRlYnVnZ2luZyAqLworCVNldEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBU X0JBUlJJRVIsIFByb2Nlc3NQcm9jU2lnbmFsQmFycmllcik7CisJRW5hYmxlSW50ZXJydXB0 KElOVEVSUlVQVF9CQVJSSUVSKTsKKwlTZXRJbnRlcnJ1cHRIYW5kbGVyKElOVEVSUlVQVF9M T0dfTUVNT1JZX0NPTlRFWFQsIFByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KTsK KwlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX0xPR19NRU1PUllfQ09OVEVYVCk7CisKKwkv KgorCSAqIEV2ZXJ5IHByb2Nlc3Mgc2hvdWxkIHJlYWN0IHRvIElOVEVSUlVQVF9URVJNSU5B VEUuIEJ1dCBtYW55IHByb2Nlc3NlcworCSAqIGRpc2FibGUgdGhpcyBhbmQgZG8gdGhlaXIg b3duIGNoZWNrcyBhdCBhcHByb3ByaWF0ZSB0aW1lcy4KKwkgKi8KKwlTZXRJbnRlcnJ1cHRI YW5kbGVyKElOVEVSUlVQVF9URVJNSU5BVEUsIFByb2Nlc3NUZXJtaW5hdGVJbnRlcnJ1cHQp OworCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfVEVSTUlOQVRFKTsKKworCS8qCisJICog QmFja2VuZHMgYW5kIHByb2Nlc3NlcyB0aGF0IGNvbm5lY3QgdG8gYSBwYXJ0aWN1bGFyIGRh dGFiYXNlIGNhbgorCSAqIGNvbmZsaWN0IHdpdGggcmVjb3ZlcnkKKwkgKgorCSAqIFhYWDog U2V0IHRoaXMgaW4gSW5pdFBvc3RncmVzIGlmIHdlJ3JlIGNvbm5lY3RpbmcgdG8gYSBwYXJ0 aWN1bGFyCisJICogZGF0YWJhc2U/CisJICovCisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRF UlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1QsIFByb2Nlc3NSZWNvdmVyeUNvbmZsaWN0SW50ZXJy dXB0KTsKKwlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUKTsK KworCS8qCisJICogQWxsIHByb2Nlc3NlcyBzaG91bGQgaGFuZGxlIGNvbmZpZyByZWxvYWRz LiBCdXQgdXN1YWxseSBvbmx5IGluCisJICogc3BlY2lmaWMgc3BvdHMsIGxpa2Ugd2hlbiBu b3QgaW4gYSB0cmFuc2FjdGlvbiwgc28gdGhpcyBpcyBkaXNhYmxlZCBieQorCSAqIGRlZmF1 bHQuCisJICoKKwkgKiBUaGlzIHJlbGllcyBvbiB0aGUgU0lHSFVQIHNpZ25hbCBoYW5kbGVy IHRvIHJhaXNlCisJICogSU5URVJSVVBUX0NPTkZJR19SRUxPQUQgb24gU0lHSFVQLgorCSAq LworCVNldEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQsIFByb2Nl c3NDb25maWdSZWxvYWRJbnRlcnJ1cHQpOworCisJLyoKKwkgKiBOb3RlOiBDYXRjaHVwIGlu dGVycnVwdHMgKElOVEVSUlVQVF9TSU5WQUxfQ0FUQ0hVUCkgbXVzdCBiZSBoYW5kbGVkIGlu CisJICogYW55dGhpbmcgdGhhdCBwYXJ0aWNpcGF0ZXMgaW4gc2hhcmVkIGludmFsaWRhdGlv bi4gIEJ1dCB0aGUgaGFuZGxlciBmb3IKKwkgKiB0aGF0IGlzIHNldCBpbiBzaW52YWxhZHQu Yy4KKwkgKi8KKwogfQogCiAvKgotICogQ2hlY2sgb25lIGluZGl2aWR1YWwgY29uZmxpY3Qg cmVhc29uLgorICogQ2hlY2sgZWFjaCBwb3NzaWJsZSByZWNvdmVyeSBjb25mbGljdCByZWFz b24uCiAgKi8KIHN0YXRpYyB2b2lkCi1Qcm9jZXNzUmVjb3ZlcnlDb25mbGljdEludGVycnVw dChSZWNvdmVyeUNvbmZsaWN0UmVhc29uIHJlYXNvbikKK1Byb2Nlc3NSZWNvdmVyeUNvbmZs aWN0SW50ZXJydXB0KHZvaWQpCit7CisJdWludDMyCQlwZW5kaW5nOworCisJLyogQXJlIGFu eSByZWNvdmVyeSBjb25mbGljdHMgcGVuZGluZz8gKi8KKwlwZW5kaW5nID0gcGdfYXRvbWlj X3JlYWRfbWVtYmFycmllcl91MzIoJk15UHJvYy0+cGVuZGluZ1JlY292ZXJ5Q29uZmxpY3Rz KTsKKwlpZiAocGVuZGluZyA9PSAwKQorCQlyZXR1cm47CisKKwkvKgorCSAqIENoZWNrIHRo ZSBjb25mbGljdHMgb25lIGJ5IG9uZSwgY2xlYXJpbmcgZWFjaCBmbGFnIG9ubHkgYmVmb3Jl CisJICogcHJvY2Vzc2luZyB0aGUgcGFydGljdWxhciBjb25mbGljdC4gIFRoaXMgZW5zdXJl cyB0aGF0IGlmIG11bHRpcGxlCisJICogY29uZmxpY3RzIGFyZSBwZW5kaW5nLCB3ZSBjb21l IGJhY2sgaGVyZSB0byBwcm9jZXNzIHRoZSByZW1haW5pbmcKKwkgKiBjb25mbGljdHMsIGlm IGFuIGVycm9yIGlzIHRocm93biBkdXJpbmcgcHJvY2Vzc2luZyBvbmUgb2YgdGhlbS4KKwkg Ki8KKwlmb3IgKFJlY292ZXJ5Q29uZmxpY3RSZWFzb24gcmVhc29uID0gMDsKKwkJIHJlYXNv biA8IE5VTV9SRUNPVkVSWV9DT05GTElDVF9SRUFTT05TOworCQkgcmVhc29uKyspCisJewor CQlpZiAoKHBlbmRpbmcgJiAoMSA8PCByZWFzb24pKSAhPSAwKQorCQl7CisJCQkvKiBjbGVh ciB0aGUgZmxhZyAqLworCQkJKHZvaWQpIHBnX2F0b21pY19mZXRjaF9hbmRfdTMyKCZNeVBy b2MtPnBlbmRpbmdSZWNvdmVyeUNvbmZsaWN0cywgfigxIDw8IHJlYXNvbikpOworCisJCQlQ cm9jZXNzUmVjb3ZlcnlDb25mbGljdChyZWFzb24pOworCQl9CisJfQorfQorCit2b2lkCitQ cm9jZXNzUmVjb3ZlcnlDb25mbGljdChSZWNvdmVyeUNvbmZsaWN0UmVhc29uIHJlYXNvbikK IHsKIAlzd2l0Y2ggKHJlYXNvbikKIAl7CkBAIC0zMjY2LDE0ICszMjI2LDE0IEBAIHJlcG9y dF9yZWNvdmVyeV9jb25mbGljdChSZWNvdmVyeUNvbmZsaWN0UmVhc29uIHJlYXNvbikKIAkJ aWYgKCFEb2luZ0NvbW1hbmRSZWFkKQogCQl7CiAJCQkvKiBBdm9pZCBsb3Npbmcgc3luYyBp biB0aGUgRkUvQkUgcHJvdG9jb2wuICovCi0JCQlpZiAoUXVlcnlDYW5jZWxIb2xkb2ZmQ291 bnQgIT0gMCkKKwkJCWlmICgoRW5hYmxlZEludGVycnVwdHNNYXNrICYgSU5URVJSVVBUX1FV RVJZX0NBTkNFTCkgPT0gMCkKIAkJCXsKIAkJCQkvKgotCQkJCSAqIFJlLWFybSBhbmQgZGVm ZXIgdGhpcyBpbnRlcnJ1cHQgdW50aWwgbGF0ZXIuICBTZWUgc2ltaWxhcgotCQkJCSAqIGNv ZGUgaW4gUHJvY2Vzc0ludGVycnVwdHMoKS4KKwkJCQkgKiBSZS1hcm0gYW5kIGRlZmVyIHRo aXMgaW50ZXJydXB0IHVudGlsIGxhdGVyIHdoZW4gd2UncmUKKwkJCQkgKiBwcmVwYXJlZCB0 byBoYW5kbGUgcXVlcnkgY2FuY2VsbGF0aW9uLgogCQkJCSAqLwogCQkJCSh2b2lkKSBwZ19h dG9taWNfZmV0Y2hfb3JfdTMyKCZNeVByb2MtPnBlbmRpbmdSZWNvdmVyeUNvbmZsaWN0cywg KDEgPDwgcmVhc29uKSk7Ci0JCQkJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7CisJCQkJUmFp c2VJbnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUKTsKIAkJCQlyZXR1cm47 CiAJCQl9CiAKQEAgLTMzMDQsNzcgKzMyNjQsMzUgQEAgcmVwb3J0X3JlY292ZXJ5X2NvbmZs aWN0KFJlY292ZXJ5Q29uZmxpY3RSZWFzb24gcmVhc29uKQogCQkJCQkgIiBkYXRhYmFzZSBh bmQgcmVwZWF0IHlvdXIgY29tbWFuZC4iKSkpOwogfQogCi0vKgotICogQ2hlY2sgZWFjaCBw b3NzaWJsZSByZWNvdmVyeSBjb25mbGljdCByZWFzb24uCi0gKi8KLXN0YXRpYyB2b2lkCi1Q cm9jZXNzUmVjb3ZlcnlDb25mbGljdEludGVycnVwdHModm9pZCkKK3ZvaWQKK1Byb2Nlc3ND b25maWdSZWxvYWRJbnRlcnJ1cHQodm9pZCkKIHsKLQl1aW50MzIJCXBlbmRpbmc7Ci0KLQkv KgotCSAqIFdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgam9nZ2xpbmcgdGhlIGVsYm93 IG9mIHByb2NfZXhpdCwgYmVjYXVzZQotCSAqIHByb2NfZXhpdF9wcmVwYXJlKCkgaG9sZHMg aW50ZXJydXB0cywgc28gUHJvY2Vzc0ludGVycnVwdHMoKSB3b24ndCBjYWxsCi0JICogdXMu Ci0JICovCi0JQXNzZXJ0KCFwcm9jX2V4aXRfaW5wcm9ncmVzcyk7Ci0JQXNzZXJ0KEludGVy cnVwdEhvbGRvZmZDb3VudCA9PSAwKTsKLQotCS8qIEFyZSBhbnkgcmVjb3ZlcnkgY29uZmxp Y3QgcGVuZGluZz8gKi8KLQlwZW5kaW5nID0gcGdfYXRvbWljX3JlYWRfbWVtYmFycmllcl91 MzIoJk15UHJvYy0+cGVuZGluZ1JlY292ZXJ5Q29uZmxpY3RzKTsKLQlpZiAocGVuZGluZyA9 PSAwKQotCQlyZXR1cm47CisJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7Cit9CiAK K3ZvaWQKK1Byb2Nlc3NBc3luY05vdGlmeUludGVycnVwdCh2b2lkKQorewogCS8qCi0JICog Q2hlY2sgdGhlIGNvbmZsaWN0cyBvbmUgYnkgb25lLCBjbGVhcmluZyBlYWNoIGZsYWcgb25s eSBiZWZvcmUKLQkgKiBwcm9jZXNzaW5nIHRoZSBwYXJ0aWN1bGFyIGNvbmZsaWN0LiAgVGhp cyBlbnN1cmVzIHRoYXQgaWYgbXVsdGlwbGUKLQkgKiBjb25mbGljdHMgYXJlIHBlbmRpbmcs IHdlIGNvbWUgYmFjayBoZXJlIHRvIHByb2Nlc3MgdGhlIHJlbWFpbmluZwotCSAqIGNvbmZs aWN0cywgaWYgYW4gZXJyb3IgaXMgdGhyb3duIGR1cmluZyBwcm9jZXNzaW5nIG9uZSBvZiB0 aGVtLgorCSAqIFRoaXMgaXMgb25seSBlbmFibGVkIHdoaWxlIERvaW5nQ29tbWFuZFJlYWQs IHNvIHdlIHdhbnQgdG8gZmx1c2ggdGhlCisJICogYXN5bmMgbm90aWZ5IHRvIHRoZSBjbGll bnQgaW1tZWRpYXRlbHkKIAkgKi8KLQlmb3IgKFJlY292ZXJ5Q29uZmxpY3RSZWFzb24gcmVh c29uID0gMDsKLQkJIHJlYXNvbiA8IE5VTV9SRUNPVkVSWV9DT05GTElDVF9SRUFTT05TOwot CQkgcmVhc29uKyspCi0JewotCQlpZiAoKHBlbmRpbmcgJiAoMSA8PCByZWFzb24pKSAhPSAw KQotCQl7Ci0JCQkvKiBjbGVhciB0aGUgZmxhZyAqLwotCQkJKHZvaWQpIHBnX2F0b21pY19m ZXRjaF9hbmRfdTMyKCZNeVByb2MtPnBlbmRpbmdSZWNvdmVyeUNvbmZsaWN0cywgfigxIDw8 IHJlYXNvbikpOwotCi0JCQlQcm9jZXNzUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChyZWFz b24pOwotCQl9Ci0JfQorCUFzc2VydChEb2luZ0NvbW1hbmRSZWFkKTsKKwlQcm9jZXNzTm90 aWZ5SW50ZXJydXB0KHRydWUpOwogfQogCi0vKgotICogUHJvY2Vzc0ludGVycnVwdHM6IG91 dC1vZi1saW5lIHBvcnRpb24gb2YgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBtYWNybwotICoK LSAqIElmIGFuIGludGVycnVwdCBjb25kaXRpb24gaXMgcGVuZGluZywgYW5kIGl0J3Mgc2Fm ZSB0byBzZXJ2aWNlIGl0LAotICogdGhlbiBjbGVhciB0aGUgZmxhZyBhbmQgYWNjZXB0IHRo ZSBpbnRlcnJ1cHQuICBDYWxsZWQgb25seSB3aGVuCi0gKiBJbnRlcnJ1cHRQZW5kaW5nIGlz IHRydWUuCi0gKgotICogTm90ZTogaWYgSU5URVJSVVBUU19DQU5fQkVfUFJPQ0VTU0VEKCkg aXMgdHJ1ZSwgdGhlbiBQcm9jZXNzSW50ZXJydXB0cwotICogaXMgZ3VhcmFudGVlZCB0byBj bGVhciB0aGUgSW50ZXJydXB0UGVuZGluZyBmbGFnIGJlZm9yZSByZXR1cm5pbmcuCi0gKiAo VGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgZ3VhcmFudGVlaW5nIHRoYXQgaXQncyBzdGlsbCBj bGVhciB3aGVuIHdlCi0gKiByZXR1cm47IGFub3RoZXIgaW50ZXJydXB0IGNvdWxkIGhhdmUg YXJyaXZlZC4gIEJ1dCB3ZSBwcm9taXNlIHRoYXQKLSAqIGFueSBwcmUtZXhpc3Rpbmcgb25l IHdpbGwgaGF2ZSBiZWVuIHNlcnZpY2VkLikKLSAqLwogdm9pZAotUHJvY2Vzc0ludGVycnVw dHModm9pZCkKK1Byb2Nlc3NUZXJtaW5hdGVJbnRlcnJ1cHQodm9pZCkKIHsKIAkvKiBPSyB0 byBhY2NlcHQgYW55IGludGVycnVwdHMgbm93PyAqLwotCWlmIChJbnRlcnJ1cHRIb2xkb2Zm Q291bnQgIT0gMCB8fCBDcml0U2VjdGlvbkNvdW50ICE9IDApCi0JCXJldHVybjsKLQlJbnRl cnJ1cHRQZW5kaW5nID0gZmFsc2U7CisJQXNzZXJ0KENyaXRTZWN0aW9uQ291bnQgPT0gMCk7 CiAKLQlpZiAoUHJvY0RpZVBlbmRpbmcpCiAJewogCQlpbnQJCQlzZW5kZXJfcGlkID0gUHJv Y0RpZVNlbmRlclBpZDsKIAkJaW50CQkJc2VuZGVyX3VpZCA9IFByb2NEaWVTZW5kZXJVaWQ7 CiAKLQkJUHJvY0RpZVBlbmRpbmcgPSBmYWxzZTsKIAkJUHJvY0RpZVNlbmRlclBpZCA9IDA7 CiAJCVByb2NEaWVTZW5kZXJVaWQgPSAwOwotCQlRdWVyeUNhbmNlbFBlbmRpbmcgPSBmYWxz ZTsgLyogUHJvY0RpZSB0cnVtcHMgUXVlcnlDYW5jZWwgKi8KIAkJTG9ja0Vycm9yQ2xlYW51 cCgpOwogCQkvKiBBcyBpbiBxdWlja2RpZSwgZG9uJ3QgcmlzayBzZW5kaW5nIHRvIGNsaWVu dCBkdXJpbmcgYXV0aCAqLwogCQlpZiAoQ2xpZW50QXV0aEluUHJvZ3Jlc3MgJiYgd2hlcmVU b1NlbmRPdXRwdXQgPT0gRGVzdFJlbW90ZSkKQEAgLTM0MzAsNjUgKzMzNDgsNTUgQEAgUHJv Y2Vzc0ludGVycnVwdHModm9pZCkKIAkJCQkJIGVycm1zZygidGVybWluYXRpbmcgY29ubmVj dGlvbiBkdWUgdG8gYWRtaW5pc3RyYXRvciBjb21tYW5kIiksCiAJCQkJCSBFUlJERVRBSUxf U0lHTkFMX1NFTkRFUihzZW5kZXJfcGlkLCBzZW5kZXJfdWlkKSkpOwogCX0KK30KIAotCWlm IChDaGVja0NsaWVudENvbm5lY3Rpb25QZW5kaW5nKQotCXsKLQkJQ2hlY2tDbGllbnRDb25u ZWN0aW9uUGVuZGluZyA9IGZhbHNlOwogCi0JCS8qCi0JCSAqIENoZWNrIGZvciBsb3N0IGNv bm5lY3Rpb24gYW5kIHJlLWFybSwgaWYgc3RpbGwgY29uZmlndXJlZCwgYnV0IG5vdAotCQkg KiBpZiB3ZSd2ZSBhcnJpdmVkIGJhY2sgYXQgRG9pbmdDb21tYW5kUmVhZCBzdGF0ZS4gIFdl IGRvbid0IHdhbnQgdG8KLQkJICogd2FrZSB1cCBpZGxlIHNlc3Npb25zLCBhbmQgdGhleSBh bHJlYWR5IGtub3cgaG93IHRvIGRldGVjdCBsb3N0Ci0JCSAqIGNvbm5lY3Rpb25zLgotCQkg Ki8KLQkJaWYgKCFEb2luZ0NvbW1hbmRSZWFkICYmIGNsaWVudF9jb25uZWN0aW9uX2NoZWNr X2ludGVydmFsID4gMCkKLQkJewotCQkJaWYgKCFwcV9jaGVja19jb25uZWN0aW9uKCkpCi0J CQkJQ2xpZW50Q29ubmVjdGlvbkxvc3QgPSB0cnVlOwotCQkJZWxzZQotCQkJCWVuYWJsZV90 aW1lb3V0X2FmdGVyKENMSUVOVF9DT05ORUNUSU9OX0NIRUNLX1RJTUVPVVQsCi0JCQkJCQkJ CQkgY2xpZW50X2Nvbm5lY3Rpb25fY2hlY2tfaW50ZXJ2YWwpOwotCQl9Ci0JfQotCi0JaWYg KENsaWVudENvbm5lY3Rpb25Mb3N0KQordm9pZAorUHJvY2Vzc0NsaWVudENoZWNrVGltZW91 dEludGVycnVwdCh2b2lkKQoreworCS8qCisJICogQ2hlY2sgZm9yIGxvc3QgY29ubmVjdGlv biBhbmQgcmUtYXJtLCBpZiBzdGlsbCBjb25maWd1cmVkLCBidXQgbm90IGlmCisJICogd2Un dmUgYXJyaXZlZCBiYWNrIGF0IERvaW5nQ29tbWFuZFJlYWQgc3RhdGUuICBXZSBkb24ndCB3 YW50IHRvIHdha2UgdXAKKwkgKiBpZGxlIHNlc3Npb25zLCBhbmQgdGhleSBhbHJlYWR5IGtu b3cgaG93IHRvIGRldGVjdCBsb3N0IGNvbm5lY3Rpb25zLgorCSAqLworCWlmICghRG9pbmdD b21tYW5kUmVhZCAmJiBjbGllbnRfY29ubmVjdGlvbl9jaGVja19pbnRlcnZhbCA+IDApCiAJ ewotCQlRdWVyeUNhbmNlbFBlbmRpbmcgPSBmYWxzZTsgLyogbG9zdCBjb25uZWN0aW9uIHRy dW1wcyBRdWVyeUNhbmNlbCAqLwotCQlMb2NrRXJyb3JDbGVhbnVwKCk7Ci0JCS8qIGRvbid0 IHNlbmQgdG8gY2xpZW50LCB3ZSBhbHJlYWR5IGtub3cgdGhlIGNvbm5lY3Rpb24gdG8gYmUg ZGVhZC4gKi8KLQkJd2hlcmVUb1NlbmRPdXRwdXQgPSBEZXN0Tm9uZTsKLQkJZXJlcG9ydChG QVRBTCwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0NPTk5FQ1RJT05fRkFJTFVSRSksCi0JCQkJ IGVycm1zZygiY29ubmVjdGlvbiB0byBjbGllbnQgbG9zdCIpKSk7CisJCWlmICghcHFfY2hl Y2tfY29ubmVjdGlvbigpKQorCQkJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0NMSUVOVF9D T05ORUNUSU9OX0xPU1QpOworCQllbHNlCisJCQllbmFibGVfdGltZW91dF9hZnRlcihDTElF TlRfQ09OTkVDVElPTl9DSEVDS19USU1FT1VULAorCQkJCQkJCQkgY2xpZW50X2Nvbm5lY3Rp b25fY2hlY2tfaW50ZXJ2YWwpOwogCX0KK30KIAordm9pZAorUHJvY2Vzc0NsaWVudENvbm5l Y3Rpb25Mb3N0KHZvaWQpCit7CisJLyogRklYTUU6IGNoZWNrIHByb2NkaWUgZmlyc3QgKi8K KworCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9RVUVSWV9DQU5DRUwpOyAvKiBsb3N0IGNv bm5lY3Rpb24gdHJ1bXBzCisJCQkJCQkJCQkJCSAqIFF1ZXJ5Q2FuY2VsICovCisJTG9ja0Vy cm9yQ2xlYW51cCgpOworCS8qIGRvbid0IHNlbmQgdG8gY2xpZW50LCB3ZSBhbHJlYWR5IGtu b3cgdGhlIGNvbm5lY3Rpb24gdG8gYmUgZGVhZC4gKi8KKwl3aGVyZVRvU2VuZE91dHB1dCA9 IERlc3ROb25lOworCWVyZXBvcnQoRkFUQUwsCisJCQkoZXJyY29kZShFUlJDT0RFX0NPTk5F Q1RJT05fRkFJTFVSRSksCisJCQkgZXJybXNnKCJjb25uZWN0aW9uIHRvIGNsaWVudCBsb3N0 IikpKTsKK30KKwordm9pZAorUHJvY2Vzc1F1ZXJ5Q2FuY2VsSW50ZXJydXB0KHZvaWQpCit7 CiAJLyoKLQkgKiBEb24ndCBhbGxvdyBxdWVyeSBjYW5jZWwgaW50ZXJydXB0cyB3aGlsZSBy ZWFkaW5nIGlucHV0IGZyb20gdGhlCi0JICogY2xpZW50LCBiZWNhdXNlIHdlIG1pZ2h0IGxv c2Ugc3luYyBpbiB0aGUgRkUvQkUgcHJvdG9jb2wuICAoRGllCi0JICogaW50ZXJydXB0cyBh cmUgT0ssIGJlY2F1c2Ugd2Ugd29uJ3QgcmVhZCBhbnkgZnVydGhlciBtZXNzYWdlcyBmcm9t IHRoZQotCSAqIGNsaWVudCBpbiB0aGF0IGNhc2UuKQotCSAqCi0JICogU2VlIHNpbWlsYXIg bG9naWMgaW4gUHJvY2Vzc1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHRzKCkuCisJICogRklY TUU6IENoZWNrIGNsaWVudCBjb25uZWN0aW9uIGxvc3QgYW5kIHRlcm1pbmF0ZSBpbnRlcnJ1 cHRzIGZpcnN0LCBzbworCSAqIHRoYXQgaWYgd2UncmUgYWJvdXQgdG8gdGVybWluYXRlIHRo ZSB3aG9sZSBiYWNrZW5kIGFueXdheSwgd2UgZG8gdGhhdAorCSAqIHN0cmFpZ2h0IGF3YXkg YW5kIHNraXAgdGhlIHF1ZXJ5IGNhbmNlbGxhdGlvbi4KIAkgKi8KLQlpZiAoUXVlcnlDYW5j ZWxQZW5kaW5nICYmIFF1ZXJ5Q2FuY2VsSG9sZG9mZkNvdW50ICE9IDApCi0JewotCQkvKgot CQkgKiBSZS1hcm0gSW50ZXJydXB0UGVuZGluZyBzbyB0aGF0IHdlIHByb2Nlc3MgdGhlIGNh bmNlbCByZXF1ZXN0IGFzCi0JCSAqIHNvb24gYXMgd2UncmUgZG9uZSByZWFkaW5nIHRoZSBt ZXNzYWdlLiAgKFhYWCB0aGlzIGlzIHNlcmlvdXNseQotCQkgKiB1Z2x5OiBpdCBjb21wbGlj YXRlcyBJTlRFUlJVUFRTX0NBTl9CRV9QUk9DRVNTRUQoKSwgYW5kIGl0IG1lYW5zIHdlCi0J CSAqIGNhbid0IHVzZSB0aGF0IG1hY3JvIGRpcmVjdGx5IGFzIHRoZSBpbml0aWFsIHRlc3Qg aW4gdGhpcyBmdW5jdGlvbiwKLQkJICogbWVhbmluZyB0aGF0IHRoaXMgY29kZSBhbHNvIGNy ZWF0ZXMgb3Bwb3J0dW5pdGllcyBmb3Igb3RoZXIgYnVncyB0bwotCQkgKiBhcHBlYXIuKQot CQkgKi8KLQkJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7Ci0JfQotCWVsc2UgaWYgKFF1ZXJ5 Q2FuY2VsUGVuZGluZykKKwogCXsKIAkJYm9vbAkJbG9ja190aW1lb3V0X29jY3VycmVkOwog CQlib29sCQlzdG10X3RpbWVvdXRfb2NjdXJyZWQ7CiAKLQkJUXVlcnlDYW5jZWxQZW5kaW5n ID0gZmFsc2U7Ci0KIAkJLyoKIAkJICogSWYgTE9DS19USU1FT1VUIGFuZCBTVEFURU1FTlRf VElNRU9VVCBpbmRpY2F0b3JzIGFyZSBib3RoIHNldCwgd2UKIAkJICogbmVlZCB0byBjbGVh ciBib3RoLCBzbyBhbHdheXMgZmV0Y2ggYm90aC4KQEAgLTM1NDEsNzYgKzM0NDksNjYgQEAg UHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAkJCQkJIGVycm1zZygiY2FuY2VsaW5nIHN0YXRl bWVudCBkdWUgdG8gdXNlciByZXF1ZXN0IikpKTsKIAkJfQogCX0KK30KIAotCWlmIChwZ19h dG9taWNfcmVhZF91MzIoJk15UHJvYy0+cGVuZGluZ1JlY292ZXJ5Q29uZmxpY3RzKSAhPSAw KQotCQlQcm9jZXNzUmVjb3ZlcnlDb25mbGljdEludGVycnVwdHMoKTsKIAotCWlmIChJZGxl SW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0UGVuZGluZykKK3ZvaWQKK1Byb2Nlc3NJZGxl SW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0SW50ZXJydXB0KHZvaWQpCit7CisJLyoKKwkg KiBJZiB0aGUgR1VDIGhhcyBiZWVuIHJlc2V0IHRvIHplcm8sIGlnbm9yZSB0aGUgaW50ZXJy dXB0LiAgVGhpcyBpcworCSAqIGltcG9ydGFudCBiZWNhdXNlIHRoZSBHVUMgdXBkYXRlIGl0 c2VsZiB3b24ndCBkaXNhYmxlIGFueSBwZW5kaW5nCisJICogaW50ZXJydXB0LiAgV2UgbmVl ZCB0byB1bnNldCB0aGUgZmxhZyBiZWZvcmUgdGhlIGluamVjdGlvbiBwb2ludCwKKwkgKiBv dGhlcndpc2Ugd2UgY291bGQgbG9vcCBpbiBpbnRlcnJ1cHRzIGNoZWNraW5nLgorCSAqLwor CWlmIChJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0ID4gMCkKIAl7Ci0JCS8qCi0J CSAqIElmIHRoZSBHVUMgaGFzIGJlZW4gcmVzZXQgdG8gemVybywgaWdub3JlIHRoZSBzaWdu YWwuICBUaGlzIGlzCi0JCSAqIGltcG9ydGFudCBiZWNhdXNlIHRoZSBHVUMgdXBkYXRlIGl0 c2VsZiB3b24ndCBkaXNhYmxlIGFueSBwZW5kaW5nCi0JCSAqIGludGVycnVwdC4gIFdlIG5l ZWQgdG8gdW5zZXQgdGhlIGZsYWcgYmVmb3JlIHRoZSBpbmplY3Rpb24gcG9pbnQsCi0JCSAq IG90aGVyd2lzZSB3ZSBjb3VsZCBsb29wIGluIGludGVycnVwdHMgY2hlY2tpbmcuCi0JCSAq LwotCQlJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0UGVuZGluZyA9IGZhbHNlOwot CQlpZiAoSWRsZUluVHJhbnNhY3Rpb25TZXNzaW9uVGltZW91dCA+IDApCi0JCXsKLQkJCUlO SkVDVElPTl9QT0lOVCgiaWRsZS1pbi10cmFuc2FjdGlvbi1zZXNzaW9uLXRpbWVvdXQiLCBO VUxMKTsKLQkJCWVyZXBvcnQoRkFUQUwsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfSURMRV9J Tl9UUkFOU0FDVElPTl9TRVNTSU9OX1RJTUVPVVQpLAotCQkJCQkgZXJybXNnKCJ0ZXJtaW5h dGluZyBjb25uZWN0aW9uIGR1ZSB0byBpZGxlLWluLXRyYW5zYWN0aW9uIHRpbWVvdXQiKSkp OwotCQl9CisJCUlOSkVDVElPTl9QT0lOVCgiaWRsZS1pbi10cmFuc2FjdGlvbi1zZXNzaW9u LXRpbWVvdXQiLCBOVUxMKTsKKwkJZXJlcG9ydChGQVRBTCwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0lETEVfSU5fVFJBTlNBQ1RJT05fU0VTU0lPTl9USU1FT1VUKSwKKwkJCQkgZXJybXNn KCJ0ZXJtaW5hdGluZyBjb25uZWN0aW9uIGR1ZSB0byBpZGxlLWluLXRyYW5zYWN0aW9uIHRp bWVvdXQiKSkpOwogCX0KK30KIAotCWlmIChUcmFuc2FjdGlvblRpbWVvdXRQZW5kaW5nKQor dm9pZAorUHJvY2Vzc1RyYW5zYWN0aW9uVGltZW91dEludGVycnVwdCh2b2lkKQoreworCS8q IEFzIGFib3ZlLCBpZ25vcmUgdGhlIHNpZ25hbCBpZiB0aGUgR1VDIGhhcyBiZWVuIHJlc2V0 IHRvIHplcm8uICovCisJaWYgKFRyYW5zYWN0aW9uVGltZW91dCA+IDApCiAJewotCQkvKiBB cyBhYm92ZSwgaWdub3JlIHRoZSBzaWduYWwgaWYgdGhlIEdVQyBoYXMgYmVlbiByZXNldCB0 byB6ZXJvLiAqLwotCQlUcmFuc2FjdGlvblRpbWVvdXRQZW5kaW5nID0gZmFsc2U7Ci0JCWlm IChUcmFuc2FjdGlvblRpbWVvdXQgPiAwKQotCQl7Ci0JCQlJTkpFQ1RJT05fUE9JTlQoInRy YW5zYWN0aW9uLXRpbWVvdXQiLCBOVUxMKTsKLQkJCWVyZXBvcnQoRkFUQUwsCi0JCQkJCShl cnJjb2RlKEVSUkNPREVfVFJBTlNBQ1RJT05fVElNRU9VVCksCi0JCQkJCSBlcnJtc2coInRl cm1pbmF0aW5nIGNvbm5lY3Rpb24gZHVlIHRvIHRyYW5zYWN0aW9uIHRpbWVvdXQiKSkpOwot CQl9CisJCUlOSkVDVElPTl9QT0lOVCgidHJhbnNhY3Rpb24tdGltZW91dCIsIE5VTEwpOwor CQllcmVwb3J0KEZBVEFMLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVFJBTlNBQ1RJT05fVElN RU9VVCksCisJCQkJIGVycm1zZygidGVybWluYXRpbmcgY29ubmVjdGlvbiBkdWUgdG8gdHJh bnNhY3Rpb24gdGltZW91dCIpKSk7CiAJfQorfQogCi0JaWYgKElkbGVTZXNzaW9uVGltZW91 dFBlbmRpbmcpCit2b2lkCitQcm9jZXNzSWRsZVNlc3Npb25UaW1lb3V0SW50ZXJydXB0KHZv aWQpCit7CisJLyogQXMgYWJvdmUsIGlnbm9yZSB0aGUgc2lnbmFsIGlmIHRoZSBHVUMgaGFz IGJlZW4gcmVzZXQgdG8gemVyby4gKi8KKwlpZiAoSWRsZVNlc3Npb25UaW1lb3V0ID4gMCkK IAl7Ci0JCS8qIEFzIGFib3ZlLCBpZ25vcmUgdGhlIHNpZ25hbCBpZiB0aGUgR1VDIGhhcyBi ZWVuIHJlc2V0IHRvIHplcm8uICovCi0JCUlkbGVTZXNzaW9uVGltZW91dFBlbmRpbmcgPSBm YWxzZTsKLQkJaWYgKElkbGVTZXNzaW9uVGltZW91dCA+IDApCi0JCXsKLQkJCUlOSkVDVElP Tl9QT0lOVCgiaWRsZS1zZXNzaW9uLXRpbWVvdXQiLCBOVUxMKTsKLQkJCWVyZXBvcnQoRkFU QUwsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfSURMRV9TRVNTSU9OX1RJTUVPVVQpLAotCQkJ CQkgZXJybXNnKCJ0ZXJtaW5hdGluZyBjb25uZWN0aW9uIGR1ZSB0byBpZGxlLXNlc3Npb24g dGltZW91dCIpKSk7Ci0JCX0KKwkJSU5KRUNUSU9OX1BPSU5UKCJpZGxlLXNlc3Npb24tdGlt ZW91dCIsIE5VTEwpOworCQllcmVwb3J0KEZBVEFMLAorCQkJCShlcnJjb2RlKEVSUkNPREVf SURMRV9TRVNTSU9OX1RJTUVPVVQpLAorCQkJCSBlcnJtc2coInRlcm1pbmF0aW5nIGNvbm5l Y3Rpb24gZHVlIHRvIGlkbGUtc2Vzc2lvbiB0aW1lb3V0IikpKTsKIAl9Cit9CiAKK3ZvaWQK K1Byb2Nlc3NJZGxlU3RhdHNUaW1lb3V0SW50ZXJydXB0KHZvaWQpCit7CiAJLyoKLQkgKiBJ ZiB0aGVyZSBhcmUgcGVuZGluZyBzdGF0cyB1cGRhdGVzIGFuZCB3ZSBjdXJyZW50bHkgYXJl IHRydWx5IGlkbGUKLQkgKiAobWF0Y2hpbmcgdGhlIGNvbmRpdGlvbnMgaW4gUG9zdGdyZXNN YWluKCksIHJlcG9ydCBzdGF0cyBub3cuCisJICogU3RhdHMgdXBkYXRlIHdhcyByZXF1ZXN0 ZWQuIFRoaXMgaGFuZGxlciBpcyBvbmx5IGVuYWJsZWQgd2hlbiB3ZSdyZQorCSAqIHRydWx5 IGlkbGUsIHdpdGggbm8gdHJhbnNhY3Rpb24gaW4gcHJvZ3Jlc3MKIAkgKi8KLQlpZiAoSWRs ZVN0YXRzVXBkYXRlVGltZW91dFBlbmRpbmcgJiYKLQkJRG9pbmdDb21tYW5kUmVhZCAmJiAh SXNUcmFuc2FjdGlvbk9yVHJhbnNhY3Rpb25CbG9jaygpKQotCXsKLQkJSWRsZVN0YXRzVXBk YXRlVGltZW91dFBlbmRpbmcgPSBmYWxzZTsKLQkJcGdzdGF0X3JlcG9ydF9zdGF0KHRydWUp OwotCX0KLQotCWlmIChQcm9jU2lnbmFsQmFycmllclBlbmRpbmcpCi0JCVByb2Nlc3NQcm9j U2lnbmFsQmFycmllcigpOwotCi0JaWYgKFBhcmFsbGVsTWVzc2FnZVBlbmRpbmcpCi0JCVBy b2Nlc3NQYXJhbGxlbE1lc3NhZ2VJbnRlcnJ1cHQoKTsKLQotCWlmIChMb2dNZW1vcnlDb250 ZXh0UGVuZGluZykKLQkJUHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQoKTsKLQot CWlmIChTbG90U3luY1NodXRkb3duUGVuZGluZykKLQkJUHJvY2Vzc1Nsb3RTeW5jTWVzc2Fn ZSgpOworCS8qCisJICogRklYTUU6IGNoZWNrIHRoYXQgdGhpcyBpcyBjYWxsZWQgdW5kZXIg cmlnaHQgY29uZGl0aW9ucyBhbHNvIGluCisJICogd2Fsc2VuZGVycworCSAqLworCUFzc2Vy dCghSXNUcmFuc2FjdGlvbk9yVHJhbnNhY3Rpb25CbG9jaygpKTsKKwlwZ3N0YXRfcmVwb3J0 X3N0YXQodHJ1ZSk7CiB9CiAKIC8qCkBAIC00MjgwLDggKzQxNzgsOSBAQCBQb3N0Z3Jlc01h aW4oY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICp1c2VybmFtZSkKIAlBc3NlcnQo R2V0UHJvY2Vzc2luZ01vZGUoKSA9PSBJbml0UHJvY2Vzc2luZyk7CiAKIAkvKgotCSAqIFNl dCB1cCBzaWduYWwgaGFuZGxlcnMuICAoSW5pdFBvc3RtYXN0ZXJDaGlsZCBvciBJbml0U3Rh bmRhbG9uZVByb2Nlc3MKLQkgKiBoYXMgYWxyZWFkeSBzZXQgdXAgQmxvY2tTaWcgYW5kIG1h ZGUgdGhhdCB0aGUgYWN0aXZlIHNpZ25hbCBtYXNrLikKKwkgKiBTZXQgdXAgc2lnbmFsIGFu ZCBpbnRlcnJ1cHQgaGFuZGxlcnMuICAoSW5pdFBvc3RtYXN0ZXJDaGlsZCBvcgorCSAqIElu aXRTdGFuZGFsb25lUHJvY2VzcyBoYXMgYWxyZWFkeSBzZXQgdXAgQmxvY2tTaWcgYW5kIG1h ZGUgdGhhdCB0aGUKKwkgKiBhY3RpdmUgc2lnbmFsIG1hc2suKQogCSAqCiAJICogTm90ZSB0 aGF0IHBvc3RtYXN0ZXIgYmxvY2tlZCBhbGwgc2lnbmFscyBiZWZvcmUgZm9ya2luZyBjaGls ZCBwcm9jZXNzLAogCSAqIHNvIHRoZXJlIGlzIG5vIHJhY2UgY29uZGl0aW9uIHdoZXJlYnkg d2UgbWlnaHQgcmVjZWl2ZSBhIHNpZ25hbCBiZWZvcmUKQEAgLTQyOTQsMTMgKzQxOTMsMTgg QEAgUG9zdGdyZXNNYWluKGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAqdXNlcm5h bWUpCiAJICogYW4gaXNzdWUgZm9yIHNpZ25hbHMgdGhhdCBhcmUgbG9jYWxseSBnZW5lcmF0 ZWQsIHN1Y2ggYXMgU0lHQUxSTSBhbmQKIAkgKiBTSUdQSVBFLikKIAkgKi8KKwlIT0xEX0lO VEVSUlVQVFMoKTsKKwlTZXRTdGFuZGFyZEludGVycnVwdEhhbmRsZXJzKCk7CiAJaWYgKGFt X3dhbHNlbmRlcikKIAkJV2FsU25kU2lnbmFscygpOwogCWVsc2UKIAl7Ci0JCXBxc2lnbmFs KFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7Ci0JCXBxc2lnbmFsKFNJ R0lOVCwgU3RhdGVtZW50Q2FuY2VsSGFuZGxlcik7CS8qIGNhbmNlbCBjdXJyZW50IHF1ZXJ5 ICovCi0JCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7IC8qIGNhbmNlbCBjdXJyZW50IHF1ZXJ5 IGFuZCBleGl0ICovCisJCS8qCisJCSAqIENhbmNlbCBjdXJyZW50IHF1ZXJ5IGFuZCBleGl0 IG9uIFNJR1RFUk0uICBUaGlzIGlzIGEgYml0IG1vcmUKKwkJICogY29tcGxpY2F0ZWQgaW4g YmFja2VuZCBwcm9jZXNzZXMuIHNvIHdlIHdlIGNhbm5vdCB1c2UKKwkJICogU2lnbmFsSGFu ZGxlckZvclNodXRkb3duUmVxdWVzdC4KKwkJICovCisJCXBxc2lnbmFsKFNJR1RFUk0sIGRp ZSk7CiAKIAkJLyoKIAkJICogSW4gYSBwb3N0bWFzdGVyIGNoaWxkIGJhY2tlbmQsIHJlcGxh Y2UgU2lnbmFsSGFuZGxlckZvckNyYXNoRXhpdApAQCAtNDMxNCw3ICs0MjE4LDYgQEAgUG9z dGdyZXNNYWluKGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAqdXNlcm5hbWUpCiAJ CQlwcXNpZ25hbChTSUdRVUlULCBxdWlja2RpZSk7CS8qIGhhcmQgY3Jhc2ggdGltZSAqLwog CQllbHNlCiAJCQlwcXNpZ25hbChTSUdRVUlULCBkaWUpOyAvKiBjYW5jZWwgY3VycmVudCBx dWVyeSBhbmQgZXhpdCAqLwotCQlJbml0aWFsaXplVGltZW91dHMoKTsJLyogZXN0YWJsaXNo ZXMgU0lHQUxSTSBoYW5kbGVyICovCiAKIAkJLyoKIAkJICogSWdub3JlIGZhaWx1cmUgdG8g d3JpdGUgdG8gZnJvbnRlbmQuIE5vdGU6IGlmIGZyb250ZW5kIGNsb3NlcwpAQCAtNDMyMywx MSArNDIyNiwzOSBAQCBQb3N0Z3Jlc01haW4oY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBj aGFyICp1c2VybmFtZSkKIAkJICogbWlkc3Qgb2Ygb3V0cHV0IGR1cmluZyB3aG8ta25vd3Mt d2hhdCBvcGVyYXRpb24uLi4KIAkJICovCiAJCXBxc2lnbmFsKFNJR1BJUEUsIFBHX1NJR19J R04pOwotCQlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcik7 Ci0JCXBxc2lnbmFsKFNJR1VTUjIsIFBHX1NJR19JR04pOwogCQlwcXNpZ25hbChTSUdGUEUs IEZsb2F0RXhjZXB0aW9uSGFuZGxlcik7CisKKwkJLyogU2V0IGhhbmRsZXJzIGZvciB2YXJp b3VzIHRpbWVvdXRzICovCisJCVNldEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX1RSQU5T QUNUSU9OX1RJTUVPVVQsIFByb2Nlc3NUcmFuc2FjdGlvblRpbWVvdXRJbnRlcnJ1cHQpOwor CQlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX1RSQU5TQUNUSU9OX1RJTUVPVVQpOworCQlT ZXRJbnRlcnJ1cHRIYW5kbGVyKElOVEVSUlVQVF9JRExFX1NFU1NJT05fVElNRU9VVCwgUHJv Y2Vzc0lkbGVTZXNzaW9uVGltZW91dEludGVycnVwdCk7CisJCUVuYWJsZUludGVycnVwdChJ TlRFUlJVUFRfSURMRV9TRVNTSU9OX1RJTUVPVVQpOworCQlTZXRJbnRlcnJ1cHRIYW5kbGVy KElOVEVSUlVQVF9JRExFX0lOX1RSQU5TQUNUSU9OX1NFU1NJT05fVElNRU9VVCwgUHJvY2Vz c0lkbGVJblRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRJbnRlcnJ1cHQpOworCQlFbmFibGVJ bnRlcnJ1cHQoSU5URVJSVVBUX0lETEVfSU5fVFJBTlNBQ1RJT05fU0VTU0lPTl9USU1FT1VU KTsKIAl9CiAKKwlJbml0aWFsaXplVGltZW91dHMoKTsJCS8qIGVzdGFibGlzaGVzIFNJR0FM Uk0gaGFuZGxlciAqLworCVNldEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX1FVRVJZX0NB TkNFTCwgUHJvY2Vzc1F1ZXJ5Q2FuY2VsSW50ZXJydXB0KTsKKwlFbmFibGVJbnRlcnJ1cHQo SU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7CisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJV UFRfQ0xJRU5UX0NIRUNLX1RJTUVPVVQsIFByb2Nlc3NDbGllbnRDaGVja1RpbWVvdXRJbnRl cnJ1cHQpOworCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfQ0xJRU5UX0NIRUNLX1RJTUVP VVQpOworCVNldEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX0NMSUVOVF9DT05ORUNUSU9O X0xPU1QsIFByb2Nlc3NDbGllbnRDb25uZWN0aW9uTG9zdCk7CisJRW5hYmxlSW50ZXJydXB0 KElOVEVSUlVQVF9DTElFTlRfQ09OTkVDVElPTl9MT1NUKTsKKworCS8qIHN0YXRzIHVwZGF0 ZXMgYXJlIG9ubHkgc2VudCB3aGVuIHdlJ3JlIGlkbGUsIHNvIGRvbid0IGVuYWJsZSB0aGlz IHlldCAqLworCVNldEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX0lETEVfU1RBVFNfVElN RU9VVCwgUHJvY2Vzc0lkbGVTdGF0c1RpbWVvdXRJbnRlcnJ1cHQpOworCisJLyoKKwkgKiBC YWNrZW5kcyB0aGF0IGNhbiBMSVNURU4gbmVlZCB0aGlzLiAoSXQgaXMgb25seSBlbmFibGVk IHdoZW4gaWRsZQorCSAqIG91dHNpZGUgYSB0cmFuc2FjdGlvbiwgaG93ZXZlci4pCisJICov CisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfQVNZTkNfTk9USUZZLCBQcm9jZXNz QXN5bmNOb3RpZnlJbnRlcnJ1cHQpOworCisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJV UFRfUEFSQUxMRUxfTUVTU0FHRSwgUHJvY2Vzc1BhcmFsbGVsTWVzc2FnZUludGVycnVwdCk7 CisJRW5hYmxlSW50ZXJydXB0KElOVEVSUlVQVF9QQVJBTExFTF9NRVNTQUdFKTsKKworCVJF U1VNRV9JTlRFUlJVUFRTKCk7CisKIAkvKiBFYXJseSBpbml0aWFsaXphdGlvbiAqLwogCUJh c2VJbml0KCk7CiAKQEAgLTQ0OTUsMTEgKzQ0MjYsMTQgQEAgUG9zdGdyZXNNYWluKGNvbnN0 IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAqdXNlcm5hbWUpCiAJCSAqIGZvcmdldHRpbmcg YSB0aW1lb3V0IGNhbmNlbC4KIAkJICovCiAJCWRpc2FibGVfYWxsX3RpbWVvdXRzKGZhbHNl KTsJLyogZG8gZmlyc3QgdG8gYXZvaWQgcmFjZSBjb25kaXRpb24gKi8KLQkJUXVlcnlDYW5j ZWxQZW5kaW5nID0gZmFsc2U7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9RVUVSWV9D QU5DRUwpOwogCQlpZGxlX2luX3RyYW5zYWN0aW9uX3RpbWVvdXRfZW5hYmxlZCA9IGZhbHNl OwogCQlpZGxlX3Nlc3Npb25fdGltZW91dF9lbmFibGVkID0gZmFsc2U7CiAKIAkJLyogTm90 IHJlYWRpbmcgZnJvbSB0aGUgY2xpZW50IGFueW1vcmUuICovCisJCURpc2FibGVJbnRlcnJ1 cHQoSU5URVJSVVBUX1NJTlZBTF9DQVRDSFVQKTsKKwkJRGlzYWJsZUludGVycnVwdChJTlRF UlJVUFRfQVNZTkNfTk9USUZZKTsKKwkJRGlzYWJsZUludGVycnVwdChJTlRFUlJVUFRfSURM RV9TVEFUU19USU1FT1VUKTsKIAkJRG9pbmdDb21tYW5kUmVhZCA9IGZhbHNlOwogCiAJCS8q IE1ha2Ugc3VyZSBsaWJwcSBpcyBpbiBhIGdvb2Qgc3RhdGUgKi8KQEAgLTQ2ODAsNyArNDYx NCw3IEBAIFBvc3RncmVzTWFpbihjb25zdCBjaGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKnVz ZXJuYW1lKQogCQkJCSAqIHdlcmUgcmVjZWl2ZWQgZHVyaW5nIHRoZSBqdXN0LWZpbmlzaGVk IHRyYW5zYWN0aW9uLCB0aGV5J2xsCiAJCQkJICogYmUgc2VlbiBieSB0aGUgY2xpZW50IGJl Zm9yZSBSZWFkeUZvclF1ZXJ5IGlzLgogCQkJCSAqLwotCQkJCWlmIChub3RpZnlJbnRlcnJ1 cHRQZW5kaW5nKQorCQkJCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9BU1lOQ19O T1RJRlkpKQogCQkJCQlQcm9jZXNzTm90aWZ5SW50ZXJydXB0KGZhbHNlKTsKIAogCQkJCS8q CkBAIC00NzY5LDYgKzQ3MDMsMjggQEAgUG9zdGdyZXNNYWluKGNvbnN0IGNoYXIgKmRibmFt ZSwgY29uc3QgY2hhciAqdXNlcm5hbWUpCiAJCSAqLwogCQlEb2luZ0NvbW1hbmRSZWFkID0g dHJ1ZTsKIAorCQkvKgorCQkgKiBMZXQgY2FjaGUgaW52YWwgY2F0Y2h1cCByZXF1ZXN0cyB0 byBiZSBwcm9jZXNzZWQgd2hpbGUgd2UncmUgaWRsZS4KKwkJICovCisJCUVuYWJsZUludGVy cnVwdChJTlRFUlJVUFRfU0lOVkFMX0NBVENIVVApOworCisJCS8qCisJCSAqIFdoZW4gd2Un cmUgdHJ1bHkgaWRsZSwgaS5lLiBubyB0cmFuc2FjdGlvbiBpbiBwcm9ncmVzcywgd2UgY2Fu CisJCSAqIGFkZGl0aW9uYWxseSBwcm9jZXNzIGFueSBhc3luYyBMSVNURU4vTk9USUZZIG1l c3NhZ2VzIGFuZCBzdGF0cworCQkgKiB1cGRhdGUgcmVxdWVzdHMuCisJCSAqLworCQlpZiAo IUlzVHJhbnNhY3Rpb25PclRyYW5zYWN0aW9uQmxvY2soKSkKKwkJeworCQkJRW5hYmxlSW50 ZXJydXB0KElOVEVSUlVQVF9BU1lOQ19OT1RJRlkpOworCQkJRW5hYmxlSW50ZXJydXB0KElO VEVSUlVQVF9JRExFX1NUQVRTX1RJTUVPVVQpOworCQl9CisKKwkJLyoKKwkJICogSWYgYW55 IG9mIHRoZSBuZXdseS1lbmFibGVkIGludGVycnVwdHMgYXJlIGFscmVhZHkgcGVuZGluZywg cHJvY2VzcworCQkgKiB0aGVtIG5vdy4KKwkJICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CisKIAkJLyoKIAkJICogKDMpIHJlYWQgYSBjb21tYW5kIChsb29wIGJsb2NrcyBoZXJl KQogCQkgKi8KQEAgLTQ3OTgsMjIgKzQ3NTQsMjIgQEAgUG9zdGdyZXNNYWluKGNvbnN0IGNo YXIgKmRibmFtZSwgY29uc3QgY2hhciAqdXNlcm5hbWUpCiAJCSAqCiAJCSAqIFF1ZXJ5IGNh bmNlbCBpcyBzdXBwb3NlZCB0byBiZSBhIG5vLW9wIHdoZW4gdGhlcmUgaXMgbm8gcXVlcnkg aW4KIAkJICogcHJvZ3Jlc3MsIHNvIGlmIGEgcXVlcnkgY2FuY2VsIGFycml2ZWQgd2hpbGUg d2Ugd2VyZSBpZGxlLCBqdXN0Ci0JCSAqIHJlc2V0IFF1ZXJ5Q2FuY2VsUGVuZGluZy4gUHJv Y2Vzc0ludGVycnVwdHMoKSBoYXMgdGhhdCBlZmZlY3Qgd2hlbgotCQkgKiBpdCdzIGNhbGxl ZCB3aGVuIERvaW5nQ29tbWFuZFJlYWQgaXMgc2V0LCBzbyBjaGVjayBmb3IgaW50ZXJydXB0 cwotCQkgKiBiZWZvcmUgcmVzZXR0aW5nIERvaW5nQ29tbWFuZFJlYWQuCisJCSAqIHJlc2V0 IElOVEVSUlVQVF9RVUVSWV9DQU5DRUwuIFByb2Nlc3NJbnRlcnJ1cHRzKCkgaGFzIHRoYXQg ZWZmZWN0CisJCSAqIHdoZW4gaXQncyBjYWxsZWQgd2hlbiBEb2luZ0NvbW1hbmRSZWFkIGlz IHNldCwgc28gY2hlY2sgZm9yCisJCSAqIGludGVycnVwdHMgYmVmb3JlIHJlc2V0dGluZyBE b2luZ0NvbW1hbmRSZWFkLgogCQkgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJ RG9pbmdDb21tYW5kUmVhZCA9IGZhbHNlOworCQlEaXNhYmxlSW50ZXJydXB0KElOVEVSUlVQ VF9TSU5WQUxfQ0FUQ0hVUCk7CisJCURpc2FibGVJbnRlcnJ1cHQoSU5URVJSVVBUX0FTWU5D X05PVElGWSk7CisJCURpc2FibGVJbnRlcnJ1cHQoSU5URVJSVVBUX0lETEVfU1RBVFNfVElN RU9VVCk7CiAKIAkJLyoKIAkJICogKDYpIGNoZWNrIGZvciBhbnkgb3RoZXIgaW50ZXJlc3Rp bmcgZXZlbnRzIHRoYXQgaGFwcGVuZWQgd2hpbGUgd2UKIAkJICogc2xlcHQuCiAJCSAqLwot CQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKLQkJewotCQkJQ29uZmlnUmVsb2FkUGVuZGlu ZyA9IGZhbHNlOworCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JF TE9BRCkpCiAJCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKLQkJfQogCiAJCS8q CiAJCSAqICg3KSBwcm9jZXNzIHRoZSBjb21tYW5kLiAgQnV0IGlnbm9yZSBpdCBpZiB3ZSdy ZSBza2lwcGluZyB0aWxsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4 dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMKaW5kZXggMWE0 ZGJiZWI4ZGIuLjk2MTUxMWVjMjkyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvbWN4dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5j CkBAIC0xNyw2ICsxNyw3IEBACiAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGVfZC5oIgog I2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5j bHVkZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNs dWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgpAQCAtMjY4LDcgKzI2OSw2IEBAIHBnX2xvZ19i YWNrZW5kX21lbW9yeV9jb250ZXh0cyhQR19GVU5DVElPTl9BUkdTKQogewogCWludAkJCXBp ZCA9IFBHX0dFVEFSR19JTlQzMigwKTsKIAlQR1BST0MJICAgKnByb2M7Ci0JUHJvY051bWJl cglwcm9jTnVtYmVyID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAogCS8qCiAJICogU2VlIGlm IHRoZSBwcm9jZXNzIHdpdGggZ2l2ZW4gcGlkIGlzIGEgYmFja2VuZCBvciBhbiBhdXhpbGlh cnkgcHJvY2Vzcy4KQEAgLTI5NywxNCArMjk3LDcgQEAgcGdfbG9nX2JhY2tlbmRfbWVtb3J5 X2NvbnRleHRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCVBHX1JFVFVSTl9CT09MKGZhbHNlKTsK IAl9CiAKLQlwcm9jTnVtYmVyID0gR2V0TnVtYmVyRnJvbVBHUHJvYyhwcm9jKTsKLQlpZiAo U2VuZFByb2NTaWduYWwocGlkLCBQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwgcHJvY051 bWJlcikgPCAwKQotCXsKLQkJLyogQWdhaW4sIGp1c3QgYSB3YXJuaW5nIHRvIGFsbG93IGxv b3BzICovCi0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJybXNnKCJjb3VsZCBub3Qgc2Vu ZCBzaWduYWwgdG8gcHJvY2VzcyAlZDogJW0iLCBwaWQpKSk7Ci0JCVBHX1JFVFVSTl9CT09M KGZhbHNlKTsKLQl9CisJU2VuZEludGVycnVwdChJTlRFUlJVUFRfTE9HX01FTU9SWV9DT05U RVhULCBHZXROdW1iZXJGcm9tUEdQcm9jKHByb2MpKTsKIAogCVBHX1JFVFVSTl9CT09MKHRy dWUpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21pc2MuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9taXNjLmMKaW5kZXggYzAzM2U2OGJhMTUuLmFiZWQ1ODg4 ZTQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9taXNjLmMKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRl ICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCiAjaW5jbHVkZSAiY29tbW9uL2tleXdvcmRzLmgi CiAjaW5jbHVkZSAiZnVuY2FwaS5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1 ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJub2Rlcy9taXNjbm9kZXMuaCIKICNp bmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgogI2luY2x1ZGUgInBhcnNlci9zY2Fuc3Vw LmgiCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rlci9zeXNsb2dnZXIu aCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9mZC5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJ0Y29w L3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1 dGlscy9mbWdyb2lkcy5oIgpAQCAtMzQ4LDE2ICszNDcsMTYgQEAgcGdfc2xlZXAoUEdfRlVO Q1RJT05fQVJHUykKIAl1c2VjcyA9IChpbnQ2NCkgTWluKHNlY3MsIChmbG9hdDgpIChQR19J TlQ2NF9NQVggLyAyKSk7CiAKIAkvKgotCSAqIFdlIHNsZWVwIHVzaW5nIFdhaXRMYXRjaCwg dG8gZW5zdXJlIHRoYXQgd2UnbGwgd2FrZSB1cCBwcm9tcHRseSBpZiBhbgotCSAqIGltcG9y dGFudCBzaWduYWwgKHN1Y2ggYXMgU0lHQUxSTSBvciBTSUdJTlQpIGFycml2ZXMuICBCZWNh dXNlCi0JICogV2FpdExhdGNoJ3MgdXBwZXIgbGltaXQgb2YgZGVsYXkgaXMgSU5UX01BWCBt aWxsaXNlY29uZHMsIGFuZCB0aGUgdXNlcgotCSAqIG1pZ2h0IGFzayBmb3IgbW9yZSB0aGFu IHRoYXQsIHdlIHNsZWVwIGZvciBhdCBtb3N0IDEwIG1pbnV0ZXMgYW5kIHRoZW4KLQkgKiBs b29wLgorCSAqIFdlIHNsZWVwIHVzaW5nIFdhaXRJbnRlcnJ1cHQsIHRvIGVuc3VyZSB0aGF0 IHdlJ2xsIHdha2UgdXAgcHJvbXB0bHkgaWYKKwkgKiBhbiBpbXBvcnRhbnQgc2lnbmFsIChz dWNoIGFzIFNJR0FMUk0gb3IgU0lHSU5UKSBhcnJpdmVzLiAgQmVjYXVzZQorCSAqIFdhaXRJ bnRlcnJ1cHQncyB1cHBlciBsaW1pdCBvZiBkZWxheSBpcyBJTlRfTUFYIG1pbGxpc2Vjb25k cywgYW5kIHRoZQorCSAqIHVzZXIgbWlnaHQgYXNrIGZvciBtb3JlIHRoYW4gdGhhdCwgd2Ug c2xlZXAgZm9yIGF0IG1vc3QgMTAgbWludXRlcyBhbmQKKwkgKiB0aGVuIGxvb3AuCiAJICoK IAkgKiBCeSBjb21wdXRpbmcgdGhlIGludGVuZGVkIHN0b3AgdGltZSBpbml0aWFsbHksIHdl IGF2b2lkIGFjY3VtdWxhdGlvbiBvZgogCSAqIGV4dHJhIGRlbGF5IGFjcm9zcyBtdWx0aXBs ZSBzbGVlcHMuICBUaGlzIGFsc28gZW5zdXJlcyB3ZSB3b24ndCBkZWxheQotCSAqIGxlc3Mg dGhhbiB0aGUgc3BlY2lmaWVkIHRpbWUgd2hlbiBXYWl0TGF0Y2ggaXMgdGVybWluYXRlZCBl YXJseSBieSBhCi0JICogbm9uLXF1ZXJ5LWNhbmNlbGluZyBzaWduYWwgc3VjaCBhcyBTSUdI VVAuCisJICogbGVzcyB0aGFuIHRoZSBzcGVjaWZpZWQgdGltZSB3aGVuIFdhaXRJbnRlcnJ1 cHQgaXMgdGVybWluYXRlZCBlYXJseSBieQorCSAqIGEgbm9uLXF1ZXJ5LWNhbmNlbGluZyBz aWduYWwgc3VjaCBhcyBTSUdIVVAuCiAJICovCiAJZW5kdGltZSA9IEdldEN1cnJlbnRUaW1l c3RhbXAoKSArIHVzZWNzOwogCkBAIC0zNzYsMTEgKzM3NSwxMCBAQCBwZ19zbGVlcChQR19G VU5DVElPTl9BUkdTKQogCQllbHNlCiAJCQlicmVhazsKIAotCQkodm9pZCkgV2FpdExhdGNo KE15TGF0Y2gsCi0JCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsCi0JCQkJCQkgZGVsYXlfbXMsCi0JCQkJCQkgV0FJVF9FVkVOVF9QR19T TEVFUCk7Ci0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0 KENoZWNrRm9ySW50ZXJydXB0c01hc2ssCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJ TUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSBkZWxheV9tcywKKwkJCQkJ CQkgV0FJVF9FVkVOVF9QR19TTEVFUCk7CiAJfQogCiAJUEdfUkVUVVJOX1ZPSUQoKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYwppbmRleCBhMjBlN2VhMWQxMS4uMzBlODUzZWUz NmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMKQEAgLTE3NDcsMTAgKzE3NDcs MTAgQEAgVGltZXN0YW1wRGlmZmVyZW5jZShUaW1lc3RhbXBUeiBzdGFydF90aW1lLCBUaW1l c3RhbXBUeiBzdG9wX3RpbWUsCiAgKiBUaW1lc3RhbXBEaWZmZXJlbmNlTWlsbGlzZWNvbmRz IC0tIGNvbnZlcnQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28KICAqIAkJdGltZXN0YW1w cyBpbnRvIGludGVnZXIgbWlsbGlzZWNvbmRzCiAgKgotICogVGhpcyBpcyB0eXBpY2FsbHkg dXNlZCB0byBjYWxjdWxhdGUgYSB3YWl0IHRpbWVvdXQgZm9yIFdhaXRMYXRjaCgpCisgKiBU aGlzIGlzIHR5cGljYWxseSB1c2VkIHRvIGNhbGN1bGF0ZSBhIHdhaXQgdGltZW91dCBmb3Ig V2FpdEludGVycnVwdCgpCiAgKiBvciBhIHJlbGF0ZWQgZnVuY3Rpb24uICBUaGUgY2hvaWNl IG9mICJsb25nIiBhcyB0aGUgcmVzdWx0IHR5cGUKICAqIGlzIHRvIGhhcm1vbml6ZSB3aXRo IHRoYXQ7IGZ1cnRoZXJtb3JlLCB3ZSBjbGFtcCB0aGUgcmVzdWx0IHRvIGF0IG1vc3QKLSAq IElOVF9NQVggbWlsbGlzZWNvbmRzLCBiZWNhdXNlIHRoYXQncyBhbGwgdGhhdCBXYWl0TGF0 Y2goKSBhbGxvd3MuCisgKiBJTlRfTUFYIG1pbGxpc2Vjb25kcywgYmVjYXVzZSB0aGF0J3Mg YWxsIHRoYXQgV2FpdEludGVycnVwdCgpIGFsbG93cy4KICAqCiAgKiBXZSBleHBlY3Qgc3Rh cnRfdGltZSA8PSBzdG9wX3RpbWUuICBJZiBub3QsIHdlIHJldHVybiB6ZXJvLAogICogc2lu Y2UgdGhlbiB3ZSdyZSBhbHJlYWR5IHBhc3QgdGhlIHByZXZpb3VzbHkgZGV0ZXJtaW5lZCBz dG9wX3RpbWUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMg Yi9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMKaW5kZXggYTY5MzZhMGM2NjQuLmI4 ODY2MzhlM2EwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxvZy5jCkBAIC01MzcsMTAgKzUzNyw3 IEBAIGVycmZpbmlzaChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubywgY29uc3Qg Y2hhciAqZnVuY25hbWUpCiAJCSAqIGNvdWxkIHNhdmUgYW5kIHJlc3RvcmUgSW50ZXJydXB0 SG9sZG9mZkNvdW50IGZvciBpdHNlbGYsIGJ1dCB0aGlzCiAJCSAqIHNob3VsZCBtYWtlIGxp ZmUgZWFzaWVyIGZvciBtb3N0LikKIAkJICovCi0JCUludGVycnVwdEhvbGRvZmZDb3VudCA9 IDA7Ci0JCVF1ZXJ5Q2FuY2VsSG9sZG9mZkNvdW50ID0gMDsKLQotCQlDcml0U2VjdGlvbkNv dW50ID0gMDsJLyogc2hvdWxkIGJlIHVubmVjZXNzYXJ5LCBidXQuLi4gKi8KKwkJUmVzZXRJ bnRlcnJ1cHRIb2xkb2ZmQ291bnRzKDAsIDApOwogCiAJCS8qCiAJCSAqIE5vdGUgdGhhdCB3 ZSBsZWF2ZSBDdXJyZW50TWVtb3J5Q29udGV4dCBzZXQgdG8gRXJyb3JDb250ZXh0LiBUaGUK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKaW5kZXggYjQxZGQwYTY5MjguLjlhZDAzZjhk NjY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwpAQCAtMzAsMjAgKzMwLDcgQEAK IAogUHJvdG9jb2xWZXJzaW9uIEZyb250ZW5kUHJvdG9jb2w7CiAKLXZvbGF0aWxlIHNpZ19h dG9taWNfdCBJbnRlcnJ1cHRQZW5kaW5nID0gZmFsc2U7Ci12b2xhdGlsZSBzaWdfYXRvbWlj X3QgUXVlcnlDYW5jZWxQZW5kaW5nID0gZmFsc2U7Ci12b2xhdGlsZSBzaWdfYXRvbWljX3Qg UHJvY0RpZVBlbmRpbmcgPSBmYWxzZTsKLXZvbGF0aWxlIHNpZ19hdG9taWNfdCBDaGVja0Ns aWVudENvbm5lY3Rpb25QZW5kaW5nID0gZmFsc2U7Ci12b2xhdGlsZSBzaWdfYXRvbWljX3Qg Q2xpZW50Q29ubmVjdGlvbkxvc3QgPSBmYWxzZTsKLXZvbGF0aWxlIHNpZ19hdG9taWNfdCBJ ZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0UGVuZGluZyA9IGZhbHNlOwotdm9sYXRp bGUgc2lnX2F0b21pY190IFRyYW5zYWN0aW9uVGltZW91dFBlbmRpbmcgPSBmYWxzZTsKLXZv bGF0aWxlIHNpZ19hdG9taWNfdCBJZGxlU2Vzc2lvblRpbWVvdXRQZW5kaW5nID0gZmFsc2U7 Ci12b2xhdGlsZSBzaWdfYXRvbWljX3QgUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nID0gZmFs c2U7Ci12b2xhdGlsZSBzaWdfYXRvbWljX3QgTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcgPSBm YWxzZTsKLXZvbGF0aWxlIHNpZ19hdG9taWNfdCBJZGxlU3RhdHNVcGRhdGVUaW1lb3V0UGVu ZGluZyA9IGZhbHNlOwotdm9sYXRpbGUgdWludDMyIEludGVycnVwdEhvbGRvZmZDb3VudCA9 IDA7Ci12b2xhdGlsZSB1aW50MzIgUXVlcnlDYW5jZWxIb2xkb2ZmQ291bnQgPSAwOwotdm9s YXRpbGUgdWludDMyIENyaXRTZWN0aW9uQ291bnQgPSAwOworLyogdGhlc2UgYXJlIG1hcmtl ZCB2b2xhdGlsZSBiZWNhdXNlIHRoZXkgYXJlIHNldCBieSBzaWduYWwgaGFuZGxlcnM6ICov CiB2b2xhdGlsZSBpbnQgUHJvY0RpZVNlbmRlclBpZCA9IDA7CiB2b2xhdGlsZSBpbnQgUHJv Y0RpZVNlbmRlclVpZCA9IDA7CiAKQEAgLTU2LDE1ICs0Myw2IEBAIHVpbnQ4CQlNeUNhbmNl bEtleVtNQVhfQ0FOQ0VMX0tFWV9MRU5HVEhdOwogaW50CQkJTXlDYW5jZWxLZXlMZW5ndGgg PSAwOwogaW50CQkJTXlQTUNoaWxkU2xvdDsKIAotLyoKLSAqIE15TGF0Y2ggcG9pbnRzIHRv IHRoZSBsYXRjaCB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciBzaWduYWwgaGFuZGxpbmcgYnkg dGhlCi0gKiBjdXJyZW50IHByb2Nlc3MuIEl0IHdpbGwgZWl0aGVyIHBvaW50IHRvIGEgcHJv Y2VzcyBsb2NhbCBsYXRjaCBpZiB0aGUKLSAqIGN1cnJlbnQgcHJvY2VzcyBkb2VzIG5vdCBo YXZlIGEgUEdQUk9DIGVudHJ5IGluIHRoYXQgbW9tZW50LCBvciB0bwotICogUEdQUk9DLT5w cm9jTGF0Y2ggaWYgaXQgaGFzLiBUaHVzIGl0IGNhbiBhbHdheXMgYmUgdXNlZCBpbiBzaWdu YWwgaGFuZGxlcnMsCi0gKiB3aXRob3V0IGNoZWNraW5nIGZvciBpdHMgZXhpc3RlbmNlLgot ICovCi1zdHJ1Y3QgTGF0Y2ggKk15TGF0Y2g7Ci0KIC8qCiAgKiBEYXRhRGlyIGlzIHRoZSBh YnNvbHV0ZSBwYXRoIHRvIHRoZSB0b3AgbGV2ZWwgb2YgdGhlIFBHREFUQSBkaXJlY3Rvcnkg dHJlZS4KICAqIEV4Y2VwdCBkdXJpbmcgZWFybHkgc3RhcnR1cCwgdGhpcyBpcyBhbHNvIHRo ZSBzZXJ2ZXIncyB3b3JraW5nIGRpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2luaXQvbWlzY2luaXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2lu aXQuYwppbmRleCBmNDk5MmZmMTYyMi4uN2Y5M2IxMzNlNzggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9p bml0L21pc2Npbml0LmMKQEAgLTQzLDcgKzQzLDYgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlv bi9zbG90c3luYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9y YWdlL2lwYy5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9y YWdlL3BnX3NobWVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvYy5oIgpAQCAtNjcsOCArNjYsNiBAQCBCYWNrZW5kVHlwZSBNeUJh Y2tlbmRUeXBlOwogLyogTGlzdCBvZiBsb2NrIGZpbGVzIHRvIGJlIHJlbW92ZWQgYXQgcHJv YyBleGl0ICovCiBzdGF0aWMgTGlzdCAqbG9ja19maWxlcyA9IE5JTDsKIAotc3RhdGljIExh dGNoIExvY2FsTGF0Y2hEYXRhOwotCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJaWdub3Jpbmcgc3lz dGVtIGluZGV4ZXMgc3VwcG9ydCBzdHVmZgogICoKQEAgLTEyNywxMCArMTI0LDkgQEAgSW5p dFBvc3RtYXN0ZXJDaGlsZCh2b2lkKQogCXBxaW5pdG1hc2soKTsKICNlbmRpZgogCi0JLyog SW5pdGlhbGl6ZSBwcm9jZXNzLWxvY2FsIGxhdGNoIHN1cHBvcnQgKi8KKwkvKiBJbml0aWFs aXplIHByb2Nlc3MtbG9jYWwgaW50ZXJydXB0IHN1cHBvcnQgKi8KIAlJbml0aWFsaXplV2Fp dEV2ZW50U3VwcG9ydCgpOwotCUluaXRQcm9jZXNzTG9jYWxMYXRjaCgpOwotCUluaXRpYWxp emVMYXRjaFdhaXRTZXQoKTsKKwlJbml0aWFsaXplSW50ZXJydXB0V2FpdFNldCgpOwogCiAJ LyoKIAkgKiBJZiBwb3NzaWJsZSwgbWFrZSB0aGlzIHByb2Nlc3MgYSBncm91cCBsZWFkZXIs IHNvIHRoYXQgdGhlIHBvc3RtYXN0ZXIKQEAgLTE0NCwyNSArMTQwLDEyIEBAIEluaXRQb3N0 bWFzdGVyQ2hpbGQodm9pZCkKICNlbmRpZgogCiAJLyoKLQkgKiBSZXNldCBzaWduYWxzIHRo YXQgYXJlIHVzZWQgYnkgcG9zdG1hc3RlciBidXQgbm90IGJ5IGNoaWxkIHByb2Nlc3Nlcy4K KwkgKiBTZXQgc3RhbmRhcmQgc2lnbmFsIGhhbmRsZXJzIHN1aXRhYmxlIGZvciBtb3N0IGJh Y2tlbmQgcHJvY2Vzc2VzLgogCSAqCi0JICogQ3VycmVudGx5IGp1c3QgU0lHQ0hMRC4gIFRo ZSBoYW5kbGVycyBmb3Igb3RoZXIgc2lnbmFscyBhcmUgb3ZlcnJpZGRlbgotCSAqIGxhdGVy LCBkZXBlbmRpbmcgb24gdGhlIGNoaWxkIHByb2Nlc3MgdHlwZS4KKwkgKiBXZSBkb24ndCB1 bmJsb2NrIHRoZSBzaWduYWxzIHlldCwgc28gdGhhdCBpZiB0aGUgcHJvY2VzcyBuZWVkcyBz cGVjaWFsCisJICogc2lnbmFsIGhhbmRsaW5nLCBpdCBjYW4gaW5zdGFsbCBjdXN0b20gaGFu ZGxlcnMgYmVmb3JlIHVuYmxvY2tpbmcuCiAJICovCi0JcHFzaWduYWwoU0lHQ0hMRCwgUEdf U0lHX0RGTCk7CS8qIHN5c3RlbSgpIHJlcXVpcmVzIHRoaXMgdG8gYmUgU0lHX0RGTAotCQkJ CQkJCQkJICogcmF0aGVyIHRoYW4gU0lHX0lHTiBvbiBzb21lIHBsYXRmb3JtcyAqLwotCi0J LyoKLQkgKiBFdmVyeSBwb3N0bWFzdGVyIGNoaWxkIHByb2Nlc3MgaXMgZXhwZWN0ZWQgdG8g cmVzcG9uZCBwcm9tcHRseSB0bwotCSAqIFNJR1FVSVQgYXQgYWxsIHRpbWVzLiAgVGhlcmVm b3JlIHdlIGNlbnRyYWxseSByZW1vdmUgU0lHUVVJVCBmcm9tCi0JICogQmxvY2tTaWcgYW5k IGluc3RhbGwgYSBzdWl0YWJsZSBzaWduYWwgaGFuZGxlci4gIChDbGllbnQtZmFjaW5nCi0J ICogcHJvY2Vzc2VzIG1heSBjaG9vc2UgdG8gcmVwbGFjZSB0aGlzIGRlZmF1bHQgY2hvaWNl IG9mIGhhbmRsZXIgd2l0aAotCSAqIHF1aWNrZGllKCkuKSAgQWxsIG90aGVyIGJsb2NrYWJs ZSBzaWduYWxzIHJlbWFpbiBibG9ja2VkIGZvciBub3cuCi0JICovCi0JcHFzaWduYWwoU0lH UVVJVCwgU2lnbmFsSGFuZGxlckZvckNyYXNoRXhpdCk7Ci0KLQlzaWdkZWxzZXQoJkJsb2Nr U2lnLCBTSUdRVUlUKTsKLQlzaWdwcm9jbWFzayhTSUdfU0VUTUFTSywgJkJsb2NrU2lnLCBO VUxMKTsKKwlTZXRQb3N0bWFzdGVyQ2hpbGRTaWduYWxIYW5kbGVycygpOwogCiAJLyoKIAkg KiBJdCBpcyB1cCB0byB0aGUgKk1haW4oKSBmdW5jdGlvbiB0byBzZXQgc2lnbmFsIGhhbmRs ZXJzIGFwcHJvcHJpYXRlIGZvcgpAQCAtMjAyLDEwICsxODUsOSBAQCBJbml0U3RhbmRhbG9u ZVByb2Nlc3MoY29uc3QgY2hhciAqYXJndjApCiAKIAlJbml0UHJvY2Vzc0dsb2JhbHMoKTsK IAotCS8qIEluaXRpYWxpemUgcHJvY2Vzcy1sb2NhbCBsYXRjaCBzdXBwb3J0ICovCisJLyog SW5pdGlhbGl6ZSBwcm9jZXNzLWxvY2FsIGludGVycnVwdCBzdXBwb3J0ICovCiAJSW5pdGlh bGl6ZVdhaXRFdmVudFN1cHBvcnQoKTsKLQlJbml0UHJvY2Vzc0xvY2FsTGF0Y2goKTsKLQlJ bml0aWFsaXplTGF0Y2hXYWl0U2V0KCk7CisJSW5pdGlhbGl6ZUludGVycnVwdFdhaXRTZXQo KTsKIAogCS8qCiAJICogRm9yIGNvbnNpc3RlbmN5IHdpdGggSW5pdFBvc3RtYXN0ZXJDaGls ZCwgaW5pdGlhbGl6ZSBzaWduYWwgbWFzayBoZXJlLgpAQCAtMjI2LDQ4ICsyMDgsNiBAQCBJ bml0U3RhbmRhbG9uZVByb2Nlc3MoY29uc3QgY2hhciAqYXJndjApCiAJCWdldF9wa2dsaWJf cGF0aChteV9leGVjX3BhdGgsIHBrZ2xpYl9wYXRoKTsKIH0KIAotdm9pZAotU3dpdGNoVG9T aGFyZWRMYXRjaCh2b2lkKQotewotCUFzc2VydChNeUxhdGNoID09ICZMb2NhbExhdGNoRGF0 YSk7Ci0JQXNzZXJ0KE15UHJvYyAhPSBOVUxMKTsKLQotCU15TGF0Y2ggPSAmTXlQcm9jLT5w cm9jTGF0Y2g7Ci0KLQlpZiAoRmVCZVdhaXRTZXQpCi0JCU1vZGlmeVdhaXRFdmVudChGZUJl V2FpdFNldCwgRmVCZVdhaXRTZXRMYXRjaFBvcywgV0xfTEFUQ0hfU0VULAotCQkJCQkJTXlM YXRjaCk7Ci0KLQkvKgotCSAqIFNldCB0aGUgc2hhcmVkIGxhdGNoIGFzIHRoZSBsb2NhbCBv bmUgbWlnaHQgaGF2ZSBiZWVuIHNldC4gVGhpcwotCSAqIHNob3VsZG4ndCBub3JtYWxseSBi ZSBuZWNlc3NhcnkgYXMgY29kZSBpcyBzdXBwb3NlZCB0byBjaGVjayB0aGUKLQkgKiBjb25k aXRpb24gYmVmb3JlIHdhaXRpbmcgZm9yIHRoZSBsYXRjaCwgYnV0IGEgYml0IGNhcmUgY2Fu J3QgaHVydC4KLQkgKi8KLQlTZXRMYXRjaChNeUxhdGNoKTsKLX0KLQotdm9pZAotSW5pdFBy b2Nlc3NMb2NhbExhdGNoKHZvaWQpCi17Ci0JTXlMYXRjaCA9ICZMb2NhbExhdGNoRGF0YTsK LQlJbml0TGF0Y2goTXlMYXRjaCk7Ci19Ci0KLXZvaWQKLVN3aXRjaEJhY2tUb0xvY2FsTGF0 Y2godm9pZCkKLXsKLQlBc3NlcnQoTXlMYXRjaCAhPSAmTG9jYWxMYXRjaERhdGEpOwotCUFz c2VydChNeVByb2MgIT0gTlVMTCAmJiBNeUxhdGNoID09ICZNeVByb2MtPnByb2NMYXRjaCk7 Ci0KLQlNeUxhdGNoID0gJkxvY2FsTGF0Y2hEYXRhOwotCi0JaWYgKEZlQmVXYWl0U2V0KQot CQlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0TGF0Y2hQb3MsIFdM X0xBVENIX1NFVCwKLQkJCQkJCU15TGF0Y2gpOwotCi0JU2V0TGF0Y2goTXlMYXRjaCk7Ci19 Ci0KIC8qCiAgKiBSZXR1cm4gYSBodW1hbi1yZWFkYWJsZSBzdHJpbmcgcmVwcmVzZW50YXRp b24gb2YgYSBCYWNrZW5kVHlwZS4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9pbml0L3Bvc3Rpbml0LmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMK aW5kZXggM2Q4YzliZGViZDUuLmYwOWE3MjMxZGVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9w b3N0aW5pdC5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19kYXRh YmFzZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGJfcm9sZV9zZXR0aW5nLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVw dC5oIgogI2luY2x1ZGUgImxpYnBxL2F1dGguaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS1i ZS5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCkBAIC0xNDEzLDIwICsxNDE0LDE5IEBA IFNodXRkb3duUG9zdGdyZXMoaW50IGNvZGUsIERhdHVtIGFyZykKIHN0YXRpYyB2b2lkCiBT dGF0ZW1lbnRUaW1lb3V0SGFuZGxlcih2b2lkKQogewotCWludAkJCXNpZyA9IFNJR0lOVDsK LQogCS8qCiAJICogRHVyaW5nIGF1dGhlbnRpY2F0aW9uIHRoZSB0aW1lb3V0IGlzIHVzZWQg dG8gZGVhbCB3aXRoCiAJICogYXV0aGVudGljYXRpb25fdGltZW91dCAtIHdlIHdhbnQgdG8g cXVpdCBpbiByZXNwb25zZSB0byBzdWNoIHRpbWVvdXRzLgogCSAqLwogCWlmIChDbGllbnRB dXRoSW5Qcm9ncmVzcykKLQkJc2lnID0gU0lHVEVSTTsKKwkJUmFpc2VJbnRlcnJ1cHQoSU5U RVJSVVBUX1RFUk1JTkFURSk7CisJZWxzZQorCQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRf UVVFUllfQ0FOQ0VMKTsKIAotI2lmZGVmIEhBVkVfU0VUU0lECi0JLyogdHJ5IHRvIHNpZ25h bCB3aG9sZSBwcm9jZXNzIGdyb3VwICovCi0Ja2lsbCgtTXlQcm9jUGlkLCBzaWcpOwotI2Vu ZGlmCi0Ja2lsbChNeVByb2NQaWQsIHNpZyk7CisJLyoKKwkgKiBGSVhNRTogd2UgdXNlZCB0 byBzaWduYWwgdGhlIHdob2xlIHByb2Nlc3MgZ3JvdXAuIElzIHRoYXQgaW1wb3J0YW50LCBp ZgorCSAqIHdlJ3JlIGUuZy4gZXhlY3V0aW5nIGFyY2hpdmVfY29tbWFuZCA/CisJICovCiB9 CiAKIC8qCkBAIC0xNDM1LDUxICsxNDM1LDM3IEBAIFN0YXRlbWVudFRpbWVvdXRIYW5kbGVy KHZvaWQpCiBzdGF0aWMgdm9pZAogTG9ja1RpbWVvdXRIYW5kbGVyKHZvaWQpCiB7Ci0jaWZk ZWYgSEFWRV9TRVRTSUQKLQkvKiB0cnkgdG8gc2lnbmFsIHdob2xlIHByb2Nlc3MgZ3JvdXAg Ki8KLQlraWxsKC1NeVByb2NQaWQsIFNJR0lOVCk7Ci0jZW5kaWYKLQlraWxsKE15UHJvY1Bp ZCwgU0lHSU5UKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMKTsK IH0KIAogc3RhdGljIHZvaWQKIFRyYW5zYWN0aW9uVGltZW91dEhhbmRsZXIodm9pZCkKIHsK LQlUcmFuc2FjdGlvblRpbWVvdXRQZW5kaW5nID0gdHJ1ZTsKLQlJbnRlcnJ1cHRQZW5kaW5n ID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJV UFRfVFJBTlNBQ1RJT05fVElNRU9VVCk7CiB9CiAKIHN0YXRpYyB2b2lkCiBJZGxlSW5UcmFu c2FjdGlvblNlc3Npb25UaW1lb3V0SGFuZGxlcih2b2lkKQogewotCUlkbGVJblRyYW5zYWN0 aW9uU2Vzc2lvblRpbWVvdXRQZW5kaW5nID0gdHJ1ZTsKLQlJbnRlcnJ1cHRQZW5kaW5nID0g dHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRf SURMRV9JTl9UUkFOU0FDVElPTl9TRVNTSU9OX1RJTUVPVVQpOwogfQogCiBzdGF0aWMgdm9p ZAogSWRsZVNlc3Npb25UaW1lb3V0SGFuZGxlcih2b2lkKQogewotCUlkbGVTZXNzaW9uVGlt ZW91dFBlbmRpbmcgPSB0cnVlOwotCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotCVNldExh dGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9JRExFX1NFU1NJT05f VElNRU9VVCk7CiB9CiAKIHN0YXRpYyB2b2lkCiBJZGxlU3RhdHNVcGRhdGVUaW1lb3V0SGFu ZGxlcih2b2lkKQogewotCUlkbGVTdGF0c1VwZGF0ZVRpbWVvdXRQZW5kaW5nID0gdHJ1ZTsK LQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlz ZUludGVycnVwdChJTlRFUlJVUFRfSURMRV9TVEFUU19USU1FT1VUKTsKIH0KIAogc3RhdGlj IHZvaWQKIENsaWVudENoZWNrVGltZW91dEhhbmRsZXIodm9pZCkKIHsKLQlDaGVja0NsaWVu dENvbm5lY3Rpb25QZW5kaW5nID0gdHJ1ZTsKLQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsK LQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfQ0xJRU5U X0NIRUNLX1RJTUVPVVQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy90aW1lb3V0LmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3RpbWVvdXQuYwpp bmRleCBlZDU0NDQ3ZDRhMC4uNjRkZjQxYjI2MWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvdGltZW91dC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvdGlt ZW91dC5jCkBAIC0xNCwxMSArMTQsMTEgQEAKICAqLwogI2luY2x1ZGUgInBvc3RncmVzLmgi CiAKKyNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNsdWRlIDxzeXMvdGltZS5oPgogCiAjaW5j bHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgotI2luY2x1 ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJ1dGlscy90aW1lb3V0LmgiCiAjaW5j bHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAKQEAgLTM3MSwxMiArMzcxLDYgQEAgaGFuZGxl X3NpZ19hbGFybShTSUdOQUxfQVJHUykKIAkgKi8KIAlIT0xEX0lOVEVSUlVQVFMoKTsKIAot CS8qCi0JICogU0lHQUxSTSBpcyBhbHdheXMgY2F1c2UgZm9yIHdha2luZyBhbnl0aGluZyB3 YWl0aW5nIG9uIHRoZSBwcm9jZXNzCi0JICogbGF0Y2guCi0JICovCi0JU2V0TGF0Y2goTXlM YXRjaCk7Ci0KIAkvKgogCSAqIEFsd2F5cyByZXNldCBzaWduYWxfcGVuZGluZywgZXZlbiBp ZiAhYWxhcm1fZW5hYmxlZCwgc2luY2UgaW5kZWVkIG5vCiAJICogc2lnbmFsIGlzIG5vdyBw ZW5kaW5nLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMgYi9z cmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYwppbmRleCAyN2IzMzlhNjQ5ZS4uN2E5ZWZi NzlkZDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jCkBAIC0xMzE1LDM2ICsxMzE1LDE2IEBA IE1lbW9yeUNvbnRleHRBbGxvY0V4dGVuZGVkKE1lbW9yeUNvbnRleHQgY29udGV4dCwgU2l6 ZSBzaXplLCBpbnQgZmxhZ3MpCiAJcmV0dXJuIHJldDsKIH0KIAotLyoKLSAqIEhhbmRsZUxv Z01lbW9yeUNvbnRleHRJbnRlcnJ1cHQKLSAqCQlIYW5kbGUgcmVjZWlwdCBvZiBhbiBpbnRl cnJ1cHQgaW5kaWNhdGluZyBsb2dnaW5nIG9mIG1lbW9yeQotICoJCWNvbnRleHRzLgotICoK LSAqIEFsbCB0aGUgYWN0dWFsIHdvcmsgaXMgZGVmZXJyZWQgdG8gUHJvY2Vzc0xvZ01lbW9y eUNvbnRleHRJbnRlcnJ1cHQoKSwKLSAqIGJlY2F1c2Ugd2UgY2Fubm90IHNhZmVseSBlbWl0 IGEgbG9nIG1lc3NhZ2UgaW5zaWRlIHRoZSBzaWduYWwgaGFuZGxlci4KLSAqLwotdm9pZAot SGFuZGxlTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCh2b2lkKQotewotCUludGVycnVwdFBl bmRpbmcgPSB0cnVlOwotCUxvZ01lbW9yeUNvbnRleHRQZW5kaW5nID0gdHJ1ZTsKLQkvKiBs YXRjaCB3aWxsIGJlIHNldCBieSBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAqLwotfQot CiAvKgogICogUHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQKICAqIAkJUGVyZm9y bSBsb2dnaW5nIG9mIG1lbW9yeSBjb250ZXh0cyBvZiB0aGlzIGJhY2tlbmQgcHJvY2Vzcy4K ICAqCi0gKiBBbnkgYmFja2VuZCB0aGF0IHBhcnRpY2lwYXRlcyBpbiBQcm9jU2lnbmFsIHNp Z25hbGluZyBtdXN0IGFycmFuZ2UKLSAqIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBpZiB3ZSBz ZWUgTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcgc2V0LgotICogSXQgaXMgY2FsbGVkIGZyb20g Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSwgd2hpY2ggaXMgZW5vdWdoIGJlY2F1c2UKLSAqIHRo ZSB0YXJnZXQgcHJvY2VzcyBmb3IgbG9nZ2luZyBvZiBtZW1vcnkgY29udGV4dHMgaXMgYSBi YWNrZW5kLgorICogVGhpcyBpcyB0aGUgaGFuZGxlciBmb3IgSU5URVJSVVBUX0xPR19NRU1P UllfQ09OVEVYVCwgbm9ybWFsbHkgY2FsbGVkIGZyb20KKyAqIENIRUNLX0ZPUl9JTlRFUlJV UFRTKCkuCiAgKi8KIHZvaWQKIFByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KHZv aWQpCiB7Ci0JTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcgPSBmYWxzZTsKLQogCS8qCiAJICog RXhpdCBpbW1lZGlhdGVseSBpZiBtZW1vcnkgY29udGV4dCBsb2dnaW5nIGlzIGFscmVhZHkg aW4gcHJvZ3Jlc3MuIFRoaXMKIAkgKiBwcmV2ZW50cyByZWN1cnNpdmUgY2FsbHMsIHdoaWNo IGNvdWxkIG9jY3VyIGlmIGxvZ2dpbmcgaXMgcmVxdWVzdGVkCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9NYWtlZmlsZSBiL3NyYy9pbmNsdWRlL01ha2VmaWxlCmluZGV4IGFjNjczZjRj ZjE3Li5jNDc0ZDZmYmUzYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvTWFrZWZpbGUKKysr IGIvc3JjL2luY2x1ZGUvTWFrZWZpbGUKQEAgLTI4LDYgKzI4LDcgQEAgU1VCRElSUyA9IFwK IAlleGVjdXRvciBcCiAJZmVfdXRpbHMgXAogCWZvcmVpZ24gXAorCWlwYyBcCiAJaml0IFwK IAlsaWIgXAogCWxpYnBxIFwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJh bGxlbC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmgKaW5kZXggMGVkMGE4OGQ4 MzEuLmZhNDJkMzQzNTQ5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxs ZWwuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaApAQCAtMTQsOCArMTQs NiBAQAogI2lmbmRlZiBQQVJBTExFTF9ICiAjZGVmaW5lIFBBUkFMTEVMX0gKIAotI2luY2x1 ZGUgPHNpZ25hbC5oPgotCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCiAjaW5jbHVk ZSAibGliL2lsaXN0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtlci5oIgpAQCAt NTUsNyArNTMsNiBAQCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFdvcmtlckNvbnRleHQKIAlz aG1fdG9jICAgICp0b2M7CiB9IFBhcmFsbGVsV29ya2VyQ29udGV4dDsKIAotZXh0ZXJuIFBH RExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQYXJhbGxlbE1lc3NhZ2VQZW5kaW5n OwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBQYXJhbGxlbFdvcmtlck51bWJlcjsKIGV4dGVy biBQR0RMTElNUE9SVCBib29sIEluaXRpYWxpemluZ1BhcmFsbGVsV29ya2VyOwogCkBAIC03 Miw3ICs2OSw2IEBAIGV4dGVybiB2b2lkIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0Zpbmlz aChQYXJhbGxlbENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIHZvaWQgRGVzdHJveVBhcmFsbGVs Q29udGV4dChQYXJhbGxlbENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIGJvb2wgUGFyYWxsZWxD b250ZXh0QWN0aXZlKHZvaWQpOwogCi1leHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxlbE1lc3Nh Z2VJbnRlcnJ1cHQodm9pZCk7CiBleHRlcm4gdm9pZCBQcm9jZXNzUGFyYWxsZWxNZXNzYWdl SW50ZXJydXB0KHZvaWQpOwogZXh0ZXJuIHZvaWQgQXRFT1hhY3RfUGFyYWxsZWwoYm9vbCBp c0NvbW1pdCk7CiBleHRlcm4gdm9pZCBBdEVPU3ViWGFjdF9QYXJhbGxlbChib29sIGlzQ29t bWl0LCBTdWJUcmFuc2FjdGlvbklkIG15U3ViSWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNv dmVyeS5oCmluZGV4IGJhNzc1MGRjYTBiLi5mMmNjYTkxMWFmYiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vz cy94bG9ncmVjb3ZlcnkuaApAQCAtMTUsNyArMTUsNiBAQAogI2luY2x1ZGUgImNhdGFsb2cv cGdfY29udHJvbC5oIgogI2luY2x1ZGUgImxpYi9zdHJpbmdpbmZvLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNo LmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAKIC8qCkBAIC03NywyMyArNzYs NiBAQCB0eXBlZGVmIHN0cnVjdCBYTG9nUmVjb3ZlcnlDdGxEYXRhCiAJICovCiAJYm9vbAkJ U2hhcmVkUHJvbW90ZUlzVHJpZ2dlcmVkOwogCi0JLyoKLQkgKiByZWNvdmVyeVdha2V1cExh dGNoIGlzIHVzZWQgdG8gd2FrZSB1cCB0aGUgc3RhcnR1cCBwcm9jZXNzIHRvIGNvbnRpbnVl Ci0JICogV0FMIHJlcGxheSwgaWYgaXQgaXMgd2FpdGluZyBmb3IgV0FMIHRvIGFycml2ZSBv ciBwcm9tb3Rpb24gdG8gYmUKLQkgKiByZXF1ZXN0ZWQuCi0JICoKLQkgKiBOb3RlIHRoYXQg dGhlIHN0YXJ0dXAgcHJvY2VzcyBhbHNvIHVzZXMgYW5vdGhlciBsYXRjaCwgaXRzIHByb2NM YXRjaCwKLQkgKiB0byB3YWl0IGZvciByZWNvdmVyeSBjb25mbGljdC4gSWYgd2UgZ2V0IHJp ZCBvZiByZWNvdmVyeVdha2V1cExhdGNoIGZvcgotCSAqIHNpZ25hbGluZyB0aGUgc3RhcnR1 cCBwcm9jZXNzIGluIGZhdm9yIG9mIHVzaW5nIGl0cyBwcm9jTGF0Y2gsIHdoaWNoCi0JICog Y29tcG9ydHMgYmV0dGVyIHdpdGggcG9zc2libGUgZ2VuZXJpYyBzaWduYWwgaGFuZGxlcnMg dXNpbmcgdGhhdCBsYXRjaC4KLQkgKiBCdXQgd2Ugc2hvdWxkIG5vdCBkbyB0aGF0IGJlY2F1 c2UgdGhlIHN0YXJ0dXAgcHJvY2VzcyBkb2Vzbid0IGFzc3VtZQotCSAqIHRoYXQgaXQncyB3 YWtlbiB1cCBieSB3YWxyZWNlaXZlciBwcm9jZXNzIG9yIFNJR0hVUCBzaWduYWwgaGFuZGxl cgotCSAqIHdoaWxlIGl0J3Mgd2FpdGluZyBmb3IgcmVjb3ZlcnkgY29uZmxpY3QuIFRoZSBz ZXBhcmF0ZSBsYXRjaGVzLAotCSAqIHJlY292ZXJ5V2FrZXVwTGF0Y2ggYW5kIHByb2NMYXRj aCwgc2hvdWxkIGJlIHVzZWQgZm9yIGludGVyLXByb2Nlc3MKLQkgKiBjb21tdW5pY2F0aW9u IGZvciBXQUwgcmVwbGF5IGFuZCByZWNvdmVyeSBjb25mbGljdCwgcmVzcGVjdGl2ZWx5Lgot CSAqLwotCUxhdGNoCQlyZWNvdmVyeVdha2V1cExhdGNoOwotCiAJLyoKIAkgKiBMYXN0IHJl Y29yZCBzdWNjZXNzZnVsbHkgcmVwbGF5ZWQuCiAJICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jb21tYW5kcy9hc3luYy5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvYXN5bmMuaApp bmRleCAyMDJlNGFhNWU3NC4uOGU0ODk0ZTU5YWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2FzeW5jLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvYXN5bmMuaApA QCAtMTMsMTEgKzEzLDggQEAKICNpZm5kZWYgQVNZTkNfSAogI2RlZmluZSBBU1lOQ19ICiAK LSNpbmNsdWRlIDxzaWduYWwuaD4KLQogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgVHJhY2Vf bm90aWZ5OwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfbm90aWZ5X3F1ZXVlX3BhZ2Vz OwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBub3RpZnlJbnRl cnJ1cHRQZW5kaW5nOwogCiBleHRlcm4gdm9pZCBOb3RpZnlNeUZyb250RW5kKGNvbnN0IGNo YXIgKmNoYW5uZWwsCiAJCQkJCQkJIGNvbnN0IGNoYXIgKnBheWxvYWQsCkBAIC0zNyw5ICsz NCw2IEBAIGV4dGVybiB2b2lkIEF0U3ViQ29tbWl0X05vdGlmeSh2b2lkKTsKIGV4dGVybiB2 b2lkIEF0U3ViQWJvcnRfTm90aWZ5KHZvaWQpOwogZXh0ZXJuIHZvaWQgQXRQcmVwYXJlX05v dGlmeSh2b2lkKTsKIAotLyogc2lnbmFsIGhhbmRsZXIgZm9yIGluYm91bmQgbm90aWZpZXMg KFBST0NTSUdfTk9USUZZX0lOVEVSUlVQVCkgKi8KLWV4dGVybiB2b2lkIEhhbmRsZU5vdGlm eUludGVycnVwdCh2b2lkKTsKLQogLyogcHJvY2VzcyBpbnRlcnJ1cHRzICovCiBleHRlcm4g dm9pZCBQcm9jZXNzTm90aWZ5SW50ZXJydXB0KGJvb2wgZmx1c2gpOwogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jb21tYW5kcy9yZXBhY2suaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3JlcGFjay5oCmluZGV4IDQ1ZTU0NDBhMzExLi5hODQzN2U2NGJlZSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY29tbWFuZHMvcmVwYWNrLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvcmVwYWNrLmgKQEAgLTEzLDggKzEzLDYgQEAKICNpZm5kZWYgUkVQQUNLX0gKICNkZWZp bmUgUkVQQUNLX0gKIAotI2luY2x1ZGUgPHNpZ25hbC5oPgotCiAjaW5jbHVkZSAibm9kZXMv cGFyc2Vub2Rlcy5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9ub2RlLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9sb2NrZGVmcy5oIgpAQCAtMzUsOSArMzMsNiBAQCB0eXBlZGVmIHN0cnVj dCBDbHVzdGVyUGFyYW1zCiAJdWludDMyCQlvcHRpb25zOwkJLyogYml0bWFzayBvZiBDTFVP UFRfKiAqLwogfSBDbHVzdGVyUGFyYW1zOwogCi1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRp bGUgc2lnX2F0b21pY190IFJlcGFja01lc3NhZ2VQZW5kaW5nOwotCi0KIGV4dGVybiB2b2lk IEV4ZWNSZXBhY2soUGFyc2VTdGF0ZSAqcHN0YXRlLCBSZXBhY2tTdG10ICpzdG10LCBib29s IGlzVG9wTGV2ZWwpOwogCiBleHRlcm4gdm9pZCBjbHVzdGVyX3JlbChSZXBhY2tDb21tYW5k IGNtZCwgUmVsYXRpb24gT2xkSGVhcCwgT2lkIGluZGV4T2lkLApAQCAtNTgsNyArNTMsNiBA QCBleHRlcm4gdm9pZCBmaW5pc2hfaGVhcF9zd2FwKE9pZCBPSURPbGRIZWFwLCBPaWQgT0lE TmV3SGVhcCwKIAkJCQkJCQkgTXVsdGlYYWN0SWQgY3V0b2ZmTXVsdGksCiAJCQkJCQkJIGNo YXIgbmV3cmVscGVyc2lzdGVuY2UpOwogCi1leHRlcm4gdm9pZCBIYW5kbGVSZXBhY2tNZXNz YWdlSW50ZXJydXB0KHZvaWQpOwogZXh0ZXJuIHZvaWQgUHJvY2Vzc1JlcGFja01lc3NhZ2Vz KHZvaWQpOwogCiAvKiBpbiByZXBhY2tfd29ya2VyLmMgKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2lwYy9pbnRlcnJ1cHQuaCBiL3NyYy9pbmNsdWRlL2lwYy9pbnRlcnJ1cHQuaApp bmRleCBiNDA5ZWUxOGRkYi4uMzg3NmYxMWMzYmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2lwYy9pbnRlcnJ1cHQuaAorKysgYi9zcmMvaW5jbHVkZS9pcGMvaW50ZXJydXB0LmgKQEAg LTE1LDggKzE1LDcgQEAKICNpZm5kZWYgSVBDX0lOVEVSUlVQVF9ICiAjZGVmaW5lIElQQ19J TlRFUlJVUFRfSAogCi0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0KKyNpbmNsdWRlICJpcGMvc3Rh bmRhcmRfaW50ZXJydXB0cy5oIgogI2luY2x1ZGUgInBvcnQvYXRvbWljcy5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvY251bWJlci5oIgogCkBAIC0yOSw4MCArMjgsMTY5IEBACiAgKi8K ICNpbmNsdWRlICJzdG9yYWdlL3dhaXRldmVudHNldC5oIgogCi0vKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKLSAqCSAgU3lzdGVtIGludGVycnVwdCBhbmQgY3JpdGljYWwgc2VjdGlvbiBo YW5kbGluZwotICoKLSAqIFRoZXJlIGFyZSB0d28gdHlwZXMgb2YgaW50ZXJydXB0cyB0aGF0 IGEgcnVubmluZyBiYWNrZW5kIG5lZWRzIHRvIGFjY2VwdAotICogd2l0aG91dCBtZXNzaW5n IHVwIGl0cyBzdGF0ZTogUXVlcnlDYW5jZWwgKFNJR0lOVCkgYW5kIFByb2NEaWUgKFNJR1RF Uk0pLgotICogSW4gYm90aCBjYXNlcywgd2UgbmVlZCB0byBiZSBhYmxlIHRvIGNsZWFuIHVw IHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uCi0gKiBncmFjZWZ1bGx5LCBzbyB3ZSBjYW4ndCBy ZXNwb25kIHRvIHRoZSBpbnRlcnJ1cHQgaW5zdGFudGFuZW91c2x5IC0tLQotICogdGhlcmUn cyBubyBndWFyYW50ZWUgdGhhdCBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgd291bGQgYmUg c2VsZi1jb25zaXN0ZW50Ci0gKiBpZiB0aGUgY29kZSBpcyBpbnRlcnJ1cHRlZCBhdCBhbiBh cmJpdHJhcnkgaW5zdGFudC4gIEluc3RlYWQsIHRoZSBzaWduYWwKLSAqIGhhbmRsZXJzIHNl dCBmbGFncyB0aGF0IGFyZSBjaGVja2VkIHBlcmlvZGljYWxseSBkdXJpbmcgZXhlY3V0aW9u LgorLyoKKyAqIFBlbmRpbmdJbnRlcnJ1cHRzIGlzIHVzZWQgdG8gcmVjZWl2ZSBhbmQgd2Fp dCBmb3IgaW50ZXJydXB0cy4gIEl0IGNvbnRhaW5zCisgKiBhIGJpdG1hc2sgb2YgaW50ZXJy dXB0cyBwZW5kaW5nIGZvciB0aGUgcHJvY2VzcywgYW5kIGFub3RoZXIgYml0bWFzayBvZgor ICogaW50ZXJydXB0cyB3ZSdyZSBjdXJyZW50bHkgaW50ZXJlc3RlZCBpbi4KICAqCi0gKiBU aGUgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBtYWNybyBpcyBjYWxsZWQgYXQgc3RyYXRlZ2lj YWxseSBsb2NhdGVkIHNwb3RzCi0gKiB3aGVyZSBpdCBpcyBub3JtYWxseSBzYWZlIHRvIGFj Y2VwdCBhIGNhbmNlbCBvciBkaWUgaW50ZXJydXB0LiAgSW4gc29tZQotICogY2FzZXMsIHdl IGludm9rZSBDSEVDS19GT1JfSU5URVJSVVBUUygpIGluc2lkZSBsb3ctbGV2ZWwgc3Vicm91 dGluZXMgdGhhdAotICogbWlnaHQgc29tZXRpbWVzIGJlIGNhbGxlZCBpbiBjb250ZXh0cyB0 aGF0IGRvICpub3QqIHdhbnQgdG8gYWxsb3cgYSBjYW5jZWwKLSAqIG9yIGRpZSBpbnRlcnJ1 cHQuICBUaGUgSE9MRF9JTlRFUlJVUFRTKCkgYW5kIFJFU1VNRV9JTlRFUlJVUFRTKCkgbWFj cm9zCi0gKiBhbGxvdyBjb2RlIHRvIGVuc3VyZSB0aGF0IG5vIGNhbmNlbCBvciBkaWUgaW50 ZXJydXB0IHdpbGwgYmUgYWNjZXB0ZWQsCi0gKiBldmVuIGlmIENIRUNLX0ZPUl9JTlRFUlJV UFRTKCkgZ2V0cyBjYWxsZWQgaW4gYSBzdWJyb3V0aW5lLiAgVGhlIGludGVycnVwdAotICog d2lsbCBiZSBoZWxkIG9mZiB1bnRpbCBDSEVDS19GT1JfSU5URVJSVVBUUygpIGlzIGRvbmUg b3V0c2lkZSBhbnkKLSAqIEhPTERfSU5URVJSVVBUUygpIC4uLiBSRVNVTUVfSU5URVJSVVBU UygpIHNlY3Rpb24uCisgKiBXZSBzdXBwb3J0IHVwIHRvIDY0IGRpZmZlcmVudCBpbnRlcnJ1 cHRzLiAgVGhhdCB3YXksIGFuIGludGVycnVwdCBtYXNrIGNhbgorICogYmUgY29udmVuaWVu dGx5IHN0b3JlZCBhcyBvbmUgNjQtYml0IGF0b21pYyBpbnRlZ2VyLCBvbiBzeXN0ZW1zIHdp dGggNjQtYml0CisgKiBhdG9taWNzLiAgT24gb3RoZXIgc3lzdGVtcywgaXQncyBzcGxpdCBp bnRvIHR3byAzMi1iaXQgYXRvbWljIGZpZWxkcywgd2hpY2gKKyAqIGlzIGdvb2QgZW5vdWdo IGJlY2F1c2Ugd2UgZG9uJ3QgcmVseSBvbiBhdG9taWNpdHkgYmV0d2VlbiBkaWZmZXJlbnQK KyAqIGludGVycnVwdCBiaXRzLiAgKE5vdGUgdGhhdCB0aGUgNjQtYml0IGF0b21pY3Mgc2lt dWxhdGlvbiByZWxpZXMgb24KKyAqIHNwaW5sb2Nrcywgd2hpY2ggY3JlYXRlcyBhIGRlYWRs b2NrIHJpc2sgd2hlbiB1c2VkIGZyb20gc2lnbmFsIGhhbmRsZXJzLCBzbworICogd2UgY2Fu bm90IHJlbHkgb24gdGhlIHNpbXVsYXRlZCA2NC1iaXQgYXRvbWljcy4pCiAgKgotICogVGhl cmUgaXMgYWxzbyBhIG1lY2hhbmlzbSB0byBwcmV2ZW50IHF1ZXJ5IGNhbmNlbCBpbnRlcnJ1 cHRzLCB3aGlsZSBzdGlsbAotICogYWxsb3dpbmcgZGllIGludGVycnVwdHM6IEhPTERfQ0FO Q0VMX0lOVEVSUlVQVFMoKSBhbmQKLSAqIFJFU1VNRV9DQU5DRUxfSU5URVJSVVBUUygpLgor ICogQXR0ZW50aW9uIG1lY2hhbmlzbQorICogLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKLSAq IE5vdGUgdGhhdCBQcm9jZXNzSW50ZXJydXB0cygpIGhhcyBhbHNvIGFjcXVpcmVkIGEgbnVt YmVyIG9mIHRhc2tzIHRoYXQKLSAqIGRvIG5vdCBuZWNlc3NhcmlseSBjYXVzZSBhIHF1ZXJ5 LWNhbmNlbC1vci1kaWUgcmVzcG9uc2UuICBIZW5jZSwgaXQncwotICogcG9zc2libGUgdGhh dCBpdCB3aWxsIGp1c3QgY2xlYXIgSW50ZXJydXB0UGVuZGluZyBhbmQgcmV0dXJuLgorICog VGhlICdhdHRlbnRpb25fbWFzaycgZmllbGQgbGV0cyBhIGJhY2tlbmQgYWR2ZXJ0aXNlIHdo aWNoIGludGVycnVwdHMgaXQgaXMKKyAqIGN1cnJlbnRseSBpbnRlcmVzdGVkIGluLiAgV2hl biBhIGJhY2tlbmQgaXMgc2xlZXBpbmcsIHdhaXRpbmcgZm9yIGFuCisgKiBpbnRlcnJ1cHQg dG8gYXJyaXZlLCBpdCBzZXRzIHRoZSBiaXRzIGZvciB0aGUgd2FpdGVkLWZvciBpbnRlcnJ1 cHRzIGluCisgKiAnYXR0ZW50aW9uX21hc2snLiAgQXQgb3RoZXIgdGltZXMsIHRoZSAnYXR0 ZW50aW9uX21hc2snIGVxdWFscworICogRW5hYmxlZEludGVycnVwdHNNYXNrLCBpLmUuIHRo ZSBpbnRlcnJ1cHRzIHRoYXQgY2FuIGJlIHByb2Nlc3NlZCBieSBhCisgKiBDSEVDS19GT1Jf SU5URVJSVVBUUygpLgogICoKLSAqIElOVEVSUlVQVFNfUEVORElOR19DT05ESVRJT04oKSBj YW4gYmUgY2hlY2tlZCB0byBzZWUgd2hldGhlciBhbgotICogaW50ZXJydXB0IG5lZWRzIHRv IGJlIHNlcnZpY2VkLCB3aXRob3V0IHRyeWluZyB0byBkbyBzbyBpbW1lZGlhdGVseS4KLSAq IFNvbWUgY2FsbGVycyBhcmUgYWxzbyBpbnRlcmVzdGVkIGluIElOVEVSUlVQVFNfQ0FOX0JF X1BST0NFU1NFRCgpLAotICogd2hpY2ggdGVsbHMgd2hldGhlciBQcm9jZXNzSW50ZXJydXB0 cyBpcyBzdXJlIHRvIGNsZWFyIHRoZSBpbnRlcnJ1cHQuCisgKiBXaGVuIGEgYmFja2VuZCBz ZXRzIHRoZSBpbnRlcnJ1cHQgYml0IG9mIGFub3RoZXIgYmFja2VuZCAob3IgdGhlIHNhbWUK KyAqIGJhY2tlbmQpLCBpdCBhbHNvIGNoZWNrcyBpZiB0aGF0IGludGVycnVwdCBpcyBpbiB0 aGUgdGFyZ2V0J3MKKyAqICdhdHRlbnRpb25fbWFzaycuICBJZiBzbywgaXQgc2V0cyB0aGUg QVRURU5USU9OIGZsYWcuICBGdXJ0aGVybW9yZSwgaWYgdGhlCisgKiB0YXJnZXQgYmFja2Vu ZCBpcyBjdXJyZW50bHkgc2xlZXBpbmcsIGkuZS4gaWYgdGhlIFNMRUVQSU5HIGZsYWcgaXMg c2V0LCBpdAorICogYWxzbyB3YWtlcyBpdCB1cC4KICAqCi0gKiBTcGVjaWFsIG1lY2hhbmlz bXMgYXJlIHVzZWQgdG8gbGV0IGFuIGludGVycnVwdCBiZSBhY2NlcHRlZCB3aGVuIHdlIGFy ZQotICogd2FpdGluZyBmb3IgYSBsb2NrIG9yIHdoZW4gd2UgYXJlIHdhaXRpbmcgZm9yIGNv bW1hbmQgaW5wdXQgKGJ1dCwgb2YKLSAqIGNvdXJzZSwgb25seSBpZiB0aGUgaW50ZXJydXB0 IGhvbGRvZmYgY291bnRlciBpcyB6ZXJvKS4gIFNlZSB0aGUKLSAqIHJlbGF0ZWQgY29kZSBm b3IgZGV0YWlscy4KKyAqIFdoZW4gbm90IHNsZWVwaW5nLCB0aGUgQVRURU5USU9OIGZsYWcg aXMgdXNlZCBhcyBhIHF1aWNrIGNoZWNrIGluCisgKiBDSEVDS19GT1JfSU5URVJSVVBUUygp IGZvciB3aGV0aGVyIGFueSBpbnRlcnJ1cHRzIG5lZWQgdG8gYmUgcHJvY2Vzc2VkLgorICog Q2hlY2tpbmcgYSBzaW5nbGUgZmxhZyByZXF1aXJlcyBmZXdlciBpbnN0cnVjdGlvbnMgdGhh biBjaGVja2luZyB0aGUKKyAqIGludGVycnVwdCBiaXRzIGFnYWluc3QgRW5hYmxlZEludGVy cnVwdHNNYXNrOyB0aGUgYXR0ZW50aW9uIG1lY2hhbmlzbQorICogc2hpZnRzIHRoYXQgd29y ayB0byB0aGUgc2VuZGluZyBiYWNrZW5kLgogICoKLSAqIEEgbG9zdCBjb25uZWN0aW9uIGlz IGhhbmRsZWQgc2ltaWxhcmx5LCBhbHRob3VnaCB0aGUgbG9zcyBvZiBjb25uZWN0aW9uCi0g KiBkb2VzIG5vdCByYWlzZSBhIHNpZ25hbCwgYnV0IGlzIGRldGVjdGVkIHdoZW4gd2UgZmFp bCB0byB3cml0ZSB0byB0aGUKLSAqIHNvY2tldC4gSWYgdGhlcmUgd2FzIGEgc2lnbmFsIGZv ciBhIGJyb2tlbiBjb25uZWN0aW9uLCB3ZSBjb3VsZCBtYWtlIHVzZSBvZgotICogaXQgYnkg c2V0dGluZyBDbGllbnRDb25uZWN0aW9uTG9zdCBpbiB0aGUgc2lnbmFsIGhhbmRsZXIuCisg KiBUaGVyZSBhcmUgcmFjZSBjb25kaXRpb25zIGluIGhvdyB0aGUgQVRURU5USU9OIGZsYWcg aXMgc2V0LiAgSWYgYSBiYWNrZW5kCisgKiBjbGVhcnMgYSBiaXQgZnJvbSBpdHMgJ2F0dGVu dGlvbl9tYXNrJywgYW5kIGFub3RoZXIgYmFja2VuZCBpcyBjb25jdXJyZW50bHkKKyAqIHNl bmRpbmcgdGhhdCBpbnRlcnJ1cHQsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgQVRURU5USU9O IGZsYWcgZ2V0cyBzZXQgb3IKKyAqIHRoZSBwcm9jZXNzIGlzIHdva2VuIHVwIGFmdGVyIHRo ZSAnYXR0ZW50aW9uX21hc2snIGhhcyBhbHJlYWR5IGJlZW4KKyAqIGNsZWFyZWQuICBCZWNh dXNlIG9mIHRoYXQsIHRoZSBzeXN0ZW0gbmVlZHMgdG8gdG9sZXJhdGUgc3B1cmlvdXNseSBz ZXQKKyAqIEFUVEVOVElPTiBmbGFnIGFuZCB3YWtldXBzLiAgVGhlIG9wZXJhdGlvbnMgYXJl IG9yZGVyZWQgc28gdGhhdCB0aGUKKyAqIG9wcG9zaXRlIGlzIG5vdCBwb3NzaWJsZTogaWYg eW91IHNldCBhIGJpdCBpbiB0aGUgJ2F0dGVudGlvbl9tYXNrJyBhbmQgdGhlbgorICogY2hl Y2sgdGhhdCB0aGUgYml0IGlzIG5vdCBzZXQgaW4gdGhlICdpbnRlcnJ1cHRzJyBtYXNrLCB5 b3UgYXJlIGd1YXJhbnRlZWQKKyAqIHRvIHJlY2VpdmUgdGhlIGF0dGVudGlvbiBmbGFnIG9y IGEgd2FrZXVwIGlmIHRoZSBpbnRlcnJ1cHQgaXMgc2V0IGxhdGVyLgorICovCit0eXBlZGVm IHN0cnVjdCBQZW5kaW5nSW50ZXJydXB0cworeworCXBnX2F0b21pY191aW50MzIgZmxhZ3M7 CQkvKiBQSV9GTEFHXyogKi8KKworI2lmbmRlZiBQR19IQVZFX0FUT01JQ19VNjRfU0lNVUxB VElPTgorCXBnX2F0b21pY191aW50NjQgcGVuZGluZ19tYXNrOwkvKiBwZW5kaW5nIGludGVy cnVwdHMgKi8KKwlwZ19hdG9taWNfdWludDY0IGF0dGVudGlvbl9tYXNrOwkvKiBpbnRlcnJ1 cHRzIHRoYXQgc2V0IHRoZSBBVFRFTlRJT04KKwkJCQkJCQkJCQkgKiBmbGFnICovCisjZWxz ZQorCXBnX2F0b21pY191aW50MzIgcGVuZGluZ19tYXNrX2xvOworCXBnX2F0b21pY191aW50 MzIgcGVuZGluZ19tYXNrX2hpOworCXBnX2F0b21pY191aW50MzIgYXR0ZW50aW9uX21hc2tf bG87CisJcGdfYXRvbWljX3VpbnQzMiBhdHRlbnRpb25fbWFza19oaTsKKyNlbmRpZgorfSBQ ZW5kaW5nSW50ZXJydXB0czsKKworI2RlZmluZSBQSV9GTEFHX0FUVEVOVElPTgkJMHgwMQor I2RlZmluZSBQSV9GTEFHX1NMRUVQSU5HCQkweDAyCisKKy8qCisgKiBJbnRlcnJ1cHQgdmVj dG9yIGN1cnJlbnRseSBpbiB1c2UgZm9yIHRoaXMgcHJvY2Vzcy4gIE1vc3Qgb2YgdGhlIHRp bWUgdGhpcworICogcG9pbnRzIHRvIE15UHJvYy0+cGVuZGluZ0ludGVycnVwdHMsIGJ1dCBp biBwcm9jZXNzZXMgdGhhdCBoYXZlIG5vIFBHUFJPQworICogZW50cnkgKHlldCksIGl0IHBv aW50cyB0byBhIHByb2Nlc3MtcHJpdmF0ZSB2YXJpYWJsZSwgc28gdGhhdCBpbnRlcnJ1cHRz CisgKiBjYW4gbmV2ZXJ0aGVsZXNzIGJlIHVzZWQgZnJvbSBzaWduYWwgaGFuZGxlcnMgaW4g dGhlIHNhbWUgcHJvY2Vzcy4KKyAqLworZXh0ZXJuIFBHRExMSU1QT1JUIFBlbmRpbmdJbnRl cnJ1cHRzICpNeVBlbmRpbmdJbnRlcnJ1cHRzOworCisvKgorICogVGVzdCBpZiBhbiBpbnRl cnJ1cHQgaXMgcGVuZGluZwogICoKLSAqIEEgcmVsYXRlZCwgYnV0IGNvbmNlcHR1YWxseSBk aXN0aW5jdCwgbWVjaGFuaXNtIGlzIHRoZSAiY3JpdGljYWwgc2VjdGlvbiIKLSAqIG1lY2hh bmlzbS4gIEEgY3JpdGljYWwgc2VjdGlvbiBub3Qgb25seSBob2xkcyBvZmYgY2FuY2VsL2Rp ZSBpbnRlcnJ1cHRzLAotICogYnV0IGNhdXNlcyBhbnkgZXJlcG9ydChFUlJPUikgb3IgZXJl cG9ydChGQVRBTCkgdG8gYmVjb21lIGVyZXBvcnQoUEFOSUMpCi0gKiAtLS0gdGhhdCBpcywg YSBzeXN0ZW0td2lkZSByZXNldCBpcyBmb3JjZWQuICBOZWVkbGVzcyB0byBzYXksIG9ubHkg cmVhbGx5Ci0gKiAqY3JpdGljYWwqIGNvZGUgc2hvdWxkIGJlIG1hcmtlZCBhcyBhIGNyaXRp Y2FsIHNlY3Rpb24hCUN1cnJlbnRseSwgdGhpcwotICogbWVjaGFuaXNtIGlzIG9ubHkgdXNl ZCBmb3IgWExPRy1yZWxhdGVkIGNvZGUuCisgKiBJZiAnaW50ZXJydXB0TWFzaycgaGFzIG11 bHRpcGxlIGJpdHMgc2V0LCByZXR1cm5zIHRydWUgaWYgYW55IG9mIHRoZW0gYXJlCisgKiBw ZW5kaW5nLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0ludGVycnVwdFBlbmRpbmcoSW50 ZXJydXB0TWFzayBpbnRlcnJ1cHRNYXNrKQoreworCS8qCisJICogTm90ZSB0aGF0IHRoZXJl IGlzIG5vIG1lbW9yeSBiYXJyaWVyIGhlcmUsIGJlY2F1c2Ugd2Ugd2FudCB0aGlzIHRvIGJl CisJICogYXMgY2hlYXAgYXMgcG9zc2libGUuICBUaGF0IG1lYW5zIHRoYXQgaWYgdGhlIGlu dGVycnVwdCBpcyBjb25jdXJyZW50bHkKKwkgKiBzZXQgYnkgYW5vdGhlciBwcm9jZXNzLCB3 ZSBtaWdodCBtaXNzIGl0LiAgVGhhdCBzaG91bGQgYmUgT0ssIGJlY2F1c2UKKwkgKiB0aGUg bmV4dCBXYWl0SW50ZXJydXB0KCkgb3IgZXF1aXZhbGVudCBjYWxsIGFjdHMgYXMgYSBzeW5j aHJvbml6YXRpb24KKwkgKiBiYXJyaWVyOyB3ZSB3aWxsIHNlZSB0aGUgdXBkYXRlZCB2YWx1 ZSBiZWZvcmUgc2xlZXBpbmcuCisJICovCisJdWludDY0CQlwZW5kaW5nOworCisjaWZuZGVm IFBHX0hBVkVfQVRPTUlDX1U2NF9TSU1VTEFUSU9OCisJcGVuZGluZyA9IHBnX2F0b21pY19y ZWFkX3U2NCgmTXlQZW5kaW5nSW50ZXJydXB0cy0+cGVuZGluZ19tYXNrKTsKKyNlbHNlCisJ cGVuZGluZyA9ICh1aW50NjQpIHBnX2F0b21pY19yZWFkX3UzMigmTXlQZW5kaW5nSW50ZXJy dXB0cy0+cGVuZGluZ19tYXNrX2xvKTsKKwlwZW5kaW5nIHw9ICh1aW50NjQpIHBnX2F0b21p Y19yZWFkX3UzMigmTXlQZW5kaW5nSW50ZXJydXB0cy0+cGVuZGluZ19tYXNrX2hpKSA8PCAz MjsKKyNlbmRpZgorCisJcmV0dXJuIChwZW5kaW5nICYgaW50ZXJydXB0TWFzaykgIT0gMDsK K30KKworLyoKKyAqIENsZWFyIGFuIGludGVycnVwdCBmbGFnIChvciBmbGFncykuCiAgKgot ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworICogTm90ZSB0aGF0IHRoaXMgZG9lcyBub3Qg Y2xlYXIgdGhlIEFUVEVOVElPTiBmbGFnLCBzbyBpZiBpdCB3YXMgYWxyZWFkeSBzZXQsCisg KiB0aGUgbmV4dCBDSEVDS19GT1JfSU5URVJSVVBUUygpIHdpbGwgbWFrZSBhbiB1bm5lY2Vz c2FyeSBidXQgaGFybWxlc3MKKyAqIFByb2Nlc3NJbnRlcnJ1cHRzKCkgY2FsbC4KKyAqLwor c3RhdGljIGlubGluZSB2b2lkCitDbGVhckludGVycnVwdChJbnRlcnJ1cHRNYXNrIGludGVy cnVwdE1hc2spCit7CisJdWludDY0CQltYXNrID0gfmludGVycnVwdE1hc2s7CisKKyNpZm5k ZWYgUEdfSEFWRV9BVE9NSUNfVTY0X1NJTVVMQVRJT04KKwkodm9pZCkgcGdfYXRvbWljX2Zl dGNoX2FuZF91NjQoJk15UGVuZGluZ0ludGVycnVwdHMtPnBlbmRpbmdfbWFzaywgbWFzayk7 CisjZWxzZQorCSh2b2lkKSBwZ19hdG9taWNfZmV0Y2hfYW5kX3UzMigmTXlQZW5kaW5nSW50 ZXJydXB0cy0+cGVuZGluZ19tYXNrX2xvLCAodWludDMyKSBtYXNrKTsKKwkodm9pZCkgcGdf YXRvbWljX2ZldGNoX2FuZF91MzIoJk15UGVuZGluZ0ludGVycnVwdHMtPnBlbmRpbmdfbWFz a19oaSwgKHVpbnQzMikgKG1hc2sgPj4gMzIpKTsKKyNlbmRpZgorfQorCisvKgorICogVGVz dCBhbmQgY2xlYXIgYW4gaW50ZXJydXB0IGZsYWcgKG9yIGZsYWdzKS4KKyAqLworc3RhdGlj IGlubGluZSBib29sCitDb25zdW1lSW50ZXJydXB0KEludGVycnVwdE1hc2sgaW50ZXJydXB0 TWFzaykKK3sKKwlpZiAodW5saWtlbHkoSW50ZXJydXB0UGVuZGluZyhpbnRlcnJ1cHRNYXNr KSkpCisJeworCQlDbGVhckludGVycnVwdChpbnRlcnJ1cHRNYXNrKTsKKwkJcmV0dXJuIHRy dWU7CisJfQorCWVsc2UKKwkJcmV0dXJuIGZhbHNlOworfQorCitleHRlcm4gdm9pZCBSYWlz ZUludGVycnVwdChJbnRlcnJ1cHRNYXNrIGludGVycnVwdE1hc2spOworZXh0ZXJuIHZvaWQg U2VuZEludGVycnVwdChJbnRlcnJ1cHRNYXNrIGludGVycnVwdE1hc2ssIFByb2NOdW1iZXIg cGdwcm9jbm8pOworZXh0ZXJuIHZvaWQgU2VuZEludGVycnVwdFdpdGhQaWQoSW50ZXJydXB0 TWFzayBpbnRlcnJ1cHRNYXNrLCBQcm9jTnVtYmVyIHBncHJvY25vLCBwaWRfdCBwaWQpOwor ZXh0ZXJuIGludAlXYWl0SW50ZXJydXB0KEludGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaywg aW50IHdha2VFdmVudHMsIGxvbmcgdGltZW91dCwKKwkJCQkJCSAgdWludDMyIHdhaXRfZXZl bnRfaW5mbyk7CitleHRlcm4gaW50CVdhaXRJbnRlcnJ1cHRPclNvY2tldChJbnRlcnJ1cHRN YXNrIGludGVycnVwdE1hc2ssIGludCB3YWtlRXZlbnRzLCBwZ3NvY2tldCBzb2NrLAorCQkJ CQkJCQkgIGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnRfaW5mbyk7CitleHRlcm4g dm9pZCBTd2l0Y2hUb0xvY2FsSW50ZXJydXB0cyh2b2lkKTsKK2V4dGVybiB2b2lkIFN3aXRj aFRvU2hhcmVkSW50ZXJydXB0cyh2b2lkKTsKK2V4dGVybiB2b2lkIEluaXRpYWxpemVJbnRl cnJ1cHRXYWl0U2V0KHZvaWQpOwogCi0vKiBpbiBnbG9iYWxzLmMgKi8KLS8qIHRoZXNlIGFy ZSBtYXJrZWQgdm9sYXRpbGUgYmVjYXVzZSB0aGV5IGFyZSBzZXQgYnkgc2lnbmFsIGhhbmRs ZXJzOiAqLwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBJbnRl cnJ1cHRQZW5kaW5nOwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNf dCBRdWVyeUNhbmNlbFBlbmRpbmc7Ci1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2ln X2F0b21pY190IFByb2NEaWVQZW5kaW5nOwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxl IGludCBQcm9jRGllU2VuZGVyUGlkOwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIGlu dCBQcm9jRGllU2VuZGVyVWlkOwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19h dG9taWNfdCBJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0UGVuZGluZzsKLWV4dGVy biBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgVHJhbnNhY3Rpb25UaW1lb3V0 UGVuZGluZzsKLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRs ZVNlc3Npb25UaW1lb3V0UGVuZGluZzsKLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBz aWdfYXRvbWljX3QgUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nOwotZXh0ZXJuIFBHRExMSU1Q T1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBMb2dNZW1vcnlDb250ZXh0UGVuZGluZzsKLWV4 dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVN0YXRzVXBkYXRl VGltZW91dFBlbmRpbmc7Ci0KLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRv bWljX3QgQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGluZzsKLWV4dGVybiBQR0RMTElNUE9S VCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2xpZW50Q29ubmVjdGlvbkxvc3Q7CiAKIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgogICoJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgYW5kIGZy aWVuZHMKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAorLyogSW50ZXJydXB0cyBjdXJy ZW50bHkgZW5hYmxlZCBmb3IgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBwcm9jZXNzaW5nICov CitleHRlcm4gUEdETExJTVBPUlQgSW50ZXJydXB0TWFzayBFbmFibGVkSW50ZXJydXB0c01h c2s7CisKKy8qCisgKiBQb2ludGVyIHRvIE15UGVuZGluZ0ludGVycnVwdHMtPmZsYWdzLCBl eGNlcHQgd2hlbiBpbnRlcnJ1cHQgaG9sZG9mZiBvciBhCisgKiBjcml0aWNhbCBzZWN0aW9u IHByZXZlbnRzIGludGVycnVwdHMgcHJvY2Vzc2luZywgaW4gd2hpY2ggY2FzZSB0aGlzIHBv aW50cworICogdG8gYSBkdW1teSBhbGwtemVyb3MgdmFyaWFibGUgKFplcm9QZW5kaW5nSW50 ZXJydXB0c0ZsYWdzKSBpbnN0ZWFkLiAgVGhpcworICogYWxsb3dzIENIRUNLX0ZPUl9JTlRF UlJVUFRTKCkgdG8gZm9sbG93IGp1c3QgdGhpcyBvbmUgcG9pbnRlciwgYW5kIG5vdCBoYXZl CisgKiB0byBjaGVjayB0aGUgaG9sZG9mZiBjb3VudHMgc2VwYXJhdGVseS4KKyAqLworZXh0 ZXJuIFBHRExMSU1QT1JUIHBnX2F0b21pY191aW50MzIgKk15UGVuZGluZ0ludGVycnVwdHNG bGFnczsKKwogLyoKICAqIENoZWNrIHdoZXRoZXIgYW55IGVuYWJsZWQgaW50ZXJydXB0IGlz IHBlbmRpbmcsIHdpdGhvdXQgdHJ5aW5nIHRvIHNlcnZpY2UKICAqIGl0IGltbWVkaWF0ZWx5 LiAgVGhpcyBpcyBjYW4gYmUgdXNlZCBpbiBhIEhPTERfSU5URVJSVVBUUygpIGJsb2NrIHRv IGNoZWNrCkBAIC0xMTAsMjEgKzE5OCwyOSBAQCBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRp bGUgc2lnX2F0b21pY190IENsaWVudENvbm5lY3Rpb25Mb3N0OwogICovCiAjaWZuZGVmIFdJ TjMyCiAjZGVmaW5lIElOVEVSUlVQVFNfUEVORElOR19DT05ESVRJT04oKSBcCi0JKHVubGlr ZWx5KEludGVycnVwdFBlbmRpbmcpKQorCSh1bmxpa2VseShJbnRlcnJ1cHRQZW5kaW5nKEVu YWJsZWRJbnRlcnJ1cHRzTWFzaykpKQogI2Vsc2UKICNkZWZpbmUgSU5URVJSVVBUU19QRU5E SU5HX0NPTkRJVElPTigpIFwKIAkodW5saWtlbHkoVU5CTE9DS0VEX1NJR05BTF9RVUVVRSgp KSA/IFwKLQkgcGd3aW4zMl9kaXNwYXRjaF9xdWV1ZWRfc2lnbmFscygpIDogKHZvaWQpIDAs IFwKLQkgdW5saWtlbHkoSW50ZXJydXB0UGVuZGluZykpCisJIHBnd2luMzJfZGlzcGF0Y2hf cXVldWVkX3NpZ25hbHMoKSA6ICh2b2lkKSAwLAlcCisJIHVubGlrZWx5KEludGVycnVwdFBl bmRpbmcoRW5hYmxlZEludGVycnVwdHNNYXNrKSkpCiAjZW5kaWYKIAogLyoKICAqIENhbiBp bnRlcnJ1cHRzIGJlIHByb2Nlc3NlZCBpbiB0aGUgY3VycmVudCBzdGF0ZSwgaS5lLiBhcmUg dGhlIGludGVycnVwdHMKLSAqIG5vdCBwcmV2ZW50ZWQgYnkgdGhlIEhPTERfSU5URVJSVVBU UygpIG9yIGEgY3JpdGljYWwgc2VjdGlvbj8KKyAqIG5vdCBwcmV2ZW50ZWQgYnkgdGhlIEhP TERfSU5URVJSVVBUUygpIG9yIGEgY3JpdGljYWwgc2VjdGlvbiBjcml0aWNhbAorICogc2Vj dGlvbj8KICAqLwogI2RlZmluZSBJTlRFUlJVUFRTX0NBTl9CRV9QUk9DRVNTRUQoKSBcCi0J KEludGVycnVwdEhvbGRvZmZDb3VudCA9PSAwICYmIENyaXRTZWN0aW9uQ291bnQgPT0gMCAm JiBcCi0JIFF1ZXJ5Q2FuY2VsSG9sZG9mZkNvdW50ID09IDApCisJKEludGVycnVwdEhvbGRv ZmZDb3VudCA9PSAwICYmIENyaXRTZWN0aW9uQ291bnQgPT0gMCkKKworLyoKKyAqIEludGVy cnVwdHMgdGhhdCB3b3VsZCBiZSBwcm9jZXNzZWQgYnkgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KS4gIFRoaXMgaXMKKyAqIGVxdWFsIHRvIEVuYWJsZWRJbnRlcnJ1cHRzTWFzaywgZXhjZXB0 IHdoZW4gaW50ZXJydXB0cyBhcmUgaGVsZCBvZmYgYnkKKyAqIEhPTEQvUkVTVU1FX0lOVEVS UlVQVFMoKSBvciBhIGNyaXRpY2FsIHNlY3Rpb24uCisgKi8KKyNkZWZpbmUgQ2hlY2tGb3JJ bnRlcnJ1cHRzTWFzayBcCisJKElOVEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NFRCgpID8gRW5h YmxlZEludGVycnVwdHNNYXNrIDogMCkKIAogLyoKICAqIFNlcnZpY2UgYW4gaW50ZXJydXB0 LCBpZiBvbmUgaXMgcGVuZGluZyBhbmQgaXQncyBzYWZlIHRvIHNlcnZpY2UgaXQgbm93LgpA QCAtMTMyLDI4ICsyMjgsNDAgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19h dG9taWNfdCBDbGllbnRDb25uZWN0aW9uTG9zdDsKICAqIE5COiBUaGlzIGlzIGNhbGxlZCBm cm9tIGFsbCBvdmVyIHRoZSBjb2RlYmFzZSwgYW5kIGluIGZhaXJseSB0aWdodCBsb29wcywK ICAqIHNvIHRoaXMgbmVlZHMgdG8gYmUgdmVyeSBzaG9ydCBhbmQgZmFzdCB3aGVuIHRoZXJl IGlzIG5vIHdvcmsgdG8gZG8hCiAgKi8KLSNkZWZpbmUgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KSBcCisjZGVmaW5lIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkJCQkJCVwKIGRvIHsgXAotCWlm IChJTlRFUlJVUFRTX1BFTkRJTkdfQ09ORElUSU9OKCkpIFwKLQkJUHJvY2Vzc0ludGVycnVw dHMoKTsgXAorCWlmICh1bmxpa2VseShwZ19hdG9taWNfcmVhZF91MzIoTXlQZW5kaW5nSW50 ZXJydXB0c0ZsYWdzKSAhPSAwKSkgXAorCQlQcm9jZXNzSW50ZXJydXB0cygpOwkJCQkJCQkJ CQkJXAogfSB3aGlsZSgwKQogCi0vKiBpbiB0Y29wL3Bvc3RncmVzLmMgKi8KK3R5cGVkZWYg dm9pZCAoKnBnX2ludGVycnVwdF9oYW5kbGVyX3QpICh2b2lkKTsKK2V4dGVybiB2b2lkIFNl dEludGVycnVwdEhhbmRsZXIoSW50ZXJydXB0TWFzayBpbnRlcnJ1cHRNYXNrLCBwZ19pbnRl cnJ1cHRfaGFuZGxlcl90IGhhbmRsZXIpOworCitleHRlcm4gdm9pZCBFbmFibGVJbnRlcnJ1 cHQoSW50ZXJydXB0TWFzayBpbnRlcnJ1cHRNYXNrKTsKK2V4dGVybiB2b2lkIERpc2FibGVJ bnRlcnJ1cHQoSW50ZXJydXB0TWFzayBpbnRlcnJ1cHRNYXNrKTsKKwogZXh0ZXJuIHZvaWQg UHJvY2Vzc0ludGVycnVwdHModm9pZCk7CitleHRlcm4gdm9pZCBTZXRJbnRlcnJ1cHRBdHRl bnRpb25NYXNrKEludGVycnVwdE1hc2sgbWFzayk7CiAKIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgogICoJCUNyaXRpY2FsIHNlY3Rpb24gYW5kIGludGVycnVwdCBob2xkb2ZmIG1lY2hh bmlzbQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0vKiB0aGVzZSBhcmUgbWFya2Vk IHZvbGF0aWxlIGJlY2F1c2UgdGhleSBhcmUgZXhhbWluZWQgYnkgc2lnbmFsIGhhbmRsZXJz OiAqLwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHVpbnQzMiBJbnRlcnJ1cHRIb2xk b2ZmQ291bnQ7Ci1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgdWludDMyIFF1ZXJ5Q2Fu Y2VsSG9sZG9mZkNvdW50OwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHVpbnQzMiBD cml0U2VjdGlvbkNvdW50OworZXh0ZXJuIFBHRExMSU1QT1JUIHVpbnQzMiBJbnRlcnJ1cHRI b2xkb2ZmQ291bnQ7CitleHRlcm4gUEdETExJTVBPUlQgdWludDMyIENyaXRTZWN0aW9uQ291 bnQ7CisKK2V4dGVybiBQR0RMTElNUE9SVCBjb25zdCBwZ19hdG9taWNfdWludDMyIFplcm9Q ZW5kaW5nSW50ZXJydXB0c0ZsYWdzOwogCiBzdGF0aWMgaW5saW5lIHZvaWQKIEhPTERfSU5U RVJSVVBUUyh2b2lkKQogewogCUludGVycnVwdEhvbGRvZmZDb3VudCsrOworCisJLyoKKwkg KiBEaXNhYmxlIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgYnkgcG9pbnRpbmcgTXlQZW5kaW5n SW50ZXJydXB0c0ZsYWdzIHRvCisJICogYW4gYWxsLXplcm9zIGNvbnN0YW50LgorCSAqLwor CU15UGVuZGluZ0ludGVycnVwdHNGbGFncyA9IHVuY29uc3RpZnkocGdfYXRvbWljX3VpbnQz MiAqLCAmWmVyb1BlbmRpbmdJbnRlcnJ1cHRzRmxhZ3MpOwogfQogCiBzdGF0aWMgaW5saW5l IHZvaWQKQEAgLTE2MSwyNSArMjY5LDE1IEBAIFJFU1VNRV9JTlRFUlJVUFRTKHZvaWQpCiB7 CiAJQXNzZXJ0KEludGVycnVwdEhvbGRvZmZDb3VudCA+IDApOwogCUludGVycnVwdEhvbGRv ZmZDb3VudC0tOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQKLUhPTERfQ0FOQ0VMX0lOVEVS UlVQVFModm9pZCkKLXsKLQlRdWVyeUNhbmNlbEhvbGRvZmZDb3VudCsrOwotfQotCi1zdGF0 aWMgaW5saW5lIHZvaWQKLVJFU1VNRV9DQU5DRUxfSU5URVJSVVBUUyh2b2lkKQotewotCUFz c2VydChRdWVyeUNhbmNlbEhvbGRvZmZDb3VudCA+IDApOwotCVF1ZXJ5Q2FuY2VsSG9sZG9m ZkNvdW50LS07CisJaWYgKEludGVycnVwdEhvbGRvZmZDb3VudCA9PSAwICYmIENyaXRTZWN0 aW9uQ291bnQgPT0gMCkKKwkJTXlQZW5kaW5nSW50ZXJydXB0c0ZsYWdzID0gJk15UGVuZGlu Z0ludGVycnVwdHMtPmZsYWdzOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQKIFNUQVJUX0NS SVRfU0VDVElPTih2b2lkKQogewogCUNyaXRTZWN0aW9uQ291bnQrKzsKKwlNeVBlbmRpbmdJ bnRlcnJ1cHRzRmxhZ3MgPSB1bmNvbnN0aWZ5KHBnX2F0b21pY191aW50MzIgKiwgJlplcm9Q ZW5kaW5nSW50ZXJydXB0c0ZsYWdzKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkCkBAIC0x ODcsNiArMjg1LDEwIEBAIEVORF9DUklUX1NFQ1RJT04odm9pZCkKIHsKIAlBc3NlcnQoQ3Jp dFNlY3Rpb25Db3VudCA+IDApOwogCUNyaXRTZWN0aW9uQ291bnQtLTsKKwlpZiAoSW50ZXJy dXB0SG9sZG9mZkNvdW50ID09IDAgJiYgQ3JpdFNlY3Rpb25Db3VudCA9PSAwKQorCQlNeVBl bmRpbmdJbnRlcnJ1cHRzRmxhZ3MgPSAmTXlQZW5kaW5nSW50ZXJydXB0cy0+ZmxhZ3M7CiB9 CiAKK2V4dGVybiB2b2lkIFJlc2V0SW50ZXJydXB0SG9sZG9mZkNvdW50cyh1aW50MzIgbmV3 X2hvbGRvZmZfY291bnQsIHVpbnQzMiBuZXdfY3JpdF9zZWN0aW9uX2NvdW50KTsKKwogI2Vu ZGlmCQkJCQkJCS8qIElQQ19JTlRFUlJVUFRfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvaXBjL3NpZ25hbF9oYW5kbGVycy5oIGIvc3JjL2luY2x1ZGUvaXBjL3NpZ25hbF9oYW5k bGVycy5oCmluZGV4IGE0OTlhMjcxNTM4Li5kNGYwZTU4NDE0ZiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvaXBjL3NpZ25hbF9oYW5kbGVycy5oCisrKyBiL3NyYy9pbmNsdWRlL2lwYy9z aWduYWxfaGFuZGxlcnMuaApAQCAtMjEsMTIgKzIxLDEwIEBACiAKICNpbmNsdWRlIDxzaWdu YWwuaD4KIAotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBDb25m aWdSZWxvYWRQZW5kaW5nOwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9t aWNfdCBTaHV0ZG93blJlcXVlc3RQZW5kaW5nOwotCi1leHRlcm4gdm9pZCBQcm9jZXNzTWFp bkxvb3BJbnRlcnJ1cHRzKHZvaWQpOworZXh0ZXJuIHZvaWQgU2V0UG9zdG1hc3RlckNoaWxk U2lnbmFsSGFuZGxlcnModm9pZCk7CiBleHRlcm4gdm9pZCBTaWduYWxIYW5kbGVyRm9yQ29u ZmlnUmVsb2FkKFNJR05BTF9BUkdTKTsKIGV4dGVybiB2b2lkIFNpZ25hbEhhbmRsZXJGb3JD cmFzaEV4aXQoU0lHTkFMX0FSR1MpOwogZXh0ZXJuIHZvaWQgU2lnbmFsSGFuZGxlckZvclNo dXRkb3duUmVxdWVzdChTSUdOQUxfQVJHUyk7CitleHRlcm4gdm9pZCBTaWduYWxIYW5kbGVy Rm9yUXVlcnlDYW5jZWwoU0lHTkFMX0FSR1MpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2lwYy9zdGFuZGFyZF9pbnRlcnJ1cHRzLmggYi9zcmMvaW5jbHVkZS9pcGMv c3RhbmRhcmRfaW50ZXJydXB0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi40MDQ1Y2YxNjc4ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2lw Yy9zdGFuZGFyZF9pbnRlcnJ1cHRzLmgKQEAgLTAsMCArMSwyMTIgQEAKKy8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICoKKyAqIHN0YW5kYXJkX2ludGVycnVwdHMuaAorICoJICBMaXN0IG9m IGJ1aWx0LWluIGludGVycnVwdCBiaXRzCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAxOTk2LTIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQ b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkg b2YgQ2FsaWZvcm5pYQorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9pbmNsdWRl L2lwYy9zdGFuZGFyZF9pbnRlcnJ1cHRzLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqLworCisjaWZuZGVmIElQQ19TVEFOREFSRF9JTlRFUlJVUFRTX0gKKyNkZWZpbmUgSVBD X1NUQU5EQVJEX0lOVEVSUlVQVFNfSAorCisvKiBkZWZpbmVkIGhlcmUgdG8gYXZvaWQgY2ly Y3VsYXIgZGVwZW5kZW5jeSB0byBpbnRlcnJ1cHQuaCAqLwordHlwZWRlZiB1aW50NjQgSW50 ZXJydXB0TWFzazsKKworLyoKKyAqIEludGVycnVwdCBiaXRzIHRoYXQgdXNlZCBpbiBQZW5k aW5nSW50cnJ1cHRzLT5wZW5kaW5nX21hc2sgYml0bWFzay4gIEVhY2gKKyAqIHZhbHVlIGlz IGEgZGlmZmVyZW50IGJpdCwgc28gdGhhdCB0aGVzZSBjYW4gYmUgY29udmVuaWVudGx5IE9S J2QgdG9nZXRoZXIuCisgKi8KKyNkZWZpbmUgVUlOVDY0X0JJVChzaGlmdCkgKFVJTlQ2NF9D KDEpIDw8IChzaGlmdCkpCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQmVnaW4gZGVmaW5p dGlvbnMgb2YgYnVpbHQtaW4gaW50ZXJydXB0IGJpdHMKKyAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K KworLyoKKyAqIElOVEVSUlVQVF9XQUlUX1dBS0VVUCBpcyBzaGFyZWQgYnkgbWFueSB1c2Ug Y2FzZXMgdGhhdCBuZWVkIHRvIHdha2UgdXAKKyAqIGEgcHJvY2Vzcywgd2hpY2ggZG9uJ3Qg bmVlZCBhIGRlZGljYXRlZCBpbnRlcnJ1cHQgYml0LgorICovCisjZGVmaW5lIElOVEVSUlVQ VF9XQUlUX1dBS0VVUAkJCQkJVUlOVDY0X0JJVCgwKQorCisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICogU3RhbmRhcmQgaW50ZXJydXB0cyBoYW5kbGVkIHRoZSBzYW1lIGJ5IG1vc3QgcHJv Y2Vzc2VzCisgKgorICogTW9zdCBvZiB0aGVzZSBhcmUgbm9ybWFsbHkgcHJvY2Vzc2VkIGJ5 IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgb25jZQorICogcHJvY2VzcyBzdGFydHVwIGhhcyBy ZWFjaGVkIFNldFN0YW5kYXJkSW50ZXJydXB0cygpLgorICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor CisvKgorICogQmFja2VuZCBoYXMgYmVlbiByZXF1ZXN0ZWQgdG8gdGVybWluYXRlIGdyYWNl ZnVsbHkuCisgKgorICogVGhpcyBpcyByYWlzZWQgYnkgdGhlIFNJR1RFUk0gc2lnbmFsIGhh bmRsZXIsIG9yIGNhbiBiZSBzZW50IGRpcmVjdGx5IGJ5CisgKiBhbm90aGVyIGJhY2tlbmQg ZS5nLiB3aXRoIHBnX3Rlcm1pbmF0ZV9iYWNrZW5kKCkuCisgKi8KKyNkZWZpbmUgSU5URVJS VVBUX1RFUk1JTkFURQkJCQkJCVVJTlQ2NF9CSVQoMSkKKworLyoKKyAqIENhbmNlbCBjdXJy ZW50IHF1ZXJ5LCBpZiBhbnkuCisgKgorICogU2VudCB0byByZWd1bGFyIGJhY2tlbmRzIGJ5 IHBnX2NhbmNlbF9iYWNrZW5kKCksIFNJR0lOVCwgb3IgaW4gcmVzcG9uc2UgdG8KKyAqIGEg cXVlcnkgY2FuY2VsbGF0aW9uIHBhY2tldC4gIFNvbWUgb3RoZXIgcHJvY2Vzc2VzIGxpa2Ug YXV0b3ZhY3V1bSB3b3JrZXJzCisgKiBhbmQgbG9naWNhbCBkZWNvZGluZyBwcm9jZXNzZXMg YWxzbyByZWFjdCB0byB0aGlzLgorICovCisjZGVmaW5lIElOVEVSUlVQVF9RVUVSWV9DQU5D RUwJCQkJCVVJTlQ2NF9CSVQoMikKKworLyoKKyAqIFJlY292ZXJ5IGNvbmZsaWN0LiAgVGhp cyBpcyBzZW50IGJ5IHRoZSBzdGFydHVwIHByb2Nlc3MgaW4gaG90IHN0YW5kYnkgbW9kZQor ICogd2hlbiBhIGJhY2tlbmQgaG9sZHMgYmFjayB0aGUgV0FMIHJlcGxheSBmb3IgdG9vIGxv bmcuICBUaGUgcmVhc29uIGZvciB0aGUKKyAqIGNvbmZsaWN0IGluZGljYXRlZCBieSB0aGUg UEdQUk9DLT5wZW5kaW5nUmVjb3ZlcnlDb25mbGljdHMgYml0bWFzay4KKyAqIENvbmZsaWN0 cyBhcmUgZ2VuZXJhbGx5IHJlc29sdmVkIGJ5IHRlcm1pbmF0aW5nIHRoZSBjdXJyZW50IHF1 ZXJ5IG9yCisgKiBzZXNzaW9uLiAgVGhlIGV4YWN0IHJlYWN0aW9uIGRlcGVuZHMgb24gdGhl IHJlYXNvbiBhbmQgd2hhdCBzdGF0ZSB0aGUKKyAqIGJhY2tlbmQgaXMgaW4uCisgKi8KKyNk ZWZpbmUgSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUIAkJCVVJTlQ2NF9CSVQoMykKKwor LyoKKyAqIENvbmZpZyBmaWxlIHJlbG9hZCBpcyByZXF1ZXN0ZWQuCisgKgorICogVGhpcyBp cyBub3JtYWxseSBkaXNhYmxlZCBhbmQgdGhlcmVmb3JlIG5vdCBoYW5kbGVkIGF0CisgKiBD SEVDS19GT1JfSU5URVJSVVBUUygpLiAgVGhlICJtYWluIGxvb3AiIGluIGVhY2ggcHJvY2Vz cyBpcyBleHBlY3RlZCB0bworICogY2hlY2sgZm9yIGl0IGV4cGxpY2l0bHkuCisgKi8KKyNk ZWZpbmUgSU5URVJSVVBUX0NPTkZJR19SRUxPQUQJCQkJCVVJTlQ2NF9CSVQoNCkKKworLyoK KyAqIExvZyBjdXJyZW50IG1lbW9yeSBjb250ZXh0cywgc2VudCBieSBwZ19sb2dfYmFja2Vu ZF9tZW1vcnlfY29udGV4dHMoKQorICovCisjZGVmaW5lIElOVEVSUlVQVF9MT0dfTUVNT1JZ X0NPTlRFWFQgCQkJVUlOVDY0X0JJVCg1KQorCisvKgorICogcHJvY3NpZ25hbCBnbG9iYWwg YmFycmllciBpbnRlcnJ1cHQKKyAqLworI2RlZmluZSBJTlRFUlJVUFRfQkFSUklFUgkJCQkJ CVVJTlQ2NF9CSVQoNikKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEludGVycnVwdHMg dXNlZCBieSBjbGllbnQgYmFja2VuZHMgYW5kIG1vc3Qgb3RoZXIgcHJvY2Vzc2VzIHRoYXQK KyAqIGNvbm5lY3QgdG8gYSBwYXJ0aWN1bGFyIGRhdGFiYXNlLgorICoKKyAqIE1vc3Qgb2Yg dGhlc2UgYXJlIGFsc28gcHJvY2Vzc2VkIGJ5IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgb25j ZSBwcm9jZXNzCisgKiBzdGFydHVwIGhhcyByZWFjaGVkIFNldFN0YW5kYXJkSW50ZXJydXB0 cygpLgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBSYWlzZWQgYnkgdGltZXJzICovCisj ZGVmaW5lIElOVEVSUlVQVF9UUkFOU0FDVElPTl9USU1FT1VUCQkJVUlOVDY0X0JJVCg3KQor I2RlZmluZSBJTlRFUlJVUFRfSURMRV9TRVNTSU9OX1RJTUVPVVQJCQlVSU5UNjRfQklUKDgp CisjZGVmaW5lIElOVEVSUlVQVF9JRExFX0lOX1RSQU5TQUNUSU9OX1NFU1NJT05fVElNRU9V VCBVSU5UNjRfQklUKDkpCisjZGVmaW5lIElOVEVSUlVQVF9DTElFTlRfQ0hFQ0tfVElNRU9V VAkJCVVJTlQ2NF9CSVQoMTApCisKKy8qIFJhaXNlZCBieSB0aW1lciB3aGlsZSBpZGxlLCB0 byBzZW5kIGEgc3RhdHMgdXBkYXRlICovCisjZGVmaW5lIElOVEVSUlVQVF9JRExFX1NUQVRT X1RJTUVPVVQJCQlVSU5UNjRfQklUKDExKQorCisvKiBSYWlzZWQgc3luY2hyb25vdXNseSB3 aGVuIHRoZSBjbGllbnQgY29ubmVjdGlvbiBpcyBsb3N0ICovCisjZGVmaW5lIElOVEVSUlVQ VF9DTElFTlRfQ09OTkVDVElPTl9MT1NUCQkgVUlOVDY0X0JJVCgxMikKKworLyoKKyAqIElO VEVSUlVQVF9BU1lOQ19OT1RJRlkgaXMgc2VudCB0byBub3RpZnkgYmFja2VuZHMgdGhhdCBo YXZlIHJlZ2lzdGVyZWQgdG8KKyAqIExJU1RFTiBvbiBhbnkgY2hhbm5lbHMgdGhhdCB0aGV5 IG1pZ2h0IGhhdmUgbWVzc2FnZXMgdGhleSBuZWVkIHRvIGRlbGl2ZXIKKyAqIHRvIHRoZSBm cm9udGVuZC4gIEl0IGlzIGFsc28gcHJvY2Vzc2VkIHdoZW5ldmVyIHN0YXJ0aW5nIHRvIHJl YWQgZnJvbSB0aGUKKyAqIGNsaWVudCBvciB3aGlsZSBkb2luZyBzbywgYnV0IG9ubHkgd2hl biB0aGVyZSBpcyBubyB0cmFuc2FjdGlvbiBpbgorICogcHJvZ3Jlc3MuCisgKi8KKyNkZWZp bmUgSU5URVJSVVBUX0FTWU5DX05PVElGWQkJCQkJVUlOVDY0X0JJVCgxMykKKworLyoKKyAq IEJlY2F1c2UgYmFja2VuZHMgc2l0dGluZyBpZGxlIHdpbGwgbm90IGJlIHJlYWRpbmcgc2lu dmFsIGV2ZW50cywgd2UgbmVlZCBhCisgKiB3YXkgdG8gZ2l2ZSBhbiBpZGxlIGJhY2tlbmQg YSBzd2lmdCBraWNrIGluIHRoZSByZWFyIGFuZCBtYWtlIGl0IGNhdGNoIHVwCisgKiBiZWZv cmUgdGhlIHNpbnZhbCBxdWV1ZSBvdmVyZmxvd3MgYW5kIGZvcmNlcyBpdCB0byBnbyB0aHJv dWdoIGEgY2FjaGUgcmVzZXQKKyAqIGV4ZXJjaXNlLiAgVGhpcyBpcyBkb25lIGJ5IHNlbmRp bmcgSU5URVJSVVBUX1NJTlZBTF9DQVRDSFVQIHRvIGFueSBiYWNrZW5kCisgKiB0aGF0IGdl dHMgdG9vIGZhciBiZWhpbmQuCisgKgorICogVGhlIGludGVycnVwdCBpcyBwcm9jZXNzZWQg d2hlbmV2ZXIgc3RhcnRpbmcgdG8gcmVhZCBmcm9tIHRoZSBjbGllbnQsIG9yCisgKiB3aGVu IGludGVycnVwdGVkIHdoaWxlIGRvaW5nIHNvLgorICovCisjZGVmaW5lIElOVEVSUlVQVF9T SU5WQUxfQ0FUQ0hVUAkJCQlVSU5UNjRfQklUKDE0KQorCisvKiBNZXNzYWdlIGZyb20gYSBj b29wZXJhdGluZyBwYXJhbGxlbCBiYWNrZW5kIG9yIGFwcGx5IHdvcmtlciAqLworI2RlZmlu ZSBJTlRFUlJVUFRfUEFSQUxMRUxfTUVTU0FHRQkJCQlVSU5UNjRfQklUKDE1KQorCisKKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgorICogUHJvY2Vzcy1zcGVjaWZpYyBpbnRlcnJ1cHRzCisgKgor ICogU29tZSBwcm9jZXNzZXMgbmVlZCBkZWRpY2F0ZWQgaW50ZXJydXB0cyBmb3IgdmFyaW91 cyBwdXJwb3Nlcy4gIElnbm9yZWQKKyAqIGJ5IG90aGVyIHByb2Nlc3Nlcy4KKyAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKworLyogYXNrIHdhbHNlbmRlcnMgdG8gcHJlcGFyZSBmb3Igc2h1dGRv d24gICovCisjZGVmaW5lIElOVEVSUlVQVF9XQUxTTkRfSU5JVF9TVE9QUElORwkJCVVJTlQ2 NF9CSVQoMTYpCisKKy8qIFRPRE86IGRvY3VtZW50IHRoZSBkaWZmZXJlbmNlIHdpdGggSU5U RVJSVVBUX1dBTFNORF9JTklUX1NUT1BQSU5HICovCisjZGVmaW5lIElOVEVSUlVQVF9XQUxT TkRfU1RPUAkJCQkJVUlOVDY0X0JJVCgxNykKKworLyoKKyAqIElOVEVSUlVQVF9XQUxfQVJS SVZFRCBpcyB1c2VkIHRvIHdha2UgdXAgdGhlIHN0YXJ0dXAgcHJvY2VzcywgdG8gdGVsbCBp dAorICogdGhhdCBpdCBzaG91bGQgY29udGludWUgV0FMIHJlcGxheS4gIEl0J3Mgc2VudCBi eSBXQUwgcmVjZWl2ZXIgd2hlbiBtb3JlCisgKiBXQUwgYXJyaXZlcywgb3Igd2hlbiBwcm9t b3Rpb24gaXMgcmVxdWVzdGVkLgorICovCisjZGVmaW5lIElOVEVSUlVQVF9XQUxfQVJSSVZF RAkJCQkJVUlOVDY0X0JJVCgxOCkKKworLyoKKyAqIFdha2UgdXAgc3RhcnR1cCBwcm9jZXNz IHRvIGNoZWNrIGZvciB0aGUgcHJvbW90aW9uIHNpZ25hbCBmaWxlCisgKgorICogQWxzbyB1 c2VkIHRvIHJlcXVlc3QgYSBzbG90c3luYyB3b3JrZXIgb3Igc29tZSBvdGhlciBiYWNrZW5k IHN5bmNpbmcKKyAqIHJlcGxpY2F0aW9uIHNsb3RzIHRvIHN0b3Agc3luY2luZy4KKyAqLwor I2RlZmluZSBJTlRFUlJVUFRfQ0hFQ0tfUFJPTU9URQkJCQkJVUlOVDY0X0JJVCgxOSkKKwor Lyogc2VudCB0byBsb2dpY2FsIHJlcGxpY2F0aW9uIGxhdW5jaGVyLCB3aGVuIGEgc3Vic2Ny aXB0aW9uIGNoYW5nZXMgKi8KKyNkZWZpbmUgSU5URVJSVVBUX1NVQlNDUklQVElPTl9DSEFO R0UJCQlVSU5UNjRfQklUKDIwKQorCisvKiBHcmFjZWZ1bCBzaHV0ZG93biByZXF1ZXN0IGZv ciBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciAqLworI2RlZmluZSBJTlRFUlJVUFRfU0hVVERP V05fUEFSQUxMRUxfQVBQTFlfV09SS0VSIFVJTlQ2NF9CSVQoMjEpCisKKy8qIFJlcXVlc3Qg Y2hlY2twb2ludGVyIHRvIHBlcmZvcm0gb25lIGxhc3QgY2hlY2twb2ludCwgdGhlbiBzaHV0 IGRvd24gKi8KKyNkZWZpbmUgSU5URVJSVVBUX1NIVVRET1dOX1hMT0cJCQkJCVVJTlQ2NF9C SVQoMjIpCisKKyNkZWZpbmUgSU5URVJSVVBUX1NIVVRET1dOX1BHQVJDSAkJCQlVSU5UNjRf QklUKDIzKQorCisvKgorICogVGhpcyBpcyBzZW50IHRvIHRoZSBhdXRvdmFjdXVtIGxhdW5j aGVyIHdoZW4gYW4gYXV0b3ZhY3V1bSB3b3JrZXIgZXhpdHMKKyAqLworI2RlZmluZSBJTlRF UlJVUFRfQVVUT1ZBQ1VVTV9XT1JLRVJfRklOSVNIRUQgCVVJTlQ2NF9CSVQoMjQpCisKKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKiBFbmQgb2YgYnVpbHQtaW4gaW50ZXJydXB0IGJpdHMK KyAqCisgKiBUaGUgcmVtYWluaW5nIGJpdHMgYXJlIGhhbmRlZCBvdXQgYnkgUmVxdWVzdEFk ZGluSW50ZXJydXB0LCBmb3IKKyAqIGV4dGVuc2lvbnMKKyAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K KyNkZWZpbmUgQkVHSU5fQURESU5fSU5URVJSVVBUUyAyNQorI2RlZmluZSBFTkRfQURESU5f SU5URVJSVVBUUyA2NAorCisKKy8qIGZvciBleHRlbnNpb25zICovCitleHRlcm4gSW50ZXJy dXB0TWFzayBSZXF1ZXN0QWRkaW5JbnRlcnJ1cHQodm9pZCk7CisKKy8qIFN0YW5kYXJkIGlu dGVycnVwdCBoYW5kbGluZyBmdW5jdGlvbnMuICBEZWZpbmVkIGluIHRjb3AvcG9zdGdyZXMu YyAqLworZXh0ZXJuIHZvaWQgU2V0U3RhbmRhcmRJbnRlcnJ1cHRIYW5kbGVycyh2b2lkKTsK KworZXh0ZXJuIHZvaWQgUHJvY2Vzc1F1ZXJ5Q2FuY2VsSW50ZXJydXB0KHZvaWQpOworZXh0 ZXJuIHZvaWQgUHJvY2Vzc1Rlcm1pbmF0ZUludGVycnVwdCh2b2lkKTsKK2V4dGVybiB2b2lk IFByb2Nlc3NDb25maWdSZWxvYWRJbnRlcnJ1cHQodm9pZCk7CitleHRlcm4gdm9pZCBQcm9j ZXNzQXN5bmNOb3RpZnlJbnRlcnJ1cHQodm9pZCk7CitleHRlcm4gdm9pZCBQcm9jZXNzSWRs ZVN0YXRzVGltZW91dEludGVycnVwdCh2b2lkKTsKK2V4dGVybiB2b2lkIFByb2Nlc3NSZWNv dmVyeUNvbmZsaWN0SW50ZXJydXB0cyh2b2lkKTsKK2V4dGVybiB2b2lkIFByb2Nlc3NUcmFu c2FjdGlvblRpbWVvdXRJbnRlcnJ1cHQodm9pZCk7CitleHRlcm4gdm9pZCBQcm9jZXNzSWRs ZVNlc3Npb25UaW1lb3V0SW50ZXJydXB0KHZvaWQpOworZXh0ZXJuIHZvaWQgUHJvY2Vzc0lk bGVJblRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRJbnRlcnJ1cHQodm9pZCk7CitleHRlcm4g dm9pZCBQcm9jZXNzQ2xpZW50Q2hlY2tUaW1lb3V0SW50ZXJydXB0KHZvaWQpOworZXh0ZXJu IHZvaWQgUHJvY2Vzc0NsaWVudENvbm5lY3Rpb25Mb3N0KHZvaWQpOworCitleHRlcm4gdm9p ZCBQcm9jZXNzQXV4UHJvY2Vzc1NodXRkb3duSW50ZXJydXB0KHZvaWQpOworCisjZW5kaWYJ CQkJCQkJLyogSVBDX1NUQU5EQVJEX0lOVEVSUlVQVFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbGlicHEvbGlicHEtYmUtZmUtaGVscGVycy5oIGIvc3JjL2luY2x1ZGUvbGli cHEvbGlicHEtYmUtZmUtaGVscGVycy5oCmluZGV4IDAxOWU2YzcxMGU0Li4yNzgxNDllM2Ew MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEtYmUtZmUtaGVscGVycy5o CisrKyBiL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLWZlLWhlbHBlcnMuaApAQCAtMzIs OSArMzIsNyBAQAogCiAjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgImxp YnBxL2xpYnBxLWJlLWZlLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9mZC5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJ1 dGlscy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0X2NsYXNzZXMuaCIKIApA QCAtMTk5LDggKzE5Nyw4IEBAIGxpYnBxc3J2X2Nvbm5lY3RfY29tcGxldGUoUEdjb25uICpj b25uLCB1aW50MzIgd2FpdF9ldmVudF9pbmZvKQogCQlyZXR1cm47CiAKIAkvKgotCSAqIFdh aXRMYXRjaE9yU29ja2V0KCkgY2FuIGNvbmNlaXZhYmx5IGZhaWwsIGhhbmRsZSB0aGF0IGNh c2UgaGVyZSBpbnN0ZWFkCi0JICogb2YgcmVxdWlyaW5nIGFsbCBjYWxsZXJzIHRvIGRvIHNv LgorCSAqIFdhaXRJbnRlcnJ1cHRPclNvY2tldCgpIGNhbiBjb25jZWl2YWJseSBmYWlsLCBo YW5kbGUgdGhhdCBjYXNlIGhlcmUKKwkgKiBpbnN0ZWFkIG9mIHJlcXVpcmluZyBhbGwgY2Fs bGVycyB0byBkbyBzby4KIAkgKi8KIAlQR19UUlkoKTsKIAl7CkBAIC0yMzEsMTggKzIyOSwx NSBAQCBsaWJwcXNydl9jb25uZWN0X2NvbXBsZXRlKFBHY29ubiAqY29ubiwgdWludDMyIHdh aXRfZXZlbnRfaW5mbykKIAkJCWVsc2UKIAkJCQlpb19mbGFnID0gV0xfU09DS0VUX1dSSVRF QUJMRTsKIAotCQkJcmMgPSBXYWl0TGF0Y2hPclNvY2tldChNeUxhdGNoLAotCQkJCQkJCQkg ICBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfTEFUQ0hfU0VUIHwgaW9fZmxhZywKLQkJCQkJ CQkJICAgUFFzb2NrZXQoY29ubiksCi0JCQkJCQkJCSAgIDAsCi0JCQkJCQkJCSAgIHdhaXRf ZXZlbnRfaW5mbyk7CisJCQlyYyA9IFdhaXRJbnRlcnJ1cHRPclNvY2tldChDaGVja0Zvcklu dGVycnVwdHNNYXNrLAorCQkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX0lO VEVSUlVQVCB8IGlvX2ZsYWcsCisJCQkJCQkJCQkgICBQUXNvY2tldChjb25uKSwKKwkJCQkJ CQkJCSAgIDAsCisJCQkJCQkJCQkgICB3YWl0X2V2ZW50X2luZm8pOwogCiAJCQkvKiBJbnRl cnJ1cHRlZD8gKi8KLQkJCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKLQkJCXsKLQkJCQlSZXNl dExhdGNoKE15TGF0Y2gpOworCQkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQkJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7Ci0JCQl9CiAKIAkJCS8qIElmIHNvY2tldCBpcyByZWFkeSwg YWR2YW5jZSB0aGUgbGlicHEgc3RhdGUgbWFjaGluZSAqLwogCQkJaWYgKHJjICYgaW9fZmxh ZykKQEAgLTM1MiwxOSArMzQ3LDE2IEBAIGxpYnBxc3J2X2dldF9yZXN1bHQoUEdjb25uICpj b25uLCB1aW50MzIgd2FpdF9ldmVudF9pbmZvKQogCXsKIAkJaW50CQkJcmM7CiAKLQkJcmMg PSBXYWl0TGF0Y2hPclNvY2tldChNeUxhdGNoLAotCQkJCQkJCSAgIFdMX0VYSVRfT05fUE1f REVBVEggfCBXTF9MQVRDSF9TRVQgfAotCQkJCQkJCSAgIFdMX1NPQ0tFVF9SRUFEQUJMRSwK LQkJCQkJCQkgICBQUXNvY2tldChjb25uKSwKLQkJCQkJCQkgICAwLAotCQkJCQkJCSAgIHdh aXRfZXZlbnRfaW5mbyk7CisJCXJjID0gV2FpdEludGVycnVwdE9yU29ja2V0KENoZWNrRm9y SW50ZXJydXB0c01hc2ssCisJCQkJCQkJCSAgIFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9J TlRFUlJVUFQgfAorCQkJCQkJCQkgICBXTF9TT0NLRVRfUkVBREFCTEUsCisJCQkJCQkJCSAg IFBRc29ja2V0KGNvbm4pLAorCQkJCQkJCQkgICAwLAorCQkJCQkJCQkgICB3YWl0X2V2ZW50 X2luZm8pOwogCiAJCS8qIEludGVycnVwdGVkPyAqLwotCQlpZiAocmMgJiBXTF9MQVRDSF9T RVQpCi0JCXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCWlmIChyYyAmIFdMX0lOVEVS UlVQVCkKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7Ci0JCX0KIAogCQkvKiBDb25zdW1l IHdoYXRldmVyIGRhdGEgaXMgYXZhaWxhYmxlIGZyb20gdGhlIHNvY2tldCAqLwogCQlpZiAo UFFjb25zdW1lSW5wdXQoY29ubikgPT0gMCkKQEAgLTQxOCw3ICs0MTAsNyBAQCBsaWJwcXNy dl9jYW5jZWwoUEdjb25uICpjb25uLCBUaW1lc3RhbXBUeiBlbmR0aW1lKQogCQkJUG9zdGdy ZXNQb2xsaW5nU3RhdHVzVHlwZSBwb2xscmVzOwogCQkJVGltZXN0YW1wVHogbm93OwogCQkJ bG9uZwkJY3VyX3RpbWVvdXQ7Ci0JCQlpbnQJCQl3YWl0RXZlbnRzID0gV0xfTEFUQ0hfU0VU IHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEg7CisJCQlpbnQJCQl3YWl0RXZl bnRzID0gV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEg7 CiAKIAkJCXBvbGxyZXMgPSBQUWNhbmNlbFBvbGwoY2FuY2VsX2Nvbm4pOwogCQkJaWYgKHBv bGxyZXMgPT0gUEdSRVNfUE9MTElOR19PSykKQEAgLTQ0NywxMCArNDM5LDkgQEAgbGlicHFz cnZfY2FuY2VsKFBHY29ubiAqY29ubiwgVGltZXN0YW1wVHogZW5kdGltZSkKIAkJCX0KIAog CQkJLyogU2xlZXAgdW50aWwgdGhlcmUncyBzb21ldGhpbmcgdG8gZG8gKi8KLQkJCVdhaXRM YXRjaE9yU29ja2V0KE15TGF0Y2gsIHdhaXRFdmVudHMsIFBRY2FuY2VsU29ja2V0KGNhbmNl bF9jb25uKSwKLQkJCQkJCQkgIGN1cl90aW1lb3V0LCBQR19XQUlUX0NMSUVOVCk7Ci0KLQkJ CVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlXYWl0SW50ZXJydXB0T3JTb2NrZXQoQ2hlY2tG b3JJbnRlcnJ1cHRzTWFzaywgd2FpdEV2ZW50cywKKwkJCQkJCQkJICBQUWNhbmNlbFNvY2tl dChjYW5jZWxfY29ubiksCisJCQkJCQkJCSAgY3VyX3RpbWVvdXQsIFBHX1dBSVRfQ0xJRU5U KTsKIAogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbGlicHEvbGlicHEuaCBiL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLmgKaW5k ZXggZDE1MDczYTBhOTMuLjQ2NWE0Y2RmNDVmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9s aWJwcS9saWJwcS5oCisrKyBiL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLmgKQEAgLTY0LDcg KzY0LDcgQEAgZXh0ZXJuIGNvbnN0IFBHRExMSU1QT1JUIFBRY29tbU1ldGhvZHMgKlBxQ29t bU1ldGhvZHM7CiBleHRlcm4gUEdETExJTVBPUlQgV2FpdEV2ZW50U2V0ICpGZUJlV2FpdFNl dDsKIAogI2RlZmluZSBGZUJlV2FpdFNldFNvY2tldFBvcyAwCi0jZGVmaW5lIEZlQmVXYWl0 U2V0TGF0Y2hQb3MgMQorI2RlZmluZSBGZUJlV2FpdFNldEludGVycnVwdFBvcyAxCiAjZGVm aW5lIEZlQmVXYWl0U2V0TkV2ZW50cyAzCiAKIGV4dGVybiBpbnQJTGlzdGVuU2VydmVyUG9y dChpbnQgZmFtaWx5LCBjb25zdCBjaGFyICpob3N0TmFtZSwKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2xpYnBxL3BxbXEuaCBiL3NyYy9pbmNsdWRlL2xpYnBxL3BxbXEuaAppbmRleCAz Njc4MGMwODE2ZS4uZWE5NmFlOTU0NWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2xpYnBx L3BxbXEuaAorKysgYi9zcmMvaW5jbHVkZS9saWJwcS9wcW1xLmgKQEAgLTE4LDcgKzE4LDcg QEAKICNpbmNsdWRlICJzdG9yYWdlL3NobV9tcS5oIgogCiBleHRlcm4gdm9pZCBwcV9yZWRp cmVjdF90b19zaG1fbXEoZHNtX3NlZ21lbnQgKnNlZywgc2htX21xX2hhbmRsZSAqbXFoKTsK LWV4dGVybiB2b2lkIHBxX3NldF9wYXJhbGxlbF9sZWFkZXIocGlkX3QgcGlkLCBQcm9jTnVt YmVyIHByb2NOdW1iZXIpOworZXh0ZXJuIHZvaWQgcHFfc2V0X3BhcmFsbGVsX2xlYWRlcihQ cm9jTnVtYmVyIHByb2NOdW1iZXIpOwogCiBleHRlcm4gdm9pZCBwcV9wYXJzZV9lcnJvcm5v dGljZShTdHJpbmdJbmZvIG1zZywgRXJyb3JEYXRhICplZGF0YSk7CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL21lc29uLmJ1aWxkIGIvc3JjL2luY2x1ZGUvbWVzb24uYnVpbGQKaW5k ZXggN2Q3MzRkOTJkYWIuLmRhODEyOTM1NWNjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9t ZXNvbi5idWlsZAorKysgYi9zcmMvaW5jbHVkZS9tZXNvbi5idWlsZApAQCAtMTM1LDYgKzEz NSw3IEBAIGhlYWRlcl9zdWJkaXJzID0gWwogICAnZXhlY3V0b3InLAogICAnZmVfdXRpbHMn LAogICAnZm9yZWlnbicsCisgICdpcGMnLAogICAnaml0JywKICAgJ2xpYicsCiAgICdsaWJw cScsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRl L21pc2NhZG1pbi5oCmluZGV4IDVhMWI2NTI0NjczLi41MzJlOGY4NjA2YSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWlu LmgKQEAgLTYyLDExICs2MiwxMyBAQCBleHRlcm4gUEdETExJTVBPUlQgaW50IHNlcmlhbGl6 YWJsZV9idWZmZXJzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBzdWJ0cmFuc2FjdGlvbl9i dWZmZXJzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCB0cmFuc2FjdGlvbl9idWZmZXJzOwog CitleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgaW50IFByb2NEaWVTZW5kZXJQaWQ7Citl eHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgaW50IFByb2NEaWVTZW5kZXJVaWQ7CisKIGV4 dGVybiBQR0RMTElNUE9SVCBpbnQgTXlQcm9jUGlkOwogZXh0ZXJuIFBHRExMSU1QT1JUIHBn X3RpbWVfdCBNeVN0YXJ0VGltZTsKIGV4dGVybiBQR0RMTElNUE9SVCBUaW1lc3RhbXBUeiBN eVN0YXJ0VGltZXN0YW1wOwogZXh0ZXJuIFBHRExMSU1QT1JUIHN0cnVjdCBQb3J0ICpNeVBy b2NQb3J0OwotZXh0ZXJuIFBHRExMSU1QT1JUIHN0cnVjdCBMYXRjaCAqTXlMYXRjaDsKIGV4 dGVybiBQR0RMTElNUE9SVCB1aW50OCBNeUNhbmNlbEtleVtdOwogZXh0ZXJuIFBHRExMSU1Q T1JUIGludCBNeUNhbmNlbEtleUxlbmd0aDsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgTXlQ TUNoaWxkU2xvdDsKQEAgLTE5OSw5ICsyMDEsNiBAQCBleHRlcm4gUEdETExJTVBPUlQgY2hh ciAqRGF0YWJhc2VQYXRoOwogLyogbm93IGluIHV0aWxzL2luaXQvbWlzY2luaXQuYyAqLwog ZXh0ZXJuIHZvaWQgSW5pdFBvc3RtYXN0ZXJDaGlsZCh2b2lkKTsKIGV4dGVybiB2b2lkIElu aXRTdGFuZGFsb25lUHJvY2Vzcyhjb25zdCBjaGFyICphcmd2MCk7Ci1leHRlcm4gdm9pZCBJ bml0UHJvY2Vzc0xvY2FsTGF0Y2godm9pZCk7Ci1leHRlcm4gdm9pZCBTd2l0Y2hUb1NoYXJl ZExhdGNoKHZvaWQpOwotZXh0ZXJuIHZvaWQgU3dpdGNoQmFja1RvTG9jYWxMYXRjaCh2b2lk KTsKIAogLyoKICAqIE15QmFja2VuZFR5cGUgaW5kaWNhdGVzIHdoYXQga2luZCBvZiBhIGJh Y2tlbmQgdGhpcyBpcy4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3 b3JrZXIuaCBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuaAppbmRleCA3NDE4 ZTY0ZTE5Yi4uNTNhZTEwNzIyZGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0 ZXIvYmd3b3JrZXIuaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd29ya2VyLmgK QEAgLTY2LDYgKzY2LDE0IEBACiAgKi8KICNkZWZpbmUgQkdXT1JLRVJfSU5URVJSVVBUSUJM RQkJCTB4MDAwNAogCisvKgorICogRHluYW1pYyB3b3JrZXJzIGNyZWF0ZWQgd2l0aCBzaGFy ZWQgbWVtb3J5IGFjY2VzcyB1c3VhbGx5IHNlbmQgYW4gaW50ZXJydXB0CisgKiB0byB0aGUg Y3JlYXRpbmcgYmFja2VuZCB3aGVuIHRoZXkgc3RhcnQgYW5kIHN0b3AsIGFsbG93aW5nCisg KiBXYWl0Rm9yQmFja2dyb3VuZFdvcmtlcntTdGFydHVwLFNodXRkb3dufSgpIHRvIHdvcmsu ICBTdWNoIG5vdGlmaWNhdGlvbnMKKyAqIGNhbiBiZSBzdXBwcmVzc2VkIHdpdGggdGhpcyBm bGFnLgorICovCisjZGVmaW5lIEJHV09SS0VSX05PX05PVElGWQkJCQkJCQkweDAwMDgKKwog LyoKICAqIFRoaXMgY2xhc3MgaXMgdXNlZCBpbnRlcm5hbGx5IGZvciBwYXJhbGxlbCBxdWVy aWVzLCB0byBrZWVwIHRyYWNrIG9mIHRoZQogICogbnVtYmVyIG9mIGFjdGl2ZSBwYXJhbGxl bCB3b3JrZXJzIGFuZCBtYWtlIHN1cmUgd2UgbmV2ZXIgbGF1bmNoIG1vcmUgdGhhbgpAQCAt MTA0LDcgKzExMiw3IEBAIHR5cGVkZWYgc3RydWN0IEJhY2tncm91bmRXb3JrZXIKIAljaGFy CQliZ3dfZnVuY3Rpb25fbmFtZVtCR1dfTUFYTEVOXTsKIAlEYXR1bQkJYmd3X21haW5fYXJn OwogCWNoYXIJCWJnd19leHRyYVtCR1dfRVhUUkFMRU5dOwotCXBpZF90CQliZ3dfbm90aWZ5 X3BpZDsgLyogU0lHVVNSMSB0aGlzIGJhY2tlbmQgb24gc3RhcnQvc3RvcCAqLworCXBpZF90 CQliZ3dfbm90aWZ5X3BpZDsgLyogbm90IHVzZWQgKi8KIH0gQmFja2dyb3VuZFdvcmtlcjsK IAogdHlwZWRlZiBlbnVtIEJnd0hhbmRsZVN0YXR1cwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlcl9pbnRlcm5hbHMuaCBiL3NyYy9pbmNsdWRlL3Bvc3Rt YXN0ZXIvYmd3b3JrZXJfaW50ZXJuYWxzLmgKaW5kZXggYjYyNjFiYzAxZGYuLjM5OTY5ZGNl MzY4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd29ya2VyX2ludGVy bmFscy5oCisrKyBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3JrZXJfaW50ZXJuYWxz LmgKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlICJkYXRhdHlwZS90aW1lc3RhbXAuaCIK ICNpbmNsdWRlICJsaWIvaWxpc3QuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2Vy LmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jbnVtYmVyLmgiCiAKIC8qIEdVQyBvcHRpb25z ICovCiAKQEAgLTQ1LDkgKzQ2LDEwIEBAIGV4dGVybiB2b2lkIEJhY2tncm91bmRXb3JrZXJT dGF0ZUNoYW5nZShib29sIGFsbG93X25ld193b3JrZXJzKTsKIGV4dGVybiB2b2lkIEZvcmdl dEJhY2tncm91bmRXb3JrZXIoUmVnaXN0ZXJlZEJnV29ya2VyICpydyk7CiBleHRlcm4gdm9p ZCBSZXBvcnRCYWNrZ3JvdW5kV29ya2VyUElEKFJlZ2lzdGVyZWRCZ1dvcmtlciAqcncpOwog ZXh0ZXJuIHZvaWQgUmVwb3J0QmFja2dyb3VuZFdvcmtlckV4aXQoUmVnaXN0ZXJlZEJnV29y a2VyICpydyk7Ci1leHRlcm4gdm9pZCBCYWNrZ3JvdW5kV29ya2VyU3RvcE5vdGlmaWNhdGlv bnMocGlkX3QgcGlkKTsKK2V4dGVybiB2b2lkIEJhY2tncm91bmRXb3JrZXJTdG9wTm90aWZp Y2F0aW9ucyhpbnQgcG1jaGlsZCk7CiBleHRlcm4gdm9pZCBGb3JnZXRVbnN0YXJ0ZWRCYWNr Z3JvdW5kV29ya2Vycyh2b2lkKTsKIGV4dGVybiB2b2lkIFJlc2V0QmFja2dyb3VuZFdvcmtl ckNyYXNoVGltZXModm9pZCk7CitleHRlcm4gUHJvY051bWJlciBHZXROb3RpZnlQcm9jTnVt YmVyRm9yUmVnaXN0ZXJlZFdvcmtlcihSZWdpc3RlcmVkQmdXb3JrZXIgKnJ3KTsKIAogLyog RW50cnkgcG9pbnQgZm9yIGJhY2tncm91bmQgd29ya2VyIHByb2Nlc3NlcyAqLwogcGdfbm9y ZXR1cm4gZXh0ZXJuIHZvaWQgQmFja2dyb3VuZFdvcmtlck1haW4oY29uc3Qgdm9pZCAqc3Rh cnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbik7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9wb3N0bWFzdGVyL3N0YXJ0dXAuaCBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIv c3RhcnR1cC5oCmluZGV4IDRkMWUxMjEzMWQzLi5kZmIyYjBiNjVjZiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9zdGFydHVwLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci9zdGFydHVwLmgKQEAgLTI1LDEyICsyNSwxMCBAQAogCiBleHRlcm4gUEdETExJ TVBPUlQgaW50IGxvZ19zdGFydHVwX3Byb2dyZXNzX2ludGVydmFsOwogCi1leHRlcm4gdm9p ZCBQcm9jZXNzU3RhcnR1cFByb2NJbnRlcnJ1cHRzKHZvaWQpOworZXh0ZXJuIHZvaWQgU3Rh cnR1cFByb2NDaGVja1Bvc3RtYXN0ZXJEZWF0aCh2b2lkKTsKIHBnX25vcmV0dXJuIGV4dGVy biB2b2lkIFN0YXJ0dXBQcm9jZXNzTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNp emVfdCBzdGFydHVwX2RhdGFfbGVuKTsKIGV4dGVybiB2b2lkIFByZVJlc3RvcmVDb21tYW5k KHZvaWQpOwogZXh0ZXJuIHZvaWQgUG9zdFJlc3RvcmVDb21tYW5kKHZvaWQpOwotZXh0ZXJu IGJvb2wgSXNQcm9tb3RlU2lnbmFsZWQodm9pZCk7Ci1leHRlcm4gdm9pZCBSZXNldFByb21v dGVTaWduYWxlZCh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgZW5hYmxlX3N0YXJ0dXBfcHJvZ3Jl c3NfdGltZW91dCh2b2lkKTsKIGV4dGVybiB2b2lkIGRpc2FibGVfc3RhcnR1cF9wcm9ncmVz c190aW1lb3V0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHdvcmtlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtl ci5oCmluZGV4IGY2OTk0ZTlhMWExLi4zODIyNjkwMDFjZiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCisrKyBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaApAQCAtMTIsMTAgKzEyLDYgQEAKICNpZm5kZWYg TE9HSUNBTFdPUktFUl9ICiAjZGVmaW5lIExPR0lDQUxXT1JLRVJfSAogCi0jaW5jbHVkZSA8 c2lnbmFsLmg+Ci0KLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3Qg UGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nOwotCiBleHRlcm4gdm9pZCBBcHBseVdvcmtl ck1haW4oRGF0dW0gbWFpbl9hcmcpOwogZXh0ZXJuIHZvaWQgUGFyYWxsZWxBcHBseVdvcmtl ck1haW4oRGF0dW0gbWFpbl9hcmcpOwogZXh0ZXJuIHZvaWQgVGFibGVTeW5jV29ya2VyTWFp bihEYXR1bSBtYWluX2FyZyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9zbG90c3luYy5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdHN5bmMuaAppbmRl eCBhNTVkMWYwZGNjYy4uZDIxMjFjZDNlZDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3Nsb3RzeW5jLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xv dHN5bmMuaApAQCAtMTIsMTUgKzEyLDEwIEBACiAjaWZuZGVmIFNMT1RTWU5DX0gKICNkZWZp bmUgU0xPVFNZTkNfSAogCi0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0KICNpbmNsdWRlICJyZXBs aWNhdGlvbi93YWxyZWNlaXZlci5oIgogCiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBzeW5j X3JlcGxpY2F0aW9uX3Nsb3RzOwogCi0vKiBJbnRlcnJ1cHQgZmxhZyBzZXQgYnkgSGFuZGxl U2xvdFN5bmNNZXNzYWdlSW50ZXJydXB0KCkgKi8KLWV4dGVybiBQR0RMTElNUE9SVCB2b2xh dGlsZSBzaWdfYXRvbWljX3QgU2xvdFN5bmNTaHV0ZG93blBlbmRpbmc7Ci0KIC8qCiAgKiBH VUNzIG5lZWRlZCBieSBzbG90IHN5bmMgd29ya2VyIHRvIGNvbm5lY3QgdG8gdGhlIHByaW1h cnkKICAqIHNlcnZlciBhbmQgY2Fycnkgb24gd2l0aCBzbG90cyBzeW5jaHJvbml6YXRpb24u CkBAIC0zNyw3ICszMiw1IEBAIGV4dGVybiB2b2lkIFNodXREb3duU2xvdFN5bmModm9pZCk7 CiBleHRlcm4gYm9vbCBTbG90U3luY1dvcmtlckNhblJlc3RhcnQodm9pZCk7CiBleHRlcm4g Ym9vbCBJc1N5bmNpbmdSZXBsaWNhdGlvblNsb3RzKHZvaWQpOwogZXh0ZXJuIHZvaWQgU3lu Y1JlcGxpY2F0aW9uU2xvdHMoV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4pOwotZXh0ZXJuIHZv aWQgSGFuZGxlU2xvdFN5bmNNZXNzYWdlSW50ZXJydXB0KHZvaWQpOwotZXh0ZXJuIHZvaWQg UHJvY2Vzc1Nsb3RTeW5jTWVzc2FnZSh2b2lkKTsKIAogI2VuZGlmCQkJCQkJCS8qIFNMT1RT WU5DX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2Vp dmVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCmluZGV4IDQ3 YzA3NTc0ZDRkLi45NDk4OGZmNjI2NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vd2FscmVjZWl2ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxy ZWNlaXZlci5oCkBAIC0xMyw2ICsxMyw3IEBACiAjZGVmaW5lIF9XQUxSRUNFSVZFUl9ICiAK ICNpbmNsdWRlIDxuZXRkYi5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgogCiAjaW5jbHVkZSAi YWNjZXNzL3hsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKaW5kZXggMzg2Y2VkZmM3YWEuLmJjOWEzYmZhYmU0 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaAorKysg Yi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaApAQCAtNDUsNyArNDUsNiBA QCBleHRlcm4gdm9pZCBXYWxTbmRTaWduYWxzKHZvaWQpOwogZXh0ZXJuIHZvaWQgV2FsU25k V2FrZXVwKGJvb2wgcGh5c2ljYWwsIGJvb2wgbG9naWNhbCk7CiBleHRlcm4gdm9pZCBXYWxT bmRJbml0U3RvcHBpbmcodm9pZCk7CiBleHRlcm4gdm9pZCBXYWxTbmRXYWl0U3RvcHBpbmco dm9pZCk7Ci1leHRlcm4gdm9pZCBIYW5kbGVXYWxTbmRJbml0U3RvcHBpbmcodm9pZCk7CiBl eHRlcm4gdm9pZCBXYWxTbmRScXN0RmlsZVJlbG9hZCh2b2lkKTsKIAogLyoKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlcl9wcml2YXRlLmggYi9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXJfcHJpdmF0ZS5oCmluZGV4IGIwYzgwZGVl YjI0Li4zZTE0NTNmMWQ4OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d2Fsc2VuZGVyX3ByaXZhdGUuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxz ZW5kZXJfcHJpdmF0ZS5oCkBAIC00MCw2ICs0MCw4IEBAIHR5cGVkZWYgZW51bSBXYWxTbmRT dGF0ZQogICovCiB0eXBlZGVmIHN0cnVjdCBXYWxTbmQKIHsKKwlQcm9jTnVtYmVyCXBncHJv Y25vOwkJLyogdGhpcyB3YWxzZW5kZXIncyBQcm9jTnVtYmVyLCBvciBpbnZhbGlkIGlmCisJ CQkJCQkJCSAqIG5vdCBhY3RpdmUgKi8KIAlwaWRfdAkJcGlkOwkJCS8qIHRoaXMgd2Fsc2Vu ZGVyJ3MgUElELCBvciAwIGlmIG5vdCBhY3RpdmUgKi8KIAogCVdhbFNuZFN0YXRlIHN0YXRl OwkJCS8qIHRoaXMgd2Fsc2VuZGVyJ3Mgc3RhdGUgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggNzQ1YjdkOWU5NjkuLmU3ZDc2MDY2NjZi IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwu aAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAt NzgsOSArNzgsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFdvcmtlcgogCUZpbGVT ZXQgICAgKnN0cmVhbV9maWxlc2V0OwogCiAJLyoKLQkgKiBQSUQgb2YgbGVhZGVyIGFwcGx5 IHdvcmtlciBpZiB0aGlzIHNsb3QgaXMgdXNlZCBmb3IgYSBwYXJhbGxlbCBhcHBseQotCSAq IHdvcmtlciwgSW52YWxpZFBpZCBvdGhlcndpc2UuCisJICogTGVhZGVyIGFwcGx5IHdvcmtl ciBpZiB0aGlzIHNsb3QgaXMgdXNlZCBmb3IgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsCisJ ICogSU5WQUxJRF9QUk9DX05VTUJFUi9JbnZhbGlkUGlkIG90aGVyd2lzZS4KIAkgKi8KKwlQ cm9jTnVtYmVyCWxlYWRlcl9wZ3Byb2NubzsKIAlwaWRfdAkJbGVhZGVyX3BpZDsKIAogCS8q IEluZGljYXRlcyB3aGV0aGVyIGFwcGx5IGNhbiBiZSBwZXJmb3JtZWQgaW4gcGFyYWxsZWwu ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xhdGNoLmggYi9zcmMvaW5j bHVkZS9zdG9yYWdlL2xhdGNoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1 M2EzMmVjZjlkLi4wMDAwMDAwMDAwMAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xhdGNo LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCi0gKgotICogbGF0Y2guaAotICoJICBSb3V0aW5lcyBmb3IgaW50ZXJwcm9jZXNzIGxh dGNoZXMKLSAqCi0gKiBBIGxhdGNoIGlzIGEgYm9vbGVhbiB2YXJpYWJsZSwgd2l0aCBvcGVy YXRpb25zIHRoYXQgbGV0IHByb2Nlc3NlcyBzbGVlcAotICogdW50aWwgaXQgaXMgc2V0LiBB IGxhdGNoIGNhbiBiZSBzZXQgZnJvbSBhbm90aGVyIHByb2Nlc3MsIG9yIGEgc2lnbmFsCi0g KiBoYW5kbGVyIHdpdGhpbiB0aGUgc2FtZSBwcm9jZXNzLgotICoKLSAqIFRoZSBsYXRjaCBp bnRlcmZhY2UgaXMgYSByZWxpYWJsZSByZXBsYWNlbWVudCBmb3IgdGhlIGNvbW1vbiBwYXR0 ZXJuIG9mCi0gKiB1c2luZyBwZ191c2xlZXAoKSBvciBzZWxlY3QoKSB0byB3YWl0IHVudGls IGEgc2lnbmFsIGFycml2ZXMsIHdoZXJlIHRoZQotICogc2lnbmFsIGhhbmRsZXIgc2V0cyBh IGZsYWcgdmFyaWFibGUuIEJlY2F1c2Ugb24gc29tZSBwbGF0Zm9ybXMgYW4KLSAqIGluY29t aW5nIHNpZ25hbCBkb2Vzbid0IGludGVycnVwdCBzbGVlcCwgYW5kIGV2ZW4gb24gcGxhdGZv cm1zIHdoZXJlIGl0Ci0gKiBkb2VzIHRoZXJlIGlzIGEgcmFjZSBjb25kaXRpb24gaWYgdGhl IHNpZ25hbCBhcnJpdmVzIGp1c3QgYmVmb3JlCi0gKiBlbnRlcmluZyB0aGUgc2xlZXAsIHRo ZSBjb21tb24gcGF0dGVybiBtdXN0IHBlcmlvZGljYWxseSB3YWtlIHVwIGFuZAotICogcG9s bCB0aGUgZmxhZyB2YXJpYWJsZS4gVGhlIHBzZWxlY3QoKSBzeXN0ZW0gY2FsbCB3YXMgaW52 ZW50ZWQgdG8gc29sdmUKLSAqIHRoaXMgcHJvYmxlbSwgYnV0IGl0IGlzIG5vdCBwb3J0YWJs ZSBlbm91Z2guIExhdGNoZXMgYXJlIGRlc2lnbmVkIHRvCi0gKiBvdmVyY29tZSB0aGVzZSBs aW1pdGF0aW9ucywgYWxsb3dpbmcgeW91IHRvIHNsZWVwIHdpdGhvdXQgcG9sbGluZyBhbmQK LSAqIGVuc3VyaW5nIHF1aWNrIHJlc3BvbnNlIHRvIHNpZ25hbHMgZnJvbSBvdGhlciBwcm9j ZXNzZXMuCi0gKgotICogVGhlcmUgYXJlIHR3byBraW5kcyBvZiBsYXRjaGVzOiBsb2NhbCBh bmQgc2hhcmVkLiBBIGxvY2FsIGxhdGNoIGlzCi0gKiBpbml0aWFsaXplZCBieSBJbml0TGF0 Y2gsIGFuZCBjYW4gb25seSBiZSBzZXQgZnJvbSB0aGUgc2FtZSBwcm9jZXNzLgotICogQSBs b2NhbCBsYXRjaCBjYW4gYmUgdXNlZCB0byB3YWl0IGZvciBhIHNpZ25hbCB0byBhcnJpdmUs IGJ5IGNhbGxpbmcKLSAqIFNldExhdGNoIGluIHRoZSBzaWduYWwgaGFuZGxlci4gQSBzaGFy ZWQgbGF0Y2ggcmVzaWRlcyBpbiBzaGFyZWQgbWVtb3J5LAotICogYW5kIG11c3QgYmUgaW5p dGlhbGl6ZWQgYXQgcG9zdG1hc3RlciBzdGFydHVwIGJ5IEluaXRTaGFyZWRMYXRjaC4gQmVm b3JlCi0gKiBhIHNoYXJlZCBsYXRjaCBjYW4gYmUgd2FpdGVkIG9uLCBpdCBtdXN0IGJlIGFz c29jaWF0ZWQgd2l0aCBhIHByb2Nlc3MKLSAqIHdpdGggT3duTGF0Y2guIE9ubHkgdGhlIHBy b2Nlc3Mgb3duaW5nIHRoZSBsYXRjaCBjYW4gd2FpdCBvbiBpdCwgYnV0IGFueQotICogcHJv Y2VzcyBjYW4gc2V0IGl0LgotICoKLSAqIFRoZXJlIGFyZSB0aHJlZSBiYXNpYyBvcGVyYXRp b25zIG9uIGEgbGF0Y2g6Ci0gKgotICogU2V0TGF0Y2gJCS0gU2V0cyB0aGUgbGF0Y2gKLSAq IFJlc2V0TGF0Y2gJLSBDbGVhcnMgdGhlIGxhdGNoLCBhbGxvd2luZyBpdCB0byBiZSBzZXQg YWdhaW4KLSAqIFdhaXRMYXRjaAktIFdhaXRzIGZvciB0aGUgbGF0Y2ggdG8gYmVjb21lIHNl dAotICoKLSAqIFdhaXRMYXRjaCBpbmNsdWRlcyBhIHByb3Zpc2lvbiBmb3IgdGltZW91dHMg KHdoaWNoIHNob3VsZCBiZSBhdm9pZGVkCi0gKiB3aGVuIHBvc3NpYmxlLCBhcyB0aGV5IGlu Y3VyIGV4dHJhIG92ZXJoZWFkKSBhbmQgYSBwcm92aXNpb24gZm9yCi0gKiBwb3N0bWFzdGVy IGNoaWxkIHByb2Nlc3NlcyB0byB3YWtlIHVwIGltbWVkaWF0ZWx5IG9uIHBvc3RtYXN0ZXIg ZGVhdGguCi0gKiBTZWUgbGF0Y2guYyBmb3IgZGV0YWlsZWQgc3BlY2lmaWNhdGlvbnMgZm9y IHRoZSBleHBvcnRlZCBmdW5jdGlvbnMuCi0gKgotICogVGhlIGNvcnJlY3QgcGF0dGVybiB0 byB3YWl0IGZvciBldmVudChzKSBpczoKLSAqCi0gKiBmb3IgKDs7KQotICogewotICoJICAg UmVzZXRMYXRjaCgpOwotICoJICAgaWYgKHdvcmsgdG8gZG8pCi0gKgkJICAgRG8gU3R1ZmYo KTsKLSAqCSAgIFdhaXRMYXRjaCgpOwotICogfQotICoKLSAqIEl0J3MgaW1wb3J0YW50IHRv IHJlc2V0IHRoZSBsYXRjaCAqYmVmb3JlKiBjaGVja2luZyBpZiB0aGVyZSdzIHdvcmsgdG8K LSAqIGRvLiBPdGhlcndpc2UsIGlmIHNvbWVvbmUgc2V0cyB0aGUgbGF0Y2ggYmV0d2VlbiB0 aGUgY2hlY2sgYW5kIHRoZQotICogUmVzZXRMYXRjaCBjYWxsLCB5b3Ugd2lsbCBtaXNzIGl0 IGFuZCBXYWl0IHdpbGwgaW5jb3JyZWN0bHkgYmxvY2suCi0gKgotICogQW5vdGhlciB2YWxp ZCBjb2RpbmcgcGF0dGVybiBsb29rcyBsaWtlOgotICoKLSAqIGZvciAoOzspCi0gKiB7Ci0g KgkgICBpZiAod29yayB0byBkbykKLSAqCQkgICBEbyBTdHVmZigpOyAvLyBpbiBwYXJ0aWN1 bGFyLCBleGl0IGxvb3AgaWYgc29tZSBjb25kaXRpb24gc2F0aXNmaWVkCi0gKgkgICBXYWl0 TGF0Y2goKTsKLSAqCSAgIFJlc2V0TGF0Y2goKTsKLSAqIH0KLSAqCi0gKiBUaGlzIGlzIHVz ZWZ1bCB0byByZWR1Y2UgbGF0Y2ggdHJhZmZpYyBpZiBpdCdzIGV4cGVjdGVkIHRoYXQgdGhl IGxvb3AncwotICogdGVybWluYXRpb24gY29uZGl0aW9uIHdpbGwgb2Z0ZW4gYmUgc2F0aXNm aWVkIGluIHRoZSBmaXJzdCBpdGVyYXRpb247Ci0gKiB0aGUgY29zdCBpcyBhbiBleHRyYSBs b29wIGl0ZXJhdGlvbiBiZWZvcmUgYmxvY2tpbmcgd2hlbiBpdCBpcyBub3QuCi0gKiBXaGF0 IG11c3QgYmUgYXZvaWRlZCBpcyBwbGFjaW5nIGFueSBjaGVja3MgZm9yIGFzeW5jaHJvbm91 cyBldmVudHMgYWZ0ZXIKLSAqIFdhaXRMYXRjaCBhbmQgYmVmb3JlIFJlc2V0TGF0Y2gsIGFz IHRoYXQgY3JlYXRlcyBhIHJhY2UgY29uZGl0aW9uLgotICoKLSAqIFRvIHdha2UgdXAgdGhl IHdhaXRlciwgeW91IG11c3QgZmlyc3Qgc2V0IGEgZ2xvYmFsIGZsYWcgb3Igc29tZXRoaW5n Ci0gKiBlbHNlIHRoYXQgdGhlIHdhaXQgbG9vcCB0ZXN0cyBpbiB0aGUgImlmICh3b3JrIHRv IGRvKSIgcGFydCwgYW5kIGNhbGwKLSAqIFNldExhdGNoICphZnRlciogdGhhdC4gU2V0TGF0 Y2ggaXMgZGVzaWduZWQgdG8gcmV0dXJuIHF1aWNrbHkgaWYgdGhlCi0gKiBsYXRjaCBpcyBh bHJlYWR5IHNldC4KLSAqCi0gKiBPbiBzb21lIHBsYXRmb3Jtcywgc2lnbmFscyB3aWxsIG5v dCBpbnRlcnJ1cHQgdGhlIGxhdGNoIHdhaXQgcHJpbWl0aXZlCi0gKiBieSB0aGVtc2VsdmVz LiAgVGhlcmVmb3JlLCBpdCBpcyBjcml0aWNhbCB0aGF0IGFueSBzaWduYWwgaGFuZGxlciB0 aGF0Ci0gKiBpcyBtZWFudCB0byB0ZXJtaW5hdGUgYSBXYWl0TGF0Y2ggd2FpdCBjYWxscyBT ZXRMYXRjaC4KLSAqCi0gKiBOb3RlIHRoYXQgdXNlIG9mIHRoZSBwcm9jZXNzIGxhdGNoIChQ R1BST0MucHJvY0xhdGNoKSBpcyBnZW5lcmFsbHkgYmV0dGVyCi0gKiB0aGFuIGFuIGFkLWhv YyBzaGFyZWQgbGF0Y2ggZm9yIHNpZ25hbGluZyBhdXhpbGlhcnkgcHJvY2Vzc2VzLiAgVGhp cyBpcwotICogYmVjYXVzZSBnZW5lcmljIHNpZ25hbCBoYW5kbGVycyB3aWxsIGNhbGwgU2V0 TGF0Y2ggb24gdGhlIHByb2Nlc3MgbGF0Y2gKLSAqIG9ubHksIHNvIHVzaW5nIGFueSBsYXRj aCBvdGhlciB0aGFuIHRoZSBwcm9jZXNzIGxhdGNoIGVmZmVjdGl2ZWx5IHByZWNsdWRlcwot ICogdXNlIG9mIGFueSBnZW5lcmljIGhhbmRsZXIuCi0gKgotICoKLSAqIFNlZSBhbHNvIFdh aXRFdmVudFNldHMgaW4gd2FpdGV2ZW50c2V0LmguIFRoZXkgYWxsb3cgdG8gd2FpdCBmb3Ig bGF0Y2hlcwotICogYmVpbmcgc2V0IGFuZCBhZGRpdGlvbmFsIGV2ZW50cyAtIHBvc3RtYXN0 ZXIgZHlpbmcgYW5kIHNvY2tldCByZWFkaW5lc3Mgb2YKLSAqIHNldmVyYWwgc29ja2V0cyBj dXJyZW50bHkgLSBhdCB0aGUgc2FtZSB0aW1lLiAgT24gbWFueSBwbGF0Zm9ybXMgdXNpbmcg YQotICogbG9uZyBsaXZlZCBldmVudCBzZXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB1c2lu ZyBXYWl0TGF0Y2ggb3IKLSAqIFdhaXRMYXRjaE9yU29ja2V0LgotICoKLSAqCi0gKiBQb3J0 aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBv ZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCi0gKgotICogc3JjL2luY2x1ZGUvc3Rv cmFnZS9sYXRjaC5oCi0gKgotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKi8KLSNpZm5kZWYg TEFUQ0hfSAotI2RlZmluZSBMQVRDSF9ICi0KLSNpbmNsdWRlIDxzaWduYWwuaD4KLQotI2lu Y2x1ZGUgInN0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgiCS8qIGZvciBXTF8qIGFyZ3VtZW50cyB0 byBXYWl0TGF0Y2ggKi8KLSNpbmNsdWRlICJ1dGlscy93YWl0X2NsYXNzZXMuaCIgIC8qIGZv ciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5ICovCS8qIElXWVUgcHJhZ21hOiBrZWVwICovCi0K LQotLyoKLSAqIExhdGNoIHN0cnVjdHVyZSBzaG91bGQgYmUgdHJlYXRlZCBhcyBvcGFxdWUg YW5kIG9ubHkgYWNjZXNzZWQgdGhyb3VnaAotICogdGhlIHB1YmxpYyBmdW5jdGlvbnMuIEl0 IGlzIGRlZmluZWQgaGVyZSB0byBhbGxvdyBlbWJlZGRpbmcgTGF0Y2hlcyBhcwotICogcGFy dCBvZiBiaWdnZXIgc3RydWN0cy4KLSAqLwotdHlwZWRlZiBzdHJ1Y3QgTGF0Y2gKLXsKLQlz aWdfYXRvbWljX3QgaXNfc2V0OwotCXNpZ19hdG9taWNfdCBtYXliZV9zbGVlcGluZzsKLQli b29sCQlpc19zaGFyZWQ7Ci0JaW50CQkJb3duZXJfcGlkOwotI2lmZGVmIFdJTjMyCi0JSEFO RExFCQlldmVudDsKLSNlbmRpZgotfSBMYXRjaDsKLQotLyoKLSAqIHByb3RvdHlwZXMgZm9y IGZ1bmN0aW9ucyBpbiBsYXRjaC5jCi0gKi8KLWV4dGVybiB2b2lkIEluaXRMYXRjaChMYXRj aCAqbGF0Y2gpOwotZXh0ZXJuIHZvaWQgSW5pdFNoYXJlZExhdGNoKExhdGNoICpsYXRjaCk7 Ci1leHRlcm4gdm9pZCBPd25MYXRjaChMYXRjaCAqbGF0Y2gpOwotZXh0ZXJuIHZvaWQgRGlz b3duTGF0Y2goTGF0Y2ggKmxhdGNoKTsKLWV4dGVybiB2b2lkIFNldExhdGNoKExhdGNoICps YXRjaCk7Ci1leHRlcm4gdm9pZCBSZXNldExhdGNoKExhdGNoICpsYXRjaCk7Ci0KLWV4dGVy biBpbnQJV2FpdExhdGNoKExhdGNoICpsYXRjaCwgaW50IHdha2VFdmVudHMsIGxvbmcgdGlt ZW91dCwKLQkJCQkJICB1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsKLWV4dGVybiBpbnQJV2Fp dExhdGNoT3JTb2NrZXQoTGF0Y2ggKmxhdGNoLCBpbnQgd2FrZUV2ZW50cywKLQkJCQkJCQkg IHBnc29ja2V0IHNvY2ssIGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnRfaW5mbyk7 Ci1leHRlcm4gdm9pZCBJbml0aWFsaXplTGF0Y2hXYWl0U2V0KHZvaWQpOwotCi0jZW5kaWYJ CQkJCQkJLyogTEFUQ0hfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9w cm9jLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAppbmRleCAwMzE0Zjk3OWU2MC4u MDIwMmE5NGVkMDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCisr KyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCkBAIC0xNSw5ICsxNSw5IEBACiAjZGVm aW5lIF9QUk9DX0hfCiAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKKyNpbmNsdWRl ICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibGliL2lsaXN0LmgiCiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvbG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcGdfc2VtYS5oIgogI2luY2x1ZGUg InN0b3JhZ2UvcHJvY2xpc3RfdHlwZXMuaCIKQEAgLTI1OSwxMiArMjU5LDE4IEBAIHR5cGVk ZWYgc3RydWN0IFBHUFJPQwogCSAqIEludGVyLXByb2Nlc3Mgc2lnbmFsaW5nCiAJICoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KIAotCUxhdGNoCQlwcm9jTGF0Y2g7CQkvKiBnZW5lcmljIGxhdGNo IGZvciBwcm9jZXNzICovCi0KIAlQR1NlbWFwaG9yZSBzZW07CQkJLyogT05FIHNlbWFwaG9y ZSB0byBzbGVlcCBvbiAqLwogCiAJaW50CQkJZGVsYXlDaGtwdEZsYWdzOwkvKiBmb3IgREVM QVlfQ0hLUFRfKiBmbGFncyAqLwogCisJLyogQml0IG1hc2sgb2YgcGVuZGluZyBpbnRlcnJ1 cHRzLCB3YWl0aW5nIHRvIGJlIHByb2Nlc3NlZCAqLworCVBlbmRpbmdJbnRlcnJ1cHRzIHBl bmRpbmdJbnRlcnJ1cHRzOworCisjaWZkZWYgV0lOMzIKKwkvKiBFdmVudCBoYW5kbGUgdG8g d2FrZSB1cCB0aGUgcHJvY2VzcyB3aGVuIHNlbmRpbmcgYW4gaW50ZXJydXB0ICovCisJSEFO RExFCQlpbnRlcnJ1cHRXYWtldXBFdmVudDsKKyNlbmRpZgorCiAJLyoKIAkgKiBXaGlsZSBp biBob3Qgc3RhbmRieSBtb2RlLCBzaG93cyB0aGF0IGEgY29uZmxpY3Qgc2lnbmFsIGhhcyBi ZWVuIHNlbnQKIAkgKiBmb3IgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24uIFNldC9jbGVhcmVk IHdoaWxlIGhvbGRpbmcgUHJvY0FycmF5TG9jaywKQEAgLTQ5NCw2ICs1MDAsOCBAQCB0eXBl ZGVmIHN0cnVjdCBQUk9DX0hEUgogCXBnX2F0b21pY191aW50MzIgYXZMYXVuY2hlclByb2M7 CiAJcGdfYXRvbWljX3VpbnQzMiB3YWx3cml0ZXJQcm9jOwogCXBnX2F0b21pY191aW50MzIg Y2hlY2twb2ludGVyUHJvYzsKKwlwZ19hdG9taWNfdWludDMyIHdhbHJlY2VpdmVyUHJvYzsK KwlwZ19hdG9taWNfdWludDMyIHN0YXJ0dXBQcm9jOwogCiAJLyogQ3VycmVudCBzaGFyZWQg ZXN0aW1hdGUgb2YgYXBwcm9wcmlhdGUgc3BpbnNfcGVyX2RlbGF5IHZhbHVlICovCiAJaW50 CQkJc3BpbnNfcGVyX2RlbGF5OwpAQCAtNTc1LDkgKzU4Myw2IEBAIGV4dGVybiB2b2lkIEdl dExvY2tIb2xkZXJzQW5kV2FpdGVycyhMT0NBTExPQ0sgKmxvY2FsbG9jaywKIAkJCQkJCQkJ CSBTdHJpbmdJbmZvIGxvY2tfd2FpdGVyc19zYnVmLAogCQkJCQkJCQkJIGludCAqbG9ja0hv bGRlcnNOdW0pOwogCi1leHRlcm4gdm9pZCBQcm9jV2FpdEZvclNpZ25hbCh1aW50MzIgd2Fp dF9ldmVudF9pbmZvKTsKLWV4dGVybiB2b2lkIFByb2NTZW5kU2lnbmFsKFByb2NOdW1iZXIg cHJvY051bWJlcik7Ci0KIGV4dGVybiBQR1BST0MgKkF1eGlsaWFyeVBpZEdldFByb2MoaW50 IHBpZCk7CiAKIGV4dGVybiB2b2lkIEJlY29tZUxvY2tHcm91cExlYWRlcih2b2lkKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKaW5kZXggNjkxMzE0ZTI2YmYuLjQ5NDAzM2M5NGRm IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAorKysgYi9z cmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaApAQCAtMTQsMzUgKzE0LDYgQEAKICNp Zm5kZWYgUFJPQ1NJR05BTF9ICiAjZGVmaW5lIFBST0NTSUdOQUxfSAogCi0jaW5jbHVkZSAi c3RvcmFnZS9wcm9jbnVtYmVyLmgiCi0KLQotLyoKLSAqIFJlYXNvbnMgZm9yIHNpZ25hbGlu ZyBhIFBvc3RncmVzIGNoaWxkIHByb2Nlc3MgKGEgYmFja2VuZCBvciBhbiBhdXhpbGlhcnkK LSAqIHByb2Nlc3MsIGxpa2UgY2hlY2twb2ludGVyKS4gIFdlIGNhbiBjb3BlIHdpdGggY29u Y3VycmVudCBzaWduYWxzIGZvciBkaWZmZXJlbnQKLSAqIHJlYXNvbnMuICBIb3dldmVyLCBp ZiB0aGUgc2FtZSByZWFzb24gaXMgc2lnbmFsZWQgbXVsdGlwbGUgdGltZXMgaW4gcXVpY2sK LSAqIHN1Y2Nlc3Npb24sIHRoZSBwcm9jZXNzIGlzIGxpa2VseSB0byBvYnNlcnZlIG9ubHkg b25lIG5vdGlmaWNhdGlvbiBvZiBpdC4KLSAqIFRoaXMgaXMgb2theSBmb3IgdGhlIHByZXNl bnQgdXNlcy4KLSAqCi0gKiBBbHNvLCBiZWNhdXNlIG9mIHJhY2UgY29uZGl0aW9ucywgaXQn cyBpbXBvcnRhbnQgdGhhdCBhbGwgdGhlIHNpZ25hbHMgYmUKLSAqIGRlZmluZWQgc28gdGhh dCBubyBoYXJtIGlzIGRvbmUgaWYgYSBwcm9jZXNzIG1pc3Rha2VubHkgcmVjZWl2ZXMgb25l LgotICovCi10eXBlZGVmIGVudW0KLXsKLQlQUk9DU0lHX0NBVENIVVBfSU5URVJSVVBULAkv KiBzaW52YWwgY2F0Y2h1cCBpbnRlcnJ1cHQgKi8KLQlQUk9DU0lHX05PVElGWV9JTlRFUlJV UFQsCS8qIGxpc3Rlbi9ub3RpZnkgaW50ZXJydXB0ICovCi0JUFJPQ1NJR19QQVJBTExFTF9N RVNTQUdFLAkvKiBtZXNzYWdlIGZyb20gY29vcGVyYXRpbmcgcGFyYWxsZWwgYmFja2VuZCAq LwotCVBST0NTSUdfV0FMU05EX0lOSVRfU1RPUFBJTkcsCS8qIGFzayB3YWxzZW5kZXJzIHRv IHByZXBhcmUgZm9yIHNodXRkb3duICAqLwotCVBST0NTSUdfQkFSUklFUiwJCQkvKiBnbG9i YWwgYmFycmllciBpbnRlcnJ1cHQgICovCi0JUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQs IC8qIGFzayBiYWNrZW5kIHRvIGxvZyB0aGUgbWVtb3J5IGNvbnRleHRzICovCi0JUFJPQ1NJ R19TTE9UU1lOQ19NRVNTQUdFLAkvKiBhc2sgc2xvdCBzeW5jaHJvbml6YXRpb24gdG8gc3Rv cCAqLwotCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1QsCS8qIGJhY2tlbmQgaXMgYmxvY2tp bmcgcmVjb3ZlcnksIGNoZWNrCi0JCQkJCQkJCSAqIFBHUFJPQy0+cGVuZGluZ1JlY292ZXJ5 Q29uZmxpY3RzIGZvciB0aGUKLQkJCQkJCQkJICogcmVhc29uICovCi19IFByb2NTaWduYWxS ZWFzb247Ci0KLSNkZWZpbmUgTlVNX1BST0NTSUdOQUxTIChQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNUICsgMSkKLQogdHlwZWRlZiBlbnVtCiB7CiAJUFJPQ1NJR05BTF9CQVJSSUVSX1NN R1JSRUxFQVNFLCAvKiBhc2sgc21nciB0byBjbG9zZSBmaWxlcyAqLwpAQCAtNjgsMTYgKzM5 LDEyIEBAIHR5cGVkZWYgZW51bQogICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIHBy b2NzaWduYWwuYwogICovCiBleHRlcm4gdm9pZCBQcm9jU2lnbmFsSW5pdChjb25zdCB1aW50 OCAqY2FuY2VsX2tleSwgaW50IGNhbmNlbF9rZXlfbGVuKTsKLWV4dGVybiBpbnQJU2VuZFBy b2NTaWduYWwocGlkX3QgcGlkLCBQcm9jU2lnbmFsUmVhc29uIHJlYXNvbiwKLQkJCQkJCSAg IFByb2NOdW1iZXIgcHJvY051bWJlcik7CiBleHRlcm4gdm9pZCBTZW5kQ2FuY2VsUmVxdWVz dChpbnQgYmFja2VuZFBJRCwgY29uc3QgdWludDggKmNhbmNlbF9rZXksIGludCBjYW5jZWxf a2V5X2xlbik7CiAKIGV4dGVybiB1aW50NjQgRW1pdFByb2NTaWduYWxCYXJyaWVyKFByb2NT aWduYWxCYXJyaWVyVHlwZSB0eXBlKTsKIGV4dGVybiB2b2lkIFdhaXRGb3JQcm9jU2lnbmFs QmFycmllcih1aW50NjQgZ2VuZXJhdGlvbik7CiBleHRlcm4gdm9pZCBQcm9jZXNzUHJvY1Np Z25hbEJhcnJpZXIodm9pZCk7CiAKLWV4dGVybiB2b2lkIHByb2NzaWduYWxfc2lndXNyMV9o YW5kbGVyKFNJR05BTF9BUkdTKTsKLQogLyogUHJvY1NpZ25hbEhlYWRlciBpcyBhbiBvcGFx dWUgc3RydWN0LCBkZXRhaWxzIGtub3duIG9ubHkgd2l0aGluIHByb2NzaWduYWwuYyAqLwog dHlwZWRlZiBzdHJ1Y3QgUHJvY1NpZ25hbEhlYWRlciBQcm9jU2lnbmFsSGVhZGVyOwogCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbC5oIGIvc3JjL2luY2x1ZGUv c3RvcmFnZS9zaW52YWwuaAppbmRleCA0ZDMzZmRjYWJlMS4uMzkwYTQ4NDQ3YmYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ludmFsLmgKKysrIGIvc3JjL2luY2x1ZGUv c3RvcmFnZS9zaW52YWwuaApAQCAtMTQsOCArMTQsNiBAQAogI2lmbmRlZiBTSU5WQUxfSAog I2RlZmluZSBTSU5WQUxfSAogCi0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0KICNpbmNsdWRlICJz dG9yYWdlL3JlbGZpbGVsb2NhdG9yLmgiCiAKIC8qCkBAIC0xMzcsMTYgKzEzNSwxMSBAQCB0 eXBlZGVmIHVuaW9uCiAvKiBDb3VudGVyIG9mIG1lc3NhZ2VzIHByb2Nlc3NlZDsgZG9uJ3Qg d29ycnkgYWJvdXQgb3ZlcmZsb3cuICovCiBleHRlcm4gUEdETExJTVBPUlQgdWludDY0IFNo YXJlZEludmFsaWRNZXNzYWdlQ291bnRlcjsKIAotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0 aWxlIHNpZ19hdG9taWNfdCBjYXRjaHVwSW50ZXJydXB0UGVuZGluZzsKLQogZXh0ZXJuIHZv aWQgU2VuZFNoYXJlZEludmFsaWRNZXNzYWdlcyhjb25zdCBTaGFyZWRJbnZhbGlkYXRpb25N ZXNzYWdlICptc2dzLAogCQkJCQkJCQkJICBpbnQgbik7CiBleHRlcm4gdm9pZCBSZWNlaXZl U2hhcmVkSW52YWxpZE1lc3NhZ2VzKHZvaWQgKCppbnZhbEZ1bmN0aW9uKSAoU2hhcmVkSW52 YWxpZGF0aW9uTWVzc2FnZSAqbXNnKSwKIAkJCQkJCQkJCQkgdm9pZCAoKnJlc2V0RnVuY3Rp b24pICh2b2lkKSk7CiAKLS8qIHNpZ25hbCBoYW5kbGVyIGZvciBjYXRjaHVwIGV2ZW50cyAo UFJPQ1NJR19DQVRDSFVQX0lOVEVSUlVQVCkgKi8KLWV4dGVybiB2b2lkIEhhbmRsZUNhdGNo dXBJbnRlcnJ1cHQodm9pZCk7Ci0KIC8qCiAgKiBlbmFibGUvZGlzYWJsZSBwcm9jZXNzaW5n IG9mIGNhdGNodXAgZXZlbnRzIGRpcmVjdGx5IGZyb20gc2lnbmFsIGhhbmRsZXIuCiAgKiBU aGUgZW5hYmxlIHJvdXRpbmUgZmlyc3QgcGVyZm9ybXMgcHJvY2Vzc2luZyBvZiBhbnkgY2F0 Y2h1cCBldmVudHMgdGhhdApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS93YWl0 ZXZlbnRzZXQuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgKaW5kZXgg YjE4ZTQ4MTViZmMuLmM4ZjkzYjA0ZDdkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9y YWdlL3dhaXRldmVudHNldC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvd2FpdGV2ZW50 c2V0LmgKQEAgLTMsMTYgKzMsMTUgQEAKICAqIHdhaXRldmVudHNldC5oCiAgKgkJcHBvbGwo KSAvIHBzZWxlY3QoKSBsaWtlIGludGVyZmFjZSBmb3Igd2FpdGluZyBmb3IgZXZlbnRzCiAg KgotICogV2FpdEV2ZW50U2V0cyBhbGxvdyB0byB3YWl0IGZvciBsYXRjaGVzIGJlaW5nIHNl dCBhbmQgYWRkaXRpb25hbCBldmVudHMgLQorICogV2FpdEV2ZW50U2V0cyBhbGxvdyB0byB3 YWl0IGZvciBpbnRlcnJ1cHRzIGJlaW5nIHNldCBhbmQgYWRkaXRpb25hbCBldmVudHMgLQog ICogcG9zdG1hc3RlciBkeWluZyBhbmQgc29ja2V0IHJlYWRpbmVzcyBvZiBzZXZlcmFsIHNv Y2tldHMgY3VycmVudGx5IC0gYXQgdGhlCiAgKiBzYW1lIHRpbWUuICBPbiBtYW55IHBsYXRm b3JtcyB1c2luZyBhIGxvbmcgbGl2ZWQgZXZlbnQgc2V0IGlzIG1vcmUKLSAqIGVmZmljaWVu dCB0aGFuIHVzaW5nIFdhaXRMYXRjaCBvciBXYWl0TGF0Y2hPclNvY2tldC4KKyAqIGVmZmlj aWVudCB0aGFuIHVzaW5nIFdhaXRJbnRlcnJ1cHQgb3IgV2FpdEludGVycnVwdE9yU29ja2V0 LgogICoKLSAqIFdhaXRFdmVudFNldFdhaXQgaW5jbHVkZXMgYSBwcm92aXNpb24gZm9yIHRp bWVvdXRzICh3aGljaCBzaG91bGQgYmUgYXZvaWRlZAorICogV2FpdEludGVycnVwdCBpbmNs dWRlcyBhIHByb3Zpc2lvbiBmb3IgdGltZW91dHMgKHdoaWNoIHNob3VsZCBiZSBhdm9pZGVk CiAgKiB3aGVuIHBvc3NpYmxlLCBhcyB0aGV5IGluY3VyIGV4dHJhIG92ZXJoZWFkKSBhbmQg YSBwcm92aXNpb24gZm9yIHBvc3RtYXN0ZXIKICAqIGNoaWxkIHByb2Nlc3NlcyB0byB3YWtl IHVwIGltbWVkaWF0ZWx5IG9uIHBvc3RtYXN0ZXIgZGVhdGguICBTZWUKLSAqIHN0b3JhZ2Uv aXBjL3dhaXRldmVudHNldC5jIGZvciBkZXRhaWxlZCBzcGVjaWZpY2F0aW9ucyBmb3IgdGhl IGV4cG9ydGVkCi0gKiBmdW5jdGlvbnMuCisgKiBpcGMvaW50ZXJydXB0LmMgZm9yIGRldGFp bGVkIHNwZWNpZmljYXRpb25zIGZvciB0aGUgZXhwb3J0ZWQgZnVuY3Rpb25zLgogICoKICAq CiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKQEAgLTI1LDExICsyNCwxNCBAQAogI2lmbmRlZiBXQUlU RVZFTlRTRVRfSAogI2RlZmluZSBXQUlURVZFTlRTRVRfSAogCisvKiBkZWZpbmVkIGhlcmUg dG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jeSB0byBpbnRlcnJ1cHQuaCAqLwordHlwZWRl ZiB1aW50NjQgSW50ZXJydXB0TWFzazsKKwogLyoKLSAqIEJpdG1hc2tzIGZvciBldmVudHMg dGhhdCBtYXkgd2FrZS11cCBXYWl0TGF0Y2goKSwgV2FpdExhdGNoT3JTb2NrZXQoKSwgb3IK LSAqIFdhaXRFdmVudFNldFdhaXQoKS4KKyAqIEJpdG1hc2tzIGZvciBldmVudHMgdGhhdCBt YXkgd2FrZS11cCBXYWl0SW50ZXJydXB0KCksCisgKiBXYWl0SW50ZXJydXB0T3JTb2NrZXQo KSwgb3IgV2FpdEV2ZW50U2V0V2FpdCgpLgogICovCi0jZGVmaW5lIFdMX0xBVENIX1NFVAkJ ICgxIDw8IDApCisjZGVmaW5lIFdMX0lOVEVSUlVQVAkJICgxIDw8IDApCiAjZGVmaW5lIFdM X1NPQ0tFVF9SRUFEQUJMRQkgKDEgPDwgMSkKICNkZWZpbmUgV0xfU09DS0VUX1dSSVRFQUJM RSAgKDEgPDwgMikKICNkZWZpbmUgV0xfVElNRU9VVAkJCSAoMSA8PCAzKQkvKiBub3QgZm9y IFdhaXRFdmVudFNldFdhaXQoKSAqLwpAQCAtNjgsMzAgKzcwLDMyIEBAIHR5cGVkZWYgc3Ry dWN0IFdhaXRFdmVudAogLyogZm9yd2FyZCBkZWNsYXJhdGlvbnMgdG8gYXZvaWQgZXhwb3Np bmcgd2FpdGV2ZW50c2V0LmMgaW1wbGVtZW50YXRpb24gZGV0YWlscyAqLwogdHlwZWRlZiBz dHJ1Y3QgV2FpdEV2ZW50U2V0IFdhaXRFdmVudFNldDsKIAotc3RydWN0IExhdGNoOworc3Ry dWN0IFBHUFJPQzsKIHN0cnVjdCBSZXNvdXJjZU93bmVyRGF0YTsKIAogLyoKICAqIHByb3Rv dHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiB3YWl0ZXZlbnRzZXQuYwogICovCiBleHRlcm4gdm9p ZCBJbml0aWFsaXplV2FpdEV2ZW50U3VwcG9ydCh2b2lkKTsKKyNpZmRlZiBXSU4zMgorZXh0 ZXJuIEhBTkRMRSBDcmVhdGVTaGFyZWRXYWtldXBIYW5kbGUodm9pZCk7CisjZW5kaWYKIAog ZXh0ZXJuIFdhaXRFdmVudFNldCAqQ3JlYXRlV2FpdEV2ZW50U2V0KHN0cnVjdCBSZXNvdXJj ZU93bmVyRGF0YSAqcmVzb3duZXIsIGludCBuZXZlbnRzKTsKIGV4dGVybiB2b2lkIEZyZWVX YWl0RXZlbnRTZXQoV2FpdEV2ZW50U2V0ICpzZXQpOwogZXh0ZXJuIHZvaWQgRnJlZVdhaXRF dmVudFNldEFmdGVyRm9yayhXYWl0RXZlbnRTZXQgKnNldCk7CiBleHRlcm4gaW50CUFkZFdh aXRFdmVudFRvU2V0KFdhaXRFdmVudFNldCAqc2V0LCB1aW50MzIgZXZlbnRzLCBwZ3NvY2tl dCBmZCwKLQkJCQkJCQkgIHN0cnVjdCBMYXRjaCAqbGF0Y2gsIHZvaWQgKnVzZXJfZGF0YSk7 CisJCQkJCQkJICB1aW50NjQgaW50ZXJydXB0TWFzaywgdm9pZCAqdXNlcl9kYXRhKTsKIGV4 dGVybiB2b2lkIE1vZGlmeVdhaXRFdmVudChXYWl0RXZlbnRTZXQgKnNldCwgaW50IHBvcywg dWludDMyIGV2ZW50cywKLQkJCQkJCQlzdHJ1Y3QgTGF0Y2ggKmxhdGNoKTsKKwkJCQkJCQl1 aW50NjQgaW50ZXJydXB0TWFzayk7CiBleHRlcm4gaW50CVdhaXRFdmVudFNldFdhaXQoV2Fp dEV2ZW50U2V0ICpzZXQsIGxvbmcgdGltZW91dCwKIAkJCQkJCQkgV2FpdEV2ZW50ICpvY2N1 cnJlZF9ldmVudHMsIGludCBuZXZlbnRzLAogCQkJCQkJCSB1aW50MzIgd2FpdF9ldmVudF9p bmZvKTsKIGV4dGVybiBpbnQJR2V0TnVtUmVnaXN0ZXJlZFdhaXRFdmVudHMoV2FpdEV2ZW50 U2V0ICpzZXQpOwogZXh0ZXJuIGJvb2wgV2FpdEV2ZW50U2V0Q2FuUmVwb3J0Q2xvc2VkKHZv aWQpOwogCi0jaWZuZGVmIFdJTjMyCisvKiBsb3cgbGV2ZWwgZnVuY3Rpb25zIHVzZWQgdG8g aW1wbGVtZW50IFNlbmRJbnRlcnJ1cHQgKi8KIGV4dGVybiB2b2lkIFdha2V1cE15UHJvYyh2 b2lkKTsKLWV4dGVybiB2b2lkIFdha2V1cE90aGVyUHJvYyhpbnQgcGlkKTsKLSNlbmRpZgor ZXh0ZXJuIHZvaWQgV2FrZXVwT3RoZXJQcm9jKHN0cnVjdCBQR1BST0MgKnByb2MpOwogCiAj ZW5kaWYJCQkJCQkJLyogV0FJVEVWRU5UU0VUX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3Rjb3AvdGNvcHByb3QuaCBiL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaAppbmRl eCAwZDRhZWJmZDU0My4uNzdhYjk1MGVhZTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rj b3AvdGNvcHByb3QuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90LmgKQEAgLTY5 LDEzICs2OSw3IEBAIGV4dGVybiBMaXN0ICpwZ19wbGFuX3F1ZXJpZXMoTGlzdCAqcXVlcnl0 cmVlcywgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLAogCQkJCQkJCSBpbnQgY3Vyc29yT3B0 aW9ucywKIAkJCQkJCQkgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcyk7CiAKLWV4dGVybiB2 b2lkIGRpZShTSUdOQUxfQVJHUyk7Ci1wZ19ub3JldHVybiBleHRlcm4gdm9pZCBxdWlja2Rp ZShTSUdOQUxfQVJHUyk7Ci1leHRlcm4gdm9pZCBTdGF0ZW1lbnRDYW5jZWxIYW5kbGVyKFNJ R05BTF9BUkdTKTsKIHBnX25vcmV0dXJuIGV4dGVybiB2b2lkIEZsb2F0RXhjZXB0aW9uSGFu ZGxlcihTSUdOQUxfQVJHUyk7Ci1leHRlcm4gdm9pZCBIYW5kbGVSZWNvdmVyeUNvbmZsaWN0 SW50ZXJydXB0KHZvaWQpOwotZXh0ZXJuIHZvaWQgUHJvY2Vzc0NsaWVudFJlYWRJbnRlcnJ1 cHQoYm9vbCBibG9ja2VkKTsKLWV4dGVybiB2b2lkIFByb2Nlc3NDbGllbnRXcml0ZUludGVy cnVwdChib29sIGJsb2NrZWQpOwogCiBleHRlcm4gdm9pZCBwcm9jZXNzX3Bvc3RncmVzX3N3 aXRjaGVzKGludCBhcmdjLCBjaGFyICphcmd2W10sCiAJCQkJCQkJCQkgIEd1Y0NvbnRleHQg Y3R4LCBjb25zdCBjaGFyICoqZGJuYW1lKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0 aWxzL21lbXV0aWxzLmggYi9zcmMvaW5jbHVkZS91dGlscy9tZW11dGlscy5oCmluZGV4IDM4 MDM2YzdjNzAzLi44ZGRjYThhZGQ4NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMv bWVtdXRpbHMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9tZW11dGlscy5oCkBAIC0xMDEs NyArMTAxLDYgQEAgZXh0ZXJuIHZvaWQgTWVtb3J5Q29udGV4dENoZWNrKE1lbW9yeUNvbnRl eHQgY29udGV4dCk7CiAjZGVmaW5lIE1lbW9yeUNvbnRleHRDb3B5QW5kU2V0SWRlbnRpZmll cihjeHQsIGlkKSBcCiAJTWVtb3J5Q29udGV4dFNldElkZW50aWZpZXIoY3h0LCBNZW1vcnlD b250ZXh0U3RyZHVwKGN4dCwgaWQpKQogCi1leHRlcm4gdm9pZCBIYW5kbGVMb2dNZW1vcnlD b250ZXh0SW50ZXJydXB0KHZvaWQpOwogZXh0ZXJuIHZvaWQgUHJvY2Vzc0xvZ01lbW9yeUNv bnRleHRJbnRlcnJ1cHQodm9pZCk7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvcG9ydC9wZ3Ns ZWVwLmMgYi9zcmMvcG9ydC9wZ3NsZWVwLmMKaW5kZXggNGMzMWU1MDNlYjEuLjBiZDUwYmRi MjNmIDEwMDY0NAotLS0gYS9zcmMvcG9ydC9wZ3NsZWVwLmMKKysrIGIvc3JjL3BvcnQvcGdz bGVlcC5jCkBAIC0zMiwxMCArMzIsMTAgQEAKICAqCiAgKiBDQVVUSU9OOiBJdCdzIG5vdCBh IGdvb2QgaWRlYSB0byB1c2UgbG9uZyBzbGVlcHMgaW4gdGhlIGJhY2tlbmQuICBUaGV5IHdp bGwKICAqIHNpbGVudGx5IHJldHVybiBlYXJseSBpZiBhIHNpZ25hbCBpcyBjYXVnaHQsIGJ1 dCB0aGF0IGRvZXNuJ3QgaW5jbHVkZQotICogbGF0Y2hlcyBiZWluZyBzZXQgb24gbW9zdCBP U2VzLCBhbmQgZXZlbiBzaWduYWwgaGFuZGxlcnMgdGhhdCBzZXQgTXlMYXRjaAotICogbWln aHQgaGFwcGVuIHRvIHJ1biBiZWZvcmUgdGhlIHNsZWVwIGJlZ2lucywgYWxsb3dpbmcgdGhl IGZ1bGwgZGVsYXkuCi0gKiBCZXR0ZXIgcHJhY3RpY2UgaXMgdG8gdXNlIFdhaXRMYXRjaCgp IHdpdGggYSB0aW1lb3V0LCBzbyB0aGF0IGJhY2tlbmRzCi0gKiByZXNwb25kIHRvIGxhdGNo ZXMgYW5kIHNpZ25hbHMgcHJvbXB0bHkuCisgKiBpbnRlcnJ1cHRzIGJlaW5nIHJlY2VpdmVk IG9uIG1vc3QgT1NlcywgYW5kIGV2ZW4gc2lnbmFsIGhhbmRsZXJzIHRoYXQgcmFpc2UKKyAq IGFuIGludGVycnVwdCBtaWdodCBoYXBwZW4gdG8gcnVuIGJlZm9yZSB0aGUgc2xlZXAgYmVn aW5zLCBhbGxvd2luZyB0aGUgZnVsbAorICogZGVsYXkuICBCZXR0ZXIgcHJhY3RpY2UgaXMg dG8gdXNlIFdhaXRJbnRlcnJ1cHQoKSB3aXRoIGEgdGltZW91dCwgc28gdGhhdAorICogYmFj a2VuZHMgcmVzcG9uZCB0byBpbnRlcnJ1cHRzIGFuZCBzaWduYWxzIHByb21wdGx5LgogICov CiB2b2lkCiBwZ191c2xlZXAobG9uZyBtaWNyb3NlYykKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L2lzb2xhdGlvbi9pc29sYXRpb250ZXN0ZXIuYyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29s YXRpb250ZXN0ZXIuYwppbmRleCA0NDBjODc1YjhhYy4uZDU2OGU5MGMwNjQgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb250ZXN0ZXIuYworKysgYi9zcmMvdGVz dC9pc29sYXRpb24vaXNvbGF0aW9udGVzdGVyLmMKQEAgLTc2Miw3ICs3NjIsNyBAQCB0cnlf Y29tcGxldGVfc3RlcHMoVGVzdFNwZWMgKnRlc3RzcGVjLCBQZXJtdXRhdGlvblN0ZXAgKip3 YWl0aW5nLAogCXsKIAkJaW50CQkJdyA9IDA7CiAKLQkJLyogUmVzZXQgbGF0Y2g7IHdlIG9u bHkgY2FyZSBhYm91dCBub3RpY2VzIHJlY2VpdmVkIHdpdGhpbiBsb29wLiAqLworCQkvKiBS ZXNldCBmbGFnOyB3ZSBvbmx5IGNhcmUgYWJvdXQgbm90aWNlcyByZWNlaXZlZCB3aXRoaW4g bG9vcC4gKi8KIAkJYW55X25ld19ub3RpY2UgPSBmYWxzZTsKIAogCQkvKiBMaWtld2lzZSwg dGhlc2UgdmFyaWFibGVzIHJlc2V0IGZvciBlYWNoIHJldHJ5LiAqLwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NoZWNrc3Vtcy90ZXN0X2NoZWNrc3Vtcy5jIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2NoZWNrc3Vtcy90ZXN0X2NoZWNrc3Vtcy5jCmluZGV4IDYy MWNmNzg4ZGFkLi4xZTdiZGVlZjA2NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2NoZWNrc3Vtcy90ZXN0X2NoZWNrc3Vtcy5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9jaGVja3N1bXMvdGVzdF9jaGVja3N1bXMuYwpAQCAtMTUsNyArMTUsNiBAQAogI2lu Y2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJw b3N0bWFzdGVyL2RhdGFjaGVja3N1bV9zdGF0ZS5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0 Y2guaCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1 dGlscy93YWl0X2V2ZW50LmgiCiAKQEAgLTMyLDEwICszMSw3IEBAIGRjX2RlbGF5X2JhcnJp ZXIoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgdm9pZCAqcHJpdmF0ZV9kYXRhLCB2b2lkICph cmcpCiAJKHZvaWQpIG5hbWU7CiAJKHZvaWQpIHByaXZhdGVfZGF0YTsKIAotCSh2b2lkKSBX YWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBX TF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgKDMgKiAxMDAwKSwKLQkJCQkJIFdBSVRfRVZF TlRfUEdfU0xFRVApOworCXBnX3VzbGVlcCgzICogMTAwMCAqIDEwMDApOyAvKiAzIHNlY29u ZHMgKi8KIH0KIAogUEdfRlVOQ1RJT05fSU5GT19WMShkY3dfaW5qZWN0X2RlbGF5X2JhcnJp ZXIpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS9zZXR1cC5j IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS9zZXR1cC5jCmluZGV4IDI1OWMwYzgy NTNhLi5mOWYxN2JkNTY4YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3No bV9tcS9zZXR1cC5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvc2V0dXAu YwpAQCAtMTYsNyArMTYsNiBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRl ICJpcGMvaW50ZXJydXB0LmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi cGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtlci5oIgogI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgpAQCAtMTM2LDYgKzEzNSw3IEBAIHNldHVwX2R5bmFtaWNfc2hh cmVkX21lbW9yeShpbnQ2NCBxdWV1ZV9zaXplLCBpbnQgbndvcmtlcnMsCiAKIAkvKiBTZXQg dXAgdGhlIGhlYWRlciByZWdpb24uICovCiAJaGRyID0gc2htX3RvY19hbGxvY2F0ZSh0b2Ms IHNpemVvZih0ZXN0X3NobV9tcV9oZWFkZXIpKTsKKwloZHItPmxlYWRlcl9wcm9jX251bWJl ciA9IE15UHJvY051bWJlcjsKIAlTcGluTG9ja0luaXQoJmhkci0+bXV0ZXgpOwogCWhkci0+ d29ya2Vyc190b3RhbCA9IG53b3JrZXJzOwogCWhkci0+d29ya2Vyc19hdHRhY2hlZCA9IDA7 CkBAIC0yMjUsOCArMjI1LDYgQEAgc2V0dXBfYmFja2dyb3VuZF93b3JrZXJzKGludCBud29y a2VycywgZHNtX3NlZ21lbnQgKnNlZykKIAlzcHJpbnRmKHdvcmtlci5iZ3dfZnVuY3Rpb25f bmFtZSwgInRlc3Rfc2htX21xX21haW4iKTsKIAlzbnByaW50Zih3b3JrZXIuYmd3X3R5cGUs IEJHV19NQVhMRU4sICJ0ZXN0X3NobV9tcSIpOwogCXdvcmtlci5iZ3dfbWFpbl9hcmcgPSBV SW50MzJHZXREYXR1bShkc21fc2VnbWVudF9oYW5kbGUoc2VnKSk7Ci0JLyogc2V0IGJnd19u b3RpZnlfcGlkLCBzbyB3ZSBjYW4gZGV0ZWN0IGlmIHRoZSB3b3JrZXIgc3RvcHMgKi8KLQl3 b3JrZXIuYmd3X25vdGlmeV9waWQgPSBNeVByb2NQaWQ7CiAKIAkvKiBSZWdpc3RlciB0aGUg d29ya2Vycy4gKi8KIAlmb3IgKGkgPSAwOyBpIDwgbndvcmtlcnM7ICsraSkKQEAgLTI2Nyw2 ICsyNjUsOSBAQCB3YWl0X2Zvcl93b3JrZXJzX3RvX2JlY29tZV9yZWFkeSh3b3JrZXJfc3Rh dGUgKndzdGF0ZSwKIAl7CiAJCWludAkJCXdvcmtlcnNfcmVhZHk7CiAKKwkJLyogQ2xlYXIg dGhlIGludGVycnVwdCBmbGFnIHNvIHdlIGRvbid0IHNwaW4uICovCisJCUNsZWFySW50ZXJy dXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CisKIAkJLyogSWYgYWxsIHRoZSB3b3JrZXJz IGFyZSByZWFkeSwgd2UgaGF2ZSBzdWNjZWVkZWQuICovCiAJCVNwaW5Mb2NrQWNxdWlyZSgm aGRyLT5tdXRleCk7CiAJCXdvcmtlcnNfcmVhZHkgPSBoZHItPndvcmtlcnNfcmVhZHk7CkBA IC0yODksMTEgKzI5MCw5IEBAIHdhaXRfZm9yX3dvcmtlcnNfdG9fYmVjb21lX3JlYWR5KHdv cmtlcl9zdGF0ZSAqd3N0YXRlLAogCQkJd2VfYmd3b3JrZXJfc3RhcnR1cCA9IFdhaXRFdmVu dEV4dGVuc2lvbk5ldygiVGVzdFNobU1xQmdXb3JrZXJTdGFydHVwIik7CiAKIAkJLyogV2Fp dCB0byBiZSBzaWduYWxlZC4gKi8KLQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLCBXTF9M QVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAotCQkJCQkJIHdlX2Jnd29ya2Vy X3N0YXJ0dXApOwotCi0JCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGluLiAq LwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkodm9pZCkgV2FpdEludGVycnVwdChDaGVj a0ZvckludGVycnVwdHNNYXNrIHwgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJCQkJCSBX TF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJCSB3ZV9iZ3dv cmtlcl9zdGFydHVwKTsKIAogCQkvKiBBbiBpbnRlcnJ1cHQgbWF5IGhhdmUgb2NjdXJyZWQg d2hpbGUgd2Ugd2VyZSB3YWl0aW5nLiAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS90ZXN0LmMgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3Rlc3QuYwppbmRleCA5ZjQwMWQzMDE3Ni4uZGU0 MjBkOGEwNzYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvdGVz dC5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvdGVzdC5jCkBAIC0xNzIs NiArMTcyLDggQEAgdGVzdF9zaG1fbXFfcGlwZWxpbmVkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ ewogCQlib29sCQl3YWl0ID0gdHJ1ZTsKIAorCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRf V0FJVF9XQUtFVVApOworCiAJCS8qCiAJCSAqIElmIHdlIGhhdmVuJ3QgeWV0IHNlbnQgdGhl IG1lc3NhZ2UgdGhlIHJlcXVpc2l0ZSBudW1iZXIgb2YgdGltZXMsCiAJCSAqIHRyeSBhZ2Fp biB0byBzZW5kIGl0IG5vdy4gIE5vdGUgdGhhdCB3aGVuIHNobV9tcV9zZW5kKCkgcmV0dXJu cwpAQCAtMjM2LDEzICsyMzgsMTMgQEAgdGVzdF9zaG1fbXFfcGlwZWxpbmVkKFBHX0ZVTkNU SU9OX0FSR1MpCiAKIAkJCS8qCiAJCQkgKiBJZiB3ZSBtYWRlIG5vIHByb2dyZXNzLCB3YWl0 IGZvciBvbmUgb2YgdGhlIG90aGVyIHByb2Nlc3NlcyB0bwotCQkJICogd2hpY2ggd2UgYXJl IGNvbm5lY3RlZCB0byBzZXQgb3VyIGxhdGNoLCBpbmRpY2F0aW5nIHRoYXQgdGhleQotCQkJ ICogaGF2ZSByZWFkIG9yIHdyaXR0ZW4gZGF0YSBhbmQgdGhlcmVmb3JlIHRoZXJlIG1heSBu b3cgYmUgd29yawotCQkJICogZm9yIHVzIHRvIGRvLgorCQkJICogd2hpY2ggd2UgYXJlIGNv bm5lY3RlZCB0byBzZW5kIHVzIHRoZSBJTlRFUlJVUFRfV0FJVF9XQUtFVVAKKwkJCSAqIGlu dGVycnVwdCwgaW5kaWNhdGluZyB0aGF0IHRoZXkgaGF2ZSByZWFkIG9yIHdyaXR0ZW4gZGF0 YSBhbmQKKwkJCSAqIHRoZXJlZm9yZSB0aGVyZSBtYXkgbm93IGJlIHdvcmsgZm9yIHVzIHRv IGRvLgogCQkJICovCi0JCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NF VCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCi0JCQkJCQkJIHdlX21lc3NhZ2VfcXVldWUp OwotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KENo ZWNrRm9ySW50ZXJydXB0c01hc2sgfCBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsCisJCQkJCQkJ CSBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJCQkgd2Vf bWVzc2FnZV9xdWV1ZSk7CiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQl9CiAJfQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS90ZXN0X3NobV9tcS5o IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS90ZXN0X3NobV9tcS5oCmluZGV4IGI2 YTAyOTAyODljLi42YmIyMDExNjZiZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X3NobV9tcS90ZXN0X3NobV9tcS5oCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9z aG1fbXEvdGVzdF9zaG1fbXEuaApAQCAtMTUsNiArMTUsNyBAQAogI2RlZmluZSBURVNUX1NI TV9NUV9ICiAKICNpbmNsdWRlICJzdG9yYWdlL2RzbS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv cHJvY251bWJlci5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htX21xLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9zcGluLmgiCiAKQEAgLTI4LDYgKzI5LDggQEAKICAqLwogdHlwZWRlZiBzdHJ1 Y3QKIHsKKwlQcm9jTnVtYmVyCWxlYWRlcl9wcm9jX251bWJlcjsKKwogCXNsb2NrX3QJCW11 dGV4OwogCWludAkJCXdvcmtlcnNfdG90YWw7CiAJaW50CQkJd29ya2Vyc19hdHRhY2hlZDsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvd29ya2VyLmMgYi9z cmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3dvcmtlci5jCmluZGV4IDFiMjI1MTVlYzVj Li45OGFkNjFmYzgwMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9t cS93b3JrZXIuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3dvcmtlci5j CkBAIC0yMSw3ICsyMSw2IEBACiAKICNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5j bHVkZSAic3RvcmFnZS9pcGMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIK ICNpbmNsdWRlICJzdG9yYWdlL3NobV9tcS5oIgpAQCAtNTQsNyArNTMsNiBAQCB0ZXN0X3No bV9tcV9tYWluKERhdHVtIG1haW5fYXJnKQogCXNobV9tcV9oYW5kbGUgKm91dHFoOwogCXZv bGF0aWxlIHRlc3Rfc2htX21xX2hlYWRlciAqaGRyOwogCWludAkJCW15d29ya2VybnVtYmVy OwotCVBHUFJPQwkgICAqcmVnaXN0cmFudDsKIAogCS8qIFVuYmxvY2sgc2lnbmFscy4gIFRo ZSBzdGFuZGFyZCBzaWduYWwgaGFuZGxlcnMgYXJlIE9LIGZvciB1cy4gKi8KIAlCYWNrZ3Jv dW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKQEAgLTExOCwxMyArMTE2LDcgQEAgdGVzdF9z aG1fbXFfbWFpbihEYXR1bSBtYWluX2FyZykKIAlTcGluTG9ja0FjcXVpcmUoJmhkci0+bXV0 ZXgpOwogCSsraGRyLT53b3JrZXJzX3JlYWR5OwogCVNwaW5Mb2NrUmVsZWFzZSgmaGRyLT5t dXRleCk7Ci0JcmVnaXN0cmFudCA9IEJhY2tlbmRQaWRHZXRQcm9jKE15Qmd3b3JrZXJFbnRy eS0+Ymd3X25vdGlmeV9waWQpOwotCWlmIChyZWdpc3RyYW50ID09IE5VTEwpCi0JewotCQll bG9nKERFQlVHMSwgInJlZ2lzdHJhbnQgYmFja2VuZCBoYXMgZXhpdGVkIHByZW1hdHVyZWx5 Iik7Ci0JCXByb2NfZXhpdCgxKTsKLQl9Ci0JU2V0TGF0Y2goJnJlZ2lzdHJhbnQtPnByb2NM YXRjaCk7CisJU2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAsIGhkci0+bGVh ZGVyX3Byb2NfbnVtYmVyKTsKIAogCS8qIERvIHRoZSB3b3JrLiAqLwogCWNvcHlfbWVzc2Fn ZXMoaW5xaCwgb3V0cWgpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJf c3BpL3dvcmtlcl9zcGkuYyBiL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJf c3BpLmMKaW5kZXggYmQ5MDAyYmY0MWQuLjM1OTU1NWIxNmE2IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvd29ya2VyX3NwaS5jCisrKyBiL3NyYy90ZXN0L21v ZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMKQEAgLTQsOCArNCw4IEBACiAgKgkJU2Ft cGxlIGJhY2tncm91bmQgd29ya2VyIGNvZGUgdGhhdCBkZW1vbnN0cmF0ZXMgdmFyaW91cyBj b2RpbmcKICAqCQlwYXR0ZXJuczogZXN0YWJsaXNoaW5nIGEgZGF0YWJhc2UgY29ubmVjdGlv bjsgc3RhcnRpbmcgYW5kIGNvbW1pdHRpbmcKICAqCQl0cmFuc2FjdGlvbnM7IHVzaW5nIEdV QyB2YXJpYWJsZXMsIGFuZCBoZWVkaW5nIFNJR0hVUCB0byByZXJlYWQKLSAqCQl0aGUgY29u ZmlndXJhdGlvbiBmaWxlOyByZXBvcnRpbmcgdG8gcGdfc3RhdF9hY3Rpdml0eTsgdXNpbmcg dGhlCi0gKgkJcHJvY2VzcyBsYXRjaCB0byBzbGVlcCBhbmQgZXhpdCBpbiBjYXNlIG9mIHBv c3RtYXN0ZXIgZGVhdGguCisgKgkJdGhlIGNvbmZpZ3VyYXRpb24gZmlsZTsgcmVwb3J0aW5n IHRvIHBnX3N0YXRfYWN0aXZpdHk7IHVzaW5nCisgKgkJV2FpdEludGVycnVwdCB0byBzbGVl cCBhbmQgZXhpdCBpbiBjYXNlIG9mIHBvc3RtYXN0ZXIgZGVhdGguCiAgKgogICogVGhpcyBj b2RlIGNvbm5lY3RzIHRvIGEgZGF0YWJhc2UsIGNyZWF0ZXMgYSBzY2hlbWEgYW5kIHRhYmxl LCBhbmQgc3VtbWFyaXplcwogICogdGhlIG51bWJlcnMgY29udGFpbmVkIHRoZXJlaW4uICBU byBzZWUgaXQgd29ya2luZywgaW5zZXJ0IGFuIGluaXRpYWwgdmFsdWUKQEAgLTIzLDEwICsy Myw4IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogLyogVGhlc2UgYXJlIGFsd2F5cyBu ZWNlc3NhcnkgZm9yIGEgYmd3b3JrZXIgKi8KLSNpbmNsdWRlICJpcGMvc2lnbmFsX2hhbmRs ZXJzLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVw dC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3b3JrZXIuaCIKLSNpbmNsdWRlICJzdG9y YWdlL2xhdGNoLmgiCiAKIC8qIHRoZXNlIGhlYWRlcnMgYXJlIHVzZWQgYnkgdGhpcyBwYXJ0 aWN1bGFyIHdvcmtlcidzIGNvZGUgKi8KICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgpAQCAt MTU2LDExICsxNTQsMTAgQEAgd29ya2VyX3NwaV9tYWluKERhdHVtIG1haW5fYXJnKQogCXAg Kz0gc2l6ZW9mKE9pZCk7CiAJbWVtY3B5KCZmbGFncywgcCwgc2l6ZW9mKHVpbnQzMikpOwog Ci0JLyogRXN0YWJsaXNoIHNpZ25hbCBoYW5kbGVycyBiZWZvcmUgdW5ibG9ja2luZyBzaWdu YWxzLiAqLwotCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9h ZCk7Ci0JcHFzaWduYWwoU0lHVEVSTSwgZGllKTsKLQotCS8qIFdlJ3JlIG5vdyByZWFkeSB0 byByZWNlaXZlIHNpZ25hbHMgKi8KKwkvKgorCSAqIFRoZSBzdGFuZGFyZCBpbnRlcnJ1cHQg YW5kIHNpZ25hbCBoYW5kbGVycyBhcmUgT0sgZm9yIHVzOyB1bmJsb2NrCisJICogc2lnbmFs cy4KKwkgKi8KIAlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKIAogCS8qIENv bm5lY3QgdG8gb3VyIGRhdGFiYXNlICovCkBAIC0yMTQsMjYgKzIxMSwyNSBAQCB3b3JrZXJf c3BpX21haW4oRGF0dW0gbWFpbl9hcmcpCiAKIAkJLyoKIAkJICogQmFja2dyb3VuZCB3b3Jr ZXJzIG11c3RuJ3QgY2FsbCB1c2xlZXAoKSBvciBhbnkgZGlyZWN0IGVxdWl2YWxlbnQ6Ci0J CSAqIGluc3RlYWQsIHRoZXkgbWF5IHdhaXQgb24gdGhlaXIgcHJvY2VzcyBsYXRjaCwgd2hp Y2ggc2xlZXBzIGFzCi0JCSAqIG5lY2Vzc2FyeSwgYnV0IGlzIGF3YWtlbmVkIGlmIHBvc3Rt YXN0ZXIgZGllcy4gIFRoYXQgd2F5IHRoZQotCQkgKiBiYWNrZ3JvdW5kIHByb2Nlc3MgZ29l cyBhd2F5IGltbWVkaWF0ZWx5IGluIGFuIGVtZXJnZW5jeS4KKwkJICogaW5zdGVhZCwgdGhl eSBtYXkgdXNlIFdhaXRJbnRlcnJ1cHQsIHdoaWNoIHNsZWVwcyBhcyBuZWNlc3NhcnksIGJ1 dAorCQkgKiBpcyBhd2FrZW5lZCBpZiBwb3N0bWFzdGVyIGRpZXMuICBUaGF0IHdheSB0aGUg YmFja2dyb3VuZCBwcm9jZXNzCisJCSAqIGdvZXMgYXdheSBpbW1lZGlhdGVseSBpbiBhbiBl bWVyZ2VuY3kuCiAJCSAqLwotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkg V0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJ CQkgd29ya2VyX3NwaV9uYXB0aW1lICogMTAwMEwsCi0JCQkJCQkgd29ya2VyX3NwaV93YWl0 X2V2ZW50X21haW4pOwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkodm9pZCkgV2FpdElu dGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkJCQkgSU5URVJSVVBUX0NP TkZJR19SRUxPQUQsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9F WElUX09OX1BNX0RFQVRILAorCQkJCQkJCSB3b3JrZXJfc3BpX25hcHRpbWUgKiAxMDAwTCwK KwkJCQkJCQkgd29ya2VyX3NwaV93YWl0X2V2ZW50X21haW4pOwogCiAJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CiAKIAkJLyoKLQkJICogSW4gY2FzZSBvZiBhIFNJR0hVUCwganVzdCBy ZWxvYWQgdGhlIGNvbmZpZ3VyYXRpb24uCisJCSAqIFJlbG9hZCBjb25maWd1cmF0aW9uIGlm IHJlcXVlc3RlZC4gIFRoaXMgaXMgbm90IGRvbmUgYnkKKwkJICogQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKSBiZWNhdXNlIHdlIG9ubHkgd2FudCBpdCB0byBoYXBwZW4gaGVyZSBpbgorCQkg KiB0aGUgbWFpbiBsb29wLgogCQkgKi8KLQkJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCi0J CXsKLQkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwkJaWYgKENvbnN1bWVJbnRl cnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQogCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUo UEdDX1NJR0hVUCk7Ci0JCX0KIAogCQkvKgogCQkgKiBTdGFydCBhIHRyYW5zYWN0aW9uIG9u IHdoaWNoIHdlIGNhbiBydW4gcXVlcmllcy4gIE5vdGUgdGhhdCBlYWNoCkBAIC0zNjcsNyAr MzYzLDYgQEAgX1BHX2luaXQodm9pZCkKIAl3b3JrZXIuYmd3X3Jlc3RhcnRfdGltZSA9IEJH V19ORVZFUl9SRVNUQVJUOwogCXNwcmludGYod29ya2VyLmJnd19saWJyYXJ5X25hbWUsICJ3 b3JrZXJfc3BpIik7CiAJc3ByaW50Zih3b3JrZXIuYmd3X2Z1bmN0aW9uX25hbWUsICJ3b3Jr ZXJfc3BpX21haW4iKTsKLQl3b3JrZXIuYmd3X25vdGlmeV9waWQgPSAwOwogCiAJLyoKIAkg KiBOb3cgZmlsbCBpbiB3b3JrZXItc3BlY2lmaWMgZGF0YSwgYW5kIGRvIHRoZSBhY3R1YWwg cmVnaXN0cmF0aW9ucy4KQEAgLTQyMSw4ICs0MTYsNiBAQCB3b3JrZXJfc3BpX2xhdW5jaChQ R19GVU5DVElPTl9BUkdTKQogCXNucHJpbnRmKHdvcmtlci5iZ3dfbmFtZSwgQkdXX01BWExF TiwgIndvcmtlcl9zcGkgZHluYW1pYyB3b3JrZXIgJWQiLCBpKTsKIAlzbnByaW50Zih3b3Jr ZXIuYmd3X3R5cGUsIEJHV19NQVhMRU4sICJ3b3JrZXJfc3BpIGR5bmFtaWMiKTsKIAl3b3Jr ZXIuYmd3X21haW5fYXJnID0gSW50MzJHZXREYXR1bShpKTsKLQkvKiBzZXQgYmd3X25vdGlm eV9waWQgc28gdGhhdCB3ZSBjYW4gdXNlIFdhaXRGb3JCYWNrZ3JvdW5kV29ya2VyU3RhcnR1 cCAqLwotCXdvcmtlci5iZ3dfbm90aWZ5X3BpZCA9IE15UHJvY1BpZDsKIAogCS8qIGV4dHJh Y3QgZmxhZ3MsIGlmIGFueSAqLwogCW5kaW0gPSBBUlJfTkRJTShhcnIpOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbSBiL3NyYy90ZXN0 L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KaW5kZXggNTI5ZjQ5ZWZlZTEuLjYx MTQxNmI4OWMyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9D bHVzdGVyLnBtCisrKyBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIu cG0KQEAgLTMzNTUsNyArMzM1NSw3IEBAIHF1ZXJ5aW5nIHNvbWUgaW50ZXJtZWRpYXRlIHJl cGxpY2F0aW9uIG5vZGUgcmF0aGVyIHRoYW4gdGhlIHByaW1hcnkuCiAKIFdoZW4gdGhlIHN0 YW5kYnkgaXMgcGFzc2VkIGFzIGEgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlciBpbnN0YW5j ZSBhbmQgdGhlCiBtb2RlIGlzIHJlcGxheSwgd3JpdGUsIG9yIGZsdXNoLCB0aGUgZnVuY3Rp b24gdXNlcyBXQUlUIEZPUiBMU04gb24gdGhlCi1zdGFuZGJ5IGZvciBsYXRjaC1iYXNlZCB3 YWtldXAgaW5zdGVhZCBvZiBwb2xsaW5nLiAgSWYgdGhlIHN0YW5kYnkgaGFzIGJlZW4KK3N0 YW5kYnkgZm9yIGludGVycnVwdC1iYXNlZCB3YWtldXAgaW5zdGVhZCBvZiBwb2xsaW5nLiAg SWYgdGhlIHN0YW5kYnkgaGFzIGJlZW4KIHByb21vdGVkLCBpZiB0aGUgc2Vzc2lvbiBpcyBp bnRlcnJ1cHRlZCBieSBhIHJlY292ZXJ5IGNvbmZsaWN0LCBvciBpZiB0aGUKIHN0YW5kYnkg aXMgdW5yZWFjaGFibGUsIGl0IGZhbGxzIGJhY2sgdG8gcG9sbGluZy4KIApAQCAtMzQxNyw3 ICszNDE3LDcgQEAgc3ViIHdhaXRfZm9yX2NhdGNodXAKIAkjIC0gVGhlIG1vZGUgaXMgcmVw bGF5LCB3cml0ZSwgb3IgZmx1c2ggKG5vdCAnc2VudCcpCiAJIyAtIFRoZXJlIGlzIG5vIHNw YXJjNjQrZXh0NCBidWcKIAkjIFRoaXMgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBwb2xsaW5n IHBnX3N0YXRfcmVwbGljYXRpb24gb24gdGhlIHVwc3RyZWFtLAotCSMgYXMgV0FJVCBGT1Ig TFNOIHVzZXMgYSBsYXRjaC1iYXNlZCB3YWtldXAgbWVjaGFuaXNtLgorCSMgYXMgV0FJVCBG T1IgTFNOIHVzZXMgYSBpbnRlcnJ1cHQtYmFzZWQgd2FrZXVwIG1lY2hhbmlzbS4KIAkjCiAJ IyBXZSBza2lwIHRoZSBwZ19pc19pbl9yZWNvdmVyeSgpIHByZS1jaGVjayBhbmQganVzdCBh dHRlbXB0IFdBSVQgRk9SCiAJIyBMU04gZGlyZWN0bHkuICBJZiB0aGUgc3RhbmRieSB3YXMg cHJvbW90ZWQsIGl0IHJldHVybnMgJ25vdF9pbl9yZWNvdmVyeScKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlY292ZXJ5L3QvMDQ5X3dhaXRfZm9yX2xzbi5wbCBiL3NyYy90ZXN0L3JlY292 ZXJ5L3QvMDQ5X3dhaXRfZm9yX2xzbi5wbAppbmRleCBiYzIxNjA2NDcxNC4uYjgzYTM5Nzc2 ZjAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ5X3dhaXRfZm9yX2xzbi5w bAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0OV93YWl0X2Zvcl9sc24ucGwKQEAgLTg2 MCw3ICs4NjAsNyBAQCAkYXJjX3ByaW1hcnktPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVz JywKICAgb3IgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgV0FMIGFyY2hpdmluZyBvbiBh cmNfcHJpbWFyeSAocm91bmQgMikiOwogCiAjIFN0YXJ0IGJhY2tncm91bmQgd2FpdGVycy4g IFdpdGggcmVwbGF5IHBhdXNlZCwgdGFyZ2V0ID4gcmVwbGF5LCBzbyB0aGV5Ci0jIHdpbGwg c2xlZXAgb24gV2FpdExhdGNoLiAgVGhleSBjYW4gb25seSBiZSB3b2tlbiBieSB0aGUgcmVw bGF5LWxvb3AKKyMgd2lsbCBzbGVlcCBvbiBXYWl0SW50ZXJydXB0LiAgVGhleSBjYW4gb25s eSBiZSB3b2tlbiBieSB0aGUgcmVwbGF5LWxvb3AKICMgV2FpdExTTldha2V1cCBjYWxscy4K IG15ICRhcmNfd3JpdGVfc2Vzc2lvbiA9ICRhcmNfc3RhbmRieS0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycpOwogJGFyY193cml0ZV9zZXNzaW9uLT5xdWVyeV91bnRpbCgKZGlmZiAt LWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggYzVkYjZjYTY3MDUuLmNhNjYyMzRhZDMyIDEw MDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTM4MSw2ICsxMzgxLDcgQEAgSW50 ZWdlcgogSW50ZWdlclNldAogSW50ZXJuYWxEZWZhdWx0QUNMCiBJbnRlcm5hbEdyYW50CitJ bnRlcnJ1cHRNYXNrCiBJbnRlcnZhbAogSW50ZXJ2YWxBZ2dTdGF0ZQogSW50b0NsYXVzZQpA QCAtMTYxOSw3ICsxNjIwLDYgQEAgTFo0U3RhdGUKIExhYmVsUHJvdmlkZXIKIExhZ1RyYWNr ZXIKIExhcmdlT2JqZWN0RGVzYwotTGF0Y2gKIExhdW5jaGVyTGFzdFN0YXJ0VGltZXNFbnRy eQogTGVycEZ1bmMKIExleERlc2NyCkBAIC0yMDg4LDYgKzIwODgsNyBAQCBQTHlVbmljb2Rl X0Zyb21TdHJpbmdBbmRTaXplX3QKIFBMeV9lbG9nX2ltcGxfdAogUE1DaGlsZAogUE1DaGls ZFBvb2wKK1BNQ2hpbGRTbG90RGF0YQogUE1JTklEVU1QX0NBTExCQUNLX0lORk9STUFUSU9O CiBQTUlOSURVTVBfRVhDRVBUSU9OX0lORk9STUFUSU9OCiBQTUlOSURVTVBfVVNFUl9TVFJF QU1fSU5GT1JNQVRJT04KQEAgLTIyNDcsNiArMjI0OCw3IEBAIFBhdHRlcm5JbmZvQXJyYXkK IFBhdHRlcm5fUHJlZml4X1N0YXR1cwogUGF0dGVybl9UeXBlCiBQZW5kaW5nRnN5bmNFbnRy eQorUGVuZGluZ0ludGVycnVwdHMKIFBlbmRpbmdMaXN0ZW5BY3Rpb24KIFBlbmRpbmdMaXN0 ZW5FbnRyeQogUGVuZGluZ1JlbERlbGV0ZQotLSAKMi40Ny4zCgo= --------------WzeNeixNPsQ0a7SXozrFhDu6--