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.94.2) (envelope-from ) id 1urLPc-004aSc-QU for pgsql-hackers@arkaria.postgresql.org; Wed, 27 Aug 2025 19:02:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1urLPa-00H0NN-NR for pgsql-hackers@arkaria.postgresql.org; Wed, 27 Aug 2025 19:02:23 +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.94.2) (envelope-from ) id 1urLPa-00H0NE-3a for pgsql-hackers@lists.postgresql.org; Wed, 27 Aug 2025 19:02:22 +0000 Received: from mail-ed1-x52d.google.com ([2a00:1450:4864:20::52d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1urLPT-002BnT-1g for pgsql-hackers@lists.postgresql.org; Wed, 27 Aug 2025 19:02:22 +0000 Received: by mail-ed1-x52d.google.com with SMTP id 4fb4d7f45d1cf-6188b7550c0so201631a12.2 for ; Wed, 27 Aug 2025 12:02:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756321334; x=1756926134; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=s2QAgLteschLs1CaiEl0t5ShfQhDA55mTZZW24oNqgM=; b=M4TXp9S/kf2lwAspThsWGbcuj7GsKBwNbFFTp7ZY/TjjgZk24bfEJDxoUWk7OHDPnR Q6j4/ra450Hjiq6Gphlmn/5KWZGpO7hNvzX2eJc1PBdMKnBH/fBi24PlRF3OQd1XhM2x PGFJ+7h3FogMR0nUfnHe/ST4/R3ZfHXsxXpfge+b5J9vJU/a6TW5SoeLtAFpXnkBZIOR JPRJhxGc39u3Ll6JqO+Ylf+syaxVDRF6HAbn+wXReOU4xfP0ZFQFHtLmxqTqSEn9emTX 9cOG4JE8YqSbz8/8JNM52wH4TPpON7XoUDjoOyr7tmVUTiLzKW7JjXbeWp9y+bvJW4hk OMDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756321334; x=1756926134; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=s2QAgLteschLs1CaiEl0t5ShfQhDA55mTZZW24oNqgM=; b=oCCb0jl8+70m6Clhy+GRXPiIu1jHyrb4ydNRBfriF683WF8Sjl53X7pOg97kSLXMkV PXZznejHtWjtXghz30WkueOUUpxyM9idVRLC8lUnbCDmyc+ku/J276jQvRr+xAW0f+PX IzoFaEkg/36cCVFDGhubpPph2+PGWLuTy5FUJCOIC2tX0tqq/B4TC0Dm+4zD61yuGqiT d6yICNuIPO3sBMBaUxmdtlTysSQYaDZHPKDqz0tQFSC4Hum3h4RAlGjlBWxbztOjuJOr TWPBB9XeIi/O916S/iXASlhFgdOt9BnQG5OFuacS8os8liGfeMou13MNuw/dlSeHakym KXug== X-Forwarded-Encrypted: i=1; AJvYcCXnOjyYg+V8lFGfsqPLgFEyI/ADnGqonX7kcQeRc+WYJzax06E30F8adCqLBNZsk8qIsVlXxST6fpVmKGw9@lists.postgresql.org X-Gm-Message-State: AOJu0YxRXyfSgYnGD0Lays+3dv3ri3VuFaxKaSaKb2f8n7sa2I8YWNnO fzLgadAC8sIXfmzt9sU+47eHiab8pQfi7fdYrcsIzYzGAC9vT/eV6hxAqUD1Rv2CWLjM98EdFkD S+HEPGJOHyw9ofTPPEQmWy9xTLSZ2rTQ= X-Gm-Gg: ASbGncvljWgdRGri9ILZjVdNGUEORUtBQKB0gi9Kl7pvmH5YBwVW29mPLDFLKmO6r+8 w3JI6C9G4TYe9tb+0niku/Txw6prOtDGH6pW3KbEI8nEW9iHXt65s+fg1L/Vp8m+ef9ZNSba6j4 JQDyEeLZlOyvbs+19zCIu4itkHUXnYwECPmXDy9XErx1CGQSZClPcYiqn+Fta4bp+wPN2zOL7fk jPFDCTzEjWt+xl1xQ== X-Google-Smtp-Source: AGHT+IHLFlIw7C6Ba4oUAKBGTqhtetN/WQT9hgmniYbRXvhqXF17tRcpttIsuMa8y8TXWfJVB8nU+/ZrHurEET6OJGI= X-Received: by 2002:a05:6402:44d2:b0:618:19d2:7251 with SMTP id 4fb4d7f45d1cf-61c1b3d8dfdmr14709048a12.10.1756321333789; Wed, 27 Aug 2025 12:02:13 -0700 (PDT) MIME-Version: 1.0 References: <87DD95AA-274F-4F4F-BAD9-7738E5B1F905@yandex-team.ru> In-Reply-To: From: Melanie Plageman Date: Wed, 27 Aug 2025 15:02:01 -0400 X-Gm-Features: Ac12FXwDQsvCMlA1HDoNRW4BrCb9tRGovy8fmz3JIQNmWLBWW59bWfO5Lzz72YU Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Kirill Reshke Cc: Andrey Borodin , PostgreSQL Hackers , Andres Freund , Robert Haas Content-Type: multipart/mixed; boundary="00000000000036c732063d5d6d9d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000036c732063d5d6d9d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks for the review! Updates are in attached v7. One note on 0022 in the set, which sets pd_prune_xid on insert: the recently added index-killtuples isolation test was failing with this patch applied. With the patch, the "access" step reports more heap page hits than before. After some analysis, it seems one of the heap pages in kill_prior_tuples table is now being pruned in an earlier step. Somehow this leads to 4 hits counted instead of 3 (even though there are only 4 blocks in the relation). I recall Bertrand mentioning something in some other thread about hits being double counted with AIO reads, so I'm going to try and go dig that up. But, for now, I've modified the test -- I believe the patch is only revealing an issue with instrumentation, not causing a bug. On Tue, Aug 26, 2025 at 5:58=E2=80=AFAM Kirill Reshke wrote: > > visibilitymap_set_vmbyte is introduced in 0001 and removed in 0012. > This is strange to me, maybe we can avoid visibilitymap_set_vmbyte in > first place? The reason for this is that in the earlier patch I introduce visibilitymap_set_vmbyte() for one user while other users still use visibilitymap_set(). But, by the end of the set, all users use visibillitymap_set_vmbyte(). So I think it makes most sense for it to be named visibilitymap_set() at that point. Until all users are committed, the two functions both have to exist and need different names. > In 0001: > should we add "Assert(LWLockHeldByMeInMode(BufferDescriptorGetContentLock= (bufHdr), > LW_EXCLUSIVE));" in visibilitymap_set_vmbyte? I don't want any operations on the heap buffer (including asserts) in visibilitymap_set_vmbyte(). The heap block is only provided to look up the VM bits. I think your idea is a good one for the existing visibilitymap_set(), though, so I've added a new patch to the set (0002) which does this. I also added a similar assertion for the vmbuffer to visibilitymap_set_vmbyte(). > Also here `Assert(visibilitymap_pin_ok(BufferGetBlockNumber(buffer), > vmbuffer));` can be beneficial: I had omitted this because the same logic is checked inside of visiblitymap_set_vmbyte() with an error occurring if conditions are not met. However, since the same is true in visibilitymap_set() and heap_multi_insert() still asserted visiblitymap_pin_ok(), I've added it back to my patch set. > in heap_xlog_multi_insert: > + > + visibilitymap_pin(reln, blkno, &vmbuffer); > + visibilitymap_set_vmbyte(....) > > Do we need to pin vmbuffer here? Looks like > XLogReadBufferForRedoExtended already pins vmbuffer. I verified this > with CheckBufferIsPinnedOnce(vmbuffer) just before visibilitymap_pin > and COPY ... WITH (FREEZE true) test. I thought the reason visibilitymap_set() did it was that it was possible for the block of the VM corresponding to the block of the heap to be different during recovery than it was when emitting the record, and thus we needed the part of visiblitymap_pin() that released the old vmbuffer and got the new one corresponding to the heap block. I can't quite think of how this could happen though. Assuming it can't happen, then we can get rid of visiblitymap_pin() (and add visibilitymap_pin_ok()) in both visiblitymap_set_vmbyte() and visibilitymap_set(). I've done this to visibilitymap_set() in a separate patch 0001. I would like other opinions/confirmation that the block of the VM corresponding to the heap block cannot differ during recovery from that what it was when the record was emitted during normal operation, though. > > +#ifdef TRACE_VISIBILITYMAP > > + elog(DEBUG1, "vm_set %s %d", RelationGetRelationName(rel), heapBlk); > > +#endif > > I can see this merely copy-pasted from visibilitymap_set, but maybe > display "flags" also? Done in attached. > 4) visibilitymap_set receives XLogRecPtr recptr parameters, which is > set to WAL record lsn during recovery and to InvalidXLogRecPtr > otherwise. visibilitymap_set manages VM page LSN bases on this recptr > value (inside function logic). visibilitymap_set_vmbyte behaves > vise-versa and makes its caller responsible for page LSN management. > Maybe we should keep these two functions akin to each other? So, with visibilitymap_set_vmbyte(), the whole idea is to just update the VM and then leave the WAL logging and other changes to the caller (like marking the buffer dirty, setting the page LSN, etc). The series of operations needed to make a persistent change are up to the caller. visibilitymap_set() is meant to just make sure that the correct bits in the VM are set for the given heap block. I looked at ways of making the current visibilitymap_set() API cleaner -- like setting the heap page LSN with the VM recptr in the caller of visibilitymap_set() instead. There wasn't a way of doing it that seemed like enough of an improvement to merit the change. Not to mention, the goal of the patchset is to remove the current visibilitymap_set(), so I'm not too worried about parity between the two functions. They may coexist for awhile, but hopefully today's visibilitymap_set() will eventually be removed. - Melanie --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0005-Eliminate-xl_heap_visible-from-vacuum-phase-III.patch" Content-Disposition: attachment; filename="v7-0005-Eliminate-xl_heap_visible-from-vacuum-phase-III.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84bs4 RnJvbSBiOTgwZmMzNzdhNjZkMjhhY2FmMTJhMjE3ZTBmY2Q0OGE0MjJjYTY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQyOjEzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAwNS8yMl0gRWxpbWluYXRlIHhsX2hlYXBfdmlzaWJsZSBmcm9tIHZhY3V1bSBwaGFz ZSBJSUkKCkluc3RlYWQgb2YgZW1pdHRpbmcgYSBzZXBhcmF0ZSB4bF9oZWFwX3Zpc2libGUgcmVj b3JkIGZvciBlYWNoIHBhZ2UgdGhhdAppcyByZW5kZXJlZCBhbGwtdmlzaWJsZSBieSB2YWN1dW0n cyB0aGlyZCBwaGFzZSwgaW5jbHVkZSB0aGUgdXBkYXRlcyB0bwp0aGUgVk0gaW4gdGhlIGFscmVh ZHkgZW1pdHRlZCB4bF9oZWFwX3BydW5lIHJlY29yZC4KCkF1dGhvcjogTWVsYW5pZSBQbGFnZW1h biA8bWVsYW5pZXBsYWdlbWFuQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2Ug PHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20v ZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1WN1NPTHhkSzkt ZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hs b2cuYyAgfCAxNDMgKysrKysrKysrKysrKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYyAgICB8ICA0OCArKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jICAgfCAxNDkgKysrKysrKysrKysrKysrKystLS0tLS0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgfCAgMTMgKystCiBzcmMvaW5jbHVkZS9h Y2Nlc3MvaGVhcGFtLmggICAgICAgICAgICB8ICAgOSArKwogc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbV94bG9nLmggICAgICAgfCAgIDcgKy0KIDYgZmlsZXMgY2hhbmdlZCwgMzAwIGluc2VydGlv bnMoKyksIDY5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5j CmluZGV4IGNmNDM3YjE0ZWViLi4wNWRjZTgyOWVhZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jCkBAIC0zNSw3ICszNSw4IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExv Z1JlYWRlclN0YXRlICpyZWNvcmQpCiAJQnVmZmVyCQlidWZmZXI7CiAJUmVsRmlsZUxvY2F0b3Ig cmxvY2F0b3I7CiAJQmxvY2tOdW1iZXIgYmxrbm87Ci0JWExvZ1JlZG9BY3Rpb24gYWN0aW9uOwor CUJ1ZmZlcgkJdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOworCXVpbnQ4CQl2bWZsYWdzID0gMDsK IAogCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybG9jYXRvciwgTlVMTCwgJmJsa25v KTsKIAltZW1jcHkoJnhscmVjLCBtYWluZGF0YXB0ciwgU2l6ZU9mSGVhcFBydW5lKTsKQEAgLTUx LDEwICs1MiwxNSBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVj b3JkKQogCQkgICAoeGxyZWMuZmxhZ3MgJiAoWExIUF9IQVNfUkVESVJFQ1RJT05TIHwgWExIUF9I QVNfREVBRF9JVEVNUykpID09IDApOwogCiAJLyoKLQkgKiBXZSBhcmUgYWJvdXQgdG8gcmVtb3Zl IGFuZC9vciBmcmVlemUgdHVwbGVzLiAgSW4gSG90IFN0YW5kYnkgbW9kZSwKLQkgKiBlbnN1cmUg dGhhdCB0aGVyZSBhcmUgbm8gcXVlcmllcyBydW5uaW5nIGZvciB3aGljaCB0aGUgcmVtb3ZlZCB0 dXBsZXMKLQkgKiBhcmUgc3RpbGwgdmlzaWJsZSBvciB3aGljaCBzdGlsbCBjb25zaWRlciB0aGUg ZnJvemVuIHhpZHMgYXMgcnVubmluZy4KLQkgKiBUaGUgY29uZmxpY3QgaG9yaXpvbiBYSUQgY29t ZXMgYWZ0ZXIgeGxfaGVhcF9wcnVuZS4KKwkgKiBBZnRlciB4bF9oZWFwX3BydW5lIGlzIHRoZSBv cHRpb25hbCBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uLgorCSAqCisJICogSW4gSG90IFN0YW5k YnkgbW9kZSwgd2UgbXVzdCBlbnN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gcnVubmluZyBxdWVyaWVz CisJICogd2hpY2ggd291bGQgY29uZmxpY3Qgd2l0aCB0aGUgY2hhbmdlcyBpbiB0aGlzIHJlY29y ZC4gSWYgcHJ1bmluZywgdGhhdAorCSAqIG1lYW5zIHdlIGNhbm5vdCByZW1vdmUgdHVwbGVzIHN0 aWxsIHZpc2libGUgdG8gdHJhbnNhY3Rpb25zIG9uIHRoZQorCSAqIHN0YW5kYnkuIElmIGZyZWV6 aW5nLCB0aGF0IG1lYW5zIHdlIGNhbm5vdCBmcmVlemUgdHVwbGVzIHdpdGggeGlkcyB0aGF0CisJ ICogYXJlIHN0aWxsIGNvbnNpZGVyZWQgcnVubmluZyBvbiB0aGUgc3RhbmRieS4gQW5kIGZvciBz ZXR0aW5nIHRoZSBWTSwgd2UKKwkgKiBjYW5ub3QgZG8gc28gaWYgdGhlIHBhZ2UgaXNuJ3QgYWxs LXZpc2libGUgdG8gYWxsIHRyYW5zYWN0aW9ucyBvbiB0aGUKKwkgKiBzdGFuZGJ5LgogCSAqLwog CWlmICgoeGxyZWMuZmxhZ3MgJiBYTEhQX0hBU19DT05GTElDVF9IT1JJWk9OKSAhPSAwKQogCXsK QEAgLTcwLDEzICs3NiwyOSBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCQkJCQkJCQkJCQkJcmxvY2F0b3IpOwogCX0KIAorCS8qIE5leHQgYXJlIHRo ZSBvcHRpb25hbGx5IGluY2x1ZGVkIHZtZmxhZ3MuIENvcHkgdGhlbSBvdXQgZm9yIGxhdGVyIHVz ZS4gKi8KKwlpZiAoKHhscmVjLmZsYWdzICYgWExIUF9IQVNfVk1GTEFHUykgIT0gMCkKKwl7CisJ CS8qIG1lbWNweSBiZWNhdXNlIHZtZmxhZ3MgaXMgc3RvcmVkIHVuYWxpZ25lZCAqLworCQltZW1j cHkoJnZtZmxhZ3MsIG1haW5kYXRhcHRyLCBzaXplb2YodWludDgpKTsKKwkJbWFpbmRhdGFwdHIg Kz0gc2l6ZW9mKHVpbnQ4KTsKKworCQkvKgorCQkgKiBXZSBkb24ndCBzZXQgVklTSUJJTElUWU1B UF9YTE9HX0NBVEFMT0dfUkVMIGluIHRoZSBjb21iaW5lZCByZWNvcmQKKwkJICogYmVjYXVzZSB3 ZSBhbHJlYWR5IGhhdmUgWExIUF9JU19DQVRBTE9HX1JFTC4KKwkJICovCisJCUFzc2VydCgodm1m bGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgPT0gdm1mbGFncyk7CisJCS8qIE11c3Qg bmV2ZXIgc2V0IGFsbF9mcm96ZW4gYml0IHdpdGhvdXQgYWxzbyBzZXR0aW5nIGFsbF92aXNpYmxl IGJpdCAqLworCQlBc3NlcnQodm1mbGFncyAhPSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOwor CX0KKwogCS8qCi0JICogSWYgd2UgaGF2ZSBhIGZ1bGwtcGFnZSBpbWFnZSwgcmVzdG9yZSBpdCBh bmQgd2UncmUgZG9uZS4KKwkgKiBJZiB3ZSBoYXZlIGEgZnVsbC1wYWdlIGltYWdlIG9mIHRoZSBo ZWFwIGJsb2NrLCByZXN0b3JlIGl0IGFuZCB3ZSdyZQorCSAqIGRvbmUgd2l0aCB0aGUgaGVhcCBi bG9jay4KIAkgKi8KLQlhY3Rpb24gPSBYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNv cmQsIDAsIFJCTV9OT1JNQUwsCi0JCQkJCQkJCQkJICAgKHhscmVjLmZsYWdzICYgWExIUF9DTEVB TlVQX0xPQ0spICE9IDAsCi0JCQkJCQkJCQkJICAgJmJ1ZmZlcik7Ci0JaWYgKGFjdGlvbiA9PSBC TEtfTkVFRFNfUkVETykKKwlpZiAoWExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQocmVjb3Jk LCAwLCBSQk1fTk9STUFMLAorCQkJCQkJCQkJICAoeGxyZWMuZmxhZ3MgJiBYTEhQX0NMRUFOVVBf TE9DSykgIT0gMCwKKwkJCQkJCQkJCSAgJmJ1ZmZlcikgPT0gQkxLX05FRURTX1JFRE8pCiAJewog CQlQYWdlCQlwYWdlID0gKFBhZ2UpIEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAkJT2Zmc2V0TnVt YmVyICpyZWRpcmVjdGVkOwpAQCAtODksNiArMTExLDkgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6 ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJU2l6ZQkJZGF0YWxlbjsKIAkJeGxocF9mcmVl emVfcGxhbiAqcGxhbnM7CiAJCU9mZnNldE51bWJlciAqZnJ6X29mZnNldHM7CisJCWJvb2wJCWRv X3BydW5lOworCQlib29sCQltYXJrX2J1ZmZlcl9kaXJ0eTsKKwkJYm9vbAkJc2V0X2hlYXBfbHNu OwogCQljaGFyCSAgICpkYXRhcHRyID0gWExvZ1JlY0dldEJsb2NrRGF0YShyZWNvcmQsIDAsICZk YXRhbGVuKTsKIAogCQloZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShkYXRh cHRyLCB4bHJlYy5mbGFncywKQEAgLTk3LDExICsxMjIsMTggQEAgaGVhcF94bG9nX3BydW5lX2Zy ZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJCQkJCQkJCQkJICAgJm5kZWFkLCAmbm93 ZGVhZCwKIAkJCQkJCQkJCQkJICAgJm51bnVzZWQsICZub3d1bnVzZWQpOwogCisJCWRvX3BydW5l ID0gbnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMDsKKwkJc2V0X2hl YXBfbHNuID0gbWFya19idWZmZXJfZGlydHkgPSBkb19wcnVuZSB8fCBucGxhbnMgPiAwOworCisJ CS8qIEVuc3VyZSB0aGUgcmVjb3JkIGRvZXMgc29tZXRoaW5nICovCisJCUFzc2VydChkb19wcnVu ZSB8fCBucGxhbnMgPiAwIHx8CisJCQkgICB2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9C SVRTKTsKKwogCQkvKgogCQkgKiBVcGRhdGUgYWxsIGxpbmUgcG9pbnRlcnMgcGVyIHRoZSByZWNv cmQsIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbgogCQkgKiBpZiBuZWVkZWQuCiAJCSAqLwotCQlp ZiAobnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMCkKKwkJaWYgKGRv X3BydW5lKQogCQkJaGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUoYnVmZmVyLAogCQkJCQkJCQkJKHhs cmVjLmZsYWdzICYgWExIUF9DTEVBTlVQX0xPQ0spID09IDAsCiAJCQkJCQkJCQlyZWRpcmVjdGVk LCBucmVkaXJlY3RlZCwKQEAgLTEzOCwyNiArMTcwLDcyIEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVl emUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCS8qIFRoZXJlIHNob3VsZCBiZSBubyBtb3Jl IGRhdGEgKi8KIAkJQXNzZXJ0KChjaGFyICopIGZyel9vZmZzZXRzID09IGRhdGFwdHIgKyBkYXRh bGVuKTsKIAorCQlBc3NlcnQoQnVmZmVySXNWYWxpZChidWZmZXIpICYmCisJCQkgICBCdWZmZXJH ZXRCbG9ja051bWJlcihidWZmZXIpID09IGJsa25vKTsKKworCQkvKgorCQkgKiBOb3cgc2V0IFBE X0FMTF9WSVNJQkxFLCBpZiByZXF1aXJlZC4gV2UnbGwgb25seSBkbyB0aGlzIGlmIHdlIGFyZQor CQkgKiBhbHNvIGdvaW5nIHRvIHNldCBiaXRzIGluIHRoZSBWTSBsYXRlci4KKwkJICoKKwkJICog V2UgbXVzdCBuZXZlciBlbmQgdXAgd2l0aCB0aGUgVk0gYml0IHNldCBhbmQgdGhlIHBhZ2UtbGV2 ZWwKKwkJICogUERfQUxMX1ZJU0lCTEUgYml0IGNsZWFyLiBJZiB0aGF0IHdlcmUgdG8gb2NjdXIs IGEgc3Vic2VxdWVudCBwYWdlCisJCSAqIG1vZGlmaWNhdGlvbiB3b3VsZCBmYWlsIHRvIGNsZWFy IHRoZSBWTSBiaXQuCisJCSAqLworCQlpZiAoKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElE X0JJVFMpICYmICFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQorCQl7CisJCQlQYWdlU2V0QWxsVmlz aWJsZShwYWdlKTsKKworCQkJLyoKKwkJCSAqIElmIHRoZSBvbmx5IGNoYW5nZSB0byB0aGUgaGVh cCBwYWdlIGlzIHNldHRpbmcgUERfQUxMX1ZJU0lCTEUsCisJCQkgKiB3ZSBjYW4gYXZvaWQgc2V0 dGluZyB0aGUgcGFnZSBMU04gdW5sZXNzIGNoZWNrc3VtcyBvcgorCQkJICogd2FsX2xvZ19oaW50 cyBhcmUgZW5hYmxlZC4KKwkJCSAqLworCQkJc2V0X2hlYXBfbHNuID0gWExvZ0hpbnRCaXRJc05l ZWRlZCgpID8gdHJ1ZSA6IHNldF9oZWFwX2xzbjsKKwkJCW1hcmtfYnVmZmVyX2RpcnR5ID0gdHJ1 ZTsKKwkJfQorCiAJCS8qCiAJCSAqIE5vdGU6IHdlIGRvbid0IHdvcnJ5IGFib3V0IHVwZGF0aW5n IHRoZSBwYWdlJ3MgcHJ1bmFiaWxpdHkgaGludHMuCiAJCSAqIEF0IHdvcnN0IHRoaXMgd2lsbCBj YXVzZSBhbiBleHRyYSBwcnVuZSBjeWNsZSB0byBvY2N1ciBzb29uLgogCQkgKi8KIAotCQlQYWdl U2V0TFNOKHBhZ2UsIGxzbik7Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOworCQlpZiAobWFy a19idWZmZXJfZGlydHkpCisJCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKwkJaWYgKHNldF9o ZWFwX2xzbikKKwkJCVBhZ2VTZXRMU04ocGFnZSwgbHNuKTsKIAl9CiAKIAkvKgotCSAqIElmIHdl IHJlbGVhc2VkIGFueSBzcGFjZSBvciBsaW5lIHBvaW50ZXJzLCB1cGRhdGUgdGhlIGZyZWUgc3Bh Y2UgbWFwLgorCSAqIElmIHdlIHJlbGVhc2VkIGFueSBzcGFjZSBvciBsaW5lIHBvaW50ZXJzIG9y IHdpbGwgYmUgc2V0dGluZyBhIHBhZ2UgaW4KKwkgKiB0aGUgdmlzaWJpbGl0eSBtYXAsIHVwZGF0 ZSB0aGUgZnJlZSBzcGFjZSBtYXAuCisJICoKKwkgKiBFdmVuIGlmIHdlIGFyZSBqdXN0IHVwZGF0 aW5nIHRoZSBWTSAoYW5kIHRodXMgbm90IGZyZWVpbmcgdXAgYW55CisJICogc3BhY2UpLCB3ZSds bCBzdGlsbCB1cGRhdGUgdGhlIEZTTSBmb3IgdGhpcyBwYWdlLiBTaW5jZSBGU00gaXMgbm90CisJ ICogV0FMLWxvZ2dlZCBhbmQgb25seSB1cGRhdGVkIGhldXJpc3RpY2FsbHksIGl0IGVhc2lseSBi ZWNvbWVzIHN0YWxlIGluCisJICogc3RhbmRieXMuICBJZiB0aGUgc3RhbmRieSBpcyBsYXRlciBw cm9tb3RlZCBhbmQgcnVucyBWQUNVVU0sIGl0IHdpbGwKKwkgKiBza2lwIHVwZGF0aW5nIGluZGl2 aWR1YWwgZnJlZSBzcGFjZSBmaWd1cmVzIGZvciBwYWdlcyB0aGF0IGJlY2FtZQorCSAqIGFsbC12 aXNpYmxlIChvciBhbGwtZnJvemVuLCBkZXBlbmRpbmcgb24gdGhlIHZhY3V1bSBtb2RlLCkgd2hp Y2ggaXMKKwkgKiB0cm91Ymxlc29tZSB3aGVuIEZyZWVTcGFjZU1hcFZhY3V1bSBwcm9wYWdhdGVz IHRvbyBvcHRpbWlzdGljIGZyZWUKKwkgKiBzcGFjZSB2YWx1ZXMgdG8gdXBwZXIgRlNNIGxheWVy czsgbGF0ZXIgaW5zZXJ0ZXJzIHRyeSB0byB1c2Ugc3VjaCBwYWdlcworCSAqIG9ubHkgdG8gZmlu ZCBvdXQgdGhhdCB0aGV5IGFyZSB1bnVzYWJsZS4gIFRoaXMgY2FuIGNhdXNlIGxvbmcgc3RhbGxz CisJICogd2hlbiB0aGVyZSBhcmUgbWFueSBzdWNoIHBhZ2VzLgorCSAqCisJICogRm9yZXN0YWxs IHRob3NlIHByb2JsZW1zIGJ5IHVwZGF0aW5nIEZTTSdzIGlkZWEgYWJvdXQgYSBwYWdlIHRoYXQg aXMKKwkgKiBiZWNvbWluZyBhbGwtdmlzaWJsZSBvciBhbGwtZnJvemVuLgogCSAqCiAJICogRG8g dGhpcyByZWdhcmRsZXNzIG9mIGEgZnVsbC1wYWdlIGltYWdlIGJlaW5nIGFwcGxpZWQsIHNpbmNl IHRoZSBGU00KIAkgKiBkYXRhIGlzIG5vdCBpbiB0aGUgcGFnZSBhbnl3YXkuCisJICoKKwkgKiBX ZSB3YW50IHRvIGF2b2lkIGhvbGRpbmcgYW4gZXhjbHVzaXZlIGxvY2sgb24gdGhlIGhlYXAgYnVm ZmVyIHdoaWxlCisJICogZG9pbmcgSU8gKGVpdGhlciBvZiB0aGUgRlNNIG9yIHRoZSBWTSksIHNv IHdlJ2xsIHJlbGVhc2UgdGhlIGxvY2sgb24KKwkgKiB0aGUgaGVhcCBidWZmZXIgYmVmb3JlIGRv aW5nIGVpdGhlci4KIAkgKi8KIAlpZiAoQnVmZmVySXNWYWxpZChidWZmZXIpKQogCXsKLQkJaWYg KHhscmVjLmZsYWdzICYgKFhMSFBfSEFTX1JFRElSRUNUSU9OUyB8Ci0JCQkJCQkgICBYTEhQX0hB U19ERUFEX0lURU1TIHwKLQkJCQkJCSAgIFhMSFBfSEFTX05PV19VTlVTRURfSVRFTVMpKQorCQlp ZiAoKHhscmVjLmZsYWdzICYgKFhMSFBfSEFTX1JFRElSRUNUSU9OUyB8CisJCQkJCQkJWExIUF9I QVNfREVBRF9JVEVNUyB8CisJCQkJCQkJWExIUF9IQVNfTk9XX1VOVVNFRF9JVEVNUykpIHx8CisJ CQl2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKQogCQl7CiAJCQlTaXplCQlmcmVl c3BhY2UgPSBQYWdlR2V0SGVhcEZyZWVTcGFjZShCdWZmZXJHZXRQYWdlKGJ1ZmZlcikpOwogCkBA IC0xNjgsNiArMjQ2LDM3IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpCiAJCWVsc2UKIAkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKIAl9CisK KwkvKgorCSAqIFJlYWQgYW5kIHVwZGF0ZSB0aGUgVk0gYmxvY2suIEV2ZW4gaWYgd2Ugc2tpcHBl ZCB1cGRhdGluZyB0aGUgaGVhcCBwYWdlCisJICogZHVlIHRvIHRoZSBmaWxlIGJlaW5nIGRyb3Bw ZWQgb3IgdHJ1bmNhdGVkIGxhdGVyIGluIHJlY292ZXJ5LCBpdCdzCisJICogc3RpbGwgc2FmZSB0 byB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwLiAgQW55IFdBTCByZWNvcmQgdGhhdCBjbGVhcnMK KwkgKiB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IGRvZXMgc28gYmVmb3JlIGNoZWNraW5nIHRoZSBw YWdlIExTTiwgc28gYW55CisJICogYml0cyB0aGF0IG5lZWQgdG8gYmUgY2xlYXJlZCB3aWxsIHN0 aWxsIGJlIGNsZWFyZWQuCisJICoKKwkgKiBOb3RlIHRoYXQgaXQgaXMgKm9ubHkqIG9rYXkgdGhh dCB3ZSBkbyBub3QgaG9sZCBhIGxvY2sgb24gdGhlIGhlYXAgcGFnZQorCSAqIGJlY2F1c2Ugd2Ug YXJlIGluIHJlY292ZXJ5IGFuZCBjYW4gZXhwZWN0IG5vIG90aGVyIHdyaXRlcnMgdG8gY2xlYXIK KwkgKiBQRF9BTExfVklTSUJMRSBiZWZvcmUgd2UgYXJlIGFibGUgdG8gdXBkYXRlIHRoZSBWTS4K KwkgKi8KKwlpZiAodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyAmJgorCQlYTG9n UmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQsIDEsCisJCQkJCQkJCQkgIFJCTV9aRVJP X09OX0VSUk9SLAorCQkJCQkJCQkJICBmYWxzZSwKKwkJCQkJCQkJCSAgJnZtYnVmZmVyKSA9PSBC TEtfTkVFRFNfUkVETykKKwl7CisJCXVpbnQ4CQlvbGRfdm1iaXRzID0gMDsKKwkJUmVsYXRpb24J cmVsbiA9IENyZWF0ZUZha2VSZWxjYWNoZUVudHJ5KHJsb2NhdG9yKTsKKworCQl2aXNpYmlsaXR5 bWFwX3BpbihyZWxuLCBibGtubywgJnZtYnVmZmVyKTsKKwkJb2xkX3ZtYml0cyA9IHZpc2liaWxp dHltYXBfc2V0X3ZtYnl0ZShyZWxuLCBibGtubywgdm1idWZmZXIsIHZtZmxhZ3MpOworCQkvKiBP bmx5IHNldCBWTSBwYWdlIExTTiBpZiB3ZSBtb2RpZmllZCB0aGUgcGFnZSAqLworCQlpZiAob2xk X3ZtYml0cyAhPSB2bWZsYWdzKQorCQkJUGFnZVNldExTTihCdWZmZXJHZXRQYWdlKHZtYnVmZmVy KSwgbHNuKTsKKwkJRnJlZUZha2VSZWxjYWNoZUVudHJ5KHJlbG4pOworCX0KKworCWlmIChCdWZm ZXJJc1ZhbGlkKHZtYnVmZmVyKSkKKwkJVW5sb2NrUmVsZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IGE4MDI1ODg5YmUwLi5k OWJhMGY5NmUzNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFw LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTIxLDYgKzIx LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9n LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKKyNpbmNsdWRlICJhY2Nlc3Mvdmlz aWJpbGl0eW1hcGRlZnMuaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKICNpbmNsdWRl ICJleGVjdXRvci9pbnN0cnVtZW50LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCkBAIC04MzUs NiArODM2LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24s IEJ1ZmZlciBidWZmZXIsCiAJCQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5sYXRlc3RfeGlkX3Jl bW92ZWQ7CiAKIAkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUocmVsYXRpb24sIGJ1ZmZlciwK KwkJCQkJCQkJCSAgSW52YWxpZEJ1ZmZlciwgMCwgZmFsc2UsCiAJCQkJCQkJCQkgIGNvbmZsaWN0 X3hpZCwKIAkJCQkJCQkJCSAgdHJ1ZSwgcmVhc29uLAogCQkJCQkJCQkJICBwcnN0YXRlLmZyb3pl biwgcHJzdGF0ZS5uZnJvemVuLApAQCAtMjA0NSwxMiArMjA0NywyMyBAQCBoZWFwX2xvZ19mcmVl emVfcGxhbihIZWFwVHVwbGVGcmVlemUgKnR1cGxlcywgaW50IG50dXBsZXMsCiAgKiByZXBsYXlp bmcgJ3VudXNlZCcgaXRlbXMgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZXkgd2VyZSBhbGwgcHJldmlv dXNseSBtYXJrZWQKICAqIGFzIGRlYWQuCiAgKgorICogSWYgdGhlIFZNIGlzIGJlaW5nIHVwZGF0 ZWQsIHZtZmxhZ3Mgd2lsbCBjb250YWluIHRoZSBiaXRzIHRvIHNldC4gSW4gdGhpcworICogY2Fz ZSwgdm1idWZmZXIgc2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIHVwZGF0ZWQgYW5kIG1hcmtlZCBk aXJ0eSBhbmQgc2hvdWxkCisgKiBzdGlsbCBiZSBwaW5uZWQgYW5kIGxvY2tlZC4KKyAqCisgKiBz ZXRfcGRfYWxsX3ZpcyBpbmRpY2F0ZXMgdGhhdCB3ZSBzZXQgUERfQUxMX1ZJU0lCTEUgYW5kIHRo dXMgc2hvdWxkIHVwZGF0ZQorICogdGhlIHBhZ2UgTFNOIHdoZW4gY2hlY2tzdW1zL3dhbF9sb2df aGludHMgYXJlIGVuYWJsZWQgZXZlbiBpZiB3ZSBkaWQgbm90CisgKiBwcnVuZSBvciBmcmVlemUg dHVwbGVzIG9uIHRoZSBwYWdlLgorICoKICAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gc2NyaWJibGVz IG9uIHRoZSAnZnJvemVuJyBhcnJheS4KICAqCiAgKiBOb3RlOiBUaGlzIGlzIGNhbGxlZCBpbiBh IGNyaXRpY2FsIHNlY3Rpb24sIHNvIGNhcmVmdWwgd2hhdCB5b3UgZG8gaGVyZS4KICAqLwogdm9p ZAogbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1 ZmZlciwKKwkJCQkJCSAgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkJICB1aW50OCB2bWZsYWdzLAor CQkJCQkJICBib29sIHNldF9wZF9hbGxfdmlzLAogCQkJCQkJICBUcmFuc2FjdGlvbklkIGNvbmZs aWN0X3hpZCwKIAkJCQkJCSAgYm9vbCBjbGVhbnVwX2xvY2ssCiAJCQkJCQkgIFBydW5lUmVhc29u IHJlYXNvbiwKQEAgLTIwNjIsNiArMjA3NSw3IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUo UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJeGxfaGVhcF9wcnVuZSB4bHJlYzsK IAlYTG9nUmVjUHRyCXJlY3B0cjsKIAl1aW50OAkJaW5mbzsKKwl1aW50OAkJcmVnYnVmX2ZsYWdz OwogCiAJLyogVGhlIGZvbGxvd2luZyBsb2NhbCB2YXJpYWJsZXMgaG9sZCBkYXRhIHJlZ2lzdGVy ZWQgaW4gdGhlIFdBTCByZWNvcmQ6ICovCiAJeGxocF9mcmVlemVfcGxhbiBwbGFuc1tNYXhIZWFw VHVwbGVzUGVyUGFnZV07CkBAIC0yMDcwLDggKzIwODQsMTkgQEAgbG9nX2hlYXBfcHJ1bmVfYW5k X2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAl4bGhwX3BydW5lX2l0 ZW1zIGRlYWRfaXRlbXM7CiAJeGxocF9wcnVuZV9pdGVtcyB1bnVzZWRfaXRlbXM7CiAJT2Zmc2V0 TnVtYmVyIGZyel9vZmZzZXRzW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKKwlib29sCQlkb19wcnVu ZSA9IG5yZWRpcmVjdGVkID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDA7CiAKIAl4bHJl Yy5mbGFncyA9IDA7CisJcmVnYnVmX2ZsYWdzID0gUkVHQlVGX1NUQU5EQVJEOworCisJLyoKKwkg KiBXZSBjYW4gYXZvaWQgYW4gRlBJIGlmIHRoZSBvbmx5IG1vZGlmaWNhdGlvbiB3ZSBhcmUgbWFr aW5nIHRvIHRoZSBoZWFwCisJICogcGFnZSBpcyB0byBzZXQgUERfQUxMX1ZJU0lCTEUgYW5kIGNo ZWNrc3Vtcy93YWxfbG9nX2hpbnRzIGFyZSBkaXNhYmxlZC4KKwkgKi8KKwlpZiAoIWRvX3BydW5l ICYmCisJCW5mcm96ZW4gPT0gMCAmJgorCQkoIXNldF9wZF9hbGxfdmlzIHx8ICFYTG9nSGludEJp dElzTmVlZGVkKCkpKQorCQlyZWdidWZfZmxhZ3MgfD0gUkVHQlVGX05PX0lNQUdFOwogCiAJLyoK IAkgKiBQcmVwYXJlIGRhdGEgZm9yIHRoZSBidWZmZXIuICBUaGUgYXJyYXlzIGFyZSBub3QgYWN0 dWFsbHkgaW4gdGhlCkBAIC0yMDc5LDcgKzIxMDQsMTEgQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2Zy ZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkgKiBwYWdlIGltYWdlLCB0 aGUgYXJyYXlzIGNhbiBiZSBvbWl0dGVkLgogCSAqLwogCVhMb2dCZWdpbkluc2VydCgpOwotCVhM b2dSZWdpc3RlckJ1ZmZlcigwLCBidWZmZXIsIFJFR0JVRl9TVEFOREFSRCk7CisJWExvZ1JlZ2lz dGVyQnVmZmVyKDAsIGJ1ZmZlciwgcmVnYnVmX2ZsYWdzKTsKKworCWlmICh2bWZsYWdzICYgVklT SUJJTElUWU1BUF9WQUxJRF9CSVRTKQorCQlYTG9nUmVnaXN0ZXJCdWZmZXIoMSwgdm1idWZmZXIs IDApOworCiAJaWYgKG5mcm96ZW4gPiAwKQogCXsKIAkJaW50CQkJbnBsYW5zOwpAQCAtMjEzNiw2 ICsyMTY1LDggQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKIAkgKiBQcmVwYXJlIHRoZSBtYWluIHhsX2hlYXBfcHJ1bmUgcmVjb3Jk LiAgV2UgYWxyZWFkeSBzZXQgdGhlIFhMSFBfSEFTXyoKIAkgKiBmbGFnIGFib3ZlLgogCSAqLwor CWlmICh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKQorCQl4bHJlYy5mbGFncyB8 PSBYTEhQX0hBU19WTUZMQUdTOwogCWlmIChSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERl Y29kaW5nKHJlbGF0aW9uKSkKIAkJeGxyZWMuZmxhZ3MgfD0gWExIUF9JU19DQVRBTE9HX1JFTDsK IAlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQoY29uZmxpY3RfeGlkKSkKQEAgLTIxNTAsNiArMjE4 MSw4IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZl ciBidWZmZXIsCiAJWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIFNpemVPZkhlYXBQcnVuZSk7CiAJ aWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGNvbmZsaWN0X3hpZCkpCiAJCVhMb2dSZWdpc3RlckRh dGEoJmNvbmZsaWN0X3hpZCwgc2l6ZW9mKFRyYW5zYWN0aW9uSWQpKTsKKwlpZiAodm1mbGFncyAm IFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykKKwkJWExvZ1JlZ2lzdGVyRGF0YSgmdm1mbGFncywg c2l6ZW9mKHVpbnQ4KSk7CiAKIAlzd2l0Y2ggKHJlYXNvbikKIAl7CkBAIC0yMTY4LDUgKzIyMDEs MTYgQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVy IGJ1ZmZlciwKIAl9CiAJcmVjcHRyID0gWExvZ0luc2VydChSTV9IRUFQMl9JRCwgaW5mbyk7CiAK LQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSwgcmVjcHRyKTsKKwlpZiAodm1mbGFn cyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykKKwkJUGFnZVNldExTTihCdWZmZXJHZXRQYWdl KHZtYnVmZmVyKSwgcmVjcHRyKTsKKworCS8qCisJICogSWYgcHJ1bmluZyBvciBmcmVlemluZyB0 dXBsZXMgb3Igc2V0dGluZyB0aGUgcGFnZSBhbGwtdmlzaWJsZSB3aGVuCisJICogY2hlY2tzdW1z IG9yIHdhbF9oaW50X2JpdHMgYXJlIGVuYWJsZWQsIHdlIG11c3QgYnVtcCB0aGUgTFNOLiBUb3Ju CisJICogcGFnZXMgYXJlIHBvc3NpYmxlIGlmIHdlIHVwZGF0ZSBQRF9BTExfVklTSUJMRSB3aXRo b3V0IGJ1bXBpbmcgdGhlIExTTiwKKwkgKiBidXQgdGhpcyBpcyBkZWVtZWQgb2theSBmb3IgcGFn ZSBoaW50IHVwZGF0ZXMuCisJICovCisJaWYgKGRvX3BydW5lIHx8IG5mcm96ZW4gPiAwIHx8CisJ CShzZXRfcGRfYWxsX3ZpcyAmJiBYTG9nSGludEJpdElzTmVlZGVkKCkpKQorCQlQYWdlU2V0TFNO KEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSwgcmVjcHRyKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zh Y3V1bWxhenkuYwppbmRleCA4YTYyYTkzZWVlNS4uNDYwY2RiZDg0MTcgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTQ2NCwxMSArNDY0LDEzIEBAIHN0YXRpYyB2b2lkIGRl YWRfaXRlbXNfYWRkKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIE9mZnNl dE51bWJlciAqCiAJCQkJCQkgICBpbnQgbnVtX29mZnNldHMpOwogc3RhdGljIHZvaWQgZGVhZF9p dGVtc19yZXNldChMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19j bGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCk7Ci1zdGF0aWMgYm9vbCBoZWFwX3BhZ2VfaXNfYWxs X3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCQkJIFRyYW5zYWN0aW9u SWQgT2xkZXN0WG1pbiwKLQkJCQkJCQkJCSBib29sICphbGxfZnJvemVuLAotCQkJCQkJCQkJIFRy YW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCQkJCSBPZmZzZXROdW1i ZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKK3N0YXRpYyBib29sIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJs ZV9leGNlcHRfbHBkZWFkKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKKwkJCQkJCQkJCQkJCSAg IFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAq ZGVhZG9mZnNldHMsCisJCQkJCQkJCQkJCQkgICBpbnQgYWxsb3dlZF9udW1fb2Zmc2V0cywKKwkJ CQkJCQkJCQkJCSAgIGJvb2wgKmFsbF9mcm96ZW4sCisJCQkJCQkJCQkJCQkgICBUcmFuc2FjdGlv bklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIg KmxvZ2dpbmdfb2ZmbnVtKTsKIHN0YXRpYyB2b2lkIHVwZGF0ZV9yZWxzdGF0c19hbGxfaW5kZXhl cyhMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIHZvaWQgdmFjdXVtX2Vycm9yX2NhbGxiYWNr KHZvaWQgKmFyZyk7CiBzdGF0aWMgdm9pZCB1cGRhdGVfdmFjdXVtX2Vycm9yX2luZm8oTFZSZWxT dGF0ZSAqdmFjcmVsLApAQCAtMjg0Nyw4ICsyODQ5LDExIEBAIGxhenlfdmFjdXVtX2hlYXBfcGFn ZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAog CU9mZnNldE51bWJlciB1bnVzZWRbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwogCWludAkJCW51bnVz ZWQgPSAwOwogCVRyYW5zYWN0aW9uSWQgdmlzaWJpbGl0eV9jdXRvZmZfeGlkOworCVRyYW5zYWN0 aW9uSWQgY29uZmxpY3RfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJYm9vbAkJYWxsX2Zy b3plbjsKIAlMVlNhdmVkRXJySW5mbyBzYXZlZF9lcnJfaW5mbzsKKwl1aW50OAkJdm1mbGFncyA9 IDA7CisJYm9vbAkJc2V0X3BkX2FsbF92aXMgPSBmYWxzZTsKIAogCUFzc2VydCh2YWNyZWwtPmRv X2luZGV4X3ZhY3V1bWluZyk7CiAKQEAgLTI4NTksNiArMjg2NCwyMCBAQCBsYXp5X3ZhY3V1bV9o ZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1 ZmZlciwKIAkJCQkJCQkgVkFDVVVNX0VSUkNCX1BIQVNFX1ZBQ1VVTV9IRUFQLCBibGtubywKIAkJ CQkJCQkgSW52YWxpZE9mZnNldE51bWJlcik7CiAKKwlpZiAoaGVhcF9wYWdlX2lzX2FsbF92aXNp YmxlX2V4Y2VwdF9scGRlYWQodmFjcmVsLT5yZWwsIGJ1ZmZlciwKKwkJCQkJCQkJCQkJICAgdmFj cmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sCisJCQkJCQkJCQkJCSAgIGRlYWRvZmZzZXRzLCBudW1f b2Zmc2V0cywKKwkJCQkJCQkJCQkJICAgJmFsbF9mcm96ZW4sICZ2aXNpYmlsaXR5X2N1dG9mZl94 aWQsCisJCQkJCQkJCQkJCSAgICZ2YWNyZWwtPm9mZm51bSkpCisJeworCQl2bWZsYWdzIHw9IFZJ U0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CisJCWlmIChhbGxfZnJvemVuKQorCQl7CisJCQl2bWZs YWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKKwkJCUFzc2VydCghVHJhbnNhY3Rpb25J ZElzVmFsaWQodmlzaWJpbGl0eV9jdXRvZmZfeGlkKSk7CisJCX0KKwl9CisKIAlTVEFSVF9DUklU X1NFQ1RJT04oKTsKIAogCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX29mZnNldHM7IGkrKykKQEAg LTI4NzgsNiArMjg5NywxOCBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFj cmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkvKiBBdHRlbXB0IHRvIHRy dW5jYXRlIGxpbmUgcG9pbnRlciBhcnJheSBub3cgKi8KIAlQYWdlVHJ1bmNhdGVMaW5lUG9pbnRl ckFycmF5KHBhZ2UpOwogCisJaWYgKCh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRT KSAhPSAwKQorCXsKKwkJQXNzZXJ0KCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKTsKKwkJc2V0X3Bk X2FsbF92aXMgPSB0cnVlOworCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19FWENM VVNJVkUpOworCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJdmlzaWJpbGl0eW1hcF9zZXRf dm1ieXRlKHZhY3JlbC0+cmVsLAorCQkJCQkJCQkgYmxrbm8sCisJCQkJCQkJCSB2bWJ1ZmZlciwg dm1mbGFncyk7CisJCWNvbmZsaWN0X3hpZCA9IHZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKKwl9CisK IAkvKgogCSAqIE1hcmsgYnVmZmVyIGRpcnR5IGJlZm9yZSB3ZSB3cml0ZSBXQUwuCiAJICovCkBA IC0yODg3LDcgKzI5MTgsMTAgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZh Y3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJaWYgKFJlbGF0aW9uTmVl ZHNXQUwodmFjcmVsLT5yZWwpKQogCXsKIAkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZSh2YWNy ZWwtPnJlbCwgYnVmZmVyLAotCQkJCQkJCQkgIEludmFsaWRUcmFuc2FjdGlvbklkLAorCQkJCQkJ CQkgIHZtYnVmZmVyLAorCQkJCQkJCQkgIHZtZmxhZ3MsCisJCQkJCQkJCSAgc2V0X3BkX2FsbF92 aXMsCisJCQkJCQkJCSAgY29uZmxpY3RfeGlkLAogCQkJCQkJCQkgIGZhbHNlLAkvKiBubyBjbGVh bnVwIGxvY2sgcmVxdWlyZWQgKi8KIAkJCQkJCQkJICBQUlVORV9WQUNVVU1fQ0xFQU5VUCwKIAkJ CQkJCQkJICBOVUxMLCAwLAkvKiBmcm96ZW4gKi8KQEAgLTI4OTYsMzkgKzI5MzAsMTIgQEAgbGF6 eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8s IEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCSAgdW51c2VkLCBudW51c2VkKTsKIAl9CiAKLQkvKgot CSAqIEVuZCBjcml0aWNhbCBzZWN0aW9uLCBzbyB3ZSBzYWZlbHkgY2FuIGRvIHZpc2liaWxpdHkg dGVzdHMgKHdoaWNoCi0JICogcG9zc2libHkgbmVlZCB0byBwZXJmb3JtIElPIGFuZCBhbGxvY2F0 ZSBtZW1vcnkhKS4gSWYgd2UgY3Jhc2ggbm93IHRoZQotCSAqIHBhZ2UgKGluY2x1ZGluZyB0aGUg Y29ycmVzcG9uZGluZyB2bSBiaXQpIG1pZ2h0IG5vdCBiZSBtYXJrZWQgYWxsCi0JICogdmlzaWJs ZSwgYnV0IHRoYXQncyBmaW5lLiBBIGxhdGVyIHZhY3V1bSB3aWxsIGZpeCB0aGF0LgotCSAqLwog CUVORF9DUklUX1NFQ1RJT04oKTsKIAotCS8qCi0JICogTm93IHRoYXQgd2UgaGF2ZSByZW1vdmVk IHRoZSBMUF9ERUFEIGl0ZW1zIGZyb20gdGhlIHBhZ2UsIG9uY2UgYWdhaW4KLQkgKiBjaGVjayBp ZiB0aGUgcGFnZSBoYXMgYmVjb21lIGFsbC12aXNpYmxlLiAgVGhlIHBhZ2UgaXMgYWxyZWFkeSBt YXJrZWQKLQkgKiBkaXJ0eSwgZXhjbHVzaXZlbHkgbG9ja2VkLCBhbmQsIGlmIG5lZWRlZCwgYSBm dWxsIHBhZ2UgaW1hZ2UgaGFzIGJlZW4KLQkgKiBlbWl0dGVkLgotCSAqLwotCUFzc2VydCghUGFn ZUlzQWxsVmlzaWJsZShwYWdlKSk7Ci0JaWYgKGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSh2YWNy ZWwtPnJlbCwgYnVmZmVyLCB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwKLQkJCQkJCQkJICZh bGxfZnJvemVuLCAmdmlzaWJpbGl0eV9jdXRvZmZfeGlkLCAmdmFjcmVsLT5vZmZudW0pKQorCWlm ICgodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpICE9IDApCiAJewotCQl1aW50 OAkJZmxhZ3MgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOwotCi0JCWlmIChhbGxfZnJvemVu KQotCQl7Ci0JCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHZpc2liaWxpdHlfY3V0b2Zm X3hpZCkpOwotCQkJZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOOwotCQl9Ci0KLQkJ UGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCXZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVs LCBibGtubywgYnVmZmVyLAotCQkJCQkJICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCSAgdm1i dWZmZXIsIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCSAgZmxhZ3MpOwotCiAJCS8qIENv dW50IHRoZSBuZXdseSBzZXQgVk0gcGFnZSBmb3IgbG9nZ2luZyAqLworCQlMb2NrQnVmZmVyKHZt YnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOwogCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3Bh Z2VzKys7CiAJCWlmIChhbGxfZnJvemVuKQogCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9mcm96 ZW5fcGFnZXMrKzsKQEAgLTM1OTQsNiArMzYwMSwyNSBAQCBkZWFkX2l0ZW1zX2NsZWFudXAoTFZS ZWxTdGF0ZSAqdmFjcmVsKQogCXZhY3JlbC0+cHZzID0gTlVMTDsKIH0KIAorLyoKKyAqIFdyYXBw ZXIgZm9yIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZV9leGNlcHRfbHBkZWFkKCkgd2hpY2ggY2Fu IGJlIHVzZWQgZm9yCisgKiBjYWxsZXJzIHRoYXQgZXhwZWN0IG5vIExQX0RFQUQgb24gdGhlIHBh Z2UuCisgKi8KK2Jvb2wKK2hlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1 ZmZlciBidWYsCisJCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJIGJvb2wg KmFsbF9mcm96ZW4sCisJCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlk LAorCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pCit7CisKKwlyZXR1cm4gaGVh cF9wYWdlX2lzX2FsbF92aXNpYmxlX2V4Y2VwdF9scGRlYWQocmVsLCBidWYsIE9sZGVzdFhtaW4s CisJCQkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJCQkJCQkJCQkgIGFsbF9mcm96ZW4sCisJCQkJ CQkJCQkJCQkgIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCQkJCSAgbG9nZ2luZ19v ZmZudW0pOworfQorCiAvKgogICogQ2hlY2sgaWYgZXZlcnkgdHVwbGUgaW4gdGhlIGdpdmVuIHBh Z2UgaXMgdmlzaWJsZSB0byBhbGwgY3VycmVudCBhbmQgZnV0dXJlCiAgKiB0cmFuc2FjdGlvbnMu CkBAIC0zNjA3LDIzICszNjMzLDM1IEBAIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2 YWNyZWwpCiAgKiB2aXNpYmxlIHR1cGxlcy4gU2V0cyAqYWxsX2Zyb3plbiB0byB0cnVlIGlmIGV2 ZXJ5IHR1cGxlIG9uIHRoaXMgcGFnZSBpcwogICogZnJvemVuLgogICoKLSAqIFRoaXMgaXMgYSBz dHJpcHBlZCBkb3duIHZlcnNpb24gb2YgbGF6eV9zY2FuX3BydW5lKCkuICBJZiB5b3UgY2hhbmdl Ci0gKiBhbnl0aGluZyBoZXJlLCBtYWtlIHN1cmUgdGhhdCBldmVyeXRoaW5nIHN0YXlzIGluIHN5 bmMuICBOb3RlIHRoYXQgYW4KLSAqIGFzc2VydGlvbiBjYWxscyB1cyB0byB2ZXJpZnkgdGhhdCBl dmVyeWJvZHkgc3RpbGwgYWdyZWVzLiAgQmUgc3VyZSB0byBhdm9pZAotICogaW50cm9kdWNpbmcg bmV3IHNpZGUtZWZmZWN0cyBoZXJlLgorICogZGVhZG9mZnNldHMgYXJlIHRoZSBvZmZzZXRzIHdl IGtub3cgYWJvdXQgYW5kIGFyZSBhYm91dCB0byBzZXQgTFBfVU5VU0VELgorICogYWxsb3dlZF9u dW1fb2Zmc2V0cyBpcyB0aGUgbnVtYmVyIG9mIHRob3NlLiBBcyBsb25nIGFzIHRoZSBMUF9ERUFE IGl0ZW1zIHdlCisgKiBlbmNvdW50ZXIgb24gdGhlIHBhZ2UgbWF0Y2ggdGhvc2UgZXhhY3RseSwg d2UgY2FuIHNldCB0aGUgcGFnZSBhbGwtdmlzaWJsZQorICogaW4gdGhlIFZNLgorICoKKyAqIENh bGxlcnMgbG9va2luZyB0byB2ZXJpZnkgdGhhdCB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZSBjYW4g Y2FsbAorICogaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKCkuCisgKgorICogVGhpcyBpcyBzaW1p bGFyIGxvZ2ljIHRvIHRoYXQgaW4gaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1h bCgpIElmCisgKiB5b3UgY2hhbmdlIGFueXRoaW5nIGhlcmUsIG1ha2Ugc3VyZSB0aGF0IGV2ZXJ5 dGhpbmcgc3RheXMgaW4gc3luYy4gIE5vdGUKKyAqIHRoYXQgYW4gYXNzZXJ0aW9uIGNhbGxzIHVz IHRvIHZlcmlmeSB0aGF0IGV2ZXJ5Ym9keSBzdGlsbCBhZ3JlZXMuICBCZSBzdXJlCisgKiB0byBh dm9pZCBpbnRyb2R1Y2luZyBuZXcgc2lkZS1lZmZlY3RzIGhlcmUuCiAgKi8KIHN0YXRpYyBib29s Ci1oZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJ CQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKLQkJCQkJCSBib29sICphbGxfZnJvemVuLAot CQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCSBPZmZz ZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQoraGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlX2V4Y2Vw dF9scGRlYWQoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAorCQkJCQkJCQkJICAgVHJhbnNhY3Rp b25JZCBPbGRlc3RYbWluLAorCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0cywK KwkJCQkJCQkJCSAgIGludCBhbGxvd2VkX251bV9vZmZzZXRzLAorCQkJCQkJCQkJICAgYm9vbCAq YWxsX2Zyb3plbiwKKwkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2Zm X3hpZCwKKwkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pCiB7CiAJUGFn ZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmKTsKIAlCbG9ja051bWJlciBibG9ja25vID0gQnVm ZmVyR2V0QmxvY2tOdW1iZXIoYnVmKTsKIAlPZmZzZXROdW1iZXIgb2ZmbnVtLAogCQkJCW1heG9m ZjsKIAlib29sCQlhbGxfdmlzaWJsZSA9IHRydWU7CisJT2Zmc2V0TnVtYmVyIGN1cnJlbnRfZGVh ZF9vZmZzZXRzW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKKwlzaXplX3QJCWN1cnJlbnRfbnVtX29m ZnNldHMgPSAwOwogCiAJKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCA9IEludmFsaWRUcmFuc2FjdGlv bklkOwogCSphbGxfZnJvemVuID0gdHJ1ZTsKQEAgLTM2NTUsOSArMzY5Myw4IEBAIGhlYXBfcGFn ZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAJCSAqLwogCQlpZiAo SXRlbUlkSXNEZWFkKGl0ZW1pZCkpCiAJCXsKLQkJCWFsbF92aXNpYmxlID0gZmFsc2U7Ci0JCQkq YWxsX2Zyb3plbiA9IGZhbHNlOwotCQkJYnJlYWs7CisJCQljdXJyZW50X2RlYWRfb2Zmc2V0c1tj dXJyZW50X251bV9vZmZzZXRzKytdID0gb2ZmbnVtOworCQkJY29udGludWU7CiAJCX0KIAogCQlB c3NlcnQoSXRlbUlkSXNOb3JtYWwoaXRlbWlkKSk7CkBAIC0zNzI0LDcgKzM3NjEsMjMgQEAgaGVh cF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkvKiBDbGVh ciB0aGUgb2Zmc2V0IGluZm9ybWF0aW9uIG9uY2Ugd2UgaGF2ZSBwcm9jZXNzZWQgdGhlIGdpdmVu IHBhZ2UuICovCiAJKmxvZ2dpbmdfb2ZmbnVtID0gSW52YWxpZE9mZnNldE51bWJlcjsKIAotCXJl dHVybiBhbGxfdmlzaWJsZTsKKwkvKiBJZiB3ZSBhbHJlYWR5IGtub3cgaXQncyBub3QgYWxsLXZp c2libGUsIHJldHVybiBmYWxzZSAqLworCWlmICghYWxsX3Zpc2libGUpCisJCXJldHVybiBmYWxz ZTsKKworCS8qIElmIHdlIHdlcmVuJ3QgYWxsb3dlZCBhbnkgZGVhZCBvZmZzZXRzLCB3ZSdyZSBk b25lICovCisJaWYgKGFsbG93ZWRfbnVtX29mZnNldHMgPT0gMCkKKwkJcmV0dXJuIGN1cnJlbnRf bnVtX29mZnNldHMgPT0gMDsKKworCS8qIElmIHRoZSBudW1iZXIgb2YgZGVhZCBvZmZzZXRzIGhh cyBjaGFuZ2VkLCB0aGF0J3Mgd3JvbmcgKi8KKwlpZiAoY3VycmVudF9udW1fb2Zmc2V0cyAhPSBh bGxvd2VkX251bV9vZmZzZXRzKQorCQlyZXR1cm4gZmFsc2U7CisKKwlBc3NlcnQoZGVhZG9mZnNl dHMpOworCisJLyogVGhlIGRlYWQgb2Zmc2V0cyBtdXN0IGJlIHRoZSBzYW1lIGRlYWQgb2Zmc2V0 cyAqLworCXJldHVybiBtZW1jbXAoY3VycmVudF9kZWFkX29mZnNldHMsIGRlYWRvZmZzZXRzLAor CQkJCSAgYWxsb3dlZF9udW1fb2Zmc2V0cyAqIHNpemVvZihPZmZzZXROdW1iZXIpKSA9PSAwOwog fQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNj LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwppbmRleCBiNDhkN2Rj MWQyNC4uZDZjODZjY2FjMjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVz Yy9oZWFwZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5j CkBAIC0yNjYsNiArMjY2LDcgQEAgaGVhcDJfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRl clN0YXRlICpyZWNvcmQpCiB7CiAJY2hhcgkgICAqcmVjID0gWExvZ1JlY0dldERhdGEocmVjb3Jk KTsKIAl1aW50OAkJaW5mbyA9IFhMb2dSZWNHZXRJbmZvKHJlY29yZCkgJiB+WExSX0lORk9fTUFT SzsKKwljaGFyCSAgICptYWluZGF0YXB0ciA9IHJlYyArIFNpemVPZkhlYXBQcnVuZTsKIAogCWlu Zm8gJj0gWExPR19IRUFQX09QTUFTSzsKIAlpZiAoaW5mbyA9PSBYTE9HX0hFQVAyX1BSVU5FX09O X0FDQ0VTUyB8fApAQCAtMjc4LDcgKzI3OSw4IEBAIGhlYXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYs IFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQl7CiAJCQlUcmFuc2FjdGlvbklkIGNvbmZsaWN0 X3hpZDsKIAotCQkJbWVtY3B5KCZjb25mbGljdF94aWQsIHJlYyArIFNpemVPZkhlYXBQcnVuZSwg c2l6ZW9mKFRyYW5zYWN0aW9uSWQpKTsKKwkJCW1lbWNweSgmY29uZmxpY3RfeGlkLCBtYWluZGF0 YXB0ciwgc2l6ZW9mKFRyYW5zYWN0aW9uSWQpKTsKKwkJCW1haW5kYXRhcHRyICs9IHNpemVvZihU cmFuc2FjdGlvbklkKTsKIAogCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJzbmFwc2hvdENvbmZs aWN0SG9yaXpvbjogJXUiLAogCQkJCQkJCSBjb25mbGljdF94aWQpOwpAQCAtMjg3LDYgKzI4OSwx NSBAQCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK IAkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsIGlzQ2F0YWxvZ1JlbDogJWMiLAogCQkJCQkJIHhs cmVjLT5mbGFncyAmIFhMSFBfSVNfQ0FUQUxPR19SRUwgPyAnVCcgOiAnRicpOwogCisJCWlmICh4 bHJlYy0+ZmxhZ3MgJiBYTEhQX0hBU19WTUZMQUdTKQorCQl7CisJCQl1aW50OAkJdm1mbGFnczsK KworCQkJbWVtY3B5KCZ2bWZsYWdzLCBtYWluZGF0YXB0ciwgc2l6ZW9mKHVpbnQ4KSk7CisJCQlt YWluZGF0YXB0ciArPSBzaXplb2YodWludDgpOworCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIs IHZtX2ZsYWdzOiAweCUwMlgiLCB2bWZsYWdzKTsKKwkJfQorCiAJCWlmIChYTG9nUmVjSGFzQmxv Y2tEYXRhKHJlY29yZCwgMCkpCiAJCXsKIAkJCVNpemUJCWRhdGFsZW47CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgK aW5kZXggYTJiZDVhODk3ZjguLjhiNDcyOTVlZmEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC0zNDQs NiArMzQ0LDEyIEBAIGV4dGVybiB2b2lkIGhlYXBfaW5wbGFjZV91cGRhdGVfYW5kX3VubG9jayhS ZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJCQkgICBCdWZmZXIgYnVmZmVyKTsKIGV4dGVybiB2 b2lkIGhlYXBfaW5wbGFjZV91bmxvY2soUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCUhlYXBU dXBsZSBvbGR0dXAsIEJ1ZmZlciBidWZmZXIpOworCitleHRlcm4gYm9vbCBoZWFwX3BhZ2VfaXNf YWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAorCQkJCQkJCQkJIFRyYW5zYWN0 aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCSBib29sICphbGxfZnJvemVuLAorCQkJCQkJCQkJ IFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCSBPZmZzZXRO dW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKIGV4dGVybiBib29sIGhlYXBfcHJlcGFyZV9mcmVlemVf dHVwbGUoSGVhcFR1cGxlSGVhZGVyIHR1cGxlLAogCQkJCQkJCQkJICBjb25zdCBzdHJ1Y3QgVmFj dXVtQ3V0b2ZmcyAqY3V0b2ZmcywKIAkJCQkJCQkJCSAgSGVhcFBhZ2VGcmVlemUgKnBhZ2Vmcnos CkBAIC0zODgsNiArMzk0LDkgQEAgZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUo QnVmZmVyIGJ1ZmZlciwgYm9vbCBscF90cnVuY2F0ZV9vbmx5LAogCQkJCQkJCQkJT2Zmc2V0TnVt YmVyICpub3d1bnVzZWQsIGludCBudW51c2VkKTsKIGV4dGVybiB2b2lkIGhlYXBfZ2V0X3Jvb3Rf dHVwbGVzKFBhZ2UgcGFnZSwgT2Zmc2V0TnVtYmVyICpyb290X29mZnNldHMpOwogZXh0ZXJuIHZv aWQgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1 ZmZlciwKKwkJCQkJCQkJCSAgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkJCQkJICB1aW50OCB2bWZs YWdzLAorCQkJCQkJCQkJICBib29sIHZtX21vZGlmaWVkX2hlYXBfcGFnZSwKIAkJCQkJCQkJCSAg VHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQsCiAJCQkJCQkJCQkgIGJvb2wgY2xlYW51cF9sb2Nr LAogCQkJCQkJCQkJICBQcnVuZVJlYXNvbiByZWFzb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5o CmluZGV4IDI3N2RmNmIzY2YwLi5kNmE0NzlmNjk4NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv YWNjZXNzL2hlYXBhbV94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9n LmgKQEAgLTI4OSwxMiArMjg5LDE3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfcHJ1bmUKIAog CS8qCiAJICogSWYgWExIUF9IQVNfQ09ORkxJQ1RfSE9SSVpPTiBpcyBzZXQsIHRoZSBjb25mbGlj dCBob3Jpem9uIFhJRCBmb2xsb3dzLAotCSAqIHVuYWxpZ25lZAorCSAqIHVuYWxpZ25lZC4KKwkg KgorCSAqIFRoZW4sIGlmIFhMSFBfSEFTX1ZNRkxBR1MgaXMgc2V0LCB0aGUgVk0gZmxhZ3MgZm9s bG93LCB1bmFsaWduZWQuCiAJICovCiB9IHhsX2hlYXBfcHJ1bmU7CiAKICNkZWZpbmUgU2l6ZU9m SGVhcFBydW5lIChvZmZzZXRvZih4bF9oZWFwX3BydW5lLCBmbGFncykgKyBzaXplb2YodWludDgp KQogCisvKiBJZiB0aGUgcmVjb3JkIHNob3VsZCB1cGRhdGUgdGhlIFZNLCBpdCBjb250YWlucyB0 aGVpciBuZXcgdmFsdWUgKi8KKyNkZWZpbmUJCVhMSFBfSEFTX1ZNRkxBR1MJCQkoMSA8PCAwKQor CiAvKiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVyaW5nIGxvZ2ljYWwgZGVjb2Rpbmcg b24gc3RhbmRieSAqLwogI2RlZmluZQkJWExIUF9JU19DQVRBTE9HX1JFTAkJCSgxIDw8IDEpCiAK LS0gCjIuNDMuMAoK --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0004-Make-heap_page_is_all_visible-independent-of-LVRe.patch" Content-Disposition: attachment; filename="v7-0004-Make-heap_page_is_all_visible-independent-of-LVRe.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84bp3 RnJvbSBhOGYxYjVlZjk4ODIzNWY3ZDljNWZkMjRkMTBhMTM5NDcyZGYyZTMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDE1OjQ4OjUxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAwNC8yMl0gTWFrZSBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUgaW5kZXBlbmRlbnQg b2YKIExWUmVsU3RhdGUKCkZ1dHVyZSBjb21taXRzIHdpbGwgdXNlIHRoaXMgZnVuY3Rpb24gaW5z aWRlIG9mIHBydW5laGVhcC5jIHdoZXJlIHdlIGRvCm5vdCBoYXZlIGFjY2VzcyB0byB0aGUgTFZS ZWxTdGF0ZS4gV2Ugb25seSBuZWVkIHR3byBwYXJhbWV0ZXJzIGZyb20gdGhlCkxWUmVsU3RhdGUs IHNvIGp1c3QgcGFzcyB0aG9zZSBpbiBleHBsaWNpdGx5LgoKQXV0aG9yOiBNZWxhbmllIFBsYWdl bWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJlc2hr ZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMv bS9mbGF0L0NBQUtSdV9aTXc2TnBkX3FtMktNJTJCRndRM2NNT014MURoM1ZNaHA4LVY3U09MeGRL OS1nJTQwbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMgfCA0NSArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg MjkgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jCmluZGV4IDE0MDM2YzI3ZTg3Li44YTYyYTkzZWVlNSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDY0LDggKzQ2NCwxMSBAQCBzdGF0aWMgdm9pZCBkZWFk X2l0ZW1zX2FkZChMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBPZmZzZXRO dW1iZXIgKgogCQkJCQkJICAgaW50IG51bV9vZmZzZXRzKTsKIHN0YXRpYyB2b2lkIGRlYWRfaXRl bXNfcmVzZXQoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNfY2xl YW51cChMVlJlbFN0YXRlICp2YWNyZWwpOwotc3RhdGljIGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92 aXNpYmxlKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQkJCSBUcmFuc2Fj dGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsIGJvb2wgKmFsbF9mcm96ZW4pOworc3RhdGlj IGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwK KwkJCQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkgYm9vbCAqYWxs X2Zyb3plbiwKKwkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQs CisJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSk7CiBzdGF0aWMgdm9pZCB1 cGRhdGVfcmVsc3RhdHNfYWxsX2luZGV4ZXMoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2 b2lkIHZhY3V1bV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOwogc3RhdGljIHZvaWQgdXBkYXRl X3ZhY3V1bV9lcnJvcl9pbmZvKExWUmVsU3RhdGUgKnZhY3JlbCwKQEAgLTIwMTAsOCArMjAxMyw5 IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAKIAkJQXNzZXJ0KHByZXN1 bHQubHBkZWFkX2l0ZW1zID09IDApOwogCi0JCWlmICghaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxl KHZhY3JlbCwgYnVmLAotCQkJCQkJCQkJICAmZGVidWdfY3V0b2ZmLCAmZGVidWdfYWxsX2Zyb3pl bikpCisJCWlmICghaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKHZhY3JlbC0+cmVsLCBidWYsCisJ CQkJCQkJCQkgIHZhY3JlbC0+Y3V0b2Zmcy5PbGRlc3RYbWluLCAmZGVidWdfYWxsX2Zyb3plbiwK KwkJCQkJCQkJCSAgJmRlYnVnX2N1dG9mZiwgJnZhY3JlbC0+b2ZmbnVtKSkKIAkJCUFzc2VydChm YWxzZSk7CiAKIAkJQXNzZXJ0KHByZXN1bHQuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVu KTsKQEAgLTI5MDcsOCArMjkxMSw4IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRl ICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCSAqIGVtaXR0ZWQu CiAJICovCiAJQXNzZXJ0KCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKTsKLQlpZiAoaGVhcF9wYWdl X2lzX2FsbF92aXNpYmxlKHZhY3JlbCwgYnVmZmVyLCAmdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAot CQkJCQkJCQkgJmFsbF9mcm96ZW4pKQorCWlmIChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUodmFj cmVsLT5yZWwsIGJ1ZmZlciwgdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sCisJCQkJCQkJCSAm YWxsX2Zyb3plbiwgJnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwgJnZhY3JlbC0+b2ZmbnVtKSkKIAl7 CiAJCXVpbnQ4CQlmbGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CiAKQEAgLTM1OTIs OSArMzU5NiwxNiBAQCBkZWFkX2l0ZW1zX2NsZWFudXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCiAv KgogICogQ2hlY2sgaWYgZXZlcnkgdHVwbGUgaW4gdGhlIGdpdmVuIHBhZ2UgaXMgdmlzaWJsZSB0 byBhbGwgY3VycmVudCBhbmQgZnV0dXJlCi0gKiB0cmFuc2FjdGlvbnMuIEFsc28gcmV0dXJuIHRo ZSB2aXNpYmlsaXR5X2N1dG9mZl94aWQgd2hpY2ggaXMgdGhlIGhpZ2hlc3QKLSAqIHhtaW4gYW1v bmdzdCB0aGUgdmlzaWJsZSB0dXBsZXMuICBTZXQgKmFsbF9mcm96ZW4gdG8gdHJ1ZSBpZiBldmVy eSB0dXBsZQotICogb24gdGhpcyBwYWdlIGlzIGZyb3plbi4KKyAqIHRyYW5zYWN0aW9ucy4KKyAq CisgKiBPbGRlc3RYbWluIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCisgKgorICog KmxvZ2dpbmdfb2ZmbnVtIHdpbGwgaGF2ZSB0aGUgT2Zmc2V0TnVtYmVyIG9mIHRoZSBjdXJyZW50 IHR1cGxlIGJlaW5nCisgKiBwcm9jZXNzZWQgZm9yIHZhY3V1bSdzIGVycm9yIGNhbGxiYWNrIHN5 c3RlbS4KKyAqCisgKiBSZXR1cm4gdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCB3aGljaCBpcyB0 aGUgaGlnaGVzdCB4bWluIGFtb25nc3QgdGhlCisgKiB2aXNpYmxlIHR1cGxlcy4gU2V0cyAqYWxs X2Zyb3plbiB0byB0cnVlIGlmIGV2ZXJ5IHR1cGxlIG9uIHRoaXMgcGFnZSBpcworICogZnJvemVu LgogICoKICAqIFRoaXMgaXMgYSBzdHJpcHBlZCBkb3duIHZlcnNpb24gb2YgbGF6eV9zY2FuX3By dW5lKCkuICBJZiB5b3UgY2hhbmdlCiAgKiBhbnl0aGluZyBoZXJlLCBtYWtlIHN1cmUgdGhhdCBl dmVyeXRoaW5nIHN0YXlzIGluIHN5bmMuICBOb3RlIHRoYXQgYW4KQEAgLTM2MDIsOSArMzYxMywx MSBAQCBkZWFkX2l0ZW1zX2NsZWFudXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogICogaW50cm9kdWNp bmcgbmV3IHNpZGUtZWZmZWN0cyBoZXJlLgogICovCiBzdGF0aWMgYm9vbAotaGVhcF9wYWdlX2lz X2FsbF92aXNpYmxlKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKK2hlYXBfcGFnZV9p c19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkgVHJhbnNhY3Rp b25JZCBPbGRlc3RYbWluLAorCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4sCiAJCQkJCQkgVHJhbnNh Y3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4p CisJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSkKIHsKIAlQYWdlCQlwYWdlID0g QnVmZmVyR2V0UGFnZShidWYpOwogCUJsb2NrTnVtYmVyIGJsb2Nrbm8gPSBCdWZmZXJHZXRCbG9j a051bWJlcihidWYpOwpAQCAtMzYyNyw3ICszNjQwLDcgQEAgaGVhcF9wYWdlX2lzX2FsbF92aXNp YmxlKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJICogU2V0IHRoZSBvZmZzZXQg bnVtYmVyIHNvIHRoYXQgd2UgY2FuIGRpc3BsYXkgaXQgYWxvbmcgd2l0aCBhbnkKIAkJICogZXJy b3IgdGhhdCBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoaXMgdHVwbGUuCiAJCSAqLwotCQl2 YWNyZWwtPm9mZm51bSA9IG9mZm51bTsKKwkJKmxvZ2dpbmdfb2ZmbnVtID0gb2ZmbnVtOwogCQlp dGVtaWQgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIG9mZm51bSk7CiAKIAkJLyogVW51c2VkIG9yIHJl ZGlyZWN0IGxpbmUgcG9pbnRlcnMgYXJlIG9mIG5vIGludGVyZXN0ICovCkBAIC0zNjUxLDkgKzM2 NjQsOSBAQCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZm ZXIgYnVmLAogCiAJCXR1cGxlLnRfZGF0YSA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVt KHBhZ2UsIGl0ZW1pZCk7CiAJCXR1cGxlLnRfbGVuID0gSXRlbUlkR2V0TGVuZ3RoKGl0ZW1pZCk7 Ci0JCXR1cGxlLnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHZhY3JlbC0+cmVsKTsKKwkJ dHVwbGUudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKIAotCQlzd2l0Y2ggKEhl YXBUdXBsZVNhdGlzZmllc1ZhY3V1bSgmdHVwbGUsIHZhY3JlbC0+Y3V0b2Zmcy5PbGRlc3RYbWlu LAorCQlzd2l0Y2ggKEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bSgmdHVwbGUsIE9sZGVzdFhtaW4s CiAJCQkJCQkJCQkJIGJ1ZikpCiAJCXsKIAkJCWNhc2UgSEVBUFRVUExFX0xJVkU6CkBAIC0zNjc0 LDcgKzM2ODcsNyBAQCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoTFZSZWxTdGF0ZSAqdmFjcmVs LCBCdWZmZXIgYnVmLAogCQkJCQkgKi8KIAkJCQkJeG1pbiA9IEhlYXBUdXBsZUhlYWRlckdldFht aW4odHVwbGUudF9kYXRhKTsKIAkJCQkJaWYgKCFUcmFuc2FjdGlvbklkUHJlY2VkZXMoeG1pbiwK LQkJCQkJCQkJCQkJICAgdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4pKQorCQkJCQkJCQkJCQkg ICBPbGRlc3RYbWluKSkKIAkJCQkJewogCQkJCQkJYWxsX3Zpc2libGUgPSBmYWxzZTsKIAkJCQkJ CSphbGxfZnJvemVuID0gZmFsc2U7CkBAIC0zNzA5LDcgKzM3MjIsNyBAQCBoZWFwX3BhZ2VfaXNf YWxsX3Zpc2libGUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCX0JCQkJCQkJLyog c2NhbiBhbG9uZyBwYWdlICovCiAKIAkvKiBDbGVhciB0aGUgb2Zmc2V0IGluZm9ybWF0aW9uIG9u Y2Ugd2UgaGF2ZSBwcm9jZXNzZWQgdGhlIGdpdmVuIHBhZ2UuICovCi0JdmFjcmVsLT5vZmZudW0g PSBJbnZhbGlkT2Zmc2V0TnVtYmVyOworCSpsb2dnaW5nX29mZm51bSA9IEludmFsaWRPZmZzZXRO dW1iZXI7CiAKIAlyZXR1cm4gYWxsX3Zpc2libGU7CiB9Ci0tIAoyLjQzLjAKCg== --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0002-Add-assert-and-log-message-to-visibilitymap_set.patch" Content-Disposition: attachment; filename="v7-0002-Add-assert-and-log-message-to-visibilitymap_set.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84bg1 RnJvbSA3M2FiZTAxYzZmN2M2OWZlY2E0ZjFmNjQxYzhjNjRkNzZjY2NjMzQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI3IEF1ZyAyMDI1IDEwOjA3OjI5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAwMi8yMl0gQWRkIGFzc2VydCBhbmQgbG9nIG1lc3NhZ2UgdG8gdmlzaWJpbGl0eW1h cF9zZXQKCkFkZCBhbiBhc3NlcnQgdG8gdmlzaWJpbGl0eW1hcF9zZXQoKSB0aGF0IHRoZSBwcm92 aWRlZCBoZWFwIGJ1ZmZlciBpcwpleGNsdXNpdmVseSBsb2NrZWQsIHdoaWNoIGlzIGV4cGVjdGVk LgoKQWxzbywgZW5oYW5jZSB0aGUgZGVidWcgbG9nZ2luZyBtZXNzYWdlIHRvIHNwZWNpZnkgd2hp Y2ggVk0gZmxhZ3Mgd2VyZQpzZXQuCgpCYXNlZCBvbiBhIHJlbGF0ZWQgc3VnZ2VzdGlvbiBieSBL aXJpbGwgUmVzaGtlIG9uIGFuIGluLXByb2dyZXNzCnBhdGNoc2V0LgoKRGlzY3Vzc2lvbjogaHR0 cHM6Ly9wb3N0Z3IuZXMvbS9DQUxkU1NQaEFVNTZnMWdHVlQwJTJCd0c4UnJTV0U2cVc4VE9mTkpT MUhOQVdYNndQZ2JGQSU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmlzaWJpbGl0eW1hcC5jIHwgNSArKysrLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3Zpc2liaWxpdHltYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAu YwppbmRleCA4ZjkxOGUwMGFmNy4uNzQ0MGE2NWM0MDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92aXNpYmlsaXR5bWFwLmMKQEAgLTI1NSw3ICsyNTUsOCBAQCB2aXNpYmlsaXR5bWFwX3NldChS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAogCXVpbnQ4 CQlzdGF0dXM7CiAKICNpZmRlZiBUUkFDRV9WSVNJQklMSVRZTUFQCi0JZWxvZyhERUJVRzEsICJ2 bV9zZXQgJXMgJWQiLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwQmxrKTsKKwll bG9nKERFQlVHMSwgInZtX3NldCBmbGFncyAweCUwMlggZm9yICVzICVkIiwKKwkJIGZsYWdzLCBS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwQmxrKTsKICNlbmRpZgogCiAJQXNzZXJ0 KEluUmVjb3ZlcnkgfHwgWExvZ1JlY1B0cklzSW52YWxpZChyZWNwdHIpKTsKQEAgLTI2OSw2ICsy NzAsOCBAQCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBC bGssIEJ1ZmZlciBoZWFwQnVmLAogCWlmIChCdWZmZXJJc1ZhbGlkKGhlYXBCdWYpICYmIEJ1ZmZl ckdldEJsb2NrTnVtYmVyKGhlYXBCdWYpICE9IGhlYXBCbGspCiAJCWVsb2coRVJST1IsICJ3cm9u ZyBoZWFwIGJ1ZmZlciBwYXNzZWQgdG8gdmlzaWJpbGl0eW1hcF9zZXQiKTsKIAorCUFzc2VydCgh QnVmZmVySXNWYWxpZChoZWFwQnVmKSB8fCBCdWZmZXJJc0V4Y2x1c2l2ZUxvY2tlZChoZWFwQnVm KSk7CisKIAkvKiBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IFZNIHBhZ2UgcGlubmVkICov CiAJaWYgKCFCdWZmZXJJc1ZhbGlkKHZtQnVmKSB8fCBCdWZmZXJHZXRCbG9ja051bWJlcih2bUJ1 ZikgIT0gbWFwQmxvY2spCiAJCWVsb2coRVJST1IsICJ3cm9uZyBWTSBidWZmZXIgcGFzc2VkIHRv IHZpc2liaWxpdHltYXBfc2V0Iik7Ci0tIAoyLjQzLjAKCg== --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0001-Remove-unneeded-VM-pin-from-VM-replay.patch" Content-Disposition: attachment; filename="v7-0001-Remove-unneeded-VM-pin-from-VM-replay.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84ax0 RnJvbSA0NDlmNjczMjQzODRkMDFkMGU5NjAxMzYyZjQ5YmJlNWIyNWYyNjc2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI3IEF1ZyAyMDI1IDA4OjUwOjE1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAwMS8yMl0gUmVtb3ZlIHVubmVlZGVkIFZNIHBpbiBmcm9tIFZNIHJlcGxheQoKRHVy aW5nIHJlcGxheSBvZiBhbiBvcGVyYXRpb24gc2V0dGluZyBiaXRzIGluIHRoZSB2aXNpYmlsaXR5 IG1hcCwKWExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQoKSB3aWxsIHJldHVybiBhIHBpbm5l ZCBidWZmZXIgY29udGFpbmluZwp0aGUgc3BlY2lmaWVkIGJsb2NrIG9mIHRoZSB2aXNpYmlsaXR5 IG1hcC4gSXQgd2lsbCBhbHNvIGJlIHN1cmUgdG8KY3JlYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCBp ZiBpdCBkb2Vzbid0IGV4aXN0LiBQcmV2aW91c2x5LApoZWFwX3hsb2dfdmlzaWJsZSgpIGNhbGxl ZCB2aXNpYmlsaXR5bWFwX3BpbigpIGV2ZW4gYWZ0ZXIgZ2V0dGluZyBhCmJ1ZmZlciBpbiB0aGlz IHdheS4gVGhpcyB3b3VsZCBqdXN0IGhhdmUgcmVzdWx0ZWQgaW4gdmlzaWJpbGl0eW1hcF9waW4o KQpyZXR1cm5pbmcgZWFybHkgc2luY2UgdGhlIHNwZWNpZmllZCBwYWdlIHdhcyBhbHJlYWR5IHBy ZXNlbnQgYW5kIHBpbm5lZC4KVGh1cywgaXQgd291bGRuJ3QgaGF2ZSByZXN1bHRlZCBpbiBhbm90 aGVyIHBpbiBhbmQgd2UgY2FuIGp1c3QgZWxpbWluYXRlCnRoaXMgY2FsbCB0byB2aXNpYmlsaXR5 bWFwX3BpbigpLgoKSW5zcGlyZWQgYnkgYSByZWxhdGVkIHJlcG9ydCBieSBLaXJpbGwgUmVzaGtl IG9uIGFuIGluLXByb2dyZXNzIHBhdGNoLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMv bS9DQUxkU1NQaEFVNTZnMWdHVlQwJTJCd0c4UnJTV0U2cVc4VE9mTkpTMUhOQVdYNndQZ2JGQSU0 MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cu YyB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCmluZGV4IGViNGJkM2Q2YWUzLi5lM2Uw MjFmMmJkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC0yOTUsOCAr Mjk1LDggQEAgaGVhcF94bG9nX3Zpc2libGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCUxv Y2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAKIAkJcmVsbiA9IENyZWF0 ZUZha2VSZWxjYWNoZUVudHJ5KHJsb2NhdG9yKTsKLQkJdmlzaWJpbGl0eW1hcF9waW4ocmVsbiwg Ymxrbm8sICZ2bWJ1ZmZlcik7CiAKKwkJQXNzZXJ0KHZpc2liaWxpdHltYXBfcGluX29rKGJsa25v LCB2bWJ1ZmZlcikpOwogCQl2aXNpYmlsaXR5bWFwX3NldChyZWxuLCBibGtubywgSW52YWxpZEJ1 ZmZlciwgbHNuLCB2bWJ1ZmZlciwKIAkJCQkJCSAgeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jp em9uLCB2bWJpdHMpOwogCi0tIAoyLjQzLjAKCg== --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0003-Eliminate-xl_heap_visible-in-COPY-FREEZE.patch" Content-Disposition: attachment; filename="v7-0003-Eliminate-xl_heap_visible-in-COPY-FREEZE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84bk2 RnJvbSAyNjY0NTA2OTNmNGRmMjk1YTI1N2I4MzE2YjI4NWI4Y2ZiMjU3NjFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE3IEp1biAyMDI1IDE3OjIyOjEwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAwMy8yMl0gRWxpbWluYXRlIHhsX2hlYXBfdmlzaWJsZSBpbiBDT1BZIEZSRUVaRQoK SW5zdGVhZCBvZiBlbWl0dGluZyBhIHNlcGFyYXRlIFdBTCByZWNvcmQgZm9yIHNldHRpbmcgdGhl IFZNIGJpdHMgaW4KeGxfaGVhcF92aXNpYmxlLCBzcGVjaWZ5IHRoZSBjaGFuZ2VzIHRvIG1ha2Ug dG8gdGhlIFZNIGJsb2NrIGluIHRoZQp4bF9oZWFwX211bHRpX2luc2VydCByZWNvcmQgaW5zdGVh ZC4KCkF1dGhvcjogTWVsYW5pZSBQbGFnZW1hbiA8bWVsYW5pZXBsYWdlbWFuQGdtYWlsLmNvbT4K UmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+CkRpc2N1 c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3 UTNjTU9NeDFEaDNWTWhwOC1WN1NPTHhkSzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgIHwgNDggKysrKysrKysrKy0tLS0tLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jICAgfCAzOSArKysrKysrKysr KysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jIHwgNjcgKysrKysr KysrKysrKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNj LmMgIHwgIDUgKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmggICAgICB8ICAy ICsKIDUgZmlsZXMgY2hhbmdlZCwgMTM4IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggNzQ5MWNjM2NiOTMuLjRjZTBlYzYxNjkyIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMjUwNCw5ICsyNTA0LDYgQEAgaGVhcF9tdWx0 aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBu dHVwbGVzLAogCQkvKgogCQkgKiBJZiB0aGUgcGFnZSBpcyBhbGwgdmlzaWJsZSwgbmVlZCB0byBj bGVhciB0aGF0LCB1bmxlc3Mgd2UncmUgb25seQogCQkgKiBnb2luZyB0byBhZGQgZnVydGhlciBm cm96ZW4gcm93cyB0byBpdC4KLQkJICoKLQkJICogSWYgd2UncmUgb25seSBhZGRpbmcgYWxyZWFk eSBmcm96ZW4gcm93cyB0byBhIHByZXZpb3VzbHkgZW1wdHkKLQkJICogcGFnZSwgbWFyayBpdCBh cyBhbGwtdmlzaWJsZS4KIAkJICovCiAJCWlmIChQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpICYmICEo b3B0aW9ucyAmIEhFQVBfSU5TRVJUX0ZST1pFTikpCiAJCXsKQEAgLTI1MTYsOCArMjUxMywyMyBA QCBoZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3QgKipz bG90cywgaW50IG50dXBsZXMsCiAJCQkJCQkJCUJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlciks CiAJCQkJCQkJCXZtYnVmZmVyLCBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwogCQl9CisKKwkJ LyoKKwkJICogSWYgd2UncmUgb25seSBhZGRpbmcgYWxyZWFkeSBmcm96ZW4gcm93cyB0byBhIHBy ZXZpb3VzbHkgZW1wdHkKKwkJICogcGFnZSwgbWFyayBpdCBhcyBhbGwtZnJvemVuIGFuZCB1cGRh dGUgdGhlIHZpc2liaWxpdHkgbWFwLiBXZSdyZQorCQkgKiBhbHJlYWR5IGhvbGRpbmcgYSBwaW4g b24gdGhlIHZtYnVmZmVyLgorCQkgKi8KIAkJZWxzZSBpZiAoYWxsX2Zyb3plbl9zZXQpCisJCXsK KwkJCUFzc2VydCh2aXNpYmlsaXR5bWFwX3Bpbl9vayhCdWZmZXJHZXRCbG9ja051bWJlcihidWZm ZXIpLCB2bWJ1ZmZlcikpOwogCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CisJCQlMb2NrQnVm ZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCQkJdmlzaWJpbGl0eW1hcF9z ZXRfdm1ieXRlKHJlbGF0aW9uLAorCQkJCQkJCQkJIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZl ciksCisJCQkJCQkJCQkgdm1idWZmZXIsCisJCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfVklT SUJMRSB8CisJCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKKwkJfQogCiAJCS8q CiAJCSAqIFhYWCBTaG91bGQgd2Ugc2V0IFBhZ2VTZXRQcnVuYWJsZSBvbiB0aGlzIHBhZ2UgPyBT ZWUgaGVhcF9pbnNlcnQoKQpAQCAtMjU2NSw2ICsyNTc3LDEyIEBAIGhlYXBfbXVsdGlfaW5zZXJ0 KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQgbnR1cGxlcywK IAkJCXhscmVjLT5mbGFncyA9IDA7CiAJCQlpZiAoYWxsX3Zpc2libGVfY2xlYXJlZCkKIAkJCQl4 bHJlYy0+ZmxhZ3MgPSBYTEhfSU5TRVJUX0FMTF9WSVNJQkxFX0NMRUFSRUQ7CisKKwkJCS8qCisJ CQkgKiBXZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IGluY2x1ZGluZyBhIGNvbmZsaWN0IHhp ZCBpbiB0aGUKKwkJCSAqIFdBTCByZWNvcmQgYXMgSEVBUF9JTlNFUlRfRlJPWkVOIGludGVudGlv bmFsbHkgdmlvbGF0ZXMKKwkJCSAqIHZpc2liaWxpdHkgcnVsZXMuCisJCQkgKi8KIAkJCWlmIChh bGxfZnJvemVuX3NldCkKIAkJCQl4bHJlYy0+ZmxhZ3MgPSBYTEhfSU5TRVJUX0FMTF9GUk9aRU5f U0VUOwogCkBAIC0yNjI3LDcgKzI2NDUsMTAgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24g cmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCiAJCQlYTG9n QmVnaW5JbnNlcnQoKTsKIAkJCVhMb2dSZWdpc3RlckRhdGEoeGxyZWMsIHR1cGxlZGF0YSAtIHNj cmF0Y2guZGF0YSk7CisKIAkJCVhMb2dSZWdpc3RlckJ1ZmZlcigwLCBidWZmZXIsIFJFR0JVRl9T VEFOREFSRCB8IGJ1ZmZsYWdzKTsKKwkJCWlmIChhbGxfZnJvemVuX3NldCkKKwkJCQlYTG9nUmVn aXN0ZXJCdWZmZXIoMSwgdm1idWZmZXIsIDApOwogCiAJCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAs IHR1cGxlZGF0YSwgdG90YWxkYXRhbGVuKTsKIApAQCAtMjYzNywyOSArMjY1OCwxNCBAQCBoZWFw X211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3QgKipzbG90cywg aW50IG50dXBsZXMsCiAJCQlyZWNwdHIgPSBYTG9nSW5zZXJ0KFJNX0hFQVAyX0lELCBpbmZvKTsK IAogCQkJUGFnZVNldExTTihwYWdlLCByZWNwdHIpOworCQkJaWYgKGFsbF9mcm96ZW5fc2V0KQor CQkJCVBhZ2VTZXRMU04oQnVmZmVyR2V0UGFnZSh2bWJ1ZmZlciksIHJlY3B0cik7CiAJCX0KIAog CQlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKLQkJLyoKLQkJICogSWYgd2UndmUgZnJvemVuIGV2ZXJ5 dGhpbmcgb24gdGhlIHBhZ2UsIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eW1hcC4KLQkJICogV2UncmUg YWxyZWFkeSBob2xkaW5nIHBpbiBvbiB0aGUgdm1idWZmZXIuCi0JCSAqLwogCQlpZiAoYWxsX2Zy b3plbl9zZXQpCi0JCXsKLQkJCUFzc2VydChQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKTsKLQkJCUFz c2VydCh2aXNpYmlsaXR5bWFwX3Bpbl9vayhCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLCB2 bWJ1ZmZlcikpOwotCi0JCQkvKgotCQkJICogSXQncyBmaW5lIHRvIHVzZSBJbnZhbGlkVHJhbnNh Y3Rpb25JZCBoZXJlIC0gdGhpcyBpcyBvbmx5IHVzZWQKLQkJCSAqIHdoZW4gSEVBUF9JTlNFUlRf RlJPWkVOIGlzIHNwZWNpZmllZCwgd2hpY2ggaW50ZW50aW9uYWxseQotCQkJICogdmlvbGF0ZXMg dmlzaWJpbGl0eSBydWxlcy4KLQkJCSAqLwotCQkJdmlzaWJpbGl0eW1hcF9zZXQocmVsYXRpb24s IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlciksIGJ1ZmZlciwKLQkJCQkJCQkgIEludmFsaWRY TG9nUmVjUHRyLCB2bWJ1ZmZlciwKLQkJCQkJCQkgIEludmFsaWRUcmFuc2FjdGlvbklkLAotCQkJ CQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pF Tik7Ci0JCX0KKwkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAK IAkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCQluZG9uZSArPSBudGhpc3BhZ2U7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCBlM2UwMjFmMmJkZC4uY2Y0Mzdi MTRlZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtNTUyLDYgKzU1 Miw3IEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJ aW50CQkJaTsKIAlib29sCQlpc2luaXQgPSAoWExvZ1JlY0dldEluZm8ocmVjb3JkKSAmIFhMT0df SEVBUF9JTklUX1BBR0UpICE9IDA7CiAJWExvZ1JlZG9BY3Rpb24gYWN0aW9uOworCUJ1ZmZlcgkJ dm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJLyoKIAkgKiBJbnNlcnRpb24gZG9lc24ndCBv dmVyd3JpdGUgTVZDQyBkYXRhLCBzbyBubyBjb25mbGljdCBwcm9jZXNzaW5nIGlzCkBAIC01NzIs MTEgKzU3MywxMSBAQCBoZWFwX3hsb2dfbXVsdGlfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVj b3JkKQogCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9WSVNJQkxFX0NMRUFSRUQp CiAJewogCQlSZWxhdGlvbglyZWxuID0gQ3JlYXRlRmFrZVJlbGNhY2hlRW50cnkocmxvY2F0b3Ip OwotCQlCdWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAogCQl2aXNpYmlsaXR5bWFw X3BpbihyZWxuLCBibGtubywgJnZtYnVmZmVyKTsKIAkJdmlzaWJpbGl0eW1hcF9jbGVhcihyZWxu LCBibGtubywgdm1idWZmZXIsIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CiAJCVJlbGVhc2VC dWZmZXIodm1idWZmZXIpOworCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAJCUZyZWVGYWtl UmVsY2FjaGVFbnRyeShyZWxuKTsKIAl9CiAKQEAgLTY2Myw2ICs2NjQsNDIgQEAgaGVhcF94bG9n X211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAlpZiAoQnVmZmVySXNWYWxp ZChidWZmZXIpKQogCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CiAKKwlidWZmZXIgPSBJ bnZhbGlkQnVmZmVyOworCisJLyoKKwkgKiBOb3cgcmVhZCBhbmQgdXBkYXRlIHRoZSBWTSBibG9j ay4gRXZlbiBpZiB3ZSBza2lwcGVkIHVwZGF0aW5nIHRoZSBoZWFwCisJICogcGFnZSBkdWUgdG8g dGhlIGZpbGUgYmVpbmcgZHJvcHBlZCBvciB0cnVuY2F0ZWQgbGF0ZXIgaW4gcmVjb3ZlcnksIGl0 J3MKKwkgKiBzdGlsbCBzYWZlIHRvIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAuICBBbnkgV0FM IHJlY29yZCB0aGF0IGNsZWFycworCSAqIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgZG9lcyBzbyBi ZWZvcmUgY2hlY2tpbmcgdGhlIHBhZ2UgTFNOLCBzbyBhbnkKKwkgKiBiaXRzIHRoYXQgbmVlZCB0 byBiZSBjbGVhcmVkIHdpbGwgc3RpbGwgYmUgY2xlYXJlZC4KKwkgKgorCSAqIEl0IGlzIG9ubHkg b2theSB0byBzZXQgdGhlIFZNIGJpdHMgd2l0aG91dCBob2xkaW5nIHRoZSBoZWFwIHBhZ2UgbG9j aworCSAqIGJlY2F1c2Ugd2UgY2FuIGV4cGVjdCBubyBvdGhlciB3cml0ZXJzIG9mIHRoaXMgcGFn ZS4KKwkgKi8KKwlpZiAoeGxyZWMtPmZsYWdzICYgWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCAm JgorCQlYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQsIDEsIFJCTV9aRVJPX09O X0VSUk9SLCBmYWxzZSwKKwkJCQkJCQkJCSAgJnZtYnVmZmVyKSA9PSBCTEtfTkVFRFNfUkVETykK Kwl7CisJCVJlbGF0aW9uCXJlbG4gPSBDcmVhdGVGYWtlUmVsY2FjaGVFbnRyeShybG9jYXRvcik7 CisKKwkJQXNzZXJ0KHZpc2liaWxpdHltYXBfcGluX29rKGJsa25vLCB2bWJ1ZmZlcikpOworCQl2 aXNpYmlsaXR5bWFwX3NldF92bWJ5dGUocmVsbiwgYmxrbm8sCisJCQkJCQkJCSB2bWJ1ZmZlciwK KwkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJCQkgVklTSUJJTElU WU1BUF9BTExfRlJPWkVOKTsKKworCQkvKgorCQkgKiBJdCBpcyBub3QgcG9zc2libGUgdGhhdCB0 aGUgVk0gd2FzIGFscmVhZHkgc2V0IGZvciB0aGlzIGhlYXAgcGFnZSwKKwkJICogc28gdGhlIHZt YnVmZmVyIG11c3QgaGF2ZSBiZWVuIG1vZGlmaWVkIGFuZCBtYXJrZWQgZGlydHkuCisJCSAqLwor CQlBc3NlcnQoQnVmZmVySXNEaXJ0eSh2bWJ1ZmZlcikpOworCQlQYWdlU2V0TFNOKEJ1ZmZlckdl dFBhZ2Uodm1idWZmZXIpLCBsc24pOworCQlGcmVlRmFrZVJlbGNhY2hlRW50cnkocmVsbik7CisJ fQorCisJaWYgKEJ1ZmZlcklzVmFsaWQodm1idWZmZXIpKQorCQlVbmxvY2tSZWxlYXNlQnVmZmVy KHZtYnVmZmVyKTsKKwogCS8qCiAJICogSWYgdGhlIHBhZ2UgaXMgcnVubmluZyBsb3cgb24gZnJl ZSBzcGFjZSwgdXBkYXRlIHRoZSBGU00gYXMgd2VsbC4KIAkgKiBBcmJpdHJhcmlseSwgb3VyIGRl ZmluaXRpb24gb2YgImxvdyIgaXMgbGVzcyB0aGFuIDIwJS4gV2UgY2FuJ3QgZG8gbXVjaApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCmluZGV4IDc0NDBhNjVjNDA0Li41Njhi YzgzZGI5YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1h cC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwpAQCAtMTQs NyArMTQsOCBAQAogICoJCXZpc2liaWxpdHltYXBfY2xlYXIgIC0gY2xlYXIgYml0cyBmb3Igb25l IHBhZ2UgaW4gdGhlIHZpc2liaWxpdHkgbWFwCiAgKgkJdmlzaWJpbGl0eW1hcF9waW4JIC0gcGlu IGEgbWFwIHBhZ2UgZm9yIHNldHRpbmcgYSBiaXQKICAqCQl2aXNpYmlsaXR5bWFwX3Bpbl9vayAt IGNoZWNrIHdoZXRoZXIgY29ycmVjdCBtYXAgcGFnZSBpcyBhbHJlYWR5IHBpbm5lZAotICoJCXZp c2liaWxpdHltYXBfc2V0CSAtIHNldCBhIGJpdCBpbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UK KyAqCQl2aXNpYmlsaXR5bWFwX3NldAkgLSBzZXQgYSBiaXQgaW4gYSBwcmV2aW91c2x5IHBpbm5l ZCBwYWdlIGFuZCBsb2cKKyAqICAgICAgdmlzaWJpbGl0eW1hcF9zZXRfdm1ieXRlIC0gc2V0IGEg Yml0IGluIGEgcGlubmVkIHBhZ2UKICAqCQl2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMgLSBnZXQg c3RhdHVzIG9mIGJpdHMKICAqCQl2aXNpYmlsaXR5bWFwX2NvdW50ICAtIGNvdW50IG51bWJlciBv ZiBiaXRzIHNldCBpbiB2aXNpYmlsaXR5IG1hcAogICoJCXZpc2liaWxpdHltYXBfcHJlcGFyZV90 cnVuY2F0ZSAtCkBAIC0zMjEsNiArMzIyLDcwIEBAIHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCiAJcmV0dXJuIHN0YXR1 czsKIH0KIAorLyoKKyAqIFNldCBmbGFncyBpbiB0aGUgVk0gYmxvY2sgY29udGFpbmVkIGluIHRo ZSBwYXNzZWQgaW4gdm1CdWYuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBmb3IgY2FsbGVycyB3 aGljaCBpbmNsdWRlIHRoZSBWTSBjaGFuZ2VzIGluIHRoZSBzYW1lIFdBTAorICogcmVjb3JkIGFz IHRoZSBtb2RpZmljYXRpb25zIG9mIHRoZSBoZWFwIHBhZ2Ugd2hpY2ggcmVuZGVyZWQgaXQgYWxs LXZpc2libGUuCisgKiBDYWxsZXJzIHNlcGFyYXRlbHkgbG9nZ2luZyB0aGUgVk0gY2hhbmdlcyBz aG91bGQgaW52b2tlIHZpc2liaWxpdHltYXBfc2V0KCkKKyAqIGluc3RlYWQuCisgKgorICogQ2Fs bGVyIG11c3QgaGF2ZSBwaW5uZWQgYW5kIGV4Y2x1c2l2ZSBsb2NrZWQgdGhlIGNvcnJlY3QgYmxv Y2sgb2YgdGhlIFZNIGluCisgKiB2bUJ1Zi4gVGhpcyBibG9jayBzaG91bGQgY29udGFpbiB0aGUg Vk0gYml0cyBmb3IgdGhlIGdpdmVuIGhlYXBCbGsuCisgKgorICogRHVyaW5nIG5vcm1hbCBvcGVy YXRpb24gKGkuZS4gbm90IHJlY292ZXJ5KSwgdGhpcyBzaG91bGQgYmUgY2FsbGVkIGluIGEKKyAq IGNyaXRpY2FsIHNlY3Rpb24gd2hpY2ggYWxzbyBtYWtlcyBhbnkgbmVjZXNzYXJ5IGNoYW5nZXMg dG8gdGhlIGhlYXAgcGFnZQorICogYW5kLCBpZiByZWxldmFudCwgZW1pdHMgV0FMLgorICoKKyAq IENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgV0FMIGxvZ2dpbmcgdGhlIGNoYW5nZXMgdG8gdGhl IFZNIGJ1ZmZlciBhbmQgZm9yCisgKiBtYWtpbmcgYW55IGNoYW5nZXMgbmVlZGVkIHRvIHRoZSBh c3NvY2lhdGVkIGhlYXAgcGFnZS4gVGhpcyBpbmNsdWRlcworICogbWFpbnRhaW5pbmcgYW55IGlu dmFyaWFudHMgc3VjaCBhcyBlbnN1cmluZyB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgaGVhcEJsawor ICogaXMgcGlubmVkIGFuZCBleGNsdXNpdmUgbG9ja2VkLgorICovCit1aW50OAordmlzaWJpbGl0 eW1hcF9zZXRfdm1ieXRlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkJ CSBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdzKQoreworCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0g SEVBUEJMS19UT19NQVBCTE9DSyhoZWFwQmxrKTsKKwl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxL X1RPX01BUEJZVEUoaGVhcEJsayk7CisJdWludDgJCW1hcE9mZnNldCA9IEhFQVBCTEtfVE9fT0ZG U0VUKGhlYXBCbGspOworCVBhZ2UJCXBhZ2U7CisJdWludDgJICAgKm1hcDsKKwl1aW50OAkJc3Rh dHVzOworCisjaWZkZWYgVFJBQ0VfVklTSUJJTElUWU1BUAorCWVsb2coREVCVUcxLCAidm1fc2V0 IGZsYWdzIDB4JTAyWCBmb3IgJXMgJWQiLAorCQkgZmxhZ3MsIFJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHJlbCksIGhlYXBCbGspOworI2VuZGlmCisKKwkvKiBDYWxsIGluIHNhbWUgY3JpdGljYWwg c2VjdGlvbiB3aGVyZSBXQUwgaXMgZW1pdHRlZC4gKi8KKwlBc3NlcnQoSW5SZWNvdmVyeSB8fCBD cml0U2VjdGlvbkNvdW50ID4gMCk7CisKKwkvKiBGbGFncyBzaG91bGQgYmUgdmFsaWQuIEFsc28g bmV2ZXIgY2xlYXIgYml0cyB3aXRoIHRoaXMgZnVuY3Rpb24gKi8KKwlBc3NlcnQoKGZsYWdzICYg VklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSA9PSBmbGFncyk7CisKKwkvKiBNdXN0IG5ldmVyIHNl dCBhbGxfZnJvemVuIGJpdCB3aXRob3V0IGFsc28gc2V0dGluZyBhbGxfdmlzaWJsZSBiaXQgKi8K KwlBc3NlcnQoZmxhZ3MgIT0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKKworCS8qIENoZWNr IHRoYXQgd2UgaGF2ZSB0aGUgcmlnaHQgVk0gcGFnZSBwaW5uZWQgKi8KKwlpZiAoIUJ1ZmZlcklz VmFsaWQodm1CdWYpIHx8IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHZtQnVmKSAhPSBtYXBCbG9jaykK KwkJZWxvZyhFUlJPUiwgIndyb25nIFZNIGJ1ZmZlciBwYXNzZWQgdG8gdmlzaWJpbGl0eW1hcF9z ZXQiKTsKKworCUFzc2VydChCdWZmZXJJc0V4Y2x1c2l2ZUxvY2tlZCh2bUJ1ZikpOworCisJcGFn ZSA9IEJ1ZmZlckdldFBhZ2Uodm1CdWYpOworCW1hcCA9ICh1aW50OCAqKSBQYWdlR2V0Q29udGVu dHMocGFnZSk7CisKKwlzdGF0dXMgPSAobWFwW21hcEJ5dGVdID4+IG1hcE9mZnNldCkgJiBWSVNJ QklMSVRZTUFQX1ZBTElEX0JJVFM7CisJaWYgKGZsYWdzICE9IHN0YXR1cykKKwl7CisJCW1hcFtt YXBCeXRlXSB8PSAoZmxhZ3MgPDwgbWFwT2Zmc2V0KTsKKwkJTWFya0J1ZmZlckRpcnR5KHZtQnVm KTsKKwl9CisKKwlyZXR1cm4gc3RhdHVzOworfQorCiAvKgogICoJdmlzaWJpbGl0eW1hcF9nZXRf c3RhdHVzIC0gZ2V0IHN0YXR1cyBvZiBiaXRzCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mv aGVhcGRlc2MuYwppbmRleCA4MmI2MmM5NWRlNS4uYjQ4ZDdkYzFkMjQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJh Y2Nlc3MvaGVhcGFtX3hsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3Mvcm1ncmRlc2NfdXRpbHMuaCIK KyNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCIKICNpbmNsdWRlICJzdG9yYWdl L3N0YW5kYnlkZWZzLmgiCiAKIC8qCkBAIC0zNTQsNiArMzU1LDEwIEBAIGhlYXAyX2Rlc2MoU3Ry aW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlhcHBlbmRTdHJpbmdJbmZv KGJ1ZiwgIm50dXBsZXM6ICVkLCBmbGFnczogMHglMDJYIiwgeGxyZWMtPm50dXBsZXMsCiAJCQkJ CQkgeGxyZWMtPmZsYWdzKTsKIAorCQlpZiAoeGxyZWMtPmZsYWdzICYgWExIX0lOU0VSVF9BTExf RlJPWkVOX1NFVCkKKwkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCB2bV9mbGFnczogMHglMDJY IiwKKwkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8IFZJU0lCSUxJVFlNQVBfQUxM X0ZST1pFTik7CisKIAkJaWYgKFhMb2dSZWNIYXNCbG9ja0RhdGEocmVjb3JkLCAwKSAmJiAhaXNp bml0KQogCQl7CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgb2Zmc2V0czoiKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oCmluZGV4IGJlMjFjNmRkMWEzLi45Nzc1NjZmNmI5 OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oCkBAIC0zNyw2ICszNyw4IEBAIGV4dGVy biB1aW50OCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsCiAJCQkJCQkJICAgQnVmZmVy IHZtQnVmLAogCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKIAkJCQkJCQkgICB1 aW50OCBmbGFncyk7CitleHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9zZXRfdm1ieXRlKFJlbGF0 aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkJCQkJCSAgQnVmZmVyIHZtQnVmLCB1 aW50OCBmbGFncyk7CiBleHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKFJlbGF0 aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gdm9p ZCB2aXNpYmlsaXR5bWFwX2NvdW50KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgKmFsbF92aXNp YmxlLCBCbG9ja051bWJlciAqYWxsX2Zyb3plbik7CiBleHRlcm4gQmxvY2tOdW1iZXIgdmlzaWJp bGl0eW1hcF9wcmVwYXJlX3RydW5jYXRlKFJlbGF0aW9uIHJlbCwKLS0gCjIuNDMuMAoK --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0006-Use-xl_heap_prune-record-for-setting-empty-pages-.patch" Content-Disposition: attachment; filename="v7-0006-Use-xl_heap_prune-record-for-setting-empty-pages-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84bw5 RnJvbSA1NjJhZDZkZTI2YTgzOTI4ZTZiZmQxMWJkYzFkZDlkYjFkYTYwMWZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQyOjE5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAwNi8yMl0gVXNlIHhsX2hlYXBfcHJ1bmUgcmVjb3JkIGZvciBzZXR0aW5nIGVtcHR5 IHBhZ2VzCiBhbGwtdmlzaWJsZQoKQXMgcGFydCBvZiBhIHByb2plY3QgdG8gZWxpbWluYXRlIHhs X2hlYXBfdmlzaWJsZSByZWNvcmRzLCBlbGltaW5hdGUKdGhlaXIgdXNhZ2UgaW4gcGhhc2UgSSB2 YWN1dW0gb2YgZW1wdHkgcGFnZXMuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgIHwgMTQgKysrKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j IHwgNTUgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbS5oICAgICAgICAgIHwgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCA0NyBpbnNlcnRpb25zKCsp LCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IGQ5 YmEwZjk2ZTM0Li45N2U1MWY3ODg1NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMK QEAgLTgzNiw2ICs4MzYsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiBy ZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQljb25mbGljdF94aWQgPSBwcnN0YXRlLmxhdGVz dF94aWRfcmVtb3ZlZDsKIAogCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShyZWxhdGlvbiwg YnVmZmVyLAorCQkJCQkJCQkJICBmYWxzZSwKIAkJCQkJCQkJCSAgSW52YWxpZEJ1ZmZlciwgMCwg ZmFsc2UsCiAJCQkJCQkJCQkgIGNvbmZsaWN0X3hpZCwKIAkJCQkJCQkJCSAgdHJ1ZSwgcmVhc29u LApAQCAtMjA1MSw2ICsyMDUyLDkgQEAgaGVhcF9sb2dfZnJlZXplX3BsYW4oSGVhcFR1cGxlRnJl ZXplICp0dXBsZXMsIGludCBudHVwbGVzLAogICogY2FzZSwgdm1idWZmZXIgc2hvdWxkIGFscmVh ZHkgaGF2ZSBiZWVuIHVwZGF0ZWQgYW5kIG1hcmtlZCBkaXJ0eSBhbmQgc2hvdWxkCiAgKiBzdGls bCBiZSBwaW5uZWQgYW5kIGxvY2tlZC4KICAqCisgKiBmb3JjZV9oZWFwX2ZwaSBpbmRpY2F0ZXMg dGhhdCBhIGZ1bGwgcGFnZSBpbWFnZSBvZiB0aGUgaGVhcCBibG9jayBzaG91bGQgYmUKKyAqIGZv cmNlZC4KKyAqCiAgKiBzZXRfcGRfYWxsX3ZpcyBpbmRpY2F0ZXMgdGhhdCB3ZSBzZXQgUERfQUxM X1ZJU0lCTEUgYW5kIHRodXMgc2hvdWxkIHVwZGF0ZQogICogdGhlIHBhZ2UgTFNOIHdoZW4gY2hl Y2tzdW1zL3dhbF9sb2dfaGludHMgYXJlIGVuYWJsZWQgZXZlbiBpZiB3ZSBkaWQgbm90CiAgKiBw cnVuZSBvciBmcmVlemUgdHVwbGVzIG9uIHRoZSBwYWdlLgpAQCAtMjA2MSw2ICsyMDY1LDcgQEAg aGVhcF9sb2dfZnJlZXplX3BsYW4oSGVhcFR1cGxlRnJlZXplICp0dXBsZXMsIGludCBudHVwbGVz LAogICovCiB2b2lkCiBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9u LCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJICBib29sIGZvcmNlX2hlYXBfZnBpLAogCQkJCQkJICBC dWZmZXIgdm1idWZmZXIsCiAJCQkJCQkgIHVpbnQ4IHZtZmxhZ3MsCiAJCQkJCQkgIGJvb2wgc2V0 X3BkX2FsbF92aXMsCkBAIC0yMDg5LDEzICsyMDk0LDE2IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9m cmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJeGxyZWMuZmxhZ3MgPSAw OwogCXJlZ2J1Zl9mbGFncyA9IFJFR0JVRl9TVEFOREFSRDsKIAorCWlmIChmb3JjZV9oZWFwX2Zw aSkKKwkJcmVnYnVmX2ZsYWdzIHw9IFJFR0JVRl9GT1JDRV9JTUFHRTsKKwogCS8qCiAJICogV2Ug Y2FuIGF2b2lkIGFuIEZQSSBpZiB0aGUgb25seSBtb2RpZmljYXRpb24gd2UgYXJlIG1ha2luZyB0 byB0aGUgaGVhcAogCSAqIHBhZ2UgaXMgdG8gc2V0IFBEX0FMTF9WSVNJQkxFIGFuZCBjaGVja3N1 bXMvd2FsX2xvZ19oaW50cyBhcmUgZGlzYWJsZWQuCiAJICovCi0JaWYgKCFkb19wcnVuZSAmJgot CQluZnJvemVuID09IDAgJiYKLQkJKCFzZXRfcGRfYWxsX3ZpcyB8fCAhWExvZ0hpbnRCaXRJc05l ZWRlZCgpKSkKKwllbHNlIGlmICghZG9fcHJ1bmUgJiYKKwkJCSBuZnJvemVuID09IDAgJiYKKwkJ CSAoIXNldF9wZF9hbGxfdmlzIHx8ICFYTG9nSGludEJpdElzTmVlZGVkKCkpKQogCQlyZWdidWZf ZmxhZ3MgfD0gUkVHQlVGX05PX0lNQUdFOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYwppbmRleCA0NjBjZGJkODQxNy4uZDllMTk1MjY5ZDIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92YWN1dW1sYXp5LmMKQEAgLTE4NzgsMzMgKzE4NzgsNDcgQEAgbGF6eV9zY2FuX25ld19v cl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25v LAogCQkgKi8KIAkJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQogCQl7CisJCQl1aW50OAkJ bmV3X3ZtYml0cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCVZJU0lCSUxJVFlN QVBfQUxMX0ZST1pFTjsKKwogCQkJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CiAKLQkJCS8qIG1hcmsg YnVmZmVyIGRpcnR5IGJlZm9yZSB3cml0aW5nIGEgV0FMIHJlY29yZCAqLworCQkJUGFnZVNldEFs bFZpc2libGUocGFnZSk7CiAJCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKIAotCQkJLyoKLQkJCSAq IEl0J3MgcG9zc2libGUgdGhhdCBhbm90aGVyIGJhY2tlbmQgaGFzIGV4dGVuZGVkIHRoZSBoZWFw LAotCQkJICogaW5pdGlhbGl6ZWQgdGhlIHBhZ2UsIGFuZCB0aGVuIGZhaWxlZCB0byBXQUwtbG9n IHRoZSBwYWdlIGR1ZQotCQkJICogdG8gYW4gRVJST1IuICBTaW5jZSBoZWFwIGV4dGVuc2lvbiBp cyBub3QgV0FMLWxvZ2dlZCwgcmVjb3ZlcnkKLQkJCSAqIG1pZ2h0IHRyeSB0byByZXBsYXkgb3Vy IHJlY29yZCBzZXR0aW5nIHRoZSBwYWdlIGFsbC12aXNpYmxlIGFuZAotCQkJICogZmluZCB0aGF0 IHRoZSBwYWdlIGlzbid0IGluaXRpYWxpemVkLCB3aGljaCB3aWxsIGNhdXNlIGEgUEFOSUMuCi0J CQkgKiBUbyBwcmV2ZW50IHRoYXQsIGNoZWNrIHdoZXRoZXIgdGhlIHBhZ2UgaGFzIGJlZW4gcHJl dmlvdXNseQotCQkJICogV0FMLWxvZ2dlZCwgYW5kIGlmIG5vdCwgZG8gdGhhdCBub3cuCi0JCQkg Ki8KLQkJCWlmIChSZWxhdGlvbk5lZWRzV0FMKHZhY3JlbC0+cmVsKSAmJgotCQkJCVBhZ2VHZXRM U04ocGFnZSkgPT0gSW52YWxpZFhMb2dSZWNQdHIpCi0JCQkJbG9nX25ld3BhZ2VfYnVmZmVyKGJ1 ZiwgdHJ1ZSk7CisJCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUp OworCQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1ieXRlKHZhY3JlbC0+cmVsLCBibGtubywKKwkJCQkJ CQkJCSB2bWJ1ZmZlciwgbmV3X3ZtYml0cyk7CisKKwkJCWlmIChSZWxhdGlvbk5lZWRzV0FMKHZh Y3JlbC0+cmVsKSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIEl0J3MgcG9zc2libGUgdGhhdCBhbm90 aGVyIGJhY2tlbmQgaGFzIGV4dGVuZGVkIHRoZSBoZWFwLAorCQkJCSAqIGluaXRpYWxpemVkIHRo ZSBwYWdlLCBhbmQgdGhlbiBmYWlsZWQgdG8gV0FMLWxvZyB0aGUgcGFnZQorCQkJCSAqIGR1ZSB0 byBhbiBFUlJPUi4gIFNpbmNlIGhlYXAgZXh0ZW5zaW9uIGlzIG5vdCBXQUwtbG9nZ2VkLAorCQkJ CSAqIHJlY292ZXJ5IG1pZ2h0IHRyeSB0byByZXBsYXkgb3VyIHJlY29yZCBzZXR0aW5nIHRoZSBw YWdlCisJCQkJICogYWxsLXZpc2libGUgYW5kIGZpbmQgdGhhdCB0aGUgcGFnZSBpc24ndCBpbml0 aWFsaXplZCwgd2hpY2gKKwkJCQkgKiB3aWxsIGNhdXNlIGEgUEFOSUMuIFRvIHByZXZlbnQgdGhh dCwgaWYgdGhlIHBhZ2UgaGFzbid0CisJCQkJICogYmVlbiBwcmV2aW91c2x5IFdBTC1sb2dnZWQs IGZvcmNlIGEgaGVhcCBGUEkuCisJCQkJICovCisJCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6 ZSh2YWNyZWwtPnJlbCwgYnVmLAorCQkJCQkJCQkJCSAgUGFnZUdldExTTihwYWdlKSA9PSBJbnZh bGlkWExvZ1JlY1B0ciwKKwkJCQkJCQkJCQkgIHZtYnVmZmVyLAorCQkJCQkJCQkJCSAgbmV3X3Zt Yml0cywKKwkJCQkJCQkJCQkgIHRydWUsCisJCQkJCQkJCQkJICBJbnZhbGlkVHJhbnNhY3Rpb25J ZCwKKwkJCQkJCQkJCQkgIGZhbHNlLCBQUlVORV9WQUNVVU1fU0NBTiwKKwkJCQkJCQkJCQkgIE5V TEwsIDAsCisJCQkJCQkJCQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJ CQkJCQkgIE5VTEwsIDApOworCQkJfQogCi0JCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJ CXZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLAotCQkJCQkJCSAgSW52 YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkJICB2bWJ1ZmZlciwgSW52YWxpZFRyYW5zYWN0aW9uSWQs Ci0JCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKLQkJCQkJCQkgIFZJU0lCSUxJ VFlNQVBfQUxMX0ZST1pFTik7CiAJCQlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKLQkJCS8qIENvdW50 IHRoZSBuZXdseSBhbGwtZnJvemVuIHBhZ2VzIGZvciBsb2dnaW5nICovCisJCQlMb2NrQnVmZmVy KHZtYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCisJCQkvKiBDb3VudCB0aGUgbmV3bHkg YWxsLWZyb3plbiBwYWdlcyBmb3IgbG9nZ2luZy4gKi8KIAkJCXZhY3JlbC0+dm1fbmV3X3Zpc2li bGVfcGFnZXMrKzsKIAkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7CiAJ CX0KQEAgLTI5MTgsNiArMjkzMiw3IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRl ICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCWlmIChSZWxhdGlv bk5lZWRzV0FMKHZhY3JlbC0+cmVsKSkKIAl7CiAJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUo dmFjcmVsLT5yZWwsIGJ1ZmZlciwKKwkJCQkJCQkJICBmYWxzZSwKIAkJCQkJCQkJICB2bWJ1ZmZl ciwKIAkJCQkJCQkJICB2bWZsYWdzLAogCQkJCQkJCQkgIHNldF9wZF9hbGxfdmlzLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbS5oCmluZGV4IDhiNDcyOTVlZmEyLi5lNzEyOWE2NDRhMSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApA QCAtMzk0LDYgKzM5NCw3IEBAIGV4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKEJ1 ZmZlciBidWZmZXIsIGJvb2wgbHBfdHJ1bmNhdGVfb25seSwKIAkJCQkJCQkJCU9mZnNldE51bWJl ciAqbm93dW51c2VkLCBpbnQgbnVudXNlZCk7CiBleHRlcm4gdm9pZCBoZWFwX2dldF9yb290X3R1 cGxlcyhQYWdlIHBhZ2UsIE9mZnNldE51bWJlciAqcm9vdF9vZmZzZXRzKTsKIGV4dGVybiB2b2lk IGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZm ZXIsCisJCQkJCQkJCQkgIGJvb2wgZm9yY2VfaGVhcF9mcGksCiAJCQkJCQkJCQkgIEJ1ZmZlciB2 bWJ1ZmZlciwKIAkJCQkJCQkJCSAgdWludDggdm1mbGFncywKIAkJCQkJCQkJCSAgYm9vbCB2bV9t b2RpZmllZF9oZWFwX3BhZ2UsCi0tIAoyLjQzLjAKCg== --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0007-Combine-lazy_scan_prune-VM-corruption-cases.patch" Content-Disposition: attachment; filename="v7-0007-Combine-lazy_scan_prune-VM-corruption-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84bz6 RnJvbSBmMjM2NWY5OTlhNjUyYWFiZmRhMGE1NTc2MWViM2ZiYjg1MzUyOWFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjA0OjAzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAwNy8yMl0gQ29tYmluZSBsYXp5X3NjYW5fcHJ1bmUgVk0gY29ycnVwdGlvbiBjYXNl cwoKbGF6eV9zY2FuX3BydW5lKCkgdXBkYXRlcyB0aGUgdmlzaWJpbGl0eSBtYXAgYWZ0ZXIgcGhh c2UgSSBvZiBoZWFwCnZhY3V1bWluZy4gSXQgYWxzbyBjaGVja3MgYW5kIGZpeGVzIGNvcnJ1cHRp b24gaW4gdGhlIFZNLiBUaGUgY29ycnVwdGlvbgpjYXNlcyB3aGVyZSBtaXhlZCBpbiB3aXRoIHRo ZSBub3JtYWwgdmlzaWJpbGl0eSBtYXAgdXBkYXRlIGNhc2VzLgoKQ2FyZWZ1bCBzdHVkeSBvZiB0 aGUgb3JkZXJpbmcgb2YgdGhlIGN1cnJlbnQgbG9naWMgcmV2ZWFscyB0aGF0IHRoZQpjb3JydXB0 aW9uIGNhc2VzIGNhbiBiZSByZW9yZGVyZWQgYW5kIGV4dHJhY3RlZCBpbnRvIGEgc2VwYXJhdGUK ZnVuY3Rpb24uIFRoaXMgc2hvdWxkIHJlc3VsdCBpbiBubyBhZGRpdGlvbmFsIG92ZXJoZWFkIHdo ZW4gY29tcGFyZWQgdG8KcHJldmlvdXMgZXhlY3V0aW9uLgoKVGhpcyByZW9yZGVyaW5nIG1ha2Vz IGl0IGNsZWFyIHdoaWNoIGNhc2VzIGFyZSBhYm91dCBjb3JydXB0aW9uIGFuZAp3aGljaCBjYXNl cyBhcmUgbm9ybWFsIFZNIHVwZGF0ZXMuIFNlcGFyYXRpbmcgdGhlbSBhbHNvIG1ha2VzIGl0CnBv c3NpYmxlIHRvIGNvbWJpbmUgdGhlIG5vcm1hbCBjYXNlcyBpbiBhIGZ1dHVyZSBjb21taXQuIFRo aXMgd2lsbCBtYWtlCnRoZSBsb2dpYyBlYXNpZXIgdG8gdW5kZXJzdGFuZCBhbmQgYWxsb3cgZm9y IGZ1cnRoZXIgc2VwYXJhdGlvbiBvZiB0aGUKbG9naWMgdG8gYWxsb3cgdXBkYXRpbmcgdGhlIFZN IGluIHRoZSBzYW1lIHJlY29yZCBhcyBwcnVuaW5nIGFuZApmcmVlemluZyBpbiBwaGFzZSBJLgot LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8IDExNCArKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA3MyBpbnNlcnRpb25zKCspLCA0MSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggZDllMTk1 MjY5ZDIuLjA0YTdiNmM0MTgxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBA IC00MzEsNiArNDMxLDEyIEBAIHN0YXRpYyB2b2lkIGZpbmRfbmV4dF91bnNraXBwYWJsZV9ibG9j ayhMVlJlbFN0YXRlICp2YWNyZWwsIGJvb2wgKnNraXBzYWxsdmlzKTsKIHN0YXRpYyBib29sIGxh enlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJ CQkJCQkgICBCbG9ja051bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCQkgICBib29sIHNo YXJlbG9jaywgQnVmZmVyIHZtYnVmZmVyKTsKK3N0YXRpYyBib29sIGlkZW50aWZ5X2FuZF9maXhf dm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBCbG9ja051bWJl ciBoZWFwX2JsaywKKwkJCQkJCQkJCQkgICBCdWZmZXIgaGVhcF9idWZmZXIsIFBhZ2UgaGVhcF9w YWdlLAorCQkJCQkJCQkJCSAgIGJvb2wgaGVhcF9ibGtfa25vd25fYXYsCisJCQkJCQkJCQkJICAg aW50NjQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIpOwogc3Rh dGljIGludAlsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAog CQkJCQkJCUJsb2NrTnVtYmVyIGJsa25vLCBQYWdlIHBhZ2UsCiAJCQkJCQkJQnVmZmVyIHZtYnVm ZmVyLCBib29sIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSwKQEAgLTE5MzMsNiArMTkzOSw2 NiBAQCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1 ZiwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICogV2hlbiB1 cGRhdGluZyB0aGUgdmlzaWJpbGl0eSBtYXAgYWZ0ZXIgcGhhc2UgSSBoZWFwIHZhY3V1bWluZywg d2UgdGFrZSB0aGUKKyAqIG9wcG9ydHVuaXR5IHRvIGlkZW50aWZ5IGFuZCBmaXggYW55IFZNIGNv cnJ1cHRpb24uCisgKgorICogaGVhcF9ibGtfa25vd25fYXYgaXMgdGhlIHZpc2liaWxpdHkgc3Rh dHVzIG9mIHRoZSBoZWFwIHBhZ2UgY29sbGVjdGVkCisgKiB3aGlsZSBmaW5kaW5nIHRoZSBuZXh0 IHVuc2tpcHBhYmxlIGJsb2NrIGluIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpLgorICovCitz dGF0aWMgYm9vbAoraWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0 aW9uLAorCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLAorCQkJCQkJCSAgIEJ1ZmZlciBo ZWFwX2J1ZmZlciwgUGFnZSBoZWFwX3BhZ2UsCisJCQkJCQkJICAgYm9vbCBoZWFwX2Jsa19rbm93 bl9hdiwKKwkJCQkJCQkgICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAorCQkJCQkJCSAgIEJ1ZmZlciB2 bWJ1ZmZlcikKK3sKKwkvKgorCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUgdmlzaWJpbGl0 eSBtYXAgYml0IHNob3VsZCBuZXZlciBiZSBzZXQgaWYgdGhlCisJICogcGFnZS1sZXZlbCBiaXQg aXMgY2xlYXIuICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJpdCBnb3QKKwkgKiBj bGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNvIHdl IG11c3QgcmVjaGVjaworCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcgdGhh dCB0aGUgVk0gaXMgY29ycnVwdC4KKwkgKi8KKwlpZiAoaGVhcF9ibGtfa25vd25fYXYgJiYgIVBh Z2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJgorCQl2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMo cmVsYXRpb24sIGhlYXBfYmxrLCAmdm1idWZmZXIpICE9IDApCisJeworCQllbG9nKFdBUk5JTkcs ICJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkgbWFwIGJpdCBp cyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbGF0aW9uKSwgaGVhcF9ibGspOworCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbGF0 aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRT KTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJLyoKKwkgKiBJdCdzIHBvc3NpYmxlIGZvciB0aGUg dmFsdWUgcmV0dXJuZWQgYnkKKwkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklk KCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90CisJICogd3JvbmcgZm9yIHVzIHRvIHNl ZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUKKwkgKiB5 ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBzYWZlIHht aW4gdmFsdWUKKwkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3ROb25SZW1v dmFibGVUcmFuc2FjdGlvbklkKCkgaXMKKwkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0aW1lcyBy ZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCisJICogc28gaWYgd2Ug c2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxlcyB0aGF0 IHdlCisJICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1YWxseSBh cmUsIGFuZCB0aGUKKwkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCisJICoKKwkg KiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0aCBQRF9B TExfVklTSUJMRSBzZXQsCisJICogaG93ZXZlci4KKwkgKi8KKwlpZiAobmxwZGVhZF9pdGVtcyA+ IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpKQorCXsKKwkJZWxvZyhXQVJOSU5HLCAi cGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFsbC12aXNpYmxlIGlu IHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKKwkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShy ZWxhdGlvbiksIGhlYXBfYmxrKTsKKwkJUGFnZUNsZWFyQWxsVmlzaWJsZShoZWFwX3BhZ2UpOwor CQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWZmZXIpOworCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJl bGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9C SVRTKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCisKIC8qIHFz b3J0IGNvbXBhcmF0b3IgZm9yIHNvcnRpbmcgT2Zmc2V0TnVtYmVycyAqLwogc3RhdGljIGludAog Y21wT2Zmc2V0TnVtYmVycyhjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQpAQCAtMjA3OSw5 ICsyMTQ1LDE0IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJLyoKIAkg KiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24gaW5mb3JtYXRpb24g ZnJvbSB0aGUgVk0gKGFzCiAJICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBj YWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3plbiB2YXJpYWJsZXMK KwkgKiBhbGxfZnJvemVuIHZhcmlhYmxlcy4gU3RhcnQgYnkgbG9va2luZyBmb3IgYW55IFZNIGNv cnJ1cHRpb24uCiAJICovCi0JaWYgKCFhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJl c3VsdC5hbGxfdmlzaWJsZSkKKwlpZiAoaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKHZh Y3JlbC0+cmVsLCBibGtubywgYnVmLCBwYWdlLAorCQkJCQkJCQkJICAgYWxsX3Zpc2libGVfYWNj b3JkaW5nX3RvX3ZtLCBwcmVzdWx0LmxwZGVhZF9pdGVtcywgdm1idWZmZXIpKQorCXsKKwkJLyog RG9uJ3QgdXBkYXRlIHRoZSBWTSBpZiB3ZSBqdXN0IGNsZWFyZWQgY29ycnVwdGlvbiBpbiBpdCAq LworCX0KKwllbHNlIGlmICghYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmIHByZXN1bHQu YWxsX3Zpc2libGUpCiAJewogCQl1aW50OAkJb2xkX3ZtYml0czsKIAkJdWludDgJCWZsYWdzID0g VklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKQEAgLTIxMzMsNDUgKzIyMDQsNiBAQCBsYXp5X3Nj YW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQl9CiAJfQogCi0JLyoKLQkgKiBBcyBvZiBQ b3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUgc2V0 IGlmIHRoZQotCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93ZXZlciwgaXQncyBwb3Nz aWJsZSB0aGF0IHRoZSBiaXQgZ290Ci0JICogY2xlYXJlZCBhZnRlciBoZWFwX3ZhY19zY2FuX25l eHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJlY2hlY2sKLQkgKiB3aXRoIGJ1ZmZl ciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlzIGNvcnJ1cHQuCi0JICovCi0J ZWxzZSBpZiAoYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmICFQYWdlSXNBbGxWaXNpYmxl KHBhZ2UpICYmCi0JCQkgdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHZhY3JlbC0+cmVsLCBibGtu bywgJnZtYnVmZmVyKSAhPSAwKQotCXsKLQkJZWxvZyhXQVJOSU5HLCAicGFnZSBpcyBub3QgbWFy a2VkIGFsbC12aXNpYmxlIGJ1dCB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0IGluIHJlbGF0aW9u IFwiJXNcIiBwYWdlICV1IiwKLQkJCSB2YWNyZWwtPnJlbG5hbWUsIGJsa25vKTsKLQkJdmlzaWJp bGl0eW1hcF9jbGVhcih2YWNyZWwtPnJlbCwgYmxrbm8sIHZtYnVmZmVyLAotCQkJCQkJCVZJU0lC SUxJVFlNQVBfVkFMSURfQklUUyk7Ci0JfQotCi0JLyoKLQkgKiBJdCdzIHBvc3NpYmxlIGZvciB0 aGUgdmFsdWUgcmV0dXJuZWQgYnkKLQkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlv bklkKCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90Ci0JICogd3JvbmcgZm9yIHVzIHRv IHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUKLQkg KiB5ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBzYWZl IHhtaW4gdmFsdWUKLQkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3ROb25S ZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgaXMKLQkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0aW1l cyByZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCi0JICogc28gaWYg d2Ugc2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxlcyB0 aGF0IHdlCi0JICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1YWxs eSBhcmUsIGFuZCB0aGUKLQkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCi0JICoK LQkgKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0aCBQ RF9BTExfVklTSUJMRSBzZXQsCi0JICogaG93ZXZlci4KLQkgKi8KLQllbHNlIGlmIChwcmVzdWx0 LmxwZGVhZF9pdGVtcyA+IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKLQl7Ci0JCWVsb2co V0FSTklORywgInBhZ2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBhbGwt dmlzaWJsZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkgdmFjcmVsLT5yZWxuYW1l LCBibGtubyk7Ci0JCVBhZ2VDbGVhckFsbFZpc2libGUocGFnZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0 eShidWYpOwotCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHZhY3JlbC0+cmVsLCBibGtubywgdm1idWZm ZXIsCi0JCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKLQl9Ci0KIAkvKgogCSAqIElm IHRoZSBhbGwtdmlzaWJsZSBwYWdlIGlzIGFsbC1mcm96ZW4gYnV0IG5vdCBtYXJrZWQgYXMgc3Vj aCB5ZXQsIG1hcmsKIAkgKiBpdCBhcyBhbGwtZnJvemVuLiAgTm90ZSB0aGF0IGFsbF9mcm96ZW4g aXMgb25seSB2YWxpZCBpZiBhbGxfdmlzaWJsZSBpcwotLSAKMi40My4wCgo= --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0008-Combine-vacuum-phase-I-VM-update-cases.patch" Content-Disposition: attachment; filename="v7-0008-Combine-vacuum-phase-I-VM-update-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84c37 RnJvbSA1MWE1Y2MwYTMzMzRhODdhNzM1ZTBiYTVmYjIwZTRiZWE3MmFhYzUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjM1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAwOC8yMl0gQ29tYmluZSB2YWN1dW0gcGhhc2UgSSBWTSB1cGRhdGUgY2FzZXMKCldl IHVwZGF0ZSB0aGUgVk0gYWZ0ZXIgcGhhc2UgSSBvZiB2YWN1dW0gLS0gZWl0aGVyIHNldHRpbmcg Ym90aCB0aGUgVk0KYml0cyB3aGVuIGFsbCBiaXRzIGFyZSBjdXJyZW50bHkgdW5zZXQgb3Igc2V0 dGluZyBqdXN0IHRoZSBmcm96ZW4gYml0CndoZW4gdGhlIGFsbC12aXNpYmxlIGJpdCBpcyBhbHJl YWR5IHNldC4KClRob3NlIHR3byBjYXNlcyBzaGFyZWQgbXVjaCBvZiB0aGUgc2FtZSBjb2RlIC0t IGxlYWRpbmcgdG8gdW5uZWNlc3NhcnkKZHVwbGljYXRpb24uIFRoaXMgY29tbWl0IGNvbWJpbmVz IHRoZW0sIHdoaWNoIGlzIHNpbXBsZXIgYW5kIGVhc2llciB0bwp1bmRlcnN0YW5kLgoKVGhlIGNv bWJpbmVkIGNhc2UgYWxzbyBoYXBwZW5zIHRvIGZpeCBhIGxvbmdzdGFuZGluZyBidWcgd2hlcmUg aWYgd2UgYXJlCm9ubHkgc2V0dGluZyBhbiBhbGwtdmlzaWJsZSBwYWdlIGFsbC1mcm96ZW4gYW5k IGNoZWNrc3Vtcy93YWxfbG9nX2hpbnRzCmFyZSBlbmFibGVkLCB3ZSB3b3VsZCBmYWlsIHRvIHNl dCB0aGUgYnVmZmVyIGRpcnR5IGJlZm9yZSBzZXR0aW5nIHRoZQpwYWdlIExTTiBpbiB2aXNpYmls aXR5bWFwX3NldCgpLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8 IDEwMSArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzMiBpbnNl cnRpb25zKCspLCA2OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKaW5kZXggMDRhN2I2YzQxODEuLmY2Y2RkOWU2ODI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCkBAIC0yMTUyLDExICsyMTUyLDI2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJl bFN0YXRlICp2YWNyZWwsCiAJewogCQkvKiBEb24ndCB1cGRhdGUgdGhlIFZNIGlmIHdlIGp1c3Qg Y2xlYXJlZCBjb3JydXB0aW9uIGluIGl0ICovCiAJfQotCWVsc2UgaWYgKCFhbGxfdmlzaWJsZV9h Y2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5hbGxfdmlzaWJsZSkKKworCS8qCisJICogSWYgdGhl IHBhZ2UgaXNuJ3QgeWV0IG1hcmtlZCBhbGwtdmlzaWJsZSBpbiB0aGUgVk0gb3IgaXQgaXMgYW5k IG5lZWRzCisJICogdG8gbWUgbWFya2VkIGFsbC1mcm96ZW4sIHVwZGF0ZSB0aGUgVk0gTm90ZSB0 aGF0IGFsbF9mcm96ZW4gaXMgb25seQorCSAqIHZhbGlkIGlmIGFsbF92aXNpYmxlIGlzIHRydWUs IHNvIHdlIG11c3QgY2hlY2sgYm90aCBhbGxfdmlzaWJsZSBhbmQKKwkgKiBhbGxfZnJvemVuLgor CSAqLworCWVsc2UgaWYgKHByZXN1bHQuYWxsX3Zpc2libGUgJiYKKwkJCSAoIWFsbF92aXNpYmxl X2FjY29yZGluZ190b192bSB8fAorCQkJICAocHJlc3VsdC5hbGxfZnJvemVuICYmICFWTV9BTExf RlJPWkVOKHZhY3JlbC0+cmVsLCBibGtubywgJnZtYnVmZmVyKSkpKQogCXsKIAkJdWludDgJCW9s ZF92bWJpdHM7CiAJCXVpbnQ4CQlmbGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CiAK KwkJLyoKKwkJICogSWYgdGhlIHBhZ2UgaXMgYWxsLWZyb3plbiwgd2UgY2FuIHBhc3MgSW52YWxp ZFRyYW5zYWN0aW9uSWQgYXMgb3VyCisJCSAqIGN1dG9mZl94aWQsIHNpbmNlIGEgc25hcHNob3RD b25mbGljdEhvcml6b24gc3VmZmljaWVudCB0byBtYWtlCisJCSAqIGV2ZXJ5dGhpbmcgc2FmZSBm b3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMgd2VyZQorCQkgKiBmcm96 ZW4uCisJCSAqLwogCQlpZiAocHJlc3VsdC5hbGxfZnJvemVuKQogCQl7CiAJCQlBc3NlcnQoIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikpOwpAQCAtMjE2 OSwyMSArMjE4NCwyOSBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQkg KiBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNldCBib3RoIGJpdHMg c28gdGhhdCB3ZQogCQkgKiBnZXQgYmFjayBpbiBzeW5jLgogCQkgKgotCQkgKiBOQjogSWYgdGhl IGhlYXAgcGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhlIFZNIGJpdCBpcyBub3Qgc2V0LCB3ZQot CQkgKiBkb24ndCBuZWVkIHRvIGRpcnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dldmVyLCBpZiBjaGVj a3N1bXMgYXJlCi0JCSAqIGVuYWJsZWQsIHdlIGRvIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhl IGhlYXAgcGFnZSBpcyBkaXJ0aWVkCi0JCSAqIGJlZm9yZSBwYXNzaW5nIGl0IHRvIHZpc2liaWxp dHltYXBfc2V0KCksIGJlY2F1c2UgaXQgbWF5IGJlIGxvZ2dlZC4KLQkJICogR2l2ZW4gdGhhdCB0 aGlzIHNpdHVhdGlvbiBzaG91bGQgb25seSBoYXBwZW4gaW4gcmFyZSBjYXNlcyBhZnRlciBhCi0J CSAqIGNyYXNoLCBpdCBpcyBub3Qgd29ydGggb3B0aW1pemluZy4KKwkJICogSWYgdGhlIGhlYXAg cGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhlIFZNIGJpdCBpcyBub3Qgc2V0LCB3ZSBkb24ndAor CQkgKiBuZWVkIHRvIGRpcnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dldmVyLCBpZiBjaGVja3N1bXMg YXJlIGVuYWJsZWQsIHdlCisJCSAqIGRvIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGhlYXAg cGFnZSBpcyBkaXJ0aWVkIGJlZm9yZSBwYXNzaW5nCisJCSAqIGl0IHRvIHZpc2liaWxpdHltYXBf c2V0KCksIGJlY2F1c2UgaXQgbWF5IGJlIGxvZ2dlZC4KIAkJICovCi0JCVBhZ2VTZXRBbGxWaXNp YmxlKHBhZ2UpOwotCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKKwkJaWYgKCFQYWdlSXNBbGxWaXNp YmxlKHBhZ2UpIHx8IFhMb2dIaW50Qml0SXNOZWVkZWQoKSkKKwkJeworCQkJUGFnZVNldEFsbFZp c2libGUocGFnZSk7CisJCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKKwkJfQorCiAJCW9sZF92bWJp dHMgPSB2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKIAkJCQkJCQkJ CSAgIEludmFsaWRYTG9nUmVjUHRyLAogCQkJCQkJCQkJICAgdm1idWZmZXIsIHByZXN1bHQudm1f Y29uZmxpY3RfaG9yaXpvbiwKIAkJCQkJCQkJCSAgIGZsYWdzKTsKIAogCQkvKgorCQkgKiBFdmVu IGlmIHdlIGFyZSBvbmx5IHNldHRpbmcgdGhlIGFsbC1mcm96ZW4gYml0LCB0aGVyZSBpcyBhIHNt YWxsCisJCSAqIGNoYW5jZSB0aGF0IHRoZSBWTSB3YXMgbW9kaWZpZWQgc29tZXRpbWUgYmV0d2Vl biBzZXR0aW5nCisJCSAqIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSBhbmQgY2hlY2tpbmcg dGhlIHZpc2liaWxpdHkgZHVyaW5nCisJCSAqIHBydW5pbmcuIENoZWNrIHRoZSByZXR1cm4gdmFs dWUgb2Ygb2xkX3ZtYml0cyB0byBlbnN1cmUgdGhlCisJCSAqIHZpc2liaWxpdHkgbWFwIGNvdW50 ZXJzIHVzZWQgZm9yIGxvZ2dpbmcgYXJlIGFjY3VyYXRlLgorCQkgKgogCQkgKiBJZiB0aGUgcGFn ZSB3YXNuJ3QgYWxyZWFkeSBzZXQgYWxsLXZpc2libGUgYW5kL29yIGFsbC1mcm96ZW4gaW4gdGhl CiAJCSAqIFZNLCBjb3VudCBpdCBhcyBuZXdseSBzZXQgZm9yIGxvZ2dpbmcuCiAJCSAqLwpAQCAt MjIwNCw2NiArMjIyNyw2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJ CX0KIAl9CiAKLQkvKgotCSAqIElmIHRoZSBhbGwtdmlzaWJsZSBwYWdlIGlzIGFsbC1mcm96ZW4g YnV0IG5vdCBtYXJrZWQgYXMgc3VjaCB5ZXQsIG1hcmsKLQkgKiBpdCBhcyBhbGwtZnJvemVuLiAg Tm90ZSB0aGF0IGFsbF9mcm96ZW4gaXMgb25seSB2YWxpZCBpZiBhbGxfdmlzaWJsZSBpcwotCSAq IHRydWUsIHNvIHdlIG11c3QgY2hlY2sgYm90aCBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbi4K LQkgKi8KLQllbHNlIGlmIChhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5h bGxfdmlzaWJsZSAmJgotCQkJIHByZXN1bHQuYWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTih2 YWNyZWwtPnJlbCwgYmxrbm8sICZ2bWJ1ZmZlcikpCi0JewotCQl1aW50OAkJb2xkX3ZtYml0czsK LQotCQkvKgotCQkgKiBBdm9pZCByZWx5aW5nIG9uIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192 bSBhcyBhIHByb3h5IGZvciB0aGUKLQkJICogcGFnZS1sZXZlbCBQRF9BTExfVklTSUJMRSBiaXQg YmVpbmcgc2V0LCBzaW5jZSBpdCBtaWdodCBoYXZlIGJlY29tZQotCQkgKiBzdGFsZSAtLSBldmVu IHdoZW4gYWxsX3Zpc2libGUgaXMgc2V0Ci0JCSAqLwotCQlpZiAoIVBhZ2VJc0FsbFZpc2libGUo cGFnZSkpCi0JCXsKLQkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJTWFya0J1ZmZlckRp cnR5KGJ1Zik7Ci0JCX0KLQotCQkvKgotCQkgKiBTZXQgdGhlIHBhZ2UgYWxsLWZyb3plbiAoYW5k IGFsbC12aXNpYmxlKSBpbiB0aGUgVk0uCi0JCSAqCi0JCSAqIFdlIGNhbiBwYXNzIEludmFsaWRU cmFuc2FjdGlvbklkIGFzIG91ciBjdXRvZmZfeGlkLCBzaW5jZSBhCi0JCSAqIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uIHN1ZmZpY2llbnQgdG8gbWFrZSBldmVyeXRoaW5nIHNhZmUgZm9yIFJFRE8K LQkJICogd2FzIGxvZ2dlZCB3aGVuIHRoZSBwYWdlJ3MgdHVwbGVzIHdlcmUgZnJvemVuLgotCQkg Ki8KLQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hv cml6b24pKTsKLQkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBi bGtubywgYnVmLAotCQkJCQkJCQkJICAgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkJCQkgICB2 bWJ1ZmZlciwgSW52YWxpZFRyYW5zYWN0aW9uSWQsCi0JCQkJCQkJCQkgICBWSVNJQklMSVRZTUFQ X0FMTF9WSVNJQkxFIHwKLQkJCQkJCQkJCSAgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7Ci0K LQkJLyoKLQkJICogVGhlIHBhZ2Ugd2FzIGxpa2VseSBhbHJlYWR5IHNldCBhbGwtdmlzaWJsZSBp biB0aGUgVk0uIEhvd2V2ZXIsCi0JCSAqIHRoZXJlIGlzIGEgc21hbGwgY2hhbmNlIHRoYXQgaXQg d2FzIG1vZGlmaWVkIHNvbWV0aW1lIGJldHdlZW4KLQkJICogc2V0dGluZyBhbGxfdmlzaWJsZV9h Y2NvcmRpbmdfdG9fdm0gYW5kIGNoZWNraW5nIHRoZSB2aXNpYmlsaXR5Ci0JCSAqIGR1cmluZyBw cnVuaW5nLiBDaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIG9sZF92bWJpdHMgYW55d2F5IHRvCi0J CSAqIGVuc3VyZSB0aGUgdmlzaWJpbGl0eSBtYXAgY291bnRlcnMgdXNlZCBmb3IgbG9nZ2luZyBh cmUgYWNjdXJhdGUuCi0JCSAqLwotCQlpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FM TF9WSVNJQkxFKSA9PSAwKQotCQl7Ci0JCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7 Ci0JCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotCQkJKnZtX3BhZ2Vf ZnJvemVuID0gdHJ1ZTsKLQkJfQotCi0JCS8qCi0JCSAqIFdlIGFscmVhZHkgY2hlY2tlZCB0aGF0 IHRoZSBwYWdlIHdhcyBub3Qgc2V0IGFsbC1mcm96ZW4gaW4gdGhlIFZNCi0JCSAqIGFib3ZlLCBz byB3ZSBkb24ndCBuZWVkIHRvIHRlc3QgdGhlIHZhbHVlIG9mIG9sZF92bWJpdHMuCi0JCSAqLwot CQllbHNlCi0JCXsKLQkJCXZhY3JlbC0+dm1fbmV3X2Zyb3plbl9wYWdlcysrOwotCQkJKnZtX3Bh Z2VfZnJvemVuID0gdHJ1ZTsKLQkJfQotCX0KLQogCXJldHVybiBwcmVzdWx0Lm5kZWxldGVkOwog fQogCi0tIAoyLjQzLjAKCg== --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0009-Find-and-fix-VM-corruption-in-heap_page_prune_and.patch" Content-Disposition: attachment; filename="v7-0009-Find-and-fix-VM-corruption-in-heap_page_prune_and.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84c68 RnJvbSAzNzU4NWIwZGJhODJiMTY5YmZkNjk5MmY1MTNhOGE2ZTc5MWJiNGMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjQ1OjU5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAwOS8yMl0gRmluZCBhbmQgZml4IFZNIGNvcnJ1cHRpb24gaW4KIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplCgpGdXR1cmUgY29tbWl0cyB3aWxsIHVwZGF0ZSB0aGUgVk0gaW4gdGhl IHNhbWUgY3JpdGljYWwgc2VjdGlvbiBhbmQgV0FMCnJlY29yZCBhcyBwcnVuaW5nIGFuZCBmcmVl emluZy4gRm9yIGVhc2Ugb2YgcmV2aWV3LCB0aGlzIGNvbW1pdCBtYWtlcwpvbmUgc3RlcCB0b3dh cmQgZG9pbmcgdGhpcy4gSXQgbW92ZXMgdGhlIFZNIGNvcnJ1cHRpb24gaGFuZGxpbmcgY2FzZSB0 bwpoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jICB8IDg3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8IDc3ICsrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgIHwgIDQgKysKIDMgZmls ZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwgNzIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA5N2U1MWY3ODg1NC4uNDk2YjcwZTMxOGYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAi YWNjZXNzL3RyYW5zYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgogI2luY2x1ZGUgImFj Y2Vzcy94bG9naW5zZXJ0LmgiCi0jaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgi CisjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCIKICNpbmNsdWRlICJjb21tYW5kcy92 YWN1dW0uaCIKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCkBAIC0xNzcsNiArMTc3LDEzIEBAIHN0YXRpYyB2b2lkIGhlYXBfcHJ1bmVfcmVj b3JkX3VuY2hhbmdlZF9scF9yZWRpcmVjdChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROCiAK IHN0YXRpYyB2b2lkIHBhZ2VfdmVyaWZ5X3JlZGlyZWN0cyhQYWdlIHBhZ2UpOwogCitzdGF0aWMg Ym9vbCBpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsYXRpb24sCisJ CQkJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssCisJCQkJCQkJCQkJICAgQnVmZmVyIGhl YXBfYnVmZmVyLCBQYWdlIGhlYXBfcGFnZSwKKwkJCQkJCQkJCQkgICBib29sIGhlYXBfYmxrX2tu b3duX2F2LAorCQkJCQkJCQkJCSAgIGludDY0IG5scGRlYWRfaXRlbXMsCisJCQkJCQkJCQkJICAg QnVmZmVyIHZtYnVmZmVyKTsKKwogCiAvKgogICogT3B0aW9uYWxseSBwcnVuZSBhbmQgcmVwYWly IGZyYWdtZW50YXRpb24gaW4gdGhlIHNwZWNpZmllZCBwYWdlLgpAQCAtMjYxLDcgKzI2OCw5IEBA IGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCiAJ CQkgKiBub3QgdGhlIHJlbGF0aW9uIGhhcyBpbmRleGVzLCBzaW5jZSB3ZSBjYW5ub3Qgc2FmZWx5 IGRldGVybWluZQogCQkJICogdGhhdCBkdXJpbmcgb24tYWNjZXNzIHBydW5pbmcgd2l0aCB0aGUg Y3VycmVudCBpbXBsZW1lbnRhdGlvbi4KIAkJCSAqLwotCQkJaGVhcF9wYWdlX3BydW5lX2FuZF9m cmVlemUocmVsYXRpb24sIGJ1ZmZlciwgdmlzdGVzdCwgMCwKKwkJCWhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKHJlbGF0aW9uLCBidWZmZXIsIGZhbHNlLAorCQkJCQkJCQkJICAgSW52YWxpZEJ1 ZmZlciwKKwkJCQkJCQkJCSAgIHZpc3Rlc3QsIDAsCiAJCQkJCQkJCQkgICBOVUxMLCAmcHJlc3Vs dCwgUFJVTkVfT05fQUNDRVNTLCAmZHVtbXlfb2ZmX2xvYywgTlVMTCwgTlVMTCk7CiAKIAkJCS8q CkBAIC0yOTQsNiArMzAzLDY0IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIpCiAJfQogfQogCisvKgorICogV2hlbiB1cGRhdGluZyB0aGUgdmlz aWJpbGl0eSBtYXAgYWZ0ZXIgcGhhc2UgSSBoZWFwIHZhY3V1bWluZywgd2UgdGFrZSB0aGUKKyAq IG9wcG9ydHVuaXR5IHRvIGlkZW50aWZ5IGFuZCBmaXggYW55IFZNIGNvcnJ1cHRpb24uCisgKgor ICogaGVhcF9ibGtfa25vd25fYXYgaXMgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBoZWFw IHBhZ2UgY29sbGVjdGVkCisgKiB3aGlsZSBmaW5kaW5nIHRoZSBuZXh0IHVuc2tpcHBhYmxlIGJs b2NrIGluIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpLgorICovCitzdGF0aWMgYm9vbAoraWRl bnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJCSAg IEJsb2NrTnVtYmVyIGhlYXBfYmxrLAorCQkJCQkJCSAgIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFn ZSBoZWFwX3BhZ2UsCisJCQkJCQkJICAgYm9vbCBoZWFwX2Jsa19rbm93bl9hdiwKKwkJCQkJCQkg ICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAorCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlcikKK3sKKwkv KgorCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IHNob3Vs ZCBuZXZlciBiZSBzZXQgaWYgdGhlCisJICogcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIuICBIb3dl dmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJpdCBnb3QKKwkgKiBjbGVhcmVkIGFmdGVyIGhl YXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNvIHdlIG11c3QgcmVjaGVjawor CSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcgdGhhdCB0aGUgVk0gaXMgY29y cnVwdC4KKwkgKi8KKwlpZiAoaGVhcF9ibGtfa25vd25fYXYgJiYgIVBhZ2VJc0FsbFZpc2libGUo aGVhcF9wYWdlKSAmJgorCQl2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBf YmxrLCAmdm1idWZmZXIpICE9IDApCisJeworCQllbG9nKFdBUk5JTkcsICJwYWdlIGlzIG5vdCBt YXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkgbWFwIGJpdCBpcyBzZXQgaW4gcmVsYXRp b24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9u KSwgaGVhcF9ibGspOworCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Jsaywg dm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKKwkJcmV0dXJuIHRy dWU7CisJfQorCisJLyoKKwkgKiBJdCdzIHBvc3NpYmxlIGZvciB0aGUgdmFsdWUgcmV0dXJuZWQg YnkKKwkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgdG8gbW92ZSBiYWNr d2FyZHMsIHNvIGl0J3Mgbm90CisJICogd3JvbmcgZm9yIHVzIHRvIHNlZSB0dXBsZXMgdGhhdCBh cHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUKKwkgKiB5ZXQsIHdoaWxlIFBEX0FM TF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBzYWZlIHhtaW4gdmFsdWUKKwkgKiBu ZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlv bklkKCkgaXMKKwkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0aW1lcyByZXR1cm5zIGEgdmFsdWUg dGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCisJICogc28gaWYgd2Ugc2VlIHRoYXQgY29udHJh ZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxlcyB0aGF0IHdlCisJICogdGhpbmsg YXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1YWxseSBhcmUsIGFuZCB0aGUKKwkg KiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCisJICoKKwkgKiBUaGVyZSBzaG91bGQg bmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0aCBQRF9BTExfVklTSUJMRSBzZXQs CisJICogaG93ZXZlci4KKwkgKi8KKwlpZiAobmxwZGVhZF9pdGVtcyA+IDAgJiYgUGFnZUlzQWxs VmlzaWJsZShoZWFwX3BhZ2UpKQorCXsKKwkJZWxvZyhXQVJOSU5HLCAicGFnZSBjb250YWluaW5n IExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFsbC12aXNpYmxlIGluIHJlbGF0aW9uIFwiJXNc IiBwYWdlICV1IiwKKwkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbiksIGhlYXBf YmxrKTsKKwkJUGFnZUNsZWFyQWxsVmlzaWJsZShoZWFwX3BhZ2UpOworCQlNYXJrQnVmZmVyRGly dHkoaGVhcF9idWZmZXIpOworCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Js aywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKKwkJcmV0dXJu IHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQogCiAvKgogICogUHJ1bmUgYW5kIHJlcGFp ciBmcmFnbWVudGF0aW9uIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoZQpAQCAt MzE0LDYgKzM4MSwxMCBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBC dWZmZXIgYnVmZmVyKQogICogSEVBUF9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIG5vdCBzZXQsIGJl Y2F1c2UgYXQgdGhlIG1vbWVudCBvbmx5IGNhbGxlcnMKICAqIHRoYXQgYWxzbyBmcmVlemUgbmVl ZCB0aGF0IGluZm9ybWF0aW9uLgogICoKKyAqIGJsa19rbm93bl9hdiBpcyB0aGUgdmlzaWJpbGl0 eSBzdGF0dXMgb2YgdGhlIGhlYXAgYmxvY2sgYXMgb2YgdGhlIGxhc3QgY2FsbAorICogdG8gZmlu ZF9uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKCkuIHZtYnVmZmVyIGlzIHRoZSBidWZmZXIgdGhhdCBt YXkgYWxyZWFkeQorICogY29udGFpbiB0aGUgcmVxdWlyZWQgYmxvY2sgb2YgdGhlIHZpc2liaWxp dHkgbWFwLgorICoKICAqIHZpc3Rlc3QgaXMgdXNlZCB0byBkaXN0aW5ndWlzaCB3aGV0aGVyIHR1 cGxlcyBhcmUgREVBRCBvciBSRUNFTlRMWV9ERUFECiAgKiAoc2VlIGhlYXBfcHJ1bmVfc2F0aXNm aWVzX3ZhY3V1bSkuCiAgKgpAQCAtMzQ5LDYgKzQyMCw4IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQo UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCiAgKi8KIHZvaWQKIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJ ICAgYm9vbCBibGtfa25vd25fYXYsCisJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIsCiAJCQkJCQkg ICBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCSAgIGludCBvcHRpb25zLAogCQkJCQkJ ICAgc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnMsCkBAIC04OTcsNiArOTcwLDE2IEBAIGhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVy LAogCXByZXN1bHQtPmxwZGVhZF9pdGVtcyA9IHByc3RhdGUubHBkZWFkX2l0ZW1zOwogCS8qIHRo ZSBwcmVzdWx0LT5kZWFkb2Zmc2V0cyBhcnJheSB3YXMgYWxyZWFkeSBmaWxsZWQgaW4gKi8KIAor CS8qCisJICogQ2xlYXIgYW55IFZNIGNvcnJ1cHRpb24uIFRoaXMgZG9lcyBub3QgbmVlZCB0byBi ZSBkb25lIGluIGEgY3JpdGljYWwKKwkgKiBzZWN0aW9uLgorCSAqLworCXByZXN1bHQtPnZtX2Nv cnJ1cHRpb24gPSBmYWxzZTsKKwlpZiAob3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVf Vk0pCisJCXByZXN1bHQtPnZtX2NvcnJ1cHRpb24gPSBpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1 cHRpb24ocmVsYXRpb24sCisJCQkJCQkJCQkJCQkJCQkJYmxvY2tubywgYnVmZmVyLCBwYWdlLAor CQkJCQkJCQkJCQkJCQkJCWJsa19rbm93bl9hdiwKKwkJCQkJCQkJCQkJCQkJCQlwcnN0YXRlLmxw ZGVhZF9pdGVtcywgdm1idWZmZXIpOwogCWlmIChwcnN0YXRlLmZyZWV6ZSkKIAl7CiAJCWlmIChw cmVzdWx0LT5uZnJvemVuID4gMCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRl eCBmNmNkZDllNjgyOC4uMGMxMjFmZGY0ZTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMKQEAgLTQzMSwxMiArNDMxLDYgQEAgc3RhdGljIHZvaWQgZmluZF9uZXh0X3Vuc2tpcHBh YmxlX2Jsb2NrKExWUmVsU3RhdGUgKnZhY3JlbCwgYm9vbCAqc2tpcHNhbGx2aXMpOwogc3RhdGlj IGJvb2wgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBi dWYsCiAJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGJsa25vLCBQYWdlIHBhZ2UsCiAJCQkJCQkJCSAg IGJvb2wgc2hhcmVsb2NrLCBCdWZmZXIgdm1idWZmZXIpOwotc3RhdGljIGJvb2wgaWRlbnRpZnlf YW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIEJs b2NrTnVtYmVyIGhlYXBfYmxrLAotCQkJCQkJCQkJCSAgIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFn ZSBoZWFwX3BhZ2UsCi0JCQkJCQkJCQkJICAgYm9vbCBoZWFwX2Jsa19rbm93bl9hdiwKLQkJCQkJ CQkJCQkgICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAotCQkJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZl cik7CiBzdGF0aWMgaW50CWxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZl ciBidWYsCiAJCQkJCQkJQmxvY2tOdW1iZXIgYmxrbm8sIFBhZ2UgcGFnZSwKIAkJCQkJCQlCdWZm ZXIgdm1idWZmZXIsIGJvb2wgYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtLApAQCAtMTkzOSw2 NSArMTkzMyw2IEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBC dWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywKIAlyZXR1cm4gZmFsc2U7CiB9CiAKLS8qCi0g KiBXaGVuIHVwZGF0aW5nIHRoZSB2aXNpYmlsaXR5IG1hcCBhZnRlciBwaGFzZSBJIGhlYXAgdmFj dXVtaW5nLCB3ZSB0YWtlIHRoZQotICogb3Bwb3J0dW5pdHkgdG8gaWRlbnRpZnkgYW5kIGZpeCBh bnkgVk0gY29ycnVwdGlvbi4KLSAqCi0gKiBoZWFwX2Jsa19rbm93bl9hdiBpcyB0aGUgdmlzaWJp bGl0eSBzdGF0dXMgb2YgdGhlIGhlYXAgcGFnZSBjb2xsZWN0ZWQKLSAqIHdoaWxlIGZpbmRpbmcg dGhlIG5leHQgdW5za2lwcGFibGUgYmxvY2sgaW4gaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCku Ci0gKi8KLXN0YXRpYyBib29sCi1pZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRp b24gcmVsYXRpb24sCi0JCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssCi0JCQkJCQkJICAg QnVmZmVyIGhlYXBfYnVmZmVyLCBQYWdlIGhlYXBfcGFnZSwKLQkJCQkJCQkgICBib29sIGhlYXBf YmxrX2tub3duX2F2LAotCQkJCQkJCSAgIGludDY0IG5scGRlYWRfaXRlbXMsCi0JCQkJCQkJICAg QnVmZmVyIHZtYnVmZmVyKQotewotCS8qCi0JICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRoZSB2 aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKLQkgKiBwYWdlLWxl dmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgYml0IGdv dAotCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNhbGxl ZCwgc28gd2UgbXVzdCByZWNoZWNrCi0JICogd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1 ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgotCSAqLwotCWlmIChoZWFwX2Jsa19rbm93bl9h diAmJiAhUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpICYmCi0JCXZpc2liaWxpdHltYXBfZ2V0 X3N0YXR1cyhyZWxhdGlvbiwgaGVhcF9ibGssICZ2bWJ1ZmZlcikgIT0gMCkKLQl7Ci0JCWVsb2co V0FSTklORywgInBhZ2UgaXMgbm90IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBt YXAgYml0IGlzIHNldCBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkgUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pLCBoZWFwX2Jsayk7Ci0JCXZpc2liaWxpdHltYXBfY2xl YXIocmVsYXRpb24sIGhlYXBfYmxrLCB2bWJ1ZmZlciwKLQkJCQkJCQlWSVNJQklMSVRZTUFQX1ZB TElEX0JJVFMpOwotCQlyZXR1cm4gdHJ1ZTsKLQl9Ci0KLQkvKgotCSAqIEl0J3MgcG9zc2libGUg Zm9yIHRoZSB2YWx1ZSByZXR1cm5lZCBieQotCSAqIEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5z YWN0aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QKLQkgKiB3cm9uZyBmb3Ig dXMgdG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJsZSB0byBldmVyeW9u ZQotCSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQuIFRoZSByZWFs IHNhZmUgeG1pbiB2YWx1ZQotCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJkcywgYnV0IEdldE9sZGVz dE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcwotCSAqIGNvbnNlcnZhdGl2ZSBhbmQgc29t ZXRpbWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBzbWFsbCwKLQkgKiBz byBpZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgdHVw bGVzIHRoYXQgd2UKLQkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8gZXZlcnlvbmUgeWV0IGFj dHVhbGx5IGFyZSwgYW5kIHRoZQotCSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcgaXMgY29ycmVjdC4K LQkgKgotCSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1zIG9uIGEgcGFnZSB3 aXRoIFBEX0FMTF9WSVNJQkxFIHNldCwKLQkgKiBob3dldmVyLgotCSAqLwotCWlmIChubHBkZWFk X2l0ZW1zID4gMCAmJiBQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkpCi0JewotCQllbG9nKFdB Uk5JTkcsICJwYWdlIGNvbnRhaW5pbmcgTFBfREVBRCBpdGVtcyBpcyBtYXJrZWQgYXMgYWxsLXZp c2libGUgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbGF0aW9uKSwgaGVhcF9ibGspOwotCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKGhlYXBf cGFnZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0eShoZWFwX2J1ZmZlcik7Ci0JCXZpc2liaWxpdHltYXBf Y2xlYXIocmVsYXRpb24sIGhlYXBfYmxrLCB2bWJ1ZmZlciwKLQkJCQkJCQlWSVNJQklMSVRZTUFQ X1ZBTElEX0JJVFMpOwotCQlyZXR1cm4gdHJ1ZTsKLQl9Ci0KLQlyZXR1cm4gZmFsc2U7Ci19Ci0K IAogLyogcXNvcnQgY29tcGFyYXRvciBmb3Igc29ydGluZyBPZmZzZXROdW1iZXJzICovCiBzdGF0 aWMgaW50CkBAIC0yMDU2LDExICsxOTkxLDE0IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRl ICp2YWNyZWwsCiAJICogdHVwbGVzLiBQcnVuaW5nIHdpbGwgaGF2ZSBkZXRlcm1pbmVkIHdoZXRo ZXIgb3Igbm90IHRoZSBwYWdlIGlzCiAJICogYWxsLXZpc2libGUuCiAJICovCi0JcHJ1bmVfb3B0 aW9ucyA9IEhFQVBfUEFHRV9QUlVORV9GUkVFWkU7CisJcHJ1bmVfb3B0aW9ucyA9IEhFQVBfUEFH RV9QUlVORV9GUkVFWkUgfCBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNOwogCWlmICh2YWNyZWwt Pm5pbmRleGVzID09IDApCiAJCXBydW5lX29wdGlvbnMgfD0gSEVBUF9QQUdFX1BSVU5FX01BUktf VU5VU0VEX05PVzsKIAotCWhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKHJlbCwgYnVmLCB2YWNy ZWwtPnZpc3Rlc3QsIHBydW5lX29wdGlvbnMsCisJaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo cmVsLCBidWYsCisJCQkJCQkJICAgYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtLAorCQkJCQkJ CSAgIHZtYnVmZmVyLAorCQkJCQkJCSAgIHZhY3JlbC0+dmlzdGVzdCwgcHJ1bmVfb3B0aW9ucywK IAkJCQkJCQkgICAmdmFjcmVsLT5jdXRvZmZzLCAmcHJlc3VsdCwgUFJVTkVfVkFDVVVNX1NDQU4s CiAJCQkJCQkJICAgJnZhY3JlbC0+b2ZmbnVtLAogCQkJCQkJCSAgICZ2YWNyZWwtPk5ld1JlbGZy b3plblhpZCwgJnZhY3JlbC0+TmV3UmVsbWluTXhpZCk7CkBAIC0yMTQ1LDEwICsyMDgzLDkgQEAg bGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkvKgogCSAqIEhhbmRsZSBzZXR0 aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSAo YXMKIAkgKiBvZiBsYXN0IGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIGNhbGwpLCBhbmQgZnJv bSBhbGxfdmlzaWJsZSBhbmQKLQkgKiBhbGxfZnJvemVuIHZhcmlhYmxlcy4gU3RhcnQgYnkgbG9v a2luZyBmb3IgYW55IFZNIGNvcnJ1cHRpb24uCisJICogYWxsX2Zyb3plbiB2YXJpYWJsZXMuCiAJ ICovCi0JaWYgKGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbih2YWNyZWwtPnJlbCwgYmxr bm8sIGJ1ZiwgcGFnZSwKLQkJCQkJCQkJCSAgIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSwg cHJlc3VsdC5scGRlYWRfaXRlbXMsIHZtYnVmZmVyKSkKKwlpZiAocHJlc3VsdC52bV9jb3JydXB0 aW9uKQogCXsKIAkJLyogRG9uJ3QgdXBkYXRlIHRoZSBWTSBpZiB3ZSBqdXN0IGNsZWFyZWQgY29y cnVwdGlvbiBpbiBpdCAqLwogCX0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBlNzEyOWE2NDRhMS4uMGM3 ZWI1ZTQ2ZjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTQyLDYgKzQyLDcgQEAKIC8qICJvcHRpb25z IiBmbGFnIGJpdHMgZm9yIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplICovCiAjZGVmaW5lIEhF QVBfUEFHRV9QUlVORV9NQVJLX1VOVVNFRF9OT1cJCSgxIDw8IDApCiAjZGVmaW5lIEhFQVBfUEFH RV9QUlVORV9GUkVFWkUJCQkJKDEgPDwgMSkKKyNkZWZpbmUgSEVBUF9QQUdFX1BSVU5FX1VQREFU RV9WTQkJCSgxIDw8IDIpCiAKIHR5cGVkZWYgc3RydWN0IEJ1bGtJbnNlcnRTdGF0ZURhdGEgKkJ1 bGtJbnNlcnRTdGF0ZTsKIHN0cnVjdCBUdXBsZVRhYmxlU2xvdDsKQEAgLTI0Nyw2ICsyNDgsNyBA QCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVJlc3VsdAogCWJvb2wJCWFsbF92aXNpYmxlOwog CWJvb2wJCWFsbF9mcm96ZW47CiAJVHJhbnNhY3Rpb25JZCB2bV9jb25mbGljdF9ob3Jpem9uOwor CWJvb2wJCXZtX2NvcnJ1cHRpb247CiAKIAkvKgogCSAqIFdoZXRoZXIgb3Igbm90IHRoZSBwYWdl IG1ha2VzIHJlbCB0cnVuY2F0aW9uIHVuc2FmZS4gIFRoaXMgaXMgc2V0IHRvCkBAIC0zODAsNiAr MzgyLDggQEAgZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzKFJl bGF0aW9uIHJlbCwKIHN0cnVjdCBHbG9iYWxWaXNTdGF0ZTsKIGV4dGVybiB2b2lkIGhlYXBfcGFn ZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpOwogZXh0ZXJuIHZv aWQgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBi dWZmZXIsCisJCQkJCQkJCQkgICBib29sIGJsa19rbm93bl9hdiwKKwkJCQkJCQkJCSAgIEJ1ZmZl ciB2bWJ1ZmZlciwKIAkJCQkJCQkJCSAgIHN0cnVjdCBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwK IAkJCQkJCQkJCSAgIGludCBvcHRpb25zLAogCQkJCQkJCQkJICAgc3RydWN0IFZhY3V1bUN1dG9m ZnMgKmN1dG9mZnMsCi0tIAoyLjQzLjAKCg== --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0011-Update-VM-in-pruneheap.c.patch" Content-Disposition: attachment; filename="v7-0011-Update-VM-in-pruneheap.c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84ca10 RnJvbSAwYzBlNjNjMGQ3Njc1NTU5YWNkMWY2OTIwM2JhNzQyM2NkMjg2MzUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDIgSnVuIDIwMjUgMTE6MDQ6MTQgLTA0MDAKU3ViamVjdDogW1BB VENIIHY3IDExLzIyXSBVcGRhdGUgVk0gaW4gcHJ1bmVoZWFwLmMKCkFzIGEgc3RlcCB0b3dhcmQg dXBkYXRpbmcgdGhlIFZNIGluIHRoZSBzYW1lIGNyaXRpY2FsIHNlY3Rpb24gYW5kIFdBTApyZWNv cmQgYXMgcHJ1bmluZyBhbmQgZnJlZXppbmcgKGR1cmluZyBwaGFzZSBJIG9mIHZhY3V1bWluZyks IGZpcnN0IG1vdmUKdGhlIFZNIHVwZGF0ZSAoc3RpbGwgaW4gaXRzIG93biBjcml0aWNhbCBzZWN0 aW9uIGFuZCBXQUwgcmVjb3JkKSBpbnRvCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkuIFRo aXMgbWFrZXMgcmV2aWV3IGVhc2llci4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYyAgfCA5OSArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCA5OSArKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgfCAxNSArKystLQogMyBmaWxl cyBjaGFuZ2VkLCAxMDYgaW5zZXJ0aW9ucygrKSwgMTA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggNmMzNjUzZTc3NmMuLjA1MjI3Y2UwMzM5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMzYwLDcgKzM2MCw4IEBAIGlkZW50aWZ5 X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxhdGlvbiwKIAogLyoKICAqIFBydW5l IGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBhbmQgcG90ZW50aWFsbHkgZnJlZXplIHR1cGxlcyBv biB0aGUKLSAqIHNwZWNpZmllZCBwYWdlLgorICogc3BlY2lmaWVkIHBhZ2UuIElmIHRoZSBwYWdl J3MgdmlzaWJpbGl0eSBzdGF0dXMgaGFzIGNoYW5nZWQsIHVwZGF0ZSBpdCBpbgorICogdGhlIFZN LgogICoKICAqIENhbGxlciBtdXN0IGhhdmUgcGluIGFuZCBidWZmZXIgY2xlYW51cCBsb2NrIG9u IHRoZSBwYWdlLiAgTm90ZSB0aGF0IHdlCiAgKiBkb24ndCB1cGRhdGUgdGhlIEZTTSBpbmZvcm1h dGlvbiBmb3IgcGFnZSBvbiBjYWxsZXIncyBiZWhhbGYuICBDYWxsZXIgbWlnaHQKQEAgLTQzNiw2 ICs0MzcsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKIAlib29sCQlkb19mcmVlemU7CiAJYm9vbAkJZG9fcHJ1bmU7CiAJYm9v bAkJZG9faGludDsKKwl1aW50OAkJdm1mbGFncyA9IDA7CisJdWludDgJCW9sZF92bWJpdHMgPSAw OwogCWJvb2wJCWhpbnRfYml0X2ZwaTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uu d2FsX2ZwaTsKIApAQCAtOTM2LDcgKzkzOSw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqCiAJICogTm93IHRoYXQgZnJl ZXppbmcgaGFzIGJlZW4gZmluYWxpemVkLCB1bnNldCBhbGxfdmlzaWJsZSBpZiB0aGVyZSBhcmUK IAkgKiBhbnkgTFBfREVBRCBpdGVtcyBvbiB0aGUgcGFnZS4gIEl0IG5lZWRzIHRvIHJlZmxlY3Qg dGhlIHByZXNlbnQgc3RhdGUKLQkgKiBvZiB0aGUgcGFnZSwgYXMgZXhwZWN0ZWQgYnkgb3VyIGNh bGxlci4KKwkgKiBvZiB0aGUgcGFnZSwgYXMgZXhwZWN0ZWQgZm9yIHVwZGF0aW5nIHRoZSB2aXNp YmlsaXR5IG1hcC4KIAkgKi8KIAlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLmxw ZGVhZF9pdGVtcyA9PSAwKQogCXsKQEAgLTk1MiwzMSArOTU1LDkxIEBAIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCXByZXN1bHQt Pmhhc3R1cCA9IHByc3RhdGUuaGFzdHVwOwogCiAJLyoKLQkgKiBGb3IgY2FsbGVycyBwbGFubmlu ZyB0byB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29uZmxpY3QgaG9yaXpvbgotCSAq IGZvciB0aGF0IHJlY29yZCBtdXN0IGJlIHRoZSBuZXdlc3QgeG1pbiBvbiB0aGUgcGFnZS4gIEhv d2V2ZXIsIGlmIHRoZQotCSAqIHBhZ2UgaXMgY29tcGxldGVseSBmcm96ZW4sIHRoZXJlIGNhbiBi ZSBubyBjb25mbGljdCBhbmQgdGhlCi0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBzaG91bGQgcmVt YWluIEludmFsaWRUcmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRlcwotCSAqIHRoZSBjYXNlIHRo YXQgd2UganVzdCBmcm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBydW5lLWZyZWV6ZSByZWNvcmQK LQkgKiBpbmNsdWRlZCB0aGUgY29uZmxpY3QgWElEIGFscmVhZHkgc28gdGhlIGNhbGxlciBkb2Vz bid0IG5lZWQgaXQuCisJICogSWYgdXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29u ZmxpY3QgaG9yaXpvbiBmb3IgdGhhdCByZWNvcmQKKwkgKiBtdXN0IGJlIHRoZSBuZXdlc3QgeG1p biBvbiB0aGUgcGFnZS4gIEhvd2V2ZXIsIGlmIHRoZSBwYWdlIGlzCisJICogY29tcGxldGVseSBm cm96ZW4sIHRoZXJlIGNhbiBiZSBubyBjb25mbGljdCBhbmQgdGhlIHZtX2NvbmZsaWN0X2hvcml6 b24KKwkgKiBzaG91bGQgcmVtYWluIEludmFsaWRUcmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRl cyB0aGUgY2FzZSB0aGF0IHdlCisJICoganVzdCBmcm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBy dW5lLWZyZWV6ZSByZWNvcmQgaW5jbHVkZWQgdGhlCisJICogY29uZmxpY3QgWElEIGFscmVhZHkg c28gdGhlIFZNIHVwZGF0ZSByZWNvcmQgZG9lc24ndCBuZWVkIGl0LgogCSAqLwogCWlmIChwcmVz dWx0LT5hbGxfZnJvemVuKQogCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CiAJZWxzZQogCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0g cHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQ7CiAKLQlwcmVzdWx0LT5scGRlYWRfaXRlbXMg PSBwcnN0YXRlLmxwZGVhZF9pdGVtczsKLQkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMgYXJy YXkgd2FzIGFscmVhZHkgZmlsbGVkIGluICovCi0KIAkvKgotCSAqIENsZWFyIGFueSBWTSBjb3Jy dXB0aW9uLiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgZG9uZSBpbiBhIGNyaXRpY2FsCi0JICog c2VjdGlvbi4KKwkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24g aW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gKGFzCisJICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25l eHRfYmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCisJICogYWxsX2Zyb3pl biB2YXJpYWJsZXMuCiAJICovCi0JcHJlc3VsdC0+dm1fY29ycnVwdGlvbiA9IGZhbHNlOwogCWlm IChvcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSkKLQkJcHJlc3VsdC0+dm1fY29y cnVwdGlvbiA9IGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihyZWxhdGlvbiwKLQkJCQkJ CQkJCQkJCQkJCQlibG9ja25vLCBidWZmZXIsIHBhZ2UsCi0JCQkJCQkJCQkJCQkJCQkJYmxrX2tu b3duX2F2LAotCQkJCQkJCQkJCQkJCQkJCXByc3RhdGUubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlcik7 CisJeworCQlpZiAoaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKHJlbGF0aW9uLAorCQkJ CQkJCQkJCSAgIGJsb2Nrbm8sIGJ1ZmZlciwgcGFnZSwKKwkJCQkJCQkJCQkgICBibGtfa25vd25f YXYsCisJCQkJCQkJCQkJICAgcHJzdGF0ZS5scGRlYWRfaXRlbXMsIHZtYnVmZmVyKSkKKwkJewor CQkJLyogSWYgd2UgZml4IGNvcnJ1cHRpb24sIGRvbid0IHVwZGF0ZSB0aGUgVk0gZnVydGhlciAq LworCQl9CisKKwkJLyoKKwkJICogSWYgdGhlIHBhZ2UgaXNuJ3QgeWV0IG1hcmtlZCBhbGwtdmlz aWJsZSBpbiB0aGUgVk0gb3IgaXQgaXMgYW5kCisJCSAqIG5lZWRzIHRvIG1lIG1hcmtlZCBhbGwt ZnJvemVuLCB1cGRhdGUgdGhlIFZNIE5vdGUgdGhhdCBhbGxfZnJvemVuCisJCSAqIGlzIG9ubHkg dmFsaWQgaWYgYWxsX3Zpc2libGUgaXMgdHJ1ZSwgc28gd2UgbXVzdCBjaGVjayBib3RoCisJCSAq IGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuLgorCQkgKi8KKwkJZWxzZSBpZiAocHJlc3VsdC0+ YWxsX3Zpc2libGUgJiYKKwkJCQkgKCFibGtfa25vd25fYXYgfHwKKwkJCQkgIChwcmVzdWx0LT5h bGxfZnJvemVuICYmICFWTV9BTExfRlJPWkVOKHJlbGF0aW9uLCBibG9ja25vLCAmdm1idWZmZXIp KSkpCisJCXsKKwkJCUFzc2VydChwcnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKTsKKwkJCXZtZmxh Z3MgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOworCisJCQkvKgorCQkJICogSWYgdGhlIHBh Z2UgaXMgYWxsLWZyb3plbiwgd2UgY2FuIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMKKwkJ CSAqIG91ciBjdXRvZmZfeGlkLCBzaW5jZSBhIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIHN1ZmZp Y2llbnQgdG8KKwkJCSAqIG1ha2UgZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdhcyBsb2dnZWQg d2hlbiB0aGUgcGFnZSdzIHR1cGxlcworCQkJICogd2VyZSBmcm96ZW4uCisJCQkgKi8KKwkJCWlm IChwcmVzdWx0LT5hbGxfZnJvemVuKQorCQkJeworCQkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElz VmFsaWQocHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbikpOworCQkJCXZtZmxhZ3MgfD0gVklT SUJJTElUWU1BUF9BTExfRlJPWkVOOworCQkJfQorCisJCQkvKgorCQkJICogSXQncyBwb3NzaWJs ZSBmb3IgdGhlIFZNIGJpdCB0byBiZSBjbGVhciBhbmQgdGhlIHBhZ2UtbGV2ZWwgYml0CisJCQkg KiB0byBiZSBzZXQgaWYgY2hlY2tzdW1zIGFyZSBub3QgZW5hYmxlZC4KKwkJCSAqCisJCQkgKiBB bmQgZXZlbiBpZiB3ZSBhcmUganVzdCBwbGFubmluZyB0byB1cGRhdGUgdGhlIGZyb3plbiBiaXQg aW4KKwkJCSAqIHRoZSBWTSwgd2Ugc2hvdWxkbid0IHJlbHkgb24gYWxsX3Zpc2libGVfYWNjb3Jk aW5nX3RvX3ZtIGFzIGEKKwkJCSAqIHByb3h5IGZvciB0aGUgcGFnZS1sZXZlbCBQRF9BTExfVklT SUJMRSBiaXQgYmVpbmcgc2V0LCBzaW5jZSBpdAorCQkJICogbWlnaHQgaGF2ZSBiZWNvbWUgc3Rh bGUuCisJCQkgKgorCQkJICogSWYgdGhlIGhlYXAgcGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhl IFZNIGJpdCBpcyBub3Qgc2V0LCB3ZQorCQkJICogZG9uJ3QgbmVlZCB0byBkaXJ0eSB0aGUgaGVh cCBwYWdlLiAgSG93ZXZlciwgaWYgY2hlY2tzdW1zIGFyZQorCQkJICogZW5hYmxlZCwgd2UgZG8g bmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaGVhcCBwYWdlIGlzIGRpcnRpZWQKKwkJCSAqIGJl Zm9yZSBwYXNzaW5nIGl0IHRvIHZpc2liaWxpdHltYXBfc2V0KCksIGJlY2F1c2UgaXQgbWF5IGJl CisJCQkgKiBsb2dnZWQuCisJCQkgKi8KKwkJCWlmICghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSB8 fCBYTG9nSGludEJpdElzTmVlZGVkKCkpCisJCQl7CisJCQkJUGFnZVNldEFsbFZpc2libGUocGFn ZSk7CisJCQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisJCQl9CisKKwkJCW9sZF92bWJpdHMg PSB2aXNpYmlsaXR5bWFwX3NldChyZWxhdGlvbiwgYmxvY2tubywgYnVmZmVyLCBJbnZhbGlkWExv Z1JlY1B0ciwKKwkJCQkJCQkJCQkgICB2bWJ1ZmZlciwgcHJlc3VsdC0+dm1fY29uZmxpY3RfaG9y aXpvbiwKKwkJCQkJCQkJCQkgICB2bWZsYWdzKTsKKwkJfQorCX0KKworCXByZXN1bHQtPmxwZGVh ZF9pdGVtcyA9IHByc3RhdGUubHBkZWFkX2l0ZW1zOworCS8qIHRoZSBwcmVzdWx0LT5kZWFkb2Zm c2V0cyBhcnJheSB3YXMgYWxyZWFkeSBmaWxsZWQgaW4gKi8KKworCXByZXN1bHQtPm9sZF92bWJp dHMgPSBvbGRfdm1iaXRzOworCXByZXN1bHQtPm5ld192bWJpdHMgPSB2bWZsYWdzOworCiAJaWYg KHByc3RhdGUuZnJlZXplKQogCXsKIAkJaWYgKHByZXN1bHQtPm5mcm96ZW4gPiAwKQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDBjMTIxZmRmNGU2Li5jNDllODFiYzVkZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTkzMyw3ICsxOTMzLDYgQEAg bGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJs b2NrTnVtYmVyIGJsa25vLAogCXJldHVybiBmYWxzZTsKIH0KIAotCiAvKiBxc29ydCBjb21wYXJh dG9yIGZvciBzb3J0aW5nIE9mZnNldE51bWJlcnMgKi8KIHN0YXRpYyBpbnQKIGNtcE9mZnNldE51 bWJlcnMoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKQEAgLTE5NDksNyArMTk0OCw4IEBA IGNtcE9mZnNldE51bWJlcnMoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKICAqIHZtYnVm ZmVyIGlzIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgVk0gYmxvY2sgd2l0aCB2aXNpYmlsaXR5 IGluZm9ybWF0aW9uCiAgKiBmb3IgdGhlIGhlYXAgYmxvY2ssIGJsa25vLiBhbGxfdmlzaWJsZV9h Y2NvcmRpbmdfdG9fdm0gaXMgdGhlIHNhdmVkCiAgKiB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUg aGVhcCBibG9jayBsb29rZWQgdXAgZWFybGllciBieSB0aGUgY2FsbGVyLiBXZQotICogd29uJ3Qg cmVseSBlbnRpcmVseSBvbiB0aGlzIHN0YXR1cywgYXMgaXQgbWF5IGJlIG91dCBvZiBkYXRlLgor ICogd29uJ3QgcmVseSBlbnRpcmVseSBvbiB0aGlzIHN0YXR1cywgYXMgaXQgbWF5IGJlIG91dCBv ZiBkYXRlLiBUaGVzZSB3aWxsIGJlCisgKiBwYXNzZWQgb24gdG8gaGVhcF9wYWdlX3BydW5lX2Fu ZF9mcmVlemUoKSB0byB1c2Ugd2hpbGUgc2V0dGluZyB0aGUgVk0uCiAgKgogICogKmhhc19scGRl YWRfaXRlbXMgaXMgc2V0IHRvIHRydWUgb3IgZmFsc2UgZGVwZW5kaW5nIG9uIHdoZXRoZXIsIHVw b24gcmV0dXJuCiAgKiBmcm9tIHRoaXMgZnVuY3Rpb24sIGFueSBMUF9ERUFEIGl0ZW1zIGFyZSBz dGlsbCBwcmVzZW50IG9uIHRoZSBwYWdlLgpAQCAtMTk3OCw2ICsxOTc4LDcgQEAgbGF6eV9zY2Fu X3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAogCS8qCiAJICogUHJ1bmUgYWxsIEhPVC11cGRh dGUgY2hhaW5zIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoaXMgcGFnZS4KKwkg KiBUaGVuLCBpZiB0aGUgcGFnZSdzIHZpc2liaWxpdHkgc3RhdHVzIGhhcyBjaGFuZ2VkLCB1cGRh dGUgdGhlIFZNLgogCSAqCiAJICogSWYgdGhlIHJlbGF0aW9uIGhhcyBubyBpbmRleGVzLCB3ZSBj YW4gaW1tZWRpYXRlbHkgbWFyayB3b3VsZC1iZSBkZWFkCiAJICogaXRlbXMgTFBfVU5VU0VELgpA QCAtMTk4NiwxMCArMTk4Nyw2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWws CiAJICogcHJlc3VsdC5uZGVsZXRlZC4gIEl0IHNob3VsZCBub3QgYmUgY29uZnVzZWQgd2l0aCBw cmVzdWx0LmxwZGVhZF9pdGVtczsKIAkgKiBwcmVzdWx0LmxwZGVhZF9pdGVtcydzIGZpbmFsIHZh bHVlIGNhbiBiZSB0aG91Z2h0IG9mIGFzIHRoZSBudW1iZXIgb2YKIAkgKiB0dXBsZXMgdGhhdCB3 ZXJlIGRlbGV0ZWQgZnJvbSBpbmRleGVzLgotCSAqCi0JICogV2Ugd2lsbCB1cGRhdGUgdGhlIFZN IGFmdGVyIGNvbGxlY3RpbmcgTFBfREVBRCBpdGVtcyBhbmQgZnJlZXppbmcKLQkgKiB0dXBsZXMu IFBydW5pbmcgd2lsbCBoYXZlIGRldGVybWluZWQgd2hldGhlciBvciBub3QgdGhlIHBhZ2UgaXMK LQkgKiBhbGwtdmlzaWJsZS4KIAkgKi8KIAlwcnVuZV9vcHRpb25zID0gSEVBUF9QQUdFX1BSVU5F X0ZSRUVaRSB8IEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk07CiAJaWYgKHZhY3JlbC0+bmluZGV4 ZXMgPT0gMCkKQEAgLTIwODEsODggKzIwNzgsMjYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3Rh dGUgKnZhY3JlbCwKIAlBc3NlcnQoIXByZXN1bHQuYWxsX3Zpc2libGUgfHwgISgqaGFzX2xwZGVh ZF9pdGVtcykpOwogCiAJLyoKLQkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQg YmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gKGFzCi0JICogb2YgbGFzdCBoZWFwX3Zh Y19zY2FuX25leHRfYmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICog YWxsX2Zyb3plbiB2YXJpYWJsZXMuCisJICogRm9yIHRoZSBwdXJwb3NlcyBvZiBsb2dnaW5nLCBj b3VudCB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSB3YXMgbmV3bHkKKwkgKiBzZXQgYWxsLXZpc2li bGUgYW5kLCBwb3RlbnRpYWxseSwgYWxsLWZyb3plbi4KIAkgKi8KLQlpZiAocHJlc3VsdC52bV9j b3JydXB0aW9uKQorCWlmICgocHJlc3VsdC5vbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExf VklTSUJMRSkgPT0gMCAmJgorCQkocHJlc3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9B TExfVklTSUJMRSkgIT0gMCkKIAl7Ci0JCS8qIERvbid0IHVwZGF0ZSB0aGUgVk0gaWYgd2UganVz dCBjbGVhcmVkIGNvcnJ1cHRpb24gaW4gaXQgKi8KLQl9Ci0KLQkvKgotCSAqIElmIHRoZSBwYWdl IGlzbid0IHlldCBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhlIFZNIG9yIGl0IGlzIGFuZCBuZWVk cwotCSAqIHRvIG1lIG1hcmtlZCBhbGwtZnJvemVuLCB1cGRhdGUgdGhlIFZNIE5vdGUgdGhhdCBh bGxfZnJvemVuIGlzIG9ubHkKLQkgKiB2YWxpZCBpZiBhbGxfdmlzaWJsZSBpcyB0cnVlLCBzbyB3 ZSBtdXN0IGNoZWNrIGJvdGggYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3plbi4KLQkgKi8K LQllbHNlIGlmIChwcmVzdWx0LmFsbF92aXNpYmxlICYmCi0JCQkgKCFhbGxfdmlzaWJsZV9hY2Nv cmRpbmdfdG9fdm0gfHwKLQkJCSAgKHByZXN1bHQuYWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pF Tih2YWNyZWwtPnJlbCwgYmxrbm8sICZ2bWJ1ZmZlcikpKSkKLQl7Ci0JCXVpbnQ4CQlvbGRfdm1i aXRzOwotCQl1aW50OAkJZmxhZ3MgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOwotCi0JCS8q Ci0JCSAqIElmIHRoZSBwYWdlIGlzIGFsbC1mcm96ZW4sIHdlIGNhbiBwYXNzIEludmFsaWRUcmFu c2FjdGlvbklkIGFzIG91cgotCQkgKiBjdXRvZmZfeGlkLCBzaW5jZSBhIHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uIHN1ZmZpY2llbnQgdG8gbWFrZQotCQkgKiBldmVyeXRoaW5nIHNhZmUgZm9yIFJF RE8gd2FzIGxvZ2dlZCB3aGVuIHRoZSBwYWdlJ3MgdHVwbGVzIHdlcmUKLQkJICogZnJvemVuLgot CQkgKi8KLQkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJewotCQkJQXNzZXJ0KCFUcmFuc2Fj dGlvbklkSXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pKTsKLQkJCWZsYWdzIHw9 IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKLQkJfQotCi0JCS8qCi0JCSAqIEl0IHNob3VsZCBu ZXZlciBiZSB0aGUgY2FzZSB0aGF0IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlzIHNldAotCQkg KiB3aGlsZSB0aGUgcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBh bGxvd2VkIChpZgotCQkgKiBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3Ms IHNldCBib3RoIGJpdHMgc28gdGhhdCB3ZQotCQkgKiBnZXQgYmFjayBpbiBzeW5jLgotCQkgKgot CQkgKiBJZiB0aGUgaGVhcCBwYWdlIGlzIGFsbC12aXNpYmxlIGJ1dCB0aGUgVk0gYml0IGlzIG5v dCBzZXQsIHdlIGRvbid0Ci0JCSAqIG5lZWQgdG8gZGlydHkgdGhlIGhlYXAgcGFnZS4gIEhvd2V2 ZXIsIGlmIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCwgd2UKLQkJICogZG8gbmVlZCB0byBtYWtlIHN1 cmUgdGhhdCB0aGUgaGVhcCBwYWdlIGlzIGRpcnRpZWQgYmVmb3JlIHBhc3NpbmcKLQkJICogaXQg dG8gdmlzaWJpbGl0eW1hcF9zZXQoKSwgYmVjYXVzZSBpdCBtYXkgYmUgbG9nZ2VkLgotCQkgKi8K LQkJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpIHx8IFhMb2dIaW50Qml0SXNOZWVkZWQoKSkK LQkJewotCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQlNYXJrQnVmZmVyRGlydHkoYnVm KTsKLQkJfQotCi0JCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwg Ymxrbm8sIGJ1ZiwKLQkJCQkJCQkJCSAgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkJCQkJICAg dm1idWZmZXIsIHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbiwKLQkJCQkJCQkJCSAgIGZsYWdz KTsKLQotCQkvKgotCQkgKiBFdmVuIGlmIHdlIGFyZSBvbmx5IHNldHRpbmcgdGhlIGFsbC1mcm96 ZW4gYml0LCB0aGVyZSBpcyBhIHNtYWxsCi0JCSAqIGNoYW5jZSB0aGF0IHRoZSBWTSB3YXMgbW9k aWZpZWQgc29tZXRpbWUgYmV0d2VlbiBzZXR0aW5nCi0JCSAqIGFsbF92aXNpYmxlX2FjY29yZGlu Z190b192bSBhbmQgY2hlY2tpbmcgdGhlIHZpc2liaWxpdHkgZHVyaW5nCi0JCSAqIHBydW5pbmcu IENoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2Ygb2xkX3ZtYml0cyB0byBlbnN1cmUgdGhlCi0JCSAq IHZpc2liaWxpdHkgbWFwIGNvdW50ZXJzIHVzZWQgZm9yIGxvZ2dpbmcgYXJlIGFjY3VyYXRlLgot CQkgKgotCQkgKiBJZiB0aGUgcGFnZSB3YXNuJ3QgYWxyZWFkeSBzZXQgYWxsLXZpc2libGUgYW5k L29yIGFsbC1mcm96ZW4gaW4gdGhlCi0JCSAqIFZNLCBjb3VudCBpdCBhcyBuZXdseSBzZXQgZm9y IGxvZ2dpbmcuCi0JCSAqLwotCQlpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9W SVNJQkxFKSA9PSAwKQotCQl7Ci0JCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7Ci0J CQlpZiAocHJlc3VsdC5hbGxfZnJvemVuKQotCQkJewotCQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2li bGVfZnJvemVuX3BhZ2VzKys7Ci0JCQkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKLQkJCX0KLQkJ fQotCQllbHNlIGlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgPT0g MCAmJgotCQkJCSBwcmVzdWx0LmFsbF9mcm96ZW4pCisJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVf cGFnZXMrKzsKKwkJaWYgKChwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9G Uk9aRU4pICE9IDApCiAJCXsKLQkJCXZhY3JlbC0+dm1fbmV3X2Zyb3plbl9wYWdlcysrOworCQkJ dmFjcmVsLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKIAkJCSp2bV9wYWdlX2Zyb3pl biA9IHRydWU7CiAJCX0KIAl9CisJZWxzZSBpZiAoKHByZXN1bHQub2xkX3ZtYml0cyAmIFZJU0lC SUxJVFlNQVBfQUxMX0ZST1pFTikgPT0gMCAmJgorCQkJIChwcmVzdWx0Lm5ld192bWJpdHMgJiBW SVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pICE9IDApCisJeworCQlBc3NlcnQoKHByZXN1bHQubmV3 X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpICE9IDApOworCQl2YWNyZWwtPnZt X25ld19mcm96ZW5fcGFnZXMrKzsKKwkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKKwl9CiAKIAly ZXR1cm4gcHJlc3VsdC5uZGVsZXRlZDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCAwYzdlYjVlNDZm NC4uYjg1NjQ4NDU2ZTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTIzNSwyMCArMjM1LDIxIEBAIHR5 cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUmVzdWx0CiAJaW50CQkJcmVjZW50bHlfZGVhZF90dXBs ZXM7CiAKIAkvKgotCSAqIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIGluZGljYXRlIGlmIHRo ZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbgotCSAqIGJpdHMgaW4gdGhlIHZpc2liaWxpdHkg bWFwIGNhbiBiZSBzZXQgZm9yIHRoaXMgcGFnZSwgYWZ0ZXIgcHJ1bmluZy4KKwkgKiBhbGxfdmlz aWJsZSBhbmQgYWxsX2Zyb3plbiBpbmRpY2F0ZSB0aGUgc3RhdHVzIG9mIHRoZSBwYWdlIGFzIHJl ZmxlY3RlZAorCSAqIGluIHRoZSB2aXNpYmlsaXR5IG1hcCBhZnRlciBwcnVuaW5nLCBmcmVlemlu ZywgYW5kIHNldHRpbmcgYW55IHBhZ2VzCisJICogYWxsLXZpc2libGUgaW4gdGhlIHZpc2liaWxp dHkgbWFwLgogCSAqCi0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBpcyB0aGUgbmV3ZXN0IHhtaW4g b2YgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuICBUaGUKLQkgKiBjYWxsZXIgY2FuIHVzZSBpdCBh cyB0aGUgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHNldHRpbmcgdGhlIFZNIGJpdHMuICBJdAotCSAq IGlzIG9ubHkgdmFsaWQgaWYgd2UgZnJvemUgc29tZSB0dXBsZXMgKG5mcm96ZW4gPiAwKSwgYW5k IGFsbF9mcm96ZW4gaXMKLQkgKiB0cnVlLgorCSAqIHZtX2NvbmZsaWN0X2hvcml6b24gaXMgdGhl IG5ld2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlCisJICogKG9sZGVyIHRoYW4g T2xkZXN0WG1pbikuICBJdCB3aWxsIG9ubHkgYmUgdmFsaWQgaWYgd2UgZGlkIG5vdCBzZXQgdGhl CisJICogcGFnZSBhbGwtZnJvemVuIGluIHRoZSBWTS4KIAkgKgogCSAqIFRoZXNlIGFyZSBvbmx5 IHNldCBpZiB0aGUgSEVBUF9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIHNldC4KIAkgKi8KIAlib29s CQlhbGxfdmlzaWJsZTsKIAlib29sCQlhbGxfZnJvemVuOwogCVRyYW5zYWN0aW9uSWQgdm1fY29u ZmxpY3RfaG9yaXpvbjsKLQlib29sCQl2bV9jb3JydXB0aW9uOworCXVpbnQ4CQlvbGRfdm1iaXRz OworCXVpbnQ4CQluZXdfdm1iaXRzOwogCiAJLyoKIAkgKiBXaGV0aGVyIG9yIG5vdCB0aGUgcGFn ZSBtYWtlcyByZWwgdHJ1bmNhdGlvbiB1bnNhZmUuICBUaGlzIGlzIHNldCB0bwotLSAKMi40My4w Cgo= --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0010-Keep-all_frozen-updated-too-in-heap_page_prune_an.patch" Content-Disposition: attachment; filename="v7-0010-Keep-all_frozen-updated-too-in-heap_page_prune_an.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84c79 RnJvbSBhODY1MjM0YjVlZmE0YTk5NGQ1Zjc4ODdiYzgyMjJhYTE3MmY0ZjRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIzIEp1bCAyMDI1IDE2OjAxOjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAxMC8yMl0gS2VlcCBhbGxfZnJvemVuIHVwZGF0ZWQgdG9vIGluCiBoZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZQoKV2UgcHJldmlvdXNseSByZWxpZWQgb24gb25seSB1c2luZyBhbGwt dmlzaWJsZSBhbmQgYWxsLWZyb3plbiB0b2dldGhlcgpidXQgaXQncyBiZXN0IHRvIGtlZXAgdGhl bSBib3RoIHVwZGF0ZWQuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg fCAxNSArKysrKystLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDkg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA0OTZiNzBl MzE4Zi4uNmMzNjUzZTc3NmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0x NDMsMTAgKzE0Myw2IEBAIHR5cGVkZWYgc3RydWN0CiAJICogd2hldGhlciB0byBmcmVlemUgdGhl IHBhZ2Ugb3Igbm90LiAgVGhlIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuCiAJICogdmFsdWVz IHJldHVybmVkIHRvIHRoZSBjYWxsZXIgYXJlIGFkanVzdGVkIHRvIGluY2x1ZGUgTFBfREVBRCBp dGVtcyBhdAogCSAqIHRoZSBlbmQuCi0JICoKLQkgKiBhbGxfZnJvemVuIHNob3VsZCBvbmx5IGJl IGNvbnNpZGVyZWQgdmFsaWQgaWYgYWxsX3Zpc2libGUgaXMgYWxzbyBzZXQ7Ci0JICogd2UgZG9u J3QgYm90aGVyIHRvIGNsZWFyIHRoZSBhbGxfZnJvemVuIGZsYWcgZXZlcnkgdGltZSB3ZSBjbGVh ciB0aGUKLQkgKiBhbGxfdmlzaWJsZSBmbGFnLgogCSAqLwogCWJvb2wJCWFsbF92aXNpYmxlOwog CWJvb2wJCWFsbF9mcm96ZW47CkBAIC04MjQsNiArODIwLDcgQEAgaGVhcF9wYWdlX3BydW5lX2Fu ZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCSAqLwogCX0KIAor CUFzc2VydCghcHJzdGF0ZS5hbGxfZnJvemVuIHx8IHByc3RhdGUuYWxsX3Zpc2libGUpOwogCS8q IEFueSBlcnJvciB3aGlsZSBhcHBseWluZyB0aGUgY2hhbmdlcyBpcyBjcml0aWNhbCAqLwogCVNU QVJUX0NSSVRfU0VDVElPTigpOwogCkBAIC0xNDY4LDcgKzE0NjUsNyBAQCBoZWFwX3BydW5lX3Jl Y29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwg T2Zmc2V0TnVtYgogCiAJCQkJaWYgKCFIZWFwVHVwbGVIZWFkZXJYbWluQ29tbWl0dGVkKGh0dXAp KQogCQkJCXsKLQkJCQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCQkJcHJzdGF0 ZS0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CiAJCQkJCWJyZWFr OwogCQkJCX0KIApAQCAtMTQ5MCw3ICsxNDg3LDcgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFu Z2VkX2xwX25vcm1hbChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIK IAkJCQlBc3NlcnQocHJzdGF0ZS0+Y3V0b2Zmcyk7CiAJCQkJaWYgKCFUcmFuc2FjdGlvbklkUHJl Y2VkZXMoeG1pbiwgcHJzdGF0ZS0+Y3V0b2Zmcy0+T2xkZXN0WG1pbikpCiAJCQkJewotCQkJCQlw cnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9 IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAkJCQkJYnJlYWs7CiAJCQkJfQogCkBAIC0x NTAzLDcgKzE1MDAsNyBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBh Z2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYgogCiAJCWNhc2UgSEVBUFRV UExFX1JFQ0VOVExZX0RFQUQ6CiAJCQlwcnN0YXRlLT5yZWNlbnRseV9kZWFkX3R1cGxlcysrOwot CQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCXByc3RhdGUtPmFsbF92aXNpYmxl ID0gcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwogCiAJCQkvKgogCQkJICogVGhpcyB0dXBs ZSB3aWxsIHNvb24gYmVjb21lIERFQUQuICBVcGRhdGUgdGhlIGhpbnQgZmllbGQgc28KQEAgLTE1 MjIsNyArMTUxOSw3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFn ZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAJCQkgKiBhc3N1bXB0aW9u IGlzIGEgYml0IHNoYWt5LCBidXQgaXQgaXMgd2hhdCBhY3F1aXJlX3NhbXBsZV9yb3dzKCkKIAkJ CSAqIGRvZXMsIHNvIGJlIGNvbnNpc3RlbnQuCiAJCQkgKi8KLQkJCXByc3RhdGUtPmFsbF92aXNp YmxlID0gZmFsc2U7CisJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96 ZW4gPSBmYWxzZTsKIAogCQkJLyoKIAkJCSAqIElmIHdlIHdhbnRlZCB0byBvcHRpbWl6ZSBmb3Ig YWJvcnRzLCB3ZSBtaWdodCBjb25zaWRlciBtYXJraW5nCkBAIC0xNTQwLDcgKzE1MzcsNyBAQCBo ZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0 ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYgogCQkJICogd2lsbCBjb21taXQgYW5kIHVwZGF0ZSB0aGUg Y291bnRlcnMgYWZ0ZXIgd2UgcmVwb3J0LgogCQkJICovCiAJCQlwcnN0YXRlLT5saXZlX3R1cGxl cysrOwotCQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCXByc3RhdGUtPmFsbF92 aXNpYmxlID0gcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwogCiAJCQkvKgogCQkJICogVGhp cyB0dXBsZSBtYXkgc29vbiBiZWNvbWUgREVBRC4gIFVwZGF0ZSB0aGUgaGludCBmaWVsZCBzbyB0 aGF0Ci0tIAoyLjQzLjAKCg== --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0012-Eliminate-xl_heap_visible-from-vacuum-phase-I-pru.patch" Content-Disposition: attachment; filename="v7-0012-Eliminate-xl_heap_visible-from-vacuum-phase-I-pru.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84ce11 RnJvbSBhODk3N2Y3MmMzZGI5MmMwNTg1YmI5MDZhMzRjZDZlMDAzZjhhNWU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQxOjAwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAxMi8yMl0gRWxpbWluYXRlIHhsX2hlYXBfdmlzaWJsZSBmcm9tIHZhY3V1bSBwaGFz ZSBJCiBwcnVuZS9mcmVlemUKCkluc3RlYWQgb2YgZW1pdHRpbmcgYSBzZXBhcmF0ZSBXQUwgcmVj b3JkIGZvciBldmVyeSBibG9jayByZW5kZXJlZAphbGwtdmlzaWJsZS9mcm96ZW4gYnkgdmFjdXVt J3MgcGhhc2UgSSwgaW5jbHVkZSB0aGUgY2hhbmdlcyB0byB0aGUgVk0gaW4KdGhlIHhsX2hlYXBf cHJ1bmUgcmVjb3JkIGFscmVhZHkgZW1pdHRlZC4KClRoaXMgaXMgb25seSBlbmFibGVkIGZvciB2 YWN1dW0ncyBwcnVuZS9mcmVlemUgd29yaywgbm90IGZvciBvbi1hY2Nlc3MKcHJ1bmluZy4KLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgfCA0NTQgKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAg MzAgLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICB8ICAxNSArLQogMyBm aWxlcyBjaGFuZ2VkLCAyNzggaW5zZXJ0aW9ucygrKSwgMjIxIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggMDUyMjdjZTAzMzkuLmNmOWU1MjE1ZDZiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtNDQsNiArNDQsMTMgQEAgdHlwZWRl ZiBzdHJ1Y3QKIAlib29sCQltYXJrX3VudXNlZF9ub3c7CiAJLyogd2hldGhlciB0byBhdHRlbXB0 IGZyZWV6aW5nIHR1cGxlcyAqLwogCWJvb2wJCWZyZWV6ZTsKKworCS8qCisJICogV2hldGhlciBv ciBub3QgdG8gY29uc2lkZXIgdXBkYXRpbmcgdGhlIFZNLiBUaGVyZSBpcyBzb21lIGJvb2trZWVw aW5nCisJICogdGhhdCBtdXN0IGJlIG1haW50YWluZWQgaWYgd2Ugd291bGQgbGlrZSB0byB1cGRh dGUgdGhlIFZNLgorCSAqLworCWJvb2wJCWNvbnNpZGVyX3VwZGF0ZV92bTsKKwogCXN0cnVjdCBW YWN1dW1DdXRvZmZzICpjdXRvZmZzOwogCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMDgsOCArMTE1LDkgQEAgdHlwZWRlZiBz dHJ1Y3QKIAkgKgogCSAqIFRoZXNlIGZpZWxkcyBhcmUgbm90IHVzZWQgYnkgcHJ1bmluZyBpdHNl bGYgZm9yIHRoZSBtb3N0IHBhcnQsIGJ1dCBhcmUKIAkgKiB1c2VkIHRvIGNvbGxlY3QgaW5mb3Jt YXRpb24gYWJvdXQgd2hhdCB3YXMgcHJ1bmVkIGFuZCB3aGF0IHN0YXRlIHRoZQotCSAqIHBhZ2Ug aXMgaW4gYWZ0ZXIgcHJ1bmluZywgZm9yIHRoZSBiZW5lZml0IG9mIHRoZSBjYWxsZXIuICBUaGV5 IGFyZQotCSAqIGNvcGllZCB0byB0aGUgY2FsbGVyJ3MgUHJ1bmVGcmVlemVSZXN1bHQgYXQgdGhl IGVuZC4KKwkgKiBwYWdlIGlzIGluIGFmdGVyIHBydW5pbmcgdG8gdXNlIHdoZW4gdXBkYXRpbmcg dGhlIHZpc2liaWxpdHkgbWFwIGFuZAorCSAqIGZvciB0aGUgYmVuZWZpdCBvZiB0aGUgY2FsbGVy LiAgVGhleSBhcmUgY29waWVkIHRvIHRoZSBjYWxsZXIncworCSAqIFBydW5lRnJlZXplUmVzdWx0 IGF0IHRoZSBlbmQuCiAJICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogCSAqLwogCkBAIC0xMzgsMTEgKzE0NiwxMCBAQCB0eXBlZGVmIHN0 cnVjdAogCSAqIGJpdHMuICBJdCBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVz LCBhbmQgYWxsX2Zyb3plbiBpcwogCSAqIHRydWUuCiAJICoKLQkgKiBOT1RFOiBhbGxfdmlzaWJs ZSBhbmQgYWxsX2Zyb3plbiBkb24ndCBpbmNsdWRlIExQX0RFQUQgaXRlbXMuICBUaGF0J3MKLQkg KiBjb252ZW5pZW50IGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLCB0byB1c2UgdGhl bSB0byBkZWNpZGUKLQkgKiB3aGV0aGVyIHRvIGZyZWV6ZSB0aGUgcGFnZSBvciBub3QuICBUaGUg YWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4KLQkgKiB2YWx1ZXMgcmV0dXJuZWQgdG8gdGhlIGNh bGxlciBhcmUgYWRqdXN0ZWQgdG8gaW5jbHVkZSBMUF9ERUFEIGl0ZW1zIGF0Ci0JICogdGhlIGVu ZC4KKwkgKiBOT1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBkb24ndCBpbmNsdWRlIExQ X0RFQUQgaXRlbXMgdW50aWwKKwkgKiBkaXJlY3RseSBiZWZvcmUgdXBkYXRpbmcgdGhlIFZNLiBX ZSBpZ25vcmUgTFBfREVBRCBpdGVtcyB3aGVuIGRlY2lkaW5nCisJICogd2hldGhlciBvciBub3Qg dG8gb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplIGFuZCB3aGVuIGRldGVybWluaW5nIHRoZQorCSAq IHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24gcmVxdWlyZWQgd2hlbiBmcmVlemluZyB0dXBsZXMu CiAJICovCiAJYm9vbAkJYWxsX3Zpc2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKQEAgLTM3MSwx MiArMzc4LDE1IEBAIGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxh dGlvbiwKICAqIElmIHRoZSBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LCB3ZSB3aWxs IGFsc28gZnJlZXplIHR1cGxlcyBpZiBpdCdzCiAgKiByZXF1aXJlZCBpbiBvcmRlciB0byBhZHZh bmNlIHJlbGZyb3plbnhpZCAvIHJlbG1pbm14aWQsIG9yIGlmIGl0J3MKICAqIGNvbnNpZGVyZWQg YWR2YW50YWdlb3VzIGZvciBvdmVyYWxsIHN5c3RlbSBwZXJmb3JtYW5jZSB0byBkbyBzbyBub3cu ICBUaGUKLSAqICdjdXRvZmZzJywgJ3ByZXN1bHQnLCAnbmV3X3JlbGZyb3plbl94aWQnIGFuZCAn bmV3X3JlbG1pbl9teGlkJyBhcmd1bWVudHMKLSAqIGFyZSByZXF1aXJlZCB3aGVuIGZyZWV6aW5n LiAgV2hlbiBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LCB3ZSBhbHNvCi0gKiBzZXQg cHJlc3VsdC0+YWxsX3Zpc2libGUgYW5kIHByZXN1bHQtPmFsbF9mcm96ZW4gb24gZXhpdCwgdG8g aW5kaWNhdGUgaWYKLSAqIHRoZSBWTSBiaXRzIGNhbiBiZSBzZXQuICBUaGV5IGFyZSBhbHdheXMg c2V0IHRvIGZhbHNlIHdoZW4gdGhlCi0gKiBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgbm90 IHNldCwgYmVjYXVzZSBhdCB0aGUgbW9tZW50IG9ubHkgY2FsbGVycwotICogdGhhdCBhbHNvIGZy ZWV6ZSBuZWVkIHRoYXQgaW5mb3JtYXRpb24uCisgKiAnY3V0b2ZmcycsICduZXdfcmVsZnJvemVu X3hpZCcgYW5kICduZXdfcmVsbWluX214aWQnIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQKKyAqIHdo ZW4gZnJlZXppbmcuCisgKgorICogSWYgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSBpcyBzZXQg YW5kIHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgcGFnZQorICogaGFzIGNoYW5nZWQsIHdl IHdpbGwgdXBkYXRlIHRoZSBWTSBhdCB0aGUgc2FtZSB0aW1lIGFzIHBydW5pbmcgYW5kIGZyZWV6 aW5nCisgKiB0aGUgaGVhcCBwYWdlLiBXZSB3aWxsIGFsc28gdXBkYXRlIHByZXN1bHQtPm9sZF92 bWJpdHMgYW5kCisgKiBwcmVzdWx0LT5uZXdfdm1iaXRzIHdpdGggdGhlIHN0YXRlIG9mIHRoZSBW TSBiZWZvcmUgYW5kIGFmdGVyIHVwZGF0aW5nIGl0CisgKiBmb3IgdGhlIGNhbGxlciB0byB1c2Ug aW4gYm9va2tlZXBpbmcuIE5vdGUgdGhhdCBuZXcgYW5kIG9sZF92bWJpdHMgd2lsbCBiZQorICog MCBpZiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNIGlzIG5vdCBzZXQuCiAgKgogICogYmxrX2tu b3duX2F2IGlzIHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgaGVhcCBibG9jayBhcyBvZiB0 aGUgbGFzdCBjYWxsCiAgKiB0byBmaW5kX25leHRfdW5za2lwcGFibGVfYmxvY2soKS4gdm1idWZm ZXIgaXMgdGhlIGJ1ZmZlciB0aGF0IG1heSBhbHJlYWR5CkBAIC0zOTIsNiArNDAyLDggQEAgaWRl bnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAogICogICBGUkVF WkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFuZCB3aWxsIHJl dHVybgogICogICAnYWxsX3Zpc2libGUnLCAnYWxsX2Zyb3plbicgZmxhZ3MgdG8gdGhlIGNhbGxl ci4KICAqCisgKiAgIFVQREFURV9WTSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIHNldCB0aGUgcGFn ZSdzIHN0YXR1cyBpbiB0aGUgVk0uCisgKgogICogY3V0b2ZmcyBjb250YWlucyB0aGUgZnJlZXpl IGN1dG9mZnMsIGVzdGFibGlzaGVkIGJ5IFZBQ1VVTSBhdCB0aGUgYmVnaW5uaW5nCiAgKiBvZiB2 YWN1dW1pbmcgdGhlIHJlbGF0aW9uLiAgUmVxdWlyZWQgaWYgSEVBUF9QUlVORV9GUkVFWkUgb3B0 aW9uIGlzIHNldC4KICAqIGN1dG9mZnMtPk9sZGVzdFhtaW4gaXMgYWxzbyB1c2VkIHRvIGRldGVy bWluZSBpZiBkZWFkIHR1cGxlcyBhcmUKQEAgLTQzNiwxOCArNDQ4LDI0IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCUhlYXBU dXBsZURhdGEgdHVwOwogCWJvb2wJCWRvX2ZyZWV6ZTsKIAlib29sCQlkb19wcnVuZTsKLQlib29s CQlkb19oaW50OworCWJvb2wJCWRvX2hpbnRfZnVsbF9vcl9wcnVuYWJsZTsKKwlib29sCQlkb19z ZXRfdm07CiAJdWludDgJCXZtZmxhZ3MgPSAwOwogCXVpbnQ4CQlvbGRfdm1iaXRzID0gMDsKIAli b29sCQloaW50X2JpdF9mcGk7CiAJaW50NjQJCWZwaV9iZWZvcmUgPSBwZ1dhbFVzYWdlLndhbF9m cGk7CisJYm9vbAkJYWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCA9IGZhbHNlOworCWJvb2wJCXNl dF9wZF9hbGxfdmlzaWJsZSA9IGZhbHNlOwogCiAJLyogQ29weSBwYXJhbWV0ZXJzIHRvIHByc3Rh dGUgKi8KIAlwcnN0YXRlLnZpc3Rlc3QgPSB2aXN0ZXN0OwogCXByc3RhdGUubWFya191bnVzZWRf bm93ID0gKG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfTUFSS19VTlVTRURfTk9XKSAhPSAwOwog CXByc3RhdGUuZnJlZXplID0gKG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFKSAhPSAw OworCXByc3RhdGUuY29uc2lkZXJfdXBkYXRlX3ZtID0gKG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJV TkVfVVBEQVRFX1ZNKSAhPSAwOwogCXByc3RhdGUuY3V0b2ZmcyA9IGN1dG9mZnM7CiAKKwlBc3Nl cnQoIXByc3RhdGUuY29uc2lkZXJfdXBkYXRlX3ZtIHx8IHZtYnVmZmVyKTsKKwogCS8qCiAJICog T3VyIHN0cmF0ZWd5IGlzIHRvIHNjYW4gdGhlIHBhZ2UgYW5kIG1ha2UgbGlzdHMgb2YgaXRlbXMg dG8gY2hhbmdlLAogCSAqIHRoZW4gYXBwbHkgdGhlIGNoYW5nZXMgd2l0aGluIGEgY3JpdGljYWwg c2VjdGlvbi4gIFRoaXMga2VlcHMgYXMgbXVjaApAQCAtNDkyLDUwICs1MTAsNTcgQEAgaGVhcF9w YWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJ cHJzdGF0ZS5kZWFkb2Zmc2V0cyA9IHByZXN1bHQtPmRlYWRvZmZzZXRzOwogCiAJLyoKLQkgKiBD YWxsZXIgbWF5IHVwZGF0ZSB0aGUgVk0gYWZ0ZXIgd2UncmUgZG9uZS4gIFdlIGNhbiBrZWVwIHRy YWNrIG9mCi0JICogd2hldGhlciB0aGUgcGFnZSB3aWxsIGJlIGFsbC12aXNpYmxlIGFuZCBhbGwt ZnJvemVuIGFmdGVyIHBydW5pbmcgYW5kCi0JICogZnJlZXppbmcgdG8gaGVscCB0aGUgY2FsbGVy IHRvIGRvIHRoYXQuCisJICogS2VlcCB0cmFjayBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSB3 aWxsIGJlIGFsbC12aXNpYmxlIGFuZAorCSAqIGFsbC1mcm96ZW4gZm9yIHVzZSBpbiBvcHBvcnR1 bmlzdGljIGZyZWV6aW5nIGFuZCB0byB1cGRhdGUgdGhlIFZNIGlmCisJICogdGhlIGNhbGxlciBy ZXF1ZXN0cyBpdC4KKwkgKgorCSAqIEN1cnJlbnRseSwgb25seSBWQUNVVU0gYXR0ZW1wdHMgZnJl ZXppbmcgYW5kIHNldHRpbmcgdGhlIFZNIGJpdHMuIEJ1dAorCSAqIG90aGVyIGNhbGxlcnMgY291 bGQgZG8gZWl0aGVyIG9uZS4gVGhlIHZpc2liaWxpdHkgYm9va2tlZXBpbmcgaXMKKwkgKiByZXF1 aXJlZCBmb3Igb3Bwb3J0dW5pc3RpYyBmcmVlemluZyAoaW4gYWRkaXRpb24gdG8gc2V0dGluZyB0 aGUgVk0KKwkgKiBiaXRzKSBiZWNhdXNlIHdlIG9ubHkgY29uc2lkZXIgb3Bwb3J0dW5pc3RpY2Fs bHkgZnJlZXppbmcgdHVwbGVzIGlmIHRoZQorCSAqIHdob2xlIHBhZ2Ugd291bGQgYmVjb21lIGFs bC1mcm96ZW4gb3IgaWYgdGhlIHdob2xlIHBhZ2Ugd2lsbCBiZSBmcm96ZW4KKwkgKiBleGNlcHQg Zm9yIGRlYWQgdHVwbGVzIHRoYXQgd2lsbCBiZSByZW1vdmVkIGJ5IHZhY3V1bS4KIAkgKgotCSAq IEN1cnJlbnRseSwgb25seSBWQUNVVU0gc2V0cyB0aGUgVk0gYml0cy4gIFRvIHNhdmUgdGhlIGVm Zm9ydCwgb25seSBkbwotCSAqIHRoZSBib29ra2VlcGluZyBpZiB0aGUgY2FsbGVyIG5lZWRzIGl0 LiAgQ3VycmVudGx5LCB0aGF0J3MgdGllZCB0bwotCSAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUs IGJ1dCBpdCBjb3VsZCBiZSBhIHNlcGFyYXRlIGZsYWcgaWYgeW91IHdhbnRlZAotCSAqIHRvIHVw ZGF0ZSB0aGUgVk0gYml0cyB3aXRob3V0IGFsc28gZnJlZXppbmcgb3IgZnJlZXplIHdpdGhvdXQg YWxzbwotCSAqIHNldHRpbmcgdGhlIFZNIGJpdHMuCisJICogSWYgb25seSB1cGRhdGluZyB0aGUg Vk0sIHdlIG11c3QgaW5pdGlhbGl6ZSBhbGxfZnJvemVuIHRvIGZhbHNlLCBhcworCSAqIGhlYXBf cHJlcGFyZV9mcmVlemVfdHVwbGUoKSB3aWxsIG5vdCBiZSBjYWxsZWQgZm9yIGVhY2ggdHVwbGUg b24gdGhlCisJICogcGFnZSBhbmQgd2Ugd2lsbCBub3QgZW5kIHVwIGNvcnJlY3RseSBzZXR0aW5n IGl0IHRvIGZhbHNlIGxhdGVyLgogCSAqCi0JICogSW4gYWRkaXRpb24gdG8gdGVsbGluZyB0aGUg Y2FsbGVyIHdoZXRoZXIgaXQgY2FuIHNldCB0aGUgVk0gYml0LCB3ZQotCSAqIGFsc28gdXNlICdh bGxfdmlzaWJsZScgYW5kICdhbGxfZnJvemVuJyBmb3Igb3VyIG93biBkZWNpc2lvbi1tYWtpbmcu IElmCi0JICogdGhlIHdob2xlIHBhZ2Ugd291bGQgYmVjb21lIGZyb3plbiwgd2UgY29uc2lkZXIg b3Bwb3J0dW5pc3RpY2FsbHkKLQkgKiBmcmVlemluZyB0dXBsZXMuICBXZSB3aWxsIG5vdCBiZSBh YmxlIHRvIGZyZWV6ZSB0aGUgd2hvbGUgcGFnZSBpZiB0aGVyZQotCSAqIGFyZSB0dXBsZXMgcHJl c2VudCB0aGF0IGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSBvciBpZiB0aGVyZSBhcmUKLQkg KiBkZWFkIHR1cGxlcyB3aGljaCBhcmUgbm90IHlldCByZW1vdmFibGUuICBIb3dldmVyLCBkZWFk IHR1cGxlcyB3aGljaAotCSAqIHdpbGwgYmUgcmVtb3ZlZCBieSB0aGUgZW5kIG9mIHZhY3V1bWlu ZyBzaG91bGQgbm90IHByZWNsdWRlIHVzIGZyb20KLQkgKiBvcHBvcnR1bmlzdGljYWxseSBmcmVl emluZy4gIEJlY2F1c2Ugb2YgdGhhdCwgd2UgZG8gbm90IGNsZWFyCi0JICogYWxsX3Zpc2libGUg d2hlbiB3ZSBzZWUgTFBfREVBRCBpdGVtcy4gIFdlIGZpeCB0aGF0IGF0IHRoZSBlbmQgb2YgdGhl Ci0JICogZnVuY3Rpb24sIHdoZW4gd2UgcmV0dXJuIHRoZSB2YWx1ZSB0byB0aGUgY2FsbGVyLCBz byB0aGF0IHRoZSBjYWxsZXIKLQkgKiBkb2Vzbid0IHNldCB0aGUgVk0gYml0IGluY29ycmVjdGx5 LgorCSAqIERlYWQgdHVwbGVzIHdoaWNoIHdpbGwgYmUgcmVtb3ZlZCBieSB0aGUgZW5kIG9mIHZh Y3V1bWluZyBzaG91bGQgbm90CisJICogcHJlY2x1ZGUgdXMgZnJvbSBvcHBvcnR1bmlzdGljYWxs eSBmcmVlemluZywgc28gd2UgZG8gbm90IGNsZWFyCisJICogYWxsX3Zpc2libGUgd2hlbiB3ZSBz ZWUgTFBfREVBRCBpdGVtcy4gV2UgZml4IHRoYXQgYWZ0ZXIgZGV0ZXJtaW5pbmcKKwkgKiB3aGV0 aGVyIG9yIG5vdCB0byBmcmVlemUgYnV0IGJlZm9yZSBkZWNpZGluZyB3aGV0aGVyIG9yIG5vdCB0 byB1cGRhdGUKKwkgKiB0aGUgVk0gc28gdGhhdCB3ZSBkb24ndCBzZXQgdGhlIFZNIGJpdCBpbmNv cnJlY3RseS4KKwkgKgorCSAqIElmIG5vdCBmcmVlemluZyBvciB1cGRhdGluZyB0aGUgVk0sIHdl IG90aGVyd2lzZSBhdm9pZCB0aGUgZXh0cmEKKwkgKiBib29ra2VlcGluZy4gSW5pdGlhbGl6aW5n IGFsbF92aXNpYmxlIHRvIGZhbHNlIGFsbG93cyBza2lwcGluZyB0aGUgd29yaworCSAqIHRvIHVw ZGF0ZSB0aGVtIGluIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoKS4KIAkg Ki8KIAlpZiAocHJzdGF0ZS5mcmVlemUpCiAJewogCQlwcnN0YXRlLmFsbF92aXNpYmxlID0gdHJ1 ZTsKIAkJcHJzdGF0ZS5hbGxfZnJvemVuID0gdHJ1ZTsKIAl9CisJZWxzZSBpZiAocHJzdGF0ZS5j b25zaWRlcl91cGRhdGVfdm0pCisJeworCQlwcnN0YXRlLmFsbF92aXNpYmxlID0gdHJ1ZTsKKwkJ cHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CisJfQogCWVsc2UKIAl7Ci0JCS8qCi0JCSAqIElu aXRpYWxpemluZyB0byBmYWxzZSBhbGxvd3Mgc2tpcHBpbmcgdGhlIHdvcmsgdG8gdXBkYXRlIHRo ZW0gaW4KLQkJICogaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbCgpLgotCQkg Ki8KIAkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IGZhbHNlOwogCQlwcnN0YXRlLmFsbF9mcm96ZW4g PSBmYWxzZTsKIAl9CiAKIAkvKgotCSAqIFRoZSB2aXNpYmlsaXR5IGN1dG9mZiB4aWQgaXMgdGhl IG5ld2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZQotCSAqIHBhZ2UuICBJbiB0aGUgY29t bW9uIGNhc2UsIHRoaXMgd2lsbCBiZSBzZXQgYXMgdGhlIGNvbmZsaWN0IGhvcml6b24gdGhlCi0J ICogY2FsbGVyIGNhbiB1c2UgZm9yIHVwZGF0aW5nIHRoZSBWTS4gIElmLCBhdCB0aGUgZW5kIG9m IGZyZWV6aW5nIGFuZAotCSAqIHBydW5pbmcsIHRoZSBwYWdlIGlzIGFsbC1mcm96ZW4sIHRoZXJl IGlzIG5vIHBvc3NpYmlsaXR5IHRoYXQgYW55Ci0JICogcnVubmluZyB0cmFuc2FjdGlvbiBvbiB0 aGUgc3RhbmRieSBkb2VzIG5vdCBzZWUgdHVwbGVzIG9uIHRoZSBwYWdlIGFzCi0JICogYWxsLXZp c2libGUsIHNvIHRoZSBjb25mbGljdCBob3Jpem9uIHJlbWFpbnMgSW52YWxpZFRyYW5zYWN0aW9u SWQuCisJICogVGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2Yg bGl2ZSwgY29tbWl0dGVkIHR1cGxlcworCSAqIG9sZGVyIHRoYW4gT2xkZXN0WG1pbiBvbiB0aGUg cGFnZS4gVGhpcyBmaWVsZCBpcyBvbmx5IGtlcHQgdXAtdG8tZGF0ZQorCSAqIGlmIHRoZSBwYWdl IGlzIGFsbC12aXNpYmxlLiBBcyBzb29uIGFzIGEgdHVwbGUgaXMgZW5jb3VudGVyZWQgdGhhdCBp cworCSAqIG5vdCB2aXNpYmxlIHRvIGFsbCwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWluZWQuIEFz IGxvbmcgYXMgaXQgaXMKKwkgKiBtYWludGFpbmVkLCBpdCBjYW4gYmUgdXNlZCB0byBjYWxjdWxh dGUgdGhlIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24uCisJICogVGhpcyBpcyBtb3N0IGxpa2Vs eSB0byBoYXBwZW4gd2hlbiB1cGRhdGluZyB0aGUgVk0gYW5kL29yIGZyZWV6aW5nIGFsbAorCSAq IGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLiBJdCBpcyB1cGRhdGVkIGJlZm9yZSByZXR1cm5pbmcg dG8gdGhlIGNhbGxlcgorCSAqIGJlY2F1c2UgdmFjdXVtIGRvZXMgYXNzZXJ0LWJ1aWxkIG9ubHkg dmFsaWRhdGlvbiBvbiB0aGUgcGFnZSB1c2luZyB0aGlzCisJICogZmllbGQuCiAJICovCiAJcHJz dGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIApAQCAt NzMzLDEwICs3NTgsMTEgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVs YXRpb24sIEJ1ZmZlciBidWZmZXIsCiAKIAkvKgogCSAqIEV2ZW4gaWYgd2UgZG9uJ3QgcHJ1bmUg YW55dGhpbmcsIGlmIHdlIGZvdW5kIGEgbmV3IHZhbHVlIGZvciB0aGUKLQkgKiBwZF9wcnVuZV94 aWQgZmllbGQgb3IgdGhlIHBhZ2Ugd2FzIG1hcmtlZCBmdWxsLCB3ZSB3aWxsIHVwZGF0ZSB0aGUg aGludAotCSAqIGJpdC4KKwkgKiBwZF9wcnVuZV94aWQgZmllbGQgb3IgdGhlIHBhZ2Ugd2FzIG1h cmtlZCBmdWxsLCB3ZSB3aWxsIHVwZGF0ZSB0aG9zZQorCSAqIGhpbnQgYml0cy4KIAkgKi8KLQlk b19oaW50ID0gKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfcHJ1bmVfeGlkICE9IHByc3RhdGUubmV3 X3BydW5lX3hpZCB8fAorCWRvX2hpbnRfZnVsbF9vcl9wcnVuYWJsZSA9CisJCSgoUGFnZUhlYWRl cikgcGFnZSktPnBkX3BydW5lX3hpZCAhPSBwcnN0YXRlLm5ld19wcnVuZV94aWQgfHwKIAkJUGFn ZUlzRnVsbChwYWdlKTsKIAogCS8qCkBAIC03ODQsNyArODEwLDcgQEAgaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQlpZiAo WExvZ0NoZWNrQnVmZmVyTmVlZHNCYWNrdXAoYnVmZmVyKSkKIAkJCQkJCQlkb19mcmVlemUgPSB0 cnVlOwogCQkJCQl9Ci0JCQkJCWVsc2UgaWYgKGRvX2hpbnQpCisJCQkJCWVsc2UgaWYgKGRvX2hp bnRfZnVsbF9vcl9wcnVuYWJsZSkKIAkJCQkJewogCQkJCQkJaWYgKFhMb2dIaW50Qml0SXNOZWVk ZWQoKSAmJiBYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cChidWZmZXIpKQogCQkJCQkJCWRvX2Zy ZWV6ZSA9IHRydWU7CkBAIC04MjMsMTEgKzg0OSw4NCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJICovCiAJfQogCisJLyoK KwkgKiBJdCB3YXMgY29udmVuaWVudCB0byBpZ25vcmUgTFBfREVBRCBpdGVtcyBpbiBhbGxfdmlz aWJsZSBlYXJsaWVyIG9uIHRvCisJICogbWFrZSB0aGUgY2hvaWNlIG9mIHdoZXRoZXIgb3Igbm90 IHRvIGZyZWV6ZSB0aGUgcGFnZSB1bmFmZmVjdGVkIGJ5IHRoZQorCSAqIHNob3J0LXRlcm0gcHJl c2VuY2Ugb2YgTFBfREVBRCBpdGVtcy4gIFRoZXNlIExQX0RFQUQgaXRlbXMgd2VyZQorCSAqIGVm ZmVjdGl2ZWx5IGFzc3VtZWQgdG8gYmUgTFBfVU5VU0VEIGl0ZW1zIGluIHRoZSBtYWtpbmcuICBJ dCBkb2Vzbid0CisJICogbWF0dGVyIHdoaWNoIHZhY3V1bSBoZWFwIHBhc3MgKGluaXRpYWwgcGFz cyBvciBmaW5hbCBwYXNzKSBlbmRzIHVwCisJICogc2V0dGluZyB0aGUgcGFnZSBhbGwtZnJvemVu LCBhcyBsb25nIGFzIHRoZSBvbmdvaW5nIFZBQ1VVTSBkb2VzIGl0LgorCSAqCisJICogTm93IHRo YXQgZnJlZXppbmcgaGFzIGJlZW4gZmluYWxpemVkLCB1bnNldCBhbGxfdmlzaWJsZSBpZiB0aGVy ZSBhcmUKKwkgKiBhbnkgTFBfREVBRCBpdGVtcyBvbiB0aGUgcGFnZS4gSXQgbmVlZHMgdG8gcmVm bGVjdCB0aGUgcHJlc2VudCBzdGF0ZSBvZgorCSAqIHRoZSBwYWdlIHdoZW4gdXNpbmcgaXQgdG8g ZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRvIHVwZGF0ZSB0aGUgVk0uCisJICoKKwkgKiBLZWVw IHRyYWNrIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIHdhcyBhbGwtZnJvemVuIGV4Y2VwdCBM UF9ERUFECisJICogaXRlbXMgZm9yIHRoZSBwdXJwb3NlcyBvZiBjYWxjdWxhdGluZyB0aGUgc25h cHNob3QgY29uZmxpY3QgaG9yaXpvbiwKKwkgKiB0aG91Z2guCisJICovCisJYWxsX2Zyb3plbl9l eGNlcHRfbHBfZGVhZCA9IHByc3RhdGUuYWxsX2Zyb3plbjsKKwlpZiAocHJzdGF0ZS5scGRlYWRf aXRlbXMgPiAwKQorCXsKKwkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQlwcnN0YXRl LmFsbF9mcm96ZW4gPSBmYWxzZTsKKwl9CisKIAlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3plbiB8 fCBwcnN0YXRlLmFsbF92aXNpYmxlKTsKKworCS8qCisJICogSGFuZGxlIHNldHRpbmcgdmlzaWJp bGl0eSBtYXAgYml0IGJhc2VkIG9uIGluZm9ybWF0aW9uIGZyb20gdGhlIFZNIChhcworCSAqIG9m IGxhc3QgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCksIGFuZCBmcm9tIGFsbF92aXNp YmxlIGFuZAorCSAqIGFsbF9mcm96ZW4gdmFyaWFibGVzLgorCSAqLworCWlmIChwcnN0YXRlLmNv bnNpZGVyX3VwZGF0ZV92bSkKKwl7CisJCS8qCisJCSAqIENsZWFyIGFueSBWTSBjb3JydXB0aW9u LiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgaW4gYSBjcml0aWNhbAorCQkgKiBzZWN0aW9uLCBz byB3ZSBkbyBpdCBmaXJzdC4gSWYgUERfQUxMX1ZJU0lCTEUgaXMgaW5jb3JyZWN0bHkgc2V0LAor CQkgKiB3ZSBtYXkgbWFyayB0aGUgaGVhcCBwYWdlIGJ1ZmZlciBkaXJ0eSBoZXJlIGFuZCBjb3Vs ZCBlbmQgdXAgZG9pbmcKKwkJICogc28gYWdhaW4gbGF0ZXIuIFRoaXMgaXMgbm90IGEgY29ycmVj dG5lc3MgaXNzdWUgYW5kIGlzIGluIHRoZSBwYXRoCisJCSAqIG9mIFZNIGNvcnJ1cHRpb24sIHNv IHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhlIGV4dHJhCisJCSAqIHBlcmZvcm1hbmNl IG92ZXJoZWFkLgorCQkgKi8KKwkJaWYgKGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihy ZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBibG9ja25vLCBidWZmZXIsIHBhZ2UsCisJCQkJCQkJCQkJ ICAgYmxrX2tub3duX2F2LCBwcnN0YXRlLmxwZGVhZF9pdGVtcywgdm1idWZmZXIpKQorCQl7CisJ CQkvKiBJZiB3ZSBmaXggY29ycnVwdGlvbiwgZG9uJ3QgdXBkYXRlIHRoZSBWTSBmdXJ0aGVyICov CisJCX0KKworCQkvKiBEZXRlcm1pbmUgaWYgd2UgYWN0dWFsbHkgbmVlZCB0byBzZXQgdGhlIFZN IGFuZCB3aGljaCBiaXRzIHRvIHNldC4gKi8KKwkJZWxzZSBpZiAocHJzdGF0ZS5hbGxfdmlzaWJs ZSAmJgorCQkJCSAoIWJsa19rbm93bl9hdiB8fAorCQkJCSAgKHByc3RhdGUuYWxsX2Zyb3plbiAm JiAhVk1fQUxMX0ZST1pFTihyZWxhdGlvbiwgYmxvY2tubywgJnZtYnVmZmVyKSkpKQorCQl7CisJ CQl2bWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CisJCQlpZiAocHJzdGF0ZS5h bGxfZnJvemVuKQorCQkJCXZtZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOOworCQl9 CisJfQorCisJZG9fc2V0X3ZtID0gdm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUzsK KworCS8qCisJICogRG9uJ3Qgc2V0IFBEX0FMTF9WSVNJQkxFIHVubGVzcyB3ZSBhbHNvIHBsYW4g dG8gc2V0IHRoZSBWTS4gV2hpbGUgaXQgaXMKKwkgKiBjb3JyZWN0IGZvciBhIGhlYXAgcGFnZSB0 byBoYXZlIFBEX0FMTF9WSVNJQkxFIGV2ZW4gaWYgdGhlIFZNIGlzIG5vdAorCSAqIHNldCwgd2Ug c3Ryb25nbHkgcHJlZmVyIHRvIGtlZXAgdGhlbSBpbiBzeW5jLgorCSAqCisJICogUHJpb3IgdG8g UG9zdGdyZXMgMTksIGl0IHdhcyBwb3NzaWJsZSBmb3IgdGhlIHBhZ2UtbGV2ZWwgYml0IHRvIGJl IHNldAorCSAqIGFuZCB0aGUgVk0gYml0IHRvIGJlIGNsZWFyLiBUaGlzIGNvdWxkIGhhcHBlbiBp ZiB3ZSBjcmFzaGVkIGFmdGVyCisJICogc2V0dGluZyBQRF9BTExfVklTSUJMRSBidXQgYmVmb3Jl IHNldHRpbmcgYml0cyBpbiB0aGUgVk0uCisJICovCisJc2V0X3BkX2FsbF92aXNpYmxlID0gZG9f c2V0X3ZtICYmICFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpOworCisJLyogU2F2ZSB0aGVzZSBmb3Ig dGhlIGNhbGxlciBpbiBjYXNlIHdlIGxhdGVyIHplcm8gb3V0IHZtZmxhZ3MgKi8KKwlwcmVzdWx0 LT5uZXdfdm1iaXRzID0gdm1mbGFnczsKKwogCS8qIEFueSBlcnJvciB3aGlsZSBhcHBseWluZyB0 aGUgY2hhbmdlcyBpcyBjcml0aWNhbCAqLwogCVNUQVJUX0NSSVRfU0VDVElPTigpOwogCi0JaWYg KGRvX2hpbnQpCisJaWYgKGRvX2hpbnRfZnVsbF9vcl9wcnVuYWJsZSkKIAl7CiAJCS8qCiAJCSAq IFVwZGF0ZSB0aGUgcGFnZSdzIHBkX3BydW5lX3hpZCBmaWVsZCB0byBlaXRoZXIgemVybywgb3Ig dGhlIGxvd2VzdApAQCAtODQzLDE1ICs5NDIsMTYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVl emUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCVBhZ2VDbGVhckZ1bGwocGFn ZSk7CiAKIAkJLyoKLQkJICogSWYgdGhhdCdzIGFsbCB3ZSBoYWQgdG8gZG8gdG8gdGhlIHBhZ2Us IHRoaXMgaXMgYSBub24tV0FMLWxvZ2dlZAotCQkgKiBoaW50LiAgSWYgd2UgYXJlIGdvaW5nIHRv IGZyZWV6ZSBvciBwcnVuZSB0aGUgcGFnZSwgd2Ugd2lsbCBtYXJrCi0JCSAqIHRoZSBidWZmZXIg ZGlydHkgYmVsb3cuCisJCSAqIElmIHdlIGFyZSBfb25seV8gc2V0dGluZyB0aGUgcHJ1bmVfeGlk IG9yIFBEX1BBR0VfRlVMTCBoaW50LCB0aGVuCisJCSAqIHRoaXMgaXMgYSBub24tV0FMLWxvZ2dl ZCBoaW50LiAgSWYgd2UgYXJlIGdvaW5nIHRvIGZyZWV6ZSBvciBwcnVuZQorCQkgKiB0dXBsZXMg b24gdGhlIHBhZ2Ugb3Igc2V0IFBEX0FMTF9WSVNJQkxFLCB3ZSB3aWxsIG1hcmsgdGhlIGJ1ZmZl cgorCQkgKiBkaXJ0eSBhbmQgZW1pdCBXQUwgYmVsb3cuCiAJCSAqLwotCQlpZiAoIWRvX2ZyZWV6 ZSAmJiAhZG9fcHJ1bmUpCisJCWlmICghZG9fcHJ1bmUgJiYgIWRvX2ZyZWV6ZSAmJiAhc2V0X3Bk X2FsbF92aXNpYmxlKQogCQkJTWFya0J1ZmZlckRpcnR5SGludChidWZmZXIsIHRydWUpOwogCX0K IAotCWlmIChkb19wcnVuZSB8fCBkb19mcmVlemUpCisJaWYgKGRvX3BydW5lIHx8IGRvX2ZyZWV6 ZSB8fCBkb19zZXRfdm0pCiAJewogCQkvKiBBcHBseSB0aGUgcGxhbm5lZCBpdGVtIGNoYW5nZXMg YW5kIHJlcGFpciBwYWdlIGZyYWdtZW50YXRpb24uICovCiAJCWlmIChkb19wcnVuZSkKQEAgLTg2 NSwxMiArOTY1LDQ3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0 aW9uLCBCdWZmZXIgYnVmZmVyLAogCQlpZiAoZG9fZnJlZXplKQogCQkJaGVhcF9mcmVlemVfcHJl cGFyZWRfdHVwbGVzKGJ1ZmZlciwgcHJzdGF0ZS5mcm96ZW4sIHByc3RhdGUubmZyb3plbik7CiAK LQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisJCWlmIChzZXRfcGRfYWxsX3Zpc2libGUpCisJ CQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKIAogCQkvKgotCQkgKiBFbWl0IGEgV0FMIFhMT0df SEVBUDJfUFJVTkVfRlJFRVpFIHJlY29yZCBzaG93aW5nIHdoYXQgd2UgZGlkCisJCSAqIFdlIG9u bHkgc2V0IFBEX0FMTF9WSVNJQkxFIGlmIHdlIGFsc28gc2V0IHRoZSBWTSwgYW5kIHNpbmNlIHNl dHRpbmcKKwkJICogdGhlIFZNIHJlcXVpcmVzIGVtaXR0aW5nIFdBTCwgTWFya0J1ZmZlckRpcnR5 SGludCgpIGlzbid0CisJCSAqIGFwcHJvcHJpYXRlIGhlcmUuCiAJCSAqLwotCQlpZiAoUmVsYXRp b25OZWVkc1dBTChyZWxhdGlvbikpCisJCWlmIChkb19wcnVuZSB8fCBkb19mcmVlemUgfHwgc2V0 X3BkX2FsbF92aXNpYmxlKQorCQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisKKwkJaWYgKGRv X3NldF92bSkKKwkJeworCQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVT SVZFKTsKKwkJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldF92bWJ5dGUocmVsYXRpb24s IGJsb2Nrbm8sCisJCQkJCQkJCQkJCQkgIHZtYnVmZmVyLCB2bWZsYWdzKTsKKworCQkJaWYgKG9s ZF92bWJpdHMgPT0gdm1mbGFncykKKwkJCXsKKwkJCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZG RVJfTE9DS19VTkxPQ0spOworCQkJCWRvX3NldF92bSA9IGZhbHNlOworCQkJCS8qIDAgb3V0IHZt ZmxhZ3Mgc28gd2UgZG9uJ3QgZW1pdCBXQUwgdG8gdXBkYXRlIHRoZSBWTSAqLworCQkJCXZtZmxh Z3MgPSAwOworCQkJfQorCQl9CisKKwkJLyoKKwkJICogSXQgc2hvdWxkIG5ldmVyIGJlIHRoZSBj YXNlIHRoYXQgUERfQUxMX1ZJU0lCTEUgaXMgbm90IHNldCBhbmQgdGhlCisJCSAqIFZNIGlzIHNl dC4gT3IsIGlmIGl0IHdlcmUsIHdlIHNob3VsZCBoYXZlIGNhdWdodCBpdCBlYXJsaWVyIHdoZW4K KwkJICogZmluZGluZyBhbmQgZml4aW5nIFZNIGNvcnJ1cHRpb24uIFNvLCBpZiB3ZSBmb3VuZCBv dXQgdGhlIFZNIHdhcworCQkgKiBhbHJlYWR5IHNldCBhYm92ZSwgd2Ugc2hvdWxkIGhhdmUgZm91 bmQgUERfQUxMX1ZJU0lCTEUgc2V0IGVhcmxpZXIuCisJCSAqLworCQlBc3NlcnQoIXNldF9wZF9h bGxfdmlzaWJsZSB8fCBkb19zZXRfdm0pOworCisJCS8qCisJCSAqIEVtaXQgYSBXQUwgWExPR19I RUFQMl9QUlVORV9GUkVFWkUgcmVjb3JkIHNob3dpbmcgd2hhdCB3ZSBkaWQuIElmCisJCSAqIHdl IHdlcmUgb25seSB1cGRhdGluZyB0aGUgVk0gYW5kIGl0IHR1cm5zIG91dCBpdCB3YXMgYWxyZWFk eSBzZXQsCisJCSAqIHdlIHdpbGwgaGF2ZSB1bnNldCBkb19zZXRfdm0gZWFybGllci4gQXMgc3Vj aCwgY2hlY2sgaXQgYWdhaW4KKwkJICogYmVmb3JlIGVtaXR0aW5nIHRoZSByZWNvcmQuCisJCSAq LworCQlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWxhdGlvbikgJiYgKGRvX3NldF92bSB8fCBkb19w cnVuZSB8fCBkb19mcmVlemUpKQogCQl7CiAJCQkvKgogCQkJICogVGhlIHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uIGZvciB0aGUgd2hvbGUgcmVjb3JkIHNob3VsZCBiZSB0aGUKQEAgLTg4MiwzNSAr MTAxNyw1NiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKIAkJCSAqIG9uIHRoZSBzdGFuZGJ5IHdpdGggeGlkcyBvbGRlciB0aGFu IHRoZSB5b3VuZ2VzdCB0dXBsZSB0aGlzCiAJCQkgKiByZWNvcmQgd2lsbCBmcmVlemUgd2lsbCBj b25mbGljdC4KIAkJCSAqLwotCQkJVHJhbnNhY3Rpb25JZCBmcnpfY29uZmxpY3RfaG9yaXpvbiA9 IEludmFsaWRUcmFuc2FjdGlvbklkOwotCQkJVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQ7CisJ CQlUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCiAJ CQkvKgotCQkJICogV2UgY2FuIHVzZSB0aGUgdmlzaWJpbGl0eV9jdXRvZmZfeGlkIGFzIG91ciBj dXRvZmYgZm9yCi0JCQkgKiBjb25mbGljdHMgd2hlbiB0aGUgd2hvbGUgcGFnZSBpcyBlbGlnaWJs ZSB0byBiZWNvbWUgYWxsLWZyb3plbgotCQkJICogaW4gdGhlIFZNIG9uY2Ugd2UncmUgZG9uZSB3 aXRoIGl0LiAgT3RoZXJ3aXNlIHdlIGdlbmVyYXRlIGEKLQkJCSAqIGNvbnNlcnZhdGl2ZSBjdXRv ZmYgYnkgc3RlcHBpbmcgYmFjayBmcm9tIE9sZGVzdFhtaW4uCisJCQkgKiBJZiB3ZSBhcmUgdXBk YXRpbmcgdGhlIFZNLCB0aGUgY29uZmxpY3QgaG9yaXpvbiBpcyBhbG1vc3QKKwkJCSAqIGFsd2F5 cyB0aGUgdmlzaWJpbGl0eSBjdXRvZmYgWElELgorCQkJICoKKwkJCSAqIFNlcGFyYXRlbHksIGlm IHdlIGFyZSBmcmVlemluZyBhbnkgdHVwbGVzLCBhcyBhbiBvcHRpbWl6YXRpb24sCisJCQkgKiB3 ZSBjYW4gdXNlIHRoZSB2aXNpYmlsaXR5X2N1dG9mZl94aWQgYXMgdGhlIGNvbmZsaWN0IGhvcml6 b24gaWYKKwkJCSAqIHRoZSBwYWdlIHdpbGwgYmUgYWxsLWZyb3plbi4gVGhpcyBpcyB0cnVlIGV2 ZW4gaWYgdGhlcmUgYXJlCisJCQkgKiBMUF9ERUFEIGxpbmUgcG9pbnRlcnMgYmVjYXVzZSB3ZSBp Z25vcmVkIHRob3NlIHdoZW4gbWFpbnRhaW5pbmcKKwkJCSAqIHRoZSB2aXNpYmlsaXR5X2N1dG9m Zl94aWQuCiAJCQkgKi8KLQkJCWlmIChkb19mcmVlemUpCisJCQlpZiAoZG9fc2V0X3ZtIHx8IChk b19mcmVlemUgJiYgYWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCkpCisJCQkJY29uZmxpY3RfeGlk ID0gcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQ7CisKKwkJCS8qCisJCQkgKiBPdGhlcndp c2UsIGlmIHdlIGFyZSBmcmVlemluZyBidXQgdGhlIHBhZ2Ugd291bGQgbm90IGJlCisJCQkgKiBh bGwtZnJvemVuLCB3ZSBoYXZlIHRvIHVzZSB0aGUgbW9yZSBwZXNzaW1pc3RpYyBob3Jpem9uIG9m CisJCQkgKiBPbGRlc3RYbWluLCB3aGljaCBtYXkgYmUgbmV3ZXIgdGhhbiB0aGUgbmV3ZXN0IHR1 cGxlIHdlIGZyb3plLgorCQkJICogV2UgY3VycmVudGx5IGRvbid0IHRyYWNrIHRoZSBuZXdlc3Qg dHVwbGUgd2UgZnJvemUuCisJCQkgKi8KKwkJCWVsc2UgaWYgKGRvX2ZyZWV6ZSkKIAkJCXsKLQkJ CQlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLmFsbF9mcm96ZW4pCi0JCQkJCWZy el9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQ7Ci0JCQkJ ZWxzZQotCQkJCXsKLQkJCQkJLyogQXZvaWRzIGZhbHNlIGNvbmZsaWN0cyB3aGVuIGhvdF9zdGFu ZGJ5X2ZlZWRiYWNrIGluIHVzZSAqLwotCQkJCQlmcnpfY29uZmxpY3RfaG9yaXpvbiA9IHByc3Rh dGUuY3V0b2Zmcy0+T2xkZXN0WG1pbjsKLQkJCQkJVHJhbnNhY3Rpb25JZFJldHJlYXQoZnJ6X2Nv bmZsaWN0X2hvcml6b24pOwotCQkJCX0KKwkJCQljb25mbGljdF94aWQgPSBwcnN0YXRlLmN1dG9m ZnMtPk9sZGVzdFhtaW47CisJCQkJVHJhbnNhY3Rpb25JZFJldHJlYXQoY29uZmxpY3RfeGlkKTsK IAkJCX0KIAotCQkJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKGZyel9jb25mbGljdF9ob3Jpem9u LCBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCkpCi0JCQkJY29uZmxpY3RfeGlkID0gZnJ6X2Nv bmZsaWN0X2hvcml6b247Ci0JCQllbHNlCisJCQkvKgorCQkJICogSWYgd2UgYXJlIHJlbW92aW5n IHR1cGxlcyB3aXRoIGEgeW91bmdlciB4bWF4IHRoYW4gb3VyIHNvIGZhcgorCQkJICogY2FsY3Vs YXRlZCBjb25mbGljdF94aWQsIHdlIG11c3QgdXNlIHRoaXMgYXMgb3VyIGhvcml6b24uCisJCQkg Ki8KKwkJCWlmIChUcmFuc2FjdGlvbklkRm9sbG93cyhwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3Zl ZCwgY29uZmxpY3RfeGlkKSkKIAkJCQljb25mbGljdF94aWQgPSBwcnN0YXRlLmxhdGVzdF94aWRf cmVtb3ZlZDsKIAorCQkJLyoKKwkJCSAqIFdlIGNhbiBvbWl0IHRoZSBzbmFwc2hvdCBjb25mbGlj dCBob3Jpem9uIGlmIHdlIGFyZSBub3QgcHJ1bmluZworCQkJICogb3IgZnJlZXppbmcgYW55IHR1 cGxlcyBhbmQgYXJlIHNldHRpbmcgYW4gYWxyZWFkeSBhbGwtdmlzaWJsZQorCQkJICogcGFnZSBh bGwtZnJvemVuIGluIHRoZSBWTS4gSW4gdGhpcyBjYXNlLCBhbGwgb2YgdGhlIHR1cGxlcyBvbgor CQkJICogdGhlIHBhZ2UgbXVzdCBhbHJlYWR5IGJlIHZpc2libGUgdG8gYWxsIE1WQ0Mgc25hcHNo b3RzIG9uIHRoZQorCQkJICogc3RhbmRieS4KKwkJCSAqLworCQkJaWYgKCFkb19wcnVuZSAmJiAh ZG9fZnJlZXplICYmIGRvX3NldF92bSAmJgorCQkJCWJsa19rbm93bl9hdiAmJiAodm1mbGFncyAm IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikpCisJCQkJY29uZmxpY3RfeGlkID0gSW52YWxpZFRy YW5zYWN0aW9uSWQ7CisKIAkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUocmVsYXRpb24sIGJ1 ZmZlciwKIAkJCQkJCQkJCSAgZmFsc2UsCi0JCQkJCQkJCQkgIEludmFsaWRCdWZmZXIsIDAsIGZh bHNlLAorCQkJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkJCSAgdm1mbGFncywKKwkJCQkJCQkJ CSAgc2V0X3BkX2FsbF92aXNpYmxlLAogCQkJCQkJCQkJICBjb25mbGljdF94aWQsCiAJCQkJCQkJ CQkgIHRydWUsIHJlYXNvbiwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5mcm96ZW4sIHByc3RhdGUubmZy b3plbiwKQEAgLTkyMiwxMjQgKzEwNzgsNTUgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAKIAlFTkRfQ1JJVF9TRUNUSU9OKCk7 CiAKLQkvKiBDb3B5IGluZm9ybWF0aW9uIGJhY2sgZm9yIGNhbGxlciAqLwotCXByZXN1bHQtPm5k ZWxldGVkID0gcHJzdGF0ZS5uZGVsZXRlZDsKLQlwcmVzdWx0LT5ubmV3bHBkZWFkID0gcHJzdGF0 ZS5uZGVhZDsKLQlwcmVzdWx0LT5uZnJvemVuID0gcHJzdGF0ZS5uZnJvemVuOwotCXByZXN1bHQt PmxpdmVfdHVwbGVzID0gcHJzdGF0ZS5saXZlX3R1cGxlczsKLQlwcmVzdWx0LT5yZWNlbnRseV9k ZWFkX3R1cGxlcyA9IHByc3RhdGUucmVjZW50bHlfZGVhZF90dXBsZXM7Ci0KLQkvKgotCSAqIEl0 IHdhcyBjb252ZW5pZW50IHRvIGlnbm9yZSBMUF9ERUFEIGl0ZW1zIGluIGFsbF92aXNpYmxlIGVh cmxpZXIgb24gdG8KLQkgKiBtYWtlIHRoZSBjaG9pY2Ugb2Ygd2hldGhlciBvciBub3QgdG8gZnJl ZXplIHRoZSBwYWdlIHVuYWZmZWN0ZWQgYnkgdGhlCi0JICogc2hvcnQtdGVybSBwcmVzZW5jZSBv ZiBMUF9ERUFEIGl0ZW1zLiAgVGhlc2UgTFBfREVBRCBpdGVtcyB3ZXJlCi0JICogZWZmZWN0aXZl bHkgYXNzdW1lZCB0byBiZSBMUF9VTlVTRUQgaXRlbXMgaW4gdGhlIG1ha2luZy4gIEl0IGRvZXNu J3QKLQkgKiBtYXR0ZXIgd2hpY2ggdmFjdXVtIGhlYXAgcGFzcyAoaW5pdGlhbCBwYXNzIG9yIGZp bmFsIHBhc3MpIGVuZHMgdXAKLQkgKiBzZXR0aW5nIHRoZSBwYWdlIGFsbC1mcm96ZW4sIGFzIGxv bmcgYXMgdGhlIG9uZ29pbmcgVkFDVVVNIGRvZXMgaXQuCi0JICoKLQkgKiBOb3cgdGhhdCBmcmVl emluZyBoYXMgYmVlbiBmaW5hbGl6ZWQsIHVuc2V0IGFsbF92aXNpYmxlIGlmIHRoZXJlIGFyZQot CSAqIGFueSBMUF9ERUFEIGl0ZW1zIG9uIHRoZSBwYWdlLiAgSXQgbmVlZHMgdG8gcmVmbGVjdCB0 aGUgcHJlc2VudCBzdGF0ZQotCSAqIG9mIHRoZSBwYWdlLCBhcyBleHBlY3RlZCBmb3IgdXBkYXRp bmcgdGhlIHZpc2liaWxpdHkgbWFwLgotCSAqLwotCWlmIChwcnN0YXRlLmFsbF92aXNpYmxlICYm IHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApCi0JewotCQlwcmVzdWx0LT5hbGxfdmlzaWJsZSA9 IHByc3RhdGUuYWxsX3Zpc2libGU7Ci0JCXByZXN1bHQtPmFsbF9mcm96ZW4gPSBwcnN0YXRlLmFs bF9mcm96ZW47Ci0JfQotCWVsc2UKLQl7Ci0JCXByZXN1bHQtPmFsbF92aXNpYmxlID0gZmFsc2U7 Ci0JCXByZXN1bHQtPmFsbF9mcm96ZW4gPSBmYWxzZTsKLQl9Ci0KLQlwcmVzdWx0LT5oYXN0dXAg PSBwcnN0YXRlLmhhc3R1cDsKKwlpZiAoZG9fc2V0X3ZtKQorCQlMb2NrQnVmZmVyKHZtYnVmZmVy LCBCVUZGRVJfTE9DS19VTkxPQ0spOwogCi0JLyoKLQkgKiBJZiB1cGRhdGluZyB0aGUgdmlzaWJp bGl0eSBtYXAsIHRoZSBjb25mbGljdCBob3Jpem9uIGZvciB0aGF0IHJlY29yZAotCSAqIG11c3Qg YmUgdGhlIG5ld2VzdCB4bWluIG9uIHRoZSBwYWdlLiAgSG93ZXZlciwgaWYgdGhlIHBhZ2UgaXMK LQkgKiBjb21wbGV0ZWx5IGZyb3plbiwgdGhlcmUgY2FuIGJlIG5vIGNvbmZsaWN0IGFuZCB0aGUg dm1fY29uZmxpY3RfaG9yaXpvbgotCSAqIHNob3VsZCByZW1haW4gSW52YWxpZFRyYW5zYWN0aW9u SWQuICBUaGlzIGluY2x1ZGVzIHRoZSBjYXNlIHRoYXQgd2UKLQkgKiBqdXN0IGZyb3plIGFsbCB0 aGUgdHVwbGVzOyB0aGUgcHJ1bmUtZnJlZXplIHJlY29yZCBpbmNsdWRlZCB0aGUKLQkgKiBjb25m bGljdCBYSUQgYWxyZWFkeSBzbyB0aGUgVk0gdXBkYXRlIHJlY29yZCBkb2Vzbid0IG5lZWQgaXQu Ci0JICovCi0JaWYgKHByZXN1bHQtPmFsbF9mcm96ZW4pCi0JCXByZXN1bHQtPnZtX2NvbmZsaWN0 X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQllbHNlCi0JCXByZXN1bHQtPnZtX2Nv bmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKKwlBc3NlcnQo IXByc3RhdGUuYWxsX3Zpc2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApKTsKIAog CS8qCi0JICogSGFuZGxlIHNldHRpbmcgdmlzaWJpbGl0eSBtYXAgYml0IGJhc2VkIG9uIGluZm9y bWF0aW9uIGZyb20gdGhlIFZNIChhcwotCSAqIG9mIGxhc3QgaGVhcF92YWNfc2Nhbl9uZXh0X2Js b2NrKCkgY2FsbCksIGFuZCBmcm9tIGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96ZW4gdmFy aWFibGVzLgorCSAqIFZBQ1VVTSB3aWxsIGNhbGwgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKCkg ZHVyaW5nIHRoZSBzZWNvbmQgcGFzcyBvdmVyCisJICogdGhlIGhlYXAgdG8gZGV0ZXJtaW5lIGFs bF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIGZvciB0aGUgcGFnZSAtLSB0aGlzCisJICogaXMgYSBz cGVjaWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBsb2dpYyBmcm9tIHRoaXMgZnVuY3Rpb24uICBOb3cg dGhhdAorCSAqIHdlJ3ZlIGZpbmlzaGVkIHBydW5pbmcgYW5kIGZyZWV6aW5nLCBtYWtlIHN1cmUg dGhhdCB3ZSdyZSBpbiB0b3RhbAorCSAqIGFncmVlbWVudCB3aXRoIGhlYXBfcGFnZV9pc19hbGxf dmlzaWJsZSgpIHVzaW5nIGFuIGFzc2VydGlvbi4gV2Ugd2lsbAorCSAqIGhhdmUgYWxyZWFkeSBz ZXQgdGhlIHBhZ2UgaW4gdGhlIFZNLCBzbyB0aGlzIGFzc2VydGlvbiB3aWxsIG9ubHkgbGV0CisJ ICogeW91IGtub3cgdGhhdCB5b3UndmUgYWxyZWFkeSBkb25lIHNvbWV0aGluZyB3cm9uZy4KIAkg Ki8KLQlpZiAob3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0pCisjaWZkZWYgVVNF X0FTU0VSVF9DSEVDS0lORworCWlmIChwcnN0YXRlLmFsbF92aXNpYmxlKQogCXsKLQkJaWYgKGlk ZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihyZWxhdGlvbiwKLQkJCQkJCQkJCQkgICBibG9j a25vLCBidWZmZXIsIHBhZ2UsCi0JCQkJCQkJCQkJICAgYmxrX2tub3duX2F2LAotCQkJCQkJCQkJ CSAgIHByc3RhdGUubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlcikpCi0JCXsKLQkJCS8qIElmIHdlIGZp eCBjb3JydXB0aW9uLCBkb24ndCB1cGRhdGUgdGhlIFZNIGZ1cnRoZXIgKi8KLQkJfQorCQlUcmFu c2FjdGlvbklkIGRlYnVnX2N1dG9mZjsKKwkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKIAotCQkv KgotCQkgKiBJZiB0aGUgcGFnZSBpc24ndCB5ZXQgbWFya2VkIGFsbC12aXNpYmxlIGluIHRoZSBW TSBvciBpdCBpcyBhbmQKLQkJICogbmVlZHMgdG8gbWUgbWFya2VkIGFsbC1mcm96ZW4sIHVwZGF0 ZSB0aGUgVk0gTm90ZSB0aGF0IGFsbF9mcm96ZW4KLQkJICogaXMgb25seSB2YWxpZCBpZiBhbGxf dmlzaWJsZSBpcyB0cnVlLCBzbyB3ZSBtdXN0IGNoZWNrIGJvdGgKLQkJICogYWxsX3Zpc2libGUg YW5kIGFsbF9mcm96ZW4uCi0JCSAqLwotCQllbHNlIGlmIChwcmVzdWx0LT5hbGxfdmlzaWJsZSAm JgotCQkJCSAoIWJsa19rbm93bl9hdiB8fAotCQkJCSAgKHByZXN1bHQtPmFsbF9mcm96ZW4gJiYg IVZNX0FMTF9GUk9aRU4ocmVsYXRpb24sIGJsb2Nrbm8sICZ2bWJ1ZmZlcikpKSkKLQkJewotCQkJ QXNzZXJ0KHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApOwotCQkJdm1mbGFncyA9IFZJU0lCSUxJ VFlNQVBfQUxMX1ZJU0lCTEU7CisJCUFzc2VydChjdXRvZmZzKTsKIAotCQkJLyoKLQkJCSAqIElm IHRoZSBwYWdlIGlzIGFsbC1mcm96ZW4sIHdlIGNhbiBwYXNzIEludmFsaWRUcmFuc2FjdGlvbklk IGFzCi0JCQkgKiBvdXIgY3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFwc2hvdENvbmZsaWN0SG9yaXpv biBzdWZmaWNpZW50IHRvCi0JCQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETyB3YXMg bG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMKLQkJCSAqIHdlcmUgZnJvemVuLgotCQkJICov Ci0JCQlpZiAocHJlc3VsdC0+YWxsX2Zyb3plbikKLQkJCXsKLQkJCQlBc3NlcnQoIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKHByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24pKTsKLQkJCQl2bWZsYWdz IHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKLQkJCX0KKwkJQXNzZXJ0KHByc3RhdGUubHBk ZWFkX2l0ZW1zID09IDApOwogCi0JCQkvKgotCQkJICogSXQncyBwb3NzaWJsZSBmb3IgdGhlIFZN IGJpdCB0byBiZSBjbGVhciBhbmQgdGhlIHBhZ2UtbGV2ZWwgYml0Ci0JCQkgKiB0byBiZSBzZXQg aWYgY2hlY2tzdW1zIGFyZSBub3QgZW5hYmxlZC4KLQkJCSAqCi0JCQkgKiBBbmQgZXZlbiBpZiB3 ZSBhcmUganVzdCBwbGFubmluZyB0byB1cGRhdGUgdGhlIGZyb3plbiBiaXQgaW4KLQkJCSAqIHRo ZSBWTSwgd2Ugc2hvdWxkbid0IHJlbHkgb24gYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGFz IGEKLQkJCSAqIHByb3h5IGZvciB0aGUgcGFnZS1sZXZlbCBQRF9BTExfVklTSUJMRSBiaXQgYmVp bmcgc2V0LCBzaW5jZSBpdAotCQkJICogbWlnaHQgaGF2ZSBiZWNvbWUgc3RhbGUuCi0JCQkgKgot CQkJICogSWYgdGhlIGhlYXAgcGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhlIFZNIGJpdCBpcyBu b3Qgc2V0LCB3ZQotCQkJICogZG9uJ3QgbmVlZCB0byBkaXJ0eSB0aGUgaGVhcCBwYWdlLiAgSG93 ZXZlciwgaWYgY2hlY2tzdW1zIGFyZQotCQkJICogZW5hYmxlZCwgd2UgZG8gbmVlZCB0byBtYWtl IHN1cmUgdGhhdCB0aGUgaGVhcCBwYWdlIGlzIGRpcnRpZWQKLQkJCSAqIGJlZm9yZSBwYXNzaW5n IGl0IHRvIHZpc2liaWxpdHltYXBfc2V0KCksIGJlY2F1c2UgaXQgbWF5IGJlCi0JCQkgKiBsb2dn ZWQuCi0JCQkgKi8KLQkJCWlmICghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSB8fCBYTG9nSGludEJp dElzTmVlZGVkKCkpCi0JCQl7Ci0JCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQkJTWFy a0J1ZmZlckRpcnR5KGJ1ZmZlcik7Ci0JCQl9CisJCWlmICghaGVhcF9wYWdlX2lzX2FsbF92aXNp YmxlKHJlbGF0aW9uLCBidWZmZXIsCisJCQkJCQkJCQkgIGN1dG9mZnMtPk9sZGVzdFhtaW4sCisJ CQkJCQkJCQkgICZkZWJ1Z19hbGxfZnJvemVuLAorCQkJCQkJCQkJICAmZGVidWdfY3V0b2ZmLCBv ZmZfbG9jKSkKKwkJCUFzc2VydChmYWxzZSk7CiAKLQkJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5 bWFwX3NldChyZWxhdGlvbiwgYmxvY2tubywgYnVmZmVyLCBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJ CQkJCQkJCQkgICB2bWJ1ZmZlciwgcHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbiwKLQkJCQkJ CQkJCQkgICB2bWZsYWdzKTsKLQkJfQorCQlBc3NlcnQocHJzdGF0ZS5hbGxfZnJvemVuID09IGRl YnVnX2FsbF9mcm96ZW4pOworCisJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVidWdf Y3V0b2ZmKSB8fAorCQkJICAgZGVidWdfY3V0b2ZmID09IHByc3RhdGUudmlzaWJpbGl0eV9jdXRv ZmZfeGlkKTsKIAl9CisjZW5kaWYKIAorCS8qIENvcHkgaW5mb3JtYXRpb24gYmFjayBmb3IgY2Fs bGVyICovCisJcHJlc3VsdC0+bmRlbGV0ZWQgPSBwcnN0YXRlLm5kZWxldGVkOworCXByZXN1bHQt Pm5uZXdscGRlYWQgPSBwcnN0YXRlLm5kZWFkOworCXByZXN1bHQtPm5mcm96ZW4gPSBwcnN0YXRl Lm5mcm96ZW47CisJcHJlc3VsdC0+bGl2ZV90dXBsZXMgPSBwcnN0YXRlLmxpdmVfdHVwbGVzOwor CXByZXN1bHQtPnJlY2VudGx5X2RlYWRfdHVwbGVzID0gcHJzdGF0ZS5yZWNlbnRseV9kZWFkX3R1 cGxlczsKKwlwcmVzdWx0LT5vbGRfdm1iaXRzID0gb2xkX3ZtYml0czsKKwkvKiBuZXdfdm1iaXRz IHdhcyBzZXQgYWJvdmUgKi8KKwlwcmVzdWx0LT5oYXN0dXAgPSBwcnN0YXRlLmhhc3R1cDsKIAlw cmVzdWx0LT5scGRlYWRfaXRlbXMgPSBwcnN0YXRlLmxwZGVhZF9pdGVtczsKIAkvKiB0aGUgcHJl c3VsdC0+ZGVhZG9mZnNldHMgYXJyYXkgd2FzIGFscmVhZHkgZmlsbGVkIGluICovCiAKLQlwcmVz dWx0LT5vbGRfdm1iaXRzID0gb2xkX3ZtYml0czsKLQlwcmVzdWx0LT5uZXdfdm1iaXRzID0gdm1m bGFnczsKLQogCWlmIChwcnN0YXRlLmZyZWV6ZSkKIAl7CiAJCWlmIChwcmVzdWx0LT5uZnJvemVu ID4gMCkKQEAgLTE2MjEsNyArMTcwOCwxMiBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRf bHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYgogCQkJ YnJlYWs7CiAJfQogCi0JLyogQ29uc2lkZXIgZnJlZXppbmcgYW55IG5vcm1hbCB0dXBsZXMgd2hp Y2ggd2lsbCBub3QgYmUgcmVtb3ZlZCAqLworCS8qCisJICogQ29uc2lkZXIgZnJlZXppbmcgYW55 IG5vcm1hbCB0dXBsZXMgd2hpY2ggd2lsbCBub3QgYmUgcmVtb3ZlZC4KKwkgKiBSZWdhcmRsZXNz IG9mIHdoZXRoZXIgb3Igbm90IHdlIHdhbnQgdG8gZnJlZXplIHRoZSB0dXBsZXMsIGlmIHdlIHdh bnQKKwkgKiB0byB1cGRhdGUgdGhlIFZNLCB3ZSBoYXZlIHRvIGNhbGwgaGVhcF9wcmVwYXJlX2Zy ZWV6ZV90dXBsZSgpIG9uIGV2ZXJ5CisJICogdHVwbGUgdG8ga25vdyB3aGV0aGVyIG9yIG5vdCB0 aGUgcGFnZSB3aWxsIGJlIHRvdGFsbHkgZnJvemVuLgorCSAqLwogCWlmIChwcnN0YXRlLT5mcmVl emUpCiAJewogCQlib29sCQl0b3RhbGx5X2Zyb3plbjsKQEAgLTIyMzQsNiArMjMyNiw4IEBAIGxv Z19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIs CiAJT2Zmc2V0TnVtYmVyIGZyel9vZmZzZXRzW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKIAlib29s CQlkb19wcnVuZSA9IG5yZWRpcmVjdGVkID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDA7 CiAKKwlBc3NlcnQoZG9fcHJ1bmUgfHwgbmZyb3plbiA+IDAgfHwgdm1mbGFncyAmIFZJU0lCSUxJ VFlNQVBfVkFMSURfQklUUyk7CisKIAl4bHJlYy5mbGFncyA9IDA7CiAJcmVnYnVmX2ZsYWdzID0g UkVHQlVGX1NUQU5EQVJEOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXgg YzQ5ZTgxYmM1ZGQuLjkxZTIwOTkwMWI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jCkBAIC0yMDE0LDM0ICsyMDE0LDYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZh Y3JlbCwKIAkJdmFjcmVsLT5uZXdfZnJvemVuX3R1cGxlX3BhZ2VzKys7CiAJfQogCi0JLyoKLQkg KiBWQUNVVU0gd2lsbCBjYWxsIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpIGR1cmluZyB0aGUg c2Vjb25kIHBhc3Mgb3ZlcgotCSAqIHRoZSBoZWFwIHRvIGRldGVybWluZSBhbGxfdmlzaWJsZSBh bmQgYWxsX2Zyb3plbiBmb3IgdGhlIHBhZ2UgLS0gdGhpcwotCSAqIGlzIGEgc3BlY2lhbGl6ZWQg dmVyc2lvbiBvZiB0aGUgbG9naWMgZnJvbSB0aGlzIGZ1bmN0aW9uLiAgTm93IHRoYXQKLQkgKiB3 ZSd2ZSBmaW5pc2hlZCBwcnVuaW5nIGFuZCBmcmVlemluZywgbWFrZSBzdXJlIHRoYXQgd2UncmUg aW4gdG90YWwKLQkgKiBhZ3JlZW1lbnQgd2l0aCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKSB1 c2luZyBhbiBhc3NlcnRpb24uCi0JICovCi0jaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotCS8q IE5vdGUgdGhhdCBhbGxfZnJvemVuIHZhbHVlIGRvZXMgbm90IG1hdHRlciB3aGVuICFhbGxfdmlz aWJsZSAqLwotCWlmIChwcmVzdWx0LmFsbF92aXNpYmxlKQotCXsKLQkJVHJhbnNhY3Rpb25JZCBk ZWJ1Z19jdXRvZmY7Ci0JCWJvb2wJCWRlYnVnX2FsbF9mcm96ZW47Ci0KLQkJQXNzZXJ0KHByZXN1 bHQubHBkZWFkX2l0ZW1zID09IDApOwotCi0JCWlmICghaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxl KHZhY3JlbC0+cmVsLCBidWYsCi0JCQkJCQkJCQkgIHZhY3JlbC0+Y3V0b2Zmcy5PbGRlc3RYbWlu LCAmZGVidWdfYWxsX2Zyb3plbiwKLQkJCQkJCQkJCSAgJmRlYnVnX2N1dG9mZiwgJnZhY3JlbC0+ b2ZmbnVtKSkKLQkJCUFzc2VydChmYWxzZSk7Ci0KLQkJQXNzZXJ0KHByZXN1bHQuYWxsX2Zyb3pl biA9PSBkZWJ1Z19hbGxfZnJvemVuKTsKLQotCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KGRlYnVnX2N1dG9mZikgfHwKLQkJCSAgIGRlYnVnX2N1dG9mZiA9PSBwcmVzdWx0LnZtX2NvbmZs aWN0X2hvcml6b24pOwotCX0KLSNlbmRpZgotCiAJLyoKIAkgKiBOb3cgc2F2ZSBkZXRhaWxzIG9m IHRoZSBMUF9ERUFEIGl0ZW1zIGZyb20gdGhlIHBhZ2UgaW4gdmFjcmVsCiAJICovCkBAIC0yMDc1 LDggKzIwNDcsNiBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCS8qIERp ZCB3ZSBmaW5kIExQX0RFQUQgaXRlbXM/ICovCiAJKmhhc19scGRlYWRfaXRlbXMgPSAocHJlc3Vs dC5scGRlYWRfaXRlbXMgPiAwKTsKIAotCUFzc2VydCghcHJlc3VsdC5hbGxfdmlzaWJsZSB8fCAh KCpoYXNfbHBkZWFkX2l0ZW1zKSk7Ci0KIAkvKgogCSAqIEZvciB0aGUgcHVycG9zZXMgb2YgbG9n Z2luZywgY291bnQgd2hldGhlciBvciBub3QgdGhlIHBhZ2Ugd2FzIG5ld2x5CiAJICogc2V0IGFs bC12aXNpYmxlIGFuZCwgcG90ZW50aWFsbHksIGFsbC1mcm96ZW4uCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5k ZXggYjg1NjQ4NDU2ZTkuLjBiOWJiMWM5YjEzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC0yMzUsMTkg KzIzNSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVJlc3VsdAogCWludAkJCXJlY2Vu dGx5X2RlYWRfdHVwbGVzOwogCiAJLyoKLQkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBp bmRpY2F0ZSB0aGUgc3RhdHVzIG9mIHRoZSBwYWdlIGFzIHJlZmxlY3RlZAotCSAqIGluIHRoZSB2 aXNpYmlsaXR5IG1hcCBhZnRlciBwcnVuaW5nLCBmcmVlemluZywgYW5kIHNldHRpbmcgYW55IHBh Z2VzCi0JICogYWxsLXZpc2libGUgaW4gdGhlIHZpc2liaWxpdHkgbWFwLgorCSAqIG9sZF92bWJp dHMgYXJlIHRoZSBzdGF0ZSBvZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYml0cyBp biB0aGUKKwkgKiB2aXNpYmlsaXR5IG1hcCBiZWZvcmUgdXBkYXRpbmcgaXQgZHVyaW5nIHBoYXNl IEkgb2YgdmFjdXVtaW5nLgorCSAqIG5ld192bWJpdHMgYXJlIHRoZSBzdGF0ZSBvZiB0aG9zZSBi aXRzIGFmdGVyIHBoYXNlIEkgb2YgdmFjdXVtaW5nLgogCSAqCi0JICogdm1fY29uZmxpY3RfaG9y aXpvbiBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UKLQkgKiAo b2xkZXIgdGhhbiBPbGRlc3RYbWluKS4gIEl0IHdpbGwgb25seSBiZSB2YWxpZCBpZiB3ZSBkaWQg bm90IHNldCB0aGUKLQkgKiBwYWdlIGFsbC1mcm96ZW4gaW4gdGhlIFZNLgotCSAqCi0JICogVGhl c2UgYXJlIG9ubHkgc2V0IGlmIHRoZSBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0Lgor CSAqIFRoZXNlIGFyZSBvbmx5IHNldCBpZiB0aGUgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSBv cHRpb24gaXMgc2V0LgogCSAqLwotCWJvb2wJCWFsbF92aXNpYmxlOwotCWJvb2wJCWFsbF9mcm96 ZW47Ci0JVHJhbnNhY3Rpb25JZCB2bV9jb25mbGljdF9ob3Jpem9uOwogCXVpbnQ4CQlvbGRfdm1i aXRzOwogCXVpbnQ4CQluZXdfdm1iaXRzOwogCi0tIAoyLjQzLjAKCg== --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0014-Remove-xl_heap_visible-entirely.patch" Content-Disposition: attachment; filename="v7-0014-Remove-xl_heap_visible-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84cl13 RnJvbSAzYWNmNDUxYmI0MDM5NDMzMDI4MWFlODJjNWVmNGM1YzY4NTQzOGI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjMwOjQyIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAxNC8yMl0gUmVtb3ZlIHhsX2hlYXBfdmlzaWJsZSBlbnRpcmVseQoKVGhlcmUgYXJl IG5vdyBubyB1c2VycyBvZiB0aGlzLCBzbyBlbGltaW5hdGUgaXQgZW50aXJlbHkuCi0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMgICAgICB8ICAgMyArLQogc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICB8ICA1NCArLS0tLS0tLQogc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyAgICB8IDE1NCArLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICB8ICAgNCArLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgICB8ICAxMCArLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jICB8IDEwOSArLS0tLS0tLS0tLS0tLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYyAgIHwgIDEwIC0tCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jIHwgICAxIC0KIHNyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyAgICAgICAgfCAgMTIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW1feGxvZy5oICAgICAgICAgfCAgMjAgLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvdmlz aWJpbGl0eW1hcC5oICAgICAgIHwgIDExICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0 eW1hcGRlZnMuaCAgIHwgICA5IC0tCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAg ICAgICAgIHwgICAxIC0KIDEzIGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDM2OCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1h c2suYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jCmluZGV4IGJiMjYwY2Zm YTY4Li4xZmZmMDEzODNiMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9i dWZtYXNrLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKQEAgLTU2 LDggKzU2LDcgQEAgbWFza19wYWdlX2hpbnRfYml0cyhQYWdlIHBhZ2UpCiAKIAkvKgogCSAqIER1 cmluZyByZXBsYXksIGlmIHRoZSBwYWdlIExTTiBoYXMgYWR2YW5jZWQgcGFzdCBvdXIgWExPRyBy ZWNvcmQncyBMU04sCi0JICogd2UgZG9uJ3QgbWFyayB0aGUgcGFnZSBhbGwtdmlzaWJsZS4gU2Vl IGhlYXBfeGxvZ192aXNpYmxlKCkgZm9yCi0JICogZGV0YWlscy4KKwkgKiB3ZSBkb24ndCBtYXJr IHRoZSBwYWdlIGFsbC12aXNpYmxlLgogCSAqLwogCVBhZ2VDbGVhckFsbFZpc2libGUocGFnZSk7 CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IDRjZTBlYzYxNjkyLi4wNjBhMTY2ZTE4 ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRl ICJhY2Nlc3MvdmFsaWQuaCIKICNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIgogI2lu Y2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2d1dGlscy5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X2RhdGFiYXNlX2QuaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKQEAgLTI1MjQsMTEg KzI1MjUsMTEgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFi bGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQkJQXNzZXJ0KHZpc2liaWxpdHltYXBfcGlu X29rKEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlciksIHZtYnVmZmVyKSk7CiAJCQlQYWdlU2V0 QWxsVmlzaWJsZShwYWdlKTsKIAkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX0VY Q0xVU0lWRSk7Ci0JCQl2aXNpYmlsaXR5bWFwX3NldF92bWJ5dGUocmVsYXRpb24sCi0JCQkJCQkJ CQkgQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSwKLQkJCQkJCQkJCSB2bWJ1ZmZlciwKLQkJ CQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKLQkJCQkJCQkJCSBWSVNJQklMSVRZ TUFQX0FMTF9GUk9aRU4pOworCQkJdmlzaWJpbGl0eW1hcF9zZXQocmVsYXRpb24sCisJCQkJCQkJ ICBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLAorCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJ CQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkgIFZJU0lCSUxJVFlNQVBf QUxMX0ZST1pFTik7CiAJCX0KIAogCQkvKgpAQCAtODc5Niw0OSArODc5Nyw2IEBAIGJvdHRvbXVw X3NvcnRfYW5kX3NocmluayhUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSkKIAlyZXR1cm4gbmJs b2Nrc2Zhdm9yYWJsZTsKIH0KIAotLyoKLSAqIFBlcmZvcm0gWExvZ0luc2VydCBmb3IgYSBoZWFw LXZpc2libGUgb3BlcmF0aW9uLiAgJ2Jsb2NrJyBpcyB0aGUgYmxvY2sKLSAqIGJlaW5nIG1hcmtl ZCBhbGwtdmlzaWJsZSwgYW5kIHZtX2J1ZmZlciBpcyB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhl Ci0gKiBjb3JyZXNwb25kaW5nIHZpc2liaWxpdHkgbWFwIGJsb2NrLiAgQm90aCBzaG91bGQgaGF2 ZSBhbHJlYWR5IGJlZW4gbW9kaWZpZWQKLSAqIGFuZCBkaXJ0aWVkLgotICoKLSAqIHNuYXBzaG90 Q29uZmxpY3RIb3Jpem9uIGNvbWVzIGZyb20gdGhlIGxhcmdlc3QgeG1pbiBvbiB0aGUgcGFnZSBi ZWluZwotICogbWFya2VkIGFsbC12aXNpYmxlLiAgUkVETyByb3V0aW5lIHVzZXMgaXQgdG8gZ2Vu ZXJhdGUgcmVjb3ZlcnkgY29uZmxpY3RzLgotICoKLSAqIElmIGNoZWNrc3VtcyBvciB3YWxfbG9n X2hpbnRzIGFyZSBlbmFibGVkLCB3ZSBtYXkgYWxzbyBnZW5lcmF0ZSBhIGZ1bGwtcGFnZQotICog aW1hZ2Ugb2YgaGVhcF9idWZmZXIuIE90aGVyd2lzZSwgd2Ugb3B0aW1pemUgYXdheSB0aGUgRlBJ IChieSBzcGVjaWZ5aW5nCi0gKiBSRUdCVUZfTk9fSU1BR0UgZm9yIHRoZSBoZWFwIGJ1ZmZlciks IGluIHdoaWNoIGNhc2UgdGhlIGNhbGxlciBzaG91bGQgKm5vdCoKLSAqIHVwZGF0ZSB0aGUgaGVh cCBwYWdlJ3MgTFNOLgotICovCi1YTG9nUmVjUHRyCi1sb2dfaGVhcF92aXNpYmxlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGhlYXBfYnVmZmVyLCBCdWZmZXIgdm1fYnVmZmVyLAotCQkJCSBUcmFuc2Fj dGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLCB1aW50OCB2bWZsYWdzKQotewotCXhsX2hl YXBfdmlzaWJsZSB4bHJlYzsKLQlYTG9nUmVjUHRyCXJlY3B0cjsKLQl1aW50OAkJZmxhZ3M7Ci0K LQlBc3NlcnQoQnVmZmVySXNWYWxpZChoZWFwX2J1ZmZlcikpOwotCUFzc2VydChCdWZmZXJJc1Zh bGlkKHZtX2J1ZmZlcikpOwotCi0JeGxyZWMuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBzbmFw c2hvdENvbmZsaWN0SG9yaXpvbjsKLQl4bHJlYy5mbGFncyA9IHZtZmxhZ3M7Ci0JaWYgKFJlbGF0 aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcocmVsKSkKLQkJeGxyZWMuZmxhZ3MgfD0g VklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMOwotCVhMb2dCZWdpbkluc2VydCgpOwotCVhM b2dSZWdpc3RlckRhdGEoJnhscmVjLCBTaXplT2ZIZWFwVmlzaWJsZSk7Ci0KLQlYTG9nUmVnaXN0 ZXJCdWZmZXIoMCwgdm1fYnVmZmVyLCAwKTsKLQotCWZsYWdzID0gUkVHQlVGX1NUQU5EQVJEOwot CWlmICghWExvZ0hpbnRCaXRJc05lZWRlZCgpKQotCQlmbGFncyB8PSBSRUdCVUZfTk9fSU1BR0U7 Ci0JWExvZ1JlZ2lzdGVyQnVmZmVyKDEsIGhlYXBfYnVmZmVyLCBmbGFncyk7Ci0KLQlyZWNwdHIg PSBYTG9nSW5zZXJ0KFJNX0hFQVAyX0lELCBYTE9HX0hFQVAyX1ZJU0lCTEUpOwotCi0JcmV0dXJu IHJlY3B0cjsKLX0KIAogLyoKICAqIFBlcmZvcm0gWExvZ0luc2VydCBmb3IgYSBoZWFwLXVwZGF0 ZSBvcGVyYXRpb24uICBDYWxsZXIgbXVzdCBhbHJlYWR5CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX3hsb2cuYwppbmRleCAwNWRjZTgyOWVhZS4uNTM5ZDM4MTk0ZjUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtODMsMTAgKzgzLDYgQEAgaGVhcF94bG9nX3BydW5l X2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJbWVtY3B5KCZ2bWZsYWdzLCBtYWlu ZGF0YXB0ciwgc2l6ZW9mKHVpbnQ4KSk7CiAJCW1haW5kYXRhcHRyICs9IHNpemVvZih1aW50OCk7 CiAKLQkJLyoKLQkJICogV2UgZG9uJ3Qgc2V0IFZJU0lCSUxJVFlNQVBfWExPR19DQVRBTE9HX1JF TCBpbiB0aGUgY29tYmluZWQgcmVjb3JkCi0JCSAqIGJlY2F1c2Ugd2UgYWxyZWFkeSBoYXZlIFhM SFBfSVNfQ0FUQUxPR19SRUwuCi0JCSAqLwogCQlBc3NlcnQoKHZtZmxhZ3MgJiBWSVNJQklMSVRZ TUFQX1ZBTElEX0JJVFMpID09IHZtZmxhZ3MpOwogCQkvKiBNdXN0IG5ldmVyIHNldCBhbGxfZnJv emVuIGJpdCB3aXRob3V0IGFsc28gc2V0dGluZyBhbGxfdmlzaWJsZSBiaXQgKi8KIAkJQXNzZXJ0 KHZtZmxhZ3MgIT0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKQEAgLTI2OCw3ICsyNjQsNyBA QCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlSZWxh dGlvbglyZWxuID0gQ3JlYXRlRmFrZVJlbGNhY2hlRW50cnkocmxvY2F0b3IpOwogCiAJCXZpc2li aWxpdHltYXBfcGluKHJlbG4sIGJsa25vLCAmdm1idWZmZXIpOwotCQlvbGRfdm1iaXRzID0gdmlz aWJpbGl0eW1hcF9zZXRfdm1ieXRlKHJlbG4sIGJsa25vLCB2bWJ1ZmZlciwgdm1mbGFncyk7CisJ CW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldChyZWxuLCBibGtubywgdm1idWZmZXIsIHZt ZmxhZ3MpOwogCQkvKiBPbmx5IHNldCBWTSBwYWdlIExTTiBpZiB3ZSBtb2RpZmllZCB0aGUgcGFn ZSAqLwogCQlpZiAob2xkX3ZtYml0cyAhPSB2bWZsYWdzKQogCQkJUGFnZVNldExTTihCdWZmZXJH ZXRQYWdlKHZtYnVmZmVyKSwgbHNuKTsKQEAgLTI3OSwxNDMgKzI3NSw2IEBAIGhlYXBfeGxvZ19w cnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCVVubG9ja1JlbGVhc2VCdWZm ZXIodm1idWZmZXIpOwogfQogCi0vKgotICogUmVwbGF5IFhMT0dfSEVBUDJfVklTSUJMRSByZWNv cmRzLgotICoKLSAqIFRoZSBjcml0aWNhbCBpbnRlZ3JpdHkgcmVxdWlyZW1lbnQgaGVyZSBpcyB0 aGF0IHdlIG11c3QgbmV2ZXIgZW5kIHVwIHdpdGgKLSAqIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSB2 aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0LCBhbmQgdGhlIHBhZ2UtbGV2ZWwKLSAqIFBEX0FMTF9W SVNJQkxFIGJpdCBpcyBjbGVhci4gIElmIHRoYXQgd2VyZSB0byBvY2N1ciwgdGhlbiBhIHN1YnNl cXVlbnQKLSAqIHBhZ2UgbW9kaWZpY2F0aW9uIHdvdWxkIGZhaWwgdG8gY2xlYXIgdGhlIHZpc2li aWxpdHkgbWFwIGJpdC4KLSAqLwotc3RhdGljIHZvaWQKLWhlYXBfeGxvZ192aXNpYmxlKFhMb2dS ZWFkZXJTdGF0ZSAqcmVjb3JkKQotewotCVhMb2dSZWNQdHIJbHNuID0gcmVjb3JkLT5FbmRSZWNQ dHI7Ci0JeGxfaGVhcF92aXNpYmxlICp4bHJlYyA9ICh4bF9oZWFwX3Zpc2libGUgKikgWExvZ1Jl Y0dldERhdGEocmVjb3JkKTsKLQlCdWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKLQlC dWZmZXIJCWJ1ZmZlcjsKLQlQYWdlCQlwYWdlOwotCVJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yOwot CUJsb2NrTnVtYmVyIGJsa25vOwotCVhMb2dSZWRvQWN0aW9uIGFjdGlvbjsKLQotCUFzc2VydCgo eGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9YTE9HX1ZBTElEX0JJVFMpID09IHhscmVjLT5m bGFncyk7Ci0KLQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAxLCAmcmxvY2F0b3IsIE5VTEws ICZibGtubyk7Ci0KLQkvKgotCSAqIElmIHRoZXJlIGFyZSBhbnkgSG90IFN0YW5kYnkgdHJhbnNh Y3Rpb25zIHJ1bm5pbmcgdGhhdCBoYXZlIGFuIHhtaW4KLQkgKiBob3Jpem9uIG9sZCBlbm91Z2gg dGhhdCB0aGlzIHBhZ2UgaXNuJ3QgYWxsLXZpc2libGUgZm9yIHRoZW0sIHRoZXkKLQkgKiBtaWdo dCBpbmNvcnJlY3RseSBkZWNpZGUgdGhhdCBhbiBpbmRleC1vbmx5IHNjYW4gY2FuIHNraXAgYSBo ZWFwIGZldGNoLgotCSAqCi0JICogTkI6IEl0IG1pZ2h0IGJlIGJldHRlciB0byB0aHJvdyBzb21l IGtpbmQgb2YgInNvZnQiIGNvbmZsaWN0IGhlcmUgdGhhdAotCSAqIGZvcmNlcyBhbnkgaW5kZXgt b25seSBzY2FuIHRoYXQgaXMgaW4gZmxpZ2h0IHRvIHBlcmZvcm0gaGVhcCBmZXRjaGVzLAotCSAq IHJhdGhlciB0aGFuIGtpbGxpbmcgdGhlIHRyYW5zYWN0aW9uIG91dHJpZ2h0LgotCSAqLwotCWlm IChJbkhvdFN0YW5kYnkpCi0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhs cmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKLQkJCQkJCQkJCQkJeGxyZWMtPmZsYWdzICYg VklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMLAotCQkJCQkJCQkJCQlybG9jYXRvcik7Ci0K LQkvKgotCSAqIFJlYWQgdGhlIGhlYXAgcGFnZSwgaWYgaXQgc3RpbGwgZXhpc3RzLiBJZiB0aGUg aGVhcCBmaWxlIGhhcyBkcm9wcGVkIG9yCi0JICogdHJ1bmNhdGVkIGxhdGVyIGluIHJlY292ZXJ5 LCB3ZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSB0aGUgcGFnZSwgYnV0IHdlJ2QKLQkgKiBiZXR0ZXIg c3RpbGwgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4KLQkgKi8KLQlhY3Rpb24gPSBYTG9nUmVh ZEJ1ZmZlckZvclJlZG8ocmVjb3JkLCAxLCAmYnVmZmVyKTsKLQlpZiAoYWN0aW9uID09IEJMS19O RUVEU19SRURPKQotCXsKLQkJLyoKLQkJICogV2UgZG9uJ3QgYnVtcCB0aGUgTFNOIG9mIHRoZSBo ZWFwIHBhZ2Ugd2hlbiBzZXR0aW5nIHRoZSB2aXNpYmlsaXR5Ci0JCSAqIG1hcCBiaXQgKHVubGVz cyBjaGVja3N1bXMgb3Igd2FsX2hpbnRfYml0cyBpcyBlbmFibGVkLCBpbiB3aGljaAotCQkgKiBj YXNlIHdlIG11c3QpLiBUaGlzIGV4cG9zZXMgdXMgdG8gdG9ybiBwYWdlIGhhemFyZHMsIGJ1dCBz aW5jZQotCQkgKiB3ZSdyZSBub3QgaW5zcGVjdGluZyB0aGUgZXhpc3RpbmcgcGFnZSBjb250ZW50 cyBpbiBhbnkgd2F5LCB3ZQotCQkgKiBkb24ndCBjYXJlLgotCQkgKi8KLQkJcGFnZSA9IEJ1ZmZl ckdldFBhZ2UoYnVmZmVyKTsKLQotCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQotCQlpZiAo WExvZ0hpbnRCaXRJc05lZWRlZCgpKQotCQkJUGFnZVNldExTTihwYWdlLCBsc24pOwotCi0JCU1h cmtCdWZmZXJEaXJ0eShidWZmZXIpOwotCX0KLQllbHNlIGlmIChhY3Rpb24gPT0gQkxLX1JFU1RP UkVEKQotCXsKLQkJLyoKLQkJICogSWYgaGVhcCBibG9jayB3YXMgYmFja2VkIHVwLCB3ZSBhbHJl YWR5IHJlc3RvcmVkIGl0IGFuZCB0aGVyZSdzCi0JCSAqIG5vdGhpbmcgbW9yZSB0byBkby4gKFRo aXMgY2FuIG9ubHkgaGFwcGVuIHdpdGggY2hlY2tzdW1zIG9yCi0JCSAqIHdhbF9sb2dfaGludHMg ZW5hYmxlZC4pCi0JCSAqLwotCX0KLQotCWlmIChCdWZmZXJJc1ZhbGlkKGJ1ZmZlcikpCi0Jewot CQlTaXplCQlzcGFjZSA9IFBhZ2VHZXRGcmVlU3BhY2UoQnVmZmVyR2V0UGFnZShidWZmZXIpKTsK LQotCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7Ci0KLQkJLyoKLQkJICogU2luY2UgRlNN IGlzIG5vdCBXQUwtbG9nZ2VkIGFuZCBvbmx5IHVwZGF0ZWQgaGV1cmlzdGljYWxseSwgaXQKLQkJ ICogZWFzaWx5IGJlY29tZXMgc3RhbGUgaW4gc3RhbmRieXMuICBJZiB0aGUgc3RhbmRieSBpcyBs YXRlciBwcm9tb3RlZAotCQkgKiBhbmQgcnVucyBWQUNVVU0sIGl0IHdpbGwgc2tpcCB1cGRhdGlu ZyBpbmRpdmlkdWFsIGZyZWUgc3BhY2UKLQkJICogZmlndXJlcyBmb3IgcGFnZXMgdGhhdCBiZWNh bWUgYWxsLXZpc2libGUgKG9yIGFsbC1mcm96ZW4sIGRlcGVuZGluZwotCQkgKiBvbiB0aGUgdmFj dXVtIG1vZGUsKSB3aGljaCBpcyB0cm91Ymxlc29tZSB3aGVuIEZyZWVTcGFjZU1hcFZhY3V1bQot CQkgKiBwcm9wYWdhdGVzIHRvbyBvcHRpbWlzdGljIGZyZWUgc3BhY2UgdmFsdWVzIHRvIHVwcGVy IEZTTSBsYXllcnM7Ci0JCSAqIGxhdGVyIGluc2VydGVycyB0cnkgdG8gdXNlIHN1Y2ggcGFnZXMg b25seSB0byBmaW5kIG91dCB0aGF0IHRoZXkKLQkJICogYXJlIHVudXNhYmxlLiAgVGhpcyBjYW4g Y2F1c2UgbG9uZyBzdGFsbHMgd2hlbiB0aGVyZSBhcmUgbWFueSBzdWNoCi0JCSAqIHBhZ2VzLgot CQkgKgotCQkgKiBGb3Jlc3RhbGwgdGhvc2UgcHJvYmxlbXMgYnkgdXBkYXRpbmcgRlNNJ3MgaWRl YSBhYm91dCBhIHBhZ2UgdGhhdAotCQkgKiBpcyBiZWNvbWluZyBhbGwtdmlzaWJsZSBvciBhbGwt ZnJvemVuLgotCQkgKgotCQkgKiBEbyB0aGlzIHJlZ2FyZGxlc3Mgb2YgYSBmdWxsLXBhZ2UgaW1h Z2UgYmVpbmcgYXBwbGllZCwgc2luY2UgdGhlCi0JCSAqIEZTTSBkYXRhIGlzIG5vdCBpbiB0aGUg cGFnZSBhbnl3YXkuCi0JCSAqLwotCQlpZiAoeGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9W QUxJRF9CSVRTKQotCQkJWExvZ1JlY29yZFBhZ2VXaXRoRnJlZVNwYWNlKHJsb2NhdG9yLCBibGtu bywgc3BhY2UpOwotCX0KLQotCS8qCi0JICogRXZlbiBpZiB3ZSBza2lwcGVkIHRoZSBoZWFwIHBh Z2UgdXBkYXRlIGR1ZSB0byB0aGUgTFNOIGludGVybG9jaywgaXQncwotCSAqIHN0aWxsIHNhZmUg dG8gdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4gIEFueSBXQUwgcmVjb3JkIHRoYXQgY2xlYXJz Ci0JICogdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBkb2VzIHNvIGJlZm9yZSBjaGVja2luZyB0aGUg cGFnZSBMU04sIHNvIGFueQotCSAqIGJpdHMgdGhhdCBuZWVkIHRvIGJlIGNsZWFyZWQgd2lsbCBz dGlsbCBiZSBjbGVhcmVkLgotCSAqLwotCWlmIChYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRl ZChyZWNvcmQsIDAsIFJCTV9aRVJPX09OX0VSUk9SLCBmYWxzZSwKLQkJCQkJCQkJCSAgJnZtYnVm ZmVyKSA9PSBCTEtfTkVFRFNfUkVETykKLQl7Ci0JCVBhZ2UJCXZtcGFnZSA9IEJ1ZmZlckdldFBh Z2Uodm1idWZmZXIpOwotCQlSZWxhdGlvbglyZWxuOwotCQl1aW50OAkJdm1iaXRzOwotCi0JCS8q IGluaXRpYWxpemUgdGhlIHBhZ2UgaWYgaXQgd2FzIHJlYWQgYXMgemVyb3MgKi8KLQkJaWYgKFBh Z2VJc05ldyh2bXBhZ2UpKQotCQkJUGFnZUluaXQodm1wYWdlLCBCTENLU1osIDApOwotCi0JCS8q IHJlbW92ZSBWSVNJQklMSVRZTUFQX1hMT0dfKiAqLwotCQl2bWJpdHMgPSB4bHJlYy0+ZmxhZ3Mg JiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7Ci0KLQkJLyoKLQkJICogWExvZ1JlYWRCdWZmZXJG b3JSZWRvRXh0ZW5kZWQgbG9ja2VkIHRoZSBidWZmZXIuIEJ1dAotCQkgKiB2aXNpYmlsaXR5bWFw X3NldCB3aWxsIGhhbmRsZSBsb2NraW5nIGl0c2VsZi4KLQkJICovCi0JCUxvY2tCdWZmZXIodm1i dWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0KLQkJcmVsbiA9IENyZWF0ZUZha2VSZWxjYWNo ZUVudHJ5KHJsb2NhdG9yKTsKLQotCQlBc3NlcnQodmlzaWJpbGl0eW1hcF9waW5fb2soYmxrbm8s IHZtYnVmZmVyKSk7Ci0JCXZpc2liaWxpdHltYXBfc2V0KHJlbG4sIGJsa25vLCBJbnZhbGlkQnVm ZmVyLCBsc24sIHZtYnVmZmVyLAotCQkJCQkJICB4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6 b24sIHZtYml0cyk7Ci0KLQkJUmVsZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7Ci0JCUZyZWVGYWtlUmVs Y2FjaGVFbnRyeShyZWxuKTsKLQl9Ci0JZWxzZSBpZiAoQnVmZmVySXNWYWxpZCh2bWJ1ZmZlcikp Ci0JCVVubG9ja1JlbGVhc2VCdWZmZXIodm1idWZmZXIpOwotfQotCiAvKgogICogR2l2ZW4gYW4g ImluZm9iaXRzIiBmaWVsZCBmcm9tIGFuIFhMb2cgcmVjb3JkLCBzZXQgdGhlIGNvcnJlY3QgYml0 cyBpbiB0aGUKICAqIGdpdmVuIGluZm9tYXNrIGFuZCBpbmZvbWFzazIgZm9yIHRoZSB0dXBsZSB0 b3VjaGVkIGJ5IHRoZSByZWNvcmQuCkBAIC03OTIsMTYgKzY1MSwxNiBAQCBoZWFwX3hsb2dfbXVs dGlfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlSZWxhdGlvbglyZWxuID0gQ3Jl YXRlRmFrZVJlbGNhY2hlRW50cnkocmxvY2F0b3IpOwogCiAJCUFzc2VydCh2aXNpYmlsaXR5bWFw X3Bpbl9vayhibGtubywgdm1idWZmZXIpKTsKLQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1ieXRlKHJl bG4sIGJsa25vLAotCQkJCQkJCQkgdm1idWZmZXIsCi0JCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FM TF9WSVNJQkxFIHwKLQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7CiAKIAkJLyoK IAkJICogSXQgaXMgbm90IHBvc3NpYmxlIHRoYXQgdGhlIFZNIHdhcyBhbHJlYWR5IHNldCBmb3Ig dGhpcyBoZWFwIHBhZ2UsCiAJCSAqIHNvIHRoZSB2bWJ1ZmZlciBtdXN0IGhhdmUgYmVlbiBtb2Rp ZmllZCBhbmQgbWFya2VkIGRpcnR5LgogCQkgKi8KIAkJQXNzZXJ0KEJ1ZmZlcklzRGlydHkodm1i dWZmZXIpKTsKKwkJdmlzaWJpbGl0eW1hcF9zZXQocmVsbiwgYmxrbm8sCisJCQkJCQkgIHZtYnVm ZmVyLAorCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCSAgVklTSUJJ TElUWU1BUF9BTExfRlJPWkVOKTsKIAkJUGFnZVNldExTTihCdWZmZXJHZXRQYWdlKHZtYnVmZmVy KSwgbHNuKTsKIAkJRnJlZUZha2VSZWxjYWNoZUVudHJ5KHJlbG4pOwogCX0KQEAgLTEzODEsOSAr MTI0MCw2IEBAIGhlYXAyX3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCWNhc2UgWExP R19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUDoKIAkJCWhlYXBfeGxvZ19wcnVuZV9mcmVlemUo cmVjb3JkKTsKIAkJCWJyZWFrOwotCQljYXNlIFhMT0dfSEVBUDJfVklTSUJMRToKLQkJCWhlYXBf eGxvZ192aXNpYmxlKHJlY29yZCk7Ci0JCQlicmVhazsKIAkJY2FzZSBYTE9HX0hFQVAyX01VTFRJ X0lOU0VSVDoKIAkJCWhlYXBfeGxvZ19tdWx0aV9pbnNlcnQocmVjb3JkKTsKIAkJCWJyZWFrOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA4MjEyN2U4NzI4Yi4uZmZjMTIzMTRi NDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC05NzksOCArOTc5LDggQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZm ZXIsCiAJCWlmIChkb19zZXRfdm0pCiAJCXsKIAkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZF Ul9MT0NLX0VYQ0xVU0lWRSk7Ci0JCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXRfdm1i eXRlKHJlbGF0aW9uLCBibG9ja25vLAotCQkJCQkJCQkJCQkJICB2bWJ1ZmZlciwgdm1mbGFncyk7 CisJCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXQocmVsYXRpb24sIGJsb2Nrbm8sCisJ CQkJCQkJCQkJICAgdm1idWZmZXIsIHZtZmxhZ3MpOwogCiAJCQlpZiAob2xkX3ZtYml0cyA9PSB2 bWZsYWdzKQogCQkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDkxZTIw OTkwMWI4Li42YTBmYTM3MWEwNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpA QCAtMTg4Nyw4ICsxODg3LDggQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2 YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkJTWFya0J1ZmZlckRpcnR5 KGJ1Zik7CiAKIAkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7 Ci0JCQl2aXNpYmlsaXR5bWFwX3NldF92bWJ5dGUodmFjcmVsLT5yZWwsIGJsa25vLAotCQkJCQkJ CQkJIHZtYnVmZmVyLCBuZXdfdm1iaXRzKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+ cmVsLCBibGtubywKKwkJCQkJCQkgIHZtYnVmZmVyLCBuZXdfdm1iaXRzKTsKIAogCQkJaWYgKFJl bGF0aW9uTmVlZHNXQUwodmFjcmVsLT5yZWwpKQogCQkJewpAQCAtMjc1NCw5ICsyNzU0LDkgQEAg bGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxr bm8sIEJ1ZmZlciBidWZmZXIsCiAJCXNldF9wZF9hbGxfdmlzID0gdHJ1ZTsKIAkJTG9ja0J1ZmZl cih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKIAkJUGFnZVNldEFsbFZpc2libGUo cGFnZSk7Ci0JCXZpc2liaWxpdHltYXBfc2V0X3ZtYnl0ZSh2YWNyZWwtPnJlbCwKLQkJCQkJCQkJ IGJsa25vLAotCQkJCQkJCQkgdm1idWZmZXIsIHZtZmxhZ3MpOworCQl2aXNpYmlsaXR5bWFwX3Nl dCh2YWNyZWwtPnJlbCwKKwkJCQkJCSAgYmxrbm8sCisJCQkJCQkgIHZtYnVmZmVyLCB2bWZsYWdz KTsKIAkJY29uZmxpY3RfeGlkID0gdmlzaWJpbGl0eV9jdXRvZmZfeGlkOwogCX0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCmluZGV4IDU2OGJjODNkYjljLi44MzQyZWMx ZmYyMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwpAQCAtMTQsOCAr MTQsNyBAQAogICoJCXZpc2liaWxpdHltYXBfY2xlYXIgIC0gY2xlYXIgYml0cyBmb3Igb25lIHBh Z2UgaW4gdGhlIHZpc2liaWxpdHkgbWFwCiAgKgkJdmlzaWJpbGl0eW1hcF9waW4JIC0gcGluIGEg bWFwIHBhZ2UgZm9yIHNldHRpbmcgYSBiaXQKICAqCQl2aXNpYmlsaXR5bWFwX3Bpbl9vayAtIGNo ZWNrIHdoZXRoZXIgY29ycmVjdCBtYXAgcGFnZSBpcyBhbHJlYWR5IHBpbm5lZAotICoJCXZpc2li aWxpdHltYXBfc2V0CSAtIHNldCBhIGJpdCBpbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UgYW5k IGxvZwotICogICAgICB2aXNpYmlsaXR5bWFwX3NldF92bWJ5dGUgLSBzZXQgYSBiaXQgaW4gYSBw aW5uZWQgcGFnZQorICoJCXZpc2liaWxpdHltYXBfc2V0CSAtIHNldCBhIGJpdCBpbiBhIHByZXZp b3VzbHkgcGlubmVkIHBhZ2UKICAqCQl2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMgLSBnZXQgc3Rh dHVzIG9mIGJpdHMKICAqCQl2aXNpYmlsaXR5bWFwX2NvdW50ICAtIGNvdW50IG51bWJlciBvZiBi aXRzIHNldCBpbiB2aXNpYmlsaXR5IG1hcAogICoJCXZpc2liaWxpdHltYXBfcHJlcGFyZV90cnVu Y2F0ZSAtCkBAIC0yMjAsMTA4ICsyMTksNiBAQCB2aXNpYmlsaXR5bWFwX3Bpbl9vayhCbG9ja051 bWJlciBoZWFwQmxrLCBCdWZmZXIgdm1idWYpCiAJcmV0dXJuIEJ1ZmZlcklzVmFsaWQodm1idWYp ICYmIEJ1ZmZlckdldEJsb2NrTnVtYmVyKHZtYnVmKSA9PSBtYXBCbG9jazsKIH0KIAotLyoKLSAq CXZpc2liaWxpdHltYXBfc2V0IC0gc2V0IGJpdChzKSBvbiBhIHByZXZpb3VzbHkgcGlubmVkIHBh Z2UKLSAqCi0gKiByZWNwdHIgaXMgdGhlIExTTiBvZiB0aGUgWExPRyByZWNvcmQgd2UncmUgcmVw bGF5aW5nLCBpZiB3ZSdyZSBpbiByZWNvdmVyeSwKLSAqIG9yIEludmFsaWRYTG9nUmVjUHRyIGlu IG5vcm1hbCBydW5uaW5nLiAgVGhlIFZNIHBhZ2UgTFNOIGlzIGFkdmFuY2VkIHRvIHRoZQotICog b25lIHByb3ZpZGVkOyBpbiBub3JtYWwgcnVubmluZywgd2UgZ2VuZXJhdGUgYSBuZXcgWExPRyBy ZWNvcmQgYW5kIHNldCB0aGUKLSAqIHBhZ2UgTFNOIHRvIHRoYXQgdmFsdWUgKHRob3VnaCB0aGUg aGVhcCBwYWdlJ3MgTFNOIG1heSAqbm90KiBiZSB1cGRhdGVkOwotICogc2VlIGJlbG93KS4gIGN1 dG9mZl94aWQgaXMgdGhlIGxhcmdlc3QgeG1pbiBvbiB0aGUgcGFnZSBiZWluZyBtYXJrZWQKLSAq IGFsbC12aXNpYmxlOyBpdCBpcyBuZWVkZWQgZm9yIEhvdCBTdGFuZGJ5LCBhbmQgY2FuIGJlIElu dmFsaWRUcmFuc2FjdGlvbklkCi0gKiBpZiB0aGUgcGFnZSBjb250YWlucyBubyB0dXBsZXMuICBJ dCBjYW4gYWxzbyBiZSBzZXQgdG8gSW52YWxpZFRyYW5zYWN0aW9uSWQKLSAqIHdoZW4gYSBwYWdl IHRoYXQgaXMgYWxyZWFkeSBhbGwtdmlzaWJsZSBpcyBiZWluZyBtYXJrZWQgYWxsLWZyb3plbi4K LSAqCi0gKiBDYWxsZXIgaXMgZXhwZWN0ZWQgdG8gc2V0IHRoZSBoZWFwIHBhZ2UncyBQRF9BTExf VklTSUJMRSBiaXQgYmVmb3JlIGNhbGxpbmcKLSAqIHRoaXMgZnVuY3Rpb24uIEV4Y2VwdCBpbiBy ZWNvdmVyeSwgY2FsbGVyIHNob3VsZCBhbHNvIHBhc3MgdGhlIGhlYXAKLSAqIGJ1ZmZlci4gV2hl biBjaGVja3N1bXMgYXJlIGVuYWJsZWQgYW5kIHdlJ3JlIG5vdCBpbiByZWNvdmVyeSwgd2UgbXVz dCBhZGQKLSAqIHRoZSBoZWFwIGJ1ZmZlciB0byB0aGUgV0FMIGNoYWluIHRvIHByb3RlY3QgaXQg ZnJvbSBiZWluZyB0b3JuLgotICoKLSAqIFlvdSBtdXN0IHBhc3MgYSBidWZmZXIgY29udGFpbmlu ZyB0aGUgY29ycmVjdCBtYXAgcGFnZSB0byB0aGlzIGZ1bmN0aW9uLgotICogQ2FsbCB2aXNpYmls aXR5bWFwX3BpbiBmaXJzdCB0byBwaW4gdGhlIHJpZ2h0IG9uZS4gVGhpcyBmdW5jdGlvbiBkb2Vz bid0IGRvCi0gKiBhbnkgSS9PLgotICoKLSAqIFJldHVybnMgdGhlIHN0YXRlIG9mIHRoZSBwYWdl J3MgVk0gYml0cyBiZWZvcmUgc2V0dGluZyBmbGFncy4KLSAqLwotdWludDgKLXZpc2liaWxpdHlt YXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYs Ci0JCQkJICBYTG9nUmVjUHRyIHJlY3B0ciwgQnVmZmVyIHZtQnVmLCBUcmFuc2FjdGlvbklkIGN1 dG9mZl94aWQsCi0JCQkJICB1aW50OCBmbGFncykKLXsKLQlCbG9ja051bWJlciBtYXBCbG9jayA9 IEhFQVBCTEtfVE9fTUFQQkxPQ0soaGVhcEJsayk7Ci0JdWludDMyCQltYXBCeXRlID0gSEVBUEJM S19UT19NQVBCWVRFKGhlYXBCbGspOwotCXVpbnQ4CQltYXBPZmZzZXQgPSBIRUFQQkxLX1RPX09G RlNFVChoZWFwQmxrKTsKLQlQYWdlCQlwYWdlOwotCXVpbnQ4CSAgICptYXA7Ci0JdWludDgJCXN0 YXR1czsKLQotI2lmZGVmIFRSQUNFX1ZJU0lCSUxJVFlNQVAKLQllbG9nKERFQlVHMSwgInZtX3Nl dCBmbGFncyAweCUwMlggZm9yICVzICVkIiwKLQkJIGZsYWdzLCBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShyZWwpLCBoZWFwQmxrKTsKLSNlbmRpZgotCi0JQXNzZXJ0KEluUmVjb3ZlcnkgfHwgWExv Z1JlY1B0cklzSW52YWxpZChyZWNwdHIpKTsKLQlBc3NlcnQoSW5SZWNvdmVyeSB8fCBQYWdlSXNB bGxWaXNpYmxlKChQYWdlKSBCdWZmZXJHZXRQYWdlKGhlYXBCdWYpKSk7Ci0JQXNzZXJ0KChmbGFn cyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgPT0gZmxhZ3MpOwotCi0JLyogTXVzdCBuZXZl ciBzZXQgYWxsX2Zyb3plbiBiaXQgd2l0aG91dCBhbHNvIHNldHRpbmcgYWxsX3Zpc2libGUgYml0 ICovCi0JQXNzZXJ0KGZsYWdzICE9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7Ci0KLQkvKiBD aGVjayB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IGhlYXAgcGFnZSBwaW5uZWQsIGlmIHByZXNlbnQg Ki8KLQlpZiAoQnVmZmVySXNWYWxpZChoZWFwQnVmKSAmJiBCdWZmZXJHZXRCbG9ja051bWJlciho ZWFwQnVmKSAhPSBoZWFwQmxrKQotCQllbG9nKEVSUk9SLCAid3JvbmcgaGVhcCBidWZmZXIgcGFz c2VkIHRvIHZpc2liaWxpdHltYXBfc2V0Iik7Ci0KLQlBc3NlcnQoIUJ1ZmZlcklzVmFsaWQoaGVh cEJ1ZikgfHwgQnVmZmVySXNFeGNsdXNpdmVMb2NrZWQoaGVhcEJ1ZikpOwotCi0JLyogQ2hlY2sg dGhhdCB3ZSBoYXZlIHRoZSByaWdodCBWTSBwYWdlIHBpbm5lZCAqLwotCWlmICghQnVmZmVySXNW YWxpZCh2bUJ1ZikgfHwgQnVmZmVyR2V0QmxvY2tOdW1iZXIodm1CdWYpICE9IG1hcEJsb2NrKQot CQllbG9nKEVSUk9SLCAid3JvbmcgVk0gYnVmZmVyIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3Nl dCIpOwotCi0JcGFnZSA9IEJ1ZmZlckdldFBhZ2Uodm1CdWYpOwotCW1hcCA9ICh1aW50OCAqKSBQ YWdlR2V0Q29udGVudHMocGFnZSk7Ci0JTG9ja0J1ZmZlcih2bUJ1ZiwgQlVGRkVSX0xPQ0tfRVhD TFVTSVZFKTsKLQotCXN0YXR1cyA9IChtYXBbbWFwQnl0ZV0gPj4gbWFwT2Zmc2V0KSAmIFZJU0lC SUxJVFlNQVBfVkFMSURfQklUUzsKLQlpZiAoZmxhZ3MgIT0gc3RhdHVzKQotCXsKLQkJU1RBUlRf Q1JJVF9TRUNUSU9OKCk7Ci0KLQkJbWFwW21hcEJ5dGVdIHw9IChmbGFncyA8PCBtYXBPZmZzZXQp OwotCQlNYXJrQnVmZmVyRGlydHkodm1CdWYpOwotCi0JCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJl bCkpCi0JCXsKLQkJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHJlY3B0cikpCi0JCQl7Ci0JCQkJ QXNzZXJ0KCFJblJlY292ZXJ5KTsKLQkJCQlyZWNwdHIgPSBsb2dfaGVhcF92aXNpYmxlKHJlbCwg aGVhcEJ1Ziwgdm1CdWYsIGN1dG9mZl94aWQsIGZsYWdzKTsKLQotCQkJCS8qCi0JCQkJICogSWYg ZGF0YSBjaGVja3N1bXMgYXJlIGVuYWJsZWQgKG9yIHdhbF9sb2dfaGludHM9b24pLCB3ZQotCQkJ CSAqIG5lZWQgdG8gcHJvdGVjdCB0aGUgaGVhcCBwYWdlIGZyb20gYmVpbmcgdG9ybi4KLQkJCQkg KgotCQkJCSAqIElmIG5vdCwgdGhlbiB3ZSBtdXN0ICpub3QqIHVwZGF0ZSB0aGUgaGVhcCBwYWdl J3MgTFNOLiBJbgotCQkJCSAqIHRoaXMgY2FzZSwgdGhlIEZQSSBmb3IgdGhlIGhlYXAgcGFnZSB3 YXMgb21pdHRlZCBmcm9tIHRoZQotCQkJCSAqIFdBTCByZWNvcmQgaW5zZXJ0ZWQgYWJvdmUsIHNv IGl0IHdvdWxkIGJlIGluY29ycmVjdCB0bwotCQkJCSAqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3Mg TFNOLgotCQkJCSAqLwotCQkJCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkpCi0JCQkJewotCQkJ CQlQYWdlCQloZWFwUGFnZSA9IEJ1ZmZlckdldFBhZ2UoaGVhcEJ1Zik7Ci0KLQkJCQkJUGFnZVNl dExTTihoZWFwUGFnZSwgcmVjcHRyKTsKLQkJCQl9Ci0JCQl9Ci0JCQlQYWdlU2V0TFNOKHBhZ2Us IHJlY3B0cik7Ci0JCX0KLQotCQlFTkRfQ1JJVF9TRUNUSU9OKCk7Ci0JfQotCi0JTG9ja0J1ZmZl cih2bUJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKLQlyZXR1cm4gc3RhdHVzOwotfQotCiAvKgog ICogU2V0IGZsYWdzIGluIHRoZSBWTSBibG9jayBjb250YWluZWQgaW4gdGhlIHBhc3NlZCBpbiB2 bUJ1Zi4KICAqCkBAIC0zNDMsOCArMjQwLDggQEAgdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKICAqIGlzIHBpbm5lZCBh bmQgZXhjbHVzaXZlIGxvY2tlZC4KICAqLwogdWludDgKLXZpc2liaWxpdHltYXBfc2V0X3ZtYnl0 ZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssCi0JCQkJCQkgQnVmZmVyIHZtQnVm LCB1aW50OCBmbGFncykKK3Zpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1i ZXIgaGVhcEJsaywKKwkJCQkgIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MpCiB7CiAJQmxvY2tO dW1iZXIgbWFwQmxvY2sgPSBIRUFQQkxLX1RPX01BUEJMT0NLKGhlYXBCbGspOwogCXVpbnQzMgkJ bWFwQnl0ZSA9IEhFQVBCTEtfVE9fTUFQQllURShoZWFwQmxrKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Jt Z3JkZXNjL2hlYXBkZXNjLmMKaW5kZXggZDZjODZjY2FjMjAuLmY3ODgwYTRlZDgxIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwpAQCAtMzUxLDEzICszNTEsNiBAQCBoZWFw Ml9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJCX0KIAkJ fQogCX0KLQllbHNlIGlmIChpbmZvID09IFhMT0dfSEVBUDJfVklTSUJMRSkKLQl7Ci0JCXhsX2hl YXBfdmlzaWJsZSAqeGxyZWMgPSAoeGxfaGVhcF92aXNpYmxlICopIHJlYzsKLQotCQlhcHBlbmRT dHJpbmdJbmZvKGJ1ZiwgInNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOiAldSwgZmxhZ3M6IDB4JTAy WCIsCi0JCQkJCQkgeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLCB4bHJlYy0+ZmxhZ3Mp OwotCX0KIAllbHNlIGlmIChpbmZvID09IFhMT0dfSEVBUDJfTVVMVElfSU5TRVJUKQogCXsKIAkJ eGxfaGVhcF9tdWx0aV9pbnNlcnQgKnhscmVjID0gKHhsX2hlYXBfbXVsdGlfaW5zZXJ0ICopIHJl YzsKQEAgLTQ2Miw5ICs0NTUsNiBAQCBoZWFwMl9pZGVudGlmeSh1aW50OCBpbmZvKQogCQljYXNl IFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX0NMRUFOVVA6CiAJCQlpZCA9ICJQUlVORV9WQUNVVU1f Q0xFQU5VUCI7CiAJCQlicmVhazsKLQkJY2FzZSBYTE9HX0hFQVAyX1ZJU0lCTEU6Ci0JCQlpZCA9 ICJWSVNJQkxFIjsKLQkJCWJyZWFrOwogCQljYXNlIFhMT0dfSEVBUDJfTVVMVElfSU5TRVJUOgog CQkJaWQgPSAiTVVMVElfSU5TRVJUIjsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvZGVjb2RlLmMKaW5kZXggY2MwM2YwNzA2ZTkuLjJmZGQ0YWY5MGE4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTQ1NCw3ICs0NTQsNiBAQCBo ZWFwMl9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVy ICpidWYpCiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9PTl9BQ0NFU1M6CiAJCWNhc2UgWExPR19I RUFQMl9QUlVORV9WQUNVVU1fU0NBTjoKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9D TEVBTlVQOgotCQljYXNlIFhMT0dfSEVBUDJfVklTSUJMRToKIAkJY2FzZSBYTE9HX0hFQVAyX0xP Q0tfVVBEQVRFRDoKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRi eS5jCmluZGV4IDQyMjJiZGFiMDc4Li5jNjE5NjQzZTEyMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0 YW5kYnkuYwpAQCAtNDc1LDEyICs0NzUsMTIgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRo U25hcHNob3QoVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKIAkgKiBJZiB3 ZSBnZXQgcGFzc2VkIEludmFsaWRUcmFuc2FjdGlvbklkIHRoZW4gd2UgZG8gbm90aGluZyAobm8g Y29uZmxpY3QpLgogCSAqCiAJICogVGhpcyBjYW4gaGFwcGVuIHdoZW4gcmVwbGF5aW5nIGFscmVh ZHktYXBwbGllZCBXQUwgcmVjb3JkcyBhZnRlciBhCi0JICogc3RhbmRieSBjcmFzaCBvciByZXN0 YXJ0LCBvciB3aGVuIHJlcGxheWluZyBhbiBYTE9HX0hFQVAyX1ZJU0lCTEUKLQkgKiByZWNvcmQg dGhhdCBtYXJrcyBhcyBmcm96ZW4gYSBwYWdlIHdoaWNoIHdhcyBhbHJlYWR5IGFsbC12aXNpYmxl LiAgSXQncwotCSAqIGFsc28gcXVpdGUgY29tbW9uIHdpdGggcmVjb3JkcyBnZW5lcmF0ZWQgZHVy aW5nIGluZGV4IGRlbGV0aW9uCi0JICogKG9yaWdpbmFsIGV4ZWN1dGlvbiBvZiB0aGUgZGVsZXRp b24gY2FuIHJlYXNvbiB0aGF0IGEgcmVjb3ZlcnkgY29uZmxpY3QKLQkgKiB3aGljaCBpcyBzdWZm aWNpZW50IGZvciB0aGUgZGVsZXRpb24gb3BlcmF0aW9uIG11c3QgdGFrZSBwbGFjZSBiZWZvcmUK LQkgKiByZXBsYXkgb2YgdGhlIGRlbGV0aW9uIHJlY29yZCBpdHNlbGYpLgorCSAqIHN0YW5kYnkg Y3Jhc2ggb3IgcmVzdGFydCwgb3Igd2hlbiByZXBsYXlpbmcgYSByZWNvcmQgdGhhdCBtYXJrcyBh cworCSAqIGZyb3plbiBhIHBhZ2Ugd2hpY2ggd2FzIGFscmVhZHkgbWFya2VkIGFsbC12aXNpYmxl IGluIHRoZSB2aXNpYmlsaXR5CisJICogbWFwLiAgSXQncyBhbHNvIHF1aXRlIGNvbW1vbiB3aXRo IHJlY29yZHMgZ2VuZXJhdGVkIGR1cmluZyBpbmRleAorCSAqIGRlbGV0aW9uIChvcmlnaW5hbCBl eGVjdXRpb24gb2YgdGhlIGRlbGV0aW9uIGNhbiByZWFzb24gdGhhdCBhIHJlY292ZXJ5CisJICog Y29uZmxpY3Qgd2hpY2ggaXMgc3VmZmljaWVudCBmb3IgdGhlIGRlbGV0aW9uIG9wZXJhdGlvbiBt dXN0IHRha2UgcGxhY2UKKwkgKiBiZWZvcmUgcmVwbGF5IG9mIHRoZSBkZWxldGlvbiByZWNvcmQg aXRzZWxmKS4KIAkgKi8KIAlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uKSkKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbV94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAppbmRleCBkNmE0 NzlmNjk4NC4uMzQ5ODhkNTY0ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW1feGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCkBAIC02MCw3 ICs2MCw2IEBACiAjZGVmaW5lIFhMT0dfSEVBUDJfUFJVTkVfT05fQUNDRVNTCQkweDEwCiAjZGVm aW5lIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX1NDQU4JMHgyMAogI2RlZmluZSBYTE9HX0hFQVAy X1BSVU5FX1ZBQ1VVTV9DTEVBTlVQCTB4MzAKLSNkZWZpbmUgWExPR19IRUFQMl9WSVNJQkxFCQkw eDQwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTVVMVElfSU5TRVJUIDB4NTAKICNkZWZpbmUgWExPR19I RUFQMl9MT0NLX1VQREFURUQgMHg2MAogI2RlZmluZSBYTE9HX0hFQVAyX05FV19DSUQJCTB4NzAK QEAgLTQ0MCwyMCArNDM5LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9pbnBsYWNlCiAKICNk ZWZpbmUgTWluU2l6ZU9mSGVhcElucGxhY2UJKG9mZnNldG9mKHhsX2hlYXBfaW5wbGFjZSwgbm1z Z3MpICsgc2l6ZW9mKGludCkpCiAKLS8qCi0gKiBUaGlzIGlzIHdoYXQgd2UgbmVlZCB0byBrbm93 IGFib3V0IHNldHRpbmcgYSB2aXNpYmlsaXR5IG1hcCBiaXQKLSAqCi0gKiBCYWNrdXAgYmxrIDA6 IHZpc2liaWxpdHkgbWFwIGJ1ZmZlcgotICogQmFja3VwIGJsayAxOiBoZWFwIGJ1ZmZlcgotICov Ci10eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3Zpc2libGUKLXsKLQlUcmFuc2FjdGlvbklkIHNuYXBz aG90Q29uZmxpY3RIb3Jpem9uOwotCXVpbnQ4CQlmbGFnczsKLX0geGxfaGVhcF92aXNpYmxlOwot Ci0jZGVmaW5lIFNpemVPZkhlYXBWaXNpYmxlIChvZmZzZXRvZih4bF9oZWFwX3Zpc2libGUsIGZs YWdzKSArIHNpemVvZih1aW50OCkpCi0KIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfbmV3X2NpZAog ewogCS8qCkBAIC00OTcsMTEgKzQ4Miw2IEBAIGV4dGVybiB2b2lkIGhlYXAyX2Rlc2MoU3RyaW5n SW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKIGV4dGVybiBjb25zdCBjaGFyICpo ZWFwMl9pZGVudGlmeSh1aW50OCBpbmZvKTsKIGV4dGVybiB2b2lkIGhlYXBfeGxvZ19sb2dpY2Fs X3Jld3JpdGUoWExvZ1JlYWRlclN0YXRlICpyKTsKIAotZXh0ZXJuIFhMb2dSZWNQdHIgbG9nX2hl YXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwKLQkJCQkJCQkJICAg QnVmZmVyIHZtX2J1ZmZlciwKLQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZs aWN0SG9yaXpvbiwKLQkJCQkJCQkJICAgdWludDggdm1mbGFncyk7Ci0KIC8qIGluIGhlYXBkZXNj LmMsIHNvIGl0IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBmcm9udGVuZC9iYWNrZW5kIGNvZGUgKi8K IGV4dGVybiB2b2lkIGhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGNoYXIg KmN1cnNvciwgdWludDggZmxhZ3MsCiAJCQkJCQkJCQkJCQkgICBpbnQgKm5wbGFucywgeGxocF9m cmVlemVfcGxhbiAqKnBsYW5zLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2li aWxpdHltYXAuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKaW5kZXggOTc3 NTY2ZjZiOTguLmM1YjFlMWY3YWRiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvdmlz aWJpbGl0eW1hcC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKQEAg LTE1LDcgKzE1LDYgQEAKICNkZWZpbmUgVklTSUJJTElUWU1BUF9ICiAKICNpbmNsdWRlICJhY2Nl c3MvdmlzaWJpbGl0eW1hcGRlZnMuaCIKLSNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKICNp bmNsdWRlICJzdG9yYWdlL2Jsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWYuaCIKICNpbmNs dWRlICJ1dGlscy9yZWxjYWNoZS5oIgpAQCAtMzEsMTQgKzMwLDggQEAgZXh0ZXJuIGJvb2wgdmlz aWJpbGl0eW1hcF9jbGVhcihSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssCiBleHRl cm4gdm9pZCB2aXNpYmlsaXR5bWFwX3BpbihSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBC bGssCiAJCQkJCQkJICBCdWZmZXIgKnZtYnVmKTsKIGV4dGVybiBib29sIHZpc2liaWxpdHltYXBf cGluX29rKEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciB2bWJ1Zik7Ci1leHRlcm4gdWludDgg dmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLAotCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhl YXBCbGssIEJ1ZmZlciBoZWFwQnVmLAotCQkJCQkJCSAgIFhMb2dSZWNQdHIgcmVjcHRyLAotCQkJ CQkJCSAgIEJ1ZmZlciB2bUJ1ZiwKLQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQs Ci0JCQkJCQkJICAgdWludDggZmxhZ3MpOwotZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfc2V0 X3ZtYnl0ZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssCi0JCQkJCQkJCQkgIEJ1 ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MpOworZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfc2V0 KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkJCQkgICBCdWZmZXIgdm1C dWYsIHVpbnQ4IGZsYWdzKTsKIGV4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMo UmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgKnZtYnVmKTsKIGV4dGVy biB2b2lkIHZpc2liaWxpdHltYXBfY291bnQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciAqYWxs X3Zpc2libGUsIEJsb2NrTnVtYmVyICphbGxfZnJvemVuKTsKIGV4dGVybiBCbG9ja051bWJlciB2 aXNpYmlsaXR5bWFwX3ByZXBhcmVfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmggYi9zcmMvaW5jbHVkZS9hY2Nl c3MvdmlzaWJpbGl0eW1hcGRlZnMuaAppbmRleCA1YWQ1YzAyMDg3Ny4uZTAxYmNlNGM5OWYgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oCkBAIC0yMSwxNCArMjEsNSBAQAog I2RlZmluZSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4JMHgwMgogI2RlZmluZSBWSVNJQklMSVRZ TUFQX1ZBTElEX0JJVFMJMHgwMwkvKiBPUiBvZiBhbGwgdmFsaWQgdmlzaWJpbGl0eW1hcAogCQkJ CQkJCQkJCQkgKiBmbGFncyBiaXRzICovCi0vKgotICogVG8gZGV0ZWN0IHJlY292ZXJ5IGNvbmZs aWN0cyBkdXJpbmcgbG9naWNhbCBkZWNvZGluZyBvbiBhIHN0YW5kYnksIHdlIG5lZWQKLSAqIHRv IGtub3cgaWYgYSB0YWJsZSBpcyBhIHVzZXIgY2F0YWxvZyB0YWJsZS4gRm9yIHRoYXQgd2UgYWRk IGFuIGFkZGl0aW9uYWwKLSAqIGJpdCBpbnRvIHhsX2hlYXBfdmlzaWJsZS5mbGFncywgaW4gYWRk aXRpb24gdG8gdGhlIGFib3ZlLgotICoKLSAqIE5COiBWSVNJQklMSVRZTUFQX1hMT0dfKiBtYXkg bm90IGJlIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCgpLgotICovCi0jZGVmaW5lIFZJU0lC SUxJVFlNQVBfWExPR19DQVRBTE9HX1JFTAkweDA0Ci0jZGVmaW5lIFZJU0lCSUxJVFlNQVBfWExP R19WQUxJRF9CSVRTCShWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMgfCBWSVNJQklMSVRZTUFQX1hM T0dfQ0FUQUxPR19SRUwpCiAKICNlbmRpZgkJCQkJCQkvKiBWSVNJQklMSVRZTUFQREVGU19IICov CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGExM2U4MTYyODkwLi5iNGM4ODBjMDgzZiAx MDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTQyNzMsNyArNDI3Myw2IEBAIHhsX2hlYXBf cHJ1bmUKIHhsX2hlYXBfcmV3cml0ZV9tYXBwaW5nCiB4bF9oZWFwX3RydW5jYXRlCiB4bF9oZWFw X3VwZGF0ZQoteGxfaGVhcF92aXNpYmxlCiB4bF9pbnZhbGlkX3BhZ2UKIHhsX2ludmFsaWRfcGFn ZV9rZXkKIHhsX2ludmFsaWRhdGlvbnMKLS0gCjIuNDMuMAoK --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0015-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisXi.patch" Content-Disposition: attachment; filename="v7-0015-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisXi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84cn14 RnJvbSAwM2M4YTQyNTdlMDJkMjE3Mzc4MDgwZDYxMWY0YzA2NmFkNjljNDk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDE4IEp1bCAyMDI1IDE2OjMwOjA0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAxNS8yMl0gUmVuYW1lIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCgpIHRvCiBH bG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoKQoKQ3VycmVudGx5LCB3ZSBvbmx5IHVzZSBHbG9iYWxW aXNUZXN0SXNSZW1vdmFibGVYaWQoKSB0byBjaGVjayBpZiBhCnR1cGxlJ3MgeG1heCBpcyB2aXNp YmxlIHRvIGFsbCwgbWVhbmluZyB3ZSBjYW4gcmVtb3ZlIGl0LiBCdXQgZnV0dXJlCmNvbW1pdHMg d2lsbCB1c2UgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgdG8gdGVzdCBpZiBhIHR1cGxl J3MgeG1pbgppcyB2aXNpYmxlIHRvIGFsbCBmb3IgdGhlIHB1cnBvc2VzIG9mIGRldGVybWluaW5n IGlmIHNldHRpbmcgdGhlIHBhZ2UKYWxsLXZpc2libGUgaW4gdGhlIFZNLiBJbiB0aGF0IGNhc2Us IGl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8gY2FsbCB0aGUKZnVuY3Rpb24gR2xvYmFsVmlzWGlkVmlz aWJsZVRvQWxsKCkuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxp dHkuYyB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAg ICAgICB8IDE0ICsrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3Zh Y3V1bS5jICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5j ICAgICAgICAgfCAxMyArKysrKystLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmgg ICAgICAgICAgICAgICAgIHwgIDQgKystLQogNSBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25z KCspLCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1fdmlzaWJpbGl0eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zp c2liaWxpdHkuYwppbmRleCAwNWY2OTQ2ZmU2MC4uNGViYzhhYmRiZWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYwpAQCAtMTQ0Nyw3ICsxNDQ3LDcgQEAg SGVhcFR1cGxlU2F0aXNmaWVzTm9uVmFjdXVtYWJsZShIZWFwVHVwbGUgaHR1cCwgU25hcHNob3Qg c25hcHNob3QsCiAJewogCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRlcikp OwogCi0JCWlmIChHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoc25hcHNob3QtPnZpc3Rlc3Qs IGRlYWRfYWZ0ZXIpKQorCQlpZiAoR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHNuYXBzaG90LT52 aXN0ZXN0LCBkZWFkX2FmdGVyKSkKIAkJCXJlcyA9IEhFQVBUVVBMRV9ERUFEOwogCX0KIAllbHNl CkBAIC0xNTEyLDggKzE1MTIsOCBAQCBIZWFwVHVwbGVJc1N1cmVseURlYWQoSGVhcFR1cGxlIGh0 dXAsIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0KQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBEZWxl dGVyIGNvbW1pdHRlZCwgc28gdHVwbGUgaXMgZGVhZCBpZiB0aGUgWElEIGlzIG9sZCBlbm91Z2gu ICovCi0JcmV0dXJuIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCh2aXN0ZXN0LAotCQkJCQkJ CQkJICAgSGVhcFR1cGxlSGVhZGVyR2V0UmF3WG1heCh0dXBsZSkpOworCXJldHVybiBHbG9iYWxW aXNYaWRWaXNpYmxlVG9BbGwodmlzdGVzdCwKKwkJCQkJCQkJCUhlYXBUdXBsZUhlYWRlckdldFJh d1htYXgodHVwbGUpKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5k ZXggZmZjMTIzMTRiNDEuLjcxNWRmYzE2YmE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYwpAQCAtMjMxLDcgKzIzMSw3IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVs YXRpb24sIEJ1ZmZlciBidWZmZXIpCiAJICovCiAJdmlzdGVzdCA9IEdsb2JhbFZpc1Rlc3RGb3Io cmVsYXRpb24pOwogCi0JaWYgKCFHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQodmlzdGVzdCwg cHJ1bmVfeGlkKSkKKwlpZiAoIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0ZXN0LCBwcnVu ZV94aWQpKQogCQlyZXR1cm47CiAKIAkvKgpAQCAtNTc0LDkgKzU3NCw5IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIERl dGVybWluaW5nIEhUU1Ygb25seSBvbmNlIGZvciBlYWNoIHR1cGxlIGlzIHJlcXVpcmVkIGZvciBj b3JyZWN0bmVzcywKIAkgKiB0byBkZWFsIHdpdGggY2FzZXMgd2hlcmUgcnVubmluZyBIVFNWIHR3 aWNlIGNvdWxkIHJlc3VsdCBpbiBkaWZmZXJlbnQKIAkgKiByZXN1bHRzLiAgRm9yIGV4YW1wbGUs IFJFQ0VOVExZX0RFQUQgY2FuIHR1cm4gdG8gREVBRCBpZiBhbm90aGVyCi0JICogY2hlY2tlZCBp dGVtIGNhdXNlcyBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVGdWxsWGlkKCkgdG8gdXBkYXRlIHRo ZQotCSAqIGhvcml6b24sIG9yIElOU0VSVF9JTl9QUk9HUkVTUyBjYW4gY2hhbmdlIHRvIERFQUQg aWYgdGhlIGluc2VydGluZwotCSAqIHRyYW5zYWN0aW9uIGFib3J0cy4KKwkgKiBjaGVja2VkIGl0 ZW0gY2F1c2VzIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCgpIHRvIHVwZGF0ZSB0aGUgaG9yaXpv biwKKwkgKiBvciBJTlNFUlRfSU5fUFJPR1JFU1MgY2FuIGNoYW5nZSB0byBERUFEIGlmIHRoZSBp bnNlcnRpbmcgdHJhbnNhY3Rpb24KKwkgKiBhYm9ydHMuCiAJICoKIAkgKiBJdCdzIGFsc28gZ29v ZCBmb3IgcGVyZm9ybWFuY2UuIE1vc3QgY29tbW9ubHkgdHVwbGVzIHdpdGhpbiBhIHBhZ2UgYXJl CiAJICogc3RvcmVkIGF0IGRlY3JlYXNpbmcgb2Zmc2V0cyAod2hpbGUgdGhlIGl0ZW1zIGFyZSBz dG9yZWQgYXQgaW5jcmVhc2luZwpAQCAtMTE3MiwxMSArMTE3MiwxMSBAQCBoZWFwX3BydW5lX3Nh dGlzZmllc192YWN1dW0oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgSGVhcFR1cGxlIHR1cCwgQnVmZmVy IGJ1ZmZlcikKIAkgKiBEZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlIHR1cGxlIGlzIGNvbnNp ZGVyZWQgZGVhZCB3aGVuIGNvbXBhcmVkCiAJICogd2l0aCB0aGUgcHJvdmlkZWQgR2xvYmFsVmlz U3RhdGUuIE9uLWFjY2VzcyBwcnVuaW5nIGRvZXMgbm90IHByb3ZpZGUKIAkgKiBWYWN1dW1DdXRv ZmZzLiBBbmQgZm9yIHZhY3V1bSwgZXZlbiBpZiB0aGUgdHVwbGUncyB4bWF4IGlzIG5vdCBvbGRl cgotCSAqIHRoYW4gT2xkZXN0WG1pbiwgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgY291 bGQgZmluZCB0aGUgcm93IGRlYWQKLQkgKiBpZiB0aGUgR2xvYmFsVmlzU3RhdGUgaGFzIGJlZW4g dXBkYXRlZCBzaW5jZSB0aGUgYmVnaW5uaW5nIG9mIHZhY3V1bWluZworCSAqIHRoYW4gT2xkZXN0 WG1pbiwgR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkgY291bGQgZmluZCB0aGUgcm93IGRlYWQg aWYKKwkgKiB0aGUgR2xvYmFsVmlzU3RhdGUgaGFzIGJlZW4gdXBkYXRlZCBzaW5jZSB0aGUgYmVn aW5uaW5nIG9mIHZhY3V1bWluZwogCSAqIHRoZSByZWxhdGlvbi4KIAkgKi8KLQlpZiAoR2xvYmFs VmlzVGVzdElzUmVtb3ZhYmxlWGlkKHByc3RhdGUtPnZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQorCWlm IChHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwocHJzdGF0ZS0+dmlzdGVzdCwgZGVhZF9hZnRlcikp CiAJCXJldHVybiBIRUFQVFVQTEVfREVBRDsKIAogCXJldHVybiByZXM7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3NwZ2lzdC9zcGd2YWN1dW0uYwppbmRleCAyNjc4ZjdhYjc4Mi4uNGI4ZTU3NDcyMzkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwpAQCAtNTM2LDcgKzUzNiw3IEBAIHZhY3V1 bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoUmVsYXRpb24gaW5kZXgsIFJlbGF0aW9uIGhlYXByZWws IEJ1ZmZlciBidWZmZXIpCiAJCSAqLwogCQlpZiAoZHQtPnR1cHN0YXRlID09IFNQR0lTVF9SRURJ UkVDVCAmJgogCQkJKCFUcmFuc2FjdGlvbklkSXNWYWxpZChkdC0+eGlkKSB8fAotCQkJIEdsb2Jh bFZpc1Rlc3RJc1JlbW92YWJsZVhpZCh2aXN0ZXN0LCBkdC0+eGlkKSkpCisJCQkgR2xvYmFsVmlz WGlkVmlzaWJsZVRvQWxsKHZpc3Rlc3QsIGR0LT54aWQpKSkKIAkJewogCQkJZHQtPnR1cHN0YXRl ID0gU1BHSVNUX1BMQUNFSE9MREVSOwogCQkJQXNzZXJ0KG9wYXF1ZS0+blJlZGlyZWN0aW9uID4g MCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCmluZGV4IGJmOTg3YWVkOGQzLi41MDhi YjM3OWY4NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMK KysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKQEAgLTQxODEsOCArNDE4 MSw3IEBAIEdsb2JhbFZpc1VwZGF0ZSh2b2lkKQogICogU2VlIGNvbW1lbnQgZm9yIEdsb2JhbFZp c1N0YXRlIGZvciBkZXRhaWxzLgogICovCiBib29sCi1HbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVG dWxsWGlkKEdsb2JhbFZpc1N0YXRlICpzdGF0ZSwKLQkJCQkJCQkJRnVsbFRyYW5zYWN0aW9uSWQg ZnhpZCkKK0dsb2JhbFZpc0Z1bGxYaWRWaXNpYmxlKEdsb2JhbFZpc1N0YXRlICpzdGF0ZSwgRnVs bFRyYW5zYWN0aW9uSWQgZnhpZCkKIHsKIAkvKgogCSAqIElmIGZ4aWQgaXMgb2xkZXIgdGhhbiBt YXliZV9uZWVkZWQgYm91bmQsIGl0IGRlZmluaXRlbHkgaXMgdmlzaWJsZSB0bwpAQCAtNDIyMyw3 ICs0MjIyLDcgQEAgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlRnVsbFhpZChHbG9iYWxWaXNTdGF0 ZSAqc3RhdGUsCiAgKiByZWxmcm96ZW54aWQpLgogICovCiBib29sCi1HbG9iYWxWaXNUZXN0SXNS ZW1vdmFibGVYaWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBUcmFuc2FjdGlvbklkIHhpZCkKK0ds b2JhbFZpc1hpZFZpc2libGVUb0FsbChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIFRyYW5zYWN0aW9u SWQgeGlkKQogewogCUZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQ7CiAKQEAgLTQyMzcsNyArNDIzNiw3 IEBAIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIFRy YW5zYWN0aW9uSWQgeGlkKQogCSAqLwogCWZ4aWQgPSBGdWxsWGlkUmVsYXRpdmVUbyhzdGF0ZS0+ ZGVmaW5pdGVseV9uZWVkZWQsIHhpZCk7CiAKLQlyZXR1cm4gR2xvYmFsVmlzVGVzdElzUmVtb3Zh YmxlRnVsbFhpZChzdGF0ZSwgZnhpZCk7CisJcmV0dXJuIEdsb2JhbFZpc0Z1bGxYaWRWaXNpYmxl KHN0YXRlLCBmeGlkKTsKIH0KIAogLyoKQEAgLTQyNTEsMTIgKzQyNTAsMTIgQEAgR2xvYmFsVmlz Q2hlY2tSZW1vdmFibGVGdWxsWGlkKFJlbGF0aW9uIHJlbCwgRnVsbFRyYW5zYWN0aW9uSWQgZnhp ZCkKIAogCXN0YXRlID0gR2xvYmFsVmlzVGVzdEZvcihyZWwpOwogCi0JcmV0dXJuIEdsb2JhbFZp c1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoc3RhdGUsIGZ4aWQpOworCXJldHVybiBHbG9iYWxWaXNG dWxsWGlkVmlzaWJsZShzdGF0ZSwgZnhpZCk7CiB9CiAKIC8qCiAgKiBDb252ZW5pZW5jZSB3cmFw cGVyIGFyb3VuZCBHbG9iYWxWaXNUZXN0Rm9yKCkgYW5kCi0gKiBHbG9iYWxWaXNUZXN0SXNSZW1v dmFibGVYaWQoKSwgc2VlIHRoZWlyIGNvbW1lbnRzLgorICogR2xvYmFsVmlzVGVzdElzVmlzaWJs ZVhpZCgpLCBzZWUgdGhlaXIgY29tbWVudHMuCiAgKi8KIGJvb2wKIEdsb2JhbFZpc0NoZWNrUmVt b3ZhYmxlWGlkKFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQpCkBAIC00MjY1LDcgKzQy NjQsNyBAQCBHbG9iYWxWaXNDaGVja1JlbW92YWJsZVhpZChSZWxhdGlvbiByZWwsIFRyYW5zYWN0 aW9uSWQgeGlkKQogCiAJc3RhdGUgPSBHbG9iYWxWaXNUZXN0Rm9yKHJlbCk7CiAKLQlyZXR1cm4g R2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHN0YXRlLCB4aWQpOworCXJldHVybiBHbG9iYWxW aXNYaWRWaXNpYmxlVG9BbGwoc3RhdGUsIHhpZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS91dGlscy9zbmFwbWdyLmggYi9zcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmgKaW5k ZXggNjA0YzFmOTAyMTYuLjU0N2M3MWZjYmZlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGls cy9zbmFwbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc25hcG1nci5oCkBAIC0xMDAsOCAr MTAwLDggQEAgZXh0ZXJuIGNoYXIgKkV4cG9ydFNuYXBzaG90KFNuYXBzaG90IHNuYXBzaG90KTsK ICAqLwogdHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgR2xvYmFsVmlzU3RhdGU7CiBleHRl cm4gR2xvYmFsVmlzU3RhdGUgKkdsb2JhbFZpc1Rlc3RGb3IoUmVsYXRpb24gcmVsKTsKLWV4dGVy biBib29sIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUs IFRyYW5zYWN0aW9uSWQgeGlkKTsKLWV4dGVybiBib29sIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJs ZUZ1bGxYaWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rpb25JZCBmeGlkKTsK K2V4dGVybiBib29sIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChHbG9iYWxWaXNTdGF0ZSAqc3Rh dGUsIFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBib29sIEdsb2JhbFZpc0Z1bGxYaWRWaXNp YmxlKEdsb2JhbFZpc1N0YXRlICpzdGF0ZSwgRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCk7CiBleHRl cm4gYm9vbCBHbG9iYWxWaXNDaGVja1JlbW92YWJsZVhpZChSZWxhdGlvbiByZWwsIFRyYW5zYWN0 aW9uSWQgeGlkKTsKIGV4dGVybiBib29sIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlRnVsbFhpZChS ZWxhdGlvbiByZWwsIEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQpOwogCi0tIAoyLjQzLjAKCg== --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0013-Rename-PruneState.freeze-to-attempt_freeze.patch" Content-Disposition: attachment; filename="v7-0013-Rename-PruneState.freeze-to-attempt_freeze.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84ci12 RnJvbSA3Zjk2YzZmN2FjZDRlMDhiYTA0NjNjNWI1OTM5NGJiNzlhODAwMDVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDMxIEp1bCAyMDI1IDE0OjA3OjUxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAxMy8yMl0gUmVuYW1lIFBydW5lU3RhdGUuZnJlZXplIHRvIGF0dGVtcHRfZnJlZXpl CgpUaGlzIG1ha2VzIGl0IG1vcmUgY2xlYXIgdGhhdCB0aGlzIGlzIHRvIGluZGljYXRlIHRoZSBj YWxsZXIgd291bGQgbGlrZQpoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIHRvIGNvbnNpZGVy IGZyZWV6aW5nIHR1cGxlcyAtLSBub3QgdGhhdCB3ZQp1bHRpbWF0ZWx5IHdpbGwgZW5kIHVwIGZy ZWV6aW5nIHRoZW0uCgpBbHNvIHJlbmFtZSBsb2NhbCB2YXJpYWJsZSBoaW50X2JpdF9mcGkgdG8g ZGlkX3R1cGxlX2hpbnRfZnBpLiBUaGlzCm1ha2VzIGl0IGNsZWFyIGl0IGlzIGFib3V0IHR1cGxl IGhpbnRzIGFuZCBub3QgcGFnZSBoaW50cyBhbmQgdGhhdCBpdAppbmRpY2F0ZXMgc29tZXRoaW5n IHRoYXQgaGFwcGVuZWQgYW5kIG5vdCBzb21ldGhpbmcgdGhhdCBjb3VsZCBoYXBwZW4uCi0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgfCAyMCArKysrKysrKysrLS0tLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggY2Y5ZTUyMTVkNmIuLjgyMTI3ZTg3 MjhiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtNDMsNyArNDMsNyBAQCB0 eXBlZGVmIHN0cnVjdAogCS8qIHdoZXRoZXIgb3Igbm90IGRlYWQgaXRlbXMgY2FuIGJlIHNldCBM UF9VTlVTRUQgZHVyaW5nIHBydW5pbmcgKi8KIAlib29sCQltYXJrX3VudXNlZF9ub3c7CiAJLyog d2hldGhlciB0byBhdHRlbXB0IGZyZWV6aW5nIHR1cGxlcyAqLwotCWJvb2wJCWZyZWV6ZTsKKwli b29sCQlhdHRlbXB0X2ZyZWV6ZTsKIAogCS8qCiAJICogV2hldGhlciBvciBub3QgdG8gY29uc2lk ZXIgdXBkYXRpbmcgdGhlIFZNLiBUaGVyZSBpcyBzb21lIGJvb2trZWVwaW5nCkBAIC00NTIsNyAr NDUyLDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1 ZmZlciBidWZmZXIsCiAJYm9vbAkJZG9fc2V0X3ZtOwogCXVpbnQ4CQl2bWZsYWdzID0gMDsKIAl1 aW50OAkJb2xkX3ZtYml0cyA9IDA7Ci0JYm9vbAkJaGludF9iaXRfZnBpOworCWJvb2wJCWRpZF90 dXBsZV9oaW50X2ZwaTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uud2FsX2ZwaTsK IAlib29sCQlhbGxfZnJvemVuX2V4Y2VwdF9scF9kZWFkID0gZmFsc2U7CiAJYm9vbAkJc2V0X3Bk X2FsbF92aXNpYmxlID0gZmFsc2U7CkBAIC00NjAsNyArNDYwLDcgQEAgaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJLyogQ29weSBw YXJhbWV0ZXJzIHRvIHByc3RhdGUgKi8KIAlwcnN0YXRlLnZpc3Rlc3QgPSB2aXN0ZXN0OwogCXBy c3RhdGUubWFya191bnVzZWRfbm93ID0gKG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfTUFSS19V TlVTRURfTk9XKSAhPSAwOwotCXByc3RhdGUuZnJlZXplID0gKG9wdGlvbnMgJiBIRUFQX1BBR0Vf UFJVTkVfRlJFRVpFKSAhPSAwOworCXByc3RhdGUuYXR0ZW1wdF9mcmVlemUgPSAob3B0aW9ucyAm IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUpICE9IDA7CiAJcHJzdGF0ZS5jb25zaWRlcl91cGRhdGVf dm0gPSAob3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0pICE9IDA7CiAJcHJzdGF0 ZS5jdXRvZmZzID0gY3V0b2ZmczsKIApAQCAtNDg1LDcgKzQ4NSw3IEBAIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCiAJLyogaW5p dGlhbGl6ZSBwYWdlIGZyZWV6aW5nIHdvcmtpbmcgc3RhdGUgKi8KIAlwcnN0YXRlLnBhZ2Vmcnou ZnJlZXplX3JlcXVpcmVkID0gZmFsc2U7Ci0JaWYgKHByc3RhdGUuZnJlZXplKQorCWlmIChwcnN0 YXRlLmF0dGVtcHRfZnJlZXplKQogCXsKIAkJQXNzZXJ0KG5ld19yZWxmcm96ZW5feGlkICYmIG5l d19yZWxtaW5fbXhpZCk7CiAJCXByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlUmVsZnJvemVuWGlk ID0gKm5ld19yZWxmcm96ZW5feGlkOwpAQCAtNTM1LDcgKzUzNSw3IEBAIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIGJvb2tr ZWVwaW5nLiBJbml0aWFsaXppbmcgYWxsX3Zpc2libGUgdG8gZmFsc2UgYWxsb3dzIHNraXBwaW5n IHRoZSB3b3JrCiAJICogdG8gdXBkYXRlIHRoZW0gaW4gaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFu Z2VkX2xwX25vcm1hbCgpLgogCSAqLwotCWlmIChwcnN0YXRlLmZyZWV6ZSkKKwlpZiAocHJzdGF0 ZS5hdHRlbXB0X2ZyZWV6ZSkKIAl7CiAJCXByc3RhdGUuYWxsX3Zpc2libGUgPSB0cnVlOwogCQlw cnN0YXRlLmFsbF9mcm96ZW4gPSB0cnVlOwpAQCAtNjUzLDcgKzY1Myw3IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIElm IGNoZWNrc3VtcyBhcmUgZW5hYmxlZCwgaGVhcF9wcnVuZV9zYXRpc2ZpZXNfdmFjdXVtKCkgbWF5 IGhhdmUgY2F1c2VkCiAJICogYW4gRlBJIHRvIGJlIGVtaXR0ZWQuCiAJICovCi0JaGludF9iaXRf ZnBpID0gZnBpX2JlZm9yZSAhPSBwZ1dhbFVzYWdlLndhbF9mcGk7CisJZGlkX3R1cGxlX2hpbnRf ZnBpID0gZnBpX2JlZm9yZSAhPSBwZ1dhbFVzYWdlLndhbF9mcGk7CiAKIAkvKgogCSAqIFByb2Nl c3MgSE9UIGNoYWlucy4KQEAgLTc3MCw3ICs3NzAsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkgKiBwbGFucyB3ZSBwcmVw YXJlZCwgb3Igbm90LgogCSAqLwogCWRvX2ZyZWV6ZSA9IGZhbHNlOwotCWlmIChwcnN0YXRlLmZy ZWV6ZSkKKwlpZiAocHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkKIAl7CiAJCWlmIChwcnN0YXRlLnBh Z2VmcnouZnJlZXplX3JlcXVpcmVkKQogCQl7CkBAIC04MDMsNyArODAzLDcgQEAgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJ ICovCiAJCQkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocmVsYXRpb24pKQogCQkJCXsKLQkJCQkJaWYg KGhpbnRfYml0X2ZwaSkKKwkJCQkJaWYgKGRpZF90dXBsZV9oaW50X2ZwaSkKIAkJCQkJCWRvX2Zy ZWV6ZSA9IHRydWU7CiAJCQkJCWVsc2UgaWYgKGRvX3BydW5lKQogCQkJCQl7CkBAIC0xMTI3LDcg KzExMjcsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKIAlwcmVzdWx0LT5scGRlYWRfaXRlbXMgPSBwcnN0YXRlLmxwZGVhZF9p dGVtczsKIAkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMgYXJyYXkgd2FzIGFscmVhZHkgZmls bGVkIGluICovCiAKLQlpZiAocHJzdGF0ZS5mcmVlemUpCisJaWYgKHByc3RhdGUuYXR0ZW1wdF9m cmVlemUpCiAJewogCQlpZiAocHJlc3VsdC0+bmZyb3plbiA+IDApCiAJCXsKQEAgLTE3MTQsNyAr MTcxNCw3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdl LCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAJICogdG8gdXBkYXRlIHRoZSBWTSwg d2UgaGF2ZSB0byBjYWxsIGhlYXBfcHJlcGFyZV9mcmVlemVfdHVwbGUoKSBvbiBldmVyeQogCSAq IHR1cGxlIHRvIGtub3cgd2hldGhlciBvciBub3QgdGhlIHBhZ2Ugd2lsbCBiZSB0b3RhbGx5IGZy b3plbi4KIAkgKi8KLQlpZiAocHJzdGF0ZS0+ZnJlZXplKQorCWlmIChwcnN0YXRlLT5hdHRlbXB0 X2ZyZWV6ZSkKIAl7CiAJCWJvb2wJCXRvdGFsbHlfZnJvemVuOwogCi0tIAoyLjQzLjAKCg== --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0016-Use-GlobalVisState-to-determine-page-level-visibi.patch" Content-Disposition: attachment; filename="v7-0016-Use-GlobalVisState-to-determine-page-level-visibi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84cq15 RnJvbSBmM2MzYTQ0YmI0ZGQ1YmYzMTFhM2EzOTg3NmUxZDI2NzkwMzIxYzJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM4OjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAxNi8yMl0gVXNlIEdsb2JhbFZpc1N0YXRlIHRvIGRldGVybWluZSBwYWdlIGxldmVs CiB2aXNpYmlsaXR5CgpEdXJpbmcgcHJ1bmluZyBhbmQgZHVyaW5nIHZhY3V1bSdzIHRoaXJkIHBo YXNlLCB3ZSB0cnkgdG8gZGV0ZXJtaW5lIGlmCnRoZSB3aG9sZSBwYWdlIGNhbiBiZSBzZXQgYWxs LXZpc2libGUgaW4gdGhlIHZpc2liaWxpdHkgbWFwLiBJbnN0ZWFkIG9mCnVzaW5nIE9sZGVzdFht aW4gdG8gZGV0ZXJtaW5lIGlmIGFsbCB0aGUgdHVwbGVzIG9uIGEgcGFnZSBhcmUgdmlzaWJsZSB0 bwpldmVyeW9uZSwgdXNlIHRoZSBHbG9iYWxWaXNTdGF0ZS4gVGhpcyBhbGxvd3MgdXMgdG8gc3Rh cnQgc2V0dGluZyB0aGUgVk0KZHVyaW5nIG9uLWFjY2VzcyBwcnVuaW5nIGluIGEgZnV0dXJlIGNv bW1pdC4KCkl0IGlzIHBvc3NpYmxlIGZvciB0aGUgR2xvYmFsVmlzU3RhdGUgdG8gY2hhbmdlIGR1 cmluZyB0aGUgY291cnNlIG9mIGEKdmFjdXVtLiBJbiBhbGwgYnV0IGV4dHJhb3JkaW5hcnkgY2Fz ZXMsIGl0IG1vdmVzIGZvcndhcmQsIG1lYW5pbmcgbW9yZQpwYWdlcyBjb3VsZCBwb3RlbnRpYWxs eSBiZSBzZXQgaW4gdGhlIFZNLgoKQmVjYXVzZSBjb21wYXJpbmcgYSB0cmFuc2FjdGlvbiBJRCB0 byB0aGUgR2xvYmFsVmlzU3RhdGUgcmVxdWlyZXMgbW9yZQpvcGVyYXRpb25zIHRoYW4gY29tcGFy aW5nIGl0IHRvIGFub3RoZXIgc2luZ2xlIHRyYW5zYWN0aW9uIElELCB3ZSBub3cKd2FpdCB1bnRp bCBhZnRlciBleGFtaW5pbmcgYWxsIHRoZSB0dXBsZXMgb24gdGhlIHBhZ2UgYW5kIGlmIHdlIGhh dmUKbWFpbnRhaW5lZCB0aGUgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLCB3ZSBjb21wYXJlIHRoYXQg dG8gdGhlCkdsb2JhbFZpc1N0YXRlIGp1c3Qgb25jZSBwZXIgcGFnZS4gVGhpcyB3b3JrcyBiZWNh dXNlIGlmIHRoZSBwYWdlIGlzCmFsbC12aXNpYmxlIGFuZCBoYXMgbGl2ZSwgY29tbWl0dGVkIHR1 cGxlcyBvbiBpdCwgdGhlCnZpc2liaWxpdHlfY3V0b2ZmX3hpZCB3aWxsIGNvbnRhaW4gdGhlIG5l d2VzdCB4bWluIG9uIHRoZSBwYWdlLiBJZgpldmVyeW9uZSBjYW4gc2VlIGl0LCB0aGUgcGFnZSBp cyB0cnVseSBhbGwtdmlzaWJsZS4KCkRvaW5nIHRoaXMgbWF5IG1lYW4gd2UgZXhhbWluZSBtb3Jl IHR1cGxlcycgeG1pbnMgdGhhbiBiZWZvcmUsIGFzIHdlIG1heQpoYXZlIHNldCBhbGxfdmlzaWJs ZSB0byBmYWxzZSBzb29uZXIgd2hlbiBlbmNvdW50ZXJpbmcgYSBsaXZlIHR1cGxlCm5ld2VyIHRo YW4gT2xkZXN0WG1pbi4gSG93ZXZlciwgdGhlc2UgZXh0cmEgY29tcGFyaXNvbnMgd2VyZSBmb3Vu ZCBub3QKdG8gYmUgc2lnbmlmaWNhbnQgaW4gYSBwcm9maWxlLgotLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMgfCAyOCArKysrKysrKysrKysKIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgICAgfCA0OCArKysrKysrKystLS0tLS0t LS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgICAgfCAxNyAr KysrLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgICB8ICA0 ICstCiA0IGZpbGVzIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCmluZGV4IDRlYmM4 YWJkYmViLi5lZGQ1MjlkYzNjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX3Zpc2liaWxpdHkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f dmlzaWJpbGl0eS5jCkBAIC0xMTg5LDYgKzExODksMzQgQEAgSGVhcFR1cGxlU2F0aXNmaWVzVmFj dXVtKEhlYXBUdXBsZSBodHVwLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAJcmV0dXJuIHJl czsKIH0KIAorLyoKKyAqIE5lYXJseSB0aGUgc2FtZSBhcyBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1 dW0sIGJ1dCB1c2VzIGEgR2xvYmFsVmlzU3RhdGUgdG8KKyAqIGRldGVybWluZSB3aGV0aGVyIG9y IG5vdCBhIHR1cGxlIGlzIEhFQVBUVVBMRV9ERUFEIE9yCisgKiBIRUFQVFVQTEVfUkVDRU5UTFlf REVBRC4gSXQgc2VydmVzIHRoZSBzYW1lIHB1cnBvc2UgYnV0IGNhbiBiZSB1c2VkIGJ5CisgKiBj YWxsZXJzIHRoYXQgaGF2ZSBub3QgY2FsY3VsYXRlZCBhIHNpbmdsZSBPbGRlc3RYbWluIHZhbHVl LgorICovCitIVFNWX1Jlc3VsdAorSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtR2xvYmFsVmlzKEhl YXBUdXBsZSBodHVwLCBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKKwkJCQkJCQkJICBCdWZmZXIg YnVmZmVyKQoreworCVRyYW5zYWN0aW9uSWQgZGVhZF9hZnRlciA9IEludmFsaWRUcmFuc2FjdGlv bklkOworCUhUU1ZfUmVzdWx0IHJlczsKKworCXJlcyA9IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1 bUhvcml6b24oaHR1cCwgYnVmZmVyLCAmZGVhZF9hZnRlcik7CisKKwlpZiAocmVzID09IEhFQVBU VVBMRV9SRUNFTlRMWV9ERUFEKQorCXsKKwkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRl YWRfYWZ0ZXIpKTsKKworCQlpZiAoR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHZpc3Rlc3QsIGRl YWRfYWZ0ZXIpKQorCQkJcmVzID0gSEVBUFRVUExFX0RFQUQ7CisJfQorCWVsc2UKKwkJQXNzZXJ0 KCFUcmFuc2FjdGlvbklkSXNWYWxpZChkZWFkX2FmdGVyKSk7CisKKwlyZXR1cm4gcmVzOworfQor CiAvKgogICogV29yayBob3JzZSBmb3IgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtIGFuZCBzaW1p bGFyIHJvdXRpbmVzLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggNzE1 ZGZjMTZiYTcuLmFiNzlkOGEzZWQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpA QCAtMTQxLDEwICsxNDEsOSBAQCB0eXBlZGVmIHN0cnVjdAogCSAqIGFsbF92aXNpYmxlIGFuZCBh bGxfZnJvemVuIGluZGljYXRlIGlmIHRoZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbgogCSAq IGJpdHMgaW4gdGhlIHZpc2liaWxpdHkgbWFwIGNhbiBiZSBzZXQgZm9yIHRoaXMgcGFnZSBhZnRl ciBwcnVuaW5nLgogCSAqCi0JICogdmlzaWJpbGl0eV9jdXRvZmZfeGlkIGlzIHRoZSBuZXdlc3Qg eG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZS4KLQkgKiBUaGUgY2FsbGVyIGNhbiB1c2Ug aXQgYXMgdGhlIGNvbmZsaWN0IGhvcml6b24sIHdoZW4gc2V0dGluZyB0aGUgVk0KLQkgKiBiaXRz LiAgSXQgaXMgb25seSB2YWxpZCBpZiB3ZSBmcm96ZSBzb21lIHR1cGxlcywgYW5kIGFsbF9mcm96 ZW4gaXMKLQkgKiB0cnVlLgorCSAqIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBpcyB0aGUgbmV3ZXN0 IHhtaW4gb2YgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuIEl0CisJICogY2FuIGJlIHVzZWQgYXMg dGhlIGNvbmZsaWN0IGhvcml6b24sIHdoZW4gc2V0dGluZyB0aGUgVk0gb3Igd2hlbgorCSAqIGZy ZWV6aW5nIGFsbCB0aGUgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuCiAJICoKIAkgKiBOT1RFOiBh bGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBkb24ndCBpbmNsdWRlIExQX0RFQUQgaXRlbXMgdW50 aWwKIAkgKiBkaXJlY3RseSBiZWZvcmUgdXBkYXRpbmcgdGhlIFZNLiBXZSBpZ25vcmUgTFBfREVB RCBpdGVtcyB3aGVuIGRlY2lkaW5nCkBAIC01NTMsMTQgKzU1MiwxMiBAQCBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAogCS8qCiAJ ICogVGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSwg Y29tbWl0dGVkIHR1cGxlcwotCSAqIG9sZGVyIHRoYW4gT2xkZXN0WG1pbiBvbiB0aGUgcGFnZS4g VGhpcyBmaWVsZCBpcyBvbmx5IGtlcHQgdXAtdG8tZGF0ZQotCSAqIGlmIHRoZSBwYWdlIGlzIGFs bC12aXNpYmxlLiBBcyBzb29uIGFzIGEgdHVwbGUgaXMgZW5jb3VudGVyZWQgdGhhdCBpcwotCSAq IG5vdCB2aXNpYmxlIHRvIGFsbCwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWluZWQuIEFzIGxvbmcg YXMgaXQgaXMKLQkgKiBtYWludGFpbmVkLCBpdCBjYW4gYmUgdXNlZCB0byBjYWxjdWxhdGUgdGhl IHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24uCi0JICogVGhpcyBpcyBtb3N0IGxpa2VseSB0byBo YXBwZW4gd2hlbiB1cGRhdGluZyB0aGUgVk0gYW5kL29yIGZyZWV6aW5nIGFsbAotCSAqIGxpdmUg dHVwbGVzIG9uIHRoZSBwYWdlLiBJdCBpcyB1cGRhdGVkIGJlZm9yZSByZXR1cm5pbmcgdG8gdGhl IGNhbGxlcgotCSAqIGJlY2F1c2UgdmFjdXVtIGRvZXMgYXNzZXJ0LWJ1aWxkIG9ubHkgdmFsaWRh dGlvbiBvbiB0aGUgcGFnZSB1c2luZyB0aGlzCi0JICogZmllbGQuCisJICogb24gdGhlIHBhZ2Ug b2xkZXIgdGhhbiB0aGUgdmlzaWJpbGl0eSBob3Jpem9uIHJlcHJlc2VudGVkIGluIHRoZQorCSAq IEdsb2JhbFZpc1N0YXRlLgorCSAqCisJICogSWYgd2UgZW5jb3VudGVyIGFuIHVuY29tbWl0dGVk IHR1cGxlLCB0aGlzIGZpZWxkIGlzIHVubWFpbnRhaW5lZC4gSWYKKwkgKiB0aGUgcGFnZSBpcyBi ZWluZyBzZXQgYWxsLXZpc2libGUgb3Igd2hlbiBmcmVlemluZyBhbGwgbGl2ZSB0dXBsZXMgb24K KwkgKiB0aGUgcGFnZSwgaXQgaXMgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHNuYXBzaG90IGNvbmZs aWN0IGhvcml6b24uCiAJICovCiAJcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQgPSBJbnZh bGlkVHJhbnNhY3Rpb25JZDsKIApAQCAtNzU2LDYgKzc1MywxNiBAQCBoZWFwX3BhZ2VfcHJ1bmVf YW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJcHJzdGF0ZS5u ZGVhZCA+IDAgfHwKIAkJcHJzdGF0ZS5udW51c2VkID4gMDsKIAorCS8qCisJICogQWZ0ZXIgcHJv Y2Vzc2luZyBhbGwgdGhlIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLCBpZiB0aGUgbmV3ZXN0IHht aW4KKwkgKiBhbW9uZ3N0IHRoZW0gaXMgbm90IHZpc2libGUgdG8gZXZlcnlvbmUsIHRoZSBwYWdl IGNhbm5vdCBiZQorCSAqIGFsbC12aXNpYmxlLgorCSAqLworCWlmIChwcnN0YXRlLmFsbF92aXNp YmxlICYmCisJCVRyYW5zYWN0aW9uSWRJc05vcm1hbChwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2Zm X3hpZCkgJiYKKwkJIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChwcnN0YXRlLnZpc3Rlc3QsIHBy c3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkKSkKKwkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHBy c3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOworCiAJLyoKIAkgKiBFdmVuIGlmIHdlIGRvbid0IHBy dW5lIGFueXRoaW5nLCBpZiB3ZSBmb3VuZCBhIG5ldyB2YWx1ZSBmb3IgdGhlCiAJICogcGRfcHJ1 bmVfeGlkIGZpZWxkIG9yIHRoZSBwYWdlIHdhcyBtYXJrZWQgZnVsbCwgd2Ugd2lsbCB1cGRhdGUg dGhvc2UKQEAgLTEwOTgsMTIgKzExMDUsMTAgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCVRyYW5zYWN0aW9uSWQgZGVidWdf Y3V0b2ZmOwogCQlib29sCQlkZWJ1Z19hbGxfZnJvemVuOwogCi0JCUFzc2VydChjdXRvZmZzKTsK LQogCQlBc3NlcnQocHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0gMCk7CiAKIAkJaWYgKCFoZWFwX3Bh Z2VfaXNfYWxsX3Zpc2libGUocmVsYXRpb24sIGJ1ZmZlciwKLQkJCQkJCQkJCSAgY3V0b2Zmcy0+ T2xkZXN0WG1pbiwKKwkJCQkJCQkJCSAgcHJzdGF0ZS52aXN0ZXN0LAogCQkJCQkJCQkJICAmZGVi dWdfYWxsX2Zyb3plbiwKIAkJCQkJCQkJCSAgJmRlYnVnX2N1dG9mZiwgb2ZmX2xvYykpCiAJCQlB c3NlcnQoZmFsc2UpOwpAQCAtMTYyOCwxOSArMTYzMyw2IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3Vu Y2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXRO dW1iCiAJCQkJICovCiAJCQkJeG1pbiA9IEhlYXBUdXBsZUhlYWRlckdldFhtaW4oaHR1cCk7CiAK LQkJCQkvKgotCQkJCSAqIEZvciBub3cgYWx3YXlzIHVzZSBwcnN0YXRlLT5jdXRvZmZzIGZvciB0 aGlzIHRlc3QsIGJlY2F1c2UKLQkJCQkgKiB3ZSBvbmx5IHVwZGF0ZSAnYWxsX3Zpc2libGUnIHdo ZW4gZnJlZXppbmcgaXMgcmVxdWVzdGVkLiBXZQotCQkJCSAqIGNvdWxkIHVzZSBHbG9iYWxWaXNU ZXN0SXNSZW1vdmFibGVYaWQgaW5zdGVhZCwgaWYgYQotCQkJCSAqIG5vbi1mcmVlemluZyBjYWxs ZXIgd2FudGVkIHRvIHNldCB0aGUgVk0gYml0LgotCQkJCSAqLwotCQkJCUFzc2VydChwcnN0YXRl LT5jdXRvZmZzKTsKLQkJCQlpZiAoIVRyYW5zYWN0aW9uSWRQcmVjZWRlcyh4bWluLCBwcnN0YXRl LT5jdXRvZmZzLT5PbGRlc3RYbWluKSkKLQkJCQl7Ci0JCQkJCXByc3RhdGUtPmFsbF92aXNpYmxl ID0gcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwotCQkJCQlicmVhazsKLQkJCQl9Ci0KIAkJ CQkvKiBUcmFjayBuZXdlc3QgeG1pbiBvbiBwYWdlLiAqLwogCQkJCWlmIChUcmFuc2FjdGlvbklk Rm9sbG93cyh4bWluLCBwcnN0YXRlLT52aXNpYmlsaXR5X2N1dG9mZl94aWQpICYmCiAJCQkJCVRy YW5zYWN0aW9uSWRJc05vcm1hbCh4bWluKSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YwppbmRleCA2YTBmYTM3MWEwNi4uNzc3ZWMzMGViODIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKQEAgLTQ2NSw3ICs0NjUsNyBAQCBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1zX2Fk ZChMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBPZmZzZXROdW1iZXIgKgog c3RhdGljIHZvaWQgZGVhZF9pdGVtc19yZXNldChMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGlj IHZvaWQgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCk7CiBzdGF0aWMgYm9v bCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGVfZXhjZXB0X2xwZGVhZChSZWxhdGlvbiByZWwsIEJ1 ZmZlciBidWYsCi0JCQkJCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJ CQkJCQkJCQkgICBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCQkJCQkJCSAgIE9mZnNl dE51bWJlciAqZGVhZG9mZnNldHMsCiAJCQkJCQkJCQkJCQkgICBpbnQgYWxsb3dlZF9udW1fb2Zm c2V0cywKIAkJCQkJCQkJCQkJCSAgIGJvb2wgKmFsbF9mcm96ZW4sCkBAIC0yNzE2LDcgKzI3MTYs NyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJl ciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkgSW52YWxpZE9mZnNldE51bWJlcik7CiAK IAlpZiAoaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlX2V4Y2VwdF9scGRlYWQodmFjcmVsLT5yZWws IGJ1ZmZlciwKLQkJCQkJCQkJCQkJICAgdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sCisJCQkJ CQkJCQkJCSAgIHZhY3JlbC0+dmlzdGVzdCwKIAkJCQkJCQkJCQkJICAgZGVhZG9mZnNldHMsIG51 bV9vZmZzZXRzLAogCQkJCQkJCQkJCQkgICAmYWxsX2Zyb3plbiwgJnZpc2liaWxpdHlfY3V0b2Zm X3hpZCwKIAkJCQkJCQkJCQkJICAgJnZhY3JlbC0+b2ZmbnVtKSkKQEAgLTM0NTksMTMgKzM0NTks MTMgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCkKICAqLwogYm9vbAog aGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJ CSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkgR2xvYmFsVmlzU3RhdGUgKnZpc3Rl c3QsCiAJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKIAkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNp YmlsaXR5X2N1dG9mZl94aWQsCiAJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSkK IHsKIAotCXJldHVybiBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGVfZXhjZXB0X2xwZGVhZChyZWws IGJ1ZiwgT2xkZXN0WG1pbiwKKwlyZXR1cm4gaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlX2V4Y2Vw dF9scGRlYWQocmVsLCBidWYsIHZpc3Rlc3QsCiAJCQkJCQkJCQkJCQkgIE5VTEwsIDAsCiAJCQkJ CQkJCQkJCQkgIGFsbF9mcm96ZW4sCiAJCQkJCQkJCQkJCQkgIHZpc2liaWxpdHlfY3V0b2ZmX3hp ZCwKQEAgLTM1MDAsNyArMzUwMCw3IEBAIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlv biByZWwsIEJ1ZmZlciBidWYsCiAgKi8KIHN0YXRpYyBib29sCiBoZWFwX3BhZ2VfaXNfYWxsX3Zp c2libGVfZXhjZXB0X2xwZGVhZChSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkJCQkg ICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkgICBHbG9iYWxWaXNTdGF0ZSAq dmlzdGVzdCwKIAkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCiAJCQkJCQkJ CQkgICBpbnQgYWxsb3dlZF9udW1fb2Zmc2V0cywKIAkJCQkJCQkJCSAgIGJvb2wgKmFsbF9mcm96 ZW4sCkBAIC0zNTU1LDggKzM1NTUsOCBAQCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGVfZXhjZXB0 X2xwZGVhZChSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAJCXR1cGxlLnRfbGVuID0gSXRlbUlk R2V0TGVuZ3RoKGl0ZW1pZCk7CiAJCXR1cGxlLnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlk KHJlbCk7CiAKLQkJc3dpdGNoIChIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0oJnR1cGxlLCBPbGRl c3RYbWluLAotCQkJCQkJCQkJCSBidWYpKQorCQlzd2l0Y2ggKEhlYXBUdXBsZVNhdGlzZmllc1Zh Y3V1bUdsb2JhbFZpcygmdHVwbGUsIHZpc3Rlc3QsCisJCQkJCQkJCQkJCQkgIGJ1ZikpCiAJCXsK IAkJCWNhc2UgSEVBUFRVUExFX0xJVkU6CiAJCQkJewpAQCAtMzU3NSw4ICszNTc1LDcgQEAgaGVh cF9wYWdlX2lzX2FsbF92aXNpYmxlX2V4Y2VwdF9scGRlYWQoUmVsYXRpb24gcmVsLCBCdWZmZXIg YnVmLAogCQkJCQkgKiB0aGF0IGV2ZXJ5b25lIHNlZXMgaXQgYXMgY29tbWl0dGVkPwogCQkJCQkg Ki8KIAkJCQkJeG1pbiA9IEhlYXBUdXBsZUhlYWRlckdldFhtaW4odHVwbGUudF9kYXRhKTsKLQkJ CQkJaWYgKCFUcmFuc2FjdGlvbklkUHJlY2VkZXMoeG1pbiwKLQkJCQkJCQkJCQkJICAgT2xkZXN0 WG1pbikpCisJCQkJCWlmICghR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHZpc3Rlc3QsIHhtaW4p KQogCQkJCQl7CiAJCQkJCQlhbGxfdmlzaWJsZSA9IGZhbHNlOwogCQkJCQkJKmFsbF9mcm96ZW4g PSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCAwYjliYjFjOWIxMy4uNDI3OGYzNTFiZGYgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvaGVhcGFtLmgKQEAgLTM0Miw3ICszNDIsNyBAQCBleHRlcm4gdm9pZCBoZWFwX2lucGxh Y2VfdW5sb2NrKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQlIZWFwVHVwbGUgb2xkdHVwLCBC dWZmZXIgYnVmZmVyKTsKIAogZXh0ZXJuIGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJl bGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFht aW4sCisJCQkJCQkJCQkgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkJCQkgYm9vbCAq YWxsX2Zyb3plbiwKIAkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94 aWQsCiAJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSk7CkBAIC00MTUsNiAr NDE1LDggQEAgZXh0ZXJuIFRNX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2ZpZXNVcGRhdGUoSGVhcFR1 cGxlIGh0dXAsIENvbW1hbmRJZCBjdXJjaWQsCiAJCQkJCQkJCQkJICBCdWZmZXIgYnVmZmVyKTsK IGV4dGVybiBIVFNWX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0oSGVhcFR1cGxlIGh0 dXAsIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKIAkJCQkJCQkJCQkJQnVmZmVyIGJ1ZmZlcik7 CitleHRlcm4gSFRTVl9SZXN1bHQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtR2xvYmFsVmlzKEhl YXBUdXBsZSBodHVwLAorCQkJCQkJCQkJCQkJCSBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwgQnVm ZmVyIGJ1ZmZlcik7CiBleHRlcm4gSFRTVl9SZXN1bHQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVt SG9yaXpvbihIZWFwVHVwbGUgaHR1cCwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCQkJCSAgIFRy YW5zYWN0aW9uSWQgKmRlYWRfYWZ0ZXIpOwogZXh0ZXJuIHZvaWQgSGVhcFR1cGxlU2V0SGludEJp dHMoSGVhcFR1cGxlSGVhZGVyIHR1cGxlLCBCdWZmZXIgYnVmZmVyLAotLSAKMi40My4wCgo= --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0017-Inline-TransactionIdFollows-Precedes.patch" Content-Disposition: attachment; filename="v7-0017-Inline-TransactionIdFollows-Precedes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84cs16 RnJvbSAzNjRlN2I3MWJiYmUwYjJlNTk1NmFjYmMzM2JlYTRmZThkMWIzOTc5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDA5OjU3OjEzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAxNy8yMl0gSW5saW5lIFRyYW5zYWN0aW9uSWRGb2xsb3dzL1ByZWNlZGVzKCkKCkNh bGxpbmcgdGhlc2UgZnJvbSBvbi1hY2Nlc3MgcHJ1bmluZyBjb2RlIGhhZCBub3RpY2VhYmxlIG92 ZXJoZWFkIGluIGEKcHJvZmlsZS4gVGhlcmUgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHJlYXNvbiBu b3QgdG8gaW5saW5lIHRoZW0uCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHJhbnNh bS5jIHwgNjQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL3Ry YW5zYW0uaCAgICAgICAgIHwgNzAgKysrKysrKysrKysrKysrKysrKysrKysrKystLQogMiBmaWxl cyBjaGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspLCA2OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90cmFuc2FtLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS90cmFuc2FtLmMKaW5kZXggOWEzOTQ1MWEyOWEuLjU1M2Q2NzU2Y2IzIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90cmFuc2FtLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vdHJhbnNhbS5jCkBAIC0yNzMsNzAgKzI3Myw2IEBAIFRyYW5z YWN0aW9uSWRBYm9ydFRyZWUoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBueGlkcywgVHJhbnNhY3Rp b25JZCAqeGlkcykKIAkJCQkJCQkgICBUUkFOU0FDVElPTl9TVEFUVVNfQUJPUlRFRCwgSW52YWxp ZFhMb2dSZWNQdHIpOwogfQogCi0vKgotICogVHJhbnNhY3Rpb25JZFByZWNlZGVzIC0tLSBpcyBp ZDEgbG9naWNhbGx5IDwgaWQyPwotICovCi1ib29sCi1UcmFuc2FjdGlvbklkUHJlY2VkZXMoVHJh bnNhY3Rpb25JZCBpZDEsIFRyYW5zYWN0aW9uSWQgaWQyKQotewotCS8qCi0JICogSWYgZWl0aGVy IElEIGlzIGEgcGVybWFuZW50IFhJRCB0aGVuIHdlIGNhbiBqdXN0IGRvIHVuc2lnbmVkCi0JICog Y29tcGFyaXNvbi4gIElmIGJvdGggYXJlIG5vcm1hbCwgZG8gYSBtb2R1bG8tMl4zMiBjb21wYXJp c29uLgotCSAqLwotCWludDMyCQlkaWZmOwotCi0JaWYgKCFUcmFuc2FjdGlvbklkSXNOb3JtYWwo aWQxKSB8fCAhVHJhbnNhY3Rpb25JZElzTm9ybWFsKGlkMikpCi0JCXJldHVybiAoaWQxIDwgaWQy KTsKLQotCWRpZmYgPSAoaW50MzIpIChpZDEgLSBpZDIpOwotCXJldHVybiAoZGlmZiA8IDApOwot fQotCi0vKgotICogVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMgLS0tIGlzIGlkMSBsb2dp Y2FsbHkgPD0gaWQyPwotICovCi1ib29sCi1UcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhU cmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCi17Ci0JaW50MzIJCWRpZmY7Ci0K LQlpZiAoIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNOb3Jt YWwoaWQyKSkKLQkJcmV0dXJuIChpZDEgPD0gaWQyKTsKLQotCWRpZmYgPSAoaW50MzIpIChpZDEg LSBpZDIpOwotCXJldHVybiAoZGlmZiA8PSAwKTsKLX0KLQotLyoKLSAqIFRyYW5zYWN0aW9uSWRG b2xsb3dzIC0tLSBpcyBpZDEgbG9naWNhbGx5ID4gaWQyPwotICovCi1ib29sCi1UcmFuc2FjdGlv bklkRm9sbG93cyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCi17Ci0JaW50 MzIJCWRpZmY7Ci0KLQlpZiAoIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2Fj dGlvbklkSXNOb3JtYWwoaWQyKSkKLQkJcmV0dXJuIChpZDEgPiBpZDIpOwotCi0JZGlmZiA9IChp bnQzMikgKGlkMSAtIGlkMik7Ci0JcmV0dXJuIChkaWZmID4gMCk7Ci19Ci0KLS8qCi0gKiBUcmFu c2FjdGlvbklkRm9sbG93c09yRXF1YWxzIC0tLSBpcyBpZDEgbG9naWNhbGx5ID49IGlkMj8KLSAq LwotYm9vbAotVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhUcmFuc2FjdGlvbklkIGlkMSwg VHJhbnNhY3Rpb25JZCBpZDIpCi17Ci0JaW50MzIJCWRpZmY7Ci0KLQlpZiAoIVRyYW5zYWN0aW9u SWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNOb3JtYWwoaWQyKSkKLQkJcmV0dXJu IChpZDEgPj0gaWQyKTsKLQotCWRpZmYgPSAoaW50MzIpIChpZDEgLSBpZDIpOwotCXJldHVybiAo ZGlmZiA+PSAwKTsKLX0KLQogCiAvKgogICogVHJhbnNhY3Rpb25JZExhdGVzdCAtLS0gZ2V0IGxh dGVzdCBYSUQgYW1vbmcgYSBtYWluIHhhY3QgYW5kIGl0cyBjaGlsZHJlbgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2Ft LmgKaW5kZXggN2Q4MmNkMmViNTYuLmM5ZTIwNDE4Mjc1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvdHJhbnNhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKQEAg LTI1NSw2ICsyNTUsNzIgQEAgdHlwZWRlZiBzdHJ1Y3QgVHJhbnNhbVZhcmlhYmxlc0RhdGEKIH0g VHJhbnNhbVZhcmlhYmxlc0RhdGE7CiAKIAorCisvKgorICogVHJhbnNhY3Rpb25JZFByZWNlZGVz IC0tLSBpcyBpZDEgbG9naWNhbGx5IDwgaWQyPworICovCitzdGF0aWMgaW5saW5lIGJvb2wKK1Ry YW5zYWN0aW9uSWRQcmVjZWRlcyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIp Cit7CisJLyoKKwkgKiBJZiBlaXRoZXIgSUQgaXMgYSBwZXJtYW5lbnQgWElEIHRoZW4gd2UgY2Fu IGp1c3QgZG8gdW5zaWduZWQKKwkgKiBjb21wYXJpc29uLiAgSWYgYm90aCBhcmUgbm9ybWFsLCBk byBhIG1vZHVsby0yXjMyIGNvbXBhcmlzb24uCisJICovCisJaW50MzIJCWRpZmY7CisKKwlpZiAo IVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNOb3JtYWwoaWQy KSkKKwkJcmV0dXJuIChpZDEgPCBpZDIpOworCisJZGlmZiA9IChpbnQzMikgKGlkMSAtIGlkMik7 CisJcmV0dXJuIChkaWZmIDwgMCk7Cit9CisKKy8qCisgKiBUcmFuc2FjdGlvbklkUHJlY2VkZXNP ckVxdWFscyAtLS0gaXMgaWQxIGxvZ2ljYWxseSA8PSBpZDI/CisgKi8KK3N0YXRpYyBpbmxpbmUg Ym9vbAorVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMoVHJhbnNhY3Rpb25JZCBpZDEsIFRy YW5zYWN0aW9uSWQgaWQyKQoreworCWludDMyCQlkaWZmOworCisJaWYgKCFUcmFuc2FjdGlvbklk SXNOb3JtYWwoaWQxKSB8fCAhVHJhbnNhY3Rpb25JZElzTm9ybWFsKGlkMikpCisJCXJldHVybiAo aWQxIDw9IGlkMik7CisKKwlkaWZmID0gKGludDMyKSAoaWQxIC0gaWQyKTsKKwlyZXR1cm4gKGRp ZmYgPD0gMCk7Cit9CisKKy8qCisgKiBUcmFuc2FjdGlvbklkRm9sbG93cyAtLS0gaXMgaWQxIGxv Z2ljYWxseSA+IGlkMj8KKyAqLworc3RhdGljIGlubGluZSBib29sCitUcmFuc2FjdGlvbklkRm9s bG93cyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCit7CisJaW50MzIJCWRp ZmY7CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklk SXNOb3JtYWwoaWQyKSkKKwkJcmV0dXJuIChpZDEgPiBpZDIpOworCisJZGlmZiA9IChpbnQzMikg KGlkMSAtIGlkMik7CisJcmV0dXJuIChkaWZmID4gMCk7Cit9CisKKy8qCisgKiBUcmFuc2FjdGlv bklkRm9sbG93c09yRXF1YWxzIC0tLSBpcyBpZDEgbG9naWNhbGx5ID49IGlkMj8KKyAqLworc3Rh dGljIGlubGluZSBib29sCitUcmFuc2FjdGlvbklkRm9sbG93c09yRXF1YWxzKFRyYW5zYWN0aW9u SWQgaWQxLCBUcmFuc2FjdGlvbklkIGlkMikKK3sKKwlpbnQzMgkJZGlmZjsKKworCWlmICghVHJh bnNhY3Rpb25JZElzTm9ybWFsKGlkMSkgfHwgIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDIpKQor CQlyZXR1cm4gKGlkMSA+PSBpZDIpOworCisJZGlmZiA9IChpbnQzMikgKGlkMSAtIGlkMik7CisJ cmV0dXJuIChkaWZmID49IDApOworfQorCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlleHRl cm4gZGVjbGFyYXRpb25zCiAgKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC0yNzQsMTAgKzM0MCw2IEBA IGV4dGVybiBib29sIFRyYW5zYWN0aW9uSWREaWRBYm9ydChUcmFuc2FjdGlvbklkIHRyYW5zYWN0 aW9uSWQpOwogZXh0ZXJuIHZvaWQgVHJhbnNhY3Rpb25JZENvbW1pdFRyZWUoVHJhbnNhY3Rpb25J ZCB4aWQsIGludCBueGlkcywgVHJhbnNhY3Rpb25JZCAqeGlkcyk7CiBleHRlcm4gdm9pZCBUcmFu c2FjdGlvbklkQXN5bmNDb21taXRUcmVlKFRyYW5zYWN0aW9uSWQgeGlkLCBpbnQgbnhpZHMsIFRy YW5zYWN0aW9uSWQgKnhpZHMsIFhMb2dSZWNQdHIgbHNuKTsKIGV4dGVybiB2b2lkIFRyYW5zYWN0 aW9uSWRBYm9ydFRyZWUoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBueGlkcywgVHJhbnNhY3Rpb25J ZCAqeGlkcyk7Ci1leHRlcm4gYm9vbCBUcmFuc2FjdGlvbklkUHJlY2VkZXMoVHJhbnNhY3Rpb25J ZCBpZDEsIFRyYW5zYWN0aW9uSWQgaWQyKTsKLWV4dGVybiBib29sIFRyYW5zYWN0aW9uSWRQcmVj ZWRlc09yRXF1YWxzKFRyYW5zYWN0aW9uSWQgaWQxLCBUcmFuc2FjdGlvbklkIGlkMik7Ci1leHRl cm4gYm9vbCBUcmFuc2FjdGlvbklkRm9sbG93cyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rp b25JZCBpZDIpOwotZXh0ZXJuIGJvb2wgVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhUcmFu c2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpOwogZXh0ZXJuIFRyYW5zYWN0aW9uSWQg VHJhbnNhY3Rpb25JZExhdGVzdChUcmFuc2FjdGlvbklkIG1haW54aWQsCiAJCQkJCQkJCQkJIGlu dCBueGlkcywgY29uc3QgVHJhbnNhY3Rpb25JZCAqeGlkcyk7CiBleHRlcm4gWExvZ1JlY1B0ciBU cmFuc2FjdGlvbklkR2V0Q29tbWl0TFNOKFRyYW5zYWN0aW9uSWQgeGlkKTsKLS0gCjIuNDMuMAoK --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0019-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v7-0019-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84cy18 RnJvbSA1NTQ5NGYzMTM1NTM0Njk1OTUzY2UwMzE4M2Y1NmZmMzMxYjNlMjZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM0OjMwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAxOS8yMl0gQWxsb3cgb24tYWNjZXNzIHBydW5pbmcgdG8gc2V0IHBhZ2VzIGFsbC12 aXNpYmxlCgpNYW55IHF1ZXJpZXMgZG8gbm90IG1vZGlmeSB0aGUgdW5kZXJseWluZyByZWxhdGlv bi4gRm9yIHN1Y2ggcXVlcmllcywgaWYKb24tYWNjZXNzIHBydW5pbmcgb2NjdXJzIGR1cmluZyB0 aGUgc2Nhbiwgd2UgY2FuIGNoZWNrIHdoZXRoZXIgdGhlIHBhZ2UKaGFzIGJlY29tZSBhbGwtdmlz aWJsZSBhbmQgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCBhY2NvcmRpbmdseS4KUHJldmlvdXNs eSwgb25seSB2YWN1dW0gbWFya2VkIHBhZ2VzIGFzIGFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4u CgpTdXBwb3J0aW5nIHRoaXMgcmVxdWlyZXMgcGFzc2luZyBpbmZvcm1hdGlvbiBhYm91dCB3aGV0 aGVyIHRoZSByZWxhdGlvbgppcyBtb2RpZmllZCBmcm9tIHRoZSBleGVjdXRvciBkb3duIHRvIHRo ZSBzY2FuIGRlc2NyaXB0b3IuCgpUaGlzIGNvbW1pdCBpbXBsZW1lbnRzIG9uLWFjY2VzcyBWTSBz ZXR0aW5nIGZvciBzZXF1ZW50aWFsIHNjYW5zIGFzIHdlbGwKYXMgZm9yIHRoZSB1bmRlcmx5aW5n IGhlYXAgcmVsYXRpb24gaW4gaW5kZXggc2NhbnMgYW5kIGJpdG1hcCBoZWFwCnNjYW5zLgotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8IDE1ICsrKyst CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAgfCAxNSArKysr LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICAgICAgIHwgNjMgKysr KysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYyAgICAg ICAgICAgIHwgNDYgKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJs ZWFtLmMgICAgICAgICAgICB8IDM5ICsrKysrKysrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgIDQgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNVdGlscy5jICAgICAgICAgICAgICB8ICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVC aXRtYXBIZWFwc2Nhbi5jICAgICB8ICA3ICsrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu ZGV4c2Nhbi5jICAgICAgICAgIHwgMTggKysrKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U2Vxc2Nhbi5jICAgICAgICAgICAgfCAyNCArKysrKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2Vu YW0uaCAgICAgICAgICAgICAgICAgICAgfCAxMSArKysrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVh cGFtLmggICAgICAgICAgICAgICAgICAgfCAyNCArKysrKystCiBzcmMvaW5jbHVkZS9hY2Nlc3Mv cmVsc2Nhbi5oICAgICAgICAgICAgICAgICAgfCAgNiArKwogc3JjL2luY2x1ZGUvYWNjZXNzL3Rh YmxlYW0uaCAgICAgICAgICAgICAgICAgIHwgMzAgKysrKysrKystCiBzcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgNiArKwogLi4uL3QvMDM1X3N0YW5kYnlf bG9naWNhbF9kZWNvZGluZy5wbCAgICAgICAgIHwgIDQgKy0KIDE2IGZpbGVzIGNoYW5nZWQsIDI3 NiBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5j CmluZGV4IDA2MGExNjZlMThmLi44YThiNjNiNzlmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt LmMKQEAgLTU1Niw2ICs1NTYsNyBAQCBoZWFwX3ByZXBhcmVfcGFnZXNjYW4oVGFibGVTY2FuRGVz YyBzc2NhbikKIAlCdWZmZXIJCWJ1ZmZlciA9IHNjYW4tPnJzX2NidWY7CiAJQmxvY2tOdW1iZXIg YmxvY2sgPSBzY2FuLT5yc19jYmxvY2s7CiAJU25hcHNob3QJc25hcHNob3Q7CisJQnVmZmVyCSAg ICp2bWJ1ZmZlciA9IE5VTEw7CiAJUGFnZQkJcGFnZTsKIAlpbnQJCQlsaW5lczsKIAlib29sCQlh bGxfdmlzaWJsZTsKQEAgLTU3MCw3ICs1NzEsOSBAQCBoZWFwX3ByZXBhcmVfcGFnZXNjYW4oVGFi bGVTY2FuRGVzYyBzc2NhbikKIAkvKgogCSAqIFBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlv biBmb3IgdGhlIHdob2xlIHBhZ2UsIGlmIHBvc3NpYmxlLgogCSAqLwotCWhlYXBfcGFnZV9wcnVu ZV9vcHQoc2Nhbi0+cnNfYmFzZS5yc19yZCwgYnVmZmVyKTsKKwlpZiAoc3NjYW4tPnJzX2ZsYWdz ICYgU09fQUxMT1dfVk1fU0VUKQorCQl2bWJ1ZmZlciA9ICZzY2FuLT5yc192bWJ1ZmZlcjsKKwlo ZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX2Jhc2UucnNfcmQsIGJ1ZmZlciwgdm1idWZmZXIp OwogCiAJLyoKIAkgKiBXZSBtdXN0IGhvbGQgc2hhcmUgbG9jayBvbiB0aGUgYnVmZmVyIGNvbnRl bnQgd2hpbGUgZXhhbWluaW5nIHR1cGxlCkBAIC0xMjQ3LDYgKzEyNTAsNyBAQCBoZWFwX2JlZ2lu c2NhbihSZWxhdGlvbiByZWxhdGlvbiwgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkJCQkJCQkJ CSAgc2l6ZW9mKFRCTUl0ZXJhdGVSZXN1bHQpKTsKIAl9CiAKKwlzY2FuLT5yc192bWJ1ZmZlciA9 IEludmFsaWRCdWZmZXI7CiAKIAlyZXR1cm4gKFRhYmxlU2NhbkRlc2MpIHNjYW47CiB9CkBAIC0x Mjg1LDYgKzEyODksMTIgQEAgaGVhcF9yZXNjYW4oVGFibGVTY2FuRGVzYyBzc2NhbiwgU2Nhbktl eSBrZXksIGJvb2wgc2V0X3BhcmFtcywKIAkJc2Nhbi0+cnNfY2J1ZiA9IEludmFsaWRCdWZmZXI7 CiAJfQogCisJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNfdm1idWZmZXIpKQorCXsKKwkJUmVs ZWFzZUJ1ZmZlcihzY2FuLT5yc192bWJ1ZmZlcik7CisJCXNjYW4tPnJzX3ZtYnVmZmVyID0gSW52 YWxpZEJ1ZmZlcjsKKwl9CisKIAkvKgogCSAqIFNPX1RZUEVfQklUTUFQU0NBTiB3b3VsZCBiZSBj bGVhbmVkIHVwIGhlcmUsIGJ1dCBpdCBkb2VzIG5vdCBob2xkIGFueQogCSAqIGFkZGl0aW9uYWwg ZGF0YSB2cyBhIG5vcm1hbCBIZWFwU2NhbgpAQCAtMTMxNyw2ICsxMzI3LDkgQEAgaGVhcF9lbmRz Y2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNfY2J1 ZikpCiAJCVJlbGVhc2VCdWZmZXIoc2Nhbi0+cnNfY2J1Zik7CiAKKwlpZiAoQnVmZmVySXNWYWxp ZChzY2FuLT5yc192bWJ1ZmZlcikpCisJCVJlbGVhc2VCdWZmZXIoc2Nhbi0+cnNfdm1idWZmZXIp OworCiAJLyoKIAkgKiBNdXN0IGZyZWUgdGhlIHJlYWQgc3RyZWFtIGJlZm9yZSBmcmVlaW5nIHRo ZSBCdWZmZXJBY2Nlc3NTdHJhdGVneS4KIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1faGFuZGxlci5jCmluZGV4IGNiNGJjMzVjOTNlLi5jNjgyODNkZTZmMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC04NSw2ICs4NSw3IEBAIGhlYXBhbV9p bmRleF9mZXRjaF9iZWdpbihSZWxhdGlvbiByZWwpCiAKIAloc2Nhbi0+eHNfYmFzZS5yZWwgPSBy ZWw7CiAJaHNjYW4tPnhzX2NidWYgPSBJbnZhbGlkQnVmZmVyOworCWhzY2FuLT54c192bWJ1ZmZl ciA9IEludmFsaWRCdWZmZXI7CiAKIAlyZXR1cm4gJmhzY2FuLT54c19iYXNlOwogfQpAQCAtOTks NiArMTAwLDEyIEBAIGhlYXBhbV9pbmRleF9mZXRjaF9yZXNldChJbmRleEZldGNoVGFibGVEYXRh ICpzY2FuKQogCQlSZWxlYXNlQnVmZmVyKGhzY2FuLT54c19jYnVmKTsKIAkJaHNjYW4tPnhzX2Ni dWYgPSBJbnZhbGlkQnVmZmVyOwogCX0KKworCWlmIChCdWZmZXJJc1ZhbGlkKGhzY2FuLT54c192 bWJ1ZmZlcikpCisJeworCQlSZWxlYXNlQnVmZmVyKGhzY2FuLT54c192bWJ1ZmZlcik7CisJCWhz Y2FuLT54c192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJfQogfQogCiBzdGF0aWMgdm9pZApA QCAtMTM4LDcgKzE0NSw4IEBAIGhlYXBhbV9pbmRleF9mZXRjaF90dXBsZShzdHJ1Y3QgSW5kZXhG ZXRjaFRhYmxlRGF0YSAqc2NhbiwKIAkJICogUHJ1bmUgcGFnZSwgYnV0IG9ubHkgaWYgd2Ugd2Vy ZW4ndCBhbHJlYWR5IG9uIHRoaXMgcGFnZQogCQkgKi8KIAkJaWYgKHByZXZfYnVmICE9IGhzY2Fu LT54c19jYnVmKQotCQkJaGVhcF9wYWdlX3BydW5lX29wdChoc2Nhbi0+eHNfYmFzZS5yZWwsIGhz Y2FuLT54c19jYnVmKTsKKwkJCWhlYXBfcGFnZV9wcnVuZV9vcHQoaHNjYW4tPnhzX2Jhc2UucmVs LCBoc2Nhbi0+eHNfY2J1ZiwKKwkJCQkJCQkJc2Nhbi0+bW9kaWZpZXNfYmFzZV9yZWwgPyBOVUxM IDogJmhzY2FuLT54c192bWJ1ZmZlcik7CiAJfQogCiAJLyogT2J0YWluIHNoYXJlLWxvY2sgb24g dGhlIGJ1ZmZlciBzbyB3ZSBjYW4gZXhhbWluZSB2aXNpYmlsaXR5ICovCkBAIC0yNDcxLDYgKzI0 NzksNyBAQCBCaXRtYXBIZWFwU2Nhbk5leHRCbG9jayhUYWJsZVNjYW5EZXNjIHNjYW4sCiAJVEJN SXRlcmF0ZVJlc3VsdCAqdGJtcmVzOwogCU9mZnNldE51bWJlciBvZmZzZXRzW1RCTV9NQVhfVFVQ TEVTX1BFUl9QQUdFXTsKIAlpbnQJCQlub2Zmc2V0cyA9IC0xOworCUJ1ZmZlcgkgICAqdm1idWZm ZXIgPSBOVUxMOwogCiAJQXNzZXJ0KHNjYW4tPnJzX2ZsYWdzICYgU09fVFlQRV9CSVRNQVBTQ0FO KTsKIAlBc3NlcnQoaHNjYW4tPnJzX3JlYWRfc3RyZWFtKTsKQEAgLTI1MTcsNyArMjUyNiw5IEBA IEJpdG1hcEhlYXBTY2FuTmV4dEJsb2NrKFRhYmxlU2NhbkRlc2Mgc2NhbiwKIAkvKgogCSAqIFBy dW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBmb3IgdGhlIHdob2xlIHBhZ2UsIGlmIHBvc3Np YmxlLgogCSAqLwotCWhlYXBfcGFnZV9wcnVuZV9vcHQoc2Nhbi0+cnNfcmQsIGJ1ZmZlcik7CisJ aWYgKHNjYW4tPnJzX2ZsYWdzICYgU09fQUxMT1dfVk1fU0VUKQorCQl2bWJ1ZmZlciA9ICZoc2Nh bi0+cnNfdm1idWZmZXI7CisJaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19yZCwgYnVmZmVy LCB2bWJ1ZmZlcik7CiAKIAkvKgogCSAqIFdlIG11c3QgaG9sZCBzaGFyZSBsb2NrIG9uIHRoZSBi dWZmZXIgY29udGVudCB3aGlsZSBleGFtaW5pbmcgdHVwbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMKaW5kZXggODBkMDU1ZTUzNzYuLmRhZDM0MWNiMjY1IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYwpAQCAtMTk4LDkgKzE5OCwxMyBAQCBzdGF0aWMgYm9vbCBpZGVudGlm eV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsYXRpb24sCiAgKiBpZiB0aGVyZSdz IG5vdCBhbnkgdXNlIGluIHBydW5pbmcuCiAgKgogICogQ2FsbGVyIG11c3QgaGF2ZSBwaW4gb24g dGhlIGJ1ZmZlciwgYW5kIG11c3QgKm5vdCogaGF2ZSBhIGxvY2sgb24gaXQuCisgKgorICogSWYg dm1idWZmZXIgaXMgbm90IE5VTEwsIGl0IGlzIG9rYXkgZm9yIHBydW5pbmcgdG8gc2V0IHRoZSB2 aXNpYmlsaXR5IG1hcCBpZgorICogdGhlIHBhZ2UgaXMgYWxsIHZpc2libGUuIFdlIHdpbGwgdGFr ZSBjYXJlIG9mIHBpbm5pbmcgYW5kLCBpZiBuZWVkZWQsCisgKiByZWFkaW5nIGluIHRoZSBwYWdl IG9mIHRoZSB2aXNpYmlsaXR5IG1hcC4KICAqLwogdm9pZAotaGVhcF9wYWdlX3BydW5lX29wdChS ZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikKK2hlYXBfcGFnZV9wcnVuZV9vcHQoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsIEJ1ZmZlciAqdm1idWZmZXIpCiB7CiAJUGFn ZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlUcmFuc2FjdGlvbklkIHBydW5lX3hp ZDsKQEAgLTI2NCw2ICsyNjgsMTMgQEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlcikKIAkJewogCQkJT2Zmc2V0TnVtYmVyIGR1bW15X29mZl9sb2M7 CiAJCQlQcnVuZUZyZWV6ZVJlc3VsdCBwcmVzdWx0OworCQkJaW50CQkJb3B0aW9ucyA9IDA7CisK KwkJCWlmICh2bWJ1ZmZlcikKKwkJCXsKKwkJCQl2aXNpYmlsaXR5bWFwX3BpbihyZWxhdGlvbiwg QnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSwgdm1idWZmZXIpOworCQkJCW9wdGlvbnMgPSBI RUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNOworCQkJfQogCiAJCQkvKgogCQkJICogRm9yIG5vdywg cGFzcyBtYXJrX3VudXNlZF9ub3cgYXMgZmFsc2UgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yCkBA IC0yNzEsOSArMjgyLDEwIEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24s IEJ1ZmZlciBidWZmZXIpCiAJCQkgKiB0aGF0IGR1cmluZyBvbi1hY2Nlc3MgcHJ1bmluZyB3aXRo IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLgogCQkJICovCiAJCQloZWFwX3BhZ2VfcHJ1bmVf YW5kX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLCBmYWxzZSwKLQkJCQkJCQkJCSAgIEludmFsaWRC dWZmZXIsCi0JCQkJCQkJCQkgICB2aXN0ZXN0LCAwLAotCQkJCQkJCQkJICAgTlVMTCwgJnByZXN1 bHQsIFBSVU5FX09OX0FDQ0VTUywgJmR1bW15X29mZl9sb2MsIE5VTEwsIE5VTEwpOworCQkJCQkJ CQkJICAgdm1idWZmZXIgPyAqdm1idWZmZXIgOiBJbnZhbGlkQnVmZmVyLAorCQkJCQkJCQkJICAg dmlzdGVzdCwgb3B0aW9ucywKKwkJCQkJCQkJCSAgIE5VTEwsICZwcmVzdWx0LCBQUlVORV9PTl9B Q0NFU1MsCisJCQkJCQkJCQkgICAmZHVtbXlfb2ZmX2xvYywgTlVMTCwgTlVMTCk7CiAKIAkJCS8q CiAJCQkgKiBSZXBvcnQgdGhlIG51bWJlciBvZiB0dXBsZXMgcmVjbGFpbWVkIHRvIHBnc3RhdHMu ICBUaGlzIGlzCkBAIC01MTMsMTIgKzUyNSwxNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkgKiBhbGwtZnJvemVuIGZvciB1 c2UgaW4gb3Bwb3J0dW5pc3RpYyBmcmVlemluZyBhbmQgdG8gdXBkYXRlIHRoZSBWTSBpZgogCSAq IHRoZSBjYWxsZXIgcmVxdWVzdHMgaXQuCiAJICoKLQkgKiBDdXJyZW50bHksIG9ubHkgVkFDVVVN IGF0dGVtcHRzIGZyZWV6aW5nIGFuZCBzZXR0aW5nIHRoZSBWTSBiaXRzLiBCdXQKLQkgKiBvdGhl ciBjYWxsZXJzIGNvdWxkIGRvIGVpdGhlciBvbmUuIFRoZSB2aXNpYmlsaXR5IGJvb2trZWVwaW5n IGlzCi0JICogcmVxdWlyZWQgZm9yIG9wcG9ydHVuaXN0aWMgZnJlZXppbmcgKGluIGFkZGl0aW9u IHRvIHNldHRpbmcgdGhlIFZNCi0JICogYml0cykgYmVjYXVzZSB3ZSBvbmx5IGNvbnNpZGVyIG9w cG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5nIHR1cGxlcyBpZiB0aGUKLQkgKiB3aG9sZSBwYWdlIHdv dWxkIGJlY29tZSBhbGwtZnJvemVuIG9yIGlmIHRoZSB3aG9sZSBwYWdlIHdpbGwgYmUgZnJvemVu Ci0JICogZXhjZXB0IGZvciBkZWFkIHR1cGxlcyB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBieSB2YWN1 dW0uCisJICogQ3VycmVudGx5LCBvbmx5IFZBQ1VVTSBhdHRlbXB0cyBmcmVlemluZy4gQnV0IG90 aGVyIGNhbGxlcnMgY291bGQuIFRoZQorCSAqIHZpc2liaWxpdHkgYm9va2tlZXBpbmcgaXMgcmVx dWlyZWQgZm9yIG9wcG9ydHVuaXN0aWMgZnJlZXppbmcgKGluCisJICogYWRkaXRpb24gdG8gc2V0 dGluZyB0aGUgVk0gYml0cykgYmVjYXVzZSB3ZSBvbmx5IGNvbnNpZGVyCisJICogb3Bwb3J0dW5p c3RpY2FsbHkgZnJlZXppbmcgdHVwbGVzIGlmIHRoZSB3aG9sZSBwYWdlIHdvdWxkIGJlY29tZQor CSAqIGFsbC1mcm96ZW4gb3IgaWYgdGhlIHdob2xlIHBhZ2Ugd2lsbCBiZSBmcm96ZW4gZXhjZXB0 IGZvciBkZWFkIHR1cGxlcworCSAqIHRoYXQgd2lsbCBiZSByZW1vdmVkIGJ5IHZhY3V1bS4gQnV0 IGlmIGNvbnNpZGVyX3VwZGF0ZV92bSBpcyBmYWxzZSwKKwkgKiB3ZSdsbCBub3Qgc2V0IHRoZSBW TSBldmVuIGlmIHRoZSBwYWdlIGlzIGRpc2NvdmVyZWQgdG8gYmUgYWxsLXZpc2libGUuCisJICoK KwkgKiBJZiBvbmx5IEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0gaXMgcGFzc2VkIGFuZCBub3QK KwkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFLCBwcnN0YXRlLmFsbF9mcm96ZW4gbXVzdCBiZSBp bml0aWFsaXplZCB0byBmYWxzZQorCSAqIGJlY2F1c2Ugd2Ugd2lsbCBub3QgY2FsbCBoZWFwX3By ZXBhcmVfZnJlZXplX3R1cGxlKCkgb24gZWFjaCB0dXBsZS4KIAkgKgogCSAqIElmIG9ubHkgdXBk YXRpbmcgdGhlIFZNLCB3ZSBtdXN0IGluaXRpYWxpemUgYWxsX2Zyb3plbiB0byBmYWxzZSwgYXMK IAkgKiBoZWFwX3ByZXBhcmVfZnJlZXplX3R1cGxlKCkgd2lsbCBub3QgYmUgY2FsbGVkIGZvciBl YWNoIHR1cGxlIG9uIHRoZQpAQCAtNTMwLDcgKzU0Nyw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIHdoZXRoZXIgb3Ig bm90IHRvIGZyZWV6ZSBidXQgYmVmb3JlIGRlY2lkaW5nIHdoZXRoZXIgb3Igbm90IHRvIHVwZGF0 ZQogCSAqIHRoZSBWTSBzbyB0aGF0IHdlIGRvbid0IHNldCB0aGUgVk0gYml0IGluY29ycmVjdGx5 LgogCSAqCi0JICogSWYgbm90IGZyZWV6aW5nIG9yIHVwZGF0aW5nIHRoZSBWTSwgd2Ugb3RoZXJ3 aXNlIGF2b2lkIHRoZSBleHRyYQorCSAqIElmIG5vdCBmcmVlemluZyBhbmQgbm90IHVwZGF0aW5n IHRoZSBWTSwgd2UgYXZvaWQgdGhlIGV4dHJhCiAJICogYm9va2tlZXBpbmcuIEluaXRpYWxpemlu ZyBhbGxfdmlzaWJsZSB0byBmYWxzZSBhbGxvd3Mgc2tpcHBpbmcgdGhlIHdvcmsKIAkgKiB0byB1 cGRhdGUgdGhlbSBpbiBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKCkuCiAJ ICovCkBAIC04NzksMTIgKzg5NiwzMCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxh dGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFs c2U7CiAJfQogCisJLyoKKwkgKiBJZiB0aGlzIGlzIGFuIG9uLWFjY2VzcyBjYWxsIGFuZCB3ZSdy ZSBub3QgYWN0dWFsbHkgcHJ1bmluZywgYXZvaWQKKwkgKiBzZXR0aW5nIHRoZSB2aXNpYmlsaXR5 IG1hcCBpZiBpdCB3b3VsZCBuZXdseSBkaXJ0eSB0aGUgaGVhcCBwYWdlIG9yLCBpZgorCSAqIHRo ZSBwYWdlIGlzIGFscmVhZHkgZGlydHksIGlmIGRvaW5nIHNvIHdvdWxkIHJlcXVpcmUgaW5jbHVk aW5nIGEKKwkgKiBmdWxsLXBhZ2UgaW1hZ2UgKEZQSSkgb2YgdGhlIGhlYXAgcGFnZSBpbiB0aGUg V0FMLiBUaGlzIHNpdHVhdGlvbgorCSAqIHNob3VsZCBiZSByYXJlLCBhcyBvbi1hY2Nlc3MgcHJ1 bmluZyBpcyBvbmx5IGF0dGVtcHRlZCB3aGVuCisJICogcGRfcHJ1bmVfeGlkIGlzIHZhbGlkLgor CSAqLworCWlmIChyZWFzb24gPT0gUFJVTkVfT05fQUNDRVNTICYmCisJCXByc3RhdGUuY29uc2lk ZXJfdXBkYXRlX3ZtICYmCisJCXByc3RhdGUuYWxsX3Zpc2libGUgJiYKKwkJIWRvX3BydW5lICYm ICFkb19mcmVlemUgJiYKKwkJKCFCdWZmZXJJc0RpcnR5KGJ1ZmZlcikgfHwgWExvZ0NoZWNrQnVm ZmVyTmVlZHNCYWNrdXAoYnVmZmVyKSkpCisJeworCQlwcnN0YXRlLmNvbnNpZGVyX3VwZGF0ZV92 bSA9IGZhbHNlOworCQlwcnN0YXRlLmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfZnJvemVuID0g ZmFsc2U7CisJfQorCiAJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgcHJzdGF0ZS5hbGxf dmlzaWJsZSk7CiAKIAkvKgotCSAqIEhhbmRsZSBzZXR0aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBi YXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSAoYXMKLQkgKiBvZiBsYXN0IGhlYXBfdmFj X3NjYW5fbmV4dF9ibG9jaygpIGNhbGwpLCBhbmQgZnJvbSBhbGxfdmlzaWJsZSBhbmQKLQkgKiBh bGxfZnJvemVuIHZhcmlhYmxlcy4KKwkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBi aXQgYmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gKGlmCisJICogcHJvdmlkZWQsIGUu Zy4gYnkgdmFjdXVtIGZyb20gdGhlIGxhc3QgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkKKwkg KiBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gdmFyaWFibGVzLgog CSAqLwogCWlmIChwcnN0YXRlLmNvbnNpZGVyX3VwZGF0ZV92bSkKIAl7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2lu ZGV4L2luZGV4YW0uYwppbmRleCA4NmQxMWY0ZWM3OS4uNDYwM2VjZTA5YmQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2luZGV4L2luZGV4YW0uYwpAQCAtMjg5LDYgKzI4OSwzMiBAQCBpbmRleF9iZWdpbnNjYW4o UmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCXJldHVybiBzY2FuOwogfQogCisvKgorICogU2ltaWxh ciB0byBpbmRleF9iZWdpbnNjYW4oKSwgYnV0IGFsbG93cyB0aGUgY2FsbGVyIHRvIGluZGljYXRl IHdoZXRoZXIgdGhlCisgKiBxdWVyeSBtb2RpZmllcyB0aGUgdW5kZXJseWluZyBiYXNlIHJlbGF0 aW9uLiBUaGlzIGlzIHVzZWQgd2hlbiB0aGUgY2FsbGVyCisgKiB3YW50cyB0byBhdHRlbXB0IG1h cmtpbmcgcGFnZXMgaW4gdGhlIGJhc2UgcmVsYXRpb24gYXMgYWxsLXZpc2libGUgaW4gdGhlCisg KiB2aXNpYmlsaXR5IG1hcCBkdXJpbmcgb24tYWNjZXNzIHBydW5pbmcuCisgKi8KK0luZGV4U2Nh bkRlc2MKK2luZGV4X2JlZ2luc2Nhbl92bXNldChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCisJCQkJ CSAgUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKKwkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJ CQkJICBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCisJCQkJCSAgaW50IG5r ZXlzLCBpbnQgbm9yZGVyYnlzLCBib29sIG1vZGlmaWVzX2Jhc2VfcmVsKQoreworCUluZGV4U2Nh bkRlc2Mgc2NhbjsKKworCXNjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcFJlbGF0aW9uLAorCQkJ CQkJICAgaW5kZXhSZWxhdGlvbiwKKwkJCQkJCSAgIHNuYXBzaG90LAorCQkJCQkJICAgaW5zdHJ1 bWVudCwKKwkJCQkJCSAgIG5rZXlzLCBub3JkZXJieXMpOworCisJc2Nhbi0+eHNfaGVhcGZldGNo LT5tb2RpZmllc19iYXNlX3JlbCA9IG1vZGlmaWVzX2Jhc2VfcmVsOworCisJcmV0dXJuIHNjYW47 Cit9CisKIC8qCiAgKiBpbmRleF9iZWdpbnNjYW5fYml0bWFwIC0gc3RhcnQgYSBzY2FuIG9mIGFu IGluZGV4IHdpdGggYW1nZXRiaXRtYXAKICAqCkBAIC02MjAsNiArNjQ2LDI2IEBAIGluZGV4X2Jl Z2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiBoZWFwcmVsLCBSZWxhdGlvbiBpbmRleHJlbCwKIAly ZXR1cm4gc2NhbjsKIH0KIAorLyoKKyAqIFBhcmFsbGVsIHZlcnNpb24gb2YgaW5kZXhfYmVnaW5z Y2FuX3Ztc2V0KCkKKyAqLworSW5kZXhTY2FuRGVzYworaW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVs X3Ztc2V0KFJlbGF0aW9uIGhlYXByZWwsIFJlbGF0aW9uIGluZGV4cmVsLAorCQkJCQkJCSAgIElu ZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKKwkJCQkJCQkgICBpbnQgbmtleXMs IGludCBub3JkZXJieXMsCisJCQkJCQkJICAgUGFyYWxsZWxJbmRleFNjYW5EZXNjIHBzY2FuLAor CQkJCQkJCSAgIGJvb2wgbW9kaWZpZXNfYmFzZV9yZWwpCit7CisJSW5kZXhTY2FuRGVzYyBzY2Fu OworCisJc2NhbiA9IGluZGV4X2JlZ2luc2Nhbl9wYXJhbGxlbChoZWFwcmVsLCBpbmRleHJlbCwK KwkJCQkJCQkJCWluc3RydW1lbnQsCisJCQkJCQkJCQlua2V5cywgbm9yZGVyYnlzLAorCQkJCQkJ CQkJcHNjYW4pOworCXNjYW4tPnhzX2hlYXBmZXRjaC0+bW9kaWZpZXNfYmFzZV9yZWwgPSBtb2Rp Zmllc19iYXNlX3JlbDsKKwlyZXR1cm4gc2NhbjsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLQog ICogaW5kZXhfZ2V0bmV4dF90aWQgLSBnZXQgdGhlIG5leHQgVElEIGZyb20gYSBzY2FuCiAgKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKaW5kZXggYTU2YzVlY2ViMTQuLjY3ZGJmOTlmNWI1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKQEAgLTQ5LDYgKzQ5LDEwIEBACiBjaGFy CSAgICpkZWZhdWx0X3RhYmxlX2FjY2Vzc19tZXRob2QgPSBERUZBVUxUX1RBQkxFX0FDQ0VTU19N RVRIT0Q7CiBib29sCQlzeW5jaHJvbml6ZV9zZXFzY2FucyA9IHRydWU7CiAKKy8qIEhlbHBlciBm b3IgdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKCkgYW5kIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxl bF92bXNldCgpICovCitzdGF0aWMgVGFibGVTY2FuRGVzYyB0YWJsZV9iZWdpbnNjYW5fcGFyYWxs ZWxfY29tbW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4s CisJCQkJCQkJCQkJCQkJIHVpbnQzMiBmbGFncyk7CisKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICogU2xvdCBmdW5jdGlvbnMuCkBAIC0xNjIsMTIgKzE2NiwxNCBAQCB0YWJsZV9wYXJhbGxl bHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2Nh biwKIAl9CiB9CiAKLVRhYmxlU2NhbkRlc2MKLXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxh dGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQorLyoKKyAqIENvbW1v biBoZWxwZXIgZm9yIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbCgpIGFuZCB0YWJsZV9iZWdpbnNj YW5fcGFyYWxsZWxfdm1zZXQoKQorICovCitzdGF0aWMgVGFibGVTY2FuRGVzYwordGFibGVfYmVn aW5zY2FuX3BhcmFsbGVsX2NvbW1vbihSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNj YW5EZXNjIHBzY2FuLAorCQkJCQkJCQl1aW50MzIgZmxhZ3MpCiB7CiAJU25hcHNob3QJc25hcHNo b3Q7Ci0JdWludDMyCQlmbGFncyA9IFNPX1RZUEVfU0VRU0NBTiB8Ci0JCVNPX0FMTE9XX1NUUkFU IHwgU09fQUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VNT0RFOwogCiAJQXNzZXJ0KFJlbEZpbGVM b2NhdG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9yLCBwc2Nhbi0+cGhzX2xvY2F0b3IpKTsK IApAQCAtMTg4LDYgKzE5NCwzMSBAQCB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24g cmVsYXRpb24sIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbikKIAkJCQkJCQkJCQkJcHNjYW4s IGZsYWdzKTsKIH0KIAorVGFibGVTY2FuRGVzYwordGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKFJl bGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pCit7CisJdWludDMy CQlmbGFncyA9IFNPX1RZUEVfU0VRU0NBTiB8CisJCVNPX0FMTE9XX1NUUkFUIHwgU09fQUxMT1df U1lOQyB8IFNPX0FMTE9XX1BBR0VNT0RFOworCisJcmV0dXJuIHRhYmxlX2JlZ2luc2Nhbl9wYXJh bGxlbF9jb21tb24ocmVsYXRpb24sIHBzY2FuLCBmbGFncyk7Cit9CisKKy8qCisgKiBQYXJhbGxl bCB2ZXJzaW9uIG9mIHRhYmxlX2JlZ2luc2Nhbl92bXNldCgpCisgKi8KK1RhYmxlU2NhbkRlc2MK K3RhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxs ZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAorCQkJCQkJCSAgIGJvb2wgbW9kaWZpZXNfcmVsKQorewor CXVpbnQzMgkJZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4gfAorCQlTT19BTExPV19TVFJBVCB8IFNP X0FMTE9XX1NZTkMgfCBTT19BTExPV19QQUdFTU9ERTsKKworCWlmICghbW9kaWZpZXNfcmVsKQor CQlmbGFncyB8PSBTT19BTExPV19WTV9TRVQ7CisKKwlyZXR1cm4gdGFibGVfYmVnaW5zY2FuX3Bh cmFsbGVsX2NvbW1vbihyZWxhdGlvbiwgcHNjYW4sIGZsYWdzKTsKK30KKwogCiAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgKiBJbmRleCBzY2FuIHJlbGF0ZWQgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNNYWluLmMKaW5kZXggYjhiOWQyYTg1ZjcuLmE4NjI3MDFlZGJlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNNYWluLmMKQEAgLTkxNiw2ICs5MTYsMTAgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVy eURlc2MsIGludCBlZmxhZ3MpCiAJCQkJCWJyZWFrOwogCQkJfQogCisJCQkvKiBJZiBpdCBoYXMg YSByb3dtYXJrLCB0aGUgcmVsYXRpb24gaXMgbW9kaWZpZWQgKi8KKwkJCWVzdGF0ZS0+ZXNfbW9k aWZpZWRfcmVsaWRzID0gYm1zX2FkZF9tZW1iZXIoZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMs CisJCQkJCQkJCQkJCQkJCXJjLT5ydGkpOworCiAJCQkvKiBDaGVjayB0aGF0IHJlbGF0aW9uIGlz IGEgbGVnYWwgdGFyZ2V0IGZvciBtYXJraW5nICovCiAJCQlpZiAocmVsYXRpb24pCiAJCQkJQ2hl Y2tWYWxpZFJvd01hcmtSZWwocmVsYXRpb24sIHJjLT5tYXJrVHlwZSk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNVdGlscy5jCmluZGV4IGZkYzY1YzJiNDJiLi4yOGEwNmRjZDI0NCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1V0aWxzLmMKQEAgLTg5Myw2ICs4OTMsOCBAQCBFeGVjSW5pdFJlc3VsdFJlbGF0aW9uKEVT dGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQllc3RhdGUtPmVz X3Jlc3VsdF9yZWxhdGlvbnMgPSAoUmVzdWx0UmVsSW5mbyAqKikKIAkJCXBhbGxvYzAoZXN0YXRl LT5lc19yYW5nZV90YWJsZV9zaXplICogc2l6ZW9mKFJlc3VsdFJlbEluZm8gKikpOwogCWVzdGF0 ZS0+ZXNfcmVzdWx0X3JlbGF0aW9uc1tydGkgLSAxXSA9IHJlc3VsdFJlbEluZm87CisJZXN0YXRl LT5lc19tb2RpZmllZF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcihlc3RhdGUtPmVzX21vZGlmaWVk X3JlbGlkcywKKwkJCQkJCQkJCQkJCXJ0aSk7CiAKIAkvKgogCSAqIFNhdmluZyBpbiB0aGUgbGlz dCBhbGxvd3MgdG8gYXZvaWQgbmVlZGxlc3NseSB0cmF2ZXJzaW5nIHRoZSB3aG9sZQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwppbmRleCBiZjI0ZjNkN2ZlMC4uYWY2 ZGI5Zjc5MTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFw c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCkBA IC0xMDUsMTEgKzEwNSwxNiBAQCBCaXRtYXBUYWJsZVNjYW5TZXR1cChCaXRtYXBIZWFwU2NhblN0 YXRlICpub2RlKQogCSAqLwogCWlmICghbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKQogCXsK KwkJYm9vbAkJbW9kaWZpZXNfcmVsID0KKwkJCWJtc19pc19tZW1iZXIoKChTY2FuICopIG5vZGUt PnNzLnBzLnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCQkgIG5vZGUtPnNzLnBzLnN0YXRlLT5lc19t b2RpZmllZF9yZWxpZHMpOworCiAJCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9CiAJCQl0 YWJsZV9iZWdpbnNjYW5fYm0obm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJCSAg IG5vZGUtPnNzLnBzLnN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkgICAwLAotCQkJCQkJCSAg IE5VTEwpOworCQkJCQkJCSAgIE5VTEwsCisJCQkJCQkJICAgbW9kaWZpZXNfcmVsKTsKIAl9CiAK IAlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MtPnN0LnJzX3RibWl0ZXJhdG9yID0gdGJtaXRl cmF0b3I7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKaW5kZXggN2ZjYWEzN2ZlNjIu LmMyZmZiZDNiMDhlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhz Y2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCkBAIC0xMDIs MTYgKzEwMiwyMiBAQCBJbmRleE5leHQoSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAKIAlpZiAoc2Nh bmRlc2MgPT0gTlVMTCkKIAl7CisKKwkJYm9vbAkJbW9kaWZpZXNfYmFzZV9yZWwgPQorCQkJYm1z X2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJ CSAgZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMpOworCiAJCS8qCiAJCSAqIFdlIHJlYWNoIGhl cmUgaWYgdGhlIGluZGV4IHNjYW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3ZSdyZQogCQkgKiBz ZXJpYWxseSBleGVjdXRpbmcgYW4gaW5kZXggc2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBh cmFsbGVsLgogCQkgKi8KLQkJc2NhbmRlc2MgPSBpbmRleF9iZWdpbnNjYW4obm9kZS0+c3Muc3Nf Y3VycmVudFJlbGF0aW9uLAotCQkJCQkJCQkgICBub2RlLT5pc3NfUmVsYXRpb25EZXNjLAotCQkJ CQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJCQkJCQkgICAmbm9kZS0+aXNzX0luc3Ry dW1lbnQsCi0JCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1TY2FuS2V5cywKLQkJCQkJCQkJICAgbm9k ZS0+aXNzX051bU9yZGVyQnlLZXlzKTsKKwkJc2NhbmRlc2MgPSBpbmRleF9iZWdpbnNjYW5fdm1z ZXQobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAorCQkJCQkJCQkJCSBub2RlLT5pc3NfUmVs YXRpb25EZXNjLAorCQkJCQkJCQkJCSBlc3RhdGUtPmVzX3NuYXBzaG90LAorCQkJCQkJCQkJCSAm bm9kZS0+aXNzX0luc3RydW1lbnQsCisJCQkJCQkJCQkJIG5vZGUtPmlzc19OdW1TY2FuS2V5cywK KwkJCQkJCQkJCQkgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzLAorCQkJCQkJCQkJCSBtb2RpZmll c19iYXNlX3JlbCk7CiAKIAkJbm9kZS0+aXNzX1NjYW5EZXNjID0gc2NhbmRlc2M7CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDk0MDQ3ZDI5NDMwLi5mZDY5Mjc1YzE4MSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC02NSwxMyArNjUsMTggQEAgU2VxTmV4dChT ZXFTY2FuU3RhdGUgKm5vZGUpCiAKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CisJCWJvb2wJ CW1vZGlmaWVzX3JlbCA9CisJCQlibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5w bGFuKS0+c2NhbnJlbGlkLAorCQkJCQkJICBlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyk7CisK IAkJLyoKIAkJICogV2UgcmVhY2ggaGVyZSBpZiB0aGUgc2NhbiBpcyBub3QgcGFyYWxsZWwsIG9y IGlmIHdlJ3JlIHNlcmlhbGx5CiAJCSAqIGV4ZWN1dGluZyBhIHNjYW4gdGhhdCB3YXMgcGxhbm5l ZCB0byBiZSBwYXJhbGxlbC4KIAkJICovCi0JCXNjYW5kZXNjID0gdGFibGVfYmVnaW5zY2FuKG5v ZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKLQkJCQkJCQkJICAgZXN0YXRlLT5lc19zbmFwc2hv dCwKLQkJCQkJCQkJICAgMCwgTlVMTCk7CisJCXNjYW5kZXNjID0gdGFibGVfYmVnaW5zY2FuX3Zt c2V0KG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKKwkJCQkJCQkJCQkgZXN0YXRlLT5lc19z bmFwc2hvdCwKKwkJCQkJCQkJCQkgMCwgTlVMTCwgbW9kaWZpZXNfcmVsKTsKKwogCQlub2RlLT5z cy5zc19jdXJyZW50U2NhbkRlc2MgPSBzY2FuZGVzYzsKIAl9CiAKQEAgLTM2Niw2ICszNzEsNyBA QCBFeGVjU2VxU2NhbkluaXRpYWxpemVEU00oU2VxU2NhblN0YXRlICpub2RlLAogCQkJCQkJIFBh cmFsbGVsQ29udGV4dCAqcGN4dCkKIHsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBz LnN0YXRlOworCWJvb2wJCW1vZGlmaWVzX3JlbDsKIAlQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNj YW47CiAKIAlwc2NhbiA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBub2RlLT5wc2Nhbl9s ZW4pOwpAQCAtMzczLDggKzM3OSwxMSBAQCBFeGVjU2VxU2NhbkluaXRpYWxpemVEU00oU2VxU2Nh blN0YXRlICpub2RlLAogCQkJCQkJCQkgIHBzY2FuLAogCQkJCQkJCQkgIGVzdGF0ZS0+ZXNfc25h cHNob3QpOwogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgbm9kZS0+c3MucHMucGxhbi0+cGxh bl9ub2RlX2lkLCBwc2Nhbik7CisJbW9kaWZpZXNfcmVsID0gYm1zX2lzX21lbWJlcigoKFNjYW4g Kikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJCQkJIGVzdGF0ZS0+ZXNfbW9k aWZpZWRfcmVsaWRzKTsKIAlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPQotCQl0YWJsZV9i ZWdpbnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLCBwc2Nhbik7CisJ CXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRp b24sIHBzY2FuLAorCQkJCQkJCQkJICAgbW9kaWZpZXNfcmVsKTsKIH0KIAogLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpA QCAtNDA0LDggKzQxMywxMyBAQCBFeGVjU2VxU2NhbkluaXRpYWxpemVXb3JrZXIoU2VxU2NhblN0 YXRlICpub2RlLAogCQkJCQkJCVBhcmFsbGVsV29ya2VyQ29udGV4dCAqcHdjeHQpCiB7CiAJUGFy YWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuOworCWJvb2wJCW1vZGlmaWVzX3JlbCA9CisJCWJtc19p c19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCSAg bm9kZS0+c3MucHMuc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyk7CiAKIAlwc2NhbiA9IHNobV90 b2NfbG9va3VwKHB3Y3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgZmFs c2UpOwogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9Ci0JCXRhYmxlX2JlZ2luc2Nhbl9w YXJhbGxlbChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsKKwkJdGFibGVfYmVn aW5zY2FuX3BhcmFsbGVsX3Ztc2V0KG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKKwkJCQkJ CQkJCSAgIHBzY2FuLAorCQkJCQkJCQkJICAgbW9kaWZpZXNfcmVsKTsKIH0KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgK aW5kZXggNWIyYWIxODFiNWYuLmJmMjcyYzJjMzdmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvZ2VuYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaApAQCAtMTgwLDYg KzE4MCwxMSBAQCBleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9iZWdpbnNjYW4oUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogCQkJCQkJCQkJIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJIElu ZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKIAkJCQkJCQkJCSBpbnQgbmtleXMs IGludCBub3JkZXJieXMpOworZXh0ZXJuIEluZGV4U2NhbkRlc2MgaW5kZXhfYmVnaW5zY2FuX3Zt c2V0KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBSZWxhdGlvbiBpbmRleFJl bGF0aW9uLAorCQkJCQkJCQkJCSAgIFNuYXBzaG90IHNuYXBzaG90LAorCQkJCQkJCQkJCSAgIElu ZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKKwkJCQkJCQkJCQkgICBpbnQgbmtl eXMsIGludCBub3JkZXJieXMsIGJvb2wgbW9kaWZpZXNfaGVhcF9yZWwpOwogZXh0ZXJuIEluZGV4 U2NhbkRlc2MgaW5kZXhfYmVnaW5zY2FuX2JpdG1hcChSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAog CQkJCQkJCQkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJCQkJSW5kZXhTY2FuSW5zdHJ1 bWVudGF0aW9uICppbnN0cnVtZW50LApAQCAtMjA2LDYgKzIxMSwxMiBAQCBleHRlcm4gSW5kZXhT Y2FuRGVzYyBpbmRleF9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gaGVhcHJlbCwKIAkJCQkJ CQkJCQkJICBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCiAJCQkJCQkJCQkJ CSAgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzLAogCQkJCQkJCQkJCQkgIFBhcmFsbGVsSW5kZXhT Y2FuRGVzYyBwc2Nhbik7CisKK2V4dGVybiBJbmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2Nhbl9w YXJhbGxlbF92bXNldChSZWxhdGlvbiBoZWFwcmVsLCBSZWxhdGlvbiBpbmRleHJlbCwKKwkJCQkJ CQkJCQkJCQlJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCisJCQkJCQkJCQkJ CQkJaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzLAorCQkJCQkJCQkJCQkJCVBhcmFsbGVsSW5kZXhT Y2FuRGVzYyBwc2NhbiwKKwkJCQkJCQkJCQkJCQlib29sIG1vZGlmaWVzX3JlbCk7CiBleHRlcm4g SXRlbVBvaW50ZXIgaW5kZXhfZ2V0bmV4dF90aWQoSW5kZXhTY2FuRGVzYyBzY2FuLAogCQkJCQkJ CQkJIFNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uKTsKIHN0cnVjdCBUdXBsZVRhYmxlU2xvdDsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaAppbmRleCA0Mjc4ZjM1MWJkZi4uMTZmNzkwNGEyMWUgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFt LmgKQEAgLTk0LDYgKzk0LDEzIEBAIHR5cGVkZWYgc3RydWN0IEhlYXBTY2FuRGVzY0RhdGEKIAkg Ki8KIAlQYXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyRGF0YSAqcnNfcGFyYWxsZWx3b3JrZXJk YXRhOwogCisJLyoKKwkgKiBGb3Igc2VxdWVudGlhbCBzY2FucyBhbmQgYml0bWFwIGhlYXAgc2Nh bnMuIElmIHRoZSByZWxhdGlvbiBpcyBub3QKKwkgKiBiZWluZyBtb2RpZmllZCwgb24tYWNjZXNz IHBydW5pbmcgbWF5IHJlYWQgaW4gdGhlIGN1cnJlbnQgaGVhcCBwYWdlJ3MKKwkgKiBjb3JyZXNw b25kaW5nIFZNIGJsb2NrIHRvIHRoaXMgYnVmZmVyLgorCSAqLworCUJ1ZmZlcgkJcnNfdm1idWZm ZXI7CisKIAkvKiB0aGVzZSBmaWVsZHMgb25seSB1c2VkIGluIHBhZ2UtYXQtYS10aW1lIG1vZGUg YW5kIGZvciBiaXRtYXAgc2NhbnMgKi8KIAl1aW50MzIJCXJzX2NpbmRleDsJCS8qIGN1cnJlbnQg dHVwbGUncyBpbmRleCBpbiB2aXN0dXBsZXMgKi8KIAl1aW50MzIJCXJzX250dXBsZXM7CQkvKiBu dW1iZXIgb2YgdmlzaWJsZSB0dXBsZXMgb24gcGFnZSAqLwpAQCAtMTE2LDggKzEyMywxOCBAQCB0 eXBlZGVmIHN0cnVjdCBJbmRleEZldGNoSGVhcERhdGEKIHsKIAlJbmRleEZldGNoVGFibGVEYXRh IHhzX2Jhc2U7CS8qIEFNIGluZGVwZW5kZW50IHBhcnQgb2YgdGhlIGRlc2NyaXB0b3IgKi8KIAot CUJ1ZmZlcgkJeHNfY2J1ZjsJCS8qIGN1cnJlbnQgaGVhcCBidWZmZXIgaW4gc2NhbiwgaWYgYW55 ICovCi0JLyogTkI6IGlmIHhzX2NidWYgaXMgbm90IEludmFsaWRCdWZmZXIsIHdlIGhvbGQgYSBw aW4gb24gdGhhdCBidWZmZXIgKi8KKwkvKgorCSAqIEN1cnJlbnQgaGVhcCBidWZmZXIgaW4gc2Nh biwgaWYgYW55LiBOQjogaWYgeHNfY2J1ZiBpcyBub3QKKwkgKiBJbnZhbGlkQnVmZmVyLCB3ZSBo b2xkIGEgcGluIG9uIHRoYXQgYnVmZmVyLgorCSAqLworCUJ1ZmZlcgkJeHNfY2J1ZjsKKworCS8q CisJICogRm9yIGluZGV4IHNjYW5zIHRoYXQgZG8gbm90IG1vZGlmeSB0aGUgdW5kZXJseWluZyBo ZWFwIHRhYmxlLCBvbi1hY2Nlc3MKKwkgKiBwcnVuaW5nIG1heSByZWFkIGluIHRoZSBjdXJyZW50 IGhlYXAgcGFnZSdzIGNvcnJlc3BvbmRpbmcgVk0gYmxvY2sgdG8KKwkgKiB0aGlzIGJ1ZmZlci4K KwkgKi8KKwlCdWZmZXIJCXhzX3ZtYnVmZmVyOwogfSBJbmRleEZldGNoSGVhcERhdGE7CiAKIC8q IFJlc3VsdCBjb2RlcyBmb3IgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtICovCkBAIC0zNzQsNyAr MzkxLDggQEAgZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzKFJl bGF0aW9uIHJlbCwKIAogLyogaW4gaGVhcC9wcnVuZWhlYXAuYyAqLwogc3RydWN0IEdsb2JhbFZp c1N0YXRlOwotZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlv biwgQnVmZmVyIGJ1ZmZlcik7CitleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJCQlCdWZmZXIgKnZtYnVmZmVyKTsK IGV4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9u LCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkJICAgYm9vbCBibGtfa25vd25fYXYsCiAJCQkJCQkJ CQkgICBCdWZmZXIgdm1idWZmZXIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVs c2Nhbi5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaAppbmRleCBiNWUwZmIzODZjMC4u ZjQ5NmUwYjQ5MzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApAQCAtMTIxLDYgKzEyMSwxMiBAQCB0eXBl ZGVmIHN0cnVjdCBQYXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyRGF0YSAqUGFyYWxsZWxCbG9j a1RhYmxlU2NhbldvcmtlcjsKIHR5cGVkZWYgc3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEKIHsK IAlSZWxhdGlvbglyZWw7CisKKwkvKgorCSAqIFNvbWUgb3B0aW1pemF0aW9ucyBjYW4gb25seSBi ZSBwZXJmb3JtZWQgaWYgdGhlIHF1ZXJ5IGRvZXMgbm90IG1vZGlmeQorCSAqIHRoZSB1bmRlcmx5 aW5nIHJlbGF0aW9uLiBUcmFjayB0aGF0IGhlcmUuCisJICovCisJYm9vbAkJbW9kaWZpZXNfYmFz ZV9yZWw7CiB9IEluZGV4RmV0Y2hUYWJsZURhdGE7CiAKIHN0cnVjdCBJbmRleFNjYW5JbnN0cnVt ZW50YXRpb247CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCAxYzllODAyYTZiMS4uMGU5ODZkOGVmNzIg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtNjIsNiArNjIsOCBAQCB0eXBlZGVmIGVudW0gU2Nhbk9w dGlvbnMKIAogCS8qIHVucmVnaXN0ZXIgc25hcHNob3QgYXQgc2NhbiBlbmQ/ICovCiAJU09fVEVN UF9TTkFQU0hPVCA9IDEgPDwgOSwKKwkvKiB3aGV0aGVyIG9yIG5vdCBzY2FuIHNob3VsZCBhdHRl bXB0IHRvIHNldCB0aGUgVk0gKi8KKwlTT19BTExPV19WTV9TRVQgPSAxIDw8IDEwLAogfQkJCVNj YW5PcHRpb25zOwogCiAvKgpAQCAtODc2LDYgKzg3OCwyNSBAQCB0YWJsZV9iZWdpbnNjYW4oUmVs YXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5z Y2FuX2JlZ2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXksIE5VTEwsIGZsYWdzKTsKIH0KIAor LyoKKyAqIFNpbWlsYXIgdG8gdGFibGVfYmVnaW5zY2FuKCksIGJ1dCBhbGxvd3MgdGhlIGNhbGxl ciB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZQorICogcXVlcnkgbW9kaWZpZXMgdGhlIHJlbGF0aW9u LiBUaGlzIGlzIHVzZWQgd2hlbiB0aGUgY2FsbGVyIHdhbnRzIHRvIGF0dGVtcHQKKyAqIG1hcmtp bmcgcGFnZXMgaW4gdGhlIHJlbGF0aW9uIGFzIGFsbC12aXNpYmxlIGluIHRoZSB2aXNpYmlsaXR5 IG1hcCBkdXJpbmcKKyAqIG9uLWFjY2VzcyBwcnVuaW5nLgorICovCitzdGF0aWMgaW5saW5lIFRh YmxlU2NhbkRlc2MKK3RhYmxlX2JlZ2luc2Nhbl92bXNldChSZWxhdGlvbiByZWwsIFNuYXBzaG90 IHNuYXBzaG90LAorCQkJCQkgIGludCBua2V5cywgc3RydWN0IFNjYW5LZXlEYXRhICprZXksIGJv b2wgbW9kaWZpZXNfcmVsKQoreworCXVpbnQzMgkJZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4gfAor CQlTT19BTExPV19TVFJBVCB8IFNPX0FMTE9XX1NZTkMgfCBTT19BTExPV19QQUdFTU9ERTsKKwor CWlmICghbW9kaWZpZXNfcmVsKQorCQlmbGFncyB8PSBTT19BTExPV19WTV9TRVQ7CisKKwlyZXR1 cm4gcmVsLT5yZF90YWJsZWFtLT5zY2FuX2JlZ2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXks IE5VTEwsIGZsYWdzKTsKK30KKwogLyoKICAqIExpa2UgdGFibGVfYmVnaW5zY2FuKCksIGJ1dCBm b3Igc2Nhbm5pbmcgY2F0YWxvZy4gSXQnbGwgYXV0b21hdGljYWxseSB1c2UgYQogICogc25hcHNo b3QgYXBwcm9wcmlhdGUgZm9yIHNjYW5uaW5nIGNhdGFsb2cgcmVsYXRpb25zLgpAQCAtOTEzLDEw ICs5MzQsMTMgQEAgdGFibGVfYmVnaW5zY2FuX3N0cmF0KFJlbGF0aW9uIHJlbCwgU25hcHNob3Qg c25hcHNob3QsCiAgKi8KIHN0YXRpYyBpbmxpbmUgVGFibGVTY2FuRGVzYwogdGFibGVfYmVnaW5z Y2FuX2JtKFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJICAgaW50IG5rZXlz LCBzdHJ1Y3QgU2NhbktleURhdGEgKmtleSkKKwkJCQkgICBpbnQgbmtleXMsIHN0cnVjdCBTY2Fu S2V5RGF0YSAqa2V5LCBib29sIG1vZGlmaWVzX3JlbCkKIHsKIAl1aW50MzIJCWZsYWdzID0gU09f VFlQRV9CSVRNQVBTQ0FOIHwgU09fQUxMT1dfUEFHRU1PREU7CiAKKwlpZiAoIW1vZGlmaWVzX3Jl bCkKKwkJZmxhZ3MgfD0gU09fQUxMT1dfVk1fU0VUOworCiAJcmV0dXJuIHJlbC0+cmRfdGFibGVh bS0+c2Nhbl9iZWdpbihyZWwsIHNuYXBzaG90LCBua2V5cywga2V5LAogCQkJCQkJCQkJICAgTlVM TCwgZmxhZ3MpOwogfQpAQCAtMTEyNSw2ICsxMTQ5LDEwIEBAIGV4dGVybiB2b2lkIHRhYmxlX3Bh cmFsbGVsc2Nhbl9pbml0aWFsaXplKFJlbGF0aW9uIHJlbCwKIGV4dGVybiBUYWJsZVNjYW5EZXNj IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJCQkJ ICBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pOwogCitleHRlcm4gVGFibGVTY2FuRGVzYyB0 YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWxfdm1zZXQoUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkJ CQkJCQkJUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAorCQkJCQkJCQkJCQkJCWJvb2wgbW9k aWZpZXNfcmVsKTsKKwogLyoKICAqIFJlc3RhcnQgYSBwYXJhbGxlbCBzY2FuLiAgQ2FsbCB0aGlz IGluIHRoZSBsZWFkZXIgcHJvY2Vzcy4gIENhbGxlciBpcwogICogcmVzcG9uc2libGUgZm9yIG1h a2luZyBzdXJlIHRoYXQgYWxsIHdvcmtlcnMgaGF2ZSBmaW5pc2hlZCB0aGUgc2NhbgpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaAppbmRleCBkZTc4MjAxNGIyZC4uODM5YzFiZTFkN2MgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oCkBAIC02NzgsNiArNjc4LDEyIEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCQkJCQkJ CQkJICogRXhlY0RvSW5pdGlhbFBydW5pbmcoKSAqLwogCWNvbnN0IGNoYXIgKmVzX3NvdXJjZVRl eHQ7CS8qIFNvdXJjZSB0ZXh0IGZyb20gUXVlcnlEZXNjICovCiAKKwkvKgorCSAqIFJUIGluZGV4 ZXMgb2YgcmVsYXRpb25zIG1vZGlmaWVkIGJ5IHRoZSBxdWVyeSBlaXRoZXIgdGhyb3VnaAorCSAq IFVQREFURS9ERUxFVEUvSU5TRVJUL01FUkdFIG9yIFNFTEVDVCBGT1IgVVBEQVRFCisJICovCisJ Qml0bWFwc2V0ICAqZXNfbW9kaWZpZWRfcmVsaWRzOworCiAJSnVua0ZpbHRlciAqZXNfanVua0Zp bHRlcjsJLyogdG9wLWxldmVsIGp1bmsgZmlsdGVyLCBpZiBhbnkgKi8KIAogCS8qIElmIHF1ZXJ5 IGNhbiBpbnNlcnQvZGVsZXRlIHR1cGxlcywgdGhlIGNvbW1hbmQgSUQgdG8gbWFyayB0aGVtIHdp dGggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNh bF9kZWNvZGluZy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9k ZWNvZGluZy5wbAppbmRleCBjOWMxODI4OTJjZi4uODcwZjAzYmRkNzkgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbAorKysgYi9z cmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKQEAgLTEw LDYgKzEwLDcgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNR TDo6VGVzdDo6VXRpbHM7CiB1c2UgVGltZTo6SGlSZXMgcXcodXNsZWVwKTsKIHVzZSBUZXN0OjpN b3JlOwordXNlIFRpbWU6OkhpUmVzIHF3KHVzbGVlcCk7CiAKIGlmICgkRU5We2VuYWJsZV9pbmpl Y3Rpb25fcG9pbnRzfSBuZSAneWVzJykKIHsKQEAgLTI5Niw2ICsyOTcsNyBAQCB3YWxfbGV2ZWwg PSAnbG9naWNhbCcKIG1heF9yZXBsaWNhdGlvbl9zbG90cyA9IDQKIG1heF93YWxfc2VuZGVycyA9 IDQKIGF1dG92YWN1dW0gPSBvZmYKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KIH0pOwogJG5v ZGVfcHJpbWFyeS0+ZHVtcF9pbmZvOwogJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CkBAIC03NDUsNyAr NzQ3LDcgQEAgY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsCiAkbG9nc3RhcnQg PSAtcyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxlOwogCiByZWFjdGl2ZV9zbG90c19jaGFuZ2VfaGZz X2FuZF93YWl0X2Zvcl94bWlucygnc2hhcmVkX3Jvd19yZW1vdmFsXycsCi0JJ25vX2NvbmZsaWN0 XycsIDAsIDEpOworCSdub19jb25mbGljdF8nLCAxLCAwKTsKIAogIyBUaGlzIHNob3VsZCBub3Qg dHJpZ2dlciBhIGNvbmZsaWN0CiB3YWl0X3VudGlsX3ZhY3V1bV9jYW5fcmVtb3ZlKAotLSAKMi40 My4wCgo= --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0018-Unset-all-visible-sooner-if-not-freezing.patch" Content-Disposition: attachment; filename="v7-0018-Unset-all-visible-sooner-if-not-freezing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84cv17 RnJvbSBlODk2MmJhODUwMjA2YmM3ZGU2ZjA0YmEyNjU1YzMzNmU4MTA4MDIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM1OjEzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAxOC8yMl0gVW5zZXQgYWxsLXZpc2libGUgc29vbmVyIGlmIG5vdCBmcmVlemluZwoK SW4gcHJ1bmUvZnJlZXplIGNvZGUsIHdlIGRlbGF5IHVuc2V0dGluZyBhbGwtdmlzaWJsZS9hbGwt ZnJvemVuIGluIHRoZQpwcmVzZW5jZSBvZiBkZWFkIGl0ZW1zIHRvIGFsbG93IG9wcG9ydHVuaXN0 aWNhbGx5IGZyZWV6aW5nIHR1cGxlcyBpZiB0aGUKd2hvbGUgcGFnZSB3b3VsZCBiZSBmcm96ZW4g ZXhjZXB0IGZvciB0aG9zZSBkZWFkIGl0ZW1zIC0tIHdoaWNoIGFyZQpyZW1vdmVkIGxhdGVyIGlu IHZhY3V1bSdzIHRoaXJkIHBoYXNlLgoKRnV0dXJlIGNvbW1pdHMgd2lsbCBhbGxvdyBvbi1hY2Nl c3MgcHJ1bmluZyB0byBzZXQgdGhlIFZNLCB3aGljaCBtZWFucwphbGwtdmlzaWJsZSB3aWxsIGJl IGluaXRpYWxpemVkIHRvIHRydWUgaW5zdGVhZCBvZiBmYWxzZSBhbmQgd2Ugd2lsbCBkbwpleHRy YSBib29ra2VlcGluZyBpbiBoZWFwX3BydW5lX3VuY2hhbmdlZF9scF9ub3JtYWwoKSB0byBrZWVw IHRyYWNrIG9mCndoZXRoZXIgb3Igbm90IHRoZSBwYWdlIGlzIGFsbC12aXNpYmxlLgoKQmVjYXVz ZSBvbi1hY2Nlc3MgcHJ1bmluZyB3aWxsIG5vdCBmcmVlemUgdHVwbGVzLCBpdCBtYWtlcyBzZW5z ZSB0bwp1bnNldCBhbGwtdmlzaWJsZSBhcyBzb29uIGFzIHdlIGVuY291bnRlciBhbiBMUF9ERUFE IGl0ZW0gYW5kCmF2b2lkIGNvbnRpbnVlZCBib29ra2VlcGluZyBzaW5jZSB3ZSBrbm93IHRoZSBw YWdlIGlzIG5vdCBhbGwtdmlzaWJsZQphbmQgd2Ugd29uJ3QgYmUgYWJsZSB0byByZW1vdmUgdGhv c2UgZGVhZCBpdGVtcy4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyB8 IDEwICsrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBhYjc5ZDhhM2VkOS4u ODBkMDU1ZTUzNzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVh cC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xNDkzLDgg KzE0OTMsMTEgQEAgaGVhcF9wcnVuZV9yZWNvcmRfZGVhZChQcnVuZVN0YXRlICpwcnN0YXRlLCBP ZmZzZXROdW1iZXIgb2ZmbnVtLAogCiAJLyoKIAkgKiBEZWxpYmVyYXRlbHkgZGVsYXkgdW5zZXR0 aW5nIGFsbF92aXNpYmxlIHVudGlsIGxhdGVyIGR1cmluZyBwcnVuaW5nLgotCSAqIFJlbW92YWJs ZSBkZWFkIHR1cGxlcyBzaG91bGRuJ3QgcHJlY2x1ZGUgZnJlZXppbmcgdGhlIHBhZ2UuCisJICog UmVtb3ZhYmxlIGRlYWQgdHVwbGVzIHNob3VsZG4ndCBwcmVjbHVkZSBmcmVlemluZyB0aGUgcGFn ZS4gSWYgd2Ugd29uJ3QKKwkgKiBhdHRlbXB0IGZyZWV6aW5nLCBqdXN0IHVuc2V0IGFsbC12aXNp YmxlIG5vdywgdGhvdWdoLgogCSAqLworCWlmICghcHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCisJ CXByc3RhdGUtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwogCiAJ LyogUmVjb3JkIHRoZSBkZWFkIG9mZnNldCBmb3IgdmFjdXVtICovCiAJcHJzdGF0ZS0+ZGVhZG9m ZnNldHNbcHJzdGF0ZS0+bHBkZWFkX2l0ZW1zKytdID0gb2ZmbnVtOwpAQCAtMTc1Miw4ICsxNzU1 LDExIEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9kZWFkKFBhZ2UgcGFnZSwgUHJ1 bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyCiAJICogU2ltaWxhcmx5LCBkb24ndCB1bnNl dCBhbGxfdmlzaWJsZSB1bnRpbCBsYXRlciwgYXQgdGhlIGVuZCBvZgogCSAqIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKCkuICBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gYXR0ZW1wdCB0byBmcmVl emUKIAkgKiB0aGUgcGFnZSBhZnRlciBwcnVuaW5nLiAgQXMgbG9uZyBhcyB3ZSB1bnNldCBpdCBi ZWZvcmUgdXBkYXRpbmcgdGhlCi0JICogdmlzaWJpbGl0eSBtYXAsIHRoaXMgd2lsbCBiZSBjb3Jy ZWN0LgorCSAqIHZpc2liaWxpdHkgbWFwLCB0aGlzIHdpbGwgYmUgY29ycmVjdC4gSWYgd2Ugd29u J3QgYXR0ZW1wdCBmcmVlemluZywKKwkgKiB0aG91Z2gsIGp1c3QgdW5zZXQgYWxsLXZpc2libGUg bm93LgogCSAqLworCWlmICghcHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCisJCXByc3RhdGUtPmFs bF92aXNpYmxlID0gcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwogCiAJLyogUmVjb3JkIHRo ZSBkZWFkIG9mZnNldCBmb3IgdmFjdXVtICovCiAJcHJzdGF0ZS0+ZGVhZG9mZnNldHNbcHJzdGF0 ZS0+bHBkZWFkX2l0ZW1zKytdID0gb2ZmbnVtOwotLSAKMi40My4wCgo= --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0021-Reorder-heap_page_prune_and_freeze-parameters.patch" Content-Disposition: attachment; filename="v7-0021-Reorder-heap_page_prune_and_freeze-parameters.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84d220 RnJvbSBkNDhhNWVhMjNmZTM3NjU5NjczNjU4Mzc4ZDhjNDdiZWNlOGNhMjgyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDMxIEp1bCAyMDI1IDEyOjA4OjE4IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAyMS8yMl0gUmVvcmRlciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSBwYXJhbWV0 ZXJzCgpSZW9yZGVyIHBhcmFtZXRlcnMgc28gdGhhdCBhbGwgb2YgdGhlIG91dHB1dCBwYXJhbWV0 ZXJzIGFyZSB0b2dldGhlciBhdAp0aGUgZW5kIG9mIHRoZSBwYXJhbWV0ZXIgbGlzdC4KLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgfCAzOCArKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAgNiAr Ky0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgIHwgIDQgKy0tCiAzIGZp bGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggNWQ5NDNiMGM2NGYuLjIwZjRhNjJmYjE2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMjk3LDEwICsyOTcsMTAgQEAgaGVhcF9w YWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwgQnVmZmVyICp2 bWJ1ZmZlcikKIAkJCSAqIG5vdCB0aGUgcmVsYXRpb24gaGFzIGluZGV4ZXMsIHNpbmNlIHdlIGNh bm5vdCBzYWZlbHkgZGV0ZXJtaW5lCiAJCQkgKiB0aGF0IGR1cmluZyBvbi1hY2Nlc3MgcHJ1bmlu ZyB3aXRoIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLgogCQkJICovCi0JCQloZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLCBmYWxzZSwKKwkJCWhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKHJlbGF0aW9uLCBidWZmZXIsIG9wdGlvbnMsIGZhbHNlLAogCQkJCQkJ CQkJICAgdm1idWZmZXIgPyAqdm1idWZmZXIgOiBJbnZhbGlkQnVmZmVyLAotCQkJCQkJCQkJICAg dmlzdGVzdCwgb3B0aW9ucywKLQkJCQkJCQkJCSAgIE5VTEwsICZwcmVzdWx0LCBQUlVORV9PTl9B Q0NFU1MsCisJCQkJCQkJCQkgICB2aXN0ZXN0LAorCQkJCQkJCQkJICAgTlVMTCwgUFJVTkVfT05f QUNDRVNTLCAmcHJlc3VsdCwKIAkJCQkJCQkJCSAgICZkdW1teV9vZmZfbG9jLCBOVUxMLCBOVUxM KTsKIAogCQkJLyoKQEAgLTY0NSw2ICs2NDUsMTUgQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogICogYWxzbyBuZWVkIHRvIGFjY291bnQg Zm9yIGEgcmVkdWN0aW9uIGluIHRoZSBsZW5ndGggb2YgdGhlIGxpbmUgcG9pbnRlcgogICogYXJy YXkgZm9sbG93aW5nIGFycmF5IHRydW5jYXRpb24gYnkgdXMuCiAgKgorICogb3B0aW9uczoKKyAq ICAgTUFSS19VTlVTRURfTk9XIGluZGljYXRlcyB0aGF0IGRlYWQgaXRlbXMgY2FuIGJlIHNldCBM UF9VTlVTRUQgZHVyaW5nCisgKiAgIHBydW5pbmcuCisgKgorICogICBGUkVFWkUgaW5kaWNhdGVz IHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFuZCB3aWxsIHJldHVybgorICogICAn YWxsX3Zpc2libGUnLCAnYWxsX2Zyb3plbicgZmxhZ3MgdG8gdGhlIGNhbGxlci4KKyAqCisgKiAg IFVQREFURV9WTSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIHNldCB0aGUgcGFnZSdzIHN0YXR1cyBp biB0aGUgVk0uCisgKgogICogSWYgdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQs IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzIGlmIGl0J3MKICAqIHJlcXVpcmVkIGluIG9yZGVy IHRvIGFkdmFuY2UgcmVsZnJvemVueGlkIC8gcmVsbWlubXhpZCwgb3IgaWYgaXQncwogICogY29u c2lkZXJlZCBhZHZhbnRhZ2VvdXMgZm9yIG92ZXJhbGwgc3lzdGVtIHBlcmZvcm1hbmNlIHRvIGRv IHNvIG5vdy4gIFRoZQpAQCAtNjYzLDMwICs2NzIsMjEgQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXpl KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogICogY29udGFpbiB0aGUgcmVxdWly ZWQgYmxvY2sgb2YgdGhlIHZpc2liaWxpdHkgbWFwLgogICoKICAqIHZpc3Rlc3QgaXMgdXNlZCB0 byBkaXN0aW5ndWlzaCB3aGV0aGVyIHR1cGxlcyBhcmUgREVBRCBvciBSRUNFTlRMWV9ERUFECi0g KiAoc2VlIGhlYXBfcHJ1bmVfc2F0aXNmaWVzX3ZhY3V1bSkuCi0gKgotICogb3B0aW9uczoKLSAq ICAgTUFSS19VTlVTRURfTk9XIGluZGljYXRlcyB0aGF0IGRlYWQgaXRlbXMgY2FuIGJlIHNldCBM UF9VTlVTRUQgZHVyaW5nCi0gKiAgIHBydW5pbmcuCi0gKgotICogICBGUkVFWkUgaW5kaWNhdGVz IHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFuZCB3aWxsIHJldHVybgotICogICAn YWxsX3Zpc2libGUnLCAnYWxsX2Zyb3plbicgZmxhZ3MgdG8gdGhlIGNhbGxlci4KLSAqCi0gKiAg IFVQREFURV9WTSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIHNldCB0aGUgcGFnZSdzIHN0YXR1cyBp biB0aGUgVk0uCisgKiAoc2VlIGhlYXBfcHJ1bmVfc2F0aXNmaWVzX3ZhY3V1bSkuIEl0IGlzIGFu IGlucHV0IHBhcmFtZXRlci4KICAqCiAgKiBjdXRvZmZzIGNvbnRhaW5zIHRoZSBmcmVlemUgY3V0 b2ZmcywgZXN0YWJsaXNoZWQgYnkgVkFDVVVNIGF0IHRoZSBiZWdpbm5pbmcKICAqIG9mIHZhY3V1 bWluZyB0aGUgcmVsYXRpb24uICBSZXF1aXJlZCBpZiBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24g aXMgc2V0LgogICogY3V0b2Zmcy0+T2xkZXN0WG1pbiBpcyBhbHNvIHVzZWQgdG8gZGV0ZXJtaW5l IGlmIGRlYWQgdHVwbGVzIGFyZQotICogSEVBUFRVUExFX1JFQ0VOVExZX0RFQUQgb3IgSEVBUFRV UExFX0RFQUQuCisgKiBIRUFQVFVQTEVfUkVDRU5UTFlfREVBRCBvciBIRUFQVFVQTEVfREVBRC4g SXQgaXMgYW4gaW5wdXQgcGFyYW1ldGVyLgorICoKKyAqIHJlYXNvbiBpbmRpY2F0ZXMgd2h5IHRo ZSBwcnVuaW5nIGlzIHBlcmZvcm1lZC4gIEl0IGlzIGluY2x1ZGVkIGluIHRoZSBXQUwKKyAqIHJl Y29yZCBmb3IgZGVidWdnaW5nIGFuZCBhbmFseXNpcyBwdXJwb3NlcywgYnV0IG90aGVyd2lzZSBo YXMgbm8gZWZmZWN0LgogICoKICAqIHByZXN1bHQgY29udGFpbnMgb3V0cHV0IHBhcmFtZXRlcnMg bmVlZGVkIGJ5IGNhbGxlcnMsIHN1Y2ggYXMgdGhlIG51bWJlciBvZgogICogdHVwbGVzIHJlbW92 ZWQgYW5kIHRoZSBvZmZzZXRzIG9mIGRlYWQgaXRlbXMgb24gdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmlu Zy4KICAqIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgaXMgcmVzcG9uc2libGUgZm9yIGlu aXRpYWxpemluZyBpdC4gIFJlcXVpcmVkCiAgKiBieSBhbGwgY2FsbGVycy4KICAqCi0gKiByZWFz b24gaW5kaWNhdGVzIHdoeSB0aGUgcHJ1bmluZyBpcyBwZXJmb3JtZWQuICBJdCBpcyBpbmNsdWRl ZCBpbiB0aGUgV0FMCi0gKiByZWNvcmQgZm9yIGRlYnVnZ2luZyBhbmQgYW5hbHlzaXMgcHVycG9z ZXMsIGJ1dCBvdGhlcndpc2UgaGFzIG5vIGVmZmVjdC4KLSAqCiAgKiBvZmZfbG9jIGlzIHRoZSBv ZmZzZXQgbG9jYXRpb24gcmVxdWlyZWQgYnkgdGhlIGNhbGxlciB0byB1c2UgaW4gZXJyb3IKICAq IGNhbGxiYWNrLgogICoKQEAgLTY5OSwxMyArNjk5LDEzIEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6 ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKICAqLwogdm9pZAogaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCisJCQkJ CQkgICBpbnQgb3B0aW9ucywKIAkJCQkJCSAgIGJvb2wgYmxrX2tub3duX2F2LAogCQkJCQkJICAg QnVmZmVyIHZtYnVmZmVyLAogCQkJCQkJICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCi0JCQkJ CQkgICBpbnQgb3B0aW9ucywKIAkJCQkJCSAgIHN0cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRvZmZz LAotCQkJCQkJICAgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQsCiAJCQkJCQkgICBQcnVuZVJl YXNvbiByZWFzb24sCisJCQkJCQkgICBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKIAkJCQkJ CSAgIE9mZnNldE51bWJlciAqb2ZmX2xvYywKIAkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKm5ld19y ZWxmcm96ZW5feGlkLAogCQkJCQkJICAgTXVsdGlYYWN0SWQgKm5ld19yZWxtaW5fbXhpZCkKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA3NzdlYzMwZWI4Mi4uMTIwNzgyZmQ4 ZWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE5OTIsMTEgKzE5OTIs MTEgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAlpZiAodmFjcmVsLT5u aW5kZXhlcyA9PSAwKQogCQlwcnVuZV9vcHRpb25zIHw9IEhFQVBfUEFHRV9QUlVORV9NQVJLX1VO VVNFRF9OT1c7CiAKLQloZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShyZWwsIGJ1ZiwKKwloZWFw X3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShyZWwsIGJ1ZiwgcHJ1bmVfb3B0aW9ucywKIAkJCQkJCQkg ICBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0sCiAJCQkJCQkJICAgdm1idWZmZXIsCi0JCQkJ CQkJICAgdmFjcmVsLT52aXN0ZXN0LCBwcnVuZV9vcHRpb25zLAotCQkJCQkJCSAgICZ2YWNyZWwt PmN1dG9mZnMsICZwcmVzdWx0LCBQUlVORV9WQUNVVU1fU0NBTiwKKwkJCQkJCQkgICB2YWNyZWwt PnZpc3Rlc3QsCisJCQkJCQkJICAgJnZhY3JlbC0+Y3V0b2ZmcywgUFJVTkVfVkFDVVVNX1NDQU4s ICZwcmVzdWx0LAogCQkJCQkJCSAgICZ2YWNyZWwtPm9mZm51bSwKIAkJCQkJCQkgICAmdmFjcmVs LT5OZXdSZWxmcm96ZW5YaWQsICZ2YWNyZWwtPk5ld1JlbG1pbk14aWQpOwogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFt LmgKaW5kZXggMTZmNzkwNGEyMWUuLjBjNGU1NjA3NjI3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC0z OTQsMTMgKzM5NCwxMyBAQCBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGU7CiBleHRlcm4gdm9pZCBoZWFw X3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJ CQlCdWZmZXIgKnZtYnVmZmVyKTsKIGV4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJCQkJICAgaW50IG9w dGlvbnMsCiAJCQkJCQkJCQkgICBib29sIGJsa19rbm93bl9hdiwKIAkJCQkJCQkJCSAgIEJ1ZmZl ciB2bWJ1ZmZlciwKIAkJCQkJCQkJCSAgIHN0cnVjdCBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwK LQkJCQkJCQkJCSAgIGludCBvcHRpb25zLAogCQkJCQkJCQkJICAgc3RydWN0IFZhY3V1bUN1dG9m ZnMgKmN1dG9mZnMsCi0JCQkJCQkJCQkgICBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKIAkJ CQkJCQkJCSAgIFBydW5lUmVhc29uIHJlYXNvbiwKKwkJCQkJCQkJCSAgIFBydW5lRnJlZXplUmVz dWx0ICpwcmVzdWx0LAogCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpvZmZfbG9jLAogCQkJCQkJ CQkJICAgVHJhbnNhY3Rpb25JZCAqbmV3X3JlbGZyb3plbl94aWQsCiAJCQkJCQkJCQkgICBNdWx0 aVhhY3RJZCAqbmV3X3JlbG1pbl9teGlkKTsKLS0gCjIuNDMuMAoK --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0022-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v7-0022-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84d521 RnJvbSBlNDY3MTFjYTRiYjJlNDg0NjkzZWZhMWQyZGM4YThmNDQ0YmZkMDk0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAyMi8yMl0gU2V0IHBkX3BydW5lX3hpZCBvbiBpbnNlcnQKCk5vdyB0aGF0IHdlIGNh biBzZXQgdGhlIFZNIGR1cmluZyByZWFkLW9ubHkgcXVlcmllcywgaXQgbWFrZXMgc2Vuc2UgdG8K c3RhcnQgc2V0dGluZyB0aGUgcGFnZSBwcnVuYWJsZSBoaW50IG9uIGluc2VydC4gVGhpcyB3aWxs IGFsbG93CmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgdG8gYmUgY2FsbGVkIHdoZW4gdGhl IHBhZ2UgaXMgZnVsbCBvcgptb3N0bHkgZnVsbC4KCkZvciB5ZWFycyB0aGVyZSBoYXMgYmVlbiBh IG5vdGUgaW4gaGVhcF9pbnNlcnQoKSBhbmQgaGVhcF9tdWx0aV9pbnNlcnQoKQpwb2ludGluZyBv dXQgdGhhdCBzZXR0aW5nIHBkX3BydW5lX3hpZCB3b3VsZCBoZWxwIGNsZWFuIHVwIGFib3J0ZWQK aW5zZXJ0ZWQgdHVwbGVzIHRoYXQgd291bGQgb3RoZXJ3aXNlIG5vdCBiZSBjbGVhbmVkIHVwIHVu dGlsIHZhY3V1bS4KU28sIHRoYXQncyBhbm90aGVyIGJlbmVmaXQgb2Ygc2V0dGluZyBpdC4KClNl dHRpbmcgcGRfcHJ1bmVfeGlkIG9uIGluc2VydCBjYXVzZXMgYSBwYWdlIHRvIGJlIHBydW5lZCBh bmQgdGhlbgp3cml0dGVuIG91dCB3aGljaCB0aGVuIGFmZmVjdHMgdGhlIHJlcG9ydGVkIG51bWJl ciBvZiBoaXRzIGluIHRoZQppbmRleC1raWxsdHVwbGVzIGlzb2xhdGlvbiB0ZXN0LiBUaGlzIGlz IGEgcXVpcmsgb2YgaG93IGhpdHMgYXJlIHRyYWNrZWQKd2hpY2ggc29tZXRpbWVzIGxlYWRzIHRo ZW0gdG8gYmUgZG91YmxlIGNvdW50ZWQuIFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlCmZpeGVkIG9y IGNoYW5nZWQgaW5kZXBlbmRlbnRseS4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW0uYyAgICAgICAgICAgICAgfCAyNSArKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jICAgICAgICAgfCAxNSArKysrKysrKysrLQogLi4uL2lz b2xhdGlvbi9leHBlY3RlZC9pbmRleC1raWxsdHVwbGVzLm91dCAgIHwgIDYgKystLS0KIDMgZmls ZXMgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW0uYwppbmRleCA4YThiNjNiNzlmMi4uYjQ0MTc2ZTNjNzAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbS5jCkBAIC0yMTA1LDYgKzIxMDUsNyBAQCBoZWFwX2luc2VydChSZWxhdGlv biByZWxhdGlvbiwgSGVhcFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIAlUcmFuc2FjdGlvbklk IHhpZCA9IEdldEN1cnJlbnRUcmFuc2FjdGlvbklkKCk7CiAJSGVhcFR1cGxlCWhlYXB0dXA7CiAJ QnVmZmVyCQlidWZmZXI7CisJUGFnZQkJcGFnZTsKIAlCdWZmZXIJCXZtYnVmZmVyID0gSW52YWxp ZEJ1ZmZlcjsKIAlib29sCQlhbGxfdmlzaWJsZV9jbGVhcmVkID0gZmFsc2U7CiAKQEAgLTIxNjQs MTUgKzIxNjUsMTkgQEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0 dXAsIENvbW1hbmRJZCBjaWQsCiAJfQogCiAJLyoKLQkgKiBYWFggU2hvdWxkIHdlIHNldCBQYWdl U2V0UHJ1bmFibGUgb24gdGhpcyBwYWdlID8KKwkgKiBTZXQgcGRfcHJ1bmVfeGlkIHRvIHRyaWdn ZXIgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBvbmNlIHRoZSBwYWdlCisJICogaXMgZnVs bCBzbyB0aGF0IHdlIGNhbiBzZXQgdGhlIHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgogCSAq Ci0JICogVGhlIGluc2VydGluZyB0cmFuc2FjdGlvbiBtYXkgZXZlbnR1YWxseSBhYm9ydCB0aHVz IG1ha2luZyB0aGlzIHR1cGxlCi0JICogREVBRCBhbmQgaGVuY2UgYXZhaWxhYmxlIGZvciBwcnVu aW5nLiBUaG91Z2ggd2UgZG9uJ3Qgd2FudCB0byBvcHRpbWl6ZQotCSAqIGZvciBhYm9ydHMsIGlm IG5vIG90aGVyIHR1cGxlIGluIHRoaXMgcGFnZSBpcyBVUERBVEVkL0RFTEVURWQsIHRoZQotCSAq IGFib3J0ZWQgdHVwbGUgd2lsbCBuZXZlciBiZSBwcnVuZWQgdW50aWwgbmV4dCB2YWN1dW0gaXMg dHJpZ2dlcmVkLgorCSAqIFNldHRpbmcgcGRfcHJ1bmVfeGlkIGlzIGFsc28gaGFuZHkgaWYgdGhl IGluc2VydGluZyB0cmFuc2FjdGlvbgorCSAqIGV2ZW50dWFsbHkgYWJvcnRzIG1ha2luZyB0aGlz IHR1cGxlIERFQUQgYW5kIGhlbmNlIGF2YWlsYWJsZSBmb3IKKwkgKiBwcnVuaW5nLiBJZiBubyBv dGhlciB0dXBsZSBpbiB0aGlzIHBhZ2UgaXMgVVBEQVRFZC9ERUxFVEVkLCB0aGUgYWJvcnRlZAor CSAqIHR1cGxlIHdvdWxkIG5ldmVyIG90aGVyd2lzZSBiZSBwcnVuZWQgdW50aWwgbmV4dCB2YWN1 dW0gaXMgdHJpZ2dlcmVkLgogCSAqCi0JICogSWYgeW91IGRvIGFkZCBQYWdlU2V0UHJ1bmFibGUg aGVyZSwgYWRkIGl0IGluIGhlYXBfeGxvZ19pbnNlcnQgdG9vLgorCSAqIERvbid0IHNldCBpdCBp ZiB3ZSBhcmUgaW4gYm9vdHN0cmFwIG1vZGUsIHRob3VnaC4KIAkgKi8KKwlwYWdlID0gQnVmZmVy R2V0UGFnZShidWZmZXIpOworCWlmIChUcmFuc2FjdGlvbklkSXNOb3JtYWwoeGlkKSkKKwkJUGFn ZVNldFBydW5hYmxlKHBhZ2UsIHhpZCk7CiAKIAlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKIApA QCAtMjE4Miw3ICsyMTg3LDYgQEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBU dXBsZSB0dXAsIENvbW1hbmRJZCBjaWQsCiAJCXhsX2hlYXBfaW5zZXJ0IHhscmVjOwogCQl4bF9o ZWFwX2hlYWRlciB4bGhkcjsKIAkJWExvZ1JlY1B0cglyZWNwdHI7Ci0JCVBhZ2UJCXBhZ2UgPSBC dWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJCXVpbnQ4CQlpbmZvID0gWExPR19IRUFQX0lOU0VSVDsK IAkJaW50CQkJYnVmZmxhZ3MgPSAwOwogCkBAIC0yNTQ2LDggKzI1NTAsMTMgQEAgaGVhcF9tdWx0 aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBu dHVwbGVzLAogCQl9CiAKIAkJLyoKLQkJICogWFhYIFNob3VsZCB3ZSBzZXQgUGFnZVNldFBydW5h YmxlIG9uIHRoaXMgcGFnZSA/IFNlZSBoZWFwX2luc2VydCgpCisJCSAqIFNldCBwZF9wcnVuZV94 aWQuIFNlZSBoZWFwX2luc2VydCgpIGZvciBtb3JlIG9uIHdoeSB3ZSBkbyB0aGlzIHdoZW4KKwkJ ICogaW5zZXJ0aW5nIHR1cGxlcy4gVGhpcyBvbmx5IG1ha2VzIHNlbnNlIGlmIHdlIGFyZW4ndCBh bHJlYWR5CisJCSAqIHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuIGluIHRoZSBWTS4gV2UgYWxzbyBk b24ndCBzZXQgaXQgaW4KKwkJICogYm9vdHN0cmFwIG1vZGUuCiAJCSAqLworCQlpZiAoIWFsbF9m cm96ZW5fc2V0ICYmIFRyYW5zYWN0aW9uSWRJc05vcm1hbCh4aWQpKQorCQkJUGFnZVNldFBydW5h YmxlKHBhZ2UsIHhpZCk7CiAKIAkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCmluZGV4IDUzOWQzODE5NGY1Li41ZWY0OWUxOWM3YiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC00NzQsNiArNDc0LDEyIEBA IGhlYXBfeGxvZ19pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJZnJlZXNwYWNl ID0gUGFnZUdldEhlYXBGcmVlU3BhY2UocGFnZSk7IC8qIG5lZWRlZCB0byB1cGRhdGUgRlNNIGJl bG93ICovCiAKKwkJLyoKKwkJICogU2V0IHRoZSBwYWdlIHBydW5hYmxlIHRvIHRyaWdnZXIgb24t YWNjZXNzIHBydW5pbmcgbGF0ZXIgd2hpY2ggbWF5CisJCSAqIHNldCB0aGUgcGFnZSBhbGwtdmlz aWJsZSBpbiB0aGUgVk0uCisJCSAqLworCQlQYWdlU2V0UHJ1bmFibGUocGFnZSwgWExvZ1JlY0dl dFhpZChyZWNvcmQpKTsKKwogCQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7CiAKIAkJaWYgKHhscmVj LT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKQEAgLTYyMyw5ICs2Mjks MTYgQEAgaGVhcF94bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJ aWYgKHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKIAkJCVBh Z2VDbGVhckFsbFZpc2libGUocGFnZSk7CiAKLQkJLyogWExIX0lOU0VSVF9BTExfRlJPWkVOX1NF VCBpbXBsaWVzIHRoYXQgYWxsIHR1cGxlcyBhcmUgdmlzaWJsZSAqLworCQkvKgorCQkgKiBYTEhf SU5TRVJUX0FMTF9GUk9aRU5fU0VUIGltcGxpZXMgdGhhdCBhbGwgdHVwbGVzIGFyZSB2aXNpYmxl LiBJZgorCQkgKiB3ZSBhcmUgbm90IHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuLCB0aGVuIHNldCB0 aGUgcGFnZSdzIHBydW5hYmxlCisJCSAqIGhpbnQgc28gdGhhdCB3ZSB0cmlnZ2VyIG9uLWFjY2Vz cyBwcnVuaW5nIGxhdGVyIHdoaWNoIG1heSBzZXQgdGhlCisJCSAqIHBhZ2UgYWxsLXZpc2libGUg aW4gdGhlIFZNLgorCQkgKi8KIAkJaWYgKHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX0ZS T1pFTl9TRVQpCiAJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJZWxzZQorCQkJUGFnZVNl dFBydW5hYmxlKHBhZ2UsIFhMb2dSZWNHZXRYaWQocmVjb3JkKSk7CiAKIAkJTWFya0J1ZmZlckRp cnR5KGJ1ZmZlcik7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVk L2luZGV4LWtpbGx0dXBsZXMub3V0IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2luZGV4 LWtpbGx0dXBsZXMub3V0CmluZGV4IGJlN2RkZDc1NmVmLi5iMjlmMjQzNGIwMCAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2luZGV4LWtpbGx0dXBsZXMub3V0CisrKyBi L3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9pbmRleC1raWxsdHVwbGVzLm91dApAQCAtNTQs NyArNTQsNyBAQCBzdGVwIGZsdXNoOiBTRUxFQ1QgRlJPTSBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2goKTsKIHN0ZXAgcmVzdWx0OiBTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0 IC0gY291bnRlci5oZWFwX2FjY2Vzc2VzIEFTIG5ld19oZWFwX2FjY2Vzc2VzIEZST00gY291bnRl ciwgcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxl JzsKIG5ld19oZWFwX2FjY2Vzc2VzCiAtLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICAg IDEKKyAgICAgICAgICAgICAgICAyCiAoMSByb3cpCiAKIHN0ZXAgbWVhc3VyZTogVVBEQVRFIGNv dW50ZXIgU0VUIGhlYXBfYWNjZXNzZXMgPSAoU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9i bGtzX2hpdCBGUk9NIHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9w cmlvcl90dXBsZScpOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHN0ZXAgZmx1c2g6IFNFTEVDVCBGUk9N IHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogc3RlcCByZXN1bHQ6IFNFTEVDVCBoZWFwX2Js a3NfcmVhZCArIGhlYXBfYmxrc19oaXQgLSBjb3VudGVyLmhlYXBfYWNjZXNzZXMgQVMgbmV3X2hl YXBfYWNjZXNzZXMgRlJPTSBjb3VudGVyLCBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxu YW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnOwogbmV3X2hlYXBfYWNjZXNzZXMKIC0tLS0tLS0tLS0t LS0tLS0tCi0gICAgICAgICAgICAgICAgMQorICAgICAgICAgICAgICAgIDIKICgxIHJvdykKIAog c3RlcCBtZWFzdXJlOiBVUERBVEUgY291bnRlciBTRVQgaGVhcF9hY2Nlc3NlcyA9IChTRUxFQ1Qg aGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IEZST00gcGdfc3RhdGlvX2FsbF90YWJsZXMg V0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJyk7CkBAIC0yODMsNyArMjgzLDcgQEAg c3RlcCBmbHVzaDogU0VMRUNUIEZST00gcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBzdGVw IHJlc3VsdDogU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCAtIGNvdW50ZXIu aGVhcF9hY2Nlc3NlcyBBUyBuZXdfaGVhcF9hY2Nlc3NlcyBGUk9NIGNvdW50ZXIsIHBnX3N0YXRp b19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZSc7CiBuZXdfaGVh cF9hY2Nlc3NlcwogLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAxCisgICAgICAg ICAgICAgICAgMgogKDEgcm93KQogCiBzdGVwIG1lYXN1cmU6IFVQREFURSBjb3VudGVyIFNFVCBo ZWFwX2FjY2Vzc2VzID0gKFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgRlJP TSBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUn KTsKLS0gCjIuNDMuMAoK --00000000000036c732063d5d6d9d Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0020-Add-helper-functions-to-heap_page_prune_and_freez.patch" Content-Disposition: attachment; filename="v7-0020-Add-helper-functions-to-heap_page_prune_and_freez.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_meuc84d019 RnJvbSA2MzBhZWE2ZTJmYzMwMTNjMjBiYzkzOGEwZjdhMTE1MTIzZGEyMzBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMwIEp1bCAyMDI1IDE4OjUxOjQzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2NyAyMC8yMl0gQWRkIGhlbHBlciBmdW5jdGlvbnMgdG8gaGVhcF9wYWdlX3BydW5lX2Fu ZF9mcmVlemUKCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgaGFzIGdvdHRlbiByYXRoZXIg bG9uZy4gSXQgaGFzIHNldmVyYWwKc3RhZ2VzOgoKMSkgc2V0dXAgLSB3aGVyZSB0aGUgUHJ1bmVT dGF0ZWlzIHNldCB1cAoyKSB0dXBsZSBleGFtaW5hdGlvbiAtLSB3aGVyZSB0dXBsZXMgYW5kIGxp bmUgcG9pbnRlcnMgYXJlIGV4YW1pbmVkIHRvCiAgIGRldGVybWluZSB3aGF0IG5lZWRzIHRvIGJl IHBydW5lZCBhbmQgd2hhdCBjb3VsZCBiZSBmcm96ZW4KMykgZXZhbHVhdGlvbiAtLSB3aGVyZSB3 ZSBkZXRlcm1pbmUgYmFzZWQgb24gY2FsbGVyIHByb3ZpZGVkIG9wdGlvbnMsCiAgIGhldXJpc3Rp Y3MsIGFuZCBzdGF0ZSBnYXRoZXJlZCBkdXJpbmcgc3RhZ2UgMiB3aGV0aGVyIG9yIG5vdCB0bwog ICBmcmVlemUgdHVwbGVzIGFuZCBzZXQgdGhlIHBhZ2UgaW4gdGhlIFZNCjQpIGV4ZWN1dGlvbiAt IHdoZXJlIHRoZSBwYWdlIGNoYW5nZXMgYXJlIGFjdHVhbGx5IG1hZGUgYW5kIGxvZ2dlZAoKVGhp cyBjb21taXQgcmVmYWN0b3JzIHRoZSBldmFsdWF0aW9uIHN0YWdlIGludG8gaGVscGVycyB3aGlj aCByZXR1cm4Kd2hldGhlciBvciBub3QgdG8gZnJlZXplIGFuZCBzZXQgdGhlIFZNLgoKRm9yIHRo ZSBwdXJwb3NlcyBvZiBjb21taXR0aW5nLCB0aGlzIGxpa2VseSBzaG91bGRuJ3QgYmUgYSBzZXBh cmF0ZQpjb21taXQuIEJ1dCBJJ20gbm90IHN1cmUgeWV0IHdoZXRoZXIgaXQgbWFrZXMgbW9yZSBz ZW5zZSB0byBkbyB0aGlzCnJlZmFjdG9yaW5nIGVhcmxpZXIgaW4gdGhlIHNldCBmb3IgY2xhcml0 eSBmb3IgdGhlIHJldmlld2VyLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVh cC5jIHwgNDcxICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAy OTUgaW5zZXJ0aW9ucygrKSwgMTc2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMKaW5kZXggZGFkMzQxY2IyNjUuLjVkOTQzYjBjNjRmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYwpAQCAtMTc5LDYgKzE3OSwyMiBAQCBzdGF0aWMgdm9pZCBoZWFwX3By dW5lX3JlY29yZF91bmNoYW5nZWRfbHBfcmVkaXJlY3QoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zm c2V0TgogCiBzdGF0aWMgdm9pZCBwYWdlX3ZlcmlmeV9yZWRpcmVjdHMoUGFnZSBwYWdlKTsKIAor c3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyLAorCQkJCQkJCQkgIGJvb2wgZG9fcHJ1bmUsCisJCQkJCQkJCSAgYm9vbCBkb19o aW50X2Z1bGxfb3JfcHJ1bmFibGUsCisJCQkJCQkJCSAgYm9vbCBkaWRfdHVwbGVfaGludF9mcGks CisJCQkJCQkJCSAgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJCQkJICBib29sICphbGxfZnJv emVuX2V4Y2VwdF9scF9kZWFkKTsKKworc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfdXBkYXRl X3ZtKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJCQkJIEJ1ZmZlciBidWZmZXIsIEJsb2NrTnVt YmVyIGJsb2Nrbm8sIFBhZ2UgcGFnZSwKKwkJCQkJCQkJCSBQcnVuZVJlYXNvbiByZWFzb24sCisJ CQkJCQkJCQkgYm9vbCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUsCisJCQkJCQkJCQkgYm9vbCBi bGtfa25vd25fYXYsCisJCQkJCQkJCQkgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJCQkJCSBC dWZmZXIgKnZtYnVmZmVyLCB1aW50OCAqdm1mbGFncywKKwkJCQkJCQkJCSBib29sICpzZXRfcGRf YWxsX3Zpc2libGUpOworCiBzdGF0aWMgYm9vbCBpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRp b24oUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGss CiAJCQkJCQkJCQkJICAgQnVmZmVyIGhlYXBfYnVmZmVyLCBQYWdlIGhlYXBfcGFnZSwKQEAgLTM3 Niw2ICszOTIsMjQ5IEBAIGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiBy ZWxhdGlvbiwKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKworLyoKKyAqIERldGVybWluZSB3aGV0aGVy IHRvIHNldCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0cyBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9t CisgKiB0aGUgUHJ1bmVTdGF0ZSBhbmQgYmxrX2tub3duX2F2LCB3aGljaCBzb21lIGNhbGxlcnMg d2lsbCBwcm92aWRlIGFmdGVyCisgKiBwcmV2aW91c2x5IGV4YW1pbmluZyB0aGlzIGhlYXAgcGFn ZSdzIFZNIGJpdHMgKGUuZy4gdmFjdXVtIGZyb20gdGhlIGxhc3QKKyAqIGhlYXBfdmFjX3NjYW5f bmV4dF9ibG9jaygpIGNhbGwpLgorICoKKyAqIFdlIHBhc3MgaW4gYmxvY2tubyBhbmQgcGFnZSBl dmVuIHRob3NlIGNhbiBiZSBkZXJpdmVkIGZyb20gYnVmZmVyIHRvIGF2b2lkCisgKiBleHRyYSBC dWZmZXJHZXRCbG9jaygpIGFuZCBCdWZmZXJHZXRCbG9ja051bWJlcigpIGNhbGxzLgorICoKKyAq IFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGRvX2ZyZWV6ZSBoYXMgYmVlbiBkZWNp ZGVkIChhbmQgZG9fcHJ1bmUKKyAqIGhhcyBiZWVuIHNldCksIGFzIHRoZXNlIGZhY3RvciBpbnRv IG91ciBoZXVyaXN0aWMtYmFzZWQgZGVjaXNpb24uCisgKgorICogcHJzdGF0ZSBhbmQgdm1idWZm ZXIgYXJlIGlucHV0L291dHB1dCBmaWVsZHMuIHZtZmxhZ3MgYW5kIGFuZAorICogc2V0X3BkX2Fs bF92aXNpYmxlIGFyZSBvdXRwdXQgZmllbGRzLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUg Y2FsbGVyIHNob3VsZCBzZXQgb25lIG9yIGJvdGggb2YgdGhlIFZNIGJpdHMgYW5kIGZhbHNlCisg KiBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBib29sCitoZWFwX3BhZ2Vfd2lsbF91cGRhdGVfdm0o UmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkgQnVmZmVyIGJ1ZmZlciwgQmxvY2tOdW1iZXIgYmxv Y2tubywgUGFnZSBwYWdlLAorCQkJCQkJIFBydW5lUmVhc29uIHJlYXNvbiwKKwkJCQkJCSBib29s IGRvX3BydW5lLCBib29sIGRvX2ZyZWV6ZSwKKwkJCQkJCSBib29sIGJsa19rbm93bl9hdiwKKwkJ CQkJCSBQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCQkJIEJ1ZmZlciAqdm1idWZmZXIsIHVpbnQ4 ICp2bWZsYWdzLAorCQkJCQkJIGJvb2wgKnNldF9wZF9hbGxfdmlzaWJsZSkKK3sKKwlib29sCQlk b19zZXRfdm0gPSBmYWxzZTsKKworCS8qCisJICogSWYgdGhlIGNhbGxlciBzcGVjaWZpZWQgbm90 IHRvIHVwZGF0ZSB0aGUgVk0sIHZhbGlkYXRlIGV2ZXJ5dGhpbmcgaXMgaW4KKwkgKiB0aGUgcmln aHQgc3RhdGUgYW5kIGV4aXQuCisJICovCisJaWYgKCFwcnN0YXRlLT5jb25zaWRlcl91cGRhdGVf dm0pCisJeworCQlBc3NlcnQoIXByc3RhdGUtPmFsbF92aXNpYmxlICYmICFwcnN0YXRlLT5hbGxf ZnJvemVuKTsKKwkJLyogV2UgZG9uJ3Qgc2V0IG9ubHkgdGhlIHBhZ2UgbGV2ZWwgdmlzaWJpbGl0 eSBoaW50ICovCisJCUFzc2VydCghKCpzZXRfcGRfYWxsX3Zpc2libGUpKTsKKwkJQXNzZXJ0KCp2 bWZsYWdzID09IDApOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyoKKwkgKiBJZiB0aGlzIGlz IGFuIG9uLWFjY2VzcyBjYWxsIGFuZCB3ZSdyZSBub3QgYWN0dWFsbHkgcHJ1bmluZywgYXZvaWQK KwkgKiBzZXR0aW5nIHRoZSB2aXNpYmlsaXR5IG1hcCBpZiBpdCB3b3VsZCBuZXdseSBkaXJ0eSB0 aGUgaGVhcCBwYWdlIG9yLCBpZgorCSAqIHRoZSBwYWdlIGlzIGFscmVhZHkgZGlydHksIGlmIGRv aW5nIHNvIHdvdWxkIHJlcXVpcmUgaW5jbHVkaW5nIGEKKwkgKiBmdWxsLXBhZ2UgaW1hZ2UgKEZQ SSkgb2YgdGhlIGhlYXAgcGFnZSBpbiB0aGUgV0FMLiBUaGlzIHNpdHVhdGlvbgorCSAqIHNob3Vs ZCBiZSByYXJlLCBhcyBvbi1hY2Nlc3MgcHJ1bmluZyBpcyBvbmx5IGF0dGVtcHRlZCB3aGVuCisJ ICogcGRfcHJ1bmVfeGlkIGlzIHZhbGlkLgorCSAqLworCWlmIChyZWFzb24gPT0gUFJVTkVfT05f QUNDRVNTICYmCisJCXByc3RhdGUtPmNvbnNpZGVyX3VwZGF0ZV92bSAmJgorCQlwcnN0YXRlLT5h bGxfdmlzaWJsZSAmJgorCQkhZG9fcHJ1bmUgJiYgIWRvX2ZyZWV6ZSAmJgorCQkoIUJ1ZmZlcklz RGlydHkoYnVmZmVyKSB8fCBYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cChidWZmZXIpKSkKKwl7 CisJCXByc3RhdGUtPmNvbnNpZGVyX3VwZGF0ZV92bSA9IGZhbHNlOworCQlwcnN0YXRlLT5hbGxf dmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKKwl9CisKKwlBc3NlcnQoIXBy c3RhdGUtPmFsbF9mcm96ZW4gfHwgcHJzdGF0ZS0+YWxsX3Zpc2libGUpOworCisJLyoKKwkgKiBD bGVhciBhbnkgVk0gY29ycnVwdGlvbi4gVGhpcyBkb2VzIG5vdCBuZWVkIHRvIGJlIGluIGEgY3Jp dGljYWwKKwkgKiBzZWN0aW9uLCBzbyB3ZSBkbyBpdCBmaXJzdC4gSWYgUERfQUxMX1ZJU0lCTEUg aXMgaW5jb3JyZWN0bHkgc2V0LCB3ZQorCSAqIG1heSBtYXJrIHRoZSBoZWFwIHBhZ2UgYnVmZmVy IGRpcnR5IGhlcmUgYW5kIGNvdWxkIGVuZCB1cCBkb2luZyBzbworCSAqIGFnYWluIGxhdGVyLiBU aGlzIGlzIG5vdCBhIGNvcnJlY3RuZXNzIGlzc3VlIGFuZCBpcyBpbiB0aGUgcGF0aCBvZiBWTQor CSAqIGNvcnJ1cHRpb24sIHNvIHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhlIGV4dHJh IHBlcmZvcm1hbmNlCisJICogb3ZlcmhlYWQuCisJICovCisJaWYgKGlkZW50aWZ5X2FuZF9maXhf dm1fY29ycnVwdGlvbihyZWxhdGlvbiwKKwkJCQkJCQkJCSAgIGJsb2Nrbm8sIGJ1ZmZlciwgcGFn ZSwKKwkJCQkJCQkJCSAgIGJsa19rbm93bl9hdiwgcHJzdGF0ZS0+bHBkZWFkX2l0ZW1zLAorCQkJ CQkJCQkJICAgKnZtYnVmZmVyKSkKKwl7CisJCS8qIElmIHdlIGZpeCBjb3JydXB0aW9uLCBkb24n dCB1cGRhdGUgdGhlIFZNIGZ1cnRoZXIgKi8KKwl9CisKKwkvKiBEZXRlcm1pbmUgaWYgd2UgYWN0 dWFsbHkgbmVlZCB0byBzZXQgdGhlIFZNIGFuZCB3aGljaCBiaXRzIHRvIHNldC4gKi8KKwllbHNl IGlmIChwcnN0YXRlLT5hbGxfdmlzaWJsZSAmJgorCQkJICghYmxrX2tub3duX2F2IHx8CisJCQkg IChwcnN0YXRlLT5hbGxfZnJvemVuICYmICFWTV9BTExfRlJPWkVOKHJlbGF0aW9uLCBibG9ja25v LCB2bWJ1ZmZlcikpKSkKKwl7CisJCSp2bWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lC TEU7CisJCWlmIChwcnN0YXRlLT5hbGxfZnJvemVuKQorCQkJKnZtZmxhZ3MgfD0gVklTSUJJTElU WU1BUF9BTExfRlJPWkVOOworCX0KKworCWRvX3NldF92bSA9ICp2bWZsYWdzICYgVklTSUJJTElU WU1BUF9WQUxJRF9CSVRTOworCisJLyoKKwkgKiBEb24ndCBzZXQgUERfQUxMX1ZJU0lCTEUgdW5s ZXNzIHdlIGFsc28gcGxhbiB0byBzZXQgdGhlIFZNLiBXaGlsZSBpdCBpcworCSAqIGNvcnJlY3Qg Zm9yIGEgaGVhcCBwYWdlIHRvIGhhdmUgUERfQUxMX1ZJU0lCTEUgZXZlbiBpZiB0aGUgVk0gaXMg bm90CisJICogc2V0LCB3ZSBzdHJvbmdseSBwcmVmZXIgdG8ga2VlcCB0aGVtIGluIHN5bmMuCisJ ICoKKwkgKiBQcmlvciB0byBQb3N0Z3JlcyAxOSwgaXQgd2FzIHBvc3NpYmxlIGZvciB0aGUgcGFn ZS1sZXZlbCBiaXQgdG8gYmUgc2V0CisJICogYW5kIHRoZSBWTSBiaXQgdG8gYmUgY2xlYXIuIFRo aXMgY291bGQgaGFwcGVuIGlmIHdlIGNyYXNoZWQgYWZ0ZXIKKwkgKiBzZXR0aW5nIFBEX0FMTF9W SVNJQkxFIGJ1dCBiZWZvcmUgc2V0dGluZyBiaXRzIGluIHRoZSBWTS4KKwkgKi8KKwkqc2V0X3Bk X2FsbF92aXNpYmxlID0gZG9fc2V0X3ZtICYmICFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpOworCXJl dHVybiBkb19zZXRfdm07Cit9CisKKy8qCisgKiBEZWNpZGUgaWYgd2Ugd2FudCB0byBnbyBhaGVh ZCB3aXRoIGZyZWV6aW5nIGFjY29yZGluZyB0byB0aGUgZnJlZXplIHBsYW5zIHdlCisgKiBwcmVw YXJlZCBmb3IgdGhlIGdpdmVuIGJ1ZmZlciBvciBub3QuIElmIHRoZSBjYWxsZXIgc3BlY2lmaWVk IHdlIHNob3VsZCBub3QKKyAqIGZyZWV6ZSB0dXBsZXMsIGl0IGV4aXRzIGVhcmx5LgorICoKKyAq IGRvX3BydW5lLCBkb19oaW50X2Z1bGxfb3JfcHJ1bmFibGUsIGFuZCBkaWRfdHVwbGVfaGludF9m cGkgbXVzdCBhbGwgaGF2ZQorICogYmVlbiBkZWNpZGVkIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVu Y3Rpb24uCisgKgorICogcHJzdGF0ZSBpcyBhbiBpbnB1dC9vdXRwdXQgcGFyYW1ldGVyLiBhbGxf ZnJvemVuX2V4Y2VwdF9scF9kZWFkIGlzIHNldCBhbmQKKyAqIHVzZWQgbGF0ZXIgdG8gZGV0ZXJt aW5lIHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIGZvciB0aGUgcmVjb3JkLgorICoKKyAq IFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91bGQgdXNlIG91ciBmcmVlemUgcGxhbnMgYW5kIGZyZWV6 ZSB0dXBsZXMgb24gdGhlIHBhZ2UKKyAqIGFuZCBmYWxzZSBvdGhlcndpc2UuCisgKi8KK3N0YXRp YyBib29sCitoZWFwX3BhZ2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBi dWZmZXIsCisJCQkJCSAgYm9vbCBkb19wcnVuZSwKKwkJCQkJICBib29sIGRvX2hpbnRfZnVsbF9v cl9wcnVuYWJsZSwKKwkJCQkJICBib29sIGRpZF90dXBsZV9oaW50X2ZwaSwKKwkJCQkJICBQcnVu ZVN0YXRlICpwcnN0YXRlLAorCQkJCQkgIGJvb2wgKmFsbF9mcm96ZW5fZXhjZXB0X2xwX2RlYWQp Cit7CisJYm9vbAkJZG9fZnJlZXplID0gZmFsc2U7CisKKwkvKgorCSAqIElmIHRoZSBjYWxsZXIg c3BlY2lmaWVkIHdlIHNob3VsZCBub3QgYXR0ZW1wdCB0byBmcmVlemUgYW55IHR1cGxlcywKKwkg KiB2YWxpZGF0ZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgaW4gdGhlIHJpZ2h0IHN0YXRlIGFuZCBleGl0 LgorCSAqLworCWlmICghcHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCisJeworCQlBc3NlcnQoIXBy c3RhdGUtPmFsbF9mcm96ZW4gJiYgcHJzdGF0ZS0+bmZyb3plbiA9PSAwKTsKKwkJQXNzZXJ0KHBy c3RhdGUtPmxwZGVhZF9pdGVtcyA9PSAwIHx8ICFwcnN0YXRlLT5hbGxfdmlzaWJsZSk7CisJCUFz c2VydCghKCphbGxfZnJvemVuX2V4Y2VwdF9scF9kZWFkKSk7CisJCXJldHVybiBmYWxzZTsKKwl9 CisKKwlpZiAocHJzdGF0ZS0+cGFnZWZyei5mcmVlemVfcmVxdWlyZWQpCisJeworCQkvKgorCQkg KiBoZWFwX3ByZXBhcmVfZnJlZXplX3R1cGxlIGluZGljYXRlZCB0aGF0IGF0IGxlYXN0IG9uZSBY SUQvTVhJRCBmcm9tCisJCSAqIGJlZm9yZSBGcmVlemVMaW1pdC9NdWx0aVhhY3RDdXRvZmYgaXMg cHJlc2VudC4gIE11c3QgZnJlZXplIHRvCisJCSAqIGFkdmFuY2UgcmVsZnJvemVueGlkL3JlbG1p bm14aWQuCisJCSAqLworCQlkb19mcmVlemUgPSB0cnVlOworCX0KKwllbHNlCisJeworCQkvKgor CQkgKiBPcHBvcnR1bmlzdGljYWxseSBmcmVlemUgdGhlIHBhZ2UgaWYgd2UgYXJlIGdlbmVyYXRp bmcgYW4gRlBJCisJCSAqIGFueXdheSBhbmQgaWYgZG9pbmcgc28gbWVhbnMgdGhhdCB3ZSBjYW4g c2V0IHRoZSBwYWdlIGFsbC1mcm96ZW4KKwkJICogYWZ0ZXJ3YXJkcyAobWlnaHQgbm90IGhhcHBl biB1bnRpbCBWQUNVVU0ncyBmaW5hbCBoZWFwIHBhc3MpLgorCQkgKgorCQkgKiBYWFg6IFByZXZp b3VzbHksIHdlIGtuZXcgaWYgcHJ1bmluZyBlbWl0dGVkIGFuIEZQSSBieSBjaGVja2luZworCQkg KiBwZ1dhbFVzYWdlLndhbF9mcGkgYmVmb3JlIGFuZCBhZnRlciBwcnVuaW5nLiAgT25jZSB0aGUg ZnJlZXplIGFuZAorCQkgKiBwcnVuZSByZWNvcmRzIHdlcmUgY29tYmluZWQsIHRoaXMgaGV1cmlz dGljIGNvdWxkbid0IGJlIHVzZWQKKwkJICogYW55bW9yZS4gIFRoZSBvcHBvcnR1bmlzdGljIGZy ZWV6ZSBoZXVyaXN0aWMgbXVzdCBiZSBpbXByb3ZlZDsKKwkJICogaG93ZXZlciwgZm9yIG5vdywg dHJ5IHRvIGFwcHJveGltYXRlIHRoZSBvbGQgbG9naWMuCisJCSAqLworCQlpZiAocHJzdGF0ZS0+ YWxsX3Zpc2libGUgJiYgcHJzdGF0ZS0+YWxsX2Zyb3plbiAmJiBwcnN0YXRlLT5uZnJvemVuID4g MCkKKwkJeworCQkJLyoKKwkJCSAqIEZyZWV6aW5nIHdvdWxkIG1ha2UgdGhlIHBhZ2UgYWxsLWZy b3plbi4gIEhhdmUgYWxyZWFkeSBlbWl0dGVkCisJCQkgKiBhbiBGUEkgb3Igd2lsbCBkbyBzbyBh bnl3YXk/CisJCQkgKi8KKwkJCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbGF0aW9uKSkKKwkJCXsK KwkJCQlpZiAoZGlkX3R1cGxlX2hpbnRfZnBpKQorCQkJCQlkb19mcmVlemUgPSB0cnVlOworCQkJ CWVsc2UgaWYgKGRvX3BydW5lKQorCQkJCXsKKwkJCQkJaWYgKFhMb2dDaGVja0J1ZmZlck5lZWRz QmFja3VwKGJ1ZmZlcikpCisJCQkJCQlkb19mcmVlemUgPSB0cnVlOworCQkJCX0KKwkJCQllbHNl IGlmIChkb19oaW50X2Z1bGxfb3JfcHJ1bmFibGUpCisJCQkJeworCQkJCQlpZiAoWExvZ0hpbnRC aXRJc05lZWRlZCgpICYmIFhMb2dDaGVja0J1ZmZlck5lZWRzQmFja3VwKGJ1ZmZlcikpCisJCQkJ CQlkb19mcmVlemUgPSB0cnVlOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKworCWlmIChkb19mcmVl emUpCisJeworCQkvKgorCQkgKiBWYWxpZGF0ZSB0aGUgdHVwbGVzIHdlIHdpbGwgYmUgZnJlZXpp bmcgYmVmb3JlIGVudGVyaW5nIHRoZQorCQkgKiBjcml0aWNhbCBzZWN0aW9uLgorCQkgKi8KKwkJ aGVhcF9wcmVfZnJlZXplX2NoZWNrcyhidWZmZXIsIHByc3RhdGUtPmZyb3plbiwgcHJzdGF0ZS0+ bmZyb3plbik7CisJfQorCWVsc2UgaWYgKHByc3RhdGUtPm5mcm96ZW4gPiAwKQorCXsKKwkJLyoK KwkJICogVGhlIHBhZ2UgY29udGFpbmVkIHNvbWUgdHVwbGVzIHRoYXQgd2VyZSBub3QgYWxyZWFk eSBmcm96ZW4sIGFuZCB3ZQorCQkgKiBjaG9zZSBub3QgdG8gZnJlZXplIHRoZW0gbm93LiAgVGhl IHBhZ2Ugd29uJ3QgYmUgYWxsLWZyb3plbiB0aGVuLgorCQkgKi8KKwkJQXNzZXJ0KCFwcnN0YXRl LT5wYWdlZnJ6LmZyZWV6ZV9yZXF1aXJlZCk7CisKKwkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZh bHNlOworCQlwcnN0YXRlLT5uZnJvemVuID0gMDsJLyogYXZvaWQgbWlzY291bnRzIGluIGluc3Ry dW1lbnRhdGlvbiAqLworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBXZSBoYXZlIG5vIGZyZWV6 ZSBwbGFucyB0byBleGVjdXRlLiAgVGhlIHBhZ2UgbWlnaHQgYWxyZWFkeSBiZQorCQkgKiBhbGwt ZnJvemVuIChwZXJoYXBzIG9ubHkgZm9sbG93aW5nIHBydW5pbmcpLCB0aG91Z2guICBTdWNoIHBh Z2VzCisJCSAqIGNhbiBiZSBtYXJrZWQgYWxsLWZyb3plbiBpbiB0aGUgVk0gYnkgb3VyIGNhbGxl ciwgZXZlbiB0aG91Z2ggbm9uZQorCQkgKiBvZiBpdHMgdHVwbGVzIHdlcmUgbmV3bHkgZnJvemVu IGhlcmUuCisJCSAqLworCX0KKworCS8qCisJICogSXQgd2FzIGNvbnZlbmllbnQgdG8gaWdub3Jl IExQX0RFQUQgaXRlbXMgaW4gYWxsX3Zpc2libGUgZWFybGllciBvbiB0bworCSAqIG1ha2UgdGhl IGNob2ljZSBvZiB3aGV0aGVyIG9yIG5vdCB0byBmcmVlemUgdGhlIHBhZ2UgdW5hZmZlY3RlZCBi eSB0aGUKKwkgKiBzaG9ydC10ZXJtIHByZXNlbmNlIG9mIExQX0RFQUQgaXRlbXMuICBUaGVzZSBM UF9ERUFEIGl0ZW1zIHdlcmUKKwkgKiBlZmZlY3RpdmVseSBhc3N1bWVkIHRvIGJlIExQX1VOVVNF RCBpdGVtcyBpbiB0aGUgbWFraW5nLiAgSXQgZG9lc24ndAorCSAqIG1hdHRlciB3aGljaCB2YWN1 dW0gaGVhcCBwYXNzIChpbml0aWFsIHBhc3Mgb3IgZmluYWwgcGFzcykgZW5kcyB1cAorCSAqIHNl dHRpbmcgdGhlIHBhZ2UgYWxsLWZyb3plbiwgYXMgbG9uZyBhcyB0aGUgb25nb2luZyBWQUNVVU0g ZG9lcyBpdC4KKwkgKgorCSAqIE5vdyB0aGF0IGZyZWV6aW5nIGhhcyBiZWVuIGZpbmFsaXplZCwg dW5zZXQgYWxsX3Zpc2libGUgaWYgdGhlcmUgYXJlCisJICogYW55IExQX0RFQUQgaXRlbXMgb24g dGhlIHBhZ2UuIEl0IG5lZWRzIHRvIHJlZmxlY3QgdGhlIHByZXNlbnQgc3RhdGUgb2YKKwkgKiB0 aGUgcGFnZSB3aGVuIHVzaW5nIGl0IHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0byB1cGRh dGUgdGhlIFZNLgorCSAqCisJICogS2VlcCB0cmFjayBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgcGFn ZSB3YXMgYWxsLWZyb3plbiBleGNlcHQgTFBfREVBRAorCSAqIGl0ZW1zIGZvciB0aGUgcHVycG9z ZXMgb2YgY2FsY3VsYXRpbmcgdGhlIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24sCisJICogdGhv dWdoLgorCSAqLworCSphbGxfZnJvemVuX2V4Y2VwdF9scF9kZWFkID0gcHJzdGF0ZS0+YWxsX2Zy b3plbjsKKwlpZiAocHJzdGF0ZS0+bHBkZWFkX2l0ZW1zID4gMCkKKwl7CisJCXByc3RhdGUtPmFs bF92aXNpYmxlID0gZmFsc2U7CisJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKKwl9CisK KwlyZXR1cm4gZG9fZnJlZXplOworfQorCisKIC8qCiAgKiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdt ZW50YXRpb24gYW5kIHBvdGVudGlhbGx5IGZyZWV6ZSB0dXBsZXMgb24gdGhlCiAgKiBzcGVjaWZp ZWQgcGFnZS4gSWYgdGhlIHBhZ2UncyB2aXNpYmlsaXR5IHN0YXR1cyBoYXMgY2hhbmdlZCwgdXBk YXRlIGl0IGluCkBAIC03NjYsMjAgKzEwMjUsMzAgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVl emUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJLyogQ2xlYXIgdGhlIG9mZnNl dCBpbmZvcm1hdGlvbiBvbmNlIHdlIGhhdmUgcHJvY2Vzc2VkIHRoZSBnaXZlbiBwYWdlLiAqLwog CSpvZmZfbG9jID0gSW52YWxpZE9mZnNldE51bWJlcjsKIAotCWRvX3BydW5lID0gcHJzdGF0ZS5u cmVkaXJlY3RlZCA+IDAgfHwKLQkJcHJzdGF0ZS5uZGVhZCA+IDAgfHwKLQkJcHJzdGF0ZS5udW51 c2VkID4gMDsKLQogCS8qCiAJICogQWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIGxpdmUgdHVwbGVz IG9uIHRoZSBwYWdlLCBpZiB0aGUgbmV3ZXN0IHhtaW4KIAkgKiBhbW9uZ3N0IHRoZW0gaXMgbm90 IHZpc2libGUgdG8gZXZlcnlvbmUsIHRoZSBwYWdlIGNhbm5vdCBiZQotCSAqIGFsbC12aXNpYmxl LgorCSAqIGFsbC12aXNpYmxlLiBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgd2UgZGVjaWRlIHdo ZXRoZXIgb3Igbm90IHRvCisJICogb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplIGJlbG93IGJlY2F1 c2Ugd2UgZG8gbm90IHdhbnQgdG8KKwkgKiBvcHBvcnR1bmlzdGljYWxseSBmcmVlemUgdGhlIHBh Z2UgaWYgdGhlcmUgYXJlIGxpdmUgdHVwbGVzIG5vdCB2aXNpYmxlCisJICogdG8gZXZlcnlvbmUs IHdoaWNoIHdvdWxkIHByZXZlbnQgc2V0dGluZyB0aGUgcGFnZSBmcm96ZW4gaW4gdGhlIFZNLgog CSAqLwogCWlmIChwcnN0YXRlLmFsbF92aXNpYmxlICYmCiAJCVRyYW5zYWN0aW9uSWRJc05vcm1h bChwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkgJiYKIAkJIUdsb2JhbFZpc1hpZFZpc2li bGVUb0FsbChwcnN0YXRlLnZpc3Rlc3QsIHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkKSkK IAkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOwogCisJ LyoKKwkgKiBOb3cgZGVjaWRlIGJhc2VkIG9uIGluZm9ybWF0aW9uIGNvbGxlY3RlZCB3aGlsZSBl eGFtaW5pbmcgZXZlcnkgdHVwbGUKKwkgKiB3aGljaCBhY3Rpb25zIHRvIHRha2UuIElmIHRoZXJl IGFyZSBhbnkgcHJ1bmFibGUgdHVwbGVzLCB3ZSdsbCBwcnVuZQorCSAqIHRoZW0uIEhvd2V2ZXIs IHdlIHdpbGwgZGVjaWRlIGJhc2VkIG9uIG9wdGlvbnMgc3BlY2lmaWVkIGJ5IHRoZSBjYWxsZXIK KwkgKiBhbmQgdmFyaW91cyBoZXVyaXN0aWNzIHdoZXRoZXIgb3Igbm90IHRvIGZyZWV6ZSBhbnkg dHVwbGVzIGFuZCB3aGV0aGVyCisJICogb3Igbm90IHRoZSBwYWdlIHNob3VsZCBiZSBzZXQgYWxs LXZpc2libGUvYWxsLWZyb3plbiBpbiB0aGUgVk0uCisJICovCisJZG9fcHJ1bmUgPSBwcnN0YXRl Lm5yZWRpcmVjdGVkID4gMCB8fAorCQlwcnN0YXRlLm5kZWFkID4gMCB8fAorCQlwcnN0YXRlLm51 bnVzZWQgPiAwOworCiAJLyoKIAkgKiBFdmVuIGlmIHdlIGRvbid0IHBydW5lIGFueXRoaW5nLCBp ZiB3ZSBmb3VuZCBhIG5ldyB2YWx1ZSBmb3IgdGhlCiAJICogcGRfcHJ1bmVfeGlkIGZpZWxkIG9y IHRoZSBwYWdlIHdhcyBtYXJrZWQgZnVsbCwgd2Ugd2lsbCB1cGRhdGUgdGhvc2UKQEAgLTc5MCwx ODIgKzEwNTksMzIgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIsCiAJCVBhZ2VJc0Z1bGwocGFnZSk7CiAKIAkvKgotCSAqIERlY2lk ZSBpZiB3ZSB3YW50IHRvIGdvIGFoZWFkIHdpdGggZnJlZXppbmcgYWNjb3JkaW5nIHRvIHRoZSBm cmVlemUKLQkgKiBwbGFucyB3ZSBwcmVwYXJlZCwgb3Igbm90LgotCSAqLwotCWRvX2ZyZWV6ZSA9 IGZhbHNlOwotCWlmIChwcnN0YXRlLmF0dGVtcHRfZnJlZXplKQotCXsKLQkJaWYgKHByc3RhdGUu cGFnZWZyei5mcmVlemVfcmVxdWlyZWQpCi0JCXsKLQkJCS8qCi0JCQkgKiBoZWFwX3ByZXBhcmVf ZnJlZXplX3R1cGxlIGluZGljYXRlZCB0aGF0IGF0IGxlYXN0IG9uZSBYSUQvTVhJRAotCQkJICog ZnJvbSBiZWZvcmUgRnJlZXplTGltaXQvTXVsdGlYYWN0Q3V0b2ZmIGlzIHByZXNlbnQuICBNdXN0 Ci0JCQkgKiBmcmVlemUgdG8gYWR2YW5jZSByZWxmcm96ZW54aWQvcmVsbWlubXhpZC4KLQkJCSAq LwotCQkJZG9fZnJlZXplID0gdHJ1ZTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBP cHBvcnR1bmlzdGljYWxseSBmcmVlemUgdGhlIHBhZ2UgaWYgd2UgYXJlIGdlbmVyYXRpbmcgYW4g RlBJCi0JCQkgKiBhbnl3YXkgYW5kIGlmIGRvaW5nIHNvIG1lYW5zIHRoYXQgd2UgY2FuIHNldCB0 aGUgcGFnZQotCQkJICogYWxsLWZyb3plbiBhZnRlcndhcmRzIChtaWdodCBub3QgaGFwcGVuIHVu dGlsIFZBQ1VVTSdzIGZpbmFsCi0JCQkgKiBoZWFwIHBhc3MpLgotCQkJICoKLQkJCSAqIFhYWDog UHJldmlvdXNseSwgd2Uga25ldyBpZiBwcnVuaW5nIGVtaXR0ZWQgYW4gRlBJIGJ5IGNoZWNraW5n Ci0JCQkgKiBwZ1dhbFVzYWdlLndhbF9mcGkgYmVmb3JlIGFuZCBhZnRlciBwcnVuaW5nLiAgT25j ZSB0aGUgZnJlZXplCi0JCQkgKiBhbmQgcHJ1bmUgcmVjb3JkcyB3ZXJlIGNvbWJpbmVkLCB0aGlz IGhldXJpc3RpYyBjb3VsZG4ndCBiZQotCQkJICogdXNlZCBhbnltb3JlLiAgVGhlIG9wcG9ydHVu aXN0aWMgZnJlZXplIGhldXJpc3RpYyBtdXN0IGJlCi0JCQkgKiBpbXByb3ZlZDsgaG93ZXZlciwg Zm9yIG5vdywgdHJ5IHRvIGFwcHJveGltYXRlIHRoZSBvbGQgbG9naWMuCi0JCQkgKi8KLQkJCWlm IChwcnN0YXRlLmFsbF92aXNpYmxlICYmIHByc3RhdGUuYWxsX2Zyb3plbiAmJiBwcnN0YXRlLm5m cm96ZW4gPiAwKQotCQkJewotCQkJCS8qCi0JCQkJICogRnJlZXppbmcgd291bGQgbWFrZSB0aGUg cGFnZSBhbGwtZnJvemVuLiAgSGF2ZSBhbHJlYWR5Ci0JCQkJICogZW1pdHRlZCBhbiBGUEkgb3Ig d2lsbCBkbyBzbyBhbnl3YXk/Ci0JCQkJICovCi0JCQkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocmVs YXRpb24pKQotCQkJCXsKLQkJCQkJaWYgKGRpZF90dXBsZV9oaW50X2ZwaSkKLQkJCQkJCWRvX2Zy ZWV6ZSA9IHRydWU7Ci0JCQkJCWVsc2UgaWYgKGRvX3BydW5lKQotCQkJCQl7Ci0JCQkJCQlpZiAo WExvZ0NoZWNrQnVmZmVyTmVlZHNCYWNrdXAoYnVmZmVyKSkKLQkJCQkJCQlkb19mcmVlemUgPSB0 cnVlOwotCQkJCQl9Ci0JCQkJCWVsc2UgaWYgKGRvX2hpbnRfZnVsbF9vcl9wcnVuYWJsZSkKLQkJ CQkJewotCQkJCQkJaWYgKFhMb2dIaW50Qml0SXNOZWVkZWQoKSAmJiBYTG9nQ2hlY2tCdWZmZXJO ZWVkc0JhY2t1cChidWZmZXIpKQotCQkJCQkJCWRvX2ZyZWV6ZSA9IHRydWU7Ci0JCQkJCX0KLQkJ CQl9Ci0JCQl9Ci0JCX0KLQl9Ci0KLQlpZiAoZG9fZnJlZXplKQotCXsKLQkJLyoKLQkJICogVmFs aWRhdGUgdGhlIHR1cGxlcyB3ZSB3aWxsIGJlIGZyZWV6aW5nIGJlZm9yZSBlbnRlcmluZyB0aGUK LQkJICogY3JpdGljYWwgc2VjdGlvbi4KLQkJICovCi0JCWhlYXBfcHJlX2ZyZWV6ZV9jaGVja3Mo YnVmZmVyLCBwcnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJvemVuKTsKLQl9Ci0JZWxzZSBpZiAo cHJzdGF0ZS5uZnJvemVuID4gMCkKLQl7Ci0JCS8qCi0JCSAqIFRoZSBwYWdlIGNvbnRhaW5lZCBz b21lIHR1cGxlcyB0aGF0IHdlcmUgbm90IGFscmVhZHkgZnJvemVuLCBhbmQgd2UKLQkJICogY2hv c2Ugbm90IHRvIGZyZWV6ZSB0aGVtIG5vdy4gIFRoZSBwYWdlIHdvbid0IGJlIGFsbC1mcm96ZW4g dGhlbi4KLQkJICovCi0JCUFzc2VydCghcHJzdGF0ZS5wYWdlZnJ6LmZyZWV6ZV9yZXF1aXJlZCk7 Ci0KLQkJcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7Ci0JCXByc3RhdGUubmZyb3plbiA9IDA7 CS8qIGF2b2lkIG1pc2NvdW50cyBpbiBpbnN0cnVtZW50YXRpb24gKi8KLQl9Ci0JZWxzZQotCXsK LQkJLyoKLQkJICogV2UgaGF2ZSBubyBmcmVlemUgcGxhbnMgdG8gZXhlY3V0ZS4gIFRoZSBwYWdl IG1pZ2h0IGFscmVhZHkgYmUKLQkJICogYWxsLWZyb3plbiAocGVyaGFwcyBvbmx5IGZvbGxvd2lu ZyBwcnVuaW5nKSwgdGhvdWdoLiAgU3VjaCBwYWdlcwotCQkgKiBjYW4gYmUgbWFya2VkIGFsbC1m cm96ZW4gaW4gdGhlIFZNIGJ5IG91ciBjYWxsZXIsIGV2ZW4gdGhvdWdoIG5vbmUKLQkJICogb2Yg aXRzIHR1cGxlcyB3ZXJlIG5ld2x5IGZyb3plbiBoZXJlLgotCQkgKi8KLQl9Ci0KLQkvKgotCSAq IEl0IHdhcyBjb252ZW5pZW50IHRvIGlnbm9yZSBMUF9ERUFEIGl0ZW1zIGluIGFsbF92aXNpYmxl IGVhcmxpZXIgb24gdG8KLQkgKiBtYWtlIHRoZSBjaG9pY2Ugb2Ygd2hldGhlciBvciBub3QgdG8g ZnJlZXplIHRoZSBwYWdlIHVuYWZmZWN0ZWQgYnkgdGhlCi0JICogc2hvcnQtdGVybSBwcmVzZW5j ZSBvZiBMUF9ERUFEIGl0ZW1zLiAgVGhlc2UgTFBfREVBRCBpdGVtcyB3ZXJlCi0JICogZWZmZWN0 aXZlbHkgYXNzdW1lZCB0byBiZSBMUF9VTlVTRUQgaXRlbXMgaW4gdGhlIG1ha2luZy4gIEl0IGRv ZXNuJ3QKLQkgKiBtYXR0ZXIgd2hpY2ggdmFjdXVtIGhlYXAgcGFzcyAoaW5pdGlhbCBwYXNzIG9y IGZpbmFsIHBhc3MpIGVuZHMgdXAKLQkgKiBzZXR0aW5nIHRoZSBwYWdlIGFsbC1mcm96ZW4sIGFz IGxvbmcgYXMgdGhlIG9uZ29pbmcgVkFDVVVNIGRvZXMgaXQuCi0JICoKLQkgKiBOb3cgdGhhdCBm cmVlemluZyBoYXMgYmVlbiBmaW5hbGl6ZWQsIHVuc2V0IGFsbF92aXNpYmxlIGlmIHRoZXJlIGFy ZQotCSAqIGFueSBMUF9ERUFEIGl0ZW1zIG9uIHRoZSBwYWdlLiBJdCBuZWVkcyB0byByZWZsZWN0 IHRoZSBwcmVzZW50IHN0YXRlIG9mCi0JICogdGhlIHBhZ2Ugd2hlbiB1c2luZyBpdCB0byBkZXRl cm1pbmUgd2hldGhlciBvciBub3QgdG8gdXBkYXRlIHRoZSBWTS4KLQkgKgotCSAqIEtlZXAgdHJh Y2sgb2Ygd2hldGhlciBvciBub3QgdGhlIHBhZ2Ugd2FzIGFsbC1mcm96ZW4gZXhjZXB0IExQX0RF QUQKLQkgKiBpdGVtcyBmb3IgdGhlIHB1cnBvc2VzIG9mIGNhbGN1bGF0aW5nIHRoZSBzbmFwc2hv dCBjb25mbGljdCBob3Jpem9uLAotCSAqIHRob3VnaC4KKwkgKiBXZSBtdXN0IGRlY2lkZSB3aGV0 aGVyIG9yIG5vdCB0byBmcmVlemUgYmVmb3JlIGRlY2lkaW5nIGlmIGFuZCB3aGF0IHRvCisJICog c2V0IGluIHRoZSBWTS4KIAkgKi8KLQlhbGxfZnJvemVuX2V4Y2VwdF9scF9kZWFkID0gcHJzdGF0 ZS5hbGxfZnJvemVuOwotCWlmIChwcnN0YXRlLmxwZGVhZF9pdGVtcyA+IDApCi0JewotCQlwcnN0 YXRlLmFsbF92aXNpYmxlID0gZmFsc2U7Ci0JCXByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOwot CX0KLQotCS8qCi0JICogSWYgdGhpcyBpcyBhbiBvbi1hY2Nlc3MgY2FsbCBhbmQgd2UncmUgbm90 IGFjdHVhbGx5IHBydW5pbmcsIGF2b2lkCi0JICogc2V0dGluZyB0aGUgdmlzaWJpbGl0eSBtYXAg aWYgaXQgd291bGQgbmV3bHkgZGlydHkgdGhlIGhlYXAgcGFnZSBvciwgaWYKLQkgKiB0aGUgcGFn ZSBpcyBhbHJlYWR5IGRpcnR5LCBpZiBkb2luZyBzbyB3b3VsZCByZXF1aXJlIGluY2x1ZGluZyBh Ci0JICogZnVsbC1wYWdlIGltYWdlIChGUEkpIG9mIHRoZSBoZWFwIHBhZ2UgaW4gdGhlIFdBTC4g VGhpcyBzaXR1YXRpb24KLQkgKiBzaG91bGQgYmUgcmFyZSwgYXMgb24tYWNjZXNzIHBydW5pbmcg aXMgb25seSBhdHRlbXB0ZWQgd2hlbgotCSAqIHBkX3BydW5lX3hpZCBpcyB2YWxpZC4KLQkgKi8K LQlpZiAocmVhc29uID09IFBSVU5FX09OX0FDQ0VTUyAmJgotCQlwcnN0YXRlLmNvbnNpZGVyX3Vw ZGF0ZV92bSAmJgotCQlwcnN0YXRlLmFsbF92aXNpYmxlICYmCi0JCSFkb19wcnVuZSAmJiAhZG9f ZnJlZXplICYmCi0JCSghQnVmZmVySXNEaXJ0eShidWZmZXIpIHx8IFhMb2dDaGVja0J1ZmZlck5l ZWRzQmFja3VwKGJ1ZmZlcikpKQotCXsKLQkJcHJzdGF0ZS5jb25zaWRlcl91cGRhdGVfdm0gPSBm YWxzZTsKLQkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNl OwotCX0KLQotCUFzc2VydCghcHJzdGF0ZS5hbGxfZnJvemVuIHx8IHByc3RhdGUuYWxsX3Zpc2li bGUpOwotCi0JLyoKLQkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQg b24gaW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gKGlmCi0JICogcHJvdmlkZWQsIGUuZy4gYnkgdmFj dXVtIGZyb20gdGhlIGxhc3QgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkKLQkgKiBjYWxsKSwg YW5kIGZyb20gYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gdmFyaWFibGVzLgotCSAqLwotCWlm IChwcnN0YXRlLmNvbnNpZGVyX3VwZGF0ZV92bSkKLQl7Ci0JCS8qCi0JCSAqIENsZWFyIGFueSBW TSBjb3JydXB0aW9uLiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgaW4gYSBjcml0aWNhbAotCQkg KiBzZWN0aW9uLCBzbyB3ZSBkbyBpdCBmaXJzdC4gSWYgUERfQUxMX1ZJU0lCTEUgaXMgaW5jb3Jy ZWN0bHkgc2V0LAotCQkgKiB3ZSBtYXkgbWFyayB0aGUgaGVhcCBwYWdlIGJ1ZmZlciBkaXJ0eSBo ZXJlIGFuZCBjb3VsZCBlbmQgdXAgZG9pbmcKLQkJICogc28gYWdhaW4gbGF0ZXIuIFRoaXMgaXMg bm90IGEgY29ycmVjdG5lc3MgaXNzdWUgYW5kIGlzIGluIHRoZSBwYXRoCi0JCSAqIG9mIFZNIGNv cnJ1cHRpb24sIHNvIHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhlIGV4dHJhCi0JCSAq IHBlcmZvcm1hbmNlIG92ZXJoZWFkLgotCQkgKi8KLQkJaWYgKGlkZW50aWZ5X2FuZF9maXhfdm1f Y29ycnVwdGlvbihyZWxhdGlvbiwKLQkJCQkJCQkJCQkgICBibG9ja25vLCBidWZmZXIsIHBhZ2Us Ci0JCQkJCQkJCQkJICAgYmxrX2tub3duX2F2LCBwcnN0YXRlLmxwZGVhZF9pdGVtcywgdm1idWZm ZXIpKQotCQl7Ci0JCQkvKiBJZiB3ZSBmaXggY29ycnVwdGlvbiwgZG9uJ3QgdXBkYXRlIHRoZSBW TSBmdXJ0aGVyICovCi0JCX0KLQotCQkvKiBEZXRlcm1pbmUgaWYgd2UgYWN0dWFsbHkgbmVlZCB0 byBzZXQgdGhlIFZNIGFuZCB3aGljaCBiaXRzIHRvIHNldC4gKi8KLQkJZWxzZSBpZiAocHJzdGF0 ZS5hbGxfdmlzaWJsZSAmJgotCQkJCSAoIWJsa19rbm93bl9hdiB8fAotCQkJCSAgKHByc3RhdGUu YWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihyZWxhdGlvbiwgYmxvY2tubywgJnZtYnVmZmVy KSkpKQotCQl7Ci0JCQl2bWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7Ci0JCQlp ZiAocHJzdGF0ZS5hbGxfZnJvemVuKQotCQkJCXZtZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExf RlJPWkVOOwotCQl9Ci0JfQotCi0JZG9fc2V0X3ZtID0gdm1mbGFncyAmIFZJU0lCSUxJVFlNQVBf VkFMSURfQklUUzsKLQotCS8qCi0JICogRG9uJ3Qgc2V0IFBEX0FMTF9WSVNJQkxFIHVubGVzcyB3 ZSBhbHNvIHBsYW4gdG8gc2V0IHRoZSBWTS4gV2hpbGUgaXQgaXMKLQkgKiBjb3JyZWN0IGZvciBh IGhlYXAgcGFnZSB0byBoYXZlIFBEX0FMTF9WSVNJQkxFIGV2ZW4gaWYgdGhlIFZNIGlzIG5vdAot CSAqIHNldCwgd2Ugc3Ryb25nbHkgcHJlZmVyIHRvIGtlZXAgdGhlbSBpbiBzeW5jLgotCSAqCi0J ICogUHJpb3IgdG8gUG9zdGdyZXMgMTksIGl0IHdhcyBwb3NzaWJsZSBmb3IgdGhlIHBhZ2UtbGV2 ZWwgYml0IHRvIGJlIHNldAotCSAqIGFuZCB0aGUgVk0gYml0IHRvIGJlIGNsZWFyLiBUaGlzIGNv dWxkIGhhcHBlbiBpZiB3ZSBjcmFzaGVkIGFmdGVyCi0JICogc2V0dGluZyBQRF9BTExfVklTSUJM RSBidXQgYmVmb3JlIHNldHRpbmcgYml0cyBpbiB0aGUgVk0uCi0JICovCi0Jc2V0X3BkX2FsbF92 aXNpYmxlID0gZG9fc2V0X3ZtICYmICFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpOworCWRvX2ZyZWV6 ZSA9IGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLAorCQkJCQkJCQkJICBk b19wcnVuZSwKKwkJCQkJCQkJCSAgZG9faGludF9mdWxsX29yX3BydW5hYmxlLAorCQkJCQkJCQkJ ICBkaWRfdHVwbGVfaGludF9mcGksCisJCQkJCQkJCQkgICZwcnN0YXRlLAorCQkJCQkJCQkJICAm YWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCk7CisKKwlkb19zZXRfdm0gPSBoZWFwX3BhZ2Vfd2ls bF91cGRhdGVfdm0ocmVsYXRpb24sCisJCQkJCQkJCQkJIGJ1ZmZlciwgYmxvY2tubywgcGFnZSwK KwkJCQkJCQkJCQkgcmVhc29uLAorCQkJCQkJCQkJCSBkb19wcnVuZSwgZG9fZnJlZXplLAorCQkJ CQkJCQkJCSBibGtfa25vd25fYXYsCisJCQkJCQkJCQkJICZwcnN0YXRlLAorCQkJCQkJCQkJCSAm dm1idWZmZXIsCisJCQkJCQkJCQkJICZ2bWZsYWdzLCAmc2V0X3BkX2FsbF92aXNpYmxlKTsKIAog CS8qIFNhdmUgdGhlc2UgZm9yIHRoZSBjYWxsZXIgaW4gY2FzZSB3ZSBsYXRlciB6ZXJvIG91dCB2 bWZsYWdzICovCiAJcHJlc3VsdC0+bmV3X3ZtYml0cyA9IHZtZmxhZ3M7CiAKLQkvKiBBbnkgZXJy b3Igd2hpbGUgYXBwbHlpbmcgdGhlIGNoYW5nZXMgaXMgY3JpdGljYWwgKi8KKwkvKgorCSAqIFRp bWUgdG8gYWN0dWFsbHkgbWFrZSB0aGUgY2hhbmdlcyB0byB0aGUgcGFnZSBhbmQgbG9nIHRoZW0u IEFueSBlcnJvcgorCSAqIHdoaWxlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIGlzIGNyaXRpY2FsLgor CSAqLwogCVNUQVJUX0NSSVRfU0VDVElPTigpOwogCiAJaWYgKGRvX2hpbnRfZnVsbF9vcl9wcnVu YWJsZSkKLS0gCjIuNDMuMAoK --00000000000036c732063d5d6d9d--