From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH i-g-t 3/4 v5] tests/drv_module_reload: Convert sh script to C version. Date: Thu, 03 Nov 2016 18:36:45 +0200 Message-ID: <87wpgk8qqq.fsf@intel.com> References: <20161103162813.22622-1-marius.c.vlad@intel.com> <20161103162813.22622-4-marius.c.vlad@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0D5A06E778 for ; Thu, 3 Nov 2016 16:36:56 +0000 (UTC) In-Reply-To: <20161103162813.22622-4-marius.c.vlad@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Marius Vlad , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAwMyBOb3YgMjAxNiwgTWFyaXVzIFZsYWQgPG1hcml1cy5jLnZsYWRAaW50ZWwuY29t PiB3cm90ZToKPiB2NToKPiAtIHJld29ya2VkIGdlbV9pbmZvIHRvIGdlbV9zYW5pdHljaGVja3Mg KENocmlzIFdpbHNvbikKPiAtIHJlbW92ZSBzdWJncm91cHMvc3VidGVzdHMgZm9yIGdlbV9leGVj X3N0b3JlIGFuZCBnZW1fc2FuaXR5Y2hlY2sKPiAoQ2hyaXMgV2lsc29uKQo+Cj4gdjQ6Cj4gLSBh ZGp1c3QgdGVzdCB0byBtYWtlIHVzZSBvZiBsaWIvaWd0X2ttb2QKPiAtIHJlcGxhY2VkIFNXX0ZJ TklTSCB3aXRoIFNFVF9DQUNIRUlORyAoQ2hyaXMgV2lsc29uKQo+Cj4gdjM6Cj4gLSBmaXggcGFz c2luZyBib29sZWFuIHZhbHVlIGFzIGZsYWdzIHRvIGlndF9rbW9kX3VubG9hZCgpLgo+Cj4gdjI6 Cj4gLSBlbWJlZGRlZCBnZW1fYWxpdmUgYW5kIGdlbV9leGVjX3N0b3JlIGludG8gdGVzdCAoQ2hy aXMgV2lsc29uKQo+IC0gaW50IG1haW4oKSB0byBpZ3RfbWFpbiAoQ2hyaXMgV2lsc29uKQo+IC0g bW92ZWQgdGVzdHMvZ2VtX2FsaXZlIC0+IHRvb2xzL2dlbV9pbmZvIChDaHJpcyBXaWxzb24pCj4g LSBhZGRlZCB0byBpbnRlbC1jaS9mYXN0LWZlZWRiYWNrLnRlc3RsaXN0IChQZXRyaSBMYXR2YWxh KQo+IC0gYWRkZWQgaGRhX2R5bmFtaWNfZGVidWcoKSAoUGV0cmkgTGF0dmFsYSkKPiAtIHJlbmFt ZWQgZnJvbSB0ZXN0cy9kcnZfbW9kdWxlX3JlbG9hZF9iYXNpYyB0byB0ZXN0cy9kcnZfbW9kdWxl X3JlbG9hZAo+IChhbGwgc3VidGVzdHMgYXJlIGJhc2ljIGFuZCBoYXZlIGJlZW4gYWRkZWQgdG8g ZmFzdC1mZWVkYmFjay50ZXN0bGlzdCkKPgo+IFNpZ25lZC1vZmYtYnk6IE1hcml1cyBWbGFkIDxt YXJpdXMuYy52bGFkQGludGVsLmNvbT4KCkknZCBsaWtlIHRoZSBtZXJnaW5nIG9mIHRoaXMgcGF0 Y2ggYmUgcG9zdHBvbmVkIHVudGlsIHdlIGhhdmUgY29uZmlkZW5jZQp0aGF0IHRoZSBzbmRfaGRh X2ludGVsIG1vZHVsZSByZWxvYWQgd29ya3MgaW4gQ0kuIEl0IGhhcyBiZWVuIGZhaWxpbmcKc3Bv cmFkaWNhbGx5LCBzbyBzZWVpbmcganVzdCBhIGNvdXBsZSBvZiBwYXNzaW5nIHJvdW5kcyBhZnRl ciB0aGUgbGF0ZXN0CmZpeGVzIGlzIG5vdCBlbm91Z2guCgpCUiwKSmFuaS4KCgo+IC0tLQo+ICB0 ZXN0cy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgIHwgICAxIC0KPiAgdGVzdHMvTWFr ZWZpbGUuc291cmNlcyAgICAgICAgICAgICAgICB8ICAgMiArLQo+ICB0ZXN0cy9kcnZfbW9kdWxl X3JlbG9hZC5jICAgICAgICAgICAgIHwgMzMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKPiAgdGVzdHMvZHJ2X21vZHVsZV9yZWxvYWRfYmFzaWMgICAgICAgICB8IDExMSAtLS0t LS0tLS0tLS0KPiAgdGVzdHMvZ2VtX2FsaXZlLmMgICAgICAgICAgICAgICAgICAgICB8ICAzNSAt LS0tCj4gIHRlc3RzL2ludGVsLWNpL2Zhc3QtZmVlZGJhY2sudGVzdGxpc3QgfCAgIDQgKy0KPiAg dG9vbHMvTWFrZWZpbGUuc291cmNlcyAgICAgICAgICAgICAgICB8ICAgMSArCj4gIHRvb2xzL2lu dGVsX2dlbV9pbmZvLmMgICAgICAgICAgICAgICAgfCAgMzUgKysrKwo+ICA4IGZpbGVzIGNoYW5n ZWQsIDM3MiBpbnNlcnRpb25zKCspLCAxNDkgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCB0ZXN0cy9kcnZfbW9kdWxlX3JlbG9hZC5jCj4gIGRlbGV0ZSBtb2RlIDEwMDc1NSB0ZXN0 cy9kcnZfbW9kdWxlX3JlbG9hZF9iYXNpYwo+ICBkZWxldGUgbW9kZSAxMDA2NDQgdGVzdHMvZ2Vt X2FsaXZlLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2ludGVsX2dlbV9pbmZvLmMKPgo+ IGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCj4gaW5k ZXggYTQwODEyNi4uMTRhNDFhZSAxMDA2NDQKPiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQo+ICsr KyBiL3Rlc3RzL01ha2VmaWxlLmFtCj4gQEAgLTI2LDcgKzI2LDYgQEAgbm9pbnN0X1BST0dSQU1T ID0gXAo+ICAJJChOVUxMKQo+ICAKPiAgcGtnbGliZXhlY19QUk9HUkFNUyA9IFwKPiAtCWdlbV9h bGl2ZSBcCj4gIAlnZW1fc3RyZXNzIFwKPiAgCSQoVEVTVFNfcHJvZ3MpIFwKPiAgCSQoVEVTVFNf cHJvZ3NfTSkgXAo+IGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMv TWFrZWZpbGUuc291cmNlcwo+IGluZGV4IDZkMDgxYzMuLmIxNTExYzYgMTAwNjQ0Cj4gLS0tIGEv dGVzdHMvTWFrZWZpbGUuc291cmNlcwo+ICsrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPiBA QCAtMjExLDYgKzIxMSw3IEBAIFRFU1RTX3Byb2dzID0gXAo+ICAJa21zX3B3cml0ZV9jcmMgXAo+ ICAJa21zX3NpbmtfY3JjX2Jhc2ljIFwKPiAgCXByaW1lX3VkbCBcCj4gKwlkcnZfbW9kdWxlX3Jl bG9hZCBcCj4gIAkkKE5VTEwpCj4gIAo+ICAjIElNUE9SVEFOVDogVGhlIFpaXyB0ZXN0cyBuZWVk IHRvIGJlIHJ1biBsYXN0IQo+IEBAIC0yMjEsNyArMjIyLDYgQEAgVEVTVFNfc2NyaXB0c19NID0g XAo+ICBURVNUU19zY3JpcHRzID0gXAo+ICAJZGVidWdmc19lbW9uX2NyYXNoIFwKPiAgCWRydl9k ZWJ1Z2ZzX3JlYWRlciBcCj4gLQlkcnZfbW9kdWxlX3JlbG9hZF9iYXNpYyBcCj4gIAlrbXNfc3lz ZnNfZWRpZF90aW1pbmcgXAo+ICAJc3lzZnNfbDNfcGFyaXR5IFwKPiAgCXRlc3RfcnRlX2NoZWNr IFwKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvZHJ2X21vZHVsZV9yZWxvYWQuYyBiL3Rlc3RzL2Rydl9t b2R1bGVfcmVsb2FkLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjMx ZWMyZWMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvdGVzdHMvZHJ2X21vZHVsZV9yZWxvYWQuYwo+ IEBAIC0wLDAgKzEsMzMyIEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENv cnBvcmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBz b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJl IiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHks IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0 Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwK PiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP VEhFUiBERUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqLwo+ICsjaW5jbHVkZSAi aWd0LmgiCj4gKyNpbmNsdWRlICJpZ3RfZGVidWdmcy5oIgo+ICsjaW5jbHVkZSAiaWd0X2F1eC5o Igo+ICsjaW5jbHVkZSAiaWd0X2ttb2QuaCIKPiArI2luY2x1ZGUgImlndF9zeXNmcy5oIgo+ICsj aW5jbHVkZSAiaWd0X2NvcmUuaCIKPiArCj4gKyNpbmNsdWRlIDxkaXJlbnQuaD4KPiArI2luY2x1 ZGUgPHN5cy91dHNuYW1lLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9saW1pdHMuaD4KPiArI2luY2x1 ZGUgPHNpZ25hbC5oPgo+ICsjaW5jbHVkZSA8bGliZ2VuLmg+Cj4gKyNpbmNsdWRlIDxzaWduYWwu aD4KPiArI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgo+ICsjaW5jbHVkZSA8ZmNudGwuaD4KPiArCj4g Kwo+ICsjZGVmaW5lIExPQ0FMX0k5MTVfRVhFQ19CU0RfU0hJRlQgICAgICAoMTMpCj4gKyNkZWZp bmUgTE9DQUxfSTkxNV9FWEVDX0JTRF9NQVNLICAgICAgICgzIDw8IExPQ0FMX0k5MTVfRVhFQ19C U0RfU0hJRlQpCj4gKwo+ICsjZGVmaW5lIEVOR0lORV9NQVNLICAoSTkxNV9FWEVDX1JJTkdfTUFT SyB8IExPQ0FMX0k5MTVfRVhFQ19CU0RfTUFTSykKPiArCj4gK3N0YXRpYyB2b2lkIHN0b3JlX2R3 b3JkKGludCBmZCwgdW5zaWduZWQgcmluZykKPiArewo+ICsJY29uc3QgaW50IGdlbiA9IGludGVs X2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4 ZWNfb2JqZWN0MiBvYmpbMl07Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50 cnkgcmVsb2M7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7Cj4g Kwl1aW50MzJfdCBiYXRjaFsxNl07Cj4gKwlpbnQgaTsKPiArCj4gKwlpZiAoIWdlbV9oYXNfcmlu ZyhmZCwgcmluZykpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWlmIChnZW4gPT0gNiAmJiAocmluZyAm IH4oMzw8MTMpKSA9PSBJOTE1X0VYRUNfQlNEKQo+ICsJCXJldHVybjsKPiArCj4gKwlpbnRlbF9k ZXRlY3RfYW5kX2NsZWFyX21pc3NlZF9pbnRlcnJ1cHRzKGZkKTsKPiArCW1lbXNldCgmZXhlY2J1 ZiwgMCwgc2l6ZW9mKGV4ZWNidWYpKTsKPiArCWV4ZWNidWYuYnVmZmVyc19wdHIgPSAodWludHB0 cl90KW9iajsKPiArCWV4ZWNidWYuYnVmZmVyX2NvdW50ID0gMjsKPiArCWV4ZWNidWYuZmxhZ3Mg PSByaW5nOwo+ICsJaWYgKGdlbiA8IDYpCj4gKwkJZXhlY2J1Zi5mbGFncyB8PSBJOTE1X0VYRUNf U0VDVVJFOwo+ICsKPiArCW1lbXNldChvYmosIDAsIHNpemVvZihvYmopKTsKPiArCW9ialswXS5o YW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKPiArCW9ialsxXS5oYW5kbGUgPSBnZW1fY3Jl YXRlKGZkLCA0MDk2KTsKPiArCj4gKwltZW1zZXQoJnJlbG9jLCAwLCBzaXplb2YocmVsb2MpKTsK PiArCXJlbG9jLnRhcmdldF9oYW5kbGUgPSBvYmpbMF0uaGFuZGxlOwo+ICsJcmVsb2MucHJlc3Vt ZWRfb2Zmc2V0ID0gMDsKPiArCXJlbG9jLm9mZnNldCA9IHNpemVvZih1aW50MzJfdCk7Cj4gKwly ZWxvYy5kZWx0YSA9IDA7Cj4gKwlyZWxvYy5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5f SU5TVFJVQ1RJT047Cj4gKwlyZWxvYy53cml0ZV9kb21haW4gPSBJOTE1X0dFTV9ET01BSU5fSU5T VFJVQ1RJT047Cj4gKwlvYmpbMV0ucmVsb2NzX3B0ciA9ICh1aW50cHRyX3QpJnJlbG9jOwo+ICsJ b2JqWzFdLnJlbG9jYXRpb25fY291bnQgPSAxOwo+ICsKPiArCWkgPSAwOwo+ICsJYmF0Y2hbaV0g PSBNSV9TVE9SRV9EV09SRF9JTU0gfCAoZ2VuIDwgNiA/IDEgPDwgMjIgOiAwKTsKPiArCWlmIChn ZW4gPj0gOCkgewo+ICsJCWJhdGNoWysraV0gPSAwOwo+ICsJCWJhdGNoWysraV0gPSAwOwo+ICsJ fSBlbHNlIGlmIChnZW4gPj0gNCkgewo+ICsJCWJhdGNoWysraV0gPSAwOwo+ICsJCWJhdGNoWysr aV0gPSAwOwo+ICsJCXJlbG9jLm9mZnNldCArPSBzaXplb2YodWludDMyX3QpOwo+ICsJfSBlbHNl IHsKPiArCQliYXRjaFtpXS0tOwo+ICsJCWJhdGNoWysraV0gPSAwOwo+ICsJfQo+ICsJYmF0Y2hb KytpXSA9IDB4YzBmZmVlOwo+ICsJYmF0Y2hbKytpXSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Cj4g KwlnZW1fd3JpdGUoZmQsIG9ialsxXS5oYW5kbGUsIDAsIGJhdGNoLCBzaXplb2YoYmF0Y2gpKTsK PiArCWdlbV9leGVjYnVmKGZkLCAmZXhlY2J1Zik7Cj4gKwlnZW1fY2xvc2UoZmQsIG9ialsxXS5o YW5kbGUpOwo+ICsKPiArCWdlbV9yZWFkKGZkLCBvYmpbMF0uaGFuZGxlLCAwLCBiYXRjaCwgc2l6 ZW9mKGJhdGNoKSk7Cj4gKwlnZW1fY2xvc2UoZmQsIG9ialswXS5oYW5kbGUpOwo+ICsJaWd0X2Fz c2VydF9lcSgqYmF0Y2gsIDB4YzBmZmVlKTsKPiArCWlndF9hc3NlcnRfZXEoaW50ZWxfZGV0ZWN0 X2FuZF9jbGVhcl9taXNzZWRfaW50ZXJydXB0cyhmZCksIDApOwo+ICt9Cj4gKwo+ICtzdGF0aWMg dm9pZCBzdG9yZV9hbGwoaW50IGZkKQo+ICt7Cj4gKwljb25zdCBpbnQgZ2VuID0gaW50ZWxfZ2Vu KGludGVsX2dldF9kcm1fZGV2aWQoZmQpKTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19v YmplY3QyIG9ialsyXTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSBy ZWxvY1szMl07Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7Cj4g Kwl1bnNpZ25lZCBlbmdpbmVzWzE2XSwgcGVybXV0ZWRbMTZdOwo+ICsJdWludDMyX3QgYmF0Y2hb MTZdOwo+ICsJdWludDY0X3Qgb2Zmc2V0Owo+ICsJdW5zaWduZWQgZW5naW5lLCBuZW5naW5lOwo+ ICsJaW50IHZhbHVlOwo+ICsJaW50IGksIGo7Cj4gKwo+ICsJbWVtc2V0KCZleGVjYnVmLCAwLCBz aXplb2YoZXhlY2J1ZikpOwo+ICsJZXhlY2J1Zi5idWZmZXJzX3B0ciA9ICh1aW50cHRyX3Qpb2Jq Owo+ICsJZXhlY2J1Zi5idWZmZXJfY291bnQgPSAyOwo+ICsJaWYgKGdlbiA8IDYpCj4gKwkJZXhl Y2J1Zi5mbGFncyB8PSBJOTE1X0VYRUNfU0VDVVJFOwo+ICsKPiArCW1lbXNldChyZWxvYywgMCwg c2l6ZW9mKHJlbG9jKSk7Cj4gKwltZW1zZXQob2JqLCAwLCBzaXplb2Yob2JqKSk7Cj4gKwlvYmpb MF0uaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7Cj4gKwlvYmpbMV0uaGFuZGxlID0gZ2Vt X2NyZWF0ZShmZCwgNDA5Nik7Cj4gKwlvYmpbMV0ucmVsb2NhdGlvbl9jb3VudCA9IDE7Cj4gKwo+ ICsJb2Zmc2V0ID0gc2l6ZW9mKHVpbnQzMl90KTsKPiArCWkgPSAwOwo+ICsJYmF0Y2hbaV0gPSBN SV9TVE9SRV9EV09SRF9JTU0gfCAoZ2VuIDwgNiA/IDEgPDwgMjIgOiAwKTsKPiArCWlmIChnZW4g Pj0gOCkgewo+ICsJCWJhdGNoWysraV0gPSAwOwo+ICsJCWJhdGNoWysraV0gPSAwOwo+ICsJfSBl bHNlIGlmIChnZW4gPj0gNCkgewo+ICsJCWJhdGNoWysraV0gPSAwOwo+ICsJCWJhdGNoWysraV0g PSAwOwo+ICsJCW9mZnNldCArPSBzaXplb2YodWludDMyX3QpOwo+ICsJfSBlbHNlIHsKPiArCQli YXRjaFtpXS0tOwo+ICsJCWJhdGNoWysraV0gPSAwOwo+ICsJfQo+ICsJYmF0Y2hbdmFsdWUgPSAr K2ldID0gMHhjMGZmZWU7Cj4gKwliYXRjaFsrK2ldID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKPiAr Cj4gKwluZW5naW5lID0gMDsKPiArCWludGVsX2RldGVjdF9hbmRfY2xlYXJfbWlzc2VkX2ludGVy cnVwdHMoZmQpOwo+ICsJZm9yX2VhY2hfZW5naW5lKGZkLCBlbmdpbmUpIHsKPiArCQlpZiAoZ2Vu ID09IDYgJiYgKGVuZ2luZSAmIH4oMzw8MTMpKSA9PSBJOTE1X0VYRUNfQlNEKQo+ICsJCQljb250 aW51ZTsKPiArCj4gKwkJaWd0X2Fzc2VydCgyKihuZW5naW5lKzEpKnNpemVvZihiYXRjaCkgPD0g NDA5Nik7Cj4gKwo+ICsJCWV4ZWNidWYuZmxhZ3MgJj0gfkVOR0lORV9NQVNLOwo+ICsJCWV4ZWNi dWYuZmxhZ3MgfD0gZW5naW5lOwo+ICsKPiArCQlqID0gMipuZW5naW5lOwo+ICsJCXJlbG9jW2pd LnRhcmdldF9oYW5kbGUgPSBvYmpbMF0uaGFuZGxlOwo+ICsJCXJlbG9jW2pdLnByZXN1bWVkX29m ZnNldCA9IH4wOwo+ICsJCXJlbG9jW2pdLm9mZnNldCA9IGoqc2l6ZW9mKGJhdGNoKSArIG9mZnNl dDsKPiArCQlyZWxvY1tqXS5kZWx0YSA9IG5lbmdpbmUqc2l6ZW9mKHVpbnQzMl90KTsKPiArCQly ZWxvY1tqXS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT047Cj4gKwkJ cmVsb2Nbal0ud3JpdGVfZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9OOwo+ICsJ CW9ialsxXS5yZWxvY3NfcHRyID0gKHVpbnRwdHJfdCkmcmVsb2Nbal07Cj4gKwo+ICsJCWJhdGNo W3ZhbHVlXSA9IDB4ZGVhZGJlZWY7Cj4gKwkJZ2VtX3dyaXRlKGZkLCBvYmpbMV0uaGFuZGxlLCBq KnNpemVvZihiYXRjaCksCj4gKwkJCSAgYmF0Y2gsIHNpemVvZihiYXRjaCkpOwo+ICsJCWV4ZWNi dWYuYmF0Y2hfc3RhcnRfb2Zmc2V0ID0gaipzaXplb2YoYmF0Y2gpOwo+ICsJCWdlbV9leGVjYnVm KGZkLCAmZXhlY2J1Zik7Cj4gKwo+ICsJCWogPSAyKm5lbmdpbmUgKyAxOwo+ICsJCXJlbG9jW2pd LnRhcmdldF9oYW5kbGUgPSBvYmpbMF0uaGFuZGxlOwo+ICsJCXJlbG9jW2pdLnByZXN1bWVkX29m ZnNldCA9IH4wOwo+ICsJCXJlbG9jW2pdLm9mZnNldCA9IGoqc2l6ZW9mKGJhdGNoKSArIG9mZnNl dDsKPiArCQlyZWxvY1tqXS5kZWx0YSA9IG5lbmdpbmUqc2l6ZW9mKHVpbnQzMl90KTsKPiArCQly ZWxvY1tqXS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT047Cj4gKwkJ cmVsb2Nbal0ud3JpdGVfZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9OOwo+ICsJ CW9ialsxXS5yZWxvY3NfcHRyID0gKHVpbnRwdHJfdCkmcmVsb2Nbal07Cj4gKwo+ICsJCWJhdGNo W3ZhbHVlXSA9IG5lbmdpbmU7Cj4gKwkJZ2VtX3dyaXRlKGZkLCBvYmpbMV0uaGFuZGxlLCBqKnNp emVvZihiYXRjaCksCj4gKwkJCSAgYmF0Y2gsIHNpemVvZihiYXRjaCkpOwo+ICsJCWV4ZWNidWYu YmF0Y2hfc3RhcnRfb2Zmc2V0ID0gaipzaXplb2YoYmF0Y2gpOwo+ICsJCWdlbV9leGVjYnVmKGZk LCAmZXhlY2J1Zik7Cj4gKwo+ICsJCWVuZ2luZXNbbmVuZ2luZSsrXSA9IGVuZ2luZTsKPiArCX0K PiArCWdlbV9zeW5jKGZkLCBvYmpbMV0uaGFuZGxlKTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwg bmVuZ2luZTsgaSsrKSB7Cj4gKwkJb2JqWzFdLnJlbG9jc19wdHIgPSAodWludHB0cl90KSZyZWxv Y1syKmldOwo+ICsJCWV4ZWNidWYuYmF0Y2hfc3RhcnRfb2Zmc2V0ID0gMippKnNpemVvZihiYXRj aCk7Cj4gKwkJbWVtY3B5KHBlcm11dGVkLCBlbmdpbmVzLCBuZW5naW5lKnNpemVvZihlbmdpbmVz WzBdKSk7Cj4gKwkJaWd0X3Blcm11dGVfYXJyYXkocGVybXV0ZWQsIG5lbmdpbmUsIGlndF9leGNo YW5nZV9pbnQpOwo+ICsJCWZvciAoaiA9IDA7IGogPCBuZW5naW5lOyBqKyspIHsKPiArCQkJZXhl Y2J1Zi5mbGFncyAmPSB+RU5HSU5FX01BU0s7Cj4gKwkJCWV4ZWNidWYuZmxhZ3MgfD0gcGVybXV0 ZWRbal07Cj4gKwkJCWdlbV9leGVjYnVmKGZkLCAmZXhlY2J1Zik7Cj4gKwkJfQo+ICsJCW9ialsx XS5yZWxvY3NfcHRyID0gKHVpbnRwdHJfdCkmcmVsb2NbMippKzFdOwo+ICsJCWV4ZWNidWYuYmF0 Y2hfc3RhcnRfb2Zmc2V0ID0gKDIqaSsxKSpzaXplb2YoYmF0Y2gpOwo+ICsJCWV4ZWNidWYuZmxh Z3MgJj0gfkVOR0lORV9NQVNLOwo+ICsJCWV4ZWNidWYuZmxhZ3MgfD0gZW5naW5lc1tpXTsKPiAr CQlnZW1fZXhlY2J1ZihmZCwgJmV4ZWNidWYpOwo+ICsJfQo+ICsJZ2VtX2Nsb3NlKGZkLCBvYmpb MV0uaGFuZGxlKTsKPiArCj4gKwlnZW1fcmVhZChmZCwgb2JqWzBdLmhhbmRsZSwgMCwgZW5naW5l cywgc2l6ZW9mKGVuZ2luZXMpKTsKPiArCWdlbV9jbG9zZShmZCwgb2JqWzBdLmhhbmRsZSk7Cj4g Kwo+ICsJZm9yIChpID0gMDsgaSA8IG5lbmdpbmU7IGkrKykKPiArCQlpZ3RfYXNzZXJ0X2VxX3Uz MihlbmdpbmVzW2ldLCBpKTsKPiArCWlndF9hc3NlcnRfZXEoaW50ZWxfZGV0ZWN0X2FuZF9jbGVh cl9taXNzZWRfaW50ZXJydXB0cyhmZCksIDApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK3Jl bG9hZChjb25zdCBjaGFyICpvcHRzX2k5MTUpCj4gK3sKPiArCWludCBlcnIgPSBJR1RfRVhJVF9T VUNDRVNTOwo+ICsKPiArCWlmICgoZXJyID0gaWd0X2k5MTVfZHJpdmVyX3VubG9hZCgpKSkKPiAr CQlyZXR1cm4gZXJyOwo+ICsKPiArCWlmICgoZXJyID0gaWd0X2k5MTVfZHJpdmVyX2xvYWQob3B0 c19pOTE1KSkpCj4gKwkJcmV0dXJuIGVycjsKPiArCj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZAo+ICtnZW1fc2FuaXR5Y2hlY2sodm9pZCkKPiArewo+ICsJaW50IGVyciA9 IDA7Cj4gKwlpbnQgZmQ7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NhY2hpbmcgYXJncyA9IHt9 Owo+ICsKPiArCj4gKwlmZCA9IF9fZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7Cj4gKwlp Z3Rfc2V0X3RpbWVvdXQoMSwgIk1vZHVsZSByZWxvYWQgdGltZW91dCEiKTsKPiArCj4gKwlpZiAo aW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X0dFTV9TRVRfQ0FDSElORywgJmFyZ3MpIDwgMCkKPiAr CQllcnIgPSAtZXJybm87Cj4gKwo+ICsJaWd0X3NldF90aW1lb3V0KDAsIE5VTEwpOwo+ICsJY2xv c2UoZmQpOwo+ICsKPiArCWlndF9hc3NlcnRfZXEoZXJyLCAtRU5PRU5UKTsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQKPiArZ2VtX2V4ZWNfc3RvcmUodm9pZCkKPiArewo+ICsJaW50IGZkOwo+ICsJ Y29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUgKmU7Cj4gKwo+ICsJZmQgPSBfX2Ry bV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOwo+ICsJaWd0X2ZvcmtfaGFuZ19kZXRlY3Rvcihm ZCk7Cj4gKwo+ICsJZm9yIChlID0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXM7IGUtPm5hbWU7IGUr Kykgewo+ICsJCXN0b3JlX2R3b3JkKGZkLCBlLT5leGVjX2lkIHwgZS0+ZmxhZ3MpOwo+ICsJfQo+ ICsKPiArCXN0b3JlX2FsbChmZCk7Cj4gKwo+ICsJaWd0X3N0b3BfaGFuZ19kZXRlY3RvcigpOwo+ ICsJY2xvc2UoZmQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICtoZGFfZHluYW1pY19kZWJ1 Zyhib29sIGVuYWJsZSkKPiArewo+ICsJRklMRSAqZnA7Cj4gKwljb25zdCBjaGFyIHNuZF9oZGFf aW50ZWxfb25bXSA9ICJtb2R1bGUgc25kX2hkYV9pbnRlbCArcGYiOwo+ICsJY29uc3QgY2hhciBz bmRfaGRhX2NvcmVfb25bXSA9ICJtb2R1bGUgc25kX2hkYV9jb3JlICtwZiI7Cj4gKwo+ICsJY29u c3QgY2hhciBzbmRfaGRhX2ludGVsX29mZltdID0gIm1vZHVsZSBzbmRfaGRhX2NvcmUgPV8iOwo+ ICsJY29uc3QgY2hhciBzbmRfaGRhX2NvcmVfb2ZmW10gPSAibW9kdWxlIHNuZF9oZGFfaW50ZWwg PV8iOwo+ICsKPiArCWZwID0gZm9wZW4oIi9zeXMva2VybmVsL2RlYnVnL2R5bmFtaWNfZGVidWcv Y29udHJvbCIsICJ3Iik7Cj4gKwlpZ3RfYXNzZXJ0KGZwICE9IE5VTEwpOwo+ICsKPiArCWlmIChl bmFibGUpIHsKPiArCQlmd3JpdGUoc25kX2hkYV9pbnRlbF9vbiwgMSwgc2l6ZW9mKHNuZF9oZGFf aW50ZWxfb24pLCBmcCk7Cj4gKwkJZndyaXRlKHNuZF9oZGFfY29yZV9vbiwgMSwgc2l6ZW9mKHNu ZF9oZGFfY29yZV9vbiksIGZwKTsKPiArCX0gZWxzZSB7Cj4gKwkJZndyaXRlKHNuZF9oZGFfaW50 ZWxfb2ZmLCAxLCBzaXplb2Yoc25kX2hkYV9pbnRlbF9vZmYpLCBmcCk7Cj4gKwkJZndyaXRlKHNu ZF9oZGFfY29yZV9vZmYsIDEsIHNpemVvZihzbmRfaGRhX2NvcmVfb2ZmKSwgZnApOwo+ICsJfQo+ ICsKPiArCWZjbG9zZShmcCk7Cj4gK30KPiArCj4gK2lndF9tYWluCj4gK3sKPiArCWludCBpLCBl cnI7Cj4gKwljaGFyIGJ1Zls2NF07Cj4gKwo+ICsJaWd0X2ZpeHR1cmUKPiArCQloZGFfZHluYW1p Y19kZWJ1Zyh0cnVlKTsKPiArCj4gKwlpZ3Rfc3VidGVzdCgiYmFzaWMtcmVsb2FkIikgewo+ICsK PiArCQlpZiAoKGVyciA9IHJlbG9hZChOVUxMKSkpCj4gKwkJCWlndF9mYWlsKGVycik7Cj4gKwo+ ICsJCWdlbV9zYW5pdHljaGVjaygpOwo+ICsJCWdlbV9leGVjX3N0b3JlKCk7Cj4gKwl9Cj4gKwo+ ICsJaWd0X3N1YnRlc3QoImJhc2ljLXJlbG9hZC1pbmplY3QiKSB7Cj4gKwkJZm9yIChpID0gMDsg aSA8IDQ7IGkrKykgewo+ICsJCQltZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSk7Cj4gKwkJCXNu cHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJpbmplY3RfbG9hZF9mYWlsdXJlPSVkIiwgaSk7Cj4g KwkJCXJlbG9hZChidWYpOwo+ICsJCX0KPiArCX0KPiArCj4gKwlpZ3Rfc3VidGVzdCgiYmFzaWMt cmVsb2FkLWZpbmFsIikgewo+ICsJCWlmICgoZXJyID0gcmVsb2FkKE5VTEwpKSkKPiArCQkJaWd0 X2ZhaWwoZXJyKTsKPiArCj4gKwkJZ2VtX3Nhbml0eWNoZWNrKCk7Cj4gKwkJZ2VtX2V4ZWNfc3Rv cmUoKTsKPiArCX0KPiArCj4gKwlpZ3RfZml4dHVyZQo+ICsJCWhkYV9keW5hbWljX2RlYnVnKGZh bHNlKTsKPiArfQo+IGRpZmYgLS1naXQgYS90ZXN0cy9kcnZfbW9kdWxlX3JlbG9hZF9iYXNpYyBi L3Rlc3RzL2Rydl9tb2R1bGVfcmVsb2FkX2Jhc2ljCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1 Cj4gaW5kZXggOThmMzY5NC4uMDAwMDAwMAo+IC0tLSBhL3Rlc3RzL2Rydl9tb2R1bGVfcmVsb2Fk X2Jhc2ljCj4gKysrIC9kZXYvbnVsbAo+IEBAIC0xLDExMSArMCwwIEBACj4gLSMhL2Jpbi9iYXNo Cj4gLSMKPiAtIyBUZXN0Y2FzZTogUmVsb2FkIHRoZSBkcm0gbW9kdWxlCj4gLSMKPiAtIyAuLi4g d2UndmUgYnJva2VuIHRoaXMgd2F5IHRvbyBvZnRlbiA6KAo+IC0jCj4gLQo+IC1TT1VSQ0VfRElS PSIkKCBkaXJuYW1lICIke0JBU0hfU09VUkNFWzBdfSIgKSIKPiAtLiAkU09VUkNFX0RJUi9kcm1f bGliLnNoCj4gLQo+IC0jIG5vIG90aGVyIGRybSBzZXJ2aWNlIHNob3VsZCBiZSBydW5uaW5nLCBz byB3ZSBjYW4ganVzdCB1bmJpbmQKPiAtCj4gLSMgcmV0dXJuIDAgaWYgbW9kdWxlIGJ5IG5hbWUg JDEgaXMgbG9hZGVkIGFjY29yZGluZyB0byBsc21vZAo+IC1mdW5jdGlvbiBtb2RfbG9hZGVkKCkK PiAtewo+IC0JbHNtb2QgfCBncmVwIC13ICJeJDEiICY+IC9kZXYvbnVsbAo+IC19Cj4gLQo+IC1m dW5jdGlvbiByZWxvYWQoKSB7Cj4gLQlsb2NhbCBzbmRfaGRhX2ludGVsX3VubG9hZGVkCj4gLQo+ IC0JZWNobyBSZWxvYWRpbmcgaTkxNS5rbyB3aXRoICQqCj4gLQo+IC0JIyB3ZSBtdXN0IGtpY2sg YXdheSBmYmNvbiAoYnV0IG9ubHkgZmJjb24pCj4gLQlmb3IgdnRjb24gaW4gL3N5cy9jbGFzcy92 dGNvbnNvbGUvdnRjb24qLyA7IGRvCj4gLQkJaWYgZ3JlcCAiZnJhbWUgYnVmZmVyIGRldmljZSIg JHZ0Y29uL25hbWUgPiAvZGV2L251bGwgOyB0aGVuCj4gLQkJCWVjaG8gdW5iaW5kaW5nICR2dGNv bjogYGNhdCAkdnRjb24vbmFtZWAKPiAtCQkJZWNobyAwID4gJHZ0Y29uL2JpbmQKPiAtCQlmaQo+ IC0JZG9uZQo+IC0KPiAtCSMgVGhlIHNvdW5kIGRyaXZlciB1c2VzIG91ciBwb3dlciB3ZWxsCj4g LQlwa2lsbCBhbHNhY3RsCj4gLQlzbmRfaGRhX2ludGVsX3VubG9hZGVkPTAKPiAtCWlmIG1vZF9s b2FkZWQgc25kX2hkYV9pbnRlbDsgdGhlbgo+IC0JCSMgdW5iaW5kIHNvdW5kIGNhcmRzCj4gLQkJ Zm9yIGNhcmQgaW4gJChmaW5kIC9zeXMvYnVzL3BjaS9kcml2ZXJzL3NuZF9oZGFfaW50ZWwgLW5h bWUgIjAwMDA6KiIgLXByaW50ZiAiJWZcbiIpOyBkbwo+IC0JCQllY2hvICRjYXJkID4gL3N5cy9i dXMvcGNpL2RyaXZlcnMvc25kX2hkYV9pbnRlbC91bmJpbmQKPiAtCQlkb25lCj4gLQo+IC0JCWlm IHJtbW9kIHNuZF9oZGFfaW50ZWw7IHRoZW4KPiAtCQkJc25kX2hkYV9pbnRlbF91bmxvYWRlZD0x Cj4gLQkJZWxzZQo+IC0JCQlsc21vZCA+JjIKPiAtCQkJbHNvZiAvZGV2L3NuZC8qID4mMgo+IC0J CWZpCj4gLQlmaQo+IC0KPiAtCSMgZ2VuNSBvbmx5Cj4gLQlpZiBtb2RfbG9hZGVkIGludGVsX2lw czsgdGhlbgo+IC0JCXJtbW9kIGludGVsX2lwcwo+IC0JZmkKPiAtCj4gLQlpZiAhIHJtbW9kIGk5 MTU7IHRoZW4KPiAtCQlsc21vZCA+JjIKPiAtCQlyZXR1cm4gJElHVF9FWElUX1NLSVAKPiAtCWZp Cj4gLQkjaWdub3JlIGVycm9ycyBpbiBpbnRlbC1ndHQsIG9mdGVuIGJ1aWx0LWluCj4gLQlybW1v ZCBpbnRlbC1ndHQgJj4gL2Rldi9udWxsCj4gLQkjIGRybSBtYXkgYmUgdXNlZCBieSBvdGhlciBk ZXZpY2VzIChub3V2ZWF1LCByYWRlb24sIHVkbCwgZXRjKQo+IC0Jcm1tb2QgZHJtX2ttc19oZWxw ZXIgJj4gL2Rldi9udWxsCj4gLQlybW1vZCBkcm0gJj4gL2Rldi9udWxsCj4gLQo+IC0JaWYgbW9k X2xvYWRlZCBpOTE1OyB0aGVuCj4gLQkJZWNobyBXQVJOSU5HOiBpOTE1LmtvIHN0aWxsIGxvYWRl ZCEKPiAtCQlyZXR1cm4gJElHVF9FWElUX0ZBSUxVUkUKPiAtCWVsc2UKPiAtCQllY2hvIG1vZHVs ZSBzdWNjZXNzZnVsbHkgdW5sb2FkZWQKPiAtCWZpCj4gLQo+IC0JbW9kcHJvYmUgaTkxNSAkKgo+ IC0KPiAtCWlmIFsgLWYgL3N5cy9jbGFzcy92dGNvbnNvbGUvdnRjb24xL2JpbmQgXTsgdGhlbgo+ IC0JCWVjaG8gMSA+IC9zeXMvY2xhc3MvdnRjb25zb2xlL3Z0Y29uMS9iaW5kCj4gLQlmaQo+IC0K PiAtCW1vZHByb2JlIC1xIHNuZF9oZGFfaW50ZWwgfHwgcmV0dXJuICRzbmRfaGRhX2ludGVsX3Vu bG9hZGVkCj4gLX0KPiAtCj4gLWZ1bmN0aW9uIGZpbmlzaF9sb2FkKCkgewo+IC0JIyBkb2VzIHRo ZSBkZXZpY2UgZXhpc3Q/Cj4gLQlpZiAkU09VUkNFX0RJUi9nZW1fYWxpdmUgPiAvZGV2L251bGwg OyB0aGVuCj4gLQkJZWNobyAibW9kdWxlIHN1Y2Nlc3NmdWxseSBsb2FkZWQgYWdhaW4iCj4gLQll bHNlCj4gLQkJZWNobyAiZmFpbGVkIHRvIHJlbG9hZCBtb2R1bGUgc3VjY2Vzc2Z1bGx5Igo+IC0J CXJldHVybiAkSUdUX0VYSVRfRkFJTFVSRQo+IC0JZmkKPiAtCj4gLQkjIHRoZW4gdHJ5IHRvIHJ1 biBzb21ldGhpbmcKPiAtCWlmICEgJFNPVVJDRV9ESVIvZ2VtX2V4ZWNfc3RvcmUgPiAvZGV2L251 bGwgOyB0aGVuCj4gLQkJZWNobyAiZmFpbGVkIHRvIGV4ZWN1dGUgYSBzaW1wbGUgYmF0Y2ggYWZ0 ZXIgcmVsb2FkIgo+IC0JCXJldHVybiAkSUdUX0VYSVRfRkFJTFVSRQo+IC0JZmkKPiAtCj4gLQly ZXR1cm4gJElHVF9FWElUX1NVQ0NFU1MKPiAtfQo+IC0KPiAtaGRhX2R5bmFtaWNfZGVidWdfZW5h YmxlCj4gLQo+IC1yZWxvYWQgfHwgZXhpdCAkPwo+IC1maW5pc2hfbG9hZCB8fCBleGl0ICQ/Cj4g LQo+IC0jIFJlcGVhdCB0aGUgbW9kdWxlIHJlbG9hZCB0cnlpbmcgdG8gdG8gZ2VuZXJhdGUgZmF1 bHRzCj4gLWZvciBpIGluICQoc2VxIDEgNCk7IGRvCj4gLQlyZWxvYWQgaW5qZWN0X2xvYWRfZmFp bHVyZT0kaQo+IC1kb25lCj4gLQo+IC1yZWxvYWQgfHwgZXhpdCAkPwo+IC1maW5pc2hfbG9hZAo+ IC0KPiAtZXhpdCAkPwo+IGRpZmYgLS1naXQgYS90ZXN0cy9nZW1fYWxpdmUuYyBiL3Rlc3RzL2dl bV9hbGl2ZS5jCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggNzU0NDQ0My4uMDAw MDAwMAo+IC0tLSBhL3Rlc3RzL2dlbV9hbGl2ZS5jCj4gKysrIC9kZXYvbnVsbAo+IEBAIC0xLDM1 ICswLDAgQEAKPiAtI2luY2x1ZGUgImlndC5oIgo+IC0jaW5jbHVkZSA8c3lzL2lvY3RsLmg+Cj4g LSNpbmNsdWRlIDxmY250bC5oPgo+IC0jaW5jbHVkZSA8ZXJybm8uaD4KPiAtI2luY2x1ZGUgPHN0 cmluZy5oPgo+IC0jaW5jbHVkZSA8c2lnbmFsLmg+Cj4gLSNpbmNsdWRlIDxpOTE1X2RybS5oPgo+ IC0KPiAtCj4gLWludCBtYWluKHZvaWQpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fc3df ZmluaXNoIGFyZyA9IHsgMCB9Owo+IC0JaW50IGZkOwo+IC0KPiAtCXNpZ25hbChTSUdBTFJNLCBT SUdfSUdOKTsKPiAtCj4gLQlmZCA9IF9fZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7Cj4g LQlpZiAoZmQgPCAwKQo+IC0JCXJldHVybiBJR1RfRVhJVF9TS0lQOwo+IC0KPiAtCWFsYXJtKDEp Owo+IC0JaWYgKGlvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fU1dfRklOSVNILCAmYXJnKSA9 PSAwKQo+IC0JCXJldHVybiBJR1RfRVhJVF9TS0lQOwo+IC0KPiAtCXN3aXRjaCAoZXJybm8pIHsK PiAtCWNhc2UgRU5PRU5UOgo+IC0JCXJldHVybiAwOwo+IC0JY2FzZSBFSU86Cj4gLQkJcmV0dXJu IDE7Cj4gLQljYXNlIEVJTlRSOgo+IC0JCXJldHVybiAyOwo+IC0JZGVmYXVsdDoKPiAtCQlyZXR1 cm4gMzsKPiAtCX0KPiAtfQo+IGRpZmYgLS1naXQgYS90ZXN0cy9pbnRlbC1jaS9mYXN0LWZlZWRi YWNrLnRlc3RsaXN0IGIvdGVzdHMvaW50ZWwtY2kvZmFzdC1mZWVkYmFjay50ZXN0bGlzdAo+IGlu ZGV4IGI4ZmNlNTkuLjRhNTUzYTIgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaW50ZWwtY2kvZmFzdC1m ZWVkYmFjay50ZXN0bGlzdAo+ICsrKyBiL3Rlc3RzL2ludGVsLWNpL2Zhc3QtZmVlZGJhY2sudGVz dGxpc3QKPiBAQCAtMyw3ICszLDkgQEAgaWd0QGNvcmVfcHJvcF9ibG9iQGJhc2ljCj4gIGlndEBk cnZfZ2V0cGFyYW1zX2Jhc2ljQGJhc2ljLWV1LXRvdGFsCj4gIGlndEBkcnZfZ2V0cGFyYW1zX2Jh c2ljQGJhc2ljLXN1YnNsaWNlLXRvdGFsCj4gIGlndEBkcnZfaGFuZ21hbkBlcnJvci1zdGF0ZS1i YXNpYwo+IC1pZ3RAZHJ2X21vZHVsZV9yZWxvYWRfYmFzaWMKPiAraWd0QGRydl9tb2R1bGVfcmVs b2FkQGJhc2ljLXJlbG9hZAo+ICtpZ3RAZHJ2X21vZHVsZV9yZWxvYWRAYmFzaWMtcmVsb2FkLWlu amVjdAo+ICtpZ3RAZHJ2X21vZHVsZV9yZWxvYWRAYmFzaWMtcmVsb2FkLWZpbmFsCj4gIGlndEBn ZW1fYmFzaWNAYmFkLWNsb3NlCj4gIGlndEBnZW1fYmFzaWNAY3JlYXRlLWNsb3NlCj4gIGlndEBn ZW1fYmFzaWNAY3JlYXRlLWZkLWNsb3NlCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL01ha2VmaWxlLnNv dXJjZXMgYi90b29scy9NYWtlZmlsZS5zb3VyY2VzCj4gaW5kZXggYmU1ODg3MS4uZTI0NTFlYSAx MDA2NDQKPiAtLS0gYS90b29scy9NYWtlZmlsZS5zb3VyY2VzCj4gKysrIGIvdG9vbHMvTWFrZWZp bGUuc291cmNlcwo+IEBAIC0yOSw2ICsyOSw3IEBAIHRvb2xzX3Byb2dfbGlzdHMgPQkJXAo+ICAJ aW50ZWxfcmVzaWRlbmN5CQlcCj4gIAlpbnRlbF9zdGVwcGluZwkJXAo+ICAJaW50ZWxfd2F0ZXJt YXJrCQlcCj4gKwlpbnRlbF9nZW1faW5mbwkJXAo+ICAJJChOVUxMKQo+ICAKPiAgZGlzdF9iaW5f U0NSSVBUUyA9IGludGVsX2dwdV9hYnJ0Cj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2dlbV9p bmZvLmMgYi90b29scy9pbnRlbF9nZW1faW5mby5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp bmRleCAwMDAwMDAwLi43NTQ0NDQzCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3Rvb2xzL2ludGVs X2dlbV9pbmZvLmMKPiBAQCAtMCwwICsxLDM1IEBACj4gKyNpbmNsdWRlICJpZ3QuaCIKPiArI2lu Y2x1ZGUgPHN5cy9pb2N0bC5oPgo+ICsjaW5jbHVkZSA8ZmNudGwuaD4KPiArI2luY2x1ZGUgPGVy cm5vLmg+Cj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4KPiArI2luY2x1ZGUgPHNpZ25hbC5oPgo+ICsj aW5jbHVkZSA8aTkxNV9kcm0uaD4KPiArCj4gKwo+ICtpbnQgbWFpbih2b2lkKQo+ICt7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3N3X2ZpbmlzaCBhcmcgPSB7IDAgfTsKPiArCWludCBmZDsKPiAr Cj4gKwlzaWduYWwoU0lHQUxSTSwgU0lHX0lHTik7Cj4gKwo+ICsJZmQgPSBfX2RybV9vcGVuX2Ry aXZlcihEUklWRVJfSU5URUwpOwo+ICsJaWYgKGZkIDwgMCkKPiArCQlyZXR1cm4gSUdUX0VYSVRf U0tJUDsKPiArCj4gKwlhbGFybSgxKTsKPiArCWlmIChpb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVf R0VNX1NXX0ZJTklTSCwgJmFyZykgPT0gMCkKPiArCQlyZXR1cm4gSUdUX0VYSVRfU0tJUDsKPiAr Cj4gKwlzd2l0Y2ggKGVycm5vKSB7Cj4gKwljYXNlIEVOT0VOVDoKPiArCQlyZXR1cm4gMDsKPiAr CWNhc2UgRUlPOgo+ICsJCXJldHVybiAxOwo+ICsJY2FzZSBFSU5UUjoKPiArCQlyZXR1cm4gMjsK PiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIDM7Cj4gKwl9Cj4gK30KCi0tIApKYW5pIE5pa3VsYSwg SW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==