Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1Yt2Zz-0006Wi-Dw for pgsql-hackers@arkaria.postgresql.org; Thu, 14 May 2015 23:30:15 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.80) (envelope-from ) id 1Yt2Zy-0008Et-SI for pgsql-hackers@arkaria.postgresql.org; Thu, 14 May 2015 23:30:14 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1Yt2Zv-0008AN-NS for pgsql-hackers@postgresql.org; Thu, 14 May 2015 23:30:11 +0000 Received: from mail-wi0-x22a.google.com ([2a00:1450:400c:c05::22a]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1Yt2Zt-0001q9-3L for pgsql-hackers@postgresql.org; Thu, 14 May 2015 23:30:11 +0000 Received: by wicmc15 with SMTP id mc15so26096187wic.1 for ; Thu, 14 May 2015 16:30:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:message-id:date:from:reply-to:user-agent:mime-version:to:cc :subject:references:in-reply-to:content-type; bh=r5PnOEODIvTOiBV2BnOQ3tOl28ApOleuHTZS97cCxpY=; b=0BKDx4Lfmcarv+kafVv2gy9tzX0NqUiSunx7dXddXhKNkA93mFPUj8x4e2nzWcXPP7 ZZCHjPjyh+312+z73+tOk9arKb4OyqkOXoZQ+T9Vij7sFeTOipsaKWEfDWjqPFhY4fV0 Sk02DKDu/y3ylzPT97K5Jp331NXFNEh51RcgaM1c7L5XSkOyGvEkXpYECvRuAM3RYYTK puyoVi5ZC6lTjMTB9SQ2QI8BFACNWib96ybLaf4diSLOheGqsiv8cygpc21VsHR+K+Fs nL+3GpcyT5C8rHdj1dQ4qidMVqkog5Ys+8zf6Y9faURMgbgX7/d/771SYt8A6gdDx3Ax tTjQ== X-Received: by 10.194.61.133 with SMTP id p5mr12954100wjr.132.1431646208404; Thu, 14 May 2015 16:30:08 -0700 (PDT) Received: from [192.168.1.99] (dsl-hkibrasgw1-58c38f-82.dhcp.inet.fi. [88.195.143.82]) by mx.google.com with ESMTPSA id ha4sm573351wib.0.2015.05.14.16.30.06 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 May 2015 16:30:07 -0700 (PDT) Message-ID: <55552FFD.8030808@iki.fi> Date: Fri, 15 May 2015 02:30:05 +0300 From: Heikki Linnakangas Reply-To: hlinnaka@iki.fi User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.6.0 MIME-Version: 1.0 To: Alexander Korotkov CC: Tomas Vondra , pgsql-hackers Subject: Re: KNN-GiST with recheck References: <20140926011800.GA8130@momjian.us> <20140929021631.GG12447@momjian.us> <20141006093609.GA12899@hasegeli.com> <5490357C.8090800@vmware.com> <54EC8D3E.2000908@2ndquadrant.com> <5553A2FF.1030501@iki.fi> <55552F9D.4090603@iki.fi> In-Reply-To: <55552F9D.4090603@iki.fi> Content-Type: multipart/mixed; boundary="------------000909090100090208010402" X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This is a multi-part message in MIME format. --------------000909090100090208010402 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 05/15/2015 02:28 AM, Heikki Linnakangas wrote: > I think this is now ready for committing, but I'm pretty tired now so > I'll read through this one more time in the morning, so that I won't > wake up to a red buildfarm. Forgot to attach the latest patch, here you go. - Heikki --------------000909090100090208010402 Content-Type: application/x-patch; name="0001-Allow-GiST-distance-function-to-return-merely-a-lowe.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-Allow-GiST-distance-function-to-return-merely-a-lowe.pa"; filename*1="tch" RnJvbSBkZjAwZDljOTcyYTc2MGUxZWQ3NzdhN2M5YjE2MDNkYWQxZDNmMTM0 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFr YW5nYXMgPGhlaWtraS5saW5uYWthbmdhc0Bpa2kuZmk+CkRhdGU6IEZyaSwg MTUgTWF5IDIwMTUgMDA6NTY6MjcgKzAzMDAKU3ViamVjdDogW1BBVENIIDEv MV0gQWxsb3cgR2lTVCBkaXN0YW5jZSBmdW5jdGlvbiB0byByZXR1cm4gbWVy ZWx5IGEKIGxvd2VyLWJvdW5kLgoKVGhlIGRpc3RhbmNlIGZ1bmN0aW9uIGNh biBub3cgc2V0ICpyZWNoZWNrID0gZmFsc2UsIGxpa2UgaW5kZXggcXVhbHMu IFRoZQpleGVjdXRvciB3aWxsIHRoZW4gcmUtY2hlY2sgdGhlIE9SREVSIEJZ IGV4cHJlc3Npb25zLCBhbmQgdXNlIGEgcXVldWUgdG8KcmVvcmRlciB0aGUg cmVzdWx0cyBvbiB0aGUgZmx5LgoKVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0 byBkbyBrTk4tc2VhcmNoZXMgb24gcG9seWdvbnMgYW5kIGNpcmNsZXMsIHdo aWNoCnN0b3JlIGEgYm91bmRpbmcgYm94IGluIHRoZSBpbmRleCwgcmF0aGVy IHRoYW4gdGhlIGV4YWN0IHZhbHVlLgoKQWxleGFuZGVyIEtvcm90a292IGFu ZCBtZQotLS0KIGRvYy9zcmMvc2dtbC9naXN0LnNnbWwgICAgICAgICAgICAg ICAgICAgICB8ICAzNSArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dp c3RnZXQuYyAgICAgICAgICB8ICAyMiArLQogc3JjL2JhY2tlbmQvYWNjZXNz L2dpc3QvZ2lzdHByb2MuYyAgICAgICAgIHwgIDM3ICsrKwogc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdHNjYW4uYyAgICAgICAgIHwgICA1ICsKIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyAgICAgICB8IDM1 MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jICAgIHwgIDY5ICsrKystLQog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2dlb19vcHMuYyAgICAgICAgICAgIHwg IDI3ICsrKwogc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggICAgICAgICAg ICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgg ICAgICAgICAgICAgICB8ICAgOSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2Nh dHZlcnNpb24uaCAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfYW1vcC5oICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5oICAgICAgICAgICAgfCAgIDIgKwog c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGVyYXRvci5oICAgICAgICAgIHwg ICA4ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuaCAgICAgICAg ICAgICAgfCAgIDQgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgg ICAgICAgICAgICAgIHwgIDE5ICsrCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFu bm9kZXMuaCAgICAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9pbmNsdWRlL3V0 aWxzL2dlb19kZWNscy5oICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQgfCAgNzggKysr KysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCAg ICAgIHwgIDEyICsKIDE5IGZpbGVzIGNoYW5nZWQsIDY2MyBpbnNlcnRpb25z KCspLCAzNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvZ2lzdC5zZ21sIGIvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbAppbmRleCBl N2QxZmY5Li4xMjkxZjhkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZ2lz dC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9naXN0LnNnbWwKQEAgLTEwNSw2 ICsxMDUsNyBAQAogICAgICAgIDxsaXRlcmFsPn49PC8+CiAgICAgICA8L2Vu dHJ5PgogICAgICAgPGVudHJ5PgorICAgICAgIDxsaXRlcmFsPiZsdDstJmd0 OzwvPgogICAgICAgPC9lbnRyeT4KICAgICAgPC9yb3c+CiAgICAgIDxyb3c+ CkBAIC0xNjMsNiArMTY0LDcgQEAKICAgICAgICA8bGl0ZXJhbD5+PTwvPgog ICAgICAgPC9lbnRyeT4KICAgICAgIDxlbnRyeT4KKyAgICAgICA8bGl0ZXJh bD4mbHQ7LSZndDs8Lz4KICAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93Pgog ICAgICA8cm93PgpAQCAtMjA3LDYgKzIwOSwxMiBAQAogICA8L3RhYmxlPgog CiAgPHBhcmE+CisgIEN1cnJlbnRseSwgb3JkZXJpbmcgYnkgdGhlIGRpc3Rh bmNlIG9wZXJhdG9yIDxsaXRlcmFsPiZsdDstJmd0OzwvPgorICBpcyBzdXBw b3J0ZWQgb25seSB3aXRoIDxsaXRlcmFsPnBvaW50PC8+IGJ5IHRoZSBvcGVy YXRvciBjbGFzc2VzCisgIG9mIHRoZSBnZW9tZXRyaWMgdHlwZXMuCisgPC9w YXJhPgorCisgPHBhcmE+CiAgIEZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIHRo ZSA8bGl0ZXJhbD5pbmV0X29wczwvPiBvcGVyYXRvciBjbGFzcyBpcwogICBu b3QgdGhlIGRlZmF1bHQgY2xhc3MgZm9yIHR5cGVzIDx0eXBlPmluZXQ8Lz4g YW5kIDx0eXBlPmNpZHI8Lz4uCiAgIFRvIHVzZSBpdCwgbWVudGlvbiB0aGUg Y2xhc3MgbmFtZSBpbiA8Y29tbWFuZD5DUkVBVEUgSU5ERVg8Lz4sCkBAIC03 ODAsNiArNzg4LDcgQEAgbXlfZGlzdGFuY2UoUEdfRlVOQ1RJT05fQVJHUykK ICAgICBkYXRhX3R5cGUgICpxdWVyeSA9IFBHX0dFVEFSR19EQVRBX1RZUEVf UCgxKTsKICAgICBTdHJhdGVneU51bWJlciBzdHJhdGVneSA9IChTdHJhdGVn eU51bWJlcikgUEdfR0VUQVJHX1VJTlQxNigyKTsKICAgICAvKiBPaWQgc3Vi dHlwZSA9IFBHX0dFVEFSR19PSUQoMyk7ICovCisgICAgLyogYm9vbCAqcmVj aGVjayA9IChib29sICopIFBHX0dFVEFSR19QT0lOVEVSKDQpOyAqLwogICAg IGRhdGFfdHlwZSAgKmtleSA9IERhdHVtR2V0RGF0YVR5cGUoZW50cnktJmd0 O2tleSk7CiAgICAgZG91YmxlICAgICAgcmV0dmFsOwogCkBAIC03OTIsMTQg KzgwMSwyNCBAQCBteV9kaXN0YW5jZShQR19GVU5DVElPTl9BUkdTKQogPC9w cm9ncmFtbGlzdGluZz4KIAogICAgICAgIFRoZSBhcmd1bWVudHMgdG8gdGhl IDxmdW5jdGlvbj5kaXN0YW5jZTwvPiBmdW5jdGlvbiBhcmUgaWRlbnRpY2Fs IHRvCi0gICAgICAgdGhlIGFyZ3VtZW50cyBvZiB0aGUgPGZ1bmN0aW9uPmNv bnNpc3RlbnQ8Lz4gZnVuY3Rpb24sIGV4Y2VwdCB0aGF0IG5vCi0gICAgICAg cmVjaGVjayBmbGFnIGlzIHVzZWQuICBUaGUgZGlzdGFuY2UgdG8gYSBsZWFm IGluZGV4IGVudHJ5IG11c3QgYWx3YXlzCi0gICAgICAgYmUgZGV0ZXJtaW5l ZCBleGFjdGx5LCBzaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8gcmUtb3JkZXIg dGhlIHR1cGxlcwotICAgICAgIG9uY2UgdGhleSBhcmUgcmV0dXJuZWQuICBT b21lIGFwcHJveGltYXRpb24gaXMgYWxsb3dlZCB3aGVuIGRldGVybWluaW5n Ci0gICAgICAgdGhlIGRpc3RhbmNlIHRvIGFuIGludGVybmFsIHRyZWUgbm9k ZSwgc28gbG9uZyBhcyB0aGUgcmVzdWx0IGlzIG5ldmVyCi0gICAgICAgZ3Jl YXRlciB0aGFuIGFueSBjaGlsZCdzIGFjdHVhbCBkaXN0YW5jZS4gIFRodXMs IGZvciBleGFtcGxlLCBkaXN0YW5jZQotICAgICAgIHRvIGEgYm91bmRpbmcg Ym94IGlzIHVzdWFsbHkgc3VmZmljaWVudCBpbiBnZW9tZXRyaWMgYXBwbGlj YXRpb25zLiAgVGhlCi0gICAgICAgcmVzdWx0IHZhbHVlIGNhbiBiZSBhbnkg ZmluaXRlIDx0eXBlPmZsb2F0ODwvPiB2YWx1ZS4gIChJbmZpbml0eSBhbmQK KyAgICAgICB0aGUgYXJndW1lbnRzIG9mIHRoZSA8ZnVuY3Rpb24+Y29uc2lz dGVudDwvPiBmdW5jdGlvbi4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBh cmE+CisgICAgICAgU29tZSBhcHByb3hpbWF0aW9uIGlzIGFsbG93ZWQgd2hl biBkZXRlcm1pbmluZyB0aGUgZGlzdGFuY2UsIGFzIGxvbmcgYXMKKyAgICAg ICB0aGUgcmVzdWx0IGlzIG5ldmVyIGdyZWF0ZXIgdGhhbiB0aGUgZW50cnkn cyBhY3R1YWwgZGlzdGFuY2UuIFRodXMsIGZvcgorICAgICAgIGV4YW1wbGUs IGRpc3RhbmNlIHRvIGEgYm91bmRpbmcgYm94IGlzIHVzdWFsbHkgc3VmZmlj aWVudCBpbiBnZW9tZXRyaWMKKyAgICAgICBhcHBsaWNhdGlvbnMuICBGb3Ig YW4gaW50ZXJuYWwgdHJlZSBub2RlLCB0aGUgZGlzdGFuY2UgcmV0dXJuZWQg bXVzdCBub3QKKyAgICAgICBiZSBncmVhdGVyIHRoYW4gdGhlIGRpc3RhbmNl IHRvIGFueSBvZiB0aGUgY2hpbGQgbm9kZXMuIElmIHRoZSByZXR1cm5lZAor ICAgICAgIGRpc3RhbmNlIGlzIG5vdCBhY2N1cmF0ZSwgdGhlIGZ1bmN0aW9u IG11c3Qgc2V0ICpyZWNoZWNrIHRvIGZhbHNlLiAoVGhpcworICAgICAgIGlz IG5vdCBuZWNlc3NhcnkgZm9yIGludGVybmFsIHRyZWUgbm9kZXM7IGZvciB0 aGVtLCB0aGUgY2FsY3VsYXRpb24gaXMKKyAgICAgICBhbHdheXMgYXNzdW1l ZCB0byBiZSBpbmFjY3VyYXRlKS4gVGhlIGV4ZWN1dG9yIHdpbGwgY2FsY3Vs YXRlIHRoZQorICAgICAgIGFjY3VyYXRlIGRpc3RhbmNlIGFmdGVyIGZldGNo aW5nIHRoZSB0dXBsZSBmcm9tIHRoZSBoZWFwLCBhbmQgcmVvcmRlcgorICAg ICAgIHRoZSB0dXBsZXMgaWYgbmVjZXNzYXJ5LgorICAgICAgPC9wYXJhPgor CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgcmVzdWx0IHZhbHVlIGNhbiBi ZSBhbnkgZmluaXRlIDx0eXBlPmZsb2F0ODwvPiB2YWx1ZS4gIChJbmZpbml0 eSBhbmQKICAgICAgICBtaW51cyBpbmZpbml0eSBhcmUgdXNlZCBpbnRlcm5h bGx5IHRvIGhhbmRsZSBjYXNlcyBzdWNoIGFzIG51bGxzLCBzbyBpdAogICAg ICAgIGlzIG5vdCByZWNvbW1lbmRlZCB0aGF0IDxmdW5jdGlvbj5kaXN0YW5j ZTwvPiBmdW5jdGlvbnMgcmV0dXJuIHRoZXNlCiAgICAgICAgdmFsdWVzLikK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RnZXQu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RnZXQuYwppbmRleCBl NGMwMGMyLi45MGNiM2UwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0Z2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdGdldC5jCkBAIC0xNzYsNiArMTc2LDcgQEAgZ2lzdGluZGV4X2tl eXRlc3QoSW5kZXhTY2FuRGVzYyBzY2FuLAogCQllbHNlCiAJCXsKIAkJCURh dHVtCQlkaXN0OworCQkJYm9vbAkJcmVjaGVjazsKIAkJCUdJU1RFTlRSWQlk ZTsKIAogCQkJZ2lzdGRlbnRyeWluaXQoZ2lzdHN0YXRlLCBrZXktPnNrX2F0 dG5vIC0gMSwgJmRlLApAQCAtMTkyLDE2ICsxOTMsMjEgQEAgZ2lzdGluZGV4 X2tleXRlc3QoSW5kZXhTY2FuRGVzYyBzY2FuLAogCQkJICogYWx3YXlzIGJl IHplcm8sIGJ1dCBtaWdodCBhcyB3ZWxsIHBhc3MgaXQgZm9yIHBvc3NpYmxl IGZ1dHVyZQogCQkJICogdXNlLikKIAkJCSAqCi0JCQkgKiBOb3RlIHRoYXQg RGlzdGFuY2UgZnVuY3Rpb25zIGRvbid0IGdldCBhIHJlY2hlY2sgYXJndW1l bnQuIFdlCi0JCQkgKiBjYW4ndCB0b2xlcmF0ZSBsb3NzeSBkaXN0YW5jZSBj YWxjdWxhdGlvbnMgb24gbGVhZiB0dXBsZXM7Ci0JCQkgKiB0aGVyZSBpcyBu byBvcHBvcnR1bml0eSB0byByZS1zb3J0IHRoZSB0dXBsZXMgYWZ0ZXJ3YXJk cy4KKwkJCSAqIERpc3RhbmNlIGZ1bmN0aW9ucyBnZXQgYSByZWNoZWNrIGFy Z3VtZW50IGFzIHdlbGwuIEluIHRoaXMKKwkJCSAqIGNhc2UgdGhlIHJldHVy bmVkIGRpc3RhbmNlIGlzIHRoZSBsb3dlciBib3VuZCBvZiBkaXN0YW5jZQor CQkJICogYW5kIG5lZWRzIHRvIGJlIHJlY2hlY2tlZC4gV2UgcmV0dXJuIHNp bmdsZSByZWNoZWNrIGZsYWcKKwkJCSAqIHdoaWNoIG1lYW5zIHRoYXQgYm90 aCBxdWFscyBhbmQgZGlzdGFuY2VzIGFyZSB0byBiZQorCQkJICogcmVjaGVj a2VkLgogCQkJICovCi0JCQlkaXN0ID0gRnVuY3Rpb25DYWxsNENvbGwoJmtl eS0+c2tfZnVuYywKKwkJCWRpc3QgPSBGdW5jdGlvbkNhbGw1Q29sbCgma2V5 LT5za19mdW5jLAogCQkJCQkJCQkJIGtleS0+c2tfY29sbGF0aW9uLAogCQkJ CQkJCQkJIFBvaW50ZXJHZXREYXR1bSgmZGUpLAogCQkJCQkJCQkJIGtleS0+ c2tfYXJndW1lbnQsCiAJCQkJCQkJCQkgSW50MzJHZXREYXR1bShrZXktPnNr X3N0cmF0ZWd5KSwKLQkJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKGtleS0+ c2tfc3VidHlwZSkpOworCQkJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0oa2V5 LT5za19zdWJ0eXBlKSwKKwkJCQkJCQkJCSBQb2ludGVyR2V0RGF0dW0oJnJl Y2hlY2spKTsKKworCQkJKnJlY2hlY2tfcCB8PSByZWNoZWNrOwogCiAJCQkq ZGlzdGFuY2VfcCA9IERhdHVtR2V0RmxvYXQ4KGRpc3QpOwogCQl9CkBAIC00 MzQsNiArNDQwLDcgQEAgZ2V0TmV4dE5lYXJlc3QoSW5kZXhTY2FuRGVzYyBz Y2FuKQogewogCUdJU1RTY2FuT3BhcXVlIHNvID0gKEdJU1RTY2FuT3BhcXVl KSBzY2FuLT5vcGFxdWU7CiAJYm9vbAkJcmVzID0gZmFsc2U7CisJaW50CQkJ aTsKIAogCWlmIChzY2FuLT54c19pdHVwKQogCXsKQEAgLTQ1NCw2ICs0NjEs MTEgQEAgZ2V0TmV4dE5lYXJlc3QoSW5kZXhTY2FuRGVzYyBzY2FuKQogCQkJ LyogZm91bmQgYSBoZWFwIGl0ZW0gYXQgY3VycmVudGx5IG1pbmltYWwgZGlz dGFuY2UgKi8KIAkJCXNjYW4tPnhzX2N0dXAudF9zZWxmID0gaXRlbS0+ZGF0 YS5oZWFwLmhlYXBQdHI7CiAJCQlzY2FuLT54c19yZWNoZWNrID0gaXRlbS0+ ZGF0YS5oZWFwLnJlY2hlY2s7CisJCQlmb3IgKGkgPSAwOyBpIDwgc2Nhbi0+ bnVtYmVyT2ZPcmRlckJ5czsgaSsrKQorCQkJeworCQkJCXNjYW4tPnhzX29y ZGVyYnl2YWxzW2ldID0gRmxvYXQ4R2V0RGF0dW0oaXRlbS0+ZGlzdGFuY2Vz W2ldKTsKKwkJCQlzY2FuLT54c19vcmRlcmJ5bnVsbHNbaV0gPSBmYWxzZTsK KwkJCX0KIAogCQkJLyogaW4gYW4gaW5kZXgtb25seSBzY2FuLCBhbHNvIHJl dHVybiB0aGUgcmVjb25zdHJ1Y3RlZCB0dXBsZS4gKi8KIAkJCWlmIChzY2Fu LT54c193YW50X2l0dXApCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0cHJvYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3Qv Z2lzdHByb2MuYwppbmRleCA5ZDIxZTNmLi4zOGRhZDExIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0cHJvYy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3Rwcm9jLmMKQEAgLTE0NzgsMyAr MTQ3OCw0MCBAQCBnaXN0X3BvaW50X2Rpc3RhbmNlKFBHX0ZVTkNUSU9OX0FS R1MpCiAKIAlQR19SRVRVUk5fRkxPQVQ4KGRpc3RhbmNlKTsKIH0KKworLyoK KyAqIFRoZSBpbmV4YWN0IEdpU1QgZGlzdGFuY2UgbWV0aG9kIGZvciBnZW9t ZXRyaWMgdHlwZXMgdGhhdCBzdG9yZSBib3VuZGluZworICogYm94ZXMuCisg KgorICogQ29tcHV0ZSBsb3NzeSBkaXN0YW5jZSBmcm9tIHBvaW50IHRvIGlu ZGV4IGVudHJpZXMuICBUaGUgcmVzdWx0IGlzIGluZXhhY3QKKyAqIGJlY2F1 c2UgaW5kZXggZW50cmllcyBhcmUgYm91bmRpbmcgYm94ZXMsIG5vdCB0aGUg ZXhhY3Qgc2hhcGVzIG9mIHRoZQorICogaW5kZXhlZCBnZW9tZXRyaWMgdHlw ZXMuICBXZSB1c2UgZGlzdGFuY2UgZnJvbSBwb2ludCB0byBNQlIgb2YgaW5k ZXggZW50cnkuCisgKiBUaGlzIGlzIGNvcnJlY3QgbG93ZXIgYm91bmQgZXN0 aW1hdGUgb2YgZGlzdGFuY2UgZnJvbSBwb2ludCB0byBpbmRleGVkCisgKiBn ZW9tZXRyaWMgdHlwZS4KKyAqLworRGF0dW0KK2dpc3RfYmJveF9kaXN0YW5j ZShQR19GVU5DVElPTl9BUkdTKQoreworCUdJU1RFTlRSWSAgKmVudHJ5ID0g KEdJU1RFTlRSWSAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKwlTdHJhdGVn eU51bWJlciBzdHJhdGVneSA9IChTdHJhdGVneU51bWJlcikgUEdfR0VUQVJH X1VJTlQxNigyKTsKKwlib29sCSAgICpyZWNoZWNrID0gKGJvb2wgKikgUEdf R0VUQVJHX1BPSU5URVIoNCk7CisJZG91YmxlCQlkaXN0YW5jZTsKKwlTdHJh dGVneU51bWJlciBzdHJhdGVneUdyb3VwID0gc3RyYXRlZ3kgLyBHZW9TdHJh dGVneU51bWJlck9mZnNldDsKKworCS8qIEJvdW5kaW5nIGJveCBkaXN0YW5j ZSBpcyBhbHdheXMgaW5leGFjdC4gKi8KKwkqcmVjaGVjayA9IHRydWU7CisK Kwlzd2l0Y2ggKHN0cmF0ZWd5R3JvdXApCisJeworCQljYXNlIFBvaW50U3Ry YXRlZ3lOdW1iZXJHcm91cDoKKwkJCWRpc3RhbmNlID0gY29tcHV0ZURpc3Rh bmNlKGZhbHNlLAorCQkJCQkJCQkJICAgRGF0dW1HZXRCb3hQKGVudHJ5LT5r ZXkpLAorCQkJCQkJCQkJICAgUEdfR0VUQVJHX1BPSU5UX1AoMSkpOworCQkJ YnJlYWs7CisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5rbm93biBz dHJhdGVneSBudW1iZXI6ICVkIiwgc3RyYXRlZ3kpOworCQkJZGlzdGFuY2Ug PSAwLjA7CQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJfQorCisJUEdf UkVUVVJOX0ZMT0FUOChkaXN0YW5jZSk7Cit9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0c2Nhbi5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2dpc3QvZ2lzdHNjYW4uYwppbmRleCA2ZjY1Mzk4Li4wOTk4NDlh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0c2Nh bi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RzY2FuLmMK QEAgLTg1LDYgKzg1LDExIEBAIGdpc3RiZWdpbnNjYW4oUEdfRlVOQ1RJT05f QVJHUykKIAkvKiB3b3Jrc3BhY2VzIHdpdGggc2l6ZSBkZXBlbmRlbnQgb24g bnVtYmVyT2ZPcmRlckJ5czogKi8KIAlzby0+ZGlzdGFuY2VzID0gcGFsbG9j KHNpemVvZihkb3VibGUpICogc2Nhbi0+bnVtYmVyT2ZPcmRlckJ5cyk7CiAJ c28tPnF1YWxfb2sgPSB0cnVlOwkJCS8qIGluIGNhc2UgdGhlcmUgYXJlIHpl cm8ga2V5cyAqLworCWlmIChzY2FuLT5udW1iZXJPZk9yZGVyQnlzID4gMCkK Kwl7CisJCXNjYW4tPnhzX29yZGVyYnl2YWxzID0gcGFsbG9jKHNpemVvZihE YXR1bSkgKiBzY2FuLT5udW1iZXJPZk9yZGVyQnlzKTsKKwkJc2Nhbi0+eHNf b3JkZXJieW51bGxzID0gcGFsbG9jKHNpemVvZihib29sKSAqIHNjYW4tPm51 bWJlck9mT3JkZXJCeXMpOworCX0KIAogCXNjYW4tPm9wYXF1ZSA9IHNvOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhz Y2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMK aW5kZXggNDhmYTkxOS4uOTM4Njc2OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYwpAQCAtMTYsNiArMTYsNyBAQAog ICogSU5URVJGQUNFIFJPVVRJTkVTCiAgKgkJRXhlY0luZGV4U2NhbgkJCXNj YW5zIGEgcmVsYXRpb24gdXNpbmcgYW4gaW5kZXgKICAqCQlJbmRleE5leHQJ CQkJcmV0cmlldmUgbmV4dCB0dXBsZSB1c2luZyBpbmRleAorICoJCUluZGV4 TmV4dFdpdGhSZW9yZGVyCXNhbWUsIGJ1dCByZWNoZWNrIE9SREVSIEJZIGV4 cHJlc3Npb25zCiAgKgkJRXhlY0luaXRJbmRleFNjYW4JCWNyZWF0ZXMgYW5k IGluaXRpYWxpemVzIHN0YXRlIGluZm8uCiAgKgkJRXhlY1JlU2NhbkluZGV4 U2NhbgkJcmVzY2FucyB0aGUgaW5kZXhlZCByZWxhdGlvbi4KICAqCQlFeGVj RW5kSW5kZXhTY2FuCQlyZWxlYXNlcyBhbGwgc3RvcmFnZS4KQEAgLTI4LDE0 ICsyOSw5MiBAQAogI2luY2x1ZGUgImFjY2Vzcy9yZWxzY2FuLmgiCiAjaW5j bHVkZSAiZXhlY3V0b3IvZXhlY2RlYnVnLmgiCiAjaW5jbHVkZSAiZXhlY3V0 b3Ivbm9kZUluZGV4c2Nhbi5oIgorI2luY2x1ZGUgImxpYi9wYWlyaW5naGVh cC5oIgogI2luY2x1ZGUgIm9wdGltaXplci9jbGF1c2VzLmgiCiAjaW5jbHVk ZSAidXRpbHMvYXJyYXkuaCIKKyNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgog I2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxz L21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAKKy8qCisg KiBXaGVuIGFuIG9yZGVyaW5nIG9wZXJhdG9yIGlzIHVzZWQsIHR1cGxlcyBm ZXRjaGVkIGZyb20gdGhlIGluZGV4IHRoYXQKKyAqIG5lZWQgdG8gYmUgcmVv cmRlcmVkIGFyZSBxdWV1ZWQgaW4gYSBwYWlyaW5nIGhlYXAsIGFzIFJlb3Jk ZXJUdXBsZXMuCisgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisJcGFpcmluZ2hl YXBfbm9kZSBwaF9ub2RlOworCUhlYXBUdXBsZQlodHVwOworCURhdHVtCSAg ICpvcmRlcmJ5dmFsczsKKwlib29sCSAgICpvcmRlcmJ5bnVsbHM7Cit9IFJl b3JkZXJUdXBsZTsKKworc3RhdGljIGludAorY21wX29yZGVyYnl2YWxzKGNv bnN0IERhdHVtICphZGlzdCwgY29uc3QgYm9vbCAqYW51bGxzLAorCQkJCWNv bnN0IERhdHVtICpiZGlzdCwgY29uc3QgYm9vbCAqYm51bGxzLAorCQkJCUlu ZGV4U2NhblN0YXRlICpub2RlKQoreworCWludAkJCWk7CisJaW50CQkJcmVz dWx0OworCisJZm9yIChpID0gMDsgaSA8IG5vZGUtPmlzc19OdW1PcmRlckJ5 S2V5czsgaSsrKQorCXsKKwkJU29ydFN1cHBvcnQgc3N1cCA9ICZub2RlLT5p c3NfU29ydFN1cHBvcnRbaV07CisKKwkJLyogSGFuZGxlIG51bGxzLiBXZSBv bmx5IHN1cHBvcnQgTlVMTFMgTEFTVC4gKi8KKwkJaWYgKGFudWxsc1tpXSAm JiAhYm51bGxzW2ldKQorCQkJcmV0dXJuIDE7CisJCWVsc2UgaWYgKCFhbnVs bHNbaV0gJiYgYm51bGxzW2ldKQorCQkJcmV0dXJuIC0xOworCQllbHNlIGlm IChhbnVsbHNbaV0gJiYgYm51bGxzW2ldKQorCQkJcmV0dXJuIDA7CisKKwkJ cmVzdWx0ID0gc3N1cC0+Y29tcGFyYXRvcihhZGlzdFtpXSwgYmRpc3RbaV0s IHNzdXApOworCQlpZiAocmVzdWx0ICE9IDApCisJCQlyZXR1cm4gcmVzdWx0 OworCX0KKworCXJldHVybiAwOworfQorCisvKgorICogUGFpcmluZyBoZWFw IHByb3ZpZGVzIGdldHRpbmcgdG9wbW9zdCAoZ3JlYXRlc3QpIGVsZW1lbnQg d2hpbGUgS05OIHByb3ZpZGVzCisgKiBhc2NlbmRpbmcgc29ydC4gVGhhdCdz IHdoeSB3ZSBpbnZlcnNlIHRoZSBzb3J0IG9yZGVyLgorICovCitzdGF0aWMg aW50CityZW9yZGVyYnVmZmVyX2NtcChjb25zdCBwYWlyaW5naGVhcF9ub2Rl ICphLCBjb25zdCBwYWlyaW5naGVhcF9ub2RlICpiLCB2b2lkICphcmcpCit7 CisJUmVvcmRlclR1cGxlICpydGEgPSAoUmVvcmRlclR1cGxlICopIGE7CisJ UmVvcmRlclR1cGxlICpydGIgPSAoUmVvcmRlclR1cGxlICopIGI7CisJSW5k ZXhTY2FuU3RhdGUgKm5vZGUgPSAoSW5kZXhTY2FuU3RhdGUgKikgYXJnOwor CisJcmV0dXJuIC1jbXBfb3JkZXJieXZhbHMocnRhLT5vcmRlcmJ5dmFscywg cnRhLT5vcmRlcmJ5bnVsbHMsCisJCQkJCQkJcnRiLT5vcmRlcmJ5dmFscywg cnRiLT5vcmRlcmJ5bnVsbHMsCisJCQkJCQkJbm9kZSk7Cit9CisKK3N0YXRp YyB2b2lkCitjb3B5T3JkZXJCeVZhbHMoSW5kZXhTY2FuU3RhdGUgKm5vZGUs CisJCQkJY29uc3QgRGF0dW0gKnNyY19kYXR1bXMsIGNvbnN0IGJvb2wgKnNy Y19udWxscywKKwkJCQlEYXR1bSAqZHN0X2RhdHVtcywgYm9vbCAqZHN0X251 bGxzKQoreworCWludAkJCWk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbm9kZS0+ aXNzX051bU9yZGVyQnlLZXlzOyBpKyspCisJeworCQlpZiAoIXNyY19udWxs c1tpXSkKKwkJCWRzdF9kYXR1bXNbaV0gPQlkYXR1bUNvcHkoc3JjX2RhdHVt c1tpXSwKKwkJCQkJCQkJCSAgbm9kZS0+aXNzX09yZGVyQnlUeXBCeVZhbHNb aV0sCisJCQkJCQkJCQkgIG5vZGUtPmlzc19PcmRlckJ5VHlwTGVuc1tpXSk7 CisJCWVsc2UKKwkJCWRzdF9kYXR1bXNbaV0gPSAoRGF0dW0pIDA7CisJCWRz dF9udWxsc1tpXSA9IHNyY19udWxsc1tpXTsKKwl9Cit9CiAKIHN0YXRpYyBU dXBsZVRhYmxlU2xvdCAqSW5kZXhOZXh0KEluZGV4U2NhblN0YXRlICpub2Rl KTsKK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAqSW5kZXhOZXh0V2l0aFJlb3Jk ZXIoSW5kZXhTY2FuU3RhdGUgKm5vZGUpOworc3RhdGljIHZvaWQgRXZhbE9y ZGVyQnlFeHByZXNzaW9ucyhJbmRleFNjYW5TdGF0ZSAqbm9kZSwgRXhwckNv bnRleHQgKmVjb250ZXh0KTsKIAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CkBAIC0xMTAsMTAgKzE4OSwyMjEgQEAgSW5kZXhOZXh0KEluZGV4U2NhblN0 YXRlICpub2RlKQogCSAqIGlmIHdlIGdldCBoZXJlIGl0IG1lYW5zIHRoZSBp bmRleCBzY2FuIGZhaWxlZCBzbyB3ZSBhcmUgYXQgdGhlIGVuZCBvZgogCSAq IHRoZSBzY2FuLi4KIAkgKi8KKwlub2RlLT5pc3NfUmVhY2hlZEVuZCA9IHRy dWU7CisJcmV0dXJuIEV4ZWNDbGVhclR1cGxlKHNsb3QpOworfQorCisvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJSW5kZXhOZXh0V2l0aFJlb3JkZXIK KyAqCisgKgkJTGlrZSBJbmRleE5leHQsIGJ1dCBoaXMgdmVyc2lvbiBjYW4g YWxzbyByZS1jaGVjayBhbnkKKyAqCQlPUkRFUiBCWSBleHByZXNzaW9ucywg YW5kIHJlb3JkZXIgdGhlIHR1cGxlcyBhcyBuZWNlc3NhcnkuCisgKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKi8KK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAq CitJbmRleE5leHRXaXRoUmVvcmRlcihJbmRleFNjYW5TdGF0ZSAqbm9kZSkK K3sKKwlFU3RhdGUJICAgKmVzdGF0ZTsKKwlFeHByQ29udGV4dCAqZWNvbnRl eHQ7CisJSW5kZXhTY2FuRGVzYyBzY2FuZGVzYzsKKwlIZWFwVHVwbGUJdHVw bGU7CisJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CisJTWVtb3J5Q29udGV4dCBv bGRDb250ZXh0OworCVJlb3JkZXJUdXBsZSAqdG9wbW9zdCA9IE5VTEw7CisJ UmVvcmRlclR1cGxlICpxdWV1ZWQ7CisJYm9vbAkJd2FzX2V4YWN0OworCURh dHVtCSAgICpsYXN0ZmV0Y2hlZF92YWxzOworCWJvb2wJICAgKmxhc3RmZXRj aGVkX251bGxzOworCWludAkJCWNtcDsKKworCWVzdGF0ZSA9IG5vZGUtPnNz LnBzLnN0YXRlOworCS8qIG9ubHkgZm9yd2FyZCBzY2FuIGlzIHN1cHBvcnRl ZCB3aXRoIHJlb3JkZXJpbmcuICovCisJQXNzZXJ0ICghU2NhbkRpcmVjdGlv bklzQmFja3dhcmQoKChJbmRleFNjYW4gKikgbm9kZS0+c3MucHMucGxhbikt PmluZGV4b3JkZXJkaXIpKTsKKwlBc3NlcnQgKFNjYW5EaXJlY3Rpb25Jc0Zv cndhcmQoZXN0YXRlLT5lc19kaXJlY3Rpb24pKTsKKwlzY2FuZGVzYyA9IG5v ZGUtPmlzc19TY2FuRGVzYzsKKwllY29udGV4dCA9IG5vZGUtPnNzLnBzLnBz X0V4cHJDb250ZXh0OworCXNsb3QgPSBub2RlLT5zcy5zc19TY2FuVHVwbGVT bG90OworCisJZm9yICg7OykKKwl7CisJCS8qCisJCSAqIENoZWNrIHRoZSBy ZW9yZGVyIHF1ZXVlIGZpcnN0LiBJZiB0aGUgdG9wbW9zdCB0dXBsZSBpbiB0 aGUgcXVldWUKKwkJICogaGFzIGFuIE9SREVSIEJZIHZhbHVlIHNtYWxsZXIg dGhhbiAob3IgZXF1YWwgdG8pIHRoZSB2YWx1ZSBsYXN0CisJCSAqIHJldHVy bmVkIGJ5IHRoZSBpbmRleCwgd2UgY2FuIHJldHVybiBpdCBub3cuCisJCSAq LworCQlpZiAoIXBhaXJpbmdoZWFwX2lzX2VtcHR5KG5vZGUtPmlzc19SZW9y ZGVyUXVldWUpKQorCQl7CisJCQl0b3Btb3N0ID0gKFJlb3JkZXJUdXBsZSAq KSBwYWlyaW5naGVhcF9maXJzdChub2RlLT5pc3NfUmVvcmRlclF1ZXVlKTsK KworCQkJaWYgKG5vZGUtPmlzc19SZWFjaGVkRW5kIHx8CisJCQkJY21wX29y ZGVyYnl2YWxzKHRvcG1vc3QtPm9yZGVyYnl2YWxzLAorCQkJCQkJCQl0b3Bt b3N0LT5vcmRlcmJ5bnVsbHMsCisJCQkJCQkJCXNjYW5kZXNjLT54c19vcmRl cmJ5dmFscywKKwkJCQkJCQkJc2NhbmRlc2MtPnhzX29yZGVyYnludWxscywK KwkJCQkJCQkJbm9kZSkgPD0gMCkKKwkJCXsKKwkJCQkodm9pZCkgcGFpcmlu Z2hlYXBfcmVtb3ZlX2ZpcnN0KG5vZGUtPmlzc19SZW9yZGVyUXVldWUpOwor CisJCQkJdHVwbGUgPSB0b3Btb3N0LT5odHVwOworCQkJCXBmcmVlKHRvcG1v c3QtPm9yZGVyYnl2YWxzKTsKKwkJCQlwZnJlZSh0b3Btb3N0LT5vcmRlcmJ5 bnVsbHMpOworCQkJCXBmcmVlKHRvcG1vc3QpOworCisJCQkJLyogUGFzcyAn dHJ1ZScsIGFzIHRoZSB0dXBsZSBpbiB0aGUgcXVldWUgaXMgYSBwYWxsb2Mn ZCBjb3B5ICovCisJCQkJRXhlY1N0b3JlVHVwbGUodHVwbGUsIHNsb3QsIElu dmFsaWRCdWZmZXIsIHRydWUpOworCQkJCXJldHVybiBzbG90OworCQkJfQor CQl9CisJCWVsc2UgaWYgKG5vZGUtPmlzc19SZWFjaGVkRW5kKQorCQl7CisJ CQkgLyogUXVldWUgaXMgZW1wdHksIGFuZCBubyBtb3JlIHR1cGxlcyBmcm9t IGluZGV4LiBXZSdyZSBkb25lLiAqLworCQkJcmV0dXJuIEV4ZWNDbGVhclR1 cGxlKHNsb3QpOworCQl9CisKKwkJLyoKKwkJICogRmV0Y2ggbmV4dCB0dXBs ZSBmcm9tIHRoZSBpbmRleC4KKwkJICovCisJbmV4dF9pbmRleHR1cGxlOgor CQl0dXBsZSA9IGluZGV4X2dldG5leHQoc2NhbmRlc2MsIEZvcndhcmRTY2Fu RGlyZWN0aW9uKTsKKwkJaWYgKCF0dXBsZSkKKwkJeworCQkJLyoKKwkJCSAq IE5vIG1vcmUgdHVwbGVzIGZyb20gdGhlIGluZGV4LiBCdXQgd2Ugc3RpbGwg bmVlZCB0byBkcmFpbiBhbnkKKwkJCSAqIHJlbWFpbmluZyB0dXBsZXMgZnJv bSB0aGUgcXVldWUgYmVmb3JlIHdlJ3JlIGRvbmUuCisJCQkgKi8KKwkJCW5v ZGUtPmlzc19SZWFjaGVkRW5kID0gdHJ1ZTsKKwkJCWNvbnRpbnVlOworCQl9 CisKKwkJLyoKKwkJICogU3RvcmUgdGhlIHNjYW5uZWQgdHVwbGUgaW4gdGhl IHNjYW4gdHVwbGUgc2xvdCBvZiB0aGUgc2NhbiBzdGF0ZS4KKwkJICogTm90 ZTogd2UgcGFzcyAnZmFsc2UnIGJlY2F1c2UgdHVwbGVzIHJldHVybmVkIGJ5 IGFtZ2V0bmV4dCBhcmUKKwkJICogcG9pbnRlcnMgb250byBkaXNrIHBhZ2Vz IGFuZCBtdXN0IG5vdCBiZSBwZnJlZSgpJ2QuCisJCSAqLworCQlFeGVjU3Rv cmVUdXBsZSh0dXBsZSwJLyogdHVwbGUgdG8gc3RvcmUgKi8KKwkJCQkJICAg c2xvdCwJLyogc2xvdCB0byBzdG9yZSBpbiAqLworCQkJCQkgICBzY2FuZGVz Yy0+eHNfY2J1ZiwJCS8qIGJ1ZmZlciBjb250YWluaW5nIHR1cGxlICovCisJ CQkJCSAgIGZhbHNlKTsJLyogZG9uJ3QgcGZyZWUgKi8KKworCQkvKgorCQkg KiBJZiB0aGUgaW5kZXggd2FzIGxvc3N5LCB3ZSBoYXZlIHRvIHJlY2hlY2sg dGhlIGluZGV4IHF1YWxzIGFuZAorCQkgKiBPUkRFUiBCWSBleHByZXNzaW9u cyB1c2luZyB0aGUgZmV0Y2hlZCB0dXBsZS4KKwkJICovCisJCWlmIChzY2Fu ZGVzYy0+eHNfcmVjaGVjaykKKwkJeworCQkJZWNvbnRleHQtPmVjeHRfc2Nh bnR1cGxlID0gc2xvdDsKKwkJCVJlc2V0RXhwckNvbnRleHQoZWNvbnRleHQp OworCQkJaWYgKCFFeGVjUXVhbChub2RlLT5pbmRleHF1YWxvcmlnLCBlY29u dGV4dCwgZmFsc2UpKQorCQkJeworCQkJCS8qIEZhaWxzIHJlY2hlY2ssIHNv IGRyb3AgaXQgYW5kIGxvb3AgYmFjayBmb3IgYW5vdGhlciAqLworCQkJCUlu c3RyQ291bnRGaWx0ZXJlZDIobm9kZSwgMSk7CisJCQkJZ290byBuZXh0X2lu ZGV4dHVwbGU7CisJCQl9CisKKwkJCUV2YWxPcmRlckJ5RXhwcmVzc2lvbnMo bm9kZSwgZWNvbnRleHQpOworCisJCQkvKgorCQkJICogV2FzIHRoZSBPUkRF UiBCWSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgaW5kZXggYWNjdXJhdGU/IFRo ZQorCQkJICogcmVjaGVjayBmbGFnIG1lYW5zIHRoYXQgdGhlIGluZGV4IGNh biByZXR1cm4gaW5hY2N1cmF0ZQorCQkJICogdmFsdWVzLCBidXQgdGhlbiBh Z2FpbiwgdGhlIHZhbHVlIHJldHVybmVkIGZvciBhbnkgcGFydGljdWxhcgor CQkJICogdHVwbGUgY291bGQgYWxzbyBiZSBleGFjdGx5IGNvcnJlY3QuIENv bXBhcmUgdGhlIHZhbHVlIHJldHVybmVkCisJCQkgKiBieSB0aGUgaW5kZXgg d2l0aCB0aGUgcmVjYWxjdWxhdGVkIHZhbHVlLiAoSWYgdGhlIHZhbHVlIGhh cHBlbmVkCisJCQkgKiB0byBiZSBhY2N1cmF0ZSwgd2UgY2FuIG9mdGVuIGF2 b2lkIHB1c2hpbmcgdGhlIHR1cGxlIHRvIHRoZQorCQkJICogcXVldWUsIGp1 c3QgdG8gcG9wIGl0IGJhY2sgb3V0IGFnYWluLikKKwkJCSAqLworCQkJY21w ID0gY21wX29yZGVyYnl2YWxzKG5vZGUtPmlzc19PcmRlckJ5VmFsdWVzLAor CQkJCQkJCQkgIG5vZGUtPmlzc19PcmRlckJ5TnVsbHMsCisJCQkJCQkJCSAg c2NhbmRlc2MtPnhzX29yZGVyYnl2YWxzLAorCQkJCQkJCQkgIHNjYW5kZXNj LT54c19vcmRlcmJ5bnVsbHMsCisJCQkJCQkJCSAgbm9kZSk7CisJCQlpZiAo Y21wIDwgMCkKKwkJCQllbG9nKEVSUk9SLCAiaW5kZXggcmV0dXJuZWQgdHVw bGVzIGluIHdyb25nIG9yZGVyIik7CisJCQllbHNlIGlmIChjbXAgPT0gMCkK KwkJCQl3YXNfZXhhY3QgPSB0cnVlOworCQkJZWxzZQorCQkJCXdhc19leGFj dCA9IGZhbHNlOworCQkJbGFzdGZldGNoZWRfdmFscyA9IG5vZGUtPmlzc19P cmRlckJ5VmFsdWVzOworCQkJbGFzdGZldGNoZWRfbnVsbHMgPSBub2RlLT5p c3NfT3JkZXJCeU51bGxzOworCQl9CisJCWVsc2UKKwkJeworCQkJd2FzX2V4 YWN0ID0gdHJ1ZTsKKwkJCWxhc3RmZXRjaGVkX3ZhbHMgPSBzY2FuZGVzYy0+ eHNfb3JkZXJieXZhbHM7CisJCQlsYXN0ZmV0Y2hlZF9udWxscyA9IHNjYW5k ZXNjLT54c19vcmRlcmJ5bnVsbHM7CisJCX0KKworCQkvKgorCQkgKiBDYW4g d2UgcmV0dXJuIHRoaXMgdHVwbGUgaW1tZWRpYXRlbHksIG9yIGRvZXMgaXQg bmVlZCB0byBiZSBwdXNoZWQKKwkJICogdG8gdGhlIHJlb3JkZXIgcXVldWU/ IElmIHRoZSBPUkRFUiBCWSBleHByZXNzaW9uIHZhbHVlcyByZXR1cm5lZAor CQkgKiBieSB0aGUgaW5kZXggd2VyZSBpbmFjY3VyYXRlLCB3ZSBjYW4ndCBy ZXR1cm4gaXQgeWV0LCBiZWNhdXNlIHRoZQorCQkgKiBuZXh0IHR1cGxlIGZy b20gdGhlIGluZGV4IG1pZ2h0IG5lZWQgdG8gY29tZSBiZWZvcmUgdGhpcyBv bmUuIEFsc28sCisJCSAqIHdlIGNhbid0IHJldHVybiBpdCB5ZXQgaWYgdGhl cmUgYXJlIGFueSBzbWFsbGVyIHR1cGxlcyBpbiB0aGUKKwkJICogcXVldWUg YWxyZWFkeS4KKwkJICovCisJCWlmICghd2FzX2V4YWN0IHx8ICh0b3Btb3N0 ICYmIGNtcF9vcmRlcmJ5dmFscyhsYXN0ZmV0Y2hlZF92YWxzLAorCQkJCQkJ CQkJCQkJCSAgbGFzdGZldGNoZWRfbnVsbHMsCisJCQkJCQkJCQkJCQkJICB0 b3Btb3N0LT5vcmRlcmJ5dmFscywKKwkJCQkJCQkJCQkJCQkgIHRvcG1vc3Qt Pm9yZGVyYnludWxscywKKwkJCQkJCQkJCQkJCQkgIG5vZGUpID4gMCkpCisJ CXsKKwkJCS8qIFB1dCB0aGlzIHRvIHRoZSBxdWV1ZSAqLworCQkJb2xkQ29u dGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5 X2N4dCk7CisJCQlxdWV1ZWQgPSAoUmVvcmRlclR1cGxlICopIHBhbGxvYyhz aXplb2YoUmVvcmRlclR1cGxlKSk7CisJCQlxdWV1ZWQtPmh0dXAgPSBoZWFw X2NvcHl0dXBsZSh0dXBsZSk7CisJCQlxdWV1ZWQtPm9yZGVyYnl2YWxzID0K KwkJCQkoRGF0dW0gKikgcGFsbG9jKHNpemVvZihEYXR1bSkgKiBzY2FuZGVz Yy0+bnVtYmVyT2ZPcmRlckJ5cyk7CisJCQlxdWV1ZWQtPm9yZGVyYnludWxs cyA9CisJCQkJKGJvb2wgKikgcGFsbG9jKHNpemVvZihib29sKSAqIHNjYW5k ZXNjLT5udW1iZXJPZk9yZGVyQnlzKTsKKwkJCWNvcHlPcmRlckJ5VmFscyhu b2RlLCBsYXN0ZmV0Y2hlZF92YWxzLCBsYXN0ZmV0Y2hlZF9udWxscywKKwkJ CQkJCQlxdWV1ZWQtPm9yZGVyYnl2YWxzLCBxdWV1ZWQtPm9yZGVyYnludWxs cyk7CisJCQlwYWlyaW5naGVhcF9hZGQobm9kZS0+aXNzX1Jlb3JkZXJRdWV1 ZSwgJnF1ZXVlZC0+cGhfbm9kZSk7CisKKwkJCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRDb250ZXh0KTsKKworCQkJY29udGludWU7CisJCX0KKwkJZWxz ZQorCQl7CisJCQkvKiBDYW4gcmV0dXJuIHRoaXMgdHVwbGUgaW1tZWRpYXRl bHkuICovCisJCQlyZXR1cm4gc2xvdDsKKwkJfQorCX0KKworCS8qCisJICog aWYgd2UgZ2V0IGhlcmUgaXQgbWVhbnMgdGhlIGluZGV4IHNjYW4gZmFpbGVk IHNvIHdlIGFyZSBhdCB0aGUgZW5kIG9mCisJICogdGhlIHNjYW4uLgorCSAq LwogCXJldHVybiBFeGVjQ2xlYXJUdXBsZShzbG90KTsKIH0KIAogLyoKKyAq IENhbGN1bGF0ZSB0aGUgZXhwcmVzc2lvbnMgaW4gdGhlIE9SREVSIEJZIGNs YXVzZSwgYmFzZWQgb24gdGhlIGhlYXAgdHVwbGUuCisgKi8KK3N0YXRpYyB2 b2lkCitFdmFsT3JkZXJCeUV4cHJlc3Npb25zKEluZGV4U2NhblN0YXRlICpu b2RlLCBFeHByQ29udGV4dCAqZWNvbnRleHQpCit7CisJaW50CQkJaTsKKwlM aXN0Q2VsbCAgICpsOworCU1lbW9yeUNvbnRleHQgb2xkQ29udGV4dDsKKwor CW9sZENvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZWNvbnRleHQt PmVjeHRfcGVyX3R1cGxlX21lbW9yeSk7CisKKwlpID0gMDsKKwlmb3JlYWNo KGwsIG5vZGUtPmluZGV4b3JkZXJieW9yaWcpCisJeworCQlFeHByU3RhdGUg Km9yZGVyYnkgPSAoRXhwclN0YXRlICopIGxmaXJzdChsKTsKKworCQlub2Rl LT5pc3NfT3JkZXJCeVZhbHVlc1tpXSA9IEV4ZWNFdmFsRXhwcihvcmRlcmJ5 LAorCQkJCQkJCQkJCQkJICBlY29udGV4dCwKKwkJCQkJCQkJCQkJCSAgJm5v ZGUtPmlzc19PcmRlckJ5TnVsbHNbaV0sCisJCQkJCQkJCQkJCQkgIE5VTEwp OworCQlpKys7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZENv bnRleHQpOworfQorCisvKgogICogSW5kZXhSZWNoZWNrIC0tIGFjY2VzcyBt ZXRob2Qgcm91dGluZSB0byByZWNoZWNrIGEgdHVwbGUgaW4gRXZhbFBsYW5R dWFsCiAgKi8KIHN0YXRpYyBib29sCkBAIC0xNDcsOSArNDM3LDE0IEBAIEV4 ZWNJbmRleFNjYW4oSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAJaWYgKG5vZGUt Pmlzc19OdW1SdW50aW1lS2V5cyAhPSAwICYmICFub2RlLT5pc3NfUnVudGlt ZUtleXNSZWFkeSkKIAkJRXhlY1JlU2NhbigoUGxhblN0YXRlICopIG5vZGUp OwogCi0JcmV0dXJuIEV4ZWNTY2FuKCZub2RlLT5zcywKLQkJCQkJKEV4ZWNT Y2FuQWNjZXNzTXRkKSBJbmRleE5leHQsCi0JCQkJCShFeGVjU2NhblJlY2hl Y2tNdGQpIEluZGV4UmVjaGVjayk7CisJaWYgKG5vZGUtPmlzc19OdW1PcmRl ckJ5S2V5cyA+IDApCisJCXJldHVybiBFeGVjU2Nhbigmbm9kZS0+c3MsCisJ CQkJCQkoRXhlY1NjYW5BY2Nlc3NNdGQpIEluZGV4TmV4dFdpdGhSZW9yZGVy LAorCQkJCQkJKEV4ZWNTY2FuUmVjaGVja010ZCkgSW5kZXhSZWNoZWNrKTsK KwllbHNlCisJCXJldHVybiBFeGVjU2Nhbigmbm9kZS0+c3MsCisJCQkJCQko RXhlY1NjYW5BY2Nlc3NNdGQpIEluZGV4TmV4dCwKKwkJCQkJCShFeGVjU2Nh blJlY2hlY2tNdGQpIEluZGV4UmVjaGVjayk7CiB9CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KQEAgLTQ2NSw2ICs3NjAsNyBAQCBFeGVjSW5pdEluZGV4 U2NhbihJbmRleFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCUluZGV4U2NhblN0YXRlICppbmRleHN0YXRlOwogCVJlbGF0aW9u CWN1cnJlbnRSZWxhdGlvbjsKIAlib29sCQlyZWxpc3RhcmdldDsKKwlpbnQJ CQlpOwogCiAJLyoKIAkgKiBjcmVhdGUgc3RhdGUgc3RydWN0dXJlCkBAIC01 MDEsNiArNzk3LDkgQEAgRXhlY0luaXRJbmRleFNjYW4oSW5kZXhTY2FuICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlpbmRleHN0YXRl LT5pbmRleHF1YWxvcmlnID0gKExpc3QgKikKIAkJRXhlY0luaXRFeHByKChF eHByICopIG5vZGUtPmluZGV4cXVhbG9yaWcsCiAJCQkJCSAoUGxhblN0YXRl ICopIGluZGV4c3RhdGUpOworCWluZGV4c3RhdGUtPmluZGV4b3JkZXJieW9y aWcgPSAoTGlzdCAqKQorCQlFeGVjSW5pdEV4cHIoKEV4cHIgKikgbm9kZS0+ aW5kZXhvcmRlcmJ5b3JpZywKKwkJCQkJIChQbGFuU3RhdGUgKikgaW5kZXhz dGF0ZSk7CiAKIAkvKgogCSAqIHR1cGxlIHRhYmxlIGluaXRpYWxpemF0aW9u CkBAIC01ODEsNiArODgwLDUyIEBAIEV4ZWNJbml0SW5kZXhTY2FuKEluZGV4 U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJ CQkgICBOVUxMLAkvKiBubyBBcnJheUtleXMgKi8KIAkJCQkJCSAgIE5VTEwp OwogCisJLyogSW5pdGlhbGl6ZSBzb3J0IHN1cHBvcnQsIGlmIHdlIG5lZWQg dG8gcmUtY2hlY2sgT1JERVIgQlkgZXhwcnMgKi8KKwlpZiAoaW5kZXhzdGF0 ZS0+aXNzX051bU9yZGVyQnlLZXlzID4gMCkKKwl7CisJCWludAkJCW51bU9y ZGVyQnlLZXlzID0gaW5kZXhzdGF0ZS0+aXNzX051bU9yZGVyQnlLZXlzOwor CisJCS8qCisJCSAqIFByZXBhcmUgc29ydCBzdXBwb3J0LCBhbmQgbG9vayB1 cCB0aGUgZGlzdGFuY2UgdHlwZSBmb3IgZWFjaAorCQkgKiBPUkRFUiBCWSBl eHByZXNzaW9uLgorCQkgKi8KKwkJaW5kZXhzdGF0ZS0+aXNzX1NvcnRTdXBw b3J0ID0KKwkJCXBhbGxvYzAobnVtT3JkZXJCeUtleXMgKiBzaXplb2YoU29y dFN1cHBvcnREYXRhKSk7CisJCWluZGV4c3RhdGUtPmlzc19PcmRlckJ5VHlw QnlWYWxzID0KKwkJCXBhbGxvYyhudW1PcmRlckJ5S2V5cyAqIHNpemVvZihi b29sKSk7CisJCWluZGV4c3RhdGUtPmlzc19PcmRlckJ5VHlwTGVucyA9CisJ CQlwYWxsb2MobnVtT3JkZXJCeUtleXMgKiBzaXplb2YoaW50MTYpKTsKKwkJ Zm9yIChpID0gMDsgaSA8IGluZGV4c3RhdGUtPmlzc19OdW1PcmRlckJ5S2V5 czsgaSsrKQorCQl7CisJCQlPaWQJCW9yZGVyYnlUeXBlOworCQkJT2lkCQlv cGZhbWlseTsKKwkJCWludDE2CXN0cmF0ZWd5OworCisJCQlQcmVwYXJlU29y dFN1cHBvcnRGcm9tT3JkZXJpbmdPcChub2RlLT5pbmRleG9yZGVyYnlvcHNb aV0sCisJCQkJCQkJCQkJCSAmaW5kZXhzdGF0ZS0+aXNzX1NvcnRTdXBwb3J0 W2ldKTsKKworCQkJaWYgKCFnZXRfb3JkZXJpbmdfb3BfcHJvcGVydGllcyhu b2RlLT5pbmRleG9yZGVyYnlvcHNbaV0sCisJCQkJCQkJCQkJCSZvcGZhbWls eSwgJm9yZGVyYnlUeXBlLCAmc3RyYXRlZ3kpKQorCQkJeworCQkJCWVsb2co TE9HLCAib3BlcmF0b3IgJXUgaXMgbm90IGEgdmFsaWQgb3JkZXJpbmcgb3Bl cmF0b3IiLAorCQkJCQkgbm9kZS0+aW5kZXhvcmRlcmJ5b3BzW2ldKTsKKwkJ CX0KKwkJCWdldF90eXBsZW5ieXZhbChvcmRlcmJ5VHlwZSwKKwkJCQkJCQkm aW5kZXhzdGF0ZS0+aXNzX09yZGVyQnlUeXBMZW5zW2ldLAorCQkJCQkJCSZp bmRleHN0YXRlLT5pc3NfT3JkZXJCeVR5cEJ5VmFsc1tpXSk7CisJCX0KKwor CQkvKiBhbGxvY2F0ZSBhcnJheXMgdG8gaG9sZCB0aGUgcmUtY2FsY3VsYXRl ZCBkaXN0YW5jZXMgKi8KKwkJaW5kZXhzdGF0ZS0+aXNzX09yZGVyQnlWYWx1 ZXMgPQorCQkJcGFsbG9jKGluZGV4c3RhdGUtPmlzc19OdW1PcmRlckJ5S2V5 cyAqIHNpemVvZihEYXR1bSkpOworCQlpbmRleHN0YXRlLT5pc3NfT3JkZXJC eU51bGxzID0KKwkJCXBhbGxvYyhpbmRleHN0YXRlLT5pc3NfTnVtT3JkZXJC eUtleXMgKiBzaXplb2YoYm9vbCkpOworCisJCS8qIGFuZCBpbml0aWFsaXpl IHRoZSByZW9yZGVyIHF1ZXVlICovCisJCWluZGV4c3RhdGUtPmlzc19SZW9y ZGVyUXVldWUgPSBwYWlyaW5naGVhcF9hbGxvY2F0ZShyZW9yZGVyYnVmZmVy X2NtcCwKKwkJCQkJCQkJCQkJCQkJCWluZGV4c3RhdGUpOworCX0KKwogCS8q CiAJICogSWYgd2UgaGF2ZSBydW50aW1lIGtleXMsIHdlIG5lZWQgYW4gRXhw ckNvbnRleHQgdG8gZXZhbHVhdGUgdGhlbS4gVGhlCiAJICogbm9kZSdzIHN0 YW5kYXJkIGNvbnRleHQgd29uJ3QgZG8gYmVjYXVzZSB3ZSB3YW50IHRvIHJl c2V0IHRoYXQgY29udGV4dApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IGM4MDkyMzcuLjY0MDNhN2Ig MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0 ZXBsYW4uYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVh dGVwbGFuLmMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJhY2Nlc3Mv c2tleS5oIgogI2luY2x1ZGUgImFjY2Vzcy9zeXNhdHRyLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19jbGFzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdf b3BlcmF0b3IuaCIKICNpbmNsdWRlICJmb3JlaWduL2Zkd2FwaS5oIgogI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5j cy5oIgpAQCAtMTAyLDcgKzEwMyw3IEBAIHN0YXRpYyB2b2lkIGNvcHlfcGxh bl9jb3N0c2l6ZShQbGFuICpkZXN0LCBQbGFuICpzcmMpOwogc3RhdGljIFNl cVNjYW4gKm1ha2Vfc2Vxc2NhbihMaXN0ICpxcHRsaXN0LCBMaXN0ICpxcHF1 YWwsIEluZGV4IHNjYW5yZWxpZCk7CiBzdGF0aWMgSW5kZXhTY2FuICptYWtl X2luZGV4c2NhbihMaXN0ICpxcHRsaXN0LCBMaXN0ICpxcHF1YWwsIEluZGV4 IHNjYW5yZWxpZCwKIAkJCSAgIE9pZCBpbmRleGlkLCBMaXN0ICppbmRleHF1 YWwsIExpc3QgKmluZGV4cXVhbG9yaWcsCi0JCQkgICBMaXN0ICppbmRleG9y ZGVyYnksIExpc3QgKmluZGV4b3JkZXJieW9yaWcsCisJCQkgICBMaXN0ICpp bmRleG9yZGVyYnksIExpc3QgKmluZGV4b3JkZXJieW9yaWcsIE9pZCAqaW5k ZXhvcmRlcmJ5b3BzLAogCQkJICAgU2NhbkRpcmVjdGlvbiBpbmRleHNjYW5k aXIpOwogc3RhdGljIEluZGV4T25seVNjYW4gKm1ha2VfaW5kZXhvbmx5c2Nh bihMaXN0ICpxcHRsaXN0LCBMaXN0ICpxcHF1YWwsCiAJCQkJICAgSW5kZXgg c2NhbnJlbGlkLCBPaWQgaW5kZXhpZCwKQEAgLTE2Nyw4ICsxNjgsOCBAQCBz dGF0aWMgUGxhbiAqcHJlcGFyZV9zb3J0X2Zyb21fcGF0aGtleXMoUGxhbm5l ckluZm8gKnJvb3QsCiAJCQkJCQkgICBPaWQgKipwX3NvcnRPcGVyYXRvcnMs CiAJCQkJCQkgICBPaWQgKipwX2NvbGxhdGlvbnMsCiAJCQkJCQkgICBib29s ICoqcF9udWxsc0ZpcnN0KTsKLXN0YXRpYyBFcXVpdmFsZW5jZU1lbWJlciAq ZmluZF9lY19tZW1iZXJfZm9yX3RsZShFcXVpdmFsZW5jZUNsYXNzICplYywK LQkJCQkJICAgVGFyZ2V0RW50cnkgKnRsZSwKK3N0YXRpYyBFcXVpdmFsZW5j ZU1lbWJlciAqZmluZF9lY19tZW1iZXJfZm9yX2V4cHIoRXF1aXZhbGVuY2VD bGFzcyAqZWMsCisJCQkJCSAgIEV4cHIgKnRsZXhwciwKIAkJCQkJICAgUmVs aWRzIHJlbGlkcyk7CiBzdGF0aWMgTWF0ZXJpYWwgKm1ha2VfbWF0ZXJpYWwo UGxhbiAqbGVmdHRyZWUpOwogCkBAIC0xMTU4LDYgKzExNTksNyBAQCBjcmVh dGVfaW5kZXhzY2FuX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsCiAJTGlzdAkg ICAqc3RyaXBwZWRfaW5kZXhxdWFsczsKIAlMaXN0CSAgICpmaXhlZF9pbmRl eHF1YWxzOwogCUxpc3QJICAgKmZpeGVkX2luZGV4b3JkZXJieXM7CisJT2lk CQkgICAqaW5kZXhvcmRlcmJ5b3BzID0gTlVMTDsKIAlMaXN0Q2VsbCAgICps OwogCiAJLyogaXQgc2hvdWxkIGJlIGEgYmFzZSByZWwuLi4gKi8KQEAgLTEy NjksNiArMTI3MSw0MiBAQCBjcmVhdGVfaW5kZXhzY2FuX3BsYW4oUGxhbm5l ckluZm8gKnJvb3QsCiAJCQlyZXBsYWNlX25lc3Rsb29wX3BhcmFtcyhyb290 LCAoTm9kZSAqKSBpbmRleG9yZGVyYnlzKTsKIAl9CiAKKwlpZiAoYmVzdF9w YXRoLT5wYXRoLnBhdGhrZXlzICYmIGluZGV4b3JkZXJieXMpCisJeworCQlp bnQJCQludW1PcmRlckJ5cyA9IGxpc3RfbGVuZ3RoKGluZGV4b3JkZXJieXMp OworCQlpbnQJCQlpOworCQlMaXN0Q2VsbCAgICpwYXRoa2V5Q2VsbCwKKwkJ CQkgICAqZXhwckNlbGw7CisJCVBhdGhLZXkJICAgKnBhdGhrZXk7CisJCUV4 cHIJICAgKmV4cHI7CisJCUVxdWl2YWxlbmNlTWVtYmVyICplbTsKKworCQlp bmRleG9yZGVyYnlvcHMgPSAoT2lkICopIHBhbGxvYyhudW1PcmRlckJ5cyAq IHNpemVvZihPaWQpKTsKKworCQkvKgorCQkgKiBHZXQgb3JkZXJpbmcgb3Bl cmF0b3IgZm9yIGVhY2ggcGF0aGtleS4gUGF0aGtleSBjb250YWlucyBwb2lu dGVyCisJCSAqIHRvIGVxdWl2YWxlbmNlIGNsYXNzLiBCdXQgaXQncyBub3Qg ZW5vdWdoIGJlY2F1c2Ugd2UgbmVlZCB0aGUKKwkJICogZXhwcmVzc2lvbiBk YXRhdHlwZSB0byBsb29rdXAgb3BmYW1pbHkgbWVtYmVyLiBUaGF0J3Mgd2h5 IHdlJ3ZlCisJCSAqIHRvIGRpZyBhbmQgZXF1aXZhbGVuY2UgbWVtYmVyLgor CQkgKi8KKwkJaSA9IDA7CisJCWZvcmJvdGggKHBhdGhrZXlDZWxsLCBiZXN0 X3BhdGgtPnBhdGgucGF0aGtleXMsIGV4cHJDZWxsLCBpbmRleG9yZGVyYnlz KQorCQl7CisJCQlwYXRoa2V5ID0gKFBhdGhLZXkgKikgbGZpcnN0KHBhdGhr ZXlDZWxsKTsKKwkJCWV4cHIgPSAoRXhwciAqKSBsZmlyc3QoZXhwckNlbGwp OworCisJCQkvKiBGaW5kIGVxdWl2YWxlbmNlIG1lbWJlciBmb3IgdGhlIG9y ZGVyIGJ5IGV4cHJlc3Npb24gKi8KKwkJCWVtID0gZmluZF9lY19tZW1iZXJf Zm9yX2V4cHIocGF0aGtleS0+cGtfZWNsYXNzLCBleHByLCBOVUxMKTsKKwor CQkJLyogR2V0IHNvcnQgb3BlcmF0b3IgZnJvbSBvcGZhbWlseSAqLworCQkJ aW5kZXhvcmRlcmJ5b3BzW2ldID0gZ2V0X29wZmFtaWx5X21lbWJlcihwYXRo a2V5LT5wa19vcGZhbWlseSwKKwkJCQkJCQkJCQkJCQkgZW0tPmVtX2RhdGF0 eXBlLAorCQkJCQkJCQkJCQkJCSBlbS0+ZW1fZGF0YXR5cGUsCisJCQkJCQkJ CQkJCQkJIHBhdGhrZXktPnBrX3N0cmF0ZWd5KTsKKwkJCWkrKzsKKwkJfQor CX0KKwogCS8qIEZpbmFsbHkgcmVhZHkgdG8gYnVpbGQgdGhlIHBsYW4gbm9k ZSAqLwogCWlmIChpbmRleG9ubHkpCiAJCXNjYW5fcGxhbiA9IChTY2FuICop IG1ha2VfaW5kZXhvbmx5c2Nhbih0bGlzdCwKQEAgLTEyODgsNiArMTMyNiw3 IEBAIGNyZWF0ZV9pbmRleHNjYW5fcGxhbihQbGFubmVySW5mbyAqcm9vdCwK IAkJCQkJCQkJCQkJc3RyaXBwZWRfaW5kZXhxdWFscywKIAkJCQkJCQkJCQkJ Zml4ZWRfaW5kZXhvcmRlcmJ5cywKIAkJCQkJCQkJCQkJaW5kZXhvcmRlcmJ5 cywKKwkJCQkJCQkJCQkJaW5kZXhvcmRlcmJ5b3BzLAogCQkJCQkJCQkJCQli ZXN0X3BhdGgtPmluZGV4c2NhbmRpcik7CiAKIAljb3B5X3BhdGhfY29zdHNp emUoJnNjYW5fcGxhbi0+cGxhbiwgJmJlc3RfcGF0aC0+cGF0aCk7CkBAIC0z MzQ0LDYgKzMzODMsNyBAQCBtYWtlX2luZGV4c2NhbihMaXN0ICpxcHRsaXN0 LAogCQkJICAgTGlzdCAqaW5kZXhxdWFsb3JpZywKIAkJCSAgIExpc3QgKmlu ZGV4b3JkZXJieSwKIAkJCSAgIExpc3QgKmluZGV4b3JkZXJieW9yaWcsCisJ CQkgICBPaWQgKmluZGV4b3JkZXJieW9wcywKIAkJCSAgIFNjYW5EaXJlY3Rp b24gaW5kZXhzY2FuZGlyKQogewogCUluZGV4U2NhbiAgKm5vZGUgPSBtYWtl Tm9kZShJbmRleFNjYW4pOwpAQCAtMzM2MCw2ICszNDAwLDcgQEAgbWFrZV9p bmRleHNjYW4oTGlzdCAqcXB0bGlzdCwKIAlub2RlLT5pbmRleHF1YWxvcmln ID0gaW5kZXhxdWFsb3JpZzsKIAlub2RlLT5pbmRleG9yZGVyYnkgPSBpbmRl eG9yZGVyYnk7CiAJbm9kZS0+aW5kZXhvcmRlcmJ5b3JpZyA9IGluZGV4b3Jk ZXJieW9yaWc7CisJbm9kZS0+aW5kZXhvcmRlcmJ5b3BzID0gaW5kZXhvcmRl cmJ5b3BzOwogCW5vZGUtPmluZGV4b3JkZXJkaXIgPSBpbmRleHNjYW5kaXI7 CiAKIAlyZXR1cm4gbm9kZTsKQEAgLTM5OTAsNyArNDAzMSw3IEBAIHByZXBh cmVfc29ydF9mcm9tX3BhdGhrZXlzKFBsYW5uZXJJbmZvICpyb290LCBQbGFu ICpsZWZ0dHJlZSwgTGlzdCAqcGF0aGtleXMsCiAJCQl0bGUgPSBnZXRfdGxl X2J5X3Jlc25vKHRsaXN0LCByZXFDb2xJZHhbbnVtc29ydGtleXNdKTsKIAkJ CWlmICh0bGUpCiAJCQl7Ci0JCQkJZW0gPSBmaW5kX2VjX21lbWJlcl9mb3Jf dGxlKGVjLCB0bGUsIHJlbGlkcyk7CisJCQkJZW0gPSBmaW5kX2VjX21lbWJl cl9mb3JfZXhwcihlYywgdGxlLT5leHByLCByZWxpZHMpOwogCQkJCWlmIChl bSkKIAkJCQl7CiAJCQkJCS8qIGZvdW5kIGV4cHIgYXQgcmlnaHQgcGxhY2Ug aW4gdGxpc3QgKi8KQEAgLTQwMjEsNyArNDA2Miw3IEBAIHByZXBhcmVfc29y dF9mcm9tX3BhdGhrZXlzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpsZWZ0 dHJlZSwgTGlzdCAqcGF0aGtleXMsCiAJCQlmb3JlYWNoKGosIHRsaXN0KQog CQkJewogCQkJCXRsZSA9IChUYXJnZXRFbnRyeSAqKSBsZmlyc3Qoaik7Ci0J CQkJZW0gPSBmaW5kX2VjX21lbWJlcl9mb3JfdGxlKGVjLCB0bGUsIHJlbGlk cyk7CisJCQkJZW0gPSBmaW5kX2VjX21lbWJlcl9mb3JfZXhwcihlYywgdGxl LT5leHByLCByZWxpZHMpOwogCQkJCWlmIChlbSkKIAkJCQl7CiAJCQkJCS8q IGZvdW5kIGV4cHIgYWxyZWFkeSBpbiB0bGlzdCAqLwpAQCAtNDE0MiwyMyAr NDE4MywyMSBAQCBwcmVwYXJlX3NvcnRfZnJvbV9wYXRoa2V5cyhQbGFubmVy SW5mbyAqcm9vdCwgUGxhbiAqbGVmdHRyZWUsIExpc3QgKnBhdGhrZXlzLAog fQogCiAvKgotICogZmluZF9lY19tZW1iZXJfZm9yX3RsZQotICoJCUxvY2F0 ZSBhbiBFcXVpdmFsZW5jZUNsYXNzIG1lbWJlciBtYXRjaGluZyB0aGUgZ2l2 ZW4gVExFLCBpZiBhbnkKKyAqIGZpbmRfZWNfbWVtYmVyX2Zvcl9leHByCisg KgkJTG9jYXRlIGFuIEVxdWl2YWxlbmNlQ2xhc3MgbWVtYmVyIG1hdGNoaW5n IHRoZSBnaXZlbiBleHByZXNzaW9uLCBpZiBhbnkKICAqCiAgKiBDaGlsZCBF QyBtZW1iZXJzIGFyZSBpZ25vcmVkIHVubGVzcyB0aGV5IG1hdGNoICdyZWxp ZHMnLgogICovCiBzdGF0aWMgRXF1aXZhbGVuY2VNZW1iZXIgKgotZmluZF9l Y19tZW1iZXJfZm9yX3RsZShFcXVpdmFsZW5jZUNsYXNzICplYywKLQkJCQkJ ICAgVGFyZ2V0RW50cnkgKnRsZSwKLQkJCQkJICAgUmVsaWRzIHJlbGlkcykK K2ZpbmRfZWNfbWVtYmVyX2Zvcl9leHByKEVxdWl2YWxlbmNlQ2xhc3MgKmVj LAorCQkJCQkJRXhwciAqZXhwciwKKwkJCQkJCVJlbGlkcyByZWxpZHMpCiB7 Ci0JRXhwcgkgICAqdGxleHByOwogCUxpc3RDZWxsICAgKmxjOwogCiAJLyog V2UgaWdub3JlIGJpbmFyeS1jb21wYXRpYmxlIHJlbGFiZWxpbmcgb24gYm90 aCBlbmRzICovCi0JdGxleHByID0gdGxlLT5leHByOwotCXdoaWxlICh0bGV4 cHIgJiYgSXNBKHRsZXhwciwgUmVsYWJlbFR5cGUpKQotCQl0bGV4cHIgPSAo KFJlbGFiZWxUeXBlICopIHRsZXhwciktPmFyZzsKKwl3aGlsZSAoZXhwciAm JiBJc0EoZXhwciwgUmVsYWJlbFR5cGUpKQorCQlleHByID0gKChSZWxhYmVs VHlwZSAqKSBleHByKS0+YXJnOwogCiAJZm9yZWFjaChsYywgZWMtPmVjX21l bWJlcnMpCiAJewpAQCAtNDE4NCw3ICs0MjIzLDcgQEAgZmluZF9lY19tZW1i ZXJfZm9yX3RsZShFcXVpdmFsZW5jZUNsYXNzICplYywKIAkJd2hpbGUgKGVt ZXhwciAmJiBJc0EoZW1leHByLCBSZWxhYmVsVHlwZSkpCiAJCQllbWV4cHIg PSAoKFJlbGFiZWxUeXBlICopIGVtZXhwciktPmFyZzsKIAotCQlpZiAoZXF1 YWwoZW1leHByLCB0bGV4cHIpKQorCQlpZiAoZXF1YWwoZW1leHByLCBleHBy KSkKIAkJCXJldHVybiBlbTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9nZW9fb3BzLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvZ2VvX29wcy5jCmluZGV4IDM5YTc4NTUuLmEzYWYwOGEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW9fb3BzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2dlb19vcHMuYwpAQCAtMjY1Nyw2ICsyNjU3 LDE4IEBAIGRpc3RfcHBvbHkoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRV Uk5fRkxPQVQ4KHJlc3VsdCk7CiB9CiAKK0RhdHVtCitkaXN0X3BvbHlwKFBH X0ZVTkNUSU9OX0FSR1MpCit7CisJUE9MWUdPTiAgICAqcG9seSA9IFBHX0dF VEFSR19QT0xZR09OX1AoMCk7CisJUG9pbnQJICAgKnBvaW50ID0gUEdfR0VU QVJHX1BPSU5UX1AoMSk7CisJZmxvYXQ4CQlyZXN1bHQ7CisKKwlyZXN1bHQg PSBkaXN0X3Bwb2x5X2ludGVybmFsKHBvaW50LCBwb2x5KTsKKworCVBHX1JF VFVSTl9GTE9BVDgocmVzdWx0KTsKK30KKwogc3RhdGljIGRvdWJsZQogZGlz dF9wcG9seV9pbnRlcm5hbChQb2ludCAqcHQsIFBPTFlHT04gKnBvbHkpCiB7 CkBAIC01MTEyLDYgKzUxMjQsMjEgQEAgZGlzdF9wYyhQR19GVU5DVElPTl9B UkdTKQogCVBHX1JFVFVSTl9GTE9BVDgocmVzdWx0KTsKIH0KIAorLyoKKyAq IERpc3RhbmNlIGZyb20gYSBjaXJjbGUgdG8gYSBwb2ludAorICovCitEYXR1 bQorZGlzdF9jcG9pbnQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlDSVJDTEUJ ICAgKmNpcmNsZSA9IFBHX0dFVEFSR19DSVJDTEVfUCgwKTsKKwlQb2ludAkg ICAqcG9pbnQgPSBQR19HRVRBUkdfUE9JTlRfUCgxKTsKKwlmbG9hdDgJCXJl c3VsdDsKKworCXJlc3VsdCA9IHBvaW50X2R0KHBvaW50LCAmY2lyY2xlLT5j ZW50ZXIpIC0gY2lyY2xlLT5yYWRpdXM7CisJaWYgKHJlc3VsdCA8IDApCisJ CXJlc3VsdCA9IDA7CisJUEdfUkVUVVJOX0ZMT0FUOChyZXN1bHQpOworfQog CiAvKgkJY2lyY2xlX2NlbnRlcgktCQlyZXR1cm5zIHRoZSBjZW50ZXIgcG9p bnQgb2YgdGhlIGNpcmNsZS4KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvYWNjZXNzL2dlbmFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0u aAppbmRleCBkODY1OTBhLi5mMTI5YzRiIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9hY2Nlc3MvZ2VuYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv Z2VuYW0uaApAQCAtMTQ3LDcgKzE0NywxMCBAQCBleHRlcm4gdm9pZCBpbmRl eF9yZXN0cnBvcyhJbmRleFNjYW5EZXNjIHNjYW4pOwogZXh0ZXJuIEl0ZW1Q b2ludGVyIGluZGV4X2dldG5leHRfdGlkKEluZGV4U2NhbkRlc2Mgc2NhbiwK IAkJCQkgIFNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uKTsKIGV4dGVybiBIZWFw VHVwbGUgaW5kZXhfZmV0Y2hfaGVhcChJbmRleFNjYW5EZXNjIHNjYW4pOwor ZXh0ZXJuIGJvb2wgaW5kZXhfZ2V0X2hlYXBfdmFsdWVzKEluZGV4U2NhbkRl c2Mgc2NhbiwgSXRlbVBvaW50ZXIgaGVhcFB0ciwKKwkJCQkJRGF0dW0gdmFs dWVzW0lOREVYX01BWF9LRVlTXSwgYm9vbCBpc251bGxbSU5ERVhfTUFYX0tF WVNdKTsKIGV4dGVybiBIZWFwVHVwbGUgaW5kZXhfZ2V0bmV4dChJbmRleFNj YW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uKTsKKwogZXh0 ZXJuIGludDY0IGluZGV4X2dldGJpdG1hcChJbmRleFNjYW5EZXNjIHNjYW4s IFRJREJpdG1hcCAqYml0bWFwKTsKIAogZXh0ZXJuIEluZGV4QnVsa0RlbGV0 ZVJlc3VsdCAqaW5kZXhfYnVsa19kZWxldGUoSW5kZXhWYWN1dW1JbmZvICpp bmZvLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4u aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKaW5kZXggOWJiNjM2 Mi4uN2VlMDIwNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Jl bHNjYW4uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCkBA IC05MSw2ICs5MSwxNSBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFNjYW5EZXNj RGF0YQogCS8qIE5COiBpZiB4c19jYnVmIGlzIG5vdCBJbnZhbGlkQnVmZmVy LCB3ZSBob2xkIGEgcGluIG9uIHRoYXQgYnVmZmVyICovCiAJYm9vbAkJeHNf cmVjaGVjazsJCS8qIFQgbWVhbnMgc2NhbiBrZXlzIG11c3QgYmUgcmVjaGVj a2VkICovCiAKKwkvKgorCSAqIElmIGZldGNoaW5nIHdpdGggYW4gb3JkZXJp bmcgb3BlcmF0b3IsIHRoZSB2YWx1ZXMgb2YgdGhlIE9SREVSIEJZCisJICog ZXhwcmVzc2lvbiBvZiB0aGUgbGFzdCByZXR1cm5lZCBoZWFwIHR1cGxlIGFj Y29yZGluZyB0byB0aGUgaW5kZXguIElmCisJICogeHNfcmVjaGVjayBpcyB0 cnVlLCB0aGlzIG5lZWRzIHRvIGJlIHJlY2hlY2tlZCBqdXN0IGxpa2UgdGhl IHNjYW4ga2V5cywKKwkgKiBhbmQgdGhlIHZhbHVlIHJldHVybmVkIGhlcmUg aXMgYSBsb3dlci1ib3VuZCBvbiB0aGUgYWN0dWFsIHZhbHVlLgorCSAqLwor CURhdHVtCSAgICp4c19vcmRlcmJ5dmFsczsKKwlib29sCSAgICp4c19vcmRl cmJ5bnVsbHM7CisKIAkvKiBzdGF0ZSBkYXRhIGZvciB0cmF2ZXJzaW5nIEhP VCBjaGFpbnMgaW4gaW5kZXhfZ2V0bmV4dCAqLwogCWJvb2wJCXhzX2NvbnRp bnVlX2hvdDsJLyogVCBpZiBtdXN0IGtlZXAgd2Fsa2luZyBIT1QgY2hhaW4g Ki8KIH0JSW5kZXhTY2FuRGVzY0RhdGE7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvY2F0dmVyc2lvbi5oCmluZGV4IGEzNTA4MzIuLmI2YTZkYTkgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oCisrKyBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oCkBAIC01Myw2ICs1 Myw2IEBACiAgKi8KIAogLyoJCQkJCQkJeXl5eW1tZGROICovCi0jZGVmaW5l IENBVEFMT0dfVkVSU0lPTl9OTwkyMDE1MDUxMjEKKyNkZWZpbmUgQ0FUQUxP R19WRVJTSU9OX05PCTIwMTUwNTE1MQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1vcC5oIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19hbW9wLmgKaW5kZXggNWFhYjg5Ni4uZWQ0NGUwNSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbW9wLmgKKysrIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbW9wLmgKQEAgLTY1MCw2ICs2NTAs NyBAQCBEQVRBKGluc2VydCAoCTI1OTQgICA2MDQgNjA0IDExIHMgMjU3NyA3 ODMgMCApKTsKIERBVEEoaW5zZXJ0ICgJMjU5NCAgIDYwNCA2MDQgMTIgcyAy NTc2IDc4MyAwICkpOwogREFUQShpbnNlcnQgKAkyNTk0ICAgNjA0IDYwNCAx MyBzIDI4NjEgNzgzIDAgKSk7CiBEQVRBKGluc2VydCAoCTI1OTQgICA2MDQg NjA0IDE0IHMgMjg2MCA3ODMgMCApKTsKK0RBVEEoaW5zZXJ0ICgJMjU5NCAg IDYwNCA2MDAgMTUgbyA0NTg4IDc4MyAxOTcwICkpOwogCiAvKgogICoJZ2lz dCBjaXJjbGVfb3BzCkBAIC02NjksNiArNjcwLDcgQEAgREFUQShpbnNlcnQg KAkyNTk1ICAgNzE4IDcxOCAxMSBzIDE1MTQgNzgzIDAgKSk7CiBEQVRBKGlu c2VydCAoCTI1OTUgICA3MTggNzE4IDEyIHMgMjU5MCA3ODMgMCApKTsKIERB VEEoaW5zZXJ0ICgJMjU5NSAgIDcxOCA3MTggMTMgcyAyODY1IDc4MyAwICkp OwogREFUQShpbnNlcnQgKAkyNTk1ICAgNzE4IDcxOCAxNCBzIDI4NjQgNzgz IDAgKSk7CitEQVRBKGluc2VydCAoCTI1OTUgICA3MTggNjAwIDE1IG8gNDU4 NiA3ODMgMTk3MCApKTsKIAogLyoKICAqIGdpbiBhcnJheV9vcHMgKHRoZXNl IGFueWFycmF5IG9wZXJhdG9ycyBhcmUgdXNlZCB3aXRoIGFsbCB0aGUgb3Bj bGFzc2VzCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Ft cHJvYy5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuaAppbmRl eCBlM2RlM2I1Li4yYWNhMzBjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2FtcHJvYy5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfYW1wcm9jLmgKQEAgLTIwOCw2ICsyMDgsNyBAQCBEQVRBKGluc2VydCAo CTI1OTQgICA2MDQgNjA0IDQgMjU4MCApKTsKIERBVEEoaW5zZXJ0ICgJMjU5 NCAgIDYwNCA2MDQgNSAyNTgxICkpOwogREFUQShpbnNlcnQgKAkyNTk0ICAg NjA0IDYwNCA2IDI1ODIgKSk7CiBEQVRBKGluc2VydCAoCTI1OTQgICA2MDQg NjA0IDcgMjU4NCApKTsKK0RBVEEoaW5zZXJ0ICgJMjU5NCAgIDYwNCA2MDQg OCA0NTg5ICkpOwogREFUQShpbnNlcnQgKAkyNTk1ICAgNzE4IDcxOCAxIDI1 OTEgKSk7CiBEQVRBKGluc2VydCAoCTI1OTUgICA3MTggNzE4IDIgMjU4MyAp KTsKIERBVEEoaW5zZXJ0ICgJMjU5NSAgIDcxOCA3MTggMyAyNTkyICkpOwpA QCAtMjE1LDYgKzIxNiw3IEBAIERBVEEoaW5zZXJ0ICgJMjU5NSAgIDcxOCA3 MTggNCAyNTgwICkpOwogREFUQShpbnNlcnQgKAkyNTk1ICAgNzE4IDcxOCA1 IDI1ODEgKSk7CiBEQVRBKGluc2VydCAoCTI1OTUgICA3MTggNzE4IDYgMjU4 MiApKTsKIERBVEEoaW5zZXJ0ICgJMjU5NSAgIDcxOCA3MTggNyAyNTg0ICkp OworREFUQShpbnNlcnQgKAkyNTk1ICAgNzE4IDcxOCA4IDQ1ODkgKSk7CiBE QVRBKGluc2VydCAoCTM2NTUgICAzNjE0IDM2MTQgMSAzNjU0ICkpOwogREFU QShpbnNlcnQgKAkzNjU1ICAgMzYxNCAzNjE0IDIgMzY1MSApKTsKIERBVEEo aW5zZXJ0ICgJMzY1NSAgIDM2MTQgMzYxNCAzIDM2NDggKSk7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZXJhdG9yLmggYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX29wZXJhdG9yLmgKaW5kZXggMzRlYmI1MC4u OGYwODU0MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19v cGVyYXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BlcmF0 b3IuaApAQCAtMTAxNSw5ICsxMDE1LDEzIEBAIERBVEEoaW5zZXJ0IE9JRCA9 IDE1MjAgKCAgIjwtPiIgICBQR05TUCBQR1VJRCBiIGYgZiAgNzE4CTcxOCAg NzAxICAgMTUyMCAgICAwIGNpCiBERVNDUigiZGlzdGFuY2UgYmV0d2VlbiIp OwogREFUQShpbnNlcnQgT0lEID0gMTUyMSAoICAiIyIJICBQR05TUCBQR1VJ RCBsIGYgZiAgMAkJNjA0ICAgMjMJICAwICAgIDAgcG9seV9ucG9pbnRzIC0g LSApKTsKIERFU0NSKCJudW1iZXIgb2YgcG9pbnRzIik7Ci1EQVRBKGluc2Vy dCBPSUQgPSAxNTIyICggICI8LT4iICAgUEdOU1AgUEdVSUQgYiBmIGYgIDYw MAk3MTggIDcwMQkgIDAgICAgMCBkaXN0X3BjIC0gLSApKTsKK0RBVEEoaW5z ZXJ0IE9JRCA9IDE1MjIgKCAgIjwtPiIgICBQR05TUCBQR1VJRCBiIGYgZiAg NjAwCTcxOCAgNzAxICAgNDU4NiAgICAwIGRpc3RfcGMgLSAtICkpOwogREVT Q1IoImRpc3RhbmNlIGJldHdlZW4iKTsKLURBVEEoaW5zZXJ0IE9JRCA9IDMy NzYgKCAgIjwtPiIJICBQR05TUCBQR1VJRCBiIGYgZgkgNjAwCTYwNAkgNzAx CSAgMAkgICAwIGRpc3RfcHBvbHkgLSAtICkpOworREFUQShpbnNlcnQgT0lE ID0gNDU4NiAoICAiPC0+IiAgIFBHTlNQIFBHVUlEIGIgZiBmICA3MTgJNjAw ICA3MDEgICAxNTIyICAgIDAgZGlzdF9jcG9pbnQgLSAtICkpOworREVTQ1Io ImRpc3RhbmNlIGJldHdlZW4iKTsKK0RBVEEoaW5zZXJ0IE9JRCA9IDMyNzYg KCAgIjwtPiIJICBQR05TUCBQR1VJRCBiIGYgZgkgNjAwCTYwNAkgNzAxICAg NDU4OAkgICAwIGRpc3RfcHBvbHkgLSAtICkpOworREVTQ1IoImRpc3RhbmNl IGJldHdlZW4iKTsKK0RBVEEoaW5zZXJ0IE9JRCA9IDQ1ODggKCAgIjwtPiIJ ICBQR05TUCBQR1VJRCBiIGYgZiAgNjA0IAk2MDAgIDcwMSAgIDMyNzYJICAg MCBkaXN0X3BvbHlwIC0gLSApKTsKIERFU0NSKCJkaXN0YW5jZSBiZXR3ZWVu Iik7CiBEQVRBKGluc2VydCBPSUQgPSAxNTIzICggICI8LT4iICAgUEdOU1Ag UEdVSUQgYiBmIGYgIDcxOAk2MDQgIDcwMQkgIDAgICAgMCBkaXN0X2Nwb2x5 IC0gLSApKTsKIERFU0NSKCJkaXN0YW5jZSBiZXR3ZWVuIik7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuaCBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5oCmluZGV4IGExZTI0NDIuLmYwYThjZDcg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oCisr KyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oCkBAIC04NTYsNiAr ODU2LDggQEAgREFUQShpbnNlcnQgT0lEID0gNzI3ICggIGRpc3Rfc2wJCSAg IFBHTlNQIFBHVUlEIDEyIDEgMCAwIDAgZiBmIGYgZiB0IGYgaSAyIDAgNzAK IERBVEEoaW5zZXJ0IE9JRCA9IDcyOCAoICBkaXN0X2Nwb2x5CQkgICBQR05T UCBQR1VJRCAxMiAxIDAgMCAwIGYgZiBmIGYgdCBmIGkgMiAwIDcwMSAiNzE4 IDYwNCIgX251bGxfIF9udWxsXyBfbnVsbF8gX251bGxfIF9udWxsXwlkaXN0 X2Nwb2x5IF9udWxsXyBfbnVsbF8gX251bGxfICkpOwogREFUQShpbnNlcnQg T0lEID0gNzI5ICggIHBvbHlfZGlzdGFuY2UJICAgUEdOU1AgUEdVSUQgMTIg MSAwIDAgMCBmIGYgZiBmIHQgZiBpIDIgMCA3MDEgIjYwNCA2MDQiIF9udWxs XyBfbnVsbF8gX251bGxfIF9udWxsXyBfbnVsbF8JcG9seV9kaXN0YW5jZSBf bnVsbF8gX251bGxfIF9udWxsXyApKTsKIERBVEEoaW5zZXJ0IE9JRCA9IDMy NzUgKCAgZGlzdF9wcG9seQkgICBQR05TUCBQR1VJRCAxMiAxIDAgMCAwIGYg ZiBmIGYgdCBmIGkgMiAwIDcwMSAiNjAwIDYwNCIgX251bGxfIF9udWxsXyBf bnVsbF8gX251bGxfIF9udWxsXwlkaXN0X3Bwb2x5IF9udWxsXyBfbnVsbF8g X251bGxfICkpOworREFUQShpbnNlcnQgT0lEID0gNDU4NyAoICBkaXN0X3Bv bHlwCSAgIFBHTlNQIFBHVUlEIDEyIDEgMCAwIDAgZiBmIGYgZiB0IGYgaSAy IDAgNzAxICI2MDQgNjAwIiBfbnVsbF8gX251bGxfIF9udWxsXyBfbnVsbF8g X251bGxfCWRpc3RfcG9seXAgX251bGxfIF9udWxsXyBfbnVsbF8gKSk7CitE QVRBKGluc2VydCBPSUQgPSA0NTg1ICggIGRpc3RfY3BvaW50CSAgIFBHTlNQ IFBHVUlEIDEyIDEgMCAwIDAgZiBmIGYgZiB0IGYgaSAyIDAgNzAxICI3MTgg NjAwIiBfbnVsbF8gX251bGxfIF9udWxsXyBfbnVsbF8gX251bGxfIAlkaXN0 X2Nwb2ludCBfbnVsbF8gX251bGxfIF9udWxsXyApKTsKIAogREFUQShpbnNl cnQgT0lEID0gNzQwICggIHRleHRfbHQJCSAgIFBHTlNQIFBHVUlEIDEyIDEg MCAwIDAgZiBmIGYgZiB0IGYgaSAyIDAgMTYgIjI1IDI1IiBfbnVsbF8gX251 bGxfIF9udWxsXyBfbnVsbF8gX251bGxfIHRleHRfbHQgX251bGxfIF9udWxs XyBfbnVsbF8gKSk7CiBEQVRBKGluc2VydCBPSUQgPSA3NDEgKCAgdGV4dF9s ZQkJICAgUEdOU1AgUEdVSUQgMTIgMSAwIDAgMCBmIGYgZiBmIHQgZiBpIDIg MCAxNiAiMjUgMjUiIF9udWxsXyBfbnVsbF8gX251bGxfIF9udWxsXyBfbnVs bF8gdGV4dF9sZSBfbnVsbF8gX251bGxfIF9udWxsXyApKTsKQEAgLTQxNjUs NiArNDE2Nyw4IEBAIERBVEEoaW5zZXJ0IE9JRCA9IDIxNzkgKCAgZ2lzdF9w b2ludF9jb25zaXN0ZW50IFBHTlNQIFBHVUlEIDEyIDEgMCAwIDAgZiBmIGYg ZiB0CiBERVNDUigiR2lTVCBzdXBwb3J0Iik7CiBEQVRBKGluc2VydCBPSUQg PSAzMDY0ICggIGdpc3RfcG9pbnRfZGlzdGFuY2UJUEdOU1AgUEdVSUQgMTIg MSAwIDAgMCBmIGYgZiBmIHQgZiBpIDQgMCA3MDEgIjIyODEgNjAwIDIzIDI2 IiBfbnVsbF8gX251bGxfIF9udWxsXyBfbnVsbF8gX251bGxfCWdpc3RfcG9p bnRfZGlzdGFuY2UgX251bGxfIF9udWxsXyBfbnVsbF8gKSk7CiBERVNDUigi R2lTVCBzdXBwb3J0Iik7CitEQVRBKGluc2VydCBPSUQgPSA0NTg5ICggIGdp c3RfYmJveF9kaXN0YW5jZQlQR05TUCBQR1VJRCAxMiAxIDAgMCAwIGYgZiBm IGYgdCBmIGkgNCAwIDcwMSAiMjI4MSA2MDAgMjMgMjYiIF9udWxsXyBfbnVs bF8gX251bGxfIF9udWxsXyBfbnVsbF8JZ2lzdF9iYm94X2Rpc3RhbmNlIF9u dWxsXyBfbnVsbF8gX251bGxfICkpOworREVTQ1IoIkdpU1Qgc3VwcG9ydCIp OwogCiAvKiBHSU4gKi8KIERBVEEoaW5zZXJ0IE9JRCA9IDI3MzEgKCAgZ2lu Z2V0Yml0bWFwCSAgIFBHTlNQIFBHVUlEIDEyIDEgMCAwIDAgZiBmIGYgZiB0 IGYgdiAyIDAgMjAgIjIyODEgMjI4MSIgX251bGxfIF9udWxsXyBfbnVsbF8g X251bGxfIF9udWxsXwlnaW5nZXRiaXRtYXAgX251bGxfIF9udWxsXyBfbnVs bF8gKSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDVh ZDJjYzIuLjk1ZThhN2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL2dlbmFt LmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbS5oIgogI2luY2x1ZGUgImV4 ZWN1dG9yL2luc3RydW1lbnQuaCIKKyNpbmNsdWRlICJsaWIvcGFpcmluZ2hl YXAuaCIKICNpbmNsdWRlICJub2Rlcy9wYXJhbXMuaCIKICNpbmNsdWRlICJu b2Rlcy9wbGFubm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9yZWx0cmlnZ2Vy LmgiCkBAIC0xMjYyLDYgKzEyNjMsNyBAQCB0eXBlZGVmIHN0cnVjdAogICoJ IEluZGV4U2NhblN0YXRlIGluZm9ybWF0aW9uCiAgKgogICoJCWluZGV4cXVh bG9yaWcJICAgZXhlY3V0aW9uIHN0YXRlIGZvciBpbmRleHF1YWxvcmlnIGV4 cHJlc3Npb25zCisgKgkJaW5kZXhvcmRlcmJ5b3JpZyAgIGV4ZWN1dGlvbiBz dGF0ZSBmb3IgaW5kZXhvcmRlcmJ5b3JpZyBleHByZXNzaW9ucwogICoJCVNj YW5LZXlzCQkgICBTa2V5IHN0cnVjdHVyZXMgZm9yIGluZGV4IHF1YWxzCiAg KgkJTnVtU2NhbktleXMJCSAgIG51bWJlciBvZiBTY2FuS2V5cwogICoJCU9y ZGVyQnlLZXlzCQkgICBTa2V5IHN0cnVjdHVyZXMgZm9yIGluZGV4IG9yZGVy aW5nIG9wZXJhdG9ycwpAQCAtMTI3MiwxMiArMTI3NCwyMCBAQCB0eXBlZGVm IHN0cnVjdAogICoJCVJ1bnRpbWVDb250ZXh0CSAgIGV4cHIgY29udGV4dCBm b3IgZXZhbGluZyBydW50aW1lIFNrZXlzCiAgKgkJUmVsYXRpb25EZXNjCSAg IGluZGV4IHJlbGF0aW9uIGRlc2NyaXB0b3IKICAqCQlTY2FuRGVzYwkJICAg aW5kZXggc2NhbiBkZXNjcmlwdG9yCisgKgorICoJCVJlb3JkZXJRdWV1ZQkg ICB0dXBsZXMgdGhhdCBuZWVkIHJlb3JkZXJpbmcgZHVlIHRvIHJlLWNoZWNr CisgKgkJUmVhY2hlZEVuZAkJICAgaGF2ZSB3ZSBmZXRjaGVkIGFsbCB0dXBs ZXMgZnJvbSBpbmRleCBhbHJlYWR5PworICoJCU9yZGVyQnlWYWx1ZXMJICAg dmFsdWVzIG9mIE9SREVSIEJZIGV4cHJzIG9mIGxhc3QgZmV0Y2hlZCB0dXBs ZQorICoJCVNvcnRTdXBwb3J0CQkgICBmb3IgcmVvcmRlcmluZyBPUkRFUiBC WSBleHBycworICoJCU9yZGVyQnlUeXBCeVZhbHMgICBpcyB0aGUgZGF0YXR5 cGUgb2Ygb3JkZXIgYnkgZXhwcmVzc2lvbiBwYXNzLWJ5LXZhbHVlPworICoJ CU9yZGVyQnlUeXBMZW5zCSAgIHR5cGxlbnMgb2YgdGhlIGRhdGF0eXBlcyBv ZiBvcmRlciBieSBleHByZXNzaW9ucwogICogLS0tLS0tLS0tLS0tLS0tLQog ICovCiB0eXBlZGVmIHN0cnVjdCBJbmRleFNjYW5TdGF0ZQogewogCVNjYW5T dGF0ZQlzczsJCQkJLyogaXRzIGZpcnN0IGZpZWxkIGlzIE5vZGVUYWcgKi8K IAlMaXN0CSAgICppbmRleHF1YWxvcmlnOworCUxpc3QJICAgKmluZGV4b3Jk ZXJieW9yaWc7CiAJU2NhbktleQkJaXNzX1NjYW5LZXlzOwogCWludAkJCWlz c19OdW1TY2FuS2V5czsKIAlTY2FuS2V5CQlpc3NfT3JkZXJCeUtleXM7CkBA IC0xMjg4LDYgKzEyOTgsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhTY2Fu U3RhdGUKIAlFeHByQ29udGV4dCAqaXNzX1J1bnRpbWVDb250ZXh0OwogCVJl bGF0aW9uCWlzc19SZWxhdGlvbkRlc2M7CiAJSW5kZXhTY2FuRGVzYyBpc3Nf U2NhbkRlc2M7CisKKwkvKiBUaGVzZSBhcmUgbmVlZGVkIGZvciByZS1jaGVj a2luZyBPUkRFUiBCWSBleHByIG9yZGVyaW5nICovCisJcGFpcmluZ2hlYXAg Kmlzc19SZW9yZGVyUXVldWU7CisJYm9vbAkJaXNzX1JlYWNoZWRFbmQ7CisJ RGF0dW0JICAgKmlzc19PcmRlckJ5VmFsdWVzOworCWJvb2wJICAgKmlzc19P cmRlckJ5TnVsbHM7CisJU29ydFN1cHBvcnQgaXNzX1NvcnRTdXBwb3J0Owor CWJvb2wJICAgKmlzc19PcmRlckJ5VHlwQnlWYWxzOworCWludDE2CSAgICpp c3NfT3JkZXJCeVR5cExlbnM7CiB9IEluZGV4U2NhblN0YXRlOwogCiAvKiAt LS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5o CmluZGV4IDE0OTRiMzMuLjljMDJlMjAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L3BsYW5ub2Rlcy5oCkBAIC0zMTEsOCArMzExLDEzIEBAIHR5cGVkZWYgU2Nh biBTZXFTY2FuOwogICogaW5kZXggY29sdW1uIG9yZGVyLiAgT25seSB0aGUg ZXhwcmVzc2lvbnMgYXJlIHByb3ZpZGVkLCBub3QgdGhlIGF1eGlsaWFyeQog ICogc29ydC1vcmRlciBpbmZvcm1hdGlvbiBmcm9tIHRoZSBPUkRFUiBCWSBT b3J0R3JvdXBDbGF1c2VzOyBpdCdzIGFzc3VtZWQKICAqIHRoYXQgdGhlIHNv cnQgb3JkZXJpbmcgaXMgZnVsbHkgZGV0ZXJtaW5hYmxlIGZyb20gdGhlIHRv cC1sZXZlbCBvcGVyYXRvcnMuCi0gKiBpbmRleG9yZGVyYnlvcmlnIGlzIHVu dXNlZCBhdCBydW4gdGltZSwgYnV0IGlzIG5lZWRlZCBmb3IgRVhQTEFJTi4K LSAqIChOb3RlIHRoZXNlIGZpZWxkcyBhcmUgdXNlZCBmb3IgYW1jYW5vcmRl cmJ5b3AgY2FzZXMsIG5vdCBhbWNhbm9yZGVyIGNhc2VzLikKKyAqIGluZGV4 b3JkZXJieW9yaWcgaXMgdXNlZCBhdCBydW50aW1lIHRvIHJlY2hlY2sgdGhl IG9yZGVyaW5nLCBpZiB0aGUgaW5kZXgKKyAqIGNhbm5vdCBjYWxjdWxhdGUg YW4gYWNjdXJhdGUgb3JkZXJpbmcuICBJdCBpcyBhbHNvIG5lZWRlZCBmb3Ig RVhQTEFJTi4KKyAqCisgKiBpbmRleG9yZGVyYnlvcHMgaXMgYW4gYXJyYXkg b2Ygb3BlcmF0b3JzIHVzZWQgdG8gc29ydCB0aGUgT1JERVIgQlkKKyAqIGV4 cHJlc3Npb25zLCB1c2VkIHRvZ2V0aGVyIHdpdGggaW5kZXhvcmRlcmJ5b3Jp ZyB0byByZWNoZWNrIG9yZGVyaW5nIGF0IHJ1bgorICogdGltZS4gIChOb3Rl IHRoZXNlIGZpZWxkcyBhcmUgdXNlZCBmb3IgYW1jYW5vcmRlcmJ5b3AgY2Fz ZXMsIG5vdCBhbWNhbm9yZGVyCisgKiBjYXNlcy4pCiAgKgogICogaW5kZXhv cmRlcmRpciBzcGVjaWZpZXMgdGhlIHNjYW4gb3JkZXJpbmcsIGZvciBpbmRl eHNjYW5zIG9uIGFtY2Fub3JkZXIKICAqIGluZGV4ZXMgKGZvciBvdGhlciBp bmRleGVzIGl0IHNob3VsZCBiZSAiZG9uJ3QgY2FyZSIpLgpAQCAtMzI1LDcg KzMzMCw4IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4U2NhbgogCUxpc3QJICAg KmluZGV4cXVhbDsJCS8qIGxpc3Qgb2YgaW5kZXggcXVhbHMgKHVzdWFsbHkg T3BFeHBycykgKi8KIAlMaXN0CSAgICppbmRleHF1YWxvcmlnOwkvKiB0aGUg c2FtZSBpbiBvcmlnaW5hbCBmb3JtICovCiAJTGlzdAkgICAqaW5kZXhvcmRl cmJ5OwkvKiBsaXN0IG9mIGluZGV4IE9SREVSIEJZIGV4cHJzICovCi0JTGlz dAkgICAqaW5kZXhvcmRlcmJ5b3JpZzsJCS8qIHRoZSBzYW1lIGluIG9yaWdp bmFsIGZvcm0gKi8KKwlMaXN0CSAgICppbmRleG9yZGVyYnlvcmlnOwkvKiB0 aGUgc2FtZSBpbiBvcmlnaW5hbCBmb3JtICovCisJT2lkCQkgICAqaW5kZXhv cmRlcmJ5b3BzOwkvKiBvcGVyYXRvcnMgdG8gc29ydCBPUkRFUiBCWSBleHBy cyAqLwogCVNjYW5EaXJlY3Rpb24gaW5kZXhvcmRlcmRpcjsJLyogZm9yd2Fy ZCBvciBiYWNrd2FyZCBvciBkb24ndCBjYXJlICovCiB9IEluZGV4U2NhbjsK IApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvZ2VvX2RlY2xzLmgg Yi9zcmMvaW5jbHVkZS91dGlscy9nZW9fZGVjbHMuaAppbmRleCA0Mzc3YmFh Li4yMzExZDM1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9nZW9f ZGVjbHMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9nZW9fZGVjbHMuaApA QCAtMzk0LDggKzM5NCwxMCBAQCBleHRlcm4gRGF0dW0gY2lyY2xlX2RpYW1l dGVyKFBHX0ZVTkNUSU9OX0FSR1MpOwogZXh0ZXJuIERhdHVtIGNpcmNsZV9y YWRpdXMoUEdfRlVOQ1RJT05fQVJHUyk7CiBleHRlcm4gRGF0dW0gY2lyY2xl X2Rpc3RhbmNlKFBHX0ZVTkNUSU9OX0FSR1MpOwogZXh0ZXJuIERhdHVtIGRp c3RfcGMoUEdfRlVOQ1RJT05fQVJHUyk7CitleHRlcm4gRGF0dW0gZGlzdF9j cG9pbnQoUEdfRlVOQ1RJT05fQVJHUyk7CiBleHRlcm4gRGF0dW0gZGlzdF9j cG9seShQR19GVU5DVElPTl9BUkdTKTsKIGV4dGVybiBEYXR1bSBkaXN0X3Bw b2x5KFBHX0ZVTkNUSU9OX0FSR1MpOworZXh0ZXJuIERhdHVtIGRpc3RfcG9s eXAoUEdfRlVOQ1RJT05fQVJHUyk7CiBleHRlcm4gRGF0dW0gY2lyY2xlX2Nl bnRlcihQR19GVU5DVElPTl9BUkdTKTsKIGV4dGVybiBEYXR1bSBjcl9jaXJj bGUoUEdfRlVOQ1RJT05fQVJHUyk7CiBleHRlcm4gRGF0dW0gYm94X2NpcmNs ZShQR19GVU5DVElPTl9BUkdTKTsKQEAgLTQyMCw2ICs0MjIsNyBAQCBleHRl cm4gRGF0dW0gZ2lzdF9jaXJjbGVfY29uc2lzdGVudChQR19GVU5DVElPTl9B UkdTKTsKIGV4dGVybiBEYXR1bSBnaXN0X3BvaW50X2NvbXByZXNzKFBHX0ZV TkNUSU9OX0FSR1MpOwogZXh0ZXJuIERhdHVtIGdpc3RfcG9pbnRfY29uc2lz dGVudChQR19GVU5DVElPTl9BUkdTKTsKIGV4dGVybiBEYXR1bSBnaXN0X3Bv aW50X2Rpc3RhbmNlKFBHX0ZVTkNUSU9OX0FSR1MpOworZXh0ZXJuIERhdHVt IGdpc3RfYmJveF9kaXN0YW5jZShQR19GVU5DVElPTl9BUkdTKTsKIGV4dGVy biBEYXR1bSBnaXN0X3BvaW50X2ZldGNoKFBHX0ZVTkNUSU9OX0FSR1MpOwog CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3Jl YXRlX2luZGV4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3Jl YXRlX2luZGV4Lm91dAppbmRleCBhYmU2NGU1Li5hOTVmZTI5IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5k ZXgub3V0CkBAIC0zNzIsNiArMzcyLDM2IEBAIFNFTEVDVCBjb3VudCgqKSBG Uk9NIHJhZGl4X3RleHRfdGJsIFdIRVJFIHQgfj5+ICAnV29ydGgKICAgICA0 OAogKDEgcm93KQogCitTRUxFQ1QgKiBGUk9NIGdwb2x5Z29uX3RibCBPUkRF UiBCWSBmMSA8LT4gJygwLDApJzo6cG9pbnQgTElNSVQgMTA7CisgICAgICAg ICAgICAgICAgICAgICAgIGYxICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKCgyNDAsMzU5KSwoMjQwLDQ1NSksKDMzNyw0NTUpLCgzMzcsMzU5 KSkKKyAoKDY2MiwxNjMpLCg2NjIsMTg3KSwoNzU5LDE4NyksKDc1OSwxNjMp KQorICgoMTAwMCwwKSwoMCwxMDAwKSkKKyAoKDAsMTAwMCksKDEwMDAsMTAw MCkpCisgKCgxMzQ2LDM0NCksKDEzNDYsNDAzKSwoMTQ0NCw0MDMpLCgxNDQ0 LDM0NCkpCisgKCgyNzgsMTQwOSksKDI3OCwxNDU3KSwoMzY5LDE0NTcpLCgz NjksMTQwOSkpCisgKCg5MDcsMTE1NiksKDkwNywxMjAxKSwoOTQ4LDEyMDEp LCg5NDgsMTE1NikpCisgKCgxNTE3LDk3MSksKDE1MTcsMTA0MyksKDE1OTQs MTA0MyksKDE1OTQsOTcxKSkKKyAoKDE3NSwxODIwKSwoMTc1LDE4NTApLCgy NTksMTg1MCksKDI1OSwxODIwKSkKKyAoKDI0MjQsODEpLCgyNDI0LDE2MCks KDI0MjQsMTYwKSwoMjQyNCw4MSkpCisoMTAgcm93cykKKworU0VMRUNUICog RlJPTSBnY2lyY2xlX3RibCBPUkRFUiBCWSBmMSA8LT4gJygyMDAsMzAwKSc6 OnBvaW50IExJTUlUIDEwOworICAgICAgICAgICAgICAgIGYxICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgPCgyODguNSw0MDcpLDY4LjIzNjcyMDMxOTc4MDk+CisgPCg3MTAuNSwx NzUpLDQ5Ljk2MjQ4NTkyNjk0MzI+CisgPCgzMjMuNSwxNDMzKSw1MS40NDE3 MTQ1OTAzOTgzPgorIDwoOTI3LjUsMTE3OC41KSwzMC40Mzg0NjI1MTA0NDg5 PgorIDwoMTM5NSwzNzMuNSksNTcuMTk0ODQyNDI0ODIwMT4KKyA8KDE1NTUu NSwxMDA3KSw1Mi43MDkxMDczNzI0NDU2PgorIDwoMjE3LDE4MzUpLDQ0LjU5 ODIwNjI0MTk1NTU+CisgPCg0ODksMjQyMS41KSwyMi4zODg2MTMxNzcyMzgx PgorIDwoMjQyNCwxMjAuNSksMzkuNT4KKyA8KDc1MS41LDI2NTUpLDIwLjQw MjIwNTc2MzEwMzI+CisoMTAgcm93cykKKwogLS0gTm93IGNoZWNrIHRoZSBy ZXN1bHRzIGZyb20gcGxhaW4gaW5kZXhzY2FuCiBTRVQgZW5hYmxlX3NlcXNj YW4gPSBPRkY7CiBTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOwpAQCAtMTE1 Miw2ICsxMTgyLDU0IEBAIFNFTEVDVCBjb3VudCgqKSBGUk9NIHJhZGl4X3Rl eHRfdGJsIFdIRVJFIHQgfj5+ICAnV29ydGgKICAgICA0OAogKDEgcm93KQog CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIGdwb2x5Z29u X3RibCBPUkRFUiBCWSBmMSA8LT4gJygwLDApJzo6cG9pbnQgTElNSVQgMTA7 CisgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBMaW1pdAorICAgLT4gIEluZGV4IFNj YW4gdXNpbmcgZ2dwb2x5Z29uaW5kIG9uIGdwb2x5Z29uX3RibAorICAgICAg ICAgT3JkZXIgQnk6IChmMSA8LT4gJygwLDApJzo6cG9pbnQpCisoMyByb3dz KQorCitTRUxFQ1QgKiBGUk9NIGdwb2x5Z29uX3RibCBPUkRFUiBCWSBmMSA8 LT4gJygwLDApJzo6cG9pbnQgTElNSVQgMTA7CisgICAgICAgICAgICAgICAg ICAgICAgIGYxICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKCgy NDAsMzU5KSwoMjQwLDQ1NSksKDMzNyw0NTUpLCgzMzcsMzU5KSkKKyAoKDY2 MiwxNjMpLCg2NjIsMTg3KSwoNzU5LDE4NyksKDc1OSwxNjMpKQorICgoMTAw MCwwKSwoMCwxMDAwKSkKKyAoKDAsMTAwMCksKDEwMDAsMTAwMCkpCisgKCgx MzQ2LDM0NCksKDEzNDYsNDAzKSwoMTQ0NCw0MDMpLCgxNDQ0LDM0NCkpCisg KCgyNzgsMTQwOSksKDI3OCwxNDU3KSwoMzY5LDE0NTcpLCgzNjksMTQwOSkp CisgKCg5MDcsMTE1NiksKDkwNywxMjAxKSwoOTQ4LDEyMDEpLCg5NDgsMTE1 NikpCisgKCgxNTE3LDk3MSksKDE1MTcsMTA0MyksKDE1OTQsMTA0MyksKDE1 OTQsOTcxKSkKKyAoKDE3NSwxODIwKSwoMTc1LDE4NTApLCgyNTksMTg1MCks KDI1OSwxODIwKSkKKyAoKDI0MjQsODEpLCgyNDI0LDE2MCksKDI0MjQsMTYw KSwoMjQyNCw4MSkpCisoMTAgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUICogRlJPTSBnY2lyY2xlX3RibCBPUkRFUiBCWSBmMSA8LT4g JygyMDAsMzAwKSc6OnBvaW50IExJTUlUIDEwOworICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBMaW1pdAorICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgZ2djaXJjbGVpbmQg b24gZ2NpcmNsZV90YmwKKyAgICAgICAgIE9yZGVyIEJ5OiAoZjEgPC0+ICco MjAwLDMwMCknOjpwb2ludCkKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00g Z2NpcmNsZV90YmwgT1JERVIgQlkgZjEgPC0+ICcoMjAwLDMwMCknOjpwb2lu dCBMSU1JVCAxMDsKKyAgICAgICAgICAgICAgICBmMSAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDwo Mjg4LjUsNDA3KSw2OC4yMzY3MjAzMTk3ODA5PgorIDwoNzEwLjUsMTc1KSw0 OS45NjI0ODU5MjY5NDMyPgorIDwoMzIzLjUsMTQzMyksNTEuNDQxNzE0NTkw Mzk4Mz4KKyA8KDkyNy41LDExNzguNSksMzAuNDM4NDYyNTEwNDQ4OT4KKyA8 KDEzOTUsMzczLjUpLDU3LjE5NDg0MjQyNDgyMDE+CisgPCgxNTU1LjUsMTAw NyksNTIuNzA5MTA3MzcyNDQ1Nj4KKyA8KDIxNywxODM1KSw0NC41OTgyMDYy NDE5NTU1PgorIDwoNDg5LDI0MjEuNSksMjIuMzg4NjEzMTc3MjM4MT4KKyA8 KDI0MjQsMTIwLjUpLDM5LjU+CisgPCg3NTEuNSwyNjU1KSwyMC40MDIyMDU3 NjMxMDMyPgorKDEwIHJvd3MpCisKIC0tIE5vdyBjaGVjayB0aGUgcmVzdWx0 cyBmcm9tIGJpdG1hcCBpbmRleHNjYW4KIFNFVCBlbmFibGVfc2Vxc2NhbiA9 IE9GRjsKIFNFVCBlbmFibGVfaW5kZXhzY2FuID0gT0ZGOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKaW5kZXggZjc3 OWZhMC4uNWRmOTAwOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvY3JlYXRlX2luZGV4LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9jcmVhdGVfaW5kZXguc3FsCkBAIC0yMjQsNiArMjI0LDEwIEBAIFNFTEVD VCBjb3VudCgqKSBGUk9NIHJhZGl4X3RleHRfdGJsIFdIRVJFIHQgPiAgICAn V29ydGgKIAogU0VMRUNUIGNvdW50KCopIEZST00gcmFkaXhfdGV4dF90Ymwg V0hFUkUgdCB+Pn4gICdXb3J0aCAgICAgICAgICAgICAgICAgICAgICAgICBT dCAgJzsKIAorU0VMRUNUICogRlJPTSBncG9seWdvbl90YmwgT1JERVIgQlkg ZjEgPC0+ICcoMCwwKSc6OnBvaW50IExJTUlUIDEwOworCitTRUxFQ1QgKiBG Uk9NIGdjaXJjbGVfdGJsIE9SREVSIEJZIGYxIDwtPiAnKDIwMCwzMDApJzo6 cG9pbnQgTElNSVQgMTA7CisKIC0tIE5vdyBjaGVjayB0aGUgcmVzdWx0cyBm cm9tIHBsYWluIGluZGV4c2NhbgogU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZG OwogU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKQEAgLTQzNyw2ICs0NDEs MTQgQEAgRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIGNvdW50KCopIEZS T00gcmFkaXhfdGV4dF90YmwgV0hFUkUgdCB+Pn4gICdXb3J0aCAgICAgICAg ICAgICAgICAgICAgICAgICBTdCAgJzsKIFNFTEVDVCBjb3VudCgqKSBGUk9N IHJhZGl4X3RleHRfdGJsIFdIRVJFIHQgfj5+ICAnV29ydGggICAgICAgICAg ICAgICAgICAgICAgICAgU3QgICc7CiAKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCAqIEZST00gZ3BvbHlnb25fdGJsIE9SREVSIEJZIGYxIDwtPiAn KDAsMCknOjpwb2ludCBMSU1JVCAxMDsKK1NFTEVDVCAqIEZST00gZ3BvbHln b25fdGJsIE9SREVSIEJZIGYxIDwtPiAnKDAsMCknOjpwb2ludCBMSU1JVCAx MDsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSBnY2ly Y2xlX3RibCBPUkRFUiBCWSBmMSA8LT4gJygyMDAsMzAwKSc6OnBvaW50IExJ TUlUIDEwOworU0VMRUNUICogRlJPTSBnY2lyY2xlX3RibCBPUkRFUiBCWSBm MSA8LT4gJygyMDAsMzAwKSc6OnBvaW50IExJTUlUIDEwOworCiAtLSBOb3cg Y2hlY2sgdGhlIHJlc3VsdHMgZnJvbSBiaXRtYXAgaW5kZXhzY2FuCiBTRVQg ZW5hYmxlX3NlcXNjYW4gPSBPRkY7CiBTRVQgZW5hYmxlX2luZGV4c2NhbiA9 IE9GRjsKLS0gCjIuMS40Cgo= --------------000909090100090208010402 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------000909090100090208010402--