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 1vdAuq-00EtLu-16 for pgsql-hackers@arkaria.postgresql.org; Tue, 06 Jan 2026 17:32:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vdAup-009dUR-00 for pgsql-hackers@arkaria.postgresql.org; Tue, 06 Jan 2026 17:32:19 +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 1vdAuo-009dUH-1F for pgsql-hackers@lists.postgresql.org; Tue, 06 Jan 2026 17:32:19 +0000 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vdAuj-004vwp-1e for pgsql-hackers@lists.postgresql.org; Tue, 06 Jan 2026 17:32:18 +0000 Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-64fabaf9133so2081767a12.3 for ; Tue, 06 Jan 2026 09:32:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767720733; x=1768325533; 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=VQKbpB7Jo0lnzF1vgVcxdotaKRcuUGcijtyRjl2VRVY=; b=Pr9GIv1bBL7WT0bc8J2Tj+6lhXevN14aGdoR3ybI+ZHYgNLekweQOI2zuCl9/6Iuj1 iseJL6VouW5QvvkMxPrgLVRlP4iSM5IJ03phc6yCeKxYMcK4DlS8WuQKvUDwdkT/4eg6 yCk+JrVZ9mByX+PIpiJRllunqrpBz1teV8Y8n/B8hFEe8auJUGp+jnSRE5PWRkQvwwW8 3q4/RJ99uDwaQgif7dx0M1e1P+tda/DUMHjpLIgPlZGvwkLg5/z0o77z9FRtm7cuVGUh Fifh+U2ZKUl5td52TapFGxyqFFfjAT7wjySDVfd39GRef1tpUBwdiNSnDg1h1yu3JB9O y8mA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767720733; x=1768325533; 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=VQKbpB7Jo0lnzF1vgVcxdotaKRcuUGcijtyRjl2VRVY=; b=CTNg1dEOobGFFKBkEO7QX9MCtOrw90h43RhQonrXk6PBWD04dPZt5jb3mh4w2OyVuk fe/xH18kycV09Nc2Ts2O15wljkeHKjl+sXc0e4MoLfL3rtpHBw4YGpQdlMY7rnhutOYm KUVz/k1AbZFdZmOaEDAFQnuBFlky+DLYlzMnA4Mv+nHljlbSOo4EjB+KJ5EZuZYb1VOv naQGrNX00meTrrfmKhSN7uG3GaA+oDZS3Lr1klquCaiRvGmk8GV4yaudCm+jqfncTaV0 RkY7Mn6LncryfaywRDvX/pmPBUJWVZi1SzBto/dHmlQsOv8/JSA49weuuaIrnBcmafwe nC6w== X-Forwarded-Encrypted: i=1; AJvYcCUi+3VFTst3hmaewlhWHpiFQ0i1S2dBSnnCnEhh4gc8xrXBJZ5rUqJ4mteKMjL80g529V/a0nQz7wJ9RKP0@lists.postgresql.org X-Gm-Message-State: AOJu0YyCoMvMUuY1eXSI8b8iNP2tn8ewNXgHSwtIpH/iO91yleWASgkk 7K9ofAAQsFCp7ofNMkUXQ6ZUucJh7fLmb37yRnsHF7D5inB7KECkn14lMYC1YASl+Qbz6uV7qnc sQczuHlQRKtV4LshvoCfo8ySHdamXc7LM7Sll X-Gm-Gg: AY/fxX7/fjirv0RfmOR2fXtnfHQuSM+Y3OB3g++v7zUKpU/K/c5/IRB+kOE4UcfGSVo DLYkW6bjncSEIU1tJaMB0SK26nViqLcBj5N4vgOJBVK8x2SiOyZi8KB5k5KxrANq3YdZcFdeYy5 ckxH97UP/PWrCJGocHAkJOiLR9k9MOQVPpWWvFvoFWhGN11CGWz+VdxqNYXfEP/ub5G5TF4B04T xP4fhE/pNJPZDpC9QxLAVj8jw/fQpaNvYqR/9IqXxmwuDOAe/5wXSzgoYI0prAtDPHNfeKGebab 1KglBhyqeVDfjkr+NOrPVbCA7mTs X-Google-Smtp-Source: AGHT+IGjIQixrDOrl3SNyfJuFqInd/A2yHTaBtM5FDLqFt9qYS1TMgpphj/KdRJ7tXyM4/FX1yKvlUplHAZK1mO1Nvc= X-Received: by 2002:a05:6402:34c4:b0:64b:572e:6ba8 with SMTP id 4fb4d7f45d1cf-65079685b72mr3254654a12.32.1767720732356; Tue, 06 Jan 2026 09:32:12 -0800 (PST) MIME-Version: 1.0 References: <2wk7jo4m4qwh5sn33pfgerdjfujebbccsmmlownybddbh6nawl@mdyyqpqzxjek> <6BC5DBAB-6084-4BB8-8450-52E9648AB021@gmail.com> <7F5BCD7A-764D-4D8D-8E27-6F2CAAEA1CEE@gmail.com> <4379FDA3-9446-4E2C-9C15-32EFE8D4F31B@yandex-team.ru> In-Reply-To: <4379FDA3-9446-4E2C-9C15-32EFE8D4F31B@yandex-team.ru> From: Melanie Plageman Date: Tue, 6 Jan 2026 12:31:57 -0500 X-Gm-Features: AQt7F2rQMCoz5aTW1kXgtg1KcfvPfp1ssQMFCuS1MC3QKw2gYGL3mHxFfOo6Qtk Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Andrey Borodin Cc: Kirill Reshke , Chao Li , Xuneng Zhou , Andres Freund , Robert Haas , PostgreSQL Hackers , Heikki Linnakangas Content-Type: multipart/mixed; boundary="00000000000050ca310647bb8e6c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000050ca310647bb8e6c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Jan 6, 2026 at 4:40=E2=80=AFAM Andrey Borodin wrote: > > > > > I've tried to take an attempt to review some patches of this patchset. It= 's huge and mostly polished. I've added attributed your review on the patches you specifically mention here (and from previous emails you sent). Let me know if there are other patches you reviewed that you did not mention. > In a step "Pass down information on table modification to scan node" you = pass SO_HINT_REL_READ_ONLY flag in IndexNext() and BitmapTableScanSetup(), = but not in IndexNextWithReorder() and IndexOnlyNext(). Is there a reason wh= y index scans with ordering cannot use on-access VM setting? Great point, I simply hadn't tested those cases and didn't think to add them. I've added them in attached v33. While looking at other callers of index_beginscan(), I was wondering if systable_beginscan() and systable_beginscan_ordered() should ever pass SO_HINT_REL_READ_ONLY. I guess we would need to pass if the operation is read-only above the index_beginscan() -- I'm not sure if we always know in the caller of systable_beginscan() whether this operation will modify the catalog. That seems like it could be a separate project, though, so maybe it is better to say this feature is just for regular tables. As for the other cases: We don't have the relation range table index in check_exclusion_or_unique_constraints(), so I don't think we can do it there. And I think that the other index scan cases like in replication code or get_actual_variable_endpoint() are too small to be worth it, don't have the needed info, or don't do on-access pruning (bc of the snapshot type they use). > Also, comment about visibilitymap_set() says "Callers that log VM changes= separately should use visibilitymap_set()" as if visibilitymap_set() is so= me other function. Ah, yes, I forgot to remove that when I removed the old visibilitymap_set() and made visibilitymap_set_vmbits() into visiblitymap_set(). Done in v33. - Melanie --00000000000050ca310647bb8e6c Content-Type: text/x-patch; charset="UTF-8"; name="v33-0001-Combine-visibilitymap_set-cases-in-lazy_scan_pru.patch" Content-Disposition: attachment; filename="v33-0001-Combine-visibilitymap_set-cases-in-lazy_scan_pru.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk2v1m760 RnJvbSA4ZTEyODZjMWE2ZGJmZTMzMDlkMTExYWFhMjFhZjVhOGU2MjM3YmI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDggRGVjIDIwMjUgMTU6NDk6NTQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMyAwMS8xNl0gQ29tYmluZSB2aXNpYmlsaXR5bWFwX3NldCgpIGNhc2VzIGluCiBsYXp5 X3NjYW5fcHJ1bmUoKQpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47 IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKbGF6eV9zY2Fu X3BydW5lKCkgcHJldmlvdXNseSBoYWQgdHdvIHNlcGFyYXRlIGNhc2VzIHRoYXQgY2FsbGVkCnZp c2liaWxpdHltYXBfc2V0KCkgYWZ0ZXIgcHJ1bmluZyBhbmQgZnJlZXppbmcuIFRoZXNlIGJyYW5j aGVzIHdlcmUKbmVhcmx5IGlkZW50aWNhbCBleGNlcHQgdGhhdCBvbmUgYXR0ZW1wdGVkIHRvIGF2 b2lkIGRpcnR5aW5nIHRoZSBoZWFwCmJ1ZmZlci4gSG93ZXZlciwgdGhhdCBzaXR1YXRpb24gY2Fu IG5ldmVyIG9jY3VyIOKAlCB0aGUgaGVhcCBidWZmZXIgY2Fubm90CmJlIGNsZWFuIGF0IHRoYXQg cG9pbnQgKGFuZCB3ZSB3b3VsZCBoaXQgYW4gYXNzZXJ0aW9uIGlmIGl0IHdlcmUpLgoKSW4gbGF6 eV9zY2FuX3BydW5lKCksIHdoZW4gd2UgY2hhbmdlIGEgcHJldmlvdXNseSBhbGwtdmlzaWJsZSBw YWdlIHRvCmFsbC1mcm96ZW4gYW5kIHRoZSBwYWdlIHdhcyByZWNvcmRlZCBhcyBhbGwtdmlzaWJs ZSBpbiB0aGUgdmlzaWJpbGl0eQptYXAgYnkgZmluZF9uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKCks IHRoZSBoZWFwIGJ1ZmZlciB3aWxsIGFsd2F5cyBiZQpkaXJ0eS4gRWl0aGVyIHdlIGhhdmUganVz dCBmcm96ZW4gYSB0dXBsZSBhbmQgYWxyZWFkeSBkaXJ0aWVkIHRoZQpidWZmZXIsIG9yIHRoZSBi dWZmZXIgd2FzIG1vZGlmaWVkIGJldHdlZW4gZmluZF9uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKCkK YW5kIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgYW5kIHRoZW4gcHJ1bmVkIGluCmhlYXBf cGFnZV9wcnVuZV9hbmRfZnJlZXplKCkuCgpBZGRpdGlvbmFsbHksIFhMb2dSZWdpc3RlckJ1ZmZl cigpIGFzc2VydHMgdGhhdCB0aGUgYnVmZmVyIGlzIGRpcnR5LCBzbwphdHRlbXB0aW5nIHRvIGFk ZCBhIGNsZWFuIGhlYXAgYnVmZmVyIHRvIHRoZSBXQUwgY2hhaW4gd291bGQgYXNzZXJ0IG91dAph bnl3YXkuCgpTaW5jZSB0aGUg4oCcY2xlYW4gaGVhcCBidWZmZXIgd2l0aCBhbHJlYWR5IHNldCBW TeKAnSBjYXNlIGlzIGltcG9zc2libGUsCnRoZSB0d28gdmlzaWJpbGl0eW1hcF9zZXQoKSBicmFu Y2hlcyBpbiBsYXp5X3NjYW5fcHJ1bmUoKSBjYW4gYmUgbWVyZ2VkLgpEb2luZyBzbyBtYWtlcyB0 aGUgaW50ZW50IGNsZWFyZXIgYW5kIGVtcGhhc2l6ZXMgdGhhdCB0aGUgaGVhcCBidWZmZXIKbXVz dCBhbHdheXMgYmUgbWFya2VkIGRpcnR5IGJlZm9yZSBiZWluZyBhZGRlZCB0byB0aGUgV0FMIGNo YWluLgoKVGhpcyBjb21taXQgYWxzbyBhZGRzIGEgdGVzdCBjYXNlIGZvciB2YWN1dW1pbmcgd2hl biBubyBoZWFwCm1vZGlmaWNhdGlvbnMgYXJlIHJlcXVpcmVkLiBDdXJyZW50bHkgdGhpcyBlbnN1 cmVzIHRoYXQgdGhlIGhlYXAgYnVmZmVyCmlzIG1hcmtlZCBkaXJ0eSBiZWZvcmUgaXQgaXMgYWRk ZWQgdG8gdGhlIFdBTCBjaGFpbiwgYnV0IGlmIHdlIGxhdGVyCnJlbW92ZSB0aGUgaGVhcCBidWZm ZXIgZnJvbSB0aGUgVk0tc2V0IFdBTCBjaGFpbiBvciBwYXNzIGl0IHdpdGggdGhlClJFR0JVRl9O T19DSEFOR0VTIGZsYWcsIHRoaXMgdGVzdCB3b3VsZCBndWFyZCB0aGF0IGJlaGF2aW9yLgoKQXV0 aG9yOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdl ZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFNyaW5h dGggUmVkZHkgU2FkaXBpcmFsbGEgPHNyaW5hdGgyMTMzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6 IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBYdW5l bmcgWmhvdSA8eHVuZW5nemhvdUBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdy LmVzL20vNUNFQUExNjItNjdCMS00NERBLUI2MEQtOEI2NTcxN0U4QjA1JTQwZ21haWwuY29tCkRp c2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vZmxhdC9DQUFLUnVfWld4NWdDYmVDZjdQV0N2 OHA1JTNEJTNEYjdFRXdzMFZEMndrc0R4cFhDdkN5SHZRJTQwbWFpbC5nbWFpbC5jb20KLS0tCiAu Li4vcGdfdmlzaWJpbGl0eS9leHBlY3RlZC9wZ192aXNpYmlsaXR5Lm91dCAgfCA0NCArKysrKysr KysrCiBjb250cmliL3BnX3Zpc2liaWxpdHkvc3FsL3BnX3Zpc2liaWxpdHkuc3FsICAgfCAyMCAr KysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgICAgICAgIHwgODcg KysrKy0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCA2 OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3Zpc2liaWxpdHkvZXhwZWN0 ZWQvcGdfdmlzaWJpbGl0eS5vdXQgYi9jb250cmliL3BnX3Zpc2liaWxpdHkvZXhwZWN0ZWQvcGdf dmlzaWJpbGl0eS5vdXQKaW5kZXggMDlmYTU5MzNhMzUuLmUxMGYxNzA2MDE1IDEwMDY0NAotLS0g YS9jb250cmliL3BnX3Zpc2liaWxpdHkvZXhwZWN0ZWQvcGdfdmlzaWJpbGl0eS5vdXQKKysrIGIv Y29udHJpYi9wZ192aXNpYmlsaXR5L2V4cGVjdGVkL3BnX3Zpc2liaWxpdHkub3V0CkBAIC0xLDQg KzEsNSBAQAogQ1JFQVRFIEVYVEVOU0lPTiBwZ192aXNpYmlsaXR5OworQ1JFQVRFIEVYVEVOU0lP TiBwYWdlaW5zcGVjdDsKIC0tCiAtLSByZWNlbnRseS1kcm9wcGVkIHRhYmxlCiAtLQpAQCAtMjA0 LDYgKzIwNSw0OSBAQCBzZWxlY3QgcGdfdHJ1bmNhdGVfdmlzaWJpbGl0eV9tYXAoJ3Rlc3RfcGFy dGl0aW9uJyk7CiAgCiAoMSByb3cpCiAKKy0tIHRlc3QgdGhlIGNhc2Ugd2hlcmUgdmFjdXVtIHBo YXNlIEkgZG9lcyBub3QgbmVlZCB0byBtb2RpZnkgdGhlIGhlYXAgYnVmZmVyCistLSBhbmQgb25s eSBuZWVkcyB0byBzZXQgdGhlIFZNCitjcmVhdGUgdGFibGUgdGVzdF92YWNfdW5tb2RpZmllZF9o ZWFwKGEgaW50KTsKK2luc2VydCBpbnRvIHRlc3RfdmFjX3VubW9kaWZpZWRfaGVhcCB2YWx1ZXMg KDEpOwordmFjdXVtIChmcmVlemUpIHRlc3RfdmFjX3VubW9kaWZpZWRfaGVhcDsKK3NlbGVjdCBw Z192aXNpYmlsaXR5X21hcF9zdW1tYXJ5KCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnKTsKKyBw Z192aXNpYmlsaXR5X21hcF9zdW1tYXJ5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KDEsMSkKKygxIHJvdykKKworLS0gdGhlIGNoZWNrcG9pbnQgY2xlYW5zIHRoZSBidWZmZXIgZGly dGllZCBieSBmcmVlemluZyB0aGUgc29sZSB0dXBsZQorY2hlY2twb2ludDsKKy0tIHRydW5jYXRp bmcgdGhlIFZNIGVuc3VyZXMgdGhhdCB0aGUgbmV4dCB2YWN1dW0gd2lsbCBuZWVkIHRvIHNldCBp dAorc2VsZWN0IHBnX3RydW5jYXRlX3Zpc2liaWxpdHlfbWFwKCd0ZXN0X3ZhY191bm1vZGlmaWVk X2hlYXAnKTsKKyBwZ190cnVuY2F0ZV92aXNpYmlsaXR5X21hcCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IHBnX3Zpc2liaWxpdHlfbWFwX3N1bW1h cnkoJ3Rlc3RfdmFjX3VubW9kaWZpZWRfaGVhcCcpOworIHBnX3Zpc2liaWxpdHlfbWFwX3N1bW1h cnkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMCwwKQorKDEgcm93KQorCistLSB0 aG91Z2ggdGhlIFZNIGlzIHRydW5jYXRlZCwgdGhlIGhlYXAgcGFnZS1sZXZlbCB2aXNpYmlsaXR5 IGhpbnQsCistLSBQRF9BTExfVklTSUJMRSBzaG91bGQgc3RpbGwgYmUgc2V0CitTRUxFQ1QgKGZs YWdzICYgeCcwMDA0Jzo6aW50KSA8PiAwCisgICAgICAgIEZST00gcGFnZV9oZWFkZXIoZ2V0X3Jh d19wYWdlKCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnLCAwKSk7CisgP2NvbHVtbj8gCistLS0t LS0tLS0tCisgdAorKDEgcm93KQorCistLSB2YWN1dW0gc2V0cyB0aGUgVk0KK3ZhY3V1bSB0ZXN0 X3ZhY191bm1vZGlmaWVkX2hlYXA7CitzZWxlY3QgcGdfdmlzaWJpbGl0eV9tYXBfc3VtbWFyeSgn dGVzdF92YWNfdW5tb2RpZmllZF9oZWFwJyk7CisgcGdfdmlzaWJpbGl0eV9tYXBfc3VtbWFyeSAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgxLDEpCisoMSByb3cpCisKIC0tIHRlc3Qg Y29weSBmcmVlemUKIGNyZWF0ZSB0YWJsZSBjb3B5ZnJlZXplIChhIGludCwgYiBjaGFyKDE1MDAp KTsKIC0tIGxvYWQgYWxsIHJvd3MgdmlhIENPUFkgRlJFRVpFIGFuZCBlbnN1cmUgdGhhdCBhbGwg cGFnZXMgYXJlIHNldCBhbGwtdmlzaWJsZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ192aXNpYmls aXR5L3NxbC9wZ192aXNpYmlsaXR5LnNxbCBiL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9zcWwvcGdf dmlzaWJpbGl0eS5zcWwKaW5kZXggNWFmMDZlYzViNzYuLjU3YWY4YTBjNWI2IDEwMDY0NAotLS0g YS9jb250cmliL3BnX3Zpc2liaWxpdHkvc3FsL3BnX3Zpc2liaWxpdHkuc3FsCisrKyBiL2NvbnRy aWIvcGdfdmlzaWJpbGl0eS9zcWwvcGdfdmlzaWJpbGl0eS5zcWwKQEAgLTEsNCArMSw1IEBACiBD UkVBVEUgRVhURU5TSU9OIHBnX3Zpc2liaWxpdHk7CitDUkVBVEUgRVhURU5TSU9OIHBhZ2VpbnNw ZWN0OwogCiAtLQogLS0gcmVjZW50bHktZHJvcHBlZCB0YWJsZQpAQCAtOTQsNiArOTUsMjUgQEAg c2VsZWN0IGNvdW50KCopID4gMCBmcm9tIHBnX3Zpc2liaWxpdHlfbWFwX3N1bW1hcnkoJ3Rlc3Rf cGFydGl0aW9uJyk7CiBzZWxlY3QgKiBmcm9tIHBnX2NoZWNrX2Zyb3plbigndGVzdF9wYXJ0aXRp b24nKTsgLS0gaG9wZWZ1bGx5IG5vbmUKIHNlbGVjdCBwZ190cnVuY2F0ZV92aXNpYmlsaXR5X21h cCgndGVzdF9wYXJ0aXRpb24nKTsKIAorLS0gdGVzdCB0aGUgY2FzZSB3aGVyZSB2YWN1dW0gcGhh c2UgSSBkb2VzIG5vdCBuZWVkIHRvIG1vZGlmeSB0aGUgaGVhcCBidWZmZXIKKy0tIGFuZCBvbmx5 IG5lZWRzIHRvIHNldCB0aGUgVk0KK2NyZWF0ZSB0YWJsZSB0ZXN0X3ZhY191bm1vZGlmaWVkX2hl YXAoYSBpbnQpOworaW5zZXJ0IGludG8gdGVzdF92YWNfdW5tb2RpZmllZF9oZWFwIHZhbHVlcyAo MSk7Cit2YWN1dW0gKGZyZWV6ZSkgdGVzdF92YWNfdW5tb2RpZmllZF9oZWFwOworc2VsZWN0IHBn X3Zpc2liaWxpdHlfbWFwX3N1bW1hcnkoJ3Rlc3RfdmFjX3VubW9kaWZpZWRfaGVhcCcpOworLS0g dGhlIGNoZWNrcG9pbnQgY2xlYW5zIHRoZSBidWZmZXIgZGlydGllZCBieSBmcmVlemluZyB0aGUg c29sZSB0dXBsZQorY2hlY2twb2ludDsKKy0tIHRydW5jYXRpbmcgdGhlIFZNIGVuc3VyZXMgdGhh dCB0aGUgbmV4dCB2YWN1dW0gd2lsbCBuZWVkIHRvIHNldCBpdAorc2VsZWN0IHBnX3RydW5jYXRl X3Zpc2liaWxpdHlfbWFwKCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnKTsKK3NlbGVjdCBwZ192 aXNpYmlsaXR5X21hcF9zdW1tYXJ5KCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnKTsKKy0tIHRo b3VnaCB0aGUgVk0gaXMgdHJ1bmNhdGVkLCB0aGUgaGVhcCBwYWdlLWxldmVsIHZpc2liaWxpdHkg aGludCwKKy0tIFBEX0FMTF9WSVNJQkxFIHNob3VsZCBzdGlsbCBiZSBzZXQKK1NFTEVDVCAoZmxh Z3MgJiB4JzAwMDQnOjppbnQpIDw+IDAKKyAgICAgICAgRlJPTSBwYWdlX2hlYWRlcihnZXRfcmF3 X3BhZ2UoJ3Rlc3RfdmFjX3VubW9kaWZpZWRfaGVhcCcsIDApKTsKKy0tIHZhY3V1bSBzZXRzIHRo ZSBWTQordmFjdXVtIHRlc3RfdmFjX3VubW9kaWZpZWRfaGVhcDsKK3NlbGVjdCBwZ192aXNpYmls aXR5X21hcF9zdW1tYXJ5KCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnKTsKKwogLS0gdGVzdCBj b3B5IGZyZWV6ZQogY3JlYXRlIHRhYmxlIGNvcHlmcmVlemUgKGEgaW50LCBiIGNoYXIoMTUwMCkp OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMjA4NmE1NzcxOTkuLjJk YTM1Yzg1ZTc2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0yMTIyLDE2 ICsyMTIyLDE0IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJICogb2Yg bGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2li bGUgYW5kCiAJICogYWxsX2Zyb3plbiB2YXJpYWJsZXMKIAkgKi8KLQlpZiAoIWFsbF92aXNpYmxl X2FjY29yZGluZ190b192bSAmJiBwcmVzdWx0LmFsbF92aXNpYmxlKQorCWlmICgocHJlc3VsdC5h bGxfdmlzaWJsZSAmJiAhYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtKSB8fAorCQkocHJlc3Vs dC5hbGxfZnJvemVuICYmICFWTV9BTExfRlJPWkVOKHJlbCwgYmxrbm8sICZ2bWJ1ZmZlcikpKQog CXsKIAkJdWludDgJCW9sZF92bWJpdHM7CiAJCXVpbnQ4CQlmbGFncyA9IFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEU7CiAKIAkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJewotCQkJQXNzZXJ0 KCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pKTsKIAkJ CWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKLQkJfQogCiAJCS8qCiAJCSAqIEl0 IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlz IHNldApAQCAtMjEzOSwxNSArMjEzNywyNSBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAq dmFjcmVsLAogCQkgKiBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNl dCBib3RoIGJpdHMgc28gdGhhdCB3ZQogCQkgKiBnZXQgYmFjayBpbiBzeW5jLgogCQkgKgotCQkg KiBOQjogSWYgdGhlIGhlYXAgcGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhlIFZNIGJpdCBpcyBu b3Qgc2V0LCB3ZQotCQkgKiBkb24ndCBuZWVkIHRvIGRpcnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dl dmVyLCBpZiBjaGVja3N1bXMgYXJlCi0JCSAqIGVuYWJsZWQsIHdlIGRvIG5lZWQgdG8gbWFrZSBz dXJlIHRoYXQgdGhlIGhlYXAgcGFnZSBpcyBkaXJ0aWVkCi0JCSAqIGJlZm9yZSBwYXNzaW5nIGl0 IHRvIHZpc2liaWxpdHltYXBfc2V0KCksIGJlY2F1c2UgaXQgbWF5IGJlIGxvZ2dlZC4KLQkJICog R2l2ZW4gdGhhdCB0aGlzIHNpdHVhdGlvbiBzaG91bGQgb25seSBoYXBwZW4gaW4gcmFyZSBjYXNl cyBhZnRlciBhCi0JCSAqIGNyYXNoLCBpdCBpcyBub3Qgd29ydGggb3B0aW1pemluZy4KKwkJICog RXZlbiBpZiBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldCwgd2UgZG9uJ3QgbmVlZCB0byB3 b3JyeSBhYm91dAorCQkgKiB1bm5lY2Vzc2FyaWx5IGRpcnR5aW5nIHRoZSBoZWFwIGJ1ZmZlci4g TmVhcmx5IHRoZSBvbmx5IHNjZW5hcmlvCisJCSAqIHdoZXJlIFBEX0FMTF9WSVNJQkxFIGlzIHNl dCBidXQgdGhlIFZNIGlzIG5vdCBpcyBpZiB0aGUgVk0gd2FzCisJCSAqIHJlbW92ZWQgLS0gYW5k IHRoYXQgaXNuJ3Qgd29ydGggb3B0aW1pemluZyBmb3IuIEFuZCBpZiB3ZSBhZGQgdGhlCisJCSAq IGhlYXAgYnVmZmVyIHRvIHRoZSBXQUwgY2hhaW4gKHdpdGhvdXQgcGFzc2luZyBSRUdCVUZfTk9f Q0hBTkdFUyksCisJCSAqIGl0IG11c3QgYmUgbWFya2VkIGRpcnR5LgogCQkgKi8KIAkJUGFnZVNl dEFsbFZpc2libGUocGFnZSk7CiAJCU1hcmtCdWZmZXJEaXJ0eShidWYpOworCisJCS8qCisJCSAq IElmIHRoZSBwYWdlIGlzIGJlaW5nIHNldCBhbGwtZnJvemVuLCB3ZSBwYXNzIEludmFsaWRUcmFu c2FjdGlvbklkCisJCSAqIGFzIHRoZSBjdXRvZmZfeGlkLCBzaW5jZSBhIHNuYXBzaG90IGNvbmZs aWN0IGhvcml6b24gc3VmZmljaWVudCB0bworCQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3Ig UkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMKKwkJICogd2VyZSBmcm96ZW4u CisJCSAqLworCQlBc3NlcnQoIXByZXN1bHQuYWxsX2Zyb3plbiB8fAorCQkJICAgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikpOworCiAJCW9sZF92bWJp dHMgPSB2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKIAkJCQkJCQkJ CSAgIEludmFsaWRYTG9nUmVjUHRyLAogCQkJCQkJCQkJICAgdm1idWZmZXIsIHByZXN1bHQudm1f Y29uZmxpY3RfaG9yaXpvbiwKQEAgLTIyMTksNjUgKzIyMjcsNiBAQCBsYXp5X3NjYW5fcHJ1bmUo TFZSZWxTdGF0ZSAqdmFjcmVsLAogCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CiAJ fQogCi0JLyoKLQkgKiBJZiB0aGUgYWxsLXZpc2libGUgcGFnZSBpcyBhbGwtZnJvemVuIGJ1dCBu b3QgbWFya2VkIGFzIHN1Y2ggeWV0LCBtYXJrCi0JICogaXQgYXMgYWxsLWZyb3plbi4KLQkgKi8K LQllbHNlIGlmIChhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5hbGxfZnJv emVuICYmCi0JCQkgIVZNX0FMTF9GUk9aRU4odmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIp KQotCXsKLQkJdWludDgJCW9sZF92bWJpdHM7Ci0KLQkJLyoKLQkJICogQXZvaWQgcmVseWluZyBv biBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gYXMgYSBwcm94eSBmb3IgdGhlCi0JCSAqIHBh Z2UtbGV2ZWwgUERfQUxMX1ZJU0lCTEUgYml0IGJlaW5nIHNldCwgc2luY2UgaXQgbWlnaHQgaGF2 ZSBiZWNvbWUKLQkJICogc3RhbGUgLS0gZXZlbiB3aGVuIGFsbF92aXNpYmxlIGlzIHNldAotCQkg Ki8KLQkJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQotCQl7Ci0JCQlQYWdlU2V0QWxsVmlz aWJsZShwYWdlKTsKLQkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwotCQl9Ci0KLQkJLyoKLQkJICog U2V0IHRoZSBwYWdlIGFsbC1mcm96ZW4gKGFuZCBhbGwtdmlzaWJsZSkgaW4gdGhlIFZNLgotCQkg KgotCQkgKiBXZSBjYW4gcGFzcyBJbnZhbGlkVHJhbnNhY3Rpb25JZCBhcyBvdXIgY3V0b2ZmX3hp ZCwgc2luY2UgYQotCQkgKiBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBzdWZmaWNpZW50IHRvIG1h a2UgZXZlcnl0aGluZyBzYWZlIGZvciBSRURPCi0JCSAqIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFn ZSdzIHR1cGxlcyB3ZXJlIGZyb3plbi4KLQkJICovCi0JCUFzc2VydCghVHJhbnNhY3Rpb25JZElz VmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uKSk7Ci0JCW9sZF92bWJpdHMgPSB2aXNp YmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkJCSAgIEludmFs aWRYTG9nUmVjUHRyLAotCQkJCQkJCQkJICAgdm1idWZmZXIsIEludmFsaWRUcmFuc2FjdGlvbklk LAotCQkJCQkJCQkJICAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJCQkgICBW SVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOwotCi0JCS8qCi0JCSAqIFRoZSBwYWdlIHdhcyBsaWtl bHkgYWxyZWFkeSBzZXQgYWxsLXZpc2libGUgaW4gdGhlIFZNLiBIb3dldmVyLAotCQkgKiB0aGVy ZSBpcyBhIHNtYWxsIGNoYW5jZSB0aGF0IGl0IHdhcyBtb2RpZmllZCBzb21ldGltZSBiZXR3ZWVu Ci0JCSAqIHNldHRpbmcgYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGFuZCBjaGVja2luZyB0 aGUgdmlzaWJpbGl0eQotCQkgKiBkdXJpbmcgcHJ1bmluZy4gQ2hlY2sgdGhlIHJldHVybiB2YWx1 ZSBvZiBvbGRfdm1iaXRzIGFueXdheSB0bwotCQkgKiBlbnN1cmUgdGhlIHZpc2liaWxpdHkgbWFw IGNvdW50ZXJzIHVzZWQgZm9yIGxvZ2dpbmcgYXJlIGFjY3VyYXRlLgotCQkgKi8KLQkJaWYgKChv bGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgPT0gMCkKLQkJewotCQkJdmFj cmVsLT52bV9uZXdfdmlzaWJsZV9wYWdlcysrOwotCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9m cm96ZW5fcGFnZXMrKzsKLQkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7Ci0JCX0KLQotCQkvKgot CQkgKiBXZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCB0aGUgcGFnZSB3YXMgbm90IHNldCBhbGwtZnJv emVuIGluIHRoZSBWTQotCQkgKiBhYm92ZSwgc28gd2UgZG9uJ3QgbmVlZCB0byB0ZXN0IHRoZSB2 YWx1ZSBvZiBvbGRfdm1iaXRzLgotCQkgKi8KLQkJZWxzZQotCQl7Ci0JCQl2YWNyZWwtPnZtX25l d19mcm96ZW5fcGFnZXMrKzsKLQkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7Ci0JCX0KLQl9Ci0K IAlyZXR1cm4gcHJlc3VsdC5uZGVsZXRlZDsKIH0KIAotLSAKMi40My4wCgo= --00000000000050ca310647bb8e6c Content-Type: text/x-patch; charset="US-ASCII"; name="v33-0002-Eliminate-use-of-cached-VM-value-in-lazy_scan_pr.patch" Content-Disposition: attachment; filename="v33-0002-Eliminate-use-of-cached-VM-value-in-lazy_scan_pr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk2v1qu41 RnJvbSA0ZDM3MjQzZjlmYTBkYzRlMjY0YTI4YmNlZTQ0ODc4N2ZiOGQ3ZjY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDExIERlYyAyMDI1IDEwOjQ4OjEzIC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzMgMDIvMTZdIEVsaW1pbmF0ZSB1c2Ugb2YgY2FjaGVkIFZNIHZhbHVlIGluCiBsYXp5 X3NjYW5fcHJ1bmUoKQoKbGF6eV9zY2FuX3BydW5lKCkgdGFrZXMgYSBwYXJhbWV0ZXIgZnJvbSBs YXp5X3NjYW5faGVhcCgpIGluZGljYXRpbmcKd2hldGhlciB0aGUgcGFnZSB3YXMgbWFya2VkIGFs bC12aXNpYmxlIGluIHRoZSBWTSBhdCB0aGUgdGltZSBpdCB3YXMKbGFzdCBjaGVja2VkIGluIGZp bmRfbmV4dF91bnNraXBwYWJsZV9ibG9jaygpLiBUaGlzIGJlaGF2aW9yIGlzCmhpc3RvcmljYWws IGRhdGluZyBiYWNrIHRvIGNvbW1pdCA2MDgxOTVhM2EzNjUsIHdoZW4gd2UgZGlkIG5vdCBwaW4g dGhlClZNIHBhZ2UgdW50aWwgZGVjaWRpbmcgd2UgbXVzdCByZWFkIGl0LiBOb3cgdGhhdCB0aGUg Vk0gcGFnZSBpcyBhbHJlYWR5CnBpbm5lZCwgdGhlcmUgaXMgbm8gbWVhbmluZ2Z1bCBiZW5lZml0 IHRvIHJlbHlpbmcgb24gYSBjYWNoZWQgVk0gc3RhdHVzLgoKUmVtb3ZpbmcgdGhpcyBjYWNoZWQg dmFsdWUgc2ltcGxpZmllcyB0aGUgbG9naWMgaW4gYm90aCBsYXp5X3NjYW5faGVhcCgpCmFuZCBs YXp5X3NjYW5fcHJ1bmUoKS4gSXQgYWxzbyBjbGFyaWZpZXMgZnV0dXJlIHdvcmsgdGhhdCB3aWxs IHNldCB0aGUKdmlzaWJpbGl0eSBtYXAgb24tYWNjZXNzOiBzdWNoIHBhdGhzIHdpbGwgbm90IGhh dmUgYSBjYWNoZWQgdmFsdWUKYXZhaWxhYmxlLCB3aGljaCB3b3VsZCBtYWtlIHRoZSBsb2dpYyBo YXJkZXIgdG8gcmVhc29uIGFib3V0LiBBbmQKZWxpbWluYXRpbmcgaXQgZW5hYmxlcyB1cyB0byBk ZXRlY3QgYW5kIHJlcGFpciBWTSBjb3JydXB0aW9uIG9uLWFjY2Vzcy4KCkFsb25nIHdpdGggcmVt b3ZpbmcgdGhlIGNhY2hlZCB2YWx1ZSBhbmQgdW5jb25kaXRpb25hbGx5IGNoZWNraW5nIHRoZQp2 aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgaGVhcCBwYWdlLCB0aGlzIGNvbW1pdCBhbHNvIG1vdmVz IHRoZSBWTQpjb3JydXB0aW9uIGhhbmRsaW5nIHRvIG9jY3VyIGZpcnN0LiBUaGlzIHJlb3JkZXJp bmcgc2hvdWxkIGhhdmUgbm8KcGVyZm9ybWFuY2UgaW1wYWN0LCBzaW5jZSB0aGUgY2hlY2tzIGFy ZSBpbmV4cGVuc2l2ZSBhbmQgcGVyZm9ybWVkIG9ubHkKb25jZSBwZXIgcGFnZS4gSXQgZG9lcywg aG93ZXZlciwgbWFrZSB0aGUgY29udHJvbCBmbG93IGVhc2llciB0bwp1bmRlcnN0YW5kLiBUaGUg bmV3IHJlc3RydWN0dXJpbmcgYWxzbyBtYWtlcyBpdCBwb3NzaWJsZSB0byBzZXQgdGhlIFZNCmFm dGVyIGZpeGluZyBjb3JydXB0aW9uIChpZiBwcnVuaW5nIGZvdW5kIHRoZSBwYWdlIGFsbC12aXNp YmxlKS4KCk5vdyB0aGF0IG5vIGNhbGxlcnMgb2YgdmlzaWJpbGl0eW1hcF9zZXQoKSB1c2UgaXRz IHJldHVybiB2YWx1ZSwgY2hhbmdlCml0cyAoYW5kIHZpc2liaWxpdHltYXBfc2V0X3ZtYml0cygp KSByZXR1cm4gdHlwZSB0byB2b2lkLgoKQXV0aG9yOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmll cGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJlc2hrZSA8cmVzaGtla2ly aWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBYdW5lbmcgWmhvdSA8eHVuZW5nemhvdUBnbWFpbC5jb20+CkRpc2N1 c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vNUNFQUExNjItNjdCMS00NERBLUI2MEQtOEI2NTcx N0U4QjA1JTQwZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jICAgIHwgMTgyICsrKysrKysrKysrLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmlzaWJpbGl0eW1hcC5jIHwgICA5ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJp bGl0eW1hcC5oICAgICAgfCAgMTggKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDk0IGluc2VydGlvbnMo KyksIDExNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5k ZXggMmRhMzVjODVlNzYuLjM3MzNhMWNiYzQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCkBAIC0yNDgsMTMgKzI0OCw2IEBAIHR5cGVkZWYgZW51bQogICovCiAjZGVmaW5lIEVB R0VSX1NDQU5fUkVHSU9OX1NJWkUgNDA5NgogCi0vKgotICogaGVhcF92YWNfc2Nhbl9uZXh0X2Js b2NrKCkgc2V0cyB0aGVzZSBmbGFncyB0byBjb21tdW5pY2F0ZSBpbmZvcm1hdGlvbgotICogYWJv dXQgdGhlIGJsb2NrIGl0IHJlYWQgdG8gdGhlIGNhbGxlci4KLSAqLwotI2RlZmluZSBWQUNfQkxL X1dBU19FQUdFUl9TQ0FOTkVEICgxIDw8IDApCi0jZGVmaW5lIFZBQ19CTEtfQUxMX1ZJU0lCTEVf QUNDT1JESU5HX1RPX1ZNICgxIDw8IDEpCi0KIHR5cGVkZWYgc3RydWN0IExWUmVsU3RhdGUKIHsK IAkvKiBUYXJnZXQgaGVhcCByZWxhdGlvbiBhbmQgaXRzIGluZGV4ZXMgKi8KQEAgLTM2MCw3ICsz NTMsNiBAQCB0eXBlZGVmIHN0cnVjdCBMVlJlbFN0YXRlCiAJLyogU3RhdGUgbWFpbnRhaW5lZCBi eSBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSAqLwogCUJsb2NrTnVtYmVyIGN1cnJlbnRfYmxv Y2s7CS8qIGxhc3QgYmxvY2sgcmV0dXJuZWQgKi8KIAlCbG9ja051bWJlciBuZXh0X3Vuc2tpcHBh YmxlX2Jsb2NrOyAvKiBuZXh0IHVuc2tpcHBhYmxlIGJsb2NrICovCi0JYm9vbAkJbmV4dF91bnNr aXBwYWJsZV9hbGx2aXM7CS8qIGl0cyB2aXNpYmlsaXR5IHN0YXR1cyAqLwogCWJvb2wJCW5leHRf dW5za2lwcGFibGVfZWFnZXJfc2Nhbm5lZDsgLyogaWYgaXQgd2FzIGVhZ2VybHkgc2Nhbm5lZCAq LwogCUJ1ZmZlcgkJbmV4dF91bnNraXBwYWJsZV92bWJ1ZmZlcjsJLyogYnVmZmVyIGNvbnRhaW5p bmcgaXRzIFZNIGJpdCAqLwogCkBAIC00MzQsNyArNDI2LDcgQEAgc3RhdGljIGJvb2wgbGF6eV9z Y2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkJ CSAgIGJvb2wgc2hhcmVsb2NrLCBCdWZmZXIgdm1idWZmZXIpOwogc3RhdGljIGludAlsYXp5X3Nj YW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCUJsb2NrTnVt YmVyIGJsa25vLCBQYWdlIHBhZ2UsCi0JCQkJCQkJQnVmZmVyIHZtYnVmZmVyLCBib29sIGFsbF92 aXNpYmxlX2FjY29yZGluZ190b192bSwKKwkJCQkJCQlCdWZmZXIgdm1idWZmZXIsCiAJCQkJCQkJ Ym9vbCAqaGFzX2xwZGVhZF9pdGVtcywgYm9vbCAqdm1fcGFnZV9mcm96ZW4pOwogc3RhdGljIGJv b2wgbGF6eV9zY2FuX25vcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJ CQkJCSAgQmxvY2tOdW1iZXIgYmxrbm8sIFBhZ2UgcGFnZSwKQEAgLTEyNzcsNyArMTI2OSw2IEBA IGxhenlfc2Nhbl9oZWFwKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkvKiBJbml0aWFsaXplIGZvciB0 aGUgZmlyc3QgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCAqLwogCXZhY3JlbC0+Y3Vy cmVudF9ibG9jayA9IEludmFsaWRCbG9ja051bWJlcjsKIAl2YWNyZWwtPm5leHRfdW5za2lwcGFi bGVfYmxvY2sgPSBJbnZhbGlkQmxvY2tOdW1iZXI7Ci0JdmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxl X2FsbHZpcyA9IGZhbHNlOwogCXZhY3JlbC0+bmV4dF91bnNraXBwYWJsZV9lYWdlcl9zY2FubmVk ID0gZmFsc2U7CiAJdmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxlX3ZtYnVmZmVyID0gSW52YWxpZEJ1 ZmZlcjsKIApAQCAtMTI5MywxMyArMTI4NCwxMyBAQCBsYXp5X3NjYW5faGVhcChMVlJlbFN0YXRl ICp2YWNyZWwpCiAJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAogCQkJCQkJCQkJCWhlYXBfdmFjX3Nj YW5fbmV4dF9ibG9jaywKIAkJCQkJCQkJCQl2YWNyZWwsCi0JCQkJCQkJCQkJc2l6ZW9mKHVpbnQ4 KSk7CisJCQkJCQkJCQkJc2l6ZW9mKGJvb2wpKTsKIAogCXdoaWxlICh0cnVlKQogCXsKIAkJQnVm ZmVyCQlidWY7CiAJCVBhZ2UJCXBhZ2U7Ci0JCXVpbnQ4CQlibGtfaW5mbyA9IDA7CisJCWJvb2wJ CXdhc19lYWdlcl9zY2FubmVkID0gZmFsc2U7CiAJCWludAkJCW5kZWxldGVkID0gMDsKIAkJYm9v bAkJaGFzX2xwZGVhZF9pdGVtczsKIAkJdm9pZAkgICAqcGVyX2J1ZmZlcl9kYXRhID0gTlVMTDsK QEAgLTEzNjgsMTMgKzEzNTksMTMgQEAgbGF6eV9zY2FuX2hlYXAoTFZSZWxTdGF0ZSAqdmFjcmVs KQogCQlpZiAoIUJ1ZmZlcklzVmFsaWQoYnVmKSkKIAkJCWJyZWFrOwogCi0JCWJsa19pbmZvID0g KigodWludDggKikgcGVyX2J1ZmZlcl9kYXRhKTsKKwkJd2FzX2VhZ2VyX3NjYW5uZWQgPSAqKChi b29sICopIHBlcl9idWZmZXJfZGF0YSk7CiAJCUNoZWNrQnVmZmVySXNQaW5uZWRPbmNlKGJ1Zik7 CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJCWJsa25vID0gQnVmZmVyR2V0QmxvY2tO dW1iZXIoYnVmKTsKIAogCQl2YWNyZWwtPnNjYW5uZWRfcGFnZXMrKzsKLQkJaWYgKGJsa19pbmZv ICYgVkFDX0JMS19XQVNfRUFHRVJfU0NBTk5FRCkKKwkJaWYgKHdhc19lYWdlcl9zY2FubmVkKQog CQkJdmFjcmVsLT5lYWdlcl9zY2FubmVkX3BhZ2VzKys7CiAKIAkJLyogUmVwb3J0IGFzIGJsb2Nr IHNjYW5uZWQsIHVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24gKi8KQEAgLTE0NDUs NyArMTQzNiw2IEBAIGxhenlfc2Nhbl9oZWFwKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkJaWYgKGdv dF9jbGVhbnVwX2xvY2spCiAJCQluZGVsZXRlZCA9IGxhenlfc2Nhbl9wcnVuZSh2YWNyZWwsIGJ1 ZiwgYmxrbm8sIHBhZ2UsCiAJCQkJCQkJCQkgICB2bWJ1ZmZlciwKLQkJCQkJCQkJCSAgIGJsa19p bmZvICYgVkFDX0JMS19BTExfVklTSUJMRV9BQ0NPUkRJTkdfVE9fVk0sCiAJCQkJCQkJCQkgICAm aGFzX2xwZGVhZF9pdGVtcywgJnZtX3BhZ2VfZnJvemVuKTsKIAogCQkvKgpAQCAtMTQ2Miw4ICsx NDUyLDcgQEAgbGF6eV9zY2FuX2hlYXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCQkgKiBleGNsdWRl IHBhZ2VzIHNraXBwZWQgZHVlIHRvIGNsZWFudXAgbG9jayBjb250ZW50aW9uIGZyb20gZWFnZXIK IAkJICogZnJlZXplIGFsZ29yaXRobSBjYXBzLgogCQkgKi8KLQkJaWYgKGdvdF9jbGVhbnVwX2xv Y2sgJiYKLQkJCShibGtfaW5mbyAmIFZBQ19CTEtfV0FTX0VBR0VSX1NDQU5ORUQpKQorCQlpZiAo Z290X2NsZWFudXBfbG9jayAmJiB3YXNfZWFnZXJfc2Nhbm5lZCkKIAkJewogCQkJLyogQWdncmVz c2l2ZSB2YWN1dW1zIGRvIG5vdCBlYWdlciBzY2FuLiAqLwogCQkJQXNzZXJ0KCF2YWNyZWwtPmFn Z3Jlc3NpdmUpOwpAQCAtMTYzMCw3ICsxNjE5LDYgQEAgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2Nr KFJlYWRTdHJlYW0gKnN0cmVhbSwKIHsKIAlCbG9ja051bWJlciBuZXh0X2Jsb2NrOwogCUxWUmVs U3RhdGUgKnZhY3JlbCA9IGNhbGxiYWNrX3ByaXZhdGVfZGF0YTsKLQl1aW50OAkJYmxrX2luZm8g PSAwOwogCiAJLyogcmVsaWVzIG9uIEludmFsaWRCbG9ja051bWJlciArIDEgb3ZlcmZsb3dpbmcg dG8gMCBvbiBmaXJzdCBjYWxsICovCiAJbmV4dF9ibG9jayA9IHZhY3JlbC0+Y3VycmVudF9ibG9j ayArIDE7CkBAIC0xNjkzLDggKzE2ODEsOCBAQCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soUmVh ZFN0cmVhbSAqc3RyZWFtLAogCQkgKiBvdGhlcndpc2UgdGhleSB3b3VsZCd2ZSBiZWVuIHVuc2tp cHBhYmxlLgogCQkgKi8KIAkJdmFjcmVsLT5jdXJyZW50X2Jsb2NrID0gbmV4dF9ibG9jazsKLQkJ YmxrX2luZm8gfD0gVkFDX0JMS19BTExfVklTSUJMRV9BQ0NPUkRJTkdfVE9fVk07Ci0JCSooKHVp bnQ4ICopIHBlcl9idWZmZXJfZGF0YSkgPSBibGtfaW5mbzsKKwkJLyogQmxvY2sgd2FzIG5vdCBl YWdlciBzY2FubmVkICovCisJCSooKGJvb2wgKikgcGVyX2J1ZmZlcl9kYXRhKSA9IGZhbHNlOwog CQlyZXR1cm4gdmFjcmVsLT5jdXJyZW50X2Jsb2NrOwogCX0KIAllbHNlCkBAIC0xNzA2LDExICsx Njk0LDcgQEAgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKFJlYWRTdHJlYW0gKnN0cmVhbSwKIAkJ QXNzZXJ0KG5leHRfYmxvY2sgPT0gdmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKTsKIAog CQl2YWNyZWwtPmN1cnJlbnRfYmxvY2sgPSBuZXh0X2Jsb2NrOwotCQlpZiAodmFjcmVsLT5uZXh0 X3Vuc2tpcHBhYmxlX2FsbHZpcykKLQkJCWJsa19pbmZvIHw9IFZBQ19CTEtfQUxMX1ZJU0lCTEVf QUNDT1JESU5HX1RPX1ZNOwotCQlpZiAodmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxlX2VhZ2VyX3Nj YW5uZWQpCi0JCQlibGtfaW5mbyB8PSBWQUNfQkxLX1dBU19FQUdFUl9TQ0FOTkVEOwotCQkqKCh1 aW50OCAqKSBwZXJfYnVmZmVyX2RhdGEpID0gYmxrX2luZm87CisJCSooKGJvb2wgKikgcGVyX2J1 ZmZlcl9kYXRhKSA9IHZhY3JlbC0+bmV4dF91bnNraXBwYWJsZV9lYWdlcl9zY2FubmVkOwogCQly ZXR1cm4gdmFjcmVsLT5jdXJyZW50X2Jsb2NrOwogCX0KIH0KQEAgLTE3MzUsNyArMTcxOSw2IEBA IGZpbmRfbmV4dF91bnNraXBwYWJsZV9ibG9jayhMVlJlbFN0YXRlICp2YWNyZWwsIGJvb2wgKnNr aXBzYWxsdmlzKQogCUJsb2NrTnVtYmVyIG5leHRfdW5za2lwcGFibGVfYmxvY2sgPSB2YWNyZWwt Pm5leHRfdW5za2lwcGFibGVfYmxvY2sgKyAxOwogCUJ1ZmZlcgkJbmV4dF91bnNraXBwYWJsZV92 bWJ1ZmZlciA9IHZhY3JlbC0+bmV4dF91bnNraXBwYWJsZV92bWJ1ZmZlcjsKIAlib29sCQluZXh0 X3Vuc2tpcHBhYmxlX2VhZ2VyX3NjYW5uZWQgPSBmYWxzZTsKLQlib29sCQluZXh0X3Vuc2tpcHBh YmxlX2FsbHZpczsKIAogCSpza2lwc2FsbHZpcyA9IGZhbHNlOwogCkBAIC0xNzQ1LDcgKzE3Mjgs NiBAQCBmaW5kX25leHRfdW5za2lwcGFibGVfYmxvY2soTFZSZWxTdGF0ZSAqdmFjcmVsLCBib29s ICpza2lwc2FsbHZpcykKIAkJCQkJCQkJCQkJCQkgICBuZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrLAog CQkJCQkJCQkJCQkJCSAgICZuZXh0X3Vuc2tpcHBhYmxlX3ZtYnVmZmVyKTsKIAotCQluZXh0X3Vu c2tpcHBhYmxlX2FsbHZpcyA9IChtYXBiaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkg IT0gMDsKIAogCQkvKgogCQkgKiBBdCB0aGUgc3RhcnQgb2YgZWFjaCBlYWdlciBzY2FuIHJlZ2lv biwgbm9ybWFsIHZhY3V1bXMgd2l0aCBlYWdlcgpAQCAtMTc2NCw3ICsxNzQ2LDcgQEAgZmluZF9u ZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKExWUmVsU3RhdGUgKnZhY3JlbCwgYm9vbCAqc2tpcHNhbGx2 aXMpCiAJCSAqIEEgYmxvY2sgaXMgdW5za2lwcGFibGUgaWYgaXQgaXMgbm90IGFsbCB2aXNpYmxl IGFjY29yZGluZyB0byB0aGUKIAkJICogdmlzaWJpbGl0eSBtYXAuCiAJCSAqLwotCQlpZiAoIW5l eHRfdW5za2lwcGFibGVfYWxsdmlzKQorCQlpZiAoKG1hcGJpdHMgJiBWSVNJQklMSVRZTUFQX0FM TF9WSVNJQkxFKSA9PSAwKQogCQl7CiAJCQlBc3NlcnQoKG1hcGJpdHMgJiBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4pID09IDApOwogCQkJYnJlYWs7CkBAIC0xODIxLDcgKzE4MDMsNiBAQCBmaW5k X25leHRfdW5za2lwcGFibGVfYmxvY2soTFZSZWxTdGF0ZSAqdmFjcmVsLCBib29sICpza2lwc2Fs bHZpcykKIAogCS8qIHdyaXRlIHRoZSBsb2NhbCB2YXJpYWJsZXMgYmFjayB0byB2YWNyZWwgKi8K IAl2YWNyZWwtPm5leHRfdW5za2lwcGFibGVfYmxvY2sgPSBuZXh0X3Vuc2tpcHBhYmxlX2Jsb2Nr OwotCXZhY3JlbC0+bmV4dF91bnNraXBwYWJsZV9hbGx2aXMgPSBuZXh0X3Vuc2tpcHBhYmxlX2Fs bHZpczsKIAl2YWNyZWwtPm5leHRfdW5za2lwcGFibGVfZWFnZXJfc2Nhbm5lZCA9IG5leHRfdW5z a2lwcGFibGVfZWFnZXJfc2Nhbm5lZDsKIAl2YWNyZWwtPm5leHRfdW5za2lwcGFibGVfdm1idWZm ZXIgPSBuZXh0X3Vuc2tpcHBhYmxlX3ZtYnVmZmVyOwogfQpAQCAtMTk4Miw5ICsxOTYzLDcgQEAg Y21wT2Zmc2V0TnVtYmVycyhjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogICogQ2FsbGVy IG11c3QgaG9sZCBwaW4gYW5kIGJ1ZmZlciBjbGVhbnVwIGxvY2sgb24gdGhlIGJ1ZmZlci4KICAq CiAgKiB2bWJ1ZmZlciBpcyB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIFZNIGJsb2NrIHdpdGgg dmlzaWJpbGl0eSBpbmZvcm1hdGlvbgotICogZm9yIHRoZSBoZWFwIGJsb2NrLCBibGtuby4gYWxs X3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGlzIHRoZSBzYXZlZAotICogdmlzaWJpbGl0eSBzdGF0 dXMgb2YgdGhlIGhlYXAgYmxvY2sgbG9va2VkIHVwIGVhcmxpZXIgYnkgdGhlIGNhbGxlci4gV2UK LSAqIHdvbid0IHJlbHkgZW50aXJlbHkgb24gdGhpcyBzdGF0dXMsIGFzIGl0IG1heSBiZSBvdXQg b2YgZGF0ZS4KKyAqIGZvciB0aGUgaGVhcCBibG9jaywgYmxrbm8uCiAgKgogICogKmhhc19scGRl YWRfaXRlbXMgaXMgc2V0IHRvIHRydWUgb3IgZmFsc2UgZGVwZW5kaW5nIG9uIHdoZXRoZXIsIHVw b24gcmV0dXJuCiAgKiBmcm9tIHRoaXMgZnVuY3Rpb24sIGFueSBMUF9ERUFEIGl0ZW1zIGFyZSBz dGlsbCBwcmVzZW50IG9uIHRoZSBwYWdlLgpAQCAtMjAwMSw3ICsxOTgwLDYgQEAgbGF6eV9zY2Fu X3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkJCQlCbG9ja051bWJlciBibGtubywKIAkJCQlQ YWdlIHBhZ2UsCiAJCQkJQnVmZmVyIHZtYnVmZmVyLAotCQkJCWJvb2wgYWxsX3Zpc2libGVfYWNj b3JkaW5nX3RvX3ZtLAogCQkJCWJvb2wgKmhhc19scGRlYWRfaXRlbXMsCiAJCQkJYm9vbCAqdm1f cGFnZV9mcm96ZW4pCiB7CkBAIC0yMDE1LDYgKzE5OTMsOCBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZS ZWxTdGF0ZSAqdmFjcmVsLAogCQkudmlzdGVzdCA9IHZhY3JlbC0+dmlzdGVzdCwKIAkJLmN1dG9m ZnMgPSAmdmFjcmVsLT5jdXRvZmZzLAogCX07CisJdWludDgJCW9sZF92bWJpdHMgPSAwOworCXVp bnQ4CQluZXdfdm1iaXRzID0gMDsKIAogCUFzc2VydChCdWZmZXJHZXRCbG9ja051bWJlcihidWYp ID09IGJsa25vKTsKIApAQCAtMjExNyw3MCArMjA5Nyw3IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJl bFN0YXRlICp2YWNyZWwsCiAJQXNzZXJ0KCFwcmVzdWx0LmFsbF92aXNpYmxlIHx8ICEoKmhhc19s cGRlYWRfaXRlbXMpKTsKIAlBc3NlcnQoIXByZXN1bHQuYWxsX2Zyb3plbiB8fCBwcmVzdWx0LmFs bF92aXNpYmxlKTsKIAotCS8qCi0JICogSGFuZGxlIHNldHRpbmcgdmlzaWJpbGl0eSBtYXAgYml0 IGJhc2VkIG9uIGluZm9ybWF0aW9uIGZyb20gdGhlIFZNIChhcwotCSAqIG9mIGxhc3QgaGVhcF92 YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCksIGFuZCBmcm9tIGFsbF92aXNpYmxlIGFuZAotCSAq IGFsbF9mcm96ZW4gdmFyaWFibGVzCi0JICovCi0JaWYgKChwcmVzdWx0LmFsbF92aXNpYmxlICYm ICFhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0pIHx8Ci0JCShwcmVzdWx0LmFsbF9mcm96ZW4g JiYgIVZNX0FMTF9GUk9aRU4ocmVsLCBibGtubywgJnZtYnVmZmVyKSkpCi0JewotCQl1aW50OAkJ b2xkX3ZtYml0czsKLQkJdWludDgJCWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsK LQotCQlpZiAocHJlc3VsdC5hbGxfZnJvemVuKQotCQkJZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9B TExfRlJPWkVOOwotCi0JCS8qCi0JCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0 IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlzIHNldAotCQkgKiB3aGlsZSB0aGUgcGFnZS1sZXZl bCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2VkIChpZgotCQkgKiBjaGVj a3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNldCBib3RoIGJpdHMgc28gdGhh dCB3ZQotCQkgKiBnZXQgYmFjayBpbiBzeW5jLgotCQkgKgotCQkgKiBFdmVuIGlmIFBEX0FMTF9W SVNJQkxFIGlzIGFscmVhZHkgc2V0LCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0Ci0JCSAq IHVubmVjZXNzYXJpbHkgZGlydHlpbmcgdGhlIGhlYXAgYnVmZmVyLiBOZWFybHkgdGhlIG9ubHkg c2NlbmFyaW8KLQkJICogd2hlcmUgUERfQUxMX1ZJU0lCTEUgaXMgc2V0IGJ1dCB0aGUgVk0gaXMg bm90IGlzIGlmIHRoZSBWTSB3YXMKLQkJICogcmVtb3ZlZCAtLSBhbmQgdGhhdCBpc24ndCB3b3J0 aCBvcHRpbWl6aW5nIGZvci4gQW5kIGlmIHdlIGFkZCB0aGUKLQkJICogaGVhcCBidWZmZXIgdG8g dGhlIFdBTCBjaGFpbiAod2l0aG91dCBwYXNzaW5nIFJFR0JVRl9OT19DSEFOR0VTKSwKLQkJICog aXQgbXVzdCBiZSBtYXJrZWQgZGlydHkuCi0JCSAqLwotCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdl KTsKLQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7Ci0KLQkJLyoKLQkJICogSWYgdGhlIHBhZ2UgaXMg YmVpbmcgc2V0IGFsbC1mcm96ZW4sIHdlIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQKLQkJICog YXMgdGhlIGN1dG9mZl94aWQsIHNpbmNlIGEgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBzdWZm aWNpZW50IHRvCi0JCSAqIG1ha2UgZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdhcyBsb2dnZWQg d2hlbiB0aGUgcGFnZSdzIHR1cGxlcwotCQkgKiB3ZXJlIGZyb3plbi4KLQkJICovCi0JCUFzc2Vy dCghcHJlc3VsdC5hbGxfZnJvemVuIHx8Ci0JCQkgICAhVHJhbnNhY3Rpb25JZElzVmFsaWQocHJl c3VsdC52bV9jb25mbGljdF9ob3Jpem9uKSk7Ci0KLQkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHlt YXBfc2V0KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLAotCQkJCQkJCQkJICAgSW52YWxpZFhMb2dS ZWNQdHIsCi0JCQkJCQkJCQkgICB2bWJ1ZmZlciwgcHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9u LAotCQkJCQkJCQkJICAgZmxhZ3MpOwotCi0JCS8qCi0JCSAqIElmIHRoZSBwYWdlIHdhc24ndCBh bHJlYWR5IHNldCBhbGwtdmlzaWJsZSBhbmQvb3IgYWxsLWZyb3plbiBpbiB0aGUKLQkJICogVk0s IGNvdW50IGl0IGFzIG5ld2x5IHNldCBmb3IgbG9nZ2luZy4KLQkJICovCi0JCWlmICgob2xkX3Zt Yml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09IDApCi0JCXsKLQkJCXZhY3JlbC0+ dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKLQkJCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCi0JCQl7 Ci0JCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKLQkJCQkqdm1fcGFn ZV9mcm96ZW4gPSB0cnVlOwotCQkJfQotCQl9Ci0JCWVsc2UgaWYgKChvbGRfdm1iaXRzICYgVklT SUJJTElUWU1BUF9BTExfRlJPWkVOKSA9PSAwICYmCi0JCQkJIHByZXN1bHQuYWxsX2Zyb3plbikK LQkJewotCQkJdmFjcmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFnZV9mcm96 ZW4gPSB0cnVlOwotCQl9Ci0JfQorCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0 dXModmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpOwogCiAJLyoKIAkgKiBBcyBvZiBQb3N0 Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUgc2V0IGlm IHRoZQpAQCAtMjE4OCw4ICsyMTA1LDggQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZh Y3JlbCwKIAkgKiBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBj YWxsZWQsIHNvIHdlIG11c3QgcmVjaGVjawogCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNv bmNsdWRpbmcgdGhhdCB0aGUgVk0gaXMgY29ycnVwdC4KIAkgKi8KLQllbHNlIGlmIChhbGxfdmlz aWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgIVBhZ2VJc0FsbFZpc2libGUocGFnZSkgJiYKLQkJCSB2 aXNpYmlsaXR5bWFwX2dldF9zdGF0dXModmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpICE9 IDApCisJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpICYmCisJCShvbGRfdm1iaXRzICYgVklT SUJJTElUWU1BUF9WQUxJRF9CSVRTKSAhPSAwKQogCXsKIAkJZXJlcG9ydChXQVJOSU5HLAogCQkJ CShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLApAQCAtMjE5OCw2ICsyMTE1LDggQEAg bGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAogCQl2aXNpYmlsaXR5bWFwX2Ns ZWFyKHZhY3JlbC0+cmVsLCBibGtubywgdm1idWZmZXIsCiAJCQkJCQkJVklTSUJJTElUWU1BUF9W QUxJRF9CSVRTKTsKKwkJLyogVk0gYml0cyBhcmUgbm93IGNsZWFyICovCisJCW9sZF92bWJpdHMg PSAwOwogCX0KIAogCS8qCkBAIC0yMjI1LDYgKzIxNDQsNzEgQEAgbGF6eV9zY2FuX3BydW5lKExW UmVsU3RhdGUgKnZhY3JlbCwKIAkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7CiAJCXZpc2liaWxpdHlt YXBfY2xlYXIodmFjcmVsLT5yZWwsIGJsa25vLCB2bWJ1ZmZlciwKIAkJCQkJCQlWSVNJQklMSVRZ TUFQX1ZBTElEX0JJVFMpOworCQkvKiBWTSBiaXRzIGFyZSBub3cgY2xlYXIgKi8KKwkJb2xkX3Zt Yml0cyA9IDA7CisJfQorCisJaWYgKCFwcmVzdWx0LmFsbF92aXNpYmxlKQorCQlyZXR1cm4gcHJl c3VsdC5uZGVsZXRlZDsKKworCS8qIFNldCB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIHBhZ2Ugdmlz aWJpbGl0eSBoaW50ICovCisJbmV3X3ZtYml0cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7 CisKKwlpZiAocHJlc3VsdC5hbGxfZnJvemVuKQorCQluZXdfdm1iaXRzIHw9IFZJU0lCSUxJVFlN QVBfQUxMX0ZST1pFTjsKKworCS8qIE5vdGhpbmcgdG8gZG8gKi8KKwlpZiAob2xkX3ZtYml0cyA9 PSBuZXdfdm1iaXRzKQorCQlyZXR1cm4gcHJlc3VsdC5uZGVsZXRlZDsKKworCUFzc2VydChwcmVz dWx0LmFsbF92aXNpYmxlKTsKKworCS8qCisJICogSXQgc2hvdWxkIG5ldmVyIGJlIHRoZSBjYXNl IHRoYXQgdGhlIHZpc2liaWxpdHkgbWFwIHBhZ2UgaXMgc2V0IHdoaWxlCisJICogdGhlIHBhZ2Ut bGV2ZWwgYml0IGlzIGNsZWFyLCBidXQgdGhlIHJldmVyc2UgaXMgYWxsb3dlZCAoaWYgY2hlY2tz dW1zCisJICogYXJlIG5vdCBlbmFibGVkKS4gUmVnYXJkbGVzcywgc2V0IGJvdGggYml0cyBzbyB0 aGF0IHdlIGdldCBiYWNrIGluCisJICogc3luYy4KKwkgKgorCSAqIFRoZSBoZWFwIGJ1ZmZlciBt dXN0IGJlIG1hcmtlZCBkaXJ0eSBiZWZvcmUgYWRkaW5nIGl0IHRvIHRoZSBXQUwgY2hhaW4KKwkg KiB3aGVuIHNldHRpbmcgdGhlIFZNLiBXZSBkb24ndCB3b3JyeSBhYm91dCB1bm5lY2Vzc2FyaWx5 IGRpcnR5aW5nIHRoZQorCSAqIGhlYXAgYnVmZmVyIGlmIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVh ZHkgc2V0LCB0aG91Z2guIEl0IGlzIGV4dHJlbWVseQorCSAqIHJhcmUgdG8gaGF2ZSBhIGNsZWFu IGhlYXAgYnVmZmVyIHdpdGggUERfQUxMX1ZJU0lCTEUgYWxyZWFkeSBzZXQgYW5kCisJICogdGhl IFZNIGJpdHMgY2xlYXIsIHNvIHRoZXJlIGlzIG5vIHBvaW50IGluIG9wdGltaXppbmcgaXQuCisJ ICovCisJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CisJTWFya0J1ZmZlckRpcnR5KGJ1Zik7CisK KwkvKgorCSAqIElmIHRoZSBwYWdlIGlzIGJlaW5nIHNldCBhbGwtZnJvemVuLCB3ZSBwYXNzIElu dmFsaWRUcmFuc2FjdGlvbklkIGFzCisJICogdGhlIGN1dG9mZl94aWQsIHNpbmNlIGEgc25hcHNo b3QgY29uZmxpY3QgaG9yaXpvbiBzdWZmaWNpZW50IHRvIG1ha2UKKwkgKiBldmVyeXRoaW5nIHNh ZmUgZm9yIFJFRE8gd2FzIGxvZ2dlZCB3aGVuIHRoZSBwYWdlJ3MgdHVwbGVzIHdlcmUgZnJvemVu LgorCSAqLworCUFzc2VydCghcHJlc3VsdC5hbGxfZnJvemVuIHx8CisJCSAgICFUcmFuc2FjdGlv bklkSXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pKTsKKworCXZpc2liaWxpdHlt YXBfc2V0KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLAorCQkJCQkgIEludmFsaWRYTG9nUmVjUHRy LAorCQkJCQkgIHZtYnVmZmVyLCBwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24sCisJCQkJCSAg bmV3X3ZtYml0cyk7CisKKwkvKgorCSAqIElmIHRoZSBwYWdlIHdhc24ndCBhbHJlYWR5IHNldCBh bGwtdmlzaWJsZSBhbmQvb3IgYWxsLWZyb3plbiBpbiB0aGUgVk0sCisJICogY291bnQgaXQgYXMg bmV3bHkgc2V0IGZvciBsb2dnaW5nLgorCSAqLworCWlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJ VFlNQVBfQUxMX1ZJU0lCTEUpID09IDApCisJeworCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3Bh Z2VzKys7CisJCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCisJCXsKKwkJCXZhY3JlbC0+dm1fbmV3 X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7CisJCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOworCQl9 CisJfQorCWVsc2UgaWYgKChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSA9 PSAwICYmCisJCQkgcHJlc3VsdC5hbGxfZnJvemVuKQorCXsKKwkJdmFjcmVsLT52bV9uZXdfZnJv emVuX3BhZ2VzKys7CisJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7CiAJfQogCiAJcmV0dXJuIHBy ZXN1bHQubmRlbGV0ZWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNp YmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKaW5k ZXggMjM4MmQxOGY3MmIuLjMwNDdiZDQ2ZGVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlz aWJpbGl0eW1hcC5jCkBAIC0yNDAsMTAgKzI0MCw4IEBAIHZpc2liaWxpdHltYXBfcGluX29rKEJs b2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciB2bWJ1ZikKICAqIFlvdSBtdXN0IHBhc3MgYSBidWZm ZXIgY29udGFpbmluZyB0aGUgY29ycmVjdCBtYXAgcGFnZSB0byB0aGlzIGZ1bmN0aW9uLgogICog Q2FsbCB2aXNpYmlsaXR5bWFwX3BpbiBmaXJzdCB0byBwaW4gdGhlIHJpZ2h0IG9uZS4gVGhpcyBm dW5jdGlvbiBkb2Vzbid0IGRvCiAgKiBhbnkgSS9PLgotICoKLSAqIFJldHVybnMgdGhlIHN0YXRl IG9mIHRoZSBwYWdlJ3MgVk0gYml0cyBiZWZvcmUgc2V0dGluZyBmbGFncy4KICAqLwotdWludDgK K3ZvaWQKIHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJs aywgQnVmZmVyIGhlYXBCdWYsCiAJCQkJICBYTG9nUmVjUHRyIHJlY3B0ciwgQnVmZmVyIHZtQnVm LCBUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCiAJCQkJICB1aW50OCBmbGFncykKQEAgLTMyMCw3 ICszMTgsNiBAQCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhl YXBCbGssIEJ1ZmZlciBoZWFwQnVmLAogCX0KIAogCUxvY2tCdWZmZXIodm1CdWYsIEJVRkZFUl9M T0NLX1VOTE9DSyk7Ci0JcmV0dXJuIHN0YXR1czsKIH0KIAogLyoKQEAgLTM0Myw3ICszNDAsNyBA QCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1 ZmZlciBoZWFwQnVmLAogICoKICAqIHJsb2NhdG9yIGlzIHVzZWQgb25seSBmb3IgZGVidWdnaW5n IG1lc3NhZ2VzLgogICovCi11aW50OAordm9pZAogdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKEJs b2NrTnVtYmVyIGhlYXBCbGssCiAJCQkJCQkgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncywKIAkJ CQkJCSBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRvcikKQEAgLTM4Niw4ICszODMsNiBAQCB2 aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoQmxvY2tOdW1iZXIgaGVhcEJsaywKIAkJbWFwW21hcEJ5 dGVdIHw9IChmbGFncyA8PCBtYXBPZmZzZXQpOwogCQlNYXJrQnVmZmVyRGlydHkodm1CdWYpOwog CX0KLQotCXJldHVybiBzdGF0dXM7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvdmlzaWJpbGl0eW1hcC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAu aAppbmRleCA0N2FkNDg5YTlhNy4uYTAxNjZjNWI0MTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxp dHltYXAuaApAQCAtMzIsMTUgKzMyLDE1IEBAIGV4dGVybiBib29sIHZpc2liaWxpdHltYXBfY2xl YXIoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogZXh0ZXJuIHZvaWQgdmlzaWJp bGl0eW1hcF9waW4oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogCQkJCQkJCSAg QnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gYm9vbCB2aXNpYmlsaXR5bWFwX3Bpbl9vayhCbG9ja051 bWJlciBoZWFwQmxrLCBCdWZmZXIgdm1idWYpOwotZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBf c2V0KFJlbGF0aW9uIHJlbCwKLQkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIg aGVhcEJ1ZiwKLQkJCQkJCQkgICBYTG9nUmVjUHRyIHJlY3B0ciwKLQkJCQkJCQkgICBCdWZmZXIg dm1CdWYsCi0JCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLAotCQkJCQkJCSAgIHVp bnQ4IGZsYWdzKTsKLWV4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoQmxvY2tO dW1iZXIgaGVhcEJsaywKLQkJCQkJCQkJCSAgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncywKLQkJ CQkJCQkJCSAgY29uc3QgUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IpOworZXh0ZXJuIHZvaWQgdmlz aWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLAorCQkJCQkJCSAgQmxvY2tOdW1iZXIgaGVhcEJs aywgQnVmZmVyIGhlYXBCdWYsCisJCQkJCQkJICBYTG9nUmVjUHRyIHJlY3B0ciwKKwkJCQkJCQkg IEJ1ZmZlciB2bUJ1ZiwKKwkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKKwkJCQkJ CQkgIHVpbnQ4IGZsYWdzKTsKK2V4dGVybiB2b2lkIHZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhC bG9ja051bWJlciBoZWFwQmxrLAorCQkJCQkJCQkJIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3Ms CisJCQkJCQkJCQkgY29uc3QgUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IpOwogZXh0ZXJuIHVpbnQ4 IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBC bGssIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1hcF9jb3VudChSZWxh dGlvbiByZWwsIEJsb2NrTnVtYmVyICphbGxfdmlzaWJsZSwgQmxvY2tOdW1iZXIgKmFsbF9mcm96 ZW4pOwogZXh0ZXJuIEJsb2NrTnVtYmVyIHZpc2liaWxpdHltYXBfcHJlcGFyZV90cnVuY2F0ZShS ZWxhdGlvbiByZWwsCi0tIAoyLjQzLjAKCg== --00000000000050ca310647bb8e6c Content-Type: text/x-patch; charset="US-ASCII"; name="v33-0003-Refactor-lazy_scan_prune-VM-clear-logic-into-hel.patch" Content-Disposition: attachment; filename="v33-0003-Refactor-lazy_scan_prune-VM-clear-logic-into-hel.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk2v1v7y2 RnJvbSAwZmMxYjRjYmI0ZTY3YjE5M2VjYTgzNDdkY2ExYmY4MDUzZDIwMjBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTM6MzY6MzkgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMyAwMy8xNl0gUmVmYWN0b3IgbGF6eV9zY2FuX3BydW5lKCkgVk0gY2xlYXIgbG9naWMg aW50bwogaGVscGVyCgpFbmNhcHN1bGF0aW5nIHRoZW0gaW4gYSBoZWxwZXIgbWFrZXMgdGhlIHdo b2xlIGZ1bmN0aW9uIGNsZWFyZXIuIFRoZXJlCmlzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlIG90aGVy IHRoYW4gbW92aW5nIGl0IGludG8gYSBoZWxwZXIuCgpSZXZpZXdlZC1ieTogS2lyaWxsIFJlc2hr ZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4u Y2hhb0BnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j IHwgMTMyICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDg1IGlu c2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYwppbmRleCAzNzMzYTFjYmM0Ny4uNTg1N2ZkMWJmYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKQEAgLTQyNCw2ICs0MjQsMTEgQEAgc3RhdGljIHZvaWQgZmluZF9uZXh0 X3Vuc2tpcHBhYmxlX2Jsb2NrKExWUmVsU3RhdGUgKnZhY3JlbCwgYm9vbCAqc2tpcHNhbGx2aXMp Owogc3RhdGljIGJvb2wgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWws IEJ1ZmZlciBidWYsCiAJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGJsa25vLCBQYWdlIHBhZ2UsCiAJ CQkJCQkJCSAgIGJvb2wgc2hhcmVsb2NrLCBCdWZmZXIgdm1idWZmZXIpOworc3RhdGljIGJvb2wg aWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGhlYXBf YnVmZmVyLAorCQkJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBQYWdlIGhlYXBfcGFn ZSwKKwkJCQkJCQkJCQkgICBpbnQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkJCQkgICBCdWZmZXIg dm1idWZmZXIsCisJCQkJCQkJCQkJICAgdWludDggdm1iaXRzKTsKIHN0YXRpYyBpbnQJbGF6eV9z Y2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQlCbG9ja051 bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCUJ1ZmZlciB2bWJ1ZmZlciwKQEAgLTE5NTcs NiArMTk2Miw4MyBAQCBjbXBPZmZzZXROdW1iZXJzKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQg KmIpCiAJcmV0dXJuIHBnX2NtcF91MTYoKihjb25zdCBPZmZzZXROdW1iZXIgKikgYSwgKihjb25z dCBPZmZzZXROdW1iZXIgKikgYik7CiB9CiAKKy8qCisgKiBIZWxwZXIgdG8gY29ycmVjdCBhbnkg Y29ycnVwdGlvbiBkZXRlY3RlZCBvbiBhIGhlYXAgcGFnZSBhbmQgaXRzCisgKiBjb3JyZXNwb25k aW5nIHZpc2liaWxpdHkgbWFwIHBhZ2UgYWZ0ZXIgcHJ1bmluZyBidXQgYmVmb3JlIHNldHRpbmcg dGhlCisgKiB2aXNpYmlsaXR5IG1hcC4gSXQgZXhhbWluZXMgdGhlIGhlYXAgcGFnZSwgdGhlIGFz c29jaWF0ZWQgVk0gcGFnZSwgYW5kIHRoZQorICogbnVtYmVyIG9mIGRlYWQgaXRlbXMgcHJldmlv dXNseSBpZGVudGlmaWVkLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgd2hp bGUgaG9sZGluZyBhbiBleGNsdXNpdmUgbG9jayBvbiB0aGUgaGVhcAorICogYnVmZmVyLCBhbmQg dGhlIGRlYWQgaXRlbXMgbXVzdCBoYXZlIGJlZW4gZGlzY292ZXJlZCB1bmRlciB0aGF0IHNhbWUg bG9jay4KKworICogVGhlIHByb3ZpZGVkIHZtYml0cyBtdXN0IHJlZmxlY3QgdGhlIGN1cnJlbnQg c3RhdGUgb2YgdGhlIFZNIGJsb2NrCisgKiByZWZlcmVuY2VkIGJ5IHZtYnVmZmVyLiBBbHRob3Vn aCB3ZSBkbyBub3QgaG9sZCBhIGxvY2sgb24gdGhlIFZNIGJ1ZmZlciwgaXQKKyAqIGlzIHBpbm5l ZCwgYW5kIHRoZSBoZWFwIGJ1ZmZlciBpcyBleGNsdXNpdmVseSBsb2NrZWQsIGVuc3VyaW5nIHRo YXQgbm8KKyAqIG90aGVyIGJhY2tlbmQgY2FuIHVwZGF0ZSB0aGUgVk0gYml0cyBjb3JyZXNwb25k aW5nIHRvIHRoaXMgaGVhcCBwYWdlLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBpdCBjbGVhcmVk IGNvcnJ1cHRpb24gYW5kIGZhbHNlIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGJvb2wKK2lkZW50 aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZl ciwKKwkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwX2JsaywgUGFnZSBoZWFwX3BhZ2UsCisJCQkJ CQkJICAgaW50IG5scGRlYWRfaXRlbXMsCisJCQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyLAorCQkJ CQkJCSAgIHVpbnQ4IHZtYml0cykKK3sKKwlBc3NlcnQodmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVz KHJlbCwgaGVhcF9ibGssICZ2bWJ1ZmZlcikgPT0gdm1iaXRzKTsKKworCUFzc2VydChCdWZmZXJJ c0xvY2tlZEJ5TWVJbk1vZGUoaGVhcF9idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSkpOwor CisJLyoKKwkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBz aG91bGQgbmV2ZXIgYmUgc2V0IGlmIHRoZQorCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAg SG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290CisJICogY2xlYXJlZCBhZnRl ciBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJlY2hl Y2sKKwkgKiB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlz IGNvcnJ1cHQuCisJICovCisJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkgJiYKKwkJ KCh2bWJpdHMgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpICE9IDApKQorCXsKKwkJZXJlcG9y dChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCSBl cnJtc2coInBhZ2UgaXMgbm90IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBtYXAg Yml0IGlzIHNldCBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJCQlSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwX2JsaykpKTsKKworCQl2aXNpYmlsaXR5bWFwX2NsZWFy KHJlbCwgaGVhcF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklU Uyk7CisJCXJldHVybiB0cnVlOworCX0KKworCS8qCisJICogSXQncyBwb3NzaWJsZSBmb3IgdGhl IHZhbHVlIHJldHVybmVkIGJ5CisJICogR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25J ZCgpIHRvIG1vdmUgYmFja3dhcmRzLCBzbyBpdCdzIG5vdAorCSAqIHdyb25nIGZvciB1cyB0byBz ZWUgdHVwbGVzIHRoYXQgYXBwZWFyIHRvIG5vdCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lCisJICog eWV0LCB3aGlsZSBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldC4gVGhlIHJlYWwgc2FmZSB4 bWluIHZhbHVlCisJICogbmV2ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQgR2V0T2xkZXN0Tm9uUmVt b3ZhYmxlVHJhbnNhY3Rpb25JZCgpIGlzCisJICogY29uc2VydmF0aXZlIGFuZCBzb21ldGltZXMg cmV0dXJucyBhIHZhbHVlIHRoYXQncyB1bm5lY2Vzc2FyaWx5IHNtYWxsLAorCSAqIHNvIGlmIHdl IHNlZSB0aGF0IGNvbnRyYWRpY3Rpb24gaXQganVzdCBtZWFucyB0aGF0IHRoZSB0dXBsZXMgdGhh dCB3ZQorCSAqIHRoaW5rIGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSB5ZXQgYWN0dWFsbHkg YXJlLCBhbmQgdGhlCisJICogUERfQUxMX1ZJU0lCTEUgZmxhZyBpcyBjb3JyZWN0LgorCSAqCisJ ICogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIExQX0RFQUQgaXRlbXMgb24gYSBwYWdlIHdpdGggUERf QUxMX1ZJU0lCTEUgc2V0LAorCSAqIGhvd2V2ZXIuCisJICovCisJZWxzZSBpZiAoUGFnZUlzQWxs VmlzaWJsZShoZWFwX3BhZ2UpICYmIG5scGRlYWRfaXRlbXMgPiAwKQorCXsKKwkJZXJlcG9ydChX QVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCSBlcnJt c2coInBhZ2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBhbGwtdmlzaWJs ZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShyZWwpLCBoZWFwX2JsaykpKTsKKworCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKGhlYXBfcGFn ZSk7CisJCU1hcmtCdWZmZXJEaXJ0eShoZWFwX2J1ZmZlcik7CisJCXZpc2liaWxpdHltYXBfY2xl YXIocmVsLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9C SVRTKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCiAvKgogICoJ bGF6eV9zY2FuX3BydW5lKCkgLS0gbGF6eV9zY2FuX2hlYXAoKSBwcnVuaW5nIGFuZCBmcmVlemlu Zy4KICAqCkBAIC0yMDk5LDU0ICsyMTgxLDEwIEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRl ICp2YWNyZWwsCiAKIAlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHZhY3Jl bC0+cmVsLCBibGtubywgJnZtYnVmZmVyKTsKIAotCS8qCi0JICogQXMgb2YgUG9zdGdyZVNRTCA5 LjIsIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKLQkg KiBwYWdlLWxldmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0 aGUgYml0IGdvdAotCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkg d2FzIGNhbGxlZCwgc28gd2UgbXVzdCByZWNoZWNrCi0JICogd2l0aCBidWZmZXIgbG9jayBiZWZv cmUgY29uY2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgotCSAqLwotCWlmICghUGFnZUlz QWxsVmlzaWJsZShwYWdlKSAmJgotCQkob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfVkFMSURf QklUUykgIT0gMCkKLQl7Ci0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RF X0RBVEFfQ09SUlVQVEVEKSwKLQkJCQkgZXJybXNnKCJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZp c2libGUgYnV0IHZpc2liaWxpdHkgbWFwIGJpdCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBh Z2UgJXUiLAotCQkJCQkJdmFjcmVsLT5yZWxuYW1lLCBibGtubykpKTsKLQotCQl2aXNpYmlsaXR5 bWFwX2NsZWFyKHZhY3JlbC0+cmVsLCBibGtubywgdm1idWZmZXIsCi0JCQkJCQkJVklTSUJJTElU WU1BUF9WQUxJRF9CSVRTKTsKLQkJLyogVk0gYml0cyBhcmUgbm93IGNsZWFyICovCisJaWYgKGlk ZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbih2YWNyZWwtPnJlbCwgYnVmLCBibGtubywgcGFn ZSwKKwkJCQkJCQkJCSAgIHByZXN1bHQubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlciwKKwkJCQkJCQkJ CSAgIG9sZF92bWJpdHMpKQogCQlvbGRfdm1iaXRzID0gMDsKLQl9Ci0KLQkvKgotCSAqIEl0J3Mg cG9zc2libGUgZm9yIHRoZSB2YWx1ZSByZXR1cm5lZCBieQotCSAqIEdldE9sZGVzdE5vblJlbW92 YWJsZVRyYW5zYWN0aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QKLQkgKiB3 cm9uZyBmb3IgdXMgdG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJsZSB0 byBldmVyeW9uZQotCSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQu IFRoZSByZWFsIHNhZmUgeG1pbiB2YWx1ZQotCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJkcywgYnV0 IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcwotCSAqIGNvbnNlcnZhdGl2 ZSBhbmQgc29tZXRpbWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBzbWFs bCwKLQkgKiBzbyBpZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMgdGhh dCB0aGUgdHVwbGVzIHRoYXQgd2UKLQkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8gZXZlcnlv bmUgeWV0IGFjdHVhbGx5IGFyZSwgYW5kIHRoZQotCSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcgaXMg Y29ycmVjdC4KLQkgKgotCSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1zIG9u IGEgcGFnZSB3aXRoIFBEX0FMTF9WSVNJQkxFIHNldCwKLQkgKiBob3dldmVyLgotCSAqLwotCWVs c2UgaWYgKHByZXN1bHQubHBkZWFkX2l0ZW1zID4gMCAmJiBQYWdlSXNBbGxWaXNpYmxlKHBhZ2Up KQotCXsKLQkJZXJlcG9ydChXQVJOSU5HLAotCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JS VVBURUQpLAotCQkJCSBlcnJtc2coInBhZ2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1h cmtlZCBhcyBhbGwtdmlzaWJsZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkJCQl2 YWNyZWwtPnJlbG5hbWUsIGJsa25vKSkpOwotCi0JCVBhZ2VDbGVhckFsbFZpc2libGUocGFnZSk7 Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWYpOwotCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHZhY3JlbC0+ cmVsLCBibGtubywgdm1idWZmZXIsCi0JCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsK LQkJLyogVk0gYml0cyBhcmUgbm93IGNsZWFyICovCi0JCW9sZF92bWJpdHMgPSAwOwotCX0KIAog CWlmICghcHJlc3VsdC5hbGxfdmlzaWJsZSkKIAkJcmV0dXJuIHByZXN1bHQubmRlbGV0ZWQ7Ci0t IAoyLjQzLjAKCg== --00000000000050ca310647bb8e6c Content-Type: text/x-patch; charset="US-ASCII"; name="v33-0004-Set-the-VM-in-heap_page_prune_and_freeze.patch" Content-Disposition: attachment; filename="v33-0004-Set-the-VM-in-heap_page_prune_and_freeze.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk2v209v3 RnJvbSA1YzY1ZTczMjQ2YjQ5NjhkZGZhOWQzNzM5ZjUzZDBkODczNGI4NzI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTU6MDc6NDIgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMyAwNC8xNl0gU2V0IHRoZSBWTSBpbiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgp CgpUaGlzIGhhcyBubyBpbmRlcGVuZGVudCBiZW5lZml0LiBJdCBpcyBtZWFudCBmb3IgZWFzZSBv ZiByZXZpZXcuIEFzIG9mCnRoaXMgY29tbWl0LCB0aGVyZSBpcyBzdGlsbCBhIHNlcGFyYXRlIFdB TCByZWNvcmQgZW1pdHRlZCBmb3Igc2V0dGluZwp0aGUgVk0gYWZ0ZXIgcHJ1bmluZyBhbmQgZnJl ZXppbmcuIEJ1dCBpdCBpcyBlYXNpZXIgdG8gcmV2aWV3IGlmIG1vdmluZwp0aGUgbG9naWMgaW50 byBwcnVuZWhlYXAuYyBpcyBzZXBhcmF0ZSBmcm9tIHNldHRpbmcgdGhlIFZNIGluIHRoZSBzYW1l CldBTCByZWNvcmQuCgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNv bT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgfCAzMTUgKysrKysr KysrKysrKysrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgfCAxNTAgKy0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAg ICAgIHwgIDIwICsrCiAzIGZpbGVzIGNoYW5nZWQsIDI5OSBpbnNlcnRpb25zKCspLCAxODYgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFw LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBhZjc4OGIyOTcx NC4uNTNiNzcxMWFiMjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5l aGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xOSw3 ICsxOSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFj Y2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgotI2luY2x1ZGUg ImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oIgorI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5 bWFwLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2lu c2VydC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgpAQCAtNDQsNiArNDQsOCBAQCB0 eXBlZGVmIHN0cnVjdAogCWJvb2wJCW1hcmtfdW51c2VkX25vdzsKIAkvKiB3aGV0aGVyIHRvIGF0 dGVtcHQgZnJlZXppbmcgdHVwbGVzICovCiAJYm9vbAkJYXR0ZW1wdF9mcmVlemU7CisJLyogd2hl dGhlciBvciBub3QgdG8gYXR0ZW1wdCB1cGRhdGluZyB0aGUgVk0gKi8KKwlib29sCQlhdHRlbXB0 X3VwZGF0ZV92bTsKIAlzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2ZmczsKIAogCS8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTQw LDE2ICsxNDIsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zy b3plbiBpbmRpY2F0ZSBpZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KIAkgKiBiaXRz IGluIHRoZSB2aXNpYmlsaXR5IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UgYWZ0ZXIgcHJ1 bmluZy4KIAkgKgotCSAqIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBpcyB0aGUgbmV3ZXN0IHhtaW4g b2YgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuCi0JICogVGhlIGNhbGxlciBjYW4gdXNlIGl0IGFz IHRoZSBjb25mbGljdCBob3Jpem9uLCB3aGVuIHNldHRpbmcgdGhlIFZNCi0JICogYml0cy4gIEl0 IGlzIG9ubHkgdmFsaWQgaWYgd2UgZnJvemUgc29tZSB0dXBsZXMsIGFuZCBhbGxfZnJvemVuIGlz Ci0JICogdHJ1ZS4KKwkgKiB2aXNpYmlsaXR5X2N1dG9mZl94aWQgaXMgdGhlIG5ld2VzdCB4bWlu IG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLiBJdAorCSAqIGNhbiBiZSB1c2VkIGFzIHRoZSBj b25mbGljdCBob3Jpem9uIHdoZW4gc2V0dGluZyB0aGUgVk0gb3Igd2hlbgorCSAqIGZyZWV6aW5n IGFsbCB0aGUgdHVwbGVzIG9uIHRoZSBwYWdlLiBJdCBpcyBvbmx5IHZhbGlkIHdoZW4gYWxsIHRo ZSBsaXZlCisJICogdHVwbGVzIG9uIHRoZSBwYWdlIGFyZSBhbGwtdmlzaWJsZS4KIAkgKgogCSAq IE5PVEU6IGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIGluaXRpYWxseSBkb24ndCBpbmNsdWRl IExQX0RFQUQgaXRlbXMuCiAJICogVGhhdCdzIGNvbnZlbmllbnQgZm9yIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKCkgdG8gdXNlIHRoZW0gdG8KLQkgKiBkZWNpZGUgd2hldGhlciB0byBmcmVl emUgdGhlIHBhZ2Ugb3Igbm90LiAgVGhlIGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96ZW4g dmFsdWVzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgYXJlIGFkanVzdGVkIHRvIGluY2x1ZGUKLQkg KiBMUF9ERUFEIGl0ZW1zIGFmdGVyIHdlIGRldGVybWluZSB3aGV0aGVyIHRvIG9wcG9ydHVuaXN0 aWNhbGx5IGZyZWV6ZS4KKwkgKiBkZWNpZGUgd2hldGhlciB0byBvcHBvcnR1bmlzdGljYWxseSBm cmVlemUgdGhlIHBhZ2Ugb3Igbm90LiAgVGhlCisJICogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96 ZW4gdmFsdWVzIHVsdGltYXRlbHkgdXNlZCB0byBzZXQgdGhlIFZNIGFyZQorCSAqIGFkanVzdGVk IHRvIGluY2x1ZGUgTFBfREVBRCBpdGVtcyBhZnRlciB3ZSBkZXRlcm1pbmUgd2hldGhlciBvciBu b3QgdG8KKwkgKiBvcHBvcnR1bmlzdGljYWxseSBmcmVlemUuCiAJICovCiAJYm9vbAkJYWxsX3Zp c2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKQEAgLTE5MSw2ICsxOTQsMTcgQEAgc3RhdGljIHZv aWQgcGFnZV92ZXJpZnlfcmVkaXJlY3RzKFBhZ2UgcGFnZSk7CiBzdGF0aWMgYm9vbCBoZWFwX3Bh Z2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJ CSAgYm9vbCBkaWRfdHVwbGVfaGludF9mcGksIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9faGludF9w cnVuZSwKIAkJCQkJCQkJICBQcnVuZVN0YXRlICpwcnN0YXRlKTsKK3N0YXRpYyBib29sIGlkZW50 aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZl ciwKKwkJCQkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwX2JsaywgUGFnZSBoZWFwX3BhZ2UsIGlu dCBubHBkZWFkX2l0ZW1zLAorCQkJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKKwkJCQkJCQkJ CQkgICB1aW50OCB2bWJpdHMpOworc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFBy dW5lU3RhdGUgKnByc3RhdGUsCisJCQkJCQkJCSAgUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkJ CSAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFnZSBoZWFwX3Bh Z2UsCisJCQkJCQkJCSAgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkJCQkgIGludCBubHBkZWFkX2l0 ZW1zLAorCQkJCQkJCQkgIHVpbnQ4ICpvbGRfdm1iaXRzLAorCQkJCQkJCQkgIHVpbnQ4ICpuZXdf dm1iaXRzKTsKIAogCiAvKgpAQCAtMjgwLDYgKzI5NCw3IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQo UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCiAJCQlQcnVuZUZyZWV6ZVBhcmFtcyBw YXJhbXMgPSB7CiAJCQkJLnJlbGF0aW9uID0gcmVsYXRpb24sCiAJCQkJLmJ1ZmZlciA9IGJ1ZmZl ciwKKwkJCQkudm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyLAogCQkJCS5yZWFzb24gPSBQUlVORV9P Tl9BQ0NFU1MsCiAJCQkJLm9wdGlvbnMgPSAwLAogCQkJCS52aXN0ZXN0ID0gdmlzdGVzdCwKQEAg LTM0MSw2ICszNTYsOCBAQCBwcnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVGcmVlemVQYXJhbXMgKnBh cmFtcywKIAkvKiBjdXRvZmZzIG11c3QgYmUgcHJvdmlkZWQgaWYgd2Ugd2lsbCBhdHRlbXB0IGZy ZWV6aW5nICovCiAJQXNzZXJ0KCEocGFyYW1zLT5vcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX0ZS RUVaRSkgfHwgcGFyYW1zLT5jdXRvZmZzKTsKIAlwcnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSA9IChw YXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFKSAhPSAwOworCXByc3RhdGUt PmF0dGVtcHRfdXBkYXRlX3ZtID0KKwkJKHBhcmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVO RV9VUERBVEVfVk0pICE9IDA7CiAJcHJzdGF0ZS0+Y3V0b2ZmcyA9IHBhcmFtcy0+Y3V0b2ZmczsK IAogCS8qCkBAIC0zOTYsNTEgKzQxMyw1NCBAQCBwcnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVGcmVl emVQYXJhbXMgKnBhcmFtcywKIAlwcnN0YXRlLT5mcnpfY29uZmxpY3RfaG9yaXpvbiA9IEludmFs aWRUcmFuc2FjdGlvbklkOwogCiAJLyoKLQkgKiBWYWN1dW0gbWF5IHVwZGF0ZSB0aGUgVk0gYWZ0 ZXIgd2UncmUgZG9uZS4gIFdlIGNhbiBrZWVwIHRyYWNrIG9mCi0JICogd2hldGhlciB0aGUgcGFn ZSB3aWxsIGJlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuIGFmdGVyIHBydW5pbmcgYW5kCi0J ICogZnJlZXppbmcgdG8gaGVscCB0aGUgY2FsbGVyIHRvIGRvIHRoYXQuCisJICogVHJhY2sgd2hl dGhlciB0aGUgcGFnZSBjb3VsZCBiZSBtYXJrZWQgYWxsLXZpc2libGUgYW5kL29yIGFsbC1mcm96 ZW4uCisJICogVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIGZvciBvcHBvcnR1bmlzdGljIGZyZWV6 aW5nIGFuZCBmb3IgdXBkYXRpbmcKKwkgKiB0aGUgdmlzaWJpbGl0eSBtYXAgKFZNKSBpZiByZXF1 ZXN0ZWQgYnkgdGhlIGNhbGxlci4KIAkgKgotCSAqIEN1cnJlbnRseSwgb25seSBWQUNVVU0gc2V0 cyB0aGUgVk0gYml0cy4gIFRvIHNhdmUgdGhlIGVmZm9ydCwgb25seSBkbwotCSAqIHRoZSBib29r a2VlcGluZyBpZiB0aGUgY2FsbGVyIG5lZWRzIGl0LiAgQ3VycmVudGx5LCB0aGF0J3MgdGllZCB0 bwotCSAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUsIGJ1dCBpdCBjb3VsZCBiZSBhIHNlcGFyYXRl IGZsYWcgaWYgeW91IHdhbnRlZAotCSAqIHRvIHVwZGF0ZSB0aGUgVk0gYml0cyB3aXRob3V0IGFs c28gZnJlZXppbmcgb3IgZnJlZXplIHdpdGhvdXQgYWxzbwotCSAqIHNldHRpbmcgdGhlIFZNIGJp dHMuCisJICogQ3VycmVudGx5LCBvbmx5IFZBQ1VVTSBwZXJmb3JtcyBmcmVlemluZywgYnV0IG90 aGVyIGNhbGxlcnMgbWF5IGluIHRoZQorCSAqIGZ1dHVyZS4gVmlzaWJpbGl0eSBib29ra2VlcGlu ZyBpcyByZXF1aXJlZCBub3QganVzdCBmb3Igc2V0dGluZyB0aGUgVk0KKwkgKiBiaXRzLCBidXQg YWxzbyBmb3Igb3Bwb3J0dW5pc3RpYyBmcmVlemluZzogd2Ugb25seSBjb25zaWRlciBmcmVlemlu ZyBpZgorCSAqIHRoZSBwYWdlIHdvdWxkIGJlY29tZSBhbGwtZnJvemVuLCBvciBpZiBpdCB3b3Vs ZCBiZSBhbGwtZnJvemVuIGV4Y2VwdAorCSAqIGZvciBkZWFkIHR1cGxlcyB0aGF0IFZBQ1VVTSB3 aWxsIHJlbW92ZS4gSWYgYXR0ZW1wdF91cGRhdGVfdm0gaXMgZmFsc2UsCisJICogd2Ugd2lsbCBu b3Qgc2V0IHRoZSBWTSBiaXQgZXZlbiBpZiB0aGUgcGFnZSBpcyBmb3VuZCB0byBiZSBhbGwtdmlz aWJsZS4KIAkgKgotCSAqIEluIGFkZGl0aW9uIHRvIHRlbGxpbmcgdGhlIGNhbGxlciB3aGV0aGVy IGl0IGNhbiBzZXQgdGhlIFZNIGJpdCwgd2UKLQkgKiBhbHNvIHVzZSAnYWxsX3Zpc2libGUnIGFu ZCAnYWxsX2Zyb3plbicgZm9yIG91ciBvd24gZGVjaXNpb24tbWFraW5nLiBJZgotCSAqIHRoZSB3 aG9sZSBwYWdlIHdvdWxkIGJlY29tZSBmcm96ZW4sIHdlIGNvbnNpZGVyIG9wcG9ydHVuaXN0aWNh bGx5Ci0JICogZnJlZXppbmcgdHVwbGVzLiAgV2Ugd2lsbCBub3QgYmUgYWJsZSB0byBmcmVlemUg dGhlIHdob2xlIHBhZ2UgaWYgdGhlcmUKLQkgKiBhcmUgdHVwbGVzIHByZXNlbnQgdGhhdCBhcmUg bm90IHZpc2libGUgdG8gZXZlcnlvbmUgb3IgaWYgdGhlcmUgYXJlCi0JICogZGVhZCB0dXBsZXMg d2hpY2ggYXJlIG5vdCB5ZXQgcmVtb3ZhYmxlLiAgSG93ZXZlciwgZGVhZCB0dXBsZXMgd2hpY2gK LQkgKiB3aWxsIGJlIHJlbW92ZWQgYnkgdGhlIGVuZCBvZiB2YWN1dW1pbmcgc2hvdWxkIG5vdCBw cmVjbHVkZSB1cyBmcm9tCi0JICogb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXppbmcuICBCZWNhdXNl IG9mIHRoYXQsIHdlIGRvIG5vdCBpbW1lZGlhdGVseQotCSAqIGNsZWFyIGFsbF92aXNpYmxlIGFu ZCBhbGxfZnJvemVuIHdoZW4gd2Ugc2VlIExQX0RFQUQgaXRlbXMuICBXZSBmaXgKLQkgKiB0aGF0 IGFmdGVyIHNjYW5uaW5nIHRoZSBsaW5lIHBvaW50ZXJzLiBXZSBtdXN0IGNvcnJlY3QgYWxsX3Zp c2libGUgYW5kCi0JICogYWxsX2Zyb3plbiBiZWZvcmUgd2UgcmV0dXJuIHRoZW0gdG8gdGhlIGNh bGxlciwgc28gdGhhdCB0aGUgY2FsbGVyCi0JICogZG9lc24ndCBzZXQgdGhlIFZNIGJpdHMgaW5j b3JyZWN0bHkuCisJICogSWYgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSBpcyBwYXNzZWQgd2l0 aG91dCBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFLAorCSAqIHByc3RhdGUuYWxsX2Zyb3plbiBtdXN0 IGJlIGluaXRpYWxpemVkIHRvIGZhbHNlLCBzaW5jZSB3ZSB3aWxsIG5vdCBjYWxsCisJICogaGVh cF9wcmVwYXJlX2ZyZWV6ZV90dXBsZSgpIGZvciBlYWNoIHR1cGxlLgorCSAqCisJICogRGVhZCB0 dXBsZXMgdGhhdCB3aWxsIGJlIHJlbW92ZWQgYnkgdGhlIGVuZCBvZiB2YWN1dW0gc2hvdWxkIG5v dAorCSAqIHByZXZlbnQgb3Bwb3J0dW5pc3RpYyBmcmVlemluZy4gVGhlcmVmb3JlLCB3ZSBkbyBu b3QgY2xlYXIgYWxsX3Zpc2libGUKKwkgKiBhbmQgYWxsX2Zyb3plbiB3aGVuIHdlIGVuY291bnRl ciBMUF9ERUFEIGl0ZW1zLiBJbnN0ZWFkLCB3ZSBjb3JyZWN0CisJICogdGhlbSBhZnRlciBkZWNp ZGluZyB3aGV0aGVyIHRvIGZyZWV6ZSwgYnV0IGJlZm9yZSB1cGRhdGluZyB0aGUgVk0sIHRvCisJ ICogYXZvaWQgc2V0dGluZyB0aGUgVk0gYml0cyBpbmNvcnJlY3RseS4KKwkgKgorCSAqIElmIG5l aXRoZXIgZnJlZXppbmcgbm9yIFZNIHVwZGF0ZXMgYXJlIHJlcXVlc3RlZCwgd2Ugc2tpcCB0aGUg ZXh0cmEKKwkgKiBib29ra2VlcGluZy4gSW4gdGhpcyBjYXNlLCBpbml0aWFsaXppbmcgYWxsX3Zp c2libGUgdG8gZmFsc2UgYWxsb3dzCisJICogaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xw X25vcm1hbCgpIHRvIGJ5cGFzcyB1bm5lY2Vzc2FyeSB3b3JrLgogCSAqLwogCWlmIChwcnN0YXRl LT5hdHRlbXB0X2ZyZWV6ZSkKIAl7CiAJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gdHJ1ZTsKIAkJ cHJzdGF0ZS0+YWxsX2Zyb3plbiA9IHRydWU7CiAJfQorCWVsc2UgaWYgKHByc3RhdGUtPmF0dGVt cHRfdXBkYXRlX3ZtKQorCXsKKwkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSB0cnVlOworCQlwcnN0 YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CisJfQogCWVsc2UKIAl7Ci0JCS8qCi0JCSAqIEluaXRp YWxpemluZyB0byBmYWxzZSBhbGxvd3Mgc2tpcHBpbmcgdGhlIHdvcmsgdG8gdXBkYXRlIHRoZW0g aW4KLQkJICogaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbCgpLgotCQkgKi8K IAkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKIAkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9 IGZhbHNlOwogCX0KIAogCS8qCi0JICogVGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUg bmV3ZXN0IHhtaW4gb2YgbGl2ZSB0dXBsZXMgb24gdGhlCi0JICogcGFnZS4gIEluIHRoZSBjb21t b24gY2FzZSwgdGhpcyB3aWxsIGJlIHNldCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiB0aGUKLQkg KiBjYWxsZXIgY2FuIHVzZSBmb3IgdXBkYXRpbmcgdGhlIFZNLiAgSWYsIGF0IHRoZSBlbmQgb2Yg ZnJlZXppbmcgYW5kCi0JICogcHJ1bmluZywgdGhlIHBhZ2UgaXMgYWxsLWZyb3plbiwgdGhlcmUg aXMgbm8gcG9zc2liaWxpdHkgdGhhdCBhbnkKLQkgKiBydW5uaW5nIHRyYW5zYWN0aW9uIG9uIHRo ZSBzdGFuZGJ5IGRvZXMgbm90IHNlZSB0dXBsZXMgb24gdGhlIHBhZ2UgYXMKLQkgKiBhbGwtdmlz aWJsZSwgc28gdGhlIGNvbmZsaWN0IGhvcml6b24gcmVtYWlucyBJbnZhbGlkVHJhbnNhY3Rpb25J ZC4KKwkgKiBUaGUgdmlzaWJpbGl0eSBjdXRvZmYgeGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBs aXZlLCBjb21taXR0ZWQgdHVwbGVzCisJICogb2xkZXIgdGhhbiBPbGRlc3RYbWluIG9uIHRoZSBw YWdlLiBUaGlzIGZpZWxkIGlzIG9ubHkga2VwdCB1cC10by1kYXRlCisJICogaWYgdGhlIHBhZ2Ug aXMgYWxsLXZpc2libGUuIEFzIHNvb24gYXMgYSB0dXBsZSBpcyBlbmNvdW50ZXJlZCB0aGF0IGlz CisJICogbm90IHZpc2libGUgdG8gYWxsLCB0aGlzIGZpZWxkIGlzIHVubWFpbnRhaW5lZC4gQXMg bG9uZyBhcyBpdCBpcworCSAqIG1haW50YWluZWQsIGl0IGNhbiBiZSB1c2VkIHRvIGNhbGN1bGF0 ZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbgorCSAqIHdoZW4gdXBkYXRpbmcgdGhlIFZN IGFuZC9vciBmcmVlemluZyBhbGwgdGhlIHR1cGxlcyBvbiB0aGUgcGFnZS4KIAkgKi8KIAlwcnN0 YXRlLT52aXNpYmlsaXR5X2N1dG9mZl94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIH0KQEAg LTc3NSwxMCArNzk1LDE0OCBAQCBoZWFwX3BhZ2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIsCiAJcmV0dXJuIGRvX2ZyZWV6ZTsKIH0KIAorLyoKKyAqIEhlbHBl ciB0byBjb3JyZWN0IGFueSBjb3JydXB0aW9uIGRldGVjdGVkIG9uIGEgaGVhcCBwYWdlIGFuZCBp dHMKKyAqIGNvcnJlc3BvbmRpbmcgdmlzaWJpbGl0eSBtYXAgcGFnZSBhZnRlciBwcnVuaW5nIGJ1 dCBiZWZvcmUgc2V0dGluZyB0aGUKKyAqIHZpc2liaWxpdHkgbWFwLiBJdCBleGFtaW5lcyB0aGUg aGVhcCBwYWdlLCB0aGUgYXNzb2NpYXRlZCBWTSBwYWdlLCBhbmQgdGhlCisgKiBudW1iZXIgb2Yg ZGVhZCBpdGVtcyBwcmV2aW91c2x5IGlkZW50aWZpZWQuCisgKgorICogVGhpcyBmdW5jdGlvbiBt dXN0IGJlIGNhbGxlZCB3aGlsZSBob2xkaW5nIGFuIGV4Y2x1c2l2ZSBsb2NrIG9uIHRoZSBoZWFw CisgKiBidWZmZXIsIGFuZCB0aGUgZGVhZCBpdGVtcyBtdXN0IGhhdmUgYmVlbiBkaXNjb3ZlcmVk IHVuZGVyIHRoYXQgc2FtZSBsb2NrLgorICoKKyAqIFRoZSBwcm92aWRlZCB2bWJpdHMgbXVzdCBy ZWZsZWN0IHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBWTSBibG9jaworICogcmVmZXJlbmNlZCBi eSB2bWJ1ZmZlci4gQWx0aG91Z2ggd2UgZG8gbm90IGhvbGQgYSBsb2NrIG9uIHRoZSBWTSBidWZm ZXIsIGl0CisgKiBpcyBwaW5uZWQsIGFuZCB0aGUgaGVhcCBidWZmZXIgaXMgZXhjbHVzaXZlbHkg bG9ja2VkLCBlbnN1cmluZyB0aGF0IG5vCisgKiBvdGhlciBiYWNrZW5kIGNhbiB1cGRhdGUgdGhl IFZNIGJpdHMgY29ycmVzcG9uZGluZyB0byB0aGlzIGhlYXAgcGFnZS4KKyAqCisgKiBSZXR1cm5z IHRydWUgaWYgaXQgY2xlYXJlZCBjb3JydXB0aW9uIGFuZCBmYWxzZSBvdGhlcndpc2UuCisgKi8K K3N0YXRpYyBib29sCitpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVs LCBCdWZmZXIgaGVhcF9idWZmZXIsCisJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIFBh Z2UgaGVhcF9wYWdlLAorCQkJCQkJCSAgIGludCBubHBkZWFkX2l0ZW1zLAorCQkJCQkJCSAgIEJ1 ZmZlciB2bWJ1ZmZlciwKKwkJCQkJCQkgICB1aW50OCB2bWJpdHMpCit7CisJQXNzZXJ0KHZpc2li aWxpdHltYXBfZ2V0X3N0YXR1cyhyZWwsIGhlYXBfYmxrLCAmdm1idWZmZXIpID09IHZtYml0cyk7 CisKKwlBc3NlcnQoQnVmZmVySXNMb2NrZWRCeU1lSW5Nb2RlKGhlYXBfYnVmZmVyLCBCVUZGRVJf TE9DS19FWENMVVNJVkUpKTsKKworCS8qCisJICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRoZSB2 aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKKwkgKiBwYWdlLWxl dmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgYml0IGdv dAorCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNhbGxl ZCwgc28gd2UgbXVzdCByZWNoZWNrCisJICogd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1 ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgorCSAqLworCWlmICghUGFnZUlzQWxsVmlzaWJs ZShoZWFwX3BhZ2UpICYmCisJCSgodm1iaXRzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSAh PSAwKSkKKwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFf Q09SUlVQVEVEKSwKKwkJCQkgZXJybXNnKCJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUg YnV0IHZpc2liaWxpdHkgbWFwIGJpdCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUi LAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgaGVhcF9ibGspKSk7CisKKwkJ dmlzaWJpbGl0eW1hcF9jbGVhcihyZWwsIGhlYXBfYmxrLCB2bWJ1ZmZlciwKKwkJCQkJCQlWSVNJ QklMSVRZTUFQX1ZBTElEX0JJVFMpOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwkvKgorCSAqIEl0 J3MgcG9zc2libGUgZm9yIHRoZSB2YWx1ZSByZXR1cm5lZCBieQorCSAqIEdldE9sZGVzdE5vblJl bW92YWJsZVRyYW5zYWN0aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QKKwkg KiB3cm9uZyBmb3IgdXMgdG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJs ZSB0byBldmVyeW9uZQorCSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBz ZXQuIFRoZSByZWFsIHNhZmUgeG1pbiB2YWx1ZQorCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJkcywg YnV0IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcworCSAqIGNvbnNlcnZh dGl2ZSBhbmQgc29tZXRpbWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBz bWFsbCwKKwkgKiBzbyBpZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMg dGhhdCB0aGUgdHVwbGVzIHRoYXQgd2UKKwkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8gZXZl cnlvbmUgeWV0IGFjdHVhbGx5IGFyZSwgYW5kIHRoZQorCSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcg aXMgY29ycmVjdC4KKwkgKgorCSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1z IG9uIGEgcGFnZSB3aXRoIFBEX0FMTF9WSVNJQkxFIHNldCwKKwkgKiBob3dldmVyLgorCSAqLwor CWVsc2UgaWYgKFBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJiBubHBkZWFkX2l0ZW1zID4g MCkKKwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09S UlVQVEVEKSwKKwkJCQkgZXJybXNnKCJwYWdlIGNvbnRhaW5pbmcgTFBfREVBRCBpdGVtcyBpcyBt YXJrZWQgYXMgYWxsLXZpc2libGUgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJCQkJ UmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgaGVhcF9ibGspKSk7CisKKwkJUGFnZUNsZWFy QWxsVmlzaWJsZShoZWFwX3BhZ2UpOworCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWZmZXIpOwor CQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbCwgaGVhcF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJ U0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CisJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBm YWxzZTsKK30KKworLyoKKyAqIERlY2lkZSB3aGV0aGVyIHRvIHNldCB0aGUgdmlzaWJpbGl0eSBt YXAgYml0cyAoYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4pCisgKiBmb3IgaGVhcF9ibGsgdXNp bmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgUHJ1bmVTdGF0ZSBhbmQgVk0uCisgKgorICogVGhpcyBm dW5jdGlvbiBkb2VzIG5vdCBhY3R1YWxseSBzZXQgdGhlIFZNIGJpdHMgb3IgcGFnZS1sZXZlbCB2 aXNpYmlsaXR5CisgKiBoaW50LCBQRF9BTExfVklTSUJMRS4KKyAqCisgKiBIb3dldmVyLCBpZiBp dCBmaW5kcyB0aGF0IHRoZSBwYWdlLWxldmVsIHZpc2liaWxpdHkgaGludCBvciBWTSBpcworICog Y29ycnVwdGVkLCBpdCB3aWxsIGZpeCB0aGVtIGJ5IGNsZWFyaW5nIHRoZSBWTSBiaXRzIGFuZCB2 aXNpYmlsaXR5IGhpbnQuCisgKiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgZG9uZSBpbiBhIGNy aXRpY2FsIHNlY3Rpb24uCisgKgorICogUmV0dXJucyB0cnVlIGlmIG9uZSBvciBib3RoIFZNIGJp dHMgc2hvdWxkIGJlIHNldCwgYWxvbmcgd2l0aCByZXR1cm5pbmcgdGhlCisgKiBjdXJyZW50IHZh bHVlIG9mIHRoZSBWTSBiaXRzIGluICpvbGRfdm1iaXRzIGFuZCB0aGUgZGVzaXJlZCBuZXcgdmFs dWUgb2YKKyAqIHRoZSBWTSBiaXRzIGluICpuZXdfdm1iaXRzLgorICoKKyAqIElmIHRoZSBWTSBz aG91bGQgbm90IGJlIHNldCwgaXQgcmV0dXJucyBmYWxzZS4gSWYgd2Ugd29uJ3QgY29uc2lkZXIK KyAqIHVwZGF0aW5nIHRoZSBWTSwgKm9sZF92bWJpdHMgd2lsbCBiZSAwLCByZWdhcmRsZXNzIG9m IHRoZSBjdXJyZW50IHZhbHVlIG9mCisgKiB0aGUgVk0gYml0cy4KKyAqLworc3RhdGljIGJvb2wK K2hlYXBfcGFnZV93aWxsX3NldF92bShQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCQkgIFJlbGF0 aW9uIHJlbGF0aW9uLAorCQkJCQkgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBCdWZmZXIgaGVhcF9i dWZmZXIsIFBhZ2UgaGVhcF9wYWdlLAorCQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwKKwkJCQkJICBp bnQgbmxwZGVhZF9pdGVtcywKKwkJCQkJICB1aW50OCAqb2xkX3ZtYml0cywKKwkJCQkJICB1aW50 OCAqbmV3X3ZtYml0cykKK3sKKwkqb2xkX3ZtYml0cyA9IDA7CisJKm5ld192bWJpdHMgPSAwOwor CisJaWYgKCFwcnN0YXRlLT5hdHRlbXB0X3VwZGF0ZV92bSkKKwkJcmV0dXJuIGZhbHNlOworCisJ Km9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBfYmxr LAorCQkJCQkJCQkJCSAgICZ2bWJ1ZmZlcik7CisKKwkvKiBXZSBkbyB0aGlzIGV2ZW4gaWYgbm90 IGFsbC12aXNpYmxlICovCisJaWYgKGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihyZWxh dGlvbiwgaGVhcF9idWZmZXIsIGhlYXBfYmxrLCBoZWFwX3BhZ2UsCisJCQkJCQkJCQkgICBubHBk ZWFkX2l0ZW1zLCB2bWJ1ZmZlciwKKwkJCQkJCQkJCSAgICpvbGRfdm1iaXRzKSkKKwkJKm9sZF92 bWJpdHMgPSAwOworCisJaWYgKCFwcnN0YXRlLT5hbGxfdmlzaWJsZSkKKwkJcmV0dXJuIGZhbHNl OworCisJKm5ld192bWJpdHMgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOworCisJaWYgKHBy c3RhdGUtPmFsbF9mcm96ZW4pCisJCSpuZXdfdm1iaXRzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZS T1pFTjsKKworCWlmICgqbmV3X3ZtYml0cyA9PSAqb2xkX3ZtYml0cykKKwl7CisJCSpuZXdfdm1i aXRzID0gMDsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiB0cnVlOworfQorCiAKIC8q CiAgKiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdtZW50YXRpb24gYW5kIHBvdGVudGlhbGx5IGZyZWV6 ZSB0dXBsZXMgb24gdGhlCi0gKiBzcGVjaWZpZWQgcGFnZS4KKyAqIHNwZWNpZmllZCBwYWdlLiBJ ZiB0aGUgcGFnZSdzIHZpc2liaWxpdHkgc3RhdHVzIGhhcyBjaGFuZ2VkLCB1cGRhdGUgaXQgaW4K KyAqIHRoZSBWTS4KICAqCiAgKiBDYWxsZXIgbXVzdCBoYXZlIHBpbiBhbmQgYnVmZmVyIGNsZWFu dXAgbG9jayBvbiB0aGUgcGFnZS4gIE5vdGUgdGhhdCB3ZQogICogZG9uJ3QgdXBkYXRlIHRoZSBG U00gaW5mb3JtYXRpb24gZm9yIHBhZ2Ugb24gY2FsbGVyJ3MgYmVoYWxmLiAgQ2FsbGVyIG1pZ2h0 CkBAIC03OTMsMTIgKzk1MSwxMyBAQCBoZWFwX3BhZ2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVs YXRpb24sIEJ1ZmZlciBidWZmZXIsCiAgKiB0dXBsZXMgaWYgaXQncyByZXF1aXJlZCBpbiBvcmRl ciB0byBhZHZhbmNlIHJlbGZyb3plbnhpZCAvIHJlbG1pbm14aWQsIG9yCiAgKiBpZiBpdCdzIGNv bnNpZGVyZWQgYWR2YW50YWdlb3VzIGZvciBvdmVyYWxsIHN5c3RlbSBwZXJmb3JtYW5jZSB0byBk byBzbwogICogbm93LiAgVGhlICdwYXJhbXMuY3V0b2ZmcycsICdwcmVzdWx0JywgJ25ld19yZWxm cm96ZW5feGlkJyBhbmQKLSAqICduZXdfcmVsbWluX214aWQnIGFyZ3VtZW50cyBhcmUgcmVxdWly ZWQgd2hlbiBmcmVlemluZy4gIFdoZW4KLSAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgb3B0aW9u IGlzIHBhc3NlZCwgd2UgYWxzbyBzZXQgcHJlc3VsdC0+YWxsX3Zpc2libGUKLSAqIGFuZCBwcmVz dWx0LT5hbGxfZnJvemVuIGFmdGVyIGRldGVybWluaW5nIHdoZXRoZXIgb3Igbm90IHRvCi0gKiBv cHBvcnR1bmlzdGljYWxseSBmcmVlemUsIHRvIGluZGljYXRlIGlmIHRoZSBWTSBiaXRzIGNhbiBi ZSBzZXQuICBUaGV5IGFyZQotICogYWx3YXlzIHNldCB0byBmYWxzZSB3aGVuIHRoZSBIRUFQX1BB R0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBub3QgcGFzc2VkLAotICogYmVjYXVzZSBhdCB0aGUg bW9tZW50IG9ubHkgY2FsbGVycyB0aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlv bi4KKyAqICduZXdfcmVsbWluX214aWQnIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQgd2hlbiBmcmVl emluZy4KKyAqCisgKiBJZiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNIGlzIHNldCBpbiBwYXJh bXMgYW5kIHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZgorICogdGhlIHBhZ2UgaGFzIGNoYW5nZWQs IHdlIHdpbGwgdXBkYXRlIHRoZSBWTSBhdCB0aGUgc2FtZSB0aW1lIGFzIHBydW5pbmcgYW5kCisg KiBmcmVlemluZyB0aGUgaGVhcCBwYWdlLiBXZSB3aWxsIGFsc28gdXBkYXRlIHByZXN1bHQtPm9s ZF92bWJpdHMgYW5kCisgKiBwcmVzdWx0LT5uZXdfdm1iaXRzIHdpdGggdGhlIHN0YXRlIG9mIHRo ZSBWTSBiZWZvcmUgYW5kIGFmdGVyIHVwZGF0aW5nIGl0CisgKiBmb3IgdGhlIGNhbGxlciB0byB1 c2UgaW4gYm9va2tlZXBpbmcuCiAgKgogICogcHJlc3VsdCBjb250YWlucyBvdXRwdXQgcGFyYW1l dGVycyBuZWVkZWQgYnkgY2FsbGVycywgc3VjaCBhcyB0aGUgbnVtYmVyIG9mCiAgKiB0dXBsZXMg cmVtb3ZlZCBhbmQgdGhlIG9mZnNldHMgb2YgZGVhZCBpdGVtcyBvbiB0aGUgcGFnZSBhZnRlciBw cnVuaW5nLgpAQCAtODIzLDEzICs5ODIsMTggQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo UHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCQkJCSAgIE11bHRpWGFjdElkICpuZXdfcmVs bWluX214aWQpCiB7CiAJQnVmZmVyCQlidWZmZXIgPSBwYXJhbXMtPmJ1ZmZlcjsKKwlCdWZmZXIJ CXZtYnVmZmVyID0gcGFyYW1zLT52bWJ1ZmZlcjsKIAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFn ZShidWZmZXIpOworCUJsb2NrTnVtYmVyIGJsb2Nrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihi dWZmZXIpOwogCVBydW5lU3RhdGUJcHJzdGF0ZTsKIAlib29sCQlkb19mcmVlemU7CiAJYm9vbAkJ ZG9fcHJ1bmU7CiAJYm9vbAkJZG9faGludF9wcnVuZTsKKwlib29sCQlkb19zZXRfdm07CiAJYm9v bAkJZGlkX3R1cGxlX2hpbnRfZnBpOwogCWludDY0CQlmcGlfYmVmb3JlID0gcGdXYWxVc2FnZS53 YWxfZnBpOworCXVpbnQ4CQluZXdfdm1iaXRzOworCXVpbnQ4CQlvbGRfdm1iaXRzOwogCiAJLyog SW5pdGlhbGl6ZSBwcnN0YXRlICovCiAJcHJ1bmVfZnJlZXplX3NldHVwKHBhcmFtcywKQEAgLTEw MTEsNiArMTE3NSw2NSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBh cmFtcyAqcGFyYW1zLAogCQkJKm5ld19yZWxtaW5fbXhpZCA9IHByc3RhdGUucGFnZWZyei5Ob0Zy ZWV6ZVBhZ2VSZWxtaW5NeGlkOwogCQl9CiAJfQorCisJLyogTm93IHVwZGF0ZSB0aGUgdmlzaWJp bGl0eSBtYXAgYW5kIFBEX0FMTF9WSVNJQkxFIGhpbnQgKi8KKwlBc3NlcnQoIXByc3RhdGUuYWxs X3Zpc2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApKTsKKworCWRvX3NldF92bSA9 IGhlYXBfcGFnZV93aWxsX3NldF92bSgmcHJzdGF0ZSwKKwkJCQkJCQkJCSAgcGFyYW1zLT5yZWxh dGlvbiwKKwkJCQkJCQkJCSAgYmxvY2tubywKKwkJCQkJCQkJCSAgYnVmZmVyLAorCQkJCQkJCQkJ ICBwYWdlLAorCQkJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkJCSAgcHJzdGF0ZS5scGRlYWRf aXRlbXMsCisJCQkJCQkJCQkgICZvbGRfdm1iaXRzLAorCQkJCQkJCQkJICAmbmV3X3ZtYml0cyk7 CisKKwkvKgorCSAqIG5ld192bWJpdHMgc2hvdWxkIGJlIDAgcmVnYXJkbGVzcyBvZiB3aGV0aGVy IG9yIG5vdCB0aGUgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlIGlmIHdlIGRvIG5vdCBpbnRlbmQg dG8gc2V0IHRoZSBWTS4KKwkgKi8KKwlBc3NlcnQoZG9fc2V0X3ZtIHx8IG5ld192bWJpdHMgPT0g MCk7CisKKwkvKiBTZXQgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBwYWdlIHZpc2liaWxpdHkgaGlu dCwgaWYgcmVsZXZhbnQgKi8KKwlpZiAoZG9fc2V0X3ZtKQorCXsKKwkJQXNzZXJ0KHByc3RhdGUu YWxsX3Zpc2libGUpOworCisJCS8qCisJCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0 aGF0IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlzIHNldAorCQkgKiB3aGlsZSB0aGUgcGFnZS1s ZXZlbCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2VkIChpZgorCQkgKiBj aGVja3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gUmVnYXJkbGVzcywgc2V0IGJvdGggYml0cyBzbyB0 aGF0IHdlCisJCSAqIGdldCBiYWNrIGluIHN5bmMuCisJCSAqCisJCSAqIFRoZSBoZWFwIGJ1ZmZl ciBtdXN0IGJlIG1hcmtlZCBkaXJ0eSBiZWZvcmUgYWRkaW5nIGl0IHRvIHRoZSBXQUwKKwkJICog Y2hhaW4gd2hlbiBzZXR0aW5nIHRoZSBWTS4gV2UgZG9uJ3Qgd29ycnkgYWJvdXQgdW5uZWNlc3Nh cmlseQorCQkgKiBkaXJ0eWluZyB0aGUgaGVhcCBidWZmZXIgaWYgUERfQUxMX1ZJU0lCTEUgaXMg YWxyZWFkeSBzZXQsIHRob3VnaC4KKwkJICogSXQgaXMgZXh0cmVtZWx5IHJhcmUgdG8gaGF2ZSBh IGNsZWFuIGhlYXAgYnVmZmVyIHdpdGgKKwkJICogUERfQUxMX1ZJU0lCTEUgYWxyZWFkeSBzZXQg YW5kIHRoZSBWTSBiaXRzIGNsZWFyLCBzbyB0aGVyZSBpcyBubworCQkgKiBwb2ludCBpbiBvcHRp bWl6aW5nIGl0LgorCQkgKi8KKwkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CisJCU1hcmtCdWZm ZXJEaXJ0eShidWZmZXIpOworCisJCS8qCisJCSAqIElmIHRoZSBwYWdlIGlzIGJlaW5nIHNldCBh bGwtZnJvemVuLCB3ZSBwYXNzIEludmFsaWRUcmFuc2FjdGlvbklkCisJCSAqIGFzIHRoZSBjdXRv ZmZfeGlkLCBzaW5jZSBhIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24gc3VmZmljaWVudCB0bwor CQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBh Z2UncyB0dXBsZXMKKwkJICogd2VyZSBmcm96ZW4uCisJCSAqLworCQlBc3NlcnQoIXByc3RhdGUu YWxsX2Zyb3plbiB8fAorCQkJICAgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQtPnZtX2Nv bmZsaWN0X2hvcml6b24pKTsKKworCQl2aXNpYmlsaXR5bWFwX3NldChwYXJhbXMtPnJlbGF0aW9u LCBibG9ja25vLCBidWZmZXIsCisJCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLAorCQkJCQkJICB2 bWJ1ZmZlciwgcHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbiwKKwkJCQkJCSAgbmV3X3ZtYml0 cyk7CisJfQorCisJLyogU2F2ZSB0aGUgdm1iaXRzIGZvciBjYWxsZXIgKi8KKwlwcmVzdWx0LT5v bGRfdm1iaXRzID0gb2xkX3ZtYml0czsKKwlwcmVzdWx0LT5uZXdfdm1iaXRzID0gbmV3X3ZtYml0 czsKIH0KIAogCkBAIC0xNDg1LDYgKzE3MDgsOCBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5n ZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYgog CQkJewogCQkJCVRyYW5zYWN0aW9uSWQgeG1pbjsKIAorCQkJCUFzc2VydChwcnN0YXRlLT5hdHRl bXB0X3VwZGF0ZV92bSk7CisKIAkJCQlpZiAoIUhlYXBUdXBsZUhlYWRlclhtaW5Db21taXR0ZWQo aHR1cCkpCiAJCQkJewogCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDU4NTdmZDFiZmI2Li5mZTgxNjI5OWY0YiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDI0LDExICs0MjQsNyBAQCBz dGF0aWMgdm9pZCBmaW5kX25leHRfdW5za2lwcGFibGVfYmxvY2soTFZSZWxTdGF0ZSAqdmFjcmVs LCBib29sICpza2lwc2FsbHZpcyk7CiBzdGF0aWMgYm9vbCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5 KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQkJICAgQmxvY2tOdW1iZXIg Ymxrbm8sIFBhZ2UgcGFnZSwKIAkJCQkJCQkJICAgYm9vbCBzaGFyZWxvY2ssIEJ1ZmZlciB2bWJ1 ZmZlcik7Ci1zdGF0aWMgYm9vbCBpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRp b24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsCi0JCQkJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVh cF9ibGssIFBhZ2UgaGVhcF9wYWdlLAotCQkJCQkJCQkJCSAgIGludCBubHBkZWFkX2l0ZW1zLAot CQkJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKLQkJCQkJCQkJCQkgICB1aW50OCB2bWJpdHMp OworCiBzdGF0aWMgaW50CWxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZl ciBidWYsCiAJCQkJCQkJQmxvY2tOdW1iZXIgYmxrbm8sIFBhZ2UgcGFnZSwKIAkJCQkJCQlCdWZm ZXIgdm1idWZmZXIsCkBAIC0xOTYyLDgzICsxOTU4LDYgQEAgY21wT2Zmc2V0TnVtYmVycyhjb25z dCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogCXJldHVybiBwZ19jbXBfdTE2KCooY29uc3QgT2Zm c2V0TnVtYmVyICopIGEsICooY29uc3QgT2Zmc2V0TnVtYmVyICopIGIpOwogfQogCi0vKgotICog SGVscGVyIHRvIGNvcnJlY3QgYW55IGNvcnJ1cHRpb24gZGV0ZWN0ZWQgb24gYSBoZWFwIHBhZ2Ug YW5kIGl0cwotICogY29ycmVzcG9uZGluZyB2aXNpYmlsaXR5IG1hcCBwYWdlIGFmdGVyIHBydW5p bmcgYnV0IGJlZm9yZSBzZXR0aW5nIHRoZQotICogdmlzaWJpbGl0eSBtYXAuIEl0IGV4YW1pbmVz IHRoZSBoZWFwIHBhZ2UsIHRoZSBhc3NvY2lhdGVkIFZNIHBhZ2UsIGFuZCB0aGUKLSAqIG51bWJl ciBvZiBkZWFkIGl0ZW1zIHByZXZpb3VzbHkgaWRlbnRpZmllZC4KLSAqCi0gKiBUaGlzIGZ1bmN0 aW9uIG11c3QgYmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYW4gZXhjbHVzaXZlIGxvY2sgb24gdGhl IGhlYXAKLSAqIGJ1ZmZlciwgYW5kIHRoZSBkZWFkIGl0ZW1zIG11c3QgaGF2ZSBiZWVuIGRpc2Nv dmVyZWQgdW5kZXIgdGhhdCBzYW1lIGxvY2suCi0KLSAqIFRoZSBwcm92aWRlZCB2bWJpdHMgbXVz dCByZWZsZWN0IHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBWTSBibG9jawotICogcmVmZXJlbmNl ZCBieSB2bWJ1ZmZlci4gQWx0aG91Z2ggd2UgZG8gbm90IGhvbGQgYSBsb2NrIG9uIHRoZSBWTSBi dWZmZXIsIGl0Ci0gKiBpcyBwaW5uZWQsIGFuZCB0aGUgaGVhcCBidWZmZXIgaXMgZXhjbHVzaXZl bHkgbG9ja2VkLCBlbnN1cmluZyB0aGF0IG5vCi0gKiBvdGhlciBiYWNrZW5kIGNhbiB1cGRhdGUg dGhlIFZNIGJpdHMgY29ycmVzcG9uZGluZyB0byB0aGlzIGhlYXAgcGFnZS4KLSAqCi0gKiBSZXR1 cm5zIHRydWUgaWYgaXQgY2xlYXJlZCBjb3JydXB0aW9uIGFuZCBmYWxzZSBvdGhlcndpc2UuCi0g Ki8KLXN0YXRpYyBib29sCi1pZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24g cmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsCi0JCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGss IFBhZ2UgaGVhcF9wYWdlLAotCQkJCQkJCSAgIGludCBubHBkZWFkX2l0ZW1zLAotCQkJCQkJCSAg IEJ1ZmZlciB2bWJ1ZmZlciwKLQkJCQkJCQkgICB1aW50OCB2bWJpdHMpCi17Ci0JQXNzZXJ0KHZp c2liaWxpdHltYXBfZ2V0X3N0YXR1cyhyZWwsIGhlYXBfYmxrLCAmdm1idWZmZXIpID09IHZtYml0 cyk7Ci0KLQlBc3NlcnQoQnVmZmVySXNMb2NrZWRCeU1lSW5Nb2RlKGhlYXBfYnVmZmVyLCBCVUZG RVJfTE9DS19FWENMVVNJVkUpKTsKLQotCS8qCi0JICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRo ZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKLQkgKiBwYWdl LWxldmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgYml0 IGdvdAotCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNh bGxlZCwgc28gd2UgbXVzdCByZWNoZWNrCi0JICogd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29u Y2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgotCSAqLwotCWlmICghUGFnZUlzQWxsVmlz aWJsZShoZWFwX3BhZ2UpICYmCi0JCSgodm1iaXRzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRT KSAhPSAwKSkKLQl7Ci0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RFX0RB VEFfQ09SUlVQVEVEKSwKLQkJCQkgZXJybXNnKCJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2li bGUgYnV0IHZpc2liaWxpdHkgbWFwIGJpdCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2Ug JXUiLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgaGVhcF9ibGspKSk7Ci0K LQkJdmlzaWJpbGl0eW1hcF9jbGVhcihyZWwsIGhlYXBfYmxrLCB2bWJ1ZmZlciwKLQkJCQkJCQlW SVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwotCQlyZXR1cm4gdHJ1ZTsKLQl9Ci0KLQkvKgotCSAq IEl0J3MgcG9zc2libGUgZm9yIHRoZSB2YWx1ZSByZXR1cm5lZCBieQotCSAqIEdldE9sZGVzdE5v blJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QK LQkgKiB3cm9uZyBmb3IgdXMgdG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlz aWJsZSB0byBldmVyeW9uZQotCSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFk eSBzZXQuIFRoZSByZWFsIHNhZmUgeG1pbiB2YWx1ZQotCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJk cywgYnV0IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcwotCSAqIGNvbnNl cnZhdGl2ZSBhbmQgc29tZXRpbWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3Nhcmls eSBzbWFsbCwKLQkgKiBzbyBpZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVh bnMgdGhhdCB0aGUgdHVwbGVzIHRoYXQgd2UKLQkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8g ZXZlcnlvbmUgeWV0IGFjdHVhbGx5IGFyZSwgYW5kIHRoZQotCSAqIFBEX0FMTF9WSVNJQkxFIGZs YWcgaXMgY29ycmVjdC4KLQkgKgotCSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0 ZW1zIG9uIGEgcGFnZSB3aXRoIFBEX0FMTF9WSVNJQkxFIHNldCwKLQkgKiBob3dldmVyLgotCSAq LwotCWVsc2UgaWYgKFBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJiBubHBkZWFkX2l0ZW1z ID4gMCkKLQl7Ci0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFf Q09SUlVQVEVEKSwKLQkJCQkgZXJybXNnKCJwYWdlIGNvbnRhaW5pbmcgTFBfREVBRCBpdGVtcyBp cyBtYXJrZWQgYXMgYWxsLXZpc2libGUgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJ CQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgaGVhcF9ibGspKSk7Ci0KLQkJUGFnZUNs ZWFyQWxsVmlzaWJsZShoZWFwX3BhZ2UpOwotCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWZmZXIp OwotCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbCwgaGVhcF9ibGssIHZtYnVmZmVyLAotCQkJCQkJ CVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7Ci0JCXJldHVybiB0cnVlOwotCX0KLQotCXJldHVy biBmYWxzZTsKLX0KLQogLyoKICAqCWxhenlfc2Nhbl9wcnVuZSgpIC0tIGxhenlfc2Nhbl9oZWFw KCkgcHJ1bmluZyBhbmQgZnJlZXppbmcuCiAgKgpAQCAtMjA3MCwxMyArMTk4OSwxMiBAQCBsYXp5 X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCVBydW5lRnJlZXplUGFyYW1zIHBhcmFt cyA9IHsKIAkJLnJlbGF0aW9uID0gcmVsLAogCQkuYnVmZmVyID0gYnVmLAorCQkudm1idWZmZXIg PSB2bWJ1ZmZlciwKIAkJLnJlYXNvbiA9IFBSVU5FX1ZBQ1VVTV9TQ0FOLAotCQkub3B0aW9ucyA9 IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUsCisJCS5vcHRpb25zID0gSEVBUF9QQUdFX1BSVU5FX0ZS RUVaRSB8IEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0sCiAJCS52aXN0ZXN0ID0gdmFjcmVsLT52 aXN0ZXN0LAogCQkuY3V0b2ZmcyA9ICZ2YWNyZWwtPmN1dG9mZnMsCiAJfTsKLQl1aW50OAkJb2xk X3ZtYml0cyA9IDA7Ci0JdWludDgJCW5ld192bWJpdHMgPSAwOwogCiAJQXNzZXJ0KEJ1ZmZlckdl dEJsb2NrTnVtYmVyKGJ1ZikgPT0gYmxrbm8pOwogCkBAIC0yMTc2LDc1ICsyMDk0LDI1IEBAIGxh enlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJLyogRGlkIHdlIGZpbmQgTFBfREVB RCBpdGVtcz8gKi8KIAkqaGFzX2xwZGVhZF9pdGVtcyA9IChwcmVzdWx0LmxwZGVhZF9pdGVtcyA+ IDApOwogCi0JQXNzZXJ0KCFwcmVzdWx0LmFsbF92aXNpYmxlIHx8ICEoKmhhc19scGRlYWRfaXRl bXMpKTsKLQlBc3NlcnQoIXByZXN1bHQuYWxsX2Zyb3plbiB8fCBwcmVzdWx0LmFsbF92aXNpYmxl KTsKLQotCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXModmFjcmVsLT5yZWws IGJsa25vLCAmdm1idWZmZXIpOwotCi0JaWYgKGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlv bih2YWNyZWwtPnJlbCwgYnVmLCBibGtubywgcGFnZSwKLQkJCQkJCQkJCSAgIHByZXN1bHQubHBk ZWFkX2l0ZW1zLCB2bWJ1ZmZlciwKLQkJCQkJCQkJCSAgIG9sZF92bWJpdHMpKQotCQlvbGRfdm1i aXRzID0gMDsKLQotCWlmICghcHJlc3VsdC5hbGxfdmlzaWJsZSkKLQkJcmV0dXJuIHByZXN1bHQu bmRlbGV0ZWQ7Ci0KLQkvKiBTZXQgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBwYWdlIHZpc2liaWxp dHkgaGludCAqLwotCW5ld192bWJpdHMgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOwotCi0J aWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJbmV3X3ZtYml0cyB8PSBWSVNJQklMSVRZTUFQX0FM TF9GUk9aRU47Ci0KLQkvKiBOb3RoaW5nIHRvIGRvICovCi0JaWYgKG9sZF92bWJpdHMgPT0gbmV3 X3ZtYml0cykKLQkJcmV0dXJuIHByZXN1bHQubmRlbGV0ZWQ7Ci0KLQlBc3NlcnQocHJlc3VsdC5h bGxfdmlzaWJsZSk7Ci0KLQkvKgotCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0 IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlzIHNldCB3aGlsZQotCSAqIHRoZSBwYWdlLWxldmVs IGJpdCBpcyBjbGVhciwgYnV0IHRoZSByZXZlcnNlIGlzIGFsbG93ZWQgKGlmIGNoZWNrc3Vtcwot CSAqIGFyZSBub3QgZW5hYmxlZCkuIFJlZ2FyZGxlc3MsIHNldCBib3RoIGJpdHMgc28gdGhhdCB3 ZSBnZXQgYmFjayBpbgotCSAqIHN5bmMuCi0JICoKLQkgKiBUaGUgaGVhcCBidWZmZXIgbXVzdCBi ZSBtYXJrZWQgZGlydHkgYmVmb3JlIGFkZGluZyBpdCB0byB0aGUgV0FMIGNoYWluCi0JICogd2hl biBzZXR0aW5nIHRoZSBWTS4gV2UgZG9uJ3Qgd29ycnkgYWJvdXQgdW5uZWNlc3NhcmlseSBkaXJ0 eWluZyB0aGUKLQkgKiBoZWFwIGJ1ZmZlciBpZiBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNl dCwgdGhvdWdoLiBJdCBpcyBleHRyZW1lbHkKLQkgKiByYXJlIHRvIGhhdmUgYSBjbGVhbiBoZWFw IGJ1ZmZlciB3aXRoIFBEX0FMTF9WSVNJQkxFIGFscmVhZHkgc2V0IGFuZAotCSAqIHRoZSBWTSBi aXRzIGNsZWFyLCBzbyB0aGVyZSBpcyBubyBwb2ludCBpbiBvcHRpbWl6aW5nIGl0LgotCSAqLwot CVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCU1hcmtCdWZmZXJEaXJ0eShidWYpOwotCi0JLyoK LQkgKiBJZiB0aGUgcGFnZSBpcyBiZWluZyBzZXQgYWxsLWZyb3plbiwgd2UgcGFzcyBJbnZhbGlk VHJhbnNhY3Rpb25JZCBhcwotCSAqIHRoZSBjdXRvZmZfeGlkLCBzaW5jZSBhIHNuYXBzaG90IGNv bmZsaWN0IGhvcml6b24gc3VmZmljaWVudCB0byBtYWtlCi0JICogZXZlcnl0aGluZyBzYWZlIGZv ciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFnZSdzIHR1cGxlcyB3ZXJlIGZyb3plbi4KLQkg Ki8KLQlBc3NlcnQoIXByZXN1bHQuYWxsX2Zyb3plbiB8fAotCQkgICAhVHJhbnNhY3Rpb25JZElz VmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uKSk7Ci0KLQl2aXNpYmlsaXR5bWFwX3Nl dCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJ CQkJICB2bWJ1ZmZlciwgcHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uLAotCQkJCQkgIG5ld192 bWJpdHMpOwogCiAJLyoKIAkgKiBJZiB0aGUgcGFnZSB3YXNuJ3QgYWxyZWFkeSBzZXQgYWxsLXZp c2libGUgYW5kL29yIGFsbC1mcm96ZW4gaW4gdGhlIFZNLAogCSAqIGNvdW50IGl0IGFzIG5ld2x5 IHNldCBmb3IgbG9nZ2luZy4KIAkgKi8KLQlpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQ X0FMTF9WSVNJQkxFKSA9PSAwKQorCWlmICgocHJlc3VsdC5vbGRfdm1iaXRzICYgVklTSUJJTElU WU1BUF9BTExfVklTSUJMRSkgPT0gMCAmJgorCQkocHJlc3VsdC5uZXdfdm1iaXRzICYgVklTSUJJ TElUWU1BUF9BTExfVklTSUJMRSkgIT0gMCkKIAl7CiAJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVf cGFnZXMrKzsKLQkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKKwkJaWYgKChwcmVzdWx0Lm5ld192 bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pICE9IDApCiAJCXsKIAkJCXZhY3JlbC0+ dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7CiAJCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVl OwogCQl9CiAJfQotCWVsc2UgaWYgKChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJP WkVOKSA9PSAwICYmCi0JCQkgcHJlc3VsdC5hbGxfZnJvemVuKQorCWVsc2UgaWYgKChwcmVzdWx0 Lm9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pID09IDAgJiYKKwkJCSAocHJl c3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSAhPSAwKQogCXsKKwkJ QXNzZXJ0KChwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSAh PSAwKTsKIAkJdmFjcmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7CiAJCSp2bV9wYWdlX2Zyb3pl biA9IHRydWU7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IGNlNDhmYWM0MmJhLi4yYzA3ZTE5N2Rj OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtNDIsNiArNDIsNyBAQAogLyogIm9wdGlvbnMiIGZsYWcg Yml0cyBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUgKi8KICNkZWZpbmUgSEVBUF9QQUdF X1BSVU5FX01BUktfVU5VU0VEX05PVwkJKDEgPDwgMCkKICNkZWZpbmUgSEVBUF9QQUdFX1BSVU5F X0ZSRUVaRQkJCQkoMSA8PCAxKQorI2RlZmluZSBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNCQkJ KDEgPDwgMikKIAogdHlwZWRlZiBzdHJ1Y3QgQnVsa0luc2VydFN0YXRlRGF0YSAqQnVsa0luc2Vy dFN0YXRlOwogdHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgR2xvYmFsVmlzU3RhdGU7CkBA IC0yMzgsNiArMjM5LDEyIEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUGFyYW1zCiAJUmVs YXRpb24JcmVsYXRpb247CQkvKiByZWxhdGlvbiBjb250YWluaW5nIGJ1ZmZlciB0byBiZSBwcnVu ZWQgKi8KIAlCdWZmZXIJCWJ1ZmZlcjsJCQkvKiBidWZmZXIgdG8gYmUgcHJ1bmVkICovCiAKKwkv KgorCSAqIElmIHdlIHdpbGwgY29uc2lkZXIgdXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwLCB2 bWJ1ZmZlciBzaG91bGQKKwkgKiBjb250YWluIHRoZSBjb3JyZWN0IGJsb2NrIG9mIHRoZSB2aXNp YmlsaXR5IG1hcCBhbmQgYmUgcGlubmVkLgorCSAqLworCUJ1ZmZlcgkJdm1idWZmZXI7CisKIAkv KgogCSAqIFRoZSByZWFzb24gcHJ1bmluZyB3YXMgcGVyZm9ybWVkLiAgSXQgaXMgdXNlZCB0byBz ZXQgdGhlIFdBTCByZWNvcmQKIAkgKiBvcGNvZGUgd2hpY2ggaXMgdXNlZCBmb3IgZGVidWdnaW5n IGFuZCBhbmFseXNpcyBwdXJwb3Nlcy4KQEAgLTI1Miw2ICsyNTksOSBAQCB0eXBlZGVmIHN0cnVj dCBQcnVuZUZyZWV6ZVBhcmFtcwogCSAqCiAJICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBpbmRp Y2F0ZXMgdGhhdCB3ZSB3aWxsIGFsc28gZnJlZXplIHR1cGxlcywgYW5kCiAJICogd2lsbCByZXR1 cm4gJ2FsbF92aXNpYmxlJywgJ2FsbF9mcm96ZW4nIGZsYWdzIHRvIHRoZSBjYWxsZXIuCisJICoK KwkgKiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNIGluZGljYXRlcyB0aGF0IHdlIHdpbGwgc2V0 IHRoZSBwYWdlJ3Mgc3RhdHVzCisJICogaW4gdGhlIFZNLgogCSAqLwogCWludAkJCW9wdGlvbnM7 CiAKQEAgLTI5OSw2ICszMDksMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVSZXN1bHQK IAlib29sCQlhbGxfZnJvemVuOwogCVRyYW5zYWN0aW9uSWQgdm1fY29uZmxpY3RfaG9yaXpvbjsK IAorCS8qCisJICogb2xkX3ZtYml0cyBhcmUgdGhlIHN0YXRlIG9mIHRoZSBhbGwtdmlzaWJsZSBh bmQgYWxsLWZyb3plbiBiaXRzIGluIHRoZQorCSAqIHZpc2liaWxpdHkgbWFwIGJlZm9yZSB1cGRh dGluZyBpdCBkdXJpbmcgcGhhc2UgSSBvZiB2YWN1dW1pbmcuCisJICogbmV3X3ZtYml0cyBhcmUg dGhlIHN0YXRlIG9mIHRob3NlIGJpdHMgYWZ0ZXIgcGhhc2UgSSBvZiB2YWN1dW1pbmcuCisJICoK KwkgKiBUaGVzZSBhcmUgb25seSBzZXQgaWYgdGhlIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0g b3B0aW9uIGlzIHNldC4KKwkgKi8KKwl1aW50OAkJbmV3X3ZtYml0czsKKwl1aW50OAkJb2xkX3Zt Yml0czsKKwogCS8qCiAJICogV2hldGhlciBvciBub3QgdGhlIHBhZ2UgbWFrZXMgcmVsIHRydW5j YXRpb24gdW5zYWZlLiAgVGhpcyBpcyBzZXQgdG8KIAkgKiAndHJ1ZScsIGV2ZW4gaWYgdGhlIHBh Z2UgY29udGFpbnMgTFBfREVBRCBpdGVtcy4gIFZBQ1VVTSB3aWxsIHJlbW92ZQotLSAKMi40My4w Cgo= --00000000000050ca310647bb8e6c Content-Type: text/x-patch; charset="US-ASCII"; name="v33-0005-Move-VM-assert-into-prune-freeze-code.patch" Content-Disposition: attachment; filename="v33-0005-Move-VM-assert-into-prune-freeze-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk2v24l74 RnJvbSAwMTYyYzc4YzQyNzY0Y2RiMGVjZjBhZDgyZWI2MTY5NTRkMTVhOTRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTU6NTc6MzQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMyAwNS8xNl0gTW92ZSBWTSBhc3NlcnQgaW50byBwcnVuZS9mcmVlemUgY29kZQoKVGhp cyBpcyBhIHN0ZXAgdG93YXJkIHNldHRpbmcgdGhlIFZNIGluIHRoZSBzYW1lIFdBTCByZWNvcmQg YXMgcHJ1bmluZwphbmQgZnJlZXppbmcuIEl0IG1vdmVzIHRoZSBjaGVjayBvZiB0aGUgaGVhcCBw YWdlIGludG8gcHJ1bmUvZnJlZXplIGNvZGUKYmVmb3JlIHNldHRpbmcgdGhlIFZNLiBUaGlzIGFs bG93cyB1cyB0byByZW1vdmUgc29tZSBmaWVsZHMgb2YgdGhlClBydW5lRnJlZXplUmVzdWx0LgoK UmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+Ci0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgIHwgODYgKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwgNjggKy0tLS0t LS0tLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgIHwg MjUgKysrLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgMTAyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggNTNiNzcxMWFiMjEu Ljg1YWMxYTU0ODgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtOTMyLDYg KzkzMiwzMSBAQCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAly ZXR1cm4gdHJ1ZTsKIH0KIAorI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKworLyoKKyAqIFdy YXBwZXIgZm9yIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgpIHdoaWNoIGNhbiBiZSB1 c2VkIGZvciBjYWxsZXJzCisgKiB0aGF0IGV4cGVjdCBubyBMUF9ERUFEIG9uIHRoZSBwYWdlLiBD dXJyZW50bHkgYXNzZXJ0LW9ubHksIGJ1dCB0aGVyZSBpcyBubworICogcmVhc29uIG5vdCB0byB1 c2UgaXQgb3V0c2lkZSBvZiBhc3NlcnRzLgorICovCitzdGF0aWMgYm9vbAoraGVhcF9wYWdlX2lz X2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKKwkJCQkJCSBUcmFuc2FjdGlv bklkIE9sZGVzdFhtaW4sCisJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKKwkJCQkJCSBUcmFuc2Fj dGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dn aW5nX29mZm51bSkKK3sKKworCXJldHVybiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUo cmVsLCBidWYsCisJCQkJCQkJCQkJICBPbGRlc3RYbWluLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwK KwkJCQkJCQkJCQkgIGFsbF9mcm96ZW4sCisJCQkJCQkJCQkJICB2aXNpYmlsaXR5X2N1dG9mZl94 aWQsCisJCQkJCQkJCQkJICBsb2dnaW5nX29mZm51bSk7Cit9CisjZW5kaWYKKworCiAKIC8qCiAg KiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdtZW50YXRpb24gYW5kIHBvdGVudGlhbGx5IGZyZWV6ZSB0 dXBsZXMgb24gdGhlCkBAIC05ODUsNiArMTAxMCw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJQnVmZmVyCQl2bWJ1ZmZlciA9IHBhcmFt cy0+dm1idWZmZXI7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlCbG9j a051bWJlciBibG9ja25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsKKwlUcmFuc2Fj dGlvbklkIHZtX2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlQcnVu ZVN0YXRlCXByc3RhdGU7CiAJYm9vbAkJZG9fZnJlZXplOwogCWJvb2wJCWRvX3BydW5lOwpAQCAt MTE0MiwyMyArMTE2OCw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXpl UGFyYW1zICpwYXJhbXMsCiAJcHJlc3VsdC0+bmZyb3plbiA9IHByc3RhdGUubmZyb3plbjsKIAlw cmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUubGl2ZV90dXBsZXM7CiAJcHJlc3VsdC0+cmVj ZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2VudGx5X2RlYWRfdHVwbGVzOwotCXByZXN1 bHQtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfdmlzaWJsZTsKLQlwcmVzdWx0LT5hbGxfZnJv emVuID0gcHJzdGF0ZS5hbGxfZnJvemVuOwogCXByZXN1bHQtPmhhc3R1cCA9IHByc3RhdGUuaGFz dHVwOwogCi0JLyoKLQkgKiBGb3IgY2FsbGVycyBwbGFubmluZyB0byB1cGRhdGUgdGhlIHZpc2li aWxpdHkgbWFwLCB0aGUgY29uZmxpY3QgaG9yaXpvbgotCSAqIGZvciB0aGF0IHJlY29yZCBtdXN0 IGJlIHRoZSBuZXdlc3QgeG1pbiBvbiB0aGUgcGFnZS4gIEhvd2V2ZXIsIGlmIHRoZQotCSAqIHBh Z2UgaXMgY29tcGxldGVseSBmcm96ZW4sIHRoZXJlIGNhbiBiZSBubyBjb25mbGljdCBhbmQgdGhl Ci0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBzaG91bGQgcmVtYWluIEludmFsaWRUcmFuc2FjdGlv bklkLiAgVGhpcyBpbmNsdWRlcwotCSAqIHRoZSBjYXNlIHRoYXQgd2UganVzdCBmcm96ZSBhbGwg dGhlIHR1cGxlczsgdGhlIHBydW5lLWZyZWV6ZSByZWNvcmQKLQkgKiBpbmNsdWRlZCB0aGUgY29u ZmxpY3QgWElEIGFscmVhZHkgc28gdGhlIGNhbGxlciBkb2Vzbid0IG5lZWQgaXQuCi0JICovCi0J aWYgKHByZXN1bHQtPmFsbF9mcm96ZW4pCi0JCXByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24g PSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQllbHNlCi0JCXByZXN1bHQtPnZtX2NvbmZsaWN0X2hv cml6b24gPSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKLQogCXByZXN1bHQtPmxwZGVh ZF9pdGVtcyA9IHByc3RhdGUubHBkZWFkX2l0ZW1zOwogCS8qIHRoZSBwcmVzdWx0LT5kZWFkb2Zm c2V0cyBhcnJheSB3YXMgYWxyZWFkeSBmaWxsZWQgaW4gKi8KIApAQCAtMTE3Niw2ICsxMTg3LDQ2 IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMs CiAJCX0KIAl9CiAKKwkvKgorCSAqIElmIHVwZGF0aW5nIHRoZSB2aXNpYmlsaXR5IG1hcCwgdGhl IGNvbmZsaWN0IGhvcml6b24gZm9yIHRoYXQgcmVjb3JkCisJICogbXVzdCBiZSB0aGUgbmV3ZXN0 IHhtaW4gb24gdGhlIHBhZ2UuICBIb3dldmVyLCBpZiB0aGUgcGFnZSBpcworCSAqIGNvbXBsZXRl bHkgZnJvemVuLCB0aGVyZSBjYW4gYmUgbm8gY29uZmxpY3QgYW5kIHRoZSB2bV9jb25mbGljdF9o b3Jpem9uCisJICogc2hvdWxkIHJlbWFpbiBJbnZhbGlkVHJhbnNhY3Rpb25JZC4gIFRoaXMgaW5j bHVkZXMgdGhlIGNhc2UgdGhhdCB3ZQorCSAqIGp1c3QgZnJvemUgYWxsIHRoZSB0dXBsZXM7IHRo ZSBwcnVuZS1mcmVlemUgcmVjb3JkIGluY2x1ZGVkIHRoZQorCSAqIGNvbmZsaWN0IFhJRCBhbHJl YWR5IHNvIHdlIGRvbid0IG5lZWQgdG8gYWdhaW4uCisJICovCisJaWYgKHByc3RhdGUuYWxsX2Zy b3plbikKKwkJdm1fY29uZmxpY3RfaG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCWVs c2UKKwkJdm1fY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlk OworCisJLyoKKwkgKiBEdXJpbmcgaXRzIHNlY29uZCBwYXNzIG92ZXIgdGhlIGhlYXAsIFZBQ1VV TSBjYWxscworCSAqIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgpIHRvIGRldGVybWlu ZSB3aGV0aGVyIGEgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuLiBUaGUg bG9naWMgaGVyZSBpcyBzaW1pbGFyLiBBZnRlciBjb21wbGV0aW5nCisJICogcHJ1bmluZyBhbmQg ZnJlZXppbmcsIHVzZSBhbiBhc3NlcnRpb24gdG8gdmVyaWZ5IHRoYXQgb3VyIHJlc3VsdHMKKwkg KiByZW1haW4gY29uc2lzdGVudCB3aXRoIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgp LgorCSAqLworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlpZiAocHJzdGF0ZS5hbGxfdmlz aWJsZSkKKwl7CisJCVRyYW5zYWN0aW9uSWQgZGVidWdfY3V0b2ZmOworCQlib29sCQlkZWJ1Z19h bGxfZnJvemVuOworCisJCUFzc2VydChwcmVzdWx0LT5scGRlYWRfaXRlbXMgPT0gMCk7CisKKwkJ QXNzZXJ0KGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShwYXJhbXMtPnJlbGF0aW9uLCBidWZmZXIs CisJCQkJCQkJCQkJcHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluLAorCQkJCQkJCQkJCSZkZWJ1 Z19hbGxfZnJvemVuLAorCQkJCQkJCQkJCSZkZWJ1Z19jdXRvZmYsIG9mZl9sb2MpKTsKKworCQlB c3NlcnQocHJzdGF0ZS5hbGxfZnJvemVuID09IGRlYnVnX2FsbF9mcm96ZW4pOworCisJCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVidWdfY3V0b2ZmKSB8fAorCQkJICAgZGVidWdfY3V0 b2ZmID09IHZtX2NvbmZsaWN0X2hvcml6b24pOworCX0KKyNlbmRpZgorCiAJLyogTm93IHVwZGF0 ZSB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIFBEX0FMTF9WSVNJQkxFIGhpbnQgKi8KIAlBc3NlcnQo IXByc3RhdGUuYWxsX3Zpc2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApKTsKIApA QCAtMTIyMiwxMiArMTI3MywxMSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZy ZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETyB3 YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMKIAkJICogd2VyZSBmcm96ZW4uCiAJCSAq LwotCQlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3plbiB8fAotCQkJICAgIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKHByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24pKTsKKwkJQXNzZXJ0KCFwcnN0YXRl LmFsbF9mcm96ZW4gfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHZtX2NvbmZsaWN0X2hvcml6b24p KTsKIAogCQl2aXNpYmlsaXR5bWFwX3NldChwYXJhbXMtPnJlbGF0aW9uLCBibG9ja25vLCBidWZm ZXIsCiAJCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkJICB2bWJ1ZmZlciwgcHJlc3Vs dC0+dm1fY29uZmxpY3RfaG9yaXpvbiwKKwkJCQkJCSAgdm1idWZmZXIsIHZtX2NvbmZsaWN0X2hv cml6b24sCiAJCQkJCQkgIG5ld192bWJpdHMpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jCmluZGV4IGZlODE2Mjk5ZjRiLi5iN2Q4MzQ5NjlkNiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDU5LDIwICs0NTksNiBAQCBzdGF0aWMgdm9pZCBkZWFk X2l0ZW1zX2FkZChMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBPZmZzZXRO dW1iZXIgKgogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19yZXNldChMVlJlbFN0YXRlICp2YWNyZWwp Owogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCk7CiAK LSNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi1zdGF0aWMgYm9vbCBoZWFwX3BhZ2VfaXNfYWxs X3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCQkJIFRyYW5zYWN0aW9u SWQgT2xkZXN0WG1pbiwKLQkJCQkJCQkJCSBib29sICphbGxfZnJvemVuLAotCQkJCQkJCQkJIFRy YW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCQkJCSBPZmZzZXROdW1i ZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKLSNlbmRpZgotc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dvdWxk X2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQkJCQkgICBU cmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCi0JCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFk b2Zmc2V0cywKLQkJCQkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAotCQkJCQkJCQkJCSAgIGJv b2wgKmFsbF9mcm96ZW4sCi0JCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9j dXRvZmZfeGlkLAotCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pOwog c3RhdGljIHZvaWQgdXBkYXRlX3JlbHN0YXRzX2FsbF9pbmRleGVzKExWUmVsU3RhdGUgKnZhY3Jl bCk7CiBzdGF0aWMgdm9pZCB2YWN1dW1fZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0YXRp YyB2b2lkIHVwZGF0ZV92YWN1dW1fZXJyb3JfaW5mbyhMVlJlbFN0YXRlICp2YWNyZWwsCkBAIC0y MDM1LDMyICsyMDIxLDYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkJ dmFjcmVsLT5uZXdfZnJvemVuX3R1cGxlX3BhZ2VzKys7CiAJfQogCi0JLyoKLQkgKiBWQUNVVU0g d2lsbCBjYWxsIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpIGR1cmluZyB0aGUgc2Vjb25kIHBh c3Mgb3ZlcgotCSAqIHRoZSBoZWFwIHRvIGRldGVybWluZSBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zy b3plbiBmb3IgdGhlIHBhZ2UgLS0gdGhpcwotCSAqIGlzIGEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBv ZiB0aGUgbG9naWMgZnJvbSB0aGlzIGZ1bmN0aW9uLiAgTm93IHRoYXQKLQkgKiB3ZSd2ZSBmaW5p c2hlZCBwcnVuaW5nIGFuZCBmcmVlemluZywgbWFrZSBzdXJlIHRoYXQgd2UncmUgaW4gdG90YWwK LQkgKiBhZ3JlZW1lbnQgd2l0aCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKSB1c2luZyBhbiBh c3NlcnRpb24uCi0JICovCi0jaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotCWlmIChwcmVzdWx0 LmFsbF92aXNpYmxlKQotCXsKLQkJVHJhbnNhY3Rpb25JZCBkZWJ1Z19jdXRvZmY7Ci0JCWJvb2wJ CWRlYnVnX2FsbF9mcm96ZW47Ci0KLQkJQXNzZXJ0KHByZXN1bHQubHBkZWFkX2l0ZW1zID09IDAp OwotCi0JCUFzc2VydChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZiwK LQkJCQkJCQkJCQl2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwgJmRlYnVnX2FsbF9mcm96ZW4s Ci0JCQkJCQkJCQkJJmRlYnVnX2N1dG9mZiwgJnZhY3JlbC0+b2ZmbnVtKSk7Ci0KLQkJQXNzZXJ0 KHByZXN1bHQuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsKLQotCQlBc3NlcnQoIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKLQkJCSAgIGRlYnVnX2N1dG9mZiA9 PSBwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pOwotCX0KLSNlbmRpZgotCiAJLyoKIAkgKiBO b3cgc2F2ZSBkZXRhaWxzIG9mIHRoZSBMUF9ERUFEIGl0ZW1zIGZyb20gdGhlIHBhZ2UgaW4gdmFj cmVsCiAJICovCkBAIC0zNTIyLDI5ICszNDgyLDYgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVs U3RhdGUgKnZhY3JlbCkKIAl2YWNyZWwtPnB2cyA9IE5VTEw7CiB9CiAKLSNpZmRlZiBVU0VfQVNT RVJUX0NIRUNLSU5HCi0KLS8qCi0gKiBXcmFwcGVyIGZvciBoZWFwX3BhZ2Vfd291bGRfYmVfYWxs X3Zpc2libGUoKSB3aGljaCBjYW4gYmUgdXNlZCBmb3IgY2FsbGVycwotICogdGhhdCBleHBlY3Qg bm8gTFBfREVBRCBvbiB0aGUgcGFnZS4gQ3VycmVudGx5IGFzc2VydC1vbmx5LCBidXQgdGhlcmUg aXMgbm8KLSAqIHJlYXNvbiBub3QgdG8gdXNlIGl0IG91dHNpZGUgb2YgYXNzZXJ0cy4KLSAqLwot c3RhdGljIGJvb2wKLWhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZl ciBidWYsCi0JCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAotCQkJCQkJIGJvb2wgKmFs bF9mcm96ZW4sCi0JCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAot CQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pCi17Ci0KLQlyZXR1cm4gaGVhcF9w YWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKHJlbCwgYnVmLAotCQkJCQkJCQkJCSAgT2xkZXN0WG1p biwKLQkJCQkJCQkJCQkgIE5VTEwsIDAsCi0JCQkJCQkJCQkJICBhbGxfZnJvemVuLAotCQkJCQkJ CQkJCSAgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJCQkJCSAgbG9nZ2luZ19vZmZudW0p OwotfQotI2VuZGlmCiAKIC8qCiAgKiBDaGVjayB3aGV0aGVyIHRoZSBoZWFwIHBhZ2UgaW4gYnVm IGlzIGFsbC12aXNpYmxlIGV4Y2VwdCBmb3IgdGhlIGRlYWQKQEAgLTM1NjgsMTUgKzM1MDUsMTIg QEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKICAq ICAtICpsb2dnaW5nX29mZm51bTogT2Zmc2V0TnVtYmVyIG9mIGN1cnJlbnQgdHVwbGUgYmVpbmcg cHJvY2Vzc2VkOwogICogICAgIHVzZWQgYnkgdmFjdXVtJ3MgZXJyb3IgY2FsbGJhY2sgc3lzdGVt LgogICoKLSAqIENhbGxlcnMgbG9va2luZyB0byB2ZXJpZnkgdGhhdCB0aGUgcGFnZSBpcyBhbHJl YWR5IGFsbC12aXNpYmxlIGNhbiBjYWxsCi0gKiBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKS4K LSAqCiAgKiBUaGlzIGxvZ2ljIGlzIGNsb3NlbHkgcmVsYXRlZCB0byBoZWFwX3BydW5lX3JlY29y ZF91bmNoYW5nZWRfbHBfbm9ybWFsKCkuCiAgKiBJZiB5b3UgbW9kaWZ5IHRoaXMgZnVuY3Rpb24s IGVuc3VyZSBjb25zaXN0ZW5jeSB3aXRoIHRoYXQgY29kZS4gQW4KICAqIGFzc2VydGlvbiBjcm9z cy1jaGVja3MgdGhhdCBib3RoIHJlbWFpbiBpbiBhZ3JlZW1lbnQuIERvIG5vdCBpbnRyb2R1Y2Ug bmV3CiAgKiBzaWRlLWVmZmVjdHMuCiAgKi8KLXN0YXRpYyBib29sCitib29sCiBoZWFwX3BhZ2Vf d291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCSAg IFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKIAkJCQkJCQkgICBPZmZzZXROdW1iZXIgKmRlYWRv ZmZzZXRzLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDJjMDdlMTk3ZGM4Li5lMGRhMWY3Y2RjYyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaApAQCAtMjU3LDggKzI1Nyw3IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJl ZXplUGFyYW1zCiAJICogSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVyBpbmRpY2F0ZXMg dGhhdCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQKIAkgKiBMUF9VTlVTRUQgZHVyaW5nIHBydW5pbmcu CiAJICoKLQkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIGluZGljYXRlcyB0aGF0IHdlIHdpbGwg YWxzbyBmcmVlemUgdHVwbGVzLCBhbmQKLQkgKiB3aWxsIHJldHVybiAnYWxsX3Zpc2libGUnLCAn YWxsX2Zyb3plbicgZmxhZ3MgdG8gdGhlIGNhbGxlci4KKwkgKiBIRUFQX1BBR0VfUFJVTkVfRlJF RVpFIGluZGljYXRlcyB0aGF0IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzLgogCSAqCiAJICog SEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIHNldCB0aGUg cGFnZSdzIHN0YXR1cwogCSAqIGluIHRoZSBWTS4KQEAgLTI5NCwyMSArMjkzLDYgQEAgdHlwZWRl ZiBzdHJ1Y3QgUHJ1bmVGcmVlemVSZXN1bHQKIAlpbnQJCQlsaXZlX3R1cGxlczsKIAlpbnQJCQly ZWNlbnRseV9kZWFkX3R1cGxlczsKIAotCS8qCi0JICogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96 ZW4gaW5kaWNhdGUgaWYgdGhlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuCi0JICogYml0cyBp biB0aGUgdmlzaWJpbGl0eSBtYXAgY2FuIGJlIHNldCBmb3IgdGhpcyBwYWdlLCBhZnRlciBwcnVu aW5nLgotCSAqCi0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBpcyB0aGUgbmV3ZXN0IHhtaW4gb2Yg bGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuICBUaGUKLQkgKiBjYWxsZXIgY2FuIHVzZSBpdCBhcyB0 aGUgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHNldHRpbmcgdGhlIFZNIGJpdHMuICBJdAotCSAqIGlz IG9ubHkgdmFsaWQgaWYgd2UgZnJvemUgc29tZSB0dXBsZXMgKG5mcm96ZW4gPiAwKSwgYW5kIGFs bF9mcm96ZW4gaXMKLQkgKiB0cnVlLgotCSAqCi0JICogVGhlc2UgYXJlIG9ubHkgc2V0IGlmIHRo ZSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuCi0JICovCi0JYm9vbAkJYWxs X3Zpc2libGU7Ci0JYm9vbAkJYWxsX2Zyb3plbjsKLQlUcmFuc2FjdGlvbklkIHZtX2NvbmZsaWN0 X2hvcml6b247Ci0KIAkvKgogCSAqIG9sZF92bWJpdHMgYXJlIHRoZSBzdGF0ZSBvZiB0aGUgYWxs LXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYml0cyBpbiB0aGUKIAkgKiB2aXNpYmlsaXR5IG1hcCBi ZWZvcmUgdXBkYXRpbmcgaXQgZHVyaW5nIHBoYXNlIEkgb2YgdmFjdXVtaW5nLgpAQCAtNDUzLDYg KzQzNywxMyBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9u IHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogLyogaW4gaGVhcC92YWN1dW1sYXp5LmMgKi8KIGV4 dGVybiB2b2lkIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsCiAJCQkJCQkJY29uc3QgVmFj dXVtUGFyYW1zIHBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KTsKK2V4dGVy biBib29sIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZl ciBidWYsCisJCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJCQkJ CSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCisJCQkJCQkJCQkJICAgaW50IG5kZWFkb2Zm c2V0cywKKwkJCQkJCQkJCQkgICBib29sICphbGxfZnJvemVuLAorCQkJCQkJCQkJCSAgIFRyYW5z YWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCQkgICBPZmZzZXROdW1i ZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKIAogLyogaW4gaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jICov CiBleHRlcm4gYm9vbCBIZWFwVHVwbGVTYXRpc2ZpZXNWaXNpYmlsaXR5KEhlYXBUdXBsZSBodHVw LCBTbmFwc2hvdCBzbmFwc2hvdCwKLS0gCjIuNDMuMAoK --00000000000050ca310647bb8e6c Content-Type: text/x-patch; charset="US-ASCII"; name="v33-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Disposition: attachment; filename="v33-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk2v28ub5 RnJvbSBjZGY1Nzc2ZmFkZWFlMzQzMGM2OTI5OTliMzdmOGE3ZWM5NDRiZGExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTY6MTY6MjIgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMyAwNi8xNl0gRWxpbWluYXRlIFhMT0dfSEVBUDJfVklTSUJMRSBmcm9tIHZhY3V1bSBw aGFzZSBJCiBwcnVuZS9mcmVlemUKClZhY3V1bSBubyBsb25nZXIgZW1pdHMgYSBzZXBhcmF0ZSBX QUwgcmVjb3JkIGZvciBlYWNoIHBhZ2Ugc2V0CmFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4gZHVy aW5nIHBoYXNlIEkuIEluc3RlYWQsIHZpc2liaWxpdHkgbWFwCnVwZGF0ZXMgYXJlIG5vdyBpbmNs dWRlZCBpbiB0aGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQgdGhhdAppcyBh bHJlYWR5IGVtaXR0ZWQgZm9yIHBydW5pbmcgYW5kIGZyZWV6aW5nLgoKUHJldmlvdXNseSwgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBkZXRlcm1pbmVkIHdoZXRoZXIgYSBwYWdlIHdhcwph bGwtdmlzaWJsZSwgYnV0IHRoZSBjb3JyZXNwb25kaW5nIFZNIGJpdHMgd2VyZSBvbmx5IHNldCBs YXRlciBpbgpsYXp5X3NjYW5fcHJ1bmUoKS4gTm93IHRoZSBWTSBpcyB1cGRhdGVkIGltbWVkaWF0 ZWx5IGluCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCksIGF0IHRoZSBzYW1lIHRpbWUgYXMg dGhlIGhlYXAKbW9kaWZpY2F0aW9ucy4KClRoaXMgY2hhbmdlIGFwcGxpZXMgb25seSB0byB2YWN1 dW0gcGhhc2UgSSwgbm90IHRvIHBydW5pbmcgcGVyZm9ybWVkCmR1cmluZyBub3JtYWwgcGFnZSBh Y2Nlc3MuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmll d2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTog S2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8g TGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1WN1NPTHhk SzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgfCAyNzUgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQs IDE1NyBpbnNlcnRpb25zKCspLCAxMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYwppbmRleCA4NWFjMWE1NDg4Mi4uYjNlYTQyZjFiZTEgMTAwNjQ0Ci0tLSBhL3Ny 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 IGFueSBjb3JydXB0aW9uIGRldGVjdGVkIG9uIGEgaGVhcCBwYWdlIGFuZCBpdHMKICAqIGNvcnJl c3BvbmRpbmcgdmlzaWJpbGl0eSBtYXAgcGFnZSBhZnRlciBwcnVuaW5nIGJ1dCBiZWZvcmUgc2V0 dGluZyB0aGUKQEAgLTEwMTAsNyArMTA3Nyw2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJQnVmZmVyCQl2bWJ1ZmZlciA9IHBhcmFtcy0+ dm1idWZmZXI7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlCbG9ja051 bWJlciBibG9ja25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsKLQlUcmFuc2FjdGlv bklkIHZtX2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlQcnVuZVN0 YXRlCXByc3RhdGU7CiAJYm9vbAkJZG9fZnJlZXplOwogCWJvb2wJCWRvX3BydW5lOwpAQCAtMTAx OCw2ICsxMDg0LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJh bXMgKnBhcmFtcywKIAlib29sCQlkb19zZXRfdm07CiAJYm9vbAkJZGlkX3R1cGxlX2hpbnRfZnBp OwogCWludDY0CQlmcGlfYmVmb3JlID0gcGdXYWxVc2FnZS53YWxfZnBpOworCVRyYW5zYWN0aW9u SWQgY29uZmxpY3RfeGlkOwogCXVpbnQ4CQluZXdfdm1iaXRzOwogCXVpbnQ4CQlvbGRfdm1iaXRz OwogCkBAIC0xMDgxLDYgKzExNDgsMzcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1 bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHByc3RhdGUu YWxsX2Zyb3plbiA9IGZhbHNlOwogCiAJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgcHJz dGF0ZS5hbGxfdmlzaWJsZSk7CisJQXNzZXJ0KCFwcnN0YXRlLmFsbF92aXNpYmxlIHx8IChwcnN0 YXRlLmxwZGVhZF9pdGVtcyA9PSAwKSk7CisKKwkvKgorCSAqIERlY2lkZSB3aGV0aGVyIHRvIHNl dCB0aGUgVk0gYml0cyBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSBhbmQKKwkgKiB0 aGUgYWxsX3Zpc2libGUvYWxsX2Zyb3plbiBmbGFncy4KKwkgKi8KKwlkb19zZXRfdm0gPSBoZWFw X3BhZ2Vfd2lsbF9zZXRfdm0oJnByc3RhdGUsCisJCQkJCQkJCQkgIHBhcmFtcy0+cmVsYXRpb24s CisJCQkJCQkJCQkgIGJsb2Nrbm8sCisJCQkJCQkJCQkgIGJ1ZmZlciwKKwkJCQkJCQkJCSAgcGFn ZSwKKwkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkgIHByc3RhdGUubHBkZWFkX2l0ZW1z LAorCQkJCQkJCQkJICAmb2xkX3ZtYml0cywKKwkJCQkJCQkJCSAgJm5ld192bWJpdHMpOworCisJ LyoKKwkgKiBuZXdfdm1iaXRzIHNob3VsZCBiZSAwIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBu b3QgdGhlIHBhZ2UgaXMKKwkgKiBhbGwtdmlzaWJsZSBpZiB3ZSBkbyBub3QgaW50ZW5kIHRvIHNl dCB0aGUgVk0uCisJICovCisJQXNzZXJ0KGRvX3NldF92bSB8fCBuZXdfdm1iaXRzID09IDApOwor CisJY29uZmxpY3RfeGlkID0gZ2V0X2NvbmZsaWN0X3hpZChkb19wcnVuZSwgZG9fZnJlZXplLCBk b19zZXRfdm0sCisJCQkJCQkJCQlvbGRfdm1iaXRzLCBuZXdfdm1iaXRzLAorCQkJCQkJCQkJcHJz dGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQsCisJCQkJCQkJCQlwcnN0YXRlLmZyel9jb25mbGljdF9o b3Jpem9uLAorCQkJCQkJCQkJcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQpOworCisJLyog TG9jayB2bWJ1ZmZlciBiZWZvcmUgZW50ZXJpbmcgYSBjcml0aWNhbCBzZWN0aW9uICovCisJaWYg KGRvX3NldF92bSkKKwkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZF KTsKIAogCS8qIEFueSBlcnJvciB3aGlsZSBhcHBseWluZyB0aGUgY2hhbmdlcyBpcyBjcml0aWNh bCAqLwogCVNUQVJUX0NSSVRfU0VDVElPTigpOwpAQCAtMTEwMiwxNCArMTIwMCwxNyBAQCBoZWFw X3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCiAJCS8q CiAJCSAqIElmIHRoYXQncyBhbGwgd2UgaGFkIHRvIGRvIHRvIHRoZSBwYWdlLCB0aGlzIGlzIGEg bm9uLVdBTC1sb2dnZWQKLQkJICogaGludC4gIElmIHdlIGFyZSBnb2luZyB0byBmcmVlemUgb3Ig cHJ1bmUgdGhlIHBhZ2UsIHdlIHdpbGwgbWFyawotCQkgKiB0aGUgYnVmZmVyIGRpcnR5IGJlbG93 LgorCQkgKiBoaW50LiAgSWYgd2UgYXJlIGdvaW5nIHRvIGZyZWV6ZSBvciBwcnVuZSB0aGUgcGFn ZSBvciBzZXQKKwkJICogUERfQUxMX1ZJU0lCTEUsIHdlIHdpbGwgbWFyayB0aGUgYnVmZmVyIGRp cnR5IGJlbG93LgorCQkgKgorCQkgKiBTZXR0aW5nIFBEX0FMTF9WSVNJQkxFIGlzIGZ1bGx5IFdB TC1sb2dnZWQgYmVjYXVzZSBpdCBpcyBmb3JiaWRkZW4KKwkJICogZm9yIHRoZSBWTSB0byBiZSBz ZXQgYW5kIFBEX0FMTF9WSVNJQkxFIHRvIGJlIGNsZWFyLgogCQkgKi8KLQkJaWYgKCFkb19mcmVl emUgJiYgIWRvX3BydW5lKQorCQlpZiAoIWRvX2ZyZWV6ZSAmJiAhZG9fcHJ1bmUgJiYgIWRvX3Nl dF92bSkKIAkJCU1hcmtCdWZmZXJEaXJ0eUhpbnQoYnVmZmVyLCB0cnVlKTsKIAl9CiAKLQlpZiAo ZG9fcHJ1bmUgfHwgZG9fZnJlZXplKQorCWlmIChkb19wcnVuZSB8fCBkb19mcmVlemUgfHwgZG9f c2V0X3ZtKQogCXsKIAkJLyogQXBwbHkgdGhlIHBsYW5uZWQgaXRlbSBjaGFuZ2VzIGFuZCByZXBh aXIgcGFnZSBmcmFnbWVudGF0aW9uLiAqLwogCQlpZiAoZG9fcHJ1bmUpCkBAIC0xMTIzLDYgKzEy MjQsMjYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBh cmFtcywKIAkJaWYgKGRvX2ZyZWV6ZSkKIAkJCWhlYXBfZnJlZXplX3ByZXBhcmVkX3R1cGxlcyhi dWZmZXIsIHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4pOwogCisJCS8qIFNldCB0aGUg dmlzaWJpbGl0eSBtYXAgYW5kIHBhZ2UgdmlzaWJpbGl0eSBoaW50ICovCisJCWlmIChkb19zZXRf dm0pCisJCXsKKwkJCS8qCisJCQkgKiBXaGlsZSBpdCBpcyB2YWxpZCBmb3IgUERfQUxMX1ZJU0lC TEUgdG8gYmUgc2V0IHdoZW4gdGhlCisJCQkgKiBjb3JyZXNwb25kaW5nIFZNIGJpdCBpcyBjbGVh ciwgd2Ugc3Ryb25nbHkgcHJlZmVyIHRvIGtlZXAgdGhlbQorCQkJICogaW4gc3luYy4KKwkJCSAq CisJCQkgKiBUaGUgaGVhcCBidWZmZXIgbXVzdCBiZSBtYXJrZWQgZGlydHkgYmVmb3JlIGFkZGlu ZyBpdCB0byB0aGUKKwkJCSAqIFdBTCBjaGFpbiB3aGVuIHNldHRpbmcgdGhlIFZNLiBXZSBkb24n dCB3b3JyeSBhYm91dAorCQkJICogdW5uZWNlc3NhcmlseSBkaXJ0eWluZyB0aGUgaGVhcCBidWZm ZXIgaWYgUERfQUxMX1ZJU0lCTEUgaXMKKwkJCSAqIGFscmVhZHkgc2V0LCB0aG91Z2guIEl0IGlz IGV4dHJlbWVseSByYXJlIHRvIGhhdmUgYSBjbGVhbiBoZWFwCisJCQkgKiBidWZmZXIgd2l0aCBQ RF9BTExfVklTSUJMRSBhbHJlYWR5IHNldCBhbmQgdGhlIFZNIGJpdHMgY2xlYXIsCisJCQkgKiBz byB0aGVyZSBpcyBubyBwb2ludCBpbiBvcHRpbWl6aW5nIGl0LgorCQkJICovCisJCQlQYWdlU2V0 QWxsVmlzaWJsZShwYWdlKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibG9ja25vLCB2 bWJ1ZmZlciwgbmV3X3ZtYml0cywKKwkJCQkJCQkJCSBwYXJhbXMtPnJlbGF0aW9uLT5yZF9sb2Nh dG9yKTsKKwkJfQorCiAJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwogCiAJCS8qCkBAIC0xMTMw LDI5ICsxMjUxLDEyIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFy YW1zICpwYXJhbXMsCiAJCSAqLwogCQlpZiAoUmVsYXRpb25OZWVkc1dBTChwYXJhbXMtPnJlbGF0 aW9uKSkKIAkJewotCQkJLyoKLQkJCSAqIFRoZSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBmb3Ig dGhlIHdob2xlIHJlY29yZCBzaG91bGQgYmUgdGhlCi0JCQkgKiBtb3N0IGNvbnNlcnZhdGl2ZSBv ZiBhbGwgdGhlIGhvcml6b25zIGNhbGN1bGF0ZWQgZm9yIGFueSBvZiB0aGUKLQkJCSAqIHBvc3Np YmxlIG1vZGlmaWNhdGlvbnMuICBJZiB0aGlzIHJlY29yZCB3aWxsIHBydW5lIHR1cGxlcywgYW55 Ci0JCQkgKiB0cmFuc2FjdGlvbnMgb24gdGhlIHN0YW5kYnkgb2xkZXIgdGhhbiB0aGUgeW91bmdl c3QgeG1heCBvZiB0aGUKLQkJCSAqIG1vc3QgcmVjZW50bHkgcmVtb3ZlZCB0dXBsZSB0aGlzIHJl Y29yZCB3aWxsIHBydW5lIHdpbGwKLQkJCSAqIGNvbmZsaWN0LiAgSWYgdGhpcyByZWNvcmQgd2ls bCBmcmVlemUgdHVwbGVzLCBhbnkgdHJhbnNhY3Rpb25zCi0JCQkgKiBvbiB0aGUgc3RhbmRieSB3 aXRoIHhpZHMgb2xkZXIgdGhhbiB0aGUgeW91bmdlc3QgdHVwbGUgdGhpcwotCQkJICogcmVjb3Jk IHdpbGwgZnJlZXplIHdpbGwgY29uZmxpY3QuCi0JCQkgKi8KLQkJCVRyYW5zYWN0aW9uSWQgY29u ZmxpY3RfeGlkOwotCi0JCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3MocHJzdGF0ZS5mcnpfY29u ZmxpY3RfaG9yaXpvbiwKLQkJCQkJCQkJCSBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCkpCi0J CQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5mcnpfY29uZmxpY3RfaG9yaXpvbjsKLQkJCWVsc2UK LQkJCQljb25mbGljdF94aWQgPSBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZDsKLQogCQkJbG9n X2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShwYXJhbXMtPnJlbGF0aW9uLCBidWZmZXIsCi0JCQkJCQkJ CQkgIEludmFsaWRCdWZmZXIsCS8qIHZtYnVmZmVyICovCi0JCQkJCQkJCQkgIDAsCS8qIHZtZmxh Z3MgKi8KKwkJCQkJCQkJCSAgZG9fc2V0X3ZtID8gdm1idWZmZXIgOiBJbnZhbGlkQnVmZmVyLAor CQkJCQkJCQkJICBkb19zZXRfdm0gPyBuZXdfdm1iaXRzIDogMCwKIAkJCQkJCQkJCSAgY29uZmxp Y3RfeGlkLAotCQkJCQkJCQkJICB0cnVlLCBwYXJhbXMtPnJlYXNvbiwKKwkJCQkJCQkJCSAgdHJ1 ZSwgLyogY2xlYW51cCBsb2NrICovCisJCQkJCQkJCQkgIHBhcmFtcy0+cmVhc29uLAogCQkJCQkJ CQkJICBwcnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJvemVuLAogCQkJCQkJCQkJICBwcnN0YXRl LnJlZGlyZWN0ZWQsIHByc3RhdGUubnJlZGlyZWN0ZWQsCiAJCQkJCQkJCQkgIHByc3RhdGUubm93 ZGVhZCwgcHJzdGF0ZS5uZGVhZCwKQEAgLTExNjIsNDMgKzEyNjYsOCBAQCBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCiAJRU5EX0NSSVRfU0VD VElPTigpOwogCi0JLyogQ29weSBpbmZvcm1hdGlvbiBiYWNrIGZvciBjYWxsZXIgKi8KLQlwcmVz dWx0LT5uZGVsZXRlZCA9IHByc3RhdGUubmRlbGV0ZWQ7Ci0JcHJlc3VsdC0+bm5ld2xwZGVhZCA9 IHByc3RhdGUubmRlYWQ7Ci0JcHJlc3VsdC0+bmZyb3plbiA9IHByc3RhdGUubmZyb3plbjsKLQlw cmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUubGl2ZV90dXBsZXM7Ci0JcHJlc3VsdC0+cmVj ZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2VudGx5X2RlYWRfdHVwbGVzOwotCXByZXN1 bHQtPmhhc3R1cCA9IHByc3RhdGUuaGFzdHVwOwotCi0JcHJlc3VsdC0+bHBkZWFkX2l0ZW1zID0g cHJzdGF0ZS5scGRlYWRfaXRlbXM7Ci0JLyogdGhlIHByZXN1bHQtPmRlYWRvZmZzZXRzIGFycmF5 IHdhcyBhbHJlYWR5IGZpbGxlZCBpbiAqLwotCi0JaWYgKHByc3RhdGUuYXR0ZW1wdF9mcmVlemUp Ci0JewotCQlpZiAocHJlc3VsdC0+bmZyb3plbiA+IDApCi0JCXsKLQkJCSpuZXdfcmVsZnJvemVu X3hpZCA9IHByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlUmVsZnJvemVuWGlkOwotCQkJKm5ld19y ZWxtaW5fbXhpZCA9IHByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlUmVsbWluTXhpZDsKLQkJfQot CQllbHNlCi0JCXsKLQkJCSpuZXdfcmVsZnJvemVuX3hpZCA9IHByc3RhdGUucGFnZWZyei5Ob0Zy ZWV6ZVBhZ2VSZWxmcm96ZW5YaWQ7Ci0JCQkqbmV3X3JlbG1pbl9teGlkID0gcHJzdGF0ZS5wYWdl ZnJ6Lk5vRnJlZXplUGFnZVJlbG1pbk14aWQ7Ci0JCX0KLQl9Ci0KLQkvKgotCSAqIElmIHVwZGF0 aW5nIHRoZSB2aXNpYmlsaXR5IG1hcCwgdGhlIGNvbmZsaWN0IGhvcml6b24gZm9yIHRoYXQgcmVj b3JkCi0JICogbXVzdCBiZSB0aGUgbmV3ZXN0IHhtaW4gb24gdGhlIHBhZ2UuICBIb3dldmVyLCBp ZiB0aGUgcGFnZSBpcwotCSAqIGNvbXBsZXRlbHkgZnJvemVuLCB0aGVyZSBjYW4gYmUgbm8gY29u ZmxpY3QgYW5kIHRoZSB2bV9jb25mbGljdF9ob3Jpem9uCi0JICogc2hvdWxkIHJlbWFpbiBJbnZh bGlkVHJhbnNhY3Rpb25JZC4gIFRoaXMgaW5jbHVkZXMgdGhlIGNhc2UgdGhhdCB3ZQotCSAqIGp1 c3QgZnJvemUgYWxsIHRoZSB0dXBsZXM7IHRoZSBwcnVuZS1mcmVlemUgcmVjb3JkIGluY2x1ZGVk IHRoZQotCSAqIGNvbmZsaWN0IFhJRCBhbHJlYWR5IHNvIHdlIGRvbid0IG5lZWQgdG8gYWdhaW4u Ci0JICovCi0JaWYgKHByc3RhdGUuYWxsX2Zyb3plbikKLQkJdm1fY29uZmxpY3RfaG9yaXpvbiA9 IEludmFsaWRUcmFuc2FjdGlvbklkOwotCWVsc2UKLQkJdm1fY29uZmxpY3RfaG9yaXpvbiA9IHBy c3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkOworCWlmIChkb19zZXRfdm0pCisJCUxvY2tCdWZm ZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAKIAkvKgogCSAqIER1cmluZyBpdHMg c2Vjb25kIHBhc3Mgb3ZlciB0aGUgaGVhcCwgVkFDVVVNIGNhbGxzCkBAIC0xMjEzLDcgKzEyODIs OCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1z LAogCQlUcmFuc2FjdGlvbklkIGRlYnVnX2N1dG9mZjsKIAkJYm9vbAkJZGVidWdfYWxsX2Zyb3pl bjsKIAotCQlBc3NlcnQocHJlc3VsdC0+bHBkZWFkX2l0ZW1zID09IDApOworCQlBc3NlcnQocHJz dGF0ZS5scGRlYWRfaXRlbXMgPT0gMCk7CisJCUFzc2VydChwcnN0YXRlLmN1dG9mZnMpOwogCiAJ CUFzc2VydChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUocGFyYW1zLT5yZWxhdGlvbiwgYnVmZmVy LAogCQkJCQkJCQkJCXByc3RhdGUuY3V0b2Zmcy0+T2xkZXN0WG1pbiwKQEAgLTEyMjMsNjcgKzEy OTMsMzYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBh cmFtcywKIAkJQXNzZXJ0KHByc3RhdGUuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsK IAogCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKLQkJCSAg IGRlYnVnX2N1dG9mZiA9PSB2bV9jb25mbGljdF9ob3Jpem9uKTsKKwkJCSAgIGRlYnVnX2N1dG9m ZiA9PSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCk7CiAJfQogI2VuZGlmCiAKLQkvKiBO b3cgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCBhbmQgUERfQUxMX1ZJU0lCTEUgaGludCAqLwot CUFzc2VydCghcHJzdGF0ZS5hbGxfdmlzaWJsZSB8fCAocHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0g MCkpOwotCi0JZG9fc2V0X3ZtID0gaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKCZwcnN0YXRlLAotCQkJ CQkJCQkJICBwYXJhbXMtPnJlbGF0aW9uLAotCQkJCQkJCQkJICBibG9ja25vLAotCQkJCQkJCQkJ ICBidWZmZXIsCi0JCQkJCQkJCQkgIHBhZ2UsCi0JCQkJCQkJCQkgIHZtYnVmZmVyLAotCQkJCQkJ CQkJICBwcnN0YXRlLmxwZGVhZF9pdGVtcywKLQkJCQkJCQkJCSAgJm9sZF92bWJpdHMsCi0JCQkJ CQkJCQkgICZuZXdfdm1iaXRzKTsKKwkvKiBDb3B5IGluZm9ybWF0aW9uIGJhY2sgZm9yIGNhbGxl ciAqLworCXByZXN1bHQtPm5kZWxldGVkID0gcHJzdGF0ZS5uZGVsZXRlZDsKKwlwcmVzdWx0LT5u bmV3bHBkZWFkID0gcHJzdGF0ZS5uZGVhZDsKKwlwcmVzdWx0LT5uZnJvemVuID0gcHJzdGF0ZS5u ZnJvemVuOworCXByZXN1bHQtPmxpdmVfdHVwbGVzID0gcHJzdGF0ZS5saXZlX3R1cGxlczsKKwlw cmVzdWx0LT5yZWNlbnRseV9kZWFkX3R1cGxlcyA9IHByc3RhdGUucmVjZW50bHlfZGVhZF90dXBs ZXM7CisJcHJlc3VsdC0+aGFzdHVwID0gcHJzdGF0ZS5oYXN0dXA7CisJcHJlc3VsdC0+bmV3X3Zt Yml0cyA9IG5ld192bWJpdHM7CisJcHJlc3VsdC0+b2xkX3ZtYml0cyA9IG9sZF92bWJpdHM7CiAK LQkvKgotCSAqIG5ld192bWJpdHMgc2hvdWxkIGJlIDAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9y IG5vdCB0aGUgcGFnZSBpcwotCSAqIGFsbC12aXNpYmxlIGlmIHdlIGRvIG5vdCBpbnRlbmQgdG8g c2V0IHRoZSBWTS4KLQkgKi8KLQlBc3NlcnQoZG9fc2V0X3ZtIHx8IG5ld192bWJpdHMgPT0gMCk7 CisJcHJlc3VsdC0+bHBkZWFkX2l0ZW1zID0gcHJzdGF0ZS5scGRlYWRfaXRlbXM7CisJLyogdGhl IHByZXN1bHQtPmRlYWRvZmZzZXRzIGFycmF5IHdhcyBhbHJlYWR5IGZpbGxlZCBpbiAqLwogCi0J LyogU2V0IHRoZSB2aXNpYmlsaXR5IG1hcCBhbmQgcGFnZSB2aXNpYmlsaXR5IGhpbnQsIGlmIHJl bGV2YW50ICovCi0JaWYgKGRvX3NldF92bSkKKwlpZiAocHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkK IAl7Ci0JCUFzc2VydChwcnN0YXRlLmFsbF92aXNpYmxlKTsKLQotCQkvKgotCQkgKiBJdCBzaG91 bGQgbmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlzaWJpbGl0eSBtYXAgcGFnZSBpcyBzZXQK LQkJICogd2hpbGUgdGhlIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLCBidXQgdGhlIHJldmVyc2Ug aXMgYWxsb3dlZCAoaWYKLQkJICogY2hlY2tzdW1zIGFyZSBub3QgZW5hYmxlZCkuIFJlZ2FyZGxl c3MsIHNldCBib3RoIGJpdHMgc28gdGhhdCB3ZQotCQkgKiBnZXQgYmFjayBpbiBzeW5jLgotCQkg KgotCQkgKiBUaGUgaGVhcCBidWZmZXIgbXVzdCBiZSBtYXJrZWQgZGlydHkgYmVmb3JlIGFkZGlu ZyBpdCB0byB0aGUgV0FMCi0JCSAqIGNoYWluIHdoZW4gc2V0dGluZyB0aGUgVk0uIFdlIGRvbid0 IHdvcnJ5IGFib3V0IHVubmVjZXNzYXJpbHkKLQkJICogZGlydHlpbmcgdGhlIGhlYXAgYnVmZmVy IGlmIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LCB0aG91Z2guCi0JCSAqIEl0IGlzIGV4 dHJlbWVseSByYXJlIHRvIGhhdmUgYSBjbGVhbiBoZWFwIGJ1ZmZlciB3aXRoCi0JCSAqIFBEX0FM TF9WSVNJQkxFIGFscmVhZHkgc2V0IGFuZCB0aGUgVk0gYml0cyBjbGVhciwgc28gdGhlcmUgaXMg bm8KLQkJICogcG9pbnQgaW4gb3B0aW1pemluZyBpdC4KLQkJICovCi0JCVBhZ2VTZXRBbGxWaXNp YmxlKHBhZ2UpOwotCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKLQotCQkvKgotCQkgKiBJZiB0 aGUgcGFnZSBpcyBiZWluZyBzZXQgYWxsLWZyb3plbiwgd2UgcGFzcyBJbnZhbGlkVHJhbnNhY3Rp b25JZAotCQkgKiBhcyB0aGUgY3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFwc2hvdCBjb25mbGljdCBo b3Jpem9uIHN1ZmZpY2llbnQgdG8KLQkJICogbWFrZSBldmVyeXRoaW5nIHNhZmUgZm9yIFJFRE8g d2FzIGxvZ2dlZCB3aGVuIHRoZSBwYWdlJ3MgdHVwbGVzCi0JCSAqIHdlcmUgZnJvemVuLgotCQkg Ki8KLQkJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KHZtX2NvbmZsaWN0X2hvcml6b24pKTsKLQotCQl2aXNpYmlsaXR5bWFwX3NldChwYXJhbXMtPnJl bGF0aW9uLCBibG9ja25vLCBidWZmZXIsCi0JCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJ CQkJICB2bWJ1ZmZlciwgdm1fY29uZmxpY3RfaG9yaXpvbiwKLQkJCQkJCSAgbmV3X3ZtYml0cyk7 CisJCWlmIChwcmVzdWx0LT5uZnJvemVuID4gMCkKKwkJeworCQkJKm5ld19yZWxmcm96ZW5feGlk ID0gcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQ7CisJCQkqbmV3X3JlbG1p bl9teGlkID0gcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxtaW5NeGlkOworCQl9CisJCWVs c2UKKwkJeworCQkJKm5ld19yZWxmcm96ZW5feGlkID0gcHJzdGF0ZS5wYWdlZnJ6Lk5vRnJlZXpl UGFnZVJlbGZyb3plblhpZDsKKwkJCSpuZXdfcmVsbWluX214aWQgPSBwcnN0YXRlLnBhZ2Vmcnou Tm9GcmVlemVQYWdlUmVsbWluTXhpZDsKKwkJfQogCX0KLQotCS8qIFNhdmUgdGhlIHZtYml0cyBm b3IgY2FsbGVyICovCi0JcHJlc3VsdC0+b2xkX3ZtYml0cyA9IG9sZF92bWJpdHM7Ci0JcHJlc3Vs dC0+bmV3X3ZtYml0cyA9IG5ld192bWJpdHM7CiB9CiAKIAotLSAKMi40My4wCgo= --00000000000050ca310647bb8e6c Content-Type: text/x-patch; charset="US-ASCII"; name="v33-0007-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Disposition: attachment; filename="v33-0007-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk2v2cm76 RnJvbSA4YTNkMDJjY2I5MTY1ZDUzZTUwYzM5MWRkNGQ3MWNjMTA4YzllZjE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjIxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MzMgMDcvMTZdIEVsaW1pbmF0ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZnJvbSBlbXB0eS1w YWdlIHZhY3V1bQoKQXMgcGFydCBvZiByZW1vdmluZyBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jk cywgcGhhc2UgSSBvZiBWQUNVVU0gbm93Cm1hcmtzIGVtcHR5IHBhZ2VzIGFsbC12aXNpYmxlIGlu IGEgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQuCgpBdXRob3I6IE1lbGFuaWUg UGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQg SGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8 YW5kcmVzQGFuYXJhemVsLmRlPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdt YWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAzNSAr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjkgaW5zZXJ0aW9u cygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5k ZXggYjdkODM0OTY5ZDYuLmFmYTJjM2FmODMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCkBAIC0xODk2LDkgKzE4OTYsMTIgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJl bFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkgKi8KIAkJ aWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQogCQl7CisJCQkvKiBMb2NrIHZtYnVmZmVyIGJl Zm9yZSBlbnRlcmluZyBjcml0aWNhbCBzZWN0aW9uICovCisJCQlMb2NrQnVmZmVyKHZtYnVmZmVy LCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCiAJCQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIAot CQkJLyogbWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdyaXRpbmcgYSBXQUwgcmVjb3JkICovCisJ CQkvKiBNYXJrIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgd3JpdGluZyBhbnkgV0FMIHJlY29yZHMgKi8K IAkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwogCiAJCQkvKgpAQCAtMTkxNSwxMyArMTkxOCwzMyBA QCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1Ziwg QmxvY2tOdW1iZXIgYmxrbm8sCiAJCQkJbG9nX25ld3BhZ2VfYnVmZmVyKGJ1ZiwgdHJ1ZSk7CiAK IAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVs LT5yZWwsIGJsa25vLCBidWYsCi0JCQkJCQkJICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkg IHZtYnVmZmVyLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKLQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUgfAotCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKKwkJCXZp c2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKKwkJCQkJCQkJCSB2bWJ1ZmZlciwKKwkJCQkJ CQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCSBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4sCisJCQkJCQkJCQkgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOworCisJCQkv KgorCQkJICogRW1pdCBXQUwgZm9yIHNldHRpbmcgUERfQUxMX1ZJU0lCTEUgb24gdGhlIGhlYXAg cGFnZSBhbmQKKwkJCSAqIHNldHRpbmcgdGhlIFZNLgorCQkJICovCisJCQlpZiAoUmVsYXRpb25O ZWVkc1dBTCh2YWNyZWwtPnJlbCkpCisJCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZSh2YWNy ZWwtPnJlbCwgYnVmLAorCQkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkJICBWSVNJQklM SVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pF TiwKKwkJCQkJCQkJCQkgIEludmFsaWRUcmFuc2FjdGlvbklkLCAvKiBjb25mbGljdCB4aWQgKi8K KwkJCQkJCQkJCQkgIGZhbHNlLAkvKiBjbGVhbnVwIGxvY2sgKi8KKwkJCQkJCQkJCQkgIFBSVU5F X1ZBQ1VVTV9TQ0FOLAkvKiByZWFzb24gKi8KKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJCQkJ CQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAp OworCiAJCQlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKKwkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJV RkZFUl9MT0NLX1VOTE9DSyk7CisKIAkJCS8qIENvdW50IHRoZSBuZXdseSBhbGwtZnJvemVuIHBh Z2VzIGZvciBsb2dnaW5nICovCiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7CiAJ CQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotLSAKMi40My4wCgo= --00000000000050ca310647bb8e6c Content-Type: text/x-patch; charset="US-ASCII"; name="v33-0008-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Disposition: attachment; filename="v33-0008-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk2v2g677 RnJvbSBiZGRhNDQzNGMzOTE4NjM1MjZiOGY5M2E5NWFiMzk4NTk1YTY5MDZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MzMgMDgvMTZdIFJlbW92ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZW50aXJlbHkKCkFzIG5v IHJlbWFpbmluZyB1c2VycyBlbWl0IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgpUaGlzIGlu Y2x1ZGVzIGRlbGV0aW5nIHRoZSB4bF9oZWFwX3Zpc2libGUgc3RydWN0IGFuZCBhbGwgZnVuY3Rp b25zCnJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBvciByZXBsYXlpbmcgWExPR19IRUFQMl9WSVNJ QkxFIHJlY29yZHMuCgpUaGlzIGNoYW5nZXMgdGhlIHZpc2liaWxpdHkgbWFwIEFQSSwgc28gYW55 IGV4dGVybmFsIHVzZXJzL2NvbnN1bWVycyBvZgp0aGUgVk0tb25seSBXQUwgcmVjb3JkIHdpbGwg bmVlZCB0byBjaGFuZ2UuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1h bkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXkgQm9yb2RpbiA8eDRtbW1AeWFuZGV4LXRl YW0ucnU+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJl dmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgfCAgNTQgKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgfCAxNTUgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgfCAgIDQgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgfCAgMTYgKy0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgIHwgMTEwICstLS0tLS0tLS0tLS0tLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jICAgfCAgMTAgLS0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgfCAgIDEgLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc3RhbmRieS5jICAgICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbV94bG9nLmggICAgICAgICB8ICAyMCAtLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmls aXR5bWFwLmggICAgICAgfCAgMTMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFw ZGVmcy5oICAgfCAgIDkgLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAg ICAgfCAgIDEgLQogMTMgZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgMzcxIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKaW5kZXggMWE5ZTdiZWE1ZDIu LmJjZTc2N2Q3YjcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1h c2suYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2suYwpAQCAtNTYsOCAr NTYsOCBAQCBtYXNrX3BhZ2VfaGludF9iaXRzKFBhZ2UgcGFnZSkKIAogCS8qCiAJICogRHVyaW5n IHJlcGxheSwgaWYgdGhlIHBhZ2UgTFNOIGhhcyBhZHZhbmNlZCBwYXN0IG91ciBYTE9HIHJlY29y ZCdzIExTTiwKLQkgKiB3ZSBkb24ndCBtYXJrIHRoZSBwYWdlIGFsbC12aXNpYmxlLiBTZWUgaGVh cF94bG9nX3Zpc2libGUoKSBmb3IKLQkgKiBkZXRhaWxzLgorCSAqIHdlIGRvbid0IG1hcmsgdGhl IHBhZ2UgYWxsLXZpc2libGUuIFNlZSBoZWFwX3hsb2dfcHJ1bmVfYW5kX2ZyZWV6ZSgpCisJICog Zm9yIG1vcmUgZGV0YWlscy4KIAkgKi8KIAlQYWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2UpOwogfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBhZDlkNjMzOGVjMi4uZjIxOWM3YTcxY2YgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC0yNTQyLDExICsyNTQyLDExIEBAIGhlYXBfbXVs dGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQg bnR1cGxlcywKIAkJZWxzZSBpZiAoYWxsX2Zyb3plbl9zZXQpCiAJCXsKIAkJCVBhZ2VTZXRBbGxW aXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKEJ1ZmZlckdldEJsb2Nr TnVtYmVyKGJ1ZmZlciksCi0JCQkJCQkJCQkgdm1idWZmZXIsCi0JCQkJCQkJCQkgVklTSUJJTElU WU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAot CQkJCQkJCQkJIHJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0KEJ1 ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlciksCisJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkg IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExf RlJPWkVOLAorCQkJCQkJCSAgcmVsYXRpb24tPnJkX2xvY2F0b3IpOwogCQl9CiAKIAkJLyoKQEAg LTg4MzEsNTAgKzg4MzEsNiBAQCBib3R0b211cF9zb3J0X2FuZF9zaHJpbmsoVE1fSW5kZXhEZWxl dGVPcCAqZGVsc3RhdGUpCiAJcmV0dXJuIG5ibG9ja3NmYXZvcmFibGU7CiB9CiAKLS8qCi0gKiBQ ZXJmb3JtIFhMb2dJbnNlcnQgZm9yIGEgaGVhcC12aXNpYmxlIG9wZXJhdGlvbi4gICdibG9jaycg aXMgdGhlIGJsb2NrCi0gKiBiZWluZyBtYXJrZWQgYWxsLXZpc2libGUsIGFuZCB2bV9idWZmZXIg aXMgdGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZQotICogY29ycmVzcG9uZGluZyB2aXNpYmlsaXR5 IG1hcCBibG9jay4gIEJvdGggc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIG1vZGlmaWVkCi0gKiBh bmQgZGlydGllZC4KLSAqCi0gKiBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBjb21lcyBmcm9tIHRo ZSBsYXJnZXN0IHhtaW4gb24gdGhlIHBhZ2UgYmVpbmcKLSAqIG1hcmtlZCBhbGwtdmlzaWJsZS4g IFJFRE8gcm91dGluZSB1c2VzIGl0IHRvIGdlbmVyYXRlIHJlY292ZXJ5IGNvbmZsaWN0cy4KLSAq Ci0gKiBJZiBjaGVja3N1bXMgb3Igd2FsX2xvZ19oaW50cyBhcmUgZW5hYmxlZCwgd2UgbWF5IGFs c28gZ2VuZXJhdGUgYSBmdWxsLXBhZ2UKLSAqIGltYWdlIG9mIGhlYXBfYnVmZmVyLiBPdGhlcndp c2UsIHdlIG9wdGltaXplIGF3YXkgdGhlIEZQSSAoYnkgc3BlY2lmeWluZwotICogUkVHQlVGX05P X0lNQUdFIGZvciB0aGUgaGVhcCBidWZmZXIpLCBpbiB3aGljaCBjYXNlIHRoZSBjYWxsZXIgc2hv dWxkICpub3QqCi0gKiB1cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4KLSAqLwotWExvZ1JlY1B0 cgotbG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVm ZmVyIHZtX2J1ZmZlciwKLQkJCQkgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpv biwgdWludDggdm1mbGFncykKLXsKLQl4bF9oZWFwX3Zpc2libGUgeGxyZWM7Ci0JWExvZ1JlY1B0 cglyZWNwdHI7Ci0JdWludDgJCWZsYWdzOwotCi0JQXNzZXJ0KEJ1ZmZlcklzVmFsaWQoaGVhcF9i dWZmZXIpKTsKLQlBc3NlcnQoQnVmZmVySXNWYWxpZCh2bV9idWZmZXIpKTsKLQotCXhscmVjLnNu YXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247Ci0JeGxyZWMu ZmxhZ3MgPSB2bWZsYWdzOwotCWlmIChSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29k aW5nKHJlbCkpCi0JCXhscmVjLmZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfWExPR19DQVRBTE9HX1JF TDsKLQlYTG9nQmVnaW5JbnNlcnQoKTsKLQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgU2l6ZU9m SGVhcFZpc2libGUpOwotCi0JWExvZ1JlZ2lzdGVyQnVmZmVyKDAsIHZtX2J1ZmZlciwgMCk7Ci0K LQlmbGFncyA9IFJFR0JVRl9TVEFOREFSRDsKLQlpZiAoIVhMb2dIaW50Qml0SXNOZWVkZWQoKSkK LQkJZmxhZ3MgfD0gUkVHQlVGX05PX0lNQUdFOwotCVhMb2dSZWdpc3RlckJ1ZmZlcigxLCBoZWFw X2J1ZmZlciwgZmxhZ3MpOwotCi0JcmVjcHRyID0gWExvZ0luc2VydChSTV9IRUFQMl9JRCwgWExP R19IRUFQMl9WSVNJQkxFKTsKLQotCXJldHVybiByZWNwdHI7Ci19Ci0KIC8qCiAgKiBQZXJmb3Jt IFhMb2dJbnNlcnQgZm9yIGEgaGVhcC11cGRhdGUgb3BlcmF0aW9uLiAgQ2FsbGVyIG11c3QgYWxy ZWFkeQogICogaGF2ZSBtb2RpZmllZCB0aGUgYnVmZmVyKHMpIGFuZCBtYXJrZWQgdGhlbSBkaXJ0 eS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCmluZGV4IGY3NjUzNDVlOWU0Li45 YTI5ZmRhMzYwMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hs b2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC0yMzYs NyArMjM2LDcgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29y ZCkKIAkJaWYgKFBhZ2VJc05ldyh2bXBhZ2UpKQogCQkJUGFnZUluaXQodm1wYWdlLCBCTENLU1os IDApOwogCi0JCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywgdm1idWZmZXIsIHZtZmxh Z3MsIHJsb2NhdG9yKTsKKwkJdmlzaWJpbGl0eW1hcF9zZXQoYmxrbm8sIHZtYnVmZmVyLCB2bWZs YWdzLCBybG9jYXRvcik7CiAKIAkJQXNzZXJ0KEJ1ZmZlcklzRGlydHkodm1idWZmZXIpKTsKIAkJ UGFnZVNldExTTih2bXBhZ2UsIGxzbik7CkBAIC0yNDksMTQyICsyNDksNiBAQCBoZWFwX3hsb2df cHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlYTG9nUmVjb3JkUGFnZVdp dGhGcmVlU3BhY2UocmxvY2F0b3IsIGJsa25vLCBmcmVlc3BhY2UpOwogfQogCi0vKgotICogUmVw bGF5IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgotICoKLSAqIFRoZSBjcml0aWNhbCBpbnRl Z3JpdHkgcmVxdWlyZW1lbnQgaGVyZSBpcyB0aGF0IHdlIG11c3QgbmV2ZXIgZW5kIHVwIHdpdGgK LSAqIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0LCBhbmQg dGhlIHBhZ2UtbGV2ZWwKLSAqIFBEX0FMTF9WSVNJQkxFIGJpdCBpcyBjbGVhci4gIElmIHRoYXQg d2VyZSB0byBvY2N1ciwgdGhlbiBhIHN1YnNlcXVlbnQKLSAqIHBhZ2UgbW9kaWZpY2F0aW9uIHdv dWxkIGZhaWwgdG8gY2xlYXIgdGhlIHZpc2liaWxpdHkgbWFwIGJpdC4KLSAqLwotc3RhdGljIHZv aWQKLWhlYXBfeGxvZ192aXNpYmxlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQotewotCVhMb2dS ZWNQdHIJbHNuID0gcmVjb3JkLT5FbmRSZWNQdHI7Ci0JeGxfaGVhcF92aXNpYmxlICp4bHJlYyA9 ICh4bF9oZWFwX3Zpc2libGUgKikgWExvZ1JlY0dldERhdGEocmVjb3JkKTsKLQlCdWZmZXIJCXZt YnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKLQlCdWZmZXIJCWJ1ZmZlcjsKLQlQYWdlCQlwYWdlOwot CVJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yOwotCUJsb2NrTnVtYmVyIGJsa25vOwotCVhMb2dSZWRv QWN0aW9uIGFjdGlvbjsKLQotCUFzc2VydCgoeGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9Y TE9HX1ZBTElEX0JJVFMpID09IHhscmVjLT5mbGFncyk7Ci0KLQlYTG9nUmVjR2V0QmxvY2tUYWco cmVjb3JkLCAxLCAmcmxvY2F0b3IsIE5VTEwsICZibGtubyk7Ci0KLQkvKgotCSAqIElmIHRoZXJl IGFyZSBhbnkgSG90IFN0YW5kYnkgdHJhbnNhY3Rpb25zIHJ1bm5pbmcgdGhhdCBoYXZlIGFuIHht aW4KLQkgKiBob3Jpem9uIG9sZCBlbm91Z2ggdGhhdCB0aGlzIHBhZ2UgaXNuJ3QgYWxsLXZpc2li bGUgZm9yIHRoZW0sIHRoZXkKLQkgKiBtaWdodCBpbmNvcnJlY3RseSBkZWNpZGUgdGhhdCBhbiBp bmRleC1vbmx5IHNjYW4gY2FuIHNraXAgYSBoZWFwIGZldGNoLgotCSAqCi0JICogTkI6IEl0IG1p Z2h0IGJlIGJldHRlciB0byB0aHJvdyBzb21lIGtpbmQgb2YgInNvZnQiIGNvbmZsaWN0IGhlcmUg dGhhdAotCSAqIGZvcmNlcyBhbnkgaW5kZXgtb25seSBzY2FuIHRoYXQgaXMgaW4gZmxpZ2h0IHRv IHBlcmZvcm0gaGVhcCBmZXRjaGVzLAotCSAqIHJhdGhlciB0aGFuIGtpbGxpbmcgdGhlIHRyYW5z YWN0aW9uIG91dHJpZ2h0LgotCSAqLwotCWlmIChJbkhvdFN0YW5kYnkpCi0JCVJlc29sdmVSZWNv dmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwK LQkJCQkJCQkJCQkJeGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVM LAotCQkJCQkJCQkJCQlybG9jYXRvcik7Ci0KLQkvKgotCSAqIFJlYWQgdGhlIGhlYXAgcGFnZSwg aWYgaXQgc3RpbGwgZXhpc3RzLiBJZiB0aGUgaGVhcCBmaWxlIGhhcyBkcm9wcGVkIG9yCi0JICog dHJ1bmNhdGVkIGxhdGVyIGluIHJlY292ZXJ5LCB3ZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSB0aGUg cGFnZSwgYnV0IHdlJ2QKLQkgKiBiZXR0ZXIgc3RpbGwgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1h cC4KLQkgKi8KLQlhY3Rpb24gPSBYTG9nUmVhZEJ1ZmZlckZvclJlZG8ocmVjb3JkLCAxLCAmYnVm ZmVyKTsKLQlpZiAoYWN0aW9uID09IEJMS19ORUVEU19SRURPKQotCXsKLQkJLyoKLQkJICogV2Ug ZG9uJ3QgYnVtcCB0aGUgTFNOIG9mIHRoZSBoZWFwIHBhZ2Ugd2hlbiBzZXR0aW5nIHRoZSB2aXNp YmlsaXR5Ci0JCSAqIG1hcCBiaXQgKHVubGVzcyBjaGVja3N1bXMgb3Igd2FsX2hpbnRfYml0cyBp cyBlbmFibGVkLCBpbiB3aGljaAotCQkgKiBjYXNlIHdlIG11c3QpLiBUaGlzIGV4cG9zZXMgdXMg dG8gdG9ybiBwYWdlIGhhemFyZHMsIGJ1dCBzaW5jZQotCQkgKiB3ZSdyZSBub3QgaW5zcGVjdGlu ZyB0aGUgZXhpc3RpbmcgcGFnZSBjb250ZW50cyBpbiBhbnkgd2F5LCB3ZQotCQkgKiBkb24ndCBj YXJlLgotCQkgKi8KLQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKLQotCQlQYWdlU2V0 QWxsVmlzaWJsZShwYWdlKTsKLQotCQlpZiAoWExvZ0hpbnRCaXRJc05lZWRlZCgpKQotCQkJUGFn ZVNldExTTihwYWdlLCBsc24pOwotCi0JCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwotCX0KLQll bHNlIGlmIChhY3Rpb24gPT0gQkxLX1JFU1RPUkVEKQotCXsKLQkJLyoKLQkJICogSWYgaGVhcCBi bG9jayB3YXMgYmFja2VkIHVwLCB3ZSBhbHJlYWR5IHJlc3RvcmVkIGl0IGFuZCB0aGVyZSdzCi0J CSAqIG5vdGhpbmcgbW9yZSB0byBkby4gKFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdpdGggY2hlY2tz dW1zIG9yCi0JCSAqIHdhbF9sb2dfaGludHMgZW5hYmxlZC4pCi0JCSAqLwotCX0KLQotCWlmIChC dWZmZXJJc1ZhbGlkKGJ1ZmZlcikpCi0JewotCQlTaXplCQlzcGFjZSA9IFBhZ2VHZXRGcmVlU3Bh Y2UoQnVmZmVyR2V0UGFnZShidWZmZXIpKTsKLQotCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZl cik7Ci0KLQkJLyoKLQkJICogU2luY2UgRlNNIGlzIG5vdCBXQUwtbG9nZ2VkIGFuZCBvbmx5IHVw ZGF0ZWQgaGV1cmlzdGljYWxseSwgaXQKLQkJICogZWFzaWx5IGJlY29tZXMgc3RhbGUgaW4gc3Rh bmRieXMuICBJZiB0aGUgc3RhbmRieSBpcyBsYXRlciBwcm9tb3RlZAotCQkgKiBhbmQgcnVucyBW QUNVVU0sIGl0IHdpbGwgc2tpcCB1cGRhdGluZyBpbmRpdmlkdWFsIGZyZWUgc3BhY2UKLQkJICog ZmlndXJlcyBmb3IgcGFnZXMgdGhhdCBiZWNhbWUgYWxsLXZpc2libGUgKG9yIGFsbC1mcm96ZW4s IGRlcGVuZGluZwotCQkgKiBvbiB0aGUgdmFjdXVtIG1vZGUsKSB3aGljaCBpcyB0cm91Ymxlc29t ZSB3aGVuIEZyZWVTcGFjZU1hcFZhY3V1bQotCQkgKiBwcm9wYWdhdGVzIHRvbyBvcHRpbWlzdGlj IGZyZWUgc3BhY2UgdmFsdWVzIHRvIHVwcGVyIEZTTSBsYXllcnM7Ci0JCSAqIGxhdGVyIGluc2Vy dGVycyB0cnkgdG8gdXNlIHN1Y2ggcGFnZXMgb25seSB0byBmaW5kIG91dCB0aGF0IHRoZXkKLQkJ ICogYXJlIHVudXNhYmxlLiAgVGhpcyBjYW4gY2F1c2UgbG9uZyBzdGFsbHMgd2hlbiB0aGVyZSBh cmUgbWFueSBzdWNoCi0JCSAqIHBhZ2VzLgotCQkgKgotCQkgKiBGb3Jlc3RhbGwgdGhvc2UgcHJv YmxlbXMgYnkgdXBkYXRpbmcgRlNNJ3MgaWRlYSBhYm91dCBhIHBhZ2UgdGhhdAotCQkgKiBpcyBi ZWNvbWluZyBhbGwtdmlzaWJsZSBvciBhbGwtZnJvemVuLgotCQkgKgotCQkgKiBEbyB0aGlzIHJl Z2FyZGxlc3Mgb2YgYSBmdWxsLXBhZ2UgaW1hZ2UgYmVpbmcgYXBwbGllZCwgc2luY2UgdGhlCi0J CSAqIEZTTSBkYXRhIGlzIG5vdCBpbiB0aGUgcGFnZSBhbnl3YXkuCi0JCSAqLwotCQlpZiAoeGxy ZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKQotCQkJWExvZ1JlY29yZFBhZ2VX aXRoRnJlZVNwYWNlKHJsb2NhdG9yLCBibGtubywgc3BhY2UpOwotCX0KLQotCS8qCi0JICogRXZl biBpZiB3ZSBza2lwcGVkIHRoZSBoZWFwIHBhZ2UgdXBkYXRlIGR1ZSB0byB0aGUgTFNOIGludGVy bG9jaywgaXQncwotCSAqIHN0aWxsIHNhZmUgdG8gdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4g IEFueSBXQUwgcmVjb3JkIHRoYXQgY2xlYXJzCi0JICogdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBk b2VzIHNvIGJlZm9yZSBjaGVja2luZyB0aGUgcGFnZSBMU04sIHNvIGFueQotCSAqIGJpdHMgdGhh dCBuZWVkIHRvIGJlIGNsZWFyZWQgd2lsbCBzdGlsbCBiZSBjbGVhcmVkLgotCSAqLwotCWlmIChY TG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQsIDAsIFJCTV9aRVJPX09OX0VSUk9S LCBmYWxzZSwKLQkJCQkJCQkJCSAgJnZtYnVmZmVyKSA9PSBCTEtfTkVFRFNfUkVETykKLQl7Ci0J CVBhZ2UJCXZtcGFnZSA9IEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpOwotCQlSZWxhdGlvbglyZWxu OwotCQl1aW50OAkJdm1iaXRzOwotCi0JCS8qIGluaXRpYWxpemUgdGhlIHBhZ2UgaWYgaXQgd2Fz IHJlYWQgYXMgemVyb3MgKi8KLQkJaWYgKFBhZ2VJc05ldyh2bXBhZ2UpKQotCQkJUGFnZUluaXQo dm1wYWdlLCBCTENLU1osIDApOwotCi0JCS8qIHJlbW92ZSBWSVNJQklMSVRZTUFQX1hMT0dfKiAq LwotCQl2bWJpdHMgPSB4bHJlYy0+ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7Ci0K LQkJLyoKLQkJICogWExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQgbG9ja2VkIHRoZSBidWZm ZXIuIEJ1dAotCQkgKiB2aXNpYmlsaXR5bWFwX3NldCB3aWxsIGhhbmRsZSBsb2NraW5nIGl0c2Vs Zi4KLQkJICovCi0JCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0K LQkJcmVsbiA9IENyZWF0ZUZha2VSZWxjYWNoZUVudHJ5KHJsb2NhdG9yKTsKLQotCQl2aXNpYmls aXR5bWFwX3NldChyZWxuLCBibGtubywgSW52YWxpZEJ1ZmZlciwgbHNuLCB2bWJ1ZmZlciwKLQkJ CQkJCSAgeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLCB2bWJpdHMpOwotCi0JCVJlbGVh c2VCdWZmZXIodm1idWZmZXIpOwotCQlGcmVlRmFrZVJlbGNhY2hlRW50cnkocmVsbik7Ci0JfQot CWVsc2UgaWYgKEJ1ZmZlcklzVmFsaWQodm1idWZmZXIpKQotCQlVbmxvY2tSZWxlYXNlQnVmZmVy KHZtYnVmZmVyKTsKLX0KLQogLyoKICAqIEdpdmVuIGFuICJpbmZvYml0cyIgZmllbGQgZnJvbSBh biBYTG9nIHJlY29yZCwgc2V0IHRoZSBjb3JyZWN0IGJpdHMgaW4gdGhlCiAgKiBnaXZlbiBpbmZv bWFzayBhbmQgaW5mb21hc2syIGZvciB0aGUgdHVwbGUgdG91Y2hlZCBieSB0aGUgcmVjb3JkLgpA QCAtNzYyLDggKzYyNiw4IEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpCiAJICoKIAkgKiBEdXJpbmcgcmVjb3ZlcnksIGhvd2V2ZXIsIG5vIGNvbmN1cnJl bnQgd3JpdGVycyBleGlzdC4gVGhlcmVmb3JlLAogCSAqIHVwZGF0aW5nIHRoZSBWTSB3aXRob3V0 IGhvbGRpbmcgdGhlIGhlYXAgcGFnZSBsb2NrIGlzIHNhZmUgZW5vdWdoLiBUaGlzCi0JICogc2Ft ZSBhcHByb2FjaCBpcyB0YWtlbiB3aGVuIHJlcGxheWluZyB4bF9oZWFwX3Zpc2libGUgcmVjb3Jk cyAoc2VlCi0JICogaGVhcF94bG9nX3Zpc2libGUoKSkuCisJICogc2FtZSBhcHByb2FjaCBpcyB0 YWtlbiB3aGVuIHJlcGxheWluZyBYTE9HX0hFQVAyX1BSVU5FKiByZWNvcmRzIChzZWUKKwkgKiBo ZWFwX3hsb2dfcHJ1bmVfYW5kX2ZyZWV6ZSgpKS4KIAkgKi8KIAlpZiAoKHhscmVjLT5mbGFncyAm IFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQpICYmCiAJCVhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4 dGVuZGVkKHJlY29yZCwgMSwgUkJNX1pFUk9fT05fRVJST1IsIGZhbHNlLApAQCAtNzc1LDExICs2 MzksMTEgQEAgaGVhcF94bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK IAkJaWYgKFBhZ2VJc05ldyh2bXBhZ2UpKQogCQkJUGFnZUluaXQodm1wYWdlLCBCTENLU1osIDAp OwogCi0JCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKLQkJCQkJCQkJIHZtYnVmZmVy LAotCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJCSBWSVNJQklM SVRZTUFQX0FMTF9GUk9aRU4sCi0JCQkJCQkJCSBybG9jYXRvcik7CisJCXZpc2liaWxpdHltYXBf c2V0KGJsa25vLAorCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExf VklTSUJMRSB8CisJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCSAgcmxv Y2F0b3IpOwogCiAJCUFzc2VydChCdWZmZXJJc0RpcnR5KHZtYnVmZmVyKSk7CiAJCVBhZ2VTZXRM U04odm1wYWdlLCBsc24pOwpAQCAtMTM2MCw5ICsxMjI0LDYgQEAgaGVhcDJfcmVkbyhYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCkKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9DTEVBTlVQ OgogCQkJaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShyZWNvcmQpOwogCQkJYnJlYWs7Ci0JCWNhc2Ug WExPR19IRUFQMl9WSVNJQkxFOgotCQkJaGVhcF94bG9nX3Zpc2libGUocmVjb3JkKTsKLQkJCWJy ZWFrOwogCQljYXNlIFhMT0dfSEVBUDJfTVVMVElfSU5TRVJUOgogCQkJaGVhcF94bG9nX211bHRp X2luc2VydChyZWNvcmQpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j CmluZGV4IGIzZWE0MmYxYmUxLi5jYWMwOWRmZjMxZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMKQEAgLTEyNDAsOCArMTI0MCw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkgKiBzbyB0aGVyZSBpcyBubyBwb2ludCBp biBvcHRpbWl6aW5nIGl0LgogCQkJICovCiAJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJ CXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibG9ja25vLCB2bWJ1ZmZlciwgbmV3X3ZtYml0cywK LQkJCQkJCQkJCSBwYXJhbXMtPnJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKKwkJCXZpc2liaWxpdHlt YXBfc2V0KGJsb2Nrbm8sIHZtYnVmZmVyLCBuZXdfdm1iaXRzLAorCQkJCQkJCSAgcGFyYW1zLT5y ZWxhdGlvbi0+cmRfbG9jYXRvcik7CiAJCX0KIAogCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCBhZmEyYzNhZjgzMy4uNGQ3ZTE2 MzY1MjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE5MTgsMTEgKzE5 MTgsMTEgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZl ciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkJCWxvZ19uZXdwYWdlX2J1ZmZlcihidWYsIHRy dWUpOwogCiAJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJCXZpc2liaWxpdHltYXBfc2V0 X3ZtYml0cyhibGtubywKLQkJCQkJCQkJCSB2bWJ1ZmZlciwKLQkJCQkJCQkJCSBWSVNJQklMSVRZ TUFQX0FMTF9WSVNJQkxFIHwKLQkJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4sCi0J CQkJCQkJCQkgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOworCQkJdmlzaWJpbGl0eW1hcF9zZXQo Ymxrbm8sCisJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJ U0lCTEUgfAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAorCQkJCQkJCSAgdmFj cmVsLT5yZWwtPnJkX2xvY2F0b3IpOwogCiAJCQkvKgogCQkJICogRW1pdCBXQUwgZm9yIHNldHRp bmcgUERfQUxMX1ZJU0lCTEUgb24gdGhlIGhlYXAgcGFnZSBhbmQKQEAgLTI4MDAsOSArMjgwMCw5 IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVy IGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCQkgKiBzZXQgUERfQUxMX1ZJU0lCTEUuCiAJCSAqLwog CQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJs a25vLAotCQkJCQkJCQkgdm1idWZmZXIsIHZtZmxhZ3MsCi0JCQkJCQkJCSB2YWNyZWwtPnJlbC0+ cmRfbG9jYXRvcik7CisJCXZpc2liaWxpdHltYXBfc2V0KGJsa25vLAorCQkJCQkJICB2bWJ1ZmZl ciwgdm1mbGFncywKKwkJCQkJCSAgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOwogCQljb25mbGlj dF94aWQgPSB2aXNpYmlsaXR5X2N1dG9mZl94aWQ7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92aXNpYmlsaXR5bWFwLmMKaW5kZXggMzA0N2JkNDZkZWYuLmZjNzRlMzllMDY5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC0xNCw4ICsxNCw3IEBACiAgKgkJ dmlzaWJpbGl0eW1hcF9jbGVhciAgLSBjbGVhciBiaXRzIGZvciBvbmUgcGFnZSBpbiB0aGUgdmlz aWJpbGl0eSBtYXAKICAqCQl2aXNpYmlsaXR5bWFwX3BpbgkgLSBwaW4gYSBtYXAgcGFnZSBmb3Ig c2V0dGluZyBhIGJpdAogICoJCXZpc2liaWxpdHltYXBfcGluX29rIC0gY2hlY2sgd2hldGhlciBj b3JyZWN0IG1hcCBwYWdlIGlzIGFscmVhZHkgcGlubmVkCi0gKgkJdmlzaWJpbGl0eW1hcF9zZXQJ IC0gc2V0IGJpdChzKSBpbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UgYW5kIGxvZwotICoJCXZp c2liaWxpdHltYXBfc2V0X3ZtYml0cyAtIHNldCBiaXQocykgaW4gYSBwaW5uZWQgcGFnZQorICoJ CXZpc2liaWxpdHltYXBfc2V0CSAtIHNldCBiaXQocykgaW4gYSBwcmV2aW91c2x5IHBpbm5lZCBw YWdlCiAgKgkJdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzIC0gZ2V0IHN0YXR1cyBvZiBiaXRzCiAg KgkJdmlzaWJpbGl0eW1hcF9jb3VudCAgLSBjb3VudCBudW1iZXIgb2YgYml0cyBzZXQgaW4gdmlz aWJpbGl0eSBtYXAKICAqCQl2aXNpYmlsaXR5bWFwX3ByZXBhcmVfdHJ1bmNhdGUgLQpAQCAtMjIw LDExMiArMjE5LDExIEBAIHZpc2liaWxpdHltYXBfcGluX29rKEJsb2NrTnVtYmVyIGhlYXBCbGss IEJ1ZmZlciB2bWJ1ZikKIAlyZXR1cm4gQnVmZmVySXNWYWxpZCh2bWJ1ZikgJiYgQnVmZmVyR2V0 QmxvY2tOdW1iZXIodm1idWYpID09IG1hcEJsb2NrOwogfQogCi0vKgotICoJdmlzaWJpbGl0eW1h cF9zZXQgLSBzZXQgYml0KHMpIG9uIGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZQotICoKLSAqIHJl Y3B0ciBpcyB0aGUgTFNOIG9mIHRoZSBYTE9HIHJlY29yZCB3ZSdyZSByZXBsYXlpbmcsIGlmIHdl J3JlIGluIHJlY292ZXJ5LAotICogb3IgSW52YWxpZFhMb2dSZWNQdHIgaW4gbm9ybWFsIHJ1bm5p bmcuICBUaGUgVk0gcGFnZSBMU04gaXMgYWR2YW5jZWQgdG8gdGhlCi0gKiBvbmUgcHJvdmlkZWQ7 IGluIG5vcm1hbCBydW5uaW5nLCB3ZSBnZW5lcmF0ZSBhIG5ldyBYTE9HIHJlY29yZCBhbmQgc2V0 IHRoZQotICogcGFnZSBMU04gdG8gdGhhdCB2YWx1ZSAodGhvdWdoIHRoZSBoZWFwIHBhZ2UncyBM U04gbWF5ICpub3QqIGJlIHVwZGF0ZWQ7Ci0gKiBzZWUgYmVsb3cpLiAgY3V0b2ZmX3hpZCBpcyB0 aGUgbGFyZ2VzdCB4bWluIG9uIHRoZSBwYWdlIGJlaW5nIG1hcmtlZAotICogYWxsLXZpc2libGU7 IGl0IGlzIG5lZWRlZCBmb3IgSG90IFN0YW5kYnksIGFuZCBjYW4gYmUgSW52YWxpZFRyYW5zYWN0 aW9uSWQKLSAqIGlmIHRoZSBwYWdlIGNvbnRhaW5zIG5vIHR1cGxlcy4gIEl0IGNhbiBhbHNvIGJl IHNldCB0byBJbnZhbGlkVHJhbnNhY3Rpb25JZAotICogd2hlbiBhIHBhZ2UgdGhhdCBpcyBhbHJl YWR5IGFsbC12aXNpYmxlIGlzIGJlaW5nIG1hcmtlZCBhbGwtZnJvemVuLgotICoKLSAqIENhbGxl ciBpcyBleHBlY3RlZCB0byBzZXQgdGhlIGhlYXAgcGFnZSdzIFBEX0FMTF9WSVNJQkxFIGJpdCBi ZWZvcmUgY2FsbGluZwotICogdGhpcyBmdW5jdGlvbi4gRXhjZXB0IGluIHJlY292ZXJ5LCBjYWxs ZXIgc2hvdWxkIGFsc28gcGFzcyB0aGUgaGVhcAotICogYnVmZmVyLiBXaGVuIGNoZWNrc3VtcyBh cmUgZW5hYmxlZCBhbmQgd2UncmUgbm90IGluIHJlY292ZXJ5LCB3ZSBtdXN0IGFkZAotICogdGhl IGhlYXAgYnVmZmVyIHRvIHRoZSBXQUwgY2hhaW4gdG8gcHJvdGVjdCBpdCBmcm9tIGJlaW5nIHRv cm4uCi0gKgotICogWW91IG11c3QgcGFzcyBhIGJ1ZmZlciBjb250YWluaW5nIHRoZSBjb3JyZWN0 IG1hcCBwYWdlIHRvIHRoaXMgZnVuY3Rpb24uCi0gKiBDYWxsIHZpc2liaWxpdHltYXBfcGluIGZp cnN0IHRvIHBpbiB0aGUgcmlnaHQgb25lLiBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgZG8KLSAqIGFu eSBJL08uCi0gKi8KLXZvaWQKLXZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tO dW1iZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCi0JCQkJICBYTG9nUmVjUHRyIHJlY3B0ciwg QnVmZmVyIHZtQnVmLCBUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCi0JCQkJICB1aW50OCBmbGFn cykKLXsKLQlCbG9ja051bWJlciBtYXBCbG9jayA9IEhFQVBCTEtfVE9fTUFQQkxPQ0soaGVhcEJs ayk7Ci0JdWludDMyCQltYXBCeXRlID0gSEVBUEJMS19UT19NQVBCWVRFKGhlYXBCbGspOwotCXVp bnQ4CQltYXBPZmZzZXQgPSBIRUFQQkxLX1RPX09GRlNFVChoZWFwQmxrKTsKLQlQYWdlCQlwYWdl OwotCXVpbnQ4CSAgICptYXA7Ci0JdWludDgJCXN0YXR1czsKLQotI2lmZGVmIFRSQUNFX1ZJU0lC SUxJVFlNQVAKLQllbG9nKERFQlVHMSwgInZtX3NldCBmbGFncyAweCUwMlggZm9yICVzICVkIiwK LQkJIGZsYWdzLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwQmxrKTsKLSNlbmRp ZgotCi0JQXNzZXJ0KEluUmVjb3ZlcnkgfHwgIVhMb2dSZWNQdHJJc1ZhbGlkKHJlY3B0cikpOwot CUFzc2VydChJblJlY292ZXJ5IHx8IFBhZ2VJc0FsbFZpc2libGUoQnVmZmVyR2V0UGFnZShoZWFw QnVmKSkpOwotCUFzc2VydCgoZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpID09IGZs YWdzKTsKLQotCS8qIE11c3QgbmV2ZXIgc2V0IGFsbF9mcm96ZW4gYml0IHdpdGhvdXQgYWxzbyBz ZXR0aW5nIGFsbF92aXNpYmxlIGJpdCAqLwotCUFzc2VydChmbGFncyAhPSBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4pOwotCi0JLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBoZWFwIHBh Z2UgcGlubmVkLCBpZiBwcmVzZW50ICovCi0JaWYgKEJ1ZmZlcklzVmFsaWQoaGVhcEJ1ZikgJiYg QnVmZmVyR2V0QmxvY2tOdW1iZXIoaGVhcEJ1ZikgIT0gaGVhcEJsaykKLQkJZWxvZyhFUlJPUiwg Indyb25nIGhlYXAgYnVmZmVyIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOwotCi0JQXNz ZXJ0KCFCdWZmZXJJc1ZhbGlkKGhlYXBCdWYpIHx8Ci0JCSAgIEJ1ZmZlcklzTG9ja2VkQnlNZUlu TW9kZShoZWFwQnVmLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpKTsKLQotCS8qIENoZWNrIHRoYXQg d2UgaGF2ZSB0aGUgcmlnaHQgVk0gcGFnZSBwaW5uZWQgKi8KLQlpZiAoIUJ1ZmZlcklzVmFsaWQo dm1CdWYpIHx8IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHZtQnVmKSAhPSBtYXBCbG9jaykKLQkJZWxv ZyhFUlJPUiwgIndyb25nIFZNIGJ1ZmZlciBwYXNzZWQgdG8gdmlzaWJpbGl0eW1hcF9zZXQiKTsK LQotCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtQnVmKTsKLQltYXAgPSAodWludDggKikgUGFnZUdl dENvbnRlbnRzKHBhZ2UpOwotCUxvY2tCdWZmZXIodm1CdWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lW RSk7Ci0KLQlzdGF0dXMgPSAobWFwW21hcEJ5dGVdID4+IG1hcE9mZnNldCkgJiBWSVNJQklMSVRZ TUFQX1ZBTElEX0JJVFM7Ci0JaWYgKGZsYWdzICE9IHN0YXR1cykKLQl7Ci0JCVNUQVJUX0NSSVRf U0VDVElPTigpOwotCi0JCW1hcFttYXBCeXRlXSB8PSAoZmxhZ3MgPDwgbWFwT2Zmc2V0KTsKLQkJ TWFya0J1ZmZlckRpcnR5KHZtQnVmKTsKLQotCQlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWwpKQot CQl7Ci0JCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHJlY3B0cikpCi0JCQl7Ci0JCQkJQXNzZXJ0 KCFJblJlY292ZXJ5KTsKLQkJCQlyZWNwdHIgPSBsb2dfaGVhcF92aXNpYmxlKHJlbCwgaGVhcEJ1 Ziwgdm1CdWYsIGN1dG9mZl94aWQsIGZsYWdzKTsKLQotCQkJCS8qCi0JCQkJICogSWYgZGF0YSBj aGVja3N1bXMgYXJlIGVuYWJsZWQgKG9yIHdhbF9sb2dfaGludHM9b24pLCB3ZQotCQkJCSAqIG5l ZWQgdG8gcHJvdGVjdCB0aGUgaGVhcCBwYWdlIGZyb20gYmVpbmcgdG9ybi4KLQkJCQkgKgotCQkJ CSAqIElmIG5vdCwgdGhlbiB3ZSBtdXN0ICpub3QqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNO LiBJbgotCQkJCSAqIHRoaXMgY2FzZSwgdGhlIEZQSSBmb3IgdGhlIGhlYXAgcGFnZSB3YXMgb21p dHRlZCBmcm9tIHRoZQotCQkJCSAqIFdBTCByZWNvcmQgaW5zZXJ0ZWQgYWJvdmUsIHNvIGl0IHdv dWxkIGJlIGluY29ycmVjdCB0bwotCQkJCSAqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLgot CQkJCSAqLwotCQkJCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkpCi0JCQkJewotCQkJCQlQYWdl CQloZWFwUGFnZSA9IEJ1ZmZlckdldFBhZ2UoaGVhcEJ1Zik7Ci0KLQkJCQkJUGFnZVNldExTTiho ZWFwUGFnZSwgcmVjcHRyKTsKLQkJCQl9Ci0JCQl9Ci0JCQlQYWdlU2V0TFNOKHBhZ2UsIHJlY3B0 cik7Ci0JCX0KLQotCQlFTkRfQ1JJVF9TRUNUSU9OKCk7Ci0JfQotCi0JTG9ja0J1ZmZlcih2bUJ1 ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKLX0KLQogLyoKICAqIFNldCBWTSAodmlzaWJpbGl0eSBt YXApIGZsYWdzIGluIHRoZSBWTSBibG9jayBpbiB2bUJ1Zi4KICAqCiAgKiBUaGlzIGZ1bmN0aW9u IGlzIGludGVuZGVkIGZvciBjYWxsZXJzIHRoYXQgbG9nIFZNIGNoYW5nZXMgdG9nZXRoZXIKICAq IHdpdGggdGhlIGhlYXAgcGFnZSBtb2RpZmljYXRpb25zIHRoYXQgcmVuZGVyZWQgdGhlIHBhZ2Ug YWxsLXZpc2libGUuCi0gKiBDYWxsZXJzIHRoYXQgbG9nIFZNIGNoYW5nZXMgc2VwYXJhdGVseSBz aG91bGQgdXNlIHZpc2liaWxpdHltYXBfc2V0KCkuCiAgKgogICogdm1CdWYgbXVzdCBiZSBwaW5u ZWQgYW5kIGV4Y2x1c2l2ZWx5IGxvY2tlZCwgYW5kIGl0IG11c3QgY292ZXIgdGhlIFZNIGJpdHMK ICAqIGNvcnJlc3BvbmRpbmcgdG8gaGVhcEJsay4KQEAgLTM0MSw5ICsyMzksOSBAQCB2aXNpYmls aXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFw QnVmLAogICogcmxvY2F0b3IgaXMgdXNlZCBvbmx5IGZvciBkZWJ1Z2dpbmcgbWVzc2FnZXMuCiAg Ki8KIHZvaWQKLXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhCbG9ja051bWJlciBoZWFwQmxrLAot CQkJCQkJIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MsCi0JCQkJCQkgY29uc3QgUmVsRmlsZUxv Y2F0b3IgcmxvY2F0b3IpCit2aXNpYmlsaXR5bWFwX3NldChCbG9ja051bWJlciBoZWFwQmxrLAor CQkJCSAgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncywKKwkJCQkgIGNvbnN0IFJlbEZpbGVMb2Nh dG9yIHJsb2NhdG9yKQogewogCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0gSEVBUEJMS19UT19NQVBC TE9DSyhoZWFwQmxrKTsKIAl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxLX1RPX01BUEJZVEUoaGVh cEJsayk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2Mu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCmluZGV4IDAyYWU5MTY1 M2MxLi43NWFlNmY5ZDM3NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNj L2hlYXBkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMK QEAgLTM0OSwxMyArMzQ5LDYgQEAgaGVhcDJfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRl clN0YXRlICpyZWNvcmQpCiAJCQl9CiAJCX0KIAl9Ci0JZWxzZSBpZiAoaW5mbyA9PSBYTE9HX0hF QVAyX1ZJU0lCTEUpCi0JewotCQl4bF9oZWFwX3Zpc2libGUgKnhscmVjID0gKHhsX2hlYXBfdmlz aWJsZSAqKSByZWM7Ci0KLQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJzbmFwc2hvdENvbmZsaWN0 SG9yaXpvbjogJXUsIGZsYWdzOiAweCUwMlgiLAotCQkJCQkJIHhscmVjLT5zbmFwc2hvdENvbmZs aWN0SG9yaXpvbiwgeGxyZWMtPmZsYWdzKTsKLQl9CiAJZWxzZSBpZiAoaW5mbyA9PSBYTE9HX0hF QVAyX01VTFRJX0lOU0VSVCkKIAl7CiAJCXhsX2hlYXBfbXVsdGlfaW5zZXJ0ICp4bHJlYyA9ICh4 bF9oZWFwX211bHRpX2luc2VydCAqKSByZWM7CkBAIC00NjEsOSArNDU0LDYgQEAgaGVhcDJfaWRl bnRpZnkodWludDggaW5mbykKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9DTEVBTlVQ OgogCQkJaWQgPSAiUFJVTkVfVkFDVVVNX0NMRUFOVVAiOwogCQkJYnJlYWs7Ci0JCWNhc2UgWExP R19IRUFQMl9WSVNJQkxFOgotCQkJaWQgPSAiVklTSUJMRSI7Ci0JCQlicmVhazsKIAkJY2FzZSBY TE9HX0hFQVAyX01VTFRJX0lOU0VSVDoKIAkJCWlkID0gIk1VTFRJX0lOU0VSVCI7CiAJCQlicmVh azsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmluZGV4IGUyNWRkNmJj MzY2Li5mN2RkYjU2ZmMzMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29k ZS5jCkBAIC00NDksNyArNDQ5LDYgQEAgaGVhcDJfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRl eHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVf T05fQUNDRVNTOgogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX1NDQU46CiAJCWNhc2Ug WExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUDoKLQkJY2FzZSBYTE9HX0hFQVAyX1ZJU0lC TEU6CiAJCWNhc2UgWExPR19IRUFQMl9MT0NLX1VQREFURUQ6CiAJCQlicmVhazsKIAkJZGVmYXVs dDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCBhZmZmYWI3NzEwNi4uZjg2ODFkY2M5 YzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYworKysgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTQ3NSwxMiArNDc1LDEyIEBAIFJl c29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9uSWQgc25hcHNob3RD b25mbGljdEhvcml6b24sCiAJICogSWYgd2UgZ2V0IHBhc3NlZCBJbnZhbGlkVHJhbnNhY3Rpb25J ZCB0aGVuIHdlIGRvIG5vdGhpbmcgKG5vIGNvbmZsaWN0KS4KIAkgKgogCSAqIFRoaXMgY2FuIGhh cHBlbiB3aGVuIHJlcGxheWluZyBhbHJlYWR5LWFwcGxpZWQgV0FMIHJlY29yZHMgYWZ0ZXIgYQot CSAqIHN0YW5kYnkgY3Jhc2ggb3IgcmVzdGFydCwgb3Igd2hlbiByZXBsYXlpbmcgYW4gWExPR19I RUFQMl9WSVNJQkxFCi0JICogcmVjb3JkIHRoYXQgbWFya3MgYXMgZnJvemVuIGEgcGFnZSB3aGlj aCB3YXMgYWxyZWFkeSBhbGwtdmlzaWJsZS4gIEl0J3MKLQkgKiBhbHNvIHF1aXRlIGNvbW1vbiB3 aXRoIHJlY29yZHMgZ2VuZXJhdGVkIGR1cmluZyBpbmRleCBkZWxldGlvbgotCSAqIChvcmlnaW5h bCBleGVjdXRpb24gb2YgdGhlIGRlbGV0aW9uIGNhbiByZWFzb24gdGhhdCBhIHJlY292ZXJ5IGNv bmZsaWN0Ci0JICogd2hpY2ggaXMgc3VmZmljaWVudCBmb3IgdGhlIGRlbGV0aW9uIG9wZXJhdGlv biBtdXN0IHRha2UgcGxhY2UgYmVmb3JlCi0JICogcmVwbGF5IG9mIHRoZSBkZWxldGlvbiByZWNv cmQgaXRzZWxmKS4KKwkgKiBzdGFuZGJ5IGNyYXNoIG9yIHJlc3RhcnQsIG9yIHdoZW4gcmVwbGF5 aW5nIGEgcmVjb3JkIHRoYXQgbWFya3MgYXMKKwkgKiBmcm96ZW4gYSBwYWdlIHdoaWNoIHdhcyBh bHJlYWR5IG1hcmtlZCBhbGwtdmlzaWJsZSBpbiB0aGUgdmlzaWJpbGl0eQorCSAqIG1hcC4gIEl0 J3MgYWxzbyBxdWl0ZSBjb21tb24gd2l0aCByZWNvcmRzIGdlbmVyYXRlZCBkdXJpbmcgaW5kZXgK KwkgKiBkZWxldGlvbiAob3JpZ2luYWwgZXhlY3V0aW9uIG9mIHRoZSBkZWxldGlvbiBjYW4gcmVh c29uIHRoYXQgYSByZWNvdmVyeQorCSAqIGNvbmZsaWN0IHdoaWNoIGlzIHN1ZmZpY2llbnQgZm9y IHRoZSBkZWxldGlvbiBvcGVyYXRpb24gbXVzdCB0YWtlIHBsYWNlCisJICogYmVmb3JlIHJlcGxh eSBvZiB0aGUgZGVsZXRpb24gcmVjb3JkIGl0c2VsZikuCiAJICovCiAJaWYgKCFUcmFuc2FjdGlv bklkSXNWYWxpZChzbmFwc2hvdENvbmZsaWN0SG9yaXpvbikpCiAJCXJldHVybjsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbV94bG9nLmgKaW5kZXggY2UzNTY2YmE5NDkuLjVlZWQ1NjdhOGU1IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtX3hsb2cuaApAQCAtNjAsNyArNjAsNiBAQAogI2RlZmluZSBYTE9HX0hFQVAyX1BS VU5FX09OX0FDQ0VTUwkJMHgxMAogI2RlZmluZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9TQ0FO CTB4MjAKICNkZWZpbmUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUAkweDMwCi0jZGVm aW5lIFhMT0dfSEVBUDJfVklTSUJMRQkJMHg0MAogI2RlZmluZSBYTE9HX0hFQVAyX01VTFRJX0lO U0VSVCAweDUwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTE9DS19VUERBVEVEIDB4NjAKICNkZWZpbmUg WExPR19IRUFQMl9ORVdfQ0lECQkweDcwCkBAIC00NDMsMjAgKzQ0Miw2IEBAIHR5cGVkZWYgc3Ry dWN0IHhsX2hlYXBfaW5wbGFjZQogCiAjZGVmaW5lIE1pblNpemVPZkhlYXBJbnBsYWNlCShvZmZz ZXRvZih4bF9oZWFwX2lucGxhY2UsIG5tc2dzKSArIHNpemVvZihpbnQpKQogCi0vKgotICogVGhp cyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBzZXR0aW5nIGEgdmlzaWJpbGl0eSBtYXAg Yml0Ci0gKgotICogQmFja3VwIGJsayAwOiB2aXNpYmlsaXR5IG1hcCBidWZmZXIKLSAqIEJhY2t1 cCBibGsgMTogaGVhcCBidWZmZXIKLSAqLwotdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF92aXNpYmxl Ci17Ci0JVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKLQl1aW50OAkJZmxh Z3M7Ci19IHhsX2hlYXBfdmlzaWJsZTsKLQotI2RlZmluZSBTaXplT2ZIZWFwVmlzaWJsZSAob2Zm c2V0b2YoeGxfaGVhcF92aXNpYmxlLCBmbGFncykgKyBzaXplb2YodWludDgpKQotCiB0eXBlZGVm IHN0cnVjdCB4bF9oZWFwX25ld19jaWQKIHsKIAkvKgpAQCAtNTAwLDExICs0ODUsNiBAQCBleHRl cm4gdm9pZCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29y ZCk7CiBleHRlcm4gY29uc3QgY2hhciAqaGVhcDJfaWRlbnRpZnkodWludDggaW5mbyk7CiBleHRl cm4gdm9pZCBoZWFwX3hsb2dfbG9naWNhbF9yZXdyaXRlKFhMb2dSZWFkZXJTdGF0ZSAqcik7CiAK LWV4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIg aGVhcF9idWZmZXIsCi0JCQkJCQkJCSAgIEJ1ZmZlciB2bV9idWZmZXIsCi0JCQkJCQkJCSAgIFRy YW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJCQkJCSAgIHVpbnQ4IHZt ZmxhZ3MpOwotCiAvKiBpbiBoZWFwZGVzYy5jLCBzbyBpdCBjYW4gYmUgc2hhcmVkIGJldHdlZW4g ZnJvbnRlbmQvYmFja2VuZCBjb2RlICovCiBleHRlcm4gdm9pZCBoZWFwX3hsb2dfZGVzZXJpYWxp emVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQxNiBmbGFncywKIAkJCQkJCQkJ CQkJCSAgIGludCAqbnBsYW5zLCB4bGhwX2ZyZWV6ZV9wbGFuICoqcGxhbnMsCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3Zpc2liaWxpdHltYXAuaAppbmRleCBhMDE2NmM1YjQxMC4uMDAxYWZiMDM3ZjMgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKKysrIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3Zpc2liaWxpdHltYXAuaApAQCAtMTUsNyArMTUsNiBAQAogI2RlZmluZSBWSVNJQklM SVRZTUFQX0gKIAogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oIgotI2luY2x1 ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYmxvY2suaCIKICNpbmNs dWRlICJzdG9yYWdlL2J1Zi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcmVsZmlsZWxvY2F0b3IuaCIK QEAgLTMyLDE1ICszMSw5IEBAIGV4dGVybiBib29sIHZpc2liaWxpdHltYXBfY2xlYXIoUmVsYXRp b24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1hcF9w aW4oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogCQkJCQkJCSAgQnVmZmVyICp2 bWJ1Zik7CiBleHRlcm4gYm9vbCB2aXNpYmlsaXR5bWFwX3Bpbl9vayhCbG9ja051bWJlciBoZWFw QmxrLCBCdWZmZXIgdm1idWYpOwotZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRp b24gcmVsLAotCQkJCQkJCSAgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCi0J CQkJCQkJICBYTG9nUmVjUHRyIHJlY3B0ciwKLQkJCQkJCQkgIEJ1ZmZlciB2bUJ1ZiwKLQkJCQkJ CQkgIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkJCQkgIHVpbnQ4IGZsYWdzKTsKLWV4 dGVybiB2b2lkIHZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhCbG9ja051bWJlciBoZWFwQmxrLAot CQkJCQkJCQkJIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MsCi0JCQkJCQkJCQkgY29uc3QgUmVs RmlsZUxvY2F0b3IgcmxvY2F0b3IpOworZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1hcF9zZXQoQmxv Y2tOdW1iZXIgaGVhcEJsaywKKwkJCQkJCQkgIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MsCisJ CQkJCQkJICBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRvcik7CiBleHRlcm4gdWludDggdmlz aWJpbGl0eW1hcF9nZXRfc3RhdHVzKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywg QnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gdm9pZCB2aXNpYmlsaXR5bWFwX2NvdW50KFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgKmFsbF92aXNpYmxlLCBCbG9ja051bWJlciAqYWxsX2Zyb3plbik7 CiBleHRlcm4gQmxvY2tOdW1iZXIgdmlzaWJpbGl0eW1hcF9wcmVwYXJlX3RydW5jYXRlKFJlbGF0 aW9uIHJlbCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVm cy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKaW5kZXggODkxNTNi M2NkOWEuLmU1Nzk0Yzg1NTllIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJp bGl0eW1hcGRlZnMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMu aApAQCAtMjEsMTQgKzIxLDUgQEAKICNkZWZpbmUgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOCTB4 MDIKICNkZWZpbmUgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTCTB4MDMJLyogT1Igb2YgYWxsIHZh bGlkIHZpc2liaWxpdHltYXAKIAkJCQkJCQkJCQkJICogZmxhZ3MgYml0cyAqLwotLyoKLSAqIFRv IGRldGVjdCByZWNvdmVyeSBjb25mbGljdHMgZHVyaW5nIGxvZ2ljYWwgZGVjb2Rpbmcgb24gYSBz dGFuZGJ5LCB3ZSBuZWVkCi0gKiB0byBrbm93IGlmIGEgdGFibGUgaXMgYSB1c2VyIGNhdGFsb2cg dGFibGUuIEZvciB0aGF0IHdlIGFkZCBhbiBhZGRpdGlvbmFsCi0gKiBiaXQgaW50byB4bF9oZWFw X3Zpc2libGUuZmxhZ3MsIGluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZS4KLSAqCi0gKiBOQjogVklT SUJJTElUWU1BUF9YTE9HXyogbWF5IG5vdCBiZSBwYXNzZWQgdG8gdmlzaWJpbGl0eW1hcF9zZXQo KS4KLSAqLwotI2RlZmluZSBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19SRUwJMHgwNAotI2Rl ZmluZSBWSVNJQklMSVRZTUFQX1hMT0dfVkFMSURfQklUUwkoVklTSUJJTElUWU1BUF9WQUxJRF9C SVRTIHwgVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMKQogCiAjZW5kaWYJCQkJCQkJLyog VklTSUJJTElUWU1BUERFRlNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBiOWU2 NzFmY2RhOC4uMzA4Y2ZmZjk5OWUgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC00MzMx LDcgKzQzMzEsNiBAQCB4bF9oZWFwX3BydW5lCiB4bF9oZWFwX3Jld3JpdGVfbWFwcGluZwogeGxf aGVhcF90cnVuY2F0ZQogeGxfaGVhcF91cGRhdGUKLXhsX2hlYXBfdmlzaWJsZQogeGxfaW52YWxp ZF9wYWdlCiB4bF9pbnZhbGlkX3BhZ2Vfa2V5CiB4bF9pbnZhbGlkYXRpb25zCi0tIAoyLjQzLjAK Cg== --00000000000050ca310647bb8e6c Content-Type: text/x-patch; charset="US-ASCII"; name="v33-0009-Simplify-heap_page_would_be_all_visible-visibili.patch" Content-Disposition: attachment; filename="v33-0009-Simplify-heap_page_would_be_all_visible-visibili.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk2v2jol8 RnJvbSA2ZmVlNDZmMTE3OTgwNzUxZDVjYTVjNzNhMDhmZTg4MjNkZTUwNDE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE3IERlYyAyMDI1IDEzOjU3OjE2IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzMgMDkvMTZdIFNpbXBsaWZ5IGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSB2 aXNpYmlsaXR5CiBjaGVjawoKaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKCkgZG9lc24n dCBjYXJlIGFib3V0IHRoZSBkaXN0aW5jdGlvbgpiZXR3ZWVuIEhFQVBUVVBMRV9SRUNFTlRMWV9E RUFEIGFuZCBIRUFQVFVQTEVfREVBRCB0dXBsZXMgLS0gYW55IHR1cGxlCnRoYXQgaXMgbm90IEhF QVBUVVBMRV9MSVZFIG1lYW5zIHRoZSBwYWdlIGlzIG5vdCBhbGwtdmlzaWJsZSBhbmQgY2F1c2Vz CnVzIHRvIHJldHVybiBmYWxzZS4KClRoZXJlZm9yZSwgd2UgZG9uJ3QgbmVlZCB0byBjYWxsIEhl YXBUdXBsZVNhdGlzZmllc1ZhY3V1bSgpLCB3aGljaAppbmNsdWRlcyBhbiBleHRyYSBzdGVwIHRv IGRpc3Rpbmd1aXNoIGJldHdlZW4gZGVhZCBhbmQgcmVjZW50bHkgZGVhZAp0dXBsZXMgdXNpbmcg T2xkZXN0WG1pbi4gUmVwbGFjZSBpdCB3aXRoIHRoZSBtb3JlIG1pbmltYWwKSGVhcFR1cGxlU2F0 aXNmaWVzVmFjdXVtSG9yaXpvbigpLgoKVGhpcyBoYXMgdGhlIGFkZGVkIGJlbmVmaXQgb2YgbWFr aW5nIGl0IGVhc2llciB0byByZXBsYWNlIHVzZXMgb2YKT2xkZXN0WG1pbiBpbiBoZWFwX3BhZ2Vf d291bGRfYmVfYWxsX3Zpc2libGUoKSBpbiB0aGUgZnV0dXJlLgoKQXV0aG9yOiBNZWxhbmllIFBs YWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJl c2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS9DQUxkU1NQanZoR1hpaFRfOWYtR0phYllVJTNEX1BqckZEVXhZYVVSdVRiZkx5UU02VEVy ZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jIHwgOSArKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDRkN2UxNjM2 NTI2Li40YjJhMjZmNzMzNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAt MzU3MCw2ICszNTcwLDcgQEAgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGJ1ZiwKIAl7CiAJCUl0ZW1JZAkJaXRlbWlkOwogCQlIZWFwVHVwbGVEYXRh IHR1cGxlOworCQlUcmFuc2FjdGlvbklkIGRlYWRfYWZ0ZXI7CiAKIAkJLyoKIAkJICogU2V0IHRo ZSBvZmZzZXQgbnVtYmVyIHNvIHRoYXQgd2UgY2FuIGRpc3BsYXkgaXQgYWxvbmcgd2l0aCBhbnkK QEAgLTM2MDksMTIgKzM2MTAsMTQgQEAgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJl bGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAogCQkvKiBWaXNpYmlsaXR5IGNoZWNrcyBtYXkgZG8g SU8gb3IgYWxsb2NhdGUgbWVtb3J5ICovCiAJCUFzc2VydChDcml0U2VjdGlvbkNvdW50ID09IDAp OwotCQlzd2l0Y2ggKEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bSgmdHVwbGUsIE9sZGVzdFhtaW4s IGJ1ZikpCisJCXN3aXRjaCAoSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtSG9yaXpvbigmdHVwbGUs IGJ1ZiwgJmRlYWRfYWZ0ZXIpKQogCQl7CiAJCQljYXNlIEhFQVBUVVBMRV9MSVZFOgogCQkJCXsK IAkJCQkJVHJhbnNhY3Rpb25JZCB4bWluOwogCisJCQkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElz VmFsaWQoZGVhZF9hZnRlcikpOworCiAJCQkJCS8qIENoZWNrIGNvbW1lbnRzIGluIGxhenlfc2Nh bl9wcnVuZS4gKi8KIAkJCQkJaWYgKCFIZWFwVHVwbGVIZWFkZXJYbWluQ29tbWl0dGVkKHR1cGxl LnRfZGF0YSkpCiAJCQkJCXsKQEAgLTM2NDcsOCArMzY1MCwxMCBAQCBoZWFwX3BhZ2Vfd291bGRf YmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCX0KIAkJCQlicmVh azsKIAotCQkJY2FzZSBIRUFQVFVQTEVfREVBRDoKIAkJCWNhc2UgSEVBUFRVUExFX1JFQ0VOVExZ X0RFQUQ6CisJCQkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYWRfYWZ0ZXIpKTsKKwkJ CQkvKiBGQUxMVEhST1VHSCAqLworCQkJY2FzZSBIRUFQVFVQTEVfREVBRDoKIAkJCWNhc2UgSEVB UFRVUExFX0lOU0VSVF9JTl9QUk9HUkVTUzoKIAkJCWNhc2UgSEVBUFRVUExFX0RFTEVURV9JTl9Q Uk9HUkVTUzoKIAkJCQl7Ci0tIAoyLjQzLjAKCg== --00000000000050ca310647bb8e6c Content-Type: text/x-patch; charset="US-ASCII"; name="v33-0010-Remove-table_scan_analyze_next_tuple-unneeded-pa.patch" Content-Disposition: attachment; filename="v33-0010-Remove-table_scan_analyze_next_tuple-unneeded-pa.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk2v2mf09 RnJvbSA0NWZjZTIzYmNmZmEzOTcwMWZjMjVjY2Q2N2FkNDU1ZWRmYjk5YTBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDIyIERlYyAyMDI1IDEwOjQ2OjQ1IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzMgMTAvMTZdIFJlbW92ZSB0YWJsZV9zY2FuX2FuYWx5emVfbmV4dF90dXBsZSB1bm5l ZWRlZAogcGFyYW1ldGVyIE9sZGVzdFhtaW4KCmhlYXBhbV9zY2FuX2FuYWx5emVfbmV4dF90dXBs ZSgpIGRvZXNuJ3QgZGlzdGluZ3Vpc2ggYmV0d2VlbiBkZWFkIGFuZApyZWNlbnRseSBkZWFkIHR1 cGxlcyB3aGVuIGNvdW50aW5nIHRoZW0sIHNvIGl0IGRvZXNuJ3QgbmVlZCBPbGRlc3RYbWluLgoK TG9va2luZyBhdCBvdGhlciB0YWJsZSBBTXMgaW1wbGVtZW50aW5nIHRhYmxlX3NjYW5fYW5hbHl6 ZV9uZXh0X3R1cGxlKCksCml0IGFwcGVhcnMgbW9zdCBkbyBub3QgdXNlIE9sZGVzdFhtaW4gZWl0 aGVyLgoKU3VnZ2VzdGVkLWJ5OiBLaXJpbGwgUmVzaGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29t PgpSZXZpZXdlZC1ieTogS2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KRGlz Y3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUxkU1NQanZoR1hpaFRfOWYtR0phYllVJTNE X1BqckZEVXhZYVVSdVRiZkx5UU02VEVyZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyB8IDEzICsrKysrKysrKy0tLS0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyAgICAgICAgICAgfCAgNiArLS0tLS0KIHNyYy9pbmNs dWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgfCAgNSArKy0tLQogMyBmaWxlcyBjaGFu Z2VkLCAxMiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCAwOWE0NTZlOTk2Ni4uZGYyNDQwZTgyYTcgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMTAyNiw3ICsxMDI2 LDcgQEAgaGVhcGFtX3NjYW5fYW5hbHl6ZV9uZXh0X2Jsb2NrKFRhYmxlU2NhbkRlc2Mgc2Nhbiwg UmVhZFN0cmVhbSAqc3RyZWFtKQogfQogCiBzdGF0aWMgYm9vbAotaGVhcGFtX3NjYW5fYW5hbHl6 ZV9uZXh0X3R1cGxlKFRhYmxlU2NhbkRlc2Mgc2NhbiwgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWlu LAoraGVhcGFtX3NjYW5fYW5hbHl6ZV9uZXh0X3R1cGxlKFRhYmxlU2NhbkRlc2Mgc2NhbiwKIAkJ CQkJCQkgICBkb3VibGUgKmxpdmVyb3dzLCBkb3VibGUgKmRlYWRyb3dzLAogCQkJCQkJCSAgIFR1 cGxlVGFibGVTbG90ICpzbG90KQogewpAQCAtMTA0Nyw2ICsxMDQ3LDcgQEAgaGVhcGFtX3NjYW5f YW5hbHl6ZV9uZXh0X3R1cGxlKFRhYmxlU2NhbkRlc2Mgc2NhbiwgVHJhbnNhY3Rpb25JZCBPbGRl c3RYbWluLAogCQlJdGVtSWQJCWl0ZW1pZDsKIAkJSGVhcFR1cGxlCXRhcmd0dXBsZSA9ICZoc2xv dC0+YmFzZS50dXBkYXRhOwogCQlib29sCQlzYW1wbGVfaXQgPSBmYWxzZTsKKwkJVHJhbnNhY3Rp b25JZCBkZWFkX2FmdGVyOwogCiAJCWl0ZW1pZCA9IFBhZ2VHZXRJdGVtSWQodGFyZ3BhZ2UsIGhz Y2FuLT5yc19jaW5kZXgpOwogCkBAIC0xMDY5LDE2ICsxMDcwLDIwIEBAIGhlYXBhbV9zY2FuX2Fu YWx5emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sIFRyYW5zYWN0aW9uSWQgT2xkZXN0 WG1pbiwKIAkJdGFyZ3R1cGxlLT50X2RhdGEgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRl bSh0YXJncGFnZSwgaXRlbWlkKTsKIAkJdGFyZ3R1cGxlLT50X2xlbiA9IEl0ZW1JZEdldExlbmd0 aChpdGVtaWQpOwogCi0JCXN3aXRjaCAoSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKHRhcmd0dXBs ZSwgT2xkZXN0WG1pbiwKLQkJCQkJCQkJCQkgaHNjYW4tPnJzX2NidWYpKQorCQlzd2l0Y2ggKEhl YXBUdXBsZVNhdGlzZmllc1ZhY3V1bUhvcml6b24odGFyZ3R1cGxlLAorCQkJCQkJCQkJCQkJaHNj YW4tPnJzX2NidWYsCisJCQkJCQkJCQkJCQkmZGVhZF9hZnRlcikpCiAJCXsKIAkJCWNhc2UgSEVB UFRVUExFX0xJVkU6CiAJCQkJc2FtcGxlX2l0ID0gdHJ1ZTsKIAkJCQkqbGl2ZXJvd3MgKz0gMTsK IAkJCQlicmVhazsKIAotCQkJY2FzZSBIRUFQVFVQTEVfREVBRDoKIAkJCWNhc2UgSEVBUFRVUExF X1JFQ0VOVExZX0RFQUQ6CisJCQkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYWRfYWZ0 ZXIpKTsKKwkJCQkvKiBGQUxMVEhST1VHSCAqLworCisJCQljYXNlIEhFQVBUVVBMRV9ERUFEOgog CQkJCS8qIENvdW50IGRlYWQgYW5kIHJlY2VudGx5LWRlYWQgcm93cyAqLwogCQkJCSpkZWFkcm93 cyArPSAxOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5h bHl6ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCmluZGV4IGE0ODM0MjQxNTJj Li41M2FkYWM5MTM5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwpAQCAtMTIxMyw3ICsxMjEzLDYg QEAgYWNxdWlyZV9zYW1wbGVfcm93cyhSZWxhdGlvbiBvbmVyZWwsIGludCBlbGV2ZWwsCiAJZG91 YmxlCQlyb3dzdG9za2lwID0gLTE7CS8qIC0xIG1lYW5zIG5vdCBzZXQgeWV0ICovCiAJdWludDMy CQlyYW5kc2VlZDsJCS8qIFNlZWQgZm9yIGJsb2NrIHNhbXBsZXIocykgKi8KIAlCbG9ja051bWJl ciB0b3RhbGJsb2NrczsKLQlUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW47CiAJQmxvY2tTYW1wbGVy RGF0YSBiczsKIAlSZXNlcnZvaXJTdGF0ZURhdGEgcnN0YXRlOwogCVR1cGxlVGFibGVTbG90ICpz bG90OwpAQCAtMTIyNiw5ICsxMjI1LDYgQEAgYWNxdWlyZV9zYW1wbGVfcm93cyhSZWxhdGlvbiBv bmVyZWwsIGludCBlbGV2ZWwsCiAKIAl0b3RhbGJsb2NrcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZC bG9ja3Mob25lcmVsKTsKIAotCS8qIE5lZWQgYSBjdXRvZmYgeG1pbiBmb3IgSGVhcFR1cGxlU2F0 aXNmaWVzVmFjdXVtICovCi0JT2xkZXN0WG1pbiA9IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5z YWN0aW9uSWQob25lcmVsKTsKLQogCS8qIFByZXBhcmUgZm9yIHNhbXBsaW5nIGJsb2NrIG51bWJl cnMgKi8KIAlyYW5kc2VlZCA9IHBnX3BybmdfdWludDMyKCZwZ19nbG9iYWxfcHJuZ19zdGF0ZSk7 CiAJbmJsb2NrcyA9IEJsb2NrU2FtcGxlcl9Jbml0KCZicywgdG90YWxibG9ja3MsIHRhcmdyb3dz LCByYW5kc2VlZCk7CkBAIC0xMjYxLDcgKzEyNTcsNyBAQCBhY3F1aXJlX3NhbXBsZV9yb3dzKFJl bGF0aW9uIG9uZXJlbCwgaW50IGVsZXZlbCwKIAl7CiAJCXZhY3V1bV9kZWxheV9wb2ludCh0cnVl KTsKIAotCQl3aGlsZSAodGFibGVfc2Nhbl9hbmFseXplX25leHRfdHVwbGUoc2NhbiwgT2xkZXN0 WG1pbiwgJmxpdmVyb3dzLCAmZGVhZHJvd3MsIHNsb3QpKQorCQl3aGlsZSAodGFibGVfc2Nhbl9h bmFseXplX25leHRfdHVwbGUoc2NhbiwgJmxpdmVyb3dzLCAmZGVhZHJvd3MsIHNsb3QpKQogCQl7 CiAJCQkvKgogCQkJICogVGhlIGZpcnN0IHRhcmdyb3dzIHNhbXBsZSByb3dzIGFyZSBzaW1wbHkg Y29waWVkIGludG8gdGhlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCBlMmVjNTI4OWQ0ZC4uYzlmYTlm MjU5Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtNjgzLDcgKzY4Myw2IEBAIHR5cGVkZWYgc3Ry dWN0IFRhYmxlQW1Sb3V0aW5lCiAJICogY2FsbGJhY2spLgogCSAqLwogCWJvb2wJCSgqc2Nhbl9h bmFseXplX25leHRfdHVwbGUpIChUYWJsZVNjYW5EZXNjIHNjYW4sCi0JCQkJCQkJCQkJCVRyYW5z YWN0aW9uSWQgT2xkZXN0WG1pbiwKIAkJCQkJCQkJCQkJZG91YmxlICpsaXZlcm93cywKIAkJCQkJ CQkJCQkJZG91YmxlICpkZWFkcm93cywKIAkJCQkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKnNsb3Qp OwpAQCAtMTcxNCwxMSArMTcxMywxMSBAQCB0YWJsZV9zY2FuX2FuYWx5emVfbmV4dF9ibG9jayhU YWJsZVNjYW5EZXNjIHNjYW4sIFJlYWRTdHJlYW0gKnN0cmVhbSkKICAqIHR1cGxlcy4KICAqLwog c3RhdGljIGlubGluZSBib29sCi10YWJsZV9zY2FuX2FuYWx5emVfbmV4dF90dXBsZShUYWJsZVNj YW5EZXNjIHNjYW4sIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKK3RhYmxlX3NjYW5fYW5hbHl6 ZV9uZXh0X3R1cGxlKFRhYmxlU2NhbkRlc2Mgc2NhbiwKIAkJCQkJCQkgIGRvdWJsZSAqbGl2ZXJv d3MsIGRvdWJsZSAqZGVhZHJvd3MsCiAJCQkJCQkJICBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKIHsK LQlyZXR1cm4gc2Nhbi0+cnNfcmQtPnJkX3RhYmxlYW0tPnNjYW5fYW5hbHl6ZV9uZXh0X3R1cGxl KHNjYW4sIE9sZGVzdFhtaW4sCisJcmV0dXJuIHNjYW4tPnJzX3JkLT5yZF90YWJsZWFtLT5zY2Fu X2FuYWx5emVfbmV4dF90dXBsZShzY2FuLAogCQkJCQkJCQkJCQkJCQkJbGl2ZXJvd3MsIGRlYWRy b3dzLAogCQkJCQkJCQkJCQkJCQkJc2xvdCk7CiB9Ci0tIAoyLjQzLjAKCg== --00000000000050ca310647bb8e6c Content-Type: text/x-patch; charset="UTF-8"; name="v33-0011-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Disposition: attachment; filename="v33-0011-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk2v2p1w10 RnJvbSA4MzRjZTg5NmEzY2MyZDM4Yjk1MDZkYjcwMjg2MzE4MmMwYjNlMTY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE3IERlYyAyMDI1IDE2OjUxOjA1IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MzMgMTEvMTZdIFVzZSBHbG9iYWxWaXNTdGF0ZSBpbiB2YWN1dW0gdG8gZGV0ZXJtaW5l IHBhZ2UKIGxldmVsIHZpc2liaWxpdHkKCkR1cmluZyB2YWN1dW0ncyBmaXJzdCBhbmQgdGhpcmQg cGhhc2VzLCB3ZSBleGFtaW5lIHR1cGxlcycgdmlzaWJpbGl0eQp0byBkZXRlcm1pbmUgaWYgd2Ug Y2FuIHNldCB0aGUgcGFnZSBhbGwtdmlzaWJsZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCgpQcmV2 aW91c2x5LCB0aGlzIGNoZWNrIGNvbXBhcmVkIHR1cGxlIHhtaW5zIGFnYWluc3QgYSBzaW5nbGUg WElEIGNob3NlbiBhdAp0aGUgc3RhcnQgb2YgdmFjdXVtIChPbGRlc3RYbWluKS4gV2Ugbm93IHVz ZSBHbG9iYWxWaXNTdGF0ZSwgd2hpY2ggYWxzbwplbmFibGVzIGZ1dHVyZSB3b3JrIHRvIHNldCB0 aGUgVk0gZHVyaW5nIG9uLWFjY2VzcyBwcnVuaW5nLCBzaW5jZSBvcmRpbmFyeQpxdWVyaWVzIGhh dmUgYWNjZXNzIHRvIEdsb2JhbFZpc1N0YXRlIGJ1dCBub3QgT2xkZXN0WG1pbi4KClRoaXMgYWxz byBiZW5lZml0cyB2YWN1dW06IGluIHNvbWUgY2FzZXMsIEdsb2JhbFZpc1N0YXRlIG1heSBhZHZh bmNlCmR1cmluZyBhIHZhY3V1bSwgYWxsb3dpbmcgbW9yZSBwYWdlcyB0byBiZWNvbWUgY29uc2lk ZXJlZCBhbGwtdmlzaWJsZS4KQW5kLCBpbiB0aGUgZnV0dXJlLCB3ZSBjb3VsZCBlYXNpbHkgYWRk IGEgaGV1cmlzdGljIHRvIHVwZGF0ZQpHbG9iYWxWaXNTdGF0ZSBtb3JlIGZyZXF1ZW50bHkgZHVy aW5nIHZhY3V1bXMgb2YgbGFyZ2UgdGFibGVzLgoKT2xkZXN0WG1pbiBpcyBzdGlsbCB1c2VkIGZv ciBmcmVlemluZyBhbmQgYXMgYSBiYWNrc3RvcCB0byBlbnN1cmUgd2UKZG9uJ3QgZnJlZXplIGEg ZGVhZCB0dXBsZSB0aGF0IHdhc24ndCB5ZXQgcHJ1bmFibGUgYWNjb3JkaW5nIHRvCkdsb2JhbFZp c1N0YXRlIGluIHRoZSByYXJlIG9jY3VycmVuY2VzIHdoZXJlIEdsb2JhbFZpc1N0YXRlIG1vdmVz CmJhY2t3YXJkcy4KCkJlY2F1c2UgY29tcGFyaW5nIGEgdHJhbnNhY3Rpb24gSUQgYWdhaW5zdCBH bG9iYWxWaXNTdGF0ZSBpcyBtb3JlCmV4cGVuc2l2ZSB0aGFuIGNvbXBhcmluZyBhZ2FpbnN0IGEg c2luZ2xlIFhJRCwgd2UgZGVmZXIgdGhpcyBjaGVjayB1bnRpbAphZnRlciBzY2FubmluZyBhbGwg dHVwbGVzIG9uIHRoZSBwYWdlLiBJZiB2aXNpYmlsaXR5X2N1dG9mZl94aWQgd2FzCm1haW50YWlu ZWQsIHdlIHBlcmZvcm0gdGhlIEdsb2JhbFZpc1N0YXRlIGNoZWNrIG9ubHkgb25jZSBwZXIgcGFn ZS4KVGhpcyBpcyBzYWZlIGJlY2F1c2UgdmlzaWJpbGl0eV9jdXRvZmZfeGlkIHJlY29yZHMgdGhl IG5ld2VzdCB4bWluIG9uCnRoZSBwYWdlOyBpZiBpdCBpcyBnbG9iYWxseSB2aXNpYmxlLCB0aGVu IHRoZSBlbnRpcmUgcGFnZSBpcyBhbGwtdmlzaWJsZS4KClRoaXMgYXBwcm9hY2ggbWF5IHJlc3Vs dCBpbiBleGFtaW5pbmcgbW9yZSB0dXBsZSB4bWlucyB0aGFuIGJlZm9yZSwKc2luY2Ugd2l0aCBP bGRlc3RYbWluIHdlIGNvdWxkIHNvbWV0aW1lcyBydWxlIG91dCB0aGUgcGFnZSBiZWluZwphbGwt dmlzaWJsZSBlYXJsaWVyLiBIb3dldmVyLCBwcm9maWxpbmcgc2hvd3MgdGhlIGFkZGl0aW9uYWwg Y29zdCBpcyBub3QKc2lnbmlmaWNhbnQuCgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8YW5k cmVzQGFuYXJhemVsLmRlPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWls LmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jIHwg MjIgKysrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgICAgICAg IHwgNTMgKysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgICAgICAgIHwgMzggKysrKysrKysrKy0tLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmggICAgICAgICAgICAgICAgIHwgIDQgKy0KIDQgZmlsZXMgY2hhbmdlZCwgNzYgaW5z ZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbV92aXNpYmlsaXR5LmMKaW5kZXggMDVlNzBiN2Q5MmEuLmI0NDg5MDIwNjA5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKQEAgLTEwNTMsNiArMTA1 MywyOCBAQCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0oSGVhcFR1cGxlIGh0dXAsIFRyYW5zYWN0 aW9uSWQgT2xkZXN0WG1pbiwKIAlyZXR1cm4gcmVzOwogfQogCisvKgorICogV3JhcHBlciBhcm91 bmQgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgZm9yIHVzZSB3aGVuIGV4YW1pbmluZyBs aXZlCisgKiB0dXBsZXMuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gWElEIG1heSBiZSBjb25z aWRlcmVkIHJ1bm5pbmcgYnkgYXQgbGVhc3QKKyAqIG9uZSBzbmFwc2hvdC4KKyAqCisgKiBUaGlz IGZ1bmN0aW9uIGFsb25lIGlzIGluc3VmZmljaWVudCB0byBkZXRlcm1pbmUgdHVwbGUgdmlzaWJp bGl0eTsgY2FsbGVycworICogbXVzdCBhbHNvIGNvbnNpZGVyIHRoZSBYSUQncyBjb21taXQgc3Rh dHVzLiBJdHMgcHVycG9zZSBpcyBwdXJlbHkgc2VtYW50aWM6CisgKiB3aGVuIGFwcGxpZWQgdG8g bGl2ZSB0dXBsZXMsIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCgpIGlzIGNoZWNraW5nCisg KiB3aGV0aGVyIHRoZSBpbnNlcnRpbmcgdHJhbnNhY3Rpb24gaXMgc3RpbGwgY29uc2lkZXJlZCBy dW5uaW5nLCBub3Qgd2hldGhlcgorICogdGhlIHR1cGxlIGlzIHJlbW92YWJsZS4gTGl2ZSB0dXBs ZXMgYXJlLCBieSBkZWZpbml0aW9uLCBub3QgcmVtb3ZhYmxlLCBidXQKKyAqIHRoZSBzbmFwc2hv dCBjcml0ZXJpYSBmb3Ig4oCcdHJhbnNhY3Rpb24gc3RpbGwgcnVubmluZ+KAnSBhcmUgaWRlbnRp Y2FsIHRvCisgKiB0aG9zZSB1c2VkIGZvciByZW1vdmFsIFhJRHMuCisgKgorICogU2VlIHRoZSBj b21tZW50IGFib3ZlIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVtGdWxsXVhpZCgpIGZvciBkZXRh aWxzIG9uIHRoZQorICogcmVxdWlyZWQgcHJlY29uZGl0aW9ucyBmb3IgY2FsbGluZyB0aGlzIGZ1 bmN0aW9uLgorICovCitib29sCitHbG9iYWxWaXNUZXN0WGlkTWF5YmVSdW5uaW5nKEdsb2JhbFZp c1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJcmV0dXJuICFHbG9iYWxWaXNU ZXN0SXNSZW1vdmFibGVYaWQoc3RhdGUsIHhpZCk7Cit9CisKIC8qCiAgKiBXb3JrIGhvcnNlIGZv ciBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0gYW5kIHNpbWlsYXIgcm91dGluZXMuCiAgKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBjYWMwOWRmZjMxZi4uZGEwOWM3NjliNGQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC00NjEsMTEgKzQ2MSwxMiBAQCBw cnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAogCS8qCiAJICog VGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSwgY29t bWl0dGVkIHR1cGxlcwotCSAqIG9sZGVyIHRoYW4gT2xkZXN0WG1pbiBvbiB0aGUgcGFnZS4gVGhp cyBmaWVsZCBpcyBvbmx5IGtlcHQgdXAtdG8tZGF0ZQotCSAqIGlmIHRoZSBwYWdlIGlzIGFsbC12 aXNpYmxlLiBBcyBzb29uIGFzIGEgdHVwbGUgaXMgZW5jb3VudGVyZWQgdGhhdCBpcwotCSAqIG5v dCB2aXNpYmxlIHRvIGFsbCwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWluZWQuIEFzIGxvbmcgYXMg aXQgaXMKLQkgKiBtYWludGFpbmVkLCBpdCBjYW4gYmUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHNu YXBzaG90IGNvbmZsaWN0IGhvcml6b24KLQkgKiB3aGVuIHVwZGF0aW5nIHRoZSBWTSBhbmQvb3Ig ZnJlZXppbmcgYWxsIHRoZSB0dXBsZXMgb24gdGhlIHBhZ2UuCisJICogb24gdGhlIHBhZ2Ugb2xk ZXIgdGhhbiB0aGUgdmlzaWJpbGl0eSBob3Jpem9uIHJlcHJlc2VudGVkIGluIHRoZQorCSAqIEds b2JhbFZpc1N0YXRlLiBUaGlzIGZpZWxkIGlzIG9ubHkga2VwdCB1cC10by1kYXRlIGlmIHRoZSBw YWdlIGlzCisJICogYWxsLXZpc2libGUuIEFzIHNvb24gYXMgYSB0dXBsZSBpcyBlbmNvdW50ZXJl ZCB0aGF0IGlzIG5vdCB2aXNpYmxlIHRvCisJICogYWxsLCB0aGlzIGZpZWxkIGlzIHVubWFpbnRh aW5lZC4gQXMgbG9uZyBhcyBpdCBpcyBtYWludGFpbmVkLCBpdCBjYW4gYmUKKwkgKiB1c2VkIHRv IGNhbGN1bGF0ZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHVwZGF0aW5nIHRo ZSBWTQorCSAqIGFuZC9vciBmcmVlemluZyBhbGwgdGhlIHR1cGxlcyBvbiB0aGUgcGFnZS4KIAkg Ki8KIAlwcnN0YXRlLT52aXNpYmlsaXR5X2N1dG9mZl94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIH0KQEAgLTEwMDgsMTQgKzEwMDksMTQgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFBydW5l U3RhdGUgKnByc3RhdGUsCiAgKi8KIHN0YXRpYyBib29sCiBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2li bGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0 WG1pbiwKKwkJCQkJCSBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCSBib29sICphbGxf ZnJvemVuLAogCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKIAkJ CQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQogewogCiAJcmV0dXJuIGhlYXBfcGFn ZV93b3VsZF9iZV9hbGxfdmlzaWJsZShyZWwsIGJ1ZiwKLQkJCQkJCQkJCQkgIE9sZGVzdFhtaW4s CisJCQkJCQkJCQkJICB2aXN0ZXN0LAogCQkJCQkJCQkJCSAgTlVMTCwgMCwKIAkJCQkJCQkJCQkg IGFsbF9mcm96ZW4sCiAJCQkJCQkJCQkJICB2aXNpYmlsaXR5X2N1dG9mZl94aWQsCkBAIC0xMTAy LDYgKzExMDMsMTYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJh bXMgKnBhcmFtcywKIAlwcnVuZV9mcmVlemVfcGxhbihSZWxhdGlvbkdldFJlbGlkKHBhcmFtcy0+ cmVsYXRpb24pLAogCQkJCQkgIGJ1ZmZlciwgJnByc3RhdGUsIG9mZl9sb2MpOwogCisJLyoKKwkg KiBBZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UsIGlmIHRo ZSBuZXdlc3QgeG1pbgorCSAqIGFtb25nc3QgdGhlbSBtYXkgYmUgY29uc2lkZXJlZCBydW5uaW5n IGJ5IGFueSBzbmFwc2hvdCwgdGhlIHBhZ2UgY2Fubm90CisJICogYmUgYWxsLXZpc2libGUuCisJ ICovCisJaWYgKHByc3RhdGUuYWxsX3Zpc2libGUgJiYKKwkJVHJhbnNhY3Rpb25JZElzTm9ybWFs KHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkKSAmJgorCQlHbG9iYWxWaXNUZXN0WGlkTWF5 YmVSdW5uaW5nKHByc3RhdGUudmlzdGVzdCwgcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQp KQorCQlwcnN0YXRlLmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CisK IAkvKgogCSAqIElmIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCwgY2FsbGluZyBoZWFwX3BydW5lX3Nh dGlzZmllc192YWN1dW0oKSB3aGlsZQogCSAqIGNoZWNraW5nIHR1cGxlIHZpc2liaWxpdHkgaW5m b3JtYXRpb24gaW4gcHJ1bmVfZnJlZXplX3BsYW4oKSBtYXkgaGF2ZQpAQCAtMTI4MywxMCArMTI5 NCw5IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJh bXMsCiAJCWJvb2wJCWRlYnVnX2FsbF9mcm96ZW47CiAKIAkJQXNzZXJ0KHByc3RhdGUubHBkZWFk X2l0ZW1zID09IDApOwotCQlBc3NlcnQocHJzdGF0ZS5jdXRvZmZzKTsKIAogCQlBc3NlcnQoaGVh cF9wYWdlX2lzX2FsbF92aXNpYmxlKHBhcmFtcy0+cmVsYXRpb24sIGJ1ZmZlciwKLQkJCQkJCQkJ CQlwcnN0YXRlLmN1dG9mZnMtPk9sZGVzdFhtaW4sCisJCQkJCQkJCQkJcHJzdGF0ZS52aXN0ZXN0 LAogCQkJCQkJCQkJCSZkZWJ1Z19hbGxfZnJvemVuLAogCQkJCQkJCQkJCSZkZWJ1Z19jdXRvZmYs IG9mZl9sb2MpKTsKIApAQCAtMTgwNywyOCArMTgxNywxNSBAQCBoZWFwX3BydW5lX3JlY29yZF91 bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0 TnVtYgogCQkJCX0KIAogCQkJCS8qCi0JCQkJICogVGhlIGluc2VydGVyIGRlZmluaXRlbHkgY29t bWl0dGVkLiAgQnV0IGlzIGl0IG9sZCBlbm91Z2gKLQkJCQkgKiB0aGF0IGV2ZXJ5b25lIHNlZXMg aXQgYXMgY29tbWl0dGVkPyAgQSBGcm96ZW5UcmFuc2FjdGlvbklkCi0JCQkJICogaXMgc2VlbiBh cyBjb21taXR0ZWQgdG8gZXZlcnlvbmUuICBPdGhlcndpc2UsIHdlIGNoZWNrIGlmCi0JCQkJICog dGhlcmUgaXMgYSBzbmFwc2hvdCB0aGF0IGNvbnNpZGVycyB0aGlzIHhpZCB0byBzdGlsbCBiZQot CQkJCSAqIHJ1bm5pbmcsIGFuZCBpZiBzbywgd2UgZG9uJ3QgY29uc2lkZXIgdGhlIHBhZ2UgYWxs LXZpc2libGUuCisJCQkJICogVGhlIGluc2VydGVyIGRlZmluaXRlbHkgY29tbWl0dGVkLiBCdXQg d2UgZG9uJ3Qga25vdyBpZiBpdAorCQkJCSAqIGlzIG9sZCBlbm91Z2ggdGhhdCBldmVyeW9uZSBz ZWVzIGl0IGFzIGNvbW1pdHRlZC4gTGF0ZXIsCisJCQkJICogYWZ0ZXIgcHJvY2Vzc2luZyBhbGwg dGhlIHR1cGxlcyBvbiB0aGUgcGFnZSwgd2UnbGwgY2hlY2sgaWYKKwkJCQkgKiB0aGVyZSBpcyBh bnkgc25hcHNob3QgdGhhdCBzdGlsbCBjb25zaWRlcnMgdGhlIG5ld2VzdCB4aWQKKwkJCQkgKiBv biB0aGUgcGFnZSB0byBiZSBydW5uaW5nLiBJZiBzbywgd2UgZG9uJ3QgY29uc2lkZXIgdGhlCisJ CQkJICogcGFnZSBhbGwtdmlzaWJsZS4KIAkJCQkgKi8KIAkJCQl4bWluID0gSGVhcFR1cGxlSGVh ZGVyR2V0WG1pbihodHVwKTsKIAotCQkJCS8qCi0JCQkJICogRm9yIG5vdyBhbHdheXMgdXNlIHBy c3RhdGUtPmN1dG9mZnMgZm9yIHRoaXMgdGVzdCwgYmVjYXVzZQotCQkJCSAqIHdlIG9ubHkgdXBk YXRlICdhbGxfdmlzaWJsZScgYW5kICdhbGxfZnJvemVuJyB3aGVuIGZyZWV6aW5nCi0JCQkJICog aXMgcmVxdWVzdGVkLiBXZSBjb3VsZCB1c2UgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkCi0J CQkJICogaW5zdGVhZCwgaWYgYSBub24tZnJlZXppbmcgY2FsbGVyIHdhbnRlZCB0byBzZXQgdGhl IFZNIGJpdC4KLQkJCQkgKi8KLQkJCQlBc3NlcnQocHJzdGF0ZS0+Y3V0b2Zmcyk7Ci0JCQkJaWYg KCFUcmFuc2FjdGlvbklkUHJlY2VkZXMoeG1pbiwgcHJzdGF0ZS0+Y3V0b2Zmcy0+T2xkZXN0WG1p bikpCi0JCQkJewotCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOwotCQkJCQlwcnN0 YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7Ci0JCQkJCWJyZWFrOwotCQkJCX0KLQogCQkJCS8qIFRy YWNrIG5ld2VzdCB4bWluIG9uIHBhZ2UuICovCiAJCQkJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dz KHhtaW4sIHByc3RhdGUtPnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkgJiYKIAkJCQkJVHJhbnNhY3Rp b25JZElzTm9ybWFsKHhtaW4pKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4 IDRiMmEyNmY3MzM2Li5jOTdhZDJhOTMxYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYwpAQCAtMjc1NCw3ICsyNzU0LDcgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3Rh dGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJICogZG9uZSBv dXRzaWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uLgogCSAqLwogCWlmIChoZWFwX3BhZ2Vfd291bGRf YmVfYWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZmZlciwKLQkJCQkJCQkJCSAgIHZhY3JlbC0+ Y3V0b2Zmcy5PbGRlc3RYbWluLAorCQkJCQkJCQkJICAgdmFjcmVsLT52aXN0ZXN0LAogCQkJCQkJ CQkJICAgZGVhZG9mZnNldHMsIG51bV9vZmZzZXRzLAogCQkJCQkJCQkJICAgJmFsbF9mcm96ZW4s ICZ2aXNpYmlsaXR5X2N1dG9mZl94aWQsCiAJCQkJCQkJCQkgICAmdmFjcmVsLT5vZmZudW0pKQpA QCAtMzUxOSw3ICszNTE5LDcgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3Jl bCkKICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZSBvdGhlciB0aGFu IHRoZSBwcm92aWRlZAogICogZGVhZG9mZnNldHMgYW5kIGZhbHNlIG90aGVyd2lzZS4KICAqCi0g KiBPbGRlc3RYbWluIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCisgKiB2aXN0ZXN0 IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCiAgKgogICogT3V0cHV0IHBhcmFtZXRl cnM6CiAgKgpAQCAtMzUzNSw3ICszNTM1LDcgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3Rh dGUgKnZhY3JlbCkKICAqLwogYm9vbAogaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJl bGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFht aW4sCisJCQkJCQkJICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkJICAgT2Zmc2V0 TnVtYmVyICpkZWFkb2Zmc2V0cywKIAkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAogCQkJCQkJ CSAgIGJvb2wgKmFsbF9mcm96ZW4sCkBAIC0zNjE4LDcgKzM2MTgsNyBAQCBoZWFwX3BhZ2Vfd291 bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCiAJCQkJCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRlcikpOwogCi0JCQkJCS8qIENoZWNrIGNv bW1lbnRzIGluIGxhenlfc2Nhbl9wcnVuZS4gKi8KKwkJCQkJLyogQ2hlY2sgaGVhcF9wcnVuZV9y ZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbCBjb21tZW50cyAqLwogCQkJCQlpZiAoIUhlYXBUdXBs ZUhlYWRlclhtaW5Db21taXR0ZWQodHVwbGUudF9kYXRhKSkKIAkJCQkJewogCQkJCQkJYWxsX3Zp c2libGUgPSBmYWxzZTsKQEAgLTM2MjcsMTYgKzM2MjcsMTcgQEAgaGVhcF9wYWdlX3dvdWxkX2Jl X2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJfQogCiAJCQkJCS8q Ci0JCQkJCSAqIFRoZSBpbnNlcnRlciBkZWZpbml0ZWx5IGNvbW1pdHRlZC4gQnV0IGlzIGl0IG9s ZCBlbm91Z2gKLQkJCQkJICogdGhhdCBldmVyeW9uZSBzZWVzIGl0IGFzIGNvbW1pdHRlZD8KKwkJ CQkJICogVGhlIGluc2VydGVyIGRlZmluaXRlbHkgY29tbWl0dGVkLiBCdXQgd2UgZG9uJ3Qga25v dyBpZgorCQkJCQkgKiBpdCBpcyBvbGQgZW5vdWdoIHRoYXQgZXZlcnlvbmUgc2VlcyBpdCBhcyBj b21taXR0ZWQuCisJCQkJCSAqIERvbid0IGNoZWNrIHRoYXQgbm93LgorCQkJCQkgKgorCQkJCQkg KiBJZiB3ZSBzY2FuIGFsbCB0dXBsZXMgd2l0aG91dCBmaW5kaW5nIG9uZSB0aGF0IHByZXZlbnRz CisJCQkJCSAqIHRoZSBwYWdlIGZyb20gYmVpbmcgYWxsLXZpc2libGUsIHdlIHRoZW4gY2hlY2sg d2hldGhlcgorCQkJCQkgKiBhbnkgc25hcHNob3Qgc3RpbGwgY29uc2lkZXJzIHRoZSBuZXdlc3Qg WElEIG9uIHRoZSBwYWdlCisJCQkJCSAqIHRvIGJlIHJ1bm5pbmcuIEluIHRoYXQgY2FzZSwgdGhl IHBhZ2UgaXMgbm90IGNvbnNpZGVyZWQKKwkJCQkJICogYWxsLXZpc2libGUuCiAJCQkJCSAqLwog CQkJCQl4bWluID0gSGVhcFR1cGxlSGVhZGVyR2V0WG1pbih0dXBsZS50X2RhdGEpOwotCQkJCQlp ZiAoIVRyYW5zYWN0aW9uSWRQcmVjZWRlcyh4bWluLCBPbGRlc3RYbWluKSkKLQkJCQkJewotCQkJ CQkJYWxsX3Zpc2libGUgPSBmYWxzZTsKLQkJCQkJCSphbGxfZnJvemVuID0gZmFsc2U7Ci0JCQkJ CQlicmVhazsKLQkJCQkJfQogCiAJCQkJCS8qIFRyYWNrIG5ld2VzdCB4bWluIG9uIHBhZ2UuICov CiAJCQkJCWlmIChUcmFuc2FjdGlvbklkRm9sbG93cyh4bWluLCAqdmlzaWJpbGl0eV9jdXRvZmZf eGlkKSAmJgpAQCAtMzY2Nyw2ICszNjY4LDE5IEBAIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlz aWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAJCX0KIAl9CQkJCQkJCS8qIHNjYW4gYWxv bmcgcGFnZSAqLwogCisJLyoKKwkgKiBBZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUgbGl2ZSB0dXBs ZXMgb24gdGhlIHBhZ2UsIGlmIHRoZSBuZXdlc3QgeG1pbgorCSAqIGFtb25nIHRoZW0gbWF5IHN0 aWxsIGJlIGNvbnNpZGVyZWQgcnVubmluZyBieSBhbnkgc25hcHNob3QsIHRoZSBwYWdlCisJICog Y2Fubm90IGJlIGFsbC12aXNpYmxlLgorCSAqLworCWlmIChhbGxfdmlzaWJsZSAmJgorCQlUcmFu c2FjdGlvbklkSXNOb3JtYWwoKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkgJiYKKwkJR2xvYmFsVmlz VGVzdFhpZE1heWJlUnVubmluZyh2aXN0ZXN0LCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkKSkKKwl7 CisJCWFsbF92aXNpYmxlID0gZmFsc2U7CisJCSphbGxfZnJvemVuID0gZmFsc2U7CisJfQorCiAJ LyogQ2xlYXIgdGhlIG9mZnNldCBpbmZvcm1hdGlvbiBvbmNlIHdlIGhhdmUgcHJvY2Vzc2VkIHRo ZSBnaXZlbiBwYWdlLiAqLwogCSpsb2dnaW5nX29mZm51bSA9IEludmFsaWRPZmZzZXROdW1iZXI7 CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaAppbmRleCBlMGRhMWY3Y2RjYy4uYWM3NzEzOTBhMzcgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmgKQEAgLTQzOCw3ICs0MzgsNyBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9h bmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogZXh0ZXJuIHZvaWQg aGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQljb25zdCBWYWN1dW1QYXJhbXMg cGFyYW1zLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpOwogZXh0ZXJuIGJvb2wgaGVh cF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJ CQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkJICAgR2xvYmFs VmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0 cywKIAkJCQkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAogCQkJCQkJCQkJCSAgIGJvb2wgKmFs bF9mcm96ZW4sCkBAIC00NTIsNiArNDUyLDggQEAgZXh0ZXJuIFRNX1Jlc3VsdCBIZWFwVHVwbGVT YXRpc2ZpZXNVcGRhdGUoSGVhcFR1cGxlIGh0dXAsIENvbW1hbmRJZCBjdXJjaWQsCiAJCQkJCQkJ CQkJICBCdWZmZXIgYnVmZmVyKTsKIGV4dGVybiBIVFNWX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2Zp ZXNWYWN1dW0oSGVhcFR1cGxlIGh0dXAsIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKIAkJCQkJ CQkJCQkJQnVmZmVyIGJ1ZmZlcik7CisKK2V4dGVybiBib29sIEdsb2JhbFZpc1Rlc3RYaWRNYXli ZVJ1bm5pbmcoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBUcmFuc2FjdGlvbklkIHhpZCk7CiBleHRl cm4gSFRTVl9SZXN1bHQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtSG9yaXpvbihIZWFwVHVwbGUg aHR1cCwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKmRlYWRf YWZ0ZXIpOwogZXh0ZXJuIHZvaWQgSGVhcFR1cGxlU2V0SGludEJpdHMoSGVhcFR1cGxlSGVhZGVy IHR1cGxlLCBCdWZmZXIgYnVmZmVyLAotLSAKMi40My4wCgo= --00000000000050ca310647bb8e6c Content-Type: text/x-patch; charset="UTF-8"; name="v33-0012-Unset-all_visible-sooner-if-not-freezing.patch" Content-Disposition: attachment; filename="v33-0012-Unset-all_visible-sooner-if-not-freezing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk2v2s4t11 RnJvbSBmMDFhODE1NTY1MDc1Y2MzMGNhNDNhYWRjNTc3YjUxZmE5MGY2MzllIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE1OjIyOjM1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MzMgMTIvMTZdIFVuc2V0IGFsbF92aXNpYmxlIHNvb25lciBpZiBub3QgZnJlZXppbmcK TUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkluIHRoZSBwcnVuZS9mcmVlemUgcGF0 aCwgd2UgY3VycmVudGx5IGRlbGF5IGNsZWFyaW5nIGFsbF92aXNpYmxlIGFuZAphbGxfZnJvemVu IGluIHRoZSBwcmVzZW5jZSBvZiBkZWFkIGl0ZW1zIHRvIGFsbG93IG9wcG9ydHVuaXN0aWMKZnJl ZXppbmcuCgpIb3dldmVyLCBpZiBubyBmcmVlemluZyB3aWxsIGJlIGF0dGVtcHRlZCwgdGhlcmXi gJlzIG5vIG5lZWQgdG8gZGVsYXkuCkNsZWFyaW5nIHRoZSBmbGFncyBlYXJsaWVyIGF2b2lkcyBl eHRyYSBib29ra2VlcGluZyBpbgpoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFs KCkuIFRoaXMgY3VycmVudGx5IGhhcyBubyBydW50aW1lCmVmZmVjdCBiZWNhdXNlIGFsbCBjYWxs ZXJzIHRoYXQgY29uc2lkZXIgc2V0dGluZyB0aGUgVk0gYWxzbyBwcmVwYXJlCmZyZWV6ZSBwbGFu cywgYnV0IHVwY29taW5nIGNoYW5nZXMgd2lsbCBhbGxvdyBvbi1hY2Nlc3MgcHJ1bmluZyB0byBz ZXQKdGhlIFZNIHdpdGhvdXQgZnJlZXppbmcuIFRoZSBleHRyYSBib29ra2VlcGluZyB3YXMgbm90 aWNlYWJsZSBpbiBhCnByb2ZpbGUgb2Ygb24tYWNjZXNzIFZNIHNldHRpbmcuCgpSZXZpZXdlZC1i eTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYyB8IDE1ICsrKysrKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQs IDEzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYwppbmRleCBkYTA5Yzc2OWI0ZC4uOWYxMjU3NTI5YjkgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCkBAIC0xNjgyLDggKzE2ODIsMTMgQEAgaGVhcF9wcnVuZV9yZWNvcmRf ZGVhZChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtLAogCS8qCiAJICog RGVsaWJlcmF0ZWx5IGRlbGF5IHVuc2V0dGluZyBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB1 bnRpbCBsYXRlcgogCSAqIGR1cmluZyBwcnVuaW5nLiBSZW1vdmFibGUgZGVhZCB0dXBsZXMgc2hv dWxkbid0IHByZWNsdWRlIGZyZWV6aW5nIHRoZQotCSAqIHBhZ2UuCisJICogcGFnZS4gSWYgd2Ug d29uJ3QgYXR0ZW1wdCBmcmVlemluZywganVzdCB1bnNldCBhbGwtdmlzaWJsZSBub3csIHRob3Vn aC4KIAkgKi8KKwlpZiAoIXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQorCXsKKwkJcHJzdGF0ZS0+ YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOworCX0K IAogCS8qIFJlY29yZCB0aGUgZGVhZCBvZmZzZXQgZm9yIHZhY3V1bSAqLwogCXByc3RhdGUtPmRl YWRvZmZzZXRzW3Byc3RhdGUtPmxwZGVhZF9pdGVtcysrXSA9IG9mZm51bTsKQEAgLTE5NDMsOCAr MTk0OCwxNCBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfZGVhZChQYWdlIHBhZ2Us IFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlcgogCSAqIFNpbWlsYXJseSwgZG9uJ3Qg dW5zZXQgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gdW50aWwgbGF0ZXIsIGF0IHRoZQogCSAq IGVuZCBvZiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLiAgVGhpcyB3aWxsIGFsbG93IHVz IHRvIGF0dGVtcHQgdG8KIAkgKiBmcmVlemUgdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4gIEFzIGxv bmcgYXMgd2UgdW5zZXQgaXQgYmVmb3JlIHVwZGF0aW5nCi0JICogdGhlIHZpc2liaWxpdHkgbWFw LCB0aGlzIHdpbGwgYmUgY29ycmVjdC4KKwkgKiB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoaXMgd2ls bCBiZSBjb3JyZWN0LiBJZiB3ZSB3b24ndCBhdHRlbXB0IGZyZWV6aW5nLAorCSAqIHRob3VnaCwg anVzdCB1bnNldCBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBub3cuCiAJICovCisJaWYgKCFw cnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSkKKwl7CisJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFs c2U7CisJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKKwl9CiAKIAkvKiBSZWNvcmQgdGhl IGRlYWQgb2Zmc2V0IGZvciB2YWN1dW0gKi8KIAlwcnN0YXRlLT5kZWFkb2Zmc2V0c1twcnN0YXRl LT5scGRlYWRfaXRlbXMrK10gPSBvZmZudW07Ci0tIAoyLjQzLjAKCg== --00000000000050ca310647bb8e6c Content-Type: text/x-patch; charset="US-ASCII"; name="v33-0013-Track-which-relations-are-modified-by-a-query.patch" Content-Disposition: attachment; filename="v33-0013-Track-which-relations-are-modified-by-a-query.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk2v2uz212 RnJvbSA1YjYyZmExZWZlNmNlYzBmOTI0MjlkYTcyYjExMDkyN2JmNDI0MThmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MDc6MjQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMyAxMy8xNl0gVHJhY2sgd2hpY2ggcmVsYXRpb25zIGFyZSBtb2RpZmllZCBieSBhIHF1 ZXJ5CgpTYXZlIHRoZSByZWxpZHMgaW4gYSBiaXRtYXAgaW4gdGhlIGVzdGF0ZS4gQSBsYXRlciBj b21taXQgd2lsbCBwYXNzIHRoaXMKaW5mb3JtYXRpb24gZG93biB0byBzY2FuIG5vZGVzIHRvIGNv bnRyb2wgd2hldGhlciBvciBub3QgdGhlIHNjYW4gYWxsb3dzCnNldHRpbmcgdGhlIHZpc2liaWxp dHkgbWFwIHdoaWxlIG9uLWFjY2VzcyBwcnVuaW5nLiBXZSBkb24ndCB3YW50IHRvIHNldAp0aGUg dmlzaWJpbGl0eSBtYXAgaWYgdGhlIHF1ZXJ5IGlzIGp1c3QgZ29pbmcgdG8gbW9kaWZ5IHRoZSBw YWdlCmltbWVkaWF0ZWx5IGFmdGVyLgoKUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hh b0BnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgfCA0ICsr KysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIHwgMiArKwogc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmggICAgfCA2ICsrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNl cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggY2ExNGNkYWJkZDAuLjZhMDI4 Mzk4NWMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTkxNiw2ICs5MTYsMTAgQEAgSW5p dFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQkJCWJyZWFrOwogCQkJ fQogCisJCQkvKiBJZiBpdCBoYXMgYSByb3dtYXJrLCB0aGUgcmVsYXRpb24gbWF5IGJlIG1vZGlm aWVkICovCisJCQllc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyA9IGJtc19hZGRfbWVtYmVyKGVz dGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzLAorCQkJCQkJCQkJCQkJCQlyYy0+cnRpKTsKKwogCQkJ LyogQ2hlY2sgdGhhdCByZWxhdGlvbiBpcyBhIGxlZ2FsIHRhcmdldCBmb3IgbWFya2luZyAqLwog CQkJaWYgKHJlbGF0aW9uKQogCQkJCUNoZWNrVmFsaWRSb3dNYXJrUmVsKHJlbGF0aW9uLCByYy0+ bWFya1R5cGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwppbmRleCBjYzNjNWRlNzFlYi4uZGNi MmVmMjI3NWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC04OTMsNiArODkzLDggQEAg RXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVz dWx0UmVsSW5mbywKIAkJZXN0YXRlLT5lc19yZXN1bHRfcmVsYXRpb25zID0gKFJlc3VsdFJlbElu Zm8gKiopCiAJCQlwYWxsb2MwKGVzdGF0ZS0+ZXNfcmFuZ2VfdGFibGVfc2l6ZSAqIHNpemVvZihS ZXN1bHRSZWxJbmZvICopKTsKIAllc3RhdGUtPmVzX3Jlc3VsdF9yZWxhdGlvbnNbcnRpIC0gMV0g PSByZXN1bHRSZWxJbmZvOworCWVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzID0gYm1zX2FkZF9t ZW1iZXIoZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMsCisJCQkJCQkJCQkJCQlydGkpOwogCiAJ LyoKIAkgKiBTYXZpbmcgaW4gdGhlIGxpc3QgYWxsb3dzIHRvIGF2b2lkIG5lZWRsZXNzbHkgdHJh dmVyc2luZyB0aGUgd2hvbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggMDIyNjU0NTY5NzguLjI5 ZTJlMmRhN2VhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjc2LDYgKzY3NiwxMiBAQCB0eXBl ZGVmIHN0cnVjdCBFU3RhdGUKIAkJCQkJCQkJCSAqIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkgKi8K IAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5RGVz YyAqLwogCisJLyoKKwkgKiBSVCBpbmRleGVzIG9mIHJlbGF0aW9ucyBtb2RpZmllZCBieSB0aGUg cXVlcnkgdGhyb3VnaCBhCisJICogVVBEQVRFL0RFTEVURS9JTlNFUlQvTUVSR0Ugb3IgdGFyZ2V0 ZWQgYnkgYSBTRUxFQ1QgRk9SIFVQREFURS4KKwkgKi8KKwlCaXRtYXBzZXQgICplc19tb2RpZmll ZF9yZWxpZHM7CisKIAlKdW5rRmlsdGVyICplc19qdW5rRmlsdGVyOwkvKiB0b3AtbGV2ZWwganVu ayBmaWx0ZXIsIGlmIGFueSAqLwogCiAJLyogSWYgcXVlcnkgY2FuIGluc2VydC9kZWxldGUgdHVw bGVzLCB0aGUgY29tbWFuZCBJRCB0byBtYXJrIHRoZW0gd2l0aCAqLwotLSAKMi40My4wCgo= --00000000000050ca310647bb8e6c Content-Type: text/x-patch; charset="US-ASCII"; name="v33-0014-Pass-down-information-on-table-modification-to-s.patch" Content-Disposition: attachment; filename="v33-0014-Pass-down-information-on-table-modification-to-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk2v2yb313 RnJvbSAyNWY0YTQ1Yzk1Y2ZkZWZlOWViOTY3MzAyNzBiZmRhYjZhN2QyNDVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MTI6MTggLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMyAxNC8xNl0gUGFzcyBkb3duIGluZm9ybWF0aW9uIG9uIHRhYmxlIG1vZGlmaWNhdGlv biB0byBzY2FuCiBub2RlCgpQYXNzIGRvd24gaW5mb3JtYXRpb24gdG8gc2VxdWVudGlhbCBzY2Fu LCBpbmRleCBbb25seV0gc2NhbiwgYW5kIGJpdG1hcAp0YWJsZSBzY2FuIG5vZGVzIG9uIHdoZXRo ZXIgb3Igbm90IHRoZSBxdWVyeSBtb2RpZmllcyB0aGUgcmVsYXRpb24gYmVpbmcKc2Nhbm5lZC4g QSBsYXRlciBjb21taXQgd2lsbCB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byB1cGRhdGUgdGhlIFZN CmR1cmluZyBvbi1hY2Nlc3MgcHJ1bmluZyBvbmx5IGlmIHRoZSByZWxhdGlvbiBpcyBub3QgbW9k aWZpZWQgYnkgdGhlCnF1ZXJ5LgoKQXV0aG9yOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxh Z2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmV5IEJvcm9kaW4gPHg0bW1tQHlhbmRl eC10ZWFtLnJ1PgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzQzNzlGREEzLTk0NDYt NEUyQy05QzE1LTMyRUZFOEQ0RjMxQiU0MHlhbmRleC10ZWFtLnJ1Ci0tLQogY29udHJpYi9wZ3Jv d2xvY2tzL3Bncm93bG9ja3MuYyAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNz L2JyaW4vYnJpbi5jICAgICAgICAgICAgfCAgMyArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4v Z2luaW5zZXJ0LmMgICAgICAgIHwgIDMgKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1faGFuZGxlci5jICB8ICA3ICsrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFt LmMgICAgICAgICAgfCAgNCArKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5j ICAgICAgICB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMg ICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyAgICAgICAg fCAgNyArKystLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYyAgICAgICAgIHwg IDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAgICAgICAgIHwgIDIgKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgIHwgIDggKysrLS0tLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYyAgICAgICAgICAgfCAgNCArKy0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYyAgICAgICB8ICAyICstCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyAgICB8ICA4ICsrKy0tLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jIHwgIDkgKysrKysrKy0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgIHwgIDkgKysrKysrKy0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyAgICAgIHwgMTggKysrKysrKysrKysrKystLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAgfCAyNiArKysrKysrKysrKysr KysrKysrKy0tLQogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAgfCAg MiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMgICAgICAgICAgfCAgMiArLQog c3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgfCAgNiArKysrKysKIHNyYy9pbmNs dWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgIHwgMTkgKysrKysrKysrKy0tLS0tLS0K IDIzIGZpbGVzIGNoYW5nZWQsIDEwNyBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9jb250cmliL3Bncm93bG9ja3MvcGdyb3dsb2Nrcy5jIGIvY29udHJpYi9wZ3Jv d2xvY2tzL3Bncm93bG9ja3MuYwppbmRleCBmODgyNjkzMzJiNi4uMjdmMDFkODA1NWYgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcGdyb3dsb2Nrcy9wZ3Jvd2xvY2tzLmMKKysrIGIvY29udHJpYi9wZ3Jv d2xvY2tzL3Bncm93bG9ja3MuYwpAQCAtMTE0LDcgKzExNCw3IEBAIHBncm93bG9ja3MoUEdfRlVO Q1RJT05fQVJHUykKIAkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSk7CiAKIAkv KiBTY2FuIHRoZSByZWxhdGlvbiAqLwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBHZXRB Y3RpdmVTbmFwc2hvdCgpLCAwLCBOVUxMKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJlbCwg R2V0QWN0aXZlU25hcHNob3QoKSwgMCwgTlVMTCwgMCk7CiAJaHNjYW4gPSAoSGVhcFNjYW5EZXNj KSBzY2FuOwogCiAJYXR0aW5tZXRhID0gVHVwbGVEZXNjR2V0QXR0SW5NZXRhZGF0YShyc2luZm8t PnNldERlc2MpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCmluZGV4IDY4ODdlNDIxNDQyLi40ZDk2ODRi MWIxOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwpAQCAtMjg0Myw3ICsyODQzLDggQEAgX2JyaW5f cGFyYWxsZWxfc2Nhbl9hbmRfYnVpbGQoQnJpbkJ1aWxkU3RhdGUgKnN0YXRlLAogCWluZGV4SW5m by0+aWlfQ29uY3VycmVudCA9IGJyaW5zaGFyZWQtPmlzY29uY3VycmVudDsKIAogCXNjYW4gPSB0 YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoaGVhcCwKLQkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2Fu RnJvbUJyaW5TaGFyZWQoYnJpbnNoYXJlZCkpOworCQkJCQkJCQkJUGFyYWxsZWxUYWJsZVNjYW5G cm9tQnJpblNoYXJlZChicmluc2hhcmVkKSwKKwkJCQkJCQkJCTApOwogCiAJcmVsdHVwbGVzID0g dGFibGVfaW5kZXhfYnVpbGRfc2NhbihoZWFwLCBpbmRleCwgaW5kZXhJbmZvLCB0cnVlLCB0cnVl LAogCQkJCQkJCQkJICAgYnJpbmJ1aWxkQ2FsbGJhY2tQYXJhbGxlbCwgc3RhdGUsIHNjYW4pOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKaW5kZXggYzA4ZWE5MjdhYzUuLmI1MDJkNDA4OGQ3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKQEAgLTIwNTgsNyArMjA1OCw4IEBAIF9n aW5fcGFyYWxsZWxfc2Nhbl9hbmRfYnVpbGQoR2luQnVpbGRTdGF0ZSAqc3RhdGUsCiAJaW5kZXhJ bmZvLT5paV9Db25jdXJyZW50ID0gZ2luc2hhcmVkLT5pc2NvbmN1cnJlbnQ7CiAKIAlzY2FuID0g dGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKGhlYXAsCi0JCQkJCQkJCQlQYXJhbGxlbFRhYmxlU2Nh bkZyb21HaW5CdWlsZFNoYXJlZChnaW5zaGFyZWQpKTsKKwkJCQkJCQkJCVBhcmFsbGVsVGFibGVT Y2FuRnJvbUdpbkJ1aWxkU2hhcmVkKGdpbnNoYXJlZCksCisJCQkJCQkJCQkwKTsKIAogCXJlbHR1 cGxlcyA9IHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oaGVhcCwgaW5kZXgsIGluZGV4SW5mbywgdHJ1 ZSwgcHJvZ3Jlc3MsCiAJCQkJCQkJCQkgICBnaW5CdWlsZENhbGxiYWNrUGFyYWxsZWwsIHN0YXRl LCBzY2FuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5k bGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IGRm MjQ0MGU4MmE3Li5lODhkYjUyZmQ3ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f aGFuZGxlci5jCkBAIC03OSwxMiArNzksMTMgQEAgaGVhcGFtX3Nsb3RfY2FsbGJhY2tzKFJlbGF0 aW9uIHJlbGF0aW9uKQogICovCiAKIHN0YXRpYyBJbmRleEZldGNoVGFibGVEYXRhICoKLWhlYXBh bV9pbmRleF9mZXRjaF9iZWdpbihSZWxhdGlvbiByZWwpCitoZWFwYW1faW5kZXhfZmV0Y2hfYmVn aW4oUmVsYXRpb24gcmVsLCB1aW50MzIgZmxhZ3MpCiB7CiAJSW5kZXhGZXRjaEhlYXBEYXRhICpo c2NhbiA9IHBhbGxvYzBfb2JqZWN0KEluZGV4RmV0Y2hIZWFwRGF0YSk7CiAKIAloc2Nhbi0+eHNf YmFzZS5yZWwgPSByZWw7CiAJaHNjYW4tPnhzX2NidWYgPSBJbnZhbGlkQnVmZmVyOworCWhzY2Fu LT5tb2RpZmllc19iYXNlX3JlbCA9ICEoZmxhZ3MgJiBTT19ISU5UX1JFTF9SRUFEX09OTFkpOwog CiAJcmV0dXJuICZoc2Nhbi0+eHNfYmFzZTsKIH0KQEAgLTc1Myw3ICs3NTQsNyBAQCBoZWFwYW1f cmVsYXRpb25fY29weV9mb3JfY2x1c3RlcihSZWxhdGlvbiBPbGRIZWFwLCBSZWxhdGlvbiBOZXdI ZWFwLAogCiAJCXRhYmxlU2NhbiA9IE5VTEw7CiAJCWhlYXBTY2FuID0gTlVMTDsKLQkJaW5kZXhT Y2FuID0gaW5kZXhfYmVnaW5zY2FuKE9sZEhlYXAsIE9sZEluZGV4LCBTbmFwc2hvdEFueSwgTlVM TCwgMCwgMCk7CisJCWluZGV4U2NhbiA9IGluZGV4X2JlZ2luc2NhbihPbGRIZWFwLCBPbGRJbmRl eCwgU25hcHNob3RBbnksIE5VTEwsIDAsIDAsIDApOwogCQlpbmRleF9yZXNjYW4oaW5kZXhTY2Fu LCBOVUxMLCAwLCBOVUxMLCAwKTsKIAl9CiAJZWxzZQpAQCAtNzYyLDcgKzc2Myw3IEBAIGhlYXBh bV9yZWxhdGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJlbGF0aW9uIE9sZEhlYXAsIFJlbGF0aW9uIE5l d0hlYXAsCiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ0xVU1RFUl9Q SEFTRSwKIAkJCQkJCQkJCSBQUk9HUkVTU19DTFVTVEVSX1BIQVNFX1NFUV9TQ0FOX0hFQVApOwog Ci0JCXRhYmxlU2NhbiA9IHRhYmxlX2JlZ2luc2NhbihPbGRIZWFwLCBTbmFwc2hvdEFueSwgMCwg KFNjYW5LZXkpIE5VTEwpOworCQl0YWJsZVNjYW4gPSB0YWJsZV9iZWdpbnNjYW4oT2xkSGVhcCwg U25hcHNob3RBbnksIDAsIChTY2FuS2V5KSBOVUxMLCAwKTsKIAkJaGVhcFNjYW4gPSAoSGVhcFNj YW5EZXNjKSB0YWJsZVNjYW47CiAJCWluZGV4U2NhbiA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4 L2dlbmFtLmMKaW5kZXggYTI5YmU2ZjQ2N2IuLjVhYzdkMjJlNDlmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5k ZXgvZ2VuYW0uYwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHN5c3RhYmxlX2JlZ2luc2NhbihSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAJCX0KIAogCQlzeXNzY2FuLT5pc2NhbiA9IGluZGV4X2JlZ2luc2Nh bihoZWFwUmVsYXRpb24sIGlyZWwsCi0JCQkJCQkJCQkJIHNuYXBzaG90LCBOVUxMLCBua2V5cywg MCk7CisJCQkJCQkJCQkJIHNuYXBzaG90LCBOVUxMLCBua2V5cywgMCwgMCk7CiAJCWluZGV4X3Jl c2NhbihzeXNzY2FuLT5pc2NhbiwgaWR4a2V5LCBua2V5cywgTlVMTCwgMCk7CiAJCXN5c3NjYW4t PnNjYW4gPSBOVUxMOwogCkBAIC03MDgsNyArNzA4LDcgQEAgc3lzdGFibGVfYmVnaW5zY2FuX29y ZGVyZWQoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCX0KIAogCXN5c3NjYW4tPmlzY2FuID0gaW5k ZXhfYmVnaW5zY2FuKGhlYXBSZWxhdGlvbiwgaW5kZXhSZWxhdGlvbiwKLQkJCQkJCQkJCSBzbmFw c2hvdCwgTlVMTCwgbmtleXMsIDApOworCQkJCQkJCQkJIHNuYXBzaG90LCBOVUxMLCBua2V5cywg MCwgMCk7CiAJaW5kZXhfcmVzY2FuKHN5c3NjYW4tPmlzY2FuLCBpZHhrZXksIG5rZXlzLCBOVUxM LCAwKTsKIAlzeXNzY2FuLT5zY2FuID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2luZGV4L2luZGV4YW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFt LmMKaW5kZXggNGVkMDUwOGM2MDUuLjRkZjU2MDg3ODQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9p bmRleGFtLmMKQEAgLTI1Nyw3ICsyNTcsNyBAQCBpbmRleF9iZWdpbnNjYW4oUmVsYXRpb24gaGVh cFJlbGF0aW9uLAogCQkJCVJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAJCQkJU25hcHNob3Qgc25h cHNob3QsCiAJCQkJSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50LAotCQkJCWlu dCBua2V5cywgaW50IG5vcmRlcmJ5cykKKwkJCQlpbnQgbmtleXMsIGludCBub3JkZXJieXMsIHVp bnQzMiBmbGFncykKIHsKIAlJbmRleFNjYW5EZXNjIHNjYW47CiAKQEAgLTI4NCw3ICsyODQsNyBA QCBpbmRleF9iZWdpbnNjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCXNjYW4tPmluc3RydW1l bnQgPSBpbnN0cnVtZW50OwogCiAJLyogcHJlcGFyZSB0byBmZXRjaCBpbmRleCBtYXRjaGVzIGZy b20gdGFibGUgKi8KLQlzY2FuLT54c19oZWFwZmV0Y2ggPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdp bihoZWFwUmVsYXRpb24pOworCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxlX2luZGV4X2ZldGNo X2JlZ2luKGhlYXBSZWxhdGlvbiwgZmxhZ3MpOwogCiAJcmV0dXJuIHNjYW47CiB9CkBAIC02MTUs NyArNjE1LDcgQEAgaW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIGhlYXByZWwsIFJl bGF0aW9uIGluZGV4cmVsLAogCXNjYW4tPmluc3RydW1lbnQgPSBpbnN0cnVtZW50OwogCiAJLyog cHJlcGFyZSB0byBmZXRjaCBpbmRleCBtYXRjaGVzIGZyb20gdGFibGUgKi8KLQlzY2FuLT54c19o ZWFwZmV0Y2ggPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihoZWFwcmVsKTsKKwlzY2FuLT54c19o ZWFwZmV0Y2ggPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihoZWFwcmVsLCAwKTsKIAogCXJldHVy biBzY2FuOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0 LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCA5MGFiNGU5MWI1 Ni4uOGFlNTQyMTdmMzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0xOTI1 LDcgKzE5MjUsNyBAQCBfYnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29s LCBCVFNwb29sICpidHNwb29sMiwKIAlpbmRleEluZm8gPSBCdWlsZEluZGV4SW5mbyhidHNwb29s LT5pbmRleCk7CiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gYnRzaGFyZWQtPmlzY29uY3Vy cmVudDsKIAlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKGJ0c3Bvb2wtPmhlYXAsCi0J CQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJlZCkpOworCQkJCQkJ CQkJUGFyYWxsZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpLCAwKTsKIAlyZWx0dXBs ZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wtPmluZGV4 LCBpbmRleEluZm8sCiAJCQkJCQkJCQkgICB0cnVlLCBwcm9ncmVzcywgX2J0X2J1aWxkX2NhbGxi YWNrLAogCQkJCQkJCQkJICAgJmJ1aWxkc3RhdGUsIHNjYW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90 YWJsZWFtLmMKaW5kZXggODc0OTE3OTY1MjMuLjJmZjI5YjZlNDBiIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 YWJsZS90YWJsZWFtLmMKQEAgLTE2MywxMCArMTYzLDExIEBAIHRhYmxlX3BhcmFsbGVsc2Nhbl9p bml0aWFsaXplKFJlbGF0aW9uIHJlbCwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAogfQog CiBUYWJsZVNjYW5EZXNjCi10YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gcmVsYXRp b24sIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbikKK3RhYmxlX2JlZ2luc2Nhbl9wYXJhbGxl bChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLCB1aW50MzIg ZmxhZ3MpCiB7CiAJU25hcHNob3QJc25hcHNob3Q7Ci0JdWludDMyCQlmbGFncyA9IFNPX1RZUEVf U0VRU0NBTiB8CisKKwlmbGFncyB8PSBTT19UWVBFX1NFUVNDQU4gfAogCQlTT19BTExPV19TVFJB VCB8IFNPX0FMTE9XX1NZTkMgfCBTT19BTExPV19QQUdFTU9ERTsKIAogCUFzc2VydChSZWxGaWxl TG9jYXRvckVxdWFscyhyZWxhdGlvbi0+cmRfbG9jYXRvciwgcHNjYW4tPnBoc19sb2NhdG9yKSk7 CkBAIC0yNDgsNyArMjQ5LDcgQEAgdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGVfY2hlY2soUmVsYXRp b24gcmVsLAogCWJvb2wJCWZvdW5kOwogCiAJc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwg TlVMTCk7Ci0Jc2NhbiA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKHJlbCk7CisJc2NhbiA9IHRh YmxlX2luZGV4X2ZldGNoX2JlZ2luKHJlbCwgMCk7CiAJZm91bmQgPSB0YWJsZV9pbmRleF9mZXRj aF90dXBsZShzY2FuLCB0aWQsIHNuYXBzaG90LCBzbG90LCAmY2FsbF9hZ2FpbiwKIAkJCQkJCQkJ CWFsbF9kZWFkKTsKIAl0YWJsZV9pbmRleF9mZXRjaF9lbmQoc2Nhbik7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9jb25zdHJhaW50LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9j b25zdHJhaW50LmMKaW5kZXggY2MxMWM0N2I2ZjIuLjM3Y2ZiZDYzOTM4IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9jb25zdHJhaW50LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29uc3RyYWludC5jCkBAIC0xMDYsNyArMTA2LDcgQEAgdW5pcXVlX2tleV9yZWNoZWNrKFBH X0ZVTkNUSU9OX0FSR1MpCiAJICovCiAJdG1wdGlkID0gY2hlY2t0aWQ7CiAJewotCQlJbmRleEZl dGNoVGFibGVEYXRhICpzY2FuID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4odHJpZ2RhdGEtPnRn X3JlbGF0aW9uKTsKKwkJSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbiA9IHRhYmxlX2luZGV4X2Zl dGNoX2JlZ2luKHRyaWdkYXRhLT50Z19yZWxhdGlvbiwgMCk7CiAJCWJvb2wJCWNhbGxfYWdhaW4g PSBmYWxzZTsKIAogCQlpZiAoIXRhYmxlX2luZGV4X2ZldGNoX3R1cGxlKHNjYW4sICZ0bXB0aWQs IFNuYXBzaG90U2VsZiwgc2xvdCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKaW5kZXggNGFiNGEzODkzZDUu LjQyNjFiYWY0YTQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpAQCAtMTE1Niw3ICsxMTU2LDcgQEAg Q29weVJlbGF0aW9uVG8oQ29weVRvU3RhdGUgY3N0YXRlLCBSZWxhdGlvbiByZWwsIFJlbGF0aW9u IHJvb3RfcmVsLCB1aW50NjQgKnByb2MKIAlBdHRyTWFwICAgICptYXAgPSBOVUxMOwogCVR1cGxl VGFibGVTbG90ICpyb290X3Nsb3QgPSBOVUxMOwogCi0Jc2NhbmRlc2MgPSB0YWJsZV9iZWdpbnNj YW4ocmVsLCBHZXRBY3RpdmVTbmFwc2hvdCgpLCAwLCBOVUxMKTsKKwlzY2FuZGVzYyA9IHRhYmxl X2JlZ2luc2NhbihyZWwsIEdldEFjdGl2ZVNuYXBzaG90KCksIDAsIE5VTEwsIDApOwogCXNsb3Qg PSB0YWJsZV9zbG90X2NyZWF0ZShyZWwsIE5VTEwpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKaW5kZXggZjk3NmMwZTVjN2UuLmViMzVkYmJjODUzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYwpAQCAtNjM3OCw3ICs2Mzc4LDcgQEAgQVRSZXdyaXRlVGFibGUoQWx0ZXJlZFRhYmxl SW5mbyAqdGFiLCBPaWQgT0lETmV3SGVhcCkKIAkJICogY2hlY2tpbmcgYWxsIHRoZSBjb25zdHJh aW50cy4KIAkJICovCiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFw c2hvdCgpKTsKLQkJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihvbGRyZWwsIHNuYXBzaG90LCAwLCBO VUxMKTsKKwkJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihvbGRyZWwsIHNuYXBzaG90LCAwLCBOVUxM LCAwKTsKIAogCQkvKgogCQkgKiBTd2l0Y2ggdG8gcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0IGFu ZCByZXNldCBpdCBmb3IgZWFjaCB0dXBsZQpAQCAtMTM3NjgsNyArMTM3NjgsNyBAQCB2YWxpZGF0 ZUZvcmVpZ25LZXlDb25zdHJhaW50KGNoYXIgKmNvbm5hbWUsCiAJICovCiAJc25hcHNob3QgPSBS ZWdpc3RlclNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOwogCXNsb3QgPSB0YWJsZV9zbG90 X2NyZWF0ZShyZWwsIE5VTEwpOwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBzbmFwc2hv dCwgMCwgTlVMTCk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihyZWwsIHNuYXBzaG90LCAwLCBO VUxMLCAwKTsKIAogCXBlclR1cEN4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVt b3J5Q29udGV4dCwKIAkJCQkJCQkJCSAgInZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQiLApA QCAtMjI2MjYsNyArMjI2MjYsNyBAQCBNZXJnZVBhcnRpdGlvbnNNb3ZlUm93cyhMaXN0ICoqd3F1 ZXVlLCBMaXN0ICptZXJnaW5nUGFydGl0aW9ucywgUmVsYXRpb24gbmV3UGFydAogCiAJCS8qIFNj YW4gdGhyb3VnaCB0aGUgcm93cy4gKi8KIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdl dExhdGVzdFNuYXBzaG90KCkpOwotCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG1lcmdpbmdQYXJ0 aXRpb24sIHNuYXBzaG90LCAwLCBOVUxMKTsKKwkJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihtZXJn aW5nUGFydGl0aW9uLCBzbmFwc2hvdCwgMCwgTlVMTCwgMCk7CiAKIAkJLyoKIAkJICogU3dpdGNo IHRvIHBlci10dXBsZSBtZW1vcnkgY29udGV4dCBhbmQgcmVzZXQgaXQgZm9yIGVhY2ggdHVwbGUK QEAgLTIzMDkwLDcgKzIzMDkwLDcgQEAgU3BsaXRQYXJ0aXRpb25Nb3ZlUm93cyhMaXN0ICoqd3F1 ZXVlLCBSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHNwbGl0UmVsLAogCiAJLyogU2NhbiB0aHJvdWdo IHRoZSByb3dzLiAqLwogCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFw c2hvdCgpKTsKLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHNwbGl0UmVsLCBzbmFwc2hvdCwgMCwg TlVMTCk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihzcGxpdFJlbCwgc25hcHNob3QsIDAsIE5V TEwsIDApOwogCiAJLyoKIAkgKiBTd2l0Y2ggdG8gcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0IGFu ZCByZXNldCBpdCBmb3IgZWFjaCB0dXBsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdHlwZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKaW5kZXggZTVm YTA1Nzg4ODkuLjhjMTE0ZmE1NmZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90 eXBlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKQEAgLTMxNTcs NyArMzE1Nyw3IEBAIHZhbGlkYXRlRG9tYWluTm90TnVsbENvbnN0cmFpbnQoT2lkIGRvbWFpbm9p ZCkKIAogCQkvKiBTY2FuIGFsbCB0dXBsZXMgaW4gdGhpcyByZWxhdGlvbiAqLwogCQlzbmFwc2hv dCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7Ci0JCXNjYW4gPSB0YWJs ZV9iZWdpbnNjYW4odGVzdHJlbCwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFibGVf YmVnaW5zY2FuKHRlc3RyZWwsIHNuYXBzaG90LCAwLCBOVUxMLCAwKTsKIAkJc2xvdCA9IHRhYmxl X3Nsb3RfY3JlYXRlKHRlc3RyZWwsIE5VTEwpOwogCQl3aGlsZSAodGFibGVfc2Nhbl9nZXRuZXh0 c2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkpCiAJCXsKQEAgLTMyMzgsNyAr MzIzOCw3IEBAIHZhbGlkYXRlRG9tYWluQ2hlY2tDb25zdHJhaW50KE9pZCBkb21haW5vaWQsIGNv bnN0IGNoYXIgKmNjYmluLCBMT0NLTU9ERSBsb2NrbW9kCiAKIAkJLyogU2NhbiBhbGwgdHVwbGVz IGluIHRoaXMgcmVsYXRpb24gKi8KIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExh dGVzdFNuYXBzaG90KCkpOwotCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHRlc3RyZWwsIHNuYXBz aG90LCAwLCBOVUxMKTsKKwkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbih0ZXN0cmVsLCBzbmFwc2hv dCwgMCwgTlVMTCwgMCk7CiAJCXNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZSh0ZXN0cmVsLCBOVUxM KTsKIAkJd2hpbGUgKHRhYmxlX3NjYW5fZ2V0bmV4dHNsb3Qoc2NhbiwgRm9yd2FyZFNjYW5EaXJl Y3Rpb24sIHNsb3QpKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj SW5kZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCmluZGV4IDZh ZTBmOTU5NTkyLi42ZDNlOWQyZjMxMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY0luZGV4aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMK QEAgLTgxNiw3ICs4MTYsNyBAQCBjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnQo UmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiByZXRyeToKIAljb25mbGljdCA9IGZhbHNl OwogCWZvdW5kX3NlbGYgPSBmYWxzZTsKLQlpbmRleF9zY2FuID0gaW5kZXhfYmVnaW5zY2FuKGhl YXAsIGluZGV4LCAmRGlydHlTbmFwc2hvdCwgTlVMTCwgaW5kbmtleWF0dHMsIDApOworCWluZGV4 X3NjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcCwgaW5kZXgsICZEaXJ0eVNuYXBzaG90LCBOVUxM LCBpbmRua2V5YXR0cywgMCwgMCk7CiAJaW5kZXhfcmVzY2FuKGluZGV4X3NjYW4sIHNjYW5rZXlz LCBpbmRua2V5YXR0cywgTlVMTCwgMCk7CiAKIAl3aGlsZSAoaW5kZXhfZ2V0bmV4dF9zbG90KGlu ZGV4X3NjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBleGlzdGluZ19zbG90KSkKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKaW5kZXggMTczZDJmZTU0OGQuLmRiMWIzMjJjNjY1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwpAQCAtMjA0LDcgKzIwNCw3 IEBAIFJlbGF0aW9uRmluZFJlcGxUdXBsZUJ5SW5kZXgoUmVsYXRpb24gcmVsLCBPaWQgaWR4b2lk LAogCXNrZXlfYXR0b2ZmID0gYnVpbGRfcmVwbGluZGV4X3NjYW5fa2V5KHNrZXksIHJlbCwgaWR4 cmVsLCBzZWFyY2hzbG90KTsKIAogCS8qIFN0YXJ0IGFuIGluZGV4IHNjYW4uICovCi0Jc2NhbiA9 IGluZGV4X2JlZ2luc2NhbihyZWwsIGlkeHJlbCwgJnNuYXAsIE5VTEwsIHNrZXlfYXR0b2ZmLCAw KTsKKwlzY2FuID0gaW5kZXhfYmVnaW5zY2FuKHJlbCwgaWR4cmVsLCAmc25hcCwgTlVMTCwgc2tl eV9hdHRvZmYsIDAsIDApOwogCiByZXRyeToKIAlmb3VuZCA9IGZhbHNlOwpAQCAtMzgyLDcgKzM4 Miw3IEBAIFJlbGF0aW9uRmluZFJlcGxUdXBsZVNlcShSZWxhdGlvbiByZWwsIExvY2tUdXBsZU1v ZGUgbG9ja21vZGUsCiAKIAkvKiBTdGFydCBhIGhlYXAgc2Nhbi4gKi8KIAlJbml0RGlydHlTbmFw c2hvdChzbmFwKTsKLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgJnNuYXAsIDAsIE5VTEwp OworCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCAmc25hcCwgMCwgTlVMTCwgMCk7CiAJc2Nh bnNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShyZWwsIE5VTEwpOwogCiByZXRyeToKQEAgLTYwMSw3 ICs2MDEsNyBAQCBSZWxhdGlvbkZpbmREZWxldGVkVHVwbGVJbmZvU2VxKFJlbGF0aW9uIHJlbCwg VHVwbGVUYWJsZVNsb3QgKnNlYXJjaHNsb3QsCiAJICogbm90IHlldCBjb21taXR0ZWQgb3IgdGhv c2UganVzdCBjb21taXR0ZWQgcHJpb3IgdG8gdGhlIHNjYW4gYXJlCiAJICogZXhjbHVkZWQgaW4g dXBkYXRlX21vc3RfcmVjZW50X2RlbGV0aW9uX2luZm8oKS4KIAkgKi8KLQlzY2FuID0gdGFibGVf YmVnaW5zY2FuKHJlbCwgU25hcHNob3RBbnksIDAsIE5VTEwpOworCXNjYW4gPSB0YWJsZV9iZWdp bnNjYW4ocmVsLCBTbmFwc2hvdEFueSwgMCwgTlVMTCwgMCk7CiAJc2NhbnNsb3QgPSB0YWJsZV9z bG90X2NyZWF0ZShyZWwsIE5VTEwpOwogCiAJdGFibGVfcmVzY2FuKHNjYW4sIE5VTEwpOwpAQCAt NjY1LDcgKzY2NSw3IEBAIFJlbGF0aW9uRmluZERlbGV0ZWRUdXBsZUluZm9CeUluZGV4KFJlbGF0 aW9uIHJlbCwgT2lkIGlkeG9pZCwKIAkgKiBub3QgeWV0IGNvbW1pdHRlZCBvciB0aG9zZSBqdXN0 IGNvbW1pdHRlZCBwcmlvciB0byB0aGUgc2NhbiBhcmUKIAkgKiBleGNsdWRlZCBpbiB1cGRhdGVf bW9zdF9yZWNlbnRfZGVsZXRpb25faW5mbygpLgogCSAqLwotCXNjYW4gPSBpbmRleF9iZWdpbnNj YW4ocmVsLCBpZHhyZWwsIFNuYXBzaG90QW55LCBOVUxMLCBza2V5X2F0dG9mZiwgMCk7CisJc2Nh biA9IGluZGV4X2JlZ2luc2NhbihyZWwsIGlkeHJlbCwgU25hcHNob3RBbnksIE5VTEwsIHNrZXlf YXR0b2ZmLCAwLCAwKTsKIAogCWluZGV4X3Jlc2NhbihzY2FuLCBza2V5LCBza2V5X2F0dG9mZiwg TlVMTCwgMCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBI ZWFwc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKaW5k ZXggMmM2ODMyN2NiMjkuLjYyZGZmMDEwZDEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl Qml0bWFwSGVhcHNjYW4uYwpAQCAtMTA1LDExICsxMDUsMTggQEAgQml0bWFwVGFibGVTY2FuU2V0 dXAoQml0bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSkKIAkgKi8KIAlpZiAoIW5vZGUtPnNzLnNzX2N1 cnJlbnRTY2FuRGVzYykKIAl7CisJCXVpbnQzMgkJZmxhZ3MgPSAwOworCisJCWlmICghYm1zX2lz X21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJCSAg IG5vZGUtPnNzLnBzLnN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMpKQorCQkJZmxhZ3MgPSBTT19I SU5UX1JFTF9SRUFEX09OTFk7CisKIAkJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0KIAkJ CXRhYmxlX2JlZ2luc2Nhbl9ibShub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sCiAJCQkJCQkJ ICAgbm9kZS0+c3MucHMuc3RhdGUtPmVzX3NuYXBzaG90LAogCQkJCQkJCSAgIDAsCi0JCQkJCQkJ ICAgTlVMTCk7CisJCQkJCQkJICAgTlVMTCwKKwkJCQkJCQkgICBmbGFncyk7CiAJfQogCiAJbm9k ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjLT5zdC5yc190Ym1pdGVyYXRvciA9IHRibWl0ZXJhdG9y OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKaW5kZXggYzJkMDkzNzQ1 MTcuLjJmZTcyNGEzMjNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5k ZXhvbmx5c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2Fu LmMKQEAgLTg0LDYgKzg0LDEyIEBAIEluZGV4T25seU5leHQoSW5kZXhPbmx5U2NhblN0YXRlICpu b2RlKQogCiAJaWYgKHNjYW5kZXNjID09IE5VTEwpCiAJeworCQl1aW50MzIJCWZsYWdzID0gMDsK KworCQlpZiAoIWJtc19pc19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2Fu cmVsaWQsCisJCQkJCQkgICBlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcykpCisJCQlmbGFncyA9 IFNPX0hJTlRfUkVMX1JFQURfT05MWTsKKwogCQkvKgogCQkgKiBXZSByZWFjaCBoZXJlIGlmIHRo ZSBpbmRleCBvbmx5IHNjYW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3ZSdyZQogCQkgKiBzZXJp YWxseSBleGVjdXRpbmcgYW4gaW5kZXggb25seSBzY2FuIHRoYXQgd2FzIHBsYW5uZWQgdG8gYmUK QEAgLTk0LDcgKzEwMCw4IEBAIEluZGV4T25seU5leHQoSW5kZXhPbmx5U2NhblN0YXRlICpub2Rl KQogCQkJCQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90LAogCQkJCQkJCQkgICAmbm9kZS0+aW9z c19JbnN0cnVtZW50LAogCQkJCQkJCQkgICBub2RlLT5pb3NzX051bVNjYW5LZXlzLAotCQkJCQkJ CQkgICBub2RlLT5pb3NzX051bU9yZGVyQnlLZXlzKTsKKwkJCQkJCQkJICAgbm9kZS0+aW9zc19O dW1PcmRlckJ5S2V5cywKKwkJCQkJCQkJICAgZmxhZ3MpOwogCiAJCW5vZGUtPmlvc3NfU2NhbkRl c2MgPSBzY2FuZGVzYzsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu ZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCmluZGV4IDg0 ODIzZjBiNjE1Li4wZWM2NjBjOGZhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4u YwpAQCAtMTAyLDYgKzEwMiwxMiBAQCBJbmRleE5leHQoSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAK IAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CisJCXVpbnQzMgkJZmxhZ3MgPSAwOworCisJCWlm ICghYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwK KwkJCQkJCSAgIGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkKKwkJCWZsYWdzID0gU09fSElO VF9SRUxfUkVBRF9PTkxZOworCiAJCS8qCiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYgdGhlIGluZGV4 IHNjYW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3ZSdyZQogCQkgKiBzZXJpYWxseSBleGVjdXRp bmcgYW4gaW5kZXggc2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBhcmFsbGVsLgpAQCAtMTEx LDcgKzExNyw4IEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJICAg ZXN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkJICAgJm5vZGUtPmlzc19JbnN0cnVtZW50LAog CQkJCQkJCQkgICBub2RlLT5pc3NfTnVtU2NhbktleXMsCi0JCQkJCQkJCSAgIG5vZGUtPmlzc19O dW1PcmRlckJ5S2V5cyk7CisJCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cywKKwkJ CQkJCQkJICAgZmxhZ3MpOwogCiAJCW5vZGUtPmlzc19TY2FuRGVzYyA9IHNjYW5kZXNjOwogCkBA IC0xOTgsNiArMjA1LDEyIEBAIEluZGV4TmV4dFdpdGhSZW9yZGVyKEluZGV4U2NhblN0YXRlICpu b2RlKQogCiAJaWYgKHNjYW5kZXNjID09IE5VTEwpCiAJeworCQl1aW50MzIJCWZsYWdzID0gMDsK KworCQlpZiAoIWJtc19pc19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2Fu cmVsaWQsCisJCQkJCQkgICBlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcykpCisJCQlmbGFncyA9 IFNPX0hJTlRfUkVMX1JFQURfT05MWTsKKwogCQkvKgogCQkgKiBXZSByZWFjaCBoZXJlIGlmIHRo ZSBpbmRleCBzY2FuIGlzIG5vdCBwYXJhbGxlbCwgb3IgaWYgd2UncmUKIAkJICogc2VyaWFsbHkg ZXhlY3V0aW5nIGFuIGluZGV4IHNjYW4gdGhhdCB3YXMgcGxhbm5lZCB0byBiZSBwYXJhbGxlbC4K QEAgLTIwNyw3ICsyMjAsOCBAQCBJbmRleE5leHRXaXRoUmVvcmRlcihJbmRleFNjYW5TdGF0ZSAq bm9kZSkKIAkJCQkJCQkJICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkJICAgJm5vZGUt Pmlzc19JbnN0cnVtZW50LAogCQkJCQkJCQkgICBub2RlLT5pc3NfTnVtU2NhbktleXMsCi0JCQkJ CQkJCSAgIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cyk7CisJCQkJCQkJCSAgIG5vZGUtPmlzc19O dW1PcmRlckJ5S2V5cywKKwkJCQkJCQkJICAgZmxhZ3MpOwogCiAJCW5vZGUtPmlzc19TY2FuRGVz YyA9IHNjYW5kZXNjOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vx c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwppbmRleCBiODExOWZh Y2U0My4uNzcxODM3NmJjMmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVT ZXFzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwpAQCAtNjUs MTMgKzY1LDIwIEBAIFNlcU5leHQoU2VxU2NhblN0YXRlICpub2RlKQogCiAJaWYgKHNjYW5kZXNj ID09IE5VTEwpCiAJeworCQl1aW50MzIJCWZsYWdzID0gMDsKKworCQlpZiAoIWJtc19pc19tZW1i ZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCQkgICBlc3Rh dGUtPmVzX21vZGlmaWVkX3JlbGlkcykpCisJCQlmbGFncyA9IFNPX0hJTlRfUkVMX1JFQURfT05M WTsKKwogCQkvKgogCQkgKiBXZSByZWFjaCBoZXJlIGlmIHRoZSBzY2FuIGlzIG5vdCBwYXJhbGxl bCwgb3IgaWYgd2UncmUgc2VyaWFsbHkKIAkJICogZXhlY3V0aW5nIGEgc2NhbiB0aGF0IHdhcyBw bGFubmVkIHRvIGJlIHBhcmFsbGVsLgogCQkgKi8KIAkJc2NhbmRlc2MgPSB0YWJsZV9iZWdpbnNj YW4obm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJCQkgICBlc3RhdGUtPmVzX3Nu YXBzaG90LAotCQkJCQkJCQkgICAwLCBOVUxMKTsKKwkJCQkJCQkJICAgMCwgTlVMTCwgZmxhZ3Mp OworCiAJCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IHNjYW5kZXNjOwogCX0KIApAQCAt MzY3LDE0ICszNzQsMjAgQEAgRXhlY1NlcVNjYW5Jbml0aWFsaXplRFNNKFNlcVNjYW5TdGF0ZSAq bm9kZSwKIHsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOwogCVBhcmFs bGVsVGFibGVTY2FuRGVzYyBwc2NhbjsKKwl1aW50MzIJCWZsYWdzID0gMDsKIAogCXBzY2FuID0g c2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIG5vZGUtPnBzY2FuX2xlbik7CiAJdGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJ CQkgIHBzY2FuLAogCQkJCQkJCQkgIGVzdGF0ZS0+ZXNfc25hcHNob3QpOwogCXNobV90b2NfaW5z ZXJ0KHBjeHQtPnRvYywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBwc2Nhbik7CisJ aWYgKCFibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlk LAorCQkJCQkgICBlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcykpCisJCWZsYWdzID0gU09fSElO VF9SRUxfUkVBRF9PTkxZOworCiAJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0KLQkJdGFi bGVfYmVnaW5zY2FuX3BhcmFsbGVsKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwgcHNjYW4p OworCQl0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9u LCBwc2NhbiwKKwkJCQkJCQkJIGZsYWdzKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDA0LDggKzQx NywxNSBAQCBFeGVjU2VxU2NhbkluaXRpYWxpemVXb3JrZXIoU2VxU2NhblN0YXRlICpub2RlLAog CQkJCQkJCVBhcmFsbGVsV29ya2VyQ29udGV4dCAqcHdjeHQpCiB7CiAJUGFyYWxsZWxUYWJsZVNj YW5EZXNjIHBzY2FuOworCXVpbnQzMgkJZmxhZ3MgPSAwOworCisJaWYgKCFibXNfaXNfbWVtYmVy KCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAorCQkJCQkgICBub2RlLT5z cy5wcy5zdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkKKwkJZmxhZ3MgPSBTT19ISU5UX1JFTF9S RUFEX09OTFk7CiAKIAlwc2NhbiA9IHNobV90b2NfbG9va3VwKHB3Y3h0LT50b2MsIG5vZGUtPnNz LnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgZmFsc2UpOwogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2Fu RGVzYyA9Ci0JCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5zc19jdXJyZW50UmVs YXRpb24sIHBzY2FuKTsKKwkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKG5vZGUtPnNzLnNzX2N1 cnJlbnRSZWxhdGlvbiwKKwkJCQkJCQkJIHBzY2FuLAorCQkJCQkJCQkgZmxhZ3MpOwogfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyBiL3NyYy9iYWNr ZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKaW5kZXggMGNhMzEyYWMyN2QuLmI3YzRlNmQx MDcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCisr KyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKQEAgLTMzNjIsNyArMzM2 Miw3IEBAIGNoZWNrX2RlZmF1bHRfcGFydGl0aW9uX2NvbnRlbnRzKFJlbGF0aW9uIHBhcmVudCwg UmVsYXRpb24gZGVmYXVsdF9yZWwsCiAJCWVjb250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4 dChlc3RhdGUpOwogCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNo b3QoKSk7CiAJCXR1cHNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShwYXJ0X3JlbCwgJmVzdGF0ZS0+ ZXNfdHVwbGVUYWJsZSk7Ci0JCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocGFydF9yZWwsIHNuYXBz aG90LCAwLCBOVUxMKTsKKwkJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihwYXJ0X3JlbCwgc25hcHNo b3QsIDAsIE5VTEwsIDApOwogCiAJCS8qCiAJCSAqIFN3aXRjaCB0byBwZXItdHVwbGUgbWVtb3J5 IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5j cy5jCmluZGV4IDI5ZmVjNjU1NTkzLi5hYzE4MTg1MzIyNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1 bmNzLmMKQEAgLTcxODEsNyArNzE4MSw3IEBAIGdldF9hY3R1YWxfdmFyaWFibGVfZW5kcG9pbnQo UmVsYXRpb24gaGVhcFJlbCwKIAogCWluZGV4X3NjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcFJl bCwgaW5kZXhSZWwsCiAJCQkJCQkJCSAmU25hcHNob3ROb25WYWN1dW1hYmxlLCBOVUxMLAotCQkJ CQkJCQkgMSwgMCk7CisJCQkJCQkJCSAxLCAwLCAwKTsKIAkvKiBTZXQgaXQgdXAgZm9yIGluZGV4 LW9ubHkgc2NhbiAqLwogCWluZGV4X3NjYW4tPnhzX3dhbnRfaXR1cCA9IHRydWU7CiAJaW5kZXhf cmVzY2FuKGluZGV4X3NjYW4sIHNjYW5rZXlzLCAxLCBOVUxMLCAwKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKaW5k ZXggZTM3ODM0YzQwNmQuLjQzYjlkOGFhYWYxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvZ2VuYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaApAQCAtMTc3LDcgKzE3 Nyw3IEBAIGV4dGVybiBJbmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2NhbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJCQkJCQkJCQkgUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAkJCQkJCQkJCSBT bmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJCSBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmlu c3RydW1lbnQsCi0JCQkJCQkJCQkgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKTsKKwkJCQkJCQkJ CSBpbnQgbmtleXMsIGludCBub3JkZXJieXMsIHVpbnQzMiBmbGFncyk7CiBleHRlcm4gSW5kZXhT Y2FuRGVzYyBpbmRleF9iZWdpbnNjYW5fYml0bWFwKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAJ CQkJCQkJCQkJCVNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJCQlJbmRleFNjYW5JbnN0cnVt ZW50YXRpb24gKmluc3RydW1lbnQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVh cGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggYWM3NzEzOTBhMzcuLmEw ZTg5MzY1YzcwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC0xMTksNiArMTE5LDEyIEBAIHR5cGVkZWYg c3RydWN0IEluZGV4RmV0Y2hIZWFwRGF0YQogCiAJQnVmZmVyCQl4c19jYnVmOwkJLyogY3VycmVu dCBoZWFwIGJ1ZmZlciBpbiBzY2FuLCBpZiBhbnkgKi8KIAkvKiBOQjogaWYgeHNfY2J1ZiBpcyBu b3QgSW52YWxpZEJ1ZmZlciwgd2UgaG9sZCBhIHBpbiBvbiB0aGF0IGJ1ZmZlciAqLworCisJLyoK KwkgKiBTb21lIG9wdGltaXphdGlvbnMgY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGlmIHRoZSBxdWVy eSBkb2VzIG5vdCBtb2RpZnkKKwkgKiB0aGUgdW5kZXJseWluZyByZWxhdGlvbi4gVHJhY2sgdGhh dCBoZXJlLgorCSAqLworCWJvb2wJCW1vZGlmaWVzX2Jhc2VfcmVsOwogfSBJbmRleEZldGNoSGVh cERhdGE7CiAKIC8qIFJlc3VsdCBjb2RlcyBmb3IgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3RhYmxlYW0uaAppbmRleCBjOWZhOWYyNTljZC4uNjA2NmFlMTU2ZGUgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3RhYmxlYW0uaApAQCAtNjMsNiArNjMsOCBAQCB0eXBlZGVmIGVudW0gU2Nhbk9wdGlvbnMKIAog CS8qIHVucmVnaXN0ZXIgc25hcHNob3QgYXQgc2NhbiBlbmQ/ICovCiAJU09fVEVNUF9TTkFQU0hP VCA9IDEgPDwgOSwKKwkvKiBzZXQgaWYgdGhlIHF1ZXJ5IGRvZXNuJ3QgbW9kaWZ5IHRoZSByZWwg Ki8KKwlTT19ISU5UX1JFTF9SRUFEX09OTFkgPSAxIDw8IDEwLAogfQkJCVNjYW5PcHRpb25zOwog CiAvKgpAQCAtNDIwLDcgKzQyMiw3IEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJ ICoKIAkgKiBUdXBsZXMgZm9yIGFuIGluZGV4IHNjYW4gY2FuIHRoZW4gYmUgZmV0Y2hlZCB2aWEg aW5kZXhfZmV0Y2hfdHVwbGUuCiAJICovCi0Jc3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEgKigq aW5kZXhfZmV0Y2hfYmVnaW4pIChSZWxhdGlvbiByZWwpOworCXN0cnVjdCBJbmRleEZldGNoVGFi bGVEYXRhICooKmluZGV4X2ZldGNoX2JlZ2luKSAoUmVsYXRpb24gcmVsLCB1aW50MzIgZmxhZ3Mp OwogCiAJLyoKIAkgKiBSZXNldCBpbmRleCBmZXRjaC4gVHlwaWNhbGx5IHRoaXMgd2lsbCByZWxl YXNlIGNyb3NzIGluZGV4IGZldGNoCkBAIC04NzMsOSArODc1LDkgQEAgZXh0ZXJuIFR1cGxlVGFi bGVTbG90ICp0YWJsZV9zbG90X2NyZWF0ZShSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqKnJlZ2xp c3QpOwogICovCiBzdGF0aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2NhbihS ZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCWludCBua2V5cywgU2NhbktleURh dGEgKmtleSkKKwkJCQlpbnQgbmtleXMsIFNjYW5LZXlEYXRhICprZXksIHVpbnQzMiBmbGFncykK IHsKLQl1aW50MzIJCWZsYWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKKwlmbGFncyB8PSBTT19UWVBF X1NFUVNDQU4gfAogCQlTT19BTExPV19TVFJBVCB8IFNPX0FMTE9XX1NZTkMgfCBTT19BTExPV19Q QUdFTU9ERTsKIAogCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPnNjYW5fYmVnaW4ocmVsLCBzbmFw c2hvdCwgbmtleXMsIGtleSwgTlVMTCwgZmxhZ3MpOwpAQCAtOTE4LDkgKzkyMCw5IEBAIHRhYmxl X2JlZ2luc2Nhbl9zdHJhdChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAogICovCiBz dGF0aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2Nhbl9ibShSZWxhdGlvbiBy ZWwsIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCSAgIGludCBua2V5cywgU2NhbktleURhdGEgKmtl eSkKKwkJCQkgICBpbnQgbmtleXMsIFNjYW5LZXlEYXRhICprZXksIHVpbnQzMiBmbGFncykKIHsK LQl1aW50MzIJCWZsYWdzID0gU09fVFlQRV9CSVRNQVBTQ0FOIHwgU09fQUxMT1dfUEFHRU1PREU7 CisJZmxhZ3MgfD0gU09fVFlQRV9CSVRNQVBTQ0FOIHwgU09fQUxMT1dfUEFHRU1PREU7CiAKIAly ZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5zY2FuX2JlZ2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBr ZXksCiAJCQkJCQkJCQkgICBOVUxMLCBmbGFncyk7CkBAIC0xMTI3LDcgKzExMjksOCBAQCBleHRl cm4gdm9pZCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsCiAgKiBD YWxsZXIgbXVzdCBob2xkIGEgc3VpdGFibGUgbG9jayBvbiB0aGUgcmVsYXRpb24uCiAgKi8KIGV4 dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiByZWxh dGlvbiwKLQkJCQkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pOworCQkJCQkJ CQkJCQkgIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbiwKKwkJCQkJCQkJCQkJICB1aW50MzIg ZmxhZ3MpOwogCiAvKgogICogQmVnaW4gYSBwYXJhbGxlbCB0aWQgcmFuZ2Ugc2Nhbi4gYHBzY2Fu YCBuZWVkcyB0byBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQKQEAgLTExNjMsOSArMTE2Niw5IEBAIHRh YmxlX3BhcmFsbGVsc2Nhbl9yZWluaXRpYWxpemUoUmVsYXRpb24gcmVsLCBQYXJhbGxlbFRhYmxl U2NhbkRlc2MgcHNjYW4pCiAgKiBUdXBsZXMgZm9yIGFuIGluZGV4IHNjYW4gY2FuIHRoZW4gYmUg ZmV0Y2hlZCB2aWEgdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoKS4KICAqLwogc3RhdGljIGlubGlu ZSBJbmRleEZldGNoVGFibGVEYXRhICoKLXRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9u IHJlbCkKK3RhYmxlX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCwgdWludDMyIGZsYWdz KQogewotCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPmluZGV4X2ZldGNoX2JlZ2luKHJlbCk7CisJ cmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+aW5kZXhfZmV0Y2hfYmVnaW4ocmVsLCBmbGFncyk7CiB9 CiAKIC8qCi0tIAoyLjQzLjAKCg== --00000000000050ca310647bb8e6c Content-Type: text/x-patch; charset="US-ASCII"; name="v33-0015-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v33-0015-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk2v31vk14 RnJvbSA1YmViOTI3ZWZiOThmMDVjMTJkZmQ4NGY1ODRjMTFjNDhkMThiZDk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MjQ6MDggLTA1MDAKU3ViamVjdDogW1BB VENIIHYzMyAxNS8xNl0gQWxsb3cgb24tYWNjZXNzIHBydW5pbmcgdG8gc2V0IHBhZ2VzIGFsbC12 aXNpYmxlCgpNYW55IHF1ZXJpZXMgZG8gbm90IG1vZGlmeSB0aGUgdW5kZXJseWluZyByZWxhdGlv bi4gRm9yIHN1Y2ggcXVlcmllcywgaWYKb24tYWNjZXNzIHBydW5pbmcgb2NjdXJzIGR1cmluZyB0 aGUgc2Nhbiwgd2UgY2FuIGNoZWNrIHdoZXRoZXIgdGhlIHBhZ2UKaGFzIGJlY29tZSBhbGwtdmlz aWJsZSBhbmQgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCBhY2NvcmRpbmdseS4KUHJldmlvdXNs eSwgb25seSB2YWN1dW0gYW5kIENPUFkgRlJFRVpFIG1hcmtlZCBwYWdlcyBhcyBhbGwtdmlzaWJs ZSBvcgphbGwtZnJvemVuLgoKVGhpcyBjb21taXQgaW1wbGVtZW50cyBvbi1hY2Nlc3MgVk0gc2V0 dGluZyBmb3Igc2VxdWVudGlhbCBzY2FucyBhcyB3ZWxsCmFzIGZvciB0aGUgdW5kZXJseWluZyBo ZWFwIHJlbGF0aW9uIGluIGluZGV4IHNjYW5zIGFuZCBiaXRtYXAgaGVhcApzY2Fucy4KCkF1dGhv cjogTWVsYW5pZSBQbGFnZW1hbiA8bWVsYW5pZXBsYWdlbWFuQGdtYWlsLmNvbT4KUmV2aWV3ZWQt Ynk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFyYXplbC5kZT4KUmV2aWV3ZWQtYnk6IEtpcmls bCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1W N1NPTHhkSzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtLmMgICAgICAgICAgICAgIHwgMTUgKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgMTUgKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMgICAgICAgICAgIHwgNDAgKysrKysrKysrKysrKysrKysrLQogc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgICAgIHwgMjQgKysrKysrKysr LS0KIC4uLi90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgICAgICAgICB8ICAzICst CiA1IGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBmMjE5YzdhNzFjZi4uODk0MDI5N2Y2ZjMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC01NzMsNiArNTczLDcgQEAgaGVhcF9wcmVwYXJlX3Bh Z2VzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJQnVmZmVyCQlidWZmZXIgPSBzY2FuLT5yc19j YnVmOwogCUJsb2NrTnVtYmVyIGJsb2NrID0gc2Nhbi0+cnNfY2Jsb2NrOwogCVNuYXBzaG90CXNu YXBzaG90OworCUJ1ZmZlcgkgICAqdm1idWZmZXIgPSBOVUxMOwogCVBhZ2UJCXBhZ2U7CiAJaW50 CQkJbGluZXM7CiAJYm9vbAkJYWxsX3Zpc2libGU7CkBAIC01ODcsNyArNTg4LDkgQEAgaGVhcF9w cmVwYXJlX3BhZ2VzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJLyoKIAkgKiBQcnVuZSBhbmQg cmVwYWlyIGZyYWdtZW50YXRpb24gZm9yIHRoZSB3aG9sZSBwYWdlLCBpZiBwb3NzaWJsZS4KIAkg Ki8KLQloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX2Jhc2UucnNfcmQsIGJ1ZmZlcik7CisJ aWYgKHNzY2FuLT5yc19mbGFncyAmIFNPX0hJTlRfUkVMX1JFQURfT05MWSkKKwkJdm1idWZmZXIg PSAmc2Nhbi0+cnNfdm1idWZmZXI7CisJaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19iYXNl LnJzX3JkLCBidWZmZXIsIHZtYnVmZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJl IGxvY2sgb24gdGhlIGJ1ZmZlciBjb250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpAQCAtMTI2 NCw2ICsxMjY3LDcgQEAgaGVhcF9iZWdpbnNjYW4oUmVsYXRpb24gcmVsYXRpb24sIFNuYXBzaG90 IHNuYXBzaG90LAogCQkJCQkJCQkJCQkJCQkgIHNpemVvZihUQk1JdGVyYXRlUmVzdWx0KSk7CiAJ fQogCisJc2Nhbi0+cnNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJcmV0dXJuIChUYWJs ZVNjYW5EZXNjKSBzY2FuOwogfQpAQCAtMTMwMiw2ICsxMzA2LDEyIEBAIGhlYXBfcmVzY2FuKFRh YmxlU2NhbkRlc2Mgc3NjYW4sIFNjYW5LZXkga2V5LCBib29sIHNldF9wYXJhbXMsCiAJCXNjYW4t PnJzX2NidWYgPSBJbnZhbGlkQnVmZmVyOwogCX0KIAorCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4t PnJzX3ZtYnVmZmVyKSkKKwl7CisJCVJlbGVhc2VCdWZmZXIoc2Nhbi0+cnNfdm1idWZmZXIpOwor CQlzY2FuLT5yc192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJfQorCiAJLyoKIAkgKiBTT19U WVBFX0JJVE1BUFNDQU4gd291bGQgYmUgY2xlYW5lZCB1cCBoZXJlLCBidXQgaXQgZG9lcyBub3Qg aG9sZCBhbnkKIAkgKiBhZGRpdGlvbmFsIGRhdGEgdnMgYSBub3JtYWwgSGVhcFNjYW4KQEAgLTEz MzQsNiArMTM0NCw5IEBAIGhlYXBfZW5kc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCWlmIChC dWZmZXJJc1ZhbGlkKHNjYW4tPnJzX2NidWYpKQogCQlSZWxlYXNlQnVmZmVyKHNjYW4tPnJzX2Ni dWYpOwogCisJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNfdm1idWZmZXIpKQorCQlSZWxlYXNl QnVmZmVyKHNjYW4tPnJzX3ZtYnVmZmVyKTsKKwogCS8qCiAJICogTXVzdCBmcmVlIHRoZSByZWFk IHN0cmVhbSBiZWZvcmUgZnJlZWluZyB0aGUgQnVmZmVyQWNjZXNzU3RyYXRlZ3kuCiAJICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBlODhkYjUyZmQ3ZS4u YWIxNzU5NDhjNWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o 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 IHdlIGNhbiBleGFtaW5lIHZpc2liaWxpdHkgKi8KQEAgLTI0NzcsNiArMjQ4NSw3IEBAIEJpdG1h cEhlYXBTY2FuTmV4dEJsb2NrKFRhYmxlU2NhbkRlc2Mgc2NhbiwKIAlUQk1JdGVyYXRlUmVzdWx0 ICp0Ym1yZXM7CiAJT2Zmc2V0TnVtYmVyIG9mZnNldHNbVEJNX01BWF9UVVBMRVNfUEVSX1BBR0Vd OwogCWludAkJCW5vZmZzZXRzID0gLTE7CisJQnVmZmVyCSAgICp2bWJ1ZmZlciA9IE5VTEw7CiAK IAlBc3NlcnQoc2Nhbi0+cnNfZmxhZ3MgJiBTT19UWVBFX0JJVE1BUFNDQU4pOwogCUFzc2VydCho c2Nhbi0+cnNfcmVhZF9zdHJlYW0pOwpAQCAtMjUyMyw3ICsyNTMyLDkgQEAgQml0bWFwSGVhcFNj YW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2FuLAogCS8qCiAJICogUHJ1bmUgYW5kIHJlcGFp ciBmcmFnbWVudGF0aW9uIGZvciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9zc2libGUuCiAJICovCi0J aGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19yZCwgYnVmZmVyKTsKKwlpZiAoc2Nhbi0+cnNf ZmxhZ3MgJiBTT19ISU5UX1JFTF9SRUFEX09OTFkpCisJCXZtYnVmZmVyID0gJmhzY2FuLT5yc192 bWJ1ZmZlcjsKKwloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX3JkLCBidWZmZXIsIHZtYnVm ZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJlIGxvY2sgb24gdGhlIGJ1ZmZlciBj b250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwppbmRleCA5ZjEyNTc1MjliOS4uMDRhYTU2ZTgxYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k 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 LAogCQkJCQkJCQkJICAgTlVMTCwgTlVMTCk7CiAKQEAgLTk1MSw2ICs5NjQsOSBAQCBpZGVudGlm eV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIs CiAgKiBjb3JydXB0ZWQsIGl0IHdpbGwgZml4IHRoZW0gYnkgY2xlYXJpbmcgdGhlIFZNIGJpdHMg YW5kIHZpc2liaWxpdHkgaGludC4KICAqIFRoaXMgZG9lcyBub3QgbmVlZCB0byBiZSBkb25lIGlu IGEgY3JpdGljYWwgc2VjdGlvbi4KICAqCisgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb25seSBh ZnRlciBkb19mcmVlemUgaGFzIGJlZW4gZGVjaWRlZCAoYW5kIGRvX3BydW5lCisgKiBoYXMgYmVl biBzZXQpLCBhcyB0aGVzZSBmYWN0b3IgaW50byBvdXIgaGV1cmlzdGljLWJhc2VkIGRlY2lzaW9u LgorICoKICAqIFJldHVybnMgdHJ1ZSBpZiBvbmUgb3IgYm90aCBWTSBiaXRzIHNob3VsZCBiZSBz ZXQsIGFsb25nIHdpdGggcmV0dXJuaW5nIHRoZQogICogY3VycmVudCB2YWx1ZSBvZiB0aGUgVk0g Yml0cyBpbiAqb2xkX3ZtYml0cyBhbmQgdGhlIGRlc2lyZWQgbmV3IHZhbHVlIG9mCiAgKiB0aGUg Vk0gYml0cyBpbiAqbmV3X3ZtYml0cy4KQEAgLTk2NCw2ICs5ODAsOCBAQCBoZWFwX3BhZ2Vfd2ls bF9zZXRfdm0oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAkJCQkJICBSZWxhdGlvbiByZWxhdGlvbiwK IAkJCQkJICBCbG9ja051bWJlciBoZWFwX2JsaywgQnVmZmVyIGhlYXBfYnVmZmVyLCBQYWdlIGhl YXBfcGFnZSwKIAkJCQkJICBCdWZmZXIgdm1idWZmZXIsCisJCQkJCSAgUHJ1bmVSZWFzb24gcmVh c29uLAorCQkJCQkgIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLAogCQkJCQkgIGludCBu bHBkZWFkX2l0ZW1zLAogCQkJCQkgIHVpbnQ4ICpvbGRfdm1iaXRzLAogCQkJCQkgIHVpbnQ4ICpu ZXdfdm1iaXRzKQpAQCAtOTc0LDYgKzk5MiwyNCBAQCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oUHJ1 bmVTdGF0ZSAqcHJzdGF0ZSwKIAlpZiAoIXByc3RhdGUtPmF0dGVtcHRfdXBkYXRlX3ZtKQogCQly ZXR1cm4gZmFsc2U7CiAKKwkvKgorCSAqIElmIHRoaXMgaXMgYW4gb24tYWNjZXNzIGNhbGwgYW5k IHdlJ3JlIG5vdCBhY3R1YWxseSBwcnVuaW5nLCBhdm9pZAorCSAqIHNldHRpbmcgdGhlIHZpc2li aWxpdHkgbWFwIGlmIGl0IHdvdWxkIG5ld2x5IGRpcnR5IHRoZSBoZWFwIHBhZ2Ugb3IsIGlmCisJ ICogdGhlIHBhZ2UgaXMgYWxyZWFkeSBkaXJ0eSwgaWYgZG9pbmcgc28gd291bGQgcmVxdWlyZSBp bmNsdWRpbmcgYQorCSAqIGZ1bGwtcGFnZSBpbWFnZSAoRlBJKSBvZiB0aGUgaGVhcCBwYWdlIGlu IHRoZSBXQUwuIFRoaXMgc2l0dWF0aW9uCisJICogc2hvdWxkIGJlIHJhcmUsIGFzIG9uLWFjY2Vz cyBwcnVuaW5nIGlzIG9ubHkgYXR0ZW1wdGVkIHdoZW4KKwkgKiBwZF9wcnVuZV94aWQgaXMgdmFs aWQuCisJICovCisJaWYgKHJlYXNvbiA9PSBQUlVORV9PTl9BQ0NFU1MgJiYKKwkJcHJzdGF0ZS0+ YWxsX3Zpc2libGUgJiYKKwkJIWRvX3BydW5lICYmICFkb19mcmVlemUgJiYKKwkJKCFCdWZmZXJJ c0RpcnR5KGhlYXBfYnVmZmVyKSB8fCBYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cChoZWFwX2J1 ZmZlcikpKQorCXsKKwkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS0+ YWxsX2Zyb3plbiA9IGZhbHNlOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJKm9sZF92bWJpdHMg PSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBfYmxrLAogCQkJCQkJCQkJ CSAgICZ2bWJ1ZmZlcik7CiAKQEAgLTExNzEsNiArMTIwNyw4IEBAIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJCQkgIGJ1ZmZlciwK IAkJCQkJCQkJCSAgcGFnZSwKIAkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkgIHBhcmFt cy0+cmVhc29uLAorCQkJCQkJCQkJICBkb19wcnVuZSwgZG9fZnJlZXplLAogCQkJCQkJCQkJICBw cnN0YXRlLmxwZGVhZF9pdGVtcywKIAkJCQkJCQkJCSAgJm9sZF92bWJpdHMsCiAJCQkJCQkJCQkg ICZuZXdfdm1iaXRzKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBhMGU4OTM2NWM3MC4uN2U2ODkyOGYz ZTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTk1LDYgKzk1LDEzIEBAIHR5cGVkZWYgc3RydWN0IEhl YXBTY2FuRGVzY0RhdGEKIAkgKi8KIAlQYXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyRGF0YSAq cnNfcGFyYWxsZWx3b3JrZXJkYXRhOwogCisJLyoKKwkgKiBGb3Igc2VxdWVudGlhbCBzY2FucyBh bmQgYml0bWFwIGhlYXAgc2NhbnMuIElmIHRoZSByZWxhdGlvbiBpcyBub3QKKwkgKiBiZWluZyBt b2RpZmllZCwgb24tYWNjZXNzIHBydW5pbmcgbWF5IHJlYWQgaW4gdGhlIGN1cnJlbnQgaGVhcCBw YWdlJ3MKKwkgKiBjb3JyZXNwb25kaW5nIFZNIGJsb2NrIHRvIHRoaXMgYnVmZmVyLgorCSAqLwor CUJ1ZmZlcgkJcnNfdm1idWZmZXI7CisKIAkvKiB0aGVzZSBmaWVsZHMgb25seSB1c2VkIGluIHBh Z2UtYXQtYS10aW1lIG1vZGUgYW5kIGZvciBiaXRtYXAgc2NhbnMgKi8KIAl1aW50MzIJCXJzX2Np bmRleDsJCS8qIGN1cnJlbnQgdHVwbGUncyBpbmRleCBpbiB2aXN0dXBsZXMgKi8KIAl1aW50MzIJ CXJzX250dXBsZXM7CQkvKiBudW1iZXIgb2YgdmlzaWJsZSB0dXBsZXMgb24gcGFnZSAqLwpAQCAt MTE3LDggKzEyNCwxOCBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEZldGNoSGVhcERhdGEKIHsKIAlJ bmRleEZldGNoVGFibGVEYXRhIHhzX2Jhc2U7CS8qIEFNIGluZGVwZW5kZW50IHBhcnQgb2YgdGhl IGRlc2NyaXB0b3IgKi8KIAotCUJ1ZmZlcgkJeHNfY2J1ZjsJCS8qIGN1cnJlbnQgaGVhcCBidWZm ZXIgaW4gc2NhbiwgaWYgYW55ICovCi0JLyogTkI6IGlmIHhzX2NidWYgaXMgbm90IEludmFsaWRC dWZmZXIsIHdlIGhvbGQgYSBwaW4gb24gdGhhdCBidWZmZXIgKi8KKwkvKgorCSAqIEN1cnJlbnQg aGVhcCBidWZmZXIgaW4gc2NhbiwgaWYgYW55LiBOQjogaWYgeHNfY2J1ZiBpcyBub3QKKwkgKiBJ bnZhbGlkQnVmZmVyLCB3ZSBob2xkIGEgcGluIG9uIHRoYXQgYnVmZmVyLgorCSAqLworCUJ1ZmZl cgkJeHNfY2J1ZjsKKworCS8qCisJICogRm9yIGluZGV4IHNjYW5zIHRoYXQgZG8gbm90IG1vZGlm eSB0aGUgdW5kZXJseWluZyBoZWFwIHRhYmxlLCBvbi1hY2Nlc3MKKwkgKiBwcnVuaW5nIG1heSBy ZWFkIGluIHRoZSBjdXJyZW50IGhlYXAgcGFnZSdzIGNvcnJlc3BvbmRpbmcgVk0gYmxvY2sgdG8K KwkgKiB0aGlzIGJ1ZmZlci4KKwkgKi8KKwlCdWZmZXIJCXhzX3ZtYnVmZmVyOwogCiAJLyoKIAkg KiBTb21lIG9wdGltaXphdGlvbnMgY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGlmIHRoZSBxdWVyeSBk b2VzIG5vdCBtb2RpZnkKQEAgLTQxOSw3ICs0MzYsOCBAQCBleHRlcm4gVHJhbnNhY3Rpb25JZCBo ZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMoUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJCQkgIFRNX0lu ZGV4RGVsZXRlT3AgKmRlbHN0YXRlKTsKIAogLyogaW4gaGVhcC9wcnVuZWhlYXAuYyAqLwotZXh0 ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1 ZmZlcik7CitleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9u LCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJCQlCdWZmZXIgKnZtYnVmZmVyKTsKIGV4dGVybiB2b2lk IGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJ CQkJCQkJCQkgICBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKIAkJCQkJCQkJCSAgIE9mZnNl dE51bWJlciAqb2ZmX2xvYywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0 YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5k YnlfbG9naWNhbF9kZWNvZGluZy5wbAppbmRleCBkMjY0YTY5OGZmNi4uYTU1MzZiYTRmZjYgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGlu Zy5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2Rp bmcucGwKQEAgLTI5Niw2ICsyOTYsNyBAQCB3YWxfbGV2ZWwgPSAnbG9naWNhbCcKIG1heF9yZXBs aWNhdGlvbl9zbG90cyA9IDQKIG1heF93YWxfc2VuZGVycyA9IDQKIGF1dG92YWN1dW0gPSBvZmYK K2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KIH0pOwogJG5vZGVfcHJpbWFyeS0+ZHVtcF9pbmZv OwogJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CkBAIC03NDgsNyArNzQ5LDcgQEAgY2hlY2tfcGdfcmVj dmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsCiAkbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5s b2dmaWxlOwogCiByZWFjdGl2ZV9zbG90c19jaGFuZ2VfaGZzX2FuZF93YWl0X2Zvcl94bWlucygn c2hhcmVkX3Jvd19yZW1vdmFsXycsCi0JJ25vX2NvbmZsaWN0XycsIDAsIDEpOworCSdub19jb25m bGljdF8nLCAxLCAwKTsKIAogIyBUaGlzIHNob3VsZCBub3QgdHJpZ2dlciBhIGNvbmZsaWN0CiB3 YWl0X3VudGlsX3ZhY3V1bV9jYW5fcmVtb3ZlKAotLSAKMi40My4wCgo= --00000000000050ca310647bb8e6c Content-Type: text/x-patch; charset="UTF-8"; name="v33-0016-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v33-0016-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk2v356k15 RnJvbSA1ZTI3ZjMwYmQ5NzBjNzU0NmEyZWM3NjM1MzNkMDNlYzQ0YzFkNjliIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MzMgMTYvMTZdIFNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0Ck1JTUUtVmVyc2lvbjog MS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5z ZmVyLUVuY29kaW5nOiA4Yml0CgpOb3cgdGhhdCB2aXNpYmlsaXR5IG1hcCAoVk0pIHVwZGF0ZXMg Y2FuIG9jY3VyIGR1cmluZyByZWFkLW9ubHkgcXVlcmllcywKaXQgbWFrZXMgc2Vuc2UgdG8gYWxz byBzZXQgdGhlIHBhZ2XigJlzIHBkX3BydW5lX3hpZCBoaW50IGR1cmluZyBpbnNlcnRzLgpUaGlz IGVuYWJsZXMgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0byBydW4gYWZ0ZXIgYSBwYWdl IGlzCmZpbGxlZCB3aXRoIG5ld2x5IGluc2VydGVkIHR1cGxlcyB0aGUgZmlyc3QgdGltZSBpdCBp cyByZWFkLgoKVGhpcyBjaGFuZ2UgYWxzbyBhZGRyZXNzZXMgYSBsb25nLXN0YW5kaW5nIG5vdGUg aW4gaGVhcF9pbnNlcnQoKSBhbmQKaGVhcF9tdWx0aV9pbnNlcnQoKSwgd2hpY2ggb2JzZXJ2ZWQg dGhhdCBzZXR0aW5nIHBkX3BydW5lX3hpZCB3b3VsZApoZWxwIGNsZWFuIHVwIGFib3J0ZWQgaW5z ZXJ0aW9ucyBzb29uZXIuIFdpdGhvdXQgaXQsIHN1Y2ggdHVwbGVzIG1pZ2h0CmxpbmdlciB1bnRp bCBWQUNVVU0sIHdoZXJlYXMgbm93IHRoZXkgY2FuIGJlIHBydW5lZCBlYXJsaWVyLgoKVGhlIGlu ZGV4IGtpbGx0dXBsZXMgdGVzdCBoYWQgdG8gYmUgdXBkYXRlZCB0byByZWZsZWN0IGEgbGFyZ2Vy IG51bWJlcgpvZiBoaXRzIGJ5IHNvbWUgYWNjZXNzZXMuIFNpbmNlIHRoZSBwcnVuZV94aWQgaXMg c2V0IGJ5IHRoZSBmaWxsL2luc2VydApzdGVwLCBvbi1hY2Nlc3MgcHJ1bmluZyBjYW4gaGFwcGVu IGR1cmluZyB0aGUgZmlyc3QgYWNjZXNzIHN0ZXAgKGJlZm9yZQp0aGUgREVMRVRFKS4gVGhpcyBp cyB3aGVuIHRoZSBWTSBpcyBleHRlbmRlZC4gQWZ0ZXIgdGhlIERFTEVURSwgdGhlIG5leHQKYWNj ZXNzIGhpdHMgdGhlIFZNIGJsb2NrIGluc3RlYWQgb2YgZXh0ZW5kaW5nIGl0LiBUaHVzLCBhbiBh ZGRpdGlvbmFsCmJ1ZmZlciBoaXQgaXMgY291bnRlZCBmb3IgdGhlIHRhYmxlLgoKUmV2aWV3ZWQt Ynk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgIHwgMjUgKysrKysrKysrKysrKy0tLS0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyAgICAgICAgIHwgMTUgKysrKysr KysrKy0KIC4uLi9tb2R1bGVzL2luZGV4L2V4cGVjdGVkL2tpbGx0dXBsZXMub3V0ICAgICB8ICA2 ICsrLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggODk0MDI5N2Y2ZjMuLjE4NDEzZDU4Nzhm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMjEyMiw2ICsyMTIyLDcgQEAgaGVhcF9p bnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENvbW1hbmRJZCBjaWQsCiAJ VHJhbnNhY3Rpb25JZCB4aWQgPSBHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpOwogCUhlYXBUdXBs ZQloZWFwdHVwOwogCUJ1ZmZlcgkJYnVmZmVyOworCVBhZ2UJCXBhZ2U7CiAJQnVmZmVyCQl2bWJ1 ZmZlciA9IEludmFsaWRCdWZmZXI7CiAJYm9vbAkJYWxsX3Zpc2libGVfY2xlYXJlZCA9IGZhbHNl OwogCkBAIC0yMTgxLDE1ICsyMTgyLDE5IEBAIGhlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9u LCBIZWFwVHVwbGUgdHVwLCBDb21tYW5kSWQgY2lkLAogCX0KIAogCS8qCi0JICogWFhYIFNob3Vs ZCB3ZSBzZXQgUGFnZVNldFBydW5hYmxlIG9uIHRoaXMgcGFnZSA/CisJICogU2V0IHBkX3BydW5l X3hpZCB0byB0cmlnZ2VyIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgb25jZSB0aGUgcGFn ZQorCSAqIGlzIGZ1bGwgc28gdGhhdCB3ZSBjYW4gc2V0IHRoZSBwYWdlIGFsbC12aXNpYmxlIGlu IHRoZSBWTS4KIAkgKgotCSAqIFRoZSBpbnNlcnRpbmcgdHJhbnNhY3Rpb24gbWF5IGV2ZW50dWFs bHkgYWJvcnQgdGh1cyBtYWtpbmcgdGhpcyB0dXBsZQotCSAqIERFQUQgYW5kIGhlbmNlIGF2YWls YWJsZSBmb3IgcHJ1bmluZy4gVGhvdWdoIHdlIGRvbid0IHdhbnQgdG8gb3B0aW1pemUKLQkgKiBm b3IgYWJvcnRzLCBpZiBubyBvdGhlciB0dXBsZSBpbiB0aGlzIHBhZ2UgaXMgVVBEQVRFZC9ERUxF VEVkLCB0aGUKLQkgKiBhYm9ydGVkIHR1cGxlIHdpbGwgbmV2ZXIgYmUgcHJ1bmVkIHVudGlsIG5l eHQgdmFjdXVtIGlzIHRyaWdnZXJlZC4KKwkgKiBTZXR0aW5nIHBkX3BydW5lX3hpZCBpcyBhbHNv IGhhbmR5IGlmIHRoZSBpbnNlcnRpbmcgdHJhbnNhY3Rpb24KKwkgKiBldmVudHVhbGx5IGFib3J0 cyBtYWtpbmcgdGhpcyB0dXBsZSBERUFEIGFuZCBoZW5jZSBhdmFpbGFibGUgZm9yCisJICogcHJ1 bmluZy4gSWYgbm8gb3RoZXIgdHVwbGUgaW4gdGhpcyBwYWdlIGlzIFVQREFURWQvREVMRVRFZCwg dGhlIGFib3J0ZWQKKwkgKiB0dXBsZSB3b3VsZCBuZXZlciBvdGhlcndpc2UgYmUgcHJ1bmVkIHVu dGlsIG5leHQgdmFjdXVtIGlzIHRyaWdnZXJlZC4KIAkgKgotCSAqIElmIHlvdSBkbyBhZGQgUGFn ZVNldFBydW5hYmxlIGhlcmUsIGFkZCBpdCBpbiBoZWFwX3hsb2dfaW5zZXJ0IHRvby4KKwkgKiBE b24ndCBzZXQgaXQgaWYgd2UgYXJlIGluIGJvb3RzdHJhcCBtb2RlLCB0aG91Z2guCiAJICovCisJ cGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKKwlpZiAoVHJhbnNhY3Rpb25JZElzTm9ybWFs KHhpZCkpCisJCVBhZ2VTZXRQcnVuYWJsZShwYWdlLCB4aWQpOwogCiAJTWFya0J1ZmZlckRpcnR5 KGJ1ZmZlcik7CiAKQEAgLTIxOTksNyArMjIwNCw2IEBAIGhlYXBfaW5zZXJ0KFJlbGF0aW9uIHJl bGF0aW9uLCBIZWFwVHVwbGUgdHVwLCBDb21tYW5kSWQgY2lkLAogCQl4bF9oZWFwX2luc2VydCB4 bHJlYzsKIAkJeGxfaGVhcF9oZWFkZXIgeGxoZHI7CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwotCQlQ YWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCQl1aW50OAkJaW5mbyA9IFhMT0df SEVBUF9JTlNFUlQ7CiAJCWludAkJCWJ1ZmZsYWdzID0gMDsKIApAQCAtMjU2Myw4ICsyNTY3LDEz IEBAIGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAq KnNsb3RzLCBpbnQgbnR1cGxlcywKIAkJfQogCiAJCS8qCi0JCSAqIFhYWCBTaG91bGQgd2Ugc2V0 IFBhZ2VTZXRQcnVuYWJsZSBvbiB0aGlzIHBhZ2UgPyBTZWUgaGVhcF9pbnNlcnQoKQorCQkgKiBT ZXQgcGRfcHJ1bmVfeGlkLiBTZWUgaGVhcF9pbnNlcnQoKSBmb3IgbW9yZSBvbiB3aHkgd2UgZG8g dGhpcyB3aGVuCisJCSAqIGluc2VydGluZyB0dXBsZXMuIFRoaXMgb25seSBtYWtlcyBzZW5zZSBp ZiB3ZSBhcmVuJ3QgYWxyZWFkeQorCQkgKiBzZXR0aW5nIHRoZSBwYWdlIGZyb3plbiBpbiB0aGUg Vk0uIFdlIGFsc28gZG9uJ3Qgc2V0IGl0IGluCisJCSAqIGJvb3RzdHJhcCBtb2RlLgogCQkgKi8K KwkJaWYgKCFhbGxfZnJvemVuX3NldCAmJiBUcmFuc2FjdGlvbklkSXNOb3JtYWwoeGlkKSkKKwkJ CVBhZ2VTZXRQcnVuYWJsZShwYWdlLCB4aWQpOwogCiAJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIp OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCA5YTI5ZmRhMzYwMS4u NDljYzgzYTY0NzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94 bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtNDQ3 LDYgKzQ0NywxMiBAQCBoZWFwX3hsb2dfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQog CiAJCWZyZWVzcGFjZSA9IFBhZ2VHZXRIZWFwRnJlZVNwYWNlKHBhZ2UpOyAvKiBuZWVkZWQgdG8g dXBkYXRlIEZTTSBiZWxvdyAqLwogCisJCS8qCisJCSAqIFNldCB0aGUgcGFnZSBwcnVuYWJsZSB0 byB0cmlnZ2VyIG9uLWFjY2VzcyBwcnVuaW5nIGxhdGVyIHdoaWNoIG1heQorCQkgKiBzZXQgdGhl IHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgorCQkgKi8KKwkJUGFnZVNldFBydW5hYmxlKHBh Z2UsIFhMb2dSZWNHZXRYaWQocmVjb3JkKSk7CisKIAkJUGFnZVNldExTTihwYWdlLCBsc24pOwog CiAJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9WSVNJQkxFX0NMRUFSRUQpCkBA IC01OTYsOSArNjAyLDE2IEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpCiAJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9WSVNJQkxFX0NM RUFSRUQpCiAJCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2UpOwogCi0JCS8qIFhMSF9JTlNFUlRf QUxMX0ZST1pFTl9TRVQgaW1wbGllcyB0aGF0IGFsbCB0dXBsZXMgYXJlIHZpc2libGUgKi8KKwkJ LyoKKwkJICogWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCBpbXBsaWVzIHRoYXQgYWxsIHR1cGxl cyBhcmUgdmlzaWJsZS4gSWYKKwkJICogd2UgYXJlIG5vdCBzZXR0aW5nIHRoZSBwYWdlIGZyb3pl biwgdGhlbiBzZXQgdGhlIHBhZ2UncyBwcnVuYWJsZQorCQkgKiBoaW50IHNvIHRoYXQgd2UgdHJp Z2dlciBvbi1hY2Nlc3MgcHJ1bmluZyBsYXRlciB3aGljaCBtYXkgc2V0IHRoZQorCQkgKiBwYWdl IGFsbC12aXNpYmxlIGluIHRoZSBWTS4KKwkJICovCiAJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhf SU5TRVJUX0FMTF9GUk9aRU5fU0VUKQogCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CisJCWVs c2UKKwkJCVBhZ2VTZXRQcnVuYWJsZShwYWdlLCBYTG9nUmVjR2V0WGlkKHJlY29yZCkpOwogCiAJ CU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvaW5kZXgvZXhwZWN0ZWQva2lsbHR1cGxlcy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luZGV4 L2V4cGVjdGVkL2tpbGx0dXBsZXMub3V0CmluZGV4IGJlN2RkZDc1NmVmLi5iMjlmMjQzNGIwMCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmRleC9leHBlY3RlZC9raWxsdHVwbGVzLm91 dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luZGV4L2V4cGVjdGVkL2tpbGx0dXBsZXMub3V0CkBA IC01NCw3ICs1NCw3IEBAIHN0ZXAgZmx1c2g6IFNFTEVDVCBGUk9NIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCgpOwogc3RlcCByZXN1bHQ6IFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxr c19oaXQgLSBjb3VudGVyLmhlYXBfYWNjZXNzZXMgQVMgbmV3X2hlYXBfYWNjZXNzZXMgRlJPTSBj b3VudGVyLCBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3Jf dHVwbGUnOwogbmV3X2hlYXBfYWNjZXNzZXMKIC0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICAg ICAgICAgMQorICAgICAgICAgICAgICAgIDIKICgxIHJvdykKIAogc3RlcCBtZWFzdXJlOiBVUERB VEUgY291bnRlciBTRVQgaGVhcF9hY2Nlc3NlcyA9IChTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBo ZWFwX2Jsa3NfaGl0IEZST00gcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdr aWxsX3ByaW9yX3R1cGxlJyk7CkBAIC0xMzAsNyArMTMwLDcgQEAgc3RlcCBmbHVzaDogU0VMRUNU IEZST00gcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBzdGVwIHJlc3VsdDogU0VMRUNUIGhl YXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCAtIGNvdW50ZXIuaGVhcF9hY2Nlc3NlcyBBUyBu ZXdfaGVhcF9hY2Nlc3NlcyBGUk9NIGNvdW50ZXIsIHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJF IHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZSc7CiBuZXdfaGVhcF9hY2Nlc3NlcwogLS0tLS0t LS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAxCisgICAgICAgICAgICAgICAgMgogKDEgcm93 KQogCiBzdGVwIG1lYXN1cmU6IFVQREFURSBjb3VudGVyIFNFVCBoZWFwX2FjY2Vzc2VzID0gKFNF TEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgRlJPTSBwZ19zdGF0aW9fYWxsX3Rh YmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnKTsKQEAgLTI4Myw3ICsyODMs NyBAQCBzdGVwIGZsdXNoOiBTRUxFQ1QgRlJPTSBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsK IHN0ZXAgcmVzdWx0OiBTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IC0gY291 bnRlci5oZWFwX2FjY2Vzc2VzIEFTIG5ld19oZWFwX2FjY2Vzc2VzIEZST00gY291bnRlciwgcGdf c3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJzsKIG5l d19oZWFwX2FjY2Vzc2VzCiAtLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICAgIDEKKyAg ICAgICAgICAgICAgICAyCiAoMSByb3cpCiAKIHN0ZXAgbWVhc3VyZTogVVBEQVRFIGNvdW50ZXIg U0VUIGhlYXBfYWNjZXNzZXMgPSAoU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hp dCBGUk9NIHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90 dXBsZScpOwotLSAKMi40My4wCgo= --00000000000050ca310647bb8e6c--