Name: series-workflowls7jv Phase: Failed StartedAt: 2026-08-10 17:39:58 +0000 UTC FinishedAt: 2026-08-10 18:17:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowls7jv[0] Phase: Succeeded StartedAt: 2026-08-10 17:39:58 +0000 UTC FinishedAt: 2026-08-10 18:16:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowls7jv[0].run-triage Phase: Succeeded StartedAt: 2026-08-10 17:39:58 +0000 UTC FinishedAt: 2026-08-10 18:16:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgV2ktRmkgZHJpdmVyIHJlcXVpcmluZyBwaHlzaWNhbCBRdWFsY29tbSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIHByaW1hcmlseSBjb25zaXN0IG9mIGFkZGluZyBkZWJ1Z2ZzIHN0YXRpc3RpY3MgYW5kIGJvdW5kcyBjaGVja3MgZm9yIHRob3NlIHN0YXRpc3RpY3MsIHdoaWNoIGFyZSBub3QgY29yZSBmdW5jdGlvbmFsIGNoYW5nZXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6MTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyMWQ4YzE5MzcwYWYxNDJlMTExM2NkNmY5NmM3NjBlM2VmYzhiODE4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTg6MTY6MjQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xuaW5kZXggZDU0OTk1YjdhZGIyNy4uZDJkODlhN2UzNDBkZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xuQEAgLTEwNzEsNiAmIzQzOzEwNzEsMjAgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRcdFtIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX1BOX0VSUl9GTEFHX1NFVF0gPSBcJiMzNDtQTiBlcnJcJiMzNDssXG4gXHRcdFtIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX0RFU0NfQkxPQ0tFRF0gPSBcJiMzNDtEZXNjIGJsb2NrZWRcJiMzNDt9O1xuIFxuJiM0MztcdHN0YXRpYyBjb25zdCBjaGFyICp3Ym1fcnhfZHJvcFtXQk1fRVJSX0RST1BfTUFYXSA9IHtcbiYjNDM7XHRcdFtXQk1fRVJSX0dFVF9TV19ERVNDXSA9IFwmIzM0O1NXIGRlc2MgZXJyb3JcJiMzNDssXG4mIzQzO1x0XHRbV0JNX0VSUl9ERVNDX1BBUlNFXSA9IFwmIzM0O0Rlc2MgcGFyc2UgZXJyb3JcJiMzNDssXG4mIzQzO1x0XHRbV0JNX0VSUl9EUk9QX0lOVl9IV19JRF0gPSBcJiMzNDtJbnZhbGlkIGh3IGlkXCYjMzQ7LFxuJiM0MztcdFx0W1dCTV9FUlJfRFJPUF9OVUxMX1BSVE5SX0RQXSA9IFwmIzM0O051bGwgUGFydG5lciBkcFwmIzM0OyxcbiYjNDM7XHRcdFtXQk1fRVJSX0RST1BfTlVMTF9QUk9DX0RQXSA9IFwmIzM0O1Byb2Nlc3MgTnVsbCBQYXJ0bmVyIGRwXCYjMzQ7LFxuJiM0MztcdFx0W1dCTV9FUlJfRFJPUF9OVUxMX1BERVZdID0gXCYjMzQ7TnVsbCBQZGV2XCYjMzQ7LFxuJiM0MztcdFx0W1dCTV9FUlJfRFJPUF9OVUxMX0FSXSA9IFwmIzM0O051bGwgYXJcJiMzNDssXG4mIzQzO1x0XHRbV0JNX0VSUl9EUk9QX0NBQ19SVU5OSU5HXSA9IFwmIzM0O0NBQyBSdW5uaW5nXCYjMzQ7LFxuJiM0MztcdFx0W1dCTV9FUlJfRFJPUF9TR10gPSBcJiMzNDtTY2F0dGVyIEdhdGhlclwmIzM0OyxcbiYjNDM7XHRcdFtXQk1fRVJSX0RST1BfSU5WX05XSUZJX0hEUl0gPSBcJiMzNDtJbnZhbGlkIE5XaWZpIEhkciBsZW5cJiMzNDssXG4mIzQzO1x0XHRbV0JNX0VSUl9EUk9QX1JFT19HRU5FUklDXSAgPSBcJiMzNDtSRU8gR2VuZXJpY1wmIzM0OyxcbiYjNDM7XHRcdFtXQk1fRVJSX0RST1BfUlhETUFfR0VORVJJQ10gPSBcJiMzNDtSWERNQSBHZW5lcmljXCYjMzQ7fTtcbiYjNDM7XG4gXHRzdGF0aWMgY29uc3QgY2hhciAqd2JtX3JlbF9zcmNbSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9NQVhdID0ge1xuIFx0XHRbSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9UUU1dID0gXCYjMzQ7VFFNXCYjMzQ7LFxuIFx0XHRbSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9SWERNQV0gPSBcJiMzNDtSeGRtYVwmIzM0OyxcbkBAIC0xMDk1LDEzICYjNDM7MTEwOSwzMiBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWDsgaSYjNDM7JiM0MzspXG4gXHRcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0OyVzOiAldVxcblwmIzM0Oyxcbi1cdFx0XHRcdCByeGRtYV9lcnJbaV0sIGRldmljZV9zdGF0cy1cdTAwM2VyeGRtYV9lcnJvcltpXSk7XG4mIzQzO1x0XHRcdFx0IHJ4ZG1hX2VycltpXSwgZGV2aWNlX3N0YXRzLVx1MDAzZXdibV9lcnIucnhkbWFfZXJyb3JbaV0pO1xuIFxuIFx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgXCYjMzQ7XFxuUkVPIGVycm9yczpcXG5cJiMzNDspO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVg7IGkmIzQzOyYjNDM7KVxuIFx0XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDslczogJXVcXG5cJiMzNDssXG4tXHRcdFx0XHQgcmVvX2VycltpXSwgZGV2aWNlX3N0YXRzLVx1MDAzZXJlb19lcnJvcltpXSk7XG4mIzQzO1x0XHRcdFx0IHJlb19lcnJbaV0sIGRldmljZV9zdGF0cy1cdTAwM2V3Ym1fZXJyLnJlb19lcnJvcltpXSk7XG4mIzQzO1xuJiM0MztcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O1xcbldCTSBSeCBEcm9wIENvdW50OlxcblwmIzM0Oyk7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgV0JNX0VSUl9EUk9QX01BWDsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDslczogJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0IHdibV9yeF9kcm9wW2ldLCBkZXZpY2Vfc3RhdHMtXHUwMDNld2JtX2Vyci5kcm9wW2ldKTtcbiYjNDM7XG4mIzQzO1x0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbixcbiYjNDM7XHRcdFx0IFwmIzM0O1xcbldCTSBTVyBkZXNjIGZhbGxiYWNrIChIVyBDQyBub3QgZG9uZSk6ICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgZGV2aWNlX3N0YXRzLVx1MDAzZXdibV9lcnIuc3dfZGVzY19mYWxsYmFjayk7XG4mIzQzO1xuJiM0MztcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O1xcblJFTyBzZW50IHRvIHN0YWNrXFxuXCYjMzQ7KTtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBEUF9SRU9fRFNUX1JJTkdfTUFYOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgXCYjMzQ7cmluZyVkOlwmIzM0OywgaSk7XG4mIzQzO1x0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBhYi1cdTAwM2VhZy1cdTAwM2VudW1fZGV2aWNlczsgaiYjNDM7JiM0MzspXG4mIzQzO1x0XHRcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sXG4mIzQzO1x0XHRcdFx0XHQgXCYjMzQ7XFx0JWQ6JXVcJiMzNDssIGosXG4mIzQzO1x0XHRcdFx0XHQgZGV2aWNlX3N0YXRzLVx1MDAzZXNlbnRfdG9fc3RhY2tbaV1bal0pO1xuJiM0MztcdFx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHR9XG4gXG4gXHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDtcXG5IQUwgUkVPIGVycm9yczpcXG5cJiMzNDspO1xuIFxuQEAgLTExMTcsNiAmIzQzOzExNTAsMTEgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O3JpbmclZDogJXVcXG5cJiMzNDssXG4gXHRcdFx0XHQgaSwgZGV2aWNlX3N0YXRzLVx1MDAzZXR4X2Vyci5kZXNjX25hW2ldKTtcbiBcbiYjNDM7XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDtcXG5UWCBEZXNjcmlwdG9yIFBvb2wgQWxsb2MgRmFpbHVyZXM6XFxuXCYjMzQ7KTtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBVEgxMktfSFdfTUFYX1FVRVVFUzsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDtwb29sJWQ6ICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCBpLCBkZXZpY2Vfc3RhdHMtXHUwMDNldHhfZXJyLnR4YnVmX25hW2ldKTtcbiYjNDM7XG4gXHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLFxuIFx0XHRcdCBcJiMzNDtcXG5NaXNjIFRyYW5zbWl0IEZhaWx1cmVzOiAlZFxcblwmIzM0OyxcbiBcdFx0XHQgYXRvbWljX3JlYWQoXHUwMDI2ZGV2aWNlX3N0YXRzLVx1MDAzZXR4X2Vyci5taXNjX2ZhaWwpKTtcbkBAIC0xMTgxLDcgJiM0MzsxMjE5LDcgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDtcXG5SRU8gUnggUmVjZWl2ZWQ6XFxuXCYjMzQ7KTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVg7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O1JpbmclZDpcJiMzNDssIGkgJiM0MzsgMSk7XG4mIzQzO1x0XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDtyaW5nJWQ6XCYjMzQ7LCBpKTtcbiBcbiBcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgYWItXHUwMDNlYWctXHUwMDNlbnVtX2RldmljZXM7IGomIzQzOyYjNDM7KSB7XG4gXHRcdFx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbixcbkBAIC0xMjE1LDggJiM0MzsxMjUzLDQyIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBzc2l6ZV90XG4mIzQzO2F0aDEya19kZWJ1Z2ZzX3dyaXRlX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbiYjNDM7XHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZixcbiYjNDM7XHRcdFx0XHQgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGF0aDEya19iYXNlICphYiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfZHAgKmRwID0gYXRoMTJrX2FiX3RvX2RwKGFiKTtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9zdGF0cyAqZGV2aWNlX3N0YXRzID0gXHUwMDI2ZHAtXHUwMDNlZGV2aWNlX3N0YXRzO1xuJiM0MztcdGNoYXIgYnVmWzIwXSA9IHt9O1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdC8qIGZpbHRlciBwYXJ0aWFsIHdyaXRlcyBhbmQgaW52YWxpZCBjb21tYW5kcyAqL1xuJiM0MztcdGlmICgqcHBvcyAhPSAwIHx8IGNvdW50IFx1MDAzZT0gc2l6ZW9mKGJ1ZikgfHwgY291bnQgPT0gMClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBzaW1wbGVfd3JpdGVfdG9fYnVmZmVyKGJ1Ziwgc2l6ZW9mKGJ1ZikgLSAxLCBwcG9zLCB1c2VyX2J1ZiwgY291bnQpO1xuJiM0MztcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHQvKiBkcm9wIHRoZSBwb3NzaWJsZSAmIzM5O1xcbiYjMzk7IGZyb20gdGhlIGVuZCAqL1xuJiM0MztcdGlmIChidWZbKnBwb3MgLSAxXSA9PSAmIzM5O1xcbiYjMzk7KVxuJiM0MztcdFx0YnVmWypwcG9zIC0gMV0gPSAmIzM5O1xcMCYjMzk7O1xuJiM0MztcbiYjNDM7XHRpZiAoIXN0cmNtcChidWYsIFwmIzM0O3Jlc2V0XCYjMzQ7KSkge1xuJiM0MztcdFx0bWVtc2V0KGRldmljZV9zdGF0cywgMCwgc2l6ZW9mKCpkZXZpY2Vfc3RhdHMpKTtcbiYjNDM7XHRcdHJldHVybiBjb3VudDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGF0aDEya193YXJuKGFiLCBcJiMzNDt1bnN1cHBvcnRlZCBjb21tYW5kOiAlc1xcblwmIzM0OywgYnVmKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19kZXZpY2VfZHBfc3RhdHMgPSB7XG4gXHQucmVhZCA9IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzLFxuJiM0MztcdC53cml0ZSA9IGF0aDEya19kZWJ1Z2ZzX3dyaXRlX2RldmljZV9kcF9zdGF0cyxcbiBcdC5vcGVuID0gc2ltcGxlX29wZW4sXG4gXHQub3duZXIgPSBUSElTX01PRFVMRSxcbiBcdC5sbHNlZWsgPSBkZWZhdWx0X2xsc2VlayxcbkBAIC0xMjI3LDcgJiM0MzsxMjk5LDcgQEAgdm9pZCBhdGgxMmtfZGVidWdmc19wZGV2X2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtzaW11bGF0ZV9md19jcmFzaFwmIzM0OywgMDYwMCwgYWItXHUwMDNlZGVidWdmc19zb2MsIGFiLFxuIFx0XHRcdCAgICBcdTAwMjZmb3BzX3NpbXVsYXRlX2Z3X2NyYXNoKTtcbiBcbi1cdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7ZGV2aWNlX2RwX3N0YXRzXCYjMzQ7LCAwNDAwLCBhYi1cdTAwM2VkZWJ1Z2ZzX3NvYywgYWIsXG4mIzQzO1x0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtkZXZpY2VfZHBfc3RhdHNcJiMzNDssIDA2MDAsIGFiLVx1MDAzZWRlYnVnZnNfc29jLCBhYixcbiBcdFx0XHQgICAgXHUwMDI2Zm9wc19kZXZpY2VfZHBfc3RhdHMpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbmluZGV4IGJlZjBmMmJhMDU2MGYuLjI4OWFlZGU2ZGFiYjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuQEAgLTcsNiAmIzQzOzcsNyBAQFxuICNpZm5kZWYgQVRIMTJLX0RQX0hcbiAjZGVmaW5lIEFUSDEyS19EUF9IXG4gXG4mIzQzOyNpbmNsdWRlIFwmIzM0O2RwX3N0YXRzLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtody5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7ZHBfaHR0LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtkcF9jbW4uaFwmIzM0O1xuQEAgLTQyOSwxOSAmIzQzOzQzMCwyNyBAQCBzdHJ1Y3QgYXRoMTJrX2RwX2FyY2hfb3BzIHtcbiBzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF90eF9lcnJfc3RhdHMge1xuIFx0LyogVENMIFJpbmcgRGVzY3JpcHRvciB1bmF2YWlsYWJsZSAqL1xuIFx0dTMyIGRlc2NfbmFbRFBfVENMX05VTV9SSU5HX01BWF07XG4mIzQzO1x0LyogVFggZGVzY3JpcHRvciBwb29sIGV4aGF1c3RlZCAocGVyIHBvb2xfaWQgLyB0cmFmZmljIGNsYXNzKSAqL1xuJiM0MztcdHUzMiB0eGJ1Zl9uYVtBVEgxMktfSFdfTUFYX1FVRVVFU107XG4gXHQvKiBPdGhlciBmYWlsdXJlcyBkdXJpbmcgZHBfdHggZHVlIHRvIG1lbSBhbGxvY2F0aW9uIGZhaWx1cmVcbiBcdCAqIGlkciB1bmF2YWlsYWJsZSBldGMuXG4gXHQgKi9cbiBcdGF0b21pY190IG1pc2NfZmFpbDtcbiB9O1xuIFxuJiM0MztzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9yeF93Ym1fZXJyX3N0YXRzIHtcbiYjNDM7XHR1MzIgcnhkbWFfZXJyb3JbSEFMX1JFT19FTlRSX1JJTkdfUlhETUFfRUNPREVfTUFYXTtcbiYjNDM7XHR1MzIgcmVvX2Vycm9yW0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYXTtcbiYjNDM7XHR1MzIgZHJvcFtXQk1fRVJSX0RST1BfTUFYXTtcbiYjNDM7XHR1MzIgc3dfZGVzY19mYWxsYmFjaztcbiYjNDM7fTtcbiYjNDM7XG4gc3RydWN0IGF0aDEya19kZXZpY2VfZHBfc3RhdHMge1xuIFx0dTMyIGVycl9yaW5nX3BrdHM7XG4gXHR1MzIgaW52YWxpZF9yYm07XG4tXHR1MzIgcnhkbWFfZXJyb3JbSEFMX1JFT19FTlRSX1JJTkdfUlhETUFfRUNPREVfTUFYXTtcbi1cdHUzMiByZW9fZXJyb3JbSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVhdO1xuIFx0dTMyIGhhbF9yZW9fZXJyb3JbRFBfUkVPX0RTVF9SSU5HX01BWF07XG4gXHRzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF90eF9lcnJfc3RhdHMgdHhfZXJyO1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3J4X3dibV9lcnJfc3RhdHMgd2JtX2VycjtcbiBcdHUzMiByZW9fcnhbRFBfUkVPX0RTVF9SSU5HX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTtcbiBcdHUzMiByeF93Ym1fcmVsX3NvdXJjZVtIQUxfV0JNX1JFTF9TUkNfTU9EVUxFX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTtcbiBcdHUzMiB0cW1fcmVsX3JlYXNvbltNQVhfVFFNX1JFTEVBU0VfUkVBU09OXTtcbkBAIC00NTAsNiAmIzQzOzQ1OSw3IEBAIHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3N0YXRzIHtcbiBcdHUzMiB0eF9lbnF1ZXVlZFtEUF9UQ0xfTlVNX1JJTkdfTUFYXTtcbiBcdHUzMiB0eF9jb21wbGV0ZWRbRFBfVENMX05VTV9SSU5HX01BWF07XG4gXHR1MzIgcmVvX2V4Y2VwX21zZHVfYnVmX3R5cGU7XG4mIzQzO1x0dTMyIHNlbnRfdG9fc3RhY2tbRFBfUkVPX0RTVF9SSU5HX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTtcbiB9O1xuIFxuIHN0cnVjdCBhdGgxMmtfZHAge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfc3RhdHMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfc3RhdHMuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjA0ZDM4OTJhY2ZmMzJcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfc3RhdHMuaFxuQEAgLTAsMCAmIzQzOzEsMjUgQEBcbiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhciAqL1xuJiM0MzsvKlxuJiM0MzsgKiBDb3B5cmlnaHQgKGMpIFF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cbiYjNDM7ICovXG4mIzQzO1xuJiM0MzsjaWZuZGVmIEFUSDEyS19EUF9TVEFUU19IXG4mIzQzOyNkZWZpbmUgQVRIMTJLX0RQX1NUQVRTX0hcbiYjNDM7XG4mIzQzO2VudW0gYXRoMTJrX3dibV9lcnJfZHJvcF9yZWFzb24ge1xuJiM0MztcdFdCTV9FUlJfR0VUX1NXX0RFU0MsXG4mIzQzO1x0V0JNX0VSUl9ERVNDX1BBUlNFLFxuJiM0MztcdFdCTV9FUlJfRFJPUF9JTlZfSFdfSUQsXG4mIzQzO1x0V0JNX0VSUl9EUk9QX05VTExfUFJUTlJfRFAsXG4mIzQzO1x0V0JNX0VSUl9EUk9QX05VTExfUFJPQ19EUCxcbiYjNDM7XHRXQk1fRVJSX0RST1BfTlVMTF9QREVWLFxuJiM0MztcdFdCTV9FUlJfRFJPUF9OVUxMX0FSLFxuJiM0MztcdFdCTV9FUlJfRFJPUF9DQUNfUlVOTklORyxcbiYjNDM7XHRXQk1fRVJSX0RST1BfU0csXG4mIzQzO1x0V0JNX0VSUl9EUk9QX0lOVl9OV0lGSV9IRFIsXG4mIzQzO1x0V0JNX0VSUl9EUk9QX1JFT19HRU5FUklDLFxuJiM0MztcdFdCTV9FUlJfRFJPUF9SWERNQV9HRU5FUklDLFxuJiM0MztcdFdCTV9FUlJfRFJPUF9NQVgsXG4mIzQzO307XG4mIzQzO1xuJiM0MzsjZW5kaWYgLyogQVRIMTJLX0RQX1NUQVRTX0ggKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmNcbmluZGV4IDk1ZDg3ZGQ2Nzg3MmYuLmQ5NmQ4MzAxNTY1Y2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguY1xuQEAgLTEyLDYgJiM0MzsxMiwxNSBAQFxuICNpbmNsdWRlIFwmIzM0O2hhbF93Y243ODUwLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtoYWxfcWNjMjA3Mi5oXCYjMzQ7XG4gXG4mIzQzO3N0YXRpYyB2b2lkXG4mIzQzO2F0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuJiM0MztcdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqbXNkdSxcbiYjNDM7XHRcdFx0XHQgICAgZW51bSBhdGgxMmtfd2JtX2Vycl9kcm9wX3JlYXNvbiBkcm9wX3JlYXNvbilcbiYjNDM7e1xuJiM0MztcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbZHJvcF9yZWFzb25dJiM0MzsmIzQzOztcbiYjNDM7XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdTE2IGF0aDEya193aWZpN19kcF9yeF9nZXRfcGVlcl9pZChzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcdFx0XHRcdFx0ICBlbnVtIGF0aDEya19wZWVyX21ldGFkYXRhX3ZlcnNpb24gdmVyLFxuIFx0XHRcdFx0XHQgIF9fbGUzMiBwZWVyX21ldGFkYXRhKVxuQEAgLTY0Miw3ICYjNDM7NjUxLDEwIEBAIGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3JlY2VpdmVkX3BhY2tldHMoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdFx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4gXHRcdFx0Y29udGludWU7XG4gXHRcdH1cbi1cbiYjNDM7XHRcdGlmIChsaWtlbHkocmluZ19pZCBcdTAwM2MgRFBfUkVPX0RTVF9SSU5HX01BWCkpXG4mIzQzO1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy5zZW50X3RvX3N0YWNrW3JpbmdfaWRdW3BhcnRuZXJfZHAtXHUwMDNlZGV2aWNlX2lkXSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdFdBUk5fT05fT05DRSgxKTtcbiBcdFx0YXRoMTJrX2RwX3J4X2RlbGl2ZXJfbXNkdShkcF9wZGV2LCBuYXBpLCBtc2R1LCBcdTAwMjZyeF9pbmZvKTtcbiBcdH1cbiBcbkBAIC0xNjE0LDYgJiM0MzsxNjI2LDcgQEAgc3RhdGljIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9udWxsX3FfZGVzYyhzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXG4gXHRcdC8qIEZpcnN0IGJ1ZmZlciB3aWxsIGJlIGZyZWVkIGJ5IHRoZSBjYWxsZXIsIHNvIGRlZHVjdCBpdCYjMzk7cyBsZW5ndGggKi9cbiBcdFx0bXNkdV9sZW4gPSBtc2R1X2xlbiAtIChEUF9SWF9CVUZGRVJfU0laRSAtIGhhbF9yeF9kZXNjX3N6KTtcbiBcdFx0YXRoMTJrX3dpZmk3X2RwX3J4X251bGxfcV9kZXNjX3NnX2Ryb3AoZHAsIG1zZHVfbGVuLCBtc2R1X2xpc3QpO1xuJiM0MztcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfU0ddJiM0MzsmIzQzOztcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4gXG5AQCAtMTY0OSw4ICYjNDM7MTY2MiwxMCBAQCBzdGF0aWMgaW50IGF0aDEya193aWZpN19kcF9yeF9oX251bGxfcV9kZXNjKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcbiBcdFx0c2tiX3B1dChtc2R1LCBoYWxfcnhfZGVzY19zeiAmIzQzOyBsM3BhZF9ieXRlcyAmIzQzOyBtc2R1X2xlbik7XG4gXHRcdHNrYl9wdWxsKG1zZHUsIGhhbF9yeF9kZXNjX3N6ICYjNDM7IGwzcGFkX2J5dGVzKTtcbiBcdH1cbi1cdGlmICh1bmxpa2VseSghYXRoMTJrX2RwX3J4X2NoZWNrX253aWZpX2hkcl9sZW5fdmFsaWQoZHAsIG1zZHUsIHJ4X2luZm8pKSlcbiYjNDM7XHRpZiAodW5saWtlbHkoIWF0aDEya19kcF9yeF9jaGVja19ud2lmaV9oZHJfbGVuX3ZhbGlkKGRwLCBtc2R1LCByeF9pbmZvKSkpIHtcbiYjNDM7XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX0lOVl9OV0lGSV9IRFJdJiM0MzsmIzQzOztcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuIFxuIFx0YXRoMTJrX2RwX3J4X2hfcHBkdShkcF9wZGV2LCByeF9pbmZvKTtcbiBcdHJldCA9IGF0aDEya193aWZpN19kcF9yeF9oX21wZHUoZHBfcGRldiwgbXNkdSwgcnhfaW5mbyk7XG5AQCAtMTc2Myw3ICYjNDM7MTc3OCwxMCBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yeGRtYV9lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxuIFx0c3RydWN0IGF0aDEya19za2JfcnhjYiAqcnhjYiA9IEFUSDEyS19TS0JfUlhDQihtc2R1KTtcbiBcdGJvb2wgZHJvcCA9IGZhbHNlO1xuIFxuLVx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLnJ4ZG1hX2Vycm9yW3J4Y2ItXHUwMDNlZXJyX2NvZGVdJiM0MzsmIzQzOztcbiYjNDM7XHRpZiAobGlrZWx5KHJ4Y2ItXHUwMDNlZXJyX2NvZGUgXHUwMDNjIEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWCkpXG4mIzQzO1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5yeGRtYV9lcnJvcltyeGNiLVx1MDAzZWVycl9jb2RlXSYjNDM7JiM0Mzs7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0V0FSTl9PTl9PTkNFKDEpO1xuIFxuIFx0c3dpdGNoIChyeGNiLVx1MDAzZWVycl9jb2RlKSB7XG4gXHRjYXNlIEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX1VOQVVUSF9XRFNfRVJSOlxuQEAgLTE3ODAsNiAmIzQzOzE3OTgsNyBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yeGRtYV9lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxuIFx0XHQvKiBUT0RPOiBSZXZpZXcgb3RoZXIgcnhkbWEgZXJyb3IgY29kZSB0byBjaGVjayBpZiBhbnl0aGluZyBpc1xuIFx0XHQgKiB3b3J0aCByZXBvcnRpbmcgdG8gbWFjODAyMTFcbiBcdFx0ICovXG4mIzQzO1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9SWERNQV9HRU5FUklDXSYjNDM7JiM0Mzs7XG4gXHRcdGRyb3AgPSB0cnVlO1xuIFx0XHRicmVhaztcbiBcdH1cbkBAIC0xNzk2LDcgJiM0MzsxODE1LDEwIEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3Jlb19lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxuIFx0c3RydWN0IGF0aDEya19za2JfcnhjYiAqcnhjYiA9IEFUSDEyS19TS0JfUlhDQihtc2R1KTtcbiBcdGJvb2wgZHJvcCA9IGZhbHNlO1xuIFxuLVx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLnJlb19lcnJvcltyeGNiLVx1MDAzZWVycl9jb2RlXSYjNDM7JiM0Mzs7XG4mIzQzO1x0aWYgKGxpa2VseShyeGNiLVx1MDAzZWVycl9jb2RlIFx1MDAzYyBIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX01BWCkpXG4mIzQzO1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5yZW9fZXJyb3JbcnhjYi1cdTAwM2VlcnJfY29kZV0mIzQzOyYjNDM7O1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdFdBUk5fT05fT05DRSgxKTtcbiBcbiBcdHN3aXRjaCAocnhjYi1cdTAwM2VlcnJfY29kZSkge1xuIFx0Y2FzZSBIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX0RFU0NfQUREUl9aRVJPOlxuQEAgLTE4MTMsNiAmIzQzOzE4MzUsNyBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yZW9fZXJyKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcbiBcdFx0LyogVE9ETzogUmV2aWV3IG90aGVyIGVycm9ycyBhbmQgcHJvY2VzcyB0aGVtIHRvIG1hYzgwMjExXG4gXHRcdCAqIGFzIGFwcHJvcHJpYXRlLlxuIFx0XHQgKi9cbiYjNDM7XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX1JFT19HRU5FUklDXSYjNDM7JiM0Mzs7XG4gXHRcdGRyb3AgPSB0cnVlO1xuIFx0XHRicmVhaztcbiBcdH1cbkBAIC0xOTM1LDYgJiM0MzsxOTU4LDcgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdHJldCA9IGF0aDEya193aWZpN19oYWxfd2JtX2Rlc2NfcGFyc2VfZXJyKGRwLCByeF9kZXNjLFxuIFx0XHRcdFx0XHRcdFx0ICBcdTAwMjZlcnJfaW5mbyk7XG4gXHRcdGlmIChyZXQpIHtcbiYjNDM7XHRcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RFU0NfUEFSU0VdJiM0MzsmIzQzOztcbiBcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHBhcnNlIHJ4IGVycm9yIGluIHdibV9yZWwgcmluZyBkZXNjICVkXFxuXCYjMzQ7LFxuIFx0XHRcdFx0ICAgIHJldCk7XG4gXHRcdFx0Y29udGludWU7XG5AQCAtMTk0NCw4ICYjNDM7MTk2OCwxMCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcbiBcdFx0LyogcmV0cnkgbWFudWFsIGRlc2MgcmV0cmlldmFsIGlmIGh3IGNjIGlzIG5vdCBkb25lICovXG4gXHRcdGlmICghZGVzY19pbmZvKSB7XG4mIzQzO1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLnN3X2Rlc2NfZmFsbGJhY2smIzQzOyYjNDM7O1xuIFx0XHRcdGRlc2NfaW5mbyA9IGF0aDEya19kcF9nZXRfcnhfZGVzYyhkcCwgZXJyX2luZm8uY29va2llKTtcbiBcdFx0XHRpZiAoIWRlc2NfaW5mbykge1xuJiM0MztcdFx0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9HRVRfU1dfREVTQ10mIzQzOyYjNDM7O1xuIFx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O0ludmFsaWQgY29va2llIGluIERQIFdCTSByeCBlcnJvciBkZXNjcmlwdG9yIHJldHJpZXZhbDogMHgleFxcblwmIzM0OyxcbiBcdFx0XHRcdFx0ICAgIGVycl9pbmZvLmNvb2tpZSk7XG4gXHRcdFx0XHRjb250aW51ZTtcbkBAIC0xOTYxLDcgJiM0MzsxOTg3LDggQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdGRldmljZV9pZCA9IGRlc2NfaW5mby1cdTAwM2VkZXZpY2VfaWQ7XG4gXHRcdHBhcnRuZXJfZHAgPSBhdGgxMmtfZHBfaHdfZ3JwX3RvX2RwKGRwX2h3X2dycCwgZGV2aWNlX2lkKTtcbiBcdFx0aWYgKHVubGlrZWx5KCFwYXJ0bmVyX2RwKSkge1xuLVx0XHRcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuJiM0MztcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgV0JNX0VSUl9EUk9QX05VTExfUFJUTlJfRFApO1xuIFxuIFx0XHRcdC8qIEluIGFueSBjYXNlIGNvbnRpbnVhdGlvbiBiaXQgaXMgc2V0XG4gXHRcdFx0ICogaW4gdGhlIHByZXZpb3VzIHJlY29yZCwgY2xlYW51cCBzY2F0dGVyX21zZHVfbGlzdFxuQEAgLTIwMDcsNyAmIzQzOzIwMzQsOCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcdFx0aHdfbGlua19pZCA9IGF0aDEya19kcF9yeF9nZXRfbXNkdV9zcmNfbGluayhwYXJ0bmVyX2RwLVx1MDAzZWhhbCxcbiBcdFx0XHRcdFx0XHRcdCAgICBtc2R1X2RhdGEpO1xuIFx0XHRpZiAoaHdfbGlua19pZCBcdTAwM2U9IEFUSDEyS19HUk9VUF9NQVhfUkFESU8pIHtcbi1cdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbiYjNDM7XHRcdFx0YXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2IoZHAsIG1zZHUsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgIFdCTV9FUlJfRFJPUF9JTlZfSFdfSUQpO1xuIFxuIFx0XHRcdC8qIEluIGFueSBjYXNlIGNvbnRpbnVhdGlvbiBiaXQgaXMgc2V0XG4gXHRcdFx0ICogaW4gdGhlIHByZXZpb3VzIHJlY29yZCwgY2xlYW51cCBzY2F0dGVyX21zZHVfbGlzdFxuQEAgLTIwNjgsNyAmIzQzOzIwOTYsOCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcdFx0XHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0RBVEEsXG4gXHRcdFx0XHQgICBcJiMzNDtVbmFibGUgdG8gcHJvY2VzcyBXQk0gZXJyb3IgbXNkdSBkdWUgdG8gaW52YWxpZCBodyBsaW5rIGlkICVkIGRldmljZSBpZCAlZFxcblwmIzM0OyxcbiBcdFx0XHRcdCAgIGh3X2xpbmtfaWQsIGRldmljZV9pZCk7XG4tXHRcdFx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4mIzQzO1x0XHRcdGF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICBXQk1fRVJSX0RST1BfTlVMTF9QUk9DX0RQKTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuQEAgLTIwNzcsMTggJiM0MzsyMTA2LDIxIEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFxuIFx0XHRkcF9wZGV2ID0gYXRoMTJrX2RwX3RvX3BkZXZfZHAocGFydG5lcl9kcCwgcGRldl9pZHgpO1xuIFx0XHRpZiAoIWRwX3BkZXYpIHtcbi1cdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbiYjNDM7XHRcdFx0YXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2IoZHAsIG1zZHUsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgIFdCTV9FUlJfRFJPUF9OVUxMX1BERVYpO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXHRcdGFyID0gYXRoMTJrX3BkZXZfZHBfdG9fYXIoZHBfcGRldik7XG4gXG4gXHRcdGlmICghYXIgfHwgIXJjdV9kZXJlZmVyZW5jZShhci1cdTAwM2VhYi1cdTAwM2VwZGV2c19hY3RpdmVbcGRldl9pZHhdKSkge1xuLVx0XHRcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuJiM0MztcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgV0JNX0VSUl9EUk9QX05VTExfQVIpO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXG4gXHRcdGlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19DQUNfUlVOTklORywgXHUwMDI2YXItXHUwMDNlZGV2X2ZsYWdzKSkge1xuLVx0XHRcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuJiM0MztcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgV0JNX0VSUl9EUk9QX0NBQ19SVU5OSU5HKTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xuaW5kZXggNTg3ZDU4ZWVjY2ZhNS4uMTEwNDhjNTY4MzMxMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG5AQCAtMTY3LDggJiM0MzsxNjcsMTAgQEAgaW50IGF0aDEya193aWZpN19kcF90eChzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsIHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFcbiBcdHR4X3JpbmcgPSBcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW3RpLnJpbmdfaWRdO1xuIFxuIFx0dHhfZGVzYyA9IGF0aDEya19kcF90eF9hc3NpZ25fYnVmZmVyKGRwLCBwb29sX2lkKTtcbi1cdGlmICghdHhfZGVzYylcbiYjNDM7XHRpZiAoIXR4X2Rlc2MpIHtcbiYjNDM7XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50eF9lcnIudHhidWZfbmFbcG9vbF9pZF0mIzQzOyYjNDM7O1xuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XHR9XG4gXG4gXHRkcF9saW5rX3ZpZiA9IGF0aDEya19kcF92aWZfdG9fZHBfbGlua192aWYoXHUwMDI2YWh2aWYtXHUwMDNlZHBfdmlmLCBhcnZpZi1cdTAwM2VsaW5rX2lkKTtcbiBcbkBAIC01NzUsMTggJiM0Mzs1NzcsMTkgQEAgYXRoMTJrX2RwX3R4X3Byb2Nlc3NfaHR0X3R4X2NvbXBsZXRlKHN0cnVjdCBhdGgxMmtfZHAgKmRwLCB2b2lkICpkZXNjLFxuIHtcbiBcdHN0cnVjdCBodHRfdHhfd2JtX2NvbXBsZXRpb24gKnN0YXR1c19kZXNjO1xuIFx0c3RydWN0IGF0aDEya19kcF9odHRfd2JtX3R4X3N0YXR1cyB0cyA9IHt9O1xuLVx0ZW51bSBoYWxfd2JtX2h0dF90eF9jb21wX3N0YXR1cyB3Ym1fc3RhdHVzO1xuJiM0MztcdGVudW0gaGFsX3dibV9odHRfdHhfY29tcF9zdGF0dXMgaHR0X3N0YXR1cztcbiBcdHUxNiBwZWVyX2lkO1xuIFxuIFx0c3RhdHVzX2Rlc2MgPSBkZXNjO1xuIFxuLVx0d2JtX3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtXHUwMDNlaW5mbzAsXG4mIzQzO1x0aHR0X3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtXHUwMDNlaW5mbzAsXG4gXHRcdFx0XHQgICBIVFRfVFhfV0JNX0NPTVBfSU5GTzBfU1RBVFVTKTtcbi1cdGRwLVx1MDAzZWRldmljZV9zdGF0cy5md190eF9zdGF0dXNbd2JtX3N0YXR1c10mIzQzOyYjNDM7O1xuJiM0MztcdGlmIChsaWtlbHkoaHR0X3N0YXR1cyBcdTAwM2MgTUFYX0ZXX1RYX1NUQVRVUykpXG4mIzQzO1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMuZndfdHhfc3RhdHVzW2h0dF9zdGF0dXNdJiM0MzsmIzQzOztcbiBcbi1cdHN3aXRjaCAod2JtX3N0YXR1cykge1xuJiM0MztcdHN3aXRjaCAoaHR0X3N0YXR1cykge1xuIFx0Y2FzZSBIQUxfV0JNX1JFTF9IVFRfVFhfQ09NUF9TVEFUVVNfT0s6XG4tXHRcdHRzLmFja2VkID0gKHdibV9zdGF0dXMgPT0gSEFMX1dCTV9SRUxfSFRUX1RYX0NPTVBfU1RBVFVTX09LKTtcbiYjNDM7XHRcdHRzLmFja2VkID0gdHJ1ZTtcbiBcdFx0dHMuYWNrX3Jzc2kgPSBsZTMyX2dldF9iaXRzKHN0YXR1c19kZXNjLVx1MDAzZWluZm8yLFxuIFx0XHRcdFx0XHQgICAgSFRUX1RYX1dCTV9DT01QX0lORk8yX0FDS19SU1NJKTtcbiBcbkBAIC02MDgsNyAmIzQzOzYxMSw3IEBAIGF0aDEya19kcF90eF9wcm9jZXNzX2h0dF90eF9jb21wbGV0ZShzdHJ1Y3QgYXRoMTJrX2RwICpkcCwgdm9pZCAqZGVzYyxcbiBcdFx0ICovXG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbi1cdFx0YXRoMTJrX3dhcm4oZHAtXHUwMDNlYWIsIFwmIzM0O1Vua25vd24gaHR0IHdibSB0eCBzdGF0dXMgJWRcXG5cJiMzNDssIHdibV9zdGF0dXMpO1xuJiM0MztcdFx0YXRoMTJrX3dhcm4oZHAtXHUwMDNlYWIsIFwmIzM0O1Vua25vd24gaHR0IHR4IHN0YXR1cyAlZFxcblwmIzM0OywgaHR0X3N0YXR1cyk7XG4gXHRcdGJyZWFrO1xuIFx0fVxuIH1cbkBAIC05ODQsMTEgJiM0Mzs5ODcsMTcgQEAgdm9pZCBhdGgxMmtfd2lmaTdfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLCBpbnQgcmluZ19pZClcbiBcdFx0LyogRmluZCB0aGUgSEFMX1dCTV9SRUxFQVNFX0lORk8wX1JFTF9TUkNfTU9EVUxFIHZhbHVlICovXG4gXHRcdGJ1Zl9yZWxfc291cmNlID0gbGUzMl9nZXRfYml0cyh0eF9zdGF0dXMtXHUwMDNlaW5mbzAsXG4gXHRcdFx0XHRcdCAgICAgICBIQUxfV0JNX1JFTEVBU0VfSU5GTzBfUkVMX1NSQ19NT0RVTEUpO1xuLVx0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMudHhfd2JtX3JlbF9zb3VyY2VbYnVmX3JlbF9zb3VyY2VdJiM0MzsmIzQzOztcbiYjNDM7XHRcdGlmIChsaWtlbHkoYnVmX3JlbF9zb3VyY2UgXHUwMDNjIEhBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYKSlcbiYjNDM7XHRcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLnR4X3dibV9yZWxfc291cmNlW2J1Zl9yZWxfc291cmNlXSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdFdBUk5fT05fT05DRSgxKTtcbiBcbiBcdFx0cmVsX3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHModHhfc3RhdHVzLVx1MDAzZWluZm8wLFxuIFx0XHRcdFx0XHQgICBIQUxfV0JNX0NPTVBMX1RYX0lORk8wX1RRTV9SRUxFQVNFX1JFQVNPTik7XG4tXHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50cW1fcmVsX3JlYXNvbltyZWxfc3RhdHVzXSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRpZiAobGlrZWx5KHJlbF9zdGF0dXMgXHUwMDNjIE1BWF9UUU1fUkVMRUFTRV9SRUFTT04pKVxuJiM0MztcdFx0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMudHFtX3JlbF9yZWFzb25bcmVsX3N0YXR1c10mIzQzOyYjNDM7O1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRXQVJOX09OX09OQ0UoMSk7XG4gXG4gXHRcdC8qIFJlbGVhc2UgZGVzY3JpcHRvciBhcyBzb29uIGFzIGV4dHJhY3RpbmcgbmVjZXNzYXJ5IGluZm9cbiBcdFx0ICogdG8gcmVkdWNlIGNvbnRlbnRpb25cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9oYWxfcnguY1xuaW5kZXggNDljNjkzMjg5NzA5NC4uNjBlN2EzNjA5N2YxMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaGFsX3J4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaGFsX3J4LmNcbkBAIC0zMjksNyAmIzQzOzMyOSwxMCBAQCBpbnQgYXRoMTJrX3dpZmk3X2hhbF9kZXNjX3Jlb19wYXJzZV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdFx0XHQgICAgSEFMX1JFT19ERVNUX1JJTkdfSU5GTzBfUFVTSF9SRUFTT04pO1xuIFx0ZXJyX2NvZGUgPSBsZTMyX2dldF9iaXRzKGRlc2MtXHUwMDNlaW5mbzAsXG4gXHRcdFx0XHQgSEFMX1JFT19ERVNUX1JJTkdfSU5GTzBfRVJST1JfQ09ERSk7XG4tXHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMucmVvX2Vycm9yW2Vycl9jb2RlXSYjNDM7JiM0Mzs7XG4mIzQzO1x0aWYgKGxpa2VseShlcnJfY29kZSBcdTAwM2MgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVgpKVxuJiM0MztcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIucmVvX2Vycm9yW2Vycl9jb2RlXSYjNDM7JiM0Mzs7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0V0FSTl9PTl9PTkNFKDEpO1xuIFxuIFx0aWYgKHB1c2hfcmVhc29uICE9IEhBTF9SRU9fREVTVF9SSU5HX1BVU0hfUkVBU09OX0VSUl9ERVRFQ1RFRCBcdTAwMjZcdTAwMjZcbiBcdCAgICBwdXNoX3JlYXNvbiAhPSBIQUxfUkVPX0RFU1RfUklOR19QVVNIX1JFQVNPTl9ST1VUSU5HX0lOU1RSVUNUSU9OKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6MTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIFdpLUZpIGRyaXZlciByZXF1aXJpbmcgcGh5c2ljYWwgUXVhbGNvbW0gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBwcmltYXJpbHkgY29uc2lzdCBvZiBhZGRpbmcgZGVidWdmcyBzdGF0aXN0aWNzIGFuZCBib3VuZHMgY2hlY2tzIGZvciB0aG9zZSBzdGF0aXN0aWNzLCB3aGljaCBhcmUgbm90IGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjFkOGMxOTM3MGFmMTQyZTExMTNjZDZmOTZjNzYwZTNlZmM4YjgxOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDE4OjE2OjI0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYwppbmRleCBkNTQ5OTViN2FkYjI3Li5kMmQ4OWE3ZTM0MGRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYwpAQCAtMTA3MSw2ICYjNDM7MTA3MSwyMCBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJW0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfUE5fRVJSX0ZMQUdfU0VUXSA9ICYjMzQ7UE4gZXJyJiMzNDssCiAJCVtIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX0RFU0NfQkxPQ0tFRF0gPSAmIzM0O0Rlc2MgYmxvY2tlZCYjMzQ7fTsKIAomIzQzOwlzdGF0aWMgY29uc3QgY2hhciAqd2JtX3J4X2Ryb3BbV0JNX0VSUl9EUk9QX01BWF0gPSB7CiYjNDM7CQlbV0JNX0VSUl9HRVRfU1dfREVTQ10gPSAmIzM0O1NXIGRlc2MgZXJyb3ImIzM0OywKJiM0MzsJCVtXQk1fRVJSX0RFU0NfUEFSU0VdID0gJiMzNDtEZXNjIHBhcnNlIGVycm9yJiMzNDssCiYjNDM7CQlbV0JNX0VSUl9EUk9QX0lOVl9IV19JRF0gPSAmIzM0O0ludmFsaWQgaHcgaWQmIzM0OywKJiM0MzsJCVtXQk1fRVJSX0RST1BfTlVMTF9QUlROUl9EUF0gPSAmIzM0O051bGwgUGFydG5lciBkcCYjMzQ7LAomIzQzOwkJW1dCTV9FUlJfRFJPUF9OVUxMX1BST0NfRFBdID0gJiMzNDtQcm9jZXNzIE51bGwgUGFydG5lciBkcCYjMzQ7LAomIzQzOwkJW1dCTV9FUlJfRFJPUF9OVUxMX1BERVZdID0gJiMzNDtOdWxsIFBkZXYmIzM0OywKJiM0MzsJCVtXQk1fRVJSX0RST1BfTlVMTF9BUl0gPSAmIzM0O051bGwgYXImIzM0OywKJiM0MzsJCVtXQk1fRVJSX0RST1BfQ0FDX1JVTk5JTkddID0gJiMzNDtDQUMgUnVubmluZyYjMzQ7LAomIzQzOwkJW1dCTV9FUlJfRFJPUF9TR10gPSAmIzM0O1NjYXR0ZXIgR2F0aGVyJiMzNDssCiYjNDM7CQlbV0JNX0VSUl9EUk9QX0lOVl9OV0lGSV9IRFJdID0gJiMzNDtJbnZhbGlkIE5XaWZpIEhkciBsZW4mIzM0OywKJiM0MzsJCVtXQk1fRVJSX0RST1BfUkVPX0dFTkVSSUNdICA9ICYjMzQ7UkVPIEdlbmVyaWMmIzM0OywKJiM0MzsJCVtXQk1fRVJSX0RST1BfUlhETUFfR0VORVJJQ10gPSAmIzM0O1JYRE1BIEdlbmVyaWMmIzM0O307CiYjNDM7CiAJc3RhdGljIGNvbnN0IGNoYXIgKndibV9yZWxfc3JjW0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYXSA9IHsKIAkJW0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfVFFNXSA9ICYjMzQ7VFFNJiMzNDssCiAJCVtIQUxfV0JNX1JFTF9TUkNfTU9EVUxFX1JYRE1BXSA9ICYjMzQ7UnhkbWEmIzM0OywKQEAgLTEwOTUsMTMgJiM0MzsxMTA5LDMyIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLAogCiAJZm9yIChpID0gMDsgaSAmbHQ7IEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWDsgaSYjNDM7JiM0MzspCiAJCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7JXM6ICV1XG4mIzM0OywKLQkJCQkgcnhkbWFfZXJyW2ldLCBkZXZpY2Vfc3RhdHMtJmd0O3J4ZG1hX2Vycm9yW2ldKTsKJiM0MzsJCQkJIHJ4ZG1hX2VycltpXSwgZGV2aWNlX3N0YXRzLSZndDt3Ym1fZXJyLnJ4ZG1hX2Vycm9yW2ldKTsKIAogCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7XG5SRU8gZXJyb3JzOlxuJiMzNDspOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IEhBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYOyBpJiM0MzsmIzQzOykKIAkJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgJiMzNDslczogJXVcbiYjMzQ7LAotCQkJCSByZW9fZXJyW2ldLCBkZXZpY2Vfc3RhdHMtJmd0O3Jlb19lcnJvcltpXSk7CiYjNDM7CQkJCSByZW9fZXJyW2ldLCBkZXZpY2Vfc3RhdHMtJmd0O3dibV9lcnIucmVvX2Vycm9yW2ldKTsKJiM0MzsKJiM0MzsJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgJiMzNDtcbldCTSBSeCBEcm9wIENvdW50OlxuJiMzNDspOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgV0JNX0VSUl9EUk9QX01BWDsgaSYjNDM7JiM0MzspCiYjNDM7CQlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0OyVzOiAldVxuJiMzNDssCiYjNDM7CQkJCSB3Ym1fcnhfZHJvcFtpXSwgZGV2aWNlX3N0YXRzLSZndDt3Ym1fZXJyLmRyb3BbaV0pOwomIzQzOwomIzQzOwlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLAomIzQzOwkJCSAmIzM0O1xuV0JNIFNXIGRlc2MgZmFsbGJhY2sgKEhXIENDIG5vdCBkb25lKTogJXVcbiYjMzQ7LAomIzQzOwkJCSBkZXZpY2Vfc3RhdHMtJmd0O3dibV9lcnIuc3dfZGVzY19mYWxsYmFjayk7CiYjNDM7CiYjNDM7CWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7XG5SRU8gc2VudCB0byBzdGFja1xuJiMzNDspOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgRFBfUkVPX0RTVF9SSU5HX01BWDsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7cmluZyVkOiYjMzQ7LCBpKTsKJiM0MzsJCWZvciAoaiA9IDA7IGogJmx0OyBhYi0mZ3Q7YWctJmd0O251bV9kZXZpY2VzOyBqJiM0MzsmIzQzOykKJiM0MzsJCQlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLAomIzQzOwkJCQkJICYjMzQ7XHQlZDoldSYjMzQ7LCBqLAomIzQzOwkJCQkJIGRldmljZV9zdGF0cy0mZ3Q7c2VudF90b19zdGFja1tpXVtqXSk7CiYjNDM7CQlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0O1xuJiMzNDspOwomIzQzOwl9CiAKIAlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0O1xuSEFMIFJFTyBlcnJvcnM6XG4mIzM0Oyk7CiAKQEAgLTExMTcsNiAmIzQzOzExNTAsMTEgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsCiAJCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7cmluZyVkOiAldVxuJiMzNDssCiAJCQkJIGksIGRldmljZV9zdGF0cy0mZ3Q7dHhfZXJyLmRlc2NfbmFbaV0pOwogCiYjNDM7CWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7XG5UWCBEZXNjcmlwdG9yIFBvb2wgQWxsb2MgRmFpbHVyZXM6XG4mIzM0Oyk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBBVEgxMktfSFdfTUFYX1FVRVVFUzsgaSYjNDM7JiM0MzspCiYjNDM7CQlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0O3Bvb2wlZDogJXVcbiYjMzQ7LAomIzQzOwkJCQkgaSwgZGV2aWNlX3N0YXRzLSZndDt0eF9lcnIudHhidWZfbmFbaV0pOwomIzQzOwogCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sCiAJCQkgJiMzNDtcbk1pc2MgVHJhbnNtaXQgRmFpbHVyZXM6ICVkXG4mIzM0OywKIAkJCSBhdG9taWNfcmVhZCgmYW1wO2RldmljZV9zdGF0cy0mZ3Q7dHhfZXJyLm1pc2NfZmFpbCkpOwpAQCAtMTE4MSw3ICYjNDM7MTIxOSw3IEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLAogCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7XG5SRU8gUnggUmVjZWl2ZWQ6XG4mIzM0Oyk7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgRFBfUkVPX0RTVF9SSU5HX01BWDsgaSYjNDM7JiM0MzspIHsKLQkJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgJiMzNDtSaW5nJWQ6JiMzNDssIGkgJiM0MzsgMSk7CiYjNDM7CQlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0O3JpbmclZDomIzM0OywgaSk7CiAKIAkJZm9yIChqID0gMDsgaiAmbHQ7IGFiLSZndDthZy0mZ3Q7bnVtX2RldmljZXM7IGomIzQzOyYjNDM7KSB7CiAJCQlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLApAQCAtMTIxNSw4ICYjNDM7MTI1Myw0MiBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSwKIAlyZXR1cm4gcmV0OwogfQogCiYjNDM7c3RhdGljIHNzaXplX3QKJiM0MzthdGgxMmtfZGVidWdmc193cml0ZV9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsCiYjNDM7CQkJCSAgICAgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmLAomIzQzOwkJCQkgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQomIzQzO3sKJiM0MzsJc3RydWN0IGF0aDEya19iYXNlICphYiA9IGZpbGUtJmd0O3ByaXZhdGVfZGF0YTsKJiM0MzsJc3RydWN0IGF0aDEya19kcCAqZHAgPSBhdGgxMmtfYWJfdG9fZHAoYWIpOwomIzQzOwlzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9zdGF0cyAqZGV2aWNlX3N0YXRzID0gJmFtcDtkcC0mZ3Q7ZGV2aWNlX3N0YXRzOwomIzQzOwljaGFyIGJ1ZlsyMF0gPSB7fTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJLyogZmlsdGVyIHBhcnRpYWwgd3JpdGVzIGFuZCBpbnZhbGlkIGNvbW1hbmRzICovCiYjNDM7CWlmICgqcHBvcyAhPSAwIHx8IGNvdW50ICZndDs9IHNpemVvZihidWYpIHx8IGNvdW50ID09IDApCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJcmV0ID0gc2ltcGxlX3dyaXRlX3RvX2J1ZmZlcihidWYsIHNpemVvZihidWYpIC0gMSwgcHBvcywgdXNlcl9idWYsIGNvdW50KTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwkvKiBkcm9wIHRoZSBwb3NzaWJsZSAmIzM5O1xuJiMzOTsgZnJvbSB0aGUgZW5kICovCiYjNDM7CWlmIChidWZbKnBwb3MgLSAxXSA9PSAmIzM5O1xuJiMzOTspCiYjNDM7CQlidWZbKnBwb3MgLSAxXSA9ICYjMzk7XDAmIzM5OzsKJiM0MzsKJiM0MzsJaWYgKCFzdHJjbXAoYnVmLCAmIzM0O3Jlc2V0JiMzNDspKSB7CiYjNDM7CQltZW1zZXQoZGV2aWNlX3N0YXRzLCAwLCBzaXplb2YoKmRldmljZV9zdGF0cykpOwomIzQzOwkJcmV0dXJuIGNvdW50OwomIzQzOwl9CiYjNDM7CiYjNDM7CWF0aDEya193YXJuKGFiLCAmIzM0O3Vuc3VwcG9ydGVkIGNvbW1hbmQ6ICVzXG4mIzM0OywgYnVmKTsKJiM0MzsKJiM0MzsJcmV0dXJuIC1FSU5WQUw7CiYjNDM7fQomIzQzOwogc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19kZXZpY2VfZHBfc3RhdHMgPSB7CiAJLnJlYWQgPSBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cywKJiM0MzsJLndyaXRlID0gYXRoMTJrX2RlYnVnZnNfd3JpdGVfZGV2aWNlX2RwX3N0YXRzLAogCS5vcGVuID0gc2ltcGxlX29wZW4sCiAJLm93bmVyID0gVEhJU19NT0RVTEUsCiAJLmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLApAQCAtMTIyNyw3ICYjNDM7MTI5OSw3IEBAIHZvaWQgYXRoMTJrX2RlYnVnZnNfcGRldl9jcmVhdGUoc3RydWN0IGF0aDEya19iYXNlICphYikKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7c2ltdWxhdGVfZndfY3Jhc2gmIzM0OywgMDYwMCwgYWItJmd0O2RlYnVnZnNfc29jLCBhYiwKIAkJCSAgICAmYW1wO2ZvcHNfc2ltdWxhdGVfZndfY3Jhc2gpOwogCi0JZGVidWdmc19jcmVhdGVfZmlsZSgmIzM0O2RldmljZV9kcF9zdGF0cyYjMzQ7LCAwNDAwLCBhYi0mZ3Q7ZGVidWdmc19zb2MsIGFiLAomIzQzOwlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7ZGV2aWNlX2RwX3N0YXRzJiMzNDssIDA2MDAsIGFiLSZndDtkZWJ1Z2ZzX3NvYywgYWIsCiAJCQkgICAgJmFtcDtmb3BzX2RldmljZV9kcF9zdGF0cyk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaAppbmRleCBiZWYwZjJiYTA1NjBmLi4yODlhZWRlNmRhYmI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oCkBAIC03LDYgJiM0Mzs3LDcgQEAKICNpZm5kZWYgQVRIMTJLX0RQX0gKICNkZWZpbmUgQVRIMTJLX0RQX0gKIAomIzQzOyNpbmNsdWRlICYjMzQ7ZHBfc3RhdHMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2h3LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtkcF9odHQuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2RwX2Ntbi5oJiMzNDsKQEAgLTQyOSwxOSAmIzQzOzQzMCwyNyBAQCBzdHJ1Y3QgYXRoMTJrX2RwX2FyY2hfb3BzIHsKIHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3R4X2Vycl9zdGF0cyB7CiAJLyogVENMIFJpbmcgRGVzY3JpcHRvciB1bmF2YWlsYWJsZSAqLwogCXUzMiBkZXNjX25hW0RQX1RDTF9OVU1fUklOR19NQVhdOwomIzQzOwkvKiBUWCBkZXNjcmlwdG9yIHBvb2wgZXhoYXVzdGVkIChwZXIgcG9vbF9pZCAvIHRyYWZmaWMgY2xhc3MpICovCiYjNDM7CXUzMiB0eGJ1Zl9uYVtBVEgxMktfSFdfTUFYX1FVRVVFU107CiAJLyogT3RoZXIgZmFpbHVyZXMgZHVyaW5nIGRwX3R4IGR1ZSB0byBtZW0gYWxsb2NhdGlvbiBmYWlsdXJlCiAJICogaWRyIHVuYXZhaWxhYmxlIGV0Yy4KIAkgKi8KIAlhdG9taWNfdCBtaXNjX2ZhaWw7CiB9OwogCiYjNDM7c3RydWN0IGF0aDEya19kZXZpY2VfZHBfcnhfd2JtX2Vycl9zdGF0cyB7CiYjNDM7CXUzMiByeGRtYV9lcnJvcltIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVhdOwomIzQzOwl1MzIgcmVvX2Vycm9yW0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYXTsKJiM0MzsJdTMyIGRyb3BbV0JNX0VSUl9EUk9QX01BWF07CiYjNDM7CXUzMiBzd19kZXNjX2ZhbGxiYWNrOwomIzQzO307CiYjNDM7CiBzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9zdGF0cyB7CiAJdTMyIGVycl9yaW5nX3BrdHM7CiAJdTMyIGludmFsaWRfcmJtOwotCXUzMiByeGRtYV9lcnJvcltIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVhdOwotCXUzMiByZW9fZXJyb3JbSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVhdOwogCXUzMiBoYWxfcmVvX2Vycm9yW0RQX1JFT19EU1RfUklOR19NQVhdOwogCXN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3R4X2Vycl9zdGF0cyB0eF9lcnI7CiYjNDM7CXN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3J4X3dibV9lcnJfc3RhdHMgd2JtX2VycjsKIAl1MzIgcmVvX3J4W0RQX1JFT19EU1RfUklOR19NQVhdW0FUSDEyS19NQVhfREVWSUNFU107CiAJdTMyIHJ4X3dibV9yZWxfc291cmNlW0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYXVtBVEgxMktfTUFYX0RFVklDRVNdOwogCXUzMiB0cW1fcmVsX3JlYXNvbltNQVhfVFFNX1JFTEVBU0VfUkVBU09OXTsKQEAgLTQ1MCw2ICYjNDM7NDU5LDcgQEAgc3RydWN0IGF0aDEya19kZXZpY2VfZHBfc3RhdHMgewogCXUzMiB0eF9lbnF1ZXVlZFtEUF9UQ0xfTlVNX1JJTkdfTUFYXTsKIAl1MzIgdHhfY29tcGxldGVkW0RQX1RDTF9OVU1fUklOR19NQVhdOwogCXUzMiByZW9fZXhjZXBfbXNkdV9idWZfdHlwZTsKJiM0MzsJdTMyIHNlbnRfdG9fc3RhY2tbRFBfUkVPX0RTVF9SSU5HX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTsKIH07CiAKIHN0cnVjdCBhdGgxMmtfZHAgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9zdGF0cy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9zdGF0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjA0ZDM4OTJhY2ZmMzIKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3N0YXRzLmgKQEAgLTAsMCAmIzQzOzEsMjUgQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyICovCiYjNDM7LyoKJiM0MzsgKiBDb3B5cmlnaHQgKGMpIFF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy4KJiM0MzsgKi8KJiM0MzsKJiM0MzsjaWZuZGVmIEFUSDEyS19EUF9TVEFUU19ICiYjNDM7I2RlZmluZSBBVEgxMktfRFBfU1RBVFNfSAomIzQzOwomIzQzO2VudW0gYXRoMTJrX3dibV9lcnJfZHJvcF9yZWFzb24gewomIzQzOwlXQk1fRVJSX0dFVF9TV19ERVNDLAomIzQzOwlXQk1fRVJSX0RFU0NfUEFSU0UsCiYjNDM7CVdCTV9FUlJfRFJPUF9JTlZfSFdfSUQsCiYjNDM7CVdCTV9FUlJfRFJPUF9OVUxMX1BSVE5SX0RQLAomIzQzOwlXQk1fRVJSX0RST1BfTlVMTF9QUk9DX0RQLAomIzQzOwlXQk1fRVJSX0RST1BfTlVMTF9QREVWLAomIzQzOwlXQk1fRVJSX0RST1BfTlVMTF9BUiwKJiM0MzsJV0JNX0VSUl9EUk9QX0NBQ19SVU5OSU5HLAomIzQzOwlXQk1fRVJSX0RST1BfU0csCiYjNDM7CVdCTV9FUlJfRFJPUF9JTlZfTldJRklfSERSLAomIzQzOwlXQk1fRVJSX0RST1BfUkVPX0dFTkVSSUMsCiYjNDM7CVdCTV9FUlJfRFJPUF9SWERNQV9HRU5FUklDLAomIzQzOwlXQk1fRVJSX0RST1BfTUFYLAomIzQzO307CiYjNDM7CiYjNDM7I2VuZGlmIC8qIEFUSDEyS19EUF9TVEFUU19IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmMKaW5kZXggOTVkODdkZDY3ODcyZi4uZDk2ZDgzMDE1NjVjYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYwpAQCAtMTIsNiAmIzQzOzEyLDE1IEBACiAjaW5jbHVkZSAmIzM0O2hhbF93Y243ODUwLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtoYWxfcWNjMjA3Mi5oJiMzNDsKIAomIzQzO3N0YXRpYyB2b2lkCiYjNDM7YXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2Ioc3RydWN0IGF0aDEya19kcCAqZHAsCiYjNDM7CQkJCSAgICBzdHJ1Y3Qgc2tfYnVmZiAqbXNkdSwKJiM0MzsJCQkJICAgIGVudW0gYXRoMTJrX3dibV9lcnJfZHJvcF9yZWFzb24gZHJvcF9yZWFzb24pCiYjNDM7ewomIzQzOwlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtkcm9wX3JlYXNvbl0mIzQzOyYjNDM7OwomIzQzOwlkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdTE2IGF0aDEya193aWZpN19kcF9yeF9nZXRfcGVlcl9pZChzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAkJCQkJICBlbnVtIGF0aDEya19wZWVyX21ldGFkYXRhX3ZlcnNpb24gdmVyLAogCQkJCQkgIF9fbGUzMiBwZWVyX21ldGFkYXRhKQpAQCAtNjQyLDcgJiM0Mzs2NTEsMTAgQEAgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3NfcmVjZWl2ZWRfcGFja2V0cyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAkJCWRldl9rZnJlZV9za2JfYW55KG1zZHUpOwogCQkJY29udGludWU7CiAJCX0KLQomIzQzOwkJaWYgKGxpa2VseShyaW5nX2lkICZsdDsgRFBfUkVPX0RTVF9SSU5HX01BWCkpCiYjNDM7CQkJZHAtJmd0O2RldmljZV9zdGF0cy5zZW50X3RvX3N0YWNrW3JpbmdfaWRdW3BhcnRuZXJfZHAtJmd0O2RldmljZV9pZF0mIzQzOyYjNDM7OwomIzQzOwkJZWxzZQomIzQzOwkJCVdBUk5fT05fT05DRSgxKTsKIAkJYXRoMTJrX2RwX3J4X2RlbGl2ZXJfbXNkdShkcF9wZGV2LCBuYXBpLCBtc2R1LCAmYW1wO3J4X2luZm8pOwogCX0KIApAQCAtMTYxNCw2ICYjNDM7MTYyNiw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X2hfbnVsbF9xX2Rlc2Moc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LAogCQkvKiBGaXJzdCBidWZmZXIgd2lsbCBiZSBmcmVlZCBieSB0aGUgY2FsbGVyLCBzbyBkZWR1Y3QgaXQmIzM5O3MgbGVuZ3RoICovCiAJCW1zZHVfbGVuID0gbXNkdV9sZW4gLSAoRFBfUlhfQlVGRkVSX1NJWkUgLSBoYWxfcnhfZGVzY19zeik7CiAJCWF0aDEya193aWZpN19kcF9yeF9udWxsX3FfZGVzY19zZ19kcm9wKGRwLCBtc2R1X2xlbiwgbXNkdV9saXN0KTsKJiM0MzsJCWRwLSZndDtkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9TR10mIzQzOyYjNDM7OwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKQEAgLTE2NDksOCAmIzQzOzE2NjIsMTAgQEAgc3RhdGljIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9udWxsX3FfZGVzYyhzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsCiAJCXNrYl9wdXQobXNkdSwgaGFsX3J4X2Rlc2Nfc3ogJiM0MzsgbDNwYWRfYnl0ZXMgJiM0MzsgbXNkdV9sZW4pOwogCQlza2JfcHVsbChtc2R1LCBoYWxfcnhfZGVzY19zeiAmIzQzOyBsM3BhZF9ieXRlcyk7CiAJfQotCWlmICh1bmxpa2VseSghYXRoMTJrX2RwX3J4X2NoZWNrX253aWZpX2hkcl9sZW5fdmFsaWQoZHAsIG1zZHUsIHJ4X2luZm8pKSkKJiM0MzsJaWYgKHVubGlrZWx5KCFhdGgxMmtfZHBfcnhfY2hlY2tfbndpZmlfaGRyX2xlbl92YWxpZChkcCwgbXNkdSwgcnhfaW5mbykpKSB7CiYjNDM7CQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfSU5WX05XSUZJX0hEUl0mIzQzOyYjNDM7OwogCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQogCiAJYXRoMTJrX2RwX3J4X2hfcHBkdShkcF9wZGV2LCByeF9pbmZvKTsKIAlyZXQgPSBhdGgxMmtfd2lmaTdfZHBfcnhfaF9tcGR1KGRwX3BkZXYsIG1zZHUsIHJ4X2luZm8pOwpAQCAtMTc2Myw3ICYjNDM7MTc3OCwxMCBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yeGRtYV9lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LAogCXN0cnVjdCBhdGgxMmtfc2tiX3J4Y2IgKnJ4Y2IgPSBBVEgxMktfU0tCX1JYQ0IobXNkdSk7CiAJYm9vbCBkcm9wID0gZmFsc2U7CiAKLQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLnJ4ZG1hX2Vycm9yW3J4Y2ItJmd0O2Vycl9jb2RlXSYjNDM7JiM0Mzs7CiYjNDM7CWlmIChsaWtlbHkocnhjYi0mZ3Q7ZXJyX2NvZGUgJmx0OyBIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVgpKQomIzQzOwkJZHAtJmd0O2RldmljZV9zdGF0cy53Ym1fZXJyLnJ4ZG1hX2Vycm9yW3J4Y2ItJmd0O2Vycl9jb2RlXSYjNDM7JiM0Mzs7CiYjNDM7CWVsc2UKJiM0MzsJCVdBUk5fT05fT05DRSgxKTsKIAogCXN3aXRjaCAocnhjYi0mZ3Q7ZXJyX2NvZGUpIHsKIAljYXNlIEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX1VOQVVUSF9XRFNfRVJSOgpAQCAtMTc4MCw2ICYjNDM7MTc5OCw3IEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3J4ZG1hX2VycihzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsCiAJCS8qIFRPRE86IFJldmlldyBvdGhlciByeGRtYSBlcnJvciBjb2RlIHRvIGNoZWNrIGlmIGFueXRoaW5nIGlzCiAJCSAqIHdvcnRoIHJlcG9ydGluZyB0byBtYWM4MDIxMQogCQkgKi8KJiM0MzsJCWRwLSZndDtkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9SWERNQV9HRU5FUklDXSYjNDM7JiM0Mzs7CiAJCWRyb3AgPSB0cnVlOwogCQlicmVhazsKIAl9CkBAIC0xNzk2LDcgJiM0MzsxODE1LDEwIEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3Jlb19lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LAogCXN0cnVjdCBhdGgxMmtfc2tiX3J4Y2IgKnJ4Y2IgPSBBVEgxMktfU0tCX1JYQ0IobXNkdSk7CiAJYm9vbCBkcm9wID0gZmFsc2U7CiAKLQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLnJlb19lcnJvcltyeGNiLSZndDtlcnJfY29kZV0mIzQzOyYjNDM7OwomIzQzOwlpZiAobGlrZWx5KHJ4Y2ItJmd0O2Vycl9jb2RlICZsdDsgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVgpKQomIzQzOwkJZHAtJmd0O2RldmljZV9zdGF0cy53Ym1fZXJyLnJlb19lcnJvcltyeGNiLSZndDtlcnJfY29kZV0mIzQzOyYjNDM7OwomIzQzOwllbHNlCiYjNDM7CQlXQVJOX09OX09OQ0UoMSk7CiAKIAlzd2l0Y2ggKHJ4Y2ItJmd0O2Vycl9jb2RlKSB7CiAJY2FzZSBIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX0RFU0NfQUREUl9aRVJPOgpAQCAtMTgxMyw2ICYjNDM7MTgzNSw3IEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3Jlb19lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LAogCQkvKiBUT0RPOiBSZXZpZXcgb3RoZXIgZXJyb3JzIGFuZCBwcm9jZXNzIHRoZW0gdG8gbWFjODAyMTEKIAkJICogYXMgYXBwcm9wcmlhdGUuCiAJCSAqLwomIzQzOwkJZHAtJmd0O2RldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX1JFT19HRU5FUklDXSYjNDM7JiM0Mzs7CiAJCWRyb3AgPSB0cnVlOwogCQlicmVhazsKIAl9CkBAIC0xOTM1LDYgJiM0MzsxOTU4LDcgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsCiAJCXJldCA9IGF0aDEya193aWZpN19oYWxfd2JtX2Rlc2NfcGFyc2VfZXJyKGRwLCByeF9kZXNjLAogCQkJCQkJCSAgJmFtcDtlcnJfaW5mbyk7CiAJCWlmIChyZXQpIHsKJiM0MzsJCQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RFU0NfUEFSU0VdJiM0MzsmIzQzOzsKIAkJCWF0aDEya193YXJuKGFiLCAmIzM0O2ZhaWxlZCB0byBwYXJzZSByeCBlcnJvciBpbiB3Ym1fcmVsIHJpbmcgZGVzYyAlZFxuJiMzNDssCiAJCQkJICAgIHJldCk7CiAJCQljb250aW51ZTsKQEAgLTE5NDQsOCAmIzQzOzE5NjgsMTAgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsCiAKIAkJLyogcmV0cnkgbWFudWFsIGRlc2MgcmV0cmlldmFsIGlmIGh3IGNjIGlzIG5vdCBkb25lICovCiAJCWlmICghZGVzY19pbmZvKSB7CiYjNDM7CQkJZHAtJmd0O2RldmljZV9zdGF0cy53Ym1fZXJyLnN3X2Rlc2NfZmFsbGJhY2smIzQzOyYjNDM7OwogCQkJZGVzY19pbmZvID0gYXRoMTJrX2RwX2dldF9yeF9kZXNjKGRwLCBlcnJfaW5mby5jb29raWUpOwogCQkJaWYgKCFkZXNjX2luZm8pIHsKJiM0MzsJCQkJZHAtJmd0O2RldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9HRVRfU1dfREVTQ10mIzQzOyYjNDM7OwogCQkJCWF0aDEya193YXJuKGFiLCAmIzM0O0ludmFsaWQgY29va2llIGluIERQIFdCTSByeCBlcnJvciBkZXNjcmlwdG9yIHJldHJpZXZhbDogMHgleFxuJiMzNDssCiAJCQkJCSAgICBlcnJfaW5mby5jb29raWUpOwogCQkJCWNvbnRpbnVlOwpAQCAtMTk2MSw3ICYjNDM7MTk4Nyw4IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLAogCQlkZXZpY2VfaWQgPSBkZXNjX2luZm8tJmd0O2RldmljZV9pZDsKIAkJcGFydG5lcl9kcCA9IGF0aDEya19kcF9od19ncnBfdG9fZHAoZHBfaHdfZ3JwLCBkZXZpY2VfaWQpOwogCQlpZiAodW5saWtlbHkoIXBhcnRuZXJfZHApKSB7Ci0JCQlkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTsKJiM0MzsJCQlhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSwKJiM0MzsJCQkJCQkJICAgIFdCTV9FUlJfRFJPUF9OVUxMX1BSVE5SX0RQKTsKIAogCQkJLyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXQKIAkJCSAqIGluIHRoZSBwcmV2aW91cyByZWNvcmQsIGNsZWFudXAgc2NhdHRlcl9tc2R1X2xpc3QKQEAgLTIwMDcsNyAmIzQzOzIwMzQsOCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAkJaHdfbGlua19pZCA9IGF0aDEya19kcF9yeF9nZXRfbXNkdV9zcmNfbGluayhwYXJ0bmVyX2RwLSZndDtoYWwsCiAJCQkJCQkJICAgIG1zZHVfZGF0YSk7CiAJCWlmIChod19saW5rX2lkICZndDs9IEFUSDEyS19HUk9VUF9NQVhfUkFESU8pIHsKLQkJCWRldl9rZnJlZV9za2JfYW55KG1zZHUpOwomIzQzOwkJCWF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LAomIzQzOwkJCQkJCQkgICAgV0JNX0VSUl9EUk9QX0lOVl9IV19JRCk7CiAKIAkJCS8qIEluIGFueSBjYXNlIGNvbnRpbnVhdGlvbiBiaXQgaXMgc2V0CiAJCQkgKiBpbiB0aGUgcHJldmlvdXMgcmVjb3JkLCBjbGVhbnVwIHNjYXR0ZXJfbXNkdV9saXN0CkBAIC0yMDY4LDcgJiM0MzsyMDk2LDggQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsCiAJCQlhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0RBVEEsCiAJCQkJICAgJiMzNDtVbmFibGUgdG8gcHJvY2VzcyBXQk0gZXJyb3IgbXNkdSBkdWUgdG8gaW52YWxpZCBodyBsaW5rIGlkICVkIGRldmljZSBpZCAlZFxuJiMzNDssCiAJCQkJICAgaHdfbGlua19pZCwgZGV2aWNlX2lkKTsKLQkJCWRldl9rZnJlZV9za2JfYW55KG1zZHUpOwomIzQzOwkJCWF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LAomIzQzOwkJCQkJCQkgICAgV0JNX0VSUl9EUk9QX05VTExfUFJPQ19EUCk7CiAJCQljb250aW51ZTsKIAkJfQogCkBAIC0yMDc3LDE4ICYjNDM7MjEwNiwyMSBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAogCQlkcF9wZGV2ID0gYXRoMTJrX2RwX3RvX3BkZXZfZHAocGFydG5lcl9kcCwgcGRldl9pZHgpOwogCQlpZiAoIWRwX3BkZXYpIHsKLQkJCWRldl9rZnJlZV9za2JfYW55KG1zZHUpOwomIzQzOwkJCWF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LAomIzQzOwkJCQkJCQkgICAgV0JNX0VSUl9EUk9QX05VTExfUERFVik7CiAJCQljb250aW51ZTsKIAkJfQogCQlhciA9IGF0aDEya19wZGV2X2RwX3RvX2FyKGRwX3BkZXYpOwogCiAJCWlmICghYXIgfHwgIXJjdV9kZXJlZmVyZW5jZShhci0mZ3Q7YWItJmd0O3BkZXZzX2FjdGl2ZVtwZGV2X2lkeF0pKSB7Ci0JCQlkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTsKJiM0MzsJCQlhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSwKJiM0MzsJCQkJCQkJICAgIFdCTV9FUlJfRFJPUF9OVUxMX0FSKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKIAkJaWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX0NBQ19SVU5OSU5HLCAmYW1wO2FyLSZndDtkZXZfZmxhZ3MpKSB7Ci0JCQlkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTsKJiM0MzsJCQlhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSwKJiM0MzsJCQkJCQkJICAgIFdCTV9FUlJfRFJPUF9DQUNfUlVOTklORyk7CiAJCQljb250aW51ZTsKIAkJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMKaW5kZXggNTg3ZDU4ZWVjY2ZhNS4uMTEwNDhjNTY4MzMxMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguYwpAQCAtMTY3LDggJiM0MzsxNjcsMTAgQEAgaW50IGF0aDEya193aWZpN19kcF90eChzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsIHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmEKIAl0eF9yaW5nID0gJmFtcDtkcC0mZ3Q7dHhfcmluZ1t0aS5yaW5nX2lkXTsKIAogCXR4X2Rlc2MgPSBhdGgxMmtfZHBfdHhfYXNzaWduX2J1ZmZlcihkcCwgcG9vbF9pZCk7Ci0JaWYgKCF0eF9kZXNjKQomIzQzOwlpZiAoIXR4X2Rlc2MpIHsKJiM0MzsJCWRwLSZndDtkZXZpY2Vfc3RhdHMudHhfZXJyLnR4YnVmX25hW3Bvb2xfaWRdJiM0MzsmIzQzOzsKIAkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CX0KIAogCWRwX2xpbmtfdmlmID0gYXRoMTJrX2RwX3ZpZl90b19kcF9saW5rX3ZpZigmYW1wO2FodmlmLSZndDtkcF92aWYsIGFydmlmLSZndDtsaW5rX2lkKTsKIApAQCAtNTc1LDE4ICYjNDM7NTc3LDE5IEBAIGF0aDEya19kcF90eF9wcm9jZXNzX2h0dF90eF9jb21wbGV0ZShzdHJ1Y3QgYXRoMTJrX2RwICpkcCwgdm9pZCAqZGVzYywKIHsKIAlzdHJ1Y3QgaHR0X3R4X3dibV9jb21wbGV0aW9uICpzdGF0dXNfZGVzYzsKIAlzdHJ1Y3QgYXRoMTJrX2RwX2h0dF93Ym1fdHhfc3RhdHVzIHRzID0ge307Ci0JZW51bSBoYWxfd2JtX2h0dF90eF9jb21wX3N0YXR1cyB3Ym1fc3RhdHVzOwomIzQzOwllbnVtIGhhbF93Ym1faHR0X3R4X2NvbXBfc3RhdHVzIGh0dF9zdGF0dXM7CiAJdTE2IHBlZXJfaWQ7CiAKIAlzdGF0dXNfZGVzYyA9IGRlc2M7CiAKLQl3Ym1fc3RhdHVzID0gbGUzMl9nZXRfYml0cyhzdGF0dXNfZGVzYy0mZ3Q7aW5mbzAsCiYjNDM7CWh0dF9zdGF0dXMgPSBsZTMyX2dldF9iaXRzKHN0YXR1c19kZXNjLSZndDtpbmZvMCwKIAkJCQkgICBIVFRfVFhfV0JNX0NPTVBfSU5GTzBfU1RBVFVTKTsKLQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLmZ3X3R4X3N0YXR1c1t3Ym1fc3RhdHVzXSYjNDM7JiM0Mzs7CiYjNDM7CWlmIChsaWtlbHkoaHR0X3N0YXR1cyAmbHQ7IE1BWF9GV19UWF9TVEFUVVMpKQomIzQzOwkJZHAtJmd0O2RldmljZV9zdGF0cy5md190eF9zdGF0dXNbaHR0X3N0YXR1c10mIzQzOyYjNDM7OwogCi0Jc3dpdGNoICh3Ym1fc3RhdHVzKSB7CiYjNDM7CXN3aXRjaCAoaHR0X3N0YXR1cykgewogCWNhc2UgSEFMX1dCTV9SRUxfSFRUX1RYX0NPTVBfU1RBVFVTX09LOgotCQl0cy5hY2tlZCA9ICh3Ym1fc3RhdHVzID09IEhBTF9XQk1fUkVMX0hUVF9UWF9DT01QX1NUQVRVU19PSyk7CiYjNDM7CQl0cy5hY2tlZCA9IHRydWU7CiAJCXRzLmFja19yc3NpID0gbGUzMl9nZXRfYml0cyhzdGF0dXNfZGVzYy0mZ3Q7aW5mbzIsCiAJCQkJCSAgICBIVFRfVFhfV0JNX0NPTVBfSU5GTzJfQUNLX1JTU0kpOwogCkBAIC02MDgsNyAmIzQzOzYxMSw3IEBAIGF0aDEya19kcF90eF9wcm9jZXNzX2h0dF90eF9jb21wbGV0ZShzdHJ1Y3QgYXRoMTJrX2RwICpkcCwgdm9pZCAqZGVzYywKIAkJICovCiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWF0aDEya193YXJuKGRwLSZndDthYiwgJiMzNDtVbmtub3duIGh0dCB3Ym0gdHggc3RhdHVzICVkXG4mIzM0Oywgd2JtX3N0YXR1cyk7CiYjNDM7CQlhdGgxMmtfd2FybihkcC0mZ3Q7YWIsICYjMzQ7VW5rbm93biBodHQgdHggc3RhdHVzICVkXG4mIzM0OywgaHR0X3N0YXR1cyk7CiAJCWJyZWFrOwogCX0KIH0KQEAgLTk4NCwxMSAmIzQzOzk4NywxNyBAQCB2b2lkIGF0aDEya193aWZpN19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDEya19kcCAqZHAsIGludCByaW5nX2lkKQogCQkvKiBGaW5kIHRoZSBIQUxfV0JNX1JFTEVBU0VfSU5GTzBfUkVMX1NSQ19NT0RVTEUgdmFsdWUgKi8KIAkJYnVmX3JlbF9zb3VyY2UgPSBsZTMyX2dldF9iaXRzKHR4X3N0YXR1cy0mZ3Q7aW5mbzAsCiAJCQkJCSAgICAgICBIQUxfV0JNX1JFTEVBU0VfSU5GTzBfUkVMX1NSQ19NT0RVTEUpOwotCQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLnR4X3dibV9yZWxfc291cmNlW2J1Zl9yZWxfc291cmNlXSYjNDM7JiM0Mzs7CiYjNDM7CQlpZiAobGlrZWx5KGJ1Zl9yZWxfc291cmNlICZsdDsgSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9NQVgpKQomIzQzOwkJCWRwLSZndDtkZXZpY2Vfc3RhdHMudHhfd2JtX3JlbF9zb3VyY2VbYnVmX3JlbF9zb3VyY2VdJiM0MzsmIzQzOzsKJiM0MzsJCWVsc2UKJiM0MzsJCQlXQVJOX09OX09OQ0UoMSk7CiAKIAkJcmVsX3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHModHhfc3RhdHVzLSZndDtpbmZvMCwKIAkJCQkJICAgSEFMX1dCTV9DT01QTF9UWF9JTkZPMF9UUU1fUkVMRUFTRV9SRUFTT04pOwotCQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLnRxbV9yZWxfcmVhc29uW3JlbF9zdGF0dXNdJiM0MzsmIzQzOzsKJiM0MzsJCWlmIChsaWtlbHkocmVsX3N0YXR1cyAmbHQ7IE1BWF9UUU1fUkVMRUFTRV9SRUFTT04pKQomIzQzOwkJCWRwLSZndDtkZXZpY2Vfc3RhdHMudHFtX3JlbF9yZWFzb25bcmVsX3N0YXR1c10mIzQzOyYjNDM7OwomIzQzOwkJZWxzZQomIzQzOwkJCVdBUk5fT05fT05DRSgxKTsKIAogCQkvKiBSZWxlYXNlIGRlc2NyaXB0b3IgYXMgc29vbiBhcyBleHRyYWN0aW5nIG5lY2Vzc2FyeSBpbmZvCiAJCSAqIHRvIHJlZHVjZSBjb250ZW50aW9uCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9oYWxfcnguYwppbmRleCA0OWM2OTMyODk3MDk0Li42MGU3YTM2MDk3ZjEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaGFsX3J4LmMKQEAgLTMyOSw3ICYjNDM7MzI5LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfaGFsX2Rlc2NfcmVvX3BhcnNlX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAkJCQkgICAgSEFMX1JFT19ERVNUX1JJTkdfSU5GTzBfUFVTSF9SRUFTT04pOwogCWVycl9jb2RlID0gbGUzMl9nZXRfYml0cyhkZXNjLSZndDtpbmZvMCwKIAkJCQkgSEFMX1JFT19ERVNUX1JJTkdfSU5GTzBfRVJST1JfQ09ERSk7Ci0JZHAtJmd0O2RldmljZV9zdGF0cy5yZW9fZXJyb3JbZXJyX2NvZGVdJiM0MzsmIzQzOzsKJiM0MzsJaWYgKGxpa2VseShlcnJfY29kZSAmbHQ7IEhBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYKSkKJiM0MzsJCWRwLSZndDtkZXZpY2Vfc3RhdHMud2JtX2Vyci5yZW9fZXJyb3JbZXJyX2NvZGVdJiM0MzsmIzQzOzsKJiM0MzsJZWxzZQomIzQzOwkJV0FSTl9PTl9PTkNFKDEpOwogCiAJaWYgKHB1c2hfcmVhc29uICE9IEhBTF9SRU9fREVTVF9SSU5HX1BVU0hfUkVBU09OX0VSUl9ERVRFQ1RFRCAmYW1wOyZhbXA7CiAJICAgIHB1c2hfcmVhc29uICE9IEhBTF9SRU9fREVTVF9SSU5HX1BVU0hfUkVBU09OX1JPVVRJTkdfSU5TVFJVQ1RJT04pIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxMDgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIGF0aDEyayBEcml2ZXIgRGVidWdmcyBhbmQgU3RhdHMgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgYXRoMTJrYCB3aXJlbGVzcyBkcml2ZXIuIEl0JiMzOTtzIGEgUXVhbGNvbW0gV2ktRmkgNyBkcml2ZXIsIHNvIGltbWVkaWF0ZWx5IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLiBUaGlzIHBhdGNoIHNlZW1zIGZvY3VzZWQgb24gZW5oYW5jaW5nIGRlYnVnZnMgc3RhdGlzdGljcywgd2hpY2ggaXMgY29tbW9uLiBJIHNlZSBhZGRpdGlvbnMgYW5kIHVwZGF0ZXMgdG8gdGhlIGBhdGgxMmtgIGRlYnVnZnMgaW50ZXJmYWNlLiBTcGVjaWZpY2FsbHksIHdlJiMzOTt2ZSBnb3QgbW9yZSBzdGF0cyBiZWluZyBkdW1wZWQsIGEgd2F5IHRvIHJlc2V0IHRoZSBzdGF0cyB2aWEgYSB3cml0ZSBoYW5kbGVyIChgZWNobyByZXNldCAmZ3Q7IGRldmljZV9kcF9zdGF0c2ApLCBhbmQgZmlsZSBwZXJtaXNzaW9uIGNoYW5nZXMuCgpUaGUgY29yZSBvZiB0aGUgcGF0Y2ggaW52b2x2ZXMgYWRkaW5nIG5ldyBmaWVsZHMgdG8gdmFyaW91cyBgc3RydWN0YHMgcmVsYXRlZCB0byBkZXZpY2Ugc3RhdGlzdGljcyAoYGF0aDEya19kZXZpY2VfZHBfdHhfZXJyX3N0YXRzYCwgYGF0aDEya19kZXZpY2VfZHBfc3RhdHNgLCBhbmQgYGF0aDEya19kZXZpY2VfZHBfcnhfd2JtX2Vycl9zdGF0c2ApLiBUaGVyZSBhcmUgYWxzbyB1cGRhdGVzIHRvIHNldmVyYWwgZnVuY3Rpb25zIChgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3NfcmVjZWl2ZWRfcGFja2V0c2AsIGBhdGgxMmtfd2lmaTdfZHBfdHhgLCBldGMuKSB0byBpbmNyZW1lbnQgdGhlc2UgbmV3IHN0YXRzLiBJbXBvcnRhbnRseSwgdGhlcmUgYXJlIG5ldyBib3VuZHMgY2hlY2tzLCBhbmQgYFdBUk5fT05fT05DRWAgY2FsbHMsIHdoaWNoIGlzIGEgZ29vZCBzYWZldHkgbWVhc3VyZS4KClRoZSBjcnVjaWFsIGFkZGl0aW9uIGlzIHRoZSBib3VuZHMgY2hlY2tpbmcgb24gYXJyYXkgYWNjZXNzZXMsIGxpa2UgdGhpczoKCmBgYGMKLQkJZHAtJmd0O2RldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0mIzQzOyYjNDM7OwomIzQzOwkJaWYgKGxpa2VseShidWZfcmVsX3NvdXJjZSAmbHQ7IEhBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYKSkKJiM0MzsJCQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLnR4X3dibV9yZWxfc291cmNlW2J1Zl9yZWxfc291cmNlXSYjNDM7JiM0Mzs7CiYjNDM7CQllbHNlCiYjNDM7CQkJV0FSTl9PTl9PTkNFKDEpOwpgYGAKClRoaXMgaXMgdGhlIGtleSBwb2ludC4gV2UmIzM5O3JlIHByZXZlbnRpbmcgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcyB3aXRoaW4gdGhlIHN0YXRpc3RpY3MgY29sbGVjdGlvbiwgd2hpY2ggY291bGQgYmUgZXhwbG9pdGVkIGJ5IG1hbGljaW91cyBmaXJtd2FyZSBvciBoYXJkd2FyZSBkZXNjcmlwdG9ycy4gVGhpcyBwcmV2ZW50cyBtZW1vcnkgY29ycnVwdGlvbi4gVGhlIHJlc2V0IGZ1bmN0aW9uYWxpdHkgdmlhIGRlYnVnZnMgaXMganVzdCBhIGNvbnZlbmllbmNlLgoKTm93LCB0aGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgc29tZXRoaW5nIHRvIGZ1eno/IFRoZSBwYXRjaCAqYWRkcyogYm91bmRzIGNoZWNrcywgYW5kIGl0IHByb3ZpZGVzIGEgcmVzZXQgaW50ZXJmYWNlLiBUaGUgYm91bmRzIGNoZWNrcyBpbXByb3ZlIHNlY3VyaXR5IGFuZCBzdGFiaWxpdHkgYnV0IGFyZSBub3QgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdHJhZGl0aW9uYWwgc2Vuc2UuIFRoZSByZXNldCBpcyBub3QgdHlwaWNhbGx5IGNvbnNpZGVyZWQgY3JpdGljYWwuCgpHaXZlbiB0aGF0IGBhdGgxMmtgIGlzIGEgd2lyZWxlc3MgZHJpdmVyLCBpdCBpbnRlcmFjdHMgd2l0aCBmaXJtd2FyZS4gVGhlIG1vc3QgbGlrZWx5IGF0dGFjayBzdXJmYWNlIGlzIHRoZSBmaXJtd2FyZSBpbnRlcmZhY2UuIFRvIHByb3Blcmx5IGZ1enogdGhlIGRyaXZlciwgSSYjMzk7ZCBsaWtlbHkgbmVlZCB0byBnZW5lcmF0ZSBtYWxpY2lvdXMgZmlybXdhcmUgZGVzY3JpcHRvcnMuIFRoaXMgbWVhbnMgSSYjMzk7ZCBuZWVkIGVpdGhlciBhY3R1YWwgaGFyZHdhcmUgb3IgYSBoaWdoLWZpZGVsaXR5IFBDSS9BSEIgZW11bGF0aW9uLiBDYW4gYGF0aDEya2AgYmUgcmVhbGlzdGljYWxseSBmdXp6ZWQgaW4gUUVNVT8gUHJvYmFibHkgbm90LiBJdCYjMzk7cyBkZXNpZ25lZCBmb3Igc3BlY2lmaWMgUXVhbGNvbW0gaGFyZHdhcmUuIEkgaGF2ZSB0byBjaGVjayB0aGUgcHJvbXB0JiMzOTtzIGNvbmRpdGlvbiB0aG91Z2guCgpUaGUgcHJvbXB0IHNheXMgdG8gcmV0dXJuICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiAtIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OwoKYGF0aDEya2AgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgV2ktRmkgZHJpdmVyIGFuZCBpcyBkZWZpbml0ZWx5IGdvaW5nIHRvIG5lZWQgc3BlY2lmaWMgUXVhbGNvbW0gaGFyZHdhcmUuIEdpdmVuIHRoZSBwcm92aWRlZCBwcm9tcHQsIHRoaXMgcGF0Y2ggaXMgKipub3QqKiB3b3J0aCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTE4MTI9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIF9fbWF5YmVfdW51c2VkIGF0aDEya19wY2lfcG1fb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTgxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTgxOTppbnQgYXRoMTJrX3BjaV9yZWdpc3Rlcl9kcml2ZXIoY29uc3QgZW51bSBhdGgxMmtfZGV2aWNlX2ZhbWlseSBkZXZpY2VfaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MjAtXHRcdFx0ICAgICAgIHN0cnVjdCBhdGgxMmtfcGNpX2RyaXZlciAqZHJpdmVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTg0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTg0NjpcdHJldHVybiBwY2lfcmVnaXN0ZXJfZHJpdmVyKHBjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xODQ3LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTg0ODpFWFBPUlRfU1lNQk9MKGF0aDEya19wY2lfcmVnaXN0ZXJfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTg0OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oPTE3Nj12b2lkIGF0aDEya19wY2lfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaDoxNzc6aW50IGF0aDEya19wY2lfcmVnaXN0ZXJfZHJpdmVyKGNvbnN0IGVudW0gYXRoMTJrX2RldmljZV9mYW1pbHkgZGV2aWNlX2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaC0xNzgtXHRcdFx0ICAgICAgIHN0cnVjdCBhdGgxMmtfcGNpX2RyaXZlciAqZHJpdmVyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jPTE5Nz1pbnQgYXRoMTJrX3dpZmk3X3BjaV9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy0yMDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jOjIwMTpcdHJldCA9IGF0aDEya19wY2lfcmVnaXN0ZXJfZHJpdmVyKEFUSDEyS19ERVZJQ0VfRkFNSUxZX1dJRkk3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy0yMDItXHRcdFx0XHRcdCBcdTAwMjZhdGgxMmtfd2lmaTdfcGNpX2RyaXZlcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1MTUKCQkJCQkJCW91dHB1dDogOTMKCQkJCQkJCXRob3VnaHRzOiAxMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYXRoMTJrIERyaXZlciBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBZZXAsIHRoZSBgYXRoMTJrYCBkcml2ZXIuLi4gdGhhdCYjMzk7cyBRdWFsY29tbSYjMzk7cyBQQ0llIGRyaXZlciBmb3IgdGhlaXIgV2ktRmkgNyBzaWxpY29uLiBSaWdodCBhd2F5LCBJIGtub3cgdGhpcyBpcyBnb2luZyB0byBiZSBhIGhhcmR3YXJlLWRlcGVuZGVudCBwaWVjZTsgaXQmIzM5O3Mgbm90IHNvbWV0aGluZyB5b3UgY2FuIGp1c3Qgc3BpbiB1cCBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuIFRoZSBjb3JlIG9mIHRoaXMgcHJvcG9zZWQgcGF0Y2ggaXMgYWRkaW5nIGRlYnVnZnMgc3RhdGlzdGljcyBhbmQgc29tZSBhc3NvY2lhdGVkIGJvdW5kcyBjaGVja3MuIFRoYXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgcmVhbGx5LiBHaXZlbiB0aGF0IHRoZSBkcml2ZXIgbmVlZHMgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIHRoZSBjaGFuZ2VzIGFyZSBtb3N0bHkgZm9jdXNlZCBvbiBzdGF0aXN0aWNzIGdhdGhlcmluZyBhbmQgdmFsaWRhdGlvbiwgSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIG1ha2UgYSBjYWxsIGhlcmUuCgpJJiMzOTttIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggaW1wYWN0cyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIFdpLUZpIGRyaXZlciwgdGhlIGBhdGgxMmtgLCB3aGljaCBuZWNlc3NpdGF0ZXMgcGh5c2ljYWwgaGFyZHdhcmUgZm9yIG9wZXJhdGlvbiBhbmQgd2hpY2ggaXNuJiMzOTt0IGVtdWxhdGVkIHdpdGhpbiBRRU1VLiBGdXJ0aGVyLCB0aGUgcGF0Y2gmIzM5O3MgY2VudHJhbCBtb2RpZmljYXRpb25zIHJlbGF0ZSB0byB0aGUgYWRkaXRpb24gb2YgZGVidWdmcyBzdGF0aXN0aWNzIGFuZCB0aGVpciBhc3NvY2lhdGVkIGJvdW5kcyBjaGVja3MuIFRoZXNlIHR5cGVzIG9mIGNoYW5nZXMgZG9uJiMzOTt0IHByb3ZpZGUgYSBmcnVpdGZ1bCBlbnZpcm9ubWVudCBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIFdpLUZpIGRyaXZlciByZXF1aXJpbmcgcGh5c2ljYWwgUXVhbGNvbW0gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBwcmltYXJpbHkgY29uc2lzdCBvZiBhZGRpbmcgZGVidWdmcyBzdGF0aXN0aWNzIGFuZCBib3VuZHMgY2hlY2tzIGZvciB0aG9zZSBzdGF0aXN0aWNzLCB3aGljaCBhcmUgbm90IGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBXaS1GaSBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIFF1YWxjb21tIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgcHJpbWFyaWx5IGNvbnNpc3Qgb2YgYWRkaW5nIGRlYnVnZnMgc3RhdGlzdGljcyBhbmQgYm91bmRzIGNoZWNrcyBmb3IgdGhvc2Ugc3RhdGlzdGljcywgd2hpY2ggYXJlIG5vdCBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlcyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6MTY6MjUuNzk4MzcyODM4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwMjY4NjU0MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBXaS1GaSBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIFF1YWxjb21tIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgcHJpbWFyaWx5IGNvbnNpc3Qgb2YgYWRkaW5nIGRlYnVnZnMgc3RhdGlzdGljcyBhbmQgYm91bmRzIGNoZWNrcyBmb3IgdGhvc2Ugc3RhdGlzdGljcywgd2hpY2ggYXJlIG5vdCBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6MTY6MjUuNzk4Mzc2OTg4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjUxOTg0NjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjFkOGMxOTM3MGFmMTQyZTExMTNjZDZmOTZjNzYwZTNlZmM4YjgxOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAxMCAxODoxNjoyNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jXFxuaW5kZXggZDU0OTk1YjdhZGIyNy4uZDJkODlhN2UzNDBkZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jXFxuQEAgLTEwNzEsNiArMTA3MSwyMCBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4gXFx0XFx0W0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfUE5fRVJSX0ZMQUdfU0VUXSA9IFxcXCJQTiBlcnJcXFwiLFxcbiBcXHRcXHRbSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9ERVNDX0JMT0NLRURdID0gXFxcIkRlc2MgYmxvY2tlZFxcXCJ9O1xcbiBcXG4rXFx0c3RhdGljIGNvbnN0IGNoYXIgKndibV9yeF9kcm9wW1dCTV9FUlJfRFJPUF9NQVhdID0ge1xcbitcXHRcXHRbV0JNX0VSUl9HRVRfU1dfREVTQ10gPSBcXFwiU1cgZGVzYyBlcnJvclxcXCIsXFxuK1xcdFxcdFtXQk1fRVJSX0RFU0NfUEFSU0VdID0gXFxcIkRlc2MgcGFyc2UgZXJyb3JcXFwiLFxcbitcXHRcXHRbV0JNX0VSUl9EUk9QX0lOVl9IV19JRF0gPSBcXFwiSW52YWxpZCBodyBpZFxcXCIsXFxuK1xcdFxcdFtXQk1fRVJSX0RST1BfTlVMTF9QUlROUl9EUF0gPSBcXFwiTnVsbCBQYXJ0bmVyIGRwXFxcIixcXG4rXFx0XFx0W1dCTV9FUlJfRFJPUF9OVUxMX1BST0NfRFBdID0gXFxcIlByb2Nlc3MgTnVsbCBQYXJ0bmVyIGRwXFxcIixcXG4rXFx0XFx0W1dCTV9FUlJfRFJPUF9OVUxMX1BERVZdID0gXFxcIk51bGwgUGRldlxcXCIsXFxuK1xcdFxcdFtXQk1fRVJSX0RST1BfTlVMTF9BUl0gPSBcXFwiTnVsbCBhclxcXCIsXFxuK1xcdFxcdFtXQk1fRVJSX0RST1BfQ0FDX1JVTk5JTkddID0gXFxcIkNBQyBSdW5uaW5nXFxcIixcXG4rXFx0XFx0W1dCTV9FUlJfRFJPUF9TR10gPSBcXFwiU2NhdHRlciBHYXRoZXJcXFwiLFxcbitcXHRcXHRbV0JNX0VSUl9EUk9QX0lOVl9OV0lGSV9IRFJdID0gXFxcIkludmFsaWQgTldpZmkgSGRyIGxlblxcXCIsXFxuK1xcdFxcdFtXQk1fRVJSX0RST1BfUkVPX0dFTkVSSUNdICA9IFxcXCJSRU8gR2VuZXJpY1xcXCIsXFxuK1xcdFxcdFtXQk1fRVJSX0RST1BfUlhETUFfR0VORVJJQ10gPSBcXFwiUlhETUEgR2VuZXJpY1xcXCJ9O1xcbitcXG4gXFx0c3RhdGljIGNvbnN0IGNoYXIgKndibV9yZWxfc3JjW0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYXSA9IHtcXG4gXFx0XFx0W0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfVFFNXSA9IFxcXCJUUU1cXFwiLFxcbiBcXHRcXHRbSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9SWERNQV0gPSBcXFwiUnhkbWFcXFwiLFxcbkBAIC0xMDk1LDEzICsxMTA5LDMyIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWDsgaSsrKVxcbiBcXHRcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXFxcIiVzOiAldVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0IHJ4ZG1hX2VycltpXSwgZGV2aWNlX3N0YXRzLVxcdTAwM2VyeGRtYV9lcnJvcltpXSk7XFxuK1xcdFxcdFxcdFxcdCByeGRtYV9lcnJbaV0sIGRldmljZV9zdGF0cy1cXHUwMDNld2JtX2Vyci5yeGRtYV9lcnJvcltpXSk7XFxuIFxcbiBcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXFxcIlxcXFxuUkVPIGVycm9yczpcXFxcblxcXCIpO1xcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEhBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYOyBpKyspXFxuIFxcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwiJXM6ICV1XFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHQgcmVvX2VycltpXSwgZGV2aWNlX3N0YXRzLVxcdTAwM2VyZW9fZXJyb3JbaV0pO1xcbitcXHRcXHRcXHRcXHQgcmVvX2VycltpXSwgZGV2aWNlX3N0YXRzLVxcdTAwM2V3Ym1fZXJyLnJlb19lcnJvcltpXSk7XFxuK1xcbitcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXFxcIlxcXFxuV0JNIFJ4IERyb3AgQ291bnQ6XFxcXG5cXFwiKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFdCTV9FUlJfRFJPUF9NQVg7IGkrKylcXG4rXFx0XFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFxcXCIlczogJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCB3Ym1fcnhfZHJvcFtpXSwgZGV2aWNlX3N0YXRzLVxcdTAwM2V3Ym1fZXJyLmRyb3BbaV0pO1xcbitcXG4rXFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sXFxuK1xcdFxcdFxcdCBcXFwiXFxcXG5XQk0gU1cgZGVzYyBmYWxsYmFjayAoSFcgQ0Mgbm90IGRvbmUpOiAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0IGRldmljZV9zdGF0cy1cXHUwMDNld2JtX2Vyci5zd19kZXNjX2ZhbGxiYWNrKTtcXG4rXFxuK1xcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwiXFxcXG5SRU8gc2VudCB0byBzdGFja1xcXFxuXFxcIik7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBEUF9SRU9fRFNUX1JJTkdfTUFYOyBpKyspIHtcXG4rXFx0XFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFxcXCJyaW5nJWQ6XFxcIiwgaSk7XFxuK1xcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBhYi1cXHUwMDNlYWctXFx1MDAzZW51bV9kZXZpY2VzOyBqKyspXFxuK1xcdFxcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLFxcbitcXHRcXHRcXHRcXHRcXHQgXFxcIlxcXFx0JWQ6JXVcXFwiLCBqLFxcbitcXHRcXHRcXHRcXHRcXHQgZGV2aWNlX3N0YXRzLVxcdTAwM2VzZW50X3RvX3N0YWNrW2ldW2pdKTtcXG4rXFx0XFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFxcXCJcXFxcblxcXCIpO1xcbitcXHR9XFxuIFxcbiBcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXFxcIlxcXFxuSEFMIFJFTyBlcnJvcnM6XFxcXG5cXFwiKTtcXG4gXFxuQEAgLTExMTcsNiArMTE1MCwxMSBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4gXFx0XFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFxcXCJyaW5nJWQ6ICV1XFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgaSwgZGV2aWNlX3N0YXRzLVxcdTAwM2V0eF9lcnIuZGVzY19uYVtpXSk7XFxuIFxcbitcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXFxcIlxcXFxuVFggRGVzY3JpcHRvciBQb29sIEFsbG9jIEZhaWx1cmVzOlxcXFxuXFxcIik7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMktfSFdfTUFYX1FVRVVFUzsgaSsrKVxcbitcXHRcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXFxcInBvb2wlZDogJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCBpLCBkZXZpY2Vfc3RhdHMtXFx1MDAzZXR4X2Vyci50eGJ1Zl9uYVtpXSk7XFxuK1xcbiBcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbixcXG4gXFx0XFx0XFx0IFxcXCJcXFxcbk1pc2MgVHJhbnNtaXQgRmFpbHVyZXM6ICVkXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHQgYXRvbWljX3JlYWQoXFx1MDAyNmRldmljZV9zdGF0cy1cXHUwMDNldHhfZXJyLm1pc2NfZmFpbCkpO1xcbkBAIC0xMTgxLDcgKzEyMTksNyBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4gXFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFxcXCJcXFxcblJFTyBSeCBSZWNlaXZlZDpcXFxcblxcXCIpO1xcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVg7IGkrKykge1xcbi1cXHRcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXFxcIlJpbmclZDpcXFwiLCBpICsgMSk7XFxuK1xcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwicmluZyVkOlxcXCIsIGkpO1xcbiBcXG4gXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIGFiLVxcdTAwM2VhZy1cXHUwMDNlbnVtX2RldmljZXM7IGorKykge1xcbiBcXHRcXHRcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbixcXG5AQCAtMTIxNSw4ICsxMjUzLDQyIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbitzdGF0aWMgc3NpemVfdFxcbithdGgxMmtfZGVidWdmc193cml0ZV9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXFxuK1xcdFxcdFxcdFxcdCAgICAgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxcbitcXHRcXHRcXHRcXHQgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxcbit7XFxuK1xcdHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuK1xcdHN0cnVjdCBhdGgxMmtfZHAgKmRwID0gYXRoMTJrX2FiX3RvX2RwKGFiKTtcXG4rXFx0c3RydWN0IGF0aDEya19kZXZpY2VfZHBfc3RhdHMgKmRldmljZV9zdGF0cyA9IFxcdTAwMjZkcC1cXHUwMDNlZGV2aWNlX3N0YXRzO1xcbitcXHRjaGFyIGJ1ZlsyMF0gPSB7fTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdC8qIGZpbHRlciBwYXJ0aWFsIHdyaXRlcyBhbmQgaW52YWxpZCBjb21tYW5kcyAqL1xcbitcXHRpZiAoKnBwb3MgIT0gMCB8fCBjb3VudCBcXHUwMDNlPSBzaXplb2YoYnVmKSB8fCBjb3VudCA9PSAwKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdHJldCA9IHNpbXBsZV93cml0ZV90b19idWZmZXIoYnVmLCBzaXplb2YoYnVmKSAtIDEsIHBwb3MsIHVzZXJfYnVmLCBjb3VudCk7XFxuK1xcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0LyogZHJvcCB0aGUgcG9zc2libGUgJ1xcXFxuJyBmcm9tIHRoZSBlbmQgKi9cXG4rXFx0aWYgKGJ1ZlsqcHBvcyAtIDFdID09ICdcXFxcbicpXFxuK1xcdFxcdGJ1ZlsqcHBvcyAtIDFdID0gJ1xcXFwwJztcXG4rXFxuK1xcdGlmICghc3RyY21wKGJ1ZiwgXFxcInJlc2V0XFxcIikpIHtcXG4rXFx0XFx0bWVtc2V0KGRldmljZV9zdGF0cywgMCwgc2l6ZW9mKCpkZXZpY2Vfc3RhdHMpKTtcXG4rXFx0XFx0cmV0dXJuIGNvdW50O1xcbitcXHR9XFxuK1xcbitcXHRhdGgxMmtfd2FybihhYiwgXFxcInVuc3VwcG9ydGVkIGNvbW1hbmQ6ICVzXFxcXG5cXFwiLCBidWYpO1xcbitcXG4rXFx0cmV0dXJuIC1FSU5WQUw7XFxuK31cXG4rXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfZGV2aWNlX2RwX3N0YXRzID0ge1xcbiBcXHQucmVhZCA9IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzLFxcbitcXHQud3JpdGUgPSBhdGgxMmtfZGVidWdmc193cml0ZV9kZXZpY2VfZHBfc3RhdHMsXFxuIFxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuIFxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbiBcXHQubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssXFxuQEAgLTEyMjcsNyArMTI5OSw3IEBAIHZvaWQgYXRoMTJrX2RlYnVnZnNfcGRldl9jcmVhdGUoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4gXFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwic2ltdWxhdGVfZndfY3Jhc2hcXFwiLCAwNjAwLCBhYi1cXHUwMDNlZGVidWdmc19zb2MsIGFiLFxcbiBcXHRcXHRcXHQgICAgXFx1MDAyNmZvcHNfc2ltdWxhdGVfZndfY3Jhc2gpO1xcbiBcXG4tXFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwiZGV2aWNlX2RwX3N0YXRzXFxcIiwgMDQwMCwgYWItXFx1MDAzZWRlYnVnZnNfc29jLCBhYixcXG4rXFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwiZGV2aWNlX2RwX3N0YXRzXFxcIiwgMDYwMCwgYWItXFx1MDAzZWRlYnVnZnNfc29jLCBhYixcXG4gXFx0XFx0XFx0ICAgIFxcdTAwMjZmb3BzX2RldmljZV9kcF9zdGF0cyk7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxcbmluZGV4IGJlZjBmMmJhMDU2MGYuLjI4OWFlZGU2ZGFiYjYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXFxuQEAgLTcsNiArNyw3IEBAXFxuICNpZm5kZWYgQVRIMTJLX0RQX0hcXG4gI2RlZmluZSBBVEgxMktfRFBfSFxcbiBcXG4rI2luY2x1ZGUgXFxcImRwX3N0YXRzLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJody5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiZHBfaHR0LmhcXFwiXFxuICNpbmNsdWRlIFxcXCJkcF9jbW4uaFxcXCJcXG5AQCAtNDI5LDE5ICs0MzAsMjcgQEAgc3RydWN0IGF0aDEya19kcF9hcmNoX29wcyB7XFxuIHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3R4X2Vycl9zdGF0cyB7XFxuIFxcdC8qIFRDTCBSaW5nIERlc2NyaXB0b3IgdW5hdmFpbGFibGUgKi9cXG4gXFx0dTMyIGRlc2NfbmFbRFBfVENMX05VTV9SSU5HX01BWF07XFxuK1xcdC8qIFRYIGRlc2NyaXB0b3IgcG9vbCBleGhhdXN0ZWQgKHBlciBwb29sX2lkIC8gdHJhZmZpYyBjbGFzcykgKi9cXG4rXFx0dTMyIHR4YnVmX25hW0FUSDEyS19IV19NQVhfUVVFVUVTXTtcXG4gXFx0LyogT3RoZXIgZmFpbHVyZXMgZHVyaW5nIGRwX3R4IGR1ZSB0byBtZW0gYWxsb2NhdGlvbiBmYWlsdXJlXFxuIFxcdCAqIGlkciB1bmF2YWlsYWJsZSBldGMuXFxuIFxcdCAqL1xcbiBcXHRhdG9taWNfdCBtaXNjX2ZhaWw7XFxuIH07XFxuIFxcbitzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9yeF93Ym1fZXJyX3N0YXRzIHtcXG4rXFx0dTMyIHJ4ZG1hX2Vycm9yW0hBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWF07XFxuK1xcdHUzMiByZW9fZXJyb3JbSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVhdO1xcbitcXHR1MzIgZHJvcFtXQk1fRVJSX0RST1BfTUFYXTtcXG4rXFx0dTMyIHN3X2Rlc2NfZmFsbGJhY2s7XFxuK307XFxuK1xcbiBzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9zdGF0cyB7XFxuIFxcdHUzMiBlcnJfcmluZ19wa3RzO1xcbiBcXHR1MzIgaW52YWxpZF9yYm07XFxuLVxcdHUzMiByeGRtYV9lcnJvcltIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVhdO1xcbi1cXHR1MzIgcmVvX2Vycm9yW0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYXTtcXG4gXFx0dTMyIGhhbF9yZW9fZXJyb3JbRFBfUkVPX0RTVF9SSU5HX01BWF07XFxuIFxcdHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3R4X2Vycl9zdGF0cyB0eF9lcnI7XFxuK1xcdHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3J4X3dibV9lcnJfc3RhdHMgd2JtX2VycjtcXG4gXFx0dTMyIHJlb19yeFtEUF9SRU9fRFNUX1JJTkdfTUFYXVtBVEgxMktfTUFYX0RFVklDRVNdO1xcbiBcXHR1MzIgcnhfd2JtX3JlbF9zb3VyY2VbSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9NQVhdW0FUSDEyS19NQVhfREVWSUNFU107XFxuIFxcdHUzMiB0cW1fcmVsX3JlYXNvbltNQVhfVFFNX1JFTEVBU0VfUkVBU09OXTtcXG5AQCAtNDUwLDYgKzQ1OSw3IEBAIHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3N0YXRzIHtcXG4gXFx0dTMyIHR4X2VucXVldWVkW0RQX1RDTF9OVU1fUklOR19NQVhdO1xcbiBcXHR1MzIgdHhfY29tcGxldGVkW0RQX1RDTF9OVU1fUklOR19NQVhdO1xcbiBcXHR1MzIgcmVvX2V4Y2VwX21zZHVfYnVmX3R5cGU7XFxuK1xcdHUzMiBzZW50X3RvX3N0YWNrW0RQX1JFT19EU1RfUklOR19NQVhdW0FUSDEyS19NQVhfREVWSUNFU107XFxuIH07XFxuIFxcbiBzdHJ1Y3QgYXRoMTJrX2RwIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9zdGF0cy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9zdGF0cy5oXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi4wNGQzODkyYWNmZjMyXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfc3RhdHMuaFxcbkBAIC0wLDAgKzEsMjUgQEBcXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhciAqL1xcbisvKlxcbisgKiBDb3B5cmlnaHQgKGMpIFF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cXG4rICovXFxuK1xcbisjaWZuZGVmIEFUSDEyS19EUF9TVEFUU19IXFxuKyNkZWZpbmUgQVRIMTJLX0RQX1NUQVRTX0hcXG4rXFxuK2VudW0gYXRoMTJrX3dibV9lcnJfZHJvcF9yZWFzb24ge1xcbitcXHRXQk1fRVJSX0dFVF9TV19ERVNDLFxcbitcXHRXQk1fRVJSX0RFU0NfUEFSU0UsXFxuK1xcdFdCTV9FUlJfRFJPUF9JTlZfSFdfSUQsXFxuK1xcdFdCTV9FUlJfRFJPUF9OVUxMX1BSVE5SX0RQLFxcbitcXHRXQk1fRVJSX0RST1BfTlVMTF9QUk9DX0RQLFxcbitcXHRXQk1fRVJSX0RST1BfTlVMTF9QREVWLFxcbitcXHRXQk1fRVJSX0RST1BfTlVMTF9BUixcXG4rXFx0V0JNX0VSUl9EUk9QX0NBQ19SVU5OSU5HLFxcbitcXHRXQk1fRVJSX0RST1BfU0csXFxuK1xcdFdCTV9FUlJfRFJPUF9JTlZfTldJRklfSERSLFxcbitcXHRXQk1fRVJSX0RST1BfUkVPX0dFTkVSSUMsXFxuK1xcdFdCTV9FUlJfRFJPUF9SWERNQV9HRU5FUklDLFxcbitcXHRXQk1fRVJSX0RST1BfTUFYLFxcbit9O1xcbitcXG4rI2VuZGlmIC8qIEFUSDEyS19EUF9TVEFUU19IICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguY1xcbmluZGV4IDk1ZDg3ZGQ2Nzg3MmYuLmQ5NmQ4MzAxNTY1Y2IgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jXFxuQEAgLTEyLDYgKzEyLDE1IEBAXFxuICNpbmNsdWRlIFxcXCJoYWxfd2NuNzg1MC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiaGFsX3FjYzIwNzIuaFxcXCJcXG4gXFxuK3N0YXRpYyB2b2lkXFxuK2F0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxcbitcXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKm1zZHUsXFxuK1xcdFxcdFxcdFxcdCAgICBlbnVtIGF0aDEya193Ym1fZXJyX2Ryb3BfcmVhc29uIGRyb3BfcmVhc29uKVxcbit7XFxuK1xcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW2Ryb3BfcmVhc29uXSsrO1xcbitcXHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcXG4rfVxcbitcXG4gc3RhdGljIHUxNiBhdGgxMmtfd2lmaTdfZHBfcnhfZ2V0X3BlZXJfaWQoc3RydWN0IGF0aDEya19kcCAqZHAsXFxuIFxcdFxcdFxcdFxcdFxcdCAgZW51bSBhdGgxMmtfcGVlcl9tZXRhZGF0YV92ZXJzaW9uIHZlcixcXG4gXFx0XFx0XFx0XFx0XFx0ICBfX2xlMzIgcGVlcl9tZXRhZGF0YSlcXG5AQCAtNjQyLDcgKzY1MSwxMCBAQCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc19yZWNlaXZlZF9wYWNrZXRzKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxcbiBcXHRcXHRcXHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdH1cXG4tXFxuK1xcdFxcdGlmIChsaWtlbHkocmluZ19pZCBcXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVgpKVxcbitcXHRcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLnNlbnRfdG9fc3RhY2tbcmluZ19pZF1bcGFydG5lcl9kcC1cXHUwMDNlZGV2aWNlX2lkXSsrO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFdBUk5fT05fT05DRSgxKTtcXG4gXFx0XFx0YXRoMTJrX2RwX3J4X2RlbGl2ZXJfbXNkdShkcF9wZGV2LCBuYXBpLCBtc2R1LCBcXHUwMDI2cnhfaW5mbyk7XFxuIFxcdH1cXG4gXFxuQEAgLTE2MTQsNiArMTYyNiw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X2hfbnVsbF9xX2Rlc2Moc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxcbiBcXHRcXHQvKiBGaXJzdCBidWZmZXIgd2lsbCBiZSBmcmVlZCBieSB0aGUgY2FsbGVyLCBzbyBkZWR1Y3QgaXQncyBsZW5ndGggKi9cXG4gXFx0XFx0bXNkdV9sZW4gPSBtc2R1X2xlbiAtIChEUF9SWF9CVUZGRVJfU0laRSAtIGhhbF9yeF9kZXNjX3N6KTtcXG4gXFx0XFx0YXRoMTJrX3dpZmk3X2RwX3J4X251bGxfcV9kZXNjX3NnX2Ryb3AoZHAsIG1zZHVfbGVuLCBtc2R1X2xpc3QpO1xcbitcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfU0ddKys7XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuIFxcbkBAIC0xNjQ5LDggKzE2NjIsMTAgQEAgc3RhdGljIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9udWxsX3FfZGVzYyhzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXFxuIFxcdFxcdHNrYl9wdXQobXNkdSwgaGFsX3J4X2Rlc2Nfc3ogKyBsM3BhZF9ieXRlcyArIG1zZHVfbGVuKTtcXG4gXFx0XFx0c2tiX3B1bGwobXNkdSwgaGFsX3J4X2Rlc2Nfc3ogKyBsM3BhZF9ieXRlcyk7XFxuIFxcdH1cXG4tXFx0aWYgKHVubGlrZWx5KCFhdGgxMmtfZHBfcnhfY2hlY2tfbndpZmlfaGRyX2xlbl92YWxpZChkcCwgbXNkdSwgcnhfaW5mbykpKVxcbitcXHRpZiAodW5saWtlbHkoIWF0aDEya19kcF9yeF9jaGVja19ud2lmaV9oZHJfbGVuX3ZhbGlkKGRwLCBtc2R1LCByeF9pbmZvKSkpIHtcXG4rXFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX0lOVl9OV0lGSV9IRFJdKys7XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuIFxcbiBcXHRhdGgxMmtfZHBfcnhfaF9wcGR1KGRwX3BkZXYsIHJ4X2luZm8pO1xcbiBcXHRyZXQgPSBhdGgxMmtfd2lmaTdfZHBfcnhfaF9tcGR1KGRwX3BkZXYsIG1zZHUsIHJ4X2luZm8pO1xcbkBAIC0xNzYzLDcgKzE3NzgsMTAgQEAgc3RhdGljIGJvb2wgYXRoMTJrX3dpZmk3X2RwX3J4X2hfcnhkbWFfZXJyKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcXG4gXFx0c3RydWN0IGF0aDEya19za2JfcnhjYiAqcnhjYiA9IEFUSDEyS19TS0JfUlhDQihtc2R1KTtcXG4gXFx0Ym9vbCBkcm9wID0gZmFsc2U7XFxuIFxcbi1cXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLnJ4ZG1hX2Vycm9yW3J4Y2ItXFx1MDAzZWVycl9jb2RlXSsrO1xcbitcXHRpZiAobGlrZWx5KHJ4Y2ItXFx1MDAzZWVycl9jb2RlIFxcdTAwM2MgSEFMX1JFT19FTlRSX1JJTkdfUlhETUFfRUNPREVfTUFYKSlcXG4rXFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLnJ4ZG1hX2Vycm9yW3J4Y2ItXFx1MDAzZWVycl9jb2RlXSsrO1xcbitcXHRlbHNlXFxuK1xcdFxcdFdBUk5fT05fT05DRSgxKTtcXG4gXFxuIFxcdHN3aXRjaCAocnhjYi1cXHUwMDNlZXJyX2NvZGUpIHtcXG4gXFx0Y2FzZSBIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9VTkFVVEhfV0RTX0VSUjpcXG5AQCAtMTc4MCw2ICsxNzk4LDcgQEAgc3RhdGljIGJvb2wgYXRoMTJrX3dpZmk3X2RwX3J4X2hfcnhkbWFfZXJyKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcXG4gXFx0XFx0LyogVE9ETzogUmV2aWV3IG90aGVyIHJ4ZG1hIGVycm9yIGNvZGUgdG8gY2hlY2sgaWYgYW55dGhpbmcgaXNcXG4gXFx0XFx0ICogd29ydGggcmVwb3J0aW5nIHRvIG1hYzgwMjExXFxuIFxcdFxcdCAqL1xcbitcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfUlhETUFfR0VORVJJQ10rKztcXG4gXFx0XFx0ZHJvcCA9IHRydWU7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuQEAgLTE3OTYsNyArMTgxNSwxMCBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yZW9fZXJyKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcXG4gXFx0c3RydWN0IGF0aDEya19za2JfcnhjYiAqcnhjYiA9IEFUSDEyS19TS0JfUlhDQihtc2R1KTtcXG4gXFx0Ym9vbCBkcm9wID0gZmFsc2U7XFxuIFxcbi1cXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLnJlb19lcnJvcltyeGNiLVxcdTAwM2VlcnJfY29kZV0rKztcXG4rXFx0aWYgKGxpa2VseShyeGNiLVxcdTAwM2VlcnJfY29kZSBcXHUwMDNjIEhBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYKSlcXG4rXFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLnJlb19lcnJvcltyeGNiLVxcdTAwM2VlcnJfY29kZV0rKztcXG4rXFx0ZWxzZVxcbitcXHRcXHRXQVJOX09OX09OQ0UoMSk7XFxuIFxcbiBcXHRzd2l0Y2ggKHJ4Y2ItXFx1MDAzZWVycl9jb2RlKSB7XFxuIFxcdGNhc2UgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9ERVNDX0FERFJfWkVSTzpcXG5AQCAtMTgxMyw2ICsxODM1LDcgQEAgc3RhdGljIGJvb2wgYXRoMTJrX3dpZmk3X2RwX3J4X2hfcmVvX2VycihzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXFxuIFxcdFxcdC8qIFRPRE86IFJldmlldyBvdGhlciBlcnJvcnMgYW5kIHByb2Nlc3MgdGhlbSB0byBtYWM4MDIxMVxcbiBcXHRcXHQgKiBhcyBhcHByb3ByaWF0ZS5cXG4gXFx0XFx0ICovXFxuK1xcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9SRU9fR0VORVJJQ10rKztcXG4gXFx0XFx0ZHJvcCA9IHRydWU7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuQEAgLTE5MzUsNiArMTk1OCw3IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxcbiBcXHRcXHRyZXQgPSBhdGgxMmtfd2lmaTdfaGFsX3dibV9kZXNjX3BhcnNlX2VycihkcCwgcnhfZGVzYyxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2ZXJyX2luZm8pO1xcbiBcXHRcXHRpZiAocmV0KSB7XFxuK1xcdFxcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfREVTQ19QQVJTRV0rKztcXG4gXFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gcGFyc2UgcnggZXJyb3IgaW4gd2JtX3JlbCByaW5nIGRlc2MgJWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgICByZXQpO1xcbiBcXHRcXHRcXHRjb250aW51ZTtcXG5AQCAtMTk0NCw4ICsxOTY4LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxcbiBcXG4gXFx0XFx0LyogcmV0cnkgbWFudWFsIGRlc2MgcmV0cmlldmFsIGlmIGh3IGNjIGlzIG5vdCBkb25lICovXFxuIFxcdFxcdGlmICghZGVzY19pbmZvKSB7XFxuK1xcdFxcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5zd19kZXNjX2ZhbGxiYWNrKys7XFxuIFxcdFxcdFxcdGRlc2NfaW5mbyA9IGF0aDEya19kcF9nZXRfcnhfZGVzYyhkcCwgZXJyX2luZm8uY29va2llKTtcXG4gXFx0XFx0XFx0aWYgKCFkZXNjX2luZm8pIHtcXG4rXFx0XFx0XFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9HRVRfU1dfREVTQ10rKztcXG4gXFx0XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJJbnZhbGlkIGNvb2tpZSBpbiBEUCBXQk0gcnggZXJyb3IgZGVzY3JpcHRvciByZXRyaWV2YWw6IDB4JXhcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICBlcnJfaW5mby5jb29raWUpO1xcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG5AQCAtMTk2MSw3ICsxOTg3LDggQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXFxuIFxcdFxcdGRldmljZV9pZCA9IGRlc2NfaW5mby1cXHUwMDNlZGV2aWNlX2lkO1xcbiBcXHRcXHRwYXJ0bmVyX2RwID0gYXRoMTJrX2RwX2h3X2dycF90b19kcChkcF9od19ncnAsIGRldmljZV9pZCk7XFxuIFxcdFxcdGlmICh1bmxpa2VseSghcGFydG5lcl9kcCkpIHtcXG4tXFx0XFx0XFx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XFxuK1xcdFxcdFxcdGF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgV0JNX0VSUl9EUk9QX05VTExfUFJUTlJfRFApO1xcbiBcXG4gXFx0XFx0XFx0LyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXRcXG4gXFx0XFx0XFx0ICogaW4gdGhlIHByZXZpb3VzIHJlY29yZCwgY2xlYW51cCBzY2F0dGVyX21zZHVfbGlzdFxcbkBAIC0yMDA3LDcgKzIwMzQsOCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFx0XFx0aHdfbGlua19pZCA9IGF0aDEya19kcF9yeF9nZXRfbXNkdV9zcmNfbGluayhwYXJ0bmVyX2RwLVxcdTAwM2VoYWwsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBtc2R1X2RhdGEpO1xcbiBcXHRcXHRpZiAoaHdfbGlua19pZCBcXHUwMDNlPSBBVEgxMktfR1JPVVBfTUFYX1JBRElPKSB7XFxuLVxcdFxcdFxcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xcbitcXHRcXHRcXHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFdCTV9FUlJfRFJPUF9JTlZfSFdfSUQpO1xcbiBcXG4gXFx0XFx0XFx0LyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXRcXG4gXFx0XFx0XFx0ICogaW4gdGhlIHByZXZpb3VzIHJlY29yZCwgY2xlYW51cCBzY2F0dGVyX21zZHVfbGlzdFxcbkBAIC0yMDY4LDcgKzIwOTYsOCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFx0XFx0XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19EQVRBLFxcbiBcXHRcXHRcXHRcXHQgICBcXFwiVW5hYmxlIHRvIHByb2Nlc3MgV0JNIGVycm9yIG1zZHUgZHVlIHRvIGludmFsaWQgaHcgbGluayBpZCAlZCBkZXZpY2UgaWQgJWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgIGh3X2xpbmtfaWQsIGRldmljZV9pZCk7XFxuLVxcdFxcdFxcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xcbitcXHRcXHRcXHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFdCTV9FUlJfRFJPUF9OVUxMX1BST0NfRFApO1xcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0fVxcbiBcXG5AQCAtMjA3NywxOCArMjEwNiwyMSBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFxuIFxcdFxcdGRwX3BkZXYgPSBhdGgxMmtfZHBfdG9fcGRldl9kcChwYXJ0bmVyX2RwLCBwZGV2X2lkeCk7XFxuIFxcdFxcdGlmICghZHBfcGRldikge1xcbi1cXHRcXHRcXHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcXG4rXFx0XFx0XFx0YXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2IoZHAsIG1zZHUsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBXQk1fRVJSX0RST1BfTlVMTF9QREVWKTtcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdH1cXG4gXFx0XFx0YXIgPSBhdGgxMmtfcGRldl9kcF90b19hcihkcF9wZGV2KTtcXG4gXFxuIFxcdFxcdGlmICghYXIgfHwgIXJjdV9kZXJlZmVyZW5jZShhci1cXHUwMDNlYWItXFx1MDAzZXBkZXZzX2FjdGl2ZVtwZGV2X2lkeF0pKSB7XFxuLVxcdFxcdFxcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xcbitcXHRcXHRcXHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFdCTV9FUlJfRFJPUF9OVUxMX0FSKTtcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19DQUNfUlVOTklORywgXFx1MDAyNmFyLVxcdTAwM2VkZXZfZmxhZ3MpKSB7XFxuLVxcdFxcdFxcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xcbitcXHRcXHRcXHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFdCTV9FUlJfRFJPUF9DQUNfUlVOTklORyk7XFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmNcXG5pbmRleCA1ODdkNThlZWNjZmE1Li4xMTA0OGM1NjgzMzEwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xcbkBAIC0xNjcsOCArMTY3LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfZHBfdHgoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LCBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphXFxuIFxcdHR4X3JpbmcgPSBcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbdGkucmluZ19pZF07XFxuIFxcbiBcXHR0eF9kZXNjID0gYXRoMTJrX2RwX3R4X2Fzc2lnbl9idWZmZXIoZHAsIHBvb2xfaWQpO1xcbi1cXHRpZiAoIXR4X2Rlc2MpXFxuK1xcdGlmICghdHhfZGVzYykge1xcbitcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLnR4X2Vyci50eGJ1Zl9uYVtwb29sX2lkXSsrO1xcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0fVxcbiBcXG4gXFx0ZHBfbGlua192aWYgPSBhdGgxMmtfZHBfdmlmX3RvX2RwX2xpbmtfdmlmKFxcdTAwMjZhaHZpZi1cXHUwMDNlZHBfdmlmLCBhcnZpZi1cXHUwMDNlbGlua19pZCk7XFxuIFxcbkBAIC01NzUsMTggKzU3NywxOSBAQCBhdGgxMmtfZHBfdHhfcHJvY2Vzc19odHRfdHhfY29tcGxldGUoc3RydWN0IGF0aDEya19kcCAqZHAsIHZvaWQgKmRlc2MsXFxuIHtcXG4gXFx0c3RydWN0IGh0dF90eF93Ym1fY29tcGxldGlvbiAqc3RhdHVzX2Rlc2M7XFxuIFxcdHN0cnVjdCBhdGgxMmtfZHBfaHR0X3dibV90eF9zdGF0dXMgdHMgPSB7fTtcXG4tXFx0ZW51bSBoYWxfd2JtX2h0dF90eF9jb21wX3N0YXR1cyB3Ym1fc3RhdHVzO1xcbitcXHRlbnVtIGhhbF93Ym1faHR0X3R4X2NvbXBfc3RhdHVzIGh0dF9zdGF0dXM7XFxuIFxcdHUxNiBwZWVyX2lkO1xcbiBcXG4gXFx0c3RhdHVzX2Rlc2MgPSBkZXNjO1xcbiBcXG4tXFx0d2JtX3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtXFx1MDAzZWluZm8wLFxcbitcXHRodHRfc3RhdHVzID0gbGUzMl9nZXRfYml0cyhzdGF0dXNfZGVzYy1cXHUwMDNlaW5mbzAsXFxuIFxcdFxcdFxcdFxcdCAgIEhUVF9UWF9XQk1fQ09NUF9JTkZPMF9TVEFUVVMpO1xcbi1cXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLmZ3X3R4X3N0YXR1c1t3Ym1fc3RhdHVzXSsrO1xcbitcXHRpZiAobGlrZWx5KGh0dF9zdGF0dXMgXFx1MDAzYyBNQVhfRldfVFhfU1RBVFVTKSlcXG4rXFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy5md190eF9zdGF0dXNbaHR0X3N0YXR1c10rKztcXG4gXFxuLVxcdHN3aXRjaCAod2JtX3N0YXR1cykge1xcbitcXHRzd2l0Y2ggKGh0dF9zdGF0dXMpIHtcXG4gXFx0Y2FzZSBIQUxfV0JNX1JFTF9IVFRfVFhfQ09NUF9TVEFUVVNfT0s6XFxuLVxcdFxcdHRzLmFja2VkID0gKHdibV9zdGF0dXMgPT0gSEFMX1dCTV9SRUxfSFRUX1RYX0NPTVBfU1RBVFVTX09LKTtcXG4rXFx0XFx0dHMuYWNrZWQgPSB0cnVlO1xcbiBcXHRcXHR0cy5hY2tfcnNzaSA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtXFx1MDAzZWluZm8yLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgSFRUX1RYX1dCTV9DT01QX0lORk8yX0FDS19SU1NJKTtcXG4gXFxuQEAgLTYwOCw3ICs2MTEsNyBAQCBhdGgxMmtfZHBfdHhfcHJvY2Vzc19odHRfdHhfY29tcGxldGUoc3RydWN0IGF0aDEya19kcCAqZHAsIHZvaWQgKmRlc2MsXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRicmVhaztcXG4gXFx0ZGVmYXVsdDpcXG4tXFx0XFx0YXRoMTJrX3dhcm4oZHAtXFx1MDAzZWFiLCBcXFwiVW5rbm93biBodHQgd2JtIHR4IHN0YXR1cyAlZFxcXFxuXFxcIiwgd2JtX3N0YXR1cyk7XFxuK1xcdFxcdGF0aDEya193YXJuKGRwLVxcdTAwM2VhYiwgXFxcIlVua25vd24gaHR0IHR4IHN0YXR1cyAlZFxcXFxuXFxcIiwgaHR0X3N0YXR1cyk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuIH1cXG5AQCAtOTg0LDExICs5ODcsMTcgQEAgdm9pZCBhdGgxMmtfd2lmaTdfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLCBpbnQgcmluZ19pZClcXG4gXFx0XFx0LyogRmluZCB0aGUgSEFMX1dCTV9SRUxFQVNFX0lORk8wX1JFTF9TUkNfTU9EVUxFIHZhbHVlICovXFxuIFxcdFxcdGJ1Zl9yZWxfc291cmNlID0gbGUzMl9nZXRfYml0cyh0eF9zdGF0dXMtXFx1MDAzZWluZm8wLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAgSEFMX1dCTV9SRUxFQVNFX0lORk8wX1JFTF9TUkNfTU9EVUxFKTtcXG4tXFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0rKztcXG4rXFx0XFx0aWYgKGxpa2VseShidWZfcmVsX3NvdXJjZSBcXHUwMDNjIEhBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYKSlcXG4rXFx0XFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0rKztcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRXQVJOX09OX09OQ0UoMSk7XFxuIFxcbiBcXHRcXHRyZWxfc3RhdHVzID0gbGUzMl9nZXRfYml0cyh0eF9zdGF0dXMtXFx1MDAzZWluZm8wLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBIQUxfV0JNX0NPTVBMX1RYX0lORk8wX1RRTV9SRUxFQVNFX1JFQVNPTik7XFxuLVxcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMudHFtX3JlbF9yZWFzb25bcmVsX3N0YXR1c10rKztcXG4rXFx0XFx0aWYgKGxpa2VseShyZWxfc3RhdHVzIFxcdTAwM2MgTUFYX1RRTV9SRUxFQVNFX1JFQVNPTikpXFxuK1xcdFxcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMudHFtX3JlbF9yZWFzb25bcmVsX3N0YXR1c10rKztcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRXQVJOX09OX09OQ0UoMSk7XFxuIFxcbiBcXHRcXHQvKiBSZWxlYXNlIGRlc2NyaXB0b3IgYXMgc29vbiBhcyBleHRyYWN0aW5nIG5lY2Vzc2FyeSBpbmZvXFxuIFxcdFxcdCAqIHRvIHJlZHVjZSBjb250ZW50aW9uXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaGFsX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jXFxuaW5kZXggNDljNjkzMjg5NzA5NC4uNjBlN2EzNjA5N2YxMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9oYWxfcnguY1xcbkBAIC0zMjksNyArMzI5LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfaGFsX2Rlc2NfcmVvX3BhcnNlX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFx0XFx0XFx0XFx0ICAgIEhBTF9SRU9fREVTVF9SSU5HX0lORk8wX1BVU0hfUkVBU09OKTtcXG4gXFx0ZXJyX2NvZGUgPSBsZTMyX2dldF9iaXRzKGRlc2MtXFx1MDAzZWluZm8wLFxcbiBcXHRcXHRcXHRcXHQgSEFMX1JFT19ERVNUX1JJTkdfSU5GTzBfRVJST1JfQ09ERSk7XFxuLVxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMucmVvX2Vycm9yW2Vycl9jb2RlXSsrO1xcbitcXHRpZiAobGlrZWx5KGVycl9jb2RlIFxcdTAwM2MgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVgpKVxcbitcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIucmVvX2Vycm9yW2Vycl9jb2RlXSsrO1xcbitcXHRlbHNlXFxuK1xcdFxcdFdBUk5fT05fT05DRSgxKTtcXG4gXFxuIFxcdGlmIChwdXNoX3JlYXNvbiAhPSBIQUxfUkVPX0RFU1RfUklOR19QVVNIX1JFQVNPTl9FUlJfREVURUNURUQgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIHB1c2hfcmVhc29uICE9IEhBTF9SRU9fREVTVF9SSU5HX1BVU0hfUkVBU09OX1JPVVRJTkdfSU5TVFJVQ1RJT04pIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6MTY6MjcuMDUwOTc5OTI5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTc3NzQyNDY2MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIFdpLUZpIGRyaXZlciByZXF1aXJpbmcgcGh5c2ljYWwgUXVhbGNvbW0gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBwcmltYXJpbHkgY29uc2lzdCBvZiBhZGRpbmcgZGVidWdmcyBzdGF0aXN0aWNzIGFuZCBib3VuZHMgY2hlY2tzIGZvciB0aG9zZSBzdGF0aXN0aWNzLCB3aGljaCBhcmUgbm90IGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyMWQ4YzE5MzcwYWYxNDJlMTExM2NkNmY5NmM3NjBlM2VmYzhiODE4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTg6MTY6MjQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jXG5pbmRleCBkNTQ5OTViN2FkYjI3Li5kMmQ4OWE3ZTM0MGRmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jXG5AQCAtMTA3MSw2ICsxMDcxLDIwIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRbSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9QTl9FUlJfRkxBR19TRVRdID0gXCJQTiBlcnJcIixcbiBcdFx0W0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfREVTQ19CTE9DS0VEXSA9IFwiRGVzYyBibG9ja2VkXCJ9O1xuIFxuK1x0c3RhdGljIGNvbnN0IGNoYXIgKndibV9yeF9kcm9wW1dCTV9FUlJfRFJPUF9NQVhdID0ge1xuK1x0XHRbV0JNX0VSUl9HRVRfU1dfREVTQ10gPSBcIlNXIGRlc2MgZXJyb3JcIixcbitcdFx0W1dCTV9FUlJfREVTQ19QQVJTRV0gPSBcIkRlc2MgcGFyc2UgZXJyb3JcIixcbitcdFx0W1dCTV9FUlJfRFJPUF9JTlZfSFdfSURdID0gXCJJbnZhbGlkIGh3IGlkXCIsXG4rXHRcdFtXQk1fRVJSX0RST1BfTlVMTF9QUlROUl9EUF0gPSBcIk51bGwgUGFydG5lciBkcFwiLFxuK1x0XHRbV0JNX0VSUl9EUk9QX05VTExfUFJPQ19EUF0gPSBcIlByb2Nlc3MgTnVsbCBQYXJ0bmVyIGRwXCIsXG4rXHRcdFtXQk1fRVJSX0RST1BfTlVMTF9QREVWXSA9IFwiTnVsbCBQZGV2XCIsXG4rXHRcdFtXQk1fRVJSX0RST1BfTlVMTF9BUl0gPSBcIk51bGwgYXJcIixcbitcdFx0W1dCTV9FUlJfRFJPUF9DQUNfUlVOTklOR10gPSBcIkNBQyBSdW5uaW5nXCIsXG4rXHRcdFtXQk1fRVJSX0RST1BfU0ddID0gXCJTY2F0dGVyIEdhdGhlclwiLFxuK1x0XHRbV0JNX0VSUl9EUk9QX0lOVl9OV0lGSV9IRFJdID0gXCJJbnZhbGlkIE5XaWZpIEhkciBsZW5cIixcbitcdFx0W1dCTV9FUlJfRFJPUF9SRU9fR0VORVJJQ10gID0gXCJSRU8gR2VuZXJpY1wiLFxuK1x0XHRbV0JNX0VSUl9EUk9QX1JYRE1BX0dFTkVSSUNdID0gXCJSWERNQSBHZW5lcmljXCJ9O1xuK1xuIFx0c3RhdGljIGNvbnN0IGNoYXIgKndibV9yZWxfc3JjW0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYXSA9IHtcbiBcdFx0W0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfVFFNXSA9IFwiVFFNXCIsXG4gXHRcdFtIQUxfV0JNX1JFTF9TUkNfTU9EVUxFX1JYRE1BXSA9IFwiUnhkbWFcIixcbkBAIC0xMDk1LDEzICsxMTA5LDMyIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgSEFMX1JFT19FTlRSX1JJTkdfUlhETUFfRUNPREVfTUFYOyBpKyspXG4gXHRcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcIiVzOiAldVxcblwiLFxuLVx0XHRcdFx0IHJ4ZG1hX2VycltpXSwgZGV2aWNlX3N0YXRzLVx1MDAzZXJ4ZG1hX2Vycm9yW2ldKTtcbitcdFx0XHRcdCByeGRtYV9lcnJbaV0sIGRldmljZV9zdGF0cy1cdTAwM2V3Ym1fZXJyLnJ4ZG1hX2Vycm9yW2ldKTtcbiBcbiBcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcIlxcblJFTyBlcnJvcnM6XFxuXCIpO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVg7IGkrKylcbiBcdFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFwiJXM6ICV1XFxuXCIsXG4tXHRcdFx0XHQgcmVvX2VycltpXSwgZGV2aWNlX3N0YXRzLVx1MDAzZXJlb19lcnJvcltpXSk7XG4rXHRcdFx0XHQgcmVvX2VycltpXSwgZGV2aWNlX3N0YXRzLVx1MDAzZXdibV9lcnIucmVvX2Vycm9yW2ldKTtcbitcbitcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcIlxcbldCTSBSeCBEcm9wIENvdW50OlxcblwiKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFdCTV9FUlJfRFJPUF9NQVg7IGkrKylcbitcdFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFwiJXM6ICV1XFxuXCIsXG4rXHRcdFx0XHQgd2JtX3J4X2Ryb3BbaV0sIGRldmljZV9zdGF0cy1cdTAwM2V3Ym1fZXJyLmRyb3BbaV0pO1xuK1xuK1x0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sXG4rXHRcdFx0IFwiXFxuV0JNIFNXIGRlc2MgZmFsbGJhY2sgKEhXIENDIG5vdCBkb25lKTogJXVcXG5cIixcbitcdFx0XHQgZGV2aWNlX3N0YXRzLVx1MDAzZXdibV9lcnIuc3dfZGVzY19mYWxsYmFjayk7XG4rXG4rXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJcXG5SRU8gc2VudCB0byBzdGFja1xcblwiKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVg7IGkrKykge1xuK1x0XHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJyaW5nJWQ6XCIsIGkpO1xuK1x0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBhYi1cdTAwM2VhZy1cdTAwM2VudW1fZGV2aWNlczsgaisrKVxuK1x0XHRcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLFxuK1x0XHRcdFx0XHQgXCJcXHQlZDoldVwiLCBqLFxuK1x0XHRcdFx0XHQgZGV2aWNlX3N0YXRzLVx1MDAzZXNlbnRfdG9fc3RhY2tbaV1bal0pO1xuK1x0XHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJcXG5cIik7XG4rXHR9XG4gXG4gXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJcXG5IQUwgUkVPIGVycm9yczpcXG5cIik7XG4gXG5AQCAtMTExNyw2ICsxMTUwLDExIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJyaW5nJWQ6ICV1XFxuXCIsXG4gXHRcdFx0XHQgaSwgZGV2aWNlX3N0YXRzLVx1MDAzZXR4X2Vyci5kZXNjX25hW2ldKTtcbiBcbitcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcIlxcblRYIERlc2NyaXB0b3IgUG9vbCBBbGxvYyBGYWlsdXJlczpcXG5cIik7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBVEgxMktfSFdfTUFYX1FVRVVFUzsgaSsrKVxuK1x0XHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJwb29sJWQ6ICV1XFxuXCIsXG4rXHRcdFx0XHQgaSwgZGV2aWNlX3N0YXRzLVx1MDAzZXR4X2Vyci50eGJ1Zl9uYVtpXSk7XG4rXG4gXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbixcbiBcdFx0XHQgXCJcXG5NaXNjIFRyYW5zbWl0IEZhaWx1cmVzOiAlZFxcblwiLFxuIFx0XHRcdCBhdG9taWNfcmVhZChcdTAwMjZkZXZpY2Vfc3RhdHMtXHUwMDNldHhfZXJyLm1pc2NfZmFpbCkpO1xuQEAgLTExODEsNyArMTIxOSw3IEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFwiXFxuUkVPIFJ4IFJlY2VpdmVkOlxcblwiKTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVg7IGkrKykge1xuLVx0XHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJSaW5nJWQ6XCIsIGkgKyAxKTtcbitcdFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFwicmluZyVkOlwiLCBpKTtcbiBcbiBcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgYWItXHUwMDNlYWctXHUwMDNlbnVtX2RldmljZXM7IGorKykge1xuIFx0XHRcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLFxuQEAgLTEyMTUsOCArMTI1Myw0MiBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuK3N0YXRpYyBzc2l6ZV90XG4rYXRoMTJrX2RlYnVnZnNfd3JpdGVfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuK1x0XHRcdFx0ICAgICBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG4rXHRcdFx0XHQgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuK3tcbitcdHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbitcdHN0cnVjdCBhdGgxMmtfZHAgKmRwID0gYXRoMTJrX2FiX3RvX2RwKGFiKTtcbitcdHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3N0YXRzICpkZXZpY2Vfc3RhdHMgPSBcdTAwMjZkcC1cdTAwM2VkZXZpY2Vfc3RhdHM7XG4rXHRjaGFyIGJ1ZlsyMF0gPSB7fTtcbitcdGludCByZXQ7XG4rXG4rXHQvKiBmaWx0ZXIgcGFydGlhbCB3cml0ZXMgYW5kIGludmFsaWQgY29tbWFuZHMgKi9cbitcdGlmICgqcHBvcyAhPSAwIHx8IGNvdW50IFx1MDAzZT0gc2l6ZW9mKGJ1ZikgfHwgY291bnQgPT0gMClcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRyZXQgPSBzaW1wbGVfd3JpdGVfdG9fYnVmZmVyKGJ1Ziwgc2l6ZW9mKGJ1ZikgLSAxLCBwcG9zLCB1c2VyX2J1ZiwgY291bnQpO1xuK1x0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdC8qIGRyb3AgdGhlIHBvc3NpYmxlICdcXG4nIGZyb20gdGhlIGVuZCAqL1xuK1x0aWYgKGJ1ZlsqcHBvcyAtIDFdID09ICdcXG4nKVxuK1x0XHRidWZbKnBwb3MgLSAxXSA9ICdcXDAnO1xuK1xuK1x0aWYgKCFzdHJjbXAoYnVmLCBcInJlc2V0XCIpKSB7XG4rXHRcdG1lbXNldChkZXZpY2Vfc3RhdHMsIDAsIHNpemVvZigqZGV2aWNlX3N0YXRzKSk7XG4rXHRcdHJldHVybiBjb3VudDtcbitcdH1cbitcbitcdGF0aDEya193YXJuKGFiLCBcInVuc3VwcG9ydGVkIGNvbW1hbmQ6ICVzXFxuXCIsIGJ1Zik7XG4rXG4rXHRyZXR1cm4gLUVJTlZBTDtcbit9XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19kZXZpY2VfZHBfc3RhdHMgPSB7XG4gXHQucmVhZCA9IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzLFxuK1x0LndyaXRlID0gYXRoMTJrX2RlYnVnZnNfd3JpdGVfZGV2aWNlX2RwX3N0YXRzLFxuIFx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcbiBcdC5vd25lciA9IFRISVNfTU9EVUxFLFxuIFx0Lmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLFxuQEAgLTEyMjcsNyArMTI5OSw3IEBAIHZvaWQgYXRoMTJrX2RlYnVnZnNfcGRldl9jcmVhdGUoc3RydWN0IGF0aDEya19iYXNlICphYilcbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJzaW11bGF0ZV9md19jcmFzaFwiLCAwNjAwLCBhYi1cdTAwM2VkZWJ1Z2ZzX3NvYywgYWIsXG4gXHRcdFx0ICAgIFx1MDAyNmZvcHNfc2ltdWxhdGVfZndfY3Jhc2gpO1xuIFxuLVx0ZGVidWdmc19jcmVhdGVfZmlsZShcImRldmljZV9kcF9zdGF0c1wiLCAwNDAwLCBhYi1cdTAwM2VkZWJ1Z2ZzX3NvYywgYWIsXG4rXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwiZGV2aWNlX2RwX3N0YXRzXCIsIDA2MDAsIGFiLVx1MDAzZWRlYnVnZnNfc29jLCBhYixcbiBcdFx0XHQgICAgXHUwMDI2Zm9wc19kZXZpY2VfZHBfc3RhdHMpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbmluZGV4IGJlZjBmMmJhMDU2MGYuLjI4OWFlZGU2ZGFiYjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuQEAgLTcsNiArNyw3IEBAXG4gI2lmbmRlZiBBVEgxMktfRFBfSFxuICNkZWZpbmUgQVRIMTJLX0RQX0hcbiBcbisjaW5jbHVkZSBcImRwX3N0YXRzLmhcIlxuICNpbmNsdWRlIFwiaHcuaFwiXG4gI2luY2x1ZGUgXCJkcF9odHQuaFwiXG4gI2luY2x1ZGUgXCJkcF9jbW4uaFwiXG5AQCAtNDI5LDE5ICs0MzAsMjcgQEAgc3RydWN0IGF0aDEya19kcF9hcmNoX29wcyB7XG4gc3RydWN0IGF0aDEya19kZXZpY2VfZHBfdHhfZXJyX3N0YXRzIHtcbiBcdC8qIFRDTCBSaW5nIERlc2NyaXB0b3IgdW5hdmFpbGFibGUgKi9cbiBcdHUzMiBkZXNjX25hW0RQX1RDTF9OVU1fUklOR19NQVhdO1xuK1x0LyogVFggZGVzY3JpcHRvciBwb29sIGV4aGF1c3RlZCAocGVyIHBvb2xfaWQgLyB0cmFmZmljIGNsYXNzKSAqL1xuK1x0dTMyIHR4YnVmX25hW0FUSDEyS19IV19NQVhfUVVFVUVTXTtcbiBcdC8qIE90aGVyIGZhaWx1cmVzIGR1cmluZyBkcF90eCBkdWUgdG8gbWVtIGFsbG9jYXRpb24gZmFpbHVyZVxuIFx0ICogaWRyIHVuYXZhaWxhYmxlIGV0Yy5cbiBcdCAqL1xuIFx0YXRvbWljX3QgbWlzY19mYWlsO1xuIH07XG4gXG4rc3RydWN0IGF0aDEya19kZXZpY2VfZHBfcnhfd2JtX2Vycl9zdGF0cyB7XG4rXHR1MzIgcnhkbWFfZXJyb3JbSEFMX1JFT19FTlRSX1JJTkdfUlhETUFfRUNPREVfTUFYXTtcbitcdHUzMiByZW9fZXJyb3JbSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVhdO1xuK1x0dTMyIGRyb3BbV0JNX0VSUl9EUk9QX01BWF07XG4rXHR1MzIgc3dfZGVzY19mYWxsYmFjaztcbit9O1xuK1xuIHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3N0YXRzIHtcbiBcdHUzMiBlcnJfcmluZ19wa3RzO1xuIFx0dTMyIGludmFsaWRfcmJtO1xuLVx0dTMyIHJ4ZG1hX2Vycm9yW0hBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWF07XG4tXHR1MzIgcmVvX2Vycm9yW0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYXTtcbiBcdHUzMiBoYWxfcmVvX2Vycm9yW0RQX1JFT19EU1RfUklOR19NQVhdO1xuIFx0c3RydWN0IGF0aDEya19kZXZpY2VfZHBfdHhfZXJyX3N0YXRzIHR4X2VycjtcbitcdHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3J4X3dibV9lcnJfc3RhdHMgd2JtX2VycjtcbiBcdHUzMiByZW9fcnhbRFBfUkVPX0RTVF9SSU5HX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTtcbiBcdHUzMiByeF93Ym1fcmVsX3NvdXJjZVtIQUxfV0JNX1JFTF9TUkNfTU9EVUxFX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTtcbiBcdHUzMiB0cW1fcmVsX3JlYXNvbltNQVhfVFFNX1JFTEVBU0VfUkVBU09OXTtcbkBAIC00NTAsNiArNDU5LDcgQEAgc3RydWN0IGF0aDEya19kZXZpY2VfZHBfc3RhdHMge1xuIFx0dTMyIHR4X2VucXVldWVkW0RQX1RDTF9OVU1fUklOR19NQVhdO1xuIFx0dTMyIHR4X2NvbXBsZXRlZFtEUF9UQ0xfTlVNX1JJTkdfTUFYXTtcbiBcdHUzMiByZW9fZXhjZXBfbXNkdV9idWZfdHlwZTtcbitcdHUzMiBzZW50X3RvX3N0YWNrW0RQX1JFT19EU1RfUklOR19NQVhdW0FUSDEyS19NQVhfREVWSUNFU107XG4gfTtcbiBcbiBzdHJ1Y3QgYXRoMTJrX2RwIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3N0YXRzLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3N0YXRzLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4wNGQzODkyYWNmZjMyXG4tLS0gL2Rldi9udWxsXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3N0YXRzLmhcbkBAIC0wLDAgKzEsMjUgQEBcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyICovXG4rLypcbisgKiBDb3B5cmlnaHQgKGMpIFF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cbisgKi9cbitcbisjaWZuZGVmIEFUSDEyS19EUF9TVEFUU19IXG4rI2RlZmluZSBBVEgxMktfRFBfU1RBVFNfSFxuK1xuK2VudW0gYXRoMTJrX3dibV9lcnJfZHJvcF9yZWFzb24ge1xuK1x0V0JNX0VSUl9HRVRfU1dfREVTQyxcbitcdFdCTV9FUlJfREVTQ19QQVJTRSxcbitcdFdCTV9FUlJfRFJPUF9JTlZfSFdfSUQsXG4rXHRXQk1fRVJSX0RST1BfTlVMTF9QUlROUl9EUCxcbitcdFdCTV9FUlJfRFJPUF9OVUxMX1BST0NfRFAsXG4rXHRXQk1fRVJSX0RST1BfTlVMTF9QREVWLFxuK1x0V0JNX0VSUl9EUk9QX05VTExfQVIsXG4rXHRXQk1fRVJSX0RST1BfQ0FDX1JVTk5JTkcsXG4rXHRXQk1fRVJSX0RST1BfU0csXG4rXHRXQk1fRVJSX0RST1BfSU5WX05XSUZJX0hEUixcbitcdFdCTV9FUlJfRFJPUF9SRU9fR0VORVJJQyxcbitcdFdCTV9FUlJfRFJPUF9SWERNQV9HRU5FUklDLFxuK1x0V0JNX0VSUl9EUk9QX01BWCxcbit9O1xuK1xuKyNlbmRpZiAvKiBBVEgxMktfRFBfU1RBVFNfSCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguY1xuaW5kZXggOTVkODdkZDY3ODcyZi4uZDk2ZDgzMDE1NjVjYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jXG5AQCAtMTIsNiArMTIsMTUgQEBcbiAjaW5jbHVkZSBcImhhbF93Y243ODUwLmhcIlxuICNpbmNsdWRlIFwiaGFsX3FjYzIwNzIuaFwiXG4gXG4rc3RhdGljIHZvaWRcbithdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbitcdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqbXNkdSxcbitcdFx0XHRcdCAgICBlbnVtIGF0aDEya193Ym1fZXJyX2Ryb3BfcmVhc29uIGRyb3BfcmVhc29uKVxuK3tcbitcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbZHJvcF9yZWFzb25dKys7XG4rXHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbit9XG4rXG4gc3RhdGljIHUxNiBhdGgxMmtfd2lmaTdfZHBfcnhfZ2V0X3BlZXJfaWQoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdFx0XHRcdCAgZW51bSBhdGgxMmtfcGVlcl9tZXRhZGF0YV92ZXJzaW9uIHZlcixcbiBcdFx0XHRcdFx0ICBfX2xlMzIgcGVlcl9tZXRhZGF0YSlcbkBAIC02NDIsNyArNjUxLDEwIEBAIGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3JlY2VpdmVkX3BhY2tldHMoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdFx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4gXHRcdFx0Y29udGludWU7XG4gXHRcdH1cbi1cbitcdFx0aWYgKGxpa2VseShyaW5nX2lkIFx1MDAzYyBEUF9SRU9fRFNUX1JJTkdfTUFYKSlcbitcdFx0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMuc2VudF90b19zdGFja1tyaW5nX2lkXVtwYXJ0bmVyX2RwLVx1MDAzZWRldmljZV9pZF0rKztcbitcdFx0ZWxzZVxuK1x0XHRcdFdBUk5fT05fT05DRSgxKTtcbiBcdFx0YXRoMTJrX2RwX3J4X2RlbGl2ZXJfbXNkdShkcF9wZGV2LCBuYXBpLCBtc2R1LCBcdTAwMjZyeF9pbmZvKTtcbiBcdH1cbiBcbkBAIC0xNjE0LDYgKzE2MjYsNyBAQCBzdGF0aWMgaW50IGF0aDEya193aWZpN19kcF9yeF9oX251bGxfcV9kZXNjKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcbiBcdFx0LyogRmlyc3QgYnVmZmVyIHdpbGwgYmUgZnJlZWQgYnkgdGhlIGNhbGxlciwgc28gZGVkdWN0IGl0J3MgbGVuZ3RoICovXG4gXHRcdG1zZHVfbGVuID0gbXNkdV9sZW4gLSAoRFBfUlhfQlVGRkVSX1NJWkUgLSBoYWxfcnhfZGVzY19zeik7XG4gXHRcdGF0aDEya193aWZpN19kcF9yeF9udWxsX3FfZGVzY19zZ19kcm9wKGRwLCBtc2R1X2xlbiwgbXNkdV9saXN0KTtcbitcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfU0ddKys7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuQEAgLTE2NDksOCArMTY2MiwxMCBAQCBzdGF0aWMgaW50IGF0aDEya193aWZpN19kcF9yeF9oX251bGxfcV9kZXNjKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcbiBcdFx0c2tiX3B1dChtc2R1LCBoYWxfcnhfZGVzY19zeiArIGwzcGFkX2J5dGVzICsgbXNkdV9sZW4pO1xuIFx0XHRza2JfcHVsbChtc2R1LCBoYWxfcnhfZGVzY19zeiArIGwzcGFkX2J5dGVzKTtcbiBcdH1cbi1cdGlmICh1bmxpa2VseSghYXRoMTJrX2RwX3J4X2NoZWNrX253aWZpX2hkcl9sZW5fdmFsaWQoZHAsIG1zZHUsIHJ4X2luZm8pKSlcbitcdGlmICh1bmxpa2VseSghYXRoMTJrX2RwX3J4X2NoZWNrX253aWZpX2hkcl9sZW5fdmFsaWQoZHAsIG1zZHUsIHJ4X2luZm8pKSkge1xuK1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9JTlZfTldJRklfSERSXSsrO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbiBcbiBcdGF0aDEya19kcF9yeF9oX3BwZHUoZHBfcGRldiwgcnhfaW5mbyk7XG4gXHRyZXQgPSBhdGgxMmtfd2lmaTdfZHBfcnhfaF9tcGR1KGRwX3BkZXYsIG1zZHUsIHJ4X2luZm8pO1xuQEAgLTE3NjMsNyArMTc3OCwxMCBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yeGRtYV9lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxuIFx0c3RydWN0IGF0aDEya19za2JfcnhjYiAqcnhjYiA9IEFUSDEyS19TS0JfUlhDQihtc2R1KTtcbiBcdGJvb2wgZHJvcCA9IGZhbHNlO1xuIFxuLVx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLnJ4ZG1hX2Vycm9yW3J4Y2ItXHUwMDNlZXJyX2NvZGVdKys7XG4rXHRpZiAobGlrZWx5KHJ4Y2ItXHUwMDNlZXJyX2NvZGUgXHUwMDNjIEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWCkpXG4rXHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLnJ4ZG1hX2Vycm9yW3J4Y2ItXHUwMDNlZXJyX2NvZGVdKys7XG4rXHRlbHNlXG4rXHRcdFdBUk5fT05fT05DRSgxKTtcbiBcbiBcdHN3aXRjaCAocnhjYi1cdTAwM2VlcnJfY29kZSkge1xuIFx0Y2FzZSBIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9VTkFVVEhfV0RTX0VSUjpcbkBAIC0xNzgwLDYgKzE3OTgsNyBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yeGRtYV9lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxuIFx0XHQvKiBUT0RPOiBSZXZpZXcgb3RoZXIgcnhkbWEgZXJyb3IgY29kZSB0byBjaGVjayBpZiBhbnl0aGluZyBpc1xuIFx0XHQgKiB3b3J0aCByZXBvcnRpbmcgdG8gbWFjODAyMTFcbiBcdFx0ICovXG4rXHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX1JYRE1BX0dFTkVSSUNdKys7XG4gXHRcdGRyb3AgPSB0cnVlO1xuIFx0XHRicmVhaztcbiBcdH1cbkBAIC0xNzk2LDcgKzE4MTUsMTAgQEAgc3RhdGljIGJvb2wgYXRoMTJrX3dpZmk3X2RwX3J4X2hfcmVvX2VycihzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXG4gXHRzdHJ1Y3QgYXRoMTJrX3NrYl9yeGNiICpyeGNiID0gQVRIMTJLX1NLQl9SWENCKG1zZHUpO1xuIFx0Ym9vbCBkcm9wID0gZmFsc2U7XG4gXG4tXHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMucmVvX2Vycm9yW3J4Y2ItXHUwMDNlZXJyX2NvZGVdKys7XG4rXHRpZiAobGlrZWx5KHJ4Y2ItXHUwMDNlZXJyX2NvZGUgXHUwMDNjIEhBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYKSlcbitcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIucmVvX2Vycm9yW3J4Y2ItXHUwMDNlZXJyX2NvZGVdKys7XG4rXHRlbHNlXG4rXHRcdFdBUk5fT05fT05DRSgxKTtcbiBcbiBcdHN3aXRjaCAocnhjYi1cdTAwM2VlcnJfY29kZSkge1xuIFx0Y2FzZSBIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX0RFU0NfQUREUl9aRVJPOlxuQEAgLTE4MTMsNiArMTgzNSw3IEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3Jlb19lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxuIFx0XHQvKiBUT0RPOiBSZXZpZXcgb3RoZXIgZXJyb3JzIGFuZCBwcm9jZXNzIHRoZW0gdG8gbWFjODAyMTFcbiBcdFx0ICogYXMgYXBwcm9wcmlhdGUuXG4gXHRcdCAqL1xuK1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9SRU9fR0VORVJJQ10rKztcbiBcdFx0ZHJvcCA9IHRydWU7XG4gXHRcdGJyZWFrO1xuIFx0fVxuQEAgLTE5MzUsNiArMTk1OCw3IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFx0XHRyZXQgPSBhdGgxMmtfd2lmaTdfaGFsX3dibV9kZXNjX3BhcnNlX2VycihkcCwgcnhfZGVzYyxcbiBcdFx0XHRcdFx0XHRcdCAgXHUwMDI2ZXJyX2luZm8pO1xuIFx0XHRpZiAocmV0KSB7XG4rXHRcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RFU0NfUEFSU0VdKys7XG4gXHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwiZmFpbGVkIHRvIHBhcnNlIHJ4IGVycm9yIGluIHdibV9yZWwgcmluZyBkZXNjICVkXFxuXCIsXG4gXHRcdFx0XHQgICAgcmV0KTtcbiBcdFx0XHRjb250aW51ZTtcbkBAIC0xOTQ0LDggKzE5NjgsMTAgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXG4gXHRcdC8qIHJldHJ5IG1hbnVhbCBkZXNjIHJldHJpZXZhbCBpZiBodyBjYyBpcyBub3QgZG9uZSAqL1xuIFx0XHRpZiAoIWRlc2NfaW5mbykge1xuK1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLnN3X2Rlc2NfZmFsbGJhY2srKztcbiBcdFx0XHRkZXNjX2luZm8gPSBhdGgxMmtfZHBfZ2V0X3J4X2Rlc2MoZHAsIGVycl9pbmZvLmNvb2tpZSk7XG4gXHRcdFx0aWYgKCFkZXNjX2luZm8pIHtcbitcdFx0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9HRVRfU1dfREVTQ10rKztcbiBcdFx0XHRcdGF0aDEya193YXJuKGFiLCBcIkludmFsaWQgY29va2llIGluIERQIFdCTSByeCBlcnJvciBkZXNjcmlwdG9yIHJldHJpZXZhbDogMHgleFxcblwiLFxuIFx0XHRcdFx0XHQgICAgZXJyX2luZm8uY29va2llKTtcbiBcdFx0XHRcdGNvbnRpbnVlO1xuQEAgLTE5NjEsNyArMTk4Nyw4IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFx0XHRkZXZpY2VfaWQgPSBkZXNjX2luZm8tXHUwMDNlZGV2aWNlX2lkO1xuIFx0XHRwYXJ0bmVyX2RwID0gYXRoMTJrX2RwX2h3X2dycF90b19kcChkcF9od19ncnAsIGRldmljZV9pZCk7XG4gXHRcdGlmICh1bmxpa2VseSghcGFydG5lcl9kcCkpIHtcbi1cdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbitcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbitcdFx0XHRcdFx0XHRcdCAgICBXQk1fRVJSX0RST1BfTlVMTF9QUlROUl9EUCk7XG4gXG4gXHRcdFx0LyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXRcbiBcdFx0XHQgKiBpbiB0aGUgcHJldmlvdXMgcmVjb3JkLCBjbGVhbnVwIHNjYXR0ZXJfbXNkdV9saXN0XG5AQCAtMjAwNyw3ICsyMDM0LDggQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdGh3X2xpbmtfaWQgPSBhdGgxMmtfZHBfcnhfZ2V0X21zZHVfc3JjX2xpbmsocGFydG5lcl9kcC1cdTAwM2VoYWwsXG4gXHRcdFx0XHRcdFx0XHQgICAgbXNkdV9kYXRhKTtcbiBcdFx0aWYgKGh3X2xpbmtfaWQgXHUwMDNlPSBBVEgxMktfR1JPVVBfTUFYX1JBRElPKSB7XG4tXHRcdFx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4rXHRcdFx0YXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2IoZHAsIG1zZHUsXG4rXHRcdFx0XHRcdFx0XHQgICAgV0JNX0VSUl9EUk9QX0lOVl9IV19JRCk7XG4gXG4gXHRcdFx0LyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXRcbiBcdFx0XHQgKiBpbiB0aGUgcHJldmlvdXMgcmVjb3JkLCBjbGVhbnVwIHNjYXR0ZXJfbXNkdV9saXN0XG5AQCAtMjA2OCw3ICsyMDk2LDggQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19EQVRBLFxuIFx0XHRcdFx0ICAgXCJVbmFibGUgdG8gcHJvY2VzcyBXQk0gZXJyb3IgbXNkdSBkdWUgdG8gaW52YWxpZCBodyBsaW5rIGlkICVkIGRldmljZSBpZCAlZFxcblwiLFxuIFx0XHRcdFx0ICAgaHdfbGlua19pZCwgZGV2aWNlX2lkKTtcbi1cdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbitcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbitcdFx0XHRcdFx0XHRcdCAgICBXQk1fRVJSX0RST1BfTlVMTF9QUk9DX0RQKTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuQEAgLTIwNzcsMTggKzIxMDYsMjEgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXG4gXHRcdGRwX3BkZXYgPSBhdGgxMmtfZHBfdG9fcGRldl9kcChwYXJ0bmVyX2RwLCBwZGV2X2lkeCk7XG4gXHRcdGlmICghZHBfcGRldikge1xuLVx0XHRcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuK1x0XHRcdGF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LFxuK1x0XHRcdFx0XHRcdFx0ICAgIFdCTV9FUlJfRFJPUF9OVUxMX1BERVYpO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXHRcdGFyID0gYXRoMTJrX3BkZXZfZHBfdG9fYXIoZHBfcGRldik7XG4gXG4gXHRcdGlmICghYXIgfHwgIXJjdV9kZXJlZmVyZW5jZShhci1cdTAwM2VhYi1cdTAwM2VwZGV2c19hY3RpdmVbcGRldl9pZHhdKSkge1xuLVx0XHRcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuK1x0XHRcdGF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LFxuK1x0XHRcdFx0XHRcdFx0ICAgIFdCTV9FUlJfRFJPUF9OVUxMX0FSKTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuIFx0XHRpZiAodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ0FDX1JVTk5JTkcsIFx1MDAyNmFyLVx1MDAzZWRldl9mbGFncykpIHtcbi1cdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbitcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbitcdFx0XHRcdFx0XHRcdCAgICBXQk1fRVJSX0RST1BfQ0FDX1JVTk5JTkcpO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG5pbmRleCA1ODdkNThlZWNjZmE1Li4xMTA0OGM1NjgzMzEwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmNcbkBAIC0xNjcsOCArMTY3LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfZHBfdHgoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LCBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphXG4gXHR0eF9yaW5nID0gXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1t0aS5yaW5nX2lkXTtcbiBcbiBcdHR4X2Rlc2MgPSBhdGgxMmtfZHBfdHhfYXNzaWduX2J1ZmZlcihkcCwgcG9vbF9pZCk7XG4tXHRpZiAoIXR4X2Rlc2MpXG4rXHRpZiAoIXR4X2Rlc2MpIHtcbitcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLnR4X2Vyci50eGJ1Zl9uYVtwb29sX2lkXSsrO1xuIFx0XHRyZXR1cm4gLUVOT01FTTtcbitcdH1cbiBcbiBcdGRwX2xpbmtfdmlmID0gYXRoMTJrX2RwX3ZpZl90b19kcF9saW5rX3ZpZihcdTAwMjZhaHZpZi1cdTAwM2VkcF92aWYsIGFydmlmLVx1MDAzZWxpbmtfaWQpO1xuIFxuQEAgLTU3NSwxOCArNTc3LDE5IEBAIGF0aDEya19kcF90eF9wcm9jZXNzX2h0dF90eF9jb21wbGV0ZShzdHJ1Y3QgYXRoMTJrX2RwICpkcCwgdm9pZCAqZGVzYyxcbiB7XG4gXHRzdHJ1Y3QgaHR0X3R4X3dibV9jb21wbGV0aW9uICpzdGF0dXNfZGVzYztcbiBcdHN0cnVjdCBhdGgxMmtfZHBfaHR0X3dibV90eF9zdGF0dXMgdHMgPSB7fTtcbi1cdGVudW0gaGFsX3dibV9odHRfdHhfY29tcF9zdGF0dXMgd2JtX3N0YXR1cztcbitcdGVudW0gaGFsX3dibV9odHRfdHhfY29tcF9zdGF0dXMgaHR0X3N0YXR1cztcbiBcdHUxNiBwZWVyX2lkO1xuIFxuIFx0c3RhdHVzX2Rlc2MgPSBkZXNjO1xuIFxuLVx0d2JtX3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtXHUwMDNlaW5mbzAsXG4rXHRodHRfc3RhdHVzID0gbGUzMl9nZXRfYml0cyhzdGF0dXNfZGVzYy1cdTAwM2VpbmZvMCxcbiBcdFx0XHRcdCAgIEhUVF9UWF9XQk1fQ09NUF9JTkZPMF9TVEFUVVMpO1xuLVx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLmZ3X3R4X3N0YXR1c1t3Ym1fc3RhdHVzXSsrO1xuK1x0aWYgKGxpa2VseShodHRfc3RhdHVzIFx1MDAzYyBNQVhfRldfVFhfU1RBVFVTKSlcbitcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLmZ3X3R4X3N0YXR1c1todHRfc3RhdHVzXSsrO1xuIFxuLVx0c3dpdGNoICh3Ym1fc3RhdHVzKSB7XG4rXHRzd2l0Y2ggKGh0dF9zdGF0dXMpIHtcbiBcdGNhc2UgSEFMX1dCTV9SRUxfSFRUX1RYX0NPTVBfU1RBVFVTX09LOlxuLVx0XHR0cy5hY2tlZCA9ICh3Ym1fc3RhdHVzID09IEhBTF9XQk1fUkVMX0hUVF9UWF9DT01QX1NUQVRVU19PSyk7XG4rXHRcdHRzLmFja2VkID0gdHJ1ZTtcbiBcdFx0dHMuYWNrX3Jzc2kgPSBsZTMyX2dldF9iaXRzKHN0YXR1c19kZXNjLVx1MDAzZWluZm8yLFxuIFx0XHRcdFx0XHQgICAgSFRUX1RYX1dCTV9DT01QX0lORk8yX0FDS19SU1NJKTtcbiBcbkBAIC02MDgsNyArNjExLDcgQEAgYXRoMTJrX2RwX3R4X3Byb2Nlc3NfaHR0X3R4X2NvbXBsZXRlKHN0cnVjdCBhdGgxMmtfZHAgKmRwLCB2b2lkICpkZXNjLFxuIFx0XHQgKi9cbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuLVx0XHRhdGgxMmtfd2FybihkcC1cdTAwM2VhYiwgXCJVbmtub3duIGh0dCB3Ym0gdHggc3RhdHVzICVkXFxuXCIsIHdibV9zdGF0dXMpO1xuK1x0XHRhdGgxMmtfd2FybihkcC1cdTAwM2VhYiwgXCJVbmtub3duIGh0dCB0eCBzdGF0dXMgJWRcXG5cIiwgaHR0X3N0YXR1cyk7XG4gXHRcdGJyZWFrO1xuIFx0fVxuIH1cbkBAIC05ODQsMTEgKzk4NywxNyBAQCB2b2lkIGF0aDEya193aWZpN19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDEya19kcCAqZHAsIGludCByaW5nX2lkKVxuIFx0XHQvKiBGaW5kIHRoZSBIQUxfV0JNX1JFTEVBU0VfSU5GTzBfUkVMX1NSQ19NT0RVTEUgdmFsdWUgKi9cbiBcdFx0YnVmX3JlbF9zb3VyY2UgPSBsZTMyX2dldF9iaXRzKHR4X3N0YXR1cy1cdTAwM2VpbmZvMCxcbiBcdFx0XHRcdFx0ICAgICAgIEhBTF9XQk1fUkVMRUFTRV9JTkZPMF9SRUxfU1JDX01PRFVMRSk7XG4tXHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0rKztcbitcdFx0aWYgKGxpa2VseShidWZfcmVsX3NvdXJjZSBcdTAwM2MgSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9NQVgpKVxuK1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0rKztcbitcdFx0ZWxzZVxuK1x0XHRcdFdBUk5fT05fT05DRSgxKTtcbiBcbiBcdFx0cmVsX3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHModHhfc3RhdHVzLVx1MDAzZWluZm8wLFxuIFx0XHRcdFx0XHQgICBIQUxfV0JNX0NPTVBMX1RYX0lORk8wX1RRTV9SRUxFQVNFX1JFQVNPTik7XG4tXHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50cW1fcmVsX3JlYXNvbltyZWxfc3RhdHVzXSsrO1xuK1x0XHRpZiAobGlrZWx5KHJlbF9zdGF0dXMgXHUwMDNjIE1BWF9UUU1fUkVMRUFTRV9SRUFTT04pKVxuK1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50cW1fcmVsX3JlYXNvbltyZWxfc3RhdHVzXSsrO1xuK1x0XHRlbHNlXG4rXHRcdFx0V0FSTl9PTl9PTkNFKDEpO1xuIFxuIFx0XHQvKiBSZWxlYXNlIGRlc2NyaXB0b3IgYXMgc29vbiBhcyBleHRyYWN0aW5nIG5lY2Vzc2FyeSBpbmZvXG4gXHRcdCAqIHRvIHJlZHVjZSBjb250ZW50aW9uXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9oYWxfcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaGFsX3J4LmNcbmluZGV4IDQ5YzY5MzI4OTcwOTQuLjYwZTdhMzYwOTdmMTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jXG5AQCAtMzI5LDcgKzMyOSwxMCBAQCBpbnQgYXRoMTJrX3dpZmk3X2hhbF9kZXNjX3Jlb19wYXJzZV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdFx0XHQgICAgSEFMX1JFT19ERVNUX1JJTkdfSU5GTzBfUFVTSF9SRUFTT04pO1xuIFx0ZXJyX2NvZGUgPSBsZTMyX2dldF9iaXRzKGRlc2MtXHUwMDNlaW5mbzAsXG4gXHRcdFx0XHQgSEFMX1JFT19ERVNUX1JJTkdfSU5GTzBfRVJST1JfQ09ERSk7XG4tXHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMucmVvX2Vycm9yW2Vycl9jb2RlXSsrO1xuK1x0aWYgKGxpa2VseShlcnJfY29kZSBcdTAwM2MgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVgpKVxuK1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5yZW9fZXJyb3JbZXJyX2NvZGVdKys7XG4rXHRlbHNlXG4rXHRcdFdBUk5fT05fT05DRSgxKTtcbiBcbiBcdGlmIChwdXNoX3JlYXNvbiAhPSBIQUxfUkVPX0RFU1RfUklOR19QVVNIX1JFQVNPTl9FUlJfREVURUNURUQgXHUwMDI2XHUwMDI2XG4gXHQgICAgcHVzaF9yZWFzb24gIT0gSEFMX1JFT19ERVNUX1JJTkdfUFVTSF9SRUFTT05fUk9VVElOR19JTlNUUlVDVElPTikge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6MTY6MjcuMDUwOTgwOTg5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI5NDM2MTgzOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgYXRoMTJrIERyaXZlciBEZWJ1Z2ZzIGFuZCBTdGF0cyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgYXRoMTJrYCB3aXJlbGVzcyBkcml2ZXIuIEl0J3MgYSBRdWFsY29tbSBXaS1GaSA3IGRyaXZlciwgc28gaW1tZWRpYXRlbHkgSSdtIHRoaW5raW5nIGFib3V0IGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gVGhpcyBwYXRjaCBzZWVtcyBmb2N1c2VkIG9uIGVuaGFuY2luZyBkZWJ1Z2ZzIHN0YXRpc3RpY3MsIHdoaWNoIGlzIGNvbW1vbi4gSSBzZWUgYWRkaXRpb25zIGFuZCB1cGRhdGVzIHRvIHRoZSBgYXRoMTJrYCBkZWJ1Z2ZzIGludGVyZmFjZS4gU3BlY2lmaWNhbGx5LCB3ZSd2ZSBnb3QgbW9yZSBzdGF0cyBiZWluZyBkdW1wZWQsIGEgd2F5IHRvIHJlc2V0IHRoZSBzdGF0cyB2aWEgYSB3cml0ZSBoYW5kbGVyIChgZWNobyByZXNldCBcdTAwM2UgZGV2aWNlX2RwX3N0YXRzYCksIGFuZCBmaWxlIHBlcm1pc3Npb24gY2hhbmdlcy5cblxuVGhlIGNvcmUgb2YgdGhlIHBhdGNoIGludm9sdmVzIGFkZGluZyBuZXcgZmllbGRzIHRvIHZhcmlvdXMgYHN0cnVjdGBzIHJlbGF0ZWQgdG8gZGV2aWNlIHN0YXRpc3RpY3MgKGBhdGgxMmtfZGV2aWNlX2RwX3R4X2Vycl9zdGF0c2AsIGBhdGgxMmtfZGV2aWNlX2RwX3N0YXRzYCwgYW5kIGBhdGgxMmtfZGV2aWNlX2RwX3J4X3dibV9lcnJfc3RhdHNgKS4gVGhlcmUgYXJlIGFsc28gdXBkYXRlcyB0byBzZXZlcmFsIGZ1bmN0aW9ucyAoYGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3JlY2VpdmVkX3BhY2tldHNgLCBgYXRoMTJrX3dpZmk3X2RwX3R4YCwgZXRjLikgdG8gaW5jcmVtZW50IHRoZXNlIG5ldyBzdGF0cy4gSW1wb3J0YW50bHksIHRoZXJlIGFyZSBuZXcgYm91bmRzIGNoZWNrcywgYW5kIGBXQVJOX09OX09OQ0VgIGNhbGxzLCB3aGljaCBpcyBhIGdvb2Qgc2FmZXR5IG1lYXN1cmUuXG5cblRoZSBjcnVjaWFsIGFkZGl0aW9uIGlzIHRoZSBib3VuZHMgY2hlY2tpbmcgb24gYXJyYXkgYWNjZXNzZXMsIGxpa2UgdGhpczpcblxuYGBgY1xuLVx0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMudHhfd2JtX3JlbF9zb3VyY2VbYnVmX3JlbF9zb3VyY2VdKys7XG4rXHRcdGlmIChsaWtlbHkoYnVmX3JlbF9zb3VyY2UgXHUwMDNjIEhBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYKSlcbitcdFx0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMudHhfd2JtX3JlbF9zb3VyY2VbYnVmX3JlbF9zb3VyY2VdKys7XG4rXHRcdGVsc2VcbitcdFx0XHRXQVJOX09OX09OQ0UoMSk7XG5gYGBcblxuVGhpcyBpcyB0aGUga2V5IHBvaW50LiBXZSdyZSBwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMgd2l0aGluIHRoZSBzdGF0aXN0aWNzIGNvbGxlY3Rpb24sIHdoaWNoIGNvdWxkIGJlIGV4cGxvaXRlZCBieSBtYWxpY2lvdXMgZmlybXdhcmUgb3IgaGFyZHdhcmUgZGVzY3JpcHRvcnMuIFRoaXMgcHJldmVudHMgbWVtb3J5IGNvcnJ1cHRpb24uIFRoZSByZXNldCBmdW5jdGlvbmFsaXR5IHZpYSBkZWJ1Z2ZzIGlzIGp1c3QgYSBjb252ZW5pZW5jZS5cblxuTm93LCB0aGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgc29tZXRoaW5nIHRvIGZ1eno/IFRoZSBwYXRjaCAqYWRkcyogYm91bmRzIGNoZWNrcywgYW5kIGl0IHByb3ZpZGVzIGEgcmVzZXQgaW50ZXJmYWNlLiBUaGUgYm91bmRzIGNoZWNrcyBpbXByb3ZlIHNlY3VyaXR5IGFuZCBzdGFiaWxpdHkgYnV0IGFyZSBub3QgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdHJhZGl0aW9uYWwgc2Vuc2UuIFRoZSByZXNldCBpcyBub3QgdHlwaWNhbGx5IGNvbnNpZGVyZWQgY3JpdGljYWwuXG5cbkdpdmVuIHRoYXQgYGF0aDEya2AgaXMgYSB3aXJlbGVzcyBkcml2ZXIsIGl0IGludGVyYWN0cyB3aXRoIGZpcm13YXJlLiBUaGUgbW9zdCBsaWtlbHkgYXR0YWNrIHN1cmZhY2UgaXMgdGhlIGZpcm13YXJlIGludGVyZmFjZS4gVG8gcHJvcGVybHkgZnV6eiB0aGUgZHJpdmVyLCBJJ2QgbGlrZWx5IG5lZWQgdG8gZ2VuZXJhdGUgbWFsaWNpb3VzIGZpcm13YXJlIGRlc2NyaXB0b3JzLiBUaGlzIG1lYW5zIEknZCBuZWVkIGVpdGhlciBhY3R1YWwgaGFyZHdhcmUgb3IgYSBoaWdoLWZpZGVsaXR5IFBDSS9BSEIgZW11bGF0aW9uLiBDYW4gYGF0aDEya2AgYmUgcmVhbGlzdGljYWxseSBmdXp6ZWQgaW4gUUVNVT8gUHJvYmFibHkgbm90LiBJdCdzIGRlc2lnbmVkIGZvciBzcGVjaWZpYyBRdWFsY29tbSBoYXJkd2FyZS4gSSBoYXZlIHRvIGNoZWNrIHRoZSBwcm9tcHQncyBjb25kaXRpb24gdGhvdWdoLlxuXG5UaGUgcHJvbXB0IHNheXMgdG8gcmV0dXJuIFwiV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiAtIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIlxuXG5gYXRoMTJrYCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llL0FIQiBXaS1GaSBkcml2ZXIgYW5kIGlzIGRlZmluaXRlbHkgZ29pbmcgdG8gbmVlZCBzcGVjaWZpYyBRdWFsY29tbSBoYXJkd2FyZS4gR2l2ZW4gdGhlIHByb3ZpZGVkIHByb21wdCwgdGhpcyBwYXRjaCBpcyAqKm5vdCoqIHdvcnRoIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTA4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjE2OjM5Ljk5NDYwMjE4MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjI1ODc3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfcmVnaXN0ZXJfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTgxMj1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgX19tYXliZV91bnVzZWQgYXRoMTJrX3BjaV9wbV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxODE5OmludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MjAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBhdGgxMmtfcGNpX2RyaXZlciAqZHJpdmVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xODQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTg0NjpcXHRyZXR1cm4gcGNpX3JlZ2lzdGVyX2RyaXZlcihwY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4NDctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTg0ODpFWFBPUlRfU1lNQk9MKGF0aDEya19wY2lfcmVnaXN0ZXJfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4NDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oPTE3Nj12b2lkIGF0aDEya19wY2lfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg6MTc3OmludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oLTE3OC1cXHRcXHRcXHQgICAgICAgc3RydWN0IGF0aDEya19wY2lfZHJpdmVyICpkcml2ZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYz0xOTc9aW50IGF0aDEya193aWZpN19wY2lfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy0yMDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYzoyMDE6XFx0cmV0ID0gYXRoMTJrX3BjaV9yZWdpc3Rlcl9kcml2ZXIoQVRIMTJLX0RFVklDRV9GQU1JTFlfV0lGSTcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy0yMDItXFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZhdGgxMmtfd2lmaTdfcGNpX2RyaXZlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjE2OjQwLjA0MDg2MzgwOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3ODQzNDAyNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYXRoMTJrIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gWWVwLCB0aGUgYGF0aDEya2AgZHJpdmVyLi4uIHRoYXQncyBRdWFsY29tbSdzIFBDSWUgZHJpdmVyIGZvciB0aGVpciBXaS1GaSA3IHNpbGljb24uIFJpZ2h0IGF3YXksIEkga25vdyB0aGlzIGlzIGdvaW5nIHRvIGJlIGEgaGFyZHdhcmUtZGVwZW5kZW50IHBpZWNlOyBpdCdzIG5vdCBzb21ldGhpbmcgeW91IGNhbiBqdXN0IHNwaW4gdXAgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBUaGUgY29yZSBvZiB0aGlzIHByb3Bvc2VkIHBhdGNoIGlzIGFkZGluZyBkZWJ1Z2ZzIHN0YXRpc3RpY3MgYW5kIHNvbWUgYXNzb2NpYXRlZCBib3VuZHMgY2hlY2tzLiBUaGF0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgcmVhbGx5LiBHaXZlbiB0aGF0IHRoZSBkcml2ZXIgbmVlZHMgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIHRoZSBjaGFuZ2VzIGFyZSBtb3N0bHkgZm9jdXNlZCBvbiBzdGF0aXN0aWNzIGdhdGhlcmluZyBhbmQgdmFsaWRhdGlvbiwgSSdtIGdvaW5nIHRvIGhhdmUgdG8gbWFrZSBhIGNhbGwgaGVyZS5cblxuSSdtIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggaW1wYWN0cyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIFdpLUZpIGRyaXZlciwgdGhlIGBhdGgxMmtgLCB3aGljaCBuZWNlc3NpdGF0ZXMgcGh5c2ljYWwgaGFyZHdhcmUgZm9yIG9wZXJhdGlvbiBhbmQgd2hpY2ggaXNuJ3QgZW11bGF0ZWQgd2l0aGluIFFFTVUuIEZ1cnRoZXIsIHRoZSBwYXRjaCdzIGNlbnRyYWwgbW9kaWZpY2F0aW9ucyByZWxhdGUgdG8gdGhlIGFkZGl0aW9uIG9mIGRlYnVnZnMgc3RhdGlzdGljcyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBib3VuZHMgY2hlY2tzLiBUaGVzZSB0eXBlcyBvZiBjaGFuZ2VzIGRvbid0IHByb3ZpZGUgYSBmcnVpdGZ1bCBlbnZpcm9ubWVudCBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI1MTUsIk91dHB1dFRva2VucyI6OTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6MTY6NDQuODI1MjA2MzA5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBXaS1GaSBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIFF1YWxjb21tIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgcHJpbWFyaWx5IGNvbnNpc3Qgb2YgYWRkaW5nIGRlYnVnZnMgc3RhdGlzdGljcyBhbmQgYm91bmRzIGNoZWNrcyBmb3IgdGhvc2Ugc3RhdGlzdGljcywgd2hpY2ggYXJlIG5vdCBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgV2ktRmkgZHJpdmVyIHJlcXVpcmluZyBwaHlzaWNhbCBRdWFsY29tbSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIHByaW1hcmlseSBjb25zaXN0IG9mIGFkZGluZyBkZWJ1Z2ZzIHN0YXRpc3RpY3MgYW5kIGJvdW5kcyBjaGVja3MgZm9yIHRob3NlIHN0YXRpc3RpY3MsIHdoaWNoIGFyZSBub3QgY29yZSBmdW5jdGlvbmFsIGNoYW5nZXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjE2OjQ0LjgyNTIyOTAzOVoiLCJTZXEiOjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowls7jv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-10 17:39:58 +0000 UTC FinishedAt: 2026-08-10 18:16:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgV2ktRmkgZHJpdmVyIHJlcXVpcmluZyBwaHlzaWNhbCBRdWFsY29tbSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIHByaW1hcmlseSBjb25zaXN0IG9mIGFkZGluZyBkZWJ1Z2ZzIHN0YXRpc3RpY3MgYW5kIGJvdW5kcyBjaGVja3MgZm9yIHRob3NlIHN0YXRpc3RpY3MsIHdoaWNoIGFyZSBub3QgY29yZSBmdW5jdGlvbmFsIGNoYW5nZXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6MTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyMWQ4YzE5MzcwYWYxNDJlMTExM2NkNmY5NmM3NjBlM2VmYzhiODE4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTg6MTY6MjQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xuaW5kZXggZDU0OTk1YjdhZGIyNy4uZDJkODlhN2UzNDBkZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xuQEAgLTEwNzEsNiAmIzQzOzEwNzEsMjAgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRcdFtIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX1BOX0VSUl9GTEFHX1NFVF0gPSBcJiMzNDtQTiBlcnJcJiMzNDssXG4gXHRcdFtIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX0RFU0NfQkxPQ0tFRF0gPSBcJiMzNDtEZXNjIGJsb2NrZWRcJiMzNDt9O1xuIFxuJiM0MztcdHN0YXRpYyBjb25zdCBjaGFyICp3Ym1fcnhfZHJvcFtXQk1fRVJSX0RST1BfTUFYXSA9IHtcbiYjNDM7XHRcdFtXQk1fRVJSX0dFVF9TV19ERVNDXSA9IFwmIzM0O1NXIGRlc2MgZXJyb3JcJiMzNDssXG4mIzQzO1x0XHRbV0JNX0VSUl9ERVNDX1BBUlNFXSA9IFwmIzM0O0Rlc2MgcGFyc2UgZXJyb3JcJiMzNDssXG4mIzQzO1x0XHRbV0JNX0VSUl9EUk9QX0lOVl9IV19JRF0gPSBcJiMzNDtJbnZhbGlkIGh3IGlkXCYjMzQ7LFxuJiM0MztcdFx0W1dCTV9FUlJfRFJPUF9OVUxMX1BSVE5SX0RQXSA9IFwmIzM0O051bGwgUGFydG5lciBkcFwmIzM0OyxcbiYjNDM7XHRcdFtXQk1fRVJSX0RST1BfTlVMTF9QUk9DX0RQXSA9IFwmIzM0O1Byb2Nlc3MgTnVsbCBQYXJ0bmVyIGRwXCYjMzQ7LFxuJiM0MztcdFx0W1dCTV9FUlJfRFJPUF9OVUxMX1BERVZdID0gXCYjMzQ7TnVsbCBQZGV2XCYjMzQ7LFxuJiM0MztcdFx0W1dCTV9FUlJfRFJPUF9OVUxMX0FSXSA9IFwmIzM0O051bGwgYXJcJiMzNDssXG4mIzQzO1x0XHRbV0JNX0VSUl9EUk9QX0NBQ19SVU5OSU5HXSA9IFwmIzM0O0NBQyBSdW5uaW5nXCYjMzQ7LFxuJiM0MztcdFx0W1dCTV9FUlJfRFJPUF9TR10gPSBcJiMzNDtTY2F0dGVyIEdhdGhlclwmIzM0OyxcbiYjNDM7XHRcdFtXQk1fRVJSX0RST1BfSU5WX05XSUZJX0hEUl0gPSBcJiMzNDtJbnZhbGlkIE5XaWZpIEhkciBsZW5cJiMzNDssXG4mIzQzO1x0XHRbV0JNX0VSUl9EUk9QX1JFT19HRU5FUklDXSAgPSBcJiMzNDtSRU8gR2VuZXJpY1wmIzM0OyxcbiYjNDM7XHRcdFtXQk1fRVJSX0RST1BfUlhETUFfR0VORVJJQ10gPSBcJiMzNDtSWERNQSBHZW5lcmljXCYjMzQ7fTtcbiYjNDM7XG4gXHRzdGF0aWMgY29uc3QgY2hhciAqd2JtX3JlbF9zcmNbSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9NQVhdID0ge1xuIFx0XHRbSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9UUU1dID0gXCYjMzQ7VFFNXCYjMzQ7LFxuIFx0XHRbSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9SWERNQV0gPSBcJiMzNDtSeGRtYVwmIzM0OyxcbkBAIC0xMDk1LDEzICYjNDM7MTEwOSwzMiBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWDsgaSYjNDM7JiM0MzspXG4gXHRcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0OyVzOiAldVxcblwmIzM0Oyxcbi1cdFx0XHRcdCByeGRtYV9lcnJbaV0sIGRldmljZV9zdGF0cy1cdTAwM2VyeGRtYV9lcnJvcltpXSk7XG4mIzQzO1x0XHRcdFx0IHJ4ZG1hX2VycltpXSwgZGV2aWNlX3N0YXRzLVx1MDAzZXdibV9lcnIucnhkbWFfZXJyb3JbaV0pO1xuIFxuIFx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgXCYjMzQ7XFxuUkVPIGVycm9yczpcXG5cJiMzNDspO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVg7IGkmIzQzOyYjNDM7KVxuIFx0XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDslczogJXVcXG5cJiMzNDssXG4tXHRcdFx0XHQgcmVvX2VycltpXSwgZGV2aWNlX3N0YXRzLVx1MDAzZXJlb19lcnJvcltpXSk7XG4mIzQzO1x0XHRcdFx0IHJlb19lcnJbaV0sIGRldmljZV9zdGF0cy1cdTAwM2V3Ym1fZXJyLnJlb19lcnJvcltpXSk7XG4mIzQzO1xuJiM0MztcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O1xcbldCTSBSeCBEcm9wIENvdW50OlxcblwmIzM0Oyk7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgV0JNX0VSUl9EUk9QX01BWDsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDslczogJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0IHdibV9yeF9kcm9wW2ldLCBkZXZpY2Vfc3RhdHMtXHUwMDNld2JtX2Vyci5kcm9wW2ldKTtcbiYjNDM7XG4mIzQzO1x0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbixcbiYjNDM7XHRcdFx0IFwmIzM0O1xcbldCTSBTVyBkZXNjIGZhbGxiYWNrIChIVyBDQyBub3QgZG9uZSk6ICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgZGV2aWNlX3N0YXRzLVx1MDAzZXdibV9lcnIuc3dfZGVzY19mYWxsYmFjayk7XG4mIzQzO1xuJiM0MztcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O1xcblJFTyBzZW50IHRvIHN0YWNrXFxuXCYjMzQ7KTtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBEUF9SRU9fRFNUX1JJTkdfTUFYOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgXCYjMzQ7cmluZyVkOlwmIzM0OywgaSk7XG4mIzQzO1x0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBhYi1cdTAwM2VhZy1cdTAwM2VudW1fZGV2aWNlczsgaiYjNDM7JiM0MzspXG4mIzQzO1x0XHRcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sXG4mIzQzO1x0XHRcdFx0XHQgXCYjMzQ7XFx0JWQ6JXVcJiMzNDssIGosXG4mIzQzO1x0XHRcdFx0XHQgZGV2aWNlX3N0YXRzLVx1MDAzZXNlbnRfdG9fc3RhY2tbaV1bal0pO1xuJiM0MztcdFx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiYjNDM7XHR9XG4gXG4gXHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDtcXG5IQUwgUkVPIGVycm9yczpcXG5cJiMzNDspO1xuIFxuQEAgLTExMTcsNiAmIzQzOzExNTAsMTEgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O3JpbmclZDogJXVcXG5cJiMzNDssXG4gXHRcdFx0XHQgaSwgZGV2aWNlX3N0YXRzLVx1MDAzZXR4X2Vyci5kZXNjX25hW2ldKTtcbiBcbiYjNDM7XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDtcXG5UWCBEZXNjcmlwdG9yIFBvb2wgQWxsb2MgRmFpbHVyZXM6XFxuXCYjMzQ7KTtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBVEgxMktfSFdfTUFYX1FVRVVFUzsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDtwb29sJWQ6ICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCBpLCBkZXZpY2Vfc3RhdHMtXHUwMDNldHhfZXJyLnR4YnVmX25hW2ldKTtcbiYjNDM7XG4gXHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLFxuIFx0XHRcdCBcJiMzNDtcXG5NaXNjIFRyYW5zbWl0IEZhaWx1cmVzOiAlZFxcblwmIzM0OyxcbiBcdFx0XHQgYXRvbWljX3JlYWQoXHUwMDI2ZGV2aWNlX3N0YXRzLVx1MDAzZXR4X2Vyci5taXNjX2ZhaWwpKTtcbkBAIC0xMTgxLDcgJiM0MzsxMjE5LDcgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDtcXG5SRU8gUnggUmVjZWl2ZWQ6XFxuXCYjMzQ7KTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVg7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O1JpbmclZDpcJiMzNDssIGkgJiM0MzsgMSk7XG4mIzQzO1x0XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDtyaW5nJWQ6XCYjMzQ7LCBpKTtcbiBcbiBcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgYWItXHUwMDNlYWctXHUwMDNlbnVtX2RldmljZXM7IGomIzQzOyYjNDM7KSB7XG4gXHRcdFx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbixcbkBAIC0xMjE1LDggJiM0MzsxMjUzLDQyIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBzc2l6ZV90XG4mIzQzO2F0aDEya19kZWJ1Z2ZzX3dyaXRlX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbiYjNDM7XHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZixcbiYjNDM7XHRcdFx0XHQgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGF0aDEya19iYXNlICphYiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfZHAgKmRwID0gYXRoMTJrX2FiX3RvX2RwKGFiKTtcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9zdGF0cyAqZGV2aWNlX3N0YXRzID0gXHUwMDI2ZHAtXHUwMDNlZGV2aWNlX3N0YXRzO1xuJiM0MztcdGNoYXIgYnVmWzIwXSA9IHt9O1xuJiM0MztcdGludCByZXQ7XG4mIzQzO1xuJiM0MztcdC8qIGZpbHRlciBwYXJ0aWFsIHdyaXRlcyBhbmQgaW52YWxpZCBjb21tYW5kcyAqL1xuJiM0MztcdGlmICgqcHBvcyAhPSAwIHx8IGNvdW50IFx1MDAzZT0gc2l6ZW9mKGJ1ZikgfHwgY291bnQgPT0gMClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBzaW1wbGVfd3JpdGVfdG9fYnVmZmVyKGJ1Ziwgc2l6ZW9mKGJ1ZikgLSAxLCBwcG9zLCB1c2VyX2J1ZiwgY291bnQpO1xuJiM0MztcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHQvKiBkcm9wIHRoZSBwb3NzaWJsZSAmIzM5O1xcbiYjMzk7IGZyb20gdGhlIGVuZCAqL1xuJiM0MztcdGlmIChidWZbKnBwb3MgLSAxXSA9PSAmIzM5O1xcbiYjMzk7KVxuJiM0MztcdFx0YnVmWypwcG9zIC0gMV0gPSAmIzM5O1xcMCYjMzk7O1xuJiM0MztcbiYjNDM7XHRpZiAoIXN0cmNtcChidWYsIFwmIzM0O3Jlc2V0XCYjMzQ7KSkge1xuJiM0MztcdFx0bWVtc2V0KGRldmljZV9zdGF0cywgMCwgc2l6ZW9mKCpkZXZpY2Vfc3RhdHMpKTtcbiYjNDM7XHRcdHJldHVybiBjb3VudDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGF0aDEya193YXJuKGFiLCBcJiMzNDt1bnN1cHBvcnRlZCBjb21tYW5kOiAlc1xcblwmIzM0OywgYnVmKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19kZXZpY2VfZHBfc3RhdHMgPSB7XG4gXHQucmVhZCA9IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzLFxuJiM0MztcdC53cml0ZSA9IGF0aDEya19kZWJ1Z2ZzX3dyaXRlX2RldmljZV9kcF9zdGF0cyxcbiBcdC5vcGVuID0gc2ltcGxlX29wZW4sXG4gXHQub3duZXIgPSBUSElTX01PRFVMRSxcbiBcdC5sbHNlZWsgPSBkZWZhdWx0X2xsc2VlayxcbkBAIC0xMjI3LDcgJiM0MzsxMjk5LDcgQEAgdm9pZCBhdGgxMmtfZGVidWdmc19wZGV2X2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtzaW11bGF0ZV9md19jcmFzaFwmIzM0OywgMDYwMCwgYWItXHUwMDNlZGVidWdmc19zb2MsIGFiLFxuIFx0XHRcdCAgICBcdTAwMjZmb3BzX3NpbXVsYXRlX2Z3X2NyYXNoKTtcbiBcbi1cdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7ZGV2aWNlX2RwX3N0YXRzXCYjMzQ7LCAwNDAwLCBhYi1cdTAwM2VkZWJ1Z2ZzX3NvYywgYWIsXG4mIzQzO1x0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtkZXZpY2VfZHBfc3RhdHNcJiMzNDssIDA2MDAsIGFiLVx1MDAzZWRlYnVnZnNfc29jLCBhYixcbiBcdFx0XHQgICAgXHUwMDI2Zm9wc19kZXZpY2VfZHBfc3RhdHMpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbmluZGV4IGJlZjBmMmJhMDU2MGYuLjI4OWFlZGU2ZGFiYjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuQEAgLTcsNiAmIzQzOzcsNyBAQFxuICNpZm5kZWYgQVRIMTJLX0RQX0hcbiAjZGVmaW5lIEFUSDEyS19EUF9IXG4gXG4mIzQzOyNpbmNsdWRlIFwmIzM0O2RwX3N0YXRzLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtody5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7ZHBfaHR0LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtkcF9jbW4uaFwmIzM0O1xuQEAgLTQyOSwxOSAmIzQzOzQzMCwyNyBAQCBzdHJ1Y3QgYXRoMTJrX2RwX2FyY2hfb3BzIHtcbiBzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF90eF9lcnJfc3RhdHMge1xuIFx0LyogVENMIFJpbmcgRGVzY3JpcHRvciB1bmF2YWlsYWJsZSAqL1xuIFx0dTMyIGRlc2NfbmFbRFBfVENMX05VTV9SSU5HX01BWF07XG4mIzQzO1x0LyogVFggZGVzY3JpcHRvciBwb29sIGV4aGF1c3RlZCAocGVyIHBvb2xfaWQgLyB0cmFmZmljIGNsYXNzKSAqL1xuJiM0MztcdHUzMiB0eGJ1Zl9uYVtBVEgxMktfSFdfTUFYX1FVRVVFU107XG4gXHQvKiBPdGhlciBmYWlsdXJlcyBkdXJpbmcgZHBfdHggZHVlIHRvIG1lbSBhbGxvY2F0aW9uIGZhaWx1cmVcbiBcdCAqIGlkciB1bmF2YWlsYWJsZSBldGMuXG4gXHQgKi9cbiBcdGF0b21pY190IG1pc2NfZmFpbDtcbiB9O1xuIFxuJiM0MztzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9yeF93Ym1fZXJyX3N0YXRzIHtcbiYjNDM7XHR1MzIgcnhkbWFfZXJyb3JbSEFMX1JFT19FTlRSX1JJTkdfUlhETUFfRUNPREVfTUFYXTtcbiYjNDM7XHR1MzIgcmVvX2Vycm9yW0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYXTtcbiYjNDM7XHR1MzIgZHJvcFtXQk1fRVJSX0RST1BfTUFYXTtcbiYjNDM7XHR1MzIgc3dfZGVzY19mYWxsYmFjaztcbiYjNDM7fTtcbiYjNDM7XG4gc3RydWN0IGF0aDEya19kZXZpY2VfZHBfc3RhdHMge1xuIFx0dTMyIGVycl9yaW5nX3BrdHM7XG4gXHR1MzIgaW52YWxpZF9yYm07XG4tXHR1MzIgcnhkbWFfZXJyb3JbSEFMX1JFT19FTlRSX1JJTkdfUlhETUFfRUNPREVfTUFYXTtcbi1cdHUzMiByZW9fZXJyb3JbSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVhdO1xuIFx0dTMyIGhhbF9yZW9fZXJyb3JbRFBfUkVPX0RTVF9SSU5HX01BWF07XG4gXHRzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF90eF9lcnJfc3RhdHMgdHhfZXJyO1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3J4X3dibV9lcnJfc3RhdHMgd2JtX2VycjtcbiBcdHUzMiByZW9fcnhbRFBfUkVPX0RTVF9SSU5HX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTtcbiBcdHUzMiByeF93Ym1fcmVsX3NvdXJjZVtIQUxfV0JNX1JFTF9TUkNfTU9EVUxFX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTtcbiBcdHUzMiB0cW1fcmVsX3JlYXNvbltNQVhfVFFNX1JFTEVBU0VfUkVBU09OXTtcbkBAIC00NTAsNiAmIzQzOzQ1OSw3IEBAIHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3N0YXRzIHtcbiBcdHUzMiB0eF9lbnF1ZXVlZFtEUF9UQ0xfTlVNX1JJTkdfTUFYXTtcbiBcdHUzMiB0eF9jb21wbGV0ZWRbRFBfVENMX05VTV9SSU5HX01BWF07XG4gXHR1MzIgcmVvX2V4Y2VwX21zZHVfYnVmX3R5cGU7XG4mIzQzO1x0dTMyIHNlbnRfdG9fc3RhY2tbRFBfUkVPX0RTVF9SSU5HX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTtcbiB9O1xuIFxuIHN0cnVjdCBhdGgxMmtfZHAge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfc3RhdHMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfc3RhdHMuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjA0ZDM4OTJhY2ZmMzJcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfc3RhdHMuaFxuQEAgLTAsMCAmIzQzOzEsMjUgQEBcbiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhciAqL1xuJiM0MzsvKlxuJiM0MzsgKiBDb3B5cmlnaHQgKGMpIFF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cbiYjNDM7ICovXG4mIzQzO1xuJiM0MzsjaWZuZGVmIEFUSDEyS19EUF9TVEFUU19IXG4mIzQzOyNkZWZpbmUgQVRIMTJLX0RQX1NUQVRTX0hcbiYjNDM7XG4mIzQzO2VudW0gYXRoMTJrX3dibV9lcnJfZHJvcF9yZWFzb24ge1xuJiM0MztcdFdCTV9FUlJfR0VUX1NXX0RFU0MsXG4mIzQzO1x0V0JNX0VSUl9ERVNDX1BBUlNFLFxuJiM0MztcdFdCTV9FUlJfRFJPUF9JTlZfSFdfSUQsXG4mIzQzO1x0V0JNX0VSUl9EUk9QX05VTExfUFJUTlJfRFAsXG4mIzQzO1x0V0JNX0VSUl9EUk9QX05VTExfUFJPQ19EUCxcbiYjNDM7XHRXQk1fRVJSX0RST1BfTlVMTF9QREVWLFxuJiM0MztcdFdCTV9FUlJfRFJPUF9OVUxMX0FSLFxuJiM0MztcdFdCTV9FUlJfRFJPUF9DQUNfUlVOTklORyxcbiYjNDM7XHRXQk1fRVJSX0RST1BfU0csXG4mIzQzO1x0V0JNX0VSUl9EUk9QX0lOVl9OV0lGSV9IRFIsXG4mIzQzO1x0V0JNX0VSUl9EUk9QX1JFT19HRU5FUklDLFxuJiM0MztcdFdCTV9FUlJfRFJPUF9SWERNQV9HRU5FUklDLFxuJiM0MztcdFdCTV9FUlJfRFJPUF9NQVgsXG4mIzQzO307XG4mIzQzO1xuJiM0MzsjZW5kaWYgLyogQVRIMTJLX0RQX1NUQVRTX0ggKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmNcbmluZGV4IDk1ZDg3ZGQ2Nzg3MmYuLmQ5NmQ4MzAxNTY1Y2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguY1xuQEAgLTEyLDYgJiM0MzsxMiwxNSBAQFxuICNpbmNsdWRlIFwmIzM0O2hhbF93Y243ODUwLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtoYWxfcWNjMjA3Mi5oXCYjMzQ7XG4gXG4mIzQzO3N0YXRpYyB2b2lkXG4mIzQzO2F0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuJiM0MztcdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqbXNkdSxcbiYjNDM7XHRcdFx0XHQgICAgZW51bSBhdGgxMmtfd2JtX2Vycl9kcm9wX3JlYXNvbiBkcm9wX3JlYXNvbilcbiYjNDM7e1xuJiM0MztcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbZHJvcF9yZWFzb25dJiM0MzsmIzQzOztcbiYjNDM7XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdTE2IGF0aDEya193aWZpN19kcF9yeF9nZXRfcGVlcl9pZChzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcdFx0XHRcdFx0ICBlbnVtIGF0aDEya19wZWVyX21ldGFkYXRhX3ZlcnNpb24gdmVyLFxuIFx0XHRcdFx0XHQgIF9fbGUzMiBwZWVyX21ldGFkYXRhKVxuQEAgLTY0Miw3ICYjNDM7NjUxLDEwIEBAIGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3JlY2VpdmVkX3BhY2tldHMoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdFx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4gXHRcdFx0Y29udGludWU7XG4gXHRcdH1cbi1cbiYjNDM7XHRcdGlmIChsaWtlbHkocmluZ19pZCBcdTAwM2MgRFBfUkVPX0RTVF9SSU5HX01BWCkpXG4mIzQzO1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy5zZW50X3RvX3N0YWNrW3JpbmdfaWRdW3BhcnRuZXJfZHAtXHUwMDNlZGV2aWNlX2lkXSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdFdBUk5fT05fT05DRSgxKTtcbiBcdFx0YXRoMTJrX2RwX3J4X2RlbGl2ZXJfbXNkdShkcF9wZGV2LCBuYXBpLCBtc2R1LCBcdTAwMjZyeF9pbmZvKTtcbiBcdH1cbiBcbkBAIC0xNjE0LDYgJiM0MzsxNjI2LDcgQEAgc3RhdGljIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9udWxsX3FfZGVzYyhzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXG4gXHRcdC8qIEZpcnN0IGJ1ZmZlciB3aWxsIGJlIGZyZWVkIGJ5IHRoZSBjYWxsZXIsIHNvIGRlZHVjdCBpdCYjMzk7cyBsZW5ndGggKi9cbiBcdFx0bXNkdV9sZW4gPSBtc2R1X2xlbiAtIChEUF9SWF9CVUZGRVJfU0laRSAtIGhhbF9yeF9kZXNjX3N6KTtcbiBcdFx0YXRoMTJrX3dpZmk3X2RwX3J4X251bGxfcV9kZXNjX3NnX2Ryb3AoZHAsIG1zZHVfbGVuLCBtc2R1X2xpc3QpO1xuJiM0MztcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfU0ddJiM0MzsmIzQzOztcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4gXG5AQCAtMTY0OSw4ICYjNDM7MTY2MiwxMCBAQCBzdGF0aWMgaW50IGF0aDEya193aWZpN19kcF9yeF9oX251bGxfcV9kZXNjKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcbiBcdFx0c2tiX3B1dChtc2R1LCBoYWxfcnhfZGVzY19zeiAmIzQzOyBsM3BhZF9ieXRlcyAmIzQzOyBtc2R1X2xlbik7XG4gXHRcdHNrYl9wdWxsKG1zZHUsIGhhbF9yeF9kZXNjX3N6ICYjNDM7IGwzcGFkX2J5dGVzKTtcbiBcdH1cbi1cdGlmICh1bmxpa2VseSghYXRoMTJrX2RwX3J4X2NoZWNrX253aWZpX2hkcl9sZW5fdmFsaWQoZHAsIG1zZHUsIHJ4X2luZm8pKSlcbiYjNDM7XHRpZiAodW5saWtlbHkoIWF0aDEya19kcF9yeF9jaGVja19ud2lmaV9oZHJfbGVuX3ZhbGlkKGRwLCBtc2R1LCByeF9pbmZvKSkpIHtcbiYjNDM7XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX0lOVl9OV0lGSV9IRFJdJiM0MzsmIzQzOztcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuIFxuIFx0YXRoMTJrX2RwX3J4X2hfcHBkdShkcF9wZGV2LCByeF9pbmZvKTtcbiBcdHJldCA9IGF0aDEya193aWZpN19kcF9yeF9oX21wZHUoZHBfcGRldiwgbXNkdSwgcnhfaW5mbyk7XG5AQCAtMTc2Myw3ICYjNDM7MTc3OCwxMCBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yeGRtYV9lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxuIFx0c3RydWN0IGF0aDEya19za2JfcnhjYiAqcnhjYiA9IEFUSDEyS19TS0JfUlhDQihtc2R1KTtcbiBcdGJvb2wgZHJvcCA9IGZhbHNlO1xuIFxuLVx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLnJ4ZG1hX2Vycm9yW3J4Y2ItXHUwMDNlZXJyX2NvZGVdJiM0MzsmIzQzOztcbiYjNDM7XHRpZiAobGlrZWx5KHJ4Y2ItXHUwMDNlZXJyX2NvZGUgXHUwMDNjIEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWCkpXG4mIzQzO1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5yeGRtYV9lcnJvcltyeGNiLVx1MDAzZWVycl9jb2RlXSYjNDM7JiM0Mzs7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0V0FSTl9PTl9PTkNFKDEpO1xuIFxuIFx0c3dpdGNoIChyeGNiLVx1MDAzZWVycl9jb2RlKSB7XG4gXHRjYXNlIEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX1VOQVVUSF9XRFNfRVJSOlxuQEAgLTE3ODAsNiAmIzQzOzE3OTgsNyBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yeGRtYV9lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxuIFx0XHQvKiBUT0RPOiBSZXZpZXcgb3RoZXIgcnhkbWEgZXJyb3IgY29kZSB0byBjaGVjayBpZiBhbnl0aGluZyBpc1xuIFx0XHQgKiB3b3J0aCByZXBvcnRpbmcgdG8gbWFjODAyMTFcbiBcdFx0ICovXG4mIzQzO1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9SWERNQV9HRU5FUklDXSYjNDM7JiM0Mzs7XG4gXHRcdGRyb3AgPSB0cnVlO1xuIFx0XHRicmVhaztcbiBcdH1cbkBAIC0xNzk2LDcgJiM0MzsxODE1LDEwIEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3Jlb19lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxuIFx0c3RydWN0IGF0aDEya19za2JfcnhjYiAqcnhjYiA9IEFUSDEyS19TS0JfUlhDQihtc2R1KTtcbiBcdGJvb2wgZHJvcCA9IGZhbHNlO1xuIFxuLVx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLnJlb19lcnJvcltyeGNiLVx1MDAzZWVycl9jb2RlXSYjNDM7JiM0Mzs7XG4mIzQzO1x0aWYgKGxpa2VseShyeGNiLVx1MDAzZWVycl9jb2RlIFx1MDAzYyBIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX01BWCkpXG4mIzQzO1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5yZW9fZXJyb3JbcnhjYi1cdTAwM2VlcnJfY29kZV0mIzQzOyYjNDM7O1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdFdBUk5fT05fT05DRSgxKTtcbiBcbiBcdHN3aXRjaCAocnhjYi1cdTAwM2VlcnJfY29kZSkge1xuIFx0Y2FzZSBIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX0RFU0NfQUREUl9aRVJPOlxuQEAgLTE4MTMsNiAmIzQzOzE4MzUsNyBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yZW9fZXJyKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcbiBcdFx0LyogVE9ETzogUmV2aWV3IG90aGVyIGVycm9ycyBhbmQgcHJvY2VzcyB0aGVtIHRvIG1hYzgwMjExXG4gXHRcdCAqIGFzIGFwcHJvcHJpYXRlLlxuIFx0XHQgKi9cbiYjNDM7XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX1JFT19HRU5FUklDXSYjNDM7JiM0Mzs7XG4gXHRcdGRyb3AgPSB0cnVlO1xuIFx0XHRicmVhaztcbiBcdH1cbkBAIC0xOTM1LDYgJiM0MzsxOTU4LDcgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdHJldCA9IGF0aDEya193aWZpN19oYWxfd2JtX2Rlc2NfcGFyc2VfZXJyKGRwLCByeF9kZXNjLFxuIFx0XHRcdFx0XHRcdFx0ICBcdTAwMjZlcnJfaW5mbyk7XG4gXHRcdGlmIChyZXQpIHtcbiYjNDM7XHRcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RFU0NfUEFSU0VdJiM0MzsmIzQzOztcbiBcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHBhcnNlIHJ4IGVycm9yIGluIHdibV9yZWwgcmluZyBkZXNjICVkXFxuXCYjMzQ7LFxuIFx0XHRcdFx0ICAgIHJldCk7XG4gXHRcdFx0Y29udGludWU7XG5AQCAtMTk0NCw4ICYjNDM7MTk2OCwxMCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcbiBcdFx0LyogcmV0cnkgbWFudWFsIGRlc2MgcmV0cmlldmFsIGlmIGh3IGNjIGlzIG5vdCBkb25lICovXG4gXHRcdGlmICghZGVzY19pbmZvKSB7XG4mIzQzO1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLnN3X2Rlc2NfZmFsbGJhY2smIzQzOyYjNDM7O1xuIFx0XHRcdGRlc2NfaW5mbyA9IGF0aDEya19kcF9nZXRfcnhfZGVzYyhkcCwgZXJyX2luZm8uY29va2llKTtcbiBcdFx0XHRpZiAoIWRlc2NfaW5mbykge1xuJiM0MztcdFx0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9HRVRfU1dfREVTQ10mIzQzOyYjNDM7O1xuIFx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O0ludmFsaWQgY29va2llIGluIERQIFdCTSByeCBlcnJvciBkZXNjcmlwdG9yIHJldHJpZXZhbDogMHgleFxcblwmIzM0OyxcbiBcdFx0XHRcdFx0ICAgIGVycl9pbmZvLmNvb2tpZSk7XG4gXHRcdFx0XHRjb250aW51ZTtcbkBAIC0xOTYxLDcgJiM0MzsxOTg3LDggQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdGRldmljZV9pZCA9IGRlc2NfaW5mby1cdTAwM2VkZXZpY2VfaWQ7XG4gXHRcdHBhcnRuZXJfZHAgPSBhdGgxMmtfZHBfaHdfZ3JwX3RvX2RwKGRwX2h3X2dycCwgZGV2aWNlX2lkKTtcbiBcdFx0aWYgKHVubGlrZWx5KCFwYXJ0bmVyX2RwKSkge1xuLVx0XHRcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuJiM0MztcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgV0JNX0VSUl9EUk9QX05VTExfUFJUTlJfRFApO1xuIFxuIFx0XHRcdC8qIEluIGFueSBjYXNlIGNvbnRpbnVhdGlvbiBiaXQgaXMgc2V0XG4gXHRcdFx0ICogaW4gdGhlIHByZXZpb3VzIHJlY29yZCwgY2xlYW51cCBzY2F0dGVyX21zZHVfbGlzdFxuQEAgLTIwMDcsNyAmIzQzOzIwMzQsOCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcdFx0aHdfbGlua19pZCA9IGF0aDEya19kcF9yeF9nZXRfbXNkdV9zcmNfbGluayhwYXJ0bmVyX2RwLVx1MDAzZWhhbCxcbiBcdFx0XHRcdFx0XHRcdCAgICBtc2R1X2RhdGEpO1xuIFx0XHRpZiAoaHdfbGlua19pZCBcdTAwM2U9IEFUSDEyS19HUk9VUF9NQVhfUkFESU8pIHtcbi1cdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbiYjNDM7XHRcdFx0YXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2IoZHAsIG1zZHUsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgIFdCTV9FUlJfRFJPUF9JTlZfSFdfSUQpO1xuIFxuIFx0XHRcdC8qIEluIGFueSBjYXNlIGNvbnRpbnVhdGlvbiBiaXQgaXMgc2V0XG4gXHRcdFx0ICogaW4gdGhlIHByZXZpb3VzIHJlY29yZCwgY2xlYW51cCBzY2F0dGVyX21zZHVfbGlzdFxuQEAgLTIwNjgsNyAmIzQzOzIwOTYsOCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcdFx0XHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0RBVEEsXG4gXHRcdFx0XHQgICBcJiMzNDtVbmFibGUgdG8gcHJvY2VzcyBXQk0gZXJyb3IgbXNkdSBkdWUgdG8gaW52YWxpZCBodyBsaW5rIGlkICVkIGRldmljZSBpZCAlZFxcblwmIzM0OyxcbiBcdFx0XHRcdCAgIGh3X2xpbmtfaWQsIGRldmljZV9pZCk7XG4tXHRcdFx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4mIzQzO1x0XHRcdGF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICBXQk1fRVJSX0RST1BfTlVMTF9QUk9DX0RQKTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuQEAgLTIwNzcsMTggJiM0MzsyMTA2LDIxIEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFxuIFx0XHRkcF9wZGV2ID0gYXRoMTJrX2RwX3RvX3BkZXZfZHAocGFydG5lcl9kcCwgcGRldl9pZHgpO1xuIFx0XHRpZiAoIWRwX3BkZXYpIHtcbi1cdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbiYjNDM7XHRcdFx0YXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2IoZHAsIG1zZHUsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgIFdCTV9FUlJfRFJPUF9OVUxMX1BERVYpO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXHRcdGFyID0gYXRoMTJrX3BkZXZfZHBfdG9fYXIoZHBfcGRldik7XG4gXG4gXHRcdGlmICghYXIgfHwgIXJjdV9kZXJlZmVyZW5jZShhci1cdTAwM2VhYi1cdTAwM2VwZGV2c19hY3RpdmVbcGRldl9pZHhdKSkge1xuLVx0XHRcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuJiM0MztcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgV0JNX0VSUl9EUk9QX05VTExfQVIpO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXG4gXHRcdGlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19DQUNfUlVOTklORywgXHUwMDI2YXItXHUwMDNlZGV2X2ZsYWdzKSkge1xuLVx0XHRcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuJiM0MztcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgV0JNX0VSUl9EUk9QX0NBQ19SVU5OSU5HKTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xuaW5kZXggNTg3ZDU4ZWVjY2ZhNS4uMTEwNDhjNTY4MzMxMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG5AQCAtMTY3LDggJiM0MzsxNjcsMTAgQEAgaW50IGF0aDEya193aWZpN19kcF90eChzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsIHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFcbiBcdHR4X3JpbmcgPSBcdTAwMjZkcC1cdTAwM2V0eF9yaW5nW3RpLnJpbmdfaWRdO1xuIFxuIFx0dHhfZGVzYyA9IGF0aDEya19kcF90eF9hc3NpZ25fYnVmZmVyKGRwLCBwb29sX2lkKTtcbi1cdGlmICghdHhfZGVzYylcbiYjNDM7XHRpZiAoIXR4X2Rlc2MpIHtcbiYjNDM7XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50eF9lcnIudHhidWZfbmFbcG9vbF9pZF0mIzQzOyYjNDM7O1xuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XHR9XG4gXG4gXHRkcF9saW5rX3ZpZiA9IGF0aDEya19kcF92aWZfdG9fZHBfbGlua192aWYoXHUwMDI2YWh2aWYtXHUwMDNlZHBfdmlmLCBhcnZpZi1cdTAwM2VsaW5rX2lkKTtcbiBcbkBAIC01NzUsMTggJiM0Mzs1NzcsMTkgQEAgYXRoMTJrX2RwX3R4X3Byb2Nlc3NfaHR0X3R4X2NvbXBsZXRlKHN0cnVjdCBhdGgxMmtfZHAgKmRwLCB2b2lkICpkZXNjLFxuIHtcbiBcdHN0cnVjdCBodHRfdHhfd2JtX2NvbXBsZXRpb24gKnN0YXR1c19kZXNjO1xuIFx0c3RydWN0IGF0aDEya19kcF9odHRfd2JtX3R4X3N0YXR1cyB0cyA9IHt9O1xuLVx0ZW51bSBoYWxfd2JtX2h0dF90eF9jb21wX3N0YXR1cyB3Ym1fc3RhdHVzO1xuJiM0MztcdGVudW0gaGFsX3dibV9odHRfdHhfY29tcF9zdGF0dXMgaHR0X3N0YXR1cztcbiBcdHUxNiBwZWVyX2lkO1xuIFxuIFx0c3RhdHVzX2Rlc2MgPSBkZXNjO1xuIFxuLVx0d2JtX3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtXHUwMDNlaW5mbzAsXG4mIzQzO1x0aHR0X3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtXHUwMDNlaW5mbzAsXG4gXHRcdFx0XHQgICBIVFRfVFhfV0JNX0NPTVBfSU5GTzBfU1RBVFVTKTtcbi1cdGRwLVx1MDAzZWRldmljZV9zdGF0cy5md190eF9zdGF0dXNbd2JtX3N0YXR1c10mIzQzOyYjNDM7O1xuJiM0MztcdGlmIChsaWtlbHkoaHR0X3N0YXR1cyBcdTAwM2MgTUFYX0ZXX1RYX1NUQVRVUykpXG4mIzQzO1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMuZndfdHhfc3RhdHVzW2h0dF9zdGF0dXNdJiM0MzsmIzQzOztcbiBcbi1cdHN3aXRjaCAod2JtX3N0YXR1cykge1xuJiM0MztcdHN3aXRjaCAoaHR0X3N0YXR1cykge1xuIFx0Y2FzZSBIQUxfV0JNX1JFTF9IVFRfVFhfQ09NUF9TVEFUVVNfT0s6XG4tXHRcdHRzLmFja2VkID0gKHdibV9zdGF0dXMgPT0gSEFMX1dCTV9SRUxfSFRUX1RYX0NPTVBfU1RBVFVTX09LKTtcbiYjNDM7XHRcdHRzLmFja2VkID0gdHJ1ZTtcbiBcdFx0dHMuYWNrX3Jzc2kgPSBsZTMyX2dldF9iaXRzKHN0YXR1c19kZXNjLVx1MDAzZWluZm8yLFxuIFx0XHRcdFx0XHQgICAgSFRUX1RYX1dCTV9DT01QX0lORk8yX0FDS19SU1NJKTtcbiBcbkBAIC02MDgsNyAmIzQzOzYxMSw3IEBAIGF0aDEya19kcF90eF9wcm9jZXNzX2h0dF90eF9jb21wbGV0ZShzdHJ1Y3QgYXRoMTJrX2RwICpkcCwgdm9pZCAqZGVzYyxcbiBcdFx0ICovXG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbi1cdFx0YXRoMTJrX3dhcm4oZHAtXHUwMDNlYWIsIFwmIzM0O1Vua25vd24gaHR0IHdibSB0eCBzdGF0dXMgJWRcXG5cJiMzNDssIHdibV9zdGF0dXMpO1xuJiM0MztcdFx0YXRoMTJrX3dhcm4oZHAtXHUwMDNlYWIsIFwmIzM0O1Vua25vd24gaHR0IHR4IHN0YXR1cyAlZFxcblwmIzM0OywgaHR0X3N0YXR1cyk7XG4gXHRcdGJyZWFrO1xuIFx0fVxuIH1cbkBAIC05ODQsMTEgJiM0Mzs5ODcsMTcgQEAgdm9pZCBhdGgxMmtfd2lmaTdfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLCBpbnQgcmluZ19pZClcbiBcdFx0LyogRmluZCB0aGUgSEFMX1dCTV9SRUxFQVNFX0lORk8wX1JFTF9TUkNfTU9EVUxFIHZhbHVlICovXG4gXHRcdGJ1Zl9yZWxfc291cmNlID0gbGUzMl9nZXRfYml0cyh0eF9zdGF0dXMtXHUwMDNlaW5mbzAsXG4gXHRcdFx0XHRcdCAgICAgICBIQUxfV0JNX1JFTEVBU0VfSU5GTzBfUkVMX1NSQ19NT0RVTEUpO1xuLVx0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMudHhfd2JtX3JlbF9zb3VyY2VbYnVmX3JlbF9zb3VyY2VdJiM0MzsmIzQzOztcbiYjNDM7XHRcdGlmIChsaWtlbHkoYnVmX3JlbF9zb3VyY2UgXHUwMDNjIEhBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYKSlcbiYjNDM7XHRcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLnR4X3dibV9yZWxfc291cmNlW2J1Zl9yZWxfc291cmNlXSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdFdBUk5fT05fT05DRSgxKTtcbiBcbiBcdFx0cmVsX3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHModHhfc3RhdHVzLVx1MDAzZWluZm8wLFxuIFx0XHRcdFx0XHQgICBIQUxfV0JNX0NPTVBMX1RYX0lORk8wX1RRTV9SRUxFQVNFX1JFQVNPTik7XG4tXHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50cW1fcmVsX3JlYXNvbltyZWxfc3RhdHVzXSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRpZiAobGlrZWx5KHJlbF9zdGF0dXMgXHUwMDNjIE1BWF9UUU1fUkVMRUFTRV9SRUFTT04pKVxuJiM0MztcdFx0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMudHFtX3JlbF9yZWFzb25bcmVsX3N0YXR1c10mIzQzOyYjNDM7O1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRXQVJOX09OX09OQ0UoMSk7XG4gXG4gXHRcdC8qIFJlbGVhc2UgZGVzY3JpcHRvciBhcyBzb29uIGFzIGV4dHJhY3RpbmcgbmVjZXNzYXJ5IGluZm9cbiBcdFx0ICogdG8gcmVkdWNlIGNvbnRlbnRpb25cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9oYWxfcnguY1xuaW5kZXggNDljNjkzMjg5NzA5NC4uNjBlN2EzNjA5N2YxMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaGFsX3J4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaGFsX3J4LmNcbkBAIC0zMjksNyAmIzQzOzMyOSwxMCBAQCBpbnQgYXRoMTJrX3dpZmk3X2hhbF9kZXNjX3Jlb19wYXJzZV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdFx0XHQgICAgSEFMX1JFT19ERVNUX1JJTkdfSU5GTzBfUFVTSF9SRUFTT04pO1xuIFx0ZXJyX2NvZGUgPSBsZTMyX2dldF9iaXRzKGRlc2MtXHUwMDNlaW5mbzAsXG4gXHRcdFx0XHQgSEFMX1JFT19ERVNUX1JJTkdfSU5GTzBfRVJST1JfQ09ERSk7XG4tXHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMucmVvX2Vycm9yW2Vycl9jb2RlXSYjNDM7JiM0Mzs7XG4mIzQzO1x0aWYgKGxpa2VseShlcnJfY29kZSBcdTAwM2MgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVgpKVxuJiM0MztcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIucmVvX2Vycm9yW2Vycl9jb2RlXSYjNDM7JiM0Mzs7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0V0FSTl9PTl9PTkNFKDEpO1xuIFxuIFx0aWYgKHB1c2hfcmVhc29uICE9IEhBTF9SRU9fREVTVF9SSU5HX1BVU0hfUkVBU09OX0VSUl9ERVRFQ1RFRCBcdTAwMjZcdTAwMjZcbiBcdCAgICBwdXNoX3JlYXNvbiAhPSBIQUxfUkVPX0RFU1RfUklOR19QVVNIX1JFQVNPTl9ST1VUSU5HX0lOU1RSVUNUSU9OKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6MTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIFdpLUZpIGRyaXZlciByZXF1aXJpbmcgcGh5c2ljYWwgUXVhbGNvbW0gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBwcmltYXJpbHkgY29uc2lzdCBvZiBhZGRpbmcgZGVidWdmcyBzdGF0aXN0aWNzIGFuZCBib3VuZHMgY2hlY2tzIGZvciB0aG9zZSBzdGF0aXN0aWNzLCB3aGljaCBhcmUgbm90IGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjFkOGMxOTM3MGFmMTQyZTExMTNjZDZmOTZjNzYwZTNlZmM4YjgxOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDE4OjE2OjI0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYwppbmRleCBkNTQ5OTViN2FkYjI3Li5kMmQ4OWE3ZTM0MGRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYwpAQCAtMTA3MSw2ICYjNDM7MTA3MSwyMCBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJW0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfUE5fRVJSX0ZMQUdfU0VUXSA9ICYjMzQ7UE4gZXJyJiMzNDssCiAJCVtIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX0RFU0NfQkxPQ0tFRF0gPSAmIzM0O0Rlc2MgYmxvY2tlZCYjMzQ7fTsKIAomIzQzOwlzdGF0aWMgY29uc3QgY2hhciAqd2JtX3J4X2Ryb3BbV0JNX0VSUl9EUk9QX01BWF0gPSB7CiYjNDM7CQlbV0JNX0VSUl9HRVRfU1dfREVTQ10gPSAmIzM0O1NXIGRlc2MgZXJyb3ImIzM0OywKJiM0MzsJCVtXQk1fRVJSX0RFU0NfUEFSU0VdID0gJiMzNDtEZXNjIHBhcnNlIGVycm9yJiMzNDssCiYjNDM7CQlbV0JNX0VSUl9EUk9QX0lOVl9IV19JRF0gPSAmIzM0O0ludmFsaWQgaHcgaWQmIzM0OywKJiM0MzsJCVtXQk1fRVJSX0RST1BfTlVMTF9QUlROUl9EUF0gPSAmIzM0O051bGwgUGFydG5lciBkcCYjMzQ7LAomIzQzOwkJW1dCTV9FUlJfRFJPUF9OVUxMX1BST0NfRFBdID0gJiMzNDtQcm9jZXNzIE51bGwgUGFydG5lciBkcCYjMzQ7LAomIzQzOwkJW1dCTV9FUlJfRFJPUF9OVUxMX1BERVZdID0gJiMzNDtOdWxsIFBkZXYmIzM0OywKJiM0MzsJCVtXQk1fRVJSX0RST1BfTlVMTF9BUl0gPSAmIzM0O051bGwgYXImIzM0OywKJiM0MzsJCVtXQk1fRVJSX0RST1BfQ0FDX1JVTk5JTkddID0gJiMzNDtDQUMgUnVubmluZyYjMzQ7LAomIzQzOwkJW1dCTV9FUlJfRFJPUF9TR10gPSAmIzM0O1NjYXR0ZXIgR2F0aGVyJiMzNDssCiYjNDM7CQlbV0JNX0VSUl9EUk9QX0lOVl9OV0lGSV9IRFJdID0gJiMzNDtJbnZhbGlkIE5XaWZpIEhkciBsZW4mIzM0OywKJiM0MzsJCVtXQk1fRVJSX0RST1BfUkVPX0dFTkVSSUNdICA9ICYjMzQ7UkVPIEdlbmVyaWMmIzM0OywKJiM0MzsJCVtXQk1fRVJSX0RST1BfUlhETUFfR0VORVJJQ10gPSAmIzM0O1JYRE1BIEdlbmVyaWMmIzM0O307CiYjNDM7CiAJc3RhdGljIGNvbnN0IGNoYXIgKndibV9yZWxfc3JjW0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYXSA9IHsKIAkJW0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfVFFNXSA9ICYjMzQ7VFFNJiMzNDssCiAJCVtIQUxfV0JNX1JFTF9TUkNfTU9EVUxFX1JYRE1BXSA9ICYjMzQ7UnhkbWEmIzM0OywKQEAgLTEwOTUsMTMgJiM0MzsxMTA5LDMyIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLAogCiAJZm9yIChpID0gMDsgaSAmbHQ7IEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWDsgaSYjNDM7JiM0MzspCiAJCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7JXM6ICV1XG4mIzM0OywKLQkJCQkgcnhkbWFfZXJyW2ldLCBkZXZpY2Vfc3RhdHMtJmd0O3J4ZG1hX2Vycm9yW2ldKTsKJiM0MzsJCQkJIHJ4ZG1hX2VycltpXSwgZGV2aWNlX3N0YXRzLSZndDt3Ym1fZXJyLnJ4ZG1hX2Vycm9yW2ldKTsKIAogCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7XG5SRU8gZXJyb3JzOlxuJiMzNDspOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IEhBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYOyBpJiM0MzsmIzQzOykKIAkJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgJiMzNDslczogJXVcbiYjMzQ7LAotCQkJCSByZW9fZXJyW2ldLCBkZXZpY2Vfc3RhdHMtJmd0O3Jlb19lcnJvcltpXSk7CiYjNDM7CQkJCSByZW9fZXJyW2ldLCBkZXZpY2Vfc3RhdHMtJmd0O3dibV9lcnIucmVvX2Vycm9yW2ldKTsKJiM0MzsKJiM0MzsJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgJiMzNDtcbldCTSBSeCBEcm9wIENvdW50OlxuJiMzNDspOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgV0JNX0VSUl9EUk9QX01BWDsgaSYjNDM7JiM0MzspCiYjNDM7CQlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0OyVzOiAldVxuJiMzNDssCiYjNDM7CQkJCSB3Ym1fcnhfZHJvcFtpXSwgZGV2aWNlX3N0YXRzLSZndDt3Ym1fZXJyLmRyb3BbaV0pOwomIzQzOwomIzQzOwlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLAomIzQzOwkJCSAmIzM0O1xuV0JNIFNXIGRlc2MgZmFsbGJhY2sgKEhXIENDIG5vdCBkb25lKTogJXVcbiYjMzQ7LAomIzQzOwkJCSBkZXZpY2Vfc3RhdHMtJmd0O3dibV9lcnIuc3dfZGVzY19mYWxsYmFjayk7CiYjNDM7CiYjNDM7CWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7XG5SRU8gc2VudCB0byBzdGFja1xuJiMzNDspOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgRFBfUkVPX0RTVF9SSU5HX01BWDsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7cmluZyVkOiYjMzQ7LCBpKTsKJiM0MzsJCWZvciAoaiA9IDA7IGogJmx0OyBhYi0mZ3Q7YWctJmd0O251bV9kZXZpY2VzOyBqJiM0MzsmIzQzOykKJiM0MzsJCQlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLAomIzQzOwkJCQkJICYjMzQ7XHQlZDoldSYjMzQ7LCBqLAomIzQzOwkJCQkJIGRldmljZV9zdGF0cy0mZ3Q7c2VudF90b19zdGFja1tpXVtqXSk7CiYjNDM7CQlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0O1xuJiMzNDspOwomIzQzOwl9CiAKIAlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0O1xuSEFMIFJFTyBlcnJvcnM6XG4mIzM0Oyk7CiAKQEAgLTExMTcsNiAmIzQzOzExNTAsMTEgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsCiAJCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7cmluZyVkOiAldVxuJiMzNDssCiAJCQkJIGksIGRldmljZV9zdGF0cy0mZ3Q7dHhfZXJyLmRlc2NfbmFbaV0pOwogCiYjNDM7CWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7XG5UWCBEZXNjcmlwdG9yIFBvb2wgQWxsb2MgRmFpbHVyZXM6XG4mIzM0Oyk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBBVEgxMktfSFdfTUFYX1FVRVVFUzsgaSYjNDM7JiM0MzspCiYjNDM7CQlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0O3Bvb2wlZDogJXVcbiYjMzQ7LAomIzQzOwkJCQkgaSwgZGV2aWNlX3N0YXRzLSZndDt0eF9lcnIudHhidWZfbmFbaV0pOwomIzQzOwogCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sCiAJCQkgJiMzNDtcbk1pc2MgVHJhbnNtaXQgRmFpbHVyZXM6ICVkXG4mIzM0OywKIAkJCSBhdG9taWNfcmVhZCgmYW1wO2RldmljZV9zdGF0cy0mZ3Q7dHhfZXJyLm1pc2NfZmFpbCkpOwpAQCAtMTE4MSw3ICYjNDM7MTIxOSw3IEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLAogCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7XG5SRU8gUnggUmVjZWl2ZWQ6XG4mIzM0Oyk7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgRFBfUkVPX0RTVF9SSU5HX01BWDsgaSYjNDM7JiM0MzspIHsKLQkJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgJiMzNDtSaW5nJWQ6JiMzNDssIGkgJiM0MzsgMSk7CiYjNDM7CQlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0O3JpbmclZDomIzM0OywgaSk7CiAKIAkJZm9yIChqID0gMDsgaiAmbHQ7IGFiLSZndDthZy0mZ3Q7bnVtX2RldmljZXM7IGomIzQzOyYjNDM7KSB7CiAJCQlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLApAQCAtMTIxNSw4ICYjNDM7MTI1Myw0MiBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSwKIAlyZXR1cm4gcmV0OwogfQogCiYjNDM7c3RhdGljIHNzaXplX3QKJiM0MzthdGgxMmtfZGVidWdmc193cml0ZV9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsCiYjNDM7CQkJCSAgICAgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmLAomIzQzOwkJCQkgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQomIzQzO3sKJiM0MzsJc3RydWN0IGF0aDEya19iYXNlICphYiA9IGZpbGUtJmd0O3ByaXZhdGVfZGF0YTsKJiM0MzsJc3RydWN0IGF0aDEya19kcCAqZHAgPSBhdGgxMmtfYWJfdG9fZHAoYWIpOwomIzQzOwlzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9zdGF0cyAqZGV2aWNlX3N0YXRzID0gJmFtcDtkcC0mZ3Q7ZGV2aWNlX3N0YXRzOwomIzQzOwljaGFyIGJ1ZlsyMF0gPSB7fTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJLyogZmlsdGVyIHBhcnRpYWwgd3JpdGVzIGFuZCBpbnZhbGlkIGNvbW1hbmRzICovCiYjNDM7CWlmICgqcHBvcyAhPSAwIHx8IGNvdW50ICZndDs9IHNpemVvZihidWYpIHx8IGNvdW50ID09IDApCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJcmV0ID0gc2ltcGxlX3dyaXRlX3RvX2J1ZmZlcihidWYsIHNpemVvZihidWYpIC0gMSwgcHBvcywgdXNlcl9idWYsIGNvdW50KTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwkvKiBkcm9wIHRoZSBwb3NzaWJsZSAmIzM5O1xuJiMzOTsgZnJvbSB0aGUgZW5kICovCiYjNDM7CWlmIChidWZbKnBwb3MgLSAxXSA9PSAmIzM5O1xuJiMzOTspCiYjNDM7CQlidWZbKnBwb3MgLSAxXSA9ICYjMzk7XDAmIzM5OzsKJiM0MzsKJiM0MzsJaWYgKCFzdHJjbXAoYnVmLCAmIzM0O3Jlc2V0JiMzNDspKSB7CiYjNDM7CQltZW1zZXQoZGV2aWNlX3N0YXRzLCAwLCBzaXplb2YoKmRldmljZV9zdGF0cykpOwomIzQzOwkJcmV0dXJuIGNvdW50OwomIzQzOwl9CiYjNDM7CiYjNDM7CWF0aDEya193YXJuKGFiLCAmIzM0O3Vuc3VwcG9ydGVkIGNvbW1hbmQ6ICVzXG4mIzM0OywgYnVmKTsKJiM0MzsKJiM0MzsJcmV0dXJuIC1FSU5WQUw7CiYjNDM7fQomIzQzOwogc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19kZXZpY2VfZHBfc3RhdHMgPSB7CiAJLnJlYWQgPSBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cywKJiM0MzsJLndyaXRlID0gYXRoMTJrX2RlYnVnZnNfd3JpdGVfZGV2aWNlX2RwX3N0YXRzLAogCS5vcGVuID0gc2ltcGxlX29wZW4sCiAJLm93bmVyID0gVEhJU19NT0RVTEUsCiAJLmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLApAQCAtMTIyNyw3ICYjNDM7MTI5OSw3IEBAIHZvaWQgYXRoMTJrX2RlYnVnZnNfcGRldl9jcmVhdGUoc3RydWN0IGF0aDEya19iYXNlICphYikKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7c2ltdWxhdGVfZndfY3Jhc2gmIzM0OywgMDYwMCwgYWItJmd0O2RlYnVnZnNfc29jLCBhYiwKIAkJCSAgICAmYW1wO2ZvcHNfc2ltdWxhdGVfZndfY3Jhc2gpOwogCi0JZGVidWdmc19jcmVhdGVfZmlsZSgmIzM0O2RldmljZV9kcF9zdGF0cyYjMzQ7LCAwNDAwLCBhYi0mZ3Q7ZGVidWdmc19zb2MsIGFiLAomIzQzOwlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7ZGV2aWNlX2RwX3N0YXRzJiMzNDssIDA2MDAsIGFiLSZndDtkZWJ1Z2ZzX3NvYywgYWIsCiAJCQkgICAgJmFtcDtmb3BzX2RldmljZV9kcF9zdGF0cyk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaAppbmRleCBiZWYwZjJiYTA1NjBmLi4yODlhZWRlNmRhYmI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oCkBAIC03LDYgJiM0Mzs3LDcgQEAKICNpZm5kZWYgQVRIMTJLX0RQX0gKICNkZWZpbmUgQVRIMTJLX0RQX0gKIAomIzQzOyNpbmNsdWRlICYjMzQ7ZHBfc3RhdHMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2h3LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtkcF9odHQuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2RwX2Ntbi5oJiMzNDsKQEAgLTQyOSwxOSAmIzQzOzQzMCwyNyBAQCBzdHJ1Y3QgYXRoMTJrX2RwX2FyY2hfb3BzIHsKIHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3R4X2Vycl9zdGF0cyB7CiAJLyogVENMIFJpbmcgRGVzY3JpcHRvciB1bmF2YWlsYWJsZSAqLwogCXUzMiBkZXNjX25hW0RQX1RDTF9OVU1fUklOR19NQVhdOwomIzQzOwkvKiBUWCBkZXNjcmlwdG9yIHBvb2wgZXhoYXVzdGVkIChwZXIgcG9vbF9pZCAvIHRyYWZmaWMgY2xhc3MpICovCiYjNDM7CXUzMiB0eGJ1Zl9uYVtBVEgxMktfSFdfTUFYX1FVRVVFU107CiAJLyogT3RoZXIgZmFpbHVyZXMgZHVyaW5nIGRwX3R4IGR1ZSB0byBtZW0gYWxsb2NhdGlvbiBmYWlsdXJlCiAJICogaWRyIHVuYXZhaWxhYmxlIGV0Yy4KIAkgKi8KIAlhdG9taWNfdCBtaXNjX2ZhaWw7CiB9OwogCiYjNDM7c3RydWN0IGF0aDEya19kZXZpY2VfZHBfcnhfd2JtX2Vycl9zdGF0cyB7CiYjNDM7CXUzMiByeGRtYV9lcnJvcltIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVhdOwomIzQzOwl1MzIgcmVvX2Vycm9yW0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYXTsKJiM0MzsJdTMyIGRyb3BbV0JNX0VSUl9EUk9QX01BWF07CiYjNDM7CXUzMiBzd19kZXNjX2ZhbGxiYWNrOwomIzQzO307CiYjNDM7CiBzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9zdGF0cyB7CiAJdTMyIGVycl9yaW5nX3BrdHM7CiAJdTMyIGludmFsaWRfcmJtOwotCXUzMiByeGRtYV9lcnJvcltIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVhdOwotCXUzMiByZW9fZXJyb3JbSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVhdOwogCXUzMiBoYWxfcmVvX2Vycm9yW0RQX1JFT19EU1RfUklOR19NQVhdOwogCXN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3R4X2Vycl9zdGF0cyB0eF9lcnI7CiYjNDM7CXN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3J4X3dibV9lcnJfc3RhdHMgd2JtX2VycjsKIAl1MzIgcmVvX3J4W0RQX1JFT19EU1RfUklOR19NQVhdW0FUSDEyS19NQVhfREVWSUNFU107CiAJdTMyIHJ4X3dibV9yZWxfc291cmNlW0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYXVtBVEgxMktfTUFYX0RFVklDRVNdOwogCXUzMiB0cW1fcmVsX3JlYXNvbltNQVhfVFFNX1JFTEVBU0VfUkVBU09OXTsKQEAgLTQ1MCw2ICYjNDM7NDU5LDcgQEAgc3RydWN0IGF0aDEya19kZXZpY2VfZHBfc3RhdHMgewogCXUzMiB0eF9lbnF1ZXVlZFtEUF9UQ0xfTlVNX1JJTkdfTUFYXTsKIAl1MzIgdHhfY29tcGxldGVkW0RQX1RDTF9OVU1fUklOR19NQVhdOwogCXUzMiByZW9fZXhjZXBfbXNkdV9idWZfdHlwZTsKJiM0MzsJdTMyIHNlbnRfdG9fc3RhY2tbRFBfUkVPX0RTVF9SSU5HX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTsKIH07CiAKIHN0cnVjdCBhdGgxMmtfZHAgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9zdGF0cy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9zdGF0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjA0ZDM4OTJhY2ZmMzIKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3N0YXRzLmgKQEAgLTAsMCAmIzQzOzEsMjUgQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyICovCiYjNDM7LyoKJiM0MzsgKiBDb3B5cmlnaHQgKGMpIFF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy4KJiM0MzsgKi8KJiM0MzsKJiM0MzsjaWZuZGVmIEFUSDEyS19EUF9TVEFUU19ICiYjNDM7I2RlZmluZSBBVEgxMktfRFBfU1RBVFNfSAomIzQzOwomIzQzO2VudW0gYXRoMTJrX3dibV9lcnJfZHJvcF9yZWFzb24gewomIzQzOwlXQk1fRVJSX0dFVF9TV19ERVNDLAomIzQzOwlXQk1fRVJSX0RFU0NfUEFSU0UsCiYjNDM7CVdCTV9FUlJfRFJPUF9JTlZfSFdfSUQsCiYjNDM7CVdCTV9FUlJfRFJPUF9OVUxMX1BSVE5SX0RQLAomIzQzOwlXQk1fRVJSX0RST1BfTlVMTF9QUk9DX0RQLAomIzQzOwlXQk1fRVJSX0RST1BfTlVMTF9QREVWLAomIzQzOwlXQk1fRVJSX0RST1BfTlVMTF9BUiwKJiM0MzsJV0JNX0VSUl9EUk9QX0NBQ19SVU5OSU5HLAomIzQzOwlXQk1fRVJSX0RST1BfU0csCiYjNDM7CVdCTV9FUlJfRFJPUF9JTlZfTldJRklfSERSLAomIzQzOwlXQk1fRVJSX0RST1BfUkVPX0dFTkVSSUMsCiYjNDM7CVdCTV9FUlJfRFJPUF9SWERNQV9HRU5FUklDLAomIzQzOwlXQk1fRVJSX0RST1BfTUFYLAomIzQzO307CiYjNDM7CiYjNDM7I2VuZGlmIC8qIEFUSDEyS19EUF9TVEFUU19IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmMKaW5kZXggOTVkODdkZDY3ODcyZi4uZDk2ZDgzMDE1NjVjYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYwpAQCAtMTIsNiAmIzQzOzEyLDE1IEBACiAjaW5jbHVkZSAmIzM0O2hhbF93Y243ODUwLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtoYWxfcWNjMjA3Mi5oJiMzNDsKIAomIzQzO3N0YXRpYyB2b2lkCiYjNDM7YXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2Ioc3RydWN0IGF0aDEya19kcCAqZHAsCiYjNDM7CQkJCSAgICBzdHJ1Y3Qgc2tfYnVmZiAqbXNkdSwKJiM0MzsJCQkJICAgIGVudW0gYXRoMTJrX3dibV9lcnJfZHJvcF9yZWFzb24gZHJvcF9yZWFzb24pCiYjNDM7ewomIzQzOwlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtkcm9wX3JlYXNvbl0mIzQzOyYjNDM7OwomIzQzOwlkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdTE2IGF0aDEya193aWZpN19kcF9yeF9nZXRfcGVlcl9pZChzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAkJCQkJICBlbnVtIGF0aDEya19wZWVyX21ldGFkYXRhX3ZlcnNpb24gdmVyLAogCQkJCQkgIF9fbGUzMiBwZWVyX21ldGFkYXRhKQpAQCAtNjQyLDcgJiM0Mzs2NTEsMTAgQEAgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3NfcmVjZWl2ZWRfcGFja2V0cyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAkJCWRldl9rZnJlZV9za2JfYW55KG1zZHUpOwogCQkJY29udGludWU7CiAJCX0KLQomIzQzOwkJaWYgKGxpa2VseShyaW5nX2lkICZsdDsgRFBfUkVPX0RTVF9SSU5HX01BWCkpCiYjNDM7CQkJZHAtJmd0O2RldmljZV9zdGF0cy5zZW50X3RvX3N0YWNrW3JpbmdfaWRdW3BhcnRuZXJfZHAtJmd0O2RldmljZV9pZF0mIzQzOyYjNDM7OwomIzQzOwkJZWxzZQomIzQzOwkJCVdBUk5fT05fT05DRSgxKTsKIAkJYXRoMTJrX2RwX3J4X2RlbGl2ZXJfbXNkdShkcF9wZGV2LCBuYXBpLCBtc2R1LCAmYW1wO3J4X2luZm8pOwogCX0KIApAQCAtMTYxNCw2ICYjNDM7MTYyNiw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X2hfbnVsbF9xX2Rlc2Moc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LAogCQkvKiBGaXJzdCBidWZmZXIgd2lsbCBiZSBmcmVlZCBieSB0aGUgY2FsbGVyLCBzbyBkZWR1Y3QgaXQmIzM5O3MgbGVuZ3RoICovCiAJCW1zZHVfbGVuID0gbXNkdV9sZW4gLSAoRFBfUlhfQlVGRkVSX1NJWkUgLSBoYWxfcnhfZGVzY19zeik7CiAJCWF0aDEya193aWZpN19kcF9yeF9udWxsX3FfZGVzY19zZ19kcm9wKGRwLCBtc2R1X2xlbiwgbXNkdV9saXN0KTsKJiM0MzsJCWRwLSZndDtkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9TR10mIzQzOyYjNDM7OwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKQEAgLTE2NDksOCAmIzQzOzE2NjIsMTAgQEAgc3RhdGljIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9udWxsX3FfZGVzYyhzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsCiAJCXNrYl9wdXQobXNkdSwgaGFsX3J4X2Rlc2Nfc3ogJiM0MzsgbDNwYWRfYnl0ZXMgJiM0MzsgbXNkdV9sZW4pOwogCQlza2JfcHVsbChtc2R1LCBoYWxfcnhfZGVzY19zeiAmIzQzOyBsM3BhZF9ieXRlcyk7CiAJfQotCWlmICh1bmxpa2VseSghYXRoMTJrX2RwX3J4X2NoZWNrX253aWZpX2hkcl9sZW5fdmFsaWQoZHAsIG1zZHUsIHJ4X2luZm8pKSkKJiM0MzsJaWYgKHVubGlrZWx5KCFhdGgxMmtfZHBfcnhfY2hlY2tfbndpZmlfaGRyX2xlbl92YWxpZChkcCwgbXNkdSwgcnhfaW5mbykpKSB7CiYjNDM7CQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfSU5WX05XSUZJX0hEUl0mIzQzOyYjNDM7OwogCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQogCiAJYXRoMTJrX2RwX3J4X2hfcHBkdShkcF9wZGV2LCByeF9pbmZvKTsKIAlyZXQgPSBhdGgxMmtfd2lmaTdfZHBfcnhfaF9tcGR1KGRwX3BkZXYsIG1zZHUsIHJ4X2luZm8pOwpAQCAtMTc2Myw3ICYjNDM7MTc3OCwxMCBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yeGRtYV9lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LAogCXN0cnVjdCBhdGgxMmtfc2tiX3J4Y2IgKnJ4Y2IgPSBBVEgxMktfU0tCX1JYQ0IobXNkdSk7CiAJYm9vbCBkcm9wID0gZmFsc2U7CiAKLQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLnJ4ZG1hX2Vycm9yW3J4Y2ItJmd0O2Vycl9jb2RlXSYjNDM7JiM0Mzs7CiYjNDM7CWlmIChsaWtlbHkocnhjYi0mZ3Q7ZXJyX2NvZGUgJmx0OyBIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVgpKQomIzQzOwkJZHAtJmd0O2RldmljZV9zdGF0cy53Ym1fZXJyLnJ4ZG1hX2Vycm9yW3J4Y2ItJmd0O2Vycl9jb2RlXSYjNDM7JiM0Mzs7CiYjNDM7CWVsc2UKJiM0MzsJCVdBUk5fT05fT05DRSgxKTsKIAogCXN3aXRjaCAocnhjYi0mZ3Q7ZXJyX2NvZGUpIHsKIAljYXNlIEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX1VOQVVUSF9XRFNfRVJSOgpAQCAtMTc4MCw2ICYjNDM7MTc5OCw3IEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3J4ZG1hX2VycihzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsCiAJCS8qIFRPRE86IFJldmlldyBvdGhlciByeGRtYSBlcnJvciBjb2RlIHRvIGNoZWNrIGlmIGFueXRoaW5nIGlzCiAJCSAqIHdvcnRoIHJlcG9ydGluZyB0byBtYWM4MDIxMQogCQkgKi8KJiM0MzsJCWRwLSZndDtkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9SWERNQV9HRU5FUklDXSYjNDM7JiM0Mzs7CiAJCWRyb3AgPSB0cnVlOwogCQlicmVhazsKIAl9CkBAIC0xNzk2LDcgJiM0MzsxODE1LDEwIEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3Jlb19lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LAogCXN0cnVjdCBhdGgxMmtfc2tiX3J4Y2IgKnJ4Y2IgPSBBVEgxMktfU0tCX1JYQ0IobXNkdSk7CiAJYm9vbCBkcm9wID0gZmFsc2U7CiAKLQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLnJlb19lcnJvcltyeGNiLSZndDtlcnJfY29kZV0mIzQzOyYjNDM7OwomIzQzOwlpZiAobGlrZWx5KHJ4Y2ItJmd0O2Vycl9jb2RlICZsdDsgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVgpKQomIzQzOwkJZHAtJmd0O2RldmljZV9zdGF0cy53Ym1fZXJyLnJlb19lcnJvcltyeGNiLSZndDtlcnJfY29kZV0mIzQzOyYjNDM7OwomIzQzOwllbHNlCiYjNDM7CQlXQVJOX09OX09OQ0UoMSk7CiAKIAlzd2l0Y2ggKHJ4Y2ItJmd0O2Vycl9jb2RlKSB7CiAJY2FzZSBIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX0RFU0NfQUREUl9aRVJPOgpAQCAtMTgxMyw2ICYjNDM7MTgzNSw3IEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3Jlb19lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LAogCQkvKiBUT0RPOiBSZXZpZXcgb3RoZXIgZXJyb3JzIGFuZCBwcm9jZXNzIHRoZW0gdG8gbWFjODAyMTEKIAkJICogYXMgYXBwcm9wcmlhdGUuCiAJCSAqLwomIzQzOwkJZHAtJmd0O2RldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX1JFT19HRU5FUklDXSYjNDM7JiM0Mzs7CiAJCWRyb3AgPSB0cnVlOwogCQlicmVhazsKIAl9CkBAIC0xOTM1LDYgJiM0MzsxOTU4LDcgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsCiAJCXJldCA9IGF0aDEya193aWZpN19oYWxfd2JtX2Rlc2NfcGFyc2VfZXJyKGRwLCByeF9kZXNjLAogCQkJCQkJCSAgJmFtcDtlcnJfaW5mbyk7CiAJCWlmIChyZXQpIHsKJiM0MzsJCQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RFU0NfUEFSU0VdJiM0MzsmIzQzOzsKIAkJCWF0aDEya193YXJuKGFiLCAmIzM0O2ZhaWxlZCB0byBwYXJzZSByeCBlcnJvciBpbiB3Ym1fcmVsIHJpbmcgZGVzYyAlZFxuJiMzNDssCiAJCQkJICAgIHJldCk7CiAJCQljb250aW51ZTsKQEAgLTE5NDQsOCAmIzQzOzE5NjgsMTAgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsCiAKIAkJLyogcmV0cnkgbWFudWFsIGRlc2MgcmV0cmlldmFsIGlmIGh3IGNjIGlzIG5vdCBkb25lICovCiAJCWlmICghZGVzY19pbmZvKSB7CiYjNDM7CQkJZHAtJmd0O2RldmljZV9zdGF0cy53Ym1fZXJyLnN3X2Rlc2NfZmFsbGJhY2smIzQzOyYjNDM7OwogCQkJZGVzY19pbmZvID0gYXRoMTJrX2RwX2dldF9yeF9kZXNjKGRwLCBlcnJfaW5mby5jb29raWUpOwogCQkJaWYgKCFkZXNjX2luZm8pIHsKJiM0MzsJCQkJZHAtJmd0O2RldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9HRVRfU1dfREVTQ10mIzQzOyYjNDM7OwogCQkJCWF0aDEya193YXJuKGFiLCAmIzM0O0ludmFsaWQgY29va2llIGluIERQIFdCTSByeCBlcnJvciBkZXNjcmlwdG9yIHJldHJpZXZhbDogMHgleFxuJiMzNDssCiAJCQkJCSAgICBlcnJfaW5mby5jb29raWUpOwogCQkJCWNvbnRpbnVlOwpAQCAtMTk2MSw3ICYjNDM7MTk4Nyw4IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLAogCQlkZXZpY2VfaWQgPSBkZXNjX2luZm8tJmd0O2RldmljZV9pZDsKIAkJcGFydG5lcl9kcCA9IGF0aDEya19kcF9od19ncnBfdG9fZHAoZHBfaHdfZ3JwLCBkZXZpY2VfaWQpOwogCQlpZiAodW5saWtlbHkoIXBhcnRuZXJfZHApKSB7Ci0JCQlkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTsKJiM0MzsJCQlhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSwKJiM0MzsJCQkJCQkJICAgIFdCTV9FUlJfRFJPUF9OVUxMX1BSVE5SX0RQKTsKIAogCQkJLyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXQKIAkJCSAqIGluIHRoZSBwcmV2aW91cyByZWNvcmQsIGNsZWFudXAgc2NhdHRlcl9tc2R1X2xpc3QKQEAgLTIwMDcsNyAmIzQzOzIwMzQsOCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAkJaHdfbGlua19pZCA9IGF0aDEya19kcF9yeF9nZXRfbXNkdV9zcmNfbGluayhwYXJ0bmVyX2RwLSZndDtoYWwsCiAJCQkJCQkJICAgIG1zZHVfZGF0YSk7CiAJCWlmIChod19saW5rX2lkICZndDs9IEFUSDEyS19HUk9VUF9NQVhfUkFESU8pIHsKLQkJCWRldl9rZnJlZV9za2JfYW55KG1zZHUpOwomIzQzOwkJCWF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LAomIzQzOwkJCQkJCQkgICAgV0JNX0VSUl9EUk9QX0lOVl9IV19JRCk7CiAKIAkJCS8qIEluIGFueSBjYXNlIGNvbnRpbnVhdGlvbiBiaXQgaXMgc2V0CiAJCQkgKiBpbiB0aGUgcHJldmlvdXMgcmVjb3JkLCBjbGVhbnVwIHNjYXR0ZXJfbXNkdV9saXN0CkBAIC0yMDY4LDcgJiM0MzsyMDk2LDggQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsCiAJCQlhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0RBVEEsCiAJCQkJICAgJiMzNDtVbmFibGUgdG8gcHJvY2VzcyBXQk0gZXJyb3IgbXNkdSBkdWUgdG8gaW52YWxpZCBodyBsaW5rIGlkICVkIGRldmljZSBpZCAlZFxuJiMzNDssCiAJCQkJICAgaHdfbGlua19pZCwgZGV2aWNlX2lkKTsKLQkJCWRldl9rZnJlZV9za2JfYW55KG1zZHUpOwomIzQzOwkJCWF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LAomIzQzOwkJCQkJCQkgICAgV0JNX0VSUl9EUk9QX05VTExfUFJPQ19EUCk7CiAJCQljb250aW51ZTsKIAkJfQogCkBAIC0yMDc3LDE4ICYjNDM7MjEwNiwyMSBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAogCQlkcF9wZGV2ID0gYXRoMTJrX2RwX3RvX3BkZXZfZHAocGFydG5lcl9kcCwgcGRldl9pZHgpOwogCQlpZiAoIWRwX3BkZXYpIHsKLQkJCWRldl9rZnJlZV9za2JfYW55KG1zZHUpOwomIzQzOwkJCWF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LAomIzQzOwkJCQkJCQkgICAgV0JNX0VSUl9EUk9QX05VTExfUERFVik7CiAJCQljb250aW51ZTsKIAkJfQogCQlhciA9IGF0aDEya19wZGV2X2RwX3RvX2FyKGRwX3BkZXYpOwogCiAJCWlmICghYXIgfHwgIXJjdV9kZXJlZmVyZW5jZShhci0mZ3Q7YWItJmd0O3BkZXZzX2FjdGl2ZVtwZGV2X2lkeF0pKSB7Ci0JCQlkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTsKJiM0MzsJCQlhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSwKJiM0MzsJCQkJCQkJICAgIFdCTV9FUlJfRFJPUF9OVUxMX0FSKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKIAkJaWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX0NBQ19SVU5OSU5HLCAmYW1wO2FyLSZndDtkZXZfZmxhZ3MpKSB7Ci0JCQlkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTsKJiM0MzsJCQlhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSwKJiM0MzsJCQkJCQkJICAgIFdCTV9FUlJfRFJPUF9DQUNfUlVOTklORyk7CiAJCQljb250aW51ZTsKIAkJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMKaW5kZXggNTg3ZDU4ZWVjY2ZhNS4uMTEwNDhjNTY4MzMxMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguYwpAQCAtMTY3LDggJiM0MzsxNjcsMTAgQEAgaW50IGF0aDEya193aWZpN19kcF90eChzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsIHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmEKIAl0eF9yaW5nID0gJmFtcDtkcC0mZ3Q7dHhfcmluZ1t0aS5yaW5nX2lkXTsKIAogCXR4X2Rlc2MgPSBhdGgxMmtfZHBfdHhfYXNzaWduX2J1ZmZlcihkcCwgcG9vbF9pZCk7Ci0JaWYgKCF0eF9kZXNjKQomIzQzOwlpZiAoIXR4X2Rlc2MpIHsKJiM0MzsJCWRwLSZndDtkZXZpY2Vfc3RhdHMudHhfZXJyLnR4YnVmX25hW3Bvb2xfaWRdJiM0MzsmIzQzOzsKIAkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CX0KIAogCWRwX2xpbmtfdmlmID0gYXRoMTJrX2RwX3ZpZl90b19kcF9saW5rX3ZpZigmYW1wO2FodmlmLSZndDtkcF92aWYsIGFydmlmLSZndDtsaW5rX2lkKTsKIApAQCAtNTc1LDE4ICYjNDM7NTc3LDE5IEBAIGF0aDEya19kcF90eF9wcm9jZXNzX2h0dF90eF9jb21wbGV0ZShzdHJ1Y3QgYXRoMTJrX2RwICpkcCwgdm9pZCAqZGVzYywKIHsKIAlzdHJ1Y3QgaHR0X3R4X3dibV9jb21wbGV0aW9uICpzdGF0dXNfZGVzYzsKIAlzdHJ1Y3QgYXRoMTJrX2RwX2h0dF93Ym1fdHhfc3RhdHVzIHRzID0ge307Ci0JZW51bSBoYWxfd2JtX2h0dF90eF9jb21wX3N0YXR1cyB3Ym1fc3RhdHVzOwomIzQzOwllbnVtIGhhbF93Ym1faHR0X3R4X2NvbXBfc3RhdHVzIGh0dF9zdGF0dXM7CiAJdTE2IHBlZXJfaWQ7CiAKIAlzdGF0dXNfZGVzYyA9IGRlc2M7CiAKLQl3Ym1fc3RhdHVzID0gbGUzMl9nZXRfYml0cyhzdGF0dXNfZGVzYy0mZ3Q7aW5mbzAsCiYjNDM7CWh0dF9zdGF0dXMgPSBsZTMyX2dldF9iaXRzKHN0YXR1c19kZXNjLSZndDtpbmZvMCwKIAkJCQkgICBIVFRfVFhfV0JNX0NPTVBfSU5GTzBfU1RBVFVTKTsKLQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLmZ3X3R4X3N0YXR1c1t3Ym1fc3RhdHVzXSYjNDM7JiM0Mzs7CiYjNDM7CWlmIChsaWtlbHkoaHR0X3N0YXR1cyAmbHQ7IE1BWF9GV19UWF9TVEFUVVMpKQomIzQzOwkJZHAtJmd0O2RldmljZV9zdGF0cy5md190eF9zdGF0dXNbaHR0X3N0YXR1c10mIzQzOyYjNDM7OwogCi0Jc3dpdGNoICh3Ym1fc3RhdHVzKSB7CiYjNDM7CXN3aXRjaCAoaHR0X3N0YXR1cykgewogCWNhc2UgSEFMX1dCTV9SRUxfSFRUX1RYX0NPTVBfU1RBVFVTX09LOgotCQl0cy5hY2tlZCA9ICh3Ym1fc3RhdHVzID09IEhBTF9XQk1fUkVMX0hUVF9UWF9DT01QX1NUQVRVU19PSyk7CiYjNDM7CQl0cy5hY2tlZCA9IHRydWU7CiAJCXRzLmFja19yc3NpID0gbGUzMl9nZXRfYml0cyhzdGF0dXNfZGVzYy0mZ3Q7aW5mbzIsCiAJCQkJCSAgICBIVFRfVFhfV0JNX0NPTVBfSU5GTzJfQUNLX1JTU0kpOwogCkBAIC02MDgsNyAmIzQzOzYxMSw3IEBAIGF0aDEya19kcF90eF9wcm9jZXNzX2h0dF90eF9jb21wbGV0ZShzdHJ1Y3QgYXRoMTJrX2RwICpkcCwgdm9pZCAqZGVzYywKIAkJICovCiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWF0aDEya193YXJuKGRwLSZndDthYiwgJiMzNDtVbmtub3duIGh0dCB3Ym0gdHggc3RhdHVzICVkXG4mIzM0Oywgd2JtX3N0YXR1cyk7CiYjNDM7CQlhdGgxMmtfd2FybihkcC0mZ3Q7YWIsICYjMzQ7VW5rbm93biBodHQgdHggc3RhdHVzICVkXG4mIzM0OywgaHR0X3N0YXR1cyk7CiAJCWJyZWFrOwogCX0KIH0KQEAgLTk4NCwxMSAmIzQzOzk4NywxNyBAQCB2b2lkIGF0aDEya193aWZpN19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDEya19kcCAqZHAsIGludCByaW5nX2lkKQogCQkvKiBGaW5kIHRoZSBIQUxfV0JNX1JFTEVBU0VfSU5GTzBfUkVMX1NSQ19NT0RVTEUgdmFsdWUgKi8KIAkJYnVmX3JlbF9zb3VyY2UgPSBsZTMyX2dldF9iaXRzKHR4X3N0YXR1cy0mZ3Q7aW5mbzAsCiAJCQkJCSAgICAgICBIQUxfV0JNX1JFTEVBU0VfSU5GTzBfUkVMX1NSQ19NT0RVTEUpOwotCQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLnR4X3dibV9yZWxfc291cmNlW2J1Zl9yZWxfc291cmNlXSYjNDM7JiM0Mzs7CiYjNDM7CQlpZiAobGlrZWx5KGJ1Zl9yZWxfc291cmNlICZsdDsgSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9NQVgpKQomIzQzOwkJCWRwLSZndDtkZXZpY2Vfc3RhdHMudHhfd2JtX3JlbF9zb3VyY2VbYnVmX3JlbF9zb3VyY2VdJiM0MzsmIzQzOzsKJiM0MzsJCWVsc2UKJiM0MzsJCQlXQVJOX09OX09OQ0UoMSk7CiAKIAkJcmVsX3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHModHhfc3RhdHVzLSZndDtpbmZvMCwKIAkJCQkJICAgSEFMX1dCTV9DT01QTF9UWF9JTkZPMF9UUU1fUkVMRUFTRV9SRUFTT04pOwotCQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLnRxbV9yZWxfcmVhc29uW3JlbF9zdGF0dXNdJiM0MzsmIzQzOzsKJiM0MzsJCWlmIChsaWtlbHkocmVsX3N0YXR1cyAmbHQ7IE1BWF9UUU1fUkVMRUFTRV9SRUFTT04pKQomIzQzOwkJCWRwLSZndDtkZXZpY2Vfc3RhdHMudHFtX3JlbF9yZWFzb25bcmVsX3N0YXR1c10mIzQzOyYjNDM7OwomIzQzOwkJZWxzZQomIzQzOwkJCVdBUk5fT05fT05DRSgxKTsKIAogCQkvKiBSZWxlYXNlIGRlc2NyaXB0b3IgYXMgc29vbiBhcyBleHRyYWN0aW5nIG5lY2Vzc2FyeSBpbmZvCiAJCSAqIHRvIHJlZHVjZSBjb250ZW50aW9uCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9oYWxfcnguYwppbmRleCA0OWM2OTMyODk3MDk0Li42MGU3YTM2MDk3ZjEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaGFsX3J4LmMKQEAgLTMyOSw3ICYjNDM7MzI5LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfaGFsX2Rlc2NfcmVvX3BhcnNlX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAkJCQkgICAgSEFMX1JFT19ERVNUX1JJTkdfSU5GTzBfUFVTSF9SRUFTT04pOwogCWVycl9jb2RlID0gbGUzMl9nZXRfYml0cyhkZXNjLSZndDtpbmZvMCwKIAkJCQkgSEFMX1JFT19ERVNUX1JJTkdfSU5GTzBfRVJST1JfQ09ERSk7Ci0JZHAtJmd0O2RldmljZV9zdGF0cy5yZW9fZXJyb3JbZXJyX2NvZGVdJiM0MzsmIzQzOzsKJiM0MzsJaWYgKGxpa2VseShlcnJfY29kZSAmbHQ7IEhBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYKSkKJiM0MzsJCWRwLSZndDtkZXZpY2Vfc3RhdHMud2JtX2Vyci5yZW9fZXJyb3JbZXJyX2NvZGVdJiM0MzsmIzQzOzsKJiM0MzsJZWxzZQomIzQzOwkJV0FSTl9PTl9PTkNFKDEpOwogCiAJaWYgKHB1c2hfcmVhc29uICE9IEhBTF9SRU9fREVTVF9SSU5HX1BVU0hfUkVBU09OX0VSUl9ERVRFQ1RFRCAmYW1wOyZhbXA7CiAJICAgIHB1c2hfcmVhc29uICE9IEhBTF9SRU9fREVTVF9SSU5HX1BVU0hfUkVBU09OX1JPVVRJTkdfSU5TVFJVQ1RJT04pIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxMDgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIGF0aDEyayBEcml2ZXIgRGVidWdmcyBhbmQgU3RhdHMgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgYXRoMTJrYCB3aXJlbGVzcyBkcml2ZXIuIEl0JiMzOTtzIGEgUXVhbGNvbW0gV2ktRmkgNyBkcml2ZXIsIHNvIGltbWVkaWF0ZWx5IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLiBUaGlzIHBhdGNoIHNlZW1zIGZvY3VzZWQgb24gZW5oYW5jaW5nIGRlYnVnZnMgc3RhdGlzdGljcywgd2hpY2ggaXMgY29tbW9uLiBJIHNlZSBhZGRpdGlvbnMgYW5kIHVwZGF0ZXMgdG8gdGhlIGBhdGgxMmtgIGRlYnVnZnMgaW50ZXJmYWNlLiBTcGVjaWZpY2FsbHksIHdlJiMzOTt2ZSBnb3QgbW9yZSBzdGF0cyBiZWluZyBkdW1wZWQsIGEgd2F5IHRvIHJlc2V0IHRoZSBzdGF0cyB2aWEgYSB3cml0ZSBoYW5kbGVyIChgZWNobyByZXNldCAmZ3Q7IGRldmljZV9kcF9zdGF0c2ApLCBhbmQgZmlsZSBwZXJtaXNzaW9uIGNoYW5nZXMuCgpUaGUgY29yZSBvZiB0aGUgcGF0Y2ggaW52b2x2ZXMgYWRkaW5nIG5ldyBmaWVsZHMgdG8gdmFyaW91cyBgc3RydWN0YHMgcmVsYXRlZCB0byBkZXZpY2Ugc3RhdGlzdGljcyAoYGF0aDEya19kZXZpY2VfZHBfdHhfZXJyX3N0YXRzYCwgYGF0aDEya19kZXZpY2VfZHBfc3RhdHNgLCBhbmQgYGF0aDEya19kZXZpY2VfZHBfcnhfd2JtX2Vycl9zdGF0c2ApLiBUaGVyZSBhcmUgYWxzbyB1cGRhdGVzIHRvIHNldmVyYWwgZnVuY3Rpb25zIChgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3NfcmVjZWl2ZWRfcGFja2V0c2AsIGBhdGgxMmtfd2lmaTdfZHBfdHhgLCBldGMuKSB0byBpbmNyZW1lbnQgdGhlc2UgbmV3IHN0YXRzLiBJbXBvcnRhbnRseSwgdGhlcmUgYXJlIG5ldyBib3VuZHMgY2hlY2tzLCBhbmQgYFdBUk5fT05fT05DRWAgY2FsbHMsIHdoaWNoIGlzIGEgZ29vZCBzYWZldHkgbWVhc3VyZS4KClRoZSBjcnVjaWFsIGFkZGl0aW9uIGlzIHRoZSBib3VuZHMgY2hlY2tpbmcgb24gYXJyYXkgYWNjZXNzZXMsIGxpa2UgdGhpczoKCmBgYGMKLQkJZHAtJmd0O2RldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0mIzQzOyYjNDM7OwomIzQzOwkJaWYgKGxpa2VseShidWZfcmVsX3NvdXJjZSAmbHQ7IEhBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYKSkKJiM0MzsJCQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLnR4X3dibV9yZWxfc291cmNlW2J1Zl9yZWxfc291cmNlXSYjNDM7JiM0Mzs7CiYjNDM7CQllbHNlCiYjNDM7CQkJV0FSTl9PTl9PTkNFKDEpOwpgYGAKClRoaXMgaXMgdGhlIGtleSBwb2ludC4gV2UmIzM5O3JlIHByZXZlbnRpbmcgb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3NlcyB3aXRoaW4gdGhlIHN0YXRpc3RpY3MgY29sbGVjdGlvbiwgd2hpY2ggY291bGQgYmUgZXhwbG9pdGVkIGJ5IG1hbGljaW91cyBmaXJtd2FyZSBvciBoYXJkd2FyZSBkZXNjcmlwdG9ycy4gVGhpcyBwcmV2ZW50cyBtZW1vcnkgY29ycnVwdGlvbi4gVGhlIHJlc2V0IGZ1bmN0aW9uYWxpdHkgdmlhIGRlYnVnZnMgaXMganVzdCBhIGNvbnZlbmllbmNlLgoKTm93LCB0aGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgc29tZXRoaW5nIHRvIGZ1eno/IFRoZSBwYXRjaCAqYWRkcyogYm91bmRzIGNoZWNrcywgYW5kIGl0IHByb3ZpZGVzIGEgcmVzZXQgaW50ZXJmYWNlLiBUaGUgYm91bmRzIGNoZWNrcyBpbXByb3ZlIHNlY3VyaXR5IGFuZCBzdGFiaWxpdHkgYnV0IGFyZSBub3QgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdHJhZGl0aW9uYWwgc2Vuc2UuIFRoZSByZXNldCBpcyBub3QgdHlwaWNhbGx5IGNvbnNpZGVyZWQgY3JpdGljYWwuCgpHaXZlbiB0aGF0IGBhdGgxMmtgIGlzIGEgd2lyZWxlc3MgZHJpdmVyLCBpdCBpbnRlcmFjdHMgd2l0aCBmaXJtd2FyZS4gVGhlIG1vc3QgbGlrZWx5IGF0dGFjayBzdXJmYWNlIGlzIHRoZSBmaXJtd2FyZSBpbnRlcmZhY2UuIFRvIHByb3Blcmx5IGZ1enogdGhlIGRyaXZlciwgSSYjMzk7ZCBsaWtlbHkgbmVlZCB0byBnZW5lcmF0ZSBtYWxpY2lvdXMgZmlybXdhcmUgZGVzY3JpcHRvcnMuIFRoaXMgbWVhbnMgSSYjMzk7ZCBuZWVkIGVpdGhlciBhY3R1YWwgaGFyZHdhcmUgb3IgYSBoaWdoLWZpZGVsaXR5IFBDSS9BSEIgZW11bGF0aW9uLiBDYW4gYGF0aDEya2AgYmUgcmVhbGlzdGljYWxseSBmdXp6ZWQgaW4gUUVNVT8gUHJvYmFibHkgbm90LiBJdCYjMzk7cyBkZXNpZ25lZCBmb3Igc3BlY2lmaWMgUXVhbGNvbW0gaGFyZHdhcmUuIEkgaGF2ZSB0byBjaGVjayB0aGUgcHJvbXB0JiMzOTtzIGNvbmRpdGlvbiB0aG91Z2guCgpUaGUgcHJvbXB0IHNheXMgdG8gcmV0dXJuICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiAtIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OwoKYGF0aDEya2AgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgV2ktRmkgZHJpdmVyIGFuZCBpcyBkZWZpbml0ZWx5IGdvaW5nIHRvIG5lZWQgc3BlY2lmaWMgUXVhbGNvbW0gaGFyZHdhcmUuIEdpdmVuIHRoZSBwcm92aWRlZCBwcm9tcHQsIHRoaXMgcGF0Y2ggaXMgKipub3QqKiB3b3J0aCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDE4OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTE4MTI9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIF9fbWF5YmVfdW51c2VkIGF0aDEya19wY2lfcG1fb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTgxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTgxOTppbnQgYXRoMTJrX3BjaV9yZWdpc3Rlcl9kcml2ZXIoY29uc3QgZW51bSBhdGgxMmtfZGV2aWNlX2ZhbWlseSBkZXZpY2VfaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MjAtXHRcdFx0ICAgICAgIHN0cnVjdCBhdGgxMmtfcGNpX2RyaXZlciAqZHJpdmVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTg0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTg0NjpcdHJldHVybiBwY2lfcmVnaXN0ZXJfZHJpdmVyKHBjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xODQ3LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTg0ODpFWFBPUlRfU1lNQk9MKGF0aDEya19wY2lfcmVnaXN0ZXJfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTg0OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oPTE3Nj12b2lkIGF0aDEya19wY2lfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaDoxNzc6aW50IGF0aDEya19wY2lfcmVnaXN0ZXJfZHJpdmVyKGNvbnN0IGVudW0gYXRoMTJrX2RldmljZV9mYW1pbHkgZGV2aWNlX2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaC0xNzgtXHRcdFx0ICAgICAgIHN0cnVjdCBhdGgxMmtfcGNpX2RyaXZlciAqZHJpdmVyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jPTE5Nz1pbnQgYXRoMTJrX3dpZmk3X3BjaV9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy0yMDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L3BjaS5jOjIwMTpcdHJldCA9IGF0aDEya19wY2lfcmVnaXN0ZXJfZHJpdmVyKEFUSDEyS19ERVZJQ0VfRkFNSUxZX1dJRkk3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy0yMDItXHRcdFx0XHRcdCBcdTAwMjZhdGgxMmtfd2lmaTdfcGNpX2RyaXZlcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMTg6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1MTUKCQkJCQkJCW91dHB1dDogOTMKCQkJCQkJCXRob3VnaHRzOiAxMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYXRoMTJrIERyaXZlciBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBZZXAsIHRoZSBgYXRoMTJrYCBkcml2ZXIuLi4gdGhhdCYjMzk7cyBRdWFsY29tbSYjMzk7cyBQQ0llIGRyaXZlciBmb3IgdGhlaXIgV2ktRmkgNyBzaWxpY29uLiBSaWdodCBhd2F5LCBJIGtub3cgdGhpcyBpcyBnb2luZyB0byBiZSBhIGhhcmR3YXJlLWRlcGVuZGVudCBwaWVjZTsgaXQmIzM5O3Mgbm90IHNvbWV0aGluZyB5b3UgY2FuIGp1c3Qgc3BpbiB1cCBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuIFRoZSBjb3JlIG9mIHRoaXMgcHJvcG9zZWQgcGF0Y2ggaXMgYWRkaW5nIGRlYnVnZnMgc3RhdGlzdGljcyBhbmQgc29tZSBhc3NvY2lhdGVkIGJvdW5kcyBjaGVja3MuIFRoYXQmIzM5O3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgcmVhbGx5LiBHaXZlbiB0aGF0IHRoZSBkcml2ZXIgbmVlZHMgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIHRoZSBjaGFuZ2VzIGFyZSBtb3N0bHkgZm9jdXNlZCBvbiBzdGF0aXN0aWNzIGdhdGhlcmluZyBhbmQgdmFsaWRhdGlvbiwgSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIG1ha2UgYSBjYWxsIGhlcmUuCgpJJiMzOTttIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggaW1wYWN0cyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIFdpLUZpIGRyaXZlciwgdGhlIGBhdGgxMmtgLCB3aGljaCBuZWNlc3NpdGF0ZXMgcGh5c2ljYWwgaGFyZHdhcmUgZm9yIG9wZXJhdGlvbiBhbmQgd2hpY2ggaXNuJiMzOTt0IGVtdWxhdGVkIHdpdGhpbiBRRU1VLiBGdXJ0aGVyLCB0aGUgcGF0Y2gmIzM5O3MgY2VudHJhbCBtb2RpZmljYXRpb25zIHJlbGF0ZSB0byB0aGUgYWRkaXRpb24gb2YgZGVidWdmcyBzdGF0aXN0aWNzIGFuZCB0aGVpciBhc3NvY2lhdGVkIGJvdW5kcyBjaGVja3MuIFRoZXNlIHR5cGVzIG9mIGNoYW5nZXMgZG9uJiMzOTt0IHByb3ZpZGUgYSBmcnVpdGZ1bCBlbnZpcm9ubWVudCBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIFdpLUZpIGRyaXZlciByZXF1aXJpbmcgcGh5c2ljYWwgUXVhbGNvbW0gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBwcmltYXJpbHkgY29uc2lzdCBvZiBhZGRpbmcgZGVidWdmcyBzdGF0aXN0aWNzIGFuZCBib3VuZHMgY2hlY2tzIGZvciB0aG9zZSBzdGF0aXN0aWNzLCB3aGljaCBhcmUgbm90IGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBXaS1GaSBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIFF1YWxjb21tIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgcHJpbWFyaWx5IGNvbnNpc3Qgb2YgYWRkaW5nIGRlYnVnZnMgc3RhdGlzdGljcyBhbmQgYm91bmRzIGNoZWNrcyBmb3IgdGhvc2Ugc3RhdGlzdGljcywgd2hpY2ggYXJlIG5vdCBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlcyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAxODoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6MTY6MjUuNzk4MzcyODM4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwMjY4NjU0MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBXaS1GaSBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIFF1YWxjb21tIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgcHJpbWFyaWx5IGNvbnNpc3Qgb2YgYWRkaW5nIGRlYnVnZnMgc3RhdGlzdGljcyBhbmQgYm91bmRzIGNoZWNrcyBmb3IgdGhvc2Ugc3RhdGlzdGljcywgd2hpY2ggYXJlIG5vdCBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6MTY6MjUuNzk4Mzc2OTg4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjUxOTg0NjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjFkOGMxOTM3MGFmMTQyZTExMTNjZDZmOTZjNzYwZTNlZmM4YjgxOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAxMCAxODoxNjoyNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jXFxuaW5kZXggZDU0OTk1YjdhZGIyNy4uZDJkODlhN2UzNDBkZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jXFxuQEAgLTEwNzEsNiArMTA3MSwyMCBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4gXFx0XFx0W0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfUE5fRVJSX0ZMQUdfU0VUXSA9IFxcXCJQTiBlcnJcXFwiLFxcbiBcXHRcXHRbSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9ERVNDX0JMT0NLRURdID0gXFxcIkRlc2MgYmxvY2tlZFxcXCJ9O1xcbiBcXG4rXFx0c3RhdGljIGNvbnN0IGNoYXIgKndibV9yeF9kcm9wW1dCTV9FUlJfRFJPUF9NQVhdID0ge1xcbitcXHRcXHRbV0JNX0VSUl9HRVRfU1dfREVTQ10gPSBcXFwiU1cgZGVzYyBlcnJvclxcXCIsXFxuK1xcdFxcdFtXQk1fRVJSX0RFU0NfUEFSU0VdID0gXFxcIkRlc2MgcGFyc2UgZXJyb3JcXFwiLFxcbitcXHRcXHRbV0JNX0VSUl9EUk9QX0lOVl9IV19JRF0gPSBcXFwiSW52YWxpZCBodyBpZFxcXCIsXFxuK1xcdFxcdFtXQk1fRVJSX0RST1BfTlVMTF9QUlROUl9EUF0gPSBcXFwiTnVsbCBQYXJ0bmVyIGRwXFxcIixcXG4rXFx0XFx0W1dCTV9FUlJfRFJPUF9OVUxMX1BST0NfRFBdID0gXFxcIlByb2Nlc3MgTnVsbCBQYXJ0bmVyIGRwXFxcIixcXG4rXFx0XFx0W1dCTV9FUlJfRFJPUF9OVUxMX1BERVZdID0gXFxcIk51bGwgUGRldlxcXCIsXFxuK1xcdFxcdFtXQk1fRVJSX0RST1BfTlVMTF9BUl0gPSBcXFwiTnVsbCBhclxcXCIsXFxuK1xcdFxcdFtXQk1fRVJSX0RST1BfQ0FDX1JVTk5JTkddID0gXFxcIkNBQyBSdW5uaW5nXFxcIixcXG4rXFx0XFx0W1dCTV9FUlJfRFJPUF9TR10gPSBcXFwiU2NhdHRlciBHYXRoZXJcXFwiLFxcbitcXHRcXHRbV0JNX0VSUl9EUk9QX0lOVl9OV0lGSV9IRFJdID0gXFxcIkludmFsaWQgTldpZmkgSGRyIGxlblxcXCIsXFxuK1xcdFxcdFtXQk1fRVJSX0RST1BfUkVPX0dFTkVSSUNdICA9IFxcXCJSRU8gR2VuZXJpY1xcXCIsXFxuK1xcdFxcdFtXQk1fRVJSX0RST1BfUlhETUFfR0VORVJJQ10gPSBcXFwiUlhETUEgR2VuZXJpY1xcXCJ9O1xcbitcXG4gXFx0c3RhdGljIGNvbnN0IGNoYXIgKndibV9yZWxfc3JjW0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYXSA9IHtcXG4gXFx0XFx0W0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfVFFNXSA9IFxcXCJUUU1cXFwiLFxcbiBcXHRcXHRbSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9SWERNQV0gPSBcXFwiUnhkbWFcXFwiLFxcbkBAIC0xMDk1LDEzICsxMTA5LDMyIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWDsgaSsrKVxcbiBcXHRcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXFxcIiVzOiAldVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0IHJ4ZG1hX2VycltpXSwgZGV2aWNlX3N0YXRzLVxcdTAwM2VyeGRtYV9lcnJvcltpXSk7XFxuK1xcdFxcdFxcdFxcdCByeGRtYV9lcnJbaV0sIGRldmljZV9zdGF0cy1cXHUwMDNld2JtX2Vyci5yeGRtYV9lcnJvcltpXSk7XFxuIFxcbiBcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXFxcIlxcXFxuUkVPIGVycm9yczpcXFxcblxcXCIpO1xcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEhBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYOyBpKyspXFxuIFxcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwiJXM6ICV1XFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHQgcmVvX2VycltpXSwgZGV2aWNlX3N0YXRzLVxcdTAwM2VyZW9fZXJyb3JbaV0pO1xcbitcXHRcXHRcXHRcXHQgcmVvX2VycltpXSwgZGV2aWNlX3N0YXRzLVxcdTAwM2V3Ym1fZXJyLnJlb19lcnJvcltpXSk7XFxuK1xcbitcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXFxcIlxcXFxuV0JNIFJ4IERyb3AgQ291bnQ6XFxcXG5cXFwiKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFdCTV9FUlJfRFJPUF9NQVg7IGkrKylcXG4rXFx0XFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFxcXCIlczogJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCB3Ym1fcnhfZHJvcFtpXSwgZGV2aWNlX3N0YXRzLVxcdTAwM2V3Ym1fZXJyLmRyb3BbaV0pO1xcbitcXG4rXFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sXFxuK1xcdFxcdFxcdCBcXFwiXFxcXG5XQk0gU1cgZGVzYyBmYWxsYmFjayAoSFcgQ0Mgbm90IGRvbmUpOiAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0IGRldmljZV9zdGF0cy1cXHUwMDNld2JtX2Vyci5zd19kZXNjX2ZhbGxiYWNrKTtcXG4rXFxuK1xcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwiXFxcXG5SRU8gc2VudCB0byBzdGFja1xcXFxuXFxcIik7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBEUF9SRU9fRFNUX1JJTkdfTUFYOyBpKyspIHtcXG4rXFx0XFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFxcXCJyaW5nJWQ6XFxcIiwgaSk7XFxuK1xcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBhYi1cXHUwMDNlYWctXFx1MDAzZW51bV9kZXZpY2VzOyBqKyspXFxuK1xcdFxcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLFxcbitcXHRcXHRcXHRcXHRcXHQgXFxcIlxcXFx0JWQ6JXVcXFwiLCBqLFxcbitcXHRcXHRcXHRcXHRcXHQgZGV2aWNlX3N0YXRzLVxcdTAwM2VzZW50X3RvX3N0YWNrW2ldW2pdKTtcXG4rXFx0XFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFxcXCJcXFxcblxcXCIpO1xcbitcXHR9XFxuIFxcbiBcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXFxcIlxcXFxuSEFMIFJFTyBlcnJvcnM6XFxcXG5cXFwiKTtcXG4gXFxuQEAgLTExMTcsNiArMTE1MCwxMSBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4gXFx0XFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFxcXCJyaW5nJWQ6ICV1XFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgaSwgZGV2aWNlX3N0YXRzLVxcdTAwM2V0eF9lcnIuZGVzY19uYVtpXSk7XFxuIFxcbitcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXFxcIlxcXFxuVFggRGVzY3JpcHRvciBQb29sIEFsbG9jIEZhaWx1cmVzOlxcXFxuXFxcIik7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBVEgxMktfSFdfTUFYX1FVRVVFUzsgaSsrKVxcbitcXHRcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXFxcInBvb2wlZDogJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCBpLCBkZXZpY2Vfc3RhdHMtXFx1MDAzZXR4X2Vyci50eGJ1Zl9uYVtpXSk7XFxuK1xcbiBcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbixcXG4gXFx0XFx0XFx0IFxcXCJcXFxcbk1pc2MgVHJhbnNtaXQgRmFpbHVyZXM6ICVkXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHQgYXRvbWljX3JlYWQoXFx1MDAyNmRldmljZV9zdGF0cy1cXHUwMDNldHhfZXJyLm1pc2NfZmFpbCkpO1xcbkBAIC0xMTgxLDcgKzEyMTksNyBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4gXFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFxcXCJcXFxcblJFTyBSeCBSZWNlaXZlZDpcXFxcblxcXCIpO1xcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVg7IGkrKykge1xcbi1cXHRcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXFxcIlJpbmclZDpcXFwiLCBpICsgMSk7XFxuK1xcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwicmluZyVkOlxcXCIsIGkpO1xcbiBcXG4gXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIGFiLVxcdTAwM2VhZy1cXHUwMDNlbnVtX2RldmljZXM7IGorKykge1xcbiBcXHRcXHRcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbixcXG5AQCAtMTIxNSw4ICsxMjUzLDQyIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbitzdGF0aWMgc3NpemVfdFxcbithdGgxMmtfZGVidWdmc193cml0ZV9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXFxuK1xcdFxcdFxcdFxcdCAgICAgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxcbitcXHRcXHRcXHRcXHQgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxcbit7XFxuK1xcdHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuK1xcdHN0cnVjdCBhdGgxMmtfZHAgKmRwID0gYXRoMTJrX2FiX3RvX2RwKGFiKTtcXG4rXFx0c3RydWN0IGF0aDEya19kZXZpY2VfZHBfc3RhdHMgKmRldmljZV9zdGF0cyA9IFxcdTAwMjZkcC1cXHUwMDNlZGV2aWNlX3N0YXRzO1xcbitcXHRjaGFyIGJ1ZlsyMF0gPSB7fTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdC8qIGZpbHRlciBwYXJ0aWFsIHdyaXRlcyBhbmQgaW52YWxpZCBjb21tYW5kcyAqL1xcbitcXHRpZiAoKnBwb3MgIT0gMCB8fCBjb3VudCBcXHUwMDNlPSBzaXplb2YoYnVmKSB8fCBjb3VudCA9PSAwKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdHJldCA9IHNpbXBsZV93cml0ZV90b19idWZmZXIoYnVmLCBzaXplb2YoYnVmKSAtIDEsIHBwb3MsIHVzZXJfYnVmLCBjb3VudCk7XFxuK1xcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0LyogZHJvcCB0aGUgcG9zc2libGUgJ1xcXFxuJyBmcm9tIHRoZSBlbmQgKi9cXG4rXFx0aWYgKGJ1ZlsqcHBvcyAtIDFdID09ICdcXFxcbicpXFxuK1xcdFxcdGJ1ZlsqcHBvcyAtIDFdID0gJ1xcXFwwJztcXG4rXFxuK1xcdGlmICghc3RyY21wKGJ1ZiwgXFxcInJlc2V0XFxcIikpIHtcXG4rXFx0XFx0bWVtc2V0KGRldmljZV9zdGF0cywgMCwgc2l6ZW9mKCpkZXZpY2Vfc3RhdHMpKTtcXG4rXFx0XFx0cmV0dXJuIGNvdW50O1xcbitcXHR9XFxuK1xcbitcXHRhdGgxMmtfd2FybihhYiwgXFxcInVuc3VwcG9ydGVkIGNvbW1hbmQ6ICVzXFxcXG5cXFwiLCBidWYpO1xcbitcXG4rXFx0cmV0dXJuIC1FSU5WQUw7XFxuK31cXG4rXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfZGV2aWNlX2RwX3N0YXRzID0ge1xcbiBcXHQucmVhZCA9IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzLFxcbitcXHQud3JpdGUgPSBhdGgxMmtfZGVidWdmc193cml0ZV9kZXZpY2VfZHBfc3RhdHMsXFxuIFxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuIFxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbiBcXHQubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssXFxuQEAgLTEyMjcsNyArMTI5OSw3IEBAIHZvaWQgYXRoMTJrX2RlYnVnZnNfcGRldl9jcmVhdGUoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4gXFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwic2ltdWxhdGVfZndfY3Jhc2hcXFwiLCAwNjAwLCBhYi1cXHUwMDNlZGVidWdmc19zb2MsIGFiLFxcbiBcXHRcXHRcXHQgICAgXFx1MDAyNmZvcHNfc2ltdWxhdGVfZndfY3Jhc2gpO1xcbiBcXG4tXFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwiZGV2aWNlX2RwX3N0YXRzXFxcIiwgMDQwMCwgYWItXFx1MDAzZWRlYnVnZnNfc29jLCBhYixcXG4rXFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwiZGV2aWNlX2RwX3N0YXRzXFxcIiwgMDYwMCwgYWItXFx1MDAzZWRlYnVnZnNfc29jLCBhYixcXG4gXFx0XFx0XFx0ICAgIFxcdTAwMjZmb3BzX2RldmljZV9kcF9zdGF0cyk7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxcbmluZGV4IGJlZjBmMmJhMDU2MGYuLjI4OWFlZGU2ZGFiYjYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXFxuQEAgLTcsNiArNyw3IEBAXFxuICNpZm5kZWYgQVRIMTJLX0RQX0hcXG4gI2RlZmluZSBBVEgxMktfRFBfSFxcbiBcXG4rI2luY2x1ZGUgXFxcImRwX3N0YXRzLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJody5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiZHBfaHR0LmhcXFwiXFxuICNpbmNsdWRlIFxcXCJkcF9jbW4uaFxcXCJcXG5AQCAtNDI5LDE5ICs0MzAsMjcgQEAgc3RydWN0IGF0aDEya19kcF9hcmNoX29wcyB7XFxuIHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3R4X2Vycl9zdGF0cyB7XFxuIFxcdC8qIFRDTCBSaW5nIERlc2NyaXB0b3IgdW5hdmFpbGFibGUgKi9cXG4gXFx0dTMyIGRlc2NfbmFbRFBfVENMX05VTV9SSU5HX01BWF07XFxuK1xcdC8qIFRYIGRlc2NyaXB0b3IgcG9vbCBleGhhdXN0ZWQgKHBlciBwb29sX2lkIC8gdHJhZmZpYyBjbGFzcykgKi9cXG4rXFx0dTMyIHR4YnVmX25hW0FUSDEyS19IV19NQVhfUVVFVUVTXTtcXG4gXFx0LyogT3RoZXIgZmFpbHVyZXMgZHVyaW5nIGRwX3R4IGR1ZSB0byBtZW0gYWxsb2NhdGlvbiBmYWlsdXJlXFxuIFxcdCAqIGlkciB1bmF2YWlsYWJsZSBldGMuXFxuIFxcdCAqL1xcbiBcXHRhdG9taWNfdCBtaXNjX2ZhaWw7XFxuIH07XFxuIFxcbitzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9yeF93Ym1fZXJyX3N0YXRzIHtcXG4rXFx0dTMyIHJ4ZG1hX2Vycm9yW0hBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWF07XFxuK1xcdHUzMiByZW9fZXJyb3JbSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVhdO1xcbitcXHR1MzIgZHJvcFtXQk1fRVJSX0RST1BfTUFYXTtcXG4rXFx0dTMyIHN3X2Rlc2NfZmFsbGJhY2s7XFxuK307XFxuK1xcbiBzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9zdGF0cyB7XFxuIFxcdHUzMiBlcnJfcmluZ19wa3RzO1xcbiBcXHR1MzIgaW52YWxpZF9yYm07XFxuLVxcdHUzMiByeGRtYV9lcnJvcltIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVhdO1xcbi1cXHR1MzIgcmVvX2Vycm9yW0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYXTtcXG4gXFx0dTMyIGhhbF9yZW9fZXJyb3JbRFBfUkVPX0RTVF9SSU5HX01BWF07XFxuIFxcdHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3R4X2Vycl9zdGF0cyB0eF9lcnI7XFxuK1xcdHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3J4X3dibV9lcnJfc3RhdHMgd2JtX2VycjtcXG4gXFx0dTMyIHJlb19yeFtEUF9SRU9fRFNUX1JJTkdfTUFYXVtBVEgxMktfTUFYX0RFVklDRVNdO1xcbiBcXHR1MzIgcnhfd2JtX3JlbF9zb3VyY2VbSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9NQVhdW0FUSDEyS19NQVhfREVWSUNFU107XFxuIFxcdHUzMiB0cW1fcmVsX3JlYXNvbltNQVhfVFFNX1JFTEVBU0VfUkVBU09OXTtcXG5AQCAtNDUwLDYgKzQ1OSw3IEBAIHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3N0YXRzIHtcXG4gXFx0dTMyIHR4X2VucXVldWVkW0RQX1RDTF9OVU1fUklOR19NQVhdO1xcbiBcXHR1MzIgdHhfY29tcGxldGVkW0RQX1RDTF9OVU1fUklOR19NQVhdO1xcbiBcXHR1MzIgcmVvX2V4Y2VwX21zZHVfYnVmX3R5cGU7XFxuK1xcdHUzMiBzZW50X3RvX3N0YWNrW0RQX1JFT19EU1RfUklOR19NQVhdW0FUSDEyS19NQVhfREVWSUNFU107XFxuIH07XFxuIFxcbiBzdHJ1Y3QgYXRoMTJrX2RwIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9zdGF0cy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9zdGF0cy5oXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi4wNGQzODkyYWNmZjMyXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfc3RhdHMuaFxcbkBAIC0wLDAgKzEsMjUgQEBcXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhciAqL1xcbisvKlxcbisgKiBDb3B5cmlnaHQgKGMpIFF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cXG4rICovXFxuK1xcbisjaWZuZGVmIEFUSDEyS19EUF9TVEFUU19IXFxuKyNkZWZpbmUgQVRIMTJLX0RQX1NUQVRTX0hcXG4rXFxuK2VudW0gYXRoMTJrX3dibV9lcnJfZHJvcF9yZWFzb24ge1xcbitcXHRXQk1fRVJSX0dFVF9TV19ERVNDLFxcbitcXHRXQk1fRVJSX0RFU0NfUEFSU0UsXFxuK1xcdFdCTV9FUlJfRFJPUF9JTlZfSFdfSUQsXFxuK1xcdFdCTV9FUlJfRFJPUF9OVUxMX1BSVE5SX0RQLFxcbitcXHRXQk1fRVJSX0RST1BfTlVMTF9QUk9DX0RQLFxcbitcXHRXQk1fRVJSX0RST1BfTlVMTF9QREVWLFxcbitcXHRXQk1fRVJSX0RST1BfTlVMTF9BUixcXG4rXFx0V0JNX0VSUl9EUk9QX0NBQ19SVU5OSU5HLFxcbitcXHRXQk1fRVJSX0RST1BfU0csXFxuK1xcdFdCTV9FUlJfRFJPUF9JTlZfTldJRklfSERSLFxcbitcXHRXQk1fRVJSX0RST1BfUkVPX0dFTkVSSUMsXFxuK1xcdFdCTV9FUlJfRFJPUF9SWERNQV9HRU5FUklDLFxcbitcXHRXQk1fRVJSX0RST1BfTUFYLFxcbit9O1xcbitcXG4rI2VuZGlmIC8qIEFUSDEyS19EUF9TVEFUU19IICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguY1xcbmluZGV4IDk1ZDg3ZGQ2Nzg3MmYuLmQ5NmQ4MzAxNTY1Y2IgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jXFxuQEAgLTEyLDYgKzEyLDE1IEBAXFxuICNpbmNsdWRlIFxcXCJoYWxfd2NuNzg1MC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiaGFsX3FjYzIwNzIuaFxcXCJcXG4gXFxuK3N0YXRpYyB2b2lkXFxuK2F0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxcbitcXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKm1zZHUsXFxuK1xcdFxcdFxcdFxcdCAgICBlbnVtIGF0aDEya193Ym1fZXJyX2Ryb3BfcmVhc29uIGRyb3BfcmVhc29uKVxcbit7XFxuK1xcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW2Ryb3BfcmVhc29uXSsrO1xcbitcXHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcXG4rfVxcbitcXG4gc3RhdGljIHUxNiBhdGgxMmtfd2lmaTdfZHBfcnhfZ2V0X3BlZXJfaWQoc3RydWN0IGF0aDEya19kcCAqZHAsXFxuIFxcdFxcdFxcdFxcdFxcdCAgZW51bSBhdGgxMmtfcGVlcl9tZXRhZGF0YV92ZXJzaW9uIHZlcixcXG4gXFx0XFx0XFx0XFx0XFx0ICBfX2xlMzIgcGVlcl9tZXRhZGF0YSlcXG5AQCAtNjQyLDcgKzY1MSwxMCBAQCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc19yZWNlaXZlZF9wYWNrZXRzKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxcbiBcXHRcXHRcXHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdH1cXG4tXFxuK1xcdFxcdGlmIChsaWtlbHkocmluZ19pZCBcXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVgpKVxcbitcXHRcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLnNlbnRfdG9fc3RhY2tbcmluZ19pZF1bcGFydG5lcl9kcC1cXHUwMDNlZGV2aWNlX2lkXSsrO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFdBUk5fT05fT05DRSgxKTtcXG4gXFx0XFx0YXRoMTJrX2RwX3J4X2RlbGl2ZXJfbXNkdShkcF9wZGV2LCBuYXBpLCBtc2R1LCBcXHUwMDI2cnhfaW5mbyk7XFxuIFxcdH1cXG4gXFxuQEAgLTE2MTQsNiArMTYyNiw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X2hfbnVsbF9xX2Rlc2Moc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxcbiBcXHRcXHQvKiBGaXJzdCBidWZmZXIgd2lsbCBiZSBmcmVlZCBieSB0aGUgY2FsbGVyLCBzbyBkZWR1Y3QgaXQncyBsZW5ndGggKi9cXG4gXFx0XFx0bXNkdV9sZW4gPSBtc2R1X2xlbiAtIChEUF9SWF9CVUZGRVJfU0laRSAtIGhhbF9yeF9kZXNjX3N6KTtcXG4gXFx0XFx0YXRoMTJrX3dpZmk3X2RwX3J4X251bGxfcV9kZXNjX3NnX2Ryb3AoZHAsIG1zZHVfbGVuLCBtc2R1X2xpc3QpO1xcbitcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfU0ddKys7XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuIFxcbkBAIC0xNjQ5LDggKzE2NjIsMTAgQEAgc3RhdGljIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9udWxsX3FfZGVzYyhzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXFxuIFxcdFxcdHNrYl9wdXQobXNkdSwgaGFsX3J4X2Rlc2Nfc3ogKyBsM3BhZF9ieXRlcyArIG1zZHVfbGVuKTtcXG4gXFx0XFx0c2tiX3B1bGwobXNkdSwgaGFsX3J4X2Rlc2Nfc3ogKyBsM3BhZF9ieXRlcyk7XFxuIFxcdH1cXG4tXFx0aWYgKHVubGlrZWx5KCFhdGgxMmtfZHBfcnhfY2hlY2tfbndpZmlfaGRyX2xlbl92YWxpZChkcCwgbXNkdSwgcnhfaW5mbykpKVxcbitcXHRpZiAodW5saWtlbHkoIWF0aDEya19kcF9yeF9jaGVja19ud2lmaV9oZHJfbGVuX3ZhbGlkKGRwLCBtc2R1LCByeF9pbmZvKSkpIHtcXG4rXFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX0lOVl9OV0lGSV9IRFJdKys7XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuIFxcbiBcXHRhdGgxMmtfZHBfcnhfaF9wcGR1KGRwX3BkZXYsIHJ4X2luZm8pO1xcbiBcXHRyZXQgPSBhdGgxMmtfd2lmaTdfZHBfcnhfaF9tcGR1KGRwX3BkZXYsIG1zZHUsIHJ4X2luZm8pO1xcbkBAIC0xNzYzLDcgKzE3NzgsMTAgQEAgc3RhdGljIGJvb2wgYXRoMTJrX3dpZmk3X2RwX3J4X2hfcnhkbWFfZXJyKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcXG4gXFx0c3RydWN0IGF0aDEya19za2JfcnhjYiAqcnhjYiA9IEFUSDEyS19TS0JfUlhDQihtc2R1KTtcXG4gXFx0Ym9vbCBkcm9wID0gZmFsc2U7XFxuIFxcbi1cXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLnJ4ZG1hX2Vycm9yW3J4Y2ItXFx1MDAzZWVycl9jb2RlXSsrO1xcbitcXHRpZiAobGlrZWx5KHJ4Y2ItXFx1MDAzZWVycl9jb2RlIFxcdTAwM2MgSEFMX1JFT19FTlRSX1JJTkdfUlhETUFfRUNPREVfTUFYKSlcXG4rXFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLnJ4ZG1hX2Vycm9yW3J4Y2ItXFx1MDAzZWVycl9jb2RlXSsrO1xcbitcXHRlbHNlXFxuK1xcdFxcdFdBUk5fT05fT05DRSgxKTtcXG4gXFxuIFxcdHN3aXRjaCAocnhjYi1cXHUwMDNlZXJyX2NvZGUpIHtcXG4gXFx0Y2FzZSBIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9VTkFVVEhfV0RTX0VSUjpcXG5AQCAtMTc4MCw2ICsxNzk4LDcgQEAgc3RhdGljIGJvb2wgYXRoMTJrX3dpZmk3X2RwX3J4X2hfcnhkbWFfZXJyKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcXG4gXFx0XFx0LyogVE9ETzogUmV2aWV3IG90aGVyIHJ4ZG1hIGVycm9yIGNvZGUgdG8gY2hlY2sgaWYgYW55dGhpbmcgaXNcXG4gXFx0XFx0ICogd29ydGggcmVwb3J0aW5nIHRvIG1hYzgwMjExXFxuIFxcdFxcdCAqL1xcbitcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfUlhETUFfR0VORVJJQ10rKztcXG4gXFx0XFx0ZHJvcCA9IHRydWU7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuQEAgLTE3OTYsNyArMTgxNSwxMCBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yZW9fZXJyKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcXG4gXFx0c3RydWN0IGF0aDEya19za2JfcnhjYiAqcnhjYiA9IEFUSDEyS19TS0JfUlhDQihtc2R1KTtcXG4gXFx0Ym9vbCBkcm9wID0gZmFsc2U7XFxuIFxcbi1cXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLnJlb19lcnJvcltyeGNiLVxcdTAwM2VlcnJfY29kZV0rKztcXG4rXFx0aWYgKGxpa2VseShyeGNiLVxcdTAwM2VlcnJfY29kZSBcXHUwMDNjIEhBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYKSlcXG4rXFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLnJlb19lcnJvcltyeGNiLVxcdTAwM2VlcnJfY29kZV0rKztcXG4rXFx0ZWxzZVxcbitcXHRcXHRXQVJOX09OX09OQ0UoMSk7XFxuIFxcbiBcXHRzd2l0Y2ggKHJ4Y2ItXFx1MDAzZWVycl9jb2RlKSB7XFxuIFxcdGNhc2UgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9ERVNDX0FERFJfWkVSTzpcXG5AQCAtMTgxMyw2ICsxODM1LDcgQEAgc3RhdGljIGJvb2wgYXRoMTJrX3dpZmk3X2RwX3J4X2hfcmVvX2VycihzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXFxuIFxcdFxcdC8qIFRPRE86IFJldmlldyBvdGhlciBlcnJvcnMgYW5kIHByb2Nlc3MgdGhlbSB0byBtYWM4MDIxMVxcbiBcXHRcXHQgKiBhcyBhcHByb3ByaWF0ZS5cXG4gXFx0XFx0ICovXFxuK1xcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9SRU9fR0VORVJJQ10rKztcXG4gXFx0XFx0ZHJvcCA9IHRydWU7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuQEAgLTE5MzUsNiArMTk1OCw3IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxcbiBcXHRcXHRyZXQgPSBhdGgxMmtfd2lmaTdfaGFsX3dibV9kZXNjX3BhcnNlX2VycihkcCwgcnhfZGVzYyxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2ZXJyX2luZm8pO1xcbiBcXHRcXHRpZiAocmV0KSB7XFxuK1xcdFxcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfREVTQ19QQVJTRV0rKztcXG4gXFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gcGFyc2UgcnggZXJyb3IgaW4gd2JtX3JlbCByaW5nIGRlc2MgJWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgICByZXQpO1xcbiBcXHRcXHRcXHRjb250aW51ZTtcXG5AQCAtMTk0NCw4ICsxOTY4LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxcbiBcXG4gXFx0XFx0LyogcmV0cnkgbWFudWFsIGRlc2MgcmV0cmlldmFsIGlmIGh3IGNjIGlzIG5vdCBkb25lICovXFxuIFxcdFxcdGlmICghZGVzY19pbmZvKSB7XFxuK1xcdFxcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5zd19kZXNjX2ZhbGxiYWNrKys7XFxuIFxcdFxcdFxcdGRlc2NfaW5mbyA9IGF0aDEya19kcF9nZXRfcnhfZGVzYyhkcCwgZXJyX2luZm8uY29va2llKTtcXG4gXFx0XFx0XFx0aWYgKCFkZXNjX2luZm8pIHtcXG4rXFx0XFx0XFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9HRVRfU1dfREVTQ10rKztcXG4gXFx0XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJJbnZhbGlkIGNvb2tpZSBpbiBEUCBXQk0gcnggZXJyb3IgZGVzY3JpcHRvciByZXRyaWV2YWw6IDB4JXhcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICBlcnJfaW5mby5jb29raWUpO1xcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG5AQCAtMTk2MSw3ICsxOTg3LDggQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXFxuIFxcdFxcdGRldmljZV9pZCA9IGRlc2NfaW5mby1cXHUwMDNlZGV2aWNlX2lkO1xcbiBcXHRcXHRwYXJ0bmVyX2RwID0gYXRoMTJrX2RwX2h3X2dycF90b19kcChkcF9od19ncnAsIGRldmljZV9pZCk7XFxuIFxcdFxcdGlmICh1bmxpa2VseSghcGFydG5lcl9kcCkpIHtcXG4tXFx0XFx0XFx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XFxuK1xcdFxcdFxcdGF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgV0JNX0VSUl9EUk9QX05VTExfUFJUTlJfRFApO1xcbiBcXG4gXFx0XFx0XFx0LyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXRcXG4gXFx0XFx0XFx0ICogaW4gdGhlIHByZXZpb3VzIHJlY29yZCwgY2xlYW51cCBzY2F0dGVyX21zZHVfbGlzdFxcbkBAIC0yMDA3LDcgKzIwMzQsOCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFx0XFx0aHdfbGlua19pZCA9IGF0aDEya19kcF9yeF9nZXRfbXNkdV9zcmNfbGluayhwYXJ0bmVyX2RwLVxcdTAwM2VoYWwsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBtc2R1X2RhdGEpO1xcbiBcXHRcXHRpZiAoaHdfbGlua19pZCBcXHUwMDNlPSBBVEgxMktfR1JPVVBfTUFYX1JBRElPKSB7XFxuLVxcdFxcdFxcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xcbitcXHRcXHRcXHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFdCTV9FUlJfRFJPUF9JTlZfSFdfSUQpO1xcbiBcXG4gXFx0XFx0XFx0LyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXRcXG4gXFx0XFx0XFx0ICogaW4gdGhlIHByZXZpb3VzIHJlY29yZCwgY2xlYW51cCBzY2F0dGVyX21zZHVfbGlzdFxcbkBAIC0yMDY4LDcgKzIwOTYsOCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFx0XFx0XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19EQVRBLFxcbiBcXHRcXHRcXHRcXHQgICBcXFwiVW5hYmxlIHRvIHByb2Nlc3MgV0JNIGVycm9yIG1zZHUgZHVlIHRvIGludmFsaWQgaHcgbGluayBpZCAlZCBkZXZpY2UgaWQgJWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgIGh3X2xpbmtfaWQsIGRldmljZV9pZCk7XFxuLVxcdFxcdFxcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xcbitcXHRcXHRcXHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFdCTV9FUlJfRFJPUF9OVUxMX1BST0NfRFApO1xcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0fVxcbiBcXG5AQCAtMjA3NywxOCArMjEwNiwyMSBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFxuIFxcdFxcdGRwX3BkZXYgPSBhdGgxMmtfZHBfdG9fcGRldl9kcChwYXJ0bmVyX2RwLCBwZGV2X2lkeCk7XFxuIFxcdFxcdGlmICghZHBfcGRldikge1xcbi1cXHRcXHRcXHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcXG4rXFx0XFx0XFx0YXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2IoZHAsIG1zZHUsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBXQk1fRVJSX0RST1BfTlVMTF9QREVWKTtcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdH1cXG4gXFx0XFx0YXIgPSBhdGgxMmtfcGRldl9kcF90b19hcihkcF9wZGV2KTtcXG4gXFxuIFxcdFxcdGlmICghYXIgfHwgIXJjdV9kZXJlZmVyZW5jZShhci1cXHUwMDNlYWItXFx1MDAzZXBkZXZzX2FjdGl2ZVtwZGV2X2lkeF0pKSB7XFxuLVxcdFxcdFxcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xcbitcXHRcXHRcXHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFdCTV9FUlJfRFJPUF9OVUxMX0FSKTtcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19DQUNfUlVOTklORywgXFx1MDAyNmFyLVxcdTAwM2VkZXZfZmxhZ3MpKSB7XFxuLVxcdFxcdFxcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xcbitcXHRcXHRcXHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFdCTV9FUlJfRFJPUF9DQUNfUlVOTklORyk7XFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmNcXG5pbmRleCA1ODdkNThlZWNjZmE1Li4xMTA0OGM1NjgzMzEwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xcbkBAIC0xNjcsOCArMTY3LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfZHBfdHgoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LCBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphXFxuIFxcdHR4X3JpbmcgPSBcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbdGkucmluZ19pZF07XFxuIFxcbiBcXHR0eF9kZXNjID0gYXRoMTJrX2RwX3R4X2Fzc2lnbl9idWZmZXIoZHAsIHBvb2xfaWQpO1xcbi1cXHRpZiAoIXR4X2Rlc2MpXFxuK1xcdGlmICghdHhfZGVzYykge1xcbitcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLnR4X2Vyci50eGJ1Zl9uYVtwb29sX2lkXSsrO1xcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0fVxcbiBcXG4gXFx0ZHBfbGlua192aWYgPSBhdGgxMmtfZHBfdmlmX3RvX2RwX2xpbmtfdmlmKFxcdTAwMjZhaHZpZi1cXHUwMDNlZHBfdmlmLCBhcnZpZi1cXHUwMDNlbGlua19pZCk7XFxuIFxcbkBAIC01NzUsMTggKzU3NywxOSBAQCBhdGgxMmtfZHBfdHhfcHJvY2Vzc19odHRfdHhfY29tcGxldGUoc3RydWN0IGF0aDEya19kcCAqZHAsIHZvaWQgKmRlc2MsXFxuIHtcXG4gXFx0c3RydWN0IGh0dF90eF93Ym1fY29tcGxldGlvbiAqc3RhdHVzX2Rlc2M7XFxuIFxcdHN0cnVjdCBhdGgxMmtfZHBfaHR0X3dibV90eF9zdGF0dXMgdHMgPSB7fTtcXG4tXFx0ZW51bSBoYWxfd2JtX2h0dF90eF9jb21wX3N0YXR1cyB3Ym1fc3RhdHVzO1xcbitcXHRlbnVtIGhhbF93Ym1faHR0X3R4X2NvbXBfc3RhdHVzIGh0dF9zdGF0dXM7XFxuIFxcdHUxNiBwZWVyX2lkO1xcbiBcXG4gXFx0c3RhdHVzX2Rlc2MgPSBkZXNjO1xcbiBcXG4tXFx0d2JtX3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtXFx1MDAzZWluZm8wLFxcbitcXHRodHRfc3RhdHVzID0gbGUzMl9nZXRfYml0cyhzdGF0dXNfZGVzYy1cXHUwMDNlaW5mbzAsXFxuIFxcdFxcdFxcdFxcdCAgIEhUVF9UWF9XQk1fQ09NUF9JTkZPMF9TVEFUVVMpO1xcbi1cXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLmZ3X3R4X3N0YXR1c1t3Ym1fc3RhdHVzXSsrO1xcbitcXHRpZiAobGlrZWx5KGh0dF9zdGF0dXMgXFx1MDAzYyBNQVhfRldfVFhfU1RBVFVTKSlcXG4rXFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy5md190eF9zdGF0dXNbaHR0X3N0YXR1c10rKztcXG4gXFxuLVxcdHN3aXRjaCAod2JtX3N0YXR1cykge1xcbitcXHRzd2l0Y2ggKGh0dF9zdGF0dXMpIHtcXG4gXFx0Y2FzZSBIQUxfV0JNX1JFTF9IVFRfVFhfQ09NUF9TVEFUVVNfT0s6XFxuLVxcdFxcdHRzLmFja2VkID0gKHdibV9zdGF0dXMgPT0gSEFMX1dCTV9SRUxfSFRUX1RYX0NPTVBfU1RBVFVTX09LKTtcXG4rXFx0XFx0dHMuYWNrZWQgPSB0cnVlO1xcbiBcXHRcXHR0cy5hY2tfcnNzaSA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtXFx1MDAzZWluZm8yLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgSFRUX1RYX1dCTV9DT01QX0lORk8yX0FDS19SU1NJKTtcXG4gXFxuQEAgLTYwOCw3ICs2MTEsNyBAQCBhdGgxMmtfZHBfdHhfcHJvY2Vzc19odHRfdHhfY29tcGxldGUoc3RydWN0IGF0aDEya19kcCAqZHAsIHZvaWQgKmRlc2MsXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRicmVhaztcXG4gXFx0ZGVmYXVsdDpcXG4tXFx0XFx0YXRoMTJrX3dhcm4oZHAtXFx1MDAzZWFiLCBcXFwiVW5rbm93biBodHQgd2JtIHR4IHN0YXR1cyAlZFxcXFxuXFxcIiwgd2JtX3N0YXR1cyk7XFxuK1xcdFxcdGF0aDEya193YXJuKGRwLVxcdTAwM2VhYiwgXFxcIlVua25vd24gaHR0IHR4IHN0YXR1cyAlZFxcXFxuXFxcIiwgaHR0X3N0YXR1cyk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuIH1cXG5AQCAtOTg0LDExICs5ODcsMTcgQEAgdm9pZCBhdGgxMmtfd2lmaTdfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLCBpbnQgcmluZ19pZClcXG4gXFx0XFx0LyogRmluZCB0aGUgSEFMX1dCTV9SRUxFQVNFX0lORk8wX1JFTF9TUkNfTU9EVUxFIHZhbHVlICovXFxuIFxcdFxcdGJ1Zl9yZWxfc291cmNlID0gbGUzMl9nZXRfYml0cyh0eF9zdGF0dXMtXFx1MDAzZWluZm8wLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAgSEFMX1dCTV9SRUxFQVNFX0lORk8wX1JFTF9TUkNfTU9EVUxFKTtcXG4tXFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0rKztcXG4rXFx0XFx0aWYgKGxpa2VseShidWZfcmVsX3NvdXJjZSBcXHUwMDNjIEhBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYKSlcXG4rXFx0XFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0rKztcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRXQVJOX09OX09OQ0UoMSk7XFxuIFxcbiBcXHRcXHRyZWxfc3RhdHVzID0gbGUzMl9nZXRfYml0cyh0eF9zdGF0dXMtXFx1MDAzZWluZm8wLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBIQUxfV0JNX0NPTVBMX1RYX0lORk8wX1RRTV9SRUxFQVNFX1JFQVNPTik7XFxuLVxcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMudHFtX3JlbF9yZWFzb25bcmVsX3N0YXR1c10rKztcXG4rXFx0XFx0aWYgKGxpa2VseShyZWxfc3RhdHVzIFxcdTAwM2MgTUFYX1RRTV9SRUxFQVNFX1JFQVNPTikpXFxuK1xcdFxcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMudHFtX3JlbF9yZWFzb25bcmVsX3N0YXR1c10rKztcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRXQVJOX09OX09OQ0UoMSk7XFxuIFxcbiBcXHRcXHQvKiBSZWxlYXNlIGRlc2NyaXB0b3IgYXMgc29vbiBhcyBleHRyYWN0aW5nIG5lY2Vzc2FyeSBpbmZvXFxuIFxcdFxcdCAqIHRvIHJlZHVjZSBjb250ZW50aW9uXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaGFsX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jXFxuaW5kZXggNDljNjkzMjg5NzA5NC4uNjBlN2EzNjA5N2YxMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9oYWxfcnguY1xcbkBAIC0zMjksNyArMzI5LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfaGFsX2Rlc2NfcmVvX3BhcnNlX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFx0XFx0XFx0XFx0ICAgIEhBTF9SRU9fREVTVF9SSU5HX0lORk8wX1BVU0hfUkVBU09OKTtcXG4gXFx0ZXJyX2NvZGUgPSBsZTMyX2dldF9iaXRzKGRlc2MtXFx1MDAzZWluZm8wLFxcbiBcXHRcXHRcXHRcXHQgSEFMX1JFT19ERVNUX1JJTkdfSU5GTzBfRVJST1JfQ09ERSk7XFxuLVxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMucmVvX2Vycm9yW2Vycl9jb2RlXSsrO1xcbitcXHRpZiAobGlrZWx5KGVycl9jb2RlIFxcdTAwM2MgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVgpKVxcbitcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIucmVvX2Vycm9yW2Vycl9jb2RlXSsrO1xcbitcXHRlbHNlXFxuK1xcdFxcdFdBUk5fT05fT05DRSgxKTtcXG4gXFxuIFxcdGlmIChwdXNoX3JlYXNvbiAhPSBIQUxfUkVPX0RFU1RfUklOR19QVVNIX1JFQVNPTl9FUlJfREVURUNURUQgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIHB1c2hfcmVhc29uICE9IEhBTF9SRU9fREVTVF9SSU5HX1BVU0hfUkVBU09OX1JPVVRJTkdfSU5TVFJVQ1RJT04pIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6MTY6MjcuMDUwOTc5OTI5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTc3NzQyNDY2MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIFdpLUZpIGRyaXZlciByZXF1aXJpbmcgcGh5c2ljYWwgUXVhbGNvbW0gaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBwcmltYXJpbHkgY29uc2lzdCBvZiBhZGRpbmcgZGVidWdmcyBzdGF0aXN0aWNzIGFuZCBib3VuZHMgY2hlY2tzIGZvciB0aG9zZSBzdGF0aXN0aWNzLCB3aGljaCBhcmUgbm90IGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyMWQ4YzE5MzcwYWYxNDJlMTExM2NkNmY5NmM3NjBlM2VmYzhiODE4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMTg6MTY6MjQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jXG5pbmRleCBkNTQ5OTViN2FkYjI3Li5kMmQ4OWE3ZTM0MGRmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jXG5AQCAtMTA3MSw2ICsxMDcxLDIwIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRbSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9QTl9FUlJfRkxBR19TRVRdID0gXCJQTiBlcnJcIixcbiBcdFx0W0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfREVTQ19CTE9DS0VEXSA9IFwiRGVzYyBibG9ja2VkXCJ9O1xuIFxuK1x0c3RhdGljIGNvbnN0IGNoYXIgKndibV9yeF9kcm9wW1dCTV9FUlJfRFJPUF9NQVhdID0ge1xuK1x0XHRbV0JNX0VSUl9HRVRfU1dfREVTQ10gPSBcIlNXIGRlc2MgZXJyb3JcIixcbitcdFx0W1dCTV9FUlJfREVTQ19QQVJTRV0gPSBcIkRlc2MgcGFyc2UgZXJyb3JcIixcbitcdFx0W1dCTV9FUlJfRFJPUF9JTlZfSFdfSURdID0gXCJJbnZhbGlkIGh3IGlkXCIsXG4rXHRcdFtXQk1fRVJSX0RST1BfTlVMTF9QUlROUl9EUF0gPSBcIk51bGwgUGFydG5lciBkcFwiLFxuK1x0XHRbV0JNX0VSUl9EUk9QX05VTExfUFJPQ19EUF0gPSBcIlByb2Nlc3MgTnVsbCBQYXJ0bmVyIGRwXCIsXG4rXHRcdFtXQk1fRVJSX0RST1BfTlVMTF9QREVWXSA9IFwiTnVsbCBQZGV2XCIsXG4rXHRcdFtXQk1fRVJSX0RST1BfTlVMTF9BUl0gPSBcIk51bGwgYXJcIixcbitcdFx0W1dCTV9FUlJfRFJPUF9DQUNfUlVOTklOR10gPSBcIkNBQyBSdW5uaW5nXCIsXG4rXHRcdFtXQk1fRVJSX0RST1BfU0ddID0gXCJTY2F0dGVyIEdhdGhlclwiLFxuK1x0XHRbV0JNX0VSUl9EUk9QX0lOVl9OV0lGSV9IRFJdID0gXCJJbnZhbGlkIE5XaWZpIEhkciBsZW5cIixcbitcdFx0W1dCTV9FUlJfRFJPUF9SRU9fR0VORVJJQ10gID0gXCJSRU8gR2VuZXJpY1wiLFxuK1x0XHRbV0JNX0VSUl9EUk9QX1JYRE1BX0dFTkVSSUNdID0gXCJSWERNQSBHZW5lcmljXCJ9O1xuK1xuIFx0c3RhdGljIGNvbnN0IGNoYXIgKndibV9yZWxfc3JjW0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYXSA9IHtcbiBcdFx0W0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfVFFNXSA9IFwiVFFNXCIsXG4gXHRcdFtIQUxfV0JNX1JFTF9TUkNfTU9EVUxFX1JYRE1BXSA9IFwiUnhkbWFcIixcbkBAIC0xMDk1LDEzICsxMTA5LDMyIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgSEFMX1JFT19FTlRSX1JJTkdfUlhETUFfRUNPREVfTUFYOyBpKyspXG4gXHRcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcIiVzOiAldVxcblwiLFxuLVx0XHRcdFx0IHJ4ZG1hX2VycltpXSwgZGV2aWNlX3N0YXRzLVx1MDAzZXJ4ZG1hX2Vycm9yW2ldKTtcbitcdFx0XHRcdCByeGRtYV9lcnJbaV0sIGRldmljZV9zdGF0cy1cdTAwM2V3Ym1fZXJyLnJ4ZG1hX2Vycm9yW2ldKTtcbiBcbiBcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcIlxcblJFTyBlcnJvcnM6XFxuXCIpO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVg7IGkrKylcbiBcdFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFwiJXM6ICV1XFxuXCIsXG4tXHRcdFx0XHQgcmVvX2VycltpXSwgZGV2aWNlX3N0YXRzLVx1MDAzZXJlb19lcnJvcltpXSk7XG4rXHRcdFx0XHQgcmVvX2VycltpXSwgZGV2aWNlX3N0YXRzLVx1MDAzZXdibV9lcnIucmVvX2Vycm9yW2ldKTtcbitcbitcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcIlxcbldCTSBSeCBEcm9wIENvdW50OlxcblwiKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFdCTV9FUlJfRFJPUF9NQVg7IGkrKylcbitcdFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFwiJXM6ICV1XFxuXCIsXG4rXHRcdFx0XHQgd2JtX3J4X2Ryb3BbaV0sIGRldmljZV9zdGF0cy1cdTAwM2V3Ym1fZXJyLmRyb3BbaV0pO1xuK1xuK1x0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sXG4rXHRcdFx0IFwiXFxuV0JNIFNXIGRlc2MgZmFsbGJhY2sgKEhXIENDIG5vdCBkb25lKTogJXVcXG5cIixcbitcdFx0XHQgZGV2aWNlX3N0YXRzLVx1MDAzZXdibV9lcnIuc3dfZGVzY19mYWxsYmFjayk7XG4rXG4rXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJcXG5SRU8gc2VudCB0byBzdGFja1xcblwiKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVg7IGkrKykge1xuK1x0XHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJyaW5nJWQ6XCIsIGkpO1xuK1x0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBhYi1cdTAwM2VhZy1cdTAwM2VudW1fZGV2aWNlczsgaisrKVxuK1x0XHRcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLFxuK1x0XHRcdFx0XHQgXCJcXHQlZDoldVwiLCBqLFxuK1x0XHRcdFx0XHQgZGV2aWNlX3N0YXRzLVx1MDAzZXNlbnRfdG9fc3RhY2tbaV1bal0pO1xuK1x0XHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJcXG5cIik7XG4rXHR9XG4gXG4gXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJcXG5IQUwgUkVPIGVycm9yczpcXG5cIik7XG4gXG5AQCAtMTExNyw2ICsxMTUwLDExIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJyaW5nJWQ6ICV1XFxuXCIsXG4gXHRcdFx0XHQgaSwgZGV2aWNlX3N0YXRzLVx1MDAzZXR4X2Vyci5kZXNjX25hW2ldKTtcbiBcbitcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcIlxcblRYIERlc2NyaXB0b3IgUG9vbCBBbGxvYyBGYWlsdXJlczpcXG5cIik7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBVEgxMktfSFdfTUFYX1FVRVVFUzsgaSsrKVxuK1x0XHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJwb29sJWQ6ICV1XFxuXCIsXG4rXHRcdFx0XHQgaSwgZGV2aWNlX3N0YXRzLVx1MDAzZXR4X2Vyci50eGJ1Zl9uYVtpXSk7XG4rXG4gXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbixcbiBcdFx0XHQgXCJcXG5NaXNjIFRyYW5zbWl0IEZhaWx1cmVzOiAlZFxcblwiLFxuIFx0XHRcdCBhdG9taWNfcmVhZChcdTAwMjZkZXZpY2Vfc3RhdHMtXHUwMDNldHhfZXJyLm1pc2NfZmFpbCkpO1xuQEAgLTExODEsNyArMTIxOSw3IEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFwiXFxuUkVPIFJ4IFJlY2VpdmVkOlxcblwiKTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVg7IGkrKykge1xuLVx0XHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJSaW5nJWQ6XCIsIGkgKyAxKTtcbitcdFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFwicmluZyVkOlwiLCBpKTtcbiBcbiBcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgYWItXHUwMDNlYWctXHUwMDNlbnVtX2RldmljZXM7IGorKykge1xuIFx0XHRcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLFxuQEAgLTEyMTUsOCArMTI1Myw0MiBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuK3N0YXRpYyBzc2l6ZV90XG4rYXRoMTJrX2RlYnVnZnNfd3JpdGVfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuK1x0XHRcdFx0ICAgICBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG4rXHRcdFx0XHQgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuK3tcbitcdHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbitcdHN0cnVjdCBhdGgxMmtfZHAgKmRwID0gYXRoMTJrX2FiX3RvX2RwKGFiKTtcbitcdHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3N0YXRzICpkZXZpY2Vfc3RhdHMgPSBcdTAwMjZkcC1cdTAwM2VkZXZpY2Vfc3RhdHM7XG4rXHRjaGFyIGJ1ZlsyMF0gPSB7fTtcbitcdGludCByZXQ7XG4rXG4rXHQvKiBmaWx0ZXIgcGFydGlhbCB3cml0ZXMgYW5kIGludmFsaWQgY29tbWFuZHMgKi9cbitcdGlmICgqcHBvcyAhPSAwIHx8IGNvdW50IFx1MDAzZT0gc2l6ZW9mKGJ1ZikgfHwgY291bnQgPT0gMClcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRyZXQgPSBzaW1wbGVfd3JpdGVfdG9fYnVmZmVyKGJ1Ziwgc2l6ZW9mKGJ1ZikgLSAxLCBwcG9zLCB1c2VyX2J1ZiwgY291bnQpO1xuK1x0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdC8qIGRyb3AgdGhlIHBvc3NpYmxlICdcXG4nIGZyb20gdGhlIGVuZCAqL1xuK1x0aWYgKGJ1ZlsqcHBvcyAtIDFdID09ICdcXG4nKVxuK1x0XHRidWZbKnBwb3MgLSAxXSA9ICdcXDAnO1xuK1xuK1x0aWYgKCFzdHJjbXAoYnVmLCBcInJlc2V0XCIpKSB7XG4rXHRcdG1lbXNldChkZXZpY2Vfc3RhdHMsIDAsIHNpemVvZigqZGV2aWNlX3N0YXRzKSk7XG4rXHRcdHJldHVybiBjb3VudDtcbitcdH1cbitcbitcdGF0aDEya193YXJuKGFiLCBcInVuc3VwcG9ydGVkIGNvbW1hbmQ6ICVzXFxuXCIsIGJ1Zik7XG4rXG4rXHRyZXR1cm4gLUVJTlZBTDtcbit9XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19kZXZpY2VfZHBfc3RhdHMgPSB7XG4gXHQucmVhZCA9IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzLFxuK1x0LndyaXRlID0gYXRoMTJrX2RlYnVnZnNfd3JpdGVfZGV2aWNlX2RwX3N0YXRzLFxuIFx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcbiBcdC5vd25lciA9IFRISVNfTU9EVUxFLFxuIFx0Lmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLFxuQEAgLTEyMjcsNyArMTI5OSw3IEBAIHZvaWQgYXRoMTJrX2RlYnVnZnNfcGRldl9jcmVhdGUoc3RydWN0IGF0aDEya19iYXNlICphYilcbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJzaW11bGF0ZV9md19jcmFzaFwiLCAwNjAwLCBhYi1cdTAwM2VkZWJ1Z2ZzX3NvYywgYWIsXG4gXHRcdFx0ICAgIFx1MDAyNmZvcHNfc2ltdWxhdGVfZndfY3Jhc2gpO1xuIFxuLVx0ZGVidWdmc19jcmVhdGVfZmlsZShcImRldmljZV9kcF9zdGF0c1wiLCAwNDAwLCBhYi1cdTAwM2VkZWJ1Z2ZzX3NvYywgYWIsXG4rXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwiZGV2aWNlX2RwX3N0YXRzXCIsIDA2MDAsIGFiLVx1MDAzZWRlYnVnZnNfc29jLCBhYixcbiBcdFx0XHQgICAgXHUwMDI2Zm9wc19kZXZpY2VfZHBfc3RhdHMpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbmluZGV4IGJlZjBmMmJhMDU2MGYuLjI4OWFlZGU2ZGFiYjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuQEAgLTcsNiArNyw3IEBAXG4gI2lmbmRlZiBBVEgxMktfRFBfSFxuICNkZWZpbmUgQVRIMTJLX0RQX0hcbiBcbisjaW5jbHVkZSBcImRwX3N0YXRzLmhcIlxuICNpbmNsdWRlIFwiaHcuaFwiXG4gI2luY2x1ZGUgXCJkcF9odHQuaFwiXG4gI2luY2x1ZGUgXCJkcF9jbW4uaFwiXG5AQCAtNDI5LDE5ICs0MzAsMjcgQEAgc3RydWN0IGF0aDEya19kcF9hcmNoX29wcyB7XG4gc3RydWN0IGF0aDEya19kZXZpY2VfZHBfdHhfZXJyX3N0YXRzIHtcbiBcdC8qIFRDTCBSaW5nIERlc2NyaXB0b3IgdW5hdmFpbGFibGUgKi9cbiBcdHUzMiBkZXNjX25hW0RQX1RDTF9OVU1fUklOR19NQVhdO1xuK1x0LyogVFggZGVzY3JpcHRvciBwb29sIGV4aGF1c3RlZCAocGVyIHBvb2xfaWQgLyB0cmFmZmljIGNsYXNzKSAqL1xuK1x0dTMyIHR4YnVmX25hW0FUSDEyS19IV19NQVhfUVVFVUVTXTtcbiBcdC8qIE90aGVyIGZhaWx1cmVzIGR1cmluZyBkcF90eCBkdWUgdG8gbWVtIGFsbG9jYXRpb24gZmFpbHVyZVxuIFx0ICogaWRyIHVuYXZhaWxhYmxlIGV0Yy5cbiBcdCAqL1xuIFx0YXRvbWljX3QgbWlzY19mYWlsO1xuIH07XG4gXG4rc3RydWN0IGF0aDEya19kZXZpY2VfZHBfcnhfd2JtX2Vycl9zdGF0cyB7XG4rXHR1MzIgcnhkbWFfZXJyb3JbSEFMX1JFT19FTlRSX1JJTkdfUlhETUFfRUNPREVfTUFYXTtcbitcdHUzMiByZW9fZXJyb3JbSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVhdO1xuK1x0dTMyIGRyb3BbV0JNX0VSUl9EUk9QX01BWF07XG4rXHR1MzIgc3dfZGVzY19mYWxsYmFjaztcbit9O1xuK1xuIHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3N0YXRzIHtcbiBcdHUzMiBlcnJfcmluZ19wa3RzO1xuIFx0dTMyIGludmFsaWRfcmJtO1xuLVx0dTMyIHJ4ZG1hX2Vycm9yW0hBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWF07XG4tXHR1MzIgcmVvX2Vycm9yW0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYXTtcbiBcdHUzMiBoYWxfcmVvX2Vycm9yW0RQX1JFT19EU1RfUklOR19NQVhdO1xuIFx0c3RydWN0IGF0aDEya19kZXZpY2VfZHBfdHhfZXJyX3N0YXRzIHR4X2VycjtcbitcdHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3J4X3dibV9lcnJfc3RhdHMgd2JtX2VycjtcbiBcdHUzMiByZW9fcnhbRFBfUkVPX0RTVF9SSU5HX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTtcbiBcdHUzMiByeF93Ym1fcmVsX3NvdXJjZVtIQUxfV0JNX1JFTF9TUkNfTU9EVUxFX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTtcbiBcdHUzMiB0cW1fcmVsX3JlYXNvbltNQVhfVFFNX1JFTEVBU0VfUkVBU09OXTtcbkBAIC00NTAsNiArNDU5LDcgQEAgc3RydWN0IGF0aDEya19kZXZpY2VfZHBfc3RhdHMge1xuIFx0dTMyIHR4X2VucXVldWVkW0RQX1RDTF9OVU1fUklOR19NQVhdO1xuIFx0dTMyIHR4X2NvbXBsZXRlZFtEUF9UQ0xfTlVNX1JJTkdfTUFYXTtcbiBcdHUzMiByZW9fZXhjZXBfbXNkdV9idWZfdHlwZTtcbitcdHUzMiBzZW50X3RvX3N0YWNrW0RQX1JFT19EU1RfUklOR19NQVhdW0FUSDEyS19NQVhfREVWSUNFU107XG4gfTtcbiBcbiBzdHJ1Y3QgYXRoMTJrX2RwIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3N0YXRzLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3N0YXRzLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi4wNGQzODkyYWNmZjMyXG4tLS0gL2Rldi9udWxsXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3N0YXRzLmhcbkBAIC0wLDAgKzEsMjUgQEBcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyICovXG4rLypcbisgKiBDb3B5cmlnaHQgKGMpIFF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cbisgKi9cbitcbisjaWZuZGVmIEFUSDEyS19EUF9TVEFUU19IXG4rI2RlZmluZSBBVEgxMktfRFBfU1RBVFNfSFxuK1xuK2VudW0gYXRoMTJrX3dibV9lcnJfZHJvcF9yZWFzb24ge1xuK1x0V0JNX0VSUl9HRVRfU1dfREVTQyxcbitcdFdCTV9FUlJfREVTQ19QQVJTRSxcbitcdFdCTV9FUlJfRFJPUF9JTlZfSFdfSUQsXG4rXHRXQk1fRVJSX0RST1BfTlVMTF9QUlROUl9EUCxcbitcdFdCTV9FUlJfRFJPUF9OVUxMX1BST0NfRFAsXG4rXHRXQk1fRVJSX0RST1BfTlVMTF9QREVWLFxuK1x0V0JNX0VSUl9EUk9QX05VTExfQVIsXG4rXHRXQk1fRVJSX0RST1BfQ0FDX1JVTk5JTkcsXG4rXHRXQk1fRVJSX0RST1BfU0csXG4rXHRXQk1fRVJSX0RST1BfSU5WX05XSUZJX0hEUixcbitcdFdCTV9FUlJfRFJPUF9SRU9fR0VORVJJQyxcbitcdFdCTV9FUlJfRFJPUF9SWERNQV9HRU5FUklDLFxuK1x0V0JNX0VSUl9EUk9QX01BWCxcbit9O1xuK1xuKyNlbmRpZiAvKiBBVEgxMktfRFBfU1RBVFNfSCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguY1xuaW5kZXggOTVkODdkZDY3ODcyZi4uZDk2ZDgzMDE1NjVjYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jXG5AQCAtMTIsNiArMTIsMTUgQEBcbiAjaW5jbHVkZSBcImhhbF93Y243ODUwLmhcIlxuICNpbmNsdWRlIFwiaGFsX3FjYzIwNzIuaFwiXG4gXG4rc3RhdGljIHZvaWRcbithdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbitcdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqbXNkdSxcbitcdFx0XHRcdCAgICBlbnVtIGF0aDEya193Ym1fZXJyX2Ryb3BfcmVhc29uIGRyb3BfcmVhc29uKVxuK3tcbitcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbZHJvcF9yZWFzb25dKys7XG4rXHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbit9XG4rXG4gc3RhdGljIHUxNiBhdGgxMmtfd2lmaTdfZHBfcnhfZ2V0X3BlZXJfaWQoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdFx0XHRcdCAgZW51bSBhdGgxMmtfcGVlcl9tZXRhZGF0YV92ZXJzaW9uIHZlcixcbiBcdFx0XHRcdFx0ICBfX2xlMzIgcGVlcl9tZXRhZGF0YSlcbkBAIC02NDIsNyArNjUxLDEwIEBAIGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3JlY2VpdmVkX3BhY2tldHMoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdFx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4gXHRcdFx0Y29udGludWU7XG4gXHRcdH1cbi1cbitcdFx0aWYgKGxpa2VseShyaW5nX2lkIFx1MDAzYyBEUF9SRU9fRFNUX1JJTkdfTUFYKSlcbitcdFx0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMuc2VudF90b19zdGFja1tyaW5nX2lkXVtwYXJ0bmVyX2RwLVx1MDAzZWRldmljZV9pZF0rKztcbitcdFx0ZWxzZVxuK1x0XHRcdFdBUk5fT05fT05DRSgxKTtcbiBcdFx0YXRoMTJrX2RwX3J4X2RlbGl2ZXJfbXNkdShkcF9wZGV2LCBuYXBpLCBtc2R1LCBcdTAwMjZyeF9pbmZvKTtcbiBcdH1cbiBcbkBAIC0xNjE0LDYgKzE2MjYsNyBAQCBzdGF0aWMgaW50IGF0aDEya193aWZpN19kcF9yeF9oX251bGxfcV9kZXNjKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcbiBcdFx0LyogRmlyc3QgYnVmZmVyIHdpbGwgYmUgZnJlZWQgYnkgdGhlIGNhbGxlciwgc28gZGVkdWN0IGl0J3MgbGVuZ3RoICovXG4gXHRcdG1zZHVfbGVuID0gbXNkdV9sZW4gLSAoRFBfUlhfQlVGRkVSX1NJWkUgLSBoYWxfcnhfZGVzY19zeik7XG4gXHRcdGF0aDEya193aWZpN19kcF9yeF9udWxsX3FfZGVzY19zZ19kcm9wKGRwLCBtc2R1X2xlbiwgbXNkdV9saXN0KTtcbitcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfU0ddKys7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuQEAgLTE2NDksOCArMTY2MiwxMCBAQCBzdGF0aWMgaW50IGF0aDEya193aWZpN19kcF9yeF9oX251bGxfcV9kZXNjKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcbiBcdFx0c2tiX3B1dChtc2R1LCBoYWxfcnhfZGVzY19zeiArIGwzcGFkX2J5dGVzICsgbXNkdV9sZW4pO1xuIFx0XHRza2JfcHVsbChtc2R1LCBoYWxfcnhfZGVzY19zeiArIGwzcGFkX2J5dGVzKTtcbiBcdH1cbi1cdGlmICh1bmxpa2VseSghYXRoMTJrX2RwX3J4X2NoZWNrX253aWZpX2hkcl9sZW5fdmFsaWQoZHAsIG1zZHUsIHJ4X2luZm8pKSlcbitcdGlmICh1bmxpa2VseSghYXRoMTJrX2RwX3J4X2NoZWNrX253aWZpX2hkcl9sZW5fdmFsaWQoZHAsIG1zZHUsIHJ4X2luZm8pKSkge1xuK1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9JTlZfTldJRklfSERSXSsrO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbiBcbiBcdGF0aDEya19kcF9yeF9oX3BwZHUoZHBfcGRldiwgcnhfaW5mbyk7XG4gXHRyZXQgPSBhdGgxMmtfd2lmaTdfZHBfcnhfaF9tcGR1KGRwX3BkZXYsIG1zZHUsIHJ4X2luZm8pO1xuQEAgLTE3NjMsNyArMTc3OCwxMCBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yeGRtYV9lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxuIFx0c3RydWN0IGF0aDEya19za2JfcnhjYiAqcnhjYiA9IEFUSDEyS19TS0JfUlhDQihtc2R1KTtcbiBcdGJvb2wgZHJvcCA9IGZhbHNlO1xuIFxuLVx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLnJ4ZG1hX2Vycm9yW3J4Y2ItXHUwMDNlZXJyX2NvZGVdKys7XG4rXHRpZiAobGlrZWx5KHJ4Y2ItXHUwMDNlZXJyX2NvZGUgXHUwMDNjIEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWCkpXG4rXHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLnJ4ZG1hX2Vycm9yW3J4Y2ItXHUwMDNlZXJyX2NvZGVdKys7XG4rXHRlbHNlXG4rXHRcdFdBUk5fT05fT05DRSgxKTtcbiBcbiBcdHN3aXRjaCAocnhjYi1cdTAwM2VlcnJfY29kZSkge1xuIFx0Y2FzZSBIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9VTkFVVEhfV0RTX0VSUjpcbkBAIC0xNzgwLDYgKzE3OTgsNyBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yeGRtYV9lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxuIFx0XHQvKiBUT0RPOiBSZXZpZXcgb3RoZXIgcnhkbWEgZXJyb3IgY29kZSB0byBjaGVjayBpZiBhbnl0aGluZyBpc1xuIFx0XHQgKiB3b3J0aCByZXBvcnRpbmcgdG8gbWFjODAyMTFcbiBcdFx0ICovXG4rXHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX1JYRE1BX0dFTkVSSUNdKys7XG4gXHRcdGRyb3AgPSB0cnVlO1xuIFx0XHRicmVhaztcbiBcdH1cbkBAIC0xNzk2LDcgKzE4MTUsMTAgQEAgc3RhdGljIGJvb2wgYXRoMTJrX3dpZmk3X2RwX3J4X2hfcmVvX2VycihzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXG4gXHRzdHJ1Y3QgYXRoMTJrX3NrYl9yeGNiICpyeGNiID0gQVRIMTJLX1NLQl9SWENCKG1zZHUpO1xuIFx0Ym9vbCBkcm9wID0gZmFsc2U7XG4gXG4tXHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMucmVvX2Vycm9yW3J4Y2ItXHUwMDNlZXJyX2NvZGVdKys7XG4rXHRpZiAobGlrZWx5KHJ4Y2ItXHUwMDNlZXJyX2NvZGUgXHUwMDNjIEhBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYKSlcbitcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIucmVvX2Vycm9yW3J4Y2ItXHUwMDNlZXJyX2NvZGVdKys7XG4rXHRlbHNlXG4rXHRcdFdBUk5fT05fT05DRSgxKTtcbiBcbiBcdHN3aXRjaCAocnhjYi1cdTAwM2VlcnJfY29kZSkge1xuIFx0Y2FzZSBIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX0RFU0NfQUREUl9aRVJPOlxuQEAgLTE4MTMsNiArMTgzNSw3IEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3Jlb19lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxuIFx0XHQvKiBUT0RPOiBSZXZpZXcgb3RoZXIgZXJyb3JzIGFuZCBwcm9jZXNzIHRoZW0gdG8gbWFjODAyMTFcbiBcdFx0ICogYXMgYXBwcm9wcmlhdGUuXG4gXHRcdCAqL1xuK1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9SRU9fR0VORVJJQ10rKztcbiBcdFx0ZHJvcCA9IHRydWU7XG4gXHRcdGJyZWFrO1xuIFx0fVxuQEAgLTE5MzUsNiArMTk1OCw3IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFx0XHRyZXQgPSBhdGgxMmtfd2lmaTdfaGFsX3dibV9kZXNjX3BhcnNlX2VycihkcCwgcnhfZGVzYyxcbiBcdFx0XHRcdFx0XHRcdCAgXHUwMDI2ZXJyX2luZm8pO1xuIFx0XHRpZiAocmV0KSB7XG4rXHRcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RFU0NfUEFSU0VdKys7XG4gXHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwiZmFpbGVkIHRvIHBhcnNlIHJ4IGVycm9yIGluIHdibV9yZWwgcmluZyBkZXNjICVkXFxuXCIsXG4gXHRcdFx0XHQgICAgcmV0KTtcbiBcdFx0XHRjb250aW51ZTtcbkBAIC0xOTQ0LDggKzE5NjgsMTAgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXG4gXHRcdC8qIHJldHJ5IG1hbnVhbCBkZXNjIHJldHJpZXZhbCBpZiBodyBjYyBpcyBub3QgZG9uZSAqL1xuIFx0XHRpZiAoIWRlc2NfaW5mbykge1xuK1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLnN3X2Rlc2NfZmFsbGJhY2srKztcbiBcdFx0XHRkZXNjX2luZm8gPSBhdGgxMmtfZHBfZ2V0X3J4X2Rlc2MoZHAsIGVycl9pbmZvLmNvb2tpZSk7XG4gXHRcdFx0aWYgKCFkZXNjX2luZm8pIHtcbitcdFx0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9HRVRfU1dfREVTQ10rKztcbiBcdFx0XHRcdGF0aDEya193YXJuKGFiLCBcIkludmFsaWQgY29va2llIGluIERQIFdCTSByeCBlcnJvciBkZXNjcmlwdG9yIHJldHJpZXZhbDogMHgleFxcblwiLFxuIFx0XHRcdFx0XHQgICAgZXJyX2luZm8uY29va2llKTtcbiBcdFx0XHRcdGNvbnRpbnVlO1xuQEAgLTE5NjEsNyArMTk4Nyw4IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFx0XHRkZXZpY2VfaWQgPSBkZXNjX2luZm8tXHUwMDNlZGV2aWNlX2lkO1xuIFx0XHRwYXJ0bmVyX2RwID0gYXRoMTJrX2RwX2h3X2dycF90b19kcChkcF9od19ncnAsIGRldmljZV9pZCk7XG4gXHRcdGlmICh1bmxpa2VseSghcGFydG5lcl9kcCkpIHtcbi1cdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbitcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbitcdFx0XHRcdFx0XHRcdCAgICBXQk1fRVJSX0RST1BfTlVMTF9QUlROUl9EUCk7XG4gXG4gXHRcdFx0LyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXRcbiBcdFx0XHQgKiBpbiB0aGUgcHJldmlvdXMgcmVjb3JkLCBjbGVhbnVwIHNjYXR0ZXJfbXNkdV9saXN0XG5AQCAtMjAwNyw3ICsyMDM0LDggQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdGh3X2xpbmtfaWQgPSBhdGgxMmtfZHBfcnhfZ2V0X21zZHVfc3JjX2xpbmsocGFydG5lcl9kcC1cdTAwM2VoYWwsXG4gXHRcdFx0XHRcdFx0XHQgICAgbXNkdV9kYXRhKTtcbiBcdFx0aWYgKGh3X2xpbmtfaWQgXHUwMDNlPSBBVEgxMktfR1JPVVBfTUFYX1JBRElPKSB7XG4tXHRcdFx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4rXHRcdFx0YXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2IoZHAsIG1zZHUsXG4rXHRcdFx0XHRcdFx0XHQgICAgV0JNX0VSUl9EUk9QX0lOVl9IV19JRCk7XG4gXG4gXHRcdFx0LyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXRcbiBcdFx0XHQgKiBpbiB0aGUgcHJldmlvdXMgcmVjb3JkLCBjbGVhbnVwIHNjYXR0ZXJfbXNkdV9saXN0XG5AQCAtMjA2OCw3ICsyMDk2LDggQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19EQVRBLFxuIFx0XHRcdFx0ICAgXCJVbmFibGUgdG8gcHJvY2VzcyBXQk0gZXJyb3IgbXNkdSBkdWUgdG8gaW52YWxpZCBodyBsaW5rIGlkICVkIGRldmljZSBpZCAlZFxcblwiLFxuIFx0XHRcdFx0ICAgaHdfbGlua19pZCwgZGV2aWNlX2lkKTtcbi1cdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbitcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbitcdFx0XHRcdFx0XHRcdCAgICBXQk1fRVJSX0RST1BfTlVMTF9QUk9DX0RQKTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuQEAgLTIwNzcsMTggKzIxMDYsMjEgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXG4gXHRcdGRwX3BkZXYgPSBhdGgxMmtfZHBfdG9fcGRldl9kcChwYXJ0bmVyX2RwLCBwZGV2X2lkeCk7XG4gXHRcdGlmICghZHBfcGRldikge1xuLVx0XHRcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuK1x0XHRcdGF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LFxuK1x0XHRcdFx0XHRcdFx0ICAgIFdCTV9FUlJfRFJPUF9OVUxMX1BERVYpO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXHRcdGFyID0gYXRoMTJrX3BkZXZfZHBfdG9fYXIoZHBfcGRldik7XG4gXG4gXHRcdGlmICghYXIgfHwgIXJjdV9kZXJlZmVyZW5jZShhci1cdTAwM2VhYi1cdTAwM2VwZGV2c19hY3RpdmVbcGRldl9pZHhdKSkge1xuLVx0XHRcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuK1x0XHRcdGF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LFxuK1x0XHRcdFx0XHRcdFx0ICAgIFdCTV9FUlJfRFJPUF9OVUxMX0FSKTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuIFx0XHRpZiAodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ0FDX1JVTk5JTkcsIFx1MDAyNmFyLVx1MDAzZWRldl9mbGFncykpIHtcbi1cdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbitcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbitcdFx0XHRcdFx0XHRcdCAgICBXQk1fRVJSX0RST1BfQ0FDX1JVTk5JTkcpO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG5pbmRleCA1ODdkNThlZWNjZmE1Li4xMTA0OGM1NjgzMzEwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmNcbkBAIC0xNjcsOCArMTY3LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfZHBfdHgoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LCBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphXG4gXHR0eF9yaW5nID0gXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1t0aS5yaW5nX2lkXTtcbiBcbiBcdHR4X2Rlc2MgPSBhdGgxMmtfZHBfdHhfYXNzaWduX2J1ZmZlcihkcCwgcG9vbF9pZCk7XG4tXHRpZiAoIXR4X2Rlc2MpXG4rXHRpZiAoIXR4X2Rlc2MpIHtcbitcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLnR4X2Vyci50eGJ1Zl9uYVtwb29sX2lkXSsrO1xuIFx0XHRyZXR1cm4gLUVOT01FTTtcbitcdH1cbiBcbiBcdGRwX2xpbmtfdmlmID0gYXRoMTJrX2RwX3ZpZl90b19kcF9saW5rX3ZpZihcdTAwMjZhaHZpZi1cdTAwM2VkcF92aWYsIGFydmlmLVx1MDAzZWxpbmtfaWQpO1xuIFxuQEAgLTU3NSwxOCArNTc3LDE5IEBAIGF0aDEya19kcF90eF9wcm9jZXNzX2h0dF90eF9jb21wbGV0ZShzdHJ1Y3QgYXRoMTJrX2RwICpkcCwgdm9pZCAqZGVzYyxcbiB7XG4gXHRzdHJ1Y3QgaHR0X3R4X3dibV9jb21wbGV0aW9uICpzdGF0dXNfZGVzYztcbiBcdHN0cnVjdCBhdGgxMmtfZHBfaHR0X3dibV90eF9zdGF0dXMgdHMgPSB7fTtcbi1cdGVudW0gaGFsX3dibV9odHRfdHhfY29tcF9zdGF0dXMgd2JtX3N0YXR1cztcbitcdGVudW0gaGFsX3dibV9odHRfdHhfY29tcF9zdGF0dXMgaHR0X3N0YXR1cztcbiBcdHUxNiBwZWVyX2lkO1xuIFxuIFx0c3RhdHVzX2Rlc2MgPSBkZXNjO1xuIFxuLVx0d2JtX3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtXHUwMDNlaW5mbzAsXG4rXHRodHRfc3RhdHVzID0gbGUzMl9nZXRfYml0cyhzdGF0dXNfZGVzYy1cdTAwM2VpbmZvMCxcbiBcdFx0XHRcdCAgIEhUVF9UWF9XQk1fQ09NUF9JTkZPMF9TVEFUVVMpO1xuLVx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLmZ3X3R4X3N0YXR1c1t3Ym1fc3RhdHVzXSsrO1xuK1x0aWYgKGxpa2VseShodHRfc3RhdHVzIFx1MDAzYyBNQVhfRldfVFhfU1RBVFVTKSlcbitcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLmZ3X3R4X3N0YXR1c1todHRfc3RhdHVzXSsrO1xuIFxuLVx0c3dpdGNoICh3Ym1fc3RhdHVzKSB7XG4rXHRzd2l0Y2ggKGh0dF9zdGF0dXMpIHtcbiBcdGNhc2UgSEFMX1dCTV9SRUxfSFRUX1RYX0NPTVBfU1RBVFVTX09LOlxuLVx0XHR0cy5hY2tlZCA9ICh3Ym1fc3RhdHVzID09IEhBTF9XQk1fUkVMX0hUVF9UWF9DT01QX1NUQVRVU19PSyk7XG4rXHRcdHRzLmFja2VkID0gdHJ1ZTtcbiBcdFx0dHMuYWNrX3Jzc2kgPSBsZTMyX2dldF9iaXRzKHN0YXR1c19kZXNjLVx1MDAzZWluZm8yLFxuIFx0XHRcdFx0XHQgICAgSFRUX1RYX1dCTV9DT01QX0lORk8yX0FDS19SU1NJKTtcbiBcbkBAIC02MDgsNyArNjExLDcgQEAgYXRoMTJrX2RwX3R4X3Byb2Nlc3NfaHR0X3R4X2NvbXBsZXRlKHN0cnVjdCBhdGgxMmtfZHAgKmRwLCB2b2lkICpkZXNjLFxuIFx0XHQgKi9cbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuLVx0XHRhdGgxMmtfd2FybihkcC1cdTAwM2VhYiwgXCJVbmtub3duIGh0dCB3Ym0gdHggc3RhdHVzICVkXFxuXCIsIHdibV9zdGF0dXMpO1xuK1x0XHRhdGgxMmtfd2FybihkcC1cdTAwM2VhYiwgXCJVbmtub3duIGh0dCB0eCBzdGF0dXMgJWRcXG5cIiwgaHR0X3N0YXR1cyk7XG4gXHRcdGJyZWFrO1xuIFx0fVxuIH1cbkBAIC05ODQsMTEgKzk4NywxNyBAQCB2b2lkIGF0aDEya193aWZpN19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDEya19kcCAqZHAsIGludCByaW5nX2lkKVxuIFx0XHQvKiBGaW5kIHRoZSBIQUxfV0JNX1JFTEVBU0VfSU5GTzBfUkVMX1NSQ19NT0RVTEUgdmFsdWUgKi9cbiBcdFx0YnVmX3JlbF9zb3VyY2UgPSBsZTMyX2dldF9iaXRzKHR4X3N0YXR1cy1cdTAwM2VpbmZvMCxcbiBcdFx0XHRcdFx0ICAgICAgIEhBTF9XQk1fUkVMRUFTRV9JTkZPMF9SRUxfU1JDX01PRFVMRSk7XG4tXHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0rKztcbitcdFx0aWYgKGxpa2VseShidWZfcmVsX3NvdXJjZSBcdTAwM2MgSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9NQVgpKVxuK1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0rKztcbitcdFx0ZWxzZVxuK1x0XHRcdFdBUk5fT05fT05DRSgxKTtcbiBcbiBcdFx0cmVsX3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHModHhfc3RhdHVzLVx1MDAzZWluZm8wLFxuIFx0XHRcdFx0XHQgICBIQUxfV0JNX0NPTVBMX1RYX0lORk8wX1RRTV9SRUxFQVNFX1JFQVNPTik7XG4tXHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50cW1fcmVsX3JlYXNvbltyZWxfc3RhdHVzXSsrO1xuK1x0XHRpZiAobGlrZWx5KHJlbF9zdGF0dXMgXHUwMDNjIE1BWF9UUU1fUkVMRUFTRV9SRUFTT04pKVxuK1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50cW1fcmVsX3JlYXNvbltyZWxfc3RhdHVzXSsrO1xuK1x0XHRlbHNlXG4rXHRcdFx0V0FSTl9PTl9PTkNFKDEpO1xuIFxuIFx0XHQvKiBSZWxlYXNlIGRlc2NyaXB0b3IgYXMgc29vbiBhcyBleHRyYWN0aW5nIG5lY2Vzc2FyeSBpbmZvXG4gXHRcdCAqIHRvIHJlZHVjZSBjb250ZW50aW9uXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9oYWxfcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaGFsX3J4LmNcbmluZGV4IDQ5YzY5MzI4OTcwOTQuLjYwZTdhMzYwOTdmMTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jXG5AQCAtMzI5LDcgKzMyOSwxMCBAQCBpbnQgYXRoMTJrX3dpZmk3X2hhbF9kZXNjX3Jlb19wYXJzZV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdFx0XHQgICAgSEFMX1JFT19ERVNUX1JJTkdfSU5GTzBfUFVTSF9SRUFTT04pO1xuIFx0ZXJyX2NvZGUgPSBsZTMyX2dldF9iaXRzKGRlc2MtXHUwMDNlaW5mbzAsXG4gXHRcdFx0XHQgSEFMX1JFT19ERVNUX1JJTkdfSU5GTzBfRVJST1JfQ09ERSk7XG4tXHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMucmVvX2Vycm9yW2Vycl9jb2RlXSsrO1xuK1x0aWYgKGxpa2VseShlcnJfY29kZSBcdTAwM2MgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVgpKVxuK1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5yZW9fZXJyb3JbZXJyX2NvZGVdKys7XG4rXHRlbHNlXG4rXHRcdFdBUk5fT05fT05DRSgxKTtcbiBcbiBcdGlmIChwdXNoX3JlYXNvbiAhPSBIQUxfUkVPX0RFU1RfUklOR19QVVNIX1JFQVNPTl9FUlJfREVURUNURUQgXHUwMDI2XHUwMDI2XG4gXHQgICAgcHVzaF9yZWFzb24gIT0gSEFMX1JFT19ERVNUX1JJTkdfUFVTSF9SRUFTT05fUk9VVElOR19JTlNUUlVDVElPTikge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6MTY6MjcuMDUwOTgwOTg5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI5NDM2MTgzOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgYXRoMTJrIERyaXZlciBEZWJ1Z2ZzIGFuZCBTdGF0cyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgYXRoMTJrYCB3aXJlbGVzcyBkcml2ZXIuIEl0J3MgYSBRdWFsY29tbSBXaS1GaSA3IGRyaXZlciwgc28gaW1tZWRpYXRlbHkgSSdtIHRoaW5raW5nIGFib3V0IGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gVGhpcyBwYXRjaCBzZWVtcyBmb2N1c2VkIG9uIGVuaGFuY2luZyBkZWJ1Z2ZzIHN0YXRpc3RpY3MsIHdoaWNoIGlzIGNvbW1vbi4gSSBzZWUgYWRkaXRpb25zIGFuZCB1cGRhdGVzIHRvIHRoZSBgYXRoMTJrYCBkZWJ1Z2ZzIGludGVyZmFjZS4gU3BlY2lmaWNhbGx5LCB3ZSd2ZSBnb3QgbW9yZSBzdGF0cyBiZWluZyBkdW1wZWQsIGEgd2F5IHRvIHJlc2V0IHRoZSBzdGF0cyB2aWEgYSB3cml0ZSBoYW5kbGVyIChgZWNobyByZXNldCBcdTAwM2UgZGV2aWNlX2RwX3N0YXRzYCksIGFuZCBmaWxlIHBlcm1pc3Npb24gY2hhbmdlcy5cblxuVGhlIGNvcmUgb2YgdGhlIHBhdGNoIGludm9sdmVzIGFkZGluZyBuZXcgZmllbGRzIHRvIHZhcmlvdXMgYHN0cnVjdGBzIHJlbGF0ZWQgdG8gZGV2aWNlIHN0YXRpc3RpY3MgKGBhdGgxMmtfZGV2aWNlX2RwX3R4X2Vycl9zdGF0c2AsIGBhdGgxMmtfZGV2aWNlX2RwX3N0YXRzYCwgYW5kIGBhdGgxMmtfZGV2aWNlX2RwX3J4X3dibV9lcnJfc3RhdHNgKS4gVGhlcmUgYXJlIGFsc28gdXBkYXRlcyB0byBzZXZlcmFsIGZ1bmN0aW9ucyAoYGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3JlY2VpdmVkX3BhY2tldHNgLCBgYXRoMTJrX3dpZmk3X2RwX3R4YCwgZXRjLikgdG8gaW5jcmVtZW50IHRoZXNlIG5ldyBzdGF0cy4gSW1wb3J0YW50bHksIHRoZXJlIGFyZSBuZXcgYm91bmRzIGNoZWNrcywgYW5kIGBXQVJOX09OX09OQ0VgIGNhbGxzLCB3aGljaCBpcyBhIGdvb2Qgc2FmZXR5IG1lYXN1cmUuXG5cblRoZSBjcnVjaWFsIGFkZGl0aW9uIGlzIHRoZSBib3VuZHMgY2hlY2tpbmcgb24gYXJyYXkgYWNjZXNzZXMsIGxpa2UgdGhpczpcblxuYGBgY1xuLVx0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMudHhfd2JtX3JlbF9zb3VyY2VbYnVmX3JlbF9zb3VyY2VdKys7XG4rXHRcdGlmIChsaWtlbHkoYnVmX3JlbF9zb3VyY2UgXHUwMDNjIEhBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYKSlcbitcdFx0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMudHhfd2JtX3JlbF9zb3VyY2VbYnVmX3JlbF9zb3VyY2VdKys7XG4rXHRcdGVsc2VcbitcdFx0XHRXQVJOX09OX09OQ0UoMSk7XG5gYGBcblxuVGhpcyBpcyB0aGUga2V5IHBvaW50LiBXZSdyZSBwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzZXMgd2l0aGluIHRoZSBzdGF0aXN0aWNzIGNvbGxlY3Rpb24sIHdoaWNoIGNvdWxkIGJlIGV4cGxvaXRlZCBieSBtYWxpY2lvdXMgZmlybXdhcmUgb3IgaGFyZHdhcmUgZGVzY3JpcHRvcnMuIFRoaXMgcHJldmVudHMgbWVtb3J5IGNvcnJ1cHRpb24uIFRoZSByZXNldCBmdW5jdGlvbmFsaXR5IHZpYSBkZWJ1Z2ZzIGlzIGp1c3QgYSBjb252ZW5pZW5jZS5cblxuTm93LCB0aGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgc29tZXRoaW5nIHRvIGZ1eno/IFRoZSBwYXRjaCAqYWRkcyogYm91bmRzIGNoZWNrcywgYW5kIGl0IHByb3ZpZGVzIGEgcmVzZXQgaW50ZXJmYWNlLiBUaGUgYm91bmRzIGNoZWNrcyBpbXByb3ZlIHNlY3VyaXR5IGFuZCBzdGFiaWxpdHkgYnV0IGFyZSBub3QgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdHJhZGl0aW9uYWwgc2Vuc2UuIFRoZSByZXNldCBpcyBub3QgdHlwaWNhbGx5IGNvbnNpZGVyZWQgY3JpdGljYWwuXG5cbkdpdmVuIHRoYXQgYGF0aDEya2AgaXMgYSB3aXJlbGVzcyBkcml2ZXIsIGl0IGludGVyYWN0cyB3aXRoIGZpcm13YXJlLiBUaGUgbW9zdCBsaWtlbHkgYXR0YWNrIHN1cmZhY2UgaXMgdGhlIGZpcm13YXJlIGludGVyZmFjZS4gVG8gcHJvcGVybHkgZnV6eiB0aGUgZHJpdmVyLCBJJ2QgbGlrZWx5IG5lZWQgdG8gZ2VuZXJhdGUgbWFsaWNpb3VzIGZpcm13YXJlIGRlc2NyaXB0b3JzLiBUaGlzIG1lYW5zIEknZCBuZWVkIGVpdGhlciBhY3R1YWwgaGFyZHdhcmUgb3IgYSBoaWdoLWZpZGVsaXR5IFBDSS9BSEIgZW11bGF0aW9uLiBDYW4gYGF0aDEya2AgYmUgcmVhbGlzdGljYWxseSBmdXp6ZWQgaW4gUUVNVT8gUHJvYmFibHkgbm90LiBJdCdzIGRlc2lnbmVkIGZvciBzcGVjaWZpYyBRdWFsY29tbSBoYXJkd2FyZS4gSSBoYXZlIHRvIGNoZWNrIHRoZSBwcm9tcHQncyBjb25kaXRpb24gdGhvdWdoLlxuXG5UaGUgcHJvbXB0IHNheXMgdG8gcmV0dXJuIFwiV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiAtIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIlxuXG5gYXRoMTJrYCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llL0FIQiBXaS1GaSBkcml2ZXIgYW5kIGlzIGRlZmluaXRlbHkgZ29pbmcgdG8gbmVlZCBzcGVjaWZpYyBRdWFsY29tbSBoYXJkd2FyZS4gR2l2ZW4gdGhlIHByb3ZpZGVkIHByb21wdCwgdGhpcyBwYXRjaCBpcyAqKm5vdCoqIHdvcnRoIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTA4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjE2OjM5Ljk5NDYwMjE4MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjI1ODc3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfcmVnaXN0ZXJfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTgxMj1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgX19tYXliZV91bnVzZWQgYXRoMTJrX3BjaV9wbV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxODE5OmludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MjAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBhdGgxMmtfcGNpX2RyaXZlciAqZHJpdmVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xODQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTg0NjpcXHRyZXR1cm4gcGNpX3JlZ2lzdGVyX2RyaXZlcihwY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4NDctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTg0ODpFWFBPUlRfU1lNQk9MKGF0aDEya19wY2lfcmVnaXN0ZXJfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4NDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oPTE3Nj12b2lkIGF0aDEya19wY2lfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg6MTc3OmludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oLTE3OC1cXHRcXHRcXHQgICAgICAgc3RydWN0IGF0aDEya19wY2lfZHJpdmVyICpkcml2ZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYz0xOTc9aW50IGF0aDEya193aWZpN19wY2lfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy0yMDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYzoyMDE6XFx0cmV0ID0gYXRoMTJrX3BjaV9yZWdpc3Rlcl9kcml2ZXIoQVRIMTJLX0RFVklDRV9GQU1JTFlfV0lGSTcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy0yMDItXFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZhdGgxMmtfd2lmaTdfcGNpX2RyaXZlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjE2OjQwLjA0MDg2MzgwOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3ODQzNDAyNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYXRoMTJrIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gWWVwLCB0aGUgYGF0aDEya2AgZHJpdmVyLi4uIHRoYXQncyBRdWFsY29tbSdzIFBDSWUgZHJpdmVyIGZvciB0aGVpciBXaS1GaSA3IHNpbGljb24uIFJpZ2h0IGF3YXksIEkga25vdyB0aGlzIGlzIGdvaW5nIHRvIGJlIGEgaGFyZHdhcmUtZGVwZW5kZW50IHBpZWNlOyBpdCdzIG5vdCBzb21ldGhpbmcgeW91IGNhbiBqdXN0IHNwaW4gdXAgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBUaGUgY29yZSBvZiB0aGlzIHByb3Bvc2VkIHBhdGNoIGlzIGFkZGluZyBkZWJ1Z2ZzIHN0YXRpc3RpY3MgYW5kIHNvbWUgYXNzb2NpYXRlZCBib3VuZHMgY2hlY2tzLiBUaGF0J3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgcmVhbGx5LiBHaXZlbiB0aGF0IHRoZSBkcml2ZXIgbmVlZHMgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIHRoZSBjaGFuZ2VzIGFyZSBtb3N0bHkgZm9jdXNlZCBvbiBzdGF0aXN0aWNzIGdhdGhlcmluZyBhbmQgdmFsaWRhdGlvbiwgSSdtIGdvaW5nIHRvIGhhdmUgdG8gbWFrZSBhIGNhbGwgaGVyZS5cblxuSSdtIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggaW1wYWN0cyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIFdpLUZpIGRyaXZlciwgdGhlIGBhdGgxMmtgLCB3aGljaCBuZWNlc3NpdGF0ZXMgcGh5c2ljYWwgaGFyZHdhcmUgZm9yIG9wZXJhdGlvbiBhbmQgd2hpY2ggaXNuJ3QgZW11bGF0ZWQgd2l0aGluIFFFTVUuIEZ1cnRoZXIsIHRoZSBwYXRjaCdzIGNlbnRyYWwgbW9kaWZpY2F0aW9ucyByZWxhdGUgdG8gdGhlIGFkZGl0aW9uIG9mIGRlYnVnZnMgc3RhdGlzdGljcyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBib3VuZHMgY2hlY2tzLiBUaGVzZSB0eXBlcyBvZiBjaGFuZ2VzIGRvbid0IHByb3ZpZGUgYSBmcnVpdGZ1bCBlbnZpcm9ubWVudCBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI1MTUsIk91dHB1dFRva2VucyI6OTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMTg6MTY6NDQuODI1MjA2MzA5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBXaS1GaSBkcml2ZXIgcmVxdWlyaW5nIHBoeXNpY2FsIFF1YWxjb21tIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgcHJpbWFyaWx5IGNvbnNpc3Qgb2YgYWRkaW5nIGRlYnVnZnMgc3RhdGlzdGljcyBhbmQgYm91bmRzIGNoZWNrcyBmb3IgdGhvc2Ugc3RhdGlzdGljcywgd2hpY2ggYXJlIG5vdCBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgV2ktRmkgZHJpdmVyIHJlcXVpcmluZyBwaHlzaWNhbCBRdWFsY29tbSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIHByaW1hcmlseSBjb25zaXN0IG9mIGFkZGluZyBkZWJ1Z2ZzIHN0YXRpc3RpY3MgYW5kIGJvdW5kcyBjaGVja3MgZm9yIHRob3NlIHN0YXRpc3RpY3MsIHdoaWNoIGFyZSBub3QgY29yZSBmdW5jdGlvbmFsIGNoYW5nZXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDE4OjE2OjQ0LjgyNTIyOTAzOVoiLCJTZXEiOjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowls7jv[1] Phase: Running StartedAt: 2026-08-10 18:16:56 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowls7jv[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-10 18:16:56 +0000 UTC FinishedAt: 2026-08-10 18:17:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}