From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31378 invoked by alias); 13 Feb 2017 10:14:03 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 29189 invoked by uid 89); 13 Feb 2017 10:14:02 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=1.3 required=5.0 tests=AWL,BAYES_50,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,SPF_PASS,URIBL_RED autolearn=no version=3.3.2 spammy=H*r:ip*0.0.0.0, 73,6, H*r:0.0.0, 926 X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 13 Feb 2017 10:13:54 +0000 Received: from svr-orw-mbx-06.mgc.mentorg.com ([147.34.90.206]) by relay1.mentorg.com with esmtp id 1cdDdn-00021F-RA from ChungLin_Tang@mentor.com for gcc-patches@gcc.gnu.org; Mon, 13 Feb 2017 02:13:51 -0800 Received: from svr-orw-mbx-04.mgc.mentorg.com (147.34.90.204) by SVR-ORW-MBX-06.mgc.mentorg.com (147.34.90.206) with Microsoft SMTP Server (TLS) id 15.0.1210.3; Mon, 13 Feb 2017 02:13:47 -0800 Received: from [0.0.0.0] (147.34.91.1) by svr-orw-mbx-04.mgc.mentorg.com (147.34.90.204) with Microsoft SMTP Server (TLS) id 15.0.1210.3 via Frontend Transport; Mon, 13 Feb 2017 02:13:45 -0800 From: Chung-Lin Tang Subject: [gomp4] Async related additions to OpenACC runtime library To: gcc-patches CC: Thomas Schwinge Message-ID: <044c4fdb-e659-6029-1da1-4f6bfc05ca9c@mentor.com> Date: Mon, 13 Feb 2017 10:15:00 -0000 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0) Gecko/20100101 Thunderbird/45.7.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------C012FBA3E36DD28C5185506E" X-SW-Source: 2017-02/txt/msg00802.txt.bz2 --------------C012FBA3E36DD28C5185506E Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-length: 2913 This patch adds: // New functions to set/get the current default async queue void acc_set_default_async (int); int acc_get_default_async (void); and _async versions of a few existing API functions: void acc_copyin_async (void *, size_t, int); void acc_create_async (void *, size_t, int); void acc_copyout_async (void *, size_t, int); void acc_delete_async (void *, size_t, int); void acc_update_device_async (void *, size_t, int); void acc_update_self_async (void *, size_t, int); void acc_memcpy_to_device_async (void *, void *, size_t, int); void acc_memcpy_from_device_async (void *, void *, size_t, int); These implement part of the additional requirements for OpenACC 2.5 Tested and committed to gomp-4_0-branch. Chung-Lin 2017-02-13 Chung-Lin Tang libgomp/ * oacc-async.c (acc_get_default_async): New API function. (acc_set_default_async): Likewise. * oacc-init.c (): * oacc-int.h (struct goacc_thread): Add default_async field. * oacc-mem.c (memcpy_tofrom_device): New function, combined from acc_memcpy_to/from_device functions, now with async parameter. (acc_memcpy_to_device): Modify to use memcpy_tofrom_device. (acc_memcpy_from_device): Likewise. (acc_memcpy_to_device_async): New API function. (acc_memcpy_from_device_async): Likewise. (present_create_copy): Add async parameter. (acc_create): Adjust present_create_copy call. (acc_copyin): Likewise. (acc_present_or_create): Likewise. (acc_present_or_copyin): Likewise. (acc_create_async): New API function. (acc_copyin_async): New API function. (delete_copyout): Add async parameter. (acc_delete): Adjust delete_copyout call. (acc_copyout): Likewise. (acc_delete_async): New API function. (acc_copyout_async): Likewise. (update_dev_host): Add async parameter. (acc_update_device): Adjust update_dev_host call. (acc_update_self): Likewise. (acc_update_device_async): New API function. (acc_update_self_async): Likewise. * oacc-plugin.c (GOMP_PLUGIN_acc_thread_default_async): New function. * oacc-plugin.h (GOMP_PLUGIN_acc_thread_default_async): Declare. * openacc.f90 (acc_async_default): Declare. (acc_set_default_async): Likewise. (acc_get_default_async): Likewise. * openacc_lib.h (acc_async_default): Declare. (acc_set_default_async): Likewise. (acc_get_default_async): Likewise. * testsuite/libgomp.oacc-c-c++-common/asyncwait-2.c: New test. * testsuite/libgomp.oacc-c-c++-common/lib-94.c: New test. * testsuite/libgomp.oacc-c-c++-common/lib-95.c: New test. * testsuite/libgomp.oacc-fortran/lib-16.f90: New test. include/ * gomp-constants.h (GOMP_ASYNC_DEFAULT): Define. --------------C012FBA3E36DD28C5185506E Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="x.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="x.diff" Content-length: 77686 SW5kZXg6IGxpYmdvbXAvb2FjYy1hc3luYy5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGxpYmdvbXAvb2FjYy1hc3luYy5jCShyZXZpc2lvbiAyNDUz ODIpCisrKyBsaWJnb21wL29hY2MtYXN5bmMuYwkod29ya2luZyBjb3B5KQpA QCAtMTA1LDMgKzEwNSwyOCBAQCBhY2Nfd2FpdF9hbGxfYXN5bmMgKGludCBh c3luYykKIAogICB0aHItPmRldi0+b3BlbmFjYy5hc3luY193YWl0X2FsbF9h c3luY19mdW5jIChhc3luYyk7CiB9CisKK2ludAorYWNjX2dldF9kZWZhdWx0 X2FzeW5jICh2b2lkKQoreworICBzdHJ1Y3QgZ29hY2NfdGhyZWFkICp0aHIg PSBnb2FjY190aHJlYWQgKCk7CisKKyAgaWYgKCF0aHIgfHwgIXRoci0+ZGV2 KQorICAgIGdvbXBfZmF0YWwgKCJubyBkZXZpY2UgYWN0aXZlIik7CisKKyAg cmV0dXJuIHRoci0+ZGVmYXVsdF9hc3luYzsKK30KKwordm9pZAorYWNjX3Nl dF9kZWZhdWx0X2FzeW5jIChpbnQgYXN5bmMpCit7CisgIGlmIChhc3luYyA8 IGFjY19hc3luY19zeW5jKQorICAgIGdvbXBfZmF0YWwgKCJpbnZhbGlkIGFz eW5jIGFyZ3VtZW50OiAlZCIsIGFzeW5jKTsKKworICBzdHJ1Y3QgZ29hY2Nf dGhyZWFkICp0aHIgPSBnb2FjY190aHJlYWQgKCk7CisKKyAgaWYgKCF0aHIg fHwgIXRoci0+ZGV2KQorICAgIGdvbXBfZmF0YWwgKCJubyBkZXZpY2UgYWN0 aXZlIik7CisKKyAgdGhyLT5kZWZhdWx0X2FzeW5jID0gYXN5bmM7Cit9Cklu ZGV4OiBsaWJnb21wL29hY2MtaW5pdC5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGxpYmdvbXAvb2FjYy1pbml0LmMJKHJldmlzaW9uIDI0NTM4MikK KysrIGxpYmdvbXAvb2FjYy1pbml0LmMJKHdvcmtpbmcgY29weSkKQEAgLTQz Nyw2ICs0MzcsOCBAQCBnb2FjY19hdHRhY2hfaG9zdF90aHJlYWRfdG9fZGV2 aWNlIChpbnQgb3JkKQogICAKICAgdGhyLT50YXJnZXRfdGxzCiAgICAgPSBh Y2NfZGV2LT5vcGVuYWNjLmNyZWF0ZV90aHJlYWRfZGF0YV9mdW5jIChvcmQp OworCisgIHRoci0+ZGVmYXVsdF9hc3luYyA9IGFjY19hc3luY19kZWZhdWx0 OwogICAKICAgYWNjX2Rldi0+b3BlbmFjYy5hc3luY19zZXRfYXN5bmNfZnVu YyAoYWNjX2FzeW5jX3N5bmMpOwogfQpJbmRleDogbGliZ29tcC9vYWNjLWlu dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYmdvbXAvb2FjYy1p bnQuaAkocmV2aXNpb24gMjQ1MzgyKQorKysgbGliZ29tcC9vYWNjLWludC5o CSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw5IEBAIHN0cnVjdCBnb2Fj Y190aHJlYWQKIAogICAvKiBUYXJnZXQtc3BlY2lmaWMgZGF0YSAodXNlZCBi eSBwbHVnaW4pLiAgKi8KICAgdm9pZCAqdGFyZ2V0X3RsczsKKworICAvKiBE ZWZhdWx0IE9wZW5BQ0MgYXN5bmMgcXVldWUgZm9yIGN1cnJlbnQgdGhyZWFk LCBleHBvcnRlZCB0byBwbHVnaW4uICAqLworICBpbnQgZGVmYXVsdF9hc3lu YzsKIH07CiAKICNpZiBkZWZpbmVkIEhBVkVfVExTIHx8IGRlZmluZWQgVVNF X0VNVVRMUwpJbmRleDogbGliZ29tcC9vYWNjLW1lbS5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGxpYmdvbXAvb2FjYy1tZW0uYwkocmV2aXNpb24g MjQ1MzgyKQorKysgbGliZ29tcC9vYWNjLW1lbS5jCSh3b3JraW5nIGNvcHkp CkBAIC0xNTMsOCArMTUzLDkgQEAgYWNjX2ZyZWUgKHZvaWQgKmQpCiAgICAg Z29tcF9mYXRhbCAoImVycm9yIGluIGZyZWVpbmcgZGV2aWNlIG1lbW9yeSBp biAlcyIsIF9fRlVOQ1RJT05fXyk7CiB9CiAKLXZvaWQKLWFjY19tZW1jcHlf dG9fZGV2aWNlICh2b2lkICpkLCB2b2lkICpoLCBzaXplX3QgcykKK3N0YXRp YyB2b2lkCittZW1jcHlfdG9mcm9tX2RldmljZSAoYm9vbCBmcm9tLCB2b2lk ICpkLCB2b2lkICpoLCBzaXplX3QgcywgaW50IGFzeW5jLAorCQkgICAgICBj b25zdCBjaGFyICpsaWJmbm5hbWUpCiB7CiAgIC8qIE5vIG5lZWQgdG8gY2Fs bCBsYXp5IG9wZW4gaGVyZSwgYXMgdGhlIGRldmljZSBwb2ludGVyIG11c3Qg aGF2ZQogICAgICBiZWVuIG9idGFpbmVkIGZyb20gYSByb3V0aW5lIHRoYXQg ZGlkIHRoYXQuICAqLwpAQCAtMTY0LDMxICsxNjUsNDkgQEAgYWNjX2ZyZWUg KHZvaWQgKmQpCiAKICAgaWYgKHRoci0+ZGV2LT5jYXBhYmlsaXRpZXMgJiBH T01QX09GRkxPQURfQ0FQX1NIQVJFRF9NRU0pCiAgICAgewotICAgICAgbWVt bW92ZSAoZCwgaCwgcyk7CisgICAgICBpZiAoZnJvbSkKKwltZW1tb3ZlICho LCBkLCBzKTsKKyAgICAgIGVsc2UKKwltZW1tb3ZlIChkLCBoLCBzKTsKICAg ICAgIHJldHVybjsKICAgICB9CiAKLSAgaWYgKCF0aHItPmRldi0+aG9zdDJk ZXZfZnVuYyAodGhyLT5kZXYtPnRhcmdldF9pZCwgZCwgaCwgcykpCi0gICAg Z29tcF9mYXRhbCAoImVycm9yIGluICVzIiwgX19GVU5DVElPTl9fKTsKKyAg aWYgKGFzeW5jID4gYWNjX2FzeW5jX3N5bmMpCisgICAgdGhyLT5kZXYtPm9w ZW5hY2MuYXN5bmNfc2V0X2FzeW5jX2Z1bmMgKGFzeW5jKTsKKworICBib29s IHJldCA9IChmcm9tCisJICAgICAgPyB0aHItPmRldi0+ZGV2Mmhvc3RfZnVu YyAodGhyLT5kZXYtPnRhcmdldF9pZCwgaCwgZCwgcykKKwkgICAgICA6IHRo ci0+ZGV2LT5ob3N0MmRldl9mdW5jICh0aHItPmRldi0+dGFyZ2V0X2lkLCBk LCBoLCBzKSk7CisKKyAgaWYgKGFzeW5jID4gYWNjX2FzeW5jX3N5bmMpCisg ICAgdGhyLT5kZXYtPm9wZW5hY2MuYXN5bmNfc2V0X2FzeW5jX2Z1bmMgKGFj Y19hc3luY19zeW5jKTsKKworICBpZiAoIXJldCkKKyAgICBnb21wX2ZhdGFs ICgiZXJyb3IgaW4gJXMiLCBsaWJmbm5hbWUpOwogfQogCiB2b2lkCi1hY2Nf bWVtY3B5X2Zyb21fZGV2aWNlICh2b2lkICpoLCB2b2lkICpkLCBzaXplX3Qg cykKK2FjY19tZW1jcHlfdG9fZGV2aWNlICh2b2lkICpkLCB2b2lkICpoLCBz aXplX3QgcykKIHsKLSAgLyogTm8gbmVlZCB0byBjYWxsIGxhenkgb3BlbiBo ZXJlLCBhcyB0aGUgZGV2aWNlIHBvaW50ZXIgbXVzdCBoYXZlCi0gICAgIGJl ZW4gb2J0YWluZWQgZnJvbSBhIHJvdXRpbmUgdGhhdCBkaWQgdGhhdC4gICov Ci0gIHN0cnVjdCBnb2FjY190aHJlYWQgKnRociA9IGdvYWNjX3RocmVhZCAo KTsKKyAgbWVtY3B5X3RvZnJvbV9kZXZpY2UgKGZhbHNlLCBkLCBoLCBzLCBh Y2NfYXN5bmNfc3luYywgX19GVU5DVElPTl9fKTsKK30KIAotICBhc3NlcnQg KHRociAmJiB0aHItPmRldik7Cit2b2lkCithY2NfbWVtY3B5X3RvX2Rldmlj ZV9hc3luYyAodm9pZCAqZCwgdm9pZCAqaCwgc2l6ZV90IHMsIGludCBhc3lu YykKK3sKKyAgbWVtY3B5X3RvZnJvbV9kZXZpY2UgKGZhbHNlLCBkLCBoLCBz LCBhc3luYywgX19GVU5DVElPTl9fKTsKK30KIAotICBpZiAodGhyLT5kZXYt PmNhcGFiaWxpdGllcyAmIEdPTVBfT0ZGTE9BRF9DQVBfU0hBUkVEX01FTSkK LSAgICB7Ci0gICAgICBtZW1tb3ZlIChoLCBkLCBzKTsKLSAgICAgIHJldHVy bjsKLSAgICB9Cit2b2lkCithY2NfbWVtY3B5X2Zyb21fZGV2aWNlICh2b2lk ICpoLCB2b2lkICpkLCBzaXplX3QgcykKK3sKKyAgbWVtY3B5X3RvZnJvbV9k ZXZpY2UgKHRydWUsIGQsIGgsIHMsIGFjY19hc3luY19zeW5jLCBfX0ZVTkNU SU9OX18pOworfQogCi0gIGlmICghdGhyLT5kZXYtPmRldjJob3N0X2Z1bmMg KHRoci0+ZGV2LT50YXJnZXRfaWQsIGgsIGQsIHMpKQotICAgIGdvbXBfZmF0 YWwgKCJlcnJvciBpbiAlcyIsIF9fRlVOQ1RJT05fXyk7Cit2b2lkCithY2Nf bWVtY3B5X2Zyb21fZGV2aWNlX2FzeW5jICh2b2lkICpoLCB2b2lkICpkLCBz aXplX3QgcywgaW50IGFzeW5jKQoreworICBtZW1jcHlfdG9mcm9tX2Rldmlj ZSAodHJ1ZSwgZCwgaCwgcywgYXN5bmMsIF9fRlVOQ1RJT05fXyk7CiB9CiAK IC8qIFJldHVybiB0aGUgZGV2aWNlIHBvaW50ZXIgdGhhdCBjb3JyZXNwb25k cyB0byBob3N0IGRhdGEgSC4gIE9yIE5VTEwKQEAgLTQyNCw3ICs0NDMsNyBA QCBhY2NfdW5tYXBfZGF0YSAodm9pZCAqaCkKICNkZWZpbmUgRkxBR19DT1BZ ICgxIDw8IDIpCiAKIHN0YXRpYyB2b2lkICoKLXByZXNlbnRfY3JlYXRlX2Nv cHkgKHVuc2lnbmVkIGYsIHZvaWQgKmgsIHNpemVfdCBzKQorcHJlc2VudF9j cmVhdGVfY29weSAodW5zaWduZWQgZiwgdm9pZCAqaCwgc2l6ZV90IHMsIGlu dCBhc3luYykKIHsKICAgdm9pZCAqZDsKICAgc3BsYXlfdHJlZV9rZXkgbjsK QEAgLTQ4MSw5ICs1MDAsMTUgQEAgc3RhdGljIHZvaWQgKgogCiAgICAgICBn b21wX211dGV4X3VubG9jayAoJmFjY19kZXYtPmxvY2spOwogCisgICAgICBp ZiAoYXN5bmMgPiBhY2NfYXN5bmNfc3luYykKKwlhY2NfZGV2LT5vcGVuYWNj LmFzeW5jX3NldF9hc3luY19mdW5jIChhc3luYyk7CisKICAgICAgIHRndCA9 IGdvbXBfbWFwX3ZhcnMgKGFjY19kZXYsIG1hcG51bSwgJmhvc3RhZGRycywg TlVMTCwgJnMsICZraW5kcywgdHJ1ZSwKIAkJCSAgIEdPTVBfTUFQX1ZBUlNf T1BFTkFDQyk7CiAKKyAgICAgIGlmIChhc3luYyA+IGFjY19hc3luY19zeW5j KQorCWFjY19kZXYtPm9wZW5hY2MuYXN5bmNfc2V0X2FzeW5jX2Z1bmMgKGFj Y19hc3luY19zeW5jKTsKKwogICAgICAgZ29tcF9tdXRleF9sb2NrICgmYWNj X2Rldi0+bG9jayk7CiAKICAgICAgIGQgPSB0Z3QtPnRvX2ZyZWU7CkBAIC00 OTksMzEgKzUyNCw0NCBAQCBzdGF0aWMgdm9pZCAqCiB2b2lkICoKIGFjY19j cmVhdGUgKHZvaWQgKmgsIHNpemVfdCBzKQogewotICByZXR1cm4gcHJlc2Vu dF9jcmVhdGVfY29weSAoRkxBR19DUkVBVEUsIGgsIHMpOworICByZXR1cm4g cHJlc2VudF9jcmVhdGVfY29weSAoRkxBR19DUkVBVEUsIGgsIHMsIGFjY19h c3luY19zeW5jKTsKIH0KIAordm9pZAorYWNjX2NyZWF0ZV9hc3luYyAodm9p ZCAqaCwgc2l6ZV90IHMsIGludCBhc3luYykKK3sKKyAgcHJlc2VudF9jcmVh dGVfY29weSAoRkxBR19DUkVBVEUsIGgsIHMsIGFzeW5jKTsKK30KKwogdm9p ZCAqCiBhY2NfY29weWluICh2b2lkICpoLCBzaXplX3QgcykKIHsKLSAgcmV0 dXJuIHByZXNlbnRfY3JlYXRlX2NvcHkgKEZMQUdfQ1JFQVRFIHwgRkxBR19D T1BZLCBoLCBzKTsKKyAgcmV0dXJuIHByZXNlbnRfY3JlYXRlX2NvcHkgKEZM QUdfQ1JFQVRFIHwgRkxBR19DT1BZLCBoLCBzLCBhY2NfYXN5bmNfc3luYyk7 CiB9CiAKK3ZvaWQKK2FjY19jb3B5aW5fYXN5bmMgKHZvaWQgKmgsIHNpemVf dCBzLCBpbnQgYXN5bmMpCit7CisgIHByZXNlbnRfY3JlYXRlX2NvcHkgKEZM QUdfQ1JFQVRFIHwgRkxBR19DT1BZLCBoLCBzLCBhc3luYyk7Cit9CisKIHZv aWQgKgogYWNjX3ByZXNlbnRfb3JfY3JlYXRlICh2b2lkICpoLCBzaXplX3Qg cykKIHsKLSAgcmV0dXJuIHByZXNlbnRfY3JlYXRlX2NvcHkgKEZMQUdfUFJF U0VOVCB8IEZMQUdfQ1JFQVRFLCBoLCBzKTsKKyAgcmV0dXJuIHByZXNlbnRf Y3JlYXRlX2NvcHkgKEZMQUdfUFJFU0VOVCB8IEZMQUdfQ1JFQVRFLCBoLCBz LCBhY2NfYXN5bmNfc3luYyk7CiB9CiAKIHZvaWQgKgogYWNjX3ByZXNlbnRf b3JfY29weWluICh2b2lkICpoLCBzaXplX3QgcykKIHsKLSAgcmV0dXJuIHBy ZXNlbnRfY3JlYXRlX2NvcHkgKEZMQUdfUFJFU0VOVCB8IEZMQUdfQ1JFQVRF IHwgRkxBR19DT1BZLCBoLCBzKTsKKyAgcmV0dXJuIHByZXNlbnRfY3JlYXRl X2NvcHkgKEZMQUdfUFJFU0VOVCB8IEZMQUdfQ1JFQVRFIHwgRkxBR19DT1BZ LCBoLCBzLAorCQkJICAgICAgYWNjX2FzeW5jX3N5bmMpOwogfQogCiAjZGVm aW5lIEZMQUdfQ09QWU9VVCAoMSA8PCAwKQogCiBzdGF0aWMgdm9pZAotZGVs ZXRlX2NvcHlvdXQgKHVuc2lnbmVkIGYsIHZvaWQgKmgsIHNpemVfdCBzLCBj b25zdCBjaGFyICpsaWJmbm5hbWUpCitkZWxldGVfY29weW91dCAodW5zaWdu ZWQgZiwgdm9pZCAqaCwgc2l6ZV90IHMsIGludCBhc3luYywgY29uc3QgY2hh ciAqbGliZm5uYW1lKQogewogICBzaXplX3QgaG9zdF9zaXplOwogICBzcGxh eV90cmVlX2tleSBuOwpAQCAtNTYxLDExICs1OTksMTcgQEAgc3RhdGljIHZv aWQKIAogICBnb21wX211dGV4X3VubG9jayAoJmFjY19kZXYtPmxvY2spOwog CisgIGlmIChhc3luYyA+IGFjY19hc3luY19zeW5jKQorICAgIGFjY19kZXYt Pm9wZW5hY2MuYXN5bmNfc2V0X2FzeW5jX2Z1bmMgKGFzeW5jKTsKKwogICBp ZiAoZiAmIEZMQUdfQ09QWU9VVCkKICAgICBhY2NfZGV2LT5kZXYyaG9zdF9m dW5jIChhY2NfZGV2LT50YXJnZXRfaWQsIGgsIGQsIHMpOwogCiAgIGFjY191 bm1hcF9kYXRhIChoKTsKIAorICBpZiAoYXN5bmMgPiBhY2NfYXN5bmNfc3lu YykKKyAgICBhY2NfZGV2LT5vcGVuYWNjLmFzeW5jX3NldF9hc3luY19mdW5j IChhY2NfYXN5bmNfc3luYyk7CisKICAgaWYgKCFhY2NfZGV2LT5mcmVlX2Z1 bmMgKGFjY19kZXYtPnRhcmdldF9pZCwgZCkpCiAgICAgZ29tcF9mYXRhbCAo ImVycm9yIGluIGZyZWVpbmcgZGV2aWNlIG1lbW9yeSBpbiAlcyIsIGxpYmZu bmFtZSk7CiB9CkBAIC01NzMsMTcgKzYxNywyOSBAQCBzdGF0aWMgdm9pZAog dm9pZAogYWNjX2RlbGV0ZSAodm9pZCAqaCAsIHNpemVfdCBzKQogewotICBk ZWxldGVfY29weW91dCAoMCwgaCwgcywgX19GVU5DVElPTl9fKTsKKyAgZGVs ZXRlX2NvcHlvdXQgKDAsIGgsIHMsIGFjY19hc3luY19zeW5jLCBfX0ZVTkNU SU9OX18pOwogfQogCiB2b2lkCithY2NfZGVsZXRlX2FzeW5jICh2b2lkICpo ICwgc2l6ZV90IHMsIGludCBhc3luYykKK3sKKyAgZGVsZXRlX2NvcHlvdXQg KDAsIGgsIHMsIGFzeW5jLCBfX0ZVTkNUSU9OX18pOworfQorCit2b2lkCiBh Y2NfY29weW91dCAodm9pZCAqaCwgc2l6ZV90IHMpCiB7Ci0gIGRlbGV0ZV9j b3B5b3V0IChGTEFHX0NPUFlPVVQsIGgsIHMsIF9fRlVOQ1RJT05fXyk7Cisg IGRlbGV0ZV9jb3B5b3V0IChGTEFHX0NPUFlPVVQsIGgsIHMsIGFjY19hc3lu Y19zeW5jLCBfX0ZVTkNUSU9OX18pOwogfQogCit2b2lkCithY2NfY29weW91 dF9hc3luYyAodm9pZCAqaCwgc2l6ZV90IHMsIGludCBhc3luYykKK3sKKyAg ZGVsZXRlX2NvcHlvdXQgKEZMQUdfQ09QWU9VVCwgaCwgcywgYXN5bmMsIF9f RlVOQ1RJT05fXyk7Cit9CisKIHN0YXRpYyB2b2lkCi11cGRhdGVfZGV2X2hv c3QgKGludCBpc19kZXYsIHZvaWQgKmgsIHNpemVfdCBzKQordXBkYXRlX2Rl dl9ob3N0IChpbnQgaXNfZGV2LCB2b2lkICpoLCBzaXplX3QgcywgaW50IGFz eW5jKQogewogICBzcGxheV90cmVlX2tleSBuOwogICB2b2lkICpkOwpAQCAt NjA5LDI3ICs2NjUsNDUgQEAgc3RhdGljIHZvaWQKICAgZCA9ICh2b2lkICop IChuLT50Z3QtPnRndF9zdGFydCArIG4tPnRndF9vZmZzZXQKIAkJKyAodWlu dHB0cl90KSBoIC0gbi0+aG9zdF9zdGFydCk7CiAKKyAgaWYgKGFzeW5jID4g YWNjX2FzeW5jX3N5bmMpCisgICAgYWNjX2Rldi0+b3BlbmFjYy5hc3luY19z ZXRfYXN5bmNfZnVuYyAoYXN5bmMpOworCiAgIGlmIChpc19kZXYpCiAgICAg YWNjX2Rldi0+aG9zdDJkZXZfZnVuYyAoYWNjX2Rldi0+dGFyZ2V0X2lkLCBk LCBoLCBzKTsKICAgZWxzZQogICAgIGFjY19kZXYtPmRldjJob3N0X2Z1bmMg KGFjY19kZXYtPnRhcmdldF9pZCwgaCwgZCwgcyk7CiAKKyAgaWYgKGFzeW5j ID4gYWNjX2FzeW5jX3N5bmMpCisgICAgYWNjX2Rldi0+b3BlbmFjYy5hc3lu Y19zZXRfYXN5bmNfZnVuYyAoYWNjX2FzeW5jX3N5bmMpOworCiAgIGdvbXBf bXV0ZXhfdW5sb2NrICgmYWNjX2Rldi0+bG9jayk7CiB9CiAKIHZvaWQKIGFj Y191cGRhdGVfZGV2aWNlICh2b2lkICpoLCBzaXplX3QgcykKIHsKLSAgdXBk YXRlX2Rldl9ob3N0ICgxLCBoLCBzKTsKKyAgdXBkYXRlX2Rldl9ob3N0ICgx LCBoLCBzLCBhY2NfYXN5bmNfc3luYyk7CiB9CiAKIHZvaWQKK2FjY191cGRh dGVfZGV2aWNlX2FzeW5jICh2b2lkICpoLCBzaXplX3QgcywgaW50IGFzeW5j KQoreworICB1cGRhdGVfZGV2X2hvc3QgKDEsIGgsIHMsIGFzeW5jKTsKK30K Kwordm9pZAogYWNjX3VwZGF0ZV9zZWxmICh2b2lkICpoLCBzaXplX3QgcykK IHsKLSAgdXBkYXRlX2Rldl9ob3N0ICgwLCBoLCBzKTsKKyAgdXBkYXRlX2Rl dl9ob3N0ICgwLCBoLCBzLCBhY2NfYXN5bmNfc3luYyk7CiB9CiAKIHZvaWQK K2FjY191cGRhdGVfc2VsZl9hc3luYyAodm9pZCAqaCwgc2l6ZV90IHMsIGlu dCBhc3luYykKK3sKKyAgdXBkYXRlX2Rldl9ob3N0ICgwLCBoLCBzLCBhc3lu Yyk7Cit9CisKK3ZvaWQKIGdvbXBfYWNjX2luc2VydF9wb2ludGVyIChzaXpl X3QgbWFwbnVtLCB2b2lkICoqaG9zdGFkZHJzLCBzaXplX3QgKnNpemVzLAog CQkJIHZvaWQgKmtpbmRzKQogewpJbmRleDogbGliZ29tcC9vYWNjLXBsdWdp bi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYmdvbXAvb2FjYy1w bHVnaW4uYwkocmV2aXNpb24gMjQ1MzgyKQorKysgbGliZ29tcC9vYWNjLXBs dWdpbi5jCSh3b3JraW5nIGNvcHkpCkBAIC00OSwzICs0OSwxMiBAQCBHT01Q X1BMVUdJTl9hY2NfdGhyZWFkICh2b2lkKQogICBzdHJ1Y3QgZ29hY2NfdGhy ZWFkICp0aHIgPSBnb2FjY190aHJlYWQgKCk7CiAgIHJldHVybiB0aHIgPyB0 aHItPnRhcmdldF90bHMgOiBOVUxMOwogfQorCisvKiBSZXR1cm4gdGhlIGRl ZmF1bHQgYXN5bmMgbnVtYmVyIGZyb20gdGhlIFRMUyBkYXRhIGZvciB0aGUg Y3VycmVudCB0aHJlYWQuICAqLworCitpbnQKK0dPTVBfUExVR0lOX2FjY190 aHJlYWRfZGVmYXVsdF9hc3luYyAodm9pZCkKK3sKKyAgc3RydWN0IGdvYWNj X3RocmVhZCAqdGhyID0gZ29hY2NfdGhyZWFkICgpOworICByZXR1cm4gdGhy ID8gdGhyLT5kZWZhdWx0X2FzeW5jIDogYWNjX2FzeW5jX2RlZmF1bHQ7Cit9 CkluZGV4OiBsaWJnb21wL29hY2MtcGx1Z2luLmgKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gbGliZ29tcC9vYWNjLXBsdWdpbi5oCShyZXZpc2lvbiAy NDUzODIpCisrKyBsaWJnb21wL29hY2MtcGx1Z2luLmgJKHdvcmtpbmcgY29w eSkKQEAgLTI5LDUgKzI5LDYgQEAKIAogZXh0ZXJuIHZvaWQgR09NUF9QTFVH SU5fYXN5bmNfdW5tYXBfdmFycyAodm9pZCAqLCBpbnQpOwogZXh0ZXJuIHZv aWQgKkdPTVBfUExVR0lOX2FjY190aHJlYWQgKHZvaWQpOworZXh0ZXJuIGlu dCBHT01QX1BMVUdJTl9hY2NfdGhyZWFkX2RlZmF1bHRfYXN5bmMgKHZvaWQp OwogCiAjZW5kaWYKSW5kZXg6IGxpYmdvbXAvb3BlbmFjYy5mOTAKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gbGliZ29tcC9vcGVuYWNjLmY5MAkocmV2 aXNpb24gMjQ1MzgyKQorKysgbGliZ29tcC9vcGVuYWNjLmY5MAkod29ya2lu ZyBjb3B5KQpAQCAtNTEsOSArNTEsMTAgQEAgbW9kdWxlIG9wZW5hY2Nfa2lu ZHMKIAogICBpbnRlZ2VyLCBwYXJhbWV0ZXIgOjogYWNjX2hhbmRsZV9raW5k ID0gaW50MzIKIAotICBwdWJsaWMgOjogYWNjX2FzeW5jX25vdmFsLCBhY2Nf YXN5bmNfc3luYworICBwdWJsaWMgOjogYWNjX2FzeW5jX2RlZmF1bHQsIGFj Y19hc3luY19ub3ZhbCwgYWNjX2FzeW5jX3N5bmMKIAogICAhIEtlZXAgaW4g c3luYyB3aXRoIGluY2x1ZGUvZ29tcC1jb25zdGFudHMuaC4KKyAgaW50ZWdl ciAoYWNjX2hhbmRsZV9raW5kKSwgcGFyYW1ldGVyIDo6IGFjY19hc3luY19k ZWZhdWx0ID0gMAogICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpLCBwYXJh bWV0ZXIgOjogYWNjX2FzeW5jX25vdmFsID0gLTEKICAgaW50ZWdlciAoYWNj X2hhbmRsZV9raW5kKSwgcGFyYW1ldGVyIDo6IGFjY19hc3luY19zeW5jID0g LTIKIApAQCAtOTIsNiArOTMsMTYgQEAgbW9kdWxlIG9wZW5hY2NfaW50ZXJu YWwKICAgICAgIGludGVnZXIgKGFjY19kZXZpY2Vfa2luZCkgZAogICAgIGVu ZCBmdW5jdGlvbgogCisgICAgc3Vicm91dGluZSBhY2Nfc2V0X2RlZmF1bHRf YXN5bmNfaCAoYSkKKyAgICAgIGltcG9ydAorICAgICAgaW50ZWdlciBhCisg ICAgZW5kIHN1YnJvdXRpbmUKKworICAgIGZ1bmN0aW9uIGFjY19nZXRfZGVm YXVsdF9hc3luY19oICgpCisgICAgICBpbXBvcnQKKyAgICAgIGludGVnZXIg YWNjX2dldF9kZWZhdWx0X2FzeW5jX2gKKyAgICBlbmQgZnVuY3Rpb24KKwog ICAgIGZ1bmN0aW9uIGFjY19hc3luY190ZXN0X2ggKGEpCiAgICAgICBsb2dp Y2FsIGFjY19hc3luY190ZXN0X2gKICAgICAgIGludGVnZXIgYQpAQCAtMjk2 LDYgKzMwNywxNTAgQEAgbW9kdWxlIG9wZW5hY2NfaW50ZXJuYWwKICAgICAg IGxvZ2ljYWwgYWNjX2lzX3ByZXNlbnRfYXJyYXlfaAogICAgICAgdHlwZSAo KiksIGRpbWVuc2lvbiAoLi4pLCBjb250aWd1b3VzIDo6IGEKICAgICBlbmQg ZnVuY3Rpb24KKworICAgIHN1YnJvdXRpbmUgYWNjX2NvcHlpbl9hc3luY18z Ml9oIChhLCBsZW4sIGFzeW5jKQorICAgICAgdXNlIGlzb19jX2JpbmRpbmcs IG9ubHk6IGNfaW50MzJfdAorICAgICAgdXNlIG9wZW5hY2Nfa2luZHMsIG9u bHk6IGFjY19oYW5kbGVfa2luZAorICAgICAgIUdDQyQgQVRUUklCVVRFUyBO T19BUkdfQ0hFQ0sgOjogYQorICAgICAgdHlwZSAoKiksIGRpbWVuc2lvbiAo KikgOjogYQorICAgICAgaW50ZWdlciAoY19pbnQzMl90KSBsZW4KKyAgICAg IGludGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMKKyAgICBlbmQgc3Vi cm91dGluZQorCisgICAgc3Vicm91dGluZSBhY2NfY29weWluX2FzeW5jXzY0 X2ggKGEsIGxlbiwgYXN5bmMpCisgICAgICB1c2UgaXNvX2NfYmluZGluZywg b25seTogY19pbnQ2NF90CisgICAgICB1c2Ugb3BlbmFjY19raW5kcywgb25s eTogYWNjX2hhbmRsZV9raW5kCisgICAgICAhR0NDJCBBVFRSSUJVVEVTIE5P X0FSR19DSEVDSyA6OiBhCisgICAgICB0eXBlICgqKSwgZGltZW5zaW9uICgq KSA6OiBhCisgICAgICBpbnRlZ2VyIChjX2ludDY0X3QpIGxlbgorICAgICAg aW50ZWdlciAoYWNjX2hhbmRsZV9raW5kKSBhc3luYworICAgIGVuZCBzdWJy b3V0aW5lCisKKyAgICBzdWJyb3V0aW5lIGFjY19jb3B5aW5fYXN5bmNfYXJy YXlfaCAoYSwgYXN5bmMpCisgICAgICB1c2Ugb3BlbmFjY19raW5kcywgb25s eTogYWNjX2hhbmRsZV9raW5kCisgICAgICB0eXBlICgqKSwgZGltZW5zaW9u ICguLiksIGNvbnRpZ3VvdXMgOjogYQorICAgICAgaW50ZWdlciAoYWNjX2hh bmRsZV9raW5kKSBhc3luYworICAgIGVuZCBzdWJyb3V0aW5lCisKKyAgICBz dWJyb3V0aW5lIGFjY19jcmVhdGVfYXN5bmNfMzJfaCAoYSwgbGVuLCBhc3lu YykKKyAgICAgIHVzZSBpc29fY19iaW5kaW5nLCBvbmx5OiBjX2ludDMyX3QK KyAgICAgIHVzZSBvcGVuYWNjX2tpbmRzLCBvbmx5OiBhY2NfaGFuZGxlX2tp bmQKKyAgICAgICFHQ0MkIEFUVFJJQlVURVMgTk9fQVJHX0NIRUNLIDo6IGEK KyAgICAgIHR5cGUgKCopLCBkaW1lbnNpb24gKCopIDo6IGEKKyAgICAgIGlu dGVnZXIgKGNfaW50MzJfdCkgbGVuCisgICAgICBpbnRlZ2VyIChhY2NfaGFu ZGxlX2tpbmQpIGFzeW5jCisgICAgZW5kIHN1YnJvdXRpbmUKKworICAgIHN1 YnJvdXRpbmUgYWNjX2NyZWF0ZV9hc3luY182NF9oIChhLCBsZW4sIGFzeW5j KQorICAgICAgdXNlIGlzb19jX2JpbmRpbmcsIG9ubHk6IGNfaW50NjRfdAor ICAgICAgdXNlIG9wZW5hY2Nfa2luZHMsIG9ubHk6IGFjY19oYW5kbGVfa2lu ZAorICAgICAgIUdDQyQgQVRUUklCVVRFUyBOT19BUkdfQ0hFQ0sgOjogYQor ICAgICAgdHlwZSAoKiksIGRpbWVuc2lvbiAoKikgOjogYQorICAgICAgaW50 ZWdlciAoY19pbnQ2NF90KSBsZW4KKyAgICAgIGludGVnZXIgKGFjY19oYW5k bGVfa2luZCkgYXN5bmMKKyAgICBlbmQgc3Vicm91dGluZQorCisgICAgc3Vi cm91dGluZSBhY2NfY3JlYXRlX2FzeW5jX2FycmF5X2ggKGEsIGFzeW5jKQor ICAgICAgdXNlIG9wZW5hY2Nfa2luZHMsIG9ubHk6IGFjY19oYW5kbGVfa2lu ZAorICAgICAgdHlwZSAoKiksIGRpbWVuc2lvbiAoLi4pLCBjb250aWd1b3Vz IDo6IGEKKyAgICAgIGludGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMK KyAgICBlbmQgc3Vicm91dGluZQorCisgICAgc3Vicm91dGluZSBhY2NfY29w eW91dF9hc3luY18zMl9oIChhLCBsZW4sIGFzeW5jKQorICAgICAgdXNlIGlz b19jX2JpbmRpbmcsIG9ubHk6IGNfaW50MzJfdAorICAgICAgdXNlIG9wZW5h Y2Nfa2luZHMsIG9ubHk6IGFjY19oYW5kbGVfa2luZAorICAgICAgIUdDQyQg QVRUUklCVVRFUyBOT19BUkdfQ0hFQ0sgOjogYQorICAgICAgdHlwZSAoKiks IGRpbWVuc2lvbiAoKikgOjogYQorICAgICAgaW50ZWdlciAoY19pbnQzMl90 KSBsZW4KKyAgICAgIGludGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMK KyAgICBlbmQgc3Vicm91dGluZQorCisgICAgc3Vicm91dGluZSBhY2NfY29w eW91dF9hc3luY182NF9oIChhLCBsZW4sIGFzeW5jKQorICAgICAgdXNlIGlz b19jX2JpbmRpbmcsIG9ubHk6IGNfaW50NjRfdAorICAgICAgdXNlIG9wZW5h Y2Nfa2luZHMsIG9ubHk6IGFjY19oYW5kbGVfa2luZAorICAgICAgIUdDQyQg QVRUUklCVVRFUyBOT19BUkdfQ0hFQ0sgOjogYQorICAgICAgdHlwZSAoKiks IGRpbWVuc2lvbiAoKikgOjogYQorICAgICAgaW50ZWdlciAoY19pbnQ2NF90 KSBsZW4KKyAgICAgIGludGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMK KyAgICBlbmQgc3Vicm91dGluZQorCisgICAgc3Vicm91dGluZSBhY2NfY29w eW91dF9hc3luY19hcnJheV9oIChhLCBhc3luYykKKyAgICAgIHVzZSBvcGVu YWNjX2tpbmRzLCBvbmx5OiBhY2NfaGFuZGxlX2tpbmQKKyAgICAgIHR5cGUg KCopLCBkaW1lbnNpb24gKC4uKSwgY29udGlndW91cyA6OiBhCisgICAgICBp bnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpIGFzeW5jCisgICAgZW5kIHN1YnJv dXRpbmUKKworICAgIHN1YnJvdXRpbmUgYWNjX2RlbGV0ZV9hc3luY18zMl9o IChhLCBsZW4sIGFzeW5jKQorICAgICAgdXNlIGlzb19jX2JpbmRpbmcsIG9u bHk6IGNfaW50MzJfdAorICAgICAgdXNlIG9wZW5hY2Nfa2luZHMsIG9ubHk6 IGFjY19oYW5kbGVfa2luZAorICAgICAgIUdDQyQgQVRUUklCVVRFUyBOT19B UkdfQ0hFQ0sgOjogYQorICAgICAgdHlwZSAoKiksIGRpbWVuc2lvbiAoKikg OjogYQorICAgICAgaW50ZWdlciAoY19pbnQzMl90KSBsZW4KKyAgICAgIGlu dGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMKKyAgICBlbmQgc3Vicm91 dGluZQorCisgICAgc3Vicm91dGluZSBhY2NfZGVsZXRlX2FzeW5jXzY0X2gg KGEsIGxlbiwgYXN5bmMpCisgICAgICB1c2UgaXNvX2NfYmluZGluZywgb25s eTogY19pbnQ2NF90CisgICAgICB1c2Ugb3BlbmFjY19raW5kcywgb25seTog YWNjX2hhbmRsZV9raW5kCisgICAgICAhR0NDJCBBVFRSSUJVVEVTIE5PX0FS R19DSEVDSyA6OiBhCisgICAgICB0eXBlICgqKSwgZGltZW5zaW9uICgqKSA6 OiBhCisgICAgICBpbnRlZ2VyIChjX2ludDY0X3QpIGxlbgorICAgICAgaW50 ZWdlciAoYWNjX2hhbmRsZV9raW5kKSBhc3luYworICAgIGVuZCBzdWJyb3V0 aW5lCisKKyAgICBzdWJyb3V0aW5lIGFjY19kZWxldGVfYXN5bmNfYXJyYXlf aCAoYSwgYXN5bmMpCisgICAgICB1c2Ugb3BlbmFjY19raW5kcywgb25seTog YWNjX2hhbmRsZV9raW5kCisgICAgICB0eXBlICgqKSwgZGltZW5zaW9uICgu LiksIGNvbnRpZ3VvdXMgOjogYQorICAgICAgaW50ZWdlciAoYWNjX2hhbmRs ZV9raW5kKSBhc3luYworICAgIGVuZCBzdWJyb3V0aW5lCisKKyAgICBzdWJy b3V0aW5lIGFjY191cGRhdGVfZGV2aWNlX2FzeW5jXzMyX2ggKGEsIGxlbiwg YXN5bmMpCisgICAgICB1c2UgaXNvX2NfYmluZGluZywgb25seTogY19pbnQz Ml90CisgICAgICB1c2Ugb3BlbmFjY19raW5kcywgb25seTogYWNjX2hhbmRs ZV9raW5kCisgICAgICAhR0NDJCBBVFRSSUJVVEVTIE5PX0FSR19DSEVDSyA6 OiBhCisgICAgICB0eXBlICgqKSwgZGltZW5zaW9uICgqKSA6OiBhCisgICAg ICBpbnRlZ2VyIChjX2ludDMyX3QpIGxlbgorICAgICAgaW50ZWdlciAoYWNj X2hhbmRsZV9raW5kKSBhc3luYworICAgIGVuZCBzdWJyb3V0aW5lCisKKyAg ICBzdWJyb3V0aW5lIGFjY191cGRhdGVfZGV2aWNlX2FzeW5jXzY0X2ggKGEs IGxlbiwgYXN5bmMpCisgICAgICB1c2UgaXNvX2NfYmluZGluZywgb25seTog Y19pbnQ2NF90CisgICAgICB1c2Ugb3BlbmFjY19raW5kcywgb25seTogYWNj X2hhbmRsZV9raW5kCisgICAgICAhR0NDJCBBVFRSSUJVVEVTIE5PX0FSR19D SEVDSyA6OiBhCisgICAgICB0eXBlICgqKSwgZGltZW5zaW9uICgqKSA6OiBh CisgICAgICBpbnRlZ2VyIChjX2ludDY0X3QpIGxlbgorICAgICAgaW50ZWdl ciAoYWNjX2hhbmRsZV9raW5kKSBhc3luYworICAgIGVuZCBzdWJyb3V0aW5l CisKKyAgICBzdWJyb3V0aW5lIGFjY191cGRhdGVfZGV2aWNlX2FzeW5jX2Fy cmF5X2ggKGEsIGFzeW5jKQorICAgICAgdXNlIG9wZW5hY2Nfa2luZHMsIG9u bHk6IGFjY19oYW5kbGVfa2luZAorICAgICAgdHlwZSAoKiksIGRpbWVuc2lv biAoLi4pLCBjb250aWd1b3VzIDo6IGEKKyAgICAgIGludGVnZXIgKGFjY19o YW5kbGVfa2luZCkgYXN5bmMKKyAgICBlbmQgc3Vicm91dGluZQorCisgICAg c3Vicm91dGluZSBhY2NfdXBkYXRlX3NlbGZfYXN5bmNfMzJfaCAoYSwgbGVu LCBhc3luYykKKyAgICAgIHVzZSBpc29fY19iaW5kaW5nLCBvbmx5OiBjX2lu dDMyX3QKKyAgICAgIHVzZSBvcGVuYWNjX2tpbmRzLCBvbmx5OiBhY2NfaGFu ZGxlX2tpbmQKKyAgICAgICFHQ0MkIEFUVFJJQlVURVMgTk9fQVJHX0NIRUNL IDo6IGEKKyAgICAgIHR5cGUgKCopLCBkaW1lbnNpb24gKCopIDo6IGEKKyAg ICAgIGludGVnZXIgKGNfaW50MzJfdCkgbGVuCisgICAgICBpbnRlZ2VyIChh Y2NfaGFuZGxlX2tpbmQpIGFzeW5jCisgICAgZW5kIHN1YnJvdXRpbmUKKwor ICAgIHN1YnJvdXRpbmUgYWNjX3VwZGF0ZV9zZWxmX2FzeW5jXzY0X2ggKGEs IGxlbiwgYXN5bmMpCisgICAgICB1c2UgaXNvX2NfYmluZGluZywgb25seTog Y19pbnQ2NF90CisgICAgICB1c2Ugb3BlbmFjY19raW5kcywgb25seTogYWNj X2hhbmRsZV9raW5kCisgICAgICAhR0NDJCBBVFRSSUJVVEVTIE5PX0FSR19D SEVDSyA6OiBhCisgICAgICB0eXBlICgqKSwgZGltZW5zaW9uICgqKSA6OiBh CisgICAgICBpbnRlZ2VyIChjX2ludDY0X3QpIGxlbgorICAgICAgaW50ZWdl ciAoYWNjX2hhbmRsZV9raW5kKSBhc3luYworICAgIGVuZCBzdWJyb3V0aW5l CisKKyAgICBzdWJyb3V0aW5lIGFjY191cGRhdGVfc2VsZl9hc3luY19hcnJh eV9oIChhLCBhc3luYykKKyAgICAgIHVzZSBvcGVuYWNjX2tpbmRzLCBvbmx5 OiBhY2NfaGFuZGxlX2tpbmQKKyAgICAgIHR5cGUgKCopLCBkaW1lbnNpb24g KC4uKSwgY29udGlndW91cyA6OiBhCisgICAgICBpbnRlZ2VyIChhY2NfaGFu ZGxlX2tpbmQpIGFzeW5jCisgICAgZW5kIHN1YnJvdXRpbmUKICAgZW5kIGlu dGVyZmFjZQogCiAgIGludGVyZmFjZQpAQCAtNDU4LDYgKzYxMyw2MCBAQCBt b2R1bGUgb3BlbmFjY19pbnRlcm5hbAogICAgICAgdHlwZSAoKiksIGRpbWVu c2lvbiAoKikgOjogYQogICAgICAgaW50ZWdlciAoY19zaXplX3QpLCB2YWx1 ZSA6OiBsZW4KICAgICBlbmQgZnVuY3Rpb24KKworICAgIHN1YnJvdXRpbmUg YWNjX2NvcHlpbl9hc3luY19sIChhLCBsZW4sIGFzeW5jKSAmCisgICAgICAg IGJpbmQgKEMsIG5hbWUgPSAiYWNjX2NvcHlpbl9hc3luYyIpCisgICAgICB1 c2UgaXNvX2NfYmluZGluZywgb25seTogY19zaXplX3QsIGNfaW50CisgICAg ICAhR0NDJCBBVFRSSUJVVEVTIE5PX0FSR19DSEVDSyA6OiBhCisgICAgICB0 eXBlICgqKSwgZGltZW5zaW9uICgqKSA6OiBhCisgICAgICBpbnRlZ2VyIChj X3NpemVfdCksIHZhbHVlIDo6IGxlbgorICAgICAgaW50ZWdlciAoY19pbnQp LCB2YWx1ZSA6OiBhc3luYworICAgIGVuZCBzdWJyb3V0aW5lCisKKyAgICBz dWJyb3V0aW5lIGFjY19jcmVhdGVfYXN5bmNfbCAoYSwgbGVuLCBhc3luYykg JgorICAgICAgICBiaW5kIChDLCBuYW1lID0gImFjY19jcmVhdGVfYXN5bmMi KQorICAgICAgdXNlIGlzb19jX2JpbmRpbmcsIG9ubHk6IGNfc2l6ZV90LCBj X2ludAorICAgICAgIUdDQyQgQVRUUklCVVRFUyBOT19BUkdfQ0hFQ0sgOjog YQorICAgICAgdHlwZSAoKiksIGRpbWVuc2lvbiAoKikgOjogYQorICAgICAg aW50ZWdlciAoY19zaXplX3QpLCB2YWx1ZSA6OiBsZW4KKyAgICAgIGludGVn ZXIgKGNfaW50KSwgdmFsdWUgOjogYXN5bmMKKyAgICBlbmQgc3Vicm91dGlu ZQorCisgICAgc3Vicm91dGluZSBhY2NfY29weW91dF9hc3luY19sIChhLCBs ZW4sIGFzeW5jKSAmCisgICAgICAgIGJpbmQgKEMsIG5hbWUgPSAiYWNjX2Nv cHlvdXRfYXN5bmMiKQorICAgICAgdXNlIGlzb19jX2JpbmRpbmcsIG9ubHk6 IGNfc2l6ZV90LCBjX2ludAorICAgICAgIUdDQyQgQVRUUklCVVRFUyBOT19B UkdfQ0hFQ0sgOjogYQorICAgICAgdHlwZSAoKiksIGRpbWVuc2lvbiAoKikg OjogYQorICAgICAgaW50ZWdlciAoY19zaXplX3QpLCB2YWx1ZSA6OiBsZW4K KyAgICAgIGludGVnZXIgKGNfaW50KSwgdmFsdWUgOjogYXN5bmMKKyAgICBl bmQgc3Vicm91dGluZQorCisgICAgc3Vicm91dGluZSBhY2NfZGVsZXRlX2Fz eW5jX2wgKGEsIGxlbiwgYXN5bmMpICYKKyAgICAgICAgYmluZCAoQywgbmFt ZSA9ICJhY2NfZGVsZXRlX2FzeW5jIikKKyAgICAgIHVzZSBpc29fY19iaW5k aW5nLCBvbmx5OiBjX3NpemVfdCwgY19pbnQKKyAgICAgICFHQ0MkIEFUVFJJ QlVURVMgTk9fQVJHX0NIRUNLIDo6IGEKKyAgICAgIHR5cGUgKCopLCBkaW1l bnNpb24gKCopIDo6IGEKKyAgICAgIGludGVnZXIgKGNfc2l6ZV90KSwgdmFs dWUgOjogbGVuCisgICAgICBpbnRlZ2VyIChjX2ludCksIHZhbHVlIDo6IGFz eW5jCisgICAgZW5kIHN1YnJvdXRpbmUKKworICAgIHN1YnJvdXRpbmUgYWNj X3VwZGF0ZV9kZXZpY2VfYXN5bmNfbCAoYSwgbGVuLCBhc3luYykgJgorICAg ICAgICBiaW5kIChDLCBuYW1lID0gImFjY191cGRhdGVfZGV2aWNlX2FzeW5j IikKKyAgICAgIHVzZSBpc29fY19iaW5kaW5nLCBvbmx5OiBjX3NpemVfdCwg Y19pbnQKKyAgICAgICFHQ0MkIEFUVFJJQlVURVMgTk9fQVJHX0NIRUNLIDo6 IGEKKyAgICAgIHR5cGUgKCopLCBkaW1lbnNpb24gKCopIDo6IGEKKyAgICAg IGludGVnZXIgKGNfc2l6ZV90KSwgdmFsdWUgOjogbGVuCisgICAgICBpbnRl Z2VyIChjX2ludCksIHZhbHVlIDo6IGFzeW5jCisgICAgZW5kIHN1YnJvdXRp bmUKKworICAgIHN1YnJvdXRpbmUgYWNjX3VwZGF0ZV9zZWxmX2FzeW5jX2wg KGEsIGxlbiwgYXN5bmMpICYKKyAgICAgICAgYmluZCAoQywgbmFtZSA9ICJh Y2NfdXBkYXRlX3NlbGZfYXN5bmMiKQorICAgICAgdXNlIGlzb19jX2JpbmRp bmcsIG9ubHk6IGNfc2l6ZV90LCBjX2ludAorICAgICAgIUdDQyQgQVRUUklC VVRFUyBOT19BUkdfQ0hFQ0sgOjogYQorICAgICAgdHlwZSAoKiksIGRpbWVu c2lvbiAoKikgOjogYQorICAgICAgaW50ZWdlciAoY19zaXplX3QpLCB2YWx1 ZSA6OiBsZW4KKyAgICAgIGludGVnZXIgKGNfaW50KSwgdmFsdWUgOjogYXN5 bmMKKyAgICBlbmQgc3Vicm91dGluZQogICBlbmQgaW50ZXJmYWNlCiBlbmQg bW9kdWxlCiAKQEAgLTQ3MCwxMSArNjc5LDE0IEBAIG1vZHVsZSBvcGVuYWNj CiAKICAgcHVibGljIDo6IGFjY19nZXRfbnVtX2RldmljZXMsIGFjY19zZXRf ZGV2aWNlX3R5cGUsIGFjY19nZXRfZGV2aWNlX3R5cGUKICAgcHVibGljIDo6 IGFjY19zZXRfZGV2aWNlX251bSwgYWNjX2dldF9kZXZpY2VfbnVtLCBhY2Nf YXN5bmNfdGVzdAorICBwdWJsaWMgOjogYWNjX3NldF9kZWZhdWx0X2FzeW5j LCBhY2NfZ2V0X2RlZmF1bHRfYXN5bmMKICAgcHVibGljIDo6IGFjY19hc3lu Y190ZXN0X2FsbCwgYWNjX3dhaXQsIGFjY193YWl0X2FzeW5jLCBhY2Nfd2Fp dF9hbGwKICAgcHVibGljIDo6IGFjY193YWl0X2FsbF9hc3luYywgYWNjX2lu aXQsIGFjY19zaHV0ZG93biwgYWNjX29uX2RldmljZQogICBwdWJsaWMgOjog YWNjX2NvcHlpbiwgYWNjX3ByZXNlbnRfb3JfY29weWluLCBhY2NfcGNvcHlp biwgYWNjX2NyZWF0ZQogICBwdWJsaWMgOjogYWNjX3ByZXNlbnRfb3JfY3Jl YXRlLCBhY2NfcGNyZWF0ZSwgYWNjX2NvcHlvdXQsIGFjY19kZWxldGUKICAg cHVibGljIDo6IGFjY191cGRhdGVfZGV2aWNlLCBhY2NfdXBkYXRlX3NlbGYs IGFjY19pc19wcmVzZW50CisgIHB1YmxpYyA6OiBhY2NfY29weWluX2FzeW5j LCBhY2NfY3JlYXRlX2FzeW5jLCBhY2NfY29weW91dF9hc3luYworICBwdWJs aWMgOjogYWNjX2RlbGV0ZV9hc3luYywgYWNjX3VwZGF0ZV9kZXZpY2VfYXN5 bmMsIGFjY191cGRhdGVfc2VsZl9hc3luYwogCiAgIGludGVnZXIsIHBhcmFt ZXRlciA6OiBvcGVuYWNjX3ZlcnNpb24gPSAyMDEzMDYKIApAQCAtNDk4LDYg KzcxMCwxNCBAQCBtb2R1bGUgb3BlbmFjYwogICAgIHByb2NlZHVyZSA6OiBh Y2NfZ2V0X2RldmljZV9udW1faAogICBlbmQgaW50ZXJmYWNlCiAKKyAgaW50 ZXJmYWNlIGFjY19zZXRfZGVmYXVsdF9hc3luYworICAgIHByb2NlZHVyZSA6 OiBhY2Nfc2V0X2RlZmF1bHRfYXN5bmNfaAorICBlbmQgaW50ZXJmYWNlCisK KyAgaW50ZXJmYWNlIGFjY19nZXRfZGVmYXVsdF9hc3luYworICAgIHByb2Nl ZHVyZSA6OiBhY2NfZ2V0X2RlZmF1bHRfYXN5bmNfaAorICBlbmQgaW50ZXJm YWNlCisKICAgaW50ZXJmYWNlIGFjY19hc3luY190ZXN0CiAgICAgcHJvY2Vk dXJlIDo6IGFjY19hc3luY190ZXN0X2gKICAgZW5kIGludGVyZmFjZQpAQCAt NjE4LDYgKzgzOCw0MiBAQCBtb2R1bGUgb3BlbmFjYwogICAhIGFjY19tZW1j cHlfdG9fZGV2aWNlOiBPbmx5IGF2YWlsYWJsZSBpbiBDL0MrKwogICAhIGFj Y19tZW1jcHlfZnJvbV9kZXZpY2U6IE9ubHkgYXZhaWxhYmxlIGluIEMvQysr CiAKKyAgaW50ZXJmYWNlIGFjY19jb3B5aW5fYXN5bmMKKyAgICBwcm9jZWR1 cmUgOjogYWNjX2NvcHlpbl9hc3luY18zMl9oCisgICAgcHJvY2VkdXJlIDo6 IGFjY19jb3B5aW5fYXN5bmNfNjRfaAorICAgIHByb2NlZHVyZSA6OiBhY2Nf Y29weWluX2FzeW5jX2FycmF5X2gKKyAgZW5kIGludGVyZmFjZQorCisgIGlu dGVyZmFjZSBhY2NfY3JlYXRlX2FzeW5jCisgICAgcHJvY2VkdXJlIDo6IGFj Y19jcmVhdGVfYXN5bmNfMzJfaAorICAgIHByb2NlZHVyZSA6OiBhY2NfY3Jl YXRlX2FzeW5jXzY0X2gKKyAgICBwcm9jZWR1cmUgOjogYWNjX2NyZWF0ZV9h c3luY19hcnJheV9oCisgIGVuZCBpbnRlcmZhY2UKKworICBpbnRlcmZhY2Ug YWNjX2NvcHlvdXRfYXN5bmMKKyAgICBwcm9jZWR1cmUgOjogYWNjX2NvcHlv dXRfYXN5bmNfMzJfaAorICAgIHByb2NlZHVyZSA6OiBhY2NfY29weW91dF9h c3luY182NF9oCisgICAgcHJvY2VkdXJlIDo6IGFjY19jb3B5b3V0X2FzeW5j X2FycmF5X2gKKyAgZW5kIGludGVyZmFjZQorCisgIGludGVyZmFjZSBhY2Nf ZGVsZXRlX2FzeW5jCisgICAgcHJvY2VkdXJlIDo6IGFjY19kZWxldGVfYXN5 bmNfMzJfaAorICAgIHByb2NlZHVyZSA6OiBhY2NfZGVsZXRlX2FzeW5jXzY0 X2gKKyAgICBwcm9jZWR1cmUgOjogYWNjX2RlbGV0ZV9hc3luY19hcnJheV9o CisgIGVuZCBpbnRlcmZhY2UKKworICBpbnRlcmZhY2UgYWNjX3VwZGF0ZV9k ZXZpY2VfYXN5bmMKKyAgICBwcm9jZWR1cmUgOjogYWNjX3VwZGF0ZV9kZXZp Y2VfYXN5bmNfMzJfaAorICAgIHByb2NlZHVyZSA6OiBhY2NfdXBkYXRlX2Rl dmljZV9hc3luY182NF9oCisgICAgcHJvY2VkdXJlIDo6IGFjY191cGRhdGVf ZGV2aWNlX2FzeW5jX2FycmF5X2gKKyAgZW5kIGludGVyZmFjZQorCisgIGlu dGVyZmFjZSBhY2NfdXBkYXRlX3NlbGZfYXN5bmMKKyAgICBwcm9jZWR1cmUg OjogYWNjX3VwZGF0ZV9zZWxmX2FzeW5jXzMyX2gKKyAgICBwcm9jZWR1cmUg OjogYWNjX3VwZGF0ZV9zZWxmX2FzeW5jXzY0X2gKKyAgICBwcm9jZWR1cmUg OjogYWNjX3VwZGF0ZV9zZWxmX2FzeW5jX2FycmF5X2gKKyAgZW5kIGludGVy ZmFjZQorCiBlbmQgbW9kdWxlCiAKIGZ1bmN0aW9uIGFjY19nZXRfbnVtX2Rl dmljZXNfaCAoZCkKQEAgLTk1NCwzICsxMjEwLDE4OSBAQCBmdW5jdGlvbiBh Y2NfaXNfcHJlc2VudF9hcnJheV9oIChhKQogICB0eXBlICgqKSwgZGltZW5z aW9uICguLiksIGNvbnRpZ3VvdXMgOjogYQogICBhY2NfaXNfcHJlc2VudF9h cnJheV9oID0gYWNjX2lzX3ByZXNlbnRfbCAoYSwgc2l6ZW9mIChhKSkgPT0g MQogZW5kIGZ1bmN0aW9uCisKK3N1YnJvdXRpbmUgYWNjX2NvcHlpbl9hc3lu Y18zMl9oIChhLCBsZW4sIGFzeW5jKQorICB1c2UgaXNvX2NfYmluZGluZywg b25seTogY19pbnQzMl90LCBjX3NpemVfdCwgY19pbnQKKyAgdXNlIG9wZW5h Y2NfaW50ZXJuYWwsIG9ubHk6IGFjY19jb3B5aW5fYXN5bmNfbAorICB1c2Ug b3BlbmFjY19raW5kcywgb25seTogYWNjX2hhbmRsZV9raW5kCisgICFHQ0Mk IEFUVFJJQlVURVMgTk9fQVJHX0NIRUNLIDo6IGEKKyAgdHlwZSAoKiksIGRp bWVuc2lvbiAoKikgOjogYQorICBpbnRlZ2VyIChjX2ludDMyX3QpIGxlbgor ICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpIGFzeW5jCisgIGNhbGwgYWNj X2NvcHlpbl9hc3luY19sIChhLCBpbnQgKGxlbiwga2luZCA9IGNfc2l6ZV90 KSwgaW50IChhc3luYywga2luZCA9IGNfaW50KSkKK2VuZCBzdWJyb3V0aW5l CisKK3N1YnJvdXRpbmUgYWNjX2NvcHlpbl9hc3luY182NF9oIChhLCBsZW4s IGFzeW5jKQorICB1c2UgaXNvX2NfYmluZGluZywgb25seTogY19pbnQ2NF90 LCBjX3NpemVfdCwgY19pbnQKKyAgdXNlIG9wZW5hY2NfaW50ZXJuYWwsIG9u bHk6IGFjY19jb3B5aW5fYXN5bmNfbAorICB1c2Ugb3BlbmFjY19raW5kcywg b25seTogYWNjX2hhbmRsZV9raW5kCisgICFHQ0MkIEFUVFJJQlVURVMgTk9f QVJHX0NIRUNLIDo6IGEKKyAgdHlwZSAoKiksIGRpbWVuc2lvbiAoKikgOjog YQorICBpbnRlZ2VyIChjX2ludDY0X3QpIGxlbgorICBpbnRlZ2VyIChhY2Nf aGFuZGxlX2tpbmQpIGFzeW5jCisgIGNhbGwgYWNjX2NvcHlpbl9hc3luY19s IChhLCBpbnQgKGxlbiwga2luZCA9IGNfc2l6ZV90KSwgaW50IChhc3luYywg a2luZCA9IGNfaW50KSkKK2VuZCBzdWJyb3V0aW5lCisKK3N1YnJvdXRpbmUg YWNjX2NvcHlpbl9hc3luY19hcnJheV9oIChhLCBhc3luYykKKyAgdXNlIGlz b19jX2JpbmRpbmcsIG9ubHk6IGNfaW50CisgIHVzZSBvcGVuYWNjX2ludGVy bmFsLCBvbmx5OiBhY2NfY29weWluX2FzeW5jX2wKKyAgdXNlIG9wZW5hY2Nf a2luZHMsIG9ubHk6IGFjY19oYW5kbGVfa2luZAorICB0eXBlICgqKSwgZGlt ZW5zaW9uICguLiksIGNvbnRpZ3VvdXMgOjogYQorICBpbnRlZ2VyIChhY2Nf aGFuZGxlX2tpbmQpIGFzeW5jCisgIGNhbGwgYWNjX2NvcHlpbl9hc3luY19s IChhLCBzaXplb2YgKGEpLCBpbnQgKGFzeW5jLCBraW5kID0gY19pbnQpKQor ZW5kIHN1YnJvdXRpbmUKKworc3Vicm91dGluZSBhY2NfY3JlYXRlX2FzeW5j XzMyX2ggKGEsIGxlbiwgYXN5bmMpCisgIHVzZSBpc29fY19iaW5kaW5nLCBv bmx5OiBjX2ludDMyX3QsIGNfc2l6ZV90LCBjX2ludAorICB1c2Ugb3BlbmFj Y19pbnRlcm5hbCwgb25seTogYWNjX2NyZWF0ZV9hc3luY19sCisgIHVzZSBv cGVuYWNjX2tpbmRzLCBvbmx5OiBhY2NfaGFuZGxlX2tpbmQKKyAgIUdDQyQg QVRUUklCVVRFUyBOT19BUkdfQ0hFQ0sgOjogYQorICB0eXBlICgqKSwgZGlt ZW5zaW9uICgqKSA6OiBhCisgIGludGVnZXIgKGNfaW50MzJfdCkgbGVuCisg IGludGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMKKyAgY2FsbCBhY2Nf Y3JlYXRlX2FzeW5jX2wgKGEsIGludCAobGVuLCBraW5kID0gY19zaXplX3Qp LCBpbnQgKGFzeW5jLCBraW5kID0gY19pbnQpKQorZW5kIHN1YnJvdXRpbmUK Kworc3Vicm91dGluZSBhY2NfY3JlYXRlX2FzeW5jXzY0X2ggKGEsIGxlbiwg YXN5bmMpCisgIHVzZSBpc29fY19iaW5kaW5nLCBvbmx5OiBjX2ludDY0X3Qs IGNfc2l6ZV90LCBjX2ludAorICB1c2Ugb3BlbmFjY19pbnRlcm5hbCwgb25s eTogYWNjX2NyZWF0ZV9hc3luY19sCisgIHVzZSBvcGVuYWNjX2tpbmRzLCBv bmx5OiBhY2NfaGFuZGxlX2tpbmQKKyAgIUdDQyQgQVRUUklCVVRFUyBOT19B UkdfQ0hFQ0sgOjogYQorICB0eXBlICgqKSwgZGltZW5zaW9uICgqKSA6OiBh CisgIGludGVnZXIgKGNfaW50NjRfdCkgbGVuCisgIGludGVnZXIgKGFjY19o YW5kbGVfa2luZCkgYXN5bmMKKyAgY2FsbCBhY2NfY3JlYXRlX2FzeW5jX2wg KGEsIGludCAobGVuLCBraW5kID0gY19zaXplX3QpLCBpbnQgKGFzeW5jLCBr aW5kID0gY19pbnQpKQorZW5kIHN1YnJvdXRpbmUKKworc3Vicm91dGluZSBh Y2NfY3JlYXRlX2FzeW5jX2FycmF5X2ggKGEsIGFzeW5jKQorICB1c2UgaXNv X2NfYmluZGluZywgb25seTogY19pbnQKKyAgdXNlIG9wZW5hY2NfaW50ZXJu YWwsIG9ubHk6IGFjY19jcmVhdGVfYXN5bmNfbAorICB1c2Ugb3BlbmFjY19r aW5kcywgb25seTogYWNjX2hhbmRsZV9raW5kCisgIHR5cGUgKCopLCBkaW1l bnNpb24gKC4uKSwgY29udGlndW91cyA6OiBhCisgIGludGVnZXIgKGFjY19o YW5kbGVfa2luZCkgYXN5bmMKKyAgY2FsbCBhY2NfY3JlYXRlX2FzeW5jX2wg KGEsIHNpemVvZiAoYSksIGludCAoYXN5bmMsIGtpbmQgPSBjX2ludCkpCitl bmQgc3Vicm91dGluZQorCitzdWJyb3V0aW5lIGFjY19jb3B5b3V0X2FzeW5j XzMyX2ggKGEsIGxlbiwgYXN5bmMpCisgIHVzZSBpc29fY19iaW5kaW5nLCBv bmx5OiBjX2ludDMyX3QsIGNfc2l6ZV90LCBjX2ludAorICB1c2Ugb3BlbmFj Y19pbnRlcm5hbCwgb25seTogYWNjX2NvcHlvdXRfYXN5bmNfbAorICB1c2Ug b3BlbmFjY19raW5kcywgb25seTogYWNjX2hhbmRsZV9raW5kCisgICFHQ0Mk IEFUVFJJQlVURVMgTk9fQVJHX0NIRUNLIDo6IGEKKyAgdHlwZSAoKiksIGRp bWVuc2lvbiAoKikgOjogYQorICBpbnRlZ2VyIChjX2ludDMyX3QpIGxlbgor ICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpIGFzeW5jCisgIGNhbGwgYWNj X2NvcHlvdXRfYXN5bmNfbCAoYSwgaW50IChsZW4sIGtpbmQgPSBjX3NpemVf dCksIGludCAoYXN5bmMsIGtpbmQgPSBjX2ludCkpCitlbmQgc3Vicm91dGlu ZQorCitzdWJyb3V0aW5lIGFjY19jb3B5b3V0X2FzeW5jXzY0X2ggKGEsIGxl biwgYXN5bmMpCisgIHVzZSBpc29fY19iaW5kaW5nLCBvbmx5OiBjX2ludDY0 X3QsIGNfc2l6ZV90LCBjX2ludAorICB1c2Ugb3BlbmFjY19pbnRlcm5hbCwg b25seTogYWNjX2NvcHlvdXRfYXN5bmNfbAorICB1c2Ugb3BlbmFjY19raW5k cywgb25seTogYWNjX2hhbmRsZV9raW5kCisgICFHQ0MkIEFUVFJJQlVURVMg Tk9fQVJHX0NIRUNLIDo6IGEKKyAgdHlwZSAoKiksIGRpbWVuc2lvbiAoKikg OjogYQorICBpbnRlZ2VyIChjX2ludDY0X3QpIGxlbgorICBpbnRlZ2VyIChh Y2NfaGFuZGxlX2tpbmQpIGFzeW5jCisgIGNhbGwgYWNjX2NvcHlvdXRfYXN5 bmNfbCAoYSwgaW50IChsZW4sIGtpbmQgPSBjX3NpemVfdCksIGludCAoYXN5 bmMsIGtpbmQgPSBjX2ludCkpCitlbmQgc3Vicm91dGluZQorCitzdWJyb3V0 aW5lIGFjY19jb3B5b3V0X2FzeW5jX2FycmF5X2ggKGEsIGFzeW5jKQorICB1 c2UgaXNvX2NfYmluZGluZywgb25seTogY19pbnQKKyAgdXNlIG9wZW5hY2Nf aW50ZXJuYWwsIG9ubHk6IGFjY19jb3B5b3V0X2FzeW5jX2wKKyAgdXNlIG9w ZW5hY2Nfa2luZHMsIG9ubHk6IGFjY19oYW5kbGVfa2luZAorICB0eXBlICgq KSwgZGltZW5zaW9uICguLiksIGNvbnRpZ3VvdXMgOjogYQorICBpbnRlZ2Vy IChhY2NfaGFuZGxlX2tpbmQpIGFzeW5jCisgIGNhbGwgYWNjX2NvcHlvdXRf YXN5bmNfbCAoYSwgc2l6ZW9mIChhKSwgaW50IChhc3luYywga2luZCA9IGNf aW50KSkKK2VuZCBzdWJyb3V0aW5lCisKK3N1YnJvdXRpbmUgYWNjX2RlbGV0 ZV9hc3luY18zMl9oIChhLCBsZW4sIGFzeW5jKQorICB1c2UgaXNvX2NfYmlu ZGluZywgb25seTogY19pbnQzMl90LCBjX3NpemVfdCwgY19pbnQKKyAgdXNl IG9wZW5hY2NfaW50ZXJuYWwsIG9ubHk6IGFjY19kZWxldGVfYXN5bmNfbAor ICB1c2Ugb3BlbmFjY19raW5kcywgb25seTogYWNjX2hhbmRsZV9raW5kCisg ICFHQ0MkIEFUVFJJQlVURVMgTk9fQVJHX0NIRUNLIDo6IGEKKyAgdHlwZSAo KiksIGRpbWVuc2lvbiAoKikgOjogYQorICBpbnRlZ2VyIChjX2ludDMyX3Qp IGxlbgorICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpIGFzeW5jCisgIGNh bGwgYWNjX2RlbGV0ZV9hc3luY19sIChhLCBpbnQgKGxlbiwga2luZCA9IGNf c2l6ZV90KSwgaW50IChhc3luYywga2luZCA9IGNfaW50KSkKK2VuZCBzdWJy b3V0aW5lCisKK3N1YnJvdXRpbmUgYWNjX2RlbGV0ZV9hc3luY182NF9oIChh LCBsZW4sIGFzeW5jKQorICB1c2UgaXNvX2NfYmluZGluZywgb25seTogY19p bnQ2NF90LCBjX3NpemVfdCwgY19pbnQKKyAgdXNlIG9wZW5hY2NfaW50ZXJu YWwsIG9ubHk6IGFjY19kZWxldGVfYXN5bmNfbAorICB1c2Ugb3BlbmFjY19r aW5kcywgb25seTogYWNjX2hhbmRsZV9raW5kCisgICFHQ0MkIEFUVFJJQlVU RVMgTk9fQVJHX0NIRUNLIDo6IGEKKyAgdHlwZSAoKiksIGRpbWVuc2lvbiAo KikgOjogYQorICBpbnRlZ2VyIChjX2ludDY0X3QpIGxlbgorICBpbnRlZ2Vy IChhY2NfaGFuZGxlX2tpbmQpIGFzeW5jCisgIGNhbGwgYWNjX2RlbGV0ZV9h c3luY19sIChhLCBpbnQgKGxlbiwga2luZCA9IGNfc2l6ZV90KSwgaW50IChh c3luYywga2luZCA9IGNfaW50KSkKK2VuZCBzdWJyb3V0aW5lCisKK3N1YnJv dXRpbmUgYWNjX2RlbGV0ZV9hc3luY19hcnJheV9oIChhLCBhc3luYykKKyAg dXNlIGlzb19jX2JpbmRpbmcsIG9ubHk6IGNfaW50CisgIHVzZSBvcGVuYWNj X2ludGVybmFsLCBvbmx5OiBhY2NfZGVsZXRlX2FzeW5jX2wKKyAgdXNlIG9w ZW5hY2Nfa2luZHMsIG9ubHk6IGFjY19oYW5kbGVfa2luZAorICB0eXBlICgq KSwgZGltZW5zaW9uICguLiksIGNvbnRpZ3VvdXMgOjogYQorICBpbnRlZ2Vy IChhY2NfaGFuZGxlX2tpbmQpIGFzeW5jCisgIGNhbGwgYWNjX2RlbGV0ZV9h c3luY19sIChhLCBzaXplb2YgKGEpLCBpbnQgKGFzeW5jLCBraW5kID0gY19p bnQpKQorZW5kIHN1YnJvdXRpbmUKKworc3Vicm91dGluZSBhY2NfdXBkYXRl X2RldmljZV9hc3luY18zMl9oIChhLCBsZW4sIGFzeW5jKQorICB1c2UgaXNv X2NfYmluZGluZywgb25seTogY19pbnQzMl90LCBjX3NpemVfdCwgY19pbnQK KyAgdXNlIG9wZW5hY2NfaW50ZXJuYWwsIG9ubHk6IGFjY191cGRhdGVfZGV2 aWNlX2FzeW5jX2wKKyAgdXNlIG9wZW5hY2Nfa2luZHMsIG9ubHk6IGFjY19o YW5kbGVfa2luZAorICAhR0NDJCBBVFRSSUJVVEVTIE5PX0FSR19DSEVDSyA6 OiBhCisgIHR5cGUgKCopLCBkaW1lbnNpb24gKCopIDo6IGEKKyAgaW50ZWdl ciAoY19pbnQzMl90KSBsZW4KKyAgaW50ZWdlciAoYWNjX2hhbmRsZV9raW5k KSBhc3luYworICBjYWxsIGFjY191cGRhdGVfZGV2aWNlX2FzeW5jX2wgKGEs IGludCAobGVuLCBraW5kID0gY19zaXplX3QpLCBpbnQgKGFzeW5jLCBraW5k ID0gY19pbnQpKQorZW5kIHN1YnJvdXRpbmUKKworc3Vicm91dGluZSBhY2Nf dXBkYXRlX2RldmljZV9hc3luY182NF9oIChhLCBsZW4sIGFzeW5jKQorICB1 c2UgaXNvX2NfYmluZGluZywgb25seTogY19pbnQ2NF90LCBjX3NpemVfdCwg Y19pbnQKKyAgdXNlIG9wZW5hY2NfaW50ZXJuYWwsIG9ubHk6IGFjY191cGRh dGVfZGV2aWNlX2FzeW5jX2wKKyAgdXNlIG9wZW5hY2Nfa2luZHMsIG9ubHk6 IGFjY19oYW5kbGVfa2luZAorICAhR0NDJCBBVFRSSUJVVEVTIE5PX0FSR19D SEVDSyA6OiBhCisgIHR5cGUgKCopLCBkaW1lbnNpb24gKCopIDo6IGEKKyAg aW50ZWdlciAoY19pbnQ2NF90KSBsZW4KKyAgaW50ZWdlciAoYWNjX2hhbmRs ZV9raW5kKSBhc3luYworICBjYWxsIGFjY191cGRhdGVfZGV2aWNlX2FzeW5j X2wgKGEsIGludCAobGVuLCBraW5kID0gY19zaXplX3QpLCBpbnQgKGFzeW5j LCBraW5kID0gY19pbnQpKQorZW5kIHN1YnJvdXRpbmUKKworc3Vicm91dGlu ZSBhY2NfdXBkYXRlX2RldmljZV9hc3luY19hcnJheV9oIChhLCBhc3luYykK KyAgdXNlIGlzb19jX2JpbmRpbmcsIG9ubHk6IGNfaW50CisgIHVzZSBvcGVu YWNjX2ludGVybmFsLCBvbmx5OiBhY2NfdXBkYXRlX2RldmljZV9hc3luY19s CisgIHVzZSBvcGVuYWNjX2tpbmRzLCBvbmx5OiBhY2NfaGFuZGxlX2tpbmQK KyAgdHlwZSAoKiksIGRpbWVuc2lvbiAoLi4pLCBjb250aWd1b3VzIDo6IGEK KyAgaW50ZWdlciAoYWNjX2hhbmRsZV9raW5kKSBhc3luYworICBjYWxsIGFj Y191cGRhdGVfZGV2aWNlX2FzeW5jX2wgKGEsIHNpemVvZiAoYSksIGludCAo YXN5bmMsIGtpbmQgPSBjX2ludCkpCitlbmQgc3Vicm91dGluZQorCitzdWJy b3V0aW5lIGFjY191cGRhdGVfc2VsZl9hc3luY18zMl9oIChhLCBsZW4sIGFz eW5jKQorICB1c2UgaXNvX2NfYmluZGluZywgb25seTogY19pbnQzMl90LCBj X3NpemVfdCwgY19pbnQKKyAgdXNlIG9wZW5hY2NfaW50ZXJuYWwsIG9ubHk6 IGFjY191cGRhdGVfc2VsZl9hc3luY19sCisgIHVzZSBvcGVuYWNjX2tpbmRz LCBvbmx5OiBhY2NfaGFuZGxlX2tpbmQKKyAgIUdDQyQgQVRUUklCVVRFUyBO T19BUkdfQ0hFQ0sgOjogYQorICB0eXBlICgqKSwgZGltZW5zaW9uICgqKSA6 OiBhCisgIGludGVnZXIgKGNfaW50MzJfdCkgbGVuCisgIGludGVnZXIgKGFj Y19oYW5kbGVfa2luZCkgYXN5bmMKKyAgY2FsbCBhY2NfdXBkYXRlX3NlbGZf YXN5bmNfbCAoYSwgaW50IChsZW4sIGtpbmQgPSBjX3NpemVfdCksIGludCAo YXN5bmMsIGtpbmQgPSBjX2ludCkpCitlbmQgc3Vicm91dGluZQorCitzdWJy b3V0aW5lIGFjY191cGRhdGVfc2VsZl9hc3luY182NF9oIChhLCBsZW4sIGFz eW5jKQorICB1c2UgaXNvX2NfYmluZGluZywgb25seTogY19pbnQ2NF90LCBj X3NpemVfdCwgY19pbnQKKyAgdXNlIG9wZW5hY2NfaW50ZXJuYWwsIG9ubHk6 IGFjY191cGRhdGVfc2VsZl9hc3luY19sCisgIHVzZSBvcGVuYWNjX2tpbmRz LCBvbmx5OiBhY2NfaGFuZGxlX2tpbmQKKyAgIUdDQyQgQVRUUklCVVRFUyBO T19BUkdfQ0hFQ0sgOjogYQorICB0eXBlICgqKSwgZGltZW5zaW9uICgqKSA6 OiBhCisgIGludGVnZXIgKGNfaW50NjRfdCkgbGVuCisgIGludGVnZXIgKGFj Y19oYW5kbGVfa2luZCkgYXN5bmMKKyAgY2FsbCBhY2NfdXBkYXRlX3NlbGZf YXN5bmNfbCAoYSwgaW50IChsZW4sIGtpbmQgPSBjX3NpemVfdCksIGludCAo YXN5bmMsIGtpbmQgPSBjX2ludCkpCitlbmQgc3Vicm91dGluZQorCitzdWJy b3V0aW5lIGFjY191cGRhdGVfc2VsZl9hc3luY19hcnJheV9oIChhLCBhc3lu YykKKyAgdXNlIGlzb19jX2JpbmRpbmcsIG9ubHk6IGNfaW50CisgIHVzZSBv cGVuYWNjX2ludGVybmFsLCBvbmx5OiBhY2NfdXBkYXRlX3NlbGZfYXN5bmNf bAorICB1c2Ugb3BlbmFjY19raW5kcywgb25seTogYWNjX2hhbmRsZV9raW5k CisgIHR5cGUgKCopLCBkaW1lbnNpb24gKC4uKSwgY29udGlndW91cyA6OiBh CisgIGludGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMKKyAgY2FsbCBh Y2NfdXBkYXRlX3NlbGZfYXN5bmNfbCAoYSwgc2l6ZW9mIChhKSwgaW50IChh c3luYywga2luZCA9IGNfaW50KSkKK2VuZCBzdWJyb3V0aW5lCkluZGV4OiBs aWJnb21wL29wZW5hY2MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBs aWJnb21wL29wZW5hY2MuaAkocmV2aXNpb24gMjQ1MzgyKQorKysgbGliZ29t cC9vcGVuYWNjLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAg dHlwZWRlZiBlbnVtIGFjY19kZXZpY2VfdCB7CiAKIHR5cGVkZWYgZW51bSBh Y2NfYXN5bmNfdCB7CiAgIC8qIEtlZXAgaW4gc3luYyB3aXRoIGluY2x1ZGUv Z29tcC1jb25zdGFudHMuaC4gICovCisgIGFjY19hc3luY19kZWZhdWx0ID0g MCwKICAgYWNjX2FzeW5jX25vdmFsID0gLTEsCiAgIGFjY19hc3luY19zeW5j ICA9IC0yCiB9IGFjY19hc3luY190OwpAQCAtNzIsNiArNzMsOCBAQCB2b2lk IGFjY19zZXRfZGV2aWNlX3R5cGUgKGFjY19kZXZpY2VfdCkgX19HT0FDQ19O TwogYWNjX2RldmljZV90IGFjY19nZXRfZGV2aWNlX3R5cGUgKHZvaWQpIF9f R09BQ0NfTk9USFJPVzsKIHZvaWQgYWNjX3NldF9kZXZpY2VfbnVtIChpbnQs IGFjY19kZXZpY2VfdCkgX19HT0FDQ19OT1RIUk9XOwogaW50IGFjY19nZXRf ZGV2aWNlX251bSAoYWNjX2RldmljZV90KSBfX0dPQUNDX05PVEhST1c7Cit2 b2lkIGFjY19zZXRfZGVmYXVsdF9hc3luYyAoaW50KSBfX0dPQUNDX05PVEhS T1c7CitpbnQgYWNjX2dldF9kZWZhdWx0X2FzeW5jICh2b2lkKSBfX0dPQUND X05PVEhST1c7CiBpbnQgYWNjX2FzeW5jX3Rlc3QgKGludCkgX19HT0FDQ19O T1RIUk9XOwogaW50IGFjY19hc3luY190ZXN0X2FsbCAodm9pZCkgX19HT0FD Q19OT1RIUk9XOwogdm9pZCBhY2Nfd2FpdCAoaW50KSBfX0dPQUNDX05PVEhS T1c7CkBAIC0xMDUsNiArMTA4LDE2IEBAIGludCBhY2NfaXNfcHJlc2VudCAo dm9pZCAqLCBzaXplX3QpIF9fR09BQ0NfTk9USFJPCiB2b2lkIGFjY19tZW1j cHlfdG9fZGV2aWNlICh2b2lkICosIHZvaWQgKiwgc2l6ZV90KSBfX0dPQUND X05PVEhST1c7CiB2b2lkIGFjY19tZW1jcHlfZnJvbV9kZXZpY2UgKHZvaWQg Kiwgdm9pZCAqLCBzaXplX3QpIF9fR09BQ0NfTk9USFJPVzsKIAorLyogQXN5 bmMgZnVuY3Rpb25zLCBzcGVjaWZpZWQgaW4gT3BlbkFDQyAyLjUuICAqLwor dm9pZCBhY2NfY29weWluX2FzeW5jICh2b2lkICosIHNpemVfdCwgaW50KSBf X0dPQUNDX05PVEhST1c7Cit2b2lkIGFjY19jcmVhdGVfYXN5bmMgKHZvaWQg Kiwgc2l6ZV90LCBpbnQpIF9fR09BQ0NfTk9USFJPVzsKK3ZvaWQgYWNjX2Nv cHlvdXRfYXN5bmMgKHZvaWQgKiwgc2l6ZV90LCBpbnQpIF9fR09BQ0NfTk9U SFJPVzsKK3ZvaWQgYWNjX2RlbGV0ZV9hc3luYyAodm9pZCAqLCBzaXplX3Qs IGludCkgX19HT0FDQ19OT1RIUk9XOwordm9pZCBhY2NfdXBkYXRlX2Rldmlj ZV9hc3luYyAodm9pZCAqLCBzaXplX3QsIGludCkgX19HT0FDQ19OT1RIUk9X Owordm9pZCBhY2NfdXBkYXRlX3NlbGZfYXN5bmMgKHZvaWQgKiwgc2l6ZV90 LCBpbnQpIF9fR09BQ0NfTk9USFJPVzsKK3ZvaWQgYWNjX21lbWNweV90b19k ZXZpY2VfYXN5bmMgKHZvaWQgKiwgdm9pZCAqLCBzaXplX3QsIGludCkgX19H T0FDQ19OT1RIUk9XOwordm9pZCBhY2NfbWVtY3B5X2Zyb21fZGV2aWNlX2Fz eW5jICh2b2lkICosIHZvaWQgKiwgc2l6ZV90LCBpbnQpIF9fR09BQ0NfTk9U SFJPVzsKKwogLyogT2xkIG5hbWVzLiAgT3BlbkFDQyBkb2VzIG5vdCBzcGVj aWZ5IHdoZXRoZXIgdGhlc2UgY2FuIG9yIG11c3QKICAgIG5vdCBiZSBtYWNy b3MsIGlubGluZXMgb3IgYWxpYXNlcyBmb3IgdGhlIG5ldyBuYW1lcy4gICov CiAjZGVmaW5lIGFjY19wY3JlYXRlIGFjY19wcmVzZW50X29yX2NyZWF0ZQpJ bmRleDogbGliZ29tcC9vcGVuYWNjX2xpYi5oCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGxpYmdvbXAvb3BlbmFjY19saWIuaAkocmV2aXNpb24gMjQ1 MzgyKQorKysgbGliZ29tcC9vcGVuYWNjX2xpYi5oCSh3b3JraW5nIGNvcHkp CkBAIC00Niw2ICs0Niw3IEBACiAgICAgICBpbnRlZ2VyLCBwYXJhbWV0ZXIg OjogYWNjX2hhbmRsZV9raW5kID0gNAogCiAhICAgICBLZWVwIGluIHN5bmMg d2l0aCBpbmNsdWRlL2dvbXAtY29uc3RhbnRzLmguCisgICAgICBpbnRlZ2Vy IChhY2NfaGFuZGxlX2tpbmQpLCBwYXJhbWV0ZXIgOjogYWNjX2FzeW5jX2Rl ZmF1bHQgPSAwCiAgICAgICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpLCBw YXJhbWV0ZXIgOjogYWNjX2FzeW5jX25vdmFsID0gLTEKICAgICAgIGludGVn ZXIgKGFjY19oYW5kbGVfa2luZCksIHBhcmFtZXRlciA6OiBhY2NfYXN5bmNf c3luYyA9IC0yCiAKQEAgLTg5LDYgKzkwLDE4IEBACiAgICAgICAgIGVuZCBm dW5jdGlvbgogICAgICAgZW5kIGludGVyZmFjZQogCisgICAgICBpbnRlcmZh Y2UgYWNjX3NldF9kZWZhdWx0X2FzeW5jCisgICAgICAgIHN1YnJvdXRpbmUg YWNjX3NldF9kZWZhdWx0X2FzeW5jX2ggKGEpCisgICAgICAgICAgaW50ZWdl ciBhCisgICAgICAgIGVuZCBzdWJyb3V0aW5lCisgICAgICBlbmQgaW50ZXJm YWNlCisKKyAgICAgIGludGVyZmFjZSBhY2NfZ2V0X2RlZmF1bHRfYXN5bmMK KyAgICAgICAgZnVuY3Rpb24gYWNjX2dldF9kZWZhdWx0X2FzeW5jX2ggKCkK KyAgICAgICAgICBpbnRlZ2VyIGFjY19nZXRfZGVmYXVsdF9hc3luY19oCisg ICAgICAgIGVuZCBmdW5jdGlvbgorICAgICAgZW5kIGludGVyZmFjZQorCiAg ICAgICBpbnRlcmZhY2UgYWNjX2FzeW5jX3Rlc3QKICAgICAgICAgZnVuY3Rp b24gYWNjX2FzeW5jX3Rlc3RfaCAoYSkKICAgICAgICAgICBsb2dpY2FsIGFj Y19hc3luY190ZXN0X2gKQEAgLTM4MCwzICszOTMsMTU5IEBACiAKICAgICAg ICEgYWNjX21lbWNweV90b19kZXZpY2U6IE9ubHkgYXZhaWxhYmxlIGluIEMv QysrCiAgICAgICAhIGFjY19tZW1jcHlfZnJvbV9kZXZpY2U6IE9ubHkgYXZh aWxhYmxlIGluIEMvQysrCisKKyAgICAgIGludGVyZmFjZSBhY2NfY29weWlu X2FzeW5jCisgICAgICAgIHN1YnJvdXRpbmUgYWNjX2NvcHlpbl9hc3luY18z Ml9oIChhLCBsZW4sIGFzeW5jKQorICAgICAgICAgIHVzZSBpc29fY19iaW5k aW5nLCBvbmx5OiBjX2ludDMyX3QKKyAgICAgICAgICBpbXBvcnQgYWNjX2hh bmRsZV9raW5kCisgICAgICAgICAgIUdDQyQgQVRUUklCVVRFUyBOT19BUkdf Q0hFQ0sgOjogYQorICAgICAgICAgIHR5cGUgKCopLCBkaW1lbnNpb24gKCop IDo6IGEKKyAgICAgICAgICBpbnRlZ2VyIChjX2ludDMyX3QpIGxlbgorICAg ICAgICAgIGludGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMKKyAgICAg ICAgZW5kIHN1YnJvdXRpbmUKKworICAgICAgICBzdWJyb3V0aW5lIGFjY19j b3B5aW5fYXN5bmNfNjRfaCAoYSwgbGVuLCBhc3luYykKKyAgICAgICAgICB1 c2UgaXNvX2NfYmluZGluZywgb25seTogY19pbnQ2NF90CisgICAgICAgICAg aW1wb3J0IGFjY19oYW5kbGVfa2luZAorICAgICAgICAgICFHQ0MkIEFUVFJJ QlVURVMgTk9fQVJHX0NIRUNLIDo6IGEKKyAgICAgICAgICB0eXBlICgqKSwg ZGltZW5zaW9uICgqKSA6OiBhCisgICAgICAgICAgaW50ZWdlciAoY19pbnQ2 NF90KSBsZW4KKyAgICAgICAgICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQp IGFzeW5jCisgICAgICAgIGVuZCBzdWJyb3V0aW5lCisKKyAgICAgICAgc3Vi cm91dGluZSBhY2NfY29weWluX2FzeW5jX2FycmF5X2ggKGEsIGFzeW5jXykK KyAgICAgICAgICBpbXBvcnQgYWNjX2hhbmRsZV9raW5kCisgICAgICAgICAg dHlwZSAoKiksIGRpbWVuc2lvbiAoLi4pLCBjb250aWd1b3VzIDo6IGEKKyAg ICAgICAgICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpIGFzeW5jXworICAg ICAgICBlbmQgc3Vicm91dGluZQorICAgICAgZW5kIGludGVyZmFjZQorCisg ICAgICBpbnRlcmZhY2UgYWNjX2NyZWF0ZV9hc3luYworICAgICAgICBzdWJy b3V0aW5lIGFjY19jcmVhdGVfYXN5bmNfMzJfaCAoYSwgbGVuLCBhc3luYykK KyAgICAgICAgICB1c2UgaXNvX2NfYmluZGluZywgb25seTogY19pbnQzMl90 CisgICAgICAgICAgaW1wb3J0IGFjY19oYW5kbGVfa2luZAorICAgICAgICAg ICFHQ0MkIEFUVFJJQlVURVMgTk9fQVJHX0NIRUNLIDo6IGEKKyAgICAgICAg ICB0eXBlICgqKSwgZGltZW5zaW9uICgqKSA6OiBhCisgICAgICAgICAgaW50 ZWdlciAoY19pbnQzMl90KSBsZW4KKyAgICAgICAgICBpbnRlZ2VyIChhY2Nf aGFuZGxlX2tpbmQpIGFzeW5jCisgICAgICAgIGVuZCBzdWJyb3V0aW5lCisK KyAgICAgICAgc3Vicm91dGluZSBhY2NfY3JlYXRlX2FzeW5jXzY0X2ggKGEs IGxlbiwgYXN5bmMpCisgICAgICAgICAgdXNlIGlzb19jX2JpbmRpbmcsIG9u bHk6IGNfaW50NjRfdAorICAgICAgICAgIGltcG9ydCBhY2NfaGFuZGxlX2tp bmQKKyAgICAgICAgICAhR0NDJCBBVFRSSUJVVEVTIE5PX0FSR19DSEVDSyA6 OiBhCisgICAgICAgICAgdHlwZSAoKiksIGRpbWVuc2lvbiAoKikgOjogYQor ICAgICAgICAgIGludGVnZXIgKGNfaW50NjRfdCkgbGVuCisgICAgICAgICAg aW50ZWdlciAoYWNjX2hhbmRsZV9raW5kKSBhc3luYworICAgICAgICBlbmQg c3Vicm91dGluZQorCisgICAgICAgIHN1YnJvdXRpbmUgYWNjX2NyZWF0ZV9h c3luY19hcnJheV9oIChhLCBhc3luY18pCisgICAgICAgICAgaW1wb3J0IGFj Y19oYW5kbGVfa2luZAorICAgICAgICAgIHR5cGUgKCopLCBkaW1lbnNpb24g KC4uKSwgY29udGlndW91cyA6OiBhCisgICAgICAgICAgaW50ZWdlciAoYWNj X2hhbmRsZV9raW5kKSBhc3luY18KKyAgICAgICAgZW5kIHN1YnJvdXRpbmUK KyAgICAgIGVuZCBpbnRlcmZhY2UKKworICAgICAgaW50ZXJmYWNlIGFjY19j b3B5b3V0X2FzeW5jCisgICAgICAgIHN1YnJvdXRpbmUgYWNjX2NvcHlvdXRf YXN5bmNfMzJfaCAoYSwgbGVuLCBhc3luYykKKyAgICAgICAgICB1c2UgaXNv X2NfYmluZGluZywgb25seTogY19pbnQzMl90CisgICAgICAgICAgaW1wb3J0 IGFjY19oYW5kbGVfa2luZAorICAgICAgICAgICFHQ0MkIEFUVFJJQlVURVMg Tk9fQVJHX0NIRUNLIDo6IGEKKyAgICAgICAgICB0eXBlICgqKSwgZGltZW5z aW9uICgqKSA6OiBhCisgICAgICAgICAgaW50ZWdlciAoY19pbnQzMl90KSBs ZW4KKyAgICAgICAgICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpIGFzeW5j CisgICAgICAgIGVuZCBzdWJyb3V0aW5lCisKKyAgICAgICAgc3Vicm91dGlu ZSBhY2NfY29weW91dF9hc3luY182NF9oIChhLCBsZW4sIGFzeW5jKQorICAg ICAgICAgIHVzZSBpc29fY19iaW5kaW5nLCBvbmx5OiBjX2ludDY0X3QKKyAg ICAgICAgICBpbXBvcnQgYWNjX2hhbmRsZV9raW5kCisgICAgICAgICAgIUdD QyQgQVRUUklCVVRFUyBOT19BUkdfQ0hFQ0sgOjogYQorICAgICAgICAgIHR5 cGUgKCopLCBkaW1lbnNpb24gKCopIDo6IGEKKyAgICAgICAgICBpbnRlZ2Vy IChjX2ludDY0X3QpIGxlbgorICAgICAgICAgIGludGVnZXIgKGFjY19oYW5k bGVfa2luZCkgYXN5bmMKKyAgICAgICAgZW5kIHN1YnJvdXRpbmUKKworICAg ICAgICBzdWJyb3V0aW5lIGFjY19jb3B5b3V0X2FzeW5jX2FycmF5X2ggKGEs IGFzeW5jXykKKyAgICAgICAgICBpbXBvcnQgYWNjX2hhbmRsZV9raW5kCisg ICAgICAgICAgdHlwZSAoKiksIGRpbWVuc2lvbiAoLi4pLCBjb250aWd1b3Vz IDo6IGEKKyAgICAgICAgICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpIGFz eW5jXworICAgICAgICBlbmQgc3Vicm91dGluZQorICAgICAgZW5kIGludGVy ZmFjZQorCisgICAgICBpbnRlcmZhY2UgYWNjX2RlbGV0ZV9hc3luYworICAg ICAgICBzdWJyb3V0aW5lIGFjY19kZWxldGVfYXN5bmNfMzJfaCAoYSwgbGVu LCBhc3luYykKKyAgICAgICAgICB1c2UgaXNvX2NfYmluZGluZywgb25seTog Y19pbnQzMl90CisgICAgICAgICAgaW1wb3J0IGFjY19oYW5kbGVfa2luZAor ICAgICAgICAgICFHQ0MkIEFUVFJJQlVURVMgTk9fQVJHX0NIRUNLIDo6IGEK KyAgICAgICAgICB0eXBlICgqKSwgZGltZW5zaW9uICgqKSA6OiBhCisgICAg ICAgICAgaW50ZWdlciAoY19pbnQzMl90KSBsZW4KKyAgICAgICAgICBpbnRl Z2VyIChhY2NfaGFuZGxlX2tpbmQpIGFzeW5jCisgICAgICAgIGVuZCBzdWJy b3V0aW5lCisKKyAgICAgICAgc3Vicm91dGluZSBhY2NfZGVsZXRlX2FzeW5j XzY0X2ggKGEsIGxlbiwgYXN5bmMpCisgICAgICAgICAgdXNlIGlzb19jX2Jp bmRpbmcsIG9ubHk6IGNfaW50NjRfdAorICAgICAgICAgIGltcG9ydCBhY2Nf aGFuZGxlX2tpbmQKKyAgICAgICAgICAhR0NDJCBBVFRSSUJVVEVTIE5PX0FS R19DSEVDSyA6OiBhCisgICAgICAgICAgdHlwZSAoKiksIGRpbWVuc2lvbiAo KikgOjogYQorICAgICAgICAgIGludGVnZXIgKGNfaW50NjRfdCkgbGVuCisg ICAgICAgICAgaW50ZWdlciAoYWNjX2hhbmRsZV9raW5kKSBhc3luYworICAg ICAgICBlbmQgc3Vicm91dGluZQorCisgICAgICAgIHN1YnJvdXRpbmUgYWNj X2RlbGV0ZV9hc3luY19hcnJheV9oIChhLCBhc3luY18pCisgICAgICAgICAg aW1wb3J0IGFjY19oYW5kbGVfa2luZAorICAgICAgICAgIHR5cGUgKCopLCBk aW1lbnNpb24gKC4uKSwgY29udGlndW91cyA6OiBhCisgICAgICAgICAgaW50 ZWdlciAoYWNjX2hhbmRsZV9raW5kKSBhc3luY18KKyAgICAgICAgZW5kIHN1 YnJvdXRpbmUKKyAgICAgIGVuZCBpbnRlcmZhY2UKKworICAgICAgaW50ZXJm YWNlIGFjY191cGRhdGVfZGV2aWNlX2FzeW5jCisgICAgICAgIHN1YnJvdXRp bmUgYWNjX3VwZGF0ZV9kZXZpY2VfYXN5bmNfMzJfaCAoYSwgbGVuLCBhc3lu YykKKyAgICAgICAgICB1c2UgaXNvX2NfYmluZGluZywgb25seTogY19pbnQz Ml90CisgICAgICAgICAgaW1wb3J0IGFjY19oYW5kbGVfa2luZAorICAgICAg ICAgICFHQ0MkIEFUVFJJQlVURVMgTk9fQVJHX0NIRUNLIDo6IGEKKyAgICAg ICAgICB0eXBlICgqKSwgZGltZW5zaW9uICgqKSA6OiBhCisgICAgICAgICAg aW50ZWdlciAoY19pbnQzMl90KSBsZW4KKyAgICAgICAgICBpbnRlZ2VyIChh Y2NfaGFuZGxlX2tpbmQpIGFzeW5jCisgICAgICAgIGVuZCBzdWJyb3V0aW5l CisKKyAgICAgICAgc3Vicm91dGluZSBhY2NfdXBkYXRlX2RldmljZV9hc3lu Y182NF9oIChhLCBsZW4sIGFzeW5jKQorICAgICAgICAgIHVzZSBpc29fY19i aW5kaW5nLCBvbmx5OiBjX2ludDY0X3QKKyAgICAgICAgICBpbXBvcnQgYWNj X2hhbmRsZV9raW5kCisgICAgICAgICAgIUdDQyQgQVRUUklCVVRFUyBOT19B UkdfQ0hFQ0sgOjogYQorICAgICAgICAgIHR5cGUgKCopLCBkaW1lbnNpb24g KCopIDo6IGEKKyAgICAgICAgICBpbnRlZ2VyIChjX2ludDY0X3QpIGxlbgor ICAgICAgICAgIGludGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMKKyAg ICAgICAgZW5kIHN1YnJvdXRpbmUKKworICAgICAgICBzdWJyb3V0aW5lIGFj Y191cGRhdGVfZGV2aWNlX2FzeW5jX2FycmF5X2ggKGEsIGFzeW5jXykKKyAg ICAgICAgICBpbXBvcnQgYWNjX2hhbmRsZV9raW5kCisgICAgICAgICAgdHlw ZSAoKiksIGRpbWVuc2lvbiAoLi4pLCBjb250aWd1b3VzIDo6IGEKKyAgICAg ICAgICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpIGFzeW5jXworICAgICAg ICBlbmQgc3Vicm91dGluZQorICAgICAgZW5kIGludGVyZmFjZQorCisgICAg ICBpbnRlcmZhY2UgYWNjX3VwZGF0ZV9zZWxmX2FzeW5jCisgICAgICAgIHN1 YnJvdXRpbmUgYWNjX3VwZGF0ZV9zZWxmX2FzeW5jXzMyX2ggKGEsIGxlbiwg YXN5bmMpCisgICAgICAgICAgdXNlIGlzb19jX2JpbmRpbmcsIG9ubHk6IGNf aW50MzJfdAorICAgICAgICAgIGltcG9ydCBhY2NfaGFuZGxlX2tpbmQKKyAg ICAgICAgICAhR0NDJCBBVFRSSUJVVEVTIE5PX0FSR19DSEVDSyA6OiBhCisg ICAgICAgICAgdHlwZSAoKiksIGRpbWVuc2lvbiAoKikgOjogYQorICAgICAg ICAgIGludGVnZXIgKGNfaW50MzJfdCkgbGVuCisgICAgICAgICAgaW50ZWdl ciAoYWNjX2hhbmRsZV9raW5kKSBhc3luYworICAgICAgICBlbmQgc3Vicm91 dGluZQorCisgICAgICAgIHN1YnJvdXRpbmUgYWNjX3VwZGF0ZV9zZWxmX2Fz eW5jXzY0X2ggKGEsIGxlbiwgYXN5bmMpCisgICAgICAgICAgdXNlIGlzb19j X2JpbmRpbmcsIG9ubHk6IGNfaW50NjRfdAorICAgICAgICAgIGltcG9ydCBh Y2NfaGFuZGxlX2tpbmQKKyAgICAgICAgICAhR0NDJCBBVFRSSUJVVEVTIE5P X0FSR19DSEVDSyA6OiBhCisgICAgICAgICAgdHlwZSAoKiksIGRpbWVuc2lv biAoKikgOjogYQorICAgICAgICAgIGludGVnZXIgKGNfaW50NjRfdCkgbGVu CisgICAgICAgICAgaW50ZWdlciAoYWNjX2hhbmRsZV9raW5kKSBhc3luYwor ICAgICAgICBlbmQgc3Vicm91dGluZQorCisgICAgICAgIHN1YnJvdXRpbmUg YWNjX3VwZGF0ZV9zZWxmX2FzeW5jX2FycmF5X2ggKGEsIGFzeW5jXykKKyAg ICAgICAgICBpbXBvcnQgYWNjX2hhbmRsZV9raW5kCisgICAgICAgICAgdHlw ZSAoKiksIGRpbWVuc2lvbiAoLi4pLCBjb250aWd1b3VzIDo6IGEKKyAgICAg ICAgICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpIGFzeW5jXworICAgICAg ICBlbmQgc3Vicm91dGluZQorICAgICAgZW5kIGludGVyZmFjZQpJbmRleDog bGliZ29tcC9wbHVnaW4vcGx1Z2luLW52cHR4LmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gbGliZ29tcC9wbHVnaW4vcGx1Z2luLW52cHR4LmMJKHJl dmlzaW9uIDI0NTM4MikKKysrIGxpYmdvbXAvcGx1Z2luL3BsdWdpbi1udnB0 eC5jCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsMTMgKzQxNCwxMCBAQCBzZWxl Y3Rfc3RyZWFtX2Zvcl9hc3luYyAoaW50IGFzeW5jLCBwdGhyZWFkX3QgdGhy ZQogICBzdHJ1Y3QgcHR4X3N0cmVhbSAqc3RyZWFtID0gTlVMTDsKICAgaW50 IG9yaWdfYXN5bmMgPSBhc3luYzsKIAotICAvKiBUaGUgc3BlY2lhbCB2YWx1 ZSBhY2NfYXN5bmNfbm92YWwgKC0xKSBtYXBzIChmb3Igbm93KSB0byBhbgot ICAgICBpbXBsaWNpdGx5LWNyZWF0ZWQgc3RyZWFtLCB3aGljaCBpcyB0aGVu IGhhbmRsZWQgdGhlIHNhbWUgYXMgYW55IG90aGVyCi0gICAgIG51bWJlcmVk IGFzeW5jIHN0cmVhbS4gIE90aGVyIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwg ZS5nLiB1c2luZyB0aGUgbnVsbAotICAgICBzdHJlYW0gZm9yIGFub255bW91 cyBhc3luYyBvcGVyYXRpb25zLCBvciBjaG9vc2luZyBhbiBpZGxlIHN0cmVh bSBmcm9tIGFuCi0gICAgIGFjdGl2ZSBzZXQuICBCdXQsIHN0aWNrIHdpdGgg dGhpcyBmb3Igbm93LiAgKi8KLSAgaWYgKGFzeW5jID4gYWNjX2FzeW5jX3N5 bmMpCi0gICAgYXN5bmMrKzsKKyAgLyogVGhlIHNwZWNpYWwgdmFsdWUgYWNj X2FzeW5jX25vdmFsICgtMSkgbWFwcyB0byB0aGUgdGhyZWFkLXNwZWNpZmlj CisgICAgIGRlZmF1bHQgYXN5bmMgc3RyZWFtLiAgKi8KKyAgaWYgKGFzeW5j ID09IGFjY19hc3luY19ub3ZhbCkKKyAgICBhc3luYyA9IEdPTVBfUExVR0lO X2FjY190aHJlYWRfZGVmYXVsdF9hc3luYyAoKTsKIAogICBpZiAoY3JlYXRl KQogICAgIHB0aHJlYWRfbXV0ZXhfbG9jayAoJnB0eF9kZXYtPnN0cmVhbV9s b2NrKTsKSW5kZXg6IGxpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAub2FjYy1m b3J0cmFuL2xpYi0xNi5mOTAKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g bGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5vYWNjLWZvcnRyYW4vbGliLTE2 LmY5MAkocmV2aXNpb24gMCkKKysrIGxpYmdvbXAvdGVzdHN1aXRlL2xpYmdv bXAub2FjYy1mb3J0cmFuL2xpYi0xNi5mOTAJKHJldmlzaW9uIDApCkBAIC0w LDAgKzEsNTcgQEAKKyEgeyBkZy1kbyBydW4gfQorISB7IGRnLXNraXAtaWYg IiIgeyAqLSotKiB9IHsgIioiIH0geyAiLURBQ0NfTUVNX1NIQVJFRD0wIiB9 IH0KKworcHJvZ3JhbSBtYWluCisgIHVzZSBvcGVuYWNjCisgIGltcGxpY2l0 IG5vbmUKKworICBpbnRlZ2VyLCBwYXJhbWV0ZXIgOjogTiA9IDI1NgorICBp bnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBoKDopCisgIGludGVnZXIgOjogaQor ICBpbnRlZ2VyIDo6IGFzeW5jID0gNQorCisgIGFsbG9jYXRlIChoKE4pKQor CisgIGRvIGkgPSAxLCBOCisgICAgaChpKSA9IGkKKyAgZW5kIGRvIAorCisg IGNhbGwgYWNjX2NvcHlpbiAoaCkKKworICBkbyBpID0gMSwgTgorICAgIGgo aSkgPSBpICsgaQorICBlbmQgZG8gCisKKyAgY2FsbCBhY2NfdXBkYXRlX2Rl dmljZV9hc3luYyAoaCwgc2l6ZW9mIChoKSwgYXN5bmMpCisKKyAgaWYgKGFj Y19pc19wcmVzZW50IChoKSAubmVxdi4gLlRSVUUuKSBjYWxsIGFib3J0CisK KyAgaCg6KSA9IDAKKworICBjYWxsIGFjY19jb3B5b3V0X2FzeW5jIChoLCBz aXplb2YgKGgpLCBhc3luYykKKworICBjYWxsIGFjY193YWl0IChhc3luYykK KworICBkbyBpID0gMSwgTgorICAgIGlmIChoKGkpIC89IGkgKyBpKSBjYWxs IGFib3J0CisgIGVuZCBkbyAKKworICBjYWxsIGFjY19jb3B5aW4gKGgsIHNp emVvZiAoaCkpCisKKyAgaCg6KSA9IDAKKworICBjYWxsIGFjY191cGRhdGVf c2VsZl9hc3luYyAoaCwgc2l6ZW9mIChoKSwgYXN5bmMpCisgIAorICBpZiAo YWNjX2lzX3ByZXNlbnQgKGgpIC5uZXF2LiAuVFJVRS4pIGNhbGwgYWJvcnQK KworICBkbyBpID0gMSwgTgorICAgIGlmIChoKGkpIC89IGkgKyBpKSBjYWxs IGFib3J0CisgIGVuZCBkbyAKKworICBjYWxsIGFjY19kZWxldGVfYXN5bmMg KGgsIGFzeW5jKQorCisgIGNhbGwgYWNjX3dhaXQgKGFzeW5jKQorCisgIGlm IChhY2NfaXNfcHJlc2VudCAoaCkgLm5lcXYuIC5GQUxTRS4pIGNhbGwgYWJv cnQKKyAgCitlbmQgcHJvZ3JhbQpJbmRleDogbGliZ29tcC90ZXN0c3VpdGUv bGliZ29tcC5vYWNjLWMtYysrLWNvbW1vbi9saWItOTQuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBsaWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLm9h Y2MtYy1jKystY29tbW9uL2xpYi05NC5jCShyZXZpc2lvbiAwKQorKysgbGli Z29tcC90ZXN0c3VpdGUvbGliZ29tcC5vYWNjLWMtYysrLWNvbW1vbi9saWIt OTQuYwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MiBAQAorLyogeyBkZy1k byBydW4gfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICIq IiB9IHsgIi1EQUNDX01FTV9TSEFSRUQ9MCIgfSB9ICovCisKKyNpbmNsdWRl IDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxv cGVuYWNjLmg+CisKK2ludAorbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQoreworICBjb25zdCBpbnQgTiA9IDI1NjsKKyAgaW50IGk7CisgIGludCBh c3luYyA9IDg7CisgIHVuc2lnbmVkIGNoYXIgKmg7CisKKyAgaCA9ICh1bnNp Z25lZCBjaGFyICopIG1hbGxvYyAoTik7CisKKyAgZm9yIChpID0gMDsgaSA8 IE47IGkrKykKKyAgICB7CisgICAgICBoW2ldID0gaTsKKyAgICB9CisKKyAg YWNjX2NvcHlpbl9hc3luYyAoaCwgTiwgYXN5bmMpOworCisgIG1lbXNldCAo aCwgMCwgTik7CisKKyAgYWNjX3dhaXQgKGFzeW5jKTsKKworICBhY2NfY29w eW91dF9hc3luYyAoaCwgTiwgYXN5bmMgKyAxKTsKKworICBhY2Nfd2FpdCAo YXN5bmMgKyAxKTsKKworICBmb3IgKGkgPSAwOyBpIDwgTjsgaSsrKQorICAg IHsKKyAgICAgIGlmIChoW2ldICE9IGkpCisJYWJvcnQgKCk7CisgICAgfQor CisgIGZyZWUgKGgpOworCisgIHJldHVybiAwOworfQpJbmRleDogbGliZ29t cC90ZXN0c3VpdGUvbGliZ29tcC5vYWNjLWMtYysrLWNvbW1vbi9saWItOTUu Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWJnb21wL3Rlc3RzdWl0 ZS9saWJnb21wLm9hY2MtYy1jKystY29tbW9uL2xpYi05NS5jCShyZXZpc2lv biAwKQorKysgbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5vYWNjLWMtYysr LWNvbW1vbi9saWItOTUuYwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NSBA QAorLyogeyBkZy1kbyBydW4gfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsg Ki0qLSogfSB7ICIqIiB9IHsgIi1EQUNDX01FTV9TSEFSRUQ9MCIgfSB9ICov CisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4K KyNpbmNsdWRlIDxvcGVuYWNjLmg+CisKK2ludAorbWFpbiAoaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQoreworICBjb25zdCBpbnQgTiA9IDI1NjsKKyAgaW50 IGksIHEgPSA1OworICB1bnNpZ25lZCBjaGFyICpoLCAqZzsKKyAgdm9pZCAq ZDsKKworICBoID0gKHVuc2lnbmVkIGNoYXIgKikgbWFsbG9jIChOKTsKKyAg ZyA9ICh1bnNpZ25lZCBjaGFyICopIG1hbGxvYyAoTik7CisgIGZvciAoaSA9 IDA7IGkgPCBOOyBpKyspCisgICAgeworICAgICAgZ1tpXSA9IGk7CisgICAg fQorCisgIGFjY19jcmVhdGVfYXN5bmMgKGgsIE4sIHEpOworCisgIGFjY19t ZW1jcHlfdG9fZGV2aWNlX2FzeW5jIChhY2NfZGV2aWNlcHRyIChoKSwgZywg TiwgcSk7CisgIG1lbXNldCAoJmhbMF0sIDAsIE4pOworCisgIGFjY193YWl0 IChxKTsKKworICBhY2NfdXBkYXRlX3NlbGZfYXN5bmMgKGgsIE4sIHEgKyAx KTsKKyAgYWNjX2RlbGV0ZV9hc3luYyAoaCwgTiwgcSArIDEpOworCisgIGFj Y193YWl0IChxICsgMSk7CisKKyAgZm9yIChpID0gMDsgaSA8IE47IGkrKykK KyAgICB7CisgICAgICBpZiAoaFtpXSAhPSBpKQorCWFib3J0ICgpOworICAg IH0KKworICBmcmVlIChoKTsKKyAgZnJlZSAoZyk7CisKKyAgcmV0dXJuIDA7 Cit9CkluZGV4OiBsaWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLm9hY2MtYy1j KystY29tbW9uL2FzeW5jd2FpdC0yLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5vYWNjLWMtYysrLWNv bW1vbi9hc3luY3dhaXQtMi5jCShyZXZpc2lvbiAwKQorKysgbGliZ29tcC90 ZXN0c3VpdGUvbGliZ29tcC5vYWNjLWMtYysrLWNvbW1vbi9hc3luY3dhaXQt Mi5jCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkwNCBAQAorLyogeyBkZy1k byBydW4geyB0YXJnZXQgb3BlbmFjY19udmlkaWFfYWNjZWxfc2VsZWN0ZWQg fSB9ICovCisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWxjdWRhIiB9 ICovCisKKyNpbmNsdWRlIDxvcGVuYWNjLmg+CisjaW5jbHVkZSA8c3RkbGli Lmg+CisjaW5jbHVkZSAiY3VkYS5oIgorCisjaW5jbHVkZSA8c3RkaW8uaD4K KyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKwor aW50CittYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgQ1Vy ZXN1bHQgcjsKKyAgICBDVXN0cmVhbSBzdHJlYW0xOworICAgIGludCBOID0g MTI4OyAvLzEwMjQgKiAxMDI0OworICAgIGZsb2F0ICphLCAqYiwgKmMsICpk LCAqZTsKKyAgICBpbnQgaTsKKyAgICBpbnQgbmJ5dGVzOworCisgICAgc3Jh bmQgKHRpbWUgKE5VTEwpKTsKKyAgICBpbnQgcyA9IHJhbmQgKCkgJSAxMDA7 CisKKyAgICBhY2NfaW5pdCAoYWNjX2RldmljZV9udmlkaWEpOworCisgICAg bmJ5dGVzID0gTiAqIHNpemVvZiAoZmxvYXQpOworCisgICAgYSA9IChmbG9h dCAqKSBtYWxsb2MgKG5ieXRlcyk7CisgICAgYiA9IChmbG9hdCAqKSBtYWxs b2MgKG5ieXRlcyk7CisgICAgYyA9IChmbG9hdCAqKSBtYWxsb2MgKG5ieXRl cyk7CisgICAgZCA9IChmbG9hdCAqKSBtYWxsb2MgKG5ieXRlcyk7CisgICAg ZSA9IChmbG9hdCAqKSBtYWxsb2MgKG5ieXRlcyk7CisKKyAgICBmb3IgKGkg PSAwOyBpIDwgTjsgaSsrKQorICAgIHsKKyAgICAgICAgYVtpXSA9IDMuMDsK KyAgICAgICAgYltpXSA9IDAuMDsKKyAgICB9CisKKyAgICBhY2Nfc2V0X2Rl ZmF1bHRfYXN5bmMgKHMpOworCisjcHJhZ21hIGFjYyBkYXRhIGNvcHkgKGFb MDpOXSkgY29weSAoYlswOk5dKSBjb3B5aW4gKE4pCisgICAgeworCisjcHJh Z21hIGFjYyBwYXJhbGxlbCBhc3luYworICAgIHsKKyAgICAgICAgaW50IGlp OworCisgICAgICAgIGZvciAoaWkgPSAwOyBpaSA8IE47IGlpKyspCisgICAg ICAgICAgICBiW2lpXSA9IGFbaWldOworICAgIH0KKworI3ByYWdtYSBhY2Mg d2FpdAorCisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IE47IGkrKykK KyAgICB7CisgICAgICAgIGlmIChhW2ldICE9IDMuMCkKKyAgICAgICAgICAg IGFib3J0ICgpOworCisgICAgICAgIGlmIChiW2ldICE9IDMuMCkKKyAgICAg ICAgICAgIGFib3J0ICgpOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkg PCBOOyBpKyspCisgICAgeworICAgICAgICBhW2ldID0gMi4wOworICAgICAg ICBiW2ldID0gMC4wOworICAgIH0KKworI3ByYWdtYSBhY2MgZGF0YSBjb3B5 IChhWzA6Tl0pIGNvcHkgKGJbMDpOXSkgY29weWluIChOKQorICAgIHsKKwor I3ByYWdtYSBhY2MgcGFyYWxsZWwgYXN5bmMKKyAgICB7CisgICAgICAgIGlu dCBpaTsKKworICAgICAgICBmb3IgKGlpID0gMDsgaWkgPCBOOyBpaSsrKQor ICAgICAgICAgICAgYltpaV0gPSBhW2lpXTsKKyAgICB9CisKKyNwcmFnbWEg YWNjIHdhaXQgKHMpCisKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwg TjsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKGFbaV0gIT0gMi4wKQorICAg ICAgICAgICAgYWJvcnQgKCk7CisKKyAgICAgICAgaWYgKGJbaV0gIT0gMi4w KQorICAgICAgICAgICAgYWJvcnQgKCk7CisgICAgfQorCisgICAgZm9yIChp ID0gMDsgaSA8IE47IGkrKykKKyAgICB7CisgICAgICAgIGFbaV0gPSAzLjA7 CisgICAgICAgIGJbaV0gPSAwLjA7CisgICAgICAgIGNbaV0gPSAwLjA7Cisg ICAgICAgIGRbaV0gPSAwLjA7CisgICAgfQorCisjcHJhZ21hIGFjYyBkYXRh IGNvcHkgKGFbMDpOXSkgY29weSAoYlswOk5dKSBjb3B5IChjWzA6Tl0pIGNv cHkgKGRbMDpOXSkgY29weWluIChOKQorICAgIHsKKworI3ByYWdtYSBhY2Mg cGFyYWxsZWwgYXN5bmMKKyAgICB7CisgICAgICAgIGludCBpaTsKKworICAg ICAgICBmb3IgKGlpID0gMDsgaWkgPCBOOyBpaSsrKQorICAgICAgICAgICAg YltpaV0gPSAoYVtpaV0gKiBhW2lpXSAqIGFbaWldKSAvIGFbaWldOworICAg IH0KKworI3ByYWdtYSBhY2MgcGFyYWxsZWwgYXN5bmMKKyAgICB7CisgICAg ICAgIGludCBpaTsKKworICAgICAgICBmb3IgKGlpID0gMDsgaWkgPCBOOyBp aSsrKQorICAgICAgICAgICAgY1tpaV0gPSAoYVtpaV0gKyBhW2lpXSArIGFb aWldICsgYVtpaV0pIC8gYVtpaV07CisgICAgfQorCisKKyNwcmFnbWEgYWNj IHBhcmFsbGVsIGFzeW5jCisgICAgeworICAgICAgICBpbnQgaWk7CisKKyAg ICAgICAgZm9yIChpaSA9IDA7IGlpIDwgTjsgaWkrKykKKyAgICAgICAgICAg IGRbaWldID0gKChhW2lpXSAqIGFbaWldICsgYVtpaV0pIC8gYVtpaV0pIC0g YVtpaV07CisgICAgfQorCisjcHJhZ21hIGFjYyB3YWl0IChzKQorCisgICAg fQorCisgICAgZm9yIChpID0gMDsgaSA8IE47IGkrKykKKyAgICB7CisgICAg ICAgIGlmIChhW2ldICE9IDMuMCkKKyAgICAgICAgICAgIGFib3J0ICgpOwor CisgICAgICAgIGlmIChiW2ldICE9IDkuMCkKKyAgICAgICAgICAgIGFib3J0 ICgpOworCisgICAgICAgIGlmIChjW2ldICE9IDQuMCkKKyAgICAgICAgICAg IGFib3J0ICgpOworCisgICAgICAgIGlmIChkW2ldICE9IDEuMCkKKyAgICAg ICAgICAgIGFib3J0ICgpOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkg PCBOOyBpKyspCisgICAgeworICAgICAgICBhW2ldID0gMi4wOworICAgICAg ICBiW2ldID0gMC4wOworICAgICAgICBjW2ldID0gMC4wOworICAgICAgICBk W2ldID0gMC4wOworICAgICAgICBlW2ldID0gMC4wOworICAgIH0KKworI3By YWdtYSBhY2MgZGF0YSBjb3B5IChhWzA6Tl0sIGJbMDpOXSwgY1swOk5dLCBk WzA6Tl0sIGVbMDpOXSkgY29weWluIChOKQorICAgIHsKKworI3ByYWdtYSBh Y2MgcGFyYWxsZWwgYXN5bmMKKyAgICB7CisgICAgICAgIGludCBpaTsKKwor ICAgICAgICBmb3IgKGlpID0gMDsgaWkgPCBOOyBpaSsrKQorICAgICAgICAg ICAgYltpaV0gPSAoYVtpaV0gKiBhW2lpXSAqIGFbaWldKSAvIGFbaWldOwor ICAgIH0KKworI3ByYWdtYSBhY2MgcGFyYWxsZWwgYXN5bmMKKyAgICB7Cisg ICAgICAgIGludCBpaTsKKworICAgICAgICBmb3IgKGlpID0gMDsgaWkgPCBO OyBpaSsrKQorICAgICAgICAgICAgY1tpaV0gPSAoYVtpaV0gKyBhW2lpXSAr IGFbaWldICsgYVtpaV0pIC8gYVtpaV07CisgICAgfQorCisjcHJhZ21hIGFj YyBwYXJhbGxlbCBhc3luYworICAgIHsKKyAgICAgICAgaW50IGlpOworCisg ICAgICAgIGZvciAoaWkgPSAwOyBpaSA8IE47IGlpKyspCisgICAgICAgICAg ICBkW2lpXSA9ICgoYVtpaV0gKiBhW2lpXSArIGFbaWldKSAvIGFbaWldKSAt IGFbaWldOworICAgIH0KKworI3ByYWdtYSBhY2MgcGFyYWxsZWwgd2FpdCAo cykgYXN5bmMgKHMpCisgICAgeworICAgICAgICBpbnQgaWk7CisKKyAgICAg ICAgZm9yIChpaSA9IDA7IGlpIDwgTjsgaWkrKykKKyAgICAgICAgICAgIGVb aWldID0gYVtpaV0gKyBiW2lpXSArIGNbaWldICsgZFtpaV07CisgICAgfQor CisjcHJhZ21hIGFjYyB3YWl0IChzKQorCisgICAgfQorCisgICAgZm9yIChp ID0gMDsgaSA8IE47IGkrKykKKyAgICB7CisgICAgICAgIGlmIChhW2ldICE9 IDIuMCkKKyAgICAgICAgICAgIGFib3J0ICgpOworCisgICAgICAgIGlmIChi W2ldICE9IDQuMCkKKyAgICAgICAgICAgIGFib3J0ICgpOworCisgICAgICAg IGlmIChjW2ldICE9IDQuMCkKKyAgICAgICAgICAgIGFib3J0ICgpOworCisg ICAgICAgIGlmIChkW2ldICE9IDEuMCkKKyAgICAgICAgICAgIGFib3J0ICgp OworCisgICAgICAgIGlmIChlW2ldICE9IDExLjApCisgICAgICAgICAgICBh Ym9ydCAoKTsKKyAgICB9CisKKworICAgIHIgPSBjdVN0cmVhbUNyZWF0ZSAo JnN0cmVhbTEsIENVX1NUUkVBTV9OT05fQkxPQ0tJTkcpOworICAgIGlmIChy ICE9IENVREFfU1VDQ0VTUykKKyAgICB7CisgICAgICAgIGZwcmludGYgKHN0 ZGVyciwgImN1U3RyZWFtQ3JlYXRlIGZhaWxlZDogJWRcbiIsIHIpOworICAg ICAgICBhYm9ydCAoKTsKKyAgICB9CisKKyAgICBhY2Nfc2V0X2N1ZGFfc3Ry ZWFtICgxLCBzdHJlYW0xKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBOOyBp KyspCisgICAgeworICAgICAgICBhW2ldID0gNS4wOworICAgICAgICBiW2ld ID0gMC4wOworICAgIH0KKworI3ByYWdtYSBhY2MgZGF0YSBjb3B5IChhWzA6 Tl0sIGJbMDpOXSkgY29weWluIChOKQorICAgIHsKKworI3ByYWdtYSBhY2Mg cGFyYWxsZWwgYXN5bmMKKyAgICB7CisgICAgICAgIGludCBpaTsKKworICAg ICAgICBmb3IgKGlpID0gMDsgaWkgPCBOOyBpaSsrKQorICAgICAgICAgICAg YltpaV0gPSBhW2lpXTsKKyAgICB9CisKKyNwcmFnbWEgYWNjIHdhaXQgKHMp CisKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgTjsgaSsrKQorICAg IHsKKyAgICAgICAgaWYgKGFbaV0gIT0gNS4wKQorICAgICAgICAgICAgYWJv cnQgKCk7CisKKyAgICAgICAgaWYgKGJbaV0gIT0gNS4wKQorICAgICAgICAg ICAgYWJvcnQgKCk7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IE47 IGkrKykKKyAgICB7CisgICAgICAgIGFbaV0gPSA3LjA7CisgICAgICAgIGJb aV0gPSAwLjA7CisgICAgICAgIGNbaV0gPSAwLjA7CisgICAgICAgIGRbaV0g PSAwLjA7CisgICAgfQorCisjcHJhZ21hIGFjYyBkYXRhIGNvcHkgKGFbMDpO XSkgY29weSAoYlswOk5dKSBjb3B5IChjWzA6Tl0pIGNvcHkgKGRbMDpOXSkg Y29weWluIChOKQorICAgIHsKKworI3ByYWdtYSBhY2MgcGFyYWxsZWwgYXN5 bmMKKyAgICB7CisgICAgICAgIGludCBpaTsKKworICAgICAgICBmb3IgKGlp ID0gMDsgaWkgPCBOOyBpaSsrKQorICAgICAgICAgICAgYltpaV0gPSAoYVtp aV0gKiBhW2lpXSAqIGFbaWldKSAvIGFbaWldOworICAgIH0KKworI3ByYWdt YSBhY2MgcGFyYWxsZWwgYXN5bmMKKyAgICB7CisgICAgICAgIGludCBpaTsK KworICAgICAgICBmb3IgKGlpID0gMDsgaWkgPCBOOyBpaSsrKQorICAgICAg ICAgICAgY1tpaV0gPSAoYVtpaV0gKyBhW2lpXSArIGFbaWldICsgYVtpaV0p IC8gYVtpaV07CisgICAgfQorCisjcHJhZ21hIGFjYyBwYXJhbGxlbCBhc3lu YworICAgIHsKKyAgICAgICAgaW50IGlpOworCisgICAgICAgIGZvciAoaWkg PSAwOyBpaSA8IE47IGlpKyspCisgICAgICAgICAgICBkW2lpXSA9ICgoYVtp aV0gKiBhW2lpXSArIGFbaWldKSAvIGFbaWldKSAtIGFbaWldOworICAgIH0K KworI3ByYWdtYSBhY2Mgd2FpdCAocykKKworICAgIH0KKworICAgIGZvciAo aSA9IDA7IGkgPCBOOyBpKyspCisgICAgeworICAgICAgICBpZiAoYVtpXSAh PSA3LjApCisgICAgICAgICAgICBhYm9ydCAoKTsKKworICAgICAgICBpZiAo YltpXSAhPSA0OS4wKQorICAgICAgICAgICAgYWJvcnQgKCk7CisKKyAgICAg ICAgaWYgKGNbaV0gIT0gNC4wKQorICAgICAgICAgICAgYWJvcnQgKCk7CisK KyAgICAgICAgaWYgKGRbaV0gIT0gMS4wKQorICAgICAgICAgICAgYWJvcnQg KCk7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IE47IGkrKykKKyAg ICB7CisgICAgICAgIGFbaV0gPSAzLjA7CisgICAgICAgIGJbaV0gPSAwLjA7 CisgICAgICAgIGNbaV0gPSAwLjA7CisgICAgICAgIGRbaV0gPSAwLjA7Cisg ICAgICAgIGVbaV0gPSAwLjA7CisgICAgfQorCisjcHJhZ21hIGFjYyBkYXRh IGNvcHkgKGFbMDpOXSwgYlswOk5dLCBjWzA6Tl0sIGRbMDpOXSwgZVswOk5d KSBjb3B5aW4gKE4pCisgICAgeworCisjcHJhZ21hIGFjYyBwYXJhbGxlbCBh c3luYworICAgIHsKKyAgICAgICAgaW50IGlpOworCisgICAgICAgIGZvciAo aWkgPSAwOyBpaSA8IE47IGlpKyspCisgICAgICAgICAgICBiW2lpXSA9IChh W2lpXSAqIGFbaWldICogYVtpaV0pIC8gYVtpaV07CisgICAgfQorCisjcHJh Z21hIGFjYyBwYXJhbGxlbCBhc3luYworICAgIHsKKyAgICAgICAgaW50IGlp OworCisgICAgICAgIGZvciAoaWkgPSAwOyBpaSA8IE47IGlpKyspCisgICAg ICAgICAgICBjW2lpXSA9IChhW2lpXSArIGFbaWldICsgYVtpaV0gKyBhW2lp XSkgLyBhW2lpXTsKKyAgICB9CisKKyNwcmFnbWEgYWNjIHBhcmFsbGVsIGFz eW5jCisgICAgeworICAgICAgICBpbnQgaWk7CisKKyAgICAgICAgZm9yIChp aSA9IDA7IGlpIDwgTjsgaWkrKykKKyAgICAgICAgICAgIGRbaWldID0gKChh W2lpXSAqIGFbaWldICsgYVtpaV0pIC8gYVtpaV0pIC0gYVtpaV07CisgICAg fQorCisjcHJhZ21hIGFjYyBwYXJhbGxlbCB3YWl0IChzKSBhc3luYyAocykK KyAgICB7CisgICAgICAgIGludCBpaTsKKworICAgICAgICBmb3IgKGlpID0g MDsgaWkgPCBOOyBpaSsrKQorICAgICAgICAgICAgZVtpaV0gPSBhW2lpXSAr IGJbaWldICsgY1tpaV0gKyBkW2lpXTsKKyAgICB9CisKKyNwcmFnbWEgYWNj IHdhaXQgKHMpCisKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgTjsg aSsrKQorICAgIHsKKyAgICAgICAgaWYgKGFbaV0gIT0gMy4wKQorICAgICAg ICAgICAgYWJvcnQgKCk7CisKKyAgICAgICAgaWYgKGJbaV0gIT0gOS4wKQor ICAgICAgICAgICAgYWJvcnQgKCk7CisKKyAgICAgICAgaWYgKGNbaV0gIT0g NC4wKQorICAgICAgICAgICAgYWJvcnQgKCk7CisKKyAgICAgICAgaWYgKGRb aV0gIT0gMS4wKQorICAgICAgICAgICAgYWJvcnQgKCk7CisKKyAgICAgICAg aWYgKGVbaV0gIT0gMTcuMCkKKyAgICAgICAgICAgIGFib3J0ICgpOworICAg IH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBOOyBpKyspCisgICAgeworICAg ICAgICBhW2ldID0gNC4wOworICAgICAgICBiW2ldID0gMC4wOworICAgICAg ICBjW2ldID0gMC4wOworICAgICAgICBkW2ldID0gMC4wOworICAgICAgICBl W2ldID0gMC4wOworICAgIH0KKworI3ByYWdtYSBhY2MgZGF0YSBjb3B5aW4g KGFbMDpOXSwgYlswOk5dLCBjWzA6Tl0pIGNvcHlpbiAoTikKKyAgICB7CisK KyNwcmFnbWEgYWNjIHBhcmFsbGVsIGFzeW5jCisgICAgeworICAgICAgICBp bnQgaWk7CisKKyAgICAgICAgZm9yIChpaSA9IDA7IGlpIDwgTjsgaWkrKykK KyAgICAgICAgICAgIGJbaWldID0gKGFbaWldICogYVtpaV0gKiBhW2lpXSkg LyBhW2lpXTsKKyAgICB9CisKKyNwcmFnbWEgYWNjIHBhcmFsbGVsIGFzeW5j CisgICAgeworICAgICAgICBpbnQgaWk7CisKKyAgICAgICAgZm9yIChpaSA9 IDA7IGlpIDwgTjsgaWkrKykKKyAgICAgICAgICAgIGNbaWldID0gKGFbaWld ICsgYVtpaV0gKyBhW2lpXSArIGFbaWldKSAvIGFbaWldOworICAgIH0KKwor I3ByYWdtYSBhY2MgdXBkYXRlIGhvc3QgKGFbMDpOXSwgYlswOk5dLCBjWzA6 Tl0pIHdhaXQgKHMpCisKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwg TjsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKGFbaV0gIT0gNC4wKQorICAg ICAgICAgICAgYWJvcnQgKCk7CisKKyAgICAgICAgaWYgKGJbaV0gIT0gMTYu MCkKKyAgICAgICAgICAgIGFib3J0ICgpOworCisgICAgICAgIGlmIChjW2ld ICE9IDQuMCkKKyAgICAgICAgICAgIGFib3J0ICgpOworICAgIH0KKworCisg ICAgZm9yIChpID0gMDsgaSA8IE47IGkrKykKKyAgICB7CisgICAgICAgIGFb aV0gPSA1LjA7CisgICAgICAgIGJbaV0gPSAwLjA7CisgICAgICAgIGNbaV0g PSAwLjA7CisgICAgICAgIGRbaV0gPSAwLjA7CisgICAgICAgIGVbaV0gPSAw LjA7CisgICAgfQorCisjcHJhZ21hIGFjYyBkYXRhIGNvcHlpbiAoYVswOk5d LCBiWzA6Tl0sIGNbMDpOXSkgY29weWluIChOKQorICAgIHsKKworI3ByYWdt YSBhY2MgcGFyYWxsZWwgYXN5bmMKKyAgICB7CisgICAgICAgIGludCBpaTsK KworICAgICAgICBmb3IgKGlpID0gMDsgaWkgPCBOOyBpaSsrKQorICAgICAg ICAgICAgYltpaV0gPSAoYVtpaV0gKiBhW2lpXSAqIGFbaWldKSAvIGFbaWld OworICAgIH0KKworI3ByYWdtYSBhY2MgcGFyYWxsZWwgYXN5bmMKKyAgICB7 CisgICAgICAgIGludCBpaTsKKworICAgICAgICBmb3IgKGlpID0gMDsgaWkg PCBOOyBpaSsrKQorICAgICAgICAgICAgY1tpaV0gPSAoYVtpaV0gKyBhW2lp XSArIGFbaWldICsgYVtpaV0pIC8gYVtpaV07CisgICAgfQorCisjcHJhZ21h IGFjYyB1cGRhdGUgaG9zdCAoYVswOk5dLCBiWzA6Tl0sIGNbMDpOXSkgYXN5 bmMKKworI3ByYWdtYSBhY2Mgd2FpdCAocykKKworICAgIH0KKworICAgIGZv ciAoaSA9IDA7IGkgPCBOOyBpKyspCisgICAgeworICAgICAgICBpZiAoYVtp XSAhPSA1LjApCisgICAgICAgICAgICBhYm9ydCAoKTsKKworICAgICAgICBp ZiAoYltpXSAhPSAyNS4wKQorICAgICAgICAgICAgYWJvcnQgKCk7CisKKyAg ICAgICAgaWYgKGNbaV0gIT0gNC4wKQorICAgICAgICAgICAgYWJvcnQgKCk7 CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IE47IGkrKykKKyAgICB7 CisgICAgICAgIGFbaV0gPSAzLjA7CisgICAgICAgIGJbaV0gPSAwLjA7Cisg ICAgfQorCisjcHJhZ21hIGFjYyBkYXRhIGNvcHkgKGFbMDpOXSkgY29weSAo YlswOk5dKSBjb3B5aW4gKE4pCisgICAgeworCisjcHJhZ21hIGFjYyBrZXJu ZWxzIGFzeW5jCisgICAgeworICAgICAgICBpbnQgaWk7CisKKyAgICAgICAg Zm9yIChpaSA9IDA7IGlpIDwgTjsgaWkrKykKKyAgICAgICAgICAgIGJbaWld ID0gYVtpaV07CisgICAgfQorCisjcHJhZ21hIGFjYyB3YWl0CisKKyAgICB9 CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgTjsgaSsrKQorICAgIHsKKyAgICAg ICAgaWYgKGFbaV0gIT0gMy4wKQorICAgICAgICAgICAgYWJvcnQgKCk7CisK KyAgICAgICAgaWYgKGJbaV0gIT0gMy4wKQorICAgICAgICAgICAgYWJvcnQg KCk7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IE47IGkrKykKKyAg ICB7CisgICAgICAgIGFbaV0gPSAyLjA7CisgICAgICAgIGJbaV0gPSAwLjA7 CisgICAgfQorCisjcHJhZ21hIGFjYyBkYXRhIGNvcHkgKGFbMDpOXSkgY29w eSAoYlswOk5dKSBjb3B5aW4gKE4pCisgICAgeworCisjcHJhZ21hIGFjYyBr ZXJuZWxzIGFzeW5jCisgICAgeworICAgICAgICBpbnQgaWk7CisKKyAgICAg ICAgZm9yIChpaSA9IDA7IGlpIDwgTjsgaWkrKykKKyAgICAgICAgICAgIGJb aWldID0gYVtpaV07CisgICAgfQorCisjcHJhZ21hIGFjYyB3YWl0IChzKQor CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IE47IGkrKykKKyAgICB7 CisgICAgICAgIGlmIChhW2ldICE9IDIuMCkKKyAgICAgICAgICAgIGFib3J0 ICgpOworCisgICAgICAgIGlmIChiW2ldICE9IDIuMCkKKyAgICAgICAgICAg IGFib3J0ICgpOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBOOyBp KyspCisgICAgeworICAgICAgICBhW2ldID0gMy4wOworICAgICAgICBiW2ld ID0gMC4wOworICAgICAgICBjW2ldID0gMC4wOworICAgICAgICBkW2ldID0g MC4wOworICAgIH0KKworI3ByYWdtYSBhY2MgZGF0YSBjb3B5IChhWzA6Tl0p IGNvcHkgKGJbMDpOXSkgY29weSAoY1swOk5dKSBjb3B5IChkWzA6Tl0pIGNv cHlpbiAoTikKKyAgICB7CisKKyNwcmFnbWEgYWNjIGtlcm5lbHMgYXN5bmMK KyAgICB7CisgICAgICAgIGludCBpaTsKKworICAgICAgICBmb3IgKGlpID0g MDsgaWkgPCBOOyBpaSsrKQorICAgICAgICAgICAgYltpaV0gPSAoYVtpaV0g KiBhW2lpXSAqIGFbaWldKSAvIGFbaWldOworICAgIH0KKworI3ByYWdtYSBh Y2Mga2VybmVscyBhc3luYworICAgIHsKKyAgICAgICAgaW50IGlpOworCisg ICAgICAgIGZvciAoaWkgPSAwOyBpaSA8IE47IGlpKyspCisgICAgICAgICAg ICBjW2lpXSA9IChhW2lpXSArIGFbaWldICsgYVtpaV0gKyBhW2lpXSkgLyBh W2lpXTsKKyAgICB9CisKKworI3ByYWdtYSBhY2Mga2VybmVscyBhc3luYwor ICAgIHsKKyAgICAgICAgaW50IGlpOworCisgICAgICAgIGZvciAoaWkgPSAw OyBpaSA8IE47IGlpKyspCisgICAgICAgICAgICBkW2lpXSA9ICgoYVtpaV0g KiBhW2lpXSArIGFbaWldKSAvIGFbaWldKSAtIGFbaWldOworICAgIH0KKwor I3ByYWdtYSBhY2Mgd2FpdCAocykKKworICAgIH0KKworICAgIGZvciAoaSA9 IDA7IGkgPCBOOyBpKyspCisgICAgeworICAgICAgICBpZiAoYVtpXSAhPSAz LjApCisgICAgICAgICAgICBhYm9ydCAoKTsKKworICAgICAgICBpZiAoYltp XSAhPSA5LjApCisgICAgICAgICAgICBhYm9ydCAoKTsKKworICAgICAgICBp ZiAoY1tpXSAhPSA0LjApCisgICAgICAgICAgICBhYm9ydCAoKTsKKworICAg ICAgICBpZiAoZFtpXSAhPSAxLjApCisgICAgICAgICAgICBhYm9ydCAoKTsK KyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgTjsgaSsrKQorICAgIHsK KyAgICAgICAgYVtpXSA9IDIuMDsKKyAgICAgICAgYltpXSA9IDAuMDsKKyAg ICAgICAgY1tpXSA9IDAuMDsKKyAgICAgICAgZFtpXSA9IDAuMDsKKyAgICAg ICAgZVtpXSA9IDAuMDsKKyAgICB9CisKKyNwcmFnbWEgYWNjIGRhdGEgY29w eSAoYVswOk5dLCBiWzA6Tl0sIGNbMDpOXSwgZFswOk5dLCBlWzA6Tl0pIGNv cHlpbiAoTikKKyAgICB7CisKKyNwcmFnbWEgYWNjIGtlcm5lbHMgYXN5bmMK KyAgICB7CisgICAgICAgIGludCBpaTsKKworICAgICAgICBmb3IgKGlpID0g MDsgaWkgPCBOOyBpaSsrKQorICAgICAgICAgICAgYltpaV0gPSAoYVtpaV0g KiBhW2lpXSAqIGFbaWldKSAvIGFbaWldOworICAgIH0KKworI3ByYWdtYSBh Y2Mga2VybmVscyBhc3luYworICAgIHsKKyAgICAgICAgaW50IGlpOworCisg ICAgICAgIGZvciAoaWkgPSAwOyBpaSA8IE47IGlpKyspCisgICAgICAgICAg ICBjW2lpXSA9IChhW2lpXSArIGFbaWldICsgYVtpaV0gKyBhW2lpXSkgLyBh W2lpXTsKKyAgICB9CisKKyNwcmFnbWEgYWNjIGtlcm5lbHMgYXN5bmMKKyAg ICB7CisgICAgICAgIGludCBpaTsKKworICAgICAgICBmb3IgKGlpID0gMDsg aWkgPCBOOyBpaSsrKQorICAgICAgICAgICAgZFtpaV0gPSAoKGFbaWldICog YVtpaV0gKyBhW2lpXSkgLyBhW2lpXSkgLSBhW2lpXTsKKyAgICB9CisKKyNw cmFnbWEgYWNjIGtlcm5lbHMgd2FpdCAocykgYXN5bmMgKHMpCisgICAgewor ICAgICAgICBpbnQgaWk7CisKKyAgICAgICAgZm9yIChpaSA9IDA7IGlpIDwg TjsgaWkrKykKKyAgICAgICAgICAgIGVbaWldID0gYVtpaV0gKyBiW2lpXSAr IGNbaWldICsgZFtpaV07CisgICAgfQorCisjcHJhZ21hIGFjYyB3YWl0IChz KQorCisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IE47IGkrKykKKyAg ICB7CisgICAgICAgIGlmIChhW2ldICE9IDIuMCkKKyAgICAgICAgICAgIGFi b3J0ICgpOworCisgICAgICAgIGlmIChiW2ldICE9IDQuMCkKKyAgICAgICAg ICAgIGFib3J0ICgpOworCisgICAgICAgIGlmIChjW2ldICE9IDQuMCkKKyAg ICAgICAgICAgIGFib3J0ICgpOworCisgICAgICAgIGlmIChkW2ldICE9IDEu MCkKKyAgICAgICAgICAgIGFib3J0ICgpOworCisgICAgICAgIGlmIChlW2ld ICE9IDExLjApCisgICAgICAgICAgICBhYm9ydCAoKTsKKyAgICB9CisKKwor ICAgIHIgPSBjdVN0cmVhbUNyZWF0ZSAoJnN0cmVhbTEsIENVX1NUUkVBTV9O T05fQkxPQ0tJTkcpOworICAgIGlmIChyICE9IENVREFfU1VDQ0VTUykKKyAg ICB7CisgICAgICAgIGZwcmludGYgKHN0ZGVyciwgImN1U3RyZWFtQ3JlYXRl IGZhaWxlZDogJWRcbiIsIHIpOworICAgICAgICBhYm9ydCAoKTsKKyAgICB9 CisKKyAgICBhY2Nfc2V0X2N1ZGFfc3RyZWFtICgxLCBzdHJlYW0xKTsKKwor ICAgIGZvciAoaSA9IDA7IGkgPCBOOyBpKyspCisgICAgeworICAgICAgICBh W2ldID0gNS4wOworICAgICAgICBiW2ldID0gMC4wOworICAgIH0KKworI3By YWdtYSBhY2MgZGF0YSBjb3B5IChhWzA6Tl0sIGJbMDpOXSkgY29weWluIChO KQorICAgIHsKKworI3ByYWdtYSBhY2Mga2VybmVscyBhc3luYworICAgIHsK KyAgICAgICAgaW50IGlpOworCisgICAgICAgIGZvciAoaWkgPSAwOyBpaSA8 IE47IGlpKyspCisgICAgICAgICAgICBiW2lpXSA9IGFbaWldOworICAgIH0K KworI3ByYWdtYSBhY2Mgd2FpdCAocykKKworICAgIH0KKworICAgIGZvciAo aSA9IDA7IGkgPCBOOyBpKyspCisgICAgeworICAgICAgICBpZiAoYVtpXSAh PSA1LjApCisgICAgICAgICAgICBhYm9ydCAoKTsKKworICAgICAgICBpZiAo YltpXSAhPSA1LjApCisgICAgICAgICAgICBhYm9ydCAoKTsKKyAgICB9CisK KyAgICBmb3IgKGkgPSAwOyBpIDwgTjsgaSsrKQorICAgIHsKKyAgICAgICAg YVtpXSA9IDcuMDsKKyAgICAgICAgYltpXSA9IDAuMDsKKyAgICAgICAgY1tp XSA9IDAuMDsKKyAgICAgICAgZFtpXSA9IDAuMDsKKyAgICB9CisKKyNwcmFn bWEgYWNjIGRhdGEgY29weSAoYVswOk5dKSBjb3B5IChiWzA6Tl0pIGNvcHkg KGNbMDpOXSkgY29weSAoZFswOk5dKSBjb3B5aW4gKE4pCisgICAgeworCisj cHJhZ21hIGFjYyBrZXJuZWxzIGFzeW5jCisgICAgeworICAgICAgICBpbnQg aWk7CisKKyAgICAgICAgZm9yIChpaSA9IDA7IGlpIDwgTjsgaWkrKykKKyAg ICAgICAgICAgIGJbaWldID0gKGFbaWldICogYVtpaV0gKiBhW2lpXSkgLyBh W2lpXTsKKyAgICB9CisKKyNwcmFnbWEgYWNjIGtlcm5lbHMgYXN5bmMKKyAg ICB7CisgICAgICAgIGludCBpaTsKKworICAgICAgICBmb3IgKGlpID0gMDsg aWkgPCBOOyBpaSsrKQorICAgICAgICAgICAgY1tpaV0gPSAoYVtpaV0gKyBh W2lpXSArIGFbaWldICsgYVtpaV0pIC8gYVtpaV07CisgICAgfQorCisjcHJh Z21hIGFjYyBrZXJuZWxzIGFzeW5jCisgICAgeworICAgICAgICBpbnQgaWk7 CisKKyAgICAgICAgZm9yIChpaSA9IDA7IGlpIDwgTjsgaWkrKykKKyAgICAg ICAgICAgIGRbaWldID0gKChhW2lpXSAqIGFbaWldICsgYVtpaV0pIC8gYVtp aV0pIC0gYVtpaV07CisgICAgfQorCisjcHJhZ21hIGFjYyB3YWl0IChzKQor CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IE47IGkrKykKKyAgICB7 CisgICAgICAgIGlmIChhW2ldICE9IDcuMCkKKyAgICAgICAgICAgIGFib3J0 ICgpOworCisgICAgICAgIGlmIChiW2ldICE9IDQ5LjApCisgICAgICAgICAg ICBhYm9ydCAoKTsKKworICAgICAgICBpZiAoY1tpXSAhPSA0LjApCisgICAg ICAgICAgICBhYm9ydCAoKTsKKworICAgICAgICBpZiAoZFtpXSAhPSAxLjAp CisgICAgICAgICAgICBhYm9ydCAoKTsKKyAgICB9CisKKyAgICBmb3IgKGkg PSAwOyBpIDwgTjsgaSsrKQorICAgIHsKKyAgICAgICAgYVtpXSA9IDMuMDsK KyAgICAgICAgYltpXSA9IDAuMDsKKyAgICAgICAgY1tpXSA9IDAuMDsKKyAg ICAgICAgZFtpXSA9IDAuMDsKKyAgICAgICAgZVtpXSA9IDAuMDsKKyAgICB9 CisKKyNwcmFnbWEgYWNjIGRhdGEgY29weSAoYVswOk5dLCBiWzA6Tl0sIGNb MDpOXSwgZFswOk5dLCBlWzA6Tl0pIGNvcHlpbiAoTikKKyAgICB7CisKKyNw cmFnbWEgYWNjIGtlcm5lbHMgYXN5bmMKKyAgICB7CisgICAgICAgIGludCBp aTsKKworICAgICAgICBmb3IgKGlpID0gMDsgaWkgPCBOOyBpaSsrKQorICAg ICAgICAgICAgYltpaV0gPSAoYVtpaV0gKiBhW2lpXSAqIGFbaWldKSAvIGFb aWldOworICAgIH0KKworI3ByYWdtYSBhY2Mga2VybmVscyBhc3luYworICAg IHsKKyAgICAgICAgaW50IGlpOworCisgICAgICAgIGZvciAoaWkgPSAwOyBp aSA8IE47IGlpKyspCisgICAgICAgICAgICBjW2lpXSA9IChhW2lpXSArIGFb aWldICsgYVtpaV0gKyBhW2lpXSkgLyBhW2lpXTsKKyAgICB9CisKKyNwcmFn bWEgYWNjIGtlcm5lbHMgYXN5bmMKKyAgICB7CisgICAgICAgIGludCBpaTsK KworICAgICAgICBmb3IgKGlpID0gMDsgaWkgPCBOOyBpaSsrKQorICAgICAg ICAgICAgZFtpaV0gPSAoKGFbaWldICogYVtpaV0gKyBhW2lpXSkgLyBhW2lp XSkgLSBhW2lpXTsKKyAgICB9CisKKyNwcmFnbWEgYWNjIGtlcm5lbHMgd2Fp dCAocykgYXN5bmMgKHMpCisgICAgeworICAgICAgICBpbnQgaWk7CisKKyAg ICAgICAgZm9yIChpaSA9IDA7IGlpIDwgTjsgaWkrKykKKyAgICAgICAgICAg IGVbaWldID0gYVtpaV0gKyBiW2lpXSArIGNbaWldICsgZFtpaV07CisgICAg fQorCisjcHJhZ21hIGFjYyB3YWl0IChzKQorCisgICAgfQorCisgICAgZm9y IChpID0gMDsgaSA8IE47IGkrKykKKyAgICB7CisgICAgICAgIGlmIChhW2ld ICE9IDMuMCkKKyAgICAgICAgICAgIGFib3J0ICgpOworCisgICAgICAgIGlm IChiW2ldICE9IDkuMCkKKyAgICAgICAgICAgIGFib3J0ICgpOworCisgICAg ICAgIGlmIChjW2ldICE9IDQuMCkKKyAgICAgICAgICAgIGFib3J0ICgpOwor CisgICAgICAgIGlmIChkW2ldICE9IDEuMCkKKyAgICAgICAgICAgIGFib3J0 ICgpOworCisgICAgICAgIGlmIChlW2ldICE9IDE3LjApCisgICAgICAgICAg ICBhYm9ydCAoKTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgTjsg aSsrKQorICAgIHsKKyAgICAgICAgYVtpXSA9IDQuMDsKKyAgICAgICAgYltp XSA9IDAuMDsKKyAgICAgICAgY1tpXSA9IDAuMDsKKyAgICAgICAgZFtpXSA9 IDAuMDsKKyAgICAgICAgZVtpXSA9IDAuMDsKKyAgICB9CisKKyNwcmFnbWEg YWNjIGRhdGEgY29weWluIChhWzA6Tl0sIGJbMDpOXSwgY1swOk5dKSBjb3B5 aW4gKE4pCisgICAgeworCisjcHJhZ21hIGFjYyBrZXJuZWxzIGFzeW5jCisg ICAgeworICAgICAgICBpbnQgaWk7CisKKyAgICAgICAgZm9yIChpaSA9IDA7 IGlpIDwgTjsgaWkrKykKKyAgICAgICAgICAgIGJbaWldID0gKGFbaWldICog YVtpaV0gKiBhW2lpXSkgLyBhW2lpXTsKKyAgICB9CisKKyNwcmFnbWEgYWNj IGtlcm5lbHMgYXN5bmMKKyAgICB7CisgICAgICAgIGludCBpaTsKKworICAg ICAgICBmb3IgKGlpID0gMDsgaWkgPCBOOyBpaSsrKQorICAgICAgICAgICAg Y1tpaV0gPSAoYVtpaV0gKyBhW2lpXSArIGFbaWldICsgYVtpaV0pIC8gYVtp aV07CisgICAgfQorCisjcHJhZ21hIGFjYyB1cGRhdGUgaG9zdCAoYVswOk5d LCBiWzA6Tl0sIGNbMDpOXSkgd2FpdCAocykKKworICAgIH0KKworICAgIGZv ciAoaSA9IDA7IGkgPCBOOyBpKyspCisgICAgeworICAgICAgICBpZiAoYVtp XSAhPSA0LjApCisgICAgICAgICAgICBhYm9ydCAoKTsKKworICAgICAgICBp ZiAoYltpXSAhPSAxNi4wKQorICAgICAgICAgICAgYWJvcnQgKCk7CisKKyAg ICAgICAgaWYgKGNbaV0gIT0gNC4wKQorICAgICAgICAgICAgYWJvcnQgKCk7 CisgICAgfQorCisKKyAgICBmb3IgKGkgPSAwOyBpIDwgTjsgaSsrKQorICAg IHsKKyAgICAgICAgYVtpXSA9IDUuMDsKKyAgICAgICAgYltpXSA9IDAuMDsK KyAgICAgICAgY1tpXSA9IDAuMDsKKyAgICAgICAgZFtpXSA9IDAuMDsKKyAg ICAgICAgZVtpXSA9IDAuMDsKKyAgICB9CisKKyNwcmFnbWEgYWNjIGRhdGEg Y29weWluIChhWzA6Tl0sIGJbMDpOXSwgY1swOk5dKSBjb3B5aW4gKE4pCisg ICAgeworCisjcHJhZ21hIGFjYyBrZXJuZWxzIGFzeW5jCisgICAgeworICAg ICAgICBpbnQgaWk7CisKKyAgICAgICAgZm9yIChpaSA9IDA7IGlpIDwgTjsg aWkrKykKKyAgICAgICAgICAgIGJbaWldID0gKGFbaWldICogYVtpaV0gKiBh W2lpXSkgLyBhW2lpXTsKKyAgICB9CisKKyNwcmFnbWEgYWNjIGtlcm5lbHMg YXN5bmMKKyAgICB7CisgICAgICAgIGludCBpaTsKKworICAgICAgICBmb3Ig KGlpID0gMDsgaWkgPCBOOyBpaSsrKQorICAgICAgICAgICAgY1tpaV0gPSAo YVtpaV0gKyBhW2lpXSArIGFbaWldICsgYVtpaV0pIC8gYVtpaV07CisgICAg fQorCisjcHJhZ21hIGFjYyB1cGRhdGUgaG9zdCAoYVswOk5dLCBiWzA6Tl0s IGNbMDpOXSkgYXN5bmMKKworI3ByYWdtYSBhY2Mgd2FpdCAocykKKworICAg IH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBOOyBpKyspCisgICAgeworICAg ICAgICBpZiAoYVtpXSAhPSA1LjApCisgICAgICAgICAgICBhYm9ydCAoKTsK KworICAgICAgICBpZiAoYltpXSAhPSAyNS4wKQorICAgICAgICAgICAgYWJv cnQgKCk7CisKKyAgICAgICAgaWYgKGNbaV0gIT0gNC4wKQorICAgICAgICAg ICAgYWJvcnQgKCk7CisgICAgfQorCisgICAgYWNjX3NodXRkb3duIChhY2Nf ZGV2aWNlX252aWRpYSk7CisKKyAgICByZXR1cm4gMDsKK30KSW5kZXg6IGlu Y2x1ZGUvZ29tcC1jb25zdGFudHMuaAo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBpbmNsdWRlL2dvbXAtY29uc3RhbnRzLmgJKHJldmlzaW9uIDI0NTM4 MikKKysrIGluY2x1ZGUvZ29tcC1jb25zdGFudHMuaAkod29ya2luZyBjb3B5 KQpAQCAtMTgyLDYgKzE4Miw3IEBAIGVudW0gZ29tcF9tYXBfa2luZAogLyog QXN5bmNocm9ub3VzIGJlaGF2aW9yLiAgS2VlcCBpbiBzeW5jIHdpdGgKICAg IGxpYmdvbXAve29wZW5hY2MuaCxvcGVuYWNjLmY5MCxvcGVuYWNjX2xpYi5o fTphY2NfYXN5bmNfdC4gICovCiAKKyNkZWZpbmUgR09NUF9BU1lOQ19ERUZB VUxUCQkwCiAjZGVmaW5lIEdPTVBfQVNZTkNfTk9WQUwJCS0xCiAjZGVmaW5l IEdPTVBfQVNZTkNfU1lOQwkJCS0yCiAK --------------C012FBA3E36DD28C5185506E--