Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vVYOH-0050CC-2T for pgsql-hackers@arkaria.postgresql.org; Tue, 16 Dec 2025 16:59:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vVYOF-007jqA-2q for pgsql-hackers@arkaria.postgresql.org; Tue, 16 Dec 2025 16:59:12 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vVYOF-007jpu-13 for pgsql-hackers@lists.postgresql.org; Tue, 16 Dec 2025 16:59:12 +0000 Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vVYO9-001523-39 for pgsql-hackers@lists.postgresql.org; Tue, 16 Dec 2025 16:59:11 +0000 Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-b7a6e56193cso892674766b.3 for ; Tue, 16 Dec 2025 08:59:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765904345; x=1766509145; 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=OvqwUfDlhvEbqPO7C8oZlTyDXg4ed4uC0qAplC5naN0=; b=mo8qlOdJEYtqxNg+qeGL4x4hAqnD5CiT9tDw+YNO/s7eCVIb0Qh8haEZcxZ1CTzSfN jN0Sk03f279DrnfCuKb88WA10cuGIZ2/MKCBtUMrRFV/sDSKZFvmRHTT+onAv08/Qq9g k9roJ0ddrmchV7Z5vesp1cbaSIsKgvG+TUqub8M1wrozefYGPdoVTEw8dpZ1e1cCYQ9S PEzI/zdWAbMKU4FB3lESbMqz0XPheERmuFTZlj5drTIe7j7+iT2BZVG919Yp4NOJHJ4e l45fkpnx9OLMfJxHLUDfHFaFv3xQ+V+yV27fw6r0GPq9mK0WTnV16SOHRtEeBV1m4bBK TJZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765904345; x=1766509145; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=OvqwUfDlhvEbqPO7C8oZlTyDXg4ed4uC0qAplC5naN0=; b=dIfG8oj1MT73iXg58eADjRFTDNUlBSf4KTj+MYj61l0vkL7YXm5FQmK7JiOnkqU715 KbUslQ+pOT7ceK8Y40t9KrE2oGKEPFUScjmoRx+nABWPlY/3TFeBRB99gMekA2lv1YZ7 wVD+Q1ZTkPCCrOJhxwJtv8UtP9iqbU4MmUL0viiNJdAcbcUl/28ObuCQl2lBfZRQ1DUu 3WTY055xItV3wki5dLNPRH9XUouttszHZl59BpV4JQ4UTHsCZXwq1KJXiLMgqz+f4O9W R+TTCzQSXnuoCP8Ut12ue+wGwa+MAgIQ60MX/FI/65/Fe/jY5Pn8i6se0J96Hb8ncD/G hRNA== X-Forwarded-Encrypted: i=1; AJvYcCX8tPYU9UUY+j4xqf0tGfE/2VjH+W95rE/25vYNgmBp9tvq7bJk8B+AMm/lhwlmselrjWTvXYoGvikLmtgO@lists.postgresql.org X-Gm-Message-State: AOJu0YyiKpkja330FeM5PCE/8WsvyzfNYacT6sHMoFTFD/jVK5gmTsq6 O779XhvCyy2c+J3HNHhe5Xfqto6urPSnlO0qqnEIiUiVOafQGGt28K3/augc+wRsVDZSkpPOrVN pKQwFz2UiI/albr8njBTc4dQJkObSIZ0= X-Gm-Gg: AY/fxX6TbAOCm5KjZXhh+uj0SHatS4F+M5Dm1uhfVB+6rSa3FthCqTgPi4R3AGPEPQe 1wMFL8FHkfsGA4x0M3CtSqGHma/CL89KHtFJ6IWqzyh9gGaEGQOeIlg3eHUR69keQrmZS2Fgoj7 m0HmvccL8YQAaUxQVSE78PZiSNUZ2FUdV7B0xsSTl2DIKGVp1eziXbMVH1sl1M4eq+jiGYJe1gK ZnpJE0DhW2nKuXF3dR6G+1hn1ncF+7DQfNgsc6Y7nKNj9tmh79uUneofzcllUejdDNXTDHh X-Google-Smtp-Source: AGHT+IH2HEbWkyhwzYCtcRRAlC7V7TQZ1HvRZUNMChPpXJ/fbngwak1cB/Nos7CDuQNQf49/g5P7EGhyVJGEqHybHIg= X-Received: by 2002:a17:907:3e02:b0:b7c:e597:f444 with SMTP id a640c23a62f3a-b7d23c0e5f2mr1736807066b.54.1765904344373; Tue, 16 Dec 2025 08:59:04 -0800 (PST) MIME-Version: 1.0 References: <2wk7jo4m4qwh5sn33pfgerdjfujebbccsmmlownybddbh6nawl@mdyyqpqzxjek> In-Reply-To: From: Melanie Plageman Date: Tue, 16 Dec 2025 11:58:50 -0500 X-Gm-Features: AQt7F2reC6IU6DhQGpGZsw5tQ8IniuRCTK6rQ805fLHk1qkN9ynS-g59mPKFLqE Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Andres Freund Cc: Kirill Reshke , Robert Haas , Andrey Borodin , PostgreSQL Hackers , Heikki Linnakangas , Chao Li Content-Type: multipart/mixed; boundary="00000000000028078b064614a599" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000028078b064614a599 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Dec 3, 2025 at 6:07=E2=80=AFPM Melanie Plageman wrote: > > If we're just talking about the renaming, looking at procarray.c, it > is full of the word "removable" because its functions were largely > used to examine and determine if everyone can see an xmax as committed > and thus if that tuple is removable from their perspective. But > nothing about the code that I can see means it has to be an xmax. We > could just as well use the functions to determine if everyone can see > an xmin as committed. In the attached v27, I've removed the commit that renamed functions in procarray.c. I've added a single wrapper GlobalVisTestXidNotRunning() that is used in my code where I am testing live tuples. I think you'll find that I've addressed all of your review comments now -- as I've also gotten rid of the confusing blk_known_av logic through a series of refactors. The one outstanding point is which commits should bump XLOG_PAGE_MAGIC. (also review of the reworked patches). - Melanie --00000000000028078b064614a599 Content-Type: text/x-patch; charset="UTF-8"; name="v27-0001-Combine-visibilitymap_set-cases-in-lazy_scan_pru.patch" Content-Disposition: attachment; filename="v27-0001-Combine-visibilitymap_set-cases-in-lazy_scan_pru.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8tsidr0 RnJvbSBlYjFhMzcyODQ4ZTMyNzRkOThiMTI5ZDdmNzdjYTFjMTFmNGRjZWI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDggRGVjIDIwMjUgMTU6NDk6NTQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNyAwMS8xNF0gQ29tYmluZSB2aXNpYmlsaXR5bWFwX3NldCgpIGNhc2VzIGluCiBsYXp5 X3NjYW5fcHJ1bmUoKQpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47 IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKbGF6eV9zY2Fu X3BydW5lKCkgcHJldmlvdXNseSBoYWQgdHdvIHNlcGFyYXRlIGNhc2VzIHRoYXQgY2FsbGVkCnZp c2liaWxpdHltYXBfc2V0KCkgYWZ0ZXIgcHJ1bmluZyBhbmQgZnJlZXppbmcuIFRoZXNlIGJyYW5j aGVzIHdlcmUKbmVhcmx5IGlkZW50aWNhbCBleGNlcHQgdGhhdCBvbmUgYXR0ZW1wdGVkIHRvIGF2 b2lkIGRpcnR5aW5nIHRoZSBoZWFwCmJ1ZmZlci4gSG93ZXZlciwgdGhhdCBzaXR1YXRpb24gY2Fu IG5ldmVyIG9jY3VyIOKAlCB0aGUgaGVhcCBidWZmZXIgY2Fubm90CmJlIGNsZWFuIGF0IHRoYXQg cG9pbnQgKGFuZCB3ZSB3b3VsZCBoaXQgYW4gYXNzZXJ0aW9uIGlmIGl0IHdlcmUpLgoKSW4gbGF6 eV9zY2FuX3BydW5lKCksIHdoZW4gd2UgY2hhbmdlIGEgcHJldmlvdXNseSBhbGwtdmlzaWJsZSBw YWdlIHRvCmFsbC1mcm96ZW4gYW5kIHRoZSBwYWdlIHdhcyByZWNvcmRlZCBhcyBhbGwtdmlzaWJs ZSBpbiB0aGUgdmlzaWJpbGl0eQptYXAgYnkgZmluZF9uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKCks IHRoZSBoZWFwIGJ1ZmZlciB3aWxsIGFsd2F5cyBiZQpkaXJ0eS4gRWl0aGVyIHdlIGhhdmUganVz dCBmcm96ZW4gYSB0dXBsZSBhbmQgYWxyZWFkeSBkaXJ0aWVkIHRoZQpidWZmZXIsIG9yIHRoZSBi dWZmZXIgd2FzIG1vZGlmaWVkIGJldHdlZW4gZmluZF9uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKCkK YW5kIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgYW5kIHRoZW4gcHJ1bmVkIGluCmhlYXBf cGFnZV9wcnVuZV9hbmRfZnJlZXplKCkuCgpBZGRpdGlvbmFsbHksIFhMb2dSZWdpc3RlckJ1ZmZl cigpIGFzc2VydHMgdGhhdCB0aGUgYnVmZmVyIGlzIGRpcnR5LCBzbwphdHRlbXB0aW5nIHRvIGFk ZCBhIGNsZWFuIGhlYXAgYnVmZmVyIHRvIHRoZSBXQUwgY2hhaW4gd291bGQgZmFpbAphbnl3YXku CgpTaW5jZSB0aGUg4oCcY2xlYW4gaGVhcCBidWZmZXIgd2l0aCBhbHJlYWR5IHNldCBWTeKAnSBj YXNlIGlzIGltcG9zc2libGUsCnRoZSB0d28gdmlzaWJpbGl0eW1hcF9zZXQoKSBicmFuY2hlcyBp biBsYXp5X3NjYW5fcHJ1bmUoKSBjYW4gYmUgbWVyZ2VkLgpEb2luZyBzbyBtYWtlcyB0aGUgaW50 ZW50IGNsZWFyZXIgYW5kIGVtcGhhc2l6ZXMgdGhhdCB0aGUgaGVhcCBidWZmZXIKbXVzdCBhbHdh eXMgYmUgbWFya2VkIGRpcnR5IGJlZm9yZSBiZWluZyBhZGRlZCB0byB0aGUgV0FMIGNoYWluLgoK VGhpcyBjb21taXQgYWxzbyBhZGRzIGEgdGVzdCBjYXNlIGZvciB2YWN1dW1pbmcgd2hlbiBubyBo ZWFwCm1vZGlmaWNhdGlvbnMgYXJlIHJlcXVpcmVkLiBDdXJyZW50bHkgdGhpcyBlbnN1cmVzIHRo YXQgdGhlIGhlYXAgYnVmZmVyCmlzIG1hcmtlZCBkaXJ0eSBiZWZvcmUgaXQgaXMgYWRkZWQgdG8g dGhlIFdBTCBjaGFpbiwgYnV0IGlmIHdlIGxhdGVyCnJlbW92ZSB0aGUgaGVhcCBidWZmZXIgZnJv bSB0aGUgVk0tc2V0IFdBTCBjaGFpbiBvciBwYXNzIGl0IHdpdGggdGhlClJFR0JVRl9OT19DSEFO R0VTIGZsYWcsIHRoaXMgdGVzdCB3b3VsZCBndWFyZCB0aGF0IGJlaGF2aW9yLgoKQXV0aG9yOiBN ZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTog Q2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0 Z3IuZXMvbS81Q0VBQTE2Mi02N0IxLTQ0REEtQjYwRC04QjY1NzE3RThCMDUlNDBnbWFpbC5jb20K LS0tCiAuLi4vcGdfdmlzaWJpbGl0eS9leHBlY3RlZC9wZ192aXNpYmlsaXR5Lm91dCAgfCAzNSAr KysrKysrCiBjb250cmliL3BnX3Zpc2liaWxpdHkvc3FsL3BnX3Zpc2liaWxpdHkuc3FsICAgfCAx NiArKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgICAgfCA5 NSArKysrKy0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDczIGluc2VydGlvbnMoKyks IDczIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9leHBl Y3RlZC9wZ192aXNpYmlsaXR5Lm91dCBiL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9leHBlY3RlZC9w Z192aXNpYmlsaXR5Lm91dAppbmRleCAwOWZhNTkzM2EzNS4uY2JjMDRhYWQwMTYgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9leHBlY3RlZC9wZ192aXNpYmlsaXR5Lm91dAorKysg Yi9jb250cmliL3BnX3Zpc2liaWxpdHkvZXhwZWN0ZWQvcGdfdmlzaWJpbGl0eS5vdXQKQEAgLTIw NCw2ICsyMDQsNDEgQEAgc2VsZWN0IHBnX3RydW5jYXRlX3Zpc2liaWxpdHlfbWFwKCd0ZXN0X3Bh cnRpdGlvbicpOwogIAogKDEgcm93KQogCistLSB0ZXN0IHRoZSBjYXNlIHdoZXJlIHZhY3V1bSBw aGFzZSBJIGRvZXMgbm90IG5lZWQgdG8gbW9kaWZ5IHRoZSBoZWFwIGJ1ZmZlcgorLS0gYW5kIG9u bHkgbmVlZHMgdG8gc2V0IHRoZSBWTQorY3JlYXRlIHRhYmxlIHRlc3RfdmFjX3VubW9kaWZpZWRf aGVhcChhIGludCk7CitpbnNlcnQgaW50byB0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAgdmFsdWVz ICgxKTsKK3ZhY3V1bSAoZnJlZXplKSB0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXA7CitzZWxlY3Qg cGdfdmlzaWJpbGl0eV9tYXBfc3VtbWFyeSgndGVzdF92YWNfdW5tb2RpZmllZF9oZWFwJyk7Cisg cGdfdmlzaWJpbGl0eV9tYXBfc3VtbWFyeSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICgxLDEpCisoMSByb3cpCisKKy0tIHRoZSBjaGVja3BvaW50IGNsZWFucyB0aGUgYnVmZmVyIGRp cnRpZWQgYnkgZnJlZXppbmcgdGhlIHNvbGUgdHVwbGUKK2NoZWNrcG9pbnQ7CistLSB0cnVuY2F0 aW5nIHRoZSBWTSBlbnN1cmVzIHRoYXQgdGhlIG5leHQgdmFjdXVtIHdpbGwgbmVlZCB0byBzZXQg aXQKK3NlbGVjdCBwZ190cnVuY2F0ZV92aXNpYmlsaXR5X21hcCgndGVzdF92YWNfdW5tb2RpZmll ZF9oZWFwJyk7CisgcGdfdHJ1bmNhdGVfdmlzaWJpbGl0eV9tYXAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBwZ192aXNpYmlsaXR5X21hcF9zdW1t YXJ5KCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnKTsKKyBwZ192aXNpYmlsaXR5X21hcF9zdW1t YXJ5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKDAsMCkKKygxIHJvdykKKworLS0g dmFjdXVtIHNldHMgdGhlIFZNIGJ1dCBkb2VzIG5vdCBuZWVkIHRvIHNldCBQRF9BTExfVklTSUJM RSBzbyBubyBoZWFwIHBhZ2UKKy0tIG1vZGlmaWNhdGlvbgordmFjdXVtIHRlc3RfdmFjX3VubW9k aWZpZWRfaGVhcDsKK3NlbGVjdCBwZ192aXNpYmlsaXR5X21hcF9zdW1tYXJ5KCd0ZXN0X3ZhY191 bm1vZGlmaWVkX2hlYXAnKTsKKyBwZ192aXNpYmlsaXR5X21hcF9zdW1tYXJ5IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKDEsMSkKKygxIHJvdykKKwogLS0gdGVzdCBjb3B5IGZyZWV6 ZQogY3JlYXRlIHRhYmxlIGNvcHlmcmVlemUgKGEgaW50LCBiIGNoYXIoMTUwMCkpOwogLS0gbG9h ZCBhbGwgcm93cyB2aWEgQ09QWSBGUkVFWkUgYW5kIGVuc3VyZSB0aGF0IGFsbCBwYWdlcyBhcmUg c2V0IGFsbC12aXNpYmxlCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3Zpc2liaWxpdHkvc3FsL3Bn X3Zpc2liaWxpdHkuc3FsIGIvY29udHJpYi9wZ192aXNpYmlsaXR5L3NxbC9wZ192aXNpYmlsaXR5 LnNxbAppbmRleCA1YWYwNmVjNWI3Ni4uMGQxMzExNjI0OGIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cGdfdmlzaWJpbGl0eS9zcWwvcGdfdmlzaWJpbGl0eS5zcWwKKysrIGIvY29udHJpYi9wZ192aXNp YmlsaXR5L3NxbC9wZ192aXNpYmlsaXR5LnNxbApAQCAtOTQsNiArOTQsMjIgQEAgc2VsZWN0IGNv dW50KCopID4gMCBmcm9tIHBnX3Zpc2liaWxpdHlfbWFwX3N1bW1hcnkoJ3Rlc3RfcGFydGl0aW9u Jyk7CiBzZWxlY3QgKiBmcm9tIHBnX2NoZWNrX2Zyb3plbigndGVzdF9wYXJ0aXRpb24nKTsgLS0g aG9wZWZ1bGx5IG5vbmUKIHNlbGVjdCBwZ190cnVuY2F0ZV92aXNpYmlsaXR5X21hcCgndGVzdF9w YXJ0aXRpb24nKTsKIAorLS0gdGVzdCB0aGUgY2FzZSB3aGVyZSB2YWN1dW0gcGhhc2UgSSBkb2Vz IG5vdCBuZWVkIHRvIG1vZGlmeSB0aGUgaGVhcCBidWZmZXIKKy0tIGFuZCBvbmx5IG5lZWRzIHRv IHNldCB0aGUgVk0KK2NyZWF0ZSB0YWJsZSB0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAoYSBpbnQp OworaW5zZXJ0IGludG8gdGVzdF92YWNfdW5tb2RpZmllZF9oZWFwIHZhbHVlcyAoMSk7Cit2YWN1 dW0gKGZyZWV6ZSkgdGVzdF92YWNfdW5tb2RpZmllZF9oZWFwOworc2VsZWN0IHBnX3Zpc2liaWxp dHlfbWFwX3N1bW1hcnkoJ3Rlc3RfdmFjX3VubW9kaWZpZWRfaGVhcCcpOworLS0gdGhlIGNoZWNr cG9pbnQgY2xlYW5zIHRoZSBidWZmZXIgZGlydGllZCBieSBmcmVlemluZyB0aGUgc29sZSB0dXBs ZQorY2hlY2twb2ludDsKKy0tIHRydW5jYXRpbmcgdGhlIFZNIGVuc3VyZXMgdGhhdCB0aGUgbmV4 dCB2YWN1dW0gd2lsbCBuZWVkIHRvIHNldCBpdAorc2VsZWN0IHBnX3RydW5jYXRlX3Zpc2liaWxp dHlfbWFwKCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnKTsKK3NlbGVjdCBwZ192aXNpYmlsaXR5 X21hcF9zdW1tYXJ5KCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnKTsKKy0tIHZhY3V1bSBzZXRz IHRoZSBWTSBidXQgZG9lcyBub3QgbmVlZCB0byBzZXQgUERfQUxMX1ZJU0lCTEUgc28gbm8gaGVh cCBwYWdlCistLSBtb2RpZmljYXRpb24KK3ZhY3V1bSB0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXA7 CitzZWxlY3QgcGdfdmlzaWJpbGl0eV9tYXBfc3VtbWFyeSgndGVzdF92YWNfdW5tb2RpZmllZF9o ZWFwJyk7CisKIC0tIHRlc3QgY29weSBmcmVlemUKIGNyZWF0ZSB0YWJsZSBjb3B5ZnJlZXplIChh IGludCwgYiBjaGFyKDE1MDApKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmlu ZGV4IDYyMDM1YjdmOWMzLi44MTFlN2UzMzY3OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYwpAQCAtMjA5NCwxNiArMjA5NCwxNCBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0 ZSAqdmFjcmVsLAogCSAqIG9mIGxhc3QgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCks IGFuZCBmcm9tIGFsbF92aXNpYmxlIGFuZAogCSAqIGFsbF9mcm96ZW4gdmFyaWFibGVzCiAJICov Ci0JaWYgKCFhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5hbGxfdmlzaWJs ZSkKKwlpZiAoKHByZXN1bHQuYWxsX3Zpc2libGUgJiYgIWFsbF92aXNpYmxlX2FjY29yZGluZ190 b192bSkgfHwKKwkJKHByZXN1bHQuYWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihyZWwsIGJs a25vLCAmdm1idWZmZXIpKSkKIAl7CiAJCXVpbnQ4CQlvbGRfdm1iaXRzOwotCQl1aW50OAkJZmxh Z3MgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOworCQl1aW50OAkJbmV3X3ZtYml0cyA9IFZJ U0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CiAKIAkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJ ewotCQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hv cml6b24pKTsKLQkJCWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKLQkJfQorCQkJ bmV3X3ZtYml0cyB8PSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU47CiAKIAkJLyoKIAkJICogSXQg c2hvdWxkIG5ldmVyIGJlIHRoZSBjYXNlIHRoYXQgdGhlIHZpc2liaWxpdHkgbWFwIHBhZ2UgaXMg c2V0CkBAIC0yMTExLDE5ICsyMTA5LDI5IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2 YWNyZWwsCiAJCSAqIGNoZWNrc3VtcyBhcmUgbm90IGVuYWJsZWQpLiAgUmVnYXJkbGVzcywgc2V0 IGJvdGggYml0cyBzbyB0aGF0IHdlCiAJCSAqIGdldCBiYWNrIGluIHN5bmMuCiAJCSAqCi0JCSAq IE5COiBJZiB0aGUgaGVhcCBwYWdlIGlzIGFsbC12aXNpYmxlIGJ1dCB0aGUgVk0gYml0IGlzIG5v dCBzZXQsIHdlCi0JCSAqIGRvbid0IG5lZWQgdG8gZGlydHkgdGhlIGhlYXAgcGFnZS4gIEhvd2V2 ZXIsIGlmIGNoZWNrc3VtcyBhcmUKLQkJICogZW5hYmxlZCwgd2UgZG8gbmVlZCB0byBtYWtlIHN1 cmUgdGhhdCB0aGUgaGVhcCBwYWdlIGlzIGRpcnRpZWQKLQkJICogYmVmb3JlIHBhc3NpbmcgaXQg dG8gdmlzaWJpbGl0eW1hcF9zZXQoKSwgYmVjYXVzZSBpdCBtYXkgYmUgbG9nZ2VkLgotCQkgKiBH aXZlbiB0aGF0IHRoaXMgc2l0dWF0aW9uIHNob3VsZCBvbmx5IGhhcHBlbiBpbiByYXJlIGNhc2Vz IGFmdGVyIGEKLQkJICogY3Jhc2gsIGl0IGlzIG5vdCB3b3J0aCBvcHRpbWl6aW5nLgorCQkgKiBF dmVuIGlmIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LCB3ZSBkb24ndCBuZWVkIHRvIHdv cnJ5IGFib3V0CisJCSAqIHVubmVjZXNzYXJpbHkgZGlydHlpbmcgdGhlIGhlYXAgYnVmZmVyLCBh cyBpdCBtdXN0IGJlIG1hcmtlZCBkaXJ0eQorCQkgKiBiZWZvcmUgYWRkaW5nIGl0IHRvIHRoZSBX QUwgY2hhaW4uIFRoZSBvbmx5IHNjZW5hcmlvIHdoZXJlIGl0IGlzCisJCSAqIG5vdCBhbHJlYWR5 IGRpcnR5IGlzIGlmIHRoZSBWTSB3YXMgcmVtb3ZlZCwgYW5kIHRoYXQgaXNuJ3Qgd29ydGgKKwkJ ICogb3B0aW1pemluZyBmb3IuCiAJCSAqLwogCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKIAkJ TWFya0J1ZmZlckRpcnR5KGJ1Zik7CisKKwkJLyoKKwkJICogSWYgdGhlIHBhZ2UgaXMgYmVpbmcg c2V0IGFsbC1mcm96ZW4sIHdlIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQKKwkJICogYXMgdGhl IGN1dG9mZl94aWQsIHNpbmNlIGEgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBzdWZmaWNpZW50 IHRvCisJCSAqIG1ha2UgZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0 aGUgcGFnZSdzIHR1cGxlcworCQkgKiB3ZXJlIGZyb3plbi4KKwkJICovCisJCUFzc2VydCghcHJl c3VsdC5hbGxfZnJvemVuIHx8CisJCQkgICAhVHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC52 bV9jb25mbGljdF9ob3Jpem9uKSk7CisKIAkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0 KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLAogCQkJCQkJCQkJICAgSW52YWxpZFhMb2dSZWNQdHIs Ci0JCQkJCQkJCQkgICB2bWJ1ZmZlciwgcHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uLAotCQkJ CQkJCQkJICAgZmxhZ3MpOworCQkJCQkJCQkJICAgdm1idWZmZXIsCisJCQkJCQkJCQkgICBwcmVz dWx0LnZtX2NvbmZsaWN0X2hvcml6b24sCisJCQkJCQkJCQkgICBuZXdfdm1iaXRzKTsKIAogCQkv KgogCQkgKiBJZiB0aGUgcGFnZSB3YXNuJ3QgYWxyZWFkeSBzZXQgYWxsLXZpc2libGUgYW5kL29y IGFsbC1mcm96ZW4gaW4gdGhlCkBAIC0yMTkxLDY1ICsyMTk5LDYgQEAgbGF6eV9zY2FuX3BydW5l KExWUmVsU3RhdGUgKnZhY3JlbCwKIAkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwog CX0KIAotCS8qCi0JICogSWYgdGhlIGFsbC12aXNpYmxlIHBhZ2UgaXMgYWxsLWZyb3plbiBidXQg bm90IG1hcmtlZCBhcyBzdWNoIHlldCwgbWFyawotCSAqIGl0IGFzIGFsbC1mcm96ZW4uCi0JICov Ci0JZWxzZSBpZiAoYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmIHByZXN1bHQuYWxsX2Zy b3plbiAmJgotCQkJICFWTV9BTExfRlJPWkVOKHZhY3JlbC0+cmVsLCBibGtubywgJnZtYnVmZmVy KSkKLQl7Ci0JCXVpbnQ4CQlvbGRfdm1iaXRzOwotCi0JCS8qCi0JCSAqIEF2b2lkIHJlbHlpbmcg b24gYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGFzIGEgcHJveHkgZm9yIHRoZQotCQkgKiBw YWdlLWxldmVsIFBEX0FMTF9WSVNJQkxFIGJpdCBiZWluZyBzZXQsIHNpbmNlIGl0IG1pZ2h0IGhh dmUgYmVjb21lCi0JCSAqIHN0YWxlIC0tIGV2ZW4gd2hlbiBhbGxfdmlzaWJsZSBpcyBzZXQKLQkJ ICovCi0JCWlmICghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKLQkJewotCQkJUGFnZVNldEFsbFZp c2libGUocGFnZSk7Ci0JCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKLQkJfQotCi0JCS8qCi0JCSAq IFNldCB0aGUgcGFnZSBhbGwtZnJvemVuIChhbmQgYWxsLXZpc2libGUpIGluIHRoZSBWTS4KLQkJ ICoKLQkJICogV2UgY2FuIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMgb3VyIGN1dG9mZl94 aWQsIHNpbmNlIGEKLQkJICogc25hcHNob3RDb25mbGljdEhvcml6b24gc3VmZmljaWVudCB0byBt YWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETwotCQkgKiB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBh Z2UncyB0dXBsZXMgd2VyZSBmcm96ZW4uCi0JCSAqLwotCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikpOwotCQlvbGRfdm1iaXRzID0gdmlz aWJpbGl0eW1hcF9zZXQodmFjcmVsLT5yZWwsIGJsa25vLCBidWYsCi0JCQkJCQkJCQkgICBJbnZh bGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkJCSAgIHZtYnVmZmVyLCBJbnZhbGlkVHJhbnNhY3Rpb25J ZCwKLQkJCQkJCQkJCSAgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkJICAg VklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKLQotCQkvKgotCQkgKiBUaGUgcGFnZSB3YXMgbGlr ZWx5IGFscmVhZHkgc2V0IGFsbC12aXNpYmxlIGluIHRoZSBWTS4gSG93ZXZlciwKLQkJICogdGhl cmUgaXMgYSBzbWFsbCBjaGFuY2UgdGhhdCBpdCB3YXMgbW9kaWZpZWQgc29tZXRpbWUgYmV0d2Vl bgotCQkgKiBzZXR0aW5nIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSBhbmQgY2hlY2tpbmcg dGhlIHZpc2liaWxpdHkKLQkJICogZHVyaW5nIHBydW5pbmcuIENoZWNrIHRoZSByZXR1cm4gdmFs dWUgb2Ygb2xkX3ZtYml0cyBhbnl3YXkgdG8KLQkJICogZW5zdXJlIHRoZSB2aXNpYmlsaXR5IG1h cCBjb3VudGVycyB1c2VkIGZvciBsb2dnaW5nIGFyZSBhY2N1cmF0ZS4KLQkJICovCi0JCWlmICgo b2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09IDApCi0JCXsKLQkJCXZh Y3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKLQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVf ZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOwotCQl9Ci0KLQkJLyoK LQkJICogV2UgYWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIHBhZ2Ugd2FzIG5vdCBzZXQgYWxsLWZy b3plbiBpbiB0aGUgVk0KLQkJICogYWJvdmUsIHNvIHdlIGRvbid0IG5lZWQgdG8gdGVzdCB0aGUg dmFsdWUgb2Ygb2xkX3ZtYml0cy4KLQkJICovCi0JCWVsc2UKLQkJewotCQkJdmFjcmVsLT52bV9u ZXdfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOwotCQl9Ci0JfQot CiAJcmV0dXJuIHByZXN1bHQubmRlbGV0ZWQ7CiB9CiAKLS0gCjIuNDMuMAoK --00000000000028078b064614a599 Content-Type: text/x-patch; charset="US-ASCII"; name="v27-0002-Eliminate-use-of-cached-VM-value-in-lazy_scan_pr.patch" Content-Disposition: attachment; filename="v27-0002-Eliminate-use-of-cached-VM-value-in-lazy_scan_pr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8tsm8d1 RnJvbSA4MDhkOGE1ODE2ZjA3NjQ0NzFhYjkyZDQzYzU3NTE4Mjc5Y2Q1M2MyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDExIERlYyAyMDI1IDEwOjQ4OjEzIC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MjcgMDIvMTRdIEVsaW1pbmF0ZSB1c2Ugb2YgY2FjaGVkIFZNIHZhbHVlIGluCiBsYXp5 X3NjYW5fcHJ1bmUoKQoKbGF6eV9zY2FuX3BydW5lKCkgdGFrZXMgYSBwYXJhbWV0ZXIgZnJvbSBs YXp5X3NjYW5faGVhcCgpIGluZGljYXRpbmcKd2hldGhlciB0aGUgcGFnZSB3YXMgbWFya2VkIGFs bC12aXNpYmxlIGluIHRoZSBWTSBhdCB0aGUgdGltZSBpdCB3YXMKbGFzdCBjaGVja2VkIGluIGZp bmRfbmV4dF91bnNraXBwYWJsZV9ibG9jaygpLiBUaGlzIGJlaGF2aW9yIGlzCmhpc3RvcmljYWws IGRhdGluZyBiYWNrIHRvIGNvbW1pdCA2MDgxOTVhM2EzNjUsIHdoZW4gd2UgZGlkIG5vdCBwaW4g dGhlClZNIHBhZ2UgdW50aWwgY29uZmlybWluZyBpdCB3YXMgbm90IGFsbC12aXNpYmxlLiBOb3cg dGhhdCB0aGUgVk0gcGFnZSBpcwphbHJlYWR5IHBpbm5lZCwgdGhlcmUgaXMgbm8gbWVhbmluZ2Z1 bCBiZW5lZml0IHRvIHJlbHlpbmcgb24gYSBjYWNoZWQgVk0Kc3RhdHVzLgoKUmVtb3ZpbmcgdGhp cyBjYWNoZWQgdmFsdWUgc2ltcGxpZmllcyB0aGUgbG9naWMgaW4gYm90aCBsYXp5X3NjYW5faGVh cCgpCmFuZCBsYXp5X3NjYW5fcHJ1bmUoKS4gSXQgYWxzbyBjbGFyaWZpZXMgZnV0dXJlIHdvcmsg dGhhdCB3aWxsIHNldCB0aGUKdmlzaWJpbGl0eSBtYXAgb24tYWNjZXNzOiBzdWNoIHBhdGhzIHdp bGwgbm90IGhhdmUgYSBjYWNoZWQgdmFsdWUKYXZhaWxhYmxlIHdoaWNoIHdvdWxkIG1ha2UgdGhl IGxvZ2ljIGhhcmRlciB0byByZWFzb24gYWJvdXQuIEVsaW1pbmF0aW5nCml0IGFsc28gZW5hYmxl cyB1cyB0byBkZXRlY3QgYW5kIHJlcGFpciBWTSBjb3JydXB0aW9uIG9uLWFjY2Vzcy4KCkFsb25n IHdpdGggcmVtb3ZpbmcgdGhlIGNhY2hlZCB2YWx1ZSBhbmQgdW5jb25kaXRpb25hbGx5IGNoZWNr aW5nIHRoZQp2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgaGVhcCBwYWdlLCB0aGlzIGNvbW1pdCBh bHNvIG1vdmVzIHRoZSBWTQpjb3JydXB0aW9uIGhhbmRsaW5nIHRvIG9jY3VyIGZpcnN0LiBUaGlz IHJlb3JkZXJpbmcgc2hvdWxkIGhhdmUgbm8KcGVyZm9ybWFuY2UgaW1wYWN0LCBzaW5jZSB0aGUg Y2hlY2tzIGFyZSBpbmV4cGVuc2l2ZSBhbmQgcGVyZm9ybWVkIG9ubHkKb25jZSBwZXIgcGFnZS4g SXQgZG9lcywgaG93ZXZlciwgbWFrZSB0aGUgY29udHJvbCBmbG93IGVhc2llciB0bwp1bmRlcnN0 YW5kLiBUaGUgbmV3IHJlc3RydWN0dXJpbmcgYWxzbyBtYWtlcyBpdCBwb3NzaWJsZSB0aGF0IGFm dGVyCmZpeGluZyBjb3JydXB0aW9uLCB0aGUgVk0gY291bGQgYmUgbmV3bHkgc2V0LCBpZiBwcnVu aW5nIGZvdW5kIHRoZSBwYWdlCmFsbC12aXNpYmxlLgoKQXV0aG9yOiBNZWxhbmllIFBsYWdlbWFu IDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5l cy9tLzVDRUFBMTYyLTY3QjEtNDREQS1CNjBELThCNjU3MTdFOEIwNSU0MGdtYWlsLmNvbQotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8IDE3MiArKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA3OSBpbnNlcnRpb25zKCspLCA5MyBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggODExZTdlMzM2 NzguLjQzNjE0M2NkMTJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0y NTMsNyArMjUzLDYgQEAgdHlwZWRlZiBlbnVtCiAgKiBhYm91dCB0aGUgYmxvY2sgaXQgcmVhZCB0 byB0aGUgY2FsbGVyLgogICovCiAjZGVmaW5lIFZBQ19CTEtfV0FTX0VBR0VSX1NDQU5ORUQgKDEg PDwgMCkKLSNkZWZpbmUgVkFDX0JMS19BTExfVklTSUJMRV9BQ0NPUkRJTkdfVE9fVk0gKDEgPDwg MSkKIAogdHlwZWRlZiBzdHJ1Y3QgTFZSZWxTdGF0ZQogewpAQCAtMzU4LDcgKzM1Nyw2IEBAIHR5 cGVkZWYgc3RydWN0IExWUmVsU3RhdGUKIAkvKiBTdGF0ZSBtYWludGFpbmVkIGJ5IGhlYXBfdmFj X3NjYW5fbmV4dF9ibG9jaygpICovCiAJQmxvY2tOdW1iZXIgY3VycmVudF9ibG9jazsJLyogbGFz dCBibG9jayByZXR1cm5lZCAqLwogCUJsb2NrTnVtYmVyIG5leHRfdW5za2lwcGFibGVfYmxvY2s7 IC8qIG5leHQgdW5za2lwcGFibGUgYmxvY2sgKi8KLQlib29sCQluZXh0X3Vuc2tpcHBhYmxlX2Fs bHZpczsJLyogaXRzIHZpc2liaWxpdHkgc3RhdHVzICovCiAJYm9vbAkJbmV4dF91bnNraXBwYWJs ZV9lYWdlcl9zY2FubmVkOyAvKiBpZiBpdCB3YXMgZWFnZXJseSBzY2FubmVkICovCiAJQnVmZmVy CQluZXh0X3Vuc2tpcHBhYmxlX3ZtYnVmZmVyOwkvKiBidWZmZXIgY29udGFpbmluZyBpdHMgVk0g Yml0ICovCiAKQEAgLTQzMiw3ICs0MzAsNyBAQCBzdGF0aWMgYm9vbCBsYXp5X3NjYW5fbmV3X29y X2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQkJICAgYm9vbCBz aGFyZWxvY2ssIEJ1ZmZlciB2bWJ1ZmZlcik7CiBzdGF0aWMgaW50CWxhenlfc2Nhbl9wcnVuZShM VlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkJQmxvY2tOdW1iZXIgYmxrbm8s IFBhZ2UgcGFnZSwKLQkJCQkJCQlCdWZmZXIgdm1idWZmZXIsIGJvb2wgYWxsX3Zpc2libGVfYWNj b3JkaW5nX3RvX3ZtLAorCQkJCQkJCUJ1ZmZlciB2bWJ1ZmZlciwKIAkJCQkJCQlib29sICpoYXNf bHBkZWFkX2l0ZW1zLCBib29sICp2bV9wYWdlX2Zyb3plbik7CiBzdGF0aWMgYm9vbCBsYXp5X3Nj YW5fbm9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkJICBCbG9j a051bWJlciBibGtubywgUGFnZSBwYWdlLApAQCAtMTI0OSw3ICsxMjQ3LDYgQEAgbGF6eV9zY2Fu X2hlYXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCS8qIEluaXRpYWxpemUgZm9yIHRoZSBmaXJzdCBo ZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBjYWxsICovCiAJdmFjcmVsLT5jdXJyZW50X2Jsb2Nr ID0gSW52YWxpZEJsb2NrTnVtYmVyOwogCXZhY3JlbC0+bmV4dF91bnNraXBwYWJsZV9ibG9jayA9 IEludmFsaWRCbG9ja051bWJlcjsKLQl2YWNyZWwtPm5leHRfdW5za2lwcGFibGVfYWxsdmlzID0g ZmFsc2U7CiAJdmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxlX2VhZ2VyX3NjYW5uZWQgPSBmYWxzZTsK IAl2YWNyZWwtPm5leHRfdW5za2lwcGFibGVfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCkBA IC0xMjY1LDEzICsxMjYyLDEzIEBAIGxhenlfc2Nhbl9oZWFwKExWUmVsU3RhdGUgKnZhY3JlbCkK IAkJCQkJCQkJCQlNQUlOX0ZPUktOVU0sCiAJCQkJCQkJCQkJaGVhcF92YWNfc2Nhbl9uZXh0X2Js b2NrLAogCQkJCQkJCQkJCXZhY3JlbCwKLQkJCQkJCQkJCQlzaXplb2YodWludDgpKTsKKwkJCQkJ CQkJCQlzaXplb2YoYm9vbCkpOwogCiAJd2hpbGUgKHRydWUpCiAJewogCQlCdWZmZXIJCWJ1ZjsK IAkJUGFnZQkJcGFnZTsKLQkJdWludDgJCWJsa19pbmZvID0gMDsKKwkJYm9vbAkJd2FzX2VhZ2Vy X3NjYW5uZWQgPSBmYWxzZTsKIAkJaW50CQkJbmRlbGV0ZWQgPSAwOwogCQlib29sCQloYXNfbHBk ZWFkX2l0ZW1zOwogCQl2b2lkCSAgICpwZXJfYnVmZmVyX2RhdGEgPSBOVUxMOwpAQCAtMTM0MCwx MyArMTMzNywxMyBAQCBsYXp5X3NjYW5faGVhcChMVlJlbFN0YXRlICp2YWNyZWwpCiAJCWlmICgh QnVmZmVySXNWYWxpZChidWYpKQogCQkJYnJlYWs7CiAKLQkJYmxrX2luZm8gPSAqKCh1aW50OCAq KSBwZXJfYnVmZmVyX2RhdGEpOworCQl3YXNfZWFnZXJfc2Nhbm5lZCA9ICooKGJvb2wgKikgcGVy X2J1ZmZlcl9kYXRhKTsKIAkJQ2hlY2tCdWZmZXJJc1Bpbm5lZE9uY2UoYnVmKTsKIAkJcGFnZSA9 IEJ1ZmZlckdldFBhZ2UoYnVmKTsKIAkJYmxrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWYp OwogCiAJCXZhY3JlbC0+c2Nhbm5lZF9wYWdlcysrOwotCQlpZiAoYmxrX2luZm8gJiBWQUNfQkxL X1dBU19FQUdFUl9TQ0FOTkVEKQorCQlpZiAod2FzX2VhZ2VyX3NjYW5uZWQpCiAJCQl2YWNyZWwt PmVhZ2VyX3NjYW5uZWRfcGFnZXMrKzsKIAogCQkvKiBSZXBvcnQgYXMgYmxvY2sgc2Nhbm5lZCwg dXBkYXRlIGVycm9yIHRyYWNlYmFjayBpbmZvcm1hdGlvbiAqLwpAQCAtMTQxNyw3ICsxNDE0LDYg QEAgbGF6eV9zY2FuX2hlYXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCQlpZiAoZ290X2NsZWFudXBf bG9jaykKIAkJCW5kZWxldGVkID0gbGF6eV9zY2FuX3BydW5lKHZhY3JlbCwgYnVmLCBibGtubywg cGFnZSwKIAkJCQkJCQkJCSAgIHZtYnVmZmVyLAotCQkJCQkJCQkJICAgYmxrX2luZm8gJiBWQUNf QkxLX0FMTF9WSVNJQkxFX0FDQ09SRElOR19UT19WTSwKIAkJCQkJCQkJCSAgICZoYXNfbHBkZWFk X2l0ZW1zLCAmdm1fcGFnZV9mcm96ZW4pOwogCiAJCS8qCkBAIC0xNDM0LDggKzE0MzAsNyBAQCBs YXp5X3NjYW5faGVhcChMVlJlbFN0YXRlICp2YWNyZWwpCiAJCSAqIGV4Y2x1ZGUgcGFnZXMgc2tp cHBlZCBkdWUgdG8gY2xlYW51cCBsb2NrIGNvbnRlbnRpb24gZnJvbSBlYWdlcgogCQkgKiBmcmVl emUgYWxnb3JpdGhtIGNhcHMuCiAJCSAqLwotCQlpZiAoZ290X2NsZWFudXBfbG9jayAmJgotCQkJ KGJsa19pbmZvICYgVkFDX0JMS19XQVNfRUFHRVJfU0NBTk5FRCkpCisJCWlmIChnb3RfY2xlYW51 cF9sb2NrICYmIHdhc19lYWdlcl9zY2FubmVkKQogCQl7CiAJCQkvKiBBZ2dyZXNzaXZlIHZhY3V1 bXMgZG8gbm90IGVhZ2VyIHNjYW4uICovCiAJCQlBc3NlcnQoIXZhY3JlbC0+YWdncmVzc2l2ZSk7 CkBAIC0xNjAyLDcgKzE1OTcsNiBAQCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soUmVhZFN0cmVh bSAqc3RyZWFtLAogewogCUJsb2NrTnVtYmVyIG5leHRfYmxvY2s7CiAJTFZSZWxTdGF0ZSAqdmFj cmVsID0gY2FsbGJhY2tfcHJpdmF0ZV9kYXRhOwotCXVpbnQ4CQlibGtfaW5mbyA9IDA7CiAKIAkv KiByZWxpZXMgb24gSW52YWxpZEJsb2NrTnVtYmVyICsgMSBvdmVyZmxvd2luZyB0byAwIG9uIGZp cnN0IGNhbGwgKi8KIAluZXh0X2Jsb2NrID0gdmFjcmVsLT5jdXJyZW50X2Jsb2NrICsgMTsKQEAg LTE2NjUsOCArMTY1OSw4IEBAIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jayhSZWFkU3RyZWFtICpz dHJlYW0sCiAJCSAqIG90aGVyd2lzZSB0aGV5IHdvdWxkJ3ZlIGJlZW4gdW5za2lwcGFibGUuCiAJ CSAqLwogCQl2YWNyZWwtPmN1cnJlbnRfYmxvY2sgPSBuZXh0X2Jsb2NrOwotCQlibGtfaW5mbyB8 PSBWQUNfQkxLX0FMTF9WSVNJQkxFX0FDQ09SRElOR19UT19WTTsKLQkJKigodWludDggKikgcGVy X2J1ZmZlcl9kYXRhKSA9IGJsa19pbmZvOworCQkvKiBCbG9jayB3YXMgbm90IGVhZ2VyIHNjYW5u ZWQgKi8KKwkJKigoYm9vbCAqKSBwZXJfYnVmZmVyX2RhdGEpID0gZmFsc2U7CiAJCXJldHVybiB2 YWNyZWwtPmN1cnJlbnRfYmxvY2s7CiAJfQogCWVsc2UKQEAgLTE2NzgsMTEgKzE2NzIsNyBAQCBo ZWFwX3ZhY19zY2FuX25leHRfYmxvY2soUmVhZFN0cmVhbSAqc3RyZWFtLAogCQlBc3NlcnQobmV4 dF9ibG9jayA9PSB2YWNyZWwtPm5leHRfdW5za2lwcGFibGVfYmxvY2spOwogCiAJCXZhY3JlbC0+ Y3VycmVudF9ibG9jayA9IG5leHRfYmxvY2s7Ci0JCWlmICh2YWNyZWwtPm5leHRfdW5za2lwcGFi bGVfYWxsdmlzKQotCQkJYmxrX2luZm8gfD0gVkFDX0JMS19BTExfVklTSUJMRV9BQ0NPUkRJTkdf VE9fVk07Ci0JCWlmICh2YWNyZWwtPm5leHRfdW5za2lwcGFibGVfZWFnZXJfc2Nhbm5lZCkKLQkJ CWJsa19pbmZvIHw9IFZBQ19CTEtfV0FTX0VBR0VSX1NDQU5ORUQ7Ci0JCSooKHVpbnQ4ICopIHBl cl9idWZmZXJfZGF0YSkgPSBibGtfaW5mbzsKKwkJKigoYm9vbCAqKSBwZXJfYnVmZmVyX2RhdGEp ID0gdmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxlX2VhZ2VyX3NjYW5uZWQ7CiAJCXJldHVybiB2YWNy ZWwtPmN1cnJlbnRfYmxvY2s7CiAJfQogfQpAQCAtMTcwNyw3ICsxNjk3LDYgQEAgZmluZF9uZXh0 X3Vuc2tpcHBhYmxlX2Jsb2NrKExWUmVsU3RhdGUgKnZhY3JlbCwgYm9vbCAqc2tpcHNhbGx2aXMp CiAJQmxvY2tOdW1iZXIgbmV4dF91bnNraXBwYWJsZV9ibG9jayA9IHZhY3JlbC0+bmV4dF91bnNr aXBwYWJsZV9ibG9jayArIDE7CiAJQnVmZmVyCQluZXh0X3Vuc2tpcHBhYmxlX3ZtYnVmZmVyID0g dmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxlX3ZtYnVmZmVyOwogCWJvb2wJCW5leHRfdW5za2lwcGFi bGVfZWFnZXJfc2Nhbm5lZCA9IGZhbHNlOwotCWJvb2wJCW5leHRfdW5za2lwcGFibGVfYWxsdmlz OwogCiAJKnNraXBzYWxsdmlzID0gZmFsc2U7CiAKQEAgLTE3MTcsNyArMTcwNiw2IEBAIGZpbmRf bmV4dF91bnNraXBwYWJsZV9ibG9jayhMVlJlbFN0YXRlICp2YWNyZWwsIGJvb2wgKnNraXBzYWxs dmlzKQogCQkJCQkJCQkJCQkJCSAgIG5leHRfdW5za2lwcGFibGVfYmxvY2ssCiAJCQkJCQkJCQkJ CQkJICAgJm5leHRfdW5za2lwcGFibGVfdm1idWZmZXIpOwogCi0JCW5leHRfdW5za2lwcGFibGVf YWxsdmlzID0gKG1hcGJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSAhPSAwOwogCiAJ CS8qCiAJCSAqIEF0IHRoZSBzdGFydCBvZiBlYWNoIGVhZ2VyIHNjYW4gcmVnaW9uLCBub3JtYWwg dmFjdXVtcyB3aXRoIGVhZ2VyCkBAIC0xNzM2LDcgKzE3MjQsNyBAQCBmaW5kX25leHRfdW5za2lw cGFibGVfYmxvY2soTFZSZWxTdGF0ZSAqdmFjcmVsLCBib29sICpza2lwc2FsbHZpcykKIAkJICog QSBibG9jayBpcyB1bnNraXBwYWJsZSBpZiBpdCBpcyBub3QgYWxsIHZpc2libGUgYWNjb3JkaW5n IHRvIHRoZQogCQkgKiB2aXNpYmlsaXR5IG1hcC4KIAkJICovCi0JCWlmICghbmV4dF91bnNraXBw YWJsZV9hbGx2aXMpCisJCWlmICgobWFwYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUp ID09IDApCiAJCXsKIAkJCUFzc2VydCgobWFwYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pF TikgPT0gMCk7CiAJCQlicmVhazsKQEAgLTE3OTMsNyArMTc4MSw2IEBAIGZpbmRfbmV4dF91bnNr aXBwYWJsZV9ibG9jayhMVlJlbFN0YXRlICp2YWNyZWwsIGJvb2wgKnNraXBzYWxsdmlzKQogCiAJ Lyogd3JpdGUgdGhlIGxvY2FsIHZhcmlhYmxlcyBiYWNrIHRvIHZhY3JlbCAqLwogCXZhY3JlbC0+ bmV4dF91bnNraXBwYWJsZV9ibG9jayA9IG5leHRfdW5za2lwcGFibGVfYmxvY2s7Ci0JdmFjcmVs LT5uZXh0X3Vuc2tpcHBhYmxlX2FsbHZpcyA9IG5leHRfdW5za2lwcGFibGVfYWxsdmlzOwogCXZh Y3JlbC0+bmV4dF91bnNraXBwYWJsZV9lYWdlcl9zY2FubmVkID0gbmV4dF91bnNraXBwYWJsZV9l YWdlcl9zY2FubmVkOwogCXZhY3JlbC0+bmV4dF91bnNraXBwYWJsZV92bWJ1ZmZlciA9IG5leHRf dW5za2lwcGFibGVfdm1idWZmZXI7CiB9CkBAIC0xOTU0LDkgKzE5NDEsNyBAQCBjbXBPZmZzZXRO dW1iZXJzKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCiAgKiBDYWxsZXIgbXVzdCBob2xk IHBpbiBhbmQgYnVmZmVyIGNsZWFudXAgbG9jayBvbiB0aGUgYnVmZmVyLgogICoKICAqIHZtYnVm ZmVyIGlzIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgVk0gYmxvY2sgd2l0aCB2aXNpYmlsaXR5 IGluZm9ybWF0aW9uCi0gKiBmb3IgdGhlIGhlYXAgYmxvY2ssIGJsa25vLiBhbGxfdmlzaWJsZV9h Y2NvcmRpbmdfdG9fdm0gaXMgdGhlIHNhdmVkCi0gKiB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUg aGVhcCBibG9jayBsb29rZWQgdXAgZWFybGllciBieSB0aGUgY2FsbGVyLiBXZQotICogd29uJ3Qg cmVseSBlbnRpcmVseSBvbiB0aGlzIHN0YXR1cywgYXMgaXQgbWF5IGJlIG91dCBvZiBkYXRlLgor ICogZm9yIHRoZSBoZWFwIGJsb2NrLCBibGtuby4KICAqCiAgKiAqaGFzX2xwZGVhZF9pdGVtcyBp cyBzZXQgdG8gdHJ1ZSBvciBmYWxzZSBkZXBlbmRpbmcgb24gd2hldGhlciwgdXBvbiByZXR1cm4K ICAqIGZyb20gdGhpcyBmdW5jdGlvbiwgYW55IExQX0RFQUQgaXRlbXMgYXJlIHN0aWxsIHByZXNl bnQgb24gdGhlIHBhZ2UuCkBAIC0xOTczLDcgKzE5NTgsNiBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZS ZWxTdGF0ZSAqdmFjcmVsLAogCQkJCUJsb2NrTnVtYmVyIGJsa25vLAogCQkJCVBhZ2UgcGFnZSwK IAkJCQlCdWZmZXIgdm1idWZmZXIsCi0JCQkJYm9vbCBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9f dm0sCiAJCQkJYm9vbCAqaGFzX2xwZGVhZF9pdGVtcywKIAkJCQlib29sICp2bV9wYWdlX2Zyb3pl bikKIHsKQEAgLTE5ODcsNiArMTk3MSw4IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2 YWNyZWwsCiAJCS52aXN0ZXN0ID0gdmFjcmVsLT52aXN0ZXN0LAogCQkuY3V0b2ZmcyA9ICZ2YWNy ZWwtPmN1dG9mZnMsCiAJfTsKKwl1aW50OAkJb2xkX3ZtYml0cyA9IDA7CisJdWludDgJCW5ld192 bWJpdHMgPSAwOwogCiAJQXNzZXJ0KEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZikgPT0gYmxrbm8p OwogCkBAIC0yMDg5LDcwICsyMDc1LDcgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZh Y3JlbCwKIAlBc3NlcnQoIXByZXN1bHQuYWxsX3Zpc2libGUgfHwgISgqaGFzX2xwZGVhZF9pdGVt cykpOwogCUFzc2VydCghcHJlc3VsdC5hbGxfZnJvemVuIHx8IHByZXN1bHQuYWxsX3Zpc2libGUp OwogCi0JLyoKLQkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24g aW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gKGFzCi0JICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25l eHRfYmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3pl biB2YXJpYWJsZXMKLQkgKi8KLQlpZiAoKHByZXN1bHQuYWxsX3Zpc2libGUgJiYgIWFsbF92aXNp YmxlX2FjY29yZGluZ190b192bSkgfHwKLQkJKHByZXN1bHQuYWxsX2Zyb3plbiAmJiAhVk1fQUxM X0ZST1pFTihyZWwsIGJsa25vLCAmdm1idWZmZXIpKSkKLQl7Ci0JCXVpbnQ4CQlvbGRfdm1iaXRz OwotCQl1aW50OAkJbmV3X3ZtYml0cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7Ci0KLQkJ aWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJCW5ld192bWJpdHMgfD0gVklTSUJJTElUWU1BUF9B TExfRlJPWkVOOwotCi0JCS8qCi0JCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0 IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlzIHNldAotCQkgKiB3aGlsZSB0aGUgcGFnZS1sZXZl bCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2VkIChpZgotCQkgKiBjaGVj a3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNldCBib3RoIGJpdHMgc28gdGhh dCB3ZQotCQkgKiBnZXQgYmFjayBpbiBzeW5jLgotCQkgKgotCQkgKiBFdmVuIGlmIFBEX0FMTF9W SVNJQkxFIGlzIGFscmVhZHkgc2V0LCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0Ci0JCSAq IHVubmVjZXNzYXJpbHkgZGlydHlpbmcgdGhlIGhlYXAgYnVmZmVyLCBhcyBpdCBtdXN0IGJlIG1h cmtlZCBkaXJ0eQotCQkgKiBiZWZvcmUgYWRkaW5nIGl0IHRvIHRoZSBXQUwgY2hhaW4uIFRoZSBv bmx5IHNjZW5hcmlvIHdoZXJlIGl0IGlzCi0JCSAqIG5vdCBhbHJlYWR5IGRpcnR5IGlzIGlmIHRo ZSBWTSB3YXMgcmVtb3ZlZCwgYW5kIHRoYXQgaXNuJ3Qgd29ydGgKLQkJICogb3B0aW1pemluZyBm b3IuCi0JCSAqLwotCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJTWFya0J1ZmZlckRpcnR5 KGJ1Zik7Ci0KLQkJLyoKLQkJICogSWYgdGhlIHBhZ2UgaXMgYmVpbmcgc2V0IGFsbC1mcm96ZW4s IHdlIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQKLQkJICogYXMgdGhlIGN1dG9mZl94aWQsIHNp bmNlIGEgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBzdWZmaWNpZW50IHRvCi0JCSAqIG1ha2Ug ZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFnZSdzIHR1cGxl cwotCQkgKiB3ZXJlIGZyb3plbi4KLQkJICovCi0JCUFzc2VydCghcHJlc3VsdC5hbGxfZnJvemVu IHx8Ci0JCQkgICAhVHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jp em9uKSk7Ci0KLQkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBi bGtubywgYnVmLAotCQkJCQkJCQkJICAgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkJCQkgICB2 bWJ1ZmZlciwKLQkJCQkJCQkJCSAgIHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbiwKLQkJCQkJ CQkJCSAgIG5ld192bWJpdHMpOwotCi0JCS8qCi0JCSAqIElmIHRoZSBwYWdlIHdhc24ndCBhbHJl YWR5IHNldCBhbGwtdmlzaWJsZSBhbmQvb3IgYWxsLWZyb3plbiBpbiB0aGUKLQkJICogVk0sIGNv dW50IGl0IGFzIG5ld2x5IHNldCBmb3IgbG9nZ2luZy4KLQkJICovCi0JCWlmICgob2xkX3ZtYml0 cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09IDApCi0JCXsKLQkJCXZhY3JlbC0+dm1f bmV3X3Zpc2libGVfcGFnZXMrKzsKLQkJCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCi0JCQl7Ci0J CQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKLQkJCQkqdm1fcGFnZV9m cm96ZW4gPSB0cnVlOwotCQkJfQotCQl9Ci0JCWVsc2UgaWYgKChvbGRfdm1iaXRzICYgVklTSUJJ TElUWU1BUF9BTExfRlJPWkVOKSA9PSAwICYmCi0JCQkJIHByZXN1bHQuYWxsX2Zyb3plbikKLQkJ ewotCQkJdmFjcmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFnZV9mcm96ZW4g PSB0cnVlOwotCQl9Ci0JfQorCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMo dmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpOwogCiAJLyoKIAkgKiBBcyBvZiBQb3N0Z3Jl U1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUgc2V0IGlmIHRo ZQpAQCAtMjE2MCw4ICsyMDgzLDggQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3Jl bCwKIAkgKiBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxs ZWQsIHNvIHdlIG11c3QgcmVjaGVjawogCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNs dWRpbmcgdGhhdCB0aGUgVk0gaXMgY29ycnVwdC4KIAkgKi8KLQllbHNlIGlmIChhbGxfdmlzaWJs ZV9hY2NvcmRpbmdfdG9fdm0gJiYgIVBhZ2VJc0FsbFZpc2libGUocGFnZSkgJiYKLQkJCSB2aXNp YmlsaXR5bWFwX2dldF9zdGF0dXModmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpICE9IDAp CisJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpICYmCisJCShvbGRfdm1iaXRzICYgVklTSUJJ TElUWU1BUF9BTExfVklTSUJMRSkgIT0gMCkKIAl7CiAJCWVyZXBvcnQoV0FSTklORywKIAkJCQko ZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKQEAgLTIxOTksNiArMjEyMiw2OSBAQCBs YXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQkJCQkJCVZJU0lCSUxJVFlNQVBf VkFMSURfQklUUyk7CiAJfQogCisJaWYgKCFwcmVzdWx0LmFsbF92aXNpYmxlKQorCQlyZXR1cm4g cHJlc3VsdC5uZGVsZXRlZDsKKworCS8qIFNldCB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIHBhZ2Ug dmlzaWJpbGl0eSBoaW50ICovCisJbmV3X3ZtYml0cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lC TEU7CisKKwlpZiAocHJlc3VsdC5hbGxfZnJvemVuKQorCQluZXdfdm1iaXRzIHw9IFZJU0lCSUxJ VFlNQVBfQUxMX0ZST1pFTjsKKworCS8qIE5vdGhpbmcgdG8gZG8gKi8KKwlpZiAob2xkX3ZtYml0 cyA9PSBuZXdfdm1iaXRzKQorCQlyZXR1cm4gcHJlc3VsdC5uZGVsZXRlZDsKKworCUFzc2VydChw cmVzdWx0LmFsbF92aXNpYmxlKTsKKworCS8qCisJICogSXQgc2hvdWxkIG5ldmVyIGJlIHRoZSBj YXNlIHRoYXQgdGhlIHZpc2liaWxpdHkgbWFwIHBhZ2UgaXMgc2V0IHdoaWxlCisJICogdGhlIHBh Z2UtbGV2ZWwgYml0IGlzIGNsZWFyLCBidXQgdGhlIHJldmVyc2UgaXMgYWxsb3dlZCAoaWYgY2hl Y2tzdW1zCisJICogYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNldCBib3RoIGJpdHMg c28gdGhhdCB3ZSBnZXQgYmFjayBpbgorCSAqIHN5bmMuCisJICoKKwkgKiBFdmVuIGlmIFBEX0FM TF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0CisJ ICogdW5uZWNlc3NhcmlseSBkaXJ0eWluZyB0aGUgaGVhcCBidWZmZXIsIGFzIGl0IG11c3QgYmUg bWFya2VkIGRpcnR5CisJICogYmVmb3JlIGFkZGluZyBpdCB0byB0aGUgV0FMIGNoYWluLiBUaGUg b25seSBzY2VuYXJpbyB3aGVyZSBpdCBpcyBub3QKKwkgKiBhbHJlYWR5IGRpcnR5IGlzIGlmIHRo ZSBWTSB3YXMgcmVtb3ZlZCwgYW5kIHRoYXQgaXNuJ3Qgd29ydGggb3B0aW1pemluZworCSAqIGZv ci4KKwkgKi8KKwlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwlNYXJrQnVmZmVyRGlydHkoYnVm KTsKKworCS8qCisJICogSWYgdGhlIHBhZ2UgaXMgYmVpbmcgc2V0IGFsbC1mcm96ZW4sIHdlIHBh c3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMKKwkgKiB0aGUgY3V0b2ZmX3hpZCwgc2luY2UgYSBz bmFwc2hvdCBjb25mbGljdCBob3Jpem9uIHN1ZmZpY2llbnQgdG8gbWFrZQorCSAqIGV2ZXJ5dGhp bmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMgd2VyZSBm cm96ZW4uCisJICovCisJQXNzZXJ0KCFwcmVzdWx0LmFsbF9mcm96ZW4gfHwKKwkJICAgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikpOworCisJdmlzaWJp bGl0eW1hcF9zZXQodmFjcmVsLT5yZWwsIGJsa25vLCBidWYsCisJCQkJCSAgSW52YWxpZFhMb2dS ZWNQdHIsCisJCQkJCSAgdm1idWZmZXIsIHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbiwKKwkJ CQkJICBuZXdfdm1iaXRzKTsKKworCS8qCisJICogSWYgdGhlIHBhZ2Ugd2Fzbid0IGFscmVhZHkg c2V0IGFsbC12aXNpYmxlIGFuZC9vciBhbGwtZnJvemVuIGluIHRoZSBWTSwKKwkgKiBjb3VudCBp dCBhcyBuZXdseSBzZXQgZm9yIGxvZ2dpbmcuCisJICovCisJaWYgKChvbGRfdm1iaXRzICYgVklT SUJJTElUWU1BUF9BTExfVklTSUJMRSkgPT0gMCkKKwl7CisJCXZhY3JlbC0+dm1fbmV3X3Zpc2li bGVfcGFnZXMrKzsKKwkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKKwkJeworCQkJdmFjcmVsLT52 bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKKwkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7 CisJCX0KKwl9CisJZWxzZSBpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9a RU4pID09IDAgJiYKKwkJCSBwcmVzdWx0LmFsbF9mcm96ZW4pCisJeworCQl2YWNyZWwtPnZtX25l d19mcm96ZW5fcGFnZXMrKzsKKwkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKKwl9CisKIAlyZXR1 cm4gcHJlc3VsdC5uZGVsZXRlZDsKIH0KIAotLSAKMi40My4wCgo= --00000000000028078b064614a599 Content-Type: text/x-patch; charset="US-ASCII"; name="v27-0003-Refactor-lazy_scan_prune-VM-clear-logic-into-hel.patch" Content-Disposition: attachment; filename="v27-0003-Refactor-lazy_scan_prune-VM-clear-logic-into-hel.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8tsq872 RnJvbSAwMjZjZmUxMGI3OTMyOGQ2YjlmNjg3MDNkZmE5ZGIxYjRlN2U2MTlkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTM6MzY6MzkgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNyAwMy8xNF0gUmVmYWN0b3IgbGF6eV9zY2FuX3BydW5lKCkgVk0gY2xlYXIgbG9naWMg aW50bwogaGVscGVyCgpFbmNhcHN1bGF0aW5nIHRoZW0gaW4gYSBoZWxwZXIgbWFrZXMgdGhlIHdo b2xlIGZ1bmN0aW9uIGNsZWFyZXIuIEJlZm9yZQp3ZSBtb3ZlIGFsbCBvZiB0aGlzIGxvZ2ljIGlu dG8gaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSwgd2Ugd2FudCB0bwptYWtlIGl0IG1vcmUg Y29tcGFjdCBhbmQgY2xlYXIuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jIHwgMTIyICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDc4 IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYwppbmRleCA0MzYxNDNjZDEyYy4uNDI1ZGMyZjg2OTEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92YWN1dW1sYXp5LmMKQEAgLTQyOCw2ICs0MjgsMTEgQEAgc3RhdGljIHZvaWQgZmluZF9u ZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKExWUmVsU3RhdGUgKnZhY3JlbCwgYm9vbCAqc2tpcHNhbGx2 aXMpOwogc3RhdGljIGJvb2wgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNy ZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGJsa25vLCBQYWdlIHBhZ2Us CiAJCQkJCQkJCSAgIGJvb2wgc2hhcmVsb2NrLCBCdWZmZXIgdm1idWZmZXIpOworc3RhdGljIHZv aWQgaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGhl YXBfYnVmZmVyLAorCQkJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBQYWdlIGhlYXBf cGFnZSwKKwkJCQkJCQkJCQkgICBpbnQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkJCQkgICBCdWZm ZXIgdm1idWZmZXIsCisJCQkJCQkJCQkJICAgdWludDggdm1iaXRzKTsKIHN0YXRpYyBpbnQJbGF6 eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQlCbG9j a051bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCUJ1ZmZlciB2bWJ1ZmZlciwKQEAgLTE5 MzUsNiArMTk0MCw3NyBAQCBjbXBPZmZzZXROdW1iZXJzKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZv aWQgKmIpCiAJcmV0dXJuIHBnX2NtcF91MTYoKihjb25zdCBPZmZzZXROdW1iZXIgKikgYSwgKihj b25zdCBPZmZzZXROdW1iZXIgKikgYik7CiB9CiAKKy8qCisgKiBIZWxwZXIgdG8gY29ycmVjdCBh bnkgY29ycnVwdGlvbiBkZXRlY3RlZCBvbiBhbiBoZWFwIHBhZ2UgYW5kIGl0cworICogY29ycmVz cG9uZGluZyB2aXNpYmlsaXR5IG1hcCBwYWdlIGFmdGVyIHBydW5pbmcgYnV0IGJlZm9yZSBzZXR0 aW5nIHRoZQorICogdmlzaWJpbGl0eSBtYXAuIEl0IGV4YW1pbmVzIHRoZSBoZWFwIHBhZ2UsIHRo ZSBhc3NvY2lhdGVkIFZNIHBhZ2UsIGFuZCB0aGUKKyAqIG51bWJlciBvZiBkZWFkIGl0ZW1zIHBy ZXZpb3VzbHkgaWRlbnRpZmllZC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVk IHdoaWxlIGhvbGRpbmcgYW4gZXhjbHVzaXZlIGxvY2sgb24gdGhlIGhlYXAKKyAqIGJ1ZmZlciwg YW5kIHRoZSBkZWFkIGl0ZW1zIG11c3QgaGF2ZSBiZWVuIGRpc2NvdmVyZWQgdW5kZXIgdGhhdCBz YW1lIGxvY2suCisKKyAqIFRoZSBwcm92aWRlZCB2bWJpdHMgbXVzdCByZWZsZWN0IHRoZSBjdXJy ZW50IHN0YXRlIG9mIHRoZSBWTSBibG9jaworICogcmVmZXJlbmNlZCBieSB2bWJ1ZmZlci4gQWx0 aG91Z2ggd2UgZG8gbm90IGhvbGQgYSBsb2NrIG9uIHRoZSBWTSBidWZmZXIsIGl0CisgKiBpcyBw aW5uZWQsIGFuZCB0aGUgaGVhcCBidWZmZXIgaXMgZXhjbHVzaXZlbHkgbG9ja2VkLCBlbnN1cmlu ZyB0aGF0IG5vCisgKiBvdGhlciBiYWNrZW5kIGNhbiB1cGRhdGUgdGhlIFZNIGJpdHMgY29ycmVz cG9uZGluZyB0byB0aGlzIGhlYXAgcGFnZS4KKyAqLworc3RhdGljIHZvaWQKK2lkZW50aWZ5X2Fu ZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwKKwkJ CQkJCQkgICBCbG9ja051bWJlciBoZWFwX2JsaywgUGFnZSBoZWFwX3BhZ2UsCisJCQkJCQkJICAg aW50IG5scGRlYWRfaXRlbXMsCisJCQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkJCSAg IHVpbnQ4IHZtYml0cykKK3sKKwlBc3NlcnQodmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHJlbCwg aGVhcF9ibGssICZ2bWJ1ZmZlcikgPT0gdm1iaXRzKTsKKworCUFzc2VydChCdWZmZXJJc0xvY2tl ZEJ5TWVJbk1vZGUoaGVhcF9idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSkpOworCisJLyoK KwkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQg bmV2ZXIgYmUgc2V0IGlmIHRoZQorCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93ZXZl ciwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290CisJICogY2xlYXJlZCBhZnRlciBoZWFw X3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJlY2hlY2sKKwkg KiB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlzIGNvcnJ1 cHQuCisJICovCisJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkgJiYKKwkJKCh2bWJp dHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSAhPSAwKSkKKwl7CisJCWVyZXBvcnQoV0FS TklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKKwkJCQkgZXJybXNn KCJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkgbWFwIGJpdCBp cyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocmVsKSwgaGVhcF9ibGspKSk7CisKKwkJdmlzaWJpbGl0eW1hcF9jbGVhcihyZWws IGhlYXBfYmxrLCB2bWJ1ZmZlciwKKwkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwor CX0KKworCS8qCisJICogSXQncyBwb3NzaWJsZSBmb3IgdGhlIHZhbHVlIHJldHVybmVkIGJ5CisJ ICogR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIHRvIG1vdmUgYmFja3dhcmRz LCBzbyBpdCdzIG5vdAorCSAqIHdyb25nIGZvciB1cyB0byBzZWUgdHVwbGVzIHRoYXQgYXBwZWFy IHRvIG5vdCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lCisJICogeWV0LCB3aGlsZSBQRF9BTExfVklT SUJMRSBpcyBhbHJlYWR5IHNldC4gVGhlIHJlYWwgc2FmZSB4bWluIHZhbHVlCisJICogbmV2ZXIg bW92ZXMgYmFja3dhcmRzLCBidXQgR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgp IGlzCisJICogY29uc2VydmF0aXZlIGFuZCBzb21ldGltZXMgcmV0dXJucyBhIHZhbHVlIHRoYXQn cyB1bm5lY2Vzc2FyaWx5IHNtYWxsLAorCSAqIHNvIGlmIHdlIHNlZSB0aGF0IGNvbnRyYWRpY3Rp b24gaXQganVzdCBtZWFucyB0aGF0IHRoZSB0dXBsZXMgdGhhdCB3ZQorCSAqIHRoaW5rIGFyZSBu b3QgdmlzaWJsZSB0byBldmVyeW9uZSB5ZXQgYWN0dWFsbHkgYXJlLCBhbmQgdGhlCisJICogUERf QUxMX1ZJU0lCTEUgZmxhZyBpcyBjb3JyZWN0LgorCSAqCisJICogVGhlcmUgc2hvdWxkIG5ldmVy IGJlIExQX0RFQUQgaXRlbXMgb24gYSBwYWdlIHdpdGggUERfQUxMX1ZJU0lCTEUgc2V0LAorCSAq IGhvd2V2ZXIuCisJICovCisJZWxzZSBpZiAoUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpICYm IG5scGRlYWRfaXRlbXMgPiAwKQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCSBlcnJtc2coInBhZ2UgY29udGFpbmluZyBM UF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBhbGwtdmlzaWJsZSBpbiByZWxhdGlvbiBcIiVzXCIg cGFnZSAldSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwX2Jsaykp KTsKKworCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKGhlYXBfcGFnZSk7CisJCU1hcmtCdWZmZXJEaXJ0 eShoZWFwX2J1ZmZlcik7CisJCXZpc2liaWxpdHltYXBfY2xlYXIocmVsLCBoZWFwX2Jsaywgdm1i dWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKKwl9Cit9CisKIC8qCiAg KglsYXp5X3NjYW5fcHJ1bmUoKSAtLSBsYXp5X3NjYW5faGVhcCgpIHBydW5pbmcgYW5kIGZyZWV6 aW5nLgogICoKQEAgLTIwNzcsNTAgKzIxNTMsOCBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0 ZSAqdmFjcmVsLAogCiAJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyh2YWNy ZWwtPnJlbCwgYmxrbm8sICZ2bWJ1ZmZlcik7CiAKLQkvKgotCSAqIEFzIG9mIFBvc3RncmVTUUwg OS4yLCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IHNob3VsZCBuZXZlciBiZSBzZXQgaWYgdGhlCi0J ICogcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIuICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQg dGhlIGJpdCBnb3QKLQkgKiBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygp IHdhcyBjYWxsZWQsIHNvIHdlIG11c3QgcmVjaGVjawotCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVm b3JlIGNvbmNsdWRpbmcgdGhhdCB0aGUgVk0gaXMgY29ycnVwdC4KLQkgKi8KLQlpZiAoIVBhZ2VJ c0FsbFZpc2libGUocGFnZSkgJiYKLQkJKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9W SVNJQkxFKSAhPSAwKQotCXsKLQkJZXJlcG9ydChXQVJOSU5HLAotCQkJCShlcnJjb2RlKEVSUkNP REVfREFUQV9DT1JSVVBURUQpLAotCQkJCSBlcnJtc2coInBhZ2UgaXMgbm90IG1hcmtlZCBhbGwt dmlzaWJsZSBidXQgdmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCBpbiByZWxhdGlvbiBcIiVzXCIg cGFnZSAldSIsCi0JCQkJCQl2YWNyZWwtPnJlbG5hbWUsIGJsa25vKSkpOwotCi0JCXZpc2liaWxp dHltYXBfY2xlYXIodmFjcmVsLT5yZWwsIGJsa25vLCB2bWJ1ZmZlciwKLQkJCQkJCQlWSVNJQklM SVRZTUFQX1ZBTElEX0JJVFMpOwotCX0KLQotCS8qCi0JICogSXQncyBwb3NzaWJsZSBmb3IgdGhl IHZhbHVlIHJldHVybmVkIGJ5Ci0JICogR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25J ZCgpIHRvIG1vdmUgYmFja3dhcmRzLCBzbyBpdCdzIG5vdAotCSAqIHdyb25nIGZvciB1cyB0byBz ZWUgdHVwbGVzIHRoYXQgYXBwZWFyIHRvIG5vdCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lCi0JICog eWV0LCB3aGlsZSBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldC4gVGhlIHJlYWwgc2FmZSB4 bWluIHZhbHVlCi0JICogbmV2ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQgR2V0T2xkZXN0Tm9uUmVt b3ZhYmxlVHJhbnNhY3Rpb25JZCgpIGlzCi0JICogY29uc2VydmF0aXZlIGFuZCBzb21ldGltZXMg cmV0dXJucyBhIHZhbHVlIHRoYXQncyB1bm5lY2Vzc2FyaWx5IHNtYWxsLAotCSAqIHNvIGlmIHdl IHNlZSB0aGF0IGNvbnRyYWRpY3Rpb24gaXQganVzdCBtZWFucyB0aGF0IHRoZSB0dXBsZXMgdGhh dCB3ZQotCSAqIHRoaW5rIGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSB5ZXQgYWN0dWFsbHkg YXJlLCBhbmQgdGhlCi0JICogUERfQUxMX1ZJU0lCTEUgZmxhZyBpcyBjb3JyZWN0LgotCSAqCi0J ICogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIExQX0RFQUQgaXRlbXMgb24gYSBwYWdlIHdpdGggUERf QUxMX1ZJU0lCTEUgc2V0LAotCSAqIGhvd2V2ZXIuCi0JICovCi0JZWxzZSBpZiAocHJlc3VsdC5s cGRlYWRfaXRlbXMgPiAwICYmIFBhZ2VJc0FsbFZpc2libGUocGFnZSkpCi0JewotCQllcmVwb3J0 KFdBUk5JTkcsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCi0JCQkJIGVy cm1zZygicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFsbC12aXNp YmxlIGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKLQkJCQkJCXZhY3JlbC0+cmVsbmFtZSwg Ymxrbm8pKSk7Ci0KLQkJUGFnZUNsZWFyQWxsVmlzaWJsZShwYWdlKTsKLQkJTWFya0J1ZmZlckRp cnR5KGJ1Zik7Ci0JCXZpc2liaWxpdHltYXBfY2xlYXIodmFjcmVsLT5yZWwsIGJsa25vLCB2bWJ1 ZmZlciwKLQkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwotCX0KKwlpZGVudGlmeV9h bmRfZml4X3ZtX2NvcnJ1cHRpb24odmFjcmVsLT5yZWwsIGJ1ZiwgYmxrbm8sIHBhZ2UsCisJCQkJ CQkJCSAgIHByZXN1bHQubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlciwgb2xkX3ZtYml0cyk7CiAKIAlp ZiAoIXByZXN1bHQuYWxsX3Zpc2libGUpCiAJCXJldHVybiBwcmVzdWx0Lm5kZWxldGVkOwotLSAK Mi40My4wCgo= --00000000000028078b064614a599 Content-Type: text/x-patch; charset="US-ASCII"; name="v27-0004-Set-the-VM-in-heap_page_prune_and_freeze.patch" Content-Disposition: attachment; filename="v27-0004-Set-the-VM-in-heap_page_prune_and_freeze.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8tstix3 RnJvbSBkODdlMzM0Nzg1MjBlNTJmYzAxMDA3MWU4ZGNkNmVhYzU0NjBlYzI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTU6MDc6NDIgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNyAwNC8xNF0gU2V0IHRoZSBWTSBpbiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgp CgpUaGlzIGhhcyBubyBpbmRlcGVuZGVudCBiZW5lZml0LiBJdCBpcyBtZWFudCBmb3IgZWFzZSBv ZiByZXZpZXcuIEFzIG9mCnRoaXMgY29tbWl0LCB0aGVyZSBpcyBzdGlsbCBhIHNlcGFyYXRlIFdB TCByZWNvcmQgZW1pdHRlZCBmb3Igc2V0dGluZwp0aGUgVk0gYWZ0ZXIgcHJ1bmluZyBhbmQgZnJl ZXppbmcuIEJ1dCBpdCBpcyBlYXNpZXIgdG8gcmV2aWV3IGlmIG1vdmluZwp0aGUgbG9naWMgaW50 byBwcnVuZWhlYXAuYyBpcyBzZXBhcmF0ZSBmcm9tIHNldHRpbmcgdGhlIFZNIGluIHRoZSBzYW1l CldBTCByZWNvcmQuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgIHwg MzAxICsrKysrKysrKysrKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jIHwgMTQyICstLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaCAgICAgICAgICB8ICAyMSArKwogMyBmaWxlcyBjaGFuZ2VkLCAyODUgaW5zZXJ0aW9ucygr KSwgMTc5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXgg MDdhYTA4Y2ZlMTQuLmM5Nzk2MjU1NTFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwpAQCAtMTksNyArMTksNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNp bmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIK LSNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCIKKyNpbmNsdWRlICJhY2Nlc3Mv dmlzaWJpbGl0eW1hcC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAiYWNj ZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKQEAgLTQ0LDYg KzQ0LDggQEAgdHlwZWRlZiBzdHJ1Y3QKIAlib29sCQltYXJrX3VudXNlZF9ub3c7CiAJLyogd2hl dGhlciB0byBhdHRlbXB0IGZyZWV6aW5nIHR1cGxlcyAqLwogCWJvb2wJCWF0dGVtcHRfZnJlZXpl OworCS8qIHdoZXRoZXIgb3Igbm90IHRvIGF0dGVtcHQgdXBkYXRpbmcgdGhlIFZNICovCisJYm9v bAkJYXR0ZW1wdF91cGRhdGVfdm07CiAJc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnM7CiAK IAkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KQEAgLTE0MCwxNiArMTQyLDE3IEBAIHR5cGVkZWYgc3RydWN0CiAJICogYWxsX3Zpc2libGUg YW5kIGFsbF9mcm96ZW4gaW5kaWNhdGUgaWYgdGhlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVu CiAJICogYml0cyBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgY2FuIGJlIHNldCBmb3IgdGhpcyBwYWdl IGFmdGVyIHBydW5pbmcuCiAJICoKLQkgKiB2aXNpYmlsaXR5X2N1dG9mZl94aWQgaXMgdGhlIG5l d2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLgotCSAqIFRoZSBjYWxsZXIgY2Fu IHVzZSBpdCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiwgd2hlbiBzZXR0aW5nIHRoZSBWTQotCSAq IGJpdHMuICBJdCBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVzLCBhbmQgYWxs X2Zyb3plbiBpcwotCSAqIHRydWUuCisJICogdmlzaWJpbGl0eV9jdXRvZmZfeGlkIGlzIHRoZSBu ZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZS4gSXQKKwkgKiBjYW4gYmUgdXNl ZCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHNldHRpbmcgdGhlIFZNIG9yIHdoZW4KKwkg KiBmcmVlemluZyBhbGwgdGhlIHR1cGxlcyBvbiB0aGUgcGFnZS4gSXQgaXMgb25seSB2YWxpZCB3 aGVuIGFsbCB0aGUgbGl2ZQorCSAqIHR1cGxlcyBvbiB0aGUgcGFnZSBhcmUgYWxsLXZpc2libGUu CiAJICoKIAkgKiBOT1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBpbml0aWFsbHkgZG9u J3QgaW5jbHVkZSBMUF9ERUFEIGl0ZW1zLgogCSAqIFRoYXQncyBjb252ZW5pZW50IGZvciBoZWFw X3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIHRvIHVzZSB0aGVtIHRvCi0JICogZGVjaWRlIHdoZXRo ZXIgdG8gZnJlZXplIHRoZSBwYWdlIG9yIG5vdC4gIFRoZSBhbGxfdmlzaWJsZSBhbmQKLQkgKiBh bGxfZnJvemVuIHZhbHVlcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyIGFyZSBhZGp1c3RlZCB0byBp bmNsdWRlCi0JICogTFBfREVBRCBpdGVtcyBhZnRlciB3ZSBkZXRlcm1pbmUgd2hldGhlciB0byBv cHBvcnR1bmlzdGljYWxseSBmcmVlemUuCisJICogZGVjaWRlIHdoZXRoZXIgdG8gb3Bwb3J0dW5p c3RpY2FsbHkgZnJlZXplIHRoZSBwYWdlIG9yIG5vdC4gIFRoZQorCSAqIGFsbF92aXNpYmxlIGFu ZCBhbGxfZnJvemVuIHZhbHVlcyB1bHRpbWF0ZWx5IHVzZWQgdG8gc2V0IHRoZSBWTSBhcmUKKwkg KiBhZGp1c3RlZCB0byBpbmNsdWRlIExQX0RFQUQgaXRlbXMgYWZ0ZXIgd2UgZGV0ZXJtaW5lIHdo ZXRoZXIgb3Igbm90IHRvCisJICogb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplLgogCSAqLwogCWJv b2wJCWFsbF92aXNpYmxlOwogCWJvb2wJCWFsbF9mcm96ZW47CkBAIC0xOTEsNiArMTk0LDE3IEBA IHN0YXRpYyB2b2lkIHBhZ2VfdmVyaWZ5X3JlZGlyZWN0cyhQYWdlIHBhZ2UpOwogc3RhdGljIGJv b2wgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVy LAogCQkJCQkJCQkgIGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBpLCBib29sIGRvX3BydW5lLCBib29s IGRvX2hpbnRfcHJ1bmUsCiAJCQkJCQkJCSAgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSk7CitzdGF0aWMg dm9pZCBpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsLCBCdWZmZXIg aGVhcF9idWZmZXIsCisJCQkJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIFBhZ2UgaGVh cF9wYWdlLCBpbnQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIs CisJCQkJCQkJCQkJICAgdWludDggdm1iaXRzKTsKK3N0YXRpYyBib29sIGhlYXBfcGFnZV93aWxs X3NldF92bShQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCQkJCQkgIFJlbGF0aW9uIHJlbGF0aW9u LAorCQkJCQkJCQkgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBCdWZmZXIgaGVhcF9idWZmZXIsIFBh Z2UgaGVhcF9wYWdlLAorCQkJCQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwKKwkJCQkJCQkJICBpbnQg bmxwZGVhZF9pdGVtcywKKwkJCQkJCQkJICB1aW50OCAqb2xkX3ZtYml0cywKKwkJCQkJCQkJICB1 aW50OCAqbmV3X3ZtYml0cyk7CiAKIAogLyoKQEAgLTI4MCw2ICsyOTQsNyBAQCBoZWFwX3BhZ2Vf cHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQogCQkJUHJ1bmVGcmVl emVQYXJhbXMgcGFyYW1zID0gewogCQkJCS5yZWxhdGlvbiA9IHJlbGF0aW9uLAogCQkJCS5idWZm ZXIgPSBidWZmZXIsCisJCQkJLnZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlciwKIAkJCQkucmVhc29u ID0gUFJVTkVfT05fQUNDRVNTLAogCQkJCS5vcHRpb25zID0gMCwKIAkJCQkudmlzdGVzdCA9IHZp c3Rlc3QsCkBAIC0zNDEsNiArMzU2LDggQEAgcHJ1bmVfZnJlZXplX3NldHVwKFBydW5lRnJlZXpl UGFyYW1zICpwYXJhbXMsCiAJLyogY3V0b2ZmcyBtdXN0IGJlIHByb3ZpZGVkIGlmIHdlIHdpbGwg YXR0ZW1wdCBmcmVlemluZyAqLwogCUFzc2VydCghKHBhcmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFH RV9QUlVORV9GUkVFWkUpIHx8IHBhcmFtcy0+Y3V0b2Zmcyk7CiAJcHJzdGF0ZS0+YXR0ZW1wdF9m cmVlemUgPSAocGFyYW1zLT5vcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkgIT0gMDsK KwlwcnN0YXRlLT5hdHRlbXB0X3VwZGF0ZV92bSA9CisJCShwYXJhbXMtPm9wdGlvbnMgJiBIRUFQ X1BBR0VfUFJVTkVfVVBEQVRFX1ZNKSAhPSAwOwogCXByc3RhdGUtPmN1dG9mZnMgPSBwYXJhbXMt PmN1dG9mZnM7CiAKIAkvKgpAQCAtMzk2LDUxICs0MTMsNTQgQEAgcHJ1bmVfZnJlZXplX3NldHVw KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJcHJzdGF0ZS0+ZnJ6X2NvbmZsaWN0X2hvcml6 b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAogCS8qCi0JICogVmFjdXVtIG1heSB1cGRhdGUg dGhlIFZNIGFmdGVyIHdlJ3JlIGRvbmUuICBXZSBjYW4ga2VlcCB0cmFjayBvZgotCSAqIHdoZXRo ZXIgdGhlIHBhZ2Ugd2lsbCBiZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbiBhZnRlciBwcnVu aW5nIGFuZAotCSAqIGZyZWV6aW5nIHRvIGhlbHAgdGhlIGNhbGxlciB0byBkbyB0aGF0LgorCSAq IFRyYWNrIHdoZXRoZXIgdGhlIHBhZ2UgY291bGQgYmUgbWFya2VkIGFsbC12aXNpYmxlIGFuZC9v ciBhbGwtZnJvemVuLgorCSAqIFRoaXMgaW5mb3JtYXRpb24gaXMgdXNlZCBmb3Igb3Bwb3J0dW5p c3RpYyBmcmVlemluZyBhbmQgZm9yIHVwZGF0aW5nCisJICogdGhlIHZpc2liaWxpdHkgbWFwIChW TSkgaWYgcmVxdWVzdGVkIGJ5IHRoZSBjYWxsZXIuCiAJICoKLQkgKiBDdXJyZW50bHksIG9ubHkg VkFDVVVNIHNldHMgdGhlIFZNIGJpdHMuICBUbyBzYXZlIHRoZSBlZmZvcnQsIG9ubHkgZG8KLQkg KiB0aGUgYm9va2tlZXBpbmcgaWYgdGhlIGNhbGxlciBuZWVkcyBpdC4gIEN1cnJlbnRseSwgdGhh dCdzIHRpZWQgdG8KLQkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFLCBidXQgaXQgY291bGQgYmUg YSBzZXBhcmF0ZSBmbGFnIGlmIHlvdSB3YW50ZWQKLQkgKiB0byB1cGRhdGUgdGhlIFZNIGJpdHMg d2l0aG91dCBhbHNvIGZyZWV6aW5nIG9yIGZyZWV6ZSB3aXRob3V0IGFsc28KLQkgKiBzZXR0aW5n IHRoZSBWTSBiaXRzLgorCSAqIEN1cnJlbnRseSwgb25seSBWQUNVVU0gcGVyZm9ybXMgZnJlZXpp bmcsIGJ1dCBvdGhlciBjYWxsZXJzIG1heSBpbiB0aGUKKwkgKiBmdXR1cmUuIFZpc2liaWxpdHkg Ym9va2tlZXBpbmcgaXMgcmVxdWlyZWQgbm90IGp1c3QgZm9yIHNldHRpbmcgdGhlIFZNCisJICog Yml0cywgYnV0IGFsc28gZm9yIG9wcG9ydHVuaXN0aWMgZnJlZXppbmc6IHdlIG9ubHkgY29uc2lk ZXIgZnJlZXppbmcgaWYKKwkgKiB0aGUgcGFnZSB3b3VsZCBiZWNvbWUgYWxsLWZyb3plbiwgb3Ig aWYgaXQgd291bGQgYmUgYWxsLWZyb3plbiBleGNlcHQKKwkgKiBmb3IgZGVhZCB0dXBsZXMgdGhh dCBWQUNVVU0gd2lsbCByZW1vdmUuIElmIGF0dGVtcHRfdXBkYXRlX3ZtIGlzIGZhbHNlLAorCSAq IHdlIHdpbGwgbm90IHNldCB0aGUgVk0gYml0IGV2ZW4gaWYgdGhlIHBhZ2UgaXMgZm91bmQgdG8g YmUgYWxsLXZpc2libGUuCiAJICoKLQkgKiBJbiBhZGRpdGlvbiB0byB0ZWxsaW5nIHRoZSBjYWxs ZXIgd2hldGhlciBpdCBjYW4gc2V0IHRoZSBWTSBiaXQsIHdlCi0JICogYWxzbyB1c2UgJ2FsbF92 aXNpYmxlJyBhbmQgJ2FsbF9mcm96ZW4nIGZvciBvdXIgb3duIGRlY2lzaW9uLW1ha2luZy4gSWYK LQkgKiB0aGUgd2hvbGUgcGFnZSB3b3VsZCBiZWNvbWUgZnJvemVuLCB3ZSBjb25zaWRlciBvcHBv cnR1bmlzdGljYWxseQotCSAqIGZyZWV6aW5nIHR1cGxlcy4gIFdlIHdpbGwgbm90IGJlIGFibGUg dG8gZnJlZXplIHRoZSB3aG9sZSBwYWdlIGlmIHRoZXJlCi0JICogYXJlIHR1cGxlcyBwcmVzZW50 IHRoYXQgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIG9yIGlmIHRoZXJlIGFyZQotCSAqIGRl YWQgdHVwbGVzIHdoaWNoIGFyZSBub3QgeWV0IHJlbW92YWJsZS4gIEhvd2V2ZXIsIGRlYWQgdHVw bGVzIHdoaWNoCi0JICogd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVtaW5nIHNo b3VsZCBub3QgcHJlY2x1ZGUgdXMgZnJvbQotCSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5n LiAgQmVjYXVzZSBvZiB0aGF0LCB3ZSBkbyBub3QgaW1tZWRpYXRlbHkKLQkgKiBjbGVhciBhbGxf dmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB3aGVuIHdlIHNlZSBMUF9ERUFEIGl0ZW1zLiAgV2UgZml4 Ci0JICogdGhhdCBhZnRlciBzY2FubmluZyB0aGUgbGluZSBwb2ludGVycy4gV2UgbXVzdCBjb3Jy ZWN0IGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96ZW4gYmVmb3JlIHdlIHJldHVybiB0aGVt IHRvIHRoZSBjYWxsZXIsIHNvIHRoYXQgdGhlIGNhbGxlcgotCSAqIGRvZXNuJ3Qgc2V0IHRoZSBW TSBiaXRzIGluY29ycmVjdGx5LgorCSAqIElmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0gaXMg cGFzc2VkIHdpdGhvdXQgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSwKKwkgKiBwcnN0YXRlLmFsbF9m cm96ZW4gbXVzdCBiZSBpbml0aWFsaXplZCB0byBmYWxzZSwgc2luY2Ugd2Ugd2lsbCBub3QgY2Fs bAorCSAqIGhlYXBfcHJlcGFyZV9mcmVlemVfdHVwbGUoKSBmb3IgZWFjaCB0dXBsZS4KKwkgKgor CSAqIERlYWQgdHVwbGVzIHRoYXQgd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVt IHNob3VsZCBub3QKKwkgKiBwcmV2ZW50IG9wcG9ydHVuaXN0aWMgZnJlZXppbmcuIFRoZXJlZm9y ZSwgd2UgZG8gbm90IGNsZWFyIGFsbF92aXNpYmxlCisJICogYW5kIGFsbF9mcm96ZW4gd2hlbiB3 ZSBlbmNvdW50ZXIgTFBfREVBRCBpdGVtcy4gSW5zdGVhZCwgd2UgY29ycmVjdAorCSAqIHRoZW0g YWZ0ZXIgZGVjaWRpbmcgd2hldGhlciB0byBmcmVlemUsIGJ1dCBiZWZvcmUgdXBkYXRpbmcgdGhl IFZNLCB0bworCSAqIGF2b2lkIHNldHRpbmcgdGhlIFZNIGJpdHMgaW5jb3JyZWN0bHkuCisJICoK KwkgKiBJZiBuZWl0aGVyIGZyZWV6aW5nIG5vciBWTSB1cGRhdGVzIGFyZSByZXF1ZXN0ZWQsIHdl IHNraXAgdGhlIGV4dHJhCisJICogYm9va2tlZXBpbmcuIEluIHRoaXMgY2FzZSwgaW5pdGlhbGl6 aW5nIGFsbF92aXNpYmxlIHRvIGZhbHNlIGFsbG93cworCSAqIGhlYXBfcHJ1bmVfcmVjb3JkX3Vu Y2hhbmdlZF9scF9ub3JtYWwoKSB0byBieXBhc3MgdW5uZWNlc3Nhcnkgd29yay4KIAkgKi8KIAlp ZiAocHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCiAJewogCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9 IHRydWU7CiAJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSB0cnVlOwogCX0KKwllbHNlIGlmIChwcnN0 YXRlLT5hdHRlbXB0X3VwZGF0ZV92bSkKKwl7CisJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gdHJ1 ZTsKKwkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOworCX0KIAllbHNlCiAJewotCQkvKgot CQkgKiBJbml0aWFsaXppbmcgdG8gZmFsc2UgYWxsb3dzIHNraXBwaW5nIHRoZSB3b3JrIHRvIHVw ZGF0ZSB0aGVtIGluCi0JCSAqIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwo KS4KLQkJICovCiAJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CiAJCXByc3RhdGUtPmFs bF9mcm96ZW4gPSBmYWxzZTsKIAl9CiAKIAkvKgotCSAqIFRoZSB2aXNpYmlsaXR5IGN1dG9mZiB4 aWQgaXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZQotCSAqIHBhZ2UuICBJ biB0aGUgY29tbW9uIGNhc2UsIHRoaXMgd2lsbCBiZSBzZXQgYXMgdGhlIGNvbmZsaWN0IGhvcml6 b24gdGhlCi0JICogY2FsbGVyIGNhbiB1c2UgZm9yIHVwZGF0aW5nIHRoZSBWTS4gIElmLCBhdCB0 aGUgZW5kIG9mIGZyZWV6aW5nIGFuZAotCSAqIHBydW5pbmcsIHRoZSBwYWdlIGlzIGFsbC1mcm96 ZW4sIHRoZXJlIGlzIG5vIHBvc3NpYmlsaXR5IHRoYXQgYW55Ci0JICogcnVubmluZyB0cmFuc2Fj dGlvbiBvbiB0aGUgc3RhbmRieSBkb2VzIG5vdCBzZWUgdHVwbGVzIG9uIHRoZSBwYWdlIGFzCi0J ICogYWxsLXZpc2libGUsIHNvIHRoZSBjb25mbGljdCBob3Jpem9uIHJlbWFpbnMgSW52YWxpZFRy YW5zYWN0aW9uSWQuCisJICogVGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUgbmV3ZXN0 IHhtaW4gb2YgbGl2ZSwgY29tbWl0dGVkIHR1cGxlcworCSAqIG9sZGVyIHRoYW4gT2xkZXN0WG1p biBvbiB0aGUgcGFnZS4gVGhpcyBmaWVsZCBpcyBvbmx5IGtlcHQgdXAtdG8tZGF0ZQorCSAqIGlm IHRoZSBwYWdlIGlzIGFsbC12aXNpYmxlLiBBcyBzb29uIGFzIGEgdHVwbGUgaXMgZW5jb3VudGVy ZWQgdGhhdCBpcworCSAqIG5vdCB2aXNpYmxlIHRvIGFsbCwgdGhpcyBmaWVsZCBpcyB1bm1haW50 YWluZWQuIEFzIGxvbmcgYXMgaXQgaXMKKwkgKiBtYWludGFpbmVkLCBpdCBjYW4gYmUgdXNlZCB0 byBjYWxjdWxhdGUgdGhlIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24KKwkgKiB3aGVuIHVwZGF0 aW5nIHRoZSBWTSBhbmQvb3IgZnJlZXppbmcgYWxsIHRoZSB0dXBsZXMgb24gdGhlIHBhZ2UuCiAJ ICovCiAJcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CiB9CkBAIC03NzUsMTAgKzc5NSwxMzQgQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCXJldHVybiBkb19mcmVlemU7CiB9CiAKKy8q CisgKiBIZWxwZXIgdG8gY29ycmVjdCBhbnkgY29ycnVwdGlvbiBkZXRlY3RlZCBvbiBhbiBoZWFw IHBhZ2UgYW5kIGl0cworICogY29ycmVzcG9uZGluZyB2aXNpYmlsaXR5IG1hcCBwYWdlIGFmdGVy IHBydW5pbmcgYnV0IGJlZm9yZSBzZXR0aW5nIHRoZQorICogdmlzaWJpbGl0eSBtYXAuIEl0IGV4 YW1pbmVzIHRoZSBoZWFwIHBhZ2UsIHRoZSBhc3NvY2lhdGVkIFZNIHBhZ2UsIGFuZCB0aGUKKyAq IG51bWJlciBvZiBkZWFkIGl0ZW1zIHByZXZpb3VzbHkgaWRlbnRpZmllZC4KKyAqCisgKiBUaGlz IGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYW4gZXhjbHVzaXZlIGxvY2sg b24gdGhlIGhlYXAKKyAqIGJ1ZmZlciwgYW5kIHRoZSBkZWFkIGl0ZW1zIG11c3QgaGF2ZSBiZWVu IGRpc2NvdmVyZWQgdW5kZXIgdGhhdCBzYW1lIGxvY2suCisgKgorICogVGhlIHByb3ZpZGVkIHZt Yml0cyBtdXN0IHJlZmxlY3QgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIFZNIGJsb2NrCisgKiBy ZWZlcmVuY2VkIGJ5IHZtYnVmZmVyLiBBbHRob3VnaCB3ZSBkbyBub3QgaG9sZCBhIGxvY2sgb24g dGhlIFZNIGJ1ZmZlciwgaXQKKyAqIGlzIHBpbm5lZCwgYW5kIHRoZSBoZWFwIGJ1ZmZlciBpcyBl eGNsdXNpdmVseSBsb2NrZWQsIGVuc3VyaW5nIHRoYXQgbm8KKyAqIG90aGVyIGJhY2tlbmQgY2Fu IHVwZGF0ZSB0aGUgVk0gYml0cyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgaGVhcCBwYWdlLgorICov CitzdGF0aWMgdm9pZAoraWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJl bCwgQnVmZmVyIGhlYXBfYnVmZmVyLAorCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBQ YWdlIGhlYXBfcGFnZSwKKwkJCQkJCQkgICBpbnQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkgICBC dWZmZXIgdm1idWZmZXIsCisJCQkJCQkJICAgdWludDggdm1iaXRzKQoreworCUFzc2VydCh2aXNp YmlsaXR5bWFwX2dldF9zdGF0dXMocmVsLCBoZWFwX2JsaywgJnZtYnVmZmVyKSA9PSB2bWJpdHMp OworCisJQXNzZXJ0KEJ1ZmZlcklzTG9ja2VkQnlNZUluTW9kZShoZWFwX2J1ZmZlciwgQlVGRkVS X0xPQ0tfRVhDTFVTSVZFKSk7CisKKwkvKgorCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUg dmlzaWJpbGl0eSBtYXAgYml0IHNob3VsZCBuZXZlciBiZSBzZXQgaWYgdGhlCisJICogcGFnZS1s ZXZlbCBiaXQgaXMgY2xlYXIuICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJpdCBn b3QKKwkgKiBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxs ZWQsIHNvIHdlIG11c3QgcmVjaGVjaworCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNs dWRpbmcgdGhhdCB0aGUgVk0gaXMgY29ycnVwdC4KKwkgKi8KKwlpZiAoIVBhZ2VJc0FsbFZpc2li bGUoaGVhcF9wYWdlKSAmJgorCQkoKHZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUp ICE9IDApKQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFU QV9DT1JSVVBURUQpLAorCQkJCSBlcnJtc2coInBhZ2UgaXMgbm90IG1hcmtlZCBhbGwtdmlzaWJs ZSBidXQgdmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAl dSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwX2JsaykpKTsKKwor CQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbCwgaGVhcF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJ U0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CisJfQorCisJLyoKKwkgKiBJdCdzIHBvc3NpYmxlIGZv ciB0aGUgdmFsdWUgcmV0dXJuZWQgYnkKKwkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2Fj dGlvbklkKCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90CisJICogd3JvbmcgZm9yIHVz IHRvIHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUK KwkgKiB5ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBz YWZlIHhtaW4gdmFsdWUKKwkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3RO b25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgaXMKKwkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0 aW1lcyByZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCisJICogc28g aWYgd2Ugc2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxl cyB0aGF0IHdlCisJICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1 YWxseSBhcmUsIGFuZCB0aGUKKwkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCisJ ICoKKwkgKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0 aCBQRF9BTExfVklTSUJMRSBzZXQsCisJICogaG93ZXZlci4KKwkgKi8KKwllbHNlIGlmIChQYWdl SXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkgJiYgbmxwZGVhZF9pdGVtcyA+IDApCisJeworCQllcmVw b3J0KFdBUk5JTkcsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCisJCQkJ IGVycm1zZygicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFsbC12 aXNpYmxlIGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCksIGhlYXBfYmxrKSkpOworCisJCVBhZ2VDbGVhckFsbFZpc2libGUoaGVh cF9wYWdlKTsKKwkJTWFya0J1ZmZlckRpcnR5KGhlYXBfYnVmZmVyKTsKKwkJdmlzaWJpbGl0eW1h cF9jbGVhcihyZWwsIGhlYXBfYmxrLCB2bWJ1ZmZlciwKKwkJCQkJCQlWSVNJQklMSVRZTUFQX1ZB TElEX0JJVFMpOworCX0KK30KKworLyoKKyAqIERlY2lkZSB3aGV0aGVyIHRvIHNldCB0aGUgdmlz aWJpbGl0eSBtYXAgYml0cyAoYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4pCisgKiBmb3IgaGVh cF9ibGsgdXNpbmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgUHJ1bmVTdGF0ZSBhbmQgVk0uCisgKgor ICogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBhY3R1YWxseSBzZXQgdGhlIFZNIGJpdHMgb3IgcGFn ZS1sZXZlbCB2aXNpYmlsaXR5CisgKiBoaW50LCBQRF9BTExfVklTSUJMRS4KKyAqCisgKiBIb3dl dmVyLCBpZiBpdCBmaW5kcyB0aGF0IHRoZSBwYWdlLWxldmVsIHZpc2liaWxpdHkgaGludCBvciBW TSBpcworICogY29ycnVwdGVkLCBpdCB3aWxsIGZpeCB0aGVtIGJ5IGNsZWFyaW5nIHRoZSBWTSBi aXRzIGFuZCB2aXNpYmlsaXR5IGhpbnQuCisgKiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgZG9u ZSBpbiBhIGNyaXRpY2FsIHNlY3Rpb24uCisgKgorICogUmV0dXJucyB0cnVlIGlmIG9uZSBvciBi b3RoIFZNIGJpdHMgc2hvdWxkIGJlIHNldCwgYWxvbmcgd2l0aCByZXR1cm5pbmcgdGhlCisgKiBj dXJyZW50IHZhbHVlIG9mIHRoZSBWTSBiaXRzIGluICpvbGRfdm1iaXRzIGFuZCB0aGUgZGVzaXJl ZCBuZXcgdmFsdWUgb2YKKyAqIHRoZSBWTSBiaXRzIGluICpuZXdfdm1iaXRzLgorICovCitzdGF0 aWMgYm9vbAoraGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFBydW5lU3RhdGUgKnByc3RhdGUsCisJCQkJ CSAgUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCSAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIEJ1ZmZl ciBoZWFwX2J1ZmZlciwgUGFnZSBoZWFwX3BhZ2UsCisJCQkJCSAgQnVmZmVyIHZtYnVmZmVyLAor CQkJCQkgIGludCBubHBkZWFkX2l0ZW1zLAorCQkJCQkgIHVpbnQ4ICpvbGRfdm1iaXRzLAorCQkJ CQkgIHVpbnQ4ICpuZXdfdm1iaXRzKQoreworCWlmICghcHJzdGF0ZS0+YXR0ZW1wdF91cGRhdGVf dm0pCisJCXJldHVybiBmYWxzZTsKKworCSpvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9nZXRf c3RhdHVzKHJlbGF0aW9uLCBoZWFwX2JsaywKKwkJCQkJCQkJCQkgICAmdm1idWZmZXIpOworCisJ LyogV2UgZG8gdGhpcyBldmVuIGlmIG5vdCBhbGwtdmlzaWJsZSAqLworCWlkZW50aWZ5X2FuZF9m aXhfdm1fY29ycnVwdGlvbihyZWxhdGlvbiwgaGVhcF9idWZmZXIsIGhlYXBfYmxrLCBoZWFwX3Bh Z2UsCisJCQkJCQkJCSAgIG5scGRlYWRfaXRlbXMsIHZtYnVmZmVyLAorCQkJCQkJCQkgICAqb2xk X3ZtYml0cyk7CisKKwlpZiAoIXByc3RhdGUtPmFsbF92aXNpYmxlKQorCQlyZXR1cm4gZmFsc2U7 CisKKwkqbmV3X3ZtYml0cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CisKKwlpZiAocHJz dGF0ZS0+YWxsX2Zyb3plbikKKwkJKm5ld192bWJpdHMgfD0gVklTSUJJTElUWU1BUF9BTExfRlJP WkVOOworCisJaWYgKCpuZXdfdm1iaXRzID09ICpvbGRfdm1iaXRzKQorCXsKKwkJKm5ld192bWJp dHMgPSAwOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKIAogLyoK ICAqIFBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBhbmQgcG90ZW50aWFsbHkgZnJlZXpl IHR1cGxlcyBvbiB0aGUKLSAqIHNwZWNpZmllZCBwYWdlLgorICogc3BlY2lmaWVkIHBhZ2UuIElm IHRoZSBwYWdlJ3MgdmlzaWJpbGl0eSBzdGF0dXMgaGFzIGNoYW5nZWQsIHVwZGF0ZSBpdCBpbgor ICogdGhlIFZNLgogICoKICAqIENhbGxlciBtdXN0IGhhdmUgcGluIGFuZCBidWZmZXIgY2xlYW51 cCBsb2NrIG9uIHRoZSBwYWdlLiAgTm90ZSB0aGF0IHdlCiAgKiBkb24ndCB1cGRhdGUgdGhlIEZT TSBpbmZvcm1hdGlvbiBmb3IgcGFnZSBvbiBjYWxsZXIncyBiZWhhbGYuICBDYWxsZXIgbWlnaHQK QEAgLTc5MywxMiArOTM3LDEzIEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwKICAqIHR1cGxlcyBpZiBpdCdzIHJlcXVpcmVkIGluIG9yZGVy IHRvIGFkdmFuY2UgcmVsZnJvemVueGlkIC8gcmVsbWlubXhpZCwgb3IKICAqIGlmIGl0J3MgY29u c2lkZXJlZCBhZHZhbnRhZ2VvdXMgZm9yIG92ZXJhbGwgc3lzdGVtIHBlcmZvcm1hbmNlIHRvIGRv IHNvCiAgKiBub3cuICBUaGUgJ3BhcmFtcy5jdXRvZmZzJywgJ3ByZXN1bHQnLCAnbmV3X3JlbGZy b3plbl94aWQnIGFuZAotICogJ25ld19yZWxtaW5fbXhpZCcgYXJndW1lbnRzIGFyZSByZXF1aXJl ZCB3aGVuIGZyZWV6aW5nLiAgV2hlbgotICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBvcHRpb24g aXMgcGFzc2VkLCB3ZSBhbHNvIHNldCBwcmVzdWx0LT5hbGxfdmlzaWJsZQotICogYW5kIHByZXN1 bHQtPmFsbF9mcm96ZW4gYWZ0ZXIgZGV0ZXJtaW5pbmcgd2hldGhlciBvciBub3QgdG8KLSAqIG9w cG9ydHVuaXN0aWNhbGx5IGZyZWV6ZSwgdG8gaW5kaWNhdGUgaWYgdGhlIFZNIGJpdHMgY2FuIGJl IHNldC4gIFRoZXkgYXJlCi0gKiBhbHdheXMgc2V0IHRvIGZhbHNlIHdoZW4gdGhlIEhFQVBfUEFH RV9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIG5vdCBwYXNzZWQsCi0gKiBiZWNhdXNlIGF0IHRoZSBt b21lbnQgb25seSBjYWxsZXJzIHRoYXQgYWxzbyBmcmVlemUgbmVlZCB0aGF0IGluZm9ybWF0aW9u LgorICogJ25ld19yZWxtaW5fbXhpZCcgYXJndW1lbnRzIGFyZSByZXF1aXJlZCB3aGVuIGZyZWV6 aW5nLgorICoKKyAqIElmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0gaXMgc2V0IGluIHBhcmFt cyBhbmQgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mCisgKiB0aGUgcGFnZSBoYXMgY2hhbmdlZCwg d2Ugd2lsbCB1cGRhdGUgdGhlIFZNIGF0IHRoZSBzYW1lIHRpbWUgYXMgcHJ1bmluZyBhbmQKKyAq IGZyZWV6aW5nIHRoZSBoZWFwIHBhZ2UuIFdlIHdpbGwgYWxzbyB1cGRhdGUgcHJlc3VsdC0+b2xk X3ZtYml0cyBhbmQKKyAqIHByZXN1bHQtPm5ld192bWJpdHMgd2l0aCB0aGUgc3RhdGUgb2YgdGhl IFZNIGJlZm9yZSBhbmQgYWZ0ZXIgdXBkYXRpbmcgaXQKKyAqIGZvciB0aGUgY2FsbGVyIHRvIHVz ZSBpbiBib29ra2VlcGluZy4KICAqCiAgKiBwcmVzdWx0IGNvbnRhaW5zIG91dHB1dCBwYXJhbWV0 ZXJzIG5lZWRlZCBieSBjYWxsZXJzLCBzdWNoIGFzIHRoZSBudW1iZXIgb2YKICAqIHR1cGxlcyBy ZW1vdmVkIGFuZCB0aGUgb2Zmc2V0cyBvZiBkZWFkIGl0ZW1zIG9uIHRoZSBwYWdlIGFmdGVyIHBy dW5pbmcuCkBAIC04MjMsMTMgKzk2OCwxOSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQ cnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJCQkJICAgTXVsdGlYYWN0SWQgKm5ld19yZWxt aW5fbXhpZCkKIHsKIAlCdWZmZXIJCWJ1ZmZlciA9IHBhcmFtcy0+YnVmZmVyOworCUJ1ZmZlcgkJ dm1idWZmZXIgPSBwYXJhbXMtPnZtYnVmZmVyOwogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdl KGJ1ZmZlcik7CisJQmxvY2tOdW1iZXIgYmxvY2tubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1 ZmZlcik7CiAJUHJ1bmVTdGF0ZQlwcnN0YXRlOwogCWJvb2wJCWRvX2ZyZWV6ZTsKIAlib29sCQlk b19wcnVuZTsKIAlib29sCQlkb19oaW50X3BydW5lOworCWJvb2wJCWRvX3NldF92bTsKIAlib29s CQlkaWRfdHVwbGVfaGludF9mcGk7CiAJaW50NjQJCWZwaV9iZWZvcmUgPSBwZ1dhbFVzYWdlLndh bF9mcGk7CisJdWludDgJCW5ld192bWJpdHMgPSAwOworCXVpbnQ4CQlvbGRfdm1iaXRzID0gMDsK KwogCiAJLyogSW5pdGlhbGl6ZSBwcnN0YXRlICovCiAJcHJ1bmVfZnJlZXplX3NldHVwKHBhcmFt cywKQEAgLTEwMTEsNiArMTE2Miw2NCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVu ZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJKm5ld19yZWxtaW5fbXhpZCA9IHByc3RhdGUucGFn ZWZyei5Ob0ZyZWV6ZVBhZ2VSZWxtaW5NeGlkOwogCQl9CiAJfQorCisJLyogTm93IHVwZGF0ZSB0 aGUgdmlzaWJpbGl0eSBtYXAgYW5kIFBEX0FMTF9WSVNJQkxFIGhpbnQgKi8KKwlBc3NlcnQoIXBy c3RhdGUuYWxsX3Zpc2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApKTsKKworCWRv X3NldF92bSA9IGhlYXBfcGFnZV93aWxsX3NldF92bSgmcHJzdGF0ZSwKKwkJCQkJCQkJCSAgcGFy YW1zLT5yZWxhdGlvbiwKKwkJCQkJCQkJCSAgYmxvY2tubywKKwkJCQkJCQkJCSAgYnVmZmVyLAor CQkJCQkJCQkJICBwYWdlLAorCQkJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkJCSAgcHJzdGF0 ZS5scGRlYWRfaXRlbXMsCisJCQkJCQkJCQkgICZvbGRfdm1iaXRzLAorCQkJCQkJCQkJICAmbmV3 X3ZtYml0cyk7CisKKwkvKgorCSAqIG5ld192bWJpdHMgc2hvdWxkIGJlIDAgcmVnYXJkbGVzcyBv ZiB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlIGlmIHdlIGRvIG5v dCBpbnRlbmQgdG8gc2V0IHRoZSBWTS4KKwkgKi8KKwlBc3NlcnQoZG9fc2V0X3ZtIHx8IG5ld192 bWJpdHMgPT0gMCk7CisKKwkvKiBTZXQgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBwYWdlIHZpc2li aWxpdHkgaGludCwgaWYgcmVsZXZhbnQgKi8KKwlpZiAoZG9fc2V0X3ZtKQorCXsKKwkJQXNzZXJ0 KHByc3RhdGUuYWxsX3Zpc2libGUpOworCisJCS8qCisJCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0 aGUgY2FzZSB0aGF0IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlzIHNldAorCQkgKiB3aGlsZSB0 aGUgcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2VkIChp ZgorCQkgKiBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNldCBib3Ro IGJpdHMgc28gdGhhdCB3ZQorCQkgKiBnZXQgYmFjayBpbiBzeW5jLgorCQkgKgorCQkgKiBFdmVu IGlmIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5 IGFib3V0CisJCSAqIHVubmVjZXNzYXJpbHkgZGlydHlpbmcgdGhlIGhlYXAgYnVmZmVyLCBhcyBp dCBtdXN0IGJlIG1hcmtlZCBkaXJ0eQorCQkgKiBiZWZvcmUgYWRkaW5nIGl0IHRvIHRoZSBXQUwg Y2hhaW4uIFRoZSBvbmx5IHNjZW5hcmlvIHdoZXJlIGl0IGlzCisJCSAqIG5vdCBhbHJlYWR5IGRp cnR5IGlzIGlmIHRoZSBWTSB3YXMgcmVtb3ZlZCwgYW5kIHRoYXQgaXNuJ3Qgd29ydGgKKwkJICog b3B0aW1pemluZyBmb3IuCisJCSAqLworCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJTWFy a0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisKKwkJLyoKKwkJICogSWYgdGhlIHBhZ2UgaXMgYmVpbmcg c2V0IGFsbC1mcm96ZW4sIHdlIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQKKwkJICogYXMgdGhl IGN1dG9mZl94aWQsIHNpbmNlIGEgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBzdWZmaWNpZW50 IHRvCisJCSAqIG1ha2UgZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0 aGUgcGFnZSdzIHR1cGxlcworCQkgKiB3ZXJlIGZyb3plbi4KKwkJICovCisJCUFzc2VydCghcHJz dGF0ZS5hbGxfZnJvemVuIHx8CisJCQkgICAhVHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC0+ dm1fY29uZmxpY3RfaG9yaXpvbikpOworCisJCXZpc2liaWxpdHltYXBfc2V0KHBhcmFtcy0+cmVs YXRpb24sIGJsb2Nrbm8sIGJ1ZmZlciwKKwkJCQkJCSAgSW52YWxpZFhMb2dSZWNQdHIsCisJCQkJ CQkgIHZtYnVmZmVyLCBwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uLAorCQkJCQkJICBuZXdf dm1iaXRzKTsKKwl9CisKKwkvKiBTYXZlIHRoZSB2bWJpdHMgZm9yIGNhbGxlciAqLworCXByZXN1 bHQtPm9sZF92bWJpdHMgPSBvbGRfdm1iaXRzOworCXByZXN1bHQtPm5ld192bWJpdHMgPSBuZXdf dm1iaXRzOwogfQogCiAKQEAgLTE0ODUsNiArMTY5NCw4IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3Vu Y2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXRO dW1iCiAJCQl7CiAJCQkJVHJhbnNhY3Rpb25JZCB4bWluOwogCisJCQkJQXNzZXJ0KHByc3RhdGUt PmF0dGVtcHRfdXBkYXRlX3ZtKTsKKwogCQkJCWlmICghSGVhcFR1cGxlSGVhZGVyWG1pbkNvbW1p dHRlZChodHVwKSkKIAkJCQl7CiAJCQkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggNDI1ZGMyZjg2OTEuLmNjZmFkNWIy ZGJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00MjgsMTEgKzQyOCw2 IEBAIHN0YXRpYyB2b2lkIGZpbmRfbmV4dF91bnNraXBwYWJsZV9ibG9jayhMVlJlbFN0YXRlICp2 YWNyZWwsIGJvb2wgKnNraXBzYWxsdmlzKTsKIHN0YXRpYyBib29sIGxhenlfc2Nhbl9uZXdfb3Jf ZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCQkgICBCbG9ja051 bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCQkgICBib29sIHNoYXJlbG9jaywgQnVmZmVy IHZtYnVmZmVyKTsKLXN0YXRpYyB2b2lkIGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihS ZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwKLQkJCQkJCQkJCQkgICBCbG9ja051bWJl ciBoZWFwX2JsaywgUGFnZSBoZWFwX3BhZ2UsCi0JCQkJCQkJCQkJICAgaW50IG5scGRlYWRfaXRl bXMsCi0JCQkJCQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyLAotCQkJCQkJCQkJCSAgIHVpbnQ4IHZt Yml0cyk7CiBzdGF0aWMgaW50CWxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1 ZmZlciBidWYsCiAJCQkJCQkJQmxvY2tOdW1iZXIgYmxrbm8sIFBhZ2UgcGFnZSwKIAkJCQkJCQlC dWZmZXIgdm1idWZmZXIsCkBAIC0xOTQwLDc3ICsxOTM1LDYgQEAgY21wT2Zmc2V0TnVtYmVycyhj b25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogCXJldHVybiBwZ19jbXBfdTE2KCooY29uc3Qg T2Zmc2V0TnVtYmVyICopIGEsICooY29uc3QgT2Zmc2V0TnVtYmVyICopIGIpOwogfQogCi0vKgot ICogSGVscGVyIHRvIGNvcnJlY3QgYW55IGNvcnJ1cHRpb24gZGV0ZWN0ZWQgb24gYW4gaGVhcCBw YWdlIGFuZCBpdHMKLSAqIGNvcnJlc3BvbmRpbmcgdmlzaWJpbGl0eSBtYXAgcGFnZSBhZnRlciBw cnVuaW5nIGJ1dCBiZWZvcmUgc2V0dGluZyB0aGUKLSAqIHZpc2liaWxpdHkgbWFwLiBJdCBleGFt aW5lcyB0aGUgaGVhcCBwYWdlLCB0aGUgYXNzb2NpYXRlZCBWTSBwYWdlLCBhbmQgdGhlCi0gKiBu dW1iZXIgb2YgZGVhZCBpdGVtcyBwcmV2aW91c2x5IGlkZW50aWZpZWQuCi0gKgotICogVGhpcyBm dW5jdGlvbiBtdXN0IGJlIGNhbGxlZCB3aGlsZSBob2xkaW5nIGFuIGV4Y2x1c2l2ZSBsb2NrIG9u IHRoZSBoZWFwCi0gKiBidWZmZXIsIGFuZCB0aGUgZGVhZCBpdGVtcyBtdXN0IGhhdmUgYmVlbiBk aXNjb3ZlcmVkIHVuZGVyIHRoYXQgc2FtZSBsb2NrLgotCi0gKiBUaGUgcHJvdmlkZWQgdm1iaXRz IG11c3QgcmVmbGVjdCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgVk0gYmxvY2sKLSAqIHJlZmVy ZW5jZWQgYnkgdm1idWZmZXIuIEFsdGhvdWdoIHdlIGRvIG5vdCBob2xkIGEgbG9jayBvbiB0aGUg Vk0gYnVmZmVyLCBpdAotICogaXMgcGlubmVkLCBhbmQgdGhlIGhlYXAgYnVmZmVyIGlzIGV4Y2x1 c2l2ZWx5IGxvY2tlZCwgZW5zdXJpbmcgdGhhdCBubwotICogb3RoZXIgYmFja2VuZCBjYW4gdXBk YXRlIHRoZSBWTSBiaXRzIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBoZWFwIHBhZ2UuCi0gKi8KLXN0 YXRpYyB2b2lkCi1pZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsLCBC dWZmZXIgaGVhcF9idWZmZXIsCi0JCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIFBhZ2Ug aGVhcF9wYWdlLAotCQkJCQkJCSAgIGludCBubHBkZWFkX2l0ZW1zLAotCQkJCQkJCSAgIEJ1ZmZl ciB2bWJ1ZmZlciwKLQkJCQkJCQkgICB1aW50OCB2bWJpdHMpCi17Ci0JQXNzZXJ0KHZpc2liaWxp dHltYXBfZ2V0X3N0YXR1cyhyZWwsIGhlYXBfYmxrLCAmdm1idWZmZXIpID09IHZtYml0cyk7Ci0K LQlBc3NlcnQoQnVmZmVySXNMb2NrZWRCeU1lSW5Nb2RlKGhlYXBfYnVmZmVyLCBCVUZGRVJfTE9D S19FWENMVVNJVkUpKTsKLQotCS8qCi0JICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRoZSB2aXNp YmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKLQkgKiBwYWdlLWxldmVs IGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgYml0IGdvdAot CSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNhbGxlZCwg c28gd2UgbXVzdCByZWNoZWNrCi0JICogd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1ZGlu ZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgotCSAqLwotCWlmICghUGFnZUlzQWxsVmlzaWJsZSho ZWFwX3BhZ2UpICYmCi0JCSgodm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgIT0g MCkpCi0JewotCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NP UlJVUFRFRCksCi0JCQkJIGVycm1zZygicGFnZSBpcyBub3QgbWFya2VkIGFsbC12aXNpYmxlIGJ1 dCB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0IGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwK LQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIGhlYXBfYmxrKSkpOwotCi0JCXZp c2liaWxpdHltYXBfY2xlYXIocmVsLCBoZWFwX2Jsaywgdm1idWZmZXIsCi0JCQkJCQkJVklTSUJJ TElUWU1BUF9WQUxJRF9CSVRTKTsKLQl9Ci0KLQkvKgotCSAqIEl0J3MgcG9zc2libGUgZm9yIHRo ZSB2YWx1ZSByZXR1cm5lZCBieQotCSAqIEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9u SWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QKLQkgKiB3cm9uZyBmb3IgdXMgdG8g c2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJsZSB0byBldmVyeW9uZQotCSAq IHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQuIFRoZSByZWFsIHNhZmUg eG1pbiB2YWx1ZQotCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJkcywgYnV0IEdldE9sZGVzdE5vblJl bW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcwotCSAqIGNvbnNlcnZhdGl2ZSBhbmQgc29tZXRpbWVz IHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBzbWFsbCwKLQkgKiBzbyBpZiB3 ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgdHVwbGVzIHRo YXQgd2UKLQkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8gZXZlcnlvbmUgeWV0IGFjdHVhbGx5 IGFyZSwgYW5kIHRoZQotCSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcgaXMgY29ycmVjdC4KLQkgKgot CSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1zIG9uIGEgcGFnZSB3aXRoIFBE X0FMTF9WSVNJQkxFIHNldCwKLQkgKiBob3dldmVyLgotCSAqLwotCWVsc2UgaWYgKFBhZ2VJc0Fs bFZpc2libGUoaGVhcF9wYWdlKSAmJiBubHBkZWFkX2l0ZW1zID4gMCkKLQl7Ci0JCWVyZXBvcnQo V0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKLQkJCQkgZXJy bXNnKCJwYWdlIGNvbnRhaW5pbmcgTFBfREVBRCBpdGVtcyBpcyBtYXJrZWQgYXMgYWxsLXZpc2li bGUgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUocmVsKSwgaGVhcF9ibGspKSk7Ci0KLQkJUGFnZUNsZWFyQWxsVmlzaWJsZShoZWFwX3Bh Z2UpOwotCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWZmZXIpOwotCQl2aXNpYmlsaXR5bWFwX2Ns ZWFyKHJlbCwgaGVhcF9ibGssIHZtYnVmZmVyLAotCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURf QklUUyk7Ci0JfQotfQotCiAvKgogICoJbGF6eV9zY2FuX3BydW5lKCkgLS0gbGF6eV9zY2FuX2hl YXAoKSBwcnVuaW5nIGFuZCBmcmVlemluZy4KICAqCkBAIC0yMDQyLDEzICsxOTY2LDEyIEBAIGxh enlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJUHJ1bmVGcmVlemVQYXJhbXMgcGFy YW1zID0gewogCQkucmVsYXRpb24gPSByZWwsCiAJCS5idWZmZXIgPSBidWYsCisJCS52bWJ1ZmZl ciA9IHZtYnVmZmVyLAogCQkucmVhc29uID0gUFJVTkVfVkFDVVVNX1NDQU4sCi0JCS5vcHRpb25z ID0gSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSwKKwkJLm9wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVf RlJFRVpFIHwgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSwKIAkJLnZpc3Rlc3QgPSB2YWNyZWwt PnZpc3Rlc3QsCiAJCS5jdXRvZmZzID0gJnZhY3JlbC0+Y3V0b2ZmcywKIAl9OwotCXVpbnQ4CQlv bGRfdm1iaXRzID0gMDsKLQl1aW50OAkJbmV3X3ZtYml0cyA9IDA7CiAKIAlBc3NlcnQoQnVmZmVy R2V0QmxvY2tOdW1iZXIoYnVmKSA9PSBibGtubyk7CiAKQEAgLTIxNDgsNzMgKzIwNzEsMjQgQEAg bGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkvKiBEaWQgd2UgZmluZCBMUF9E RUFEIGl0ZW1zPyAqLwogCSpoYXNfbHBkZWFkX2l0ZW1zID0gKHByZXN1bHQubHBkZWFkX2l0ZW1z ID4gMCk7CiAKLQlBc3NlcnQoIXByZXN1bHQuYWxsX3Zpc2libGUgfHwgISgqaGFzX2xwZGVhZF9p dGVtcykpOwotCUFzc2VydCghcHJlc3VsdC5hbGxfZnJvemVuIHx8IHByZXN1bHQuYWxsX3Zpc2li bGUpOwotCi0Jb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyh2YWNyZWwtPnJl bCwgYmxrbm8sICZ2bWJ1ZmZlcik7Ci0KLQlpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24o dmFjcmVsLT5yZWwsIGJ1ZiwgYmxrbm8sIHBhZ2UsCi0JCQkJCQkJCSAgIHByZXN1bHQubHBkZWFk X2l0ZW1zLCB2bWJ1ZmZlciwgb2xkX3ZtYml0cyk7Ci0KLQlpZiAoIXByZXN1bHQuYWxsX3Zpc2li bGUpCi0JCXJldHVybiBwcmVzdWx0Lm5kZWxldGVkOwotCi0JLyogU2V0IHRoZSB2aXNpYmlsaXR5 IG1hcCBhbmQgcGFnZSB2aXNpYmlsaXR5IGhpbnQgKi8KLQluZXdfdm1iaXRzID0gVklTSUJJTElU WU1BUF9BTExfVklTSUJMRTsKLQotCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCi0JCW5ld192bWJp dHMgfD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOOwotCi0JLyogTm90aGluZyB0byBkbyAqLwot CWlmIChvbGRfdm1iaXRzID09IG5ld192bWJpdHMpCi0JCXJldHVybiBwcmVzdWx0Lm5kZWxldGVk OwotCi0JQXNzZXJ0KHByZXN1bHQuYWxsX3Zpc2libGUpOwotCi0JLyoKLQkgKiBJdCBzaG91bGQg bmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlzaWJpbGl0eSBtYXAgcGFnZSBpcyBzZXQgd2hp bGUKLQkgKiB0aGUgcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBh bGxvd2VkIChpZiBjaGVja3N1bXMKLQkgKiBhcmUgbm90IGVuYWJsZWQpLiAgUmVnYXJkbGVzcywg c2V0IGJvdGggYml0cyBzbyB0aGF0IHdlIGdldCBiYWNrIGluCi0JICogc3luYy4KLQkgKgotCSAq IEV2ZW4gaWYgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQsIHdlIGRvbid0IG5lZWQgdG8g d29ycnkgYWJvdXQKLQkgKiB1bm5lY2Vzc2FyaWx5IGRpcnR5aW5nIHRoZSBoZWFwIGJ1ZmZlciwg YXMgaXQgbXVzdCBiZSBtYXJrZWQgZGlydHkKLQkgKiBiZWZvcmUgYWRkaW5nIGl0IHRvIHRoZSBX QUwgY2hhaW4uIFRoZSBvbmx5IHNjZW5hcmlvIHdoZXJlIGl0IGlzIG5vdAotCSAqIGFscmVhZHkg ZGlydHkgaXMgaWYgdGhlIFZNIHdhcyByZW1vdmVkLCBhbmQgdGhhdCBpc24ndCB3b3J0aCBvcHRp bWl6aW5nCi0JICogZm9yLgotCSAqLwotCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCU1hcmtC dWZmZXJEaXJ0eShidWYpOwotCi0JLyoKLQkgKiBJZiB0aGUgcGFnZSBpcyBiZWluZyBzZXQgYWxs LWZyb3plbiwgd2UgcGFzcyBJbnZhbGlkVHJhbnNhY3Rpb25JZCBhcwotCSAqIHRoZSBjdXRvZmZf eGlkLCBzaW5jZSBhIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24gc3VmZmljaWVudCB0byBtYWtl Ci0JICogZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFnZSdz IHR1cGxlcyB3ZXJlIGZyb3plbi4KLQkgKi8KLQlBc3NlcnQoIXByZXN1bHQuYWxsX2Zyb3plbiB8 fAotCQkgICAhVHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9u KSk7Ci0KLQl2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJ ICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJICB2bWJ1ZmZlciwgcHJlc3VsdC52bV9jb25mbGlj dF9ob3Jpem9uLAotCQkJCQkgIG5ld192bWJpdHMpOwotCiAJLyoKIAkgKiBJZiB0aGUgcGFnZSB3 YXNuJ3QgYWxyZWFkeSBzZXQgYWxsLXZpc2libGUgYW5kL29yIGFsbC1mcm96ZW4gaW4gdGhlIFZN LAogCSAqIGNvdW50IGl0IGFzIG5ld2x5IHNldCBmb3IgbG9nZ2luZy4KIAkgKi8KLQlpZiAoKG9s ZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSA9PSAwKQorCWlmICgocHJlc3Vs dC5vbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgPT0gMCAmJgorCQkocHJl c3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgIT0gMCkKIAl7CiAJ CXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKLQkJaWYgKHByZXN1bHQuYWxsX2Zyb3pl bikKKwkJaWYgKChwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4p ICE9IDApCiAJCXsKIAkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7CiAJ CQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOwogCQl9CiAJfQotCWVsc2UgaWYgKChvbGRfdm1iaXRz ICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSA9PSAwICYmCi0JCQkgcHJlc3VsdC5hbGxfZnJv emVuKQorCWVsc2UgaWYgKChwcmVzdWx0Lm9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9G Uk9aRU4pID09IDAgJiYKKwkJCSAocHJlc3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9B TExfRlJPWkVOKSAhPSAwKQogCXsKKwkJQXNzZXJ0KChwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJ QklMSVRZTUFQX0FMTF9WSVNJQkxFKSAhPSAwKTsKIAkJdmFjcmVsLT52bV9uZXdfZnJvemVuX3Bh Z2VzKys7CiAJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4 IGY3ZTRhZTM4NDNjLi5mM2ZhNjFjOWMxYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtNDIsNiArNDIs NyBAQAogLyogIm9wdGlvbnMiIGZsYWcgYml0cyBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVl emUgKi8KICNkZWZpbmUgSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVwkJKDEgPDwgMCkK ICNkZWZpbmUgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRQkJCQkoMSA8PCAxKQorI2RlZmluZSBIRUFQ X1BBR0VfUFJVTkVfVVBEQVRFX1ZNCQkJKDEgPDwgMikKIAogdHlwZWRlZiBzdHJ1Y3QgQnVsa0lu c2VydFN0YXRlRGF0YSAqQnVsa0luc2VydFN0YXRlOwogdHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlz U3RhdGUgR2xvYmFsVmlzU3RhdGU7CkBAIC0yMzgsNiArMjM5LDEyIEBAIHR5cGVkZWYgc3RydWN0 IFBydW5lRnJlZXplUGFyYW1zCiAJUmVsYXRpb24JcmVsYXRpb247CQkvKiByZWxhdGlvbiBjb250 YWluaW5nIGJ1ZmZlciB0byBiZSBwcnVuZWQgKi8KIAlCdWZmZXIJCWJ1ZmZlcjsJCQkvKiBidWZm ZXIgdG8gYmUgcHJ1bmVkICovCiAKKwkvKgorCSAqIHZtYnVmZmVyIGlzIHRoZSBidWZmZXIgdGhh dCBtdXN0IGFscmVhZHkgY29udGFpbiB0aGUgcmVxdWlyZWQgYmxvY2sgb2YKKwkgKiB0aGUgdmlz aWJpbGl0eSBtYXAgaWYgd2UgYXJlIHRvIHVwZGF0ZSBpdC4KKwkgKi8KKwlCdWZmZXIJCXZtYnVm ZmVyOworCiAJLyoKIAkgKiBUaGUgcmVhc29uIHBydW5pbmcgd2FzIHBlcmZvcm1lZC4gIEl0IGlz IHVzZWQgdG8gc2V0IHRoZSBXQUwgcmVjb3JkCiAJICogb3Bjb2RlIHdoaWNoIGlzIHVzZWQgZm9y IGRlYnVnZ2luZyBhbmQgYW5hbHlzaXMgcHVycG9zZXMuCkBAIC0yNTIsNiArMjU5LDkgQEAgdHlw ZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVQYXJhbXMKIAkgKgogCSAqIEhFQVBfUEFHRV9QUlVORV9G UkVFWkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFuZAogCSAq IHdpbGwgcmV0dXJuICdhbGxfdmlzaWJsZScsICdhbGxfZnJvemVuJyBmbGFncyB0byB0aGUgY2Fs bGVyLgorCSAqCisJICogSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSBpbmRpY2F0ZXMgdGhhdCB3 ZSB3aWxsIHNldCB0aGUgcGFnZSdzIHN0YXR1cworCSAqIGluIHRoZSBWTS4KIAkgKi8KIAlpbnQJ CQlvcHRpb25zOwogCkBAIC0yOTksNiArMzA5LDE3IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJl ZXplUmVzdWx0CiAJYm9vbAkJYWxsX2Zyb3plbjsKIAlUcmFuc2FjdGlvbklkIHZtX2NvbmZsaWN0 X2hvcml6b247CiAKKwkvKgorCSAqIG9sZF92bWJpdHMgYXJlIHRoZSBzdGF0ZSBvZiB0aGUgYWxs LXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYml0cyBpbiB0aGUKKwkgKiB2aXNpYmlsaXR5IG1hcCBi ZWZvcmUgdXBkYXRpbmcgaXQgZHVyaW5nIHBoYXNlIEkgb2YgdmFjdXVtaW5nLgorCSAqIG5ld192 bWJpdHMgYXJlIHRoZSBzdGF0ZSBvZiB0aG9zZSBiaXRzIGFmdGVyIHBoYXNlIEkgb2YgdmFjdXVt aW5nLgorCSAqCisJICogVGhlc2UgYXJlIG9ubHkgc2V0IGlmIHRoZSBIRUFQX1BBR0VfUFJVTkVf VVBEQVRFX1ZNIG9wdGlvbiBpcyBzZXQgYW5kCisJICogd2UgaGF2ZSBhdHRlbXB0ZWQgdG8gdXBk YXRlIHRoZSBWTS4KKwkgKi8KKwl1aW50OAkJbmV3X3ZtYml0czsKKwl1aW50OAkJb2xkX3ZtYml0 czsKKwogCS8qCiAJICogV2hldGhlciBvciBub3QgdGhlIHBhZ2UgbWFrZXMgcmVsIHRydW5jYXRp b24gdW5zYWZlLiAgVGhpcyBpcyBzZXQgdG8KIAkgKiAndHJ1ZScsIGV2ZW4gaWYgdGhlIHBhZ2Ug Y29udGFpbnMgTFBfREVBRCBpdGVtcy4gIFZBQ1VVTSB3aWxsIHJlbW92ZQotLSAKMi40My4wCgo= --00000000000028078b064614a599 Content-Type: text/x-patch; charset="US-ASCII"; name="v27-0005-Move-VM-assert-into-prune-freeze-code.patch" Content-Disposition: attachment; filename="v27-0005-Move-VM-assert-into-prune-freeze-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8tswoj4 RnJvbSBlZjdiYTY4ZGUwZmE2MmMxMWM5ZjcxZThjZTFjNTc3ZWZhODFkMGVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTU6NTc6MzQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNyAwNS8xNF0gTW92ZSBWTSBhc3NlcnQgaW50byBwcnVuZS9mcmVlemUgY29kZQoKVGhp cyBpcyBhIHN0ZXAgdG93YXJkIHNldHRpbmcgdGhlIFZNIGluIHRoZSBzYW1lIFdBTCByZWNvcmQg YXMgcHJ1bmluZwphbmQgZnJlZXppbmcuIEl0IG1vdmVzIHRoZSBjaGVjayBvZiB0aGUgaGVhcCBw YWdlIGludG8gcHJ1bmUvZnJlZXplIGNvZGUKYmVmb3JlIHNldHRpbmcgdGhlIFZNLiBUaGlzIGFs bG93cyB1cyB0byByZW1vdmUgc29tZSBmaWVsZHMgb2YgdGhlClBydW5lRnJlZXplUmVzdWx0Lgot LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICB8IDg2ICsrKysrKysrKysr KysrKysrKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8 IDY4ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAg ICAgICAgICB8IDI1ICsrKy0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDc3IGluc2VydGlvbnMoKyks IDEwMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IGM5 Nzk2MjU1NTFjLi4wY2ExNjM0MGUzZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMK QEAgLTkxOCw2ICs5MTgsMzEgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFBydW5lU3RhdGUgKnBy c3RhdGUsCiAJcmV0dXJuIHRydWU7CiB9CiAKKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisK Ky8qCisgKiBXcmFwcGVyIGZvciBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoKSB3aGlj aCBjYW4gYmUgdXNlZCBmb3IgY2FsbGVycworICogdGhhdCBleHBlY3Qgbm8gTFBfREVBRCBvbiB0 aGUgcGFnZS4gQ3VycmVudGx5IGFzc2VydC1vbmx5LCBidXQgdGhlcmUgaXMgbm8KKyAqIHJlYXNv biBub3QgdG8gdXNlIGl0IG91dHNpZGUgb2YgYXNzZXJ0cy4KKyAqLworc3RhdGljIGJvb2wKK2hl YXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkg VHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4sCisJCQkJ CQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJCQkJIE9mZnNldE51 bWJlciAqbG9nZ2luZ19vZmZudW0pCit7CisKKwlyZXR1cm4gaGVhcF9wYWdlX3dvdWxkX2JlX2Fs bF92aXNpYmxlKHJlbCwgYnVmLAorCQkJCQkJCQkJCSAgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCQkg IE5VTEwsIDAsCisJCQkJCQkJCQkJICBhbGxfZnJvemVuLAorCQkJCQkJCQkJCSAgdmlzaWJpbGl0 eV9jdXRvZmZfeGlkLAorCQkJCQkJCQkJCSAgbG9nZ2luZ19vZmZudW0pOworfQorI2VuZGlmCisK KwogCiAvKgogICogUHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGFuZCBwb3RlbnRpYWxs eSBmcmVlemUgdHVwbGVzIG9uIHRoZQpAQCAtOTcxLDYgKzk5Niw3IEBAIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJQnVmZmVyCQl2bWJ1ZmZl ciA9IHBhcmFtcy0+dm1idWZmZXI7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVy KTsKIAlCbG9ja051bWJlciBibG9ja25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsK KwlUcmFuc2FjdGlvbklkIHZtX2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIAlQcnVuZVN0YXRlCXByc3RhdGU7CiAJYm9vbAkJZG9fZnJlZXplOwogCWJvb2wJCWRvX3By dW5lOwpAQCAtMTEyOSwyMyArMTE1NSw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBy dW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJcHJlc3VsdC0+bmZyb3plbiA9IHByc3RhdGUubmZy b3plbjsKIAlwcmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUubGl2ZV90dXBsZXM7CiAJcHJl c3VsdC0+cmVjZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2VudGx5X2RlYWRfdHVwbGVz OwotCXByZXN1bHQtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfdmlzaWJsZTsKLQlwcmVzdWx0 LT5hbGxfZnJvemVuID0gcHJzdGF0ZS5hbGxfZnJvemVuOwogCXByZXN1bHQtPmhhc3R1cCA9IHBy c3RhdGUuaGFzdHVwOwogCi0JLyoKLQkgKiBGb3IgY2FsbGVycyBwbGFubmluZyB0byB1cGRhdGUg dGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29uZmxpY3QgaG9yaXpvbgotCSAqIGZvciB0aGF0IHJl Y29yZCBtdXN0IGJlIHRoZSBuZXdlc3QgeG1pbiBvbiB0aGUgcGFnZS4gIEhvd2V2ZXIsIGlmIHRo ZQotCSAqIHBhZ2UgaXMgY29tcGxldGVseSBmcm96ZW4sIHRoZXJlIGNhbiBiZSBubyBjb25mbGlj dCBhbmQgdGhlCi0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBzaG91bGQgcmVtYWluIEludmFsaWRU cmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRlcwotCSAqIHRoZSBjYXNlIHRoYXQgd2UganVzdCBm cm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBydW5lLWZyZWV6ZSByZWNvcmQKLQkgKiBpbmNsdWRl ZCB0aGUgY29uZmxpY3QgWElEIGFscmVhZHkgc28gdGhlIGNhbGxlciBkb2Vzbid0IG5lZWQgaXQu Ci0JICovCi0JaWYgKHByZXN1bHQtPmFsbF9mcm96ZW4pCi0JCXByZXN1bHQtPnZtX2NvbmZsaWN0 X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQllbHNlCi0JCXByZXN1bHQtPnZtX2Nv bmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKLQogCXByZXN1 bHQtPmxwZGVhZF9pdGVtcyA9IHByc3RhdGUubHBkZWFkX2l0ZW1zOwogCS8qIHRoZSBwcmVzdWx0 LT5kZWFkb2Zmc2V0cyBhcnJheSB3YXMgYWxyZWFkeSBmaWxsZWQgaW4gKi8KIApAQCAtMTE2Myw2 ICsxMTc0LDQ2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1z ICpwYXJhbXMsCiAJCX0KIAl9CiAKKwkvKgorCSAqIElmIHVwZGF0aW5nIHRoZSB2aXNpYmlsaXR5 IG1hcCwgdGhlIGNvbmZsaWN0IGhvcml6b24gZm9yIHRoYXQgcmVjb3JkCisJICogbXVzdCBiZSB0 aGUgbmV3ZXN0IHhtaW4gb24gdGhlIHBhZ2UuICBIb3dldmVyLCBpZiB0aGUgcGFnZSBpcworCSAq IGNvbXBsZXRlbHkgZnJvemVuLCB0aGVyZSBjYW4gYmUgbm8gY29uZmxpY3QgYW5kIHRoZSB2bV9j b25mbGljdF9ob3Jpem9uCisJICogc2hvdWxkIHJlbWFpbiBJbnZhbGlkVHJhbnNhY3Rpb25JZC4g IFRoaXMgaW5jbHVkZXMgdGhlIGNhc2UgdGhhdCB3ZQorCSAqIGp1c3QgZnJvemUgYWxsIHRoZSB0 dXBsZXM7IHRoZSBwcnVuZS1mcmVlemUgcmVjb3JkIGluY2x1ZGVkIHRoZQorCSAqIGNvbmZsaWN0 IFhJRCBhbHJlYWR5IHNvIHdlIGRvbid0IG5lZWQgdG8gYWdhaW4uCisJICovCisJaWYgKHByc3Rh dGUuYWxsX2Zyb3plbikKKwkJdm1fY29uZmxpY3RfaG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlv bklkOworCWVsc2UKKwkJdm1fY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUudmlzaWJpbGl0eV9j dXRvZmZfeGlkOworCisJLyoKKwkgKiBEdXJpbmcgaXRzIHNlY29uZCBwYXNzIG92ZXIgdGhlIGhl YXAsIFZBQ1VVTSBjYWxscworCSAqIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgpIHRv IGRldGVybWluZSB3aGV0aGVyIGEgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJv emVuLiBUaGUgbG9naWMgaGVyZSBpcyBzaW1pbGFyLiBBZnRlciBjb21wbGV0aW5nCisJICogcHJ1 bmluZyBhbmQgZnJlZXppbmcsIHVzZSBhbiBhc3NlcnRpb24gdG8gdmVyaWZ5IHRoYXQgb3VyIHJl c3VsdHMKKwkgKiByZW1haW4gY29uc2lzdGVudCB3aXRoIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxf dmlzaWJsZSgpLgorCSAqLworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlpZiAocHJzdGF0 ZS5hbGxfdmlzaWJsZSkKKwl7CisJCVRyYW5zYWN0aW9uSWQgZGVidWdfY3V0b2ZmOworCQlib29s CQlkZWJ1Z19hbGxfZnJvemVuOworCisJCUFzc2VydChwcmVzdWx0LT5scGRlYWRfaXRlbXMgPT0g MCk7CisKKwkJQXNzZXJ0KGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShwYXJhbXMtPnJlbGF0aW9u LCBidWZmZXIsCisJCQkJCQkJCQkJcHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluLAorCQkJCQkJ CQkJCSZkZWJ1Z19hbGxfZnJvemVuLAorCQkJCQkJCQkJCSZkZWJ1Z19jdXRvZmYsIG9mZl9sb2Mp KTsKKworCQlBc3NlcnQocHJzdGF0ZS5hbGxfZnJvemVuID09IGRlYnVnX2FsbF9mcm96ZW4pOwor CisJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVidWdfY3V0b2ZmKSB8fAorCQkJICAg ZGVidWdfY3V0b2ZmID09IHZtX2NvbmZsaWN0X2hvcml6b24pOworCX0KKyNlbmRpZgorCiAJLyog Tm93IHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIFBEX0FMTF9WSVNJQkxFIGhpbnQgKi8K IAlBc3NlcnQoIXByc3RhdGUuYWxsX3Zpc2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09 IDApKTsKIApAQCAtMTIwOCwxMiArMTI1OSwxMSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBm b3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMKIAkJICogd2VyZSBmcm96 ZW4uCiAJCSAqLwotCQlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3plbiB8fAotCQkJICAgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24pKTsKKwkJQXNzZXJ0 KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHZtX2NvbmZsaWN0 X2hvcml6b24pKTsKIAogCQl2aXNpYmlsaXR5bWFwX3NldChwYXJhbXMtPnJlbGF0aW9uLCBibG9j a25vLCBidWZmZXIsCiAJCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkJICB2bWJ1ZmZl ciwgcHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbiwKKwkJCQkJCSAgdm1idWZmZXIsIHZtX2Nv bmZsaWN0X2hvcml6b24sCiAJCQkJCQkgIG5ld192bWJpdHMpOwogCX0KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IGNjZmFkNWIyZGJhLi4zZmEwMzQ3MDcyMiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDYyLDIwICs0NjIsNiBAQCBzdGF0aWMg dm9pZCBkZWFkX2l0ZW1zX2FkZChMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25v LCBPZmZzZXROdW1iZXIgKgogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19yZXNldChMVlJlbFN0YXRl ICp2YWNyZWwpOwogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZh Y3JlbCk7CiAKLSNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi1zdGF0aWMgYm9vbCBoZWFwX3Bh Z2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCQkJIFRy YW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKLQkJCQkJCQkJCSBib29sICphbGxfZnJvemVuLAotCQkJ CQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCQkJCSBP ZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKLSNlbmRpZgotc3RhdGljIGJvb2wgaGVhcF9w YWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJ CQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCi0JCQkJCQkJCQkJICAgT2Zmc2V0TnVt YmVyICpkZWFkb2Zmc2V0cywKLQkJCQkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAotCQkJCQkJ CQkJCSAgIGJvb2wgKmFsbF9mcm96ZW4sCi0JCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCAqdmlz aWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqbG9nZ2luZ19v ZmZudW0pOwogc3RhdGljIHZvaWQgdXBkYXRlX3JlbHN0YXRzX2FsbF9pbmRleGVzKExWUmVsU3Rh dGUgKnZhY3JlbCk7CiBzdGF0aWMgdm9pZCB2YWN1dW1fZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJn KTsKIHN0YXRpYyB2b2lkIHVwZGF0ZV92YWN1dW1fZXJyb3JfaW5mbyhMVlJlbFN0YXRlICp2YWNy ZWwsCkBAIC0yMDEyLDMyICsxOTk4LDYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZh Y3JlbCwKIAkJdmFjcmVsLT5uZXdfZnJvemVuX3R1cGxlX3BhZ2VzKys7CiAJfQogCi0JLyoKLQkg KiBWQUNVVU0gd2lsbCBjYWxsIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpIGR1cmluZyB0aGUg c2Vjb25kIHBhc3Mgb3ZlcgotCSAqIHRoZSBoZWFwIHRvIGRldGVybWluZSBhbGxfdmlzaWJsZSBh bmQgYWxsX2Zyb3plbiBmb3IgdGhlIHBhZ2UgLS0gdGhpcwotCSAqIGlzIGEgc3BlY2lhbGl6ZWQg dmVyc2lvbiBvZiB0aGUgbG9naWMgZnJvbSB0aGlzIGZ1bmN0aW9uLiAgTm93IHRoYXQKLQkgKiB3 ZSd2ZSBmaW5pc2hlZCBwcnVuaW5nIGFuZCBmcmVlemluZywgbWFrZSBzdXJlIHRoYXQgd2UncmUg aW4gdG90YWwKLQkgKiBhZ3JlZW1lbnQgd2l0aCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKSB1 c2luZyBhbiBhc3NlcnRpb24uCi0JICovCi0jaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotCWlm IChwcmVzdWx0LmFsbF92aXNpYmxlKQotCXsKLQkJVHJhbnNhY3Rpb25JZCBkZWJ1Z19jdXRvZmY7 Ci0JCWJvb2wJCWRlYnVnX2FsbF9mcm96ZW47Ci0KLQkJQXNzZXJ0KHByZXN1bHQubHBkZWFkX2l0 ZW1zID09IDApOwotCi0JCUFzc2VydChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUodmFjcmVsLT5y ZWwsIGJ1ZiwKLQkJCQkJCQkJCQl2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwgJmRlYnVnX2Fs bF9mcm96ZW4sCi0JCQkJCQkJCQkJJmRlYnVnX2N1dG9mZiwgJnZhY3JlbC0+b2ZmbnVtKSk7Ci0K LQkJQXNzZXJ0KHByZXN1bHQuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsKLQotCQlB c3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKLQkJCSAgIGRlYnVn X2N1dG9mZiA9PSBwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pOwotCX0KLSNlbmRpZgotCiAJ LyoKIAkgKiBOb3cgc2F2ZSBkZXRhaWxzIG9mIHRoZSBMUF9ERUFEIGl0ZW1zIGZyb20gdGhlIHBh Z2UgaW4gdmFjcmVsCiAJICovCkBAIC0zNDk0LDI5ICszNDU0LDYgQEAgZGVhZF9pdGVtc19jbGVh bnVwKExWUmVsU3RhdGUgKnZhY3JlbCkKIAl2YWNyZWwtPnB2cyA9IE5VTEw7CiB9CiAKLSNpZmRl ZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi0KLS8qCi0gKiBXcmFwcGVyIGZvciBoZWFwX3BhZ2Vfd291 bGRfYmVfYWxsX3Zpc2libGUoKSB3aGljaCBjYW4gYmUgdXNlZCBmb3IgY2FsbGVycwotICogdGhh dCBleHBlY3Qgbm8gTFBfREVBRCBvbiB0aGUgcGFnZS4gQ3VycmVudGx5IGFzc2VydC1vbmx5LCBi dXQgdGhlcmUgaXMgbm8KLSAqIHJlYXNvbiBub3QgdG8gdXNlIGl0IG91dHNpZGUgb2YgYXNzZXJ0 cy4KLSAqLwotc3RhdGljIGJvb2wKLWhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAotCQkJCQkJ IGJvb2wgKmFsbF9mcm96ZW4sCi0JCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRv ZmZfeGlkLAotCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pCi17Ci0KLQlyZXR1 cm4gaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKHJlbCwgYnVmLAotCQkJCQkJCQkJCSAg T2xkZXN0WG1pbiwKLQkJCQkJCQkJCQkgIE5VTEwsIDAsCi0JCQkJCQkJCQkJICBhbGxfZnJvemVu LAotCQkJCQkJCQkJCSAgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJCQkJCSAgbG9nZ2lu Z19vZmZudW0pOwotfQotI2VuZGlmCiAKIC8qCiAgKiBDaGVjayB3aGV0aGVyIHRoZSBoZWFwIHBh Z2UgaW4gYnVmIGlzIGFsbC12aXNpYmxlIGV4Y2VwdCBmb3IgdGhlIGRlYWQKQEAgLTM1NDAsMTUg KzM0NzcsMTIgQEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVy IGJ1ZiwKICAqICAtICpsb2dnaW5nX29mZm51bTogT2Zmc2V0TnVtYmVyIG9mIGN1cnJlbnQgdHVw bGUgYmVpbmcgcHJvY2Vzc2VkOwogICogICAgIHVzZWQgYnkgdmFjdXVtJ3MgZXJyb3IgY2FsbGJh Y2sgc3lzdGVtLgogICoKLSAqIENhbGxlcnMgbG9va2luZyB0byB2ZXJpZnkgdGhhdCB0aGUgcGFn ZSBpcyBhbHJlYWR5IGFsbC12aXNpYmxlIGNhbiBjYWxsCi0gKiBoZWFwX3BhZ2VfaXNfYWxsX3Zp c2libGUoKS4KLSAqCiAgKiBUaGlzIGxvZ2ljIGlzIGNsb3NlbHkgcmVsYXRlZCB0byBoZWFwX3By dW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKCkuCiAgKiBJZiB5b3UgbW9kaWZ5IHRoaXMg ZnVuY3Rpb24sIGVuc3VyZSBjb25zaXN0ZW5jeSB3aXRoIHRoYXQgY29kZS4gQW4KICAqIGFzc2Vy dGlvbiBjcm9zcy1jaGVja3MgdGhhdCBib3RoIHJlbWFpbiBpbiBhZ3JlZW1lbnQuIERvIG5vdCBp bnRyb2R1Y2UgbmV3CiAgKiBzaWRlLWVmZmVjdHMuCiAgKi8KLXN0YXRpYyBib29sCitib29sCiBo ZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAog CQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKIAkJCQkJCQkgICBPZmZzZXROdW1i ZXIgKmRlYWRvZmZzZXRzLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IGYzZmE2MWM5YzFiLi45MTAwZDQy Y2NiYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMjU3LDggKzI1Nyw3IEBAIHR5cGVkZWYgc3RydWN0 IFBydW5lRnJlZXplUGFyYW1zCiAJICogSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVyBp bmRpY2F0ZXMgdGhhdCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQKIAkgKiBMUF9VTlVTRUQgZHVyaW5n IHBydW5pbmcuCiAJICoKLQkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIGluZGljYXRlcyB0aGF0 IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzLCBhbmQKLQkgKiB3aWxsIHJldHVybiAnYWxsX3Zp c2libGUnLCAnYWxsX2Zyb3plbicgZmxhZ3MgdG8gdGhlIGNhbGxlci4KKwkgKiBIRUFQX1BBR0Vf UFJVTkVfRlJFRVpFIGluZGljYXRlcyB0aGF0IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzCiAJ ICoKIAkgKiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNIGluZGljYXRlcyB0aGF0IHdlIHdpbGwg c2V0IHRoZSBwYWdlJ3Mgc3RhdHVzCiAJICogaW4gdGhlIFZNLgpAQCAtMjk0LDIxICsyOTMsNiBA QCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVJlc3VsdAogCWludAkJCWxpdmVfdHVwbGVzOwog CWludAkJCXJlY2VudGx5X2RlYWRfdHVwbGVzOwogCi0JLyoKLQkgKiBhbGxfdmlzaWJsZSBhbmQg YWxsX2Zyb3plbiBpbmRpY2F0ZSBpZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KLQkg KiBiaXRzIGluIHRoZSB2aXNpYmlsaXR5IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UsIGFm dGVyIHBydW5pbmcuCi0JICoKLQkgKiB2bV9jb25mbGljdF9ob3Jpem9uIGlzIHRoZSBuZXdlc3Qg eG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZS4gIFRoZQotCSAqIGNhbGxlciBjYW4gdXNl IGl0IGFzIHRoZSBjb25mbGljdCBob3Jpem9uIHdoZW4gc2V0dGluZyB0aGUgVk0gYml0cy4gIEl0 Ci0JICogaXMgb25seSB2YWxpZCBpZiB3ZSBmcm96ZSBzb21lIHR1cGxlcyAobmZyb3plbiA+IDAp LCBhbmQgYWxsX2Zyb3plbiBpcwotCSAqIHRydWUuCi0JICoKLQkgKiBUaGVzZSBhcmUgb25seSBz ZXQgaWYgdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuCi0JICovCi0JYm9vbAkJ YWxsX3Zpc2libGU7Ci0JYm9vbAkJYWxsX2Zyb3plbjsKLQlUcmFuc2FjdGlvbklkIHZtX2NvbmZs aWN0X2hvcml6b247Ci0KIAkvKgogCSAqIG9sZF92bWJpdHMgYXJlIHRoZSBzdGF0ZSBvZiB0aGUg YWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYml0cyBpbiB0aGUKIAkgKiB2aXNpYmlsaXR5IG1h cCBiZWZvcmUgdXBkYXRpbmcgaXQgZHVyaW5nIHBoYXNlIEkgb2YgdmFjdXVtaW5nLgpAQCAtNDU0 LDYgKzQzOCwxMyBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogLyogaW4gaGVhcC92YWN1dW1sYXp5LmMgKi8K IGV4dGVybiB2b2lkIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsCiAJCQkJCQkJY29uc3Qg VmFjdXVtUGFyYW1zIHBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KTsKK2V4 dGVybiBib29sIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1 ZmZlciBidWYsCisJCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJ CQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCisJCQkJCQkJCQkJICAgaW50IG5kZWFk b2Zmc2V0cywKKwkJCQkJCQkJCQkgICBib29sICphbGxfZnJvemVuLAorCQkJCQkJCQkJCSAgIFRy YW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCQkgICBPZmZzZXRO dW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKIAogLyogaW4gaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5j ICovCiBleHRlcm4gYm9vbCBIZWFwVHVwbGVTYXRpc2ZpZXNWaXNpYmlsaXR5KEhlYXBUdXBsZSBo dHVwLCBTbmFwc2hvdCBzbmFwc2hvdCwKLS0gCjIuNDMuMAoK --00000000000028078b064614a599 Content-Type: text/x-patch; charset="US-ASCII"; name="v27-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Disposition: attachment; filename="v27-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8tt12w5 RnJvbSBiZmQ4ODNlMjVjYzQzZWVlOWUwM2U5ODkxMmZhNzIzNjRlY2ViYzgxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTY6MTY6MjIgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNyAwNi8xNF0gRWxpbWluYXRlIFhMT0dfSEVBUDJfVklTSUJMRSBmcm9tIHZhY3V1bSBw aGFzZSBJCiBwcnVuZS9mcmVlemUKClZhY3V1bSBubyBsb25nZXIgZW1pdHMgYSBzZXBhcmF0ZSBX QUwgcmVjb3JkIGZvciBlYWNoIHBhZ2Ugc2V0CmFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4gZHVy aW5nIHBoYXNlIEkuIEluc3RlYWQsIHZpc2liaWxpdHkgbWFwCnVwZGF0ZXMgYXJlIG5vdyBpbmNs dWRlZCBpbiB0aGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQgdGhhdAppcyBh bHJlYWR5IGVtaXR0ZWQgZm9yIHBydW5pbmcgYW5kIGZyZWV6aW5nLgoKUHJldmlvdXNseSwgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBkZXRlcm1pbmVkIHdoZXRoZXIgYSBwYWdlIHdhcwph bGwtdmlzaWJsZSwgYnV0IHRoZSBjb3JyZXNwb25kaW5nIFZNIGJpdHMgd2VyZSBvbmx5IHNldCBs YXRlciBpbgpsYXp5X3NjYW5fcHJ1bmUoKS4gTm93IHRoZSBWTSBpcyB1cGRhdGVkIGltbWVkaWF0 ZWx5IGluCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCksIGF0IHRoZSBzYW1lIHRpbWUgYXMg dGhlIGhlYXAKbW9kaWZpY2F0aW9ucy4KClRoaXMgY2hhbmdlIGFwcGxpZXMgb25seSB0byB2YWN1 dW0gcGhhc2UgSSwgbm90IHRvIHBydW5pbmcgcGVyZm9ybWVkCmR1cmluZyBub3JtYWwgcGFnZSBh Y2Nlc3MuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmll d2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTog S2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8g TGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1WN1NPTHhk SzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgfCAyNzUgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQs IDE1NyBpbnNlcnRpb25zKCspLCAxMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYwppbmRleCAwY2ExNjM0MGUzZS4uZTc0YzJlMDYyMjYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3BydW5laGVhcC5jCkBAIC0yMDUsNiArMjA1LDExIEBAIHN0YXRpYyBib29sIGhlYXBf cGFnZV93aWxsX3NldF92bShQcnVuZVN0YXRlICpwcnN0YXRlLAogCQkJCQkJCQkgIGludCBubHBk ZWFkX2l0ZW1zLAogCQkJCQkJCQkgIHVpbnQ4ICpvbGRfdm1iaXRzLAogCQkJCQkJCQkgIHVpbnQ4 ICpuZXdfdm1iaXRzKTsKK3N0YXRpYyBUcmFuc2FjdGlvbklkIGdldF9jb25mbGljdF94aWQoYm9v bCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUsIGJvb2wgZG9fc2V0X3ZtLAorCQkJCQkJCQkJICB1 aW50OCBvbGRfdm1iaXRzLCB1aW50OCBuZXdfdm1iaXRzLAorCQkJCQkJCQkJICBUcmFuc2FjdGlv bklkIGxhdGVzdF94aWRfcmVtb3ZlZCwKKwkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBmcnpfY29u ZmxpY3RfaG9yaXpvbiwKKwkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCB2aXNpYmlsaXR5X2N1dG9m Zl94aWQpOwogCiAKIC8qCkBAIC03OTUsNiArODAwLDY4IEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6 ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlyZXR1cm4gZG9fZnJlZXplOwog fQogCisvKgorICogQ2FsY3VsYXRlIHRoZSBjb25mbGljdCBob3Jpem9uIGZvciB0aGUgd2hvbGUg WExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTgorICogb3IgWExPR19IRUFQMl9QUlVORV9PTl9B Q0NFU1MgcmVjb3JkLgorICovCitzdGF0aWMgVHJhbnNhY3Rpb25JZAorZ2V0X2NvbmZsaWN0X3hp ZChib29sIGRvX3BydW5lLCBib29sIGRvX2ZyZWV6ZSwgYm9vbCBkb19zZXRfdm0sCisJCQkJIHVp bnQ4IG9sZF92bWJpdHMsIHVpbnQ4IG5ld192bWJpdHMsCisJCQkJIFRyYW5zYWN0aW9uSWQgbGF0 ZXN0X3hpZF9yZW1vdmVkLCBUcmFuc2FjdGlvbklkIGZyel9jb25mbGljdF9ob3Jpem9uLAorCQkJ CSBUcmFuc2FjdGlvbklkIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCkKK3sKKwlUcmFuc2FjdGlvbklk IGNvbmZsaWN0X3hpZDsKKworCS8qCisJICogV2UgY2FuIG9taXQgdGhlIHNuYXBzaG90IGNvbmZs aWN0IGhvcml6b24gaWYgd2UgYXJlIG5vdCBwcnVuaW5nIG9yCisJICogZnJlZXppbmcgYW55IHR1 cGxlcyBhbmQgYXJlIHNldHRpbmcgYW4gYWxyZWFkeSBhbGwtdmlzaWJsZSBwYWdlCisJICogYWxs LWZyb3plbiBpbiB0aGUgVk0uIEluIHRoaXMgY2FzZSwgYWxsIG9mIHRoZSB0dXBsZXMgb24gdGhl IHBhZ2UgbXVzdAorCSAqIGFscmVhZHkgYmUgdmlzaWJsZSB0byBhbGwgTVZDQyBzbmFwc2hvdHMg b24gdGhlIHN0YW5kYnkuCisJICovCisJaWYgKCFkb19wcnVuZSAmJgorCQkhZG9fZnJlZXplICYm CisJCWRvX3NldF92bSAmJgorCQkob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lC TEUpICE9IDAgJiYKKwkJKG5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pICE9 IDApCisJCXJldHVybiBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKworCS8qCisJICogVGhlIHNuYXBz aG90Q29uZmxpY3RIb3Jpem9uIGZvciB0aGUgd2hvbGUgcmVjb3JkIHNob3VsZCBiZSB0aGUgbW9z dAorCSAqIGNvbnNlcnZhdGl2ZSBvZiBhbGwgdGhlIGhvcml6b25zIGNhbGN1bGF0ZWQgZm9yIGFu eSBvZiB0aGUgcG9zc2libGUKKwkgKiBtb2RpZmljYXRpb25zLiAgSWYgdGhpcyByZWNvcmQgd2ls bCBwcnVuZSB0dXBsZXMsIGFueSB0cmFuc2FjdGlvbnMgb24KKwkgKiB0aGUgc3RhbmRieSBvbGRl ciB0aGFuIHRoZSB5b3VuZ2VzdCB4bWF4IG9mIHRoZSBtb3N0IHJlY2VudGx5IHJlbW92ZWQKKwkg KiB0dXBsZSB0aGlzIHJlY29yZCB3aWxsIHBydW5lIHdpbGwgY29uZmxpY3QuICBJZiB0aGlzIHJl Y29yZCB3aWxsIGZyZWV6ZQorCSAqIHR1cGxlcywgYW55IHRyYW5zYWN0aW9ucyBvbiB0aGUgc3Rh bmRieSB3aXRoIHhpZHMgb2xkZXIgdGhhbiB0aGUKKwkgKiB5b3VuZ2VzdCB0dXBsZSB0aGlzIHJl Y29yZCB3aWxsIGZyZWV6ZSB3aWxsIGNvbmZsaWN0LgorCSAqLworCWNvbmZsaWN0X3hpZCA9IElu dmFsaWRUcmFuc2FjdGlvbklkOworCisJLyoKKwkgKiBJZiB3ZSBhcmUgdXBkYXRpbmcgdGhlIFZN LCB0aGUgY29uZmxpY3QgaG9yaXpvbiBpcyBhbG1vc3QgYWx3YXlzIHRoZQorCSAqIHZpc2liaWxp dHkgY3V0b2ZmIFhJRC4KKwkgKgorCSAqIFNlcGFyYXRlbHksIGlmIHdlIGFyZSBmcmVlemluZyBh bnkgdHVwbGVzLCBhcyBhbiBvcHRpbWl6YXRpb24sIHdlIGNhbgorCSAqIHVzZSB0aGUgdmlzaWJp bGl0eV9jdXRvZmZfeGlkIGFzIHRoZSBjb25mbGljdCBob3Jpem9uIGlmIHRoZSBwYWdlIHdpbGwK KwkgKiBiZSBhbGwtZnJvemVuLiBUaGlzIGlzIHRydWUgZXZlbiBpZiB0aGVyZSBhcmUgTFBfREVB RCBsaW5lIHBvaW50ZXJzCisJICogYmVjYXVzZSB3ZSBpZ25vcmVkIHRob3NlIHdoZW4gbWFpbnRh aW5pbmcgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZC4KKwkgKiBUaGlzIHdpbGwgaGF2ZSBiZWVu IGNhbGN1bGF0ZWQgZWFybGllciBhcyB0aGUgZnJ6X2NvbmZsaWN0X2hvcml6b24gd2hlbgorCSAq IHdlIGRldGVybWluZWQgd2Ugd291bGQgZnJlZXplLgorCSAqLworCWlmIChkb19zZXRfdm0pCisJ CWNvbmZsaWN0X3hpZCA9IHZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKKwllbHNlIGlmIChkb19mcmVl emUpCisJCWNvbmZsaWN0X3hpZCA9IGZyel9jb25mbGljdF9ob3Jpem9uOworCisJLyoKKwkgKiBJ ZiB3ZSBhcmUgcmVtb3ZpbmcgdHVwbGVzIHdpdGggYSB5b3VuZ2VyIHhtYXggdGhhbiBvdXIgc28g ZmFyCisJICogY2FsY3VsYXRlZCBjb25mbGljdF94aWQsIHdlIG11c3QgdXNlIHRoaXMgYXMgb3Vy IGhvcml6b24uCisJICovCisJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKGxhdGVzdF94aWRfcmVt b3ZlZCwgY29uZmxpY3RfeGlkKSkKKwkJY29uZmxpY3RfeGlkID0gbGF0ZXN0X3hpZF9yZW1vdmVk OworCisJcmV0dXJuIGNvbmZsaWN0X3hpZDsKK30KKwogLyoKICAqIEhlbHBlciB0byBjb3JyZWN0 IGFueSBjb3JydXB0aW9uIGRldGVjdGVkIG9uIGFuIGhlYXAgcGFnZSBhbmQgaXRzCiAgKiBjb3Jy ZXNwb25kaW5nIHZpc2liaWxpdHkgbWFwIHBhZ2UgYWZ0ZXIgcHJ1bmluZyBidXQgYmVmb3JlIHNl dHRpbmcgdGhlCkBAIC05OTYsNyArMTA2Myw2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJQnVmZmVyCQl2bWJ1ZmZlciA9IHBhcmFtcy0+ dm1idWZmZXI7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlCbG9ja051 bWJlciBibG9ja25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsKLQlUcmFuc2FjdGlv bklkIHZtX2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlQcnVuZVN0 YXRlCXByc3RhdGU7CiAJYm9vbAkJZG9fZnJlZXplOwogCWJvb2wJCWRvX3BydW5lOwpAQCAtMTAw NCwxMCArMTA3MCwxMCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBh cmFtcyAqcGFyYW1zLAogCWJvb2wJCWRvX3NldF92bTsKIAlib29sCQlkaWRfdHVwbGVfaGludF9m cGk7CiAJaW50NjQJCWZwaV9iZWZvcmUgPSBwZ1dhbFVzYWdlLndhbF9mcGk7CisJVHJhbnNhY3Rp b25JZCBjb25mbGljdF94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAl1aW50OAkJbmV3X3Zt Yml0cyA9IDA7CiAJdWludDgJCW9sZF92bWJpdHMgPSAwOwogCi0KIAkvKiBJbml0aWFsaXplIHBy c3RhdGUgKi8KIAlwcnVuZV9mcmVlemVfc2V0dXAocGFyYW1zLAogCQkJCQkgICBuZXdfcmVsZnJv emVuX3hpZCwgbmV3X3JlbG1pbl9teGlkLApAQCAtMTA2OCw2ICsxMTM0LDM3IEBAIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCXByc3RhdGUu YWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxzZTsKIAogCUFzc2VydCghcHJz dGF0ZS5hbGxfZnJvemVuIHx8IHByc3RhdGUuYWxsX3Zpc2libGUpOworCUFzc2VydCghcHJzdGF0 ZS5hbGxfdmlzaWJsZSB8fCAocHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0gMCkpOworCisJLyoKKwkg KiBEZWNpZGUgd2hldGhlciB0byBzZXQgdGhlIFZNIGJpdHMgYmFzZWQgb24gaW5mb3JtYXRpb24g ZnJvbSB0aGUgVk0gYW5kCisJICogdGhlIGFsbF92aXNpYmxlL2FsbF9mcm96ZW4gZmxhZ3MuCisJ ICovCisJZG9fc2V0X3ZtID0gaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKCZwcnN0YXRlLAorCQkJCQkJ CQkJICBwYXJhbXMtPnJlbGF0aW9uLAorCQkJCQkJCQkJICBibG9ja25vLAorCQkJCQkJCQkJICBi dWZmZXIsCisJCQkJCQkJCQkgIHBhZ2UsCisJCQkJCQkJCQkgIHZtYnVmZmVyLAorCQkJCQkJCQkJ ICBwcnN0YXRlLmxwZGVhZF9pdGVtcywKKwkJCQkJCQkJCSAgJm9sZF92bWJpdHMsCisJCQkJCQkJ CQkgICZuZXdfdm1iaXRzKTsKKworCS8qCisJICogbmV3X3ZtYml0cyBzaG91bGQgYmUgMCByZWdh cmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIGlzCisJICogYWxsLXZpc2libGUgaWYg d2UgZG8gbm90IGludGVuZCB0byBzZXQgdGhlIFZNLgorCSAqLworCUFzc2VydChkb19zZXRfdm0g fHwgbmV3X3ZtYml0cyA9PSAwKTsKKworCWNvbmZsaWN0X3hpZCA9IGdldF9jb25mbGljdF94aWQo ZG9fcHJ1bmUsIGRvX2ZyZWV6ZSwgZG9fc2V0X3ZtLAorCQkJCQkJCQkJb2xkX3ZtYml0cywgbmV3 X3ZtYml0cywKKwkJCQkJCQkJCXByc3RhdGUubGF0ZXN0X3hpZF9yZW1vdmVkLAorCQkJCQkJCQkJ cHJzdGF0ZS5mcnpfY29uZmxpY3RfaG9yaXpvbiwKKwkJCQkJCQkJCXByc3RhdGUudmlzaWJpbGl0 eV9jdXRvZmZfeGlkKTsKKworCS8qIExvY2sgdm1idWZmZXIgYmVmb3JlIGVudGVyaW5nIGEgY3Jp dGljYWwgc2VjdGlvbiAqLworCWlmIChkb19zZXRfdm0pCisJCUxvY2tCdWZmZXIodm1idWZmZXIs IEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CiAKIAkvKiBBbnkgZXJyb3Igd2hpbGUgYXBwbHlpbmcg dGhlIGNoYW5nZXMgaXMgY3JpdGljYWwgKi8KIAlTVEFSVF9DUklUX1NFQ1RJT04oKTsKQEAgLTEw ODksMTQgKzExODYsMTcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQ YXJhbXMgKnBhcmFtcywKIAogCQkvKgogCQkgKiBJZiB0aGF0J3MgYWxsIHdlIGhhZCB0byBkbyB0 byB0aGUgcGFnZSwgdGhpcyBpcyBhIG5vbi1XQUwtbG9nZ2VkCi0JCSAqIGhpbnQuICBJZiB3ZSBh cmUgZ29pbmcgdG8gZnJlZXplIG9yIHBydW5lIHRoZSBwYWdlLCB3ZSB3aWxsIG1hcmsKLQkJICog dGhlIGJ1ZmZlciBkaXJ0eSBiZWxvdy4KKwkJICogaGludC4gIElmIHdlIGFyZSBnb2luZyB0byBm cmVlemUgb3IgcHJ1bmUgdGhlIHBhZ2Ugb3Igc2V0CisJCSAqIFBEX0FMTF9WSVNJQkxFLCB3ZSB3 aWxsIG1hcmsgdGhlIGJ1ZmZlciBkaXJ0eSBiZWxvdy4KKwkJICoKKwkJICogU2V0dGluZyBQRF9B TExfVklTSUJMRSBpcyBmdWxseSBXQUwtbG9nZ2VkIGJlY2F1c2UgaXQgaXMgZm9yYmlkZGVuCisJ CSAqIGZvciB0aGUgVk0gdG8gYmUgc2V0IGFuZCBQRF9BTExfVklTSUJMRSB0byBiZSBjbGVhci4K IAkJICovCi0JCWlmICghZG9fZnJlZXplICYmICFkb19wcnVuZSkKKwkJaWYgKCFkb19mcmVlemUg JiYgIWRvX3BydW5lICYmICFkb19zZXRfdm0pCiAJCQlNYXJrQnVmZmVyRGlydHlIaW50KGJ1ZmZl ciwgdHJ1ZSk7CiAJfQogCi0JaWYgKGRvX3BydW5lIHx8IGRvX2ZyZWV6ZSkKKwlpZiAoZG9fcHJ1 bmUgfHwgZG9fZnJlZXplIHx8IGRvX3NldF92bSkKIAl7CiAJCS8qIEFwcGx5IHRoZSBwbGFubmVk IGl0ZW0gY2hhbmdlcyBhbmQgcmVwYWlyIHBhZ2UgZnJhZ21lbnRhdGlvbi4gKi8KIAkJaWYgKGRv X3BydW5lKQpAQCAtMTExMCw2ICsxMjEwLDI2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCWlmIChkb19mcmVlemUpCiAJCQloZWFwX2Zy ZWV6ZV9wcmVwYXJlZF90dXBsZXMoYnVmZmVyLCBwcnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJv emVuKTsKIAorCQkvKiBTZXQgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBwYWdlIHZpc2liaWxpdHkg aGludCAqLworCQlpZiAoZG9fc2V0X3ZtKQorCQl7CisJCQkvKgorCQkJICogV2hpbGUgaXQgaXMg dmFsaWQgZm9yIFBEX0FMTF9WSVNJQkxFIHRvIGJlIHNldCB3aGVuIHRoZQorCQkJICogY29ycmVz cG9uZGluZyBWTSBiaXQgaXMgY2xlYXIsIHdlIHN0cm9uZ2x5IHByZWZlciB0byBrZWVwIHRoZW0K KwkJCSAqIGluIHN5bmMuCisJCQkgKgorCQkJICogRXZlbiBpZiB3ZSBhcmUgb25seSBzZXR0aW5n IHRoZSBWTSBhbmQgUERfQUxMX1ZJU0lCTEUgaXMKKwkJCSAqIGFscmVhZHkgc2V0LCB3ZSBkb24n dCBuZWVkIHRvIHdvcnJ5IGFib3V0IHVubmVjZXNzYXJpbHkKKwkJCSAqIGRpcnR5aW5nIHRoZSBo ZWFwIGJ1ZmZlciBiZWxvdywgYXMgaXQgbXVzdCBiZSBtYXJrZWQgZGlydHkKKwkJCSAqIGJlZm9y ZSBhZGRpbmcgaXQgdG8gdGhlIFdBTCBjaGFpbi4gVGhlIG9ubHkgc2NlbmFyaW8gd2hlcmUgaXQK KwkJCSAqIGlzIG5vdCBhbHJlYWR5IGRpcnR5IGlzIGlmIHRoZSBWTSB3YXMgcmVtb3ZlZCwgYW5k IHRoYXQgaXNuJ3QKKwkJCSAqIHdvcnRoIG9wdGltaXppbmcgZm9yLgorCQkJICovCisJCQlQYWdl U2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibG9ja25v LCB2bWJ1ZmZlciwgbmV3X3ZtYml0cywKKwkJCQkJCQkJCSBwYXJhbXMtPnJlbGF0aW9uLT5yZF9s b2NhdG9yKTsKKwkJfQorCiAJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwogCiAJCS8qCkBAIC0x MTE3LDI5ICsxMjM3LDEyIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXpl UGFyYW1zICpwYXJhbXMsCiAJCSAqLwogCQlpZiAoUmVsYXRpb25OZWVkc1dBTChwYXJhbXMtPnJl bGF0aW9uKSkKIAkJewotCQkJLyoKLQkJCSAqIFRoZSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBm b3IgdGhlIHdob2xlIHJlY29yZCBzaG91bGQgYmUgdGhlCi0JCQkgKiBtb3N0IGNvbnNlcnZhdGl2 ZSBvZiBhbGwgdGhlIGhvcml6b25zIGNhbGN1bGF0ZWQgZm9yIGFueSBvZiB0aGUKLQkJCSAqIHBv c3NpYmxlIG1vZGlmaWNhdGlvbnMuICBJZiB0aGlzIHJlY29yZCB3aWxsIHBydW5lIHR1cGxlcywg YW55Ci0JCQkgKiB0cmFuc2FjdGlvbnMgb24gdGhlIHN0YW5kYnkgb2xkZXIgdGhhbiB0aGUgeW91 bmdlc3QgeG1heCBvZiB0aGUKLQkJCSAqIG1vc3QgcmVjZW50bHkgcmVtb3ZlZCB0dXBsZSB0aGlz IHJlY29yZCB3aWxsIHBydW5lIHdpbGwKLQkJCSAqIGNvbmZsaWN0LiAgSWYgdGhpcyByZWNvcmQg d2lsbCBmcmVlemUgdHVwbGVzLCBhbnkgdHJhbnNhY3Rpb25zCi0JCQkgKiBvbiB0aGUgc3RhbmRi eSB3aXRoIHhpZHMgb2xkZXIgdGhhbiB0aGUgeW91bmdlc3QgdHVwbGUgdGhpcwotCQkJICogcmVj b3JkIHdpbGwgZnJlZXplIHdpbGwgY29uZmxpY3QuCi0JCQkgKi8KLQkJCVRyYW5zYWN0aW9uSWQg Y29uZmxpY3RfeGlkOwotCi0JCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3MocHJzdGF0ZS5mcnpf Y29uZmxpY3RfaG9yaXpvbiwKLQkJCQkJCQkJCSBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCkp Ci0JCQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5mcnpfY29uZmxpY3RfaG9yaXpvbjsKLQkJCWVs c2UKLQkJCQljb25mbGljdF94aWQgPSBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZDsKLQogCQkJ bG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShwYXJhbXMtPnJlbGF0aW9uLCBidWZmZXIsCi0JCQkJ CQkJCQkgIEludmFsaWRCdWZmZXIsCS8qIHZtYnVmZmVyICovCi0JCQkJCQkJCQkgIDAsCS8qIHZt ZmxhZ3MgKi8KKwkJCQkJCQkJCSAgZG9fc2V0X3ZtID8gdm1idWZmZXIgOiBJbnZhbGlkQnVmZmVy LAorCQkJCQkJCQkJICBkb19zZXRfdm0gPyBuZXdfdm1iaXRzIDogMCwKIAkJCQkJCQkJCSAgY29u ZmxpY3RfeGlkLAotCQkJCQkJCQkJICB0cnVlLCBwYXJhbXMtPnJlYXNvbiwKKwkJCQkJCQkJCSAg dHJ1ZSwgLyogY2xlYW51cCBsb2NrICovCisJCQkJCQkJCQkgIHBhcmFtcy0+cmVhc29uLAogCQkJ CQkJCQkJICBwcnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJvemVuLAogCQkJCQkJCQkJICBwcnN0 YXRlLnJlZGlyZWN0ZWQsIHByc3RhdGUubnJlZGlyZWN0ZWQsCiAJCQkJCQkJCQkgIHByc3RhdGUu bm93ZGVhZCwgcHJzdGF0ZS5uZGVhZCwKQEAgLTExNDksNDMgKzEyNTIsOCBAQCBoZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCiAJRU5EX0NSSVRf U0VDVElPTigpOwogCi0JLyogQ29weSBpbmZvcm1hdGlvbiBiYWNrIGZvciBjYWxsZXIgKi8KLQlw cmVzdWx0LT5uZGVsZXRlZCA9IHByc3RhdGUubmRlbGV0ZWQ7Ci0JcHJlc3VsdC0+bm5ld2xwZGVh ZCA9IHByc3RhdGUubmRlYWQ7Ci0JcHJlc3VsdC0+bmZyb3plbiA9IHByc3RhdGUubmZyb3plbjsK LQlwcmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUubGl2ZV90dXBsZXM7Ci0JcHJlc3VsdC0+ cmVjZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2VudGx5X2RlYWRfdHVwbGVzOwotCXBy ZXN1bHQtPmhhc3R1cCA9IHByc3RhdGUuaGFzdHVwOwotCi0JcHJlc3VsdC0+bHBkZWFkX2l0ZW1z ID0gcHJzdGF0ZS5scGRlYWRfaXRlbXM7Ci0JLyogdGhlIHByZXN1bHQtPmRlYWRvZmZzZXRzIGFy cmF5IHdhcyBhbHJlYWR5IGZpbGxlZCBpbiAqLwotCi0JaWYgKHByc3RhdGUuYXR0ZW1wdF9mcmVl emUpCi0JewotCQlpZiAocHJlc3VsdC0+bmZyb3plbiA+IDApCi0JCXsKLQkJCSpuZXdfcmVsZnJv emVuX3hpZCA9IHByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlUmVsZnJvemVuWGlkOwotCQkJKm5l d19yZWxtaW5fbXhpZCA9IHByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlUmVsbWluTXhpZDsKLQkJ fQotCQllbHNlCi0JCXsKLQkJCSpuZXdfcmVsZnJvemVuX3hpZCA9IHByc3RhdGUucGFnZWZyei5O b0ZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQ7Ci0JCQkqbmV3X3JlbG1pbl9teGlkID0gcHJzdGF0ZS5w YWdlZnJ6Lk5vRnJlZXplUGFnZVJlbG1pbk14aWQ7Ci0JCX0KLQl9Ci0KLQkvKgotCSAqIElmIHVw ZGF0aW5nIHRoZSB2aXNpYmlsaXR5IG1hcCwgdGhlIGNvbmZsaWN0IGhvcml6b24gZm9yIHRoYXQg cmVjb3JkCi0JICogbXVzdCBiZSB0aGUgbmV3ZXN0IHhtaW4gb24gdGhlIHBhZ2UuICBIb3dldmVy LCBpZiB0aGUgcGFnZSBpcwotCSAqIGNvbXBsZXRlbHkgZnJvemVuLCB0aGVyZSBjYW4gYmUgbm8g Y29uZmxpY3QgYW5kIHRoZSB2bV9jb25mbGljdF9ob3Jpem9uCi0JICogc2hvdWxkIHJlbWFpbiBJ bnZhbGlkVHJhbnNhY3Rpb25JZC4gIFRoaXMgaW5jbHVkZXMgdGhlIGNhc2UgdGhhdCB3ZQotCSAq IGp1c3QgZnJvemUgYWxsIHRoZSB0dXBsZXM7IHRoZSBwcnVuZS1mcmVlemUgcmVjb3JkIGluY2x1 ZGVkIHRoZQotCSAqIGNvbmZsaWN0IFhJRCBhbHJlYWR5IHNvIHdlIGRvbid0IG5lZWQgdG8gYWdh aW4uCi0JICovCi0JaWYgKHByc3RhdGUuYWxsX2Zyb3plbikKLQkJdm1fY29uZmxpY3RfaG9yaXpv biA9IEludmFsaWRUcmFuc2FjdGlvbklkOwotCWVsc2UKLQkJdm1fY29uZmxpY3RfaG9yaXpvbiA9 IHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkOworCWlmIChkb19zZXRfdm0pCisJCUxvY2tC dWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAKIAkvKgogCSAqIER1cmluZyBp dHMgc2Vjb25kIHBhc3Mgb3ZlciB0aGUgaGVhcCwgVkFDVVVNIGNhbGxzCkBAIC0xMjAwLDcgKzEy NjgsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFy YW1zLAogCQlUcmFuc2FjdGlvbklkIGRlYnVnX2N1dG9mZjsKIAkJYm9vbAkJZGVidWdfYWxsX2Zy b3plbjsKIAotCQlBc3NlcnQocHJlc3VsdC0+bHBkZWFkX2l0ZW1zID09IDApOworCQlBc3NlcnQo cHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0gMCk7CisJCUFzc2VydChwcnN0YXRlLmN1dG9mZnMpOwog CiAJCUFzc2VydChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUocGFyYW1zLT5yZWxhdGlvbiwgYnVm ZmVyLAogCQkJCQkJCQkJCXByc3RhdGUuY3V0b2Zmcy0+T2xkZXN0WG1pbiwKQEAgLTEyMTAsNjYg KzEyNzksMzYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMg KnBhcmFtcywKIAkJQXNzZXJ0KHByc3RhdGUuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVu KTsKIAogCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKLQkJ CSAgIGRlYnVnX2N1dG9mZiA9PSB2bV9jb25mbGljdF9ob3Jpem9uKTsKKwkJCSAgIGRlYnVnX2N1 dG9mZiA9PSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCk7CiAJfQogI2VuZGlmCiAKLQkv KiBOb3cgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCBhbmQgUERfQUxMX1ZJU0lCTEUgaGludCAq LwotCUFzc2VydCghcHJzdGF0ZS5hbGxfdmlzaWJsZSB8fCAocHJzdGF0ZS5scGRlYWRfaXRlbXMg PT0gMCkpOwotCi0JZG9fc2V0X3ZtID0gaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKCZwcnN0YXRlLAot CQkJCQkJCQkJICBwYXJhbXMtPnJlbGF0aW9uLAotCQkJCQkJCQkJICBibG9ja25vLAotCQkJCQkJ CQkJICBidWZmZXIsCi0JCQkJCQkJCQkgIHBhZ2UsCi0JCQkJCQkJCQkgIHZtYnVmZmVyLAotCQkJ CQkJCQkJICBwcnN0YXRlLmxwZGVhZF9pdGVtcywKLQkJCQkJCQkJCSAgJm9sZF92bWJpdHMsCi0J CQkJCQkJCQkgICZuZXdfdm1iaXRzKTsKKwkvKiBDb3B5IGluZm9ybWF0aW9uIGJhY2sgZm9yIGNh bGxlciAqLworCXByZXN1bHQtPm5kZWxldGVkID0gcHJzdGF0ZS5uZGVsZXRlZDsKKwlwcmVzdWx0 LT5ubmV3bHBkZWFkID0gcHJzdGF0ZS5uZGVhZDsKKwlwcmVzdWx0LT5uZnJvemVuID0gcHJzdGF0 ZS5uZnJvemVuOworCXByZXN1bHQtPmxpdmVfdHVwbGVzID0gcHJzdGF0ZS5saXZlX3R1cGxlczsK KwlwcmVzdWx0LT5yZWNlbnRseV9kZWFkX3R1cGxlcyA9IHByc3RhdGUucmVjZW50bHlfZGVhZF90 dXBsZXM7CisJcHJlc3VsdC0+aGFzdHVwID0gcHJzdGF0ZS5oYXN0dXA7CisJcHJlc3VsdC0+bmV3 X3ZtYml0cyA9IG5ld192bWJpdHM7CisJcHJlc3VsdC0+b2xkX3ZtYml0cyA9IG9sZF92bWJpdHM7 CiAKLQkvKgotCSAqIG5ld192bWJpdHMgc2hvdWxkIGJlIDAgcmVnYXJkbGVzcyBvZiB3aGV0aGVy IG9yIG5vdCB0aGUgcGFnZSBpcwotCSAqIGFsbC12aXNpYmxlIGlmIHdlIGRvIG5vdCBpbnRlbmQg dG8gc2V0IHRoZSBWTS4KLQkgKi8KLQlBc3NlcnQoZG9fc2V0X3ZtIHx8IG5ld192bWJpdHMgPT0g MCk7CisJcHJlc3VsdC0+bHBkZWFkX2l0ZW1zID0gcHJzdGF0ZS5scGRlYWRfaXRlbXM7CisJLyog dGhlIHByZXN1bHQtPmRlYWRvZmZzZXRzIGFycmF5IHdhcyBhbHJlYWR5IGZpbGxlZCBpbiAqLwog Ci0JLyogU2V0IHRoZSB2aXNpYmlsaXR5IG1hcCBhbmQgcGFnZSB2aXNpYmlsaXR5IGhpbnQsIGlm IHJlbGV2YW50ICovCi0JaWYgKGRvX3NldF92bSkKKwlpZiAocHJzdGF0ZS5hdHRlbXB0X2ZyZWV6 ZSkKIAl7Ci0JCUFzc2VydChwcnN0YXRlLmFsbF92aXNpYmxlKTsKLQotCQkvKgotCQkgKiBJdCBz aG91bGQgbmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlzaWJpbGl0eSBtYXAgcGFnZSBpcyBz ZXQKLQkJICogd2hpbGUgdGhlIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLCBidXQgdGhlIHJldmVy c2UgaXMgYWxsb3dlZCAoaWYKLQkJICogY2hlY2tzdW1zIGFyZSBub3QgZW5hYmxlZCkuICBSZWdh cmRsZXNzLCBzZXQgYm90aCBiaXRzIHNvIHRoYXQgd2UKLQkJICogZ2V0IGJhY2sgaW4gc3luYy4K LQkJICoKLQkJICogRXZlbiBpZiBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldCwgd2UgZG9u J3QgbmVlZCB0byB3b3JyeSBhYm91dAotCQkgKiB1bm5lY2Vzc2FyaWx5IGRpcnR5aW5nIHRoZSBo ZWFwIGJ1ZmZlciwgYXMgaXQgbXVzdCBiZSBtYXJrZWQgZGlydHkKLQkJICogYmVmb3JlIGFkZGlu ZyBpdCB0byB0aGUgV0FMIGNoYWluLiBUaGUgb25seSBzY2VuYXJpbyB3aGVyZSBpdCBpcwotCQkg KiBub3QgYWxyZWFkeSBkaXJ0eSBpcyBpZiB0aGUgVk0gd2FzIHJlbW92ZWQsIGFuZCB0aGF0IGlz bid0IHdvcnRoCi0JCSAqIG9wdGltaXppbmcgZm9yLgotCQkgKi8KLQkJUGFnZVNldEFsbFZpc2li bGUocGFnZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwotCi0JCS8qCi0JCSAqIElmIHRo ZSBwYWdlIGlzIGJlaW5nIHNldCBhbGwtZnJvemVuLCB3ZSBwYXNzIEludmFsaWRUcmFuc2FjdGlv bklkCi0JCSAqIGFzIHRoZSBjdXRvZmZfeGlkLCBzaW5jZSBhIHNuYXBzaG90IGNvbmZsaWN0IGhv cml6b24gc3VmZmljaWVudCB0bwotCQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETyB3 YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMKLQkJICogd2VyZSBmcm96ZW4uCi0JCSAq LwotCQlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3plbiB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQo dm1fY29uZmxpY3RfaG9yaXpvbikpOwotCi0JCXZpc2liaWxpdHltYXBfc2V0KHBhcmFtcy0+cmVs YXRpb24sIGJsb2Nrbm8sIGJ1ZmZlciwKLQkJCQkJCSAgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJ CQkgIHZtYnVmZmVyLCB2bV9jb25mbGljdF9ob3Jpem9uLAotCQkJCQkJICBuZXdfdm1iaXRzKTsK KwkJaWYgKHByZXN1bHQtPm5mcm96ZW4gPiAwKQorCQl7CisJCQkqbmV3X3JlbGZyb3plbl94aWQg PSBwcnN0YXRlLnBhZ2VmcnouRnJlZXplUGFnZVJlbGZyb3plblhpZDsKKwkJCSpuZXdfcmVsbWlu X214aWQgPSBwcnN0YXRlLnBhZ2VmcnouRnJlZXplUGFnZVJlbG1pbk14aWQ7CisJCX0KKwkJZWxz ZQorCQl7CisJCQkqbmV3X3JlbGZyb3plbl94aWQgPSBwcnN0YXRlLnBhZ2VmcnouTm9GcmVlemVQ YWdlUmVsZnJvemVuWGlkOworCQkJKm5ld19yZWxtaW5fbXhpZCA9IHByc3RhdGUucGFnZWZyei5O b0ZyZWV6ZVBhZ2VSZWxtaW5NeGlkOworCQl9CiAJfQotCi0JLyogU2F2ZSB0aGUgdm1iaXRzIGZv ciBjYWxsZXIgKi8KLQlwcmVzdWx0LT5vbGRfdm1iaXRzID0gb2xkX3ZtYml0czsKLQlwcmVzdWx0 LT5uZXdfdm1iaXRzID0gbmV3X3ZtYml0czsKIH0KIAogCi0tIAoyLjQzLjAKCg== --00000000000028078b064614a599 Content-Type: text/x-patch; charset="US-ASCII"; name="v27-0007-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Disposition: attachment; filename="v27-0007-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8tt4cd6 RnJvbSA1MDVmNWVkODYwNTU5YjRjNDVjNTNhZWU2ZmQ4MzU1ZTFiZmQ0ZWE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjIxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjcgMDcvMTRdIEVsaW1pbmF0ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZnJvbSBlbXB0eS1w YWdlIHZhY3V1bQoKQXMgcGFydCBvZiByZW1vdmluZyBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jk cywgcGhhc2UgSSBvZiBWQUNVVU0gbm93Cm1hcmtzIGVtcHR5IHBhZ2VzIGFsbC12aXNpYmxlIGlu IGEgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQuCgpBdXRob3I6IE1lbGFuaWUg UGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQg SGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8 YW5kcmVzQGFuYXJhemVsLmRlPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdt YWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAzNSAr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjkgaW5zZXJ0aW9u cygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5k ZXggM2ZhMDM0NzA3MjIuLjIxMGFmYTExMzQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCkBAIC0xODczLDkgKzE4NzMsMTIgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJl bFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkgKi8KIAkJ aWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQogCQl7CisJCQkvKiBMb2NrIHZtYnVmZmVyIGJl Zm9yZSBlbnRlcmluZyBjcml0aWNhbCBzZWN0aW9uICovCisJCQlMb2NrQnVmZmVyKHZtYnVmZmVy LCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCiAJCQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIAot CQkJLyogbWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdyaXRpbmcgYSBXQUwgcmVjb3JkICovCisJ CQkvKiBNYXJrIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgd3JpdGluZyBhbnkgV0FMIHJlY29yZHMgKi8K IAkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwogCiAJCQkvKgpAQCAtMTg5MiwxMyArMTg5NSwzMyBA QCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1Ziwg QmxvY2tOdW1iZXIgYmxrbm8sCiAJCQkJbG9nX25ld3BhZ2VfYnVmZmVyKGJ1ZiwgdHJ1ZSk7CiAK IAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVs LT5yZWwsIGJsa25vLCBidWYsCi0JCQkJCQkJICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkg IHZtYnVmZmVyLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKLQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUgfAotCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKKwkJCXZp c2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKKwkJCQkJCQkJCSB2bWJ1ZmZlciwKKwkJCQkJ CQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCSBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4sCisJCQkJCQkJCQkgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOworCisJCQkv KgorCQkJICogRW1pdCBXQUwgZm9yIHNldHRpbmcgUERfQUxMX1ZJU0lCTEUgb24gdGhlIGhlYXAg cGFnZSBhbmQKKwkJCSAqIHNldHRpbmcgdGhlIFZNLgorCQkJICovCisJCQlpZiAoUmVsYXRpb25O ZWVkc1dBTCh2YWNyZWwtPnJlbCkpCisJCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZSh2YWNy ZWwtPnJlbCwgYnVmLAorCQkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkJICBWSVNJQklM SVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pF TiwKKwkJCQkJCQkJCQkgIEludmFsaWRUcmFuc2FjdGlvbklkLCAvKiBjb25mbGljdCB4aWQgKi8K KwkJCQkJCQkJCQkgIGZhbHNlLAkvKiBjbGVhbnVwIGxvY2sgKi8KKwkJCQkJCQkJCQkgIFBSVU5F X1ZBQ1VVTV9TQ0FOLAkvKiByZWFzb24gKi8KKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJCQkJ CQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAp OworCiAJCQlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKKwkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJV RkZFUl9MT0NLX1VOTE9DSyk7CisKIAkJCS8qIENvdW50IHRoZSBuZXdseSBhbGwtZnJvemVuIHBh Z2VzIGZvciBsb2dnaW5nICovCiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7CiAJ CQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotLSAKMi40My4wCgo= --00000000000028078b064614a599 Content-Type: text/x-patch; charset="US-ASCII"; name="v27-0008-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Disposition: attachment; filename="v27-0008-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8tt80l7 RnJvbSAwMmEyMTUzYWFhNGJlNDVkODY4MDQ3ZTYxMDBlYTFjYTQ3ZjVkN2UyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjcgMDgvMTRdIFJlbW92ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZW50aXJlbHkKCkFzIG5v IHJlbWFpbmluZyB1c2VycyBlbWl0IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgpUaGlzIGlu Y2x1ZGVzIGRlbGV0aW5nIHRoZSB4bF9oZWFwX3Zpc2libGUgc3RydWN0IGFuZCBhbGwgZnVuY3Rp b25zCnJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBvciByZXBsYXlpbmcgWExPR19IRUFQMl9WSVNJ QkxFIHJlY29yZHMuCgpUaGlzIGNoYW5nZXMgdGhlIHZpc2liaWxpdHkgbWFwIEFQSSwgc28gYW55 IGV4dGVybmFsIHVzZXJzL2NvbnN1bWVycyBvZgp0aGUgVk0tb25seSBXQUwgcmVjb3JkIHdpbGwg bmVlZCB0byBjaGFuZ2UuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1h bkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXkgQm9yb2RpbiA8eDRtbW1AeWFuZGV4LXRl YW0ucnU+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJl dmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgfCAgNTQgKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgfCAxNTUgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgfCAgIDQgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgfCAgMTYgKy0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgIHwgMTEyICstLS0tLS0tLS0tLS0tLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jICAgfCAgMTAgLS0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgfCAgIDEgLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc3RhbmRieS5jICAgICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbV94bG9nLmggICAgICAgICB8ICAyOCArLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJp bGl0eW1hcC5oICAgICAgIHwgIDEzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1h cGRlZnMuaCAgIHwgICA5IC0tCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAg ICAgIHwgICAxIC0KIDEzIGZpbGVzIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMoKyksIDM3NCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2su YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jCmluZGV4IGJiMjYwY2ZmYTY4 Li41ZjA3ZjE3OTQxNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZt YXNrLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKQEAgLTU2LDgg KzU2LDggQEAgbWFza19wYWdlX2hpbnRfYml0cyhQYWdlIHBhZ2UpCiAKIAkvKgogCSAqIER1cmlu ZyByZXBsYXksIGlmIHRoZSBwYWdlIExTTiBoYXMgYWR2YW5jZWQgcGFzdCBvdXIgWExPRyByZWNv cmQncyBMU04sCi0JICogd2UgZG9uJ3QgbWFyayB0aGUgcGFnZSBhbGwtdmlzaWJsZS4gU2VlIGhl YXBfeGxvZ192aXNpYmxlKCkgZm9yCi0JICogZGV0YWlscy4KKwkgKiB3ZSBkb24ndCBtYXJrIHRo ZSBwYWdlIGFsbC12aXNpYmxlLiBTZWUgaGVhcF94bG9nX3BydW5lX2FuZF9mcmVlemUoKQorCSAq IGZvciBtb3JlIGRldGFpbHMuCiAJICovCiAJUGFnZUNsZWFyQWxsVmlzaWJsZShwYWdlKTsKIH0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggNmRhZjRhODdkZWMuLmZiN2E3NTQ4YWEwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMjUzOSwxMSArMjUzOSwxMSBAQCBoZWFwX211 bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3QgKipzbG90cywgaW50 IG50dXBsZXMsCiAJCWVsc2UgaWYgKGFsbF9mcm96ZW5fc2V0KQogCQl7CiAJCQlQYWdlU2V0QWxs VmlzaWJsZShwYWdlKTsKLQkJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhCdWZmZXJHZXRCbG9j a051bWJlcihidWZmZXIpLAotCQkJCQkJCQkJIHZtYnVmZmVyLAotCQkJCQkJCQkJIFZJU0lCSUxJ VFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwK LQkJCQkJCQkJCSByZWxhdGlvbi0+cmRfbG9jYXRvcik7CisJCQl2aXNpYmlsaXR5bWFwX3NldChC dWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLAorCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJ ICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxM X0ZST1pFTiwKKwkJCQkJCQkgIHJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKIAkJfQogCiAJCS8qCkBA IC04ODEzLDUwICs4ODEzLDYgQEAgYm90dG9tdXBfc29ydF9hbmRfc2hyaW5rKFRNX0luZGV4RGVs ZXRlT3AgKmRlbHN0YXRlKQogCXJldHVybiBuYmxvY2tzZmF2b3JhYmxlOwogfQogCi0vKgotICog UGVyZm9ybSBYTG9nSW5zZXJ0IGZvciBhIGhlYXAtdmlzaWJsZSBvcGVyYXRpb24uICAnYmxvY2sn IGlzIHRoZSBibG9jawotICogYmVpbmcgbWFya2VkIGFsbC12aXNpYmxlLCBhbmQgdm1fYnVmZmVy IGlzIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUKLSAqIGNvcnJlc3BvbmRpbmcgdmlzaWJpbGl0 eSBtYXAgYmxvY2suICBCb3RoIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBtb2RpZmllZAotICog YW5kIGRpcnRpZWQuCi0gKgotICogc25hcHNob3RDb25mbGljdEhvcml6b24gY29tZXMgZnJvbSB0 aGUgbGFyZ2VzdCB4bWluIG9uIHRoZSBwYWdlIGJlaW5nCi0gKiBtYXJrZWQgYWxsLXZpc2libGUu ICBSRURPIHJvdXRpbmUgdXNlcyBpdCB0byBnZW5lcmF0ZSByZWNvdmVyeSBjb25mbGljdHMuCi0g KgotICogSWYgY2hlY2tzdW1zIG9yIHdhbF9sb2dfaGludHMgYXJlIGVuYWJsZWQsIHdlIG1heSBh bHNvIGdlbmVyYXRlIGEgZnVsbC1wYWdlCi0gKiBpbWFnZSBvZiBoZWFwX2J1ZmZlci4gT3RoZXJ3 aXNlLCB3ZSBvcHRpbWl6ZSBhd2F5IHRoZSBGUEkgKGJ5IHNwZWNpZnlpbmcKLSAqIFJFR0JVRl9O T19JTUFHRSBmb3IgdGhlIGhlYXAgYnVmZmVyKSwgaW4gd2hpY2ggY2FzZSB0aGUgY2FsbGVyIHNo b3VsZCAqbm90KgotICogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uCi0gKi8KLVhMb2dSZWNQ dHIKLWxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1 ZmZlciB2bV9idWZmZXIsCi0JCQkJIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6 b24sIHVpbnQ4IHZtZmxhZ3MpCi17Ci0JeGxfaGVhcF92aXNpYmxlIHhscmVjOwotCVhMb2dSZWNQ dHIJcmVjcHRyOwotCXVpbnQ4CQlmbGFnczsKLQotCUFzc2VydChCdWZmZXJJc1ZhbGlkKGhlYXBf YnVmZmVyKSk7Ci0JQXNzZXJ0KEJ1ZmZlcklzVmFsaWQodm1fYnVmZmVyKSk7Ci0KLQl4bHJlYy5z bmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwotCXhscmVj LmZsYWdzID0gdm1mbGFnczsKLQlpZiAoUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNv ZGluZyhyZWwpKQotCQl4bHJlYy5mbGFncyB8PSBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19S RUw7Ci0JWExvZ0JlZ2luSW5zZXJ0KCk7Ci0JWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIFNpemVP ZkhlYXBWaXNpYmxlKTsKLQotCVhMb2dSZWdpc3RlckJ1ZmZlcigwLCB2bV9idWZmZXIsIDApOwot Ci0JZmxhZ3MgPSBSRUdCVUZfU1RBTkRBUkQ7Ci0JaWYgKCFYTG9nSGludEJpdElzTmVlZGVkKCkp Ci0JCWZsYWdzIHw9IFJFR0JVRl9OT19JTUFHRTsKLQlYTG9nUmVnaXN0ZXJCdWZmZXIoMSwgaGVh cF9idWZmZXIsIGZsYWdzKTsKLQotCXJlY3B0ciA9IFhMb2dJbnNlcnQoUk1fSEVBUDJfSUQsIFhM T0dfSEVBUDJfVklTSUJMRSk7Ci0KLQlyZXR1cm4gcmVjcHRyOwotfQotCiAvKgogICogUGVyZm9y bSBYTG9nSW5zZXJ0IGZvciBhIGhlYXAtdXBkYXRlIG9wZXJhdGlvbi4gIENhbGxlciBtdXN0IGFs cmVhZHkKICAqIGhhdmUgbW9kaWZpZWQgdGhlIGJ1ZmZlcihzKSBhbmQgbWFya2VkIHRoZW0gZGly dHkuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCAxODIzZmVmZjI5OC4u NDdkMjQ3OTQxNWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94 bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtMjM2 LDcgKzIzNiw3IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAJCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKIAkJCVBhZ2VJbml0KHZtcGFnZSwgQkxDS1Na LCAwKTsKIAotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sIHZtYnVmZmVyLCB2bWZs YWdzLCBybG9jYXRvcik7CisJCXZpc2liaWxpdHltYXBfc2V0KGJsa25vLCB2bWJ1ZmZlciwgdm1m bGFncywgcmxvY2F0b3IpOwogCiAJCUFzc2VydChCdWZmZXJJc0RpcnR5KHZtYnVmZmVyKSk7CiAJ CVBhZ2VTZXRMU04odm1wYWdlLCBsc24pOwpAQCAtMjQ5LDE0MiArMjQ5LDYgQEAgaGVhcF94bG9n X3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJWExvZ1JlY29yZFBhZ2VX aXRoRnJlZVNwYWNlKHJsb2NhdG9yLCBibGtubywgZnJlZXNwYWNlKTsKIH0KIAotLyoKLSAqIFJl cGxheSBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jkcy4KLSAqCi0gKiBUaGUgY3JpdGljYWwgaW50 ZWdyaXR5IHJlcXVpcmVtZW50IGhlcmUgaXMgdGhhdCB3ZSBtdXN0IG5ldmVyIGVuZCB1cCB3aXRo Ci0gKiBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCwgYW5k IHRoZSBwYWdlLWxldmVsCi0gKiBQRF9BTExfVklTSUJMRSBiaXQgaXMgY2xlYXIuICBJZiB0aGF0 IHdlcmUgdG8gb2NjdXIsIHRoZW4gYSBzdWJzZXF1ZW50Ci0gKiBwYWdlIG1vZGlmaWNhdGlvbiB3 b3VsZCBmYWlsIHRvIGNsZWFyIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQuCi0gKi8KLXN0YXRpYyB2 b2lkCi1oZWFwX3hsb2dfdmlzaWJsZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKLXsKLQlYTG9n UmVjUHRyCWxzbiA9IHJlY29yZC0+RW5kUmVjUHRyOwotCXhsX2hlYXBfdmlzaWJsZSAqeGxyZWMg PSAoeGxfaGVhcF92aXNpYmxlICopIFhMb2dSZWNHZXREYXRhKHJlY29yZCk7Ci0JQnVmZmVyCQl2 bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7Ci0JQnVmZmVyCQlidWZmZXI7Ci0JUGFnZQkJcGFnZTsK LQlSZWxGaWxlTG9jYXRvciBybG9jYXRvcjsKLQlCbG9ja051bWJlciBibGtubzsKLQlYTG9nUmVk b0FjdGlvbiBhY3Rpb247Ci0KLQlBc3NlcnQoKHhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBf WExPR19WQUxJRF9CSVRTKSA9PSB4bHJlYy0+ZmxhZ3MpOwotCi0JWExvZ1JlY0dldEJsb2NrVGFn KHJlY29yZCwgMSwgJnJsb2NhdG9yLCBOVUxMLCAmYmxrbm8pOwotCi0JLyoKLQkgKiBJZiB0aGVy ZSBhcmUgYW55IEhvdCBTdGFuZGJ5IHRyYW5zYWN0aW9ucyBydW5uaW5nIHRoYXQgaGF2ZSBhbiB4 bWluCi0JICogaG9yaXpvbiBvbGQgZW5vdWdoIHRoYXQgdGhpcyBwYWdlIGlzbid0IGFsbC12aXNp YmxlIGZvciB0aGVtLCB0aGV5Ci0JICogbWlnaHQgaW5jb3JyZWN0bHkgZGVjaWRlIHRoYXQgYW4g aW5kZXgtb25seSBzY2FuIGNhbiBza2lwIGEgaGVhcCBmZXRjaC4KLQkgKgotCSAqIE5COiBJdCBt aWdodCBiZSBiZXR0ZXIgdG8gdGhyb3cgc29tZSBraW5kIG9mICJzb2Z0IiBjb25mbGljdCBoZXJl IHRoYXQKLQkgKiBmb3JjZXMgYW55IGluZGV4LW9ubHkgc2NhbiB0aGF0IGlzIGluIGZsaWdodCB0 byBwZXJmb3JtIGhlYXAgZmV0Y2hlcywKLQkgKiByYXRoZXIgdGhhbiBraWxsaW5nIHRoZSB0cmFu c2FjdGlvbiBvdXRyaWdodC4KLQkgKi8KLQlpZiAoSW5Ib3RTdGFuZGJ5KQotCQlSZXNvbHZlUmVj b3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24s Ci0JCQkJCQkJCQkJCXhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBfWExPR19DQVRBTE9HX1JF TCwKLQkJCQkJCQkJCQkJcmxvY2F0b3IpOwotCi0JLyoKLQkgKiBSZWFkIHRoZSBoZWFwIHBhZ2Us IGlmIGl0IHN0aWxsIGV4aXN0cy4gSWYgdGhlIGhlYXAgZmlsZSBoYXMgZHJvcHBlZCBvcgotCSAq IHRydW5jYXRlZCBsYXRlciBpbiByZWNvdmVyeSwgd2UgZG9uJ3QgbmVlZCB0byB1cGRhdGUgdGhl IHBhZ2UsIGJ1dCB3ZSdkCi0JICogYmV0dGVyIHN0aWxsIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBt YXAuCi0JICovCi0JYWN0aW9uID0gWExvZ1JlYWRCdWZmZXJGb3JSZWRvKHJlY29yZCwgMSwgJmJ1 ZmZlcik7Ci0JaWYgKGFjdGlvbiA9PSBCTEtfTkVFRFNfUkVETykKLQl7Ci0JCS8qCi0JCSAqIFdl IGRvbid0IGJ1bXAgdGhlIExTTiBvZiB0aGUgaGVhcCBwYWdlIHdoZW4gc2V0dGluZyB0aGUgdmlz aWJpbGl0eQotCQkgKiBtYXAgYml0ICh1bmxlc3MgY2hlY2tzdW1zIG9yIHdhbF9oaW50X2JpdHMg aXMgZW5hYmxlZCwgaW4gd2hpY2gKLQkJICogY2FzZSB3ZSBtdXN0KS4gVGhpcyBleHBvc2VzIHVz IHRvIHRvcm4gcGFnZSBoYXphcmRzLCBidXQgc2luY2UKLQkJICogd2UncmUgbm90IGluc3BlY3Rp bmcgdGhlIGV4aXN0aW5nIHBhZ2UgY29udGVudHMgaW4gYW55IHdheSwgd2UKLQkJICogZG9uJ3Qg Y2FyZS4KLQkJICovCi0JCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7Ci0KLQkJUGFnZVNl dEFsbFZpc2libGUocGFnZSk7Ci0KLQkJaWYgKFhMb2dIaW50Qml0SXNOZWVkZWQoKSkKLQkJCVBh Z2VTZXRMU04ocGFnZSwgbHNuKTsKLQotCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKLQl9Ci0J ZWxzZSBpZiAoYWN0aW9uID09IEJMS19SRVNUT1JFRCkKLQl7Ci0JCS8qCi0JCSAqIElmIGhlYXAg YmxvY2sgd2FzIGJhY2tlZCB1cCwgd2UgYWxyZWFkeSByZXN0b3JlZCBpdCBhbmQgdGhlcmUncwot CQkgKiBub3RoaW5nIG1vcmUgdG8gZG8uIChUaGlzIGNhbiBvbmx5IGhhcHBlbiB3aXRoIGNoZWNr c3VtcyBvcgotCQkgKiB3YWxfbG9nX2hpbnRzIGVuYWJsZWQuKQotCQkgKi8KLQl9Ci0KLQlpZiAo QnVmZmVySXNWYWxpZChidWZmZXIpKQotCXsKLQkJU2l6ZQkJc3BhY2UgPSBQYWdlR2V0RnJlZVNw YWNlKEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSk7Ci0KLQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZm ZXIpOwotCi0JCS8qCi0JCSAqIFNpbmNlIEZTTSBpcyBub3QgV0FMLWxvZ2dlZCBhbmQgb25seSB1 cGRhdGVkIGhldXJpc3RpY2FsbHksIGl0Ci0JCSAqIGVhc2lseSBiZWNvbWVzIHN0YWxlIGluIHN0 YW5kYnlzLiAgSWYgdGhlIHN0YW5kYnkgaXMgbGF0ZXIgcHJvbW90ZWQKLQkJICogYW5kIHJ1bnMg VkFDVVVNLCBpdCB3aWxsIHNraXAgdXBkYXRpbmcgaW5kaXZpZHVhbCBmcmVlIHNwYWNlCi0JCSAq IGZpZ3VyZXMgZm9yIHBhZ2VzIHRoYXQgYmVjYW1lIGFsbC12aXNpYmxlIChvciBhbGwtZnJvemVu LCBkZXBlbmRpbmcKLQkJICogb24gdGhlIHZhY3V1bSBtb2RlLCkgd2hpY2ggaXMgdHJvdWJsZXNv bWUgd2hlbiBGcmVlU3BhY2VNYXBWYWN1dW0KLQkJICogcHJvcGFnYXRlcyB0b28gb3B0aW1pc3Rp YyBmcmVlIHNwYWNlIHZhbHVlcyB0byB1cHBlciBGU00gbGF5ZXJzOwotCQkgKiBsYXRlciBpbnNl cnRlcnMgdHJ5IHRvIHVzZSBzdWNoIHBhZ2VzIG9ubHkgdG8gZmluZCBvdXQgdGhhdCB0aGV5Ci0J CSAqIGFyZSB1bnVzYWJsZS4gIFRoaXMgY2FuIGNhdXNlIGxvbmcgc3RhbGxzIHdoZW4gdGhlcmUg YXJlIG1hbnkgc3VjaAotCQkgKiBwYWdlcy4KLQkJICoKLQkJICogRm9yZXN0YWxsIHRob3NlIHBy b2JsZW1zIGJ5IHVwZGF0aW5nIEZTTSdzIGlkZWEgYWJvdXQgYSBwYWdlIHRoYXQKLQkJICogaXMg YmVjb21pbmcgYWxsLXZpc2libGUgb3IgYWxsLWZyb3plbi4KLQkJICoKLQkJICogRG8gdGhpcyBy ZWdhcmRsZXNzIG9mIGEgZnVsbC1wYWdlIGltYWdlIGJlaW5nIGFwcGxpZWQsIHNpbmNlIHRoZQot CQkgKiBGU00gZGF0YSBpcyBub3QgaW4gdGhlIHBhZ2UgYW55d2F5LgotCQkgKi8KLQkJaWYgKHhs cmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykKLQkJCVhMb2dSZWNvcmRQYWdl V2l0aEZyZWVTcGFjZShybG9jYXRvciwgYmxrbm8sIHNwYWNlKTsKLQl9Ci0KLQkvKgotCSAqIEV2 ZW4gaWYgd2Ugc2tpcHBlZCB0aGUgaGVhcCBwYWdlIHVwZGF0ZSBkdWUgdG8gdGhlIExTTiBpbnRl cmxvY2ssIGl0J3MKLQkgKiBzdGlsbCBzYWZlIHRvIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAu ICBBbnkgV0FMIHJlY29yZCB0aGF0IGNsZWFycwotCSAqIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQg ZG9lcyBzbyBiZWZvcmUgY2hlY2tpbmcgdGhlIHBhZ2UgTFNOLCBzbyBhbnkKLQkgKiBiaXRzIHRo YXQgbmVlZCB0byBiZSBjbGVhcmVkIHdpbGwgc3RpbGwgYmUgY2xlYXJlZC4KLQkgKi8KLQlpZiAo WExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQocmVjb3JkLCAwLCBSQk1fWkVST19PTl9FUlJP UiwgZmFsc2UsCi0JCQkJCQkJCQkgICZ2bWJ1ZmZlcikgPT0gQkxLX05FRURTX1JFRE8pCi0Jewot CQlQYWdlCQl2bXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtYnVmZmVyKTsKLQkJUmVsYXRpb24JcmVs bjsKLQkJdWludDgJCXZtYml0czsKLQotCQkvKiBpbml0aWFsaXplIHRoZSBwYWdlIGlmIGl0IHdh cyByZWFkIGFzIHplcm9zICovCi0JCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKLQkJCVBhZ2VJbml0 KHZtcGFnZSwgQkxDS1NaLCAwKTsKLQotCQkvKiByZW1vdmUgVklTSUJJTElUWU1BUF9YTE9HXyog Ki8KLQkJdm1iaXRzID0geGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTOwot Ci0JCS8qCi0JCSAqIFhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVkIGxvY2tlZCB0aGUgYnVm ZmVyLiBCdXQKLQkJICogdmlzaWJpbGl0eW1hcF9zZXQgd2lsbCBoYW5kbGUgbG9ja2luZyBpdHNl bGYuCi0JCSAqLwotCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOwot Ci0JCXJlbG4gPSBDcmVhdGVGYWtlUmVsY2FjaGVFbnRyeShybG9jYXRvcik7Ci0KLQkJdmlzaWJp bGl0eW1hcF9zZXQocmVsbiwgYmxrbm8sIEludmFsaWRCdWZmZXIsIGxzbiwgdm1idWZmZXIsCi0J CQkJCQkgIHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwgdm1iaXRzKTsKLQotCQlSZWxl YXNlQnVmZmVyKHZtYnVmZmVyKTsKLQkJRnJlZUZha2VSZWxjYWNoZUVudHJ5KHJlbG4pOwotCX0K LQllbHNlIGlmIChCdWZmZXJJc1ZhbGlkKHZtYnVmZmVyKSkKLQkJVW5sb2NrUmVsZWFzZUJ1ZmZl cih2bWJ1ZmZlcik7Ci19Ci0KIC8qCiAgKiBHaXZlbiBhbiAiaW5mb2JpdHMiIGZpZWxkIGZyb20g YW4gWExvZyByZWNvcmQsIHNldCB0aGUgY29ycmVjdCBiaXRzIGluIHRoZQogICogZ2l2ZW4gaW5m b21hc2sgYW5kIGluZm9tYXNrMiBmb3IgdGhlIHR1cGxlIHRvdWNoZWQgYnkgdGhlIHJlY29yZC4K QEAgLTc2Miw4ICs2MjYsOCBAQCBoZWFwX3hsb2dfbXVsdGlfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCSAqCiAJICogRHVyaW5nIHJlY292ZXJ5LCBob3dldmVyLCBubyBjb25jdXJy ZW50IHdyaXRlcnMgZXhpc3QuIFRoZXJlZm9yZSwKIAkgKiB1cGRhdGluZyB0aGUgVk0gd2l0aG91 dCBob2xkaW5nIHRoZSBoZWFwIHBhZ2UgbG9jayBpcyBzYWZlIGVub3VnaC4gVGhpcwotCSAqIHNh bWUgYXBwcm9hY2ggaXMgdGFrZW4gd2hlbiByZXBsYXlpbmcgeGxfaGVhcF92aXNpYmxlIHJlY29y ZHMgKHNlZQotCSAqIGhlYXBfeGxvZ192aXNpYmxlKCkpLgorCSAqIHNhbWUgYXBwcm9hY2ggaXMg dGFrZW4gd2hlbiByZXBsYXlpbmcgWExPR19IRUFQMl9QUlVORSogcmVjb3JkcyAoc2VlCisJICog aGVhcF94bG9nX3BydW5lX2FuZF9mcmVlemUoKSkuCiAJICovCiAJaWYgKCh4bHJlYy0+ZmxhZ3Mg JiBYTEhfSU5TRVJUX0FMTF9GUk9aRU5fU0VUKSAmJgogCQlYTG9nUmVhZEJ1ZmZlckZvclJlZG9F eHRlbmRlZChyZWNvcmQsIDEsIFJCTV9aRVJPX09OX0VSUk9SLCBmYWxzZSwKQEAgLTc3NSwxMSAr NjM5LDExIEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQp CiAJCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKIAkJCVBhZ2VJbml0KHZtcGFnZSwgQkxDS1NaLCAw KTsKIAotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sCi0JCQkJCQkJCSB2bWJ1ZmZl ciwKLQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkgVklTSUJJ TElUWU1BUF9BTExfRlJPWkVOLAotCQkJCQkJCQkgcmxvY2F0b3IpOworCQl2aXNpYmlsaXR5bWFw X3NldChibGtubywKKwkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxM X1ZJU0lCTEUgfAorCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4sCisJCQkJCQkgIHJs b2NhdG9yKTsKIAogCQlBc3NlcnQoQnVmZmVySXNEaXJ0eSh2bWJ1ZmZlcikpOwogCQlQYWdlU2V0 TFNOKHZtcGFnZSwgbHNuKTsKQEAgLTEzNjAsOSArMTIyNCw2IEBAIGhlYXAyX3JlZG8oWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5V UDoKIAkJCWhlYXBfeGxvZ19wcnVuZV9mcmVlemUocmVjb3JkKTsKIAkJCWJyZWFrOwotCQljYXNl IFhMT0dfSEVBUDJfVklTSUJMRToKLQkJCWhlYXBfeGxvZ192aXNpYmxlKHJlY29yZCk7Ci0JCQli cmVhazsKIAkJY2FzZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVDoKIAkJCWhlYXBfeGxvZ19tdWx0 aV9pbnNlcnQocmVjb3JkKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwppbmRleCBlNzRjMmUwNjIyNi4uODU2ODU4N2FmNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCkBAIC0xMjI2LDggKzEyMjYsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJICogd29ydGggb3B0aW1pemluZyBmb3Iu CiAJCQkgKi8KIAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9z ZXRfdm1iaXRzKGJsb2Nrbm8sIHZtYnVmZmVyLCBuZXdfdm1iaXRzLAotCQkJCQkJCQkJIHBhcmFt cy0+cmVsYXRpb24tPnJkX2xvY2F0b3IpOworCQkJdmlzaWJpbGl0eW1hcF9zZXQoYmxvY2tubywg dm1idWZmZXIsIG5ld192bWJpdHMsCisJCQkJCQkJICBwYXJhbXMtPnJlbGF0aW9uLT5yZF9sb2Nh dG9yKTsKIAkJfQogCiAJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jCmluZGV4IDIxMGFmYTExMzQ2Li44NzgyMGYzZmY0OSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTg5NSwxMSArMTg5NSwxMSBAQCBsYXp5X3Nj YW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1i ZXIgYmxrbm8sCiAJCQkJbG9nX25ld3BhZ2VfYnVmZmVyKGJ1ZiwgdHJ1ZSk7CiAKIAkJCVBhZ2VT ZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJsa25vLAot CQkJCQkJCQkJIHZtYnVmZmVyLAotCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUg fAotCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKLQkJCQkJCQkJCSB2YWNyZWwt PnJlbC0+cmRfbG9jYXRvcik7CisJCQl2aXNpYmlsaXR5bWFwX3NldChibGtubywKKwkJCQkJCQkg IHZtYnVmZmVyLAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8CisJCQkJCQkJ ICBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4sCisJCQkJCQkJICB2YWNyZWwtPnJlbC0+cmRfbG9j YXRvcik7CiAKIAkJCS8qCiAJCQkgKiBFbWl0IFdBTCBmb3Igc2V0dGluZyBQRF9BTExfVklTSUJM RSBvbiB0aGUgaGVhcCBwYWdlIGFuZApAQCAtMjc3Niw5ICsyNzc2LDkgQEAgbGF6eV92YWN1dW1f aGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBi dWZmZXIsCiAJCSAqIHNldCBQRF9BTExfVklTSUJMRS4KIAkJICovCiAJCVBhZ2VTZXRBbGxWaXNp YmxlKHBhZ2UpOwotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sCi0JCQkJCQkJCSB2 bWJ1ZmZlciwgdm1mbGFncywKLQkJCQkJCQkJIHZhY3JlbC0+cmVsLT5yZF9sb2NhdG9yKTsKKwkJ dmlzaWJpbGl0eW1hcF9zZXQoYmxrbm8sCisJCQkJCQkgIHZtYnVmZmVyLCB2bWZsYWdzLAorCQkJ CQkJICB2YWNyZWwtPnJlbC0+cmRfbG9jYXRvcik7CiAJCWNvbmZsaWN0X3hpZCA9IHZpc2liaWxp dHlfY3V0b2ZmX3hpZDsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3Zpc2liaWxpdHltYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAu YwppbmRleCBkMTQ1ODhlOTJhZS4uNzk5N2U5MjY4NzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92aXNpYmlsaXR5bWFwLmMKQEAgLTE0LDggKzE0LDcgQEAKICAqCQl2aXNpYmlsaXR5bWFwX2Ns ZWFyICAtIGNsZWFyIGJpdHMgZm9yIG9uZSBwYWdlIGluIHRoZSB2aXNpYmlsaXR5IG1hcAogICoJ CXZpc2liaWxpdHltYXBfcGluCSAtIHBpbiBhIG1hcCBwYWdlIGZvciBzZXR0aW5nIGEgYml0CiAg KgkJdmlzaWJpbGl0eW1hcF9waW5fb2sgLSBjaGVjayB3aGV0aGVyIGNvcnJlY3QgbWFwIHBhZ2Ug aXMgYWxyZWFkeSBwaW5uZWQKLSAqCQl2aXNpYmlsaXR5bWFwX3NldAkgLSBzZXQgYml0KHMpIGlu IGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZSBhbmQgbG9nCi0gKgkJdmlzaWJpbGl0eW1hcF9zZXRf dm1iaXRzIC0gc2V0IGJpdChzKSBpbiBhIHBpbm5lZCBwYWdlCisgKgkJdmlzaWJpbGl0eW1hcF9z ZXQJIC0gc2V0IGJpdChzKSBpbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UKICAqCQl2aXNpYmls aXR5bWFwX2dldF9zdGF0dXMgLSBnZXQgc3RhdHVzIG9mIGJpdHMKICAqCQl2aXNpYmlsaXR5bWFw X2NvdW50ICAtIGNvdW50IG51bWJlciBvZiBiaXRzIHNldCBpbiB2aXNpYmlsaXR5IG1hcAogICoJ CXZpc2liaWxpdHltYXBfcHJlcGFyZV90cnVuY2F0ZSAtCkBAIC0yMjAsMTA5ICsyMTksNiBAQCB2 aXNpYmlsaXR5bWFwX3Bpbl9vayhCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgdm1idWYpCiAJ cmV0dXJuIEJ1ZmZlcklzVmFsaWQodm1idWYpICYmIEJ1ZmZlckdldEJsb2NrTnVtYmVyKHZtYnVm KSA9PSBtYXBCbG9jazsKIH0KIAotLyoKLSAqCXZpc2liaWxpdHltYXBfc2V0IC0gc2V0IGJpdChz KSBvbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UKLSAqCi0gKiByZWNwdHIgaXMgdGhlIExTTiBv ZiB0aGUgWExPRyByZWNvcmQgd2UncmUgcmVwbGF5aW5nLCBpZiB3ZSdyZSBpbiByZWNvdmVyeSwK LSAqIG9yIEludmFsaWRYTG9nUmVjUHRyIGluIG5vcm1hbCBydW5uaW5nLiAgVGhlIFZNIHBhZ2Ug TFNOIGlzIGFkdmFuY2VkIHRvIHRoZQotICogb25lIHByb3ZpZGVkOyBpbiBub3JtYWwgcnVubmlu Zywgd2UgZ2VuZXJhdGUgYSBuZXcgWExPRyByZWNvcmQgYW5kIHNldCB0aGUKLSAqIHBhZ2UgTFNO IHRvIHRoYXQgdmFsdWUgKHRob3VnaCB0aGUgaGVhcCBwYWdlJ3MgTFNOIG1heSAqbm90KiBiZSB1 cGRhdGVkOwotICogc2VlIGJlbG93KS4gIGN1dG9mZl94aWQgaXMgdGhlIGxhcmdlc3QgeG1pbiBv biB0aGUgcGFnZSBiZWluZyBtYXJrZWQKLSAqIGFsbC12aXNpYmxlOyBpdCBpcyBuZWVkZWQgZm9y IEhvdCBTdGFuZGJ5LCBhbmQgY2FuIGJlIEludmFsaWRUcmFuc2FjdGlvbklkCi0gKiBpZiB0aGUg cGFnZSBjb250YWlucyBubyB0dXBsZXMuICBJdCBjYW4gYWxzbyBiZSBzZXQgdG8gSW52YWxpZFRy YW5zYWN0aW9uSWQKLSAqIHdoZW4gYSBwYWdlIHRoYXQgaXMgYWxyZWFkeSBhbGwtdmlzaWJsZSBp cyBiZWluZyBtYXJrZWQgYWxsLWZyb3plbi4KLSAqCi0gKiBDYWxsZXIgaXMgZXhwZWN0ZWQgdG8g c2V0IHRoZSBoZWFwIHBhZ2UncyBQRF9BTExfVklTSUJMRSBiaXQgYmVmb3JlIGNhbGxpbmcKLSAq IHRoaXMgZnVuY3Rpb24uIEV4Y2VwdCBpbiByZWNvdmVyeSwgY2FsbGVyIHNob3VsZCBhbHNvIHBh c3MgdGhlIGhlYXAKLSAqIGJ1ZmZlci4gV2hlbiBjaGVja3N1bXMgYXJlIGVuYWJsZWQgYW5kIHdl J3JlIG5vdCBpbiByZWNvdmVyeSwgd2UgbXVzdCBhZGQKLSAqIHRoZSBoZWFwIGJ1ZmZlciB0byB0 aGUgV0FMIGNoYWluIHRvIHByb3RlY3QgaXQgZnJvbSBiZWluZyB0b3JuLgotICoKLSAqIFlvdSBt dXN0IHBhc3MgYSBidWZmZXIgY29udGFpbmluZyB0aGUgY29ycmVjdCBtYXAgcGFnZSB0byB0aGlz IGZ1bmN0aW9uLgotICogQ2FsbCB2aXNpYmlsaXR5bWFwX3BpbiBmaXJzdCB0byBwaW4gdGhlIHJp Z2h0IG9uZS4gVGhpcyBmdW5jdGlvbiBkb2Vzbid0IGRvCi0gKiBhbnkgSS9PLgotICoKLSAqIFJl dHVybnMgdGhlIHN0YXRlIG9mIHRoZSBwYWdlJ3MgVk0gYml0cyBiZWZvcmUgc2V0dGluZyBmbGFn cy4KLSAqLwotdWludDgKLXZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1i ZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCi0JCQkJICBYTG9nUmVjUHRyIHJlY3B0ciwgQnVm ZmVyIHZtQnVmLCBUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCi0JCQkJICB1aW50OCBmbGFncykK LXsKLQlCbG9ja051bWJlciBtYXBCbG9jayA9IEhFQVBCTEtfVE9fTUFQQkxPQ0soaGVhcEJsayk7 Ci0JdWludDMyCQltYXBCeXRlID0gSEVBUEJMS19UT19NQVBCWVRFKGhlYXBCbGspOwotCXVpbnQ4 CQltYXBPZmZzZXQgPSBIRUFQQkxLX1RPX09GRlNFVChoZWFwQmxrKTsKLQlQYWdlCQlwYWdlOwot CXVpbnQ4CSAgICptYXA7Ci0JdWludDgJCXN0YXR1czsKLQotI2lmZGVmIFRSQUNFX1ZJU0lCSUxJ VFlNQVAKLQllbG9nKERFQlVHMSwgInZtX3NldCBmbGFncyAweCUwMlggZm9yICVzICVkIiwKLQkJ IGZsYWdzLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwQmxrKTsKLSNlbmRpZgot Ci0JQXNzZXJ0KEluUmVjb3ZlcnkgfHwgIVhMb2dSZWNQdHJJc1ZhbGlkKHJlY3B0cikpOwotCUFz c2VydChJblJlY292ZXJ5IHx8IFBhZ2VJc0FsbFZpc2libGUoQnVmZmVyR2V0UGFnZShoZWFwQnVm KSkpOwotCUFzc2VydCgoZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpID09IGZsYWdz KTsKLQotCS8qIE11c3QgbmV2ZXIgc2V0IGFsbF9mcm96ZW4gYml0IHdpdGhvdXQgYWxzbyBzZXR0 aW5nIGFsbF92aXNpYmxlIGJpdCAqLwotCUFzc2VydChmbGFncyAhPSBWSVNJQklMSVRZTUFQX0FM TF9GUk9aRU4pOwotCi0JLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBoZWFwIHBhZ2Ug cGlubmVkLCBpZiBwcmVzZW50ICovCi0JaWYgKEJ1ZmZlcklzVmFsaWQoaGVhcEJ1ZikgJiYgQnVm ZmVyR2V0QmxvY2tOdW1iZXIoaGVhcEJ1ZikgIT0gaGVhcEJsaykKLQkJZWxvZyhFUlJPUiwgIndy b25nIGhlYXAgYnVmZmVyIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOwotCi0JQXNzZXJ0 KCFCdWZmZXJJc1ZhbGlkKGhlYXBCdWYpIHx8Ci0JCSAgIEJ1ZmZlcklzTG9ja2VkQnlNZUluTW9k ZShoZWFwQnVmLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpKTsKLQotCS8qIENoZWNrIHRoYXQgd2Ug aGF2ZSB0aGUgcmlnaHQgVk0gcGFnZSBwaW5uZWQgKi8KLQlpZiAoIUJ1ZmZlcklzVmFsaWQodm1C dWYpIHx8IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHZtQnVmKSAhPSBtYXBCbG9jaykKLQkJZWxvZyhF UlJPUiwgIndyb25nIFZNIGJ1ZmZlciBwYXNzZWQgdG8gdmlzaWJpbGl0eW1hcF9zZXQiKTsKLQot CXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtQnVmKTsKLQltYXAgPSAodWludDggKikgUGFnZUdldENv bnRlbnRzKHBhZ2UpOwotCUxvY2tCdWZmZXIodm1CdWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7 Ci0KLQlzdGF0dXMgPSAobWFwW21hcEJ5dGVdID4+IG1hcE9mZnNldCkgJiBWSVNJQklMSVRZTUFQ X1ZBTElEX0JJVFM7Ci0JaWYgKGZsYWdzICE9IHN0YXR1cykKLQl7Ci0JCVNUQVJUX0NSSVRfU0VD VElPTigpOwotCi0JCW1hcFttYXBCeXRlXSB8PSAoZmxhZ3MgPDwgbWFwT2Zmc2V0KTsKLQkJTWFy a0J1ZmZlckRpcnR5KHZtQnVmKTsKLQotCQlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWwpKQotCQl7 Ci0JCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHJlY3B0cikpCi0JCQl7Ci0JCQkJQXNzZXJ0KCFJ blJlY292ZXJ5KTsKLQkJCQlyZWNwdHIgPSBsb2dfaGVhcF92aXNpYmxlKHJlbCwgaGVhcEJ1Ziwg dm1CdWYsIGN1dG9mZl94aWQsIGZsYWdzKTsKLQotCQkJCS8qCi0JCQkJICogSWYgZGF0YSBjaGVj a3N1bXMgYXJlIGVuYWJsZWQgKG9yIHdhbF9sb2dfaGludHM9b24pLCB3ZQotCQkJCSAqIG5lZWQg dG8gcHJvdGVjdCB0aGUgaGVhcCBwYWdlIGZyb20gYmVpbmcgdG9ybi4KLQkJCQkgKgotCQkJCSAq IElmIG5vdCwgdGhlbiB3ZSBtdXN0ICpub3QqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLiBJ bgotCQkJCSAqIHRoaXMgY2FzZSwgdGhlIEZQSSBmb3IgdGhlIGhlYXAgcGFnZSB3YXMgb21pdHRl ZCBmcm9tIHRoZQotCQkJCSAqIFdBTCByZWNvcmQgaW5zZXJ0ZWQgYWJvdmUsIHNvIGl0IHdvdWxk IGJlIGluY29ycmVjdCB0bwotCQkJCSAqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLgotCQkJ CSAqLwotCQkJCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkpCi0JCQkJewotCQkJCQlQYWdlCQlo ZWFwUGFnZSA9IEJ1ZmZlckdldFBhZ2UoaGVhcEJ1Zik7Ci0KLQkJCQkJUGFnZVNldExTTihoZWFw UGFnZSwgcmVjcHRyKTsKLQkJCQl9Ci0JCQl9Ci0JCQlQYWdlU2V0TFNOKHBhZ2UsIHJlY3B0cik7 Ci0JCX0KLQotCQlFTkRfQ1JJVF9TRUNUSU9OKCk7Ci0JfQotCi0JTG9ja0J1ZmZlcih2bUJ1Ziwg QlVGRkVSX0xPQ0tfVU5MT0NLKTsKLQlyZXR1cm4gc3RhdHVzOwotfQotCiAvKgogICogU2V0IFZN ICh2aXNpYmlsaXR5IG1hcCkgZmxhZ3MgaW4gdGhlIFZNIGJsb2NrIGluIHZtQnVmLgogICoKQEAg LTM0NCw5ICsyNDAsOSBAQCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVt YmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAogICogcmxvY2F0b3IgaXMgdXNlZCBvbmx5IGZv ciBkZWJ1Z2dpbmcgbWVzc2FnZXMuCiAgKi8KIHVpbnQ4Ci12aXNpYmlsaXR5bWFwX3NldF92bWJp dHMoQmxvY2tOdW1iZXIgaGVhcEJsaywKLQkJCQkJCSBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdz LAotCQkJCQkJIGNvbnN0IFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKQordmlzaWJpbGl0eW1hcF9z ZXQoQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkgIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3Ms CisJCQkJICBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRvcikKIHsKIAlCbG9ja051bWJlciBt YXBCbG9jayA9IEhFQVBCTEtfVE9fTUFQQkxPQ0soaGVhcEJsayk7CiAJdWludDMyCQltYXBCeXRl ID0gSEVBUEJMS19UT19NQVBCWVRFKGhlYXBCbGspOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mv aGVhcGRlc2MuYwppbmRleCBjYTI2ZDFmMGVkMS4uMDg0NjFmZGY1OTMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCkBAIC0zNDksMTMgKzM0OSw2IEBAIGhlYXAyX2Rlc2Mo U3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJfQogCQl9CiAJfQot CWVsc2UgaWYgKGluZm8gPT0gWExPR19IRUFQMl9WSVNJQkxFKQotCXsKLQkJeGxfaGVhcF92aXNp YmxlICp4bHJlYyA9ICh4bF9oZWFwX3Zpc2libGUgKikgcmVjOwotCi0JCWFwcGVuZFN0cmluZ0lu Zm8oYnVmLCAic25hcHNob3RDb25mbGljdEhvcml6b246ICV1LCBmbGFnczogMHglMDJYIiwKLQkJ CQkJCSB4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sIHhscmVjLT5mbGFncyk7Ci0JfQog CWVsc2UgaWYgKGluZm8gPT0gWExPR19IRUFQMl9NVUxUSV9JTlNFUlQpCiAJewogCQl4bF9oZWFw X211bHRpX2luc2VydCAqeGxyZWMgPSAoeGxfaGVhcF9tdWx0aV9pbnNlcnQgKikgcmVjOwpAQCAt NDYxLDkgKzQ1NCw2IEBAIGhlYXAyX2lkZW50aWZ5KHVpbnQ4IGluZm8pCiAJCWNhc2UgWExPR19I RUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUDoKIAkJCWlkID0gIlBSVU5FX1ZBQ1VVTV9DTEVBTlVQ IjsKIAkJCWJyZWFrOwotCQljYXNlIFhMT0dfSEVBUDJfVklTSUJMRToKLQkJCWlkID0gIlZJU0lC TEUiOwotCQkJYnJlYWs7CiAJCWNhc2UgWExPR19IRUFQMl9NVUxUSV9JTlNFUlQ6CiAJCQlpZCA9 ICJNVUxUSV9JTlNFUlQiOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9kZWNvZGUuYwppbmRleCA1ZTE1Y2IxODI1ZS4uYzBjYWM3ZWExYzMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpAQCAtNDU0LDcgKzQ1NCw2IEBAIGhlYXAyX2Rl Y29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikK IAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5FX09OX0FDQ0VTUzoKIAkJY2FzZSBYTE9HX0hFQVAyX1BS VU5FX1ZBQ1VVTV9TQ0FOOgogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX0NMRUFOVVA6 Ci0JCWNhc2UgWExPR19IRUFQMl9WSVNJQkxFOgogCQljYXNlIFhMT0dfSEVBUDJfTE9DS19VUERB VEVEOgogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9zdGFuZGJ5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKaW5k ZXggZmM0NWQ3MmM3OWIuLjM2NTUzNThlZDZiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5j CkBAIC00NzUsMTIgKzQ3NSwxMiBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hv dChUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAogCSAqIElmIHdlIGdldCBw YXNzZWQgSW52YWxpZFRyYW5zYWN0aW9uSWQgdGhlbiB3ZSBkbyBub3RoaW5nIChubyBjb25mbGlj dCkuCiAJICoKIAkgKiBUaGlzIGNhbiBoYXBwZW4gd2hlbiByZXBsYXlpbmcgYWxyZWFkeS1hcHBs aWVkIFdBTCByZWNvcmRzIGFmdGVyIGEKLQkgKiBzdGFuZGJ5IGNyYXNoIG9yIHJlc3RhcnQsIG9y IHdoZW4gcmVwbGF5aW5nIGFuIFhMT0dfSEVBUDJfVklTSUJMRQotCSAqIHJlY29yZCB0aGF0IG1h cmtzIGFzIGZyb3plbiBhIHBhZ2Ugd2hpY2ggd2FzIGFscmVhZHkgYWxsLXZpc2libGUuICBJdCdz Ci0JICogYWxzbyBxdWl0ZSBjb21tb24gd2l0aCByZWNvcmRzIGdlbmVyYXRlZCBkdXJpbmcgaW5k ZXggZGVsZXRpb24KLQkgKiAob3JpZ2luYWwgZXhlY3V0aW9uIG9mIHRoZSBkZWxldGlvbiBjYW4g cmVhc29uIHRoYXQgYSByZWNvdmVyeSBjb25mbGljdAotCSAqIHdoaWNoIGlzIHN1ZmZpY2llbnQg Zm9yIHRoZSBkZWxldGlvbiBvcGVyYXRpb24gbXVzdCB0YWtlIHBsYWNlIGJlZm9yZQotCSAqIHJl cGxheSBvZiB0aGUgZGVsZXRpb24gcmVjb3JkIGl0c2VsZikuCisJICogc3RhbmRieSBjcmFzaCBv ciByZXN0YXJ0LCBvciB3aGVuIHJlcGxheWluZyBhIHJlY29yZCB0aGF0IG1hcmtzIGFzCisJICog ZnJvemVuIGEgcGFnZSB3aGljaCB3YXMgYWxyZWFkeSBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhl IHZpc2liaWxpdHkKKwkgKiBtYXAuICBJdCdzIGFsc28gcXVpdGUgY29tbW9uIHdpdGggcmVjb3Jk cyBnZW5lcmF0ZWQgZHVyaW5nIGluZGV4CisJICogZGVsZXRpb24gKG9yaWdpbmFsIGV4ZWN1dGlv biBvZiB0aGUgZGVsZXRpb24gY2FuIHJlYXNvbiB0aGF0IGEgcmVjb3ZlcnkKKwkgKiBjb25mbGlj dCB3aGljaCBpcyBzdWZmaWNpZW50IGZvciB0aGUgZGVsZXRpb24gb3BlcmF0aW9uIG11c3QgdGFr ZSBwbGFjZQorCSAqIGJlZm9yZSByZXBsYXkgb2YgdGhlIGRlbGV0aW9uIHJlY29yZCBpdHNlbGYp LgogCSAqLwogCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoc25hcHNob3RDb25mbGljdEhvcml6 b24pKQogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hs b2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IDE2YzJiMmUzYzlj Li42OTY3ODE4NzgzMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9n LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTYwLDcgKzYwLDYg QEAKICNkZWZpbmUgWExPR19IRUFQMl9QUlVORV9PTl9BQ0NFU1MJCTB4MTAKICNkZWZpbmUgWExP R19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTgkweDIwCiAjZGVmaW5lIFhMT0dfSEVBUDJfUFJVTkVf VkFDVVVNX0NMRUFOVVAJMHgzMAotI2RlZmluZSBYTE9HX0hFQVAyX1ZJU0lCTEUJCTB4NDAKICNk ZWZpbmUgWExPR19IRUFQMl9NVUxUSV9JTlNFUlQgMHg1MAogI2RlZmluZSBYTE9HX0hFQVAyX0xP Q0tfVVBEQVRFRCAweDYwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTkVXX0NJRAkJMHg3MApAQCAtMjk0 LDcgKzI5MywxMyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3BydW5lCiAKICNkZWZpbmUgU2l6 ZU9mSGVhcFBydW5lIChvZmZzZXRvZih4bF9oZWFwX3BydW5lLCBmbGFncykgKyBzaXplb2YodWlu dDE2KSkKIAotLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsIGRl Y29kaW5nIG9uIHN0YW5kYnkgKi8KKy8qCisgKiBUbyBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3Qg ZHVyaW5nIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSwgd2UgbXVzdCBrbm93CisgKiBpZiB0 aGUgdGFibGUgaXMgYSBjYXRhbG9nIHRhYmxlLiBOb3RlIHRoYXQgaW4gdmlzaWJpbGl0eW1hcGRl ZnMuaAorICogVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMIGlzIGFsc28gZGVmaW5lZCBh cyAoMSA8PCAyKS4geGxfaGVhcF9wcnVuZQorICogcmVjb3JkcyBzaG91bGQgdXNlIFhMSFBfSVNf Q0FUQUxPR19SRUwsIG5vdCBWSVNJQklMSVlUTUFQX1hMT0dfQ0FUQUxPR19SRUwgLS0KKyAqIGV2 ZW4gaWYgdGhleSBvbmx5IGNvbnRhaW4gdXBkYXRlcyB0byB0aGUgVk0uCisgKi8KICNkZWZpbmUJ CVhMSFBfSVNfQ0FUQUxPR19SRUwJCQkoMSA8PCAxKQogCiAvKgpAQCAtNDQzLDIwICs0NDgsNiBA QCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX2lucGxhY2UKIAogI2RlZmluZSBNaW5TaXplT2ZIZWFw SW5wbGFjZQkob2Zmc2V0b2YoeGxfaGVhcF9pbnBsYWNlLCBubXNncykgKyBzaXplb2YoaW50KSkK IAotLyoKLSAqIFRoaXMgaXMgd2hhdCB3ZSBuZWVkIHRvIGtub3cgYWJvdXQgc2V0dGluZyBhIHZp c2liaWxpdHkgbWFwIGJpdAotICoKLSAqIEJhY2t1cCBibGsgMDogdmlzaWJpbGl0eSBtYXAgYnVm ZmVyCi0gKiBCYWNrdXAgYmxrIDE6IGhlYXAgYnVmZmVyCi0gKi8KLXR5cGVkZWYgc3RydWN0IHhs X2hlYXBfdmlzaWJsZQotewotCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247 Ci0JdWludDgJCWZsYWdzOwotfSB4bF9oZWFwX3Zpc2libGU7Ci0KLSNkZWZpbmUgU2l6ZU9mSGVh cFZpc2libGUgKG9mZnNldG9mKHhsX2hlYXBfdmlzaWJsZSwgZmxhZ3MpICsgc2l6ZW9mKHVpbnQ4 KSkKLQogdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9uZXdfY2lkCiB7CiAJLyoKQEAgLTUwMCwxMSAr NDkxLDYgQEAgZXh0ZXJuIHZvaWQgaGVhcDJfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRl clN0YXRlICpyZWNvcmQpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmhlYXAyX2lkZW50aWZ5KHVpbnQ4 IGluZm8pOwogZXh0ZXJuIHZvaWQgaGVhcF94bG9nX2xvZ2ljYWxfcmV3cml0ZShYTG9nUmVhZGVy U3RhdGUgKnIpOwogCi1leHRlcm4gWExvZ1JlY1B0ciBsb2dfaGVhcF92aXNpYmxlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGhlYXBfYnVmZmVyLAotCQkJCQkJCQkgICBCdWZmZXIgdm1fYnVmZmVyLAot CQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAotCQkJCQkJ CQkgICB1aW50OCB2bWZsYWdzKTsKLQogLyogaW4gaGVhcGRlc2MuYywgc28gaXQgY2FuIGJlIHNo YXJlZCBiZXR3ZWVuIGZyb250ZW5kL2JhY2tlbmQgY29kZSAqLwogZXh0ZXJuIHZvaWQgaGVhcF94 bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9mcmVlemUoY2hhciAqY3Vyc29yLCB1aW50MTYgZmxh Z3MsCiAJCQkJCQkJCQkJCQkgICBpbnQgKm5wbGFucywgeGxocF9mcmVlemVfcGxhbiAqKnBsYW5z LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKaW5kZXggYzZmYTM3YmU5NjguLjA1YmE2Nzg2 YjQ3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKQEAgLTE1LDcgKzE1LDYgQEAKICNk ZWZpbmUgVklTSUJJTElUWU1BUF9ICiAKICNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcGRl ZnMuaCIKLSNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Js b2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWYuaCIKICNpbmNsdWRlICJzdG9yYWdlL3JlbGZp bGVsb2NhdG9yLmgiCkBAIC0zMiwxNSArMzEsOSBAQCBleHRlcm4gYm9vbCB2aXNpYmlsaXR5bWFw X2NsZWFyKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKIGV4dGVybiB2b2lkIHZp c2liaWxpdHltYXBfcGluKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKIAkJCQkJ CQkgIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJuIGJvb2wgdmlzaWJpbGl0eW1hcF9waW5fb2soQmxv Y2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIHZtYnVmKTsKLWV4dGVybiB1aW50OCB2aXNpYmlsaXR5 bWFwX3NldChSZWxhdGlvbiByZWwsCi0JCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVm ZmVyIGhlYXBCdWYsCi0JCQkJCQkJICAgWExvZ1JlY1B0ciByZWNwdHIsCi0JCQkJCQkJICAgQnVm ZmVyIHZtQnVmLAotCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkJCQkg ICB1aW50OCBmbGFncyk7Ci1leHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKEJs b2NrTnVtYmVyIGhlYXBCbGssCi0JCQkJCQkJCQkgIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3Ms Ci0JCQkJCQkJCQkgIGNvbnN0IFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKTsKK2V4dGVybiB1aW50 OCB2aXNpYmlsaXR5bWFwX3NldChCbG9ja051bWJlciBoZWFwQmxrLAorCQkJCQkJCSAgIEJ1ZmZl ciB2bUJ1ZiwgdWludDggZmxhZ3MsCisJCQkJCQkJICAgY29uc3QgUmVsRmlsZUxvY2F0b3Igcmxv Y2F0b3IpOwogZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyhSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJuIHZvaWQgdmlz aWJpbGl0eW1hcF9jb3VudChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyICphbGxfdmlzaWJsZSwg QmxvY2tOdW1iZXIgKmFsbF9mcm96ZW4pOwogZXh0ZXJuIEJsb2NrTnVtYmVyIHZpc2liaWxpdHlt YXBfcHJlcGFyZV90cnVuY2F0ZShSZWxhdGlvbiByZWwsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmls aXR5bWFwZGVmcy5oCmluZGV4IDVhZDVjMDIwODc3Li5lMDFiY2U0Yzk5ZiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKKysrIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKQEAgLTIxLDE0ICsyMSw1IEBACiAjZGVmaW5lIFZJ U0lCSUxJVFlNQVBfQUxMX0ZST1pFTgkweDAyCiAjZGVmaW5lIFZJU0lCSUxJVFlNQVBfVkFMSURf QklUUwkweDAzCS8qIE9SIG9mIGFsbCB2YWxpZCB2aXNpYmlsaXR5bWFwCiAJCQkJCQkJCQkJCSAq IGZsYWdzIGJpdHMgKi8KLS8qCi0gKiBUbyBkZXRlY3QgcmVjb3ZlcnkgY29uZmxpY3RzIGR1cmlu ZyBsb2dpY2FsIGRlY29kaW5nIG9uIGEgc3RhbmRieSwgd2UgbmVlZAotICogdG8ga25vdyBpZiBh IHRhYmxlIGlzIGEgdXNlciBjYXRhbG9nIHRhYmxlLiBGb3IgdGhhdCB3ZSBhZGQgYW4gYWRkaXRp b25hbAotICogYml0IGludG8geGxfaGVhcF92aXNpYmxlLmZsYWdzLCBpbiBhZGRpdGlvbiB0byB0 aGUgYWJvdmUuCi0gKgotICogTkI6IFZJU0lCSUxJVFlNQVBfWExPR18qIG1heSBub3QgYmUgcGFz c2VkIHRvIHZpc2liaWxpdHltYXBfc2V0KCkuCi0gKi8KLSNkZWZpbmUgVklTSUJJTElUWU1BUF9Y TE9HX0NBVEFMT0dfUkVMCTB4MDQKLSNkZWZpbmUgVklTSUJJTElUWU1BUF9YTE9HX1ZBTElEX0JJ VFMJKFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyB8IFZJU0lCSUxJVFlNQVBfWExPR19DQVRBTE9H X1JFTCkKIAogI2VuZGlmCQkJCQkJCS8qIFZJU0lCSUxJVFlNQVBERUZTX0ggKi8KZGlmZiAtLWdp dCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKaW5kZXggMDQ4NDVkNWU2ODAuLjY1MDU2MjgxMjBjIDEwMDY0NAotLS0g YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdApAQCAtNDMzMSw3ICs0MzMxLDYgQEAgeGxfaGVhcF9wcnVuZQogeGxf aGVhcF9yZXdyaXRlX21hcHBpbmcKIHhsX2hlYXBfdHJ1bmNhdGUKIHhsX2hlYXBfdXBkYXRlCi14 bF9oZWFwX3Zpc2libGUKIHhsX2ludmFsaWRfcGFnZQogeGxfaW52YWxpZF9wYWdlX2tleQogeGxf aW52YWxpZGF0aW9ucwotLSAKMi40My4wCgo= --00000000000028078b064614a599 Content-Type: text/x-patch; charset="UTF-8"; name="v27-0009-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Disposition: attachment; filename="v27-0009-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8ttaki8 RnJvbSBkMzAxMTE3ZjUyZDZhNmU3OGZiZGFmYmJiMmMwYzRkZDYyYjViODYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM4OjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjcgMDkvMTRdIFVzZSBHbG9iYWxWaXNTdGF0ZSBpbiB2YWN1dW0gdG8gZGV0ZXJtaW5l IHBhZ2UKIGxldmVsIHZpc2liaWxpdHkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0 ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQK CkR1cmluZyB2YWN1dW0ncyBmaXJzdCBhbmQgdGhpcmQgcGhhc2VzLCB3ZSBleGFtaW5lIHR1cGxl cycgdmlzaWJpbGl0eQp0byBkZXRlcm1pbmUgaWYgd2UgY2FuIHNldCB0aGUgcGFnZSBhbGwtdmlz aWJsZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCgpQcmV2aW91c2x5LCB0aGlzIGNoZWNrIGNvbXBh cmVkIHR1cGxlIHhtaW5zIGFnYWluc3QgYSBzaW5nbGUgWElEIGNob3NlbiBhdAp0aGUgc3RhcnQg b2YgdmFjdXVtIChPbGRlc3RYbWluKS4gV2Ugbm93IHVzZSBHbG9iYWxWaXNTdGF0ZSwgd2hpY2gg YWxzbwplbmFibGVzIGZ1dHVyZSB3b3JrIHRvIHNldCB0aGUgVk0gZHVyaW5nIG9uLWFjY2VzcyBw cnVuaW5nLCBzaW5jZSBvcmRpbmFyeQpxdWVyaWVzIGhhdmUgYWNjZXNzIHRvIEdsb2JhbFZpc1N0 YXRlIGJ1dCBub3QgT2xkZXN0WG1pbi4KClRoaXMgYWxzbyBiZW5lZml0cyB2YWN1dW0gZGlyZWN0 bHk6IGluIHNvbWUgY2FzZXMsIEdsb2JhbFZpc1N0YXRlIG1heQphZHZhbmNlIGR1cmluZyBhIHZh Y3V1bSwgYWxsb3dpbmcgbW9yZSBwYWdlcyB0byBiZWNvbWUgY29uc2lkZXJlZAphbGwtdmlzaWJs ZS4gQW5kLCBpbiB0aGUgZnV0dXJlLCB3ZSBjb3VsZCBlYXNpbHkgYWRkIGEgaGV1cmlzdGljIHRv CnVwZGF0ZSBHbG9iYWxWaXNTdGF0ZSBtb3JlIGZyZXF1ZW50bHkgZHVyaW5nIHZhY3V1bXMgb2Yg bGFyZ2UgdGFibGVzLiBJbgp0aGUgcmFyZSBjYXNlIHRoYXQgdGhlIEdsb2JhbFZpc1N0YXRlIG1v dmVzIGJhY2t3YXJkLCB2YWN1dW0gZmFsbHMgYmFjawp0byBPbGRlc3RYbWluIHRvIGVuc3VyZSB3 ZSBkb27igJl0IGF0dGVtcHQgdG8gZnJlZXplIGEgZGVhZCB0dXBsZSB0aGF0Cndhc27igJl0IHll dCBwcnVuYWJsZSBhY2NvcmRpbmcgdG8gdGhlIEdsb2JhbFZpc1N0YXRlLgoKQmVjYXVzZSBjb21w YXJpbmcgYSB0cmFuc2FjdGlvbiBJRCBhZ2FpbnN0IEdsb2JhbFZpc1N0YXRlIGlzIG1vcmUKZXhw ZW5zaXZlIHRoYW4gY29tcGFyaW5nIGFnYWluc3QgYSBzaW5nbGUgWElELCB3ZSBkZWZlciB0aGlz IGNoZWNrIHVudGlsCmFmdGVyIHNjYW5uaW5nIGFsbCB0dXBsZXMgb24gdGhlIHBhZ2UuIElmIHZp c2liaWxpdHlfY3V0b2ZmX3hpZCB3YXMKbWFpbnRhaW5lZCwgd2UgcGVyZm9ybSB0aGUgR2xvYmFs VmlzU3RhdGUgY2hlY2sgb25seSBvbmNlIHBlciBwYWdlLgpUaGlzIGlzIHNhZmUgYmVjYXVzZSB2 aXNpYmlsaXR5X2N1dG9mZl94aWQgcmVjb3JkcyB0aGUgbmV3ZXN0IHhtaW4gb24KdGhlIHBhZ2U7 IGlmIGl0IGlzIGdsb2JhbGx5IHZpc2libGUsIHRoZW4gdGhlIGVudGlyZSBwYWdlIGlzIGFsbC12 aXNpYmxlLgoKVGhpcyBhcHByb2FjaCBtYXkgcmVzdWx0IGluIGV4YW1pbmluZyBtb3JlIHR1cGxl IHhtaW5zIHRoYW4gYmVmb3JlLApzaW5jZSB3aXRoIE9sZGVzdFhtaW4gd2UgY291bGQgc29tZXRp bWVzIHJ1bGUgb3V0IHRoZSBwYWdlIGJlaW5nCmFsbC12aXNpYmxlIGVhcmxpZXIuIEhvd2V2ZXIs IHByb2ZpbGluZyBzaG93cyB0aGUgYWRkaXRpb25hbCBjb3N0IGlzIG5vdApzaWduaWZpY2FudC4K ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmlld2Vk LWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMgfCA1MCArKysrKysrKysrKysrKysrKysrKysK IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgICAgfCA0MyArKysrKysr Ky0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgICAg fCAxMCArKy0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgICB8 IDEzICsrKy0tLQogNCBmaWxlcyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJp bGl0eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYwppbmRl eCAwNWY2OTQ2ZmU2MC4uNmJjZDhiNmQwMTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX3Zpc2liaWxpdHkuYwpAQCAtMTE4OSw2ICsxMTg5LDU2IEBAIEhlYXBUdXBsZVNhdGlz Zmllc1ZhY3V1bShIZWFwVHVwbGUgaHR1cCwgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAogCXJl dHVybiByZXM7CiB9CiAKKy8qCisgKiBXcmFwcGVyIGFyb3VuZCBHbG9iYWxWaXNUZXN0SXNSZW1v dmFibGVYaWQoKSBmb3IgdXNlIHdoZW4gZXhhbWluaW5nIGxpdmUKKyAqIHR1cGxlcy4gUmV0dXJu cyB0cnVlIGlmIHRoZSBnaXZlbiBYSUQgaXMgbm8gbG9uZ2VyIGNvbnNpZGVyZWQgcnVubmluZyBi eQorICogYW55IHNuYXBzaG90LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gYWxvbmUgaXMgaW5zdWZm aWNpZW50IHRvIGRldGVybWluZSB0dXBsZSB2aXNpYmlsaXR5OyBjYWxsZXJzCisgKiBtdXN0IGFs c28gY29uc2lkZXIgdGhlIHR1cGxl4oCZcyBjb21taXQgc3RhdHVzLiBJdHMgcHVycG9zZSBpcyBw dXJlbHkKKyAqIHNlbWFudGljOiB3aGVuIGFwcGxpZWQgdG8gbGl2ZSB0dXBsZXMsIEdsb2JhbFZp c1Rlc3RJc1JlbW92YWJsZVhpZCgpIGlzCisgKiBjaGVja2luZyB3aGV0aGVyIHRoZSBpbnNlcnRp bmcgdHJhbnNhY3Rpb24gaXMgc3RpbGwgY29uc2lkZXJlZCBydW5uaW5nLAorICogbm90IHdoZXRo ZXIgdGhlIHR1cGxlIGlzIHJlbW92YWJsZS4gTGl2ZSB0dXBsZXMgYXJlLCBieSBkZWZpbml0aW9u LCBub3QKKyAqIHJlbW92YWJsZSwgYnV0IHRoZSBzbmFwc2hvdCBjcml0ZXJpYSBmb3Ig4oCcdHJh bnNhY3Rpb24gc3RpbGwgcnVubmluZ+KAnSBhcmUKKyAqIGlkZW50aWNhbCB0byB0aG9zZSB1c2Vk IGZvciBkZWxldGlvbiBYSURzLgorICoKKyAqIFNlZSB0aGUgY29tbWVudCBhYm92ZSBHbG9iYWxW aXNUZXN0SXNSZW1vdmFibGVbRnVsbF1YaWQoKSBmb3IgZGV0YWlscyBvbiB0aGUKKyAqIHJlcXVp cmVkIHByZWNvbmRpdGlvbnMgZm9yIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KKyAqLworYm9vbAor R2xvYmFsVmlzVGVzdFhpZE5vdFJ1bm5pbmcoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBUcmFuc2Fj dGlvbklkIHhpZCkKK3sKKwlyZXR1cm4gR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHN0YXRl LCB4aWQpOworfQorCisvKgorICogTmVhcmx5IHRoZSBzYW1lIGFzIEhlYXBUdXBsZVNhdGlzZmll c1ZhY3V1bSwgYnV0IHVzZXMgYSBHbG9iYWxWaXNTdGF0ZSB0bworICogZGV0ZXJtaW5lIHdoZXRo ZXIgb3Igbm90IGEgdHVwbGUgaXMgSEVBUFRVUExFX0RFQUQgT3IKKyAqIEhFQVBUVVBMRV9SRUNF TlRMWV9ERUFELiBJdCBzZXJ2ZXMgdGhlIHNhbWUgcHVycG9zZSBidXQgY2FuIGJlIHVzZWQgYnkK KyAqIGNhbGxlcnMgdGhhdCBoYXZlIG5vdCBjYWxjdWxhdGVkIGEgc2luZ2xlIE9sZGVzdFhtaW4g dmFsdWUuCisgKi8KK0hUU1ZfUmVzdWx0CitIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW1HbG9iYWxW aXMoSGVhcFR1cGxlIGh0dXAsIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0LAorCQkJCQkJCQkgIEJ1 ZmZlciBidWZmZXIpCit7CisJVHJhbnNhY3Rpb25JZCBkZWFkX2FmdGVyID0gSW52YWxpZFRyYW5z YWN0aW9uSWQ7CisJSFRTVl9SZXN1bHQgcmVzOworCisJcmVzID0gSGVhcFR1cGxlU2F0aXNmaWVz VmFjdXVtSG9yaXpvbihodHVwLCBidWZmZXIsICZkZWFkX2FmdGVyKTsKKworCWlmIChyZXMgPT0g SEVBUFRVUExFX1JFQ0VOVExZX0RFQUQpCisJeworCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFs aWQoZGVhZF9hZnRlcikpOworCisJCWlmIChHbG9iYWxWaXNUZXN0WGlkTm90UnVubmluZyh2aXN0 ZXN0LCBkZWFkX2FmdGVyKSkKKwkJCXJlcyA9IEhFQVBUVVBMRV9ERUFEOworCX0KKwllbHNlCisJ CUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRlcikpOworCisJcmV0dXJuIHJl czsKK30KKwogLyoKICAqIFdvcmsgaG9yc2UgZm9yIEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bSBh bmQgc2ltaWxhciByb3V0aW5lcy4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmlu ZGV4IDg1Njg1ODdhZjRhLi4wOGZmZTUxMWQwMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMKQEAgLTQ2MSwxMSArNDYxLDEyIEBAIHBydW5lX2ZyZWV6ZV9zZXR1cChQcnVuZUZyZWV6 ZVBhcmFtcyAqcGFyYW1zLAogCiAJLyoKIAkgKiBUaGUgdmlzaWJpbGl0eSBjdXRvZmYgeGlkIGlz IHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlLCBjb21taXR0ZWQgdHVwbGVzCi0JICogb2xkZXIgdGhh biBPbGRlc3RYbWluIG9uIHRoZSBwYWdlLiBUaGlzIGZpZWxkIGlzIG9ubHkga2VwdCB1cC10by1k YXRlCi0JICogaWYgdGhlIHBhZ2UgaXMgYWxsLXZpc2libGUuIEFzIHNvb24gYXMgYSB0dXBsZSBp cyBlbmNvdW50ZXJlZCB0aGF0IGlzCi0JICogbm90IHZpc2libGUgdG8gYWxsLCB0aGlzIGZpZWxk IGlzIHVubWFpbnRhaW5lZC4gQXMgbG9uZyBhcyBpdCBpcwotCSAqIG1haW50YWluZWQsIGl0IGNh biBiZSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbgotCSAq IHdoZW4gdXBkYXRpbmcgdGhlIFZNIGFuZC9vciBmcmVlemluZyBhbGwgdGhlIHR1cGxlcyBvbiB0 aGUgcGFnZS4KKwkgKiBvbiB0aGUgcGFnZSBvbGRlciB0aGFuIHRoZSB2aXNpYmlsaXR5IGhvcml6 b24gcmVwcmVzZW50ZWQgaW4gdGhlCisJICogR2xvYmFsVmlzU3RhdGUuIFRoaXMgZmllbGQgaXMg b25seSBrZXB0IHVwLXRvLWRhdGUgaWYgdGhlIHBhZ2UgaXMKKwkgKiBhbGwtdmlzaWJsZS4gQXMg c29vbiBhcyBhIHR1cGxlIGlzIGVuY291bnRlcmVkIHRoYXQgaXMgbm90IHZpc2libGUgdG8KKwkg KiBhbGwsIHRoaXMgZmllbGQgaXMgdW5tYWludGFpbmVkLiBBcyBsb25nIGFzIGl0IGlzIG1haW50 YWluZWQsIGl0IGNhbiBiZQorCSAqIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBzbmFwc2hvdCBjb25m bGljdCBob3Jpem9uIHdoZW4gdXBkYXRpbmcgdGhlIFZNCisJICogYW5kL29yIGZyZWV6aW5nIGFs bCB0aGUgdHVwbGVzIG9uIHRoZSBwYWdlLgogCSAqLwogCXByc3RhdGUtPnZpc2liaWxpdHlfY3V0 b2ZmX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogfQpAQCAtOTk0LDE0ICs5OTUsMTMgQEAg aGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFBydW5lU3RhdGUgKnByc3RhdGUsCiAgKi8KIHN0YXRpYyBi b29sCiBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAot CQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCSBHbG9iYWxWaXNTdGF0ZSAq dmlzdGVzdCwKIAkJCQkJCSBib29sICphbGxfZnJvemVuLAogCQkJCQkJIFRyYW5zYWN0aW9uSWQg KnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKIAkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2Zm bnVtKQogewogCi0JcmV0dXJuIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShyZWwsIGJ1 ZiwKLQkJCQkJCQkJCQkgIE9sZGVzdFhtaW4sCisJcmV0dXJuIGhlYXBfcGFnZV93b3VsZF9iZV9h bGxfdmlzaWJsZShyZWwsIGJ1ZiwgdmlzdGVzdCwKIAkJCQkJCQkJCQkgIE5VTEwsIDAsCiAJCQkJ CQkJCQkJICBhbGxfZnJvemVuLAogCQkJCQkJCQkJCSAgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLApA QCAtMTA4OCw2ICsxMDg4LDE2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJl ZXplUGFyYW1zICpwYXJhbXMsCiAJcHJ1bmVfZnJlZXplX3BsYW4oUmVsYXRpb25HZXRSZWxpZChw YXJhbXMtPnJlbGF0aW9uKSwKIAkJCQkJICBidWZmZXIsICZwcnN0YXRlLCBvZmZfbG9jKTsKIAor CS8qCisJICogQWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdl LCBpZiB0aGUgbmV3ZXN0IHhtaW4KKwkgKiBhbW9uZ3N0IHRoZW0gaXMgbm90IHZpc2libGUgdG8g ZXZlcnlvbmUsIHRoZSBwYWdlIGNhbm5vdCBiZQorCSAqIGFsbC12aXNpYmxlLgorCSAqLworCWlm IChwcnN0YXRlLmFsbF92aXNpYmxlICYmCisJCVRyYW5zYWN0aW9uSWRJc05vcm1hbChwcnN0YXRl LnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkgJiYKKwkJIUdsb2JhbFZpc1Rlc3RYaWROb3RSdW5uaW5n KHByc3RhdGUudmlzdGVzdCwgcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQpKQorCQlwcnN0 YXRlLmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CisKIAkvKgogCSAq IElmIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCwgY2FsbGluZyBoZWFwX3BydW5lX3NhdGlzZmllc192 YWN1dW0oKSB3aGlsZQogCSAqIGNoZWNraW5nIHR1cGxlIHZpc2liaWxpdHkgaW5mb3JtYXRpb24g aW4gcHJ1bmVfZnJlZXplX3BsYW4oKSBtYXkgaGF2ZQpAQCAtMTI2OSwxMCArMTI3OSw5IEBAIGhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCWJv b2wJCWRlYnVnX2FsbF9mcm96ZW47CiAKIAkJQXNzZXJ0KHByc3RhdGUubHBkZWFkX2l0ZW1zID09 IDApOwotCQlBc3NlcnQocHJzdGF0ZS5jdXRvZmZzKTsKIAogCQlBc3NlcnQoaGVhcF9wYWdlX2lz X2FsbF92aXNpYmxlKHBhcmFtcy0+cmVsYXRpb24sIGJ1ZmZlciwKLQkJCQkJCQkJCQlwcnN0YXRl LmN1dG9mZnMtPk9sZGVzdFhtaW4sCisJCQkJCQkJCQkJcHJzdGF0ZS52aXN0ZXN0LAogCQkJCQkJ CQkJCSZkZWJ1Z19hbGxfZnJvemVuLAogCQkJCQkJCQkJCSZkZWJ1Z19jdXRvZmYsIG9mZl9sb2Mp KTsKIApAQCAtMTgwMSwyMCArMTgxMCw2IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9s cF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAJCQkJ ICovCiAJCQkJeG1pbiA9IEhlYXBUdXBsZUhlYWRlckdldFhtaW4oaHR1cCk7CiAKLQkJCQkvKgot CQkJCSAqIEZvciBub3cgYWx3YXlzIHVzZSBwcnN0YXRlLT5jdXRvZmZzIGZvciB0aGlzIHRlc3Qs IGJlY2F1c2UKLQkJCQkgKiB3ZSBvbmx5IHVwZGF0ZSAnYWxsX3Zpc2libGUnIGFuZCAnYWxsX2Zy b3plbicgd2hlbiBmcmVlemluZwotCQkJCSAqIGlzIHJlcXVlc3RlZC4gV2UgY291bGQgdXNlIEds b2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZAotCQkJCSAqIGluc3RlYWQsIGlmIGEgbm9uLWZyZWV6 aW5nIGNhbGxlciB3YW50ZWQgdG8gc2V0IHRoZSBWTSBiaXQuCi0JCQkJICovCi0JCQkJQXNzZXJ0 KHByc3RhdGUtPmN1dG9mZnMpOwotCQkJCWlmICghVHJhbnNhY3Rpb25JZFByZWNlZGVzKHhtaW4s IHByc3RhdGUtPmN1dG9mZnMtPk9sZGVzdFhtaW4pKQotCQkJCXsKLQkJCQkJcHJzdGF0ZS0+YWxs X3Zpc2libGUgPSBmYWxzZTsKLQkJCQkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwotCQkJ CQlicmVhazsKLQkJCQl9Ci0KIAkJCQkvKiBUcmFjayBuZXdlc3QgeG1pbiBvbiBwYWdlLiAqLwog CQkJCWlmIChUcmFuc2FjdGlvbklkRm9sbG93cyh4bWluLCBwcnN0YXRlLT52aXNpYmlsaXR5X2N1 dG9mZl94aWQpICYmCiAJCQkJCVRyYW5zYWN0aW9uSWRJc05vcm1hbCh4bWluKSkKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA4NzgyMGYzZmY0OS4uM2I4YzlkYmRiNGIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTI3MzAsNyArMjczMCw3IEBAIGxh enlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25v LCBCdWZmZXIgYnVmZmVyLAogCSAqIGRvbmUgb3V0c2lkZSB0aGUgY3JpdGljYWwgc2VjdGlvbi4K IAkgKi8KIAlpZiAoaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKHZhY3JlbC0+cmVsLCBi dWZmZXIsCi0JCQkJCQkJCQkgICB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwKKwkJCQkJCQkJ CSAgIHZhY3JlbC0+dmlzdGVzdCwKIAkJCQkJCQkJCSAgIGRlYWRvZmZzZXRzLCBudW1fb2Zmc2V0 cywKIAkJCQkJCQkJCSAgICZhbGxfZnJvemVuLCAmdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAogCQkJ CQkJCQkJICAgJnZhY3JlbC0+b2ZmbnVtKSkKQEAgLTM0OTEsNyArMzQ5MSw3IEBAIGRlYWRfaXRl bXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwpCiAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHBh Z2UgaXMgYWxsLXZpc2libGUgb3RoZXIgdGhhbiB0aGUgcHJvdmlkZWQKICAqIGRlYWRvZmZzZXRz IGFuZCBmYWxzZSBvdGhlcndpc2UuCiAgKgotICogT2xkZXN0WG1pbiBpcyB1c2VkIHRvIGRldGVy bWluZSB2aXNpYmlsaXR5LgorICogdmlzdGVzdCBpcyB1c2VkIHRvIGRldGVybWluZSB2aXNpYmls aXR5LgogICoKICAqIE91dHB1dCBwYXJhbWV0ZXJzOgogICoKQEAgLTM1MDcsNyArMzUwNyw3IEBA IGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwpCiAgKi8KIGJvb2wKIGhlYXBf cGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCi0JCQkJ CQkJICAgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJCSAgIEdsb2JhbFZpc1N0YXRl ICp2aXN0ZXN0LAogCQkJCQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCiAJCQkJCQkJ ICAgaW50IG5kZWFkb2Zmc2V0cywKIAkJCQkJCQkgICBib29sICphbGxfZnJvemVuLApAQCAtMzU4 MSw3ICszNTgxLDcgQEAgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJl bCwgQnVmZmVyIGJ1ZiwKIAogCQkvKiBWaXNpYmlsaXR5IGNoZWNrcyBtYXkgZG8gSU8gb3IgYWxs b2NhdGUgbWVtb3J5ICovCiAJCUFzc2VydChDcml0U2VjdGlvbkNvdW50ID09IDApOwotCQlzd2l0 Y2ggKEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bSgmdHVwbGUsIE9sZGVzdFhtaW4sIGJ1ZikpCisJ CXN3aXRjaCAoSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtR2xvYmFsVmlzKCZ0dXBsZSwgdmlzdGVz dCwgYnVmKSkKIAkJewogCQkJY2FzZSBIRUFQVFVQTEVfTElWRToKIAkJCQl7CkBAIC0zNjAwLDcg KzM2MDAsNyBAQCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBC dWZmZXIgYnVmLAogCQkJCQkgKiB0aGF0IGV2ZXJ5b25lIHNlZXMgaXQgYXMgY29tbWl0dGVkPwog CQkJCQkgKi8KIAkJCQkJeG1pbiA9IEhlYXBUdXBsZUhlYWRlckdldFhtaW4odHVwbGUudF9kYXRh KTsKLQkJCQkJaWYgKCFUcmFuc2FjdGlvbklkUHJlY2VkZXMoeG1pbiwgT2xkZXN0WG1pbikpCisJ CQkJCWlmICghR2xvYmFsVmlzVGVzdFhpZE5vdFJ1bm5pbmcodmlzdGVzdCwgeG1pbikpCiAJCQkJ CXsKIAkJCQkJCWFsbF92aXNpYmxlID0gZmFsc2U7CiAJCQkJCQkqYWxsX2Zyb3plbiA9IGZhbHNl OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUv YWNjZXNzL2hlYXBhbS5oCmluZGV4IDkxMDBkNDJjY2JiLi5lMmVlMDM1YWUwYiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW0uaApAQCAtMjcyLDEwICsyNzIsOSBAQCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVBh cmFtcwogCiAJLyoKIAkgKiBDb250YWlucyB0aGUgY3V0b2ZmcyB1c2VkIGZvciBmcmVlemluZy4g VGhleSBhcmUgcmVxdWlyZWQgaWYgdGhlCi0JICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBvcHRp b24gaXMgc2V0LiBjdXRvZmZzLT5PbGRlc3RYbWluIGlzIGFsc28gdXNlZAotCSAqIHRvIGRldGVy bWluZSBpZiBkZWFkIHR1cGxlcyBhcmUgSEVBUFRVUExFX1JFQ0VOVExZX0RFQUQgb3IKLQkgKiBI RUFQVFVQTEVfREVBRC4gQ3VycmVudGx5IG9ubHkgdmFjdXVtIHBhc3NlcyBpbiBjdXRvZmZzLiBW YWN1dW0KLQkgKiBjYWxjdWxhdGVzIHRoZW0gb25jZSwgYXQgdGhlIGJlZ2lubmluZyBvZiB2YWN1 dW1pbmcgdGhlIHJlbGF0aW9uLgorCSAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgb3B0aW9uIGlz IHNldC4gQ3VycmVudGx5IG9ubHkgdmFjdXVtIHBhc3NlcyBpbgorCSAqIGN1dG9mZnMuIFZhY3V1 bSBjYWxjdWxhdGVzIHRoZW0gb25jZSwgYXQgdGhlIGJlZ2lubmluZyBvZiB2YWN1dW1pbmcgdGhl CisJICogcmVsYXRpb24uCiAJICovCiAJc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnM7CiB9 IFBydW5lRnJlZXplUGFyYW1zOwpAQCAtNDM5LDcgKzQzOCw3IEBAIGV4dGVybiB2b2lkIGxvZ19o ZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiBl eHRlcm4gdm9pZCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLAogCQkJCQkJCWNvbnN0IFZh Y3V1bVBhcmFtcyBwYXJhbXMsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSk7CiBleHRl cm4gYm9vbCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZm ZXIgYnVmLAotCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCQkJ CQkgICBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIg KmRlYWRvZmZzZXRzLAogCQkJCQkJCQkJCSAgIGludCBuZGVhZG9mZnNldHMsCiAJCQkJCQkJCQkJ ICAgYm9vbCAqYWxsX2Zyb3plbiwKQEAgLTQ1Myw2ICs0NTIsMTAgQEAgZXh0ZXJuIFRNX1Jlc3Vs dCBIZWFwVHVwbGVTYXRpc2ZpZXNVcGRhdGUoSGVhcFR1cGxlIGh0dXAsIENvbW1hbmRJZCBjdXJj aWQsCiAJCQkJCQkJCQkJICBCdWZmZXIgYnVmZmVyKTsKIGV4dGVybiBIVFNWX1Jlc3VsdCBIZWFw VHVwbGVTYXRpc2ZpZXNWYWN1dW0oSGVhcFR1cGxlIGh0dXAsIFRyYW5zYWN0aW9uSWQgT2xkZXN0 WG1pbiwKIAkJCQkJCQkJCQkJQnVmZmVyIGJ1ZmZlcik7CisKK2V4dGVybiBib29sIEdsb2JhbFZp c1Rlc3RYaWROb3RSdW5uaW5nKEdsb2JhbFZpc1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4 aWQpOworZXh0ZXJuIEhUU1ZfUmVzdWx0IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUdsb2JhbFZp cyhIZWFwVHVwbGUgaHR1cCwKKwkJCQkJCQkJCQkJCQkgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3Qs IEJ1ZmZlciBidWZmZXIpOwogZXh0ZXJuIEhUU1ZfUmVzdWx0IEhlYXBUdXBsZVNhdGlzZmllc1Zh Y3V1bUhvcml6b24oSGVhcFR1cGxlIGh0dXAsIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCQkJCQkg ICBUcmFuc2FjdGlvbklkICpkZWFkX2FmdGVyKTsKIGV4dGVybiB2b2lkIEhlYXBUdXBsZVNldEhp bnRCaXRzKEhlYXBUdXBsZUhlYWRlciB0dXBsZSwgQnVmZmVyIGJ1ZmZlciwKLS0gCjIuNDMuMAoK --00000000000028078b064614a599 Content-Type: text/x-patch; charset="UTF-8"; name="v27-0010-Unset-all_visible-sooner-if-not-freezing.patch" Content-Disposition: attachment; filename="v27-0010-Unset-all_visible-sooner-if-not-freezing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8ttd4u9 RnJvbSBlM2RkMWRiODkzMWUwMGQwOWQxYzI5ZDM5OWY1NjQzNDE0NmJlYWIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE1OjIyOjM1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjcgMTAvMTRdIFVuc2V0IGFsbF92aXNpYmxlIHNvb25lciBpZiBub3QgZnJlZXppbmcK TUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkluIHRoZSBwcnVuZS9mcmVlemUgcGF0 aCwgd2UgY3VycmVudGx5IGRlbGF5IGNsZWFyaW5nIGFsbF92aXNpYmxlIGFuZAphbGxfZnJvemVu IGluIHRoZSBwcmVzZW5jZSBvZiBkZWFkIGl0ZW1zIHRvIGFsbG93IG9wcG9ydHVuaXN0aWMKZnJl ZXppbmcuCgpIb3dldmVyLCBpZiBubyBmcmVlemluZyB3aWxsIGJlIGF0dGVtcHRlZCwgdGhlcmXi gJlzIG5vIG5lZWQgdG8gZGVsYXkuCkNsZWFyaW5nIHRoZSBmbGFncyBlYXJsaWVyIGF2b2lkcyBl eHRyYSBib29ra2VlcGluZyBpbgpoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFs KCkuIFRoaXMgY3VycmVudGx5IGhhcyBubyBydW50aW1lCmVmZmVjdCBiZWNhdXNlIGFsbCBjYWxs ZXJzIHRoYXQgY29uc2lkZXIgc2V0dGluZyB0aGUgVk0gYWxzbyBwcmVwYXJlCmZyZWV6ZSBwbGFu cywgYnV0IHVwY29taW5nIGNoYW5nZXMgd2lsbCBhbGxvdyBvbi1hY2Nlc3MgcHJ1bmluZyB0byBz ZXQKdGhlIFZNIHdpdGhvdXQgZnJlZXppbmcuIFRoZSBleHRyYSBib29ra2VlcGluZyB3YXMgbm90 aWNlYWJsZSBpbiBhCnByb2ZpbGUgb2Ygb24tYWNjZXNzIFZNIHNldHRpbmcuCgpSZXZpZXdlZC1i eTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYyB8IDE1ICsrKysrKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQs IDEzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYwppbmRleCAwOGZmZTUxMWQwMy4uM2QzNDUzMmI3NjYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCkBAIC0xNjY3LDggKzE2NjcsMTMgQEAgaGVhcF9wcnVuZV9yZWNvcmRf ZGVhZChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtLAogCS8qCiAJICog RGVsaWJlcmF0ZWx5IGRlbGF5IHVuc2V0dGluZyBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB1 bnRpbCBsYXRlcgogCSAqIGR1cmluZyBwcnVuaW5nLiBSZW1vdmFibGUgZGVhZCB0dXBsZXMgc2hv dWxkbid0IHByZWNsdWRlIGZyZWV6aW5nIHRoZQotCSAqIHBhZ2UuCisJICogcGFnZS4gSWYgd2Ug d29uJ3QgYXR0ZW1wdCBmcmVlemluZywganVzdCB1bnNldCBhbGwtdmlzaWJsZSBub3csIHRob3Vn aC4KIAkgKi8KKwlpZiAoIXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQorCXsKKwkJcHJzdGF0ZS0+ YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOworCX0K IAogCS8qIFJlY29yZCB0aGUgZGVhZCBvZmZzZXQgZm9yIHZhY3V1bSAqLwogCXByc3RhdGUtPmRl YWRvZmZzZXRzW3Byc3RhdGUtPmxwZGVhZF9pdGVtcysrXSA9IG9mZm51bTsKQEAgLTE5MjcsOCAr MTkzMiwxNCBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfZGVhZChQYWdlIHBhZ2Us IFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlcgogCSAqIFNpbWlsYXJseSwgZG9uJ3Qg dW5zZXQgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gdW50aWwgbGF0ZXIsIGF0IHRoZQogCSAq IGVuZCBvZiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLiAgVGhpcyB3aWxsIGFsbG93IHVz IHRvIGF0dGVtcHQgdG8KIAkgKiBmcmVlemUgdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4gIEFzIGxv bmcgYXMgd2UgdW5zZXQgaXQgYmVmb3JlIHVwZGF0aW5nCi0JICogdGhlIHZpc2liaWxpdHkgbWFw LCB0aGlzIHdpbGwgYmUgY29ycmVjdC4KKwkgKiB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoaXMgd2ls bCBiZSBjb3JyZWN0LiBJZiB3ZSB3b24ndCBhdHRlbXB0IGZyZWV6aW5nLAorCSAqIHRob3VnaCwg anVzdCB1bnNldCBhbGwtdmlzaWJsZSBub3cuCiAJICovCisJaWYgKCFwcnN0YXRlLT5hdHRlbXB0 X2ZyZWV6ZSkKKwl7CisJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCXByc3RhdGUt PmFsbF9mcm96ZW4gPSBmYWxzZTsKKwl9CiAKIAkvKiBSZWNvcmQgdGhlIGRlYWQgb2Zmc2V0IGZv ciB2YWN1dW0gKi8KIAlwcnN0YXRlLT5kZWFkb2Zmc2V0c1twcnN0YXRlLT5scGRlYWRfaXRlbXMr K10gPSBvZmZudW07Ci0tIAoyLjQzLjAKCg== --00000000000028078b064614a599 Content-Type: text/x-patch; charset="US-ASCII"; name="v27-0011-Track-which-relations-are-modified-by-a-query.patch" Content-Disposition: attachment; filename="v27-0011-Track-which-relations-are-modified-by-a-query.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8ttg2i10 RnJvbSA0OGRhNDZmMjE5YWMzZjRjMDliNGNiNmRmMjNhMzE1NDQ5MjEwODdlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MDc6MjQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNyAxMS8xNF0gVHJhY2sgd2hpY2ggcmVsYXRpb25zIGFyZSBtb2RpZmllZCBieSBhIHF1 ZXJ5CgpTYXZlIHRoZSByZWxpZHMgaW4gYSBiaXRtYXAgaW4gdGhlIGVzdGF0ZS4gQSBsYXRlciBj b21taXQgd2lsbCBwYXNzIHRoaXMKaW5mb3JtYXRpb24gZG93biB0byBzY2FuIG5vZGVzIHRvIGNv bnRyb2wgd2hldGhlciBvciBub3QgdGhlIHNjYW4gYWxsb3dzCnNldHRpbmcgdGhlIHZpc2liaWxp dHkgbWFwIHdoaWxlIG9uLWFjY2VzcyBwcnVuaW5nLiBXZSBkb24ndCB3YW50IHRvIHNldAp0aGUg dmlzaWJpbGl0eSBtYXAgaWYgdGhlIHF1ZXJ5IGlzIGp1c3QgZ29pbmcgdG8gbW9kaWZ5IHRoZSBw YWdlCmltbWVkaWF0ZWx5IGFmdGVyLgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMgIHwgNCArKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyB8IDIgKysKIHNy Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgIHwgNiArKysrKysKIDMgZmlsZXMgY2hhbmdl ZCwgMTIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDc5N2Q4YjFj YTFjLi41YjI5OWVmODFhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC05MTYsNiArOTE2 LDEwIEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJCQli cmVhazsKIAkJCX0KIAorCQkJLyogSWYgaXQgaGFzIGEgcm93bWFyaywgdGhlIHJlbGF0aW9uIGlz IG1vZGlmaWVkICovCisJCQllc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyA9IGJtc19hZGRfbWVt YmVyKGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzLAorCQkJCQkJCQkJCQkJCQlyYy0+cnRpKTsK KwogCQkJLyogQ2hlY2sgdGhhdCByZWxhdGlvbiBpcyBhIGxlZ2FsIHRhcmdldCBmb3IgbWFya2lu ZyAqLwogCQkJaWYgKHJlbGF0aW9uKQogCQkJCUNoZWNrVmFsaWRSb3dNYXJrUmVsKHJlbGF0aW9u LCByYy0+bWFya1R5cGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0 aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwppbmRleCBmZGM2NWMyYjQy Yi4uMjhhMDZkY2QyNDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC04OTMsNiArODkz LDggQEAgRXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5m byAqcmVzdWx0UmVsSW5mbywKIAkJZXN0YXRlLT5lc19yZXN1bHRfcmVsYXRpb25zID0gKFJlc3Vs dFJlbEluZm8gKiopCiAJCQlwYWxsb2MwKGVzdGF0ZS0+ZXNfcmFuZ2VfdGFibGVfc2l6ZSAqIHNp emVvZihSZXN1bHRSZWxJbmZvICopKTsKIAllc3RhdGUtPmVzX3Jlc3VsdF9yZWxhdGlvbnNbcnRp IC0gMV0gPSByZXN1bHRSZWxJbmZvOworCWVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzID0gYm1z X2FkZF9tZW1iZXIoZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMsCisJCQkJCQkJCQkJCQlydGkp OwogCiAJLyoKIAkgKiBTYXZpbmcgaW4gdGhlIGxpc3QgYWxsb3dzIHRvIGF2b2lkIG5lZWRsZXNz bHkgdHJhdmVyc2luZyB0aGUgd2hvbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggMzk2ODQyOWY5 OTEuLmQ4YzM4NTIxNmUwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjc2LDYgKzY3NiwxMiBA QCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAkJCQkJCQkJCSAqIEV4ZWNEb0luaXRpYWxQcnVuaW5n KCkgKi8KIAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1 ZXJ5RGVzYyAqLwogCisJLyoKKwkgKiBSVCBpbmRleGVzIG9mIHJlbGF0aW9ucyBtb2RpZmllZCBi eSB0aGUgcXVlcnkgZWl0aGVyIHRocm91Z2gKKwkgKiBVUERBVEUvREVMRVRFL0lOU0VSVC9NRVJH RSBvciBTRUxFQ1QgRk9SIFVQREFURQorCSAqLworCUJpdG1hcHNldCAgKmVzX21vZGlmaWVkX3Jl bGlkczsKKwogCUp1bmtGaWx0ZXIgKmVzX2p1bmtGaWx0ZXI7CS8qIHRvcC1sZXZlbCBqdW5rIGZp bHRlciwgaWYgYW55ICovCiAKIAkvKiBJZiBxdWVyeSBjYW4gaW5zZXJ0L2RlbGV0ZSB0dXBsZXMs IHRoZSBjb21tYW5kIElEIHRvIG1hcmsgdGhlbSB3aXRoICovCi0tIAoyLjQzLjAKCg== --00000000000028078b064614a599 Content-Type: text/x-patch; charset="US-ASCII"; name="v27-0012-Pass-down-information-on-table-modification-to-s.patch" Content-Disposition: attachment; filename="v27-0012-Pass-down-information-on-table-modification-to-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8ttiqq11 RnJvbSAyYjM3MWNiZTI1MmUyNjJmMmZkZjY4YjlmNTA3ZjNkNWY0MDE2MjhlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MTI6MTggLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNyAxMi8xNF0gUGFzcyBkb3duIGluZm9ybWF0aW9uIG9uIHRhYmxlIG1vZGlmaWNhdGlv biB0byBzY2FuCiBub2RlCgpQYXNzIGRvd24gaW5mb3JtYXRpb24gdG8gc2VxdWVudGlhbCBzY2Fu LCBpbmRleCBzY2FuLCBhbmQgYml0bWFwIHRhYmxlCnNjYW4gbm9kZXMgb24gd2hldGhlciBvciBu b3QgdGhlIHF1ZXJ5IG1vZGlmaWVzIHRoZSByZWxhdGlvbiBiZWluZwpzY2FubmVkLiBBIGxhdGVy IGNvbW1pdCB3aWxsIHVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIHVwZGF0ZSB0aGUgVk0KZHVyaW5n IG9uLWFjY2VzcyBwcnVuaW5nIG9ubHkgaWYgdGhlIHJlbGF0aW9uIGlzIG5vdCBtb2RpZmllZCBi eSB0aGUKcXVlcnkuCi0tLQogY29udHJpYi9wZ3Jvd2xvY2tzL3Bncm93bG9ja3MuYyAgICAgICAg ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgfCAg MyArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgICAgICAgIHwgIDMgKyst CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICB8ICA3ICsrKy0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgICAgICAgICAgfCAgNCArKy0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jICAgICAgICB8ICA2ICsrKy0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RhYmxlL3RhYmxlYW0uYyAgICAgICAgfCAgNyArKystLS0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvbnN0cmFpbnQuYyAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHl0by5jICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jICAgICAgICAgIHwgIDggKysrLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNt ZHMuYyAgICAgICAgICAgfCAgNCArKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhp bmcuYyAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24u YyAgICB8ICA4ICsrKy0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nh bi5jIHwgIDkgKysrKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2Fu LmMgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyAgICAgIHwg MTEgKysrKysrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAg fCAyNiArKysrKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3Bh cnRib3VuZHMuYyAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMg ICAgICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggICAgICAgICAgICAg ICAgfCAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgfCAg NiArKysrKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgIHwgMTkg KysrKysrKysrKy0tLS0tLS0KIDIzIGZpbGVzIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDQ2 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdyb3dsb2Nrcy9wZ3Jvd2xvY2tz LmMgYi9jb250cmliL3Bncm93bG9ja3MvcGdyb3dsb2Nrcy5jCmluZGV4IGY4ODI2OTMzMmI2Li4y N2YwMWQ4MDU1ZiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3Jvd2xvY2tzL3Bncm93bG9ja3MuYwor KysgYi9jb250cmliL3Bncm93bG9ja3MvcGdyb3dsb2Nrcy5jCkBAIC0xMTQsNyArMTE0LDcgQEAg cGdyb3dsb2NrcyhQR19GVU5DVElPTl9BUkdTKQogCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShyZWwpKTsKIAogCS8qIFNjYW4gdGhlIHJlbGF0aW9uICovCi0Jc2NhbiA9IHRhYmxlX2Jl Z2luc2NhbihyZWwsIEdldEFjdGl2ZVNuYXBzaG90KCksIDAsIE5VTEwpOworCXNjYW4gPSB0YWJs ZV9iZWdpbnNjYW4ocmVsLCBHZXRBY3RpdmVTbmFwc2hvdCgpLCAwLCBOVUxMLCAwKTsKIAloc2Nh biA9IChIZWFwU2NhbkRlc2MpIHNjYW47CiAKIAlhdHRpbm1ldGEgPSBUdXBsZURlc2NHZXRBdHRJ bk1ldGFkYXRhKHJzaW5mby0+c2V0RGVzYyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggMjZj Yjc1MDU4ZDEuLjRhZDg5NDFjNjBhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0yODQyLDcg KzI4NDIsOCBAQCBfYnJpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChCcmluQnVpbGRTdGF0ZSAq c3RhdGUsCiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gYnJpbnNoYXJlZC0+aXNjb25jdXJy ZW50OwogCiAJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChoZWFwLAotCQkJCQkJCQkJ UGFyYWxsZWxUYWJsZVNjYW5Gcm9tQnJpblNoYXJlZChicmluc2hhcmVkKSk7CisJCQkJCQkJCQlQ YXJhbGxlbFRhYmxlU2NhbkZyb21CcmluU2hhcmVkKGJyaW5zaGFyZWQpLAorCQkJCQkJCQkJMCk7 CiAKIAlyZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRl eEluZm8sIHRydWUsIHRydWUsCiAJCQkJCQkJCQkgICBicmluYnVpbGRDYWxsYmFja1BhcmFsbGVs LCBzdGF0ZSwgc2Nhbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmlu c2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwppbmRleCBkZjMwZGNj MDIyOC4uYWFhNTQwMWI3MzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2lu aW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwpAQCAtMjA1 OCw3ICsyMDU4LDggQEAgX2dpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChHaW5CdWlsZFN0YXRl ICpzdGF0ZSwKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBnaW5zaGFyZWQtPmlzY29uY3Vy cmVudDsKIAogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoaGVhcCwKLQkJCQkJCQkJ CVBhcmFsbGVsVGFibGVTY2FuRnJvbUdpbkJ1aWxkU2hhcmVkKGdpbnNoYXJlZCkpOworCQkJCQkJ CQkJUGFyYWxsZWxUYWJsZVNjYW5Gcm9tR2luQnVpbGRTaGFyZWQoZ2luc2hhcmVkKSwKKwkJCQkJ CQkJCTApOwogCiAJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2NhbihoZWFwLCBpbmRl eCwgaW5kZXhJbmZvLCB0cnVlLCBwcm9ncmVzcywKIAkJCQkJCQkJCSAgIGdpbkJ1aWxkQ2FsbGJh Y2tQYXJhbGxlbCwgc3RhdGUsIHNjYW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKaW5kZXggZGQ0ZmU2YmY2MmYuLjZjMmU0ZTA4YjE2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTc5LDEyICs3OSwxMyBAQCBoZWFwYW1fc2xv dF9jYWxsYmFja3MoUmVsYXRpb24gcmVsYXRpb24pCiAgKi8KIAogc3RhdGljIEluZGV4RmV0Y2hU YWJsZURhdGEgKgotaGVhcGFtX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCkKK2hlYXBh bV9pbmRleF9mZXRjaF9iZWdpbihSZWxhdGlvbiByZWwsIHVpbnQzMiBmbGFncykKIHsKIAlJbmRl eEZldGNoSGVhcERhdGEgKmhzY2FuID0gcGFsbG9jMF9vYmplY3QoSW5kZXhGZXRjaEhlYXBEYXRh KTsKIAogCWhzY2FuLT54c19iYXNlLnJlbCA9IHJlbDsKIAloc2Nhbi0+eHNfY2J1ZiA9IEludmFs aWRCdWZmZXI7CisJaHNjYW4tPm1vZGlmaWVzX2Jhc2VfcmVsID0gIShmbGFncyAmIFNPX0hJTlRf UkVMX1JFQURfT05MWSk7CiAKIAlyZXR1cm4gJmhzY2FuLT54c19iYXNlOwogfQpAQCAtNzUzLDcg Kzc1NCw3IEBAIGhlYXBhbV9yZWxhdGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJlbGF0aW9uIE9sZEhl YXAsIFJlbGF0aW9uIE5ld0hlYXAsCiAKIAkJdGFibGVTY2FuID0gTlVMTDsKIAkJaGVhcFNjYW4g PSBOVUxMOwotCQlpbmRleFNjYW4gPSBpbmRleF9iZWdpbnNjYW4oT2xkSGVhcCwgT2xkSW5kZXgs IFNuYXBzaG90QW55LCBOVUxMLCAwLCAwKTsKKwkJaW5kZXhTY2FuID0gaW5kZXhfYmVnaW5zY2Fu KE9sZEhlYXAsIE9sZEluZGV4LCBTbmFwc2hvdEFueSwgTlVMTCwgMCwgMCwgMCk7CiAJCWluZGV4 X3Jlc2NhbihpbmRleFNjYW4sIE5VTEwsIDAsIE5VTEwsIDApOwogCX0KIAllbHNlCkBAIC03NjIs NyArNzYzLDcgQEAgaGVhcGFtX3JlbGF0aW9uX2NvcHlfZm9yX2NsdXN0ZXIoUmVsYXRpb24gT2xk SGVhcCwgUmVsYXRpb24gTmV3SGVhcCwKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DTFVTVEVSX1BIQVNFLAogCQkJCQkJCQkJIFBST0dSRVNTX0NMVVNURVJfUEhBU0Vf U0VRX1NDQU5fSEVBUCk7CiAKLQkJdGFibGVTY2FuID0gdGFibGVfYmVnaW5zY2FuKE9sZEhlYXAs IFNuYXBzaG90QW55LCAwLCAoU2NhbktleSkgTlVMTCk7CisJCXRhYmxlU2NhbiA9IHRhYmxlX2Jl Z2luc2NhbihPbGRIZWFwLCBTbmFwc2hvdEFueSwgMCwgKFNjYW5LZXkpIE5VTEwsIDApOwogCQlo ZWFwU2NhbiA9IChIZWFwU2NhbkRlc2MpIHRhYmxlU2NhbjsKIAkJaW5kZXhTY2FuID0gTlVMTDsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwppbmRleCBiN2YxMGExYWVkMC4uMTVmOWNjMTE1ODIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCkBAIC00NDcsNyArNDQ3LDcgQEAgc3lzdGFibGVf YmVnaW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJfQogCiAJCXN5c3NjYW4tPmlzY2Fu ID0gaW5kZXhfYmVnaW5zY2FuKGhlYXBSZWxhdGlvbiwgaXJlbCwKLQkJCQkJCQkJCQkgc25hcHNo b3QsIE5VTEwsIG5rZXlzLCAwKTsKKwkJCQkJCQkJCQkgc25hcHNob3QsIE5VTEwsIG5rZXlzLCAw LCAwKTsKIAkJaW5kZXhfcmVzY2FuKHN5c3NjYW4tPmlzY2FuLCBpZHhrZXksIG5rZXlzLCBOVUxM LCAwKTsKIAkJc3lzc2Nhbi0+c2NhbiA9IE5VTEw7CiAKQEAgLTcwOCw3ICs3MDgsNyBAQCBzeXN0 YWJsZV9iZWdpbnNjYW5fb3JkZXJlZChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJfQogCiAJc3lz c2Nhbi0+aXNjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcFJlbGF0aW9uLCBpbmRleFJlbGF0aW9u LAotCQkJCQkJCQkJIHNuYXBzaG90LCBOVUxMLCBua2V5cywgMCk7CisJCQkJCQkJCQkgc25hcHNo b3QsIE5VTEwsIG5rZXlzLCAwLCAwKTsKIAlpbmRleF9yZXNjYW4oc3lzc2Nhbi0+aXNjYW4sIGlk eGtleSwgbmtleXMsIE5VTEwsIDApOwogCXN5c3NjYW4tPnNjYW4gPSBOVUxMOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2luZGV4L2luZGV4YW0uYwppbmRleCAwNDkyZDkyZDIzYi4uYjU1MjNjZjJhYjEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwpAQCAtMjU3LDcgKzI1Nyw3IEBAIGluZGV4X2JlZ2lu c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwK IAkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQlJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmlu c3RydW1lbnQsCi0JCQkJaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKQorCQkJCWludCBua2V5cywg aW50IG5vcmRlcmJ5cywgdWludDMyIGZsYWdzKQogewogCUluZGV4U2NhbkRlc2Mgc2NhbjsKIApA QCAtMjg0LDcgKzI4NCw3IEBAIGluZGV4X2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAJc2Nhbi0+aW5zdHJ1bWVudCA9IGluc3RydW1lbnQ7CiAKIAkvKiBwcmVwYXJlIHRvIGZldGNo IGluZGV4IG1hdGNoZXMgZnJvbSB0YWJsZSAqLwotCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxl X2luZGV4X2ZldGNoX2JlZ2luKGhlYXBSZWxhdGlvbik7CisJc2Nhbi0+eHNfaGVhcGZldGNoID0g dGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4oaGVhcFJlbGF0aW9uLCBmbGFncyk7CiAKIAlyZXR1cm4g c2NhbjsKIH0KQEAgLTYxNSw3ICs2MTUsNyBAQCBpbmRleF9iZWdpbnNjYW5fcGFyYWxsZWwoUmVs YXRpb24gaGVhcHJlbCwgUmVsYXRpb24gaW5kZXhyZWwsCiAJc2Nhbi0+aW5zdHJ1bWVudCA9IGlu c3RydW1lbnQ7CiAKIAkvKiBwcmVwYXJlIHRvIGZldGNoIGluZGV4IG1hdGNoZXMgZnJvbSB0YWJs ZSAqLwotCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKGhlYXBy ZWwpOworCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKGhlYXBy ZWwsIDApOwogCiAJcmV0dXJuIHNjYW47CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5j CmluZGV4IGQ3Njk1ZGMxMTA4Li43YmRiYzdlNWZhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMKQEAgLTE5MjUsNyArMTkyNSw3IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0 KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCWluZGV4SW5mbyA9IEJ1aWxk SW5kZXhJbmZvKGJ0c3Bvb2wtPmluZGV4KTsKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBi dHNoYXJlZC0+aXNjb25jdXJyZW50OwogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwo YnRzcG9vbC0+aGVhcCwKLQkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUJUU2hhcmVkKGJ0 c2hhcmVkKSk7CisJCQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJl ZCksIDApOwogCXJlbHR1cGxlcyA9IHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oYnRzcG9vbC0+aGVh cCwgYnRzcG9vbC0+aW5kZXgsIGluZGV4SW5mbywKIAkJCQkJCQkJCSAgIHRydWUsIHByb2dyZXNz LCBfYnRfYnVpbGRfY2FsbGJhY2ssCiAJCQkJCQkJCQkgICAmYnVpbGRzdGF0ZSwgc2Nhbik7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwppbmRleCA3M2ViYzAxYTA4Zi4uYTAwYmRmZGY4MjIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpAQCAtMTYzLDEwICsxNjMsMTEgQEAgdGFi bGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoUmVsYXRpb24gcmVsLCBQYXJhbGxlbFRhYmxlU2Nh bkRlc2MgcHNjYW4sCiB9CiAKIFRhYmxlU2NhbkRlc2MKLXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxl bChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQordGFibGVf YmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRl c2MgcHNjYW4sIHVpbnQzMiBmbGFncykKIHsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKLQl1aW50MzIJ CWZsYWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKKworCWZsYWdzIHw9IFNPX1RZUEVfU0VRU0NBTiB8 CiAJCVNPX0FMTE9XX1NUUkFUIHwgU09fQUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VNT0RFOwog CiAJQXNzZXJ0KFJlbEZpbGVMb2NhdG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9yLCBwc2Nh bi0+cGhzX2xvY2F0b3IpKTsKQEAgLTI0OCw3ICsyNDksNyBAQCB0YWJsZV9pbmRleF9mZXRjaF90 dXBsZV9jaGVjayhSZWxhdGlvbiByZWwsCiAJYm9vbAkJZm91bmQ7CiAKIAlzbG90ID0gdGFibGVf c2xvdF9jcmVhdGUocmVsLCBOVUxMKTsKLQlzY2FuID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4o cmVsKTsKKwlzY2FuID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4ocmVsLCAwKTsKIAlmb3VuZCA9 IHRhYmxlX2luZGV4X2ZldGNoX3R1cGxlKHNjYW4sIHRpZCwgc25hcHNob3QsIHNsb3QsICZjYWxs X2FnYWluLAogCQkJCQkJCQkJYWxsX2RlYWQpOwogCXRhYmxlX2luZGV4X2ZldGNoX2VuZChzY2Fu KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYwppbmRleCAzNDk3YTgyMjFmMi4uOTdjODI3OGUz NmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9jb25zdHJhaW50LmMKQEAgLTEwNiw3ICsxMDYsNyBAQCB1bmlx dWVfa2V5X3JlY2hlY2soUEdfRlVOQ1RJT05fQVJHUykKIAkgKi8KIAl0bXB0aWQgPSBjaGVja3Rp ZDsKIAl7Ci0JCUluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4gPSB0YWJsZV9pbmRleF9mZXRjaF9i ZWdpbih0cmlnZGF0YS0+dGdfcmVsYXRpb24pOworCQlJbmRleEZldGNoVGFibGVEYXRhICpzY2Fu ID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4odHJpZ2RhdGEtPnRnX3JlbGF0aW9uLCAwKTsKIAkJ Ym9vbAkJY2FsbF9hZ2FpbiA9IGZhbHNlOwogCiAJCWlmICghdGFibGVfaW5kZXhfZmV0Y2hfdHVw bGUoc2NhbiwgJnRtcHRpZCwgU25hcHNob3RTZWxmLCBzbG90LApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpp bmRleCBkYWU5MTYzMGFjMy4uMTk1N2JiMGYxYTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC0x MTU2LDcgKzExNTYsNyBAQCBDb3B5UmVsYXRpb25UbyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFJlbGF0 aW9uIHJlbCwgUmVsYXRpb24gcm9vdF9yZWwsIHVpbnQ2NCAqcHJvYwogCUF0dHJNYXAgICAgKm1h cCA9IE5VTEw7CiAJVHVwbGVUYWJsZVNsb3QgKnJvb3Rfc2xvdCA9IE5VTEw7CiAKLQlzY2FuZGVz YyA9IHRhYmxlX2JlZ2luc2NhbihyZWwsIEdldEFjdGl2ZVNuYXBzaG90KCksIDAsIE5VTEwpOwor CXNjYW5kZXNjID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgR2V0QWN0aXZlU25hcHNob3QoKSwgMCwg TlVMTCwgMCk7CiAJc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7CiAKIAkvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA2YjFhMDBlZDQ3Ny4uMTMwYTY3MGQyNjYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC02Mzc3LDcgKzYzNzcsNyBAQCBBVFJld3JpdGVU YWJsZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIE9pZCBPSUROZXdIZWFwKQogCQkgKiBjaGVja2lu ZyBhbGwgdGhlIGNvbnN0cmFpbnRzLgogCQkgKi8KIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBz aG90KEdldExhdGVzdFNuYXBzaG90KCkpOwotCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG9sZHJl bCwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG9sZHJlbCwg c25hcHNob3QsIDAsIE5VTEwsIDApOwogCiAJCS8qCiAJCSAqIFN3aXRjaCB0byBwZXItdHVwbGUg bWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCkBAIC0xMzc2Niw3ICsx Mzc2Niw3IEBAIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoY2hhciAqY29ubmFtZSwKIAkg Ki8KIAlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CiAJ c2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7Ci0Jc2NhbiA9IHRhYmxlX2JlZ2lu c2NhbihyZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJl bCwgc25hcHNob3QsIDAsIE5VTEwsIDApOwogCiAJcGVyVHVwQ3h0ID0gQWxsb2NTZXRDb250ZXh0 Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAogCQkJCQkJCQkJICAidmFsaWRhdGVGb3JlaWdu S2V5Q29uc3RyYWludCIsCkBAIC0yMjYyMyw3ICsyMjYyMyw3IEBAIE1lcmdlUGFydGl0aW9uc01v dmVSb3dzKExpc3QgKip3cXVldWUsIExpc3QgKm1lcmdpbmdQYXJ0aXRpb25zLCBSZWxhdGlvbiBu ZXdQYXJ0CiAKIAkJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dzLiAqLwogCQlzbmFwc2hvdCA9IFJl Z2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7Ci0JCXNjYW4gPSB0YWJsZV9iZWdp bnNjYW4obWVyZ2luZ1BhcnRpdGlvbiwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFi bGVfYmVnaW5zY2FuKG1lcmdpbmdQYXJ0aXRpb24sIHNuYXBzaG90LCAwLCBOVUxMLCAwKTsKIAog CQkvKgogCQkgKiBTd2l0Y2ggdG8gcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0IGFuZCByZXNldCBp dCBmb3IgZWFjaCB0dXBsZQpAQCAtMjMwODcsNyArMjMwODcsNyBAQCBTcGxpdFBhcnRpdGlvbk1v dmVSb3dzKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gc3BsaXRSZWwsCiAK IAkvKiBTY2FuIHRocm91Z2ggdGhlIHJvd3MuICovCiAJc25hcHNob3QgPSBSZWdpc3RlclNuYXBz aG90KEdldExhdGVzdFNuYXBzaG90KCkpOwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4oc3BsaXRS ZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHNwbGl0UmVs LCBzbmFwc2hvdCwgMCwgTlVMTCwgMCk7CiAKIAkvKgogCSAqIFN3aXRjaCB0byBwZXItdHVwbGUg bWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlw ZWNtZHMuYwppbmRleCBiZTZmZmQ2ZGRiMC4uMjkyMWY2OGMxYzMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlw ZWNtZHMuYwpAQCAtMzE1Nyw3ICszMTU3LDcgQEAgdmFsaWRhdGVEb21haW5Ob3ROdWxsQ29uc3Ry YWludChPaWQgZG9tYWlub2lkKQogCiAJCS8qIFNjYW4gYWxsIHR1cGxlcyBpbiB0aGlzIHJlbGF0 aW9uICovCiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgp KTsKLQkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbih0ZXN0cmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7 CisJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4odGVzdHJlbCwgc25hcHNob3QsIDAsIE5VTEwsIDAp OwogCQlzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUodGVzdHJlbCwgTlVMTCk7CiAJCXdoaWxlICh0 YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzbG90KSkK IAkJewpAQCAtMzIzOCw3ICszMjM4LDcgQEAgdmFsaWRhdGVEb21haW5DaGVja0NvbnN0cmFpbnQo T2lkIGRvbWFpbm9pZCwgY29uc3QgY2hhciAqY2NiaW4sIExPQ0tNT0RFIGxvY2ttb2QKIAogCQkv KiBTY2FuIGFsbCB0dXBsZXMgaW4gdGhpcyByZWxhdGlvbiAqLwogCQlzbmFwc2hvdCA9IFJlZ2lz dGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7Ci0JCXNjYW4gPSB0YWJsZV9iZWdpbnNj YW4odGVzdHJlbCwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2Fu KHRlc3RyZWwsIHNuYXBzaG90LCAwLCBOVUxMLCAwKTsKIAkJc2xvdCA9IHRhYmxlX3Nsb3RfY3Jl YXRlKHRlc3RyZWwsIE5VTEwpOwogCQl3aGlsZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xvdChzY2Fu LCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0lu ZGV4aW5nLmMKaW5kZXggMGIzYTMxZjE3MDMuLjc0MjYyYTM0ODE5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjSW5kZXhpbmcuYwpAQCAtODE2LDcgKzgxNiw3IEBAIGNoZWNrX2V4Y2x1c2lvbl9vcl91 bmlxdWVfY29uc3RyYWludChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIHJldHJ5Ogog CWNvbmZsaWN0ID0gZmFsc2U7CiAJZm91bmRfc2VsZiA9IGZhbHNlOwotCWluZGV4X3NjYW4gPSBp bmRleF9iZWdpbnNjYW4oaGVhcCwgaW5kZXgsICZEaXJ0eVNuYXBzaG90LCBOVUxMLCBpbmRua2V5 YXR0cywgMCk7CisJaW5kZXhfc2NhbiA9IGluZGV4X2JlZ2luc2NhbihoZWFwLCBpbmRleCwgJkRp cnR5U25hcHNob3QsIE5VTEwsIGluZG5rZXlhdHRzLCAwLCAwKTsKIAlpbmRleF9yZXNjYW4oaW5k ZXhfc2Nhbiwgc2NhbmtleXMsIGluZG5rZXlhdHRzLCBOVUxMLCAwKTsKIAogCXdoaWxlIChpbmRl eF9nZXRuZXh0X3Nsb3QoaW5kZXhfc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIGV4aXN0aW5n X3Nsb3QpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9u LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwppbmRleCA4NjBmNzlm OWNjMS4uNmU0OWVhNWM1ZDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNS ZXBsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5j CkBAIC0yMDQsNyArMjA0LDcgQEAgUmVsYXRpb25GaW5kUmVwbFR1cGxlQnlJbmRleChSZWxhdGlv biByZWwsIE9pZCBpZHhvaWQsCiAJc2tleV9hdHRvZmYgPSBidWlsZF9yZXBsaW5kZXhfc2Nhbl9r ZXkoc2tleSwgcmVsLCBpZHhyZWwsIHNlYXJjaHNsb3QpOwogCiAJLyogU3RhcnQgYW4gaW5kZXgg c2Nhbi4gKi8KLQlzY2FuID0gaW5kZXhfYmVnaW5zY2FuKHJlbCwgaWR4cmVsLCAmc25hcCwgTlVM TCwgc2tleV9hdHRvZmYsIDApOworCXNjYW4gPSBpbmRleF9iZWdpbnNjYW4ocmVsLCBpZHhyZWws ICZzbmFwLCBOVUxMLCBza2V5X2F0dG9mZiwgMCwgMCk7CiAKIHJldHJ5OgogCWZvdW5kID0gZmFs c2U7CkBAIC0zODIsNyArMzgyLDcgQEAgUmVsYXRpb25GaW5kUmVwbFR1cGxlU2VxKFJlbGF0aW9u IHJlbCwgTG9ja1R1cGxlTW9kZSBsb2NrbW9kZSwKIAogCS8qIFN0YXJ0IGEgaGVhcCBzY2FuLiAq LwogCUluaXREaXJ0eVNuYXBzaG90KHNuYXApOwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVs LCAmc25hcCwgMCwgTlVMTCk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihyZWwsICZzbmFwLCAw LCBOVUxMLCAwKTsKIAlzY2Fuc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7CiAK IHJldHJ5OgpAQCAtNjAxLDcgKzYwMSw3IEBAIFJlbGF0aW9uRmluZERlbGV0ZWRUdXBsZUluZm9T ZXEoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqc2VhcmNoc2xvdCwKIAkgKiBub3QgeWV0 IGNvbW1pdHRlZCBvciB0aG9zZSBqdXN0IGNvbW1pdHRlZCBwcmlvciB0byB0aGUgc2NhbiBhcmUK IAkgKiBleGNsdWRlZCBpbiB1cGRhdGVfbW9zdF9yZWNlbnRfZGVsZXRpb25faW5mbygpLgogCSAq LwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBTbmFwc2hvdEFueSwgMCwgTlVMTCk7CisJ c2NhbiA9IHRhYmxlX2JlZ2luc2NhbihyZWwsIFNuYXBzaG90QW55LCAwLCBOVUxMLCAwKTsKIAlz Y2Fuc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7CiAKIAl0YWJsZV9yZXNjYW4o c2NhbiwgTlVMTCk7CkBAIC02NjUsNyArNjY1LDcgQEAgUmVsYXRpb25GaW5kRGVsZXRlZFR1cGxl SW5mb0J5SW5kZXgoUmVsYXRpb24gcmVsLCBPaWQgaWR4b2lkLAogCSAqIG5vdCB5ZXQgY29tbWl0 dGVkIG9yIHRob3NlIGp1c3QgY29tbWl0dGVkIHByaW9yIHRvIHRoZSBzY2FuIGFyZQogCSAqIGV4 Y2x1ZGVkIGluIHVwZGF0ZV9tb3N0X3JlY2VudF9kZWxldGlvbl9pbmZvKCkuCiAJICovCi0Jc2Nh biA9IGluZGV4X2JlZ2luc2NhbihyZWwsIGlkeHJlbCwgU25hcHNob3RBbnksIE5VTEwsIHNrZXlf YXR0b2ZmLCAwKTsKKwlzY2FuID0gaW5kZXhfYmVnaW5zY2FuKHJlbCwgaWR4cmVsLCBTbmFwc2hv dEFueSwgTlVMTCwgc2tleV9hdHRvZmYsIDAsIDApOwogCiAJaW5kZXhfcmVzY2FuKHNjYW4sIHNr ZXksIHNrZXlfYXR0b2ZmLCBOVUxMLCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwSGVhcHNjYW4uYwppbmRleCBiZjI0ZjNkN2ZlMC4uMGQ4NTRkYjUxYTEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCkBAIC0xMDUsMTEgKzEwNSwxOCBAQCBC aXRtYXBUYWJsZVNjYW5TZXR1cChCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlKQogCSAqLwogCWlm ICghbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKQogCXsKKwkJdWludDMyCQlmbGFncyA9IDA7 CisKKwkJaWYgKCFibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2Nh bnJlbGlkLAorCQkJCQkJICAgbm9kZS0+c3MucHMuc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcykp CisJCQlmbGFncyA9IFNPX0hJTlRfUkVMX1JFQURfT05MWTsKKwogCQlub2RlLT5zcy5zc19jdXJy ZW50U2NhbkRlc2MgPQogCQkJdGFibGVfYmVnaW5zY2FuX2JtKG5vZGUtPnNzLnNzX2N1cnJlbnRS ZWxhdGlvbiwKIAkJCQkJCQkgICBub2RlLT5zcy5wcy5zdGF0ZS0+ZXNfc25hcHNob3QsCiAJCQkJ CQkJICAgMCwKLQkJCQkJCQkgICBOVUxMKTsKKwkJCQkJCQkgICBOVUxMLAorCQkJCQkJCSAgIGZs YWdzKTsKIAl9CiAKIAlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MtPnN0LnJzX3RibWl0ZXJh dG9yID0gdGJtaXRlcmF0b3I7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhvbmx5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4u YwppbmRleCA2YmVhNDJmMTI4Zi4uMmM4N2JhNWY3NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUluZGV4b25seXNjYW4uYwpAQCAtOTQsNyArOTQsNyBAQCBJbmRleE9ubHlOZXh0KEluZGV4 T25seVNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKIAkJ CQkJCQkJICAgJm5vZGUtPmlvc3NfSW5zdHJ1bWVudCwKIAkJCQkJCQkJICAgbm9kZS0+aW9zc19O dW1TY2FuS2V5cywKLQkJCQkJCQkJICAgbm9kZS0+aW9zc19OdW1PcmRlckJ5S2V5cyk7CisJCQkJ CQkJCSAgIG5vZGUtPmlvc3NfTnVtT3JkZXJCeUtleXMsIDApOwogCiAJCW5vZGUtPmlvc3NfU2Nh bkRlc2MgPSBzY2FuZGVzYzsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCmluZGV4 IDcyYjEzNWU1ZGNmLi45MjY3NDQ0MWM2ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNj YW4uYwpAQCAtMTAyLDYgKzEwMiwxMiBAQCBJbmRleE5leHQoSW5kZXhTY2FuU3RhdGUgKm5vZGUp CiAKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CisJCXVpbnQzMgkJZmxhZ3MgPSAwOworCisJ CWlmICghYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxp ZCwKKwkJCQkJCSAgIGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkKKwkJCWZsYWdzID0gU09f SElOVF9SRUxfUkVBRF9PTkxZOworCiAJCS8qCiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYgdGhlIGlu ZGV4IHNjYW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3ZSdyZQogCQkgKiBzZXJpYWxseSBleGVj dXRpbmcgYW4gaW5kZXggc2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBhcmFsbGVsLgpAQCAt MTExLDcgKzExNyw4IEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJ ICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkJICAgJm5vZGUtPmlzc19JbnN0cnVtZW50 LAogCQkJCQkJCQkgICBub2RlLT5pc3NfTnVtU2NhbktleXMsCi0JCQkJCQkJCSAgIG5vZGUtPmlz c19OdW1PcmRlckJ5S2V5cyk7CisJCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cywK KwkJCQkJCQkJICAgZmxhZ3MpOwogCiAJCW5vZGUtPmlzc19TY2FuRGVzYyA9IHNjYW5kZXNjOwog CkBAIC0yMDcsNyArMjE0LDcgQEAgSW5kZXhOZXh0V2l0aFJlb3JkZXIoSW5kZXhTY2FuU3RhdGUg Km5vZGUpCiAJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfc25hcHNob3QsCiAJCQkJCQkJCSAgICZub2Rl LT5pc3NfSW5zdHJ1bWVudCwKIAkJCQkJCQkJICAgbm9kZS0+aXNzX051bVNjYW5LZXlzLAotCQkJ CQkJCQkgICBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMpOworCQkJCQkJCQkgICBub2RlLT5pc3Nf TnVtT3JkZXJCeUtleXMsIDApOwogCiAJCW5vZGUtPmlzc19TY2FuRGVzYyA9IHNjYW5kZXNjOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwppbmRleCA5NDA0N2QyOTQzMC4uNGQwY2JiOWRl ZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwpAQCAtNjUsMTMgKzY1LDIwIEBAIFNl cU5leHQoU2VxU2NhblN0YXRlICpub2RlKQogCiAJaWYgKHNjYW5kZXNjID09IE5VTEwpCiAJewor CQl1aW50MzIJCWZsYWdzID0gMDsKKworCQlpZiAoIWJtc19pc19tZW1iZXIoKChTY2FuICopIG5v ZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCQkgICBlc3RhdGUtPmVzX21vZGlmaWVk X3JlbGlkcykpCisJCQlmbGFncyA9IFNPX0hJTlRfUkVMX1JFQURfT05MWTsKKwogCQkvKgogCQkg KiBXZSByZWFjaCBoZXJlIGlmIHRoZSBzY2FuIGlzIG5vdCBwYXJhbGxlbCwgb3IgaWYgd2UncmUg c2VyaWFsbHkKIAkJICogZXhlY3V0aW5nIGEgc2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBh cmFsbGVsLgogCQkgKi8KIAkJc2NhbmRlc2MgPSB0YWJsZV9iZWdpbnNjYW4obm9kZS0+c3Muc3Nf Y3VycmVudFJlbGF0aW9uLAogCQkJCQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJCQkJ CQkgICAwLCBOVUxMKTsKKwkJCQkJCQkJICAgMCwgTlVMTCwgZmxhZ3MpOworCiAJCW5vZGUtPnNz LnNzX2N1cnJlbnRTY2FuRGVzYyA9IHNjYW5kZXNjOwogCX0KIApAQCAtMzY3LDE0ICszNzQsMjAg QEAgRXhlY1NlcVNjYW5Jbml0aWFsaXplRFNNKFNlcVNjYW5TdGF0ZSAqbm9kZSwKIHsKIAlFU3Rh dGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOwogCVBhcmFsbGVsVGFibGVTY2FuRGVz YyBwc2NhbjsKKwl1aW50MzIJCWZsYWdzID0gMDsKIAogCXBzY2FuID0gc2htX3RvY19hbGxvY2F0 ZShwY3h0LT50b2MsIG5vZGUtPnBzY2FuX2xlbik7CiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRp YWxpemUobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJCQkgIHBzY2FuLAogCQkJ CQkJCQkgIGVzdGF0ZS0+ZXNfc25hcHNob3QpOwogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywg bm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBwc2Nhbik7CisJaWYgKCFibXNfaXNfbWVt YmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAorCQkJCQkgICBlc3Rh dGUtPmVzX21vZGlmaWVkX3JlbGlkcykpCisJCWZsYWdzID0gU09fSElOVF9SRUxfUkVBRF9PTkxZ OworCiAJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0KLQkJdGFibGVfYmVnaW5zY2FuX3Bh cmFsbGVsKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwgcHNjYW4pOworCQl0YWJsZV9iZWdp bnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLCBwc2NhbiwKKwkJCQkJ CQkJIGZsYWdzKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDA0LDggKzQxNywxNSBAQCBFeGVjU2Vx U2NhbkluaXRpYWxpemVXb3JrZXIoU2VxU2NhblN0YXRlICpub2RlLAogCQkJCQkJCVBhcmFsbGVs V29ya2VyQ29udGV4dCAqcHdjeHQpCiB7CiAJUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuOwor CXVpbnQzMgkJZmxhZ3MgPSAwOworCisJaWYgKCFibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2Rl LT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAorCQkJCQkgICBub2RlLT5zcy5wcy5zdGF0ZS0+ZXNf bW9kaWZpZWRfcmVsaWRzKSkKKwkJZmxhZ3MgPSBTT19ISU5UX1JFTF9SRUFEX09OTFk7CiAKIAlw c2NhbiA9IHNobV90b2NfbG9va3VwKHB3Y3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5f bm9kZV9pZCwgZmFsc2UpOwogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9Ci0JCXRhYmxl X2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsK KwkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwK KwkJCQkJCQkJIHBzY2FuLAorCQkJCQkJCQkgZmxhZ3MpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0Ym91bmRzLmMKaW5kZXggMTZiMGFkYzE3MmMuLjkxYWNmMWVlMmQ3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCisrKyBiL3NyYy9iYWNrZW5k L3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKQEAgLTMzNjIsNyArMzM2Miw3IEBAIGNoZWNrX2Rl ZmF1bHRfcGFydGl0aW9uX2NvbnRlbnRzKFJlbGF0aW9uIHBhcmVudCwgUmVsYXRpb24gZGVmYXVs dF9yZWwsCiAJCWVjb250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpOwogCQlz bmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CiAJCXR1cHNs b3QgPSB0YWJsZV9zbG90X2NyZWF0ZShwYXJ0X3JlbCwgJmVzdGF0ZS0+ZXNfdHVwbGVUYWJsZSk7 Ci0JCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocGFydF9yZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsK KwkJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihwYXJ0X3JlbCwgc25hcHNob3QsIDAsIE5VTEwsIDAp OwogCiAJCS8qCiAJCSAqIFN3aXRjaCB0byBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQgYW5kIHJl c2V0IGl0IGZvciBlYWNoIHR1cGxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv c2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCmluZGV4IGM3NjBi MTlkYjU1Li5lYzBkZWYwZDFlMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Nl bGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKQEAgLTcxMDAs NyArNzEwMCw3IEBAIGdldF9hY3R1YWxfdmFyaWFibGVfZW5kcG9pbnQoUmVsYXRpb24gaGVhcFJl bCwKIAogCWluZGV4X3NjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcFJlbCwgaW5kZXhSZWwsCiAJ CQkJCQkJCSAmU25hcHNob3ROb25WYWN1dW1hYmxlLCBOVUxMLAotCQkJCQkJCQkgMSwgMCk7CisJ CQkJCQkJCSAxLCAwLCAwKTsKIAkvKiBTZXQgaXQgdXAgZm9yIGluZGV4LW9ubHkgc2NhbiAqLwog CWluZGV4X3NjYW4tPnhzX3dhbnRfaXR1cCA9IHRydWU7CiAJaW5kZXhfcmVzY2FuKGluZGV4X3Nj YW4sIHNjYW5rZXlzLCAxLCBOVUxMLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9nZW5hbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKaW5kZXggOTIwMGEyMmJkOWYu LmQyOWQ5ZTkwNWZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaApAQCAtMTc3LDcgKzE3Nyw3IEBAIGV4dGVybiBJ bmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJ CQkJCQkgUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAkJCQkJCQkJCSBTbmFwc2hvdCBzbmFwc2hv dCwKIAkJCQkJCQkJCSBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCi0JCQkJ CQkJCQkgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKTsKKwkJCQkJCQkJCSBpbnQgbmtleXMsIGlu dCBub3JkZXJieXMsIHVpbnQzMiBmbGFncyk7CiBleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9i ZWdpbnNjYW5fYml0bWFwKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAJCQkJCQkJCQkJCVNuYXBz aG90IHNuYXBzaG90LAogCQkJCQkJCQkJCQlJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3Ry dW1lbnQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggZTJlZTAzNWFlMGIuLjM4Mjk0YjMzZmFjIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbS5oCkBAIC0xMTksNiArMTE5LDEyIEBAIHR5cGVkZWYgc3RydWN0IEluZGV4RmV0 Y2hIZWFwRGF0YQogCiAJQnVmZmVyCQl4c19jYnVmOwkJLyogY3VycmVudCBoZWFwIGJ1ZmZlciBp biBzY2FuLCBpZiBhbnkgKi8KIAkvKiBOQjogaWYgeHNfY2J1ZiBpcyBub3QgSW52YWxpZEJ1ZmZl ciwgd2UgaG9sZCBhIHBpbiBvbiB0aGF0IGJ1ZmZlciAqLworCisJLyoKKwkgKiBTb21lIG9wdGlt aXphdGlvbnMgY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGlmIHRoZSBxdWVyeSBkb2VzIG5vdCBtb2Rp ZnkKKwkgKiB0aGUgdW5kZXJseWluZyByZWxhdGlvbi4gVHJhY2sgdGhhdCBoZXJlLgorCSAqLwor CWJvb2wJCW1vZGlmaWVzX2Jhc2VfcmVsOwogfSBJbmRleEZldGNoSGVhcERhdGE7CiAKIC8qIFJl c3VsdCBjb2RlcyBmb3IgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aAppbmRleCAyZmE3OTBiNmJmNS4uZDEwYjFiMDNjZGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAt NjMsNiArNjMsOCBAQCB0eXBlZGVmIGVudW0gU2Nhbk9wdGlvbnMKIAogCS8qIHVucmVnaXN0ZXIg c25hcHNob3QgYXQgc2NhbiBlbmQ/ICovCiAJU09fVEVNUF9TTkFQU0hPVCA9IDEgPDwgOSwKKwkv KiBzZXQgaWYgdGhlIHF1ZXJ5IGRvZXNuJ3QgbW9kaWZ5IHRoZSByZWwgKi8KKwlTT19ISU5UX1JF TF9SRUFEX09OTFkgPSAxIDw8IDEwLAogfQkJCVNjYW5PcHRpb25zOwogCiAvKgpAQCAtNDIwLDcg KzQyMiw3IEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJICoKIAkgKiBUdXBsZXMg Zm9yIGFuIGluZGV4IHNjYW4gY2FuIHRoZW4gYmUgZmV0Y2hlZCB2aWEgaW5kZXhfZmV0Y2hfdHVw bGUuCiAJICovCi0Jc3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEgKigqaW5kZXhfZmV0Y2hfYmVn aW4pIChSZWxhdGlvbiByZWwpOworCXN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhICooKmluZGV4 X2ZldGNoX2JlZ2luKSAoUmVsYXRpb24gcmVsLCB1aW50MzIgZmxhZ3MpOwogCiAJLyoKIAkgKiBS ZXNldCBpbmRleCBmZXRjaC4gVHlwaWNhbGx5IHRoaXMgd2lsbCByZWxlYXNlIGNyb3NzIGluZGV4 IGZldGNoCkBAIC04NzQsOSArODc2LDkgQEAgZXh0ZXJuIFR1cGxlVGFibGVTbG90ICp0YWJsZV9z bG90X2NyZWF0ZShSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqKnJlZ2xpc3QpOwogICovCiBzdGF0 aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2NhbihSZWxhdGlvbiByZWwsIFNu YXBzaG90IHNuYXBzaG90LAotCQkJCWludCBua2V5cywgU2NhbktleURhdGEgKmtleSkKKwkJCQlp bnQgbmtleXMsIFNjYW5LZXlEYXRhICprZXksIHVpbnQzMiBmbGFncykKIHsKLQl1aW50MzIJCWZs YWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKKwlmbGFncyB8PSBTT19UWVBFX1NFUVNDQU4gfAogCQlT T19BTExPV19TVFJBVCB8IFNPX0FMTE9XX1NZTkMgfCBTT19BTExPV19QQUdFTU9ERTsKIAogCXJl dHVybiByZWwtPnJkX3RhYmxlYW0tPnNjYW5fYmVnaW4ocmVsLCBzbmFwc2hvdCwgbmtleXMsIGtl eSwgTlVMTCwgZmxhZ3MpOwpAQCAtOTE5LDkgKzkyMSw5IEBAIHRhYmxlX2JlZ2luc2Nhbl9zdHJh dChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAogICovCiBzdGF0aWMgaW5saW5lIFRh YmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2Nhbl9ibShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNu YXBzaG90LAotCQkJCSAgIGludCBua2V5cywgU2NhbktleURhdGEgKmtleSkKKwkJCQkgICBpbnQg bmtleXMsIFNjYW5LZXlEYXRhICprZXksIHVpbnQzMiBmbGFncykKIHsKLQl1aW50MzIJCWZsYWdz ID0gU09fVFlQRV9CSVRNQVBTQ0FOIHwgU09fQUxMT1dfUEFHRU1PREU7CisJZmxhZ3MgfD0gU09f VFlQRV9CSVRNQVBTQ0FOIHwgU09fQUxMT1dfUEFHRU1PREU7CiAKIAlyZXR1cm4gcmVsLT5yZF90 YWJsZWFtLT5zY2FuX2JlZ2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXksCiAJCQkJCQkJCQkg ICBOVUxMLCBmbGFncyk7CkBAIC0xMTI4LDcgKzExMzAsOCBAQCBleHRlcm4gdm9pZCB0YWJsZV9w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsCiAgKiBDYWxsZXIgbXVzdCBob2xk IGEgc3VpdGFibGUgbG9jayBvbiB0aGUgcmVsYXRpb24uCiAgKi8KIGV4dGVybiBUYWJsZVNjYW5E ZXNjIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiByZWxhdGlvbiwKLQkJCQkJCQkJ CQkJICBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pOworCQkJCQkJCQkJCQkgIFBhcmFsbGVs VGFibGVTY2FuRGVzYyBwc2NhbiwKKwkJCQkJCQkJCQkJICB1aW50MzIgZmxhZ3MpOwogCiAvKgog ICogQmVnaW4gYSBwYXJhbGxlbCB0aWQgcmFuZ2Ugc2Nhbi4gYHBzY2FuYCBuZWVkcyB0byBoYXZl IGJlZW4gaW5pdGlhbGl6ZWQKQEAgLTExNjQsOSArMTE2Nyw5IEBAIHRhYmxlX3BhcmFsbGVsc2Nh bl9yZWluaXRpYWxpemUoUmVsYXRpb24gcmVsLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4p CiAgKiBUdXBsZXMgZm9yIGFuIGluZGV4IHNjYW4gY2FuIHRoZW4gYmUgZmV0Y2hlZCB2aWEgdGFi bGVfaW5kZXhfZmV0Y2hfdHVwbGUoKS4KICAqLwogc3RhdGljIGlubGluZSBJbmRleEZldGNoVGFi bGVEYXRhICoKLXRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCkKK3RhYmxlX2lu ZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCwgdWludDMyIGZsYWdzKQogewotCXJldHVybiBy ZWwtPnJkX3RhYmxlYW0tPmluZGV4X2ZldGNoX2JlZ2luKHJlbCk7CisJcmV0dXJuIHJlbC0+cmRf dGFibGVhbS0+aW5kZXhfZmV0Y2hfYmVnaW4ocmVsLCBmbGFncyk7CiB9CiAKIC8qCi0tIAoyLjQz LjAKCg== --00000000000028078b064614a599 Content-Type: text/x-patch; charset="US-ASCII"; name="v27-0013-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v27-0013-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8ttl7612 RnJvbSA1MTlmMmU0ZWU5NDdkMzVlZGQ2MTgyODUwYTI2OTg4NzQ0MzQzZWQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MjQ6MDggLTA1MDAKU3ViamVjdDogW1BB VENIIHYyNyAxMy8xNF0gQWxsb3cgb24tYWNjZXNzIHBydW5pbmcgdG8gc2V0IHBhZ2VzIGFsbC12 aXNpYmxlCgpNYW55IHF1ZXJpZXMgZG8gbm90IG1vZGlmeSB0aGUgdW5kZXJseWluZyByZWxhdGlv bi4gRm9yIHN1Y2ggcXVlcmllcywgaWYKb24tYWNjZXNzIHBydW5pbmcgb2NjdXJzIGR1cmluZyB0 aGUgc2Nhbiwgd2UgY2FuIGNoZWNrIHdoZXRoZXIgdGhlIHBhZ2UKaGFzIGJlY29tZSBhbGwtdmlz aWJsZSBhbmQgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCBhY2NvcmRpbmdseS4KUHJldmlvdXNs eSwgb25seSB2YWN1dW0gYW5kIENPUFkgRlJFRVpFIG1hcmtlZCBwYWdlcyBhcyBhbGwtdmlzaWJs ZSBvcgphbGwtZnJvemVuLgoKVGhpcyBjb21taXQgaW1wbGVtZW50cyBvbi1hY2Nlc3MgVk0gc2V0 dGluZyBmb3Igc2VxdWVudGlhbCBzY2FucyBhcyB3ZWxsCmFzIGZvciB0aGUgdW5kZXJseWluZyBo ZWFwIHJlbGF0aW9uIGluIGluZGV4IHNjYW5zIGFuZCBiaXRtYXAgaGVhcApzY2Fucy4KCkF1dGhv cjogTWVsYW5pZSBQbGFnZW1hbiA8bWVsYW5pZXBsYWdlbWFuQGdtYWlsLmNvbT4KUmV2aWV3ZWQt Ynk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFyYXplbC5kZT4KUmV2aWV3ZWQtYnk6IEtpcmls bCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1W N1NPTHhkSzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtLmMgICAgICAgICAgICAgIHwgMTUgKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgMTUgKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMgICAgICAgICAgIHwgNDQgKysrKysrKysrKysrKysrKystLQogc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgICAgIHwgMjQgKysrKysrKyst LQogLi4uL3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCAgICAgICAgIHwgIDMgKy0K IDUgZmlsZXMgY2hhbmdlZCwgOTAgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBmYjdhNzU0OGFhMC4uZDlkYzc5ZjRhOTYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC01NzAsNiArNTcwLDcgQEAgaGVhcF9wcmVwYXJlX3Bh Z2VzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJQnVmZmVyCQlidWZmZXIgPSBzY2FuLT5yc19j YnVmOwogCUJsb2NrTnVtYmVyIGJsb2NrID0gc2Nhbi0+cnNfY2Jsb2NrOwogCVNuYXBzaG90CXNu YXBzaG90OworCUJ1ZmZlcgkgICAqdm1idWZmZXIgPSBOVUxMOwogCVBhZ2UJCXBhZ2U7CiAJaW50 CQkJbGluZXM7CiAJYm9vbAkJYWxsX3Zpc2libGU7CkBAIC01ODQsNyArNTg1LDkgQEAgaGVhcF9w cmVwYXJlX3BhZ2VzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJLyoKIAkgKiBQcnVuZSBhbmQg cmVwYWlyIGZyYWdtZW50YXRpb24gZm9yIHRoZSB3aG9sZSBwYWdlLCBpZiBwb3NzaWJsZS4KIAkg Ki8KLQloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX2Jhc2UucnNfcmQsIGJ1ZmZlcik7CisJ aWYgKHNzY2FuLT5yc19mbGFncyAmIFNPX0hJTlRfUkVMX1JFQURfT05MWSkKKwkJdm1idWZmZXIg PSAmc2Nhbi0+cnNfdm1idWZmZXI7CisJaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19iYXNl LnJzX3JkLCBidWZmZXIsIHZtYnVmZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJl IGxvY2sgb24gdGhlIGJ1ZmZlciBjb250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpAQCAtMTI2 MSw2ICsxMjY0LDcgQEAgaGVhcF9iZWdpbnNjYW4oUmVsYXRpb24gcmVsYXRpb24sIFNuYXBzaG90 IHNuYXBzaG90LAogCQkJCQkJCQkJCQkJCQkgIHNpemVvZihUQk1JdGVyYXRlUmVzdWx0KSk7CiAJ fQogCisJc2Nhbi0+cnNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJcmV0dXJuIChUYWJs ZVNjYW5EZXNjKSBzY2FuOwogfQpAQCAtMTI5OSw2ICsxMzAzLDEyIEBAIGhlYXBfcmVzY2FuKFRh YmxlU2NhbkRlc2Mgc3NjYW4sIFNjYW5LZXkga2V5LCBib29sIHNldF9wYXJhbXMsCiAJCXNjYW4t PnJzX2NidWYgPSBJbnZhbGlkQnVmZmVyOwogCX0KIAorCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4t PnJzX3ZtYnVmZmVyKSkKKwl7CisJCVJlbGVhc2VCdWZmZXIoc2Nhbi0+cnNfdm1idWZmZXIpOwor CQlzY2FuLT5yc192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJfQorCiAJLyoKIAkgKiBTT19U WVBFX0JJVE1BUFNDQU4gd291bGQgYmUgY2xlYW5lZCB1cCBoZXJlLCBidXQgaXQgZG9lcyBub3Qg aG9sZCBhbnkKIAkgKiBhZGRpdGlvbmFsIGRhdGEgdnMgYSBub3JtYWwgSGVhcFNjYW4KQEAgLTEz MzEsNiArMTM0MSw5IEBAIGhlYXBfZW5kc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCWlmIChC dWZmZXJJc1ZhbGlkKHNjYW4tPnJzX2NidWYpKQogCQlSZWxlYXNlQnVmZmVyKHNjYW4tPnJzX2Ni dWYpOwogCisJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNfdm1idWZmZXIpKQorCQlSZWxlYXNl QnVmZmVyKHNjYW4tPnJzX3ZtYnVmZmVyKTsKKwogCS8qCiAJICogTXVzdCBmcmVlIHRoZSByZWFk IHN0cmVhbSBiZWZvcmUgZnJlZWluZyB0aGUgQnVmZmVyQWNjZXNzU3RyYXRlZ3kuCiAJICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCA2YzJlNGUwOGIxNi4u MmNiOThlNTg5NTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpA QCAtODUsNiArODUsNyBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfYmVnaW4oUmVsYXRpb24gcmVsLCB1 aW50MzIgZmxhZ3MpCiAKIAloc2Nhbi0+eHNfYmFzZS5yZWwgPSByZWw7CiAJaHNjYW4tPnhzX2Ni dWYgPSBJbnZhbGlkQnVmZmVyOworCWhzY2FuLT54c192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7 CiAJaHNjYW4tPm1vZGlmaWVzX2Jhc2VfcmVsID0gIShmbGFncyAmIFNPX0hJTlRfUkVMX1JFQURf T05MWSk7CiAKIAlyZXR1cm4gJmhzY2FuLT54c19iYXNlOwpAQCAtMTAwLDYgKzEwMSwxMiBAQCBo ZWFwYW1faW5kZXhfZmV0Y2hfcmVzZXQoSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbikKIAkJUmVs ZWFzZUJ1ZmZlcihoc2Nhbi0+eHNfY2J1Zik7CiAJCWhzY2FuLT54c19jYnVmID0gSW52YWxpZEJ1 ZmZlcjsKIAl9CisKKwlpZiAoQnVmZmVySXNWYWxpZChoc2Nhbi0+eHNfdm1idWZmZXIpKQorCXsK KwkJUmVsZWFzZUJ1ZmZlcihoc2Nhbi0+eHNfdm1idWZmZXIpOworCQloc2Nhbi0+eHNfdm1idWZm ZXIgPSBJbnZhbGlkQnVmZmVyOworCX0KIH0KIAogc3RhdGljIHZvaWQKQEAgLTEzOSw3ICsxNDYs OCBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfdHVwbGUoc3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEg KnNjYW4sCiAJCSAqIFBydW5lIHBhZ2UsIGJ1dCBvbmx5IGlmIHdlIHdlcmVuJ3QgYWxyZWFkeSBv biB0aGlzIHBhZ2UKIAkJICovCiAJCWlmIChwcmV2X2J1ZiAhPSBoc2Nhbi0+eHNfY2J1ZikKLQkJ CWhlYXBfcGFnZV9wcnVuZV9vcHQoaHNjYW4tPnhzX2Jhc2UucmVsLCBoc2Nhbi0+eHNfY2J1Zik7 CisJCQloZWFwX3BhZ2VfcHJ1bmVfb3B0KGhzY2FuLT54c19iYXNlLnJlbCwgaHNjYW4tPnhzX2Ni dWYsCisJCQkJCQkJCWhzY2FuLT5tb2RpZmllc19iYXNlX3JlbCA/IE5VTEwgOiAmaHNjYW4tPnhz X3ZtYnVmZmVyKTsKIAl9CiAKIAkvKiBPYnRhaW4gc2hhcmUtbG9jayBvbiB0aGUgYnVmZmVyIHNv IHdlIGNhbiBleGFtaW5lIHZpc2liaWxpdHkgKi8KQEAgLTI0NzIsNiArMjQ4MCw3IEBAIEJpdG1h cEhlYXBTY2FuTmV4dEJsb2NrKFRhYmxlU2NhbkRlc2Mgc2NhbiwKIAlUQk1JdGVyYXRlUmVzdWx0 ICp0Ym1yZXM7CiAJT2Zmc2V0TnVtYmVyIG9mZnNldHNbVEJNX01BWF9UVVBMRVNfUEVSX1BBR0Vd OwogCWludAkJCW5vZmZzZXRzID0gLTE7CisJQnVmZmVyCSAgICp2bWJ1ZmZlciA9IE5VTEw7CiAK IAlBc3NlcnQoc2Nhbi0+cnNfZmxhZ3MgJiBTT19UWVBFX0JJVE1BUFNDQU4pOwogCUFzc2VydCho c2Nhbi0+cnNfcmVhZF9zdHJlYW0pOwpAQCAtMjUxOCw3ICsyNTI3LDkgQEAgQml0bWFwSGVhcFNj YW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2FuLAogCS8qCiAJICogUHJ1bmUgYW5kIHJlcGFp ciBmcmFnbWVudGF0aW9uIGZvciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9zc2libGUuCiAJICovCi0J aGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19yZCwgYnVmZmVyKTsKKwlpZiAoc2Nhbi0+cnNf ZmxhZ3MgJiBTT19ISU5UX1JFTF9SRUFEX09OTFkpCisJCXZtYnVmZmVyID0gJmhzY2FuLT5yc192 bWJ1ZmZlcjsKKwloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX3JkLCBidWZmZXIsIHZtYnVm ZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJlIGxvY2sgb24gdGhlIGJ1ZmZlciBj b250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwppbmRleCAzZDM0NTMyYjc2Ni4uMzkzZGZmNWFiM2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCkBAIC0yMDIsNiArMjAyLDggQEAgc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxf c2V0X3ZtKFBydW5lU3RhdGUgKnByc3RhdGUsCiAJCQkJCQkJCSAgUmVsYXRpb24gcmVsYXRpb24s CiAJCQkJCQkJCSAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFn ZSBoZWFwX3BhZ2UsCiAJCQkJCQkJCSAgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkJCQkgIFBydW5l UmVhc29uIHJlYXNvbiwKKwkJCQkJCQkJICBib29sIGRvX3BydW5lLCBib29sIGRvX2ZyZWV6ZSwK IAkJCQkJCQkJICBpbnQgbmxwZGVhZF9pdGVtcywKIAkJCQkJCQkJICB1aW50OCAqb2xkX3ZtYml0 cywKIAkJCQkJCQkJICB1aW50OCAqbmV3X3ZtYml0cyk7CkBAIC0yMjMsOSArMjI1LDEzIEBAIHN0 YXRpYyBUcmFuc2FjdGlvbklkIGdldF9jb25mbGljdF94aWQoYm9vbCBkb19wcnVuZSwgYm9vbCBk b19mcmVlemUsIGJvb2wgZG9fc2V0CiAgKiBpZiB0aGVyZSdzIG5vdCBhbnkgdXNlIGluIHBydW5p bmcuCiAgKgogICogQ2FsbGVyIG11c3QgaGF2ZSBwaW4gb24gdGhlIGJ1ZmZlciwgYW5kIG11c3Qg Km5vdCogaGF2ZSBhIGxvY2sgb24gaXQuCisgKgorICogSWYgdm1idWZmZXIgaXMgbm90IE5VTEws IGl0IGlzIG9rYXkgZm9yIHBydW5pbmcgdG8gc2V0IHRoZSB2aXNpYmlsaXR5IG1hcCBpZgorICog dGhlIHBhZ2UgaXMgYWxsLXZpc2libGUuIFdlIHdpbGwgdGFrZSBjYXJlIG9mIHBpbm5pbmcgYW5k LCBpZiBuZWVkZWQsCisgKiByZWFkaW5nIGluIHRoZSBwYWdlIG9mIHRoZSB2aXNpYmlsaXR5IG1h cC4KICAqLwogdm9pZAotaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVm ZmVyIGJ1ZmZlcikKK2hlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZl ciBidWZmZXIsIEJ1ZmZlciAqdm1idWZmZXIpCiB7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBh Z2UoYnVmZmVyKTsKIAlUcmFuc2FjdGlvbklkIHBydW5lX3hpZDsKQEAgLTMwNiw2ICszMTIsMTMg QEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikK IAkJCQkuY3V0b2ZmcyA9IE5VTEwsCiAJCQl9OwogCisJCQlpZiAodm1idWZmZXIpCisJCQl7CisJ CQkJdmlzaWJpbGl0eW1hcF9waW4ocmVsYXRpb24sIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZl ciksIHZtYnVmZmVyKTsKKwkJCQlwYXJhbXMub3B0aW9ucyB8PSBIRUFQX1BBR0VfUFJVTkVfVVBE QVRFX1ZNOworCQkJCXBhcmFtcy52bWJ1ZmZlciA9ICp2bWJ1ZmZlcjsKKwkJCX0KKwogCQkJaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoJnBhcmFtcywgJnByZXN1bHQsICZkdW1teV9vZmZfbG9j LAogCQkJCQkJCQkJICAgTlVMTCwgTlVMTCk7CiAKQEAgLTk0NSw2ICs5NTgsOSBAQCBpZGVudGlm eV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIs CiAgKiBjb3JydXB0ZWQsIGl0IHdpbGwgZml4IHRoZW0gYnkgY2xlYXJpbmcgdGhlIFZNIGJpdHMg YW5kIHZpc2liaWxpdHkgaGludC4KICAqIFRoaXMgZG9lcyBub3QgbmVlZCB0byBiZSBkb25lIGlu IGEgY3JpdGljYWwgc2VjdGlvbi4KICAqCisgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb25seSBh ZnRlciBkb19mcmVlemUgaGFzIGJlZW4gZGVjaWRlZCAoYW5kIGRvX3BydW5lCisgKiBoYXMgYmVl biBzZXQpLCBhcyB0aGVzZSBmYWN0b3IgaW50byBvdXIgaGV1cmlzdGljLWJhc2VkIGRlY2lzaW9u LgorICoKICAqIFJldHVybnMgdHJ1ZSBpZiBvbmUgb3IgYm90aCBWTSBiaXRzIHNob3VsZCBiZSBz ZXQsIGFsb25nIHdpdGggcmV0dXJuaW5nIHRoZQogICogY3VycmVudCB2YWx1ZSBvZiB0aGUgVk0g Yml0cyBpbiAqb2xkX3ZtYml0cyBhbmQgdGhlIGRlc2lyZWQgbmV3IHZhbHVlIG9mCiAgKiB0aGUg Vk0gYml0cyBpbiAqbmV3X3ZtYml0cy4KQEAgLTk1NCw2ICs5NzAsOCBAQCBoZWFwX3BhZ2Vfd2ls bF9zZXRfdm0oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAkJCQkJICBSZWxhdGlvbiByZWxhdGlvbiwK IAkJCQkJICBCbG9ja051bWJlciBoZWFwX2JsaywgQnVmZmVyIGhlYXBfYnVmZmVyLCBQYWdlIGhl YXBfcGFnZSwKIAkJCQkJICBCdWZmZXIgdm1idWZmZXIsCisJCQkJCSAgUHJ1bmVSZWFzb24gcmVh c29uLAorCQkJCQkgIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLAogCQkJCQkgIGludCBu bHBkZWFkX2l0ZW1zLAogCQkJCQkgIHVpbnQ4ICpvbGRfdm1iaXRzLAogCQkJCQkgIHVpbnQ4ICpu ZXdfdm1iaXRzKQpAQCAtOTYxLDYgKzk3OSwyNCBAQCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oUHJ1 bmVTdGF0ZSAqcHJzdGF0ZSwKIAlpZiAoIXByc3RhdGUtPmF0dGVtcHRfdXBkYXRlX3ZtKQogCQly ZXR1cm4gZmFsc2U7CiAKKwkvKgorCSAqIElmIHRoaXMgaXMgYW4gb24tYWNjZXNzIGNhbGwgYW5k IHdlJ3JlIG5vdCBhY3R1YWxseSBwcnVuaW5nLCBhdm9pZAorCSAqIHNldHRpbmcgdGhlIHZpc2li aWxpdHkgbWFwIGlmIGl0IHdvdWxkIG5ld2x5IGRpcnR5IHRoZSBoZWFwIHBhZ2Ugb3IsIGlmCisJ ICogdGhlIHBhZ2UgaXMgYWxyZWFkeSBkaXJ0eSwgaWYgZG9pbmcgc28gd291bGQgcmVxdWlyZSBp bmNsdWRpbmcgYQorCSAqIGZ1bGwtcGFnZSBpbWFnZSAoRlBJKSBvZiB0aGUgaGVhcCBwYWdlIGlu IHRoZSBXQUwuIFRoaXMgc2l0dWF0aW9uCisJICogc2hvdWxkIGJlIHJhcmUsIGFzIG9uLWFjY2Vz cyBwcnVuaW5nIGlzIG9ubHkgYXR0ZW1wdGVkIHdoZW4KKwkgKiBwZF9wcnVuZV94aWQgaXMgdmFs aWQuCisJICovCisJaWYgKHJlYXNvbiA9PSBQUlVORV9PTl9BQ0NFU1MgJiYKKwkJcHJzdGF0ZS0+ YWxsX3Zpc2libGUgJiYKKwkJIWRvX3BydW5lICYmICFkb19mcmVlemUgJiYKKwkJKCFCdWZmZXJJ c0RpcnR5KGhlYXBfYnVmZmVyKSB8fCBYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cChoZWFwX2J1 ZmZlcikpKQorCXsKKwkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS0+ YWxsX2Zyb3plbiA9IGZhbHNlOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJKm9sZF92bWJpdHMg PSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBfYmxrLAogCQkJCQkJCQkJ CSAgICZ2bWJ1ZmZlcik7CiAKQEAgLTExNTYsNiArMTE5Miw4IEBAIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJCQkgIGJ1ZmZlciwK IAkJCQkJCQkJCSAgcGFnZSwKIAkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkgIHBhcmFt cy0+cmVhc29uLAorCQkJCQkJCQkJICBkb19wcnVuZSwgZG9fZnJlZXplLAogCQkJCQkJCQkJICBw cnN0YXRlLmxwZGVhZF9pdGVtcywKIAkJCQkJCQkJCSAgJm9sZF92bWJpdHMsCiAJCQkJCQkJCQkg ICZuZXdfdm1iaXRzKTsKQEAgLTEyNDIsOSArMTI4MCw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAKIAkJTWFya0J1ZmZlckRpcnR5KGJ1 ZmZlcik7CiAKLQkJLyoKLQkJICogRW1pdCBhIFdBTCBYTE9HX0hFQVAyX1BSVU5FKiByZWNvcmQg c2hvd2luZyB3aGF0IHdlIGRpZAotCQkgKi8KKwkJLyogRW1pdCBhIFdBTCBYTE9HX0hFQVAyX1BS VU5FKiByZWNvcmQgc2hvd2luZyB3aGF0IHdlIGRpZCAqLwogCQlpZiAoUmVsYXRpb25OZWVkc1dB TChwYXJhbXMtPnJlbGF0aW9uKSkKIAkJewogCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShw YXJhbXMtPnJlbGF0aW9uLCBidWZmZXIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMzgyOTRiMzNmYWMu LjZlZDY4MWI4MTVjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC05NSw2ICs5NSwxMyBAQCB0eXBlZGVm IHN0cnVjdCBIZWFwU2NhbkRlc2NEYXRhCiAJICovCiAJUGFyYWxsZWxCbG9ja1RhYmxlU2Nhbldv cmtlckRhdGEgKnJzX3BhcmFsbGVsd29ya2VyZGF0YTsKIAorCS8qCisJICogRm9yIHNlcXVlbnRp YWwgc2NhbnMgYW5kIGJpdG1hcCBoZWFwIHNjYW5zLiBJZiB0aGUgcmVsYXRpb24gaXMgbm90CisJ ICogYmVpbmcgbW9kaWZpZWQsIG9uLWFjY2VzcyBwcnVuaW5nIG1heSByZWFkIGluIHRoZSBjdXJy ZW50IGhlYXAgcGFnZSdzCisJICogY29ycmVzcG9uZGluZyBWTSBibG9jayB0byB0aGlzIGJ1ZmZl ci4KKwkgKi8KKwlCdWZmZXIJCXJzX3ZtYnVmZmVyOworCiAJLyogdGhlc2UgZmllbGRzIG9ubHkg dXNlZCBpbiBwYWdlLWF0LWEtdGltZSBtb2RlIGFuZCBmb3IgYml0bWFwIHNjYW5zICovCiAJdWlu dDMyCQlyc19jaW5kZXg7CQkvKiBjdXJyZW50IHR1cGxlJ3MgaW5kZXggaW4gdmlzdHVwbGVzICov CiAJdWludDMyCQlyc19udHVwbGVzOwkJLyogbnVtYmVyIG9mIHZpc2libGUgdHVwbGVzIG9uIHBh Z2UgKi8KQEAgLTExNyw4ICsxMjQsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhGZXRjaEhlYXBE YXRhCiB7CiAJSW5kZXhGZXRjaFRhYmxlRGF0YSB4c19iYXNlOwkvKiBBTSBpbmRlcGVuZGVudCBw YXJ0IG9mIHRoZSBkZXNjcmlwdG9yICovCiAKLQlCdWZmZXIJCXhzX2NidWY7CQkvKiBjdXJyZW50 IGhlYXAgYnVmZmVyIGluIHNjYW4sIGlmIGFueSAqLwotCS8qIE5COiBpZiB4c19jYnVmIGlzIG5v dCBJbnZhbGlkQnVmZmVyLCB3ZSBob2xkIGEgcGluIG9uIHRoYXQgYnVmZmVyICovCisJLyoKKwkg KiBDdXJyZW50IGhlYXAgYnVmZmVyIGluIHNjYW4sIGlmIGFueS4gTkI6IGlmIHhzX2NidWYgaXMg bm90CisJICogSW52YWxpZEJ1ZmZlciwgd2UgaG9sZCBhIHBpbiBvbiB0aGF0IGJ1ZmZlci4KKwkg Ki8KKwlCdWZmZXIJCXhzX2NidWY7CisKKwkvKgorCSAqIEZvciBpbmRleCBzY2FucyB0aGF0IGRv IG5vdCBtb2RpZnkgdGhlIHVuZGVybHlpbmcgaGVhcCB0YWJsZSwgb24tYWNjZXNzCisJICogcHJ1 bmluZyBtYXkgcmVhZCBpbiB0aGUgY3VycmVudCBoZWFwIHBhZ2UncyBjb3JyZXNwb25kaW5nIFZN IGJsb2NrIHRvCisJICogdGhpcyBidWZmZXIuCisJICovCisJQnVmZmVyCQl4c192bWJ1ZmZlcjsK IAogCS8qCiAJICogU29tZSBvcHRpbWl6YXRpb25zIGNhbiBvbmx5IGJlIHBlcmZvcm1lZCBpZiB0 aGUgcXVlcnkgZG9lcyBub3QgbW9kaWZ5CkBAIC00MTksNyArNDM2LDggQEAgZXh0ZXJuIFRyYW5z YWN0aW9uSWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJ CQkJICBUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSk7CiAKIC8qIGluIGhlYXAvcHJ1bmVoZWFw LmMgKi8KLWV4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24s IEJ1ZmZlciBidWZmZXIpOworZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJCQkJQnVmZmVyICp2bWJ1ZmZlcik7CiBl eHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAq cGFyYW1zLAogCQkJCQkJCQkJICAgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQsCiAJCQkJCQkJ CQkgICBPZmZzZXROdW1iZXIgKm9mZl9sb2MsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVy eS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90 LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKaW5kZXggZWJlMmZhZTE3ODkuLmJkZDlm MGE2MmNkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2lj YWxfZGVjb2RpbmcucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzVfc3RhbmRieV9sb2dp Y2FsX2RlY29kaW5nLnBsCkBAIC0yOTYsNiArMjk2LDcgQEAgd2FsX2xldmVsID0gJ2xvZ2ljYWwn CiBtYXhfcmVwbGljYXRpb25fc2xvdHMgPSA0CiBtYXhfd2FsX3NlbmRlcnMgPSA0CiBhdXRvdmFj dXVtID0gb2ZmCitob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9uCiB9KTsKICRub2RlX3ByaW1hcnkt PmR1bXBfaW5mbzsKICRub2RlX3ByaW1hcnktPnN0YXJ0OwpAQCAtNzQ4LDcgKzc0OSw3IEBAIGNo ZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigkaGFuZGxlLAogJGxvZ3N0YXJ0ID0gLXMgJG5vZGVf c3RhbmRieS0+bG9nZmlsZTsKIAogcmVhY3RpdmVfc2xvdHNfY2hhbmdlX2hmc19hbmRfd2FpdF9m b3JfeG1pbnMoJ3NoYXJlZF9yb3dfcmVtb3ZhbF8nLAotCSdub19jb25mbGljdF8nLCAwLCAxKTsK Kwknbm9fY29uZmxpY3RfJywgMSwgMCk7CiAKICMgVGhpcyBzaG91bGQgbm90IHRyaWdnZXIgYSBj b25mbGljdAogd2FpdF91bnRpbF92YWN1dW1fY2FuX3JlbW92ZSgKLS0gCjIuNDMuMAoK --00000000000028078b064614a599 Content-Type: text/x-patch; charset="UTF-8"; name="v27-0014-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v27-0014-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj8ttnv613 RnJvbSBlYmEwYmZjZDgwYzY0YTJjODllNjMxZGI3N2YxYWZiMzA5MGRlNDcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjcgMTQvMTRdIFNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0Ck1JTUUtVmVyc2lvbjog MS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5z ZmVyLUVuY29kaW5nOiA4Yml0CgpOb3cgdGhhdCB2aXNpYmlsaXR5IG1hcCAoVk0pIHVwZGF0ZXMg Y2FuIG9jY3VyIGR1cmluZyByZWFkLW9ubHkgcXVlcmllcywKaXQgbWFrZXMgc2Vuc2UgdG8gYWxz byBzZXQgdGhlIHBhZ2XigJlzIHBkX3BydW5lX3hpZCBoaW50IGR1cmluZyBpbnNlcnRzLgpUaGlz IGVuYWJsZXMgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0byBydW4gYWZ0ZXIgYSBwYWdl IGlzCmZpbGxlZCB3aXRoIG5ld2x5IGluc2VydGVkIHR1cGxlcyB0aGUgZmlyc3QgdGltZSBpdCBp cyByZWFkLgoKVGhpcyBjaGFuZ2UgYWxzbyBhZGRyZXNzZXMgYSBsb25nLXN0YW5kaW5nIG5vdGUg aW4gaGVhcF9pbnNlcnQoKSBhbmQKaGVhcF9tdWx0aV9pbnNlcnQoKSwgd2hpY2ggb2JzZXJ2ZWQg dGhhdCBzZXR0aW5nIHBkX3BydW5lX3hpZCB3b3VsZApoZWxwIGNsZWFuIHVwIGFib3J0ZWQgaW5z ZXJ0aW9ucyBzb29uZXIuIFdpdGhvdXQgaXQsIHN1Y2ggdHVwbGVzIG1pZ2h0CmxpbmdlciB1bnRp bCBWQUNVVU0sIHdoZXJlYXMgbm93IHRoZXkgY2FuIGJlIHBydW5lZCBlYXJsaWVyLgoKU2V0dGlu ZyBwZF9wcnVuZV94aWQgb24gaW5zZXJ0IGNhbiBjYXVzZSBhIHBhZ2UgdG8gYmUgZGlydGllZCBh bmQKd3JpdHRlbiBvdXQgd2hlbiBpdCBwcmV2aW91c2x5IHdvdWxkIG5vdCBoYXZlIGJlZW4sIGFm ZmV0Y3RpbmcgdGhlCnJlcG9ydGVkIG51bWJlciBvZiBoaXRzIGluIHRoZSBpbmRleC1raWxsdHVw bGVzIGlzb2xhdGlvbiB0ZXN0LiBJdCBpcwp1bmNsZWFyIGlmIHRoaXMgaXMgYSBidWcgaW4gdGhl IHdheSBoaXRzIGFyZSB0cmFja2VkLCBhIGZhdWx0eSB0ZXN0CmV4cGVjdGF0aW9uLCBvciBpZiBz aW1wbHkgdXBkYXRpbmcgdGhlIHRlc3QncyBleHBlY3RlZCBvdXRwdXQgaXMKc3VmZmljaWVudCBy ZW1lZGlhdGlvbi4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAg ICAgICAgfCAyNSArKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jICAgICAgICAgfCAxNSArKysrKysrKysrLQogLi4uL21vZHVsZXMvaW5kZXgv ZXhwZWN0ZWQva2lsbHR1cGxlcy5vdXQgICAgIHwgIDYgKystLS0KIDMgZmlsZXMgY2hhbmdlZCwg MzQgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0u YwppbmRleCBkOWRjNzlmNGE5Ni4uY2NlYmMxZjI0NGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bS5jCkBAIC0yMTE5LDYgKzIxMTksNyBAQCBoZWFwX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwg SGVhcFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIAlUcmFuc2FjdGlvbklkIHhpZCA9IEdldEN1 cnJlbnRUcmFuc2FjdGlvbklkKCk7CiAJSGVhcFR1cGxlCWhlYXB0dXA7CiAJQnVmZmVyCQlidWZm ZXI7CisJUGFnZQkJcGFnZTsKIAlCdWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAli b29sCQlhbGxfdmlzaWJsZV9jbGVhcmVkID0gZmFsc2U7CiAKQEAgLTIxNzgsMTUgKzIxNzksMTkg QEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENvbW1hbmRJ ZCBjaWQsCiAJfQogCiAJLyoKLQkgKiBYWFggU2hvdWxkIHdlIHNldCBQYWdlU2V0UHJ1bmFibGUg b24gdGhpcyBwYWdlID8KKwkgKiBTZXQgcGRfcHJ1bmVfeGlkIHRvIHRyaWdnZXIgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoKSBvbmNlIHRoZSBwYWdlCisJICogaXMgZnVsbCBzbyB0aGF0IHdl IGNhbiBzZXQgdGhlIHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgogCSAqCi0JICogVGhlIGlu c2VydGluZyB0cmFuc2FjdGlvbiBtYXkgZXZlbnR1YWxseSBhYm9ydCB0aHVzIG1ha2luZyB0aGlz IHR1cGxlCi0JICogREVBRCBhbmQgaGVuY2UgYXZhaWxhYmxlIGZvciBwcnVuaW5nLiBUaG91Z2gg d2UgZG9uJ3Qgd2FudCB0byBvcHRpbWl6ZQotCSAqIGZvciBhYm9ydHMsIGlmIG5vIG90aGVyIHR1 cGxlIGluIHRoaXMgcGFnZSBpcyBVUERBVEVkL0RFTEVURWQsIHRoZQotCSAqIGFib3J0ZWQgdHVw bGUgd2lsbCBuZXZlciBiZSBwcnVuZWQgdW50aWwgbmV4dCB2YWN1dW0gaXMgdHJpZ2dlcmVkLgor CSAqIFNldHRpbmcgcGRfcHJ1bmVfeGlkIGlzIGFsc28gaGFuZHkgaWYgdGhlIGluc2VydGluZyB0 cmFuc2FjdGlvbgorCSAqIGV2ZW50dWFsbHkgYWJvcnRzIG1ha2luZyB0aGlzIHR1cGxlIERFQUQg YW5kIGhlbmNlIGF2YWlsYWJsZSBmb3IKKwkgKiBwcnVuaW5nLiBJZiBubyBvdGhlciB0dXBsZSBp biB0aGlzIHBhZ2UgaXMgVVBEQVRFZC9ERUxFVEVkLCB0aGUgYWJvcnRlZAorCSAqIHR1cGxlIHdv dWxkIG5ldmVyIG90aGVyd2lzZSBiZSBwcnVuZWQgdW50aWwgbmV4dCB2YWN1dW0gaXMgdHJpZ2dl cmVkLgogCSAqCi0JICogSWYgeW91IGRvIGFkZCBQYWdlU2V0UHJ1bmFibGUgaGVyZSwgYWRkIGl0 IGluIGhlYXBfeGxvZ19pbnNlcnQgdG9vLgorCSAqIERvbid0IHNldCBpdCBpZiB3ZSBhcmUgaW4g Ym9vdHN0cmFwIG1vZGUsIHRob3VnaC4KIAkgKi8KKwlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZm ZXIpOworCWlmIChUcmFuc2FjdGlvbklkSXNOb3JtYWwoeGlkKSkKKwkJUGFnZVNldFBydW5hYmxl KHBhZ2UsIHhpZCk7CiAKIAlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKIApAQCAtMjE5Niw3ICsy MjAxLDYgQEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENv bW1hbmRJZCBjaWQsCiAJCXhsX2hlYXBfaW5zZXJ0IHhscmVjOwogCQl4bF9oZWFwX2hlYWRlciB4 bGhkcjsKIAkJWExvZ1JlY1B0cglyZWNwdHI7Ci0JCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdl KGJ1ZmZlcik7CiAJCXVpbnQ4CQlpbmZvID0gWExPR19IRUFQX0lOU0VSVDsKIAkJaW50CQkJYnVm ZmxhZ3MgPSAwOwogCkBAIC0yNTYwLDggKzI1NjQsMTMgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVs YXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQl9 CiAKIAkJLyoKLQkJICogWFhYIFNob3VsZCB3ZSBzZXQgUGFnZVNldFBydW5hYmxlIG9uIHRoaXMg cGFnZSA/IFNlZSBoZWFwX2luc2VydCgpCisJCSAqIFNldCBwZF9wcnVuZV94aWQuIFNlZSBoZWFw X2luc2VydCgpIGZvciBtb3JlIG9uIHdoeSB3ZSBkbyB0aGlzIHdoZW4KKwkJICogaW5zZXJ0aW5n IHR1cGxlcy4gVGhpcyBvbmx5IG1ha2VzIHNlbnNlIGlmIHdlIGFyZW4ndCBhbHJlYWR5CisJCSAq IHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuIGluIHRoZSBWTS4gV2UgYWxzbyBkb24ndCBzZXQgaXQg aW4KKwkJICogYm9vdHN0cmFwIG1vZGUuCiAJCSAqLworCQlpZiAoIWFsbF9mcm96ZW5fc2V0ICYm IFRyYW5zYWN0aW9uSWRJc05vcm1hbCh4aWQpKQorCQkJUGFnZVNldFBydW5hYmxlKHBhZ2UsIHhp ZCk7CiAKIAkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jCmluZGV4IDQ3ZDI0Nzk0MTVlLi5hYjJkYjkzMWFhYyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC00NDcsNiArNDQ3LDEyIEBAIGhlYXBfeGxvZ19p bnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJZnJlZXNwYWNlID0gUGFnZUdldEhl YXBGcmVlU3BhY2UocGFnZSk7IC8qIG5lZWRlZCB0byB1cGRhdGUgRlNNIGJlbG93ICovCiAKKwkJ LyoKKwkJICogU2V0IHRoZSBwYWdlIHBydW5hYmxlIHRvIHRyaWdnZXIgb24tYWNjZXNzIHBydW5p bmcgbGF0ZXIgd2hpY2ggbWF5CisJCSAqIHNldCB0aGUgcGFnZSBhbGwtdmlzaWJsZSBpbiB0aGUg Vk0uCisJCSAqLworCQlQYWdlU2V0UHJ1bmFibGUocGFnZSwgWExvZ1JlY0dldFhpZChyZWNvcmQp KTsKKwogCQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7CiAKIAkJaWYgKHhscmVjLT5mbGFncyAmIFhM SF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKQEAgLTU5Niw5ICs2MDIsMTYgQEAgaGVhcF94 bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJaWYgKHhscmVjLT5m bGFncyAmIFhMSF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKIAkJCVBhZ2VDbGVhckFsbFZp c2libGUocGFnZSk7CiAKLQkJLyogWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCBpbXBsaWVzIHRo YXQgYWxsIHR1cGxlcyBhcmUgdmlzaWJsZSAqLworCQkvKgorCQkgKiBYTEhfSU5TRVJUX0FMTF9G Uk9aRU5fU0VUIGltcGxpZXMgdGhhdCBhbGwgdHVwbGVzIGFyZSB2aXNpYmxlLiBJZgorCQkgKiB3 ZSBhcmUgbm90IHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuLCB0aGVuIHNldCB0aGUgcGFnZSdzIHBy dW5hYmxlCisJCSAqIGhpbnQgc28gdGhhdCB3ZSB0cmlnZ2VyIG9uLWFjY2VzcyBwcnVuaW5nIGxh dGVyIHdoaWNoIG1heSBzZXQgdGhlCisJCSAqIHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgor CQkgKi8KIAkJaWYgKHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQpCiAJ CQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJZWxzZQorCQkJUGFnZVNldFBydW5hYmxlKHBh Z2UsIFhMb2dSZWNHZXRYaWQocmVjb3JkKSk7CiAKIAkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7 CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmRleC9leHBlY3RlZC9raWxsdHVw bGVzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5kZXgvZXhwZWN0ZWQva2lsbHR1cGxlcy5vdXQK aW5kZXggYmU3ZGRkNzU2ZWYuLmIyOWYyNDM0YjAwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1 bGVzL2luZGV4L2V4cGVjdGVkL2tpbGx0dXBsZXMub3V0CisrKyBiL3NyYy90ZXN0L21vZHVsZXMv aW5kZXgvZXhwZWN0ZWQva2lsbHR1cGxlcy5vdXQKQEAgLTU0LDcgKzU0LDcgQEAgc3RlcCBmbHVz aDogU0VMRUNUIEZST00gcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBzdGVwIHJlc3VsdDog U0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCAtIGNvdW50ZXIuaGVhcF9hY2Nl c3NlcyBBUyBuZXdfaGVhcF9hY2Nlc3NlcyBGUk9NIGNvdW50ZXIsIHBnX3N0YXRpb19hbGxfdGFi bGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZSc7CiBuZXdfaGVhcF9hY2Nlc3Nl cwogLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAxCisgICAgICAgICAgICAgICAg MgogKDEgcm93KQogCiBzdGVwIG1lYXN1cmU6IFVQREFURSBjb3VudGVyIFNFVCBoZWFwX2FjY2Vz c2VzID0gKFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgRlJPTSBwZ19zdGF0 aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnKTsKQEAgLTEz MCw3ICsxMzAsNyBAQCBzdGVwIGZsdXNoOiBTRUxFQ1QgRlJPTSBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2goKTsKIHN0ZXAgcmVzdWx0OiBTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3Nf aGl0IC0gY291bnRlci5oZWFwX2FjY2Vzc2VzIEFTIG5ld19oZWFwX2FjY2Vzc2VzIEZST00gY291 bnRlciwgcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1 cGxlJzsKIG5ld19oZWFwX2FjY2Vzc2VzCiAtLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAg ICAgIDEKKyAgICAgICAgICAgICAgICAyCiAoMSByb3cpCiAKIHN0ZXAgbWVhc3VyZTogVVBEQVRF IGNvdW50ZXIgU0VUIGhlYXBfYWNjZXNzZXMgPSAoU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVh cF9ibGtzX2hpdCBGUk9NIHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2ls bF9wcmlvcl90dXBsZScpOwpAQCAtMjgzLDcgKzI4Myw3IEBAIHN0ZXAgZmx1c2g6IFNFTEVDVCBG Uk9NIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogc3RlcCByZXN1bHQ6IFNFTEVDVCBoZWFw X2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgLSBjb3VudGVyLmhlYXBfYWNjZXNzZXMgQVMgbmV3 X2hlYXBfYWNjZXNzZXMgRlJPTSBjb3VudGVyLCBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSBy ZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnOwogbmV3X2hlYXBfYWNjZXNzZXMKIC0tLS0tLS0t LS0tLS0tLS0tCi0gICAgICAgICAgICAgICAgMQorICAgICAgICAgICAgICAgIDIKICgxIHJvdykK IAogc3RlcCBtZWFzdXJlOiBVUERBVEUgY291bnRlciBTRVQgaGVhcF9hY2Nlc3NlcyA9IChTRUxF Q1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IEZST00gcGdfc3RhdGlvX2FsbF90YWJs ZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJyk7Ci0tIAoyLjQzLjAKCg== --00000000000028078b064614a599--