Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.92) (envelope-from ) id 1j81LG-0002YH-Vo for pgsql-hackers@arkaria.postgresql.org; Sat, 29 Feb 2020 12:35:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1j81LF-0000du-7D for pgsql-hackers@arkaria.postgresql.org; Sat, 29 Feb 2020 12:35:37 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1j81LE-0000dn-El for pgsql-hackers@lists.postgresql.org; Sat, 29 Feb 2020 12:35:36 +0000 Received: from cyclops.postgrespro.ru ([93.174.131.138] helo=mail.postgrespro.ru) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1j81L9-0000Ol-Gn for pgsql-hackers@lists.postgresql.org; Sat, 29 Feb 2020 12:35:35 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.postgrespro.ru (Postfix) with ESMTP id 1E93121C4DB8; Sat, 29 Feb 2020 15:35:29 +0300 (MSK) X-Virus-Scanned: Debian amavisd-new at postgrespro.ru X-Spam-Flag: NO X-Spam-Score: 0 X-Spam-Level: X-Spam-Status: No, score=x tagged_above=-99 required=4 WHITELISTED tests=[] autolearn=unavailable Received: from mail.postgrespro.ru (cyclops.l.postgrespro.ru [192.168.27.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id 19E3421C4DAB; Sat, 29 Feb 2020 15:35:27 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1582979728; bh=PjLQ96u7zpbDwPe/6876HZiO7cvUIx9BuE/0+Kf/+xQ=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=heeLaKyv7iz8tl4sKH+WoJ+xAuzMLquKJm3nNclNzCurRolu0QlARIvuqqpxhMLv2 2WvPgcjqTg8cP1L4KfNcutAkEjk3WeH7oC/a7GkvTn14UdcSj2kt3BniupYvLJqoqa Rsq4bdnn0rx5sCmmqoORf6RRS3zap7rLXeuCPkJs= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_dc57bdaf6fc6be80e3aeac11cfdbae94" Content-Transfer-Encoding: 7bit Date: Sat, 29 Feb 2020 15:35:27 +0300 From: Alexey Kondratov To: Justin Pryzby Cc: Michael Paquier , Masahiko Sawada , Steve Singer , pgsql-hackers@lists.postgresql.org, Alvaro Herrera , Robert Haas , Alexander Korotkov , Masahiko Sawada , Jose Luis Tallon Subject: Re: Allow CLUSTER, VACUUM FULL and REINDEX to change tablespace on the fly In-Reply-To: <20200211164848.GO1412@telsasoft.com> References: <8a8f5f73-00d3-55f8-7583-1375ca8f6a91@postgrespro.ru> <157395200750.29912.1178609357962324139.pgcf@coridan.postgresql.org> <827a9139-e02b-2dbf-5c6c-a6fbcaa1739a@postgrespro.ru> <20191127035416.GG5435@paquier.xyz> <3ae48673-283c-3e99-3dd8-36ebb81614b5@postgrespro.ru> <20191202082134.GI1696@paquier.xyz> <20200211164848.GO1412@telsasoft.com> User-Agent: Roundcube Webmail/1.4.0 Message-ID: X-Sender: a.kondratov@postgrespro.ru List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=_dc57bdaf6fc6be80e3aeac11cfdbae94 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2020-02-11 19:48, Justin Pryzby wrote: > For your v7 patch, which handles REINDEX to a new tablespace, I have a > few > minor comments: > > + * the relation will be rebuilt. If InvalidOid is used, the default > > => should say "currrent", not default ? > Yes, it keeps current index tablespace in that case, thanks. > > +++ b/doc/src/sgml/ref/reindex.sgml > + TABLESPACE > ... > + class="parameter">new_tablespace > > => I saw you split the description of TABLESPACE from new_tablespace > based on > comment earlier in the thread, but I suggest that the descriptions for > these > should be merged, like: > > + > + TABLESPACE class="parameter">new_tablespace > + > + > + Allow specification of a tablespace where all rebuilt indexes > will be created. > + Cannot be used with "mapped" relations. If > SCHEMA, > + DATABASE or SYSTEM are > specified, then > + all unsuitable relations will be skipped and a single > WARNING > + will be generated. > + > + > + > It sounds good to me, but here I just obey the structure, which is used all around. Documentation of ALTER TABLE/DATABASE, REINDEX and many others describes each literal/parameter in a separate entry, e.g. new_tablespace. So I would prefer to keep it as it is for now. > > The existing patch is very natural, especially the parts in the > original patch > handling vacuum full and cluster. Those were removed to concentrate on > REINDEX, and based on comments that it might be nice if ALTER handled > CLUSTER > and VACUUM FULL. On a separate thread, I brought up the idea of ALTER > using > clustered order. Tom pointed out some issues with my implementation, > but > didn't like the idea, either. > > So I suggest to re-include the CLUSTER/VAC FULL parts as a separate > 0002 patch, > the same way they were originally implemented. > > BTW, I think if "ALTER" were updated to support REINDEX (to allow > multiple > operations at once), it might be either: > |ALTER INDEX i SET TABLESPACE , REINDEX -- to reindex a single index > on a given tlbspc > or > |ALTER TABLE tbl REINDEX USING INDEX TABLESPACE spc; -- to reindex all > inds on table inds moved to a given tblspc > "USING INDEX TABLESPACE" is already used for ALTER..ADD column/table > CONSTRAINT. > Yes, I also think that allowing REINDEX/CLUSTER/VACUUM FULL to put resulting relation in a different tablespace is a very natural operation. However, I did a couple of attempts to integrate latter two with ALTER TABLE and failed with it, since it is already complex enough. I am still willing to proceed with it, but not sure how soon it will be. Anyway, new version is attached. It is rebased in order to resolve conflicts with a recent fix of REINDEX CONCURRENTLY + temp relations, and includes this small comment fix. Regards -- Alexey Kondratov Postgres Professional https://www.postgrespro.com The Russian Postgres Company --=_dc57bdaf6fc6be80e3aeac11cfdbae94 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v8-0001-Allow-REINDEX-to-change-tablespace.patch Content-Disposition: attachment; filename=v8-0001-Allow-REINDEX-to-change-tablespace.patch; size=33796 RnJvbSBkMmI3YTVmYTJlMTE2MDE3NTliNDdhZjBjMTQyYTc4MjRlZjkwN2EyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS29uZHJhdG92IDxrb25kcmF0b3YuYWxla3NleUBn bWFpbC5jb20+CkRhdGU6IE1vbiwgMzAgRGVjIDIwMTkgMjA6MDA6MzcgKzAzMDAKU3ViamVjdDog W1BBVENIIHY4XSBBbGxvdyBSRUlOREVYIHRvIGNoYW5nZSB0YWJsZXNwYWNlCgpSRUlOREVYIGFs cmVhZHkgZG9lcyBmdWxsIHJlbGF0aW9uIHJld3JpdGUsIHRoaXMgcGF0Y2ggYWRkcyBhCnBvc3Np YmlsaXR5IHRvIHNwZWNpZnkgYSBuZXcgdGFibGVzcGFjZSB3aGVyZSBuZXcgcmVsZmlsZW5vZGUK d2lsbCBiZSBjcmVhdGVkLgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sICAgICAg ICAgICAgIHwgMjQgKysrKystCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAg ICAgICB8IDc1ICsrKysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1c3Rl ci5jICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMg ICAgICAgICAgfCA5NiArKysrKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1 bmNzLmMgICAgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMg ICAgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAg ICAgIHwgMTQgKystLQogc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgICAgICAgICAgICAgICAg fCAgNiArLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jICAgICAgICAgICAgICAgfCAgNiAr Kwogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAgICAgICAgfCAgNyArLQogc3Jj L2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmggICAgICAgICAgICAgfCAgNiArLQogc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgfCAgMSArCiBzcmMvdGVzdC9yZWdyZXNz L2lucHV0L3RhYmxlc3BhY2Uuc291cmNlICB8IDQ5ICsrKysrKysrKysrKwogc3JjL3Rlc3QvcmVn cmVzcy9vdXRwdXQvdGFibGVzcGFjZS5zb3VyY2UgfCA2NiArKysrKysrKysrKysrKysrCiAxNSBm aWxlcyBjaGFuZ2VkLCAzMjMgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3Jl aW5kZXguc2dtbAppbmRleCBjNTRhN2M0MjBkNC4uMDYyOGM5NGJiMWUgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRl eC5zZ21sCkBAIC0yMSw3ICsyMSw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogCiAgPHJl ZnN5bm9wc2lzZGl2PgogPHN5bm9wc2lzPgotUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgSU5ERVggfCBU QUJMRSB8IFNDSEVNQSB8IERBVEFCQVNFIHwgU1lTVEVNIH0gWyBDT05DVVJSRU5UTFkgXSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CitSRUlOREVYIFsg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywg Li4uXSApIF0geyBJTkRFWCB8IFRBQkxFIHwgU0NIRU1BIHwgREFUQUJBU0UgfCBTWVNURU0gfSBb IENPTkNVUlJFTlRMWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBs YWNlYWJsZT4gWyBUQUJMRVNQQUNFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdf dGFibGVzcGFjZTwvcmVwbGFjZWFibGU+IF0KIAogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gY2FuIGJlIG9uZSBvZjo8L3Bo cmFzZT4KIApAQCAtMTc0LDYgKzE3NCwyOCBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBJTgogICAg IDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAg ICA8dGVybT48bGl0ZXJhbD5UQUJMRVNQQUNFPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0 ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBzcGVjaWZpZXMgYSB0YWJsZXNwYWNlLCB3aGVy ZSBhbGwgcmVidWlsdCBpbmRleGVzIHdpbGwgYmUgY3JlYXRlZC4KKyAgICAgIENhbm5vdCBiZSB1 c2VkIHdpdGggIm1hcHBlZCIgcmVsYXRpb25zLiBJZiA8bGl0ZXJhbD5TQ0hFTUE8L2xpdGVyYWw+ LAorICAgICAgPGxpdGVyYWw+REFUQUJBU0U8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPlNZU1RFTTwv bGl0ZXJhbD4gaXMgc3BlY2lmaWVkLCB0aGVuCisgICAgICBhbGwgdW5zdWl0YWJsZSByZWxhdGlv bnMgd2lsbCBiZSBza2lwcGVkIGFuZCBhIHNpbmdsZSA8bGl0ZXJhbD5XQVJOSU5HPC9saXRlcmFs PgorICAgICAgd2lsbCBiZSBnZW5lcmF0ZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5ld190YWJsZXNwYWNlPC9yZXBsYWNlYWJsZT48 L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lIG9mIHRo ZSBzcGVjaWZpYyB0YWJsZXNwYWNlIHRvIHN0b3JlIHJlYnVpbHQgaW5kZXhlcy4KKyAgICAgPC9w YXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3Rl bnRyeT4KICAgICA8dGVybT48bGl0ZXJhbD5WRVJCT1NFPC9saXRlcmFsPjwvdGVybT4KICAgICA8 bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggODg4MDU4NmMzNzIuLmZkMDczNzkxMThjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9pbmRleC5jCkBAIC0xMjM1LDkgKzEyMzUsMTMgQEAgaW5kZXhfY3JlYXRlKFJlbGF0 aW9uIGhlYXBSZWxhdGlvbiwKICAqIENyZWF0ZSBjb25jdXJyZW50bHkgYW4gaW5kZXggYmFzZWQg b24gdGhlIGRlZmluaXRpb24gb2YgdGhlIG9uZSBwcm92aWRlZCBieQogICogY2FsbGVyLiAgVGhl IGluZGV4IGlzIGluc2VydGVkIGludG8gY2F0YWxvZ3MgYW5kIG5lZWRzIHRvIGJlIGJ1aWx0IGxh dGVyCiAgKiBvbi4gIFRoaXMgaXMgY2FsbGVkIGR1cmluZyBjb25jdXJyZW50IHJlaW5kZXggcHJv Y2Vzc2luZy4KKyAqCisgKiAidGFibGVzcGFjZU9pZCIgaXMgdGhlIG5ldyB0YWJsZXNwYWNlIHRv IHVzZSBmb3IgdGhpcyBpbmRleC4gIElmCisgKiBJbnZhbGlkT2lkLCB1c2UgdGhlIHRhYmxlc3Bh Y2UgaW4tdXNlIGluc3RlYWQuCiAgKi8KIE9pZAotaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9j b3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsIGNvbnN0IGNoYXIgKm5l d05hbWUpCitpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0 aW9uLCBPaWQgb2xkSW5kZXhJZCwKKwkJCQkJCQkgICBPaWQgdGFibGVzcGFjZU9pZCwgY29uc3Qg Y2hhciAqbmV3TmFtZSkKIHsKIAlSZWxhdGlvbglpbmRleFJlbGF0aW9uOwogCUluZGV4SW5mbyAg Km9sZEluZm8sCkBAIC0xMzY3LDcgKzEzNzEsOCBAQCBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRl X2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwgY29uc3QgY2hhcgog CQkJCQkJCSAgbmV3SW5mbywKIAkJCQkJCQkgIGluZGV4Q29sTmFtZXMsCiAJCQkJCQkJICBpbmRl eFJlbGF0aW9uLT5yZF9yZWwtPnJlbGFtLAotCQkJCQkJCSAgaW5kZXhSZWxhdGlvbi0+cmRfcmVs LT5yZWx0YWJsZXNwYWNlLAorCQkJCQkJCSAgT2lkSXNWYWxpZCh0YWJsZXNwYWNlT2lkKSA/CisJ CQkJCQkJCXRhYmxlc3BhY2VPaWQgOiBpbmRleFJlbGF0aW9uLT5yZF9yZWwtPnJlbHRhYmxlc3Bh Y2UsCiAJCQkJCQkJICBpbmRleFJlbGF0aW9uLT5yZF9pbmRjb2xsYXRpb24sCiAJCQkJCQkJICBp bmRjbGFzcy0+dmFsdWVzLAogCQkJCQkJCSAgaW5kY29sb3B0aW9ucy0+dmFsdWVzLApAQCAtMzQw OCwxMCArMzQxMywxMiBAQCBJbmRleEdldFJlbGF0aW9uKE9pZCBpbmRleElkLCBib29sIG1pc3Np bmdfb2spCiAKIC8qCiAgKiByZWluZGV4X2luZGV4IC0gVGhpcyByb3V0aW5lIGlzIHVzZWQgdG8g cmVjcmVhdGUgYSBzaW5nbGUgaW5kZXgKKyAqCisgKiBTZWUgY29tbWVudHMgb2YgcmVpbmRleF9y ZWxhdGlvbigpIGZvciBkZXRhaWxzIGFib3V0ICJ0YWJsZXNwYWNlT2lkIi4KICAqLwogdm9pZAot cmVpbmRleF9pbmRleChPaWQgaW5kZXhJZCwgYm9vbCBza2lwX2NvbnN0cmFpbnRfY2hlY2tzLCBj aGFyIHBlcnNpc3RlbmNlLAotCQkJICBpbnQgb3B0aW9ucykKK3JlaW5kZXhfaW5kZXgoT2lkIGlu ZGV4SWQsIE9pZCB0YWJsZXNwYWNlT2lkLCBib29sIHNraXBfY29uc3RyYWludF9jaGVja3MsCisJ CQkgIGNoYXIgcGVyc2lzdGVuY2UsIGludCBvcHRpb25zKQogewogCVJlbGF0aW9uCWlSZWwsCiAJ CQkJaGVhcFJlbGF0aW9uOwpAQCAtMzQ1OCw2ICszNDY1LDE2IEBAIHJlaW5kZXhfaW5kZXgoT2lk IGluZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJhaW50X2NoZWNrcywgY2hhciBwZXJzaXN0ZW5jZSwK IAkJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIHJlbGF0aW9uIGtpbmQgZm9yIGluZGV4IFwiJXNc IiIsCiAJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaVJlbCkpOwogCisJLyoKKwkgKiBXZSBj YW5ub3Qgc3VwcG9ydCBtb3ZpbmcgbWFwcGVkIHJlbGF0aW9ucyBpbnRvIGRpZmZlcmVudCB0YWJs ZXNwYWNlcy4KKwkgKiAoSW4gcGFydGljdWxhciB0aGlzIGVsaW1pbmF0ZXMgYWxsIHNoYXJlZCBj YXRhbG9ncy4pCisJICovCisJaWYgKE9pZElzVmFsaWQodGFibGVzcGFjZU9pZCkgJiYgUmVsYXRp b25Jc01hcHBlZChpUmVsKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiY2Fubm90IG1vdmUgc3lzdGVt IHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpUmVsKSkp KTsKKwogCS8qCiAJICogRG9uJ3QgYWxsb3cgcmVpbmRleCBvbiB0ZW1wIHRhYmxlcyBvZiBvdGhl ciBiYWNrZW5kcyAuLi4gdGhlaXIgbG9jYWwKIAkgKiBidWZmZXIgbWFuYWdlciBpcyBub3QgZ29p bmcgdG8gY29wZS4KQEAgLTM0NzMsNiArMzQ5MCw0NSBAQCByZWluZGV4X2luZGV4KE9pZCBpbmRl eElkLCBib29sIHNraXBfY29uc3RyYWludF9jaGVja3MsIGNoYXIgcGVyc2lzdGVuY2UsCiAJICov CiAJQ2hlY2tUYWJsZU5vdEluVXNlKGlSZWwsICJSRUlOREVYIElOREVYIik7CiAKKwkvKgorCSAq IFNldCB0aGUgbmV3IHRhYmxlc3BhY2UgZm9yIHRoZSByZWxhdGlvbi4gIERvIHRoYXQgb25seSBp biB0aGUKKwkgKiBjYXNlIHdoZXJlIHRoZSByZWluZGV4IGNhbGxlciB3aXNoZXMgdG8gZW5mb3Jj ZSBhIG5ldyB0YWJsZXNwYWNlLgorCSAqLworCWlmIChPaWRJc1ZhbGlkKHRhYmxlc3BhY2VPaWQp ICYmCisJCXRhYmxlc3BhY2VPaWQgIT0gaVJlbC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlKQorCXsK KwkJUmVsYXRpb24JCXBnX2NsYXNzOworCQlGb3JtX3BnX2NsYXNzCXJkX3JlbDsKKwkJSGVhcFR1 cGxlCQl0dXBsZTsKKworCQkvKiBGaXJzdCBnZXQgYSBtb2RpZmlhYmxlIGNvcHkgb2YgdGhlIHJl bGF0aW9uJ3MgcGdfY2xhc3Mgcm93ICovCisJCXBnX2NsYXNzID0gdGFibGVfb3BlbihSZWxhdGlv blJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJCXR1cGxlID0gU2VhcmNoU3lzQ2Fj aGVDb3B5MShSRUxPSUQsIE9iamVjdElkR2V0RGF0dW0oaW5kZXhJZCkpOworCQlpZiAoIUhlYXBU dXBsZUlzVmFsaWQodHVwbGUpKQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQg Zm9yIHJlbGF0aW9uICV1IiwgaW5kZXhJZCk7CisJCXJkX3JlbCA9IChGb3JtX3BnX2NsYXNzKSBH RVRTVFJVQ1QodHVwbGUpOworCisJCS8qCisJCSAqIE1hcmsgdGhlIHJlbGF0aW9uIGFzIHJlYWR5 IHRvIGJlIGRyb3BwZWQgYXQgdHJhbnNhY3Rpb24gY29tbWl0LAorCQkgKiBiZWZvcmUgbWFraW5n IHZpc2libGUgdGhlIG5ldyB0YWJsZXNwYWNlIGNoYW5nZSBzbyBhcyB0aGlzIHdvbid0CisJCSAq IG1pc3MgdGhpbmdzLgorCQkgKi8KKwkJUmVsYXRpb25Ecm9wU3RvcmFnZShpUmVsKTsKKworCQkv KiBVcGRhdGUgdGhlIHBnX2NsYXNzIHJvdyAqLworCQlyZF9yZWwtPnJlbHRhYmxlc3BhY2UgPSAo dGFibGVzcGFjZU9pZCA9PSBNeURhdGFiYXNlVGFibGVTcGFjZSkgPworCQkJSW52YWxpZE9pZCA6 IHRhYmxlc3BhY2VPaWQ7CisJCUNhdGFsb2dUdXBsZVVwZGF0ZShwZ19jbGFzcywgJnR1cGxlLT50 X3NlbGYsIHR1cGxlKTsKKworCQloZWFwX2ZyZWV0dXBsZSh0dXBsZSk7CisKKwkJdGFibGVfY2xv c2UocGdfY2xhc3MsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJCS8qIE1ha2Ugc3VyZSB0aGUgcmVs dGFibGVzcGFjZSBjaGFuZ2UgaXMgdmlzaWJsZSAqLworCQlDb21tYW5kQ291bnRlckluY3JlbWVu dCgpOworCX0KKwogCS8qCiAJICogQWxsIHByZWRpY2F0ZSBsb2NrcyBvbiB0aGUgaW5kZXggYXJl IGFib3V0IHRvIGJlIG1hZGUgaW52YWxpZC4gUHJvbW90ZQogCSAqIHRoZW0gdG8gcmVsYXRpb24g bG9ja3Mgb24gdGhlIGhlYXAuCkBAIC0zNjExLDYgKzM2NjcsMTAgQEAgcmVpbmRleF9pbmRleChP aWQgaW5kZXhJZCwgYm9vbCBza2lwX2NvbnN0cmFpbnRfY2hlY2tzLCBjaGFyIHBlcnNpc3RlbmNl LAogICogcmVpbmRleF9yZWxhdGlvbiAtIFRoaXMgcm91dGluZSBpcyB1c2VkIHRvIHJlY3JlYXRl IGFsbCBpbmRleGVzCiAgKiBvZiBhIHJlbGF0aW9uIChhbmQgb3B0aW9uYWxseSBpdHMgdG9hc3Qg cmVsYXRpb24gdG9vLCBpZiBhbnkpLgogICoKKyAqICJ0YWJsZXNwYWNlT2lkIiBkZWZpbmVzIHRo ZSBuZXcgdGFibGVzcGFjZSB3aGVyZSB0aGUgaW5kZXhlcyBvZgorICogdGhlIHJlbGF0aW9uIHdp bGwgYmUgcmVidWlsdC4gIElmIEludmFsaWRPaWQgaXMgdXNlZCwgdGhlIGN1cnJlbnQKKyAqIHRh Ymxlc3BhY2Ugb2YgZWFjaCBpbmRleCBpcyB1c2VkIGluc3RlYWQuCisgKgogICogImZsYWdzIiBp cyBhIGJpdG1hc2sgdGhhdCBjYW4gaW5jbHVkZSBhbnkgY29tYmluYXRpb24gb2YgdGhlc2UgYml0 czoKICAqCiAgKiBSRUlOREVYX1JFTF9QUk9DRVNTX1RPQVNUOiBpZiB0cnVlLCBwcm9jZXNzIHRo ZSB0b2FzdCB0YWJsZSB0b28gKGlmIGFueSkuCkBAIC0zNjQzLDcgKzM3MDMsNyBAQCByZWluZGV4 X2luZGV4KE9pZCBpbmRleElkLCBib29sIHNraXBfY29uc3RyYWludF9jaGVja3MsIGNoYXIgcGVy c2lzdGVuY2UsCiAgKiBpbmRleCByZWJ1aWxkLgogICovCiBib29sCi1yZWluZGV4X3JlbGF0aW9u KE9pZCByZWxpZCwgaW50IGZsYWdzLCBpbnQgb3B0aW9ucykKK3JlaW5kZXhfcmVsYXRpb24oT2lk IHJlbGlkLCBPaWQgdGFibGVzcGFjZU9pZCwgaW50IGZsYWdzLCBpbnQgb3B0aW9ucykKIHsKIAlS ZWxhdGlvbglyZWw7CiAJT2lkCQkJdG9hc3RfcmVsaWQ7CkBAIC0zNzE3LDcgKzM3NzcsOCBAQCBy ZWluZGV4X3JlbGF0aW9uKE9pZCByZWxpZCwgaW50IGZsYWdzLCBpbnQgb3B0aW9ucykKIAkJewog CQkJT2lkCQkJaW5kZXhPaWQgPSBsZmlyc3Rfb2lkKGluZGV4SWQpOwogCi0JCQlyZWluZGV4X2lu ZGV4KGluZGV4T2lkLCAhKGZsYWdzICYgUkVJTkRFWF9SRUxfQ0hFQ0tfQ09OU1RSQUlOVFMpLAor CQkJcmVpbmRleF9pbmRleChpbmRleE9pZCwgdGFibGVzcGFjZU9pZCwKKwkJCQkJCSAgIShmbGFn cyAmIFJFSU5ERVhfUkVMX0NIRUNLX0NPTlNUUkFJTlRTKSwKIAkJCQkJCSAgcGVyc2lzdGVuY2Us IG9wdGlvbnMpOwogCiAJCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwpAQCAtMzc1MCw3ICsz ODExLDcgQEAgcmVpbmRleF9yZWxhdGlvbihPaWQgcmVsaWQsIGludCBmbGFncywgaW50IG9wdGlv bnMpCiAJICogc3RpbGwgaG9sZCB0aGUgbG9jayBvbiB0aGUgbWFzdGVyIHRhYmxlLgogCSAqLwog CWlmICgoZmxhZ3MgJiBSRUlOREVYX1JFTF9QUk9DRVNTX1RPQVNUKSAmJiBPaWRJc1ZhbGlkKHRv YXN0X3JlbGlkKSkKLQkJcmVzdWx0IHw9IHJlaW5kZXhfcmVsYXRpb24odG9hc3RfcmVsaWQsIGZs YWdzLCBvcHRpb25zKTsKKwkJcmVzdWx0IHw9IHJlaW5kZXhfcmVsYXRpb24odG9hc3RfcmVsaWQs IHRhYmxlc3BhY2VPaWQsIGZsYWdzLCBvcHRpb25zKTsKIAogCXJldHVybiByZXN1bHQ7CiB9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jbHVzdGVyLmMKaW5kZXggMTFjZTFiYjQwNDYuLjllNWIyODkwM2FhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY2x1c3Rlci5jCkBAIC0xNDA2LDcgKzE0MDYsNyBAQCBmaW5pc2hfaGVhcF9zd2FwKE9p ZCBPSURPbGRIZWFwLCBPaWQgT0lETmV3SGVhcCwKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3Bh cmFtKFBST0dSRVNTX0NMVVNURVJfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DTFVTVEVSX1BI QVNFX1JFQlVJTERfSU5ERVgpOwogCi0JcmVpbmRleF9yZWxhdGlvbihPSURPbGRIZWFwLCByZWlu ZGV4X2ZsYWdzLCAwKTsKKwlyZWluZGV4X3JlbGF0aW9uKE9JRE9sZEhlYXAsIEludmFsaWRPaWQs IHJlaW5kZXhfZmxhZ3MsIDApOwogCiAJLyogUmVwb3J0IHRoYXQgd2UgYXJlIG5vdyBkb2luZyBj bGVhbiB1cCAqLwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ0xVU1RF Ul9QSEFTRSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggZWMyMGJhMzhkMTMuLmQ1MDhm NTUyMDc1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtODcsNyArODcsNyBAQCBzdGF0 aWMgY2hhciAqQ2hvb3NlSW5kZXhOYW1lQWRkaXRpb24oTGlzdCAqY29sbmFtZXMpOwogc3RhdGlj IExpc3QgKkNob29zZUluZGV4Q29sdW1uTmFtZXMoTGlzdCAqaW5kZXhFbGVtcyk7CiBzdGF0aWMg dm9pZCBSYW5nZVZhckNhbGxiYWNrRm9yUmVpbmRleEluZGV4KGNvbnN0IFJhbmdlVmFyICpyZWxh dGlvbiwKIAkJCQkJCQkJCQkJT2lkIHJlbElkLCBPaWQgb2xkUmVsSWQsIHZvaWQgKmFyZyk7Ci1z dGF0aWMgYm9vbCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoT2lkIHJlbGF0aW9uT2lkLCBp bnQgb3B0aW9ucyk7CitzdGF0aWMgYm9vbCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoT2lk IHJlbGF0aW9uT2lkLCBPaWQgdGFibGVzcGFjZU9pZCwgaW50IG9wdGlvbnMpOwogc3RhdGljIHZv aWQgUmVpbmRleFBhcnRpdGlvbmVkSW5kZXgoUmVsYXRpb24gcGFyZW50SWR4KTsKIHN0YXRpYyB2 b2lkIHVwZGF0ZV9yZWxpc3BhcnRpdGlvbihPaWQgcmVsYXRpb25JZCwgYm9vbCBuZXd2YWwpOwog CkBAIC0yMzMxLDEwICsyMzMxLDExIEBAIENob29zZUluZGV4Q29sdW1uTmFtZXMoTGlzdCAqaW5k ZXhFbGVtcykKICAqCQlSZWNyZWF0ZSBhIHNwZWNpZmljIGluZGV4LgogICovCiB2b2lkCi1SZWlu ZGV4SW5kZXgoUmFuZ2VWYXIgKmluZGV4UmVsYXRpb24sIGludCBvcHRpb25zLCBib29sIGNvbmN1 cnJlbnQpCitSZWluZGV4SW5kZXgoUmFuZ2VWYXIgKmluZGV4UmVsYXRpb24sIGNoYXIgKm5ld1Rh YmxlU3BhY2VOYW1lLCBpbnQgb3B0aW9ucywgYm9vbCBjb25jdXJyZW50KQogewogCXN0cnVjdCBS ZWluZGV4SW5kZXhDYWxsYmFja1N0YXRlIHN0YXRlOwogCU9pZAkJCWluZE9pZDsKKwlPaWQJCQl0 YWJsZXNwYWNlT2lkID0gSW52YWxpZE9pZDsKIAlSZWxhdGlvbglpcmVsOwogCWNoYXIJCXBlcnNp c3RlbmNlOwogCkBAIC0yMzY5LDEyICsyMzcwLDI2IEBAIFJlaW5kZXhJbmRleChSYW5nZVZhciAq aW5kZXhSZWxhdGlvbiwgaW50IG9wdGlvbnMsIGJvb2wgY29uY3VycmVudCkKIAl9CiAKIAlwZXJz aXN0ZW5jZSA9IGlyZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2U7CisKKwkvKiBEZWZpbmUgbmV3 IHRhYmxlc3BhY2VPaWQgaWYgaXQgaXMgd2FudGVkIGJ5IGNhbGxlciAqLworCWlmIChuZXdUYWJs ZVNwYWNlTmFtZSkKKwl7CisJCXRhYmxlc3BhY2VPaWQgPSBnZXRfdGFibGVzcGFjZV9vaWQobmV3 VGFibGVTcGFjZU5hbWUsIGZhbHNlKTsKKworCQkvKiBDYW4ndCBtb3ZlIGEgbm9uLXNoYXJlZCBy ZWxhdGlvbiBpbnRvIHBnX2dsb2JhbCAqLworCQlpZiAodGFibGVzcGFjZU9pZCA9PSBHTE9CQUxU QUJMRVNQQUNFX09JRCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygiY2Fubm90IG1vdmUgbm9uLXNo YXJlZCByZWxhdGlvbiB0byB0YWJsZXNwYWNlIFwiJXNcIiIsCisJCQkJCQkJbmV3VGFibGVTcGFj ZU5hbWUpKSk7CisJfQorCiAJaW5kZXhfY2xvc2UoaXJlbCwgTm9Mb2NrKTsKIAogCWlmIChjb25j dXJyZW50ICYmIHBlcnNpc3RlbmNlICE9IFJFTFBFUlNJU1RFTkNFX1RFTVApCi0JCVJlaW5kZXhS ZWxhdGlvbkNvbmN1cnJlbnRseShpbmRPaWQsIG9wdGlvbnMpOworCQlSZWluZGV4UmVsYXRpb25D b25jdXJyZW50bHkoaW5kT2lkLCB0YWJsZXNwYWNlT2lkLCBvcHRpb25zKTsKIAllbHNlCi0JCXJl aW5kZXhfaW5kZXgoaW5kT2lkLCBmYWxzZSwgcGVyc2lzdGVuY2UsCisJCXJlaW5kZXhfaW5kZXgo aW5kT2lkLCB0YWJsZXNwYWNlT2lkLCBmYWxzZSwgcGVyc2lzdGVuY2UsCiAJCQkJCSAgb3B0aW9u cyB8IFJFSU5ERVhPUFRfUkVQT1JUX1BST0dSRVNTKTsKIH0KIApAQCAtMjQ1MywxMCArMjQ2OCwx MSBAQCBSYW5nZVZhckNhbGxiYWNrRm9yUmVpbmRleEluZGV4KGNvbnN0IFJhbmdlVmFyICpyZWxh dGlvbiwKICAqCQlSZWNyZWF0ZSBhbGwgaW5kZXhlcyBvZiBhIHRhYmxlIChhbmQgb2YgaXRzIHRv YXN0IHRhYmxlLCBpZiBhbnkpCiAgKi8KIE9pZAotUmVpbmRleFRhYmxlKFJhbmdlVmFyICpyZWxh dGlvbiwgaW50IG9wdGlvbnMsIGJvb2wgY29uY3VycmVudCkKK1JlaW5kZXhUYWJsZShSYW5nZVZh ciAqcmVsYXRpb24sIGNoYXIgKm5ld1RhYmxlU3BhY2VOYW1lLCBpbnQgb3B0aW9ucywgYm9vbCBj b25jdXJyZW50KQogewogCU9pZAkJCWhlYXBPaWQ7CiAJYm9vbAkJcmVzdWx0OworCU9pZCAJCXRh Ymxlc3BhY2VPaWQgPSBJbnZhbGlkT2lkOwogCiAJLyoKIAkgKiBUaGUgbG9jayBsZXZlbCB1c2Vk IGhlcmUgc2hvdWxkIG1hdGNoIHJlaW5kZXhfcmVsYXRpb24oKS4KQEAgLTI0NzEsOSArMjQ4Nywy MiBAQCBSZWluZGV4VGFibGUoUmFuZ2VWYXIgKnJlbGF0aW9uLCBpbnQgb3B0aW9ucywgYm9vbCBj b25jdXJyZW50KQogCQkJCQkJCQkJICAgMCwKIAkJCQkJCQkJCSAgIFJhbmdlVmFyQ2FsbGJhY2tP d25zVGFibGUsIE5VTEwpOwogCisJLyogRGVmaW5lIG5ldyB0YWJsZXNwYWNlT2lkIGlmIGl0IGlz IHdhbnRlZCBieSBjYWxsZXIgKi8KKwlpZiAobmV3VGFibGVTcGFjZU5hbWUpCisJeworCQl0YWJs ZXNwYWNlT2lkID0gZ2V0X3RhYmxlc3BhY2Vfb2lkKG5ld1RhYmxlU3BhY2VOYW1lLCBmYWxzZSk7 CisKKwkJLyogQ2FuJ3QgbW92ZSBhIG5vbi1zaGFyZWQgcmVsYXRpb24gaW50byBwZ19nbG9iYWwg Ki8KKwkJaWYgKHRhYmxlc3BhY2VPaWQgPT0gR0xPQkFMVEFCTEVTUEFDRV9PSUQpCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CisJCQkJCSBlcnJtc2coImNhbm5vdCBtb3ZlIG5vbi1zaGFyZWQgcmVsYXRpb24gdG8gdGFibGVz cGFjZSBcIiVzXCIiLAorCQkJCQkJCW5ld1RhYmxlU3BhY2VOYW1lKSkpOworCX0KKwogCWlmIChj b25jdXJyZW50ICYmIGdldF9yZWxfcGVyc2lzdGVuY2UoaGVhcE9pZCkgIT0gUkVMUEVSU0lTVEVO Q0VfVEVNUCkKIAl7Ci0JCXJlc3VsdCA9IFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShoZWFw T2lkLCBvcHRpb25zKTsKKwkJcmVzdWx0ID0gUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGhl YXBPaWQsIHRhYmxlc3BhY2VPaWQsIG9wdGlvbnMpOwogCiAJCWlmICghcmVzdWx0KQogCQkJZXJl cG9ydChOT1RJQ0UsCkBAIC0yNDgzLDYgKzI1MTIsNyBAQCBSZWluZGV4VGFibGUoUmFuZ2VWYXIg KnJlbGF0aW9uLCBpbnQgb3B0aW9ucywgYm9vbCBjb25jdXJyZW50KQogCWVsc2UKIAl7CiAJCXJl c3VsdCA9IHJlaW5kZXhfcmVsYXRpb24oaGVhcE9pZCwKKwkJCQkJCQkJICB0YWJsZXNwYWNlT2lk LAogCQkJCQkJCQkgIFJFSU5ERVhfUkVMX1BST0NFU1NfVE9BU1QgfAogCQkJCQkJCQkgIFJFSU5E RVhfUkVMX0NIRUNLX0NPTlNUUkFJTlRTLAogCQkJCQkJCQkgIG9wdGlvbnMgfCBSRUlOREVYT1BU X1JFUE9SVF9QUk9HUkVTUyk7CkBAIC0yNTA0LDEwICsyNTM0LDExIEBAIFJlaW5kZXhUYWJsZShS YW5nZVZhciAqcmVsYXRpb24sIGludCBvcHRpb25zLCBib29sIGNvbmN1cnJlbnQpCiAgKiBUaGF0 IG1lYW5zIHRoaXMgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGhpbiBhIHVzZXIgdHJhbnNhY3Rpb24g YmxvY2shCiAgKi8KIHZvaWQKLVJlaW5kZXhNdWx0aXBsZVRhYmxlcyhjb25zdCBjaGFyICpvYmpl Y3ROYW1lLCBSZWluZGV4T2JqZWN0VHlwZSBvYmplY3RLaW5kLAorUmVpbmRleE11bHRpcGxlVGFi bGVzKGNvbnN0IGNoYXIgKm9iamVjdE5hbWUsIFJlaW5kZXhPYmplY3RUeXBlIG9iamVjdEtpbmQs IGNoYXIgKm5ld1RhYmxlU3BhY2VOYW1lLAogCQkJCQkgIGludCBvcHRpb25zLCBib29sIGNvbmN1 cnJlbnQpCiB7CiAJT2lkCQkJb2JqZWN0T2lkOworCU9pZAkJCXRhYmxlc3BhY2VPaWQgPSBJbnZh bGlkT2lkOwogCVJlbGF0aW9uCXJlbGF0aW9uUmVsYXRpb247CiAJVGFibGVTY2FuRGVzYyBzY2Fu OwogCVNjYW5LZXlEYXRhIHNjYW5fa2V5c1sxXTsKQEAgLTI1MTgsNiArMjU0OSw3IEBAIFJlaW5k ZXhNdWx0aXBsZVRhYmxlcyhjb25zdCBjaGFyICpvYmplY3ROYW1lLCBSZWluZGV4T2JqZWN0VHlw ZSBvYmplY3RLaW5kLAogCUxpc3RDZWxsICAgKmw7CiAJaW50CQkJbnVtX2tleXM7CiAJYm9vbAkJ Y29uY3VycmVudF93YXJuaW5nID0gZmFsc2U7CisJYm9vbAkJbWFwcGVkX3dhcm5pbmcgPSBmYWxz ZTsKIAogCUFzc2VydEFyZyhvYmplY3ROYW1lKTsKIAlBc3NlcnQob2JqZWN0S2luZCA9PSBSRUlO REVYX09CSkVDVF9TQ0hFTUEgfHwKQEAgLTI1NTYsNiArMjU4OCwxOSBAQCBSZWluZGV4TXVsdGlw bGVUYWJsZXMoY29uc3QgY2hhciAqb2JqZWN0TmFtZSwgUmVpbmRleE9iamVjdFR5cGUgb2JqZWN0 S2luZCwKIAkJCQkJCSAgIG9iamVjdE5hbWUpOwogCX0KIAorCS8qIERlZmluZSBuZXcgdGFibGVz cGFjZU9pZCBpZiBpdCBpcyB3YW50ZWQgYnkgY2FsbGVyICovCisJaWYgKG5ld1RhYmxlU3BhY2VO YW1lKQorCXsKKwkJdGFibGVzcGFjZU9pZCA9IGdldF90YWJsZXNwYWNlX29pZChuZXdUYWJsZVNw YWNlTmFtZSwgZmFsc2UpOworCisJCS8qIENhbid0IG1vdmUgYSBub24tc2hhcmVkIHJlbGF0aW9u IGludG8gcGdfZ2xvYmFsICovCisJCWlmICh0YWJsZXNwYWNlT2lkID09IEdMT0JBTFRBQkxFU1BB Q0VfT0lEKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJjYW5ub3QgbW92ZSBub24tc2hhcmVkIHJl bGF0aW9uIHRvIHRhYmxlc3BhY2UgXCIlc1wiIiwKKwkJCQkJCQluZXdUYWJsZVNwYWNlTmFtZSkp KTsKKwl9CisKIAkvKgogCSAqIENyZWF0ZSBhIG1lbW9yeSBjb250ZXh0IHRoYXQgd2lsbCBzdXJ2 aXZlIGZvcmNlZCB0cmFuc2FjdGlvbiBjb21taXRzIHdlCiAJICogZG8gYmVsb3cuICBTaW5jZSBp dCBpcyBhIGNoaWxkIG9mIFBvcnRhbENvbnRleHQsIGl0IHdpbGwgZ28gYXdheQpAQCAtMjY0Niw2 ICsyNjkxLDIyIEBAIFJlaW5kZXhNdWx0aXBsZVRhYmxlcyhjb25zdCBjaGFyICpvYmplY3ROYW1l LCBSZWluZGV4T2JqZWN0VHlwZSBvYmplY3RLaW5kLAogCQkJY29udGludWU7CiAJCX0KIAorCQkv KgorCQkgKiBTa2lwIGFsbCBtYXBwZWQgcmVsYXRpb25zIGlmIFRBQkxFU1BBQ0UgaXMgc3BlY2lm aWVkLgorCQkgKiByZWxmaWxlbm9kZSA9PSAwIGNoZWNrcyBhZnRlciB0aGF0LCBzaW1pbGFybHkg dG8KKwkJICogUmVsYXRpb25Jc01hcHBlZCgpLgorCQkgKi8KKwkJaWYgKE9pZElzVmFsaWQodGFi bGVzcGFjZU9pZCkgJiYKKwkJCSFPaWRJc1ZhbGlkKGNsYXNzdHVwbGUtPnJlbGZpbGVub2RlKSkK KwkJeworCQkJaWYgKCFtYXBwZWRfd2FybmluZykKKwkJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNn KCJjYW5ub3QgY2hhbmdlIHRhYmxlc3BhY2Ugb2YgaW5kZXhlcyBmb3IgbWFwcGVkIHJlbGF0aW9u cywgc2tpcHBpbmcgYWxsIikpKTsKKwkJCW1hcHBlZF93YXJuaW5nID0gdHJ1ZTsKKwkJCWNvbnRp bnVlOworCQl9CisKIAkJLyogU2F2ZSB0aGUgbGlzdCBvZiByZWxhdGlvbiBPSURzIGluIHByaXZh dGUgY29udGV4dCAqLwogCQlvbGQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250 ZXh0KTsKIApAQCAtMjY3OSw3ICsyNzQwLDcgQEAgUmVpbmRleE11bHRpcGxlVGFibGVzKGNvbnN0 IGNoYXIgKm9iamVjdE5hbWUsIFJlaW5kZXhPYmplY3RUeXBlIG9iamVjdEtpbmQsCiAKIAkJaWYg KGNvbmN1cnJlbnQgJiYgZ2V0X3JlbF9wZXJzaXN0ZW5jZShyZWxpZCkgIT0gUkVMUEVSU0lTVEVO Q0VfVEVNUCkKIAkJewotCQkJKHZvaWQpIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShyZWxp ZCwgb3B0aW9ucyk7CisJCQkodm9pZCkgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KHJlbGlk LCB0YWJsZXNwYWNlT2lkLCBvcHRpb25zKTsKIAkJCS8qIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseSgpIGRvZXMgdGhlIHZlcmJvc2Ugb3V0cHV0ICovCiAJCX0KIAkJZWxzZQpAQCAtMjY4Nyw2 ICsyNzQ4LDcgQEAgUmVpbmRleE11bHRpcGxlVGFibGVzKGNvbnN0IGNoYXIgKm9iamVjdE5hbWUs IFJlaW5kZXhPYmplY3RUeXBlIG9iamVjdEtpbmQsCiAJCQlib29sCQlyZXN1bHQ7CiAKIAkJCXJl c3VsdCA9IHJlaW5kZXhfcmVsYXRpb24ocmVsaWQsCisJCQkJCQkJCQkgIHRhYmxlc3BhY2VPaWQs CiAJCQkJCQkJCQkgIFJFSU5ERVhfUkVMX1BST0NFU1NfVE9BU1QgfAogCQkJCQkJCQkJICBSRUlO REVYX1JFTF9DSEVDS19DT05TVFJBSU5UUywKIAkJCQkJCQkJCSAgb3B0aW9ucyB8IFJFSU5ERVhP UFRfUkVQT1JUX1BST0dSRVNTKTsKQEAgLTI3MTksNiArMjc4MSw5IEBAIFJlaW5kZXhNdWx0aXBs ZVRhYmxlcyhjb25zdCBjaGFyICpvYmplY3ROYW1lLCBSZWluZGV4T2JqZWN0VHlwZSBvYmplY3RL aW5kLAogICogaXRzZWxmIHdpbGwgYmUgcmVidWlsdC4gIElmICdyZWxhdGlvbk9pZCcgYmVsb25n cyB0byBhIHBhcnRpdGlvbmVkIHRhYmxlCiAgKiB0aGVuIHdlIGlzc3VlIGEgd2FybmluZyB0byBt ZW50aW9uIHRoZXNlIGFyZSBub3QgeWV0IHN1cHBvcnRlZC4KICAqCisgKiAndGFibGVzcGFjZU9p ZCcgZGVmaW5lcyB0aGUgbmV3IHRhYmxlc3BhY2Ugd2hlcmUgdGhlIGluZGV4ZXMgb2YKKyAqIHRo ZSByZWxhdGlvbiB3aWxsIGJlIHJlYnVpbHQuCisgKgogICogVGhlIGxvY2tzIHRha2VuIG9uIHBh cmVudCB0YWJsZXMgYW5kIGludm9sdmVkIGluZGV4ZXMgYXJlIGtlcHQgdW50aWwgdGhlCiAgKiB0 cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQsIGF0IHdoaWNoIHBvaW50IGEgc2Vzc2lvbiBsb2NrIGlz IHRha2VuIG9uIGVhY2gKICAqIHJlbGF0aW9uLiAgQm90aCBvZiB0aGVzZSBwcm90ZWN0IGFnYWlu c3QgY29uY3VycmVudCBzY2hlbWEgY2hhbmdlcy4KQEAgLTI3MzMsNyArMjc5OCw3IEBAIFJlaW5k ZXhNdWx0aXBsZVRhYmxlcyhjb25zdCBjaGFyICpvYmplY3ROYW1lLCBSZWluZGV4T2JqZWN0VHlw ZSBvYmplY3RLaW5kLAogICogYW55d2F5LCBhbmQgYSBub24tY29uY3VycmVudCByZWluZGV4IGlz IG1vcmUgZWZmaWNpZW50LgogICovCiBzdGF0aWMgYm9vbAotUmVpbmRleFJlbGF0aW9uQ29uY3Vy cmVudGx5KE9pZCByZWxhdGlvbk9pZCwgaW50IG9wdGlvbnMpCitSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoT2lkIHJlbGF0aW9uT2lkLCBPaWQgdGFibGVzcGFjZU9pZCwgaW50IG9wdGlvbnMp CiB7CiAJTGlzdAkgICAqaGVhcFJlbGF0aW9uSWRzID0gTklMOwogCUxpc3QJICAgKmluZGV4SWRz ID0gTklMOwpAQCAtMjgwNiw2ICsyODcxLDEyIEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRs eShPaWQgcmVsYXRpb25PaWQsIGludCBvcHRpb25zKQogCQkJCS8qIE9wZW4gcmVsYXRpb24gdG8g Z2V0IGl0cyBpbmRleGVzICovCiAJCQkJaGVhcFJlbGF0aW9uID0gdGFibGVfb3BlbihyZWxhdGlv bk9pZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKIAorCQkJCWlmIChPaWRJc1ZhbGlkKHRh Ymxlc3BhY2VPaWQpICYmIFJlbGF0aW9uSXNNYXBwZWQoaGVhcFJlbGF0aW9uKSkKKwkJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCisJCQkJCQkJIGVycm1zZygiY2Fubm90IGNoYW5nZSB0YWJsZXNwYWNlIG9mIGluZGV4ZXMg Zm9yIG1hcHBlZCByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUoaGVhcFJlbGF0aW9uKSkpKTsKKwogCQkJCS8qIEFkZCBhbGwgdGhlIHZhbGlkIGluZGV4 ZXMgb2YgcmVsYXRpb24gdG8gbGlzdCAqLwogCQkJCWZvcmVhY2gobGMsIFJlbGF0aW9uR2V0SW5k ZXhMaXN0KGhlYXBSZWxhdGlvbikpCiAJCQkJewpAQCAtMjk3OCw2ICszMDQ5LDEyIEBAIFJlaW5k ZXhSZWxhdGlvbkNvbmN1cnJlbnRseShPaWQgcmVsYXRpb25PaWQsIGludCBvcHRpb25zKQogCQlp ZiAoaW5kZXhSZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVN UCkKIAkJCWVsb2coRVJST1IsICJjYW5ub3QgcmVpbmRleCBhIHRlbXBvcmFyeSB0YWJsZSBjb25j dXJyZW50bHkiKTsKIAorCQlpZiAoT2lkSXNWYWxpZCh0YWJsZXNwYWNlT2lkKSAmJiBSZWxhdGlv bklzTWFwcGVkKGhlYXBSZWwpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJjYW5ub3QgY2hhbmdl IHRhYmxlc3BhY2Ugb2YgbWFwcGVkIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCQkJUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUoaGVhcFJlbCkpKSk7CisKIAkJcGdzdGF0X3Byb2dyZXNzX3N0YXJ0X2Nv bW1hbmQoUFJPR1JFU1NfQ09NTUFORF9DUkVBVEVfSU5ERVgsCiAJCQkJCQkJCQkgIFJlbGF0aW9u R2V0UmVsaWQoaGVhcFJlbCkpOwogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dS RVNTX0NSRUFURUlEWF9DT01NQU5ELApAQCAtMjk5Nyw2ICszMDc0LDcgQEAgUmVpbmRleFJlbGF0 aW9uQ29uY3VycmVudGx5KE9pZCByZWxhdGlvbk9pZCwgaW50IG9wdGlvbnMpCiAJCS8qIENyZWF0 ZSBuZXcgaW5kZXggZGVmaW5pdGlvbiBiYXNlZCBvbiBnaXZlbiBpbmRleCAqLwogCQluZXdJbmRl eElkID0gaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KGhlYXBSZWwsCiAJCQkJCQkJCQkJ CQkJaW5kZXhJZCwKKwkJCQkJCQkJCQkJCQl0YWJsZXNwYWNlT2lkLAogCQkJCQkJCQkJCQkJCWNv bmN1cnJlbnROYW1lKTsKIAogCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCAwMmE3 YzA0ZmRiNy4uOWQyMTg1NjA1ZmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh YmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0xODcw LDcgKzE4NzAsNyBAQCBFeGVjdXRlVHJ1bmNhdGVHdXRzKExpc3QgKmV4cGxpY2l0X3JlbHMsIExp c3QgKnJlbGlkcywgTGlzdCAqcmVsaWRzX2xvZ2dlZCwKIAkJCS8qCiAJCQkgKiBSZWNvbnN0cnVj dCB0aGUgaW5kZXhlcyB0byBtYXRjaCwgYW5kIHdlJ3JlIGRvbmUuCiAJCQkgKi8KLQkJCXJlaW5k ZXhfcmVsYXRpb24oaGVhcF9yZWxpZCwgUkVJTkRFWF9SRUxfUFJPQ0VTU19UT0FTVCwgMCk7CisJ CQlyZWluZGV4X3JlbGF0aW9uKGhlYXBfcmVsaWQsIEludmFsaWRPaWQsIFJFSU5ERVhfUkVMX1BS T0NFU1NfVE9BU1QsIDApOwogCQl9CiAKIAkJcGdzdGF0X2NvdW50X3RydW5jYXRlKHJlbCk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25v ZGVzL2NvcHlmdW5jcy5jCmluZGV4IGUwNGMzM2U0YWQ3Li44M2FiOTBjNjEyMyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMv Y29weWZ1bmNzLmMKQEAgLTQzOTUsNiArNDM5NSw3IEBAIF9jb3B5UmVpbmRleFN0bXQoY29uc3Qg UmVpbmRleFN0bXQgKmZyb20pCiAJQ09QWV9TVFJJTkdfRklFTEQobmFtZSk7CiAJQ09QWV9TQ0FM QVJfRklFTEQob3B0aW9ucyk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoY29uY3VycmVudCk7CisJQ09Q WV9TVFJJTkdfRklFTEQodGFibGVzcGFjZW5hbWUpOwogCiAJcmV0dXJuIG5ld25vZGU7CiB9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9u b2Rlcy9lcXVhbGZ1bmNzLmMKaW5kZXggNWIxYmExNDNiMWMuLmU2M2VkMDcyOWI5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9k ZXMvZXF1YWxmdW5jcy5jCkBAIC0yMTIyLDYgKzIxMjIsNyBAQCBfZXF1YWxSZWluZGV4U3RtdChj b25zdCBSZWluZGV4U3RtdCAqYSwgY29uc3QgUmVpbmRleFN0bXQgKmIpCiAJQ09NUEFSRV9TVFJJ TkdfRklFTEQobmFtZSk7CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQob3B0aW9ucyk7CiAJQ09NUEFS RV9TQ0FMQVJfRklFTEQoY29uY3VycmVudCk7CisJQ09NUEFSRV9TVFJJTkdfRklFTEQodGFibGVz cGFjZW5hbWUpOwogCiAJcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA5NmU3ZmRiY2Zl Mi4uNWI0N2ZiNjY0YTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtODM4NCwzMSArODM4NCwzMyBAQCBEcm9w VHJhbnNmb3JtU3RtdDogRFJPUCBUUkFOU0ZPUk0gb3B0X2lmX2V4aXN0cyBGT1IgVHlwZW5hbWUg TEFOR1VBR0UgbmFtZSBvcHRfZAogICoKICAqCQlRVUVSWToKICAqCi0gKgkJUkVJTkRFWCBbIChv cHRpb25zKSBdIHR5cGUgW0NPTkNVUlJFTlRMWV0gPG5hbWU+CisgKgkJUkVJTkRFWCBbIChvcHRp b25zKSBdIHR5cGUgW0NPTkNVUlJFTlRMWV0gPG5hbWU+IFsgVEFCTEVTUEFDRSA8dGFibGVzcGFj ZV9uYW1lPiBdCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIFJlaW5kZXhTdG10OgotCQkJUkVJ TkRFWCByZWluZGV4X3RhcmdldF90eXBlIG9wdF9jb25jdXJyZW50bHkgcXVhbGlmaWVkX25hbWUK KwkJCVJFSU5ERVggcmVpbmRleF90YXJnZXRfdHlwZSBvcHRfY29uY3VycmVudGx5IHF1YWxpZmll ZF9uYW1lIE9wdFRhYmxlU3BhY2UKIAkJCQl7CiAJCQkJCVJlaW5kZXhTdG10ICpuID0gbWFrZU5v ZGUoUmVpbmRleFN0bXQpOwogCQkJCQluLT5raW5kID0gJDI7CiAJCQkJCW4tPmNvbmN1cnJlbnQg PSAkMzsKIAkJCQkJbi0+cmVsYXRpb24gPSAkNDsKKwkJCQkJbi0+dGFibGVzcGFjZW5hbWUgPSAk NTsKIAkJCQkJbi0+bmFtZSA9IE5VTEw7CiAJCQkJCW4tPm9wdGlvbnMgPSAwOwogCQkJCQkkJCA9 IChOb2RlICopbjsKIAkJCQl9Ci0JCQl8IFJFSU5ERVggcmVpbmRleF90YXJnZXRfbXVsdGl0YWJs ZSBvcHRfY29uY3VycmVudGx5IG5hbWUKKwkJCXwgUkVJTkRFWCByZWluZGV4X3RhcmdldF9tdWx0 aXRhYmxlIG9wdF9jb25jdXJyZW50bHkgbmFtZSBPcHRUYWJsZVNwYWNlCiAJCQkJewogCQkJCQlS ZWluZGV4U3RtdCAqbiA9IG1ha2VOb2RlKFJlaW5kZXhTdG10KTsKIAkJCQkJbi0+a2luZCA9ICQy OwogCQkJCQluLT5jb25jdXJyZW50ID0gJDM7CiAJCQkJCW4tPm5hbWUgPSAkNDsKKwkJCQkJbi0+ dGFibGVzcGFjZW5hbWUgPSAkNTsKIAkJCQkJbi0+cmVsYXRpb24gPSBOVUxMOwogCQkJCQluLT5v cHRpb25zID0gMDsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQotCQkJfCBSRUlOREVYICco JyByZWluZGV4X29wdGlvbl9saXN0ICcpJyByZWluZGV4X3RhcmdldF90eXBlIG9wdF9jb25jdXJy ZW50bHkgcXVhbGlmaWVkX25hbWUKKwkJCXwgUkVJTkRFWCAnKCcgcmVpbmRleF9vcHRpb25fbGlz dCAnKScgcmVpbmRleF90YXJnZXRfdHlwZSBvcHRfY29uY3VycmVudGx5IHF1YWxpZmllZF9uYW1l IE9wdFRhYmxlU3BhY2UKIAkJCQl7CiAJCQkJCVJlaW5kZXhTdG10ICpuID0gbWFrZU5vZGUoUmVp bmRleFN0bXQpOwogCQkJCQluLT5raW5kID0gJDU7CkBAIC04NDE2LDkgKzg0MTgsMTAgQEAgUmVp bmRleFN0bXQ6CiAJCQkJCW4tPnJlbGF0aW9uID0gJDc7CiAJCQkJCW4tPm5hbWUgPSBOVUxMOwog CQkJCQluLT5vcHRpb25zID0gJDM7CisJCQkJCW4tPnRhYmxlc3BhY2VuYW1lID0gJDg7CiAJCQkJ CSQkID0gKE5vZGUgKiluOwogCQkJCX0KLQkJCXwgUkVJTkRFWCAnKCcgcmVpbmRleF9vcHRpb25f bGlzdCAnKScgcmVpbmRleF90YXJnZXRfbXVsdGl0YWJsZSBvcHRfY29uY3VycmVudGx5IG5hbWUK KwkJCXwgUkVJTkRFWCAnKCcgcmVpbmRleF9vcHRpb25fbGlzdCAnKScgcmVpbmRleF90YXJnZXRf bXVsdGl0YWJsZSBvcHRfY29uY3VycmVudGx5IG5hbWUgT3B0VGFibGVTcGFjZQogCQkJCXsKIAkJ CQkJUmVpbmRleFN0bXQgKm4gPSBtYWtlTm9kZShSZWluZGV4U3RtdCk7CiAJCQkJCW4tPmtpbmQg PSAkNTsKQEAgLTg0MjYsNiArODQyOSw3IEBAIFJlaW5kZXhTdG10OgogCQkJCQluLT5uYW1lID0g JDc7CiAJCQkJCW4tPnJlbGF0aW9uID0gTlVMTDsKIAkJCQkJbi0+b3B0aW9ucyA9ICQzOworCQkJ CQluLT50YWJsZXNwYWNlbmFtZSA9ICQ4OwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9CiAJ CTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQv dGNvcC91dGlsaXR5LmMKaW5kZXggYmI4NWI1ZTUyYWEuLjNjNWMyMTUwMDI3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxp dHkuYwpAQCAtOTMzLDEwICs5MzMsMTAgQEAgc3RhbmRhcmRfUHJvY2Vzc1V0aWxpdHkoUGxhbm5l ZFN0bXQgKnBzdG10LAogCQkJCXN3aXRjaCAoc3RtdC0+a2luZCkKIAkJCQl7CiAJCQkJCWNhc2Ug UkVJTkRFWF9PQkpFQ1RfSU5ERVg6Ci0JCQkJCQlSZWluZGV4SW5kZXgoc3RtdC0+cmVsYXRpb24s IHN0bXQtPm9wdGlvbnMsIHN0bXQtPmNvbmN1cnJlbnQpOworCQkJCQkJUmVpbmRleEluZGV4KHN0 bXQtPnJlbGF0aW9uLCBzdG10LT50YWJsZXNwYWNlbmFtZSwgc3RtdC0+b3B0aW9ucywgc3RtdC0+ Y29uY3VycmVudCk7CiAJCQkJCQlicmVhazsKIAkJCQkJY2FzZSBSRUlOREVYX09CSkVDVF9UQUJM RToKLQkJCQkJCVJlaW5kZXhUYWJsZShzdG10LT5yZWxhdGlvbiwgc3RtdC0+b3B0aW9ucywgc3Rt dC0+Y29uY3VycmVudCk7CisJCQkJCQlSZWluZGV4VGFibGUoc3RtdC0+cmVsYXRpb24sIHN0bXQt PnRhYmxlc3BhY2VuYW1lLCBzdG10LT5vcHRpb25zLCBzdG10LT5jb25jdXJyZW50KTsKIAkJCQkJ CWJyZWFrOwogCQkJCQljYXNlIFJFSU5ERVhfT0JKRUNUX1NDSEVNQToKIAkJCQkJY2FzZSBSRUlO REVYX09CSkVDVF9TWVNURU06CkBAIC05NTIsNyArOTUyLDcgQEAgc3RhbmRhcmRfUHJvY2Vzc1V0 aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCQkJCQkJCQkJCQkJICAoc3RtdC0+a2luZCA9PSBS RUlOREVYX09CSkVDVF9TQ0hFTUEpID8gIlJFSU5ERVggU0NIRU1BIiA6CiAJCQkJCQkJCQkJCQkg IChzdG10LT5raW5kID09IFJFSU5ERVhfT0JKRUNUX1NZU1RFTSkgPyAiUkVJTkRFWCBTWVNURU0i IDoKIAkJCQkJCQkJCQkJCSAgIlJFSU5ERVggREFUQUJBU0UiKTsKLQkJCQkJCVJlaW5kZXhNdWx0 aXBsZVRhYmxlcyhzdG10LT5uYW1lLCBzdG10LT5raW5kLCBzdG10LT5vcHRpb25zLCBzdG10LT5j b25jdXJyZW50KTsKKwkJCQkJCVJlaW5kZXhNdWx0aXBsZVRhYmxlcyhzdG10LT5uYW1lLCBzdG10 LT5raW5kLCBzdG10LT50YWJsZXNwYWNlbmFtZSwgc3RtdC0+b3B0aW9ucywgc3RtdC0+Y29uY3Vy cmVudCk7CiAJCQkJCQlicmVhazsKIAkJCQkJZGVmYXVsdDoKIAkJCQkJCWVsb2coRVJST1IsICJ1 bnJlY29nbml6ZWQgb2JqZWN0IHR5cGU6ICVkIiwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwppbmRleCBiNmIwOGQw Y2NiNi4uNWRmNWM4MDg1NGMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUu YworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKQEAgLTM0MjQsNiArMzQyNCwxMiBA QCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQog CQlDT01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3NjaGVtYXMpOwogCWVsc2Ug aWYgKE1hdGNoZXMoIlJFSU5ERVgiLCAiU1lTVEVNfERBVEFCQVNFIiwgIkNPTkNVUlJFTlRMWSIp KQogCQlDT01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX2RhdGFiYXNlcyk7CisJ ZWxzZSBpZiAoTWF0Y2hlcygiUkVJTkRFWCIsIE1hdGNoQW55LCAiQ09OQ1VSUkVOVExZIiwgTWF0 Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIKCJUQUJMRVNQQUNFIik7CisJZWxzZSBpZiAoTWF0Y2hl cygiUkVJTkRFWCIsIE1hdGNoQW55LCBNYXRjaEFueSkpCisJCUNPTVBMRVRFX1dJVEgoIlRBQkxF U1BBQ0UiKTsKKwllbHNlIGlmIChUYWlsTWF0Y2hlcygiVEFCTEVTUEFDRSIpKQorCQlDT01QTEVU RV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlc3BhY2VzKTsKIAogLyogU0VDVVJJ VFkgTEFCRUwgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJTRUNVUklUWSIpKQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5o CmluZGV4IGEyODkwYzEzMTRkLi5mMzhlOTc4YjQ1ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtODAs NiArODAsNyBAQCBleHRlcm4gT2lkCWluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAKIGV4dGVybiBPaWQJaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkJCQkJCQkJCQkgICBPaWQgb2xkSW5kZXhJZCwKKwkJCQkJCQkJCQkgICBP aWQgdGFibGVzcGFjZU9pZCwKIAkJCQkJCQkJCQkgICBjb25zdCBjaGFyICpuZXdOYW1lKTsKIAog ZXh0ZXJuIHZvaWQgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwK QEAgLTEzMSw4ICsxMzIsOCBAQCBleHRlcm4gdm9pZCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElk LCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpOwogCiBleHRlcm4gdm9pZCBpbmRleF9z ZXRfc3RhdGVfZmxhZ3MoT2lkIGluZGV4SWQsIEluZGV4U3RhdGVGbGFnc0FjdGlvbiBhY3Rpb24p OwogCi1leHRlcm4gdm9pZCByZWluZGV4X2luZGV4KE9pZCBpbmRleElkLCBib29sIHNraXBfY29u c3RyYWludF9jaGVja3MsCi0JCQkJCQkgIGNoYXIgcmVscGVyc2lzdGVuY2UsIGludCBvcHRpb25z KTsKK2V4dGVybiB2b2lkIHJlaW5kZXhfaW5kZXgoT2lkIGluZGV4SWQsIE9pZCB0YWJsZXNwYWNl T2lkLCBib29sIHNraXBfY29uc3RyYWludF9jaGVja3MsCisJCQkgIGNoYXIgcmVscGVyc2lzdGVu Y2UsIGludCBvcHRpb25zKTsKIAogLyogRmxhZyBiaXRzIGZvciByZWluZGV4X3JlbGF0aW9uKCk6 ICovCiAjZGVmaW5lIFJFSU5ERVhfUkVMX1BST0NFU1NfVE9BU1QJCQkweDAxCkBAIC0xNDEsNyAr MTQyLDcgQEAgZXh0ZXJuIHZvaWQgcmVpbmRleF9pbmRleChPaWQgaW5kZXhJZCwgYm9vbCBza2lw X2NvbnN0cmFpbnRfY2hlY2tzLAogI2RlZmluZSBSRUlOREVYX1JFTF9GT1JDRV9JTkRFWEVTX1VO TE9HR0VECTB4MDgKICNkZWZpbmUgUkVJTkRFWF9SRUxfRk9SQ0VfSU5ERVhFU19QRVJNQU5FTlQg MHgxMAogCi1leHRlcm4gYm9vbCByZWluZGV4X3JlbGF0aW9uKE9pZCByZWxpZCwgaW50IGZsYWdz LCBpbnQgb3B0aW9ucyk7CitleHRlcm4gYm9vbCByZWluZGV4X3JlbGF0aW9uKE9pZCByZWxpZCwg T2lkIHRhYmxlc3BhY2VPaWQsIGludCBmbGFncywgaW50IG9wdGlvbnMpOwogCiBleHRlcm4gYm9v bCBSZWluZGV4SXNQcm9jZXNzaW5nSGVhcChPaWQgaGVhcE9pZCk7CiBleHRlcm4gYm9vbCBSZWlu ZGV4SXNQcm9jZXNzaW5nSW5kZXgoT2lkIGluZGV4T2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2RlZnJlbS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgKaW5k ZXggZGVkZTlkNzg4ZWMuLjQ5OTllNTkwZTY3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21t YW5kcy9kZWZyZW0uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaApAQCAtMzQs MTAgKzM0LDEwIEBAIGV4dGVybiBPYmplY3RBZGRyZXNzIERlZmluZUluZGV4KE9pZCByZWxhdGlv bklkLAogCQkJCQkJCQkgYm9vbCBjaGVja19ub3RfaW5fdXNlLAogCQkJCQkJCQkgYm9vbCBza2lw X2J1aWxkLAogCQkJCQkJCQkgYm9vbCBxdWlldCk7Ci1leHRlcm4gdm9pZCBSZWluZGV4SW5kZXgo UmFuZ2VWYXIgKmluZGV4UmVsYXRpb24sIGludCBvcHRpb25zLCBib29sIGNvbmN1cnJlbnQpOwot ZXh0ZXJuIE9pZAlSZWluZGV4VGFibGUoUmFuZ2VWYXIgKnJlbGF0aW9uLCBpbnQgb3B0aW9ucywg Ym9vbCBjb25jdXJyZW50KTsKK2V4dGVybiB2b2lkIFJlaW5kZXhJbmRleChSYW5nZVZhciAqaW5k ZXhSZWxhdGlvbiwgY2hhciAqbmV3VGFibGVTcGFjZU5hbWUsIGludCBvcHRpb25zLCBib29sIGNv bmN1cnJlbnQpOworZXh0ZXJuIE9pZAlSZWluZGV4VGFibGUoUmFuZ2VWYXIgKnJlbGF0aW9uLCBj aGFyICpuZXdUYWJsZVNwYWNlTmFtZSwgaW50IG9wdGlvbnMsIGJvb2wgY29uY3VycmVudCk7CiBl eHRlcm4gdm9pZCBSZWluZGV4TXVsdGlwbGVUYWJsZXMoY29uc3QgY2hhciAqb2JqZWN0TmFtZSwg UmVpbmRleE9iamVjdFR5cGUgb2JqZWN0S2luZCwKLQkJCQkJCQkJICBpbnQgb3B0aW9ucywgYm9v bCBjb25jdXJyZW50KTsKKwkJCQkJCQkJICBjaGFyICpuZXdUYWJsZVNwYWNlTmFtZSwgaW50IG9w dGlvbnMsIGJvb2wgY29uY3VycmVudCk7CiBleHRlcm4gY2hhciAqbWFrZU9iamVjdE5hbWUoY29u c3QgY2hhciAqbmFtZTEsIGNvbnN0IGNoYXIgKm5hbWUyLAogCQkJCQkJCWNvbnN0IGNoYXIgKmxh YmVsKTsKIGV4dGVybiBjaGFyICpDaG9vc2VSZWxhdGlvbk5hbWUoY29uc3QgY2hhciAqbmFtZTEs IGNvbnN0IGNoYXIgKm5hbWUyLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGRhMDcwNmFkZDU5 Li43OTAwYmIwNzI2NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMzM1NCw2ICszMzU0LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgUmVpbmRleFN0bXQKIAljb25zdCBjaGFyICpuYW1lOwkJCS8qIG5h bWUgb2YgZGF0YWJhc2UgdG8gcmVpbmRleCAqLwogCWludAkJCW9wdGlvbnM7CQkvKiBSZWluZGV4 IG9wdGlvbnMgZmxhZ3MgKi8KIAlib29sCQljb25jdXJyZW50OwkJLyogcmVpbmRleCBjb25jdXJy ZW50bHk/ICovCisJY2hhcgkgICAqdGFibGVzcGFjZW5hbWU7IC8qIG5hbWUgb2YgdGFibGVzcGFj ZSB0byBzdG9yZSBpbmRleCAqLwogfSBSZWluZGV4U3RtdDsKIAogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNlLnNv dXJjZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvaW5wdXQvdGFibGVzcGFjZS5zb3VyY2UKaW5kZXggYTVm NjFhMzVkYzUuLjdkNjk4ZDQyOTRkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2lucHV0 L3RhYmxlc3BhY2Uuc291cmNlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvaW5wdXQvdGFibGVzcGFj ZS5zb3VyY2UKQEAgLTE3LDYgKzE3LDUyIEBAIEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc190Ymxz cGFjZSBTRVQgKHNvbWVfbm9uZXhpc3RlbnRfcGFyYW1ldGVyID0gdHJ1ZSk7ICAtLSBmCiBBTFRF UiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UgUkVTRVQgKHJhbmRvbV9wYWdlX2Nvc3QgPSAy LjApOyAtLSBmYWlsCiBBTFRFUiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UgUkVTRVQgKHJh bmRvbV9wYWdlX2Nvc3QsIGVmZmVjdGl2ZV9pb19jb25jdXJyZW5jeSk7IC0tIG9rCiAKKy0tIGNy ZWF0ZSB0YWJsZSB0byB0ZXN0IFJFSU5ERVggd2l0aCBUQUJMRVNQQUNFIGNoYW5nZQorQ1JFQVRF IFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEgYmlnaW50LCBudW0yIGRvdWJs ZSBwcmVjaXNpb24sIG51bTMgZG91YmxlIHByZWNpc2lvbik7CitJTlNFUlQgSU5UTyByZWdyZXNz X3RibHNwYWNlX3Rlc3RfdGJsIChudW0xLCBudW0yLCBudW0zKQorICBTRUxFQ1Qgcm91bmQocmFu ZG9tKCkqMTAwKSwgcmFuZG9tKCksIHJhbmRvbSgpKjQyCisgIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDIwMDAwKSBzKGkpOworQ1JFQVRFIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymxf aWR4IE9OIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEpOworCistLSBjaGVjayB0aGF0 IFJFSU5ERVggd2l0aCBUQUJMRVNQQUNFIGNoYW5nZSBpcyB0cmFuc2FjdGlvbmFsCitCRUdJTjsK K1JFSU5ERVggSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHggVEFCTEVTUEFDRSBy ZWdyZXNzX3RibHNwYWNlOworUkVJTkRFWCBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJs IFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK1JPTExCQUNLOworQkVHSU47CitSRUlOREVY IFRBQkxFIHBnX2FtIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK1JPTExCQUNLOworU0VM RUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9p ZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOwor CistLSBmaXJzdCwgbGV0IHVzIHJlaW5kZXggYW5kIG1vdmUgdGhlIGVudGlyZSBkYXRhYmFzZSwg YWZ0ZXIgdGhhdCByZXR1cm4gZXZlcnl0aGluZyBiYWNrCitSRUlOREVYIERBVEFCQVNFIHJlZ3Jl c3Npb24gVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOyAtLSBvayB3aXRoIHdhcm5pbmcKK1JF SU5ERVggREFUQUJBU0UgcmVncmVzc2lvbiBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7IC0tIG9rIHdp dGggd2FybmluZworU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVz cGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVz c190YmxzcGFjZScpOworCistLSBjaGVjayBSRUlOREVYIHdpdGggVEFCTEVTUEFDRSBjaGFuZ2UK K1JFSU5ERVggSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHggVEFCTEVTUEFDRSBy ZWdyZXNzX3RibHNwYWNlOyAtLSBvaworUkVJTkRFWCBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rl c3RfdGJsIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsgLS0gb2sKK1JFSU5ERVggVEFCTEUg cGdfYXV0aGlkIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsgLS0gZmFpbAorUkVJTkRFWCBT WVNURU0gQ09OQ1VSUkVOVExZIHBvc3RncmVzIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsg LS0gZmFpbAorUkVJTkRFWCBUQUJMRSBDT05DVVJSRU5UTFkgcGdfYW0gVEFCTEVTUEFDRSByZWdy ZXNzX3RibHNwYWNlOyAtLSBmYWlsCitSRUlOREVYIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVz dF90YmxfaWR4IFRBQkxFU1BBQ0UgcGdfZ2xvYmFsOyAtLSBmYWlsCitSRUlOREVYIFRBQkxFIHBn X2FtIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsgLS0gb2sKKworLS0gY2hlY2sgdGhhdCBh bGwgcmVsYXRpb25zIG1vdmVkIHRvIG5ldyB0YWJsZXNwYWNlCitTRUxFQ1QgcmVsbmFtZSBGUk9N IHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVz cGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJykKK09SREVSIEJZIHJlbG5hbWU7 CisKKy0tIG1vdmUgYmFjayB0byBwZ19kZWZhdWx0IHRhYmxlc3BhY2UKK1JFSU5ERVggVEFCTEUg Q09OQ1VSUkVOVExZIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgVEFCTEVTUEFDRSBwZ19kZWZh dWx0OyAtLSBvaworUkVJTkRFWCBUQUJMRSBwZ19hbSBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7IC0t IG9rCisKKy0tIGNoZWNrIHRoYXQgYWxsIHJlbGF0aW9ucyBtb3ZlZCBiYWNrIHRvIHBnX2RlZmF1 bHQKK1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNF TEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3Bh Y2UnKTsKKwogLS0gY3JlYXRlIGEgc2NoZW1hIHdlIGNhbiB1c2UKIENSRUFURSBTQ0hFTUEgdGVz dHNjaGVtYTsKIApAQCAtMjc5LDYgKzMyNSw5IEBAIEFMVEVSIFRBQkxFIEFMTCBJTiBUQUJMRVNQ QUNFIHJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1lZCBTRVQgVEFCTEVTUEFDRSBwZ19kZWZhdWx0CiAt LSBTaG91bGQgc3VjY2VlZAogRFJPUCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1l ZDsKIAorRFJPUCBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeDsKK0RST1AgVEFC TEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibDsKKwogRFJPUCBTQ0hFTUEgdGVzdHNjaGVtYSBD QVNDQURFOwogCiBEUk9QIFJPTEUgcmVncmVzc190YWJsZXNwYWNlX3VzZXIxOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9vdXRwdXQvdGFibGVzcGFjZS5zb3VyY2UgYi9zcmMvdGVzdC9y ZWdyZXNzL291dHB1dC90YWJsZXNwYWNlLnNvdXJjZQppbmRleCAxNjJiNTkxYjMxNS4uYmQxN2Zl YWE3M2YgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvb3V0cHV0L3RhYmxlc3BhY2Uuc291 cmNlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvb3V0cHV0L3RhYmxlc3BhY2Uuc291cmNlCkBAIC0y MCw2ICsyMCw3MCBAQCBFUlJPUjogIHVucmVjb2duaXplZCBwYXJhbWV0ZXIgInNvbWVfbm9uZXhp c3RlbnRfcGFyYW1ldGVyIgogQUxURVIgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlIFJFU0VU IChyYW5kb21fcGFnZV9jb3N0ID0gMi4wKTsgLS0gZmFpbAogRVJST1I6ICBSRVNFVCBtdXN0IG5v dCBpbmNsdWRlIHZhbHVlcyBmb3IgcGFyYW1ldGVycwogQUxURVIgVEFCTEVTUEFDRSByZWdyZXNz X3RibHNwYWNlIFJFU0VUIChyYW5kb21fcGFnZV9jb3N0LCBlZmZlY3RpdmVfaW9fY29uY3VycmVu Y3kpOyAtLSBvaworLS0gY3JlYXRlIHRhYmxlIHRvIHRlc3QgUkVJTkRFWCB3aXRoIFRBQkxFU1BB Q0UgY2hhbmdlCitDUkVBVEUgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibCAobnVtMSBi aWdpbnQsIG51bTIgZG91YmxlIHByZWNpc2lvbiwgbnVtMyBkb3VibGUgcHJlY2lzaW9uKTsKK0lO U0VSVCBJTlRPIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEsIG51bTIsIG51bTMpCisg IFNFTEVDVCByb3VuZChyYW5kb20oKSoxMDApLCByYW5kb20oKSwgcmFuZG9tKCkqNDIKKyAgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwMDApIHMoaSk7CitDUkVBVEUgSU5ERVggcmVncmVzc190 YmxzcGFjZV90ZXN0X3RibF9pZHggT04gcmVncmVzc190YmxzcGFjZV90ZXN0X3RibCAobnVtMSk7 CistLSBjaGVjayB0aGF0IFJFSU5ERVggd2l0aCBUQUJMRVNQQUNFIGNoYW5nZSBpcyB0cmFuc2Fj dGlvbmFsCitCRUdJTjsKK1JFSU5ERVggSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9p ZHggVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworUkVJTkRFWCBUQUJMRSByZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfdGJsIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK1JPTExCQUNLOwor QkVHSU47CitSRUlOREVYIFRBQkxFIHBnX2FtIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsK K1JPTExCQUNLOworU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVz cGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVz c190YmxzcGFjZScpOworIHJlbG5hbWUgCistLS0tLS0tLS0KKygwIHJvd3MpCisKKy0tIGZpcnN0 LCBsZXQgdXMgcmVpbmRleCBhbmQgbW92ZSB0aGUgZW50aXJlIGRhdGFiYXNlLCBhZnRlciB0aGF0 IHJldHVybiBldmVyeXRoaW5nIGJhY2sKK1JFSU5ERVggREFUQUJBU0UgcmVncmVzc2lvbiBUQUJM RVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7IC0tIG9rIHdpdGggd2FybmluZworV0FSTklORzogIGNh bm5vdCBjaGFuZ2UgdGFibGVzcGFjZSBvZiBpbmRleGVzIGZvciBtYXBwZWQgcmVsYXRpb25zLCBz a2lwcGluZyBhbGwKK1JFSU5ERVggREFUQUJBU0UgcmVncmVzc2lvbiBUQUJMRVNQQUNFIHBnX2Rl ZmF1bHQ7IC0tIG9rIHdpdGggd2FybmluZworV0FSTklORzogIGNhbm5vdCBjaGFuZ2UgdGFibGVz cGFjZSBvZiBpbmRleGVzIGZvciBtYXBwZWQgcmVsYXRpb25zLCBza2lwcGluZyBhbGwKK1NFTEVD VCByZWxuYW1lIEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQg RlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKyBy ZWxuYW1lIAorLS0tLS0tLS0tCisoMCByb3dzKQorCistLSBjaGVjayBSRUlOREVYIHdpdGggVEFC TEVTUEFDRSBjaGFuZ2UKK1JFSU5ERVggSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9p ZHggVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOyAtLSBvaworUkVJTkRFWCBUQUJMRSByZWdy ZXNzX3RibHNwYWNlX3Rlc3RfdGJsIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsgLS0gb2sK K1JFSU5ERVggVEFCTEUgcGdfYXV0aGlkIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsgLS0g ZmFpbAorRVJST1I6ICBjYW5ub3QgbW92ZSBzeXN0ZW0gcmVsYXRpb24gInBnX2F1dGhpZF9yb2xu YW1lX2luZGV4IgorUkVJTkRFWCBTWVNURU0gQ09OQ1VSUkVOVExZIHBvc3RncmVzIFRBQkxFU1BB Q0UgcmVncmVzc190YmxzcGFjZTsgLS0gZmFpbAorRVJST1I6ICBjYW5ub3QgcmVpbmRleCBzeXN0 ZW0gY2F0YWxvZ3MgY29uY3VycmVudGx5CitSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSBwZ19h bSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7IC0tIGZhaWwKK0VSUk9SOiAgY2Fubm90IHJl aW5kZXggc3lzdGVtIGNhdGFsb2dzIGNvbmN1cnJlbnRseQorUkVJTkRFWCBJTkRFWCByZWdyZXNz X3RibHNwYWNlX3Rlc3RfdGJsX2lkeCBUQUJMRVNQQUNFIHBnX2dsb2JhbDsgLS0gZmFpbAorRVJS T1I6ICBjYW5ub3QgbW92ZSBub24tc2hhcmVkIHJlbGF0aW9uIHRvIHRhYmxlc3BhY2UgInBnX2ds b2JhbCIKK1JFSU5ERVggVEFCTEUgcGdfYW0gVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOyAt LSBvaworLS0gY2hlY2sgdGhhdCBhbGwgcmVsYXRpb25zIG1vdmVkIHRvIG5ldyB0YWJsZXNwYWNl CitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxF Q1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNl JykKK09SREVSIEJZIHJlbG5hbWU7CisgICAgICAgICAgICByZWxuYW1lICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGdfYW1fbmFtZV9pbmRleAorIHBnX2Ft X29pZF9pbmRleAorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4CisoMyByb3dzKQorCist LSBtb3ZlIGJhY2sgdG8gcGdfZGVmYXVsdCB0YWJsZXNwYWNlCitSRUlOREVYIFRBQkxFIENPTkNV UlJFTlRMWSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsg LS0gb2sKK1JFSU5ERVggVEFCTEUgcGdfYW0gVEFCTEVTUEFDRSBwZ19kZWZhdWx0OyAtLSBvawor LS0gY2hlY2sgdGhhdCBhbGwgcmVsYXRpb25zIG1vdmVkIGJhY2sgdG8gcGdfZGVmYXVsdAorU0VM RUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9p ZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOwor IHJlbG5hbWUgCistLS0tLS0tLS0KKygwIHJvd3MpCisKIC0tIGNyZWF0ZSBhIHNjaGVtYSB3ZSBj YW4gdXNlCiBDUkVBVEUgU0NIRU1BIHRlc3RzY2hlbWE7CiAtLSB0cnkgYSB0YWJsZQpAQCAtNzM2 LDYgKzgwMCw4IEBAIEFMVEVSIFRBQkxFIEFMTCBJTiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3Bh Y2VfcmVuYW1lZCBTRVQgVEFCTEVTUEFDRSBwZ19kZWZhdWx0CiBOT1RJQ0U6ICBubyBtYXRjaGlu ZyByZWxhdGlvbnMgaW4gdGFibGVzcGFjZSAicmVncmVzc190YmxzcGFjZV9yZW5hbWVkIiBmb3Vu ZAogLS0gU2hvdWxkIHN1Y2NlZWQKIERST1AgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlX3Jl bmFtZWQ7CitEUk9QIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OworRFJPUCBU QUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsOwogRFJPUCBTQ0hFTUEgdGVzdHNjaGVtYSBD QVNDQURFOwogTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byA2IG90aGVyIG9iamVjdHMKIERFVEFJ TDogIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgdGVzdHNjaGVtYS5mb28KCmJhc2UtY29tbWl0OiA4 MGQ3NmJlNTFjZmI3ZjhmNTRlNzc5ZWM1YTI4N2Q4MGFjMjhiNmU0Ci0tIAoyLjE5LjEKCg== --=_dc57bdaf6fc6be80e3aeac11cfdbae94--