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 1vJZor-00BgzQ-1s for pgsql-hackers@arkaria.postgresql.org; Thu, 13 Nov 2025 16:05:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vJZop-002fgn-0M for pgsql-hackers@arkaria.postgresql.org; Thu, 13 Nov 2025 16:05:07 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vJZoo-002fgf-0c for pgsql-hackers@lists.postgresql.org; Thu, 13 Nov 2025 16:05:06 +0000 Received: from lahtoruutu.iki.fi ([185.185.170.37]) by makus.postgresql.org with smtp (Exim 4.96) (envelope-from ) id 1vJZog-006wz2-0c for pgsql-hackers@lists.postgresql.org; Thu, 13 Nov 2025 16:05:05 +0000 Received: from [10.0.2.15] (unknown [130.41.208.2]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by lahtoruutu.iki.fi (Postfix) with ESMTPSA id 4d6lTY1fcQz49Pxv; Thu, 13 Nov 2025 18:04:49 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1763049890; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=xH0VR821tDDOcYwiB9MSqC41J7J1CHuDCnMM+UBzuN8=; b=oHPzwGdo6Pn0tKMxIL3Lz47d2mqUFAbbn2tbNVBeuHrlbS+GctOO2LLw/qXk/+vJAAa83z QbFmHSug+2a/oNoKkqRaVyaSFTfTmz9Fx4VzOgHARJpHVdaTOx1GK/JgJjUDApFEibSpYu 99HiTZ/f157tfnOJrW/0QsM80az2VF2D6JF4GzaBFqBpTi5ZXbiuCU8mEsMohYR6t7hWKL ArQTVuMjhKtzOQWToHVlKs+KBggY5e9Xu9BO2MCC5M1meaHDTqE4jNVQt1QYIZOUdMRA3J tih8Re5sbUVTlDRjtH2ASg//gXMRi7d76h0uRxjZa1ezt09FoRSZBnucL5YQfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1763049890; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=xH0VR821tDDOcYwiB9MSqC41J7J1CHuDCnMM+UBzuN8=; b=Mwn2hdW/05i7HAbNizKXSOhHE68eGBSBCbImWIgpF0RykfBDR6+9T/ikkRe0J5Og6Bm5Ge zaj/vTvwy4UjBfwDrxUxcqgH3iyi4DQxfPdGwbQRDe6sOneZlRtlvXMp4QjchMydnqBosa oiManXpfaL9YZ095KXqmK1jmsOtDkj5j1DHlfwnBNEMhnmS7R/pplB1Tf9xbLAZQvU/bCK T0JXAxUeA4sYBTh+CT4Q7uLmdnd1WZqH+uw/QGJJSDE0tfGJKTX+psAx1YA/VCHvwyZ/r5 7DKi/GtxvooKCSbIz0+drgDzNHrBifjpimU8UPuUMP/s1MIwPTK22/zWdMsBQA== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi ARC-Seal: i=1; a=rsa-sha256; d=iki.fi; s=lahtoruutu; cv=none; t=1763049890; b=eu/zozH9B1/3loyzwOebu1W76Zorg4ebNgMY1Co0ahW2LZ07pnZHAL96xj1tjo7OJTxXka LcMWgiJJ2FzlLnednXkXomB1YhuPYcfY4F4+fg4LTsMhvNipXHms43fOhVOcbZNeqYFXqa 8ZImFxPnlYjk+0lYsY1cPlhApHBSCjOsBD9OahvZdgpe2e0msE/wiCLpxuHwIGag8vdob1 40OlgKe9h/jf4T8JuarBaFax+RDtzWlS0doJLX904+sIGj0xhGS4zbY+0f+BwbikWOnGzu fZHJiJQ6aGbtCLYzsoYzvUgu4GI3Or6PV1EKATtWW3HgSz1nfSFfJxBUwzKkyw== Content-Type: multipart/mixed; boundary="------------D5Uqc0qFgdUSc5DsuhKtaq91" Message-ID: <54aa8f65-f0e4-4464-b543-e0399c1cab1e@iki.fi> Date: Thu, 13 Nov 2025 18:04:48 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: POC: make mxidoff 64 bits From: Heikki Linnakangas To: Maxim Orlov , wenhui qiu Cc: Alexander Korotkov , Postgres hackers References: <4535f3aa-3220-4760-b1f5-2bc91f248e03@iki.fi> <2bc58592-9d74-4af0-bdd1-1a88e8683f7c@iki.fi> <36531c0e-292c-409d-bbc7-a252cf6e910a@iki.fi> Content-Language: en-US In-Reply-To: <36531c0e-292c-409d-bbc7-a252cf6e910a@iki.fi> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------D5Uqc0qFgdUSc5DsuhKtaq91 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable I realized that this issue was still outstanding: On 01/04/2025 21:25, Heikki Linnakangas wrote: > Thanks! I did some manual testing of this. I created a little helper=20 > function to consume multixids, to test the autovacuum behavior, and=20 > found one issue: >=20 > If you consume a lot of multixid members space, by creating lots of=20 > multixids with huge number of members in each, you can end up with a=20 > very bloated members SLRU, and autovacuum is in no hurry to clean it up= .=20 > Here's what I did: >=20 > 1. Installed attached test module > 2. Ran "select consume_multixids(10000, 100000);" many times > 3. ran: >=20 > $ du -h data/pg_multixact/members/ > 26G=C2=A0=C2=A0=C2=A0 data/pg_multixact/members/ >=20 > When I run "vacuum freeze; select * from pg_database;", I can see that=20 > 'datminmxid' for the current database is advanced. However, autovacuum=20 > is in no hurry to vacuum 'template0' and 'template1', so pg_multixact/=20 > members/ does not get truncated. Eventually, when=20 > autovacuum_multixact_freeze_max_age is reached, it presumably will, but= =20 > you will run out of disk space before that. >=20 > There is this check for members size at the end of SetOffsetVacuumLimit= (): >=20 >> >> =C2=A0=C2=A0=C2=A0=C2=A0/* >> =C2=A0=C2=A0=C2=A0=C2=A0 * Do we need autovacuum?=C2=A0=C2=A0=C2=A0 If= we're not sure, assume yes. >> =C2=A0=C2=A0=C2=A0=C2=A0 */ >> =C2=A0=C2=A0=C2=A0=C2=A0return !oldestOffsetKnown || >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (nextOffset - oldestOffset = > MULTIXACT_MEMBER_AUTOVAC_THRESHOLD); >=20 > And the caller (SetMultiXactIdLimit()) will in fact signal the=20 > autovacuum launcher after "vacuum freeze" because of that. But=20 > autovacuum launcher will look at the datminmxid / relminmxid values, se= e=20 > that they are well within autovacuum_multixact_freeze_max_age, and do=20 > nothing. >=20 > This is a very extreme case, but clearly the code to signal autovacuum=20 > launcher, and the freeze age cutoff that autovacuum then uses, are not=20 > in sync. >=20 > This patch removed MultiXactMemberFreezeThreshold(), per my suggestion,= =20 > but we threw this baby with the bathwater. We discussed that in this=20 > thread, but didn't come up with any solution. But ISTM we still need=20 > something like MultiXactMemberFreezeThreshold() to trigger autovacuum=20 > freezing if the members have grown too large. Here's a new patch version that addresses the above issue. I resurrected=20 MultiXactMemberFreezeThreshold(), using the same logic as before, just=20 using pretty arbitrary thresholds of 1 and 2 billion offsets instead of=20 the safe/danger thresholds derived from MaxMultiOffset. That gives=20 roughly the same behavior wrt. calculating effective freeze age as before= . Another change is that I removed the offset-based emergency vacuum=20 triggering. With 64-bit offsets, we never need to shut down the system=20 to prevent offset wraparound, so even if the offsets SLRU grows large,=20 it's not an "emergency" the same way that wraparound is. Consuming lots=20 of disk space could be a problem, of course, but we can let autovacuum=20 deal with that at the normal pace, like it deals with bloated tables. The heuristics could surely be made better and/or more configurable, but=20 I think this good enough for now. I included these changes as a separate patch for review purposes, but it=20 ought to be squashed with the main patch before committing. - Heikki --------------D5Uqc0qFgdUSc5DsuhKtaq91 Content-Type: text/x-patch; charset=UTF-8; name="v25-0001-Move-pg_multixact-SLRU-page-format-definitions-t.patch" Content-Disposition: attachment; filename*0="v25-0001-Move-pg_multixact-SLRU-page-format-definitions-t.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0NGNjM2I0YWRlMDNhNWI0YTI2ZGFjOWY3ZGFmNTM2MjdmNGQ2Y2NiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMTIgTm92IDIwMjUgMTQ6MTk6MzIgKzAyMDAK U3ViamVjdDogW1BBVENIIHYyNSAwMS8xMF0gTW92ZSBwZ19tdWx0aXhhY3QgU0xSVSBwYWdl IGZvcm1hdCBkZWZpbml0aW9ucyB0bwogc2VwYXJhdGUgaGVhZGVyCgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jICB8IDExOSAtLS0tLS0tLS0tLS0tLS0t LS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdF9pbnRlcm5hbC5oIHwgMTQwICsr KysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAxNDAgaW5zZXJ0aW9u cygrKSwgMTE5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRl L2FjY2Vzcy9tdWx0aXhhY3RfaW50ZXJuYWwuaAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0vbXVsdGl4YWN0LmMKaW5kZXggOWQ1ZjEzMGFmN2UuLmFjYjJhNjc4OGY5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwpAQCAtODksMTI1ICs4OSw2IEBA CiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIAogCi0vKgotICogRGVmaW5lcyBmb3Ig TXVsdGlYYWN0T2Zmc2V0IHBhZ2Ugc2l6ZXMuICBBIHBhZ2UgaXMgdGhlIHNhbWUgQkxDS1Na IGFzIGlzCi0gKiB1c2VkIGV2ZXJ5d2hlcmUgZWxzZSBpbiBQb3N0Z3Jlcy4KLSAqCi0gKiBO b3RlOiBiZWNhdXNlIE11bHRpWGFjdE9mZnNldHMgYXJlIDMyIGJpdHMgYW5kIHdyYXAgYXJv dW5kIGF0IDB4RkZGRkZGRkYsCi0gKiBNdWx0aVhhY3QgcGFnZSBudW1iZXJpbmcgYWxzbyB3 cmFwcyBhcm91bmQgYXQKLSAqIDB4RkZGRkZGRkYvTVVMVElYQUNUX09GRlNFVFNfUEVSX1BB R0UsIGFuZCBzZWdtZW50IG51bWJlcmluZyBhdAotICogMHhGRkZGRkZGRi9NVUxUSVhBQ1Rf T0ZGU0VUU19QRVJfUEFHRS9TTFJVX1BBR0VTX1BFUl9TRUdNRU5ULiAgV2UgbmVlZAotICog dGFrZSBubyBleHBsaWNpdCBub3RpY2Ugb2YgdGhhdCBmYWN0IGluIHRoaXMgbW9kdWxlLCBl eGNlcHQgd2hlbiBjb21wYXJpbmcKLSAqIHNlZ21lbnQgYW5kIHBhZ2UgbnVtYmVycyBpbiBU cnVuY2F0ZU11bHRpWGFjdCAoc2VlCi0gKiBNdWx0aVhhY3RPZmZzZXRQYWdlUHJlY2VkZXMp LgotICovCi0KLS8qIFdlIG5lZWQgZm91ciBieXRlcyBwZXIgb2Zmc2V0ICovCi0jZGVmaW5l IE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFIChCTENLU1ogLyBzaXplb2YoTXVsdGlYYWN0 T2Zmc2V0KSkKLQotc3RhdGljIGlubGluZSBpbnQ2NAotTXVsdGlYYWN0SWRUb09mZnNldFBh Z2UoTXVsdGlYYWN0SWQgbXVsdGkpCi17Ci0JcmV0dXJuIG11bHRpIC8gTVVMVElYQUNUX09G RlNFVFNfUEVSX1BBR0U7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgaW50Ci1NdWx0aVhhY3RJZFRv T2Zmc2V0RW50cnkoTXVsdGlYYWN0SWQgbXVsdGkpCi17Ci0JcmV0dXJuIG11bHRpICUgTVVM VElYQUNUX09GRlNFVFNfUEVSX1BBR0U7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgaW50NjQKLU11 bHRpWGFjdElkVG9PZmZzZXRTZWdtZW50KE11bHRpWGFjdElkIG11bHRpKQotewotCXJldHVy biBNdWx0aVhhY3RJZFRvT2Zmc2V0UGFnZShtdWx0aSkgLyBTTFJVX1BBR0VTX1BFUl9TRUdN RU5UOwotfQotCi0vKgotICogVGhlIHNpdHVhdGlvbiBmb3IgbWVtYmVycyBpcyBhIGJpdCBt b3JlIGNvbXBsZXg6IHdlIHN0b3JlIG9uZSBieXRlIG9mCi0gKiBhZGRpdGlvbmFsIGZsYWcg Yml0cyBmb3IgZWFjaCBUcmFuc2FjdGlvbklkLiAgVG8gZG8gdGhpcyB3aXRob3V0IGdldHRp bmcKLSAqIGludG8gYWxpZ25tZW50IGlzc3Vlcywgd2Ugc3RvcmUgZm91ciBieXRlcyBvZiBm bGFncywgYW5kIHRoZW4gdGhlCi0gKiBjb3JyZXNwb25kaW5nIDQgWGlkcy4gIEVhY2ggc3Vj aCA1LXdvcmQgKDIwLWJ5dGUpIHNldCB3ZSBjYWxsIGEgImdyb3VwIiwgYW5kCi0gKiBhcmUg c3RvcmVkIGFzIGEgd2hvbGUgaW4gcGFnZXMuICBUaHVzLCB3aXRoIDhrQiBCTENLU1osIHdl IGtlZXAgNDA5IGdyb3VwcwotICogcGVyIHBhZ2UuICBUaGlzIHdhc3RlcyAxMiBieXRlcyBw ZXIgcGFnZSwgYnV0IHRoYXQncyBPSyAtLSBzaW1wbGljaXR5IChhbmQKLSAqIHBlcmZvcm1h bmNlKSB0cnVtcHMgc3BhY2UgZWZmaWNpZW5jeSBoZXJlLgotICoKLSAqIE5vdGUgdGhhdCB0 aGUgIm9mZnNldCIgbWFjcm9zIHdvcmsgd2l0aCBieXRlIG9mZnNldCwgbm90IGFycmF5IGlu ZGV4ZXMsIHNvCi0gKiBhcml0aG1ldGljIG11c3QgYmUgZG9uZSB1c2luZyAiY2hhciAqIiBw b2ludGVycy4KLSAqLwotLyogV2UgbmVlZCBlaWdodCBiaXRzIHBlciB4YWN0LCBzbyBvbmUg eGFjdCBmaXRzIGluIGEgYnl0ZSAqLwotI2RlZmluZSBNWEFDVF9NRU1CRVJfQklUU19QRVJf WEFDVAkJCTgKLSNkZWZpbmUgTVhBQ1RfTUVNQkVSX0ZMQUdTX1BFUl9CWVRFCQkJMQotI2Rl ZmluZSBNWEFDVF9NRU1CRVJfWEFDVF9CSVRNQVNLCSgoMSA8PCBNWEFDVF9NRU1CRVJfQklU U19QRVJfWEFDVCkgLSAxKQotCi0vKiBob3cgbWFueSBmdWxsIGJ5dGVzIG9mIGZsYWdzIGFy ZSB0aGVyZSBpbiBhIGdyb3VwPyAqLwotI2RlZmluZSBNVUxUSVhBQ1RfRkxBR0JZVEVTX1BF Ul9HUk9VUAkJNAotI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfTUVNQkVSR1JPVVAJ XAotCShNVUxUSVhBQ1RfRkxBR0JZVEVTX1BFUl9HUk9VUCAqIE1YQUNUX01FTUJFUl9GTEFH U19QRVJfQllURSkKLS8qIHNpemUgaW4gYnl0ZXMgb2YgYSBjb21wbGV0ZSBncm91cCAqLwot I2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVSR1JPVVBfU0laRSBcCi0JKHNpemVvZihUcmFuc2Fj dGlvbklkKSAqIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9NRU1CRVJHUk9VUCArIE1VTFRJWEFD VF9GTEFHQllURVNfUEVSX0dST1VQKQotI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVSR1JPVVBT X1BFUl9QQUdFIChCTENLU1ogLyBNVUxUSVhBQ1RfTUVNQkVSR1JPVVBfU0laRSkKLSNkZWZp bmUgTVVMVElYQUNUX01FTUJFUlNfUEVSX1BBR0UJXAotCShNVUxUSVhBQ1RfTUVNQkVSR1JP VVBTX1BFUl9QQUdFICogTVVMVElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQKQotCi0v KgotICogQmVjYXVzZSB0aGUgbnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlIGlzIG5vdCBhIGRp dmlzb3Igb2YgdGhlIGxhc3QgaXRlbQotICogbnVtYmVyIChtZW1iZXIgMHhGRkZGRkZGRiks IHRoZSBsYXN0IHNlZ21lbnQgZG9lcyBub3QgdXNlIHRoZSBtYXhpbXVtIG51bWJlcgotICog b2YgcGFnZXMsIGFuZCBtb3Jlb3ZlciB0aGUgbGFzdCB1c2VkIHBhZ2UgdGhlcmVpbiBkb2Vz IG5vdCB1c2UgdGhlIHNhbWUKLSAqIG51bWJlciBvZiBpdGVtcyBhcyBwcmV2aW91cyBwYWdl cy4gIChBbm90aGVyIHdheSB0byBzYXkgaXQgaXMgdGhhdCB0aGUKLSAqIDB4RkZGRkZGRkYg bWVtYmVyIGlzIHNvbWV3aGVyZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBsYXN0IHBhZ2UsIHNv IHRoZSBwYWdlCi0gKiBoYXMgc29tZSBlbXB0eSBzcGFjZSBhZnRlciB0aGF0IGl0ZW0uKQot ICoKLSAqIFRoaXMgY29uc3RhbnQgaXMgdGhlIG51bWJlciBvZiBtZW1iZXJzIGluIHRoZSBs YXN0IHBhZ2Ugb2YgdGhlIGxhc3Qgc2VnbWVudC4KLSAqLwotI2RlZmluZSBNQVhfTUVNQkVS U19JTl9MQVNUX01FTUJFUlNfUEFHRSBcCi0JCSgodWludDMyKSAoKDB4RkZGRkZGRkYgJSBN VUxUSVhBQ1RfTUVNQkVSU19QRVJfUEFHRSkgKyAxKSkKLQotLyogcGFnZSBpbiB3aGljaCBh IG1lbWJlciBpcyB0byBiZSBmb3VuZCAqLwotc3RhdGljIGlubGluZSBpbnQ2NAotTVhPZmZz ZXRUb01lbWJlclBhZ2UoTXVsdGlYYWN0T2Zmc2V0IG9mZnNldCkKLXsKLQlyZXR1cm4gb2Zm c2V0IC8gTVVMVElYQUNUX01FTUJFUlNfUEVSX1BBR0U7Ci19Ci0KLXN0YXRpYyBpbmxpbmUg aW50NjQKLU1YT2Zmc2V0VG9NZW1iZXJTZWdtZW50KE11bHRpWGFjdE9mZnNldCBvZmZzZXQp Ci17Ci0JcmV0dXJuIE1YT2Zmc2V0VG9NZW1iZXJQYWdlKG9mZnNldCkgLyBTTFJVX1BBR0VT X1BFUl9TRUdNRU5UOwotfQotCi0vKiBMb2NhdGlvbiAoYnl0ZSBvZmZzZXQgd2l0aGluIHBh Z2UpIG9mIGZsYWcgd29yZCBmb3IgYSBnaXZlbiBtZW1iZXIgKi8KLXN0YXRpYyBpbmxpbmUg aW50Ci1NWE9mZnNldFRvRmxhZ3NPZmZzZXQoTXVsdGlYYWN0T2Zmc2V0IG9mZnNldCkKLXsK LQlNdWx0aVhhY3RPZmZzZXQgZ3JvdXAgPSBvZmZzZXQgLyBNVUxUSVhBQ1RfTUVNQkVSU19Q RVJfTUVNQkVSR1JPVVA7Ci0JaW50CQkJZ3JvdXBvbnBnID0gZ3JvdXAgJSBNVUxUSVhBQ1Rf TUVNQkVSR1JPVVBTX1BFUl9QQUdFOwotCWludAkJCWJ5dGVvZmYgPSBncm91cG9ucGcgKiBN VUxUSVhBQ1RfTUVNQkVSR1JPVVBfU0laRTsKLQotCXJldHVybiBieXRlb2ZmOwotfQotCi1z dGF0aWMgaW5saW5lIGludAotTVhPZmZzZXRUb0ZsYWdzQml0U2hpZnQoTXVsdGlYYWN0T2Zm c2V0IG9mZnNldCkKLXsKLQlpbnQJCQltZW1iZXJfaW5fZ3JvdXAgPSBvZmZzZXQgJSBNVUxU SVhBQ1RfTUVNQkVSU19QRVJfTUVNQkVSR1JPVVA7Ci0JaW50CQkJYnNoaWZ0ID0gbWVtYmVy X2luX2dyb3VwICogTVhBQ1RfTUVNQkVSX0JJVFNfUEVSX1hBQ1Q7Ci0KLQlyZXR1cm4gYnNo aWZ0OwotfQotCi0vKiBMb2NhdGlvbiAoYnl0ZSBvZmZzZXQgd2l0aGluIHBhZ2UpIG9mIFRy YW5zYWN0aW9uSWQgb2YgZ2l2ZW4gbWVtYmVyICovCi1zdGF0aWMgaW5saW5lIGludAotTVhP ZmZzZXRUb01lbWJlck9mZnNldChNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0KQotewotCWludAkJ CW1lbWJlcl9pbl9ncm91cCA9IG9mZnNldCAlIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9NRU1C RVJHUk9VUDsKLQotCXJldHVybiBNWE9mZnNldFRvRmxhZ3NPZmZzZXQob2Zmc2V0KSArCi0J CU1VTFRJWEFDVF9GTEFHQllURVNfUEVSX0dST1VQICsKLQkJbWVtYmVyX2luX2dyb3VwICog c2l6ZW9mKFRyYW5zYWN0aW9uSWQpOwotfQotCiAvKiBNdWx0aXhhY3QgbWVtYmVycyB3cmFw YXJvdW5kIHRocmVzaG9sZHMuICovCiAjZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9U SFJFU0hPTEQJCShNYXhNdWx0aVhhY3RPZmZzZXQgLyAyKQogI2RlZmluZSBNVUxUSVhBQ1Rf TUVNQkVSX0RBTkdFUl9USFJFU0hPTEQJXApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNj ZXNzL211bHRpeGFjdF9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFj dF9pbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45 YjU2ZGVhZWYzMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0 aXhhY3RfaW50ZXJuYWwuaApAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAqIG11bHRpeGFjdF9p bnRlcm5hbC5oCisgKgorICogUG9zdGdyZVNRTCBtdWx0aS10cmFuc2FjdGlvbi1sb2cgbWFu YWdlciBpbnRlcm5hbCBkZWNsYXJhdGlvbnMKKyAqCisgKiBUaGVzZSBmdW5jdGlvbnMgYW5k IGRlZmluaXRpb25zIGFyZSBmb3IgZGVhbGluZyB3aXRoIHBnX211bHRpeGFjdCBwYWdlcy4K KyAqIFRoZXkgYXJlIGludGVybmFsIHRvIG11bHRpeGFjdC5jLCBidXQgdGhleSBhcmUgZXhw b3J0ZWQgaGVyZSB0byBhbGxvdworICogcGdfdXBncmFkZSB0byB3cml0ZSBwZ19tdWx0aXhh Y3QgZmlsZXMgZGlyZWN0bHkuCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2 LTIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9u cyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2Fs aWZvcm5pYQorICoKKyAqIHNyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3RfaW50ZXJuYWwu aAorICovCisjaWZuZGVmIE1VTFRJWEFDVF9JTlRFUk5BTF9ICisjZGVmaW5lIE1VTFRJWEFD VF9JTlRFUk5BTF9ICisKKyNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCisKKworLyoK KyAqIERlZmluZXMgZm9yIE11bHRpWGFjdE9mZnNldCBwYWdlIHNpemVzLiAgQSBwYWdlIGlz IHRoZSBzYW1lIEJMQ0tTWiBhcyBpcworICogdXNlZCBldmVyeXdoZXJlIGVsc2UgaW4gUG9z dGdyZXMuCisgKgorICogTm90ZTogYmVjYXVzZSBNdWx0aVhhY3RPZmZzZXRzIGFyZSAzMiBi aXRzIGFuZCB3cmFwIGFyb3VuZCBhdCAweEZGRkZGRkZGLAorICogTXVsdGlYYWN0IHBhZ2Ug bnVtYmVyaW5nIGFsc28gd3JhcHMgYXJvdW5kIGF0CisgKiAweEZGRkZGRkZGL01VTFRJWEFD VF9PRkZTRVRTX1BFUl9QQUdFLCBhbmQgc2VnbWVudCBudW1iZXJpbmcgYXQKKyAqIDB4RkZG RkZGRkYvTVVMVElYQUNUX09GRlNFVFNfUEVSX1BBR0UvU0xSVV9QQUdFU19QRVJfU0VHTUVO VC4gIFdlIG5lZWQKKyAqIHRha2Ugbm8gZXhwbGljaXQgbm90aWNlIG9mIHRoYXQgZmFjdCBp biB0aGlzIG1vZHVsZSwgZXhjZXB0IHdoZW4gY29tcGFyaW5nCisgKiBzZWdtZW50IGFuZCBw YWdlIG51bWJlcnMgaW4gVHJ1bmNhdGVNdWx0aVhhY3QgKHNlZQorICogTXVsdGlYYWN0T2Zm c2V0UGFnZVByZWNlZGVzKS4KKyAqLworCisvKiBXZSBuZWVkIGZvdXIgYnl0ZXMgcGVyIG9m ZnNldCAqLworI2RlZmluZSBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRSAoQkxDS1NaIC8g c2l6ZW9mKE11bHRpWGFjdE9mZnNldCkpCisKK3N0YXRpYyBpbmxpbmUgaW50NjQKK011bHRp WGFjdElkVG9PZmZzZXRQYWdlKE11bHRpWGFjdElkIG11bHRpKQoreworCXJldHVybiBtdWx0 aSAvIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFOworfQorCitzdGF0aWMgaW5saW5lIGlu dAorTXVsdGlYYWN0SWRUb09mZnNldEVudHJ5KE11bHRpWGFjdElkIG11bHRpKQoreworCXJl dHVybiBtdWx0aSAlIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFOworfQorCitzdGF0aWMg aW5saW5lIGludDY0CitNdWx0aVhhY3RJZFRvT2Zmc2V0U2VnbWVudChNdWx0aVhhY3RJZCBt dWx0aSkKK3sKKwlyZXR1cm4gTXVsdGlYYWN0SWRUb09mZnNldFBhZ2UobXVsdGkpIC8gU0xS VV9QQUdFU19QRVJfU0VHTUVOVDsKK30KKworLyoKKyAqIFRoZSBzaXR1YXRpb24gZm9yIG1l bWJlcnMgaXMgYSBiaXQgbW9yZSBjb21wbGV4OiB3ZSBzdG9yZSBvbmUgYnl0ZSBvZgorICog YWRkaXRpb25hbCBmbGFnIGJpdHMgZm9yIGVhY2ggVHJhbnNhY3Rpb25JZC4gIFRvIGRvIHRo aXMgd2l0aG91dCBnZXR0aW5nCisgKiBpbnRvIGFsaWdubWVudCBpc3N1ZXMsIHdlIHN0b3Jl IGZvdXIgYnl0ZXMgb2YgZmxhZ3MsIGFuZCB0aGVuIHRoZQorICogY29ycmVzcG9uZGluZyA0 IFhpZHMuICBFYWNoIHN1Y2ggNS13b3JkICgyMC1ieXRlKSBzZXQgd2UgY2FsbCBhICJncm91 cCIsIGFuZAorICogYXJlIHN0b3JlZCBhcyBhIHdob2xlIGluIHBhZ2VzLiAgVGh1cywgd2l0 aCA4a0IgQkxDS1NaLCB3ZSBrZWVwIDQwOSBncm91cHMKKyAqIHBlciBwYWdlLiAgVGhpcyB3 YXN0ZXMgMTIgYnl0ZXMgcGVyIHBhZ2UsIGJ1dCB0aGF0J3MgT0sgLS0gc2ltcGxpY2l0eSAo YW5kCisgKiBwZXJmb3JtYW5jZSkgdHJ1bXBzIHNwYWNlIGVmZmljaWVuY3kgaGVyZS4KKyAq CisgKiBOb3RlIHRoYXQgdGhlICJvZmZzZXQiIG1hY3JvcyB3b3JrIHdpdGggYnl0ZSBvZmZz ZXQsIG5vdCBhcnJheSBpbmRleGVzLCBzbworICogYXJpdGhtZXRpYyBtdXN0IGJlIGRvbmUg dXNpbmcgImNoYXIgKiIgcG9pbnRlcnMuCisgKi8KKy8qIFdlIG5lZWQgZWlnaHQgYml0cyBw ZXIgeGFjdCwgc28gb25lIHhhY3QgZml0cyBpbiBhIGJ5dGUgKi8KKyNkZWZpbmUgTVhBQ1Rf TUVNQkVSX0JJVFNfUEVSX1hBQ1QJCQk4CisjZGVmaW5lIE1YQUNUX01FTUJFUl9GTEFHU19Q RVJfQllURQkJCTEKKyNkZWZpbmUgTVhBQ1RfTUVNQkVSX1hBQ1RfQklUTUFTSwkoKDEgPDwg TVhBQ1RfTUVNQkVSX0JJVFNfUEVSX1hBQ1QpIC0gMSkKKworLyogaG93IG1hbnkgZnVsbCBi eXRlcyBvZiBmbGFncyBhcmUgdGhlcmUgaW4gYSBncm91cD8gKi8KKyNkZWZpbmUgTVVMVElY QUNUX0ZMQUdCWVRFU19QRVJfR1JPVVAJCTQKKyNkZWZpbmUgTVVMVElYQUNUX01FTUJFUlNf UEVSX01FTUJFUkdST1VQCVwKKwkoTVVMVElYQUNUX0ZMQUdCWVRFU19QRVJfR1JPVVAgKiBN WEFDVF9NRU1CRVJfRkxBR1NfUEVSX0JZVEUpCisvKiBzaXplIGluIGJ5dGVzIG9mIGEgY29t cGxldGUgZ3JvdXAgKi8KKyNkZWZpbmUgTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkUgXAor CShzaXplb2YoVHJhbnNhY3Rpb25JZCkgKiBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfTUVNQkVS R1JPVVAgKyBNVUxUSVhBQ1RfRkxBR0JZVEVTX1BFUl9HUk9VUCkKKyNkZWZpbmUgTVVMVElY QUNUX01FTUJFUkdST1VQU19QRVJfUEFHRSAoQkxDS1NaIC8gTVVMVElYQUNUX01FTUJFUkdS T1VQX1NJWkUpCisjZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFCVwKKwkoTVVM VElYQUNUX01FTUJFUkdST1VQU19QRVJfUEFHRSAqIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9N RU1CRVJHUk9VUCkKKworLyoKKyAqIEJlY2F1c2UgdGhlIG51bWJlciBvZiBpdGVtcyBwZXIg cGFnZSBpcyBub3QgYSBkaXZpc29yIG9mIHRoZSBsYXN0IGl0ZW0KKyAqIG51bWJlciAobWVt YmVyIDB4RkZGRkZGRkYpLCB0aGUgbGFzdCBzZWdtZW50IGRvZXMgbm90IHVzZSB0aGUgbWF4 aW11bSBudW1iZXIKKyAqIG9mIHBhZ2VzLCBhbmQgbW9yZW92ZXIgdGhlIGxhc3QgdXNlZCBw YWdlIHRoZXJlaW4gZG9lcyBub3QgdXNlIHRoZSBzYW1lCisgKiBudW1iZXIgb2YgaXRlbXMg YXMgcHJldmlvdXMgcGFnZXMuICAoQW5vdGhlciB3YXkgdG8gc2F5IGl0IGlzIHRoYXQgdGhl CisgKiAweEZGRkZGRkZGIG1lbWJlciBpcyBzb21ld2hlcmUgaW4gdGhlIG1pZGRsZSBvZiB0 aGUgbGFzdCBwYWdlLCBzbyB0aGUgcGFnZQorICogaGFzIHNvbWUgZW1wdHkgc3BhY2UgYWZ0 ZXIgdGhhdCBpdGVtLikKKyAqCisgKiBUaGlzIGNvbnN0YW50IGlzIHRoZSBudW1iZXIgb2Yg bWVtYmVycyBpbiB0aGUgbGFzdCBwYWdlIG9mIHRoZSBsYXN0IHNlZ21lbnQuCisgKi8KKyNk ZWZpbmUgTUFYX01FTUJFUlNfSU5fTEFTVF9NRU1CRVJTX1BBR0UgXAorCQkoKHVpbnQzMikg KCgweEZGRkZGRkZGICUgTVVMVElYQUNUX01FTUJFUlNfUEVSX1BBR0UpICsgMSkpCisKKy8q IHBhZ2UgaW4gd2hpY2ggYSBtZW1iZXIgaXMgdG8gYmUgZm91bmQgKi8KK3N0YXRpYyBpbmxp bmUgaW50NjQKK01YT2Zmc2V0VG9NZW1iZXJQYWdlKE11bHRpWGFjdE9mZnNldCBvZmZzZXQp Cit7CisJcmV0dXJuIG9mZnNldCAvIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFOworfQor CitzdGF0aWMgaW5saW5lIGludDY0CitNWE9mZnNldFRvTWVtYmVyU2VnbWVudChNdWx0aVhh Y3RPZmZzZXQgb2Zmc2V0KQoreworCXJldHVybiBNWE9mZnNldFRvTWVtYmVyUGFnZShvZmZz ZXQpIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKK30KKworLyogTG9jYXRpb24gKGJ5dGUg b2Zmc2V0IHdpdGhpbiBwYWdlKSBvZiBmbGFnIHdvcmQgZm9yIGEgZ2l2ZW4gbWVtYmVyICov CitzdGF0aWMgaW5saW5lIGludAorTVhPZmZzZXRUb0ZsYWdzT2Zmc2V0KE11bHRpWGFjdE9m ZnNldCBvZmZzZXQpCit7CisJTXVsdGlYYWN0T2Zmc2V0IGdyb3VwID0gb2Zmc2V0IC8gTVVM VElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQOworCWludAkJCWdyb3Vwb25wZyA9IGdy b3VwICUgTVVMVElYQUNUX01FTUJFUkdST1VQU19QRVJfUEFHRTsKKwlpbnQJCQlieXRlb2Zm ID0gZ3JvdXBvbnBnICogTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkU7CisKKwlyZXR1cm4g Ynl0ZW9mZjsKK30KKworc3RhdGljIGlubGluZSBpbnQKK01YT2Zmc2V0VG9GbGFnc0JpdFNo aWZ0KE11bHRpWGFjdE9mZnNldCBvZmZzZXQpCit7CisJaW50CQkJbWVtYmVyX2luX2dyb3Vw ID0gb2Zmc2V0ICUgTVVMVElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQOworCWludAkJ CWJzaGlmdCA9IG1lbWJlcl9pbl9ncm91cCAqIE1YQUNUX01FTUJFUl9CSVRTX1BFUl9YQUNU OworCisJcmV0dXJuIGJzaGlmdDsKK30KKworLyogTG9jYXRpb24gKGJ5dGUgb2Zmc2V0IHdp dGhpbiBwYWdlKSBvZiBUcmFuc2FjdGlvbklkIG9mIGdpdmVuIG1lbWJlciAqLworc3RhdGlj IGlubGluZSBpbnQKK01YT2Zmc2V0VG9NZW1iZXJPZmZzZXQoTXVsdGlYYWN0T2Zmc2V0IG9m ZnNldCkKK3sKKwlpbnQJCQltZW1iZXJfaW5fZ3JvdXAgPSBvZmZzZXQgJSBNVUxUSVhBQ1Rf TUVNQkVSU19QRVJfTUVNQkVSR1JPVVA7CisKKwlyZXR1cm4gTVhPZmZzZXRUb0ZsYWdzT2Zm c2V0KG9mZnNldCkgKworCQlNVUxUSVhBQ1RfRkxBR0JZVEVTX1BFUl9HUk9VUCArCisJCW1l bWJlcl9pbl9ncm91cCAqIHNpemVvZihUcmFuc2FjdGlvbklkKTsKK30KKworI2VuZGlmCQkJ CQkJCS8qIE1VTFRJWEFDVF9JTlRFUk5BTF9IICovCi0tIAoyLjQ3LjMKCg== --------------D5Uqc0qFgdUSc5DsuhKtaq91 Content-Type: text/x-patch; charset=UTF-8; name="v25-0002-Use-64-bit-multixact-offsets.patch" Content-Disposition: attachment; filename="v25-0002-Use-64-bit-multixact-offsets.patch" Content-Transfer-Encoding: base64 RnJvbSA3MGJhMTIxOWU3ZDZmZGU3ODlmY2ZiNTBiYWViMjg0ZTdjMzEzYzA2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgNyBBdWcgMjAyNCAxNjozNToyMiArMDMwMApTdWJqZWN0OiBbUEFUQ0gg djI1IDAyLzEwXSBVc2UgNjQtYml0IG11bHRpeGFjdCBvZmZzZXRzCgpTd2l0Y2hpbmcgdG8g NjQtYml0IG11bHRpdHJhbnNhY3Rpb24gb2Zmc2V0cyByZW1vdmVzIHdyYXBhcm91bmQgYW5k IHRoZQoyXjMyIGxpbWl0IG9uIHRoZWlyIHRvdGFsIG51bWJlci4KCkF1dGhvcjogTWF4aW0g T3Jsb3YgPG9ybG92bWdAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBGSVhNRQotLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9teGFjdGRlc2MuYyAgIHwgICA0ICstCiBzcmMvYmFj a2VuZC9hY2Nlc3Mvcm1ncmRlc2MveGxvZ2Rlc2MuYyAgICB8ICAgMiArLQogc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgICAgfCAzOTAgKysrKy0tLS0tLS0tLS0t LS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jICAgICAgICAgfCAg IDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIHwgICAy ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyAgICAgICAgICAgICB8ICAgMiAr LQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgfCAgIDQgKy0K IHNyYy9iaW4vcGdfY29udHJvbGRhdGEvcGdfY29udHJvbGRhdGEuYyAgIHwgICAyICstCiBz cmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMgICAgICAgICB8ICAzMCArLQogc3Jj L2Jpbi9wZ19yZXNldHdhbC90LzAwMV9iYXNpYy5wbCAgICAgICAgfCAgIDQgKy0KIHNyYy9p bmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaCAgICAgICAgICAgIHwgICAzIC0KIHNyYy9pbmNs dWRlL2FjY2Vzcy9tdWx0aXhhY3RfaW50ZXJuYWwuaCAgIHwgIDI0ICstCiBzcmMvaW5jbHVk ZS9jLmggICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogMTMgZmlsZXMgY2hh bmdlZCwgOTUgaW5zZXJ0aW9ucygrKSwgMzc2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9teGFjdGRlc2MuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9ybWdyZGVzYy9teGFjdGRlc2MuYwppbmRleCAzY2EwNTgyZGIzNi4uMDUyZGQw YTRjZTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9teGFjdGRl c2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbXhhY3RkZXNjLmMKQEAg LTY1LDcgKzY1LDcgQEAgbXVsdGl4YWN0X2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQogCQl4bF9tdWx0aXhhY3RfY3JlYXRlICp4bHJlYyA9ICh4bF9t dWx0aXhhY3RfY3JlYXRlICopIHJlYzsKIAkJaW50CQkJaTsKIAotCQlhcHBlbmRTdHJpbmdJ bmZvKGJ1ZiwgIiV1IG9mZnNldCAldSBubWVtYmVycyAlZDogIiwgeGxyZWMtPm1pZCwKKwkJ YXBwZW5kU3RyaW5nSW5mbyhidWYsICIldSBvZmZzZXQgJSIgUFJJdTY0ICIgbm1lbWJlcnMg JWQ6ICIsIHhscmVjLT5taWQsCiAJCQkJCQkgeGxyZWMtPm1vZmYsIHhscmVjLT5ubWVtYmVy cyk7CiAJCWZvciAoaSA9IDA7IGkgPCB4bHJlYy0+bm1lbWJlcnM7IGkrKykKIAkJCW91dF9t ZW1iZXIoYnVmLCAmeGxyZWMtPm1lbWJlcnNbaV0pOwpAQCAtNzQsNyArNzQsNyBAQCBtdWx0 aXhhY3RfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJ ewogCQl4bF9tdWx0aXhhY3RfdHJ1bmNhdGUgKnhscmVjID0gKHhsX211bHRpeGFjdF90cnVu Y2F0ZSAqKSByZWM7CiAKLQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJvZmZzZXRzIFsldSwg JXUpLCBtZW1iZXJzIFsldSwgJXUpIiwKKwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJvZmZz ZXRzIFsldSwgJXUpLCBtZW1iZXJzIFslIiBQUkl1NjQgIiwgJSIgUFJJdTY0ICIpIiwKIAkJ CQkJCSB4bHJlYy0+c3RhcnRUcnVuY09mZiwgeGxyZWMtPmVuZFRydW5jT2ZmLAogCQkJCQkJ IHhscmVjLT5zdGFydFRydW5jTWVtYiwgeGxyZWMtPmVuZFRydW5jTWVtYik7CiAJfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL3hsb2dkZXNjLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MveGxvZ2Rlc2MuYwppbmRleCBjZDZjMmEyZjY1MC4u NDQxMDM0ZjU5MjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy94 bG9nZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy94bG9nZGVzYy5j CkBAIC02Niw3ICs2Niw3IEBAIHhsb2dfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRl clN0YXRlICpyZWNvcmQpCiAJCUNoZWNrUG9pbnQgKmNoZWNrcG9pbnQgPSAoQ2hlY2tQb2lu dCAqKSByZWM7CiAKIAkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJyZWRvICVYLyUwOFg7ICIK LQkJCQkJCSAidGxpICV1OyBwcmV2IHRsaSAldTsgZnB3ICVzOyB3YWxfbGV2ZWwgJXM7IHhp ZCAldToldTsgb2lkICV1OyBtdWx0aSAldTsgb2Zmc2V0ICV1OyAiCisJCQkJCQkgInRsaSAl dTsgcHJldiB0bGkgJXU7IGZwdyAlczsgd2FsX2xldmVsICVzOyB4aWQgJXU6JXU7IG9pZCAl dTsgbXVsdGkgJXU7IG9mZnNldCAlIiBQUkl1NjQgIjsgIgogCQkJCQkJICJvbGRlc3QgeGlk ICV1IGluIERCICV1OyBvbGRlc3QgbXVsdGkgJXUgaW4gREIgJXU7ICIKIAkJCQkJCSAib2xk ZXN0L25ld2VzdCBjb21taXQgdGltZXN0YW1wIHhpZDogJXUvJXU7ICIKIAkJCQkJCSAib2xk ZXN0IHJ1bm5pbmcgeGlkICV1OyAlcyIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS9tdWx0aXhhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211 bHRpeGFjdC5jCmluZGV4IGFjYjJhNjc4OGY5Li4zNGE3NDVjMDdiZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNs dWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdC5oIgorI2lu Y2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3RfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJhY2Nlc3Mv c2xydS5oIgogI2luY2x1ZGUgImFjY2Vzcy90d29waGFzZS5oIgogI2luY2x1ZGUgImFjY2Vz cy90d29waGFzZV9ybWdyLmgiCkBAIC04OSwxMCArOTAsMTQgQEAKICNpbmNsdWRlICJ1dGls cy9tZW11dGlscy5oIgogCiAKLS8qIE11bHRpeGFjdCBtZW1iZXJzIHdyYXBhcm91bmQgdGhy ZXNob2xkcy4gKi8KLSNkZWZpbmUgTVVMVElYQUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRAkJ KE1heE11bHRpWGFjdE9mZnNldCAvIDIpCi0jZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJfREFO R0VSX1RIUkVTSE9MRAlcCi0JKE1heE11bHRpWGFjdE9mZnNldCAtIE1heE11bHRpWGFjdE9m ZnNldCAvIDQpCisvKgorICogTXVsdGl4YWN0IG1lbWJlcnMgd2FybmluZyB0aHJlc2hvbGQu CisgKgorICogSWYgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBuZXh0T2Zmc2V0IGFuZCBvbGRl c3RPZmZzZXQgZXhjZWVkcyB0aGlzIHZhbHVlLAorICogd2UgdHJpZ2dlciBhdXRvdmFjdXVt IGluIG9yZGVyIHRvIHJlbGVhc2UgZGlzayBzcGFjZSBjb25zdW1lZCBieSB0aGUKKyAqIG1l bWJlcnMgU0xSVS4KKyAqLworI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVSX0FVVE9WQUNfVEhS RVNIT0xECQlVSU5UNjRDT05TVCg0MDAwMDAwMDAwKQogCiBzdGF0aWMgaW5saW5lIE11bHRp WGFjdElkCiBQcmV2aW91c011bHRpWGFjdElkKE11bHRpWGFjdElkIG11bHRpKQpAQCAtMTQ5 LDkgKzE1NCw2IEBAIHR5cGVkZWYgc3RydWN0IE11bHRpWGFjdFN0YXRlRGF0YQogCU11bHRp WGFjdElkIG11bHRpU3RvcExpbWl0OwogCU11bHRpWGFjdElkIG11bHRpV3JhcExpbWl0Owog Ci0JLyogc3VwcG9ydCBmb3IgbWVtYmVycyBhbnRpLXdyYXBhcm91bmQgbWVhc3VyZXMgKi8K LQlNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0U3RvcExpbWl0OwkvKiBrbm93biBpZiBvbGRlc3RP ZmZzZXRLbm93biAqLwotCiAJLyoKIAkgKiBUaGlzIGlzIHVzZWQgdG8gc2xlZXAgdW50aWwg YSBtdWx0aXhhY3Qgb2Zmc2V0IGlzIHdyaXR0ZW4gd2hlbiB3ZSB3YW50CiAJICogdG8gY3Jl YXRlIHRoZSBuZXh0IG9uZS4KQEAgLTI4Miw4ICsyODQsNiBAQCBzdGF0aWMgYm9vbCBNdWx0 aVhhY3RPZmZzZXRQcmVjZWRlcyhNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0MSwKIAkJCQkJCQkJ CU11bHRpWGFjdE9mZnNldCBvZmZzZXQyKTsKIHN0YXRpYyB2b2lkIEV4dGVuZE11bHRpWGFj dE9mZnNldChNdWx0aVhhY3RJZCBtdWx0aSk7CiBzdGF0aWMgdm9pZCBFeHRlbmRNdWx0aVhh Y3RNZW1iZXIoTXVsdGlYYWN0T2Zmc2V0IG9mZnNldCwgaW50IG5tZW1iZXJzKTsKLXN0YXRp YyBib29sIE11bHRpWGFjdE9mZnNldFdvdWxkV3JhcChNdWx0aVhhY3RPZmZzZXQgYm91bmRh cnksCi0JCQkJCQkJCQkgTXVsdGlYYWN0T2Zmc2V0IHN0YXJ0LCB1aW50MzIgZGlzdGFuY2Up Owogc3RhdGljIGJvb2wgU2V0T2Zmc2V0VmFjdXVtTGltaXQoYm9vbCBpc19zdGFydHVwKTsK IHN0YXRpYyBib29sIGZpbmRfbXVsdGl4YWN0X3N0YXJ0KE11bHRpWGFjdElkIG11bHRpLCBN dWx0aVhhY3RPZmZzZXQgKnJlc3VsdCk7CiBzdGF0aWMgdm9pZCBXcml0ZU1UcnVuY2F0ZVhs b2dSZWMoT2lkIG9sZGVzdE11bHRpREIsCkBAIC0xMDIzLDkwICsxMDIzLDIyIEBAIEdldE5l d011bHRpWGFjdElkKGludCBubWVtYmVycywgTXVsdGlYYWN0T2Zmc2V0ICpvZmZzZXQpCiAJ RXh0ZW5kTXVsdGlYYWN0T2Zmc2V0KHJlc3VsdCk7CiAKIAkvKgotCSAqIFJlc2VydmUgdGhl IG1lbWJlcnMgc3BhY2UsIHNpbWlsYXJseSB0byBhYm92ZS4gIEFsc28sIGJlIGNhcmVmdWwg bm90IHRvCi0JICogcmV0dXJuIHplcm8gYXMgdGhlIHN0YXJ0aW5nIG9mZnNldCBmb3IgYW55 IG11bHRpeGFjdC4gU2VlCi0JICogR2V0TXVsdGlYYWN0SWRNZW1iZXJzKCkgZm9yIG1vdGl2 YXRpb24uCisJICogUmVzZXJ2ZSB0aGUgbWVtYmVycyBzcGFjZSwgc2ltaWxhcmx5IHRvIGFi b3ZlLgogCSAqLwogCW5leHRPZmZzZXQgPSBNdWx0aVhhY3RTdGF0ZS0+bmV4dE9mZnNldDsK LQlpZiAobmV4dE9mZnNldCA9PSAwKQotCXsKLQkJKm9mZnNldCA9IDE7Ci0JCW5tZW1iZXJz Kys7CQkJCS8qIGFsbG9jYXRlIG1lbWJlciBzbG90IDAgdG9vICovCi0JfQotCWVsc2UKLQkJ Km9mZnNldCA9IG5leHRPZmZzZXQ7Ci0KLQkvKi0tLS0tLS0tLS0KLQkgKiBQcm90ZWN0IGFn YWluc3Qgb3ZlcnJ1biBvZiB0aGUgbWVtYmVycyBzcGFjZSBhcyB3ZWxsLCB3aXRoIHRoZQot CSAqIGZvbGxvd2luZyBydWxlczoKLQkgKgotCSAqIElmIHdlJ3JlIHBhc3Qgb2Zmc2V0U3Rv cExpbWl0LCByZWZ1c2UgdG8gZ2VuZXJhdGUgbW9yZSBtdWx0aXMuCi0JICogSWYgd2UncmUg Y2xvc2UgdG8gb2Zmc2V0U3RvcExpbWl0LCBlbWl0IGEgd2FybmluZy4KLQkgKgotCSAqIEFy Yml0cmFyaWx5LCB3ZSBzdGFydCBlbWl0dGluZyB3YXJuaW5ncyB3aGVuIHdlJ3JlIDIwIHNl Z21lbnRzIG9yIGxlc3MKLQkgKiBmcm9tIG9mZnNldFN0b3BMaW1pdC4KLQkgKgotCSAqIE5v dGUgd2UgaGF2ZW4ndCB1cGRhdGVkIHRoZSBzaGFyZWQgc3RhdGUgeWV0LCBzbyBpZiB3ZSBm YWlsIGF0IHRoaXMKLQkgKiBwb2ludCwgdGhlIG11bHRpeGFjdCBJRCB3ZSBncmFiYmVkIGNh biBzdGlsbCBiZSB1c2VkIGJ5IHRoZSBuZXh0IGd1eS4KLQkgKgotCSAqIE5vdGUgdGhhdCB0 aGVyZSBpcyBubyBwb2ludCBpbiBmb3JjaW5nIGF1dG92YWN1dW0gcnVucyBoZXJlOiB0aGUK LQkgKiBtdWx0aXhhY3QgZnJlZXplIHNldHRpbmdzIHdvdWxkIGhhdmUgdG8gYmUgcmVkdWNl ZCBmb3IgdGhhdCB0byBoYXZlIGFueQotCSAqIGVmZmVjdC4KLQkgKi0tLS0tLS0tLS0KLQkg Ki8KLSNkZWZpbmUgT0ZGU0VUX1dBUk5fU0VHTUVOVFMJMjAKLQlpZiAoTXVsdGlYYWN0U3Rh dGUtPm9sZGVzdE9mZnNldEtub3duICYmCi0JCU11bHRpWGFjdE9mZnNldFdvdWxkV3JhcChN dWx0aVhhY3RTdGF0ZS0+b2Zmc2V0U3RvcExpbWl0LCBuZXh0T2Zmc2V0LAotCQkJCQkJCQkg bm1lbWJlcnMpKQotCXsKLQkJLyogc2VlIGNvbW1lbnQgaW4gdGhlIGNvcnJlc3BvbmRpbmcg b2Zmc2V0cyB3cmFwYXJvdW5kIGNhc2UgKi8KLQkJU2VuZFBvc3RtYXN0ZXJTaWduYWwoUE1T SUdOQUxfU1RBUlRfQVVUT1ZBQ19MQVVOQ0hFUik7Ci0KLQkJZXJlcG9ydChFUlJPUiwKLQkJ CQkoZXJyY29kZShFUlJDT0RFX1BST0dSQU1fTElNSVRfRVhDRUVERUQpLAotCQkJCSBlcnJt c2coIm11bHRpeGFjdCBcIm1lbWJlcnNcIiBsaW1pdCBleGNlZWRlZCIpLAotCQkJCSBlcnJk ZXRhaWxfcGx1cmFsKCJUaGlzIGNvbW1hbmQgd291bGQgY3JlYXRlIGEgbXVsdGl4YWN0IHdp dGggJXUgbWVtYmVycywgYnV0IHRoZSByZW1haW5pbmcgc3BhY2UgaXMgb25seSBlbm91Z2gg Zm9yICV1IG1lbWJlci4iLAotCQkJCQkJCQkgICJUaGlzIGNvbW1hbmQgd291bGQgY3JlYXRl IGEgbXVsdGl4YWN0IHdpdGggJXUgbWVtYmVycywgYnV0IHRoZSByZW1haW5pbmcgc3BhY2Ug aXMgb25seSBlbm91Z2ggZm9yICV1IG1lbWJlcnMuIiwKLQkJCQkJCQkJICBNdWx0aVhhY3RT dGF0ZS0+b2Zmc2V0U3RvcExpbWl0IC0gbmV4dE9mZnNldCAtIDEsCi0JCQkJCQkJCSAgbm1l bWJlcnMsCi0JCQkJCQkJCSAgTXVsdGlYYWN0U3RhdGUtPm9mZnNldFN0b3BMaW1pdCAtIG5l eHRPZmZzZXQgLSAxKSwKLQkJCQkgZXJyaGludCgiRXhlY3V0ZSBhIGRhdGFiYXNlLXdpZGUg VkFDVVVNIGluIGRhdGFiYXNlIHdpdGggT0lEICV1IHdpdGggcmVkdWNlZCBcInZhY3V1bV9t dWx0aXhhY3RfZnJlZXplX21pbl9hZ2VcIiBhbmQgXCJ2YWN1dW1fbXVsdGl4YWN0X2ZyZWV6 ZV90YWJsZV9hZ2VcIiBzZXR0aW5ncy4iLAotCQkJCQkJIE11bHRpWGFjdFN0YXRlLT5vbGRl c3RNdWx0aVhhY3REQikpKTsKLQl9CiAKIAkvKgotCSAqIENoZWNrIHdoZXRoZXIgd2Ugc2hv dWxkIGtpY2sgYXV0b3ZhY3V1bSBpbnRvIGFjdGlvbiwgdG8gcHJldmVudCBtZW1iZXJzCi0J ICogd3JhcGFyb3VuZC4gTkIgd2UgdXNlIGEgbXVjaCBsYXJnZXIgd2luZG93IHRvIHRyaWdn ZXIgYXV0b3ZhY3V1bSB0aGFuCi0JICoganVzdCB0aGUgd2FybmluZyBsaW1pdC4gVGhlIHdh cm5pbmcgaXMganVzdCBhIG1lYXN1cmUgb2YgbGFzdCByZXNvcnQgLQotCSAqIHRoaXMgaXMg aW4gbGluZSB3aXRoIEdldE5ld1RyYW5zYWN0aW9uSWQncyBiZWhhdmlvdXIuCisJICogT2Zm c2V0cyBhcmUgNjQtYml0IGludGVnZXJzIGFuZCB3aWxsIG5ldmVyIHdyYXAgYXJvdW5kLiAg Rmlyc3RseSwgaXQKKwkgKiB3b3VsZCB0YWtlIGFuIHVucmVhbGlzdGljIGFtb3VudCBvZiB0 aW1lIGFuZCByZXNvdXJjZXMgdG8gY29uc3VtZSAyXjY0CisJICogb2Zmc2V0cy4gIFNlY29u ZGx5LCBtdWx0aXhpZCBjcmVhdGlvbiBpcyBXQUwtbG9nZ2VkLCBzbyB5b3Ugd291bGQgcnVu CisJICogb3V0IG9mIExTTnMgYmVmb3JlIHJlYWNoaW5nIG9mZnNldCB3cmFwYXJvdW5kLiAg TmV2ZXJ0aGVsZXNzLCBjaGVjayBmb3IKKwkgKiB3cmFwYXJvdW5kIGFzIGEgc2FuaXR5IGNo ZWNrLgogCSAqLwotCWlmICghTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldEtub3duIHx8 Ci0JCShNdWx0aVhhY3RTdGF0ZS0+bmV4dE9mZnNldCAtIE11bHRpWGFjdFN0YXRlLT5vbGRl c3RPZmZzZXQKLQkJID4gTVVMVElYQUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRCkpCi0Jewot CQkvKgotCQkgKiBUbyBhdm9pZCBzd2FtcGluZyB0aGUgcG9zdG1hc3RlciB3aXRoIHNpZ25h bHMsIHdlIGlzc3VlIHRoZSBhdXRvdmFjCi0JCSAqIHJlcXVlc3Qgb25seSB3aGVuIGNyb3Nz aW5nIGEgc2VnbWVudCBib3VuZGFyeS4gV2l0aCBkZWZhdWx0Ci0JCSAqIGNvbXBpbGF0aW9u IHNldHRpbmdzIHRoYXQncyByb3VnaGx5IGFmdGVyIDUwayBtZW1iZXJzLiAgVGhpcyBzdGls bAotCQkgKiBnaXZlcyBwbGVudHkgb2YgY2hhbmNlcyBiZWZvcmUgd2UgZ2V0IGludG8gcmVh bCB0cm91YmxlLgotCQkgKi8KLQkJaWYgKChNWE9mZnNldFRvTWVtYmVyUGFnZShuZXh0T2Zm c2V0KSAvIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQpICE9Ci0JCQkoTVhPZmZzZXRUb01lbWJl clBhZ2UobmV4dE9mZnNldCArIG5tZW1iZXJzKSAvIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQp KQotCQkJU2VuZFBvc3RtYXN0ZXJTaWduYWwoUE1TSUdOQUxfU1RBUlRfQVVUT1ZBQ19MQVVO Q0hFUik7Ci0JfQotCi0JaWYgKE11bHRpWGFjdFN0YXRlLT5vbGRlc3RPZmZzZXRLbm93biAm JgotCQlNdWx0aVhhY3RPZmZzZXRXb3VsZFdyYXAoTXVsdGlYYWN0U3RhdGUtPm9mZnNldFN0 b3BMaW1pdCwKLQkJCQkJCQkJIG5leHRPZmZzZXQsCi0JCQkJCQkJCSBubWVtYmVycyArIE1V TFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFICogU0xSVV9QQUdFU19QRVJfU0VHTUVOVCAqIE9G RlNFVF9XQVJOX1NFR01FTlRTKSkKLQkJZXJlcG9ydChXQVJOSU5HLAorCWlmIChuZXh0T2Zm c2V0ICsgbm1lbWJlcnMgPCBuZXh0T2Zmc2V0KQorCQllcmVwb3J0KEVSUk9SLAogCQkJCShl cnJjb2RlKEVSUkNPREVfUFJPR1JBTV9MSU1JVF9FWENFRURFRCksCi0JCQkJIGVycm1zZ19w bHVyYWwoImRhdGFiYXNlIHdpdGggT0lEICV1IG11c3QgYmUgdmFjdXVtZWQgYmVmb3JlICVk IG1vcmUgbXVsdGl4YWN0IG1lbWJlciBpcyB1c2VkIiwKLQkJCQkJCQkgICAiZGF0YWJhc2Ug d2l0aCBPSUQgJXUgbXVzdCBiZSB2YWN1dW1lZCBiZWZvcmUgJWQgbW9yZSBtdWx0aXhhY3Qg bWVtYmVycyBhcmUgdXNlZCIsCi0JCQkJCQkJICAgTXVsdGlYYWN0U3RhdGUtPm9mZnNldFN0 b3BMaW1pdCAtIG5leHRPZmZzZXQgKyBubWVtYmVycywKLQkJCQkJCQkgICBNdWx0aVhhY3RT dGF0ZS0+b2xkZXN0TXVsdGlYYWN0REIsCi0JCQkJCQkJICAgTXVsdGlYYWN0U3RhdGUtPm9m ZnNldFN0b3BMaW1pdCAtIG5leHRPZmZzZXQgKyBubWVtYmVycyksCi0JCQkJIGVycmhpbnQo IkV4ZWN1dGUgYSBkYXRhYmFzZS13aWRlIFZBQ1VVTSBpbiB0aGF0IGRhdGFiYXNlIHdpdGgg cmVkdWNlZCBcInZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21pbl9hZ2VcIiBhbmQgXCJ2YWN1 dW1fbXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9hZ2VcIiBzZXR0aW5ncy4iKSkpOworCQkJCSBl cnJtc2coIk11bHRpWGFjdCBtZW1iZXJzIHdvdWxkIHdyYXAgYXJvdW5kIikpKTsKKwkqb2Zm c2V0ID0gbmV4dE9mZnNldDsKIAogCUV4dGVuZE11bHRpWGFjdE1lbWJlcihuZXh0T2Zmc2V0 LCBubWVtYmVycyk7CiAKQEAgLTExMjcsOCArMTA1OSw3IEBAIEdldE5ld011bHRpWGFjdElk KGludCBubWVtYmVycywgTXVsdGlYYWN0T2Zmc2V0ICpvZmZzZXQpCiAJICogdGhlIG5leHQg aXRlcmF0aW9uLiAgQnV0IG5vdGUgdGhhdCBuZXh0TVhhY3QgbWF5IGJlIEludmFsaWRNdWx0 aVhhY3RJZAogCSAqIG9yIHRoZSBmaXJzdCB2YWx1ZSBvbiBhIHNlZ21lbnQtYmVnaW5uaW5n IHBhZ2UgYWZ0ZXIgdGhpcyByb3V0aW5lCiAJICogZXhpdHMsIHNvIGFueW9uZSBlbHNlIGxv b2tpbmcgYXQgdGhlIHZhcmlhYmxlIG11c3QgYmUgcHJlcGFyZWQgdG8gZGVhbAotCSAqIHdp dGggZWl0aGVyIGNhc2UuICBTaW1pbGFybHksIG5leHRPZmZzZXQgbWF5IGJlIHplcm8sIGJ1 dCB3ZSB3b24ndCB1c2UKLQkgKiB0aGF0IGFzIHRoZSBhY3R1YWwgc3RhcnQgb2Zmc2V0IG9m IHRoZSBuZXh0IG11bHRpeGFjdC4KKwkgKiB3aXRoIGVpdGhlciBjYXNlLgogCSAqLwogCShN dWx0aVhhY3RTdGF0ZS0+bmV4dE1YYWN0KSsrOwogCkBAIC0xMTM2LDcgKzEwNjcsOCBAQCBH ZXROZXdNdWx0aVhhY3RJZChpbnQgbm1lbWJlcnMsIE11bHRpWGFjdE9mZnNldCAqb2Zmc2V0 KQogCiAJTFdMb2NrUmVsZWFzZShNdWx0aVhhY3RHZW5Mb2NrKTsKIAotCWRlYnVnX2Vsb2c0 KERFQlVHMiwgIkdldE5ldzogcmV0dXJuaW5nICV1IG9mZnNldCAldSIsIHJlc3VsdCwgKm9m ZnNldCk7CisJZGVidWdfZWxvZzQoREVCVUcyLCAiR2V0TmV3OiByZXR1cm5pbmcgJXUgb2Zm c2V0ICUiIFBSSXU2NCwgcmVzdWx0LAorCQkJCSpvZmZzZXQpOwogCXJldHVybiByZXN1bHQ7 CiB9CiAKQEAgLTExNzgsNyArMTExMCw2IEBAIEdldE11bHRpWGFjdElkTWVtYmVycyhNdWx0 aVhhY3RJZCBtdWx0aSwgTXVsdGlYYWN0TWVtYmVyICoqbWVtYmVycywKIAlNdWx0aVhhY3RP ZmZzZXQgKm9mZnB0cjsKIAlNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0OwogCWludAkJCWxlbmd0 aDsKLQlpbnQJCQl0cnVlbGVuZ3RoOwogCU11bHRpWGFjdElkIG9sZGVzdE1YYWN0OwogCU11 bHRpWGFjdElkIG5leHRNWGFjdDsKIAlNdWx0aVhhY3RJZCB0bXBNWGFjdDsKQEAgLTEyNzcs MTYgKzEyMDgsNyBAQCBHZXRNdWx0aVhhY3RJZE1lbWJlcnMoTXVsdGlYYWN0SWQgbXVsdGks IE11bHRpWGFjdE1lbWJlciAqKm1lbWJlcnMsCiAJICogd2UgaGF2ZSBqdXN0IGZvciB0aGlz OyB0aGUgcHJvY2VzcyBpbiBjaGFyZ2Ugd2lsbCBzaWduYWwgdGhlIENWIGFzIHNvb24KIAkg KiBhcyBpdCBoYXMgZmluaXNoZWQgd3JpdGluZyB0aGUgbXVsdGl4YWN0IG9mZnNldC4KIAkg KgotCSAqIDMuIEJlY2F1c2UgR2V0TmV3TXVsdGlYYWN0SWQgaW5jcmVtZW50cyBvZmZzZXQg emVybyB0byBvZmZzZXQgb25lIHRvCi0JICogaGFuZGxlIGNhc2UgIzIsIHRoZXJlIGlzIGFu IGFtYmlndWl0eSBuZWFyIHRoZSBwb2ludCBvZiBvZmZzZXQKLQkgKiB3cmFwYXJvdW5kLiAg SWYgd2Ugc2VlIG5leHQgbXVsdGl4YWN0J3Mgb2Zmc2V0IGlzIG9uZSwgaXMgdGhhdCBvdXIK LQkgKiBtdWx0aXhhY3QncyBhY3R1YWwgZW5kcG9pbnQsIG9yIGRpZCBpdCBlbmQgYXQgemVy byB3aXRoIGEgc3Vic2VxdWVudAotCSAqIGluY3JlbWVudD8gIFdlIGhhbmRsZSB0aGlzIHVz aW5nIHRoZSBrbm93bGVkZ2UgdGhhdCBpZiB0aGUgemVybyd0aAotCSAqIG1lbWJlciBzbG90 IHdhc24ndCBmaWxsZWQsIGl0J2xsIGNvbnRhaW4gemVybywgYW5kIHplcm8gaXNuJ3QgYSB2 YWxpZAotCSAqIHRyYW5zYWN0aW9uIElEIHNvIGl0IGNhbid0IGJlIGEgbXVsdGl4YWN0IG1l bWJlci4gIFRoZXJlZm9yZSwgaWYgd2UKLQkgKiByZWFkIGEgemVybyBmcm9tIHRoZSBtZW1i ZXJzIGFycmF5LCBqdXN0IGlnbm9yZSBpdC4KLQkgKgotCSAqIFRoaXMgaXMgYWxsIHByZXR0 eSBtZXNzeSwgYnV0IHRoZSBtZXNzIG9jY3VycyBvbmx5IGluIGluZnJlcXVlbnQgY29ybmVy CisJICogVGhpcyBpcyBhIGxpdHRsZSBtZXNzeSwgYnV0IHRoZSBtZXNzIG9jY3VycyBvbmx5 IGluIGluZnJlcXVlbnQgY29ybmVyCiAJICogY2FzZXMsIHNvIGl0IHNlZW1zIGJldHRlciB0 aGFuIGhvbGRpbmcgdGhlIE11bHRpWGFjdEdlbkxvY2sgZm9yIGEgbG9uZwogCSAqIHRpbWUg b24gZXZlcnkgbXVsdGl4YWN0IGNyZWF0aW9uLgogCSAqLwpAQCAtMTM3Miw2ICsxMjk0LDkg QEAgcmV0cnk6CiAJTFdMb2NrUmVsZWFzZShsb2NrKTsKIAlsb2NrID0gTlVMTDsKIAorCS8q IEEgbXVsdGl4aWQgd2l0aCB6ZXJvIG1lbWJlcnMgc2hvdWxkIG5vdCBoYXBwZW4gKi8KKwlB c3NlcnQobGVuZ3RoID4gMCk7CisKIAkvKgogCSAqIElmIHdlIHNsZXB0IGFib3ZlLCBjbGVh biB1cCBzdGF0ZTsgaXQncyBubyBsb25nZXIgbmVlZGVkLgogCSAqLwpAQCAtMTM4MCw3ICsx MzA1LDYgQEAgcmV0cnk6CiAKIAlwdHIgPSAoTXVsdGlYYWN0TWVtYmVyICopIHBhbGxvYyhs ZW5ndGggKiBzaXplb2YoTXVsdGlYYWN0TWVtYmVyKSk7CiAKLQl0cnVlbGVuZ3RoID0gMDsK IAlwcmV2X3BhZ2VubyA9IC0xOwogCWZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyss IG9mZnNldCsrKQogCXsKQEAgLTE0MTcsMzcgKzEzNDEsMjcgQEAgcmV0cnk6CiAKIAkJeGFj dHB0ciA9IChUcmFuc2FjdGlvbklkICopCiAJCQkoTXVsdGlYYWN0TWVtYmVyQ3RsLT5zaGFy ZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10gKyBtZW1iZXJvZmYpOwotCi0JCWlmICghVHJhbnNh Y3Rpb25JZElzVmFsaWQoKnhhY3RwdHIpKQotCQl7Ci0JCQkvKiBDb3JuZXIgY2FzZSAzOiB3 ZSBtdXN0IGJlIGxvb2tpbmcgYXQgdW51c2VkIHNsb3QgemVybyAqLwotCQkJQXNzZXJ0KG9m ZnNldCA9PSAwKTsKLQkJCWNvbnRpbnVlOwotCQl9CisJCUFzc2VydChUcmFuc2FjdGlvbklk SXNWYWxpZCgqeGFjdHB0cikpOwogCiAJCWZsYWdzb2ZmID0gTVhPZmZzZXRUb0ZsYWdzT2Zm c2V0KG9mZnNldCk7CiAJCWJzaGlmdCA9IE1YT2Zmc2V0VG9GbGFnc0JpdFNoaWZ0KG9mZnNl dCk7CiAJCWZsYWdzcHRyID0gKHVpbnQzMiAqKSAoTXVsdGlYYWN0TWVtYmVyQ3RsLT5zaGFy ZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10gKyBmbGFnc29mZik7CiAKLQkJcHRyW3RydWVsZW5n dGhdLnhpZCA9ICp4YWN0cHRyOwotCQlwdHJbdHJ1ZWxlbmd0aF0uc3RhdHVzID0gKCpmbGFn c3B0ciA+PiBic2hpZnQpICYgTVhBQ1RfTUVNQkVSX1hBQ1RfQklUTUFTSzsKLQkJdHJ1ZWxl bmd0aCsrOworCQlwdHJbaV0ueGlkID0gKnhhY3RwdHI7CisJCXB0cltpXS5zdGF0dXMgPSAo KmZsYWdzcHRyID4+IGJzaGlmdCkgJiBNWEFDVF9NRU1CRVJfWEFDVF9CSVRNQVNLOwogCX0K IAogCUxXTG9ja1JlbGVhc2UobG9jayk7CiAKLQkvKiBBIG11bHRpeGlkIHdpdGggemVybyBt ZW1iZXJzIHNob3VsZCBub3QgaGFwcGVuICovCi0JQXNzZXJ0KHRydWVsZW5ndGggPiAwKTsK LQogCS8qCiAJICogQ29weSB0aGUgcmVzdWx0IGludG8gdGhlIGxvY2FsIGNhY2hlLgogCSAq LwotCW1YYWN0Q2FjaGVQdXQobXVsdGksIHRydWVsZW5ndGgsIHB0cik7CisJbVhhY3RDYWNo ZVB1dChtdWx0aSwgbGVuZ3RoLCBwdHIpOwogCiAJZGVidWdfZWxvZzMoREVCVUcyLCAiR2V0 TWVtYmVyczogbm8gY2FjaGUgZm9yICVzIiwKLQkJCQlteGlkX3RvX3N0cmluZyhtdWx0aSwg dHJ1ZWxlbmd0aCwgcHRyKSk7CisJCQkJbXhpZF90b19zdHJpbmcobXVsdGksIGxlbmd0aCwg cHRyKSk7CiAJKm1lbWJlcnMgPSBwdHI7Ci0JcmV0dXJuIHRydWVsZW5ndGg7CisJcmV0dXJu IGxlbmd0aDsKIH0KIAogLyoKQEAgLTE4NTQsNyArMTc2OCw3IEBAIE11bHRpWGFjdFNobWVt SW5pdCh2b2lkKQogCQkJCSAgInBnX211bHRpeGFjdC9tZW1iZXJzIiwgTFdUUkFOQ0hFX01V TFRJWEFDVE1FTUJFUl9CVUZGRVIsCiAJCQkJICBMV1RSQU5DSEVfTVVMVElYQUNUTUVNQkVS X1NMUlUsCiAJCQkJICBTWU5DX0hBTkRMRVJfTVVMVElYQUNUX01FTUJFUiwKLQkJCQkgIGZh bHNlKTsKKwkJCQkgIHRydWUpOwogCS8qIGRvZXNuJ3QgY2FsbCBTaW1wbGVMcnVUcnVuY2F0 ZSgpIG9yIG1lZXQgY3JpdGVyaWEgZm9yIHVuaXQgdGVzdHMgKi8KIAogCS8qIEluaXRpYWxp emUgb3VyIHNoYXJlZCBzdGF0ZSBzdHJ1Y3QgKi8KQEAgLTIwMzEsNyArMTk0NSw2IEBAIFRy aW1NdWx0aVhhY3Qodm9pZCkKIAkJc2xvdG5vID0gU2ltcGxlTHJ1UmVhZFBhZ2UoTXVsdGlY YWN0T2Zmc2V0Q3RsLCBwYWdlbm8sIHRydWUsIG5leHRNWGFjdCk7CiAJCW9mZnB0ciA9IChN dWx0aVhhY3RPZmZzZXQgKikgTXVsdGlYYWN0T2Zmc2V0Q3RsLT5zaGFyZWQtPnBhZ2VfYnVm ZmVyW3Nsb3Rub107CiAJCW9mZnB0ciArPSBlbnRyeW5vOwotCiAJCU1lbVNldChvZmZwdHIs IDAsIEJMQ0tTWiAtIChlbnRyeW5vICogc2l6ZW9mKE11bHRpWGFjdE9mZnNldCkpKTsKIAog CQlNdWx0aVhhY3RPZmZzZXRDdGwtPnNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dID0gdHJ1 ZTsKQEAgLTIxMDQsNyArMjAxNyw3IEBAIE11bHRpWGFjdEdldENoZWNrcHRNdWx0aShib29s IGlzX3NodXRkb3duLAogCUxXTG9ja1JlbGVhc2UoTXVsdGlYYWN0R2VuTG9jayk7CiAKIAlk ZWJ1Z19lbG9nNihERUJVRzIsCi0JCQkJIk11bHRpWGFjdDogY2hlY2twb2ludCBpcyBuZXh0 TXVsdGkgJXUsIG5leHRPZmZzZXQgJXUsIG9sZGVzdE11bHRpICV1IGluIERCICV1IiwKKwkJ CQkiTXVsdGlYYWN0OiBjaGVja3BvaW50IGlzIG5leHRNdWx0aSAldSwgbmV4dE9mZnNldCAl IiBQUkl1NjQgIiwgb2xkZXN0TXVsdGkgJXUgaW4gREIgJXUiLAogCQkJCSpuZXh0TXVsdGks ICpuZXh0TXVsdGlPZmZzZXQsICpvbGRlc3RNdWx0aSwgKm9sZGVzdE11bHRpREIpOwogfQog CkBAIC0yMTM5LDcgKzIwNTIsNyBAQCB2b2lkCiBNdWx0aVhhY3RTZXROZXh0TVhhY3QoTXVs dGlYYWN0SWQgbmV4dE11bHRpLAogCQkJCQkgIE11bHRpWGFjdE9mZnNldCBuZXh0TXVsdGlP ZmZzZXQpCiB7Ci0JZGVidWdfZWxvZzQoREVCVUcyLCAiTXVsdGlYYWN0OiBzZXR0aW5nIG5l eHQgbXVsdGkgdG8gJXUgb2Zmc2V0ICV1IiwKKwlkZWJ1Z19lbG9nNChERUJVRzIsICJNdWx0 aVhhY3Q6IHNldHRpbmcgbmV4dCBtdWx0aSB0byAldSBvZmZzZXQgJSIgUFJJdTY0LAogCQkJ CW5leHRNdWx0aSwgbmV4dE11bHRpT2Zmc2V0KTsKIAlMV0xvY2tBY3F1aXJlKE11bHRpWGFj dEdlbkxvY2ssIExXX0VYQ0xVU0lWRSk7CiAJTXVsdGlYYWN0U3RhdGUtPm5leHRNWGFjdCA9 IG5leHRNdWx0aTsKQEAgLTIzMzAsNyArMjI0Myw3IEBAIE11bHRpWGFjdEFkdmFuY2VOZXh0 TVhhY3QoTXVsdGlYYWN0SWQgbWluTXVsdGksCiAJfQogCWlmIChNdWx0aVhhY3RPZmZzZXRQ cmVjZWRlcyhNdWx0aVhhY3RTdGF0ZS0+bmV4dE9mZnNldCwgbWluTXVsdGlPZmZzZXQpKQog CXsKLQkJZGVidWdfZWxvZzMoREVCVUcyLCAiTXVsdGlYYWN0OiBzZXR0aW5nIG5leHQgb2Zm c2V0IHRvICV1IiwKKwkJZGVidWdfZWxvZzMoREVCVUcyLCAiTXVsdGlYYWN0OiBzZXR0aW5n IG5leHQgb2Zmc2V0IHRvICUiIFBSSVU2NCwKIAkJCQkJbWluTXVsdGlPZmZzZXQpOwogCQlN dWx0aVhhY3RTdGF0ZS0+bmV4dE9mZnNldCA9IG1pbk11bHRpT2Zmc2V0OwogCX0KQEAgLTI0 MzIsMjMgKzIzNDUsOCBAQCBFeHRlbmRNdWx0aVhhY3RNZW1iZXIoTXVsdGlYYWN0T2Zmc2V0 IG9mZnNldCwgaW50IG5tZW1iZXJzKQogCQkJTFdMb2NrUmVsZWFzZShsb2NrKTsKIAkJfQog Ci0JCS8qCi0JCSAqIENvbXB1dGUgdGhlIG51bWJlciBvZiBpdGVtcyB0aWxsIGVuZCBvZiBj dXJyZW50IHBhZ2UuICBDYXJlZnVsOiBpZgotCQkgKiBhZGRpdGlvbiBvZiB1bnNpZ25lZCBp bnRzIHdyYXBzIGFyb3VuZCwgd2UncmUgYXQgdGhlIGxhc3QgcGFnZSBvZgotCQkgKiB0aGUg bGFzdCBzZWdtZW50OyBzaW5jZSB0aGF0IHBhZ2UgaG9sZHMgYSBkaWZmZXJlbnQgbnVtYmVy IG9mIGl0ZW1zCi0JCSAqIHRoYW4gb3RoZXIgcGFnZXMsIHdlIG5lZWQgdG8gZG8gaXQgZGlm ZmVyZW50bHkuCi0JCSAqLwotCQlpZiAob2Zmc2V0ICsgTUFYX01FTUJFUlNfSU5fTEFTVF9N RU1CRVJTX1BBR0UgPCBvZmZzZXQpCi0JCXsKLQkJCS8qCi0JCQkgKiBUaGlzIGlzIHRoZSBs YXN0IHBhZ2Ugb2YgdGhlIGxhc3Qgc2VnbWVudDsgd2UgY2FuIGNvbXB1dGUgdGhlCi0JCQkg KiBudW1iZXIgb2YgaXRlbXMgbGVmdCB0byBhbGxvY2F0ZSBpbiBpdCB3aXRob3V0IG1vZHVs bwotCQkJICogYXJpdGhtZXRpYy4KLQkJCSAqLwotCQkJZGlmZmVyZW5jZSA9IE1heE11bHRp WGFjdE9mZnNldCAtIG9mZnNldCArIDE7Ci0JCX0KLQkJZWxzZQotCQkJZGlmZmVyZW5jZSA9 IE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFIC0gb2Zmc2V0ICUgTVVMVElYQUNUX01FTUJF UlNfUEVSX1BBR0U7CisJCS8qIENvbXB1dGUgdGhlIG51bWJlciBvZiBpdGVtcyB0aWxsIGVu ZCBvZiBjdXJyZW50IHBhZ2UuICovCisJCWRpZmZlcmVuY2UgPSBNVUxUSVhBQ1RfTUVNQkVS U19QRVJfUEFHRSAtIG9mZnNldCAlIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFOwogCiAJ CS8qCiAJCSAqIEFkdmFuY2UgdG8gbmV4dCBwYWdlLCB0YWtpbmcgY2FyZSB0byBwcm9wZXJs eSBoYW5kbGUgdGhlIHdyYXBhcm91bmQKQEAgLTI1MTQsMTUgKzI0MTIsMTQgQEAgR2V0T2xk ZXN0TXVsdGlYYWN0SWQodm9pZCkKIH0KIAogLyoKLSAqIERldGVybWluZSBob3cgYWdncmVz c2l2ZWx5IHdlIG5lZWQgdG8gdmFjdXVtIGluIG9yZGVyIHRvIHByZXZlbnQgbWVtYmVyCi0g KiB3cmFwYXJvdW5kLgorICogRGV0ZXJtaW5lIGlmIHdlIG5lZWQgdG8gdmFjdXVtIHRvIGtl ZXAgdGhlIHNpemUgb2YgdGhlIG1lbWJlcnMgU0xSVSBpbgorICogY2hlY2suCiAgKgogICog VG8gZG8gc28gZGV0ZXJtaW5lIHdoYXQncyB0aGUgb2xkZXN0IG1lbWJlciBvZmZzZXQgYW5k IGluc3RhbGwgdGhlIGxpbWl0CiAgKiBpbmZvIGluIE11bHRpWGFjdFN0YXRlLCB3aGVyZSBp dCBjYW4gYmUgdXNlZCB0byBwcmV2ZW50IG92ZXJydW4gb2Ygb2xkIGRhdGEKICAqIGluIHRo ZSBtZW1iZXJzIFNMUlUgYXJlYS4KICAqCi0gKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRydWUg aWYgZW1lcmdlbmN5IGF1dG92YWN1dW0gaXMgcmVxdWlyZWQgYW5kIGZhbHNlCi0gKiBvdGhl cndpc2UuCisgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRydWUgaWYgYXV0b3ZhY3V1bSBpcyBy ZXF1aXJlZCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgogICovCiBzdGF0aWMgYm9vbAogU2V0T2Zm c2V0VmFjdXVtTGltaXQoYm9vbCBpc19zdGFydHVwKQpAQCAtMjUzNCw4ICsyNDMxLDYgQEAg U2V0T2Zmc2V0VmFjdXVtTGltaXQoYm9vbCBpc19zdGFydHVwKQogCU11bHRpWGFjdE9mZnNl dCBuZXh0T2Zmc2V0OwogCWJvb2wJCW9sZGVzdE9mZnNldEtub3duID0gZmFsc2U7CiAJYm9v bAkJcHJldk9sZGVzdE9mZnNldEtub3duOwotCU11bHRpWGFjdE9mZnNldCBvZmZzZXRTdG9w TGltaXQgPSAwOwotCU11bHRpWGFjdE9mZnNldCBwcmV2T2Zmc2V0U3RvcExpbWl0OwogCiAJ LyoKIAkgKiBOQjogSGF2ZSB0byBwcmV2ZW50IGNvbmN1cnJlbnQgdHJ1bmNhdGlvbiwgd2Ug bWlnaHQgb3RoZXJ3aXNlIHRyeSB0bwpAQCAtMjU1MCw3ICsyNDQ1LDYgQEAgU2V0T2Zmc2V0 VmFjdXVtTGltaXQoYm9vbCBpc19zdGFydHVwKQogCW5leHRPZmZzZXQgPSBNdWx0aVhhY3RT dGF0ZS0+bmV4dE9mZnNldDsKIAlwcmV2T2xkZXN0T2Zmc2V0S25vd24gPSBNdWx0aVhhY3RT dGF0ZS0+b2xkZXN0T2Zmc2V0S25vd247CiAJcHJldk9sZGVzdE9mZnNldCA9IE11bHRpWGFj dFN0YXRlLT5vbGRlc3RPZmZzZXQ7Ci0JcHJldk9mZnNldFN0b3BMaW1pdCA9IE11bHRpWGFj dFN0YXRlLT5vZmZzZXRTdG9wTGltaXQ7CiAJQXNzZXJ0KE11bHRpWGFjdFN0YXRlLT5maW5p c2hlZFN0YXJ0dXApOwogCUxXTG9ja1JlbGVhc2UoTXVsdGlYYWN0R2VuTG9jayk7CiAKQEAg LTI1ODEsMTMgKzI0NzUsOSBAQCBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29sIGlzX3N0YXJ0 dXApCiAJCW9sZGVzdE9mZnNldEtub3duID0KIAkJCWZpbmRfbXVsdGl4YWN0X3N0YXJ0KG9s ZGVzdE11bHRpWGFjdElkLCAmb2xkZXN0T2Zmc2V0KTsKIAotCQlpZiAob2xkZXN0T2Zmc2V0 S25vd24pCi0JCQllcmVwb3J0KERFQlVHMSwKLQkJCQkJKGVycm1zZ19pbnRlcm5hbCgib2xk ZXN0IE11bHRpWGFjdElkIG1lbWJlciBpcyBhdCBvZmZzZXQgJXUiLAotCQkJCQkJCQkJIG9s ZGVzdE9mZnNldCkpKTsKLQkJZWxzZQorCQlpZiAoIW9sZGVzdE9mZnNldEtub3duKQogCQkJ ZXJlcG9ydChMT0csCi0JCQkJCShlcnJtc2coIk11bHRpWGFjdCBtZW1iZXIgd3JhcGFyb3Vu ZCBwcm90ZWN0aW9ucyBhcmUgZGlzYWJsZWQgYmVjYXVzZSBvbGRlc3QgY2hlY2twb2ludGVk IE11bHRpWGFjdCAldSBkb2VzIG5vdCBleGlzdCBvbiBkaXNrIiwKKwkJCQkJKGVycm1zZygi b2xkZXN0IGNoZWNrcG9pbnRlZCBNdWx0aVhhY3QgJXUgZG9lcyBub3QgZXhpc3Qgb24gZGlz ayIsCiAJCQkJCQkJb2xkZXN0TXVsdGlYYWN0SWQpKSk7CiAJfQogCkBAIC0yNTk3LDk3ICsy NDg3LDMyIEBAIFNldE9mZnNldFZhY3V1bUxpbWl0KGJvb2wgaXNfc3RhcnR1cCkKIAkgKiBJ ZiB3ZSBjYW4sIGNvbXB1dGUgbGltaXRzIChhbmQgaW5zdGFsbCB0aGVtIE11bHRpWGFjdFN0 YXRlKSB0byBwcmV2ZW50CiAJICogb3ZlcnJ1biBvZiBvbGQgZGF0YSBpbiB0aGUgbWVtYmVy cyBTTFJVIGFyZWEuIFdlIGNhbiBvbmx5IGRvIHNvIGlmIHRoZQogCSAqIG9sZGVzdCBvZmZz ZXQgaXMga25vd24gdGhvdWdoLgorCSAqCisJICogRklYTUU6IElzICFvbGRlc3RPZmZzZXRL bm93biBwb3NzaWJsZSBhbnltb3JlPyBBdCBsZWFzdCB1cGRhdGUgdGhlIGNvbW1lbnQ6CisJ ICogd2Ugd29uJ3Qgb3ZlcnJ1biBtZW1iZXJzIGFueW1vcmUuCiAJICovCi0JaWYgKG9sZGVz dE9mZnNldEtub3duKQotCXsKLQkJLyogbW92ZSBiYWNrIHRvIHN0YXJ0IG9mIHRoZSBjb3Jy ZXNwb25kaW5nIHNlZ21lbnQgKi8KLQkJb2Zmc2V0U3RvcExpbWl0ID0gb2xkZXN0T2Zmc2V0 IC0gKG9sZGVzdE9mZnNldCAlCi0JCQkJCQkJCQkJICAoTVVMVElYQUNUX01FTUJFUlNfUEVS X1BBR0UgKiBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UKSk7Ci0KLQkJLyogYWx3YXlzIGxlYXZl IG9uZSBzZWdtZW50IGJlZm9yZSB0aGUgd3JhcGFyb3VuZCBwb2ludCAqLwotCQlvZmZzZXRT dG9wTGltaXQgLT0gKE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFICogU0xSVV9QQUdFU19Q RVJfU0VHTUVOVCk7Ci0KLQkJaWYgKCFwcmV2T2xkZXN0T2Zmc2V0S25vd24gJiYgIWlzX3N0 YXJ0dXApCi0JCQllcmVwb3J0KExPRywKLQkJCQkJKGVycm1zZygiTXVsdGlYYWN0IG1lbWJl ciB3cmFwYXJvdW5kIHByb3RlY3Rpb25zIGFyZSBub3cgZW5hYmxlZCIpKSk7Ci0KLQkJZXJl cG9ydChERUJVRzEsCi0JCQkJKGVycm1zZ19pbnRlcm5hbCgiTXVsdGlYYWN0IG1lbWJlciBz dG9wIGxpbWl0IGlzIG5vdyAldSBiYXNlZCBvbiBNdWx0aVhhY3QgJXUiLAotCQkJCQkJCQkg b2Zmc2V0U3RvcExpbWl0LCBvbGRlc3RNdWx0aVhhY3RJZCkpKTsKLQl9Ci0JZWxzZSBpZiAo cHJldk9sZGVzdE9mZnNldEtub3duKQorCWlmIChwcmV2T2xkZXN0T2Zmc2V0S25vd24pCiAJ ewogCQkvKgogCQkgKiBJZiB3ZSBmYWlsZWQgdG8gZ2V0IHRoZSBvbGRlc3Qgb2Zmc2V0IHRo aXMgdGltZSwgYnV0IHdlIGhhdmUgYQogCQkgKiB2YWx1ZSBmcm9tIGEgcHJldmlvdXMgcGFz cyB0aHJvdWdoIHRoaXMgZnVuY3Rpb24sIHVzZSB0aGUgb2xkCi0JCSAqIHZhbHVlcyByYXRo ZXIgdGhhbiBhdXRvbWF0aWNhbGx5IGZvcmNpbmcgYW4gZW1lcmdlbmN5IGF1dG92YWN1dW0K LQkJICogY3ljbGUgYWdhaW4uCisJCSAqIHZhbHVlcyByYXRoZXIgdGhhbiBhdXRvbWF0aWNh bGx5IGZvcmNpbmcgYW4gYXV0b3ZhY3V1bSBjeWNsZSBhZ2Fpbi4KIAkJICovCiAJCW9sZGVz dE9mZnNldCA9IHByZXZPbGRlc3RPZmZzZXQ7CiAJCW9sZGVzdE9mZnNldEtub3duID0gdHJ1 ZTsKLQkJb2Zmc2V0U3RvcExpbWl0ID0gcHJldk9mZnNldFN0b3BMaW1pdDsKIAl9CiAKIAkv KiBJbnN0YWxsIHRoZSBjb21wdXRlZCB2YWx1ZXMgKi8KIAlMV0xvY2tBY3F1aXJlKE11bHRp WGFjdEdlbkxvY2ssIExXX0VYQ0xVU0lWRSk7CiAJTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9m ZnNldCA9IG9sZGVzdE9mZnNldDsKIAlNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0T2Zmc2V0S25v d24gPSBvbGRlc3RPZmZzZXRLbm93bjsKLQlNdWx0aVhhY3RTdGF0ZS0+b2Zmc2V0U3RvcExp bWl0ID0gb2Zmc2V0U3RvcExpbWl0OwogCUxXTG9ja1JlbGVhc2UoTXVsdGlYYWN0R2VuTG9j ayk7CiAKIAkvKgotCSAqIERvIHdlIG5lZWQgYW4gZW1lcmdlbmN5IGF1dG92YWN1dW0/CUlm IHdlJ3JlIG5vdCBzdXJlLCBhc3N1bWUgeWVzLgorCSAqIERvIHdlIG5lZWQgYXV0b3ZhY3V1 bT8JSWYgd2UncmUgbm90IHN1cmUsIGFzc3VtZSB5ZXMuCiAJICovCiAJcmV0dXJuICFvbGRl c3RPZmZzZXRLbm93biB8fAotCQkobmV4dE9mZnNldCAtIG9sZGVzdE9mZnNldCA+IE1VTFRJ WEFDVF9NRU1CRVJfU0FGRV9USFJFU0hPTEQpOwotfQotCi0vKgotICogUmV0dXJuIHdoZXRo ZXIgYWRkaW5nICJkaXN0YW5jZSIgdG8gInN0YXJ0IiB3b3VsZCBtb3ZlIHBhc3QgImJvdW5k YXJ5Ii4KLSAqCi0gKiBXZSB1c2UgdGhpcyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgYWRk aXRpb24gaXMgIndyYXBwaW5nIGFyb3VuZCIgdGhlCi0gKiBib3VuZGFyeSBwb2ludCwgaGVu Y2UgdGhlIG5hbWUuICBUaGUgcmVhc29uIHdlIGRvbid0IHdhbnQgdG8gdXNlIHRoZSByZWd1 bGFyCi0gKiAyXjMxLW1vZHVsbyBhcml0aG1ldGljIGhlcmUgaXMgdGhhdCB3ZSB3YW50IHRv IGJlIGFibGUgdG8gdXNlIHRoZSB3aG9sZSBvZgotICogdGhlIDJeMzItMSBzcGFjZSBoZXJl LCBhbGxvd2luZyBmb3IgbW9yZSBtdWx0aXhhY3RzIHRoYW4gd291bGQgZml0Ci0gKiBvdGhl cndpc2UuCi0gKi8KLXN0YXRpYyBib29sCi1NdWx0aVhhY3RPZmZzZXRXb3VsZFdyYXAoTXVs dGlYYWN0T2Zmc2V0IGJvdW5kYXJ5LCBNdWx0aVhhY3RPZmZzZXQgc3RhcnQsCi0JCQkJCQkg dWludDMyIGRpc3RhbmNlKQotewotCU11bHRpWGFjdE9mZnNldCBmaW5pc2g7Ci0KLQkvKgot CSAqIE5vdGUgdGhhdCBvZmZzZXQgbnVtYmVyIDAgaXMgbm90IHVzZWQgKHNlZSBHZXRNdWx0 aVhhY3RJZE1lbWJlcnMpLCBzbwotCSAqIGlmIHRoZSBhZGRpdGlvbiB3cmFwcyBhcm91bmQg dGhlIFVJTlRfTUFYIGJvdW5kYXJ5LCBza2lwIHRoYXQgdmFsdWUuCi0JICovCi0JZmluaXNo ID0gc3RhcnQgKyBkaXN0YW5jZTsKLQlpZiAoZmluaXNoIDwgc3RhcnQpCi0JCWZpbmlzaCsr OwotCi0JLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCSAqIFdoZW4gdGhlIGJvdW5kYXJ5IGlzIG51 bWVyaWNhbGx5IGdyZWF0ZXIgdGhhbiB0aGUgc3RhcnRpbmcgcG9pbnQsIGFueQotCSAqIHZh bHVlIG51bWVyaWNhbGx5IGJldHdlZW4gdGhlIHR3byBpcyBub3Qgd3JhcHBlZDoKLQkgKgot CSAqCTwtLS0tUy0tLS1CLS0tLT4KLQkgKglbLS0tKQkJCSA9IEYgd3JhcHBlZCBwYXN0IEIg KGFuZCBVSU5UX01BWCkKLQkgKgkJIFstLS0pCQkgPSBGIG5vdCB3cmFwcGVkCi0JICoJCQkg IFstLS0tXSA9IEYgd3JhcHBlZCBwYXN0IEIKLQkgKgotCSAqIFdoZW4gdGhlIGJvdW5kYXJ5 IGlzIG51bWVyaWNhbGx5IGxlc3MgdGhhbiB0aGUgc3RhcnRpbmcgcG9pbnQgKGkuZS4gdGhl Ci0JICogVUlOVF9NQVggd3JhcGFyb3VuZCBvY2N1cnMgc29tZXdoZXJlIGluIGJldHdlZW4p IHRoZW4gYWxsIHZhbHVlcyBpbgotCSAqIGJldHdlZW4gYXJlIHdyYXBwZWQ6Ci0JICoKLQkg Kgk8LS0tLUItLS0tUy0tLS0+Ci0JICoJWy0tLSkJCQkgPSBGIG5vdCB3cmFwcGVkIHBhc3Qg QiAoYnV0IHdyYXBwZWQgcGFzdCBVSU5UX01BWCkKLQkgKgkJIFstLS0pCQkgPSBGIHdyYXBw ZWQgcGFzdCBCIChhbmQgVUlOVF9NQVgpCi0JICoJCQkgIFstLS0tXSA9IEYgbm90IHdyYXBw ZWQKLQkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0JICovCi0JaWYgKHN0YXJ0IDwgYm91bmRhcnkp Ci0JCXJldHVybiBmaW5pc2ggPj0gYm91bmRhcnkgfHwgZmluaXNoIDwgc3RhcnQ7Ci0JZWxz ZQotCQlyZXR1cm4gZmluaXNoID49IGJvdW5kYXJ5ICYmIGZpbmlzaCA8IHN0YXJ0OworCQko bmV4dE9mZnNldCAtIG9sZGVzdE9mZnNldCA+IE1VTFRJWEFDVF9NRU1CRVJfQVVUT1ZBQ19U SFJFU0hPTEQpOwogfQogCiAvKgpAQCAtMjcyNyw2ICsyNTUyLDcgQEAgZmluZF9tdWx0aXhh Y3Rfc3RhcnQoTXVsdGlYYWN0SWQgbXVsdGksIE11bHRpWGFjdE9mZnNldCAqcmVzdWx0KQog CW9mZnB0ciA9IChNdWx0aVhhY3RPZmZzZXQgKikgTXVsdGlYYWN0T2Zmc2V0Q3RsLT5zaGFy ZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub107CiAJb2ZmcHRyICs9IGVudHJ5bm87CiAJb2Zmc2V0 ID0gKm9mZnB0cjsKKwogCUxXTG9ja1JlbGVhc2UoU2ltcGxlTHJ1R2V0QmFua0xvY2soTXVs dGlYYWN0T2Zmc2V0Q3RsLCBwYWdlbm8pKTsKIAogCSpyZXN1bHQgPSBvZmZzZXQ7CkBAIC0y Nzc0LDczICsyNjAwLDYgQEAgR2V0TXVsdGlYYWN0SW5mbyh1aW50MzIgKm11bHRpeGFjdHMs IE11bHRpWGFjdE9mZnNldCAqbWVtYmVycywKIAlyZXR1cm4gdHJ1ZTsKIH0KIAotLyoKLSAq IE11bHRpeGFjdCBtZW1iZXJzIGNhbiBiZSByZW1vdmVkIG9uY2UgdGhlIG11bHRpeGFjdHMg dGhhdCByZWZlciB0byB0aGVtCi0gKiBhcmUgb2xkZXIgdGhhbiBldmVyeSBkYXRtaW5teGlk LiAgYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UgYW5kCi0gKiB2YWN1dW1f bXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9hZ2Ugd29yayB0b2dldGhlciB0byBtYWtlIHN1cmUg d2UgbmV2ZXIgaGF2ZQotICogdG9vIG1hbnkgbXVsdGl4YWN0czsgd2UgaG9wZSB0aGF0LCBh dCBsZWFzdCB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcywKLSAqIHRoaXMgd2lsbCBhbHNv IGJlIHN1ZmZpY2llbnQgdG8ga2VlcCB1cyBmcm9tIHVzaW5nIHRvbyBtYW55IG9mZnNldHMu Ci0gKiBIb3dldmVyLCBpZiB0aGUgYXZlcmFnZSBtdWx0aXhhY3QgaGFzIG1hbnkgbWVtYmVy cywgd2UgbWlnaHQgZXhoYXVzdCB0aGUKLSAqIG1lbWJlcnMgc3BhY2Ugd2hpbGUgc3RpbGwg dXNpbmcgZmV3IGVub3VnaCBtZW1iZXJzIHRoYXQgdGhlc2UgbGltaXRzIGZhaWwKLSAqIHRv IHRyaWdnZXIgcmVsbWlubXhpZCBhZHZhbmNlbWVudCBieSBWQUNVVU0uICBBdCB0aGF0IHBv aW50LCB3ZSdkIGhhdmUgbm8KLSAqIGNob2ljZSBidXQgdG8gc3RhcnQgZmFpbGluZyBtdWx0 aXhhY3QtY3JlYXRpbmcgb3BlcmF0aW9ucyB3aXRoIGFuIGVycm9yLgotICoKLSAqIFRvIHBy ZXZlbnQgdGhhdCwgaWYgbW9yZSB0aGFuIGEgdGhyZXNob2xkIHBvcnRpb24gb2YgdGhlIG1l bWJlcnMgc3BhY2UgaXMKLSAqIHVzZWQsIHdlIGVmZmVjdGl2ZWx5IHJlZHVjZSBhdXRvdmFj dXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSBhbmQKLSAqIHRvIGEgdmFsdWUganVzdCBs ZXNzIHRoYW4gdGhlIG51bWJlciBvZiBtdWx0aXhhY3RzIGluIHVzZS4gIFdlIGhvcGUgdGhh dAotICogdGhpcyB3aWxsIHF1aWNrbHkgdHJpZ2dlciBhdXRvdmFjdXVtaW5nIG9uIHRoZSB0 YWJsZSBvciB0YWJsZXMgd2l0aCB0aGUKLSAqIG9sZGVzdCByZWxtaW5teGlkLCB0aHVzIGFs bG93aW5nIGRhdG1pbm14aWQgdmFsdWVzIHRvIGFkdmFuY2UgYW5kIHJlbW92aW5nCi0gKiBz b21lIG1lbWJlcnMuCi0gKgotICogQXMgdGhlIGZyYWN0aW9uIG9mIHRoZSBtZW1iZXIgc3Bh Y2UgY3VycmVudGx5IGluIHVzZSBncm93cywgd2UgYmVjb21lCi0gKiBtb3JlIGFnZ3Jlc3Np dmUgaW4gY2xhbXBpbmcgdGhpcyB2YWx1ZS4gIFRoYXQgbm90IG9ubHkgY2F1c2VzIGF1dG92 YWN1dW0KLSAqIHRvIHJhbXAgdXAsIGJ1dCBhbHNvIG1ha2VzIGFueSBtYW51YWwgdmFjdXVt cyB0aGUgdXNlciBpc3N1ZXMgbW9yZQotICogYWdncmVzc2l2ZS4gIFRoaXMgaGFwcGVucyBi ZWNhdXNlIHZhY3V1bV9nZXRfY3V0b2ZmcygpIHdpbGwgY2xhbXAgdGhlCi0gKiBmcmVlemUg dGFibGUgYW5kIHRoZSBtaW5pbXVtIGZyZWV6ZSBhZ2UgY3V0b2ZmcyBiYXNlZCBvbiB0aGUg ZWZmZWN0aXZlCi0gKiBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSB0aGlz IGZ1bmN0aW9uIHJldHVybnMuICBJbiB0aGUgd29yc3QKLSAqIGNhc2UsIHdlJ2xsIGNsYWlt IHRoZSBmcmVlemVfbWF4X2FnZSB0byB6ZXJvLCBhbmQgZXZlcnkgdmFjdXVtIG9mIGFueQot ICogdGFibGUgd2lsbCBmcmVlemUgZXZlcnkgbXVsdGl4YWN0LgotICovCi1pbnQKLU11bHRp WGFjdE1lbWJlckZyZWV6ZVRocmVzaG9sZCh2b2lkKQotewotCU11bHRpWGFjdE9mZnNldCBt ZW1iZXJzOwotCXVpbnQzMgkJbXVsdGl4YWN0czsKLQl1aW50MzIJCXZpY3RpbV9tdWx0aXhh Y3RzOwotCWRvdWJsZQkJZnJhY3Rpb247Ci0JaW50CQkJcmVzdWx0OwotCU11bHRpWGFjdElk IG9sZGVzdE11bHRpWGFjdElkOwotCU11bHRpWGFjdE9mZnNldCBvbGRlc3RPZmZzZXQ7Ci0K LQkvKiBJZiB3ZSBjYW4ndCBkZXRlcm1pbmUgbWVtYmVyIHNwYWNlIHV0aWxpemF0aW9uLCBh c3N1bWUgdGhlIHdvcnN0LiAqLwotCWlmICghR2V0TXVsdGlYYWN0SW5mbygmbXVsdGl4YWN0 cywgJm1lbWJlcnMsICZvbGRlc3RNdWx0aVhhY3RJZCwgJm9sZGVzdE9mZnNldCkpCi0JCXJl dHVybiAwOwotCi0JLyogSWYgbWVtYmVyIHNwYWNlIHV0aWxpemF0aW9uIGlzIGxvdywgbm8g c3BlY2lhbCBhY3Rpb24gaXMgcmVxdWlyZWQuICovCi0JaWYgKG1lbWJlcnMgPD0gTVVMVElY QUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRCkKLQkJcmV0dXJuIGF1dG92YWN1dW1fbXVsdGl4 YWN0X2ZyZWV6ZV9tYXhfYWdlOwotCi0JLyoKLQkgKiBDb21wdXRlIGEgdGFyZ2V0IGZvciBy ZWxtaW5teGlkIGFkdmFuY2VtZW50LiAgVGhlIG51bWJlciBvZiBtdWx0aXhhY3RzCi0JICog d2UgdHJ5IHRvIGVsaW1pbmF0ZSBmcm9tIHRoZSBzeXN0ZW0gaXMgYmFzZWQgb24gaG93IGZh ciB3ZSBhcmUgcGFzdAotCSAqIE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9USFJFU0hPTEQuCi0J ICovCi0JZnJhY3Rpb24gPSAoZG91YmxlKSAobWVtYmVycyAtIE1VTFRJWEFDVF9NRU1CRVJf U0FGRV9USFJFU0hPTEQpIC8KLQkJKE1VTFRJWEFDVF9NRU1CRVJfREFOR0VSX1RIUkVTSE9M RCAtIE1VTFRJWEFDVF9NRU1CRVJfU0FGRV9USFJFU0hPTEQpOwotCXZpY3RpbV9tdWx0aXhh Y3RzID0gbXVsdGl4YWN0cyAqIGZyYWN0aW9uOwotCi0JLyogZnJhY3Rpb24gY291bGQgYmUg PiAxLjAsIGJ1dCBsb3dlc3QgcG9zc2libGUgZnJlZXplIGFnZSBpcyB6ZXJvICovCi0JaWYg KHZpY3RpbV9tdWx0aXhhY3RzID4gbXVsdGl4YWN0cykKLQkJcmV0dXJuIDA7Ci0JcmVzdWx0 ID0gbXVsdGl4YWN0cyAtIHZpY3RpbV9tdWx0aXhhY3RzOwotCi0JLyoKLQkgKiBDbGFtcCB0 byBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSwgc28gdGhhdCB3ZSBuZXZl ciBtYWtlCi0JICogYXV0b3ZhY3V1bSBsZXNzIGFnZ3Jlc3NpdmUgdGhhbiBpdCB3b3VsZCBv dGhlcndpc2UgYmUuCi0JICovCi0JcmV0dXJuIE1pbihyZXN1bHQsIGF1dG92YWN1dW1fbXVs dGl4YWN0X2ZyZWV6ZV9tYXhfYWdlKTsKLX0KLQogdHlwZWRlZiBzdHJ1Y3QgbXh0cnVuY2lu Zm8KIHsKIAlpbnQ2NAkJZWFybGllc3RFeGlzdGluZ1BhZ2U7CkBAIC0yODY3LDM2ICsyNjI2 LDEyIEBAIFNscnVTY2FuRGlyQ2JGaW5kRWFybGllc3QoU2xydUN0bCBjdGwsIGNoYXIgKmZp bGVuYW1lLCBpbnQ2NCBzZWdwYWdlLCB2b2lkICpkYXRhCiAKIC8qCiAgKiBEZWxldGUgbWVt YmVycyBzZWdtZW50cyBbb2xkZXN0LCBuZXdPbGRlc3QpCi0gKgotICogVGhlIG1lbWJlcnMg U0xSVSBjYW4sIGluIGNvbnRyYXN0IHRvIHRoZSBvZmZzZXRzIG9uZSwgYmUgZmlsbGVkIHRv IGFsbW9zdAotICogdGhlIGZ1bGwgcmFuZ2UgYXQgb25jZS4gVGhpcyBtZWFucyBTaW1wbGVM cnVUcnVuY2F0ZSgpIGNhbid0IHRyaXZpYWxseSBiZQotICogdXNlZCAtIGluc3RlYWQgdGhl IHRvLWJlLWRlbGV0ZWQgcmFuZ2UgaXMgY29tcHV0ZWQgdXNpbmcgdGhlIG9mZnNldHMKLSAq IFNMUlUuIEMuZi4gVHJ1bmNhdGVNdWx0aVhhY3QoKS4KICAqLwogc3RhdGljIHZvaWQKIFBl cmZvcm1NZW1iZXJzVHJ1bmNhdGlvbihNdWx0aVhhY3RPZmZzZXQgb2xkZXN0T2Zmc2V0LCBN dWx0aVhhY3RPZmZzZXQgbmV3T2xkZXN0T2Zmc2V0KQogewotCWNvbnN0IGludDY0IG1heHNl Z21lbnQgPSBNWE9mZnNldFRvTWVtYmVyU2VnbWVudChNYXhNdWx0aVhhY3RPZmZzZXQpOwot CWludDY0CQlzdGFydHNlZ21lbnQgPSBNWE9mZnNldFRvTWVtYmVyU2VnbWVudChvbGRlc3RP ZmZzZXQpOwotCWludDY0CQllbmRzZWdtZW50ID0gTVhPZmZzZXRUb01lbWJlclNlZ21lbnQo bmV3T2xkZXN0T2Zmc2V0KTsKLQlpbnQ2NAkJc2VnbWVudCA9IHN0YXJ0c2VnbWVudDsKLQot CS8qCi0JICogRGVsZXRlIGFsbCB0aGUgc2VnbWVudHMgYnV0IHRoZSBsYXN0IG9uZS4gVGhl IGxhc3Qgc2VnbWVudCBjYW4gc3RpbGwKLQkgKiBjb250YWluLCBwb3NzaWJseSBwYXJ0aWFs bHksIHZhbGlkIGRhdGEuCi0JICovCi0Jd2hpbGUgKHNlZ21lbnQgIT0gZW5kc2VnbWVudCkK LQl7Ci0JCWVsb2coREVCVUcyLCAidHJ1bmNhdGluZyBtdWx0aXhhY3QgbWVtYmVycyBzZWdt ZW50ICUiIFBSSXg2NCwKLQkJCSBzZWdtZW50KTsKLQkJU2xydURlbGV0ZVNlZ21lbnQoTXVs dGlYYWN0TWVtYmVyQ3RsLCBzZWdtZW50KTsKLQotCQkvKiBtb3ZlIHRvIG5leHQgc2VnbWVu dCwgaGFuZGxpbmcgd3JhcGFyb3VuZCBjb3JyZWN0bHkgKi8KLQkJaWYgKHNlZ21lbnQgPT0g bWF4c2VnbWVudCkKLQkJCXNlZ21lbnQgPSAwOwotCQllbHNlCi0JCQlzZWdtZW50ICs9IDE7 Ci0JfQorCVNpbXBsZUxydVRydW5jYXRlKE11bHRpWGFjdE1lbWJlckN0bCwKKwkJCQkJICBN WE9mZnNldFRvTWVtYmVyUGFnZShuZXdPbGRlc3RPZmZzZXQpKTsKIH0KIAogLyoKQEAgLTMw NDAsNyArMjc3NSw3IEBAIFRydW5jYXRlTXVsdGlYYWN0KE11bHRpWGFjdElkIG5ld09sZGVz dE11bHRpLCBPaWQgbmV3T2xkZXN0TXVsdGlEQikKIAogCWVsb2coREVCVUcxLCAicGVyZm9y bWluZyBtdWx0aXhhY3QgdHJ1bmNhdGlvbjogIgogCQkgIm9mZnNldHMgWyV1LCAldSksIG9m ZnNldHMgc2VnbWVudHMgWyUiIFBSSXg2NCAiLCAlIiBQUkl4NjQgIiksICIKLQkJICJtZW1i ZXJzIFsldSwgJXUpLCBtZW1iZXJzIHNlZ21lbnRzIFslIiBQUkl4NjQgIiwgJSIgUFJJeDY0 ICIpIiwKKwkJICJtZW1iZXJzIFslIiBQUkl1NjQgIiwgJSIgUFJJdTY0ICIpLCBtZW1iZXJz IHNlZ21lbnRzIFslIiBQUkl4NjQgIiwgJSIgUFJJeDY0ICIpIiwKIAkJIG9sZGVzdE11bHRp LCBuZXdPbGRlc3RNdWx0aSwKIAkJIE11bHRpWGFjdElkVG9PZmZzZXRTZWdtZW50KG9sZGVz dE11bHRpKSwKIAkJIE11bHRpWGFjdElkVG9PZmZzZXRTZWdtZW50KG5ld09sZGVzdE11bHRp KSwKQEAgLTMxMjAsMjAgKzI4NTUsMTMgQEAgTXVsdGlYYWN0T2Zmc2V0UGFnZVByZWNlZGVz KGludDY0IHBhZ2UxLCBpbnQ2NCBwYWdlMikKIAogLyoKICAqIERlY2lkZSB3aGV0aGVyIGEg TXVsdGlYYWN0TWVtYmVyIHBhZ2UgbnVtYmVyIGlzICJvbGRlciIgZm9yIHRydW5jYXRpb24K LSAqIHB1cnBvc2VzLiAgVGhlcmUgaXMgbm8gImludmFsaWQgb2Zmc2V0IG51bWJlciIgc28g dXNlIHRoZSBudW1iZXJzIHZlcmJhdGltLgorICogcHVycG9zZXMuICBUaGVyZSBpcyBubyAi aW52YWxpZCBvZmZzZXQgbnVtYmVyIiBhbmQgbWVtYmVycyBuZXZlciB3cmFwCisgKiBhcm91 bmQsIHNvIHVzZSB0aGUgbnVtYmVycyB2ZXJiYXRpbS4KICAqLwogc3RhdGljIGJvb2wKIE11 bHRpWGFjdE1lbWJlclBhZ2VQcmVjZWRlcyhpbnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpCiB7 Ci0JTXVsdGlYYWN0T2Zmc2V0IG9mZnNldDE7Ci0JTXVsdGlYYWN0T2Zmc2V0IG9mZnNldDI7 Ci0KLQlvZmZzZXQxID0gKChNdWx0aVhhY3RPZmZzZXQpIHBhZ2UxKSAqIE1VTFRJWEFDVF9N RU1CRVJTX1BFUl9QQUdFOwotCW9mZnNldDIgPSAoKE11bHRpWGFjdE9mZnNldCkgcGFnZTIp ICogTVVMVElYQUNUX01FTUJFUlNfUEVSX1BBR0U7Ci0KLQlyZXR1cm4gKE11bHRpWGFjdE9m ZnNldFByZWNlZGVzKG9mZnNldDEsIG9mZnNldDIpICYmCi0JCQlNdWx0aVhhY3RPZmZzZXRQ cmVjZWRlcyhvZmZzZXQxLAotCQkJCQkJCQkJb2Zmc2V0MiArIE1VTFRJWEFDVF9NRU1CRVJT X1BFUl9QQUdFIC0gMSkpOworCXJldHVybiBwYWdlMSA8IHBhZ2UyOwogfQogCiAvKgpAQCAt MzE3MSw3ICsyODk5LDcgQEAgTXVsdGlYYWN0SWRQcmVjZWRlc09yRXF1YWxzKE11bHRpWGFj dElkIG11bHRpMSwgTXVsdGlYYWN0SWQgbXVsdGkyKQogc3RhdGljIGJvb2wKIE11bHRpWGFj dE9mZnNldFByZWNlZGVzKE11bHRpWGFjdE9mZnNldCBvZmZzZXQxLCBNdWx0aVhhY3RPZmZz ZXQgb2Zmc2V0MikKIHsKLQlpbnQzMgkJZGlmZiA9IChpbnQzMikgKG9mZnNldDEgLSBvZmZz ZXQyKTsKKwlpbnQ2NAkJZGlmZiA9IChpbnQ2NCkgKG9mZnNldDEgLSBvZmZzZXQyKTsKIAog CXJldHVybiAoZGlmZiA8IDApOwogfQpAQCAtMzI2OCw3ICsyOTk2LDcgQEAgbXVsdGl4YWN0 X3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJZWxvZyhERUJVRzEsICJyZXBs YXlpbmcgbXVsdGl4YWN0IHRydW5jYXRpb246ICIKIAkJCSAib2Zmc2V0cyBbJXUsICV1KSwg b2Zmc2V0cyBzZWdtZW50cyBbJSIgUFJJeDY0ICIsICUiIFBSSXg2NCAiKSwgIgotCQkJICJt ZW1iZXJzIFsldSwgJXUpLCBtZW1iZXJzIHNlZ21lbnRzIFslIiBQUkl4NjQgIiwgJSIgUFJJ eDY0ICIpIiwKKwkJCSAibWVtYmVycyBbJSIgUFJJdTY0ICIsICUiIFBSSXU2NCAiKSwgbWVt YmVycyBzZWdtZW50cyBbJSIgUFJJeDY0ICIsICUiIFBSSXg2NCAiKSIsCiAJCQkgeGxyZWMu c3RhcnRUcnVuY09mZiwgeGxyZWMuZW5kVHJ1bmNPZmYsCiAJCQkgTXVsdGlYYWN0SWRUb09m ZnNldFNlZ21lbnQoeGxyZWMuc3RhcnRUcnVuY09mZiksCiAJCQkgTXVsdGlYYWN0SWRUb09m ZnNldFNlZ21lbnQoeGxyZWMuZW5kVHJ1bmNPZmYpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZy5jCmluZGV4IDIyZDBhMmU4YzNhLi5lZjQwNWQ2NmIzYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYwpAQCAtNTEzOSw3ICs1MTM5LDcgQEAgQm9vdFN0cmFwWExPRyh1 aW50MzIgZGF0YV9jaGVja3N1bV92ZXJzaW9uKQogCQlGdWxsVHJhbnNhY3Rpb25JZEZyb21F cG9jaEFuZFhpZCgwLCBGaXJzdE5vcm1hbFRyYW5zYWN0aW9uSWQpOwogCWNoZWNrUG9pbnQu bmV4dE9pZCA9IEZpcnN0R2VuYmtpT2JqZWN0SWQ7CiAJY2hlY2tQb2ludC5uZXh0TXVsdGkg PSBGaXJzdE11bHRpWGFjdElkOwotCWNoZWNrUG9pbnQubmV4dE11bHRpT2Zmc2V0ID0gMDsK KwljaGVja1BvaW50Lm5leHRNdWx0aU9mZnNldCA9IDE7CiAJY2hlY2tQb2ludC5vbGRlc3RY aWQgPSBGaXJzdE5vcm1hbFRyYW5zYWN0aW9uSWQ7CiAJY2hlY2tQb2ludC5vbGRlc3RYaWRE QiA9IFRlbXBsYXRlMURiT2lkOwogCWNoZWNrUG9pbnQub2xkZXN0TXVsdGkgPSBGaXJzdE11 bHRpWGFjdElkOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Z3JlY292ZXJ5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3Zlcnku YwppbmRleCAyMWI4ZjE3OWJhMC4uNTFkZWEzNDJhNGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCkBAIC04ODYsNyArODg2LDcgQEAgSW5pdFdh bFJlY292ZXJ5KENvbnRyb2xGaWxlRGF0YSAqQ29udHJvbEZpbGUsIGJvb2wgKndhc1NodXRk b3duX3B0ciwKIAkJCQkJCQkgVTY0RnJvbUZ1bGxUcmFuc2FjdGlvbklkKGNoZWNrUG9pbnQu bmV4dFhpZCksCiAJCQkJCQkJIGNoZWNrUG9pbnQubmV4dE9pZCkpKTsKIAllcmVwb3J0KERF QlVHMSwKLQkJCShlcnJtc2dfaW50ZXJuYWwoIm5leHQgTXVsdGlYYWN0SWQ6ICV1OyBuZXh0 IE11bHRpWGFjdE9mZnNldDogJXUiLAorCQkJKGVycm1zZ19pbnRlcm5hbCgibmV4dCBNdWx0 aVhhY3RJZDogJXU7IG5leHQgTXVsdGlYYWN0T2Zmc2V0OiAlIiBQUkl1NjQsCiAJCQkJCQkJ IGNoZWNrUG9pbnQubmV4dE11bHRpLCBjaGVja1BvaW50Lm5leHRNdWx0aU9mZnNldCkpKTsK IAllcmVwb3J0KERFQlVHMSwKIAkJCShlcnJtc2dfaW50ZXJuYWwoIm9sZGVzdCB1bmZyb3pl biB0cmFuc2FjdGlvbiBJRDogJXUsIGluIGRhdGFiYXNlICV1IiwKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFj dXVtLmMKaW5kZXggZTc4NWRkNTVjZTUuLjEwMGUxYTcyYzIyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92 YWN1dW0uYwpAQCAtMTE0OCw3ICsxMTQ4LDcgQEAgdmFjdXVtX2dldF9jdXRvZmZzKFJlbGF0 aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAkgKiBub3JtYWxseSBhdXRv dmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSwgYnV0IG1heSBiZSBsZXNzIGlmIHdl IGFyZQogCSAqIHNob3J0IG9mIG11bHRpeGFjdCBtZW1iZXIgc3BhY2UuCiAJICovCi0JZWZm ZWN0aXZlX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSA9IE11bHRpWGFjdE1lbWJlckZyZWV6 ZVRocmVzaG9sZCgpOworCWVmZmVjdGl2ZV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UgPSBh dXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZTsKIAogCS8qCiAJICogQWxtb3N0 IHJlYWR5IHRvIHNldCBmcmVlemUgb3V0cHV0IHBhcmFtZXRlcnM7IGNoZWNrIGlmIE9sZGVz dFhtaW4gb3IKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1 bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggMWMzODQ4 OGYyY2IuLmJmNjZmNDk0ZTNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0u YwpAQCAtMTE1MSw3ICsxMTUxLDcgQEAgZG9fc3RhcnRfd29ya2VyKHZvaWQpCiAKIAkvKiBB bHNvIGRldGVybWluZSB0aGUgb2xkZXN0IGRhdG1pbm14aWQgd2Ugd2lsbCBjb25zaWRlci4g Ki8KIAlyZWNlbnRNdWx0aSA9IFJlYWROZXh0TXVsdGlYYWN0SWQoKTsKLQltdWx0aUZvcmNl TGltaXQgPSByZWNlbnRNdWx0aSAtIE11bHRpWGFjdE1lbWJlckZyZWV6ZVRocmVzaG9sZCgp OworCW11bHRpRm9yY2VMaW1pdCA9IHJlY2VudE11bHRpIC0gYXV0b3ZhY3V1bV9tdWx0aXhh Y3RfZnJlZXplX21heF9hZ2U7CiAJaWYgKG11bHRpRm9yY2VMaW1pdCA8IEZpcnN0TXVsdGlY YWN0SWQpCiAJCW11bHRpRm9yY2VMaW1pdCAtPSBGaXJzdE11bHRpWGFjdElkOwogCkBAIC0x OTM5LDcgKzE5MzksNyBAQCBkb19hdXRvdmFjdXVtKHZvaWQpCiAJICogbm9ybWFsbHkgYXV0 b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UsIGJ1dCBtYXkgYmUgbGVzcyBpZiB3 ZSBhcmUKIAkgKiBzaG9ydCBvZiBtdWx0aXhhY3QgbWVtYmVyIHNwYWNlLgogCSAqLwotCWVm ZmVjdGl2ZV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UgPSBNdWx0aVhhY3RNZW1iZXJGcmVl emVUaHJlc2hvbGQoKTsKKwllZmZlY3RpdmVfbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlID0g YXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2U7CiAKIAkvKgogCSAqIEZpbmQg dGhlIHBnX2RhdGFiYXNlIGVudHJ5IGFuZCBzZWxlY3QgdGhlIGRlZmF1bHQgZnJlZXplIGFn ZXMuIFdlIHVzZQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19jb250cm9sZGF0YS9wZ19jb250 cm9sZGF0YS5jIGIvc3JjL2Jpbi9wZ19jb250cm9sZGF0YS9wZ19jb250cm9sZGF0YS5jCmlu ZGV4IDMwYWQ0NjkxMmUxLi5hNDA2MDMwOWFlMCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19j b250cm9sZGF0YS9wZ19jb250cm9sZGF0YS5jCisrKyBiL3NyYy9iaW4vcGdfY29udHJvbGRh dGEvcGdfY29udHJvbGRhdGEuYwpAQCAtMjcxLDcgKzI3MSw3IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKIAkJICAgQ29udHJvbEZpbGUtPmNoZWNrUG9pbnRDb3B5Lm5leHRP aWQpOwogCXByaW50ZihfKCJMYXRlc3QgY2hlY2twb2ludCdzIE5leHRNdWx0aVhhY3RJZDog ICV1XG4iKSwKIAkJICAgQ29udHJvbEZpbGUtPmNoZWNrUG9pbnRDb3B5Lm5leHRNdWx0aSk7 Ci0JcHJpbnRmKF8oIkxhdGVzdCBjaGVja3BvaW50J3MgTmV4dE11bHRpT2Zmc2V0OiAgJXVc biIpLAorCXByaW50ZihfKCJMYXRlc3QgY2hlY2twb2ludCdzIE5leHRNdWx0aU9mZnNldDog ICUiIFBSSXU2NCAiXG4iKSwKIAkJICAgQ29udHJvbEZpbGUtPmNoZWNrUG9pbnRDb3B5Lm5l eHRNdWx0aU9mZnNldCk7CiAJcHJpbnRmKF8oIkxhdGVzdCBjaGVja3BvaW50J3Mgb2xkZXN0 WElEOiAgICAgICAgJXVcbiIpLAogCQkgICBDb250cm9sRmlsZS0+Y2hlY2tQb2ludENvcHku b2xkZXN0WGlkKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3 YWwuYyBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYwppbmRleCBhMzFlNzY0 M2NmMC4uN2M2YzI3NDFhMTcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdf cmVzZXR3YWwuYworKysgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMKQEAg LTkyLDYgKzkyLDcgQEAgc3RhdGljIHZvaWQgS2lsbEV4aXN0aW5nQXJjaGl2ZVN0YXR1cyh2 b2lkKTsKIHN0YXRpYyB2b2lkIEtpbGxFeGlzdGluZ1dBTFN1bW1hcmllcyh2b2lkKTsKIHN0 YXRpYyB2b2lkIFdyaXRlRW1wdHlYTE9HKHZvaWQpOwogc3RhdGljIHZvaWQgdXNhZ2Uodm9p ZCk7CitzdGF0aWMgdWludDY0IHN0cnRvdTY0X3N0cmljdChjb25zdCBjaGFyICpzLCBjaGFy ICoqZW5kcHRyLCBpbnQgYmFzZSk7CiAKIAogaW50CkBAIC0xMjAsNyArMTIxLDYgQEAgbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCU11bHRpWGFjdElkIHNldF9vbGRlc3RteGlk ID0gMDsKIAljaGFyCSAgICplbmRwdHI7CiAJY2hhcgkgICAqZW5kcHRyMjsKLQlpbnQ2NAkJ dG1waTY0OwogCWNoYXIJICAgKkRhdGFEaXIgPSBOVUxMOwogCWNoYXIJICAgKmxvZ19mbmFt ZSA9IE5VTEw7CiAJaW50CQkJZmQ7CkBAIC0yNjksMTcgKzI2OSwxNCBAQCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAKIAkJCWNhc2UgJ08nOgogCQkJCWVycm5vID0gMDsKLQkJ CQl0bXBpNjQgPSBzdHJ0b2k2NChvcHRhcmcsICZlbmRwdHIsIDApOworCQkJCXNldF9teG9m ZiA9IHN0cnRvdTY0X3N0cmljdChvcHRhcmcsICZlbmRwdHIsIDApOwogCQkJCWlmIChlbmRw dHIgPT0gb3B0YXJnIHx8ICplbmRwdHIgIT0gJ1wwJyB8fCBlcnJubyAhPSAwKQogCQkJCXsK IAkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGFyZ3VtZW50IGZvciBvcHRpb24gJXMiLCAi LU8iKTsKIAkJCQkJcGdfbG9nX2Vycm9yX2hpbnQoIlRyeSBcIiVzIC0taGVscFwiIGZvciBt b3JlIGluZm9ybWF0aW9uLiIsIHByb2duYW1lKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9Ci0J CQkJaWYgKHRtcGk2NCA8IDAgfHwgdG1waTY0ID4gKGludDY0KSBNYXhNdWx0aVhhY3RPZmZz ZXQpCi0JCQkJCXBnX2ZhdGFsKCJtdWx0aXRyYW5zYWN0aW9uIG9mZnNldCAoLU8pIG11c3Qg YmUgYmV0d2VlbiAwIGFuZCAldSIsIE1heE11bHRpWGFjdE9mZnNldCk7CiAKLQkJCQlzZXRf bXhvZmYgPSAoTXVsdGlYYWN0T2Zmc2V0KSB0bXBpNjQ7CiAJCQkJbXhvZmZfZ2l2ZW4gPSB0 cnVlOwogCQkJCWJyZWFrOwogCkBAIC03NDksNyArNzQ2LDcgQEAgUHJpbnRDb250cm9sVmFs dWVzKGJvb2wgZ3Vlc3NlZCkKIAkJICAgQ29udHJvbEZpbGUuY2hlY2tQb2ludENvcHkubmV4 dE9pZCk7CiAJcHJpbnRmKF8oIkxhdGVzdCBjaGVja3BvaW50J3MgTmV4dE11bHRpWGFjdElk OiAgJXVcbiIpLAogCQkgICBDb250cm9sRmlsZS5jaGVja1BvaW50Q29weS5uZXh0TXVsdGkp OwotCXByaW50ZihfKCJMYXRlc3QgY2hlY2twb2ludCdzIE5leHRNdWx0aU9mZnNldDogICV1 XG4iKSwKKwlwcmludGYoXygiTGF0ZXN0IGNoZWNrcG9pbnQncyBOZXh0TXVsdGlPZmZzZXQ6 ICAlIiBQUkl1NjQgIlxuIiksCiAJCSAgIENvbnRyb2xGaWxlLmNoZWNrUG9pbnRDb3B5Lm5l eHRNdWx0aU9mZnNldCk7CiAJcHJpbnRmKF8oIkxhdGVzdCBjaGVja3BvaW50J3Mgb2xkZXN0 WElEOiAgICAgICAgJXVcbiIpLAogCQkgICBDb250cm9sRmlsZS5jaGVja1BvaW50Q29weS5v bGRlc3RYaWQpOwpAQCAtODI1LDcgKzgyMiw3IEBAIFByaW50TmV3Q29udHJvbFZhbHVlcyh2 b2lkKQogCiAJaWYgKG14b2ZmX2dpdmVuKQogCXsKLQkJcHJpbnRmKF8oIk5leHRNdWx0aU9m ZnNldDogICAgICAgICAgICAgICAgICAgICAgJXVcbiIpLAorCQlwcmludGYoXygiTmV4dE11 bHRpT2Zmc2V0OiAgICAgICAgICAgICAgICAgICAgICAlIiBQUkl1NjQgIlxuIiksCiAJCQkg ICBDb250cm9sRmlsZS5jaGVja1BvaW50Q29weS5uZXh0TXVsdGlPZmZzZXQpOwogCX0KIApA QCAtMTIxMCwzICsxMjA3LDIyIEBAIHVzYWdlKHZvaWQpCiAJcHJpbnRmKF8oIlxuUmVwb3J0 IGJ1Z3MgdG8gPCVzPi5cbiIpLCBQQUNLQUdFX0JVR1JFUE9SVCk7CiAJcHJpbnRmKF8oIiVz IGhvbWUgcGFnZTogPCVzPlxuIiksIFBBQ0tBR0VfTkFNRSwgUEFDS0FHRV9VUkwpOwogfQor CisvKiBMaWtlIHN0cnRvdTY0KCksIGJ1dCBuZWdhdGl2ZSB2YWx1ZXMgYXJlIG5vdCBhY2Nl cHRlZC4gKi8KK3N0YXRpYyB1aW50NjQKK3N0cnRvdTY0X3N0cmljdChjb25zdCBjaGFyICpz LCBjaGFyICoqZW5kcHRyLCBpbnQgYmFzZSkKK3sKKwkvKiBza2lwIGxlYWRpbmcgd2hpdGVz cGFjZSAqLworCXdoaWxlIChpc3NwYWNlKCpzKSkKKwkJcysrOworCisJLyogcmVqZWN0IG5l Z2F0aXZlIHZhbHVlcyAqLworCWlmICgqcyA9PSAnLScpCisJeworCQkqZW5kcHRyID0gKGNo YXIgKikgczsKKwkJZXJybm8gPSBFUkFOR0U7CisJCXJldHVybiBVSU5UNjRfTUFYOworCX0K KworCXJldHVybiBzdHJ0b3U2NChzLCBlbmRwdHIsIGJhc2UpOworfQpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19yZXNldHdhbC90LzAwMV9iYXNpYy5wbCBiL3NyYy9iaW4vcGdfcmVzZXR3 YWwvdC8wMDFfYmFzaWMucGwKaW5kZXggOTBlY2I4YWZlMTguLjVhMTc1ZTI4NWQxIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX3Jlc2V0d2FsL3QvMDAxX2Jhc2ljLnBsCisrKyBiL3NyYy9i aW4vcGdfcmVzZXR3YWwvdC8wMDFfYmFzaWMucGwKQEAgLTE0NSw3ICsxNDUsNyBAQCBjb21t YW5kX2ZhaWxzX2xpa2UoCiAJJ2ZhaWxzIHdpdGggaW5jb3JyZWN0IC1PIG9wdGlvbicpOwog Y29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX3Jlc2V0d2FsJywgJy1PJyA9PiAnLTEnLCAk bm9kZS0+ZGF0YV9kaXIgXSwKLQlxci9tdXN0IGJlIGJldHdlZW4gMCBhbmQgNDI5NDk2NzI5 NS8sCisJcXIvZXJyb3I6IGludmFsaWQgYXJndW1lbnQgZm9yIG9wdGlvbiAtTy8sCiAJJ2Zh aWxzIHdpdGggLU8gdmFsdWUgLTEnKTsKICMgLS13YWwtc2Vnc2l6ZQogY29tbWFuZF9mYWls c19saWtlKApAQCAtMjE1LDcgKzIxNSw3IEBAIHB1c2ggQGNtZCwKICAgc3ByaW50ZigiJWQs JWQiLCBoZXgoJGZpbGVzWzBdKSA9PSAwID8gMyA6IGhleCgkZmlsZXNbMF0pLCBoZXgoJGZp bGVzWy0xXSkpOwogCiBAZmlsZXMgPSBnZXRfc2xydV9maWxlcygncGdfbXVsdGl4YWN0L29m ZnNldHMnKTsKLSRtdWx0ID0gMzIgKiAkYmxja3N6IC8gNDsKKyRtdWx0ID0gMzIgKiAkYmxj a3N6IC8gODsKICMgLS1tdWx0aXhhY3QtaWRzIGFyZ3VtZW50IGlzICJuZXcsb2xkIgogcHVz aCBAY21kLAogICAnLS1tdWx0aXhhY3QtaWRzJyA9PiBzcHJpbnRmKCIlZCwlZCIsCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmggYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvbXVsdGl4YWN0LmgKaW5kZXggODJlNGJiOTBkZDUuLjdkOThmZTBmZTMyIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL211bHRpeGFjdC5oCkBAIC0yOCw4ICsyOCw2IEBACiAKICNkZWZpbmUgTXVs dGlYYWN0SWRJc1ZhbGlkKG11bHRpKSAoKG11bHRpKSAhPSBJbnZhbGlkTXVsdGlYYWN0SWQp CiAKLSNkZWZpbmUgTWF4TXVsdGlYYWN0T2Zmc2V0CSgoTXVsdGlYYWN0T2Zmc2V0KSAweEZG RkZGRkZGKQotCiAvKgogICogUG9zc2libGUgbXVsdGl4YWN0IGxvY2sgbW9kZXMgKCJzdGF0 dXMiKS4gIFRoZSBmaXJzdCBmb3VyIG1vZGVzIGFyZSBmb3IKICAqIHR1cGxlIGxvY2tzIChG T1IgS0VZIFNIQVJFLCBGT1IgU0hBUkUsIEZPUiBOTyBLRVkgVVBEQVRFLCBGT1IgVVBEQVRF KTsgdGhlCkBAIC0xNDcsNyArMTQ1LDYgQEAgZXh0ZXJuIHZvaWQgTXVsdGlYYWN0U2V0TmV4 dE1YYWN0KE11bHRpWGFjdElkIG5leHRNdWx0aSwKIGV4dGVybiB2b2lkIE11bHRpWGFjdEFk dmFuY2VOZXh0TVhhY3QoTXVsdGlYYWN0SWQgbWluTXVsdGksCiAJCQkJCQkJCQkgIE11bHRp WGFjdE9mZnNldCBtaW5NdWx0aU9mZnNldCk7CiBleHRlcm4gdm9pZCBNdWx0aVhhY3RBZHZh bmNlT2xkZXN0KE11bHRpWGFjdElkIG9sZGVzdE11bHRpLCBPaWQgb2xkZXN0TXVsdGlEQik7 Ci1leHRlcm4gaW50CU11bHRpWGFjdE1lbWJlckZyZWV6ZVRocmVzaG9sZCh2b2lkKTsKIAog ZXh0ZXJuIHZvaWQgbXVsdGl4YWN0X3R3b3BoYXNlX3JlY292ZXIoRnVsbFRyYW5zYWN0aW9u SWQgZnhpZCwgdWludDE2IGluZm8sCiAJCQkJCQkJCQkgICB2b2lkICpyZWNkYXRhLCB1aW50 MzIgbGVuKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3RfaW50 ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3RfaW50ZXJuYWwuaAppbmRl eCA5YjU2ZGVhZWYzMS4uYjAyMjc3NTllMzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9tdWx0aXhhY3RfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVs dGl4YWN0X2ludGVybmFsLmgKQEAgLTE3LDIxICsxNywxMiBAQAogCiAjaW5jbHVkZSAiYWNj ZXNzL211bHRpeGFjdC5oIgogCi0KIC8qCiAgKiBEZWZpbmVzIGZvciBNdWx0aVhhY3RPZmZz ZXQgcGFnZSBzaXplcy4gIEEgcGFnZSBpcyB0aGUgc2FtZSBCTENLU1ogYXMgaXMKICAqIHVz ZWQgZXZlcnl3aGVyZSBlbHNlIGluIFBvc3RncmVzLgotICoKLSAqIE5vdGU6IGJlY2F1c2Ug TXVsdGlYYWN0T2Zmc2V0cyBhcmUgMzIgYml0cyBhbmQgd3JhcCBhcm91bmQgYXQgMHhGRkZG RkZGRiwKLSAqIE11bHRpWGFjdCBwYWdlIG51bWJlcmluZyBhbHNvIHdyYXBzIGFyb3VuZCBh dAotICogMHhGRkZGRkZGRi9NVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRSwgYW5kIHNlZ21l bnQgbnVtYmVyaW5nIGF0Ci0gKiAweEZGRkZGRkZGL01VTFRJWEFDVF9PRkZTRVRTX1BFUl9Q QUdFL1NMUlVfUEFHRVNfUEVSX1NFR01FTlQuICBXZSBuZWVkCi0gKiB0YWtlIG5vIGV4cGxp Y2l0IG5vdGljZSBvZiB0aGF0IGZhY3QgaW4gdGhpcyBtb2R1bGUsIGV4Y2VwdCB3aGVuIGNv bXBhcmluZwotICogc2VnbWVudCBhbmQgcGFnZSBudW1iZXJzIGluIFRydW5jYXRlTXVsdGlY YWN0IChzZWUKLSAqIE11bHRpWGFjdE9mZnNldFBhZ2VQcmVjZWRlcykuCiAgKi8KIAotLyog V2UgbmVlZCBmb3VyIGJ5dGVzIHBlciBvZmZzZXQgKi8KKy8qIFdlIG5lZWQgOCBieXRlcyBw ZXIgb2Zmc2V0ICovCiAjZGVmaW5lIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFIChCTENL U1ogLyBzaXplb2YoTXVsdGlYYWN0T2Zmc2V0KSkKIAogc3RhdGljIGlubGluZSBpbnQ2NApA QCAtODAsMTkgKzcxLDYgQEAgTXVsdGlYYWN0SWRUb09mZnNldFNlZ21lbnQoTXVsdGlYYWN0 SWQgbXVsdGkpCiAjZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFCVwKIAkoTVVM VElYQUNUX01FTUJFUkdST1VQU19QRVJfUEFHRSAqIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9N RU1CRVJHUk9VUCkKIAotLyoKLSAqIEJlY2F1c2UgdGhlIG51bWJlciBvZiBpdGVtcyBwZXIg cGFnZSBpcyBub3QgYSBkaXZpc29yIG9mIHRoZSBsYXN0IGl0ZW0KLSAqIG51bWJlciAobWVt YmVyIDB4RkZGRkZGRkYpLCB0aGUgbGFzdCBzZWdtZW50IGRvZXMgbm90IHVzZSB0aGUgbWF4 aW11bSBudW1iZXIKLSAqIG9mIHBhZ2VzLCBhbmQgbW9yZW92ZXIgdGhlIGxhc3QgdXNlZCBw YWdlIHRoZXJlaW4gZG9lcyBub3QgdXNlIHRoZSBzYW1lCi0gKiBudW1iZXIgb2YgaXRlbXMg YXMgcHJldmlvdXMgcGFnZXMuICAoQW5vdGhlciB3YXkgdG8gc2F5IGl0IGlzIHRoYXQgdGhl Ci0gKiAweEZGRkZGRkZGIG1lbWJlciBpcyBzb21ld2hlcmUgaW4gdGhlIG1pZGRsZSBvZiB0 aGUgbGFzdCBwYWdlLCBzbyB0aGUgcGFnZQotICogaGFzIHNvbWUgZW1wdHkgc3BhY2UgYWZ0 ZXIgdGhhdCBpdGVtLikKLSAqCi0gKiBUaGlzIGNvbnN0YW50IGlzIHRoZSBudW1iZXIgb2Yg bWVtYmVycyBpbiB0aGUgbGFzdCBwYWdlIG9mIHRoZSBsYXN0IHNlZ21lbnQuCi0gKi8KLSNk ZWZpbmUgTUFYX01FTUJFUlNfSU5fTEFTVF9NRU1CRVJTX1BBR0UgXAotCQkoKHVpbnQzMikg KCgweEZGRkZGRkZGICUgTVVMVElYQUNUX01FTUJFUlNfUEVSX1BBR0UpICsgMSkpCi0KIC8q IHBhZ2UgaW4gd2hpY2ggYSBtZW1iZXIgaXMgdG8gYmUgZm91bmQgKi8KIHN0YXRpYyBpbmxp bmUgaW50NjQKIE1YT2Zmc2V0VG9NZW1iZXJQYWdlKE11bHRpWGFjdE9mZnNldCBvZmZzZXQp CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jLmggYi9zcmMvaW5jbHVkZS9jLmgKaW5kZXgg NzU3ZGZmZjQ3ODIuLmJjOTJhNmY0NTY1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jLmgK KysrIGIvc3JjL2luY2x1ZGUvYy5oCkBAIC02NzAsNyArNjcwLDcgQEAgdHlwZWRlZiB1aW50 MzIgU3ViVHJhbnNhY3Rpb25JZDsKIC8qIE11bHRpWGFjdElkIG11c3QgYmUgZXF1aXZhbGVu dCB0byBUcmFuc2FjdGlvbklkLCB0byBmaXQgaW4gdF94bWF4ICovCiB0eXBlZGVmIFRyYW5z YWN0aW9uSWQgTXVsdGlYYWN0SWQ7CiAKLXR5cGVkZWYgdWludDMyIE11bHRpWGFjdE9mZnNl dDsKK3R5cGVkZWYgdWludDY0IE11bHRpWGFjdE9mZnNldDsKIAogdHlwZWRlZiB1aW50MzIg Q29tbWFuZElkOwogCi0tIAoyLjQ3LjMKCg== --------------D5Uqc0qFgdUSc5DsuhKtaq91 Content-Type: text/x-patch; charset=UTF-8; name="v25-0003-Add-pg_upgrade-for-64-bit-multixact-offsets.patch" Content-Disposition: attachment; filename*0="v25-0003-Add-pg_upgrade-for-64-bit-multixact-offsets.patch" Content-Transfer-Encoding: base64 RnJvbSAwMmExODYzZjliYWRjY2U0YTdkOTc3MTQ5MDUzMzM0YWZmZjRiNTFhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMTIgTm92IDIwMjUgMjE6NDc6NDQgKzAyMDAK U3ViamVjdDogW1BBVENIIHYyNSAwMy8xMF0gQWRkIHBnX3VwZ3JhZGUgZm9yIDY0IGJpdCBt dWx0aXhhY3Qgb2Zmc2V0cwoKQXV0aG9yOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5j b20+CkF1dGhvcjogSGVpa2tpIExpbm5ha2FuZ2FzIDxobGlubmFrYUBpa2kuZmk+Ci0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgfCAgNTYgLS0tLS0KIHNy Yy9iaW4vcGdfdXBncmFkZS9NYWtlZmlsZSAgICAgICAgICAgIHwgICAzICsKIHNyYy9iaW4v cGdfdXBncmFkZS9tZXNvbi5idWlsZCAgICAgICAgIHwgICAzICsKIHNyYy9iaW4vcGdfdXBn cmFkZS9tdWx0aXhhY3RfbmV3LmMgICAgIHwgMTAxICsrKysrKysrKwogc3JjL2Jpbi9wZ191 cGdyYWRlL211bHRpeGFjdF9uZXcuaCAgICAgfCAgMjMgKysKIHNyYy9iaW4vcGdfdXBncmFk ZS9tdWx0aXhhY3Rfb2xkLmMgICAgIHwgMjk3ICsrKysrKysrKysrKysrKysrKysrKysrKysK IHNyYy9iaW4vcGdfdXBncmFkZS9tdWx0aXhhY3Rfb2xkLmggICAgIHwgIDI5ICsrKwogc3Jj L2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYyAgICAgICAgfCAxMDggKysrKysrKystCiBz cmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oICAgICAgICB8ICAgNSArCiBzcmMvYmlu L3BnX3VwZ3JhZGUvc2xydV9pby5jICAgICAgICAgICB8IDI0MiArKysrKysrKysrKysrKysr KysrKwogc3JjL2Jpbi9wZ191cGdyYWRlL3NscnVfaW8uaCAgICAgICAgICAgfCAgNTIgKysr KysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgIHwgICAzICsKIDEy IGZpbGVzIGNoYW5nZWQsIDg2MCBpbnNlcnRpb25zKCspLCA2MiBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0X25ldy5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ191cGdyYWRlL211bHRpeGFjdF9uZXcuaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iaW4vcGdfdXBncmFkZS9tdWx0aXhhY3Rfb2xkLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0X29sZC5o CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ191cGdyYWRlL3NscnVfaW8uYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy9iaW4vcGdfdXBncmFkZS9zbHJ1X2lvLmgKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCmluZGV4IDM0YTc0NWMwN2JlLi5lMDMy M2VjMTAxNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4 YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKQEAg LTE4MjQsNDggKzE4MjQsNiBAQCBCb290U3RyYXBNdWx0aVhhY3Qodm9pZCkKIAlTaW1wbGVM cnVaZXJvQW5kV3JpdGVQYWdlKE11bHRpWGFjdE1lbWJlckN0bCwgMCk7CiB9CiAKLS8qCi0g KiBNYXliZUV4dGVuZE9mZnNldFNscnUKLSAqCQlFeHRlbmQgdGhlIG9mZnNldHMgU0xSVSBh cmVhLCBpZiBuZWNlc3NhcnkKLSAqCi0gKiBBZnRlciBhIGJpbmFyeSB1cGdyYWRlIGZyb20g PD0gOS4yLCB0aGUgcGdfbXVsdGl4YWN0L29mZnNldHMgU0xSVSBhcmVhIG1pZ2h0Ci0gKiBj b250YWluIGZpbGVzIHRoYXQgYXJlIHNob3J0ZXIgdGhhbiBuZWNlc3Nhcnk7IHRoaXMgd291 bGQgb2NjdXIgaWYgdGhlIG9sZAotICogaW5zdGFsbGF0aW9uIGhhZCB1c2VkIG11bHRpeGFj dHMgYmV5b25kIHRoZSBmaXJzdCBwYWdlIChmaWxlcyBjYW5ub3QgYmUKLSAqIGNvcGllZCwg YmVjYXVzZSB0aGUgb24tZGlzayByZXByZXNlbnRhdGlvbiBpcyBkaWZmZXJlbnQpLiAgcGdf dXBncmFkZSB3b3VsZAotICogdXBkYXRlIHBnX2NvbnRyb2wgdG8gc2V0IHRoZSBuZXh0IG9m ZnNldCB2YWx1ZSB0byBiZSBhdCB0aGF0IHBvc2l0aW9uLCBzbwotICogdGhhdCB0dXBsZXMg bWFya2VkIGFzIGxvY2tlZCBieSBzdWNoIE11bHRpWGFjdHMgd291bGQgYmUgc2VlbiBhcyB2 aXNpYmxlCi0gKiB3aXRob3V0IGhhdmluZyB0byBjb25zdWx0IG11bHRpeGFjdC4gIEhvd2V2 ZXIsIHRyeWluZyB0byBjcmVhdGUgYW5kIHVzZSBhCi0gKiBuZXcgTXVsdGlYYWN0SWQgd291 bGQgcmVzdWx0IGluIGFuIGVycm9yIGJlY2F1c2UgdGhlIHBhZ2Ugb24gd2hpY2ggdGhlIG5l dwotICogdmFsdWUgd291bGQgcmVzaWRlIGRvZXMgbm90IGV4aXN0LiAgVGhpcyByb3V0aW5l IGlzIGluIGNoYXJnZSBvZiBjcmVhdGluZwotICogc3VjaCBwYWdlcy4KLSAqLwotc3RhdGlj IHZvaWQKLU1heWJlRXh0ZW5kT2Zmc2V0U2xydSh2b2lkKQotewotCWludDY0CQlwYWdlbm87 Ci0JTFdMb2NrCSAgICpsb2NrOwotCi0JcGFnZW5vID0gTXVsdGlYYWN0SWRUb09mZnNldFBh Z2UoTXVsdGlYYWN0U3RhdGUtPm5leHRNWGFjdCk7Ci0JbG9jayA9IFNpbXBsZUxydUdldEJh bmtMb2NrKE11bHRpWGFjdE9mZnNldEN0bCwgcGFnZW5vKTsKLQotCUxXTG9ja0FjcXVpcmUo bG9jaywgTFdfRVhDTFVTSVZFKTsKLQotCWlmICghU2ltcGxlTHJ1RG9lc1BoeXNpY2FsUGFn ZUV4aXN0KE11bHRpWGFjdE9mZnNldEN0bCwgcGFnZW5vKSkKLQl7Ci0JCWludAkJCXNsb3Ru bzsKLQotCQkvKgotCQkgKiBGb3J0dW5hdGVseSBmb3IgdXMsIFNpbXBsZUxydVdyaXRlUGFn ZSBpcyBhbHJlYWR5IHByZXBhcmVkIHRvIGRlYWwKLQkJICogd2l0aCBjcmVhdGluZyBhIG5l dyBzZWdtZW50IGZpbGUgZXZlbiBpZiB0aGUgcGFnZSB3ZSdyZSB3cml0aW5nIGlzCi0JCSAq IG5vdCB0aGUgZmlyc3QgaW4gaXQsIHNvIHRoaXMgaXMgZW5vdWdoLgotCQkgKi8KLQkJc2xv dG5vID0gU2ltcGxlTHJ1WmVyb1BhZ2UoTXVsdGlYYWN0T2Zmc2V0Q3RsLCBwYWdlbm8pOwot CQlTaW1wbGVMcnVXcml0ZVBhZ2UoTXVsdGlYYWN0T2Zmc2V0Q3RsLCBzbG90bm8pOwotCX0K LQotCUxXTG9ja1JlbGVhc2UobG9jayk7Ci19Ci0KIC8qCiAgKiBUaGlzIG11c3QgYmUgY2Fs bGVkIE9OQ0UgZHVyaW5nIHBvc3RtYXN0ZXIgb3Igc3RhbmRhbG9uZS1iYWNrZW5kIHN0YXJ0 dXAuCiAgKgpAQCAtMjA1OCwyMCArMjAxNiw2IEBAIE11bHRpWGFjdFNldE5leHRNWGFjdChN dWx0aVhhY3RJZCBuZXh0TXVsdGksCiAJTXVsdGlYYWN0U3RhdGUtPm5leHRNWGFjdCA9IG5l eHRNdWx0aTsKIAlNdWx0aVhhY3RTdGF0ZS0+bmV4dE9mZnNldCA9IG5leHRNdWx0aU9mZnNl dDsKIAlMV0xvY2tSZWxlYXNlKE11bHRpWGFjdEdlbkxvY2spOwotCi0JLyoKLQkgKiBEdXJp bmcgYSBiaW5hcnkgdXBncmFkZSwgbWFrZSBzdXJlIHRoYXQgdGhlIG9mZnNldHMgU0xSVSBp cyBsYXJnZQotCSAqIGVub3VnaCB0byBjb250YWluIHRoZSBuZXh0IHZhbHVlIHRoYXQgd291 bGQgYmUgY3JlYXRlZC4KLQkgKgotCSAqIFdlIG5lZWQgdG8gZG8gdGhpcyBwcmV0dHkgZWFy bHkgZHVyaW5nIHRoZSBmaXJzdCBzdGFydHVwIGluIGJpbmFyeQotCSAqIHVwZ3JhZGUgbW9k ZTogYmVmb3JlIFN0YXJ0dXBNdWx0aVhhY3QoKSBpbiBmYWN0LCBiZWNhdXNlIHRoaXMgcm91 dGluZQotCSAqIGlzIGNhbGxlZCBldmVuIGJlZm9yZSB0aGF0IGJ5IFN0YXJ0dXBYTE9HKCku ICBBbmQgd2UgY2FuJ3QgZG8gaXQKLQkgKiBlYXJsaWVyIHRoYW4gYXQgdGhpcyBwb2ludCwg YmVjYXVzZSBkdXJpbmcgdGhhdCBmaXJzdCBjYWxsIG9mIHRoaXMKLQkgKiByb3V0aW5lIHdl IGRldGVybWluZSB0aGUgTXVsdGlYYWN0U3RhdGUtPm5leHRNWGFjdCB2YWx1ZSB0aGF0Ci0J ICogTWF5YmVFeHRlbmRPZmZzZXRTbHJ1IG5lZWRzLgotCSAqLwotCWlmIChJc0JpbmFyeVVw Z3JhZGUpCi0JCU1heWJlRXh0ZW5kT2Zmc2V0U2xydSgpOwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ191cGdyYWRlL01ha2VmaWxlIGIvc3JjL2Jpbi9wZ191cGdyYWRlL01h a2VmaWxlCmluZGV4IDY5ZmNmNTkzY2FlLi40Mjk5NWQ1M2IwYiAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ191cGdyYWRlL01ha2VmaWxlCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS9NYWtl ZmlsZQpAQCAtMTgsMTEgKzE4LDE0IEBAIE9CSlMgPSBcCiAJZmlsZS5vIFwKIAlmdW5jdGlv bi5vIFwKIAlpbmZvLm8gXAorCW11bHRpeGFjdF9uZXcubyBcCisJbXVsdGl4YWN0X29sZC5v IFwKIAlvcHRpb24ubyBcCiAJcGFyYWxsZWwubyBcCiAJcGdfdXBncmFkZS5vIFwKIAlyZWxm aWxlbnVtYmVyLm8gXAogCXNlcnZlci5vIFwKKwlzbHJ1X2lvLm8gXAogCXRhYmxlc3BhY2Uu byBcCiAJdGFzay5vIFwKIAl1dGlsLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdy YWRlL21lc29uLmJ1aWxkIGIvc3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkCmluZGV4 IGFjOTkyZjBkMTRiLi4zZTQ2YzQ1MTJjZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdy YWRlL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS9tZXNvbi5idWlsZApA QCAtOCwxMSArOCwxNCBAQCBwZ191cGdyYWRlX3NvdXJjZXMgPSBmaWxlcygKICAgJ2ZpbGUu YycsCiAgICdmdW5jdGlvbi5jJywKICAgJ2luZm8uYycsCisgICdtdWx0aXhhY3RfbmV3LmMn LAorICAnbXVsdGl4YWN0X29sZC5jJywKICAgJ29wdGlvbi5jJywKICAgJ3BhcmFsbGVsLmMn LAogICAncGdfdXBncmFkZS5jJywKICAgJ3JlbGZpbGVudW1iZXIuYycsCiAgICdzZXJ2ZXIu YycsCisgICdzbHJ1X2lvLmMnLAogICAndGFibGVzcGFjZS5jJywKICAgJ3Rhc2suYycsCiAg ICd1dGlsLmMnLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL211bHRpeGFjdF9u ZXcuYyBiL3NyYy9iaW4vcGdfdXBncmFkZS9tdWx0aXhhY3RfbmV3LmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjgyODRhMjAxNWZjCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL211bHRpeGFjdF9uZXcuYwpAQCAtMCwwICsxLDEw MSBAQAorLyoKKyAqIG11bHRpeGFjdF9uZXcuYworICoKKyAqIEZ1bmN0aW9ucyB0byB3cml0 ZSBtdWx0aXhhY3RzIGluIHRoZSB2MTkgZm9ybWF0IHdpdGggNjQtYml0CisgKiBNdWx0aVhh Y3RPZmZzZXRzCisgKgorICogQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAorICogc3JjL2Jpbi9wZ191cGdyYWRlL211bHRpeGFjdF9u ZXcuYworICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgorCisjaW5jbHVkZSAiYWNj ZXNzL211bHRpeGFjdF9pbnRlcm5hbC5oIgorI2luY2x1ZGUgIm11bHRpeGFjdF9uZXcuaCIK KworTXVsdGlYYWN0V3JpdGVyICoKK0FsbG9jTXVsdGlYYWN0V3JpdGUoY29uc3QgY2hhciAq cGdkYXRhLCBNdWx0aVhhY3RJZCBmaXJzdE11bHRpLAorCQkJCQlNdWx0aVhhY3RPZmZzZXQg Zmlyc3RPZmZzZXQpCit7CisJTXVsdGlYYWN0V3JpdGVyICpzdGF0ZSA9IHBnX21hbGxvYyhz aXplb2YoKnN0YXRlKSk7CisJY2hhcgkJZGlyW01BWFBHUEFUSF0gPSB7MH07CisKKwlwZ19z cHJpbnRmKGRpciwgIiVzL3BnX211bHRpeGFjdC9vZmZzZXRzIiwgcGdkYXRhKTsKKwlzdGF0 ZS0+b2Zmc2V0ID0gQWxsb2NTbHJ1V3JpdGUoZGlyLCBmYWxzZSk7CisJU2xydVdyaXRlU3dp dGNoUGFnZShzdGF0ZS0+b2Zmc2V0LCBNdWx0aVhhY3RJZFRvT2Zmc2V0UGFnZShmaXJzdE11 bHRpKSk7CisKKwlwZ19zcHJpbnRmKGRpciwgIiVzL3BnX211bHRpeGFjdC9tZW1iZXJzIiwg cGdkYXRhKTsKKwlzdGF0ZS0+bWVtYmVycyA9IEFsbG9jU2xydVdyaXRlKGRpciwgdHJ1ZSAv KiB1c2UgbG9uZyBzZWdtZW50IG5hbWVzICovICk7CisJU2xydVdyaXRlU3dpdGNoUGFnZShz dGF0ZS0+bWVtYmVycywgTVhPZmZzZXRUb01lbWJlclBhZ2UoZmlyc3RPZmZzZXQpKTsKKwor CXJldHVybiBzdGF0ZTsKK30KKworLyoKKyAqIFdyaXRlIGEgbmV3IG11bHRpeGFjdCB3aXRo IG1lbWJlcnMuCisgKgorICogU2ltcGxpZmllZCB2ZXJzaW9uIG9mIHRoZSBjb3JyZXNwb2Rp bmcgc2VydmVyIGZ1bmN0aW9uLCBoZW5jZSB0aGUgbmFtZS4KKyAqLwordm9pZAorUmVjb3Jk TmV3TXVsdGlYYWN0KE11bHRpWGFjdFdyaXRlciAqc3RhdGUsIE11bHRpWGFjdE9mZnNldCBv ZmZzZXQsCisJCQkJICAgTXVsdGlYYWN0SWQgbXVsdGksIGludCBubWVtYmVycywgTXVsdGlY YWN0TWVtYmVyICptZW1iZXJzKQoreworCWludDY0CQlwYWdlbm87CisJaW50NjQJCXByZXZf cGFnZW5vOworCWludAkJCWVudHJ5bm87CisJY2hhcgkgICAqYnVmOworCU11bHRpWGFjdE9m ZnNldCAqb2ZmcHRyOworCisJcGFnZW5vID0gTXVsdGlYYWN0SWRUb09mZnNldFBhZ2UobXVs dGkpOworCWVudHJ5bm8gPSBNdWx0aVhhY3RJZFRvT2Zmc2V0RW50cnkobXVsdGkpOworCisJ LyogU3RvcmUgdGhlIG9mZnNldCAqLworCWJ1ZiA9IFNscnVXcml0ZVN3aXRjaFBhZ2Uoc3Rh dGUtPm9mZnNldCwgcGFnZW5vKTsKKwlvZmZwdHIgPSAoTXVsdGlYYWN0T2Zmc2V0ICopIGJ1 ZjsKKwlvZmZwdHJbZW50cnlub10gPSBvZmZzZXQ7CisKKwkvKiBTdG9yZSB0aGUgbWVtYmVy cyAqLworCXByZXZfcGFnZW5vID0gLTE7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBubWVtYmVy czsgaSsrLCBvZmZzZXQrKykKKwl7CisJCVRyYW5zYWN0aW9uSWQgKm1lbWJlcnB0cjsKKwkJ dWludDMyCSAgICpmbGFnc3B0cjsKKwkJdWludDMyCQlmbGFnc3ZhbDsKKwkJaW50CQkJYnNo aWZ0OworCQlpbnQJCQlmbGFnc29mZjsKKwkJaW50CQkJbWVtYmVyb2ZmOworCisJCUFzc2Vy dChtZW1iZXJzW2ldLnN0YXR1cyA8PSBNdWx0aVhhY3RTdGF0dXNVcGRhdGUpOworCisJCXBh Z2VubyA9IE1YT2Zmc2V0VG9NZW1iZXJQYWdlKG9mZnNldCk7CisJCW1lbWJlcm9mZiA9IE1Y T2Zmc2V0VG9NZW1iZXJPZmZzZXQob2Zmc2V0KTsKKwkJZmxhZ3NvZmYgPSBNWE9mZnNldFRv RmxhZ3NPZmZzZXQob2Zmc2V0KTsKKwkJYnNoaWZ0ID0gTVhPZmZzZXRUb0ZsYWdzQml0U2hp ZnQob2Zmc2V0KTsKKworCQlpZiAocGFnZW5vICE9IHByZXZfcGFnZW5vKQorCQl7CisJCQli dWYgPSBTbHJ1V3JpdGVTd2l0Y2hQYWdlKHN0YXRlLT5tZW1iZXJzLCBwYWdlbm8pOworCQkJ cHJldl9wYWdlbm8gPSBwYWdlbm87CisJCX0KKworCQltZW1iZXJwdHIgPSAoVHJhbnNhY3Rp b25JZCAqKSAoYnVmICsgbWVtYmVyb2ZmKTsKKworCQkqbWVtYmVycHRyID0gbWVtYmVyc1tp XS54aWQ7CisKKwkJZmxhZ3NwdHIgPSAodWludDMyICopIChidWYgKyBmbGFnc29mZik7CisK KwkJZmxhZ3N2YWwgPSAqZmxhZ3NwdHI7CisJCWZsYWdzdmFsICY9IH4oKCgxIDw8IE1YQUNU X01FTUJFUl9CSVRTX1BFUl9YQUNUKSAtIDEpIDw8IGJzaGlmdCk7CisJCWZsYWdzdmFsIHw9 IChtZW1iZXJzW2ldLnN0YXR1cyA8PCBic2hpZnQpOworCQkqZmxhZ3NwdHIgPSBmbGFnc3Zh bDsKKwl9Cit9CisKK3ZvaWQKK0ZyZWVNdWx0aVhhY3RXcml0ZShNdWx0aVhhY3RXcml0ZXIg KnN0YXRlKQoreworCUZyZWVTbHJ1V3JpdGUoc3RhdGUtPm9mZnNldCk7CisJRnJlZVNscnVX cml0ZShzdGF0ZS0+bWVtYmVycyk7CisKKwlwZnJlZShzdGF0ZSk7Cit9CmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0X25ldy5oIGIvc3JjL2Jpbi9wZ191cGdy YWRlL211bHRpeGFjdF9uZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uZjY2ZTZhZjdlNDUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX3VwZ3Jh ZGUvbXVsdGl4YWN0X25ldy5oCkBAIC0wLDAgKzEsMjMgQEAKKy8qCisgKiBtdWx0aXhhY3Rf bmV3LmgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisgKiBzcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0X25ldy5o CisgKi8KKyNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCisKKyNpbmNsdWRlICJzbHJ1 X2lvLmgiCisKK3R5cGVkZWYgc3RydWN0IE11bHRpWGFjdFdyaXRlcgoreworCVNscnVTZWdT dGF0ZSAqb2Zmc2V0OworCVNscnVTZWdTdGF0ZSAqbWVtYmVyczsKK30gTXVsdGlYYWN0V3Jp dGVyOworCitleHRlcm4gTXVsdGlYYWN0V3JpdGVyICpBbGxvY011bHRpWGFjdFdyaXRlKGNv bnN0IGNoYXIgKnBnZGF0YSwKKwkJCQkJCQkJCQkJTXVsdGlYYWN0SWQgZmlyc3RNdWx0aSwK KwkJCQkJCQkJCQkJTXVsdGlYYWN0T2Zmc2V0IGZpcnN0T2Zmc2V0KTsKK2V4dGVybiB2b2lk IFJlY29yZE5ld011bHRpWGFjdChNdWx0aVhhY3RXcml0ZXIgKnN0YXRlLCBNdWx0aVhhY3RP ZmZzZXQgb2Zmc2V0LAorCQkJCQkJCSAgIE11bHRpWGFjdElkIG11bHRpLCBpbnQgbm1lbWJl cnMsCisJCQkJCQkJICAgTXVsdGlYYWN0TWVtYmVyICptZW1iZXJzKTsKK2V4dGVybiB2b2lk IEZyZWVNdWx0aVhhY3RXcml0ZShNdWx0aVhhY3RXcml0ZXIgKndyaXRlcik7CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0X29sZC5jIGIvc3JjL2Jpbi9wZ191 cGdyYWRlL211bHRpeGFjdF9vbGQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uN2JmN2RiNGIwMDkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX3Vw Z3JhZGUvbXVsdGl4YWN0X29sZC5jCkBAIC0wLDAgKzEsMjk3IEBACisvKgorICogbXVsdGl4 YWN0X29sZC5jCisgKgorICogRnVuY3Rpb25zIHRvIHJlYWQgcHJlLXYxOSBtdWx0aXhhY3Rz CisgKgorICogQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorICogc3JjL2Jpbi9wZ191cGdyYWRlL211bHRpeGFjdF9vbGQuYworICov CisKKyNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgorCisjaW5jbHVkZSAibXVsdGl4YWN0X29s ZC5oIgorI2luY2x1ZGUgInBnX3VwZ3JhZGUuaCIKKworLyoKKyAqIE5PVEU6IGJlbG93IGFy ZSBhIGJ1bmNoIG9mIGRlZmluaXRpb25zIHRoYXQgYXJlIGNvcHktcGFzdGVkIGZyb20KKyAq IG11bHRpeGFjdC5jIGZyb20gdmVyc2lvbiAxOC4gIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMg dGhhdCB3ZSB1c2UgdGhlCisgKiBPbGRNdWx0aVhhY3RPZmZzZXQgdHlwZSBlcXVhbCB0byB1 aW50MzIgaW5zdGVhZCBvZiBNdWx0aVhhY3RPZmZzZXQgd2hpY2gKKyAqIGJlY2FtZSB1aW50 NjQuCisgKi8KKworLyogV2UgbmVlZCBmb3VyIGJ5dGVzIHBlciBvZmZzZXQgYW5kIDggYnl0 ZXMgcGVyIGJhc2UgZm9yIGVhY2ggcGFnZS4gKi8KKyNkZWZpbmUgTVVMVElYQUNUX09GRlNF VFNfUEVSX1BBR0UgKEJMQ0tTWiAvIHNpemVvZihPbGRNdWx0aVhhY3RPZmZzZXQpKQorCitz dGF0aWMgaW5saW5lIGludDY0CitNdWx0aVhhY3RJZFRvT2Zmc2V0UGFnZShNdWx0aVhhY3RJ ZCBtdWx0aSkKK3sKKwlyZXR1cm4gbXVsdGkgLyBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFH RTsKK30KKworc3RhdGljIGlubGluZSBpbnQKK011bHRpWGFjdElkVG9PZmZzZXRFbnRyeShN dWx0aVhhY3RJZCBtdWx0aSkKK3sKKwlyZXR1cm4gbXVsdGkgJSBNVUxUSVhBQ1RfT0ZGU0VU U19QRVJfUEFHRTsKK30KKworLyoKKyAqIFRoZSBzaXR1YXRpb24gZm9yIG1lbWJlcnMgaXMg YSBiaXQgbW9yZSBjb21wbGV4OiB3ZSBzdG9yZSBvbmUgYnl0ZSBvZgorICogYWRkaXRpb25h bCBmbGFnIGJpdHMgZm9yIGVhY2ggVHJhbnNhY3Rpb25JZC4gIFRvIGRvIHRoaXMgd2l0aG91 dCBnZXR0aW5nCisgKiBpbnRvIGFsaWdubWVudCBpc3N1ZXMsIHdlIHN0b3JlIGZvdXIgYnl0 ZXMgb2YgZmxhZ3MsIGFuZCB0aGVuIHRoZQorICogY29ycmVzcG9uZGluZyA0IFhpZHMuICBF YWNoIHN1Y2ggNS13b3JkICgyMC1ieXRlKSBzZXQgd2UgY2FsbCBhICJncm91cCIsIGFuZAor ICogYXJlIHN0b3JlZCBhcyBhIHdob2xlIGluIHBhZ2VzLiAgVGh1cywgd2l0aCA4a0IgQkxD S1NaLCB3ZSBrZWVwIDQwOSBncm91cHMKKyAqIHBlciBwYWdlLiAgVGhpcyB3YXN0ZXMgMTIg Ynl0ZXMgcGVyIHBhZ2UsIGJ1dCB0aGF0J3MgT0sgLS0gc2ltcGxpY2l0eSAoYW5kCisgKiBw ZXJmb3JtYW5jZSkgdHJ1bXBzIHNwYWNlIGVmZmljaWVuY3kgaGVyZS4KKyAqCisgKiBOb3Rl IHRoYXQgdGhlICJvZmZzZXQiIG1hY3JvcyB3b3JrIHdpdGggYnl0ZSBvZmZzZXQsIG5vdCBh cnJheSBpbmRleGVzLCBzbworICogYXJpdGhtZXRpYyBtdXN0IGJlIGRvbmUgdXNpbmcgImNo YXIgKiIgcG9pbnRlcnMuCisgKi8KKy8qIFdlIG5lZWQgZWlnaHQgYml0cyBwZXIgeGFjdCwg c28gb25lIHhhY3QgZml0cyBpbiBhIGJ5dGUgKi8KKyNkZWZpbmUgTVhBQ1RfTUVNQkVSX0JJ VFNfUEVSX1hBQ1QJCQk4CisjZGVmaW5lIE1YQUNUX01FTUJFUl9GTEFHU19QRVJfQllURQkJ CTEKKyNkZWZpbmUgTVhBQ1RfTUVNQkVSX1hBQ1RfQklUTUFTSwkoKDEgPDwgTVhBQ1RfTUVN QkVSX0JJVFNfUEVSX1hBQ1QpIC0gMSkKKworLyogaG93IG1hbnkgZnVsbCBieXRlcyBvZiBm bGFncyBhcmUgdGhlcmUgaW4gYSBncm91cD8gKi8KKyNkZWZpbmUgTVVMVElYQUNUX0ZMQUdC WVRFU19QRVJfR1JPVVAJCTQKKyNkZWZpbmUgTVVMVElYQUNUX01FTUJFUlNfUEVSX01FTUJF UkdST1VQCVwKKwkoTVVMVElYQUNUX0ZMQUdCWVRFU19QRVJfR1JPVVAgKiBNWEFDVF9NRU1C RVJfRkxBR1NfUEVSX0JZVEUpCisvKiBzaXplIGluIGJ5dGVzIG9mIGEgY29tcGxldGUgZ3Jv dXAgKi8KKyNkZWZpbmUgTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkUgXAorCShzaXplb2Yo VHJhbnNhY3Rpb25JZCkgKiBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfTUVNQkVSR1JPVVAgKyBN VUxUSVhBQ1RfRkxBR0JZVEVTX1BFUl9HUk9VUCkKKyNkZWZpbmUgTVVMVElYQUNUX01FTUJF UkdST1VQU19QRVJfUEFHRSAoQkxDS1NaIC8gTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkUp CisjZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFCVwKKwkoTVVMVElYQUNUX01F TUJFUkdST1VQU19QRVJfUEFHRSAqIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9NRU1CRVJHUk9V UCkKKworLyogcGFnZSBpbiB3aGljaCBhIG1lbWJlciBpcyB0byBiZSBmb3VuZCAqLworc3Rh dGljIGlubGluZSBpbnQ2NAorTVhPZmZzZXRUb01lbWJlclBhZ2UoT2xkTXVsdGlYYWN0T2Zm c2V0IG9mZnNldCkKK3sKKwlyZXR1cm4gb2Zmc2V0IC8gTVVMVElYQUNUX01FTUJFUlNfUEVS X1BBR0U7Cit9CisKKy8qIExvY2F0aW9uIChieXRlIG9mZnNldCB3aXRoaW4gcGFnZSkgb2Yg ZmxhZyB3b3JkIGZvciBhIGdpdmVuIG1lbWJlciAqLworc3RhdGljIGlubGluZSBpbnQKK01Y T2Zmc2V0VG9GbGFnc09mZnNldChNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0KQoreworCU9sZE11 bHRpWGFjdE9mZnNldCBncm91cCA9IG9mZnNldCAvIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9N RU1CRVJHUk9VUDsKKwlpbnQJCQlncm91cG9ucGcgPSBncm91cCAlIE1VTFRJWEFDVF9NRU1C RVJHUk9VUFNfUEVSX1BBR0U7CisJaW50CQkJYnl0ZW9mZiA9IGdyb3Vwb25wZyAqIE1VTFRJ WEFDVF9NRU1CRVJHUk9VUF9TSVpFOworCisJcmV0dXJuIGJ5dGVvZmY7Cit9CisKKy8qIExv Y2F0aW9uIChieXRlIG9mZnNldCB3aXRoaW4gcGFnZSkgb2YgVHJhbnNhY3Rpb25JZCBvZiBn aXZlbiBtZW1iZXIgKi8KK3N0YXRpYyBpbmxpbmUgaW50CitNWE9mZnNldFRvTWVtYmVyT2Zm c2V0KE9sZE11bHRpWGFjdE9mZnNldCBvZmZzZXQpCit7CisJaW50CQkJbWVtYmVyX2luX2dy b3VwID0gb2Zmc2V0ICUgTVVMVElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQOworCisJ cmV0dXJuIE1YT2Zmc2V0VG9GbGFnc09mZnNldChvZmZzZXQpICsKKwkJTVVMVElYQUNUX0ZM QUdCWVRFU19QRVJfR1JPVVAgKworCQltZW1iZXJfaW5fZ3JvdXAgKiBzaXplb2YoVHJhbnNh Y3Rpb25JZCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50CitNWE9mZnNldFRvRmxhZ3NCaXRT aGlmdChPbGRNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0KQoreworCWludAkJCW1lbWJlcl9pbl9n cm91cCA9IG9mZnNldCAlIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9NRU1CRVJHUk9VUDsKKwlp bnQJCQlic2hpZnQgPSBtZW1iZXJfaW5fZ3JvdXAgKiBNWEFDVF9NRU1CRVJfQklUU19QRVJf WEFDVDsKKworCXJldHVybiBic2hpZnQ7Cit9CisKKy8qCisgKiBDb25zdHJ1Y3QgcmVhZGVy IG9mIG9sZCBtdWx0aXhhY3RzLgorICoKKyAqIFJldHVybnMgdGhlIG1hbGxvY2VkIG1lbW9y eSB1c2VkIGJ5IHRoZSBhbGwgb3RoZXIgY2FsbHMgaW4gdGhpcyBtb2R1bGUuCisgKi8KK09s ZE11bHRpWGFjdFJlYWRlciAqCitBbGxvY09sZE11bHRpWGFjdFJlYWQoY2hhciAqcGdkYXRh LCBNdWx0aVhhY3RJZCBuZXh0TXVsdGksCisJCQkJCSAgT2xkTXVsdGlYYWN0T2Zmc2V0IG5l eHRPZmZzZXQpCit7CisJT2xkTXVsdGlYYWN0UmVhZGVyICpzdGF0ZSA9IHN0YXRlID0gcGdf bWFsbG9jKHNpemVvZigqc3RhdGUpKTsKKwljaGFyCQlkaXJbTUFYUEdQQVRIXSA9IHswfTsK KworCXN0YXRlLT5uZXh0TVhhY3QgPSBuZXh0TXVsdGk7CisJc3RhdGUtPm5leHRPZmZzZXQg PSBuZXh0T2Zmc2V0OworCisJcGdfc3ByaW50ZihkaXIsICIlcy9wZ19tdWx0aXhhY3Qvb2Zm c2V0cyIsIHBnZGF0YSk7CisJc3RhdGUtPm9mZnNldCA9IEFsbG9jU2xydVJlYWQoZGlyLCBm YWxzZSk7CisKKwlwZ19zcHJpbnRmKGRpciwgIiVzL3BnX211bHRpeGFjdC9tZW1iZXJzIiwg cGdkYXRhKTsKKwlzdGF0ZS0+bWVtYmVycyA9IEFsbG9jU2xydVJlYWQoZGlyLCBmYWxzZSk7 CisKKwlyZXR1cm4gc3RhdGU7Cit9CisKKy8qCisgKiBUaGlzIGlzIGEgc2ltcGxpZmllZCB2 ZXJzaW9uIG9mIHRoZSBHZXRNdWx0aVhhY3RJZE1lbWJlcnMoKSBzZXJ2ZXIgZnVuY3Rpb24u CisgKgorICogLSBPbmx5IHJldHVybiB0aGUgdXBkYXRpbmcgbWVtYmVyLCBpZiBhbnkuIFVw Z3JhZGUgb25seSBjYXJlcyBhYm91dCB0aGUKKyAqICAgdXBkYXRlcnMuIElmIHRoZXJlIGlz IG5vIHVwZGF0aW5nIG1lbWJlciwgcmV0dXJuIHRoZSBmaXJzdCBsb2NraW5nLW9ubHkKKyAq ICAgbWVtYmVyLiBXZSBkb24ndCBoYXZlIGFueSB3YXkgdG8gcmVwcmVzZW50ICJubyBtZW1i ZXJzIiwgYnV0IHdlIGFsc28gZG9uJ3QKKyAqICAgbmVlZCB0byBwcmVzZXJ2ZSBhbGwgdGhl IGxvY2tpbmcgbWVtYmVycy4KKyAqCisgKiAtIFdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJv dXQgbG9ja2luZyBhbmQgc29tZSBjb3JuZXIgY2FzZXMgYmVjYXVzZSB0aGVyZSdzCisgKiAg IG5vIGNvbmN1cnJlbnQgYWN0aXZpdHkuCisgKi8KK3ZvaWQKK0dldE9sZE11bHRpWGFjdElk U2luZ2xlTWVtYmVyKE9sZE11bHRpWGFjdFJlYWRlciAqc3RhdGUsIE11bHRpWGFjdElkIG11 bHRpLAorCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCAqcmVzdWx0LCBNdWx0aVhhY3RTdGF0dXMg KnN0YXR1cykKK3sKKwlNdWx0aVhhY3RJZCBuZXh0TVhhY3QsCisJCQkJbmV4dE9mZnNldCwK KwkJCQl0bXBNWGFjdDsKKwlpbnQ2NAkJcGFnZW5vLAorCQkJCXByZXZfcGFnZW5vOworCWlu dAkJCWVudHJ5bm8sCisJCQkJbGVuZ3RoOworCWNoYXIJICAgKmJ1ZjsKKwlPbGRNdWx0aVhh Y3RPZmZzZXQgKm9mZnB0ciwKKwkJCQlvZmZzZXQ7CisJVHJhbnNhY3Rpb25JZCByZXN1bHRf eGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJYm9vbAkJcmVzdWx0X2lzdXBkYXRlID0g ZmFsc2U7CisKKwluZXh0TVhhY3QgPSBzdGF0ZS0+bmV4dE1YYWN0OworCW5leHRPZmZzZXQg PSBzdGF0ZS0+bmV4dE9mZnNldDsKKworCS8qCisJICogU2VlIEdldE11bHRpWGFjdElkTWVt YmVycyBpbiBtdWx0aXhhY3QuYworCSAqCisJICogRmluZCBvdXQgdGhlIG9mZnNldCBhdCB3 aGljaCB3ZSBuZWVkIHRvIHN0YXJ0IHJlYWRpbmcgTXVsdGlYYWN0TWVtYmVycworCSAqIGFu ZCB0aGUgbnVtYmVyIG9mIG1lbWJlcnMgaW4gdGhlIG11bHRpeGFjdC4gIFdlIGRldGVybWlu ZSB0aGUgbGF0dGVyIGFzCisJICogdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIG11bHRp eGFjdCdzIHN0YXJ0aW5nIG9mZnNldCBhbmQgdGhlIG5leHQKKwkgKiBvbmUncy4gIEhvd2V2 ZXIsIHRoZXJlIGFyZSBzb21lIGNvcm5lciBjYXNlcyB0byB3b3JyeSBhYm91dDoKKwkgKgor CSAqIDEuIFRoaXMgbXVsdGl4YWN0IG1heSBiZSB0aGUgbGF0ZXN0IG9uZSBjcmVhdGVkLCBp biB3aGljaCBjYXNlIHRoZXJlIGlzCisJICogbm8gbmV4dCBvbmUgdG8gbG9vayBhdC4gIElu IHRoaXMgY2FzZSB0aGUgbmV4dE9mZnNldCB2YWx1ZSB3ZSBqdXN0CisJICogc2F2ZWQgaXMg dGhlIGNvcnJlY3QgZW5kcG9pbnQuCisJICoKKwkgKiAyLiBUaGUgbmV4dCBtdWx0aXhhY3Qg bWF5IHN0aWxsIGJlIGluIHByb2Nlc3Mgb2YgYmVpbmcgZmlsbGVkIGluLi4uCisJICogVGhp cyBjYW5ub3QgaGFwcGVuIGR1cmluZyB1cGdyYWRlLgorCSAqCisJICogMy4gQmVjYXVzZSBH ZXROZXdNdWx0aVhhY3RJZCBpbmNyZW1lbnRzIG9mZnNldCB6ZXJvIHRvIG9mZnNldCBvbmUg dG8KKwkgKiBoYW5kbGUgY2FzZSAjMiwgdGhlcmUgaXMgYW4gYW1iaWd1aXR5IG5lYXIgdGhl IHBvaW50IG9mIG9mZnNldAorCSAqIHdyYXBhcm91bmQuICBJZiB3ZSBzZWUgbmV4dCBtdWx0 aXhhY3QncyBvZmZzZXQgaXMgb25lLCBpcyB0aGF0IG91cgorCSAqIG11bHRpeGFjdCdzIGFj dHVhbCBlbmRwb2ludCwgb3IgZGlkIGl0IGVuZCBhdCB6ZXJvIHdpdGggYSBzdWJzZXF1ZW50 CisJICogaW5jcmVtZW50PyAgV2UgaGFuZGxlIHRoaXMgdXNpbmcgdGhlIGtub3dsZWRnZSB0 aGF0IGlmIHRoZSB6ZXJvJ3RoCisJICogbWVtYmVyIHNsb3Qgd2Fzbid0IGZpbGxlZCwgaXQn bGwgY29udGFpbiB6ZXJvLCBhbmQgemVybyBpc24ndCBhIHZhbGlkCisJICogdHJhbnNhY3Rp b24gSUQgc28gaXQgY2FuJ3QgYmUgYSBtdWx0aXhhY3QgbWVtYmVyLiAgVGhlcmVmb3JlLCBp ZiB3ZQorCSAqIHJlYWQgYSB6ZXJvIGZyb20gdGhlIG1lbWJlcnMgYXJyYXksIGp1c3QgaWdu b3JlIGl0LgorCSAqLworCisJcGFnZW5vID0gTXVsdGlYYWN0SWRUb09mZnNldFBhZ2UobXVs dGkpOworCWVudHJ5bm8gPSBNdWx0aVhhY3RJZFRvT2Zmc2V0RW50cnkobXVsdGkpOworCisJ YnVmID0gU2xydVJlYWRTd2l0Y2hQYWdlKHN0YXRlLT5vZmZzZXQsIHBhZ2Vubyk7CisJb2Zm cHRyID0gKE9sZE11bHRpWGFjdE9mZnNldCAqKSBidWY7CisJb2ZmcHRyICs9IGVudHJ5bm87 CisJb2Zmc2V0ID0gKm9mZnB0cjsKKworCUFzc2VydChvZmZzZXQgIT0gMCk7CisKKwkvKgor CSAqIFVzZSB0aGUgc2FtZSBpbmNyZW1lbnQgcnVsZSBhcyBHZXROZXdNdWx0aVhhY3RJZCgp LCB0aGF0IGlzLCBkb24ndAorCSAqIGhhbmRsZSB3cmFwYXJvdW5kIGV4cGxpY2l0bHkgdW50 aWwgbmVlZGVkLgorCSAqLworCXRtcE1YYWN0ID0gbXVsdGkgKyAxOworCisJaWYgKG5leHRN WGFjdCA9PSB0bXBNWGFjdCkKKwl7CisJCS8qIENvcm5lciBjYXNlIDE6IHRoZXJlIGlzIG5v IG5leHQgbXVsdGl4YWN0ICovCisJCWxlbmd0aCA9IG5leHRPZmZzZXQgLSBvZmZzZXQ7CisJ fQorCWVsc2UKKwl7CisJCU9sZE11bHRpWGFjdE9mZnNldCBuZXh0TVhPZmZzZXQ7CisKKwkJ LyogaGFuZGxlIHdyYXBhcm91bmQgaWYgbmVlZGVkICovCisJCWlmICh0bXBNWGFjdCA8IEZp cnN0TXVsdGlYYWN0SWQpCisJCQl0bXBNWGFjdCA9IEZpcnN0TXVsdGlYYWN0SWQ7CisKKwkJ cHJldl9wYWdlbm8gPSBwYWdlbm87CisKKwkJcGFnZW5vID0gTXVsdGlYYWN0SWRUb09mZnNl dFBhZ2UodG1wTVhhY3QpOworCQllbnRyeW5vID0gTXVsdGlYYWN0SWRUb09mZnNldEVudHJ5 KHRtcE1YYWN0KTsKKworCQlpZiAocGFnZW5vICE9IHByZXZfcGFnZW5vKQorCQkJYnVmID0g U2xydVJlYWRTd2l0Y2hQYWdlKHN0YXRlLT5vZmZzZXQsIHBhZ2Vubyk7CisKKwkJb2ZmcHRy ID0gKE9sZE11bHRpWGFjdE9mZnNldCAqKSBidWY7CisJCW9mZnB0ciArPSBlbnRyeW5vOwor CQluZXh0TVhPZmZzZXQgPSAqb2ZmcHRyOworCisJCS8qCisJCSAqIENvcm5lciBjYXNlIDI6 IG5leHQgbXVsdGl4YWN0IGlzIHN0aWxsIGJlaW5nIGZpbGxlZCBpbiwgdGhpcyBtdXN0CisJ CSAqIG5vdCBoYXBwZW4gZHVyaW5nIHVwZ3JhZGUuCisJCSAqLworCQlBc3NlcnQobmV4dE1Y T2Zmc2V0ICE9IDApOworCisJCWxlbmd0aCA9IG5leHRNWE9mZnNldCAtIG9mZnNldDsKKwl9 CisKKwlwcmV2X3BhZ2VubyA9IC0xOworCWZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBp KyssIG9mZnNldCsrKQorCXsKKwkJVHJhbnNhY3Rpb25JZCAqeGFjdHB0cjsKKwkJdWludDMy CSAgICpmbGFnc3B0cjsKKwkJaW50CQkJZmxhZ3NvZmY7CisJCWludAkJCWJzaGlmdDsKKwkJ aW50CQkJbWVtYmVyb2ZmOworCQlNdWx0aVhhY3RTdGF0dXMgc3Q7CisKKwkJcGFnZW5vID0g TVhPZmZzZXRUb01lbWJlclBhZ2Uob2Zmc2V0KTsKKwkJbWVtYmVyb2ZmID0gTVhPZmZzZXRU b01lbWJlck9mZnNldChvZmZzZXQpOworCisJCWlmIChwYWdlbm8gIT0gcHJldl9wYWdlbm8p CisJCXsKKwkJCWJ1ZiA9IFNscnVSZWFkU3dpdGNoUGFnZShzdGF0ZS0+bWVtYmVycywgcGFn ZW5vKTsKKwkJCXByZXZfcGFnZW5vID0gcGFnZW5vOworCQl9CisKKwkJeGFjdHB0ciA9IChU cmFuc2FjdGlvbklkICopIChidWYgKyBtZW1iZXJvZmYpOworCQlpZiAoIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKCp4YWN0cHRyKSkKKwkJeworCQkJLyogQ29ybmVyIGNhc2UgMzogd2UgbXVz dCBiZSBsb29raW5nIGF0IHVudXNlZCBzbG90IHplcm8gKi8KKwkJCUFzc2VydChvZmZzZXQg PT0gMCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCWZsYWdzb2ZmID0gTVhPZmZzZXRUb0Zs YWdzT2Zmc2V0KG9mZnNldCk7CisJCWJzaGlmdCA9IE1YT2Zmc2V0VG9GbGFnc0JpdFNoaWZ0 KG9mZnNldCk7CisJCWZsYWdzcHRyID0gKHVpbnQzMiAqKSAoYnVmICsgZmxhZ3NvZmYpOwor CisJCXN0ID0gKCpmbGFnc3B0ciA+PiBic2hpZnQpICYgTVhBQ1RfTUVNQkVSX1hBQ1RfQklU TUFTSzsKKworCQkvKiBWZXJpZnkgdGhhdCB0aGVyZSBpcyBhIHNpbmdsZSB1cGRhdGUgWGlk IGFtb25nIHRoZSBnaXZlbiBtZW1iZXJzLiAqLworCQlpZiAoSVNVUERBVEVfZnJvbV9teHN0 YXR1cyhzdCkpCisJCXsKKwkJCWlmIChyZXN1bHRfaXN1cGRhdGUpCisJCQkJcGdfZmF0YWwo Im11bHRpeGFjdCAldSBoYXMgbW9yZSB0aGFuIG9uZSB1cGRhdGluZyBtZW1iZXIiLAorCQkJ CQkJIG11bHRpKTsKKwkJCXJlc3VsdF94aWQgPSAqeGFjdHB0cjsKKwkJCXJlc3VsdF9pc3Vw ZGF0ZSA9IHRydWU7CisJCX0KKwkJZWxzZSBpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHJl c3VsdF94aWQpKQorCQkJcmVzdWx0X3hpZCA9ICp4YWN0cHRyOworCX0KKworCS8qIEEgbXVs dGl4aWQgd2l0aCB6ZXJvIG1lbWJlcnMgc2hvdWxkIG5vdCBoYXBwZW4gKi8KKwlBc3NlcnQo VHJhbnNhY3Rpb25JZElzVmFsaWQocmVzdWx0X3hpZCkpOworCisJKnJlc3VsdCA9IHJlc3Vs dF94aWQ7CisJKnN0YXR1cyA9IHJlc3VsdF9pc3VwZGF0ZSA/IE11bHRpWGFjdFN0YXR1c1Vw ZGF0ZSA6CisJCU11bHRpWGFjdFN0YXR1c0ZvcktleVNoYXJlOworfQorCisvKgorICogRnJl ZXMgdGhlIG1hbGxvY2VkIHJlYWRlci4KKyAqLwordm9pZAorRnJlZU9sZE11bHRpWGFjdFJl YWRlcihPbGRNdWx0aVhhY3RSZWFkZXIgKnN0YXRlKQoreworCUZyZWVTbHJ1UmVhZChzdGF0 ZS0+b2Zmc2V0KTsKKwlGcmVlU2xydVJlYWQoc3RhdGUtPm1lbWJlcnMpOworCisJcGZyZWUo c3RhdGUpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL211bHRpeGFjdF9v bGQuaCBiL3NyYy9iaW4vcGdfdXBncmFkZS9tdWx0aXhhY3Rfb2xkLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjhlYjVhZjJjY2FmCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL211bHRpeGFjdF9vbGQuaApAQCAtMCwwICsxLDI5 IEBACisvKgorICogbXVsdGl4YWN0X29sZC5oCisgKgorICogQ29weXJpZ2h0IChjKSAyMDI1 LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogc3JjL2Jpbi9wZ191 cGdyYWRlL211bHRpeGFjdF9vbGQuaAorICovCisKKyNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4 YWN0LmgiCisjaW5jbHVkZSAic2xydV9pby5oIgorCit0eXBlZGVmIHVpbnQzMiBPbGRNdWx0 aVhhY3RPZmZzZXQ7CisKK3R5cGVkZWYgc3RydWN0IE9sZE11bHRpWGFjdFJlYWRlcgorewor CU11bHRpWGFjdElkIG5leHRNWGFjdDsKKwlPbGRNdWx0aVhhY3RPZmZzZXQgbmV4dE9mZnNl dDsKKworCVNscnVTZWdTdGF0ZSAqb2Zmc2V0OworCVNscnVTZWdTdGF0ZSAqbWVtYmVyczsK K30gT2xkTXVsdGlYYWN0UmVhZGVyOworCitleHRlcm4gT2xkTXVsdGlYYWN0UmVhZGVyICpB bGxvY09sZE11bHRpWGFjdFJlYWQoY2hhciAqcGdkYXRhLAorCQkJCQkJCQkJCQkJIE11bHRp WGFjdElkIG5leHRNdWx0aSwKKwkJCQkJCQkJCQkJCSBPbGRNdWx0aVhhY3RPZmZzZXQgbmV4 dE9mZnNldCk7CitleHRlcm4gdm9pZCBHZXRPbGRNdWx0aVhhY3RJZFNpbmdsZU1lbWJlcihP bGRNdWx0aVhhY3RSZWFkZXIgKnN0YXRlLAorCQkJCQkJCQkJCSAgTXVsdGlYYWN0SWQgbXVs dGksCisJCQkJCQkJCQkJICBUcmFuc2FjdGlvbklkICpyZXN1bHQsCisJCQkJCQkJCQkJICBN dWx0aVhhY3RTdGF0dXMgKnN0YXR1cyk7CitleHRlcm4gdm9pZCBGcmVlT2xkTXVsdGlYYWN0 UmVhZGVyKE9sZE11bHRpWGFjdFJlYWRlciAqcmVhZGVyKTsKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMgYi9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBn cmFkZS5jCmluZGV4IDQ5MGU5OGZhMjZmLi4wZmRkMDVjMTI3YyAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYworKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUv cGdfdXBncmFkZS5jCkBAIC00OCw2ICs0OCw4IEBACiAjaW5jbHVkZSAiY29tbW9uL2xvZ2dp bmcuaCIKICNpbmNsdWRlICJjb21tb24vcmVzdHJpY3RlZF90b2tlbi5oIgogI2luY2x1ZGUg ImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgorI2luY2x1ZGUgIm11bHRpeGFjdF9vbGQuaCIK KyNpbmNsdWRlICJtdWx0aXhhY3RfbmV3LmgiCiAjaW5jbHVkZSAicGdfdXBncmFkZS5oIgog CiAvKgpAQCAtNzY5LDYgKzc3MSw4MSBAQCBjb3B5X3N1YmRpcl9maWxlcyhjb25zdCBjaGFy ICpvbGRfc3ViZGlyLCBjb25zdCBjaGFyICpuZXdfc3ViZGlyKQogCWNoZWNrX29rKCk7CiB9 CiAKKy8qCisgKiBDb252ZXJ0IHBnX211bHRpeGFjdC9vZmZzZXQgYW5kIC9tZW1iZXJzIHRv IG5ldyBmb3JtYXQgd2l0aCA2NC1iaXQgb2Zmc2V0cy4KKyAqLworc3RhdGljIHZvaWQKK2Nv bnZlcnRfbXVsdGl4YWN0cyhNdWx0aVhhY3RJZCAqbmV3X254dG11bHRpLCBNdWx0aVhhY3RP ZmZzZXQgKm5ld19ueHRteG9mZikKK3sKKwlNdWx0aVhhY3RJZCBvbGRlc3RfbXVsdGksCisJ CQkJbmV4dF9tdWx0aTsKKwlPbGRNdWx0aVhhY3RSZWFkZXIgKm9sZF9yZWFkZXI7CisJTXVs dGlYYWN0V3JpdGVyICpuZXdfd3JpdGVyOworCU11bHRpWGFjdE9mZnNldCBuZXh0X29mZnNl dDsKKworCS8qCisJICogVGhlIHJhbmdlIG9mIHZhbGlkIG11bHRpIFhJRHMgaXMgdW5jaGFu Z2VkIGJ5IHRoZSBjb252ZXJzaW9uICh0aGV5IGFyZQorCSAqIHJlZmVyZW5jZWQgZnJvbSB0 aGUgaGVhcCB0YWJsZXMpLCBidXQgdGhlIG1lbWJlcnMgU0xSVSBpcyByZXdyaXR0ZW4gdG8K KwkgKiBzdGFydCBmcm9tIG9mZnNldCAxLgorCSAqLworCW9sZGVzdF9tdWx0aSA9IG9sZF9j bHVzdGVyLmNvbnRyb2xkYXRhLmNoa3BudF9vbGRzdE11bHRpOworCW5leHRfbXVsdGkgPSBv bGRfY2x1c3Rlci5jb250cm9sZGF0YS5jaGtwbnRfbnh0bXVsdGk7CisJbmV4dF9vZmZzZXQg PSAxOworCisJb2xkX3JlYWRlciA9IEFsbG9jT2xkTXVsdGlYYWN0UmVhZChvbGRfY2x1c3Rl ci5wZ2RhdGEsCisJCQkJCQkJCQkgICBvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5jaGtwbnRf bnh0bXVsdGksCisJCQkJCQkJCQkgICBvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5jaGtwbnRf bnh0bXhvZmYpOworCW5ld193cml0ZXIgPSBBbGxvY011bHRpWGFjdFdyaXRlKG5ld19jbHVz dGVyLnBnZGF0YSwKKwkJCQkJCQkJCSBvbGRlc3RfbXVsdGksIG5leHRfb2Zmc2V0KTsKKwor CS8qIGhhbmRsZSB3cmFwYXJvdW5kICovCisJaWYgKG5leHRfbXVsdGkgPCBGaXJzdE11bHRp WGFjdElkKQorCQluZXh0X211bHRpID0gRmlyc3RNdWx0aVhhY3RJZDsKKworCS8qCisJICog UmVhZCBtdWx0aXhpZHMgZnJvbSBvbGQgZmlsZXMgb25lIGJ5IG9uZSwgYW5kIHdyaXRlIHRo ZW0gYmFjayBpbiB0aGUKKwkgKiBuZXcgZm9ybWF0LgorCSAqLworCWZvciAoTXVsdGlYYWN0 SWQgbXVsdGkgPSBvbGRlc3RfbXVsdGk7IG11bHRpICE9IG5leHRfbXVsdGk7KQorCXsKKwkJ VHJhbnNhY3Rpb25JZCB4aWQ7CisJCU11bHRpWGFjdFN0YXR1cyBzdGF0dXM7CisJCU11bHRp WGFjdE1lbWJlciBtZW1iZXI7CisKKwkJLyoKKwkJICogUmVhZCB0aGUgb2xkIG11bHRpeGlk LiAgVGhlIGxvY2tpbmctb25seSBYSURzIHRoYXQgbWF5IGJlIHBhcnQgb2YKKwkJICogbXVs dGkteGlkcyBkb24ndCBtYXR0ZXIgYWZ0ZXIgdXBncmFkZSwgYXMgdGhlcmUgY2FuIGJlIG5v CisJCSAqIHRyYW5zYWN0aW9ucyBydW5uaW5nIGFjcm9zcyB1cGdyYWRlLiAgU28gYXMgYSBs aXR0bGUgb3B0aW1pemF0aW9uLAorCQkgKiB3ZSBvbmx5IHJlYWQgb25lIG1lbWJlciBmcm9t IGVhY2ggbXVsdGl4aWQ6IHRoZSBvbmUgdXBkYXRpbmcgb25lLAorCQkgKiBvciBpZiB0aGVy ZSB3YXMgbm8gdXBkYXRlLCBhcmJpdHJhcmlseSB0aGUgZmlyc3QgbG9ja2luZyB4aWQuCisJ CSAqLworCQlHZXRPbGRNdWx0aVhhY3RJZFNpbmdsZU1lbWJlcihvbGRfcmVhZGVyLCBtdWx0 aSwgJnhpZCwgJnN0YXR1cyk7CisKKwkJLyogV3JpdGUgaXQgb3V0IGluIG5ldyBmb3JtYXQg Ki8KKwkJbWVtYmVyLnhpZCA9IHhpZDsKKwkJbWVtYmVyLnN0YXR1cyA9IHN0YXR1czsKKwkJ UmVjb3JkTmV3TXVsdGlYYWN0KG5ld193cml0ZXIsIG5leHRfb2Zmc2V0LCBtdWx0aSwgMSwg Jm1lbWJlcik7CisKKwkJbmV4dF9vZmZzZXQgKz0gMTsKKwkJbXVsdGkrKzsKKwkJLyogaGFu ZGxlIHdyYXBhcm91bmQgKi8KKwkJaWYgKG11bHRpIDwgRmlyc3RNdWx0aVhhY3RJZCkKKwkJ CW11bHRpID0gRmlyc3RNdWx0aVhhY3RJZDsKKwl9CisKKwkvKgorCSAqIFVwZGF0ZSB0aGUg bmV4dE1YYWN0L09mZnNldCB2YWx1ZXMgaW4gdGhlIGNvbnRyb2wgZmlsZSB0byBtYXRjaCB3 aGF0IHdlCisJICogd3JvdGUuICBUaGUgbmV4dE1YYWN0IGlzIHVuY2hhbmdlZCwgYnV0IG5l eHRPZmZzZXQgd2lsbCBiZSBkaWZmZXJlbnQuCisJICovCisJQXNzZXJ0KG5leHRfbXVsdGkg PT0gb2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2hrcG50X254dG11bHRpKTsKKwkqbmV3X254 dG11bHRpID0gbmV4dF9tdWx0aTsKKwkqbmV3X254dG14b2ZmID0gbmV4dF9vZmZzZXQ7CisK KwkvKiBSZWxlYXNlIHJlc291cmNlcyAqLworCUZyZWVNdWx0aVhhY3RXcml0ZShuZXdfd3Jp dGVyKTsKKwlGcmVlT2xkTXVsdGlYYWN0UmVhZGVyKG9sZF9yZWFkZXIpOworfQorCiBzdGF0 aWMgdm9pZAogY29weV94YWN0X3hsb2dfeGlkKHZvaWQpCiB7CkBAIC04MTYsOCArODkzLDI5 IEBAIGNvcHlfeGFjdF94bG9nX3hpZCh2b2lkKQogCWlmIChvbGRfY2x1c3Rlci5jb250cm9s ZGF0YS5jYXRfdmVyID49IE1VTFRJWEFDVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUiAmJgogCQlu ZXdfY2x1c3Rlci5jb250cm9sZGF0YS5jYXRfdmVyID49IE1VTFRJWEFDVF9GT1JNQVRDSEFO R0VfQ0FUX1ZFUikKIAl7Ci0JCWNvcHlfc3ViZGlyX2ZpbGVzKCJwZ19tdWx0aXhhY3Qvb2Zm c2V0cyIsICJwZ19tdWx0aXhhY3Qvb2Zmc2V0cyIpOwotCQljb3B5X3N1YmRpcl9maWxlcygi cGdfbXVsdGl4YWN0L21lbWJlcnMiLCAicGdfbXVsdGl4YWN0L21lbWJlcnMiKTsKKwkJTXVs dGlYYWN0SWQgbmV3X254dG11bHRpID0gb2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2hrcG50 X254dG11bHRpOworCQlNdWx0aVhhY3RPZmZzZXQgbmV3X254dG14b2ZmID0gb2xkX2NsdXN0 ZXIuY29udHJvbGRhdGEuY2hrcG50X254dG14b2ZmOworCisJCS8qCisJCSAqIElmIHRoZSBv bGQgc2VydmVyIGlzIGJlZm9yZSB0aGUKKwkJICogTVVMVElYQUNUT0ZGU0VUX0ZPUk1BVENI QU5HRV9DQVRfVkVSIGl0IG11c3QgaGF2ZSAzMi1iaXQgbXVsdGl4aWQKKwkJICogb2Zmc2V0 cywgdGh1cyBpdCBzaG91bGQgYmUgY29udmVydGVkLgorCQkgKi8KKwkJaWYgKG9sZF9jbHVz dGVyLmNvbnRyb2xkYXRhLmNhdF92ZXIgPCBNVUxUSVhBQ1RPRkZTRVRfRk9STUFUQ0hBTkdF X0NBVF9WRVIgJiYKKwkJCW5ld19jbHVzdGVyLmNvbnRyb2xkYXRhLmNhdF92ZXIgPj0gTVVM VElYQUNUT0ZGU0VUX0ZPUk1BVENIQU5HRV9DQVRfVkVSKQorCQl7CisJCQlyZW1vdmVfbmV3 X3N1YmRpcigicGdfbXVsdGl4YWN0L21lbWJlcnMiLCBmYWxzZSk7CisJCQlyZW1vdmVfbmV3 X3N1YmRpcigicGdfbXVsdGl4YWN0L29mZnNldHMiLCBmYWxzZSk7CisKKwkJCXByZXBfc3Rh dHVzKCJDb252ZXJ0aW5nIHBnX211bHRpeGFjdC9vZmZzZXRzIHRvIDY0LWJpdCIpOworCQkJ Y29udmVydF9tdWx0aXhhY3RzKCZuZXdfbnh0bXVsdGksICZuZXdfbnh0bXhvZmYpOworCQkJ Y2hlY2tfb2soKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWNvcHlfc3ViZGlyX2ZpbGVzKCJw Z19tdWx0aXhhY3Qvb2Zmc2V0cyIsICJwZ19tdWx0aXhhY3Qvb2Zmc2V0cyIpOworCQkJY29w eV9zdWJkaXJfZmlsZXMoInBnX211bHRpeGFjdC9tZW1iZXJzIiwgInBnX211bHRpeGFjdC9t ZW1iZXJzIik7CisJCX0KIAogCQlwcmVwX3N0YXR1cygiU2V0dGluZyBuZXh0IG11bHRpeGFj dCBJRCBhbmQgb2Zmc2V0IGZvciBuZXcgY2x1c3RlciIpOwogCkBAIC04MjYsMTAgKzkyNCw4 IEBAIGNvcHlfeGFjdF94bG9nX3hpZCh2b2lkKQogCQkgKiBjb3VudGVycyBoZXJlIGFuZCB0 aGUgb2xkZXN0IG11bHRpIHByZXNlbnQgb24gc3lzdGVtLgogCQkgKi8KIAkJZXhlY19wcm9n KFVUSUxJVFlfTE9HX0ZJTEUsIE5VTEwsIHRydWUsIHRydWUsCi0JCQkJICAiXCIlcy9wZ19y ZXNldHdhbFwiIC1PICV1IC1tICV1LCV1IFwiJXNcIiIsCi0JCQkJICBuZXdfY2x1c3Rlci5i aW5kaXIsCi0JCQkJICBvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5jaGtwbnRfbnh0bXhvZmYs Ci0JCQkJICBvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5jaGtwbnRfbnh0bXVsdGksCisJCQkJ ICAiXCIlcy9wZ19yZXNldHdhbFwiIC1PICUiIFBSSXU2NCAiIC1tICV1LCV1IFwiJXNcIiIs CisJCQkJICBuZXdfY2x1c3Rlci5iaW5kaXIsIG5ld19ueHRteG9mZiwgbmV3X254dG11bHRp LAogCQkJCSAgb2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2hrcG50X29sZHN0TXVsdGksCiAJ CQkJICBuZXdfY2x1c3Rlci5wZ2RhdGEpOwogCQljaGVja19vaygpOwpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaCBiL3NyYy9iaW4vcGdfdXBncmFkZS9w Z191cGdyYWRlLmgKaW5kZXggZTg2MzM2ZjRiZTkuLjEyN2IyY2IwMGZhIDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCisrKyBiL3NyYy9iaW4vcGdfdXBn cmFkZS9wZ191cGdyYWRlLmgKQEAgLTExNCw2ICsxMTQsMTEgQEAgZXh0ZXJuIGNoYXIgKm91 dHB1dF9maWxlc1tdOwogICovCiAjZGVmaW5lIE1VTFRJWEFDVF9GT1JNQVRDSEFOR0VfQ0FU X1ZFUiAyMDEzMDEyMzEKIAorLyoKKyAqIFN3aWN0aCBmcm9tIDMyLWJpdCB0byA2NC1iaXQg Zm9yIG11bHRpeGlkIG9mZnNldHMuCisgKi8KKyNkZWZpbmUgTVVMVElYQUNUT0ZGU0VUX0ZP Uk1BVENIQU5HRV9DQVRfVkVSIDk5OTk5OTk5OQorCiAvKgogICogbGFyZ2Ugb2JqZWN0IGNo dW5rIHNpemUgYWRkZWQgdG8gcGdfY29udHJvbGRhdGEsCiAgKiBjb21taXQgNWY5M2MzNzgw NWU3NDg1NDg4NDgwOTE2YjQ1ODVlMDk4ZDNjYzg4MwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z191cGdyYWRlL3NscnVfaW8uYyBiL3NyYy9iaW4vcGdfdXBncmFkZS9zbHJ1X2lvLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjAxMDA5NDE4NGJlCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3NscnVfaW8uYwpAQCAtMCwwICsx LDI0MiBAQAorLyoKKyAqIHNscnVfaW8uYworICoKKyAqIFJvdXRpbmVzIGZvciByZWFkaW5n IGFuZCB3cml0aW5nIFNMUlUgZmlsZXMgZHVyaW5nIHVwZ3JhZGUuCisgKgorICogQ29weXJp Z2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICog c3JjL2Jpbi9wZ191cGdyYWRlL3NscnVfaW8uYworICovCisKKyNpbmNsdWRlICJwb3N0Z3Jl c19mZS5oIgorCisjaW5jbHVkZSA8ZmNudGwuaD4KKworI2luY2x1ZGUgImNvbW1vbi9mZV9t ZW11dGlscy5oIgorI2luY2x1ZGUgImNvbW1vbi9maWxlX3Blcm0uaCIKKyNpbmNsdWRlICJj b21tb24vZmlsZV91dGlscy5oIgorI2luY2x1ZGUgInBvcnQvcGdfaW92ZWMuaCIKKyNpbmNs dWRlICJwZ191cGdyYWRlLmgiCisjaW5jbHVkZSAic2xydV9pby5oIgorCitzdGF0aWMgU2xy dVNlZ1N0YXRlICpBbGxvY1NscnVTZWdTdGF0ZShjb25zdCBjaGFyICpkaXIpOworc3RhdGlj IGNoYXIgKlNscnVGaWxlTmFtZShTbHJ1U2VnU3RhdGUgKnN0YXRlLCBpbnQ2NCBzZWdubyk7 CitzdGF0aWMgdm9pZCBTbHJ1Rmx1c2goU2xydVNlZ1N0YXRlICpzdGF0ZSk7CisKK3N0YXRp YyBTbHJ1U2VnU3RhdGUgKgorQWxsb2NTbHJ1U2VnU3RhdGUoY29uc3QgY2hhciAqZGlyKQor eworCVNscnVTZWdTdGF0ZSAqc3RhdGUgPSBwZ19tYWxsb2Moc2l6ZW9mKCpzdGF0ZSkpOwor CisJc3RhdGUtPmRpciA9IHBzdHJkdXAoZGlyKTsKKwlzdGF0ZS0+Zm4gPSBOVUxMOworCXN0 YXRlLT5mZCA9IC0xOworCXN0YXRlLT5zZWdubyA9IC0xOworCXN0YXRlLT5wYWdlbm8gPSAw OworCisJcmV0dXJuIHN0YXRlOworfQorCisvKiBzaW1pbGFyIHRvIHRoZSBiYWNrZW5kIGZ1 bmN0aW9uIHdpdGggdGhlIHNhbWUgbmFtZSAqLworc3RhdGljIGNoYXIgKgorU2xydUZpbGVO YW1lKFNscnVTZWdTdGF0ZSAqc3RhdGUsIGludDY0IHNlZ25vKQoreworCWlmIChzdGF0ZS0+ bG9uZ19zZWdtZW50X25hbWVzKQorCXsKKwkJQXNzZXJ0KHNlZ25vID49IDAgJiYgc2Vnbm8g PD0gSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRkZGRikpOworCQlyZXR1cm4gcHNwcmludGYo IiVzLyUwMTUiIFBSSVg2NCwgc3RhdGUtPmRpciwgc2Vnbm8pOworCX0KKwllbHNlCisJewor CQlBc3NlcnQoc2Vnbm8gPj0gMCAmJiBzZWdubyA8PSBJTlQ2NENPTlNUKDB4RkZGRkZGKSk7 CisJCXJldHVybiBwc3ByaW50ZigiJXMvJTA0WCIsIHN0YXRlLT5kaXIsICh1bnNpZ25lZCBp bnQpIHNlZ25vKTsKKwl9Cit9CisKKy8qCisgKiBDcmVhdGUgc2xydSByZWFkZXIgZm9yIGRp ci4KKyAqCisgKiBSZXR1cm5zIHRoZSBtYWxsb2NlZCBtZW1vcnkgdXNlZCBieSB0aGUgYWxs IG90aGVyIHJlYWQgY2FsbHMgaW4gdGhpcyBtb2R1bGUuCisgKi8KK1NscnVTZWdTdGF0ZSAq CitBbGxvY1NscnVSZWFkKGNvbnN0IGNoYXIgKmRpciwgYm9vbCBsb25nX3NlZ21lbnRfbmFt ZXMpCit7CisJU2xydVNlZ1N0YXRlICpzdGF0ZSA9IEFsbG9jU2xydVNlZ1N0YXRlKGRpcik7 CisKKwlzdGF0ZS0+d3JpdGluZyA9IGZhbHNlOworCXN0YXRlLT5sb25nX3NlZ21lbnRfbmFt ZXMgPSBsb25nX3NlZ21lbnRfbmFtZXM7CisKKwlyZXR1cm4gc3RhdGU7Cit9CisKKy8qCisg KiBPcGVuIGdpdmVuIHBhZ2UgZm9yIHJlYWRpbmcuCisgKgorICogUmVhZGluZyBjYW4gYmUg ZG9uZSBpbiByYW5kb20gb3JkZXIuCisgKi8KK2NoYXIgKgorU2xydVJlYWRTd2l0Y2hQYWdl U2xvdyhTbHJ1U2VnU3RhdGUgKnN0YXRlLCB1aW50NjQgcGFnZW5vKQoreworCWludDY0CQlz ZWdubzsKKworCUFzc2VydCghc3RhdGUtPndyaXRpbmcpOwkvKiByZWFkIG9ubHkgbW9kZSAq LworCisJaWYgKHN0YXRlLT5zZWdubyAhPSAtMSAmJiBwYWdlbm8gPT0gc3RhdGUtPnBhZ2Vu bykKKwkJcmV0dXJuIHN0YXRlLT5idWYuZGF0YTsKKworCXNlZ25vID0gcGFnZW5vIC8gU0xS VV9QQUdFU19QRVJfU0VHTUVOVDsKKwlpZiAoc2Vnbm8gIT0gc3RhdGUtPnNlZ25vKQorCXsK KwkJaWYgKHN0YXRlLT5zZWdubyAhPSAtMSkKKwkJeworCQkJY2xvc2Uoc3RhdGUtPmZkKTsK KwkJCXN0YXRlLT5mZCA9IC0xOworCisJCQlwZ19mcmVlKHN0YXRlLT5mbik7CisJCQlzdGF0 ZS0+Zm4gPSBOVUxMOworCisJCQlzdGF0ZS0+c2Vnbm8gPSAtMTsKKwkJfQorCisJCS8qIE9w ZW4gbmV3IHNlZ21lbnQgKi8KKwkJc3RhdGUtPmZuID0gU2xydUZpbGVOYW1lKHN0YXRlLCBz ZWdubyk7CisJCWlmICgoc3RhdGUtPmZkID0gb3BlbihzdGF0ZS0+Zm4sIE9fUkRPTkxZIHwg UEdfQklOQVJZLCAwKSkgPCAwKQorCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUg XCIlc1wiOiAlbSIsIHN0YXRlLT5mbik7CisJfQorCisJc3RhdGUtPnNlZ25vID0gc2Vnbm87 CisKKwl7CisJCXN0cnVjdCBpb3ZlYyBpb3ZlYyA9IHsKKwkJCS5pb3ZfYmFzZSA9ICZzdGF0 ZS0+YnVmLAorCQkJLmlvdl9sZW4gPSBCTENLU1osCisJCX07CisJCW9mZl90CQlvZmZzZXQg PSAocGFnZW5vICUgU0xSVV9QQUdFU19QRVJfU0VHTUVOVCkgKiBCTENLU1o7CisKKwkJaWYg KHBnX3ByZWFkdihzdGF0ZS0+ZmQsICZpb3ZlYywgMSwgb2Zmc2V0KSA8IDApCisJCQlwZ19m YXRhbCgiY291bGQgbm90IHJlYWQgZmlsZSBcIiVzXCI6ICVtIiwgc3RhdGUtPmZuKTsKKwor CQlzdGF0ZS0+cGFnZW5vID0gcGFnZW5vOworCX0KKworCXJldHVybiBzdGF0ZS0+YnVmLmRh dGE7Cit9CisKKy8qCisgKiBGcmVlcyB0aGUgbWFsbG9jZWQgcmVhZGVyLgorICovCit2b2lk CitGcmVlU2xydVJlYWQoU2xydVNlZ1N0YXRlICpzdGF0ZSkKK3sKKwlBc3NlcnQoIXN0YXRl LT53cml0aW5nKTsJLyogcmVhZCBvbmx5IG1vZGUgKi8KKworCWlmIChzdGF0ZS0+ZmQgIT0g LTEpCisJCWNsb3NlKHN0YXRlLT5mZCk7CisJcGdfZnJlZShzdGF0ZSk7Cit9CisKKy8qCisg KiBDcmVhdGUgc2xydSB3cml0ZXIgZm9yIGRpci4KKyAqCisgKiBSZXR1cm5zIHRoZSBtYWxs b2NlZCBtZW1vcnkgdXNlZCBieSB0aGUgYWxsIG90aGVyIHdyaXRlIGNhbGxzIGluIHRoaXMg bW9kdWxlLgorICovCitTbHJ1U2VnU3RhdGUgKgorQWxsb2NTbHJ1V3JpdGUoY29uc3QgY2hh ciAqZGlyLCBib29sIGxvbmdfc2VnbWVudF9uYW1lcykKK3sKKwlTbHJ1U2VnU3RhdGUgKnN0 YXRlID0gQWxsb2NTbHJ1U2VnU3RhdGUoZGlyKTsKKworCXN0YXRlLT53cml0aW5nID0gdHJ1 ZTsKKwlzdGF0ZS0+bG9uZ19zZWdtZW50X25hbWVzID0gbG9uZ19zZWdtZW50X25hbWVzOwor CisJcmV0dXJuIHN0YXRlOworfQorCisvKgorICogT3BlbiB0aGUgZ2l2ZW4gcGFnZSBmb3Ig d3JpdGluZy4KKyAqCisgKiBOT1RFOiBUaGlzIHVzZXMgT19FWENMIHdoZW4gc3RlcHBpbmcg dG8gYSBuZXcgc2VnbWVudCwgc28gdGhpcyBhc3N1bWVzIHRoYXQKKyAqIGVhY2ggc2VnbWVu dCBpcyB3cml0dGVuIGluIGZ1bGwgYmVmb3JlIG1vdmluZyBvbiB0byBuZXh0IG9uZS4gIFRo aXMKKyAqIGxpbWl0YXRpb24gd291bGQgYmUgZWFzeSB0byBsaWZ0IGlmIG5lZWRlZCwgYnV0 IGl0IGZpdHMgdGhlIHVzYWdlIHBhdHRlcm4gb2YKKyAqIGN1cnJlbnQgY2FsbGVycy4KKyAq LworY2hhciAqCitTbHJ1V3JpdGVTd2l0Y2hQYWdlU2xvdyhTbHJ1U2VnU3RhdGUgKnN0YXRl LCB1aW50NjQgcGFnZW5vKQoreworCWludDY0CQlzZWdubzsKKwlvZmZfdAkJb2Zmc2V0Owor CisJaWYgKHN0YXRlLT5zZWdubyAhPSAtMSAmJiBwYWdlbm8gPT0gc3RhdGUtPnBhZ2VubykK KwkJcmV0dXJuIHN0YXRlLT5idWYuZGF0YTsKKworCXNlZ25vID0gcGFnZW5vIC8gU0xSVV9Q QUdFU19QRVJfU0VHTUVOVDsKKwlvZmZzZXQgPSAocGFnZW5vICUgU0xSVV9QQUdFU19QRVJf U0VHTUVOVCkgKiBCTENLU1o7CisKKwlTbHJ1Rmx1c2goc3RhdGUpOworCW1lbXNldChzdGF0 ZS0+YnVmLmRhdGEsIDAsIEJMQ0tTWik7CisKKwlpZiAoc2Vnbm8gIT0gc3RhdGUtPnNlZ25v KQorCXsKKwkJaWYgKHN0YXRlLT5zZWdubyAhPSAtMSkKKwkJeworCQkJY2xvc2Uoc3RhdGUt PmZkKTsKKwkJCXN0YXRlLT5mZCA9IC0xOworCisJCQlwZ19mcmVlKHN0YXRlLT5mbik7CisJ CQlzdGF0ZS0+Zm4gPSBOVUxMOworCisJCQlzdGF0ZS0+c2Vnbm8gPSAtMTsKKwkJfQorCisJ CS8qIENyZWF0ZSB0aGUgc2VnbWVudCAqLworCQlzdGF0ZS0+Zm4gPSBTbHJ1RmlsZU5hbWUo c3RhdGUsIHNlZ25vKTsKKwkJaWYgKChzdGF0ZS0+ZmQgPSBvcGVuKHN0YXRlLT5mbiwgT19S RFdSIHwgT19DUkVBVCB8IE9fRVhDTCB8IFBHX0JJTkFSWSwKKwkJCQkJCQkgIHBnX2ZpbGVf Y3JlYXRlX21vZGUpKSA8IDApCisJCXsKKwkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgY3JlYXRl IGZpbGUgXCIlc1wiOiAlbSIsIHN0YXRlLT5mbik7CisJCX0KKworCQlzdGF0ZS0+c2Vnbm8g PSBzZWdubzsKKworCQlpZiAob2Zmc2V0ID4gMCkKKwkJeworCQkJaWYgKHBnX3B3cml0ZV96 ZXJvcyhzdGF0ZS0+ZmQsIG9mZnNldCwgMCkgPCAwKQorCQkJCXBnX2ZhdGFsKCJjb3VsZCBu b3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVtIiwgc3RhdGUtPmZuKTsKKwkJfQorCX0KKworCXN0 YXRlLT5wYWdlbm8gPSBwYWdlbm87CisKKwlyZXR1cm4gc3RhdGUtPmJ1Zi5kYXRhOworfQor CitzdGF0aWMgdm9pZAorU2xydUZsdXNoKFNscnVTZWdTdGF0ZSAqc3RhdGUpCit7CisJc3Ry dWN0IGlvdmVjIGlvdmVjID0geworCQkuaW92X2Jhc2UgPSAmc3RhdGUtPmJ1ZiwKKwkJLmlv dl9sZW4gPSBCTENLU1osCisJfTsKKwlvZmZfdAkJb2Zmc2V0OworCisJaWYgKHN0YXRlLT5z ZWdubyA9PSAtMSkKKwkJcmV0dXJuOworCisJb2Zmc2V0ID0gKHN0YXRlLT5wYWdlbm8gJSBT TFJVX1BBR0VTX1BFUl9TRUdNRU5UKSAqIEJMQ0tTWjsKKworCWlmIChwZ19wd3JpdGV2X3dp dGhfcmV0cnkoc3RhdGUtPmZkLCAmaW92ZWMsIDEsIG9mZnNldCkgPCAwKQorCQlwZ19mYXRh bCgiY291bGQgbm90IHdyaXRlIGZpbGUgXCIlc1wiOiAlbSIsIHN0YXRlLT5mbik7Cit9CisK Ky8qCisgKiBGcmVlcyB0aGUgbWFsbG9jZWQgd3JpdGVyLgorICovCit2b2lkCitGcmVlU2xy dVdyaXRlKFNscnVTZWdTdGF0ZSAqc3RhdGUpCit7CisJQXNzZXJ0KHN0YXRlLT53cml0aW5n KTsKKworCVNscnVGbHVzaChzdGF0ZSk7CisKKwlpZiAoc3RhdGUtPmZkICE9IC0xKQorCQlj bG9zZShzdGF0ZS0+ZmQpOworCXBnX2ZyZWUoc3RhdGUpOworfQpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ191cGdyYWRlL3NscnVfaW8uaCBiL3NyYy9iaW4vcGdfdXBncmFkZS9zbHJ1X2lv LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjVjODBhNjc5YjRk Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3NscnVfaW8uaApAQCAt MCwwICsxLDUyIEBACisvKgorICogc2xydV9pby5oCisgKgorICogQ29weXJpZ2h0IChjKSAy MDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogc3JjL2Jpbi9w Z191cGdyYWRlL3NscnVfaW8uaAorICovCisKKyNpZm5kZWYgU0xSVV9JT19ICisjZGVmaW5l IFNMUlVfSU9fSAorCisvKgorICogU3RhdGUgZm9yIHJlYWRpbmcgb3Igd3JpdGluZyBhbiBT TFJVLCB3aXRoIGEgb25lIHBhZ2UgYnVmZmVyLgorICovCit0eXBlZGVmIHN0cnVjdCBTbHJ1 U2VnU3RhdGUKK3sKKwlib29sCQl3cml0aW5nOworCWJvb2wJCWxvbmdfc2VnbWVudF9uYW1l czsKKworCWNoYXIJICAgKmRpcjsKKwljaGFyCSAgICpmbjsKKwlpbnQJCQlmZDsKKwlpbnQ2 NAkJc2Vnbm87CisJdWludDY0CQlwYWdlbm87CisKKwlQR0FsaWduZWRCbG9jayBidWY7Cit9 IFNscnVTZWdTdGF0ZTsKKworZXh0ZXJuIFNscnVTZWdTdGF0ZSAqQWxsb2NTbHJ1UmVhZChj b25zdCBjaGFyICpkaXIsIGJvb2wgbG9uZ19zZWdtZW50X25hbWVzKTsKK2V4dGVybiBjaGFy ICpTbHJ1UmVhZFN3aXRjaFBhZ2VTbG93KFNscnVTZWdTdGF0ZSAqc3RhdGUsIHVpbnQ2NCBw YWdlbm8pOworZXh0ZXJuIHZvaWQgRnJlZVNscnVSZWFkKFNscnVTZWdTdGF0ZSAqc3RhdGUp OworCitzdGF0aWMgaW5saW5lIGNoYXIgKgorU2xydVJlYWRTd2l0Y2hQYWdlKFNscnVTZWdT dGF0ZSAqc3RhdGUsIHVpbnQ2NCBwYWdlbm8pCit7CisJaWYgKHN0YXRlLT5zZWdubyAhPSAt MSAmJiBwYWdlbm8gPT0gc3RhdGUtPnBhZ2VubykKKwkJcmV0dXJuIHN0YXRlLT5idWYuZGF0 YTsKKwlyZXR1cm4gU2xydVJlYWRTd2l0Y2hQYWdlU2xvdyhzdGF0ZSwgcGFnZW5vKTsKK30K KworZXh0ZXJuIFNscnVTZWdTdGF0ZSAqQWxsb2NTbHJ1V3JpdGUoY29uc3QgY2hhciAqZGly LCBib29sIGxvbmdfc2VnbWVudF9uYW1lcyk7CitleHRlcm4gY2hhciAqU2xydVdyaXRlU3dp dGNoUGFnZVNsb3coU2xydVNlZ1N0YXRlICpzdGF0ZSwgdWludDY0IHBhZ2Vubyk7CitleHRl cm4gdm9pZCBGcmVlU2xydVdyaXRlKFNscnVTZWdTdGF0ZSAqc3RhdGUpOworCitzdGF0aWMg aW5saW5lIGNoYXIgKgorU2xydVdyaXRlU3dpdGNoUGFnZShTbHJ1U2VnU3RhdGUgKnN0YXRl LCB1aW50NjQgcGFnZW5vKQoreworCWlmIChzdGF0ZS0+c2Vnbm8gIT0gLTEgJiYgcGFnZW5v ID09IHN0YXRlLT5wYWdlbm8pCisJCXJldHVybiBzdGF0ZS0+YnVmLmRhdGE7CisJcmV0dXJu IFNscnVXcml0ZVN3aXRjaFBhZ2VTbG93KHN0YXRlLCBwYWdlbm8pOworfQorCisjZW5kaWYJ CQkJCQkJLyogU0xSVV9JT19IICovCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4 IDIzYmNlNzJhZTY0Li5mOWRkZDA2ZWMxZCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKQEAgLTE3MjUsNiArMTcyNSw3IEBAIE11bHRpWGFjdE1lbWJlcgogTXVsdGlYYWN0T2Zm c2V0CiBNdWx0aVhhY3RTdGF0ZURhdGEKIE11bHRpWGFjdFN0YXR1cworTXVsdGlYYWN0V3Jp dGVyCiBNdWx0aXJhbmdlSU9EYXRhCiBNdWx0aXJhbmdlUGFyc2VTdGF0ZQogTXVsdGlyYW5n ZVR5cGUKQEAgLTE4MDgsNiArMTgwOSw3IEBAIE9mZnNldFZhck5vZGVzX2NvbnRleHQKIE9p ZAogT2lkT3B0aW9ucwogT2tleXNTdGF0ZQorT2xkTXVsdGlYYWN0UmVhZGVyCiBPbGRUb05l d01hcHBpbmcKIE9sZFRvTmV3TWFwcGluZ0RhdGEKIE9uQ29tbWl0QWN0aW9uCkBAIC0yODA0 LDYgKzI4MDYsNyBAQCBTbHJ1Q3RsRGF0YQogU2xydUVycm9yQ2F1c2UKIFNscnVQYWdlU3Rh dHVzCiBTbHJ1U2NhbkNhbGxiYWNrCitTbHJ1U2VnU3RhdGUKIFNscnVTaGFyZWQKIFNscnVT aGFyZWREYXRhCiBTbHJ1V3JpdGVBbGwKLS0gCjIuNDcuMwoK --------------D5Uqc0qFgdUSc5DsuhKtaq91 Content-Type: text/x-patch; charset=UTF-8; name="v25-0004-Remove-oldestOffset-oldestOffsetKnown-from-multi.patch" Content-Disposition: attachment; filename*0="v25-0004-Remove-oldestOffset-oldestOffsetKnown-from-multi.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBiNTExNjY3NTc3MTAxNzY4ZjI0M2FjYWY4ZTFmMzgyYTFlOWQ0ZmU0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+ CkRhdGU6IFRodSwgNiBOb3YgMjAyNSAxNjoyMDoxOCArMDMwMApTdWJqZWN0OiBbUEFUQ0gg djI1IDA0LzEwXSBSZW1vdmUgb2xkZXN0T2Zmc2V0L29sZGVzdE9mZnNldEtub3duIGZyb20K IG11bHRpeGFjdAoKU2luY2Ugd2UgcmV3cml0ZSBhbGwgbXVsdGl0cmFuc2FjdGlvbnMgZHVy aW5nIHBnX3VwZ3JhZGUsIHRoZSBvbGRlc3QKb2Zmc2V0IGZvciBhIG5ldyBjbHVzdGVyIHdp bGwgbm8gbG9uZ2VyIGJlIG1pc3Npbmcgb24gZGlzYy4KLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS9tdWx0aXhhY3QuYyB8IDEwMSArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBzcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmggICAgICAgICB8ICAgMyAtCiAyIGZp bGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgOTkgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwppbmRleCBlMDMyM2VjMTAxNC4uNzhi YTZkNzJhOTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRp eGFjdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCkBA IC0xNDAsMTQgKzE0MCw2IEBAIHR5cGVkZWYgc3RydWN0IE11bHRpWGFjdFN0YXRlRGF0YQog CU11bHRpWGFjdElkIG9sZGVzdE11bHRpWGFjdElkOwogCU9pZAkJCW9sZGVzdE11bHRpWGFj dERCOwogCi0JLyoKLQkgKiBPbGRlc3QgbXVsdGl4YWN0IG9mZnNldCB0aGF0IGlzIHBvdGVu dGlhbGx5IHJlZmVyZW5jZWQgYnkgYSBtdWx0aXhhY3QKLQkgKiByZWZlcmVuY2VkIGJ5IGEg cmVsYXRpb24uICBXZSBkb24ndCBhbHdheXMga25vdyB0aGlzIHZhbHVlLCBzbyB0aGVyZSdz Ci0JICogYSBmbGFnIGhlcmUgdG8gaW5kaWNhdGUgd2hldGhlciBvciBub3Qgd2UgY3VycmVu dGx5IGRvLgotCSAqLwotCU11bHRpWGFjdE9mZnNldCBvbGRlc3RPZmZzZXQ7Ci0JYm9vbAkJ b2xkZXN0T2Zmc2V0S25vd247Ci0KIAkvKiBzdXBwb3J0IGZvciBhbnRpLXdyYXBhcm91bmQg bWVhc3VyZXMgKi8KIAlNdWx0aVhhY3RJZCBtdWx0aVZhY0xpbWl0OwogCU11bHRpWGFjdElk IG11bHRpV2FybkxpbWl0OwpAQCAtMjM3MSwxMCArMjM2Myw3IEBAIFNldE9mZnNldFZhY3V1 bUxpbWl0KGJvb2wgaXNfc3RhcnR1cCkKIAlNdWx0aVhhY3RJZCBvbGRlc3RNdWx0aVhhY3RJ ZDsKIAlNdWx0aVhhY3RJZCBuZXh0TVhhY3Q7CiAJTXVsdGlYYWN0T2Zmc2V0IG9sZGVzdE9m ZnNldCA9IDA7CS8qIHBsYWNhdGUgY29tcGlsZXIgKi8KLQlNdWx0aVhhY3RPZmZzZXQgcHJl dk9sZGVzdE9mZnNldDsKIAlNdWx0aVhhY3RPZmZzZXQgbmV4dE9mZnNldDsKLQlib29sCQlv bGRlc3RPZmZzZXRLbm93biA9IGZhbHNlOwotCWJvb2wJCXByZXZPbGRlc3RPZmZzZXRLbm93 bjsKIAogCS8qCiAJICogTkI6IEhhdmUgdG8gcHJldmVudCBjb25jdXJyZW50IHRydW5jYXRp b24sIHdlIG1pZ2h0IG90aGVyd2lzZSB0cnkgdG8KQEAgLTIzODcsOCArMjM3Niw2IEBAIFNl dE9mZnNldFZhY3V1bUxpbWl0KGJvb2wgaXNfc3RhcnR1cCkKIAlvbGRlc3RNdWx0aVhhY3RJ ZCA9IE11bHRpWGFjdFN0YXRlLT5vbGRlc3RNdWx0aVhhY3RJZDsKIAluZXh0TVhhY3QgPSBN dWx0aVhhY3RTdGF0ZS0+bmV4dE1YYWN0OwogCW5leHRPZmZzZXQgPSBNdWx0aVhhY3RTdGF0 ZS0+bmV4dE9mZnNldDsKLQlwcmV2T2xkZXN0T2Zmc2V0S25vd24gPSBNdWx0aVhhY3RTdGF0 ZS0+b2xkZXN0T2Zmc2V0S25vd247Ci0JcHJldk9sZGVzdE9mZnNldCA9IE11bHRpWGFjdFN0 YXRlLT5vbGRlc3RPZmZzZXQ7CiAJQXNzZXJ0KE11bHRpWGFjdFN0YXRlLT5maW5pc2hlZFN0 YXJ0dXApOwogCUxXTG9ja1JlbGVhc2UoTXVsdGlYYWN0R2VuTG9jayk7CiAKQEAgLTI0MDYs NTcgKzIzOTMsMjAgQEAgU2V0T2Zmc2V0VmFjdXVtTGltaXQoYm9vbCBpc19zdGFydHVwKQog CQkgKiBvZmZzZXQuCiAJCSAqLwogCQlvbGRlc3RPZmZzZXQgPSBuZXh0T2Zmc2V0OwotCQlv bGRlc3RPZmZzZXRLbm93biA9IHRydWU7CiAJfQotCWVsc2UKKwllbHNlIGlmICghZmluZF9t dWx0aXhhY3Rfc3RhcnQob2xkZXN0TXVsdGlYYWN0SWQsICZvbGRlc3RPZmZzZXQpKQogCXsK LQkJLyoKLQkJICogRmlndXJlIG91dCB3aGVyZSB0aGUgb2xkZXN0IGV4aXN0aW5nIG11bHRp eGFjdCdzIG9mZnNldHMgYXJlCi0JCSAqIHN0b3JlZC4gRHVlIHRvIGJ1Z3MgaW4gZWFybHkg cmVsZWFzZSBvZiBQb3N0Z3JlU1FMIDkuMy5YIGFuZCA5LjQuWCwKLQkJICogdGhlIHN1cHBv c2VkbHktZWFybGllc3QgbXVsdGl4YWN0IG1pZ2h0IG5vdCByZWFsbHkgZXhpc3QuICBXZSBh cmUKLQkJICogY2FyZWZ1bCBub3QgdG8gZmFpbCBpbiB0aGF0IGNhc2UuCi0JCSAqLwotCQlv bGRlc3RPZmZzZXRLbm93biA9Ci0JCQlmaW5kX211bHRpeGFjdF9zdGFydChvbGRlc3RNdWx0 aVhhY3RJZCwgJm9sZGVzdE9mZnNldCk7Ci0KLQkJaWYgKCFvbGRlc3RPZmZzZXRLbm93bikK LQkJCWVyZXBvcnQoTE9HLAotCQkJCQkoZXJybXNnKCJvbGRlc3QgY2hlY2twb2ludGVkIE11 bHRpWGFjdCAldSBkb2VzIG5vdCBleGlzdCBvbiBkaXNrIiwKLQkJCQkJCQlvbGRlc3RNdWx0 aVhhY3RJZCkpKTsKKwkJZXJlcG9ydChMT0csCisJCQkJKGVycm1zZygib2xkZXN0IGNoZWNr cG9pbnRlZCBNdWx0aVhhY3QgJXUgZG9lcyBub3QgZXhpc3Qgb24gZGlzayIsCisJCQkJCQlv bGRlc3RNdWx0aVhhY3RJZCkpKTsKIAl9CiAKIAlMV0xvY2tSZWxlYXNlKE11bHRpWGFjdFRy dW5jYXRpb25Mb2NrKTsKIAotCS8qCi0JICogSWYgd2UgY2FuLCBjb21wdXRlIGxpbWl0cyAo YW5kIGluc3RhbGwgdGhlbSBNdWx0aVhhY3RTdGF0ZSkgdG8gcHJldmVudAotCSAqIG92ZXJy dW4gb2Ygb2xkIGRhdGEgaW4gdGhlIG1lbWJlcnMgU0xSVSBhcmVhLiBXZSBjYW4gb25seSBk byBzbyBpZiB0aGUKLQkgKiBvbGRlc3Qgb2Zmc2V0IGlzIGtub3duIHRob3VnaC4KLQkgKgot CSAqIEZJWE1FOiBJcyAhb2xkZXN0T2Zmc2V0S25vd24gcG9zc2libGUgYW55bW9yZT8gQXQg bGVhc3QgdXBkYXRlIHRoZSBjb21tZW50OgotCSAqIHdlIHdvbid0IG92ZXJydW4gbWVtYmVy cyBhbnltb3JlLgotCSAqLwotCWlmIChwcmV2T2xkZXN0T2Zmc2V0S25vd24pCi0JewotCQkv KgotCQkgKiBJZiB3ZSBmYWlsZWQgdG8gZ2V0IHRoZSBvbGRlc3Qgb2Zmc2V0IHRoaXMgdGlt ZSwgYnV0IHdlIGhhdmUgYQotCQkgKiB2YWx1ZSBmcm9tIGEgcHJldmlvdXMgcGFzcyB0aHJv dWdoIHRoaXMgZnVuY3Rpb24sIHVzZSB0aGUgb2xkCi0JCSAqIHZhbHVlcyByYXRoZXIgdGhh biBhdXRvbWF0aWNhbGx5IGZvcmNpbmcgYW4gYXV0b3ZhY3V1bSBjeWNsZSBhZ2Fpbi4KLQkJ ICovCi0JCW9sZGVzdE9mZnNldCA9IHByZXZPbGRlc3RPZmZzZXQ7Ci0JCW9sZGVzdE9mZnNl dEtub3duID0gdHJ1ZTsKLQl9Ci0KLQkvKiBJbnN0YWxsIHRoZSBjb21wdXRlZCB2YWx1ZXMg Ki8KLQlMV0xvY2tBY3F1aXJlKE11bHRpWGFjdEdlbkxvY2ssIExXX0VYQ0xVU0lWRSk7Ci0J TXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldCA9IG9sZGVzdE9mZnNldDsKLQlNdWx0aVhh Y3RTdGF0ZS0+b2xkZXN0T2Zmc2V0S25vd24gPSBvbGRlc3RPZmZzZXRLbm93bjsKLQlMV0xv Y2tSZWxlYXNlKE11bHRpWGFjdEdlbkxvY2spOwotCiAJLyoKIAkgKiBEbyB3ZSBuZWVkIGF1 dG92YWN1dW0/CUlmIHdlJ3JlIG5vdCBzdXJlLCBhc3N1bWUgeWVzLgogCSAqLwotCXJldHVy biAhb2xkZXN0T2Zmc2V0S25vd24gfHwKLQkJKG5leHRPZmZzZXQgLSBvbGRlc3RPZmZzZXQg PiBNVUxUSVhBQ1RfTUVNQkVSX0FVVE9WQUNfVEhSRVNIT0xEKTsKKwlyZXR1cm4gbmV4dE9m ZnNldCAtIG9sZGVzdE9mZnNldCA+IE1VTFRJWEFDVF9NRU1CRVJfQVVUT1ZBQ19USFJFU0hP TEQ7CiB9CiAKIC8qCkBAIC0yNTAzLDQ3ICsyNDUzLDYgQEAgZmluZF9tdWx0aXhhY3Rfc3Rh cnQoTXVsdGlYYWN0SWQgbXVsdGksIE11bHRpWGFjdE9mZnNldCAqcmVzdWx0KQogCXJldHVy biB0cnVlOwogfQogCi0vKgotICogR2V0TXVsdGlYYWN0SW5mbwotICoKLSAqIFJldHVybnMg aW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgTXVsdGlYYWN0IHN0YXRlLCBhcyBvZjoK LSAqIG11bHRpeGFjdHM6IE51bWJlciBvZiBNdWx0aVhhY3RzIChuZXh0TXVsdGlYYWN0SWQg LSBvbGRlc3RNdWx0aVhhY3RJZCkKLSAqIG1lbWJlcnM6IE51bWJlciBvZiBtZW1iZXIgZW50 cmllcyAobmV4dE9mZnNldCAtIG9sZGVzdE9mZnNldCkKLSAqIG9sZGVzdE11bHRpWGFjdElk OiBPbGRlc3QgTXVsdGlYYWN0IElEIHN0aWxsIGluIHVzZQotICogb2xkZXN0T2Zmc2V0OiBP bGRlc3Qgb2Zmc2V0IHN0aWxsIGluIHVzZQotICoKLSAqIFJldHVybnMgZmFsc2UgaWYgdW5h YmxlIHRvIGRldGVybWluZSwgdGhlIG9sZGVzdCBvZmZzZXQgYmVpbmcgdW5rbm93bi4KLSAq LwotYm9vbAotR2V0TXVsdGlYYWN0SW5mbyh1aW50MzIgKm11bHRpeGFjdHMsIE11bHRpWGFj dE9mZnNldCAqbWVtYmVycywKLQkJCQkgTXVsdGlYYWN0SWQgKm9sZGVzdE11bHRpWGFjdElk LCBNdWx0aVhhY3RPZmZzZXQgKm9sZGVzdE9mZnNldCkKLXsKLQlNdWx0aVhhY3RPZmZzZXQg bmV4dE9mZnNldDsKLQlNdWx0aVhhY3RJZCBuZXh0TXVsdGlYYWN0SWQ7Ci0JYm9vbAkJb2xk ZXN0T2Zmc2V0S25vd247Ci0KLQlMV0xvY2tBY3F1aXJlKE11bHRpWGFjdEdlbkxvY2ssIExX X1NIQVJFRCk7Ci0JbmV4dE9mZnNldCA9IE11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0Owot CSpvbGRlc3RNdWx0aVhhY3RJZCA9IE11bHRpWGFjdFN0YXRlLT5vbGRlc3RNdWx0aVhhY3RJ ZDsKLQluZXh0TXVsdGlYYWN0SWQgPSBNdWx0aVhhY3RTdGF0ZS0+bmV4dE1YYWN0OwotCSpv bGRlc3RPZmZzZXQgPSBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0T2Zmc2V0OwotCW9sZGVzdE9m ZnNldEtub3duID0gTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldEtub3duOwotCUxXTG9j a1JlbGVhc2UoTXVsdGlYYWN0R2VuTG9jayk7Ci0KLQlpZiAoIW9sZGVzdE9mZnNldEtub3du KQotCXsKLQkJKm1lbWJlcnMgPSAwOwotCQkqbXVsdGl4YWN0cyA9IDA7Ci0JCSpvbGRlc3RN dWx0aVhhY3RJZCA9IEludmFsaWRNdWx0aVhhY3RJZDsKLQkJKm9sZGVzdE9mZnNldCA9IDA7 Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQkqbWVtYmVycyA9IG5leHRPZmZzZXQgLSAqb2xk ZXN0T2Zmc2V0OwotCSptdWx0aXhhY3RzID0gbmV4dE11bHRpWGFjdElkIC0gKm9sZGVzdE11 bHRpWGFjdElkOwotCXJldHVybiB0cnVlOwotfQotCiB0eXBlZGVmIHN0cnVjdCBteHRydW5j aW5mbwogewogCWludDY0CQllYXJsaWVzdEV4aXN0aW5nUGFnZTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0 aXhhY3QuaAppbmRleCA3ZDk4ZmUwZmUzMi4uZDY4OGI1NDdjNTQgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv bXVsdGl4YWN0LmgKQEAgLTEwOSw5ICsxMDksNiBAQCBleHRlcm4gYm9vbCBNdWx0aVhhY3RJ ZElzUnVubmluZyhNdWx0aVhhY3RJZCBtdWx0aSwgYm9vbCBpc0xvY2tPbmx5KTsKIGV4dGVy biB2b2lkIE11bHRpWGFjdElkU2V0T2xkZXN0TWVtYmVyKHZvaWQpOwogZXh0ZXJuIGludAlH ZXRNdWx0aVhhY3RJZE1lbWJlcnMoTXVsdGlYYWN0SWQgbXVsdGksIE11bHRpWGFjdE1lbWJl ciAqKm1lbWJlcnMsCiAJCQkJCQkJCSAgYm9vbCBmcm9tX3BndXBncmFkZSwgYm9vbCBpc0xv Y2tPbmx5KTsKLWV4dGVybiBib29sIEdldE11bHRpWGFjdEluZm8odWludDMyICptdWx0aXhh Y3RzLCBNdWx0aVhhY3RPZmZzZXQgKm1lbWJlcnMsCi0JCQkJCQkJIE11bHRpWGFjdElkICpv bGRlc3RNdWx0aVhhY3RJZCwKLQkJCQkJCQkgTXVsdGlYYWN0T2Zmc2V0ICpvbGRlc3RPZmZz ZXQpOwogZXh0ZXJuIGJvb2wgTXVsdGlYYWN0SWRQcmVjZWRlcyhNdWx0aVhhY3RJZCBtdWx0 aTEsIE11bHRpWGFjdElkIG11bHRpMik7CiBleHRlcm4gYm9vbCBNdWx0aVhhY3RJZFByZWNl ZGVzT3JFcXVhbHMoTXVsdGlYYWN0SWQgbXVsdGkxLAogCQkJCQkJCQkJCU11bHRpWGFjdElk IG11bHRpMik7Ci0tIAoyLjQ3LjMKCg== --------------D5Uqc0qFgdUSc5DsuhKtaq91 Content-Type: text/x-patch; charset=UTF-8; name="v25-0005-Reintroduce-MultiXactMemberFreezeThreshold.patch" Content-Disposition: attachment; filename*0="v25-0005-Reintroduce-MultiXactMemberFreezeThreshold.patch" Content-Transfer-Encoding: base64 RnJvbSA4MjExYmE4YmU4ZjhkMmRhNGZjMzIzN2M4MTdiNDExYWQ5ZWJlNzI4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFRodSwgMTMgTm92IDIwMjUgMTI6Mzg6NDEgKzAyMDAK U3ViamVjdDogW1BBVENIIHYyNSAwNS8xMF0gUmVpbnRyb2R1Y2UgTXVsdGlYYWN0TWVtYmVy RnJlZXplVGhyZXNob2xkCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRp eGFjdC5jIHwgMjAyICsrKysrKysrKysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2cuYyAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW0uYyAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9h dXRvdmFjdXVtLmMgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3Qu aCAgICAgICAgIHwgICA0ICstCiA1IGZpbGVzIGNoYW5nZWQsIDE3MCBpbnNlcnRpb25zKCsp LCA1MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS9tdWx0aXhhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFj dC5jCmluZGV4IDc4YmE2ZDcyYTkyLi5jNzJiMmNkNzA5MCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKQEAgLTkxLDEzICs5MSwxMyBAQAogCiAKIC8qCi0g KiBNdWx0aXhhY3QgbWVtYmVycyB3YXJuaW5nIHRocmVzaG9sZC4KLSAqCi0gKiBJZiB0aGUg ZGlmZmVyZW5jZSBiZXR3ZWVuIG5leHRPZmZzZXQgYW5kIG9sZGVzdE9mZnNldCBleGNlZWRz IHRoaXMgdmFsdWUsCi0gKiB3ZSB0cmlnZ2VyIGF1dG92YWN1dW0gaW4gb3JkZXIgdG8gcmVs ZWFzZSBkaXNrIHNwYWNlIGNvbnN1bWVkIGJ5IHRoZQotICogbWVtYmVycyBTTFJVLgorICog VGhyZXNob2xkcyB1c2VkIHRvIGtlZXAgbWVtYmVycyBkaXNrIHVzYWdlIGluIGNoZWNrIHdo ZW4gbXVsdGl4aWRzIGhhdmUgYQorICogbG90IG9mIG1lbWJlcnMuICBXaGVuIE1VTFRJWEFD VF9NRU1CRVJfTE9XX1RIUkVTSE9MRCBpcyByZWFjaGVkLCB2YWN1dW0KKyAqIHN0YXJ0cyBm cmVlemluZyBtdWx0aXhpZHMgbW9yZSBhZ2dyZXNzaXZlbHksIGV2ZW4gaWYgdGhlIG5vcm1h bCBtdWx0aXhpZAorICogYWdlIGxpbWl0cyBoYXZlbid0IGJlZW4gcmVhY2hlZCB5ZXQuCiAg Ki8KLSNkZWZpbmUgTVVMVElYQUNUX01FTUJFUl9BVVRPVkFDX1RIUkVTSE9MRAkJVUlOVDY0 Q09OU1QoNDAwMDAwMDAwMCkKKyNkZWZpbmUgTVVMVElYQUNUX01FTUJFUl9MT1dfVEhSRVNI T0xECQlVSU5UNjRDT05TVCgyMDAwMDAwMDAwKQorI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVS X0hJR0hfVEhSRVNIT0xECQlVSU5UNjRDT05TVCg0MDAwMDAwMDAwKQogCiBzdGF0aWMgaW5s aW5lIE11bHRpWGFjdElkCiBQcmV2aW91c011bHRpWGFjdElkKE11bHRpWGFjdElkIG11bHRp KQpAQCAtMTQwLDYgKzE0MCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBNdWx0aVhhY3RTdGF0ZURh dGEKIAlNdWx0aVhhY3RJZCBvbGRlc3RNdWx0aVhhY3RJZDsKIAlPaWQJCQlvbGRlc3RNdWx0 aVhhY3REQjsKIAorCS8qCisJICogT2xkZXN0IG11bHRpeGFjdCBvZmZzZXQgdGhhdCBpcyBw b3RlbnRpYWxseSByZWZlcmVuY2VkIGJ5IGEgbXVsdGl4YWN0CisJICogcmVmZXJlbmNlZCBi eSBhIHJlbGF0aW9uLgorCSAqLworCU11bHRpWGFjdE9mZnNldCBvbGRlc3RPZmZzZXQ7CisK IAkvKiBzdXBwb3J0IGZvciBhbnRpLXdyYXBhcm91bmQgbWVhc3VyZXMgKi8KIAlNdWx0aVhh Y3RJZCBtdWx0aVZhY0xpbWl0OwogCU11bHRpWGFjdElkIG11bHRpV2FybkxpbWl0OwpAQCAt Mjc2LDcgKzI4Miw3IEBAIHN0YXRpYyBib29sIE11bHRpWGFjdE9mZnNldFByZWNlZGVzKE11 bHRpWGFjdE9mZnNldCBvZmZzZXQxLAogCQkJCQkJCQkJTXVsdGlYYWN0T2Zmc2V0IG9mZnNl dDIpOwogc3RhdGljIHZvaWQgRXh0ZW5kTXVsdGlYYWN0T2Zmc2V0KE11bHRpWGFjdElkIG11 bHRpKTsKIHN0YXRpYyB2b2lkIEV4dGVuZE11bHRpWGFjdE1lbWJlcihNdWx0aVhhY3RPZmZz ZXQgb2Zmc2V0LCBpbnQgbm1lbWJlcnMpOwotc3RhdGljIGJvb2wgU2V0T2Zmc2V0VmFjdXVt TGltaXQoYm9vbCBpc19zdGFydHVwKTsKK3N0YXRpYyB2b2lkIFNldE9mZnNldFZhY3V1bUxp bWl0KHZvaWQpOwogc3RhdGljIGJvb2wgZmluZF9tdWx0aXhhY3Rfc3RhcnQoTXVsdGlYYWN0 SWQgbXVsdGksIE11bHRpWGFjdE9mZnNldCAqcmVzdWx0KTsKIHN0YXRpYyB2b2lkIFdyaXRl TVRydW5jYXRlWGxvZ1JlYyhPaWQgb2xkZXN0TXVsdGlEQiwKIAkJCQkJCQkJICBNdWx0aVhh Y3RJZCBzdGFydFRydW5jT2ZmLApAQCAtMTk0NSw4ICsxOTUxLDggQEAgVHJpbU11bHRpWGFj dCh2b2lkKQogCU11bHRpWGFjdFN0YXRlLT5maW5pc2hlZFN0YXJ0dXAgPSB0cnVlOwogCUxX TG9ja1JlbGVhc2UoTXVsdGlYYWN0R2VuTG9jayk7CiAKLQkvKiBOb3cgY29tcHV0ZSBob3cg ZmFyIGF3YXkgdGhlIG5leHQgbWVtYmVycyB3cmFwYXJvdW5kIGlzLiAqLwotCVNldE11bHRp WGFjdElkTGltaXQob2xkZXN0TVhhY3QsIG9sZGVzdE1YYWN0REIsIHRydWUpOworCS8qIE5v dyBjb21wdXRlIGhvdyBmYXIgYXdheSB0aGUgbmV4dCBtdWx0aXhpZCB3cmFwYXJvdW5kIGlz LiAqLworCVNldE11bHRpWGFjdElkTGltaXQob2xkZXN0TVhhY3QsIG9sZGVzdE1YYWN0REIp OwogfQogCiAvKgpAQCAtMjAxNSwyOCArMjAyMSwyNCBAQCBNdWx0aVhhY3RTZXROZXh0TVhh Y3QoTXVsdGlYYWN0SWQgbmV4dE11bHRpLAogICogZGF0bWlubXhpZCAoaWUsIHRoZSBvbGRl c3QgTXVsdGlYYWN0SWQgdGhhdCBtaWdodCBleGlzdCBpbiBhbnkgZGF0YWJhc2UKICAqIG9m IG91ciBjbHVzdGVyKSwgYW5kIHRoZSBPSUQgb2YgdGhlIChvciBhKSBkYXRhYmFzZSB3aXRo IHRoYXQgdmFsdWUuCiAgKgotICogaXNfc3RhcnR1cCBpcyB0cnVlIHdoZW4gd2UgYXJlIGp1 c3Qgc3RhcnRpbmcgdGhlIGNsdXN0ZXIsIGZhbHNlIHdoZW4gd2UKLSAqIGFyZSB1cGRhdGlu ZyBzdGF0ZSBpbiBhIHJ1bm5pbmcgY2x1c3Rlci4gIFRoaXMgb25seSBhZmZlY3RzIGxvZyBt ZXNzYWdlcy4KKyAqIFRoaXMgYWxzbyB1cGRhdGVzIE11bHRpWGFjdFN0YXRlLT5vbGRlc3RP ZmZzZXQsIGJ5IGxvb2tpbmcgdXAgdGhlIG9mZnNldCBvZgorICogTXVsdGlYYWN0U3RhdGUt Pm9sZGVzdE11bHRpWGFjdElkLgogICovCiB2b2lkCi1TZXRNdWx0aVhhY3RJZExpbWl0KE11 bHRpWGFjdElkIG9sZGVzdF9kYXRtaW5teGlkLCBPaWQgb2xkZXN0X2RhdG9pZCwKLQkJCQkJ Ym9vbCBpc19zdGFydHVwKQorU2V0TXVsdGlYYWN0SWRMaW1pdChNdWx0aVhhY3RJZCBvbGRl c3RfZGF0bWlubXhpZCwgT2lkIG9sZGVzdF9kYXRvaWQpCiB7CiAJTXVsdGlYYWN0SWQgbXVs dGlWYWNMaW1pdDsKIAlNdWx0aVhhY3RJZCBtdWx0aVdhcm5MaW1pdDsKIAlNdWx0aVhhY3RJ ZCBtdWx0aVN0b3BMaW1pdDsKIAlNdWx0aVhhY3RJZCBtdWx0aVdyYXBMaW1pdDsKIAlNdWx0 aVhhY3RJZCBjdXJNdWx0aTsKLQlib29sCQluZWVkc19vZmZzZXRfdmFjdXVtOwogCiAJQXNz ZXJ0KE11bHRpWGFjdElkSXNWYWxpZChvbGRlc3RfZGF0bWlubXhpZCkpOwogCiAJLyoKIAkg KiBXZSBwcmV0ZW5kIHRoYXQgYSB3cmFwIHdpbGwgaGFwcGVuIGhhbGZ3YXkgdGhyb3VnaCB0 aGUgbXVsdGl4YWN0IElECiAJICogc3BhY2UsIGJ1dCB0aGF0J3Mgbm90IHJlYWxseSB0cnVl LCBiZWNhdXNlIG11bHRpeGFjdHMgd3JhcCBkaWZmZXJlbnRseQotCSAqIGZyb20gdHJhbnNh Y3Rpb24gSURzLiAgTm90ZSB0aGF0LCBzZXBhcmF0ZWx5IGZyb20gYW55IGNvbmNlcm4gYWJv dXQKLQkgKiBtdWx0aXhhY3QgSURzIHdyYXBwaW5nLCB3ZSBtdXN0IGVuc3VyZSB0aGF0IG11 bHRpeGFjdCBtZW1iZXJzIGRvIG5vdAotCSAqIHdyYXAuICBMaW1pdHMgZm9yIHRoYXQgYXJl IHNldCBpbiBTZXRPZmZzZXRWYWN1dW1MaW1pdCwgbm90IGhlcmUuCisJICogZnJvbSB0cmFu c2FjdGlvbiBJRHMuCiAJICovCiAJbXVsdGlXcmFwTGltaXQgPSBvbGRlc3RfZGF0bWlubXhp ZCArIChNYXhNdWx0aVhhY3RJZCA+PiAxKTsKIAlpZiAobXVsdGlXcmFwTGltaXQgPCBGaXJz dE11bHRpWGFjdElkKQpAQCAtMjEwNCw4ICsyMTA2LDEzIEBAIFNldE11bHRpWGFjdElkTGlt aXQoTXVsdGlYYWN0SWQgb2xkZXN0X2RhdG1pbm14aWQsIE9pZCBvbGRlc3RfZGF0b2lkLAog CiAJQXNzZXJ0KCFJblJlY292ZXJ5KTsKIAotCS8qIFNldCBsaW1pdHMgZm9yIG9mZnNldCB2 YWN1dW0uICovCi0JbmVlZHNfb2Zmc2V0X3ZhY3V1bSA9IFNldE9mZnNldFZhY3V1bUxpbWl0 KGlzX3N0YXJ0dXApOworCS8qCisJICogT2Zmc2V0cyBhcmUgNjQtYml0cyB3aWRlIGFuZCBu ZXZlciB3cmFwIGFyb3VuZCwgc28gd2UgZG9uJ3QgbmVlZCB0bworCSAqIGNvbnNpZGVyIHRo ZW0gZm9yIGVtZXJnZW5jeSBhdXRvdmFjdXVtIHB1cnBvc2VzLiAgQnV0IG5vdyB0aGF0IHdl J3JlIGluCisJICogYSBjb25zaXN0ZW50IHN0YXRlLCBkZXRlcm1pbmUgTXVsdGlYYWN0U3Rh dGUtPm9sZGVzdE9mZnNldCwgdG8gYmUgdXNlZAorCSAqIHRvIGNhbGN1bGF0ZSBmcmVlemlu ZyBjdXRvZmYgdG8ga2VlcCB0aGUgb2Zmc2V0cyBkaXNrIHVzYWdlIGluIGNoZWNrLgorCSAq LworCVNldE9mZnNldFZhY3V1bUxpbWl0KCk7CiAKIAkvKgogCSAqIElmIHBhc3QgdGhlIGF1 dG92YWN1dW0gZm9yY2UgcG9pbnQsIGltbWVkaWF0ZWx5IHNpZ25hbCBhbiBhdXRvdmFjCkBA IC0yMTE0LDggKzIxMjEsNyBAQCBTZXRNdWx0aVhhY3RJZExpbWl0KE11bHRpWGFjdElkIG9s ZGVzdF9kYXRtaW5teGlkLCBPaWQgb2xkZXN0X2RhdG9pZCwKIAkgKiBkYXRhYmFzZSwgaXQn bGwgY2FsbCBoZXJlLCBhbmQgd2UnbGwgc2lnbmFsIHRoZSBwb3N0bWFzdGVyIHRvIHN0YXJ0 CiAJICogYW5vdGhlciBpdGVyYXRpb24gaW1tZWRpYXRlbHkgaWYgdGhlcmUgYXJlIHN0aWxs IGFueSBvbGQgZGF0YWJhc2VzLgogCSAqLwotCWlmICgoTXVsdGlYYWN0SWRQcmVjZWRlcyht dWx0aVZhY0xpbWl0LCBjdXJNdWx0aSkgfHwKLQkJIG5lZWRzX29mZnNldF92YWN1dW0pICYm IElzVW5kZXJQb3N0bWFzdGVyKQorCWlmIChNdWx0aVhhY3RJZFByZWNlZGVzKG11bHRpVmFj TGltaXQsIGN1ck11bHRpKSAmJiBJc1VuZGVyUG9zdG1hc3RlcikKIAkJU2VuZFBvc3RtYXN0 ZXJTaWduYWwoUE1TSUdOQUxfU1RBUlRfQVVUT1ZBQ19MQVVOQ0hFUik7CiAKIAkvKiBHaXZl IGFuIGltbWVkaWF0ZSB3YXJuaW5nIGlmIHBhc3QgdGhlIHdyYXAgd2FybiBwb2ludCAqLwpA QCAtMjE5OCw3ICsyMjA0LDcgQEAgTXVsdGlYYWN0QWR2YW5jZU9sZGVzdChNdWx0aVhhY3RJ ZCBvbGRlc3RNdWx0aSwgT2lkIG9sZGVzdE11bHRpREIpCiAJQXNzZXJ0KEluUmVjb3Zlcnkp OwogCiAJaWYgKE11bHRpWGFjdElkUHJlY2VkZXMoTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE11 bHRpWGFjdElkLCBvbGRlc3RNdWx0aSkpCi0JCVNldE11bHRpWGFjdElkTGltaXQob2xkZXN0 TXVsdGksIG9sZGVzdE11bHRpREIsIGZhbHNlKTsKKwkJU2V0TXVsdGlYYWN0SWRMaW1pdChv bGRlc3RNdWx0aSwgb2xkZXN0TXVsdGlEQik7CiB9CiAKIC8qCkBAIC0yMzQ4LDIyICsyMzU0 LDE3IEBAIEdldE9sZGVzdE11bHRpWGFjdElkKHZvaWQpCiB9CiAKIC8qCi0gKiBEZXRlcm1p bmUgaWYgd2UgbmVlZCB0byB2YWN1dW0gdG8ga2VlcCB0aGUgc2l6ZSBvZiB0aGUgbWVtYmVy cyBTTFJVIGluCi0gKiBjaGVjay4KLSAqCi0gKiBUbyBkbyBzbyBkZXRlcm1pbmUgd2hhdCdz IHRoZSBvbGRlc3QgbWVtYmVyIG9mZnNldCBhbmQgaW5zdGFsbCB0aGUgbGltaXQKLSAqIGlu Zm8gaW4gTXVsdGlYYWN0U3RhdGUsIHdoZXJlIGl0IGNhbiBiZSB1c2VkIHRvIHByZXZlbnQg b3ZlcnJ1biBvZiBvbGQgZGF0YQotICogaW4gdGhlIG1lbWJlcnMgU0xSVSBhcmVhLgotICoK LSAqIFRoZSByZXR1cm4gdmFsdWUgaXMgdHJ1ZSBpZiBhdXRvdmFjdXVtIGlzIHJlcXVpcmVk IGFuZCBmYWxzZSBvdGhlcndpc2UuCisgKiBEZXRlcm1pbmUgd2hhdCdzIHRoZSBvbGRlc3Qg bWVtYmVyIG9mZnNldCBhbmQgaW5zdGFsbCBpdCBpbiBNdWx0aVhhY3RTdGF0ZSwKKyAqIHdo ZXJlIGl0IGNhbiBiZSB1c2VkIHRvIGFkanVzdCBtdWx0aXhpZCBmcmVlemluZyBjdXRvZmZz LgogICovCi1zdGF0aWMgYm9vbAotU2V0T2Zmc2V0VmFjdXVtTGltaXQoYm9vbCBpc19zdGFy dHVwKQorc3RhdGljIHZvaWQKK1NldE9mZnNldFZhY3V1bUxpbWl0KHZvaWQpCiB7CiAJTXVs dGlYYWN0SWQgb2xkZXN0TXVsdGlYYWN0SWQ7CiAJTXVsdGlYYWN0SWQgbmV4dE1YYWN0Owog CU11bHRpWGFjdE9mZnNldCBvbGRlc3RPZmZzZXQgPSAwOwkvKiBwbGFjYXRlIGNvbXBpbGVy ICovCiAJTXVsdGlYYWN0T2Zmc2V0IG5leHRPZmZzZXQ7CisJYm9vbAkJb2xkZXN0T2Zmc2V0 S25vd24gPSBmYWxzZTsKIAogCS8qCiAJICogTkI6IEhhdmUgdG8gcHJldmVudCBjb25jdXJy ZW50IHRydW5jYXRpb24sIHdlIG1pZ2h0IG90aGVyd2lzZSB0cnkgdG8KQEAgLTIzOTMsMjAg KzIzOTQsMzcgQEAgU2V0T2Zmc2V0VmFjdXVtTGltaXQoYm9vbCBpc19zdGFydHVwKQogCQkg KiBvZmZzZXQuCiAJCSAqLwogCQlvbGRlc3RPZmZzZXQgPSBuZXh0T2Zmc2V0OworCQlvbGRl c3RPZmZzZXRLbm93biA9IHRydWU7CiAJfQotCWVsc2UgaWYgKCFmaW5kX211bHRpeGFjdF9z dGFydChvbGRlc3RNdWx0aVhhY3RJZCwgJm9sZGVzdE9mZnNldCkpCisJZWxzZQogCXsKLQkJ ZXJlcG9ydChMT0csCi0JCQkJKGVycm1zZygib2xkZXN0IGNoZWNrcG9pbnRlZCBNdWx0aVhh Y3QgJXUgZG9lcyBub3QgZXhpc3Qgb24gZGlzayIsCi0JCQkJCQlvbGRlc3RNdWx0aVhhY3RJ ZCkpKTsKKwkJLyoKKwkJICogRmlndXJlIG91dCB0aGUgb2Zmc2V0IGF0IHdoaWNoIG9sZGVz dCBleGlzdGluZyBtdWx0aXhhY3QncyBtZW1iZXJzCisJCSAqIGFyZSBzdG9yZWQuICBJZiB3 ZSBjYW5ub3QgZmluZCBpdCwgYmUgY2FyZWZ1bCBub3QgdG8gZmFpbC4gIChXZSBoYWQKKwkJ ICogYnVncyBpbiBlYXJseSByZWxlYXNlcyBvZiBQb3N0Z3JlU1FMIDkuMy5YIGFuZCA5LjQu WCwgdGhlCisJCSAqIHN1cHBvc2VkbHktZWFybGllc3QgbXVsdGl4YWN0IG1pZ2h0IG5vdCBy ZWFsbHkgZXhpc3QuICBUaG9zZSBzaG91bGQKKwkJICogYmUgbG9uZyBnb25lIGJ5IG5vdywg YnV0IGxldCdzIG5ldmVydGhlbGVzcyBiZSBjYXJlZnVsIG5vdCB0byBmYWlsCisJCSAqIGlu IHRoYXQgY2FzZS4pCisJCSAqLworCQlvbGRlc3RPZmZzZXRLbm93biA9CisJCQlmaW5kX211 bHRpeGFjdF9zdGFydChvbGRlc3RNdWx0aVhhY3RJZCwgJm9sZGVzdE9mZnNldCk7CisKKwkJ aWYgKCFvbGRlc3RPZmZzZXRLbm93bikKKwkJCWVyZXBvcnQoTE9HLAorCQkJCQkoZXJybXNn KCJvbGRlc3QgY2hlY2twb2ludGVkIE11bHRpWGFjdCAldSBkb2VzIG5vdCBleGlzdCBvbiBk aXNrIiwKKwkJCQkJCQlvbGRlc3RNdWx0aVhhY3RJZCkpKTsKKwkJcmV0dXJuOwogCX0KIAog CUxXTG9ja1JlbGVhc2UoTXVsdGlYYWN0VHJ1bmNhdGlvbkxvY2spOwogCi0JLyoKLQkgKiBE byB3ZSBuZWVkIGF1dG92YWN1dW0/CUlmIHdlJ3JlIG5vdCBzdXJlLCBhc3N1bWUgeWVzLgot CSAqLwotCXJldHVybiBuZXh0T2Zmc2V0IC0gb2xkZXN0T2Zmc2V0ID4gTVVMVElYQUNUX01F TUJFUl9BVVRPVkFDX1RIUkVTSE9MRDsKKwkvKiBJbnN0YWxsIHRoZSBjb21wdXRlZCB2YWx1 ZSAqLworCWlmIChvbGRlc3RPZmZzZXRLbm93bikKKwl7CisJCUxXTG9ja0FjcXVpcmUoTXVs dGlYYWN0R2VuTG9jaywgTFdfRVhDTFVTSVZFKTsKKwkJTXVsdGlYYWN0U3RhdGUtPm9sZGVz dE9mZnNldCA9IG9sZGVzdE9mZnNldDsKKwkJTFdMb2NrUmVsZWFzZShNdWx0aVhhY3RHZW5M b2NrKTsKKwl9CiB9CiAKIC8qCkBAIC0yNDUzLDYgKzI0NzEsMTA3IEBAIGZpbmRfbXVsdGl4 YWN0X3N0YXJ0KE11bHRpWGFjdElkIG11bHRpLCBNdWx0aVhhY3RPZmZzZXQgKnJlc3VsdCkK IAlyZXR1cm4gdHJ1ZTsKIH0KIAorLyoKKyAqIERldGVybWluZSBob3cgbWFueSBtdWx0aXhh Y3RzLCBhbmQgaG93IG1hbnkgbXVsdGl4YWN0IG1lbWJlcnMsIGN1cnJlbnRseQorICogZXhp c3QuCisgKi8KK3N0YXRpYyB2b2lkCitSZWFkTXVsdGlYYWN0Q291bnRzKHVpbnQzMiAqbXVs dGl4YWN0cywgTXVsdGlYYWN0T2Zmc2V0ICptZW1iZXJzKQoreworCU11bHRpWGFjdE9mZnNl dCBuZXh0T2Zmc2V0OworCU11bHRpWGFjdE9mZnNldCBvbGRlc3RPZmZzZXQ7CisJTXVsdGlY YWN0SWQgb2xkZXN0TXVsdGlYYWN0SWQ7CisJTXVsdGlYYWN0SWQgbmV4dE11bHRpWGFjdElk OworCisJTFdMb2NrQWNxdWlyZShNdWx0aVhhY3RHZW5Mb2NrLCBMV19TSEFSRUQpOworCW5l eHRPZmZzZXQgPSBNdWx0aVhhY3RTdGF0ZS0+bmV4dE9mZnNldDsKKwlvbGRlc3RNdWx0aVhh Y3RJZCA9IE11bHRpWGFjdFN0YXRlLT5vbGRlc3RNdWx0aVhhY3RJZDsKKwluZXh0TXVsdGlY YWN0SWQgPSBNdWx0aVhhY3RTdGF0ZS0+bmV4dE1YYWN0OworCW9sZGVzdE9mZnNldCA9IE11 bHRpWGFjdFN0YXRlLT5vbGRlc3RPZmZzZXQ7CisJTFdMb2NrUmVsZWFzZShNdWx0aVhhY3RH ZW5Mb2NrKTsKKworCSptZW1iZXJzID0gbmV4dE9mZnNldCAtIG9sZGVzdE9mZnNldDsKKwkq bXVsdGl4YWN0cyA9IG5leHRNdWx0aVhhY3RJZCAtIG9sZGVzdE11bHRpWGFjdElkOworfQor CisvKgorICogTXVsdGl4YWN0IG1lbWJlcnMgY2FuIGJlIHJlbW92ZWQgb25jZSB0aGUgbXVs dGl4YWN0cyB0aGF0IHJlZmVyIHRvIHRoZW0gYXJlCisgKiBvbGRlciB0aGFuIGV2ZXJ5IGRh dG1pbm14aWQuICBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSBhbmQKKyAq IHZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX3RhYmxlX2FnZSB3b3JrIHRvZ2V0aGVyIHRvIG1h a2Ugc3VyZSB3ZSBuZXZlciBoYXZlCisgKiB0b28gbWFueSBtdWx0aXhhY3RzOyB3ZSBob3Bl IHRoYXQsIGF0IGxlYXN0IHVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzLAorICogdGhpcyB3 aWxsIGFsc28gYmUgc3VmZmljaWVudCB0byBrZWVwIHVzIGZyb20gdXNpbmcgdG9vIG1hbnkg b2Zmc2V0cy4KKyAqIEhvd2V2ZXIsIGlmIHRoZSBhdmVyYWdlIG11bHRpeGFjdCBoYXMgbWFu eSBtZW1iZXJzLCB3ZSBtaWdodCBhY2N1bXVsYXRlIGEKKyAqIGh1Z2UgYW1vdW50IG9mIG1l bWJlcnMsIGNvbnN1bWluZyBkaXNrIHNwYWNlLCB3aGlsZSBzdGlsbCB1c2luZyBmZXcgZW5v dWdoCisgKiBtdWx0aXhpZHMgdGhhdCB0aGUgbXVsdGl4aWQgbGltaXRzIGZhaWwgdG8gdHJp Z2dlciByZWxtaW5teGlkIGFkdmFuY2VtZW50CisgKiBieSBWQUNVVU0uCisgKgorICogVG8g cHJldmVudCB0aGF0LCBpZiBtb3JlIHRoYW4gYSBjZXJ0YWluIGFtb3VudCBvZiBtZW1iZXJz IHNwYWNlIGlzIHVzZWQKKyAqIChNVUxUSVhBQ1RfTUVNQkVSX0xPV19USFJFU0hPTEQpLCB3 ZSBlZmZlY3RpdmVseSByZWR1Y2UKKyAqIGF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9t YXhfYWdlIHRvIGEgdmFsdWUganVzdCBsZXNzIHRoYW4gdGhlIG51bWJlciBvZgorICogbXVs dGl4YWN0cyBpbiB1c2UuICBXZSBob3BlIHRoYXQgdGhpcyB3aWxsIHF1aWNrbHkgdHJpZ2dl ciBhdXRvdmFjdXVtaW5nIG9uCisgKiB0aGUgdGFibGUgb3IgdGFibGVzIHdpdGggdGhlIG9s ZGVzdCByZWxtaW5teGlkLCB0aHVzIGFsbG93aW5nIGRhdG1pbm14aWQKKyAqIHZhbHVlcyB0 byBhZHZhbmNlIGFuZCByZW1vdmluZyBzb21lIG1lbWJlcnMuCisgKgorICogQXMgdGhlIGFt b3VudCBvZiB0aGUgbWVtYmVyIHNwYWNlIGluIHVzZSBncm93cywgd2UgYmVjb21lIG1vcmUg YWdncmVzc2l2ZQorICogaW4gY2xhbXBpbmcgdGhpcyB2YWx1ZS4gIFRoYXQgbm90IG9ubHkg Y2F1c2VzIGF1dG92YWN1dW0gdG8gcmFtcCB1cCwgYnV0CisgKiBhbHNvIG1ha2VzIGFueSBt YW51YWwgdmFjdXVtcyB0aGUgdXNlciBpc3N1ZXMgbW9yZSBhZ2dyZXNzaXZlLiAgVGhpcwor ICogaGFwcGVucyBiZWNhdXNlIHZhY3V1bV9nZXRfY3V0b2ZmcygpIHdpbGwgY2xhbXAgdGhl IGZyZWV6ZSB0YWJsZSBhbmQgdGhlCisgKiBtaW5pbXVtIGZyZWV6ZSBhZ2UgY3V0b2ZmcyBi YXNlZCBvbiB0aGUgZWZmZWN0aXZlCisgKiBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVf bWF4X2FnZSB0aGlzIGZ1bmN0aW9uIHJldHVybnMuICBBdCB0aGUgZXh0cmVtZSwKKyAqIHdo ZW4gdGhlIG1lbWJlcnMgdXNhZ2UgcmVhY2hlcyBNVUxUSVhBQ1RfTUVNQkVSX0hJR0hfVEhS RVNIT0xELCB3ZSdsbCBjbGFtcAorICogZnJlZXplX21heF9hZ2UgdG8gemVybywgYW5kIGV2 ZXJ5IHZhY3V1bSBvZiBhbnkgdGFibGUgd2lsbCBmcmVlemUgZXZlcnkKKyAqIG11bHRpeGFj dC4KKyAqLworaW50CitNdWx0aVhhY3RNZW1iZXJGcmVlemVUaHJlc2hvbGQodm9pZCkKK3sK KwlNdWx0aVhhY3RPZmZzZXQgbWVtYmVyczsKKwl1aW50MzIJCW11bHRpeGFjdHM7CisJdWlu dDMyCQl2aWN0aW1fbXVsdGl4YWN0czsKKwlkb3VibGUJCWZyYWN0aW9uOworCWludAkJCXJl c3VsdDsKKworCS8qCisJICogUmVhZCB0aGUgY3VycmVudCBvZmZzZXRzIGFuZCBtZW1iZXJz IHVzYWdlLgorCSAqCisJICogTm90ZTogSW4gdGhlIGNhc2UgdGhhdCB3ZSBoYXZlIGJlZW4g dW5hYmxlIHRvIGNhbGN1bGF0ZSBvbGRlc3RPZmZzZXQsCisJICogYmVjYXVzZSB3ZSBmYWls ZWQgdG8gZmluZCB0aGUgb2Zmc2V0IG9mIHRoZSBvbGRlc3QgbXVsdGl4aWQsIHdlIGFzc3Vt ZQorCSAqIHRoZSB3b3JzdCBiZWNhdXNlIG9sZGVzdE9mZnNldCB3aWxsIGJlIGxlZnQgdG8g emVybyBpbiB0aGF0IGNhc2UuCisJICovCisJUmVhZE11bHRpWGFjdENvdW50cygmbXVsdGl4 YWN0cywgJm1lbWJlcnMpOworCisJLyogSWYgbWVtYmVyIHNwYWNlIHV0aWxpemF0aW9uIGlz IGxvdywgbm8gc3BlY2lhbCBhY3Rpb24gaXMgcmVxdWlyZWQuICovCisJaWYgKG1lbWJlcnMg PD0gTVVMVElYQUNUX01FTUJFUl9MT1dfVEhSRVNIT0xEKQorCQlyZXR1cm4gYXV0b3ZhY3V1 bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2U7CisKKwkvKgorCSAqIENvbXB1dGUgYSB0YXJn ZXQgZm9yIHJlbG1pbm14aWQgYWR2YW5jZW1lbnQuICBUaGUgbnVtYmVyIG9mIG11bHRpeGFj dHMKKwkgKiB3ZSB0cnkgdG8gZWxpbWluYXRlIGZyb20gdGhlIHN5c3RlbSBpcyBiYXNlZCBv biBob3cgZmFyIHdlIGFyZSBwYXN0CisJICogTVVMVElYQUNUX01FTUJFUl9MT1dfVEhSRVNI T0xELgorCSAqCisJICogVGhlIHdheSB0aGlzIGZvcm11bGEgd29ya3MgaXMgdGhhdCB3aGVu IG1lbWJlcnMgaXMgZXhhY3RseSBhdCB0aGUgbG93CisJICogdGhyZXNob2xkLCBmcmFjdGlv biA9PSAwLjAsIGFuZCB3ZSBzZXQgZnJlZXplX21heF9hZ2UgZXF1YWwgdG8KKwkgKiBteGlk X2FnZShvbGRlc3RNdWx0aVhhY3RJZCkuICBBcyBtZW1iZXJzIGdyb3dzIGZ1cnRoZXIsIHRv d2FyZHMgdGhlCisJICogaGlnaCB0aHJlc2hvbGQsIGZyYWN0aW9uIGdyb3dzIGxpbmVhcmx5 IGZyb20gMC4wIHRvIDEuMCwgYW5kIHRoZSByZXN1bHQKKwkgKiBzaHJpbmtzIGZyb20gbXhp ZF9hZ2Uob2xkZXN0TXVsdGlYYWN0SWQpIHRvIDAuICBCZXlvbmQgdGhlIGhpZ2gKKwkgKiB0 aHJlc2hvbGQsIGZyYWN0aW9uID4gMS4wIGFuZCB0aGUgcmVzdWx0IGlzIGNsYW1wZWQgdG8g MC4KKwkgKi8KKwlmcmFjdGlvbiA9IChkb3VibGUpIChtZW1iZXJzIC0gTVVMVElYQUNUX01F TUJFUl9MT1dfVEhSRVNIT0xEKSAvCisJCShNVUxUSVhBQ1RfTUVNQkVSX0hJR0hfVEhSRVNI T0xEIC0gTVVMVElYQUNUX01FTUJFUl9MT1dfVEhSRVNIT0xEKTsKKwl2aWN0aW1fbXVsdGl4 YWN0cyA9IG11bHRpeGFjdHMgKiBmcmFjdGlvbjsKKworCS8qIGZyYWN0aW9uIGNvdWxkIGJl ID4gMS4wLCBidXQgbG93ZXN0IHBvc3NpYmxlIGZyZWV6ZSBhZ2UgaXMgemVybyAqLworCWlm ICh2aWN0aW1fbXVsdGl4YWN0cyA+IG11bHRpeGFjdHMpCisJCXJldHVybiAwOworCXJlc3Vs dCA9IG11bHRpeGFjdHMgLSB2aWN0aW1fbXVsdGl4YWN0czsKKworCS8qCisJICogQ2xhbXAg dG8gYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UsIHNvIHRoYXQgd2UgbmV2 ZXIgbWFrZQorCSAqIGF1dG92YWN1dW0gbGVzcyBhZ2dyZXNzaXZlIHRoYW4gaXQgd291bGQg b3RoZXJ3aXNlIGJlLgorCSAqLworCXJldHVybiBNaW4ocmVzdWx0LCBhdXRvdmFjdXVtX211 bHRpeGFjdF9mcmVlemVfbWF4X2FnZSk7Cit9CisKIHR5cGVkZWYgc3RydWN0IG14dHJ1bmNp bmZvCiB7CiAJaW50NjQJCWVhcmxpZXN0RXhpc3RpbmdQYWdlOwpAQCAtMjY2OSw2ICsyNzg4 LDcgQEAgVHJ1bmNhdGVNdWx0aVhhY3QoTXVsdGlYYWN0SWQgbmV3T2xkZXN0TXVsdGksIE9p ZCBuZXdPbGRlc3RNdWx0aURCKQogCUxXTG9ja0FjcXVpcmUoTXVsdGlYYWN0R2VuTG9jaywg TFdfRVhDTFVTSVZFKTsKIAlNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0TXVsdGlYYWN0SWQgPSBu ZXdPbGRlc3RNdWx0aTsKIAlNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0TXVsdGlYYWN0REIgPSBu ZXdPbGRlc3RNdWx0aURCOworCU11bHRpWGFjdFN0YXRlLT5vbGRlc3RPZmZzZXQgPSBuZXdP bGRlc3RPZmZzZXQ7CiAJTFdMb2NrUmVsZWFzZShNdWx0aVhhY3RHZW5Mb2NrKTsKIAogCS8q IEZpcnN0IHRydW5jYXRlIG1lbWJlcnMgKi8KQEAgLTI4NjQsNyArMjk4NCw3IEBAIG11bHRp eGFjdF9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkgKiBBZHZhbmNlIHRoZSBo b3Jpem9uIHZhbHVlcywgc28gdGhleSdyZSBjdXJyZW50IGF0IHRoZSBlbmQgb2YKIAkJICog cmVjb3ZlcnkuCiAJCSAqLwotCQlTZXRNdWx0aVhhY3RJZExpbWl0KHhscmVjLmVuZFRydW5j T2ZmLCB4bHJlYy5vbGRlc3RNdWx0aURCLCBmYWxzZSk7CisJCVNldE11bHRpWGFjdElkTGlt aXQoeGxyZWMuZW5kVHJ1bmNPZmYsIHhscmVjLm9sZGVzdE11bHRpREIpOwogCiAJCVBlcmZv cm1NZW1iZXJzVHJ1bmNhdGlvbih4bHJlYy5zdGFydFRydW5jTWVtYiwgeGxyZWMuZW5kVHJ1 bmNNZW1iKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Zy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IGVmNDA1ZDY2 YjNiLi5hMDAwYjhiZDUwOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAt NTE1NSw3ICs1MTU1LDcgQEAgQm9vdFN0cmFwWExPRyh1aW50MzIgZGF0YV9jaGVja3N1bV92 ZXJzaW9uKQogCU11bHRpWGFjdFNldE5leHRNWGFjdChjaGVja1BvaW50Lm5leHRNdWx0aSwg Y2hlY2tQb2ludC5uZXh0TXVsdGlPZmZzZXQpOwogCUFkdmFuY2VPbGRlc3RDbG9nWGlkKGNo ZWNrUG9pbnQub2xkZXN0WGlkKTsKIAlTZXRUcmFuc2FjdGlvbklkTGltaXQoY2hlY2tQb2lu dC5vbGRlc3RYaWQsIGNoZWNrUG9pbnQub2xkZXN0WGlkREIpOwotCVNldE11bHRpWGFjdElk TGltaXQoY2hlY2tQb2ludC5vbGRlc3RNdWx0aSwgY2hlY2tQb2ludC5vbGRlc3RNdWx0aURC LCB0cnVlKTsKKwlTZXRNdWx0aVhhY3RJZExpbWl0KGNoZWNrUG9pbnQub2xkZXN0TXVsdGks IGNoZWNrUG9pbnQub2xkZXN0TXVsdGlEQik7CiAJU2V0Q29tbWl0VHNMaW1pdChJbnZhbGlk VHJhbnNhY3Rpb25JZCwgSW52YWxpZFRyYW5zYWN0aW9uSWQpOwogCiAJLyogU2V0IHVwIHRo ZSBYTE9HIHBhZ2UgaGVhZGVyICovCkBAIC01NjM2LDcgKzU2MzYsNyBAQCBTdGFydHVwWExP Ryh2b2lkKQogCU11bHRpWGFjdFNldE5leHRNWGFjdChjaGVja1BvaW50Lm5leHRNdWx0aSwg Y2hlY2tQb2ludC5uZXh0TXVsdGlPZmZzZXQpOwogCUFkdmFuY2VPbGRlc3RDbG9nWGlkKGNo ZWNrUG9pbnQub2xkZXN0WGlkKTsKIAlTZXRUcmFuc2FjdGlvbklkTGltaXQoY2hlY2tQb2lu dC5vbGRlc3RYaWQsIGNoZWNrUG9pbnQub2xkZXN0WGlkREIpOwotCVNldE11bHRpWGFjdElk TGltaXQoY2hlY2tQb2ludC5vbGRlc3RNdWx0aSwgY2hlY2tQb2ludC5vbGRlc3RNdWx0aURC LCB0cnVlKTsKKwlTZXRNdWx0aVhhY3RJZExpbWl0KGNoZWNrUG9pbnQub2xkZXN0TXVsdGks IGNoZWNrUG9pbnQub2xkZXN0TXVsdGlEQik7CiAJU2V0Q29tbWl0VHNMaW1pdChjaGVja1Bv aW50Lm9sZGVzdENvbW1pdFRzWGlkLAogCQkJCQkgY2hlY2tQb2ludC5uZXdlc3RDb21taXRU c1hpZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKaW5kZXggMTAwZTFhNzJjMjIuLmJkNDI3 OGNkMjUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpAQCAtMTE0Niw5ICsxMTQ2LDkgQEAg dmFjdXVtX2dldF9jdXRvZmZzKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zIHBh cmFtcywKIAkvKgogCSAqIEFsc28gY29tcHV0ZSB0aGUgbXVsdGl4YWN0IGFnZSBmb3Igd2hp Y2ggZnJlZXppbmcgaXMgdXJnZW50LiAgVGhpcyBpcwogCSAqIG5vcm1hbGx5IGF1dG92YWN1 dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlLCBidXQgbWF5IGJlIGxlc3MgaWYgd2UgYXJl Ci0JICogc2hvcnQgb2YgbXVsdGl4YWN0IG1lbWJlciBzcGFjZS4KKwkgKiBzaG9ydCBvZiBt dWx0aXhhY3QgbWVtYmVyIHNwYWNlLiBYWFggdXBkYXRlIGNvbW1lbnQKIAkgKi8KLQllZmZl Y3RpdmVfbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlID0gYXV0b3ZhY3V1bV9tdWx0aXhhY3Rf ZnJlZXplX21heF9hZ2U7CisJZWZmZWN0aXZlX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSA9 IE11bHRpWGFjdE1lbWJlckZyZWV6ZVRocmVzaG9sZCgpOwogCiAJLyoKIAkgKiBBbG1vc3Qg cmVhZHkgdG8gc2V0IGZyZWV6ZSBvdXRwdXQgcGFyYW1ldGVyczsgY2hlY2sgaWYgT2xkZXN0 WG1pbiBvcgpAQCAtMTk3MSw3ICsxOTcxLDcgQEAgdmFjX3RydW5jYXRlX2Nsb2coVHJhbnNh Y3Rpb25JZCBmcm96ZW5YSUQsCiAJICogc2lnbmFsaW5nIHR3aWNlPwogCSAqLwogCVNldFRy YW5zYWN0aW9uSWRMaW1pdChmcm96ZW5YSUQsIG9sZGVzdHhpZF9kYXRvaWQpOwotCVNldE11 bHRpWGFjdElkTGltaXQobWluTXVsdGksIG1pbm11bHRpX2RhdG9pZCwgZmFsc2UpOworCVNl dE11bHRpWGFjdElkTGltaXQobWluTXVsdGksIG1pbm11bHRpX2RhdG9pZCk7CiAKIAlMV0xv Y2tSZWxlYXNlKFdyYXBMaW1pdHNWYWN1dW1Mb2NrKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9hdXRvdmFjdXVtLmMKaW5kZXggYmY2NmY0OTRlM2EuLjFjMzg0ODhmMmNiIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtMTE1MSw3ICsxMTUxLDcgQEAgZG9f c3RhcnRfd29ya2VyKHZvaWQpCiAKIAkvKiBBbHNvIGRldGVybWluZSB0aGUgb2xkZXN0IGRh dG1pbm14aWQgd2Ugd2lsbCBjb25zaWRlci4gKi8KIAlyZWNlbnRNdWx0aSA9IFJlYWROZXh0 TXVsdGlYYWN0SWQoKTsKLQltdWx0aUZvcmNlTGltaXQgPSByZWNlbnRNdWx0aSAtIGF1dG92 YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlOworCW11bHRpRm9yY2VMaW1pdCA9IHJl Y2VudE11bHRpIC0gTXVsdGlYYWN0TWVtYmVyRnJlZXplVGhyZXNob2xkKCk7CiAJaWYgKG11 bHRpRm9yY2VMaW1pdCA8IEZpcnN0TXVsdGlYYWN0SWQpCiAJCW11bHRpRm9yY2VMaW1pdCAt PSBGaXJzdE11bHRpWGFjdElkOwogCkBAIC0xOTM5LDcgKzE5MzksNyBAQCBkb19hdXRvdmFj dXVtKHZvaWQpCiAJICogbm9ybWFsbHkgYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21h eF9hZ2UsIGJ1dCBtYXkgYmUgbGVzcyBpZiB3ZSBhcmUKIAkgKiBzaG9ydCBvZiBtdWx0aXhh Y3QgbWVtYmVyIHNwYWNlLgogCSAqLwotCWVmZmVjdGl2ZV9tdWx0aXhhY3RfZnJlZXplX21h eF9hZ2UgPSBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZTsKKwllZmZlY3Rp dmVfbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlID0gTXVsdGlYYWN0TWVtYmVyRnJlZXplVGhy ZXNob2xkKCk7CiAKIAkvKgogCSAqIEZpbmQgdGhlIHBnX2RhdGFiYXNlIGVudHJ5IGFuZCBz ZWxlY3QgdGhlIGRlZmF1bHQgZnJlZXplIGFnZXMuIFdlIHVzZQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL211bHRp eGFjdC5oCmluZGV4IGQ2ODhiNTQ3YzU0Li5jZmZmODZmNjU1ZiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9t dWx0aXhhY3QuaApAQCAtMTI2LDggKzEyNiw3IEBAIGV4dGVybiB2b2lkIEJvb3RTdHJhcE11 bHRpWGFjdCh2b2lkKTsKIGV4dGVybiB2b2lkIFN0YXJ0dXBNdWx0aVhhY3Qodm9pZCk7CiBl eHRlcm4gdm9pZCBUcmltTXVsdGlYYWN0KHZvaWQpOwogZXh0ZXJuIHZvaWQgU2V0TXVsdGlY YWN0SWRMaW1pdChNdWx0aVhhY3RJZCBvbGRlc3RfZGF0bWlubXhpZCwKLQkJCQkJCQkJT2lk IG9sZGVzdF9kYXRvaWQsCi0JCQkJCQkJCWJvb2wgaXNfc3RhcnR1cCk7CisJCQkJCQkJCU9p ZCBvbGRlc3RfZGF0b2lkKTsKIGV4dGVybiB2b2lkIE11bHRpWGFjdEdldENoZWNrcHRNdWx0 aShib29sIGlzX3NodXRkb3duLAogCQkJCQkJCQkJIE11bHRpWGFjdElkICpuZXh0TXVsdGks CiAJCQkJCQkJCQkgTXVsdGlYYWN0T2Zmc2V0ICpuZXh0TXVsdGlPZmZzZXQsCkBAIC0xNDIs NiArMTQxLDcgQEAgZXh0ZXJuIHZvaWQgTXVsdGlYYWN0U2V0TmV4dE1YYWN0KE11bHRpWGFj dElkIG5leHRNdWx0aSwKIGV4dGVybiB2b2lkIE11bHRpWGFjdEFkdmFuY2VOZXh0TVhhY3Qo TXVsdGlYYWN0SWQgbWluTXVsdGksCiAJCQkJCQkJCQkgIE11bHRpWGFjdE9mZnNldCBtaW5N dWx0aU9mZnNldCk7CiBleHRlcm4gdm9pZCBNdWx0aVhhY3RBZHZhbmNlT2xkZXN0KE11bHRp WGFjdElkIG9sZGVzdE11bHRpLCBPaWQgb2xkZXN0TXVsdGlEQik7CitleHRlcm4gaW50CU11 bHRpWGFjdE1lbWJlckZyZWV6ZVRocmVzaG9sZCh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgbXVs dGl4YWN0X3R3b3BoYXNlX3JlY292ZXIoRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCwgdWludDE2 IGluZm8sCiAJCQkJCQkJCQkgICB2b2lkICpyZWNkYXRhLCB1aW50MzIgbGVuKTsKLS0gCjIu NDcuMwoK --------------D5Uqc0qFgdUSc5DsuhKtaq91 Content-Type: text/x-patch; charset=UTF-8; name="v25-0006-TEST-bump-catversion.patch" Content-Disposition: attachment; filename="v25-0006-TEST-bump-catversion.patch" Content-Transfer-Encoding: base64 RnJvbSBiMGQzYWFlNTA4OGE0MmFkNmJjNzE0YmU0NzNkYmM2ZmNhZTQ4NDdkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMjQgT2N0IDIwMjUgMTE6NDc6NTAgKzAzMDAKU3ViamVjdDogW1BBVENI IHYyNSAwNi8xMF0gVEVTVDogYnVtcCBjYXR2ZXJzaW9uCgpUbyBhdm9pZCBjb25zdGFudCBD Ri1ib3QgY29tcGxhaW5zLCBtYWtlIGNhdHZlcnNpb24gYnVtcCBpbiBhIHNlcGFyYXRlCmNv bW1pdC4KCk5PVEU6IGtlZXAgaXQgaW4gc3luYyB3aXRoIE1VTFRJWEFDVE9GRlNFVF9GT1JN QVRDSEFOR0VfQ0FUX1ZFUgotLS0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5o IHwgMyArKy0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oCmluZGV4IDdlZWZjYTFhZTQyLi5iMDE2 MmMyYmY2MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgK KysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgKQEAgLTU3LDYgKzU3LDcg QEAKICAqLwogCiAvKgkJCQkJCQl5eXl5bW1kZE4gKi8KLSNkZWZpbmUgQ0FUQUxPR19WRVJT SU9OX05PCTIwMjUxMTEwMQorLy8gRklYTUU6IGJ1bXAgaXQKKyNkZWZpbmUgQ0FUQUxPR19W RVJTSU9OX05PCTk5OTk5OTk5OQogCiAjZW5kaWYKLS0gCjIuNDcuMwoK --------------D5Uqc0qFgdUSc5DsuhKtaq91 Content-Type: text/x-patch; charset=UTF-8; name="v25-0007-TEST-Add-test-for-64-bit-mxoff-in-pg_resetwal.patch" Content-Disposition: attachment; filename*0="v25-0007-TEST-Add-test-for-64-bit-mxoff-in-pg_resetwal.patch" Content-Transfer-Encoding: base64 RnJvbSBkM2ZkZjhkYTM5OGRmMTVhNmU0NGQ1MjM2NGI2NTc4M2Y4OWMzNjBkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjggT2N0IDIwMjUgMTk6MDg6MjYgKzAzMDAKU3ViamVjdDogW1BBVENI IHYyNSAwNy8xMF0gVEVTVDogQWRkIHRlc3QgZm9yIDY0LWJpdCBteG9mZiBpbiBwZ19yZXNl dHdhbAoKLS0tCiBzcmMvYmluL3BnX3Jlc2V0d2FsL21lc29uLmJ1aWxkICAgIHwgICAxICsK IHNyYy9iaW4vcGdfcmVzZXR3YWwvdC8wMDNfbXhvZmYucGwgfCAxNzAgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTcxIGluc2VydGlvbnMoKykK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmluL3BnX3Jlc2V0d2FsL3QvMDAzX214b2ZmLnBs CgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXNldHdhbC9tZXNvbi5idWlsZCBiL3NyYy9i aW4vcGdfcmVzZXR3YWwvbWVzb24uYnVpbGQKaW5kZXggMjkwODMyYjIyOTkuLjFlMmRmYjM4 YTViIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jlc2V0d2FsL21lc29uLmJ1aWxkCisrKyBi L3NyYy9iaW4vcGdfcmVzZXR3YWwvbWVzb24uYnVpbGQKQEAgLTI1LDYgKzI1LDcgQEAgdGVz dHMgKz0gewogICAgICd0ZXN0cyc6IFsKICAgICAgICd0LzAwMV9iYXNpYy5wbCcsCiAgICAg ICAndC8wMDJfY29ycnVwdGVkLnBsJywKKyAgICAgICd0LzAwM19teG9mZi5wbCcsCiAgICAg XSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfcmVzZXR3YWwvdC8wMDNfbXhv ZmYucGwgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3QvMDAzX214b2ZmLnBsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zYzFiN2ZhMWQzMwotLS0gL2Rldi9udWxs CisrKyBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvdC8wMDNfbXhvZmYucGwKQEAgLTAsMCArMSwx NzAgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2Fs bCc7CisKK3VzZSBNYXRoOjpCaWdJbnQ7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl cjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitz dWIgbXhhY3RfZWF0ZXIKK3sKKwlteSAkbm9kZSA9IHNoaWZ0OworCW15ICR0YmwgPSBzaGlm dDsKKworCSRub2RlLT5zdGFydDsKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJDUkVBVEUgVEFCTEUgJHt0Ymx9IChJIElOVCBQUklNQVJZIEtFWSwgTl9VUERBVEVEIElO VCkgIiAuCisJCSIgICAgICAgV0lUSCAoQVVUT1ZBQ1VVTV9FTkFCTEVEPUZBTFNFKTsiIC4K KwkJIklOU0VSVCBJTlRPICR7dGJsfSBTRUxFQ1QgRywgMCBGUk9NIEdFTkVSQVRFX1NFUklF UygxLCA1MCkgRzsiKTsKKworCSMgY29uc3VtZSBhcm91bmQgMTBrIG11bHRpeGFjdC1vZmZz ZXRmcworCW15ICRuY2xpZW50cyA9IDEwOworCW15ICR1cGRhdGVfZXZlcnkgPSA3NTsKKwlt eSBAY29ubmVjdGlvbnMgPSAoKTsKKworCWZvciAoMC4uJG5jbGllbnRzKQorCXsKKwkJbXkg JGNvbm4gPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworCQkkY29ubi0+ cXVlcnlfc2FmZSgiQkVHSU4iKTsKKworCQlwdXNoKEBjb25uZWN0aW9ucywgJGNvbm4pOwor CX0KKworCWZvciAobXkgJGkgPSAwOyAkaSA8IDEwMDA7ICRpKyspCisJeworCQlteSAkY29u biA9ICRjb25uZWN0aW9uc1skaSAlICRuY2xpZW50c107CisKKwkJJGNvbm4tPnF1ZXJ5X3Nh ZmUoIkNPTU1JVDsiKTsKKwkJJGNvbm4tPnF1ZXJ5X3NhZmUoIkJFR0lOIik7CisKKwkJaWYg KCRpICUgJHVwZGF0ZV9ldmVyeSA9PSAwKQorCQl7CisJCQkkY29ubi0+cXVlcnlfc2FmZSgK KwkJCQkiVVBEQVRFICR7dGJsfSBTRVQgIiAuCisJCQkJIk5fVVBEQVRFRCA9IE5fVVBEQVRF RCArIDEgIiAuCisJCQkJIldIRVJFIEkgPSAke2l9ICUgNTAiKTsKKwkJfQorCQllbHNlCisJ CXsKKwkJCSRjb25uLT5xdWVyeV9zYWZlKAorCQkJCSJTRUxFQ1QgKiBGUk9NICR7dGJsfSBG T1IgS0VZIFNIQVJFIik7CisJCX0KKwl9CisKKwlmb3IgbXkgJGNvbm4gKEBjb25uZWN0aW9u cykKKwl7CisJCSRjb25uLT5xdWl0KCk7CisJfQorCisJJG5vZGUtPnN0b3A7Cit9CisKK3N1 YiBuZXh0X214b2ZmCit7CisJbXkgJG5vZGUgPSBzaGlmdDsKKwlteSAoJHN0ZG91dCwgJHN0 ZGVycikgPQorCSAgcnVuX2NvbW1hbmQoWyAncGdfY29udHJvbGRhdGEnLCAkbm9kZS0+ZGF0 YV9kaXIgXSk7CisJbXkgQGNvbnRyb2xfZGF0YSA9IHNwbGl0KCJcbiIsICRzdGRvdXQpOwor CW15ICRuZXh0X214b2ZmID0gdW5kZWY7CisKKwlmb3JlYWNoIChAY29udHJvbF9kYXRhKQor CXsKKwkJaWYgKCRfID1+IC9eTGF0ZXN0IGNoZWNrcG9pbnQncyBOZXh0TXVsdGlPZmZzZXQ6 XHMqKC4qKSQvbWcpCisJCXsKKwkJCSRuZXh0X214b2ZmID0gJDE7CisJCQlsYXN0OworCQl9 CisJfQorCWRpZSAiTmV4dE11bHRpT2Zmc2V0IG5vdCBmb3VuZCBpbiBjb250cm9sIGZpbGVc biIKKwkJdW5sZXNzIGRlZmluZWQoJG5leHRfbXhvZmYpOworCisJcmV0dXJuICRuZXh0X214 b2ZmOworfQorCitzdWIgcmVzZXRfbXhvZmYKK3sKKwlteSAkbm9kZSA9IHNoaWZ0OworCW15 ICRvZmZzZXQgPSBzaGlmdDsKKwkJJG9mZnNldCA9IE1hdGg6OkJpZ0ludC0+bmV3KCRvZmZz ZXQpOworCisJIyBHZXQgYmxvY2sgc2l6ZQorCW15ICRvdXQgPSAocnVuX2NvbW1hbmQoWyAn cGdfcmVzZXR3YWwnLCAnLS1kcnktcnVuJywgJG5vZGUtPmRhdGFfZGlyIF0pKVswXTsKKwkJ JG91dCA9fiAvXkRhdGFiYXNlIGJsb2NrIHNpemU6ICooXGQrKSQvbSBvciBkaWU7CisJbXkg JGJsY2tzeiA9ICQxOworCisJIyBSZXNldCB0byBuZXcgb2Zmc2V0CisJbXkgQGNtZCA9ICgn cGdfcmVzZXR3YWwnLCAnLS1wZ2RhdGEnID0+ICRub2RlLT5kYXRhX2Rpcik7CisJcHVzaCBA Y21kLCAnLS1tdWx0aXhhY3Qtb2Zmc2V0JyA9PiAkb2Zmc2V0LT5hc19oZXgoKTsKKwljb21t YW5kX29rKFxAY21kLCAnc2V0IG9sZGVzdCBtdWx0aXhhY3Qtb2Zmc2V0Jyk7CisKKwkjIEZp bGwgZW1wdHkgcGdfbXVsdGl4YWN0L21lbWJlcnMgc2VnbWVudAorCW15ICRtdWx0ID0gMzIg KiBpbnQoJGJsY2tzeiAvIDIwKSAqIDQ7CisJbXkgJHNlZ25hbWUgPSBzcHJpbnRmICIlMDE1 WCIsICRvZmZzZXQgLyAkbXVsdDsKKworCW15IEBkZCA9ICgnZGQnKTsKKwlwdXNoIEBkZCwg ImlmPS9kZXYvemVybyI7CisJcHVzaCBAZGQsICJvZj0iIC4gJG5vZGUtPmRhdGFfZGlyIC4g Ii9wZ19tdWx0aXhhY3QvbWVtYmVycy8iIC4gJHNlZ25hbWU7CisJcHVzaCBAZGQsICJicz0k Ymxja3N6IjsKKwlwdXNoIEBkZCwgImNvdW50PTMyIjsKKwljb21tYW5kX29rKFxAZGQsICdm aWxsIGVtcHR5IG11bHRpeGFjdC1tZW1iZXJzJyk7Cit9CisKK215ICgkb2ZmMSwgJG9mZjIp OworCisjIHN0YXJ0IGZyb20gZGVmYXVsdHMKK215ICRub2RlMSA9IFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXItPm5ldygnbm9kZTEnKTsKKyRub2RlMS0+aW5pdDsKKyRvZmYxID0gbmV4 dF9teG9mZigkbm9kZTEpOworbXhhY3RfZWF0ZXIoJG5vZGUxLCAiRk9PIik7Ciskb2ZmMiA9 IG5leHRfbXhvZmYoJG5vZGUxKTsKK25vdGUgIj4gc3RhcnQgZnJvbSAkb2ZmMSwgZmluaXNo ZWQgYXQgJG9mZjJcbiI7CisKKyMgc3RhcnQgZnJvbSBiZWZvcmUgMzItYml0IHdyYXBhcm91 bmQKK215ICRub2RlMiA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbm9kZTIn KTsKKyRub2RlMi0+aW5pdDsKK3Jlc2V0X214b2ZmKCRub2RlMiwgMHhGRkZGMDAwMCk7Cisk b2ZmMSA9IG5leHRfbXhvZmYoJG5vZGUyKTsKK214YWN0X2VhdGVyKCRub2RlMiwgIkZPTyIp OworJG9mZjIgPSBuZXh0X214b2ZmKCRub2RlMik7Citub3RlICI+IHN0YXJ0IGZyb20gJG9m ZjEsIGZpbmlzaGVkIGF0ICRvZmYyXG4iOworCisjIHN0YXJ0IG5lYXIgMzItYml0IHdyYXBh cm91bmQKK215ICRub2RlMyA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbm9k ZTMnKTsKKyRub2RlMy0+aW5pdDsKK3Jlc2V0X214b2ZmKCRub2RlMywgMHhGRkZGRUM3Nyk7 Ciskb2ZmMSA9IG5leHRfbXhvZmYoJG5vZGUzKTsKK214YWN0X2VhdGVyKCRub2RlMywgIkZP TyIpOworJG9mZjIgPSBuZXh0X214b2ZmKCRub2RlMyk7Citub3RlICI+IHN0YXJ0IGZyb20g JG9mZjEsIGZpbmlzaGVkIGF0ICRvZmYyXG4iOworCisjIHN0YXJ0IG92ZXIgMzItYml0IHdy YXBhcm91bmQKK215ICRub2RlNCA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygn bm9kZTQnKTsKKyRub2RlNC0+aW5pdDsKK3Jlc2V0X214b2ZmKCRub2RlNCwgJzB4RkZGRkZG RkYwMDAwJyk7Ciskb2ZmMSA9IG5leHRfbXhvZmYoJG5vZGU0KTsKK214YWN0X2VhdGVyKCRu b2RlNCwgIkZPTyIpOworJG9mZjIgPSBuZXh0X214b2ZmKCRub2RlMyk7Citub3RlICI+IHN0 YXJ0IGZyb20gJG9mZjEsIGZpbmlzaGVkIGF0ICRvZmYyXG4iOworCisjIGNoZWNrIGludmFy aWFudAorJG5vZGUxLT5zdGFydDsKKyRub2RlMi0+c3RhcnQ7Ciskbm9kZTMtPnN0YXJ0Owor JG5vZGU0LT5zdGFydDsKKworbXkgJHZhcjEgPSAkbm9kZTEtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAnVEFCTEUgRk9PJyk7CitteSAkdmFyMiA9ICRub2RlMi0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICdUQUJMRSBGT08nKTsKK215ICR2YXIzID0gJG5vZGUzLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgJ1RBQkxFIEZPTycpOworbXkgJHZhcjQgPSAkbm9kZTQtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAnVEFCTEUgRk9PJyk7CitvaygkdmFyMSBlcSAkdmFyMiBlcSAkdmFyMyBl cSAkdmFyNCwKKwknY2hlY2sgdGFibGUgaW52YXJpYW50IGluIGFsbCBub2RlcycpOworCisk bm9kZTQtPnN0b3A7Ciskbm9kZTMtPnN0b3A7Ciskbm9kZTItPnN0b3A7Ciskbm9kZTEtPnN0 b3A7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi40Ny4zCgo= --------------D5Uqc0qFgdUSc5DsuhKtaq91 Content-Type: text/x-patch; charset=UTF-8; name="v25-0008-TEST-Add-test-for-wraparound-of-next-new-multi-i.patch" Content-Disposition: attachment; filename*0="v25-0008-TEST-Add-test-for-wraparound-of-next-new-multi-i.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwMmI2ZjZkZjI2MDJiN2VlYmE3MWNhYzM5ZmJjNTNmNjA2YjBkNjUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMTIgTm92IDIwMjUgMTM6MzY6MDkgKzAyMDAK U3ViamVjdDogW1BBVENIIHYyNSAwOC8xMF0gVEVTVDogQWRkIHRlc3QgZm9yIHdyYXBhcm91 bmQgb2YgbmV4dCBuZXcgbXVsdGkgaW4KIHBnX3VwZ3JhZGUKClJlbGF0ZWQgdG8gQlVHICMx ODg2MyBhbmQgQlVHICMxODg2NQotLS0KIHNyYy9iaW4vcGdfdXBncmFkZS9tZXNvbi5idWls ZCAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcGdfdXBncmFkZS90LzAwN19tdWx0aV93cmFw LnBsIHwgMTc2ICsrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwg MTc3IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmluL3BnX3VwZ3Jh ZGUvdC8wMDdfbXVsdGlfd3JhcC5wbAoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFk ZS9tZXNvbi5idWlsZCBiL3NyYy9iaW4vcGdfdXBncmFkZS9tZXNvbi5idWlsZAppbmRleCAz ZTQ2YzQ1MTJjZi4uY2E4N2FlMjIxY2UgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFk ZS9tZXNvbi5idWlsZAorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvbWVzb24uYnVpbGQKQEAg LTUwLDYgKzUwLDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDA0X3N1YnNjcmlwdGlvbi5w bCcsCiAgICAgICAndC8wMDVfY2hhcl9zaWduZWRuZXNzLnBsJywKICAgICAgICd0LzAwNl90 cmFuc2Zlcl9tb2Rlcy5wbCcsCisgICAgICAndC8wMDdfbXVsdGlfd3JhcC5wbCcsCiAgICAg XSwKICAgICAndGVzdF9rd2FyZ3MnOiB7J3ByaW9yaXR5JzogNDB9LCAjIHBnX3VwZ3JhZGUg dGVzdHMgYXJlIHNsb3cKICAgfSwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS90 LzAwN19tdWx0aV93cmFwLnBsIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA3X211bHRpX3dy YXAucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBhZDhmZDU5 OTA2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA3X211bHRp X3dyYXAucGwKQEAgLTAsMCArMSwxNzYgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK3VzZSBzdHJpY3Q7Cit1c2Ug d2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CisKK3VzZSBNYXRoOjpCaWdJbnQ7Cit1c2UgUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsK K3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpBZGp1c3REdW1wOwordXNlIFBvc3RncmVTUUw6OlRl c3Q6OkFkanVzdFVwZ3JhZGU7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBUZW1wIGRpciBmb3Ig YSBkdW1wcy4KK215ICR0ZW1wZGlyID0gUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRlbXBk aXI7CisKKyMgQ2FuIGJlIGNoYW5nZWQgdG8gdGVzdCB0aGUgb3RoZXIgbW9kZXMuCitteSAk bW9kZSA9ICRFTlZ7UEdfVEVTVF9QR19VUEdSQURFX01PREV9IHx8ICctLWNvcHknOworCisj IEhhbmR5IHBnX3Jlc2V0d2FsIHdyYXBwZXIKK3N1YiByZXNldF9teG9mZgoreworCW15ICVh cmdzID0gQF87CisKKwlteSAkbm9kZSA9ICRhcmdze25vZGV9OworCW15ICRvZmZzZXQgPSAk YXJnc3tvZmZzZXR9OworCW15ICRtdWx0aSA9ICRhcmdze211bHRpfTsKKwlteSAkYmxja3N6 ID0gc3ViICMgR2V0IGJsb2NrIHNpemUKKwl7CisJCW15ICRvdXQgPSAocnVuX2NvbW1hbmQo WyAncGdfcmVzZXR3YWwnLCAnLS1kcnktcnVuJywKKwkJCQkJCQkJICRub2RlLT5kYXRhX2Rp ciBdKSlbMF07CisJCSRvdXQgPX4gL15EYXRhYmFzZSBibG9jayBzaXplOiAqKFxkKykkL20g b3IgZGllOworCQlyZXR1cm4gJDE7CisJfS0+KCk7CisKKwlteSBAY21kOworCisJIyBSZXNl dCBjbHVzdGVyCisJQGNtZCA9ICgncGdfcmVzZXR3YWwnLCAnLS1wZ2RhdGEnID0+ICRub2Rl LT5kYXRhX2Rpcik7CisJaWYgKGRlZmluZWQoJG9mZnNldCkpCisJeworCQlwdXNoIEBjbWQs ICctLW11bHRpeGFjdC1vZmZzZXQnID0+ICRvZmZzZXQ7CisJfQorCWlmIChkZWZpbmVkKCRt dWx0aSkpCisJeworCQlwdXNoIEBjbWQsICItLW11bHRpeGFjdC1pZHM9JG11bHRpLCRtdWx0 aSI7CisJfQorCWNvbW1hbmRfb2soXEBjbWQsICdyZXNldCBtdWx0aS9vZmZzZXQnKTsKKwor CW15ICRuX2l0ZW1zOworCW15ICRzZWduYW1lOworCisJIyBGaWxsIGVtcHR5IHBnX211bHRp eGFjdCBzZWdtZW50cworCWlmIChkZWZpbmVkKCRvZmZzZXQpKQorCXsKKwkJJG5faXRlbXMg PSAzMiAqIGludCgkYmxja3N6IC8gMjApICogNDsKKwkJJHNlZ25hbWUgPSBzcHJpbnRmICIl MDE1WCIsICgkb2Zmc2V0IC8gJG5faXRlbXMpOworCQkkc2VnbmFtZSA9ICRub2RlLT5kYXRh X2RpciAuICIvcGdfbXVsdGl4YWN0L21lbWJlcnMvIiAuICRzZWduYW1lOworCisJCUBjbWQg PSAoJ2RkJyk7CisJCXB1c2ggQGNtZCwgImlmPS9kZXYvemVybyI7CisJCXB1c2ggQGNtZCwg Im9mPSIgLiAkc2VnbmFtZTsKKwkJcHVzaCBAY21kLCAiYnM9JGJsY2tzeiI7CisJCXB1c2gg QGNtZCwgImNvdW50PTMyIjsKKwkJY29tbWFuZF9vayhcQGNtZCwgJ2ZpbGwgZW1wdHkgbXVs dGl4YWN0LW1lbWJlcnMnKTsKKwl9CisKKwlpZiAoZGVmaW5lZCgkbXVsdGkpKQorCXsKKwkJ JG5faXRlbXMgPSAzMiAqIGludCgkYmxja3N6IC8gOCk7CisJCSRzZWduYW1lID0gc3ByaW50 ZiAiJTA0WCIsICRtdWx0aSAvICRuX2l0ZW1zOworCQkkc2VnbmFtZSA9ICRub2RlLT5kYXRh X2RpciAuICIvcGdfbXVsdGl4YWN0L29mZnNldHMvIiAuICRzZWduYW1lOworCisJCUBjbWQg PSAoJ2RkJyk7CisJCXB1c2ggQGNtZCwgImlmPS9kZXYvemVybyI7CisJCXB1c2ggQGNtZCwg Im9mPSIgLiAkc2VnbmFtZTsKKwkJcHVzaCBAY21kLCAiYnM9JGJsY2tzeiI7CisJCXB1c2gg QGNtZCwgImNvdW50PTMyIjsKKwkJY29tbWFuZF9vayhcQGNtZCwgJ2ZpbGwgZW1wdHkgbXVs dGl4YWN0LW9mZnNldHMnKTsKKwl9Cit9CisKK3N1YiBnZXRfZHVtcF9mb3JfY29tcGFyaXNv bgoreworCW15ICgkbm9kZSwgJGRiLCAkZmlsZV9wcmVmaXgsICRhZGp1c3RfY2hpbGRfY29s dW1ucykgPSBAXzsKKworCW15ICRkdW1wZmlsZSA9ICR0ZW1wZGlyIC4gJy8nIC4gJGZpbGVf cHJlZml4IC4gJy5zcWwnOworCW15ICRkdW1wX2FkanVzdGVkID0gIiR7ZHVtcGZpbGV9X2Fk anVzdGVkIjsKKworCW9wZW4obXkgJGRoLCAnPicsICRkdW1wX2FkanVzdGVkKQorCSAgfHwg ZGllICJjb3VsZCBub3Qgb3BlbiAkZHVtcF9hZGp1c3RlZCBmb3Igd3JpdGluZyAkISI7CisK Kwkkbm9kZS0+cnVuX2xvZygKKwkJWworCQkJJ3BnX2R1bXAnLCAnLS1uby1zeW5jJywKKwkJ CSctLXJlc3RyaWN0LWtleScgPT4gJ3Rlc3QnLAorCQkJJy1kJyA9PiAkbm9kZS0+Y29ubnN0 cigkZGIpLAorCQkJJy1mJyA9PiAkZHVtcGZpbGUKKwkJXSk7CisKKwlwcmludCAkZGggYWRq dXN0X3JlZ3Jlc3NfZHVtcGZpbGUoc2x1cnBfZmlsZSgkZHVtcGZpbGUpLAorCQkkYWRqdXN0 X2NoaWxkX2NvbHVtbnMpOworCWNsb3NlKCRkaCk7CisKKwlyZXR1cm4gJGR1bXBfYWRqdXN0 ZWQ7Cit9CisKKyMgQ3JlYXRlIG9sZCBub2RlCitteSAkb2xkID0gUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3Rlci0+bmV3KCJvbGQiKTsKKyRvbGQtPmluaXQ7CityZXNldF9teG9mZihub2Rl ID0+ICRvbGQsIG11bHRpID0+IDQyOTQ5NjcyOTUsIG9mZnNldCA9PiA0Mjk0OTY3MjkpOwor Ciskb2xkLT5zdGFydDsKKyRvbGQtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorcXEoCisJQ1JF QVRFIFRBQkxFIHRlc3RfdGFibGUgKGlkIGludGVnZXIgTk9UIE5VTEwgUFJJTUFSWSBLRVks IHZhbCB0ZXh0KTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIFZBTFVFUyAoMSwgJ2EnKTsK KykpOworCitteSAkY29ubjEgPSAkb2xkLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7 CitteSAkY29ubjIgPSAkb2xkLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CisKKyRj b25uMS0+cXVlcnlfc2FmZShxcSgKKwlCRUdJTjsKKwlTRUxFQ1QgKiBGUk9NIHRlc3RfdGFi bGUgV0hFUkUgaWQgPSAxIEZPUiBTSEFSRTsKKykpOworJGNvbm4yLT5xdWVyeV9zYWZlKHFx KAorCUJFR0lOOworCVNFTEVDVCAqIEZST00gdGVzdF90YWJsZSBXSEVSRSBpZCA9IDEgRk9S IFNIQVJFOworKSk7CisKKyRjb25uMS0+cXVlcnlfc2FmZShxcShDT01NSVQ7KSk7CiskY29u bjItPnF1ZXJ5X3NhZmUocXEoQ09NTUlUOykpOworCiskY29ubjEtPnF1aXQ7CiskY29ubjIt PnF1aXQ7CisKKyRvbGQtPnN0b3A7CisKKyMgQ3JlYXRlIG5ldyBub2RlCitteSAkbmV3ID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCJuZXciKTsKKyRuZXctPmluaXQ7CisK KyMgUnVuIHBnX3VwZ3JhZGUKK2NvbW1hbmRfb2soCisJWworCQkncGdfdXBncmFkZScsICct LW5vLXN5bmMnLAorCQknLS1vbGQtZGF0YWRpcicgPT4gJG9sZC0+ZGF0YV9kaXIsCisJCSct LW5ldy1kYXRhZGlyJyA9PiAkbmV3LT5kYXRhX2RpciwKKwkJJy0tb2xkLWJpbmRpcicgPT4g JG9sZC0+Y29uZmlnX2RhdGEoJy0tYmluZGlyJyksCisJCSctLW5ldy1iaW5kaXInID0+ICRu ZXctPmNvbmZpZ19kYXRhKCctLWJpbmRpcicpLAorCQknLS1zb2NrZXRkaXInID0+ICRuZXct Pmhvc3QsCisJCSctLW9sZC1wb3J0JyA9PiAkb2xkLT5wb3J0LAorCQknLS1uZXctcG9ydCcg PT4gJG5ldy0+cG9ydCwKKwkJJG1vZGUsCisJXSwKKwkncnVuIG9mIHBnX3VwZ3JhZGUgZm9y IG5ldyBpbnN0YW5jZScpOworb2soICEtZCAkbmV3LT5kYXRhX2RpciAuICIvcGdfdXBncmFk ZV9vdXRwdXQuZCIsCisJInBnX3VwZ3JhZGVfb3V0cHV0LmQvIHJlbW92ZWQgYWZ0ZXIgcGdf dXBncmFkZSBzdWNjZXNzIik7CisKKyRvbGQtPnN0YXJ0OworbXkgJHNyY19kdW1wID0KKwln ZXRfZHVtcF9mb3JfY29tcGFyaXNvbigkb2xkLCAncG9zdGdyZXMnLAorCQkJCQkJCSJvbGRu b2RlXzFfZHVtcCIsIDApOworJG9sZC0+c3RvcDsKKworJG5ldy0+c3RhcnQ7CitteSAkZHN0 X2R1bXAgPQorCWdldF9kdW1wX2Zvcl9jb21wYXJpc29uKCRuZXcsICdwb3N0Z3JlcycsCisJ CQkJCQkJIm5ld25vZGVfMV9kdW1wIiwgMCk7CiskbmV3LT5zdG9wOworCitjb21wYXJlX2Zp bGVzKCRzcmNfZHVtcCwgJGRzdF9kdW1wLAorCSdkdW1wIG91dHB1dHMgZnJvbSBvcmlnaW5h bCBhbmQgcmVzdG9yZWQgcmVncmVzc2lvbiBkYXRhYmFzZXMgbWF0Y2gnKTsKKworZG9uZV90 ZXN0aW5nKCk7Ci0tIAoyLjQ3LjMKCg== --------------D5Uqc0qFgdUSc5DsuhKtaq91 Content-Type: text/x-patch; charset=UTF-8; name="v25-0009-TEST-Add-test-for-64-bit-mxoff-in-pg_upgrade.patch" Content-Disposition: attachment; filename*0="v25-0009-TEST-Add-test-for-64-bit-mxoff-in-pg_upgrade.patch" Content-Transfer-Encoding: base64 RnJvbSBlZWRmNGM4MGQxOWMxNGE3YmJiMTA5ZWQ5MzZhOWM1ZWRkNmUzMzY3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjkgT2N0IDIwMjUgMTQ6MTk6NTYgKzAzMDAKU3ViamVjdDogW1BBVENI IHYyNSAwOS8xMF0gVEVTVDogQWRkIHRlc3QgZm9yIDY0LWJpdCBteG9mZiBpbiBwZ191cGdy YWRlCgotLS0KIHNyYy9iaW4vcGdfdXBncmFkZS9tZXNvbi5idWlsZCAgICB8ICAgMSArCiBz cmMvYmluL3BnX3VwZ3JhZGUvdC8wMDhfbXhvZmYucGwgfCA0NjMgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDQ2NCBpbnNlcnRpb25zKCspCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA4X214b2ZmLnBsCgpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkIGIvc3JjL2Jpbi9w Z191cGdyYWRlL21lc29uLmJ1aWxkCmluZGV4IGNhODdhZTIyMWNlLi43ZjE0ZTVjNDYzYyAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkCisrKyBiL3NyYy9i aW4vcGdfdXBncmFkZS9tZXNvbi5idWlsZApAQCAtNTEsNiArNTEsNyBAQCB0ZXN0cyArPSB7 CiAgICAgICAndC8wMDVfY2hhcl9zaWduZWRuZXNzLnBsJywKICAgICAgICd0LzAwNl90cmFu c2Zlcl9tb2Rlcy5wbCcsCiAgICAgICAndC8wMDdfbXVsdGlfd3JhcC5wbCcsCisgICAgICAn dC8wMDhfbXhvZmYucGwnLAogICAgIF0sCiAgICAgJ3Rlc3Rfa3dhcmdzJzogeydwcmlvcml0 eSc6IDQwfSwgIyBwZ191cGdyYWRlIHRlc3RzIGFyZSBzbG93CiAgIH0sCmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDhfbXhvZmYucGwgYi9zcmMvYmluL3BnX3VwZ3Jh ZGUvdC8wMDhfbXhvZmYucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjcyMDQzMjVmODczCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRl L3QvMDA4X214b2ZmLnBsCkBAIC0wLDAgKzEsNDYzIEBACisKKyMgQ29weXJpZ2h0IChjKSAy MDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCit1c2Ugc3RyaWN0 OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOworCit1c2UgTWF0aDo6QmlnSW50Owor dXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6QWRqdXN0RHVtcDsKK3VzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpBZGp1c3RVcGdyYWRlOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMgVGhpcyB0 ZXN0IGludm9sdmVzIGRpZmZlcmVudCBtdWx0aXRyYW5zYWN0aW9uIHN0YXRlcywgc2ltaWxh cmx5IHRvIHRoYXQgb2YKKyMgMDAyX3BnX3VwZ3JhZGUucGwuCisKK3VubGVzcyAoZGVmaW5l ZCgkRU5We29sZGluc3RhbGx9KSkKK3sKKwlwbGFuIHNraXBfYWxsID0+CisJCSd0byBydW4g dGVzdCBzZXQgb2xkaW5zdGFsbCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0aGUgcHJlIDY0 LWJpdCBteG9mZiBjbHVzdGVyJzsKK30KKworIyBUZW1wIGRpciBmb3IgYSBkdW1wcy4KK215 ICR0ZW1wZGlyID0gUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRlbXBkaXI7CisKKyMgQ2Fu IGJlIGNoYW5nZWQgdG8gdGVzdCB0aGUgb3RoZXIgbW9kZXMuCitteSAkbW9kZSA9ICRFTlZ7 UEdfVEVTVF9QR19VUEdSQURFX01PREV9IHx8ICctLWNvcHknOworCitzdWIgdXRpbGl0eV9w YXRoCit7CisJbXkgJG5vZGUgPSBzaGlmdDsKKwlteSAkbmFtZSA9IHNoaWZ0OworCisJbXkg JGJpbl9wYXRoID0gZGVmaW5lZCgkbm9kZS0+aW5zdGFsbF9wYXRoKSA/CisJCSRub2RlLT5p bnN0YWxsX3BhdGggLiAiL2Jpbi8kbmFtZSIgOiAkbmFtZTsKKworCXJldHVybiAkYmluX3Bh dGg7Cit9CisKKyMgR2V0IE5leHRNdWx0aU9mZnNldC4KK3N1YiBuZXh0X214b2ZmCit7CisJ bXkgJG5vZGUgPSBzaGlmdDsKKworCW15ICRwZ19jb250cm9sZGF0YV9wYXRoID0gdXRpbGl0 eV9wYXRoKCRub2RlLCAncGdfY29udHJvbGRhdGEnKTsKKwlteSAoJHN0ZG91dCwgJHN0ZGVy cikgPSBydW5fY29tbWFuZChbICRwZ19jb250cm9sZGF0YV9wYXRoLAorCQkJCQkJCQkJCQkk bm9kZS0+ZGF0YV9kaXIgXSk7CisJbXkgQGNvbnRyb2xfZGF0YSA9IHNwbGl0KCJcbiIsICRz dGRvdXQpOworCW15ICRuZXh0X214b2ZmID0gdW5kZWY7CisKKwlmb3JlYWNoIChAY29udHJv bF9kYXRhKQorCXsKKwkJaWYgKCRfID1+IC9eTGF0ZXN0IGNoZWNrcG9pbnQncyBOZXh0TXVs dGlPZmZzZXQ6XHMqKC4qKSQvbWcpCisJCXsKKwkJCSRuZXh0X214b2ZmID0gJDE7CisJCQls YXN0OworCQl9CisJfQorCWRpZSAiTmV4dE11bHRpT2Zmc2V0IG5vdCBmb3VuZCBpbiBjb250 cm9sIGZpbGVcbiIKKwkJdW5sZXNzIGRlZmluZWQoJG5leHRfbXhvZmYpOworCisJcmV0dXJu ICRuZXh0X214b2ZmOworfQorCisjIENvbnN1bWUgYXJvdW5kIDEwayBvZiBteG9mZnNldHMu CitzdWIgbXhhY3RfZWF0ZXIKK3sKKwlteSAkbm9kZSA9IHNoaWZ0OworCW15ICR0YmwgPSAn Rk9PJzsKKworCW15ICgkbXhvZmYxLCAkbXhvZmYyKTsKKworCSRteG9mZjEgPSBuZXh0X214 b2ZmKCRub2RlKTsKKwkkbm9kZS0+c3RhcnQ7CisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiQ1JFQVRFIFRBQkxFICR7dGJsfSAoSSBJTlQgUFJJTUFSWSBLRVksIE5fVVBE QVRFRCBJTlQpICIgLgorCQkiICAgICAgIFdJVEggKEFVVE9WQUNVVU1fRU5BQkxFRD1GQUxT RSk7IiAuCisJCSJJTlNFUlQgSU5UTyAke3RibH0gU0VMRUNUIEcsIDAgRlJPTSBHRU5FUkFU RV9TRVJJRVMoMSwgNTApIEc7Iik7CisKKwkjIGNvbnN1bWUgYXJvdW5kIDEwayBteG9mZgor CW15ICRuY2xpZW50cyA9IDEwOworCW15ICR1cGRhdGVfZXZlcnkgPSA3NTsKKwlteSBAY29u bmVjdGlvbnMgPSAoKTsKKworCWZvciAoMC4uJG5jbGllbnRzKQorCXsKKwkJbXkgJGNvbm4g PSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworCQkkY29ubi0+cXVlcnlf c2FmZSgiQkVHSU4iKTsKKworCQlwdXNoKEBjb25uZWN0aW9ucywgJGNvbm4pOworCX0KKwor CWZvciAobXkgJGkgPSAwOyAkaSA8IDEwMDA7ICRpKyspCisJeworCQlteSAkY29ubiA9ICRj b25uZWN0aW9uc1skaSAlICRuY2xpZW50c107CisKKwkJJGNvbm4tPnF1ZXJ5X3NhZmUoIkNP TU1JVDsiKTsKKwkJJGNvbm4tPnF1ZXJ5X3NhZmUoIkJFR0lOIik7CisKKwkJaWYgKCRpICUg JHVwZGF0ZV9ldmVyeSA9PSAwKQorCQl7CisJCQkkY29ubi0+cXVlcnlfc2FmZSgKKwkJCQki VVBEQVRFICR7dGJsfSBTRVQgIiAuCisJCQkJIk5fVVBEQVRFRCA9IE5fVVBEQVRFRCArIDEg IiAuCisJCQkJIldIRVJFIEkgPSAke2l9ICUgNTAiKTsKKwkJfQorCQllbHNlCisJCXsKKwkJ CSRjb25uLT5xdWVyeV9zYWZlKAorCQkJCSJTRUxFQ1QgKiBGUk9NICR7dGJsfSBGT1IgS0VZ IFNIQVJFIik7CisJCX0KKwl9CisKKwlmb3IgbXkgJGNvbm4gKEBjb25uZWN0aW9ucykKKwl7 CisJCSRjb25uLT5xdWl0KCk7CisJfQorCisJJG5vZGUtPnN0b3A7CisJJG14b2ZmMiA9IG5l eHRfbXhvZmYoJG5vZGUpOworCisJcmV0dXJuICRteG9mZjEsICRteG9mZjI7Cit9CisKKyMg Q29uc3VtZSBhcm91bmQgMU0gb2YgbXhvZmZzZXRzLgorc3ViIG14YWN0X2h1Z2VfZWF0ZXIK K3sKKwlteSAkbm9kZSA9IHNoaWZ0OworCW15ICR0YmwgPSAnRk9PJzsKKworCW15ICgkbXhv ZmYxLCAkbXhvZmYyKTsKKworCSRteG9mZjEgPSBuZXh0X214b2ZmKCRub2RlKTsKKwkkbm9k ZS0+c3RhcnQ7CisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ1JFQVRFIFRB QkxFICR7dGJsfSAoSSBJTlQgUFJJTUFSWSBLRVksIE5fVVBEQVRFRCBJTlQpICIgLgorCQki ICAgICAgIFdJVEggKEFVVE9WQUNVVU1fRU5BQkxFRD1GQUxTRSk7IiAuCisJCSJJTlNFUlQg SU5UTyAke3RibH0gU0VMRUNUIEcsIDAgRlJPTSBHRU5FUkFURV9TRVJJRVMoMSwgNCkgRzsi KTsKKworCW15ICRuY2xpZW50cyA9IDEwMDsKKwlteSBAY29ubmVjdGlvbnMgPSAoKTsKKwlt eSAkdGltZW91dCA9IDEwICogJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2Rl ZmF1bHQ7CisKKwlmb3IgKDAuLiRuY2xpZW50cykKKwl7CisJCW15ICRjb25uID0gJG5vZGUt PmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLAorCQkJCQkJCQkJCSAgdGltZW91dCA9PiAk dGltZW91dCk7CisJCSRjb25uLT5xdWVyeV9zYWZlKCJCRUdJTiIpOworCisJCXB1c2goQGNv bm5lY3Rpb25zLCAkY29ubik7CisJfQorCisJIyBJdCdzIGEgbG9uZyBwcm9jZXNzLCBiZXR0 ZXIgdG8gdGVsbCBhYm91dCBwcm9ncmVzcy4KKwlteSAkbl9zdGVwcyA9IDEwMF8wMDA7CisJ bXkgJHN0ZXAgPSBpbnQoJG5fc3RlcHMgLyAxMCk7CisKKwlkaWFnICJcbnN0YXJ0IHRvIGNv bnN1bWUgbXhvZmZzZXRzIC4uLlxuIjsKKwlmb3IgKG15ICRpID0gMDsgJGkgPCAkbl9zdGVw czsgJGkrKykKKwl7CisJCW15ICRjb25uID0gJGNvbm5lY3Rpb25zWyRpICUgJG5jbGllbnRz XTsKKworCQkkY29ubi0+cXVlcnlfc2FmZSgiQ09NTUlUOyIpOworCQkkY29ubi0+cXVlcnlf c2FmZSgiQkVHSU4iKTsKKworCQl7CisJCQkkY29ubi0+cXVlcnlfc2FmZSgKKwkJCQkiU0VM RUNUICogRlJPTSAke3RibH0gIiAuCisJCQkJIkZPUiBLRVkgU0hBUkUiKTsKKwkJfQorCisJ CWlmICgkaSAlICRzdGVwID09IDApCisJCXsKKwkJCW15ICRkb25lID0gaW50KCgkaSAvICRu X3N0ZXBzKSAqIDEwMCk7CisJCQlkaWFnICIkZG9uZSUgZG9uZS4uLiI7CisJCX0KKwl9CisK Kwlmb3IgbXkgJGNvbm4gKEBjb25uZWN0aW9ucykKKwl7CisJCSRjb25uLT5xdWl0KCk7CisJ fQorCisJJG5vZGUtPnN0b3A7CisJJG14b2ZmMiA9IG5leHRfbXhvZmYoJG5vZGUpOworCisJ cmV0dXJuICRteG9mZjEsICRteG9mZjI7Cit9CisKKyMgU2V0IG9sZGVzdCBtdWx0aXhhY3Qt b2Zmc2V0CitzdWIgcmVzZXRfbXhvZmYKK3sKKwlteSAkbm9kZSA9IHNoaWZ0OworCW15ICRv ZmZzZXQgPSBzaGlmdDsKKworCW15ICRwZ19yZXNldHdhbF9wYXRoID0gdXRpbGl0eV9wYXRo KCRub2RlLCAncGdfcmVzZXR3YWwnKTsKKwkjIEdldCBibG9jayBzaXplCisJbXkgJG91dCA9 IChydW5fY29tbWFuZChbICRwZ19yZXNldHdhbF9wYXRoLCAnLS1kcnktcnVuJywKKwkJCQkJ CQkgJG5vZGUtPmRhdGFfZGlyIF0pKVswXTsKKwkJJG91dCA9fiAvXkRhdGFiYXNlIGJsb2Nr IHNpemU6ICooXGQrKSQvbSBvciBkaWU7CisJbXkgJGJsY2tzeiA9ICQxOworCisJIyBSZXNl dCB0byBuZXcgb2Zmc2V0CisJbXkgQGNtZCA9ICgkcGdfcmVzZXR3YWxfcGF0aCwgJy0tcGdk YXRhJyA9PiAkbm9kZS0+ZGF0YV9kaXIpOworCXB1c2ggQGNtZCwgJy0tbXVsdGl4YWN0LW9m ZnNldCcgPT4gJG9mZnNldDsKKwljb21tYW5kX29rKFxAY21kLCAnc2V0IG9sZGVzdCBtdWx0 aXhhY3Qtb2Zmc2V0Jyk7CisKKwkjIEZpbGwgZW1wdHkgcGdfbXVsdGl4YWN0L21lbWJlcnMg c2VnbWVudAorCW15ICRtdWx0ID0gMzIgKiBpbnQoJGJsY2tzeiAvIDIwKSAqIDQ7CisJbXkg JHNlZ25hbWUgPSBzcHJpbnRmICIlMDRYIiwgJG9mZnNldCAvICRtdWx0OworCisJbXkgQGRk ID0gKCdkZCcpOworCXB1c2ggQGRkLCAiaWY9L2Rldi96ZXJvIjsKKwlwdXNoIEBkZCwgIm9m PSIgLiAkbm9kZS0+ZGF0YV9kaXIgLiAiL3BnX211bHRpeGFjdC9tZW1iZXJzLyIgLiAkc2Vn bmFtZTsKKwlwdXNoIEBkZCwgImJzPSRibGNrc3oiOworCXB1c2ggQGRkLCAiY291bnQ9MzIi OworCWNvbW1hbmRfb2soXEBkZCwgJ2ZpbGwgZW1wdHkgbXVsdGl4YWN0LW1lbWJlcnMnKTsK K30KKworc3ViIGdldF9kdW1wX2Zvcl9jb21wYXJpc29uCit7CisJbXkgKCRub2RlLCAkZGIs ICRmaWxlX3ByZWZpeCwgJGFkanVzdF9jaGlsZF9jb2x1bW5zKSA9IEBfOworCisJbXkgJGR1 bXBmaWxlID0gJHRlbXBkaXIgLiAnLycgLiAkZmlsZV9wcmVmaXggLiAnLnNxbCc7CisJbXkg JGR1bXBfYWRqdXN0ZWQgPSAiJHtkdW1wZmlsZX1fYWRqdXN0ZWQiOworCisJb3BlbihteSAk ZGgsICc+JywgJGR1bXBfYWRqdXN0ZWQpCisJICB8fCBkaWUgImNvdWxkIG5vdCBvcGVuICRk dW1wX2FkanVzdGVkIGZvciB3cml0aW5nICQhIjsKKworCW15ICRwZ19kdW1wX3BhdGggPSB1 dGlsaXR5X3BhdGgoJG5vZGUsICdwZ19kdW1wJyk7CisKKwkkbm9kZS0+cnVuX2xvZygKKwkJ WworCQkJJHBnX2R1bXBfcGF0aCwgJy0tbm8tc3luYycsCisJCQknLS1yZXN0cmljdC1rZXkn ID0+ICd0ZXN0JywKKwkJCSctZCcgPT4gJG5vZGUtPmNvbm5zdHIoJGRiKSwKKwkJCSctZicg PT4gJGR1bXBmaWxlCisJCV0pOworCisJcHJpbnQgJGRoIGFkanVzdF9yZWdyZXNzX2R1bXBm aWxlKHNsdXJwX2ZpbGUoJGR1bXBmaWxlKSwKKwkJJGFkanVzdF9jaGlsZF9jb2x1bW5zKTsK KwljbG9zZSgkZGgpOworCisJcmV0dXJuICRkdW1wX2FkanVzdGVkOworfQorCisjIE1haW4g dGVzdCB3b3JraG9yc2Ugcm91dGluZS4KKyMgTWFrZSBwZ191cGdyYWRlLCBkdW1wIGRhdGEg YW5kIGNvbXBhcmUgaXQuCitzdWIgcnVuX3Rlc3QKK3sKKwlteSAkdGFnID0gc2hpZnQ7CisJ bXkgJG9sZG5vZGUgPSBzaGlmdDsKKwlteSAkbmV3bm9kZSA9IHNoaWZ0OworCisJbXkgJHBn X3VwZ3JhZGVfcGF0aCA9IHV0aWxpdHlfcGF0aCgkbmV3bm9kZSwgJ3BnX3VwZ3JhZGUnKTsK KworCWNvbW1hbmRfb2soCisJCVsKKwkJCSRwZ191cGdyYWRlX3BhdGgsICctLW5vLXN5bmMn LAorCQkJJy0tb2xkLWRhdGFkaXInID0+ICRvbGRub2RlLT5kYXRhX2RpciwKKwkJCSctLW5l dy1kYXRhZGlyJyA9PiAkbmV3bm9kZS0+ZGF0YV9kaXIsCisJCQknLS1vbGQtYmluZGlyJyA9 PiAkb2xkbm9kZS0+Y29uZmlnX2RhdGEoJy0tYmluZGlyJyksCisJCQknLS1uZXctYmluZGly JyA9PiAkbmV3bm9kZS0+Y29uZmlnX2RhdGEoJy0tYmluZGlyJyksCisJCQknLS1zb2NrZXRk aXInID0+ICRuZXdub2RlLT5ob3N0LAorCQkJJy0tb2xkLXBvcnQnID0+ICRvbGRub2RlLT5w b3J0LAorCQkJJy0tbmV3LXBvcnQnID0+ICRuZXdub2RlLT5wb3J0LAorCQkJJG1vZGUsCisJ CV0sCisJCSdydW4gb2YgcGdfdXBncmFkZSBmb3IgbmV3IGluc3RhbmNlJyk7CisJb2soICEt ZCAkbmV3bm9kZS0+ZGF0YV9kaXIgLiAiL3BnX3VwZ3JhZGVfb3V0cHV0LmQiLAorCQkicGdf dXBncmFkZV9vdXRwdXQuZC8gcmVtb3ZlZCBhZnRlciBwZ191cGdyYWRlIHN1Y2Nlc3MiKTsK KworCSRvbGRub2RlLT5zdGFydDsKKwlteSAkc3JjX2R1bXAgPQorCQlnZXRfZHVtcF9mb3Jf Y29tcGFyaXNvbigkb2xkbm9kZSwgJ3Bvc3RncmVzJywKKwkJCQkJCQkJIm9sZG5vZGVfJHt0 YWd9X2R1bXAiLCAwKTsKKwkkb2xkbm9kZS0+c3RvcDsKKworCSRuZXdub2RlLT5zdGFydDsK KwlteSAkZHN0X2R1bXAgPQorCQlnZXRfZHVtcF9mb3JfY29tcGFyaXNvbigkbmV3bm9kZSwg J3Bvc3RncmVzJywKKwkJCQkJCQkJIm5ld25vZGVfJHt0YWd9X2R1bXAiLCAwKTsKKwkkbmV3 bm9kZS0+c3RvcDsKKworCWNvbXBhcmVfZmlsZXMoJHNyY19kdW1wLCAkZHN0X2R1bXAsCisJ CSdkdW1wIG91dHB1dHMgZnJvbSBvcmlnaW5hbCBhbmQgcmVzdG9yZWQgcmVncmVzc2lvbiBk YXRhYmFzZXMgbWF0Y2gnKTsKK30KKworc3ViIHRvX2hleAoreworCW15ICRhcmcgPSBzaGlm dDsKKworCSRhcmcgPSBNYXRoOjpCaWdJbnQtPm5ldygkYXJnKTsKKwkkYXJnID0gJGFyZy0+ YXNfaGV4KCk7CisKKwlyZXR1cm4gJGFyZzsKK30KKworIyBjYXNlICMxOiBzdGFydCBvbGQg bm9kZSBmcm9tIGRlZmF1bHRzCit7CisJbXkgJHRhZyA9IDE7CisJbXkgJG9sZCA9CisJCVBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygib2xkbm9kZSR7dGFnfSIsCisJCQkJCQkJ CQkgICBpbnN0YWxsX3BhdGggPT4gJEVOVntvbGRpbnN0YWxsfSk7CisJJG9sZC0+aW5pdChl eHRyYSA9PiBbJy1rJ10pOworCisJbXkgKCRzdGFydF9teG9mZiwgJGZpbmlzaF9teG9mZikg PSBteGFjdF9lYXRlcigkb2xkKTsKKworCW15ICRuZXcgPSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyLT5uZXcoIm5ld25vZGUke3RhZ30iKTsKKwkkbmV3LT5pbml0OworCisJcnVuX3Rl c3QoJHRhZywgJG9sZCwgJG5ldyk7CisKKwkkc3RhcnRfbXhvZmYgPSB0b19oZXgoJHN0YXJ0 X214b2ZmKTsKKwkkZmluaXNoX214b2ZmID0gdG9faGV4KCRmaW5pc2hfbXhvZmYpOworCisJ bXkgJG5leHRfbXhvZmYgPSB0b19oZXgobmV4dF9teG9mZigkbmV3KSk7CisKKwlub3RlICI+ Pj4gY2FzZSAjJHt0YWd9XG4iIC4KKwkJICIgb2xkbm9kZSBteG9mZiBmcm9tICR7c3RhcnRf bXhvZmZ9IHRvICR7ZmluaXNoX214b2ZmfVxuIiAuCisJCSAiIG5ld25vZGUgbXhvZmYgJHtu ZXh0X214b2ZmfVxuIjsKK30KKworIyBjYXNlICMyOiBzdGFydCBvbGQgbm9kZSBmcm9tIGJl Zm9yZSAzMi1iaXQgd3JhcGFyb3VuZAoreworCW15ICR0YWcgPSAyOworCW15ICRvbGQgPQor CQlQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoIm9sZG5vZGUke3RhZ30iLAorCQkJ CQkJCQkJICAgaW5zdGFsbF9wYXRoID0+ICRFTlZ7b2xkaW5zdGFsbH0pOworCisJJG9sZC0+ aW5pdChleHRyYSA9PiBbJy1rJ10pOworCXJlc2V0X214b2ZmKCRvbGQsIDB4RkZGRjAwMDAp OworCisJbXkgKCRzdGFydF9teG9mZiwgJGZpbmlzaF9teG9mZikgPSBteGFjdF9lYXRlcigk b2xkKTsKKworCW15ICRuZXcgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoIm5l d25vZGUke3RhZ30iKTsKKwkkbmV3LT5pbml0OworCisJcnVuX3Rlc3QoJHRhZywgJG9sZCwg JG5ldyk7CisKKwkkc3RhcnRfbXhvZmYgPSB0b19oZXgoJHN0YXJ0X214b2ZmKTsKKwkkZmlu aXNoX214b2ZmID0gdG9faGV4KCRmaW5pc2hfbXhvZmYpOworCisJbXkgJG5leHRfbXhvZmYg PSB0b19oZXgobmV4dF9teG9mZigkbmV3KSk7CisKKwlub3RlICI+Pj4gY2FzZSAjJHt0YWd9 XG4iIC4KKwkJICIgb2xkbm9kZSBteG9mZiBmcm9tICR7c3RhcnRfbXhvZmZ9IHRvICR7Zmlu aXNoX214b2ZmfVxuIiAuCisJCSAiIG5ld25vZGUgbXhvZmYgJHtuZXh0X214b2ZmfVxuIjsK K30KKworIyBjYXNlICMzOiBzdGFydCBvbGQgbm9kZSBuZWFyIDMyLWJpdCB3cmFwYXJvdW5k IGFuZCByZWFjaCB3cmFwYXJvdW5kIHN0YXRlLgoreworCW15ICR0YWcgPSAzOworCW15ICRv bGQgPQorCQlQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoIm9sZG5vZGUke3RhZ30i LAorCQkJCQkJCQkJICAgaW5zdGFsbF9wYXRoID0+ICRFTlZ7b2xkaW5zdGFsbH0pOworCisJ JG9sZC0+aW5pdChleHRyYSA9PiBbJy1rJ10pOworCisJcmVzZXRfbXhvZmYoJG9sZCwgMHhG RkZGRUM3Nyk7CisJbXkgKCRzdGFydF9teG9mZiwgJGZpbmlzaF9teG9mZikgPSBteGFjdF9l YXRlcigkb2xkKTsKKworCW15ICRuZXcgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5u ZXcoIm5ld25vZGUke3RhZ30iKTsKKwkkbmV3LT5pbml0OworCisJcnVuX3Rlc3QoJHRhZywg JG9sZCwgJG5ldyk7CisKKwkkc3RhcnRfbXhvZmYgPSB0b19oZXgoJHN0YXJ0X214b2ZmKTsK KwkkZmluaXNoX214b2ZmID0gdG9faGV4KCRmaW5pc2hfbXhvZmYpOworCisJbXkgJG5leHRf bXhvZmYgPSB0b19oZXgobmV4dF9teG9mZigkbmV3KSk7CisKKwlub3RlICI+Pj4gY2FzZSAj JHt0YWd9XG4iIC4KKwkJICIgb2xkbm9kZSBteG9mZiBmcm9tICR7c3RhcnRfbXhvZmZ9IHRv ICR7ZmluaXNoX214b2ZmfVxuIiAuCisJCSAiIG5ld25vZGUgbXhvZmYgJHtuZXh0X214b2Zm fVxuIjsKK30KKworIyBjYXNlICM0OiBzdGFydCBvbGQgbm9kZSBmcm9tIGRlZmF1bHRzCit7 CisJbXkgJHRhZyA9IDQ7CisJbXkgJG9sZCA9CisJCVBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXItPm5ldygib2xkbm9kZSR7dGFnfSIsCisJCQkJCQkJCQkgICBpbnN0YWxsX3BhdGggPT4g JEVOVntvbGRpbnN0YWxsfSk7CisKKwkkb2xkLT5pbml0KGV4dHJhID0+IFsnLWsnXSk7CisJ JG9sZC0+YXBwZW5kX2NvbmYoInBvc3RncmVzcWwuY29uZiIsICJtYXhfY29ubmVjdGlvbnMg PSAxMjgiKTsKKworCWRpYWcgInRlc3QgIyR7dGFnfSBmb3IgbXVsdGlwbGUgbXhvZmYgc2Vn bWVudHMiOworCW15ICgkc3RhcnRfbXhvZmYsICRmaW5pc2hfbXhvZmYpID0gbXhhY3RfaHVn ZV9lYXRlcigkb2xkKTsKKworCW15ICRuZXcgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy LT5uZXcoIm5ld25vZGUke3RhZ30iKTsKKwkkbmV3LT5pbml0OworCisJcnVuX3Rlc3QoJHRh ZywgJG9sZCwgJG5ldyk7CisKKwkkc3RhcnRfbXhvZmYgPSB0b19oZXgoJHN0YXJ0X214b2Zm KTsKKwkkZmluaXNoX214b2ZmID0gdG9faGV4KCRmaW5pc2hfbXhvZmYpOworCisJbXkgJG5l eHRfbXhvZmYgPSB0b19oZXgobmV4dF9teG9mZigkbmV3KSk7CisKKwlub3RlICI+Pj4gY2Fz ZSAjJHt0YWd9XG4iIC4KKwkJICIgb2xkbm9kZSBteG9mZiBmcm9tICR7c3RhcnRfbXhvZmZ9 IHRvICR7ZmluaXNoX214b2ZmfVxuIiAuCisJCSAiIG5ld25vZGUgbXhvZmYgJHtuZXh0X214 b2ZmfVxuIjsKK30KKworIyBjYXNlICM1OiBzdGFydCBvbGQgbm9kZSBmcm9tIGJlZm9yZSAz Mi1iaXQgd3JhcGFyb3VuZAoreworCW15ICR0YWcgPSA1OworCW15ICRvbGQgPQorCQlQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoIm9sZG5vZGUke3RhZ30iLAorCQkJCQkJCQkJ ICAgaW5zdGFsbF9wYXRoID0+ICRFTlZ7b2xkaW5zdGFsbH0pOworCisJJG9sZC0+aW5pdChl eHRyYSA9PiBbJy1rJ10pOworCSRvbGQtPmFwcGVuZF9jb25mKCJwb3N0Z3Jlc3FsLmNvbmYi LCAibWF4X2Nvbm5lY3Rpb25zID0gMTI4Iik7CisJcmVzZXRfbXhvZmYoJG9sZCwgMHhGRjAw MDAwMCk7CisKKwlkaWFnICJ0ZXN0ICMke3RhZ30gZm9yIG11bHRpcGxlIG14b2ZmIHNlZ21l bnRzIjsKKwlteSAoJHN0YXJ0X214b2ZmLCAkZmluaXNoX214b2ZmKSA9IG14YWN0X2h1Z2Vf ZWF0ZXIoJG9sZCk7CisKKwlteSAkbmV3ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCJuZXdub2RlJHt0YWd9Iik7CisJJG5ldy0+aW5pdDsKKworCXJ1bl90ZXN0KCR0YWcs ICRvbGQsICRuZXcpOworCisJJHN0YXJ0X214b2ZmID0gdG9faGV4KCRzdGFydF9teG9mZik7 CisJJGZpbmlzaF9teG9mZiA9IHRvX2hleCgkZmluaXNoX214b2ZmKTsKKworCW15ICRuZXh0 X214b2ZmID0gdG9faGV4KG5leHRfbXhvZmYoJG5ldykpOworCisJbm90ZSAiPj4+IGNhc2Ug IyR7dGFnfVxuIiAuCisJCSAiIG9sZG5vZGUgbXhvZmYgZnJvbSAke3N0YXJ0X214b2ZmfSB0 byAke2ZpbmlzaF9teG9mZn1cbiIgLgorCQkgIiBuZXdub2RlIG14b2ZmICR7bmV4dF9teG9m Zn1cbiI7Cit9CisKKyMgY2FzZSAjNjogc3RhcnQgb2xkIG5vZGUgbmVhciAzMi1iaXQgd3Jh cGFyb3VuZCBhbmQgcmVhY2ggd3JhcGFyb3VuZCBzdGF0ZS4KK3sKKwlteSAkdGFnID0gNjsK KwlteSAkb2xkID0KKwkJUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCJvbGRub2Rl JHt0YWd9IiwKKwkJCQkJCQkJCSAgIGluc3RhbGxfcGF0aCA9PiAkRU5We29sZGluc3RhbGx9 KTsKKworCSRvbGQtPmluaXQoZXh0cmEgPT4gWyctayddKTsKKworCXJlc2V0X214b2ZmKCRv bGQsIDB4RkZGRkZGRkYgLSA1MDBfMDAwKTsKKwkkb2xkLT5hcHBlbmRfY29uZigicG9zdGdy ZXNxbC5jb25mIiwgIm1heF9jb25uZWN0aW9ucyA9IDEyOCIpOworCW15ICgkc3RhcnRfbXhv ZmYsICRmaW5pc2hfbXhvZmYpID0gbXhhY3RfaHVnZV9lYXRlcigkb2xkKTsKKworCWRpYWcg InRlc3QgIyR7dGFnfSBmb3IgbXVsdGlwbGUgbXhvZmYgc2VnbWVudHMiOworCW15ICRuZXcg PSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoIm5ld25vZGUke3RhZ30iKTsKKwkk bmV3LT5pbml0OworCisJcnVuX3Rlc3QoJHRhZywgJG9sZCwgJG5ldyk7CisKKwkkc3RhcnRf bXhvZmYgPSB0b19oZXgoJHN0YXJ0X214b2ZmKTsKKwkkZmluaXNoX214b2ZmID0gdG9faGV4 KCRmaW5pc2hfbXhvZmYpOworCisJbXkgJG5leHRfbXhvZmYgPSB0b19oZXgobmV4dF9teG9m ZigkbmV3KSk7CisKKwlub3RlICI+Pj4gY2FzZSAjJHt0YWd9XG4iIC4KKwkJICIgb2xkbm9k ZSBteG9mZiBmcm9tICR7c3RhcnRfbXhvZmZ9IHRvICR7ZmluaXNoX214b2ZmfVxuIiAuCisJ CSAiIG5ld25vZGUgbXhvZmYgJHtuZXh0X214b2ZmfVxuIjsKK30KKworZG9uZV90ZXN0aW5n KCk7Ci0tIAoyLjQ3LjMKCg== --------------D5Uqc0qFgdUSc5DsuhKtaq91 Content-Type: text/x-patch; charset=UTF-8; name="v25-0010-TEST-add-consume_multixids-function.patch" Content-Disposition: attachment; filename="v25-0010-TEST-add-consume_multixids-function.patch" Content-Transfer-Encoding: base64 RnJvbSBiMzViM2RlMjk2ZjBkZDljODc3N2JlMDlmMzVkODI4OGEzZWJmYmFiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFR1ZSwgMSBBcHIgMjAyNSAyMTowMTowNyArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjI1IDEwLzEwXSBURVNUOiBhZGQgY29uc3VtZV9tdWx0aXhpZHMg ZnVuY3Rpb24KCi0tLQogc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC9NYWtlZmls ZSAgICAgIHwgIDEgKwogc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC9tZXNvbi5i dWlsZCAgIHwgIDEgKwogLi4uL3hpZF93cmFwYXJvdW5kL211bHRpeGlkX3dyYXBhcm91bmQu YyAgICAgIHwgOTYgKysrKysrKysrKysrKysrKysrKwogLi4uL3hpZF93cmFwYXJvdW5kL3hp ZF93cmFwYXJvdW5kLS0xLjAuc3FsICAgIHwgIDQgKwogNCBmaWxlcyBjaGFuZ2VkLCAxMDIg aW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMveGlk X3dyYXBhcm91bmQvbXVsdGl4aWRfd3JhcGFyb3VuZC5jCgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMv eGlkX3dyYXBhcm91bmQvTWFrZWZpbGUKaW5kZXggN2E2ZTBmNjY3NjIuLmViYjNkOGZjYjNl IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3hpZF93cmFwYXJvdW5kL01ha2VmaWxl CisrKyBiL3NyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQvTWFrZWZpbGUKQEAgLTMs NiArMyw3IEBACiBNT0RVTEVfYmlnID0geGlkX3dyYXBhcm91bmQKIE9CSlMgPSBcCiAJJChX SU4zMlJFUykgXAorCW11bHRpeGlkX3dyYXBhcm91bmQubyBcCiAJeGlkX3dyYXBhcm91bmQu bwogUEdGSUxFREVTQyA9ICJ4aWRfd3JhcGFyb3VuZCAtIHRlc3RzIGZvciBYSUQgd3JhcGFy b3VuZCIKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC9t ZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQvbWVzb24uYnVp bGQKaW5kZXggM2FlYzQzMGRmOGMuLmNlNGFjNDY4ODMwIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9tb2R1bGVzL3hpZF93cmFwYXJvdW5kL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L21v ZHVsZXMveGlkX3dyYXBhcm91bmQvbWVzb24uYnVpbGQKQEAgLTEsNiArMSw3IEBACiAjIENv cHlyaWdodCAoYykgMjAyMy0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBH cm91cAogCiB4aWRfd3JhcGFyb3VuZF9zb3VyY2VzID0gZmlsZXMoCisgICdtdWx0aXhpZF93 cmFwYXJvdW5kLmMnLAogICAneGlkX3dyYXBhcm91bmQuYycsCiApCiAKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQvbXVsdGl4aWRfd3JhcGFyb3VuZC5j IGIvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC9tdWx0aXhpZF93cmFwYXJvdW5k LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFmNTY3YzZlNTQx Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC9t dWx0aXhpZF93cmFwYXJvdW5kLmMKQEAgLTAsMCArMSw5NiBAQAorLyotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICoKKyAqIG11bHRpeGlkX3dyYXBhcm91bmQuYworICoJCVV0aWxpdGllcyBm b3IgdGVzdGluZyBtdWx0aXhpZHMKKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAxOTk2LTIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQ b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkg b2YgQ2FsaWZvcm5pYQorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkJc3JjL3Rlc3QvbW9k dWxlcy94aWRfd3JhcGFyb3VuZC9tdWx0aXhpZF93cmFwYXJvdW5kLmMKKyAqCisgKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVk ZSAiYWNjZXNzL211bHRpeGFjdC5oIgorI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisjaW5j bHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVk ZSAidXRpbHMveGlkOC5oIgorCitzdGF0aWMgaW50IG14YWN0TWVtYmVyQ29tcGFyYXRvcihj b25zdCB2b2lkICphcmcxLCBjb25zdCB2b2lkICphcmcyKTsKKworLyoKKyAqIENvbnN1bWUg dGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbXVsdGktWElEcywgd2l0aCBzcGVjaWZpZWQgbnVt YmVyIG9mCisgKiBtZW1iZXJzIGVhY2guCisgKi8KK1BHX0ZVTkNUSU9OX0lORk9fVjEoY29u c3VtZV9tdWx0aXhpZHMpOworRGF0dW0KK2NvbnN1bWVfbXVsdGl4aWRzKFBHX0ZVTkNUSU9O X0FSR1MpCit7CisJaW50NjQJCW5tdWx0aXMgPSBQR19HRVRBUkdfSU5UNjQoMCk7CisJaW50 MzIJCW5tZW1iZXJzID0gUEdfR0VUQVJHX0lOVDMyKDEpOworCU11bHRpWGFjdE1lbWJlciAq bWVtYmVyczsKKwlNdWx0aVhhY3RJZAlsYXN0bXhpZCA9IEludmFsaWRNdWx0aVhhY3RJZDsK KworCWlmIChubXVsdGlzIDwgMCkKKwkJZWxvZyhFUlJPUiwgImludmFsaWQgbnhpZHMgYXJn dW1lbnQ6ICUiIFBSSWQ2NCwgbm11bHRpcyk7CisJaWYgKG5tZW1iZXJzIDwgMSkKKwkJZWxv ZyhFUlJPUiwgImludmFsaWQgbm1lbWJlcnMgYXJndW1lbnQ6ICVkIiwgbm1lbWJlcnMpOwor CisJLyoKKwkgKiBXZSBjb25zdW1lIFhJRHMgYnkgY2FsbGluZyBHZXROZXdUcmFuc2FjdGlv bklkKHRydWUpLCB3aGljaCBtYXJrcyB0aGUKKwkgKiBjb25zdW1lZCBYSURzIGFzIHN1YnRy YW5zYWN0aW9ucyBvZiB0aGUgY3VycmVudCB0b3AtbGV2ZWwgdHJhbnNhY3Rpb24uCisJICog Rm9yIHRoYXQgdG8gd29yaywgdGhpcyB0cmFuc2FjdGlvbiBtdXN0IGhhdmUgYSB0b3AtbGV2 ZWwgWElELgorCSAqCisJICogR2V0TmV3VHJhbnNhY3Rpb25JZCByZWdpc3RlcnMgdGhlbSBp biB0aGUgc3VieGlkIGNhY2hlIGluIFBHUFJPQywgdW50aWwKKwkgKiB0aGUgY2FjaGUgb3Zl cmZsb3dzLCBidXQgYmV5b25kIHRoYXQsIHdlIGRvbid0IGtlZXAgdHJhY2sgb2YgdGhlCisJ ICogY29uc3VtZWQgWElEcy4KKwkgKi8KKwkodm9pZCkgR2V0VG9wVHJhbnNhY3Rpb25JZCgp OworCisJbWVtYmVycyA9IHBhbGxvYygobm11bHRpcyArIG5tZW1iZXJzKSAqIHNpemVvZihN dWx0aVhhY3RNZW1iZXIpKTsKKwlmb3IgKGludDMyIGkgPSAwOyBpIDwgbm11bHRpcyArIG5t ZW1iZXJzOyBpKyspCisJeworCQlGdWxsVHJhbnNhY3Rpb25JZCB4aWQ7CisKKwkJeGlkID0g R2V0TmV3VHJhbnNhY3Rpb25JZCh0cnVlKTsKKwkJbWVtYmVyc1tpXS54aWQgPSBYaWRGcm9t RnVsbFRyYW5zYWN0aW9uSWQoeGlkKTsKKwkJbWVtYmVyc1tpXS5zdGF0dXMgPSBNdWx0aVhh Y3RTdGF0dXNGb3JLZXlTaGFyZTsKKwl9CisJLyoKKwkgKiBwcmUtc29ydCB0aGUgYXJyYXkg bGlrZSBtWGFjdENhY2hlR2V0QnlTZXQgZG9lcywgc28gdGhhdCB0aGUgcXNvcnQgY2FsbAor CSAqIGluIG1YYWN0Q2FjaGVHZXRCeVNldCgpIGlzIGNoZWFwZXIuCisJICovCisJcXNvcnQo bWVtYmVycywgbm11bHRpcyArIG5tZW1iZXJzLCBzaXplb2YoTXVsdGlYYWN0TWVtYmVyKSwg bXhhY3RNZW1iZXJDb21wYXJhdG9yKTsKKworCWZvciAoaW50NjQgaSA9IDA7IGkgPCBubXVs dGlzOyBpKyspCisJeworCQlsYXN0bXhpZCA9IE11bHRpWGFjdElkQ3JlYXRlRnJvbU1lbWJl cnMobm1lbWJlcnMsICZtZW1iZXJzW2ldKTsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK Kwl9CisKKwlwZnJlZShtZW1iZXJzKTsKKworCVBHX1JFVFVSTl9UUkFOU0FDVElPTklEKGxh c3RteGlkKTsKK30KKworLyogY29waWVkIGZyb20gbXVsdGl4YWN0LmMgKi8KK3N0YXRpYyBp bnQKK214YWN0TWVtYmVyQ29tcGFyYXRvcihjb25zdCB2b2lkICphcmcxLCBjb25zdCB2b2lk ICphcmcyKQoreworCU11bHRpWGFjdE1lbWJlciBtZW1iZXIxID0gKihjb25zdCBNdWx0aVhh Y3RNZW1iZXIgKikgYXJnMTsKKwlNdWx0aVhhY3RNZW1iZXIgbWVtYmVyMiA9ICooY29uc3Qg TXVsdGlYYWN0TWVtYmVyICopIGFyZzI7CisKKwlpZiAobWVtYmVyMS54aWQgPiBtZW1iZXIy LnhpZCkKKwkJcmV0dXJuIDE7CisJaWYgKG1lbWJlcjEueGlkIDwgbWVtYmVyMi54aWQpCisJ CXJldHVybiAtMTsKKwlpZiAobWVtYmVyMS5zdGF0dXMgPiBtZW1iZXIyLnN0YXR1cykKKwkJ cmV0dXJuIDE7CisJaWYgKG1lbWJlcjEuc3RhdHVzIDwgbWVtYmVyMi5zdGF0dXMpCisJCXJl dHVybiAtMTsKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv eGlkX3dyYXBhcm91bmQveGlkX3dyYXBhcm91bmQtLTEuMC5zcWwgYi9zcmMvdGVzdC9tb2R1 bGVzL3hpZF93cmFwYXJvdW5kL3hpZF93cmFwYXJvdW5kLS0xLjAuc3FsCmluZGV4IDk2MzU2 YjRiOTc0Li5lZDc1MjBjM2Q4NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy94aWRf d3JhcGFyb3VuZC94aWRfd3JhcGFyb3VuZC0tMS4wLnNxbAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL3hpZF93cmFwYXJvdW5kL3hpZF93cmFwYXJvdW5kLS0xLjAuc3FsCkBAIC0xMCwzICsx MCw3IEBAIEFTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CiBDUkVBVEUgRlVOQ1RJ T04gY29uc3VtZV94aWRzX3VudGlsKHRhcmdldHhpZCB4aWQ4KQogUkVUVVJOUyB4aWQ4IFZP TEFUSUxFIFBBUkFMTEVMIFVOU0FGRSBTVFJJQ1QKIEFTICdNT0RVTEVfUEFUSE5BTUUnIExB TkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiBjb25zdW1lX211bHRpeGlkcyhubXVsdGlz IGJpZ2ludCwgbm1lbWJlcnMgaW50NCkKK1JFVFVSTlMgYmlnaW50IFZPTEFUSUxFIFBBUkFM TEVMIFVOU0FGRSBTVFJJQ1QKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7Ci0t IAoyLjQ3LjMKCg== --------------D5Uqc0qFgdUSc5DsuhKtaq91--