Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u2bI6-0034qd-Sd for pgsql-hackers@arkaria.postgresql.org; Wed, 09 Apr 2025 19:40:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1u2bI5-006jGy-8j for pgsql-hackers@arkaria.postgresql.org; Wed, 09 Apr 2025 19:40:53 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u2bI4-006jGl-JR for pgsql-hackers@lists.postgresql.org; Wed, 09 Apr 2025 19:40:53 +0000 Received: from forward502d.mail.yandex.net ([178.154.239.210]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1u2bI1-004OVi-2p for pgsql-hackers@lists.postgresql.org; Wed, 09 Apr 2025 19:40:52 +0000 Received: from mail-nwsmtp-smtp-production-main-88.klg.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-88.klg.yp-c.yandex.net [IPv6:2a02:6b8:c43:a29:0:640:6842:0]) by forward502d.mail.yandex.net (Yandex) with ESMTPS id 4BC5D61614; Wed, 9 Apr 2025 22:40:48 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-88.klg.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id gekFpU2Lha60-3ruhanKq; Wed, 09 Apr 2025 22:40:46 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tantorlabs.com; s=mail; t=1744227647; bh=lS+8moQV39BVzhdTh9DiLY6Vq/14R+LkzrG/xJbw/Jo=; h=In-Reply-To:Cc:Date:References:To:Subject:Message-ID:From; b=HnZARGoraIwXTuOa0M5PShEajAvJe7Y2DhcKBzJdPvTw8uG0zyhSCmVNovcxzltj/ w/3hJVsmBWJ35lNYfKjFbczV0f4Utw3wNxGUO+rpL6Q3fAd+j5InzwzYjXRgUfWjSj z7Q8akZbo0mwS6Mc+tOlRR5JdIV0+cjYTcbsDXB4= Authentication-Results: mail-nwsmtp-smtp-production-main-88.klg.yp-c.yandex.net; dkim=pass header.i=@tantorlabs.com Content-Type: multipart/mixed; boundary="------------WCr4SM1QfxE8JchJjLn3j2ly" Message-ID: Date: Wed, 9 Apr 2025 22:40:42 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: explain analyze rows=%.0f From: Ilia Evdokimov To: Robert Haas , Tom Lane Cc: Matthias van de Meent , Andrei Lepikhov , pgsql-hackers@lists.postgresql.org, Guillaume Lelarge , Matheus Alcantara , Alena Rybakina References: <40663fc5-edac-4b45-a2aa-a76976700ed9@tantorlabs.com> <432c75b0-be5f-4836-b46b-98c505eaad28@postgrespro.ru> <4118244.1743443395@sss.pgh.pa.us> <1a7b5bea-336b-40b5-a7c8-c7aefe8778b6@tantorlabs.com> Content-Language: en-US In-Reply-To: <1a7b5bea-336b-40b5-a7c8-c7aefe8778b6@tantorlabs.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------WCr4SM1QfxE8JchJjLn3j2ly Content-Type: multipart/alternative; boundary="------------X3EXicSvIFmTSgoK9UPZkMqW" --------------X3EXicSvIFmTSgoK9UPZkMqW Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 31.03.2025 23:59, Ilia Evdokimov wrote: > > We definitely shouldn’t remove the row counts < 1 check, since there > are many places in the planner where we divide by rows. This mechanism > was added specifically to prevent division by zero. Also, allowing > rows estimates below 1 can sometimes make the planner overly > optimistic, leading it to prefer cheaper-looking plans that may not > perform well in practice. For example, choosing a Nested Loop instead > of a more appropriate Hash Join. > > Allowing fractional rows > 1 might help improve planner accuracy in > some cases, but this needs further study to fully understand the impact. > I've been investigating whether it's worth removing rounding in row estimates - and I believe it is. [ v1-0001-Always-use-two-fractional-digits-for-estimated-rows_SRC.patch ] Currently, we round most row estimates using rint() inside clamp_row_est(). However, this function is also used for rounding tuples and page counts. These should remain integral, but row estimates can and should remain fractional for better precision. To address this, I introduced a new function clamp_tuple_est() which retains the existing rounding behavior (via rint()), while clamp_tuple_est() no longer rounds. I use clamp_tuple_est() only for row estimates and clamp_tuple_est() for tuples and pages elsewhere. After removing rounding, two small issues needed fixing. First, there was a check rows > 1 in the cost estimation for Nested Loop joins, which is no longer reliable for values like 1.3. I updated it to rows >= 2 to retain the original behavior. This can be refined further, but, in my opinion, it's a practical compromise. Second, there is still a call to rint() in cost of mergejoin which likely should be removed too - though I haven’t included that here yet. Also, if we're no longer rounding estimates, EXPLAIN should display them with two decimal digits, just like it already does for actual rows. [ v1-0002-Always-use-two-fractional-digits-for-estimated-rows_TESTS.patch ] So, what does this change improve? Here are some of the observed plan improvements: * Previously, a Parallel Aggregate was chosen. With slightly more accurate estimation, the planner switches to FinalizeAggregate, which can be more efficient in distributed plans. * In certain nested joins with constant subqueries, the planner previously inserted an unnecessary Materialize. With improved estimates, it now skips that step, reducing memory usage and latency. * When the estimated number of iterations becomes non-integer but still justifies caching, the planner adds Memoize instead of re-running a function like generate_series(). This can speed up execution significantly. * In one case involving partitioned tables and filter conditions like t1.b = 0, the planner now chooses an index-based nested loop join instead of a hash join. This results in a more efficient plan with fewer memory and CPU costs. I know this patch still needs documentation updates to describe the new estimation display and behaviors. But before that, I’d like to gather feedback: does community agree that more precise estimates and fractional values are better than always rounding? If anyone would like to see the EXPLAIN ANALYZE VERBOSE output of changes in regression tests, I’d be happy to share them. All feedback and suggestions welcome! -- Best regards, Ilia Evdokimov, Tantor Labs LLC. --------------X3EXicSvIFmTSgoK9UPZkMqW Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit


On 31.03.2025 23:59, Ilia Evdokimov wrote:

We definitely shouldn’t remove the row counts < 1 check, since there are many places in the planner where we divide by rows. This mechanism was added specifically to prevent division by zero. Also, allowing rows estimates below 1 can sometimes make the planner overly optimistic, leading it to prefer cheaper-looking plans that may not perform well in practice. For example, choosing a Nested Loop instead of a more appropriate Hash Join.

Allowing fractional rows > 1 might help improve planner accuracy in some cases, but this needs further study to fully understand the impact.


I've been investigating whether it's worth removing rounding in row estimates - and I believe it is.

[ v1-0001-Always-use-two-fractional-digits-for-estimated-rows_SRC.patch ]

Currently, we round most row estimates using rint() inside clamp_row_est(). However, this function is also used for rounding tuples and page counts. These should remain integral, but row estimates can and should remain fractional for better precision. To address this, I introduced a new function clamp_tuple_est() which retains the existing rounding behavior (via rint()), while clamp_tuple_est() no longer rounds. I use clamp_tuple_est() only for row estimates and clamp_tuple_est() for tuples and pages elsewhere.

After removing rounding, two small issues needed fixing. First, there was a check rows > 1 in the cost estimation for Nested Loop joins, which is no longer reliable for values like 1.3. I updated it to rows >= 2 to retain the original behavior. This can be refined further, but, in my opinion, it's a practical compromise. Second, there is still a call to rint() in cost of mergejoin which likely should be removed too - though I haven’t included that here yet.

Also, if we're no longer rounding estimates, EXPLAIN should display them with two decimal digits, just like it already does for actual rows.

[ v1-0002-Always-use-two-fractional-digits-for-estimated-rows_TESTS.patch ]

So, what does this change improve? Here are some of the observed plan improvements:

  • Previously, a Parallel Aggregate was chosen. With slightly more accurate estimation, the planner switches to FinalizeAggregate, which can be more efficient in distributed plans.
  • In certain nested joins with constant subqueries, the planner previously inserted an unnecessary Materialize. With improved estimates, it now skips that step, reducing memory usage and latency.
  • When the estimated number of iterations becomes non-integer but still justifies caching, the planner adds Memoize instead of re-running a function like generate_series(). This can speed up execution significantly.
  • In one case involving partitioned tables and filter conditions like t1.b = 0, the planner now chooses an index-based nested loop join instead of a hash join. This results in a more efficient plan with fewer memory and CPU costs.

I know this patch still needs documentation updates to describe the new estimation display and behaviors. But before that, I’d like to gather feedback: does community agree that more precise estimates and fractional values are better than always rounding?

If anyone would like to see the EXPLAIN ANALYZE VERBOSE output of changes in regression tests, I’d be happy to share them.

All feedback and suggestions welcome!

--
Best regards,
Ilia Evdokimov,
Tantor Labs LLC.

