Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l5Y0s-0005W3-DM for pgsql-hackers@arkaria.postgresql.org; Fri, 29 Jan 2021 17:56:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l5Y0r-0006Tq-BV for pgsql-hackers@arkaria.postgresql.org; Fri, 29 Jan 2021 17:56:53 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l5Y0q-0006Tj-Sm for pgsql-hackers@lists.postgresql.org; Fri, 29 Jan 2021 17:56:53 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l5Y0n-0007MI-NC for pgsql-hackers@lists.postgresql.org; Fri, 29 Jan 2021 17:56:52 +0000 Received: from mail.postgrespro.ru (cyclops.postgrespro.ru [93.174.131.138]) (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 2674621C362C; Fri, 29 Jan 2021 20:56:48 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1611943008; bh=sccac311W72EZgLHMM2AZMEKdTIztr7amT/wlCgkqyo=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=YH2s0jVW7vbcEXckjl66+Ajvfb0uMpid8yIWgw5vo3zbHQyHvM+/0pZgVS1olkhRx Ew3ziunWrGfqbY83rftbbVEY1ZgiBZT5YNyox2X5kuILSQGfWgfVy91zXFmuZJquUX dah2L1uUda8EAoJQaoHnBjzXVZWhrpyosZypf7a8= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_2f52b58e1b84f789069e32e8ec140030" Content-Transfer-Encoding: 7bit Date: Fri, 29 Jan 2021 20:56:47 +0300 From: Alexey Kondratov To: Alvaro Herrera Cc: Michael Paquier , Justin Pryzby , Peter Eisentraut , Masahiko Sawada , Steve Singer , pgsql-hackers@lists.postgresql.org, 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: <55c6c1526b94d2caf54c33262fe00674@postgrespro.ru> References: <20210127213658.GA736@alvherre.pgsql> <55c6c1526b94d2caf54c33262fe00674@postgrespro.ru> 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 --=_2f52b58e1b84f789069e32e8ec140030 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2021-01-28 14:42, Alexey Kondratov wrote: > On 2021-01-28 00:36, Alvaro Herrera wrote: >> I didn't look at the patch closely enough to understand why you're >> trying to do something like CLUSTER, VACUUM FULL or REINDEX without >> holding full AccessExclusiveLock on the relation. But do keep in mind >> that once you hold a lock on a relation, trying to grab a weaker lock >> afterwards is pretty pointless. >> > > No, you are right, we are doing REINDEX with AccessExclusiveLock as it > was before. This part is a more specific one. It only applies to > partitioned indexes, which do not hold any data, so we do not reindex > them directly, only their leafs. However, if we are doing a TABLESPACE > change, we have to record it in their pg_class entry, so all future > leaf partitions were created in the proper tablespace. > > That way, we open partitioned index relation only for a reference, > i.e. read-only, but modify pg_class entry under a proper lock > (RowExclusiveLock). That's why I thought that ShareLock will be > enough. > > IIUC, 'ALTER TABLE ... SET TABLESPACE' uses AccessExclusiveLock even > for relations with no storage, since AlterTableGetLockLevel() chooses > it if AT_SetTableSpace is met. This is very similar to our case, so > probably we should do the same? > > Actually it is not completely clear for me why > ShareUpdateExclusiveLock is sufficient for newly added > SetRelationTableSpace() as Michael wrote in the comment. > Changed patch to use AccessExclusiveLock in this part for now. This is what 'ALTER TABLE/INDEX ... SET TABLESPACE' and 'REINDEX' usually do. Anyway, all real leaf partitions are processed in the independent transactions later. Also changed some doc/comment parts Justin pointed me to. >> + then all "mapped" and system relations will be skipped and a >> single >> + WARNING will be generated. Indexes on TOAST >> tables >> + are reindexed, but not moved the new tablespace. > > moved *to* the new tablespace. > Fixed. > > I don't know if that needs to be said at all. We talked about it a lot > to > arrive at the current behavior, but I think that's only due to the > difficulty > of correcting the initial mistake. > I do not think that it will be a big deal to move indexes on TOAST tables as well. I just thought that since 'ALTER TABLE/INDEX ... SET TABLESPACE' only moves them together with host table, we also should not do that. Yet, I am ready to change this logic if requested. Regards -- Alexey Kondratov Postgres Professional https://www.postgrespro.com Russian Postgres Company --=_2f52b58e1b84f789069e32e8ec140030 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v9-0001-Allow-REINDEX-to-change-tablespace.patch Content-Disposition: attachment; filename=v9-0001-Allow-REINDEX-to-change-tablespace.patch; size=32716 RnJvbSA2ZTlkYjhkMzYyZTc5NGVkZjQyMTczM2JjN2NhZGUzOGM5MTdiZmY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS29uZHJhdG92IDxrb25kcmF0b3YuYWxla3NleUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjcgSmFuIDIwMjEgMDA6NDY6MTcgKzAzMDAKU3ViamVjdDog W1BBVENIIHY5XSBBbGxvdyBSRUlOREVYIHRvIGNoYW5nZSB0YWJsZXNwYWNlCgpSRUlOREVYIGFs cmVhZHkgZG9lcyBmdWxsIHJlbGF0aW9uIHJld3JpdGUsIHRoaXMgcGF0Y2ggYWRkcyBhCnBvc3Np YmlsaXR5IHRvIHNwZWNpZnkgYSBuZXcgdGFibGVzcGFjZSB3aGVyZSBuZXcgcmVsZmlsZW5vZGUK d2lsbCBiZSBjcmVhdGVkLgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sICAgICAg ICAgICAgIHwgIDMxICsrKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAg ICAgIHwgIDQ3ICsrKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAg ICAgfCAxMTIgKysrKysrKysrKysrLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jICAgICAg ICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgICAgICAg ICAgIHwgICA5ICstCiBzcmMvdGVzdC9yZWdyZXNzL2lucHV0L3RhYmxlc3BhY2Uuc291cmNlICB8 IDEwNiArKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL291dHB1dC90YWJsZXNwYWNlLnNv dXJjZSB8IDE4MSArKysrKysrKysrKysrKysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDQ3OCBp bnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL3JlaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCmluZGV4IDYy N2IzNjMwMGMuLjJiMzk2OTlkNDIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRl eC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCkBAIC0yNyw2ICsyNyw3 IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3Jl cGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IElOCiAKICAgICBDT05DVVJSRU5UTFkgWyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IF0KICAgICBWRVJC T1NFIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxl PiBdCisgICAgVEFCTEVTUEFDRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X3Rh Ymxlc3BhY2U8L3JlcGxhY2VhYmxlPgogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2Pgog CkBAIC0xODcsNiArMTg4LDIxIEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IElOCiAgICAgPC9saXN0 aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJt PjxsaXRlcmFsPlRBQkxFU1BBQ0U8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAg ICAgPHBhcmE+CisgICAgICBTcGVjaWZpZXMgdGhhdCBpbmRleGVzIHdpbGwgYmUgcmVidWlsdCBv biBhIG5ldyB0YWJsZXNwYWNlLgorICAgICAgQ2Fubm90IGJlIHVzZWQgd2l0aCAibWFwcGVkIiBv ciAodW5sZXNzIDx2YXJuYW1lPmFsbG93X3N5c3RlbV90YWJsZV9tb2RzPC92YXJuYW1lPikKKyAg ICAgIHN5c3RlbSByZWxhdGlvbnMuIElmIDxsaXRlcmFsPlNDSEVNQTwvbGl0ZXJhbD4sCisgICAg ICA8bGl0ZXJhbD5EQVRBQkFTRTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+U1lTVEVNPC9saXRlcmFs PiBhcmUgc3BlY2lmaWVkLAorICAgICAgdGhlbiBhbGwgIm1hcHBlZCIgYW5kIHN5c3RlbSByZWxh dGlvbnMgd2lsbCBiZSBza2lwcGVkIGFuZCBhIHNpbmdsZQorICAgICAgPGxpdGVyYWw+V0FSTklO RzwvbGl0ZXJhbD4gd2lsbCBiZSBnZW5lcmF0ZWQuIEluZGV4ZXMgb24gVE9BU1QgdGFibGVzCisg ICAgICBhcmUgcmVpbmRleGVkLCBidXQgbm90IG1vdmVkIHRvIHRoZSBuZXcgdGFibGVzcGFjZS4K KyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAg PHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48bGl0ZXJhbD5WRVJCT1NFPC9saXRlcmFsPjwvdGVy bT4KICAgICA8bGlzdGl0ZW0+CkBAIC0yMTAsNiArMjI2LDE0IEBAIFJFSU5ERVggWyAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkg XSB7IElOCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlz dGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdfdGFi bGVzcGFjZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+ CisgICAgICBUaGUgdGFibGVzcGFjZSB3aGVyZSBpbmRleGVzIHdpbGwgYmUgcmVidWlsdC4KKyAg ICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KICAgPC92YXJp YWJsZWxpc3Q+CiAgPC9yZWZzZWN0MT4KIApAQCAtMjkyLDcgKzMxNiwxMiBAQCBSRUlOREVYIFsg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywg Li4uXSApIF0geyBJTgogICAgd2l0aCA8Y29tbWFuZD5SRUlOREVYIElOREVYPC9jb21tYW5kPiBv ciA8Y29tbWFuZD5SRUlOREVYIFRBQkxFPC9jb21tYW5kPiwKICAgIHJlc3BlY3RpdmVseS4gRWFj aCBwYXJ0aXRpb24gb2YgdGhlIHNwZWNpZmllZCBwYXJ0aXRpb25lZCByZWxhdGlvbiBpcwogICAg cmVpbmRleGVkIGluIGEgc2VwYXJhdGUgdHJhbnNhY3Rpb24uIFRob3NlIGNvbW1hbmRzIGNhbm5v dCBiZSB1c2VkIGluc2lkZQotICAgYSB0cmFuc2FjdGlvbiBibG9jayB3aGVuIHdvcmtpbmcgb24g YSBwYXJ0aXRpb25lZCB0YWJsZSBvciBpbmRleC4KKyAgIGEgdHJhbnNhY3Rpb24gYmxvY2sgd2hl biB3b3JraW5nIG9uIGEgcGFydGl0aW9uZWQgdGFibGUgb3IgaW5kZXguIElmCisgICBhIDxjb21t YW5kPlJFSU5ERVg8L2NvbW1hbmQ+IGNvbW1hbmQgZmFpbHMgd2hlbiBydW4gb24gYSBwYXJ0aXRp b25lZAorICAgcmVsYXRpb24sIGFuZCA8bGl0ZXJhbD5UQUJMRVNQQUNFPC9saXRlcmFsPiB3YXMg c3BlY2lmaWVkLCB0aGVuIGl0IG1heSBoYXZlCisgICBtb3ZlZCBpbmRleGVzIG9uIHNvbWUgcGFy dGl0aW9ucyB0byB0aGUgbmV3IHRhYmxlc3BhY2UuICBSZS1ydW5uaW5nIHRoZSBjb21tYW5kCisg ICB3aWxsIHJlaW5kZXggYWxsIHBhcnRpdGlvbnMgYW5kIG1vdmUgcHJldmlvdXNseS11bnByb2Nl c3NlZCBpbmRleGVzIHRvIHRoZSBuZXcKKyAgIHRhYmxlc3BhY2UuCiAgIDwvcGFyYT4KIAogICA8 cmVmc2VjdDIgaWQ9InNxbC1yZWluZGV4LWNvbmN1cnJlbnRseSIgeHJlZmxhYmVsPSJSZWJ1aWxk aW5nIEluZGV4ZXMgQ29uY3VycmVudGx5Ij4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCBiOGNkMzVlOTk1 Li5kZjQyMjA2NDZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVk ZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3Byb2dyZXNz LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVjbWRzLmgiCisjaW5jbHVkZSAiY29tbWFuZHMv dGFibGVzcGFjZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJl eGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgpAQCAtMTM5NCw5ICsx Mzk1LDEyIEBAIGluZGV4X3VwZGF0ZV9jb2xsYXRpb25fdmVyc2lvbnMoT2lkIHJlbGlkLCBPaWQg Y29sbCkKICAqIENyZWF0ZSBjb25jdXJyZW50bHkgYW4gaW5kZXggYmFzZWQgb24gdGhlIGRlZmlu aXRpb24gb2YgdGhlIG9uZSBwcm92aWRlZCBieQogICogY2FsbGVyLiAgVGhlIGluZGV4IGlzIGlu c2VydGVkIGludG8gY2F0YWxvZ3MgYW5kIG5lZWRzIHRvIGJlIGJ1aWx0IGxhdGVyCiAgKiBvbi4g IFRoaXMgaXMgY2FsbGVkIGR1cmluZyBjb25jdXJyZW50IHJlaW5kZXggcHJvY2Vzc2luZy4KKyAq CisgKiAidGFibGVzcGFjZU9pZCIgaXMgdGhlIHRhYmxlc3BhY2UgdG8gdXNlIGZvciB0aGlzIGlu ZGV4LgogICovCiBPaWQKLWluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBo ZWFwUmVsYXRpb24sIE9pZCBvbGRJbmRleElkLCBjb25zdCBjaGFyICpuZXdOYW1lKQoraW5kZXhf Y29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZElu ZGV4SWQsCisJCQkJCQkJICAgT2lkIHRhYmxlc3BhY2VPaWQsIGNvbnN0IGNoYXIgKm5ld05hbWUp CiB7CiAJUmVsYXRpb24JaW5kZXhSZWxhdGlvbjsKIAlJbmRleEluZm8gICpvbGRJbmZvLApAQCAt MTUyNiw3ICsxNTMwLDcgQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9u IGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsIGNvbnN0IGNoYXIKIAkJCQkJCQkgIG5ld0lu Zm8sCiAJCQkJCQkJICBpbmRleENvbE5hbWVzLAogCQkJCQkJCSAgaW5kZXhSZWxhdGlvbi0+cmRf cmVsLT5yZWxhbSwKLQkJCQkJCQkgIGluZGV4UmVsYXRpb24tPnJkX3JlbC0+cmVsdGFibGVzcGFj ZSwKKwkJCQkJCQkgIHRhYmxlc3BhY2VPaWQsCiAJCQkJCQkJICBpbmRleFJlbGF0aW9uLT5yZF9p bmRjb2xsYXRpb24sCiAJCQkJCQkJICBpbmRjbGFzcy0+dmFsdWVzLAogCQkJCQkJCSAgaW5kY29s b3B0aW9ucy0+dmFsdWVzLApAQCAtMzYwMyw2ICszNjA3LDcgQEAgcmVpbmRleF9pbmRleChPaWQg aW5kZXhJZCwgYm9vbCBza2lwX2NvbnN0cmFpbnRfY2hlY2tzLCBjaGFyIHBlcnNpc3RlbmNlLAog CXZvbGF0aWxlIGJvb2wgc2tpcHBlZF9jb25zdHJhaW50ID0gZmFsc2U7CiAJUEdSVXNhZ2UJcnUw OwogCWJvb2wJCXByb2dyZXNzID0gKChwYXJhbXMtPm9wdGlvbnMgJiBSRUlOREVYT1BUX1JFUE9S VF9QUk9HUkVTUykgIT0gMCk7CisJYm9vbAkJc2V0X3RhYmxlc3BhY2UgPSBPaWRJc1ZhbGlkKHBh cmFtcy0+dGFibGVzcGFjZU9pZCk7CiAKIAlwZ19ydXNhZ2VfaW5pdCgmcnUwKTsKIApAQCAtMzY1 NCwxNCArMzY1OSwyMCBAQCByZWluZGV4X2luZGV4KE9pZCBpbmRleElkLCBib29sIHNraXBfY29u c3RyYWludF9jaGVja3MsIGNoYXIgcGVyc2lzdGVuY2UsCiAJCQkgZ2V0X25hbWVzcGFjZV9uYW1l KFJlbGF0aW9uR2V0TmFtZXNwYWNlKGlSZWwpKSwKIAkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShpUmVsKSk7CiAKKwlpZiAoc2V0X3RhYmxlc3BhY2UpCisJCXNldF90YWJsZXNwYWNlID0gQ2hl Y2tSZWxhdGlvblRhYmxlU3BhY2VNb3ZlKGlSZWwsCisJCQkJCQkJCQkJCQkJIHBhcmFtcy0+dGFi bGVzcGFjZU9pZCk7CisKIAkvKgotCSAqIERvbid0IGFsbG93IHJlaW5kZXggb24gdGVtcCB0YWJs ZXMgb2Ygb3RoZXIgYmFja2VuZHMgLi4uIHRoZWlyIGxvY2FsCi0JICogYnVmZmVyIG1hbmFnZXIg aXMgbm90IGdvaW5nIHRvIGNvcGUuCisJICogV2UgZG9uJ3Qgc3VwcG9ydCBtb3Zpbmcgc3lzdGVt IHJlbGF0aW9ucyBpbnRvIGRpZmZlcmVudCB0YWJsZXNwYWNlcworCSAqIHVubGVzcyBhbGxvd19z eXN0ZW1fdGFibGVfbW9kcz0xLgogCSAqLwotCWlmIChSRUxBVElPTl9JU19PVEhFUl9URU1QKGlS ZWwpKQorCWlmIChzZXRfdGFibGVzcGFjZSAmJgorCQkhYWxsb3dTeXN0ZW1UYWJsZU1vZHMgJiYg SXNTeXN0ZW1SZWxhdGlvbihpUmVsKSkKIAkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJIGVycm1zZygiY2Fubm90IHJlaW5k ZXggdGVtcG9yYXJ5IHRhYmxlcyBvZiBvdGhlciBzZXNzaW9ucyIpKSk7CisJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkgZXJybXNnKCJwZXJtaXNzaW9u IGRlbmllZDogXCIlc1wiIGlzIGEgc3lzdGVtIGNhdGFsb2ciLAorCQkJCQkJUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUoaVJlbCkpKSk7CiAKIAkvKgogCSAqIERvbid0IGFsbG93IHJlaW5kZXggb2Yg YW4gaW52YWxpZCBpbmRleCBvbiBUT0FTVCB0YWJsZS4gIFRoaXMgaXMgYQpAQCAtMzY4MCw2ICsz NjkxLDI0IEBAIHJlaW5kZXhfaW5kZXgoT2lkIGluZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJhaW50 X2NoZWNrcywgY2hhciBwZXJzaXN0ZW5jZSwKIAkgKi8KIAlDaGVja1RhYmxlTm90SW5Vc2UoaVJl bCwgIlJFSU5ERVggSU5ERVgiKTsKIAorCS8qIFNldCBuZXcgdGFibGVzcGFjZSwgaWYgcmVxdWVz dGVkLiAqLworCWlmIChzZXRfdGFibGVzcGFjZSkKKwl7CisJCVNldFJlbGF0aW9uVGFibGVTcGFj ZShpUmVsLCBwYXJhbXMtPnRhYmxlc3BhY2VPaWQsIEludmFsaWRPaWQpOworCisJCS8qCisJCSAq IE1hcmsgdGhlIHJlbGF0aW9uIGFzIHJlYWR5IHRvIGJlIGRyb3BwZWQgYXQgdHJhbnNhY3Rpb24g Y29tbWl0LAorCQkgKiBiZWZvcmUgbWFraW5nIHZpc2libGUgdGhlIG5ldyB0YWJsZXNwYWNlIGNo YW5nZSBzbyBhcyB0aGlzIHdvbid0CisJCSAqIG1pc3MgdGhpbmdzLgorCQkgKi8KKwkJUmVsYXRp b25Ecm9wU3RvcmFnZShpUmVsKTsKKworCQlSZWxhdGlvbkFzc3VtZU5ld1JlbGZpbGVub2RlKGlS ZWwpOworCisJCS8qIE1ha2Ugc3VyZSB0aGUgcmVsdGFibGVzcGFjZSBjaGFuZ2UgaXMgdmlzaWJs ZSAqLworCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCX0KKwogCS8qCiAJICogQWxsIHBy ZWRpY2F0ZSBsb2NrcyBvbiB0aGUgaW5kZXggYXJlIGFib3V0IHRvIGJlIG1hZGUgaW52YWxpZC4g UHJvbW90ZQogCSAqIHRoZW0gdG8gcmVsYXRpb24gbG9ja3Mgb24gdGhlIGhlYXAuCkBAIC0zOTY0 LDEwICszOTkzLDE0IEBAIHJlaW5kZXhfcmVsYXRpb24oT2lkIHJlbGlkLCBpbnQgZmxhZ3MsIFJl aW5kZXhQYXJhbXMgKnBhcmFtcykKIAkJLyoKIAkJICogTm90ZSB0aGF0IHRoaXMgc2hvdWxkIGZh aWwgaWYgdGhlIHRvYXN0IHJlbGF0aW9uIGlzIG1pc3NpbmcsIHNvCiAJCSAqIHJlc2V0IFJFSU5E RVhPUFRfTUlTU0lOR19PSy4KKwkJICoKKwkJICogRXZlbiBpZiB0YWJsZSdzIGluZGV4ZXMgd2Vy ZSBtb3ZlZCB0byBhIG5ldyB0YWJsZXNwYWNlLCB0aGUgaW5kZXgKKwkJICogb24gaXRzIHRvYXN0 IHRhYmxlIGlzIG5vdCBtb3ZlZCBpbXBsaWNpdGx5LgogCQkgKi8KIAkJUmVpbmRleFBhcmFtcyBu ZXdwYXJhbXMgPSAqcGFyYW1zOwogCiAJCW5ld3BhcmFtcy5vcHRpb25zICY9IH4oUkVJTkRFWE9Q VF9NSVNTSU5HX09LKTsKKwkJbmV3cGFyYW1zLnRhYmxlc3BhY2VPaWQgPSBJbnZhbGlkT2lkOwog CQlyZXN1bHQgfD0gcmVpbmRleF9yZWxhdGlvbih0b2FzdF9yZWxpZCwgZmxhZ3MsICZuZXdwYXJh bXMpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCBmOWYzZmYzYjYyLi4yN2I2 ZTE2OTJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMjQ3NCw2ICsyNDc0LDcgQEAg RXhlY1JlaW5kZXgoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSZWluZGV4U3RtdCAqc3RtdCwgYm9vbCBp c1RvcExldmVsKQogCUxpc3RDZWxsICAgKmxjOwogCWJvb2wJCWNvbmN1cnJlbnRseSA9IGZhbHNl OwogCWJvb2wJCXZlcmJvc2UgPSBmYWxzZTsKKwljaGFyCQkqdGFibGVzcGFjZSA9IE5VTEw7CiAK IAkvKiBQYXJzZSBvcHRpb24gbGlzdCAqLwogCWZvcmVhY2gobGMsIHN0bXQtPnBhcmFtcykKQEAg LTI0ODQsNiArMjQ4NSw4IEBAIEV4ZWNSZWluZGV4KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmVpbmRl eFN0bXQgKnN0bXQsIGJvb2wgaXNUb3BMZXZlbCkKIAkJCXZlcmJvc2UgPSBkZWZHZXRCb29sZWFu KG9wdCk7CiAJCWVsc2UgaWYgKHN0cmNtcChvcHQtPmRlZm5hbWUsICJjb25jdXJyZW50bHkiKSA9 PSAwKQogCQkJY29uY3VycmVudGx5ID0gZGVmR2V0Qm9vbGVhbihvcHQpOworCQllbHNlIGlmIChz dHJjbXAob3B0LT5kZWZuYW1lLCAidGFibGVzcGFjZSIpID09IDApCisJCQl0YWJsZXNwYWNlID0g ZGVmR2V0U3RyaW5nKG9wdCk7CiAJCWVsc2UKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJj b2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKQEAgLTI1MDAsNiArMjUwMywyMiBAQCBFeGVjUmVp bmRleChQYXJzZVN0YXRlICpwc3RhdGUsIFJlaW5kZXhTdG10ICpzdG10LCBib29sIGlzVG9wTGV2 ZWwpCiAJCSh2ZXJib3NlID8gUkVJTkRFWE9QVF9WRVJCT1NFIDogMCkgfAogCQkoY29uY3VycmVu dGx5ID8gUkVJTkRFWE9QVF9DT05DVVJSRU5UTFkgOiAwKTsKIAorCXBhcmFtcy50YWJsZXNwYWNl T2lkID0gdGFibGVzcGFjZSAhPSBOVUxMID8KKwkJZ2V0X3RhYmxlc3BhY2Vfb2lkKHRhYmxlc3Bh Y2UsIGZhbHNlKSA6IEludmFsaWRPaWQ7CisKKwkvKiBDaGVjayBwZXJtaXNzaW9ucyBleGNlcHQg d2hlbiB1c2luZyBkYXRhYmFzZSdzIGRlZmF1bHQgKi8KKwlpZiAoT2lkSXNWYWxpZChwYXJhbXMu dGFibGVzcGFjZU9pZCkgJiYKKwkJcGFyYW1zLnRhYmxlc3BhY2VPaWQgIT0gTXlEYXRhYmFzZVRh YmxlU3BhY2UpCisJeworCQlBY2xSZXN1bHQJYWNscmVzdWx0OworCisJCWFjbHJlc3VsdCA9IHBn X3RhYmxlc3BhY2VfYWNsY2hlY2socGFyYW1zLnRhYmxlc3BhY2VPaWQsCisJCQkJCQkJCQkJICAg R2V0VXNlcklkKCksIEFDTF9DUkVBVEUpOworCQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09L KQorCQkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfVEFCTEVTUEFDRSwKKwkJCQkJ CSAgIGdldF90YWJsZXNwYWNlX25hbWUocGFyYW1zLnRhYmxlc3BhY2VPaWQpKTsKKwl9CisKIAlz d2l0Y2ggKHN0bXQtPmtpbmQpCiAJewogCQljYXNlIFJFSU5ERVhfT0JKRUNUX0lOREVYOgpAQCAt MjczMCw2ICsyNzQ5LDggQEAgUmVpbmRleE11bHRpcGxlVGFibGVzKGNvbnN0IGNoYXIgKm9iamVj dE5hbWUsIFJlaW5kZXhPYmplY3RUeXBlIG9iamVjdEtpbmQsCiAJTGlzdAkgICAqcmVsaWRzID0g TklMOwogCWludAkJCW51bV9rZXlzOwogCWJvb2wJCWNvbmN1cnJlbnRfd2FybmluZyA9IGZhbHNl OworCWJvb2wJCXRhYmxlc3BhY2Vfd2FybmluZyA9IGZhbHNlOworCWJvb2wJCW1hcHBlZF93YXJu aW5nID0gZmFsc2U7CiAKIAlBc3NlcnRBcmcob2JqZWN0TmFtZSk7CiAJQXNzZXJ0KG9iamVjdEtp bmQgPT0gUkVJTkRFWF9PQkpFQ1RfU0NIRU1BIHx8CkBAIC0yODU2LDYgKzI4NzcsMzUgQEAgUmVp bmRleE11bHRpcGxlVGFibGVzKGNvbnN0IGNoYXIgKm9iamVjdE5hbWUsIFJlaW5kZXhPYmplY3RU eXBlIG9iamVjdEtpbmQsCiAJCQljb250aW51ZTsKIAkJfQogCisJCWlmIChPaWRJc1ZhbGlkKHBh cmFtcy0+dGFibGVzcGFjZU9pZCkgJiYKKwkJCUlzU3lzdGVtQ2xhc3MocmVsaWQsIGNsYXNzdHVw bGUpKQorCQl7CisJCQlpZiAoIWFsbG93U3lzdGVtVGFibGVNb2RzKQorCQkJeworCQkJCS8qIFNr aXAgYWxsIHN5c3RlbSByZWxhdGlvbnMsIGlmIG5vdCBhbGxvd1N5c3RlbVRhYmxlTW9kcyAqLwor CQkJCWlmICghdGFibGVzcGFjZV93YXJuaW5nKQorCQkJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkJCQkgZXJy bXNnKCJjYW5ub3QgY2hhbmdlIHRhYmxlc3BhY2Ugb2YgaW5kZXhlcyBvbiBzeXN0ZW0gcmVsYXRp b25zLCBza2lwcGluZyBhbGwiKSkpOworCQkJCXRhYmxlc3BhY2Vfd2FybmluZyA9IHRydWU7CisJ CQkJY29udGludWU7CisJCQl9CisJCQllbHNlIGlmICghT2lkSXNWYWxpZChjbGFzc3R1cGxlLT5y ZWxmaWxlbm9kZSkpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBTa2lwIGFsbCBtYXBwZWQgcmVsYXRp b25zIGlmIFRBQkxFU1BBQ0UgaXMgc3BlY2lmaWVkLgorCQkJCSAqIE9pZElzVmFsaWQocmVsZmls ZW5vZGUpIGNoZWNrcyB0aGF0LCBzaW1pbGFyIHRvCisJCQkJICogUmVsYXRpb25Jc01hcHBlZCgp LgorCQkJCSAqLworCQkJCWlmICghbWFwcGVkX3dhcm5pbmcpCisJCQkJCWVyZXBvcnQoV0FSTklO RywKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJ CQkJIGVycm1zZygiY2Fubm90IGNoYW5nZSB0YWJsZXNwYWNlIG9mIGluZGV4ZXMgb24gbWFwcGVk IHJlbGF0aW9ucywgc2tpcHBpbmcgYWxsIikpKTsKKwkJCQltYXBwZWRfd2FybmluZyA9IHRydWU7 CisJCQkJY29udGludWU7CisJCQl9CisJCX0KKwogCQkvKiBTYXZlIHRoZSBsaXN0IG9mIHJlbGF0 aW9uIE9JRHMgaW4gcHJpdmF0ZSBjb250ZXh0ICovCiAJCW9sZCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhwcml2YXRlX2NvbnRleHQpOwogCkBAIC0yOTY5LDkgKzMwMTksNDEgQEAgUmVpbmRleFBh cnRpdGlvbnMoT2lkIHJlbGlkLCBSZWluZGV4UGFyYW1zICpwYXJhbXMsIGJvb2wgaXNUb3BMZXZl bCkKIAkJTWVtb3J5Q29udGV4dCBvbGRfY29udGV4dDsKIAogCQkvKgotCQkgKiBUaGlzIGRpc2Nh cmRzIHBhcnRpdGlvbmVkIHRhYmxlcywgcGFydGl0aW9uZWQgaW5kZXhlcyBhbmQgZm9yZWlnbgot CQkgKiB0YWJsZXMuCisJCSAqIEZvcmVpZ24gdGFibGVzIGFuZCBwYXJ0aXRpb25lZCByZWxhdGlv bnMgYXJlIG5vdCB0aGVtc2VsdmVzCisJCSAqIHJlaW5kZXhlZCAtIGxlYWYgcGFydGl0aW9ucyBh cmUgcHJvY2Vzc2VkIGRpcmVjdGx5LiAgQnV0IGFueQorCQkgKiB0YWJsZXNwYWNlIGNoYW5nZSBp cyByZWNvcmRlZCBpbiB0aGUgY2F0YWxvZyBmb3IgcGFydGl0aW9uZWQKKwkJICogcmVsYXRpb25z LgogCQkgKi8KKwkJaWYgKHBhcnRraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVgpCisJ CXsKKwkJCVJlbGF0aW9uIGlSZWwgPSBpbmRleF9vcGVuKHBhcnRvaWQsIEFjY2Vzc0V4Y2x1c2l2 ZUxvY2spOworCisJCQlpZiAoQ2hlY2tSZWxhdGlvblRhYmxlU3BhY2VNb3ZlKGlSZWwsIHBhcmFt cy0+dGFibGVzcGFjZU9pZCkpCisJCQkJU2V0UmVsYXRpb25UYWJsZVNwYWNlKGlSZWwsCisJCQkJ CQkJCQkgIHBhcmFtcy0+dGFibGVzcGFjZU9pZCwKKwkJCQkJCQkJCSAgSW52YWxpZE9pZCk7CisJ CQlpbmRleF9jbG9zZShpUmVsLCBOb0xvY2spOworCQl9CisJCWVsc2UgaWYgKHBhcnRraW5kID09 IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCXsKKwkJCVJlbGF0aW9uIHJlbCA9IHRhYmxl X29wZW4ocGFydG9pZCwgU2hhcmVMb2NrKTsKKwkJCUxpc3QJKmluZGV4SWRzID0gUmVsYXRpb25H ZXRJbmRleExpc3QocmVsKTsKKwkJCUxpc3RDZWxsICpsYzsKKworCQkJdGFibGVfY2xvc2UocmVs LCBOb0xvY2spOworCQkJZm9yZWFjaCAobGMsIGluZGV4SWRzKQorCQkJeworCQkJCU9pZCBpbmRl eGlkID0gbGZpcnN0X29pZChsYyk7CisJCQkJUmVsYXRpb24gaVJlbCA9IGluZGV4X29wZW4oaW5k ZXhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkJCQlpZiAoQ2hlY2tSZWxhdGlvblRhYmxl U3BhY2VNb3ZlKGlSZWwsIHBhcmFtcy0+dGFibGVzcGFjZU9pZCkpCisJCQkJCVNldFJlbGF0aW9u VGFibGVTcGFjZShpUmVsLAorCQkJCQkJCQkJCSAgcGFyYW1zLT50YWJsZXNwYWNlT2lkLAorCQkJ CQkJCQkJCSAgSW52YWxpZE9pZCk7CisJCQkJaW5kZXhfY2xvc2UoaVJlbCwgTm9Mb2NrKTsKKwkJ CX0KKwkJfQorCiAJCWlmICghUkVMS0lORF9IQVNfU1RPUkFHRShwYXJ0a2luZCkpCiAJCQljb250 aW51ZTsKIApAQCAtMzAzMiw2ICszMTE0LDIyIEBAIFJlaW5kZXhNdWx0aXBsZUludGVybmFsKExp c3QgKnJlbGlkcywgUmVpbmRleFBhcmFtcyAqcGFyYW1zKQogCQkJY29udGludWU7CiAJCX0KIAor CQkvKgorCQkgKiBFeGVjUmVpbmRleCgpIGRvZXMgdGhpcyBjaGVjaywgYnV0IGhlcmUgd2UgaGF2 ZSB0byByZWNoZWNrCisJCSAqIGl0IGFnYWluIHRvIGJlIHN1cmUgdGhhdCBub3RoaW5nIGNoYW5n ZWQgYmV0d2VlbiB0cmFuc2FjdGlvbnMuCisJCSAqLworCQlpZiAoT2lkSXNWYWxpZChwYXJhbXMt PnRhYmxlc3BhY2VPaWQpICYmCisJCQlwYXJhbXMtPnRhYmxlc3BhY2VPaWQgIT0gTXlEYXRhYmFz ZVRhYmxlU3BhY2UpCisJCXsKKwkJCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisKKwkJCWFjbHJlc3Vs dCA9IHBnX3RhYmxlc3BhY2VfYWNsY2hlY2socGFyYW1zLT50YWJsZXNwYWNlT2lkLAorCQkJCQkJ CQkJCQkgICBHZXRVc2VySWQoKSwgQUNMX0NSRUFURSk7CisJCQlpZiAoYWNscmVzdWx0ICE9IEFD TENIRUNLX09LKQorCQkJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1RBQkxFU1BB Q0UsCisJCQkJCQkJZ2V0X3RhYmxlc3BhY2VfbmFtZShwYXJhbXMtPnRhYmxlc3BhY2VPaWQpKTsK KwkJfQorCiAJCXJlbGtpbmQgPSBnZXRfcmVsX3JlbGtpbmQocmVsaWQpOwogCQlyZWxwZXJzaXN0 ZW5jZSA9IGdldF9yZWxfcGVyc2lzdGVuY2UocmVsaWQpOwogCkBAIC0zMzkwLDYgKzM0ODgsMTMg QEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KE9pZCByZWxhdGlvbk9pZCwgUmVpbmRleFBh cmFtcyAqcGFyYW1zKQogCQlyZXR1cm4gZmFsc2U7CiAJfQogCisJLyogSXQncyBub3QgYSBzaGFy ZWQgY2F0YWxvZywgc28gcmVmdXNlIHRvIG1vdmUgaXQgdG8gc2hhcmVkIHRhYmxlc3BhY2UgKi8K KwlpZiAocGFyYW1zLT50YWJsZXNwYWNlT2lkID09IEdMT0JBTFRBQkxFU1BBQ0VfT0lEKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgbW92ZSBub24tc2hhcmVkIHJlbGF0aW9uIHRvIHRhYmxl c3BhY2UgXCIlc1wiIiwKKwkJCQkJIGdldF90YWJsZXNwYWNlX25hbWUocGFyYW1zLT50YWJsZXNw YWNlT2lkKSkpKTsKKwogCUFzc2VydChoZWFwUmVsYXRpb25JZHMgIT0gTklMKTsKIAogCS8qLS0t LS0KQEAgLTM0NjEsNiArMzU2Niw5IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShPaWQg cmVsYXRpb25PaWQsIFJlaW5kZXhQYXJhbXMgKnBhcmFtcykKIAkJLyogQ3JlYXRlIG5ldyBpbmRl eCBkZWZpbml0aW9uIGJhc2VkIG9uIGdpdmVuIGluZGV4ICovCiAJCW5ld0luZGV4SWQgPSBpbmRl eF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoaGVhcFJlbCwKIAkJCQkJCQkJCQkJCQlpZHgtPmlu ZGV4SWQsCisJCQkJCQkJCQkJCQkJT2lkSXNWYWxpZChwYXJhbXMtPnRhYmxlc3BhY2VPaWQpID8K KwkJCQkJCQkJCQkJCQkJcGFyYW1zLT50YWJsZXNwYWNlT2lkIDoKKwkJCQkJCQkJCQkJCQkJaW5k ZXhSZWwtPnJkX3JlbC0+cmVsdGFibGVzcGFjZSwKIAkJCQkJCQkJCQkJCQljb25jdXJyZW50TmFt ZSk7CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyBiL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuYwppbmRleCAxN2Y3MjY1MDM4Li5hNzU2NDdiMWNjIDEw MDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKKysrIGIvc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5jCkBAIC0zNjQxLDcgKzM2NDEsOSBAQCBwc3FsX2NvbXBsZXRpb24oY29u c3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkgKiBvbmUgd29yZCwgc28gdGhl IGFib3ZlIHRlc3QgaXMgY29ycmVjdC4KIAkJICovCiAJCWlmIChlbmRzX3dpdGgocHJldl93ZCwg JygnKSB8fCBlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKLQkJCUNPTVBMRVRFX1dJVEgoIkNPTkNV UlJFTlRMWSIsICJWRVJCT1NFIik7CisJCQlDT01QTEVURV9XSVRIKCJDT05DVVJSRU5UTFkiLCAi VEFCTEVTUEFDRSIsICJWRVJCT1NFIik7CisJCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJUQUJMRVNQ QUNFIikpCisJCQlDT01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlc3Bh Y2VzKTsKIAl9CiAKIC8qIFNFQ1VSSVRZIExBQkVMICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKaW5kZXggMjY2 Zjg5NTBkYy4uODE3MmJmZjYxNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRl eC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtMjksMTAgKzI5LDE2IEBA IHR5cGVkZWYgZW51bQogCUlOREVYX0RST1BfU0VUX0RFQUQKIH0gSW5kZXhTdGF0ZUZsYWdzQWN0 aW9uOwogCi0vKiBvcHRpb25zIGZvciBSRUlOREVYICovCisvKgorICogT3B0aW9ucyBmb3IgUkVJ TkRFWAorICoKKyAqICJ0YWJsZXNwYWNlT2lkIiBpcyB0aGUgdGFibGVzcGFjZSB3aGVyZSBpbmRl eGVzIHdpbGwgYmUgcmVidWlsdCwKKyAqIG9yIEludmFsaWRPaWQgdG8ga2VlcCBlYWNoIGluZGV4 IG9uIGl0cyBjdXJyZW50IHRhYmxlc3BhY2UuCisgKi8KIHR5cGVkZWYgc3RydWN0IFJlaW5kZXhQ YXJhbXMKIHsKIAliaXRzMzIJCW9wdGlvbnM7CQkvKiBiaXRtYXNrIG9mIFJFSU5ERVhPUFRfKiAq LworCU9pZCAgdGFibGVzcGFjZU9pZDsJCQkvKiB0YWJsZXNwYWNlIHRvIHJlYnVpbGQgaW5kZXgg Ki8KIH0gUmVpbmRleFBhcmFtczsKIAogLyogZmxhZyBiaXRzIGZvciBSZWluZGV4UGFyYW1zLT5m bGFncyAqLwpAQCAtOTIsNiArOTgsNyBAQCBleHRlcm4gT2lkCWluZGV4X2NyZWF0ZShSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAKIGV4dGVybiBPaWQJaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9j b3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJCQkgICBPaWQgb2xkSW5kZXhJZCwK KwkJCQkJCQkJCQkgICBPaWQgdGFibGVzcGFjZU9pZCwKIAkJCQkJCQkJCQkgICBjb25zdCBjaGFy ICpuZXdOYW1lKTsKIAogZXh0ZXJuIHZvaWQgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBo ZWFwUmVsYXRpb25JZCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvaW5wdXQvdGFibGVz cGFjZS5zb3VyY2UgYi9zcmMvdGVzdC9yZWdyZXNzL2lucHV0L3RhYmxlc3BhY2Uuc291cmNlCmlu ZGV4IDFhMTgxMDE2ZDcuLmM4YTMwOThiZjYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv aW5wdXQvdGFibGVzcGFjZS5zb3VyY2UKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJs ZXNwYWNlLnNvdXJjZQpAQCAtMTcsNiArMTcsOTcgQEAgQUxURVIgVEFCTEVTUEFDRSByZWdyZXNz X3RibHNwYWNlIFNFVCAoc29tZV9ub25leGlzdGVudF9wYXJhbWV0ZXIgPSB0cnVlKTsgIC0tIGYK IEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBSRVNFVCAocmFuZG9tX3BhZ2VfY29z dCA9IDIuMCk7IC0tIGZhaWwKIEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBSRVNF VCAocmFuZG9tX3BhZ2VfY29zdCwgZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5KTsgLS0gb2sKIAor LS0gY3JlYXRlIHRhYmxlICh3aXRoIFRPQVNUKSB0byB0ZXN0IFJFSU5ERVggd2l0aCBUQUJMRVNQ QUNFIGNoYW5nZQorQ1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEg YmlnaW50LCBudW0yIGRvdWJsZSBwcmVjaXNpb24sIHQgdGV4dCk7CitJTlNFUlQgSU5UTyByZWdy ZXNzX3RibHNwYWNlX3Rlc3RfdGJsIChudW0xLCBudW0yLCB0KQorICBTRUxFQ1Qgcm91bmQocmFu ZG9tKCkqMTAwKSwgcmFuZG9tKCksICd0ZXh0JworICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAx MCkgcyhpKTsKK0NSRUFURSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeCBPTiBy ZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIChudW0xKTsKK0NSRUFURSBUQUJMRSByZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfcHQoY29sMSBpbnQsIGNvbDIgaW50KSBQQVJUSVRJT04gQlkgSEFTSCAoY29s MSk7CitDUkVBVEUgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzEKKyAgUEFSVElUSU9O IE9GIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdAorICBGT1IgVkFMVUVTIFdJVEggKG1vZHVsdXMg MiwgcmVtYWluZGVyIDApCisgIFBBUlRJVElPTiBCWSBIQVNIIChjb2wyKTsKK0NSRUFURSBJTkRF WCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfaWR4XzEgT04gcmVncmVzc190YmxzcGFjZV90ZXN0 X3B0IChjb2wxKTsKK0NSRUFURSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfaWR4XzIg T04gcmVncmVzc190YmxzcGFjZV90ZXN0X3B0IChjb2wyKTsKKworLS0gZmlyc3QsIGNoZWNrIGEg bm8tb3AgY2FzZQorUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBJTkRFWCByZWdyZXNz X3RibHNwYWNlX3Rlc3RfdGJsX2lkeDsKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkg VEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibDsKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdf ZGVmYXVsdCkgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3B0X2lkeF8yOworUkVJTkRFWCAo VEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQ7CisK Ky0tIGNoZWNrIHRoYXQgUkVJTkRFWCB3aXRoIFRBQkxFU1BBQ0UgY2hhbmdlIGlzIHRyYW5zYWN0 aW9uYWwKK0JFR0lOOworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBJTkRF WCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeDsKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVn cmVzc190YmxzcGFjZSkgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibDsKK1JPTExCQUNL OworU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VM RUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFj ZScpOworCistLSByZWluZGV4IGFuZCBtb3ZlIHRoZSBlbnRpcmUgZGF0YWJhc2UsIGFmdGVyIHRo YXQgcmV0dXJuIGV2ZXJ5dGhpbmcgYmFjaworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3Ri bHNwYWNlKSBEQVRBQkFTRSByZWdyZXNzaW9uOyAtLSBvayB3aXRoIHdhcm5pbmcKK1JFSU5ERVgg KFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgREFUQUJBU0UgcmVncmVzc2lvbjsgLS0gb2sgd2l0aCB3 YXJuaW5nCitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNl PShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3Ri bHNwYWNlJyk7CisKKy0tIHBhcnRpdGlvbmVkIGluZGV4ZXMgYXJlIG5vdCBkaXJlY3RseSByZWlu ZGV4ZWQsIGJ1dCB3ZSBzdGlsbCBoYXZlIHRvIHNldCBwcm9wZXIKKy0tIHRhYmxlc3BhY2UgaW4g cGdfY2xhc3MgZm9yIHRoZW0KK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkg VEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0OyAtLSBvaworUkVJTkRFWCAoVEFCTEVTUEFD RSByZWdyZXNzX3RibHNwYWNlKSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfaWR4XzE7 IC0tIG9rCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIElOREVYIHJlZ3Jl c3NfdGJsc3BhY2VfdGVzdF9wdF9pZHhfMjsgLS0gb2sKK1NFTEVDVCByZWxuYW1lIEZST00gcGdf Y2xhc3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNl IFdIRVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKworLS0gaW5kZXhlcyBmb3IgbmV3 IHBhcnRpdGlvbnMgc2hvdWxkIGJlIGNyZWF0ZWQgaW4gdGhlIG5ldyB0YWJsZXNwYWNlCitDUkVB VEUgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzIKKyAgUEFSVElUSU9OIE9GIHJlZ3Jl c3NfdGJsc3BhY2VfdGVzdF9wdAorICBGT1IgVkFMVUVTIFdJVEggKG1vZHVsdXMgMiwgcmVtYWlu ZGVyIDEpOworQ1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8xXzEKKyAgUEFS VElUSU9OIE9GIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8xCisgIEZPUiBWQUxVRVMgV0lUSCAo bW9kdWx1cyAyLCByZW1haW5kZXIgMCk7CitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitX SEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBz cGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJyk7CisKKy0tIGNoZWNrIFJFSU5ERVggd2l0aCBUQUJM RVNQQUNFIGNoYW5nZQorUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBJTkRF WCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeDsgLS0gb2sKK1JFSU5ERVggKFRBQkxFU1BB Q0UgcmVncmVzc190YmxzcGFjZSkgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibDsgLS0g b2sKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgVEFCTEUgcGdfYXV0aGlk OyAtLSBmYWlsCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIFNZU1RFTSBD T05DVVJSRU5UTFkgcG9zdGdyZXM7IC0tIGZhaWwKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVz c190YmxzcGFjZSkgVEFCTEUgQ09OQ1VSUkVOVExZIHBnX2FtOyAtLSBmYWlsCitSRUlOREVYIChU QUJMRVNQQUNFIHBnX2dsb2JhbCkgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHg7 IC0tIGZhaWwKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgVEFCTEUgcGdf YW07IC0tIGZhaWwKKworLS0gY2hlY2sgdGhhdCBhbGwgcmVsYXRpb25zIG1vdmVkIHRvIG5ldyB0 YWJsZXNwYWNlCitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNw YWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNz X3RibHNwYWNlJykKK09SREVSIEJZIHJlbG5hbWU7CisKK0NSRUFURSBURU1QIFRBQkxFIG9sZF9y ZWluZGV4X2luZm8gQVMgU0VMRUNUIHJlbG5hbWUsIHJlbGZpbGVub2RlIEZST00gcGdfY2xhc3MK K1dIRVJFIHJlbG5hbWUgSU4gKFNFTEVDVCByZWxpZDo6bmFtZSBGUk9NIHBnX3BhcnRpdGlvbl90 cmVlKCdyZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfaWR4XzEnOjpyZWdjbGFzcykgV0hFUkUgaXNs ZWFmID0gdHJ1ZSk7CitJTlNFUlQgSU5UTyBvbGRfcmVpbmRleF9pbmZvIFNFTEVDVCByZWxuYW1l LCByZWxmaWxlbm9kZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWxuYW1lIElOIChTRUxFQ1QgcmVs aWQ6Om5hbWUgRlJPTSBwZ19wYXJ0aXRpb25fdHJlZSgncmVncmVzc190YmxzcGFjZV90ZXN0X3B0 X2lkeF8yJzo6cmVnY2xhc3MpIFdIRVJFIGlzbGVhZiA9IHRydWUpOworSU5TRVJUIElOVE8gb2xk X3JlaW5kZXhfaW5mbyBTRUxFQ1QgcmVsbmFtZSwgcmVsZmlsZW5vZGUgRlJPTSBwZ19jbGFzcwor V0hFUkUgcmVsbmFtZSA9ICdyZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeCc7CisKKy0tIG1v dmUgaW5kZXhlcyBiYWNrIHRvIHBnX2RlZmF1bHQgdGFibGVzcGFjZQorUkVJTkRFWCAoVEFCTEVT UEFDRSBwZ19kZWZhdWx0KSBUQUJMRSBDT05DVVJSRU5UTFkgcmVncmVzc190YmxzcGFjZV90ZXN0 X3RibDsgLS0gb2sKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgVEFCTEUgcmVncmVz c190YmxzcGFjZV90ZXN0X3B0OyAtLSBvaworCistLSBjaGVjayB0aGF0IGFsbCByZWxhdGlvbnMg bW92ZWQgYmFjayB0byBwZ19kZWZhdWx0CitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitX SEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBz cGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJyk7CisKK0NSRUFURSBURU1QIFRBQkxFIG5ld19yZWlu ZGV4X2luZm8gQVMgU0VMRUNUIHJlbG5hbWUsIHJlbGZpbGVub2RlIEZST00gcGdfY2xhc3MKK1dI RVJFIHJlbG5hbWUgSU4gKFNFTEVDVCByZWxpZDo6bmFtZSBGUk9NIHBnX3BhcnRpdGlvbl90cmVl KCdyZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfaWR4XzEnOjpyZWdjbGFzcykgV0hFUkUgaXNsZWFm ID0gdHJ1ZSk7CitJTlNFUlQgSU5UTyBuZXdfcmVpbmRleF9pbmZvIFNFTEVDVCByZWxuYW1lLCBy ZWxmaWxlbm9kZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWxuYW1lIElOIChTRUxFQ1QgcmVsaWQ6 Om5hbWUgRlJPTSBwZ19wYXJ0aXRpb25fdHJlZSgncmVncmVzc190YmxzcGFjZV90ZXN0X3B0X2lk eF8yJzo6cmVnY2xhc3MpIFdIRVJFIGlzbGVhZiA9IHRydWUpOworSU5TRVJUIElOVE8gbmV3X3Jl aW5kZXhfaW5mbyBTRUxFQ1QgcmVsbmFtZSwgcmVsZmlsZW5vZGUgRlJPTSBwZ19jbGFzcworV0hF UkUgcmVsbmFtZSA9ICdyZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeCc7CisKK1NFTEVDVCAq IEZST00gbmV3X3JlaW5kZXhfaW5mbyBKT0lOIG9sZF9yZWluZGV4X2luZm8gT04gbmV3X3JlaW5k ZXhfaW5mby5yZWxuYW1lID0gb2xkX3JlaW5kZXhfaW5mby5yZWxuYW1lCitXSEVSRSBuZXdfcmVp bmRleF9pbmZvLnJlbGZpbGVub2RlID0gb2xkX3JlaW5kZXhfaW5mby5yZWxmaWxlbm9kZTsKKwog LS0gY3JlYXRlIGEgc2NoZW1hIHdlIGNhbiB1c2UKIENSRUFURSBTQ0hFTUEgdGVzdHNjaGVtYTsK IApAQCAtOTYsNiArMTg3LDE0IEBAIFNFTEVDVCByZWxuYW1lLCBzcGNuYW1lIEZST00gcGdfY2F0 YWxvZy5wZ190YWJsZXNwYWNlIHQsIHBnX2NhdGFsb2cucGdfY2xhc3MgYwogXGQgdGVzdHNjaGVt YS5wYXJ0X2FfaWR4CiBcZCsgdGVzdHNjaGVtYS5wYXJ0X2FfaWR4CiAKKy0tIFJFSU5ERVggcGFy dGl0aW9uZWQgaW5kZXhlcyB0byBuZXcgdGFibGVzcGFjZQorUkVJTkRFWCAoVEFCTEVTUEFDRSBw Z19kZWZhdWx0KSBUQUJMRSB0ZXN0c2NoZW1hLnBhcnQ7CitcZCB0ZXN0c2NoZW1hLnBhcnQKK1xk IHRlc3RzY2hlbWEucGFydDEKK1JFSU5ERVggKENPTkNVUlJFTlRMWSwgVEFCTEVTUEFDRSByZWdy ZXNzX3RibHNwYWNlKSBJTkRFWCB0ZXN0c2NoZW1hLnBhcnRfYV9pZHg7CitcZCB0ZXN0c2NoZW1h LnBhcnQKK1xkIHRlc3RzY2hlbWEucGFydDEKKwogLS0gcGFydGl0aW9uZWQgcmVscyBjYW5ub3Qg c3BlY2lmeSB0aGUgZGVmYXVsdCB0YWJsZXNwYWNlLiAgVGhlc2UgZmFpbDoKIENSRUFURSBUQUJM RSB0ZXN0c2NoZW1hLmRmbHQgKGEgaW50IFBSSU1BUlkgS0VZKSBQQVJUSVRJT04gQlkgTElTVCAo YSkgVEFCTEVTUEFDRSBwZ19kZWZhdWx0OwogQ1JFQVRFIFRBQkxFIHRlc3RzY2hlbWEuZGZsdCAo YSBpbnQgUFJJTUFSWSBLRVkgVVNJTkcgSU5ERVggVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBQQVJU SVRJT04gQlkgTElTVCAoYSk7CkBAIC0yNjgsNiArMzY3LDEwIEBAIEFMVEVSIFRBQkxFIHRlc3Rz Y2hlbWEudGFibGVzcGFjZV9hY2wgT1dORVIgVE8gcmVncmVzc190YWJsZXNwYWNlX3VzZXIyOwog CiBTRVQgU0VTU0lPTiBST0xFIHJlZ3Jlc3NfdGFibGVzcGFjZV91c2VyMjsKIENSRUFURSBUQUJM RSB0YWJsZXNwYWNlX3RhYmxlIChpIGludCkgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOyAt LSBmYWlsCisKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgVEFCTEUgQ09O Q1VSUkVOVExZIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymw7IC0tIGZhaWwKK1JFSU5ERVggKFRB QkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3B0 X2lkeDsgLS0gZmFpbAorCiBBTFRFUiBUQUJMRSB0ZXN0c2NoZW1hLnRhYmxlc3BhY2VfYWNsIEFM VEVSIGMgVFlQRSBiaWdpbnQ7CiBSRVNFVCBST0xFOwogCkBAIC0yODIsNiArMzg1LDkgQEAgQUxU RVIgVEFCTEUgQUxMIElOIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZV9yZW5hbWVkIFNFVCBU QUJMRVNQQUNFIHBnX2RlZmF1bHQKIC0tIFNob3VsZCBzdWNjZWVkCiBEUk9QIFRBQkxFU1BBQ0Ug cmVncmVzc190YmxzcGFjZV9yZW5hbWVkOwogCitEUk9QIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2Vf dGVzdF90Ymw7CitEUk9QIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdDsKKwogRFJPUCBT Q0hFTUEgdGVzdHNjaGVtYSBDQVNDQURFOwogCiBEUk9QIFJPTEUgcmVncmVzc190YWJsZXNwYWNl X3VzZXIxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9vdXRwdXQvdGFibGVzcGFjZS5z b3VyY2UgYi9zcmMvdGVzdC9yZWdyZXNzL291dHB1dC90YWJsZXNwYWNlLnNvdXJjZQppbmRleCA5 NGM1ZjAyM2M2Li5iN2E5MDE2MDU0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL291dHB1 dC90YWJsZXNwYWNlLnNvdXJjZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL291dHB1dC90YWJsZXNw YWNlLnNvdXJjZQpAQCAtMjAsNiArMjAsMTQwIEBAIEVSUk9SOiAgdW5yZWNvZ25pemVkIHBhcmFt ZXRlciAic29tZV9ub25leGlzdGVudF9wYXJhbWV0ZXIiCiBBTFRFUiBUQUJMRVNQQUNFIHJlZ3Jl c3NfdGJsc3BhY2UgUkVTRVQgKHJhbmRvbV9wYWdlX2Nvc3QgPSAyLjApOyAtLSBmYWlsCiBFUlJP UjogIFJFU0VUIG11c3Qgbm90IGluY2x1ZGUgdmFsdWVzIGZvciBwYXJhbWV0ZXJzCiBBTFRFUiBU QUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UgUkVTRVQgKHJhbmRvbV9wYWdlX2Nvc3QsIGVmZmVj dGl2ZV9pb19jb25jdXJyZW5jeSk7IC0tIG9rCistLSBjcmVhdGUgdGFibGUgKHdpdGggVE9BU1Qp IHRvIHRlc3QgUkVJTkRFWCB3aXRoIFRBQkxFU1BBQ0UgY2hhbmdlCitDUkVBVEUgVEFCTEUgcmVn cmVzc190YmxzcGFjZV90ZXN0X3RibCAobnVtMSBiaWdpbnQsIG51bTIgZG91YmxlIHByZWNpc2lv biwgdCB0ZXh0KTsKK0lOU0VSVCBJTlRPIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEs IG51bTIsIHQpCisgIFNFTEVDVCByb3VuZChyYW5kb20oKSoxMDApLCByYW5kb20oKSwgJ3RleHQn CisgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBzKGkpOworQ1JFQVRFIElOREVYIHJlZ3Jl c3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4IE9OIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51 bTEpOworQ1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdChjb2wxIGludCwgY29s MiBpbnQpIFBBUlRJVElPTiBCWSBIQVNIIChjb2wxKTsKK0NSRUFURSBUQUJMRSByZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfcHRfMQorICBQQVJUSVRJT04gT0YgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0 CisgIEZPUiBWQUxVRVMgV0lUSCAobW9kdWx1cyAyLCByZW1haW5kZXIgMCkKKyAgUEFSVElUSU9O IEJZIEhBU0ggKGNvbDIpOworQ1JFQVRFIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9p ZHhfMSBPTiByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQgKGNvbDEpOworQ1JFQVRFIElOREVYIHJl Z3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9pZHhfMiBPTiByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQg KGNvbDIpOworLS0gZmlyc3QsIGNoZWNrIGEgbm8tb3AgY2FzZQorUkVJTkRFWCAoVEFCTEVTUEFD RSBwZ19kZWZhdWx0KSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeDsKK1JFSU5E RVggKFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3Ri bDsKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgSU5ERVggcmVncmVzc190YmxzcGFj ZV90ZXN0X3B0X2lkeF8yOworUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBUQUJMRSBy ZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQ7CistLSBjaGVjayB0aGF0IFJFSU5ERVggd2l0aCBUQUJM RVNQQUNFIGNoYW5nZSBpcyB0cmFuc2FjdGlvbmFsCitCRUdJTjsKK1JFSU5ERVggKFRBQkxFU1BB Q0UgcmVncmVzc190YmxzcGFjZSkgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHg7 CitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIFRBQkxFIHJlZ3Jlc3NfdGJs c3BhY2VfdGVzdF90Ymw7CitST0xMQkFDSzsKK1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xhc3MK K1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJF IHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKyByZWxuYW1lIAorLS0tLS0tLS0tCisoMCBy b3dzKQorCistLSByZWluZGV4IGFuZCBtb3ZlIHRoZSBlbnRpcmUgZGF0YWJhc2UsIGFmdGVyIHRo YXQgcmV0dXJuIGV2ZXJ5dGhpbmcgYmFjaworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3Ri bHNwYWNlKSBEQVRBQkFTRSByZWdyZXNzaW9uOyAtLSBvayB3aXRoIHdhcm5pbmcKK1dBUk5JTkc6 ICBjYW5ub3QgY2hhbmdlIHRhYmxlc3BhY2Ugb2YgaW5kZXhlcyBvbiBzeXN0ZW0gcmVsYXRpb25z LCBza2lwcGluZyBhbGwKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgREFUQUJBU0Ug cmVncmVzc2lvbjsgLS0gb2sgd2l0aCB3YXJuaW5nCitXQVJOSU5HOiAgY2Fubm90IGNoYW5nZSB0 YWJsZXNwYWNlIG9mIGluZGV4ZXMgb24gc3lzdGVtIHJlbGF0aW9ucywgc2tpcHBpbmcgYWxsCitT RUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qg b2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJyk7 CisgcmVsbmFtZSAKKy0tLS0tLS0tLQorKDAgcm93cykKKworLS0gcGFydGl0aW9uZWQgaW5kZXhl cyBhcmUgbm90IGRpcmVjdGx5IHJlaW5kZXhlZCwgYnV0IHdlIHN0aWxsIGhhdmUgdG8gc2V0IHBy b3BlcgorLS0gdGFibGVzcGFjZSBpbiBwZ19jbGFzcyBmb3IgdGhlbQorUkVJTkRFWCAoVEFCTEVT UEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQ7IC0t IG9rCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIElOREVYIHJlZ3Jlc3Nf dGJsc3BhY2VfdGVzdF9wdF9pZHhfMTsgLS0gb2sKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVz c190YmxzcGFjZSkgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3B0X2lkeF8yOyAtLSBvawor U0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNU IG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScp OworICAgICAgICAgICAgICAgcmVsbmFtZSAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9pZHhfMQor IHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9pZHhfMgorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9w dF8xX2NvbDFfaWR4CisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzFfY29sMl9pZHgKKyg0IHJv d3MpCisKKy0tIGluZGV4ZXMgZm9yIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSBjcmVhdGVkIGlu IHRoZSBuZXcgdGFibGVzcGFjZQorQ1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9w dF8yCisgIFBBUlRJVElPTiBPRiByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHQKKyAgRk9SIFZBTFVF UyBXSVRIIChtb2R1bHVzIDIsIHJlbWFpbmRlciAxKTsKK0NSRUFURSBUQUJMRSByZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfcHRfMV8xCisgIFBBUlRJVElPTiBPRiByZWdyZXNzX3RibHNwYWNlX3Rlc3Rf cHRfMQorICBGT1IgVkFMVUVTIFdJVEggKG1vZHVsdXMgMiwgcmVtYWluZGVyIDApOworU0VMRUNU IHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBG Uk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOworICAg ICAgICAgICAgICAgIHJlbG5hbWUgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfaWR4XzEKKyBy ZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfaWR4XzIKKyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRf Ml9jb2wxX2lkeAorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8yX2NvbDJfaWR4CisgcmVncmVz c190YmxzcGFjZV90ZXN0X3B0XzFfMV9jb2wxX2lkeAorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9w dF8xX2NvbDFfaWR4CisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzFfMV9jb2wyX2lkeAorIHJl Z3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8xX2NvbDJfaWR4CisoOCByb3dzKQorCistLSBjaGVjayBS RUlOREVYIHdpdGggVEFCTEVTUEFDRSBjaGFuZ2UKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVz c190YmxzcGFjZSkgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHg7IC0tIG9rCitS RUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIFRBQkxFIHJlZ3Jlc3NfdGJsc3Bh Y2VfdGVzdF90Ymw7IC0tIG9rCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2Up IFRBQkxFIHBnX2F1dGhpZDsgLS0gZmFpbAorRVJST1I6ICBjYW5ub3QgbW92ZSBzeXN0ZW0gcmVs YXRpb24gInBnX2F1dGhpZF9yb2xuYW1lX2luZGV4IgorUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdy ZXNzX3RibHNwYWNlKSBTWVNURU0gQ09OQ1VSUkVOVExZIHBvc3RncmVzOyAtLSBmYWlsCitFUlJP UjogIGNhbm5vdCByZWluZGV4IHN5c3RlbSBjYXRhbG9ncyBjb25jdXJyZW50bHkKK1JFSU5ERVgg KFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgVEFCTEUgQ09OQ1VSUkVOVExZIHBnX2FtOyAt LSBmYWlsCitFUlJPUjogIGNhbm5vdCByZWluZGV4IHN5c3RlbSBjYXRhbG9ncyBjb25jdXJyZW50 bHkKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZ2xvYmFsKSBJTkRFWCByZWdyZXNzX3RibHNwYWNl X3Rlc3RfdGJsX2lkeDsgLS0gZmFpbAorRVJST1I6ICBvbmx5IHNoYXJlZCByZWxhdGlvbnMgY2Fu IGJlIHBsYWNlZCBpbiBwZ19nbG9iYWwgdGFibGVzcGFjZQorUkVJTkRFWCAoVEFCTEVTUEFDRSBy ZWdyZXNzX3RibHNwYWNlKSBUQUJMRSBwZ19hbTsgLS0gZmFpbAorRVJST1I6ICBwZXJtaXNzaW9u IGRlbmllZDogInBnX2FtX25hbWVfaW5kZXgiIGlzIGEgc3lzdGVtIGNhdGFsb2cKKy0tIGNoZWNr IHRoYXQgYWxsIHJlbGF0aW9ucyBtb3ZlZCB0byBuZXcgdGFibGVzcGFjZQorU0VMRUNUIHJlbG5h bWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBn X3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpCitPUkRFUiBCWSBy ZWxuYW1lOworICAgICAgICAgICAgICAgIHJlbG5hbWUgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3RibHNwYWNlX3Rlc3Rf cHRfMV8xX2NvbDFfaWR4CisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0XzFfMV9jb2wyX2lkeAor IHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8xX2NvbDFfaWR4CisgcmVncmVzc190YmxzcGFjZV90 ZXN0X3B0XzFfY29sMl9pZHgKKyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfMl9jb2wxX2lkeAor IHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF8yX2NvbDJfaWR4CisgcmVncmVzc190YmxzcGFjZV90 ZXN0X3B0X2lkeF8xCisgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0X2lkeF8yCisgcmVncmVzc190 YmxzcGFjZV90ZXN0X3RibF9pZHgKKyg5IHJvd3MpCisKK0NSRUFURSBURU1QIFRBQkxFIG9sZF9y ZWluZGV4X2luZm8gQVMgU0VMRUNUIHJlbG5hbWUsIHJlbGZpbGVub2RlIEZST00gcGdfY2xhc3MK K1dIRVJFIHJlbG5hbWUgSU4gKFNFTEVDVCByZWxpZDo6bmFtZSBGUk9NIHBnX3BhcnRpdGlvbl90 cmVlKCdyZWdyZXNzX3RibHNwYWNlX3Rlc3RfcHRfaWR4XzEnOjpyZWdjbGFzcykgV0hFUkUgaXNs ZWFmID0gdHJ1ZSk7CitJTlNFUlQgSU5UTyBvbGRfcmVpbmRleF9pbmZvIFNFTEVDVCByZWxuYW1l LCByZWxmaWxlbm9kZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWxuYW1lIElOIChTRUxFQ1QgcmVs aWQ6Om5hbWUgRlJPTSBwZ19wYXJ0aXRpb25fdHJlZSgncmVncmVzc190YmxzcGFjZV90ZXN0X3B0 X2lkeF8yJzo6cmVnY2xhc3MpIFdIRVJFIGlzbGVhZiA9IHRydWUpOworSU5TRVJUIElOVE8gb2xk X3JlaW5kZXhfaW5mbyBTRUxFQ1QgcmVsbmFtZSwgcmVsZmlsZW5vZGUgRlJPTSBwZ19jbGFzcwor V0hFUkUgcmVsbmFtZSA9ICdyZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeCc7CistLSBtb3Zl IGluZGV4ZXMgYmFjayB0byBwZ19kZWZhdWx0IHRhYmxlc3BhY2UKK1JFSU5ERVggKFRBQkxFU1BB Q0UgcGdfZGVmYXVsdCkgVEFCTEUgQ09OQ1VSUkVOVExZIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90 Ymw7IC0tIG9rCitSRUlOREVYIChUQUJMRVNQQUNFIHBnX2RlZmF1bHQpIFRBQkxFIHJlZ3Jlc3Nf dGJsc3BhY2VfdGVzdF9wdDsgLS0gb2sKKy0tIGNoZWNrIHRoYXQgYWxsIHJlbGF0aW9ucyBtb3Zl ZCBiYWNrIHRvIHBnX2RlZmF1bHQKK1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xhc3MKK1dIRVJF IHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25h bWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKyByZWxuYW1lIAorLS0tLS0tLS0tCisoMCByb3dzKQor CitDUkVBVEUgVEVNUCBUQUJMRSBuZXdfcmVpbmRleF9pbmZvIEFTIFNFTEVDVCByZWxuYW1lLCBy ZWxmaWxlbm9kZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWxuYW1lIElOIChTRUxFQ1QgcmVsaWQ6 Om5hbWUgRlJPTSBwZ19wYXJ0aXRpb25fdHJlZSgncmVncmVzc190YmxzcGFjZV90ZXN0X3B0X2lk eF8xJzo6cmVnY2xhc3MpIFdIRVJFIGlzbGVhZiA9IHRydWUpOworSU5TRVJUIElOVE8gbmV3X3Jl aW5kZXhfaW5mbyBTRUxFQ1QgcmVsbmFtZSwgcmVsZmlsZW5vZGUgRlJPTSBwZ19jbGFzcworV0hF UkUgcmVsbmFtZSBJTiAoU0VMRUNUIHJlbGlkOjpuYW1lIEZST00gcGdfcGFydGl0aW9uX3RyZWUo J3JlZ3Jlc3NfdGJsc3BhY2VfdGVzdF9wdF9pZHhfMic6OnJlZ2NsYXNzKSBXSEVSRSBpc2xlYWYg PSB0cnVlKTsKK0lOU0VSVCBJTlRPIG5ld19yZWluZGV4X2luZm8gU0VMRUNUIHJlbG5hbWUsIHJl bGZpbGVub2RlIEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbG5hbWUgPSAncmVncmVzc190YmxzcGFj ZV90ZXN0X3RibF9pZHgnOworU0VMRUNUICogRlJPTSBuZXdfcmVpbmRleF9pbmZvIEpPSU4gb2xk X3JlaW5kZXhfaW5mbyBPTiBuZXdfcmVpbmRleF9pbmZvLnJlbG5hbWUgPSBvbGRfcmVpbmRleF9p bmZvLnJlbG5hbWUKK1dIRVJFIG5ld19yZWluZGV4X2luZm8ucmVsZmlsZW5vZGUgPSBvbGRfcmVp bmRleF9pbmZvLnJlbGZpbGVub2RlOworIHJlbG5hbWUgfCByZWxmaWxlbm9kZSB8IHJlbG5hbWUg fCByZWxmaWxlbm9kZSAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tCisoMCByb3dzKQorCiAtLSBjcmVhdGUgYSBzY2hlbWEgd2UgY2FuIHVzZQogQ1JFQVRF IFNDSEVNQSB0ZXN0c2NoZW1hOwogLS0gdHJ5IGEgdGFibGUKQEAgLTE5OSw2ICszMzMsNDcgQEAg UGFydGl0aW9uczogdGVzdHNjaGVtYS5wYXJ0MV9hX2lkeCwKICAgICAgICAgICAgIHRlc3RzY2hl bWEucGFydDJfYV9pZHgKIFRhYmxlc3BhY2U6ICJyZWdyZXNzX3RibHNwYWNlIgogCistLSBSRUlO REVYIHBhcnRpdGlvbmVkIGluZGV4ZXMgdG8gbmV3IHRhYmxlc3BhY2UKK1JFSU5ERVggKFRBQkxF U1BBQ0UgcGdfZGVmYXVsdCkgVEFCTEUgdGVzdHNjaGVtYS5wYXJ0OworXGQgdGVzdHNjaGVtYS5w YXJ0CisgICAgICAgIFBhcnRpdGlvbmVkIHRhYmxlICJ0ZXN0c2NoZW1hLnBhcnQiCisgQ29sdW1u IHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGEgICAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGFydGl0aW9uIGtleTogTElTVCAoYSkKK0lu ZGV4ZXM6CisgICAgInBhcnRfYV9pZHgiIGJ0cmVlIChhKQorTnVtYmVyIG9mIHBhcnRpdGlvbnM6 IDIgKFVzZSBcZCsgdG8gbGlzdCB0aGVtLikKKworXGQgdGVzdHNjaGVtYS5wYXJ0MQorICAgICAg ICAgICAgIFRhYmxlICJ0ZXN0c2NoZW1hLnBhcnQxIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xs YXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjogdGVzdHNjaGVtYS5wYXJ0IEZPUiBWQUxVRVMgSU4g KDEpCitJbmRleGVzOgorICAgICJwYXJ0MV9hX2lkeCIgYnRyZWUgKGEpCisKK1JFSU5ERVggKENP TkNVUlJFTlRMWSwgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBJTkRFWCB0ZXN0c2NoZW1h LnBhcnRfYV9pZHg7CitcZCB0ZXN0c2NoZW1hLnBhcnQKKyAgICAgICAgUGFydGl0aW9uZWQgdGFi bGUgInRlc3RzY2hlbWEucGFydCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVs bGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwg CitQYXJ0aXRpb24ga2V5OiBMSVNUIChhKQorSW5kZXhlczoKKyAgICAicGFydF9hX2lkeCIgYnRy ZWUgKGEpLCB0YWJsZXNwYWNlICJyZWdyZXNzX3RibHNwYWNlIgorTnVtYmVyIG9mIHBhcnRpdGlv bnM6IDIgKFVzZSBcZCsgdG8gbGlzdCB0aGVtLikKKworXGQgdGVzdHNjaGVtYS5wYXJ0MQorICAg ICAgICAgICAgIFRhYmxlICJ0ZXN0c2NoZW1hLnBhcnQxIgorIENvbHVtbiB8ICBUeXBlICAgfCBD b2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAg IHwgICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjogdGVzdHNjaGVtYS5wYXJ0IEZPUiBWQUxVRVMg SU4gKDEpCitJbmRleGVzOgorICAgICJwYXJ0MV9hX2lkeCIgYnRyZWUgKGEpLCB0YWJsZXNwYWNl ICJyZWdyZXNzX3RibHNwYWNlIgorCiAtLSBwYXJ0aXRpb25lZCByZWxzIGNhbm5vdCBzcGVjaWZ5 IHRoZSBkZWZhdWx0IHRhYmxlc3BhY2UuICBUaGVzZSBmYWlsOgogQ1JFQVRFIFRBQkxFIHRlc3Rz Y2hlbWEuZGZsdCAoYSBpbnQgUFJJTUFSWSBLRVkpIFBBUlRJVElPTiBCWSBMSVNUIChhKSBUQUJM RVNQQUNFIHBnX2RlZmF1bHQ7CiBFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IGRlZmF1bHQgdGFibGVz cGFjZSBmb3IgcGFydGl0aW9uZWQgcmVsYXRpb25zCkBAIC03MzEsNiArOTA2LDEwIEBAIEFMVEVS IFRBQkxFIHRlc3RzY2hlbWEudGFibGVzcGFjZV9hY2wgT1dORVIgVE8gcmVncmVzc190YWJsZXNw YWNlX3VzZXIyOwogU0VUIFNFU1NJT04gUk9MRSByZWdyZXNzX3RhYmxlc3BhY2VfdXNlcjI7CiBD UkVBVEUgVEFCTEUgdGFibGVzcGFjZV90YWJsZSAoaSBpbnQpIFRBQkxFU1BBQ0UgcmVncmVzc190 YmxzcGFjZTsgLS0gZmFpbAogRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3IgdGFibGVzcGFj ZSByZWdyZXNzX3RibHNwYWNlCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2Up IFRBQkxFIENPTkNVUlJFTlRMWSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsOyAtLSBmYWlsCitF UlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciB0YWJsZXNwYWNlIHJlZ3Jlc3NfdGJsc3BhY2UK K1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgSU5ERVggcmVncmVzc190Ymxz cGFjZV90ZXN0X3B0X2lkeDsgLS0gZmFpbAorRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Ig dGFibGVzcGFjZSByZWdyZXNzX3RibHNwYWNlCiBBTFRFUiBUQUJMRSB0ZXN0c2NoZW1hLnRhYmxl c3BhY2VfYWNsIEFMVEVSIGMgVFlQRSBiaWdpbnQ7CiBSRVNFVCBST0xFOwogQUxURVIgVEFCTEVT UEFDRSByZWdyZXNzX3RibHNwYWNlIFJFTkFNRSBUTyByZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQ7 CkBAIC03NDEsNiArOTIwLDggQEAgQUxURVIgVEFCTEUgQUxMIElOIFRBQkxFU1BBQ0UgcmVncmVz c190YmxzcGFjZV9yZW5hbWVkIFNFVCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQKIE5PVElDRTogIG5v IG1hdGNoaW5nIHJlbGF0aW9ucyBpbiB0YWJsZXNwYWNlICJyZWdyZXNzX3RibHNwYWNlX3JlbmFt ZWQiIGZvdW5kCiAtLSBTaG91bGQgc3VjY2VlZAogRFJPUCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJs c3BhY2VfcmVuYW1lZDsKK0RST1AgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibDsKK0RS T1AgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3B0OwogRFJPUCBTQ0hFTUEgdGVzdHNjaGVt YSBDQVNDQURFOwogTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byA2IG90aGVyIG9iamVjdHMKIERF VEFJTDogIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgdGVzdHNjaGVtYS5mb28KCmJhc2UtY29tbWl0 OiBmNzQzYTJiYmQ0ZTUxMWFkNThiNmNlMDFmODE4NDFlNWUxNjExNDc0Ci0tIAoyLjIwLjEKCg== --=_2f52b58e1b84f789069e32e8ec140030--