--------------X3EXicSvIFmTSgoK9UPZkMqW-- --------------WCr4SM1QfxE8JchJjLn3j2ly Content-Type: text/x-patch; charset=UTF-8; name="v1-0001-Always-use-two-fractional-digits-for-estimated-rows_SRC.patch" Content-Disposition: attachment; filename*0="v1-0001-Always-use-two-fractional-digits-for-estimated-rows_"; filename*1="SRC.patch" Content-Transfer-Encoding: base64 RnJvbSBhMDQyZWUyMmRiZGFlNTA0OWY0ODMwMTE2ZTgzYTNhNzJlYTVlNDA1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmRva2ltb3YgSWxpYSA8aWx5YS5ldmRva2ltb3ZA dGFudG9ybGFicy5jb20+CkRhdGU6IFdlZCwgOSBBcHIgMjAyNSAyMjoyNDowMSArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjFdIEFsd2F5cyB1c2UgdHdvIGZyYWN0aW9uYWwgZGlnaXRzIGZv ciBlc3RpbWF0ZWQgcm93cyBjb3VudAoKLS0tCiBjb250cmliL2ZpbGVfZmR3L2ZpbGVfZmR3 LmMgICAgICAgICAgICAgICAgfCAgNCArLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdy ZXNfZmR3LmMgICAgICAgIHwgIDQgKy0KIGNvbnRyaWIvdHNtX3N5c3RlbV9yb3dzL3RzbV9z eXN0ZW1fcm93cy5jICB8ICA0ICstCiBjb250cmliL3RzbV9zeXN0ZW1fdGltZS90c21fc3lz dGVtX3RpbWUuYyAgfCAgNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0u YyAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZXNhbXBsZS9iZXJu b3VsbGkuYyB8ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdGFibGVzYW1wbGUvc3lzdGVt LmMgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAg ICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMgICAg ICB8IDUzICsrKysrKysrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL3BhdGhub2RlLmMgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvc2Vs ZnVuY3MuYyAgICAgICAgICAgfCAxNCArKystLS0KIHNyYy9pbmNsdWRlL29wdGltaXplci9v cHRpbWl6ZXIuaCAgICAgICAgICB8ICAxICsKIDEyIGZpbGVzIGNoYW5nZWQsIDYxIGluc2Vy dGlvbnMoKyksIDM5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZmlsZV9m ZHcvZmlsZV9mZHcuYyBiL2NvbnRyaWIvZmlsZV9mZHcvZmlsZV9mZHcuYwppbmRleCBhOWE1 NjcxZDk1YS4uNjgyYmI4NmFkZGUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvZmlsZV9mZHcvZmls ZV9mZHcuYworKysgYi9jb250cmliL2ZpbGVfZmR3L2ZpbGVfZmR3LmMKQEAgLTEwOTcsNyAr MTA5Nyw3IEBAIGVzdGltYXRlX3NpemUoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KmJhc2VyZWwsCiAJCWRvdWJsZQkJZGVuc2l0eTsKIAogCQlkZW5zaXR5ID0gYmFzZXJlbC0+ dHVwbGVzIC8gKGRvdWJsZSkgYmFzZXJlbC0+cGFnZXM7Ci0JCW50dXBsZXMgPSBjbGFtcF9y b3dfZXN0KGRlbnNpdHkgKiAoZG91YmxlKSBwYWdlcyk7CisJCW50dXBsZXMgPSBjbGFtcF90 dXBsZV9lc3QoZGVuc2l0eSAqIChkb3VibGUpIHBhZ2VzKTsKIAl9CiAJZWxzZQogCXsKQEAg LTExMTMsNyArMTExMyw3IEBAIGVzdGltYXRlX3NpemUoUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKmJhc2VyZWwsCiAKIAkJdHVwbGVfd2lkdGggPSBNQVhBTElHTihiYXNlcmVs LT5yZWx0YXJnZXQtPndpZHRoKSArCiAJCQlNQVhBTElHTihTaXplb2ZIZWFwVHVwbGVIZWFk ZXIpOwotCQludHVwbGVzID0gY2xhbXBfcm93X2VzdCgoZG91YmxlKSBzdGF0X2J1Zi5zdF9z aXplIC8KKwkJbnR1cGxlcyA9IGNsYW1wX3R1cGxlX2VzdCgoZG91YmxlKSBzdGF0X2J1Zi5z dF9zaXplIC8KIAkJCQkJCQkJKGRvdWJsZSkgdHVwbGVfd2lkdGgpOwogCX0KIAlmZHdfcHJp dmF0ZS0+bnR1cGxlcyA9IG50dXBsZXM7CmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVz X2Zkdy9wb3N0Z3Jlc19mZHcuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zk dy5jCmluZGV4IGE3ZTBjYzlmMzIzLi41ZTFjN2JiMzJlMSAxMDA2NDQKLS0tIGEvY29udHJp Yi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19m ZHcvcG9zdGdyZXNfZmR3LmMKQEAgLTMyNzgsNyArMzI3OCw3IEBAIGVzdGltYXRlX3BhdGhf Y29zdF9zaXplKFBsYW5uZXJJbmZvICpyb290LAogCQkJICogQmFjayBpbnRvIGFuIGVzdGlt YXRlIG9mIHRoZSBudW1iZXIgb2YgcmV0cmlldmVkIHJvd3MuICBKdXN0IGluCiAJCQkgKiBj YXNlIHRoaXMgaXMgbnV0cywgY2xhbXAgdG8gYXQgbW9zdCBucm93cy4KIAkJCSAqLwotCQkJ cmV0cmlldmVkX3Jvd3MgPSBjbGFtcF9yb3dfZXN0KHJvd3MgLyBmcGluZm8tPmxvY2FsX2Nv bmRzX3NlbCk7CisJCQlyZXRyaWV2ZWRfcm93cyA9IGNsYW1wX3R1cGxlX2VzdChyb3dzIC8g ZnBpbmZvLT5sb2NhbF9jb25kc19zZWwpOwogCQkJcmV0cmlldmVkX3Jvd3MgPSBNaW4ocmV0 cmlldmVkX3Jvd3MsIG5yb3dzKTsKIAogCQkJLyoKQEAgLTM0NTMsNyArMzQ1Myw3IEBAIGVz dGltYXRlX3BhdGhfY29zdF9zaXplKFBsYW5uZXJJbmZvICpyb290LAogCQkJICogQmFjayBp bnRvIGFuIGVzdGltYXRlIG9mIHRoZSBudW1iZXIgb2YgcmV0cmlldmVkIHJvd3MuICBKdXN0 IGluCiAJCQkgKiBjYXNlIHRoaXMgaXMgbnV0cywgY2xhbXAgdG8gYXQgbW9zdCBmb3JlaWdu cmVsLT50dXBsZXMuCiAJCQkgKi8KLQkJCXJldHJpZXZlZF9yb3dzID0gY2xhbXBfcm93X2Vz dChyb3dzIC8gZnBpbmZvLT5sb2NhbF9jb25kc19zZWwpOworCQkJcmV0cmlldmVkX3Jvd3Mg PSBjbGFtcF90dXBsZV9lc3Qocm93cyAvIGZwaW5mby0+bG9jYWxfY29uZHNfc2VsKTsKIAkJ CXJldHJpZXZlZF9yb3dzID0gTWluKHJldHJpZXZlZF9yb3dzLCBmb3JlaWducmVsLT50dXBs ZXMpOwogCiAJCQkvKgpkaWZmIC0tZ2l0IGEvY29udHJpYi90c21fc3lzdGVtX3Jvd3MvdHNt X3N5c3RlbV9yb3dzLmMgYi9jb250cmliL3RzbV9zeXN0ZW1fcm93cy90c21fc3lzdGVtX3Jv d3MuYwppbmRleCBmNDAxZWZhMjEzMS4uMzA4YmIzMDFkYTEgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvdHNtX3N5c3RlbV9yb3dzL3RzbV9zeXN0ZW1fcm93cy5jCisrKyBiL2NvbnRyaWIvdHNt X3N5c3RlbV9yb3dzL3RzbV9zeXN0ZW1fcm93cy5jCkBAIC0xMzUsNyArMTM1LDcgQEAgc3lz dGVtX3Jvd3Nfc2FtcGxlc2NhbmdldHNhbXBsZXNpemUoUGxhbm5lckluZm8gKnJvb3QsCiAJ LyogQ2xhbXAgdG8gdGhlIGVzdGltYXRlZCByZWxhdGlvbiBzaXplICovCiAJaWYgKG50dXBs ZXMgPiBiYXNlcmVsLT50dXBsZXMpCiAJCW50dXBsZXMgPSAoaW50NjQpIGJhc2VyZWwtPnR1 cGxlczsKLQludHVwbGVzID0gY2xhbXBfcm93X2VzdChudHVwbGVzKTsKKwludHVwbGVzID0g Y2xhbXBfdHVwbGVfZXN0KG50dXBsZXMpOwogCiAJaWYgKGJhc2VyZWwtPnR1cGxlcyA+IDAg JiYgYmFzZXJlbC0+cGFnZXMgPiAwKQogCXsKQEAgLTE1MSw3ICsxNTEsNyBAQCBzeXN0ZW1f cm93c19zYW1wbGVzY2FuZ2V0c2FtcGxlc2l6ZShQbGFubmVySW5mbyAqcm9vdCwKIAl9CiAK IAkvKiBDbGFtcCB0byBzYW5lIHZhbHVlICovCi0JbnBhZ2VzID0gY2xhbXBfcm93X2VzdChN aW4oKGRvdWJsZSkgYmFzZXJlbC0+cGFnZXMsIG5wYWdlcykpOworCW5wYWdlcyA9IGNsYW1w X3R1cGxlX2VzdChNaW4oKGRvdWJsZSkgYmFzZXJlbC0+cGFnZXMsIG5wYWdlcykpOwogCiAJ KnBhZ2VzID0gbnBhZ2VzOwogCSp0dXBsZXMgPSBudHVwbGVzOwpkaWZmIC0tZ2l0IGEvY29u dHJpYi90c21fc3lzdGVtX3RpbWUvdHNtX3N5c3RlbV90aW1lLmMgYi9jb250cmliL3RzbV9z eXN0ZW1fdGltZS90c21fc3lzdGVtX3RpbWUuYwppbmRleCBjOWM3MWQ4YzNhZi4uYjJkMWQ3 ZTM3ZDcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdHNtX3N5c3RlbV90aW1lL3RzbV9zeXN0ZW1f dGltZS5jCisrKyBiL2NvbnRyaWIvdHNtX3N5c3RlbV90aW1lL3RzbV9zeXN0ZW1fdGltZS5j CkBAIC0xNTEsNyArMTUxLDcgQEAgc3lzdGVtX3RpbWVfc2FtcGxlc2NhbmdldHNhbXBsZXNp emUoUGxhbm5lckluZm8gKnJvb3QsCiAJCW5wYWdlcyA9IG1pbGxpczsJCS8qIGV2ZW4gbW9y ZSBib2d1cywgYnV0IHdoYXRjaGEgZ29ubmEgZG8/ICovCiAKIAkvKiBDbGFtcCB0byBzYW5l IHZhbHVlICovCi0JbnBhZ2VzID0gY2xhbXBfcm93X2VzdChNaW4oKGRvdWJsZSkgYmFzZXJl bC0+cGFnZXMsIG5wYWdlcykpOworCW5wYWdlcyA9IGNsYW1wX3R1cGxlX2VzdChNaW4oKGRv dWJsZSkgYmFzZXJlbC0+cGFnZXMsIG5wYWdlcykpOwogCiAJaWYgKGJhc2VyZWwtPnR1cGxl cyA+IDAgJiYgYmFzZXJlbC0+cGFnZXMgPiAwKQogCXsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBz eXN0ZW1fdGltZV9zYW1wbGVzY2FuZ2V0c2FtcGxlc2l6ZShQbGFubmVySW5mbyAqcm9vdCwK IAl9CiAKIAkvKiBDbGFtcCB0byB0aGUgZXN0aW1hdGVkIHJlbGF0aW9uIHNpemUgKi8KLQlu dHVwbGVzID0gY2xhbXBfcm93X2VzdChNaW4oYmFzZXJlbC0+dHVwbGVzLCBudHVwbGVzKSk7 CisJbnR1cGxlcyA9IGNsYW1wX3R1cGxlX2VzdChNaW4oYmFzZXJlbC0+dHVwbGVzLCBudHVw bGVzKSk7CiAKIAkqcGFnZXMgPSBucGFnZXM7CiAJKnR1cGxlcyA9IG50dXBsZXM7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwppbmRleCBhNTZjNWVjZWIxNC4uZTE0YTMxNWYz MTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpAQCAtNzQyLDcgKzc0Miw3 IEBAIHRhYmxlX2Jsb2NrX3JlbGF0aW9uX2VzdGltYXRlX3NpemUoUmVsYXRpb24gcmVsLCBp bnQzMiAqYXR0cl93aWR0aHMsCiAJCS8qIG5vdGU6IGludGVnZXIgZGl2aXNpb24gaXMgaW50 ZW50aW9uYWwgaGVyZSAqLwogCQlkZW5zaXR5ID0gKHVzYWJsZV9ieXRlc19wZXJfcGFnZSAq IGZpbGxmYWN0b3IgLyAxMDApIC8gdHVwbGVfd2lkdGg7CiAJCS8qIFRoZXJlJ3MgYXQgbGVh c3Qgb25lIHJvdyBvbiB0aGUgcGFnZSwgZXZlbiB3aXRoIGxvdyBmaWxsZmFjdG9yLiAqLwot CQlkZW5zaXR5ID0gY2xhbXBfcm93X2VzdChkZW5zaXR5KTsKKwkJZGVuc2l0eSA9IGNsYW1w X3R1cGxlX2VzdChkZW5zaXR5KTsKIAl9CiAJKnR1cGxlcyA9IHJpbnQoZGVuc2l0eSAqIChk b3VibGUpIGN1cnBhZ2VzKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Rh Ymxlc2FtcGxlL2Jlcm5vdWxsaS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlc2FtcGxl L2Jlcm5vdWxsaS5jCmluZGV4IDVlMWM1ZDJiNzIzLi5kMTk5MzI5OTE1OCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlc2FtcGxlL2Jlcm5vdWxsaS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90YWJsZXNhbXBsZS9iZXJub3VsbGkuYwpAQCAtMTE3LDcgKzEx Nyw3IEBAIGJlcm5vdWxsaV9zYW1wbGVzY2FuZ2V0c2FtcGxlc2l6ZShQbGFubmVySW5mbyAq cm9vdCwKIAkvKiBXZSdsbCB2aXNpdCBhbGwgcGFnZXMgb2YgdGhlIGJhc2VyZWwgKi8KIAkq cGFnZXMgPSBiYXNlcmVsLT5wYWdlczsKIAotCSp0dXBsZXMgPSBjbGFtcF9yb3dfZXN0KGJh c2VyZWwtPnR1cGxlcyAqIHNhbXBsZWZyYWN0KTsKKwkqdHVwbGVzID0gY2xhbXBfdHVwbGVf ZXN0KGJhc2VyZWwtPnR1cGxlcyAqIHNhbXBsZWZyYWN0KTsKIH0KIAogLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZXNhbXBsZS9zeXN0ZW0uYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90YWJsZXNhbXBsZS9zeXN0ZW0uYwppbmRleCA4ZGI4MTNiODlmYy4uODk0 NGZlMjg3OTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZXNhbXBsZS9z eXN0ZW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGVzYW1wbGUvc3lzdGVtLmMK QEAgLTExNywxMCArMTE3LDEwIEBAIHN5c3RlbV9zYW1wbGVzY2FuZ2V0c2FtcGxlc2l6ZShQ bGFubmVySW5mbyAqcm9vdCwKIAl9CiAKIAkvKiBXZSdsbCB2aXNpdCBhIHNhbXBsZSBvZiB0 aGUgcGFnZXMgLi4uICovCi0JKnBhZ2VzID0gY2xhbXBfcm93X2VzdChiYXNlcmVsLT5wYWdl cyAqIHNhbXBsZWZyYWN0KTsKKwkqcGFnZXMgPSBjbGFtcF90dXBsZV9lc3QoYmFzZXJlbC0+ cGFnZXMgKiBzYW1wbGVmcmFjdCk7CiAKIAkvKiAuLi4gYW5kIGhvcGVmdWxseSBnZXQgYSBy ZXByZXNlbnRhdGl2ZSBudW1iZXIgb2YgdHVwbGVzIGZyb20gdGhlbSAqLwotCSp0dXBsZXMg PSBjbGFtcF9yb3dfZXN0KGJhc2VyZWwtPnR1cGxlcyAqIHNhbXBsZWZyYWN0KTsKKwkqdHVw bGVzID0gY2xhbXBfdHVwbGVfZXN0KGJhc2VyZWwtPnR1cGxlcyAqIHNhbXBsZWZyYWN0KTsK IH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBlZjhhYTQ4OWFmOC4uOWQ5 ZGE0ODgwYTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTE4MDgsNyArMTgwOCw3 IEBAIEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMs CiAJewogCQlpZiAoZXMtPmZvcm1hdCA9PSBFWFBMQUlOX0ZPUk1BVF9URVhUKQogCQl7Ci0J CQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICIgIChjb3N0PSUuMmYuLiUuMmYgcm93cz0l LjBmIHdpZHRoPSVkKSIsCisJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICIgIChjb3N0 PSUuMmYuLiUuMmYgcm93cz0lLjJmIHdpZHRoPSVkKSIsCiAJCQkJCQkJIHBsYW4tPnN0YXJ0 dXBfY29zdCwgcGxhbi0+dG90YWxfY29zdCwKIAkJCQkJCQkgcGxhbi0+cGxhbl9yb3dzLCBw bGFuLT5wbGFuX3dpZHRoKTsKIAkJfQpAQCAtMTgxOSw3ICsxODE5LDcgQEAgRXhwbGFpbk5v ZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkJCUV4cGxhaW5Q cm9wZXJ0eUZsb2F0KCJUb3RhbCBDb3N0IiwgTlVMTCwgcGxhbi0+dG90YWxfY29zdCwKIAkJ CQkJCQkJIDIsIGVzKTsKIAkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJQbGFuIFJvd3MiLCBO VUxMLCBwbGFuLT5wbGFuX3Jvd3MsCi0JCQkJCQkJCSAwLCBlcyk7CisJCQkJCQkJCSAyLCBl cyk7CiAJCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJQbGFuIFdpZHRoIiwgTlVMTCwgcGxh bi0+cGxhbl93aWR0aCwKIAkJCQkJCQkJICAgZXMpOwogCQl9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BhdGgvY29zdHNpemUuYwppbmRleCA2MGIwZmNmYjZiZS4uMjdmOGQ3MGViMmMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKKysrIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwpAQCAtMjA1LDYgKzIwNSwy OSBAQCBzdGF0aWMgZG91YmxlIHBhZ2Vfc2l6ZShkb3VibGUgdHVwbGVzLCBpbnQgd2lkdGgp Owogc3RhdGljIGRvdWJsZSBnZXRfcGFyYWxsZWxfZGl2aXNvcihQYXRoICpwYXRoKTsKIAog CisvKgorICogY2xhbXBfdHVwbGVfZXN0CisgKgkJRm9yY2UgYSB0dXBsZS1jb3VudCBlc3Rp bWF0ZSB0byBhIHNhbmUgdmFsdWUuCisgKi8KK2RvdWJsZQorY2xhbXBfdHVwbGVfZXN0KGRv dWJsZSBudHVwbGVzKQoreworCS8qCisJICogQXZvaWQgaW5maW5pdGUgYW5kIE5hTiB0dXBs ZSBlc3RpbWF0ZXMuICBDb3N0cyBkZXJpdmVkIGZyb20gc3VjaCB2YWx1ZXMKKwkgKiBhcmUg Z29pbmcgdG8gYmUgdXNlbGVzcy4gIEFsc28gZm9yY2UgdGhlIGVzdGltYXRlIHRvIGJlIGF0 IGxlYXN0IG9uZQorCSAqIHR1cGxlLCB0byBtYWtlIGV4cGxhaW4gb3V0cHV0IGxvb2sgYmV0 dGVyIGFuZCB0byBhdm9pZCBwb3NzaWJsZQorCSAqIGRpdmlkZS1ieS16ZXJvIHdoZW4gaW50 ZXJwb2xhdGluZyBjb3N0cy4gIE1ha2UgaXQgYW4gaW50ZWdlciwgdG9vLgorCSAqLworCWlm IChudHVwbGVzID4gTUFYSU1VTV9ST1dDT1VOVCB8fCBpc25hbihudHVwbGVzKSkKKwkJbnR1 cGxlcyA9IE1BWElNVU1fUk9XQ09VTlQ7CisJZWxzZSBpZiAobnR1cGxlcyA8PSAxLjApCisJ CW50dXBsZXMgPSAxLjA7CisJZWxzZQorCQludHVwbGVzID0gcmludChudHVwbGVzKTsKKwor CXJldHVybiBudHVwbGVzOworfQorCiAvKgogICogY2xhbXBfcm93X2VzdAogICoJCUZvcmNl IGEgcm93LWNvdW50IGVzdGltYXRlIHRvIGEgc2FuZSB2YWx1ZS4KQEAgLTIxNiwxNCArMjM5 LDEyIEBAIGNsYW1wX3Jvd19lc3QoZG91YmxlIG5yb3dzKQogCSAqIEF2b2lkIGluZmluaXRl IGFuZCBOYU4gcm93IGVzdGltYXRlcy4gIENvc3RzIGRlcml2ZWQgZnJvbSBzdWNoIHZhbHVl cwogCSAqIGFyZSBnb2luZyB0byBiZSB1c2VsZXNzLiAgQWxzbyBmb3JjZSB0aGUgZXN0aW1h dGUgdG8gYmUgYXQgbGVhc3Qgb25lCiAJICogcm93LCB0byBtYWtlIGV4cGxhaW4gb3V0cHV0 IGxvb2sgYmV0dGVyIGFuZCB0byBhdm9pZCBwb3NzaWJsZQotCSAqIGRpdmlkZS1ieS16ZXJv IHdoZW4gaW50ZXJwb2xhdGluZyBjb3N0cy4gIE1ha2UgaXQgYW4gaW50ZWdlciwgdG9vLgor CSAqIGRpdmlkZS1ieS16ZXJvIHdoZW4gaW50ZXJwb2xhdGluZyBjb3N0cy4KIAkgKi8KIAlp ZiAobnJvd3MgPiBNQVhJTVVNX1JPV0NPVU5UIHx8IGlzbmFuKG5yb3dzKSkKIAkJbnJvd3Mg PSBNQVhJTVVNX1JPV0NPVU5UOwogCWVsc2UgaWYgKG5yb3dzIDw9IDEuMCkKIAkJbnJvd3Mg PSAxLjA7Ci0JZWxzZQotCQlucm93cyA9IHJpbnQobnJvd3MpOwogCiAJcmV0dXJuIG5yb3dz OwogfQpAQCAtMjQ5LDcgKzI3MCw3IEBAIGNsYW1wX3dpZHRoX2VzdChpbnQ2NCB0dXBsZV93 aWR0aCkKIAkJcmV0dXJuIChpbnQzMikgTWF4QWxsb2NTaXplOwogCiAJLyoKLQkgKiBVbmxp a2UgY2xhbXBfcm93X2VzdCwgd2UganVzdCBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXNuJ3Qg bmVnYXRpdmUsCisJICogVW5saWtlIGNsYW1wX3R1cGxlX2VzdCwgd2UganVzdCBBc3NlcnQg dGhhdCB0aGUgdmFsdWUgaXNuJ3QgbmVnYXRpdmUsCiAJICogcmF0aGVyIHRoYW4gbWFza2lu ZyBzdWNoIGVycm9ycy4KIAkgKi8KIAlBc3NlcnQodHVwbGVfd2lkdGggPj0gMCk7CkBAIC02 NDMsNyArNjY0LDcgQEAgY29zdF9pbmRleChJbmRleFBhdGggKnBhdGgsIFBsYW5uZXJJbmZv ICpyb290LCBkb3VibGUgbG9vcF9jb3VudCwKIAlydW5fY29zdCArPSBpbmRleFRvdGFsQ29z dCAtIGluZGV4U3RhcnR1cENvc3Q7CiAKIAkvKiBlc3RpbWF0ZSBudW1iZXIgb2YgbWFpbi10 YWJsZSB0dXBsZXMgZmV0Y2hlZCAqLwotCXR1cGxlc19mZXRjaGVkID0gY2xhbXBfcm93X2Vz dChpbmRleFNlbGVjdGl2aXR5ICogYmFzZXJlbC0+dHVwbGVzKTsKKwl0dXBsZXNfZmV0Y2hl ZCA9IGNsYW1wX3R1cGxlX2VzdChpbmRleFNlbGVjdGl2aXR5ICogYmFzZXJlbC0+dHVwbGVz KTsKIAogCS8qIGZldGNoIGVzdGltYXRlZCBwYWdlIGNvc3RzIGZvciB0YWJsZXNwYWNlIGNv bnRhaW5pbmcgdGFibGUgKi8KIAlnZXRfdGFibGVzcGFjZV9wYWdlX2Nvc3RzKGJhc2VyZWwt PnJlbHRhYmxlc3BhY2UsCkBAIC05MDEsNyArOTIyLDcgQEAgZXh0cmFjdF9ub25pbmRleF9j b25kaXRpb25zKExpc3QgKnF1YWxfY2xhdXNlcywgTGlzdCAqaW5kZXhjbGF1c2VzKQogICog Y29tcHV0ZWQgZm9yIHVzIGJ5IG1ha2Vfb25lX3JlbC4KICAqCiAgKiBDYWxsZXIgaXMgZXhw ZWN0ZWQgdG8gaGF2ZSBlbnN1cmVkIHRoYXQgdHVwbGVzX2ZldGNoZWQgaXMgZ3JlYXRlciB0 aGFuIHplcm8KLSAqIGFuZCByb3VuZGVkIHRvIGludGVnZXIgKHNlZSBjbGFtcF9yb3dfZXN0 KS4gIFRoZSByZXN1bHQgd2lsbCBsaWtld2lzZSBiZQorICogYW5kIHJvdW5kZWQgdG8gaW50 ZWdlciAoc2VlIGNsYW1wX3R1cGxlX2VzdCkuICBUaGUgcmVzdWx0IHdpbGwgbGlrZXdpc2Ug YmUKICAqIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBpbnRlZ3JhbC4KICAqLwogZG91YmxlCkBA IC0zMDg0LDcgKzMxMDUsNyBAQCBnZXRfd2luZG93Y2xhdXNlX3N0YXJ0dXBfdHVwbGVzKFBs YW5uZXJJbmZvICpyb290LCBXaW5kb3dDbGF1c2UgKndjLAogCSAqIHN1Ym5vZGUuCiAJICov CiAKLQlyZXR1cm4gY2xhbXBfcm93X2VzdChyZXR1cm5fdHVwbGVzKTsKKwlyZXR1cm4gY2xh bXBfdHVwbGVfZXN0KHJldHVybl90dXBsZXMpOwogfQogCiAvKgpAQCAtMzI5OCw3ICszMzE5 LDcgQEAgaW5pdGlhbF9jb3N0X25lc3Rsb29wKFBsYW5uZXJJbmZvICpyb290LCBKb2luQ29z dFdvcmtzcGFjZSAqd29ya3NwYWNlLAogCSAqLwogCXN0YXJ0dXBfY29zdCArPSBvdXRlcl9w YXRoLT5zdGFydHVwX2Nvc3QgKyBpbm5lcl9wYXRoLT5zdGFydHVwX2Nvc3Q7CiAJcnVuX2Nv c3QgKz0gb3V0ZXJfcGF0aC0+dG90YWxfY29zdCAtIG91dGVyX3BhdGgtPnN0YXJ0dXBfY29z dDsKLQlpZiAob3V0ZXJfcGF0aF9yb3dzID4gMSkKKwlpZiAob3V0ZXJfcGF0aF9yb3dzID49 IDIpCiAJCXJ1bl9jb3N0ICs9IChvdXRlcl9wYXRoX3Jvd3MgLSAxKSAqIGlubmVyX3Jlc2Nh bl9zdGFydF9jb3N0OwogCiAJaW5uZXJfcnVuX2Nvc3QgPSBpbm5lcl9wYXRoLT50b3RhbF9j b3N0IC0gaW5uZXJfcGF0aC0+c3RhcnR1cF9jb3N0OwpAQCAtMzMyMyw3ICszMzQ0LDcgQEAg aW5pdGlhbF9jb3N0X25lc3Rsb29wKFBsYW5uZXJJbmZvICpyb290LCBKb2luQ29zdFdvcmtz cGFjZSAqd29ya3NwYWNlLAogCXsKIAkJLyogTm9ybWFsIGNhc2U7IHdlJ2xsIHNjYW4gd2hv bGUgaW5wdXQgcmVsIGZvciBlYWNoIG91dGVyIHJvdyAqLwogCQlydW5fY29zdCArPSBpbm5l cl9ydW5fY29zdDsKLQkJaWYgKG91dGVyX3BhdGhfcm93cyA+IDEpCisJCWlmIChvdXRlcl9w YXRoX3Jvd3MgPj0gMikKIAkJCXJ1bl9jb3N0ICs9IChvdXRlcl9wYXRoX3Jvd3MgLSAxKSAq IGlubmVyX3Jlc2Nhbl9ydW5fY29zdDsKIAl9CiAKQEAgLTM2NTYsOCArMzY3Nyw4IEBAIGlu aXRpYWxfY29zdF9tZXJnZWpvaW4oUGxhbm5lckluZm8gKnJvb3QsIEpvaW5Db3N0V29ya3Nw YWNlICp3b3Jrc3BhY2UsCiAJICogQ29udmVydCBzZWxlY3Rpdml0aWVzIHRvIHJvdyBjb3Vu dHMuICBXZSBmb3JjZSBvdXRlcl9yb3dzIGFuZAogCSAqIGlubmVyX3Jvd3MgdG8gYmUgYXQg bGVhc3QgMSwgYnV0IHRoZSBza2lwX3Jvd3MgZXN0aW1hdGVzIGNhbiBiZSB6ZXJvLgogCSAq LwotCW91dGVyX3NraXBfcm93cyA9IHJpbnQob3V0ZXJfcGF0aF9yb3dzICogb3V0ZXJzdGFy dHNlbCk7Ci0JaW5uZXJfc2tpcF9yb3dzID0gcmludChpbm5lcl9wYXRoX3Jvd3MgKiBpbm5l cnN0YXJ0c2VsKTsKKwlvdXRlcl9za2lwX3Jvd3MgPSBvdXRlcl9wYXRoX3Jvd3MgKiBvdXRl cnN0YXJ0c2VsOworCWlubmVyX3NraXBfcm93cyA9IGlubmVyX3BhdGhfcm93cyAqIGlubmVy c3RhcnRzZWw7CiAJb3V0ZXJfcm93cyA9IGNsYW1wX3Jvd19lc3Qob3V0ZXJfcGF0aF9yb3dz ICogb3V0ZXJlbmRzZWwpOwogCWlubmVyX3Jvd3MgPSBjbGFtcF9yb3dfZXN0KGlubmVyX3Bh dGhfcm93cyAqIGlubmVyZW5kc2VsKTsKIApAQCAtNDQxNSw3ICs0NDM2LDcgQEAgZmluYWxf Y29zdF9oYXNoam9pbihQbGFubmVySW5mbyAqcm9vdCwgSGFzaFBhdGggKnBhdGgsCiAJICog dGhhdCB3YXksIHNvIGl0IHdpbGwgYmUgdW5hYmxlIHRvIGRyaXZlIHRoZSBiYXRjaCBzaXpl IGJlbG93IGhhc2hfbWVtCiAJICogd2hlbiB0aGlzIGlzIHRydWUuKQogCSAqLwotCWlmIChy ZWxhdGlvbl9ieXRlX3NpemUoY2xhbXBfcm93X2VzdChpbm5lcl9wYXRoX3Jvd3MgKiBpbm5l cm1jdmZyZXEpLAorCWlmIChyZWxhdGlvbl9ieXRlX3NpemUoY2xhbXBfdHVwbGVfZXN0KGlu bmVyX3BhdGhfcm93cyAqIGlubmVybWN2ZnJlcSksCiAJCQkJCQkgICBpbm5lcl9wYXRoLT5w YXRodGFyZ2V0LT53aWR0aCkgPiBnZXRfaGFzaF9tZW1vcnlfbGltaXQoKSkKIAkJc3RhcnR1 cF9jb3N0ICs9IGRpc2FibGVfY29zdDsKIApAQCAtNDQ0OSw3ICs0NDcwLDcgQEAgZmluYWxf Y29zdF9oYXNoam9pbihQbGFubmVySW5mbyAqcm9vdCwgSGFzaFBhdGggKnBhdGgsCiAJCSAq IHRvIGNsYW1wIGlubmVyX3NjYW5fZnJhYyB0byBhdCBtb3N0IDEuMDsgYnV0IHNpbmNlIG1h dGNoX2NvdW50IGlzCiAJCSAqIGF0IGxlYXN0IDEsIG5vIHN1Y2ggY2xhbXAgaXMgbmVlZGVk IG5vdy4pCiAJCSAqLwotCQlvdXRlcl9tYXRjaGVkX3Jvd3MgPSByaW50KG91dGVyX3BhdGhf cm93cyAqIGV4dHJhLT5zZW1pZmFjdG9ycy5vdXRlcl9tYXRjaF9mcmFjKTsKKwkJb3V0ZXJf bWF0Y2hlZF9yb3dzID0gb3V0ZXJfcGF0aF9yb3dzICogZXh0cmEtPnNlbWlmYWN0b3JzLm91 dGVyX21hdGNoX2ZyYWM7CiAJCWlubmVyX3NjYW5fZnJhYyA9IDIuMCAvIChleHRyYS0+c2Vt aWZhY3RvcnMubWF0Y2hfY291bnQgKyAxLjApOwogCiAJCXN0YXJ0dXBfY29zdCArPSBoYXNo X3F1YWxfY29zdC5zdGFydHVwOwpAQCAtNDU3Myw3ICs0NTk0LDcgQEAgY29zdF9zdWJwbGFu KFBsYW5uZXJJbmZvICpyb290LCBTdWJQbGFuICpzdWJwbGFuLCBQbGFuICpwbGFuKQogCQlp ZiAoc3VicGxhbi0+c3ViTGlua1R5cGUgPT0gRVhJU1RTX1NVQkxJTkspCiAJCXsKIAkJCS8q IHdlIG9ubHkgbmVlZCB0byBmZXRjaCAxIHR1cGxlOyBjbGFtcCB0byBhdm9pZCB6ZXJvIGRp dmlkZSAqLwotCQkJc3BfY29zdC5wZXJfdHVwbGUgKz0gcGxhbl9ydW5fY29zdCAvIGNsYW1w X3Jvd19lc3QocGxhbi0+cGxhbl9yb3dzKTsKKwkJCXNwX2Nvc3QucGVyX3R1cGxlICs9IHBs YW5fcnVuX2Nvc3QgLyBjbGFtcF90dXBsZV9lc3QocGxhbi0+cGxhbl9yb3dzKTsKIAkJfQog CQllbHNlIGlmIChzdWJwbGFuLT5zdWJMaW5rVHlwZSA9PSBBTExfU1VCTElOSyB8fAogCQkJ CSBzdWJwbGFuLT5zdWJMaW5rVHlwZSA9PSBBTllfU1VCTElOSykKQEAgLTY1MTcsNyArNjUz OCw3IEBAIGNvbXB1dGVfYml0bWFwX3BhZ2VzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJ bmZvICpiYXNlcmVsLAogCS8qCiAJICogRXN0aW1hdGUgbnVtYmVyIG9mIG1haW4tdGFibGUg cGFnZXMgZmV0Y2hlZC4KIAkgKi8KLQl0dXBsZXNfZmV0Y2hlZCA9IGNsYW1wX3Jvd19lc3Qo aW5kZXhTZWxlY3Rpdml0eSAqIGJhc2VyZWwtPnR1cGxlcyk7CisJdHVwbGVzX2ZldGNoZWQg PSBjbGFtcF90dXBsZV9lc3QoaW5kZXhTZWxlY3Rpdml0eSAqIGJhc2VyZWwtPnR1cGxlcyk7 CiAKIAlUID0gKGJhc2VyZWwtPnBhZ2VzID4gMSkgPyAoZG91YmxlKSBiYXNlcmVsLT5wYWdl cyA6IDEuMDsKIApAQCAtNjU4Myw3ICs2NjA0LDcgQEAgY29tcHV0ZV9iaXRtYXBfcGFnZXMo UGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmJhc2VyZWwsCiAJCSAqLwogCQlpZiAo bG9zc3lfcGFnZXMgPiAwKQogCQkJdHVwbGVzX2ZldGNoZWQgPQotCQkJCWNsYW1wX3Jvd19l c3QoaW5kZXhTZWxlY3Rpdml0eSAqCisJCQkJY2xhbXBfdHVwbGVfZXN0KGluZGV4U2VsZWN0 aXZpdHkgKgogCQkJCQkJCSAgKGV4YWN0X3BhZ2VzIC8gaGVhcF9wYWdlcykgKiBiYXNlcmVs LT50dXBsZXMgKwogCQkJCQkJCSAgKGxvc3N5X3BhZ2VzIC8gaGVhcF9wYWdlcykgKiBiYXNl cmVsLT50dXBsZXMpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL3BhdGhub2RlLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5j CmluZGV4IDkzZTczY2I0NGRiLi4wYjllYzZiMjZmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvdXRpbC9wYXRobm9kZS5jCkBAIC0xNjg3LDcgKzE2ODcsNyBAQCBjcmVhdGVfbWVtb2l6 ZV9wYXRoKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsIFBhdGggKnN1YnBh dGgsCiAJcGF0aG5vZGUtPnBhcmFtX2V4cHJzID0gcGFyYW1fZXhwcnM7CiAJcGF0aG5vZGUt PnNpbmdsZXJvdyA9IHNpbmdsZXJvdzsKIAlwYXRobm9kZS0+YmluYXJ5X21vZGUgPSBiaW5h cnlfbW9kZTsKLQlwYXRobm9kZS0+Y2FsbHMgPSBjbGFtcF9yb3dfZXN0KGNhbGxzKTsKKwlw YXRobm9kZS0+Y2FsbHMgPSBjbGFtcF90dXBsZV9lc3QoY2FsbHMpOwogCiAJLyoKIAkgKiBG b3Igbm93IHdlIHNldCBlc3RfZW50cmllcyB0byAwLiAgY29zdF9tZW1vaXplX3Jlc2Nhbigp IGRvZXMgYWxsIHRoZQpAQCAtNDA0OSw3ICs0MDQ5LDcgQEAgYWRqdXN0X2xpbWl0X3Jvd3Nf Y29zdHMoZG91YmxlICpyb3dzLAkvKiBpbi9vdXQgcGFyYW1ldGVyICovCiAJCWlmIChvZmZz ZXRfZXN0ID4gMCkKIAkJCW9mZnNldF9yb3dzID0gKGRvdWJsZSkgb2Zmc2V0X2VzdDsKIAkJ ZWxzZQotCQkJb2Zmc2V0X3Jvd3MgPSBjbGFtcF9yb3dfZXN0KGlucHV0X3Jvd3MgKiAwLjEw KTsKKwkJCW9mZnNldF9yb3dzID0gY2xhbXBfdHVwbGVfZXN0KGlucHV0X3Jvd3MgKiAwLjEw KTsKIAkJaWYgKG9mZnNldF9yb3dzID4gKnJvd3MpCiAJCQlvZmZzZXRfcm93cyA9ICpyb3dz OwogCQlpZiAoaW5wdXRfcm93cyA+IDApCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hZHQvc2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCmlu ZGV4IDU4OGQ5OTFmYTU3Li4wYzA3N2MwOTE3NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3NlbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1 bmNzLmMKQEAgLTIxODMsNyArMjE4Myw3IEBAIGVzdGltYXRlX2FycmF5X2xlbmd0aChQbGFu bmVySW5mbyAqcm9vdCwgTm9kZSAqYXJyYXlleHByKQogCQkJCQkJCQkgQVRUU1RBVFNTTE9U X05VTUJFUlMpKQogCQkJewogCQkJCWlmIChzc2xvdC5ubnVtYmVycyA+IDApCi0JCQkJCW5l bGVtID0gY2xhbXBfcm93X2VzdChzc2xvdC5udW1iZXJzW3NzbG90Lm5udW1iZXJzIC0gMV0p OworCQkJCQluZWxlbSA9IGNsYW1wX3R1cGxlX2VzdChzc2xvdC5udW1iZXJzW3NzbG90Lm5u dW1iZXJzIC0gMV0pOwogCQkJCWZyZWVfYXR0c3RhdHNzbG90KCZzc2xvdCk7CiAJCQl9CiAJ CX0KQEAgLTM0NjIsNyArMzQ2Miw3IEBAIGVzdGltYXRlX251bV9ncm91cHMoUGxhbm5lcklu Zm8gKnJvb3QsIExpc3QgKmdyb3VwRXhwcnMsIGRvdWJsZSBpbnB1dF9yb3dzLAogCSAqIGVz dGltYXRlIGlzIHVzdWFsbHkgYWxyZWFkeSBhdCBsZWFzdCAxLCBidXQgY2xhbXAgaXQganVz dCBpbiBjYXNlIGl0CiAJICogaXNuJ3QuCiAJICovCi0JaW5wdXRfcm93cyA9IGNsYW1wX3Jv d19lc3QoaW5wdXRfcm93cyk7CisJaW5wdXRfcm93cyA9IGNsYW1wX3R1cGxlX2VzdChpbnB1 dF9yb3dzKTsKIAogCS8qCiAJICogSWYgbm8gZ3JvdXBpbmcgY29sdW1ucywgdGhlcmUncyBl eGFjdGx5IG9uZSBncm91cC4gIChUaGlzIGNhbid0IGhhcHBlbgpAQCAtMzc1NSw3ICszNzU1 LDcgQEAgZXN0aW1hdGVfbnVtX2dyb3VwcyhQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqZ3Jv dXBFeHBycywgZG91YmxlIGlucHV0X3Jvd3MsCiAJCQkJCSgxIC0gcG93KChyZWwtPnR1cGxl cyAtIHJlbC0+cm93cykgLyByZWwtPnR1cGxlcywKIAkJCQkJCQkgcmVsLT50dXBsZXMgLyBy ZWxkaXN0aW5jdCkpOwogCQkJfQotCQkJcmVsZGlzdGluY3QgPSBjbGFtcF9yb3dfZXN0KHJl bGRpc3RpbmN0KTsKKwkJCXJlbGRpc3RpbmN0ID0gY2xhbXBfdHVwbGVfZXN0KHJlbGRpc3Rp bmN0KTsKIAogCQkJLyoKIAkJCSAqIFVwZGF0ZSBlc3RpbWF0ZSBvZiB0b3RhbCBkaXN0aW5j dCBncm91cHMuCkBAIC00MDcxLDcgKzQwNzEsNyBAQCBlc3RpbWF0ZV9oYXNoX2J1Y2tldF9z dGF0cyhQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqaGFzaGtleSwgZG91YmxlIG5idWNrZXRz LAogCWlmICh2YXJkYXRhLnJlbCAmJiB2YXJkYXRhLnJlbC0+dHVwbGVzID4gMCkKIAl7CiAJ CW5kaXN0aW5jdCAqPSB2YXJkYXRhLnJlbC0+cm93cyAvIHZhcmRhdGEucmVsLT50dXBsZXM7 Ci0JCW5kaXN0aW5jdCA9IGNsYW1wX3Jvd19lc3QobmRpc3RpbmN0KTsKKwkJbmRpc3RpbmN0 ID0gY2xhbXBfdHVwbGVfZXN0KG5kaXN0aW5jdCk7CiAJfQogCiAJLyoKQEAgLTYxNjgsNyAr NjE2OCw3IEBAIGdldF92YXJpYWJsZV9udW1kaXN0aW5jdChWYXJpYWJsZVN0YXREYXRhICp2 YXJkYXRhLCBib29sICppc2RlZmF1bHQpCiAJICogSWYgd2UgaGFkIGFuIGFic29sdXRlIGVz dGltYXRlLCB1c2UgdGhhdC4KIAkgKi8KIAlpZiAoc3RhZGlzdGluY3QgPiAwLjApCi0JCXJl dHVybiBjbGFtcF9yb3dfZXN0KHN0YWRpc3RpbmN0KTsKKwkJcmV0dXJuIGNsYW1wX3R1cGxl X2VzdChzdGFkaXN0aW5jdCk7CiAKIAkvKgogCSAqIE90aGVyd2lzZSB3ZSBuZWVkIHRvIGdl dCB0aGUgcmVsYXRpb24gc2l6ZTsgcHVudCBpZiBub3QgYXZhaWxhYmxlLgpAQCAtNjE4OSw3 ICs2MTg5LDcgQEAgZ2V0X3ZhcmlhYmxlX251bWRpc3RpbmN0KFZhcmlhYmxlU3RhdERhdGEg KnZhcmRhdGEsIGJvb2wgKmlzZGVmYXVsdCkKIAkgKiBJZiB3ZSBoYWQgYSByZWxhdGl2ZSBl c3RpbWF0ZSwgdXNlIHRoYXQuCiAJICovCiAJaWYgKHN0YWRpc3RpbmN0IDwgMC4wKQotCQly ZXR1cm4gY2xhbXBfcm93X2VzdCgtc3RhZGlzdGluY3QgKiBudHVwbGVzKTsKKwkJcmV0dXJu IGNsYW1wX3R1cGxlX2VzdCgtc3RhZGlzdGluY3QgKiBudHVwbGVzKTsKIAogCS8qCiAJICog V2l0aCBubyBkYXRhLCBlc3RpbWF0ZSBuZGlzdGluY3QgPSBudHVwbGVzIGlmIHRoZSB0YWJs ZSBpcyBzbWFsbCwgZWxzZQpAQCAtNjE5Nyw3ICs2MTk3LDcgQEAgZ2V0X3ZhcmlhYmxlX251 bWRpc3RpbmN0KFZhcmlhYmxlU3RhdERhdGEgKnZhcmRhdGEsIGJvb2wgKmlzZGVmYXVsdCkK IAkgKiB0aGF0IHRoZSBiZWhhdmlvciBpc24ndCBkaXNjb250aW51b3VzLgogCSAqLwogCWlm IChudHVwbGVzIDwgREVGQVVMVF9OVU1fRElTVElOQ1QpCi0JCXJldHVybiBjbGFtcF9yb3df ZXN0KG50dXBsZXMpOworCQlyZXR1cm4gY2xhbXBfdHVwbGVfZXN0KG50dXBsZXMpOwogCiAJ KmlzZGVmYXVsdCA9IHRydWU7CiAJcmV0dXJuIERFRkFVTFRfTlVNX0RJU1RJTkNUOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oIGIvc3JjL2luY2x1 ZGUvb3B0aW1pemVyL29wdGltaXplci5oCmluZGV4IDU0NjgyOGI1NGJkLi5lMWJlOWRjNjE3 NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oCisrKyBi L3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaApAQCAtOTAsNiArOTAsNyBAQCBl eHRlcm4gUEdETExJTVBPUlQgZG91YmxlIHJlY3Vyc2l2ZV93b3JrdGFibGVfZmFjdG9yOwog ZXh0ZXJuIFBHRExMSU1QT1JUIGludCBlZmZlY3RpdmVfY2FjaGVfc2l6ZTsKIAogZXh0ZXJu IGRvdWJsZSBjbGFtcF9yb3dfZXN0KGRvdWJsZSBucm93cyk7CitleHRlcm4gZG91YmxlIGNs YW1wX3R1cGxlX2VzdChkb3VibGUgbnR1cGxlcyk7CiBleHRlcm4gaW50MzIgY2xhbXBfd2lk dGhfZXN0KGludDY0IHR1cGxlX3dpZHRoKTsKIGV4dGVybiBsb25nIGNsYW1wX2NhcmRpbmFs aXR5X3RvX2xvbmcoQ2FyZGluYWxpdHkgeCk7CiAKLS0gCjIuMzQuMQoK --------------WCr4SM1QfxE8JchJjLn3j2ly Content-Type: text/x-patch; charset=UTF-8; name="v1-0002-Always-use-two-fractional-digits-for-estimated-rows_TESTS.patch" Content-Disposition: attachment; filename*0="v1-0002-Always-use-two-fractional-digits-for-estimated-rows_"; filename*1="TESTS.patch" Content-Transfer-Encoding: base64 RnJvbSBhMzRmZDYzYzQ3YTg3ZTc5ZDZiMGZlMGE3MDVjNTI3YTViMmIyMmJjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmRva2ltb3YgSWxpYSA8aWx5YS5ldmRva2ltb3ZA dGFudG9ybGFicy5jb20+CkRhdGU6IFdlZCwgOSBBcHIgMjAyNSAyMjoyNjoxNiArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjFdIEFsd2F5cyB1c2UgdHdvIGZyYWN0aW9uYWwgZGlnaXRzIGZv ciBlc3RpbWF0ZWQgcm93cyBjb3VudAoKLS0tCiAuLi4vZXhwZWN0ZWQvcGdfb3ZlcmV4cGxh aW4ub3V0ICAgICAgICAgICAgICAgfCAgMTIgKy0KIC4uLi9wb3N0Z3Jlc19mZHcvZXhwZWN0 ZWQvcG9zdGdyZXNfZmR3Lm91dCAgICB8ICAxNSArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9leHBsYWluLm91dCAgICAgICAgIHwgMTQ2ICsrKysrKysrKy0tLS0tLS0tLQogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmhlcml0Lm91dCAgICAgICAgIHwgICA4ICstCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0ICAgICAgICAgICAgfCAxMzQgKysr KysrKystLS0tLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luX2hhc2gub3V0 ICAgICAgIHwgIDE5ICstLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNjX2Z1bmN0 aW9ucy5vdXQgIHwgIDg0ICsrKysrLS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cGFydGl0aW9uX2pvaW4ub3V0ICB8IDExMiArKysrKysrLS0tLS0tLQogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zZWxlY3Rfdmlld3Mub3V0ICAgIHwgIDE5ICsrLQogc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0ICAgICAgIHwgIDEyICstCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9zdGF0c19leHQuc3FsICAgICAgICAgICAgfCAgIDQgKy0KIDExIGZp bGVzIGNoYW5nZWQsIDI3NyBpbnNlcnRpb25zKCspLCAyODggZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvY29udHJpYi9wZ19vdmVyZXhwbGFpbi9leHBlY3RlZC9wZ19vdmVyZXhwbGFp bi5vdXQgYi9jb250cmliL3BnX292ZXJleHBsYWluL2V4cGVjdGVkL3BnX292ZXJleHBsYWlu Lm91dAppbmRleCAyODI1MmRiZmY2Yy4uNzMxYTBiZjc5YTIgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvcGdfb3ZlcmV4cGxhaW4vZXhwZWN0ZWQvcGdfb3ZlcmV4cGxhaW4ub3V0CisrKyBiL2Nv bnRyaWIvcGdfb3ZlcmV4cGxhaW4vZXhwZWN0ZWQvcGdfb3ZlcmV4cGxhaW4ub3V0CkBAIC0y NSw5ICsyNSw5IEBAIEVSUk9SOiAgdW5yZWNvZ25pemVkIEVYUExBSU4gb3B0aW9uICJkZWJ1 ZmYiCiBMSU5FIDE6IEVYUExBSU4gKERFQlVGRikgU0VMRUNUIDE7CiAgICAgICAgICAgICAg ICAgIF4KIEVYUExBSU4gKERFQlVHKSBTRUxFQ1QgMTsKLSAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCi0gUmVzdWx0ICAoY29zdD0wLjAwLi4wLjAxIHJvd3M9MSB3aWR0aD00 KQorICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQgIChj b3N0PTAuMDAuLjAuMDEgcm93cz0xLjAwIHdpZHRoPTQpCiAgICBEaXNhYmxlZCBOb2Rlczog MAogICAgUGFyYWxsZWwgU2FmZTogZmFsc2UKICAgIFBsYW4gTm9kZSBJRDogMApAQCAtNDEs OSArNDEsOSBAQCBFWFBMQUlOIChERUJVRykgU0VMRUNUIDE7CiAoMTEgcm93cykKIAogRVhQ TEFJTiAoUkFOR0VfVEFCTEUpIFNFTEVDVCAxOwotICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KLSBSZXN1bHQgIChjb3N0PTAuMDAuLjAuMDEgcm93cz0xIHdpZHRoPTQpCisg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdCAgKGNvc3Q9 MC4wMC4uMC4wMSByb3dzPTEuMDAgd2lkdGg9NCkKICBSVEkgMSAocmVzdWx0KToKICAgIEVy ZWY6ICIqUkVTVUxUKiIgKCkKICgzIHJvd3MpCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3Rn cmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0IGIvY29udHJpYi9wb3N0Z3Jlc19m ZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAppbmRleCBkMWFjZWU1YTVmYS4uZTViOTJk MjAxN2IgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3Rn cmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdy ZXNfZmR3Lm91dApAQCAtMTAxNTEsMTMgKzEwMTUxLDE2IEBAIFNFTEVDVCB0MS5hLHQyLmIs dDMuYyBGUk9NIGZwcnQxIHQxIElOTkVSIEpPSU4gZnBydDIgdDIgT04gKHQxLmEgPSB0Mi5i KSBJTk5FUiBKCiAtLSBsZWZ0IG91dGVyIGpvaW4gKyBudWxsYWJsZSBjbGF1c2UKIEVYUExB SU4gKFZFUkJPU0UsIENPU1RTIE9GRikKIFNFTEVDVCB0MS5hLHQyLmIsdDIuYyBGUk9NIGZw cnQxIHQxIExFRlQgSk9JTiAoU0VMRUNUICogRlJPTSBmcHJ0MiBXSEVSRSBhIDwgMTApIHQy IE9OICh0MS5hID0gdDIuYiBhbmQgdDEuYiA9IHQyLmEpIFdIRVJFIHQxLmEgPCAxMCBPUkRF UiBCWSAxLDIsMzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KLSBGb3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKICAgIE91dHB1dDogdDEuYSwgZnBydDIuYiwgZnBy dDIuYwotICAgUmVsYXRpb25zOiAocHVibGljLmZ0cHJ0MV9wMSB0MSkgTEVGVCBKT0lOIChw dWJsaWMuZnRwcnQyX3AxIGZwcnQyKQotICAgUmVtb3RlIFNRTDogU0VMRUNUIHI1LmEsIHI2 LmIsIHI2LmMgRlJPTSAocHVibGljLmZwcnQxX3AxIHI1IExFRlQgSk9JTiBwdWJsaWMuZnBy dDJfcDEgcjYgT04gKCgocjUuYSA9IHI2LmIpKSBBTkQgKChyNS5iID0gcjYuYSkpIEFORCAo KHI2LmEgPCAxMCkpKSkgV0hFUkUgKChyNS5hIDwgMTApKSBPUkRFUiBCWSByNS5hIEFTQyBO VUxMUyBMQVNULCByNi5iIEFTQyBOVUxMUyBMQVNULCByNi5jIEFTQyBOVUxMUyBMQVNUCi0o NCByb3dzKQorICAgU29ydCBLZXk6IHQxLmEsIGZwcnQyLmIsIGZwcnQyLmMKKyAgIC0+ICBG b3JlaWduIFNjYW4KKyAgICAgICAgIE91dHB1dDogdDEuYSwgZnBydDIuYiwgZnBydDIuYwor ICAgICAgICAgUmVsYXRpb25zOiAocHVibGljLmZ0cHJ0MV9wMSB0MSkgTEVGVCBKT0lOIChw dWJsaWMuZnRwcnQyX3AxIGZwcnQyKQorICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIHI1 LmEsIHI2LmIsIHI2LmMgRlJPTSAocHVibGljLmZwcnQxX3AxIHI1IExFRlQgSk9JTiBwdWJs aWMuZnBydDJfcDEgcjYgT04gKCgocjUuYSA9IHI2LmIpKSBBTkQgKChyNS5iID0gcjYuYSkp IEFORCAoKHI2LmEgPCAxMCkpKSkgV0hFUkUgKChyNS5hIDwgMTApKQorKDcgcm93cykKIAog U0VMRUNUIHQxLmEsdDIuYix0Mi5jIEZST00gZnBydDEgdDEgTEVGVCBKT0lOIChTRUxFQ1Qg KiBGUk9NIGZwcnQyIFdIRVJFIGEgPCAxMCkgdDIgT04gKHQxLmEgPSB0Mi5iIGFuZCB0MS5i ID0gdDIuYSkgV0hFUkUgdDEuYSA8IDEwIE9SREVSIEJZIDEsMiwzOwogIGEgfCBiIHwgIGMg ICAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0CmluZGV4IGM1M2JmOWM4 YWEzLi4yODk5MWNjYjY2NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9leHBsYWluLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4u b3V0CkBAIC01NSwzMiArNTUsMzIgQEAgc2V0IGppdCA9IG9mZjsKIHNldCB0cmFja19pb190 aW1pbmcgPSBvZmY7CiAtLSBTaW1wbGUgY2FzZXMKIHNlbGVjdCBleHBsYWluX2ZpbHRlcign ZXhwbGFpbiBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7Ci0gICAgICAgICAgICAgICAg ICAgICBleHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIFNlcSBT Y2FuIG9uIGludDhfdGJsIGk4ICAoY29zdD1OLk4uLk4uTiByb3dzPU4gd2lkdGg9TikKKyAg ICAgICAgICAgICAgICAgICAgICBleHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIGludDhfdGJsIGk4ICAoY29zdD1OLk4uLk4uTiBy b3dzPU4uTiB3aWR0aD1OKQogKDEgcm93KQogCiBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4 cGxhaW4gKGFuYWx5emUsIGJ1ZmZlcnMgb2ZmKSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4 Jyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxhaW5f ZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gU2VxIFNjYW4gb24g aW50OF90YmwgaTggIChjb3N0PU4uTi4uTi5OIHJvd3M9TiB3aWR0aD1OKSAoYWN0dWFsIHRp bWU9Ti5OLi5OLk4gcm93cz1OLk4gbG9vcHM9TikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGV4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gaW50OF90YmwgaTggIChjb3N0PU4uTi4u Ti5OIHJvd3M9Ti5OIHdpZHRoPU4pIChhY3R1YWwgdGltZT1OLk4uLk4uTiByb3dzPU4uTiBs b29wcz1OKQogIFBsYW5uaW5nIFRpbWU6IE4uTiBtcwogIEV4ZWN1dGlvbiBUaW1lOiBOLk4g bXMKICgzIHJvd3MpCiAKIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6 ZSwgYnVmZmVycyBvZmYsIHZlcmJvc2UpIHNlbGVjdCAqIGZyb20gaW50OF90YmwgaTgnKTsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxhaW5f ZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIFNl cSBTY2FuIG9uIHB1YmxpYy5pbnQ4X3RibCBpOCAgKGNvc3Q9Ti5OLi5OLk4gcm93cz1OIHdp ZHRoPU4pIChhY3R1YWwgdGltZT1OLk4uLk4uTiByb3dzPU4uTiBsb29wcz1OKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxhaW5fZmlsdGVy ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBT Y2FuIG9uIHB1YmxpYy5pbnQ4X3RibCBpOCAgKGNvc3Q9Ti5OLi5OLk4gcm93cz1OLk4gd2lk dGg9TikgKGFjdHVhbCB0aW1lPU4uTi4uTi5OIHJvd3M9Ti5OIGxvb3BzPU4pCiAgICBPdXRw dXQ6IHExLCBxMgogIFBsYW5uaW5nIFRpbWU6IE4uTiBtcwogIEV4ZWN1dGlvbiBUaW1lOiBO Lk4gbXMKICg0IHJvd3MpCiAKIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5h bHl6ZSwgYnVmZmVycywgZm9ybWF0IHRleHQpIHNlbGVjdCAqIGZyb20gaW50OF90YmwgaTgn KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGFpbl9m aWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBTZXEgU2NhbiBvbiBp bnQ4X3RibCBpOCAgKGNvc3Q9Ti5OLi5OLk4gcm93cz1OIHdpZHRoPU4pIChhY3R1YWwgdGlt ZT1OLk4uLk4uTiByb3dzPU4uTiBsb29wcz1OKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBpbnQ4X3RibCBpOCAgKGNvc3Q9Ti5OLi5O Lk4gcm93cz1OLk4gd2lkdGg9TikgKGFjdHVhbCB0aW1lPU4uTi4uTi5OIHJvd3M9Ti5OIGxv b3BzPU4pCiAgUGxhbm5pbmcgVGltZTogTi5OIG1zCiAgRXhlY3V0aW9uIFRpbWU6IE4uTiBt cwogKDMgcm93cykKQEAgLTk4LDcgKzk4LDcgQEAgc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdl eHBsYWluIChhbmFseXplLCBidWZmZXJzLCBmb3JtYXQgeG1sKSBzZWxlY3QgKiBmcm9tIGlu dDgKICAgICAgICA8QWxpYXM+aTg8L0FsaWFzPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCiAgICAgICAgPFN0YXJ0dXAtQ29zdD5OLk48L1N0YXJ0dXAtQ29zdD4gICAgICAg ICAgICAgICAgKwogICAgICAgIDxUb3RhbC1Db3N0Pk4uTjwvVG90YWwtQ29zdD4gICAgICAg ICAgICAgICAgICAgICsKLSAgICAgICA8UGxhbi1Sb3dzPk48L1BsYW4tUm93cz4gICAgICAg ICAgICAgICAgICAgICAgICArCisgICAgICAgPFBsYW4tUm93cz5OLk48L1BsYW4tUm93cz4g ICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgIDxQbGFuLVdpZHRoPk48L1BsYW4tV2lk dGg+ICAgICAgICAgICAgICAgICAgICAgICsKICAgICAgICA8QWN0dWFsLVN0YXJ0dXAtVGlt ZT5OLk48L0FjdHVhbC1TdGFydHVwLVRpbWU+ICArCiAgICAgICAgPEFjdHVhbC1Ub3RhbC1U aW1lPk4uTjwvQWN0dWFsLVRvdGFsLVRpbWU+ICAgICAgKwpAQCAtMTQ3LDcgKzE0Nyw3IEBA IHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSwgc2VyaWFsaXplLCBi dWZmZXJzLCBmb3JtYXQgeWFtbCkgc2VsZWN0CiAgICAgIEFsaWFzOiAiaTgiICAgICAgICAg ICAgICArCiAgICAgIFN0YXJ0dXAgQ29zdDogTi5OICAgICAgICArCiAgICAgIFRvdGFsIENv c3Q6IE4uTiAgICAgICAgICArCi0gICAgIFBsYW4gUm93czogTiAgICAgICAgICAgICArCisg ICAgIFBsYW4gUm93czogTi5OICAgICAgICAgICArCiAgICAgIFBsYW4gV2lkdGg6IE4gICAg ICAgICAgICArCiAgICAgIEFjdHVhbCBTdGFydHVwIFRpbWU6IE4uTiArCiAgICAgIEFjdHVh bCBUb3RhbCBUaW1lOiBOLk4gICArCkBAIC0xOTUsOSArMTk1LDkgQEAgc2VsZWN0IGV4cGxh aW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLCBzZXJpYWxpemUsIGJ1ZmZlcnMsIGZvcm1h dCB5YW1sKSBzZWxlY3QKICgxIHJvdykKIAogc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBs YWluIChidWZmZXJzLCBmb3JtYXQgdGV4dCkgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcp OwotICAgICAgICAgICAgICAgICAgICAgZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAg ICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KLSBTZXEgU2NhbiBvbiBpbnQ4X3RibCBpOCAgKGNvc3Q9Ti5OLi5OLk4g cm93cz1OIHdpZHRoPU4pCisgICAgICAgICAgICAgICAgICAgICAgZXhwbGFpbl9maWx0ZXIg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBpbnQ4X3RibCBp OCAgKGNvc3Q9Ti5OLi5OLk4gcm93cz1OLk4gd2lkdGg9TikKICgxIHJvdykKIAogc2VsZWN0 IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChidWZmZXJzLCBmb3JtYXQganNvbikgc2VsZWN0 ICogZnJvbSBpbnQ4X3RibCBpOCcpOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHNlbGVjdCBleHBs YWluX2ZpbHRlcignZXhwbGFpbiAoYnVmZmVycywgZm9ybWF0IGpzb24pIHNlbGVjdCAqIGZy b20gaW50OF90YmwgaTgnCiAgICAgICAgIkFsaWFzIjogImk4IiwgICAgICAgICAgICAgICsK ICAgICAgICAiU3RhcnR1cCBDb3N0IjogTi5OLCAgICAgICAgKwogICAgICAgICJUb3RhbCBD b3N0IjogTi5OLCAgICAgICAgICArCi0gICAgICAgIlBsYW4gUm93cyI6IE4sICAgICAgICAg ICAgICsKKyAgICAgICAiUGxhbiBSb3dzIjogTi5OLCAgICAgICAgICAgKwogICAgICAgICJQ bGFuIFdpZHRoIjogTiwgICAgICAgICAgICArCiAgICAgICAgIkRpc2FibGVkIjogZmFsc2Us ICAgICAgICAgICsKICAgICAgICAiU2hhcmVkIEhpdCBCbG9ja3MiOiBOLCAgICAgKwpAQCAt MjQ3LDM1ICsyNDcsMzUgQEAgc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChidWZm ZXJzLCBmb3JtYXQganNvbikgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcKIHNlbGVjdCBl eHBsYWluX2ZpbHRlcignZXhwbGFpbiB2ZXJib3NlIHNlbGVjdCBzdW0odW5pcXVlMSkgb3Zl ciB3LCBzdW0odW5pcXVlMikgb3ZlciAodyBvcmRlciBieSBodW5kcmVkKSwgc3VtKHRlbnRo b3VzKSBvdmVyICh3IG9yZGVyIGJ5IGh1bmRyZWQpIGZyb20gdGVuazEgd2luZG93IHcgYXMg KHBhcnRpdGlvbiBieSB0ZW4pJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGV4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCi0gV2luZG93QWdnICAoY29zdD1OLk4uLk4uTiByb3dzPU4gd2lk dGg9TikKKyBXaW5kb3dBZ2cgIChjb3N0PU4uTi4uTi5OIHJvd3M9Ti5OIHdpZHRoPU4pCiAg ICBPdXRwdXQ6IHN1bSh1bmlxdWUxKSBPVkVSIHcsIChzdW0odW5pcXVlMikgT1ZFUiB3MSks IChzdW0odGVudGhvdXMpIE9WRVIgdzEpLCB0ZW4sIGh1bmRyZWQKICAgIFdpbmRvdzogdyBB UyAoUEFSVElUSU9OIEJZIHRlbmsxLnRlbikKLSAgIC0+ICBXaW5kb3dBZ2cgIChjb3N0PU4u Ti4uTi5OIHJvd3M9TiB3aWR0aD1OKQorICAgLT4gIFdpbmRvd0FnZyAgKGNvc3Q9Ti5OLi5O Lk4gcm93cz1OLk4gd2lkdGg9TikKICAgICAgICAgIE91dHB1dDogdGVuLCBodW5kcmVkLCB1 bmlxdWUxLCB1bmlxdWUyLCB0ZW50aG91cywgc3VtKHVuaXF1ZTIpIE9WRVIgdzEsIHN1bSh0 ZW50aG91cykgT1ZFUiB3MQogICAgICAgICAgV2luZG93OiB3MSBBUyAoUEFSVElUSU9OIEJZ IHRlbmsxLnRlbiBPUkRFUiBCWSB0ZW5rMS5odW5kcmVkKQotICAgICAgICAgLT4gIFNvcnQg IChjb3N0PU4uTi4uTi5OIHJvd3M9TiB3aWR0aD1OKQorICAgICAgICAgLT4gIFNvcnQgIChj b3N0PU4uTi4uTi5OIHJvd3M9Ti5OIHdpZHRoPU4pCiAgICAgICAgICAgICAgICBPdXRwdXQ6 IHRlbiwgaHVuZHJlZCwgdW5pcXVlMSwgdW5pcXVlMiwgdGVudGhvdXMKICAgICAgICAgICAg ICAgIFNvcnQgS2V5OiB0ZW5rMS50ZW4sIHRlbmsxLmh1bmRyZWQKLSAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMudGVuazEgIChjb3N0PU4uTi4uTi5OIHJvd3M9TiB3 aWR0aD1OKQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy50ZW5rMSAg KGNvc3Q9Ti5OLi5OLk4gcm93cz1OLk4gd2lkdGg9TikKICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdGVuLCBodW5kcmVkLCB1bmlxdWUxLCB1bmlxdWUyLCB0ZW50aG91cwogKDEx IHJvd3MpCiAKIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiB2ZXJib3NlIHNlbGVj dCBzdW0odW5pcXVlMSkgb3ZlciB3MSwgc3VtKHVuaXF1ZTIpIG92ZXIgKHcxIG9yZGVyIGJ5 IGh1bmRyZWQpLCBzdW0odGVudGhvdXMpIG92ZXIgKHcxIG9yZGVyIGJ5IGh1bmRyZWQgcm93 cyAxMCBwcmVjZWRpbmcpIGZyb20gdGVuazEgd2luZG93IHcxIGFzIChwYXJ0aXRpb24gYnkg dGVuKScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KLSBXaW5kb3dBZ2cgIChjb3N0PU4uTi4uTi5OIHJvd3M9TiB3aWR0aD1OKQorIFdp bmRvd0FnZyAgKGNvc3Q9Ti5OLi5OLk4gcm93cz1OLk4gd2lkdGg9TikKICAgIE91dHB1dDog c3VtKHVuaXF1ZTEpIE9WRVIgdzEsIChzdW0odW5pcXVlMikgT1ZFUiB3MiksIChzdW0odGVu dGhvdXMpIE9WRVIgdzMpLCB0ZW4sIGh1bmRyZWQKICAgIFdpbmRvdzogdzEgQVMgKFBBUlRJ VElPTiBCWSB0ZW5rMS50ZW4pCi0gICAtPiAgV2luZG93QWdnICAoY29zdD1OLk4uLk4uTiBy b3dzPU4gd2lkdGg9TikKKyAgIC0+ICBXaW5kb3dBZ2cgIChjb3N0PU4uTi4uTi5OIHJvd3M9 Ti5OIHdpZHRoPU4pCiAgICAgICAgICBPdXRwdXQ6IHRlbiwgaHVuZHJlZCwgdW5pcXVlMSwg dW5pcXVlMiwgdGVudGhvdXMsIChzdW0odW5pcXVlMikgT1ZFUiB3MiksIHN1bSh0ZW50aG91 cykgT1ZFUiB3MwogICAgICAgICAgV2luZG93OiB3MyBBUyAoUEFSVElUSU9OIEJZIHRlbmsx LnRlbiBPUkRFUiBCWSB0ZW5rMS5odW5kcmVkIFJPV1MgJ04nOjpiaWdpbnQgUFJFQ0VESU5H KQotICAgICAgICAgLT4gIFdpbmRvd0FnZyAgKGNvc3Q9Ti5OLi5OLk4gcm93cz1OIHdpZHRo PU4pCisgICAgICAgICAtPiAgV2luZG93QWdnICAoY29zdD1OLk4uLk4uTiByb3dzPU4uTiB3 aWR0aD1OKQogICAgICAgICAgICAgICAgT3V0cHV0OiB0ZW4sIGh1bmRyZWQsIHVuaXF1ZTEs IHVuaXF1ZTIsIHRlbnRob3VzLCBzdW0odW5pcXVlMikgT1ZFUiB3MgogICAgICAgICAgICAg ICAgV2luZG93OiB3MiBBUyAoUEFSVElUSU9OIEJZIHRlbmsxLnRlbiBPUkRFUiBCWSB0ZW5r MS5odW5kcmVkKQotICAgICAgICAgICAgICAgLT4gIFNvcnQgIChjb3N0PU4uTi4uTi5OIHJv d3M9TiB3aWR0aD1OKQorICAgICAgICAgICAgICAgLT4gIFNvcnQgIChjb3N0PU4uTi4uTi5O IHJvd3M9Ti5OIHdpZHRoPU4pCiAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHRlbiwg aHVuZHJlZCwgdW5pcXVlMSwgdW5pcXVlMiwgdGVudGhvdXMKICAgICAgICAgICAgICAgICAg ICAgIFNvcnQgS2V5OiB0ZW5rMS50ZW4sIHRlbmsxLmh1bmRyZWQKLSAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMudGVuazEgIChjb3N0PU4uTi4uTi5OIHJv d3M9TiB3aWR0aD1OKQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1 YmxpYy50ZW5rMSAgKGNvc3Q9Ti5OLi5OLk4gcm93cz1OLk4gd2lkdGg9TikKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdGVuLCBodW5kcmVkLCB1bmlxdWUxLCB1bmlx dWUyLCB0ZW50aG91cwogKDE0IHJvd3MpCiAKQEAgLTI5NSw3ICsyOTUsNyBAQCBzZWxlY3Qg ZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIGJ1ZmZlcnMsIGZvcm1hdCBqc29u KSBzZWxlY3QgKiBmcm9tIGludAogICAgICAgICJBbGlhcyI6ICJpOCIsICAgICAgICAgICAg ICAgKwogICAgICAgICJTdGFydHVwIENvc3QiOiBOLk4sICAgICAgICAgKwogICAgICAgICJU b3RhbCBDb3N0IjogTi5OLCAgICAgICAgICAgKwotICAgICAgICJQbGFuIFJvd3MiOiBOLCAg ICAgICAgICAgICAgKworICAgICAgICJQbGFuIFJvd3MiOiBOLk4sICAgICAgICAgICAgKwog ICAgICAgICJQbGFuIFdpZHRoIjogTiwgICAgICAgICAgICAgKwogICAgICAgICJBY3R1YWwg U3RhcnR1cCBUaW1lIjogTi5OLCAgKwogICAgICAgICJBY3R1YWwgVG90YWwgVGltZSI6IE4u TiwgICAgKwpAQCAtMzY4LDExICszNjgsMTEgQEAgc2VsZWN0IGV4cGxhaW5fZmlsdGVyX3Rv X2pzb24oJ2V4cGxhaW4gKHNldHRpbmdzLCBmb3JtYXQganNvbikgc2VsZWN0ICogZnJvbSBp bnQKIHJvbGxiYWNrOwogLS0gR0VORVJJQ19QTEFOIG9wdGlvbgogc2VsZWN0IGV4cGxhaW5f ZmlsdGVyKCdleHBsYWluIChnZW5lcmljX3BsYW4pIHNlbGVjdCB1bmlxdWUxIGZyb20gdGVu azEgd2hlcmUgdGhvdXNhbmQgPSAkMScpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBCaXRtYXAgSGVhcCBTY2FuIG9uIHRl bmsxICAoY29zdD1OLk4uLk4uTiByb3dzPU4gd2lkdGg9TikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBleHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJpdG1hcCBI ZWFwIFNjYW4gb24gdGVuazEgIChjb3N0PU4uTi4uTi5OIHJvd3M9Ti5OIHdpZHRoPU4pCiAg ICBSZWNoZWNrIENvbmQ6ICh0aG91c2FuZCA9ICROKQotICAgLT4gIEJpdG1hcCBJbmRleCBT Y2FuIG9uIHRlbmsxX3Rob3VzX3RlbnRob3VzICAoY29zdD1OLk4uLk4uTiByb3dzPU4gd2lk dGg9TikKKyAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV90aG91c190ZW50aG91 cyAgKGNvc3Q9Ti5OLi5OLk4gcm93cz1OLk4gd2lkdGg9TikKICAgICAgICAgIEluZGV4IENv bmQ6ICh0aG91c2FuZCA9ICROKQogKDQgcm93cykKIApAQCAtMzgyLDE2ICszODIsMTYgQEAg RVJST1I6ICBFWFBMQUlOIG9wdGlvbnMgQU5BTFlaRSBhbmQgR0VORVJJQ19QTEFOIGNhbm5v dCBiZSB1c2VkIHRvZ2V0aGVyCiBDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gZXhwbGFp bl9maWx0ZXIodGV4dCkgbGluZSA1IGF0IEZPUiBvdmVyIEVYRUNVVEUgc3RhdGVtZW50CiAt LSBNRU1PUlkgb3B0aW9uCiBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKG1lbW9y eSkgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcpOwotICAgICAgICAgICAgICAgICAgICAg ZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBTZXEgU2NhbiBv biBpbnQ4X3RibCBpOCAgKGNvc3Q9Ti5OLi5OLk4gcm93cz1OIHdpZHRoPU4pCisgICAgICAg ICAgICAgICAgICAgICAgZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBTZXEgU2NhbiBvbiBpbnQ4X3RibCBpOCAgKGNvc3Q9Ti5OLi5OLk4gcm93cz1O Lk4gd2lkdGg9TikKICAgIE1lbW9yeTogdXNlZD1Oa0IgIGFsbG9jYXRlZD1Oa0IKICgyIHJv d3MpCiAKIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAobWVtb3J5LCBhbmFseXpl LCBidWZmZXJzIG9mZikgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcpOwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBsYWluX2ZpbHRlciAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIFNlcSBTY2FuIG9uIGludDhfdGJsIGk4ICAo Y29zdD1OLk4uLk4uTiByb3dzPU4gd2lkdGg9TikgKGFjdHVhbCB0aW1lPU4uTi4uTi5OIHJv d3M9Ti5OIGxvb3BzPU4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBleHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFNlcSBTY2FuIG9uIGludDhfdGJsIGk4ICAoY29zdD1OLk4uLk4uTiByb3dzPU4uTiB3 aWR0aD1OKSAoYWN0dWFsIHRpbWU9Ti5OLi5OLk4gcm93cz1OLk4gbG9vcHM9TikKICAgIE1l bW9yeTogdXNlZD1Oa0IgIGFsbG9jYXRlZD1Oa0IKICBQbGFubmluZyBUaW1lOiBOLk4gbXMK ICBFeGVjdXRpb24gVGltZTogTi5OIG1zCkBAIC00MDgsNyArNDA4LDcgQEAgc2VsZWN0IGV4 cGxhaW5fZmlsdGVyKCdleHBsYWluIChtZW1vcnksIHN1bW1hcnksIGZvcm1hdCB5YW1sKSBz ZWxlY3QgKiBmcm9tIGludDgKICAgICAgQWxpYXM6ICJpOCIgICAgICAgICAgICAgICsKICAg ICAgU3RhcnR1cCBDb3N0OiBOLk4gICAgICAgICsKICAgICAgVG90YWwgQ29zdDogTi5OICAg ICAgICAgICsKLSAgICAgUGxhbiBSb3dzOiBOICAgICAgICAgICAgICsKKyAgICAgUGxhbiBS b3dzOiBOLk4gICAgICAgICAgICsKICAgICAgUGxhbiBXaWR0aDogTiAgICAgICAgICAgICsK ICAgICAgRGlzYWJsZWQ6IGZhbHNlICAgICAgICAgICsKICAgIFBsYW5uaW5nOiAgICAgICAg ICAgICAgICAgICsKQEAgLTQzMCw3ICs0MzAsNyBAQCBzZWxlY3QgZXhwbGFpbl9maWx0ZXIo J2V4cGxhaW4gKG1lbW9yeSwgYW5hbHl6ZSwgZm9ybWF0IGpzb24pIHNlbGVjdCAqIGZyb20g aW50OAogICAgICAgICJBbGlhcyI6ICJpOCIsICAgICAgICAgICAgICArCiAgICAgICAgIlN0 YXJ0dXAgQ29zdCI6IE4uTiwgICAgICAgICsKICAgICAgICAiVG90YWwgQ29zdCI6IE4uTiwg ICAgICAgICAgKwotICAgICAgICJQbGFuIFJvd3MiOiBOLCAgICAgICAgICAgICArCisgICAg ICAgIlBsYW4gUm93cyI6IE4uTiwgICAgICAgICAgICsKICAgICAgICAiUGxhbiBXaWR0aCI6 IE4sICAgICAgICAgICAgKwogICAgICAgICJBY3R1YWwgU3RhcnR1cCBUaW1lIjogTi5OLCAr CiAgICAgICAgIkFjdHVhbCBUb3RhbCBUaW1lIjogTi5OLCAgICsKQEAgLTQ3Miw5ICs0NzIs OSBAQCBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKG1lbW9yeSwgYW5hbHl6ZSwg Zm9ybWF0IGpzb24pIHNlbGVjdCAqIGZyb20gaW50OAogCiBwcmVwYXJlIGludDhfcXVlcnkg YXMgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpODsKIHNlbGVjdCBleHBsYWluX2ZpbHRlcign ZXhwbGFpbiAobWVtb3J5KSBleGVjdXRlIGludDhfcXVlcnknKTsKLSAgICAgICAgICAgICAg ICAgICAgIGV4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gU2Vx IFNjYW4gb24gaW50OF90YmwgaTggIChjb3N0PU4uTi4uTi5OIHJvd3M9TiB3aWR0aD1OKQor ICAgICAgICAgICAgICAgICAgICAgIGV4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gaW50OF90YmwgaTggIChjb3N0PU4uTi4uTi5O IHJvd3M9Ti5OIHdpZHRoPU4pCiAgICBNZW1vcnk6IHVzZWQ9TmtCICBhbGxvY2F0ZWQ9TmtC CiAoMiByb3dzKQogCkBAIC00OTYsMTIgKzQ5NiwxMiBAQCBjcmVhdGUgdGFibGUgZ2VuX3Bh cnRfMgogICBwYXJ0aXRpb24gb2YgZ2VuX3BhcnQgZm9yIHZhbHVlcyBpbiAoMik7CiAtLSBz aG91bGQgc2NhbiBnZW5fcGFydF8xXzEgYW5kIGdlbl9wYXJ0XzFfMiwgYnV0IG5vdCBnZW5f cGFydF8yCiBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGdlbmVyaWNfcGxhbikg c2VsZWN0IGtleTEsIGtleTIgZnJvbSBnZW5fcGFydCB3aGVyZSBrZXkxID0gMSBhbmQga2V5 MiA9ICQxJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBsYWluX2ZpbHRl ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQotIEFwcGVuZCAgKGNvc3Q9Ti5OLi5OLk4gcm93cz1OIHdpZHRoPU4pCi0gICAtPiAgU2Vx IFNjYW4gb24gZ2VuX3BhcnRfMV8xIGdlbl9wYXJ0XzEgIChjb3N0PU4uTi4uTi5OIHJvd3M9 TiB3aWR0aD1OKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxhaW5fZmls dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQXBwZW5kICAoY29zdD1OLk4uLk4uTiByb3dzPU4uTiB3aWR0aD1OKQorICAg LT4gIFNlcSBTY2FuIG9uIGdlbl9wYXJ0XzFfMSBnZW5fcGFydF8xICAoY29zdD1OLk4uLk4u TiByb3dzPU4uTiB3aWR0aD1OKQogICAgICAgICAgRmlsdGVyOiAoKGtleTEgPSBOKSBBTkQg KGtleTIgPSAkTikpCi0gICAtPiAgU2VxIFNjYW4gb24gZ2VuX3BhcnRfMV8yIGdlbl9wYXJ0 XzIgIChjb3N0PU4uTi4uTi5OIHJvd3M9TiB3aWR0aD1OKQorICAgLT4gIFNlcSBTY2FuIG9u IGdlbl9wYXJ0XzFfMiBnZW5fcGFydF8yICAoY29zdD1OLk4uLk4uTiByb3dzPU4uTiB3aWR0 aD1OKQogICAgICAgICAgRmlsdGVyOiAoKGtleTEgPSBOKSBBTkQgKGtleTIgPSAkTikpCiAo NSByb3dzKQogCkBAIC01NjEsNyArNTYxLDcgQEAgc2VsZWN0IGpzb25iX3ByZXR0eSgKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNjaGVtYSI6ICJwdWJsaWMiLCAgICAgICAg ICAgICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpc2FibGVkIjogZmFsc2Us ICAgICAgICAgICAgICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vZGUgVHlw ZSI6ICJTZXEgU2NhbiIsICAgICAgICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IlBsYW4gUm93cyI6IDAsICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIlBsYW4gUm93cyI6IDAuMCwgICAgICAgICAgICAgICsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIlBsYW4gV2lkdGgiOiAwLCAgICAgICAgICAgICAgICsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRvdGFsIENvc3QiOiAwLjAsICAgICAgICAg ICAgICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFjdHVhbCBSb3dzIjogMC4w LCAgICAgICAgICAgICsKQEAgLTYwOCw3ICs2MDgsNyBAQCBzZWxlY3QganNvbmJfcHJldHR5 KAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZW5rMS50ZW50aG91cyIgICAgICAgICAg ICAgICAgICAgKwogICAgICAgICAgICAgICAgICAgICAgXSwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAgICAgICAgICAgIk5vZGUgVHlwZSI6 ICJTb3J0IiwgICAgICAgICAgICAgICAgICAgKwotICAgICAgICAgICAgICAgICAgICAgIlBs YW4gUm93cyI6IDAsICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAg ICAgICAgIlBsYW4gUm93cyI6IDAuMCwgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAg ICAgICAgICAgICAgICAgIlBsYW4gV2lkdGgiOiAwLCAgICAgICAgICAgICAgICAgICAgICAg KwogICAgICAgICAgICAgICAgICAgICAgIlRvdGFsIENvc3QiOiAwLjAsICAgICAgICAgICAg ICAgICAgICAgKwogICAgICAgICAgICAgICAgICAgICAgIkFjdHVhbCBSb3dzIjogMC4wLCAg ICAgICAgICAgICAgICAgICAgKwpAQCAtNjUyLDcgKzY1Miw3IEBAIHNlbGVjdCBqc29uYl9w cmV0dHkoCiAgICAgICAgICAgICAgXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCiAgICAgICAgICAgICAgIkRpc2FibGVkIjogZmFsc2UsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCiAgICAgICAgICAgICAgIk5vZGUgVHlwZSI6ICJH YXRoZXIgTWVyZ2UiLCAgICAgICAgICAgICAgICAgICArCi0gICAgICAgICAgICAgIlBsYW4g Um93cyI6IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAg ICAgIlBsYW4gUm93cyI6IDAuMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCiAg ICAgICAgICAgICAgIlBsYW4gV2lkdGgiOiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCiAgICAgICAgICAgICAgIlRvdGFsIENvc3QiOiAwLjAsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCiAgICAgICAgICAgICAgIkFjdHVhbCBSb3dzIjogMC4wLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCkBAIC03MDMsNyArNzAzLDcgQEAgYXMgJ2JlZ2lu IHJldHVybiBzaW4oJDEpOyBlbmQnOwogc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWlu ICh2ZXJib3NlKSBzZWxlY3QgKiBmcm9tIHQxIHdoZXJlIHBnX3RlbXAubXlzaW4oZjEpIDwg MC41Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxhaW5fZmlsdGVyICAgICAgICAg ICAgICAgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIFNlcSBTY2FuIG9uIHBnX3RlbXAudDEgIChjb3N0 PU4uTi4uTi5OIHJvd3M9TiB3aWR0aD1OKQorIFNlcSBTY2FuIG9uIHBnX3RlbXAudDEgIChj b3N0PU4uTi4uTi5OIHJvd3M9Ti5OIHdpZHRoPU4pCiAgICBPdXRwdXQ6IGYxCiAgICBGaWx0 ZXI6IChwZ190ZW1wLm15c2luKHQxLmYxKSA8ICdOLk4nOjpkb3VibGUgcHJlY2lzaW9uKQog KDMgcm93cykKQEAgLTcxMSw1MyArNzExLDUzIEBAIHNlbGVjdCBleHBsYWluX2ZpbHRlcign ZXhwbGFpbiAodmVyYm9zZSkgc2VsZWN0ICogZnJvbSB0MSB3aGVyZSBwZ190ZW1wLm15c2lu KGYxCiAtLSBUZXN0IGNvbXB1dGVfcXVlcnlfaWQKIHNldCBjb21wdXRlX3F1ZXJ5X2lkID0g b247CiBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKHZlcmJvc2UpIHNlbGVjdCAq IGZyb20gaW50OF90YmwgaTgnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBleHBsYWlu X2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBTZXEgU2Nh biBvbiBwdWJsaWMuaW50OF90YmwgaTggIChjb3N0PU4uTi4uTi5OIHJvd3M9TiB3aWR0aD1O KQorICAgICAgICAgICAgICAgICAgICAgICAgICBleHBsYWluX2ZpbHRlciAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBwdWJsaWMuaW50 OF90YmwgaTggIChjb3N0PU4uTi4uTi5OIHJvd3M9Ti5OIHdpZHRoPU4pCiAgICBPdXRwdXQ6 IHExLCBxMgogIFF1ZXJ5IElkZW50aWZpZXI6IE4KICgzIHJvd3MpCiAKIC0tIFRlc3QgY29t cHV0ZV9xdWVyeV9pZCB3aXRoIHV0aWxpdHkgc3RhdGVtZW50cyBjb250YWluaW5nIHBsYW5u YWJsZSBxdWVyeQogc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluICh2ZXJib3NlKSBk ZWNsYXJlIHRlc3RfY3VyIGN1cnNvciBmb3Igc2VsZWN0ICogZnJvbSBpbnQ4X3RibCcpOwot ICAgICAgICAgICAgICAgICAgICAgICBleHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAg ICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQotIFNlcSBTY2FuIG9uIHB1YmxpYy5pbnQ4X3RibCAgKGNvc3Q9 Ti5OLi5OLk4gcm93cz1OIHdpZHRoPU4pCisgICAgICAgICAgICAgICAgICAgICAgICBleHBs YWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBT Y2FuIG9uIHB1YmxpYy5pbnQ4X3RibCAgKGNvc3Q9Ti5OLi5OLk4gcm93cz1OLk4gd2lkdGg9 TikKICAgIE91dHB1dDogcTEsIHEyCiAgUXVlcnkgSWRlbnRpZmllcjogTgogKDMgcm93cykK IAogc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluICh2ZXJib3NlKSBjcmVhdGUgdGFi bGUgdGVzdF9jdGFzIGFzIHNlbGVjdCAxJyk7Ci0gICAgICAgICAgICAgZXhwbGFpbl9maWx0 ZXIgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCi0gUmVzdWx0ICAoY29zdD1OLk4uLk4uTiByb3dzPU4gd2lkdGg9TikKKyAgICAgICAg ICAgICAgZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0ICAoY29zdD1OLk4uLk4uTiByb3dz PU4uTiB3aWR0aD1OKQogICAgT3V0cHV0OiBOCiAgUXVlcnkgSWRlbnRpZmllcjogTgogKDMg cm93cykKIAogLS0gVGVzdCBTRVJJQUxJWkUgb3B0aW9uCiBzZWxlY3QgZXhwbGFpbl9maWx0 ZXIoJ2V4cGxhaW4gKGFuYWx5emUsYnVmZmVycyBvZmYsc2VyaWFsaXplKSBzZWxlY3QgKiBm cm9tIGludDhfdGJsIGk4Jyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGV4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ci0gU2VxIFNjYW4gb24gaW50OF90YmwgaTggIChjb3N0PU4uTi4uTi5OIHJvd3M9TiB3aWR0 aD1OKSAoYWN0dWFsIHRpbWU9Ti5OLi5OLk4gcm93cz1OLk4gbG9vcHM9TikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxhaW5fZmlsdGVyICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gaW50OF90Ymwg aTggIChjb3N0PU4uTi4uTi5OIHJvd3M9Ti5OIHdpZHRoPU4pIChhY3R1YWwgdGltZT1OLk4u Lk4uTiByb3dzPU4uTiBsb29wcz1OKQogIFBsYW5uaW5nIFRpbWU6IE4uTiBtcwogIFNlcmlh bGl6YXRpb246IHRpbWU9Ti5OIG1zICBvdXRwdXQ9TmtCICBmb3JtYXQ9dGV4dAogIEV4ZWN1 dGlvbiBUaW1lOiBOLk4gbXMKICg0IHJvd3MpCiAKIHNlbGVjdCBleHBsYWluX2ZpbHRlcign ZXhwbGFpbiAoYW5hbHl6ZSxzZXJpYWxpemUgdGV4dCxidWZmZXJzLHRpbWluZyBvZmYpIHNl bGVjdCAqIGZyb20gaW50OF90YmwgaTgnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBleHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIFNlcSBTY2FuIG9uIGludDhf dGJsIGk4ICAoY29zdD1OLk4uLk4uTiByb3dzPU4gd2lkdGg9TikgKGFjdHVhbCByb3dzPU4u TiBsb29wcz1OKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBsYWlu X2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIGludDhfdGJsIGk4ICAoY29z dD1OLk4uLk4uTiByb3dzPU4uTiB3aWR0aD1OKSAoYWN0dWFsIHJvd3M9Ti5OIGxvb3BzPU4p CiAgUGxhbm5pbmcgVGltZTogTi5OIG1zCiAgU2VyaWFsaXphdGlvbjogb3V0cHV0PU5rQiAg Zm9ybWF0PXRleHQKICBFeGVjdXRpb24gVGltZTogTi5OIG1zCiAoNCByb3dzKQogCiBzZWxl Y3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsc2VyaWFsaXplIGJpbmFyeSxi dWZmZXJzLHRpbWluZykgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcpOwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBsYWluX2ZpbHRlciAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIFNlcSBTY2FuIG9uIGludDhfdGJsIGk4ICAo Y29zdD1OLk4uLk4uTiByb3dzPU4gd2lkdGg9TikgKGFjdHVhbCB0aW1lPU4uTi4uTi5OIHJv d3M9Ti5OIGxvb3BzPU4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBleHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFNlcSBTY2FuIG9uIGludDhfdGJsIGk4ICAoY29zdD1OLk4uLk4uTiByb3dzPU4uTiB3 aWR0aD1OKSAoYWN0dWFsIHRpbWU9Ti5OLi5OLk4gcm93cz1OLk4gbG9vcHM9TikKICBQbGFu bmluZyBUaW1lOiBOLk4gbXMKICBTZXJpYWxpemF0aW9uOiB0aW1lPU4uTiBtcyAgb3V0cHV0 PU5rQiAgZm9ybWF0PWJpbmFyeQogIEV4ZWN1dGlvbiBUaW1lOiBOLk4gbXMKQEAgLTc2NSw5 ICs3NjUsOSBAQCBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsc2Vy aWFsaXplIGJpbmFyeSxidWZmZXJzLHRpbWluZykgc2VsZWN0CiAKIC0tIHRoaXMgdGVzdHMg YW4gZWRnZSBjYXNlIHdoZXJlIHdlIGhhdmUgbm8gZGF0YSB0byByZXR1cm4KIHNlbGVjdCBl eHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSxidWZmZXJzIG9mZixzZXJpYWxpemUp IGNyZWF0ZSB0ZW1wIHRhYmxlIGV4cGxhaW5fdGVtcCBhcyBzZWxlY3QgKiBmcm9tIGludDhf dGJsIGk4Jyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4 cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gU2VxIFNj YW4gb24gaW50OF90YmwgaTggIChjb3N0PU4uTi4uTi5OIHJvd3M9TiB3aWR0aD1OKSAoYWN0 dWFsIHRpbWU9Ti5OLi5OLk4gcm93cz1OLk4gbG9vcHM9TikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24gaW50OF90YmwgaTggIChjb3N0 PU4uTi4uTi5OIHJvd3M9Ti5OIHdpZHRoPU4pIChhY3R1YWwgdGltZT1OLk4uLk4uTiByb3dz PU4uTiBsb29wcz1OKQogIFBsYW5uaW5nIFRpbWU6IE4uTiBtcwogIFNlcmlhbGl6YXRpb246 IHRpbWU9Ti5OIG1zICBvdXRwdXQ9TmtCICBmb3JtYXQ9dGV4dAogIEV4ZWN1dGlvbiBUaW1l OiBOLk4gbXMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5oZXJp dC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luaGVyaXQub3V0CmluZGV4IDJh OGJmYmE3NjhlLi5hNjY1NzQ5NmQ1OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9pbmhlcml0Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2lu aGVyaXQub3V0CkBAIC02OTUsMTAgKzY5NSwxMCBAQCBzZWxlY3QgdGFibGVvaWQ6OnJlZ2Ns YXNzOjp0ZXh0IGFzIHJlbG5hbWUsIHBhcnRlZF90YWIuKiBmcm9tIHBhcnRlZF90YWIgb3Jk ZXIgYgogCiAtLSBtb2RpZmllcyBwYXJ0aXRpb24ga2V5LCBidXQgbm8gcm93cyB3aWxsIGFj dHVhbGx5IGJlIHVwZGF0ZWQKIGV4cGxhaW4gdXBkYXRlIHBhcnRlZF90YWIgc2V0IGEgPSAy IHdoZXJlIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gVXBkYXRlIG9uIHBhcnRlZF90YWIgIChjb3N0PTAu MDAuLjAuMDAgcm93cz0wIHdpZHRoPTApCi0gICAtPiAgUmVzdWx0ICAoY29zdD0wLjAwLi4w LjAwIHJvd3M9MCB3aWR0aD0xMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFVwZGF0ZSBvbiBwYXJ0ZWRf dGFiICAoY29zdD0wLjAwLi4wLjAwIHJvd3M9MC4wMCB3aWR0aD0wKQorICAgLT4gIFJlc3Vs dCAgKGNvc3Q9MC4wMC4uMC4wMCByb3dzPTAuMDAgd2lkdGg9MTApCiAgICAgICAgICBPbmUt VGltZSBGaWx0ZXI6IGZhbHNlCiAoMyByb3dzKQogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9q b2luLm91dAppbmRleCAxNGRhNTcwODQ1MS4uMjVhZTlmNGU3MTQgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9qb2luLm91dApAQCAtMjQyMiw4ICsyNDIyLDggQEAgZnJvbSBpbnQ0X3Ri bCB0MSwgaW50NF90YmwgdDIKICAgbGVmdCBqb2luIGludDRfdGJsIHQzIG9uIHQzLmYxID4g MAogICBsZWZ0IGpvaW4gaW50NF90YmwgdDQgb24gdDMuZjEgPiAxCiB3aGVyZSB0NC5mMSBp cyBudWxsOwotICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogIE5lc3RlZCBMb29wCiAgICAtPiAgTmVzdGVkIExvb3AgTGVmdCBKb2luCiAg ICAgICAgICBGaWx0ZXI6ICh0NC5mMSBJUyBOVUxMKQpAQCAtMjQzMywxMCArMjQzMyw5IEBA IHdoZXJlIHQ0LmYxIGlzIG51bGw7CiAgICAgICAgICAgICAgICAgICAgICBKb2luIEZpbHRl cjogKHQzLmYxID4gMSkKICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBp bnQ0X3RibCB0MwogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoZjEgPiAw KQotICAgICAgICAgICAgICAgICAgICAgLT4gIE1hdGVyaWFsaXplCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gaW50NF90YmwgdDQKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBpbnQ0X3RibCB0NAogICAgLT4gIFNlcSBTY2Fu IG9uIGludDRfdGJsIHQxCi0oMTIgcm93cykKKygxMSByb3dzKQogCiBzZWxlY3QgdDEuZjEK IGZyb20gaW50NF90YmwgdDEsIGludDRfdGJsIHQyCkBAIC0yNTczLDExICsyNTcyLDEwIEBA IHdoZXJlIHQxLmYxID0gY29hbGVzY2UodDIuZjEsIDEpOwogICAgICAgICAgICAgICAgLT4g IE1hdGVyaWFsaXplCiAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gaW50 NF90YmwgdDIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKGYxID4gMSkK LSAgICAgICAgIC0+ICBNYXRlcmlhbGl6ZQotICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIGludDRfdGJsIHQzCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gaW50NF90YmwgdDMK ICAgIC0+ICBNYXRlcmlhbGl6ZQogICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGludDRfdGJs IHQ0Ci0oMTQgcm93cykKKygxMyByb3dzKQogCiBleHBsYWluIChjb3N0cyBvZmYpCiBzZWxl Y3QgKiBmcm9tIGludDRfdGJsIHQxCkBAIC0zNzQwLDEwICszNzM4LDkgQEAgd2hlcmUgaTQx LmYxID4gMDsKICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBpbnQ4X3RibCBpODEK ICAgICAgICAgICAgICAgIC0+ICBNYXRlcmlhbGl6ZQogICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIGludDRfdGJsIGk0MgotICAgLT4gIE1hdGVyaWFsaXplCi0gICAg ICAgICAtPiAgU2VxIFNjYW4gb24gaW50NF90YmwgaTQzCi0gICAgICAgICAgICAgICBGaWx0 ZXI6IChmMSA+IDEpCi0oMTIgcm93cykKKyAgIC0+ICBTZXEgU2NhbiBvbiBpbnQ0X3RibCBp NDMKKyAgICAgICAgIEZpbHRlcjogKGYxID4gMSkKKygxMSByb3dzKQogCiBzZWxlY3QgKiBm cm9tCiAgIGludDRfdGJsIGFzIGk0MSwKQEAgLTQzMzIsNiArNDMyOSwxMyBAQCBzZWxlY3Qg KiBmcm9tIHRlbmsxIGEgam9pbiB0ZW5rMSBiIG9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgTmVzdGVkIExvb3AKICAgIEpvaW4gRmlsdGVyOiAo KChhLnVuaXF1ZTEgPSAxKSBBTkQgKGIudW5pcXVlMSA9IDIpKSBPUiAoKGEudW5pcXVlMiA9 IDMpIEFORCAoYi5odW5kcmVkID0gNCkpKQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24g dGVuazEgYQorICAgICAgICAgUmVjaGVjayBDb25kOiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5p cXVlMiA9IDMpKQorICAgICAgICAgLT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAg Qml0bWFwIEluZGV4IFNjYW4gb24gdGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAg ICAgSW5kZXggQ29uZDogKHVuaXF1ZTEgPSAxKQorICAgICAgICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTIKKyAgICAgICAgICAgICAgICAgICAgIElu ZGV4IENvbmQ6ICh1bmlxdWUyID0gMykKICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRl bmsxIGIKICAgICAgICAgIFJlY2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMikgT1IgKGh1bmRy ZWQgPSA0KSkKICAgICAgICAgIC0+ICBCaXRtYXBPcgpAQCAtNDMzOSwxNSArNDM0Myw3IEBA IHNlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsxIGIgb24KICAgICAgICAgICAgICAg ICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMikKICAgICAgICAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV9odW5kcmVkCiAgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAoaHVuZHJlZCA9IDQpCi0gICAtPiAgTWF0ZXJpYWxpemUKLSAgICAg ICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlbmsxIGEKLSAgICAgICAgICAgICAgIFJl Y2hlY2sgQ29uZDogKCh1bmlxdWUxID0gMSkgT1IgKHVuaXF1ZTIgPSAzKSkKLSAgICAgICAg ICAgICAgIC0+ICBCaXRtYXBPcgotICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJ bmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTEKLSAgICAgICAgICAgICAgICAgICAgICAgICAg IEluZGV4IENvbmQ6ICh1bmlxdWUxID0gMSkKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiB0ZW5rMV91bmlxdWUyCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiA9IDMpCi0oMTcgcm93cykKKygxNiByb3dz KQogCiBleHBsYWluIChjb3N0cyBvZmYpCiBzZWxlY3QgKiBmcm9tIHRlbmsxIGEgam9pbiB0 ZW5rMSBiIG9uCkBAIC00MzU2LDE3ICs0MzUyLDE2IEBAIHNlbGVjdCAqIGZyb20gdGVuazEg YSBqb2luIHRlbmsxIGIgb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogIE5lc3RlZCBMb29wCiAgICBKb2luIEZpbHRlcjogKCgoYS51bmlxdWUxID0gMSkg QU5EIChiLnVuaXF1ZTEgPSAyKSkgT1IgKChhLnVuaXF1ZTIgPSAzKSBBTkQgKGIudGVuID0g NCkpKQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEgYQorICAgICAgICAgUmVj aGVjayBDb25kOiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9IDMpKQorICAgICAgICAg LT4gIEJpdG1hcE9yCisgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g dGVuazFfdW5pcXVlMQorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1 ZTEgPSAxKQorICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHRlbmsx X3VuaXF1ZTIKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0g MykKICAgIC0+ICBTZXEgU2NhbiBvbiB0ZW5rMSBiCiAgICAgICAgICBGaWx0ZXI6ICgodW5p cXVlMSA9IDIpIE9SICh0ZW4gPSA0KSkKLSAgIC0+ICBNYXRlcmlhbGl6ZQotICAgICAgICAg LT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdGVuazEgYQotICAgICAgICAgICAgICAgUmVjaGVj ayBDb25kOiAoKHVuaXF1ZTEgPSAxKSBPUiAodW5pcXVlMiA9IDMpKQotICAgICAgICAgICAg ICAgLT4gIEJpdG1hcE9yCi0gICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gdGVuazFfdW5pcXVlMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKHVuaXF1ZTEgPSAxKQotICAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1h cCBJbmRleCBTY2FuIG9uIHRlbmsxX3VuaXF1ZTIKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyID0gMykKLSgxMiByb3dzKQorKDExIHJvd3MpCiAK IGV4cGxhaW4gKGNvc3RzIG9mZikKIHNlbGVjdCAqIGZyb20gdGVuazEgYSBqb2luIHRlbmsx IGIgb24KQEAgLTUxMTAsMTMgKzUxMDUsMTIgQEAgc2VsZWN0IDEgZnJvbQogICAgICAgICAg ICAgICAgICAgICAgSm9pbiBGaWx0ZXI6IChpNC5mMSBJUyBOT1QgTlVMTCkKICAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBpbnQ0X3RibCBpNAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgRmlsdGVyOiAoMiA8IGYxKQotICAgICAgICAgICAgICAgICAgICAg LT4gIE1hdGVyaWFsaXplCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gaW50OF90YmwgaTgKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBpbnQ4X3RibCBpOAogICAgICAgICAgICAgICAgLT4gIFJlc3VsdAogICAgICAgICAgICAg ICAgICAgICAgT25lLVRpbWUgRmlsdGVyOiBmYWxzZQogICAgICAgICAgLT4gIE1hdGVyaWFs aXplCiAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gaW50NF90YmwgaTQyCi0oMTYg cm93cykKKygxNSByb3dzKQogCiAtLQogLS0gdGVzdCBmb3IgYXBwcm9wcmlhdGUgam9pbiBv cmRlciBpbiB0aGUgcHJlc2VuY2Ugb2YgbGF0ZXJhbCByZWZlcmVuY2VzCkBAIC02MTU3LDE4 ICs2MTUxLDE3IEBAIEZST00gaW50NF90YmwKICAgICAgSk9JTiAoKFNFTEVDVCA0MiBBUyB4 IEZST00gaW50OF90YmwgTEVGVCBKT0lOIGlubmVydGFiIE9OIHExID0gaWQpIEFTIHNzMQog ICAgICAgICAgICBSSUdIVCBKT0lOIHRlbmsxIE9OIE5VTEwpCiAgICAgICAgIE9OIHRlbmsx LnVuaXF1ZTEgPSBzczEueCBPUiB0ZW5rMS51bmlxdWUyID0gc3MxLng7Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogIE5lc3RlZCBMb29wCisgICAtPiAgTmVzdGVkIExvb3AgTGVmdCBKb2lu CisgICAgICAgICBKb2luIEZpbHRlcjogTlVMTDo6Ym9vbGVhbgorICAgICAgICAgRmlsdGVy OiAoKHRlbmsxLnVuaXF1ZTEgPSAoNDIpKSBPUiAodGVuazEudW5pcXVlMiA9ICg0MikpKQor ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHRlbmsxCisgICAgICAgICAtPiAgUmVzdWx0Cisg ICAgICAgICAgICAgICBPbmUtVGltZSBGaWx0ZXI6IGZhbHNlCiAgICAtPiAgU2VxIFNjYW4g b24gaW50NF90YmwKLSAgIC0+ICBNYXRlcmlhbGl6ZQotICAgICAgICAgLT4gIE5lc3RlZCBM b29wIExlZnQgSm9pbgotICAgICAgICAgICAgICAgSm9pbiBGaWx0ZXI6IE5VTEw6OmJvb2xl YW4KLSAgICAgICAgICAgICAgIEZpbHRlcjogKCh0ZW5rMS51bmlxdWUxID0gKDQyKSkgT1Ig KHRlbmsxLnVuaXF1ZTIgPSAoNDIpKSkKLSAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biB0ZW5rMQotICAgICAgICAgICAgICAgLT4gIFJlc3VsdAotICAgICAgICAgICAgICAgICAg ICAgT25lLVRpbWUgRmlsdGVyOiBmYWxzZQotKDkgcm93cykKKyg4IHJvd3MpCiAKIHJvbGxi YWNrOwogLS0gYW5vdGhlciBqb2luIHJlbW92YWwgYnVnOiB3ZSBtdXN0IGNsZWFuIHVwIGNv cnJlY3RseSB3aGVuIHJlbW92aW5nIGEgUEhWCkBAIC02NTY2LDI4ICs2NTU5LDI2IEBAIHdo ZXJlIHQxLmEgPSB0Mi5hOwogZXhwbGFpbiAoY29zdHMgb2ZmKQogc2VsZWN0ICogZnJvbSBz aiB4IGpvaW4gc2ogeSBvbiB4LmEgPSB5LmEKIGxlZnQgam9pbiBpbnQ4X3RibCB6IG9uIHgu YSA9IHoucTE7Ci0gICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBOZXN0 ZWQgTG9vcCBMZWZ0IEpvaW4KICAgIEpvaW4gRmlsdGVyOiAoeS5hID0gei5xMSkKICAgIC0+ ICBTZXEgU2NhbiBvbiBzaiB5CiAgICAgICAgICBGaWx0ZXI6IChhIElTIE5PVCBOVUxMKQot ICAgLT4gIE1hdGVyaWFsaXplCi0gICAgICAgICAtPiAgU2VxIFNjYW4gb24gaW50OF90Ymwg egotKDYgcm93cykKKyAgIC0+ICBTZXEgU2NhbiBvbiBpbnQ4X3RibCB6CisoNSByb3dzKQog CiBleHBsYWluIChjb3N0cyBvZmYpCiBzZWxlY3QgKiBmcm9tIHNqIHggam9pbiBzaiB5IG9u IHguYSA9IHkuYQogbGVmdCBqb2luIGludDhfdGJsIHogb24geS5hID0gei5xMTsKLSAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIE5lc3RlZCBMb29wIExlZnQgSm9p bgogICAgSm9pbiBGaWx0ZXI6ICh5LmEgPSB6LnExKQogICAgLT4gIFNlcSBTY2FuIG9uIHNq IHkKICAgICAgICAgIEZpbHRlcjogKGEgSVMgTk9UIE5VTEwpCi0gICAtPiAgTWF0ZXJpYWxp emUKLSAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBpbnQ4X3RibCB6Ci0oNiByb3dzKQorICAg LT4gIFNlcSBTY2FuIG9uIGludDhfdGJsIHoKKyg1IHJvd3MpCiAKIGV4cGxhaW4gKGNvc3Rz IG9mZikKIHNlbGVjdCAqIGZyb20gKApAQCAtNjYxNCwxNiArNjYwNSwxNSBAQCBsZWZ0IGpv aW4gKHNlbGVjdCBjb2FsZXNjZSh5LnExLCAxKSBmcm9tIGludDhfdGJsIHkKIAlyaWdodCBq b2luIHNqIGoxIGlubmVyIGpvaW4gc2ogajIgb24gajEuYSA9IGoyLmEKIAlvbiB0cnVlKSB6 CiBvbiB0cnVlOwotICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgTmVzdGVkIExvb3AgTGVmdCBKb2luCiAgICAtPiAgUmVz dWx0CiAgICAtPiAgTmVzdGVkIExvb3AgTGVmdCBKb2luCiAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gc2ogajIKICAgICAgICAgICAgICAgIEZpbHRlcjogKGEgSVMgTk9UIE5VTEwpCi0g ICAgICAgICAtPiAgTWF0ZXJpYWxpemUKLSAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBpbnQ4X3RibCB5Ci0oNyByb3dzKQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGludDhf dGJsIHkKKyg2IHJvd3MpCiAKIC0tIFRlc3QgdGhhdCByZWZlcmVuY2VzIHRvIHRoZSByZW1v dmVkIHJlbCBpbiBsYXRlcmFsIHN1YnF1ZXJpZXMgYXJlIHJlcGxhY2VkCiAtLSBjb3JyZWN0 bHkgYWZ0ZXIgam9pbiByZW1vdmFsCkBAIC02OTgwLDMyICs2OTcwLDM2IEBAIHNlbGVjdCBw LmIgZnJvbSBzaiBwIGpvaW4gc2ogcSBvbiBwLmEgPSBxLmEgZ3JvdXAgYnkgcC5iIGhhdmlu ZyBzdW0ocC5hKSA9IDE7CiBleHBsYWluICh2ZXJib3NlLCBjb3N0cyBvZmYpCiBzZWxlY3Qg MSBmcm9tIChzZWxlY3QgeC4qIGZyb20gc2ogeCwgc2ogeSB3aGVyZSB4LmEgPSB5LmEpIHEs CiAgIGxhdGVyYWwgZ2VuZXJhdGVfc2VyaWVzKDEsIHEuYSkgZ3MoaSk7Ci0gICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICBOZXN0ZWQgTG9vcAogICAgT3V0cHV0OiAxCiAgICAtPiAgU2VxIFNjYW4g b24gcHVibGljLnNqIHkKICAgICAgICAgIE91dHB1dDogeS5hLCB5LmIsIHkuYwogICAgICAg ICAgRmlsdGVyOiAoeS5hIElTIE5PVCBOVUxMKQotICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24g cGdfY2F0YWxvZy5nZW5lcmF0ZV9zZXJpZXMgZ3MKLSAgICAgICAgIE91dHB1dDogZ3MuaQot ICAgICAgICAgRnVuY3Rpb24gQ2FsbDogZ2VuZXJhdGVfc2VyaWVzKDEsIHkuYSkKLSg4IHJv d3MpCisgICAtPiAgTWVtb2l6ZQorICAgICAgICAgQ2FjaGUgS2V5OiB5LmEKKyAgICAgICAg IENhY2hlIE1vZGU6IGJpbmFyeQorICAgICAgICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gcGdf Y2F0YWxvZy5nZW5lcmF0ZV9zZXJpZXMgZ3MKKyAgICAgICAgICAgICAgIEZ1bmN0aW9uIENh bGw6IGdlbmVyYXRlX3NlcmllcygxLCB5LmEpCisoMTAgcm93cykKIAogZXhwbGFpbiAodmVy Ym9zZSwgY29zdHMgb2ZmKQogc2VsZWN0IDEgZnJvbSAoc2VsZWN0IHkuKiBmcm9tIHNqIHgs IHNqIHkgd2hlcmUgeC5hID0geS5hKSBxLAogICBsYXRlcmFsIGdlbmVyYXRlX3Nlcmllcygx LCBxLmEpIGdzKGkpOwotICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgTmVzdGVkIExvb3AKICAgIE91 dHB1dDogMQogICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5zaiB5CiAgICAgICAgICBPdXRw dXQ6IHkuYSwgeS5iLCB5LmMKICAgICAgICAgIEZpbHRlcjogKHkuYSBJUyBOT1QgTlVMTCkK LSAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIHBnX2NhdGFsb2cuZ2VuZXJhdGVfc2VyaWVzIGdz Ci0gICAgICAgICBPdXRwdXQ6IGdzLmkKLSAgICAgICAgIEZ1bmN0aW9uIENhbGw6IGdlbmVy YXRlX3NlcmllcygxLCB5LmEpCi0oOCByb3dzKQorICAgLT4gIE1lbW9pemUKKyAgICAgICAg IENhY2hlIEtleTogeS5hCisgICAgICAgICBDYWNoZSBNb2RlOiBiaW5hcnkKKyAgICAgICAg IC0+ICBGdW5jdGlvbiBTY2FuIG9uIHBnX2NhdGFsb2cuZ2VuZXJhdGVfc2VyaWVzIGdzCisg ICAgICAgICAgICAgICBGdW5jdGlvbiBDYWxsOiBnZW5lcmF0ZV9zZXJpZXMoMSwgeS5hKQor KDEwIHJvd3MpCiAKIC0tIFRlc3QgdGhhdCBhIG5vbi1FQy1kZXJpdmVkIGpvaW4gY2xhdXNl IGlzIHByb2Nlc3NlZCBjb3JyZWN0bHkuIFVzZSBhbgogLS0gb3V0ZXIgam9pbiBzbyB0aGF0 IHdlIGNhbid0IGZvcm0gYW4gRUMuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2pvaW5faGFzaC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW5f aGFzaC5vdXQKaW5kZXggNGZjMzRhMGU3MmEuLjI2MmZhNzFlZDhkIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW5faGFzaC5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9qb2luX2hhc2gub3V0CkBAIC01MDgsMTcgKzUwOCwxOCBAQCBz ZXQgbG9jYWwgaGFzaF9tZW1fbXVsdGlwbGllciA9IDEuMDsKIHNldCBsb2NhbCBlbmFibGVf cGFyYWxsZWxfaGFzaCA9IG9uOwogZXhwbGFpbiAoY29zdHMgb2ZmKQogICBzZWxlY3QgY291 bnQoKikgZnJvbSBzaW1wbGUgciBqb2luIGV4dHJlbWVseV9za2V3ZWQgcyB1c2luZyAoaWQp OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gQWdncmVnYXRlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBBZ2dyZWdhdGUKICAgIC0+ICBH YXRoZXIKICAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDogMQotICAgICAgICAgLT4gIFBhcmFs bGVsIEhhc2ggSm9pbgotICAgICAgICAgICAgICAgSGFzaCBDb25kOiAoci5pZCA9IHMuaWQp Ci0gICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gc2ltcGxlIHIKLSAg ICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBIYXNoCi0gICAgICAgICAgICAgICAgICAgICAt PiAgUGFyYWxsZWwgU2VxIFNjYW4gb24gZXh0cmVtZWx5X3NrZXdlZCBzCi0oOCByb3dzKQor ICAgICAgICAgLT4gIFBhcnRpYWwgQWdncmVnYXRlCisgICAgICAgICAgICAgICAtPiAgUGFy YWxsZWwgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6IChyLmlk ID0gcy5pZCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBv biBzaW1wbGUgcgorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcmFsbGVsIEhhc2gKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBleHRy ZW1lbHlfc2tld2VkIHMKKyg5IHJvd3MpCiAKIHNlbGVjdCBjb3VudCgqKSBmcm9tIHNpbXBs ZSByIGpvaW4gZXh0cmVtZWx5X3NrZXdlZCBzIHVzaW5nIChpZCk7CiAgY291bnQgCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21pc2NfZnVuY3Rpb25zLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19mdW5jdGlvbnMub3V0CmluZGV4IGQz ZjVkMTZhNjcyLi42Mjg5ZDNlMDNkMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9taXNjX2Z1bmN0aW9ucy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9taXNjX2Z1bmN0aW9ucy5vdXQKQEAgLTY0NywyNyArNjQ3LDI3IEBAIFNFTEVDVCAq IEZST00gdGVuazEgYSBKT0lOIG15X2dlbl9zZXJpZXMoMSwxMCkgZyBPTiBhLnVuaXF1ZTEg PSBnOwogU0VMRUNUIGV4cGxhaW5fbWFza19jb3N0cygkJAogU0VMRUNUICogRlJPTSBnZW5l cmF0ZV9zZXJpZXMoVElNRVNUQU1QVFogJzIwMjQtMDItMDEnLCBUSU1FU1RBTVBUWiAnMjAy NC0wMy0wMScsIElOVEVSVkFMICcxIGRheScpIGcocyk7JCQsCiB0cnVlLCB0cnVlLCBmYWxz ZSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGFp bl9tYXNrX2Nvc3RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIEZ1bmN0aW9uIFNjYW4g b24gZ2VuZXJhdGVfc2VyaWVzIGcgIChjb3N0PU4uLk4gcm93cz0zMCB3aWR0aD1OKSAoYWN0 dWFsIHJvd3M9MzAuMDAgbG9vcHM9MSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGV4cGxhaW5fbWFza19jb3N0cyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgZyAgKGNvc3Q9Ti4uTiBy b3dzPTMwLjAwIHdpZHRoPU4pIChhY3R1YWwgcm93cz0zMC4wMCBsb29wcz0xKQogKDEgcm93 KQogCiAtLSBBcyBhYm92ZSBidXQgd2l0aCBnZW5lcmF0ZV9zZXJpZXNfdGltZXN0YW1wCiBT RUxFQ1QgZXhwbGFpbl9tYXNrX2Nvc3RzKCQkCiBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3Nl cmllcyhUSU1FU1RBTVAgJzIwMjQtMDItMDEnLCBUSU1FU1RBTVAgJzIwMjQtMDMtMDEnLCBJ TlRFUlZBTCAnMSBkYXknKSBnKHMpOyQkLAogdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUpOwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxhaW5fbWFza19jb3N0 cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRl X3NlcmllcyBnICAoY29zdD1OLi5OIHJvd3M9MzAgd2lkdGg9TikgKGFjdHVhbCByb3dzPTMw LjAwIGxvb3BzPTEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl eHBsYWluX21hc2tfY29zdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZ1bmN0 aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIGcgIChjb3N0PU4uLk4gcm93cz0zMC4wMCB3 aWR0aD1OKSAoYWN0dWFsIHJvd3M9MzAuMDAgbG9vcHM9MSkKICgxIHJvdykKIAogLS0gQXMg YWJvdmUgYnV0IHdpdGggZ2VuZXJhdGVfc2VyaWVzX3RpbWVzdGFtcHR6X2F0X3pvbmUoKQog U0VMRUNUIGV4cGxhaW5fbWFza19jb3N0cygkJAogU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoVElNRVNUQU1QVFogJzIwMjQtMDItMDEnLCBUSU1FU1RBTVBUWiAnMjAyNC0wMy0w MScsIElOVEVSVkFMICcxIGRheScsICdVVEMnKSBnKHMpOyQkLAogdHJ1ZSwgdHJ1ZSwgZmFs c2UsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxh aW5fbWFza19jb3N0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBGdW5jdGlvbiBTY2Fu IG9uIGdlbmVyYXRlX3NlcmllcyBnICAoY29zdD1OLi5OIHJvd3M9MzAgd2lkdGg9TikgKGFj dHVhbCByb3dzPTMwLjAwIGxvb3BzPTEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBleHBsYWluX21hc2tfY29zdHMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIGcgIChjb3N0PU4uLk4g cm93cz0zMC4wMCB3aWR0aD1OKSAoYWN0dWFsIHJvd3M9MzAuMDAgbG9vcHM9MSkKICgxIHJv dykKIAogLS0gRW5zdXJlIHRoZSBlc3RpbWF0ZWQgYW5kIGFjdHVhbCByb3cgY291bnRzIG1h dGNoIHdoZW4gdGhlIHJhbmdlIGlzbid0CkBAIC02NzUsMzYgKzY3NSwzNiBAQCB0cnVlLCB0 cnVlLCBmYWxzZSwgdHJ1ZSk7CiBTRUxFQ1QgZXhwbGFpbl9tYXNrX2Nvc3RzKCQkCiBTRUxF Q1QgKiBGUk9NIGdlbmVyYXRlX3NlcmllcyhUSU1FU1RBTVBUWiAnMjAyNC0wMi0wMScsIFRJ TUVTVEFNUFRaICcyMDI0LTAzLTAxJywgSU5URVJWQUwgJzcgZGF5JykgZyhzKTskJCwKIHRy dWUsIHRydWUsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGV4cGxhaW5fbWFza19jb3N0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBGdW5j dGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBnICAoY29zdD1OLi5OIHJvd3M9NSB3aWR0 aD1OKSAoYWN0dWFsIHJvd3M9NS4wMCBsb29wcz0xKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBleHBsYWluX21hc2tfY29zdHMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIGcgIChjb3N0PU4u Lk4gcm93cz01LjAwIHdpZHRoPU4pIChhY3R1YWwgcm93cz01LjAwIGxvb3BzPTEpCiAoMSBy b3cpCiAKIC0tIEVuc3VyZSB0aGUgZXN0aW1hdGVzIG1hdGNoIHdoZW4gc3RlcCBpcyBkZWNy ZWFzaW5nCiBTRUxFQ1QgZXhwbGFpbl9tYXNrX2Nvc3RzKCQkCiBTRUxFQ1QgKiBGUk9NIGdl bmVyYXRlX3NlcmllcyhUSU1FU1RBTVBUWiAnMjAyNC0wMy0wMScsIFRJTUVTVEFNUFRaICcy MDI0LTAyLTAxJywgSU5URVJWQUwgJy0xIGRheScpIGcocyk7JCQsCiB0cnVlLCB0cnVlLCBm YWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhw bGFpbl9tYXNrX2Nvc3RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIEZ1bmN0aW9uIFNj YW4gb24gZ2VuZXJhdGVfc2VyaWVzIGcgIChjb3N0PU4uLk4gcm93cz0zMCB3aWR0aD1OKSAo YWN0dWFsIHJvd3M9MzAuMDAgbG9vcHM9MSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGV4cGxhaW5fbWFza19jb3N0cyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgZyAgKGNvc3Q9Ti4u TiByb3dzPTMwLjAwIHdpZHRoPU4pIChhY3R1YWwgcm93cz0zMC4wMCBsb29wcz0xKQogKDEg cm93KQogCiAtLSBFbnN1cmUgYW4gZW1wdHkgcmFuZ2UgZXN0aW1hdGVzIDEgcm93CiBTRUxF Q1QgZXhwbGFpbl9tYXNrX2Nvc3RzKCQkCiBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3Nlcmll cyhUSU1FU1RBTVBUWiAnMjAyNC0wMy0wMScsIFRJTUVTVEFNUFRaICcyMDI0LTAyLTAxJywg SU5URVJWQUwgJzEgZGF5JykgZyhzKTskJCwKIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlKTsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxhaW5fbWFza19jb3N0 cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3Nl cmllcyBnICAoY29zdD1OLi5OIHJvd3M9MSB3aWR0aD1OKSAoYWN0dWFsIHJvd3M9MC4wMCBs b29wcz0xKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBsYWlu X21hc2tfY29zdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZ1bmN0aW9uIFNjYW4g b24gZ2VuZXJhdGVfc2VyaWVzIGcgIChjb3N0PU4uLk4gcm93cz0xLjAwIHdpZHRoPU4pIChh Y3R1YWwgcm93cz0wLjAwIGxvb3BzPTEpCiAoMSByb3cpCiAKIC0tIEVuc3VyZSB3ZSBnZXQg dGhlIGRlZmF1bHQgcm93IGVzdGltYXRlIGZvciBpbmZpbml0eSB2YWx1ZXMKIFNFTEVDVCBl eHBsYWluX21hc2tfY29zdHMoJCQKIFNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKFRJ TUVTVEFNUFRaICctaW5maW5pdHknLCBUSU1FU1RBTVBUWiAnaW5maW5pdHknLCBJTlRFUlZB TCAnMSBkYXknKSBnKHMpOyQkLAogZmFsc2UsIHRydWUsIGZhbHNlLCB0cnVlKTsKLSAgICAg ICAgICAgICAgICAgICAgICAgIGV4cGxhaW5fbWFza19jb3N0cyAgICAgICAgICAgICAgICAg ICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3Nl cmllcyBnICAoY29zdD1OLi5OIHJvd3M9MTAwMCB3aWR0aD1OKQorICAgICAgICAgICAgICAg ICAgICAgICAgICBleHBsYWluX21hc2tfY29zdHMgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVz IGcgIChjb3N0PU4uLk4gcm93cz0xMDAwLjAwIHdpZHRoPU4pCiAoMSByb3cpCiAKIC0tIEVu c3VyZSB0aGUgcm93IGVzdGltYXRlIGJlaGF2ZXMgY29ycmVjdGx5IHdoZW4gc3RlcCBzaXpl IGlzIHplcm8uCkBAIC03MTksMzYgKzcxOSwzNiBAQCBFUlJPUjogIHN0ZXAgc2l6ZSBjYW5u b3QgZXF1YWwgemVybwogU0VMRUNUIGV4cGxhaW5fbWFza19jb3N0cygkJAogU0VMRUNUICog RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMS4wLCAyNS4wKSBnKHMpOyQkLAogdHJ1ZSwgdHJ1ZSwg ZmFsc2UsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4 cGxhaW5fbWFza19jb3N0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBGdW5jdGlvbiBT Y2FuIG9uIGdlbmVyYXRlX3NlcmllcyBnICAoY29zdD1OLi5OIHJvd3M9MjUgd2lkdGg9Tikg KGFjdHVhbCByb3dzPTI1LjAwIGxvb3BzPTEpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBleHBsYWluX21hc2tfY29zdHMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIGcgIChjb3N0PU4u Lk4gcm93cz0yNS4wMCB3aWR0aD1OKSAoYWN0dWFsIHJvd3M9MjUuMDAgbG9vcHM9MSkKICgx IHJvdykKIAogLS0gQXMgYWJvdmUgYnV0IHdpdGggbm9uLWRlZmF1bHQgc3RlcAogU0VMRUNU IGV4cGxhaW5fbWFza19jb3N0cygkJAogU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MS4wLCAyNS4wLCAyLjApIGcocyk7JCQsCiB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSk7Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGFpbl9tYXNrX2Nvc3Rz ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVf c2VyaWVzIGcgIChjb3N0PU4uLk4gcm93cz0xMyB3aWR0aD1OKSAoYWN0dWFsIHJvd3M9MTMu MDAgbG9vcHM9MSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4 cGxhaW5fbWFza19jb3N0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRnVuY3Rp b24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgZyAgKGNvc3Q9Ti4uTiByb3dzPTEzLjAwIHdp ZHRoPU4pIChhY3R1YWwgcm93cz0xMy4wMCBsb29wcz0xKQogKDEgcm93KQogCiAtLSBFbnN1 cmUgdGhlIGVzdGltYXRlcyBtYXRjaCB3aGVuIHN0ZXAgaXMgZGVjcmVhc2luZwogU0VMRUNU IGV4cGxhaW5fbWFza19jb3N0cygkJAogU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MjUuMCwgMS4wLCAtMS4wKSBnKHMpOyQkLAogdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUpOwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxhaW5fbWFza19jb3N0 cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRl X3NlcmllcyBnICAoY29zdD1OLi5OIHJvd3M9MjUgd2lkdGg9TikgKGFjdHVhbCByb3dzPTI1 LjAwIGxvb3BzPTEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl eHBsYWluX21hc2tfY29zdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZ1bmN0 aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIGcgIChjb3N0PU4uLk4gcm93cz0yNS4wMCB3 aWR0aD1OKSAoYWN0dWFsIHJvd3M9MjUuMDAgbG9vcHM9MSkKICgxIHJvdykKIAogLS0gRW5z dXJlIGFuIGVtcHR5IHJhbmdlIGVzdGltYXRlcyAxIHJvdwogU0VMRUNUIGV4cGxhaW5fbWFz a19jb3N0cygkJAogU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjUuMCwgMS4wLCAx LjApIGcocyk7JCQsCiB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBleHBsYWluX21hc2tfY29zdHMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0gRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgZyAgKGNvc3Q9 Ti4uTiByb3dzPTEgd2lkdGg9TikgKGFjdHVhbCByb3dzPTAuMDAgbG9vcHM9MSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGFpbl9tYXNrX2Nvc3RzICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3Nl cmllcyBnICAoY29zdD1OLi5OIHJvd3M9MS4wMCB3aWR0aD1OKSAoYWN0dWFsIHJvd3M9MC4w MCBsb29wcz0xKQogKDEgcm93KQogCiAtLSBFbnN1cmUgd2UgZ2V0IHRoZSBkZWZhdWx0IHJv dyBlc3RpbWF0ZSBmb3IgZXJyb3IgY2FzZXMgKGluZmluaXR5L05hTiB2YWx1ZXMKQEAgLTc1 NiwyNSArNzU2LDI1IEBAIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlKTsKIFNFTEVDVCBleHBs YWluX21hc2tfY29zdHMoJCQKIFNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKCctaW5m aW5pdHknOjpOVU1FUklDLCAnaW5maW5pdHknOjpOVU1FUklDLCAxLjApIGcocyk7JCQsCiBm YWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgZXhw bGFpbl9tYXNrX2Nvc3RzICAgICAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQotIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIGcgIChjb3N0PU4uLk4gcm93 cz0xMDAwIHdpZHRoPU4pCisgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxhaW5fbWFz a19jb3N0cyAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg RnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgZyAgKGNvc3Q9Ti4uTiByb3dzPTEw MDAuMDAgd2lkdGg9TikKICgxIHJvdykKIAogU0VMRUNUIGV4cGxhaW5fbWFza19jb3N0cygk JAogU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMS4wLCAyNS4wLCAnTmFOJzo6TlVN RVJJQykgZyhzKTskJCwKIGZhbHNlLCB0cnVlLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAg ICAgICAgICAgICAgICBleHBsYWluX21hc2tfY29zdHMgICAgICAgICAgICAgICAgICAgICAg ICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi0gRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMg ZyAgKGNvc3Q9Ti4uTiByb3dzPTEwMDAgd2lkdGg9TikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgZXhwbGFpbl9tYXNrX2Nvc3RzICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBnICAo Y29zdD1OLi5OIHJvd3M9MTAwMC4wMCB3aWR0aD1OKQogKDEgcm93KQogCiBTRUxFQ1QgZXhw bGFpbl9tYXNrX2Nvc3RzKCQkCiBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3NlcmllcygyNS4w LCAyLjAsIDAuMCkgZyhzKTskJCwKIGZhbHNlLCB0cnVlLCBmYWxzZSwgdHJ1ZSk7Ci0gICAg ICAgICAgICAgICAgICAgICAgICBleHBsYWluX21hc2tfY29zdHMgICAgICAgICAgICAgICAg ICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9z ZXJpZXMgZyAgKGNvc3Q9Ti4uTiByb3dzPTEwMDAgd2lkdGg9TikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgZXhwbGFpbl9tYXNrX2Nvc3RzICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3Nlcmll cyBnICAoY29zdD1OLi5OIHJvd3M9MTAwMC4wMCB3aWR0aD1OKQogKDEgcm93KQogCiAtLSBU ZXN0IGZ1bmN0aW9ucyBmb3IgY29udHJvbCBkYXRhCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9qb2luLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcGFydGl0aW9uX2pvaW4ub3V0CmluZGV4IDYxMDFjOGM3Y2YxLi5mZTk2MGRi OTQ0ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25f am9pbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fam9p bi5vdXQKQEAgLTI4LDggKzI4LDggQEAgQU5BTFlaRSBwcnQyOwogLS0gaW5uZXIgam9pbgog RVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIHQxLmEsIHQxLmMsIHQyLmIsIHQyLmMgRlJP TSBwcnQxIHQxLCBwcnQyIHQyIFdIRVJFIHQxLmEgPSB0Mi5iIEFORCB0MS5iID0gMCBPUkRF UiBCWSB0MS5hLCB0Mi5iOwotICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFNvcnQKICAgIFNvcnQgS2V5 OiB0MS5hCiAgICAtPiAgQXBwZW5kCkBAIC00NSwxMyArNDUsMTIgQEAgU0VMRUNUIHQxLmEs IHQxLmMsIHQyLmIsIHQyLmMgRlJPTSBwcnQxIHQxLCBwcnQyIHQyIFdIRVJFIHQxLmEgPSB0 Mi5iIEFORCB0MS5iID0KICAgICAgICAgICAgICAgIC0+ICBIYXNoCiAgICAgICAgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ0MV9wMiB0MV8yCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBGaWx0ZXI6IChiID0gMCkKLSAgICAgICAgIC0+ICBIYXNoIEpvaW4KLSAg ICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzMuYiA9IHQxXzMuYSkKLSAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwcnQyX3AzIHQyXzMKLSAgICAgICAgICAgICAgIC0+ICBI YXNoCi0gICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ0MV9wMyB0MV8z Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6IChiID0gMCkKLSgyMSByb3dz KQorICAgICAgICAgLT4gIE5lc3RlZCBMb29wCisgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcHJ0MV9wMyB0MV8zCisgICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6IChiID0g MCkKKyAgICAgICAgICAgICAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIGlwcnQyX3AzX2Igb24g cHJ0Ml9wMyB0Ml8zCisgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYiA9IHQx XzMuYSkKKygyMCByb3dzKQogCiBTRUxFQ1QgdDEuYSwgdDEuYywgdDIuYiwgdDIuYyBGUk9N IHBydDEgdDEsIHBydDIgdDIgV0hFUkUgdDEuYSA9IHQyLmIgQU5EIHQxLmIgPSAwIE9SREVS IEJZIHQxLmEsIHQyLmI7CiAgIGEgIHwgIGMgICB8ICBiICB8ICBjICAgCkBAIC04MzQsMTUg KzgzMywxNCBAQCBTRUxFQ1QgdDEuYSwgdDEuYywgdDIuYiwgdDIuYywgdDMuYSArIHQzLmIs IHQzLmMgRlJPTSBwcnQxIHQxLCBwcnQyIHQyLCBwcnQxX2UgdAogICAgICAgICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKCgoYSArIGIpIC8gMikgPSB0Ml8yLmIpCiAgICAgICAgICAt PiAgTmVzdGVkIExvb3AKICAgICAgICAgICAgICAgIEpvaW4gRmlsdGVyOiAodDFfMy5hID0g KCh0M18zLmEgKyB0M18zLmIpIC8gMikpCi0gICAgICAgICAgICAgICAtPiAgSGFzaCBKb2lu Ci0gICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8zLmIgPSB0MV8zLmEpCi0g ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ0Ml9wMyB0Ml8zCi0gICAg ICAgICAgICAgICAgICAgICAtPiAgSGFzaAotICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHBydDFfcDMgdDFfMwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRmlsdGVyOiAoYiA9IDApCisgICAgICAgICAgICAgICAtPiAgTmVzdGVkIExv b3AKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwcnQxX3AzIHQxXzMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKGIgPSAwKQorICAgICAgICAg ICAgICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgaXBydDJfcDNfYiBvbiBwcnQyX3Az IHQyXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChiID0gdDFf My5hKQogICAgICAgICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgaXBydDFfZV9wM19h YjIgb24gcHJ0MV9lX3AzIHQzXzMKICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 ICgoKGEgKyBiKSAvIDIpID0gdDJfMy5iKQotKDMzIHJvd3MpCisoMzIgcm93cykKIAogU0VM RUNUIHQxLmEsIHQxLmMsIHQyLmIsIHQyLmMsIHQzLmEgKyB0My5iLCB0My5jIEZST00gcHJ0 MSB0MSwgcHJ0MiB0MiwgcHJ0MV9lIHQzIFdIRVJFIHQxLmEgPSB0Mi5iIEFORCB0MS5hID0g KHQzLmEgKyB0My5iKS8yIEFORCB0MS5iID0gMCBPUkRFUiBCWSB0MS5hLCB0Mi5iOwogICBh ICB8ICBjICAgfCAgYiAgfCAgYyAgIHwgP2NvbHVtbj8gfCBjIApAQCAtODU1LDggKzg1Myw4 IEBAIFNFTEVDVCB0MS5hLCB0MS5jLCB0Mi5iLCB0Mi5jLCB0My5hICsgdDMuYiwgdDMuYyBG Uk9NIHBydDEgdDEsIHBydDIgdDIsIHBydDFfZSB0CiAKIEVYUExBSU4gKENPU1RTIE9GRikK IFNFTEVDVCB0MS5hLCB0MS5jLCB0Mi5iLCB0Mi5jLCB0My5hICsgdDMuYiwgdDMuYyBGUk9N IChwcnQxIHQxIExFRlQgSk9JTiBwcnQyIHQyIE9OIHQxLmEgPSB0Mi5iKSBMRUZUIEpPSU4g cHJ0MV9lIHQzIE9OICh0MS5hID0gKHQzLmEgKyB0My5iKS8yKSBXSEVSRSB0MS5iID0gMCBP UkRFUiBCWSB0MS5hLCB0Mi5iLCB0My5hICsgdDMuYjsKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBTb3J0CiAgICBTb3J0IEtleTog dDEuYSwgdDIuYiwgKCh0My5hICsgdDMuYikpCiAgICAtPiAgQXBwZW5kCkBAIC04ODAsMTcg Kzg3OCwxNSBAQCBTRUxFQ1QgdDEuYSwgdDEuYywgdDIuYiwgdDIuYywgdDMuYSArIHQzLmIs IHQzLmMgRlJPTSAocHJ0MSB0MSBMRUZUIEpPSU4gcHJ0MiB0MgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIEhhc2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwcnQxX3AyIHQxXzIKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEZpbHRlcjogKGIgPSAwKQotICAgICAgICAgLT4gIEhhc2ggUmln aHQgSm9pbgotICAgICAgICAgICAgICAgSGFzaCBDb25kOiAoKCh0M18zLmEgKyB0M18zLmIp IC8gMikgPSB0MV8zLmEpCi0gICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ0MV9l X3AzIHQzXzMKLSAgICAgICAgICAgICAgIC0+ICBIYXNoCi0gICAgICAgICAgICAgICAgICAg ICAtPiAgSGFzaCBSaWdodCBKb2luCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNo IENvbmQ6ICh0Ml8zLmIgPSB0MV8zLmEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcHJ0Ml9wMyB0Ml8zCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgSGFzaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHBydDFfcDMgdDFfMwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRmlsdGVyOiAoYiA9IDApCi0oMzMgcm93cykKKyAgICAgICAgIC0+ICBOZXN0ZWQg TG9vcCBMZWZ0IEpvaW4KKyAgICAgICAgICAgICAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpv aW4KKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwcnQxX3AzIHQxXzMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKGIgPSAwKQorICAgICAgICAg ICAgICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgaXBydDJfcDNfYiBvbiBwcnQyX3Az IHQyXzMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChiID0gdDFf My5hKQorICAgICAgICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgaXBydDFfZV9wM19h YjIgb24gcHJ0MV9lX3AzIHQzXzMKKyAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 ICgoKGEgKyBiKSAvIDIpID0gdDFfMy5hKQorKDMxIHJvd3MpCiAKIFNFTEVDVCB0MS5hLCB0 MS5jLCB0Mi5iLCB0Mi5jLCB0My5hICsgdDMuYiwgdDMuYyBGUk9NIChwcnQxIHQxIExFRlQg Sk9JTiBwcnQyIHQyIE9OIHQxLmEgPSB0Mi5iKSBMRUZUIEpPSU4gcHJ0MV9lIHQzIE9OICh0 MS5hID0gKHQzLmEgKyB0My5iKS8yKSBXSEVSRSB0MS5iID0gMCBPUkRFUiBCWSB0MS5hLCB0 Mi5iLCB0My5hICsgdDMuYjsKICAgYSAgfCAgYyAgIHwgIGIgIHwgIGMgICB8ID9jb2x1bW4/ IHwgYyAKQEAgLTkxMSw4ICs5MDcsOCBAQCBTRUxFQ1QgdDEuYSwgdDEuYywgdDIuYiwgdDIu YywgdDMuYSArIHQzLmIsIHQzLmMgRlJPTSAocHJ0MSB0MSBMRUZUIEpPSU4gcHJ0MiB0Mgog CiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgdDEuYSwgdDEuYywgdDIuYiwgdDIuYywg dDMuYSArIHQzLmIsIHQzLmMgRlJPTSAocHJ0MSB0MSBMRUZUIEpPSU4gcHJ0MiB0MiBPTiB0 MS5hID0gdDIuYikgUklHSFQgSk9JTiBwcnQxX2UgdDMgT04gKHQxLmEgPSAodDMuYSArIHQz LmIpLzIpIFdIRVJFIHQzLmMgPSAwIE9SREVSIEJZIHQxLmEsIHQyLmIsIHQzLmEgKyB0My5i OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICBTb3J0CiAgICBTb3J0IEtleTogdDEuYSwgdDIuYiwgKCh0My5hICsg dDMuYikpCiAgICAtPiAgQXBwZW5kCkBAIC05MzUsMTUgKzkzMSwxNCBAQCBTRUxFQ1QgdDEu YSwgdDEuYywgdDIuYiwgdDIuYywgdDMuYSArIHQzLmIsIHQzLmMgRlJPTSAocHJ0MSB0MSBM RUZUIEpPSU4gcHJ0MiB0MgogICAgICAgICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcg aXBydDJfcDJfYiBvbiBwcnQyX3AyIHQyXzIKICAgICAgICAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6IChiID0gdDFfMi5hKQogICAgICAgICAgLT4gIE5lc3RlZCBMb29wIExlZnQgSm9p bgotICAgICAgICAgICAgICAgLT4gIEhhc2ggUmlnaHQgSm9pbgotICAgICAgICAgICAgICAg ICAgICAgSGFzaCBDb25kOiAodDFfMy5hID0gKCh0M18zLmEgKyB0M18zLmIpIC8gMikpCi0g ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ0MV9wMyB0MV8zCi0gICAg ICAgICAgICAgICAgICAgICAtPiAgSGFzaAotICAgICAgICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHBydDFfZV9wMyB0M18zCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBGaWx0ZXI6IChjID0gMCkKLSAgICAgICAgICAgICAgIC0+ICBJbmRleCBT Y2FuIHVzaW5nIGlwcnQyX3AzX2Igb24gcHJ0Ml9wMyB0Ml8zCi0gICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAoYiA9IHQxXzMuYSkKLSgzMCByb3dzKQorICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHBydDFfZV9wMyB0M18zCisgICAgICAgICAgICAgICAgICAg ICBGaWx0ZXI6IChjID0gMCkKKyAgICAgICAgICAgICAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0 IEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIGlwcnQx X3AzX2Egb24gcHJ0MV9wMyB0MV8zCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoYSA9ICgodDNfMy5hICsgdDNfMy5iKSAvIDIpKQorICAgICAgICAgICAgICAg ICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgaXBydDJfcDNfYiBvbiBwcnQyX3AzIHQyXzMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChiID0gdDFfMy5hKQor KDI5IHJvd3MpCiAKIFNFTEVDVCB0MS5hLCB0MS5jLCB0Mi5iLCB0Mi5jLCB0My5hICsgdDMu YiwgdDMuYyBGUk9NIChwcnQxIHQxIExFRlQgSk9JTiBwcnQyIHQyIE9OIHQxLmEgPSB0Mi5i KSBSSUdIVCBKT0lOIHBydDFfZSB0MyBPTiAodDEuYSA9ICh0My5hICsgdDMuYikvMikgV0hF UkUgdDMuYyA9IDAgT1JERVIgQlkgdDEuYSwgdDIuYiwgdDMuYSArIHQzLmI7CiAgIGEgIHwg IGMgICB8ICBiICB8ICBjICAgfCA/Y29sdW1uPyB8IGMgCkBAIC0xNzQ5LDggKzE3NDQsOCBA QCBBTFRFUiBUQUJMRSBwcnQyIEFUVEFDSCBQQVJUSVRJT04gcHJ0Ml9wMyBERUZBVUxUOwog QU5BTFlaRSBwcnQyOwogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIHQxLmEsIHQxLmMs IHQyLmIsIHQyLmMgRlJPTSBwcnQxIHQxLCBwcnQyIHQyIFdIRVJFIHQxLmEgPSB0Mi5iIEFO RCB0MS5iID0gMCBPUkRFUiBCWSB0MS5hLCB0Mi5iOwotICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIFNv cnQKICAgIFNvcnQgS2V5OiB0MS5hCiAgICAtPiAgQXBwZW5kCkBAIC0xNzY2LDEzICsxNzYx LDEyIEBAIFNFTEVDVCB0MS5hLCB0MS5jLCB0Mi5iLCB0Mi5jIEZST00gcHJ0MSB0MSwgcHJ0 MiB0MiBXSEVSRSB0MS5hID0gdDIuYiBBTkQgdDEuYiA9CiAgICAgICAgICAgICAgICAtPiAg SGFzaAogICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBydDFfcDIgdDFf MgogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoYiA9IDApCi0gICAgICAg ICAtPiAgSGFzaCBKb2luCi0gICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8zLmIgPSB0 MV8zLmEpCi0gICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ0Ml9wMyB0Ml8zCi0g ICAgICAgICAgICAgICAtPiAgSGFzaAotICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHBydDFfcDMgdDFfMwotICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVy OiAoYiA9IDApCi0oMjEgcm93cykKKyAgICAgICAgIC0+ICBOZXN0ZWQgTG9vcAorICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBydDFfcDMgdDFfMworICAgICAgICAgICAgICAg ICAgICAgRmlsdGVyOiAoYiA9IDApCisgICAgICAgICAgICAgICAtPiAgSW5kZXggU2NhbiB1 c2luZyBpcHJ0Ml9wM19iIG9uIHBydDJfcDMgdDJfMworICAgICAgICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKGIgPSB0MV8zLmEpCisoMjAgcm93cykKIAogLS0gdGVzdCBkZWZhdWx0 IHBhcnRpdGlvbiBiZWhhdmlvciBmb3IgbGlzdAogQUxURVIgVEFCTEUgcGx0MSBERVRBQ0gg UEFSVElUSU9OIHBsdDFfcDM7CkBAIC01MTc1LDIwICs1MTY5LDE4IEBAIFNFTEVDVCB0MS4q LCB0Mi4qIEZST00gYWxwaGEgdDEgSU5ORVIgSk9JTiBiZXRhIHQyIE9OICh0MS5hID0gdDIu YSBBTkQgdDEuYiA9IHQyCiAgU29ydAogICAgU29ydCBLZXk6IHQxLmEsIHQxLmIKICAgIC0+ ICBBcHBlbmQKLSAgICAgICAgIC0+ICBIYXNoIEpvaW4KLSAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKCh0MV8xLmEgPSB0Ml8xLmEpIEFORCAodDFfMS5iID0gdDJfMS5iKSBBTkQgKHQx XzEuYyA9IHQyXzEuYykpCisgICAgICAgICAtPiAgTmVzdGVkIExvb3AKKyAgICAgICAgICAg ICAgIEpvaW4gRmlsdGVyOiAoKHQxXzEuYSA9IHQyXzEuYSkgQU5EICh0MV8xLmIgPSB0Ml8x LmIpIEFORCAodDFfMS5jID0gdDJfMS5jKSkKICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBhbHBoYV9uZWdfcDEgdDFfMQogICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAo KGMgPSBBTlkgKCd7MDAwNCwwMDA5fSc6OnRleHRbXSkpIEFORCAoKChiID49IDEwMCkgQU5E IChiIDwgMTEwKSkgT1IgKChiID49IDIwMCkgQU5EIChiIDwgMjEwKSkpKQotICAgICAgICAg ICAgICAgLT4gIEhhc2gKLSAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBi ZXRhX25lZ19wMSB0Ml8xCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6ICgo KGIgPj0gMTAwKSBBTkQgKGIgPCAxMTApKSBPUiAoKGIgPj0gMjAwKSBBTkQgKGIgPCAyMTAp KSkKLSAgICAgICAgIC0+ICBIYXNoIEpvaW4KLSAgICAgICAgICAgICAgIEhhc2ggQ29uZDog KCh0MV8yLmEgPSB0Ml8yLmEpIEFORCAodDFfMi5iID0gdDJfMi5iKSBBTkQgKHQxXzIuYyA9 IHQyXzIuYykpCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gYmV0YV9uZWdfcDEg dDJfMQorICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoKChiID49IDEwMCkgQU5EIChi IDwgMTEwKSkgT1IgKChiID49IDIwMCkgQU5EIChiIDwgMjEwKSkpCisgICAgICAgICAtPiAg TmVzdGVkIExvb3AKKyAgICAgICAgICAgICAgIEpvaW4gRmlsdGVyOiAoKHQxXzIuYSA9IHQy XzIuYSkgQU5EICh0MV8yLmIgPSB0Ml8yLmIpIEFORCAodDFfMi5jID0gdDJfMi5jKSkKICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBhbHBoYV9uZWdfcDIgdDFfMgogICAgICAg ICAgICAgICAgICAgICAgRmlsdGVyOiAoKGMgPSBBTlkgKCd7MDAwNCwwMDA5fSc6OnRleHRb XSkpIEFORCAoKChiID49IDEwMCkgQU5EIChiIDwgMTEwKSkgT1IgKChiID49IDIwMCkgQU5E IChiIDwgMjEwKSkpKQotICAgICAgICAgICAgICAgLT4gIEhhc2gKLSAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBiZXRhX25lZ19wMiB0Ml8yCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICBGaWx0ZXI6ICgoKGIgPj0gMTAwKSBBTkQgKGIgPCAxMTApKSBPUiAo KGIgPj0gMjAwKSBBTkQgKGIgPCAyMTApKSkKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBiZXRhX25lZ19wMiB0Ml8yCisgICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6ICgo KGIgPj0gMTAwKSBBTkQgKGIgPCAxMTApKSBPUiAoKGIgPj0gMjAwKSBBTkQgKGIgPCAyMTAp KSkKICAgICAgICAgIC0+ICBOZXN0ZWQgTG9vcAogICAgICAgICAgICAgICAgSm9pbiBGaWx0 ZXI6ICgodDFfMy5hID0gdDJfMy5hKSBBTkQgKHQxXzMuYiA9IHQyXzMuYikgQU5EICh0MV8z LmMgPSB0Ml8zLmMpKQogICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGFscGhhX3Bv c19wMiB0MV8zCkBAIC01MjAxLDcgKzUxOTMsNyBAQCBTRUxFQ1QgdDEuKiwgdDIuKiBGUk9N IGFscGhhIHQxIElOTkVSIEpPSU4gYmV0YSB0MiBPTiAodDEuYSA9IHQyLmEgQU5EIHQxLmIg PSB0MgogICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoKGMgPSBBTlkgKCd7MDAwNCww MDA5fSc6OnRleHRbXSkpIEFORCAoKChiID49IDEwMCkgQU5EIChiIDwgMTEwKSkgT1IgKChi ID49IDIwMCkgQU5EIChiIDwgMjEwKSkpKQogICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIGJldGFfcG9zX3AzIHQyXzQKICAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKCgo YiA+PSAxMDApIEFORCAoYiA8IDExMCkpIE9SICgoYiA+PSAyMDApIEFORCAoYiA8IDIxMCkp KQotKDI5IHJvd3MpCisoMjcgcm93cykKIAogU0VMRUNUIHQxLiosIHQyLiogRlJPTSBhbHBo YSB0MSBJTk5FUiBKT0lOIGJldGEgdDIgT04gKHQxLmEgPSB0Mi5hIEFORCB0MS5iID0gdDIu YiBBTkQgdDEuYyA9IHQyLmMpIFdIRVJFICgodDEuYiA+PSAxMDAgQU5EIHQxLmIgPCAxMTAp IE9SICh0MS5iID49IDIwMCBBTkQgdDEuYiA8IDIxMCkpIEFORCAoKHQyLmIgPj0gMTAwIEFO RCB0Mi5iIDwgMTEwKSBPUiAodDIuYiA+PSAyMDAgQU5EIHQyLmIgPCAyMTApKSBBTkQgdDEu YyBJTiAoJzAwMDQnLCAnMDAwOScpIE9SREVSIEJZIHQxLmEsIHQxLmI7CiAgYSAgfCAgYiAg fCAgYyAgIHwgYSAgfCAgYiAgfCAgYyAgIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9zZWxlY3Rfdmlld3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zZWxlY3Rfdmlld3Mub3V0CmluZGV4IDFhZWVkODQ1MmJkLi5iM2MwY2JmMDYwNyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zZWxlY3Rfdmlld3Mub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2VsZWN0X3ZpZXdzLm91dApAQCAtMTQ2 MSwxOCArMTQ2MSwxNyBAQCBFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gbXlf Y3JlZGl0X2NhcmRfdXNhZ2Vfbm9ybWFsCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBO ZXN0ZWQgTG9vcAogICAgSm9pbiBGaWx0ZXI6IChsLmNpZCA9IHIuY2lkKQorICAgLT4gIFN1 YnF1ZXJ5IFNjYW4gb24gbAorICAgICAgICAgRmlsdGVyOiBmX2xlYWsobC5jbnVtKQorICAg ICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgSGFzaCBDb25kOiAocl8xLmNp ZCA9IGxfMS5jaWQpCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gY3JlZGl0X2Nh cmQgcl8xCisgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIGN1c3RvbWVyIGxfMQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgRmlsdGVyOiAobmFtZSA9IENVUlJFTlRfVVNFUikKICAgIC0+ICBTZXEgU2NhbiBvbiBj cmVkaXRfdXNhZ2UgcgogICAgICAgICAgRmlsdGVyOiAoKHltZCA+PSAnMTAtMDEtMjAxMSc6 OmRhdGUpIEFORCAoeW1kIDwgJzExLTAxLTIwMTEnOjpkYXRlKSkKLSAgIC0+ICBNYXRlcmlh bGl6ZQotICAgICAgICAgLT4gIFN1YnF1ZXJ5IFNjYW4gb24gbAotICAgICAgICAgICAgICAg RmlsdGVyOiBmX2xlYWsobC5jbnVtKQotICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgot ICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAocl8xLmNpZCA9IGxfMS5jaWQpCi0g ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gY3JlZGl0X2NhcmQgcl8xCi0g ICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIGN1c3RvbWVyIGxfMQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRmlsdGVyOiAobmFtZSA9IENVUlJFTlRfVVNFUikKLSgxMyByb3dzKQor KDEyIHJvd3MpCiAKIFNFTEVDVCAqIEZST00gbXlfY3JlZGl0X2NhcmRfdXNhZ2Vfc2VjdXJl CiAgICAgICAgV0hFUkUgZl9sZWFrKGNudW0pIEFORCB5bWQgPj0gJzIwMTEtMTAtMDEnIEFO RCB5bWQgPCAnMjAxMS0xMS0wMSc7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3N0YXRzX2V4dC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRz X2V4dC5vdXQKaW5kZXggNjg2ZDhjOTNhYTguLjVmMTcyNzEyMDJhIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzX2V4dC5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9zdGF0c19leHQub3V0CkBAIC0xOCw4ICsxOCw4IEBAIGJlZ2lu CiAgICAgbG9vcAogICAgICAgICBpZiBmaXJzdF9yb3cgdGhlbgogICAgICAgICAgICAgZmly c3Rfcm93IDo9IGZhbHNlOwotICAgICAgICAgICAgdG1wIDo9IHJlZ2V4cF9tYXRjaChsbiwg J3Jvd3M9KFxkKikgLiogcm93cz0oXGQqKScpOwotICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5 IHNlbGVjdCB0bXBbMV06OmludCwgdG1wWzJdOjppbnQ7CisgICAgICAgICAgICB0bXAgOj0g cmVnZXhwX21hdGNoKGxuLCAncm93cz0oXGQrXC5cZHsyfSkgLiogcm93cz0oXGQrXC5cZHsy fSknKTsKKyAgICAgICAgICAgIHJldHVybiBxdWVyeSBzZWxlY3Qgcm91bmQodG1wWzFdOjpu dW1lcmljKTo6aW50LCByb3VuZCh0bXBbMl06Om51bWVyaWMpOjppbnQ7CiAgICAgICAgIGVu ZCBpZjsKICAgICBlbmQgbG9vcDsKIGVuZDsKQEAgLTEzNDUsMTMgKzEzNDUsMTMgQEAgU0VM RUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlv bmFsX2RlcGVuZGVuY2llcyBXSEVSRQogU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRf cm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVuZGVuY2llcyBXSEVSRSAoYSA9 IDEgT1IgYSA9IDUxKSBBTkQgYiA9ICcnMScnJyk7CiAgZXN0aW1hdGVkIHwgYWN0dWFsIAog LS0tLS0tLS0tLS0rLS0tLS0tLS0KLSAgICAgICAgOTkgfCAgICAxMDAKKyAgICAgICAxMDAg fCAgICAxMDAKICgxIHJvdykKIAogU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93 cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVuZGVuY2llcyBXSEVSRSAoYSA9IDEg T1IgYSA9IDUxKSBBTkQgKGIgPSAnJzEnJyBPUiBiID0gJycyJycpJyk7CiAgZXN0aW1hdGVk IHwgYWN0dWFsIAogLS0tLS0tLS0tLS0rLS0tLS0tLS0KLSAgICAgICAgOTkgfCAgICAxMDAK KyAgICAgICAxMDAgfCAgICAxMDAKICgxIHJvdykKIAogU0VMRUNUICogRlJPTSBjaGVja19l c3RpbWF0ZWRfcm93cygnU0VMRUNUICogRlJPTSBmdW5jdGlvbmFsX2RlcGVuZGVuY2llcyBX SEVSRSAoYSA9IDEgT1IgYSA9IDIgT1IgYSA9IDUxIE9SIGEgPSA1MikgQU5EIChiID0gJycx JycgT1IgYiA9ICcnMicnKScpOwpAQCAtMTY4NywxMyArMTY4NywxMyBAQCBTRUxFQ1QgKiBG Uk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdTRUxFQ1QgKiBGUk9NIGZ1bmN0aW9uYWxfZGVw ZW5kZW5jaWVzIFdIRVJFCiBTRUxFQ1QgKiBGUk9NIGNoZWNrX2VzdGltYXRlZF9yb3dzKCdT RUxFQ1QgKiBGUk9NIGZ1bmN0aW9uYWxfZGVwZW5kZW5jaWVzIFdIRVJFICgoYSAqIDIpID0g MiBPUiAoYSAqIDIpID0gMTAyKSBBTkQgdXBwZXIoYikgPSAnJzEnJycpOwogIGVzdGltYXRl ZCB8IGFjdHVhbCAKIC0tLS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgIDk5IHwgICAgMTAw CisgICAgICAgMTAwIHwgICAgMTAwCiAoMSByb3cpCiAKIFNFTEVDVCAqIEZST00gY2hlY2tf ZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMg V0hFUkUgKChhICogMikgPSAyIE9SIChhICogMikgPSAxMDIpIEFORCAodXBwZXIoYikgPSAn JzEnJyBPUiB1cHBlcihiKSA9ICcnMicnKScpOwogIGVzdGltYXRlZCB8IGFjdHVhbCAKIC0t LS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgIDk5IHwgICAgMTAwCisgICAgICAgMTAwIHwg ICAgMTAwCiAoMSByb3cpCiAKIFNFTEVDVCAqIEZST00gY2hlY2tfZXN0aW1hdGVkX3Jvd3Mo J1NFTEVDVCAqIEZST00gZnVuY3Rpb25hbF9kZXBlbmRlbmNpZXMgV0hFUkUgKChhICogMikg PSAyIE9SIChhICogMikgPSA0IE9SIChhICogMikgPSAxMDIgT1IgKGEgKiAyKSA9IDEwNCkg QU5EICh1cHBlcihiKSA9ICcnMScnIE9SIHVwcGVyKGIpID0gJycyJycpJyk7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19leHQuc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvc3RhdHNfZXh0LnNxbAppbmRleCBiNzFhNmNkMDg5Zi4uZjQ5YTdiNmEyMzcg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzX2V4dC5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHNfZXh0LnNxbApAQCAtMjAsOCArMjAsOCBAQCBi ZWdpbgogICAgIGxvb3AKICAgICAgICAgaWYgZmlyc3Rfcm93IHRoZW4KICAgICAgICAgICAg IGZpcnN0X3JvdyA6PSBmYWxzZTsKLSAgICAgICAgICAgIHRtcCA6PSByZWdleHBfbWF0Y2go bG4sICdyb3dzPShcZCopIC4qIHJvd3M9KFxkKiknKTsKLSAgICAgICAgICAgIHJldHVybiBx dWVyeSBzZWxlY3QgdG1wWzFdOjppbnQsIHRtcFsyXTo6aW50OworICAgICAgICAgICAgdG1w IDo9IHJlZ2V4cF9tYXRjaChsbiwgJ3Jvd3M9KFxkK1wuXGR7Mn0pIC4qIHJvd3M9KFxkK1wu XGR7Mn0pJyk7CisgICAgICAgICAgICByZXR1cm4gcXVlcnkgc2VsZWN0IHJvdW5kKHRtcFsx XTo6bnVtZXJpYyk6OmludCwgcm91bmQodG1wWzJdOjpudW1lcmljKTo6aW50OwogICAgICAg ICBlbmQgaWY7CiAgICAgZW5kIGxvb3A7CiBlbmQ7Ci0tIAoyLjM0LjEKCg== --------------WCr4SM1QfxE8JchJjLn3j2ly--