Name: series-workflowghd2g Phase: Failed StartedAt: 2026-07-10 19:30:18 +0000 UTC FinishedAt: 2026-07-10 19:50:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowghd2g[0] Phase: Succeeded StartedAt: 2026-07-10 19:30:18 +0000 UTC FinishedAt: 2026-07-10 19:50:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowghd2g[0].run-triage Phase: Succeeded StartedAt: 2026-07-10 19:30:18 +0000 UTC FinishedAt: 2026-07-10 19:50:36 +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+CgkJCTx0ZD4yMDI2LzA3LzEwIDE5OjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgbGFyZ2UgcmVmYWN0b3JpbmcgYWltZWQgYXQgZml4aW5nIHNwYXJzZSB3YXJuaW5ncy4gSXQgcmVtb3ZlcyBgZXh0ZXJuYCBmcm9tIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBpbiBoZWFkZXJzLCByZW1vdmVzIGN1c3RvbSBzcGFyc2UgYW5ub3RhdGlvbnMgbGlrZSBgX19tdXN0X2hvbGQobG9jYWwpYCwgYF9fYWNxdWlyZShsb2NhbClgLCBgX19yZWxlYXNlKGxvY2FsKWAsIGFuZCByZWZhY3RvcnMgY29kZSB0byBhdm9pZCBjb25kaXRpb25hbCBsb2NraW5nIChlLmcuIGBkcmJkX3JlcV9zdGF0ZWApLiBJdCBhbHNvIHJlbW92ZXMgYSBmZXcgZGVmZW5zaXZlIE5VTEwgY2hlY2tzIGFuZCBhIHdhcm5pbmcgb24gbG9jayBjb250ZW50aW9uIGluIGBkcmJkX2JtX2xvY2tgLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIGxvZ2ljIHRoYXQgd291bGQgcmVxdWlyZSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxOTo0OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ1YmI0YTgwZGM5NTM4ZDkzY2M5Zjk1ZWU1MTc0ODcwYjAwY2RhZDFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxMCAxOTo0OTo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvTWFrZWZpbGUgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvTWFrZWZpbGVcbmluZGV4IDVmYWFhOGE4ZTdmMDI5Li5jYWU2NTU3ODAwMWJjNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9kcmJkL01ha2VmaWxlXG5AQCAtMSw0ICYjNDM7MSw3IEBAXG4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4mIzQzO1xuJiM0MztDT05URVhUX0FOQUxZU0lTIDo9IHlcbiYjNDM7XG4gZHJiZC15IDo9IGRyYmRfYnVpbGR0YWcubyBkcmJkX2JpdG1hcC5vIGRyYmRfcHJvYy5vXG4gZHJiZC15ICYjNDM7PSBkcmJkX3dvcmtlci5vIGRyYmRfcmVjZWl2ZXIubyBkcmJkX3JlcS5vIGRyYmRfYWN0bG9nLm9cbiBkcmJkLXkgJiM0Mzs9IGRyYmRfbWFpbi5vIGRyYmRfc3RyaW5ncy5vIGRyYmRfbmwub1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2JpdG1hcC5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYml0bWFwLmNcbmluZGV4IDY1ZWE2ZWM2NmJmZDVjLi5kODQ5YmQ3ODBjYTk2NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2JpdG1hcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9iaXRtYXAuY1xuQEAgLTEyMiwyNCAmIzQzOzEyMiwxMyBAQCBzdGF0aWMgdm9pZCBfX2JtX3ByaW50X2xvY2tfaW5mbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqZnVuYylcbiB9XG4gXG4gdm9pZCBkcmJkX2JtX2xvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNoYXIgKndoeSwgZW51bSBibV9mbGFnIGZsYWdzKVxuJiM0MztcdF9fYWNxdWlyZXMoZHJiZF9kZXZfYm1fbG9jaylcbiYjNDM7XHRfX2FjcXVpcmVzKFx1MDAyNmRldmljZS1cdTAwM2ViaXRtYXAtXHUwMDNlYm1fY2hhbmdlKVxuIHtcbiBcdHN0cnVjdCBkcmJkX2JpdG1hcCAqYiA9IGRldmljZS1cdTAwM2ViaXRtYXA7XG4tXHRpbnQgdHJ5bG9ja19mYWlsZWQ7XG4gXG4tXHRpZiAoIWIpIHtcbi1cdFx0ZHJiZF9lcnIoZGV2aWNlLCBcJiMzNDtGSVhNRSBubyBiaXRtYXAgaW4gZHJiZF9ibV9sb2NrIT9cXG5cJiMzNDspO1xuLVx0XHRyZXR1cm47XG4tXHR9XG4tXG4tXHR0cnlsb2NrX2ZhaWxlZCA9ICFtdXRleF90cnlsb2NrKFx1MDAyNmItXHUwMDNlYm1fY2hhbmdlKTtcbi1cbi1cdGlmICh0cnlsb2NrX2ZhaWxlZCkge1xuLVx0XHRkcmJkX3dhcm4oZGV2aWNlLCBcJiMzNDslc1slZF0gZ29pbmcgdG8gJiMzOTslcyYjMzk7IGJ1dCBiaXRtYXAgYWxyZWFkeSBsb2NrZWQgZm9yICYjMzk7JXMmIzM5OyBieSAlc1slZF1cXG5cJiMzNDssXG4tXHRcdFx0ICBjdXJyZW50LVx1MDAzZWNvbW0sIHRhc2tfcGlkX25yKGN1cnJlbnQpLFxuLVx0XHRcdCAgd2h5LCBiLVx1MDAzZWJtX3doeSA/OiBcJiMzNDs/XCYjMzQ7LFxuLVx0XHRcdCAgYi1cdTAwM2VibV90YXNrLVx1MDAzZWNvbW0sIHRhc2tfcGlkX25yKGItXHUwMDNlYm1fdGFzaykpO1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNmItXHUwMDNlYm1fY2hhbmdlKTtcbi1cdH1cbiYjNDM7XHRfX2FjcXVpcmUoZHJiZF9kZXZfYm1fbG9jayk7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZiLVx1MDAzZWJtX2NoYW5nZSk7XG4gXHRpZiAoQk1fTE9DS0VEX01BU0sgXHUwMDI2IGItXHUwMDNlYm1fZmxhZ3MpXG4gXHRcdGRyYmRfZXJyKGRldmljZSwgXCYjMzQ7RklYTUUgYml0bWFwIGFscmVhZHkgbG9ja2VkIGluIGJtX2xvY2tcXG5cJiMzNDspO1xuIFx0Yi1cdTAwM2VibV9mbGFncyB8PSBmbGFncyBcdTAwMjYgQk1fTE9DS0VEX01BU0s7XG5AQCAtMTQ5LDEyICYjNDM7MTM4LDEwIEBAIHZvaWQgZHJiZF9ibV9sb2NrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncylcbiB9XG4gXG4gdm9pZCBkcmJkX2JtX3VubG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbiYjNDM7XHRfX3JlbGVhc2VzKGRyYmRfZGV2X2JtX2xvY2spXG4mIzQzO1x0X19yZWxlYXNlcyhcdTAwMjZkZXZpY2UtXHUwMDNlYml0bWFwLVx1MDAzZWJtX2NoYW5nZSlcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9iaXRtYXAgKmIgPSBkZXZpY2UtXHUwMDNlYml0bWFwO1xuLVx0aWYgKCFiKSB7XG4tXHRcdGRyYmRfZXJyKGRldmljZSwgXCYjMzQ7RklYTUUgbm8gYml0bWFwIGluIGRyYmRfYm1fdW5sb2NrIT9cXG5cJiMzNDspO1xuLVx0XHRyZXR1cm47XG4tXHR9XG4gXG4gXHRpZiAoIShCTV9MT0NLRURfTUFTSyBcdTAwMjYgZGV2aWNlLVx1MDAzZWJpdG1hcC1cdTAwM2VibV9mbGFncykpXG4gXHRcdGRyYmRfZXJyKGRldmljZSwgXCYjMzQ7RklYTUUgYml0bWFwIG5vdCBsb2NrZWQgaW4gYm1fdW5sb2NrXFxuXCYjMzQ7KTtcbkBAIC0xNjMsNiAmIzQzOzE1MCw3IEBAIHZvaWQgZHJiZF9ibV91bmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXG4gXHRiLVx1MDAzZWJtX3doeSAgPSBOVUxMO1xuIFx0Yi1cdTAwM2VibV90YXNrID0gTlVMTDtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZiLVx1MDAzZWJtX2NoYW5nZSk7XG4mIzQzO1x0X19yZWxlYXNlKGRyYmRfZGV2X2JtX2xvY2spO1xuIH1cbiBcbiAvKiB3ZSBzdG9yZSBzb21lIFwmIzM0O21ldGFcJiMzNDsgaW5mbyBhYm91dCBvdXIgcGFnZXMgaW4gcGFnZS1cdTAwM2Vwcml2YXRlICovXG5AQCAtOTg3LDcgJiM0Mzs5NzUsNyBAQCBzdGF0aWMgaW5saW5lIHNlY3Rvcl90IGRyYmRfbWRfbGFzdF9iaXRtYXBfc2VjdG9yKHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2KVxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBibV9wYWdlX2lvX2FzeW5jKHN0cnVjdCBkcmJkX2JtX2Fpb19jdHggKmN0eCwgaW50IHBhZ2VfbnIpIF9fbXVzdF9ob2xkKGxvY2FsKVxuJiM0MztzdGF0aWMgdm9pZCBibV9wYWdlX2lvX2FzeW5jKHN0cnVjdCBkcmJkX2JtX2Fpb19jdHggKmN0eCwgaW50IHBhZ2VfbnIpXG4ge1xuIFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBjdHgtXHUwMDNlZGV2aWNlO1xuIFx0ZW51bSByZXFfb3Agb3AgPSBjdHgtXHUwMDNlZmxhZ3MgXHUwMDI2IEJNX0FJT19SRUFEID8gUkVRX09QX1JFQUQgOiBSRVFfT1BfV1JJVEU7XG5AQCAtMTA2MCw3ICYjNDM7MTA0OCw4IEBAIHN0YXRpYyB2b2lkIGJtX3BhZ2VfaW9fYXN5bmMoc3RydWN0IGRyYmRfYm1fYWlvX2N0eCAqY3R4LCBpbnQgcGFnZV9ucikgX19tdXN0X2hvXG4gLypcbiAgKiBibV9ydzogcmVhZC93cml0ZSB0aGUgd2hvbGUgYml0bWFwIGZyb20vdG8gaXRzIG9uIGRpc2sgbG9jYXRpb24uXG4gICovXG4tc3RhdGljIGludCBibV9ydyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgdW5zaWduZWQgaW50IGZsYWdzLCB1bnNpZ25lZCBsYXp5X3dyaXRlb3V0X3VwcGVyX2lkeCkgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO3N0YXRpYyBpbnQgYm1fcncoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IHVuc2lnbmVkIGludCBmbGFncyxcbiYjNDM7XHRcdCB1bnNpZ25lZCBsYXp5X3dyaXRlb3V0X3VwcGVyX2lkeClcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9ibV9haW9fY3R4ICpjdHg7XG4gXHRzdHJ1Y3QgZHJiZF9iaXRtYXAgKmIgPSBkZXZpY2UtXHUwMDNlYml0bWFwO1xuQEAgLTEyMTUsNyAmIzQzOzEyMDQsNyBAQCBzdGF0aWMgaW50IGJtX3J3KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHVuc2lnbmVkXG4gICogQGRldmljZTpcdERSQkQgZGV2aWNlLlxuICAqL1xuIGludCBkcmJkX2JtX3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxuJiM0MztcdFx0IHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcbiBcbiB7XG4gXHRyZXR1cm4gYm1fcncoZGV2aWNlLCBCTV9BSU9fUkVBRCwgMCk7XG5AQCAtMTIyOCw3ICYjNDM7MTIxNyw3IEBAIGludCBkcmJkX2JtX3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4gICogV2lsbCBvbmx5IHdyaXRlIHBhZ2VzIHRoYXQgaGF2ZSBjaGFuZ2VkIHNpbmNlIGxhc3QgSU8uXG4gICovXG4gaW50IGRyYmRfYm1fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxuJiM0MztcdFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXG4ge1xuIFx0cmV0dXJuIGJtX3J3KGRldmljZSwgMCwgMCk7XG4gfVxuQEAgLTEyNDAsNyAmIzQzOzEyMjksNyBAQCBpbnQgZHJiZF9ibV93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiAgKiBXaWxsIHdyaXRlIGFsbCBwYWdlcy5cbiAgKi9cbiBpbnQgZHJiZF9ibV93cml0ZV9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO1x0XHQgICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXG4ge1xuIFx0cmV0dXJuIGJtX3J3KGRldmljZSwgQk1fQUlPX1dSSVRFX0FMTF9QQUdFUywgMCk7XG4gfVxuQEAgLTEyNTAsNyAmIzQzOzEyMzksNyBAQCBpbnQgZHJiZF9ibV93cml0ZV9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4gICogQGRldmljZTpcdERSQkQgZGV2aWNlLlxuICAqIEB1cHBlcl9pZHg6XHQwOiB3cml0ZSBhbGwgY2hhbmdlZCBwYWdlczsgJiM0Mzt2ZTogcGFnZSBpbmRleCB0byBzdG9wIHNjYW5uaW5nIGZvciBjaGFuZ2VkIHBhZ2VzXG4gICovXG4taW50IGRyYmRfYm1fd3JpdGVfbGF6eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgdXBwZXJfaWR4KSBfX211c3RfaG9sZChsb2NhbClcbiYjNDM7aW50IGRyYmRfYm1fd3JpdGVfbGF6eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgdXBwZXJfaWR4KVxuIHtcbiBcdHJldHVybiBibV9ydyhkZXZpY2UsIEJNX0FJT19DT1BZX1BBR0VTLCB1cHBlcl9pZHgpO1xuIH1cbkBAIC0xMjY3LDcgJiM0MzsxMjU2LDcgQEAgaW50IGRyYmRfYm1fd3JpdGVfbGF6eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgdXBwZXJfaWR4KSBfX211c3RfaG9cbiAgKiBwZW5kaW5nIHJlc3luYyBhY2tzIGFyZSBzdGlsbCBiZWluZyBwcm9jZXNzZWQuXG4gICovXG4gaW50IGRyYmRfYm1fd3JpdGVfY29weV9wYWdlcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXG4ge1xuIFx0cmV0dXJuIGJtX3J3KGRldmljZSwgQk1fQUlPX0NPUFlfUEFHRVMsIDApO1xuIH1cbkBAIC0xMjc2LDcgJiM0MzsxMjY1LDcgQEAgaW50IGRyYmRfYm1fd3JpdGVfY29weV9wYWdlcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiAgKiBkcmJkX2JtX3dyaXRlX2hpbnRlZCgpIC0gV3JpdGUgYml0bWFwIHBhZ2VzIHdpdGggXCYjMzQ7aGludFwmIzM0OyBtYXJrcywgaWYgdGhleSBoYXZlIGNoYW5nZWQuXG4gICogQGRldmljZTpcdERSQkQgZGV2aWNlLlxuICAqL1xuLWludCBkcmJkX2JtX3dyaXRlX2hpbnRlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO2ludCBkcmJkX2JtX3dyaXRlX2hpbnRlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbiB7XG4gXHRyZXR1cm4gYm1fcncoZGV2aWNlLCBCTV9BSU9fV1JJVEVfSElOVEVEIHwgQk1fQUlPX0NPUFlfUEFHRVMsIDApO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9jb25maWcuaCBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2NvbmZpZy5oXG5pbmRleCBkMjE1MzY1YzZiYjFiMC4uMTZhOTg1YjMwZGQzZmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9jb25maWcuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfY29uZmlnLmhcbkBAIC03LDcgJiM0Mzs3LDcgQEBcbiAjaWZuZGVmIERSQkRfQ09ORklHX0hcbiAjZGVmaW5lIERSQkRfQ09ORklHX0hcbiBcbi1leHRlcm4gY29uc3QgY2hhciAqZHJiZF9idWlsZHRhZyh2b2lkKTtcbiYjNDM7Y29uc3QgY2hhciAqZHJiZF9idWlsZHRhZyh2b2lkKTtcbiBcbiAjZGVmaW5lIFJFTF9WRVJTSU9OIFwmIzM0OzguNC4xMVwmIzM0O1xuICNkZWZpbmUgUFJPX1ZFUlNJT05fTUlOIDg2XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50LmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9pbnQuaFxuaW5kZXggNDhiNDVjMzE0MmY3NmEuLjczY2VhYWIzODQyZDBlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludC5oXG5AQCAtMTA5LDcgJiM0MzsxMDksNyBAQCBleHRlcm4gc3RydWN0IHJhdGVsaW1pdF9zdGF0ZSBkcmJkX3JhdGVsaW1pdF9zdGF0ZTtcbiBleHRlcm4gc3RydWN0IGlkciBkcmJkX2RldmljZXM7IC8qIFJDVSwgdXBkYXRlczogZ2VubF9sb2NrKCkgKi9cbiBleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBkcmJkX3Jlc291cmNlczsgLyogUkNVLCB1cGRhdGVzOiBnZW5sX2xvY2soKSAqL1xuIFxuLWV4dGVybiBjb25zdCBjaGFyICpjbWRuYW1lKGVudW0gZHJiZF9wYWNrZXQgY21kKTtcbiYjNDM7Y29uc3QgY2hhciAqY21kbmFtZShlbnVtIGRyYmRfcGFja2V0IGNtZCk7XG4gXG4gLyogZm9yIHNlbmRpbmcvcmVjZWl2aW5nIHRoZSBiaXRtYXAsXG4gICogcG9zc2libHkgaW4gc29tZSBlbmNvZGluZyBzY2hlbWUgKi9cbkBAIC0xMjksOCAmIzQzOzEyOSw4IEBAIHN0cnVjdCBibV94ZmVyX2N0eCB7XG4gXHR1bnNpZ25lZCBieXRlc1syXTtcbiB9O1xuIFxuLWV4dGVybiB2b2lkIElORk9fYm1feGZlcl9zdGF0cyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsXG4tXHRcdFx0ICAgICAgIGNvbnN0IGNoYXIgKmRpcmVjdGlvbiwgc3RydWN0IGJtX3hmZXJfY3R4ICpjKTtcbiYjNDM7dm9pZCBJTkZPX2JtX3hmZXJfc3RhdHMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLFxuJiM0MztcdFx0XHRjb25zdCBjaGFyICpkaXJlY3Rpb24sIHN0cnVjdCBibV94ZmVyX2N0eCAqYyk7XG4gXG4gc3RhdGljIGlubGluZSB2b2lkIGJtX3hmZXJfY3R4X2JpdF90b193b3JkX29mZnNldChzdHJ1Y3QgYm1feGZlcl9jdHggKmMpXG4ge1xuQEAgLTE1MSw3ICYjNDM7MTUxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGJtX3hmZXJfY3R4X2JpdF90b193b3JkX29mZnNldChzdHJ1Y3QgYm1feGZlcl9jdHggKmMpXG4gI2VuZGlmXG4gfVxuIFxuLWV4dGVybiB1bnNpZ25lZCBpbnQgZHJiZF9oZWFkZXJfc2l6ZShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbiYjNDM7dW5zaWduZWQgaW50IGRyYmRfaGVhZGVyX3NpemUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4gXG4gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gZW51bSBkcmJkX3RocmVhZF9zdGF0ZSB7XG5AQCAtMTk1LDEwICYjNDM7MTk1LDEwIEBAIHN0cnVjdCBkcmJkX2RldmljZV93b3JrIHtcbiBcbiAjaW5jbHVkZSBcJiMzNDtkcmJkX2ludGVydmFsLmhcJiMzNDtcbiBcbi1leHRlcm4gaW50IGRyYmRfd2FpdF9taXNjKHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqKTtcbiYjNDM7ZXh0ZXJuIHN0cnVjdCBtdXRleCByZXNvdXJjZXNfbXV0ZXg7XG4gXG4tZXh0ZXJuIHZvaWQgbG9ja19hbGxfcmVzb3VyY2VzKHZvaWQpO1xuLWV4dGVybiB2b2lkIHVubG9ja19hbGxfcmVzb3VyY2VzKHZvaWQpO1xuJiM0Mzt2b2lkIGxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKSBfX2FjcXVpcmVzKFx1MDAyNnJlc291cmNlc19tdXRleCk7XG4mIzQzO3ZvaWQgdW5sb2NrX2FsbF9yZXNvdXJjZXModm9pZCkgX19yZWxlYXNlcyhcdTAwMjZyZXNvdXJjZXNfbXV0ZXgpO1xuIFxuIHN0cnVjdCBkcmJkX3JlcXVlc3Qge1xuIFx0c3RydWN0IGRyYmRfd29yayB3O1xuQEAgLTU1OSw3ICYjNDM7NTU5LDcgQEAgc3RydWN0IGZpZm9fYnVmZmVyIHtcbiBcdGludCB0b3RhbDsgLyogc3VtIG9mIGFsbCB2YWx1ZXMgKi9cbiBcdGludCB2YWx1ZXNbXSBfX2NvdW50ZWRfYnkoc2l6ZSk7XG4gfTtcbi1leHRlcm4gc3RydWN0IGZpZm9fYnVmZmVyICpmaWZvX2FsbG9jKHVuc2lnbmVkIGludCBmaWZvX3NpemUpO1xuJiM0MztzdHJ1Y3QgZmlmb19idWZmZXIgKmZpZm9fYWxsb2ModW5zaWduZWQgaW50IGZpZm9fc2l6ZSk7XG4gXG4gLyogZmxhZyBiaXRzIHBlciBjb25uZWN0aW9uICovXG4gZW51bSB7XG5AQCAtOTk4LDkzICYjNDM7OTk4LDEwNCBAQCBlbnVtIGRkc19mbGFncyB7XG4gXHRERFNGX05PX1JFU1lOQyA9IDIsIC8qIERvIG5vdCBydW4gYSByZXN5bmMgZm9yIHRoZSBuZXcgc3BhY2UgKi9cbiB9O1xuIFxuLWV4dGVybiB2b2lkIGRyYmRfaW5pdF9zZXRfZGVmYXVsdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiBpbnQgIGRyYmRfdGhyZWFkX3N0YXJ0KHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTtcbi1leHRlcm4gdm9pZCBfZHJiZF90aHJlYWRfc3RvcChzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSwgaW50IHJlc3RhcnQsIGludCB3YWl0KTtcbiYjNDM7dm9pZCBkcmJkX2luaXRfc2V0X2RlZmF1bHRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbiYjNDM7aW50IGRyYmRfdGhyZWFkX3N0YXJ0KHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTtcbiYjNDM7dm9pZCBfZHJiZF90aHJlYWRfc3RvcChzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSwgaW50IHJlc3RhcnQsIGludCB3YWl0KTtcbiAjaWZkZWYgQ09ORklHX1NNUFxuLWV4dGVybiB2b2lkIGRyYmRfdGhyZWFkX2N1cnJlbnRfc2V0X2NwdShzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7XG4mIzQzO3ZvaWQgZHJiZF90aHJlYWRfY3VycmVudF9zZXRfY3B1KHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTtcbiAjZWxzZVxuICNkZWZpbmUgZHJiZF90aHJlYWRfY3VycmVudF9zZXRfY3B1KEEpICh7fSlcbiAjZW5kaWZcbi1leHRlcm4gdm9pZCB0bF9yZWxlYXNlKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwgdW5zaWduZWQgaW50IGJhcnJpZXJfbnIsXG4tXHRcdCAgICAgICB1bnNpZ25lZCBpbnQgc2V0X3NpemUpO1xuLWV4dGVybiB2b2lkIHRsX2NsZWFyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9mcmVlX3NvY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgc3RydWN0IHNvY2tldCAqc29jayxcbi1cdFx0ICAgICB2b2lkICpidWYsIHNpemVfdCBzaXplLCB1bnNpZ25lZCBtc2dfZmxhZ3MpO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kX2FsbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHN0cnVjdCBzb2NrZXQgKiwgdm9pZCAqLCBzaXplX3QsXG4tXHRcdFx0IHVuc2lnbmVkKTtcbi1cbi1leHRlcm4gaW50IF9fZHJiZF9zZW5kX3Byb3RvY29sKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGVudW0gZHJiZF9wYWNrZXQgY21kKTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9wcm90b2NvbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF91dWlkcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF91dWlkc19za2lwX2luaXRpYWxfc3luYyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcbi1leHRlcm4gdm9pZCBkcmJkX2dlbl9hbmRfc2VuZF9zeW5jX3V1aWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfc2l6ZXMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgaW50IHRyaWdnZXJfcmVwbHksIGVudW0gZGRzX2ZsYWdzIGZsYWdzKTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9zdGF0ZShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlIHMpO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kX2N1cnJlbnRfc3RhdGUoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfc3luY19wYXJhbShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcbi1leHRlcm4gdm9pZCBkcmJkX3NlbmRfYl9hY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdTMyIGJhcnJpZXJfbnIsXG4tXHRcdFx0ICAgIHUzMiBzZXRfc2l6ZSk7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfYWNrKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsXG4tXHRcdFx0IHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqKTtcbi1leHRlcm4gdm9pZCBkcmJkX3NlbmRfYWNrX3JwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsXG4tXHRcdFx0ICAgICBzdHJ1Y3QgcF9ibG9ja19yZXEgKnJwKTtcbi1leHRlcm4gdm9pZCBkcmJkX3NlbmRfYWNrX2RwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsXG4tXHRcdFx0ICAgICBzdHJ1Y3QgcF9kYXRhICpkcCwgaW50IGRhdGFfc2l6ZSk7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfYWNrX2V4KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsXG4tXHRcdFx0ICAgIHNlY3Rvcl90IHNlY3RvciwgaW50IGJsa3NpemUsIHU2NCBibG9ja19pZCk7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfb3V0X29mX3N5bmMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc3RydWN0IGRyYmRfcmVxdWVzdCAqKTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9ibG9jayhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuLVx0XHRcdCAgIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqKTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9kYmxvY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9kcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBpbnQgY21kLFxuLVx0XHRcdCAgICAgIHNlY3Rvcl90IHNlY3RvciwgaW50IHNpemUsIHU2NCBibG9ja19pZCk7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfZHJlcXVlc3RfY3N1bShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzZWN0b3JfdCBzZWN0b3IsXG4tXHRcdFx0XHQgICBpbnQgc2l6ZSwgdm9pZCAqZGlnZXN0LCBpbnQgZGlnZXN0X3NpemUsXG4tXHRcdFx0XHQgICBlbnVtIGRyYmRfcGFja2V0IGNtZCk7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfb3ZfcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplKTtcbi1cbi1leHRlcm4gaW50IGRyYmRfc2VuZF9iaXRtYXAoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9zZW5kX3NyX3JlcGx5KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9zdGF0ZV9ydiByZXRjb2RlKTtcbi1leHRlcm4gdm9pZCBjb25uX3NlbmRfc3JfcmVwbHkoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgZW51bSBkcmJkX3N0YXRlX3J2IHJldGNvZGUpO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kX3JzX2RlYWxsb2NhdGVkKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqKTtcbi1leHRlcm4gdm9pZCBkcmJkX2JhY2tpbmdfZGV2X2ZyZWUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpsZGV2KTtcbi1leHRlcm4gdm9pZCBkcmJkX2RldmljZV9jbGVhbnVwKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gdm9pZCBkcmJkX3ByaW50X3V1aWRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCBjaGFyICp0ZXh0KTtcbi1leHRlcm4gdm9pZCBkcmJkX3F1ZXVlX3VucGx1ZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tXG4tZXh0ZXJuIHZvaWQgY29ubl9tZF9zeW5jKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xuLWV4dGVybiB2b2lkIGRyYmRfbWRfd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHZvaWQgKmJ1ZmZlcik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9tZF9zeW5jKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gaW50ICBkcmJkX21kX3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2KTtcbi1leHRlcm4gdm9pZCBkcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCk7XG4tZXh0ZXJuIHZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gdm9pZCBkcmJkX3V1aWRfbmV3X2N1cnJlbnQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gdm9pZCBkcmJkX3V1aWRfc2V0X2JtKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpO1xuLWV4dGVybiB2b2lkIF9fZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpO1xuLWV4dGVybiB2b2lkIGRyYmRfbWRfc2V0X2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFncykgX19tdXN0X2hvbGQobG9jYWwpO1xuLWV4dGVybiB2b2lkIGRyYmRfbWRfY2xlYXJfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWdzKV9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gaW50IGRyYmRfbWRfdGVzdF9mbGFnKHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICosIGludCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9tZF9tYXJrX2RpcnR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gdm9pZCBkcmJkX3F1ZXVlX2JpdG1hcF9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0XHRcdCBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopLFxuLVx0XHRcdFx0IHZvaWQgKCpkb25lKShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgaW50KSxcbi1cdFx0XHRcdCBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncyxcbi1cdFx0XHRcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuLWV4dGVybiBpbnQgZHJiZF9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdGludCAoKmlvX2ZuKShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiksXG4tXHRcdGNoYXIgKndoeSwgZW51bSBibV9mbGFnIGZsYWdzLFxuLVx0XHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuLWV4dGVybiBpbnQgZHJiZF9iaXRtYXBfaW9fZnJvbV93b3JrZXIoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdGludCAoKmlvX2ZuKShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiksXG4tXHRcdGNoYXIgKndoeSwgZW51bSBibV9mbGFnIGZsYWdzLFxuLVx0XHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuLWV4dGVybiBpbnQgZHJiZF9ibWlvX3NldF9uX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gaW50IGRyYmRfYm1pb19jbGVhcl9uX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbiYjNDM7dm9pZCB0bF9yZWxlYXNlKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwgdW5zaWduZWQgaW50IGJhcnJpZXJfbnIsXG4mIzQzO1x0XHR1bnNpZ25lZCBpbnQgc2V0X3NpemUpO1xuJiM0Mzt2b2lkIHRsX2NsZWFyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKik7XG4mIzQzO3ZvaWQgZHJiZF9mcmVlX3NvY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4mIzQzO2ludCBkcmJkX3NlbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgc3RydWN0IHNvY2tldCAqc29jayxcbiYjNDM7XHQgICAgICB2b2lkICpidWYsIHNpemVfdCBzaXplLCB1bnNpZ25lZCBtc2dfZmxhZ3MpO1xuJiM0MztpbnQgZHJiZF9zZW5kX2FsbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHN0cnVjdCBzb2NrZXQgKiwgdm9pZCAqLCBzaXplX3QsXG4mIzQzO1x0XHQgIHVuc2lnbmVkKTtcbiYjNDM7XG4mIzQzO2ludCBfX2RyYmRfc2VuZF9wcm90b2NvbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLFxuJiM0MztcdFx0XHQgZW51bSBkcmJkX3BhY2tldCBjbWQpO1xuJiM0MztpbnQgZHJiZF9zZW5kX3Byb3RvY29sKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xuJiM0MztpbnQgZHJiZF9zZW5kX3V1aWRzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xuJiM0MztpbnQgZHJiZF9zZW5kX3V1aWRzX3NraXBfaW5pdGlhbF9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xuJiM0Mzt2b2lkIGRyYmRfZ2VuX2FuZF9zZW5kX3N5bmNfdXVpZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcbiYjNDM7aW50IGRyYmRfc2VuZF9zaXplcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBpbnQgdHJpZ2dlcl9yZXBseSxcbiYjNDM7XHRcdCAgICBlbnVtIGRkc19mbGFncyBmbGFncyk7XG4mIzQzO2ludCBkcmJkX3NlbmRfc3RhdGUoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSBzKTtcbiYjNDM7aW50IGRyYmRfc2VuZF9jdXJyZW50X3N0YXRlKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xuJiM0MztpbnQgZHJiZF9zZW5kX3N5bmNfcGFyYW0oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7XG4mIzQzO3ZvaWQgZHJiZF9zZW5kX2JfYWNrKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHUzMiBiYXJyaWVyX25yLFxuJiM0MztcdFx0ICAgICB1MzIgc2V0X3NpemUpO1xuJiM0MztpbnQgZHJiZF9zZW5kX2FjayhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuJiM0MztcdFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKik7XG4mIzQzO3ZvaWQgZHJiZF9zZW5kX2Fja19ycChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuJiM0MztcdFx0ICAgICAgc3RydWN0IHBfYmxvY2tfcmVxICpycCk7XG4mIzQzO3ZvaWQgZHJiZF9zZW5kX2Fja19kcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuJiM0MztcdFx0ICAgICAgc3RydWN0IHBfZGF0YSAqZHAsIGludCBkYXRhX3NpemUpO1xuJiM0MztpbnQgZHJiZF9zZW5kX2Fja19leChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuJiM0MztcdFx0ICAgICBzZWN0b3JfdCBzZWN0b3IsIGludCBibGtzaXplLCB1NjQgYmxvY2tfaWQpO1xuJiM0MztpbnQgZHJiZF9zZW5kX291dF9vZl9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3JlcXVlc3QgKik7XG4mIzQzO2ludCBkcmJkX3NlbmRfYmxvY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCxcbiYjNDM7XHRcdCAgICBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKik7XG4mIzQzO2ludCBkcmJkX3NlbmRfZGJsb2NrKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSk7XG4mIzQzO2ludCBkcmJkX3NlbmRfZHJlcXVlc3Qoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgaW50IGNtZCwgc2VjdG9yX3Qgc2VjdG9yLFxuJiM0MztcdFx0ICAgICAgIGludCBzaXplLCB1NjQgYmxvY2tfaWQpO1xuJiM0MztpbnQgZHJiZF9zZW5kX2RyZXF1ZXN0X2NzdW0oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc2VjdG9yX3Qgc2VjdG9yLFxuJiM0MztcdFx0XHQgICAgaW50IHNpemUsIHZvaWQgKmRpZ2VzdCwgaW50IGRpZ2VzdF9zaXplLFxuJiM0MztcdFx0XHQgICAgZW51bSBkcmJkX3BhY2tldCBjbWQpO1xuJiM0MztpbnQgZHJiZF9zZW5kX292X3JlcXVlc3Qoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSk7XG4mIzQzO1xuJiM0MztpbnQgZHJiZF9zZW5kX2JpdG1hcChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdCAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcbiYjNDM7dm9pZCBkcmJkX3NlbmRfc3JfcmVwbHkoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3N0YXRlX3J2IHJldGNvZGUpO1xuJiM0Mzt2b2lkIGNvbm5fc2VuZF9zcl9yZXBseShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLFxuJiM0MztcdFx0XHRlbnVtIGRyYmRfc3RhdGVfcnYgcmV0Y29kZSk7XG4mIzQzO2ludCBkcmJkX3NlbmRfcnNfZGVhbGxvY2F0ZWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKixcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKik7XG4mIzQzO3ZvaWQgZHJiZF9iYWNraW5nX2Rldl9mcmVlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuJiM0MztcdFx0XHQgICBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqbGRldik7XG4mIzQzO3ZvaWQgZHJiZF9kZXZpY2VfY2xlYW51cChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO3ZvaWQgZHJiZF9wcmludF91dWlkcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqdGV4dCk7XG4mIzQzO3ZvaWQgZHJiZF9xdWV1ZV91bnBsdWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0MztcbiYjNDM7dm9pZCBjb25uX21kX3N5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4mIzQzO3ZvaWQgZHJiZF9tZF93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdm9pZCAqYnVmZmVyKTtcbiYjNDM7dm9pZCBkcmJkX21kX3N5bmMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0MztpbnQgZHJiZF9tZF9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldik7XG4mIzQzO3ZvaWQgZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCk7XG4mIzQzO3ZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpO1xuJiM0Mzt2b2lkIGRyYmRfdXVpZF9uZXdfY3VycmVudChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO3ZvaWQgZHJiZF91dWlkX3NldF9ibShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdTY0IHZhbCk7XG4mIzQzO3ZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO3ZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKTtcbiYjNDM7dm9pZCBkcmJkX21kX3NldF9mbGFnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgZmxhZ3MpO1xuJiM0Mzt2b2lkIGRyYmRfbWRfY2xlYXJfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWdzKTtcbiYjNDM7aW50IGRyYmRfbWRfdGVzdF9mbGFnKHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICosIGludCk7XG4mIzQzO3ZvaWQgZHJiZF9tZF9tYXJrX2RpcnR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbiYjNDM7dm9pZCBkcmJkX3F1ZXVlX2JpdG1hcF9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdFx0ICBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosXG4mIzQzO1x0XHRcdFx0ICAgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopLFxuJiM0MztcdFx0XHQgIHZvaWQgKCpkb25lKShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgaW50KSwgY2hhciAqd2h5LFxuJiM0MztcdFx0XHQgIGVudW0gYm1fZmxhZyBmbGFncyxcbiYjNDM7XHRcdFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuJiM0MztpbnQgZHJiZF9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHQgICBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosXG4mIzQzO1x0XHRcdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiksXG4mIzQzO1x0XHQgICBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncyxcbiYjNDM7XHRcdCAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4mIzQzO2ludCBkcmJkX2JpdG1hcF9pb19mcm9tX3dvcmtlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdFx0ICAgICAgIGludCAoKmlvX2ZuKShzdHJ1Y3QgZHJiZF9kZXZpY2UgKixcbiYjNDM7XHRcdFx0XHRcdCAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKSxcbiYjNDM7XHRcdFx0ICAgICAgIGNoYXIgKndoeSwgZW51bSBibV9mbGFnIGZsYWdzLFxuJiM0MztcdFx0XHQgICAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcbiYjNDM7aW50IGRyYmRfYm1pb19zZXRfbl93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuJiM0MztpbnQgZHJiZF9ibWlvX2NsZWFyX25fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHRcdCAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuJiM0MztpbnQgZHJiZF93YWl0X21pc2Moc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKVxuJiM0MztcdF9fbXVzdF9ob2xkKFx1MDAyNmRldmljZS1cdTAwM2VyZXNvdXJjZS1cdTAwM2VyZXFfbG9jayk7XG4gXG4gLyogTWV0YSBkYXRhIGxheW91dFxuICAqXG5AQCAtMTI3NSw1NiAmIzQzOzEyODYsNjQgQEAgc3RydWN0IGJtX2V4dGVudCB7XG4gI2RlZmluZSBEUkJEX01BWF9CQVRDSF9CSU9fU0laRVx0IChBTF9VUERBVEVTX1BFUl9UUkFOU0FDVElPTi8yKkFMX0VYVEVOVF9TSVpFKVxuICNkZWZpbmUgRFJCRF9NQVhfQkJJT19TRUNUT1JTICAgIChEUkJEX01BWF9CQVRDSF9CSU9fU0laRSBcdTAwM2VcdTAwM2UgOSlcbiBcbi1leHRlcm4gaW50ICBkcmJkX2JtX2luaXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiBpbnQgIGRyYmRfYm1fcmVzaXplKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3JzLCBpbnQgc2V0X25ld19iaXRzKTtcbi1leHRlcm4gdm9pZCBkcmJkX2JtX2NsZWFudXAoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiB2b2lkIGRyYmRfYm1fc2V0X2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV9jbGVhcl9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0MztpbnQgZHJiZF9ibV9pbml0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbiYjNDM7aW50IGRyYmRfYm1fcmVzaXplKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3JzLFxuJiM0MztcdFx0ICAgaW50IHNldF9uZXdfYml0cyk7XG4mIzQzO3ZvaWQgZHJiZF9ibV9jbGVhbnVwKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbiYjNDM7dm9pZCBkcmJkX2JtX3NldF9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0Mzt2b2lkIGRyYmRfYm1fY2xlYXJfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbiAvKiBzZXQvY2xlYXIvdGVzdCBvbmx5IGEgZmV3IGJpdHMgYXQgYSB0aW1lICovXG4tZXh0ZXJuIGludCAgZHJiZF9ibV9zZXRfYml0cyhcbi1cdFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgcywgdW5zaWduZWQgbG9uZyBlKTtcbi1leHRlcm4gaW50ICBkcmJkX2JtX2NsZWFyX2JpdHMoXG4tXHRcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIHMsIHVuc2lnbmVkIGxvbmcgZSk7XG4tZXh0ZXJuIGludCBkcmJkX2JtX2NvdW50X2JpdHMoXG4tXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgdW5zaWduZWQgbG9uZyBzLCBjb25zdCB1bnNpZ25lZCBsb25nIGUpO1xuJiM0MztpbnQgZHJiZF9ibV9zZXRfYml0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBzLFxuJiM0MztcdFx0ICAgICB1bnNpZ25lZCBsb25nIGUpO1xuJiM0MztpbnQgZHJiZF9ibV9jbGVhcl9iaXRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIHMsXG4mIzQzO1x0XHQgICAgICAgdW5zaWduZWQgbG9uZyBlKTtcbiYjNDM7aW50IGRyYmRfYm1fY291bnRfYml0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgdW5zaWduZWQgbG9uZyBzLFxuJiM0MztcdFx0ICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgZSk7XG4gLyogYm1fc2V0X2JpdHMgdmFyaWFudCBmb3IgdXNlIHdoaWxlIGhvbGRpbmcgZHJiZF9ibV9sb2NrLFxuICAqIG1heSBwcm9jZXNzIHRoZSB3aG9sZSBiaXRtYXAgaW4gb25lIGdvICovXG4tZXh0ZXJuIHZvaWQgX2RyYmRfYm1fc2V0X2JpdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdGNvbnN0IHVuc2lnbmVkIGxvbmcgcywgY29uc3QgdW5zaWduZWQgbG9uZyBlKTtcbi1leHRlcm4gaW50ICBkcmJkX2JtX3Rlc3RfYml0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGJpdG5yKTtcbi1leHRlcm4gaW50ICBkcmJkX2JtX2Vfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGVucik7XG4tZXh0ZXJuIGludCAgZHJiZF9ibV9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gdm9pZCBkcmJkX2JtX21hcmtfZm9yX3dyaXRlb3V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgcGFnZV9ucik7XG4tZXh0ZXJuIGludCAgZHJiZF9ibV93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV9yZXNldF9hbF9oaW50cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpO1xuLWV4dGVybiBpbnQgIGRyYmRfYm1fd3JpdGVfaGludGVkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7XG4tZXh0ZXJuIGludCAgZHJiZF9ibV93cml0ZV9sYXp5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCB1cHBlcl9pZHgpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gaW50IGRyYmRfYm1fd3JpdGVfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gaW50ICBkcmJkX2JtX3dyaXRlX2NvcHlfcGFnZXMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpO1xuLWV4dGVybiBzaXplX3RcdCAgICAgZHJiZF9ibV93b3JkcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZHJiZF9ibV9iaXRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gc2VjdG9yX3QgICAgICBkcmJkX2JtX2NhcGFjaXR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbiYjNDM7dm9pZCBfZHJiZF9ibV9zZXRfYml0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgdW5zaWduZWQgbG9uZyBzLFxuJiM0MztcdFx0ICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgZSk7XG4mIzQzO2ludCBkcmJkX2JtX3Rlc3RfYml0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGJpdG5yKTtcbiYjNDM7aW50IGRyYmRfYm1fZV93ZWlnaHQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgZW5yKTtcbiYjNDM7aW50IGRyYmRfYm1fcmVhZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuJiM0Mzt2b2lkIGRyYmRfYm1fbWFya19mb3Jfd3JpdGVvdXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBwYWdlX25yKTtcbiYjNDM7aW50IGRyYmRfYm1fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHQgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4mIzQzO3ZvaWQgZHJiZF9ibV9yZXNldF9hbF9oaW50cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO2ludCBkcmJkX2JtX3dyaXRlX2hpbnRlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO2ludCBkcmJkX2JtX3dyaXRlX2xhenkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIHVwcGVyX2lkeCk7XG4mIzQzO2ludCBkcmJkX2JtX3dyaXRlX2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdCAgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4mIzQzO2ludCBkcmJkX2JtX3dyaXRlX2NvcHlfcGFnZXMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHRcdCAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcbiYjNDM7c2l6ZV90IGRyYmRfYm1fd29yZHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0Mzt1bnNpZ25lZCBsb25nIGRyYmRfYm1fYml0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO3NlY3Rvcl90IGRyYmRfYm1fY2FwYWNpdHkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuIFxuICNkZWZpbmUgRFJCRF9FTkRfT0ZfQklUTUFQXHQofih1bnNpZ25lZCBsb25nKTApXG4tZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZHJiZF9ibV9maW5kX25leHQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgYm1fZm8pO1xuJiM0Mzt1bnNpZ25lZCBsb25nIGRyYmRfYm1fZmluZF9uZXh0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuJiM0MztcdFx0XHRcdHVuc2lnbmVkIGxvbmcgYm1fZm8pO1xuIC8qIGJtX2ZpbmRfbmV4dCB2YXJpYW50cyBmb3IgdXNlIHdoaWxlIHlvdSBob2xkIGRyYmRfYm1fbG9jaygpICovXG4tZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX2RyYmRfYm1fZmluZF9uZXh0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGJtX2ZvKTtcbi1leHRlcm4gdW5zaWduZWQgbG9uZyBfZHJiZF9ibV9maW5kX25leHRfemVybyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBibV9mbyk7XG4tZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX2RyYmRfYm1fdG90YWxfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gdW5zaWduZWQgbG9uZyBkcmJkX2JtX3RvdGFsX3dlaWdodChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO3Vuc2lnbmVkIGxvbmcgX2RyYmRfYm1fZmluZF9uZXh0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuJiM0MztcdFx0XHRcdCB1bnNpZ25lZCBsb25nIGJtX2ZvKTtcbiYjNDM7dW5zaWduZWQgbG9uZyBfZHJiZF9ibV9maW5kX25leHRfemVybyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdFx0XHQgICAgICB1bnNpZ25lZCBsb25nIGJtX2ZvKTtcbiYjNDM7dW5zaWduZWQgbG9uZyBfZHJiZF9ibV90b3RhbF93ZWlnaHQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0Mzt1bnNpZ25lZCBsb25nIGRyYmRfYm1fdG90YWxfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbiAvKiBmb3IgcmVjZWl2ZV9iaXRtYXAgKi9cbi1leHRlcm4gdm9pZCBkcmJkX2JtX21lcmdlX2xlbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2l6ZV90IG9mZnNldCxcbi1cdFx0c2l6ZV90IG51bWJlciwgdW5zaWduZWQgbG9uZyAqYnVmZmVyKTtcbiYjNDM7dm9pZCBkcmJkX2JtX21lcmdlX2xlbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IG51bWJlcixcbiYjNDM7XHRcdCAgICAgICB1bnNpZ25lZCBsb25nICpidWZmZXIpO1xuIC8qIGZvciBfZHJiZF9zZW5kX2JpdG1hcCAqL1xuLWV4dGVybiB2b2lkIGRyYmRfYm1fZ2V0X2xlbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2l6ZV90IG9mZnNldCxcbi1cdFx0c2l6ZV90IG51bWJlciwgdW5zaWduZWQgbG9uZyAqYnVmZmVyKTtcbiYjNDM7dm9pZCBkcmJkX2JtX2dldF9sZWwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBudW1iZXIsXG4mIzQzO1x0XHQgICAgIHVuc2lnbmVkIGxvbmcgKmJ1ZmZlcik7XG4mIzQzO1xuJiM0Mzt0b2tlbl9jb250ZXh0X2xvY2soZHJiZF9kZXZfYm1fbG9jayk7XG4gXG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV9sb2NrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncyk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV91bmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0Mzt2b2lkIGRyYmRfYm1fbG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MpXG4mIzQzO1x0X19hY3F1aXJlcyhkcmJkX2Rldl9ibV9sb2NrKTtcbiYjNDM7dm9pZCBkcmJkX2JtX3VubG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbiYjNDM7XHRfX3JlbGVhc2VzKGRyYmRfZGV2X2JtX2xvY2spO1xuIC8qIGRyYmRfbWFpbi5jICovXG4gXG4gZXh0ZXJuIHN0cnVjdCBrbWVtX2NhY2hlICpkcmJkX3JlcXVlc3RfY2FjaGU7XG5AQCAtMTM1MCwzNyAmIzQzOzEzNjksMzkgQEAgZXh0ZXJuIHN0cnVjdCBiaW9fc2V0IGRyYmRfbWRfaW9fYmlvX3NldDtcbiAvKiBBbmQgYSBiaW9fc2V0IGZvciBjbG9uaW5nICovXG4gZXh0ZXJuIHN0cnVjdCBiaW9fc2V0IGRyYmRfaW9fYmlvX3NldDtcbiBcbi1leHRlcm4gc3RydWN0IG11dGV4IHJlc291cmNlc19tdXRleDtcbi1cbi1leHRlcm4gZW51bSBkcmJkX3JldF9jb2RlIGRyYmRfY3JlYXRlX2RldmljZShzdHJ1Y3QgZHJiZF9jb25maWdfY29udGV4dCAqYWRtX2N0eCwgdW5zaWduZWQgaW50IG1pbm9yKTtcbi1leHRlcm4gdm9pZCBkcmJkX2Rlc3Ryb3lfZGV2aWNlKHN0cnVjdCBrcmVmICprcmVmKTtcbi1leHRlcm4gdm9pZCBkcmJkX2RlbGV0ZV9kZXZpY2Uoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLVxuLWV4dGVybiBzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqZHJiZF9jcmVhdGVfcmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9mcmVlX3Jlc291cmNlKHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSk7XG4tXG4tZXh0ZXJuIGludCBzZXRfcmVzb3VyY2Vfb3B0aW9ucyhzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UsIHN0cnVjdCByZXNfb3B0cyAqcmVzX29wdHMpO1xuLWV4dGVybiBzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uX2NyZWF0ZShjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgcmVzX29wdHMgKnJlc19vcHRzKTtcbi1leHRlcm4gdm9pZCBkcmJkX2Rlc3Ryb3lfY29ubmVjdGlvbihzdHJ1Y3Qga3JlZiAqa3JlZik7XG4tZXh0ZXJuIHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5fZ2V0X2J5X2FkZHJzKHZvaWQgKm15X2FkZHIsIGludCBteV9hZGRyX2xlbixcbi1cdFx0XHRcdFx0ICAgIHZvaWQgKnBlZXJfYWRkciwgaW50IHBlZXJfYWRkcl9sZW4pO1xuLWV4dGVybiBzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqZHJiZF9maW5kX3Jlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUpO1xuLWV4dGVybiB2b2lkIGRyYmRfZGVzdHJveV9yZXNvdXJjZShzdHJ1Y3Qga3JlZiAqa3JlZik7XG4tZXh0ZXJuIHZvaWQgY29ubl9mcmVlX2NyeXB0byhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbiYjNDM7ZW51bSBkcmJkX3JldF9jb2RlIGRyYmRfY3JlYXRlX2RldmljZShzdHJ1Y3QgZHJiZF9jb25maWdfY29udGV4dCAqYWRtX2N0eCxcbiYjNDM7XHRcdFx0XHQgICAgICB1bnNpZ25lZCBpbnQgbWlub3IpO1xuJiM0Mzt2b2lkIGRyYmRfZGVzdHJveV9kZXZpY2Uoc3RydWN0IGtyZWYgKmtyZWYpO1xuJiM0Mzt2b2lkIGRyYmRfZGVsZXRlX2RldmljZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO1xuJiM0MztzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqZHJiZF9jcmVhdGVfcmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSk7XG4mIzQzO3ZvaWQgZHJiZF9mcmVlX3Jlc291cmNlKHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSk7XG4mIzQzO1xuJiM0MztpbnQgc2V0X3Jlc291cmNlX29wdGlvbnMoc3RydWN0IGRyYmRfcmVzb3VyY2UgKnJlc291cmNlLFxuJiM0MztcdFx0XHQgc3RydWN0IHJlc19vcHRzICpyZXNfb3B0cyk7XG4mIzQzO3N0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5fY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsXG4mIzQzO1x0XHRcdFx0ICAgIHN0cnVjdCByZXNfb3B0cyAqcmVzX29wdHMpO1xuJiM0Mzt2b2lkIGRyYmRfZGVzdHJveV9jb25uZWN0aW9uKHN0cnVjdCBrcmVmICprcmVmKTtcbiYjNDM7c3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubl9nZXRfYnlfYWRkcnModm9pZCAqbXlfYWRkciwgaW50IG15X2FkZHJfbGVuLFxuJiM0MztcdFx0XHRcdFx0ICB2b2lkICpwZWVyX2FkZHIsIGludCBwZWVyX2FkZHJfbGVuKTtcbiYjNDM7c3RydWN0IGRyYmRfcmVzb3VyY2UgKmRyYmRfZmluZF9yZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKTtcbiYjNDM7dm9pZCBkcmJkX2Rlc3Ryb3lfcmVzb3VyY2Uoc3RydWN0IGtyZWYgKmtyZWYpO1xuJiM0Mzt2b2lkIGNvbm5fZnJlZV9jcnlwdG8oc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4gXG4gLyogZHJiZF9yZXEgKi9cbi1leHRlcm4gdm9pZCBkb19zdWJtaXQoc3RydWN0IHdvcmtfc3RydWN0ICp3cyk7XG4tZXh0ZXJuIHZvaWQgX19kcmJkX21ha2VfcmVxdWVzdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGJpbyAqKTtcbiYjNDM7dm9pZCBkb19zdWJtaXQoc3RydWN0IHdvcmtfc3RydWN0ICp3cyk7XG4mIzQzO3ZvaWQgX19kcmJkX21ha2VfcmVxdWVzdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGJpbyAqKTtcbiB2b2lkIGRyYmRfc3VibWl0X2JpbyhzdHJ1Y3QgYmlvICpiaW8pO1xuIFxuIC8qIGRyYmRfbmwuYyAqL1xuIFxuIGV4dGVybiBzdHJ1Y3QgbXV0ZXggbm90aWZpY2F0aW9uX211dGV4O1xuIFxuLWV4dGVybiB2b2lkIGRyYmRfc3VzcGVuZF9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9yZXN1bWVfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiBjaGFyICpwcHNpemUoY2hhciAqYnVmLCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSk7XG4tZXh0ZXJuIHNlY3Rvcl90IGRyYmRfbmV3X2Rldl9zaXplKHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqLCBzZWN0b3JfdCwgaW50KTtcbiYjNDM7dm9pZCBkcmJkX3N1c3BlbmRfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0Mzt2b2lkIGRyYmRfcmVzdW1lX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbiYjNDM7Y2hhciAqcHBzaXplKGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyBsb25nIHNpemUpO1xuJiM0MztzZWN0b3JfdCBkcmJkX25ld19kZXZfc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKixcbiYjNDM7XHRcdFx0ICAgc2VjdG9yX3QsIGludCk7XG4gZW51bSBkZXRlcm1pbmVfZGV2X3NpemUge1xuIFx0RFNfRVJST1JfU0hSSU5LID0gLTMsXG4gXHREU19FUlJPUl9TUEFDRV9NRCA9IC0yLFxuQEAgLTEzOTAsNDEgJiM0MzsxNDExLDQ1IEBAIGVudW0gZGV0ZXJtaW5lX2Rldl9zaXplIHtcbiBcdERTX0dSRVcgPSAyLFxuIFx0RFNfR1JFV19GUk9NX1pFUk8gPSAzLFxuIH07XG4tZXh0ZXJuIGVudW0gZGV0ZXJtaW5lX2Rldl9zaXplXG4tZHJiZF9kZXRlcm1pbmVfZGV2X3NpemUoc3RydWN0IGRyYmRfZGV2aWNlICosIGVudW0gZGRzX2ZsYWdzLCBzdHJ1Y3QgcmVzaXplX3Bhcm1zICopIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gdm9pZCByZXN5bmNfYWZ0ZXJfb25saW5lX2dyb3coc3RydWN0IGRyYmRfZGV2aWNlICopO1xuLWV4dGVybiB2b2lkIGRyYmRfcmVjb25zaWRlcl9xdWV1ZV9wYXJhbWV0ZXJzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRcdHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LCBzdHJ1Y3Qgb19xbGltICpvKTtcbi1leHRlcm4gZW51bSBkcmJkX3N0YXRlX3J2IGRyYmRfc2V0X3JvbGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdFx0XHRcdGVudW0gZHJiZF9yb2xlIG5ld19yb2xlLFxuLVx0XHRcdFx0XHRpbnQgZm9yY2UpO1xuLWV4dGVybiBib29sIGNvbm5fdHJ5X291dGRhdGVfcGVlcihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbi1leHRlcm4gdm9pZCBjb25uX3RyeV9vdXRkYXRlX3BlZXJfYXN5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4tZXh0ZXJuIGVudW0gZHJiZF9wZWVyX3N0YXRlIGNvbm5fa2hlbHBlcihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBjaGFyICpjbWQpO1xuLWV4dGVybiBpbnQgZHJiZF9raGVscGVyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICpjbWQpO1xuJiM0MztlbnVtIGRldGVybWluZV9kZXZfc2l6ZSBkcmJkX2RldGVybWluZV9kZXZfc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKixcbiYjNDM7XHRcdFx0XHRcdFx0ZW51bSBkZHNfZmxhZ3MsXG4mIzQzO1x0XHRcdFx0XHRcdHN0cnVjdCByZXNpemVfcGFybXMgKik7XG4mIzQzO3ZvaWQgcmVzeW5jX2FmdGVyX29ubGluZV9ncm93KHN0cnVjdCBkcmJkX2RldmljZSAqKTtcbiYjNDM7dm9pZCBkcmJkX3JlY29uc2lkZXJfcXVldWVfcGFyYW1ldGVycyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdFx0XHQgICAgICBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldixcbiYjNDM7XHRcdFx0XHQgICAgICBzdHJ1Y3Qgb19xbGltICpvKTtcbiYjNDM7ZW51bSBkcmJkX3N0YXRlX3J2IGRyYmRfc2V0X3JvbGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHRcdFx0IGVudW0gZHJiZF9yb2xlIG5ld19yb2xlLCBpbnQgZm9yY2UpO1xuJiM0Mztib29sIGNvbm5fdHJ5X291dGRhdGVfcGVlcihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbiYjNDM7dm9pZCBjb25uX3RyeV9vdXRkYXRlX3BlZXJfYXN5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4mIzQzO2VudW0gZHJiZF9wZWVyX3N0YXRlIGNvbm5fa2hlbHBlcihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLFxuJiM0MztcdFx0XHRcdCAgY2hhciAqY21kKTtcbiYjNDM7aW50IGRyYmRfa2hlbHBlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY2hhciAqY21kKTtcbiBcbiAvKiBkcmJkX3dvcmtlci5jICovXG4gLyogYmlfZW5kX2lvIGhhbmRsZXJzICovXG4tZXh0ZXJuIHZvaWQgZHJiZF9tZF9lbmRpbyhzdHJ1Y3QgYmlvICpiaW8pO1xuLWV4dGVybiB2b2lkIGRyYmRfcGVlcl9yZXF1ZXN0X2VuZGlvKHN0cnVjdCBiaW8gKmJpbyk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9yZXF1ZXN0X2VuZGlvKHN0cnVjdCBiaW8gKmJpbyk7XG4tZXh0ZXJuIGludCBkcmJkX3dvcmtlcihzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7XG4mIzQzO3ZvaWQgZHJiZF9tZF9lbmRpbyhzdHJ1Y3QgYmlvICpiaW8pO1xuJiM0Mzt2b2lkIGRyYmRfcGVlcl9yZXF1ZXN0X2VuZGlvKHN0cnVjdCBiaW8gKmJpbyk7XG4mIzQzO3ZvaWQgZHJiZF9yZXF1ZXN0X2VuZGlvKHN0cnVjdCBiaW8gKmJpbyk7XG4mIzQzO2ludCBkcmJkX3dvcmtlcihzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7XG4gZW51bSBkcmJkX3JldF9jb2RlIGRyYmRfcmVzeW5jX2FmdGVyX3ZhbGlkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgb19taW5vcik7XG4gdm9pZCBkcmJkX3Jlc3luY19hZnRlcl9jaGFuZ2VkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gdm9pZCBkcmJkX3N0YXJ0X3Jlc3luYyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Nvbm5zIHNpZGUpO1xuLWV4dGVybiB2b2lkIHJlc3VtZV9uZXh0X3NnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gdm9pZCBzdXNwZW5kX290aGVyX3NnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gaW50IGRyYmRfcmVzeW5jX2ZpbmlzaGVkKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4mIzQzO3ZvaWQgZHJiZF9zdGFydF9yZXN5bmMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGVudW0gZHJiZF9jb25ucyBzaWRlKTtcbiYjNDM7dm9pZCByZXN1bWVfbmV4dF9zZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO3ZvaWQgc3VzcGVuZF9vdGhlcl9zZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO2ludCBkcmJkX3Jlc3luY19maW5pc2hlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuIC8qIG1heWJlIHJhdGhlciBkcmJkX21haW4uYyA/ICovXG4tZXh0ZXJuIHZvaWQgKmRyYmRfbWRfZ2V0X2J1ZmZlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqaW50ZW50KTtcbi1leHRlcm4gdm9pZCBkcmJkX21kX3B1dF9idWZmZXIoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiBpbnQgZHJiZF9tZF9zeW5jX3BhZ2VfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LCBzZWN0b3JfdCBzZWN0b3IsIGVudW0gcmVxX29wIG9wKTtcbi1leHRlcm4gdm9pZCBkcmJkX292X291dF9vZl9zeW5jX2ZvdW5kKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcbi1cdFx0c2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSk7XG4tZXh0ZXJuIHZvaWQgd2FpdF91bnRpbF9kb25lX29yX2ZvcmNlX2RldGFjaGVkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldiwgdW5zaWduZWQgaW50ICpkb25lKTtcbi1leHRlcm4gdm9pZCBkcmJkX3JzX2NvbnRyb2xsZXJfcmVzZXQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcbiYjNDM7dm9pZCAqZHJiZF9tZF9nZXRfYnVmZmVyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCBjaGFyICppbnRlbnQpO1xuJiM0Mzt2b2lkIGRyYmRfbWRfcHV0X2J1ZmZlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO2ludCBkcmJkX21kX3N5bmNfcGFnZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdFx0IHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LCBzZWN0b3JfdCBzZWN0b3IsXG4mIzQzO1x0XHRcdCBlbnVtIHJlcV9vcCBvcCk7XG4mIzQzO3ZvaWQgZHJiZF9vdl9vdXRfb2Zfc3luY19mb3VuZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsXG4mIzQzO1x0XHRcdCAgICAgICBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplKTtcbiYjNDM7dm9pZCB3YWl0X3VudGlsX2RvbmVfb3JfZm9yY2VfZGV0YWNoZWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHRcdFx0ICAgICAgIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LFxuJiM0MztcdFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgKmRvbmUpO1xuJiM0Mzt2b2lkIGRyYmRfcnNfY29udHJvbGxlcl9yZXNldChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuIFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBvdl9vdXRfb2Zfc3luY19wcmludChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXG4ge1xuQEAgLTE0MzgsNDggJiM0MzsxNDYzLDQ3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBvdl9vdXRfb2Zfc3luY19wcmludChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXG4gXHRkZXZpY2UtXHUwMDNlb3ZfbGFzdF9vb3Nfc2l6ZSA9IDA7XG4gfVxuIFxuLVxuLWV4dGVybiB2b2lkIGRyYmRfY3N1bV9iaW8oc3RydWN0IGNyeXB0b19zaGFzaCAqLCBzdHJ1Y3QgYmlvICosIHZvaWQgKik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9jc3VtX2VlKHN0cnVjdCBjcnlwdG9fc2hhc2ggKiwgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICosXG4tXHRcdFx0IHZvaWQgKik7XG4mIzQzO3ZvaWQgZHJiZF9jc3VtX2JpbyhzdHJ1Y3QgY3J5cHRvX3NoYXNoICosIHN0cnVjdCBiaW8gKiwgdm9pZCAqKTtcbiYjNDM7dm9pZCBkcmJkX2NzdW1fZWUoc3RydWN0IGNyeXB0b19zaGFzaCAqLCBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKiwgdm9pZCAqKTtcbiAvKiB3b3JrZXIgY2FsbGJhY2tzICovXG4tZXh0ZXJuIGludCB3X2VfZW5kX2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbi1leHRlcm4gaW50IHdfZV9lbmRfcnNkYXRhX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4tZXh0ZXJuIGludCB3X2VfZW5kX2NzdW1fcnNfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbi1leHRlcm4gaW50IHdfZV9lbmRfb3ZfcmVwbHkoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuLWV4dGVybiBpbnQgd19lX2VuZF9vdl9yZXEoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuLWV4dGVybiBpbnQgd19vdl9maW5pc2hlZChzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4tZXh0ZXJuIGludCB3X3Jlc3luY190aW1lcihzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4tZXh0ZXJuIGludCB3X3NlbmRfd3JpdGVfaGludChzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4tZXh0ZXJuIGludCB3X3NlbmRfZGJsb2NrKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbi1leHRlcm4gaW50IHdfc2VuZF9yZWFkX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4tZXh0ZXJuIGludCB3X3Jlc3RhcnRfZGlza19pbyhzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4tZXh0ZXJuIGludCB3X3NlbmRfb3V0X29mX3N5bmMoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuLVxuLWV4dGVybiB2b2lkIHJlc3luY190aW1lcl9mbihzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7XG4tZXh0ZXJuIHZvaWQgc3RhcnRfcmVzeW5jX3RpbWVyX2ZuKHN0cnVjdCB0aW1lcl9saXN0ICp0KTtcbi1cbi1leHRlcm4gdm9pZCBkcmJkX2VuZGlvX3dyaXRlX3NlY19maW5hbChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKTtcbiYjNDM7aW50IHdfZV9lbmRfZGF0YV9yZXEoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuJiM0MztpbnQgd19lX2VuZF9yc2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbiYjNDM7aW50IHdfZV9lbmRfY3N1bV9yc19yZXEoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuJiM0MztpbnQgd19lX2VuZF9vdl9yZXBseShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4mIzQzO2ludCB3X2VfZW5kX292X3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4mIzQzO2ludCB3X292X2ZpbmlzaGVkKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbiYjNDM7aW50IHdfcmVzeW5jX3RpbWVyKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbiYjNDM7aW50IHdfc2VuZF93cml0ZV9oaW50KHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbiYjNDM7aW50IHdfc2VuZF9kYmxvY2soc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuJiM0MztpbnQgd19zZW5kX3JlYWRfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbiYjNDM7aW50IHdfcmVzdGFydF9kaXNrX2lvKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbiYjNDM7aW50IHdfc2VuZF9vdXRfb2Zfc3luYyhzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4mIzQzO1xuJiM0Mzt2b2lkIHJlc3luY190aW1lcl9mbihzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7XG4mIzQzO3ZvaWQgc3RhcnRfcmVzeW5jX3RpbWVyX2ZuKHN0cnVjdCB0aW1lcl9saXN0ICp0KTtcbiYjNDM7XG4mIzQzO3ZvaWQgZHJiZF9lbmRpb193cml0ZV9zZWNfZmluYWwoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSk7XG4gXG4gLyogZHJiZF9yZWNlaXZlci5jICovXG4tZXh0ZXJuIGludCBkcmJkX2lzc3VlX2Rpc2NhcmRfb3JfemVyb19vdXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdHNlY3Rvcl90IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnJfc2VjdG9ycywgaW50IGZsYWdzKTtcbi1leHRlcm4gaW50IGRyYmRfcmVjZWl2ZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xuLWV4dGVybiBpbnQgZHJiZF9hY2tfcmVjZWl2ZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xuLWV4dGVybiB2b2lkIGRyYmRfc2VuZF9hY2tzX3dmKHN0cnVjdCB3b3JrX3N0cnVjdCAqd3MpO1xuLWV4dGVybiBib29sIGRyYmRfcnNfY19taW5fcmF0ZV90aHJvdHRsZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIGJvb2wgZHJiZF9yc19zaG91bGRfc2xvd19kb3duKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc2VjdG9yX3Qgc2VjdG9yLFxuLVx0XHRib29sIHRocm90dGxlX2lmX2FwcF9pc193YWl0aW5nKTtcbi1leHRlcm4gaW50IGRyYmRfc3VibWl0X3BlZXJfcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKTtcbi1leHRlcm4gaW50IGRyYmRfZnJlZV9wZWVyX3JlcXMoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBsaXN0X2hlYWQgKik7XG4tZXh0ZXJuIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqZHJiZF9hbGxvY19wZWVyX3JlcShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1NjQsXG4tXHRcdFx0XHRcdFx0ICAgICBzZWN0b3JfdCwgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0XHRcdCAgICAgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0XHRcdCAgICAgZ2ZwX3QpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gdm9pZCBkcmJkX2ZyZWVfcGVlcl9yZXEoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcmVxKTtcbi1leHRlcm4gc3RydWN0IHBhZ2UgKmRyYmRfYWxsb2NfcGFnZXMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgdW5zaWduZWQgaW50LCBib29sKTtcbi1leHRlcm4gdm9pZCBfZHJiZF9jbGVhcl9kb25lX2VlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgbGlzdF9oZWFkICp0b19iZV9mcmVlZCk7XG4tZXh0ZXJuIGludCBkcmJkX2Nvbm5lY3RlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcbiYjNDM7aW50IGRyYmRfaXNzdWVfZGlzY2FyZF9vcl96ZXJvX291dChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc3RhcnQsXG4mIzQzO1x0XHRcdFx0ICAgdW5zaWduZWQgaW50IG5yX3NlY3RvcnMsIGludCBmbGFncyk7XG4mIzQzO2ludCBkcmJkX3JlY2VpdmVyKHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTtcbiYjNDM7aW50IGRyYmRfYWNrX3JlY2VpdmVyKHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTtcbiYjNDM7dm9pZCBkcmJkX3NlbmRfYWNrc193ZihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndzKTtcbiYjNDM7Ym9vbCBkcmJkX3JzX2NfbWluX3JhdGVfdGhyb3R0bGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0Mztib29sIGRyYmRfcnNfc2hvdWxkX3Nsb3dfZG93bihzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsXG4mIzQzO1x0XHRcdCAgICAgIHNlY3Rvcl90IHNlY3RvciwgYm9vbCB0aHJvdHRsZV9pZl9hcHBfaXNfd2FpdGluZyk7XG4mIzQzO2ludCBkcmJkX3N1Ym1pdF9wZWVyX3JlcXVlc3Qoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSk7XG4mIzQzO2ludCBkcmJkX2ZyZWVfcGVlcl9yZXFzKHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgbGlzdF9oZWFkICopO1xuJiM0MztzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKmRyYmRfYWxsb2NfcGVlcl9yZXEoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgdTY0LFxuJiM0MztcdFx0XHRcdFx0ICAgICAgc2VjdG9yX3QsIHVuc2lnbmVkIGludCxcbiYjNDM7XHRcdFx0XHRcdCAgICAgIHVuc2lnbmVkIGludCwgZ2ZwX3QpO1xuJiM0Mzt2b2lkIGRyYmRfZnJlZV9wZWVyX3JlcShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdFx0c3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpyZXEpO1xuJiM0MztzdHJ1Y3QgcGFnZSAqZHJiZF9hbGxvY19wYWdlcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bnNpZ25lZCBpbnQsIGJvb2wpO1xuJiM0Mzt2b2lkIF9kcmJkX2NsZWFyX2RvbmVfZWUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgbGlzdF9oZWFkICp0b19iZV9mcmVlZCk7XG4mIzQzO2ludCBkcmJkX2Nvbm5lY3RlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcbiBcbiAvKiBzZXRzIHRoZSBudW1iZXIgb2YgNTEyIGJ5dGUgc2VjdG9ycyBvZiBvdXIgdmlydHVhbCBkZXZpY2UgKi9cbiB2b2lkIGRyYmRfc2V0X215X2NhcGFjaXR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzaXplKTtcbkBAIC0xNDkwLDcgJiM0MzsxNTE0LDYgQEAgdm9pZCBkcmJkX3NldF9teV9jYXBhY2l0eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2l6ZSk7XG4gc3RhdGljIGlubGluZSB2b2lkIGRyYmRfc3VibWl0X2Jpb19ub2FjY3Qoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4gXHRcdFx0XHRcdCAgICAgaW50IGZhdWx0X3R5cGUsIHN0cnVjdCBiaW8gKmJpbylcbiB7XG4tXHRfX3JlbGVhc2UobG9jYWwpO1xuIFx0aWYgKCFiaW8tXHUwMDNlYmlfYmRldikge1xuIFx0XHRkcmJkX2VycihkZXZpY2UsIFwmIzM0O2RyYmRfc3VibWl0X2Jpb19ub2FjY3Q6IGJpby1cdTAwM2ViaV9iZGV2ID09IE5VTExcXG5cJiMzNDspO1xuIFx0XHRiaW8tXHUwMDNlYmlfc3RhdHVzID0gQkxLX1NUU19JT0VSUjtcbkBAIC0xNTEyLDMyICYjNDM7MTUzNSwzNiBAQCBleHRlcm4gc3RydWN0IHByb2NfZGlyX2VudHJ5ICpkcmJkX3Byb2M7XG4gaW50IGRyYmRfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpO1xuIFxuIC8qIGRyYmRfYWN0bG9nLmMgKi9cbi1leHRlcm4gYm9vbCBkcmJkX2FsX2JlZ2luX2lvX3ByZXBhcmUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbi1leHRlcm4gaW50IGRyYmRfYWxfYmVnaW5faW9fbm9uYmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbi1leHRlcm4gdm9pZCBkcmJkX2FsX2JlZ2luX2lvX2NvbW1pdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIGJvb2wgZHJiZF9hbF9iZWdpbl9pb19mYXN0cGF0aChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpO1xuLWV4dGVybiB2b2lkIGRyYmRfYWxfYmVnaW5faW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbi1leHRlcm4gdm9pZCBkcmJkX2FsX2NvbXBsZXRlX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9yc19jb21wbGV0ZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9yKTtcbi1leHRlcm4gaW50IGRyYmRfcnNfYmVnaW5faW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3Rvcik7XG4tZXh0ZXJuIGludCBkcmJkX3RyeV9yc19iZWdpbl9pbyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHNlY3Rvcl90IHNlY3Rvcik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9yc19jYW5jZWxfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gaW50IGRyYmRfcnNfZGVsX2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9yc19mYWlsZWRfaW8oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLFxuLVx0XHRzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplKTtcbi1leHRlcm4gdm9pZCBkcmJkX2FkdmFuY2VfcnNfbWFya3Moc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCB1bnNpZ25lZCBsb25nIHN0aWxsX3RvX2dvKTtcbiYjNDM7Ym9vbCBkcmJkX2FsX2JlZ2luX2lvX3ByZXBhcmUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHRcdCAgICAgIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbiYjNDM7aW50IGRyYmRfYWxfYmVnaW5faW9fbm9uYmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHRcdCAgICAgIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbiYjNDM7dm9pZCBkcmJkX2FsX2JlZ2luX2lvX2NvbW1pdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO2Jvb2wgZHJiZF9hbF9iZWdpbl9pb19mYXN0cGF0aChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdFx0ICAgICAgIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbiYjNDM7dm9pZCBkcmJkX2FsX2JlZ2luX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSk7XG4mIzQzO3ZvaWQgZHJiZF9hbF9jb21wbGV0ZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpO1xuJiM0Mzt2b2lkIGRyYmRfcnNfY29tcGxldGVfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3Rvcik7XG4mIzQzO2ludCBkcmJkX3JzX2JlZ2luX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IpO1xuJiM0MztpbnQgZHJiZF90cnlfcnNfYmVnaW5faW8oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IpO1xuJiM0Mzt2b2lkIGRyYmRfcnNfY2FuY2VsX2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO2ludCBkcmJkX3JzX2RlbF9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0Mzt2b2lkIGRyYmRfcnNfZmFpbGVkX2lvKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc2VjdG9yX3Qgc2VjdG9yLFxuJiM0MztcdFx0ICAgICAgIGludCBzaXplKTtcbiYjNDM7dm9pZCBkcmJkX2FkdmFuY2VfcnNfbWFya3Moc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLFxuJiM0MztcdFx0XHQgICB1bnNpZ25lZCBsb25nIHN0aWxsX3RvX2dvKTtcbiBcbiBlbnVtIHVwZGF0ZV9zeW5jX2JpdHNfbW9kZSB7IFJFQ09SRF9SU19GQUlMRUQsIFNFVF9PVVRfT0ZfU1lOQywgU0VUX0lOX1NZTkMgfTtcbi1leHRlcm4gaW50IF9fZHJiZF9jaGFuZ2Vfc3luYyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHNlY3Rvcl90IHNlY3RvciwgaW50IHNpemUsXG4tXHRcdGVudW0gdXBkYXRlX3N5bmNfYml0c19tb2RlIG1vZGUpO1xuJiM0MztpbnQgX19kcmJkX2NoYW5nZV9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc2VjdG9yX3Qgc2VjdG9yLFxuJiM0MztcdFx0ICAgICAgIGludCBzaXplLCBlbnVtIHVwZGF0ZV9zeW5jX2JpdHNfbW9kZSBtb2RlKTtcbiAjZGVmaW5lIGRyYmRfc2V0X2luX3N5bmMocGVlcl9kZXZpY2UsIHNlY3Rvciwgc2l6ZSkgXFxcbiBcdF9fZHJiZF9jaGFuZ2Vfc3luYyhwZWVyX2RldmljZSwgc2VjdG9yLCBzaXplLCBTRVRfSU5fU1lOQylcbiAjZGVmaW5lIGRyYmRfc2V0X291dF9vZl9zeW5jKHBlZXJfZGV2aWNlLCBzZWN0b3IsIHNpemUpIFxcXG4gXHRfX2RyYmRfY2hhbmdlX3N5bmMocGVlcl9kZXZpY2UsIHNlY3Rvciwgc2l6ZSwgU0VUX09VVF9PRl9TWU5DKVxuICNkZWZpbmUgZHJiZF9yc19mYWlsZWRfaW8ocGVlcl9kZXZpY2UsIHNlY3Rvciwgc2l6ZSkgXFxcbiBcdF9fZHJiZF9jaGFuZ2Vfc3luYyhwZWVyX2RldmljZSwgc2VjdG9yLCBzaXplLCBSRUNPUkRfUlNfRkFJTEVEKVxuLWV4dGVybiB2b2lkIGRyYmRfYWxfc2hyaW5rKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gaW50IGRyYmRfYWxfaW5pdGlhbGl6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdm9pZCAqKTtcbiYjNDM7dm9pZCBkcmJkX2FsX3NocmluayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO2ludCBkcmJkX2FsX2luaXRpYWxpemUoc3RydWN0IGRyYmRfZGV2aWNlICosIHZvaWQgKik7XG4gXG4gLyogZHJiZF9ubC5jICovXG4gLyogc3RhdGUgaW5mbyBicm9hZGNhc3QgKi9cbkBAIC0xNTU2LDI4ICYjNDM7MTU4MywyMCBAQCBzdHJ1Y3Qgc2liX2luZm8ge1xuIH07XG4gdm9pZCBkcmJkX2JjYXN0X2V2ZW50KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCBzdHJ1Y3Qgc2liX2luZm8gKnNpYik7XG4gXG4tZXh0ZXJuIGludCBub3RpZnlfcmVzb3VyY2Vfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKixcbi1cdFx0XHRcdCAgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0ICBzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqLFxuLVx0XHRcdFx0ICBzdHJ1Y3QgcmVzb3VyY2VfaW5mbyAqLFxuLVx0XHRcdFx0ICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpO1xuLWV4dGVybiBpbnQgbm90aWZ5X2RldmljZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLFxuLVx0XHRcdFx0dW5zaWduZWQgaW50LFxuLVx0XHRcdFx0c3RydWN0IGRyYmRfZGV2aWNlICosXG4tXHRcdFx0XHRzdHJ1Y3QgZGV2aWNlX2luZm8gKixcbi1cdFx0XHRcdGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSk7XG4tZXh0ZXJuIGludCBub3RpZnlfY29ubmVjdGlvbl9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLFxuLVx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCxcbi1cdFx0XHRcdCAgICBzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosXG4tXHRcdFx0XHQgICAgc3RydWN0IGNvbm5lY3Rpb25faW5mbyAqLFxuLVx0XHRcdFx0ICAgIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSk7XG4tZXh0ZXJuIGludCBub3RpZnlfcGVlcl9kZXZpY2Vfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKixcbi1cdFx0XHRcdCAgICAgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0ICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLFxuLVx0XHRcdFx0ICAgICBzdHJ1Y3QgcGVlcl9kZXZpY2VfaW5mbyAqLFxuLVx0XHRcdFx0ICAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpO1xuLWV4dGVybiB2b2lkIG5vdGlmeV9oZWxwZXIoZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlLCBzdHJ1Y3QgZHJiZF9kZXZpY2UgKixcbi1cdFx0XHQgIHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwgY29uc3QgY2hhciAqLCBpbnQpO1xuJiM0MztpbnQgbm90aWZ5X3Jlc291cmNlX3N0YXRlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCxcbiYjNDM7XHRcdFx0ICBzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqLCBzdHJ1Y3QgcmVzb3VyY2VfaW5mbyAqLFxuJiM0MztcdFx0XHQgIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSk7XG4mIzQzO2ludCBub3RpZnlfZGV2aWNlX3N0YXRlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCwgc3RydWN0IGRyYmRfZGV2aWNlICosXG4mIzQzO1x0XHRcdHN0cnVjdCBkZXZpY2VfaW5mbyAqLCBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpO1xuJiM0MztpbnQgbm90aWZ5X2Nvbm5lY3Rpb25fc3RhdGUoc3RydWN0IHNrX2J1ZmYgKiwgdW5zaWduZWQgaW50LFxuJiM0MztcdFx0XHQgICAgc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBzdHJ1Y3QgY29ubmVjdGlvbl9pbmZvICosXG4mIzQzO1x0XHRcdCAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpO1xuJiM0MztpbnQgbm90aWZ5X3BlZXJfZGV2aWNlX3N0YXRlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCxcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLFxuJiM0MztcdFx0XHQgICAgIHN0cnVjdCBwZWVyX2RldmljZV9pbmZvICosXG4mIzQzO1x0XHRcdCAgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTtcbiYjNDM7dm9pZCBub3RpZnlfaGVscGVyKGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSwgc3RydWN0IGRyYmRfZGV2aWNlICosXG4mIzQzO1x0XHQgICBzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIGNvbnN0IGNoYXIgKiwgaW50KTtcbiBcbiAvKlxuICAqIGlubGluZSBoZWxwZXIgZnVuY3Rpb25zXG5AQCAtMTgyMiw3ICYjNDM7MTg0MSw3IEBAIGRyYmRfZGV2aWNlX3Bvc3Rfd29yayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IHdvcmtfYml0KVxuIFx0fVxuIH1cbiBcbi1leHRlcm4gdm9pZCBkcmJkX2ZsdXNoX3dvcmtxdWV1ZShzdHJ1Y3QgZHJiZF93b3JrX3F1ZXVlICp3b3JrX3F1ZXVlKTtcbiYjNDM7dm9pZCBkcmJkX2ZsdXNoX3dvcmtxdWV1ZShzdHJ1Y3QgZHJiZF93b3JrX3F1ZXVlICp3b3JrX3F1ZXVlKTtcbiBcbiAvKiBUbyBnZXQgdGhlIGFja19yZWNlaXZlciBvdXQgb2YgdGhlIGJsb2NraW5nIG5ldHdvcmsgc3RhY2ssXG4gICogc28gaXQgY2FuIGNoYW5nZSBpdHMgc2tfcmN2dGltZW8gZnJvbSBpZGxlLSB0byBwaW5nLXRpbWVvdXQsXG5AQCAtMTg0MSwxOSAmIzQzOzE4NjAsMjcgQEAgc3RhdGljIGlubGluZSB2b2lkIHJlcXVlc3RfcGluZyhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKVxuIFx0d2FrZV9hY2tfcmVjZWl2ZXIoY29ubmVjdGlvbik7XG4gfVxuIFxuLWV4dGVybiB2b2lkICpjb25uX3ByZXBhcmVfY29tbWFuZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHN0cnVjdCBkcmJkX3NvY2tldCAqKTtcbi1leHRlcm4gdm9pZCAqZHJiZF9wcmVwYXJlX2NvbW1hbmQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc3RydWN0IGRyYmRfc29ja2V0ICopO1xuLWV4dGVybiBpbnQgY29ubl9zZW5kX2NvbW1hbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKixcbi1cdFx0XHQgICAgIGVudW0gZHJiZF9wYWNrZXQsIHVuc2lnbmVkIGludCwgdm9pZCAqLFxuLVx0XHRcdCAgICAgdW5zaWduZWQgaW50KTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9jb21tYW5kKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3NvY2tldCAqLFxuLVx0XHRcdCAgICAgZW51bSBkcmJkX3BhY2tldCwgdW5zaWduZWQgaW50LCB2b2lkICosXG4tXHRcdFx0ICAgICB1bnNpZ25lZCBpbnQpO1xuLVxuLWV4dGVybiBpbnQgZHJiZF9zZW5kX3Bpbmcoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfcGluZ19hY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfc3RhdGVfcmVxKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsIHVuaW9uIGRyYmRfc3RhdGUpO1xuLWV4dGVybiBpbnQgY29ubl9zZW5kX3N0YXRlX3JlcShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHVuaW9uIGRyYmRfc3RhdGUsIHVuaW9uIGRyYmRfc3RhdGUpO1xuJiM0Mzt2b2lkICpjb25uX3ByZXBhcmVfY29tbWFuZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLFxuJiM0MztcdFx0XHQgICBzdHJ1Y3QgZHJiZF9zb2NrZXQgKnNvY2spXG4mIzQzO1x0X19jb25kX2FjcXVpcmVzKHRydWUsIFx1MDAyNnNvY2stXHUwMDNlbXV0ZXgpO1xuJiM0Mzt2b2lkICpkcmJkX3ByZXBhcmVfY29tbWFuZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHN0cnVjdCBkcmJkX3NvY2tldCAqc29jaylcbiYjNDM7XHRfX2NvbmRfYWNxdWlyZXModHJ1ZSwgXHUwMDI2c29jay1cdTAwM2VtdXRleCk7XG4mIzQzO2ludCBjb25uX3NlbmRfY29tbWFuZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLFxuJiM0MztcdFx0ICAgICAgc3RydWN0IGRyYmRfc29ja2V0ICpzb2NrLFxuJiM0MztcdFx0ICAgICAgZW51bSBkcmJkX3BhY2tldCBjbWQsIHVuc2lnbmVkIGludCBoZWFkZXJfc2l6ZSxcbiYjNDM7XHRcdCAgICAgIHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBzaXplKVxuJiM0MztcdF9fcmVsZWFzZXMoXHUwMDI2c29jay1cdTAwM2VtdXRleCk7XG4mIzQzO2ludCBkcmJkX3NlbmRfY29tbWFuZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHN0cnVjdCBkcmJkX3NvY2tldCAqc29jayxcbiYjNDM7XHRcdCAgICAgIGVudW0gZHJiZF9wYWNrZXQgY21kLCB1bnNpZ25lZCBpbnQgaGVhZGVyX3NpemUsXG4mIzQzO1x0XHQgICAgICB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSlcbiYjNDM7XHRfX3JlbGVhc2VzKFx1MDAyNnNvY2stXHUwMDNlbXV0ZXgpO1xuJiM0MztcbiYjNDM7aW50IGRyYmRfc2VuZF9waW5nKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xuJiM0MztpbnQgZHJiZF9zZW5kX3BpbmdfYWNrKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xuJiM0MztpbnQgZHJiZF9zZW5kX3N0YXRlX3JlcShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLFxuJiM0MztcdFx0XHR1bmlvbiBkcmJkX3N0YXRlKTtcbiYjNDM7aW50IGNvbm5fc2VuZF9zdGF0ZV9yZXEoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCB1bmlvbiBkcmJkX3N0YXRlLFxuJiM0MztcdFx0XHR1bmlvbiBkcmJkX3N0YXRlKTtcbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgZHJiZF90aHJlYWRfc3RvcChzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSlcbiB7XG5AQCAtMTk3Niw5ICYjNDM7MjAwMyw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc19zeW5jX3N0YXRlKGVudW0gZHJiZF9jb25ucyBjb25uZWN0aW9uX3N0YXRlKVxuICAqXG4gICogWW91IGhhdmUgdG8gY2FsbCBwdXRfbGRldigpIHdoZW4gZmluaXNoZWQgd29ya2luZyB3aXRoIGRldmljZS1cdTAwM2VsZGV2LlxuICAqL1xuLSNkZWZpbmUgZ2V0X2xkZXZfaWZfc3RhdGUoX2RldmljZSwgX21pbl9zdGF0ZSlcdFx0XHRcdFxcXG4tXHQoX2dldF9sZGV2X2lmX3N0YXRlKChfZGV2aWNlKSwgKF9taW5fc3RhdGUpKSA/XHRcdFx0XFxcbi1cdCAoeyBfX2FjcXVpcmUoeCk7IHRydWU7IH0pIDogZmFsc2UpXG4gI2RlZmluZSBnZXRfbGRldihfZGV2aWNlKSBnZXRfbGRldl9pZl9zdGF0ZShfZGV2aWNlLCBEX0lOQ09OU0lTVEVOVClcbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgcHV0X2xkZXYoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXG5AQCAtMTk5Myw3ICYjNDM7MjAxNyw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfbGRldihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbiBcdC8qIFRoaXMgbWF5IGJlIGNhbGxlZCBmcm9tIHNvbWUgZW5kaW8gaGFuZGxlcixcbiBcdCAqIHNvIHdlIG11c3Qgbm90IHNsZWVwIGhlcmUuICovXG4gXG4tXHRfX3JlbGVhc2UobG9jYWwpO1xuIFx0RF9BU1NFUlQoZGV2aWNlLCBpIFx1MDAzZT0gMCk7XG4gXHRpZiAoaSA9PSAwKSB7XG4gXHRcdGlmIChkaXNrX3N0YXRlID09IERfRElTS0xFU1MpXG5AQCAtMjAwNyw4ICYjNDM7MjAzMCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfbGRldihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbiBcdH1cbiB9XG4gXG4tI2lmbmRlZiBfX0NIRUNLRVJfX1xuLXN0YXRpYyBpbmxpbmUgaW50IF9nZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Rpc2tfc3RhdGUgbWlucylcbiYjNDM7c3RhdGljIGlubGluZSBpbnQgZ2V0X2xkZXZfaWZfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHRcdFx0ICAgIGVudW0gZHJiZF9kaXNrX3N0YXRlIG1pbnMpXG4ge1xuIFx0aW50IGlvX2FsbG93ZWQ7XG4gXG5AQCAtMjAyMiw5ICYjNDM7MjA0NSw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IF9nZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Rpc2tfXG4gXHRcdHB1dF9sZGV2KGRldmljZSk7XG4gXHRyZXR1cm4gaW9fYWxsb3dlZDtcbiB9XG4tI2Vsc2Vcbi1leHRlcm4gaW50IF9nZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Rpc2tfc3RhdGUgbWlucyk7XG4tI2VuZGlmXG4gXG4gLyogdGhpcyB0aHJvdHRsZXMgb24tdGhlLWZseSBhcHBsaWNhdGlvbiByZXF1ZXN0c1xuICAqIGFjY29yZGluZyB0byBtYXhfYnVmZmVycyBzZXR0aW5ncztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9pbnRlcnZhbC5oIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50ZXJ2YWwuaFxuaW5kZXggNWQzMjEzYjgxZWVkZTcuLjI1NWU5ZDA3MWFlMWQ0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50ZXJ2YWwuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50ZXJ2YWwuaFxuQEAgLTI5LDEzICYjNDM7MjksMTIgQEAgc3RhdGljIGlubGluZSBib29sIGRyYmRfaW50ZXJ2YWxfZW1wdHkoc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpXG4gXHRyZXR1cm4gUkJfRU1QVFlfTk9ERShcdTAwMjZpLVx1MDAzZXJiKTtcbiB9XG4gXG4tZXh0ZXJuIGJvb2wgZHJiZF9pbnNlcnRfaW50ZXJ2YWwoc3RydWN0IHJiX3Jvb3QgKiwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7XG4tZXh0ZXJuIGJvb2wgZHJiZF9jb250YWluc19pbnRlcnZhbChzdHJ1Y3QgcmJfcm9vdCAqLCBzZWN0b3JfdCxcbi1cdFx0XHRcdCAgIHN0cnVjdCBkcmJkX2ludGVydmFsICopO1xuLWV4dGVybiB2b2lkIGRyYmRfcmVtb3ZlX2ludGVydmFsKHN0cnVjdCByYl9yb290ICosIHN0cnVjdCBkcmJkX2ludGVydmFsICopO1xuLWV4dGVybiBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqZHJiZF9maW5kX292ZXJsYXAoc3RydWN0IHJiX3Jvb3QgKiwgc2VjdG9yX3QsXG4mIzQzO2Jvb2wgZHJiZF9pbnNlcnRfaW50ZXJ2YWwoc3RydWN0IHJiX3Jvb3QgKiwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7XG4mIzQzO2Jvb2wgZHJiZF9jb250YWluc19pbnRlcnZhbChzdHJ1Y3QgcmJfcm9vdCAqLCBzZWN0b3JfdCwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7XG4mIzQzO3ZvaWQgZHJiZF9yZW1vdmVfaW50ZXJ2YWwoc3RydWN0IHJiX3Jvb3QgKiwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7XG4mIzQzO3N0cnVjdCBkcmJkX2ludGVydmFsICpkcmJkX2ZpbmRfb3ZlcmxhcChzdHJ1Y3QgcmJfcm9vdCAqLCBzZWN0b3JfdCxcbiBcdFx0XHRcdFx0dW5zaWduZWQgaW50KTtcbi1leHRlcm4gc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmRyYmRfbmV4dF9vdmVybGFwKHN0cnVjdCBkcmJkX2ludGVydmFsICosIHNlY3Rvcl90LFxuJiM0MztzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqZHJiZF9uZXh0X292ZXJsYXAoc3RydWN0IGRyYmRfaW50ZXJ2YWwgKiwgc2VjdG9yX3QsXG4gXHRcdFx0XHRcdHVuc2lnbmVkIGludCk7XG4gXG4gI2RlZmluZSBkcmJkX2Zvcl9lYWNoX292ZXJsYXAoaSwgcm9vdCwgc2VjdG9yLCBzaXplKVx0XHRcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uY1xuaW5kZXggYTJhODQxYzg5MjAxMTEuLjZmM2MwNDI1MmI1ZGVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmNcbkBAIC0xMjgsMjUgJiM0MzsxMjgsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIGRyYmRfb3BzID0ge1xuIFx0LnJlbGVhc2VcdD0gZHJiZF9yZWxlYXNlLFxuIH07XG4gXG4tI2lmZGVmIF9fQ0hFQ0tFUl9fXG4tLyogV2hlbiBjaGVja2luZyB3aXRoIHNwYXJzZSwgYW5kIHRoaXMgaXMgYW4gaW5saW5lIGZ1bmN0aW9uLCBzcGFyc2Ugd2lsbFxuLSAgIGdpdmUgdG9ucyBvZiBmYWxzZSBwb3NpdGl2ZXMuIFdoZW4gdGhpcyBpcyBhIHJlYWwgZnVuY3Rpb25zIHNwYXJzZSB3b3Jrcy5cbi0gKi9cbi1pbnQgX2dldF9sZGV2X2lmX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBlbnVtIGRyYmRfZGlza19zdGF0ZSBtaW5zKVxuLXtcbi1cdGludCBpb19hbGxvd2VkO1xuLVxuLVx0YXRvbWljX2luYyhcdTAwMjZkZXZpY2UtXHUwMDNlbG9jYWxfY250KTtcbi1cdGlvX2FsbG93ZWQgPSAoZGV2aWNlLVx1MDAzZXN0YXRlLmRpc2sgXHUwMDNlPSBtaW5zKTtcbi1cdGlmICghaW9fYWxsb3dlZCkge1xuLVx0XHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcdTAwMjZkZXZpY2UtXHUwMDNlbG9jYWxfY250KSlcbi1cdFx0XHR3YWtlX3VwKFx1MDAyNmRldmljZS1cdTAwM2VtaXNjX3dhaXQpO1xuLVx0fVxuLVx0cmV0dXJuIGlvX2FsbG93ZWQ7XG4tfVxuLVxuLSNlbmRpZlxuLVxuIC8qKlxuICAqIHRsX3JlbGVhc2UoKSAtIG1hcmsgYXMgQkFSUklFUl9BQ0tFRCBhbGwgcmVxdWVzdHMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgdHJhbnNmZXIgbG9nIGVwb2NoXG4gICogQGNvbm5lY3Rpb246XHREUkJEIGNvbm5lY3Rpb24uXG5AQCAtMzI4Miw3ICYjNDM7MzI2Myw3IEBAIHZvaWQgZHJiZF9tZF9tYXJrX2RpcnR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxuIFx0XHRtb2RfdGltZXIoXHUwMDI2ZGV2aWNlLVx1MDAzZW1kX3N5bmNfdGltZXIsIGppZmZpZXMgJiM0MzsgNSpIWik7XG4gfVxuIFxuLXZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO3ZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbiB7XG4gXHRpbnQgaTtcbiBcbkBAIC0zMjkwLDcgJiM0MzszMjcxLDcgQEAgdm9pZCBkcmJkX3V1aWRfbW92ZV9oaXN0b3J5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbiBcdFx0ZGV2aWNlLVx1MDAzZWxkZXYtXHUwMDNlbWQudXVpZFtpJiM0MzsxXSA9IGRldmljZS1cdTAwM2VsZGV2LVx1MDAzZW1kLnV1aWRbaV07XG4gfVxuIFxuLXZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbClcbiYjNDM7dm9pZCBfX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpXG4ge1xuIFx0aWYgKGlkeCA9PSBVSV9DVVJSRU5UKSB7XG4gXHRcdGlmIChkZXZpY2UtXHUwMDNlc3RhdGUucm9sZSA9PSBSX1BSSU1BUlkpXG5AQCAtMzMwNSw3ICYjNDM7MzI4Niw3IEBAIHZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsXG4gXHRkcmJkX21kX21hcmtfZGlydHkoZGV2aWNlKTtcbiB9XG4gXG4tdm9pZCBfZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO3ZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpXG4ge1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldmljZS1cdTAwM2VsZGV2LVx1MDAzZW1kLnV1aWRfbG9jaywgZmxhZ3MpO1xuQEAgLTMzMTMsNyAmIzQzOzMyOTQsNyBAQCB2b2lkIF9kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb1xuIFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkZXZpY2UtXHUwMDNlbGRldi1cdTAwM2VtZC51dWlkX2xvY2ssIGZsYWdzKTtcbiB9XG4gXG4tdm9pZCBkcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbClcbiYjNDM7dm9pZCBkcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkZXZpY2UtXHUwMDNlbGRldi1cdTAwM2VtZC51dWlkX2xvY2ssIGZsYWdzKTtcbkBAIC0zMzMyLDcgJiM0MzszMzEzLDcgQEAgdm9pZCBkcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NcbiAgKiBDcmVhdGVzIGEgbmV3IGN1cnJlbnQgVVVJRCwgYW5kIHJvdGF0ZXMgdGhlIG9sZCBjdXJyZW50IFVVSUQgaW50b1xuICAqIHRoZSBiaXRtYXAgc2xvdC4gQ2F1c2VzIGFuIGluY3JlbWVudGFsIHJlc3luYyB1cG9uIG5leHQgY29ubmVjdC5cbiAgKi9cbi12b2lkIGRyYmRfdXVpZF9uZXdfY3VycmVudChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO3ZvaWQgZHJiZF91dWlkX25ld19jdXJyZW50KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxuIHtcbiBcdHU2NCB2YWw7XG4gXHR1bnNpZ25lZCBsb25nIGxvbmcgYm1fdXVpZDtcbkBAIC0zMzU0LDcgJiM0MzszMzM1LDcgQEAgdm9pZCBkcmJkX3V1aWRfbmV3X2N1cnJlbnQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxuIFx0ZHJiZF9tZF9zeW5jKGRldmljZSk7XG4gfVxuIFxuLXZvaWQgZHJiZF91dWlkX3NldF9ibShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO3ZvaWQgZHJiZF91dWlkX3NldF9ibShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdTY0IHZhbClcbiB7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2aWNlLVx1MDAzZWxkZXYtXHUwMDNlbWQudXVpZF9sb2NrLCBmbGFncyk7XG5AQCAtMzM4Nyw3ICYjNDM7MzM2OCw3IEBAIHZvaWQgZHJiZF91dWlkX3NldF9ibShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpXG4gICogU2V0cyBhbGwgYml0cyBpbiB0aGUgYml0bWFwIGFuZCB3cml0ZXMgdGhlIHdob2xlIGJpdG1hcCB0byBzdGFibGUgc3RvcmFnZS5cbiAgKi9cbiBpbnQgZHJiZF9ibWlvX3NldF9uX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRcdCAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbiYjNDM7XHRcdFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXG4gXG4ge1xuIFx0aW50IHJ2ID0gLUVJTztcbkBAIC0zNDE0LDcgJiM0MzszMzk1LDcgQEAgaW50IGRyYmRfYm1pb19zZXRfbl93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiAgKiBDbGVhcnMgYWxsIGJpdHMgaW4gdGhlIGJpdG1hcCBhbmQgd3JpdGVzIHRoZSB3aG9sZSBiaXRtYXAgdG8gc3RhYmxlIHN0b3JhZ2UuXG4gICovXG4gaW50IGRyYmRfYm1pb19jbGVhcl9uX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRcdCAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbiYjNDM7XHRcdFx0ICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcbiBcbiB7XG4gXHRkcmJkX3Jlc3VtZV9hbChkZXZpY2UpO1xuQEAgLTM1NDEsNyAmIzQzOzM1MjIsNyBAQCBpbnQgZHJiZF9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4gXHRyZXR1cm4gcnY7XG4gfVxuIFxuLXZvaWQgZHJiZF9tZF9zZXRfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWcpIF9fbXVzdF9ob2xkKGxvY2FsKVxuJiM0Mzt2b2lkIGRyYmRfbWRfc2V0X2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFnKVxuIHtcbiBcdGlmICgoZGV2aWNlLVx1MDAzZWxkZXYtXHUwMDNlbWQuZmxhZ3MgXHUwMDI2IGZsYWcpICE9IGZsYWcpIHtcbiBcdFx0ZHJiZF9tZF9tYXJrX2RpcnR5KGRldmljZSk7XG5AQCAtMzU0OSw3ICYjNDM7MzUzMCw3IEBAIHZvaWQgZHJiZF9tZF9zZXRfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWcpIF9fbXVzdF9ob2xkKGxvY2FsKVxuIFx0fVxuIH1cbiBcbi12b2lkIGRyYmRfbWRfY2xlYXJfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWcpIF9fbXVzdF9ob2xkKGxvY2FsKVxuJiM0Mzt2b2lkIGRyYmRfbWRfY2xlYXJfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWcpXG4ge1xuIFx0aWYgKChkZXZpY2UtXHUwMDNlbGRldi1cdTAwM2VtZC5mbGFncyBcdTAwMjYgZmxhZykgIT0gMCkge1xuIFx0XHRkcmJkX21kX21hcmtfZGlydHkoZGV2aWNlKTtcbkBAIC0zNjc4LDYgJiM0MzszNjU5LDcgQEAgaW50IGRyYmRfd2FpdF9taXNjKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSlcbiB9XG4gXG4gdm9pZCBsb2NrX2FsbF9yZXNvdXJjZXModm9pZClcbiYjNDM7XHRfX2NvbnRleHRfdW5zYWZlKGxvY2tpbmcgbG9vcClcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2U7XG4gXHRpbnQgX19tYXliZV91bnVzZWQgaSA9IDA7XG5AQCAtMzY4OSw2ICYjNDM7MzY3MSw3IEBAIHZvaWQgbG9ja19hbGxfcmVzb3VyY2VzKHZvaWQpXG4gfVxuIFxuIHZvaWQgdW5sb2NrX2FsbF9yZXNvdXJjZXModm9pZClcbiYjNDM7XHRfX2NvbnRleHRfdW5zYWZlKGxvY2tpbmcgbG9vcClcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2U7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbmwuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmNcbmluZGV4IGY5ZmZjZDY3NjA3YjU1Li43NDhiMWQwOTNmMmU2NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmNcbkBAIC05NjgsOCAmIzQzOzk2OCw5IEBAIHZvaWQgZHJiZF9yZXN1bWVfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXG4gICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIHJldHVybiB2YWx1ZXMgaW5kaWNhdGUgZXJyb3JzLlxuICAqIFlvdSBzaG91bGQgY2FsbCBkcmJkX21kX3N5bmMoKSBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXG4gICovXG4tZW51bSBkZXRlcm1pbmVfZGV2X3NpemVcbi1kcmJkX2RldGVybWluZV9kZXZfc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkZHNfZmxhZ3MgZmxhZ3MsIHN0cnVjdCByZXNpemVfcGFybXMgKnJzKSBfX211c3RfaG9sZChsb2NhbClcbiYjNDM7ZW51bSBkZXRlcm1pbmVfZGV2X3NpemUgZHJiZF9kZXRlcm1pbmVfZGV2X3NpemUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHRcdFx0XHRcdGVudW0gZGRzX2ZsYWdzIGZsYWdzLFxuJiM0MztcdFx0XHRcdFx0XHRzdHJ1Y3QgcmVzaXplX3Bhcm1zICpycylcbiB7XG4gXHRzdHJ1Y3QgbWRfb2Zmc2V0c19hbmRfc2l6ZXMge1xuIFx0XHR1NjQgbGFzdF9hZ3JlZWRfc2VjdDtcbkBAIC0zMDk3LDcgJiM0MzszMDk4LDcgQEAgc3RhdGljIGludCBkcmJkX2FkbV9zaW1wbGVfcmVxdWVzdF9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICpcbiB9XG4gXG4gc3RhdGljIGludCBkcmJkX2JtaW9fc2V0X3N1c3BfYWwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO1x0XHRcdFx0IHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcbiB7XG4gXHRpbnQgcnY7XG4gXG5AQCAtMzUyOCwxNSAmIzQzOzM1MjksNTYgQEAgaW50IGRyYmRfYWRtX2R1bXBfY29ubmVjdGlvbnNfZG9uZShzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4gXG4gZW51bSB7IFNJTkdMRV9SRVNPVVJDRSwgSVRFUkFURV9SRVNPVVJDRVMgfTtcbiBcbiYjNDM7c3RhdGljIGludCBkcmJkX25sX3B1dF9kdW1wX2Nvbm5lY3Rpb25zX3Jlc3VsdChcbiYjNDM7XHRcdHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYixcbiYjNDM7XHRcdHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSxcbiYjNDM7XHRcdHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGVudW0gZHJiZF9yZXRfY29kZSByZXRjb2RlKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRyYmRfZ2VubG1zZ2hkciAqZGg7XG4mIzQzO1xuJiM0MztcdGRoID0gZ2VubG1zZ19wdXQoc2tiLCBORVRMSU5LX0NCKGNiLVx1MDAzZXNrYikucG9ydGlkLCBjYi1cdTAwM2VubGgtXHUwMDNlbmxtc2dfc2VxLFxuJiM0MztcdFx0XHQgXHUwMDI2ZHJiZF9ubF9mYW1pbHksIE5MTV9GX01VTFRJLFxuJiM0MztcdFx0XHQgRFJCRF9BRE1fR0VUX0NPTk5FQ1RJT05TKTtcbiYjNDM7XHRpZiAoIWRoKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0ZGgtXHUwMDNlcmV0X2NvZGUgPSByZXRjb2RlO1xuJiM0MztcdGRoLVx1MDAzZW1pbm9yID0gLTFVO1xuJiM0MztcdGlmIChyZXRjb2RlID09IE5PX0VSUk9SKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgY29ubmVjdGlvbl9zdGF0aXN0aWNzIGNvbm5lY3Rpb25fc3RhdGlzdGljcztcbiYjNDM7XHRcdHN0cnVjdCBjb25uZWN0aW9uX2luZm8gY29ubmVjdGlvbl9pbmZvO1xuJiM0MztcdFx0c3RydWN0IG5ldF9jb25mICpuZXRfY29uZjtcbiYjNDM7XHRcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdFx0ZXJyID0gbmxhX3B1dF9kcmJkX2NmZ19jb250ZXh0KHNrYiwgcmVzb3VyY2UsIGNvbm5lY3Rpb24sIE5VTEwpO1xuJiM0MztcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdG5ldF9jb25mID0gcmN1X2RlcmVmZXJlbmNlKGNvbm5lY3Rpb24tXHUwMDNlbmV0X2NvbmYpO1xuJiM0MztcdFx0aWYgKG5ldF9jb25mKSB7XG4mIzQzO1x0XHRcdGVyciA9IG5ldF9jb25mX3RvX3NrYihza2IsIG5ldF9jb25mKTtcbiYjNDM7XHRcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0Y29ubmVjdGlvbl90b19pbmZvKFx1MDAyNmNvbm5lY3Rpb25faW5mbywgY29ubmVjdGlvbik7XG4mIzQzO1x0XHRlcnIgPSBjb25uZWN0aW9uX2luZm9fdG9fc2tiKHNrYiwgXHUwMDI2Y29ubmVjdGlvbl9pbmZvKTtcbiYjNDM7XHRcdGlmIChlcnIpXG4mIzQzO1x0XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0XHRjb25uZWN0aW9uX3N0YXRpc3RpY3MuY29ubl9jb25nZXN0ZWQgPVxuJiM0MztcdFx0XHR0ZXN0X2JpdChORVRfQ09OR0VTVEVELCBcdTAwMjZjb25uZWN0aW9uLVx1MDAzZWZsYWdzKTtcbiYjNDM7XHRcdGVyciA9IGNvbm5lY3Rpb25fc3RhdGlzdGljc190b19za2Ioc2tiLCBcdTAwMjZjb25uZWN0aW9uX3N0YXRpc3RpY3MpO1xuJiM0MztcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdGNiLVx1MDAzZWFyZ3NbMl0gPSAobG9uZyljb25uZWN0aW9uO1xuJiM0MztcdH1cbiYjNDM7XHRnZW5sbXNnX2VuZChza2IsIGRoKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBpbnQgZHJiZF9ubF9nZXRfY29ubmVjdGlvbnNfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbiB7XG4gXHRzdHJ1Y3QgbmxhdHRyICpyZXNvdXJjZV9maWx0ZXI7XG4gXHRzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UgPSBOVUxMLCAqbmV4dF9yZXNvdXJjZTtcbiBcdHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb247XG4tXHRpbnQgZXJyID0gMCwgcmV0Y29kZTtcbi1cdHN0cnVjdCBkcmJkX2dlbmxtc2doZHIgKmRoO1xuLVx0c3RydWN0IGNvbm5lY3Rpb25faW5mbyBjb25uZWN0aW9uX2luZm87XG4tXHRzdHJ1Y3QgY29ubmVjdGlvbl9zdGF0aXN0aWNzIGNvbm5lY3Rpb25fc3RhdGlzdGljcztcbiYjNDM7XHRpbnQgZXJyID0gMDtcbiBcbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcdHJlc291cmNlID0gKHN0cnVjdCBkcmJkX3Jlc291cmNlICopY2ItXHUwMDNlYXJnc1swXTtcbkBAIC0zNTQ0LDE3ICYjNDM7MzU4NiwyMyBAQCBpbnQgZHJiZF9ubF9nZXRfY29ubmVjdGlvbnNfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrXG4gXHRcdHJlc291cmNlX2ZpbHRlciA9IGZpbmRfY2ZnX2NvbnRleHRfYXR0cihjYi1cdTAwM2VubGgsXG4gXHRcdFx0XHREUkJEX0FfRFJCRF9DRkdfQ09OVEVYVF9DVFhfUkVTT1VSQ0VfTkFNRSk7XG4gXHRcdGlmIChyZXNvdXJjZV9maWx0ZXIpIHtcbi1cdFx0XHRyZXRjb2RlID0gRVJSX1JFU19OT1RfS05PV047XG4gXHRcdFx0cmVzb3VyY2UgPSBkcmJkX2ZpbmRfcmVzb3VyY2UobmxhX2RhdGEocmVzb3VyY2VfZmlsdGVyKSk7XG4tXHRcdFx0aWYgKCFyZXNvdXJjZSlcbi1cdFx0XHRcdGdvdG8gcHV0X3Jlc3VsdDtcbiYjNDM7XHRcdFx0aWYgKCFyZXNvdXJjZSkge1xuJiM0MztcdFx0XHRcdGVyciA9IGRyYmRfbmxfcHV0X2R1bXBfY29ubmVjdGlvbnNfcmVzdWx0KFxuJiM0MztcdFx0XHRcdFx0c2tiLCBjYiwgcmVzb3VyY2UsIE5VTEwsXG4mIzQzO1x0XHRcdFx0XHRFUlJfUkVTX05PVF9LTk9XTik7XG4mIzQzO1x0XHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4mIzQzO1x0XHRcdFx0Z290byByZXQ7XG4mIzQzO1x0XHRcdH1cbiBcdFx0XHRjYi1cdTAwM2VhcmdzWzBdID0gKGxvbmcpcmVzb3VyY2U7XG4gXHRcdFx0Y2ItXHUwMDNlYXJnc1sxXSA9IFNJTkdMRV9SRVNPVVJDRTtcbiBcdFx0fVxuIFx0fVxuIFx0aWYgKCFyZXNvdXJjZSkge1xuLVx0XHRpZiAobGlzdF9lbXB0eShcdTAwMjZkcmJkX3Jlc291cmNlcykpXG4tXHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHRpZiAobGlzdF9lbXB0eShcdTAwMjZkcmJkX3Jlc291cmNlcykpIHtcbiYjNDM7XHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4mIzQzO1x0XHRcdGdvdG8gcmV0O1xuJiM0MztcdFx0fVxuIFx0XHRyZXNvdXJjZSA9IGxpc3RfZmlyc3RfZW50cnkoXHUwMDI2ZHJiZF9yZXNvdXJjZXMsIHN0cnVjdCBkcmJkX3Jlc291cmNlLCByZXNvdXJjZXMpO1xuIFx0XHRrcmVmX2dldChcdTAwMjZyZXNvdXJjZS1cdTAwM2VrcmVmKTtcbiBcdFx0Y2ItXHUwMDNlYXJnc1swXSA9IChsb25nKXJlc291cmNlO1xuQEAgLTM1NzgsOCAmIzQzOzM2MjYsOSBAQCBpbnQgZHJiZF9ubF9nZXRfY29ubmVjdGlvbnNfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShjb25uZWN0aW9uLCBcdTAwMjZyZXNvdXJjZS1cdTAwM2Vjb25uZWN0aW9ucywgY29ubmVjdGlvbnMpIHtcbiBcdFx0aWYgKCFoYXNfbmV0X2NvbmYoY29ubmVjdGlvbikpXG4gXHRcdFx0Y29udGludWU7XG4tXHRcdHJldGNvZGUgPSBOT19FUlJPUjtcbi1cdFx0Z290byBwdXRfcmVzdWx0OyAgLyogb25seSBvbmUgaXRlcmF0aW9uICovXG4mIzQzO1x0XHRlcnIgPSBkcmJkX25sX3B1dF9kdW1wX2Nvbm5lY3Rpb25zX3Jlc3VsdChza2IsIGNiLCByZXNvdXJjZSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgIGNvbm5lY3Rpb24sIE5PX0VSUk9SKTtcbiYjNDM7XHRcdGdvdG8gb3V0OyAvKiBvbmx5IG9uZSBpdGVyYXRpb24gKi9cbiBcdH1cbiBcbiBub19tb3JlX2Nvbm5lY3Rpb25zOlxuQEAgLTM2MDIsNDYgJiM0MzszNjUxLDE0IEBAIGludCBkcmJkX25sX2dldF9jb25uZWN0aW9uc19kdW1waXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2tcbiBcdFx0Y2ItXHUwMDNlYXJnc1syXSA9IDA7XG4gXHRcdGdvdG8gbmV4dF9yZXNvdXJjZTtcbiBcdH1cbi1cdGdvdG8gb3V0OyAgLyogbm8gbW9yZSByZXNvdXJjZXMgKi9cbiBcbi1wdXRfcmVzdWx0OlxuLVx0ZGggPSBnZW5sbXNnX3B1dChza2IsIE5FVExJTktfQ0IoY2ItXHUwMDNlc2tiKS5wb3J0aWQsXG4tXHRcdFx0Y2ItXHUwMDNlbmxoLVx1MDAzZW5sbXNnX3NlcSwgXHUwMDI2ZHJiZF9ubF9mYW1pbHksXG4tXHRcdFx0TkxNX0ZfTVVMVEksIERSQkRfQURNX0dFVF9DT05ORUNUSU9OUyk7XG4tXHRlcnIgPSAtRU5PTUVNO1xuLVx0aWYgKCFkaClcbi1cdFx0Z290byBvdXQ7XG4tXHRkaC1cdTAwM2VyZXRfY29kZSA9IHJldGNvZGU7XG4tXHRkaC1cdTAwM2VtaW5vciA9IC0xVTtcbi1cdGlmIChyZXRjb2RlID09IE5PX0VSUk9SKSB7XG4tXHRcdHN0cnVjdCBuZXRfY29uZiAqbmV0X2NvbmY7XG4tXG4tXHRcdGVyciA9IG5sYV9wdXRfZHJiZF9jZmdfY29udGV4dChza2IsIHJlc291cmNlLCBjb25uZWN0aW9uLCBOVUxMKTtcbi1cdFx0aWYgKGVycilcbi1cdFx0XHRnb3RvIG91dDtcbi1cdFx0bmV0X2NvbmYgPSByY3VfZGVyZWZlcmVuY2UoY29ubmVjdGlvbi1cdTAwM2VuZXRfY29uZik7XG4tXHRcdGlmIChuZXRfY29uZikge1xuLVx0XHRcdGVyciA9IG5ldF9jb25mX3RvX3NrYihza2IsIG5ldF9jb25mKTtcbi1cdFx0XHRpZiAoZXJyKVxuLVx0XHRcdFx0Z290byBvdXQ7XG4tXHRcdH1cbi1cdFx0Y29ubmVjdGlvbl90b19pbmZvKFx1MDAyNmNvbm5lY3Rpb25faW5mbywgY29ubmVjdGlvbik7XG4tXHRcdGVyciA9IGNvbm5lY3Rpb25faW5mb190b19za2Ioc2tiLCBcdTAwMjZjb25uZWN0aW9uX2luZm8pO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdGdvdG8gb3V0O1xuLVx0XHRjb25uZWN0aW9uX3N0YXRpc3RpY3MuY29ubl9jb25nZXN0ZWQgPSB0ZXN0X2JpdChORVRfQ09OR0VTVEVELCBcdTAwMjZjb25uZWN0aW9uLVx1MDAzZWZsYWdzKTtcbi1cdFx0ZXJyID0gY29ubmVjdGlvbl9zdGF0aXN0aWNzX3RvX3NrYihza2IsIFx1MDAyNmNvbm5lY3Rpb25fc3RhdGlzdGljcyk7XG4tXHRcdGlmIChlcnIpXG4tXHRcdFx0Z290byBvdXQ7XG4tXHRcdGNiLVx1MDAzZWFyZ3NbMl0gPSAobG9uZyljb25uZWN0aW9uO1xuLVx0fVxuLVx0Z2VubG1zZ19lbmQoc2tiLCBkaCk7XG4tXHRlcnIgPSAwO1xuJiM0MztcdC8qIG5vIG1vcmUgcmVzb3VyY2VzICovXG4gXG4gb3V0OlxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tXHRpZiAocmVzb3VyY2UpXG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZyZXNvdXJjZS1cdTAwM2Vjb25mX3VwZGF0ZSk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnJlc291cmNlLVx1MDAzZWNvbmZfdXBkYXRlKTtcbiYjNDM7XG4mIzQzO3JldDpcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXHRyZXR1cm4gc2tiLVx1MDAzZWxlbjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuY1xuaW5kZXggNThiOTViZjRiZGNhNmEuLmI0YTM1MGNkMDNiMDRjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuY1xuQEAgLTE3NCw4ICYjNDM7MTc0LDkgQEAgWW91IG11c3Qgbm90IGhhdmUgdGhlIHJlcV9sb2NrOlxuICAqIHdfc2FtZTogcGF5bG9hZF9zaXplID09IGxvZ2ljYWxfYmxvY2tfc2l6ZVxuICAqIHRyaW06IHBheWxvYWRfc2l6ZSA9PSAwICovXG4gc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpcbi1kcmJkX2FsbG9jX3BlZXJfcmVxKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgdTY0IGlkLCBzZWN0b3JfdCBzZWN0b3IsXG4tXHRcdCAgICB1bnNpZ25lZCBpbnQgcmVxdWVzdF9zaXplLCB1bnNpZ25lZCBpbnQgcGF5bG9hZF9zaXplLCBnZnBfdCBnZnBfbWFzaykgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO2RyYmRfYWxsb2NfcGVlcl9yZXEoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCB1NjQgaWQsXG4mIzQzO1x0XHQgICAgc2VjdG9yX3Qgc2VjdG9yLCB1bnNpZ25lZCBpbnQgcmVxdWVzdF9zaXplLFxuJiM0MztcdFx0ICAgIHVuc2lnbmVkIGludCBwYXlsb2FkX3NpemUsIGdmcF90IGdmcF9tYXNrKVxuIHtcbiBcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtXHUwMDNlZGV2aWNlO1xuIFx0c3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcTtcbkBAIC0yODcsNiAmIzQzOzI4OCw3IEBAIHN0YXRpYyBpbnQgZHJiZF9maW5pc2hfcGVlcl9yZXFzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxuIFxuIHN0YXRpYyB2b2lkIF9kcmJkX3dhaXRfZWVfbGlzdF9lbXB0eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiBcdFx0XHRcdCAgICAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcbiYjNDM7XHRfX211c3RfaG9sZChcdTAwMjZkZXZpY2UtXHUwMDNlcmVzb3VyY2UtXHUwMDNlcmVxX2xvY2spXG4ge1xuIFx0REVGSU5FX1dBSVQod2FpdCk7XG4gXG5AQCAtODk2LDYgJiM0Mzs4OTgsOCBAQCBzdGF0aWMgaW50IGNvbm5fY29ubmVjdChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKVxuIFx0aWYgKGRyYmRfc2VuZF9wcm90b2NvbChjb25uZWN0aW9uKSA9PSAtRU9QTk9UU1VQUClcbiBcdFx0cmV0dXJuIC0xO1xuIFxuJiM0MztcdC8qIGNvbnRleHRfdW5zYWZlKCkgYmVjYXVzZSBvZiB0d28gbG9ja2luZyBsb29wcyAqL1xuJiM0MztcdGNvbnRleHRfdW5zYWZlKFxuIFx0LyogUHJldmVudCBhIHJhY2UgYmV0d2VlbiByZXN5bmMtaGFuZHNoYWtlIGFuZFxuIFx0ICogYmVpbmcgcHJvbW90ZWQgdG8gUHJpbWFyeS5cbiBcdCAqXG5AQCAtOTEzLDYgJiM0Mzs5MTcsNyBAQCBzdGF0aWMgaW50IGNvbm5fY29ubmVjdChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKVxuIFxuIFx0aWRyX2Zvcl9lYWNoX2VudHJ5KFx1MDAyNmNvbm5lY3Rpb24tXHUwMDNlcGVlcl9kZXZpY2VzLCBwZWVyX2RldmljZSwgdm5yKVxuIFx0XHRtdXRleF91bmxvY2socGVlcl9kZXZpY2UtXHUwMDNlZGV2aWNlLVx1MDAzZXN0YXRlX211dGV4KTtcbiYjNDM7XHQpO1xuIFxuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0aWRyX2Zvcl9lYWNoX2VudHJ5KFx1MDAyNmNvbm5lY3Rpb24tXHUwMDNlcGVlcl9kZXZpY2VzLCBwZWVyX2RldmljZSwgdm5yKSB7XG5AQCAtMTY1Nyw3ICYjNDM7MTY2Miw3IEBAIHN0YXRpYyB2b2lkIGRyYmRfY3N1bV9lZV9zaXplKHN0cnVjdCBjcnlwdG9fc2hhc2ggKmgsXG4gICovXG4gc3RhdGljIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqXG4gcmVhZF9pbl9ibG9jayhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHU2NCBpZCwgc2VjdG9yX3Qgc2VjdG9yLFxuLVx0ICAgICAgc3RydWN0IHBhY2tldF9pbmZvICpwaSkgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO1x0ICAgICAgc3RydWN0IHBhY2tldF9pbmZvICpwaSlcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHBlZXJfZGV2aWNlLVx1MDAzZWRldmljZTtcbiBcdGNvbnN0IHNlY3Rvcl90IGNhcGFjaXR5ID0gZ2V0X2NhcGFjaXR5KGRldmljZS1cdTAwM2V2ZGlzayk7XG5AQCAtMTg2OCw4ICYjNDM7MTg3Myw4IEBAIHN0YXRpYyBpbnQgZV9lbmRfcmVzeW5jX2Jsb2NrKHN0cnVjdCBkcmJkX3dvcmsgKncsIGludCB1bnVzZWQpXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbi1zdGF0aWMgaW50IHJlY3ZfcmVzeW5jX3JlYWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IsXG4tXHRcdFx0ICAgIHN0cnVjdCBwYWNrZXRfaW5mbyAqcGkpIF9fcmVsZWFzZXMobG9jYWwpXG4mIzQzO3N0YXRpYyBpbnQgcmVjdl9yZXN5bmNfcmVhZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsXG4mIzQzO1x0XHRcdCAgICBzZWN0b3JfdCBzZWN0b3IsIHN0cnVjdCBwYWNrZXRfaW5mbyAqcGkpXG4ge1xuIFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBwZWVyX2RldmljZS1cdTAwM2VkZXZpY2U7XG4gXHRzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxO1xuQEAgLTIyMzAsNiAmIzQzOzIyMzUsNyBAQCBzdGF0aWMgYmxrX29wZl90IHdpcmVfZmxhZ3NfdG9fYmlvKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHUzMiBkcGYpXG4gXG4gc3RhdGljIHZvaWQgZmFpbF9wb3N0cG9uZWRfcmVxdWVzdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3RvcixcbiBcdFx0XHRcdCAgICB1bnNpZ25lZCBpbnQgc2l6ZSlcbiYjNDM7XHRfX211c3RfaG9sZChcdTAwMjZkZXZpY2UtXHUwMDNlcmVzb3VyY2UtXHUwMDNlcmVxX2xvY2spXG4ge1xuIFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlID0gZmlyc3RfcGVlcl9kZXZpY2UoZGV2aWNlKTtcbiBcdHN0cnVjdCBkcmJkX2ludGVydmFsICppO1xuQEAgLTIyNTYsNiAmIzQzOzIyNjIsNyBAQCBzdGF0aWMgdm9pZCBmYWlsX3Bvc3Rwb25lZF9yZXF1ZXN0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9yLFxuIFxuIHN0YXRpYyBpbnQgaGFuZGxlX3dyaXRlX2NvbmZsaWN0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiBcdFx0XHRcdCAgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSlcbiYjNDM7XHRfX211c3RfaG9sZChcdTAwMjZkZXZpY2UtXHUwMDNlcmVzb3VyY2UtXHUwMDNlcmVxX2xvY2spXG4ge1xuIFx0c3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiA9IHBlZXJfcmVxLVx1MDAzZXBlZXJfZGV2aWNlLVx1MDAzZWNvbm5lY3Rpb247XG4gXHRib29sIHJlc29sdmVfY29uZmxpY3RzID0gdGVzdF9iaXQoUkVTT0xWRV9DT05GTElDVFMsIFx1MDAyNmNvbm5lY3Rpb24tXHUwMDNlZmxhZ3MpO1xuQEAgLTI4MjYsNyAmIzQzOzI4MzMsNyBAQCBzdGF0aWMgaW50IHJlY2VpdmVfRGF0YVJlcXVlc3Qoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgc3RydWN0IHBhY2tldFxuIC8qXG4gICogZHJiZF9hc2JfcmVjb3Zlcl8wcCAgLSAgUmVjb3ZlciBhZnRlciBzcGxpdC1icmFpbiB3aXRoIG5vIHJlbWFpbmluZyBwcmltYXJpZXNcbiAgKi9cbi1zdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMHAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbiYjNDM7c3RhdGljIGludCBkcmJkX2FzYl9yZWNvdmVyXzBwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHBlZXJfZGV2aWNlLVx1MDAzZWRldmljZTtcbiBcdGludCBzZWxmLCBwZWVyLCBydiA9IC0xMDA7XG5AQCAtMjkwOSw3ICYjNDM7MjkxNiw3IEBAIHN0YXRpYyBpbnQgZHJiZF9hc2JfcmVjb3Zlcl8wcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkXG4gLypcbiAgKiBkcmJkX2FzYl9yZWNvdmVyXzFwICAtICBSZWNvdmVyIGFmdGVyIHNwbGl0LWJyYWluIHdpdGggb25lIHJlbWFpbmluZyBwcmltYXJ5XG4gICovXG4tc3RhdGljIGludCBkcmJkX2FzYl9yZWNvdmVyXzFwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO3N0YXRpYyBpbnQgZHJiZF9hc2JfcmVjb3Zlcl8xcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXG4ge1xuIFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBwZWVyX2RldmljZS1cdTAwM2VkZXZpY2U7XG4gXHRpbnQgaGcsIHJ2ID0gLTEwMDtcbkBAIC0yOTY2LDcgJiM0MzsyOTczLDcgQEAgc3RhdGljIGludCBkcmJkX2FzYl9yZWNvdmVyXzFwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGRcbiAvKlxuICAqIGRyYmRfYXNiX3JlY292ZXJfMnAgIC0gIFJlY292ZXIgYWZ0ZXIgc3BsaXQtYnJhaW4gd2l0aCB0d28gcmVtYWluaW5nIHByaW1hcmllc1xuICAqL1xuLXN0YXRpYyBpbnQgZHJiZF9hc2JfcmVjb3Zlcl8ycChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxuJiM0MztzdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMnAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxuIHtcbiBcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtXHUwMDNlZGV2aWNlO1xuIFx0aW50IGhnLCBydiA9IC0xMDA7XG5AQCAtMzA0NCw3ICYjNDM7MzA1MSw3IEBAIHN0YXRpYyB2b2lkIGRyYmRfdXVpZF9kdW1wKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICp0ZXh0LCB1NjQgKnV1aWQsXG4gICovXG4gXG4gc3RhdGljIGludCBkcmJkX3V1aWRfY29tcGFyZShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqY29uc3QgcGVlcl9kZXZpY2UsXG4tXHRcdGVudW0gZHJiZF9yb2xlIGNvbnN0IHBlZXJfcm9sZSwgaW50ICpydWxlX25yKSBfX211c3RfaG9sZChsb2NhbClcbiYjNDM7XHRcdFx0ICAgICBlbnVtIGRyYmRfcm9sZSBjb25zdCBwZWVyX3JvbGUsIGludCAqcnVsZV9ucilcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25zdCBjb25uZWN0aW9uID0gcGVlcl9kZXZpY2UtXHUwMDNlY29ubmVjdGlvbjtcbiBcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtXHUwMDNlZGV2aWNlO1xuQEAgLTMyNjQsNyAmIzQzOzMyNzEsNyBAQCBzdGF0aWMgaW50IGRyYmRfdXVpZF9jb21wYXJlKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpjb25zdCBwZWVyX2RldmljZSxcbiAgKi9cbiBzdGF0aWMgZW51bSBkcmJkX2Nvbm5zIGRyYmRfc3luY19oYW5kc2hha2Uoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLFxuIFx0XHRcdFx0XHQgICBlbnVtIGRyYmRfcm9sZSBwZWVyX3JvbGUsXG4tXHRcdFx0XHRcdCAgIGVudW0gZHJiZF9kaXNrX3N0YXRlIHBlZXJfZGlzaykgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO1x0XHRcdFx0XHQgICBlbnVtIGRyYmRfZGlza19zdGF0ZSBwZWVyX2Rpc2spXG4ge1xuIFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBwZWVyX2RldmljZS1cdTAwM2VkZXZpY2U7XG4gXHRlbnVtIGRyYmRfY29ubnMgcnYgPSBDX01BU0s7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuY1xuaW5kZXggNzBmNzVlZjA3OTQ1N2QuLjFjYzQ1NTg0NmY5MjAzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5jXG5AQCAtOTUxLDcgJiM0Mzs5NTEsOSBAQCBzdGF0aWMgYm9vbCByZW1vdGVfZHVlX3RvX3JlYWRfYmFsYW5jaW5nKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzZVxuICAqXG4gICogT25seSB3YXkgb3V0OiByZW1vdmUgdGhlIGNvbmZsaWN0aW5nIGludGVydmFscyBmcm9tIHRoZSB0cmVlLlxuICAqL1xuLXN0YXRpYyB2b2lkIGNvbXBsZXRlX2NvbmZsaWN0aW5nX3dyaXRlcyhzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICpyZXEpXG4mIzQzO3N0YXRpYyB2b2lkIGNvbXBsZXRlX2NvbmZsaWN0aW5nX3dyaXRlcyhzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UsXG4mIzQzO1x0XHRcdFx0XHRzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICpyZXEpXG4mIzQzO1x0X19tdXN0X2hvbGQoXHUwMDI2cmVzb3VyY2UtXHUwMDNlcmVxX2xvY2spXG4ge1xuIFx0REVGSU5FX1dBSVQod2FpdCk7XG4gXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHJlcS1cdTAwM2VkZXZpY2U7XG5AQCAtOTc0LDkgJiM0Mzs5NzYsOSBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKVxuIFx0XHQvKiBJbmRpY2F0ZSB0byB3YWtlIHVwIGRldmljZS1cdTAwM2VtaXNjX3dhaXQgb24gcHJvZ3Jlc3MuICAqL1xuIFx0XHRwcmVwYXJlX3RvX3dhaXQoXHUwMDI2ZGV2aWNlLVx1MDAzZW1pc2Nfd2FpdCwgXHUwMDI2d2FpdCwgVEFTS19VTklOVEVSUlVQVElCTEUpO1xuIFx0XHRpLVx1MDAzZXdhaXRpbmcgPSB0cnVlO1xuLVx0XHRzcGluX3VubG9ja19pcnEoXHUwMDI2ZGV2aWNlLVx1MDAzZXJlc291cmNlLVx1MDAzZXJlcV9sb2NrKTtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2lycShcdTAwMjZyZXNvdXJjZS1cdTAwM2VyZXFfbG9jayk7XG4gXHRcdHNjaGVkdWxlKCk7XG4tXHRcdHNwaW5fbG9ja19pcnEoXHUwMDI2ZGV2aWNlLVx1MDAzZXJlc291cmNlLVx1MDAzZXJlcV9sb2NrKTtcbiYjNDM7XHRcdHNwaW5fbG9ja19pcnEoXHUwMDI2cmVzb3VyY2UtXHUwMDNlcmVxX2xvY2spO1xuIFx0fVxuIFx0ZmluaXNoX3dhaXQoXHUwMDI2ZGV2aWNlLVx1MDAzZW1pc2Nfd2FpdCwgXHUwMDI2d2FpdCk7XG4gfVxuQEAgLTEzMjksNyAmIzQzOzEzMzEsNyBAQCBzdGF0aWMgdm9pZCBkcmJkX3NlbmRfYW5kX3N1Ym1pdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfcmVxdWVzdFxuIFx0XHQvKiBUaGlzIG1heSB0ZW1wb3JhcmlseSBnaXZlIHVwIHRoZSByZXFfbG9jayxcbiBcdFx0ICogYnV0IHdpbGwgcmUtYXF1aXJlIGl0IGJlZm9yZSBpdCByZXR1cm5zIGhlcmUuXG4gXHRcdCAqIE5lZWRzIHRvIGJlIGJlZm9yZSB0aGUgY2hlY2sgb24gZHJiZF9zdXNwZW5kZWQoKSAqL1xuLVx0XHRjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMocmVxKTtcbiYjNDM7XHRcdGNvbXBsZXRlX2NvbmZsaWN0aW5nX3dyaXRlcyhyZXNvdXJjZSwgcmVxKTtcbiBcdFx0Lyogbm8gbW9yZSBnaXZpbmcgdXAgcmVxX2xvY2sgZnJvbSBub3cgb24hICovXG4gXG4gXHRcdC8qIGNoZWNrIGZvciBjb25nZXN0aW9uLCBhbmQgcG90ZW50aWFsbHkgc3RvcCBzZW5kaW5nXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuaFxuaW5kZXggOWFlODYwZTc1OTFiMzIuLjdmMjRjYjhlNTQyOWEzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5oXG5AQCAtMjY0LDIwICYjNDM7MjY0LDE4IEBAIHN0cnVjdCBiaW9fYW5kX2Vycm9yIHtcbiBcdGludCBlcnJvcjtcbiB9O1xuIFxuLWV4dGVybiB2b2lkIHN0YXJ0X25ld190bF9lcG9jaChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbi1leHRlcm4gdm9pZCBkcmJkX3JlcV9kZXN0cm95KHN0cnVjdCBrcmVmICprcmVmKTtcbi1leHRlcm4gaW50IF9fcmVxX21vZChzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICpyZXEsIGVudW0gZHJiZF9yZXFfZXZlbnQgd2hhdCxcbi1cdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLFxuLVx0XHRzdHJ1Y3QgYmlvX2FuZF9lcnJvciAqbSk7XG4tZXh0ZXJuIHZvaWQgY29tcGxldGVfbWFzdGVyX2JpbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0c3RydWN0IGJpb19hbmRfZXJyb3IgKm0pO1xuLWV4dGVybiB2b2lkIHJlcXVlc3RfdGltZXJfZm4oc3RydWN0IHRpbWVyX2xpc3QgKnQpO1xuLWV4dGVybiB2b2lkIHRsX3Jlc3RhcnQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgZW51bSBkcmJkX3JlcV9ldmVudCB3aGF0KTtcbi1leHRlcm4gdm9pZCBfdGxfcmVzdGFydChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQpO1xuLWV4dGVybiB2b2lkIHRsX2Fib3J0X2Rpc2tfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0Mzt2b2lkIHN0YXJ0X25ld190bF9lcG9jaChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbiYjNDM7dm9pZCBkcmJkX3JlcV9kZXN0cm95KHN0cnVjdCBrcmVmICprcmVmKTtcbiYjNDM7aW50IF9fcmVxX21vZChzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICpyZXEsIGVudW0gZHJiZF9yZXFfZXZlbnQgd2hhdCxcbiYjNDM7XHQgICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHN0cnVjdCBiaW9fYW5kX2Vycm9yICptKTtcbiYjNDM7dm9pZCBjb21wbGV0ZV9tYXN0ZXJfYmlvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgYmlvX2FuZF9lcnJvciAqbSk7XG4mIzQzO3ZvaWQgcmVxdWVzdF90aW1lcl9mbihzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7XG4mIzQzO3ZvaWQgdGxfcmVzdGFydChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQpO1xuJiM0Mzt2b2lkIF90bF9yZXN0YXJ0KHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGVudW0gZHJiZF9yZXFfZXZlbnQgd2hhdCk7XG4mIzQzO3ZvaWQgdGxfYWJvcnRfZGlza19pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4gXG4gLyogdGhpcyBpcyBpbiBkcmJkX21haW4uYyAqL1xuLWV4dGVybiB2b2lkIGRyYmRfcmVzdGFydF9yZXF1ZXN0KHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSk7XG4mIzQzO3ZvaWQgZHJiZF9yZXN0YXJ0X3JlcXVlc3Qoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKTtcbiBcbiAvKiB1c2UgdGhpcyBpZiB5b3UgZG9uJiMzOTt0IHdhbnQgdG8gZGVhbCB3aXRoIGNhbGxpbmcgY29tcGxldGVfbWFzdGVyX2JpbygpXG4gICogb3V0c2lkZSB0aGUgc3BpbmxvY2ssIGUuZy4gd2hlbiB3YWxraW5nIHNvbWUgbGlzdCBvbiBjbGVhbnVwLiAqL1xuQEAgLTMxOSw2ICYjNDM7MzE3LDYgQEAgc3RhdGljIGlubGluZSBpbnQgcmVxX21vZChzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICpyZXEsXG4gXHRyZXR1cm4gcnY7XG4gfVxuIFxuLWV4dGVybiBib29sIGRyYmRfc2hvdWxkX2RvX3JlbW90ZSh1bmlvbiBkcmJkX2Rldl9zdGF0ZSk7XG4mIzQzO2Jvb2wgZHJiZF9zaG91bGRfZG9fcmVtb3RlKHVuaW9uIGRyYmRfZGV2X3N0YXRlKTtcbiBcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuY1xuaW5kZXggYWRjYmE3ZjFkOGVhNDkuLjQxNmE3MWQ3YTYxYzA2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuY1xuQEAgLTU0OSwxOSAmIzQzOzU0OSwxMCBAQCBfcmVxX3N0X2NvbmQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuaW9uIGRyYmRfc3RhdGUgbWFzayxcbiBcdHJldHVybiBydjtcbiB9XG4gXG4tLyoqXG4tICogZHJiZF9yZXFfc3RhdGUoKSAtIFBlcmZvcm0gYW4gZXZlbnR1YWxseSBjbHVzdGVyIHdpZGUgc3RhdGUgY2hhbmdlXG4tICogQGRldmljZTpcdERSQkQgZGV2aWNlLlxuLSAqIEBtYXNrOlx0bWFzayBvZiBzdGF0ZSBiaXRzIHRvIGNoYW5nZS5cbi0gKiBAdmFsOlx0dmFsdWUgb2YgbmV3IHN0YXRlIGJpdHMuXG4tICogQGY6XHRcdGZsYWdzXG4tICpcbi0gKiBTaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSwgdXNlIGRyYmRfcmVxdWVzdF9zdGF0ZSgpIG9yXG4tICogX2RyYmRfcmVxdWVzdF9zdGF0ZSgpLlxuLSAqL1xuLXN0YXRpYyBlbnVtIGRyYmRfc3RhdGVfcnZcbi1kcmJkX3JlcV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxuLVx0ICAgICAgIHVuaW9uIGRyYmRfc3RhdGUgdmFsLCBlbnVtIGNoZ19zdGF0ZV9mbGFncyBmKVxuJiM0MztzdGF0aWMgZW51bSBkcmJkX3N0YXRlX3J2IF9fZHJiZF9yZXFfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHRcdFx0XHQgICB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXG4mIzQzO1x0XHRcdFx0XHQgICB1bmlvbiBkcmJkX3N0YXRlIHZhbCxcbiYjNDM7XHRcdFx0XHRcdCAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYpXG4ge1xuIFx0c3RydWN0IGNvbXBsZXRpb24gZG9uZTtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG5AQCAtNTcxLDggJiM0Mzs1NjIsNiBAQCBkcmJkX3JlcV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxuIFxuIFx0aW5pdF9jb21wbGV0aW9uKFx1MDAyNmRvbmUpO1xuIFxuLVx0aWYgKGYgXHUwMDI2IENTX1NFUklBTElaRSlcbi1cdFx0bXV0ZXhfbG9jayhkZXZpY2UtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuIFx0aWYgKGYgXHUwMDI2IENTX0lOSElCSVRfTURfSU8pXG4gXHRcdGJ1ZmZlciA9IGRyYmRfbWRfZ2V0X2J1ZmZlcihkZXZpY2UsIF9fZnVuY19fKTtcbiBcbkBAIC02MjksOCAmIzQzOzYxOCwzNCBAQCBkcmJkX3JlcV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxuIGFib3J0OlxuIFx0aWYgKGJ1ZmZlcilcbiBcdFx0ZHJiZF9tZF9wdXRfYnVmZmVyKGRldmljZSk7XG4tXHRpZiAoZiBcdTAwMjYgQ1NfU0VSSUFMSVpFKVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gcnY7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBkcmJkX3JlcV9zdGF0ZSgpIC0gUGVyZm9ybSBhbiBldmVudHVhbGx5IGNsdXN0ZXIgd2lkZSBzdGF0ZSBjaGFuZ2VcbiYjNDM7ICogQGRldmljZTpcdERSQkQgZGV2aWNlLlxuJiM0MzsgKiBAbWFzazpcdG1hc2sgb2Ygc3RhdGUgYml0cyB0byBjaGFuZ2UuXG4mIzQzOyAqIEB2YWw6XHR2YWx1ZSBvZiBuZXcgc3RhdGUgYml0cy5cbiYjNDM7ICogQGY6XHRcdGZsYWdzXG4mIzQzOyAqXG4mIzQzOyAqIFNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LCB1c2UgZHJiZF9yZXF1ZXN0X3N0YXRlKCkgb3JcbiYjNDM7ICogX2RyYmRfcmVxdWVzdF9zdGF0ZSgpLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGVudW0gZHJiZF9zdGF0ZV9ydiBkcmJkX3JlcV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdFx0XHRcdCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXG4mIzQzO1x0XHRcdFx0XHQgdW5pb24gZHJiZF9zdGF0ZSB2YWwsXG4mIzQzO1x0XHRcdFx0XHQgZW51bSBjaGdfc3RhdGVfZmxhZ3MgZilcbiYjNDM7e1xuJiM0MztcdGVudW0gZHJiZF9zdGF0ZV9ydiBydjtcbiYjNDM7XG4mIzQzO1x0aWYgKGYgXHUwMDI2IENTX1NFUklBTElaRSkge1xuJiM0MztcdFx0bXV0ZXhfbG9jayhkZXZpY2UtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuJiM0MztcdFx0cnYgPSBfX2RyYmRfcmVxX3N0YXRlKGRldmljZSwgbWFzaywgdmFsLCBmKTtcbiBcdFx0bXV0ZXhfdW5sb2NrKGRldmljZS1cdTAwM2VzdGF0ZV9tdXRleCk7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdHJ2ID0gX19kcmJkX3JlcV9zdGF0ZShkZXZpY2UsIG1hc2ssIHZhbCwgZik7XG4mIzQzO1x0fVxuIFxuIFx0cmV0dXJuIHJ2O1xuIH1cbkBAIC02OTksNiAmIzQzOzcxNCw3IEBAIGludCBkcmJkX3JlcXVlc3RfZGV0YWNoX2ludGVycnVwdGlibGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXG4gZW51bSBkcmJkX3N0YXRlX3J2XG4gX2RyYmRfcmVxdWVzdF9zdGF0ZV9ob2xkaW5nX3N0YXRlX211dGV4KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXG4gXHRcdCAgICB1bmlvbiBkcmJkX3N0YXRlIHZhbCwgZW51bSBjaGdfc3RhdGVfZmxhZ3MgZilcbiYjNDM7XHRfX211c3RfaG9sZChcdTAwMjZkZXZpY2UtXHUwMDNlc3RhdGVfbXV0ZXgpXG4ge1xuIFx0ZW51bSBkcmJkX3N0YXRlX3J2IHJ2O1xuIFxuQEAgLTIyOTIsNiAmIzQzOzIzMDgsNyBAQCBfY29ubl9ycV9jb25kKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHVuaW9uIGRyYmRfc3RhdGUgbWFzaywgdW5pb24gZFxuIGVudW0gZHJiZF9zdGF0ZV9ydlxuIF9jb25uX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLCB1bmlvbiBkcmJkX3N0YXRlIHZhbCxcbiBcdFx0ICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGZsYWdzKVxuJiM0MztcdF9fY29udGV4dF91bnNhZmUoY29uZGl0aW9uYWwgbG9ja2luZylcbiB7XG4gXHRlbnVtIGRyYmRfc3RhdGVfcnYgcnYgPSBTU19TVUNDRVNTO1xuIFx0c3RydWN0IGFmdGVyX2Nvbm5fc3RhdGVfY2hnX3dvcmsgKmFjc2N3O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3N0YXRlLmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5oXG5pbmRleCBjYmFlYjgwMThkYmY1OS4uYTdlMzFkMDkyMDM5NmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5oXG5AQCAtMTEyLDI2ICYjNDM7MTEyLDIzIEBAIHVuaW9uIGRyYmRfZGV2X3N0YXRlIHtcbiBcdHVuc2lnbmVkIGludCBpO1xuIH07XG4gXG4tZXh0ZXJuIGVudW0gZHJiZF9zdGF0ZV9ydiBkcmJkX2NoYW5nZV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0XHRcdFx0ICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYsXG4tXHRcdFx0XHRcdCAgICB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXG4tXHRcdFx0XHRcdCAgICB1bmlvbiBkcmJkX3N0YXRlIHZhbCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9mb3JjZV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSxcbi1cdFx0XHR1bmlvbiBkcmJkX3N0YXRlKTtcbi1leHRlcm4gZW51bSBkcmJkX3N0YXRlX3J2IF9kcmJkX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICosXG4tXHRcdFx0XHRcdCAgICAgIHVuaW9uIGRyYmRfc3RhdGUsXG4tXHRcdFx0XHRcdCAgICAgIHVuaW9uIGRyYmRfc3RhdGUsXG4tXHRcdFx0XHRcdCAgICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzKTtcbi1cbi1leHRlcm4gZW51bSBkcmJkX3N0YXRlX3J2XG4mIzQzO2VudW0gZHJiZF9zdGF0ZV9ydiBkcmJkX2NoYW5nZV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdFx0XHQgICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYsXG4mIzQzO1x0XHRcdFx0ICAgICB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXG4mIzQzO1x0XHRcdFx0ICAgICB1bmlvbiBkcmJkX3N0YXRlIHZhbCk7XG4mIzQzO3ZvaWQgZHJiZF9mb3JjZV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSwgdW5pb24gZHJiZF9zdGF0ZSk7XG4mIzQzO2VudW0gZHJiZF9zdGF0ZV9ydiBfZHJiZF9yZXF1ZXN0X3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLFxuJiM0MztcdFx0XHRcdCAgICAgICB1bmlvbiBkcmJkX3N0YXRlLCBlbnVtIGNoZ19zdGF0ZV9mbGFncyk7XG4mIzQzO1xuJiM0MztlbnVtIGRyYmRfc3RhdGVfcnZcbiBfZHJiZF9yZXF1ZXN0X3N0YXRlX2hvbGRpbmdfc3RhdGVfbXV0ZXgoc3RydWN0IGRyYmRfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsXG4gXHRcdFx0XHRcdHVuaW9uIGRyYmRfc3RhdGUsIGVudW0gY2hnX3N0YXRlX2ZsYWdzKTtcbiBcbi1leHRlcm4gZW51bSBkcmJkX3N0YXRlX3J2IF9kcmJkX3NldF9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSxcbi1cdFx0XHRcdFx0ICBlbnVtIGNoZ19zdGF0ZV9mbGFncyxcbi1cdFx0XHRcdFx0ICBzdHJ1Y3QgY29tcGxldGlvbiAqZG9uZSk7XG4tZXh0ZXJuIHZvaWQgcHJpbnRfc3RfZXJyKHN0cnVjdCBkcmJkX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLFxuLVx0XHRcdHVuaW9uIGRyYmRfc3RhdGUsIGVudW0gZHJiZF9zdGF0ZV9ydik7XG4mIzQzO2VudW0gZHJiZF9zdGF0ZV9ydiBfZHJiZF9zZXRfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsXG4mIzQzO1x0XHRcdFx0ICAgZW51bSBjaGdfc3RhdGVfZmxhZ3MsXG4mIzQzO1x0XHRcdFx0ICAgc3RydWN0IGNvbXBsZXRpb24gKmRvbmUpO1xuJiM0Mzt2b2lkIHByaW50X3N0X2VycihzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSwgdW5pb24gZHJiZF9zdGF0ZSxcbiYjNDM7XHRcdCAgZW51bSBkcmJkX3N0YXRlX3J2KTtcbiBcbiBlbnVtIGRyYmRfc3RhdGVfcnZcbiBfY29ubl9yZXF1ZXN0X3N0YXRlKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHVuaW9uIGRyYmRfc3RhdGUgbWFzaywgdW5pb24gZHJiZF9zdGF0ZSB2YWwsXG5AQCAtMTQxLDggJiM0MzsxMzgsOCBAQCBlbnVtIGRyYmRfc3RhdGVfcnZcbiBjb25uX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLCB1bmlvbiBkcmJkX3N0YXRlIHZhbCxcbiBcdFx0ICAgZW51bSBjaGdfc3RhdGVfZmxhZ3MgZmxhZ3MpO1xuIFxuLWV4dGVybiB2b2lkIGRyYmRfcmVzdW1lX2FsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gYm9vbCBjb25uX2FsbF92b2xzX3VuY29uZihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbiYjNDM7dm9pZCBkcmJkX3Jlc3VtZV9hbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO2Jvb2wgY29ubl9hbGxfdm9sc191bmNvbmYoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4gXG4gLyoqXG4gICogZHJiZF9yZXF1ZXN0X3N0YXRlKCkgLSBSZXF1ZXN0IGEgc3RhdGUgY2hhbmdlXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGVfY2hhbmdlLmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZV9jaGFuZ2UuaFxuaW5kZXggYTU2YTU3ZDY3Njg2MjkuLmY1OGE1NTAxNDE3N2RlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGVfY2hhbmdlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3N0YXRlX2NoYW5nZS5oXG5AQCAtNDAsMjUgJiM0Mzs0MCwxNyBAQCBzdHJ1Y3QgZHJiZF9zdGF0ZV9jaGFuZ2Uge1xuIFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2Vfc3RhdGVfY2hhbmdlICpwZWVyX2RldmljZXM7XG4gfTtcbiBcbi1leHRlcm4gc3RydWN0IGRyYmRfc3RhdGVfY2hhbmdlICpyZW1lbWJlcl9vbGRfc3RhdGUoc3RydWN0IGRyYmRfcmVzb3VyY2UgKiwgZ2ZwX3QpO1xuLWV4dGVybiB2b2lkIGNvcHlfb2xkX3RvX25ld19zdGF0ZV9jaGFuZ2Uoc3RydWN0IGRyYmRfc3RhdGVfY2hhbmdlICopO1xuLWV4dGVybiB2b2lkIGZvcmdldF9zdGF0ZV9jaGFuZ2Uoc3RydWN0IGRyYmRfc3RhdGVfY2hhbmdlICopO1xuLVxuLWV4dGVybiBpbnQgbm90aWZ5X3Jlc291cmNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLFxuLVx0XHRcdFx0XHQgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0XHQgdm9pZCAqLFxuLVx0XHRcdFx0XHQgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuLWV4dGVybiBpbnQgbm90aWZ5X2Nvbm5lY3Rpb25fc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosXG4tXHRcdFx0XHRcdCAgIHVuc2lnbmVkIGludCxcbi1cdFx0XHRcdFx0ICAgdm9pZCAqLFxuLVx0XHRcdFx0XHQgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7XG4tZXh0ZXJuIGludCBub3RpZnlfZGV2aWNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLFxuLVx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCxcbi1cdFx0XHRcdCAgICAgICB2b2lkICosXG4tXHRcdFx0XHQgICAgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuLWV4dGVybiBpbnQgbm90aWZ5X3BlZXJfZGV2aWNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLFxuLVx0XHRcdFx0XHQgICAgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0XHQgICAgdm9pZCAqLFxuLVx0XHRcdFx0XHQgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuJiM0MztzdHJ1Y3QgZHJiZF9zdGF0ZV9jaGFuZ2UgKnJlbWVtYmVyX29sZF9zdGF0ZShzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqLCBnZnBfdCk7XG4mIzQzO3ZvaWQgY29weV9vbGRfdG9fbmV3X3N0YXRlX2NoYW5nZShzdHJ1Y3QgZHJiZF9zdGF0ZV9jaGFuZ2UgKik7XG4mIzQzO3ZvaWQgZm9yZ2V0X3N0YXRlX2NoYW5nZShzdHJ1Y3QgZHJiZF9zdGF0ZV9jaGFuZ2UgKik7XG4mIzQzO1xuJiM0MztpbnQgbm90aWZ5X3Jlc291cmNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsIHZvaWQgKixcbiYjNDM7XHRcdFx0XHQgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuJiM0MztpbnQgbm90aWZ5X2Nvbm5lY3Rpb25fc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCwgdm9pZCAqLFxuJiM0MztcdFx0XHRcdCAgIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSB0eXBlKTtcbiYjNDM7aW50IG5vdGlmeV9kZXZpY2Vfc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCwgdm9pZCAqLFxuJiM0MztcdFx0XHQgICAgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuJiM0MztpbnQgbm90aWZ5X3BlZXJfZGV2aWNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsIHZvaWQgKixcbiYjNDM7XHRcdFx0XHQgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuIFxuICNlbmRpZiAgLyogRFJCRF9TVEFURV9DSEFOR0VfSCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3dvcmtlci5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfd29ya2VyLmNcbmluZGV4IDA2OTdmOTlmZWQxOGQ3Li42ZmVjNTliYmYwZTlhNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3dvcmtlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF93b3JrZXIuY1xuQEAgLTc4LDcgJiM0Mzs3OCw3IEBAIHZvaWQgZHJiZF9tZF9lbmRpbyhzdHJ1Y3QgYmlvICpiaW8pXG4gLyogcmVhZHMgb24gYmVoYWxmIG9mIHRoZSBwYXJ0bmVyLFxuICAqIFwmIzM0O3N1Ym1pdHRlZFwmIzM0OyBieSB0aGUgcmVjZWl2ZXJcbiAgKi9cbi1zdGF0aWMgdm9pZCBkcmJkX2VuZGlvX3JlYWRfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpIF9fcmVsZWFzZXMobG9jYWwpXG4mIzQzO3N0YXRpYyB2b2lkIGRyYmRfZW5kaW9fcmVhZF9zZWNfZmluYWwoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSlcbiB7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzID0gMDtcbiBcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSA9IHBlZXJfcmVxLVx1MDAzZXBlZXJfZGV2aWNlO1xuQEAgLTk5LDcgJiM0Mzs5OSw3IEBAIHN0YXRpYyB2b2lkIGRyYmRfZW5kaW9fcmVhZF9zZWNfZmluYWwoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSkgX19yZWxlXG4gXG4gLyogd3JpdGVzIG9uIGJlaGFsZiBvZiB0aGUgcGFydG5lciwgb3IgcmVzeW5jIHdyaXRlcyxcbiAgKiBcJiMzNDtzdWJtaXR0ZWRcJiMzNDsgYnkgdGhlIHJlY2VpdmVyLCBmaW5hbCBzdGFnZS4gICovXG4tdm9pZCBkcmJkX2VuZGlvX3dyaXRlX3NlY19maW5hbChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKSBfX3JlbGVhc2VzKGxvY2FsKVxuJiM0Mzt2b2lkIGRyYmRfZW5kaW9fd3JpdGVfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpXG4ge1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncyA9IDA7XG4gXHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UgPSBwZWVyX3JlcS1cdTAwM2VwZWVyX2RldmljZTtcbkBAIC0xOTIzLDEwICYjNDM7MTkyMyw4IEBAIHN0YXRpYyB2b2lkIGRyYmRfbGRldl9kZXN0cm95KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxuIFx0bGNfZGVzdHJveShkZXZpY2UtXHUwMDNlYWN0X2xvZyk7XG4gXHRkZXZpY2UtXHUwMDNlYWN0X2xvZyA9IE5VTEw7XG4gXG4tXHRfX2FjcXVpcmUobG9jYWwpO1xuIFx0ZHJiZF9iYWNraW5nX2Rldl9mcmVlKGRldmljZSwgZGV2aWNlLVx1MDAzZWxkZXYpO1xuIFx0ZGV2aWNlLVx1MDAzZWxkZXYgPSBOVUxMO1xuLVx0X19yZWxlYXNlKGxvY2FsKTtcbiBcbiBcdGNsZWFyX2JpdChHT0lOR19ESVNLTEVTUywgXHUwMDI2ZGV2aWNlLVx1MDAzZWZsYWdzKTtcbiBcdHdha2VfdXAoXHUwMDI2ZGV2aWNlLVx1MDAzZW1pc2Nfd2FpdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTk6NDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaXMgYSBsYXJnZSByZWZhY3RvcmluZyBhaW1lZCBhdCBmaXhpbmcgc3BhcnNlIHdhcm5pbmdzLiBJdCByZW1vdmVzIGBleHRlcm5gIGZyb20gZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluIGhlYWRlcnMsIHJlbW92ZXMgY3VzdG9tIHNwYXJzZSBhbm5vdGF0aW9ucyBsaWtlIGBfX211c3RfaG9sZChsb2NhbClgLCBgX19hY3F1aXJlKGxvY2FsKWAsIGBfX3JlbGVhc2UobG9jYWwpYCwgYW5kIHJlZmFjdG9ycyBjb2RlIHRvIGF2b2lkIGNvbmRpdGlvbmFsIGxvY2tpbmcgKGUuZy4gYGRyYmRfcmVxX3N0YXRlYCkuIEl0IGFsc28gcmVtb3ZlcyBhIGZldyBkZWZlbnNpdmUgTlVMTCBjaGVja3MgYW5kIGEgd2FybmluZyBvbiBsb2NrIGNvbnRlbnRpb24gaW4gYGRyYmRfYm1fbG9ja2AuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUgbG9naWMgdGhhdCB3b3VsZCByZXF1aXJlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0NWJiNGE4MGRjOTUzOGQ5M2NjOWY5NWVlNTE3NDg3MGIwMGNkYWQxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMTAgMTk6NDk6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvTWFrZWZpbGUgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvTWFrZWZpbGUKaW5kZXggNWZhYWE4YThlN2YwMjkuLmNhZTY1NTc4MDAxYmM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9kcmJkL01ha2VmaWxlCkBAIC0xLDQgJiM0MzsxLDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQomIzQzOwomIzQzO0NPTlRFWFRfQU5BTFlTSVMgOj0geQomIzQzOwogZHJiZC15IDo9IGRyYmRfYnVpbGR0YWcubyBkcmJkX2JpdG1hcC5vIGRyYmRfcHJvYy5vCiBkcmJkLXkgJiM0Mzs9IGRyYmRfd29ya2VyLm8gZHJiZF9yZWNlaXZlci5vIGRyYmRfcmVxLm8gZHJiZF9hY3Rsb2cubwogZHJiZC15ICYjNDM7PSBkcmJkX21haW4ubyBkcmJkX3N0cmluZ3MubyBkcmJkX25sLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2JpdG1hcC5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYml0bWFwLmMKaW5kZXggNjVlYTZlYzY2YmZkNWMuLmQ4NDliZDc4MGNhOTY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9iaXRtYXAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9iaXRtYXAuYwpAQCAtMTIyLDI0ICYjNDM7MTIyLDEzIEBAIHN0YXRpYyB2b2lkIF9fYm1fcHJpbnRfbG9ja19pbmZvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCBjaGFyICpmdW5jKQogfQogCiB2b2lkIGRyYmRfYm1fbG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MpCiYjNDM7CV9fYWNxdWlyZXMoZHJiZF9kZXZfYm1fbG9jaykKJiM0MzsJX19hY3F1aXJlcygmYW1wO2RldmljZS0mZ3Q7Yml0bWFwLSZndDtibV9jaGFuZ2UpCiB7CiAJc3RydWN0IGRyYmRfYml0bWFwICpiID0gZGV2aWNlLSZndDtiaXRtYXA7Ci0JaW50IHRyeWxvY2tfZmFpbGVkOwogCi0JaWYgKCFiKSB7Ci0JCWRyYmRfZXJyKGRldmljZSwgJiMzNDtGSVhNRSBubyBiaXRtYXAgaW4gZHJiZF9ibV9sb2NrIT9cbiYjMzQ7KTsKLQkJcmV0dXJuOwotCX0KLQotCXRyeWxvY2tfZmFpbGVkID0gIW11dGV4X3RyeWxvY2soJmFtcDtiLSZndDtibV9jaGFuZ2UpOwotCi0JaWYgKHRyeWxvY2tfZmFpbGVkKSB7Ci0JCWRyYmRfd2FybihkZXZpY2UsICYjMzQ7JXNbJWRdIGdvaW5nIHRvICYjMzk7JXMmIzM5OyBidXQgYml0bWFwIGFscmVhZHkgbG9ja2VkIGZvciAmIzM5OyVzJiMzOTsgYnkgJXNbJWRdXG4mIzM0OywKLQkJCSAgY3VycmVudC0mZ3Q7Y29tbSwgdGFza19waWRfbnIoY3VycmVudCksCi0JCQkgIHdoeSwgYi0mZ3Q7Ym1fd2h5ID86ICYjMzQ7PyYjMzQ7LAotCQkJICBiLSZndDtibV90YXNrLSZndDtjb21tLCB0YXNrX3BpZF9ucihiLSZndDtibV90YXNrKSk7Ci0JCW11dGV4X2xvY2soJmFtcDtiLSZndDtibV9jaGFuZ2UpOwotCX0KJiM0MzsJX19hY3F1aXJlKGRyYmRfZGV2X2JtX2xvY2spOwomIzQzOwltdXRleF9sb2NrKCZhbXA7Yi0mZ3Q7Ym1fY2hhbmdlKTsKIAlpZiAoQk1fTE9DS0VEX01BU0sgJmFtcDsgYi0mZ3Q7Ym1fZmxhZ3MpCiAJCWRyYmRfZXJyKGRldmljZSwgJiMzNDtGSVhNRSBiaXRtYXAgYWxyZWFkeSBsb2NrZWQgaW4gYm1fbG9ja1xuJiMzNDspOwogCWItJmd0O2JtX2ZsYWdzIHw9IGZsYWdzICZhbXA7IEJNX0xPQ0tFRF9NQVNLOwpAQCAtMTQ5LDEyICYjNDM7MTM4LDEwIEBAIHZvaWQgZHJiZF9ibV9sb2NrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncykKIH0KIAogdm9pZCBkcmJkX2JtX3VubG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkKJiM0MzsJX19yZWxlYXNlcyhkcmJkX2Rldl9ibV9sb2NrKQomIzQzOwlfX3JlbGVhc2VzKCZhbXA7ZGV2aWNlLSZndDtiaXRtYXAtJmd0O2JtX2NoYW5nZSkKIHsKIAlzdHJ1Y3QgZHJiZF9iaXRtYXAgKmIgPSBkZXZpY2UtJmd0O2JpdG1hcDsKLQlpZiAoIWIpIHsKLQkJZHJiZF9lcnIoZGV2aWNlLCAmIzM0O0ZJWE1FIG5vIGJpdG1hcCBpbiBkcmJkX2JtX3VubG9jayE/XG4mIzM0Oyk7Ci0JCXJldHVybjsKLQl9CiAKIAlpZiAoIShCTV9MT0NLRURfTUFTSyAmYW1wOyBkZXZpY2UtJmd0O2JpdG1hcC0mZ3Q7Ym1fZmxhZ3MpKQogCQlkcmJkX2VycihkZXZpY2UsICYjMzQ7RklYTUUgYml0bWFwIG5vdCBsb2NrZWQgaW4gYm1fdW5sb2NrXG4mIzM0Oyk7CkBAIC0xNjMsNiAmIzQzOzE1MCw3IEBAIHZvaWQgZHJiZF9ibV91bmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpCiAJYi0mZ3Q7Ym1fd2h5ICA9IE5VTEw7CiAJYi0mZ3Q7Ym1fdGFzayA9IE5VTEw7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7Yi0mZ3Q7Ym1fY2hhbmdlKTsKJiM0MzsJX19yZWxlYXNlKGRyYmRfZGV2X2JtX2xvY2spOwogfQogCiAvKiB3ZSBzdG9yZSBzb21lICYjMzQ7bWV0YSYjMzQ7IGluZm8gYWJvdXQgb3VyIHBhZ2VzIGluIHBhZ2UtJmd0O3ByaXZhdGUgKi8KQEAgLTk4Nyw3ICYjNDM7OTc1LDcgQEAgc3RhdGljIGlubGluZSBzZWN0b3JfdCBkcmJkX21kX2xhc3RfYml0bWFwX3NlY3RvcihzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldikKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIGJtX3BhZ2VfaW9fYXN5bmMoc3RydWN0IGRyYmRfYm1fYWlvX2N0eCAqY3R4LCBpbnQgcGFnZV9ucikgX19tdXN0X2hvbGQobG9jYWwpCiYjNDM7c3RhdGljIHZvaWQgYm1fcGFnZV9pb19hc3luYyhzdHJ1Y3QgZHJiZF9ibV9haW9fY3R4ICpjdHgsIGludCBwYWdlX25yKQogewogCXN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gY3R4LSZndDtkZXZpY2U7CiAJZW51bSByZXFfb3Agb3AgPSBjdHgtJmd0O2ZsYWdzICZhbXA7IEJNX0FJT19SRUFEID8gUkVRX09QX1JFQUQgOiBSRVFfT1BfV1JJVEU7CkBAIC0xMDYwLDcgJiM0MzsxMDQ4LDggQEAgc3RhdGljIHZvaWQgYm1fcGFnZV9pb19hc3luYyhzdHJ1Y3QgZHJiZF9ibV9haW9fY3R4ICpjdHgsIGludCBwYWdlX25yKSBfX211c3RfaG8KIC8qCiAgKiBibV9ydzogcmVhZC93cml0ZSB0aGUgd2hvbGUgYml0bWFwIGZyb20vdG8gaXRzIG9uIGRpc2sgbG9jYXRpb24uCiAgKi8KLXN0YXRpYyBpbnQgYm1fcncoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IHVuc2lnbmVkIGludCBmbGFncywgdW5zaWduZWQgbGF6eV93cml0ZW91dF91cHBlcl9pZHgpIF9fbXVzdF9ob2xkKGxvY2FsKQomIzQzO3N0YXRpYyBpbnQgYm1fcncoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IHVuc2lnbmVkIGludCBmbGFncywKJiM0MzsJCSB1bnNpZ25lZCBsYXp5X3dyaXRlb3V0X3VwcGVyX2lkeCkKIHsKIAlzdHJ1Y3QgZHJiZF9ibV9haW9fY3R4ICpjdHg7CiAJc3RydWN0IGRyYmRfYml0bWFwICpiID0gZGV2aWNlLSZndDtiaXRtYXA7CkBAIC0xMjE1LDcgJiM0MzsxMjA0LDcgQEAgc3RhdGljIGludCBibV9ydyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgdW5zaWduZWQgaW50IGZsYWdzLCB1bnNpZ25lZAogICogQGRldmljZToJRFJCRCBkZXZpY2UuCiAgKi8KIGludCBkcmJkX2JtX3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCi0JCSBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKQomIzQzOwkJIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkKIAogewogCXJldHVybiBibV9ydyhkZXZpY2UsIEJNX0FJT19SRUFELCAwKTsKQEAgLTEyMjgsNyAmIzQzOzEyMTcsNyBAQCBpbnQgZHJiZF9ibV9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAogICogV2lsbCBvbmx5IHdyaXRlIHBhZ2VzIHRoYXQgaGF2ZSBjaGFuZ2VkIHNpbmNlIGxhc3QgSU8uCiAgKi8KIGludCBkcmJkX2JtX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAotCQkgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKJiM0MzsJCSAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKQogewogCXJldHVybiBibV9ydyhkZXZpY2UsIDAsIDApOwogfQpAQCAtMTI0MCw3ICYjNDM7MTIyOSw3IEBAIGludCBkcmJkX2JtX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAogICogV2lsbCB3cml0ZSBhbGwgcGFnZXMuCiAgKi8KIGludCBkcmJkX2JtX3dyaXRlX2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKJiM0MzsJCSAgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkKIHsKIAlyZXR1cm4gYm1fcncoZGV2aWNlLCBCTV9BSU9fV1JJVEVfQUxMX1BBR0VTLCAwKTsKIH0KQEAgLTEyNTAsNyAmIzQzOzEyMzksNyBAQCBpbnQgZHJiZF9ibV93cml0ZV9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiAgKiBAZGV2aWNlOglEUkJEIGRldmljZS4KICAqIEB1cHBlcl9pZHg6CTA6IHdyaXRlIGFsbCBjaGFuZ2VkIHBhZ2VzOyAmIzQzO3ZlOiBwYWdlIGluZGV4IHRvIHN0b3Agc2Nhbm5pbmcgZm9yIGNoYW5nZWQgcGFnZXMKICAqLwotaW50IGRyYmRfYm1fd3JpdGVfbGF6eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgdXBwZXJfaWR4KSBfX211c3RfaG9sZChsb2NhbCkKJiM0MztpbnQgZHJiZF9ibV93cml0ZV9sYXp5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCB1cHBlcl9pZHgpCiB7CiAJcmV0dXJuIGJtX3J3KGRldmljZSwgQk1fQUlPX0NPUFlfUEFHRVMsIHVwcGVyX2lkeCk7CiB9CkBAIC0xMjY3LDcgJiM0MzsxMjU2LDcgQEAgaW50IGRyYmRfYm1fd3JpdGVfbGF6eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgdXBwZXJfaWR4KSBfX211c3RfaG8KICAqIHBlbmRpbmcgcmVzeW5jIGFja3MgYXJlIHN0aWxsIGJlaW5nIHByb2Nlc3NlZC4KICAqLwogaW50IGRyYmRfYm1fd3JpdGVfY29weV9wYWdlcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKJiM0MzsJCQkgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkKIHsKIAlyZXR1cm4gYm1fcncoZGV2aWNlLCBCTV9BSU9fQ09QWV9QQUdFUywgMCk7CiB9CkBAIC0xMjc2LDcgJiM0MzsxMjY1LDcgQEAgaW50IGRyYmRfYm1fd3JpdGVfY29weV9wYWdlcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKICAqIGRyYmRfYm1fd3JpdGVfaGludGVkKCkgLSBXcml0ZSBiaXRtYXAgcGFnZXMgd2l0aCAmIzM0O2hpbnQmIzM0OyBtYXJrcywgaWYgdGhleSBoYXZlIGNoYW5nZWQuCiAgKiBAZGV2aWNlOglEUkJEIGRldmljZS4KICAqLwotaW50IGRyYmRfYm1fd3JpdGVfaGludGVkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKJiM0MztpbnQgZHJiZF9ibV93cml0ZV9oaW50ZWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpCiB7CiAJcmV0dXJuIGJtX3J3KGRldmljZSwgQk1fQUlPX1dSSVRFX0hJTlRFRCB8IEJNX0FJT19DT1BZX1BBR0VTLCAwKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2NvbmZpZy5oIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfY29uZmlnLmgKaW5kZXggZDIxNTM2NWM2YmIxYjAuLjE2YTk4NWIzMGRkM2ZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9jb25maWcuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9jb25maWcuaApAQCAtNyw3ICYjNDM7Nyw3IEBACiAjaWZuZGVmIERSQkRfQ09ORklHX0gKICNkZWZpbmUgRFJCRF9DT05GSUdfSAogCi1leHRlcm4gY29uc3QgY2hhciAqZHJiZF9idWlsZHRhZyh2b2lkKTsKJiM0Mztjb25zdCBjaGFyICpkcmJkX2J1aWxkdGFnKHZvaWQpOwogCiAjZGVmaW5lIFJFTF9WRVJTSU9OICYjMzQ7OC40LjExJiMzNDsKICNkZWZpbmUgUFJPX1ZFUlNJT05fTUlOIDg2CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9pbnQuaCBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludC5oCmluZGV4IDQ4YjQ1YzMxNDJmNzZhLi43M2NlYWFiMzg0MmQwZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50LmgKQEAgLTEwOSw3ICYjNDM7MTA5LDcgQEAgZXh0ZXJuIHN0cnVjdCByYXRlbGltaXRfc3RhdGUgZHJiZF9yYXRlbGltaXRfc3RhdGU7CiBleHRlcm4gc3RydWN0IGlkciBkcmJkX2RldmljZXM7IC8qIFJDVSwgdXBkYXRlczogZ2VubF9sb2NrKCkgKi8KIGV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGRyYmRfcmVzb3VyY2VzOyAvKiBSQ1UsIHVwZGF0ZXM6IGdlbmxfbG9jaygpICovCiAKLWV4dGVybiBjb25zdCBjaGFyICpjbWRuYW1lKGVudW0gZHJiZF9wYWNrZXQgY21kKTsKJiM0Mztjb25zdCBjaGFyICpjbWRuYW1lKGVudW0gZHJiZF9wYWNrZXQgY21kKTsKIAogLyogZm9yIHNlbmRpbmcvcmVjZWl2aW5nIHRoZSBiaXRtYXAsCiAgKiBwb3NzaWJseSBpbiBzb21lIGVuY29kaW5nIHNjaGVtZSAqLwpAQCAtMTI5LDggJiM0MzsxMjksOCBAQCBzdHJ1Y3QgYm1feGZlcl9jdHggewogCXVuc2lnbmVkIGJ5dGVzWzJdOwogfTsKIAotZXh0ZXJuIHZvaWQgSU5GT19ibV94ZmVyX3N0YXRzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwKLQkJCSAgICAgICBjb25zdCBjaGFyICpkaXJlY3Rpb24sIHN0cnVjdCBibV94ZmVyX2N0eCAqYyk7CiYjNDM7dm9pZCBJTkZPX2JtX3hmZXJfc3RhdHMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLAomIzQzOwkJCWNvbnN0IGNoYXIgKmRpcmVjdGlvbiwgc3RydWN0IGJtX3hmZXJfY3R4ICpjKTsKIAogc3RhdGljIGlubGluZSB2b2lkIGJtX3hmZXJfY3R4X2JpdF90b193b3JkX29mZnNldChzdHJ1Y3QgYm1feGZlcl9jdHggKmMpCiB7CkBAIC0xNTEsNyAmIzQzOzE1MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBibV94ZmVyX2N0eF9iaXRfdG9fd29yZF9vZmZzZXQoc3RydWN0IGJtX3hmZXJfY3R4ICpjKQogI2VuZGlmCiB9CiAKLWV4dGVybiB1bnNpZ25lZCBpbnQgZHJiZF9oZWFkZXJfc2l6ZShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTsKJiM0Mzt1bnNpZ25lZCBpbnQgZHJiZF9oZWFkZXJfc2l6ZShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiBlbnVtIGRyYmRfdGhyZWFkX3N0YXRlIHsKQEAgLTE5NSwxMCAmIzQzOzE5NSwxMCBAQCBzdHJ1Y3QgZHJiZF9kZXZpY2Vfd29yayB7CiAKICNpbmNsdWRlICYjMzQ7ZHJiZF9pbnRlcnZhbC5oJiMzNDsKIAotZXh0ZXJuIGludCBkcmJkX3dhaXRfbWlzYyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7CiYjNDM7ZXh0ZXJuIHN0cnVjdCBtdXRleCByZXNvdXJjZXNfbXV0ZXg7CiAKLWV4dGVybiB2b2lkIGxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKTsKLWV4dGVybiB2b2lkIHVubG9ja19hbGxfcmVzb3VyY2VzKHZvaWQpOwomIzQzO3ZvaWQgbG9ja19hbGxfcmVzb3VyY2VzKHZvaWQpIF9fYWNxdWlyZXMoJmFtcDtyZXNvdXJjZXNfbXV0ZXgpOwomIzQzO3ZvaWQgdW5sb2NrX2FsbF9yZXNvdXJjZXModm9pZCkgX19yZWxlYXNlcygmYW1wO3Jlc291cmNlc19tdXRleCk7CiAKIHN0cnVjdCBkcmJkX3JlcXVlc3QgewogCXN0cnVjdCBkcmJkX3dvcmsgdzsKQEAgLTU1OSw3ICYjNDM7NTU5LDcgQEAgc3RydWN0IGZpZm9fYnVmZmVyIHsKIAlpbnQgdG90YWw7IC8qIHN1bSBvZiBhbGwgdmFsdWVzICovCiAJaW50IHZhbHVlc1tdIF9fY291bnRlZF9ieShzaXplKTsKIH07Ci1leHRlcm4gc3RydWN0IGZpZm9fYnVmZmVyICpmaWZvX2FsbG9jKHVuc2lnbmVkIGludCBmaWZvX3NpemUpOwomIzQzO3N0cnVjdCBmaWZvX2J1ZmZlciAqZmlmb19hbGxvYyh1bnNpZ25lZCBpbnQgZmlmb19zaXplKTsKIAogLyogZmxhZyBiaXRzIHBlciBjb25uZWN0aW9uICovCiBlbnVtIHsKQEAgLTk5OCw5MyAmIzQzOzk5OCwxMDQgQEAgZW51bSBkZHNfZmxhZ3MgewogCUREU0ZfTk9fUkVTWU5DID0gMiwgLyogRG8gbm90IHJ1biBhIHJlc3luYyBmb3IgdGhlIG5ldyBzcGFjZSAqLwogfTsKIAotZXh0ZXJuIHZvaWQgZHJiZF9pbml0X3NldF9kZWZhdWx0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7Ci1leHRlcm4gaW50ICBkcmJkX3RocmVhZF9zdGFydChzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7Ci1leHRlcm4gdm9pZCBfZHJiZF90aHJlYWRfc3RvcChzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSwgaW50IHJlc3RhcnQsIGludCB3YWl0KTsKJiM0Mzt2b2lkIGRyYmRfaW5pdF9zZXRfZGVmYXVsdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO2ludCBkcmJkX3RocmVhZF9zdGFydChzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7CiYjNDM7dm9pZCBfZHJiZF90aHJlYWRfc3RvcChzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSwgaW50IHJlc3RhcnQsIGludCB3YWl0KTsKICNpZmRlZiBDT05GSUdfU01QCi1leHRlcm4gdm9pZCBkcmJkX3RocmVhZF9jdXJyZW50X3NldF9jcHUoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpOwomIzQzO3ZvaWQgZHJiZF90aHJlYWRfY3VycmVudF9zZXRfY3B1KHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTsKICNlbHNlCiAjZGVmaW5lIGRyYmRfdGhyZWFkX2N1cnJlbnRfc2V0X2NwdShBKSAoe30pCiAjZW5kaWYKLWV4dGVybiB2b2lkIHRsX3JlbGVhc2Uoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCB1bnNpZ25lZCBpbnQgYmFycmllcl9uciwKLQkJICAgICAgIHVuc2lnbmVkIGludCBzZXRfc2l6ZSk7Ci1leHRlcm4gdm9pZCB0bF9jbGVhcihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICopOwotZXh0ZXJuIHZvaWQgZHJiZF9mcmVlX3NvY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7Ci1leHRlcm4gaW50IGRyYmRfc2VuZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLAotCQkgICAgIHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUsIHVuc2lnbmVkIG1zZ19mbGFncyk7Ci1leHRlcm4gaW50IGRyYmRfc2VuZF9hbGwoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBzdHJ1Y3Qgc29ja2V0ICosIHZvaWQgKiwgc2l6ZV90LAotCQkJIHVuc2lnbmVkKTsKLQotZXh0ZXJuIGludCBfX2RyYmRfc2VuZF9wcm90b2NvbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBlbnVtIGRyYmRfcGFja2V0IGNtZCk7Ci1leHRlcm4gaW50IGRyYmRfc2VuZF9wcm90b2NvbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTsKLWV4dGVybiBpbnQgZHJiZF9zZW5kX3V1aWRzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopOwotZXh0ZXJuIGludCBkcmJkX3NlbmRfdXVpZHNfc2tpcF9pbml0aWFsX3N5bmMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7Ci1leHRlcm4gdm9pZCBkcmJkX2dlbl9hbmRfc2VuZF9zeW5jX3V1aWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7Ci1leHRlcm4gaW50IGRyYmRfc2VuZF9zaXplcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBpbnQgdHJpZ2dlcl9yZXBseSwgZW51bSBkZHNfZmxhZ3MgZmxhZ3MpOwotZXh0ZXJuIGludCBkcmJkX3NlbmRfc3RhdGUoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSBzKTsKLWV4dGVybiBpbnQgZHJiZF9zZW5kX2N1cnJlbnRfc3RhdGUoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7Ci1leHRlcm4gaW50IGRyYmRfc2VuZF9zeW5jX3BhcmFtKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopOwotZXh0ZXJuIHZvaWQgZHJiZF9zZW5kX2JfYWNrKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHUzMiBiYXJyaWVyX25yLAotCQkJICAgIHUzMiBzZXRfc2l6ZSk7Ci1leHRlcm4gaW50IGRyYmRfc2VuZF9hY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCwKLQkJCSBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKik7Ci1leHRlcm4gdm9pZCBkcmJkX3NlbmRfYWNrX3JwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsCi0JCQkgICAgIHN0cnVjdCBwX2Jsb2NrX3JlcSAqcnApOwotZXh0ZXJuIHZvaWQgZHJiZF9zZW5kX2Fja19kcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LAotCQkJICAgICBzdHJ1Y3QgcF9kYXRhICpkcCwgaW50IGRhdGFfc2l6ZSk7Ci1leHRlcm4gaW50IGRyYmRfc2VuZF9hY2tfZXgoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCwKLQkJCSAgICBzZWN0b3JfdCBzZWN0b3IsIGludCBibGtzaXplLCB1NjQgYmxvY2tfaWQpOwotZXh0ZXJuIGludCBkcmJkX3NlbmRfb3V0X29mX3N5bmMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc3RydWN0IGRyYmRfcmVxdWVzdCAqKTsKLWV4dGVybiBpbnQgZHJiZF9zZW5kX2Jsb2NrKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsCi0JCQkgICBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKik7Ci1leHRlcm4gaW50IGRyYmRfc2VuZF9kYmxvY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKTsKLWV4dGVybiBpbnQgZHJiZF9zZW5kX2RyZXF1ZXN0KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGludCBjbWQsCi0JCQkgICAgICBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplLCB1NjQgYmxvY2tfaWQpOwotZXh0ZXJuIGludCBkcmJkX3NlbmRfZHJlcXVlc3RfY3N1bShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzZWN0b3JfdCBzZWN0b3IsCi0JCQkJICAgaW50IHNpemUsIHZvaWQgKmRpZ2VzdCwgaW50IGRpZ2VzdF9zaXplLAotCQkJCSAgIGVudW0gZHJiZF9wYWNrZXQgY21kKTsKLWV4dGVybiBpbnQgZHJiZF9zZW5kX292X3JlcXVlc3Qoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSk7Ci0KLWV4dGVybiBpbnQgZHJiZF9zZW5kX2JpdG1hcChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTsKLWV4dGVybiB2b2lkIGRyYmRfc2VuZF9zcl9yZXBseShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfc3RhdGVfcnYgcmV0Y29kZSk7Ci1leHRlcm4gdm9pZCBjb25uX3NlbmRfc3JfcmVwbHkoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgZW51bSBkcmJkX3N0YXRlX3J2IHJldGNvZGUpOwotZXh0ZXJuIGludCBkcmJkX3NlbmRfcnNfZGVhbGxvY2F0ZWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICopOwotZXh0ZXJuIHZvaWQgZHJiZF9iYWNraW5nX2Rldl9mcmVlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqbGRldik7Ci1leHRlcm4gdm9pZCBkcmJkX2RldmljZV9jbGVhbnVwKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKLWV4dGVybiB2b2lkIGRyYmRfcHJpbnRfdXVpZHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKnRleHQpOwotZXh0ZXJuIHZvaWQgZHJiZF9xdWV1ZV91bnBsdWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwotCi1leHRlcm4gdm9pZCBjb25uX21kX3N5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7Ci1leHRlcm4gdm9pZCBkcmJkX21kX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB2b2lkICpidWZmZXIpOwotZXh0ZXJuIHZvaWQgZHJiZF9tZF9zeW5jKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKLWV4dGVybiBpbnQgIGRyYmRfbWRfcmVhZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKmJkZXYpOwotZXh0ZXJuIHZvaWQgZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpOwotZXh0ZXJuIHZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxvY2FsKTsKLWV4dGVybiB2b2lkIGRyYmRfdXVpZF9uZXdfY3VycmVudChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpOwotZXh0ZXJuIHZvaWQgZHJiZF91dWlkX3NldF9ibShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpOwotZXh0ZXJuIHZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpOwotZXh0ZXJuIHZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCk7Ci1leHRlcm4gdm9pZCBkcmJkX21kX3NldF9mbGFnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgZmxhZ3MpIF9fbXVzdF9ob2xkKGxvY2FsKTsKLWV4dGVybiB2b2lkIGRyYmRfbWRfY2xlYXJfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWdzKV9fbXVzdF9ob2xkKGxvY2FsKTsKLWV4dGVybiBpbnQgZHJiZF9tZF90ZXN0X2ZsYWcoc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKiwgaW50KTsKLWV4dGVybiB2b2lkIGRyYmRfbWRfbWFya19kaXJ0eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7Ci1leHRlcm4gdm9pZCBkcmJkX3F1ZXVlX2JpdG1hcF9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJCQkgaW50ICgqaW9fZm4pKHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKSwKLQkJCQkgdm9pZCAoKmRvbmUpKHN0cnVjdCBkcmJkX2RldmljZSAqLCBpbnQpLAotCQkJCSBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncywKLQkJCQkgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTsKLWV4dGVybiBpbnQgZHJiZF9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCi0JCWludCAoKmlvX2ZuKShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiksCi0JCWNoYXIgKndoeSwgZW51bSBibV9mbGFnIGZsYWdzLAotCQlzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpOwotZXh0ZXJuIGludCBkcmJkX2JpdG1hcF9pb19mcm9tX3dvcmtlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJaW50ICgqaW9fZm4pKHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKSwKLQkJY2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MsCi0JCXN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7Ci1leHRlcm4gaW50IGRyYmRfYm1pb19zZXRfbl93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7Ci1leHRlcm4gaW50IGRyYmRfYm1pb19jbGVhcl9uX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAotCQlzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTsKJiM0Mzt2b2lkIHRsX3JlbGVhc2Uoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCB1bnNpZ25lZCBpbnQgYmFycmllcl9uciwKJiM0MzsJCXVuc2lnbmVkIGludCBzZXRfc2l6ZSk7CiYjNDM7dm9pZCB0bF9jbGVhcihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICopOwomIzQzO3ZvaWQgZHJiZF9mcmVlX3NvY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7CiYjNDM7aW50IGRyYmRfc2VuZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLAomIzQzOwkgICAgICB2b2lkICpidWYsIHNpemVfdCBzaXplLCB1bnNpZ25lZCBtc2dfZmxhZ3MpOwomIzQzO2ludCBkcmJkX3NlbmRfYWxsKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwgc3RydWN0IHNvY2tldCAqLCB2b2lkICosIHNpemVfdCwKJiM0MzsJCSAgdW5zaWduZWQpOwomIzQzOwomIzQzO2ludCBfX2RyYmRfc2VuZF9wcm90b2NvbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLAomIzQzOwkJCSBlbnVtIGRyYmRfcGFja2V0IGNtZCk7CiYjNDM7aW50IGRyYmRfc2VuZF9wcm90b2NvbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTsKJiM0MztpbnQgZHJiZF9zZW5kX3V1aWRzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopOwomIzQzO2ludCBkcmJkX3NlbmRfdXVpZHNfc2tpcF9pbml0aWFsX3N5bmMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7CiYjNDM7dm9pZCBkcmJkX2dlbl9hbmRfc2VuZF9zeW5jX3V1aWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7CiYjNDM7aW50IGRyYmRfc2VuZF9zaXplcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBpbnQgdHJpZ2dlcl9yZXBseSwKJiM0MzsJCSAgICBlbnVtIGRkc19mbGFncyBmbGFncyk7CiYjNDM7aW50IGRyYmRfc2VuZF9zdGF0ZShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlIHMpOwomIzQzO2ludCBkcmJkX3NlbmRfY3VycmVudF9zdGF0ZShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTsKJiM0MztpbnQgZHJiZF9zZW5kX3N5bmNfcGFyYW0oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7CiYjNDM7dm9pZCBkcmJkX3NlbmRfYl9hY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdTMyIGJhcnJpZXJfbnIsCiYjNDM7CQkgICAgIHUzMiBzZXRfc2l6ZSk7CiYjNDM7aW50IGRyYmRfc2VuZF9hY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCwKJiM0MzsJCSAgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICopOwomIzQzO3ZvaWQgZHJiZF9zZW5kX2Fja19ycChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LAomIzQzOwkJICAgICAgc3RydWN0IHBfYmxvY2tfcmVxICpycCk7CiYjNDM7dm9pZCBkcmJkX3NlbmRfYWNrX2RwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsCiYjNDM7CQkgICAgICBzdHJ1Y3QgcF9kYXRhICpkcCwgaW50IGRhdGFfc2l6ZSk7CiYjNDM7aW50IGRyYmRfc2VuZF9hY2tfZXgoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCwKJiM0MzsJCSAgICAgc2VjdG9yX3Qgc2VjdG9yLCBpbnQgYmxrc2l6ZSwgdTY0IGJsb2NrX2lkKTsKJiM0MztpbnQgZHJiZF9zZW5kX291dF9vZl9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3JlcXVlc3QgKik7CiYjNDM7aW50IGRyYmRfc2VuZF9ibG9jayhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LAomIzQzOwkJICAgIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqKTsKJiM0MztpbnQgZHJiZF9zZW5kX2RibG9jayhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICpyZXEpOwomIzQzO2ludCBkcmJkX3NlbmRfZHJlcXVlc3Qoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgaW50IGNtZCwgc2VjdG9yX3Qgc2VjdG9yLAomIzQzOwkJICAgICAgIGludCBzaXplLCB1NjQgYmxvY2tfaWQpOwomIzQzO2ludCBkcmJkX3NlbmRfZHJlcXVlc3RfY3N1bShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzZWN0b3JfdCBzZWN0b3IsCiYjNDM7CQkJICAgIGludCBzaXplLCB2b2lkICpkaWdlc3QsIGludCBkaWdlc3Rfc2l6ZSwKJiM0MzsJCQkgICAgZW51bSBkcmJkX3BhY2tldCBjbWQpOwomIzQzO2ludCBkcmJkX3NlbmRfb3ZfcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplKTsKJiM0MzsKJiM0MztpbnQgZHJiZF9zZW5kX2JpdG1hcChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKJiM0MzsJCSAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTsKJiM0Mzt2b2lkIGRyYmRfc2VuZF9zcl9yZXBseShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfc3RhdGVfcnYgcmV0Y29kZSk7CiYjNDM7dm9pZCBjb25uX3NlbmRfc3JfcmVwbHkoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwKJiM0MzsJCQllbnVtIGRyYmRfc3RhdGVfcnYgcmV0Y29kZSk7CiYjNDM7aW50IGRyYmRfc2VuZF9yc19kZWFsbG9jYXRlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLAomIzQzOwkJCSAgICAgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICopOwomIzQzO3ZvaWQgZHJiZF9iYWNraW5nX2Rldl9mcmVlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAomIzQzOwkJCSAgIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpsZGV2KTsKJiM0Mzt2b2lkIGRyYmRfZGV2aWNlX2NsZWFudXAoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO3ZvaWQgZHJiZF9wcmludF91dWlkcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqdGV4dCk7CiYjNDM7dm9pZCBkcmJkX3F1ZXVlX3VucGx1ZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7CiYjNDM7dm9pZCBjb25uX21kX3N5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7CiYjNDM7dm9pZCBkcmJkX21kX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB2b2lkICpidWZmZXIpOwomIzQzO3ZvaWQgZHJiZF9tZF9zeW5jKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKJiM0MztpbnQgZHJiZF9tZF9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldik7CiYjNDM7dm9pZCBkcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKTsKJiM0Mzt2b2lkIF9kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKTsKJiM0Mzt2b2lkIGRyYmRfdXVpZF9uZXdfY3VycmVudChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7dm9pZCBkcmJkX3V1aWRfc2V0X2JtKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1NjQgdmFsKTsKJiM0Mzt2b2lkIGRyYmRfdXVpZF9tb3ZlX2hpc3Rvcnkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO3ZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKTsKJiM0Mzt2b2lkIGRyYmRfbWRfc2V0X2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFncyk7CiYjNDM7dm9pZCBkcmJkX21kX2NsZWFyX2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFncyk7CiYjNDM7aW50IGRyYmRfbWRfdGVzdF9mbGFnKHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICosIGludCk7CiYjNDM7dm9pZCBkcmJkX21kX21hcmtfZGlydHkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO3ZvaWQgZHJiZF9xdWV1ZV9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiYjNDM7CQkJICBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosCiYjNDM7CQkJCSAgICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKSwKJiM0MzsJCQkgIHZvaWQgKCpkb25lKShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgaW50KSwgY2hhciAqd2h5LAomIzQzOwkJCSAgZW51bSBibV9mbGFnIGZsYWdzLAomIzQzOwkJCSAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTsKJiM0MztpbnQgZHJiZF9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiYjNDM7CQkgICBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosCiYjNDM7CQkJCXN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopLAomIzQzOwkJICAgY2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MsCiYjNDM7CQkgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpOwomIzQzO2ludCBkcmJkX2JpdG1hcF9pb19mcm9tX3dvcmtlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKJiM0MzsJCQkgICAgICAgaW50ICgqaW9fZm4pKHN0cnVjdCBkcmJkX2RldmljZSAqLAomIzQzOwkJCQkJICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopLAomIzQzOwkJCSAgICAgICBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncywKJiM0MzsJCQkgICAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTsKJiM0MztpbnQgZHJiZF9ibWlvX3NldF9uX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAomIzQzOwkJCSAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTsKJiM0MztpbnQgZHJiZF9ibWlvX2NsZWFyX25fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiYjNDM7CQkJICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7CiYjNDM7aW50IGRyYmRfd2FpdF9taXNjKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSkKJiM0MzsJX19tdXN0X2hvbGQoJmFtcDtkZXZpY2UtJmd0O3Jlc291cmNlLSZndDtyZXFfbG9jayk7CiAKIC8qIE1ldGEgZGF0YSBsYXlvdXQKICAqCkBAIC0xMjc1LDU2ICYjNDM7MTI4Niw2NCBAQCBzdHJ1Y3QgYm1fZXh0ZW50IHsKICNkZWZpbmUgRFJCRF9NQVhfQkFUQ0hfQklPX1NJWkUJIChBTF9VUERBVEVTX1BFUl9UUkFOU0FDVElPTi8yKkFMX0VYVEVOVF9TSVpFKQogI2RlZmluZSBEUkJEX01BWF9CQklPX1NFQ1RPUlMgICAgKERSQkRfTUFYX0JBVENIX0JJT19TSVpFICZndDsmZ3Q7IDkpCiAKLWV4dGVybiBpbnQgIGRyYmRfYm1faW5pdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7Ci1leHRlcm4gaW50ICBkcmJkX2JtX3Jlc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9ycywgaW50IHNldF9uZXdfYml0cyk7Ci1leHRlcm4gdm9pZCBkcmJkX2JtX2NsZWFudXAoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwotZXh0ZXJuIHZvaWQgZHJiZF9ibV9zZXRfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKLWV4dGVybiB2b2lkIGRyYmRfYm1fY2xlYXJfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKJiM0MztpbnQgZHJiZF9ibV9pbml0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKJiM0MztpbnQgZHJiZF9ibV9yZXNpemUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3RvcnMsCiYjNDM7CQkgICBpbnQgc2V0X25ld19iaXRzKTsKJiM0Mzt2b2lkIGRyYmRfYm1fY2xlYW51cChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7dm9pZCBkcmJkX2JtX3NldF9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO3ZvaWQgZHJiZF9ibV9jbGVhcl9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwogLyogc2V0L2NsZWFyL3Rlc3Qgb25seSBhIGZldyBiaXRzIGF0IGEgdGltZSAqLwotZXh0ZXJuIGludCAgZHJiZF9ibV9zZXRfYml0cygKLQkJc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgcywgdW5zaWduZWQgbG9uZyBlKTsKLWV4dGVybiBpbnQgIGRyYmRfYm1fY2xlYXJfYml0cygKLQkJc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgcywgdW5zaWduZWQgbG9uZyBlKTsKLWV4dGVybiBpbnQgZHJiZF9ibV9jb3VudF9iaXRzKAotCXN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCB1bnNpZ25lZCBsb25nIHMsIGNvbnN0IHVuc2lnbmVkIGxvbmcgZSk7CiYjNDM7aW50IGRyYmRfYm1fc2V0X2JpdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgcywKJiM0MzsJCSAgICAgdW5zaWduZWQgbG9uZyBlKTsKJiM0MztpbnQgZHJiZF9ibV9jbGVhcl9iaXRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIHMsCiYjNDM7CQkgICAgICAgdW5zaWduZWQgbG9uZyBlKTsKJiM0MztpbnQgZHJiZF9ibV9jb3VudF9iaXRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCB1bnNpZ25lZCBsb25nIHMsCiYjNDM7CQkgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBlKTsKIC8qIGJtX3NldF9iaXRzIHZhcmlhbnQgZm9yIHVzZSB3aGlsZSBob2xkaW5nIGRyYmRfYm1fbG9jaywKICAqIG1heSBwcm9jZXNzIHRoZSB3aG9sZSBiaXRtYXAgaW4gb25lIGdvICovCi1leHRlcm4gdm9pZCBfZHJiZF9ibV9zZXRfYml0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJY29uc3QgdW5zaWduZWQgbG9uZyBzLCBjb25zdCB1bnNpZ25lZCBsb25nIGUpOwotZXh0ZXJuIGludCAgZHJiZF9ibV90ZXN0X2JpdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBiaXRucik7Ci1leHRlcm4gaW50ICBkcmJkX2JtX2Vfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGVucik7Ci1leHRlcm4gaW50ICBkcmJkX2JtX3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCi0JCXN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpOwotZXh0ZXJuIHZvaWQgZHJiZF9ibV9tYXJrX2Zvcl93cml0ZW91dChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IHBhZ2VfbnIpOwotZXh0ZXJuIGludCAgZHJiZF9ibV93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7Ci1leHRlcm4gdm9pZCBkcmJkX2JtX3Jlc2V0X2FsX2hpbnRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7Ci1leHRlcm4gaW50ICBkcmJkX2JtX3dyaXRlX2hpbnRlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpOwotZXh0ZXJuIGludCAgZHJiZF9ibV93cml0ZV9sYXp5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCB1cHBlcl9pZHgpIF9fbXVzdF9ob2xkKGxvY2FsKTsKLWV4dGVybiBpbnQgZHJiZF9ibV93cml0ZV9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCi0JCXN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpOwotZXh0ZXJuIGludCAgZHJiZF9ibV93cml0ZV9jb3B5X3BhZ2VzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAotCQlzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTsKLWV4dGVybiBzaXplX3QJICAgICBkcmJkX2JtX3dvcmRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKLWV4dGVybiB1bnNpZ25lZCBsb25nIGRyYmRfYm1fYml0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7Ci1leHRlcm4gc2VjdG9yX3QgICAgICBkcmJkX2JtX2NhcGFjaXR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKJiM0Mzt2b2lkIF9kcmJkX2JtX3NldF9iaXRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCB1bnNpZ25lZCBsb25nIHMsCiYjNDM7CQkgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBlKTsKJiM0MztpbnQgZHJiZF9ibV90ZXN0X2JpdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBiaXRucik7CiYjNDM7aW50IGRyYmRfYm1fZV93ZWlnaHQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgZW5yKTsKJiM0MztpbnQgZHJiZF9ibV9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAomIzQzOwkJIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7CiYjNDM7dm9pZCBkcmJkX2JtX21hcmtfZm9yX3dyaXRlb3V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgcGFnZV9ucik7CiYjNDM7aW50IGRyYmRfYm1fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiYjNDM7CQkgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7CiYjNDM7dm9pZCBkcmJkX2JtX3Jlc2V0X2FsX2hpbnRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKJiM0MztpbnQgZHJiZF9ibV93cml0ZV9oaW50ZWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO2ludCBkcmJkX2JtX3dyaXRlX2xhenkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIHVwcGVyX2lkeCk7CiYjNDM7aW50IGRyYmRfYm1fd3JpdGVfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAomIzQzOwkJICAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTsKJiM0MztpbnQgZHJiZF9ibV93cml0ZV9jb3B5X3BhZ2VzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAomIzQzOwkJCSAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTsKJiM0MztzaXplX3QgZHJiZF9ibV93b3JkcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7dW5zaWduZWQgbG9uZyBkcmJkX2JtX2JpdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO3NlY3Rvcl90IGRyYmRfYm1fY2FwYWNpdHkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwogCiAjZGVmaW5lIERSQkRfRU5EX09GX0JJVE1BUAkofih1bnNpZ25lZCBsb25nKTApCi1leHRlcm4gdW5zaWduZWQgbG9uZyBkcmJkX2JtX2ZpbmRfbmV4dChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBibV9mbyk7CiYjNDM7dW5zaWduZWQgbG9uZyBkcmJkX2JtX2ZpbmRfbmV4dChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKJiM0MzsJCQkJdW5zaWduZWQgbG9uZyBibV9mbyk7CiAvKiBibV9maW5kX25leHQgdmFyaWFudHMgZm9yIHVzZSB3aGlsZSB5b3UgaG9sZCBkcmJkX2JtX2xvY2soKSAqLwotZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX2RyYmRfYm1fZmluZF9uZXh0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGJtX2ZvKTsKLWV4dGVybiB1bnNpZ25lZCBsb25nIF9kcmJkX2JtX2ZpbmRfbmV4dF96ZXJvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGJtX2ZvKTsKLWV4dGVybiB1bnNpZ25lZCBsb25nIF9kcmJkX2JtX3RvdGFsX3dlaWdodChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7Ci1leHRlcm4gdW5zaWduZWQgbG9uZyBkcmJkX2JtX3RvdGFsX3dlaWdodChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7dW5zaWduZWQgbG9uZyBfZHJiZF9ibV9maW5kX25leHQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiYjNDM7CQkJCSB1bnNpZ25lZCBsb25nIGJtX2ZvKTsKJiM0Mzt1bnNpZ25lZCBsb25nIF9kcmJkX2JtX2ZpbmRfbmV4dF96ZXJvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAomIzQzOwkJCQkgICAgICB1bnNpZ25lZCBsb25nIGJtX2ZvKTsKJiM0Mzt1bnNpZ25lZCBsb25nIF9kcmJkX2JtX3RvdGFsX3dlaWdodChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7dW5zaWduZWQgbG9uZyBkcmJkX2JtX3RvdGFsX3dlaWdodChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiAvKiBmb3IgcmVjZWl2ZV9iaXRtYXAgKi8KLWV4dGVybiB2b2lkIGRyYmRfYm1fbWVyZ2VfbGVsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzaXplX3Qgb2Zmc2V0LAotCQlzaXplX3QgbnVtYmVyLCB1bnNpZ25lZCBsb25nICpidWZmZXIpOwomIzQzO3ZvaWQgZHJiZF9ibV9tZXJnZV9sZWwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBudW1iZXIsCiYjNDM7CQkgICAgICAgdW5zaWduZWQgbG9uZyAqYnVmZmVyKTsKIC8qIGZvciBfZHJiZF9zZW5kX2JpdG1hcCAqLwotZXh0ZXJuIHZvaWQgZHJiZF9ibV9nZXRfbGVsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzaXplX3Qgb2Zmc2V0LAotCQlzaXplX3QgbnVtYmVyLCB1bnNpZ25lZCBsb25nICpidWZmZXIpOwomIzQzO3ZvaWQgZHJiZF9ibV9nZXRfbGVsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbnVtYmVyLAomIzQzOwkJICAgICB1bnNpZ25lZCBsb25nICpidWZmZXIpOwomIzQzOwomIzQzO3Rva2VuX2NvbnRleHRfbG9jayhkcmJkX2Rldl9ibV9sb2NrKTsKIAotZXh0ZXJuIHZvaWQgZHJiZF9ibV9sb2NrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncyk7Ci1leHRlcm4gdm9pZCBkcmJkX2JtX3VubG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7dm9pZCBkcmJkX2JtX2xvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNoYXIgKndoeSwgZW51bSBibV9mbGFnIGZsYWdzKQomIzQzOwlfX2FjcXVpcmVzKGRyYmRfZGV2X2JtX2xvY2spOwomIzQzO3ZvaWQgZHJiZF9ibV91bmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpCiYjNDM7CV9fcmVsZWFzZXMoZHJiZF9kZXZfYm1fbG9jayk7CiAvKiBkcmJkX21haW4uYyAqLwogCiBleHRlcm4gc3RydWN0IGttZW1fY2FjaGUgKmRyYmRfcmVxdWVzdF9jYWNoZTsKQEAgLTEzNTAsMzcgJiM0MzsxMzY5LDM5IEBAIGV4dGVybiBzdHJ1Y3QgYmlvX3NldCBkcmJkX21kX2lvX2Jpb19zZXQ7CiAvKiBBbmQgYSBiaW9fc2V0IGZvciBjbG9uaW5nICovCiBleHRlcm4gc3RydWN0IGJpb19zZXQgZHJiZF9pb19iaW9fc2V0OwogCi1leHRlcm4gc3RydWN0IG11dGV4IHJlc291cmNlc19tdXRleDsKLQotZXh0ZXJuIGVudW0gZHJiZF9yZXRfY29kZSBkcmJkX2NyZWF0ZV9kZXZpY2Uoc3RydWN0IGRyYmRfY29uZmlnX2NvbnRleHQgKmFkbV9jdHgsIHVuc2lnbmVkIGludCBtaW5vcik7Ci1leHRlcm4gdm9pZCBkcmJkX2Rlc3Ryb3lfZGV2aWNlKHN0cnVjdCBrcmVmICprcmVmKTsKLWV4dGVybiB2b2lkIGRyYmRfZGVsZXRlX2RldmljZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7Ci0KLWV4dGVybiBzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqZHJiZF9jcmVhdGVfcmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSk7Ci1leHRlcm4gdm9pZCBkcmJkX2ZyZWVfcmVzb3VyY2Uoc3RydWN0IGRyYmRfcmVzb3VyY2UgKnJlc291cmNlKTsKLQotZXh0ZXJuIGludCBzZXRfcmVzb3VyY2Vfb3B0aW9ucyhzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UsIHN0cnVjdCByZXNfb3B0cyAqcmVzX29wdHMpOwotZXh0ZXJuIHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5fY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCByZXNfb3B0cyAqcmVzX29wdHMpOwotZXh0ZXJuIHZvaWQgZHJiZF9kZXN0cm95X2Nvbm5lY3Rpb24oc3RydWN0IGtyZWYgKmtyZWYpOwotZXh0ZXJuIHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5fZ2V0X2J5X2FkZHJzKHZvaWQgKm15X2FkZHIsIGludCBteV9hZGRyX2xlbiwKLQkJCQkJICAgIHZvaWQgKnBlZXJfYWRkciwgaW50IHBlZXJfYWRkcl9sZW4pOwotZXh0ZXJuIHN0cnVjdCBkcmJkX3Jlc291cmNlICpkcmJkX2ZpbmRfcmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSk7Ci1leHRlcm4gdm9pZCBkcmJkX2Rlc3Ryb3lfcmVzb3VyY2Uoc3RydWN0IGtyZWYgKmtyZWYpOwotZXh0ZXJuIHZvaWQgY29ubl9mcmVlX2NyeXB0byhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTsKJiM0MztlbnVtIGRyYmRfcmV0X2NvZGUgZHJiZF9jcmVhdGVfZGV2aWNlKHN0cnVjdCBkcmJkX2NvbmZpZ19jb250ZXh0ICphZG1fY3R4LAomIzQzOwkJCQkgICAgICB1bnNpZ25lZCBpbnQgbWlub3IpOwomIzQzO3ZvaWQgZHJiZF9kZXN0cm95X2RldmljZShzdHJ1Y3Qga3JlZiAqa3JlZik7CiYjNDM7dm9pZCBkcmJkX2RlbGV0ZV9kZXZpY2Uoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzOwomIzQzO3N0cnVjdCBkcmJkX3Jlc291cmNlICpkcmJkX2NyZWF0ZV9yZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKTsKJiM0Mzt2b2lkIGRyYmRfZnJlZV9yZXNvdXJjZShzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UpOwomIzQzOwomIzQzO2ludCBzZXRfcmVzb3VyY2Vfb3B0aW9ucyhzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UsCiYjNDM7CQkJIHN0cnVjdCByZXNfb3B0cyAqcmVzX29wdHMpOwomIzQzO3N0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5fY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsCiYjNDM7CQkJCSAgICBzdHJ1Y3QgcmVzX29wdHMgKnJlc19vcHRzKTsKJiM0Mzt2b2lkIGRyYmRfZGVzdHJveV9jb25uZWN0aW9uKHN0cnVjdCBrcmVmICprcmVmKTsKJiM0MztzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uX2dldF9ieV9hZGRycyh2b2lkICpteV9hZGRyLCBpbnQgbXlfYWRkcl9sZW4sCiYjNDM7CQkJCQkgIHZvaWQgKnBlZXJfYWRkciwgaW50IHBlZXJfYWRkcl9sZW4pOwomIzQzO3N0cnVjdCBkcmJkX3Jlc291cmNlICpkcmJkX2ZpbmRfcmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSk7CiYjNDM7dm9pZCBkcmJkX2Rlc3Ryb3lfcmVzb3VyY2Uoc3RydWN0IGtyZWYgKmtyZWYpOwomIzQzO3ZvaWQgY29ubl9mcmVlX2NyeXB0byhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTsKIAogLyogZHJiZF9yZXEgKi8KLWV4dGVybiB2b2lkIGRvX3N1Ym1pdChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndzKTsKLWV4dGVybiB2b2lkIF9fZHJiZF9tYWtlX3JlcXVlc3Qoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBiaW8gKik7CiYjNDM7dm9pZCBkb19zdWJtaXQoc3RydWN0IHdvcmtfc3RydWN0ICp3cyk7CiYjNDM7dm9pZCBfX2RyYmRfbWFrZV9yZXF1ZXN0KHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgYmlvICopOwogdm9pZCBkcmJkX3N1Ym1pdF9iaW8oc3RydWN0IGJpbyAqYmlvKTsKIAogLyogZHJiZF9ubC5jICovCiAKIGV4dGVybiBzdHJ1Y3QgbXV0ZXggbm90aWZpY2F0aW9uX211dGV4OwogCi1leHRlcm4gdm9pZCBkcmJkX3N1c3BlbmRfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwotZXh0ZXJuIHZvaWQgZHJiZF9yZXN1bWVfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwotZXh0ZXJuIGNoYXIgKnBwc2l6ZShjaGFyICpidWYsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKTsKLWV4dGVybiBzZWN0b3JfdCBkcmJkX25ld19kZXZfc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKiwgc2VjdG9yX3QsIGludCk7CiYjNDM7dm9pZCBkcmJkX3N1c3BlbmRfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO3ZvaWQgZHJiZF9yZXN1bWVfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO2NoYXIgKnBwc2l6ZShjaGFyICpidWYsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKTsKJiM0MztzZWN0b3JfdCBkcmJkX25ld19kZXZfc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKiwKJiM0MzsJCQkgICBzZWN0b3JfdCwgaW50KTsKIGVudW0gZGV0ZXJtaW5lX2Rldl9zaXplIHsKIAlEU19FUlJPUl9TSFJJTksgPSAtMywKIAlEU19FUlJPUl9TUEFDRV9NRCA9IC0yLApAQCAtMTM5MCw0MSAmIzQzOzE0MTEsNDUgQEAgZW51bSBkZXRlcm1pbmVfZGV2X3NpemUgewogCURTX0dSRVcgPSAyLAogCURTX0dSRVdfRlJPTV9aRVJPID0gMywKIH07Ci1leHRlcm4gZW51bSBkZXRlcm1pbmVfZGV2X3NpemUKLWRyYmRfZGV0ZXJtaW5lX2Rldl9zaXplKHN0cnVjdCBkcmJkX2RldmljZSAqLCBlbnVtIGRkc19mbGFncywgc3RydWN0IHJlc2l6ZV9wYXJtcyAqKSBfX211c3RfaG9sZChsb2NhbCk7Ci1leHRlcm4gdm9pZCByZXN5bmNfYWZ0ZXJfb25saW5lX2dyb3coc3RydWN0IGRyYmRfZGV2aWNlICopOwotZXh0ZXJuIHZvaWQgZHJiZF9yZWNvbnNpZGVyX3F1ZXVlX3BhcmFtZXRlcnMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCi0JCQlzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldiwgc3RydWN0IG9fcWxpbSAqbyk7Ci1leHRlcm4gZW51bSBkcmJkX3N0YXRlX3J2IGRyYmRfc2V0X3JvbGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCi0JCQkJCWVudW0gZHJiZF9yb2xlIG5ld19yb2xlLAotCQkJCQlpbnQgZm9yY2UpOwotZXh0ZXJuIGJvb2wgY29ubl90cnlfb3V0ZGF0ZV9wZWVyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pOwotZXh0ZXJuIHZvaWQgY29ubl90cnlfb3V0ZGF0ZV9wZWVyX2FzeW5jKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pOwotZXh0ZXJuIGVudW0gZHJiZF9wZWVyX3N0YXRlIGNvbm5fa2hlbHBlcihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBjaGFyICpjbWQpOwotZXh0ZXJuIGludCBkcmJkX2toZWxwZXIoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNoYXIgKmNtZCk7CiYjNDM7ZW51bSBkZXRlcm1pbmVfZGV2X3NpemUgZHJiZF9kZXRlcm1pbmVfZGV2X3NpemUoc3RydWN0IGRyYmRfZGV2aWNlICosCiYjNDM7CQkJCQkJZW51bSBkZHNfZmxhZ3MsCiYjNDM7CQkJCQkJc3RydWN0IHJlc2l6ZV9wYXJtcyAqKTsKJiM0Mzt2b2lkIHJlc3luY19hZnRlcl9vbmxpbmVfZ3JvdyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKik7CiYjNDM7dm9pZCBkcmJkX3JlY29uc2lkZXJfcXVldWVfcGFyYW1ldGVycyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKJiM0MzsJCQkJICAgICAgc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKmJkZXYsCiYjNDM7CQkJCSAgICAgIHN0cnVjdCBvX3FsaW0gKm8pOwomIzQzO2VudW0gZHJiZF9zdGF0ZV9ydiBkcmJkX3NldF9yb2xlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAomIzQzOwkJCQkgZW51bSBkcmJkX3JvbGUgbmV3X3JvbGUsIGludCBmb3JjZSk7CiYjNDM7Ym9vbCBjb25uX3RyeV9vdXRkYXRlX3BlZXIoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7CiYjNDM7dm9pZCBjb25uX3RyeV9vdXRkYXRlX3BlZXJfYXN5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7CiYjNDM7ZW51bSBkcmJkX3BlZXJfc3RhdGUgY29ubl9raGVscGVyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sCiYjNDM7CQkJCSAgY2hhciAqY21kKTsKJiM0MztpbnQgZHJiZF9raGVscGVyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICpjbWQpOwogCiAvKiBkcmJkX3dvcmtlci5jICovCiAvKiBiaV9lbmRfaW8gaGFuZGxlcnMgKi8KLWV4dGVybiB2b2lkIGRyYmRfbWRfZW5kaW8oc3RydWN0IGJpbyAqYmlvKTsKLWV4dGVybiB2b2lkIGRyYmRfcGVlcl9yZXF1ZXN0X2VuZGlvKHN0cnVjdCBiaW8gKmJpbyk7Ci1leHRlcm4gdm9pZCBkcmJkX3JlcXVlc3RfZW5kaW8oc3RydWN0IGJpbyAqYmlvKTsKLWV4dGVybiBpbnQgZHJiZF93b3JrZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpOwomIzQzO3ZvaWQgZHJiZF9tZF9lbmRpbyhzdHJ1Y3QgYmlvICpiaW8pOwomIzQzO3ZvaWQgZHJiZF9wZWVyX3JlcXVlc3RfZW5kaW8oc3RydWN0IGJpbyAqYmlvKTsKJiM0Mzt2b2lkIGRyYmRfcmVxdWVzdF9lbmRpbyhzdHJ1Y3QgYmlvICpiaW8pOwomIzQzO2ludCBkcmJkX3dvcmtlcihzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7CiBlbnVtIGRyYmRfcmV0X2NvZGUgZHJiZF9yZXN5bmNfYWZ0ZXJfdmFsaWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBvX21pbm9yKTsKIHZvaWQgZHJiZF9yZXN5bmNfYWZ0ZXJfY2hhbmdlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7Ci1leHRlcm4gdm9pZCBkcmJkX3N0YXJ0X3Jlc3luYyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Nvbm5zIHNpZGUpOwotZXh0ZXJuIHZvaWQgcmVzdW1lX25leHRfc2coc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwotZXh0ZXJuIHZvaWQgc3VzcGVuZF9vdGhlcl9zZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7Ci1leHRlcm4gaW50IGRyYmRfcmVzeW5jX2ZpbmlzaGVkKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7CiYjNDM7dm9pZCBkcmJkX3N0YXJ0X3Jlc3luYyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Nvbm5zIHNpZGUpOwomIzQzO3ZvaWQgcmVzdW1lX25leHRfc2coc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO3ZvaWQgc3VzcGVuZF9vdGhlcl9zZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7aW50IGRyYmRfcmVzeW5jX2ZpbmlzaGVkKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7CiAvKiBtYXliZSByYXRoZXIgZHJiZF9tYWluLmMgPyAqLwotZXh0ZXJuIHZvaWQgKmRyYmRfbWRfZ2V0X2J1ZmZlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqaW50ZW50KTsKLWV4dGVybiB2b2lkIGRyYmRfbWRfcHV0X2J1ZmZlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7Ci1leHRlcm4gaW50IGRyYmRfbWRfc3luY19wYWdlX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAotCQlzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldiwgc2VjdG9yX3Qgc2VjdG9yLCBlbnVtIHJlcV9vcCBvcCk7Ci1leHRlcm4gdm9pZCBkcmJkX292X291dF9vZl9zeW5jX2ZvdW5kKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwKLQkJc2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSk7Ci1leHRlcm4gdm9pZCB3YWl0X3VudGlsX2RvbmVfb3JfZm9yY2VfZGV0YWNoZWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCi0JCXN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LCB1bnNpZ25lZCBpbnQgKmRvbmUpOwotZXh0ZXJuIHZvaWQgZHJiZF9yc19jb250cm9sbGVyX3Jlc2V0KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7CiYjNDM7dm9pZCAqZHJiZF9tZF9nZXRfYnVmZmVyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCBjaGFyICppbnRlbnQpOwomIzQzO3ZvaWQgZHJiZF9tZF9wdXRfYnVmZmVyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKJiM0MztpbnQgZHJiZF9tZF9zeW5jX3BhZ2VfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiYjNDM7CQkJIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LCBzZWN0b3JfdCBzZWN0b3IsCiYjNDM7CQkJIGVudW0gcmVxX29wIG9wKTsKJiM0Mzt2b2lkIGRyYmRfb3Zfb3V0X29mX3N5bmNfZm91bmQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLAomIzQzOwkJCSAgICAgICBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplKTsKJiM0Mzt2b2lkIHdhaXRfdW50aWxfZG9uZV9vcl9mb3JjZV9kZXRhY2hlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKJiM0MzsJCQkJICAgICAgIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LAomIzQzOwkJCQkgICAgICAgdW5zaWduZWQgaW50ICpkb25lKTsKJiM0Mzt2b2lkIGRyYmRfcnNfY29udHJvbGxlcl9yZXNldChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpOwogCiBzdGF0aWMgaW5saW5lIHZvaWQgb3Zfb3V0X29mX3N5bmNfcHJpbnQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKQogewpAQCAtMTQzOCw0OCAmIzQzOzE0NjMsNDcgQEAgc3RhdGljIGlubGluZSB2b2lkIG92X291dF9vZl9zeW5jX3ByaW50KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkKIAlkZXZpY2UtJmd0O292X2xhc3Rfb29zX3NpemUgPSAwOwogfQogCi0KLWV4dGVybiB2b2lkIGRyYmRfY3N1bV9iaW8oc3RydWN0IGNyeXB0b19zaGFzaCAqLCBzdHJ1Y3QgYmlvICosIHZvaWQgKik7Ci1leHRlcm4gdm9pZCBkcmJkX2NzdW1fZWUoc3RydWN0IGNyeXB0b19zaGFzaCAqLCBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKiwKLQkJCSB2b2lkICopOwomIzQzO3ZvaWQgZHJiZF9jc3VtX2JpbyhzdHJ1Y3QgY3J5cHRvX3NoYXNoICosIHN0cnVjdCBiaW8gKiwgdm9pZCAqKTsKJiM0Mzt2b2lkIGRyYmRfY3N1bV9lZShzdHJ1Y3QgY3J5cHRvX3NoYXNoICosIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqLCB2b2lkICopOwogLyogd29ya2VyIGNhbGxiYWNrcyAqLwotZXh0ZXJuIGludCB3X2VfZW5kX2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTsKLWV4dGVybiBpbnQgd19lX2VuZF9yc2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTsKLWV4dGVybiBpbnQgd19lX2VuZF9jc3VtX3JzX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7Ci1leHRlcm4gaW50IHdfZV9lbmRfb3ZfcmVwbHkoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpOwotZXh0ZXJuIGludCB3X2VfZW5kX292X3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7Ci1leHRlcm4gaW50IHdfb3ZfZmluaXNoZWQoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpOwotZXh0ZXJuIGludCB3X3Jlc3luY190aW1lcihzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7Ci1leHRlcm4gaW50IHdfc2VuZF93cml0ZV9oaW50KHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTsKLWV4dGVybiBpbnQgd19zZW5kX2RibG9jayhzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7Ci1leHRlcm4gaW50IHdfc2VuZF9yZWFkX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7Ci1leHRlcm4gaW50IHdfcmVzdGFydF9kaXNrX2lvKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTsKLWV4dGVybiBpbnQgd19zZW5kX291dF9vZl9zeW5jKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTsKLQotZXh0ZXJuIHZvaWQgcmVzeW5jX3RpbWVyX2ZuKHN0cnVjdCB0aW1lcl9saXN0ICp0KTsKLWV4dGVybiB2b2lkIHN0YXJ0X3Jlc3luY190aW1lcl9mbihzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7Ci0KLWV4dGVybiB2b2lkIGRyYmRfZW5kaW9fd3JpdGVfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpOwomIzQzO2ludCB3X2VfZW5kX2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTsKJiM0MztpbnQgd19lX2VuZF9yc2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTsKJiM0MztpbnQgd19lX2VuZF9jc3VtX3JzX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7CiYjNDM7aW50IHdfZV9lbmRfb3ZfcmVwbHkoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpOwomIzQzO2ludCB3X2VfZW5kX292X3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7CiYjNDM7aW50IHdfb3ZfZmluaXNoZWQoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpOwomIzQzO2ludCB3X3Jlc3luY190aW1lcihzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7CiYjNDM7aW50IHdfc2VuZF93cml0ZV9oaW50KHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTsKJiM0MztpbnQgd19zZW5kX2RibG9jayhzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7CiYjNDM7aW50IHdfc2VuZF9yZWFkX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7CiYjNDM7aW50IHdfcmVzdGFydF9kaXNrX2lvKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTsKJiM0MztpbnQgd19zZW5kX291dF9vZl9zeW5jKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTsKJiM0MzsKJiM0Mzt2b2lkIHJlc3luY190aW1lcl9mbihzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7CiYjNDM7dm9pZCBzdGFydF9yZXN5bmNfdGltZXJfZm4oc3RydWN0IHRpbWVyX2xpc3QgKnQpOwomIzQzOwomIzQzO3ZvaWQgZHJiZF9lbmRpb193cml0ZV9zZWNfZmluYWwoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSk7CiAKIC8qIGRyYmRfcmVjZWl2ZXIuYyAqLwotZXh0ZXJuIGludCBkcmJkX2lzc3VlX2Rpc2NhcmRfb3JfemVyb19vdXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCi0JCXNlY3Rvcl90IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnJfc2VjdG9ycywgaW50IGZsYWdzKTsKLWV4dGVybiBpbnQgZHJiZF9yZWNlaXZlcihzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7Ci1leHRlcm4gaW50IGRyYmRfYWNrX3JlY2VpdmVyKHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTsKLWV4dGVybiB2b2lkIGRyYmRfc2VuZF9hY2tzX3dmKHN0cnVjdCB3b3JrX3N0cnVjdCAqd3MpOwotZXh0ZXJuIGJvb2wgZHJiZF9yc19jX21pbl9yYXRlX3Rocm90dGxlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKLWV4dGVybiBib29sIGRyYmRfcnNfc2hvdWxkX3Nsb3dfZG93bihzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHNlY3Rvcl90IHNlY3RvciwKLQkJYm9vbCB0aHJvdHRsZV9pZl9hcHBfaXNfd2FpdGluZyk7Ci1leHRlcm4gaW50IGRyYmRfc3VibWl0X3BlZXJfcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKTsKLWV4dGVybiBpbnQgZHJiZF9mcmVlX3BlZXJfcmVxcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGxpc3RfaGVhZCAqKTsKLWV4dGVybiBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKmRyYmRfYWxsb2NfcGVlcl9yZXEoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgdTY0LAotCQkJCQkJICAgICBzZWN0b3JfdCwgdW5zaWduZWQgaW50LAotCQkJCQkJICAgICB1bnNpZ25lZCBpbnQsCi0JCQkJCQkgICAgIGdmcF90KSBfX211c3RfaG9sZChsb2NhbCk7Ci1leHRlcm4gdm9pZCBkcmJkX2ZyZWVfcGVlcl9yZXEoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcmVxKTsKLWV4dGVybiBzdHJ1Y3QgcGFnZSAqZHJiZF9hbGxvY19wYWdlcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bnNpZ25lZCBpbnQsIGJvb2wpOwotZXh0ZXJuIHZvaWQgX2RyYmRfY2xlYXJfZG9uZV9lZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGxpc3RfaGVhZCAqdG9fYmVfZnJlZWQpOwotZXh0ZXJuIGludCBkcmJkX2Nvbm5lY3RlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTsKJiM0MztpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzdGFydCwKJiM0MzsJCQkJICAgdW5zaWduZWQgaW50IG5yX3NlY3RvcnMsIGludCBmbGFncyk7CiYjNDM7aW50IGRyYmRfcmVjZWl2ZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpOwomIzQzO2ludCBkcmJkX2Fja19yZWNlaXZlcihzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7CiYjNDM7dm9pZCBkcmJkX3NlbmRfYWNrc193ZihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndzKTsKJiM0Mztib29sIGRyYmRfcnNfY19taW5fcmF0ZV90aHJvdHRsZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7Ym9vbCBkcmJkX3JzX3Nob3VsZF9zbG93X2Rvd24oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLAomIzQzOwkJCSAgICAgIHNlY3Rvcl90IHNlY3RvciwgYm9vbCB0aHJvdHRsZV9pZl9hcHBfaXNfd2FpdGluZyk7CiYjNDM7aW50IGRyYmRfc3VibWl0X3BlZXJfcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKTsKJiM0MztpbnQgZHJiZF9mcmVlX3BlZXJfcmVxcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGxpc3RfaGVhZCAqKTsKJiM0MztzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKmRyYmRfYWxsb2NfcGVlcl9yZXEoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgdTY0LAomIzQzOwkJCQkJICAgICAgc2VjdG9yX3QsIHVuc2lnbmVkIGludCwKJiM0MzsJCQkJCSAgICAgIHVuc2lnbmVkIGludCwgZ2ZwX3QpOwomIzQzO3ZvaWQgZHJiZF9mcmVlX3BlZXJfcmVxKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAomIzQzOwkJCXN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcmVxKTsKJiM0MztzdHJ1Y3QgcGFnZSAqZHJiZF9hbGxvY19wYWdlcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bnNpZ25lZCBpbnQsIGJvb2wpOwomIzQzO3ZvaWQgX2RyYmRfY2xlYXJfZG9uZV9lZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKJiM0MzsJCQkgc3RydWN0IGxpc3RfaGVhZCAqdG9fYmVfZnJlZWQpOwomIzQzO2ludCBkcmJkX2Nvbm5lY3RlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTsKIAogLyogc2V0cyB0aGUgbnVtYmVyIG9mIDUxMiBieXRlIHNlY3RvcnMgb2Ygb3VyIHZpcnR1YWwgZGV2aWNlICovCiB2b2lkIGRyYmRfc2V0X215X2NhcGFjaXR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzaXplKTsKQEAgLTE0OTAsNyAmIzQzOzE1MTQsNiBAQCB2b2lkIGRyYmRfc2V0X215X2NhcGFjaXR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzaXplKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmJkX3N1Ym1pdF9iaW9fbm9hY2N0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAogCQkJCQkgICAgIGludCBmYXVsdF90eXBlLCBzdHJ1Y3QgYmlvICpiaW8pCiB7Ci0JX19yZWxlYXNlKGxvY2FsKTsKIAlpZiAoIWJpby0mZ3Q7YmlfYmRldikgewogCQlkcmJkX2VycihkZXZpY2UsICYjMzQ7ZHJiZF9zdWJtaXRfYmlvX25vYWNjdDogYmlvLSZndDtiaV9iZGV2ID09IE5VTExcbiYjMzQ7KTsKIAkJYmlvLSZndDtiaV9zdGF0dXMgPSBCTEtfU1RTX0lPRVJSOwpAQCAtMTUxMiwzMiAmIzQzOzE1MzUsMzYgQEAgZXh0ZXJuIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqZHJiZF9wcm9jOwogaW50IGRyYmRfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpOwogCiAvKiBkcmJkX2FjdGxvZy5jICovCi1leHRlcm4gYm9vbCBkcmJkX2FsX2JlZ2luX2lvX3ByZXBhcmUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTsKLWV4dGVybiBpbnQgZHJiZF9hbF9iZWdpbl9pb19ub25ibG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpOwotZXh0ZXJuIHZvaWQgZHJiZF9hbF9iZWdpbl9pb19jb21taXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwotZXh0ZXJuIGJvb2wgZHJiZF9hbF9iZWdpbl9pb19mYXN0cGF0aChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpOwotZXh0ZXJuIHZvaWQgZHJiZF9hbF9iZWdpbl9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpOwotZXh0ZXJuIHZvaWQgZHJiZF9hbF9jb21wbGV0ZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpOwotZXh0ZXJuIHZvaWQgZHJiZF9yc19jb21wbGV0ZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9yKTsKLWV4dGVybiBpbnQgZHJiZF9yc19iZWdpbl9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9yKTsKLWV4dGVybiBpbnQgZHJiZF90cnlfcnNfYmVnaW5faW8oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IpOwotZXh0ZXJuIHZvaWQgZHJiZF9yc19jYW5jZWxfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKLWV4dGVybiBpbnQgZHJiZF9yc19kZWxfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKLWV4dGVybiB2b2lkIGRyYmRfcnNfZmFpbGVkX2lvKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwKLQkJc2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSk7Ci1leHRlcm4gdm9pZCBkcmJkX2FkdmFuY2VfcnNfbWFya3Moc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCB1bnNpZ25lZCBsb25nIHN0aWxsX3RvX2dvKTsKJiM0Mztib29sIGRyYmRfYWxfYmVnaW5faW9fcHJlcGFyZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKJiM0MzsJCQkgICAgICBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSk7CiYjNDM7aW50IGRyYmRfYWxfYmVnaW5faW9fbm9uYmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiYjNDM7CQkJICAgICAgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpOwomIzQzO3ZvaWQgZHJiZF9hbF9iZWdpbl9pb19jb21taXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO2Jvb2wgZHJiZF9hbF9iZWdpbl9pb19mYXN0cGF0aChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKJiM0MzsJCQkgICAgICAgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpOwomIzQzO3ZvaWQgZHJiZF9hbF9iZWdpbl9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpOwomIzQzO3ZvaWQgZHJiZF9hbF9jb21wbGV0ZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpOwomIzQzO3ZvaWQgZHJiZF9yc19jb21wbGV0ZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9yKTsKJiM0MztpbnQgZHJiZF9yc19iZWdpbl9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9yKTsKJiM0MztpbnQgZHJiZF90cnlfcnNfYmVnaW5faW8oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IpOwomIzQzO3ZvaWQgZHJiZF9yc19jYW5jZWxfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKJiM0MztpbnQgZHJiZF9yc19kZWxfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKJiM0Mzt2b2lkIGRyYmRfcnNfZmFpbGVkX2lvKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc2VjdG9yX3Qgc2VjdG9yLAomIzQzOwkJICAgICAgIGludCBzaXplKTsKJiM0Mzt2b2lkIGRyYmRfYWR2YW5jZV9yc19tYXJrcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsCiYjNDM7CQkJICAgdW5zaWduZWQgbG9uZyBzdGlsbF90b19nbyk7CiAKIGVudW0gdXBkYXRlX3N5bmNfYml0c19tb2RlIHsgUkVDT1JEX1JTX0ZBSUxFRCwgU0VUX09VVF9PRl9TWU5DLCBTRVRfSU5fU1lOQyB9OwotZXh0ZXJuIGludCBfX2RyYmRfY2hhbmdlX3N5bmMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplLAotCQllbnVtIHVwZGF0ZV9zeW5jX2JpdHNfbW9kZSBtb2RlKTsKJiM0MztpbnQgX19kcmJkX2NoYW5nZV9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc2VjdG9yX3Qgc2VjdG9yLAomIzQzOwkJICAgICAgIGludCBzaXplLCBlbnVtIHVwZGF0ZV9zeW5jX2JpdHNfbW9kZSBtb2RlKTsKICNkZWZpbmUgZHJiZF9zZXRfaW5fc3luYyhwZWVyX2RldmljZSwgc2VjdG9yLCBzaXplKSBcCiAJX19kcmJkX2NoYW5nZV9zeW5jKHBlZXJfZGV2aWNlLCBzZWN0b3IsIHNpemUsIFNFVF9JTl9TWU5DKQogI2RlZmluZSBkcmJkX3NldF9vdXRfb2Zfc3luYyhwZWVyX2RldmljZSwgc2VjdG9yLCBzaXplKSBcCiAJX19kcmJkX2NoYW5nZV9zeW5jKHBlZXJfZGV2aWNlLCBzZWN0b3IsIHNpemUsIFNFVF9PVVRfT0ZfU1lOQykKICNkZWZpbmUgZHJiZF9yc19mYWlsZWRfaW8ocGVlcl9kZXZpY2UsIHNlY3Rvciwgc2l6ZSkgXAogCV9fZHJiZF9jaGFuZ2Vfc3luYyhwZWVyX2RldmljZSwgc2VjdG9yLCBzaXplLCBSRUNPUkRfUlNfRkFJTEVEKQotZXh0ZXJuIHZvaWQgZHJiZF9hbF9zaHJpbmsoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwotZXh0ZXJuIGludCBkcmJkX2FsX2luaXRpYWxpemUoc3RydWN0IGRyYmRfZGV2aWNlICosIHZvaWQgKik7CiYjNDM7dm9pZCBkcmJkX2FsX3NocmluayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7aW50IGRyYmRfYWxfaW5pdGlhbGl6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdm9pZCAqKTsKIAogLyogZHJiZF9ubC5jICovCiAvKiBzdGF0ZSBpbmZvIGJyb2FkY2FzdCAqLwpAQCAtMTU1NiwyOCAmIzQzOzE1ODMsMjAgQEAgc3RydWN0IHNpYl9pbmZvIHsKIH07CiB2b2lkIGRyYmRfYmNhc3RfZXZlbnQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IHN0cnVjdCBzaWJfaW5mbyAqc2liKTsKIAotZXh0ZXJuIGludCBub3RpZnlfcmVzb3VyY2Vfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKiwKLQkJCQkgIHVuc2lnbmVkIGludCwKLQkJCQkgIHN0cnVjdCBkcmJkX3Jlc291cmNlICosCi0JCQkJICBzdHJ1Y3QgcmVzb3VyY2VfaW5mbyAqLAotCQkJCSAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTsKLWV4dGVybiBpbnQgbm90aWZ5X2RldmljZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLAotCQkJCXVuc2lnbmVkIGludCwKLQkJCQlzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwKLQkJCQlzdHJ1Y3QgZGV2aWNlX2luZm8gKiwKLQkJCQllbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpOwotZXh0ZXJuIGludCBub3RpZnlfY29ubmVjdGlvbl9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLAotCQkJCSAgICB1bnNpZ25lZCBpbnQsCi0JCQkJICAgIHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwKLQkJCQkgICAgc3RydWN0IGNvbm5lY3Rpb25faW5mbyAqLAotCQkJCSAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpOwotZXh0ZXJuIGludCBub3RpZnlfcGVlcl9kZXZpY2Vfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKiwKLQkJCQkgICAgIHVuc2lnbmVkIGludCwKLQkJCQkgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosCi0JCQkJICAgICBzdHJ1Y3QgcGVlcl9kZXZpY2VfaW5mbyAqLAotCQkJCSAgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTsKLWV4dGVybiB2b2lkIG5vdGlmeV9oZWxwZXIoZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlLCBzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwKLQkJCSAgc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBjb25zdCBjaGFyICosIGludCk7CiYjNDM7aW50IG5vdGlmeV9yZXNvdXJjZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsCiYjNDM7CQkJICBzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqLCBzdHJ1Y3QgcmVzb3VyY2VfaW5mbyAqLAomIzQzOwkJCSAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTsKJiM0MztpbnQgbm90aWZ5X2RldmljZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBkcmJkX2RldmljZSAqLAomIzQzOwkJCXN0cnVjdCBkZXZpY2VfaW5mbyAqLCBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpOwomIzQzO2ludCBub3RpZnlfY29ubmVjdGlvbl9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsCiYjNDM7CQkJICAgIHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwgc3RydWN0IGNvbm5lY3Rpb25faW5mbyAqLAomIzQzOwkJCSAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpOwomIzQzO2ludCBub3RpZnlfcGVlcl9kZXZpY2Vfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKiwgdW5zaWduZWQgaW50LAomIzQzOwkJCSAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwKJiM0MzsJCQkgICAgIHN0cnVjdCBwZWVyX2RldmljZV9pbmZvICosCiYjNDM7CQkJICAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpOwomIzQzO3ZvaWQgbm90aWZ5X2hlbHBlcihlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUsIHN0cnVjdCBkcmJkX2RldmljZSAqLAomIzQzOwkJICAgc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBjb25zdCBjaGFyICosIGludCk7CiAKIC8qCiAgKiBpbmxpbmUgaGVscGVyIGZ1bmN0aW9ucwpAQCAtMTgyMiw3ICYjNDM7MTg0MSw3IEBAIGRyYmRfZGV2aWNlX3Bvc3Rfd29yayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IHdvcmtfYml0KQogCX0KIH0KIAotZXh0ZXJuIHZvaWQgZHJiZF9mbHVzaF93b3JrcXVldWUoc3RydWN0IGRyYmRfd29ya19xdWV1ZSAqd29ya19xdWV1ZSk7CiYjNDM7dm9pZCBkcmJkX2ZsdXNoX3dvcmtxdWV1ZShzdHJ1Y3QgZHJiZF93b3JrX3F1ZXVlICp3b3JrX3F1ZXVlKTsKIAogLyogVG8gZ2V0IHRoZSBhY2tfcmVjZWl2ZXIgb3V0IG9mIHRoZSBibG9ja2luZyBuZXR3b3JrIHN0YWNrLAogICogc28gaXQgY2FuIGNoYW5nZSBpdHMgc2tfcmN2dGltZW8gZnJvbSBpZGxlLSB0byBwaW5nLXRpbWVvdXQsCkBAIC0xODQxLDE5ICYjNDM7MTg2MCwyNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVxdWVzdF9waW5nKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pCiAJd2FrZV9hY2tfcmVjZWl2ZXIoY29ubmVjdGlvbik7CiB9CiAKLWV4dGVybiB2b2lkICpjb25uX3ByZXBhcmVfY29tbWFuZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHN0cnVjdCBkcmJkX3NvY2tldCAqKTsKLWV4dGVybiB2b2lkICpkcmJkX3ByZXBhcmVfY29tbWFuZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKik7Ci1leHRlcm4gaW50IGNvbm5fc2VuZF9jb21tYW5kKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwgc3RydWN0IGRyYmRfc29ja2V0ICosCi0JCQkgICAgIGVudW0gZHJiZF9wYWNrZXQsIHVuc2lnbmVkIGludCwgdm9pZCAqLAotCQkJICAgICB1bnNpZ25lZCBpbnQpOwotZXh0ZXJuIGludCBkcmJkX3NlbmRfY29tbWFuZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKiwKLQkJCSAgICAgZW51bSBkcmJkX3BhY2tldCwgdW5zaWduZWQgaW50LCB2b2lkICosCi0JCQkgICAgIHVuc2lnbmVkIGludCk7Ci0KLWV4dGVybiBpbnQgZHJiZF9zZW5kX3Bpbmcoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7Ci1leHRlcm4gaW50IGRyYmRfc2VuZF9waW5nX2FjayhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTsKLWV4dGVybiBpbnQgZHJiZF9zZW5kX3N0YXRlX3JlcShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLCB1bmlvbiBkcmJkX3N0YXRlKTsKLWV4dGVybiBpbnQgY29ubl9zZW5kX3N0YXRlX3JlcShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHVuaW9uIGRyYmRfc3RhdGUsIHVuaW9uIGRyYmRfc3RhdGUpOwomIzQzO3ZvaWQgKmNvbm5fcHJlcGFyZV9jb21tYW5kKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sCiYjNDM7CQkJICAgc3RydWN0IGRyYmRfc29ja2V0ICpzb2NrKQomIzQzOwlfX2NvbmRfYWNxdWlyZXModHJ1ZSwgJmFtcDtzb2NrLSZndDttdXRleCk7CiYjNDM7dm9pZCAqZHJiZF9wcmVwYXJlX2NvbW1hbmQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKnNvY2spCiYjNDM7CV9fY29uZF9hY3F1aXJlcyh0cnVlLCAmYW1wO3NvY2stJmd0O211dGV4KTsKJiM0MztpbnQgY29ubl9zZW5kX2NvbW1hbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwKJiM0MzsJCSAgICAgIHN0cnVjdCBkcmJkX3NvY2tldCAqc29jaywKJiM0MzsJCSAgICAgIGVudW0gZHJiZF9wYWNrZXQgY21kLCB1bnNpZ25lZCBpbnQgaGVhZGVyX3NpemUsCiYjNDM7CQkgICAgICB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSkKJiM0MzsJX19yZWxlYXNlcygmYW1wO3NvY2stJmd0O211dGV4KTsKJiM0MztpbnQgZHJiZF9zZW5kX2NvbW1hbmQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKnNvY2ssCiYjNDM7CQkgICAgICBlbnVtIGRyYmRfcGFja2V0IGNtZCwgdW5zaWduZWQgaW50IGhlYWRlcl9zaXplLAomIzQzOwkJICAgICAgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IHNpemUpCiYjNDM7CV9fcmVsZWFzZXMoJmFtcDtzb2NrLSZndDttdXRleCk7CiYjNDM7CiYjNDM7aW50IGRyYmRfc2VuZF9waW5nKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pOwomIzQzO2ludCBkcmJkX3NlbmRfcGluZ19hY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7CiYjNDM7aW50IGRyYmRfc2VuZF9zdGF0ZV9yZXEoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSwKJiM0MzsJCQl1bmlvbiBkcmJkX3N0YXRlKTsKJiM0MztpbnQgY29ubl9zZW5kX3N0YXRlX3JlcShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHVuaW9uIGRyYmRfc3RhdGUsCiYjNDM7CQkJdW5pb24gZHJiZF9zdGF0ZSk7CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmJkX3RocmVhZF9zdG9wKHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKQogewpAQCAtMTk3Niw5ICYjNDM7MjAwMyw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc19zeW5jX3N0YXRlKGVudW0gZHJiZF9jb25ucyBjb25uZWN0aW9uX3N0YXRlKQogICoKICAqIFlvdSBoYXZlIHRvIGNhbGwgcHV0X2xkZXYoKSB3aGVuIGZpbmlzaGVkIHdvcmtpbmcgd2l0aCBkZXZpY2UtJmd0O2xkZXYuCiAgKi8KLSNkZWZpbmUgZ2V0X2xkZXZfaWZfc3RhdGUoX2RldmljZSwgX21pbl9zdGF0ZSkJCQkJXAotCShfZ2V0X2xkZXZfaWZfc3RhdGUoKF9kZXZpY2UpLCAoX21pbl9zdGF0ZSkpID8JCQlcCi0JICh7IF9fYWNxdWlyZSh4KTsgdHJ1ZTsgfSkgOiBmYWxzZSkKICNkZWZpbmUgZ2V0X2xkZXYoX2RldmljZSkgZ2V0X2xkZXZfaWZfc3RhdGUoX2RldmljZSwgRF9JTkNPTlNJU1RFTlQpCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfbGRldihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkKQEAgLTE5OTMsNyAmIzQzOzIwMTcsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHV0X2xkZXYoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpCiAJLyogVGhpcyBtYXkgYmUgY2FsbGVkIGZyb20gc29tZSBlbmRpbyBoYW5kbGVyLAogCSAqIHNvIHdlIG11c3Qgbm90IHNsZWVwIGhlcmUuICovCiAKLQlfX3JlbGVhc2UobG9jYWwpOwogCURfQVNTRVJUKGRldmljZSwgaSAmZ3Q7PSAwKTsKIAlpZiAoaSA9PSAwKSB7CiAJCWlmIChkaXNrX3N0YXRlID09IERfRElTS0xFU1MpCkBAIC0yMDA3LDggJiM0MzsyMDMwLDggQEAgc3RhdGljIGlubGluZSB2b2lkIHB1dF9sZGV2KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKQogCX0KIH0KIAotI2lmbmRlZiBfX0NIRUNLRVJfXwotc3RhdGljIGlubGluZSBpbnQgX2dldF9sZGV2X2lmX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBlbnVtIGRyYmRfZGlza19zdGF0ZSBtaW5zKQomIzQzO3N0YXRpYyBpbmxpbmUgaW50IGdldF9sZGV2X2lmX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAomIzQzOwkJCQkgICAgZW51bSBkcmJkX2Rpc2tfc3RhdGUgbWlucykKIHsKIAlpbnQgaW9fYWxsb3dlZDsKIApAQCAtMjAyMiw5ICYjNDM7MjA0NSw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IF9nZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Rpc2tfCiAJCXB1dF9sZGV2KGRldmljZSk7CiAJcmV0dXJuIGlvX2FsbG93ZWQ7CiB9Ci0jZWxzZQotZXh0ZXJuIGludCBfZ2V0X2xkZXZfaWZfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGVudW0gZHJiZF9kaXNrX3N0YXRlIG1pbnMpOwotI2VuZGlmCiAKIC8qIHRoaXMgdGhyb3R0bGVzIG9uLXRoZS1mbHkgYXBwbGljYXRpb24gcmVxdWVzdHMKICAqIGFjY29yZGluZyB0byBtYXhfYnVmZmVycyBzZXR0aW5nczsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludGVydmFsLmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9pbnRlcnZhbC5oCmluZGV4IDVkMzIxM2I4MWVlZGU3Li4yNTVlOWQwNzFhZTFkNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50ZXJ2YWwuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9pbnRlcnZhbC5oCkBAIC0yOSwxMyAmIzQzOzI5LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBkcmJkX2ludGVydmFsX2VtcHR5KHN0cnVjdCBkcmJkX2ludGVydmFsICppKQogCXJldHVybiBSQl9FTVBUWV9OT0RFKCZhbXA7aS0mZ3Q7cmIpOwogfQogCi1leHRlcm4gYm9vbCBkcmJkX2luc2VydF9pbnRlcnZhbChzdHJ1Y3QgcmJfcm9vdCAqLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqKTsKLWV4dGVybiBib29sIGRyYmRfY29udGFpbnNfaW50ZXJ2YWwoc3RydWN0IHJiX3Jvb3QgKiwgc2VjdG9yX3QsCi0JCQkJICAgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7Ci1leHRlcm4gdm9pZCBkcmJkX3JlbW92ZV9pbnRlcnZhbChzdHJ1Y3QgcmJfcm9vdCAqLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqKTsKLWV4dGVybiBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqZHJiZF9maW5kX292ZXJsYXAoc3RydWN0IHJiX3Jvb3QgKiwgc2VjdG9yX3QsCiYjNDM7Ym9vbCBkcmJkX2luc2VydF9pbnRlcnZhbChzdHJ1Y3QgcmJfcm9vdCAqLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqKTsKJiM0Mztib29sIGRyYmRfY29udGFpbnNfaW50ZXJ2YWwoc3RydWN0IHJiX3Jvb3QgKiwgc2VjdG9yX3QsIHN0cnVjdCBkcmJkX2ludGVydmFsICopOwomIzQzO3ZvaWQgZHJiZF9yZW1vdmVfaW50ZXJ2YWwoc3RydWN0IHJiX3Jvb3QgKiwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7CiYjNDM7c3RydWN0IGRyYmRfaW50ZXJ2YWwgKmRyYmRfZmluZF9vdmVybGFwKHN0cnVjdCByYl9yb290ICosIHNlY3Rvcl90LAogCQkJCQl1bnNpZ25lZCBpbnQpOwotZXh0ZXJuIHN0cnVjdCBkcmJkX2ludGVydmFsICpkcmJkX25leHRfb3ZlcmxhcChzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqLCBzZWN0b3JfdCwKJiM0MztzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqZHJiZF9uZXh0X292ZXJsYXAoc3RydWN0IGRyYmRfaW50ZXJ2YWwgKiwgc2VjdG9yX3QsCiAJCQkJCXVuc2lnbmVkIGludCk7CiAKICNkZWZpbmUgZHJiZF9mb3JfZWFjaF9vdmVybGFwKGksIHJvb3QsIHNlY3Rvciwgc2l6ZSkJCVwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYwppbmRleCBhMmE4NDFjODkyMDExMS4uNmYzYzA0MjUyYjVkZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmMKQEAgLTEyOCwyNSAmIzQzOzEyOCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgZHJiZF9vcHMgPSB7CiAJLnJlbGVhc2UJPSBkcmJkX3JlbGVhc2UsCiB9OwogCi0jaWZkZWYgX19DSEVDS0VSX18KLS8qIFdoZW4gY2hlY2tpbmcgd2l0aCBzcGFyc2UsIGFuZCB0aGlzIGlzIGFuIGlubGluZSBmdW5jdGlvbiwgc3BhcnNlIHdpbGwKLSAgIGdpdmUgdG9ucyBvZiBmYWxzZSBwb3NpdGl2ZXMuIFdoZW4gdGhpcyBpcyBhIHJlYWwgZnVuY3Rpb25zIHNwYXJzZSB3b3Jrcy4KLSAqLwotaW50IF9nZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Rpc2tfc3RhdGUgbWlucykKLXsKLQlpbnQgaW9fYWxsb3dlZDsKLQotCWF0b21pY19pbmMoJmFtcDtkZXZpY2UtJmd0O2xvY2FsX2NudCk7Ci0JaW9fYWxsb3dlZCA9IChkZXZpY2UtJmd0O3N0YXRlLmRpc2sgJmd0Oz0gbWlucyk7Ci0JaWYgKCFpb19hbGxvd2VkKSB7Ci0JCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZhbXA7ZGV2aWNlLSZndDtsb2NhbF9jbnQpKQotCQkJd2FrZV91cCgmYW1wO2RldmljZS0mZ3Q7bWlzY193YWl0KTsKLQl9Ci0JcmV0dXJuIGlvX2FsbG93ZWQ7Ci19Ci0KLSNlbmRpZgotCiAvKioKICAqIHRsX3JlbGVhc2UoKSAtIG1hcmsgYXMgQkFSUklFUl9BQ0tFRCBhbGwgcmVxdWVzdHMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgdHJhbnNmZXIgbG9nIGVwb2NoCiAgKiBAY29ubmVjdGlvbjoJRFJCRCBjb25uZWN0aW9uLgpAQCAtMzI4Miw3ICYjNDM7MzI2Myw3IEBAIHZvaWQgZHJiZF9tZF9tYXJrX2RpcnR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKQogCQltb2RfdGltZXIoJmFtcDtkZXZpY2UtJmd0O21kX3N5bmNfdGltZXIsIGppZmZpZXMgJiM0MzsgNSpIWik7CiB9CiAKLXZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpCiYjNDM7dm9pZCBkcmJkX3V1aWRfbW92ZV9oaXN0b3J5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKQogewogCWludCBpOwogCkBAIC0zMjkwLDcgJiM0MzszMjcxLDcgQEAgdm9pZCBkcmJkX3V1aWRfbW92ZV9oaXN0b3J5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKIAkJZGV2aWNlLSZndDtsZGV2LSZndDttZC51dWlkW2kmIzQzOzFdID0gZGV2aWNlLSZndDtsZGV2LSZndDttZC51dWlkW2ldOwogfQogCi12b2lkIF9fZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpCiYjNDM7dm9pZCBfX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpCiB7CiAJaWYgKGlkeCA9PSBVSV9DVVJSRU5UKSB7CiAJCWlmIChkZXZpY2UtJmd0O3N0YXRlLnJvbGUgPT0gUl9QUklNQVJZKQpAQCAtMzMwNSw3ICYjNDM7MzI4Niw3IEBAIHZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsCiAJZHJiZF9tZF9tYXJrX2RpcnR5KGRldmljZSk7CiB9CiAKLXZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxvY2FsKQomIzQzO3ZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2RldmljZS0mZ3Q7bGRldi0mZ3Q7bWQudXVpZF9sb2NrLCBmbGFncyk7CkBAIC0zMzEzLDcgJiM0MzszMjk0LDcgQEAgdm9pZCBfZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG8KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7ZGV2aWNlLSZndDtsZGV2LSZndDttZC51dWlkX2xvY2ssIGZsYWdzKTsKIH0KIAotdm9pZCBkcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCkKJiM0Mzt2b2lkIGRyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2RldmljZS0mZ3Q7bGRldi0mZ3Q7bWQudXVpZF9sb2NrLCBmbGFncyk7CkBAIC0zMzMyLDcgJiM0MzszMzEzLDcgQEAgdm9pZCBkcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2MKICAqIENyZWF0ZXMgYSBuZXcgY3VycmVudCBVVUlELCBhbmQgcm90YXRlcyB0aGUgb2xkIGN1cnJlbnQgVVVJRCBpbnRvCiAgKiB0aGUgYml0bWFwIHNsb3QuIENhdXNlcyBhbiBpbmNyZW1lbnRhbCByZXN5bmMgdXBvbiBuZXh0IGNvbm5lY3QuCiAgKi8KLXZvaWQgZHJiZF91dWlkX25ld19jdXJyZW50KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKJiM0Mzt2b2lkIGRyYmRfdXVpZF9uZXdfY3VycmVudChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkKIHsKIAl1NjQgdmFsOwogCXVuc2lnbmVkIGxvbmcgbG9uZyBibV91dWlkOwpAQCAtMzM1NCw3ICYjNDM7MzMzNSw3IEBAIHZvaWQgZHJiZF91dWlkX25ld19jdXJyZW50KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKIAlkcmJkX21kX3N5bmMoZGV2aWNlKTsKIH0KIAotdm9pZCBkcmJkX3V1aWRfc2V0X2JtKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCkKJiM0Mzt2b2lkIGRyYmRfdXVpZF9zZXRfYm0oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHU2NCB2YWwpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2RldmljZS0mZ3Q7bGRldi0mZ3Q7bWQudXVpZF9sb2NrLCBmbGFncyk7CkBAIC0zMzg3LDcgJiM0MzszMzY4LDcgQEAgdm9pZCBkcmJkX3V1aWRfc2V0X2JtKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCkKICAqIFNldHMgYWxsIGJpdHMgaW4gdGhlIGJpdG1hcCBhbmQgd3JpdGVzIHRoZSB3aG9sZSBiaXRtYXAgdG8gc3RhYmxlIHN0b3JhZ2UuCiAgKi8KIGludCBkcmJkX2JtaW9fc2V0X25fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCi0JCQkgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpCiYjNDM7CQkJICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpCiAKIHsKIAlpbnQgcnYgPSAtRUlPOwpAQCAtMzQxNCw3ICYjNDM7MzM5NSw3IEBAIGludCBkcmJkX2JtaW9fc2V0X25fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiAgKiBDbGVhcnMgYWxsIGJpdHMgaW4gdGhlIGJpdG1hcCBhbmQgd3JpdGVzIHRoZSB3aG9sZSBiaXRtYXAgdG8gc3RhYmxlIHN0b3JhZ2UuCiAgKi8KIGludCBkcmJkX2JtaW9fY2xlYXJfbl93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJCSAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKJiM0MzsJCQkgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKQogCiB7CiAJZHJiZF9yZXN1bWVfYWwoZGV2aWNlKTsKQEAgLTM1NDEsNyAmIzQzOzM1MjIsNyBAQCBpbnQgZHJiZF9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiAJcmV0dXJuIHJ2OwogfQogCi12b2lkIGRyYmRfbWRfc2V0X2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFnKSBfX211c3RfaG9sZChsb2NhbCkKJiM0Mzt2b2lkIGRyYmRfbWRfc2V0X2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFnKQogewogCWlmICgoZGV2aWNlLSZndDtsZGV2LSZndDttZC5mbGFncyAmYW1wOyBmbGFnKSAhPSBmbGFnKSB7CiAJCWRyYmRfbWRfbWFya19kaXJ0eShkZXZpY2UpOwpAQCAtMzU0OSw3ICYjNDM7MzUzMCw3IEBAIHZvaWQgZHJiZF9tZF9zZXRfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWcpIF9fbXVzdF9ob2xkKGxvY2FsKQogCX0KIH0KIAotdm9pZCBkcmJkX21kX2NsZWFyX2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFnKSBfX211c3RfaG9sZChsb2NhbCkKJiM0Mzt2b2lkIGRyYmRfbWRfY2xlYXJfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWcpCiB7CiAJaWYgKChkZXZpY2UtJmd0O2xkZXYtJmd0O21kLmZsYWdzICZhbXA7IGZsYWcpICE9IDApIHsKIAkJZHJiZF9tZF9tYXJrX2RpcnR5KGRldmljZSk7CkBAIC0zNjc4LDYgJiM0MzszNjU5LDcgQEAgaW50IGRyYmRfd2FpdF9taXNjKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSkKIH0KIAogdm9pZCBsb2NrX2FsbF9yZXNvdXJjZXModm9pZCkKJiM0MzsJX19jb250ZXh0X3Vuc2FmZShsb2NraW5nIGxvb3ApCiB7CiAJc3RydWN0IGRyYmRfcmVzb3VyY2UgKnJlc291cmNlOwogCWludCBfX21heWJlX3VudXNlZCBpID0gMDsKQEAgLTM2ODksNiAmIzQzOzM2NzEsNyBAQCB2b2lkIGxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKQogfQogCiB2b2lkIHVubG9ja19hbGxfcmVzb3VyY2VzKHZvaWQpCiYjNDM7CV9fY29udGV4dF91bnNhZmUobG9ja2luZyBsb29wKQogewogCXN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbmwuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMKaW5kZXggZjlmZmNkNjc2MDdiNTUuLjc0OGIxZDA5M2YyZTY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMKQEAgLTk2OCw4ICYjNDM7OTY4LDkgQEAgdm9pZCBkcmJkX3Jlc3VtZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkKICAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSByZXR1cm4gdmFsdWVzIGluZGljYXRlIGVycm9ycy4KICAqIFlvdSBzaG91bGQgY2FsbCBkcmJkX21kX3N5bmMoKSBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCiAgKi8KLWVudW0gZGV0ZXJtaW5lX2Rldl9zaXplCi1kcmJkX2RldGVybWluZV9kZXZfc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkZHNfZmxhZ3MgZmxhZ3MsIHN0cnVjdCByZXNpemVfcGFybXMgKnJzKSBfX211c3RfaG9sZChsb2NhbCkKJiM0MztlbnVtIGRldGVybWluZV9kZXZfc2l6ZSBkcmJkX2RldGVybWluZV9kZXZfc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKJiM0MzsJCQkJCQllbnVtIGRkc19mbGFncyBmbGFncywKJiM0MzsJCQkJCQlzdHJ1Y3QgcmVzaXplX3Bhcm1zICpycykKIHsKIAlzdHJ1Y3QgbWRfb2Zmc2V0c19hbmRfc2l6ZXMgewogCQl1NjQgbGFzdF9hZ3JlZWRfc2VjdDsKQEAgLTMwOTcsNyAmIzQzOzMwOTgsNyBAQCBzdGF0aWMgaW50IGRyYmRfYWRtX3NpbXBsZV9yZXF1ZXN0X3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKgogfQogCiBzdGF0aWMgaW50IGRyYmRfYm1pb19zZXRfc3VzcF9hbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKJiM0MzsJCQkJIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkKIHsKIAlpbnQgcnY7CiAKQEAgLTM1MjgsMTUgJiM0MzszNTI5LDU2IEBAIGludCBkcmJkX2FkbV9kdW1wX2Nvbm5lY3Rpb25zX2RvbmUoc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKQogCiBlbnVtIHsgU0lOR0xFX1JFU09VUkNFLCBJVEVSQVRFX1JFU09VUkNFUyB9OwogCiYjNDM7c3RhdGljIGludCBkcmJkX25sX3B1dF9kdW1wX2Nvbm5lY3Rpb25zX3Jlc3VsdCgKJiM0MzsJCXN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYiwKJiM0MzsJCXN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSwKJiM0MzsJCXN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGVudW0gZHJiZF9yZXRfY29kZSByZXRjb2RlKQomIzQzO3sKJiM0MzsJc3RydWN0IGRyYmRfZ2VubG1zZ2hkciAqZGg7CiYjNDM7CiYjNDM7CWRoID0gZ2VubG1zZ19wdXQoc2tiLCBORVRMSU5LX0NCKGNiLSZndDtza2IpLnBvcnRpZCwgY2ItJmd0O25saC0mZ3Q7bmxtc2dfc2VxLAomIzQzOwkJCSAmYW1wO2RyYmRfbmxfZmFtaWx5LCBOTE1fRl9NVUxUSSwKJiM0MzsJCQkgRFJCRF9BRE1fR0VUX0NPTk5FQ1RJT05TKTsKJiM0MzsJaWYgKCFkaCkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwlkaC0mZ3Q7cmV0X2NvZGUgPSByZXRjb2RlOwomIzQzOwlkaC0mZ3Q7bWlub3IgPSAtMVU7CiYjNDM7CWlmIChyZXRjb2RlID09IE5PX0VSUk9SKSB7CiYjNDM7CQlzdHJ1Y3QgY29ubmVjdGlvbl9zdGF0aXN0aWNzIGNvbm5lY3Rpb25fc3RhdGlzdGljczsKJiM0MzsJCXN0cnVjdCBjb25uZWN0aW9uX2luZm8gY29ubmVjdGlvbl9pbmZvOwomIzQzOwkJc3RydWN0IG5ldF9jb25mICpuZXRfY29uZjsKJiM0MzsJCWludCBlcnI7CiYjNDM7CiYjNDM7CQllcnIgPSBubGFfcHV0X2RyYmRfY2ZnX2NvbnRleHQoc2tiLCByZXNvdXJjZSwgY29ubmVjdGlvbiwgTlVMTCk7CiYjNDM7CQlpZiAoZXJyKQomIzQzOwkJCXJldHVybiBlcnI7CiYjNDM7CQluZXRfY29uZiA9IHJjdV9kZXJlZmVyZW5jZShjb25uZWN0aW9uLSZndDtuZXRfY29uZik7CiYjNDM7CQlpZiAobmV0X2NvbmYpIHsKJiM0MzsJCQllcnIgPSBuZXRfY29uZl90b19za2Ioc2tiLCBuZXRfY29uZik7CiYjNDM7CQkJaWYgKGVycikKJiM0MzsJCQkJcmV0dXJuIGVycjsKJiM0MzsJCX0KJiM0MzsJCWNvbm5lY3Rpb25fdG9faW5mbygmYW1wO2Nvbm5lY3Rpb25faW5mbywgY29ubmVjdGlvbik7CiYjNDM7CQllcnIgPSBjb25uZWN0aW9uX2luZm9fdG9fc2tiKHNrYiwgJmFtcDtjb25uZWN0aW9uX2luZm8pOwomIzQzOwkJaWYgKGVycikKJiM0MzsJCQlyZXR1cm4gZXJyOwomIzQzOwkJY29ubmVjdGlvbl9zdGF0aXN0aWNzLmNvbm5fY29uZ2VzdGVkID0KJiM0MzsJCQl0ZXN0X2JpdChORVRfQ09OR0VTVEVELCAmYW1wO2Nvbm5lY3Rpb24tJmd0O2ZsYWdzKTsKJiM0MzsJCWVyciA9IGNvbm5lY3Rpb25fc3RhdGlzdGljc190b19za2Ioc2tiLCAmYW1wO2Nvbm5lY3Rpb25fc3RhdGlzdGljcyk7CiYjNDM7CQlpZiAoZXJyKQomIzQzOwkJCXJldHVybiBlcnI7CiYjNDM7CQljYi0mZ3Q7YXJnc1syXSA9IChsb25nKWNvbm5lY3Rpb247CiYjNDM7CX0KJiM0MzsJZ2VubG1zZ19lbmQoc2tiLCBkaCk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIGludCBkcmJkX25sX2dldF9jb25uZWN0aW9uc19kdW1waXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKQogewogCXN0cnVjdCBubGF0dHIgKnJlc291cmNlX2ZpbHRlcjsKIAlzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UgPSBOVUxMLCAqbmV4dF9yZXNvdXJjZTsKIAlzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uOwotCWludCBlcnIgPSAwLCByZXRjb2RlOwotCXN0cnVjdCBkcmJkX2dlbmxtc2doZHIgKmRoOwotCXN0cnVjdCBjb25uZWN0aW9uX2luZm8gY29ubmVjdGlvbl9pbmZvOwotCXN0cnVjdCBjb25uZWN0aW9uX3N0YXRpc3RpY3MgY29ubmVjdGlvbl9zdGF0aXN0aWNzOwomIzQzOwlpbnQgZXJyID0gMDsKIAogCXJjdV9yZWFkX2xvY2soKTsKIAlyZXNvdXJjZSA9IChzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqKWNiLSZndDthcmdzWzBdOwpAQCAtMzU0NCwxNyAmIzQzOzM1ODYsMjMgQEAgaW50IGRyYmRfbmxfZ2V0X2Nvbm5lY3Rpb25zX2R1bXBpdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjawogCQlyZXNvdXJjZV9maWx0ZXIgPSBmaW5kX2NmZ19jb250ZXh0X2F0dHIoY2ItJmd0O25saCwKIAkJCQlEUkJEX0FfRFJCRF9DRkdfQ09OVEVYVF9DVFhfUkVTT1VSQ0VfTkFNRSk7CiAJCWlmIChyZXNvdXJjZV9maWx0ZXIpIHsKLQkJCXJldGNvZGUgPSBFUlJfUkVTX05PVF9LTk9XTjsKIAkJCXJlc291cmNlID0gZHJiZF9maW5kX3Jlc291cmNlKG5sYV9kYXRhKHJlc291cmNlX2ZpbHRlcikpOwotCQkJaWYgKCFyZXNvdXJjZSkKLQkJCQlnb3RvIHB1dF9yZXN1bHQ7CiYjNDM7CQkJaWYgKCFyZXNvdXJjZSkgewomIzQzOwkJCQllcnIgPSBkcmJkX25sX3B1dF9kdW1wX2Nvbm5lY3Rpb25zX3Jlc3VsdCgKJiM0MzsJCQkJCXNrYiwgY2IsIHJlc291cmNlLCBOVUxMLAomIzQzOwkJCQkJRVJSX1JFU19OT1RfS05PV04pOwomIzQzOwkJCQlyY3VfcmVhZF91bmxvY2soKTsKJiM0MzsJCQkJZ290byByZXQ7CiYjNDM7CQkJfQogCQkJY2ItJmd0O2FyZ3NbMF0gPSAobG9uZylyZXNvdXJjZTsKIAkJCWNiLSZndDthcmdzWzFdID0gU0lOR0xFX1JFU09VUkNFOwogCQl9CiAJfQogCWlmICghcmVzb3VyY2UpIHsKLQkJaWYgKGxpc3RfZW1wdHkoJmFtcDtkcmJkX3Jlc291cmNlcykpCi0JCQlnb3RvIG91dDsKJiM0MzsJCWlmIChsaXN0X2VtcHR5KCZhbXA7ZHJiZF9yZXNvdXJjZXMpKSB7CiYjNDM7CQkJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CQkJZ290byByZXQ7CiYjNDM7CQl9CiAJCXJlc291cmNlID0gbGlzdF9maXJzdF9lbnRyeSgmYW1wO2RyYmRfcmVzb3VyY2VzLCBzdHJ1Y3QgZHJiZF9yZXNvdXJjZSwgcmVzb3VyY2VzKTsKIAkJa3JlZl9nZXQoJmFtcDtyZXNvdXJjZS0mZ3Q7a3JlZik7CiAJCWNiLSZndDthcmdzWzBdID0gKGxvbmcpcmVzb3VyY2U7CkBAIC0zNTc4LDggJiM0MzszNjI2LDkgQEAgaW50IGRyYmRfbmxfZ2V0X2Nvbm5lY3Rpb25zX2R1bXBpdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjawogCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGNvbm5lY3Rpb24sICZhbXA7cmVzb3VyY2UtJmd0O2Nvbm5lY3Rpb25zLCBjb25uZWN0aW9ucykgewogCQlpZiAoIWhhc19uZXRfY29uZihjb25uZWN0aW9uKSkKIAkJCWNvbnRpbnVlOwotCQlyZXRjb2RlID0gTk9fRVJST1I7Ci0JCWdvdG8gcHV0X3Jlc3VsdDsgIC8qIG9ubHkgb25lIGl0ZXJhdGlvbiAqLwomIzQzOwkJZXJyID0gZHJiZF9ubF9wdXRfZHVtcF9jb25uZWN0aW9uc19yZXN1bHQoc2tiLCBjYiwgcmVzb3VyY2UsCiYjNDM7CQkJCQkJCSAgY29ubmVjdGlvbiwgTk9fRVJST1IpOwomIzQzOwkJZ290byBvdXQ7IC8qIG9ubHkgb25lIGl0ZXJhdGlvbiAqLwogCX0KIAogbm9fbW9yZV9jb25uZWN0aW9uczoKQEAgLTM2MDIsNDYgJiM0MzszNjUxLDE0IEBAIGludCBkcmJkX25sX2dldF9jb25uZWN0aW9uc19kdW1waXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sKIAkJY2ItJmd0O2FyZ3NbMl0gPSAwOwogCQlnb3RvIG5leHRfcmVzb3VyY2U7CiAJfQotCWdvdG8gb3V0OyAgLyogbm8gbW9yZSByZXNvdXJjZXMgKi8KIAotcHV0X3Jlc3VsdDoKLQlkaCA9IGdlbmxtc2dfcHV0KHNrYiwgTkVUTElOS19DQihjYi0mZ3Q7c2tiKS5wb3J0aWQsCi0JCQljYi0mZ3Q7bmxoLSZndDtubG1zZ19zZXEsICZhbXA7ZHJiZF9ubF9mYW1pbHksCi0JCQlOTE1fRl9NVUxUSSwgRFJCRF9BRE1fR0VUX0NPTk5FQ1RJT05TKTsKLQllcnIgPSAtRU5PTUVNOwotCWlmICghZGgpCi0JCWdvdG8gb3V0OwotCWRoLSZndDtyZXRfY29kZSA9IHJldGNvZGU7Ci0JZGgtJmd0O21pbm9yID0gLTFVOwotCWlmIChyZXRjb2RlID09IE5PX0VSUk9SKSB7Ci0JCXN0cnVjdCBuZXRfY29uZiAqbmV0X2NvbmY7Ci0KLQkJZXJyID0gbmxhX3B1dF9kcmJkX2NmZ19jb250ZXh0KHNrYiwgcmVzb3VyY2UsIGNvbm5lY3Rpb24sIE5VTEwpOwotCQlpZiAoZXJyKQotCQkJZ290byBvdXQ7Ci0JCW5ldF9jb25mID0gcmN1X2RlcmVmZXJlbmNlKGNvbm5lY3Rpb24tJmd0O25ldF9jb25mKTsKLQkJaWYgKG5ldF9jb25mKSB7Ci0JCQllcnIgPSBuZXRfY29uZl90b19za2Ioc2tiLCBuZXRfY29uZik7Ci0JCQlpZiAoZXJyKQotCQkJCWdvdG8gb3V0OwotCQl9Ci0JCWNvbm5lY3Rpb25fdG9faW5mbygmYW1wO2Nvbm5lY3Rpb25faW5mbywgY29ubmVjdGlvbik7Ci0JCWVyciA9IGNvbm5lY3Rpb25faW5mb190b19za2Ioc2tiLCAmYW1wO2Nvbm5lY3Rpb25faW5mbyk7Ci0JCWlmIChlcnIpCi0JCQlnb3RvIG91dDsKLQkJY29ubmVjdGlvbl9zdGF0aXN0aWNzLmNvbm5fY29uZ2VzdGVkID0gdGVzdF9iaXQoTkVUX0NPTkdFU1RFRCwgJmFtcDtjb25uZWN0aW9uLSZndDtmbGFncyk7Ci0JCWVyciA9IGNvbm5lY3Rpb25fc3RhdGlzdGljc190b19za2Ioc2tiLCAmYW1wO2Nvbm5lY3Rpb25fc3RhdGlzdGljcyk7Ci0JCWlmIChlcnIpCi0JCQlnb3RvIG91dDsKLQkJY2ItJmd0O2FyZ3NbMl0gPSAobG9uZyljb25uZWN0aW9uOwotCX0KLQlnZW5sbXNnX2VuZChza2IsIGRoKTsKLQllcnIgPSAwOwomIzQzOwkvKiBubyBtb3JlIHJlc291cmNlcyAqLwogCiBvdXQ6CiAJcmN1X3JlYWRfdW5sb2NrKCk7Ci0JaWYgKHJlc291cmNlKQotCQltdXRleF91bmxvY2soJmFtcDtyZXNvdXJjZS0mZ3Q7Y29uZl91cGRhdGUpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtyZXNvdXJjZS0mZ3Q7Y29uZl91cGRhdGUpOwomIzQzOwomIzQzO3JldDoKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCXJldHVybiBza2ItJmd0O2xlbjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jCmluZGV4IDU4Yjk1YmY0YmRjYTZhLi5iNGEzNTBjZDAzYjA0YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jCkBAIC0xNzQsOCAmIzQzOzE3NCw5IEBAIFlvdSBtdXN0IG5vdCBoYXZlIHRoZSByZXFfbG9jazoKICAqIHdfc2FtZTogcGF5bG9hZF9zaXplID09IGxvZ2ljYWxfYmxvY2tfc2l6ZQogICogdHJpbTogcGF5bG9hZF9zaXplID09IDAgKi8KIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqCi1kcmJkX2FsbG9jX3BlZXJfcmVxKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgdTY0IGlkLCBzZWN0b3JfdCBzZWN0b3IsCi0JCSAgICB1bnNpZ25lZCBpbnQgcmVxdWVzdF9zaXplLCB1bnNpZ25lZCBpbnQgcGF5bG9hZF9zaXplLCBnZnBfdCBnZnBfbWFzaykgX19tdXN0X2hvbGQobG9jYWwpCiYjNDM7ZHJiZF9hbGxvY19wZWVyX3JlcShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHU2NCBpZCwKJiM0MzsJCSAgICBzZWN0b3JfdCBzZWN0b3IsIHVuc2lnbmVkIGludCByZXF1ZXN0X3NpemUsCiYjNDM7CQkgICAgdW5zaWduZWQgaW50IHBheWxvYWRfc2l6ZSwgZ2ZwX3QgZ2ZwX21hc2spCiB7CiAJc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBwZWVyX2RldmljZS0mZ3Q7ZGV2aWNlOwogCXN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXE7CkBAIC0yODcsNiAmIzQzOzI4OCw3IEBAIHN0YXRpYyBpbnQgZHJiZF9maW5pc2hfcGVlcl9yZXFzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKQogCiBzdGF0aWMgdm9pZCBfZHJiZF93YWl0X2VlX2xpc3RfZW1wdHkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiAJCQkJICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQomIzQzOwlfX211c3RfaG9sZCgmYW1wO2RldmljZS0mZ3Q7cmVzb3VyY2UtJmd0O3JlcV9sb2NrKQogewogCURFRklORV9XQUlUKHdhaXQpOwogCkBAIC04OTYsNiAmIzQzOzg5OCw4IEBAIHN0YXRpYyBpbnQgY29ubl9jb25uZWN0KHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pCiAJaWYgKGRyYmRfc2VuZF9wcm90b2NvbChjb25uZWN0aW9uKSA9PSAtRU9QTk9UU1VQUCkKIAkJcmV0dXJuIC0xOwogCiYjNDM7CS8qIGNvbnRleHRfdW5zYWZlKCkgYmVjYXVzZSBvZiB0d28gbG9ja2luZyBsb29wcyAqLwomIzQzOwljb250ZXh0X3Vuc2FmZSgKIAkvKiBQcmV2ZW50IGEgcmFjZSBiZXR3ZWVuIHJlc3luYy1oYW5kc2hha2UgYW5kCiAJICogYmVpbmcgcHJvbW90ZWQgdG8gUHJpbWFyeS4KIAkgKgpAQCAtOTEzLDYgJiM0Mzs5MTcsNyBAQCBzdGF0aWMgaW50IGNvbm5fY29ubmVjdChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKQogCiAJaWRyX2Zvcl9lYWNoX2VudHJ5KCZhbXA7Y29ubmVjdGlvbi0mZ3Q7cGVlcl9kZXZpY2VzLCBwZWVyX2RldmljZSwgdm5yKQogCQltdXRleF91bmxvY2socGVlcl9kZXZpY2UtJmd0O2RldmljZS0mZ3Q7c3RhdGVfbXV0ZXgpOwomIzQzOwkpOwogCiAJcmN1X3JlYWRfbG9jaygpOwogCWlkcl9mb3JfZWFjaF9lbnRyeSgmYW1wO2Nvbm5lY3Rpb24tJmd0O3BlZXJfZGV2aWNlcywgcGVlcl9kZXZpY2UsIHZucikgewpAQCAtMTY1Nyw3ICYjNDM7MTY2Miw3IEBAIHN0YXRpYyB2b2lkIGRyYmRfY3N1bV9lZV9zaXplKHN0cnVjdCBjcnlwdG9fc2hhc2ggKmgsCiAgKi8KIHN0YXRpYyBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKgogcmVhZF9pbl9ibG9jayhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHU2NCBpZCwgc2VjdG9yX3Qgc2VjdG9yLAotCSAgICAgIHN0cnVjdCBwYWNrZXRfaW5mbyAqcGkpIF9fbXVzdF9ob2xkKGxvY2FsKQomIzQzOwkgICAgICBzdHJ1Y3QgcGFja2V0X2luZm8gKnBpKQogewogCXN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtJmd0O2RldmljZTsKIAljb25zdCBzZWN0b3JfdCBjYXBhY2l0eSA9IGdldF9jYXBhY2l0eShkZXZpY2UtJmd0O3ZkaXNrKTsKQEAgLTE4NjgsOCAmIzQzOzE4NzMsOCBAQCBzdGF0aWMgaW50IGVfZW5kX3Jlc3luY19ibG9jayhzdHJ1Y3QgZHJiZF93b3JrICp3LCBpbnQgdW51c2VkKQogCXJldHVybiBlcnI7CiB9CiAKLXN0YXRpYyBpbnQgcmVjdl9yZXN5bmNfcmVhZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHNlY3Rvcl90IHNlY3RvciwKLQkJCSAgICBzdHJ1Y3QgcGFja2V0X2luZm8gKnBpKSBfX3JlbGVhc2VzKGxvY2FsKQomIzQzO3N0YXRpYyBpbnQgcmVjdl9yZXN5bmNfcmVhZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsCiYjNDM7CQkJICAgIHNlY3Rvcl90IHNlY3Rvciwgc3RydWN0IHBhY2tldF9pbmZvICpwaSkKIHsKIAlzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHBlZXJfZGV2aWNlLSZndDtkZXZpY2U7CiAJc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcTsKQEAgLTIyMzAsNiAmIzQzOzIyMzUsNyBAQCBzdGF0aWMgYmxrX29wZl90IHdpcmVfZmxhZ3NfdG9fYmlvKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHUzMiBkcGYpCiAKIHN0YXRpYyB2b2lkIGZhaWxfcG9zdHBvbmVkX3JlcXVlc3RzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IsCiAJCQkJICAgIHVuc2lnbmVkIGludCBzaXplKQomIzQzOwlfX211c3RfaG9sZCgmYW1wO2RldmljZS0mZ3Q7cmVzb3VyY2UtJmd0O3JlcV9sb2NrKQogewogCXN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSA9IGZpcnN0X3BlZXJfZGV2aWNlKGRldmljZSk7CiAJc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmk7CkBAIC0yMjU2LDYgJiM0MzsyMjYyLDcgQEAgc3RhdGljIHZvaWQgZmFpbF9wb3N0cG9uZWRfcmVxdWVzdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3RvciwKIAogc3RhdGljIGludCBoYW5kbGVfd3JpdGVfY29uZmxpY3RzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAogCQkJCSAgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSkKJiM0MzsJX19tdXN0X2hvbGQoJmFtcDtkZXZpY2UtJmd0O3Jlc291cmNlLSZndDtyZXFfbG9jaykKIHsKIAlzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uID0gcGVlcl9yZXEtJmd0O3BlZXJfZGV2aWNlLSZndDtjb25uZWN0aW9uOwogCWJvb2wgcmVzb2x2ZV9jb25mbGljdHMgPSB0ZXN0X2JpdChSRVNPTFZFX0NPTkZMSUNUUywgJmFtcDtjb25uZWN0aW9uLSZndDtmbGFncyk7CkBAIC0yODI2LDcgJiM0MzsyODMzLDcgQEAgc3RhdGljIGludCByZWNlaXZlX0RhdGFSZXF1ZXN0KHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHN0cnVjdCBwYWNrZXQKIC8qCiAgKiBkcmJkX2FzYl9yZWNvdmVyXzBwICAtICBSZWNvdmVyIGFmdGVyIHNwbGl0LWJyYWluIHdpdGggbm8gcmVtYWluaW5nIHByaW1hcmllcwogICovCi1zdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMHAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKJiM0MztzdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMHAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKQogewogCXN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtJmd0O2RldmljZTsKIAlpbnQgc2VsZiwgcGVlciwgcnYgPSAtMTAwOwpAQCAtMjkwOSw3ICYjNDM7MjkxNiw3IEBAIHN0YXRpYyBpbnQgZHJiZF9hc2JfcmVjb3Zlcl8wcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkCiAvKgogICogZHJiZF9hc2JfcmVjb3Zlcl8xcCAgLSAgUmVjb3ZlciBhZnRlciBzcGxpdC1icmFpbiB3aXRoIG9uZSByZW1haW5pbmcgcHJpbWFyeQogICovCi1zdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMXAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKJiM0MztzdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMXAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKQogewogCXN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtJmd0O2RldmljZTsKIAlpbnQgaGcsIHJ2ID0gLTEwMDsKQEAgLTI5NjYsNyAmIzQzOzI5NzMsNyBAQCBzdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMXAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZAogLyoKICAqIGRyYmRfYXNiX3JlY292ZXJfMnAgIC0gIFJlY292ZXIgYWZ0ZXIgc3BsaXQtYnJhaW4gd2l0aCB0d28gcmVtYWluaW5nIHByaW1hcmllcwogICovCi1zdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMnAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKJiM0MztzdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMnAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKQogewogCXN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtJmd0O2RldmljZTsKIAlpbnQgaGcsIHJ2ID0gLTEwMDsKQEAgLTMwNDQsNyAmIzQzOzMwNTEsNyBAQCBzdGF0aWMgdm9pZCBkcmJkX3V1aWRfZHVtcChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY2hhciAqdGV4dCwgdTY0ICp1dWlkLAogICovCiAKIHN0YXRpYyBpbnQgZHJiZF91dWlkX2NvbXBhcmUoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKmNvbnN0IHBlZXJfZGV2aWNlLAotCQllbnVtIGRyYmRfcm9sZSBjb25zdCBwZWVyX3JvbGUsIGludCAqcnVsZV9ucikgX19tdXN0X2hvbGQobG9jYWwpCiYjNDM7CQkJICAgICBlbnVtIGRyYmRfcm9sZSBjb25zdCBwZWVyX3JvbGUsIGludCAqcnVsZV9ucikKIHsKIAlzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25zdCBjb25uZWN0aW9uID0gcGVlcl9kZXZpY2UtJmd0O2Nvbm5lY3Rpb247CiAJc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBwZWVyX2RldmljZS0mZ3Q7ZGV2aWNlOwpAQCAtMzI2NCw3ICYjNDM7MzI3MSw3IEBAIHN0YXRpYyBpbnQgZHJiZF91dWlkX2NvbXBhcmUoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKmNvbnN0IHBlZXJfZGV2aWNlLAogICovCiBzdGF0aWMgZW51bSBkcmJkX2Nvbm5zIGRyYmRfc3luY19oYW5kc2hha2Uoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLAogCQkJCQkgICBlbnVtIGRyYmRfcm9sZSBwZWVyX3JvbGUsCi0JCQkJCSAgIGVudW0gZHJiZF9kaXNrX3N0YXRlIHBlZXJfZGlzaykgX19tdXN0X2hvbGQobG9jYWwpCiYjNDM7CQkJCQkgICBlbnVtIGRyYmRfZGlza19zdGF0ZSBwZWVyX2Rpc2spCiB7CiAJc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBwZWVyX2RldmljZS0mZ3Q7ZGV2aWNlOwogCWVudW0gZHJiZF9jb25ucyBydiA9IENfTUFTSzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmMKaW5kZXggNzBmNzVlZjA3OTQ1N2QuLjFjYzQ1NTg0NmY5MjAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuYwpAQCAtOTUxLDcgJiM0Mzs5NTEsOSBAQCBzdGF0aWMgYm9vbCByZW1vdGVfZHVlX3RvX3JlYWRfYmFsYW5jaW5nKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzZQogICoKICAqIE9ubHkgd2F5IG91dDogcmVtb3ZlIHRoZSBjb25mbGljdGluZyBpbnRlcnZhbHMgZnJvbSB0aGUgdHJlZS4KICAqLwotc3RhdGljIHZvaWQgY29tcGxldGVfY29uZmxpY3Rpbmdfd3JpdGVzKHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSkKJiM0MztzdGF0aWMgdm9pZCBjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMoc3RydWN0IGRyYmRfcmVzb3VyY2UgKnJlc291cmNlLAomIzQzOwkJCQkJc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKQomIzQzOwlfX211c3RfaG9sZCgmYW1wO3Jlc291cmNlLSZndDtyZXFfbG9jaykKIHsKIAlERUZJTkVfV0FJVCh3YWl0KTsKIAlzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHJlcS0mZ3Q7ZGV2aWNlOwpAQCAtOTc0LDkgJiM0Mzs5NzYsOSBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKQogCQkvKiBJbmRpY2F0ZSB0byB3YWtlIHVwIGRldmljZS0mZ3Q7bWlzY193YWl0IG9uIHByb2dyZXNzLiAgKi8KIAkJcHJlcGFyZV90b193YWl0KCZhbXA7ZGV2aWNlLSZndDttaXNjX3dhaXQsICZhbXA7d2FpdCwgVEFTS19VTklOVEVSUlVQVElCTEUpOwogCQlpLSZndDt3YWl0aW5nID0gdHJ1ZTsKLQkJc3Bpbl91bmxvY2tfaXJxKCZhbXA7ZGV2aWNlLSZndDtyZXNvdXJjZS0mZ3Q7cmVxX2xvY2spOwomIzQzOwkJc3Bpbl91bmxvY2tfaXJxKCZhbXA7cmVzb3VyY2UtJmd0O3JlcV9sb2NrKTsKIAkJc2NoZWR1bGUoKTsKLQkJc3Bpbl9sb2NrX2lycSgmYW1wO2RldmljZS0mZ3Q7cmVzb3VyY2UtJmd0O3JlcV9sb2NrKTsKJiM0MzsJCXNwaW5fbG9ja19pcnEoJmFtcDtyZXNvdXJjZS0mZ3Q7cmVxX2xvY2spOwogCX0KIAlmaW5pc2hfd2FpdCgmYW1wO2RldmljZS0mZ3Q7bWlzY193YWl0LCAmYW1wO3dhaXQpOwogfQpAQCAtMTMyOSw3ICYjNDM7MTMzMSw3IEBAIHN0YXRpYyB2b2lkIGRyYmRfc2VuZF9hbmRfc3VibWl0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9yZXF1ZXN0CiAJCS8qIFRoaXMgbWF5IHRlbXBvcmFyaWx5IGdpdmUgdXAgdGhlIHJlcV9sb2NrLAogCQkgKiBidXQgd2lsbCByZS1hcXVpcmUgaXQgYmVmb3JlIGl0IHJldHVybnMgaGVyZS4KIAkJICogTmVlZHMgdG8gYmUgYmVmb3JlIHRoZSBjaGVjayBvbiBkcmJkX3N1c3BlbmRlZCgpICovCi0JCWNvbXBsZXRlX2NvbmZsaWN0aW5nX3dyaXRlcyhyZXEpOwomIzQzOwkJY29tcGxldGVfY29uZmxpY3Rpbmdfd3JpdGVzKHJlc291cmNlLCByZXEpOwogCQkvKiBubyBtb3JlIGdpdmluZyB1cCByZXFfbG9jayBmcm9tIG5vdyBvbiEgKi8KIAogCQkvKiBjaGVjayBmb3IgY29uZ2VzdGlvbiwgYW5kIHBvdGVudGlhbGx5IHN0b3Agc2VuZGluZwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuaAppbmRleCA5YWU4NjBlNzU5MWIzMi4uN2YyNGNiOGU1NDI5YTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5oCkBAIC0yNjQsMjAgJiM0MzsyNjQsMTggQEAgc3RydWN0IGJpb19hbmRfZXJyb3IgewogCWludCBlcnJvcjsKIH07CiAKLWV4dGVybiB2b2lkIHN0YXJ0X25ld190bF9lcG9jaChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTsKLWV4dGVybiB2b2lkIGRyYmRfcmVxX2Rlc3Ryb3koc3RydWN0IGtyZWYgKmtyZWYpOwotZXh0ZXJuIGludCBfX3JlcV9tb2Qoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQsCi0JCXN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwKLQkJc3RydWN0IGJpb19hbmRfZXJyb3IgKm0pOwotZXh0ZXJuIHZvaWQgY29tcGxldGVfbWFzdGVyX2JpbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJc3RydWN0IGJpb19hbmRfZXJyb3IgKm0pOwotZXh0ZXJuIHZvaWQgcmVxdWVzdF90aW1lcl9mbihzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7Ci1leHRlcm4gdm9pZCB0bF9yZXN0YXJ0KHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGVudW0gZHJiZF9yZXFfZXZlbnQgd2hhdCk7Ci1leHRlcm4gdm9pZCBfdGxfcmVzdGFydChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQpOwotZXh0ZXJuIHZvaWQgdGxfYWJvcnRfZGlza19pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7dm9pZCBzdGFydF9uZXdfdGxfZXBvY2goc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7CiYjNDM7dm9pZCBkcmJkX3JlcV9kZXN0cm95KHN0cnVjdCBrcmVmICprcmVmKTsKJiM0MztpbnQgX19yZXFfbW9kKHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSwgZW51bSBkcmJkX3JlcV9ldmVudCB3aGF0LAomIzQzOwkgICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHN0cnVjdCBiaW9fYW5kX2Vycm9yICptKTsKJiM0Mzt2b2lkIGNvbXBsZXRlX21hc3Rlcl9iaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBiaW9fYW5kX2Vycm9yICptKTsKJiM0Mzt2b2lkIHJlcXVlc3RfdGltZXJfZm4oc3RydWN0IHRpbWVyX2xpc3QgKnQpOwomIzQzO3ZvaWQgdGxfcmVzdGFydChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQpOwomIzQzO3ZvaWQgX3RsX3Jlc3RhcnQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgZW51bSBkcmJkX3JlcV9ldmVudCB3aGF0KTsKJiM0Mzt2b2lkIHRsX2Fib3J0X2Rpc2tfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwogCiAvKiB0aGlzIGlzIGluIGRyYmRfbWFpbi5jICovCi1leHRlcm4gdm9pZCBkcmJkX3Jlc3RhcnRfcmVxdWVzdChzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICpyZXEpOwomIzQzO3ZvaWQgZHJiZF9yZXN0YXJ0X3JlcXVlc3Qoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKTsKIAogLyogdXNlIHRoaXMgaWYgeW91IGRvbiYjMzk7dCB3YW50IHRvIGRlYWwgd2l0aCBjYWxsaW5nIGNvbXBsZXRlX21hc3Rlcl9iaW8oKQogICogb3V0c2lkZSB0aGUgc3BpbmxvY2ssIGUuZy4gd2hlbiB3YWxraW5nIHNvbWUgbGlzdCBvbiBjbGVhbnVwLiAqLwpAQCAtMzE5LDYgJiM0MzszMTcsNiBAQCBzdGF0aWMgaW5saW5lIGludCByZXFfbW9kKHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSwKIAlyZXR1cm4gcnY7CiB9CiAKLWV4dGVybiBib29sIGRyYmRfc2hvdWxkX2RvX3JlbW90ZSh1bmlvbiBkcmJkX2Rldl9zdGF0ZSk7CiYjNDM7Ym9vbCBkcmJkX3Nob3VsZF9kb19yZW1vdGUodW5pb24gZHJiZF9kZXZfc3RhdGUpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3N0YXRlLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5jCmluZGV4IGFkY2JhN2YxZDhlYTQ5Li40MTZhNzFkN2E2MWMwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5jCkBAIC01NDksMTkgJiM0Mzs1NDksMTAgQEAgX3JlcV9zdF9jb25kKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssCiAJcmV0dXJuIHJ2OwogfQogCi0vKioKLSAqIGRyYmRfcmVxX3N0YXRlKCkgLSBQZXJmb3JtIGFuIGV2ZW50dWFsbHkgY2x1c3RlciB3aWRlIHN0YXRlIGNoYW5nZQotICogQGRldmljZToJRFJCRCBkZXZpY2UuCi0gKiBAbWFzazoJbWFzayBvZiBzdGF0ZSBiaXRzIHRvIGNoYW5nZS4KLSAqIEB2YWw6CXZhbHVlIG9mIG5ldyBzdGF0ZSBiaXRzLgotICogQGY6CQlmbGFncwotICoKLSAqIFNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LCB1c2UgZHJiZF9yZXF1ZXN0X3N0YXRlKCkgb3IKLSAqIF9kcmJkX3JlcXVlc3Rfc3RhdGUoKS4KLSAqLwotc3RhdGljIGVudW0gZHJiZF9zdGF0ZV9ydgotZHJiZF9yZXFfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuaW9uIGRyYmRfc3RhdGUgbWFzaywKLQkgICAgICAgdW5pb24gZHJiZF9zdGF0ZSB2YWwsIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYpCiYjNDM7c3RhdGljIGVudW0gZHJiZF9zdGF0ZV9ydiBfX2RyYmRfcmVxX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAomIzQzOwkJCQkJICAgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLAomIzQzOwkJCQkJICAgdW5pb24gZHJiZF9zdGF0ZSB2YWwsCiYjNDM7CQkJCQkgICBlbnVtIGNoZ19zdGF0ZV9mbGFncyBmKQogewogCXN0cnVjdCBjb21wbGV0aW9uIGRvbmU7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKQEAgLTU3MSw4ICYjNDM7NTYyLDYgQEAgZHJiZF9yZXFfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuaW9uIGRyYmRfc3RhdGUgbWFzaywKIAogCWluaXRfY29tcGxldGlvbigmYW1wO2RvbmUpOwogCi0JaWYgKGYgJmFtcDsgQ1NfU0VSSUFMSVpFKQotCQltdXRleF9sb2NrKGRldmljZS0mZ3Q7c3RhdGVfbXV0ZXgpOwogCWlmIChmICZhbXA7IENTX0lOSElCSVRfTURfSU8pCiAJCWJ1ZmZlciA9IGRyYmRfbWRfZ2V0X2J1ZmZlcihkZXZpY2UsIF9fZnVuY19fKTsKIApAQCAtNjI5LDggJiM0Mzs2MTgsMzQgQEAgZHJiZF9yZXFfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuaW9uIGRyYmRfc3RhdGUgbWFzaywKIGFib3J0OgogCWlmIChidWZmZXIpCiAJCWRyYmRfbWRfcHV0X2J1ZmZlcihkZXZpY2UpOwotCWlmIChmICZhbXA7IENTX1NFUklBTElaRSkKJiM0MzsKJiM0MzsJcmV0dXJuIHJ2OwomIzQzO30KJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBkcmJkX3JlcV9zdGF0ZSgpIC0gUGVyZm9ybSBhbiBldmVudHVhbGx5IGNsdXN0ZXIgd2lkZSBzdGF0ZSBjaGFuZ2UKJiM0MzsgKiBAZGV2aWNlOglEUkJEIGRldmljZS4KJiM0MzsgKiBAbWFzazoJbWFzayBvZiBzdGF0ZSBiaXRzIHRvIGNoYW5nZS4KJiM0MzsgKiBAdmFsOgl2YWx1ZSBvZiBuZXcgc3RhdGUgYml0cy4KJiM0MzsgKiBAZjoJCWZsYWdzCiYjNDM7ICoKJiM0MzsgKiBTaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSwgdXNlIGRyYmRfcmVxdWVzdF9zdGF0ZSgpIG9yCiYjNDM7ICogX2RyYmRfcmVxdWVzdF9zdGF0ZSgpLgomIzQzOyAqLwomIzQzO3N0YXRpYyBlbnVtIGRyYmRfc3RhdGVfcnYgZHJiZF9yZXFfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiYjNDM7CQkJCQkgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLAomIzQzOwkJCQkJIHVuaW9uIGRyYmRfc3RhdGUgdmFsLAomIzQzOwkJCQkJIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYpCiYjNDM7ewomIzQzOwllbnVtIGRyYmRfc3RhdGVfcnYgcnY7CiYjNDM7CiYjNDM7CWlmIChmICZhbXA7IENTX1NFUklBTElaRSkgewomIzQzOwkJbXV0ZXhfbG9jayhkZXZpY2UtJmd0O3N0YXRlX211dGV4KTsKJiM0MzsJCXJ2ID0gX19kcmJkX3JlcV9zdGF0ZShkZXZpY2UsIG1hc2ssIHZhbCwgZik7CiAJCW11dGV4X3VubG9jayhkZXZpY2UtJmd0O3N0YXRlX211dGV4KTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCXJ2ID0gX19kcmJkX3JlcV9zdGF0ZShkZXZpY2UsIG1hc2ssIHZhbCwgZik7CiYjNDM7CX0KIAogCXJldHVybiBydjsKIH0KQEAgLTY5OSw2ICYjNDM7NzE0LDcgQEAgaW50IGRyYmRfcmVxdWVzdF9kZXRhY2hfaW50ZXJydXB0aWJsZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkKIGVudW0gZHJiZF9zdGF0ZV9ydgogX2RyYmRfcmVxdWVzdF9zdGF0ZV9ob2xkaW5nX3N0YXRlX211dGV4KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssCiAJCSAgICB1bmlvbiBkcmJkX3N0YXRlIHZhbCwgZW51bSBjaGdfc3RhdGVfZmxhZ3MgZikKJiM0MzsJX19tdXN0X2hvbGQoJmFtcDtkZXZpY2UtJmd0O3N0YXRlX211dGV4KQogewogCWVudW0gZHJiZF9zdGF0ZV9ydiBydjsKIApAQCAtMjI5Miw2ICYjNDM7MjMwOCw3IEBAIF9jb25uX3JxX2NvbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLCB1bmlvbiBkCiBlbnVtIGRyYmRfc3RhdGVfcnYKIF9jb25uX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLCB1bmlvbiBkcmJkX3N0YXRlIHZhbCwKIAkJICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGZsYWdzKQomIzQzOwlfX2NvbnRleHRfdW5zYWZlKGNvbmRpdGlvbmFsIGxvY2tpbmcpCiB7CiAJZW51bSBkcmJkX3N0YXRlX3J2IHJ2ID0gU1NfU1VDQ0VTUzsKIAlzdHJ1Y3QgYWZ0ZXJfY29ubl9zdGF0ZV9jaGdfd29yayAqYWNzY3c7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5oIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuaAppbmRleCBjYmFlYjgwMThkYmY1OS4uYTdlMzFkMDkyMDM5NmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3N0YXRlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuaApAQCAtMTEyLDI2ICYjNDM7MTEyLDIzIEBAIHVuaW9uIGRyYmRfZGV2X3N0YXRlIHsKIAl1bnNpZ25lZCBpbnQgaTsKIH07CiAKLWV4dGVybiBlbnVtIGRyYmRfc3RhdGVfcnYgZHJiZF9jaGFuZ2Vfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCi0JCQkJCSAgICBlbnVtIGNoZ19zdGF0ZV9mbGFncyBmLAotCQkJCQkgICAgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLAotCQkJCQkgICAgdW5pb24gZHJiZF9zdGF0ZSB2YWwpOwotZXh0ZXJuIHZvaWQgZHJiZF9mb3JjZV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSwKLQkJCXVuaW9uIGRyYmRfc3RhdGUpOwotZXh0ZXJuIGVudW0gZHJiZF9zdGF0ZV9ydiBfZHJiZF9yZXF1ZXN0X3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqLAotCQkJCQkgICAgICB1bmlvbiBkcmJkX3N0YXRlLAotCQkJCQkgICAgICB1bmlvbiBkcmJkX3N0YXRlLAotCQkJCQkgICAgICBlbnVtIGNoZ19zdGF0ZV9mbGFncyk7Ci0KLWV4dGVybiBlbnVtIGRyYmRfc3RhdGVfcnYKJiM0MztlbnVtIGRyYmRfc3RhdGVfcnYgZHJiZF9jaGFuZ2Vfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiYjNDM7CQkJCSAgICAgZW51bSBjaGdfc3RhdGVfZmxhZ3MgZiwKJiM0MzsJCQkJICAgICB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssCiYjNDM7CQkJCSAgICAgdW5pb24gZHJiZF9zdGF0ZSB2YWwpOwomIzQzO3ZvaWQgZHJiZF9mb3JjZV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSwgdW5pb24gZHJiZF9zdGF0ZSk7CiYjNDM7ZW51bSBkcmJkX3N0YXRlX3J2IF9kcmJkX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsCiYjNDM7CQkJCSAgICAgICB1bmlvbiBkcmJkX3N0YXRlLCBlbnVtIGNoZ19zdGF0ZV9mbGFncyk7CiYjNDM7CiYjNDM7ZW51bSBkcmJkX3N0YXRlX3J2CiBfZHJiZF9yZXF1ZXN0X3N0YXRlX2hvbGRpbmdfc3RhdGVfbXV0ZXgoc3RydWN0IGRyYmRfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsCiAJCQkJCXVuaW9uIGRyYmRfc3RhdGUsIGVudW0gY2hnX3N0YXRlX2ZsYWdzKTsKIAotZXh0ZXJuIGVudW0gZHJiZF9zdGF0ZV9ydiBfZHJiZF9zZXRfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsCi0JCQkJCSAgZW51bSBjaGdfc3RhdGVfZmxhZ3MsCi0JCQkJCSAgc3RydWN0IGNvbXBsZXRpb24gKmRvbmUpOwotZXh0ZXJuIHZvaWQgcHJpbnRfc3RfZXJyKHN0cnVjdCBkcmJkX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLAotCQkJdW5pb24gZHJiZF9zdGF0ZSwgZW51bSBkcmJkX3N0YXRlX3J2KTsKJiM0MztlbnVtIGRyYmRfc3RhdGVfcnYgX2RyYmRfc2V0X3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLAomIzQzOwkJCQkgICBlbnVtIGNoZ19zdGF0ZV9mbGFncywKJiM0MzsJCQkJICAgc3RydWN0IGNvbXBsZXRpb24gKmRvbmUpOwomIzQzO3ZvaWQgcHJpbnRfc3RfZXJyKHN0cnVjdCBkcmJkX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLCB1bmlvbiBkcmJkX3N0YXRlLAomIzQzOwkJICBlbnVtIGRyYmRfc3RhdGVfcnYpOwogCiBlbnVtIGRyYmRfc3RhdGVfcnYKIF9jb25uX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLCB1bmlvbiBkcmJkX3N0YXRlIHZhbCwKQEAgLTE0MSw4ICYjNDM7MTM4LDggQEAgZW51bSBkcmJkX3N0YXRlX3J2CiBjb25uX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLCB1bmlvbiBkcmJkX3N0YXRlIHZhbCwKIAkJICAgZW51bSBjaGdfc3RhdGVfZmxhZ3MgZmxhZ3MpOwogCi1leHRlcm4gdm9pZCBkcmJkX3Jlc3VtZV9hbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7Ci1leHRlcm4gYm9vbCBjb25uX2FsbF92b2xzX3VuY29uZihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTsKJiM0Mzt2b2lkIGRyYmRfcmVzdW1lX2FsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKJiM0Mztib29sIGNvbm5fYWxsX3ZvbHNfdW5jb25mKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pOwogCiAvKioKICAqIGRyYmRfcmVxdWVzdF9zdGF0ZSgpIC0gUmVxdWVzdCBhIHN0YXRlIGNoYW5nZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGVfY2hhbmdlLmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZV9jaGFuZ2UuaAppbmRleCBhNTZhNTdkNjc2ODYyOS4uZjU4YTU1MDE0MTc3ZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3N0YXRlX2NoYW5nZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3N0YXRlX2NoYW5nZS5oCkBAIC00MCwyNSAmIzQzOzQwLDE3IEBAIHN0cnVjdCBkcmJkX3N0YXRlX2NoYW5nZSB7CiAJc3RydWN0IGRyYmRfcGVlcl9kZXZpY2Vfc3RhdGVfY2hhbmdlICpwZWVyX2RldmljZXM7CiB9OwogCi1leHRlcm4gc3RydWN0IGRyYmRfc3RhdGVfY2hhbmdlICpyZW1lbWJlcl9vbGRfc3RhdGUoc3RydWN0IGRyYmRfcmVzb3VyY2UgKiwgZ2ZwX3QpOwotZXh0ZXJuIHZvaWQgY29weV9vbGRfdG9fbmV3X3N0YXRlX2NoYW5nZShzdHJ1Y3QgZHJiZF9zdGF0ZV9jaGFuZ2UgKik7Ci1leHRlcm4gdm9pZCBmb3JnZXRfc3RhdGVfY2hhbmdlKHN0cnVjdCBkcmJkX3N0YXRlX2NoYW5nZSAqKTsKLQotZXh0ZXJuIGludCBub3RpZnlfcmVzb3VyY2Vfc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosCi0JCQkJCSB1bnNpZ25lZCBpbnQsCi0JCQkJCSB2b2lkICosCi0JCQkJCSBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7Ci1leHRlcm4gaW50IG5vdGlmeV9jb25uZWN0aW9uX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLAotCQkJCQkgICB1bnNpZ25lZCBpbnQsCi0JCQkJCSAgIHZvaWQgKiwKLQkJCQkJICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpOwotZXh0ZXJuIGludCBub3RpZnlfZGV2aWNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLAotCQkJCSAgICAgICB1bnNpZ25lZCBpbnQsCi0JCQkJICAgICAgIHZvaWQgKiwKLQkJCQkgICAgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpOwotZXh0ZXJuIGludCBub3RpZnlfcGVlcl9kZXZpY2Vfc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosCi0JCQkJCSAgICB1bnNpZ25lZCBpbnQsCi0JCQkJCSAgICB2b2lkICosCi0JCQkJCSAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7CiYjNDM7c3RydWN0IGRyYmRfc3RhdGVfY2hhbmdlICpyZW1lbWJlcl9vbGRfc3RhdGUoc3RydWN0IGRyYmRfcmVzb3VyY2UgKiwgZ2ZwX3QpOwomIzQzO3ZvaWQgY29weV9vbGRfdG9fbmV3X3N0YXRlX2NoYW5nZShzdHJ1Y3QgZHJiZF9zdGF0ZV9jaGFuZ2UgKik7CiYjNDM7dm9pZCBmb3JnZXRfc3RhdGVfY2hhbmdlKHN0cnVjdCBkcmJkX3N0YXRlX2NoYW5nZSAqKTsKJiM0MzsKJiM0MztpbnQgbm90aWZ5X3Jlc291cmNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsIHZvaWQgKiwKJiM0MzsJCQkJIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSB0eXBlKTsKJiM0MztpbnQgbm90aWZ5X2Nvbm5lY3Rpb25fc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCwgdm9pZCAqLAomIzQzOwkJCQkgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7CiYjNDM7aW50IG5vdGlmeV9kZXZpY2Vfc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCwgdm9pZCAqLAomIzQzOwkJCSAgICAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7CiYjNDM7aW50IG5vdGlmeV9wZWVyX2RldmljZV9zdGF0ZV9jaGFuZ2Uoc3RydWN0IHNrX2J1ZmYgKiwgdW5zaWduZWQgaW50LCB2b2lkICosCiYjNDM7CQkJCSAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7CiAKICNlbmRpZiAgLyogRFJCRF9TVEFURV9DSEFOR0VfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfd29ya2VyLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF93b3JrZXIuYwppbmRleCAwNjk3Zjk5ZmVkMThkNy4uNmZlYzU5YmJmMGU5YTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3dvcmtlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3dvcmtlci5jCkBAIC03OCw3ICYjNDM7NzgsNyBAQCB2b2lkIGRyYmRfbWRfZW5kaW8oc3RydWN0IGJpbyAqYmlvKQogLyogcmVhZHMgb24gYmVoYWxmIG9mIHRoZSBwYXJ0bmVyLAogICogJiMzNDtzdWJtaXR0ZWQmIzM0OyBieSB0aGUgcmVjZWl2ZXIKICAqLwotc3RhdGljIHZvaWQgZHJiZF9lbmRpb19yZWFkX3NlY19maW5hbChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKSBfX3JlbGVhc2VzKGxvY2FsKQomIzQzO3N0YXRpYyB2b2lkIGRyYmRfZW5kaW9fcmVhZF9zZWNfZmluYWwoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSkKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzID0gMDsKIAlzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UgPSBwZWVyX3JlcS0mZ3Q7cGVlcl9kZXZpY2U7CkBAIC05OSw3ICYjNDM7OTksNyBAQCBzdGF0aWMgdm9pZCBkcmJkX2VuZGlvX3JlYWRfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpIF9fcmVsZQogCiAvKiB3cml0ZXMgb24gYmVoYWxmIG9mIHRoZSBwYXJ0bmVyLCBvciByZXN5bmMgd3JpdGVzLAogICogJiMzNDtzdWJtaXR0ZWQmIzM0OyBieSB0aGUgcmVjZWl2ZXIsIGZpbmFsIHN0YWdlLiAgKi8KLXZvaWQgZHJiZF9lbmRpb193cml0ZV9zZWNfZmluYWwoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSkgX19yZWxlYXNlcyhsb2NhbCkKJiM0Mzt2b2lkIGRyYmRfZW5kaW9fd3JpdGVfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFncyA9IDA7CiAJc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlID0gcGVlcl9yZXEtJmd0O3BlZXJfZGV2aWNlOwpAQCAtMTkyMywxMCAmIzQzOzE5MjMsOCBAQCBzdGF0aWMgdm9pZCBkcmJkX2xkZXZfZGVzdHJveShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkKIAlsY19kZXN0cm95KGRldmljZS0mZ3Q7YWN0X2xvZyk7CiAJZGV2aWNlLSZndDthY3RfbG9nID0gTlVMTDsKIAotCV9fYWNxdWlyZShsb2NhbCk7CiAJZHJiZF9iYWNraW5nX2Rldl9mcmVlKGRldmljZSwgZGV2aWNlLSZndDtsZGV2KTsKIAlkZXZpY2UtJmd0O2xkZXYgPSBOVUxMOwotCV9fcmVsZWFzZShsb2NhbCk7CiAKIAljbGVhcl9iaXQoR09JTkdfRElTS0xFU1MsICZhbXA7ZGV2aWNlLSZndDtmbGFncyk7CiAJd2FrZV91cCgmYW1wO2RldmljZS0mZ3Q7bWlzY193YWl0KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTk6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg3OTYKCQkJCQkJCW91dHB1dDogMTM5CgkJCQkJCQl0aG91Z2h0czogNTUzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpczogU3BhcnNlIEFubm90YXRpb24gJmFtcDsgUmVmYWN0b3JpbmcgZm9yIENvbnRleHQgVHJhY2tpbmcqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggZm9yIHRoZSBEUkJEIGJsb2NrIGRyaXZlciwgYW5kIHRoZSBjb21taXQgbWVzc2FnZSBpbmRpY2F0ZXMgaXQmIzM5O3MgYSByZXNwb25zZSB0byBhIHN0YXRpYyBhbmFseXNpcyByZXBvcnQsIHNwZWNpZmljYWxseSBmcm9tIHRoZSAmIzM0O3N5ei1jbHVzdGVyJiMzNDsuIE15IGluaXRpYWwgZ2xhbmNlIHN1Z2dlc3RzIGEgZm9jdXMgb24gY2xlYW5pbmcgdXAgdGhlIGNvZGUgZm9yIGJldHRlciBzdGF0aWMgYW5hbHlzaXMgY29tcGF0aWJpbGl0eS4gSXQgbG9va3MgbGlrZSBpdCBtb2RpZmllcyBhIGZldyBmaWxlcyB3aXRoaW4gdGhlIGBkcml2ZXJzL2Jsb2NrL2RyYmQvYCBkaXJlY3RvcnkuCgpUaGUgZmlyc3QgdGhpbmcgdGhhdCBncmFicyBteSBhdHRlbnRpb24gaXMgdGhlIGFkZGl0aW9uIG9mIGBDT05URVhUX0FOQUxZU0lTIDo9IHlgIHRvIHRoZSBgTWFrZWZpbGVgLiBUaGF0JiMzOTtzIGEgc3Ryb25nIGluZGljYXRvciB0aGF0IHRoZSBwcmltYXJ5IGdvYWwgaXMgdG8gYWRkcmVzcyBjb250ZXh0IHRyYWNraW5nIGlzc3VlcyBmbGFnZ2VkIGJ5IHRoZSBzdGF0aWMgYW5hbHl6ZXIsIGxpa2VseSBTcGFyc2UuICBUaGVuLCBjaGFuZ2VzIGluIGBkcmJkX2JpdG1hcC5jYCByZWFsbHkgaGlnaGxpZ2h0IHRoaXM6IHRoZSBhZGRpdGlvbiBhbmQgcmVtb3ZhbCBvZiBzcGFyc2UgYW5ub3RhdGlvbnMgKGBfX2FjcXVpcmVzYCwgYF9fcmVsZWFzZXNgLCBgX19hY3F1aXJlYCwgYF9fcmVsZWFzZWAsIGBfX211c3RfaG9sZGApLCBhbmQgdGhhdCBgZHJiZF9ibV9sb2NrYCB1cGRhdGUgaXMgYSBnb29kIGV4YW1wbGUuICBUaGUgb3JpZ2luYWwgY29kZSB1c2VkIGBtdXRleF90cnlsb2NrYCBmb2xsb3dlZCBieSBhIGBtdXRleF9sb2NrYCBpZiB0aGUgYHRyeWxvY2tgIGZhaWxlZCwgd2l0aCBhIHdhcm5pbmcuIFRoaXMgcGF0Y2ggc2ltcGx5IHJlcGxhY2VzIHRoZSBgbXV0ZXhfdHJ5bG9ja2Agd2l0aCBhIGRpcmVjdCBgbXV0ZXhfbG9ja2AgYWxvbmcgd2l0aCB0aGUgYXBwcm9wcmlhdGUgYF9fYWNxdWlyZWAgYW5ub3RhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudDsgaXQgc2ltcGxpZmllcyB0aGUgY29kZSBhbmQgcmVkdWNlcyBhIHNwdXJpb3VzIHdhcm5pbmcuIFRoZXJlJiMzOTtzIGFsc28gdGhlIHJlbW92YWwgb2YgYGlmICghYilgIGNoZWNrcyBpbiBgZHJiZF9ibV9sb2NrYCBhbmQgYGRyYmRfYm1fdW5sb2NrYC4gIFRoaXMgKmNvdWxkKiBiZSBhIGJ1ZyBpZiBgYmAgY2FuIGJlIGBOVUxMYCB1bmRlciBhbnkgY2lyY3Vtc3RhbmNlLiBIb3dldmVyLCBpdCYjMzk7cyB2ZXJ5IGxpa2VseSB0aGF0IHRoaXMgY2hlY2sgd2FzIGRlZmVuc2l2ZSBhbmQgdGhlIGF1dGhvciBmZWx0IGl0IHdhcyBub3QgbmVjZXNzYXJ5LgoKTW92aW5nIG9uIHRvIGBkcmJkX25sLmNgLCB0aGVyZSYjMzk7cyBzb21lIHJlZmFjdG9yaW5nIGluIGBkcmJkX25sX2dldF9jb25uZWN0aW9uc19kdW1waXRgLiBJIHNlZSB0aGUgYGdvdG8gcHV0X3Jlc3VsdGAgcmVwbGFjZWQgd2l0aCBjb25kaXRpb25hbCBsb2dpYyB0byBoYW5kbGUgdGhlIHJlc291cmNlIG5vdCBmb3VuZCBjYXNlLiBUaGlzIGlzIGZ1bmN0aW9uYWxseSBpZGVudGljYWwsIGp1c3QgbW9yZSBleHBsaWNpdCBhYm91dCB0aGUgZXJyb3IgcGF0aC4gVGhlIHBhdHRlcm4gY29udGludWVzLCB3aXRoIGBfX211c3RfaG9sZGAgYW5kIG90aGVyIGFubm90YXRpb25zIGFkZGVkIGFuZCByZW1vdmVkIGluIHRoZSBjb2RlIHRvIHNhdGlzZnkgc3BhcnNlLgoKQWZ0ZXIgYSB0aG9yb3VnaCByZXZpZXcgb2YgdGhlIGNvZGUgZGlmZiwgdGhlIGNoYW5nZXMgaW4gYGRyYmRfcmVxX3N0YXRlYCBzZWVtIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50LiBJdOKAmXMganVzdCByZWZhY3RvcmluZyB0byBhdm9pZCBjb25kaXRpb25hbCBsb2NraW5nLCB3aGljaCwgYWdhaW4sIFNwYXJzZSBkb2VzbiYjMzk7dCBsaWtlLiBUaGUgYWRkaXRpb24gb2YgYGNvbnRleHRfdW5zYWZlYCBhcm91bmQgYSBmZXcgYmxvY2tzIGFsc28gc3VnZ2VzdHMgaGFuZGxpbmcgbmVzdGVkIGxvY2tpbmcgc2NlbmFyaW9zLCBhbmQgdGhlIGBDT05URVhUX0FOQUxZU0lTIDo9IHlgIGluIHRoZSBgTWFrZWZpbGVgIGNvbmZpcm1zIHRoYXQgY29udGV4dCBhbmFseXNpcyBpcyBlbmFibGVkLiBUaGlzIGxpa2VseSB1c2VzIGEgbWFjcm8gZGVmaW5lZCBzb21ld2hlcmUsIG5vdCBhbiBhY3R1YWwga2VybmVsIGZ1bmN0aW9uLiAgSSBhbSBkaWdnaW5nIGludG8gYGRyYmRfbWFpbi5jYCB3aGVyZSB0aGUgaW5saW5lIGZ1bmN0aW9ucyB3ZXJlIHJlc3RvcmVkIGFmdGVyIHRoZSBgI2lmZGVmIF9fQ0hFQ0tFUl9fYC4KClRoaXMgcGF0Y2ggaXMgZXNzZW50aWFsbHkgYSByZWZhY3RvcmluZyBlZmZvcnQgdG8gbWFrZSB0aGUgY29kZSBjb21wbHkgd2l0aCB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoZSBzdGF0aWMgYW5hbHlzaXMgdG9vbCwgbGlrZWx5IFNwYXJzZS4gSXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgZmVhdHVyZXMgb3IgYW55IGNoYW5nZSB0byBmdW5kYW1lbnRhbCBsb2dpYyB0aGF0IHdvdWxkIHdhcnJhbnQgYSBkZWVwIGZ1enppbmcgY2FtcGFpZ24uIFRoZSBjaGFuZ2VzIGFyZSBhbG1vc3QgcHVyZWx5IGFib3V0IGdldHRpbmcgdGhlIGNvZGUgdG8gJiMzNDtjaGVjayBvdXQmIzM0OyB3aXRoIFNwYXJzZS4gUmVtb3ZpbmcgdGhlIGBpZiAoIWIpYCBjaGVja3MgaW4gYGRyYmRfYm1fbG9ja2AgYW5kIGBkcmJkX2JtX3VubG9ja2AsIGlzIGEgcG9zc2libGUgYnVnLiBIb3dldmVyLCBpdCBpcyB1bmxpa2VseSB0aGlzIGNoZWNrIGlzIHJlYWNoZWQsIGl0IGlzIGRlZmVuc2l2ZSBhbmQgbm90IG5lY2Vzc2FyeS4KClNvLCBpbiBzdW1tYXJ5LCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRoaXMgaXMgYSBwYXRjaCBhaW1lZCBhdCBpbXByb3ZpbmcgdGhlIGNvZGUmIzM5O3Mgc3RhdGljIGFuYWx5c2lzIHByb3BlcnRpZXMgYW5kIHdvdWxkIG5vdCBiZSB3b3J0aCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE5OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaXMgYSBsYXJnZSByZWZhY3RvcmluZyBhaW1lZCBhdCBmaXhpbmcgc3BhcnNlIHdhcm5pbmdzLiBJdCByZW1vdmVzIGBleHRlcm5gIGZyb20gZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluIGhlYWRlcnMsIHJlbW92ZXMgY3VzdG9tIHNwYXJzZSBhbm5vdGF0aW9ucyBsaWtlIGBfX211c3RfaG9sZChsb2NhbClgLCBgX19hY3F1aXJlKGxvY2FsKWAsIGBfX3JlbGVhc2UobG9jYWwpYCwgYW5kIHJlZmFjdG9ycyBjb2RlIHRvIGF2b2lkIGNvbmRpdGlvbmFsIGxvY2tpbmcgKGUuZy4gYGRyYmRfcmVxX3N0YXRlYCkuIEl0IGFsc28gcmVtb3ZlcyBhIGZldyBkZWZlbnNpdmUgTlVMTCBjaGVja3MgYW5kIGEgd2FybmluZyBvbiBsb2NrIGNvbnRlbnRpb24gaW4gYGRyYmRfYm1fbG9ja2AuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUgbG9naWMgdGhhdCB3b3VsZCByZXF1aXJlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIGxhcmdlIHJlZmFjdG9yaW5nIGFpbWVkIGF0IGZpeGluZyBzcGFyc2Ugd2FybmluZ3MuIEl0IHJlbW92ZXMgYGV4dGVybmAgZnJvbSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW4gaGVhZGVycywgcmVtb3ZlcyBjdXN0b20gc3BhcnNlIGFubm90YXRpb25zIGxpa2UgYF9fbXVzdF9ob2xkKGxvY2FsKWAsIGBfX2FjcXVpcmUobG9jYWwpYCwgYF9fcmVsZWFzZShsb2NhbClgLCBhbmQgcmVmYWN0b3JzIGNvZGUgdG8gYXZvaWQgY29uZGl0aW9uYWwgbG9ja2luZyAoZS5nLiBgZHJiZF9yZXFfc3RhdGVgKS4gSXQgYWxzbyByZW1vdmVzIGEgZmV3IGRlZmVuc2l2ZSBOVUxMIGNoZWNrcyBhbmQgYSB3YXJuaW5nIG9uIGxvY2sgY29udGVudGlvbiBpbiBgZHJiZF9ibV9sb2NrYC4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29yZSBsb2dpYyB0aGF0IHdvdWxkIHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxOTo0OTo0Mi42MjM2ODk5NzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTM1MTQ4NDEzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaXMgYSBsYXJnZSByZWZhY3RvcmluZyBhaW1lZCBhdCBmaXhpbmcgc3BhcnNlIHdhcm5pbmdzLiBJdCByZW1vdmVzIGBleHRlcm5gIGZyb20gZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluIGhlYWRlcnMsIHJlbW92ZXMgY3VzdG9tIHNwYXJzZSBhbm5vdGF0aW9ucyBsaWtlIGBfX211c3RfaG9sZChsb2NhbClgLCBgX19hY3F1aXJlKGxvY2FsKWAsIGBfX3JlbGVhc2UobG9jYWwpYCwgYW5kIHJlZmFjdG9ycyBjb2RlIHRvIGF2b2lkIGNvbmRpdGlvbmFsIGxvY2tpbmcgKGUuZy4gYGRyYmRfcmVxX3N0YXRlYCkuIEl0IGFsc28gcmVtb3ZlcyBhIGZldyBkZWZlbnNpdmUgTlVMTCBjaGVja3MgYW5kIGEgd2FybmluZyBvbiBsb2NrIGNvbnRlbnRpb24gaW4gYGRyYmRfYm1fbG9ja2AuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUgbG9naWMgdGhhdCB3b3VsZCByZXF1aXJlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxOTo0OTo0Mi42MjM2OTUzNzhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczOTU5OTA4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQ1YmI0YTgwZGM5NTM4ZDkzY2M5Zjk1ZWU1MTc0ODcwYjAwY2RhZDFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTAgMTk6NDk6NDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL01ha2VmaWxlIGIvZHJpdmVycy9ibG9jay9kcmJkL01ha2VmaWxlXFxuaW5kZXggNWZhYWE4YThlN2YwMjkuLmNhZTY1NTc4MDAxYmM1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9NYWtlZmlsZVxcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9NYWtlZmlsZVxcbkBAIC0xLDQgKzEsNyBAQFxcbiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4rXFxuK0NPTlRFWFRfQU5BTFlTSVMgOj0geVxcbitcXG4gZHJiZC15IDo9IGRyYmRfYnVpbGR0YWcubyBkcmJkX2JpdG1hcC5vIGRyYmRfcHJvYy5vXFxuIGRyYmQteSArPSBkcmJkX3dvcmtlci5vIGRyYmRfcmVjZWl2ZXIubyBkcmJkX3JlcS5vIGRyYmRfYWN0bG9nLm9cXG4gZHJiZC15ICs9IGRyYmRfbWFpbi5vIGRyYmRfc3RyaW5ncy5vIGRyYmRfbmwub1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9iaXRtYXAuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2JpdG1hcC5jXFxuaW5kZXggNjVlYTZlYzY2YmZkNWMuLmQ4NDliZDc4MGNhOTY0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2JpdG1hcC5jXFxuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYml0bWFwLmNcXG5AQCAtMTIyLDI0ICsxMjIsMTMgQEAgc3RhdGljIHZvaWQgX19ibV9wcmludF9sb2NrX2luZm8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKmZ1bmMpXFxuIH1cXG4gXFxuIHZvaWQgZHJiZF9ibV9sb2NrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncylcXG4rXFx0X19hY3F1aXJlcyhkcmJkX2Rldl9ibV9sb2NrKVxcbitcXHRfX2FjcXVpcmVzKFxcdTAwMjZkZXZpY2UtXFx1MDAzZWJpdG1hcC1cXHUwMDNlYm1fY2hhbmdlKVxcbiB7XFxuIFxcdHN0cnVjdCBkcmJkX2JpdG1hcCAqYiA9IGRldmljZS1cXHUwMDNlYml0bWFwO1xcbi1cXHRpbnQgdHJ5bG9ja19mYWlsZWQ7XFxuIFxcbi1cXHRpZiAoIWIpIHtcXG4tXFx0XFx0ZHJiZF9lcnIoZGV2aWNlLCBcXFwiRklYTUUgbm8gYml0bWFwIGluIGRyYmRfYm1fbG9jayE/XFxcXG5cXFwiKTtcXG4tXFx0XFx0cmV0dXJuO1xcbi1cXHR9XFxuLVxcbi1cXHR0cnlsb2NrX2ZhaWxlZCA9ICFtdXRleF90cnlsb2NrKFxcdTAwMjZiLVxcdTAwM2VibV9jaGFuZ2UpO1xcbi1cXG4tXFx0aWYgKHRyeWxvY2tfZmFpbGVkKSB7XFxuLVxcdFxcdGRyYmRfd2FybihkZXZpY2UsIFxcXCIlc1slZF0gZ29pbmcgdG8gJyVzJyBidXQgYml0bWFwIGFscmVhZHkgbG9ja2VkIGZvciAnJXMnIGJ5ICVzWyVkXVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0ICBjdXJyZW50LVxcdTAwM2Vjb21tLCB0YXNrX3BpZF9ucihjdXJyZW50KSxcXG4tXFx0XFx0XFx0ICB3aHksIGItXFx1MDAzZWJtX3doeSA/OiBcXFwiP1xcXCIsXFxuLVxcdFxcdFxcdCAgYi1cXHUwMDNlYm1fdGFzay1cXHUwMDNlY29tbSwgdGFza19waWRfbnIoYi1cXHUwMDNlYm1fdGFzaykpO1xcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZiLVxcdTAwM2VibV9jaGFuZ2UpO1xcbi1cXHR9XFxuK1xcdF9fYWNxdWlyZShkcmJkX2Rldl9ibV9sb2NrKTtcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2Yi1cXHUwMDNlYm1fY2hhbmdlKTtcXG4gXFx0aWYgKEJNX0xPQ0tFRF9NQVNLIFxcdTAwMjYgYi1cXHUwMDNlYm1fZmxhZ3MpXFxuIFxcdFxcdGRyYmRfZXJyKGRldmljZSwgXFxcIkZJWE1FIGJpdG1hcCBhbHJlYWR5IGxvY2tlZCBpbiBibV9sb2NrXFxcXG5cXFwiKTtcXG4gXFx0Yi1cXHUwMDNlYm1fZmxhZ3MgfD0gZmxhZ3MgXFx1MDAyNiBCTV9MT0NLRURfTUFTSztcXG5AQCAtMTQ5LDEyICsxMzgsMTAgQEAgdm9pZCBkcmJkX2JtX2xvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNoYXIgKndoeSwgZW51bSBibV9mbGFnIGZsYWdzKVxcbiB9XFxuIFxcbiB2b2lkIGRyYmRfYm1fdW5sb2NrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxcbitcXHRfX3JlbGVhc2VzKGRyYmRfZGV2X2JtX2xvY2spXFxuK1xcdF9fcmVsZWFzZXMoXFx1MDAyNmRldmljZS1cXHUwMDNlYml0bWFwLVxcdTAwM2VibV9jaGFuZ2UpXFxuIHtcXG4gXFx0c3RydWN0IGRyYmRfYml0bWFwICpiID0gZGV2aWNlLVxcdTAwM2ViaXRtYXA7XFxuLVxcdGlmICghYikge1xcbi1cXHRcXHRkcmJkX2VycihkZXZpY2UsIFxcXCJGSVhNRSBubyBiaXRtYXAgaW4gZHJiZF9ibV91bmxvY2shP1xcXFxuXFxcIik7XFxuLVxcdFxcdHJldHVybjtcXG4tXFx0fVxcbiBcXG4gXFx0aWYgKCEoQk1fTE9DS0VEX01BU0sgXFx1MDAyNiBkZXZpY2UtXFx1MDAzZWJpdG1hcC1cXHUwMDNlYm1fZmxhZ3MpKVxcbiBcXHRcXHRkcmJkX2VycihkZXZpY2UsIFxcXCJGSVhNRSBiaXRtYXAgbm90IGxvY2tlZCBpbiBibV91bmxvY2tcXFxcblxcXCIpO1xcbkBAIC0xNjMsNiArMTUwLDcgQEAgdm9pZCBkcmJkX2JtX3VubG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcXG4gXFx0Yi1cXHUwMDNlYm1fd2h5ICA9IE5VTEw7XFxuIFxcdGItXFx1MDAzZWJtX3Rhc2sgPSBOVUxMO1xcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmItXFx1MDAzZWJtX2NoYW5nZSk7XFxuK1xcdF9fcmVsZWFzZShkcmJkX2Rldl9ibV9sb2NrKTtcXG4gfVxcbiBcXG4gLyogd2Ugc3RvcmUgc29tZSBcXFwibWV0YVxcXCIgaW5mbyBhYm91dCBvdXIgcGFnZXMgaW4gcGFnZS1cXHUwMDNlcHJpdmF0ZSAqL1xcbkBAIC05ODcsNyArOTc1LDcgQEAgc3RhdGljIGlubGluZSBzZWN0b3JfdCBkcmJkX21kX2xhc3RfYml0bWFwX3NlY3RvcihzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldilcXG4gXFx0fVxcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBibV9wYWdlX2lvX2FzeW5jKHN0cnVjdCBkcmJkX2JtX2Fpb19jdHggKmN0eCwgaW50IHBhZ2VfbnIpIF9fbXVzdF9ob2xkKGxvY2FsKVxcbitzdGF0aWMgdm9pZCBibV9wYWdlX2lvX2FzeW5jKHN0cnVjdCBkcmJkX2JtX2Fpb19jdHggKmN0eCwgaW50IHBhZ2VfbnIpXFxuIHtcXG4gXFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBjdHgtXFx1MDAzZWRldmljZTtcXG4gXFx0ZW51bSByZXFfb3Agb3AgPSBjdHgtXFx1MDAzZWZsYWdzIFxcdTAwMjYgQk1fQUlPX1JFQUQgPyBSRVFfT1BfUkVBRCA6IFJFUV9PUF9XUklURTtcXG5AQCAtMTA2MCw3ICsxMDQ4LDggQEAgc3RhdGljIHZvaWQgYm1fcGFnZV9pb19hc3luYyhzdHJ1Y3QgZHJiZF9ibV9haW9fY3R4ICpjdHgsIGludCBwYWdlX25yKSBfX211c3RfaG9cXG4gLypcXG4gICogYm1fcnc6IHJlYWQvd3JpdGUgdGhlIHdob2xlIGJpdG1hcCBmcm9tL3RvIGl0cyBvbiBkaXNrIGxvY2F0aW9uLlxcbiAgKi9cXG4tc3RhdGljIGludCBibV9ydyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgdW5zaWduZWQgaW50IGZsYWdzLCB1bnNpZ25lZCBsYXp5X3dyaXRlb3V0X3VwcGVyX2lkeCkgX19tdXN0X2hvbGQobG9jYWwpXFxuK3N0YXRpYyBpbnQgYm1fcncoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IHVuc2lnbmVkIGludCBmbGFncyxcXG4rXFx0XFx0IHVuc2lnbmVkIGxhenlfd3JpdGVvdXRfdXBwZXJfaWR4KVxcbiB7XFxuIFxcdHN0cnVjdCBkcmJkX2JtX2Fpb19jdHggKmN0eDtcXG4gXFx0c3RydWN0IGRyYmRfYml0bWFwICpiID0gZGV2aWNlLVxcdTAwM2ViaXRtYXA7XFxuQEAgLTEyMTUsNyArMTIwNCw3IEBAIHN0YXRpYyBpbnQgYm1fcncoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IHVuc2lnbmVkIGludCBmbGFncywgdW5zaWduZWRcXG4gICogQGRldmljZTpcXHREUkJEIGRldmljZS5cXG4gICovXFxuIGludCBkcmJkX2JtX3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuLVxcdFxcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxcbitcXHRcXHQgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxcbiBcXG4ge1xcbiBcXHRyZXR1cm4gYm1fcncoZGV2aWNlLCBCTV9BSU9fUkVBRCwgMCk7XFxuQEAgLTEyMjgsNyArMTIxNyw3IEBAIGludCBkcmJkX2JtX3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuICAqIFdpbGwgb25seSB3cml0ZSBwYWdlcyB0aGF0IGhhdmUgY2hhbmdlZCBzaW5jZSBsYXN0IElPLlxcbiAgKi9cXG4gaW50IGRyYmRfYm1fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuLVxcdFxcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxcbitcXHRcXHQgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcXG4ge1xcbiBcXHRyZXR1cm4gYm1fcncoZGV2aWNlLCAwLCAwKTtcXG4gfVxcbkBAIC0xMjQwLDcgKzEyMjksNyBAQCBpbnQgZHJiZF9ibV93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4gICogV2lsbCB3cml0ZSBhbGwgcGFnZXMuXFxuICAqL1xcbiBpbnQgZHJiZF9ibV93cml0ZV9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuLVxcdFxcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXFxuK1xcdFxcdCAgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcXG4ge1xcbiBcXHRyZXR1cm4gYm1fcncoZGV2aWNlLCBCTV9BSU9fV1JJVEVfQUxMX1BBR0VTLCAwKTtcXG4gfVxcbkBAIC0xMjUwLDcgKzEyMzksNyBAQCBpbnQgZHJiZF9ibV93cml0ZV9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuICAqIEBkZXZpY2U6XFx0RFJCRCBkZXZpY2UuXFxuICAqIEB1cHBlcl9pZHg6XFx0MDogd3JpdGUgYWxsIGNoYW5nZWQgcGFnZXM7ICt2ZTogcGFnZSBpbmRleCB0byBzdG9wIHNjYW5uaW5nIGZvciBjaGFuZ2VkIHBhZ2VzXFxuICAqL1xcbi1pbnQgZHJiZF9ibV93cml0ZV9sYXp5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCB1cHBlcl9pZHgpIF9fbXVzdF9ob2xkKGxvY2FsKVxcbitpbnQgZHJiZF9ibV93cml0ZV9sYXp5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCB1cHBlcl9pZHgpXFxuIHtcXG4gXFx0cmV0dXJuIGJtX3J3KGRldmljZSwgQk1fQUlPX0NPUFlfUEFHRVMsIHVwcGVyX2lkeCk7XFxuIH1cXG5AQCAtMTI2Nyw3ICsxMjU2LDcgQEAgaW50IGRyYmRfYm1fd3JpdGVfbGF6eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgdXBwZXJfaWR4KSBfX211c3RfaG9cXG4gICogcGVuZGluZyByZXN5bmMgYWNrcyBhcmUgc3RpbGwgYmVpbmcgcHJvY2Vzc2VkLlxcbiAgKi9cXG4gaW50IGRyYmRfYm1fd3JpdGVfY29weV9wYWdlcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4tXFx0XFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcXG4rXFx0XFx0XFx0ICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXFxuIHtcXG4gXFx0cmV0dXJuIGJtX3J3KGRldmljZSwgQk1fQUlPX0NPUFlfUEFHRVMsIDApO1xcbiB9XFxuQEAgLTEyNzYsNyArMTI2NSw3IEBAIGludCBkcmJkX2JtX3dyaXRlX2NvcHlfcGFnZXMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuICAqIGRyYmRfYm1fd3JpdGVfaGludGVkKCkgLSBXcml0ZSBiaXRtYXAgcGFnZXMgd2l0aCBcXFwiaGludFxcXCIgbWFya3MsIGlmIHRoZXkgaGF2ZSBjaGFuZ2VkLlxcbiAgKiBAZGV2aWNlOlxcdERSQkQgZGV2aWNlLlxcbiAgKi9cXG4taW50IGRyYmRfYm1fd3JpdGVfaGludGVkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcXG4raW50IGRyYmRfYm1fd3JpdGVfaGludGVkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxcbiB7XFxuIFxcdHJldHVybiBibV9ydyhkZXZpY2UsIEJNX0FJT19XUklURV9ISU5URUQgfCBCTV9BSU9fQ09QWV9QQUdFUywgMCk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfY29uZmlnLmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9jb25maWcuaFxcbmluZGV4IGQyMTUzNjVjNmJiMWIwLi4xNmE5ODViMzBkZDNmZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9jb25maWcuaFxcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2NvbmZpZy5oXFxuQEAgLTcsNyArNyw3IEBAXFxuICNpZm5kZWYgRFJCRF9DT05GSUdfSFxcbiAjZGVmaW5lIERSQkRfQ09ORklHX0hcXG4gXFxuLWV4dGVybiBjb25zdCBjaGFyICpkcmJkX2J1aWxkdGFnKHZvaWQpO1xcbitjb25zdCBjaGFyICpkcmJkX2J1aWxkdGFnKHZvaWQpO1xcbiBcXG4gI2RlZmluZSBSRUxfVkVSU0lPTiBcXFwiOC40LjExXFxcIlxcbiAjZGVmaW5lIFBST19WRVJTSU9OX01JTiA4NlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9pbnQuaCBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludC5oXFxuaW5kZXggNDhiNDVjMzE0MmY3NmEuLjczY2VhYWIzODQyZDBlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludC5oXFxuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50LmhcXG5AQCAtMTA5LDcgKzEwOSw3IEBAIGV4dGVybiBzdHJ1Y3QgcmF0ZWxpbWl0X3N0YXRlIGRyYmRfcmF0ZWxpbWl0X3N0YXRlO1xcbiBleHRlcm4gc3RydWN0IGlkciBkcmJkX2RldmljZXM7IC8qIFJDVSwgdXBkYXRlczogZ2VubF9sb2NrKCkgKi9cXG4gZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgZHJiZF9yZXNvdXJjZXM7IC8qIFJDVSwgdXBkYXRlczogZ2VubF9sb2NrKCkgKi9cXG4gXFxuLWV4dGVybiBjb25zdCBjaGFyICpjbWRuYW1lKGVudW0gZHJiZF9wYWNrZXQgY21kKTtcXG4rY29uc3QgY2hhciAqY21kbmFtZShlbnVtIGRyYmRfcGFja2V0IGNtZCk7XFxuIFxcbiAvKiBmb3Igc2VuZGluZy9yZWNlaXZpbmcgdGhlIGJpdG1hcCxcXG4gICogcG9zc2libHkgaW4gc29tZSBlbmNvZGluZyBzY2hlbWUgKi9cXG5AQCAtMTI5LDggKzEyOSw4IEBAIHN0cnVjdCBibV94ZmVyX2N0eCB7XFxuIFxcdHVuc2lnbmVkIGJ5dGVzWzJdO1xcbiB9O1xcbiBcXG4tZXh0ZXJuIHZvaWQgSU5GT19ibV94ZmVyX3N0YXRzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcXG4tXFx0XFx0XFx0ICAgICAgIGNvbnN0IGNoYXIgKmRpcmVjdGlvbiwgc3RydWN0IGJtX3hmZXJfY3R4ICpjKTtcXG4rdm9pZCBJTkZPX2JtX3hmZXJfc3RhdHMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLFxcbitcXHRcXHRcXHRjb25zdCBjaGFyICpkaXJlY3Rpb24sIHN0cnVjdCBibV94ZmVyX2N0eCAqYyk7XFxuIFxcbiBzdGF0aWMgaW5saW5lIHZvaWQgYm1feGZlcl9jdHhfYml0X3RvX3dvcmRfb2Zmc2V0KHN0cnVjdCBibV94ZmVyX2N0eCAqYylcXG4ge1xcbkBAIC0xNTEsNyArMTUxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGJtX3hmZXJfY3R4X2JpdF90b193b3JkX29mZnNldChzdHJ1Y3QgYm1feGZlcl9jdHggKmMpXFxuICNlbmRpZlxcbiB9XFxuIFxcbi1leHRlcm4gdW5zaWduZWQgaW50IGRyYmRfaGVhZGVyX3NpemUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XFxuK3Vuc2lnbmVkIGludCBkcmJkX2hlYWRlcl9zaXplKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xcbiBcXG4gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuIGVudW0gZHJiZF90aHJlYWRfc3RhdGUge1xcbkBAIC0xOTUsMTAgKzE5NSwxMCBAQCBzdHJ1Y3QgZHJiZF9kZXZpY2Vfd29yayB7XFxuIFxcbiAjaW5jbHVkZSBcXFwiZHJiZF9pbnRlcnZhbC5oXFxcIlxcbiBcXG4tZXh0ZXJuIGludCBkcmJkX3dhaXRfbWlzYyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7XFxuK2V4dGVybiBzdHJ1Y3QgbXV0ZXggcmVzb3VyY2VzX211dGV4O1xcbiBcXG4tZXh0ZXJuIHZvaWQgbG9ja19hbGxfcmVzb3VyY2VzKHZvaWQpO1xcbi1leHRlcm4gdm9pZCB1bmxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKTtcXG4rdm9pZCBsb2NrX2FsbF9yZXNvdXJjZXModm9pZCkgX19hY3F1aXJlcyhcXHUwMDI2cmVzb3VyY2VzX211dGV4KTtcXG4rdm9pZCB1bmxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKSBfX3JlbGVhc2VzKFxcdTAwMjZyZXNvdXJjZXNfbXV0ZXgpO1xcbiBcXG4gc3RydWN0IGRyYmRfcmVxdWVzdCB7XFxuIFxcdHN0cnVjdCBkcmJkX3dvcmsgdztcXG5AQCAtNTU5LDcgKzU1OSw3IEBAIHN0cnVjdCBmaWZvX2J1ZmZlciB7XFxuIFxcdGludCB0b3RhbDsgLyogc3VtIG9mIGFsbCB2YWx1ZXMgKi9cXG4gXFx0aW50IHZhbHVlc1tdIF9fY291bnRlZF9ieShzaXplKTtcXG4gfTtcXG4tZXh0ZXJuIHN0cnVjdCBmaWZvX2J1ZmZlciAqZmlmb19hbGxvYyh1bnNpZ25lZCBpbnQgZmlmb19zaXplKTtcXG4rc3RydWN0IGZpZm9fYnVmZmVyICpmaWZvX2FsbG9jKHVuc2lnbmVkIGludCBmaWZvX3NpemUpO1xcbiBcXG4gLyogZmxhZyBiaXRzIHBlciBjb25uZWN0aW9uICovXFxuIGVudW0ge1xcbkBAIC05OTgsOTMgKzk5OCwxMDQgQEAgZW51bSBkZHNfZmxhZ3Mge1xcbiBcXHRERFNGX05PX1JFU1lOQyA9IDIsIC8qIERvIG5vdCBydW4gYSByZXN5bmMgZm9yIHRoZSBuZXcgc3BhY2UgKi9cXG4gfTtcXG4gXFxuLWV4dGVybiB2b2lkIGRyYmRfaW5pdF9zZXRfZGVmYXVsdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbi1leHRlcm4gaW50ICBkcmJkX3RocmVhZF9zdGFydChzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7XFxuLWV4dGVybiB2b2lkIF9kcmJkX3RocmVhZF9zdG9wKHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpLCBpbnQgcmVzdGFydCwgaW50IHdhaXQpO1xcbit2b2lkIGRyYmRfaW5pdF9zZXRfZGVmYXVsdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbitpbnQgZHJiZF90aHJlYWRfc3RhcnQoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xcbit2b2lkIF9kcmJkX3RocmVhZF9zdG9wKHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpLCBpbnQgcmVzdGFydCwgaW50IHdhaXQpO1xcbiAjaWZkZWYgQ09ORklHX1NNUFxcbi1leHRlcm4gdm9pZCBkcmJkX3RocmVhZF9jdXJyZW50X3NldF9jcHUoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xcbit2b2lkIGRyYmRfdGhyZWFkX2N1cnJlbnRfc2V0X2NwdShzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7XFxuICNlbHNlXFxuICNkZWZpbmUgZHJiZF90aHJlYWRfY3VycmVudF9zZXRfY3B1KEEpICh7fSlcXG4gI2VuZGlmXFxuLWV4dGVybiB2b2lkIHRsX3JlbGVhc2Uoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCB1bnNpZ25lZCBpbnQgYmFycmllcl9ucixcXG4tXFx0XFx0ICAgICAgIHVuc2lnbmVkIGludCBzZXRfc2l6ZSk7XFxuLWV4dGVybiB2b2lkIHRsX2NsZWFyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKik7XFxuLWV4dGVybiB2b2lkIGRyYmRfZnJlZV9zb2NrKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xcbi1leHRlcm4gaW50IGRyYmRfc2VuZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxcbi1cXHRcXHQgICAgIHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUsIHVuc2lnbmVkIG1zZ19mbGFncyk7XFxuLWV4dGVybiBpbnQgZHJiZF9zZW5kX2FsbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHN0cnVjdCBzb2NrZXQgKiwgdm9pZCAqLCBzaXplX3QsXFxuLVxcdFxcdFxcdCB1bnNpZ25lZCk7XFxuLVxcbi1leHRlcm4gaW50IF9fZHJiZF9zZW5kX3Byb3RvY29sKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGVudW0gZHJiZF9wYWNrZXQgY21kKTtcXG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfcHJvdG9jb2woc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XFxuLWV4dGVybiBpbnQgZHJiZF9zZW5kX3V1aWRzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xcbi1leHRlcm4gaW50IGRyYmRfc2VuZF91dWlkc19za2lwX2luaXRpYWxfc3luYyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9nZW5fYW5kX3NlbmRfc3luY191dWlkKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9zaXplcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBpbnQgdHJpZ2dlcl9yZXBseSwgZW51bSBkZHNfZmxhZ3MgZmxhZ3MpO1xcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9zdGF0ZShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlIHMpO1xcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9jdXJyZW50X3N0YXRlKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9zeW5jX3BhcmFtKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xcbi1leHRlcm4gdm9pZCBkcmJkX3NlbmRfYl9hY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdTMyIGJhcnJpZXJfbnIsXFxuLVxcdFxcdFxcdCAgICB1MzIgc2V0X3NpemUpO1xcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9hY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCxcXG4tXFx0XFx0XFx0IHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9zZW5kX2Fja19ycChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxcbi1cXHRcXHRcXHQgICAgIHN0cnVjdCBwX2Jsb2NrX3JlcSAqcnApO1xcbi1leHRlcm4gdm9pZCBkcmJkX3NlbmRfYWNrX2RwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsXFxuLVxcdFxcdFxcdCAgICAgc3RydWN0IHBfZGF0YSAqZHAsIGludCBkYXRhX3NpemUpO1xcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9hY2tfZXgoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCxcXG4tXFx0XFx0XFx0ICAgIHNlY3Rvcl90IHNlY3RvciwgaW50IGJsa3NpemUsIHU2NCBibG9ja19pZCk7XFxuLWV4dGVybiBpbnQgZHJiZF9zZW5kX291dF9vZl9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3JlcXVlc3QgKik7XFxuLWV4dGVybiBpbnQgZHJiZF9zZW5kX2Jsb2NrKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsXFxuLVxcdFxcdFxcdCAgIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqKTtcXG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfZGJsb2NrKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSk7XFxuLWV4dGVybiBpbnQgZHJiZF9zZW5kX2RyZXF1ZXN0KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGludCBjbWQsXFxuLVxcdFxcdFxcdCAgICAgIHNlY3Rvcl90IHNlY3RvciwgaW50IHNpemUsIHU2NCBibG9ja19pZCk7XFxuLWV4dGVybiBpbnQgZHJiZF9zZW5kX2RyZXF1ZXN0X2NzdW0oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc2VjdG9yX3Qgc2VjdG9yLFxcbi1cXHRcXHRcXHRcXHQgICBpbnQgc2l6ZSwgdm9pZCAqZGlnZXN0LCBpbnQgZGlnZXN0X3NpemUsXFxuLVxcdFxcdFxcdFxcdCAgIGVudW0gZHJiZF9wYWNrZXQgY21kKTtcXG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfb3ZfcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplKTtcXG4tXFxuLWV4dGVybiBpbnQgZHJiZF9zZW5kX2JpdG1hcChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9zZW5kX3NyX3JlcGx5KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9zdGF0ZV9ydiByZXRjb2RlKTtcXG4tZXh0ZXJuIHZvaWQgY29ubl9zZW5kX3NyX3JlcGx5KHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGVudW0gZHJiZF9zdGF0ZV9ydiByZXRjb2RlKTtcXG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfcnNfZGVhbGxvY2F0ZWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICopO1xcbi1leHRlcm4gdm9pZCBkcmJkX2JhY2tpbmdfZGV2X2ZyZWUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpsZGV2KTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9kZXZpY2VfY2xlYW51cChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLWV4dGVybiB2b2lkIGRyYmRfcHJpbnRfdXVpZHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKnRleHQpO1xcbi1leHRlcm4gdm9pZCBkcmJkX3F1ZXVlX3VucGx1ZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLVxcbi1leHRlcm4gdm9pZCBjb25uX21kX3N5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XFxuLWV4dGVybiB2b2lkIGRyYmRfbWRfd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHZvaWQgKmJ1ZmZlcik7XFxuLWV4dGVybiB2b2lkIGRyYmRfbWRfc3luYyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLWV4dGVybiBpbnQgIGRyYmRfbWRfcmVhZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKmJkZXYpO1xcbi1leHRlcm4gdm9pZCBkcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCk7XFxuLWV4dGVybiB2b2lkIF9kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCk7XFxuLWV4dGVybiB2b2lkIGRyYmRfdXVpZF9uZXdfY3VycmVudChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpO1xcbi1leHRlcm4gdm9pZCBkcmJkX3V1aWRfc2V0X2JtKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCk7XFxuLWV4dGVybiB2b2lkIGRyYmRfdXVpZF9tb3ZlX2hpc3Rvcnkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcXG4tZXh0ZXJuIHZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCk7XFxuLWV4dGVybiB2b2lkIGRyYmRfbWRfc2V0X2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFncykgX19tdXN0X2hvbGQobG9jYWwpO1xcbi1leHRlcm4gdm9pZCBkcmJkX21kX2NsZWFyX2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFncylfX211c3RfaG9sZChsb2NhbCk7XFxuLWV4dGVybiBpbnQgZHJiZF9tZF90ZXN0X2ZsYWcoc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKiwgaW50KTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9tZF9tYXJrX2RpcnR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9xdWV1ZV9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuLVxcdFxcdFxcdFxcdCBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopLFxcbi1cXHRcXHRcXHRcXHQgdm9pZCAoKmRvbmUpKHN0cnVjdCBkcmJkX2RldmljZSAqLCBpbnQpLFxcbi1cXHRcXHRcXHRcXHQgY2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MsXFxuLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xcbi1leHRlcm4gaW50IGRyYmRfYml0bWFwX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbi1cXHRcXHRpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopLFxcbi1cXHRcXHRjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncyxcXG4tXFx0XFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcXG4tZXh0ZXJuIGludCBkcmJkX2JpdG1hcF9pb19mcm9tX3dvcmtlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4tXFx0XFx0aW50ICgqaW9fZm4pKHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKSxcXG4tXFx0XFx0Y2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MsXFxuLVxcdFxcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XFxuLWV4dGVybiBpbnQgZHJiZF9ibWlvX3NldF9uX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbi1cXHRcXHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcXG4tZXh0ZXJuIGludCBkcmJkX2JtaW9fY2xlYXJfbl93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4tXFx0XFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7XFxuK3ZvaWQgdGxfcmVsZWFzZShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHVuc2lnbmVkIGludCBiYXJyaWVyX25yLFxcbitcXHRcXHR1bnNpZ25lZCBpbnQgc2V0X3NpemUpO1xcbit2b2lkIHRsX2NsZWFyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKik7XFxuK3ZvaWQgZHJiZF9mcmVlX3NvY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XFxuK2ludCBkcmJkX3NlbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgc3RydWN0IHNvY2tldCAqc29jayxcXG4rXFx0ICAgICAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSwgdW5zaWduZWQgbXNnX2ZsYWdzKTtcXG4raW50IGRyYmRfc2VuZF9hbGwoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBzdHJ1Y3Qgc29ja2V0ICosIHZvaWQgKiwgc2l6ZV90LFxcbitcXHRcXHQgIHVuc2lnbmVkKTtcXG4rXFxuK2ludCBfX2RyYmRfc2VuZF9wcm90b2NvbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLFxcbitcXHRcXHRcXHQgZW51bSBkcmJkX3BhY2tldCBjbWQpO1xcbitpbnQgZHJiZF9zZW5kX3Byb3RvY29sKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xcbitpbnQgZHJiZF9zZW5kX3V1aWRzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xcbitpbnQgZHJiZF9zZW5kX3V1aWRzX3NraXBfaW5pdGlhbF9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xcbit2b2lkIGRyYmRfZ2VuX2FuZF9zZW5kX3N5bmNfdXVpZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcXG4raW50IGRyYmRfc2VuZF9zaXplcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBpbnQgdHJpZ2dlcl9yZXBseSxcXG4rXFx0XFx0ICAgIGVudW0gZGRzX2ZsYWdzIGZsYWdzKTtcXG4raW50IGRyYmRfc2VuZF9zdGF0ZShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlIHMpO1xcbitpbnQgZHJiZF9zZW5kX2N1cnJlbnRfc3RhdGUoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7XFxuK2ludCBkcmJkX3NlbmRfc3luY19wYXJhbShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcXG4rdm9pZCBkcmJkX3NlbmRfYl9hY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdTMyIGJhcnJpZXJfbnIsXFxuK1xcdFxcdCAgICAgdTMyIHNldF9zaXplKTtcXG4raW50IGRyYmRfc2VuZF9hY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCxcXG4rXFx0XFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKik7XFxuK3ZvaWQgZHJiZF9zZW5kX2Fja19ycChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxcbitcXHRcXHQgICAgICBzdHJ1Y3QgcF9ibG9ja19yZXEgKnJwKTtcXG4rdm9pZCBkcmJkX3NlbmRfYWNrX2RwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsXFxuK1xcdFxcdCAgICAgIHN0cnVjdCBwX2RhdGEgKmRwLCBpbnQgZGF0YV9zaXplKTtcXG4raW50IGRyYmRfc2VuZF9hY2tfZXgoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCxcXG4rXFx0XFx0ICAgICBzZWN0b3JfdCBzZWN0b3IsIGludCBibGtzaXplLCB1NjQgYmxvY2tfaWQpO1xcbitpbnQgZHJiZF9zZW5kX291dF9vZl9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3JlcXVlc3QgKik7XFxuK2ludCBkcmJkX3NlbmRfYmxvY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCxcXG4rXFx0XFx0ICAgIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqKTtcXG4raW50IGRyYmRfc2VuZF9kYmxvY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKTtcXG4raW50IGRyYmRfc2VuZF9kcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBpbnQgY21kLCBzZWN0b3JfdCBzZWN0b3IsXFxuK1xcdFxcdCAgICAgICBpbnQgc2l6ZSwgdTY0IGJsb2NrX2lkKTtcXG4raW50IGRyYmRfc2VuZF9kcmVxdWVzdF9jc3VtKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHNlY3Rvcl90IHNlY3RvcixcXG4rXFx0XFx0XFx0ICAgIGludCBzaXplLCB2b2lkICpkaWdlc3QsIGludCBkaWdlc3Rfc2l6ZSxcXG4rXFx0XFx0XFx0ICAgIGVudW0gZHJiZF9wYWNrZXQgY21kKTtcXG4raW50IGRyYmRfc2VuZF9vdl9yZXF1ZXN0KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHNlY3Rvcl90IHNlY3RvciwgaW50IHNpemUpO1xcbitcXG4raW50IGRyYmRfc2VuZF9iaXRtYXAoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuK1xcdFxcdCAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcXG4rdm9pZCBkcmJkX3NlbmRfc3JfcmVwbHkoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3N0YXRlX3J2IHJldGNvZGUpO1xcbit2b2lkIGNvbm5fc2VuZF9zcl9yZXBseShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLFxcbitcXHRcXHRcXHRlbnVtIGRyYmRfc3RhdGVfcnYgcmV0Y29kZSk7XFxuK2ludCBkcmJkX3NlbmRfcnNfZGVhbGxvY2F0ZWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKixcXG4rXFx0XFx0XFx0ICAgICBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKik7XFxuK3ZvaWQgZHJiZF9iYWNraW5nX2Rldl9mcmVlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHQgICBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqbGRldik7XFxuK3ZvaWQgZHJiZF9kZXZpY2VfY2xlYW51cChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuK3ZvaWQgZHJiZF9wcmludF91dWlkcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqdGV4dCk7XFxuK3ZvaWQgZHJiZF9xdWV1ZV91bnBsdWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbitcXG4rdm9pZCBjb25uX21kX3N5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XFxuK3ZvaWQgZHJiZF9tZF93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdm9pZCAqYnVmZmVyKTtcXG4rdm9pZCBkcmJkX21kX3N5bmMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbitpbnQgZHJiZF9tZF9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldik7XFxuK3ZvaWQgZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCk7XFxuK3ZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpO1xcbit2b2lkIGRyYmRfdXVpZF9uZXdfY3VycmVudChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuK3ZvaWQgZHJiZF91dWlkX3NldF9ibShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdTY0IHZhbCk7XFxuK3ZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuK3ZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKTtcXG4rdm9pZCBkcmJkX21kX3NldF9mbGFnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgZmxhZ3MpO1xcbit2b2lkIGRyYmRfbWRfY2xlYXJfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWdzKTtcXG4raW50IGRyYmRfbWRfdGVzdF9mbGFnKHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICosIGludCk7XFxuK3ZvaWQgZHJiZF9tZF9tYXJrX2RpcnR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4rdm9pZCBkcmJkX3F1ZXVlX2JpdG1hcF9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4rXFx0XFx0XFx0ICBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosXFxuK1xcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKSxcXG4rXFx0XFx0XFx0ICB2b2lkICgqZG9uZSkoc3RydWN0IGRyYmRfZGV2aWNlICosIGludCksIGNoYXIgKndoeSxcXG4rXFx0XFx0XFx0ICBlbnVtIGJtX2ZsYWcgZmxhZ3MsXFxuK1xcdFxcdFxcdCAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcXG4raW50IGRyYmRfYml0bWFwX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHQgICBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosXFxuK1xcdFxcdFxcdFxcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopLFxcbitcXHRcXHQgICBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncyxcXG4rXFx0XFx0ICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcXG4raW50IGRyYmRfYml0bWFwX2lvX2Zyb21fd29ya2VyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHQgICAgICAgaW50ICgqaW9fZm4pKHN0cnVjdCBkcmJkX2RldmljZSAqLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiksXFxuK1xcdFxcdFxcdCAgICAgICBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncyxcXG4rXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XFxuK2ludCBkcmJkX2JtaW9fc2V0X25fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuK1xcdFxcdFxcdCAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcXG4raW50IGRyYmRfYm1pb19jbGVhcl9uX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHQgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcXG4raW50IGRyYmRfd2FpdF9taXNjKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSlcXG4rXFx0X19tdXN0X2hvbGQoXFx1MDAyNmRldmljZS1cXHUwMDNlcmVzb3VyY2UtXFx1MDAzZXJlcV9sb2NrKTtcXG4gXFxuIC8qIE1ldGEgZGF0YSBsYXlvdXRcXG4gICpcXG5AQCAtMTI3NSw1NiArMTI4Niw2NCBAQCBzdHJ1Y3QgYm1fZXh0ZW50IHtcXG4gI2RlZmluZSBEUkJEX01BWF9CQVRDSF9CSU9fU0laRVxcdCAoQUxfVVBEQVRFU19QRVJfVFJBTlNBQ1RJT04vMipBTF9FWFRFTlRfU0laRSlcXG4gI2RlZmluZSBEUkJEX01BWF9CQklPX1NFQ1RPUlMgICAgKERSQkRfTUFYX0JBVENIX0JJT19TSVpFIFxcdTAwM2VcXHUwMDNlIDkpXFxuIFxcbi1leHRlcm4gaW50ICBkcmJkX2JtX2luaXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbi1leHRlcm4gaW50ICBkcmJkX2JtX3Jlc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9ycywgaW50IHNldF9uZXdfYml0cyk7XFxuLWV4dGVybiB2b2lkIGRyYmRfYm1fY2xlYW51cChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLWV4dGVybiB2b2lkIGRyYmRfYm1fc2V0X2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLWV4dGVybiB2b2lkIGRyYmRfYm1fY2xlYXJfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4raW50IGRyYmRfYm1faW5pdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuK2ludCBkcmJkX2JtX3Jlc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9ycyxcXG4rXFx0XFx0ICAgaW50IHNldF9uZXdfYml0cyk7XFxuK3ZvaWQgZHJiZF9ibV9jbGVhbnVwKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4rdm9pZCBkcmJkX2JtX3NldF9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbit2b2lkIGRyYmRfYm1fY2xlYXJfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4gLyogc2V0L2NsZWFyL3Rlc3Qgb25seSBhIGZldyBiaXRzIGF0IGEgdGltZSAqL1xcbi1leHRlcm4gaW50ICBkcmJkX2JtX3NldF9iaXRzKFxcbi1cXHRcXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBzLCB1bnNpZ25lZCBsb25nIGUpO1xcbi1leHRlcm4gaW50ICBkcmJkX2JtX2NsZWFyX2JpdHMoXFxuLVxcdFxcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIHMsIHVuc2lnbmVkIGxvbmcgZSk7XFxuLWV4dGVybiBpbnQgZHJiZF9ibV9jb3VudF9iaXRzKFxcbi1cXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgdW5zaWduZWQgbG9uZyBzLCBjb25zdCB1bnNpZ25lZCBsb25nIGUpO1xcbitpbnQgZHJiZF9ibV9zZXRfYml0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBzLFxcbitcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgZSk7XFxuK2ludCBkcmJkX2JtX2NsZWFyX2JpdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgcyxcXG4rXFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgZSk7XFxuK2ludCBkcmJkX2JtX2NvdW50X2JpdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IHVuc2lnbmVkIGxvbmcgcyxcXG4rXFx0XFx0ICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgZSk7XFxuIC8qIGJtX3NldF9iaXRzIHZhcmlhbnQgZm9yIHVzZSB3aGlsZSBob2xkaW5nIGRyYmRfYm1fbG9jayxcXG4gICogbWF5IHByb2Nlc3MgdGhlIHdob2xlIGJpdG1hcCBpbiBvbmUgZ28gKi9cXG4tZXh0ZXJuIHZvaWQgX2RyYmRfYm1fc2V0X2JpdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuLVxcdFxcdGNvbnN0IHVuc2lnbmVkIGxvbmcgcywgY29uc3QgdW5zaWduZWQgbG9uZyBlKTtcXG4tZXh0ZXJuIGludCAgZHJiZF9ibV90ZXN0X2JpdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBiaXRucik7XFxuLWV4dGVybiBpbnQgIGRyYmRfYm1fZV93ZWlnaHQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgZW5yKTtcXG4tZXh0ZXJuIGludCAgZHJiZF9ibV9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbi1cXHRcXHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV9tYXJrX2Zvcl93cml0ZW91dChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IHBhZ2VfbnIpO1xcbi1leHRlcm4gaW50ICBkcmJkX2JtX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbi1cXHRcXHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV9yZXNldF9hbF9oaW50cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpO1xcbi1leHRlcm4gaW50ICBkcmJkX2JtX3dyaXRlX2hpbnRlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpO1xcbi1leHRlcm4gaW50ICBkcmJkX2JtX3dyaXRlX2xhenkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIHVwcGVyX2lkeCkgX19tdXN0X2hvbGQobG9jYWwpO1xcbi1leHRlcm4gaW50IGRyYmRfYm1fd3JpdGVfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbi1cXHRcXHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcXG4tZXh0ZXJuIGludCAgZHJiZF9ibV93cml0ZV9jb3B5X3BhZ2VzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbi1cXHRcXHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcXG4tZXh0ZXJuIHNpemVfdFxcdCAgICAgZHJiZF9ibV93b3JkcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLWV4dGVybiB1bnNpZ25lZCBsb25nIGRyYmRfYm1fYml0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLWV4dGVybiBzZWN0b3JfdCAgICAgIGRyYmRfYm1fY2FwYWNpdHkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbit2b2lkIF9kcmJkX2JtX3NldF9iaXRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCB1bnNpZ25lZCBsb25nIHMsXFxuK1xcdFxcdCAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGUpO1xcbitpbnQgZHJiZF9ibV90ZXN0X2JpdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBiaXRucik7XFxuK2ludCBkcmJkX2JtX2Vfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGVucik7XFxuK2ludCBkcmJkX2JtX3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuK1xcdFxcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xcbit2b2lkIGRyYmRfYm1fbWFya19mb3Jfd3JpdGVvdXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBwYWdlX25yKTtcXG4raW50IGRyYmRfYm1fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuK1xcdFxcdCAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcXG4rdm9pZCBkcmJkX2JtX3Jlc2V0X2FsX2hpbnRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4raW50IGRyYmRfYm1fd3JpdGVfaGludGVkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4raW50IGRyYmRfYm1fd3JpdGVfbGF6eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgdXBwZXJfaWR4KTtcXG4raW50IGRyYmRfYm1fd3JpdGVfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHQgICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xcbitpbnQgZHJiZF9ibV93cml0ZV9jb3B5X3BhZ2VzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHQgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XFxuK3NpemVfdCBkcmJkX2JtX3dvcmRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4rdW5zaWduZWQgbG9uZyBkcmJkX2JtX2JpdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbitzZWN0b3JfdCBkcmJkX2JtX2NhcGFjaXR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4gXFxuICNkZWZpbmUgRFJCRF9FTkRfT0ZfQklUTUFQXFx0KH4odW5zaWduZWQgbG9uZykwKVxcbi1leHRlcm4gdW5zaWduZWQgbG9uZyBkcmJkX2JtX2ZpbmRfbmV4dChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBibV9mbyk7XFxuK3Vuc2lnbmVkIGxvbmcgZHJiZF9ibV9maW5kX25leHQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuK1xcdFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgYm1fZm8pO1xcbiAvKiBibV9maW5kX25leHQgdmFyaWFudHMgZm9yIHVzZSB3aGlsZSB5b3UgaG9sZCBkcmJkX2JtX2xvY2soKSAqL1xcbi1leHRlcm4gdW5zaWduZWQgbG9uZyBfZHJiZF9ibV9maW5kX25leHQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgYm1fZm8pO1xcbi1leHRlcm4gdW5zaWduZWQgbG9uZyBfZHJiZF9ibV9maW5kX25leHRfemVybyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBibV9mbyk7XFxuLWV4dGVybiB1bnNpZ25lZCBsb25nIF9kcmJkX2JtX3RvdGFsX3dlaWdodChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLWV4dGVybiB1bnNpZ25lZCBsb25nIGRyYmRfYm1fdG90YWxfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4rdW5zaWduZWQgbG9uZyBfZHJiZF9ibV9maW5kX25leHQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuK1xcdFxcdFxcdFxcdCB1bnNpZ25lZCBsb25nIGJtX2ZvKTtcXG4rdW5zaWduZWQgbG9uZyBfZHJiZF9ibV9maW5kX25leHRfemVybyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgdW5zaWduZWQgbG9uZyBibV9mbyk7XFxuK3Vuc2lnbmVkIGxvbmcgX2RyYmRfYm1fdG90YWxfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4rdW5zaWduZWQgbG9uZyBkcmJkX2JtX3RvdGFsX3dlaWdodChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuIC8qIGZvciByZWNlaXZlX2JpdG1hcCAqL1xcbi1leHRlcm4gdm9pZCBkcmJkX2JtX21lcmdlX2xlbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2l6ZV90IG9mZnNldCxcXG4tXFx0XFx0c2l6ZV90IG51bWJlciwgdW5zaWduZWQgbG9uZyAqYnVmZmVyKTtcXG4rdm9pZCBkcmJkX2JtX21lcmdlX2xlbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IG51bWJlcixcXG4rXFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgKmJ1ZmZlcik7XFxuIC8qIGZvciBfZHJiZF9zZW5kX2JpdG1hcCAqL1xcbi1leHRlcm4gdm9pZCBkcmJkX2JtX2dldF9sZWwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNpemVfdCBvZmZzZXQsXFxuLVxcdFxcdHNpemVfdCBudW1iZXIsIHVuc2lnbmVkIGxvbmcgKmJ1ZmZlcik7XFxuK3ZvaWQgZHJiZF9ibV9nZXRfbGVsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbnVtYmVyLFxcbitcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgKmJ1ZmZlcik7XFxuK1xcbit0b2tlbl9jb250ZXh0X2xvY2soZHJiZF9kZXZfYm1fbG9jayk7XFxuIFxcbi1leHRlcm4gdm9pZCBkcmJkX2JtX2xvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNoYXIgKndoeSwgZW51bSBibV9mbGFnIGZsYWdzKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV91bmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbit2b2lkIGRyYmRfYm1fbG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MpXFxuK1xcdF9fYWNxdWlyZXMoZHJiZF9kZXZfYm1fbG9jayk7XFxuK3ZvaWQgZHJiZF9ibV91bmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXFxuK1xcdF9fcmVsZWFzZXMoZHJiZF9kZXZfYm1fbG9jayk7XFxuIC8qIGRyYmRfbWFpbi5jICovXFxuIFxcbiBleHRlcm4gc3RydWN0IGttZW1fY2FjaGUgKmRyYmRfcmVxdWVzdF9jYWNoZTtcXG5AQCAtMTM1MCwzNyArMTM2OSwzOSBAQCBleHRlcm4gc3RydWN0IGJpb19zZXQgZHJiZF9tZF9pb19iaW9fc2V0O1xcbiAvKiBBbmQgYSBiaW9fc2V0IGZvciBjbG9uaW5nICovXFxuIGV4dGVybiBzdHJ1Y3QgYmlvX3NldCBkcmJkX2lvX2Jpb19zZXQ7XFxuIFxcbi1leHRlcm4gc3RydWN0IG11dGV4IHJlc291cmNlc19tdXRleDtcXG4tXFxuLWV4dGVybiBlbnVtIGRyYmRfcmV0X2NvZGUgZHJiZF9jcmVhdGVfZGV2aWNlKHN0cnVjdCBkcmJkX2NvbmZpZ19jb250ZXh0ICphZG1fY3R4LCB1bnNpZ25lZCBpbnQgbWlub3IpO1xcbi1leHRlcm4gdm9pZCBkcmJkX2Rlc3Ryb3lfZGV2aWNlKHN0cnVjdCBrcmVmICprcmVmKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9kZWxldGVfZGV2aWNlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4tXFxuLWV4dGVybiBzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqZHJiZF9jcmVhdGVfcmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSk7XFxuLWV4dGVybiB2b2lkIGRyYmRfZnJlZV9yZXNvdXJjZShzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UpO1xcbi1cXG4tZXh0ZXJuIGludCBzZXRfcmVzb3VyY2Vfb3B0aW9ucyhzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UsIHN0cnVjdCByZXNfb3B0cyAqcmVzX29wdHMpO1xcbi1leHRlcm4gc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubl9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHJlc19vcHRzICpyZXNfb3B0cyk7XFxuLWV4dGVybiB2b2lkIGRyYmRfZGVzdHJveV9jb25uZWN0aW9uKHN0cnVjdCBrcmVmICprcmVmKTtcXG4tZXh0ZXJuIHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5fZ2V0X2J5X2FkZHJzKHZvaWQgKm15X2FkZHIsIGludCBteV9hZGRyX2xlbixcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIHZvaWQgKnBlZXJfYWRkciwgaW50IHBlZXJfYWRkcl9sZW4pO1xcbi1leHRlcm4gc3RydWN0IGRyYmRfcmVzb3VyY2UgKmRyYmRfZmluZF9yZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9kZXN0cm95X3Jlc291cmNlKHN0cnVjdCBrcmVmICprcmVmKTtcXG4tZXh0ZXJuIHZvaWQgY29ubl9mcmVlX2NyeXB0byhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcXG4rZW51bSBkcmJkX3JldF9jb2RlIGRyYmRfY3JlYXRlX2RldmljZShzdHJ1Y3QgZHJiZF9jb25maWdfY29udGV4dCAqYWRtX2N0eCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgdW5zaWduZWQgaW50IG1pbm9yKTtcXG4rdm9pZCBkcmJkX2Rlc3Ryb3lfZGV2aWNlKHN0cnVjdCBrcmVmICprcmVmKTtcXG4rdm9pZCBkcmJkX2RlbGV0ZV9kZXZpY2Uoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbitcXG4rc3RydWN0IGRyYmRfcmVzb3VyY2UgKmRyYmRfY3JlYXRlX3Jlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUpO1xcbit2b2lkIGRyYmRfZnJlZV9yZXNvdXJjZShzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UpO1xcbitcXG4raW50IHNldF9yZXNvdXJjZV9vcHRpb25zKHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSxcXG4rXFx0XFx0XFx0IHN0cnVjdCByZXNfb3B0cyAqcmVzX29wdHMpO1xcbitzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uX2NyZWF0ZShjb25zdCBjaGFyICpuYW1lLFxcbitcXHRcXHRcXHRcXHQgICAgc3RydWN0IHJlc19vcHRzICpyZXNfb3B0cyk7XFxuK3ZvaWQgZHJiZF9kZXN0cm95X2Nvbm5lY3Rpb24oc3RydWN0IGtyZWYgKmtyZWYpO1xcbitzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uX2dldF9ieV9hZGRycyh2b2lkICpteV9hZGRyLCBpbnQgbXlfYWRkcl9sZW4sXFxuK1xcdFxcdFxcdFxcdFxcdCAgdm9pZCAqcGVlcl9hZGRyLCBpbnQgcGVlcl9hZGRyX2xlbik7XFxuK3N0cnVjdCBkcmJkX3Jlc291cmNlICpkcmJkX2ZpbmRfcmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSk7XFxuK3ZvaWQgZHJiZF9kZXN0cm95X3Jlc291cmNlKHN0cnVjdCBrcmVmICprcmVmKTtcXG4rdm9pZCBjb25uX2ZyZWVfY3J5cHRvKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xcbiBcXG4gLyogZHJiZF9yZXEgKi9cXG4tZXh0ZXJuIHZvaWQgZG9fc3VibWl0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd3MpO1xcbi1leHRlcm4gdm9pZCBfX2RyYmRfbWFrZV9yZXF1ZXN0KHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgYmlvICopO1xcbit2b2lkIGRvX3N1Ym1pdChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndzKTtcXG4rdm9pZCBfX2RyYmRfbWFrZV9yZXF1ZXN0KHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgYmlvICopO1xcbiB2b2lkIGRyYmRfc3VibWl0X2JpbyhzdHJ1Y3QgYmlvICpiaW8pO1xcbiBcXG4gLyogZHJiZF9ubC5jICovXFxuIFxcbiBleHRlcm4gc3RydWN0IG11dGV4IG5vdGlmaWNhdGlvbl9tdXRleDtcXG4gXFxuLWV4dGVybiB2b2lkIGRyYmRfc3VzcGVuZF9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLWV4dGVybiB2b2lkIGRyYmRfcmVzdW1lX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4tZXh0ZXJuIGNoYXIgKnBwc2l6ZShjaGFyICpidWYsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKTtcXG4tZXh0ZXJuIHNlY3Rvcl90IGRyYmRfbmV3X2Rldl9zaXplKHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqLCBzZWN0b3JfdCwgaW50KTtcXG4rdm9pZCBkcmJkX3N1c3BlbmRfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbit2b2lkIGRyYmRfcmVzdW1lX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4rY2hhciAqcHBzaXplKGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyBsb25nIHNpemUpO1xcbitzZWN0b3JfdCBkcmJkX25ld19kZXZfc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKixcXG4rXFx0XFx0XFx0ICAgc2VjdG9yX3QsIGludCk7XFxuIGVudW0gZGV0ZXJtaW5lX2Rldl9zaXplIHtcXG4gXFx0RFNfRVJST1JfU0hSSU5LID0gLTMsXFxuIFxcdERTX0VSUk9SX1NQQUNFX01EID0gLTIsXFxuQEAgLTEzOTAsNDEgKzE0MTEsNDUgQEAgZW51bSBkZXRlcm1pbmVfZGV2X3NpemUge1xcbiBcXHREU19HUkVXID0gMixcXG4gXFx0RFNfR1JFV19GUk9NX1pFUk8gPSAzLFxcbiB9O1xcbi1leHRlcm4gZW51bSBkZXRlcm1pbmVfZGV2X3NpemVcXG4tZHJiZF9kZXRlcm1pbmVfZGV2X3NpemUoc3RydWN0IGRyYmRfZGV2aWNlICosIGVudW0gZGRzX2ZsYWdzLCBzdHJ1Y3QgcmVzaXplX3Bhcm1zICopIF9fbXVzdF9ob2xkKGxvY2FsKTtcXG4tZXh0ZXJuIHZvaWQgcmVzeW5jX2FmdGVyX29ubGluZV9ncm93KHN0cnVjdCBkcmJkX2RldmljZSAqKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9yZWNvbnNpZGVyX3F1ZXVlX3BhcmFtZXRlcnMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuLVxcdFxcdFxcdHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LCBzdHJ1Y3Qgb19xbGltICpvKTtcXG4tZXh0ZXJuIGVudW0gZHJiZF9zdGF0ZV9ydiBkcmJkX3NldF9yb2xlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbi1cXHRcXHRcXHRcXHRcXHRlbnVtIGRyYmRfcm9sZSBuZXdfcm9sZSxcXG4tXFx0XFx0XFx0XFx0XFx0aW50IGZvcmNlKTtcXG4tZXh0ZXJuIGJvb2wgY29ubl90cnlfb3V0ZGF0ZV9wZWVyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xcbi1leHRlcm4gdm9pZCBjb25uX3RyeV9vdXRkYXRlX3BlZXJfYXN5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XFxuLWV4dGVybiBlbnVtIGRyYmRfcGVlcl9zdGF0ZSBjb25uX2toZWxwZXIoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgY2hhciAqY21kKTtcXG4tZXh0ZXJuIGludCBkcmJkX2toZWxwZXIoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNoYXIgKmNtZCk7XFxuK2VudW0gZGV0ZXJtaW5lX2Rldl9zaXplIGRyYmRfZGV0ZXJtaW5lX2Rldl9zaXplKHN0cnVjdCBkcmJkX2RldmljZSAqLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRlbnVtIGRkc19mbGFncyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IHJlc2l6ZV9wYXJtcyAqKTtcXG4rdm9pZCByZXN5bmNfYWZ0ZXJfb25saW5lX2dyb3coc3RydWN0IGRyYmRfZGV2aWNlICopO1xcbit2b2lkIGRyYmRfcmVjb25zaWRlcl9xdWV1ZV9wYXJhbWV0ZXJzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldixcXG4rXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG9fcWxpbSAqbyk7XFxuK2VudW0gZHJiZF9zdGF0ZV9ydiBkcmJkX3NldF9yb2xlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHRcXHQgZW51bSBkcmJkX3JvbGUgbmV3X3JvbGUsIGludCBmb3JjZSk7XFxuK2Jvb2wgY29ubl90cnlfb3V0ZGF0ZV9wZWVyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xcbit2b2lkIGNvbm5fdHJ5X291dGRhdGVfcGVlcl9hc3luYyhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcXG4rZW51bSBkcmJkX3BlZXJfc3RhdGUgY29ubl9raGVscGVyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sXFxuK1xcdFxcdFxcdFxcdCAgY2hhciAqY21kKTtcXG4raW50IGRyYmRfa2hlbHBlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY2hhciAqY21kKTtcXG4gXFxuIC8qIGRyYmRfd29ya2VyLmMgKi9cXG4gLyogYmlfZW5kX2lvIGhhbmRsZXJzICovXFxuLWV4dGVybiB2b2lkIGRyYmRfbWRfZW5kaW8oc3RydWN0IGJpbyAqYmlvKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9wZWVyX3JlcXVlc3RfZW5kaW8oc3RydWN0IGJpbyAqYmlvKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9yZXF1ZXN0X2VuZGlvKHN0cnVjdCBiaW8gKmJpbyk7XFxuLWV4dGVybiBpbnQgZHJiZF93b3JrZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xcbit2b2lkIGRyYmRfbWRfZW5kaW8oc3RydWN0IGJpbyAqYmlvKTtcXG4rdm9pZCBkcmJkX3BlZXJfcmVxdWVzdF9lbmRpbyhzdHJ1Y3QgYmlvICpiaW8pO1xcbit2b2lkIGRyYmRfcmVxdWVzdF9lbmRpbyhzdHJ1Y3QgYmlvICpiaW8pO1xcbitpbnQgZHJiZF93b3JrZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xcbiBlbnVtIGRyYmRfcmV0X2NvZGUgZHJiZF9yZXN5bmNfYWZ0ZXJfdmFsaWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBvX21pbm9yKTtcXG4gdm9pZCBkcmJkX3Jlc3luY19hZnRlcl9jaGFuZ2VkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9zdGFydF9yZXN5bmMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGVudW0gZHJiZF9jb25ucyBzaWRlKTtcXG4tZXh0ZXJuIHZvaWQgcmVzdW1lX25leHRfc2coc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbi1leHRlcm4gdm9pZCBzdXNwZW5kX290aGVyX3NnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4tZXh0ZXJuIGludCBkcmJkX3Jlc3luY19maW5pc2hlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xcbit2b2lkIGRyYmRfc3RhcnRfcmVzeW5jKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBlbnVtIGRyYmRfY29ubnMgc2lkZSk7XFxuK3ZvaWQgcmVzdW1lX25leHRfc2coc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbit2b2lkIHN1c3BlbmRfb3RoZXJfc2coc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbitpbnQgZHJiZF9yZXN5bmNfZmluaXNoZWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcXG4gLyogbWF5YmUgcmF0aGVyIGRyYmRfbWFpbi5jID8gKi9cXG4tZXh0ZXJuIHZvaWQgKmRyYmRfbWRfZ2V0X2J1ZmZlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqaW50ZW50KTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9tZF9wdXRfYnVmZmVyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4tZXh0ZXJuIGludCBkcmJkX21kX3N5bmNfcGFnZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4tXFx0XFx0c3RydWN0IGRyYmRfYmFja2luZ19kZXYgKmJkZXYsIHNlY3Rvcl90IHNlY3RvciwgZW51bSByZXFfb3Agb3ApO1xcbi1leHRlcm4gdm9pZCBkcmJkX292X291dF9vZl9zeW5jX2ZvdW5kKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcXG4tXFx0XFx0c2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSk7XFxuLWV4dGVybiB2b2lkIHdhaXRfdW50aWxfZG9uZV9vcl9mb3JjZV9kZXRhY2hlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4tXFx0XFx0c3RydWN0IGRyYmRfYmFja2luZ19kZXYgKmJkZXYsIHVuc2lnbmVkIGludCAqZG9uZSk7XFxuLWV4dGVybiB2b2lkIGRyYmRfcnNfY29udHJvbGxlcl9yZXNldChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xcbit2b2lkICpkcmJkX21kX2dldF9idWZmZXIoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKmludGVudCk7XFxuK3ZvaWQgZHJiZF9tZF9wdXRfYnVmZmVyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4raW50IGRyYmRfbWRfc3luY19wYWdlX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHQgc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKmJkZXYsIHNlY3Rvcl90IHNlY3RvcixcXG4rXFx0XFx0XFx0IGVudW0gcmVxX29wIG9wKTtcXG4rdm9pZCBkcmJkX292X291dF9vZl9zeW5jX2ZvdW5kKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcXG4rXFx0XFx0XFx0ICAgICAgIHNlY3Rvcl90IHNlY3RvciwgaW50IHNpemUpO1xcbit2b2lkIHdhaXRfdW50aWxfZG9uZV9vcl9mb3JjZV9kZXRhY2hlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LFxcbitcXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50ICpkb25lKTtcXG4rdm9pZCBkcmJkX3JzX2NvbnRyb2xsZXJfcmVzZXQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcXG4gXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBvdl9vdXRfb2Zfc3luY19wcmludChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXFxuIHtcXG5AQCAtMTQzOCw0OCArMTQ2Myw0NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgb3Zfb3V0X29mX3N5bmNfcHJpbnQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxcbiBcXHRkZXZpY2UtXFx1MDAzZW92X2xhc3Rfb29zX3NpemUgPSAwO1xcbiB9XFxuIFxcbi1cXG4tZXh0ZXJuIHZvaWQgZHJiZF9jc3VtX2JpbyhzdHJ1Y3QgY3J5cHRvX3NoYXNoICosIHN0cnVjdCBiaW8gKiwgdm9pZCAqKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9jc3VtX2VlKHN0cnVjdCBjcnlwdG9fc2hhc2ggKiwgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICosXFxuLVxcdFxcdFxcdCB2b2lkICopO1xcbit2b2lkIGRyYmRfY3N1bV9iaW8oc3RydWN0IGNyeXB0b19zaGFzaCAqLCBzdHJ1Y3QgYmlvICosIHZvaWQgKik7XFxuK3ZvaWQgZHJiZF9jc3VtX2VlKHN0cnVjdCBjcnlwdG9fc2hhc2ggKiwgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICosIHZvaWQgKik7XFxuIC8qIHdvcmtlciBjYWxsYmFja3MgKi9cXG4tZXh0ZXJuIGludCB3X2VfZW5kX2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcXG4tZXh0ZXJuIGludCB3X2VfZW5kX3JzZGF0YV9yZXEoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xcbi1leHRlcm4gaW50IHdfZV9lbmRfY3N1bV9yc19yZXEoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xcbi1leHRlcm4gaW50IHdfZV9lbmRfb3ZfcmVwbHkoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xcbi1leHRlcm4gaW50IHdfZV9lbmRfb3ZfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcXG4tZXh0ZXJuIGludCB3X292X2ZpbmlzaGVkKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcXG4tZXh0ZXJuIGludCB3X3Jlc3luY190aW1lcihzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XFxuLWV4dGVybiBpbnQgd19zZW5kX3dyaXRlX2hpbnQoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xcbi1leHRlcm4gaW50IHdfc2VuZF9kYmxvY2soc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xcbi1leHRlcm4gaW50IHdfc2VuZF9yZWFkX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XFxuLWV4dGVybiBpbnQgd19yZXN0YXJ0X2Rpc2tfaW8oc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xcbi1leHRlcm4gaW50IHdfc2VuZF9vdXRfb2Zfc3luYyhzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XFxuLVxcbi1leHRlcm4gdm9pZCByZXN5bmNfdGltZXJfZm4oc3RydWN0IHRpbWVyX2xpc3QgKnQpO1xcbi1leHRlcm4gdm9pZCBzdGFydF9yZXN5bmNfdGltZXJfZm4oc3RydWN0IHRpbWVyX2xpc3QgKnQpO1xcbi1cXG4tZXh0ZXJuIHZvaWQgZHJiZF9lbmRpb193cml0ZV9zZWNfZmluYWwoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSk7XFxuK2ludCB3X2VfZW5kX2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcXG4raW50IHdfZV9lbmRfcnNkYXRhX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XFxuK2ludCB3X2VfZW5kX2NzdW1fcnNfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcXG4raW50IHdfZV9lbmRfb3ZfcmVwbHkoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xcbitpbnQgd19lX2VuZF9vdl9yZXEoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xcbitpbnQgd19vdl9maW5pc2hlZChzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XFxuK2ludCB3X3Jlc3luY190aW1lcihzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XFxuK2ludCB3X3NlbmRfd3JpdGVfaGludChzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XFxuK2ludCB3X3NlbmRfZGJsb2NrKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcXG4raW50IHdfc2VuZF9yZWFkX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XFxuK2ludCB3X3Jlc3RhcnRfZGlza19pbyhzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XFxuK2ludCB3X3NlbmRfb3V0X29mX3N5bmMoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xcbitcXG4rdm9pZCByZXN5bmNfdGltZXJfZm4oc3RydWN0IHRpbWVyX2xpc3QgKnQpO1xcbit2b2lkIHN0YXJ0X3Jlc3luY190aW1lcl9mbihzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7XFxuK1xcbit2b2lkIGRyYmRfZW5kaW9fd3JpdGVfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpO1xcbiBcXG4gLyogZHJiZF9yZWNlaXZlci5jICovXFxuLWV4dGVybiBpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbi1cXHRcXHRzZWN0b3JfdCBzdGFydCwgdW5zaWduZWQgaW50IG5yX3NlY3RvcnMsIGludCBmbGFncyk7XFxuLWV4dGVybiBpbnQgZHJiZF9yZWNlaXZlcihzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7XFxuLWV4dGVybiBpbnQgZHJiZF9hY2tfcmVjZWl2ZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xcbi1leHRlcm4gdm9pZCBkcmJkX3NlbmRfYWNrc193ZihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndzKTtcXG4tZXh0ZXJuIGJvb2wgZHJiZF9yc19jX21pbl9yYXRlX3Rocm90dGxlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4tZXh0ZXJuIGJvb2wgZHJiZF9yc19zaG91bGRfc2xvd19kb3duKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc2VjdG9yX3Qgc2VjdG9yLFxcbi1cXHRcXHRib29sIHRocm90dGxlX2lmX2FwcF9pc193YWl0aW5nKTtcXG4tZXh0ZXJuIGludCBkcmJkX3N1Ym1pdF9wZWVyX3JlcXVlc3Qoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSk7XFxuLWV4dGVybiBpbnQgZHJiZF9mcmVlX3BlZXJfcmVxcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGxpc3RfaGVhZCAqKTtcXG4tZXh0ZXJuIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqZHJiZF9hbGxvY19wZWVyX3JlcShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1NjQsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgc2VjdG9yX3QsIHVuc2lnbmVkIGludCxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgZ2ZwX3QpIF9fbXVzdF9ob2xkKGxvY2FsKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9mcmVlX3BlZXJfcmVxKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnJlcSk7XFxuLWV4dGVybiBzdHJ1Y3QgcGFnZSAqZHJiZF9hbGxvY19wYWdlcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bnNpZ25lZCBpbnQsIGJvb2wpO1xcbi1leHRlcm4gdm9pZCBfZHJiZF9jbGVhcl9kb25lX2VlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgbGlzdF9oZWFkICp0b19iZV9mcmVlZCk7XFxuLWV4dGVybiBpbnQgZHJiZF9jb25uZWN0ZWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7XFxuK2ludCBkcmJkX2lzc3VlX2Rpc2NhcmRfb3JfemVyb19vdXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHN0YXJ0LFxcbitcXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgbnJfc2VjdG9ycywgaW50IGZsYWdzKTtcXG4raW50IGRyYmRfcmVjZWl2ZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xcbitpbnQgZHJiZF9hY2tfcmVjZWl2ZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xcbit2b2lkIGRyYmRfc2VuZF9hY2tzX3dmKHN0cnVjdCB3b3JrX3N0cnVjdCAqd3MpO1xcbitib29sIGRyYmRfcnNfY19taW5fcmF0ZV90aHJvdHRsZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuK2Jvb2wgZHJiZF9yc19zaG91bGRfc2xvd19kb3duKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcXG4rXFx0XFx0XFx0ICAgICAgc2VjdG9yX3Qgc2VjdG9yLCBib29sIHRocm90dGxlX2lmX2FwcF9pc193YWl0aW5nKTtcXG4raW50IGRyYmRfc3VibWl0X3BlZXJfcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKTtcXG4raW50IGRyYmRfZnJlZV9wZWVyX3JlcXMoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBsaXN0X2hlYWQgKik7XFxuK3N0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqZHJiZF9hbGxvY19wZWVyX3JlcShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1NjQsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIHNlY3Rvcl90LCB1bnNpZ25lZCBpbnQsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGludCwgZ2ZwX3QpO1xcbit2b2lkIGRyYmRfZnJlZV9wZWVyX3JlcShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4rXFx0XFx0XFx0c3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpyZXEpO1xcbitzdHJ1Y3QgcGFnZSAqZHJiZF9hbGxvY19wYWdlcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bnNpZ25lZCBpbnQsIGJvb2wpO1xcbit2b2lkIF9kcmJkX2NsZWFyX2RvbmVfZWUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuK1xcdFxcdFxcdCBzdHJ1Y3QgbGlzdF9oZWFkICp0b19iZV9mcmVlZCk7XFxuK2ludCBkcmJkX2Nvbm5lY3RlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcXG4gXFxuIC8qIHNldHMgdGhlIG51bWJlciBvZiA1MTIgYnl0ZSBzZWN0b3JzIG9mIG91ciB2aXJ0dWFsIGRldmljZSAqL1xcbiB2b2lkIGRyYmRfc2V0X215X2NhcGFjaXR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzaXplKTtcXG5AQCAtMTQ5MCw3ICsxNTE0LDYgQEAgdm9pZCBkcmJkX3NldF9teV9jYXBhY2l0eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2l6ZSk7XFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmJkX3N1Ym1pdF9iaW9fbm9hY2N0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgIGludCBmYXVsdF90eXBlLCBzdHJ1Y3QgYmlvICpiaW8pXFxuIHtcXG4tXFx0X19yZWxlYXNlKGxvY2FsKTtcXG4gXFx0aWYgKCFiaW8tXFx1MDAzZWJpX2JkZXYpIHtcXG4gXFx0XFx0ZHJiZF9lcnIoZGV2aWNlLCBcXFwiZHJiZF9zdWJtaXRfYmlvX25vYWNjdDogYmlvLVxcdTAwM2ViaV9iZGV2ID09IE5VTExcXFxcblxcXCIpO1xcbiBcXHRcXHRiaW8tXFx1MDAzZWJpX3N0YXR1cyA9IEJMS19TVFNfSU9FUlI7XFxuQEAgLTE1MTIsMzIgKzE1MzUsMzYgQEAgZXh0ZXJuIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqZHJiZF9wcm9jO1xcbiBpbnQgZHJiZF9zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdik7XFxuIFxcbiAvKiBkcmJkX2FjdGxvZy5jICovXFxuLWV4dGVybiBib29sIGRyYmRfYWxfYmVnaW5faW9fcHJlcGFyZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpO1xcbi1leHRlcm4gaW50IGRyYmRfYWxfYmVnaW5faW9fbm9uYmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9hbF9iZWdpbl9pb19jb21taXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbi1leHRlcm4gYm9vbCBkcmJkX2FsX2JlZ2luX2lvX2Zhc3RwYXRoKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSk7XFxuLWV4dGVybiB2b2lkIGRyYmRfYWxfYmVnaW5faW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9hbF9jb21wbGV0ZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpO1xcbi1leHRlcm4gdm9pZCBkcmJkX3JzX2NvbXBsZXRlX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IpO1xcbi1leHRlcm4gaW50IGRyYmRfcnNfYmVnaW5faW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3Rvcik7XFxuLWV4dGVybiBpbnQgZHJiZF90cnlfcnNfYmVnaW5faW8oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IpO1xcbi1leHRlcm4gdm9pZCBkcmJkX3JzX2NhbmNlbF9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbi1leHRlcm4gaW50IGRyYmRfcnNfZGVsX2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLWV4dGVybiB2b2lkIGRyYmRfcnNfZmFpbGVkX2lvKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcXG4tXFx0XFx0c2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSk7XFxuLWV4dGVybiB2b2lkIGRyYmRfYWR2YW5jZV9yc19tYXJrcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHVuc2lnbmVkIGxvbmcgc3RpbGxfdG9fZ28pO1xcbitib29sIGRyYmRfYWxfYmVnaW5faW9fcHJlcGFyZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4rXFx0XFx0XFx0ICAgICAgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpO1xcbitpbnQgZHJiZF9hbF9iZWdpbl9pb19ub25ibG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4rXFx0XFx0XFx0ICAgICAgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpO1xcbit2b2lkIGRyYmRfYWxfYmVnaW5faW9fY29tbWl0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4rYm9vbCBkcmJkX2FsX2JlZ2luX2lvX2Zhc3RwYXRoKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHQgICAgICAgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpO1xcbit2b2lkIGRyYmRfYWxfYmVnaW5faW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcXG4rdm9pZCBkcmJkX2FsX2NvbXBsZXRlX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSk7XFxuK3ZvaWQgZHJiZF9yc19jb21wbGV0ZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9yKTtcXG4raW50IGRyYmRfcnNfYmVnaW5faW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3Rvcik7XFxuK2ludCBkcmJkX3RyeV9yc19iZWdpbl9pbyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHNlY3Rvcl90IHNlY3Rvcik7XFxuK3ZvaWQgZHJiZF9yc19jYW5jZWxfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4raW50IGRyYmRfcnNfZGVsX2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuK3ZvaWQgZHJiZF9yc19mYWlsZWRfaW8oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IsXFxuK1xcdFxcdCAgICAgICBpbnQgc2l6ZSk7XFxuK3ZvaWQgZHJiZF9hZHZhbmNlX3JzX21hcmtzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcXG4rXFx0XFx0XFx0ICAgdW5zaWduZWQgbG9uZyBzdGlsbF90b19nbyk7XFxuIFxcbiBlbnVtIHVwZGF0ZV9zeW5jX2JpdHNfbW9kZSB7IFJFQ09SRF9SU19GQUlMRUQsIFNFVF9PVVRfT0ZfU1lOQywgU0VUX0lOX1NZTkMgfTtcXG4tZXh0ZXJuIGludCBfX2RyYmRfY2hhbmdlX3N5bmMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplLFxcbi1cXHRcXHRlbnVtIHVwZGF0ZV9zeW5jX2JpdHNfbW9kZSBtb2RlKTtcXG4raW50IF9fZHJiZF9jaGFuZ2Vfc3luYyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHNlY3Rvcl90IHNlY3RvcixcXG4rXFx0XFx0ICAgICAgIGludCBzaXplLCBlbnVtIHVwZGF0ZV9zeW5jX2JpdHNfbW9kZSBtb2RlKTtcXG4gI2RlZmluZSBkcmJkX3NldF9pbl9zeW5jKHBlZXJfZGV2aWNlLCBzZWN0b3IsIHNpemUpIFxcXFxcXG4gXFx0X19kcmJkX2NoYW5nZV9zeW5jKHBlZXJfZGV2aWNlLCBzZWN0b3IsIHNpemUsIFNFVF9JTl9TWU5DKVxcbiAjZGVmaW5lIGRyYmRfc2V0X291dF9vZl9zeW5jKHBlZXJfZGV2aWNlLCBzZWN0b3IsIHNpemUpIFxcXFxcXG4gXFx0X19kcmJkX2NoYW5nZV9zeW5jKHBlZXJfZGV2aWNlLCBzZWN0b3IsIHNpemUsIFNFVF9PVVRfT0ZfU1lOQylcXG4gI2RlZmluZSBkcmJkX3JzX2ZhaWxlZF9pbyhwZWVyX2RldmljZSwgc2VjdG9yLCBzaXplKSBcXFxcXFxuIFxcdF9fZHJiZF9jaGFuZ2Vfc3luYyhwZWVyX2RldmljZSwgc2VjdG9yLCBzaXplLCBSRUNPUkRfUlNfRkFJTEVEKVxcbi1leHRlcm4gdm9pZCBkcmJkX2FsX3NocmluayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLWV4dGVybiBpbnQgZHJiZF9hbF9pbml0aWFsaXplKHN0cnVjdCBkcmJkX2RldmljZSAqLCB2b2lkICopO1xcbit2b2lkIGRyYmRfYWxfc2hyaW5rKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4raW50IGRyYmRfYWxfaW5pdGlhbGl6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdm9pZCAqKTtcXG4gXFxuIC8qIGRyYmRfbmwuYyAqL1xcbiAvKiBzdGF0ZSBpbmZvIGJyb2FkY2FzdCAqL1xcbkBAIC0xNTU2LDI4ICsxNTgzLDIwIEBAIHN0cnVjdCBzaWJfaW5mbyB7XFxuIH07XFxuIHZvaWQgZHJiZF9iY2FzdF9ldmVudChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3Qgc3RydWN0IHNpYl9pbmZvICpzaWIpO1xcbiBcXG4tZXh0ZXJuIGludCBub3RpZnlfcmVzb3VyY2Vfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKixcXG4tXFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQsXFxuLVxcdFxcdFxcdFxcdCAgc3RydWN0IGRyYmRfcmVzb3VyY2UgKixcXG4tXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcmVzb3VyY2VfaW5mbyAqLFxcbi1cXHRcXHRcXHRcXHQgIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSk7XFxuLWV4dGVybiBpbnQgbm90aWZ5X2RldmljZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLFxcbi1cXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQsXFxuLVxcdFxcdFxcdFxcdHN0cnVjdCBkcmJkX2RldmljZSAqLFxcbi1cXHRcXHRcXHRcXHRzdHJ1Y3QgZGV2aWNlX2luZm8gKixcXG4tXFx0XFx0XFx0XFx0ZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTtcXG4tZXh0ZXJuIGludCBub3RpZnlfY29ubmVjdGlvbl9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLFxcbi1cXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgaW50LFxcbi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLFxcbi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGNvbm5lY3Rpb25faW5mbyAqLFxcbi1cXHRcXHRcXHRcXHQgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTtcXG4tZXh0ZXJuIGludCBub3RpZnlfcGVlcl9kZXZpY2Vfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKixcXG4tXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQsXFxuLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKixcXG4tXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgcGVlcl9kZXZpY2VfaW5mbyAqLFxcbi1cXHRcXHRcXHRcXHQgICAgIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSk7XFxuLWV4dGVybiB2b2lkIG5vdGlmeV9oZWxwZXIoZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlLCBzdHJ1Y3QgZHJiZF9kZXZpY2UgKixcXG4tXFx0XFx0XFx0ICBzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIGNvbnN0IGNoYXIgKiwgaW50KTtcXG4raW50IG5vdGlmeV9yZXNvdXJjZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsXFxuK1xcdFxcdFxcdCAgc3RydWN0IGRyYmRfcmVzb3VyY2UgKiwgc3RydWN0IHJlc291cmNlX2luZm8gKixcXG4rXFx0XFx0XFx0ICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpO1xcbitpbnQgbm90aWZ5X2RldmljZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBkcmJkX2RldmljZSAqLFxcbitcXHRcXHRcXHRzdHJ1Y3QgZGV2aWNlX2luZm8gKiwgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTtcXG4raW50IG5vdGlmeV9jb25uZWN0aW9uX3N0YXRlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCxcXG4rXFx0XFx0XFx0ICAgIHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwgc3RydWN0IGNvbm5lY3Rpb25faW5mbyAqLFxcbitcXHRcXHRcXHQgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTtcXG4raW50IG5vdGlmeV9wZWVyX2RldmljZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsXFxuK1xcdFxcdFxcdCAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKixcXG4rXFx0XFx0XFx0ICAgICBzdHJ1Y3QgcGVlcl9kZXZpY2VfaW5mbyAqLFxcbitcXHRcXHRcXHQgICAgIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSk7XFxuK3ZvaWQgbm90aWZ5X2hlbHBlcihlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUsIHN0cnVjdCBkcmJkX2RldmljZSAqLFxcbitcXHRcXHQgICBzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIGNvbnN0IGNoYXIgKiwgaW50KTtcXG4gXFxuIC8qXFxuICAqIGlubGluZSBoZWxwZXIgZnVuY3Rpb25zXFxuQEAgLTE4MjIsNyArMTg0MSw3IEBAIGRyYmRfZGV2aWNlX3Bvc3Rfd29yayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IHdvcmtfYml0KVxcbiBcXHR9XFxuIH1cXG4gXFxuLWV4dGVybiB2b2lkIGRyYmRfZmx1c2hfd29ya3F1ZXVlKHN0cnVjdCBkcmJkX3dvcmtfcXVldWUgKndvcmtfcXVldWUpO1xcbit2b2lkIGRyYmRfZmx1c2hfd29ya3F1ZXVlKHN0cnVjdCBkcmJkX3dvcmtfcXVldWUgKndvcmtfcXVldWUpO1xcbiBcXG4gLyogVG8gZ2V0IHRoZSBhY2tfcmVjZWl2ZXIgb3V0IG9mIHRoZSBibG9ja2luZyBuZXR3b3JrIHN0YWNrLFxcbiAgKiBzbyBpdCBjYW4gY2hhbmdlIGl0cyBza19yY3Z0aW1lbyBmcm9tIGlkbGUtIHRvIHBpbmctdGltZW91dCxcXG5AQCAtMTg0MSwxOSArMTg2MCwyNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVxdWVzdF9waW5nKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pXFxuIFxcdHdha2VfYWNrX3JlY2VpdmVyKGNvbm5lY3Rpb24pO1xcbiB9XFxuIFxcbi1leHRlcm4gdm9pZCAqY29ubl9wcmVwYXJlX2NvbW1hbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKik7XFxuLWV4dGVybiB2b2lkICpkcmJkX3ByZXBhcmVfY29tbWFuZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKik7XFxuLWV4dGVybiBpbnQgY29ubl9zZW5kX2NvbW1hbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKixcXG4tXFx0XFx0XFx0ICAgICBlbnVtIGRyYmRfcGFja2V0LCB1bnNpZ25lZCBpbnQsIHZvaWQgKixcXG4tXFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQpO1xcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9jb21tYW5kKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3NvY2tldCAqLFxcbi1cXHRcXHRcXHQgICAgIGVudW0gZHJiZF9wYWNrZXQsIHVuc2lnbmVkIGludCwgdm9pZCAqLFxcbi1cXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCk7XFxuLVxcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9waW5nKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9waW5nX2FjayhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcXG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfc3RhdGVfcmVxKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsIHVuaW9uIGRyYmRfc3RhdGUpO1xcbi1leHRlcm4gaW50IGNvbm5fc2VuZF9zdGF0ZV9yZXEoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCB1bmlvbiBkcmJkX3N0YXRlLCB1bmlvbiBkcmJkX3N0YXRlKTtcXG4rdm9pZCAqY29ubl9wcmVwYXJlX2NvbW1hbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbixcXG4rXFx0XFx0XFx0ICAgc3RydWN0IGRyYmRfc29ja2V0ICpzb2NrKVxcbitcXHRfX2NvbmRfYWNxdWlyZXModHJ1ZSwgXFx1MDAyNnNvY2stXFx1MDAzZW11dGV4KTtcXG4rdm9pZCAqZHJiZF9wcmVwYXJlX2NvbW1hbmQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKnNvY2spXFxuK1xcdF9fY29uZF9hY3F1aXJlcyh0cnVlLCBcXHUwMDI2c29jay1cXHUwMDNlbXV0ZXgpO1xcbitpbnQgY29ubl9zZW5kX2NvbW1hbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbixcXG4rXFx0XFx0ICAgICAgc3RydWN0IGRyYmRfc29ja2V0ICpzb2NrLFxcbitcXHRcXHQgICAgICBlbnVtIGRyYmRfcGFja2V0IGNtZCwgdW5zaWduZWQgaW50IGhlYWRlcl9zaXplLFxcbitcXHRcXHQgICAgICB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSlcXG4rXFx0X19yZWxlYXNlcyhcXHUwMDI2c29jay1cXHUwMDNlbXV0ZXgpO1xcbitpbnQgZHJiZF9zZW5kX2NvbW1hbmQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKnNvY2ssXFxuK1xcdFxcdCAgICAgIGVudW0gZHJiZF9wYWNrZXQgY21kLCB1bnNpZ25lZCBpbnQgaGVhZGVyX3NpemUsXFxuK1xcdFxcdCAgICAgIHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBzaXplKVxcbitcXHRfX3JlbGVhc2VzKFxcdTAwMjZzb2NrLVxcdTAwM2VtdXRleCk7XFxuK1xcbitpbnQgZHJiZF9zZW5kX3Bpbmcoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XFxuK2ludCBkcmJkX3NlbmRfcGluZ19hY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XFxuK2ludCBkcmJkX3NlbmRfc3RhdGVfcmVxKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsXFxuK1xcdFxcdFxcdHVuaW9uIGRyYmRfc3RhdGUpO1xcbitpbnQgY29ubl9zZW5kX3N0YXRlX3JlcShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHVuaW9uIGRyYmRfc3RhdGUsXFxuK1xcdFxcdFxcdHVuaW9uIGRyYmRfc3RhdGUpO1xcbiBcXG4gc3RhdGljIGlubGluZSB2b2lkIGRyYmRfdGhyZWFkX3N0b3Aoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpXFxuIHtcXG5AQCAtMTk3Niw5ICsyMDAzLDYgQEAgc3RhdGljIGlubGluZSBib29sIGlzX3N5bmNfc3RhdGUoZW51bSBkcmJkX2Nvbm5zIGNvbm5lY3Rpb25fc3RhdGUpXFxuICAqXFxuICAqIFlvdSBoYXZlIHRvIGNhbGwgcHV0X2xkZXYoKSB3aGVuIGZpbmlzaGVkIHdvcmtpbmcgd2l0aCBkZXZpY2UtXFx1MDAzZWxkZXYuXFxuICAqL1xcbi0jZGVmaW5lIGdldF9sZGV2X2lmX3N0YXRlKF9kZXZpY2UsIF9taW5fc3RhdGUpXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHQoX2dldF9sZGV2X2lmX3N0YXRlKChfZGV2aWNlKSwgKF9taW5fc3RhdGUpKSA/XFx0XFx0XFx0XFxcXFxcbi1cXHQgKHsgX19hY3F1aXJlKHgpOyB0cnVlOyB9KSA6IGZhbHNlKVxcbiAjZGVmaW5lIGdldF9sZGV2KF9kZXZpY2UpIGdldF9sZGV2X2lmX3N0YXRlKF9kZXZpY2UsIERfSU5DT05TSVNURU5UKVxcbiBcXG4gc3RhdGljIGlubGluZSB2b2lkIHB1dF9sZGV2KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxcbkBAIC0xOTkzLDcgKzIwMTcsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHV0X2xkZXYoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXFxuIFxcdC8qIFRoaXMgbWF5IGJlIGNhbGxlZCBmcm9tIHNvbWUgZW5kaW8gaGFuZGxlcixcXG4gXFx0ICogc28gd2UgbXVzdCBub3Qgc2xlZXAgaGVyZS4gKi9cXG4gXFxuLVxcdF9fcmVsZWFzZShsb2NhbCk7XFxuIFxcdERfQVNTRVJUKGRldmljZSwgaSBcXHUwMDNlPSAwKTtcXG4gXFx0aWYgKGkgPT0gMCkge1xcbiBcXHRcXHRpZiAoZGlza19zdGF0ZSA9PSBEX0RJU0tMRVNTKVxcbkBAIC0yMDA3LDggKzIwMzAsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHV0X2xkZXYoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXFxuIFxcdH1cXG4gfVxcbiBcXG4tI2lmbmRlZiBfX0NIRUNLRVJfX1xcbi1zdGF0aWMgaW5saW5lIGludCBfZ2V0X2xkZXZfaWZfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGVudW0gZHJiZF9kaXNrX3N0YXRlIG1pbnMpXFxuK3N0YXRpYyBpbmxpbmUgaW50IGdldF9sZGV2X2lmX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHRcXHQgICAgZW51bSBkcmJkX2Rpc2tfc3RhdGUgbWlucylcXG4ge1xcbiBcXHRpbnQgaW9fYWxsb3dlZDtcXG4gXFxuQEAgLTIwMjIsOSArMjA0NSw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IF9nZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Rpc2tfXFxuIFxcdFxcdHB1dF9sZGV2KGRldmljZSk7XFxuIFxcdHJldHVybiBpb19hbGxvd2VkO1xcbiB9XFxuLSNlbHNlXFxuLWV4dGVybiBpbnQgX2dldF9sZGV2X2lmX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBlbnVtIGRyYmRfZGlza19zdGF0ZSBtaW5zKTtcXG4tI2VuZGlmXFxuIFxcbiAvKiB0aGlzIHRocm90dGxlcyBvbi10aGUtZmx5IGFwcGxpY2F0aW9uIHJlcXVlc3RzXFxuICAqIGFjY29yZGluZyB0byBtYXhfYnVmZmVycyBzZXR0aW5ncztcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50ZXJ2YWwuaCBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludGVydmFsLmhcXG5pbmRleCA1ZDMyMTNiODFlZWRlNy4uMjU1ZTlkMDcxYWUxZDQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50ZXJ2YWwuaFxcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludGVydmFsLmhcXG5AQCAtMjksMTMgKzI5LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBkcmJkX2ludGVydmFsX2VtcHR5KHN0cnVjdCBkcmJkX2ludGVydmFsICppKVxcbiBcXHRyZXR1cm4gUkJfRU1QVFlfTk9ERShcXHUwMDI2aS1cXHUwMDNlcmIpO1xcbiB9XFxuIFxcbi1leHRlcm4gYm9vbCBkcmJkX2luc2VydF9pbnRlcnZhbChzdHJ1Y3QgcmJfcm9vdCAqLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqKTtcXG4tZXh0ZXJuIGJvb2wgZHJiZF9jb250YWluc19pbnRlcnZhbChzdHJ1Y3QgcmJfcm9vdCAqLCBzZWN0b3JfdCxcXG4tXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7XFxuLWV4dGVybiB2b2lkIGRyYmRfcmVtb3ZlX2ludGVydmFsKHN0cnVjdCByYl9yb290ICosIHN0cnVjdCBkcmJkX2ludGVydmFsICopO1xcbi1leHRlcm4gc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmRyYmRfZmluZF9vdmVybGFwKHN0cnVjdCByYl9yb290ICosIHNlY3Rvcl90LFxcbitib29sIGRyYmRfaW5zZXJ0X2ludGVydmFsKHN0cnVjdCByYl9yb290ICosIHN0cnVjdCBkcmJkX2ludGVydmFsICopO1xcbitib29sIGRyYmRfY29udGFpbnNfaW50ZXJ2YWwoc3RydWN0IHJiX3Jvb3QgKiwgc2VjdG9yX3QsIHN0cnVjdCBkcmJkX2ludGVydmFsICopO1xcbit2b2lkIGRyYmRfcmVtb3ZlX2ludGVydmFsKHN0cnVjdCByYl9yb290ICosIHN0cnVjdCBkcmJkX2ludGVydmFsICopO1xcbitzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqZHJiZF9maW5kX292ZXJsYXAoc3RydWN0IHJiX3Jvb3QgKiwgc2VjdG9yX3QsXFxuIFxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCk7XFxuLWV4dGVybiBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqZHJiZF9uZXh0X292ZXJsYXAoc3RydWN0IGRyYmRfaW50ZXJ2YWwgKiwgc2VjdG9yX3QsXFxuK3N0cnVjdCBkcmJkX2ludGVydmFsICpkcmJkX25leHRfb3ZlcmxhcChzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqLCBzZWN0b3JfdCxcXG4gXFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgaW50KTtcXG4gXFxuICNkZWZpbmUgZHJiZF9mb3JfZWFjaF9vdmVybGFwKGksIHJvb3QsIHNlY3Rvciwgc2l6ZSlcXHRcXHRcXFxcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uY1xcbmluZGV4IGEyYTg0MWM4OTIwMTExLi42ZjNjMDQyNTJiNWRlZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmNcXG5AQCAtMTI4LDI1ICsxMjgsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIGRyYmRfb3BzID0ge1xcbiBcXHQucmVsZWFzZVxcdD0gZHJiZF9yZWxlYXNlLFxcbiB9O1xcbiBcXG4tI2lmZGVmIF9fQ0hFQ0tFUl9fXFxuLS8qIFdoZW4gY2hlY2tpbmcgd2l0aCBzcGFyc2UsIGFuZCB0aGlzIGlzIGFuIGlubGluZSBmdW5jdGlvbiwgc3BhcnNlIHdpbGxcXG4tICAgZ2l2ZSB0b25zIG9mIGZhbHNlIHBvc2l0aXZlcy4gV2hlbiB0aGlzIGlzIGEgcmVhbCBmdW5jdGlvbnMgc3BhcnNlIHdvcmtzLlxcbi0gKi9cXG4taW50IF9nZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Rpc2tfc3RhdGUgbWlucylcXG4te1xcbi1cXHRpbnQgaW9fYWxsb3dlZDtcXG4tXFxuLVxcdGF0b21pY19pbmMoXFx1MDAyNmRldmljZS1cXHUwMDNlbG9jYWxfY250KTtcXG4tXFx0aW9fYWxsb3dlZCA9IChkZXZpY2UtXFx1MDAzZXN0YXRlLmRpc2sgXFx1MDAzZT0gbWlucyk7XFxuLVxcdGlmICghaW9fYWxsb3dlZCkge1xcbi1cXHRcXHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcXHUwMDI2ZGV2aWNlLVxcdTAwM2Vsb2NhbF9jbnQpKVxcbi1cXHRcXHRcXHR3YWtlX3VwKFxcdTAwMjZkZXZpY2UtXFx1MDAzZW1pc2Nfd2FpdCk7XFxuLVxcdH1cXG4tXFx0cmV0dXJuIGlvX2FsbG93ZWQ7XFxuLX1cXG4tXFxuLSNlbmRpZlxcbi1cXG4gLyoqXFxuICAqIHRsX3JlbGVhc2UoKSAtIG1hcmsgYXMgQkFSUklFUl9BQ0tFRCBhbGwgcmVxdWVzdHMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgdHJhbnNmZXIgbG9nIGVwb2NoXFxuICAqIEBjb25uZWN0aW9uOlxcdERSQkQgY29ubmVjdGlvbi5cXG5AQCAtMzI4Miw3ICszMjYzLDcgQEAgdm9pZCBkcmJkX21kX21hcmtfZGlydHkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXFxuIFxcdFxcdG1vZF90aW1lcihcXHUwMDI2ZGV2aWNlLVxcdTAwM2VtZF9zeW5jX3RpbWVyLCBqaWZmaWVzICsgNSpIWik7XFxuIH1cXG4gXFxuLXZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXFxuK3ZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcXG4ge1xcbiBcXHRpbnQgaTtcXG4gXFxuQEAgLTMyOTAsNyArMzI3MSw3IEBAIHZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXFxuIFxcdFxcdGRldmljZS1cXHUwMDNlbGRldi1cXHUwMDNlbWQudXVpZFtpKzFdID0gZGV2aWNlLVxcdTAwM2VsZGV2LVxcdTAwM2VtZC51dWlkW2ldO1xcbiB9XFxuIFxcbi12b2lkIF9fZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpXFxuK3ZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKVxcbiB7XFxuIFxcdGlmIChpZHggPT0gVUlfQ1VSUkVOVCkge1xcbiBcXHRcXHRpZiAoZGV2aWNlLVxcdTAwM2VzdGF0ZS5yb2xlID09IFJfUFJJTUFSWSlcXG5AQCAtMzMwNSw3ICszMjg2LDcgQEAgdm9pZCBfX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxcXG4gXFx0ZHJiZF9tZF9tYXJrX2RpcnR5KGRldmljZSk7XFxuIH1cXG4gXFxuLXZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxvY2FsKVxcbit2b2lkIF9kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKVxcbiB7XFxuIFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuIFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkZXZpY2UtXFx1MDAzZWxkZXYtXFx1MDAzZW1kLnV1aWRfbG9jaywgZmxhZ3MpO1xcbkBAIC0zMzEzLDcgKzMyOTQsNyBAQCB2b2lkIF9kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb1xcbiBcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkZXZpY2UtXFx1MDAzZWxkZXYtXFx1MDAzZW1kLnV1aWRfbG9jaywgZmxhZ3MpO1xcbiB9XFxuIFxcbi12b2lkIGRyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxvY2FsKVxcbit2b2lkIGRyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpXFxuIHtcXG4gXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRldmljZS1cXHUwMDNlbGRldi1cXHUwMDNlbWQudXVpZF9sb2NrLCBmbGFncyk7XFxuQEAgLTMzMzIsNyArMzMxMyw3IEBAIHZvaWQgZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jXFxuICAqIENyZWF0ZXMgYSBuZXcgY3VycmVudCBVVUlELCBhbmQgcm90YXRlcyB0aGUgb2xkIGN1cnJlbnQgVVVJRCBpbnRvXFxuICAqIHRoZSBiaXRtYXAgc2xvdC4gQ2F1c2VzIGFuIGluY3JlbWVudGFsIHJlc3luYyB1cG9uIG5leHQgY29ubmVjdC5cXG4gICovXFxuLXZvaWQgZHJiZF91dWlkX25ld19jdXJyZW50KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcXG4rdm9pZCBkcmJkX3V1aWRfbmV3X2N1cnJlbnQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXFxuIHtcXG4gXFx0dTY0IHZhbDtcXG4gXFx0dW5zaWduZWQgbG9uZyBsb25nIGJtX3V1aWQ7XFxuQEAgLTMzNTQsNyArMzMzNSw3IEBAIHZvaWQgZHJiZF91dWlkX25ld19jdXJyZW50KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcXG4gXFx0ZHJiZF9tZF9zeW5jKGRldmljZSk7XFxuIH1cXG4gXFxuLXZvaWQgZHJiZF91dWlkX3NldF9ibShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpXFxuK3ZvaWQgZHJiZF91dWlkX3NldF9ibShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdTY0IHZhbClcXG4ge1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiBcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGV2aWNlLVxcdTAwM2VsZGV2LVxcdTAwM2VtZC51dWlkX2xvY2ssIGZsYWdzKTtcXG5AQCAtMzM4Nyw3ICszMzY4LDcgQEAgdm9pZCBkcmJkX3V1aWRfc2V0X2JtKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbClcXG4gICogU2V0cyBhbGwgYml0cyBpbiB0aGUgYml0bWFwIGFuZCB3cml0ZXMgdGhlIHdob2xlIGJpdG1hcCB0byBzdGFibGUgc3RvcmFnZS5cXG4gICovXFxuIGludCBkcmJkX2JtaW9fc2V0X25fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuLVxcdFxcdFxcdCAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcXG4rXFx0XFx0XFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXFxuIFxcbiB7XFxuIFxcdGludCBydiA9IC1FSU87XFxuQEAgLTM0MTQsNyArMzM5NSw3IEBAIGludCBkcmJkX2JtaW9fc2V0X25fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuICAqIENsZWFycyBhbGwgYml0cyBpbiB0aGUgYml0bWFwIGFuZCB3cml0ZXMgdGhlIHdob2xlIGJpdG1hcCB0byBzdGFibGUgc3RvcmFnZS5cXG4gICovXFxuIGludCBkcmJkX2JtaW9fY2xlYXJfbl93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4tXFx0XFx0XFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxcbitcXHRcXHRcXHQgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxcbiBcXG4ge1xcbiBcXHRkcmJkX3Jlc3VtZV9hbChkZXZpY2UpO1xcbkBAIC0zNTQxLDcgKzM1MjIsNyBAQCBpbnQgZHJiZF9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuIFxcdHJldHVybiBydjtcXG4gfVxcbiBcXG4tdm9pZCBkcmJkX21kX3NldF9mbGFnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgZmxhZykgX19tdXN0X2hvbGQobG9jYWwpXFxuK3ZvaWQgZHJiZF9tZF9zZXRfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWcpXFxuIHtcXG4gXFx0aWYgKChkZXZpY2UtXFx1MDAzZWxkZXYtXFx1MDAzZW1kLmZsYWdzIFxcdTAwMjYgZmxhZykgIT0gZmxhZykge1xcbiBcXHRcXHRkcmJkX21kX21hcmtfZGlydHkoZGV2aWNlKTtcXG5AQCAtMzU0OSw3ICszNTMwLDcgQEAgdm9pZCBkcmJkX21kX3NldF9mbGFnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgZmxhZykgX19tdXN0X2hvbGQobG9jYWwpXFxuIFxcdH1cXG4gfVxcbiBcXG4tdm9pZCBkcmJkX21kX2NsZWFyX2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFnKSBfX211c3RfaG9sZChsb2NhbClcXG4rdm9pZCBkcmJkX21kX2NsZWFyX2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFnKVxcbiB7XFxuIFxcdGlmICgoZGV2aWNlLVxcdTAwM2VsZGV2LVxcdTAwM2VtZC5mbGFncyBcXHUwMDI2IGZsYWcpICE9IDApIHtcXG4gXFx0XFx0ZHJiZF9tZF9tYXJrX2RpcnR5KGRldmljZSk7XFxuQEAgLTM2NzgsNiArMzY1OSw3IEBAIGludCBkcmJkX3dhaXRfbWlzYyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpXFxuIH1cXG4gXFxuIHZvaWQgbG9ja19hbGxfcmVzb3VyY2VzKHZvaWQpXFxuK1xcdF9fY29udGV4dF91bnNhZmUobG9ja2luZyBsb29wKVxcbiB7XFxuIFxcdHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZTtcXG4gXFx0aW50IF9fbWF5YmVfdW51c2VkIGkgPSAwO1xcbkBAIC0zNjg5LDYgKzM2NzEsNyBAQCB2b2lkIGxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKVxcbiB9XFxuIFxcbiB2b2lkIHVubG9ja19hbGxfcmVzb3VyY2VzKHZvaWQpXFxuK1xcdF9fY29udGV4dF91bnNhZmUobG9ja2luZyBsb29wKVxcbiB7XFxuIFxcdHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jXFxuaW5kZXggZjlmZmNkNjc2MDdiNTUuLjc0OGIxZDA5M2YyZTY3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jXFxuQEAgLTk2OCw4ICs5NjgsOSBAQCB2b2lkIGRyYmRfcmVzdW1lX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxcbiAgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgcmV0dXJuIHZhbHVlcyBpbmRpY2F0ZSBlcnJvcnMuXFxuICAqIFlvdSBzaG91bGQgY2FsbCBkcmJkX21kX3N5bmMoKSBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXFxuICAqL1xcbi1lbnVtIGRldGVybWluZV9kZXZfc2l6ZVxcbi1kcmJkX2RldGVybWluZV9kZXZfc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkZHNfZmxhZ3MgZmxhZ3MsIHN0cnVjdCByZXNpemVfcGFybXMgKnJzKSBfX211c3RfaG9sZChsb2NhbClcXG4rZW51bSBkZXRlcm1pbmVfZGV2X3NpemUgZHJiZF9kZXRlcm1pbmVfZGV2X3NpemUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdGVudW0gZGRzX2ZsYWdzIGZsYWdzLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgcmVzaXplX3Bhcm1zICpycylcXG4ge1xcbiBcXHRzdHJ1Y3QgbWRfb2Zmc2V0c19hbmRfc2l6ZXMge1xcbiBcXHRcXHR1NjQgbGFzdF9hZ3JlZWRfc2VjdDtcXG5AQCAtMzA5Nyw3ICszMDk4LDcgQEAgc3RhdGljIGludCBkcmJkX2FkbV9zaW1wbGVfcmVxdWVzdF9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICpcXG4gfVxcbiBcXG4gc3RhdGljIGludCBkcmJkX2JtaW9fc2V0X3N1c3BfYWwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuLVxcdFxcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXFxuK1xcdFxcdFxcdFxcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXFxuIHtcXG4gXFx0aW50IHJ2O1xcbiBcXG5AQCAtMzUyOCwxNSArMzUyOSw1NiBAQCBpbnQgZHJiZF9hZG1fZHVtcF9jb25uZWN0aW9uc19kb25lKHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG4gXFxuIGVudW0geyBTSU5HTEVfUkVTT1VSQ0UsIElURVJBVEVfUkVTT1VSQ0VTIH07XFxuIFxcbitzdGF0aWMgaW50IGRyYmRfbmxfcHV0X2R1bXBfY29ubmVjdGlvbnNfcmVzdWx0KFxcbitcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IsXFxuK1xcdFxcdHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSxcXG4rXFx0XFx0c3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgZW51bSBkcmJkX3JldF9jb2RlIHJldGNvZGUpXFxuK3tcXG4rXFx0c3RydWN0IGRyYmRfZ2VubG1zZ2hkciAqZGg7XFxuK1xcbitcXHRkaCA9IGdlbmxtc2dfcHV0KHNrYiwgTkVUTElOS19DQihjYi1cXHUwMDNlc2tiKS5wb3J0aWQsIGNiLVxcdTAwM2VubGgtXFx1MDAzZW5sbXNnX3NlcSxcXG4rXFx0XFx0XFx0IFxcdTAwMjZkcmJkX25sX2ZhbWlseSwgTkxNX0ZfTVVMVEksXFxuK1xcdFxcdFxcdCBEUkJEX0FETV9HRVRfQ09OTkVDVElPTlMpO1xcbitcXHRpZiAoIWRoKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0ZGgtXFx1MDAzZXJldF9jb2RlID0gcmV0Y29kZTtcXG4rXFx0ZGgtXFx1MDAzZW1pbm9yID0gLTFVO1xcbitcXHRpZiAocmV0Y29kZSA9PSBOT19FUlJPUikge1xcbitcXHRcXHRzdHJ1Y3QgY29ubmVjdGlvbl9zdGF0aXN0aWNzIGNvbm5lY3Rpb25fc3RhdGlzdGljcztcXG4rXFx0XFx0c3RydWN0IGNvbm5lY3Rpb25faW5mbyBjb25uZWN0aW9uX2luZm87XFxuK1xcdFxcdHN0cnVjdCBuZXRfY29uZiAqbmV0X2NvbmY7XFxuK1xcdFxcdGludCBlcnI7XFxuK1xcbitcXHRcXHRlcnIgPSBubGFfcHV0X2RyYmRfY2ZnX2NvbnRleHQoc2tiLCByZXNvdXJjZSwgY29ubmVjdGlvbiwgTlVMTCk7XFxuK1xcdFxcdGlmIChlcnIpXFxuK1xcdFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdG5ldF9jb25mID0gcmN1X2RlcmVmZXJlbmNlKGNvbm5lY3Rpb24tXFx1MDAzZW5ldF9jb25mKTtcXG4rXFx0XFx0aWYgKG5ldF9jb25mKSB7XFxuK1xcdFxcdFxcdGVyciA9IG5ldF9jb25mX3RvX3NrYihza2IsIG5ldF9jb25mKTtcXG4rXFx0XFx0XFx0aWYgKGVycilcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0XFx0fVxcbitcXHRcXHRjb25uZWN0aW9uX3RvX2luZm8oXFx1MDAyNmNvbm5lY3Rpb25faW5mbywgY29ubmVjdGlvbik7XFxuK1xcdFxcdGVyciA9IGNvbm5lY3Rpb25faW5mb190b19za2Ioc2tiLCBcXHUwMDI2Y29ubmVjdGlvbl9pbmZvKTtcXG4rXFx0XFx0aWYgKGVycilcXG4rXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0XFx0Y29ubmVjdGlvbl9zdGF0aXN0aWNzLmNvbm5fY29uZ2VzdGVkID1cXG4rXFx0XFx0XFx0dGVzdF9iaXQoTkVUX0NPTkdFU1RFRCwgXFx1MDAyNmNvbm5lY3Rpb24tXFx1MDAzZWZsYWdzKTtcXG4rXFx0XFx0ZXJyID0gY29ubmVjdGlvbl9zdGF0aXN0aWNzX3RvX3NrYihza2IsIFxcdTAwMjZjb25uZWN0aW9uX3N0YXRpc3RpY3MpO1xcbitcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRcXHRjYi1cXHUwMDNlYXJnc1syXSA9IChsb25nKWNvbm5lY3Rpb247XFxuK1xcdH1cXG4rXFx0Z2VubG1zZ19lbmQoc2tiLCBkaCk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBpbnQgZHJiZF9ubF9nZXRfY29ubmVjdGlvbnNfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG4ge1xcbiBcXHRzdHJ1Y3QgbmxhdHRyICpyZXNvdXJjZV9maWx0ZXI7XFxuIFxcdHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSA9IE5VTEwsICpuZXh0X3Jlc291cmNlO1xcbiBcXHRzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uO1xcbi1cXHRpbnQgZXJyID0gMCwgcmV0Y29kZTtcXG4tXFx0c3RydWN0IGRyYmRfZ2VubG1zZ2hkciAqZGg7XFxuLVxcdHN0cnVjdCBjb25uZWN0aW9uX2luZm8gY29ubmVjdGlvbl9pbmZvO1xcbi1cXHRzdHJ1Y3QgY29ubmVjdGlvbl9zdGF0aXN0aWNzIGNvbm5lY3Rpb25fc3RhdGlzdGljcztcXG4rXFx0aW50IGVyciA9IDA7XFxuIFxcbiBcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIFxcdHJlc291cmNlID0gKHN0cnVjdCBkcmJkX3Jlc291cmNlICopY2ItXFx1MDAzZWFyZ3NbMF07XFxuQEAgLTM1NDQsMTcgKzM1ODYsMjMgQEAgaW50IGRyYmRfbmxfZ2V0X2Nvbm5lY3Rpb25zX2R1bXBpdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFja1xcbiBcXHRcXHRyZXNvdXJjZV9maWx0ZXIgPSBmaW5kX2NmZ19jb250ZXh0X2F0dHIoY2ItXFx1MDAzZW5saCxcXG4gXFx0XFx0XFx0XFx0RFJCRF9BX0RSQkRfQ0ZHX0NPTlRFWFRfQ1RYX1JFU09VUkNFX05BTUUpO1xcbiBcXHRcXHRpZiAocmVzb3VyY2VfZmlsdGVyKSB7XFxuLVxcdFxcdFxcdHJldGNvZGUgPSBFUlJfUkVTX05PVF9LTk9XTjtcXG4gXFx0XFx0XFx0cmVzb3VyY2UgPSBkcmJkX2ZpbmRfcmVzb3VyY2UobmxhX2RhdGEocmVzb3VyY2VfZmlsdGVyKSk7XFxuLVxcdFxcdFxcdGlmICghcmVzb3VyY2UpXFxuLVxcdFxcdFxcdFxcdGdvdG8gcHV0X3Jlc3VsdDtcXG4rXFx0XFx0XFx0aWYgKCFyZXNvdXJjZSkge1xcbitcXHRcXHRcXHRcXHRlcnIgPSBkcmJkX25sX3B1dF9kdW1wX2Nvbm5lY3Rpb25zX3Jlc3VsdChcXG4rXFx0XFx0XFx0XFx0XFx0c2tiLCBjYiwgcmVzb3VyY2UsIE5VTEwsXFxuK1xcdFxcdFxcdFxcdFxcdEVSUl9SRVNfTk9UX0tOT1dOKTtcXG4rXFx0XFx0XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK1xcdFxcdFxcdFxcdGdvdG8gcmV0O1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdGNiLVxcdTAwM2VhcmdzWzBdID0gKGxvbmcpcmVzb3VyY2U7XFxuIFxcdFxcdFxcdGNiLVxcdTAwM2VhcmdzWzFdID0gU0lOR0xFX1JFU09VUkNFO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFx0aWYgKCFyZXNvdXJjZSkge1xcbi1cXHRcXHRpZiAobGlzdF9lbXB0eShcXHUwMDI2ZHJiZF9yZXNvdXJjZXMpKVxcbi1cXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNmRyYmRfcmVzb3VyY2VzKSkge1xcbitcXHRcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4rXFx0XFx0XFx0Z290byByZXQ7XFxuK1xcdFxcdH1cXG4gXFx0XFx0cmVzb3VyY2UgPSBsaXN0X2ZpcnN0X2VudHJ5KFxcdTAwMjZkcmJkX3Jlc291cmNlcywgc3RydWN0IGRyYmRfcmVzb3VyY2UsIHJlc291cmNlcyk7XFxuIFxcdFxcdGtyZWZfZ2V0KFxcdTAwMjZyZXNvdXJjZS1cXHUwMDNla3JlZik7XFxuIFxcdFxcdGNiLVxcdTAwM2VhcmdzWzBdID0gKGxvbmcpcmVzb3VyY2U7XFxuQEAgLTM1NzgsOCArMzYyNiw5IEBAIGludCBkcmJkX25sX2dldF9jb25uZWN0aW9uc19kdW1waXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2tcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoY29ubmVjdGlvbiwgXFx1MDAyNnJlc291cmNlLVxcdTAwM2Vjb25uZWN0aW9ucywgY29ubmVjdGlvbnMpIHtcXG4gXFx0XFx0aWYgKCFoYXNfbmV0X2NvbmYoY29ubmVjdGlvbikpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHRyZXRjb2RlID0gTk9fRVJST1I7XFxuLVxcdFxcdGdvdG8gcHV0X3Jlc3VsdDsgIC8qIG9ubHkgb25lIGl0ZXJhdGlvbiAqL1xcbitcXHRcXHRlcnIgPSBkcmJkX25sX3B1dF9kdW1wX2Nvbm5lY3Rpb25zX3Jlc3VsdChza2IsIGNiLCByZXNvdXJjZSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBjb25uZWN0aW9uLCBOT19FUlJPUik7XFxuK1xcdFxcdGdvdG8gb3V0OyAvKiBvbmx5IG9uZSBpdGVyYXRpb24gKi9cXG4gXFx0fVxcbiBcXG4gbm9fbW9yZV9jb25uZWN0aW9uczpcXG5AQCAtMzYwMiw0NiArMzY1MSwxNCBAQCBpbnQgZHJiZF9ubF9nZXRfY29ubmVjdGlvbnNfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrXFxuIFxcdFxcdGNiLVxcdTAwM2VhcmdzWzJdID0gMDtcXG4gXFx0XFx0Z290byBuZXh0X3Jlc291cmNlO1xcbiBcXHR9XFxuLVxcdGdvdG8gb3V0OyAgLyogbm8gbW9yZSByZXNvdXJjZXMgKi9cXG4gXFxuLXB1dF9yZXN1bHQ6XFxuLVxcdGRoID0gZ2VubG1zZ19wdXQoc2tiLCBORVRMSU5LX0NCKGNiLVxcdTAwM2Vza2IpLnBvcnRpZCxcXG4tXFx0XFx0XFx0Y2ItXFx1MDAzZW5saC1cXHUwMDNlbmxtc2dfc2VxLCBcXHUwMDI2ZHJiZF9ubF9mYW1pbHksXFxuLVxcdFxcdFxcdE5MTV9GX01VTFRJLCBEUkJEX0FETV9HRVRfQ09OTkVDVElPTlMpO1xcbi1cXHRlcnIgPSAtRU5PTUVNO1xcbi1cXHRpZiAoIWRoKVxcbi1cXHRcXHRnb3RvIG91dDtcXG4tXFx0ZGgtXFx1MDAzZXJldF9jb2RlID0gcmV0Y29kZTtcXG4tXFx0ZGgtXFx1MDAzZW1pbm9yID0gLTFVO1xcbi1cXHRpZiAocmV0Y29kZSA9PSBOT19FUlJPUikge1xcbi1cXHRcXHRzdHJ1Y3QgbmV0X2NvbmYgKm5ldF9jb25mO1xcbi1cXG4tXFx0XFx0ZXJyID0gbmxhX3B1dF9kcmJkX2NmZ19jb250ZXh0KHNrYiwgcmVzb3VyY2UsIGNvbm5lY3Rpb24sIE5VTEwpO1xcbi1cXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRnb3RvIG91dDtcXG4tXFx0XFx0bmV0X2NvbmYgPSByY3VfZGVyZWZlcmVuY2UoY29ubmVjdGlvbi1cXHUwMDNlbmV0X2NvbmYpO1xcbi1cXHRcXHRpZiAobmV0X2NvbmYpIHtcXG4tXFx0XFx0XFx0ZXJyID0gbmV0X2NvbmZfdG9fc2tiKHNrYiwgbmV0X2NvbmYpO1xcbi1cXHRcXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4tXFx0XFx0fVxcbi1cXHRcXHRjb25uZWN0aW9uX3RvX2luZm8oXFx1MDAyNmNvbm5lY3Rpb25faW5mbywgY29ubmVjdGlvbik7XFxuLVxcdFxcdGVyciA9IGNvbm5lY3Rpb25faW5mb190b19za2Ioc2tiLCBcXHUwMDI2Y29ubmVjdGlvbl9pbmZvKTtcXG4tXFx0XFx0aWYgKGVycilcXG4tXFx0XFx0XFx0Z290byBvdXQ7XFxuLVxcdFxcdGNvbm5lY3Rpb25fc3RhdGlzdGljcy5jb25uX2Nvbmdlc3RlZCA9IHRlc3RfYml0KE5FVF9DT05HRVNURUQsIFxcdTAwMjZjb25uZWN0aW9uLVxcdTAwM2VmbGFncyk7XFxuLVxcdFxcdGVyciA9IGNvbm5lY3Rpb25fc3RhdGlzdGljc190b19za2Ioc2tiLCBcXHUwMDI2Y29ubmVjdGlvbl9zdGF0aXN0aWNzKTtcXG4tXFx0XFx0aWYgKGVycilcXG4tXFx0XFx0XFx0Z290byBvdXQ7XFxuLVxcdFxcdGNiLVxcdTAwM2VhcmdzWzJdID0gKGxvbmcpY29ubmVjdGlvbjtcXG4tXFx0fVxcbi1cXHRnZW5sbXNnX2VuZChza2IsIGRoKTtcXG4tXFx0ZXJyID0gMDtcXG4rXFx0Lyogbm8gbW9yZSByZXNvdXJjZXMgKi9cXG4gXFxuIG91dDpcXG4gXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLVxcdGlmIChyZXNvdXJjZSlcXG4tXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZyZXNvdXJjZS1cXHUwMDNlY29uZl91cGRhdGUpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnJlc291cmNlLVxcdTAwM2Vjb25mX3VwZGF0ZSk7XFxuK1xcbityZXQ6XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcdHJldHVybiBza2ItXFx1MDAzZWxlbjtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmNcXG5pbmRleCA1OGI5NWJmNGJkY2E2YS4uYjRhMzUwY2QwM2IwNGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmNcXG5AQCAtMTc0LDggKzE3NCw5IEBAIFlvdSBtdXN0IG5vdCBoYXZlIHRoZSByZXFfbG9jazpcXG4gICogd19zYW1lOiBwYXlsb2FkX3NpemUgPT0gbG9naWNhbF9ibG9ja19zaXplXFxuICAqIHRyaW06IHBheWxvYWRfc2l6ZSA9PSAwICovXFxuIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqXFxuLWRyYmRfYWxsb2NfcGVlcl9yZXEoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCB1NjQgaWQsIHNlY3Rvcl90IHNlY3RvcixcXG4tXFx0XFx0ICAgIHVuc2lnbmVkIGludCByZXF1ZXN0X3NpemUsIHVuc2lnbmVkIGludCBwYXlsb2FkX3NpemUsIGdmcF90IGdmcF9tYXNrKSBfX211c3RfaG9sZChsb2NhbClcXG4rZHJiZF9hbGxvY19wZWVyX3JlcShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHU2NCBpZCxcXG4rXFx0XFx0ICAgIHNlY3Rvcl90IHNlY3RvciwgdW5zaWduZWQgaW50IHJlcXVlc3Rfc2l6ZSxcXG4rXFx0XFx0ICAgIHVuc2lnbmVkIGludCBwYXlsb2FkX3NpemUsIGdmcF90IGdmcF9tYXNrKVxcbiB7XFxuIFxcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtXFx1MDAzZWRldmljZTtcXG4gXFx0c3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcTtcXG5AQCAtMjg3LDYgKzI4OCw3IEBAIHN0YXRpYyBpbnQgZHJiZF9maW5pc2hfcGVlcl9yZXFzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxcbiBcXG4gc3RhdGljIHZvaWQgX2RyYmRfd2FpdF9lZV9saXN0X2VtcHR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbiBcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXFxuK1xcdF9fbXVzdF9ob2xkKFxcdTAwMjZkZXZpY2UtXFx1MDAzZXJlc291cmNlLVxcdTAwM2VyZXFfbG9jaylcXG4ge1xcbiBcXHRERUZJTkVfV0FJVCh3YWl0KTtcXG4gXFxuQEAgLTg5Niw2ICs4OTgsOCBAQCBzdGF0aWMgaW50IGNvbm5fY29ubmVjdChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKVxcbiBcXHRpZiAoZHJiZF9zZW5kX3Byb3RvY29sKGNvbm5lY3Rpb24pID09IC1FT1BOT1RTVVBQKVxcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcbitcXHQvKiBjb250ZXh0X3Vuc2FmZSgpIGJlY2F1c2Ugb2YgdHdvIGxvY2tpbmcgbG9vcHMgKi9cXG4rXFx0Y29udGV4dF91bnNhZmUoXFxuIFxcdC8qIFByZXZlbnQgYSByYWNlIGJldHdlZW4gcmVzeW5jLWhhbmRzaGFrZSBhbmRcXG4gXFx0ICogYmVpbmcgcHJvbW90ZWQgdG8gUHJpbWFyeS5cXG4gXFx0ICpcXG5AQCAtOTEzLDYgKzkxNyw3IEBAIHN0YXRpYyBpbnQgY29ubl9jb25uZWN0KHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pXFxuIFxcbiBcXHRpZHJfZm9yX2VhY2hfZW50cnkoXFx1MDAyNmNvbm5lY3Rpb24tXFx1MDAzZXBlZXJfZGV2aWNlcywgcGVlcl9kZXZpY2UsIHZucilcXG4gXFx0XFx0bXV0ZXhfdW5sb2NrKHBlZXJfZGV2aWNlLVxcdTAwM2VkZXZpY2UtXFx1MDAzZXN0YXRlX211dGV4KTtcXG4rXFx0KTtcXG4gXFxuIFxcdHJjdV9yZWFkX2xvY2soKTtcXG4gXFx0aWRyX2Zvcl9lYWNoX2VudHJ5KFxcdTAwMjZjb25uZWN0aW9uLVxcdTAwM2VwZWVyX2RldmljZXMsIHBlZXJfZGV2aWNlLCB2bnIpIHtcXG5AQCAtMTY1Nyw3ICsxNjYyLDcgQEAgc3RhdGljIHZvaWQgZHJiZF9jc3VtX2VlX3NpemUoc3RydWN0IGNyeXB0b19zaGFzaCAqaCxcXG4gICovXFxuIHN0YXRpYyBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKlxcbiByZWFkX2luX2Jsb2NrKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgdTY0IGlkLCBzZWN0b3JfdCBzZWN0b3IsXFxuLVxcdCAgICAgIHN0cnVjdCBwYWNrZXRfaW5mbyAqcGkpIF9fbXVzdF9ob2xkKGxvY2FsKVxcbitcXHQgICAgICBzdHJ1Y3QgcGFja2V0X2luZm8gKnBpKVxcbiB7XFxuIFxcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtXFx1MDAzZWRldmljZTtcXG4gXFx0Y29uc3Qgc2VjdG9yX3QgY2FwYWNpdHkgPSBnZXRfY2FwYWNpdHkoZGV2aWNlLVxcdTAwM2V2ZGlzayk7XFxuQEAgLTE4NjgsOCArMTg3Myw4IEBAIHN0YXRpYyBpbnQgZV9lbmRfcmVzeW5jX2Jsb2NrKHN0cnVjdCBkcmJkX3dvcmsgKncsIGludCB1bnVzZWQpXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgcmVjdl9yZXN5bmNfcmVhZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHNlY3Rvcl90IHNlY3RvcixcXG4tXFx0XFx0XFx0ICAgIHN0cnVjdCBwYWNrZXRfaW5mbyAqcGkpIF9fcmVsZWFzZXMobG9jYWwpXFxuK3N0YXRpYyBpbnQgcmVjdl9yZXN5bmNfcmVhZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsXFxuK1xcdFxcdFxcdCAgICBzZWN0b3JfdCBzZWN0b3IsIHN0cnVjdCBwYWNrZXRfaW5mbyAqcGkpXFxuIHtcXG4gXFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBwZWVyX2RldmljZS1cXHUwMDNlZGV2aWNlO1xcbiBcXHRzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxO1xcbkBAIC0yMjMwLDYgKzIyMzUsNyBAQCBzdGF0aWMgYmxrX29wZl90IHdpcmVfZmxhZ3NfdG9fYmlvKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHUzMiBkcGYpXFxuIFxcbiBzdGF0aWMgdm9pZCBmYWlsX3Bvc3Rwb25lZF9yZXF1ZXN0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9yLFxcbiBcXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgaW50IHNpemUpXFxuK1xcdF9fbXVzdF9ob2xkKFxcdTAwMjZkZXZpY2UtXFx1MDAzZXJlc291cmNlLVxcdTAwM2VyZXFfbG9jaylcXG4ge1xcbiBcXHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UgPSBmaXJzdF9wZWVyX2RldmljZShkZXZpY2UpO1xcbiBcXHRzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaTtcXG5AQCAtMjI1Niw2ICsyMjYyLDcgQEAgc3RhdGljIHZvaWQgZmFpbF9wb3N0cG9uZWRfcmVxdWVzdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3RvcixcXG4gXFxuIHN0YXRpYyBpbnQgaGFuZGxlX3dyaXRlX2NvbmZsaWN0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4gXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKVxcbitcXHRfX211c3RfaG9sZChcXHUwMDI2ZGV2aWNlLVxcdTAwM2VyZXNvdXJjZS1cXHUwMDNlcmVxX2xvY2spXFxuIHtcXG4gXFx0c3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiA9IHBlZXJfcmVxLVxcdTAwM2VwZWVyX2RldmljZS1cXHUwMDNlY29ubmVjdGlvbjtcXG4gXFx0Ym9vbCByZXNvbHZlX2NvbmZsaWN0cyA9IHRlc3RfYml0KFJFU09MVkVfQ09ORkxJQ1RTLCBcXHUwMDI2Y29ubmVjdGlvbi1cXHUwMDNlZmxhZ3MpO1xcbkBAIC0yODI2LDcgKzI4MzMsNyBAQCBzdGF0aWMgaW50IHJlY2VpdmVfRGF0YVJlcXVlc3Qoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgc3RydWN0IHBhY2tldFxcbiAvKlxcbiAgKiBkcmJkX2FzYl9yZWNvdmVyXzBwICAtICBSZWNvdmVyIGFmdGVyIHNwbGl0LWJyYWluIHdpdGggbm8gcmVtYWluaW5nIHByaW1hcmllc1xcbiAgKi9cXG4tc3RhdGljIGludCBkcmJkX2FzYl9yZWNvdmVyXzBwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXFxuK3N0YXRpYyBpbnQgZHJiZF9hc2JfcmVjb3Zlcl8wcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXFxuIHtcXG4gXFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBwZWVyX2RldmljZS1cXHUwMDNlZGV2aWNlO1xcbiBcXHRpbnQgc2VsZiwgcGVlciwgcnYgPSAtMTAwO1xcbkBAIC0yOTA5LDcgKzI5MTYsNyBAQCBzdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMHAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZFxcbiAvKlxcbiAgKiBkcmJkX2FzYl9yZWNvdmVyXzFwICAtICBSZWNvdmVyIGFmdGVyIHNwbGl0LWJyYWluIHdpdGggb25lIHJlbWFpbmluZyBwcmltYXJ5XFxuICAqL1xcbi1zdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMXAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcXG4rc3RhdGljIGludCBkcmJkX2FzYl9yZWNvdmVyXzFwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHBlZXJfZGV2aWNlLVxcdTAwM2VkZXZpY2U7XFxuIFxcdGludCBoZywgcnYgPSAtMTAwO1xcbkBAIC0yOTY2LDcgKzI5NzMsNyBAQCBzdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMXAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZFxcbiAvKlxcbiAgKiBkcmJkX2FzYl9yZWNvdmVyXzJwICAtICBSZWNvdmVyIGFmdGVyIHNwbGl0LWJyYWluIHdpdGggdHdvIHJlbWFpbmluZyBwcmltYXJpZXNcXG4gICovXFxuLXN0YXRpYyBpbnQgZHJiZF9hc2JfcmVjb3Zlcl8ycChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxcbitzdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMnAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxcbiB7XFxuIFxcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtXFx1MDAzZWRldmljZTtcXG4gXFx0aW50IGhnLCBydiA9IC0xMDA7XFxuQEAgLTMwNDQsNyArMzA1MSw3IEBAIHN0YXRpYyB2b2lkIGRyYmRfdXVpZF9kdW1wKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICp0ZXh0LCB1NjQgKnV1aWQsXFxuICAqL1xcbiBcXG4gc3RhdGljIGludCBkcmJkX3V1aWRfY29tcGFyZShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqY29uc3QgcGVlcl9kZXZpY2UsXFxuLVxcdFxcdGVudW0gZHJiZF9yb2xlIGNvbnN0IHBlZXJfcm9sZSwgaW50ICpydWxlX25yKSBfX211c3RfaG9sZChsb2NhbClcXG4rXFx0XFx0XFx0ICAgICBlbnVtIGRyYmRfcm9sZSBjb25zdCBwZWVyX3JvbGUsIGludCAqcnVsZV9ucilcXG4ge1xcbiBcXHRzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25zdCBjb25uZWN0aW9uID0gcGVlcl9kZXZpY2UtXFx1MDAzZWNvbm5lY3Rpb247XFxuIFxcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtXFx1MDAzZWRldmljZTtcXG5AQCAtMzI2NCw3ICszMjcxLDcgQEAgc3RhdGljIGludCBkcmJkX3V1aWRfY29tcGFyZShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqY29uc3QgcGVlcl9kZXZpY2UsXFxuICAqL1xcbiBzdGF0aWMgZW51bSBkcmJkX2Nvbm5zIGRyYmRfc3luY19oYW5kc2hha2Uoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBlbnVtIGRyYmRfcm9sZSBwZWVyX3JvbGUsXFxuLVxcdFxcdFxcdFxcdFxcdCAgIGVudW0gZHJiZF9kaXNrX3N0YXRlIHBlZXJfZGlzaykgX19tdXN0X2hvbGQobG9jYWwpXFxuK1xcdFxcdFxcdFxcdFxcdCAgIGVudW0gZHJiZF9kaXNrX3N0YXRlIHBlZXJfZGlzaylcXG4ge1xcbiBcXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHBlZXJfZGV2aWNlLVxcdTAwM2VkZXZpY2U7XFxuIFxcdGVudW0gZHJiZF9jb25ucyBydiA9IENfTUFTSztcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuY1xcbmluZGV4IDcwZjc1ZWYwNzk0NTdkLi4xY2M0NTU4NDZmOTIwMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5jXFxuQEAgLTk1MSw3ICs5NTEsOSBAQCBzdGF0aWMgYm9vbCByZW1vdGVfZHVlX3RvX3JlYWRfYmFsYW5jaW5nKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzZVxcbiAgKlxcbiAgKiBPbmx5IHdheSBvdXQ6IHJlbW92ZSB0aGUgY29uZmxpY3RpbmcgaW50ZXJ2YWxzIGZyb20gdGhlIHRyZWUuXFxuICAqL1xcbi1zdGF0aWMgdm9pZCBjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKVxcbitzdGF0aWMgdm9pZCBjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMoc3RydWN0IGRyYmRfcmVzb3VyY2UgKnJlc291cmNlLFxcbitcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICpyZXEpXFxuK1xcdF9fbXVzdF9ob2xkKFxcdTAwMjZyZXNvdXJjZS1cXHUwMDNlcmVxX2xvY2spXFxuIHtcXG4gXFx0REVGSU5FX1dBSVQod2FpdCk7XFxuIFxcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcmVxLVxcdTAwM2VkZXZpY2U7XFxuQEAgLTk3NCw5ICs5NzYsOSBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKVxcbiBcXHRcXHQvKiBJbmRpY2F0ZSB0byB3YWtlIHVwIGRldmljZS1cXHUwMDNlbWlzY193YWl0IG9uIHByb2dyZXNzLiAgKi9cXG4gXFx0XFx0cHJlcGFyZV90b193YWl0KFxcdTAwMjZkZXZpY2UtXFx1MDAzZW1pc2Nfd2FpdCwgXFx1MDAyNndhaXQsIFRBU0tfVU5JTlRFUlJVUFRJQkxFKTtcXG4gXFx0XFx0aS1cXHUwMDNld2FpdGluZyA9IHRydWU7XFxuLVxcdFxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2ZGV2aWNlLVxcdTAwM2VyZXNvdXJjZS1cXHUwMDNlcmVxX2xvY2spO1xcbitcXHRcXHRzcGluX3VubG9ja19pcnEoXFx1MDAyNnJlc291cmNlLVxcdTAwM2VyZXFfbG9jayk7XFxuIFxcdFxcdHNjaGVkdWxlKCk7XFxuLVxcdFxcdHNwaW5fbG9ja19pcnEoXFx1MDAyNmRldmljZS1cXHUwMDNlcmVzb3VyY2UtXFx1MDAzZXJlcV9sb2NrKTtcXG4rXFx0XFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2cmVzb3VyY2UtXFx1MDAzZXJlcV9sb2NrKTtcXG4gXFx0fVxcbiBcXHRmaW5pc2hfd2FpdChcXHUwMDI2ZGV2aWNlLVxcdTAwM2VtaXNjX3dhaXQsIFxcdTAwMjZ3YWl0KTtcXG4gfVxcbkBAIC0xMzI5LDcgKzEzMzEsNyBAQCBzdGF0aWMgdm9pZCBkcmJkX3NlbmRfYW5kX3N1Ym1pdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfcmVxdWVzdFxcbiBcXHRcXHQvKiBUaGlzIG1heSB0ZW1wb3JhcmlseSBnaXZlIHVwIHRoZSByZXFfbG9jayxcXG4gXFx0XFx0ICogYnV0IHdpbGwgcmUtYXF1aXJlIGl0IGJlZm9yZSBpdCByZXR1cm5zIGhlcmUuXFxuIFxcdFxcdCAqIE5lZWRzIHRvIGJlIGJlZm9yZSB0aGUgY2hlY2sgb24gZHJiZF9zdXNwZW5kZWQoKSAqL1xcbi1cXHRcXHRjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMocmVxKTtcXG4rXFx0XFx0Y29tcGxldGVfY29uZmxpY3Rpbmdfd3JpdGVzKHJlc291cmNlLCByZXEpO1xcbiBcXHRcXHQvKiBubyBtb3JlIGdpdmluZyB1cCByZXFfbG9jayBmcm9tIG5vdyBvbiEgKi9cXG4gXFxuIFxcdFxcdC8qIGNoZWNrIGZvciBjb25nZXN0aW9uLCBhbmQgcG90ZW50aWFsbHkgc3RvcCBzZW5kaW5nXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5oIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmhcXG5pbmRleCA5YWU4NjBlNzU5MWIzMi4uN2YyNGNiOGU1NDI5YTMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmhcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuaFxcbkBAIC0yNjQsMjAgKzI2NCwxOCBAQCBzdHJ1Y3QgYmlvX2FuZF9lcnJvciB7XFxuIFxcdGludCBlcnJvcjtcXG4gfTtcXG4gXFxuLWV4dGVybiB2b2lkIHN0YXJ0X25ld190bF9lcG9jaChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9yZXFfZGVzdHJveShzdHJ1Y3Qga3JlZiAqa3JlZik7XFxuLWV4dGVybiBpbnQgX19yZXFfbW9kKHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSwgZW51bSBkcmJkX3JlcV9ldmVudCB3aGF0LFxcbi1cXHRcXHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsXFxuLVxcdFxcdHN0cnVjdCBiaW9fYW5kX2Vycm9yICptKTtcXG4tZXh0ZXJuIHZvaWQgY29tcGxldGVfbWFzdGVyX2JpbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4tXFx0XFx0c3RydWN0IGJpb19hbmRfZXJyb3IgKm0pO1xcbi1leHRlcm4gdm9pZCByZXF1ZXN0X3RpbWVyX2ZuKHN0cnVjdCB0aW1lcl9saXN0ICp0KTtcXG4tZXh0ZXJuIHZvaWQgdGxfcmVzdGFydChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQpO1xcbi1leHRlcm4gdm9pZCBfdGxfcmVzdGFydChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQpO1xcbi1leHRlcm4gdm9pZCB0bF9hYm9ydF9kaXNrX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4rdm9pZCBzdGFydF9uZXdfdGxfZXBvY2goc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XFxuK3ZvaWQgZHJiZF9yZXFfZGVzdHJveShzdHJ1Y3Qga3JlZiAqa3JlZik7XFxuK2ludCBfX3JlcV9tb2Qoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQsXFxuK1xcdCAgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc3RydWN0IGJpb19hbmRfZXJyb3IgKm0pO1xcbit2b2lkIGNvbXBsZXRlX21hc3Rlcl9iaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBiaW9fYW5kX2Vycm9yICptKTtcXG4rdm9pZCByZXF1ZXN0X3RpbWVyX2ZuKHN0cnVjdCB0aW1lcl9saXN0ICp0KTtcXG4rdm9pZCB0bF9yZXN0YXJ0KHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGVudW0gZHJiZF9yZXFfZXZlbnQgd2hhdCk7XFxuK3ZvaWQgX3RsX3Jlc3RhcnQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgZW51bSBkcmJkX3JlcV9ldmVudCB3aGF0KTtcXG4rdm9pZCB0bF9hYm9ydF9kaXNrX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4gXFxuIC8qIHRoaXMgaXMgaW4gZHJiZF9tYWluLmMgKi9cXG4tZXh0ZXJuIHZvaWQgZHJiZF9yZXN0YXJ0X3JlcXVlc3Qoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKTtcXG4rdm9pZCBkcmJkX3Jlc3RhcnRfcmVxdWVzdChzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICpyZXEpO1xcbiBcXG4gLyogdXNlIHRoaXMgaWYgeW91IGRvbid0IHdhbnQgdG8gZGVhbCB3aXRoIGNhbGxpbmcgY29tcGxldGVfbWFzdGVyX2JpbygpXFxuICAqIG91dHNpZGUgdGhlIHNwaW5sb2NrLCBlLmcuIHdoZW4gd2Fsa2luZyBzb21lIGxpc3Qgb24gY2xlYW51cC4gKi9cXG5AQCAtMzE5LDYgKzMxNyw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJlcV9tb2Qoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxLFxcbiBcXHRyZXR1cm4gcnY7XFxuIH1cXG4gXFxuLWV4dGVybiBib29sIGRyYmRfc2hvdWxkX2RvX3JlbW90ZSh1bmlvbiBkcmJkX2Rldl9zdGF0ZSk7XFxuK2Jvb2wgZHJiZF9zaG91bGRfZG9fcmVtb3RlKHVuaW9uIGRyYmRfZGV2X3N0YXRlKTtcXG4gXFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuY1xcbmluZGV4IGFkY2JhN2YxZDhlYTQ5Li40MTZhNzFkN2E2MWMwNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5jXFxuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuY1xcbkBAIC01NDksMTkgKzU0OSwxMCBAQCBfcmVxX3N0X2NvbmQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuaW9uIGRyYmRfc3RhdGUgbWFzayxcXG4gXFx0cmV0dXJuIHJ2O1xcbiB9XFxuIFxcbi0vKipcXG4tICogZHJiZF9yZXFfc3RhdGUoKSAtIFBlcmZvcm0gYW4gZXZlbnR1YWxseSBjbHVzdGVyIHdpZGUgc3RhdGUgY2hhbmdlXFxuLSAqIEBkZXZpY2U6XFx0RFJCRCBkZXZpY2UuXFxuLSAqIEBtYXNrOlxcdG1hc2sgb2Ygc3RhdGUgYml0cyB0byBjaGFuZ2UuXFxuLSAqIEB2YWw6XFx0dmFsdWUgb2YgbmV3IHN0YXRlIGJpdHMuXFxuLSAqIEBmOlxcdFxcdGZsYWdzXFxuLSAqXFxuLSAqIFNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LCB1c2UgZHJiZF9yZXF1ZXN0X3N0YXRlKCkgb3JcXG4tICogX2RyYmRfcmVxdWVzdF9zdGF0ZSgpLlxcbi0gKi9cXG4tc3RhdGljIGVudW0gZHJiZF9zdGF0ZV9ydlxcbi1kcmJkX3JlcV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxcbi1cXHQgICAgICAgdW5pb24gZHJiZF9zdGF0ZSB2YWwsIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYpXFxuK3N0YXRpYyBlbnVtIGRyYmRfc3RhdGVfcnYgX19kcmJkX3JlcV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxcbitcXHRcXHRcXHRcXHRcXHQgICB1bmlvbiBkcmJkX3N0YXRlIHZhbCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgZW51bSBjaGdfc3RhdGVfZmxhZ3MgZilcXG4ge1xcbiBcXHRzdHJ1Y3QgY29tcGxldGlvbiBkb25lO1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbkBAIC01NzEsOCArNTYyLDYgQEAgZHJiZF9yZXFfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuaW9uIGRyYmRfc3RhdGUgbWFzayxcXG4gXFxuIFxcdGluaXRfY29tcGxldGlvbihcXHUwMDI2ZG9uZSk7XFxuIFxcbi1cXHRpZiAoZiBcXHUwMDI2IENTX1NFUklBTElaRSlcXG4tXFx0XFx0bXV0ZXhfbG9jayhkZXZpY2UtXFx1MDAzZXN0YXRlX211dGV4KTtcXG4gXFx0aWYgKGYgXFx1MDAyNiBDU19JTkhJQklUX01EX0lPKVxcbiBcXHRcXHRidWZmZXIgPSBkcmJkX21kX2dldF9idWZmZXIoZGV2aWNlLCBfX2Z1bmNfXyk7XFxuIFxcbkBAIC02MjksOCArNjE4LDM0IEBAIGRyYmRfcmVxX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXFxuIGFib3J0OlxcbiBcXHRpZiAoYnVmZmVyKVxcbiBcXHRcXHRkcmJkX21kX3B1dF9idWZmZXIoZGV2aWNlKTtcXG4tXFx0aWYgKGYgXFx1MDAyNiBDU19TRVJJQUxJWkUpXFxuK1xcbitcXHRyZXR1cm4gcnY7XFxuK31cXG4rXFxuKy8qKlxcbisgKiBkcmJkX3JlcV9zdGF0ZSgpIC0gUGVyZm9ybSBhbiBldmVudHVhbGx5IGNsdXN0ZXIgd2lkZSBzdGF0ZSBjaGFuZ2VcXG4rICogQGRldmljZTpcXHREUkJEIGRldmljZS5cXG4rICogQG1hc2s6XFx0bWFzayBvZiBzdGF0ZSBiaXRzIHRvIGNoYW5nZS5cXG4rICogQHZhbDpcXHR2YWx1ZSBvZiBuZXcgc3RhdGUgYml0cy5cXG4rICogQGY6XFx0XFx0ZmxhZ3NcXG4rICpcXG4rICogU2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHksIHVzZSBkcmJkX3JlcXVlc3Rfc3RhdGUoKSBvclxcbisgKiBfZHJiZF9yZXF1ZXN0X3N0YXRlKCkuXFxuKyAqL1xcbitzdGF0aWMgZW51bSBkcmJkX3N0YXRlX3J2IGRyYmRfcmVxX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHRcXHRcXHQgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxcbitcXHRcXHRcXHRcXHRcXHQgdW5pb24gZHJiZF9zdGF0ZSB2YWwsXFxuK1xcdFxcdFxcdFxcdFxcdCBlbnVtIGNoZ19zdGF0ZV9mbGFncyBmKVxcbit7XFxuK1xcdGVudW0gZHJiZF9zdGF0ZV9ydiBydjtcXG4rXFxuK1xcdGlmIChmIFxcdTAwMjYgQ1NfU0VSSUFMSVpFKSB7XFxuK1xcdFxcdG11dGV4X2xvY2soZGV2aWNlLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuK1xcdFxcdHJ2ID0gX19kcmJkX3JlcV9zdGF0ZShkZXZpY2UsIG1hc2ssIHZhbCwgZik7XFxuIFxcdFxcdG11dGV4X3VubG9jayhkZXZpY2UtXFx1MDAzZXN0YXRlX211dGV4KTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0cnYgPSBfX2RyYmRfcmVxX3N0YXRlKGRldmljZSwgbWFzaywgdmFsLCBmKTtcXG4rXFx0fVxcbiBcXG4gXFx0cmV0dXJuIHJ2O1xcbiB9XFxuQEAgLTY5OSw2ICs3MTQsNyBAQCBpbnQgZHJiZF9yZXF1ZXN0X2RldGFjaF9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxcbiBlbnVtIGRyYmRfc3RhdGVfcnZcXG4gX2RyYmRfcmVxdWVzdF9zdGF0ZV9ob2xkaW5nX3N0YXRlX211dGV4KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXFxuIFxcdFxcdCAgICB1bmlvbiBkcmJkX3N0YXRlIHZhbCwgZW51bSBjaGdfc3RhdGVfZmxhZ3MgZilcXG4rXFx0X19tdXN0X2hvbGQoXFx1MDAyNmRldmljZS1cXHUwMDNlc3RhdGVfbXV0ZXgpXFxuIHtcXG4gXFx0ZW51bSBkcmJkX3N0YXRlX3J2IHJ2O1xcbiBcXG5AQCAtMjI5Miw2ICsyMzA4LDcgQEAgX2Nvbm5fcnFfY29uZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssIHVuaW9uIGRcXG4gZW51bSBkcmJkX3N0YXRlX3J2XFxuIF9jb25uX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLCB1bmlvbiBkcmJkX3N0YXRlIHZhbCxcXG4gXFx0XFx0ICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGZsYWdzKVxcbitcXHRfX2NvbnRleHRfdW5zYWZlKGNvbmRpdGlvbmFsIGxvY2tpbmcpXFxuIHtcXG4gXFx0ZW51bSBkcmJkX3N0YXRlX3J2IHJ2ID0gU1NfU1VDQ0VTUztcXG4gXFx0c3RydWN0IGFmdGVyX2Nvbm5fc3RhdGVfY2hnX3dvcmsgKmFjc2N3O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5oIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuaFxcbmluZGV4IGNiYWViODAxOGRiZjU5Li5hN2UzMWQwOTIwMzk2YiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5oXFxuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuaFxcbkBAIC0xMTIsMjYgKzExMiwyMyBAQCB1bmlvbiBkcmJkX2Rldl9zdGF0ZSB7XFxuIFxcdHVuc2lnbmVkIGludCBpO1xcbiB9O1xcbiBcXG4tZXh0ZXJuIGVudW0gZHJiZF9zdGF0ZV9ydiBkcmJkX2NoYW5nZV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXFxuLVxcdFxcdFxcdFxcdFxcdCAgICB1bmlvbiBkcmJkX3N0YXRlIHZhbCk7XFxuLWV4dGVybiB2b2lkIGRyYmRfZm9yY2Vfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsXFxuLVxcdFxcdFxcdHVuaW9uIGRyYmRfc3RhdGUpO1xcbi1leHRlcm4gZW51bSBkcmJkX3N0YXRlX3J2IF9kcmJkX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICosXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgIHVuaW9uIGRyYmRfc3RhdGUsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgIHVuaW9uIGRyYmRfc3RhdGUsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzKTtcXG4tXFxuLWV4dGVybiBlbnVtIGRyYmRfc3RhdGVfcnZcXG4rZW51bSBkcmJkX3N0YXRlX3J2IGRyYmRfY2hhbmdlX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHRcXHQgICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYsXFxuK1xcdFxcdFxcdFxcdCAgICAgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxcbitcXHRcXHRcXHRcXHQgICAgIHVuaW9uIGRyYmRfc3RhdGUgdmFsKTtcXG4rdm9pZCBkcmJkX2ZvcmNlX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLCB1bmlvbiBkcmJkX3N0YXRlKTtcXG4rZW51bSBkcmJkX3N0YXRlX3J2IF9kcmJkX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsXFxuK1xcdFxcdFxcdFxcdCAgICAgICB1bmlvbiBkcmJkX3N0YXRlLCBlbnVtIGNoZ19zdGF0ZV9mbGFncyk7XFxuK1xcbitlbnVtIGRyYmRfc3RhdGVfcnZcXG4gX2RyYmRfcmVxdWVzdF9zdGF0ZV9ob2xkaW5nX3N0YXRlX211dGV4KHN0cnVjdCBkcmJkX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLFxcbiBcXHRcXHRcXHRcXHRcXHR1bmlvbiBkcmJkX3N0YXRlLCBlbnVtIGNoZ19zdGF0ZV9mbGFncyk7XFxuIFxcbi1leHRlcm4gZW51bSBkcmJkX3N0YXRlX3J2IF9kcmJkX3NldF9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSxcXG4tXFx0XFx0XFx0XFx0XFx0ICBlbnVtIGNoZ19zdGF0ZV9mbGFncyxcXG4tXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgY29tcGxldGlvbiAqZG9uZSk7XFxuLWV4dGVybiB2b2lkIHByaW50X3N0X2VycihzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSxcXG4tXFx0XFx0XFx0dW5pb24gZHJiZF9zdGF0ZSwgZW51bSBkcmJkX3N0YXRlX3J2KTtcXG4rZW51bSBkcmJkX3N0YXRlX3J2IF9kcmJkX3NldF9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSxcXG4rXFx0XFx0XFx0XFx0ICAgZW51bSBjaGdfc3RhdGVfZmxhZ3MsXFxuK1xcdFxcdFxcdFxcdCAgIHN0cnVjdCBjb21wbGV0aW9uICpkb25lKTtcXG4rdm9pZCBwcmludF9zdF9lcnIoc3RydWN0IGRyYmRfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsIHVuaW9uIGRyYmRfc3RhdGUsXFxuK1xcdFxcdCAgZW51bSBkcmJkX3N0YXRlX3J2KTtcXG4gXFxuIGVudW0gZHJiZF9zdGF0ZV9ydlxcbiBfY29ubl9yZXF1ZXN0X3N0YXRlKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHVuaW9uIGRyYmRfc3RhdGUgbWFzaywgdW5pb24gZHJiZF9zdGF0ZSB2YWwsXFxuQEAgLTE0MSw4ICsxMzgsOCBAQCBlbnVtIGRyYmRfc3RhdGVfcnZcXG4gY29ubl9yZXF1ZXN0X3N0YXRlKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHVuaW9uIGRyYmRfc3RhdGUgbWFzaywgdW5pb24gZHJiZF9zdGF0ZSB2YWwsXFxuIFxcdFxcdCAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGZsYWdzKTtcXG4gXFxuLWV4dGVybiB2b2lkIGRyYmRfcmVzdW1lX2FsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4tZXh0ZXJuIGJvb2wgY29ubl9hbGxfdm9sc191bmNvbmYoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XFxuK3ZvaWQgZHJiZF9yZXN1bWVfYWwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbitib29sIGNvbm5fYWxsX3ZvbHNfdW5jb25mKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xcbiBcXG4gLyoqXFxuICAqIGRyYmRfcmVxdWVzdF9zdGF0ZSgpIC0gUmVxdWVzdCBhIHN0YXRlIGNoYW5nZVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZV9jaGFuZ2UuaCBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3N0YXRlX2NoYW5nZS5oXFxuaW5kZXggYTU2YTU3ZDY3Njg2MjkuLmY1OGE1NTAxNDE3N2RlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3N0YXRlX2NoYW5nZS5oXFxuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGVfY2hhbmdlLmhcXG5AQCAtNDAsMjUgKzQwLDE3IEBAIHN0cnVjdCBkcmJkX3N0YXRlX2NoYW5nZSB7XFxuIFxcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlX3N0YXRlX2NoYW5nZSAqcGVlcl9kZXZpY2VzO1xcbiB9O1xcbiBcXG4tZXh0ZXJuIHN0cnVjdCBkcmJkX3N0YXRlX2NoYW5nZSAqcmVtZW1iZXJfb2xkX3N0YXRlKHN0cnVjdCBkcmJkX3Jlc291cmNlICosIGdmcF90KTtcXG4tZXh0ZXJuIHZvaWQgY29weV9vbGRfdG9fbmV3X3N0YXRlX2NoYW5nZShzdHJ1Y3QgZHJiZF9zdGF0ZV9jaGFuZ2UgKik7XFxuLWV4dGVybiB2b2lkIGZvcmdldF9zdGF0ZV9jaGFuZ2Uoc3RydWN0IGRyYmRfc3RhdGVfY2hhbmdlICopO1xcbi1cXG4tZXh0ZXJuIGludCBub3RpZnlfcmVzb3VyY2Vfc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosXFxuLVxcdFxcdFxcdFxcdFxcdCB1bnNpZ25lZCBpbnQsXFxuLVxcdFxcdFxcdFxcdFxcdCB2b2lkICosXFxuLVxcdFxcdFxcdFxcdFxcdCBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7XFxuLWV4dGVybiBpbnQgbm90aWZ5X2Nvbm5lY3Rpb25fc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosXFxuLVxcdFxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgdm9pZCAqLFxcbi1cXHRcXHRcXHRcXHRcXHQgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7XFxuLWV4dGVybiBpbnQgbm90aWZ5X2RldmljZV9zdGF0ZV9jaGFuZ2Uoc3RydWN0IHNrX2J1ZmYgKixcXG4tXFx0XFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGludCxcXG4tXFx0XFx0XFx0XFx0ICAgICAgIHZvaWQgKixcXG4tXFx0XFx0XFx0XFx0ICAgICAgIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSB0eXBlKTtcXG4tZXh0ZXJuIGludCBub3RpZnlfcGVlcl9kZXZpY2Vfc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosXFxuLVxcdFxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICB2b2lkICosXFxuLVxcdFxcdFxcdFxcdFxcdCAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7XFxuK3N0cnVjdCBkcmJkX3N0YXRlX2NoYW5nZSAqcmVtZW1iZXJfb2xkX3N0YXRlKHN0cnVjdCBkcmJkX3Jlc291cmNlICosIGdmcF90KTtcXG4rdm9pZCBjb3B5X29sZF90b19uZXdfc3RhdGVfY2hhbmdlKHN0cnVjdCBkcmJkX3N0YXRlX2NoYW5nZSAqKTtcXG4rdm9pZCBmb3JnZXRfc3RhdGVfY2hhbmdlKHN0cnVjdCBkcmJkX3N0YXRlX2NoYW5nZSAqKTtcXG4rXFxuK2ludCBub3RpZnlfcmVzb3VyY2Vfc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCwgdm9pZCAqLFxcbitcXHRcXHRcXHRcXHQgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xcbitpbnQgbm90aWZ5X2Nvbm5lY3Rpb25fc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCwgdm9pZCAqLFxcbitcXHRcXHRcXHRcXHQgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7XFxuK2ludCBub3RpZnlfZGV2aWNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsIHZvaWQgKixcXG4rXFx0XFx0XFx0ICAgICAgIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSB0eXBlKTtcXG4raW50IG5vdGlmeV9wZWVyX2RldmljZV9zdGF0ZV9jaGFuZ2Uoc3RydWN0IHNrX2J1ZmYgKiwgdW5zaWduZWQgaW50LCB2b2lkICosXFxuK1xcdFxcdFxcdFxcdCAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7XFxuIFxcbiAjZW5kaWYgIC8qIERSQkRfU1RBVEVfQ0hBTkdFX0ggKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfd29ya2VyLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF93b3JrZXIuY1xcbmluZGV4IDA2OTdmOTlmZWQxOGQ3Li42ZmVjNTliYmYwZTlhNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF93b3JrZXIuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3dvcmtlci5jXFxuQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBkcmJkX21kX2VuZGlvKHN0cnVjdCBiaW8gKmJpbylcXG4gLyogcmVhZHMgb24gYmVoYWxmIG9mIHRoZSBwYXJ0bmVyLFxcbiAgKiBcXFwic3VibWl0dGVkXFxcIiBieSB0aGUgcmVjZWl2ZXJcXG4gICovXFxuLXN0YXRpYyB2b2lkIGRyYmRfZW5kaW9fcmVhZF9zZWNfZmluYWwoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSkgX19yZWxlYXNlcyhsb2NhbClcXG4rc3RhdGljIHZvaWQgZHJiZF9lbmRpb19yZWFkX3NlY19maW5hbChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKVxcbiB7XFxuIFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwO1xcbiBcXHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UgPSBwZWVyX3JlcS1cXHUwMDNlcGVlcl9kZXZpY2U7XFxuQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIHZvaWQgZHJiZF9lbmRpb19yZWFkX3NlY19maW5hbChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKSBfX3JlbGVcXG4gXFxuIC8qIHdyaXRlcyBvbiBiZWhhbGYgb2YgdGhlIHBhcnRuZXIsIG9yIHJlc3luYyB3cml0ZXMsXFxuICAqIFxcXCJzdWJtaXR0ZWRcXFwiIGJ5IHRoZSByZWNlaXZlciwgZmluYWwgc3RhZ2UuICAqL1xcbi12b2lkIGRyYmRfZW5kaW9fd3JpdGVfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpIF9fcmVsZWFzZXMobG9jYWwpXFxuK3ZvaWQgZHJiZF9lbmRpb193cml0ZV9zZWNfZmluYWwoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSlcXG4ge1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzID0gMDtcXG4gXFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlID0gcGVlcl9yZXEtXFx1MDAzZXBlZXJfZGV2aWNlO1xcbkBAIC0xOTIzLDEwICsxOTIzLDggQEAgc3RhdGljIHZvaWQgZHJiZF9sZGV2X2Rlc3Ryb3koc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXFxuIFxcdGxjX2Rlc3Ryb3koZGV2aWNlLVxcdTAwM2VhY3RfbG9nKTtcXG4gXFx0ZGV2aWNlLVxcdTAwM2VhY3RfbG9nID0gTlVMTDtcXG4gXFxuLVxcdF9fYWNxdWlyZShsb2NhbCk7XFxuIFxcdGRyYmRfYmFja2luZ19kZXZfZnJlZShkZXZpY2UsIGRldmljZS1cXHUwMDNlbGRldik7XFxuIFxcdGRldmljZS1cXHUwMDNlbGRldiA9IE5VTEw7XFxuLVxcdF9fcmVsZWFzZShsb2NhbCk7XFxuIFxcbiBcXHRjbGVhcl9iaXQoR09JTkdfRElTS0xFU1MsIFxcdTAwMjZkZXZpY2UtXFx1MDAzZWZsYWdzKTtcXG4gXFx0d2FrZV91cChcXHUwMDI2ZGV2aWNlLVxcdTAwM2VtaXNjX3dhaXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxOTo0OTo0My4zNjM5NzI5NzFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNjExMTg2MDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIGxhcmdlIHJlZmFjdG9yaW5nIGFpbWVkIGF0IGZpeGluZyBzcGFyc2Ugd2FybmluZ3MuIEl0IHJlbW92ZXMgYGV4dGVybmAgZnJvbSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW4gaGVhZGVycywgcmVtb3ZlcyBjdXN0b20gc3BhcnNlIGFubm90YXRpb25zIGxpa2UgYF9fbXVzdF9ob2xkKGxvY2FsKWAsIGBfX2FjcXVpcmUobG9jYWwpYCwgYF9fcmVsZWFzZShsb2NhbClgLCBhbmQgcmVmYWN0b3JzIGNvZGUgdG8gYXZvaWQgY29uZGl0aW9uYWwgbG9ja2luZyAoZS5nLiBgZHJiZF9yZXFfc3RhdGVgKS4gSXQgYWxzbyByZW1vdmVzIGEgZmV3IGRlZmVuc2l2ZSBOVUxMIGNoZWNrcyBhbmQgYSB3YXJuaW5nIG9uIGxvY2sgY29udGVudGlvbiBpbiBgZHJiZF9ibV9sb2NrYC4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29yZSBsb2dpYyB0aGF0IHdvdWxkIHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDViYjRhODBkYzk1MzhkOTNjYzlmOTVlZTUxNzQ4NzBiMDBjZGFkMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDEwIDE5OjQ5OjQxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL01ha2VmaWxlIGIvZHJpdmVycy9ibG9jay9kcmJkL01ha2VmaWxlXG5pbmRleCA1ZmFhYThhOGU3ZjAyOS4uY2FlNjU1NzgwMDFiYzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvTWFrZWZpbGVcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9NYWtlZmlsZVxuQEAgLTEsNCArMSw3IEBAXG4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4rXG4rQ09OVEVYVF9BTkFMWVNJUyA6PSB5XG4rXG4gZHJiZC15IDo9IGRyYmRfYnVpbGR0YWcubyBkcmJkX2JpdG1hcC5vIGRyYmRfcHJvYy5vXG4gZHJiZC15ICs9IGRyYmRfd29ya2VyLm8gZHJiZF9yZWNlaXZlci5vIGRyYmRfcmVxLm8gZHJiZF9hY3Rsb2cub1xuIGRyYmQteSArPSBkcmJkX21haW4ubyBkcmJkX3N0cmluZ3MubyBkcmJkX25sLm9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9iaXRtYXAuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2JpdG1hcC5jXG5pbmRleCA2NWVhNmVjNjZiZmQ1Yy4uZDg0OWJkNzgwY2E5NjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9iaXRtYXAuY1xuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYml0bWFwLmNcbkBAIC0xMjIsMjQgKzEyMiwxMyBAQCBzdGF0aWMgdm9pZCBfX2JtX3ByaW50X2xvY2tfaW5mbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqZnVuYylcbiB9XG4gXG4gdm9pZCBkcmJkX2JtX2xvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNoYXIgKndoeSwgZW51bSBibV9mbGFnIGZsYWdzKVxuK1x0X19hY3F1aXJlcyhkcmJkX2Rldl9ibV9sb2NrKVxuK1x0X19hY3F1aXJlcyhcdTAwMjZkZXZpY2UtXHUwMDNlYml0bWFwLVx1MDAzZWJtX2NoYW5nZSlcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9iaXRtYXAgKmIgPSBkZXZpY2UtXHUwMDNlYml0bWFwO1xuLVx0aW50IHRyeWxvY2tfZmFpbGVkO1xuIFxuLVx0aWYgKCFiKSB7XG4tXHRcdGRyYmRfZXJyKGRldmljZSwgXCJGSVhNRSBubyBiaXRtYXAgaW4gZHJiZF9ibV9sb2NrIT9cXG5cIik7XG4tXHRcdHJldHVybjtcbi1cdH1cbi1cbi1cdHRyeWxvY2tfZmFpbGVkID0gIW11dGV4X3RyeWxvY2soXHUwMDI2Yi1cdTAwM2VibV9jaGFuZ2UpO1xuLVxuLVx0aWYgKHRyeWxvY2tfZmFpbGVkKSB7XG4tXHRcdGRyYmRfd2FybihkZXZpY2UsIFwiJXNbJWRdIGdvaW5nIHRvICclcycgYnV0IGJpdG1hcCBhbHJlYWR5IGxvY2tlZCBmb3IgJyVzJyBieSAlc1slZF1cXG5cIixcbi1cdFx0XHQgIGN1cnJlbnQtXHUwMDNlY29tbSwgdGFza19waWRfbnIoY3VycmVudCksXG4tXHRcdFx0ICB3aHksIGItXHUwMDNlYm1fd2h5ID86IFwiP1wiLFxuLVx0XHRcdCAgYi1cdTAwM2VibV90YXNrLVx1MDAzZWNvbW0sIHRhc2tfcGlkX25yKGItXHUwMDNlYm1fdGFzaykpO1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNmItXHUwMDNlYm1fY2hhbmdlKTtcbi1cdH1cbitcdF9fYWNxdWlyZShkcmJkX2Rldl9ibV9sb2NrKTtcbitcdG11dGV4X2xvY2soXHUwMDI2Yi1cdTAwM2VibV9jaGFuZ2UpO1xuIFx0aWYgKEJNX0xPQ0tFRF9NQVNLIFx1MDAyNiBiLVx1MDAzZWJtX2ZsYWdzKVxuIFx0XHRkcmJkX2VycihkZXZpY2UsIFwiRklYTUUgYml0bWFwIGFscmVhZHkgbG9ja2VkIGluIGJtX2xvY2tcXG5cIik7XG4gXHRiLVx1MDAzZWJtX2ZsYWdzIHw9IGZsYWdzIFx1MDAyNiBCTV9MT0NLRURfTUFTSztcbkBAIC0xNDksMTIgKzEzOCwxMCBAQCB2b2lkIGRyYmRfYm1fbG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MpXG4gfVxuIFxuIHZvaWQgZHJiZF9ibV91bmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXG4rXHRfX3JlbGVhc2VzKGRyYmRfZGV2X2JtX2xvY2spXG4rXHRfX3JlbGVhc2VzKFx1MDAyNmRldmljZS1cdTAwM2ViaXRtYXAtXHUwMDNlYm1fY2hhbmdlKVxuIHtcbiBcdHN0cnVjdCBkcmJkX2JpdG1hcCAqYiA9IGRldmljZS1cdTAwM2ViaXRtYXA7XG4tXHRpZiAoIWIpIHtcbi1cdFx0ZHJiZF9lcnIoZGV2aWNlLCBcIkZJWE1FIG5vIGJpdG1hcCBpbiBkcmJkX2JtX3VubG9jayE/XFxuXCIpO1xuLVx0XHRyZXR1cm47XG4tXHR9XG4gXG4gXHRpZiAoIShCTV9MT0NLRURfTUFTSyBcdTAwMjYgZGV2aWNlLVx1MDAzZWJpdG1hcC1cdTAwM2VibV9mbGFncykpXG4gXHRcdGRyYmRfZXJyKGRldmljZSwgXCJGSVhNRSBiaXRtYXAgbm90IGxvY2tlZCBpbiBibV91bmxvY2tcXG5cIik7XG5AQCAtMTYzLDYgKzE1MCw3IEBAIHZvaWQgZHJiZF9ibV91bmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXG4gXHRiLVx1MDAzZWJtX3doeSAgPSBOVUxMO1xuIFx0Yi1cdTAwM2VibV90YXNrID0gTlVMTDtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZiLVx1MDAzZWJtX2NoYW5nZSk7XG4rXHRfX3JlbGVhc2UoZHJiZF9kZXZfYm1fbG9jayk7XG4gfVxuIFxuIC8qIHdlIHN0b3JlIHNvbWUgXCJtZXRhXCIgaW5mbyBhYm91dCBvdXIgcGFnZXMgaW4gcGFnZS1cdTAwM2Vwcml2YXRlICovXG5AQCAtOTg3LDcgKzk3NSw3IEBAIHN0YXRpYyBpbmxpbmUgc2VjdG9yX3QgZHJiZF9tZF9sYXN0X2JpdG1hcF9zZWN0b3Ioc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKmJkZXYpXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGJtX3BhZ2VfaW9fYXN5bmMoc3RydWN0IGRyYmRfYm1fYWlvX2N0eCAqY3R4LCBpbnQgcGFnZV9ucikgX19tdXN0X2hvbGQobG9jYWwpXG4rc3RhdGljIHZvaWQgYm1fcGFnZV9pb19hc3luYyhzdHJ1Y3QgZHJiZF9ibV9haW9fY3R4ICpjdHgsIGludCBwYWdlX25yKVxuIHtcbiBcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gY3R4LVx1MDAzZWRldmljZTtcbiBcdGVudW0gcmVxX29wIG9wID0gY3R4LVx1MDAzZWZsYWdzIFx1MDAyNiBCTV9BSU9fUkVBRCA/IFJFUV9PUF9SRUFEIDogUkVRX09QX1dSSVRFO1xuQEAgLTEwNjAsNyArMTA0OCw4IEBAIHN0YXRpYyB2b2lkIGJtX3BhZ2VfaW9fYXN5bmMoc3RydWN0IGRyYmRfYm1fYWlvX2N0eCAqY3R4LCBpbnQgcGFnZV9ucikgX19tdXN0X2hvXG4gLypcbiAgKiBibV9ydzogcmVhZC93cml0ZSB0aGUgd2hvbGUgYml0bWFwIGZyb20vdG8gaXRzIG9uIGRpc2sgbG9jYXRpb24uXG4gICovXG4tc3RhdGljIGludCBibV9ydyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgdW5zaWduZWQgaW50IGZsYWdzLCB1bnNpZ25lZCBsYXp5X3dyaXRlb3V0X3VwcGVyX2lkeCkgX19tdXN0X2hvbGQobG9jYWwpXG4rc3RhdGljIGludCBibV9ydyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgdW5zaWduZWQgaW50IGZsYWdzLFxuK1x0XHQgdW5zaWduZWQgbGF6eV93cml0ZW91dF91cHBlcl9pZHgpXG4ge1xuIFx0c3RydWN0IGRyYmRfYm1fYWlvX2N0eCAqY3R4O1xuIFx0c3RydWN0IGRyYmRfYml0bWFwICpiID0gZGV2aWNlLVx1MDAzZWJpdG1hcDtcbkBAIC0xMjE1LDcgKzEyMDQsNyBAQCBzdGF0aWMgaW50IGJtX3J3KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHVuc2lnbmVkXG4gICogQGRldmljZTpcdERSQkQgZGV2aWNlLlxuICAqL1xuIGludCBkcmJkX2JtX3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxuK1x0XHQgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxuIFxuIHtcbiBcdHJldHVybiBibV9ydyhkZXZpY2UsIEJNX0FJT19SRUFELCAwKTtcbkBAIC0xMjI4LDcgKzEyMTcsNyBAQCBpbnQgZHJiZF9ibV9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuICAqIFdpbGwgb25seSB3cml0ZSBwYWdlcyB0aGF0IGhhdmUgY2hhbmdlZCBzaW5jZSBsYXN0IElPLlxuICAqL1xuIGludCBkcmJkX2JtX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHQgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbitcdFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXG4ge1xuIFx0cmV0dXJuIGJtX3J3KGRldmljZSwgMCwgMCk7XG4gfVxuQEAgLTEyNDAsNyArMTIyOSw3IEBAIGludCBkcmJkX2JtX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuICAqIFdpbGwgd3JpdGUgYWxsIHBhZ2VzLlxuICAqL1xuIGludCBkcmJkX2JtX3dyaXRlX2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbitcdFx0ICAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxuIHtcbiBcdHJldHVybiBibV9ydyhkZXZpY2UsIEJNX0FJT19XUklURV9BTExfUEFHRVMsIDApO1xuIH1cbkBAIC0xMjUwLDcgKzEyMzksNyBAQCBpbnQgZHJiZF9ibV93cml0ZV9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4gICogQGRldmljZTpcdERSQkQgZGV2aWNlLlxuICAqIEB1cHBlcl9pZHg6XHQwOiB3cml0ZSBhbGwgY2hhbmdlZCBwYWdlczsgK3ZlOiBwYWdlIGluZGV4IHRvIHN0b3Agc2Nhbm5pbmcgZm9yIGNoYW5nZWQgcGFnZXNcbiAgKi9cbi1pbnQgZHJiZF9ibV93cml0ZV9sYXp5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCB1cHBlcl9pZHgpIF9fbXVzdF9ob2xkKGxvY2FsKVxuK2ludCBkcmJkX2JtX3dyaXRlX2xhenkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIHVwcGVyX2lkeClcbiB7XG4gXHRyZXR1cm4gYm1fcncoZGV2aWNlLCBCTV9BSU9fQ09QWV9QQUdFUywgdXBwZXJfaWR4KTtcbiB9XG5AQCAtMTI2Nyw3ICsxMjU2LDcgQEAgaW50IGRyYmRfYm1fd3JpdGVfbGF6eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgdXBwZXJfaWR4KSBfX211c3RfaG9cbiAgKiBwZW5kaW5nIHJlc3luYyBhY2tzIGFyZSBzdGlsbCBiZWluZyBwcm9jZXNzZWQuXG4gICovXG4gaW50IGRyYmRfYm1fd3JpdGVfY29weV9wYWdlcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbitcdFx0XHQgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcbiB7XG4gXHRyZXR1cm4gYm1fcncoZGV2aWNlLCBCTV9BSU9fQ09QWV9QQUdFUywgMCk7XG4gfVxuQEAgLTEyNzYsNyArMTI2NSw3IEBAIGludCBkcmJkX2JtX3dyaXRlX2NvcHlfcGFnZXMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4gICogZHJiZF9ibV93cml0ZV9oaW50ZWQoKSAtIFdyaXRlIGJpdG1hcCBwYWdlcyB3aXRoIFwiaGludFwiIG1hcmtzLCBpZiB0aGV5IGhhdmUgY2hhbmdlZC5cbiAgKiBAZGV2aWNlOlx0RFJCRCBkZXZpY2UuXG4gICovXG4taW50IGRyYmRfYm1fd3JpdGVfaGludGVkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbitpbnQgZHJiZF9ibV93cml0ZV9oaW50ZWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXG4ge1xuIFx0cmV0dXJuIGJtX3J3KGRldmljZSwgQk1fQUlPX1dSSVRFX0hJTlRFRCB8IEJNX0FJT19DT1BZX1BBR0VTLCAwKTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfY29uZmlnLmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9jb25maWcuaFxuaW5kZXggZDIxNTM2NWM2YmIxYjAuLjE2YTk4NWIzMGRkM2ZmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfY29uZmlnLmhcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2NvbmZpZy5oXG5AQCAtNyw3ICs3LDcgQEBcbiAjaWZuZGVmIERSQkRfQ09ORklHX0hcbiAjZGVmaW5lIERSQkRfQ09ORklHX0hcbiBcbi1leHRlcm4gY29uc3QgY2hhciAqZHJiZF9idWlsZHRhZyh2b2lkKTtcbitjb25zdCBjaGFyICpkcmJkX2J1aWxkdGFnKHZvaWQpO1xuIFxuICNkZWZpbmUgUkVMX1ZFUlNJT04gXCI4LjQuMTFcIlxuICNkZWZpbmUgUFJPX1ZFUlNJT05fTUlOIDg2XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50LmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9pbnQuaFxuaW5kZXggNDhiNDVjMzE0MmY3NmEuLjczY2VhYWIzODQyZDBlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50LmhcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludC5oXG5AQCAtMTA5LDcgKzEwOSw3IEBAIGV4dGVybiBzdHJ1Y3QgcmF0ZWxpbWl0X3N0YXRlIGRyYmRfcmF0ZWxpbWl0X3N0YXRlO1xuIGV4dGVybiBzdHJ1Y3QgaWRyIGRyYmRfZGV2aWNlczsgLyogUkNVLCB1cGRhdGVzOiBnZW5sX2xvY2soKSAqL1xuIGV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGRyYmRfcmVzb3VyY2VzOyAvKiBSQ1UsIHVwZGF0ZXM6IGdlbmxfbG9jaygpICovXG4gXG4tZXh0ZXJuIGNvbnN0IGNoYXIgKmNtZG5hbWUoZW51bSBkcmJkX3BhY2tldCBjbWQpO1xuK2NvbnN0IGNoYXIgKmNtZG5hbWUoZW51bSBkcmJkX3BhY2tldCBjbWQpO1xuIFxuIC8qIGZvciBzZW5kaW5nL3JlY2VpdmluZyB0aGUgYml0bWFwLFxuICAqIHBvc3NpYmx5IGluIHNvbWUgZW5jb2Rpbmcgc2NoZW1lICovXG5AQCAtMTI5LDggKzEyOSw4IEBAIHN0cnVjdCBibV94ZmVyX2N0eCB7XG4gXHR1bnNpZ25lZCBieXRlc1syXTtcbiB9O1xuIFxuLWV4dGVybiB2b2lkIElORk9fYm1feGZlcl9zdGF0cyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsXG4tXHRcdFx0ICAgICAgIGNvbnN0IGNoYXIgKmRpcmVjdGlvbiwgc3RydWN0IGJtX3hmZXJfY3R4ICpjKTtcbit2b2lkIElORk9fYm1feGZlcl9zdGF0cyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsXG4rXHRcdFx0Y29uc3QgY2hhciAqZGlyZWN0aW9uLCBzdHJ1Y3QgYm1feGZlcl9jdHggKmMpO1xuIFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBibV94ZmVyX2N0eF9iaXRfdG9fd29yZF9vZmZzZXQoc3RydWN0IGJtX3hmZXJfY3R4ICpjKVxuIHtcbkBAIC0xNTEsNyArMTUxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGJtX3hmZXJfY3R4X2JpdF90b193b3JkX29mZnNldChzdHJ1Y3QgYm1feGZlcl9jdHggKmMpXG4gI2VuZGlmXG4gfVxuIFxuLWV4dGVybiB1bnNpZ25lZCBpbnQgZHJiZF9oZWFkZXJfc2l6ZShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbit1bnNpZ25lZCBpbnQgZHJiZF9oZWFkZXJfc2l6ZShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbiBcbiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiBlbnVtIGRyYmRfdGhyZWFkX3N0YXRlIHtcbkBAIC0xOTUsMTAgKzE5NSwxMCBAQCBzdHJ1Y3QgZHJiZF9kZXZpY2Vfd29yayB7XG4gXG4gI2luY2x1ZGUgXCJkcmJkX2ludGVydmFsLmhcIlxuIFxuLWV4dGVybiBpbnQgZHJiZF93YWl0X21pc2Moc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBkcmJkX2ludGVydmFsICopO1xuK2V4dGVybiBzdHJ1Y3QgbXV0ZXggcmVzb3VyY2VzX211dGV4O1xuIFxuLWV4dGVybiB2b2lkIGxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKTtcbi1leHRlcm4gdm9pZCB1bmxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKTtcbit2b2lkIGxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKSBfX2FjcXVpcmVzKFx1MDAyNnJlc291cmNlc19tdXRleCk7XG4rdm9pZCB1bmxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKSBfX3JlbGVhc2VzKFx1MDAyNnJlc291cmNlc19tdXRleCk7XG4gXG4gc3RydWN0IGRyYmRfcmVxdWVzdCB7XG4gXHRzdHJ1Y3QgZHJiZF93b3JrIHc7XG5AQCAtNTU5LDcgKzU1OSw3IEBAIHN0cnVjdCBmaWZvX2J1ZmZlciB7XG4gXHRpbnQgdG90YWw7IC8qIHN1bSBvZiBhbGwgdmFsdWVzICovXG4gXHRpbnQgdmFsdWVzW10gX19jb3VudGVkX2J5KHNpemUpO1xuIH07XG4tZXh0ZXJuIHN0cnVjdCBmaWZvX2J1ZmZlciAqZmlmb19hbGxvYyh1bnNpZ25lZCBpbnQgZmlmb19zaXplKTtcbitzdHJ1Y3QgZmlmb19idWZmZXIgKmZpZm9fYWxsb2ModW5zaWduZWQgaW50IGZpZm9fc2l6ZSk7XG4gXG4gLyogZmxhZyBiaXRzIHBlciBjb25uZWN0aW9uICovXG4gZW51bSB7XG5AQCAtOTk4LDkzICs5OTgsMTA0IEBAIGVudW0gZGRzX2ZsYWdzIHtcbiBcdEREU0ZfTk9fUkVTWU5DID0gMiwgLyogRG8gbm90IHJ1biBhIHJlc3luYyBmb3IgdGhlIG5ldyBzcGFjZSAqL1xuIH07XG4gXG4tZXh0ZXJuIHZvaWQgZHJiZF9pbml0X3NldF9kZWZhdWx0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIGludCAgZHJiZF90aHJlYWRfc3RhcnQoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xuLWV4dGVybiB2b2lkIF9kcmJkX3RocmVhZF9zdG9wKHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpLCBpbnQgcmVzdGFydCwgaW50IHdhaXQpO1xuK3ZvaWQgZHJiZF9pbml0X3NldF9kZWZhdWx0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4raW50IGRyYmRfdGhyZWFkX3N0YXJ0KHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTtcbit2b2lkIF9kcmJkX3RocmVhZF9zdG9wKHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpLCBpbnQgcmVzdGFydCwgaW50IHdhaXQpO1xuICNpZmRlZiBDT05GSUdfU01QXG4tZXh0ZXJuIHZvaWQgZHJiZF90aHJlYWRfY3VycmVudF9zZXRfY3B1KHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTtcbit2b2lkIGRyYmRfdGhyZWFkX2N1cnJlbnRfc2V0X2NwdShzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7XG4gI2Vsc2VcbiAjZGVmaW5lIGRyYmRfdGhyZWFkX2N1cnJlbnRfc2V0X2NwdShBKSAoe30pXG4gI2VuZGlmXG4tZXh0ZXJuIHZvaWQgdGxfcmVsZWFzZShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHVuc2lnbmVkIGludCBiYXJyaWVyX25yLFxuLVx0XHQgICAgICAgdW5zaWduZWQgaW50IHNldF9zaXplKTtcbi1leHRlcm4gdm9pZCB0bF9jbGVhcihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICopO1xuLWV4dGVybiB2b2lkIGRyYmRfZnJlZV9zb2NrKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHN0cnVjdCBzb2NrZXQgKnNvY2ssXG4tXHRcdCAgICAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSwgdW5zaWduZWQgbXNnX2ZsYWdzKTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9hbGwoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBzdHJ1Y3Qgc29ja2V0ICosIHZvaWQgKiwgc2l6ZV90LFxuLVx0XHRcdCB1bnNpZ25lZCk7XG4tXG4tZXh0ZXJuIGludCBfX2RyYmRfc2VuZF9wcm90b2NvbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBlbnVtIGRyYmRfcGFja2V0IGNtZCk7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfcHJvdG9jb2woc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfdXVpZHMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfdXVpZHNfc2tpcF9pbml0aWFsX3N5bmMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9nZW5fYW5kX3NlbmRfc3luY191dWlkKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kX3NpemVzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGludCB0cmlnZ2VyX3JlcGx5LCBlbnVtIGRkc19mbGFncyBmbGFncyk7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfc3RhdGUoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSBzKTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9jdXJyZW50X3N0YXRlKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kX3N5bmNfcGFyYW0oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9zZW5kX2JfYWNrKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHUzMiBiYXJyaWVyX25yLFxuLVx0XHRcdCAgICB1MzIgc2V0X3NpemUpO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kX2FjayhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuLVx0XHRcdCBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9zZW5kX2Fja19ycChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuLVx0XHRcdCAgICAgc3RydWN0IHBfYmxvY2tfcmVxICpycCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9zZW5kX2Fja19kcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuLVx0XHRcdCAgICAgc3RydWN0IHBfZGF0YSAqZHAsIGludCBkYXRhX3NpemUpO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kX2Fja19leChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuLVx0XHRcdCAgICBzZWN0b3JfdCBzZWN0b3IsIGludCBibGtzaXplLCB1NjQgYmxvY2tfaWQpO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kX291dF9vZl9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3JlcXVlc3QgKik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfYmxvY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCxcbi1cdFx0XHQgICBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfZGJsb2NrKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSk7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfZHJlcXVlc3Qoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgaW50IGNtZCxcbi1cdFx0XHQgICAgICBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplLCB1NjQgYmxvY2tfaWQpO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kX2RyZXF1ZXN0X2NzdW0oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc2VjdG9yX3Qgc2VjdG9yLFxuLVx0XHRcdFx0ICAgaW50IHNpemUsIHZvaWQgKmRpZ2VzdCwgaW50IGRpZ2VzdF9zaXplLFxuLVx0XHRcdFx0ICAgZW51bSBkcmJkX3BhY2tldCBjbWQpO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kX292X3JlcXVlc3Qoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSk7XG4tXG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfYml0bWFwKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuLWV4dGVybiB2b2lkIGRyYmRfc2VuZF9zcl9yZXBseShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfc3RhdGVfcnYgcmV0Y29kZSk7XG4tZXh0ZXJuIHZvaWQgY29ubl9zZW5kX3NyX3JlcGx5KHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGVudW0gZHJiZF9zdGF0ZV9ydiByZXRjb2RlKTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9yc19kZWFsbG9jYXRlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9iYWNraW5nX2Rldl9mcmVlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqbGRldik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9kZXZpY2VfY2xlYW51cChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9wcmludF91dWlkcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqdGV4dCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9xdWV1ZV91bnBsdWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLVxuLWV4dGVybiB2b2lkIGNvbm5fbWRfc3luYyhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbi1leHRlcm4gdm9pZCBkcmJkX21kX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB2b2lkICpidWZmZXIpO1xuLWV4dGVybiB2b2lkIGRyYmRfbWRfc3luYyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIGludCAgZHJiZF9tZF9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldik7XG4tZXh0ZXJuIHZvaWQgZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpO1xuLWV4dGVybiB2b2lkIF9kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF91dWlkX25ld19jdXJyZW50KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF91dWlkX3NldF9ibShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpO1xuLWV4dGVybiB2b2lkIGRyYmRfdXVpZF9tb3ZlX2hpc3Rvcnkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gdm9pZCBfX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gdm9pZCBkcmJkX21kX3NldF9mbGFnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgZmxhZ3MpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gdm9pZCBkcmJkX21kX2NsZWFyX2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFncylfX211c3RfaG9sZChsb2NhbCk7XG4tZXh0ZXJuIGludCBkcmJkX21kX3Rlc3RfZmxhZyhzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqLCBpbnQpO1xuLWV4dGVybiB2b2lkIGRyYmRfbWRfbWFya19kaXJ0eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9xdWV1ZV9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdFx0XHQgaW50ICgqaW9fZm4pKHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKSxcbi1cdFx0XHRcdCB2b2lkICgqZG9uZSkoc3RydWN0IGRyYmRfZGV2aWNlICosIGludCksXG4tXHRcdFx0XHQgY2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MsXG4tXHRcdFx0XHQgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcbi1leHRlcm4gaW50IGRyYmRfYml0bWFwX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopLFxuLVx0XHRjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncyxcbi1cdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcbi1leHRlcm4gaW50IGRyYmRfYml0bWFwX2lvX2Zyb21fd29ya2VyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopLFxuLVx0XHRjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncyxcbi1cdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcbi1leHRlcm4gaW50IGRyYmRfYm1pb19zZXRfbl93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7XG4tZXh0ZXJuIGludCBkcmJkX2JtaW9fY2xlYXJfbl93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7XG4rdm9pZCB0bF9yZWxlYXNlKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwgdW5zaWduZWQgaW50IGJhcnJpZXJfbnIsXG4rXHRcdHVuc2lnbmVkIGludCBzZXRfc2l6ZSk7XG4rdm9pZCB0bF9jbGVhcihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICopO1xuK3ZvaWQgZHJiZF9mcmVlX3NvY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4raW50IGRyYmRfc2VuZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxuK1x0ICAgICAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSwgdW5zaWduZWQgbXNnX2ZsYWdzKTtcbitpbnQgZHJiZF9zZW5kX2FsbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHN0cnVjdCBzb2NrZXQgKiwgdm9pZCAqLCBzaXplX3QsXG4rXHRcdCAgdW5zaWduZWQpO1xuK1xuK2ludCBfX2RyYmRfc2VuZF9wcm90b2NvbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLFxuK1x0XHRcdCBlbnVtIGRyYmRfcGFja2V0IGNtZCk7XG4raW50IGRyYmRfc2VuZF9wcm90b2NvbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbitpbnQgZHJiZF9zZW5kX3V1aWRzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xuK2ludCBkcmJkX3NlbmRfdXVpZHNfc2tpcF9pbml0aWFsX3N5bmMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7XG4rdm9pZCBkcmJkX2dlbl9hbmRfc2VuZF9zeW5jX3V1aWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7XG4raW50IGRyYmRfc2VuZF9zaXplcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBpbnQgdHJpZ2dlcl9yZXBseSxcbitcdFx0ICAgIGVudW0gZGRzX2ZsYWdzIGZsYWdzKTtcbitpbnQgZHJiZF9zZW5kX3N0YXRlKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUgcyk7XG4raW50IGRyYmRfc2VuZF9jdXJyZW50X3N0YXRlKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xuK2ludCBkcmJkX3NlbmRfc3luY19wYXJhbShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcbit2b2lkIGRyYmRfc2VuZF9iX2FjayhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCB1MzIgYmFycmllcl9ucixcbitcdFx0ICAgICB1MzIgc2V0X3NpemUpO1xuK2ludCBkcmJkX3NlbmRfYWNrKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsXG4rXHRcdCAgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICopO1xuK3ZvaWQgZHJiZF9zZW5kX2Fja19ycChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuK1x0XHQgICAgICBzdHJ1Y3QgcF9ibG9ja19yZXEgKnJwKTtcbit2b2lkIGRyYmRfc2VuZF9hY2tfZHAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCxcbitcdFx0ICAgICAgc3RydWN0IHBfZGF0YSAqZHAsIGludCBkYXRhX3NpemUpO1xuK2ludCBkcmJkX3NlbmRfYWNrX2V4KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsXG4rXHRcdCAgICAgc2VjdG9yX3Qgc2VjdG9yLCBpbnQgYmxrc2l6ZSwgdTY0IGJsb2NrX2lkKTtcbitpbnQgZHJiZF9zZW5kX291dF9vZl9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3JlcXVlc3QgKik7XG4raW50IGRyYmRfc2VuZF9ibG9jayhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuK1x0XHQgICAgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICopO1xuK2ludCBkcmJkX3NlbmRfZGJsb2NrKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSk7XG4raW50IGRyYmRfc2VuZF9kcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBpbnQgY21kLCBzZWN0b3JfdCBzZWN0b3IsXG4rXHRcdCAgICAgICBpbnQgc2l6ZSwgdTY0IGJsb2NrX2lkKTtcbitpbnQgZHJiZF9zZW5kX2RyZXF1ZXN0X2NzdW0oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc2VjdG9yX3Qgc2VjdG9yLFxuK1x0XHRcdCAgICBpbnQgc2l6ZSwgdm9pZCAqZGlnZXN0LCBpbnQgZGlnZXN0X3NpemUsXG4rXHRcdFx0ICAgIGVudW0gZHJiZF9wYWNrZXQgY21kKTtcbitpbnQgZHJiZF9zZW5kX292X3JlcXVlc3Qoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSk7XG4rXG4raW50IGRyYmRfc2VuZF9iaXRtYXAoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4rXHRcdCAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcbit2b2lkIGRyYmRfc2VuZF9zcl9yZXBseShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfc3RhdGVfcnYgcmV0Y29kZSk7XG4rdm9pZCBjb25uX3NlbmRfc3JfcmVwbHkoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbixcbitcdFx0XHRlbnVtIGRyYmRfc3RhdGVfcnYgcmV0Y29kZSk7XG4raW50IGRyYmRfc2VuZF9yc19kZWFsbG9jYXRlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLFxuK1x0XHRcdCAgICAgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICopO1xuK3ZvaWQgZHJiZF9iYWNraW5nX2Rldl9mcmVlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHRcdCAgIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpsZGV2KTtcbit2b2lkIGRyYmRfZGV2aWNlX2NsZWFudXAoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuK3ZvaWQgZHJiZF9wcmludF91dWlkcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqdGV4dCk7XG4rdm9pZCBkcmJkX3F1ZXVlX3VucGx1ZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4rXG4rdm9pZCBjb25uX21kX3N5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4rdm9pZCBkcmJkX21kX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB2b2lkICpidWZmZXIpO1xuK3ZvaWQgZHJiZF9tZF9zeW5jKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbitpbnQgZHJiZF9tZF9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldik7XG4rdm9pZCBkcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKTtcbit2b2lkIF9kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKTtcbit2b2lkIGRyYmRfdXVpZF9uZXdfY3VycmVudChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4rdm9pZCBkcmJkX3V1aWRfc2V0X2JtKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1NjQgdmFsKTtcbit2b2lkIGRyYmRfdXVpZF9tb3ZlX2hpc3Rvcnkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuK3ZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKTtcbit2b2lkIGRyYmRfbWRfc2V0X2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFncyk7XG4rdm9pZCBkcmJkX21kX2NsZWFyX2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFncyk7XG4raW50IGRyYmRfbWRfdGVzdF9mbGFnKHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICosIGludCk7XG4rdm9pZCBkcmJkX21kX21hcmtfZGlydHkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuK3ZvaWQgZHJiZF9xdWV1ZV9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4rXHRcdFx0ICBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosXG4rXHRcdFx0XHQgICAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiksXG4rXHRcdFx0ICB2b2lkICgqZG9uZSkoc3RydWN0IGRyYmRfZGV2aWNlICosIGludCksIGNoYXIgKndoeSxcbitcdFx0XHQgIGVudW0gYm1fZmxhZyBmbGFncyxcbitcdFx0XHQgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4raW50IGRyYmRfYml0bWFwX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHQgICBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosXG4rXHRcdFx0XHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKSxcbitcdFx0ICAgY2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MsXG4rXHRcdCAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4raW50IGRyYmRfYml0bWFwX2lvX2Zyb21fd29ya2VyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHRcdCAgICAgICBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosXG4rXHRcdFx0XHRcdCAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKSxcbitcdFx0XHQgICAgICAgY2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MsXG4rXHRcdFx0ICAgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4raW50IGRyYmRfYm1pb19zZXRfbl93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbitcdFx0XHQgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4raW50IGRyYmRfYm1pb19jbGVhcl9uX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHRcdCAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuK2ludCBkcmJkX3dhaXRfbWlzYyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpXG4rXHRfX211c3RfaG9sZChcdTAwMjZkZXZpY2UtXHUwMDNlcmVzb3VyY2UtXHUwMDNlcmVxX2xvY2spO1xuIFxuIC8qIE1ldGEgZGF0YSBsYXlvdXRcbiAgKlxuQEAgLTEyNzUsNTYgKzEyODYsNjQgQEAgc3RydWN0IGJtX2V4dGVudCB7XG4gI2RlZmluZSBEUkJEX01BWF9CQVRDSF9CSU9fU0laRVx0IChBTF9VUERBVEVTX1BFUl9UUkFOU0FDVElPTi8yKkFMX0VYVEVOVF9TSVpFKVxuICNkZWZpbmUgRFJCRF9NQVhfQkJJT19TRUNUT1JTICAgIChEUkJEX01BWF9CQVRDSF9CSU9fU0laRSBcdTAwM2VcdTAwM2UgOSlcbiBcbi1leHRlcm4gaW50ICBkcmJkX2JtX2luaXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiBpbnQgIGRyYmRfYm1fcmVzaXplKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3JzLCBpbnQgc2V0X25ld19iaXRzKTtcbi1leHRlcm4gdm9pZCBkcmJkX2JtX2NsZWFudXAoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiB2b2lkIGRyYmRfYm1fc2V0X2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV9jbGVhcl9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuK2ludCBkcmJkX2JtX2luaXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuK2ludCBkcmJkX2JtX3Jlc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9ycyxcbitcdFx0ICAgaW50IHNldF9uZXdfYml0cyk7XG4rdm9pZCBkcmJkX2JtX2NsZWFudXAoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuK3ZvaWQgZHJiZF9ibV9zZXRfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbit2b2lkIGRyYmRfYm1fY2xlYXJfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbiAvKiBzZXQvY2xlYXIvdGVzdCBvbmx5IGEgZmV3IGJpdHMgYXQgYSB0aW1lICovXG4tZXh0ZXJuIGludCAgZHJiZF9ibV9zZXRfYml0cyhcbi1cdFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgcywgdW5zaWduZWQgbG9uZyBlKTtcbi1leHRlcm4gaW50ICBkcmJkX2JtX2NsZWFyX2JpdHMoXG4tXHRcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIHMsIHVuc2lnbmVkIGxvbmcgZSk7XG4tZXh0ZXJuIGludCBkcmJkX2JtX2NvdW50X2JpdHMoXG4tXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgdW5zaWduZWQgbG9uZyBzLCBjb25zdCB1bnNpZ25lZCBsb25nIGUpO1xuK2ludCBkcmJkX2JtX3NldF9iaXRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIHMsXG4rXHRcdCAgICAgdW5zaWduZWQgbG9uZyBlKTtcbitpbnQgZHJiZF9ibV9jbGVhcl9iaXRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIHMsXG4rXHRcdCAgICAgICB1bnNpZ25lZCBsb25nIGUpO1xuK2ludCBkcmJkX2JtX2NvdW50X2JpdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IHVuc2lnbmVkIGxvbmcgcyxcbitcdFx0ICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgZSk7XG4gLyogYm1fc2V0X2JpdHMgdmFyaWFudCBmb3IgdXNlIHdoaWxlIGhvbGRpbmcgZHJiZF9ibV9sb2NrLFxuICAqIG1heSBwcm9jZXNzIHRoZSB3aG9sZSBiaXRtYXAgaW4gb25lIGdvICovXG4tZXh0ZXJuIHZvaWQgX2RyYmRfYm1fc2V0X2JpdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdGNvbnN0IHVuc2lnbmVkIGxvbmcgcywgY29uc3QgdW5zaWduZWQgbG9uZyBlKTtcbi1leHRlcm4gaW50ICBkcmJkX2JtX3Rlc3RfYml0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGJpdG5yKTtcbi1leHRlcm4gaW50ICBkcmJkX2JtX2Vfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGVucik7XG4tZXh0ZXJuIGludCAgZHJiZF9ibV9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gdm9pZCBkcmJkX2JtX21hcmtfZm9yX3dyaXRlb3V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgcGFnZV9ucik7XG4tZXh0ZXJuIGludCAgZHJiZF9ibV93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV9yZXNldF9hbF9oaW50cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpO1xuLWV4dGVybiBpbnQgIGRyYmRfYm1fd3JpdGVfaGludGVkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7XG4tZXh0ZXJuIGludCAgZHJiZF9ibV93cml0ZV9sYXp5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCB1cHBlcl9pZHgpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gaW50IGRyYmRfYm1fd3JpdGVfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gaW50ICBkcmJkX2JtX3dyaXRlX2NvcHlfcGFnZXMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpO1xuLWV4dGVybiBzaXplX3RcdCAgICAgZHJiZF9ibV93b3JkcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZHJiZF9ibV9iaXRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gc2VjdG9yX3QgICAgICBkcmJkX2JtX2NhcGFjaXR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbit2b2lkIF9kcmJkX2JtX3NldF9iaXRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCB1bnNpZ25lZCBsb25nIHMsXG4rXHRcdCAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGUpO1xuK2ludCBkcmJkX2JtX3Rlc3RfYml0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGJpdG5yKTtcbitpbnQgZHJiZF9ibV9lX3dlaWdodChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBlbnIpO1xuK2ludCBkcmJkX2JtX3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4rXHRcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuK3ZvaWQgZHJiZF9ibV9tYXJrX2Zvcl93cml0ZW91dChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IHBhZ2VfbnIpO1xuK2ludCBkcmJkX2JtX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHQgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4rdm9pZCBkcmJkX2JtX3Jlc2V0X2FsX2hpbnRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbitpbnQgZHJiZF9ibV93cml0ZV9oaW50ZWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuK2ludCBkcmJkX2JtX3dyaXRlX2xhenkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIHVwcGVyX2lkeCk7XG4raW50IGRyYmRfYm1fd3JpdGVfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHQgICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuK2ludCBkcmJkX2JtX3dyaXRlX2NvcHlfcGFnZXMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4rXHRcdFx0ICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuK3NpemVfdCBkcmJkX2JtX3dvcmRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbit1bnNpZ25lZCBsb25nIGRyYmRfYm1fYml0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4rc2VjdG9yX3QgZHJiZF9ibV9jYXBhY2l0eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4gXG4gI2RlZmluZSBEUkJEX0VORF9PRl9CSVRNQVBcdCh+KHVuc2lnbmVkIGxvbmcpMClcbi1leHRlcm4gdW5zaWduZWQgbG9uZyBkcmJkX2JtX2ZpbmRfbmV4dChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBibV9mbyk7XG4rdW5zaWduZWQgbG9uZyBkcmJkX2JtX2ZpbmRfbmV4dChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbitcdFx0XHRcdHVuc2lnbmVkIGxvbmcgYm1fZm8pO1xuIC8qIGJtX2ZpbmRfbmV4dCB2YXJpYW50cyBmb3IgdXNlIHdoaWxlIHlvdSBob2xkIGRyYmRfYm1fbG9jaygpICovXG4tZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX2RyYmRfYm1fZmluZF9uZXh0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGJtX2ZvKTtcbi1leHRlcm4gdW5zaWduZWQgbG9uZyBfZHJiZF9ibV9maW5kX25leHRfemVybyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBibV9mbyk7XG4tZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX2RyYmRfYm1fdG90YWxfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gdW5zaWduZWQgbG9uZyBkcmJkX2JtX3RvdGFsX3dlaWdodChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4rdW5zaWduZWQgbG9uZyBfZHJiZF9ibV9maW5kX25leHQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4rXHRcdFx0XHQgdW5zaWduZWQgbG9uZyBibV9mbyk7XG4rdW5zaWduZWQgbG9uZyBfZHJiZF9ibV9maW5kX25leHRfemVybyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbitcdFx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgYm1fZm8pO1xuK3Vuc2lnbmVkIGxvbmcgX2RyYmRfYm1fdG90YWxfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbit1bnNpZ25lZCBsb25nIGRyYmRfYm1fdG90YWxfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbiAvKiBmb3IgcmVjZWl2ZV9iaXRtYXAgKi9cbi1leHRlcm4gdm9pZCBkcmJkX2JtX21lcmdlX2xlbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2l6ZV90IG9mZnNldCxcbi1cdFx0c2l6ZV90IG51bWJlciwgdW5zaWduZWQgbG9uZyAqYnVmZmVyKTtcbit2b2lkIGRyYmRfYm1fbWVyZ2VfbGVsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbnVtYmVyLFxuK1x0XHQgICAgICAgdW5zaWduZWQgbG9uZyAqYnVmZmVyKTtcbiAvKiBmb3IgX2RyYmRfc2VuZF9iaXRtYXAgKi9cbi1leHRlcm4gdm9pZCBkcmJkX2JtX2dldF9sZWwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNpemVfdCBvZmZzZXQsXG4tXHRcdHNpemVfdCBudW1iZXIsIHVuc2lnbmVkIGxvbmcgKmJ1ZmZlcik7XG4rdm9pZCBkcmJkX2JtX2dldF9sZWwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBudW1iZXIsXG4rXHRcdCAgICAgdW5zaWduZWQgbG9uZyAqYnVmZmVyKTtcbitcbit0b2tlbl9jb250ZXh0X2xvY2soZHJiZF9kZXZfYm1fbG9jayk7XG4gXG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV9sb2NrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncyk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV91bmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuK3ZvaWQgZHJiZF9ibV9sb2NrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncylcbitcdF9fYWNxdWlyZXMoZHJiZF9kZXZfYm1fbG9jayk7XG4rdm9pZCBkcmJkX2JtX3VubG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbitcdF9fcmVsZWFzZXMoZHJiZF9kZXZfYm1fbG9jayk7XG4gLyogZHJiZF9tYWluLmMgKi9cbiBcbiBleHRlcm4gc3RydWN0IGttZW1fY2FjaGUgKmRyYmRfcmVxdWVzdF9jYWNoZTtcbkBAIC0xMzUwLDM3ICsxMzY5LDM5IEBAIGV4dGVybiBzdHJ1Y3QgYmlvX3NldCBkcmJkX21kX2lvX2Jpb19zZXQ7XG4gLyogQW5kIGEgYmlvX3NldCBmb3IgY2xvbmluZyAqL1xuIGV4dGVybiBzdHJ1Y3QgYmlvX3NldCBkcmJkX2lvX2Jpb19zZXQ7XG4gXG4tZXh0ZXJuIHN0cnVjdCBtdXRleCByZXNvdXJjZXNfbXV0ZXg7XG4tXG4tZXh0ZXJuIGVudW0gZHJiZF9yZXRfY29kZSBkcmJkX2NyZWF0ZV9kZXZpY2Uoc3RydWN0IGRyYmRfY29uZmlnX2NvbnRleHQgKmFkbV9jdHgsIHVuc2lnbmVkIGludCBtaW5vcik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9kZXN0cm95X2RldmljZShzdHJ1Y3Qga3JlZiAqa3JlZik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9kZWxldGVfZGV2aWNlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1cbi1leHRlcm4gc3RydWN0IGRyYmRfcmVzb3VyY2UgKmRyYmRfY3JlYXRlX3Jlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUpO1xuLWV4dGVybiB2b2lkIGRyYmRfZnJlZV9yZXNvdXJjZShzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UpO1xuLVxuLWV4dGVybiBpbnQgc2V0X3Jlc291cmNlX29wdGlvbnMoc3RydWN0IGRyYmRfcmVzb3VyY2UgKnJlc291cmNlLCBzdHJ1Y3QgcmVzX29wdHMgKnJlc19vcHRzKTtcbi1leHRlcm4gc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubl9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHJlc19vcHRzICpyZXNfb3B0cyk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9kZXN0cm95X2Nvbm5lY3Rpb24oc3RydWN0IGtyZWYgKmtyZWYpO1xuLWV4dGVybiBzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uX2dldF9ieV9hZGRycyh2b2lkICpteV9hZGRyLCBpbnQgbXlfYWRkcl9sZW4sXG4tXHRcdFx0XHRcdCAgICB2b2lkICpwZWVyX2FkZHIsIGludCBwZWVyX2FkZHJfbGVuKTtcbi1leHRlcm4gc3RydWN0IGRyYmRfcmVzb3VyY2UgKmRyYmRfZmluZF9yZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKTtcbi1leHRlcm4gdm9pZCBkcmJkX2Rlc3Ryb3lfcmVzb3VyY2Uoc3RydWN0IGtyZWYgKmtyZWYpO1xuLWV4dGVybiB2b2lkIGNvbm5fZnJlZV9jcnlwdG8oc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4rZW51bSBkcmJkX3JldF9jb2RlIGRyYmRfY3JlYXRlX2RldmljZShzdHJ1Y3QgZHJiZF9jb25maWdfY29udGV4dCAqYWRtX2N0eCxcbitcdFx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBtaW5vcik7XG4rdm9pZCBkcmJkX2Rlc3Ryb3lfZGV2aWNlKHN0cnVjdCBrcmVmICprcmVmKTtcbit2b2lkIGRyYmRfZGVsZXRlX2RldmljZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4rXG4rc3RydWN0IGRyYmRfcmVzb3VyY2UgKmRyYmRfY3JlYXRlX3Jlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUpO1xuK3ZvaWQgZHJiZF9mcmVlX3Jlc291cmNlKHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSk7XG4rXG4raW50IHNldF9yZXNvdXJjZV9vcHRpb25zKHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSxcbitcdFx0XHQgc3RydWN0IHJlc19vcHRzICpyZXNfb3B0cyk7XG4rc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubl9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSxcbitcdFx0XHRcdCAgICBzdHJ1Y3QgcmVzX29wdHMgKnJlc19vcHRzKTtcbit2b2lkIGRyYmRfZGVzdHJveV9jb25uZWN0aW9uKHN0cnVjdCBrcmVmICprcmVmKTtcbitzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uX2dldF9ieV9hZGRycyh2b2lkICpteV9hZGRyLCBpbnQgbXlfYWRkcl9sZW4sXG4rXHRcdFx0XHRcdCAgdm9pZCAqcGVlcl9hZGRyLCBpbnQgcGVlcl9hZGRyX2xlbik7XG4rc3RydWN0IGRyYmRfcmVzb3VyY2UgKmRyYmRfZmluZF9yZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKTtcbit2b2lkIGRyYmRfZGVzdHJveV9yZXNvdXJjZShzdHJ1Y3Qga3JlZiAqa3JlZik7XG4rdm9pZCBjb25uX2ZyZWVfY3J5cHRvKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xuIFxuIC8qIGRyYmRfcmVxICovXG4tZXh0ZXJuIHZvaWQgZG9fc3VibWl0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd3MpO1xuLWV4dGVybiB2b2lkIF9fZHJiZF9tYWtlX3JlcXVlc3Qoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBiaW8gKik7XG4rdm9pZCBkb19zdWJtaXQoc3RydWN0IHdvcmtfc3RydWN0ICp3cyk7XG4rdm9pZCBfX2RyYmRfbWFrZV9yZXF1ZXN0KHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgYmlvICopO1xuIHZvaWQgZHJiZF9zdWJtaXRfYmlvKHN0cnVjdCBiaW8gKmJpbyk7XG4gXG4gLyogZHJiZF9ubC5jICovXG4gXG4gZXh0ZXJuIHN0cnVjdCBtdXRleCBub3RpZmljYXRpb25fbXV0ZXg7XG4gXG4tZXh0ZXJuIHZvaWQgZHJiZF9zdXNwZW5kX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gdm9pZCBkcmJkX3Jlc3VtZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIGNoYXIgKnBwc2l6ZShjaGFyICpidWYsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKTtcbi1leHRlcm4gc2VjdG9yX3QgZHJiZF9uZXdfZGV2X3NpemUoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICosIHNlY3Rvcl90LCBpbnQpO1xuK3ZvaWQgZHJiZF9zdXNwZW5kX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbit2b2lkIGRyYmRfcmVzdW1lX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbitjaGFyICpwcHNpemUoY2hhciAqYnVmLCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSk7XG4rc2VjdG9yX3QgZHJiZF9uZXdfZGV2X3NpemUoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICosXG4rXHRcdFx0ICAgc2VjdG9yX3QsIGludCk7XG4gZW51bSBkZXRlcm1pbmVfZGV2X3NpemUge1xuIFx0RFNfRVJST1JfU0hSSU5LID0gLTMsXG4gXHREU19FUlJPUl9TUEFDRV9NRCA9IC0yLFxuQEAgLTEzOTAsNDEgKzE0MTEsNDUgQEAgZW51bSBkZXRlcm1pbmVfZGV2X3NpemUge1xuIFx0RFNfR1JFVyA9IDIsXG4gXHREU19HUkVXX0ZST01fWkVSTyA9IDMsXG4gfTtcbi1leHRlcm4gZW51bSBkZXRlcm1pbmVfZGV2X3NpemVcbi1kcmJkX2RldGVybWluZV9kZXZfc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgZW51bSBkZHNfZmxhZ3MsIHN0cnVjdCByZXNpemVfcGFybXMgKikgX19tdXN0X2hvbGQobG9jYWwpO1xuLWV4dGVybiB2b2lkIHJlc3luY19hZnRlcl9vbmxpbmVfZ3JvdyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9yZWNvbnNpZGVyX3F1ZXVlX3BhcmFtZXRlcnMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdFx0c3RydWN0IGRyYmRfYmFja2luZ19kZXYgKmJkZXYsIHN0cnVjdCBvX3FsaW0gKm8pO1xuLWV4dGVybiBlbnVtIGRyYmRfc3RhdGVfcnYgZHJiZF9zZXRfcm9sZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0XHRcdFx0ZW51bSBkcmJkX3JvbGUgbmV3X3JvbGUsXG4tXHRcdFx0XHRcdGludCBmb3JjZSk7XG4tZXh0ZXJuIGJvb2wgY29ubl90cnlfb3V0ZGF0ZV9wZWVyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xuLWV4dGVybiB2b2lkIGNvbm5fdHJ5X291dGRhdGVfcGVlcl9hc3luYyhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbi1leHRlcm4gZW51bSBkcmJkX3BlZXJfc3RhdGUgY29ubl9raGVscGVyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGNoYXIgKmNtZCk7XG4tZXh0ZXJuIGludCBkcmJkX2toZWxwZXIoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNoYXIgKmNtZCk7XG4rZW51bSBkZXRlcm1pbmVfZGV2X3NpemUgZHJiZF9kZXRlcm1pbmVfZGV2X3NpemUoc3RydWN0IGRyYmRfZGV2aWNlICosXG4rXHRcdFx0XHRcdFx0ZW51bSBkZHNfZmxhZ3MsXG4rXHRcdFx0XHRcdFx0c3RydWN0IHJlc2l6ZV9wYXJtcyAqKTtcbit2b2lkIHJlc3luY19hZnRlcl9vbmxpbmVfZ3JvdyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKik7XG4rdm9pZCBkcmJkX3JlY29uc2lkZXJfcXVldWVfcGFyYW1ldGVycyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbitcdFx0XHRcdCAgICAgIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LFxuK1x0XHRcdFx0ICAgICAgc3RydWN0IG9fcWxpbSAqbyk7XG4rZW51bSBkcmJkX3N0YXRlX3J2IGRyYmRfc2V0X3JvbGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4rXHRcdFx0XHQgZW51bSBkcmJkX3JvbGUgbmV3X3JvbGUsIGludCBmb3JjZSk7XG4rYm9vbCBjb25uX3RyeV9vdXRkYXRlX3BlZXIoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4rdm9pZCBjb25uX3RyeV9vdXRkYXRlX3BlZXJfYXN5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4rZW51bSBkcmJkX3BlZXJfc3RhdGUgY29ubl9raGVscGVyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sXG4rXHRcdFx0XHQgIGNoYXIgKmNtZCk7XG4raW50IGRyYmRfa2hlbHBlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY2hhciAqY21kKTtcbiBcbiAvKiBkcmJkX3dvcmtlci5jICovXG4gLyogYmlfZW5kX2lvIGhhbmRsZXJzICovXG4tZXh0ZXJuIHZvaWQgZHJiZF9tZF9lbmRpbyhzdHJ1Y3QgYmlvICpiaW8pO1xuLWV4dGVybiB2b2lkIGRyYmRfcGVlcl9yZXF1ZXN0X2VuZGlvKHN0cnVjdCBiaW8gKmJpbyk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9yZXF1ZXN0X2VuZGlvKHN0cnVjdCBiaW8gKmJpbyk7XG4tZXh0ZXJuIGludCBkcmJkX3dvcmtlcihzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7XG4rdm9pZCBkcmJkX21kX2VuZGlvKHN0cnVjdCBiaW8gKmJpbyk7XG4rdm9pZCBkcmJkX3BlZXJfcmVxdWVzdF9lbmRpbyhzdHJ1Y3QgYmlvICpiaW8pO1xuK3ZvaWQgZHJiZF9yZXF1ZXN0X2VuZGlvKHN0cnVjdCBiaW8gKmJpbyk7XG4raW50IGRyYmRfd29ya2VyKHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTtcbiBlbnVtIGRyYmRfcmV0X2NvZGUgZHJiZF9yZXN5bmNfYWZ0ZXJfdmFsaWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBvX21pbm9yKTtcbiB2b2lkIGRyYmRfcmVzeW5jX2FmdGVyX2NoYW5nZWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiB2b2lkIGRyYmRfc3RhcnRfcmVzeW5jKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBlbnVtIGRyYmRfY29ubnMgc2lkZSk7XG4tZXh0ZXJuIHZvaWQgcmVzdW1lX25leHRfc2coc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiB2b2lkIHN1c3BlbmRfb3RoZXJfc2coc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiBpbnQgZHJiZF9yZXN5bmNfZmluaXNoZWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcbit2b2lkIGRyYmRfc3RhcnRfcmVzeW5jKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBlbnVtIGRyYmRfY29ubnMgc2lkZSk7XG4rdm9pZCByZXN1bWVfbmV4dF9zZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4rdm9pZCBzdXNwZW5kX290aGVyX3NnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbitpbnQgZHJiZF9yZXN5bmNfZmluaXNoZWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcbiAvKiBtYXliZSByYXRoZXIgZHJiZF9tYWluLmMgPyAqL1xuLWV4dGVybiB2b2lkICpkcmJkX21kX2dldF9idWZmZXIoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKmludGVudCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9tZF9wdXRfYnVmZmVyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gaW50IGRyYmRfbWRfc3luY19wYWdlX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldiwgc2VjdG9yX3Qgc2VjdG9yLCBlbnVtIHJlcV9vcCBvcCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9vdl9vdXRfb2Zfc3luY19mb3VuZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsXG4tXHRcdHNlY3Rvcl90IHNlY3RvciwgaW50IHNpemUpO1xuLWV4dGVybiB2b2lkIHdhaXRfdW50aWxfZG9uZV9vcl9mb3JjZV9kZXRhY2hlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0c3RydWN0IGRyYmRfYmFja2luZ19kZXYgKmJkZXYsIHVuc2lnbmVkIGludCAqZG9uZSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9yc19jb250cm9sbGVyX3Jlc2V0KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4rdm9pZCAqZHJiZF9tZF9nZXRfYnVmZmVyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCBjaGFyICppbnRlbnQpO1xuK3ZvaWQgZHJiZF9tZF9wdXRfYnVmZmVyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbitpbnQgZHJiZF9tZF9zeW5jX3BhZ2VfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4rXHRcdFx0IHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LCBzZWN0b3JfdCBzZWN0b3IsXG4rXHRcdFx0IGVudW0gcmVxX29wIG9wKTtcbit2b2lkIGRyYmRfb3Zfb3V0X29mX3N5bmNfZm91bmQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLFxuK1x0XHRcdCAgICAgICBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplKTtcbit2b2lkIHdhaXRfdW50aWxfZG9uZV9vcl9mb3JjZV9kZXRhY2hlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbitcdFx0XHRcdCAgICAgICBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldixcbitcdFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgKmRvbmUpO1xuK3ZvaWQgZHJiZF9yc19jb250cm9sbGVyX3Jlc2V0KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4gXG4gc3RhdGljIGlubGluZSB2b2lkIG92X291dF9vZl9zeW5jX3ByaW50KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcbiB7XG5AQCAtMTQzOCw0OCArMTQ2Myw0NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgb3Zfb3V0X29mX3N5bmNfcHJpbnQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxuIFx0ZGV2aWNlLVx1MDAzZW92X2xhc3Rfb29zX3NpemUgPSAwO1xuIH1cbiBcbi1cbi1leHRlcm4gdm9pZCBkcmJkX2NzdW1fYmlvKHN0cnVjdCBjcnlwdG9fc2hhc2ggKiwgc3RydWN0IGJpbyAqLCB2b2lkICopO1xuLWV4dGVybiB2b2lkIGRyYmRfY3N1bV9lZShzdHJ1Y3QgY3J5cHRvX3NoYXNoICosIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqLFxuLVx0XHRcdCB2b2lkICopO1xuK3ZvaWQgZHJiZF9jc3VtX2JpbyhzdHJ1Y3QgY3J5cHRvX3NoYXNoICosIHN0cnVjdCBiaW8gKiwgdm9pZCAqKTtcbit2b2lkIGRyYmRfY3N1bV9lZShzdHJ1Y3QgY3J5cHRvX3NoYXNoICosIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqLCB2b2lkICopO1xuIC8qIHdvcmtlciBjYWxsYmFja3MgKi9cbi1leHRlcm4gaW50IHdfZV9lbmRfZGF0YV9yZXEoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuLWV4dGVybiBpbnQgd19lX2VuZF9yc2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbi1leHRlcm4gaW50IHdfZV9lbmRfY3N1bV9yc19yZXEoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuLWV4dGVybiBpbnQgd19lX2VuZF9vdl9yZXBseShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4tZXh0ZXJuIGludCB3X2VfZW5kX292X3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4tZXh0ZXJuIGludCB3X292X2ZpbmlzaGVkKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbi1leHRlcm4gaW50IHdfcmVzeW5jX3RpbWVyKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbi1leHRlcm4gaW50IHdfc2VuZF93cml0ZV9oaW50KHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbi1leHRlcm4gaW50IHdfc2VuZF9kYmxvY2soc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuLWV4dGVybiBpbnQgd19zZW5kX3JlYWRfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbi1leHRlcm4gaW50IHdfcmVzdGFydF9kaXNrX2lvKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbi1leHRlcm4gaW50IHdfc2VuZF9vdXRfb2Zfc3luYyhzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4tXG4tZXh0ZXJuIHZvaWQgcmVzeW5jX3RpbWVyX2ZuKHN0cnVjdCB0aW1lcl9saXN0ICp0KTtcbi1leHRlcm4gdm9pZCBzdGFydF9yZXN5bmNfdGltZXJfZm4oc3RydWN0IHRpbWVyX2xpc3QgKnQpO1xuLVxuLWV4dGVybiB2b2lkIGRyYmRfZW5kaW9fd3JpdGVfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpO1xuK2ludCB3X2VfZW5kX2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbitpbnQgd19lX2VuZF9yc2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbitpbnQgd19lX2VuZF9jc3VtX3JzX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4raW50IHdfZV9lbmRfb3ZfcmVwbHkoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuK2ludCB3X2VfZW5kX292X3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4raW50IHdfb3ZfZmluaXNoZWQoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuK2ludCB3X3Jlc3luY190aW1lcihzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4raW50IHdfc2VuZF93cml0ZV9oaW50KHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbitpbnQgd19zZW5kX2RibG9jayhzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4raW50IHdfc2VuZF9yZWFkX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4raW50IHdfcmVzdGFydF9kaXNrX2lvKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbitpbnQgd19zZW5kX291dF9vZl9zeW5jKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbitcbit2b2lkIHJlc3luY190aW1lcl9mbihzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7XG4rdm9pZCBzdGFydF9yZXN5bmNfdGltZXJfZm4oc3RydWN0IHRpbWVyX2xpc3QgKnQpO1xuK1xuK3ZvaWQgZHJiZF9lbmRpb193cml0ZV9zZWNfZmluYWwoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSk7XG4gXG4gLyogZHJiZF9yZWNlaXZlci5jICovXG4tZXh0ZXJuIGludCBkcmJkX2lzc3VlX2Rpc2NhcmRfb3JfemVyb19vdXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdHNlY3Rvcl90IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnJfc2VjdG9ycywgaW50IGZsYWdzKTtcbi1leHRlcm4gaW50IGRyYmRfcmVjZWl2ZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xuLWV4dGVybiBpbnQgZHJiZF9hY2tfcmVjZWl2ZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xuLWV4dGVybiB2b2lkIGRyYmRfc2VuZF9hY2tzX3dmKHN0cnVjdCB3b3JrX3N0cnVjdCAqd3MpO1xuLWV4dGVybiBib29sIGRyYmRfcnNfY19taW5fcmF0ZV90aHJvdHRsZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIGJvb2wgZHJiZF9yc19zaG91bGRfc2xvd19kb3duKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc2VjdG9yX3Qgc2VjdG9yLFxuLVx0XHRib29sIHRocm90dGxlX2lmX2FwcF9pc193YWl0aW5nKTtcbi1leHRlcm4gaW50IGRyYmRfc3VibWl0X3BlZXJfcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKTtcbi1leHRlcm4gaW50IGRyYmRfZnJlZV9wZWVyX3JlcXMoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBsaXN0X2hlYWQgKik7XG4tZXh0ZXJuIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqZHJiZF9hbGxvY19wZWVyX3JlcShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1NjQsXG4tXHRcdFx0XHRcdFx0ICAgICBzZWN0b3JfdCwgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0XHRcdCAgICAgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0XHRcdCAgICAgZ2ZwX3QpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gdm9pZCBkcmJkX2ZyZWVfcGVlcl9yZXEoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcmVxKTtcbi1leHRlcm4gc3RydWN0IHBhZ2UgKmRyYmRfYWxsb2NfcGFnZXMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgdW5zaWduZWQgaW50LCBib29sKTtcbi1leHRlcm4gdm9pZCBfZHJiZF9jbGVhcl9kb25lX2VlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgbGlzdF9oZWFkICp0b19iZV9mcmVlZCk7XG4tZXh0ZXJuIGludCBkcmJkX2Nvbm5lY3RlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcbitpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzdGFydCxcbitcdFx0XHRcdCAgIHVuc2lnbmVkIGludCBucl9zZWN0b3JzLCBpbnQgZmxhZ3MpO1xuK2ludCBkcmJkX3JlY2VpdmVyKHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTtcbitpbnQgZHJiZF9hY2tfcmVjZWl2ZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xuK3ZvaWQgZHJiZF9zZW5kX2Fja3Nfd2Yoc3RydWN0IHdvcmtfc3RydWN0ICp3cyk7XG4rYm9vbCBkcmJkX3JzX2NfbWluX3JhdGVfdGhyb3R0bGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuK2Jvb2wgZHJiZF9yc19zaG91bGRfc2xvd19kb3duKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcbitcdFx0XHQgICAgICBzZWN0b3JfdCBzZWN0b3IsIGJvb2wgdGhyb3R0bGVfaWZfYXBwX2lzX3dhaXRpbmcpO1xuK2ludCBkcmJkX3N1Ym1pdF9wZWVyX3JlcXVlc3Qoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSk7XG4raW50IGRyYmRfZnJlZV9wZWVyX3JlcXMoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBsaXN0X2hlYWQgKik7XG4rc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpkcmJkX2FsbG9jX3BlZXJfcmVxKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHU2NCxcbitcdFx0XHRcdFx0ICAgICAgc2VjdG9yX3QsIHVuc2lnbmVkIGludCxcbitcdFx0XHRcdFx0ICAgICAgdW5zaWduZWQgaW50LCBnZnBfdCk7XG4rdm9pZCBkcmJkX2ZyZWVfcGVlcl9yZXEoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4rXHRcdFx0c3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpyZXEpO1xuK3N0cnVjdCBwYWdlICpkcmJkX2FsbG9jX3BhZ2VzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHVuc2lnbmVkIGludCwgYm9vbCk7XG4rdm9pZCBfZHJiZF9jbGVhcl9kb25lX2VlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHRcdCBzdHJ1Y3QgbGlzdF9oZWFkICp0b19iZV9mcmVlZCk7XG4raW50IGRyYmRfY29ubmVjdGVkKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xuIFxuIC8qIHNldHMgdGhlIG51bWJlciBvZiA1MTIgYnl0ZSBzZWN0b3JzIG9mIG91ciB2aXJ0dWFsIGRldmljZSAqL1xuIHZvaWQgZHJiZF9zZXRfbXlfY2FwYWNpdHkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNpemUpO1xuQEAgLTE0OTAsNyArMTUxNCw2IEBAIHZvaWQgZHJiZF9zZXRfbXlfY2FwYWNpdHkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNpemUpO1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmJkX3N1Ym1pdF9iaW9fbm9hY2N0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuIFx0XHRcdFx0XHQgICAgIGludCBmYXVsdF90eXBlLCBzdHJ1Y3QgYmlvICpiaW8pXG4ge1xuLVx0X19yZWxlYXNlKGxvY2FsKTtcbiBcdGlmICghYmlvLVx1MDAzZWJpX2JkZXYpIHtcbiBcdFx0ZHJiZF9lcnIoZGV2aWNlLCBcImRyYmRfc3VibWl0X2Jpb19ub2FjY3Q6IGJpby1cdTAwM2ViaV9iZGV2ID09IE5VTExcXG5cIik7XG4gXHRcdGJpby1cdTAwM2ViaV9zdGF0dXMgPSBCTEtfU1RTX0lPRVJSO1xuQEAgLTE1MTIsMzIgKzE1MzUsMzYgQEAgZXh0ZXJuIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqZHJiZF9wcm9jO1xuIGludCBkcmJkX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KTtcbiBcbiAvKiBkcmJkX2FjdGxvZy5jICovXG4tZXh0ZXJuIGJvb2wgZHJiZF9hbF9iZWdpbl9pb19wcmVwYXJlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSk7XG4tZXh0ZXJuIGludCBkcmJkX2FsX2JlZ2luX2lvX25vbmJsb2NrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9hbF9iZWdpbl9pb19jb21taXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiBib29sIGRyYmRfYWxfYmVnaW5faW9fZmFzdHBhdGgoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbi1leHRlcm4gdm9pZCBkcmJkX2FsX2JlZ2luX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9hbF9jb21wbGV0ZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpO1xuLWV4dGVybiB2b2lkIGRyYmRfcnNfY29tcGxldGVfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3Rvcik7XG4tZXh0ZXJuIGludCBkcmJkX3JzX2JlZ2luX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IpO1xuLWV4dGVybiBpbnQgZHJiZF90cnlfcnNfYmVnaW5faW8oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IpO1xuLWV4dGVybiB2b2lkIGRyYmRfcnNfY2FuY2VsX2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIGludCBkcmJkX3JzX2RlbF9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiB2b2lkIGRyYmRfcnNfZmFpbGVkX2lvKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcbi1cdFx0c2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9hZHZhbmNlX3JzX21hcmtzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgdW5zaWduZWQgbG9uZyBzdGlsbF90b19nbyk7XG4rYm9vbCBkcmJkX2FsX2JlZ2luX2lvX3ByZXBhcmUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4rXHRcdFx0ICAgICAgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpO1xuK2ludCBkcmJkX2FsX2JlZ2luX2lvX25vbmJsb2NrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHRcdCAgICAgIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbit2b2lkIGRyYmRfYWxfYmVnaW5faW9fY29tbWl0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbitib29sIGRyYmRfYWxfYmVnaW5faW9fZmFzdHBhdGgoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4rXHRcdFx0ICAgICAgIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbit2b2lkIGRyYmRfYWxfYmVnaW5faW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbit2b2lkIGRyYmRfYWxfY29tcGxldGVfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbit2b2lkIGRyYmRfcnNfY29tcGxldGVfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3Rvcik7XG4raW50IGRyYmRfcnNfYmVnaW5faW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3Rvcik7XG4raW50IGRyYmRfdHJ5X3JzX2JlZ2luX2lvKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc2VjdG9yX3Qgc2VjdG9yKTtcbit2b2lkIGRyYmRfcnNfY2FuY2VsX2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4raW50IGRyYmRfcnNfZGVsX2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4rdm9pZCBkcmJkX3JzX2ZhaWxlZF9pbyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHNlY3Rvcl90IHNlY3RvcixcbitcdFx0ICAgICAgIGludCBzaXplKTtcbit2b2lkIGRyYmRfYWR2YW5jZV9yc19tYXJrcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsXG4rXHRcdFx0ICAgdW5zaWduZWQgbG9uZyBzdGlsbF90b19nbyk7XG4gXG4gZW51bSB1cGRhdGVfc3luY19iaXRzX21vZGUgeyBSRUNPUkRfUlNfRkFJTEVELCBTRVRfT1VUX09GX1NZTkMsIFNFVF9JTl9TWU5DIH07XG4tZXh0ZXJuIGludCBfX2RyYmRfY2hhbmdlX3N5bmMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplLFxuLVx0XHRlbnVtIHVwZGF0ZV9zeW5jX2JpdHNfbW9kZSBtb2RlKTtcbitpbnQgX19kcmJkX2NoYW5nZV9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc2VjdG9yX3Qgc2VjdG9yLFxuK1x0XHQgICAgICAgaW50IHNpemUsIGVudW0gdXBkYXRlX3N5bmNfYml0c19tb2RlIG1vZGUpO1xuICNkZWZpbmUgZHJiZF9zZXRfaW5fc3luYyhwZWVyX2RldmljZSwgc2VjdG9yLCBzaXplKSBcXFxuIFx0X19kcmJkX2NoYW5nZV9zeW5jKHBlZXJfZGV2aWNlLCBzZWN0b3IsIHNpemUsIFNFVF9JTl9TWU5DKVxuICNkZWZpbmUgZHJiZF9zZXRfb3V0X29mX3N5bmMocGVlcl9kZXZpY2UsIHNlY3Rvciwgc2l6ZSkgXFxcbiBcdF9fZHJiZF9jaGFuZ2Vfc3luYyhwZWVyX2RldmljZSwgc2VjdG9yLCBzaXplLCBTRVRfT1VUX09GX1NZTkMpXG4gI2RlZmluZSBkcmJkX3JzX2ZhaWxlZF9pbyhwZWVyX2RldmljZSwgc2VjdG9yLCBzaXplKSBcXFxuIFx0X19kcmJkX2NoYW5nZV9zeW5jKHBlZXJfZGV2aWNlLCBzZWN0b3IsIHNpemUsIFJFQ09SRF9SU19GQUlMRUQpXG4tZXh0ZXJuIHZvaWQgZHJiZF9hbF9zaHJpbmsoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiBpbnQgZHJiZF9hbF9pbml0aWFsaXplKHN0cnVjdCBkcmJkX2RldmljZSAqLCB2b2lkICopO1xuK3ZvaWQgZHJiZF9hbF9zaHJpbmsoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuK2ludCBkcmJkX2FsX2luaXRpYWxpemUoc3RydWN0IGRyYmRfZGV2aWNlICosIHZvaWQgKik7XG4gXG4gLyogZHJiZF9ubC5jICovXG4gLyogc3RhdGUgaW5mbyBicm9hZGNhc3QgKi9cbkBAIC0xNTU2LDI4ICsxNTgzLDIwIEBAIHN0cnVjdCBzaWJfaW5mbyB7XG4gfTtcbiB2b2lkIGRyYmRfYmNhc3RfZXZlbnQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IHN0cnVjdCBzaWJfaW5mbyAqc2liKTtcbiBcbi1leHRlcm4gaW50IG5vdGlmeV9yZXNvdXJjZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLFxuLVx0XHRcdFx0ICB1bnNpZ25lZCBpbnQsXG4tXHRcdFx0XHQgIHN0cnVjdCBkcmJkX3Jlc291cmNlICosXG4tXHRcdFx0XHQgIHN0cnVjdCByZXNvdXJjZV9pbmZvICosXG4tXHRcdFx0XHQgIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSk7XG4tZXh0ZXJuIGludCBub3RpZnlfZGV2aWNlX3N0YXRlKHN0cnVjdCBza19idWZmICosXG4tXHRcdFx0XHR1bnNpZ25lZCBpbnQsXG4tXHRcdFx0XHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKixcbi1cdFx0XHRcdHN0cnVjdCBkZXZpY2VfaW5mbyAqLFxuLVx0XHRcdFx0ZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTtcbi1leHRlcm4gaW50IG5vdGlmeV9jb25uZWN0aW9uX3N0YXRlKHN0cnVjdCBza19idWZmICosXG4tXHRcdFx0XHQgICAgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0ICAgIHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKixcbi1cdFx0XHRcdCAgICBzdHJ1Y3QgY29ubmVjdGlvbl9pbmZvICosXG4tXHRcdFx0XHQgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTtcbi1leHRlcm4gaW50IG5vdGlmeV9wZWVyX2RldmljZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLFxuLVx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQsXG4tXHRcdFx0XHQgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosXG4tXHRcdFx0XHQgICAgIHN0cnVjdCBwZWVyX2RldmljZV9pbmZvICosXG4tXHRcdFx0XHQgICAgIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSk7XG4tZXh0ZXJuIHZvaWQgbm90aWZ5X2hlbHBlcihlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUsIHN0cnVjdCBkcmJkX2RldmljZSAqLFxuLVx0XHRcdCAgc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBjb25zdCBjaGFyICosIGludCk7XG4raW50IG5vdGlmeV9yZXNvdXJjZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsXG4rXHRcdFx0ICBzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqLCBzdHJ1Y3QgcmVzb3VyY2VfaW5mbyAqLFxuK1x0XHRcdCAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTtcbitpbnQgbm90aWZ5X2RldmljZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBkcmJkX2RldmljZSAqLFxuK1x0XHRcdHN0cnVjdCBkZXZpY2VfaW5mbyAqLCBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpO1xuK2ludCBub3RpZnlfY29ubmVjdGlvbl9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsXG4rXHRcdFx0ICAgIHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwgc3RydWN0IGNvbm5lY3Rpb25faW5mbyAqLFxuK1x0XHRcdCAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpO1xuK2ludCBub3RpZnlfcGVlcl9kZXZpY2Vfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKiwgdW5zaWduZWQgaW50LFxuK1x0XHRcdCAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKixcbitcdFx0XHQgICAgIHN0cnVjdCBwZWVyX2RldmljZV9pbmZvICosXG4rXHRcdFx0ICAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpO1xuK3ZvaWQgbm90aWZ5X2hlbHBlcihlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUsIHN0cnVjdCBkcmJkX2RldmljZSAqLFxuK1x0XHQgICBzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIGNvbnN0IGNoYXIgKiwgaW50KTtcbiBcbiAvKlxuICAqIGlubGluZSBoZWxwZXIgZnVuY3Rpb25zXG5AQCAtMTgyMiw3ICsxODQxLDcgQEAgZHJiZF9kZXZpY2VfcG9zdF93b3JrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgd29ya19iaXQpXG4gXHR9XG4gfVxuIFxuLWV4dGVybiB2b2lkIGRyYmRfZmx1c2hfd29ya3F1ZXVlKHN0cnVjdCBkcmJkX3dvcmtfcXVldWUgKndvcmtfcXVldWUpO1xuK3ZvaWQgZHJiZF9mbHVzaF93b3JrcXVldWUoc3RydWN0IGRyYmRfd29ya19xdWV1ZSAqd29ya19xdWV1ZSk7XG4gXG4gLyogVG8gZ2V0IHRoZSBhY2tfcmVjZWl2ZXIgb3V0IG9mIHRoZSBibG9ja2luZyBuZXR3b3JrIHN0YWNrLFxuICAqIHNvIGl0IGNhbiBjaGFuZ2UgaXRzIHNrX3JjdnRpbWVvIGZyb20gaWRsZS0gdG8gcGluZy10aW1lb3V0LFxuQEAgLTE4NDEsMTkgKzE4NjAsMjcgQEAgc3RhdGljIGlubGluZSB2b2lkIHJlcXVlc3RfcGluZyhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKVxuIFx0d2FrZV9hY2tfcmVjZWl2ZXIoY29ubmVjdGlvbik7XG4gfVxuIFxuLWV4dGVybiB2b2lkICpjb25uX3ByZXBhcmVfY29tbWFuZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHN0cnVjdCBkcmJkX3NvY2tldCAqKTtcbi1leHRlcm4gdm9pZCAqZHJiZF9wcmVwYXJlX2NvbW1hbmQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc3RydWN0IGRyYmRfc29ja2V0ICopO1xuLWV4dGVybiBpbnQgY29ubl9zZW5kX2NvbW1hbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKixcbi1cdFx0XHQgICAgIGVudW0gZHJiZF9wYWNrZXQsIHVuc2lnbmVkIGludCwgdm9pZCAqLFxuLVx0XHRcdCAgICAgdW5zaWduZWQgaW50KTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9jb21tYW5kKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3NvY2tldCAqLFxuLVx0XHRcdCAgICAgZW51bSBkcmJkX3BhY2tldCwgdW5zaWduZWQgaW50LCB2b2lkICosXG4tXHRcdFx0ICAgICB1bnNpZ25lZCBpbnQpO1xuLVxuLWV4dGVybiBpbnQgZHJiZF9zZW5kX3Bpbmcoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfcGluZ19hY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfc3RhdGVfcmVxKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsIHVuaW9uIGRyYmRfc3RhdGUpO1xuLWV4dGVybiBpbnQgY29ubl9zZW5kX3N0YXRlX3JlcShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHVuaW9uIGRyYmRfc3RhdGUsIHVuaW9uIGRyYmRfc3RhdGUpO1xuK3ZvaWQgKmNvbm5fcHJlcGFyZV9jb21tYW5kKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sXG4rXHRcdFx0ICAgc3RydWN0IGRyYmRfc29ja2V0ICpzb2NrKVxuK1x0X19jb25kX2FjcXVpcmVzKHRydWUsIFx1MDAyNnNvY2stXHUwMDNlbXV0ZXgpO1xuK3ZvaWQgKmRyYmRfcHJlcGFyZV9jb21tYW5kKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc3RydWN0IGRyYmRfc29ja2V0ICpzb2NrKVxuK1x0X19jb25kX2FjcXVpcmVzKHRydWUsIFx1MDAyNnNvY2stXHUwMDNlbXV0ZXgpO1xuK2ludCBjb25uX3NlbmRfY29tbWFuZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLFxuK1x0XHQgICAgICBzdHJ1Y3QgZHJiZF9zb2NrZXQgKnNvY2ssXG4rXHRcdCAgICAgIGVudW0gZHJiZF9wYWNrZXQgY21kLCB1bnNpZ25lZCBpbnQgaGVhZGVyX3NpemUsXG4rXHRcdCAgICAgIHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBzaXplKVxuK1x0X19yZWxlYXNlcyhcdTAwMjZzb2NrLVx1MDAzZW11dGV4KTtcbitpbnQgZHJiZF9zZW5kX2NvbW1hbmQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKnNvY2ssXG4rXHRcdCAgICAgIGVudW0gZHJiZF9wYWNrZXQgY21kLCB1bnNpZ25lZCBpbnQgaGVhZGVyX3NpemUsXG4rXHRcdCAgICAgIHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBzaXplKVxuK1x0X19yZWxlYXNlcyhcdTAwMjZzb2NrLVx1MDAzZW11dGV4KTtcbitcbitpbnQgZHJiZF9zZW5kX3Bpbmcoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4raW50IGRyYmRfc2VuZF9waW5nX2FjayhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbitpbnQgZHJiZF9zZW5kX3N0YXRlX3JlcShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLFxuK1x0XHRcdHVuaW9uIGRyYmRfc3RhdGUpO1xuK2ludCBjb25uX3NlbmRfc3RhdGVfcmVxKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwgdW5pb24gZHJiZF9zdGF0ZSxcbitcdFx0XHR1bmlvbiBkcmJkX3N0YXRlKTtcbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgZHJiZF90aHJlYWRfc3RvcChzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSlcbiB7XG5AQCAtMTk3Niw5ICsyMDAzLDYgQEAgc3RhdGljIGlubGluZSBib29sIGlzX3N5bmNfc3RhdGUoZW51bSBkcmJkX2Nvbm5zIGNvbm5lY3Rpb25fc3RhdGUpXG4gICpcbiAgKiBZb3UgaGF2ZSB0byBjYWxsIHB1dF9sZGV2KCkgd2hlbiBmaW5pc2hlZCB3b3JraW5nIHdpdGggZGV2aWNlLVx1MDAzZWxkZXYuXG4gICovXG4tI2RlZmluZSBnZXRfbGRldl9pZl9zdGF0ZShfZGV2aWNlLCBfbWluX3N0YXRlKVx0XHRcdFx0XFxcbi1cdChfZ2V0X2xkZXZfaWZfc3RhdGUoKF9kZXZpY2UpLCAoX21pbl9zdGF0ZSkpID9cdFx0XHRcXFxuLVx0ICh7IF9fYWNxdWlyZSh4KTsgdHJ1ZTsgfSkgOiBmYWxzZSlcbiAjZGVmaW5lIGdldF9sZGV2KF9kZXZpY2UpIGdldF9sZGV2X2lmX3N0YXRlKF9kZXZpY2UsIERfSU5DT05TSVNURU5UKVxuIFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfbGRldihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbkBAIC0xOTkzLDcgKzIwMTcsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHV0X2xkZXYoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXG4gXHQvKiBUaGlzIG1heSBiZSBjYWxsZWQgZnJvbSBzb21lIGVuZGlvIGhhbmRsZXIsXG4gXHQgKiBzbyB3ZSBtdXN0IG5vdCBzbGVlcCBoZXJlLiAqL1xuIFxuLVx0X19yZWxlYXNlKGxvY2FsKTtcbiBcdERfQVNTRVJUKGRldmljZSwgaSBcdTAwM2U9IDApO1xuIFx0aWYgKGkgPT0gMCkge1xuIFx0XHRpZiAoZGlza19zdGF0ZSA9PSBEX0RJU0tMRVNTKVxuQEAgLTIwMDcsOCArMjAzMCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfbGRldihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbiBcdH1cbiB9XG4gXG4tI2lmbmRlZiBfX0NIRUNLRVJfX1xuLXN0YXRpYyBpbmxpbmUgaW50IF9nZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Rpc2tfc3RhdGUgbWlucylcbitzdGF0aWMgaW5saW5lIGludCBnZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbitcdFx0XHRcdCAgICBlbnVtIGRyYmRfZGlza19zdGF0ZSBtaW5zKVxuIHtcbiBcdGludCBpb19hbGxvd2VkO1xuIFxuQEAgLTIwMjIsOSArMjA0NSw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IF9nZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Rpc2tfXG4gXHRcdHB1dF9sZGV2KGRldmljZSk7XG4gXHRyZXR1cm4gaW9fYWxsb3dlZDtcbiB9XG4tI2Vsc2Vcbi1leHRlcm4gaW50IF9nZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Rpc2tfc3RhdGUgbWlucyk7XG4tI2VuZGlmXG4gXG4gLyogdGhpcyB0aHJvdHRsZXMgb24tdGhlLWZseSBhcHBsaWNhdGlvbiByZXF1ZXN0c1xuICAqIGFjY29yZGluZyB0byBtYXhfYnVmZmVycyBzZXR0aW5ncztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9pbnRlcnZhbC5oIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50ZXJ2YWwuaFxuaW5kZXggNWQzMjEzYjgxZWVkZTcuLjI1NWU5ZDA3MWFlMWQ0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50ZXJ2YWwuaFxuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50ZXJ2YWwuaFxuQEAgLTI5LDEzICsyOSwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZHJiZF9pbnRlcnZhbF9lbXB0eShzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSlcbiBcdHJldHVybiBSQl9FTVBUWV9OT0RFKFx1MDAyNmktXHUwMDNlcmIpO1xuIH1cbiBcbi1leHRlcm4gYm9vbCBkcmJkX2luc2VydF9pbnRlcnZhbChzdHJ1Y3QgcmJfcm9vdCAqLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqKTtcbi1leHRlcm4gYm9vbCBkcmJkX2NvbnRhaW5zX2ludGVydmFsKHN0cnVjdCByYl9yb290ICosIHNlY3Rvcl90LFxuLVx0XHRcdFx0ICAgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9yZW1vdmVfaW50ZXJ2YWwoc3RydWN0IHJiX3Jvb3QgKiwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7XG4tZXh0ZXJuIHN0cnVjdCBkcmJkX2ludGVydmFsICpkcmJkX2ZpbmRfb3ZlcmxhcChzdHJ1Y3QgcmJfcm9vdCAqLCBzZWN0b3JfdCxcbitib29sIGRyYmRfaW5zZXJ0X2ludGVydmFsKHN0cnVjdCByYl9yb290ICosIHN0cnVjdCBkcmJkX2ludGVydmFsICopO1xuK2Jvb2wgZHJiZF9jb250YWluc19pbnRlcnZhbChzdHJ1Y3QgcmJfcm9vdCAqLCBzZWN0b3JfdCwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7XG4rdm9pZCBkcmJkX3JlbW92ZV9pbnRlcnZhbChzdHJ1Y3QgcmJfcm9vdCAqLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqKTtcbitzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqZHJiZF9maW5kX292ZXJsYXAoc3RydWN0IHJiX3Jvb3QgKiwgc2VjdG9yX3QsXG4gXHRcdFx0XHRcdHVuc2lnbmVkIGludCk7XG4tZXh0ZXJuIHN0cnVjdCBkcmJkX2ludGVydmFsICpkcmJkX25leHRfb3ZlcmxhcChzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqLCBzZWN0b3JfdCxcbitzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqZHJiZF9uZXh0X292ZXJsYXAoc3RydWN0IGRyYmRfaW50ZXJ2YWwgKiwgc2VjdG9yX3QsXG4gXHRcdFx0XHRcdHVuc2lnbmVkIGludCk7XG4gXG4gI2RlZmluZSBkcmJkX2Zvcl9lYWNoX292ZXJsYXAoaSwgcm9vdCwgc2VjdG9yLCBzaXplKVx0XHRcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uY1xuaW5kZXggYTJhODQxYzg5MjAxMTEuLjZmM2MwNDI1MmI1ZGVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbWFpbi5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmNcbkBAIC0xMjgsMjUgKzEyOCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgZHJiZF9vcHMgPSB7XG4gXHQucmVsZWFzZVx0PSBkcmJkX3JlbGVhc2UsXG4gfTtcbiBcbi0jaWZkZWYgX19DSEVDS0VSX19cbi0vKiBXaGVuIGNoZWNraW5nIHdpdGggc3BhcnNlLCBhbmQgdGhpcyBpcyBhbiBpbmxpbmUgZnVuY3Rpb24sIHNwYXJzZSB3aWxsXG4tICAgZ2l2ZSB0b25zIG9mIGZhbHNlIHBvc2l0aXZlcy4gV2hlbiB0aGlzIGlzIGEgcmVhbCBmdW5jdGlvbnMgc3BhcnNlIHdvcmtzLlxuLSAqL1xuLWludCBfZ2V0X2xkZXZfaWZfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGVudW0gZHJiZF9kaXNrX3N0YXRlIG1pbnMpXG4te1xuLVx0aW50IGlvX2FsbG93ZWQ7XG4tXG4tXHRhdG9taWNfaW5jKFx1MDAyNmRldmljZS1cdTAwM2Vsb2NhbF9jbnQpO1xuLVx0aW9fYWxsb3dlZCA9IChkZXZpY2UtXHUwMDNlc3RhdGUuZGlzayBcdTAwM2U9IG1pbnMpO1xuLVx0aWYgKCFpb19hbGxvd2VkKSB7XG4tXHRcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFx1MDAyNmRldmljZS1cdTAwM2Vsb2NhbF9jbnQpKVxuLVx0XHRcdHdha2VfdXAoXHUwMDI2ZGV2aWNlLVx1MDAzZW1pc2Nfd2FpdCk7XG4tXHR9XG4tXHRyZXR1cm4gaW9fYWxsb3dlZDtcbi19XG4tXG4tI2VuZGlmXG4tXG4gLyoqXG4gICogdGxfcmVsZWFzZSgpIC0gbWFyayBhcyBCQVJSSUVSX0FDS0VEIGFsbCByZXF1ZXN0cyBpbiB0aGUgY29ycmVzcG9uZGluZyB0cmFuc2ZlciBsb2cgZXBvY2hcbiAgKiBAY29ubmVjdGlvbjpcdERSQkQgY29ubmVjdGlvbi5cbkBAIC0zMjgyLDcgKzMyNjMsNyBAQCB2b2lkIGRyYmRfbWRfbWFya19kaXJ0eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbiBcdFx0bW9kX3RpbWVyKFx1MDAyNmRldmljZS1cdTAwM2VtZF9zeW5jX3RpbWVyLCBqaWZmaWVzICsgNSpIWik7XG4gfVxuIFxuLXZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXG4rdm9pZCBkcmJkX3V1aWRfbW92ZV9oaXN0b3J5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxuIHtcbiBcdGludCBpO1xuIFxuQEAgLTMyOTAsNyArMzI3MSw3IEBAIHZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXG4gXHRcdGRldmljZS1cdTAwM2VsZGV2LVx1MDAzZW1kLnV1aWRbaSsxXSA9IGRldmljZS1cdTAwM2VsZGV2LVx1MDAzZW1kLnV1aWRbaV07XG4gfVxuIFxuLXZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbClcbit2b2lkIF9fZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbClcbiB7XG4gXHRpZiAoaWR4ID09IFVJX0NVUlJFTlQpIHtcbiBcdFx0aWYgKGRldmljZS1cdTAwM2VzdGF0ZS5yb2xlID09IFJfUFJJTUFSWSlcbkBAIC0zMzA1LDcgKzMyODYsNyBAQCB2b2lkIF9fZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCkgX19tdXN0X2hvbGQobFxuIFx0ZHJiZF9tZF9tYXJrX2RpcnR5KGRldmljZSk7XG4gfVxuIFxuLXZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxvY2FsKVxuK3ZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpXG4ge1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldmljZS1cdTAwM2VsZGV2LVx1MDAzZW1kLnV1aWRfbG9jaywgZmxhZ3MpO1xuQEAgLTMzMTMsNyArMzI5NCw3IEBAIHZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxvXG4gXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldmljZS1cdTAwM2VsZGV2LVx1MDAzZW1kLnV1aWRfbG9jaywgZmxhZ3MpO1xuIH1cbiBcbi12b2lkIGRyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxvY2FsKVxuK3ZvaWQgZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbClcbiB7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2aWNlLVx1MDAzZWxkZXYtXHUwMDNlbWQudXVpZF9sb2NrLCBmbGFncyk7XG5AQCAtMzMzMiw3ICszMzEzLDcgQEAgdm9pZCBkcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NcbiAgKiBDcmVhdGVzIGEgbmV3IGN1cnJlbnQgVVVJRCwgYW5kIHJvdGF0ZXMgdGhlIG9sZCBjdXJyZW50IFVVSUQgaW50b1xuICAqIHRoZSBiaXRtYXAgc2xvdC4gQ2F1c2VzIGFuIGluY3JlbWVudGFsIHJlc3luYyB1cG9uIG5leHQgY29ubmVjdC5cbiAgKi9cbi12b2lkIGRyYmRfdXVpZF9uZXdfY3VycmVudChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXG4rdm9pZCBkcmJkX3V1aWRfbmV3X2N1cnJlbnQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXG4ge1xuIFx0dTY0IHZhbDtcbiBcdHVuc2lnbmVkIGxvbmcgbG9uZyBibV91dWlkO1xuQEAgLTMzNTQsNyArMzMzNSw3IEBAIHZvaWQgZHJiZF91dWlkX25ld19jdXJyZW50KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbiBcdGRyYmRfbWRfc3luYyhkZXZpY2UpO1xuIH1cbiBcbi12b2lkIGRyYmRfdXVpZF9zZXRfYm0oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxvY2FsKVxuK3ZvaWQgZHJiZF91dWlkX3NldF9ibShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdTY0IHZhbClcbiB7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2aWNlLVx1MDAzZWxkZXYtXHUwMDNlbWQudXVpZF9sb2NrLCBmbGFncyk7XG5AQCAtMzM4Nyw3ICszMzY4LDcgQEAgdm9pZCBkcmJkX3V1aWRfc2V0X2JtKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbClcbiAgKiBTZXRzIGFsbCBiaXRzIGluIHRoZSBiaXRtYXAgYW5kIHdyaXRlcyB0aGUgd2hvbGUgYml0bWFwIHRvIHN0YWJsZSBzdG9yYWdlLlxuICAqL1xuIGludCBkcmJkX2JtaW9fc2V0X25fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxuK1x0XHRcdCAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxuIFxuIHtcbiBcdGludCBydiA9IC1FSU87XG5AQCAtMzQxNCw3ICszMzk1LDcgQEAgaW50IGRyYmRfYm1pb19zZXRfbl93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiAgKiBDbGVhcnMgYWxsIGJpdHMgaW4gdGhlIGJpdG1hcCBhbmQgd3JpdGVzIHRoZSB3aG9sZSBiaXRtYXAgdG8gc3RhYmxlIHN0b3JhZ2UuXG4gICovXG4gaW50IGRyYmRfYm1pb19jbGVhcl9uX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRcdCAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbitcdFx0XHQgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxuIFxuIHtcbiBcdGRyYmRfcmVzdW1lX2FsKGRldmljZSk7XG5AQCAtMzU0MSw3ICszNTIyLDcgQEAgaW50IGRyYmRfYml0bWFwX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuIFx0cmV0dXJuIHJ2O1xuIH1cbiBcbi12b2lkIGRyYmRfbWRfc2V0X2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFnKSBfX211c3RfaG9sZChsb2NhbClcbit2b2lkIGRyYmRfbWRfc2V0X2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFnKVxuIHtcbiBcdGlmICgoZGV2aWNlLVx1MDAzZWxkZXYtXHUwMDNlbWQuZmxhZ3MgXHUwMDI2IGZsYWcpICE9IGZsYWcpIHtcbiBcdFx0ZHJiZF9tZF9tYXJrX2RpcnR5KGRldmljZSk7XG5AQCAtMzU0OSw3ICszNTMwLDcgQEAgdm9pZCBkcmJkX21kX3NldF9mbGFnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgZmxhZykgX19tdXN0X2hvbGQobG9jYWwpXG4gXHR9XG4gfVxuIFxuLXZvaWQgZHJiZF9tZF9jbGVhcl9mbGFnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgZmxhZykgX19tdXN0X2hvbGQobG9jYWwpXG4rdm9pZCBkcmJkX21kX2NsZWFyX2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFnKVxuIHtcbiBcdGlmICgoZGV2aWNlLVx1MDAzZWxkZXYtXHUwMDNlbWQuZmxhZ3MgXHUwMDI2IGZsYWcpICE9IDApIHtcbiBcdFx0ZHJiZF9tZF9tYXJrX2RpcnR5KGRldmljZSk7XG5AQCAtMzY3OCw2ICszNjU5LDcgQEAgaW50IGRyYmRfd2FpdF9taXNjKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSlcbiB9XG4gXG4gdm9pZCBsb2NrX2FsbF9yZXNvdXJjZXModm9pZClcbitcdF9fY29udGV4dF91bnNhZmUobG9ja2luZyBsb29wKVxuIHtcbiBcdHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZTtcbiBcdGludCBfX21heWJlX3VudXNlZCBpID0gMDtcbkBAIC0zNjg5LDYgKzM2NzEsNyBAQCB2b2lkIGxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKVxuIH1cbiBcbiB2b2lkIHVubG9ja19hbGxfcmVzb3VyY2VzKHZvaWQpXG4rXHRfX2NvbnRleHRfdW5zYWZlKGxvY2tpbmcgbG9vcClcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2U7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbmwuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmNcbmluZGV4IGY5ZmZjZDY3NjA3YjU1Li43NDhiMWQwOTNmMmU2NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmNcbkBAIC05NjgsOCArOTY4LDkgQEAgdm9pZCBkcmJkX3Jlc3VtZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbiAgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgcmV0dXJuIHZhbHVlcyBpbmRpY2F0ZSBlcnJvcnMuXG4gICogWW91IHNob3VsZCBjYWxsIGRyYmRfbWRfc3luYygpIGFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5cbiAgKi9cbi1lbnVtIGRldGVybWluZV9kZXZfc2l6ZVxuLWRyYmRfZGV0ZXJtaW5lX2Rldl9zaXplKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBlbnVtIGRkc19mbGFncyBmbGFncywgc3RydWN0IHJlc2l6ZV9wYXJtcyAqcnMpIF9fbXVzdF9ob2xkKGxvY2FsKVxuK2VudW0gZGV0ZXJtaW5lX2Rldl9zaXplIGRyYmRfZGV0ZXJtaW5lX2Rldl9zaXplKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHRcdFx0XHRcdGVudW0gZGRzX2ZsYWdzIGZsYWdzLFxuK1x0XHRcdFx0XHRcdHN0cnVjdCByZXNpemVfcGFybXMgKnJzKVxuIHtcbiBcdHN0cnVjdCBtZF9vZmZzZXRzX2FuZF9zaXplcyB7XG4gXHRcdHU2NCBsYXN0X2FncmVlZF9zZWN0O1xuQEAgLTMwOTcsNyArMzA5OCw3IEBAIHN0YXRpYyBpbnQgZHJiZF9hZG1fc2ltcGxlX3JlcXVlc3Rfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqXG4gfVxuIFxuIHN0YXRpYyBpbnQgZHJiZF9ibWlvX3NldF9zdXNwX2FsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxuK1x0XHRcdFx0IHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcbiB7XG4gXHRpbnQgcnY7XG4gXG5AQCAtMzUyOCwxNSArMzUyOSw1NiBAQCBpbnQgZHJiZF9hZG1fZHVtcF9jb25uZWN0aW9uc19kb25lKHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbiBcbiBlbnVtIHsgU0lOR0xFX1JFU09VUkNFLCBJVEVSQVRFX1JFU09VUkNFUyB9O1xuIFxuK3N0YXRpYyBpbnQgZHJiZF9ubF9wdXRfZHVtcF9jb25uZWN0aW9uc19yZXN1bHQoXG4rXHRcdHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYixcbitcdFx0c3RydWN0IGRyYmRfcmVzb3VyY2UgKnJlc291cmNlLFxuK1x0XHRzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBlbnVtIGRyYmRfcmV0X2NvZGUgcmV0Y29kZSlcbit7XG4rXHRzdHJ1Y3QgZHJiZF9nZW5sbXNnaGRyICpkaDtcbitcbitcdGRoID0gZ2VubG1zZ19wdXQoc2tiLCBORVRMSU5LX0NCKGNiLVx1MDAzZXNrYikucG9ydGlkLCBjYi1cdTAwM2VubGgtXHUwMDNlbmxtc2dfc2VxLFxuK1x0XHRcdCBcdTAwMjZkcmJkX25sX2ZhbWlseSwgTkxNX0ZfTVVMVEksXG4rXHRcdFx0IERSQkRfQURNX0dFVF9DT05ORUNUSU9OUyk7XG4rXHRpZiAoIWRoKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcdGRoLVx1MDAzZXJldF9jb2RlID0gcmV0Y29kZTtcbitcdGRoLVx1MDAzZW1pbm9yID0gLTFVO1xuK1x0aWYgKHJldGNvZGUgPT0gTk9fRVJST1IpIHtcbitcdFx0c3RydWN0IGNvbm5lY3Rpb25fc3RhdGlzdGljcyBjb25uZWN0aW9uX3N0YXRpc3RpY3M7XG4rXHRcdHN0cnVjdCBjb25uZWN0aW9uX2luZm8gY29ubmVjdGlvbl9pbmZvO1xuK1x0XHRzdHJ1Y3QgbmV0X2NvbmYgKm5ldF9jb25mO1xuK1x0XHRpbnQgZXJyO1xuK1xuK1x0XHRlcnIgPSBubGFfcHV0X2RyYmRfY2ZnX2NvbnRleHQoc2tiLCByZXNvdXJjZSwgY29ubmVjdGlvbiwgTlVMTCk7XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0cmV0dXJuIGVycjtcbitcdFx0bmV0X2NvbmYgPSByY3VfZGVyZWZlcmVuY2UoY29ubmVjdGlvbi1cdTAwM2VuZXRfY29uZik7XG4rXHRcdGlmIChuZXRfY29uZikge1xuK1x0XHRcdGVyciA9IG5ldF9jb25mX3RvX3NrYihza2IsIG5ldF9jb25mKTtcbitcdFx0XHRpZiAoZXJyKVxuK1x0XHRcdFx0cmV0dXJuIGVycjtcbitcdFx0fVxuK1x0XHRjb25uZWN0aW9uX3RvX2luZm8oXHUwMDI2Y29ubmVjdGlvbl9pbmZvLCBjb25uZWN0aW9uKTtcbitcdFx0ZXJyID0gY29ubmVjdGlvbl9pbmZvX3RvX3NrYihza2IsIFx1MDAyNmNvbm5lY3Rpb25faW5mbyk7XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0cmV0dXJuIGVycjtcbitcdFx0Y29ubmVjdGlvbl9zdGF0aXN0aWNzLmNvbm5fY29uZ2VzdGVkID1cbitcdFx0XHR0ZXN0X2JpdChORVRfQ09OR0VTVEVELCBcdTAwMjZjb25uZWN0aW9uLVx1MDAzZWZsYWdzKTtcbitcdFx0ZXJyID0gY29ubmVjdGlvbl9zdGF0aXN0aWNzX3RvX3NrYihza2IsIFx1MDAyNmNvbm5lY3Rpb25fc3RhdGlzdGljcyk7XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0cmV0dXJuIGVycjtcbitcdFx0Y2ItXHUwMDNlYXJnc1syXSA9IChsb25nKWNvbm5lY3Rpb247XG4rXHR9XG4rXHRnZW5sbXNnX2VuZChza2IsIGRoKTtcbitcdHJldHVybiAwO1xuK31cbitcbiBpbnQgZHJiZF9ubF9nZXRfY29ubmVjdGlvbnNfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbiB7XG4gXHRzdHJ1Y3QgbmxhdHRyICpyZXNvdXJjZV9maWx0ZXI7XG4gXHRzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UgPSBOVUxMLCAqbmV4dF9yZXNvdXJjZTtcbiBcdHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb247XG4tXHRpbnQgZXJyID0gMCwgcmV0Y29kZTtcbi1cdHN0cnVjdCBkcmJkX2dlbmxtc2doZHIgKmRoO1xuLVx0c3RydWN0IGNvbm5lY3Rpb25faW5mbyBjb25uZWN0aW9uX2luZm87XG4tXHRzdHJ1Y3QgY29ubmVjdGlvbl9zdGF0aXN0aWNzIGNvbm5lY3Rpb25fc3RhdGlzdGljcztcbitcdGludCBlcnIgPSAwO1xuIFxuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0cmVzb3VyY2UgPSAoc3RydWN0IGRyYmRfcmVzb3VyY2UgKiljYi1cdTAwM2VhcmdzWzBdO1xuQEAgLTM1NDQsMTcgKzM1ODYsMjMgQEAgaW50IGRyYmRfbmxfZ2V0X2Nvbm5lY3Rpb25zX2R1bXBpdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFja1xuIFx0XHRyZXNvdXJjZV9maWx0ZXIgPSBmaW5kX2NmZ19jb250ZXh0X2F0dHIoY2ItXHUwMDNlbmxoLFxuIFx0XHRcdFx0RFJCRF9BX0RSQkRfQ0ZHX0NPTlRFWFRfQ1RYX1JFU09VUkNFX05BTUUpO1xuIFx0XHRpZiAocmVzb3VyY2VfZmlsdGVyKSB7XG4tXHRcdFx0cmV0Y29kZSA9IEVSUl9SRVNfTk9UX0tOT1dOO1xuIFx0XHRcdHJlc291cmNlID0gZHJiZF9maW5kX3Jlc291cmNlKG5sYV9kYXRhKHJlc291cmNlX2ZpbHRlcikpO1xuLVx0XHRcdGlmICghcmVzb3VyY2UpXG4tXHRcdFx0XHRnb3RvIHB1dF9yZXN1bHQ7XG4rXHRcdFx0aWYgKCFyZXNvdXJjZSkge1xuK1x0XHRcdFx0ZXJyID0gZHJiZF9ubF9wdXRfZHVtcF9jb25uZWN0aW9uc19yZXN1bHQoXG4rXHRcdFx0XHRcdHNrYiwgY2IsIHJlc291cmNlLCBOVUxMLFxuK1x0XHRcdFx0XHRFUlJfUkVTX05PVF9LTk9XTik7XG4rXHRcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbitcdFx0XHRcdGdvdG8gcmV0O1xuK1x0XHRcdH1cbiBcdFx0XHRjYi1cdTAwM2VhcmdzWzBdID0gKGxvbmcpcmVzb3VyY2U7XG4gXHRcdFx0Y2ItXHUwMDNlYXJnc1sxXSA9IFNJTkdMRV9SRVNPVVJDRTtcbiBcdFx0fVxuIFx0fVxuIFx0aWYgKCFyZXNvdXJjZSkge1xuLVx0XHRpZiAobGlzdF9lbXB0eShcdTAwMjZkcmJkX3Jlc291cmNlcykpXG4tXHRcdFx0Z290byBvdXQ7XG4rXHRcdGlmIChsaXN0X2VtcHR5KFx1MDAyNmRyYmRfcmVzb3VyY2VzKSkge1xuK1x0XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0XHRcdGdvdG8gcmV0O1xuK1x0XHR9XG4gXHRcdHJlc291cmNlID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZkcmJkX3Jlc291cmNlcywgc3RydWN0IGRyYmRfcmVzb3VyY2UsIHJlc291cmNlcyk7XG4gXHRcdGtyZWZfZ2V0KFx1MDAyNnJlc291cmNlLVx1MDAzZWtyZWYpO1xuIFx0XHRjYi1cdTAwM2VhcmdzWzBdID0gKGxvbmcpcmVzb3VyY2U7XG5AQCAtMzU3OCw4ICszNjI2LDkgQEAgaW50IGRyYmRfbmxfZ2V0X2Nvbm5lY3Rpb25zX2R1bXBpdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFja1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoY29ubmVjdGlvbiwgXHUwMDI2cmVzb3VyY2UtXHUwMDNlY29ubmVjdGlvbnMsIGNvbm5lY3Rpb25zKSB7XG4gXHRcdGlmICghaGFzX25ldF9jb25mKGNvbm5lY3Rpb24pKVxuIFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRyZXRjb2RlID0gTk9fRVJST1I7XG4tXHRcdGdvdG8gcHV0X3Jlc3VsdDsgIC8qIG9ubHkgb25lIGl0ZXJhdGlvbiAqL1xuK1x0XHRlcnIgPSBkcmJkX25sX3B1dF9kdW1wX2Nvbm5lY3Rpb25zX3Jlc3VsdChza2IsIGNiLCByZXNvdXJjZSxcbitcdFx0XHRcdFx0XHRcdCAgY29ubmVjdGlvbiwgTk9fRVJST1IpO1xuK1x0XHRnb3RvIG91dDsgLyogb25seSBvbmUgaXRlcmF0aW9uICovXG4gXHR9XG4gXG4gbm9fbW9yZV9jb25uZWN0aW9uczpcbkBAIC0zNjAyLDQ2ICszNjUxLDE0IEBAIGludCBkcmJkX25sX2dldF9jb25uZWN0aW9uc19kdW1waXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2tcbiBcdFx0Y2ItXHUwMDNlYXJnc1syXSA9IDA7XG4gXHRcdGdvdG8gbmV4dF9yZXNvdXJjZTtcbiBcdH1cbi1cdGdvdG8gb3V0OyAgLyogbm8gbW9yZSByZXNvdXJjZXMgKi9cbiBcbi1wdXRfcmVzdWx0OlxuLVx0ZGggPSBnZW5sbXNnX3B1dChza2IsIE5FVExJTktfQ0IoY2ItXHUwMDNlc2tiKS5wb3J0aWQsXG4tXHRcdFx0Y2ItXHUwMDNlbmxoLVx1MDAzZW5sbXNnX3NlcSwgXHUwMDI2ZHJiZF9ubF9mYW1pbHksXG4tXHRcdFx0TkxNX0ZfTVVMVEksIERSQkRfQURNX0dFVF9DT05ORUNUSU9OUyk7XG4tXHRlcnIgPSAtRU5PTUVNO1xuLVx0aWYgKCFkaClcbi1cdFx0Z290byBvdXQ7XG4tXHRkaC1cdTAwM2VyZXRfY29kZSA9IHJldGNvZGU7XG4tXHRkaC1cdTAwM2VtaW5vciA9IC0xVTtcbi1cdGlmIChyZXRjb2RlID09IE5PX0VSUk9SKSB7XG4tXHRcdHN0cnVjdCBuZXRfY29uZiAqbmV0X2NvbmY7XG4tXG4tXHRcdGVyciA9IG5sYV9wdXRfZHJiZF9jZmdfY29udGV4dChza2IsIHJlc291cmNlLCBjb25uZWN0aW9uLCBOVUxMKTtcbi1cdFx0aWYgKGVycilcbi1cdFx0XHRnb3RvIG91dDtcbi1cdFx0bmV0X2NvbmYgPSByY3VfZGVyZWZlcmVuY2UoY29ubmVjdGlvbi1cdTAwM2VuZXRfY29uZik7XG4tXHRcdGlmIChuZXRfY29uZikge1xuLVx0XHRcdGVyciA9IG5ldF9jb25mX3RvX3NrYihza2IsIG5ldF9jb25mKTtcbi1cdFx0XHRpZiAoZXJyKVxuLVx0XHRcdFx0Z290byBvdXQ7XG4tXHRcdH1cbi1cdFx0Y29ubmVjdGlvbl90b19pbmZvKFx1MDAyNmNvbm5lY3Rpb25faW5mbywgY29ubmVjdGlvbik7XG4tXHRcdGVyciA9IGNvbm5lY3Rpb25faW5mb190b19za2Ioc2tiLCBcdTAwMjZjb25uZWN0aW9uX2luZm8pO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdGdvdG8gb3V0O1xuLVx0XHRjb25uZWN0aW9uX3N0YXRpc3RpY3MuY29ubl9jb25nZXN0ZWQgPSB0ZXN0X2JpdChORVRfQ09OR0VTVEVELCBcdTAwMjZjb25uZWN0aW9uLVx1MDAzZWZsYWdzKTtcbi1cdFx0ZXJyID0gY29ubmVjdGlvbl9zdGF0aXN0aWNzX3RvX3NrYihza2IsIFx1MDAyNmNvbm5lY3Rpb25fc3RhdGlzdGljcyk7XG4tXHRcdGlmIChlcnIpXG4tXHRcdFx0Z290byBvdXQ7XG4tXHRcdGNiLVx1MDAzZWFyZ3NbMl0gPSAobG9uZyljb25uZWN0aW9uO1xuLVx0fVxuLVx0Z2VubG1zZ19lbmQoc2tiLCBkaCk7XG4tXHRlcnIgPSAwO1xuK1x0Lyogbm8gbW9yZSByZXNvdXJjZXMgKi9cbiBcbiBvdXQ6XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbi1cdGlmIChyZXNvdXJjZSlcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnJlc291cmNlLVx1MDAzZWNvbmZfdXBkYXRlKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZyZXNvdXJjZS1cdTAwM2Vjb25mX3VwZGF0ZSk7XG4rXG4rcmV0OlxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcdHJldHVybiBza2ItXHUwMDNlbGVuO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jXG5pbmRleCA1OGI5NWJmNGJkY2E2YS4uYjRhMzUwY2QwM2IwNGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jXG5AQCAtMTc0LDggKzE3NCw5IEBAIFlvdSBtdXN0IG5vdCBoYXZlIHRoZSByZXFfbG9jazpcbiAgKiB3X3NhbWU6IHBheWxvYWRfc2l6ZSA9PSBsb2dpY2FsX2Jsb2NrX3NpemVcbiAgKiB0cmltOiBwYXlsb2FkX3NpemUgPT0gMCAqL1xuIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqXG4tZHJiZF9hbGxvY19wZWVyX3JlcShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHU2NCBpZCwgc2VjdG9yX3Qgc2VjdG9yLFxuLVx0XHQgICAgdW5zaWduZWQgaW50IHJlcXVlc3Rfc2l6ZSwgdW5zaWduZWQgaW50IHBheWxvYWRfc2l6ZSwgZ2ZwX3QgZ2ZwX21hc2spIF9fbXVzdF9ob2xkKGxvY2FsKVxuK2RyYmRfYWxsb2NfcGVlcl9yZXEoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCB1NjQgaWQsXG4rXHRcdCAgICBzZWN0b3JfdCBzZWN0b3IsIHVuc2lnbmVkIGludCByZXF1ZXN0X3NpemUsXG4rXHRcdCAgICB1bnNpZ25lZCBpbnQgcGF5bG9hZF9zaXplLCBnZnBfdCBnZnBfbWFzaylcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHBlZXJfZGV2aWNlLVx1MDAzZWRldmljZTtcbiBcdHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXE7XG5AQCAtMjg3LDYgKzI4OCw3IEBAIHN0YXRpYyBpbnQgZHJiZF9maW5pc2hfcGVlcl9yZXFzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxuIFxuIHN0YXRpYyB2b2lkIF9kcmJkX3dhaXRfZWVfbGlzdF9lbXB0eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiBcdFx0XHRcdCAgICAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcbitcdF9fbXVzdF9ob2xkKFx1MDAyNmRldmljZS1cdTAwM2VyZXNvdXJjZS1cdTAwM2VyZXFfbG9jaylcbiB7XG4gXHRERUZJTkVfV0FJVCh3YWl0KTtcbiBcbkBAIC04OTYsNiArODk4LDggQEAgc3RhdGljIGludCBjb25uX2Nvbm5lY3Qoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbilcbiBcdGlmIChkcmJkX3NlbmRfcHJvdG9jb2woY29ubmVjdGlvbikgPT0gLUVPUE5PVFNVUFApXG4gXHRcdHJldHVybiAtMTtcbiBcbitcdC8qIGNvbnRleHRfdW5zYWZlKCkgYmVjYXVzZSBvZiB0d28gbG9ja2luZyBsb29wcyAqL1xuK1x0Y29udGV4dF91bnNhZmUoXG4gXHQvKiBQcmV2ZW50IGEgcmFjZSBiZXR3ZWVuIHJlc3luYy1oYW5kc2hha2UgYW5kXG4gXHQgKiBiZWluZyBwcm9tb3RlZCB0byBQcmltYXJ5LlxuIFx0ICpcbkBAIC05MTMsNiArOTE3LDcgQEAgc3RhdGljIGludCBjb25uX2Nvbm5lY3Qoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbilcbiBcbiBcdGlkcl9mb3JfZWFjaF9lbnRyeShcdTAwMjZjb25uZWN0aW9uLVx1MDAzZXBlZXJfZGV2aWNlcywgcGVlcl9kZXZpY2UsIHZucilcbiBcdFx0bXV0ZXhfdW5sb2NrKHBlZXJfZGV2aWNlLVx1MDAzZWRldmljZS1cdTAwM2VzdGF0ZV9tdXRleCk7XG4rXHQpO1xuIFxuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0aWRyX2Zvcl9lYWNoX2VudHJ5KFx1MDAyNmNvbm5lY3Rpb24tXHUwMDNlcGVlcl9kZXZpY2VzLCBwZWVyX2RldmljZSwgdm5yKSB7XG5AQCAtMTY1Nyw3ICsxNjYyLDcgQEAgc3RhdGljIHZvaWQgZHJiZF9jc3VtX2VlX3NpemUoc3RydWN0IGNyeXB0b19zaGFzaCAqaCxcbiAgKi9cbiBzdGF0aWMgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpcbiByZWFkX2luX2Jsb2NrKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgdTY0IGlkLCBzZWN0b3JfdCBzZWN0b3IsXG4tXHQgICAgICBzdHJ1Y3QgcGFja2V0X2luZm8gKnBpKSBfX211c3RfaG9sZChsb2NhbClcbitcdCAgICAgIHN0cnVjdCBwYWNrZXRfaW5mbyAqcGkpXG4ge1xuIFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBwZWVyX2RldmljZS1cdTAwM2VkZXZpY2U7XG4gXHRjb25zdCBzZWN0b3JfdCBjYXBhY2l0eSA9IGdldF9jYXBhY2l0eShkZXZpY2UtXHUwMDNldmRpc2spO1xuQEAgLTE4NjgsOCArMTg3Myw4IEBAIHN0YXRpYyBpbnQgZV9lbmRfcmVzeW5jX2Jsb2NrKHN0cnVjdCBkcmJkX3dvcmsgKncsIGludCB1bnVzZWQpXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbi1zdGF0aWMgaW50IHJlY3ZfcmVzeW5jX3JlYWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IsXG4tXHRcdFx0ICAgIHN0cnVjdCBwYWNrZXRfaW5mbyAqcGkpIF9fcmVsZWFzZXMobG9jYWwpXG4rc3RhdGljIGludCByZWN2X3Jlc3luY19yZWFkKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcbitcdFx0XHQgICAgc2VjdG9yX3Qgc2VjdG9yLCBzdHJ1Y3QgcGFja2V0X2luZm8gKnBpKVxuIHtcbiBcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtXHUwMDNlZGV2aWNlO1xuIFx0c3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcTtcbkBAIC0yMjMwLDYgKzIyMzUsNyBAQCBzdGF0aWMgYmxrX29wZl90IHdpcmVfZmxhZ3NfdG9fYmlvKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHUzMiBkcGYpXG4gXG4gc3RhdGljIHZvaWQgZmFpbF9wb3N0cG9uZWRfcmVxdWVzdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3RvcixcbiBcdFx0XHRcdCAgICB1bnNpZ25lZCBpbnQgc2l6ZSlcbitcdF9fbXVzdF9ob2xkKFx1MDAyNmRldmljZS1cdTAwM2VyZXNvdXJjZS1cdTAwM2VyZXFfbG9jaylcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UgPSBmaXJzdF9wZWVyX2RldmljZShkZXZpY2UpO1xuIFx0c3RydWN0IGRyYmRfaW50ZXJ2YWwgKmk7XG5AQCAtMjI1Niw2ICsyMjYyLDcgQEAgc3RhdGljIHZvaWQgZmFpbF9wb3N0cG9uZWRfcmVxdWVzdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3RvcixcbiBcbiBzdGF0aWMgaW50IGhhbmRsZV93cml0ZV9jb25mbGljdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4gXHRcdFx0XHQgIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpXG4rXHRfX211c3RfaG9sZChcdTAwMjZkZXZpY2UtXHUwMDNlcmVzb3VyY2UtXHUwMDNlcmVxX2xvY2spXG4ge1xuIFx0c3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiA9IHBlZXJfcmVxLVx1MDAzZXBlZXJfZGV2aWNlLVx1MDAzZWNvbm5lY3Rpb247XG4gXHRib29sIHJlc29sdmVfY29uZmxpY3RzID0gdGVzdF9iaXQoUkVTT0xWRV9DT05GTElDVFMsIFx1MDAyNmNvbm5lY3Rpb24tXHUwMDNlZmxhZ3MpO1xuQEAgLTI4MjYsNyArMjgzMyw3IEBAIHN0YXRpYyBpbnQgcmVjZWl2ZV9EYXRhUmVxdWVzdChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBzdHJ1Y3QgcGFja2V0XG4gLypcbiAgKiBkcmJkX2FzYl9yZWNvdmVyXzBwICAtICBSZWNvdmVyIGFmdGVyIHNwbGl0LWJyYWluIHdpdGggbm8gcmVtYWluaW5nIHByaW1hcmllc1xuICAqL1xuLXN0YXRpYyBpbnQgZHJiZF9hc2JfcmVjb3Zlcl8wcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxuK3N0YXRpYyBpbnQgZHJiZF9hc2JfcmVjb3Zlcl8wcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXG4ge1xuIFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBwZWVyX2RldmljZS1cdTAwM2VkZXZpY2U7XG4gXHRpbnQgc2VsZiwgcGVlciwgcnYgPSAtMTAwO1xuQEAgLTI5MDksNyArMjkxNiw3IEBAIHN0YXRpYyBpbnQgZHJiZF9hc2JfcmVjb3Zlcl8wcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkXG4gLypcbiAgKiBkcmJkX2FzYl9yZWNvdmVyXzFwICAtICBSZWNvdmVyIGFmdGVyIHNwbGl0LWJyYWluIHdpdGggb25lIHJlbWFpbmluZyBwcmltYXJ5XG4gICovXG4tc3RhdGljIGludCBkcmJkX2FzYl9yZWNvdmVyXzFwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXG4rc3RhdGljIGludCBkcmJkX2FzYl9yZWNvdmVyXzFwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHBlZXJfZGV2aWNlLVx1MDAzZWRldmljZTtcbiBcdGludCBoZywgcnYgPSAtMTAwO1xuQEAgLTI5NjYsNyArMjk3Myw3IEBAIHN0YXRpYyBpbnQgZHJiZF9hc2JfcmVjb3Zlcl8xcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkXG4gLypcbiAgKiBkcmJkX2FzYl9yZWNvdmVyXzJwICAtICBSZWNvdmVyIGFmdGVyIHNwbGl0LWJyYWluIHdpdGggdHdvIHJlbWFpbmluZyBwcmltYXJpZXNcbiAgKi9cbi1zdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMnAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbitzdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMnAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxuIHtcbiBcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtXHUwMDNlZGV2aWNlO1xuIFx0aW50IGhnLCBydiA9IC0xMDA7XG5AQCAtMzA0NCw3ICszMDUxLDcgQEAgc3RhdGljIHZvaWQgZHJiZF91dWlkX2R1bXAoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNoYXIgKnRleHQsIHU2NCAqdXVpZCxcbiAgKi9cbiBcbiBzdGF0aWMgaW50IGRyYmRfdXVpZF9jb21wYXJlKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpjb25zdCBwZWVyX2RldmljZSxcbi1cdFx0ZW51bSBkcmJkX3JvbGUgY29uc3QgcGVlcl9yb2xlLCBpbnQgKnJ1bGVfbnIpIF9fbXVzdF9ob2xkKGxvY2FsKVxuK1x0XHRcdCAgICAgZW51bSBkcmJkX3JvbGUgY29uc3QgcGVlcl9yb2xlLCBpbnQgKnJ1bGVfbnIpXG4ge1xuIFx0c3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29uc3QgY29ubmVjdGlvbiA9IHBlZXJfZGV2aWNlLVx1MDAzZWNvbm5lY3Rpb247XG4gXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHBlZXJfZGV2aWNlLVx1MDAzZWRldmljZTtcbkBAIC0zMjY0LDcgKzMyNzEsNyBAQCBzdGF0aWMgaW50IGRyYmRfdXVpZF9jb21wYXJlKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpjb25zdCBwZWVyX2RldmljZSxcbiAgKi9cbiBzdGF0aWMgZW51bSBkcmJkX2Nvbm5zIGRyYmRfc3luY19oYW5kc2hha2Uoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLFxuIFx0XHRcdFx0XHQgICBlbnVtIGRyYmRfcm9sZSBwZWVyX3JvbGUsXG4tXHRcdFx0XHRcdCAgIGVudW0gZHJiZF9kaXNrX3N0YXRlIHBlZXJfZGlzaykgX19tdXN0X2hvbGQobG9jYWwpXG4rXHRcdFx0XHRcdCAgIGVudW0gZHJiZF9kaXNrX3N0YXRlIHBlZXJfZGlzaylcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHBlZXJfZGV2aWNlLVx1MDAzZWRldmljZTtcbiBcdGVudW0gZHJiZF9jb25ucyBydiA9IENfTUFTSztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5jXG5pbmRleCA3MGY3NWVmMDc5NDU3ZC4uMWNjNDU1ODQ2ZjkyMDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuY1xuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmNcbkBAIC05NTEsNyArOTUxLDkgQEAgc3RhdGljIGJvb2wgcmVtb3RlX2R1ZV90b19yZWFkX2JhbGFuY2luZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VcbiAgKlxuICAqIE9ubHkgd2F5IG91dDogcmVtb3ZlIHRoZSBjb25mbGljdGluZyBpbnRlcnZhbHMgZnJvbSB0aGUgdHJlZS5cbiAgKi9cbi1zdGF0aWMgdm9pZCBjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKVxuK3N0YXRpYyB2b2lkIGNvbXBsZXRlX2NvbmZsaWN0aW5nX3dyaXRlcyhzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UsXG4rXHRcdFx0XHRcdHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSlcbitcdF9fbXVzdF9ob2xkKFx1MDAyNnJlc291cmNlLVx1MDAzZXJlcV9sb2NrKVxuIHtcbiBcdERFRklORV9XQUlUKHdhaXQpO1xuIFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSByZXEtXHUwMDNlZGV2aWNlO1xuQEAgLTk3NCw5ICs5NzYsOSBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKVxuIFx0XHQvKiBJbmRpY2F0ZSB0byB3YWtlIHVwIGRldmljZS1cdTAwM2VtaXNjX3dhaXQgb24gcHJvZ3Jlc3MuICAqL1xuIFx0XHRwcmVwYXJlX3RvX3dhaXQoXHUwMDI2ZGV2aWNlLVx1MDAzZW1pc2Nfd2FpdCwgXHUwMDI2d2FpdCwgVEFTS19VTklOVEVSUlVQVElCTEUpO1xuIFx0XHRpLVx1MDAzZXdhaXRpbmcgPSB0cnVlO1xuLVx0XHRzcGluX3VubG9ja19pcnEoXHUwMDI2ZGV2aWNlLVx1MDAzZXJlc291cmNlLVx1MDAzZXJlcV9sb2NrKTtcbitcdFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNnJlc291cmNlLVx1MDAzZXJlcV9sb2NrKTtcbiBcdFx0c2NoZWR1bGUoKTtcbi1cdFx0c3Bpbl9sb2NrX2lycShcdTAwMjZkZXZpY2UtXHUwMDNlcmVzb3VyY2UtXHUwMDNlcmVxX2xvY2spO1xuK1x0XHRzcGluX2xvY2tfaXJxKFx1MDAyNnJlc291cmNlLVx1MDAzZXJlcV9sb2NrKTtcbiBcdH1cbiBcdGZpbmlzaF93YWl0KFx1MDAyNmRldmljZS1cdTAwM2VtaXNjX3dhaXQsIFx1MDAyNndhaXQpO1xuIH1cbkBAIC0xMzI5LDcgKzEzMzEsNyBAQCBzdGF0aWMgdm9pZCBkcmJkX3NlbmRfYW5kX3N1Ym1pdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfcmVxdWVzdFxuIFx0XHQvKiBUaGlzIG1heSB0ZW1wb3JhcmlseSBnaXZlIHVwIHRoZSByZXFfbG9jayxcbiBcdFx0ICogYnV0IHdpbGwgcmUtYXF1aXJlIGl0IGJlZm9yZSBpdCByZXR1cm5zIGhlcmUuXG4gXHRcdCAqIE5lZWRzIHRvIGJlIGJlZm9yZSB0aGUgY2hlY2sgb24gZHJiZF9zdXNwZW5kZWQoKSAqL1xuLVx0XHRjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMocmVxKTtcbitcdFx0Y29tcGxldGVfY29uZmxpY3Rpbmdfd3JpdGVzKHJlc291cmNlLCByZXEpO1xuIFx0XHQvKiBubyBtb3JlIGdpdmluZyB1cCByZXFfbG9jayBmcm9tIG5vdyBvbiEgKi9cbiBcbiBcdFx0LyogY2hlY2sgZm9yIGNvbmdlc3Rpb24sIGFuZCBwb3RlbnRpYWxseSBzdG9wIHNlbmRpbmdcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuaCBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5oXG5pbmRleCA5YWU4NjBlNzU5MWIzMi4uN2YyNGNiOGU1NDI5YTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuaFxuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmhcbkBAIC0yNjQsMjAgKzI2NCwxOCBAQCBzdHJ1Y3QgYmlvX2FuZF9lcnJvciB7XG4gXHRpbnQgZXJyb3I7XG4gfTtcbiBcbi1leHRlcm4gdm9pZCBzdGFydF9uZXdfdGxfZXBvY2goc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9yZXFfZGVzdHJveShzdHJ1Y3Qga3JlZiAqa3JlZik7XG4tZXh0ZXJuIGludCBfX3JlcV9tb2Qoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQsXG4tXHRcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcbi1cdFx0c3RydWN0IGJpb19hbmRfZXJyb3IgKm0pO1xuLWV4dGVybiB2b2lkIGNvbXBsZXRlX21hc3Rlcl9iaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdHN0cnVjdCBiaW9fYW5kX2Vycm9yICptKTtcbi1leHRlcm4gdm9pZCByZXF1ZXN0X3RpbWVyX2ZuKHN0cnVjdCB0aW1lcl9saXN0ICp0KTtcbi1leHRlcm4gdm9pZCB0bF9yZXN0YXJ0KHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGVudW0gZHJiZF9yZXFfZXZlbnQgd2hhdCk7XG4tZXh0ZXJuIHZvaWQgX3RsX3Jlc3RhcnQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgZW51bSBkcmJkX3JlcV9ldmVudCB3aGF0KTtcbi1leHRlcm4gdm9pZCB0bF9hYm9ydF9kaXNrX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbit2b2lkIHN0YXJ0X25ld190bF9lcG9jaChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbit2b2lkIGRyYmRfcmVxX2Rlc3Ryb3koc3RydWN0IGtyZWYgKmtyZWYpO1xuK2ludCBfX3JlcV9tb2Qoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQsXG4rXHQgICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHN0cnVjdCBiaW9fYW5kX2Vycm9yICptKTtcbit2b2lkIGNvbXBsZXRlX21hc3Rlcl9iaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBiaW9fYW5kX2Vycm9yICptKTtcbit2b2lkIHJlcXVlc3RfdGltZXJfZm4oc3RydWN0IHRpbWVyX2xpc3QgKnQpO1xuK3ZvaWQgdGxfcmVzdGFydChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQpO1xuK3ZvaWQgX3RsX3Jlc3RhcnQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgZW51bSBkcmJkX3JlcV9ldmVudCB3aGF0KTtcbit2b2lkIHRsX2Fib3J0X2Rpc2tfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuIFxuIC8qIHRoaXMgaXMgaW4gZHJiZF9tYWluLmMgKi9cbi1leHRlcm4gdm9pZCBkcmJkX3Jlc3RhcnRfcmVxdWVzdChzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICpyZXEpO1xuK3ZvaWQgZHJiZF9yZXN0YXJ0X3JlcXVlc3Qoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKTtcbiBcbiAvKiB1c2UgdGhpcyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBkZWFsIHdpdGggY2FsbGluZyBjb21wbGV0ZV9tYXN0ZXJfYmlvKClcbiAgKiBvdXRzaWRlIHRoZSBzcGlubG9jaywgZS5nLiB3aGVuIHdhbGtpbmcgc29tZSBsaXN0IG9uIGNsZWFudXAuICovXG5AQCAtMzE5LDYgKzMxNyw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJlcV9tb2Qoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxLFxuIFx0cmV0dXJuIHJ2O1xuIH1cbiBcbi1leHRlcm4gYm9vbCBkcmJkX3Nob3VsZF9kb19yZW1vdGUodW5pb24gZHJiZF9kZXZfc3RhdGUpO1xuK2Jvb2wgZHJiZF9zaG91bGRfZG9fcmVtb3RlKHVuaW9uIGRyYmRfZGV2X3N0YXRlKTtcbiBcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuY1xuaW5kZXggYWRjYmE3ZjFkOGVhNDkuLjQxNmE3MWQ3YTYxYzA2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuY1xuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuY1xuQEAgLTU0OSwxOSArNTQ5LDEwIEBAIF9yZXFfc3RfY29uZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxuIFx0cmV0dXJuIHJ2O1xuIH1cbiBcbi0vKipcbi0gKiBkcmJkX3JlcV9zdGF0ZSgpIC0gUGVyZm9ybSBhbiBldmVudHVhbGx5IGNsdXN0ZXIgd2lkZSBzdGF0ZSBjaGFuZ2Vcbi0gKiBAZGV2aWNlOlx0RFJCRCBkZXZpY2UuXG4tICogQG1hc2s6XHRtYXNrIG9mIHN0YXRlIGJpdHMgdG8gY2hhbmdlLlxuLSAqIEB2YWw6XHR2YWx1ZSBvZiBuZXcgc3RhdGUgYml0cy5cbi0gKiBAZjpcdFx0ZmxhZ3Ncbi0gKlxuLSAqIFNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LCB1c2UgZHJiZF9yZXF1ZXN0X3N0YXRlKCkgb3Jcbi0gKiBfZHJiZF9yZXF1ZXN0X3N0YXRlKCkuXG4tICovXG4tc3RhdGljIGVudW0gZHJiZF9zdGF0ZV9ydlxuLWRyYmRfcmVxX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXG4tXHQgICAgICAgdW5pb24gZHJiZF9zdGF0ZSB2YWwsIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYpXG4rc3RhdGljIGVudW0gZHJiZF9zdGF0ZV9ydiBfX2RyYmRfcmVxX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHRcdFx0XHQgICB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXG4rXHRcdFx0XHRcdCAgIHVuaW9uIGRyYmRfc3RhdGUgdmFsLFxuK1x0XHRcdFx0XHQgICBlbnVtIGNoZ19zdGF0ZV9mbGFncyBmKVxuIHtcbiBcdHN0cnVjdCBjb21wbGV0aW9uIGRvbmU7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuQEAgLTU3MSw4ICs1NjIsNiBAQCBkcmJkX3JlcV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxuIFxuIFx0aW5pdF9jb21wbGV0aW9uKFx1MDAyNmRvbmUpO1xuIFxuLVx0aWYgKGYgXHUwMDI2IENTX1NFUklBTElaRSlcbi1cdFx0bXV0ZXhfbG9jayhkZXZpY2UtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuIFx0aWYgKGYgXHUwMDI2IENTX0lOSElCSVRfTURfSU8pXG4gXHRcdGJ1ZmZlciA9IGRyYmRfbWRfZ2V0X2J1ZmZlcihkZXZpY2UsIF9fZnVuY19fKTtcbiBcbkBAIC02MjksOCArNjE4LDM0IEBAIGRyYmRfcmVxX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXG4gYWJvcnQ6XG4gXHRpZiAoYnVmZmVyKVxuIFx0XHRkcmJkX21kX3B1dF9idWZmZXIoZGV2aWNlKTtcbi1cdGlmIChmIFx1MDAyNiBDU19TRVJJQUxJWkUpXG4rXG4rXHRyZXR1cm4gcnY7XG4rfVxuK1xuKy8qKlxuKyAqIGRyYmRfcmVxX3N0YXRlKCkgLSBQZXJmb3JtIGFuIGV2ZW50dWFsbHkgY2x1c3RlciB3aWRlIHN0YXRlIGNoYW5nZVxuKyAqIEBkZXZpY2U6XHREUkJEIGRldmljZS5cbisgKiBAbWFzazpcdG1hc2sgb2Ygc3RhdGUgYml0cyB0byBjaGFuZ2UuXG4rICogQHZhbDpcdHZhbHVlIG9mIG5ldyBzdGF0ZSBiaXRzLlxuKyAqIEBmOlx0XHRmbGFnc1xuKyAqXG4rICogU2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHksIHVzZSBkcmJkX3JlcXVlc3Rfc3RhdGUoKSBvclxuKyAqIF9kcmJkX3JlcXVlc3Rfc3RhdGUoKS5cbisgKi9cbitzdGF0aWMgZW51bSBkcmJkX3N0YXRlX3J2IGRyYmRfcmVxX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHRcdFx0XHQgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxuK1x0XHRcdFx0XHQgdW5pb24gZHJiZF9zdGF0ZSB2YWwsXG4rXHRcdFx0XHRcdCBlbnVtIGNoZ19zdGF0ZV9mbGFncyBmKVxuK3tcbitcdGVudW0gZHJiZF9zdGF0ZV9ydiBydjtcbitcbitcdGlmIChmIFx1MDAyNiBDU19TRVJJQUxJWkUpIHtcbitcdFx0bXV0ZXhfbG9jayhkZXZpY2UtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuK1x0XHRydiA9IF9fZHJiZF9yZXFfc3RhdGUoZGV2aWNlLCBtYXNrLCB2YWwsIGYpO1xuIFx0XHRtdXRleF91bmxvY2soZGV2aWNlLVx1MDAzZXN0YXRlX211dGV4KTtcbitcdH0gZWxzZSB7XG4rXHRcdHJ2ID0gX19kcmJkX3JlcV9zdGF0ZShkZXZpY2UsIG1hc2ssIHZhbCwgZik7XG4rXHR9XG4gXG4gXHRyZXR1cm4gcnY7XG4gfVxuQEAgLTY5OSw2ICs3MTQsNyBAQCBpbnQgZHJiZF9yZXF1ZXN0X2RldGFjaF9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxuIGVudW0gZHJiZF9zdGF0ZV9ydlxuIF9kcmJkX3JlcXVlc3Rfc3RhdGVfaG9sZGluZ19zdGF0ZV9tdXRleChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxuIFx0XHQgICAgdW5pb24gZHJiZF9zdGF0ZSB2YWwsIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYpXG4rXHRfX211c3RfaG9sZChcdTAwMjZkZXZpY2UtXHUwMDNlc3RhdGVfbXV0ZXgpXG4ge1xuIFx0ZW51bSBkcmJkX3N0YXRlX3J2IHJ2O1xuIFxuQEAgLTIyOTIsNiArMjMwOCw3IEBAIF9jb25uX3JxX2NvbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLCB1bmlvbiBkXG4gZW51bSBkcmJkX3N0YXRlX3J2XG4gX2Nvbm5fcmVxdWVzdF9zdGF0ZShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssIHVuaW9uIGRyYmRfc3RhdGUgdmFsLFxuIFx0XHQgICAgZW51bSBjaGdfc3RhdGVfZmxhZ3MgZmxhZ3MpXG4rXHRfX2NvbnRleHRfdW5zYWZlKGNvbmRpdGlvbmFsIGxvY2tpbmcpXG4ge1xuIFx0ZW51bSBkcmJkX3N0YXRlX3J2IHJ2ID0gU1NfU1VDQ0VTUztcbiBcdHN0cnVjdCBhZnRlcl9jb25uX3N0YXRlX2NoZ193b3JrICphY3NjdztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5oIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuaFxuaW5kZXggY2JhZWI4MDE4ZGJmNTkuLmE3ZTMxZDA5MjAzOTZiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuaFxuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuaFxuQEAgLTExMiwyNiArMTEyLDIzIEBAIHVuaW9uIGRyYmRfZGV2X3N0YXRlIHtcbiBcdHVuc2lnbmVkIGludCBpO1xuIH07XG4gXG4tZXh0ZXJuIGVudW0gZHJiZF9zdGF0ZV9ydiBkcmJkX2NoYW5nZV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0XHRcdFx0ICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYsXG4tXHRcdFx0XHRcdCAgICB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXG4tXHRcdFx0XHRcdCAgICB1bmlvbiBkcmJkX3N0YXRlIHZhbCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9mb3JjZV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSxcbi1cdFx0XHR1bmlvbiBkcmJkX3N0YXRlKTtcbi1leHRlcm4gZW51bSBkcmJkX3N0YXRlX3J2IF9kcmJkX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICosXG4tXHRcdFx0XHRcdCAgICAgIHVuaW9uIGRyYmRfc3RhdGUsXG4tXHRcdFx0XHRcdCAgICAgIHVuaW9uIGRyYmRfc3RhdGUsXG4tXHRcdFx0XHRcdCAgICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzKTtcbi1cbi1leHRlcm4gZW51bSBkcmJkX3N0YXRlX3J2XG4rZW51bSBkcmJkX3N0YXRlX3J2IGRyYmRfY2hhbmdlX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHRcdFx0ICAgICBlbnVtIGNoZ19zdGF0ZV9mbGFncyBmLFxuK1x0XHRcdFx0ICAgICB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXG4rXHRcdFx0XHQgICAgIHVuaW9uIGRyYmRfc3RhdGUgdmFsKTtcbit2b2lkIGRyYmRfZm9yY2Vfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsIHVuaW9uIGRyYmRfc3RhdGUpO1xuK2VudW0gZHJiZF9zdGF0ZV9ydiBfZHJiZF9yZXF1ZXN0X3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLFxuK1x0XHRcdFx0ICAgICAgIHVuaW9uIGRyYmRfc3RhdGUsIGVudW0gY2hnX3N0YXRlX2ZsYWdzKTtcbitcbitlbnVtIGRyYmRfc3RhdGVfcnZcbiBfZHJiZF9yZXF1ZXN0X3N0YXRlX2hvbGRpbmdfc3RhdGVfbXV0ZXgoc3RydWN0IGRyYmRfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsXG4gXHRcdFx0XHRcdHVuaW9uIGRyYmRfc3RhdGUsIGVudW0gY2hnX3N0YXRlX2ZsYWdzKTtcbiBcbi1leHRlcm4gZW51bSBkcmJkX3N0YXRlX3J2IF9kcmJkX3NldF9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSxcbi1cdFx0XHRcdFx0ICBlbnVtIGNoZ19zdGF0ZV9mbGFncyxcbi1cdFx0XHRcdFx0ICBzdHJ1Y3QgY29tcGxldGlvbiAqZG9uZSk7XG4tZXh0ZXJuIHZvaWQgcHJpbnRfc3RfZXJyKHN0cnVjdCBkcmJkX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLFxuLVx0XHRcdHVuaW9uIGRyYmRfc3RhdGUsIGVudW0gZHJiZF9zdGF0ZV9ydik7XG4rZW51bSBkcmJkX3N0YXRlX3J2IF9kcmJkX3NldF9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSxcbitcdFx0XHRcdCAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzLFxuK1x0XHRcdFx0ICAgc3RydWN0IGNvbXBsZXRpb24gKmRvbmUpO1xuK3ZvaWQgcHJpbnRfc3RfZXJyKHN0cnVjdCBkcmJkX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLCB1bmlvbiBkcmJkX3N0YXRlLFxuK1x0XHQgIGVudW0gZHJiZF9zdGF0ZV9ydik7XG4gXG4gZW51bSBkcmJkX3N0YXRlX3J2XG4gX2Nvbm5fcmVxdWVzdF9zdGF0ZShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssIHVuaW9uIGRyYmRfc3RhdGUgdmFsLFxuQEAgLTE0MSw4ICsxMzgsOCBAQCBlbnVtIGRyYmRfc3RhdGVfcnZcbiBjb25uX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLCB1bmlvbiBkcmJkX3N0YXRlIHZhbCxcbiBcdFx0ICAgZW51bSBjaGdfc3RhdGVfZmxhZ3MgZmxhZ3MpO1xuIFxuLWV4dGVybiB2b2lkIGRyYmRfcmVzdW1lX2FsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gYm9vbCBjb25uX2FsbF92b2xzX3VuY29uZihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbit2b2lkIGRyYmRfcmVzdW1lX2FsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbitib29sIGNvbm5fYWxsX3ZvbHNfdW5jb25mKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xuIFxuIC8qKlxuICAqIGRyYmRfcmVxdWVzdF9zdGF0ZSgpIC0gUmVxdWVzdCBhIHN0YXRlIGNoYW5nZVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3N0YXRlX2NoYW5nZS5oIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGVfY2hhbmdlLmhcbmluZGV4IGE1NmE1N2Q2NzY4NjI5Li5mNThhNTUwMTQxNzdkZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3N0YXRlX2NoYW5nZS5oXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZV9jaGFuZ2UuaFxuQEAgLTQwLDI1ICs0MCwxNyBAQCBzdHJ1Y3QgZHJiZF9zdGF0ZV9jaGFuZ2Uge1xuIFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2Vfc3RhdGVfY2hhbmdlICpwZWVyX2RldmljZXM7XG4gfTtcbiBcbi1leHRlcm4gc3RydWN0IGRyYmRfc3RhdGVfY2hhbmdlICpyZW1lbWJlcl9vbGRfc3RhdGUoc3RydWN0IGRyYmRfcmVzb3VyY2UgKiwgZ2ZwX3QpO1xuLWV4dGVybiB2b2lkIGNvcHlfb2xkX3RvX25ld19zdGF0ZV9jaGFuZ2Uoc3RydWN0IGRyYmRfc3RhdGVfY2hhbmdlICopO1xuLWV4dGVybiB2b2lkIGZvcmdldF9zdGF0ZV9jaGFuZ2Uoc3RydWN0IGRyYmRfc3RhdGVfY2hhbmdlICopO1xuLVxuLWV4dGVybiBpbnQgbm90aWZ5X3Jlc291cmNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLFxuLVx0XHRcdFx0XHQgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0XHQgdm9pZCAqLFxuLVx0XHRcdFx0XHQgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuLWV4dGVybiBpbnQgbm90aWZ5X2Nvbm5lY3Rpb25fc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosXG4tXHRcdFx0XHRcdCAgIHVuc2lnbmVkIGludCxcbi1cdFx0XHRcdFx0ICAgdm9pZCAqLFxuLVx0XHRcdFx0XHQgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7XG4tZXh0ZXJuIGludCBub3RpZnlfZGV2aWNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLFxuLVx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCxcbi1cdFx0XHRcdCAgICAgICB2b2lkICosXG4tXHRcdFx0XHQgICAgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuLWV4dGVybiBpbnQgbm90aWZ5X3BlZXJfZGV2aWNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLFxuLVx0XHRcdFx0XHQgICAgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0XHQgICAgdm9pZCAqLFxuLVx0XHRcdFx0XHQgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuK3N0cnVjdCBkcmJkX3N0YXRlX2NoYW5nZSAqcmVtZW1iZXJfb2xkX3N0YXRlKHN0cnVjdCBkcmJkX3Jlc291cmNlICosIGdmcF90KTtcbit2b2lkIGNvcHlfb2xkX3RvX25ld19zdGF0ZV9jaGFuZ2Uoc3RydWN0IGRyYmRfc3RhdGVfY2hhbmdlICopO1xuK3ZvaWQgZm9yZ2V0X3N0YXRlX2NoYW5nZShzdHJ1Y3QgZHJiZF9zdGF0ZV9jaGFuZ2UgKik7XG4rXG4raW50IG5vdGlmeV9yZXNvdXJjZV9zdGF0ZV9jaGFuZ2Uoc3RydWN0IHNrX2J1ZmYgKiwgdW5zaWduZWQgaW50LCB2b2lkICosXG4rXHRcdFx0XHQgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuK2ludCBub3RpZnlfY29ubmVjdGlvbl9zdGF0ZV9jaGFuZ2Uoc3RydWN0IHNrX2J1ZmYgKiwgdW5zaWduZWQgaW50LCB2b2lkICosXG4rXHRcdFx0XHQgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7XG4raW50IG5vdGlmeV9kZXZpY2Vfc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCwgdm9pZCAqLFxuK1x0XHRcdCAgICAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7XG4raW50IG5vdGlmeV9wZWVyX2RldmljZV9zdGF0ZV9jaGFuZ2Uoc3RydWN0IHNrX2J1ZmYgKiwgdW5zaWduZWQgaW50LCB2b2lkICosXG4rXHRcdFx0XHQgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuIFxuICNlbmRpZiAgLyogRFJCRF9TVEFURV9DSEFOR0VfSCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3dvcmtlci5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfd29ya2VyLmNcbmluZGV4IDA2OTdmOTlmZWQxOGQ3Li42ZmVjNTliYmYwZTlhNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3dvcmtlci5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF93b3JrZXIuY1xuQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBkcmJkX21kX2VuZGlvKHN0cnVjdCBiaW8gKmJpbylcbiAvKiByZWFkcyBvbiBiZWhhbGYgb2YgdGhlIHBhcnRuZXIsXG4gICogXCJzdWJtaXR0ZWRcIiBieSB0aGUgcmVjZWl2ZXJcbiAgKi9cbi1zdGF0aWMgdm9pZCBkcmJkX2VuZGlvX3JlYWRfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpIF9fcmVsZWFzZXMobG9jYWwpXG4rc3RhdGljIHZvaWQgZHJiZF9lbmRpb19yZWFkX3NlY19maW5hbChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwO1xuIFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlID0gcGVlcl9yZXEtXHUwMDNlcGVlcl9kZXZpY2U7XG5AQCAtOTksNyArOTksNyBAQCBzdGF0aWMgdm9pZCBkcmJkX2VuZGlvX3JlYWRfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpIF9fcmVsZVxuIFxuIC8qIHdyaXRlcyBvbiBiZWhhbGYgb2YgdGhlIHBhcnRuZXIsIG9yIHJlc3luYyB3cml0ZXMsXG4gICogXCJzdWJtaXR0ZWRcIiBieSB0aGUgcmVjZWl2ZXIsIGZpbmFsIHN0YWdlLiAgKi9cbi12b2lkIGRyYmRfZW5kaW9fd3JpdGVfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpIF9fcmVsZWFzZXMobG9jYWwpXG4rdm9pZCBkcmJkX2VuZGlvX3dyaXRlX3NlY19maW5hbChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwO1xuIFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlID0gcGVlcl9yZXEtXHUwMDNlcGVlcl9kZXZpY2U7XG5AQCAtMTkyMywxMCArMTkyMyw4IEBAIHN0YXRpYyB2b2lkIGRyYmRfbGRldl9kZXN0cm95KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxuIFx0bGNfZGVzdHJveShkZXZpY2UtXHUwMDNlYWN0X2xvZyk7XG4gXHRkZXZpY2UtXHUwMDNlYWN0X2xvZyA9IE5VTEw7XG4gXG4tXHRfX2FjcXVpcmUobG9jYWwpO1xuIFx0ZHJiZF9iYWNraW5nX2Rldl9mcmVlKGRldmljZSwgZGV2aWNlLVx1MDAzZWxkZXYpO1xuIFx0ZGV2aWNlLVx1MDAzZWxkZXYgPSBOVUxMO1xuLVx0X19yZWxlYXNlKGxvY2FsKTtcbiBcbiBcdGNsZWFyX2JpdChHT0lOR19ESVNLTEVTUywgXHUwMDI2ZGV2aWNlLVx1MDAzZWZsYWdzKTtcbiBcdHdha2VfdXAoXHUwMDI2ZGV2aWNlLVx1MDAzZW1pc2Nfd2FpdCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxOTo0OTo0My4zNjM5NzQ4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA2MTExNDgxOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggQW5hbHlzaXM6IFNwYXJzZSBBbm5vdGF0aW9uIFx1MDAyNiBSZWZhY3RvcmluZyBmb3IgQ29udGV4dCBUcmFja2luZyoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggZm9yIHRoZSBEUkJEIGJsb2NrIGRyaXZlciwgYW5kIHRoZSBjb21taXQgbWVzc2FnZSBpbmRpY2F0ZXMgaXQncyBhIHJlc3BvbnNlIHRvIGEgc3RhdGljIGFuYWx5c2lzIHJlcG9ydCwgc3BlY2lmaWNhbGx5IGZyb20gdGhlIFwic3l6LWNsdXN0ZXJcIi4gTXkgaW5pdGlhbCBnbGFuY2Ugc3VnZ2VzdHMgYSBmb2N1cyBvbiBjbGVhbmluZyB1cCB0aGUgY29kZSBmb3IgYmV0dGVyIHN0YXRpYyBhbmFseXNpcyBjb21wYXRpYmlsaXR5LiBJdCBsb29rcyBsaWtlIGl0IG1vZGlmaWVzIGEgZmV3IGZpbGVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvYmxvY2svZHJiZC9gIGRpcmVjdG9yeS5cblxuVGhlIGZpcnN0IHRoaW5nIHRoYXQgZ3JhYnMgbXkgYXR0ZW50aW9uIGlzIHRoZSBhZGRpdGlvbiBvZiBgQ09OVEVYVF9BTkFMWVNJUyA6PSB5YCB0byB0aGUgYE1ha2VmaWxlYC4gVGhhdCdzIGEgc3Ryb25nIGluZGljYXRvciB0aGF0IHRoZSBwcmltYXJ5IGdvYWwgaXMgdG8gYWRkcmVzcyBjb250ZXh0IHRyYWNraW5nIGlzc3VlcyBmbGFnZ2VkIGJ5IHRoZSBzdGF0aWMgYW5hbHl6ZXIsIGxpa2VseSBTcGFyc2UuICBUaGVuLCBjaGFuZ2VzIGluIGBkcmJkX2JpdG1hcC5jYCByZWFsbHkgaGlnaGxpZ2h0IHRoaXM6IHRoZSBhZGRpdGlvbiBhbmQgcmVtb3ZhbCBvZiBzcGFyc2UgYW5ub3RhdGlvbnMgKGBfX2FjcXVpcmVzYCwgYF9fcmVsZWFzZXNgLCBgX19hY3F1aXJlYCwgYF9fcmVsZWFzZWAsIGBfX211c3RfaG9sZGApLCBhbmQgdGhhdCBgZHJiZF9ibV9sb2NrYCB1cGRhdGUgaXMgYSBnb29kIGV4YW1wbGUuICBUaGUgb3JpZ2luYWwgY29kZSB1c2VkIGBtdXRleF90cnlsb2NrYCBmb2xsb3dlZCBieSBhIGBtdXRleF9sb2NrYCBpZiB0aGUgYHRyeWxvY2tgIGZhaWxlZCwgd2l0aCBhIHdhcm5pbmcuIFRoaXMgcGF0Y2ggc2ltcGx5IHJlcGxhY2VzIHRoZSBgbXV0ZXhfdHJ5bG9ja2Agd2l0aCBhIGRpcmVjdCBgbXV0ZXhfbG9ja2AgYWxvbmcgd2l0aCB0aGUgYXBwcm9wcmlhdGUgYF9fYWNxdWlyZWAgYW5ub3RhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudDsgaXQgc2ltcGxpZmllcyB0aGUgY29kZSBhbmQgcmVkdWNlcyBhIHNwdXJpb3VzIHdhcm5pbmcuIFRoZXJlJ3MgYWxzbyB0aGUgcmVtb3ZhbCBvZiBgaWYgKCFiKWAgY2hlY2tzIGluIGBkcmJkX2JtX2xvY2tgIGFuZCBgZHJiZF9ibV91bmxvY2tgLiAgVGhpcyAqY291bGQqIGJlIGEgYnVnIGlmIGBiYCBjYW4gYmUgYE5VTExgIHVuZGVyIGFueSBjaXJjdW1zdGFuY2UuIEhvd2V2ZXIsIGl0J3MgdmVyeSBsaWtlbHkgdGhhdCB0aGlzIGNoZWNrIHdhcyBkZWZlbnNpdmUgYW5kIHRoZSBhdXRob3IgZmVsdCBpdCB3YXMgbm90IG5lY2Vzc2FyeS5cblxuTW92aW5nIG9uIHRvIGBkcmJkX25sLmNgLCB0aGVyZSdzIHNvbWUgcmVmYWN0b3JpbmcgaW4gYGRyYmRfbmxfZ2V0X2Nvbm5lY3Rpb25zX2R1bXBpdGAuIEkgc2VlIHRoZSBgZ290byBwdXRfcmVzdWx0YCByZXBsYWNlZCB3aXRoIGNvbmRpdGlvbmFsIGxvZ2ljIHRvIGhhbmRsZSB0aGUgcmVzb3VyY2Ugbm90IGZvdW5kIGNhc2UuIFRoaXMgaXMgZnVuY3Rpb25hbGx5IGlkZW50aWNhbCwganVzdCBtb3JlIGV4cGxpY2l0IGFib3V0IHRoZSBlcnJvciBwYXRoLiBUaGUgcGF0dGVybiBjb250aW51ZXMsIHdpdGggYF9fbXVzdF9ob2xkYCBhbmQgb3RoZXIgYW5ub3RhdGlvbnMgYWRkZWQgYW5kIHJlbW92ZWQgaW4gdGhlIGNvZGUgdG8gc2F0aXNmeSBzcGFyc2UuXG5cbkFmdGVyIGEgdGhvcm91Z2ggcmV2aWV3IG9mIHRoZSBjb2RlIGRpZmYsIHRoZSBjaGFuZ2VzIGluIGBkcmJkX3JlcV9zdGF0ZWAgc2VlbSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudC4gSXTigJlzIGp1c3QgcmVmYWN0b3JpbmcgdG8gYXZvaWQgY29uZGl0aW9uYWwgbG9ja2luZywgd2hpY2gsIGFnYWluLCBTcGFyc2UgZG9lc24ndCBsaWtlLiBUaGUgYWRkaXRpb24gb2YgYGNvbnRleHRfdW5zYWZlYCBhcm91bmQgYSBmZXcgYmxvY2tzIGFsc28gc3VnZ2VzdHMgaGFuZGxpbmcgbmVzdGVkIGxvY2tpbmcgc2NlbmFyaW9zLCBhbmQgdGhlIGBDT05URVhUX0FOQUxZU0lTIDo9IHlgIGluIHRoZSBgTWFrZWZpbGVgIGNvbmZpcm1zIHRoYXQgY29udGV4dCBhbmFseXNpcyBpcyBlbmFibGVkLiBUaGlzIGxpa2VseSB1c2VzIGEgbWFjcm8gZGVmaW5lZCBzb21ld2hlcmUsIG5vdCBhbiBhY3R1YWwga2VybmVsIGZ1bmN0aW9uLiAgSSBhbSBkaWdnaW5nIGludG8gYGRyYmRfbWFpbi5jYCB3aGVyZSB0aGUgaW5saW5lIGZ1bmN0aW9ucyB3ZXJlIHJlc3RvcmVkIGFmdGVyIHRoZSBgI2lmZGVmIF9fQ0hFQ0tFUl9fYC5cblxuVGhpcyBwYXRjaCBpcyBlc3NlbnRpYWxseSBhIHJlZmFjdG9yaW5nIGVmZm9ydCB0byBtYWtlIHRoZSBjb2RlIGNvbXBseSB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YgdGhlIHN0YXRpYyBhbmFseXNpcyB0b29sLCBsaWtlbHkgU3BhcnNlLiBJdCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGZlYXR1cmVzIG9yIGFueSBjaGFuZ2UgdG8gZnVuZGFtZW50YWwgbG9naWMgdGhhdCB3b3VsZCB3YXJyYW50IGEgZGVlcCBmdXp6aW5nIGNhbXBhaWduLiBUaGUgY2hhbmdlcyBhcmUgYWxtb3N0IHB1cmVseSBhYm91dCBnZXR0aW5nIHRoZSBjb2RlIHRvIFwiY2hlY2sgb3V0XCIgd2l0aCBTcGFyc2UuIFJlbW92aW5nIHRoZSBgaWYgKCFiKWAgY2hlY2tzIGluIGBkcmJkX2JtX2xvY2tgIGFuZCBgZHJiZF9ibV91bmxvY2tgLCBpcyBhIHBvc3NpYmxlIGJ1Zy4gSG93ZXZlciwgaXQgaXMgdW5saWtlbHkgdGhpcyBjaGVjayBpcyByZWFjaGVkLCBpdCBpcyBkZWZlbnNpdmUgYW5kIG5vdCBuZWNlc3NhcnkuXG5cblNvLCBpbiBzdW1tYXJ5LCBJJ20gY29uZmlkZW50IHRoYXQgdGhpcyBpcyBhIHBhdGNoIGFpbWVkIGF0IGltcHJvdmluZyB0aGUgY29kZSdzIHN0YXRpYyBhbmFseXNpcyBwcm9wZXJ0aWVzIGFuZCB3b3VsZCBub3QgYmUgd29ydGggZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg3OTYsIk91dHB1dFRva2VucyI6MTM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE5OjUwOjIzLjk3NTEyNTA0OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaXMgYSBsYXJnZSByZWZhY3RvcmluZyBhaW1lZCBhdCBmaXhpbmcgc3BhcnNlIHdhcm5pbmdzLiBJdCByZW1vdmVzIGBleHRlcm5gIGZyb20gZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluIGhlYWRlcnMsIHJlbW92ZXMgY3VzdG9tIHNwYXJzZSBhbm5vdGF0aW9ucyBsaWtlIGBfX211c3RfaG9sZChsb2NhbClgLCBgX19hY3F1aXJlKGxvY2FsKWAsIGBfX3JlbGVhc2UobG9jYWwpYCwgYW5kIHJlZmFjdG9ycyBjb2RlIHRvIGF2b2lkIGNvbmRpdGlvbmFsIGxvY2tpbmcgKGUuZy4gYGRyYmRfcmVxX3N0YXRlYCkuIEl0IGFsc28gcmVtb3ZlcyBhIGZldyBkZWZlbnNpdmUgTlVMTCBjaGVja3MgYW5kIGEgd2FybmluZyBvbiBsb2NrIGNvbnRlbnRpb24gaW4gYGRyYmRfYm1fbG9ja2AuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUgbG9naWMgdGhhdCB3b3VsZCByZXF1aXJlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIGxhcmdlIHJlZmFjdG9yaW5nIGFpbWVkIGF0IGZpeGluZyBzcGFyc2Ugd2FybmluZ3MuIEl0IHJlbW92ZXMgYGV4dGVybmAgZnJvbSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW4gaGVhZGVycywgcmVtb3ZlcyBjdXN0b20gc3BhcnNlIGFubm90YXRpb25zIGxpa2UgYF9fbXVzdF9ob2xkKGxvY2FsKWAsIGBfX2FjcXVpcmUobG9jYWwpYCwgYF9fcmVsZWFzZShsb2NhbClgLCBhbmQgcmVmYWN0b3JzIGNvZGUgdG8gYXZvaWQgY29uZGl0aW9uYWwgbG9ja2luZyAoZS5nLiBgZHJiZF9yZXFfc3RhdGVgKS4gSXQgYWxzbyByZW1vdmVzIGEgZmV3IGRlZmVuc2l2ZSBOVUxMIGNoZWNrcyBhbmQgYSB3YXJuaW5nIG9uIGxvY2sgY29udGVudGlvbiBpbiBgZHJiZF9ibV9sb2NrYC4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29yZSBsb2dpYyB0aGF0IHdvdWxkIHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowghd2g[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-10 19:30:18 +0000 UTC FinishedAt: 2026-07-10 19:50:25 +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+CgkJCTx0ZD4yMDI2LzA3LzEwIDE5OjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgbGFyZ2UgcmVmYWN0b3JpbmcgYWltZWQgYXQgZml4aW5nIHNwYXJzZSB3YXJuaW5ncy4gSXQgcmVtb3ZlcyBgZXh0ZXJuYCBmcm9tIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBpbiBoZWFkZXJzLCByZW1vdmVzIGN1c3RvbSBzcGFyc2UgYW5ub3RhdGlvbnMgbGlrZSBgX19tdXN0X2hvbGQobG9jYWwpYCwgYF9fYWNxdWlyZShsb2NhbClgLCBgX19yZWxlYXNlKGxvY2FsKWAsIGFuZCByZWZhY3RvcnMgY29kZSB0byBhdm9pZCBjb25kaXRpb25hbCBsb2NraW5nIChlLmcuIGBkcmJkX3JlcV9zdGF0ZWApLiBJdCBhbHNvIHJlbW92ZXMgYSBmZXcgZGVmZW5zaXZlIE5VTEwgY2hlY2tzIGFuZCBhIHdhcm5pbmcgb24gbG9jayBjb250ZW50aW9uIGluIGBkcmJkX2JtX2xvY2tgLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIGxvZ2ljIHRoYXQgd291bGQgcmVxdWlyZSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxOTo0OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ1YmI0YTgwZGM5NTM4ZDkzY2M5Zjk1ZWU1MTc0ODcwYjAwY2RhZDFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxMCAxOTo0OTo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvTWFrZWZpbGUgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvTWFrZWZpbGVcbmluZGV4IDVmYWFhOGE4ZTdmMDI5Li5jYWU2NTU3ODAwMWJjNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9kcmJkL01ha2VmaWxlXG5AQCAtMSw0ICYjNDM7MSw3IEBAXG4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4mIzQzO1xuJiM0MztDT05URVhUX0FOQUxZU0lTIDo9IHlcbiYjNDM7XG4gZHJiZC15IDo9IGRyYmRfYnVpbGR0YWcubyBkcmJkX2JpdG1hcC5vIGRyYmRfcHJvYy5vXG4gZHJiZC15ICYjNDM7PSBkcmJkX3dvcmtlci5vIGRyYmRfcmVjZWl2ZXIubyBkcmJkX3JlcS5vIGRyYmRfYWN0bG9nLm9cbiBkcmJkLXkgJiM0Mzs9IGRyYmRfbWFpbi5vIGRyYmRfc3RyaW5ncy5vIGRyYmRfbmwub1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2JpdG1hcC5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYml0bWFwLmNcbmluZGV4IDY1ZWE2ZWM2NmJmZDVjLi5kODQ5YmQ3ODBjYTk2NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2JpdG1hcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9iaXRtYXAuY1xuQEAgLTEyMiwyNCAmIzQzOzEyMiwxMyBAQCBzdGF0aWMgdm9pZCBfX2JtX3ByaW50X2xvY2tfaW5mbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqZnVuYylcbiB9XG4gXG4gdm9pZCBkcmJkX2JtX2xvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNoYXIgKndoeSwgZW51bSBibV9mbGFnIGZsYWdzKVxuJiM0MztcdF9fYWNxdWlyZXMoZHJiZF9kZXZfYm1fbG9jaylcbiYjNDM7XHRfX2FjcXVpcmVzKFx1MDAyNmRldmljZS1cdTAwM2ViaXRtYXAtXHUwMDNlYm1fY2hhbmdlKVxuIHtcbiBcdHN0cnVjdCBkcmJkX2JpdG1hcCAqYiA9IGRldmljZS1cdTAwM2ViaXRtYXA7XG4tXHRpbnQgdHJ5bG9ja19mYWlsZWQ7XG4gXG4tXHRpZiAoIWIpIHtcbi1cdFx0ZHJiZF9lcnIoZGV2aWNlLCBcJiMzNDtGSVhNRSBubyBiaXRtYXAgaW4gZHJiZF9ibV9sb2NrIT9cXG5cJiMzNDspO1xuLVx0XHRyZXR1cm47XG4tXHR9XG4tXG4tXHR0cnlsb2NrX2ZhaWxlZCA9ICFtdXRleF90cnlsb2NrKFx1MDAyNmItXHUwMDNlYm1fY2hhbmdlKTtcbi1cbi1cdGlmICh0cnlsb2NrX2ZhaWxlZCkge1xuLVx0XHRkcmJkX3dhcm4oZGV2aWNlLCBcJiMzNDslc1slZF0gZ29pbmcgdG8gJiMzOTslcyYjMzk7IGJ1dCBiaXRtYXAgYWxyZWFkeSBsb2NrZWQgZm9yICYjMzk7JXMmIzM5OyBieSAlc1slZF1cXG5cJiMzNDssXG4tXHRcdFx0ICBjdXJyZW50LVx1MDAzZWNvbW0sIHRhc2tfcGlkX25yKGN1cnJlbnQpLFxuLVx0XHRcdCAgd2h5LCBiLVx1MDAzZWJtX3doeSA/OiBcJiMzNDs/XCYjMzQ7LFxuLVx0XHRcdCAgYi1cdTAwM2VibV90YXNrLVx1MDAzZWNvbW0sIHRhc2tfcGlkX25yKGItXHUwMDNlYm1fdGFzaykpO1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNmItXHUwMDNlYm1fY2hhbmdlKTtcbi1cdH1cbiYjNDM7XHRfX2FjcXVpcmUoZHJiZF9kZXZfYm1fbG9jayk7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZiLVx1MDAzZWJtX2NoYW5nZSk7XG4gXHRpZiAoQk1fTE9DS0VEX01BU0sgXHUwMDI2IGItXHUwMDNlYm1fZmxhZ3MpXG4gXHRcdGRyYmRfZXJyKGRldmljZSwgXCYjMzQ7RklYTUUgYml0bWFwIGFscmVhZHkgbG9ja2VkIGluIGJtX2xvY2tcXG5cJiMzNDspO1xuIFx0Yi1cdTAwM2VibV9mbGFncyB8PSBmbGFncyBcdTAwMjYgQk1fTE9DS0VEX01BU0s7XG5AQCAtMTQ5LDEyICYjNDM7MTM4LDEwIEBAIHZvaWQgZHJiZF9ibV9sb2NrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncylcbiB9XG4gXG4gdm9pZCBkcmJkX2JtX3VubG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbiYjNDM7XHRfX3JlbGVhc2VzKGRyYmRfZGV2X2JtX2xvY2spXG4mIzQzO1x0X19yZWxlYXNlcyhcdTAwMjZkZXZpY2UtXHUwMDNlYml0bWFwLVx1MDAzZWJtX2NoYW5nZSlcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9iaXRtYXAgKmIgPSBkZXZpY2UtXHUwMDNlYml0bWFwO1xuLVx0aWYgKCFiKSB7XG4tXHRcdGRyYmRfZXJyKGRldmljZSwgXCYjMzQ7RklYTUUgbm8gYml0bWFwIGluIGRyYmRfYm1fdW5sb2NrIT9cXG5cJiMzNDspO1xuLVx0XHRyZXR1cm47XG4tXHR9XG4gXG4gXHRpZiAoIShCTV9MT0NLRURfTUFTSyBcdTAwMjYgZGV2aWNlLVx1MDAzZWJpdG1hcC1cdTAwM2VibV9mbGFncykpXG4gXHRcdGRyYmRfZXJyKGRldmljZSwgXCYjMzQ7RklYTUUgYml0bWFwIG5vdCBsb2NrZWQgaW4gYm1fdW5sb2NrXFxuXCYjMzQ7KTtcbkBAIC0xNjMsNiAmIzQzOzE1MCw3IEBAIHZvaWQgZHJiZF9ibV91bmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXG4gXHRiLVx1MDAzZWJtX3doeSAgPSBOVUxMO1xuIFx0Yi1cdTAwM2VibV90YXNrID0gTlVMTDtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZiLVx1MDAzZWJtX2NoYW5nZSk7XG4mIzQzO1x0X19yZWxlYXNlKGRyYmRfZGV2X2JtX2xvY2spO1xuIH1cbiBcbiAvKiB3ZSBzdG9yZSBzb21lIFwmIzM0O21ldGFcJiMzNDsgaW5mbyBhYm91dCBvdXIgcGFnZXMgaW4gcGFnZS1cdTAwM2Vwcml2YXRlICovXG5AQCAtOTg3LDcgJiM0Mzs5NzUsNyBAQCBzdGF0aWMgaW5saW5lIHNlY3Rvcl90IGRyYmRfbWRfbGFzdF9iaXRtYXBfc2VjdG9yKHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2KVxuIFx0fVxuIH1cbiBcbi1zdGF0aWMgdm9pZCBibV9wYWdlX2lvX2FzeW5jKHN0cnVjdCBkcmJkX2JtX2Fpb19jdHggKmN0eCwgaW50IHBhZ2VfbnIpIF9fbXVzdF9ob2xkKGxvY2FsKVxuJiM0MztzdGF0aWMgdm9pZCBibV9wYWdlX2lvX2FzeW5jKHN0cnVjdCBkcmJkX2JtX2Fpb19jdHggKmN0eCwgaW50IHBhZ2VfbnIpXG4ge1xuIFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBjdHgtXHUwMDNlZGV2aWNlO1xuIFx0ZW51bSByZXFfb3Agb3AgPSBjdHgtXHUwMDNlZmxhZ3MgXHUwMDI2IEJNX0FJT19SRUFEID8gUkVRX09QX1JFQUQgOiBSRVFfT1BfV1JJVEU7XG5AQCAtMTA2MCw3ICYjNDM7MTA0OCw4IEBAIHN0YXRpYyB2b2lkIGJtX3BhZ2VfaW9fYXN5bmMoc3RydWN0IGRyYmRfYm1fYWlvX2N0eCAqY3R4LCBpbnQgcGFnZV9ucikgX19tdXN0X2hvXG4gLypcbiAgKiBibV9ydzogcmVhZC93cml0ZSB0aGUgd2hvbGUgYml0bWFwIGZyb20vdG8gaXRzIG9uIGRpc2sgbG9jYXRpb24uXG4gICovXG4tc3RhdGljIGludCBibV9ydyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgdW5zaWduZWQgaW50IGZsYWdzLCB1bnNpZ25lZCBsYXp5X3dyaXRlb3V0X3VwcGVyX2lkeCkgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO3N0YXRpYyBpbnQgYm1fcncoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IHVuc2lnbmVkIGludCBmbGFncyxcbiYjNDM7XHRcdCB1bnNpZ25lZCBsYXp5X3dyaXRlb3V0X3VwcGVyX2lkeClcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9ibV9haW9fY3R4ICpjdHg7XG4gXHRzdHJ1Y3QgZHJiZF9iaXRtYXAgKmIgPSBkZXZpY2UtXHUwMDNlYml0bWFwO1xuQEAgLTEyMTUsNyAmIzQzOzEyMDQsNyBAQCBzdGF0aWMgaW50IGJtX3J3KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHVuc2lnbmVkXG4gICogQGRldmljZTpcdERSQkQgZGV2aWNlLlxuICAqL1xuIGludCBkcmJkX2JtX3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxuJiM0MztcdFx0IHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcbiBcbiB7XG4gXHRyZXR1cm4gYm1fcncoZGV2aWNlLCBCTV9BSU9fUkVBRCwgMCk7XG5AQCAtMTIyOCw3ICYjNDM7MTIxNyw3IEBAIGludCBkcmJkX2JtX3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4gICogV2lsbCBvbmx5IHdyaXRlIHBhZ2VzIHRoYXQgaGF2ZSBjaGFuZ2VkIHNpbmNlIGxhc3QgSU8uXG4gICovXG4gaW50IGRyYmRfYm1fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxuJiM0MztcdFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXG4ge1xuIFx0cmV0dXJuIGJtX3J3KGRldmljZSwgMCwgMCk7XG4gfVxuQEAgLTEyNDAsNyAmIzQzOzEyMjksNyBAQCBpbnQgZHJiZF9ibV93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiAgKiBXaWxsIHdyaXRlIGFsbCBwYWdlcy5cbiAgKi9cbiBpbnQgZHJiZF9ibV93cml0ZV9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO1x0XHQgICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXG4ge1xuIFx0cmV0dXJuIGJtX3J3KGRldmljZSwgQk1fQUlPX1dSSVRFX0FMTF9QQUdFUywgMCk7XG4gfVxuQEAgLTEyNTAsNyAmIzQzOzEyMzksNyBAQCBpbnQgZHJiZF9ibV93cml0ZV9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4gICogQGRldmljZTpcdERSQkQgZGV2aWNlLlxuICAqIEB1cHBlcl9pZHg6XHQwOiB3cml0ZSBhbGwgY2hhbmdlZCBwYWdlczsgJiM0Mzt2ZTogcGFnZSBpbmRleCB0byBzdG9wIHNjYW5uaW5nIGZvciBjaGFuZ2VkIHBhZ2VzXG4gICovXG4taW50IGRyYmRfYm1fd3JpdGVfbGF6eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgdXBwZXJfaWR4KSBfX211c3RfaG9sZChsb2NhbClcbiYjNDM7aW50IGRyYmRfYm1fd3JpdGVfbGF6eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgdXBwZXJfaWR4KVxuIHtcbiBcdHJldHVybiBibV9ydyhkZXZpY2UsIEJNX0FJT19DT1BZX1BBR0VTLCB1cHBlcl9pZHgpO1xuIH1cbkBAIC0xMjY3LDcgJiM0MzsxMjU2LDcgQEAgaW50IGRyYmRfYm1fd3JpdGVfbGF6eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgdXBwZXJfaWR4KSBfX211c3RfaG9cbiAgKiBwZW5kaW5nIHJlc3luYyBhY2tzIGFyZSBzdGlsbCBiZWluZyBwcm9jZXNzZWQuXG4gICovXG4gaW50IGRyYmRfYm1fd3JpdGVfY29weV9wYWdlcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXG4ge1xuIFx0cmV0dXJuIGJtX3J3KGRldmljZSwgQk1fQUlPX0NPUFlfUEFHRVMsIDApO1xuIH1cbkBAIC0xMjc2LDcgJiM0MzsxMjY1LDcgQEAgaW50IGRyYmRfYm1fd3JpdGVfY29weV9wYWdlcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiAgKiBkcmJkX2JtX3dyaXRlX2hpbnRlZCgpIC0gV3JpdGUgYml0bWFwIHBhZ2VzIHdpdGggXCYjMzQ7aGludFwmIzM0OyBtYXJrcywgaWYgdGhleSBoYXZlIGNoYW5nZWQuXG4gICogQGRldmljZTpcdERSQkQgZGV2aWNlLlxuICAqL1xuLWludCBkcmJkX2JtX3dyaXRlX2hpbnRlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO2ludCBkcmJkX2JtX3dyaXRlX2hpbnRlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbiB7XG4gXHRyZXR1cm4gYm1fcncoZGV2aWNlLCBCTV9BSU9fV1JJVEVfSElOVEVEIHwgQk1fQUlPX0NPUFlfUEFHRVMsIDApO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9jb25maWcuaCBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2NvbmZpZy5oXG5pbmRleCBkMjE1MzY1YzZiYjFiMC4uMTZhOTg1YjMwZGQzZmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9jb25maWcuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfY29uZmlnLmhcbkBAIC03LDcgJiM0Mzs3LDcgQEBcbiAjaWZuZGVmIERSQkRfQ09ORklHX0hcbiAjZGVmaW5lIERSQkRfQ09ORklHX0hcbiBcbi1leHRlcm4gY29uc3QgY2hhciAqZHJiZF9idWlsZHRhZyh2b2lkKTtcbiYjNDM7Y29uc3QgY2hhciAqZHJiZF9idWlsZHRhZyh2b2lkKTtcbiBcbiAjZGVmaW5lIFJFTF9WRVJTSU9OIFwmIzM0OzguNC4xMVwmIzM0O1xuICNkZWZpbmUgUFJPX1ZFUlNJT05fTUlOIDg2XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50LmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9pbnQuaFxuaW5kZXggNDhiNDVjMzE0MmY3NmEuLjczY2VhYWIzODQyZDBlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludC5oXG5AQCAtMTA5LDcgJiM0MzsxMDksNyBAQCBleHRlcm4gc3RydWN0IHJhdGVsaW1pdF9zdGF0ZSBkcmJkX3JhdGVsaW1pdF9zdGF0ZTtcbiBleHRlcm4gc3RydWN0IGlkciBkcmJkX2RldmljZXM7IC8qIFJDVSwgdXBkYXRlczogZ2VubF9sb2NrKCkgKi9cbiBleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBkcmJkX3Jlc291cmNlczsgLyogUkNVLCB1cGRhdGVzOiBnZW5sX2xvY2soKSAqL1xuIFxuLWV4dGVybiBjb25zdCBjaGFyICpjbWRuYW1lKGVudW0gZHJiZF9wYWNrZXQgY21kKTtcbiYjNDM7Y29uc3QgY2hhciAqY21kbmFtZShlbnVtIGRyYmRfcGFja2V0IGNtZCk7XG4gXG4gLyogZm9yIHNlbmRpbmcvcmVjZWl2aW5nIHRoZSBiaXRtYXAsXG4gICogcG9zc2libHkgaW4gc29tZSBlbmNvZGluZyBzY2hlbWUgKi9cbkBAIC0xMjksOCAmIzQzOzEyOSw4IEBAIHN0cnVjdCBibV94ZmVyX2N0eCB7XG4gXHR1bnNpZ25lZCBieXRlc1syXTtcbiB9O1xuIFxuLWV4dGVybiB2b2lkIElORk9fYm1feGZlcl9zdGF0cyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsXG4tXHRcdFx0ICAgICAgIGNvbnN0IGNoYXIgKmRpcmVjdGlvbiwgc3RydWN0IGJtX3hmZXJfY3R4ICpjKTtcbiYjNDM7dm9pZCBJTkZPX2JtX3hmZXJfc3RhdHMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLFxuJiM0MztcdFx0XHRjb25zdCBjaGFyICpkaXJlY3Rpb24sIHN0cnVjdCBibV94ZmVyX2N0eCAqYyk7XG4gXG4gc3RhdGljIGlubGluZSB2b2lkIGJtX3hmZXJfY3R4X2JpdF90b193b3JkX29mZnNldChzdHJ1Y3QgYm1feGZlcl9jdHggKmMpXG4ge1xuQEAgLTE1MSw3ICYjNDM7MTUxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGJtX3hmZXJfY3R4X2JpdF90b193b3JkX29mZnNldChzdHJ1Y3QgYm1feGZlcl9jdHggKmMpXG4gI2VuZGlmXG4gfVxuIFxuLWV4dGVybiB1bnNpZ25lZCBpbnQgZHJiZF9oZWFkZXJfc2l6ZShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbiYjNDM7dW5zaWduZWQgaW50IGRyYmRfaGVhZGVyX3NpemUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4gXG4gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gZW51bSBkcmJkX3RocmVhZF9zdGF0ZSB7XG5AQCAtMTk1LDEwICYjNDM7MTk1LDEwIEBAIHN0cnVjdCBkcmJkX2RldmljZV93b3JrIHtcbiBcbiAjaW5jbHVkZSBcJiMzNDtkcmJkX2ludGVydmFsLmhcJiMzNDtcbiBcbi1leHRlcm4gaW50IGRyYmRfd2FpdF9taXNjKHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqKTtcbiYjNDM7ZXh0ZXJuIHN0cnVjdCBtdXRleCByZXNvdXJjZXNfbXV0ZXg7XG4gXG4tZXh0ZXJuIHZvaWQgbG9ja19hbGxfcmVzb3VyY2VzKHZvaWQpO1xuLWV4dGVybiB2b2lkIHVubG9ja19hbGxfcmVzb3VyY2VzKHZvaWQpO1xuJiM0Mzt2b2lkIGxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKSBfX2FjcXVpcmVzKFx1MDAyNnJlc291cmNlc19tdXRleCk7XG4mIzQzO3ZvaWQgdW5sb2NrX2FsbF9yZXNvdXJjZXModm9pZCkgX19yZWxlYXNlcyhcdTAwMjZyZXNvdXJjZXNfbXV0ZXgpO1xuIFxuIHN0cnVjdCBkcmJkX3JlcXVlc3Qge1xuIFx0c3RydWN0IGRyYmRfd29yayB3O1xuQEAgLTU1OSw3ICYjNDM7NTU5LDcgQEAgc3RydWN0IGZpZm9fYnVmZmVyIHtcbiBcdGludCB0b3RhbDsgLyogc3VtIG9mIGFsbCB2YWx1ZXMgKi9cbiBcdGludCB2YWx1ZXNbXSBfX2NvdW50ZWRfYnkoc2l6ZSk7XG4gfTtcbi1leHRlcm4gc3RydWN0IGZpZm9fYnVmZmVyICpmaWZvX2FsbG9jKHVuc2lnbmVkIGludCBmaWZvX3NpemUpO1xuJiM0MztzdHJ1Y3QgZmlmb19idWZmZXIgKmZpZm9fYWxsb2ModW5zaWduZWQgaW50IGZpZm9fc2l6ZSk7XG4gXG4gLyogZmxhZyBiaXRzIHBlciBjb25uZWN0aW9uICovXG4gZW51bSB7XG5AQCAtOTk4LDkzICYjNDM7OTk4LDEwNCBAQCBlbnVtIGRkc19mbGFncyB7XG4gXHRERFNGX05PX1JFU1lOQyA9IDIsIC8qIERvIG5vdCBydW4gYSByZXN5bmMgZm9yIHRoZSBuZXcgc3BhY2UgKi9cbiB9O1xuIFxuLWV4dGVybiB2b2lkIGRyYmRfaW5pdF9zZXRfZGVmYXVsdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiBpbnQgIGRyYmRfdGhyZWFkX3N0YXJ0KHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTtcbi1leHRlcm4gdm9pZCBfZHJiZF90aHJlYWRfc3RvcChzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSwgaW50IHJlc3RhcnQsIGludCB3YWl0KTtcbiYjNDM7dm9pZCBkcmJkX2luaXRfc2V0X2RlZmF1bHRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbiYjNDM7aW50IGRyYmRfdGhyZWFkX3N0YXJ0KHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTtcbiYjNDM7dm9pZCBfZHJiZF90aHJlYWRfc3RvcChzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSwgaW50IHJlc3RhcnQsIGludCB3YWl0KTtcbiAjaWZkZWYgQ09ORklHX1NNUFxuLWV4dGVybiB2b2lkIGRyYmRfdGhyZWFkX2N1cnJlbnRfc2V0X2NwdShzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7XG4mIzQzO3ZvaWQgZHJiZF90aHJlYWRfY3VycmVudF9zZXRfY3B1KHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTtcbiAjZWxzZVxuICNkZWZpbmUgZHJiZF90aHJlYWRfY3VycmVudF9zZXRfY3B1KEEpICh7fSlcbiAjZW5kaWZcbi1leHRlcm4gdm9pZCB0bF9yZWxlYXNlKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwgdW5zaWduZWQgaW50IGJhcnJpZXJfbnIsXG4tXHRcdCAgICAgICB1bnNpZ25lZCBpbnQgc2V0X3NpemUpO1xuLWV4dGVybiB2b2lkIHRsX2NsZWFyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9mcmVlX3NvY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgc3RydWN0IHNvY2tldCAqc29jayxcbi1cdFx0ICAgICB2b2lkICpidWYsIHNpemVfdCBzaXplLCB1bnNpZ25lZCBtc2dfZmxhZ3MpO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kX2FsbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHN0cnVjdCBzb2NrZXQgKiwgdm9pZCAqLCBzaXplX3QsXG4tXHRcdFx0IHVuc2lnbmVkKTtcbi1cbi1leHRlcm4gaW50IF9fZHJiZF9zZW5kX3Byb3RvY29sKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGVudW0gZHJiZF9wYWNrZXQgY21kKTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9wcm90b2NvbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF91dWlkcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF91dWlkc19za2lwX2luaXRpYWxfc3luYyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcbi1leHRlcm4gdm9pZCBkcmJkX2dlbl9hbmRfc2VuZF9zeW5jX3V1aWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfc2l6ZXMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgaW50IHRyaWdnZXJfcmVwbHksIGVudW0gZGRzX2ZsYWdzIGZsYWdzKTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9zdGF0ZShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlIHMpO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kX2N1cnJlbnRfc3RhdGUoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfc3luY19wYXJhbShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcbi1leHRlcm4gdm9pZCBkcmJkX3NlbmRfYl9hY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdTMyIGJhcnJpZXJfbnIsXG4tXHRcdFx0ICAgIHUzMiBzZXRfc2l6ZSk7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfYWNrKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsXG4tXHRcdFx0IHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqKTtcbi1leHRlcm4gdm9pZCBkcmJkX3NlbmRfYWNrX3JwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsXG4tXHRcdFx0ICAgICBzdHJ1Y3QgcF9ibG9ja19yZXEgKnJwKTtcbi1leHRlcm4gdm9pZCBkcmJkX3NlbmRfYWNrX2RwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsXG4tXHRcdFx0ICAgICBzdHJ1Y3QgcF9kYXRhICpkcCwgaW50IGRhdGFfc2l6ZSk7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfYWNrX2V4KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsXG4tXHRcdFx0ICAgIHNlY3Rvcl90IHNlY3RvciwgaW50IGJsa3NpemUsIHU2NCBibG9ja19pZCk7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfb3V0X29mX3N5bmMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc3RydWN0IGRyYmRfcmVxdWVzdCAqKTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9ibG9jayhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuLVx0XHRcdCAgIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqKTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9kYmxvY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9kcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBpbnQgY21kLFxuLVx0XHRcdCAgICAgIHNlY3Rvcl90IHNlY3RvciwgaW50IHNpemUsIHU2NCBibG9ja19pZCk7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfZHJlcXVlc3RfY3N1bShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzZWN0b3JfdCBzZWN0b3IsXG4tXHRcdFx0XHQgICBpbnQgc2l6ZSwgdm9pZCAqZGlnZXN0LCBpbnQgZGlnZXN0X3NpemUsXG4tXHRcdFx0XHQgICBlbnVtIGRyYmRfcGFja2V0IGNtZCk7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfb3ZfcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplKTtcbi1cbi1leHRlcm4gaW50IGRyYmRfc2VuZF9iaXRtYXAoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9zZW5kX3NyX3JlcGx5KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9zdGF0ZV9ydiByZXRjb2RlKTtcbi1leHRlcm4gdm9pZCBjb25uX3NlbmRfc3JfcmVwbHkoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgZW51bSBkcmJkX3N0YXRlX3J2IHJldGNvZGUpO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kX3JzX2RlYWxsb2NhdGVkKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqKTtcbi1leHRlcm4gdm9pZCBkcmJkX2JhY2tpbmdfZGV2X2ZyZWUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpsZGV2KTtcbi1leHRlcm4gdm9pZCBkcmJkX2RldmljZV9jbGVhbnVwKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gdm9pZCBkcmJkX3ByaW50X3V1aWRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCBjaGFyICp0ZXh0KTtcbi1leHRlcm4gdm9pZCBkcmJkX3F1ZXVlX3VucGx1ZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tXG4tZXh0ZXJuIHZvaWQgY29ubl9tZF9zeW5jKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xuLWV4dGVybiB2b2lkIGRyYmRfbWRfd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHZvaWQgKmJ1ZmZlcik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9tZF9zeW5jKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gaW50ICBkcmJkX21kX3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2KTtcbi1leHRlcm4gdm9pZCBkcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCk7XG4tZXh0ZXJuIHZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gdm9pZCBkcmJkX3V1aWRfbmV3X2N1cnJlbnQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gdm9pZCBkcmJkX3V1aWRfc2V0X2JtKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpO1xuLWV4dGVybiB2b2lkIF9fZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpO1xuLWV4dGVybiB2b2lkIGRyYmRfbWRfc2V0X2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFncykgX19tdXN0X2hvbGQobG9jYWwpO1xuLWV4dGVybiB2b2lkIGRyYmRfbWRfY2xlYXJfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWdzKV9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gaW50IGRyYmRfbWRfdGVzdF9mbGFnKHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICosIGludCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9tZF9tYXJrX2RpcnR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gdm9pZCBkcmJkX3F1ZXVlX2JpdG1hcF9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0XHRcdCBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopLFxuLVx0XHRcdFx0IHZvaWQgKCpkb25lKShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgaW50KSxcbi1cdFx0XHRcdCBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncyxcbi1cdFx0XHRcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuLWV4dGVybiBpbnQgZHJiZF9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdGludCAoKmlvX2ZuKShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiksXG4tXHRcdGNoYXIgKndoeSwgZW51bSBibV9mbGFnIGZsYWdzLFxuLVx0XHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuLWV4dGVybiBpbnQgZHJiZF9iaXRtYXBfaW9fZnJvbV93b3JrZXIoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdGludCAoKmlvX2ZuKShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiksXG4tXHRcdGNoYXIgKndoeSwgZW51bSBibV9mbGFnIGZsYWdzLFxuLVx0XHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuLWV4dGVybiBpbnQgZHJiZF9ibWlvX3NldF9uX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gaW50IGRyYmRfYm1pb19jbGVhcl9uX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbiYjNDM7dm9pZCB0bF9yZWxlYXNlKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwgdW5zaWduZWQgaW50IGJhcnJpZXJfbnIsXG4mIzQzO1x0XHR1bnNpZ25lZCBpbnQgc2V0X3NpemUpO1xuJiM0Mzt2b2lkIHRsX2NsZWFyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKik7XG4mIzQzO3ZvaWQgZHJiZF9mcmVlX3NvY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4mIzQzO2ludCBkcmJkX3NlbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgc3RydWN0IHNvY2tldCAqc29jayxcbiYjNDM7XHQgICAgICB2b2lkICpidWYsIHNpemVfdCBzaXplLCB1bnNpZ25lZCBtc2dfZmxhZ3MpO1xuJiM0MztpbnQgZHJiZF9zZW5kX2FsbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHN0cnVjdCBzb2NrZXQgKiwgdm9pZCAqLCBzaXplX3QsXG4mIzQzO1x0XHQgIHVuc2lnbmVkKTtcbiYjNDM7XG4mIzQzO2ludCBfX2RyYmRfc2VuZF9wcm90b2NvbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLFxuJiM0MztcdFx0XHQgZW51bSBkcmJkX3BhY2tldCBjbWQpO1xuJiM0MztpbnQgZHJiZF9zZW5kX3Byb3RvY29sKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xuJiM0MztpbnQgZHJiZF9zZW5kX3V1aWRzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xuJiM0MztpbnQgZHJiZF9zZW5kX3V1aWRzX3NraXBfaW5pdGlhbF9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xuJiM0Mzt2b2lkIGRyYmRfZ2VuX2FuZF9zZW5kX3N5bmNfdXVpZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcbiYjNDM7aW50IGRyYmRfc2VuZF9zaXplcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBpbnQgdHJpZ2dlcl9yZXBseSxcbiYjNDM7XHRcdCAgICBlbnVtIGRkc19mbGFncyBmbGFncyk7XG4mIzQzO2ludCBkcmJkX3NlbmRfc3RhdGUoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSBzKTtcbiYjNDM7aW50IGRyYmRfc2VuZF9jdXJyZW50X3N0YXRlKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xuJiM0MztpbnQgZHJiZF9zZW5kX3N5bmNfcGFyYW0oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7XG4mIzQzO3ZvaWQgZHJiZF9zZW5kX2JfYWNrKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHUzMiBiYXJyaWVyX25yLFxuJiM0MztcdFx0ICAgICB1MzIgc2V0X3NpemUpO1xuJiM0MztpbnQgZHJiZF9zZW5kX2FjayhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuJiM0MztcdFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKik7XG4mIzQzO3ZvaWQgZHJiZF9zZW5kX2Fja19ycChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuJiM0MztcdFx0ICAgICAgc3RydWN0IHBfYmxvY2tfcmVxICpycCk7XG4mIzQzO3ZvaWQgZHJiZF9zZW5kX2Fja19kcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuJiM0MztcdFx0ICAgICAgc3RydWN0IHBfZGF0YSAqZHAsIGludCBkYXRhX3NpemUpO1xuJiM0MztpbnQgZHJiZF9zZW5kX2Fja19leChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuJiM0MztcdFx0ICAgICBzZWN0b3JfdCBzZWN0b3IsIGludCBibGtzaXplLCB1NjQgYmxvY2tfaWQpO1xuJiM0MztpbnQgZHJiZF9zZW5kX291dF9vZl9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3JlcXVlc3QgKik7XG4mIzQzO2ludCBkcmJkX3NlbmRfYmxvY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCxcbiYjNDM7XHRcdCAgICBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKik7XG4mIzQzO2ludCBkcmJkX3NlbmRfZGJsb2NrKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSk7XG4mIzQzO2ludCBkcmJkX3NlbmRfZHJlcXVlc3Qoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgaW50IGNtZCwgc2VjdG9yX3Qgc2VjdG9yLFxuJiM0MztcdFx0ICAgICAgIGludCBzaXplLCB1NjQgYmxvY2tfaWQpO1xuJiM0MztpbnQgZHJiZF9zZW5kX2RyZXF1ZXN0X2NzdW0oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc2VjdG9yX3Qgc2VjdG9yLFxuJiM0MztcdFx0XHQgICAgaW50IHNpemUsIHZvaWQgKmRpZ2VzdCwgaW50IGRpZ2VzdF9zaXplLFxuJiM0MztcdFx0XHQgICAgZW51bSBkcmJkX3BhY2tldCBjbWQpO1xuJiM0MztpbnQgZHJiZF9zZW5kX292X3JlcXVlc3Qoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSk7XG4mIzQzO1xuJiM0MztpbnQgZHJiZF9zZW5kX2JpdG1hcChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdCAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcbiYjNDM7dm9pZCBkcmJkX3NlbmRfc3JfcmVwbHkoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3N0YXRlX3J2IHJldGNvZGUpO1xuJiM0Mzt2b2lkIGNvbm5fc2VuZF9zcl9yZXBseShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLFxuJiM0MztcdFx0XHRlbnVtIGRyYmRfc3RhdGVfcnYgcmV0Y29kZSk7XG4mIzQzO2ludCBkcmJkX3NlbmRfcnNfZGVhbGxvY2F0ZWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKixcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKik7XG4mIzQzO3ZvaWQgZHJiZF9iYWNraW5nX2Rldl9mcmVlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuJiM0MztcdFx0XHQgICBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqbGRldik7XG4mIzQzO3ZvaWQgZHJiZF9kZXZpY2VfY2xlYW51cChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO3ZvaWQgZHJiZF9wcmludF91dWlkcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqdGV4dCk7XG4mIzQzO3ZvaWQgZHJiZF9xdWV1ZV91bnBsdWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0MztcbiYjNDM7dm9pZCBjb25uX21kX3N5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4mIzQzO3ZvaWQgZHJiZF9tZF93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdm9pZCAqYnVmZmVyKTtcbiYjNDM7dm9pZCBkcmJkX21kX3N5bmMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0MztpbnQgZHJiZF9tZF9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldik7XG4mIzQzO3ZvaWQgZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCk7XG4mIzQzO3ZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpO1xuJiM0Mzt2b2lkIGRyYmRfdXVpZF9uZXdfY3VycmVudChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO3ZvaWQgZHJiZF91dWlkX3NldF9ibShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdTY0IHZhbCk7XG4mIzQzO3ZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO3ZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKTtcbiYjNDM7dm9pZCBkcmJkX21kX3NldF9mbGFnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgZmxhZ3MpO1xuJiM0Mzt2b2lkIGRyYmRfbWRfY2xlYXJfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWdzKTtcbiYjNDM7aW50IGRyYmRfbWRfdGVzdF9mbGFnKHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICosIGludCk7XG4mIzQzO3ZvaWQgZHJiZF9tZF9tYXJrX2RpcnR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbiYjNDM7dm9pZCBkcmJkX3F1ZXVlX2JpdG1hcF9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdFx0ICBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosXG4mIzQzO1x0XHRcdFx0ICAgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopLFxuJiM0MztcdFx0XHQgIHZvaWQgKCpkb25lKShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgaW50KSwgY2hhciAqd2h5LFxuJiM0MztcdFx0XHQgIGVudW0gYm1fZmxhZyBmbGFncyxcbiYjNDM7XHRcdFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuJiM0MztpbnQgZHJiZF9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHQgICBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosXG4mIzQzO1x0XHRcdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiksXG4mIzQzO1x0XHQgICBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncyxcbiYjNDM7XHRcdCAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4mIzQzO2ludCBkcmJkX2JpdG1hcF9pb19mcm9tX3dvcmtlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdFx0ICAgICAgIGludCAoKmlvX2ZuKShzdHJ1Y3QgZHJiZF9kZXZpY2UgKixcbiYjNDM7XHRcdFx0XHRcdCAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKSxcbiYjNDM7XHRcdFx0ICAgICAgIGNoYXIgKndoeSwgZW51bSBibV9mbGFnIGZsYWdzLFxuJiM0MztcdFx0XHQgICAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcbiYjNDM7aW50IGRyYmRfYm1pb19zZXRfbl93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuJiM0MztpbnQgZHJiZF9ibWlvX2NsZWFyX25fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHRcdCAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuJiM0MztpbnQgZHJiZF93YWl0X21pc2Moc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKVxuJiM0MztcdF9fbXVzdF9ob2xkKFx1MDAyNmRldmljZS1cdTAwM2VyZXNvdXJjZS1cdTAwM2VyZXFfbG9jayk7XG4gXG4gLyogTWV0YSBkYXRhIGxheW91dFxuICAqXG5AQCAtMTI3NSw1NiAmIzQzOzEyODYsNjQgQEAgc3RydWN0IGJtX2V4dGVudCB7XG4gI2RlZmluZSBEUkJEX01BWF9CQVRDSF9CSU9fU0laRVx0IChBTF9VUERBVEVTX1BFUl9UUkFOU0FDVElPTi8yKkFMX0VYVEVOVF9TSVpFKVxuICNkZWZpbmUgRFJCRF9NQVhfQkJJT19TRUNUT1JTICAgIChEUkJEX01BWF9CQVRDSF9CSU9fU0laRSBcdTAwM2VcdTAwM2UgOSlcbiBcbi1leHRlcm4gaW50ICBkcmJkX2JtX2luaXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiBpbnQgIGRyYmRfYm1fcmVzaXplKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3JzLCBpbnQgc2V0X25ld19iaXRzKTtcbi1leHRlcm4gdm9pZCBkcmJkX2JtX2NsZWFudXAoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiB2b2lkIGRyYmRfYm1fc2V0X2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV9jbGVhcl9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0MztpbnQgZHJiZF9ibV9pbml0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbiYjNDM7aW50IGRyYmRfYm1fcmVzaXplKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3JzLFxuJiM0MztcdFx0ICAgaW50IHNldF9uZXdfYml0cyk7XG4mIzQzO3ZvaWQgZHJiZF9ibV9jbGVhbnVwKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbiYjNDM7dm9pZCBkcmJkX2JtX3NldF9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0Mzt2b2lkIGRyYmRfYm1fY2xlYXJfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbiAvKiBzZXQvY2xlYXIvdGVzdCBvbmx5IGEgZmV3IGJpdHMgYXQgYSB0aW1lICovXG4tZXh0ZXJuIGludCAgZHJiZF9ibV9zZXRfYml0cyhcbi1cdFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgcywgdW5zaWduZWQgbG9uZyBlKTtcbi1leHRlcm4gaW50ICBkcmJkX2JtX2NsZWFyX2JpdHMoXG4tXHRcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIHMsIHVuc2lnbmVkIGxvbmcgZSk7XG4tZXh0ZXJuIGludCBkcmJkX2JtX2NvdW50X2JpdHMoXG4tXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgdW5zaWduZWQgbG9uZyBzLCBjb25zdCB1bnNpZ25lZCBsb25nIGUpO1xuJiM0MztpbnQgZHJiZF9ibV9zZXRfYml0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBzLFxuJiM0MztcdFx0ICAgICB1bnNpZ25lZCBsb25nIGUpO1xuJiM0MztpbnQgZHJiZF9ibV9jbGVhcl9iaXRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIHMsXG4mIzQzO1x0XHQgICAgICAgdW5zaWduZWQgbG9uZyBlKTtcbiYjNDM7aW50IGRyYmRfYm1fY291bnRfYml0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgdW5zaWduZWQgbG9uZyBzLFxuJiM0MztcdFx0ICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgZSk7XG4gLyogYm1fc2V0X2JpdHMgdmFyaWFudCBmb3IgdXNlIHdoaWxlIGhvbGRpbmcgZHJiZF9ibV9sb2NrLFxuICAqIG1heSBwcm9jZXNzIHRoZSB3aG9sZSBiaXRtYXAgaW4gb25lIGdvICovXG4tZXh0ZXJuIHZvaWQgX2RyYmRfYm1fc2V0X2JpdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdGNvbnN0IHVuc2lnbmVkIGxvbmcgcywgY29uc3QgdW5zaWduZWQgbG9uZyBlKTtcbi1leHRlcm4gaW50ICBkcmJkX2JtX3Rlc3RfYml0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGJpdG5yKTtcbi1leHRlcm4gaW50ICBkcmJkX2JtX2Vfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGVucik7XG4tZXh0ZXJuIGludCAgZHJiZF9ibV9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gdm9pZCBkcmJkX2JtX21hcmtfZm9yX3dyaXRlb3V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgcGFnZV9ucik7XG4tZXh0ZXJuIGludCAgZHJiZF9ibV93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV9yZXNldF9hbF9oaW50cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpO1xuLWV4dGVybiBpbnQgIGRyYmRfYm1fd3JpdGVfaGludGVkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7XG4tZXh0ZXJuIGludCAgZHJiZF9ibV93cml0ZV9sYXp5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCB1cHBlcl9pZHgpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gaW50IGRyYmRfYm1fd3JpdGVfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gaW50ICBkcmJkX2JtX3dyaXRlX2NvcHlfcGFnZXMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpO1xuLWV4dGVybiBzaXplX3RcdCAgICAgZHJiZF9ibV93b3JkcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZHJiZF9ibV9iaXRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gc2VjdG9yX3QgICAgICBkcmJkX2JtX2NhcGFjaXR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbiYjNDM7dm9pZCBfZHJiZF9ibV9zZXRfYml0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgdW5zaWduZWQgbG9uZyBzLFxuJiM0MztcdFx0ICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgZSk7XG4mIzQzO2ludCBkcmJkX2JtX3Rlc3RfYml0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGJpdG5yKTtcbiYjNDM7aW50IGRyYmRfYm1fZV93ZWlnaHQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgZW5yKTtcbiYjNDM7aW50IGRyYmRfYm1fcmVhZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuJiM0Mzt2b2lkIGRyYmRfYm1fbWFya19mb3Jfd3JpdGVvdXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBwYWdlX25yKTtcbiYjNDM7aW50IGRyYmRfYm1fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHQgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4mIzQzO3ZvaWQgZHJiZF9ibV9yZXNldF9hbF9oaW50cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO2ludCBkcmJkX2JtX3dyaXRlX2hpbnRlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO2ludCBkcmJkX2JtX3dyaXRlX2xhenkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIHVwcGVyX2lkeCk7XG4mIzQzO2ludCBkcmJkX2JtX3dyaXRlX2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdCAgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4mIzQzO2ludCBkcmJkX2JtX3dyaXRlX2NvcHlfcGFnZXMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHRcdCAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcbiYjNDM7c2l6ZV90IGRyYmRfYm1fd29yZHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0Mzt1bnNpZ25lZCBsb25nIGRyYmRfYm1fYml0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO3NlY3Rvcl90IGRyYmRfYm1fY2FwYWNpdHkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuIFxuICNkZWZpbmUgRFJCRF9FTkRfT0ZfQklUTUFQXHQofih1bnNpZ25lZCBsb25nKTApXG4tZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZHJiZF9ibV9maW5kX25leHQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgYm1fZm8pO1xuJiM0Mzt1bnNpZ25lZCBsb25nIGRyYmRfYm1fZmluZF9uZXh0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuJiM0MztcdFx0XHRcdHVuc2lnbmVkIGxvbmcgYm1fZm8pO1xuIC8qIGJtX2ZpbmRfbmV4dCB2YXJpYW50cyBmb3IgdXNlIHdoaWxlIHlvdSBob2xkIGRyYmRfYm1fbG9jaygpICovXG4tZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX2RyYmRfYm1fZmluZF9uZXh0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGJtX2ZvKTtcbi1leHRlcm4gdW5zaWduZWQgbG9uZyBfZHJiZF9ibV9maW5kX25leHRfemVybyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBibV9mbyk7XG4tZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX2RyYmRfYm1fdG90YWxfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gdW5zaWduZWQgbG9uZyBkcmJkX2JtX3RvdGFsX3dlaWdodChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO3Vuc2lnbmVkIGxvbmcgX2RyYmRfYm1fZmluZF9uZXh0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuJiM0MztcdFx0XHRcdCB1bnNpZ25lZCBsb25nIGJtX2ZvKTtcbiYjNDM7dW5zaWduZWQgbG9uZyBfZHJiZF9ibV9maW5kX25leHRfemVybyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdFx0XHQgICAgICB1bnNpZ25lZCBsb25nIGJtX2ZvKTtcbiYjNDM7dW5zaWduZWQgbG9uZyBfZHJiZF9ibV90b3RhbF93ZWlnaHQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0Mzt1bnNpZ25lZCBsb25nIGRyYmRfYm1fdG90YWxfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbiAvKiBmb3IgcmVjZWl2ZV9iaXRtYXAgKi9cbi1leHRlcm4gdm9pZCBkcmJkX2JtX21lcmdlX2xlbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2l6ZV90IG9mZnNldCxcbi1cdFx0c2l6ZV90IG51bWJlciwgdW5zaWduZWQgbG9uZyAqYnVmZmVyKTtcbiYjNDM7dm9pZCBkcmJkX2JtX21lcmdlX2xlbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IG51bWJlcixcbiYjNDM7XHRcdCAgICAgICB1bnNpZ25lZCBsb25nICpidWZmZXIpO1xuIC8qIGZvciBfZHJiZF9zZW5kX2JpdG1hcCAqL1xuLWV4dGVybiB2b2lkIGRyYmRfYm1fZ2V0X2xlbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2l6ZV90IG9mZnNldCxcbi1cdFx0c2l6ZV90IG51bWJlciwgdW5zaWduZWQgbG9uZyAqYnVmZmVyKTtcbiYjNDM7dm9pZCBkcmJkX2JtX2dldF9sZWwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBudW1iZXIsXG4mIzQzO1x0XHQgICAgIHVuc2lnbmVkIGxvbmcgKmJ1ZmZlcik7XG4mIzQzO1xuJiM0Mzt0b2tlbl9jb250ZXh0X2xvY2soZHJiZF9kZXZfYm1fbG9jayk7XG4gXG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV9sb2NrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncyk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV91bmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0Mzt2b2lkIGRyYmRfYm1fbG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MpXG4mIzQzO1x0X19hY3F1aXJlcyhkcmJkX2Rldl9ibV9sb2NrKTtcbiYjNDM7dm9pZCBkcmJkX2JtX3VubG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbiYjNDM7XHRfX3JlbGVhc2VzKGRyYmRfZGV2X2JtX2xvY2spO1xuIC8qIGRyYmRfbWFpbi5jICovXG4gXG4gZXh0ZXJuIHN0cnVjdCBrbWVtX2NhY2hlICpkcmJkX3JlcXVlc3RfY2FjaGU7XG5AQCAtMTM1MCwzNyAmIzQzOzEzNjksMzkgQEAgZXh0ZXJuIHN0cnVjdCBiaW9fc2V0IGRyYmRfbWRfaW9fYmlvX3NldDtcbiAvKiBBbmQgYSBiaW9fc2V0IGZvciBjbG9uaW5nICovXG4gZXh0ZXJuIHN0cnVjdCBiaW9fc2V0IGRyYmRfaW9fYmlvX3NldDtcbiBcbi1leHRlcm4gc3RydWN0IG11dGV4IHJlc291cmNlc19tdXRleDtcbi1cbi1leHRlcm4gZW51bSBkcmJkX3JldF9jb2RlIGRyYmRfY3JlYXRlX2RldmljZShzdHJ1Y3QgZHJiZF9jb25maWdfY29udGV4dCAqYWRtX2N0eCwgdW5zaWduZWQgaW50IG1pbm9yKTtcbi1leHRlcm4gdm9pZCBkcmJkX2Rlc3Ryb3lfZGV2aWNlKHN0cnVjdCBrcmVmICprcmVmKTtcbi1leHRlcm4gdm9pZCBkcmJkX2RlbGV0ZV9kZXZpY2Uoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLVxuLWV4dGVybiBzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqZHJiZF9jcmVhdGVfcmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9mcmVlX3Jlc291cmNlKHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSk7XG4tXG4tZXh0ZXJuIGludCBzZXRfcmVzb3VyY2Vfb3B0aW9ucyhzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UsIHN0cnVjdCByZXNfb3B0cyAqcmVzX29wdHMpO1xuLWV4dGVybiBzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uX2NyZWF0ZShjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgcmVzX29wdHMgKnJlc19vcHRzKTtcbi1leHRlcm4gdm9pZCBkcmJkX2Rlc3Ryb3lfY29ubmVjdGlvbihzdHJ1Y3Qga3JlZiAqa3JlZik7XG4tZXh0ZXJuIHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5fZ2V0X2J5X2FkZHJzKHZvaWQgKm15X2FkZHIsIGludCBteV9hZGRyX2xlbixcbi1cdFx0XHRcdFx0ICAgIHZvaWQgKnBlZXJfYWRkciwgaW50IHBlZXJfYWRkcl9sZW4pO1xuLWV4dGVybiBzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqZHJiZF9maW5kX3Jlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUpO1xuLWV4dGVybiB2b2lkIGRyYmRfZGVzdHJveV9yZXNvdXJjZShzdHJ1Y3Qga3JlZiAqa3JlZik7XG4tZXh0ZXJuIHZvaWQgY29ubl9mcmVlX2NyeXB0byhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbiYjNDM7ZW51bSBkcmJkX3JldF9jb2RlIGRyYmRfY3JlYXRlX2RldmljZShzdHJ1Y3QgZHJiZF9jb25maWdfY29udGV4dCAqYWRtX2N0eCxcbiYjNDM7XHRcdFx0XHQgICAgICB1bnNpZ25lZCBpbnQgbWlub3IpO1xuJiM0Mzt2b2lkIGRyYmRfZGVzdHJveV9kZXZpY2Uoc3RydWN0IGtyZWYgKmtyZWYpO1xuJiM0Mzt2b2lkIGRyYmRfZGVsZXRlX2RldmljZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO1xuJiM0MztzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqZHJiZF9jcmVhdGVfcmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSk7XG4mIzQzO3ZvaWQgZHJiZF9mcmVlX3Jlc291cmNlKHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSk7XG4mIzQzO1xuJiM0MztpbnQgc2V0X3Jlc291cmNlX29wdGlvbnMoc3RydWN0IGRyYmRfcmVzb3VyY2UgKnJlc291cmNlLFxuJiM0MztcdFx0XHQgc3RydWN0IHJlc19vcHRzICpyZXNfb3B0cyk7XG4mIzQzO3N0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5fY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsXG4mIzQzO1x0XHRcdFx0ICAgIHN0cnVjdCByZXNfb3B0cyAqcmVzX29wdHMpO1xuJiM0Mzt2b2lkIGRyYmRfZGVzdHJveV9jb25uZWN0aW9uKHN0cnVjdCBrcmVmICprcmVmKTtcbiYjNDM7c3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubl9nZXRfYnlfYWRkcnModm9pZCAqbXlfYWRkciwgaW50IG15X2FkZHJfbGVuLFxuJiM0MztcdFx0XHRcdFx0ICB2b2lkICpwZWVyX2FkZHIsIGludCBwZWVyX2FkZHJfbGVuKTtcbiYjNDM7c3RydWN0IGRyYmRfcmVzb3VyY2UgKmRyYmRfZmluZF9yZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKTtcbiYjNDM7dm9pZCBkcmJkX2Rlc3Ryb3lfcmVzb3VyY2Uoc3RydWN0IGtyZWYgKmtyZWYpO1xuJiM0Mzt2b2lkIGNvbm5fZnJlZV9jcnlwdG8oc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4gXG4gLyogZHJiZF9yZXEgKi9cbi1leHRlcm4gdm9pZCBkb19zdWJtaXQoc3RydWN0IHdvcmtfc3RydWN0ICp3cyk7XG4tZXh0ZXJuIHZvaWQgX19kcmJkX21ha2VfcmVxdWVzdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGJpbyAqKTtcbiYjNDM7dm9pZCBkb19zdWJtaXQoc3RydWN0IHdvcmtfc3RydWN0ICp3cyk7XG4mIzQzO3ZvaWQgX19kcmJkX21ha2VfcmVxdWVzdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGJpbyAqKTtcbiB2b2lkIGRyYmRfc3VibWl0X2JpbyhzdHJ1Y3QgYmlvICpiaW8pO1xuIFxuIC8qIGRyYmRfbmwuYyAqL1xuIFxuIGV4dGVybiBzdHJ1Y3QgbXV0ZXggbm90aWZpY2F0aW9uX211dGV4O1xuIFxuLWV4dGVybiB2b2lkIGRyYmRfc3VzcGVuZF9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9yZXN1bWVfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiBjaGFyICpwcHNpemUoY2hhciAqYnVmLCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSk7XG4tZXh0ZXJuIHNlY3Rvcl90IGRyYmRfbmV3X2Rldl9zaXplKHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqLCBzZWN0b3JfdCwgaW50KTtcbiYjNDM7dm9pZCBkcmJkX3N1c3BlbmRfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0Mzt2b2lkIGRyYmRfcmVzdW1lX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbiYjNDM7Y2hhciAqcHBzaXplKGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyBsb25nIHNpemUpO1xuJiM0MztzZWN0b3JfdCBkcmJkX25ld19kZXZfc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKixcbiYjNDM7XHRcdFx0ICAgc2VjdG9yX3QsIGludCk7XG4gZW51bSBkZXRlcm1pbmVfZGV2X3NpemUge1xuIFx0RFNfRVJST1JfU0hSSU5LID0gLTMsXG4gXHREU19FUlJPUl9TUEFDRV9NRCA9IC0yLFxuQEAgLTEzOTAsNDEgJiM0MzsxNDExLDQ1IEBAIGVudW0gZGV0ZXJtaW5lX2Rldl9zaXplIHtcbiBcdERTX0dSRVcgPSAyLFxuIFx0RFNfR1JFV19GUk9NX1pFUk8gPSAzLFxuIH07XG4tZXh0ZXJuIGVudW0gZGV0ZXJtaW5lX2Rldl9zaXplXG4tZHJiZF9kZXRlcm1pbmVfZGV2X3NpemUoc3RydWN0IGRyYmRfZGV2aWNlICosIGVudW0gZGRzX2ZsYWdzLCBzdHJ1Y3QgcmVzaXplX3Bhcm1zICopIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gdm9pZCByZXN5bmNfYWZ0ZXJfb25saW5lX2dyb3coc3RydWN0IGRyYmRfZGV2aWNlICopO1xuLWV4dGVybiB2b2lkIGRyYmRfcmVjb25zaWRlcl9xdWV1ZV9wYXJhbWV0ZXJzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRcdHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LCBzdHJ1Y3Qgb19xbGltICpvKTtcbi1leHRlcm4gZW51bSBkcmJkX3N0YXRlX3J2IGRyYmRfc2V0X3JvbGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdFx0XHRcdGVudW0gZHJiZF9yb2xlIG5ld19yb2xlLFxuLVx0XHRcdFx0XHRpbnQgZm9yY2UpO1xuLWV4dGVybiBib29sIGNvbm5fdHJ5X291dGRhdGVfcGVlcihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbi1leHRlcm4gdm9pZCBjb25uX3RyeV9vdXRkYXRlX3BlZXJfYXN5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4tZXh0ZXJuIGVudW0gZHJiZF9wZWVyX3N0YXRlIGNvbm5fa2hlbHBlcihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBjaGFyICpjbWQpO1xuLWV4dGVybiBpbnQgZHJiZF9raGVscGVyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICpjbWQpO1xuJiM0MztlbnVtIGRldGVybWluZV9kZXZfc2l6ZSBkcmJkX2RldGVybWluZV9kZXZfc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKixcbiYjNDM7XHRcdFx0XHRcdFx0ZW51bSBkZHNfZmxhZ3MsXG4mIzQzO1x0XHRcdFx0XHRcdHN0cnVjdCByZXNpemVfcGFybXMgKik7XG4mIzQzO3ZvaWQgcmVzeW5jX2FmdGVyX29ubGluZV9ncm93KHN0cnVjdCBkcmJkX2RldmljZSAqKTtcbiYjNDM7dm9pZCBkcmJkX3JlY29uc2lkZXJfcXVldWVfcGFyYW1ldGVycyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdFx0XHQgICAgICBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldixcbiYjNDM7XHRcdFx0XHQgICAgICBzdHJ1Y3Qgb19xbGltICpvKTtcbiYjNDM7ZW51bSBkcmJkX3N0YXRlX3J2IGRyYmRfc2V0X3JvbGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHRcdFx0IGVudW0gZHJiZF9yb2xlIG5ld19yb2xlLCBpbnQgZm9yY2UpO1xuJiM0Mztib29sIGNvbm5fdHJ5X291dGRhdGVfcGVlcihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbiYjNDM7dm9pZCBjb25uX3RyeV9vdXRkYXRlX3BlZXJfYXN5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4mIzQzO2VudW0gZHJiZF9wZWVyX3N0YXRlIGNvbm5fa2hlbHBlcihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLFxuJiM0MztcdFx0XHRcdCAgY2hhciAqY21kKTtcbiYjNDM7aW50IGRyYmRfa2hlbHBlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY2hhciAqY21kKTtcbiBcbiAvKiBkcmJkX3dvcmtlci5jICovXG4gLyogYmlfZW5kX2lvIGhhbmRsZXJzICovXG4tZXh0ZXJuIHZvaWQgZHJiZF9tZF9lbmRpbyhzdHJ1Y3QgYmlvICpiaW8pO1xuLWV4dGVybiB2b2lkIGRyYmRfcGVlcl9yZXF1ZXN0X2VuZGlvKHN0cnVjdCBiaW8gKmJpbyk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9yZXF1ZXN0X2VuZGlvKHN0cnVjdCBiaW8gKmJpbyk7XG4tZXh0ZXJuIGludCBkcmJkX3dvcmtlcihzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7XG4mIzQzO3ZvaWQgZHJiZF9tZF9lbmRpbyhzdHJ1Y3QgYmlvICpiaW8pO1xuJiM0Mzt2b2lkIGRyYmRfcGVlcl9yZXF1ZXN0X2VuZGlvKHN0cnVjdCBiaW8gKmJpbyk7XG4mIzQzO3ZvaWQgZHJiZF9yZXF1ZXN0X2VuZGlvKHN0cnVjdCBiaW8gKmJpbyk7XG4mIzQzO2ludCBkcmJkX3dvcmtlcihzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7XG4gZW51bSBkcmJkX3JldF9jb2RlIGRyYmRfcmVzeW5jX2FmdGVyX3ZhbGlkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgb19taW5vcik7XG4gdm9pZCBkcmJkX3Jlc3luY19hZnRlcl9jaGFuZ2VkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gdm9pZCBkcmJkX3N0YXJ0X3Jlc3luYyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Nvbm5zIHNpZGUpO1xuLWV4dGVybiB2b2lkIHJlc3VtZV9uZXh0X3NnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gdm9pZCBzdXNwZW5kX290aGVyX3NnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gaW50IGRyYmRfcmVzeW5jX2ZpbmlzaGVkKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4mIzQzO3ZvaWQgZHJiZF9zdGFydF9yZXN5bmMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGVudW0gZHJiZF9jb25ucyBzaWRlKTtcbiYjNDM7dm9pZCByZXN1bWVfbmV4dF9zZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO3ZvaWQgc3VzcGVuZF9vdGhlcl9zZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO2ludCBkcmJkX3Jlc3luY19maW5pc2hlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuIC8qIG1heWJlIHJhdGhlciBkcmJkX21haW4uYyA/ICovXG4tZXh0ZXJuIHZvaWQgKmRyYmRfbWRfZ2V0X2J1ZmZlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqaW50ZW50KTtcbi1leHRlcm4gdm9pZCBkcmJkX21kX3B1dF9idWZmZXIoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiBpbnQgZHJiZF9tZF9zeW5jX3BhZ2VfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LCBzZWN0b3JfdCBzZWN0b3IsIGVudW0gcmVxX29wIG9wKTtcbi1leHRlcm4gdm9pZCBkcmJkX292X291dF9vZl9zeW5jX2ZvdW5kKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcbi1cdFx0c2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSk7XG4tZXh0ZXJuIHZvaWQgd2FpdF91bnRpbF9kb25lX29yX2ZvcmNlX2RldGFjaGVkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldiwgdW5zaWduZWQgaW50ICpkb25lKTtcbi1leHRlcm4gdm9pZCBkcmJkX3JzX2NvbnRyb2xsZXJfcmVzZXQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcbiYjNDM7dm9pZCAqZHJiZF9tZF9nZXRfYnVmZmVyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCBjaGFyICppbnRlbnQpO1xuJiM0Mzt2b2lkIGRyYmRfbWRfcHV0X2J1ZmZlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO2ludCBkcmJkX21kX3N5bmNfcGFnZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdFx0IHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LCBzZWN0b3JfdCBzZWN0b3IsXG4mIzQzO1x0XHRcdCBlbnVtIHJlcV9vcCBvcCk7XG4mIzQzO3ZvaWQgZHJiZF9vdl9vdXRfb2Zfc3luY19mb3VuZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsXG4mIzQzO1x0XHRcdCAgICAgICBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplKTtcbiYjNDM7dm9pZCB3YWl0X3VudGlsX2RvbmVfb3JfZm9yY2VfZGV0YWNoZWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHRcdFx0ICAgICAgIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LFxuJiM0MztcdFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgKmRvbmUpO1xuJiM0Mzt2b2lkIGRyYmRfcnNfY29udHJvbGxlcl9yZXNldChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuIFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBvdl9vdXRfb2Zfc3luY19wcmludChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXG4ge1xuQEAgLTE0MzgsNDggJiM0MzsxNDYzLDQ3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBvdl9vdXRfb2Zfc3luY19wcmludChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXG4gXHRkZXZpY2UtXHUwMDNlb3ZfbGFzdF9vb3Nfc2l6ZSA9IDA7XG4gfVxuIFxuLVxuLWV4dGVybiB2b2lkIGRyYmRfY3N1bV9iaW8oc3RydWN0IGNyeXB0b19zaGFzaCAqLCBzdHJ1Y3QgYmlvICosIHZvaWQgKik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9jc3VtX2VlKHN0cnVjdCBjcnlwdG9fc2hhc2ggKiwgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICosXG4tXHRcdFx0IHZvaWQgKik7XG4mIzQzO3ZvaWQgZHJiZF9jc3VtX2JpbyhzdHJ1Y3QgY3J5cHRvX3NoYXNoICosIHN0cnVjdCBiaW8gKiwgdm9pZCAqKTtcbiYjNDM7dm9pZCBkcmJkX2NzdW1fZWUoc3RydWN0IGNyeXB0b19zaGFzaCAqLCBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKiwgdm9pZCAqKTtcbiAvKiB3b3JrZXIgY2FsbGJhY2tzICovXG4tZXh0ZXJuIGludCB3X2VfZW5kX2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbi1leHRlcm4gaW50IHdfZV9lbmRfcnNkYXRhX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4tZXh0ZXJuIGludCB3X2VfZW5kX2NzdW1fcnNfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbi1leHRlcm4gaW50IHdfZV9lbmRfb3ZfcmVwbHkoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuLWV4dGVybiBpbnQgd19lX2VuZF9vdl9yZXEoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuLWV4dGVybiBpbnQgd19vdl9maW5pc2hlZChzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4tZXh0ZXJuIGludCB3X3Jlc3luY190aW1lcihzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4tZXh0ZXJuIGludCB3X3NlbmRfd3JpdGVfaGludChzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4tZXh0ZXJuIGludCB3X3NlbmRfZGJsb2NrKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbi1leHRlcm4gaW50IHdfc2VuZF9yZWFkX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4tZXh0ZXJuIGludCB3X3Jlc3RhcnRfZGlza19pbyhzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4tZXh0ZXJuIGludCB3X3NlbmRfb3V0X29mX3N5bmMoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuLVxuLWV4dGVybiB2b2lkIHJlc3luY190aW1lcl9mbihzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7XG4tZXh0ZXJuIHZvaWQgc3RhcnRfcmVzeW5jX3RpbWVyX2ZuKHN0cnVjdCB0aW1lcl9saXN0ICp0KTtcbi1cbi1leHRlcm4gdm9pZCBkcmJkX2VuZGlvX3dyaXRlX3NlY19maW5hbChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKTtcbiYjNDM7aW50IHdfZV9lbmRfZGF0YV9yZXEoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuJiM0MztpbnQgd19lX2VuZF9yc2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbiYjNDM7aW50IHdfZV9lbmRfY3N1bV9yc19yZXEoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuJiM0MztpbnQgd19lX2VuZF9vdl9yZXBseShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4mIzQzO2ludCB3X2VfZW5kX292X3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4mIzQzO2ludCB3X292X2ZpbmlzaGVkKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbiYjNDM7aW50IHdfcmVzeW5jX3RpbWVyKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbiYjNDM7aW50IHdfc2VuZF93cml0ZV9oaW50KHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbiYjNDM7aW50IHdfc2VuZF9kYmxvY2soc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuJiM0MztpbnQgd19zZW5kX3JlYWRfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbiYjNDM7aW50IHdfcmVzdGFydF9kaXNrX2lvKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbiYjNDM7aW50IHdfc2VuZF9vdXRfb2Zfc3luYyhzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4mIzQzO1xuJiM0Mzt2b2lkIHJlc3luY190aW1lcl9mbihzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7XG4mIzQzO3ZvaWQgc3RhcnRfcmVzeW5jX3RpbWVyX2ZuKHN0cnVjdCB0aW1lcl9saXN0ICp0KTtcbiYjNDM7XG4mIzQzO3ZvaWQgZHJiZF9lbmRpb193cml0ZV9zZWNfZmluYWwoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSk7XG4gXG4gLyogZHJiZF9yZWNlaXZlci5jICovXG4tZXh0ZXJuIGludCBkcmJkX2lzc3VlX2Rpc2NhcmRfb3JfemVyb19vdXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdHNlY3Rvcl90IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnJfc2VjdG9ycywgaW50IGZsYWdzKTtcbi1leHRlcm4gaW50IGRyYmRfcmVjZWl2ZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xuLWV4dGVybiBpbnQgZHJiZF9hY2tfcmVjZWl2ZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xuLWV4dGVybiB2b2lkIGRyYmRfc2VuZF9hY2tzX3dmKHN0cnVjdCB3b3JrX3N0cnVjdCAqd3MpO1xuLWV4dGVybiBib29sIGRyYmRfcnNfY19taW5fcmF0ZV90aHJvdHRsZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIGJvb2wgZHJiZF9yc19zaG91bGRfc2xvd19kb3duKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc2VjdG9yX3Qgc2VjdG9yLFxuLVx0XHRib29sIHRocm90dGxlX2lmX2FwcF9pc193YWl0aW5nKTtcbi1leHRlcm4gaW50IGRyYmRfc3VibWl0X3BlZXJfcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKTtcbi1leHRlcm4gaW50IGRyYmRfZnJlZV9wZWVyX3JlcXMoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBsaXN0X2hlYWQgKik7XG4tZXh0ZXJuIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqZHJiZF9hbGxvY19wZWVyX3JlcShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1NjQsXG4tXHRcdFx0XHRcdFx0ICAgICBzZWN0b3JfdCwgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0XHRcdCAgICAgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0XHRcdCAgICAgZ2ZwX3QpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gdm9pZCBkcmJkX2ZyZWVfcGVlcl9yZXEoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcmVxKTtcbi1leHRlcm4gc3RydWN0IHBhZ2UgKmRyYmRfYWxsb2NfcGFnZXMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgdW5zaWduZWQgaW50LCBib29sKTtcbi1leHRlcm4gdm9pZCBfZHJiZF9jbGVhcl9kb25lX2VlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgbGlzdF9oZWFkICp0b19iZV9mcmVlZCk7XG4tZXh0ZXJuIGludCBkcmJkX2Nvbm5lY3RlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcbiYjNDM7aW50IGRyYmRfaXNzdWVfZGlzY2FyZF9vcl96ZXJvX291dChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc3RhcnQsXG4mIzQzO1x0XHRcdFx0ICAgdW5zaWduZWQgaW50IG5yX3NlY3RvcnMsIGludCBmbGFncyk7XG4mIzQzO2ludCBkcmJkX3JlY2VpdmVyKHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTtcbiYjNDM7aW50IGRyYmRfYWNrX3JlY2VpdmVyKHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTtcbiYjNDM7dm9pZCBkcmJkX3NlbmRfYWNrc193ZihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndzKTtcbiYjNDM7Ym9vbCBkcmJkX3JzX2NfbWluX3JhdGVfdGhyb3R0bGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0Mztib29sIGRyYmRfcnNfc2hvdWxkX3Nsb3dfZG93bihzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsXG4mIzQzO1x0XHRcdCAgICAgIHNlY3Rvcl90IHNlY3RvciwgYm9vbCB0aHJvdHRsZV9pZl9hcHBfaXNfd2FpdGluZyk7XG4mIzQzO2ludCBkcmJkX3N1Ym1pdF9wZWVyX3JlcXVlc3Qoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSk7XG4mIzQzO2ludCBkcmJkX2ZyZWVfcGVlcl9yZXFzKHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgbGlzdF9oZWFkICopO1xuJiM0MztzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKmRyYmRfYWxsb2NfcGVlcl9yZXEoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgdTY0LFxuJiM0MztcdFx0XHRcdFx0ICAgICAgc2VjdG9yX3QsIHVuc2lnbmVkIGludCxcbiYjNDM7XHRcdFx0XHRcdCAgICAgIHVuc2lnbmVkIGludCwgZ2ZwX3QpO1xuJiM0Mzt2b2lkIGRyYmRfZnJlZV9wZWVyX3JlcShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdFx0c3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpyZXEpO1xuJiM0MztzdHJ1Y3QgcGFnZSAqZHJiZF9hbGxvY19wYWdlcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bnNpZ25lZCBpbnQsIGJvb2wpO1xuJiM0Mzt2b2lkIF9kcmJkX2NsZWFyX2RvbmVfZWUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgbGlzdF9oZWFkICp0b19iZV9mcmVlZCk7XG4mIzQzO2ludCBkcmJkX2Nvbm5lY3RlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcbiBcbiAvKiBzZXRzIHRoZSBudW1iZXIgb2YgNTEyIGJ5dGUgc2VjdG9ycyBvZiBvdXIgdmlydHVhbCBkZXZpY2UgKi9cbiB2b2lkIGRyYmRfc2V0X215X2NhcGFjaXR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzaXplKTtcbkBAIC0xNDkwLDcgJiM0MzsxNTE0LDYgQEAgdm9pZCBkcmJkX3NldF9teV9jYXBhY2l0eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2l6ZSk7XG4gc3RhdGljIGlubGluZSB2b2lkIGRyYmRfc3VibWl0X2Jpb19ub2FjY3Qoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4gXHRcdFx0XHRcdCAgICAgaW50IGZhdWx0X3R5cGUsIHN0cnVjdCBiaW8gKmJpbylcbiB7XG4tXHRfX3JlbGVhc2UobG9jYWwpO1xuIFx0aWYgKCFiaW8tXHUwMDNlYmlfYmRldikge1xuIFx0XHRkcmJkX2VycihkZXZpY2UsIFwmIzM0O2RyYmRfc3VibWl0X2Jpb19ub2FjY3Q6IGJpby1cdTAwM2ViaV9iZGV2ID09IE5VTExcXG5cJiMzNDspO1xuIFx0XHRiaW8tXHUwMDNlYmlfc3RhdHVzID0gQkxLX1NUU19JT0VSUjtcbkBAIC0xNTEyLDMyICYjNDM7MTUzNSwzNiBAQCBleHRlcm4gc3RydWN0IHByb2NfZGlyX2VudHJ5ICpkcmJkX3Byb2M7XG4gaW50IGRyYmRfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpO1xuIFxuIC8qIGRyYmRfYWN0bG9nLmMgKi9cbi1leHRlcm4gYm9vbCBkcmJkX2FsX2JlZ2luX2lvX3ByZXBhcmUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbi1leHRlcm4gaW50IGRyYmRfYWxfYmVnaW5faW9fbm9uYmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbi1leHRlcm4gdm9pZCBkcmJkX2FsX2JlZ2luX2lvX2NvbW1pdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIGJvb2wgZHJiZF9hbF9iZWdpbl9pb19mYXN0cGF0aChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpO1xuLWV4dGVybiB2b2lkIGRyYmRfYWxfYmVnaW5faW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbi1leHRlcm4gdm9pZCBkcmJkX2FsX2NvbXBsZXRlX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9yc19jb21wbGV0ZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9yKTtcbi1leHRlcm4gaW50IGRyYmRfcnNfYmVnaW5faW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3Rvcik7XG4tZXh0ZXJuIGludCBkcmJkX3RyeV9yc19iZWdpbl9pbyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHNlY3Rvcl90IHNlY3Rvcik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9yc19jYW5jZWxfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gaW50IGRyYmRfcnNfZGVsX2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9yc19mYWlsZWRfaW8oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLFxuLVx0XHRzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplKTtcbi1leHRlcm4gdm9pZCBkcmJkX2FkdmFuY2VfcnNfbWFya3Moc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCB1bnNpZ25lZCBsb25nIHN0aWxsX3RvX2dvKTtcbiYjNDM7Ym9vbCBkcmJkX2FsX2JlZ2luX2lvX3ByZXBhcmUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHRcdCAgICAgIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbiYjNDM7aW50IGRyYmRfYWxfYmVnaW5faW9fbm9uYmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHRcdCAgICAgIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbiYjNDM7dm9pZCBkcmJkX2FsX2JlZ2luX2lvX2NvbW1pdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO2Jvb2wgZHJiZF9hbF9iZWdpbl9pb19mYXN0cGF0aChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdFx0ICAgICAgIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbiYjNDM7dm9pZCBkcmJkX2FsX2JlZ2luX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSk7XG4mIzQzO3ZvaWQgZHJiZF9hbF9jb21wbGV0ZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpO1xuJiM0Mzt2b2lkIGRyYmRfcnNfY29tcGxldGVfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3Rvcik7XG4mIzQzO2ludCBkcmJkX3JzX2JlZ2luX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IpO1xuJiM0MztpbnQgZHJiZF90cnlfcnNfYmVnaW5faW8oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IpO1xuJiM0Mzt2b2lkIGRyYmRfcnNfY2FuY2VsX2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO2ludCBkcmJkX3JzX2RlbF9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0Mzt2b2lkIGRyYmRfcnNfZmFpbGVkX2lvKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc2VjdG9yX3Qgc2VjdG9yLFxuJiM0MztcdFx0ICAgICAgIGludCBzaXplKTtcbiYjNDM7dm9pZCBkcmJkX2FkdmFuY2VfcnNfbWFya3Moc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLFxuJiM0MztcdFx0XHQgICB1bnNpZ25lZCBsb25nIHN0aWxsX3RvX2dvKTtcbiBcbiBlbnVtIHVwZGF0ZV9zeW5jX2JpdHNfbW9kZSB7IFJFQ09SRF9SU19GQUlMRUQsIFNFVF9PVVRfT0ZfU1lOQywgU0VUX0lOX1NZTkMgfTtcbi1leHRlcm4gaW50IF9fZHJiZF9jaGFuZ2Vfc3luYyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHNlY3Rvcl90IHNlY3RvciwgaW50IHNpemUsXG4tXHRcdGVudW0gdXBkYXRlX3N5bmNfYml0c19tb2RlIG1vZGUpO1xuJiM0MztpbnQgX19kcmJkX2NoYW5nZV9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc2VjdG9yX3Qgc2VjdG9yLFxuJiM0MztcdFx0ICAgICAgIGludCBzaXplLCBlbnVtIHVwZGF0ZV9zeW5jX2JpdHNfbW9kZSBtb2RlKTtcbiAjZGVmaW5lIGRyYmRfc2V0X2luX3N5bmMocGVlcl9kZXZpY2UsIHNlY3Rvciwgc2l6ZSkgXFxcbiBcdF9fZHJiZF9jaGFuZ2Vfc3luYyhwZWVyX2RldmljZSwgc2VjdG9yLCBzaXplLCBTRVRfSU5fU1lOQylcbiAjZGVmaW5lIGRyYmRfc2V0X291dF9vZl9zeW5jKHBlZXJfZGV2aWNlLCBzZWN0b3IsIHNpemUpIFxcXG4gXHRfX2RyYmRfY2hhbmdlX3N5bmMocGVlcl9kZXZpY2UsIHNlY3Rvciwgc2l6ZSwgU0VUX09VVF9PRl9TWU5DKVxuICNkZWZpbmUgZHJiZF9yc19mYWlsZWRfaW8ocGVlcl9kZXZpY2UsIHNlY3Rvciwgc2l6ZSkgXFxcbiBcdF9fZHJiZF9jaGFuZ2Vfc3luYyhwZWVyX2RldmljZSwgc2VjdG9yLCBzaXplLCBSRUNPUkRfUlNfRkFJTEVEKVxuLWV4dGVybiB2b2lkIGRyYmRfYWxfc2hyaW5rKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gaW50IGRyYmRfYWxfaW5pdGlhbGl6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdm9pZCAqKTtcbiYjNDM7dm9pZCBkcmJkX2FsX3NocmluayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO2ludCBkcmJkX2FsX2luaXRpYWxpemUoc3RydWN0IGRyYmRfZGV2aWNlICosIHZvaWQgKik7XG4gXG4gLyogZHJiZF9ubC5jICovXG4gLyogc3RhdGUgaW5mbyBicm9hZGNhc3QgKi9cbkBAIC0xNTU2LDI4ICYjNDM7MTU4MywyMCBAQCBzdHJ1Y3Qgc2liX2luZm8ge1xuIH07XG4gdm9pZCBkcmJkX2JjYXN0X2V2ZW50KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCBzdHJ1Y3Qgc2liX2luZm8gKnNpYik7XG4gXG4tZXh0ZXJuIGludCBub3RpZnlfcmVzb3VyY2Vfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKixcbi1cdFx0XHRcdCAgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0ICBzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqLFxuLVx0XHRcdFx0ICBzdHJ1Y3QgcmVzb3VyY2VfaW5mbyAqLFxuLVx0XHRcdFx0ICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpO1xuLWV4dGVybiBpbnQgbm90aWZ5X2RldmljZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLFxuLVx0XHRcdFx0dW5zaWduZWQgaW50LFxuLVx0XHRcdFx0c3RydWN0IGRyYmRfZGV2aWNlICosXG4tXHRcdFx0XHRzdHJ1Y3QgZGV2aWNlX2luZm8gKixcbi1cdFx0XHRcdGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSk7XG4tZXh0ZXJuIGludCBub3RpZnlfY29ubmVjdGlvbl9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLFxuLVx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCxcbi1cdFx0XHRcdCAgICBzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosXG4tXHRcdFx0XHQgICAgc3RydWN0IGNvbm5lY3Rpb25faW5mbyAqLFxuLVx0XHRcdFx0ICAgIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSk7XG4tZXh0ZXJuIGludCBub3RpZnlfcGVlcl9kZXZpY2Vfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKixcbi1cdFx0XHRcdCAgICAgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0ICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLFxuLVx0XHRcdFx0ICAgICBzdHJ1Y3QgcGVlcl9kZXZpY2VfaW5mbyAqLFxuLVx0XHRcdFx0ICAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpO1xuLWV4dGVybiB2b2lkIG5vdGlmeV9oZWxwZXIoZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlLCBzdHJ1Y3QgZHJiZF9kZXZpY2UgKixcbi1cdFx0XHQgIHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwgY29uc3QgY2hhciAqLCBpbnQpO1xuJiM0MztpbnQgbm90aWZ5X3Jlc291cmNlX3N0YXRlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCxcbiYjNDM7XHRcdFx0ICBzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqLCBzdHJ1Y3QgcmVzb3VyY2VfaW5mbyAqLFxuJiM0MztcdFx0XHQgIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSk7XG4mIzQzO2ludCBub3RpZnlfZGV2aWNlX3N0YXRlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCwgc3RydWN0IGRyYmRfZGV2aWNlICosXG4mIzQzO1x0XHRcdHN0cnVjdCBkZXZpY2VfaW5mbyAqLCBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpO1xuJiM0MztpbnQgbm90aWZ5X2Nvbm5lY3Rpb25fc3RhdGUoc3RydWN0IHNrX2J1ZmYgKiwgdW5zaWduZWQgaW50LFxuJiM0MztcdFx0XHQgICAgc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBzdHJ1Y3QgY29ubmVjdGlvbl9pbmZvICosXG4mIzQzO1x0XHRcdCAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpO1xuJiM0MztpbnQgbm90aWZ5X3BlZXJfZGV2aWNlX3N0YXRlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCxcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLFxuJiM0MztcdFx0XHQgICAgIHN0cnVjdCBwZWVyX2RldmljZV9pbmZvICosXG4mIzQzO1x0XHRcdCAgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTtcbiYjNDM7dm9pZCBub3RpZnlfaGVscGVyKGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSwgc3RydWN0IGRyYmRfZGV2aWNlICosXG4mIzQzO1x0XHQgICBzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIGNvbnN0IGNoYXIgKiwgaW50KTtcbiBcbiAvKlxuICAqIGlubGluZSBoZWxwZXIgZnVuY3Rpb25zXG5AQCAtMTgyMiw3ICYjNDM7MTg0MSw3IEBAIGRyYmRfZGV2aWNlX3Bvc3Rfd29yayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IHdvcmtfYml0KVxuIFx0fVxuIH1cbiBcbi1leHRlcm4gdm9pZCBkcmJkX2ZsdXNoX3dvcmtxdWV1ZShzdHJ1Y3QgZHJiZF93b3JrX3F1ZXVlICp3b3JrX3F1ZXVlKTtcbiYjNDM7dm9pZCBkcmJkX2ZsdXNoX3dvcmtxdWV1ZShzdHJ1Y3QgZHJiZF93b3JrX3F1ZXVlICp3b3JrX3F1ZXVlKTtcbiBcbiAvKiBUbyBnZXQgdGhlIGFja19yZWNlaXZlciBvdXQgb2YgdGhlIGJsb2NraW5nIG5ldHdvcmsgc3RhY2ssXG4gICogc28gaXQgY2FuIGNoYW5nZSBpdHMgc2tfcmN2dGltZW8gZnJvbSBpZGxlLSB0byBwaW5nLXRpbWVvdXQsXG5AQCAtMTg0MSwxOSAmIzQzOzE4NjAsMjcgQEAgc3RhdGljIGlubGluZSB2b2lkIHJlcXVlc3RfcGluZyhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKVxuIFx0d2FrZV9hY2tfcmVjZWl2ZXIoY29ubmVjdGlvbik7XG4gfVxuIFxuLWV4dGVybiB2b2lkICpjb25uX3ByZXBhcmVfY29tbWFuZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHN0cnVjdCBkcmJkX3NvY2tldCAqKTtcbi1leHRlcm4gdm9pZCAqZHJiZF9wcmVwYXJlX2NvbW1hbmQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc3RydWN0IGRyYmRfc29ja2V0ICopO1xuLWV4dGVybiBpbnQgY29ubl9zZW5kX2NvbW1hbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKixcbi1cdFx0XHQgICAgIGVudW0gZHJiZF9wYWNrZXQsIHVuc2lnbmVkIGludCwgdm9pZCAqLFxuLVx0XHRcdCAgICAgdW5zaWduZWQgaW50KTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9jb21tYW5kKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3NvY2tldCAqLFxuLVx0XHRcdCAgICAgZW51bSBkcmJkX3BhY2tldCwgdW5zaWduZWQgaW50LCB2b2lkICosXG4tXHRcdFx0ICAgICB1bnNpZ25lZCBpbnQpO1xuLVxuLWV4dGVybiBpbnQgZHJiZF9zZW5kX3Bpbmcoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfcGluZ19hY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfc3RhdGVfcmVxKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsIHVuaW9uIGRyYmRfc3RhdGUpO1xuLWV4dGVybiBpbnQgY29ubl9zZW5kX3N0YXRlX3JlcShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHVuaW9uIGRyYmRfc3RhdGUsIHVuaW9uIGRyYmRfc3RhdGUpO1xuJiM0Mzt2b2lkICpjb25uX3ByZXBhcmVfY29tbWFuZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLFxuJiM0MztcdFx0XHQgICBzdHJ1Y3QgZHJiZF9zb2NrZXQgKnNvY2spXG4mIzQzO1x0X19jb25kX2FjcXVpcmVzKHRydWUsIFx1MDAyNnNvY2stXHUwMDNlbXV0ZXgpO1xuJiM0Mzt2b2lkICpkcmJkX3ByZXBhcmVfY29tbWFuZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHN0cnVjdCBkcmJkX3NvY2tldCAqc29jaylcbiYjNDM7XHRfX2NvbmRfYWNxdWlyZXModHJ1ZSwgXHUwMDI2c29jay1cdTAwM2VtdXRleCk7XG4mIzQzO2ludCBjb25uX3NlbmRfY29tbWFuZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLFxuJiM0MztcdFx0ICAgICAgc3RydWN0IGRyYmRfc29ja2V0ICpzb2NrLFxuJiM0MztcdFx0ICAgICAgZW51bSBkcmJkX3BhY2tldCBjbWQsIHVuc2lnbmVkIGludCBoZWFkZXJfc2l6ZSxcbiYjNDM7XHRcdCAgICAgIHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBzaXplKVxuJiM0MztcdF9fcmVsZWFzZXMoXHUwMDI2c29jay1cdTAwM2VtdXRleCk7XG4mIzQzO2ludCBkcmJkX3NlbmRfY29tbWFuZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHN0cnVjdCBkcmJkX3NvY2tldCAqc29jayxcbiYjNDM7XHRcdCAgICAgIGVudW0gZHJiZF9wYWNrZXQgY21kLCB1bnNpZ25lZCBpbnQgaGVhZGVyX3NpemUsXG4mIzQzO1x0XHQgICAgICB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSlcbiYjNDM7XHRfX3JlbGVhc2VzKFx1MDAyNnNvY2stXHUwMDNlbXV0ZXgpO1xuJiM0MztcbiYjNDM7aW50IGRyYmRfc2VuZF9waW5nKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xuJiM0MztpbnQgZHJiZF9zZW5kX3BpbmdfYWNrKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xuJiM0MztpbnQgZHJiZF9zZW5kX3N0YXRlX3JlcShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLFxuJiM0MztcdFx0XHR1bmlvbiBkcmJkX3N0YXRlKTtcbiYjNDM7aW50IGNvbm5fc2VuZF9zdGF0ZV9yZXEoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCB1bmlvbiBkcmJkX3N0YXRlLFxuJiM0MztcdFx0XHR1bmlvbiBkcmJkX3N0YXRlKTtcbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgZHJiZF90aHJlYWRfc3RvcChzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSlcbiB7XG5AQCAtMTk3Niw5ICYjNDM7MjAwMyw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc19zeW5jX3N0YXRlKGVudW0gZHJiZF9jb25ucyBjb25uZWN0aW9uX3N0YXRlKVxuICAqXG4gICogWW91IGhhdmUgdG8gY2FsbCBwdXRfbGRldigpIHdoZW4gZmluaXNoZWQgd29ya2luZyB3aXRoIGRldmljZS1cdTAwM2VsZGV2LlxuICAqL1xuLSNkZWZpbmUgZ2V0X2xkZXZfaWZfc3RhdGUoX2RldmljZSwgX21pbl9zdGF0ZSlcdFx0XHRcdFxcXG4tXHQoX2dldF9sZGV2X2lmX3N0YXRlKChfZGV2aWNlKSwgKF9taW5fc3RhdGUpKSA/XHRcdFx0XFxcbi1cdCAoeyBfX2FjcXVpcmUoeCk7IHRydWU7IH0pIDogZmFsc2UpXG4gI2RlZmluZSBnZXRfbGRldihfZGV2aWNlKSBnZXRfbGRldl9pZl9zdGF0ZShfZGV2aWNlLCBEX0lOQ09OU0lTVEVOVClcbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgcHV0X2xkZXYoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXG5AQCAtMTk5Myw3ICYjNDM7MjAxNyw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfbGRldihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbiBcdC8qIFRoaXMgbWF5IGJlIGNhbGxlZCBmcm9tIHNvbWUgZW5kaW8gaGFuZGxlcixcbiBcdCAqIHNvIHdlIG11c3Qgbm90IHNsZWVwIGhlcmUuICovXG4gXG4tXHRfX3JlbGVhc2UobG9jYWwpO1xuIFx0RF9BU1NFUlQoZGV2aWNlLCBpIFx1MDAzZT0gMCk7XG4gXHRpZiAoaSA9PSAwKSB7XG4gXHRcdGlmIChkaXNrX3N0YXRlID09IERfRElTS0xFU1MpXG5AQCAtMjAwNyw4ICYjNDM7MjAzMCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfbGRldihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbiBcdH1cbiB9XG4gXG4tI2lmbmRlZiBfX0NIRUNLRVJfX1xuLXN0YXRpYyBpbmxpbmUgaW50IF9nZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Rpc2tfc3RhdGUgbWlucylcbiYjNDM7c3RhdGljIGlubGluZSBpbnQgZ2V0X2xkZXZfaWZfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHRcdFx0ICAgIGVudW0gZHJiZF9kaXNrX3N0YXRlIG1pbnMpXG4ge1xuIFx0aW50IGlvX2FsbG93ZWQ7XG4gXG5AQCAtMjAyMiw5ICYjNDM7MjA0NSw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IF9nZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Rpc2tfXG4gXHRcdHB1dF9sZGV2KGRldmljZSk7XG4gXHRyZXR1cm4gaW9fYWxsb3dlZDtcbiB9XG4tI2Vsc2Vcbi1leHRlcm4gaW50IF9nZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Rpc2tfc3RhdGUgbWlucyk7XG4tI2VuZGlmXG4gXG4gLyogdGhpcyB0aHJvdHRsZXMgb24tdGhlLWZseSBhcHBsaWNhdGlvbiByZXF1ZXN0c1xuICAqIGFjY29yZGluZyB0byBtYXhfYnVmZmVycyBzZXR0aW5ncztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9pbnRlcnZhbC5oIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50ZXJ2YWwuaFxuaW5kZXggNWQzMjEzYjgxZWVkZTcuLjI1NWU5ZDA3MWFlMWQ0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50ZXJ2YWwuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50ZXJ2YWwuaFxuQEAgLTI5LDEzICYjNDM7MjksMTIgQEAgc3RhdGljIGlubGluZSBib29sIGRyYmRfaW50ZXJ2YWxfZW1wdHkoc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpXG4gXHRyZXR1cm4gUkJfRU1QVFlfTk9ERShcdTAwMjZpLVx1MDAzZXJiKTtcbiB9XG4gXG4tZXh0ZXJuIGJvb2wgZHJiZF9pbnNlcnRfaW50ZXJ2YWwoc3RydWN0IHJiX3Jvb3QgKiwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7XG4tZXh0ZXJuIGJvb2wgZHJiZF9jb250YWluc19pbnRlcnZhbChzdHJ1Y3QgcmJfcm9vdCAqLCBzZWN0b3JfdCxcbi1cdFx0XHRcdCAgIHN0cnVjdCBkcmJkX2ludGVydmFsICopO1xuLWV4dGVybiB2b2lkIGRyYmRfcmVtb3ZlX2ludGVydmFsKHN0cnVjdCByYl9yb290ICosIHN0cnVjdCBkcmJkX2ludGVydmFsICopO1xuLWV4dGVybiBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqZHJiZF9maW5kX292ZXJsYXAoc3RydWN0IHJiX3Jvb3QgKiwgc2VjdG9yX3QsXG4mIzQzO2Jvb2wgZHJiZF9pbnNlcnRfaW50ZXJ2YWwoc3RydWN0IHJiX3Jvb3QgKiwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7XG4mIzQzO2Jvb2wgZHJiZF9jb250YWluc19pbnRlcnZhbChzdHJ1Y3QgcmJfcm9vdCAqLCBzZWN0b3JfdCwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7XG4mIzQzO3ZvaWQgZHJiZF9yZW1vdmVfaW50ZXJ2YWwoc3RydWN0IHJiX3Jvb3QgKiwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7XG4mIzQzO3N0cnVjdCBkcmJkX2ludGVydmFsICpkcmJkX2ZpbmRfb3ZlcmxhcChzdHJ1Y3QgcmJfcm9vdCAqLCBzZWN0b3JfdCxcbiBcdFx0XHRcdFx0dW5zaWduZWQgaW50KTtcbi1leHRlcm4gc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmRyYmRfbmV4dF9vdmVybGFwKHN0cnVjdCBkcmJkX2ludGVydmFsICosIHNlY3Rvcl90LFxuJiM0MztzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqZHJiZF9uZXh0X292ZXJsYXAoc3RydWN0IGRyYmRfaW50ZXJ2YWwgKiwgc2VjdG9yX3QsXG4gXHRcdFx0XHRcdHVuc2lnbmVkIGludCk7XG4gXG4gI2RlZmluZSBkcmJkX2Zvcl9lYWNoX292ZXJsYXAoaSwgcm9vdCwgc2VjdG9yLCBzaXplKVx0XHRcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uY1xuaW5kZXggYTJhODQxYzg5MjAxMTEuLjZmM2MwNDI1MmI1ZGVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmNcbkBAIC0xMjgsMjUgJiM0MzsxMjgsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIGRyYmRfb3BzID0ge1xuIFx0LnJlbGVhc2VcdD0gZHJiZF9yZWxlYXNlLFxuIH07XG4gXG4tI2lmZGVmIF9fQ0hFQ0tFUl9fXG4tLyogV2hlbiBjaGVja2luZyB3aXRoIHNwYXJzZSwgYW5kIHRoaXMgaXMgYW4gaW5saW5lIGZ1bmN0aW9uLCBzcGFyc2Ugd2lsbFxuLSAgIGdpdmUgdG9ucyBvZiBmYWxzZSBwb3NpdGl2ZXMuIFdoZW4gdGhpcyBpcyBhIHJlYWwgZnVuY3Rpb25zIHNwYXJzZSB3b3Jrcy5cbi0gKi9cbi1pbnQgX2dldF9sZGV2X2lmX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBlbnVtIGRyYmRfZGlza19zdGF0ZSBtaW5zKVxuLXtcbi1cdGludCBpb19hbGxvd2VkO1xuLVxuLVx0YXRvbWljX2luYyhcdTAwMjZkZXZpY2UtXHUwMDNlbG9jYWxfY250KTtcbi1cdGlvX2FsbG93ZWQgPSAoZGV2aWNlLVx1MDAzZXN0YXRlLmRpc2sgXHUwMDNlPSBtaW5zKTtcbi1cdGlmICghaW9fYWxsb3dlZCkge1xuLVx0XHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcdTAwMjZkZXZpY2UtXHUwMDNlbG9jYWxfY250KSlcbi1cdFx0XHR3YWtlX3VwKFx1MDAyNmRldmljZS1cdTAwM2VtaXNjX3dhaXQpO1xuLVx0fVxuLVx0cmV0dXJuIGlvX2FsbG93ZWQ7XG4tfVxuLVxuLSNlbmRpZlxuLVxuIC8qKlxuICAqIHRsX3JlbGVhc2UoKSAtIG1hcmsgYXMgQkFSUklFUl9BQ0tFRCBhbGwgcmVxdWVzdHMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgdHJhbnNmZXIgbG9nIGVwb2NoXG4gICogQGNvbm5lY3Rpb246XHREUkJEIGNvbm5lY3Rpb24uXG5AQCAtMzI4Miw3ICYjNDM7MzI2Myw3IEBAIHZvaWQgZHJiZF9tZF9tYXJrX2RpcnR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxuIFx0XHRtb2RfdGltZXIoXHUwMDI2ZGV2aWNlLVx1MDAzZW1kX3N5bmNfdGltZXIsIGppZmZpZXMgJiM0MzsgNSpIWik7XG4gfVxuIFxuLXZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO3ZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbiB7XG4gXHRpbnQgaTtcbiBcbkBAIC0zMjkwLDcgJiM0MzszMjcxLDcgQEAgdm9pZCBkcmJkX3V1aWRfbW92ZV9oaXN0b3J5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbiBcdFx0ZGV2aWNlLVx1MDAzZWxkZXYtXHUwMDNlbWQudXVpZFtpJiM0MzsxXSA9IGRldmljZS1cdTAwM2VsZGV2LVx1MDAzZW1kLnV1aWRbaV07XG4gfVxuIFxuLXZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbClcbiYjNDM7dm9pZCBfX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpXG4ge1xuIFx0aWYgKGlkeCA9PSBVSV9DVVJSRU5UKSB7XG4gXHRcdGlmIChkZXZpY2UtXHUwMDNlc3RhdGUucm9sZSA9PSBSX1BSSU1BUlkpXG5AQCAtMzMwNSw3ICYjNDM7MzI4Niw3IEBAIHZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsXG4gXHRkcmJkX21kX21hcmtfZGlydHkoZGV2aWNlKTtcbiB9XG4gXG4tdm9pZCBfZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO3ZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpXG4ge1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldmljZS1cdTAwM2VsZGV2LVx1MDAzZW1kLnV1aWRfbG9jaywgZmxhZ3MpO1xuQEAgLTMzMTMsNyAmIzQzOzMyOTQsNyBAQCB2b2lkIF9kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb1xuIFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkZXZpY2UtXHUwMDNlbGRldi1cdTAwM2VtZC51dWlkX2xvY2ssIGZsYWdzKTtcbiB9XG4gXG4tdm9pZCBkcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbClcbiYjNDM7dm9pZCBkcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkZXZpY2UtXHUwMDNlbGRldi1cdTAwM2VtZC51dWlkX2xvY2ssIGZsYWdzKTtcbkBAIC0zMzMyLDcgJiM0MzszMzEzLDcgQEAgdm9pZCBkcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NcbiAgKiBDcmVhdGVzIGEgbmV3IGN1cnJlbnQgVVVJRCwgYW5kIHJvdGF0ZXMgdGhlIG9sZCBjdXJyZW50IFVVSUQgaW50b1xuICAqIHRoZSBiaXRtYXAgc2xvdC4gQ2F1c2VzIGFuIGluY3JlbWVudGFsIHJlc3luYyB1cG9uIG5leHQgY29ubmVjdC5cbiAgKi9cbi12b2lkIGRyYmRfdXVpZF9uZXdfY3VycmVudChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO3ZvaWQgZHJiZF91dWlkX25ld19jdXJyZW50KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxuIHtcbiBcdHU2NCB2YWw7XG4gXHR1bnNpZ25lZCBsb25nIGxvbmcgYm1fdXVpZDtcbkBAIC0zMzU0LDcgJiM0MzszMzM1LDcgQEAgdm9pZCBkcmJkX3V1aWRfbmV3X2N1cnJlbnQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxuIFx0ZHJiZF9tZF9zeW5jKGRldmljZSk7XG4gfVxuIFxuLXZvaWQgZHJiZF91dWlkX3NldF9ibShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO3ZvaWQgZHJiZF91dWlkX3NldF9ibShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdTY0IHZhbClcbiB7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2aWNlLVx1MDAzZWxkZXYtXHUwMDNlbWQudXVpZF9sb2NrLCBmbGFncyk7XG5AQCAtMzM4Nyw3ICYjNDM7MzM2OCw3IEBAIHZvaWQgZHJiZF91dWlkX3NldF9ibShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpXG4gICogU2V0cyBhbGwgYml0cyBpbiB0aGUgYml0bWFwIGFuZCB3cml0ZXMgdGhlIHdob2xlIGJpdG1hcCB0byBzdGFibGUgc3RvcmFnZS5cbiAgKi9cbiBpbnQgZHJiZF9ibWlvX3NldF9uX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRcdCAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbiYjNDM7XHRcdFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXG4gXG4ge1xuIFx0aW50IHJ2ID0gLUVJTztcbkBAIC0zNDE0LDcgJiM0MzszMzk1LDcgQEAgaW50IGRyYmRfYm1pb19zZXRfbl93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiAgKiBDbGVhcnMgYWxsIGJpdHMgaW4gdGhlIGJpdG1hcCBhbmQgd3JpdGVzIHRoZSB3aG9sZSBiaXRtYXAgdG8gc3RhYmxlIHN0b3JhZ2UuXG4gICovXG4gaW50IGRyYmRfYm1pb19jbGVhcl9uX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRcdCAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbiYjNDM7XHRcdFx0ICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcbiBcbiB7XG4gXHRkcmJkX3Jlc3VtZV9hbChkZXZpY2UpO1xuQEAgLTM1NDEsNyAmIzQzOzM1MjIsNyBAQCBpbnQgZHJiZF9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4gXHRyZXR1cm4gcnY7XG4gfVxuIFxuLXZvaWQgZHJiZF9tZF9zZXRfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWcpIF9fbXVzdF9ob2xkKGxvY2FsKVxuJiM0Mzt2b2lkIGRyYmRfbWRfc2V0X2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFnKVxuIHtcbiBcdGlmICgoZGV2aWNlLVx1MDAzZWxkZXYtXHUwMDNlbWQuZmxhZ3MgXHUwMDI2IGZsYWcpICE9IGZsYWcpIHtcbiBcdFx0ZHJiZF9tZF9tYXJrX2RpcnR5KGRldmljZSk7XG5AQCAtMzU0OSw3ICYjNDM7MzUzMCw3IEBAIHZvaWQgZHJiZF9tZF9zZXRfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWcpIF9fbXVzdF9ob2xkKGxvY2FsKVxuIFx0fVxuIH1cbiBcbi12b2lkIGRyYmRfbWRfY2xlYXJfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWcpIF9fbXVzdF9ob2xkKGxvY2FsKVxuJiM0Mzt2b2lkIGRyYmRfbWRfY2xlYXJfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWcpXG4ge1xuIFx0aWYgKChkZXZpY2UtXHUwMDNlbGRldi1cdTAwM2VtZC5mbGFncyBcdTAwMjYgZmxhZykgIT0gMCkge1xuIFx0XHRkcmJkX21kX21hcmtfZGlydHkoZGV2aWNlKTtcbkBAIC0zNjc4LDYgJiM0MzszNjU5LDcgQEAgaW50IGRyYmRfd2FpdF9taXNjKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSlcbiB9XG4gXG4gdm9pZCBsb2NrX2FsbF9yZXNvdXJjZXModm9pZClcbiYjNDM7XHRfX2NvbnRleHRfdW5zYWZlKGxvY2tpbmcgbG9vcClcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2U7XG4gXHRpbnQgX19tYXliZV91bnVzZWQgaSA9IDA7XG5AQCAtMzY4OSw2ICYjNDM7MzY3MSw3IEBAIHZvaWQgbG9ja19hbGxfcmVzb3VyY2VzKHZvaWQpXG4gfVxuIFxuIHZvaWQgdW5sb2NrX2FsbF9yZXNvdXJjZXModm9pZClcbiYjNDM7XHRfX2NvbnRleHRfdW5zYWZlKGxvY2tpbmcgbG9vcClcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2U7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbmwuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmNcbmluZGV4IGY5ZmZjZDY3NjA3YjU1Li43NDhiMWQwOTNmMmU2NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmNcbkBAIC05NjgsOCAmIzQzOzk2OCw5IEBAIHZvaWQgZHJiZF9yZXN1bWVfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXG4gICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIHJldHVybiB2YWx1ZXMgaW5kaWNhdGUgZXJyb3JzLlxuICAqIFlvdSBzaG91bGQgY2FsbCBkcmJkX21kX3N5bmMoKSBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXG4gICovXG4tZW51bSBkZXRlcm1pbmVfZGV2X3NpemVcbi1kcmJkX2RldGVybWluZV9kZXZfc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkZHNfZmxhZ3MgZmxhZ3MsIHN0cnVjdCByZXNpemVfcGFybXMgKnJzKSBfX211c3RfaG9sZChsb2NhbClcbiYjNDM7ZW51bSBkZXRlcm1pbmVfZGV2X3NpemUgZHJiZF9kZXRlcm1pbmVfZGV2X3NpemUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHRcdFx0XHRcdGVudW0gZGRzX2ZsYWdzIGZsYWdzLFxuJiM0MztcdFx0XHRcdFx0XHRzdHJ1Y3QgcmVzaXplX3Bhcm1zICpycylcbiB7XG4gXHRzdHJ1Y3QgbWRfb2Zmc2V0c19hbmRfc2l6ZXMge1xuIFx0XHR1NjQgbGFzdF9hZ3JlZWRfc2VjdDtcbkBAIC0zMDk3LDcgJiM0MzszMDk4LDcgQEAgc3RhdGljIGludCBkcmJkX2FkbV9zaW1wbGVfcmVxdWVzdF9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICpcbiB9XG4gXG4gc3RhdGljIGludCBkcmJkX2JtaW9fc2V0X3N1c3BfYWwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO1x0XHRcdFx0IHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcbiB7XG4gXHRpbnQgcnY7XG4gXG5AQCAtMzUyOCwxNSAmIzQzOzM1MjksNTYgQEAgaW50IGRyYmRfYWRtX2R1bXBfY29ubmVjdGlvbnNfZG9uZShzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4gXG4gZW51bSB7IFNJTkdMRV9SRVNPVVJDRSwgSVRFUkFURV9SRVNPVVJDRVMgfTtcbiBcbiYjNDM7c3RhdGljIGludCBkcmJkX25sX3B1dF9kdW1wX2Nvbm5lY3Rpb25zX3Jlc3VsdChcbiYjNDM7XHRcdHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYixcbiYjNDM7XHRcdHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSxcbiYjNDM7XHRcdHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGVudW0gZHJiZF9yZXRfY29kZSByZXRjb2RlKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRyYmRfZ2VubG1zZ2hkciAqZGg7XG4mIzQzO1xuJiM0MztcdGRoID0gZ2VubG1zZ19wdXQoc2tiLCBORVRMSU5LX0NCKGNiLVx1MDAzZXNrYikucG9ydGlkLCBjYi1cdTAwM2VubGgtXHUwMDNlbmxtc2dfc2VxLFxuJiM0MztcdFx0XHQgXHUwMDI2ZHJiZF9ubF9mYW1pbHksIE5MTV9GX01VTFRJLFxuJiM0MztcdFx0XHQgRFJCRF9BRE1fR0VUX0NPTk5FQ1RJT05TKTtcbiYjNDM7XHRpZiAoIWRoKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0ZGgtXHUwMDNlcmV0X2NvZGUgPSByZXRjb2RlO1xuJiM0MztcdGRoLVx1MDAzZW1pbm9yID0gLTFVO1xuJiM0MztcdGlmIChyZXRjb2RlID09IE5PX0VSUk9SKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgY29ubmVjdGlvbl9zdGF0aXN0aWNzIGNvbm5lY3Rpb25fc3RhdGlzdGljcztcbiYjNDM7XHRcdHN0cnVjdCBjb25uZWN0aW9uX2luZm8gY29ubmVjdGlvbl9pbmZvO1xuJiM0MztcdFx0c3RydWN0IG5ldF9jb25mICpuZXRfY29uZjtcbiYjNDM7XHRcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdFx0ZXJyID0gbmxhX3B1dF9kcmJkX2NmZ19jb250ZXh0KHNrYiwgcmVzb3VyY2UsIGNvbm5lY3Rpb24sIE5VTEwpO1xuJiM0MztcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdG5ldF9jb25mID0gcmN1X2RlcmVmZXJlbmNlKGNvbm5lY3Rpb24tXHUwMDNlbmV0X2NvbmYpO1xuJiM0MztcdFx0aWYgKG5ldF9jb25mKSB7XG4mIzQzO1x0XHRcdGVyciA9IG5ldF9jb25mX3RvX3NrYihza2IsIG5ldF9jb25mKTtcbiYjNDM7XHRcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0Y29ubmVjdGlvbl90b19pbmZvKFx1MDAyNmNvbm5lY3Rpb25faW5mbywgY29ubmVjdGlvbik7XG4mIzQzO1x0XHRlcnIgPSBjb25uZWN0aW9uX2luZm9fdG9fc2tiKHNrYiwgXHUwMDI2Y29ubmVjdGlvbl9pbmZvKTtcbiYjNDM7XHRcdGlmIChlcnIpXG4mIzQzO1x0XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0XHRjb25uZWN0aW9uX3N0YXRpc3RpY3MuY29ubl9jb25nZXN0ZWQgPVxuJiM0MztcdFx0XHR0ZXN0X2JpdChORVRfQ09OR0VTVEVELCBcdTAwMjZjb25uZWN0aW9uLVx1MDAzZWZsYWdzKTtcbiYjNDM7XHRcdGVyciA9IGNvbm5lY3Rpb25fc3RhdGlzdGljc190b19za2Ioc2tiLCBcdTAwMjZjb25uZWN0aW9uX3N0YXRpc3RpY3MpO1xuJiM0MztcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdGNiLVx1MDAzZWFyZ3NbMl0gPSAobG9uZyljb25uZWN0aW9uO1xuJiM0MztcdH1cbiYjNDM7XHRnZW5sbXNnX2VuZChza2IsIGRoKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBpbnQgZHJiZF9ubF9nZXRfY29ubmVjdGlvbnNfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbiB7XG4gXHRzdHJ1Y3QgbmxhdHRyICpyZXNvdXJjZV9maWx0ZXI7XG4gXHRzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UgPSBOVUxMLCAqbmV4dF9yZXNvdXJjZTtcbiBcdHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb247XG4tXHRpbnQgZXJyID0gMCwgcmV0Y29kZTtcbi1cdHN0cnVjdCBkcmJkX2dlbmxtc2doZHIgKmRoO1xuLVx0c3RydWN0IGNvbm5lY3Rpb25faW5mbyBjb25uZWN0aW9uX2luZm87XG4tXHRzdHJ1Y3QgY29ubmVjdGlvbl9zdGF0aXN0aWNzIGNvbm5lY3Rpb25fc3RhdGlzdGljcztcbiYjNDM7XHRpbnQgZXJyID0gMDtcbiBcbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcdHJlc291cmNlID0gKHN0cnVjdCBkcmJkX3Jlc291cmNlICopY2ItXHUwMDNlYXJnc1swXTtcbkBAIC0zNTQ0LDE3ICYjNDM7MzU4NiwyMyBAQCBpbnQgZHJiZF9ubF9nZXRfY29ubmVjdGlvbnNfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrXG4gXHRcdHJlc291cmNlX2ZpbHRlciA9IGZpbmRfY2ZnX2NvbnRleHRfYXR0cihjYi1cdTAwM2VubGgsXG4gXHRcdFx0XHREUkJEX0FfRFJCRF9DRkdfQ09OVEVYVF9DVFhfUkVTT1VSQ0VfTkFNRSk7XG4gXHRcdGlmIChyZXNvdXJjZV9maWx0ZXIpIHtcbi1cdFx0XHRyZXRjb2RlID0gRVJSX1JFU19OT1RfS05PV047XG4gXHRcdFx0cmVzb3VyY2UgPSBkcmJkX2ZpbmRfcmVzb3VyY2UobmxhX2RhdGEocmVzb3VyY2VfZmlsdGVyKSk7XG4tXHRcdFx0aWYgKCFyZXNvdXJjZSlcbi1cdFx0XHRcdGdvdG8gcHV0X3Jlc3VsdDtcbiYjNDM7XHRcdFx0aWYgKCFyZXNvdXJjZSkge1xuJiM0MztcdFx0XHRcdGVyciA9IGRyYmRfbmxfcHV0X2R1bXBfY29ubmVjdGlvbnNfcmVzdWx0KFxuJiM0MztcdFx0XHRcdFx0c2tiLCBjYiwgcmVzb3VyY2UsIE5VTEwsXG4mIzQzO1x0XHRcdFx0XHRFUlJfUkVTX05PVF9LTk9XTik7XG4mIzQzO1x0XHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4mIzQzO1x0XHRcdFx0Z290byByZXQ7XG4mIzQzO1x0XHRcdH1cbiBcdFx0XHRjYi1cdTAwM2VhcmdzWzBdID0gKGxvbmcpcmVzb3VyY2U7XG4gXHRcdFx0Y2ItXHUwMDNlYXJnc1sxXSA9IFNJTkdMRV9SRVNPVVJDRTtcbiBcdFx0fVxuIFx0fVxuIFx0aWYgKCFyZXNvdXJjZSkge1xuLVx0XHRpZiAobGlzdF9lbXB0eShcdTAwMjZkcmJkX3Jlc291cmNlcykpXG4tXHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHRpZiAobGlzdF9lbXB0eShcdTAwMjZkcmJkX3Jlc291cmNlcykpIHtcbiYjNDM7XHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4mIzQzO1x0XHRcdGdvdG8gcmV0O1xuJiM0MztcdFx0fVxuIFx0XHRyZXNvdXJjZSA9IGxpc3RfZmlyc3RfZW50cnkoXHUwMDI2ZHJiZF9yZXNvdXJjZXMsIHN0cnVjdCBkcmJkX3Jlc291cmNlLCByZXNvdXJjZXMpO1xuIFx0XHRrcmVmX2dldChcdTAwMjZyZXNvdXJjZS1cdTAwM2VrcmVmKTtcbiBcdFx0Y2ItXHUwMDNlYXJnc1swXSA9IChsb25nKXJlc291cmNlO1xuQEAgLTM1NzgsOCAmIzQzOzM2MjYsOSBAQCBpbnQgZHJiZF9ubF9nZXRfY29ubmVjdGlvbnNfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JjdShjb25uZWN0aW9uLCBcdTAwMjZyZXNvdXJjZS1cdTAwM2Vjb25uZWN0aW9ucywgY29ubmVjdGlvbnMpIHtcbiBcdFx0aWYgKCFoYXNfbmV0X2NvbmYoY29ubmVjdGlvbikpXG4gXHRcdFx0Y29udGludWU7XG4tXHRcdHJldGNvZGUgPSBOT19FUlJPUjtcbi1cdFx0Z290byBwdXRfcmVzdWx0OyAgLyogb25seSBvbmUgaXRlcmF0aW9uICovXG4mIzQzO1x0XHRlcnIgPSBkcmJkX25sX3B1dF9kdW1wX2Nvbm5lY3Rpb25zX3Jlc3VsdChza2IsIGNiLCByZXNvdXJjZSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgIGNvbm5lY3Rpb24sIE5PX0VSUk9SKTtcbiYjNDM7XHRcdGdvdG8gb3V0OyAvKiBvbmx5IG9uZSBpdGVyYXRpb24gKi9cbiBcdH1cbiBcbiBub19tb3JlX2Nvbm5lY3Rpb25zOlxuQEAgLTM2MDIsNDYgJiM0MzszNjUxLDE0IEBAIGludCBkcmJkX25sX2dldF9jb25uZWN0aW9uc19kdW1waXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2tcbiBcdFx0Y2ItXHUwMDNlYXJnc1syXSA9IDA7XG4gXHRcdGdvdG8gbmV4dF9yZXNvdXJjZTtcbiBcdH1cbi1cdGdvdG8gb3V0OyAgLyogbm8gbW9yZSByZXNvdXJjZXMgKi9cbiBcbi1wdXRfcmVzdWx0OlxuLVx0ZGggPSBnZW5sbXNnX3B1dChza2IsIE5FVExJTktfQ0IoY2ItXHUwMDNlc2tiKS5wb3J0aWQsXG4tXHRcdFx0Y2ItXHUwMDNlbmxoLVx1MDAzZW5sbXNnX3NlcSwgXHUwMDI2ZHJiZF9ubF9mYW1pbHksXG4tXHRcdFx0TkxNX0ZfTVVMVEksIERSQkRfQURNX0dFVF9DT05ORUNUSU9OUyk7XG4tXHRlcnIgPSAtRU5PTUVNO1xuLVx0aWYgKCFkaClcbi1cdFx0Z290byBvdXQ7XG4tXHRkaC1cdTAwM2VyZXRfY29kZSA9IHJldGNvZGU7XG4tXHRkaC1cdTAwM2VtaW5vciA9IC0xVTtcbi1cdGlmIChyZXRjb2RlID09IE5PX0VSUk9SKSB7XG4tXHRcdHN0cnVjdCBuZXRfY29uZiAqbmV0X2NvbmY7XG4tXG4tXHRcdGVyciA9IG5sYV9wdXRfZHJiZF9jZmdfY29udGV4dChza2IsIHJlc291cmNlLCBjb25uZWN0aW9uLCBOVUxMKTtcbi1cdFx0aWYgKGVycilcbi1cdFx0XHRnb3RvIG91dDtcbi1cdFx0bmV0X2NvbmYgPSByY3VfZGVyZWZlcmVuY2UoY29ubmVjdGlvbi1cdTAwM2VuZXRfY29uZik7XG4tXHRcdGlmIChuZXRfY29uZikge1xuLVx0XHRcdGVyciA9IG5ldF9jb25mX3RvX3NrYihza2IsIG5ldF9jb25mKTtcbi1cdFx0XHRpZiAoZXJyKVxuLVx0XHRcdFx0Z290byBvdXQ7XG4tXHRcdH1cbi1cdFx0Y29ubmVjdGlvbl90b19pbmZvKFx1MDAyNmNvbm5lY3Rpb25faW5mbywgY29ubmVjdGlvbik7XG4tXHRcdGVyciA9IGNvbm5lY3Rpb25faW5mb190b19za2Ioc2tiLCBcdTAwMjZjb25uZWN0aW9uX2luZm8pO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdGdvdG8gb3V0O1xuLVx0XHRjb25uZWN0aW9uX3N0YXRpc3RpY3MuY29ubl9jb25nZXN0ZWQgPSB0ZXN0X2JpdChORVRfQ09OR0VTVEVELCBcdTAwMjZjb25uZWN0aW9uLVx1MDAzZWZsYWdzKTtcbi1cdFx0ZXJyID0gY29ubmVjdGlvbl9zdGF0aXN0aWNzX3RvX3NrYihza2IsIFx1MDAyNmNvbm5lY3Rpb25fc3RhdGlzdGljcyk7XG4tXHRcdGlmIChlcnIpXG4tXHRcdFx0Z290byBvdXQ7XG4tXHRcdGNiLVx1MDAzZWFyZ3NbMl0gPSAobG9uZyljb25uZWN0aW9uO1xuLVx0fVxuLVx0Z2VubG1zZ19lbmQoc2tiLCBkaCk7XG4tXHRlcnIgPSAwO1xuJiM0MztcdC8qIG5vIG1vcmUgcmVzb3VyY2VzICovXG4gXG4gb3V0OlxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tXHRpZiAocmVzb3VyY2UpXG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZyZXNvdXJjZS1cdTAwM2Vjb25mX3VwZGF0ZSk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnJlc291cmNlLVx1MDAzZWNvbmZfdXBkYXRlKTtcbiYjNDM7XG4mIzQzO3JldDpcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXHRyZXR1cm4gc2tiLVx1MDAzZWxlbjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuY1xuaW5kZXggNThiOTViZjRiZGNhNmEuLmI0YTM1MGNkMDNiMDRjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuY1xuQEAgLTE3NCw4ICYjNDM7MTc0LDkgQEAgWW91IG11c3Qgbm90IGhhdmUgdGhlIHJlcV9sb2NrOlxuICAqIHdfc2FtZTogcGF5bG9hZF9zaXplID09IGxvZ2ljYWxfYmxvY2tfc2l6ZVxuICAqIHRyaW06IHBheWxvYWRfc2l6ZSA9PSAwICovXG4gc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpcbi1kcmJkX2FsbG9jX3BlZXJfcmVxKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgdTY0IGlkLCBzZWN0b3JfdCBzZWN0b3IsXG4tXHRcdCAgICB1bnNpZ25lZCBpbnQgcmVxdWVzdF9zaXplLCB1bnNpZ25lZCBpbnQgcGF5bG9hZF9zaXplLCBnZnBfdCBnZnBfbWFzaykgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO2RyYmRfYWxsb2NfcGVlcl9yZXEoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCB1NjQgaWQsXG4mIzQzO1x0XHQgICAgc2VjdG9yX3Qgc2VjdG9yLCB1bnNpZ25lZCBpbnQgcmVxdWVzdF9zaXplLFxuJiM0MztcdFx0ICAgIHVuc2lnbmVkIGludCBwYXlsb2FkX3NpemUsIGdmcF90IGdmcF9tYXNrKVxuIHtcbiBcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtXHUwMDNlZGV2aWNlO1xuIFx0c3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcTtcbkBAIC0yODcsNiAmIzQzOzI4OCw3IEBAIHN0YXRpYyBpbnQgZHJiZF9maW5pc2hfcGVlcl9yZXFzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxuIFxuIHN0YXRpYyB2b2lkIF9kcmJkX3dhaXRfZWVfbGlzdF9lbXB0eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiBcdFx0XHRcdCAgICAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcbiYjNDM7XHRfX211c3RfaG9sZChcdTAwMjZkZXZpY2UtXHUwMDNlcmVzb3VyY2UtXHUwMDNlcmVxX2xvY2spXG4ge1xuIFx0REVGSU5FX1dBSVQod2FpdCk7XG4gXG5AQCAtODk2LDYgJiM0Mzs4OTgsOCBAQCBzdGF0aWMgaW50IGNvbm5fY29ubmVjdChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKVxuIFx0aWYgKGRyYmRfc2VuZF9wcm90b2NvbChjb25uZWN0aW9uKSA9PSAtRU9QTk9UU1VQUClcbiBcdFx0cmV0dXJuIC0xO1xuIFxuJiM0MztcdC8qIGNvbnRleHRfdW5zYWZlKCkgYmVjYXVzZSBvZiB0d28gbG9ja2luZyBsb29wcyAqL1xuJiM0MztcdGNvbnRleHRfdW5zYWZlKFxuIFx0LyogUHJldmVudCBhIHJhY2UgYmV0d2VlbiByZXN5bmMtaGFuZHNoYWtlIGFuZFxuIFx0ICogYmVpbmcgcHJvbW90ZWQgdG8gUHJpbWFyeS5cbiBcdCAqXG5AQCAtOTEzLDYgJiM0Mzs5MTcsNyBAQCBzdGF0aWMgaW50IGNvbm5fY29ubmVjdChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKVxuIFxuIFx0aWRyX2Zvcl9lYWNoX2VudHJ5KFx1MDAyNmNvbm5lY3Rpb24tXHUwMDNlcGVlcl9kZXZpY2VzLCBwZWVyX2RldmljZSwgdm5yKVxuIFx0XHRtdXRleF91bmxvY2socGVlcl9kZXZpY2UtXHUwMDNlZGV2aWNlLVx1MDAzZXN0YXRlX211dGV4KTtcbiYjNDM7XHQpO1xuIFxuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0aWRyX2Zvcl9lYWNoX2VudHJ5KFx1MDAyNmNvbm5lY3Rpb24tXHUwMDNlcGVlcl9kZXZpY2VzLCBwZWVyX2RldmljZSwgdm5yKSB7XG5AQCAtMTY1Nyw3ICYjNDM7MTY2Miw3IEBAIHN0YXRpYyB2b2lkIGRyYmRfY3N1bV9lZV9zaXplKHN0cnVjdCBjcnlwdG9fc2hhc2ggKmgsXG4gICovXG4gc3RhdGljIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqXG4gcmVhZF9pbl9ibG9jayhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHU2NCBpZCwgc2VjdG9yX3Qgc2VjdG9yLFxuLVx0ICAgICAgc3RydWN0IHBhY2tldF9pbmZvICpwaSkgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO1x0ICAgICAgc3RydWN0IHBhY2tldF9pbmZvICpwaSlcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHBlZXJfZGV2aWNlLVx1MDAzZWRldmljZTtcbiBcdGNvbnN0IHNlY3Rvcl90IGNhcGFjaXR5ID0gZ2V0X2NhcGFjaXR5KGRldmljZS1cdTAwM2V2ZGlzayk7XG5AQCAtMTg2OCw4ICYjNDM7MTg3Myw4IEBAIHN0YXRpYyBpbnQgZV9lbmRfcmVzeW5jX2Jsb2NrKHN0cnVjdCBkcmJkX3dvcmsgKncsIGludCB1bnVzZWQpXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbi1zdGF0aWMgaW50IHJlY3ZfcmVzeW5jX3JlYWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IsXG4tXHRcdFx0ICAgIHN0cnVjdCBwYWNrZXRfaW5mbyAqcGkpIF9fcmVsZWFzZXMobG9jYWwpXG4mIzQzO3N0YXRpYyBpbnQgcmVjdl9yZXN5bmNfcmVhZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsXG4mIzQzO1x0XHRcdCAgICBzZWN0b3JfdCBzZWN0b3IsIHN0cnVjdCBwYWNrZXRfaW5mbyAqcGkpXG4ge1xuIFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBwZWVyX2RldmljZS1cdTAwM2VkZXZpY2U7XG4gXHRzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxO1xuQEAgLTIyMzAsNiAmIzQzOzIyMzUsNyBAQCBzdGF0aWMgYmxrX29wZl90IHdpcmVfZmxhZ3NfdG9fYmlvKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHUzMiBkcGYpXG4gXG4gc3RhdGljIHZvaWQgZmFpbF9wb3N0cG9uZWRfcmVxdWVzdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3RvcixcbiBcdFx0XHRcdCAgICB1bnNpZ25lZCBpbnQgc2l6ZSlcbiYjNDM7XHRfX211c3RfaG9sZChcdTAwMjZkZXZpY2UtXHUwMDNlcmVzb3VyY2UtXHUwMDNlcmVxX2xvY2spXG4ge1xuIFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlID0gZmlyc3RfcGVlcl9kZXZpY2UoZGV2aWNlKTtcbiBcdHN0cnVjdCBkcmJkX2ludGVydmFsICppO1xuQEAgLTIyNTYsNiAmIzQzOzIyNjIsNyBAQCBzdGF0aWMgdm9pZCBmYWlsX3Bvc3Rwb25lZF9yZXF1ZXN0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9yLFxuIFxuIHN0YXRpYyBpbnQgaGFuZGxlX3dyaXRlX2NvbmZsaWN0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiBcdFx0XHRcdCAgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSlcbiYjNDM7XHRfX211c3RfaG9sZChcdTAwMjZkZXZpY2UtXHUwMDNlcmVzb3VyY2UtXHUwMDNlcmVxX2xvY2spXG4ge1xuIFx0c3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiA9IHBlZXJfcmVxLVx1MDAzZXBlZXJfZGV2aWNlLVx1MDAzZWNvbm5lY3Rpb247XG4gXHRib29sIHJlc29sdmVfY29uZmxpY3RzID0gdGVzdF9iaXQoUkVTT0xWRV9DT05GTElDVFMsIFx1MDAyNmNvbm5lY3Rpb24tXHUwMDNlZmxhZ3MpO1xuQEAgLTI4MjYsNyAmIzQzOzI4MzMsNyBAQCBzdGF0aWMgaW50IHJlY2VpdmVfRGF0YVJlcXVlc3Qoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgc3RydWN0IHBhY2tldFxuIC8qXG4gICogZHJiZF9hc2JfcmVjb3Zlcl8wcCAgLSAgUmVjb3ZlciBhZnRlciBzcGxpdC1icmFpbiB3aXRoIG5vIHJlbWFpbmluZyBwcmltYXJpZXNcbiAgKi9cbi1zdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMHAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbiYjNDM7c3RhdGljIGludCBkcmJkX2FzYl9yZWNvdmVyXzBwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHBlZXJfZGV2aWNlLVx1MDAzZWRldmljZTtcbiBcdGludCBzZWxmLCBwZWVyLCBydiA9IC0xMDA7XG5AQCAtMjkwOSw3ICYjNDM7MjkxNiw3IEBAIHN0YXRpYyBpbnQgZHJiZF9hc2JfcmVjb3Zlcl8wcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkXG4gLypcbiAgKiBkcmJkX2FzYl9yZWNvdmVyXzFwICAtICBSZWNvdmVyIGFmdGVyIHNwbGl0LWJyYWluIHdpdGggb25lIHJlbWFpbmluZyBwcmltYXJ5XG4gICovXG4tc3RhdGljIGludCBkcmJkX2FzYl9yZWNvdmVyXzFwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO3N0YXRpYyBpbnQgZHJiZF9hc2JfcmVjb3Zlcl8xcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXG4ge1xuIFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBwZWVyX2RldmljZS1cdTAwM2VkZXZpY2U7XG4gXHRpbnQgaGcsIHJ2ID0gLTEwMDtcbkBAIC0yOTY2LDcgJiM0MzsyOTczLDcgQEAgc3RhdGljIGludCBkcmJkX2FzYl9yZWNvdmVyXzFwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGRcbiAvKlxuICAqIGRyYmRfYXNiX3JlY292ZXJfMnAgIC0gIFJlY292ZXIgYWZ0ZXIgc3BsaXQtYnJhaW4gd2l0aCB0d28gcmVtYWluaW5nIHByaW1hcmllc1xuICAqL1xuLXN0YXRpYyBpbnQgZHJiZF9hc2JfcmVjb3Zlcl8ycChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxuJiM0MztzdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMnAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxuIHtcbiBcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtXHUwMDNlZGV2aWNlO1xuIFx0aW50IGhnLCBydiA9IC0xMDA7XG5AQCAtMzA0NCw3ICYjNDM7MzA1MSw3IEBAIHN0YXRpYyB2b2lkIGRyYmRfdXVpZF9kdW1wKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICp0ZXh0LCB1NjQgKnV1aWQsXG4gICovXG4gXG4gc3RhdGljIGludCBkcmJkX3V1aWRfY29tcGFyZShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqY29uc3QgcGVlcl9kZXZpY2UsXG4tXHRcdGVudW0gZHJiZF9yb2xlIGNvbnN0IHBlZXJfcm9sZSwgaW50ICpydWxlX25yKSBfX211c3RfaG9sZChsb2NhbClcbiYjNDM7XHRcdFx0ICAgICBlbnVtIGRyYmRfcm9sZSBjb25zdCBwZWVyX3JvbGUsIGludCAqcnVsZV9ucilcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25zdCBjb25uZWN0aW9uID0gcGVlcl9kZXZpY2UtXHUwMDNlY29ubmVjdGlvbjtcbiBcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtXHUwMDNlZGV2aWNlO1xuQEAgLTMyNjQsNyAmIzQzOzMyNzEsNyBAQCBzdGF0aWMgaW50IGRyYmRfdXVpZF9jb21wYXJlKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpjb25zdCBwZWVyX2RldmljZSxcbiAgKi9cbiBzdGF0aWMgZW51bSBkcmJkX2Nvbm5zIGRyYmRfc3luY19oYW5kc2hha2Uoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLFxuIFx0XHRcdFx0XHQgICBlbnVtIGRyYmRfcm9sZSBwZWVyX3JvbGUsXG4tXHRcdFx0XHRcdCAgIGVudW0gZHJiZF9kaXNrX3N0YXRlIHBlZXJfZGlzaykgX19tdXN0X2hvbGQobG9jYWwpXG4mIzQzO1x0XHRcdFx0XHQgICBlbnVtIGRyYmRfZGlza19zdGF0ZSBwZWVyX2Rpc2spXG4ge1xuIFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBwZWVyX2RldmljZS1cdTAwM2VkZXZpY2U7XG4gXHRlbnVtIGRyYmRfY29ubnMgcnYgPSBDX01BU0s7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuY1xuaW5kZXggNzBmNzVlZjA3OTQ1N2QuLjFjYzQ1NTg0NmY5MjAzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5jXG5AQCAtOTUxLDcgJiM0Mzs5NTEsOSBAQCBzdGF0aWMgYm9vbCByZW1vdGVfZHVlX3RvX3JlYWRfYmFsYW5jaW5nKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzZVxuICAqXG4gICogT25seSB3YXkgb3V0OiByZW1vdmUgdGhlIGNvbmZsaWN0aW5nIGludGVydmFscyBmcm9tIHRoZSB0cmVlLlxuICAqL1xuLXN0YXRpYyB2b2lkIGNvbXBsZXRlX2NvbmZsaWN0aW5nX3dyaXRlcyhzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICpyZXEpXG4mIzQzO3N0YXRpYyB2b2lkIGNvbXBsZXRlX2NvbmZsaWN0aW5nX3dyaXRlcyhzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UsXG4mIzQzO1x0XHRcdFx0XHRzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICpyZXEpXG4mIzQzO1x0X19tdXN0X2hvbGQoXHUwMDI2cmVzb3VyY2UtXHUwMDNlcmVxX2xvY2spXG4ge1xuIFx0REVGSU5FX1dBSVQod2FpdCk7XG4gXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHJlcS1cdTAwM2VkZXZpY2U7XG5AQCAtOTc0LDkgJiM0Mzs5NzYsOSBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKVxuIFx0XHQvKiBJbmRpY2F0ZSB0byB3YWtlIHVwIGRldmljZS1cdTAwM2VtaXNjX3dhaXQgb24gcHJvZ3Jlc3MuICAqL1xuIFx0XHRwcmVwYXJlX3RvX3dhaXQoXHUwMDI2ZGV2aWNlLVx1MDAzZW1pc2Nfd2FpdCwgXHUwMDI2d2FpdCwgVEFTS19VTklOVEVSUlVQVElCTEUpO1xuIFx0XHRpLVx1MDAzZXdhaXRpbmcgPSB0cnVlO1xuLVx0XHRzcGluX3VubG9ja19pcnEoXHUwMDI2ZGV2aWNlLVx1MDAzZXJlc291cmNlLVx1MDAzZXJlcV9sb2NrKTtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2lycShcdTAwMjZyZXNvdXJjZS1cdTAwM2VyZXFfbG9jayk7XG4gXHRcdHNjaGVkdWxlKCk7XG4tXHRcdHNwaW5fbG9ja19pcnEoXHUwMDI2ZGV2aWNlLVx1MDAzZXJlc291cmNlLVx1MDAzZXJlcV9sb2NrKTtcbiYjNDM7XHRcdHNwaW5fbG9ja19pcnEoXHUwMDI2cmVzb3VyY2UtXHUwMDNlcmVxX2xvY2spO1xuIFx0fVxuIFx0ZmluaXNoX3dhaXQoXHUwMDI2ZGV2aWNlLVx1MDAzZW1pc2Nfd2FpdCwgXHUwMDI2d2FpdCk7XG4gfVxuQEAgLTEzMjksNyAmIzQzOzEzMzEsNyBAQCBzdGF0aWMgdm9pZCBkcmJkX3NlbmRfYW5kX3N1Ym1pdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfcmVxdWVzdFxuIFx0XHQvKiBUaGlzIG1heSB0ZW1wb3JhcmlseSBnaXZlIHVwIHRoZSByZXFfbG9jayxcbiBcdFx0ICogYnV0IHdpbGwgcmUtYXF1aXJlIGl0IGJlZm9yZSBpdCByZXR1cm5zIGhlcmUuXG4gXHRcdCAqIE5lZWRzIHRvIGJlIGJlZm9yZSB0aGUgY2hlY2sgb24gZHJiZF9zdXNwZW5kZWQoKSAqL1xuLVx0XHRjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMocmVxKTtcbiYjNDM7XHRcdGNvbXBsZXRlX2NvbmZsaWN0aW5nX3dyaXRlcyhyZXNvdXJjZSwgcmVxKTtcbiBcdFx0Lyogbm8gbW9yZSBnaXZpbmcgdXAgcmVxX2xvY2sgZnJvbSBub3cgb24hICovXG4gXG4gXHRcdC8qIGNoZWNrIGZvciBjb25nZXN0aW9uLCBhbmQgcG90ZW50aWFsbHkgc3RvcCBzZW5kaW5nXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuaFxuaW5kZXggOWFlODYwZTc1OTFiMzIuLjdmMjRjYjhlNTQyOWEzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5oXG5AQCAtMjY0LDIwICYjNDM7MjY0LDE4IEBAIHN0cnVjdCBiaW9fYW5kX2Vycm9yIHtcbiBcdGludCBlcnJvcjtcbiB9O1xuIFxuLWV4dGVybiB2b2lkIHN0YXJ0X25ld190bF9lcG9jaChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbi1leHRlcm4gdm9pZCBkcmJkX3JlcV9kZXN0cm95KHN0cnVjdCBrcmVmICprcmVmKTtcbi1leHRlcm4gaW50IF9fcmVxX21vZChzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICpyZXEsIGVudW0gZHJiZF9yZXFfZXZlbnQgd2hhdCxcbi1cdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLFxuLVx0XHRzdHJ1Y3QgYmlvX2FuZF9lcnJvciAqbSk7XG4tZXh0ZXJuIHZvaWQgY29tcGxldGVfbWFzdGVyX2JpbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0c3RydWN0IGJpb19hbmRfZXJyb3IgKm0pO1xuLWV4dGVybiB2b2lkIHJlcXVlc3RfdGltZXJfZm4oc3RydWN0IHRpbWVyX2xpc3QgKnQpO1xuLWV4dGVybiB2b2lkIHRsX3Jlc3RhcnQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgZW51bSBkcmJkX3JlcV9ldmVudCB3aGF0KTtcbi1leHRlcm4gdm9pZCBfdGxfcmVzdGFydChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQpO1xuLWV4dGVybiB2b2lkIHRsX2Fib3J0X2Rpc2tfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuJiM0Mzt2b2lkIHN0YXJ0X25ld190bF9lcG9jaChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbiYjNDM7dm9pZCBkcmJkX3JlcV9kZXN0cm95KHN0cnVjdCBrcmVmICprcmVmKTtcbiYjNDM7aW50IF9fcmVxX21vZChzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICpyZXEsIGVudW0gZHJiZF9yZXFfZXZlbnQgd2hhdCxcbiYjNDM7XHQgICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHN0cnVjdCBiaW9fYW5kX2Vycm9yICptKTtcbiYjNDM7dm9pZCBjb21wbGV0ZV9tYXN0ZXJfYmlvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgYmlvX2FuZF9lcnJvciAqbSk7XG4mIzQzO3ZvaWQgcmVxdWVzdF90aW1lcl9mbihzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7XG4mIzQzO3ZvaWQgdGxfcmVzdGFydChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQpO1xuJiM0Mzt2b2lkIF90bF9yZXN0YXJ0KHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGVudW0gZHJiZF9yZXFfZXZlbnQgd2hhdCk7XG4mIzQzO3ZvaWQgdGxfYWJvcnRfZGlza19pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4gXG4gLyogdGhpcyBpcyBpbiBkcmJkX21haW4uYyAqL1xuLWV4dGVybiB2b2lkIGRyYmRfcmVzdGFydF9yZXF1ZXN0KHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSk7XG4mIzQzO3ZvaWQgZHJiZF9yZXN0YXJ0X3JlcXVlc3Qoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKTtcbiBcbiAvKiB1c2UgdGhpcyBpZiB5b3UgZG9uJiMzOTt0IHdhbnQgdG8gZGVhbCB3aXRoIGNhbGxpbmcgY29tcGxldGVfbWFzdGVyX2JpbygpXG4gICogb3V0c2lkZSB0aGUgc3BpbmxvY2ssIGUuZy4gd2hlbiB3YWxraW5nIHNvbWUgbGlzdCBvbiBjbGVhbnVwLiAqL1xuQEAgLTMxOSw2ICYjNDM7MzE3LDYgQEAgc3RhdGljIGlubGluZSBpbnQgcmVxX21vZChzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICpyZXEsXG4gXHRyZXR1cm4gcnY7XG4gfVxuIFxuLWV4dGVybiBib29sIGRyYmRfc2hvdWxkX2RvX3JlbW90ZSh1bmlvbiBkcmJkX2Rldl9zdGF0ZSk7XG4mIzQzO2Jvb2wgZHJiZF9zaG91bGRfZG9fcmVtb3RlKHVuaW9uIGRyYmRfZGV2X3N0YXRlKTtcbiBcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuY1xuaW5kZXggYWRjYmE3ZjFkOGVhNDkuLjQxNmE3MWQ3YTYxYzA2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuY1xuQEAgLTU0OSwxOSAmIzQzOzU0OSwxMCBAQCBfcmVxX3N0X2NvbmQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuaW9uIGRyYmRfc3RhdGUgbWFzayxcbiBcdHJldHVybiBydjtcbiB9XG4gXG4tLyoqXG4tICogZHJiZF9yZXFfc3RhdGUoKSAtIFBlcmZvcm0gYW4gZXZlbnR1YWxseSBjbHVzdGVyIHdpZGUgc3RhdGUgY2hhbmdlXG4tICogQGRldmljZTpcdERSQkQgZGV2aWNlLlxuLSAqIEBtYXNrOlx0bWFzayBvZiBzdGF0ZSBiaXRzIHRvIGNoYW5nZS5cbi0gKiBAdmFsOlx0dmFsdWUgb2YgbmV3IHN0YXRlIGJpdHMuXG4tICogQGY6XHRcdGZsYWdzXG4tICpcbi0gKiBTaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSwgdXNlIGRyYmRfcmVxdWVzdF9zdGF0ZSgpIG9yXG4tICogX2RyYmRfcmVxdWVzdF9zdGF0ZSgpLlxuLSAqL1xuLXN0YXRpYyBlbnVtIGRyYmRfc3RhdGVfcnZcbi1kcmJkX3JlcV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxuLVx0ICAgICAgIHVuaW9uIGRyYmRfc3RhdGUgdmFsLCBlbnVtIGNoZ19zdGF0ZV9mbGFncyBmKVxuJiM0MztzdGF0aWMgZW51bSBkcmJkX3N0YXRlX3J2IF9fZHJiZF9yZXFfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4mIzQzO1x0XHRcdFx0XHQgICB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXG4mIzQzO1x0XHRcdFx0XHQgICB1bmlvbiBkcmJkX3N0YXRlIHZhbCxcbiYjNDM7XHRcdFx0XHRcdCAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYpXG4ge1xuIFx0c3RydWN0IGNvbXBsZXRpb24gZG9uZTtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG5AQCAtNTcxLDggJiM0Mzs1NjIsNiBAQCBkcmJkX3JlcV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxuIFxuIFx0aW5pdF9jb21wbGV0aW9uKFx1MDAyNmRvbmUpO1xuIFxuLVx0aWYgKGYgXHUwMDI2IENTX1NFUklBTElaRSlcbi1cdFx0bXV0ZXhfbG9jayhkZXZpY2UtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuIFx0aWYgKGYgXHUwMDI2IENTX0lOSElCSVRfTURfSU8pXG4gXHRcdGJ1ZmZlciA9IGRyYmRfbWRfZ2V0X2J1ZmZlcihkZXZpY2UsIF9fZnVuY19fKTtcbiBcbkBAIC02MjksOCAmIzQzOzYxOCwzNCBAQCBkcmJkX3JlcV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxuIGFib3J0OlxuIFx0aWYgKGJ1ZmZlcilcbiBcdFx0ZHJiZF9tZF9wdXRfYnVmZmVyKGRldmljZSk7XG4tXHRpZiAoZiBcdTAwMjYgQ1NfU0VSSUFMSVpFKVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gcnY7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBkcmJkX3JlcV9zdGF0ZSgpIC0gUGVyZm9ybSBhbiBldmVudHVhbGx5IGNsdXN0ZXIgd2lkZSBzdGF0ZSBjaGFuZ2VcbiYjNDM7ICogQGRldmljZTpcdERSQkQgZGV2aWNlLlxuJiM0MzsgKiBAbWFzazpcdG1hc2sgb2Ygc3RhdGUgYml0cyB0byBjaGFuZ2UuXG4mIzQzOyAqIEB2YWw6XHR2YWx1ZSBvZiBuZXcgc3RhdGUgYml0cy5cbiYjNDM7ICogQGY6XHRcdGZsYWdzXG4mIzQzOyAqXG4mIzQzOyAqIFNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LCB1c2UgZHJiZF9yZXF1ZXN0X3N0YXRlKCkgb3JcbiYjNDM7ICogX2RyYmRfcmVxdWVzdF9zdGF0ZSgpLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGVudW0gZHJiZF9zdGF0ZV9ydiBkcmJkX3JlcV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdFx0XHRcdCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXG4mIzQzO1x0XHRcdFx0XHQgdW5pb24gZHJiZF9zdGF0ZSB2YWwsXG4mIzQzO1x0XHRcdFx0XHQgZW51bSBjaGdfc3RhdGVfZmxhZ3MgZilcbiYjNDM7e1xuJiM0MztcdGVudW0gZHJiZF9zdGF0ZV9ydiBydjtcbiYjNDM7XG4mIzQzO1x0aWYgKGYgXHUwMDI2IENTX1NFUklBTElaRSkge1xuJiM0MztcdFx0bXV0ZXhfbG9jayhkZXZpY2UtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuJiM0MztcdFx0cnYgPSBfX2RyYmRfcmVxX3N0YXRlKGRldmljZSwgbWFzaywgdmFsLCBmKTtcbiBcdFx0bXV0ZXhfdW5sb2NrKGRldmljZS1cdTAwM2VzdGF0ZV9tdXRleCk7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdHJ2ID0gX19kcmJkX3JlcV9zdGF0ZShkZXZpY2UsIG1hc2ssIHZhbCwgZik7XG4mIzQzO1x0fVxuIFxuIFx0cmV0dXJuIHJ2O1xuIH1cbkBAIC02OTksNiAmIzQzOzcxNCw3IEBAIGludCBkcmJkX3JlcXVlc3RfZGV0YWNoX2ludGVycnVwdGlibGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXG4gZW51bSBkcmJkX3N0YXRlX3J2XG4gX2RyYmRfcmVxdWVzdF9zdGF0ZV9ob2xkaW5nX3N0YXRlX211dGV4KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXG4gXHRcdCAgICB1bmlvbiBkcmJkX3N0YXRlIHZhbCwgZW51bSBjaGdfc3RhdGVfZmxhZ3MgZilcbiYjNDM7XHRfX211c3RfaG9sZChcdTAwMjZkZXZpY2UtXHUwMDNlc3RhdGVfbXV0ZXgpXG4ge1xuIFx0ZW51bSBkcmJkX3N0YXRlX3J2IHJ2O1xuIFxuQEAgLTIyOTIsNiAmIzQzOzIzMDgsNyBAQCBfY29ubl9ycV9jb25kKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHVuaW9uIGRyYmRfc3RhdGUgbWFzaywgdW5pb24gZFxuIGVudW0gZHJiZF9zdGF0ZV9ydlxuIF9jb25uX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLCB1bmlvbiBkcmJkX3N0YXRlIHZhbCxcbiBcdFx0ICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGZsYWdzKVxuJiM0MztcdF9fY29udGV4dF91bnNhZmUoY29uZGl0aW9uYWwgbG9ja2luZylcbiB7XG4gXHRlbnVtIGRyYmRfc3RhdGVfcnYgcnYgPSBTU19TVUNDRVNTO1xuIFx0c3RydWN0IGFmdGVyX2Nvbm5fc3RhdGVfY2hnX3dvcmsgKmFjc2N3O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3N0YXRlLmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5oXG5pbmRleCBjYmFlYjgwMThkYmY1OS4uYTdlMzFkMDkyMDM5NmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5oXG5AQCAtMTEyLDI2ICYjNDM7MTEyLDIzIEBAIHVuaW9uIGRyYmRfZGV2X3N0YXRlIHtcbiBcdHVuc2lnbmVkIGludCBpO1xuIH07XG4gXG4tZXh0ZXJuIGVudW0gZHJiZF9zdGF0ZV9ydiBkcmJkX2NoYW5nZV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0XHRcdFx0ICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYsXG4tXHRcdFx0XHRcdCAgICB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXG4tXHRcdFx0XHRcdCAgICB1bmlvbiBkcmJkX3N0YXRlIHZhbCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9mb3JjZV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSxcbi1cdFx0XHR1bmlvbiBkcmJkX3N0YXRlKTtcbi1leHRlcm4gZW51bSBkcmJkX3N0YXRlX3J2IF9kcmJkX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICosXG4tXHRcdFx0XHRcdCAgICAgIHVuaW9uIGRyYmRfc3RhdGUsXG4tXHRcdFx0XHRcdCAgICAgIHVuaW9uIGRyYmRfc3RhdGUsXG4tXHRcdFx0XHRcdCAgICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzKTtcbi1cbi1leHRlcm4gZW51bSBkcmJkX3N0YXRlX3J2XG4mIzQzO2VudW0gZHJiZF9zdGF0ZV9ydiBkcmJkX2NoYW5nZV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiYjNDM7XHRcdFx0XHQgICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYsXG4mIzQzO1x0XHRcdFx0ICAgICB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXG4mIzQzO1x0XHRcdFx0ICAgICB1bmlvbiBkcmJkX3N0YXRlIHZhbCk7XG4mIzQzO3ZvaWQgZHJiZF9mb3JjZV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSwgdW5pb24gZHJiZF9zdGF0ZSk7XG4mIzQzO2VudW0gZHJiZF9zdGF0ZV9ydiBfZHJiZF9yZXF1ZXN0X3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLFxuJiM0MztcdFx0XHRcdCAgICAgICB1bmlvbiBkcmJkX3N0YXRlLCBlbnVtIGNoZ19zdGF0ZV9mbGFncyk7XG4mIzQzO1xuJiM0MztlbnVtIGRyYmRfc3RhdGVfcnZcbiBfZHJiZF9yZXF1ZXN0X3N0YXRlX2hvbGRpbmdfc3RhdGVfbXV0ZXgoc3RydWN0IGRyYmRfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsXG4gXHRcdFx0XHRcdHVuaW9uIGRyYmRfc3RhdGUsIGVudW0gY2hnX3N0YXRlX2ZsYWdzKTtcbiBcbi1leHRlcm4gZW51bSBkcmJkX3N0YXRlX3J2IF9kcmJkX3NldF9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSxcbi1cdFx0XHRcdFx0ICBlbnVtIGNoZ19zdGF0ZV9mbGFncyxcbi1cdFx0XHRcdFx0ICBzdHJ1Y3QgY29tcGxldGlvbiAqZG9uZSk7XG4tZXh0ZXJuIHZvaWQgcHJpbnRfc3RfZXJyKHN0cnVjdCBkcmJkX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLFxuLVx0XHRcdHVuaW9uIGRyYmRfc3RhdGUsIGVudW0gZHJiZF9zdGF0ZV9ydik7XG4mIzQzO2VudW0gZHJiZF9zdGF0ZV9ydiBfZHJiZF9zZXRfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsXG4mIzQzO1x0XHRcdFx0ICAgZW51bSBjaGdfc3RhdGVfZmxhZ3MsXG4mIzQzO1x0XHRcdFx0ICAgc3RydWN0IGNvbXBsZXRpb24gKmRvbmUpO1xuJiM0Mzt2b2lkIHByaW50X3N0X2VycihzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSwgdW5pb24gZHJiZF9zdGF0ZSxcbiYjNDM7XHRcdCAgZW51bSBkcmJkX3N0YXRlX3J2KTtcbiBcbiBlbnVtIGRyYmRfc3RhdGVfcnZcbiBfY29ubl9yZXF1ZXN0X3N0YXRlKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHVuaW9uIGRyYmRfc3RhdGUgbWFzaywgdW5pb24gZHJiZF9zdGF0ZSB2YWwsXG5AQCAtMTQxLDggJiM0MzsxMzgsOCBAQCBlbnVtIGRyYmRfc3RhdGVfcnZcbiBjb25uX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLCB1bmlvbiBkcmJkX3N0YXRlIHZhbCxcbiBcdFx0ICAgZW51bSBjaGdfc3RhdGVfZmxhZ3MgZmxhZ3MpO1xuIFxuLWV4dGVybiB2b2lkIGRyYmRfcmVzdW1lX2FsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gYm9vbCBjb25uX2FsbF92b2xzX3VuY29uZihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbiYjNDM7dm9pZCBkcmJkX3Jlc3VtZV9hbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4mIzQzO2Jvb2wgY29ubl9hbGxfdm9sc191bmNvbmYoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4gXG4gLyoqXG4gICogZHJiZF9yZXF1ZXN0X3N0YXRlKCkgLSBSZXF1ZXN0IGEgc3RhdGUgY2hhbmdlXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGVfY2hhbmdlLmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZV9jaGFuZ2UuaFxuaW5kZXggYTU2YTU3ZDY3Njg2MjkuLmY1OGE1NTAxNDE3N2RlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGVfY2hhbmdlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3N0YXRlX2NoYW5nZS5oXG5AQCAtNDAsMjUgJiM0Mzs0MCwxNyBAQCBzdHJ1Y3QgZHJiZF9zdGF0ZV9jaGFuZ2Uge1xuIFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2Vfc3RhdGVfY2hhbmdlICpwZWVyX2RldmljZXM7XG4gfTtcbiBcbi1leHRlcm4gc3RydWN0IGRyYmRfc3RhdGVfY2hhbmdlICpyZW1lbWJlcl9vbGRfc3RhdGUoc3RydWN0IGRyYmRfcmVzb3VyY2UgKiwgZ2ZwX3QpO1xuLWV4dGVybiB2b2lkIGNvcHlfb2xkX3RvX25ld19zdGF0ZV9jaGFuZ2Uoc3RydWN0IGRyYmRfc3RhdGVfY2hhbmdlICopO1xuLWV4dGVybiB2b2lkIGZvcmdldF9zdGF0ZV9jaGFuZ2Uoc3RydWN0IGRyYmRfc3RhdGVfY2hhbmdlICopO1xuLVxuLWV4dGVybiBpbnQgbm90aWZ5X3Jlc291cmNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLFxuLVx0XHRcdFx0XHQgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0XHQgdm9pZCAqLFxuLVx0XHRcdFx0XHQgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuLWV4dGVybiBpbnQgbm90aWZ5X2Nvbm5lY3Rpb25fc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosXG4tXHRcdFx0XHRcdCAgIHVuc2lnbmVkIGludCxcbi1cdFx0XHRcdFx0ICAgdm9pZCAqLFxuLVx0XHRcdFx0XHQgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7XG4tZXh0ZXJuIGludCBub3RpZnlfZGV2aWNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLFxuLVx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCxcbi1cdFx0XHRcdCAgICAgICB2b2lkICosXG4tXHRcdFx0XHQgICAgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuLWV4dGVybiBpbnQgbm90aWZ5X3BlZXJfZGV2aWNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLFxuLVx0XHRcdFx0XHQgICAgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0XHQgICAgdm9pZCAqLFxuLVx0XHRcdFx0XHQgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuJiM0MztzdHJ1Y3QgZHJiZF9zdGF0ZV9jaGFuZ2UgKnJlbWVtYmVyX29sZF9zdGF0ZShzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqLCBnZnBfdCk7XG4mIzQzO3ZvaWQgY29weV9vbGRfdG9fbmV3X3N0YXRlX2NoYW5nZShzdHJ1Y3QgZHJiZF9zdGF0ZV9jaGFuZ2UgKik7XG4mIzQzO3ZvaWQgZm9yZ2V0X3N0YXRlX2NoYW5nZShzdHJ1Y3QgZHJiZF9zdGF0ZV9jaGFuZ2UgKik7XG4mIzQzO1xuJiM0MztpbnQgbm90aWZ5X3Jlc291cmNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsIHZvaWQgKixcbiYjNDM7XHRcdFx0XHQgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuJiM0MztpbnQgbm90aWZ5X2Nvbm5lY3Rpb25fc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCwgdm9pZCAqLFxuJiM0MztcdFx0XHRcdCAgIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSB0eXBlKTtcbiYjNDM7aW50IG5vdGlmeV9kZXZpY2Vfc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCwgdm9pZCAqLFxuJiM0MztcdFx0XHQgICAgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuJiM0MztpbnQgbm90aWZ5X3BlZXJfZGV2aWNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsIHZvaWQgKixcbiYjNDM7XHRcdFx0XHQgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuIFxuICNlbmRpZiAgLyogRFJCRF9TVEFURV9DSEFOR0VfSCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3dvcmtlci5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfd29ya2VyLmNcbmluZGV4IDA2OTdmOTlmZWQxOGQ3Li42ZmVjNTliYmYwZTlhNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3dvcmtlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF93b3JrZXIuY1xuQEAgLTc4LDcgJiM0Mzs3OCw3IEBAIHZvaWQgZHJiZF9tZF9lbmRpbyhzdHJ1Y3QgYmlvICpiaW8pXG4gLyogcmVhZHMgb24gYmVoYWxmIG9mIHRoZSBwYXJ0bmVyLFxuICAqIFwmIzM0O3N1Ym1pdHRlZFwmIzM0OyBieSB0aGUgcmVjZWl2ZXJcbiAgKi9cbi1zdGF0aWMgdm9pZCBkcmJkX2VuZGlvX3JlYWRfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpIF9fcmVsZWFzZXMobG9jYWwpXG4mIzQzO3N0YXRpYyB2b2lkIGRyYmRfZW5kaW9fcmVhZF9zZWNfZmluYWwoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSlcbiB7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzID0gMDtcbiBcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSA9IHBlZXJfcmVxLVx1MDAzZXBlZXJfZGV2aWNlO1xuQEAgLTk5LDcgJiM0Mzs5OSw3IEBAIHN0YXRpYyB2b2lkIGRyYmRfZW5kaW9fcmVhZF9zZWNfZmluYWwoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSkgX19yZWxlXG4gXG4gLyogd3JpdGVzIG9uIGJlaGFsZiBvZiB0aGUgcGFydG5lciwgb3IgcmVzeW5jIHdyaXRlcyxcbiAgKiBcJiMzNDtzdWJtaXR0ZWRcJiMzNDsgYnkgdGhlIHJlY2VpdmVyLCBmaW5hbCBzdGFnZS4gICovXG4tdm9pZCBkcmJkX2VuZGlvX3dyaXRlX3NlY19maW5hbChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKSBfX3JlbGVhc2VzKGxvY2FsKVxuJiM0Mzt2b2lkIGRyYmRfZW5kaW9fd3JpdGVfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpXG4ge1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncyA9IDA7XG4gXHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UgPSBwZWVyX3JlcS1cdTAwM2VwZWVyX2RldmljZTtcbkBAIC0xOTIzLDEwICYjNDM7MTkyMyw4IEBAIHN0YXRpYyB2b2lkIGRyYmRfbGRldl9kZXN0cm95KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxuIFx0bGNfZGVzdHJveShkZXZpY2UtXHUwMDNlYWN0X2xvZyk7XG4gXHRkZXZpY2UtXHUwMDNlYWN0X2xvZyA9IE5VTEw7XG4gXG4tXHRfX2FjcXVpcmUobG9jYWwpO1xuIFx0ZHJiZF9iYWNraW5nX2Rldl9mcmVlKGRldmljZSwgZGV2aWNlLVx1MDAzZWxkZXYpO1xuIFx0ZGV2aWNlLVx1MDAzZWxkZXYgPSBOVUxMO1xuLVx0X19yZWxlYXNlKGxvY2FsKTtcbiBcbiBcdGNsZWFyX2JpdChHT0lOR19ESVNLTEVTUywgXHUwMDI2ZGV2aWNlLVx1MDAzZWZsYWdzKTtcbiBcdHdha2VfdXAoXHUwMDI2ZGV2aWNlLVx1MDAzZW1pc2Nfd2FpdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTk6NDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaXMgYSBsYXJnZSByZWZhY3RvcmluZyBhaW1lZCBhdCBmaXhpbmcgc3BhcnNlIHdhcm5pbmdzLiBJdCByZW1vdmVzIGBleHRlcm5gIGZyb20gZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluIGhlYWRlcnMsIHJlbW92ZXMgY3VzdG9tIHNwYXJzZSBhbm5vdGF0aW9ucyBsaWtlIGBfX211c3RfaG9sZChsb2NhbClgLCBgX19hY3F1aXJlKGxvY2FsKWAsIGBfX3JlbGVhc2UobG9jYWwpYCwgYW5kIHJlZmFjdG9ycyBjb2RlIHRvIGF2b2lkIGNvbmRpdGlvbmFsIGxvY2tpbmcgKGUuZy4gYGRyYmRfcmVxX3N0YXRlYCkuIEl0IGFsc28gcmVtb3ZlcyBhIGZldyBkZWZlbnNpdmUgTlVMTCBjaGVja3MgYW5kIGEgd2FybmluZyBvbiBsb2NrIGNvbnRlbnRpb24gaW4gYGRyYmRfYm1fbG9ja2AuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUgbG9naWMgdGhhdCB3b3VsZCByZXF1aXJlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0NWJiNGE4MGRjOTUzOGQ5M2NjOWY5NWVlNTE3NDg3MGIwMGNkYWQxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMTAgMTk6NDk6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvTWFrZWZpbGUgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvTWFrZWZpbGUKaW5kZXggNWZhYWE4YThlN2YwMjkuLmNhZTY1NTc4MDAxYmM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9kcmJkL01ha2VmaWxlCkBAIC0xLDQgJiM0MzsxLDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQomIzQzOwomIzQzO0NPTlRFWFRfQU5BTFlTSVMgOj0geQomIzQzOwogZHJiZC15IDo9IGRyYmRfYnVpbGR0YWcubyBkcmJkX2JpdG1hcC5vIGRyYmRfcHJvYy5vCiBkcmJkLXkgJiM0Mzs9IGRyYmRfd29ya2VyLm8gZHJiZF9yZWNlaXZlci5vIGRyYmRfcmVxLm8gZHJiZF9hY3Rsb2cubwogZHJiZC15ICYjNDM7PSBkcmJkX21haW4ubyBkcmJkX3N0cmluZ3MubyBkcmJkX25sLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2JpdG1hcC5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYml0bWFwLmMKaW5kZXggNjVlYTZlYzY2YmZkNWMuLmQ4NDliZDc4MGNhOTY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9iaXRtYXAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9iaXRtYXAuYwpAQCAtMTIyLDI0ICYjNDM7MTIyLDEzIEBAIHN0YXRpYyB2b2lkIF9fYm1fcHJpbnRfbG9ja19pbmZvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCBjaGFyICpmdW5jKQogfQogCiB2b2lkIGRyYmRfYm1fbG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MpCiYjNDM7CV9fYWNxdWlyZXMoZHJiZF9kZXZfYm1fbG9jaykKJiM0MzsJX19hY3F1aXJlcygmYW1wO2RldmljZS0mZ3Q7Yml0bWFwLSZndDtibV9jaGFuZ2UpCiB7CiAJc3RydWN0IGRyYmRfYml0bWFwICpiID0gZGV2aWNlLSZndDtiaXRtYXA7Ci0JaW50IHRyeWxvY2tfZmFpbGVkOwogCi0JaWYgKCFiKSB7Ci0JCWRyYmRfZXJyKGRldmljZSwgJiMzNDtGSVhNRSBubyBiaXRtYXAgaW4gZHJiZF9ibV9sb2NrIT9cbiYjMzQ7KTsKLQkJcmV0dXJuOwotCX0KLQotCXRyeWxvY2tfZmFpbGVkID0gIW11dGV4X3RyeWxvY2soJmFtcDtiLSZndDtibV9jaGFuZ2UpOwotCi0JaWYgKHRyeWxvY2tfZmFpbGVkKSB7Ci0JCWRyYmRfd2FybihkZXZpY2UsICYjMzQ7JXNbJWRdIGdvaW5nIHRvICYjMzk7JXMmIzM5OyBidXQgYml0bWFwIGFscmVhZHkgbG9ja2VkIGZvciAmIzM5OyVzJiMzOTsgYnkgJXNbJWRdXG4mIzM0OywKLQkJCSAgY3VycmVudC0mZ3Q7Y29tbSwgdGFza19waWRfbnIoY3VycmVudCksCi0JCQkgIHdoeSwgYi0mZ3Q7Ym1fd2h5ID86ICYjMzQ7PyYjMzQ7LAotCQkJICBiLSZndDtibV90YXNrLSZndDtjb21tLCB0YXNrX3BpZF9ucihiLSZndDtibV90YXNrKSk7Ci0JCW11dGV4X2xvY2soJmFtcDtiLSZndDtibV9jaGFuZ2UpOwotCX0KJiM0MzsJX19hY3F1aXJlKGRyYmRfZGV2X2JtX2xvY2spOwomIzQzOwltdXRleF9sb2NrKCZhbXA7Yi0mZ3Q7Ym1fY2hhbmdlKTsKIAlpZiAoQk1fTE9DS0VEX01BU0sgJmFtcDsgYi0mZ3Q7Ym1fZmxhZ3MpCiAJCWRyYmRfZXJyKGRldmljZSwgJiMzNDtGSVhNRSBiaXRtYXAgYWxyZWFkeSBsb2NrZWQgaW4gYm1fbG9ja1xuJiMzNDspOwogCWItJmd0O2JtX2ZsYWdzIHw9IGZsYWdzICZhbXA7IEJNX0xPQ0tFRF9NQVNLOwpAQCAtMTQ5LDEyICYjNDM7MTM4LDEwIEBAIHZvaWQgZHJiZF9ibV9sb2NrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncykKIH0KIAogdm9pZCBkcmJkX2JtX3VubG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkKJiM0MzsJX19yZWxlYXNlcyhkcmJkX2Rldl9ibV9sb2NrKQomIzQzOwlfX3JlbGVhc2VzKCZhbXA7ZGV2aWNlLSZndDtiaXRtYXAtJmd0O2JtX2NoYW5nZSkKIHsKIAlzdHJ1Y3QgZHJiZF9iaXRtYXAgKmIgPSBkZXZpY2UtJmd0O2JpdG1hcDsKLQlpZiAoIWIpIHsKLQkJZHJiZF9lcnIoZGV2aWNlLCAmIzM0O0ZJWE1FIG5vIGJpdG1hcCBpbiBkcmJkX2JtX3VubG9jayE/XG4mIzM0Oyk7Ci0JCXJldHVybjsKLQl9CiAKIAlpZiAoIShCTV9MT0NLRURfTUFTSyAmYW1wOyBkZXZpY2UtJmd0O2JpdG1hcC0mZ3Q7Ym1fZmxhZ3MpKQogCQlkcmJkX2VycihkZXZpY2UsICYjMzQ7RklYTUUgYml0bWFwIG5vdCBsb2NrZWQgaW4gYm1fdW5sb2NrXG4mIzM0Oyk7CkBAIC0xNjMsNiAmIzQzOzE1MCw3IEBAIHZvaWQgZHJiZF9ibV91bmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpCiAJYi0mZ3Q7Ym1fd2h5ICA9IE5VTEw7CiAJYi0mZ3Q7Ym1fdGFzayA9IE5VTEw7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7Yi0mZ3Q7Ym1fY2hhbmdlKTsKJiM0MzsJX19yZWxlYXNlKGRyYmRfZGV2X2JtX2xvY2spOwogfQogCiAvKiB3ZSBzdG9yZSBzb21lICYjMzQ7bWV0YSYjMzQ7IGluZm8gYWJvdXQgb3VyIHBhZ2VzIGluIHBhZ2UtJmd0O3ByaXZhdGUgKi8KQEAgLTk4Nyw3ICYjNDM7OTc1LDcgQEAgc3RhdGljIGlubGluZSBzZWN0b3JfdCBkcmJkX21kX2xhc3RfYml0bWFwX3NlY3RvcihzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldikKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIGJtX3BhZ2VfaW9fYXN5bmMoc3RydWN0IGRyYmRfYm1fYWlvX2N0eCAqY3R4LCBpbnQgcGFnZV9ucikgX19tdXN0X2hvbGQobG9jYWwpCiYjNDM7c3RhdGljIHZvaWQgYm1fcGFnZV9pb19hc3luYyhzdHJ1Y3QgZHJiZF9ibV9haW9fY3R4ICpjdHgsIGludCBwYWdlX25yKQogewogCXN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gY3R4LSZndDtkZXZpY2U7CiAJZW51bSByZXFfb3Agb3AgPSBjdHgtJmd0O2ZsYWdzICZhbXA7IEJNX0FJT19SRUFEID8gUkVRX09QX1JFQUQgOiBSRVFfT1BfV1JJVEU7CkBAIC0xMDYwLDcgJiM0MzsxMDQ4LDggQEAgc3RhdGljIHZvaWQgYm1fcGFnZV9pb19hc3luYyhzdHJ1Y3QgZHJiZF9ibV9haW9fY3R4ICpjdHgsIGludCBwYWdlX25yKSBfX211c3RfaG8KIC8qCiAgKiBibV9ydzogcmVhZC93cml0ZSB0aGUgd2hvbGUgYml0bWFwIGZyb20vdG8gaXRzIG9uIGRpc2sgbG9jYXRpb24uCiAgKi8KLXN0YXRpYyBpbnQgYm1fcncoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IHVuc2lnbmVkIGludCBmbGFncywgdW5zaWduZWQgbGF6eV93cml0ZW91dF91cHBlcl9pZHgpIF9fbXVzdF9ob2xkKGxvY2FsKQomIzQzO3N0YXRpYyBpbnQgYm1fcncoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IHVuc2lnbmVkIGludCBmbGFncywKJiM0MzsJCSB1bnNpZ25lZCBsYXp5X3dyaXRlb3V0X3VwcGVyX2lkeCkKIHsKIAlzdHJ1Y3QgZHJiZF9ibV9haW9fY3R4ICpjdHg7CiAJc3RydWN0IGRyYmRfYml0bWFwICpiID0gZGV2aWNlLSZndDtiaXRtYXA7CkBAIC0xMjE1LDcgJiM0MzsxMjA0LDcgQEAgc3RhdGljIGludCBibV9ydyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgdW5zaWduZWQgaW50IGZsYWdzLCB1bnNpZ25lZAogICogQGRldmljZToJRFJCRCBkZXZpY2UuCiAgKi8KIGludCBkcmJkX2JtX3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCi0JCSBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKQomIzQzOwkJIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkKIAogewogCXJldHVybiBibV9ydyhkZXZpY2UsIEJNX0FJT19SRUFELCAwKTsKQEAgLTEyMjgsNyAmIzQzOzEyMTcsNyBAQCBpbnQgZHJiZF9ibV9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAogICogV2lsbCBvbmx5IHdyaXRlIHBhZ2VzIHRoYXQgaGF2ZSBjaGFuZ2VkIHNpbmNlIGxhc3QgSU8uCiAgKi8KIGludCBkcmJkX2JtX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAotCQkgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKJiM0MzsJCSAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKQogewogCXJldHVybiBibV9ydyhkZXZpY2UsIDAsIDApOwogfQpAQCAtMTI0MCw3ICYjNDM7MTIyOSw3IEBAIGludCBkcmJkX2JtX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAogICogV2lsbCB3cml0ZSBhbGwgcGFnZXMuCiAgKi8KIGludCBkcmJkX2JtX3dyaXRlX2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKJiM0MzsJCSAgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkKIHsKIAlyZXR1cm4gYm1fcncoZGV2aWNlLCBCTV9BSU9fV1JJVEVfQUxMX1BBR0VTLCAwKTsKIH0KQEAgLTEyNTAsNyAmIzQzOzEyMzksNyBAQCBpbnQgZHJiZF9ibV93cml0ZV9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiAgKiBAZGV2aWNlOglEUkJEIGRldmljZS4KICAqIEB1cHBlcl9pZHg6CTA6IHdyaXRlIGFsbCBjaGFuZ2VkIHBhZ2VzOyAmIzQzO3ZlOiBwYWdlIGluZGV4IHRvIHN0b3Agc2Nhbm5pbmcgZm9yIGNoYW5nZWQgcGFnZXMKICAqLwotaW50IGRyYmRfYm1fd3JpdGVfbGF6eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgdXBwZXJfaWR4KSBfX211c3RfaG9sZChsb2NhbCkKJiM0MztpbnQgZHJiZF9ibV93cml0ZV9sYXp5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCB1cHBlcl9pZHgpCiB7CiAJcmV0dXJuIGJtX3J3KGRldmljZSwgQk1fQUlPX0NPUFlfUEFHRVMsIHVwcGVyX2lkeCk7CiB9CkBAIC0xMjY3LDcgJiM0MzsxMjU2LDcgQEAgaW50IGRyYmRfYm1fd3JpdGVfbGF6eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgdXBwZXJfaWR4KSBfX211c3RfaG8KICAqIHBlbmRpbmcgcmVzeW5jIGFja3MgYXJlIHN0aWxsIGJlaW5nIHByb2Nlc3NlZC4KICAqLwogaW50IGRyYmRfYm1fd3JpdGVfY29weV9wYWdlcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKJiM0MzsJCQkgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkKIHsKIAlyZXR1cm4gYm1fcncoZGV2aWNlLCBCTV9BSU9fQ09QWV9QQUdFUywgMCk7CiB9CkBAIC0xMjc2LDcgJiM0MzsxMjY1LDcgQEAgaW50IGRyYmRfYm1fd3JpdGVfY29weV9wYWdlcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKICAqIGRyYmRfYm1fd3JpdGVfaGludGVkKCkgLSBXcml0ZSBiaXRtYXAgcGFnZXMgd2l0aCAmIzM0O2hpbnQmIzM0OyBtYXJrcywgaWYgdGhleSBoYXZlIGNoYW5nZWQuCiAgKiBAZGV2aWNlOglEUkJEIGRldmljZS4KICAqLwotaW50IGRyYmRfYm1fd3JpdGVfaGludGVkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKJiM0MztpbnQgZHJiZF9ibV93cml0ZV9oaW50ZWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpCiB7CiAJcmV0dXJuIGJtX3J3KGRldmljZSwgQk1fQUlPX1dSSVRFX0hJTlRFRCB8IEJNX0FJT19DT1BZX1BBR0VTLCAwKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2NvbmZpZy5oIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfY29uZmlnLmgKaW5kZXggZDIxNTM2NWM2YmIxYjAuLjE2YTk4NWIzMGRkM2ZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9jb25maWcuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9jb25maWcuaApAQCAtNyw3ICYjNDM7Nyw3IEBACiAjaWZuZGVmIERSQkRfQ09ORklHX0gKICNkZWZpbmUgRFJCRF9DT05GSUdfSAogCi1leHRlcm4gY29uc3QgY2hhciAqZHJiZF9idWlsZHRhZyh2b2lkKTsKJiM0Mztjb25zdCBjaGFyICpkcmJkX2J1aWxkdGFnKHZvaWQpOwogCiAjZGVmaW5lIFJFTF9WRVJTSU9OICYjMzQ7OC40LjExJiMzNDsKICNkZWZpbmUgUFJPX1ZFUlNJT05fTUlOIDg2CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9pbnQuaCBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludC5oCmluZGV4IDQ4YjQ1YzMxNDJmNzZhLi43M2NlYWFiMzg0MmQwZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50LmgKQEAgLTEwOSw3ICYjNDM7MTA5LDcgQEAgZXh0ZXJuIHN0cnVjdCByYXRlbGltaXRfc3RhdGUgZHJiZF9yYXRlbGltaXRfc3RhdGU7CiBleHRlcm4gc3RydWN0IGlkciBkcmJkX2RldmljZXM7IC8qIFJDVSwgdXBkYXRlczogZ2VubF9sb2NrKCkgKi8KIGV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGRyYmRfcmVzb3VyY2VzOyAvKiBSQ1UsIHVwZGF0ZXM6IGdlbmxfbG9jaygpICovCiAKLWV4dGVybiBjb25zdCBjaGFyICpjbWRuYW1lKGVudW0gZHJiZF9wYWNrZXQgY21kKTsKJiM0Mztjb25zdCBjaGFyICpjbWRuYW1lKGVudW0gZHJiZF9wYWNrZXQgY21kKTsKIAogLyogZm9yIHNlbmRpbmcvcmVjZWl2aW5nIHRoZSBiaXRtYXAsCiAgKiBwb3NzaWJseSBpbiBzb21lIGVuY29kaW5nIHNjaGVtZSAqLwpAQCAtMTI5LDggJiM0MzsxMjksOCBAQCBzdHJ1Y3QgYm1feGZlcl9jdHggewogCXVuc2lnbmVkIGJ5dGVzWzJdOwogfTsKIAotZXh0ZXJuIHZvaWQgSU5GT19ibV94ZmVyX3N0YXRzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwKLQkJCSAgICAgICBjb25zdCBjaGFyICpkaXJlY3Rpb24sIHN0cnVjdCBibV94ZmVyX2N0eCAqYyk7CiYjNDM7dm9pZCBJTkZPX2JtX3hmZXJfc3RhdHMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLAomIzQzOwkJCWNvbnN0IGNoYXIgKmRpcmVjdGlvbiwgc3RydWN0IGJtX3hmZXJfY3R4ICpjKTsKIAogc3RhdGljIGlubGluZSB2b2lkIGJtX3hmZXJfY3R4X2JpdF90b193b3JkX29mZnNldChzdHJ1Y3QgYm1feGZlcl9jdHggKmMpCiB7CkBAIC0xNTEsNyAmIzQzOzE1MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBibV94ZmVyX2N0eF9iaXRfdG9fd29yZF9vZmZzZXQoc3RydWN0IGJtX3hmZXJfY3R4ICpjKQogI2VuZGlmCiB9CiAKLWV4dGVybiB1bnNpZ25lZCBpbnQgZHJiZF9oZWFkZXJfc2l6ZShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTsKJiM0Mzt1bnNpZ25lZCBpbnQgZHJiZF9oZWFkZXJfc2l6ZShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiBlbnVtIGRyYmRfdGhyZWFkX3N0YXRlIHsKQEAgLTE5NSwxMCAmIzQzOzE5NSwxMCBAQCBzdHJ1Y3QgZHJiZF9kZXZpY2Vfd29yayB7CiAKICNpbmNsdWRlICYjMzQ7ZHJiZF9pbnRlcnZhbC5oJiMzNDsKIAotZXh0ZXJuIGludCBkcmJkX3dhaXRfbWlzYyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7CiYjNDM7ZXh0ZXJuIHN0cnVjdCBtdXRleCByZXNvdXJjZXNfbXV0ZXg7CiAKLWV4dGVybiB2b2lkIGxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKTsKLWV4dGVybiB2b2lkIHVubG9ja19hbGxfcmVzb3VyY2VzKHZvaWQpOwomIzQzO3ZvaWQgbG9ja19hbGxfcmVzb3VyY2VzKHZvaWQpIF9fYWNxdWlyZXMoJmFtcDtyZXNvdXJjZXNfbXV0ZXgpOwomIzQzO3ZvaWQgdW5sb2NrX2FsbF9yZXNvdXJjZXModm9pZCkgX19yZWxlYXNlcygmYW1wO3Jlc291cmNlc19tdXRleCk7CiAKIHN0cnVjdCBkcmJkX3JlcXVlc3QgewogCXN0cnVjdCBkcmJkX3dvcmsgdzsKQEAgLTU1OSw3ICYjNDM7NTU5LDcgQEAgc3RydWN0IGZpZm9fYnVmZmVyIHsKIAlpbnQgdG90YWw7IC8qIHN1bSBvZiBhbGwgdmFsdWVzICovCiAJaW50IHZhbHVlc1tdIF9fY291bnRlZF9ieShzaXplKTsKIH07Ci1leHRlcm4gc3RydWN0IGZpZm9fYnVmZmVyICpmaWZvX2FsbG9jKHVuc2lnbmVkIGludCBmaWZvX3NpemUpOwomIzQzO3N0cnVjdCBmaWZvX2J1ZmZlciAqZmlmb19hbGxvYyh1bnNpZ25lZCBpbnQgZmlmb19zaXplKTsKIAogLyogZmxhZyBiaXRzIHBlciBjb25uZWN0aW9uICovCiBlbnVtIHsKQEAgLTk5OCw5MyAmIzQzOzk5OCwxMDQgQEAgZW51bSBkZHNfZmxhZ3MgewogCUREU0ZfTk9fUkVTWU5DID0gMiwgLyogRG8gbm90IHJ1biBhIHJlc3luYyBmb3IgdGhlIG5ldyBzcGFjZSAqLwogfTsKIAotZXh0ZXJuIHZvaWQgZHJiZF9pbml0X3NldF9kZWZhdWx0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7Ci1leHRlcm4gaW50ICBkcmJkX3RocmVhZF9zdGFydChzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7Ci1leHRlcm4gdm9pZCBfZHJiZF90aHJlYWRfc3RvcChzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSwgaW50IHJlc3RhcnQsIGludCB3YWl0KTsKJiM0Mzt2b2lkIGRyYmRfaW5pdF9zZXRfZGVmYXVsdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO2ludCBkcmJkX3RocmVhZF9zdGFydChzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7CiYjNDM7dm9pZCBfZHJiZF90aHJlYWRfc3RvcChzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSwgaW50IHJlc3RhcnQsIGludCB3YWl0KTsKICNpZmRlZiBDT05GSUdfU01QCi1leHRlcm4gdm9pZCBkcmJkX3RocmVhZF9jdXJyZW50X3NldF9jcHUoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpOwomIzQzO3ZvaWQgZHJiZF90aHJlYWRfY3VycmVudF9zZXRfY3B1KHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTsKICNlbHNlCiAjZGVmaW5lIGRyYmRfdGhyZWFkX2N1cnJlbnRfc2V0X2NwdShBKSAoe30pCiAjZW5kaWYKLWV4dGVybiB2b2lkIHRsX3JlbGVhc2Uoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCB1bnNpZ25lZCBpbnQgYmFycmllcl9uciwKLQkJICAgICAgIHVuc2lnbmVkIGludCBzZXRfc2l6ZSk7Ci1leHRlcm4gdm9pZCB0bF9jbGVhcihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICopOwotZXh0ZXJuIHZvaWQgZHJiZF9mcmVlX3NvY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7Ci1leHRlcm4gaW50IGRyYmRfc2VuZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLAotCQkgICAgIHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUsIHVuc2lnbmVkIG1zZ19mbGFncyk7Ci1leHRlcm4gaW50IGRyYmRfc2VuZF9hbGwoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBzdHJ1Y3Qgc29ja2V0ICosIHZvaWQgKiwgc2l6ZV90LAotCQkJIHVuc2lnbmVkKTsKLQotZXh0ZXJuIGludCBfX2RyYmRfc2VuZF9wcm90b2NvbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBlbnVtIGRyYmRfcGFja2V0IGNtZCk7Ci1leHRlcm4gaW50IGRyYmRfc2VuZF9wcm90b2NvbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTsKLWV4dGVybiBpbnQgZHJiZF9zZW5kX3V1aWRzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopOwotZXh0ZXJuIGludCBkcmJkX3NlbmRfdXVpZHNfc2tpcF9pbml0aWFsX3N5bmMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7Ci1leHRlcm4gdm9pZCBkcmJkX2dlbl9hbmRfc2VuZF9zeW5jX3V1aWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7Ci1leHRlcm4gaW50IGRyYmRfc2VuZF9zaXplcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBpbnQgdHJpZ2dlcl9yZXBseSwgZW51bSBkZHNfZmxhZ3MgZmxhZ3MpOwotZXh0ZXJuIGludCBkcmJkX3NlbmRfc3RhdGUoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSBzKTsKLWV4dGVybiBpbnQgZHJiZF9zZW5kX2N1cnJlbnRfc3RhdGUoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7Ci1leHRlcm4gaW50IGRyYmRfc2VuZF9zeW5jX3BhcmFtKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopOwotZXh0ZXJuIHZvaWQgZHJiZF9zZW5kX2JfYWNrKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHUzMiBiYXJyaWVyX25yLAotCQkJICAgIHUzMiBzZXRfc2l6ZSk7Ci1leHRlcm4gaW50IGRyYmRfc2VuZF9hY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCwKLQkJCSBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKik7Ci1leHRlcm4gdm9pZCBkcmJkX3NlbmRfYWNrX3JwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsCi0JCQkgICAgIHN0cnVjdCBwX2Jsb2NrX3JlcSAqcnApOwotZXh0ZXJuIHZvaWQgZHJiZF9zZW5kX2Fja19kcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LAotCQkJICAgICBzdHJ1Y3QgcF9kYXRhICpkcCwgaW50IGRhdGFfc2l6ZSk7Ci1leHRlcm4gaW50IGRyYmRfc2VuZF9hY2tfZXgoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCwKLQkJCSAgICBzZWN0b3JfdCBzZWN0b3IsIGludCBibGtzaXplLCB1NjQgYmxvY2tfaWQpOwotZXh0ZXJuIGludCBkcmJkX3NlbmRfb3V0X29mX3N5bmMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc3RydWN0IGRyYmRfcmVxdWVzdCAqKTsKLWV4dGVybiBpbnQgZHJiZF9zZW5kX2Jsb2NrKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsCi0JCQkgICBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKik7Ci1leHRlcm4gaW50IGRyYmRfc2VuZF9kYmxvY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKTsKLWV4dGVybiBpbnQgZHJiZF9zZW5kX2RyZXF1ZXN0KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGludCBjbWQsCi0JCQkgICAgICBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplLCB1NjQgYmxvY2tfaWQpOwotZXh0ZXJuIGludCBkcmJkX3NlbmRfZHJlcXVlc3RfY3N1bShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzZWN0b3JfdCBzZWN0b3IsCi0JCQkJICAgaW50IHNpemUsIHZvaWQgKmRpZ2VzdCwgaW50IGRpZ2VzdF9zaXplLAotCQkJCSAgIGVudW0gZHJiZF9wYWNrZXQgY21kKTsKLWV4dGVybiBpbnQgZHJiZF9zZW5kX292X3JlcXVlc3Qoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSk7Ci0KLWV4dGVybiBpbnQgZHJiZF9zZW5kX2JpdG1hcChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTsKLWV4dGVybiB2b2lkIGRyYmRfc2VuZF9zcl9yZXBseShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfc3RhdGVfcnYgcmV0Y29kZSk7Ci1leHRlcm4gdm9pZCBjb25uX3NlbmRfc3JfcmVwbHkoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgZW51bSBkcmJkX3N0YXRlX3J2IHJldGNvZGUpOwotZXh0ZXJuIGludCBkcmJkX3NlbmRfcnNfZGVhbGxvY2F0ZWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICopOwotZXh0ZXJuIHZvaWQgZHJiZF9iYWNraW5nX2Rldl9mcmVlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqbGRldik7Ci1leHRlcm4gdm9pZCBkcmJkX2RldmljZV9jbGVhbnVwKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKLWV4dGVybiB2b2lkIGRyYmRfcHJpbnRfdXVpZHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKnRleHQpOwotZXh0ZXJuIHZvaWQgZHJiZF9xdWV1ZV91bnBsdWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwotCi1leHRlcm4gdm9pZCBjb25uX21kX3N5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7Ci1leHRlcm4gdm9pZCBkcmJkX21kX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB2b2lkICpidWZmZXIpOwotZXh0ZXJuIHZvaWQgZHJiZF9tZF9zeW5jKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKLWV4dGVybiBpbnQgIGRyYmRfbWRfcmVhZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKmJkZXYpOwotZXh0ZXJuIHZvaWQgZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpOwotZXh0ZXJuIHZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxvY2FsKTsKLWV4dGVybiB2b2lkIGRyYmRfdXVpZF9uZXdfY3VycmVudChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpOwotZXh0ZXJuIHZvaWQgZHJiZF91dWlkX3NldF9ibShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpOwotZXh0ZXJuIHZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpOwotZXh0ZXJuIHZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCk7Ci1leHRlcm4gdm9pZCBkcmJkX21kX3NldF9mbGFnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgZmxhZ3MpIF9fbXVzdF9ob2xkKGxvY2FsKTsKLWV4dGVybiB2b2lkIGRyYmRfbWRfY2xlYXJfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWdzKV9fbXVzdF9ob2xkKGxvY2FsKTsKLWV4dGVybiBpbnQgZHJiZF9tZF90ZXN0X2ZsYWcoc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKiwgaW50KTsKLWV4dGVybiB2b2lkIGRyYmRfbWRfbWFya19kaXJ0eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7Ci1leHRlcm4gdm9pZCBkcmJkX3F1ZXVlX2JpdG1hcF9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJCQkgaW50ICgqaW9fZm4pKHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKSwKLQkJCQkgdm9pZCAoKmRvbmUpKHN0cnVjdCBkcmJkX2RldmljZSAqLCBpbnQpLAotCQkJCSBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncywKLQkJCQkgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTsKLWV4dGVybiBpbnQgZHJiZF9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCi0JCWludCAoKmlvX2ZuKShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiksCi0JCWNoYXIgKndoeSwgZW51bSBibV9mbGFnIGZsYWdzLAotCQlzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpOwotZXh0ZXJuIGludCBkcmJkX2JpdG1hcF9pb19mcm9tX3dvcmtlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJaW50ICgqaW9fZm4pKHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKSwKLQkJY2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MsCi0JCXN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7Ci1leHRlcm4gaW50IGRyYmRfYm1pb19zZXRfbl93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7Ci1leHRlcm4gaW50IGRyYmRfYm1pb19jbGVhcl9uX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAotCQlzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTsKJiM0Mzt2b2lkIHRsX3JlbGVhc2Uoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCB1bnNpZ25lZCBpbnQgYmFycmllcl9uciwKJiM0MzsJCXVuc2lnbmVkIGludCBzZXRfc2l6ZSk7CiYjNDM7dm9pZCB0bF9jbGVhcihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICopOwomIzQzO3ZvaWQgZHJiZF9mcmVlX3NvY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7CiYjNDM7aW50IGRyYmRfc2VuZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLAomIzQzOwkgICAgICB2b2lkICpidWYsIHNpemVfdCBzaXplLCB1bnNpZ25lZCBtc2dfZmxhZ3MpOwomIzQzO2ludCBkcmJkX3NlbmRfYWxsKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwgc3RydWN0IHNvY2tldCAqLCB2b2lkICosIHNpemVfdCwKJiM0MzsJCSAgdW5zaWduZWQpOwomIzQzOwomIzQzO2ludCBfX2RyYmRfc2VuZF9wcm90b2NvbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLAomIzQzOwkJCSBlbnVtIGRyYmRfcGFja2V0IGNtZCk7CiYjNDM7aW50IGRyYmRfc2VuZF9wcm90b2NvbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTsKJiM0MztpbnQgZHJiZF9zZW5kX3V1aWRzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopOwomIzQzO2ludCBkcmJkX3NlbmRfdXVpZHNfc2tpcF9pbml0aWFsX3N5bmMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7CiYjNDM7dm9pZCBkcmJkX2dlbl9hbmRfc2VuZF9zeW5jX3V1aWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7CiYjNDM7aW50IGRyYmRfc2VuZF9zaXplcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBpbnQgdHJpZ2dlcl9yZXBseSwKJiM0MzsJCSAgICBlbnVtIGRkc19mbGFncyBmbGFncyk7CiYjNDM7aW50IGRyYmRfc2VuZF9zdGF0ZShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlIHMpOwomIzQzO2ludCBkcmJkX3NlbmRfY3VycmVudF9zdGF0ZShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTsKJiM0MztpbnQgZHJiZF9zZW5kX3N5bmNfcGFyYW0oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7CiYjNDM7dm9pZCBkcmJkX3NlbmRfYl9hY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdTMyIGJhcnJpZXJfbnIsCiYjNDM7CQkgICAgIHUzMiBzZXRfc2l6ZSk7CiYjNDM7aW50IGRyYmRfc2VuZF9hY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCwKJiM0MzsJCSAgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICopOwomIzQzO3ZvaWQgZHJiZF9zZW5kX2Fja19ycChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LAomIzQzOwkJICAgICAgc3RydWN0IHBfYmxvY2tfcmVxICpycCk7CiYjNDM7dm9pZCBkcmJkX3NlbmRfYWNrX2RwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsCiYjNDM7CQkgICAgICBzdHJ1Y3QgcF9kYXRhICpkcCwgaW50IGRhdGFfc2l6ZSk7CiYjNDM7aW50IGRyYmRfc2VuZF9hY2tfZXgoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCwKJiM0MzsJCSAgICAgc2VjdG9yX3Qgc2VjdG9yLCBpbnQgYmxrc2l6ZSwgdTY0IGJsb2NrX2lkKTsKJiM0MztpbnQgZHJiZF9zZW5kX291dF9vZl9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3JlcXVlc3QgKik7CiYjNDM7aW50IGRyYmRfc2VuZF9ibG9jayhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LAomIzQzOwkJICAgIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqKTsKJiM0MztpbnQgZHJiZF9zZW5kX2RibG9jayhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICpyZXEpOwomIzQzO2ludCBkcmJkX3NlbmRfZHJlcXVlc3Qoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgaW50IGNtZCwgc2VjdG9yX3Qgc2VjdG9yLAomIzQzOwkJICAgICAgIGludCBzaXplLCB1NjQgYmxvY2tfaWQpOwomIzQzO2ludCBkcmJkX3NlbmRfZHJlcXVlc3RfY3N1bShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzZWN0b3JfdCBzZWN0b3IsCiYjNDM7CQkJICAgIGludCBzaXplLCB2b2lkICpkaWdlc3QsIGludCBkaWdlc3Rfc2l6ZSwKJiM0MzsJCQkgICAgZW51bSBkcmJkX3BhY2tldCBjbWQpOwomIzQzO2ludCBkcmJkX3NlbmRfb3ZfcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplKTsKJiM0MzsKJiM0MztpbnQgZHJiZF9zZW5kX2JpdG1hcChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKJiM0MzsJCSAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTsKJiM0Mzt2b2lkIGRyYmRfc2VuZF9zcl9yZXBseShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfc3RhdGVfcnYgcmV0Y29kZSk7CiYjNDM7dm9pZCBjb25uX3NlbmRfc3JfcmVwbHkoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwKJiM0MzsJCQllbnVtIGRyYmRfc3RhdGVfcnYgcmV0Y29kZSk7CiYjNDM7aW50IGRyYmRfc2VuZF9yc19kZWFsbG9jYXRlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLAomIzQzOwkJCSAgICAgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICopOwomIzQzO3ZvaWQgZHJiZF9iYWNraW5nX2Rldl9mcmVlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAomIzQzOwkJCSAgIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpsZGV2KTsKJiM0Mzt2b2lkIGRyYmRfZGV2aWNlX2NsZWFudXAoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO3ZvaWQgZHJiZF9wcmludF91dWlkcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqdGV4dCk7CiYjNDM7dm9pZCBkcmJkX3F1ZXVlX3VucGx1ZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7CiYjNDM7dm9pZCBjb25uX21kX3N5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7CiYjNDM7dm9pZCBkcmJkX21kX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB2b2lkICpidWZmZXIpOwomIzQzO3ZvaWQgZHJiZF9tZF9zeW5jKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKJiM0MztpbnQgZHJiZF9tZF9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldik7CiYjNDM7dm9pZCBkcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKTsKJiM0Mzt2b2lkIF9kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKTsKJiM0Mzt2b2lkIGRyYmRfdXVpZF9uZXdfY3VycmVudChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7dm9pZCBkcmJkX3V1aWRfc2V0X2JtKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1NjQgdmFsKTsKJiM0Mzt2b2lkIGRyYmRfdXVpZF9tb3ZlX2hpc3Rvcnkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO3ZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKTsKJiM0Mzt2b2lkIGRyYmRfbWRfc2V0X2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFncyk7CiYjNDM7dm9pZCBkcmJkX21kX2NsZWFyX2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFncyk7CiYjNDM7aW50IGRyYmRfbWRfdGVzdF9mbGFnKHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICosIGludCk7CiYjNDM7dm9pZCBkcmJkX21kX21hcmtfZGlydHkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO3ZvaWQgZHJiZF9xdWV1ZV9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiYjNDM7CQkJICBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosCiYjNDM7CQkJCSAgICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKSwKJiM0MzsJCQkgIHZvaWQgKCpkb25lKShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgaW50KSwgY2hhciAqd2h5LAomIzQzOwkJCSAgZW51bSBibV9mbGFnIGZsYWdzLAomIzQzOwkJCSAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTsKJiM0MztpbnQgZHJiZF9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiYjNDM7CQkgICBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosCiYjNDM7CQkJCXN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopLAomIzQzOwkJICAgY2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MsCiYjNDM7CQkgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpOwomIzQzO2ludCBkcmJkX2JpdG1hcF9pb19mcm9tX3dvcmtlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKJiM0MzsJCQkgICAgICAgaW50ICgqaW9fZm4pKHN0cnVjdCBkcmJkX2RldmljZSAqLAomIzQzOwkJCQkJICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopLAomIzQzOwkJCSAgICAgICBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncywKJiM0MzsJCQkgICAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTsKJiM0MztpbnQgZHJiZF9ibWlvX3NldF9uX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAomIzQzOwkJCSAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTsKJiM0MztpbnQgZHJiZF9ibWlvX2NsZWFyX25fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiYjNDM7CQkJICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7CiYjNDM7aW50IGRyYmRfd2FpdF9taXNjKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSkKJiM0MzsJX19tdXN0X2hvbGQoJmFtcDtkZXZpY2UtJmd0O3Jlc291cmNlLSZndDtyZXFfbG9jayk7CiAKIC8qIE1ldGEgZGF0YSBsYXlvdXQKICAqCkBAIC0xMjc1LDU2ICYjNDM7MTI4Niw2NCBAQCBzdHJ1Y3QgYm1fZXh0ZW50IHsKICNkZWZpbmUgRFJCRF9NQVhfQkFUQ0hfQklPX1NJWkUJIChBTF9VUERBVEVTX1BFUl9UUkFOU0FDVElPTi8yKkFMX0VYVEVOVF9TSVpFKQogI2RlZmluZSBEUkJEX01BWF9CQklPX1NFQ1RPUlMgICAgKERSQkRfTUFYX0JBVENIX0JJT19TSVpFICZndDsmZ3Q7IDkpCiAKLWV4dGVybiBpbnQgIGRyYmRfYm1faW5pdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7Ci1leHRlcm4gaW50ICBkcmJkX2JtX3Jlc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9ycywgaW50IHNldF9uZXdfYml0cyk7Ci1leHRlcm4gdm9pZCBkcmJkX2JtX2NsZWFudXAoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwotZXh0ZXJuIHZvaWQgZHJiZF9ibV9zZXRfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKLWV4dGVybiB2b2lkIGRyYmRfYm1fY2xlYXJfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKJiM0MztpbnQgZHJiZF9ibV9pbml0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKJiM0MztpbnQgZHJiZF9ibV9yZXNpemUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3RvcnMsCiYjNDM7CQkgICBpbnQgc2V0X25ld19iaXRzKTsKJiM0Mzt2b2lkIGRyYmRfYm1fY2xlYW51cChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7dm9pZCBkcmJkX2JtX3NldF9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO3ZvaWQgZHJiZF9ibV9jbGVhcl9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwogLyogc2V0L2NsZWFyL3Rlc3Qgb25seSBhIGZldyBiaXRzIGF0IGEgdGltZSAqLwotZXh0ZXJuIGludCAgZHJiZF9ibV9zZXRfYml0cygKLQkJc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgcywgdW5zaWduZWQgbG9uZyBlKTsKLWV4dGVybiBpbnQgIGRyYmRfYm1fY2xlYXJfYml0cygKLQkJc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgcywgdW5zaWduZWQgbG9uZyBlKTsKLWV4dGVybiBpbnQgZHJiZF9ibV9jb3VudF9iaXRzKAotCXN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCB1bnNpZ25lZCBsb25nIHMsIGNvbnN0IHVuc2lnbmVkIGxvbmcgZSk7CiYjNDM7aW50IGRyYmRfYm1fc2V0X2JpdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgcywKJiM0MzsJCSAgICAgdW5zaWduZWQgbG9uZyBlKTsKJiM0MztpbnQgZHJiZF9ibV9jbGVhcl9iaXRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIHMsCiYjNDM7CQkgICAgICAgdW5zaWduZWQgbG9uZyBlKTsKJiM0MztpbnQgZHJiZF9ibV9jb3VudF9iaXRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCB1bnNpZ25lZCBsb25nIHMsCiYjNDM7CQkgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBlKTsKIC8qIGJtX3NldF9iaXRzIHZhcmlhbnQgZm9yIHVzZSB3aGlsZSBob2xkaW5nIGRyYmRfYm1fbG9jaywKICAqIG1heSBwcm9jZXNzIHRoZSB3aG9sZSBiaXRtYXAgaW4gb25lIGdvICovCi1leHRlcm4gdm9pZCBfZHJiZF9ibV9zZXRfYml0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJY29uc3QgdW5zaWduZWQgbG9uZyBzLCBjb25zdCB1bnNpZ25lZCBsb25nIGUpOwotZXh0ZXJuIGludCAgZHJiZF9ibV90ZXN0X2JpdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBiaXRucik7Ci1leHRlcm4gaW50ICBkcmJkX2JtX2Vfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGVucik7Ci1leHRlcm4gaW50ICBkcmJkX2JtX3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCi0JCXN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpOwotZXh0ZXJuIHZvaWQgZHJiZF9ibV9tYXJrX2Zvcl93cml0ZW91dChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IHBhZ2VfbnIpOwotZXh0ZXJuIGludCAgZHJiZF9ibV93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7Ci1leHRlcm4gdm9pZCBkcmJkX2JtX3Jlc2V0X2FsX2hpbnRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7Ci1leHRlcm4gaW50ICBkcmJkX2JtX3dyaXRlX2hpbnRlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpOwotZXh0ZXJuIGludCAgZHJiZF9ibV93cml0ZV9sYXp5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCB1cHBlcl9pZHgpIF9fbXVzdF9ob2xkKGxvY2FsKTsKLWV4dGVybiBpbnQgZHJiZF9ibV93cml0ZV9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCi0JCXN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpOwotZXh0ZXJuIGludCAgZHJiZF9ibV93cml0ZV9jb3B5X3BhZ2VzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAotCQlzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTsKLWV4dGVybiBzaXplX3QJICAgICBkcmJkX2JtX3dvcmRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKLWV4dGVybiB1bnNpZ25lZCBsb25nIGRyYmRfYm1fYml0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7Ci1leHRlcm4gc2VjdG9yX3QgICAgICBkcmJkX2JtX2NhcGFjaXR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKJiM0Mzt2b2lkIF9kcmJkX2JtX3NldF9iaXRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCB1bnNpZ25lZCBsb25nIHMsCiYjNDM7CQkgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBlKTsKJiM0MztpbnQgZHJiZF9ibV90ZXN0X2JpdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBiaXRucik7CiYjNDM7aW50IGRyYmRfYm1fZV93ZWlnaHQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgZW5yKTsKJiM0MztpbnQgZHJiZF9ibV9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAomIzQzOwkJIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7CiYjNDM7dm9pZCBkcmJkX2JtX21hcmtfZm9yX3dyaXRlb3V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgcGFnZV9ucik7CiYjNDM7aW50IGRyYmRfYm1fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiYjNDM7CQkgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7CiYjNDM7dm9pZCBkcmJkX2JtX3Jlc2V0X2FsX2hpbnRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKJiM0MztpbnQgZHJiZF9ibV93cml0ZV9oaW50ZWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO2ludCBkcmJkX2JtX3dyaXRlX2xhenkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIHVwcGVyX2lkeCk7CiYjNDM7aW50IGRyYmRfYm1fd3JpdGVfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAomIzQzOwkJICAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTsKJiM0MztpbnQgZHJiZF9ibV93cml0ZV9jb3B5X3BhZ2VzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAomIzQzOwkJCSAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTsKJiM0MztzaXplX3QgZHJiZF9ibV93b3JkcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7dW5zaWduZWQgbG9uZyBkcmJkX2JtX2JpdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO3NlY3Rvcl90IGRyYmRfYm1fY2FwYWNpdHkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwogCiAjZGVmaW5lIERSQkRfRU5EX09GX0JJVE1BUAkofih1bnNpZ25lZCBsb25nKTApCi1leHRlcm4gdW5zaWduZWQgbG9uZyBkcmJkX2JtX2ZpbmRfbmV4dChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBibV9mbyk7CiYjNDM7dW5zaWduZWQgbG9uZyBkcmJkX2JtX2ZpbmRfbmV4dChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKJiM0MzsJCQkJdW5zaWduZWQgbG9uZyBibV9mbyk7CiAvKiBibV9maW5kX25leHQgdmFyaWFudHMgZm9yIHVzZSB3aGlsZSB5b3UgaG9sZCBkcmJkX2JtX2xvY2soKSAqLwotZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX2RyYmRfYm1fZmluZF9uZXh0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGJtX2ZvKTsKLWV4dGVybiB1bnNpZ25lZCBsb25nIF9kcmJkX2JtX2ZpbmRfbmV4dF96ZXJvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGJtX2ZvKTsKLWV4dGVybiB1bnNpZ25lZCBsb25nIF9kcmJkX2JtX3RvdGFsX3dlaWdodChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7Ci1leHRlcm4gdW5zaWduZWQgbG9uZyBkcmJkX2JtX3RvdGFsX3dlaWdodChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7dW5zaWduZWQgbG9uZyBfZHJiZF9ibV9maW5kX25leHQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiYjNDM7CQkJCSB1bnNpZ25lZCBsb25nIGJtX2ZvKTsKJiM0Mzt1bnNpZ25lZCBsb25nIF9kcmJkX2JtX2ZpbmRfbmV4dF96ZXJvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAomIzQzOwkJCQkgICAgICB1bnNpZ25lZCBsb25nIGJtX2ZvKTsKJiM0Mzt1bnNpZ25lZCBsb25nIF9kcmJkX2JtX3RvdGFsX3dlaWdodChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7dW5zaWduZWQgbG9uZyBkcmJkX2JtX3RvdGFsX3dlaWdodChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiAvKiBmb3IgcmVjZWl2ZV9iaXRtYXAgKi8KLWV4dGVybiB2b2lkIGRyYmRfYm1fbWVyZ2VfbGVsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzaXplX3Qgb2Zmc2V0LAotCQlzaXplX3QgbnVtYmVyLCB1bnNpZ25lZCBsb25nICpidWZmZXIpOwomIzQzO3ZvaWQgZHJiZF9ibV9tZXJnZV9sZWwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBudW1iZXIsCiYjNDM7CQkgICAgICAgdW5zaWduZWQgbG9uZyAqYnVmZmVyKTsKIC8qIGZvciBfZHJiZF9zZW5kX2JpdG1hcCAqLwotZXh0ZXJuIHZvaWQgZHJiZF9ibV9nZXRfbGVsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzaXplX3Qgb2Zmc2V0LAotCQlzaXplX3QgbnVtYmVyLCB1bnNpZ25lZCBsb25nICpidWZmZXIpOwomIzQzO3ZvaWQgZHJiZF9ibV9nZXRfbGVsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbnVtYmVyLAomIzQzOwkJICAgICB1bnNpZ25lZCBsb25nICpidWZmZXIpOwomIzQzOwomIzQzO3Rva2VuX2NvbnRleHRfbG9jayhkcmJkX2Rldl9ibV9sb2NrKTsKIAotZXh0ZXJuIHZvaWQgZHJiZF9ibV9sb2NrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncyk7Ci1leHRlcm4gdm9pZCBkcmJkX2JtX3VubG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7dm9pZCBkcmJkX2JtX2xvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNoYXIgKndoeSwgZW51bSBibV9mbGFnIGZsYWdzKQomIzQzOwlfX2FjcXVpcmVzKGRyYmRfZGV2X2JtX2xvY2spOwomIzQzO3ZvaWQgZHJiZF9ibV91bmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpCiYjNDM7CV9fcmVsZWFzZXMoZHJiZF9kZXZfYm1fbG9jayk7CiAvKiBkcmJkX21haW4uYyAqLwogCiBleHRlcm4gc3RydWN0IGttZW1fY2FjaGUgKmRyYmRfcmVxdWVzdF9jYWNoZTsKQEAgLTEzNTAsMzcgJiM0MzsxMzY5LDM5IEBAIGV4dGVybiBzdHJ1Y3QgYmlvX3NldCBkcmJkX21kX2lvX2Jpb19zZXQ7CiAvKiBBbmQgYSBiaW9fc2V0IGZvciBjbG9uaW5nICovCiBleHRlcm4gc3RydWN0IGJpb19zZXQgZHJiZF9pb19iaW9fc2V0OwogCi1leHRlcm4gc3RydWN0IG11dGV4IHJlc291cmNlc19tdXRleDsKLQotZXh0ZXJuIGVudW0gZHJiZF9yZXRfY29kZSBkcmJkX2NyZWF0ZV9kZXZpY2Uoc3RydWN0IGRyYmRfY29uZmlnX2NvbnRleHQgKmFkbV9jdHgsIHVuc2lnbmVkIGludCBtaW5vcik7Ci1leHRlcm4gdm9pZCBkcmJkX2Rlc3Ryb3lfZGV2aWNlKHN0cnVjdCBrcmVmICprcmVmKTsKLWV4dGVybiB2b2lkIGRyYmRfZGVsZXRlX2RldmljZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7Ci0KLWV4dGVybiBzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqZHJiZF9jcmVhdGVfcmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSk7Ci1leHRlcm4gdm9pZCBkcmJkX2ZyZWVfcmVzb3VyY2Uoc3RydWN0IGRyYmRfcmVzb3VyY2UgKnJlc291cmNlKTsKLQotZXh0ZXJuIGludCBzZXRfcmVzb3VyY2Vfb3B0aW9ucyhzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UsIHN0cnVjdCByZXNfb3B0cyAqcmVzX29wdHMpOwotZXh0ZXJuIHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5fY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCByZXNfb3B0cyAqcmVzX29wdHMpOwotZXh0ZXJuIHZvaWQgZHJiZF9kZXN0cm95X2Nvbm5lY3Rpb24oc3RydWN0IGtyZWYgKmtyZWYpOwotZXh0ZXJuIHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5fZ2V0X2J5X2FkZHJzKHZvaWQgKm15X2FkZHIsIGludCBteV9hZGRyX2xlbiwKLQkJCQkJICAgIHZvaWQgKnBlZXJfYWRkciwgaW50IHBlZXJfYWRkcl9sZW4pOwotZXh0ZXJuIHN0cnVjdCBkcmJkX3Jlc291cmNlICpkcmJkX2ZpbmRfcmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSk7Ci1leHRlcm4gdm9pZCBkcmJkX2Rlc3Ryb3lfcmVzb3VyY2Uoc3RydWN0IGtyZWYgKmtyZWYpOwotZXh0ZXJuIHZvaWQgY29ubl9mcmVlX2NyeXB0byhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTsKJiM0MztlbnVtIGRyYmRfcmV0X2NvZGUgZHJiZF9jcmVhdGVfZGV2aWNlKHN0cnVjdCBkcmJkX2NvbmZpZ19jb250ZXh0ICphZG1fY3R4LAomIzQzOwkJCQkgICAgICB1bnNpZ25lZCBpbnQgbWlub3IpOwomIzQzO3ZvaWQgZHJiZF9kZXN0cm95X2RldmljZShzdHJ1Y3Qga3JlZiAqa3JlZik7CiYjNDM7dm9pZCBkcmJkX2RlbGV0ZV9kZXZpY2Uoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzOwomIzQzO3N0cnVjdCBkcmJkX3Jlc291cmNlICpkcmJkX2NyZWF0ZV9yZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKTsKJiM0Mzt2b2lkIGRyYmRfZnJlZV9yZXNvdXJjZShzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UpOwomIzQzOwomIzQzO2ludCBzZXRfcmVzb3VyY2Vfb3B0aW9ucyhzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UsCiYjNDM7CQkJIHN0cnVjdCByZXNfb3B0cyAqcmVzX29wdHMpOwomIzQzO3N0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5fY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsCiYjNDM7CQkJCSAgICBzdHJ1Y3QgcmVzX29wdHMgKnJlc19vcHRzKTsKJiM0Mzt2b2lkIGRyYmRfZGVzdHJveV9jb25uZWN0aW9uKHN0cnVjdCBrcmVmICprcmVmKTsKJiM0MztzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uX2dldF9ieV9hZGRycyh2b2lkICpteV9hZGRyLCBpbnQgbXlfYWRkcl9sZW4sCiYjNDM7CQkJCQkgIHZvaWQgKnBlZXJfYWRkciwgaW50IHBlZXJfYWRkcl9sZW4pOwomIzQzO3N0cnVjdCBkcmJkX3Jlc291cmNlICpkcmJkX2ZpbmRfcmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSk7CiYjNDM7dm9pZCBkcmJkX2Rlc3Ryb3lfcmVzb3VyY2Uoc3RydWN0IGtyZWYgKmtyZWYpOwomIzQzO3ZvaWQgY29ubl9mcmVlX2NyeXB0byhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTsKIAogLyogZHJiZF9yZXEgKi8KLWV4dGVybiB2b2lkIGRvX3N1Ym1pdChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndzKTsKLWV4dGVybiB2b2lkIF9fZHJiZF9tYWtlX3JlcXVlc3Qoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBiaW8gKik7CiYjNDM7dm9pZCBkb19zdWJtaXQoc3RydWN0IHdvcmtfc3RydWN0ICp3cyk7CiYjNDM7dm9pZCBfX2RyYmRfbWFrZV9yZXF1ZXN0KHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgYmlvICopOwogdm9pZCBkcmJkX3N1Ym1pdF9iaW8oc3RydWN0IGJpbyAqYmlvKTsKIAogLyogZHJiZF9ubC5jICovCiAKIGV4dGVybiBzdHJ1Y3QgbXV0ZXggbm90aWZpY2F0aW9uX211dGV4OwogCi1leHRlcm4gdm9pZCBkcmJkX3N1c3BlbmRfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwotZXh0ZXJuIHZvaWQgZHJiZF9yZXN1bWVfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwotZXh0ZXJuIGNoYXIgKnBwc2l6ZShjaGFyICpidWYsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKTsKLWV4dGVybiBzZWN0b3JfdCBkcmJkX25ld19kZXZfc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKiwgc2VjdG9yX3QsIGludCk7CiYjNDM7dm9pZCBkcmJkX3N1c3BlbmRfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO3ZvaWQgZHJiZF9yZXN1bWVfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO2NoYXIgKnBwc2l6ZShjaGFyICpidWYsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKTsKJiM0MztzZWN0b3JfdCBkcmJkX25ld19kZXZfc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKiwKJiM0MzsJCQkgICBzZWN0b3JfdCwgaW50KTsKIGVudW0gZGV0ZXJtaW5lX2Rldl9zaXplIHsKIAlEU19FUlJPUl9TSFJJTksgPSAtMywKIAlEU19FUlJPUl9TUEFDRV9NRCA9IC0yLApAQCAtMTM5MCw0MSAmIzQzOzE0MTEsNDUgQEAgZW51bSBkZXRlcm1pbmVfZGV2X3NpemUgewogCURTX0dSRVcgPSAyLAogCURTX0dSRVdfRlJPTV9aRVJPID0gMywKIH07Ci1leHRlcm4gZW51bSBkZXRlcm1pbmVfZGV2X3NpemUKLWRyYmRfZGV0ZXJtaW5lX2Rldl9zaXplKHN0cnVjdCBkcmJkX2RldmljZSAqLCBlbnVtIGRkc19mbGFncywgc3RydWN0IHJlc2l6ZV9wYXJtcyAqKSBfX211c3RfaG9sZChsb2NhbCk7Ci1leHRlcm4gdm9pZCByZXN5bmNfYWZ0ZXJfb25saW5lX2dyb3coc3RydWN0IGRyYmRfZGV2aWNlICopOwotZXh0ZXJuIHZvaWQgZHJiZF9yZWNvbnNpZGVyX3F1ZXVlX3BhcmFtZXRlcnMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCi0JCQlzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldiwgc3RydWN0IG9fcWxpbSAqbyk7Ci1leHRlcm4gZW51bSBkcmJkX3N0YXRlX3J2IGRyYmRfc2V0X3JvbGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCi0JCQkJCWVudW0gZHJiZF9yb2xlIG5ld19yb2xlLAotCQkJCQlpbnQgZm9yY2UpOwotZXh0ZXJuIGJvb2wgY29ubl90cnlfb3V0ZGF0ZV9wZWVyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pOwotZXh0ZXJuIHZvaWQgY29ubl90cnlfb3V0ZGF0ZV9wZWVyX2FzeW5jKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pOwotZXh0ZXJuIGVudW0gZHJiZF9wZWVyX3N0YXRlIGNvbm5fa2hlbHBlcihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBjaGFyICpjbWQpOwotZXh0ZXJuIGludCBkcmJkX2toZWxwZXIoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNoYXIgKmNtZCk7CiYjNDM7ZW51bSBkZXRlcm1pbmVfZGV2X3NpemUgZHJiZF9kZXRlcm1pbmVfZGV2X3NpemUoc3RydWN0IGRyYmRfZGV2aWNlICosCiYjNDM7CQkJCQkJZW51bSBkZHNfZmxhZ3MsCiYjNDM7CQkJCQkJc3RydWN0IHJlc2l6ZV9wYXJtcyAqKTsKJiM0Mzt2b2lkIHJlc3luY19hZnRlcl9vbmxpbmVfZ3JvdyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKik7CiYjNDM7dm9pZCBkcmJkX3JlY29uc2lkZXJfcXVldWVfcGFyYW1ldGVycyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKJiM0MzsJCQkJICAgICAgc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKmJkZXYsCiYjNDM7CQkJCSAgICAgIHN0cnVjdCBvX3FsaW0gKm8pOwomIzQzO2VudW0gZHJiZF9zdGF0ZV9ydiBkcmJkX3NldF9yb2xlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAomIzQzOwkJCQkgZW51bSBkcmJkX3JvbGUgbmV3X3JvbGUsIGludCBmb3JjZSk7CiYjNDM7Ym9vbCBjb25uX3RyeV9vdXRkYXRlX3BlZXIoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7CiYjNDM7dm9pZCBjb25uX3RyeV9vdXRkYXRlX3BlZXJfYXN5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7CiYjNDM7ZW51bSBkcmJkX3BlZXJfc3RhdGUgY29ubl9raGVscGVyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sCiYjNDM7CQkJCSAgY2hhciAqY21kKTsKJiM0MztpbnQgZHJiZF9raGVscGVyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICpjbWQpOwogCiAvKiBkcmJkX3dvcmtlci5jICovCiAvKiBiaV9lbmRfaW8gaGFuZGxlcnMgKi8KLWV4dGVybiB2b2lkIGRyYmRfbWRfZW5kaW8oc3RydWN0IGJpbyAqYmlvKTsKLWV4dGVybiB2b2lkIGRyYmRfcGVlcl9yZXF1ZXN0X2VuZGlvKHN0cnVjdCBiaW8gKmJpbyk7Ci1leHRlcm4gdm9pZCBkcmJkX3JlcXVlc3RfZW5kaW8oc3RydWN0IGJpbyAqYmlvKTsKLWV4dGVybiBpbnQgZHJiZF93b3JrZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpOwomIzQzO3ZvaWQgZHJiZF9tZF9lbmRpbyhzdHJ1Y3QgYmlvICpiaW8pOwomIzQzO3ZvaWQgZHJiZF9wZWVyX3JlcXVlc3RfZW5kaW8oc3RydWN0IGJpbyAqYmlvKTsKJiM0Mzt2b2lkIGRyYmRfcmVxdWVzdF9lbmRpbyhzdHJ1Y3QgYmlvICpiaW8pOwomIzQzO2ludCBkcmJkX3dvcmtlcihzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7CiBlbnVtIGRyYmRfcmV0X2NvZGUgZHJiZF9yZXN5bmNfYWZ0ZXJfdmFsaWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBvX21pbm9yKTsKIHZvaWQgZHJiZF9yZXN5bmNfYWZ0ZXJfY2hhbmdlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7Ci1leHRlcm4gdm9pZCBkcmJkX3N0YXJ0X3Jlc3luYyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Nvbm5zIHNpZGUpOwotZXh0ZXJuIHZvaWQgcmVzdW1lX25leHRfc2coc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwotZXh0ZXJuIHZvaWQgc3VzcGVuZF9vdGhlcl9zZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7Ci1leHRlcm4gaW50IGRyYmRfcmVzeW5jX2ZpbmlzaGVkKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7CiYjNDM7dm9pZCBkcmJkX3N0YXJ0X3Jlc3luYyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Nvbm5zIHNpZGUpOwomIzQzO3ZvaWQgcmVzdW1lX25leHRfc2coc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO3ZvaWQgc3VzcGVuZF9vdGhlcl9zZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7aW50IGRyYmRfcmVzeW5jX2ZpbmlzaGVkKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7CiAvKiBtYXliZSByYXRoZXIgZHJiZF9tYWluLmMgPyAqLwotZXh0ZXJuIHZvaWQgKmRyYmRfbWRfZ2V0X2J1ZmZlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqaW50ZW50KTsKLWV4dGVybiB2b2lkIGRyYmRfbWRfcHV0X2J1ZmZlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7Ci1leHRlcm4gaW50IGRyYmRfbWRfc3luY19wYWdlX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAotCQlzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldiwgc2VjdG9yX3Qgc2VjdG9yLCBlbnVtIHJlcV9vcCBvcCk7Ci1leHRlcm4gdm9pZCBkcmJkX292X291dF9vZl9zeW5jX2ZvdW5kKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwKLQkJc2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSk7Ci1leHRlcm4gdm9pZCB3YWl0X3VudGlsX2RvbmVfb3JfZm9yY2VfZGV0YWNoZWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCi0JCXN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LCB1bnNpZ25lZCBpbnQgKmRvbmUpOwotZXh0ZXJuIHZvaWQgZHJiZF9yc19jb250cm9sbGVyX3Jlc2V0KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7CiYjNDM7dm9pZCAqZHJiZF9tZF9nZXRfYnVmZmVyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCBjaGFyICppbnRlbnQpOwomIzQzO3ZvaWQgZHJiZF9tZF9wdXRfYnVmZmVyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKJiM0MztpbnQgZHJiZF9tZF9zeW5jX3BhZ2VfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiYjNDM7CQkJIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LCBzZWN0b3JfdCBzZWN0b3IsCiYjNDM7CQkJIGVudW0gcmVxX29wIG9wKTsKJiM0Mzt2b2lkIGRyYmRfb3Zfb3V0X29mX3N5bmNfZm91bmQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLAomIzQzOwkJCSAgICAgICBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplKTsKJiM0Mzt2b2lkIHdhaXRfdW50aWxfZG9uZV9vcl9mb3JjZV9kZXRhY2hlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKJiM0MzsJCQkJICAgICAgIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LAomIzQzOwkJCQkgICAgICAgdW5zaWduZWQgaW50ICpkb25lKTsKJiM0Mzt2b2lkIGRyYmRfcnNfY29udHJvbGxlcl9yZXNldChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpOwogCiBzdGF0aWMgaW5saW5lIHZvaWQgb3Zfb3V0X29mX3N5bmNfcHJpbnQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKQogewpAQCAtMTQzOCw0OCAmIzQzOzE0NjMsNDcgQEAgc3RhdGljIGlubGluZSB2b2lkIG92X291dF9vZl9zeW5jX3ByaW50KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkKIAlkZXZpY2UtJmd0O292X2xhc3Rfb29zX3NpemUgPSAwOwogfQogCi0KLWV4dGVybiB2b2lkIGRyYmRfY3N1bV9iaW8oc3RydWN0IGNyeXB0b19zaGFzaCAqLCBzdHJ1Y3QgYmlvICosIHZvaWQgKik7Ci1leHRlcm4gdm9pZCBkcmJkX2NzdW1fZWUoc3RydWN0IGNyeXB0b19zaGFzaCAqLCBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKiwKLQkJCSB2b2lkICopOwomIzQzO3ZvaWQgZHJiZF9jc3VtX2JpbyhzdHJ1Y3QgY3J5cHRvX3NoYXNoICosIHN0cnVjdCBiaW8gKiwgdm9pZCAqKTsKJiM0Mzt2b2lkIGRyYmRfY3N1bV9lZShzdHJ1Y3QgY3J5cHRvX3NoYXNoICosIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqLCB2b2lkICopOwogLyogd29ya2VyIGNhbGxiYWNrcyAqLwotZXh0ZXJuIGludCB3X2VfZW5kX2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTsKLWV4dGVybiBpbnQgd19lX2VuZF9yc2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTsKLWV4dGVybiBpbnQgd19lX2VuZF9jc3VtX3JzX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7Ci1leHRlcm4gaW50IHdfZV9lbmRfb3ZfcmVwbHkoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpOwotZXh0ZXJuIGludCB3X2VfZW5kX292X3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7Ci1leHRlcm4gaW50IHdfb3ZfZmluaXNoZWQoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpOwotZXh0ZXJuIGludCB3X3Jlc3luY190aW1lcihzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7Ci1leHRlcm4gaW50IHdfc2VuZF93cml0ZV9oaW50KHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTsKLWV4dGVybiBpbnQgd19zZW5kX2RibG9jayhzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7Ci1leHRlcm4gaW50IHdfc2VuZF9yZWFkX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7Ci1leHRlcm4gaW50IHdfcmVzdGFydF9kaXNrX2lvKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTsKLWV4dGVybiBpbnQgd19zZW5kX291dF9vZl9zeW5jKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTsKLQotZXh0ZXJuIHZvaWQgcmVzeW5jX3RpbWVyX2ZuKHN0cnVjdCB0aW1lcl9saXN0ICp0KTsKLWV4dGVybiB2b2lkIHN0YXJ0X3Jlc3luY190aW1lcl9mbihzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7Ci0KLWV4dGVybiB2b2lkIGRyYmRfZW5kaW9fd3JpdGVfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpOwomIzQzO2ludCB3X2VfZW5kX2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTsKJiM0MztpbnQgd19lX2VuZF9yc2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTsKJiM0MztpbnQgd19lX2VuZF9jc3VtX3JzX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7CiYjNDM7aW50IHdfZV9lbmRfb3ZfcmVwbHkoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpOwomIzQzO2ludCB3X2VfZW5kX292X3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7CiYjNDM7aW50IHdfb3ZfZmluaXNoZWQoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpOwomIzQzO2ludCB3X3Jlc3luY190aW1lcihzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7CiYjNDM7aW50IHdfc2VuZF93cml0ZV9oaW50KHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTsKJiM0MztpbnQgd19zZW5kX2RibG9jayhzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7CiYjNDM7aW50IHdfc2VuZF9yZWFkX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7CiYjNDM7aW50IHdfcmVzdGFydF9kaXNrX2lvKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTsKJiM0MztpbnQgd19zZW5kX291dF9vZl9zeW5jKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTsKJiM0MzsKJiM0Mzt2b2lkIHJlc3luY190aW1lcl9mbihzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7CiYjNDM7dm9pZCBzdGFydF9yZXN5bmNfdGltZXJfZm4oc3RydWN0IHRpbWVyX2xpc3QgKnQpOwomIzQzOwomIzQzO3ZvaWQgZHJiZF9lbmRpb193cml0ZV9zZWNfZmluYWwoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSk7CiAKIC8qIGRyYmRfcmVjZWl2ZXIuYyAqLwotZXh0ZXJuIGludCBkcmJkX2lzc3VlX2Rpc2NhcmRfb3JfemVyb19vdXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCi0JCXNlY3Rvcl90IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnJfc2VjdG9ycywgaW50IGZsYWdzKTsKLWV4dGVybiBpbnQgZHJiZF9yZWNlaXZlcihzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7Ci1leHRlcm4gaW50IGRyYmRfYWNrX3JlY2VpdmVyKHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTsKLWV4dGVybiB2b2lkIGRyYmRfc2VuZF9hY2tzX3dmKHN0cnVjdCB3b3JrX3N0cnVjdCAqd3MpOwotZXh0ZXJuIGJvb2wgZHJiZF9yc19jX21pbl9yYXRlX3Rocm90dGxlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKLWV4dGVybiBib29sIGRyYmRfcnNfc2hvdWxkX3Nsb3dfZG93bihzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHNlY3Rvcl90IHNlY3RvciwKLQkJYm9vbCB0aHJvdHRsZV9pZl9hcHBfaXNfd2FpdGluZyk7Ci1leHRlcm4gaW50IGRyYmRfc3VibWl0X3BlZXJfcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKTsKLWV4dGVybiBpbnQgZHJiZF9mcmVlX3BlZXJfcmVxcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGxpc3RfaGVhZCAqKTsKLWV4dGVybiBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKmRyYmRfYWxsb2NfcGVlcl9yZXEoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgdTY0LAotCQkJCQkJICAgICBzZWN0b3JfdCwgdW5zaWduZWQgaW50LAotCQkJCQkJICAgICB1bnNpZ25lZCBpbnQsCi0JCQkJCQkgICAgIGdmcF90KSBfX211c3RfaG9sZChsb2NhbCk7Ci1leHRlcm4gdm9pZCBkcmJkX2ZyZWVfcGVlcl9yZXEoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcmVxKTsKLWV4dGVybiBzdHJ1Y3QgcGFnZSAqZHJiZF9hbGxvY19wYWdlcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bnNpZ25lZCBpbnQsIGJvb2wpOwotZXh0ZXJuIHZvaWQgX2RyYmRfY2xlYXJfZG9uZV9lZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGxpc3RfaGVhZCAqdG9fYmVfZnJlZWQpOwotZXh0ZXJuIGludCBkcmJkX2Nvbm5lY3RlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTsKJiM0MztpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzdGFydCwKJiM0MzsJCQkJICAgdW5zaWduZWQgaW50IG5yX3NlY3RvcnMsIGludCBmbGFncyk7CiYjNDM7aW50IGRyYmRfcmVjZWl2ZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpOwomIzQzO2ludCBkcmJkX2Fja19yZWNlaXZlcihzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7CiYjNDM7dm9pZCBkcmJkX3NlbmRfYWNrc193ZihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndzKTsKJiM0Mztib29sIGRyYmRfcnNfY19taW5fcmF0ZV90aHJvdHRsZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7Ym9vbCBkcmJkX3JzX3Nob3VsZF9zbG93X2Rvd24oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLAomIzQzOwkJCSAgICAgIHNlY3Rvcl90IHNlY3RvciwgYm9vbCB0aHJvdHRsZV9pZl9hcHBfaXNfd2FpdGluZyk7CiYjNDM7aW50IGRyYmRfc3VibWl0X3BlZXJfcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKTsKJiM0MztpbnQgZHJiZF9mcmVlX3BlZXJfcmVxcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGxpc3RfaGVhZCAqKTsKJiM0MztzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKmRyYmRfYWxsb2NfcGVlcl9yZXEoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgdTY0LAomIzQzOwkJCQkJICAgICAgc2VjdG9yX3QsIHVuc2lnbmVkIGludCwKJiM0MzsJCQkJCSAgICAgIHVuc2lnbmVkIGludCwgZ2ZwX3QpOwomIzQzO3ZvaWQgZHJiZF9mcmVlX3BlZXJfcmVxKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAomIzQzOwkJCXN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcmVxKTsKJiM0MztzdHJ1Y3QgcGFnZSAqZHJiZF9hbGxvY19wYWdlcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bnNpZ25lZCBpbnQsIGJvb2wpOwomIzQzO3ZvaWQgX2RyYmRfY2xlYXJfZG9uZV9lZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKJiM0MzsJCQkgc3RydWN0IGxpc3RfaGVhZCAqdG9fYmVfZnJlZWQpOwomIzQzO2ludCBkcmJkX2Nvbm5lY3RlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTsKIAogLyogc2V0cyB0aGUgbnVtYmVyIG9mIDUxMiBieXRlIHNlY3RvcnMgb2Ygb3VyIHZpcnR1YWwgZGV2aWNlICovCiB2b2lkIGRyYmRfc2V0X215X2NhcGFjaXR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzaXplKTsKQEAgLTE0OTAsNyAmIzQzOzE1MTQsNiBAQCB2b2lkIGRyYmRfc2V0X215X2NhcGFjaXR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzaXplKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmJkX3N1Ym1pdF9iaW9fbm9hY2N0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAogCQkJCQkgICAgIGludCBmYXVsdF90eXBlLCBzdHJ1Y3QgYmlvICpiaW8pCiB7Ci0JX19yZWxlYXNlKGxvY2FsKTsKIAlpZiAoIWJpby0mZ3Q7YmlfYmRldikgewogCQlkcmJkX2VycihkZXZpY2UsICYjMzQ7ZHJiZF9zdWJtaXRfYmlvX25vYWNjdDogYmlvLSZndDtiaV9iZGV2ID09IE5VTExcbiYjMzQ7KTsKIAkJYmlvLSZndDtiaV9zdGF0dXMgPSBCTEtfU1RTX0lPRVJSOwpAQCAtMTUxMiwzMiAmIzQzOzE1MzUsMzYgQEAgZXh0ZXJuIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqZHJiZF9wcm9jOwogaW50IGRyYmRfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpOwogCiAvKiBkcmJkX2FjdGxvZy5jICovCi1leHRlcm4gYm9vbCBkcmJkX2FsX2JlZ2luX2lvX3ByZXBhcmUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTsKLWV4dGVybiBpbnQgZHJiZF9hbF9iZWdpbl9pb19ub25ibG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpOwotZXh0ZXJuIHZvaWQgZHJiZF9hbF9iZWdpbl9pb19jb21taXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwotZXh0ZXJuIGJvb2wgZHJiZF9hbF9iZWdpbl9pb19mYXN0cGF0aChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpOwotZXh0ZXJuIHZvaWQgZHJiZF9hbF9iZWdpbl9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpOwotZXh0ZXJuIHZvaWQgZHJiZF9hbF9jb21wbGV0ZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpOwotZXh0ZXJuIHZvaWQgZHJiZF9yc19jb21wbGV0ZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9yKTsKLWV4dGVybiBpbnQgZHJiZF9yc19iZWdpbl9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9yKTsKLWV4dGVybiBpbnQgZHJiZF90cnlfcnNfYmVnaW5faW8oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IpOwotZXh0ZXJuIHZvaWQgZHJiZF9yc19jYW5jZWxfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKLWV4dGVybiBpbnQgZHJiZF9yc19kZWxfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKLWV4dGVybiB2b2lkIGRyYmRfcnNfZmFpbGVkX2lvKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwKLQkJc2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSk7Ci1leHRlcm4gdm9pZCBkcmJkX2FkdmFuY2VfcnNfbWFya3Moc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCB1bnNpZ25lZCBsb25nIHN0aWxsX3RvX2dvKTsKJiM0Mztib29sIGRyYmRfYWxfYmVnaW5faW9fcHJlcGFyZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKJiM0MzsJCQkgICAgICBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSk7CiYjNDM7aW50IGRyYmRfYWxfYmVnaW5faW9fbm9uYmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiYjNDM7CQkJICAgICAgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpOwomIzQzO3ZvaWQgZHJiZF9hbF9iZWdpbl9pb19jb21taXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwomIzQzO2Jvb2wgZHJiZF9hbF9iZWdpbl9pb19mYXN0cGF0aChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKJiM0MzsJCQkgICAgICAgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpOwomIzQzO3ZvaWQgZHJiZF9hbF9iZWdpbl9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpOwomIzQzO3ZvaWQgZHJiZF9hbF9jb21wbGV0ZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpOwomIzQzO3ZvaWQgZHJiZF9yc19jb21wbGV0ZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9yKTsKJiM0MztpbnQgZHJiZF9yc19iZWdpbl9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9yKTsKJiM0MztpbnQgZHJiZF90cnlfcnNfYmVnaW5faW8oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IpOwomIzQzO3ZvaWQgZHJiZF9yc19jYW5jZWxfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKJiM0MztpbnQgZHJiZF9yc19kZWxfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKJiM0Mzt2b2lkIGRyYmRfcnNfZmFpbGVkX2lvKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc2VjdG9yX3Qgc2VjdG9yLAomIzQzOwkJICAgICAgIGludCBzaXplKTsKJiM0Mzt2b2lkIGRyYmRfYWR2YW5jZV9yc19tYXJrcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsCiYjNDM7CQkJICAgdW5zaWduZWQgbG9uZyBzdGlsbF90b19nbyk7CiAKIGVudW0gdXBkYXRlX3N5bmNfYml0c19tb2RlIHsgUkVDT1JEX1JTX0ZBSUxFRCwgU0VUX09VVF9PRl9TWU5DLCBTRVRfSU5fU1lOQyB9OwotZXh0ZXJuIGludCBfX2RyYmRfY2hhbmdlX3N5bmMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplLAotCQllbnVtIHVwZGF0ZV9zeW5jX2JpdHNfbW9kZSBtb2RlKTsKJiM0MztpbnQgX19kcmJkX2NoYW5nZV9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc2VjdG9yX3Qgc2VjdG9yLAomIzQzOwkJICAgICAgIGludCBzaXplLCBlbnVtIHVwZGF0ZV9zeW5jX2JpdHNfbW9kZSBtb2RlKTsKICNkZWZpbmUgZHJiZF9zZXRfaW5fc3luYyhwZWVyX2RldmljZSwgc2VjdG9yLCBzaXplKSBcCiAJX19kcmJkX2NoYW5nZV9zeW5jKHBlZXJfZGV2aWNlLCBzZWN0b3IsIHNpemUsIFNFVF9JTl9TWU5DKQogI2RlZmluZSBkcmJkX3NldF9vdXRfb2Zfc3luYyhwZWVyX2RldmljZSwgc2VjdG9yLCBzaXplKSBcCiAJX19kcmJkX2NoYW5nZV9zeW5jKHBlZXJfZGV2aWNlLCBzZWN0b3IsIHNpemUsIFNFVF9PVVRfT0ZfU1lOQykKICNkZWZpbmUgZHJiZF9yc19mYWlsZWRfaW8ocGVlcl9kZXZpY2UsIHNlY3Rvciwgc2l6ZSkgXAogCV9fZHJiZF9jaGFuZ2Vfc3luYyhwZWVyX2RldmljZSwgc2VjdG9yLCBzaXplLCBSRUNPUkRfUlNfRkFJTEVEKQotZXh0ZXJuIHZvaWQgZHJiZF9hbF9zaHJpbmsoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwotZXh0ZXJuIGludCBkcmJkX2FsX2luaXRpYWxpemUoc3RydWN0IGRyYmRfZGV2aWNlICosIHZvaWQgKik7CiYjNDM7dm9pZCBkcmJkX2FsX3NocmluayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7aW50IGRyYmRfYWxfaW5pdGlhbGl6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdm9pZCAqKTsKIAogLyogZHJiZF9ubC5jICovCiAvKiBzdGF0ZSBpbmZvIGJyb2FkY2FzdCAqLwpAQCAtMTU1NiwyOCAmIzQzOzE1ODMsMjAgQEAgc3RydWN0IHNpYl9pbmZvIHsKIH07CiB2b2lkIGRyYmRfYmNhc3RfZXZlbnQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IHN0cnVjdCBzaWJfaW5mbyAqc2liKTsKIAotZXh0ZXJuIGludCBub3RpZnlfcmVzb3VyY2Vfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKiwKLQkJCQkgIHVuc2lnbmVkIGludCwKLQkJCQkgIHN0cnVjdCBkcmJkX3Jlc291cmNlICosCi0JCQkJICBzdHJ1Y3QgcmVzb3VyY2VfaW5mbyAqLAotCQkJCSAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTsKLWV4dGVybiBpbnQgbm90aWZ5X2RldmljZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLAotCQkJCXVuc2lnbmVkIGludCwKLQkJCQlzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwKLQkJCQlzdHJ1Y3QgZGV2aWNlX2luZm8gKiwKLQkJCQllbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpOwotZXh0ZXJuIGludCBub3RpZnlfY29ubmVjdGlvbl9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLAotCQkJCSAgICB1bnNpZ25lZCBpbnQsCi0JCQkJICAgIHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwKLQkJCQkgICAgc3RydWN0IGNvbm5lY3Rpb25faW5mbyAqLAotCQkJCSAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpOwotZXh0ZXJuIGludCBub3RpZnlfcGVlcl9kZXZpY2Vfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKiwKLQkJCQkgICAgIHVuc2lnbmVkIGludCwKLQkJCQkgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosCi0JCQkJICAgICBzdHJ1Y3QgcGVlcl9kZXZpY2VfaW5mbyAqLAotCQkJCSAgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTsKLWV4dGVybiB2b2lkIG5vdGlmeV9oZWxwZXIoZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlLCBzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwKLQkJCSAgc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBjb25zdCBjaGFyICosIGludCk7CiYjNDM7aW50IG5vdGlmeV9yZXNvdXJjZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsCiYjNDM7CQkJICBzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqLCBzdHJ1Y3QgcmVzb3VyY2VfaW5mbyAqLAomIzQzOwkJCSAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTsKJiM0MztpbnQgbm90aWZ5X2RldmljZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBkcmJkX2RldmljZSAqLAomIzQzOwkJCXN0cnVjdCBkZXZpY2VfaW5mbyAqLCBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpOwomIzQzO2ludCBub3RpZnlfY29ubmVjdGlvbl9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsCiYjNDM7CQkJICAgIHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwgc3RydWN0IGNvbm5lY3Rpb25faW5mbyAqLAomIzQzOwkJCSAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpOwomIzQzO2ludCBub3RpZnlfcGVlcl9kZXZpY2Vfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKiwgdW5zaWduZWQgaW50LAomIzQzOwkJCSAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwKJiM0MzsJCQkgICAgIHN0cnVjdCBwZWVyX2RldmljZV9pbmZvICosCiYjNDM7CQkJICAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpOwomIzQzO3ZvaWQgbm90aWZ5X2hlbHBlcihlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUsIHN0cnVjdCBkcmJkX2RldmljZSAqLAomIzQzOwkJICAgc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBjb25zdCBjaGFyICosIGludCk7CiAKIC8qCiAgKiBpbmxpbmUgaGVscGVyIGZ1bmN0aW9ucwpAQCAtMTgyMiw3ICYjNDM7MTg0MSw3IEBAIGRyYmRfZGV2aWNlX3Bvc3Rfd29yayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IHdvcmtfYml0KQogCX0KIH0KIAotZXh0ZXJuIHZvaWQgZHJiZF9mbHVzaF93b3JrcXVldWUoc3RydWN0IGRyYmRfd29ya19xdWV1ZSAqd29ya19xdWV1ZSk7CiYjNDM7dm9pZCBkcmJkX2ZsdXNoX3dvcmtxdWV1ZShzdHJ1Y3QgZHJiZF93b3JrX3F1ZXVlICp3b3JrX3F1ZXVlKTsKIAogLyogVG8gZ2V0IHRoZSBhY2tfcmVjZWl2ZXIgb3V0IG9mIHRoZSBibG9ja2luZyBuZXR3b3JrIHN0YWNrLAogICogc28gaXQgY2FuIGNoYW5nZSBpdHMgc2tfcmN2dGltZW8gZnJvbSBpZGxlLSB0byBwaW5nLXRpbWVvdXQsCkBAIC0xODQxLDE5ICYjNDM7MTg2MCwyNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVxdWVzdF9waW5nKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pCiAJd2FrZV9hY2tfcmVjZWl2ZXIoY29ubmVjdGlvbik7CiB9CiAKLWV4dGVybiB2b2lkICpjb25uX3ByZXBhcmVfY29tbWFuZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHN0cnVjdCBkcmJkX3NvY2tldCAqKTsKLWV4dGVybiB2b2lkICpkcmJkX3ByZXBhcmVfY29tbWFuZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKik7Ci1leHRlcm4gaW50IGNvbm5fc2VuZF9jb21tYW5kKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwgc3RydWN0IGRyYmRfc29ja2V0ICosCi0JCQkgICAgIGVudW0gZHJiZF9wYWNrZXQsIHVuc2lnbmVkIGludCwgdm9pZCAqLAotCQkJICAgICB1bnNpZ25lZCBpbnQpOwotZXh0ZXJuIGludCBkcmJkX3NlbmRfY29tbWFuZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKiwKLQkJCSAgICAgZW51bSBkcmJkX3BhY2tldCwgdW5zaWduZWQgaW50LCB2b2lkICosCi0JCQkgICAgIHVuc2lnbmVkIGludCk7Ci0KLWV4dGVybiBpbnQgZHJiZF9zZW5kX3Bpbmcoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7Ci1leHRlcm4gaW50IGRyYmRfc2VuZF9waW5nX2FjayhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTsKLWV4dGVybiBpbnQgZHJiZF9zZW5kX3N0YXRlX3JlcShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLCB1bmlvbiBkcmJkX3N0YXRlKTsKLWV4dGVybiBpbnQgY29ubl9zZW5kX3N0YXRlX3JlcShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHVuaW9uIGRyYmRfc3RhdGUsIHVuaW9uIGRyYmRfc3RhdGUpOwomIzQzO3ZvaWQgKmNvbm5fcHJlcGFyZV9jb21tYW5kKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sCiYjNDM7CQkJICAgc3RydWN0IGRyYmRfc29ja2V0ICpzb2NrKQomIzQzOwlfX2NvbmRfYWNxdWlyZXModHJ1ZSwgJmFtcDtzb2NrLSZndDttdXRleCk7CiYjNDM7dm9pZCAqZHJiZF9wcmVwYXJlX2NvbW1hbmQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKnNvY2spCiYjNDM7CV9fY29uZF9hY3F1aXJlcyh0cnVlLCAmYW1wO3NvY2stJmd0O211dGV4KTsKJiM0MztpbnQgY29ubl9zZW5kX2NvbW1hbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwKJiM0MzsJCSAgICAgIHN0cnVjdCBkcmJkX3NvY2tldCAqc29jaywKJiM0MzsJCSAgICAgIGVudW0gZHJiZF9wYWNrZXQgY21kLCB1bnNpZ25lZCBpbnQgaGVhZGVyX3NpemUsCiYjNDM7CQkgICAgICB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSkKJiM0MzsJX19yZWxlYXNlcygmYW1wO3NvY2stJmd0O211dGV4KTsKJiM0MztpbnQgZHJiZF9zZW5kX2NvbW1hbmQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKnNvY2ssCiYjNDM7CQkgICAgICBlbnVtIGRyYmRfcGFja2V0IGNtZCwgdW5zaWduZWQgaW50IGhlYWRlcl9zaXplLAomIzQzOwkJICAgICAgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IHNpemUpCiYjNDM7CV9fcmVsZWFzZXMoJmFtcDtzb2NrLSZndDttdXRleCk7CiYjNDM7CiYjNDM7aW50IGRyYmRfc2VuZF9waW5nKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pOwomIzQzO2ludCBkcmJkX3NlbmRfcGluZ19hY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7CiYjNDM7aW50IGRyYmRfc2VuZF9zdGF0ZV9yZXEoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSwKJiM0MzsJCQl1bmlvbiBkcmJkX3N0YXRlKTsKJiM0MztpbnQgY29ubl9zZW5kX3N0YXRlX3JlcShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHVuaW9uIGRyYmRfc3RhdGUsCiYjNDM7CQkJdW5pb24gZHJiZF9zdGF0ZSk7CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmJkX3RocmVhZF9zdG9wKHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKQogewpAQCAtMTk3Niw5ICYjNDM7MjAwMyw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc19zeW5jX3N0YXRlKGVudW0gZHJiZF9jb25ucyBjb25uZWN0aW9uX3N0YXRlKQogICoKICAqIFlvdSBoYXZlIHRvIGNhbGwgcHV0X2xkZXYoKSB3aGVuIGZpbmlzaGVkIHdvcmtpbmcgd2l0aCBkZXZpY2UtJmd0O2xkZXYuCiAgKi8KLSNkZWZpbmUgZ2V0X2xkZXZfaWZfc3RhdGUoX2RldmljZSwgX21pbl9zdGF0ZSkJCQkJXAotCShfZ2V0X2xkZXZfaWZfc3RhdGUoKF9kZXZpY2UpLCAoX21pbl9zdGF0ZSkpID8JCQlcCi0JICh7IF9fYWNxdWlyZSh4KTsgdHJ1ZTsgfSkgOiBmYWxzZSkKICNkZWZpbmUgZ2V0X2xkZXYoX2RldmljZSkgZ2V0X2xkZXZfaWZfc3RhdGUoX2RldmljZSwgRF9JTkNPTlNJU1RFTlQpCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfbGRldihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkKQEAgLTE5OTMsNyAmIzQzOzIwMTcsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHV0X2xkZXYoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpCiAJLyogVGhpcyBtYXkgYmUgY2FsbGVkIGZyb20gc29tZSBlbmRpbyBoYW5kbGVyLAogCSAqIHNvIHdlIG11c3Qgbm90IHNsZWVwIGhlcmUuICovCiAKLQlfX3JlbGVhc2UobG9jYWwpOwogCURfQVNTRVJUKGRldmljZSwgaSAmZ3Q7PSAwKTsKIAlpZiAoaSA9PSAwKSB7CiAJCWlmIChkaXNrX3N0YXRlID09IERfRElTS0xFU1MpCkBAIC0yMDA3LDggJiM0MzsyMDMwLDggQEAgc3RhdGljIGlubGluZSB2b2lkIHB1dF9sZGV2KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKQogCX0KIH0KIAotI2lmbmRlZiBfX0NIRUNLRVJfXwotc3RhdGljIGlubGluZSBpbnQgX2dldF9sZGV2X2lmX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBlbnVtIGRyYmRfZGlza19zdGF0ZSBtaW5zKQomIzQzO3N0YXRpYyBpbmxpbmUgaW50IGdldF9sZGV2X2lmX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAomIzQzOwkJCQkgICAgZW51bSBkcmJkX2Rpc2tfc3RhdGUgbWlucykKIHsKIAlpbnQgaW9fYWxsb3dlZDsKIApAQCAtMjAyMiw5ICYjNDM7MjA0NSw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IF9nZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Rpc2tfCiAJCXB1dF9sZGV2KGRldmljZSk7CiAJcmV0dXJuIGlvX2FsbG93ZWQ7CiB9Ci0jZWxzZQotZXh0ZXJuIGludCBfZ2V0X2xkZXZfaWZfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGVudW0gZHJiZF9kaXNrX3N0YXRlIG1pbnMpOwotI2VuZGlmCiAKIC8qIHRoaXMgdGhyb3R0bGVzIG9uLXRoZS1mbHkgYXBwbGljYXRpb24gcmVxdWVzdHMKICAqIGFjY29yZGluZyB0byBtYXhfYnVmZmVycyBzZXR0aW5nczsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludGVydmFsLmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9pbnRlcnZhbC5oCmluZGV4IDVkMzIxM2I4MWVlZGU3Li4yNTVlOWQwNzFhZTFkNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50ZXJ2YWwuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9pbnRlcnZhbC5oCkBAIC0yOSwxMyAmIzQzOzI5LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBkcmJkX2ludGVydmFsX2VtcHR5KHN0cnVjdCBkcmJkX2ludGVydmFsICppKQogCXJldHVybiBSQl9FTVBUWV9OT0RFKCZhbXA7aS0mZ3Q7cmIpOwogfQogCi1leHRlcm4gYm9vbCBkcmJkX2luc2VydF9pbnRlcnZhbChzdHJ1Y3QgcmJfcm9vdCAqLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqKTsKLWV4dGVybiBib29sIGRyYmRfY29udGFpbnNfaW50ZXJ2YWwoc3RydWN0IHJiX3Jvb3QgKiwgc2VjdG9yX3QsCi0JCQkJICAgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7Ci1leHRlcm4gdm9pZCBkcmJkX3JlbW92ZV9pbnRlcnZhbChzdHJ1Y3QgcmJfcm9vdCAqLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqKTsKLWV4dGVybiBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqZHJiZF9maW5kX292ZXJsYXAoc3RydWN0IHJiX3Jvb3QgKiwgc2VjdG9yX3QsCiYjNDM7Ym9vbCBkcmJkX2luc2VydF9pbnRlcnZhbChzdHJ1Y3QgcmJfcm9vdCAqLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqKTsKJiM0Mztib29sIGRyYmRfY29udGFpbnNfaW50ZXJ2YWwoc3RydWN0IHJiX3Jvb3QgKiwgc2VjdG9yX3QsIHN0cnVjdCBkcmJkX2ludGVydmFsICopOwomIzQzO3ZvaWQgZHJiZF9yZW1vdmVfaW50ZXJ2YWwoc3RydWN0IHJiX3Jvb3QgKiwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7CiYjNDM7c3RydWN0IGRyYmRfaW50ZXJ2YWwgKmRyYmRfZmluZF9vdmVybGFwKHN0cnVjdCByYl9yb290ICosIHNlY3Rvcl90LAogCQkJCQl1bnNpZ25lZCBpbnQpOwotZXh0ZXJuIHN0cnVjdCBkcmJkX2ludGVydmFsICpkcmJkX25leHRfb3ZlcmxhcChzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqLCBzZWN0b3JfdCwKJiM0MztzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqZHJiZF9uZXh0X292ZXJsYXAoc3RydWN0IGRyYmRfaW50ZXJ2YWwgKiwgc2VjdG9yX3QsCiAJCQkJCXVuc2lnbmVkIGludCk7CiAKICNkZWZpbmUgZHJiZF9mb3JfZWFjaF9vdmVybGFwKGksIHJvb3QsIHNlY3Rvciwgc2l6ZSkJCVwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYwppbmRleCBhMmE4NDFjODkyMDExMS4uNmYzYzA0MjUyYjVkZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmMKQEAgLTEyOCwyNSAmIzQzOzEyOCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgZHJiZF9vcHMgPSB7CiAJLnJlbGVhc2UJPSBkcmJkX3JlbGVhc2UsCiB9OwogCi0jaWZkZWYgX19DSEVDS0VSX18KLS8qIFdoZW4gY2hlY2tpbmcgd2l0aCBzcGFyc2UsIGFuZCB0aGlzIGlzIGFuIGlubGluZSBmdW5jdGlvbiwgc3BhcnNlIHdpbGwKLSAgIGdpdmUgdG9ucyBvZiBmYWxzZSBwb3NpdGl2ZXMuIFdoZW4gdGhpcyBpcyBhIHJlYWwgZnVuY3Rpb25zIHNwYXJzZSB3b3Jrcy4KLSAqLwotaW50IF9nZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Rpc2tfc3RhdGUgbWlucykKLXsKLQlpbnQgaW9fYWxsb3dlZDsKLQotCWF0b21pY19pbmMoJmFtcDtkZXZpY2UtJmd0O2xvY2FsX2NudCk7Ci0JaW9fYWxsb3dlZCA9IChkZXZpY2UtJmd0O3N0YXRlLmRpc2sgJmd0Oz0gbWlucyk7Ci0JaWYgKCFpb19hbGxvd2VkKSB7Ci0JCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZhbXA7ZGV2aWNlLSZndDtsb2NhbF9jbnQpKQotCQkJd2FrZV91cCgmYW1wO2RldmljZS0mZ3Q7bWlzY193YWl0KTsKLQl9Ci0JcmV0dXJuIGlvX2FsbG93ZWQ7Ci19Ci0KLSNlbmRpZgotCiAvKioKICAqIHRsX3JlbGVhc2UoKSAtIG1hcmsgYXMgQkFSUklFUl9BQ0tFRCBhbGwgcmVxdWVzdHMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgdHJhbnNmZXIgbG9nIGVwb2NoCiAgKiBAY29ubmVjdGlvbjoJRFJCRCBjb25uZWN0aW9uLgpAQCAtMzI4Miw3ICYjNDM7MzI2Myw3IEBAIHZvaWQgZHJiZF9tZF9tYXJrX2RpcnR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKQogCQltb2RfdGltZXIoJmFtcDtkZXZpY2UtJmd0O21kX3N5bmNfdGltZXIsIGppZmZpZXMgJiM0MzsgNSpIWik7CiB9CiAKLXZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpCiYjNDM7dm9pZCBkcmJkX3V1aWRfbW92ZV9oaXN0b3J5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKQogewogCWludCBpOwogCkBAIC0zMjkwLDcgJiM0MzszMjcxLDcgQEAgdm9pZCBkcmJkX3V1aWRfbW92ZV9oaXN0b3J5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKIAkJZGV2aWNlLSZndDtsZGV2LSZndDttZC51dWlkW2kmIzQzOzFdID0gZGV2aWNlLSZndDtsZGV2LSZndDttZC51dWlkW2ldOwogfQogCi12b2lkIF9fZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpCiYjNDM7dm9pZCBfX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpCiB7CiAJaWYgKGlkeCA9PSBVSV9DVVJSRU5UKSB7CiAJCWlmIChkZXZpY2UtJmd0O3N0YXRlLnJvbGUgPT0gUl9QUklNQVJZKQpAQCAtMzMwNSw3ICYjNDM7MzI4Niw3IEBAIHZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsCiAJZHJiZF9tZF9tYXJrX2RpcnR5KGRldmljZSk7CiB9CiAKLXZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxvY2FsKQomIzQzO3ZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2RldmljZS0mZ3Q7bGRldi0mZ3Q7bWQudXVpZF9sb2NrLCBmbGFncyk7CkBAIC0zMzEzLDcgJiM0MzszMjk0LDcgQEAgdm9pZCBfZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG8KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7ZGV2aWNlLSZndDtsZGV2LSZndDttZC51dWlkX2xvY2ssIGZsYWdzKTsKIH0KIAotdm9pZCBkcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCkKJiM0Mzt2b2lkIGRyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2RldmljZS0mZ3Q7bGRldi0mZ3Q7bWQudXVpZF9sb2NrLCBmbGFncyk7CkBAIC0zMzMyLDcgJiM0MzszMzEzLDcgQEAgdm9pZCBkcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2MKICAqIENyZWF0ZXMgYSBuZXcgY3VycmVudCBVVUlELCBhbmQgcm90YXRlcyB0aGUgb2xkIGN1cnJlbnQgVVVJRCBpbnRvCiAgKiB0aGUgYml0bWFwIHNsb3QuIENhdXNlcyBhbiBpbmNyZW1lbnRhbCByZXN5bmMgdXBvbiBuZXh0IGNvbm5lY3QuCiAgKi8KLXZvaWQgZHJiZF91dWlkX25ld19jdXJyZW50KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKJiM0Mzt2b2lkIGRyYmRfdXVpZF9uZXdfY3VycmVudChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkKIHsKIAl1NjQgdmFsOwogCXVuc2lnbmVkIGxvbmcgbG9uZyBibV91dWlkOwpAQCAtMzM1NCw3ICYjNDM7MzMzNSw3IEBAIHZvaWQgZHJiZF91dWlkX25ld19jdXJyZW50KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKIAlkcmJkX21kX3N5bmMoZGV2aWNlKTsKIH0KIAotdm9pZCBkcmJkX3V1aWRfc2V0X2JtKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCkKJiM0Mzt2b2lkIGRyYmRfdXVpZF9zZXRfYm0oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHU2NCB2YWwpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2RldmljZS0mZ3Q7bGRldi0mZ3Q7bWQudXVpZF9sb2NrLCBmbGFncyk7CkBAIC0zMzg3LDcgJiM0MzszMzY4LDcgQEAgdm9pZCBkcmJkX3V1aWRfc2V0X2JtKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCkKICAqIFNldHMgYWxsIGJpdHMgaW4gdGhlIGJpdG1hcCBhbmQgd3JpdGVzIHRoZSB3aG9sZSBiaXRtYXAgdG8gc3RhYmxlIHN0b3JhZ2UuCiAgKi8KIGludCBkcmJkX2JtaW9fc2V0X25fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCi0JCQkgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpCiYjNDM7CQkJICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpCiAKIHsKIAlpbnQgcnYgPSAtRUlPOwpAQCAtMzQxNCw3ICYjNDM7MzM5NSw3IEBAIGludCBkcmJkX2JtaW9fc2V0X25fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiAgKiBDbGVhcnMgYWxsIGJpdHMgaW4gdGhlIGJpdG1hcCBhbmQgd3JpdGVzIHRoZSB3aG9sZSBiaXRtYXAgdG8gc3RhYmxlIHN0b3JhZ2UuCiAgKi8KIGludCBkcmJkX2JtaW9fY2xlYXJfbl93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJCSAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKJiM0MzsJCQkgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKQogCiB7CiAJZHJiZF9yZXN1bWVfYWwoZGV2aWNlKTsKQEAgLTM1NDEsNyAmIzQzOzM1MjIsNyBAQCBpbnQgZHJiZF9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiAJcmV0dXJuIHJ2OwogfQogCi12b2lkIGRyYmRfbWRfc2V0X2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFnKSBfX211c3RfaG9sZChsb2NhbCkKJiM0Mzt2b2lkIGRyYmRfbWRfc2V0X2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFnKQogewogCWlmICgoZGV2aWNlLSZndDtsZGV2LSZndDttZC5mbGFncyAmYW1wOyBmbGFnKSAhPSBmbGFnKSB7CiAJCWRyYmRfbWRfbWFya19kaXJ0eShkZXZpY2UpOwpAQCAtMzU0OSw3ICYjNDM7MzUzMCw3IEBAIHZvaWQgZHJiZF9tZF9zZXRfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWcpIF9fbXVzdF9ob2xkKGxvY2FsKQogCX0KIH0KIAotdm9pZCBkcmJkX21kX2NsZWFyX2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFnKSBfX211c3RfaG9sZChsb2NhbCkKJiM0Mzt2b2lkIGRyYmRfbWRfY2xlYXJfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWcpCiB7CiAJaWYgKChkZXZpY2UtJmd0O2xkZXYtJmd0O21kLmZsYWdzICZhbXA7IGZsYWcpICE9IDApIHsKIAkJZHJiZF9tZF9tYXJrX2RpcnR5KGRldmljZSk7CkBAIC0zNjc4LDYgJiM0MzszNjU5LDcgQEAgaW50IGRyYmRfd2FpdF9taXNjKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSkKIH0KIAogdm9pZCBsb2NrX2FsbF9yZXNvdXJjZXModm9pZCkKJiM0MzsJX19jb250ZXh0X3Vuc2FmZShsb2NraW5nIGxvb3ApCiB7CiAJc3RydWN0IGRyYmRfcmVzb3VyY2UgKnJlc291cmNlOwogCWludCBfX21heWJlX3VudXNlZCBpID0gMDsKQEAgLTM2ODksNiAmIzQzOzM2NzEsNyBAQCB2b2lkIGxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKQogfQogCiB2b2lkIHVubG9ja19hbGxfcmVzb3VyY2VzKHZvaWQpCiYjNDM7CV9fY29udGV4dF91bnNhZmUobG9ja2luZyBsb29wKQogewogCXN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbmwuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMKaW5kZXggZjlmZmNkNjc2MDdiNTUuLjc0OGIxZDA5M2YyZTY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMKQEAgLTk2OCw4ICYjNDM7OTY4LDkgQEAgdm9pZCBkcmJkX3Jlc3VtZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkKICAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSByZXR1cm4gdmFsdWVzIGluZGljYXRlIGVycm9ycy4KICAqIFlvdSBzaG91bGQgY2FsbCBkcmJkX21kX3N5bmMoKSBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCiAgKi8KLWVudW0gZGV0ZXJtaW5lX2Rldl9zaXplCi1kcmJkX2RldGVybWluZV9kZXZfc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkZHNfZmxhZ3MgZmxhZ3MsIHN0cnVjdCByZXNpemVfcGFybXMgKnJzKSBfX211c3RfaG9sZChsb2NhbCkKJiM0MztlbnVtIGRldGVybWluZV9kZXZfc2l6ZSBkcmJkX2RldGVybWluZV9kZXZfc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKJiM0MzsJCQkJCQllbnVtIGRkc19mbGFncyBmbGFncywKJiM0MzsJCQkJCQlzdHJ1Y3QgcmVzaXplX3Bhcm1zICpycykKIHsKIAlzdHJ1Y3QgbWRfb2Zmc2V0c19hbmRfc2l6ZXMgewogCQl1NjQgbGFzdF9hZ3JlZWRfc2VjdDsKQEAgLTMwOTcsNyAmIzQzOzMwOTgsNyBAQCBzdGF0aWMgaW50IGRyYmRfYWRtX3NpbXBsZV9yZXF1ZXN0X3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKgogfQogCiBzdGF0aWMgaW50IGRyYmRfYm1pb19zZXRfc3VzcF9hbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKJiM0MzsJCQkJIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkKIHsKIAlpbnQgcnY7CiAKQEAgLTM1MjgsMTUgJiM0MzszNTI5LDU2IEBAIGludCBkcmJkX2FkbV9kdW1wX2Nvbm5lY3Rpb25zX2RvbmUoc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKQogCiBlbnVtIHsgU0lOR0xFX1JFU09VUkNFLCBJVEVSQVRFX1JFU09VUkNFUyB9OwogCiYjNDM7c3RhdGljIGludCBkcmJkX25sX3B1dF9kdW1wX2Nvbm5lY3Rpb25zX3Jlc3VsdCgKJiM0MzsJCXN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYiwKJiM0MzsJCXN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSwKJiM0MzsJCXN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGVudW0gZHJiZF9yZXRfY29kZSByZXRjb2RlKQomIzQzO3sKJiM0MzsJc3RydWN0IGRyYmRfZ2VubG1zZ2hkciAqZGg7CiYjNDM7CiYjNDM7CWRoID0gZ2VubG1zZ19wdXQoc2tiLCBORVRMSU5LX0NCKGNiLSZndDtza2IpLnBvcnRpZCwgY2ItJmd0O25saC0mZ3Q7bmxtc2dfc2VxLAomIzQzOwkJCSAmYW1wO2RyYmRfbmxfZmFtaWx5LCBOTE1fRl9NVUxUSSwKJiM0MzsJCQkgRFJCRF9BRE1fR0VUX0NPTk5FQ1RJT05TKTsKJiM0MzsJaWYgKCFkaCkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwlkaC0mZ3Q7cmV0X2NvZGUgPSByZXRjb2RlOwomIzQzOwlkaC0mZ3Q7bWlub3IgPSAtMVU7CiYjNDM7CWlmIChyZXRjb2RlID09IE5PX0VSUk9SKSB7CiYjNDM7CQlzdHJ1Y3QgY29ubmVjdGlvbl9zdGF0aXN0aWNzIGNvbm5lY3Rpb25fc3RhdGlzdGljczsKJiM0MzsJCXN0cnVjdCBjb25uZWN0aW9uX2luZm8gY29ubmVjdGlvbl9pbmZvOwomIzQzOwkJc3RydWN0IG5ldF9jb25mICpuZXRfY29uZjsKJiM0MzsJCWludCBlcnI7CiYjNDM7CiYjNDM7CQllcnIgPSBubGFfcHV0X2RyYmRfY2ZnX2NvbnRleHQoc2tiLCByZXNvdXJjZSwgY29ubmVjdGlvbiwgTlVMTCk7CiYjNDM7CQlpZiAoZXJyKQomIzQzOwkJCXJldHVybiBlcnI7CiYjNDM7CQluZXRfY29uZiA9IHJjdV9kZXJlZmVyZW5jZShjb25uZWN0aW9uLSZndDtuZXRfY29uZik7CiYjNDM7CQlpZiAobmV0X2NvbmYpIHsKJiM0MzsJCQllcnIgPSBuZXRfY29uZl90b19za2Ioc2tiLCBuZXRfY29uZik7CiYjNDM7CQkJaWYgKGVycikKJiM0MzsJCQkJcmV0dXJuIGVycjsKJiM0MzsJCX0KJiM0MzsJCWNvbm5lY3Rpb25fdG9faW5mbygmYW1wO2Nvbm5lY3Rpb25faW5mbywgY29ubmVjdGlvbik7CiYjNDM7CQllcnIgPSBjb25uZWN0aW9uX2luZm9fdG9fc2tiKHNrYiwgJmFtcDtjb25uZWN0aW9uX2luZm8pOwomIzQzOwkJaWYgKGVycikKJiM0MzsJCQlyZXR1cm4gZXJyOwomIzQzOwkJY29ubmVjdGlvbl9zdGF0aXN0aWNzLmNvbm5fY29uZ2VzdGVkID0KJiM0MzsJCQl0ZXN0X2JpdChORVRfQ09OR0VTVEVELCAmYW1wO2Nvbm5lY3Rpb24tJmd0O2ZsYWdzKTsKJiM0MzsJCWVyciA9IGNvbm5lY3Rpb25fc3RhdGlzdGljc190b19za2Ioc2tiLCAmYW1wO2Nvbm5lY3Rpb25fc3RhdGlzdGljcyk7CiYjNDM7CQlpZiAoZXJyKQomIzQzOwkJCXJldHVybiBlcnI7CiYjNDM7CQljYi0mZ3Q7YXJnc1syXSA9IChsb25nKWNvbm5lY3Rpb247CiYjNDM7CX0KJiM0MzsJZ2VubG1zZ19lbmQoc2tiLCBkaCk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIGludCBkcmJkX25sX2dldF9jb25uZWN0aW9uc19kdW1waXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKQogewogCXN0cnVjdCBubGF0dHIgKnJlc291cmNlX2ZpbHRlcjsKIAlzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UgPSBOVUxMLCAqbmV4dF9yZXNvdXJjZTsKIAlzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uOwotCWludCBlcnIgPSAwLCByZXRjb2RlOwotCXN0cnVjdCBkcmJkX2dlbmxtc2doZHIgKmRoOwotCXN0cnVjdCBjb25uZWN0aW9uX2luZm8gY29ubmVjdGlvbl9pbmZvOwotCXN0cnVjdCBjb25uZWN0aW9uX3N0YXRpc3RpY3MgY29ubmVjdGlvbl9zdGF0aXN0aWNzOwomIzQzOwlpbnQgZXJyID0gMDsKIAogCXJjdV9yZWFkX2xvY2soKTsKIAlyZXNvdXJjZSA9IChzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqKWNiLSZndDthcmdzWzBdOwpAQCAtMzU0NCwxNyAmIzQzOzM1ODYsMjMgQEAgaW50IGRyYmRfbmxfZ2V0X2Nvbm5lY3Rpb25zX2R1bXBpdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjawogCQlyZXNvdXJjZV9maWx0ZXIgPSBmaW5kX2NmZ19jb250ZXh0X2F0dHIoY2ItJmd0O25saCwKIAkJCQlEUkJEX0FfRFJCRF9DRkdfQ09OVEVYVF9DVFhfUkVTT1VSQ0VfTkFNRSk7CiAJCWlmIChyZXNvdXJjZV9maWx0ZXIpIHsKLQkJCXJldGNvZGUgPSBFUlJfUkVTX05PVF9LTk9XTjsKIAkJCXJlc291cmNlID0gZHJiZF9maW5kX3Jlc291cmNlKG5sYV9kYXRhKHJlc291cmNlX2ZpbHRlcikpOwotCQkJaWYgKCFyZXNvdXJjZSkKLQkJCQlnb3RvIHB1dF9yZXN1bHQ7CiYjNDM7CQkJaWYgKCFyZXNvdXJjZSkgewomIzQzOwkJCQllcnIgPSBkcmJkX25sX3B1dF9kdW1wX2Nvbm5lY3Rpb25zX3Jlc3VsdCgKJiM0MzsJCQkJCXNrYiwgY2IsIHJlc291cmNlLCBOVUxMLAomIzQzOwkJCQkJRVJSX1JFU19OT1RfS05PV04pOwomIzQzOwkJCQlyY3VfcmVhZF91bmxvY2soKTsKJiM0MzsJCQkJZ290byByZXQ7CiYjNDM7CQkJfQogCQkJY2ItJmd0O2FyZ3NbMF0gPSAobG9uZylyZXNvdXJjZTsKIAkJCWNiLSZndDthcmdzWzFdID0gU0lOR0xFX1JFU09VUkNFOwogCQl9CiAJfQogCWlmICghcmVzb3VyY2UpIHsKLQkJaWYgKGxpc3RfZW1wdHkoJmFtcDtkcmJkX3Jlc291cmNlcykpCi0JCQlnb3RvIG91dDsKJiM0MzsJCWlmIChsaXN0X2VtcHR5KCZhbXA7ZHJiZF9yZXNvdXJjZXMpKSB7CiYjNDM7CQkJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CQkJZ290byByZXQ7CiYjNDM7CQl9CiAJCXJlc291cmNlID0gbGlzdF9maXJzdF9lbnRyeSgmYW1wO2RyYmRfcmVzb3VyY2VzLCBzdHJ1Y3QgZHJiZF9yZXNvdXJjZSwgcmVzb3VyY2VzKTsKIAkJa3JlZl9nZXQoJmFtcDtyZXNvdXJjZS0mZ3Q7a3JlZik7CiAJCWNiLSZndDthcmdzWzBdID0gKGxvbmcpcmVzb3VyY2U7CkBAIC0zNTc4LDggJiM0MzszNjI2LDkgQEAgaW50IGRyYmRfbmxfZ2V0X2Nvbm5lY3Rpb25zX2R1bXBpdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjawogCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1KGNvbm5lY3Rpb24sICZhbXA7cmVzb3VyY2UtJmd0O2Nvbm5lY3Rpb25zLCBjb25uZWN0aW9ucykgewogCQlpZiAoIWhhc19uZXRfY29uZihjb25uZWN0aW9uKSkKIAkJCWNvbnRpbnVlOwotCQlyZXRjb2RlID0gTk9fRVJST1I7Ci0JCWdvdG8gcHV0X3Jlc3VsdDsgIC8qIG9ubHkgb25lIGl0ZXJhdGlvbiAqLwomIzQzOwkJZXJyID0gZHJiZF9ubF9wdXRfZHVtcF9jb25uZWN0aW9uc19yZXN1bHQoc2tiLCBjYiwgcmVzb3VyY2UsCiYjNDM7CQkJCQkJCSAgY29ubmVjdGlvbiwgTk9fRVJST1IpOwomIzQzOwkJZ290byBvdXQ7IC8qIG9ubHkgb25lIGl0ZXJhdGlvbiAqLwogCX0KIAogbm9fbW9yZV9jb25uZWN0aW9uczoKQEAgLTM2MDIsNDYgJiM0MzszNjUxLDE0IEBAIGludCBkcmJkX25sX2dldF9jb25uZWN0aW9uc19kdW1waXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sKIAkJY2ItJmd0O2FyZ3NbMl0gPSAwOwogCQlnb3RvIG5leHRfcmVzb3VyY2U7CiAJfQotCWdvdG8gb3V0OyAgLyogbm8gbW9yZSByZXNvdXJjZXMgKi8KIAotcHV0X3Jlc3VsdDoKLQlkaCA9IGdlbmxtc2dfcHV0KHNrYiwgTkVUTElOS19DQihjYi0mZ3Q7c2tiKS5wb3J0aWQsCi0JCQljYi0mZ3Q7bmxoLSZndDtubG1zZ19zZXEsICZhbXA7ZHJiZF9ubF9mYW1pbHksCi0JCQlOTE1fRl9NVUxUSSwgRFJCRF9BRE1fR0VUX0NPTk5FQ1RJT05TKTsKLQllcnIgPSAtRU5PTUVNOwotCWlmICghZGgpCi0JCWdvdG8gb3V0OwotCWRoLSZndDtyZXRfY29kZSA9IHJldGNvZGU7Ci0JZGgtJmd0O21pbm9yID0gLTFVOwotCWlmIChyZXRjb2RlID09IE5PX0VSUk9SKSB7Ci0JCXN0cnVjdCBuZXRfY29uZiAqbmV0X2NvbmY7Ci0KLQkJZXJyID0gbmxhX3B1dF9kcmJkX2NmZ19jb250ZXh0KHNrYiwgcmVzb3VyY2UsIGNvbm5lY3Rpb24sIE5VTEwpOwotCQlpZiAoZXJyKQotCQkJZ290byBvdXQ7Ci0JCW5ldF9jb25mID0gcmN1X2RlcmVmZXJlbmNlKGNvbm5lY3Rpb24tJmd0O25ldF9jb25mKTsKLQkJaWYgKG5ldF9jb25mKSB7Ci0JCQllcnIgPSBuZXRfY29uZl90b19za2Ioc2tiLCBuZXRfY29uZik7Ci0JCQlpZiAoZXJyKQotCQkJCWdvdG8gb3V0OwotCQl9Ci0JCWNvbm5lY3Rpb25fdG9faW5mbygmYW1wO2Nvbm5lY3Rpb25faW5mbywgY29ubmVjdGlvbik7Ci0JCWVyciA9IGNvbm5lY3Rpb25faW5mb190b19za2Ioc2tiLCAmYW1wO2Nvbm5lY3Rpb25faW5mbyk7Ci0JCWlmIChlcnIpCi0JCQlnb3RvIG91dDsKLQkJY29ubmVjdGlvbl9zdGF0aXN0aWNzLmNvbm5fY29uZ2VzdGVkID0gdGVzdF9iaXQoTkVUX0NPTkdFU1RFRCwgJmFtcDtjb25uZWN0aW9uLSZndDtmbGFncyk7Ci0JCWVyciA9IGNvbm5lY3Rpb25fc3RhdGlzdGljc190b19za2Ioc2tiLCAmYW1wO2Nvbm5lY3Rpb25fc3RhdGlzdGljcyk7Ci0JCWlmIChlcnIpCi0JCQlnb3RvIG91dDsKLQkJY2ItJmd0O2FyZ3NbMl0gPSAobG9uZyljb25uZWN0aW9uOwotCX0KLQlnZW5sbXNnX2VuZChza2IsIGRoKTsKLQllcnIgPSAwOwomIzQzOwkvKiBubyBtb3JlIHJlc291cmNlcyAqLwogCiBvdXQ6CiAJcmN1X3JlYWRfdW5sb2NrKCk7Ci0JaWYgKHJlc291cmNlKQotCQltdXRleF91bmxvY2soJmFtcDtyZXNvdXJjZS0mZ3Q7Y29uZl91cGRhdGUpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtyZXNvdXJjZS0mZ3Q7Y29uZl91cGRhdGUpOwomIzQzOwomIzQzO3JldDoKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwogCXJldHVybiBza2ItJmd0O2xlbjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jCmluZGV4IDU4Yjk1YmY0YmRjYTZhLi5iNGEzNTBjZDAzYjA0YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jCkBAIC0xNzQsOCAmIzQzOzE3NCw5IEBAIFlvdSBtdXN0IG5vdCBoYXZlIHRoZSByZXFfbG9jazoKICAqIHdfc2FtZTogcGF5bG9hZF9zaXplID09IGxvZ2ljYWxfYmxvY2tfc2l6ZQogICogdHJpbTogcGF5bG9hZF9zaXplID09IDAgKi8KIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqCi1kcmJkX2FsbG9jX3BlZXJfcmVxKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgdTY0IGlkLCBzZWN0b3JfdCBzZWN0b3IsCi0JCSAgICB1bnNpZ25lZCBpbnQgcmVxdWVzdF9zaXplLCB1bnNpZ25lZCBpbnQgcGF5bG9hZF9zaXplLCBnZnBfdCBnZnBfbWFzaykgX19tdXN0X2hvbGQobG9jYWwpCiYjNDM7ZHJiZF9hbGxvY19wZWVyX3JlcShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHU2NCBpZCwKJiM0MzsJCSAgICBzZWN0b3JfdCBzZWN0b3IsIHVuc2lnbmVkIGludCByZXF1ZXN0X3NpemUsCiYjNDM7CQkgICAgdW5zaWduZWQgaW50IHBheWxvYWRfc2l6ZSwgZ2ZwX3QgZ2ZwX21hc2spCiB7CiAJc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBwZWVyX2RldmljZS0mZ3Q7ZGV2aWNlOwogCXN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXE7CkBAIC0yODcsNiAmIzQzOzI4OCw3IEBAIHN0YXRpYyBpbnQgZHJiZF9maW5pc2hfcGVlcl9yZXFzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKQogCiBzdGF0aWMgdm9pZCBfZHJiZF93YWl0X2VlX2xpc3RfZW1wdHkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiAJCQkJICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQomIzQzOwlfX211c3RfaG9sZCgmYW1wO2RldmljZS0mZ3Q7cmVzb3VyY2UtJmd0O3JlcV9sb2NrKQogewogCURFRklORV9XQUlUKHdhaXQpOwogCkBAIC04OTYsNiAmIzQzOzg5OCw4IEBAIHN0YXRpYyBpbnQgY29ubl9jb25uZWN0KHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pCiAJaWYgKGRyYmRfc2VuZF9wcm90b2NvbChjb25uZWN0aW9uKSA9PSAtRU9QTk9UU1VQUCkKIAkJcmV0dXJuIC0xOwogCiYjNDM7CS8qIGNvbnRleHRfdW5zYWZlKCkgYmVjYXVzZSBvZiB0d28gbG9ja2luZyBsb29wcyAqLwomIzQzOwljb250ZXh0X3Vuc2FmZSgKIAkvKiBQcmV2ZW50IGEgcmFjZSBiZXR3ZWVuIHJlc3luYy1oYW5kc2hha2UgYW5kCiAJICogYmVpbmcgcHJvbW90ZWQgdG8gUHJpbWFyeS4KIAkgKgpAQCAtOTEzLDYgJiM0Mzs5MTcsNyBAQCBzdGF0aWMgaW50IGNvbm5fY29ubmVjdChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKQogCiAJaWRyX2Zvcl9lYWNoX2VudHJ5KCZhbXA7Y29ubmVjdGlvbi0mZ3Q7cGVlcl9kZXZpY2VzLCBwZWVyX2RldmljZSwgdm5yKQogCQltdXRleF91bmxvY2socGVlcl9kZXZpY2UtJmd0O2RldmljZS0mZ3Q7c3RhdGVfbXV0ZXgpOwomIzQzOwkpOwogCiAJcmN1X3JlYWRfbG9jaygpOwogCWlkcl9mb3JfZWFjaF9lbnRyeSgmYW1wO2Nvbm5lY3Rpb24tJmd0O3BlZXJfZGV2aWNlcywgcGVlcl9kZXZpY2UsIHZucikgewpAQCAtMTY1Nyw3ICYjNDM7MTY2Miw3IEBAIHN0YXRpYyB2b2lkIGRyYmRfY3N1bV9lZV9zaXplKHN0cnVjdCBjcnlwdG9fc2hhc2ggKmgsCiAgKi8KIHN0YXRpYyBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKgogcmVhZF9pbl9ibG9jayhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHU2NCBpZCwgc2VjdG9yX3Qgc2VjdG9yLAotCSAgICAgIHN0cnVjdCBwYWNrZXRfaW5mbyAqcGkpIF9fbXVzdF9ob2xkKGxvY2FsKQomIzQzOwkgICAgICBzdHJ1Y3QgcGFja2V0X2luZm8gKnBpKQogewogCXN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtJmd0O2RldmljZTsKIAljb25zdCBzZWN0b3JfdCBjYXBhY2l0eSA9IGdldF9jYXBhY2l0eShkZXZpY2UtJmd0O3ZkaXNrKTsKQEAgLTE4NjgsOCAmIzQzOzE4NzMsOCBAQCBzdGF0aWMgaW50IGVfZW5kX3Jlc3luY19ibG9jayhzdHJ1Y3QgZHJiZF93b3JrICp3LCBpbnQgdW51c2VkKQogCXJldHVybiBlcnI7CiB9CiAKLXN0YXRpYyBpbnQgcmVjdl9yZXN5bmNfcmVhZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHNlY3Rvcl90IHNlY3RvciwKLQkJCSAgICBzdHJ1Y3QgcGFja2V0X2luZm8gKnBpKSBfX3JlbGVhc2VzKGxvY2FsKQomIzQzO3N0YXRpYyBpbnQgcmVjdl9yZXN5bmNfcmVhZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsCiYjNDM7CQkJICAgIHNlY3Rvcl90IHNlY3Rvciwgc3RydWN0IHBhY2tldF9pbmZvICpwaSkKIHsKIAlzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHBlZXJfZGV2aWNlLSZndDtkZXZpY2U7CiAJc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcTsKQEAgLTIyMzAsNiAmIzQzOzIyMzUsNyBAQCBzdGF0aWMgYmxrX29wZl90IHdpcmVfZmxhZ3NfdG9fYmlvKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHUzMiBkcGYpCiAKIHN0YXRpYyB2b2lkIGZhaWxfcG9zdHBvbmVkX3JlcXVlc3RzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IsCiAJCQkJICAgIHVuc2lnbmVkIGludCBzaXplKQomIzQzOwlfX211c3RfaG9sZCgmYW1wO2RldmljZS0mZ3Q7cmVzb3VyY2UtJmd0O3JlcV9sb2NrKQogewogCXN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSA9IGZpcnN0X3BlZXJfZGV2aWNlKGRldmljZSk7CiAJc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmk7CkBAIC0yMjU2LDYgJiM0MzsyMjYyLDcgQEAgc3RhdGljIHZvaWQgZmFpbF9wb3N0cG9uZWRfcmVxdWVzdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3RvciwKIAogc3RhdGljIGludCBoYW5kbGVfd3JpdGVfY29uZmxpY3RzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAogCQkJCSAgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSkKJiM0MzsJX19tdXN0X2hvbGQoJmFtcDtkZXZpY2UtJmd0O3Jlc291cmNlLSZndDtyZXFfbG9jaykKIHsKIAlzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uID0gcGVlcl9yZXEtJmd0O3BlZXJfZGV2aWNlLSZndDtjb25uZWN0aW9uOwogCWJvb2wgcmVzb2x2ZV9jb25mbGljdHMgPSB0ZXN0X2JpdChSRVNPTFZFX0NPTkZMSUNUUywgJmFtcDtjb25uZWN0aW9uLSZndDtmbGFncyk7CkBAIC0yODI2LDcgJiM0MzsyODMzLDcgQEAgc3RhdGljIGludCByZWNlaXZlX0RhdGFSZXF1ZXN0KHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHN0cnVjdCBwYWNrZXQKIC8qCiAgKiBkcmJkX2FzYl9yZWNvdmVyXzBwICAtICBSZWNvdmVyIGFmdGVyIHNwbGl0LWJyYWluIHdpdGggbm8gcmVtYWluaW5nIHByaW1hcmllcwogICovCi1zdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMHAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKJiM0MztzdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMHAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKQogewogCXN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtJmd0O2RldmljZTsKIAlpbnQgc2VsZiwgcGVlciwgcnYgPSAtMTAwOwpAQCAtMjkwOSw3ICYjNDM7MjkxNiw3IEBAIHN0YXRpYyBpbnQgZHJiZF9hc2JfcmVjb3Zlcl8wcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkCiAvKgogICogZHJiZF9hc2JfcmVjb3Zlcl8xcCAgLSAgUmVjb3ZlciBhZnRlciBzcGxpdC1icmFpbiB3aXRoIG9uZSByZW1haW5pbmcgcHJpbWFyeQogICovCi1zdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMXAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKJiM0MztzdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMXAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKQogewogCXN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtJmd0O2RldmljZTsKIAlpbnQgaGcsIHJ2ID0gLTEwMDsKQEAgLTI5NjYsNyAmIzQzOzI5NzMsNyBAQCBzdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMXAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZAogLyoKICAqIGRyYmRfYXNiX3JlY292ZXJfMnAgIC0gIFJlY292ZXIgYWZ0ZXIgc3BsaXQtYnJhaW4gd2l0aCB0d28gcmVtYWluaW5nIHByaW1hcmllcwogICovCi1zdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMnAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCkKJiM0MztzdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMnAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKQogewogCXN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtJmd0O2RldmljZTsKIAlpbnQgaGcsIHJ2ID0gLTEwMDsKQEAgLTMwNDQsNyAmIzQzOzMwNTEsNyBAQCBzdGF0aWMgdm9pZCBkcmJkX3V1aWRfZHVtcChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY2hhciAqdGV4dCwgdTY0ICp1dWlkLAogICovCiAKIHN0YXRpYyBpbnQgZHJiZF91dWlkX2NvbXBhcmUoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKmNvbnN0IHBlZXJfZGV2aWNlLAotCQllbnVtIGRyYmRfcm9sZSBjb25zdCBwZWVyX3JvbGUsIGludCAqcnVsZV9ucikgX19tdXN0X2hvbGQobG9jYWwpCiYjNDM7CQkJICAgICBlbnVtIGRyYmRfcm9sZSBjb25zdCBwZWVyX3JvbGUsIGludCAqcnVsZV9ucikKIHsKIAlzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25zdCBjb25uZWN0aW9uID0gcGVlcl9kZXZpY2UtJmd0O2Nvbm5lY3Rpb247CiAJc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBwZWVyX2RldmljZS0mZ3Q7ZGV2aWNlOwpAQCAtMzI2NCw3ICYjNDM7MzI3MSw3IEBAIHN0YXRpYyBpbnQgZHJiZF91dWlkX2NvbXBhcmUoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKmNvbnN0IHBlZXJfZGV2aWNlLAogICovCiBzdGF0aWMgZW51bSBkcmJkX2Nvbm5zIGRyYmRfc3luY19oYW5kc2hha2Uoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLAogCQkJCQkgICBlbnVtIGRyYmRfcm9sZSBwZWVyX3JvbGUsCi0JCQkJCSAgIGVudW0gZHJiZF9kaXNrX3N0YXRlIHBlZXJfZGlzaykgX19tdXN0X2hvbGQobG9jYWwpCiYjNDM7CQkJCQkgICBlbnVtIGRyYmRfZGlza19zdGF0ZSBwZWVyX2Rpc2spCiB7CiAJc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBwZWVyX2RldmljZS0mZ3Q7ZGV2aWNlOwogCWVudW0gZHJiZF9jb25ucyBydiA9IENfTUFTSzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmMKaW5kZXggNzBmNzVlZjA3OTQ1N2QuLjFjYzQ1NTg0NmY5MjAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuYwpAQCAtOTUxLDcgJiM0Mzs5NTEsOSBAQCBzdGF0aWMgYm9vbCByZW1vdGVfZHVlX3RvX3JlYWRfYmFsYW5jaW5nKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzZQogICoKICAqIE9ubHkgd2F5IG91dDogcmVtb3ZlIHRoZSBjb25mbGljdGluZyBpbnRlcnZhbHMgZnJvbSB0aGUgdHJlZS4KICAqLwotc3RhdGljIHZvaWQgY29tcGxldGVfY29uZmxpY3Rpbmdfd3JpdGVzKHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSkKJiM0MztzdGF0aWMgdm9pZCBjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMoc3RydWN0IGRyYmRfcmVzb3VyY2UgKnJlc291cmNlLAomIzQzOwkJCQkJc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKQomIzQzOwlfX211c3RfaG9sZCgmYW1wO3Jlc291cmNlLSZndDtyZXFfbG9jaykKIHsKIAlERUZJTkVfV0FJVCh3YWl0KTsKIAlzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHJlcS0mZ3Q7ZGV2aWNlOwpAQCAtOTc0LDkgJiM0Mzs5NzYsOSBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKQogCQkvKiBJbmRpY2F0ZSB0byB3YWtlIHVwIGRldmljZS0mZ3Q7bWlzY193YWl0IG9uIHByb2dyZXNzLiAgKi8KIAkJcHJlcGFyZV90b193YWl0KCZhbXA7ZGV2aWNlLSZndDttaXNjX3dhaXQsICZhbXA7d2FpdCwgVEFTS19VTklOVEVSUlVQVElCTEUpOwogCQlpLSZndDt3YWl0aW5nID0gdHJ1ZTsKLQkJc3Bpbl91bmxvY2tfaXJxKCZhbXA7ZGV2aWNlLSZndDtyZXNvdXJjZS0mZ3Q7cmVxX2xvY2spOwomIzQzOwkJc3Bpbl91bmxvY2tfaXJxKCZhbXA7cmVzb3VyY2UtJmd0O3JlcV9sb2NrKTsKIAkJc2NoZWR1bGUoKTsKLQkJc3Bpbl9sb2NrX2lycSgmYW1wO2RldmljZS0mZ3Q7cmVzb3VyY2UtJmd0O3JlcV9sb2NrKTsKJiM0MzsJCXNwaW5fbG9ja19pcnEoJmFtcDtyZXNvdXJjZS0mZ3Q7cmVxX2xvY2spOwogCX0KIAlmaW5pc2hfd2FpdCgmYW1wO2RldmljZS0mZ3Q7bWlzY193YWl0LCAmYW1wO3dhaXQpOwogfQpAQCAtMTMyOSw3ICYjNDM7MTMzMSw3IEBAIHN0YXRpYyB2b2lkIGRyYmRfc2VuZF9hbmRfc3VibWl0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9yZXF1ZXN0CiAJCS8qIFRoaXMgbWF5IHRlbXBvcmFyaWx5IGdpdmUgdXAgdGhlIHJlcV9sb2NrLAogCQkgKiBidXQgd2lsbCByZS1hcXVpcmUgaXQgYmVmb3JlIGl0IHJldHVybnMgaGVyZS4KIAkJICogTmVlZHMgdG8gYmUgYmVmb3JlIHRoZSBjaGVjayBvbiBkcmJkX3N1c3BlbmRlZCgpICovCi0JCWNvbXBsZXRlX2NvbmZsaWN0aW5nX3dyaXRlcyhyZXEpOwomIzQzOwkJY29tcGxldGVfY29uZmxpY3Rpbmdfd3JpdGVzKHJlc291cmNlLCByZXEpOwogCQkvKiBubyBtb3JlIGdpdmluZyB1cCByZXFfbG9jayBmcm9tIG5vdyBvbiEgKi8KIAogCQkvKiBjaGVjayBmb3IgY29uZ2VzdGlvbiwgYW5kIHBvdGVudGlhbGx5IHN0b3Agc2VuZGluZwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuaAppbmRleCA5YWU4NjBlNzU5MWIzMi4uN2YyNGNiOGU1NDI5YTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5oCkBAIC0yNjQsMjAgJiM0MzsyNjQsMTggQEAgc3RydWN0IGJpb19hbmRfZXJyb3IgewogCWludCBlcnJvcjsKIH07CiAKLWV4dGVybiB2b2lkIHN0YXJ0X25ld190bF9lcG9jaChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTsKLWV4dGVybiB2b2lkIGRyYmRfcmVxX2Rlc3Ryb3koc3RydWN0IGtyZWYgKmtyZWYpOwotZXh0ZXJuIGludCBfX3JlcV9tb2Qoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQsCi0JCXN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwKLQkJc3RydWN0IGJpb19hbmRfZXJyb3IgKm0pOwotZXh0ZXJuIHZvaWQgY29tcGxldGVfbWFzdGVyX2JpbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwKLQkJc3RydWN0IGJpb19hbmRfZXJyb3IgKm0pOwotZXh0ZXJuIHZvaWQgcmVxdWVzdF90aW1lcl9mbihzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7Ci1leHRlcm4gdm9pZCB0bF9yZXN0YXJ0KHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGVudW0gZHJiZF9yZXFfZXZlbnQgd2hhdCk7Ci1leHRlcm4gdm9pZCBfdGxfcmVzdGFydChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQpOwotZXh0ZXJuIHZvaWQgdGxfYWJvcnRfZGlza19pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7CiYjNDM7dm9pZCBzdGFydF9uZXdfdGxfZXBvY2goc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7CiYjNDM7dm9pZCBkcmJkX3JlcV9kZXN0cm95KHN0cnVjdCBrcmVmICprcmVmKTsKJiM0MztpbnQgX19yZXFfbW9kKHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSwgZW51bSBkcmJkX3JlcV9ldmVudCB3aGF0LAomIzQzOwkgICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHN0cnVjdCBiaW9fYW5kX2Vycm9yICptKTsKJiM0Mzt2b2lkIGNvbXBsZXRlX21hc3Rlcl9iaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBiaW9fYW5kX2Vycm9yICptKTsKJiM0Mzt2b2lkIHJlcXVlc3RfdGltZXJfZm4oc3RydWN0IHRpbWVyX2xpc3QgKnQpOwomIzQzO3ZvaWQgdGxfcmVzdGFydChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQpOwomIzQzO3ZvaWQgX3RsX3Jlc3RhcnQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgZW51bSBkcmJkX3JlcV9ldmVudCB3aGF0KTsKJiM0Mzt2b2lkIHRsX2Fib3J0X2Rpc2tfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpOwogCiAvKiB0aGlzIGlzIGluIGRyYmRfbWFpbi5jICovCi1leHRlcm4gdm9pZCBkcmJkX3Jlc3RhcnRfcmVxdWVzdChzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICpyZXEpOwomIzQzO3ZvaWQgZHJiZF9yZXN0YXJ0X3JlcXVlc3Qoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKTsKIAogLyogdXNlIHRoaXMgaWYgeW91IGRvbiYjMzk7dCB3YW50IHRvIGRlYWwgd2l0aCBjYWxsaW5nIGNvbXBsZXRlX21hc3Rlcl9iaW8oKQogICogb3V0c2lkZSB0aGUgc3BpbmxvY2ssIGUuZy4gd2hlbiB3YWxraW5nIHNvbWUgbGlzdCBvbiBjbGVhbnVwLiAqLwpAQCAtMzE5LDYgJiM0MzszMTcsNiBAQCBzdGF0aWMgaW5saW5lIGludCByZXFfbW9kKHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSwKIAlyZXR1cm4gcnY7CiB9CiAKLWV4dGVybiBib29sIGRyYmRfc2hvdWxkX2RvX3JlbW90ZSh1bmlvbiBkcmJkX2Rldl9zdGF0ZSk7CiYjNDM7Ym9vbCBkcmJkX3Nob3VsZF9kb19yZW1vdGUodW5pb24gZHJiZF9kZXZfc3RhdGUpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3N0YXRlLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5jCmluZGV4IGFkY2JhN2YxZDhlYTQ5Li40MTZhNzFkN2E2MWMwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5jCkBAIC01NDksMTkgJiM0Mzs1NDksMTAgQEAgX3JlcV9zdF9jb25kKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssCiAJcmV0dXJuIHJ2OwogfQogCi0vKioKLSAqIGRyYmRfcmVxX3N0YXRlKCkgLSBQZXJmb3JtIGFuIGV2ZW50dWFsbHkgY2x1c3RlciB3aWRlIHN0YXRlIGNoYW5nZQotICogQGRldmljZToJRFJCRCBkZXZpY2UuCi0gKiBAbWFzazoJbWFzayBvZiBzdGF0ZSBiaXRzIHRvIGNoYW5nZS4KLSAqIEB2YWw6CXZhbHVlIG9mIG5ldyBzdGF0ZSBiaXRzLgotICogQGY6CQlmbGFncwotICoKLSAqIFNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LCB1c2UgZHJiZF9yZXF1ZXN0X3N0YXRlKCkgb3IKLSAqIF9kcmJkX3JlcXVlc3Rfc3RhdGUoKS4KLSAqLwotc3RhdGljIGVudW0gZHJiZF9zdGF0ZV9ydgotZHJiZF9yZXFfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuaW9uIGRyYmRfc3RhdGUgbWFzaywKLQkgICAgICAgdW5pb24gZHJiZF9zdGF0ZSB2YWwsIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYpCiYjNDM7c3RhdGljIGVudW0gZHJiZF9zdGF0ZV9ydiBfX2RyYmRfcmVxX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLAomIzQzOwkJCQkJICAgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLAomIzQzOwkJCQkJICAgdW5pb24gZHJiZF9zdGF0ZSB2YWwsCiYjNDM7CQkJCQkgICBlbnVtIGNoZ19zdGF0ZV9mbGFncyBmKQogewogCXN0cnVjdCBjb21wbGV0aW9uIGRvbmU7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKQEAgLTU3MSw4ICYjNDM7NTYyLDYgQEAgZHJiZF9yZXFfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuaW9uIGRyYmRfc3RhdGUgbWFzaywKIAogCWluaXRfY29tcGxldGlvbigmYW1wO2RvbmUpOwogCi0JaWYgKGYgJmFtcDsgQ1NfU0VSSUFMSVpFKQotCQltdXRleF9sb2NrKGRldmljZS0mZ3Q7c3RhdGVfbXV0ZXgpOwogCWlmIChmICZhbXA7IENTX0lOSElCSVRfTURfSU8pCiAJCWJ1ZmZlciA9IGRyYmRfbWRfZ2V0X2J1ZmZlcihkZXZpY2UsIF9fZnVuY19fKTsKIApAQCAtNjI5LDggJiM0Mzs2MTgsMzQgQEAgZHJiZF9yZXFfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuaW9uIGRyYmRfc3RhdGUgbWFzaywKIGFib3J0OgogCWlmIChidWZmZXIpCiAJCWRyYmRfbWRfcHV0X2J1ZmZlcihkZXZpY2UpOwotCWlmIChmICZhbXA7IENTX1NFUklBTElaRSkKJiM0MzsKJiM0MzsJcmV0dXJuIHJ2OwomIzQzO30KJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBkcmJkX3JlcV9zdGF0ZSgpIC0gUGVyZm9ybSBhbiBldmVudHVhbGx5IGNsdXN0ZXIgd2lkZSBzdGF0ZSBjaGFuZ2UKJiM0MzsgKiBAZGV2aWNlOglEUkJEIGRldmljZS4KJiM0MzsgKiBAbWFzazoJbWFzayBvZiBzdGF0ZSBiaXRzIHRvIGNoYW5nZS4KJiM0MzsgKiBAdmFsOgl2YWx1ZSBvZiBuZXcgc3RhdGUgYml0cy4KJiM0MzsgKiBAZjoJCWZsYWdzCiYjNDM7ICoKJiM0MzsgKiBTaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSwgdXNlIGRyYmRfcmVxdWVzdF9zdGF0ZSgpIG9yCiYjNDM7ICogX2RyYmRfcmVxdWVzdF9zdGF0ZSgpLgomIzQzOyAqLwomIzQzO3N0YXRpYyBlbnVtIGRyYmRfc3RhdGVfcnYgZHJiZF9yZXFfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiYjNDM7CQkJCQkgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLAomIzQzOwkJCQkJIHVuaW9uIGRyYmRfc3RhdGUgdmFsLAomIzQzOwkJCQkJIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYpCiYjNDM7ewomIzQzOwllbnVtIGRyYmRfc3RhdGVfcnYgcnY7CiYjNDM7CiYjNDM7CWlmIChmICZhbXA7IENTX1NFUklBTElaRSkgewomIzQzOwkJbXV0ZXhfbG9jayhkZXZpY2UtJmd0O3N0YXRlX211dGV4KTsKJiM0MzsJCXJ2ID0gX19kcmJkX3JlcV9zdGF0ZShkZXZpY2UsIG1hc2ssIHZhbCwgZik7CiAJCW11dGV4X3VubG9jayhkZXZpY2UtJmd0O3N0YXRlX211dGV4KTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCXJ2ID0gX19kcmJkX3JlcV9zdGF0ZShkZXZpY2UsIG1hc2ssIHZhbCwgZik7CiYjNDM7CX0KIAogCXJldHVybiBydjsKIH0KQEAgLTY5OSw2ICYjNDM7NzE0LDcgQEAgaW50IGRyYmRfcmVxdWVzdF9kZXRhY2hfaW50ZXJydXB0aWJsZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkKIGVudW0gZHJiZF9zdGF0ZV9ydgogX2RyYmRfcmVxdWVzdF9zdGF0ZV9ob2xkaW5nX3N0YXRlX211dGV4KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssCiAJCSAgICB1bmlvbiBkcmJkX3N0YXRlIHZhbCwgZW51bSBjaGdfc3RhdGVfZmxhZ3MgZikKJiM0MzsJX19tdXN0X2hvbGQoJmFtcDtkZXZpY2UtJmd0O3N0YXRlX211dGV4KQogewogCWVudW0gZHJiZF9zdGF0ZV9ydiBydjsKIApAQCAtMjI5Miw2ICYjNDM7MjMwOCw3IEBAIF9jb25uX3JxX2NvbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLCB1bmlvbiBkCiBlbnVtIGRyYmRfc3RhdGVfcnYKIF9jb25uX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLCB1bmlvbiBkcmJkX3N0YXRlIHZhbCwKIAkJICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGZsYWdzKQomIzQzOwlfX2NvbnRleHRfdW5zYWZlKGNvbmRpdGlvbmFsIGxvY2tpbmcpCiB7CiAJZW51bSBkcmJkX3N0YXRlX3J2IHJ2ID0gU1NfU1VDQ0VTUzsKIAlzdHJ1Y3QgYWZ0ZXJfY29ubl9zdGF0ZV9jaGdfd29yayAqYWNzY3c7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5oIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuaAppbmRleCBjYmFlYjgwMThkYmY1OS4uYTdlMzFkMDkyMDM5NmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3N0YXRlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuaApAQCAtMTEyLDI2ICYjNDM7MTEyLDIzIEBAIHVuaW9uIGRyYmRfZGV2X3N0YXRlIHsKIAl1bnNpZ25lZCBpbnQgaTsKIH07CiAKLWV4dGVybiBlbnVtIGRyYmRfc3RhdGVfcnYgZHJiZF9jaGFuZ2Vfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCi0JCQkJCSAgICBlbnVtIGNoZ19zdGF0ZV9mbGFncyBmLAotCQkJCQkgICAgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLAotCQkJCQkgICAgdW5pb24gZHJiZF9zdGF0ZSB2YWwpOwotZXh0ZXJuIHZvaWQgZHJiZF9mb3JjZV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSwKLQkJCXVuaW9uIGRyYmRfc3RhdGUpOwotZXh0ZXJuIGVudW0gZHJiZF9zdGF0ZV9ydiBfZHJiZF9yZXF1ZXN0X3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqLAotCQkJCQkgICAgICB1bmlvbiBkcmJkX3N0YXRlLAotCQkJCQkgICAgICB1bmlvbiBkcmJkX3N0YXRlLAotCQkJCQkgICAgICBlbnVtIGNoZ19zdGF0ZV9mbGFncyk7Ci0KLWV4dGVybiBlbnVtIGRyYmRfc3RhdGVfcnYKJiM0MztlbnVtIGRyYmRfc3RhdGVfcnYgZHJiZF9jaGFuZ2Vfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsCiYjNDM7CQkJCSAgICAgZW51bSBjaGdfc3RhdGVfZmxhZ3MgZiwKJiM0MzsJCQkJICAgICB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssCiYjNDM7CQkJCSAgICAgdW5pb24gZHJiZF9zdGF0ZSB2YWwpOwomIzQzO3ZvaWQgZHJiZF9mb3JjZV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSwgdW5pb24gZHJiZF9zdGF0ZSk7CiYjNDM7ZW51bSBkcmJkX3N0YXRlX3J2IF9kcmJkX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsCiYjNDM7CQkJCSAgICAgICB1bmlvbiBkcmJkX3N0YXRlLCBlbnVtIGNoZ19zdGF0ZV9mbGFncyk7CiYjNDM7CiYjNDM7ZW51bSBkcmJkX3N0YXRlX3J2CiBfZHJiZF9yZXF1ZXN0X3N0YXRlX2hvbGRpbmdfc3RhdGVfbXV0ZXgoc3RydWN0IGRyYmRfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsCiAJCQkJCXVuaW9uIGRyYmRfc3RhdGUsIGVudW0gY2hnX3N0YXRlX2ZsYWdzKTsKIAotZXh0ZXJuIGVudW0gZHJiZF9zdGF0ZV9ydiBfZHJiZF9zZXRfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsCi0JCQkJCSAgZW51bSBjaGdfc3RhdGVfZmxhZ3MsCi0JCQkJCSAgc3RydWN0IGNvbXBsZXRpb24gKmRvbmUpOwotZXh0ZXJuIHZvaWQgcHJpbnRfc3RfZXJyKHN0cnVjdCBkcmJkX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLAotCQkJdW5pb24gZHJiZF9zdGF0ZSwgZW51bSBkcmJkX3N0YXRlX3J2KTsKJiM0MztlbnVtIGRyYmRfc3RhdGVfcnYgX2RyYmRfc2V0X3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLAomIzQzOwkJCQkgICBlbnVtIGNoZ19zdGF0ZV9mbGFncywKJiM0MzsJCQkJICAgc3RydWN0IGNvbXBsZXRpb24gKmRvbmUpOwomIzQzO3ZvaWQgcHJpbnRfc3RfZXJyKHN0cnVjdCBkcmJkX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLCB1bmlvbiBkcmJkX3N0YXRlLAomIzQzOwkJICBlbnVtIGRyYmRfc3RhdGVfcnYpOwogCiBlbnVtIGRyYmRfc3RhdGVfcnYKIF9jb25uX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLCB1bmlvbiBkcmJkX3N0YXRlIHZhbCwKQEAgLTE0MSw4ICYjNDM7MTM4LDggQEAgZW51bSBkcmJkX3N0YXRlX3J2CiBjb25uX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLCB1bmlvbiBkcmJkX3N0YXRlIHZhbCwKIAkJICAgZW51bSBjaGdfc3RhdGVfZmxhZ3MgZmxhZ3MpOwogCi1leHRlcm4gdm9pZCBkcmJkX3Jlc3VtZV9hbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7Ci1leHRlcm4gYm9vbCBjb25uX2FsbF92b2xzX3VuY29uZihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTsKJiM0Mzt2b2lkIGRyYmRfcmVzdW1lX2FsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTsKJiM0Mztib29sIGNvbm5fYWxsX3ZvbHNfdW5jb25mKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pOwogCiAvKioKICAqIGRyYmRfcmVxdWVzdF9zdGF0ZSgpIC0gUmVxdWVzdCBhIHN0YXRlIGNoYW5nZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGVfY2hhbmdlLmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZV9jaGFuZ2UuaAppbmRleCBhNTZhNTdkNjc2ODYyOS4uZjU4YTU1MDE0MTc3ZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3N0YXRlX2NoYW5nZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3N0YXRlX2NoYW5nZS5oCkBAIC00MCwyNSAmIzQzOzQwLDE3IEBAIHN0cnVjdCBkcmJkX3N0YXRlX2NoYW5nZSB7CiAJc3RydWN0IGRyYmRfcGVlcl9kZXZpY2Vfc3RhdGVfY2hhbmdlICpwZWVyX2RldmljZXM7CiB9OwogCi1leHRlcm4gc3RydWN0IGRyYmRfc3RhdGVfY2hhbmdlICpyZW1lbWJlcl9vbGRfc3RhdGUoc3RydWN0IGRyYmRfcmVzb3VyY2UgKiwgZ2ZwX3QpOwotZXh0ZXJuIHZvaWQgY29weV9vbGRfdG9fbmV3X3N0YXRlX2NoYW5nZShzdHJ1Y3QgZHJiZF9zdGF0ZV9jaGFuZ2UgKik7Ci1leHRlcm4gdm9pZCBmb3JnZXRfc3RhdGVfY2hhbmdlKHN0cnVjdCBkcmJkX3N0YXRlX2NoYW5nZSAqKTsKLQotZXh0ZXJuIGludCBub3RpZnlfcmVzb3VyY2Vfc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosCi0JCQkJCSB1bnNpZ25lZCBpbnQsCi0JCQkJCSB2b2lkICosCi0JCQkJCSBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7Ci1leHRlcm4gaW50IG5vdGlmeV9jb25uZWN0aW9uX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLAotCQkJCQkgICB1bnNpZ25lZCBpbnQsCi0JCQkJCSAgIHZvaWQgKiwKLQkJCQkJICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpOwotZXh0ZXJuIGludCBub3RpZnlfZGV2aWNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLAotCQkJCSAgICAgICB1bnNpZ25lZCBpbnQsCi0JCQkJICAgICAgIHZvaWQgKiwKLQkJCQkgICAgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpOwotZXh0ZXJuIGludCBub3RpZnlfcGVlcl9kZXZpY2Vfc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosCi0JCQkJCSAgICB1bnNpZ25lZCBpbnQsCi0JCQkJCSAgICB2b2lkICosCi0JCQkJCSAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7CiYjNDM7c3RydWN0IGRyYmRfc3RhdGVfY2hhbmdlICpyZW1lbWJlcl9vbGRfc3RhdGUoc3RydWN0IGRyYmRfcmVzb3VyY2UgKiwgZ2ZwX3QpOwomIzQzO3ZvaWQgY29weV9vbGRfdG9fbmV3X3N0YXRlX2NoYW5nZShzdHJ1Y3QgZHJiZF9zdGF0ZV9jaGFuZ2UgKik7CiYjNDM7dm9pZCBmb3JnZXRfc3RhdGVfY2hhbmdlKHN0cnVjdCBkcmJkX3N0YXRlX2NoYW5nZSAqKTsKJiM0MzsKJiM0MztpbnQgbm90aWZ5X3Jlc291cmNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsIHZvaWQgKiwKJiM0MzsJCQkJIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSB0eXBlKTsKJiM0MztpbnQgbm90aWZ5X2Nvbm5lY3Rpb25fc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCwgdm9pZCAqLAomIzQzOwkJCQkgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7CiYjNDM7aW50IG5vdGlmeV9kZXZpY2Vfc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCwgdm9pZCAqLAomIzQzOwkJCSAgICAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7CiYjNDM7aW50IG5vdGlmeV9wZWVyX2RldmljZV9zdGF0ZV9jaGFuZ2Uoc3RydWN0IHNrX2J1ZmYgKiwgdW5zaWduZWQgaW50LCB2b2lkICosCiYjNDM7CQkJCSAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7CiAKICNlbmRpZiAgLyogRFJCRF9TVEFURV9DSEFOR0VfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfd29ya2VyLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF93b3JrZXIuYwppbmRleCAwNjk3Zjk5ZmVkMThkNy4uNmZlYzU5YmJmMGU5YTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3dvcmtlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3dvcmtlci5jCkBAIC03OCw3ICYjNDM7NzgsNyBAQCB2b2lkIGRyYmRfbWRfZW5kaW8oc3RydWN0IGJpbyAqYmlvKQogLyogcmVhZHMgb24gYmVoYWxmIG9mIHRoZSBwYXJ0bmVyLAogICogJiMzNDtzdWJtaXR0ZWQmIzM0OyBieSB0aGUgcmVjZWl2ZXIKICAqLwotc3RhdGljIHZvaWQgZHJiZF9lbmRpb19yZWFkX3NlY19maW5hbChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKSBfX3JlbGVhc2VzKGxvY2FsKQomIzQzO3N0YXRpYyB2b2lkIGRyYmRfZW5kaW9fcmVhZF9zZWNfZmluYWwoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSkKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzID0gMDsKIAlzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UgPSBwZWVyX3JlcS0mZ3Q7cGVlcl9kZXZpY2U7CkBAIC05OSw3ICYjNDM7OTksNyBAQCBzdGF0aWMgdm9pZCBkcmJkX2VuZGlvX3JlYWRfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpIF9fcmVsZQogCiAvKiB3cml0ZXMgb24gYmVoYWxmIG9mIHRoZSBwYXJ0bmVyLCBvciByZXN5bmMgd3JpdGVzLAogICogJiMzNDtzdWJtaXR0ZWQmIzM0OyBieSB0aGUgcmVjZWl2ZXIsIGZpbmFsIHN0YWdlLiAgKi8KLXZvaWQgZHJiZF9lbmRpb193cml0ZV9zZWNfZmluYWwoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSkgX19yZWxlYXNlcyhsb2NhbCkKJiM0Mzt2b2lkIGRyYmRfZW5kaW9fd3JpdGVfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFncyA9IDA7CiAJc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlID0gcGVlcl9yZXEtJmd0O3BlZXJfZGV2aWNlOwpAQCAtMTkyMywxMCAmIzQzOzE5MjMsOCBAQCBzdGF0aWMgdm9pZCBkcmJkX2xkZXZfZGVzdHJveShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkKIAlsY19kZXN0cm95KGRldmljZS0mZ3Q7YWN0X2xvZyk7CiAJZGV2aWNlLSZndDthY3RfbG9nID0gTlVMTDsKIAotCV9fYWNxdWlyZShsb2NhbCk7CiAJZHJiZF9iYWNraW5nX2Rldl9mcmVlKGRldmljZSwgZGV2aWNlLSZndDtsZGV2KTsKIAlkZXZpY2UtJmd0O2xkZXYgPSBOVUxMOwotCV9fcmVsZWFzZShsb2NhbCk7CiAKIAljbGVhcl9iaXQoR09JTkdfRElTS0xFU1MsICZhbXA7ZGV2aWNlLSZndDtmbGFncyk7CiAJd2FrZV91cCgmYW1wO2RldmljZS0mZ3Q7bWlzY193YWl0KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTk6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg3OTYKCQkJCQkJCW91dHB1dDogMTM5CgkJCQkJCQl0aG91Z2h0czogNTUzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpczogU3BhcnNlIEFubm90YXRpb24gJmFtcDsgUmVmYWN0b3JpbmcgZm9yIENvbnRleHQgVHJhY2tpbmcqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggZm9yIHRoZSBEUkJEIGJsb2NrIGRyaXZlciwgYW5kIHRoZSBjb21taXQgbWVzc2FnZSBpbmRpY2F0ZXMgaXQmIzM5O3MgYSByZXNwb25zZSB0byBhIHN0YXRpYyBhbmFseXNpcyByZXBvcnQsIHNwZWNpZmljYWxseSBmcm9tIHRoZSAmIzM0O3N5ei1jbHVzdGVyJiMzNDsuIE15IGluaXRpYWwgZ2xhbmNlIHN1Z2dlc3RzIGEgZm9jdXMgb24gY2xlYW5pbmcgdXAgdGhlIGNvZGUgZm9yIGJldHRlciBzdGF0aWMgYW5hbHlzaXMgY29tcGF0aWJpbGl0eS4gSXQgbG9va3MgbGlrZSBpdCBtb2RpZmllcyBhIGZldyBmaWxlcyB3aXRoaW4gdGhlIGBkcml2ZXJzL2Jsb2NrL2RyYmQvYCBkaXJlY3RvcnkuCgpUaGUgZmlyc3QgdGhpbmcgdGhhdCBncmFicyBteSBhdHRlbnRpb24gaXMgdGhlIGFkZGl0aW9uIG9mIGBDT05URVhUX0FOQUxZU0lTIDo9IHlgIHRvIHRoZSBgTWFrZWZpbGVgLiBUaGF0JiMzOTtzIGEgc3Ryb25nIGluZGljYXRvciB0aGF0IHRoZSBwcmltYXJ5IGdvYWwgaXMgdG8gYWRkcmVzcyBjb250ZXh0IHRyYWNraW5nIGlzc3VlcyBmbGFnZ2VkIGJ5IHRoZSBzdGF0aWMgYW5hbHl6ZXIsIGxpa2VseSBTcGFyc2UuICBUaGVuLCBjaGFuZ2VzIGluIGBkcmJkX2JpdG1hcC5jYCByZWFsbHkgaGlnaGxpZ2h0IHRoaXM6IHRoZSBhZGRpdGlvbiBhbmQgcmVtb3ZhbCBvZiBzcGFyc2UgYW5ub3RhdGlvbnMgKGBfX2FjcXVpcmVzYCwgYF9fcmVsZWFzZXNgLCBgX19hY3F1aXJlYCwgYF9fcmVsZWFzZWAsIGBfX211c3RfaG9sZGApLCBhbmQgdGhhdCBgZHJiZF9ibV9sb2NrYCB1cGRhdGUgaXMgYSBnb29kIGV4YW1wbGUuICBUaGUgb3JpZ2luYWwgY29kZSB1c2VkIGBtdXRleF90cnlsb2NrYCBmb2xsb3dlZCBieSBhIGBtdXRleF9sb2NrYCBpZiB0aGUgYHRyeWxvY2tgIGZhaWxlZCwgd2l0aCBhIHdhcm5pbmcuIFRoaXMgcGF0Y2ggc2ltcGx5IHJlcGxhY2VzIHRoZSBgbXV0ZXhfdHJ5bG9ja2Agd2l0aCBhIGRpcmVjdCBgbXV0ZXhfbG9ja2AgYWxvbmcgd2l0aCB0aGUgYXBwcm9wcmlhdGUgYF9fYWNxdWlyZWAgYW5ub3RhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudDsgaXQgc2ltcGxpZmllcyB0aGUgY29kZSBhbmQgcmVkdWNlcyBhIHNwdXJpb3VzIHdhcm5pbmcuIFRoZXJlJiMzOTtzIGFsc28gdGhlIHJlbW92YWwgb2YgYGlmICghYilgIGNoZWNrcyBpbiBgZHJiZF9ibV9sb2NrYCBhbmQgYGRyYmRfYm1fdW5sb2NrYC4gIFRoaXMgKmNvdWxkKiBiZSBhIGJ1ZyBpZiBgYmAgY2FuIGJlIGBOVUxMYCB1bmRlciBhbnkgY2lyY3Vtc3RhbmNlLiBIb3dldmVyLCBpdCYjMzk7cyB2ZXJ5IGxpa2VseSB0aGF0IHRoaXMgY2hlY2sgd2FzIGRlZmVuc2l2ZSBhbmQgdGhlIGF1dGhvciBmZWx0IGl0IHdhcyBub3QgbmVjZXNzYXJ5LgoKTW92aW5nIG9uIHRvIGBkcmJkX25sLmNgLCB0aGVyZSYjMzk7cyBzb21lIHJlZmFjdG9yaW5nIGluIGBkcmJkX25sX2dldF9jb25uZWN0aW9uc19kdW1waXRgLiBJIHNlZSB0aGUgYGdvdG8gcHV0X3Jlc3VsdGAgcmVwbGFjZWQgd2l0aCBjb25kaXRpb25hbCBsb2dpYyB0byBoYW5kbGUgdGhlIHJlc291cmNlIG5vdCBmb3VuZCBjYXNlLiBUaGlzIGlzIGZ1bmN0aW9uYWxseSBpZGVudGljYWwsIGp1c3QgbW9yZSBleHBsaWNpdCBhYm91dCB0aGUgZXJyb3IgcGF0aC4gVGhlIHBhdHRlcm4gY29udGludWVzLCB3aXRoIGBfX211c3RfaG9sZGAgYW5kIG90aGVyIGFubm90YXRpb25zIGFkZGVkIGFuZCByZW1vdmVkIGluIHRoZSBjb2RlIHRvIHNhdGlzZnkgc3BhcnNlLgoKQWZ0ZXIgYSB0aG9yb3VnaCByZXZpZXcgb2YgdGhlIGNvZGUgZGlmZiwgdGhlIGNoYW5nZXMgaW4gYGRyYmRfcmVxX3N0YXRlYCBzZWVtIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50LiBJdOKAmXMganVzdCByZWZhY3RvcmluZyB0byBhdm9pZCBjb25kaXRpb25hbCBsb2NraW5nLCB3aGljaCwgYWdhaW4sIFNwYXJzZSBkb2VzbiYjMzk7dCBsaWtlLiBUaGUgYWRkaXRpb24gb2YgYGNvbnRleHRfdW5zYWZlYCBhcm91bmQgYSBmZXcgYmxvY2tzIGFsc28gc3VnZ2VzdHMgaGFuZGxpbmcgbmVzdGVkIGxvY2tpbmcgc2NlbmFyaW9zLCBhbmQgdGhlIGBDT05URVhUX0FOQUxZU0lTIDo9IHlgIGluIHRoZSBgTWFrZWZpbGVgIGNvbmZpcm1zIHRoYXQgY29udGV4dCBhbmFseXNpcyBpcyBlbmFibGVkLiBUaGlzIGxpa2VseSB1c2VzIGEgbWFjcm8gZGVmaW5lZCBzb21ld2hlcmUsIG5vdCBhbiBhY3R1YWwga2VybmVsIGZ1bmN0aW9uLiAgSSBhbSBkaWdnaW5nIGludG8gYGRyYmRfbWFpbi5jYCB3aGVyZSB0aGUgaW5saW5lIGZ1bmN0aW9ucyB3ZXJlIHJlc3RvcmVkIGFmdGVyIHRoZSBgI2lmZGVmIF9fQ0hFQ0tFUl9fYC4KClRoaXMgcGF0Y2ggaXMgZXNzZW50aWFsbHkgYSByZWZhY3RvcmluZyBlZmZvcnQgdG8gbWFrZSB0aGUgY29kZSBjb21wbHkgd2l0aCB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoZSBzdGF0aWMgYW5hbHlzaXMgdG9vbCwgbGlrZWx5IFNwYXJzZS4gSXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgZmVhdHVyZXMgb3IgYW55IGNoYW5nZSB0byBmdW5kYW1lbnRhbCBsb2dpYyB0aGF0IHdvdWxkIHdhcnJhbnQgYSBkZWVwIGZ1enppbmcgY2FtcGFpZ24uIFRoZSBjaGFuZ2VzIGFyZSBhbG1vc3QgcHVyZWx5IGFib3V0IGdldHRpbmcgdGhlIGNvZGUgdG8gJiMzNDtjaGVjayBvdXQmIzM0OyB3aXRoIFNwYXJzZS4gUmVtb3ZpbmcgdGhlIGBpZiAoIWIpYCBjaGVja3MgaW4gYGRyYmRfYm1fbG9ja2AgYW5kIGBkcmJkX2JtX3VubG9ja2AsIGlzIGEgcG9zc2libGUgYnVnLiBIb3dldmVyLCBpdCBpcyB1bmxpa2VseSB0aGlzIGNoZWNrIGlzIHJlYWNoZWQsIGl0IGlzIGRlZmVuc2l2ZSBhbmQgbm90IG5lY2Vzc2FyeS4KClNvLCBpbiBzdW1tYXJ5LCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRoaXMgaXMgYSBwYXRjaCBhaW1lZCBhdCBpbXByb3ZpbmcgdGhlIGNvZGUmIzM5O3Mgc3RhdGljIGFuYWx5c2lzIHByb3BlcnRpZXMgYW5kIHdvdWxkIG5vdCBiZSB3b3J0aCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE5OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaXMgYSBsYXJnZSByZWZhY3RvcmluZyBhaW1lZCBhdCBmaXhpbmcgc3BhcnNlIHdhcm5pbmdzLiBJdCByZW1vdmVzIGBleHRlcm5gIGZyb20gZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluIGhlYWRlcnMsIHJlbW92ZXMgY3VzdG9tIHNwYXJzZSBhbm5vdGF0aW9ucyBsaWtlIGBfX211c3RfaG9sZChsb2NhbClgLCBgX19hY3F1aXJlKGxvY2FsKWAsIGBfX3JlbGVhc2UobG9jYWwpYCwgYW5kIHJlZmFjdG9ycyBjb2RlIHRvIGF2b2lkIGNvbmRpdGlvbmFsIGxvY2tpbmcgKGUuZy4gYGRyYmRfcmVxX3N0YXRlYCkuIEl0IGFsc28gcmVtb3ZlcyBhIGZldyBkZWZlbnNpdmUgTlVMTCBjaGVja3MgYW5kIGEgd2FybmluZyBvbiBsb2NrIGNvbnRlbnRpb24gaW4gYGRyYmRfYm1fbG9ja2AuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUgbG9naWMgdGhhdCB3b3VsZCByZXF1aXJlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIGxhcmdlIHJlZmFjdG9yaW5nIGFpbWVkIGF0IGZpeGluZyBzcGFyc2Ugd2FybmluZ3MuIEl0IHJlbW92ZXMgYGV4dGVybmAgZnJvbSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW4gaGVhZGVycywgcmVtb3ZlcyBjdXN0b20gc3BhcnNlIGFubm90YXRpb25zIGxpa2UgYF9fbXVzdF9ob2xkKGxvY2FsKWAsIGBfX2FjcXVpcmUobG9jYWwpYCwgYF9fcmVsZWFzZShsb2NhbClgLCBhbmQgcmVmYWN0b3JzIGNvZGUgdG8gYXZvaWQgY29uZGl0aW9uYWwgbG9ja2luZyAoZS5nLiBgZHJiZF9yZXFfc3RhdGVgKS4gSXQgYWxzbyByZW1vdmVzIGEgZmV3IGRlZmVuc2l2ZSBOVUxMIGNoZWNrcyBhbmQgYSB3YXJuaW5nIG9uIGxvY2sgY29udGVudGlvbiBpbiBgZHJiZF9ibV9sb2NrYC4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29yZSBsb2dpYyB0aGF0IHdvdWxkIHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxOTo0OTo0Mi42MjM2ODk5NzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTM1MTQ4NDEzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaXMgYSBsYXJnZSByZWZhY3RvcmluZyBhaW1lZCBhdCBmaXhpbmcgc3BhcnNlIHdhcm5pbmdzLiBJdCByZW1vdmVzIGBleHRlcm5gIGZyb20gZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluIGhlYWRlcnMsIHJlbW92ZXMgY3VzdG9tIHNwYXJzZSBhbm5vdGF0aW9ucyBsaWtlIGBfX211c3RfaG9sZChsb2NhbClgLCBgX19hY3F1aXJlKGxvY2FsKWAsIGBfX3JlbGVhc2UobG9jYWwpYCwgYW5kIHJlZmFjdG9ycyBjb2RlIHRvIGF2b2lkIGNvbmRpdGlvbmFsIGxvY2tpbmcgKGUuZy4gYGRyYmRfcmVxX3N0YXRlYCkuIEl0IGFsc28gcmVtb3ZlcyBhIGZldyBkZWZlbnNpdmUgTlVMTCBjaGVja3MgYW5kIGEgd2FybmluZyBvbiBsb2NrIGNvbnRlbnRpb24gaW4gYGRyYmRfYm1fbG9ja2AuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUgbG9naWMgdGhhdCB3b3VsZCByZXF1aXJlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxOTo0OTo0Mi42MjM2OTUzNzhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczOTU5OTA4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQ1YmI0YTgwZGM5NTM4ZDkzY2M5Zjk1ZWU1MTc0ODcwYjAwY2RhZDFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTAgMTk6NDk6NDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL01ha2VmaWxlIGIvZHJpdmVycy9ibG9jay9kcmJkL01ha2VmaWxlXFxuaW5kZXggNWZhYWE4YThlN2YwMjkuLmNhZTY1NTc4MDAxYmM1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9NYWtlZmlsZVxcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9NYWtlZmlsZVxcbkBAIC0xLDQgKzEsNyBAQFxcbiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4rXFxuK0NPTlRFWFRfQU5BTFlTSVMgOj0geVxcbitcXG4gZHJiZC15IDo9IGRyYmRfYnVpbGR0YWcubyBkcmJkX2JpdG1hcC5vIGRyYmRfcHJvYy5vXFxuIGRyYmQteSArPSBkcmJkX3dvcmtlci5vIGRyYmRfcmVjZWl2ZXIubyBkcmJkX3JlcS5vIGRyYmRfYWN0bG9nLm9cXG4gZHJiZC15ICs9IGRyYmRfbWFpbi5vIGRyYmRfc3RyaW5ncy5vIGRyYmRfbmwub1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9iaXRtYXAuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2JpdG1hcC5jXFxuaW5kZXggNjVlYTZlYzY2YmZkNWMuLmQ4NDliZDc4MGNhOTY0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2JpdG1hcC5jXFxuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYml0bWFwLmNcXG5AQCAtMTIyLDI0ICsxMjIsMTMgQEAgc3RhdGljIHZvaWQgX19ibV9wcmludF9sb2NrX2luZm8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKmZ1bmMpXFxuIH1cXG4gXFxuIHZvaWQgZHJiZF9ibV9sb2NrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncylcXG4rXFx0X19hY3F1aXJlcyhkcmJkX2Rldl9ibV9sb2NrKVxcbitcXHRfX2FjcXVpcmVzKFxcdTAwMjZkZXZpY2UtXFx1MDAzZWJpdG1hcC1cXHUwMDNlYm1fY2hhbmdlKVxcbiB7XFxuIFxcdHN0cnVjdCBkcmJkX2JpdG1hcCAqYiA9IGRldmljZS1cXHUwMDNlYml0bWFwO1xcbi1cXHRpbnQgdHJ5bG9ja19mYWlsZWQ7XFxuIFxcbi1cXHRpZiAoIWIpIHtcXG4tXFx0XFx0ZHJiZF9lcnIoZGV2aWNlLCBcXFwiRklYTUUgbm8gYml0bWFwIGluIGRyYmRfYm1fbG9jayE/XFxcXG5cXFwiKTtcXG4tXFx0XFx0cmV0dXJuO1xcbi1cXHR9XFxuLVxcbi1cXHR0cnlsb2NrX2ZhaWxlZCA9ICFtdXRleF90cnlsb2NrKFxcdTAwMjZiLVxcdTAwM2VibV9jaGFuZ2UpO1xcbi1cXG4tXFx0aWYgKHRyeWxvY2tfZmFpbGVkKSB7XFxuLVxcdFxcdGRyYmRfd2FybihkZXZpY2UsIFxcXCIlc1slZF0gZ29pbmcgdG8gJyVzJyBidXQgYml0bWFwIGFscmVhZHkgbG9ja2VkIGZvciAnJXMnIGJ5ICVzWyVkXVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0ICBjdXJyZW50LVxcdTAwM2Vjb21tLCB0YXNrX3BpZF9ucihjdXJyZW50KSxcXG4tXFx0XFx0XFx0ICB3aHksIGItXFx1MDAzZWJtX3doeSA/OiBcXFwiP1xcXCIsXFxuLVxcdFxcdFxcdCAgYi1cXHUwMDNlYm1fdGFzay1cXHUwMDNlY29tbSwgdGFza19waWRfbnIoYi1cXHUwMDNlYm1fdGFzaykpO1xcbi1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZiLVxcdTAwM2VibV9jaGFuZ2UpO1xcbi1cXHR9XFxuK1xcdF9fYWNxdWlyZShkcmJkX2Rldl9ibV9sb2NrKTtcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2Yi1cXHUwMDNlYm1fY2hhbmdlKTtcXG4gXFx0aWYgKEJNX0xPQ0tFRF9NQVNLIFxcdTAwMjYgYi1cXHUwMDNlYm1fZmxhZ3MpXFxuIFxcdFxcdGRyYmRfZXJyKGRldmljZSwgXFxcIkZJWE1FIGJpdG1hcCBhbHJlYWR5IGxvY2tlZCBpbiBibV9sb2NrXFxcXG5cXFwiKTtcXG4gXFx0Yi1cXHUwMDNlYm1fZmxhZ3MgfD0gZmxhZ3MgXFx1MDAyNiBCTV9MT0NLRURfTUFTSztcXG5AQCAtMTQ5LDEyICsxMzgsMTAgQEAgdm9pZCBkcmJkX2JtX2xvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNoYXIgKndoeSwgZW51bSBibV9mbGFnIGZsYWdzKVxcbiB9XFxuIFxcbiB2b2lkIGRyYmRfYm1fdW5sb2NrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxcbitcXHRfX3JlbGVhc2VzKGRyYmRfZGV2X2JtX2xvY2spXFxuK1xcdF9fcmVsZWFzZXMoXFx1MDAyNmRldmljZS1cXHUwMDNlYml0bWFwLVxcdTAwM2VibV9jaGFuZ2UpXFxuIHtcXG4gXFx0c3RydWN0IGRyYmRfYml0bWFwICpiID0gZGV2aWNlLVxcdTAwM2ViaXRtYXA7XFxuLVxcdGlmICghYikge1xcbi1cXHRcXHRkcmJkX2VycihkZXZpY2UsIFxcXCJGSVhNRSBubyBiaXRtYXAgaW4gZHJiZF9ibV91bmxvY2shP1xcXFxuXFxcIik7XFxuLVxcdFxcdHJldHVybjtcXG4tXFx0fVxcbiBcXG4gXFx0aWYgKCEoQk1fTE9DS0VEX01BU0sgXFx1MDAyNiBkZXZpY2UtXFx1MDAzZWJpdG1hcC1cXHUwMDNlYm1fZmxhZ3MpKVxcbiBcXHRcXHRkcmJkX2VycihkZXZpY2UsIFxcXCJGSVhNRSBiaXRtYXAgbm90IGxvY2tlZCBpbiBibV91bmxvY2tcXFxcblxcXCIpO1xcbkBAIC0xNjMsNiArMTUwLDcgQEAgdm9pZCBkcmJkX2JtX3VubG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcXG4gXFx0Yi1cXHUwMDNlYm1fd2h5ICA9IE5VTEw7XFxuIFxcdGItXFx1MDAzZWJtX3Rhc2sgPSBOVUxMO1xcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmItXFx1MDAzZWJtX2NoYW5nZSk7XFxuK1xcdF9fcmVsZWFzZShkcmJkX2Rldl9ibV9sb2NrKTtcXG4gfVxcbiBcXG4gLyogd2Ugc3RvcmUgc29tZSBcXFwibWV0YVxcXCIgaW5mbyBhYm91dCBvdXIgcGFnZXMgaW4gcGFnZS1cXHUwMDNlcHJpdmF0ZSAqL1xcbkBAIC05ODcsNyArOTc1LDcgQEAgc3RhdGljIGlubGluZSBzZWN0b3JfdCBkcmJkX21kX2xhc3RfYml0bWFwX3NlY3RvcihzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldilcXG4gXFx0fVxcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBibV9wYWdlX2lvX2FzeW5jKHN0cnVjdCBkcmJkX2JtX2Fpb19jdHggKmN0eCwgaW50IHBhZ2VfbnIpIF9fbXVzdF9ob2xkKGxvY2FsKVxcbitzdGF0aWMgdm9pZCBibV9wYWdlX2lvX2FzeW5jKHN0cnVjdCBkcmJkX2JtX2Fpb19jdHggKmN0eCwgaW50IHBhZ2VfbnIpXFxuIHtcXG4gXFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBjdHgtXFx1MDAzZWRldmljZTtcXG4gXFx0ZW51bSByZXFfb3Agb3AgPSBjdHgtXFx1MDAzZWZsYWdzIFxcdTAwMjYgQk1fQUlPX1JFQUQgPyBSRVFfT1BfUkVBRCA6IFJFUV9PUF9XUklURTtcXG5AQCAtMTA2MCw3ICsxMDQ4LDggQEAgc3RhdGljIHZvaWQgYm1fcGFnZV9pb19hc3luYyhzdHJ1Y3QgZHJiZF9ibV9haW9fY3R4ICpjdHgsIGludCBwYWdlX25yKSBfX211c3RfaG9cXG4gLypcXG4gICogYm1fcnc6IHJlYWQvd3JpdGUgdGhlIHdob2xlIGJpdG1hcCBmcm9tL3RvIGl0cyBvbiBkaXNrIGxvY2F0aW9uLlxcbiAgKi9cXG4tc3RhdGljIGludCBibV9ydyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgdW5zaWduZWQgaW50IGZsYWdzLCB1bnNpZ25lZCBsYXp5X3dyaXRlb3V0X3VwcGVyX2lkeCkgX19tdXN0X2hvbGQobG9jYWwpXFxuK3N0YXRpYyBpbnQgYm1fcncoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IHVuc2lnbmVkIGludCBmbGFncyxcXG4rXFx0XFx0IHVuc2lnbmVkIGxhenlfd3JpdGVvdXRfdXBwZXJfaWR4KVxcbiB7XFxuIFxcdHN0cnVjdCBkcmJkX2JtX2Fpb19jdHggKmN0eDtcXG4gXFx0c3RydWN0IGRyYmRfYml0bWFwICpiID0gZGV2aWNlLVxcdTAwM2ViaXRtYXA7XFxuQEAgLTEyMTUsNyArMTIwNCw3IEBAIHN0YXRpYyBpbnQgYm1fcncoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IHVuc2lnbmVkIGludCBmbGFncywgdW5zaWduZWRcXG4gICogQGRldmljZTpcXHREUkJEIGRldmljZS5cXG4gICovXFxuIGludCBkcmJkX2JtX3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuLVxcdFxcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxcbitcXHRcXHQgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxcbiBcXG4ge1xcbiBcXHRyZXR1cm4gYm1fcncoZGV2aWNlLCBCTV9BSU9fUkVBRCwgMCk7XFxuQEAgLTEyMjgsNyArMTIxNyw3IEBAIGludCBkcmJkX2JtX3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuICAqIFdpbGwgb25seSB3cml0ZSBwYWdlcyB0aGF0IGhhdmUgY2hhbmdlZCBzaW5jZSBsYXN0IElPLlxcbiAgKi9cXG4gaW50IGRyYmRfYm1fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuLVxcdFxcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxcbitcXHRcXHQgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcXG4ge1xcbiBcXHRyZXR1cm4gYm1fcncoZGV2aWNlLCAwLCAwKTtcXG4gfVxcbkBAIC0xMjQwLDcgKzEyMjksNyBAQCBpbnQgZHJiZF9ibV93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4gICogV2lsbCB3cml0ZSBhbGwgcGFnZXMuXFxuICAqL1xcbiBpbnQgZHJiZF9ibV93cml0ZV9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuLVxcdFxcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXFxuK1xcdFxcdCAgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcXG4ge1xcbiBcXHRyZXR1cm4gYm1fcncoZGV2aWNlLCBCTV9BSU9fV1JJVEVfQUxMX1BBR0VTLCAwKTtcXG4gfVxcbkBAIC0xMjUwLDcgKzEyMzksNyBAQCBpbnQgZHJiZF9ibV93cml0ZV9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuICAqIEBkZXZpY2U6XFx0RFJCRCBkZXZpY2UuXFxuICAqIEB1cHBlcl9pZHg6XFx0MDogd3JpdGUgYWxsIGNoYW5nZWQgcGFnZXM7ICt2ZTogcGFnZSBpbmRleCB0byBzdG9wIHNjYW5uaW5nIGZvciBjaGFuZ2VkIHBhZ2VzXFxuICAqL1xcbi1pbnQgZHJiZF9ibV93cml0ZV9sYXp5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCB1cHBlcl9pZHgpIF9fbXVzdF9ob2xkKGxvY2FsKVxcbitpbnQgZHJiZF9ibV93cml0ZV9sYXp5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCB1cHBlcl9pZHgpXFxuIHtcXG4gXFx0cmV0dXJuIGJtX3J3KGRldmljZSwgQk1fQUlPX0NPUFlfUEFHRVMsIHVwcGVyX2lkeCk7XFxuIH1cXG5AQCAtMTI2Nyw3ICsxMjU2LDcgQEAgaW50IGRyYmRfYm1fd3JpdGVfbGF6eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgdXBwZXJfaWR4KSBfX211c3RfaG9cXG4gICogcGVuZGluZyByZXN5bmMgYWNrcyBhcmUgc3RpbGwgYmVpbmcgcHJvY2Vzc2VkLlxcbiAgKi9cXG4gaW50IGRyYmRfYm1fd3JpdGVfY29weV9wYWdlcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4tXFx0XFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcXG4rXFx0XFx0XFx0ICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXFxuIHtcXG4gXFx0cmV0dXJuIGJtX3J3KGRldmljZSwgQk1fQUlPX0NPUFlfUEFHRVMsIDApO1xcbiB9XFxuQEAgLTEyNzYsNyArMTI2NSw3IEBAIGludCBkcmJkX2JtX3dyaXRlX2NvcHlfcGFnZXMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuICAqIGRyYmRfYm1fd3JpdGVfaGludGVkKCkgLSBXcml0ZSBiaXRtYXAgcGFnZXMgd2l0aCBcXFwiaGludFxcXCIgbWFya3MsIGlmIHRoZXkgaGF2ZSBjaGFuZ2VkLlxcbiAgKiBAZGV2aWNlOlxcdERSQkQgZGV2aWNlLlxcbiAgKi9cXG4taW50IGRyYmRfYm1fd3JpdGVfaGludGVkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcXG4raW50IGRyYmRfYm1fd3JpdGVfaGludGVkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxcbiB7XFxuIFxcdHJldHVybiBibV9ydyhkZXZpY2UsIEJNX0FJT19XUklURV9ISU5URUQgfCBCTV9BSU9fQ09QWV9QQUdFUywgMCk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfY29uZmlnLmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9jb25maWcuaFxcbmluZGV4IGQyMTUzNjVjNmJiMWIwLi4xNmE5ODViMzBkZDNmZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9jb25maWcuaFxcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2NvbmZpZy5oXFxuQEAgLTcsNyArNyw3IEBAXFxuICNpZm5kZWYgRFJCRF9DT05GSUdfSFxcbiAjZGVmaW5lIERSQkRfQ09ORklHX0hcXG4gXFxuLWV4dGVybiBjb25zdCBjaGFyICpkcmJkX2J1aWxkdGFnKHZvaWQpO1xcbitjb25zdCBjaGFyICpkcmJkX2J1aWxkdGFnKHZvaWQpO1xcbiBcXG4gI2RlZmluZSBSRUxfVkVSU0lPTiBcXFwiOC40LjExXFxcIlxcbiAjZGVmaW5lIFBST19WRVJTSU9OX01JTiA4NlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9pbnQuaCBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludC5oXFxuaW5kZXggNDhiNDVjMzE0MmY3NmEuLjczY2VhYWIzODQyZDBlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludC5oXFxuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50LmhcXG5AQCAtMTA5LDcgKzEwOSw3IEBAIGV4dGVybiBzdHJ1Y3QgcmF0ZWxpbWl0X3N0YXRlIGRyYmRfcmF0ZWxpbWl0X3N0YXRlO1xcbiBleHRlcm4gc3RydWN0IGlkciBkcmJkX2RldmljZXM7IC8qIFJDVSwgdXBkYXRlczogZ2VubF9sb2NrKCkgKi9cXG4gZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgZHJiZF9yZXNvdXJjZXM7IC8qIFJDVSwgdXBkYXRlczogZ2VubF9sb2NrKCkgKi9cXG4gXFxuLWV4dGVybiBjb25zdCBjaGFyICpjbWRuYW1lKGVudW0gZHJiZF9wYWNrZXQgY21kKTtcXG4rY29uc3QgY2hhciAqY21kbmFtZShlbnVtIGRyYmRfcGFja2V0IGNtZCk7XFxuIFxcbiAvKiBmb3Igc2VuZGluZy9yZWNlaXZpbmcgdGhlIGJpdG1hcCxcXG4gICogcG9zc2libHkgaW4gc29tZSBlbmNvZGluZyBzY2hlbWUgKi9cXG5AQCAtMTI5LDggKzEyOSw4IEBAIHN0cnVjdCBibV94ZmVyX2N0eCB7XFxuIFxcdHVuc2lnbmVkIGJ5dGVzWzJdO1xcbiB9O1xcbiBcXG4tZXh0ZXJuIHZvaWQgSU5GT19ibV94ZmVyX3N0YXRzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcXG4tXFx0XFx0XFx0ICAgICAgIGNvbnN0IGNoYXIgKmRpcmVjdGlvbiwgc3RydWN0IGJtX3hmZXJfY3R4ICpjKTtcXG4rdm9pZCBJTkZPX2JtX3hmZXJfc3RhdHMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLFxcbitcXHRcXHRcXHRjb25zdCBjaGFyICpkaXJlY3Rpb24sIHN0cnVjdCBibV94ZmVyX2N0eCAqYyk7XFxuIFxcbiBzdGF0aWMgaW5saW5lIHZvaWQgYm1feGZlcl9jdHhfYml0X3RvX3dvcmRfb2Zmc2V0KHN0cnVjdCBibV94ZmVyX2N0eCAqYylcXG4ge1xcbkBAIC0xNTEsNyArMTUxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGJtX3hmZXJfY3R4X2JpdF90b193b3JkX29mZnNldChzdHJ1Y3QgYm1feGZlcl9jdHggKmMpXFxuICNlbmRpZlxcbiB9XFxuIFxcbi1leHRlcm4gdW5zaWduZWQgaW50IGRyYmRfaGVhZGVyX3NpemUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XFxuK3Vuc2lnbmVkIGludCBkcmJkX2hlYWRlcl9zaXplKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xcbiBcXG4gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuIGVudW0gZHJiZF90aHJlYWRfc3RhdGUge1xcbkBAIC0xOTUsMTAgKzE5NSwxMCBAQCBzdHJ1Y3QgZHJiZF9kZXZpY2Vfd29yayB7XFxuIFxcbiAjaW5jbHVkZSBcXFwiZHJiZF9pbnRlcnZhbC5oXFxcIlxcbiBcXG4tZXh0ZXJuIGludCBkcmJkX3dhaXRfbWlzYyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7XFxuK2V4dGVybiBzdHJ1Y3QgbXV0ZXggcmVzb3VyY2VzX211dGV4O1xcbiBcXG4tZXh0ZXJuIHZvaWQgbG9ja19hbGxfcmVzb3VyY2VzKHZvaWQpO1xcbi1leHRlcm4gdm9pZCB1bmxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKTtcXG4rdm9pZCBsb2NrX2FsbF9yZXNvdXJjZXModm9pZCkgX19hY3F1aXJlcyhcXHUwMDI2cmVzb3VyY2VzX211dGV4KTtcXG4rdm9pZCB1bmxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKSBfX3JlbGVhc2VzKFxcdTAwMjZyZXNvdXJjZXNfbXV0ZXgpO1xcbiBcXG4gc3RydWN0IGRyYmRfcmVxdWVzdCB7XFxuIFxcdHN0cnVjdCBkcmJkX3dvcmsgdztcXG5AQCAtNTU5LDcgKzU1OSw3IEBAIHN0cnVjdCBmaWZvX2J1ZmZlciB7XFxuIFxcdGludCB0b3RhbDsgLyogc3VtIG9mIGFsbCB2YWx1ZXMgKi9cXG4gXFx0aW50IHZhbHVlc1tdIF9fY291bnRlZF9ieShzaXplKTtcXG4gfTtcXG4tZXh0ZXJuIHN0cnVjdCBmaWZvX2J1ZmZlciAqZmlmb19hbGxvYyh1bnNpZ25lZCBpbnQgZmlmb19zaXplKTtcXG4rc3RydWN0IGZpZm9fYnVmZmVyICpmaWZvX2FsbG9jKHVuc2lnbmVkIGludCBmaWZvX3NpemUpO1xcbiBcXG4gLyogZmxhZyBiaXRzIHBlciBjb25uZWN0aW9uICovXFxuIGVudW0ge1xcbkBAIC05OTgsOTMgKzk5OCwxMDQgQEAgZW51bSBkZHNfZmxhZ3Mge1xcbiBcXHRERFNGX05PX1JFU1lOQyA9IDIsIC8qIERvIG5vdCBydW4gYSByZXN5bmMgZm9yIHRoZSBuZXcgc3BhY2UgKi9cXG4gfTtcXG4gXFxuLWV4dGVybiB2b2lkIGRyYmRfaW5pdF9zZXRfZGVmYXVsdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbi1leHRlcm4gaW50ICBkcmJkX3RocmVhZF9zdGFydChzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7XFxuLWV4dGVybiB2b2lkIF9kcmJkX3RocmVhZF9zdG9wKHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpLCBpbnQgcmVzdGFydCwgaW50IHdhaXQpO1xcbit2b2lkIGRyYmRfaW5pdF9zZXRfZGVmYXVsdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbitpbnQgZHJiZF90aHJlYWRfc3RhcnQoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xcbit2b2lkIF9kcmJkX3RocmVhZF9zdG9wKHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpLCBpbnQgcmVzdGFydCwgaW50IHdhaXQpO1xcbiAjaWZkZWYgQ09ORklHX1NNUFxcbi1leHRlcm4gdm9pZCBkcmJkX3RocmVhZF9jdXJyZW50X3NldF9jcHUoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xcbit2b2lkIGRyYmRfdGhyZWFkX2N1cnJlbnRfc2V0X2NwdShzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7XFxuICNlbHNlXFxuICNkZWZpbmUgZHJiZF90aHJlYWRfY3VycmVudF9zZXRfY3B1KEEpICh7fSlcXG4gI2VuZGlmXFxuLWV4dGVybiB2b2lkIHRsX3JlbGVhc2Uoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCB1bnNpZ25lZCBpbnQgYmFycmllcl9ucixcXG4tXFx0XFx0ICAgICAgIHVuc2lnbmVkIGludCBzZXRfc2l6ZSk7XFxuLWV4dGVybiB2b2lkIHRsX2NsZWFyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKik7XFxuLWV4dGVybiB2b2lkIGRyYmRfZnJlZV9zb2NrKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xcbi1leHRlcm4gaW50IGRyYmRfc2VuZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxcbi1cXHRcXHQgICAgIHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUsIHVuc2lnbmVkIG1zZ19mbGFncyk7XFxuLWV4dGVybiBpbnQgZHJiZF9zZW5kX2FsbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHN0cnVjdCBzb2NrZXQgKiwgdm9pZCAqLCBzaXplX3QsXFxuLVxcdFxcdFxcdCB1bnNpZ25lZCk7XFxuLVxcbi1leHRlcm4gaW50IF9fZHJiZF9zZW5kX3Byb3RvY29sKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGVudW0gZHJiZF9wYWNrZXQgY21kKTtcXG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfcHJvdG9jb2woc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XFxuLWV4dGVybiBpbnQgZHJiZF9zZW5kX3V1aWRzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xcbi1leHRlcm4gaW50IGRyYmRfc2VuZF91dWlkc19za2lwX2luaXRpYWxfc3luYyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9nZW5fYW5kX3NlbmRfc3luY191dWlkKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9zaXplcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBpbnQgdHJpZ2dlcl9yZXBseSwgZW51bSBkZHNfZmxhZ3MgZmxhZ3MpO1xcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9zdGF0ZShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlIHMpO1xcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9jdXJyZW50X3N0YXRlKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9zeW5jX3BhcmFtKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xcbi1leHRlcm4gdm9pZCBkcmJkX3NlbmRfYl9hY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdTMyIGJhcnJpZXJfbnIsXFxuLVxcdFxcdFxcdCAgICB1MzIgc2V0X3NpemUpO1xcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9hY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCxcXG4tXFx0XFx0XFx0IHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9zZW5kX2Fja19ycChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxcbi1cXHRcXHRcXHQgICAgIHN0cnVjdCBwX2Jsb2NrX3JlcSAqcnApO1xcbi1leHRlcm4gdm9pZCBkcmJkX3NlbmRfYWNrX2RwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsXFxuLVxcdFxcdFxcdCAgICAgc3RydWN0IHBfZGF0YSAqZHAsIGludCBkYXRhX3NpemUpO1xcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9hY2tfZXgoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCxcXG4tXFx0XFx0XFx0ICAgIHNlY3Rvcl90IHNlY3RvciwgaW50IGJsa3NpemUsIHU2NCBibG9ja19pZCk7XFxuLWV4dGVybiBpbnQgZHJiZF9zZW5kX291dF9vZl9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3JlcXVlc3QgKik7XFxuLWV4dGVybiBpbnQgZHJiZF9zZW5kX2Jsb2NrKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsXFxuLVxcdFxcdFxcdCAgIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqKTtcXG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfZGJsb2NrKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSk7XFxuLWV4dGVybiBpbnQgZHJiZF9zZW5kX2RyZXF1ZXN0KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGludCBjbWQsXFxuLVxcdFxcdFxcdCAgICAgIHNlY3Rvcl90IHNlY3RvciwgaW50IHNpemUsIHU2NCBibG9ja19pZCk7XFxuLWV4dGVybiBpbnQgZHJiZF9zZW5kX2RyZXF1ZXN0X2NzdW0oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc2VjdG9yX3Qgc2VjdG9yLFxcbi1cXHRcXHRcXHRcXHQgICBpbnQgc2l6ZSwgdm9pZCAqZGlnZXN0LCBpbnQgZGlnZXN0X3NpemUsXFxuLVxcdFxcdFxcdFxcdCAgIGVudW0gZHJiZF9wYWNrZXQgY21kKTtcXG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfb3ZfcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplKTtcXG4tXFxuLWV4dGVybiBpbnQgZHJiZF9zZW5kX2JpdG1hcChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9zZW5kX3NyX3JlcGx5KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9zdGF0ZV9ydiByZXRjb2RlKTtcXG4tZXh0ZXJuIHZvaWQgY29ubl9zZW5kX3NyX3JlcGx5KHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGVudW0gZHJiZF9zdGF0ZV9ydiByZXRjb2RlKTtcXG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfcnNfZGVhbGxvY2F0ZWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICopO1xcbi1leHRlcm4gdm9pZCBkcmJkX2JhY2tpbmdfZGV2X2ZyZWUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpsZGV2KTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9kZXZpY2VfY2xlYW51cChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLWV4dGVybiB2b2lkIGRyYmRfcHJpbnRfdXVpZHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKnRleHQpO1xcbi1leHRlcm4gdm9pZCBkcmJkX3F1ZXVlX3VucGx1ZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLVxcbi1leHRlcm4gdm9pZCBjb25uX21kX3N5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XFxuLWV4dGVybiB2b2lkIGRyYmRfbWRfd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHZvaWQgKmJ1ZmZlcik7XFxuLWV4dGVybiB2b2lkIGRyYmRfbWRfc3luYyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLWV4dGVybiBpbnQgIGRyYmRfbWRfcmVhZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKmJkZXYpO1xcbi1leHRlcm4gdm9pZCBkcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCk7XFxuLWV4dGVybiB2b2lkIF9kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCk7XFxuLWV4dGVybiB2b2lkIGRyYmRfdXVpZF9uZXdfY3VycmVudChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpO1xcbi1leHRlcm4gdm9pZCBkcmJkX3V1aWRfc2V0X2JtKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCk7XFxuLWV4dGVybiB2b2lkIGRyYmRfdXVpZF9tb3ZlX2hpc3Rvcnkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcXG4tZXh0ZXJuIHZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCk7XFxuLWV4dGVybiB2b2lkIGRyYmRfbWRfc2V0X2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFncykgX19tdXN0X2hvbGQobG9jYWwpO1xcbi1leHRlcm4gdm9pZCBkcmJkX21kX2NsZWFyX2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFncylfX211c3RfaG9sZChsb2NhbCk7XFxuLWV4dGVybiBpbnQgZHJiZF9tZF90ZXN0X2ZsYWcoc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKiwgaW50KTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9tZF9tYXJrX2RpcnR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9xdWV1ZV9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuLVxcdFxcdFxcdFxcdCBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopLFxcbi1cXHRcXHRcXHRcXHQgdm9pZCAoKmRvbmUpKHN0cnVjdCBkcmJkX2RldmljZSAqLCBpbnQpLFxcbi1cXHRcXHRcXHRcXHQgY2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MsXFxuLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xcbi1leHRlcm4gaW50IGRyYmRfYml0bWFwX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbi1cXHRcXHRpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopLFxcbi1cXHRcXHRjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncyxcXG4tXFx0XFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcXG4tZXh0ZXJuIGludCBkcmJkX2JpdG1hcF9pb19mcm9tX3dvcmtlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4tXFx0XFx0aW50ICgqaW9fZm4pKHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKSxcXG4tXFx0XFx0Y2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MsXFxuLVxcdFxcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XFxuLWV4dGVybiBpbnQgZHJiZF9ibWlvX3NldF9uX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbi1cXHRcXHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcXG4tZXh0ZXJuIGludCBkcmJkX2JtaW9fY2xlYXJfbl93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4tXFx0XFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7XFxuK3ZvaWQgdGxfcmVsZWFzZShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHVuc2lnbmVkIGludCBiYXJyaWVyX25yLFxcbitcXHRcXHR1bnNpZ25lZCBpbnQgc2V0X3NpemUpO1xcbit2b2lkIHRsX2NsZWFyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKik7XFxuK3ZvaWQgZHJiZF9mcmVlX3NvY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XFxuK2ludCBkcmJkX3NlbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgc3RydWN0IHNvY2tldCAqc29jayxcXG4rXFx0ICAgICAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSwgdW5zaWduZWQgbXNnX2ZsYWdzKTtcXG4raW50IGRyYmRfc2VuZF9hbGwoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBzdHJ1Y3Qgc29ja2V0ICosIHZvaWQgKiwgc2l6ZV90LFxcbitcXHRcXHQgIHVuc2lnbmVkKTtcXG4rXFxuK2ludCBfX2RyYmRfc2VuZF9wcm90b2NvbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLFxcbitcXHRcXHRcXHQgZW51bSBkcmJkX3BhY2tldCBjbWQpO1xcbitpbnQgZHJiZF9zZW5kX3Byb3RvY29sKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xcbitpbnQgZHJiZF9zZW5kX3V1aWRzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xcbitpbnQgZHJiZF9zZW5kX3V1aWRzX3NraXBfaW5pdGlhbF9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xcbit2b2lkIGRyYmRfZ2VuX2FuZF9zZW5kX3N5bmNfdXVpZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcXG4raW50IGRyYmRfc2VuZF9zaXplcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBpbnQgdHJpZ2dlcl9yZXBseSxcXG4rXFx0XFx0ICAgIGVudW0gZGRzX2ZsYWdzIGZsYWdzKTtcXG4raW50IGRyYmRfc2VuZF9zdGF0ZShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlIHMpO1xcbitpbnQgZHJiZF9zZW5kX2N1cnJlbnRfc3RhdGUoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7XFxuK2ludCBkcmJkX3NlbmRfc3luY19wYXJhbShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcXG4rdm9pZCBkcmJkX3NlbmRfYl9hY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdTMyIGJhcnJpZXJfbnIsXFxuK1xcdFxcdCAgICAgdTMyIHNldF9zaXplKTtcXG4raW50IGRyYmRfc2VuZF9hY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCxcXG4rXFx0XFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKik7XFxuK3ZvaWQgZHJiZF9zZW5kX2Fja19ycChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxcbitcXHRcXHQgICAgICBzdHJ1Y3QgcF9ibG9ja19yZXEgKnJwKTtcXG4rdm9pZCBkcmJkX3NlbmRfYWNrX2RwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsXFxuK1xcdFxcdCAgICAgIHN0cnVjdCBwX2RhdGEgKmRwLCBpbnQgZGF0YV9zaXplKTtcXG4raW50IGRyYmRfc2VuZF9hY2tfZXgoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCxcXG4rXFx0XFx0ICAgICBzZWN0b3JfdCBzZWN0b3IsIGludCBibGtzaXplLCB1NjQgYmxvY2tfaWQpO1xcbitpbnQgZHJiZF9zZW5kX291dF9vZl9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3JlcXVlc3QgKik7XFxuK2ludCBkcmJkX3NlbmRfYmxvY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCxcXG4rXFx0XFx0ICAgIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqKTtcXG4raW50IGRyYmRfc2VuZF9kYmxvY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKTtcXG4raW50IGRyYmRfc2VuZF9kcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBpbnQgY21kLCBzZWN0b3JfdCBzZWN0b3IsXFxuK1xcdFxcdCAgICAgICBpbnQgc2l6ZSwgdTY0IGJsb2NrX2lkKTtcXG4raW50IGRyYmRfc2VuZF9kcmVxdWVzdF9jc3VtKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHNlY3Rvcl90IHNlY3RvcixcXG4rXFx0XFx0XFx0ICAgIGludCBzaXplLCB2b2lkICpkaWdlc3QsIGludCBkaWdlc3Rfc2l6ZSxcXG4rXFx0XFx0XFx0ICAgIGVudW0gZHJiZF9wYWNrZXQgY21kKTtcXG4raW50IGRyYmRfc2VuZF9vdl9yZXF1ZXN0KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHNlY3Rvcl90IHNlY3RvciwgaW50IHNpemUpO1xcbitcXG4raW50IGRyYmRfc2VuZF9iaXRtYXAoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuK1xcdFxcdCAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcXG4rdm9pZCBkcmJkX3NlbmRfc3JfcmVwbHkoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3N0YXRlX3J2IHJldGNvZGUpO1xcbit2b2lkIGNvbm5fc2VuZF9zcl9yZXBseShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLFxcbitcXHRcXHRcXHRlbnVtIGRyYmRfc3RhdGVfcnYgcmV0Y29kZSk7XFxuK2ludCBkcmJkX3NlbmRfcnNfZGVhbGxvY2F0ZWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKixcXG4rXFx0XFx0XFx0ICAgICBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKik7XFxuK3ZvaWQgZHJiZF9iYWNraW5nX2Rldl9mcmVlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHQgICBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqbGRldik7XFxuK3ZvaWQgZHJiZF9kZXZpY2VfY2xlYW51cChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuK3ZvaWQgZHJiZF9wcmludF91dWlkcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqdGV4dCk7XFxuK3ZvaWQgZHJiZF9xdWV1ZV91bnBsdWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbitcXG4rdm9pZCBjb25uX21kX3N5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XFxuK3ZvaWQgZHJiZF9tZF93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdm9pZCAqYnVmZmVyKTtcXG4rdm9pZCBkcmJkX21kX3N5bmMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbitpbnQgZHJiZF9tZF9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldik7XFxuK3ZvaWQgZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCk7XFxuK3ZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpO1xcbit2b2lkIGRyYmRfdXVpZF9uZXdfY3VycmVudChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuK3ZvaWQgZHJiZF91dWlkX3NldF9ibShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdTY0IHZhbCk7XFxuK3ZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuK3ZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKTtcXG4rdm9pZCBkcmJkX21kX3NldF9mbGFnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgZmxhZ3MpO1xcbit2b2lkIGRyYmRfbWRfY2xlYXJfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWdzKTtcXG4raW50IGRyYmRfbWRfdGVzdF9mbGFnKHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICosIGludCk7XFxuK3ZvaWQgZHJiZF9tZF9tYXJrX2RpcnR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4rdm9pZCBkcmJkX3F1ZXVlX2JpdG1hcF9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4rXFx0XFx0XFx0ICBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosXFxuK1xcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKSxcXG4rXFx0XFx0XFx0ICB2b2lkICgqZG9uZSkoc3RydWN0IGRyYmRfZGV2aWNlICosIGludCksIGNoYXIgKndoeSxcXG4rXFx0XFx0XFx0ICBlbnVtIGJtX2ZsYWcgZmxhZ3MsXFxuK1xcdFxcdFxcdCAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcXG4raW50IGRyYmRfYml0bWFwX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHQgICBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosXFxuK1xcdFxcdFxcdFxcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopLFxcbitcXHRcXHQgICBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncyxcXG4rXFx0XFx0ICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcXG4raW50IGRyYmRfYml0bWFwX2lvX2Zyb21fd29ya2VyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHQgICAgICAgaW50ICgqaW9fZm4pKHN0cnVjdCBkcmJkX2RldmljZSAqLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiksXFxuK1xcdFxcdFxcdCAgICAgICBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncyxcXG4rXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XFxuK2ludCBkcmJkX2JtaW9fc2V0X25fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuK1xcdFxcdFxcdCAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcXG4raW50IGRyYmRfYm1pb19jbGVhcl9uX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHQgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcXG4raW50IGRyYmRfd2FpdF9taXNjKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSlcXG4rXFx0X19tdXN0X2hvbGQoXFx1MDAyNmRldmljZS1cXHUwMDNlcmVzb3VyY2UtXFx1MDAzZXJlcV9sb2NrKTtcXG4gXFxuIC8qIE1ldGEgZGF0YSBsYXlvdXRcXG4gICpcXG5AQCAtMTI3NSw1NiArMTI4Niw2NCBAQCBzdHJ1Y3QgYm1fZXh0ZW50IHtcXG4gI2RlZmluZSBEUkJEX01BWF9CQVRDSF9CSU9fU0laRVxcdCAoQUxfVVBEQVRFU19QRVJfVFJBTlNBQ1RJT04vMipBTF9FWFRFTlRfU0laRSlcXG4gI2RlZmluZSBEUkJEX01BWF9CQklPX1NFQ1RPUlMgICAgKERSQkRfTUFYX0JBVENIX0JJT19TSVpFIFxcdTAwM2VcXHUwMDNlIDkpXFxuIFxcbi1leHRlcm4gaW50ICBkcmJkX2JtX2luaXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbi1leHRlcm4gaW50ICBkcmJkX2JtX3Jlc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9ycywgaW50IHNldF9uZXdfYml0cyk7XFxuLWV4dGVybiB2b2lkIGRyYmRfYm1fY2xlYW51cChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLWV4dGVybiB2b2lkIGRyYmRfYm1fc2V0X2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLWV4dGVybiB2b2lkIGRyYmRfYm1fY2xlYXJfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4raW50IGRyYmRfYm1faW5pdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuK2ludCBkcmJkX2JtX3Jlc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9ycyxcXG4rXFx0XFx0ICAgaW50IHNldF9uZXdfYml0cyk7XFxuK3ZvaWQgZHJiZF9ibV9jbGVhbnVwKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4rdm9pZCBkcmJkX2JtX3NldF9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbit2b2lkIGRyYmRfYm1fY2xlYXJfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4gLyogc2V0L2NsZWFyL3Rlc3Qgb25seSBhIGZldyBiaXRzIGF0IGEgdGltZSAqL1xcbi1leHRlcm4gaW50ICBkcmJkX2JtX3NldF9iaXRzKFxcbi1cXHRcXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBzLCB1bnNpZ25lZCBsb25nIGUpO1xcbi1leHRlcm4gaW50ICBkcmJkX2JtX2NsZWFyX2JpdHMoXFxuLVxcdFxcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIHMsIHVuc2lnbmVkIGxvbmcgZSk7XFxuLWV4dGVybiBpbnQgZHJiZF9ibV9jb3VudF9iaXRzKFxcbi1cXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgdW5zaWduZWQgbG9uZyBzLCBjb25zdCB1bnNpZ25lZCBsb25nIGUpO1xcbitpbnQgZHJiZF9ibV9zZXRfYml0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBzLFxcbitcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgZSk7XFxuK2ludCBkcmJkX2JtX2NsZWFyX2JpdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgcyxcXG4rXFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgZSk7XFxuK2ludCBkcmJkX2JtX2NvdW50X2JpdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IHVuc2lnbmVkIGxvbmcgcyxcXG4rXFx0XFx0ICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgZSk7XFxuIC8qIGJtX3NldF9iaXRzIHZhcmlhbnQgZm9yIHVzZSB3aGlsZSBob2xkaW5nIGRyYmRfYm1fbG9jayxcXG4gICogbWF5IHByb2Nlc3MgdGhlIHdob2xlIGJpdG1hcCBpbiBvbmUgZ28gKi9cXG4tZXh0ZXJuIHZvaWQgX2RyYmRfYm1fc2V0X2JpdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuLVxcdFxcdGNvbnN0IHVuc2lnbmVkIGxvbmcgcywgY29uc3QgdW5zaWduZWQgbG9uZyBlKTtcXG4tZXh0ZXJuIGludCAgZHJiZF9ibV90ZXN0X2JpdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBiaXRucik7XFxuLWV4dGVybiBpbnQgIGRyYmRfYm1fZV93ZWlnaHQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgZW5yKTtcXG4tZXh0ZXJuIGludCAgZHJiZF9ibV9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbi1cXHRcXHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV9tYXJrX2Zvcl93cml0ZW91dChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IHBhZ2VfbnIpO1xcbi1leHRlcm4gaW50ICBkcmJkX2JtX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbi1cXHRcXHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV9yZXNldF9hbF9oaW50cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpO1xcbi1leHRlcm4gaW50ICBkcmJkX2JtX3dyaXRlX2hpbnRlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpO1xcbi1leHRlcm4gaW50ICBkcmJkX2JtX3dyaXRlX2xhenkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIHVwcGVyX2lkeCkgX19tdXN0X2hvbGQobG9jYWwpO1xcbi1leHRlcm4gaW50IGRyYmRfYm1fd3JpdGVfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbi1cXHRcXHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcXG4tZXh0ZXJuIGludCAgZHJiZF9ibV93cml0ZV9jb3B5X3BhZ2VzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbi1cXHRcXHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcXG4tZXh0ZXJuIHNpemVfdFxcdCAgICAgZHJiZF9ibV93b3JkcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLWV4dGVybiB1bnNpZ25lZCBsb25nIGRyYmRfYm1fYml0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLWV4dGVybiBzZWN0b3JfdCAgICAgIGRyYmRfYm1fY2FwYWNpdHkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbit2b2lkIF9kcmJkX2JtX3NldF9iaXRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCB1bnNpZ25lZCBsb25nIHMsXFxuK1xcdFxcdCAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGUpO1xcbitpbnQgZHJiZF9ibV90ZXN0X2JpdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBiaXRucik7XFxuK2ludCBkcmJkX2JtX2Vfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGVucik7XFxuK2ludCBkcmJkX2JtX3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuK1xcdFxcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xcbit2b2lkIGRyYmRfYm1fbWFya19mb3Jfd3JpdGVvdXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBwYWdlX25yKTtcXG4raW50IGRyYmRfYm1fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuK1xcdFxcdCAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcXG4rdm9pZCBkcmJkX2JtX3Jlc2V0X2FsX2hpbnRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4raW50IGRyYmRfYm1fd3JpdGVfaGludGVkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4raW50IGRyYmRfYm1fd3JpdGVfbGF6eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgdXBwZXJfaWR4KTtcXG4raW50IGRyYmRfYm1fd3JpdGVfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHQgICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xcbitpbnQgZHJiZF9ibV93cml0ZV9jb3B5X3BhZ2VzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHQgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XFxuK3NpemVfdCBkcmJkX2JtX3dvcmRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4rdW5zaWduZWQgbG9uZyBkcmJkX2JtX2JpdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbitzZWN0b3JfdCBkcmJkX2JtX2NhcGFjaXR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4gXFxuICNkZWZpbmUgRFJCRF9FTkRfT0ZfQklUTUFQXFx0KH4odW5zaWduZWQgbG9uZykwKVxcbi1leHRlcm4gdW5zaWduZWQgbG9uZyBkcmJkX2JtX2ZpbmRfbmV4dChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBibV9mbyk7XFxuK3Vuc2lnbmVkIGxvbmcgZHJiZF9ibV9maW5kX25leHQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuK1xcdFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgYm1fZm8pO1xcbiAvKiBibV9maW5kX25leHQgdmFyaWFudHMgZm9yIHVzZSB3aGlsZSB5b3UgaG9sZCBkcmJkX2JtX2xvY2soKSAqL1xcbi1leHRlcm4gdW5zaWduZWQgbG9uZyBfZHJiZF9ibV9maW5kX25leHQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgYm1fZm8pO1xcbi1leHRlcm4gdW5zaWduZWQgbG9uZyBfZHJiZF9ibV9maW5kX25leHRfemVybyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBibV9mbyk7XFxuLWV4dGVybiB1bnNpZ25lZCBsb25nIF9kcmJkX2JtX3RvdGFsX3dlaWdodChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLWV4dGVybiB1bnNpZ25lZCBsb25nIGRyYmRfYm1fdG90YWxfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4rdW5zaWduZWQgbG9uZyBfZHJiZF9ibV9maW5kX25leHQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuK1xcdFxcdFxcdFxcdCB1bnNpZ25lZCBsb25nIGJtX2ZvKTtcXG4rdW5zaWduZWQgbG9uZyBfZHJiZF9ibV9maW5kX25leHRfemVybyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgdW5zaWduZWQgbG9uZyBibV9mbyk7XFxuK3Vuc2lnbmVkIGxvbmcgX2RyYmRfYm1fdG90YWxfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4rdW5zaWduZWQgbG9uZyBkcmJkX2JtX3RvdGFsX3dlaWdodChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuIC8qIGZvciByZWNlaXZlX2JpdG1hcCAqL1xcbi1leHRlcm4gdm9pZCBkcmJkX2JtX21lcmdlX2xlbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2l6ZV90IG9mZnNldCxcXG4tXFx0XFx0c2l6ZV90IG51bWJlciwgdW5zaWduZWQgbG9uZyAqYnVmZmVyKTtcXG4rdm9pZCBkcmJkX2JtX21lcmdlX2xlbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IG51bWJlcixcXG4rXFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgKmJ1ZmZlcik7XFxuIC8qIGZvciBfZHJiZF9zZW5kX2JpdG1hcCAqL1xcbi1leHRlcm4gdm9pZCBkcmJkX2JtX2dldF9sZWwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNpemVfdCBvZmZzZXQsXFxuLVxcdFxcdHNpemVfdCBudW1iZXIsIHVuc2lnbmVkIGxvbmcgKmJ1ZmZlcik7XFxuK3ZvaWQgZHJiZF9ibV9nZXRfbGVsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbnVtYmVyLFxcbitcXHRcXHQgICAgIHVuc2lnbmVkIGxvbmcgKmJ1ZmZlcik7XFxuK1xcbit0b2tlbl9jb250ZXh0X2xvY2soZHJiZF9kZXZfYm1fbG9jayk7XFxuIFxcbi1leHRlcm4gdm9pZCBkcmJkX2JtX2xvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNoYXIgKndoeSwgZW51bSBibV9mbGFnIGZsYWdzKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV91bmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbit2b2lkIGRyYmRfYm1fbG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MpXFxuK1xcdF9fYWNxdWlyZXMoZHJiZF9kZXZfYm1fbG9jayk7XFxuK3ZvaWQgZHJiZF9ibV91bmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXFxuK1xcdF9fcmVsZWFzZXMoZHJiZF9kZXZfYm1fbG9jayk7XFxuIC8qIGRyYmRfbWFpbi5jICovXFxuIFxcbiBleHRlcm4gc3RydWN0IGttZW1fY2FjaGUgKmRyYmRfcmVxdWVzdF9jYWNoZTtcXG5AQCAtMTM1MCwzNyArMTM2OSwzOSBAQCBleHRlcm4gc3RydWN0IGJpb19zZXQgZHJiZF9tZF9pb19iaW9fc2V0O1xcbiAvKiBBbmQgYSBiaW9fc2V0IGZvciBjbG9uaW5nICovXFxuIGV4dGVybiBzdHJ1Y3QgYmlvX3NldCBkcmJkX2lvX2Jpb19zZXQ7XFxuIFxcbi1leHRlcm4gc3RydWN0IG11dGV4IHJlc291cmNlc19tdXRleDtcXG4tXFxuLWV4dGVybiBlbnVtIGRyYmRfcmV0X2NvZGUgZHJiZF9jcmVhdGVfZGV2aWNlKHN0cnVjdCBkcmJkX2NvbmZpZ19jb250ZXh0ICphZG1fY3R4LCB1bnNpZ25lZCBpbnQgbWlub3IpO1xcbi1leHRlcm4gdm9pZCBkcmJkX2Rlc3Ryb3lfZGV2aWNlKHN0cnVjdCBrcmVmICprcmVmKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9kZWxldGVfZGV2aWNlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4tXFxuLWV4dGVybiBzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqZHJiZF9jcmVhdGVfcmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSk7XFxuLWV4dGVybiB2b2lkIGRyYmRfZnJlZV9yZXNvdXJjZShzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UpO1xcbi1cXG4tZXh0ZXJuIGludCBzZXRfcmVzb3VyY2Vfb3B0aW9ucyhzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UsIHN0cnVjdCByZXNfb3B0cyAqcmVzX29wdHMpO1xcbi1leHRlcm4gc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubl9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHJlc19vcHRzICpyZXNfb3B0cyk7XFxuLWV4dGVybiB2b2lkIGRyYmRfZGVzdHJveV9jb25uZWN0aW9uKHN0cnVjdCBrcmVmICprcmVmKTtcXG4tZXh0ZXJuIHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5fZ2V0X2J5X2FkZHJzKHZvaWQgKm15X2FkZHIsIGludCBteV9hZGRyX2xlbixcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIHZvaWQgKnBlZXJfYWRkciwgaW50IHBlZXJfYWRkcl9sZW4pO1xcbi1leHRlcm4gc3RydWN0IGRyYmRfcmVzb3VyY2UgKmRyYmRfZmluZF9yZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9kZXN0cm95X3Jlc291cmNlKHN0cnVjdCBrcmVmICprcmVmKTtcXG4tZXh0ZXJuIHZvaWQgY29ubl9mcmVlX2NyeXB0byhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcXG4rZW51bSBkcmJkX3JldF9jb2RlIGRyYmRfY3JlYXRlX2RldmljZShzdHJ1Y3QgZHJiZF9jb25maWdfY29udGV4dCAqYWRtX2N0eCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgdW5zaWduZWQgaW50IG1pbm9yKTtcXG4rdm9pZCBkcmJkX2Rlc3Ryb3lfZGV2aWNlKHN0cnVjdCBrcmVmICprcmVmKTtcXG4rdm9pZCBkcmJkX2RlbGV0ZV9kZXZpY2Uoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbitcXG4rc3RydWN0IGRyYmRfcmVzb3VyY2UgKmRyYmRfY3JlYXRlX3Jlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUpO1xcbit2b2lkIGRyYmRfZnJlZV9yZXNvdXJjZShzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UpO1xcbitcXG4raW50IHNldF9yZXNvdXJjZV9vcHRpb25zKHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSxcXG4rXFx0XFx0XFx0IHN0cnVjdCByZXNfb3B0cyAqcmVzX29wdHMpO1xcbitzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uX2NyZWF0ZShjb25zdCBjaGFyICpuYW1lLFxcbitcXHRcXHRcXHRcXHQgICAgc3RydWN0IHJlc19vcHRzICpyZXNfb3B0cyk7XFxuK3ZvaWQgZHJiZF9kZXN0cm95X2Nvbm5lY3Rpb24oc3RydWN0IGtyZWYgKmtyZWYpO1xcbitzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uX2dldF9ieV9hZGRycyh2b2lkICpteV9hZGRyLCBpbnQgbXlfYWRkcl9sZW4sXFxuK1xcdFxcdFxcdFxcdFxcdCAgdm9pZCAqcGVlcl9hZGRyLCBpbnQgcGVlcl9hZGRyX2xlbik7XFxuK3N0cnVjdCBkcmJkX3Jlc291cmNlICpkcmJkX2ZpbmRfcmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSk7XFxuK3ZvaWQgZHJiZF9kZXN0cm95X3Jlc291cmNlKHN0cnVjdCBrcmVmICprcmVmKTtcXG4rdm9pZCBjb25uX2ZyZWVfY3J5cHRvKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xcbiBcXG4gLyogZHJiZF9yZXEgKi9cXG4tZXh0ZXJuIHZvaWQgZG9fc3VibWl0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd3MpO1xcbi1leHRlcm4gdm9pZCBfX2RyYmRfbWFrZV9yZXF1ZXN0KHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgYmlvICopO1xcbit2b2lkIGRvX3N1Ym1pdChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndzKTtcXG4rdm9pZCBfX2RyYmRfbWFrZV9yZXF1ZXN0KHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgYmlvICopO1xcbiB2b2lkIGRyYmRfc3VibWl0X2JpbyhzdHJ1Y3QgYmlvICpiaW8pO1xcbiBcXG4gLyogZHJiZF9ubC5jICovXFxuIFxcbiBleHRlcm4gc3RydWN0IG11dGV4IG5vdGlmaWNhdGlvbl9tdXRleDtcXG4gXFxuLWV4dGVybiB2b2lkIGRyYmRfc3VzcGVuZF9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLWV4dGVybiB2b2lkIGRyYmRfcmVzdW1lX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4tZXh0ZXJuIGNoYXIgKnBwc2l6ZShjaGFyICpidWYsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKTtcXG4tZXh0ZXJuIHNlY3Rvcl90IGRyYmRfbmV3X2Rldl9zaXplKHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqLCBzZWN0b3JfdCwgaW50KTtcXG4rdm9pZCBkcmJkX3N1c3BlbmRfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbit2b2lkIGRyYmRfcmVzdW1lX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4rY2hhciAqcHBzaXplKGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyBsb25nIHNpemUpO1xcbitzZWN0b3JfdCBkcmJkX25ld19kZXZfc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKixcXG4rXFx0XFx0XFx0ICAgc2VjdG9yX3QsIGludCk7XFxuIGVudW0gZGV0ZXJtaW5lX2Rldl9zaXplIHtcXG4gXFx0RFNfRVJST1JfU0hSSU5LID0gLTMsXFxuIFxcdERTX0VSUk9SX1NQQUNFX01EID0gLTIsXFxuQEAgLTEzOTAsNDEgKzE0MTEsNDUgQEAgZW51bSBkZXRlcm1pbmVfZGV2X3NpemUge1xcbiBcXHREU19HUkVXID0gMixcXG4gXFx0RFNfR1JFV19GUk9NX1pFUk8gPSAzLFxcbiB9O1xcbi1leHRlcm4gZW51bSBkZXRlcm1pbmVfZGV2X3NpemVcXG4tZHJiZF9kZXRlcm1pbmVfZGV2X3NpemUoc3RydWN0IGRyYmRfZGV2aWNlICosIGVudW0gZGRzX2ZsYWdzLCBzdHJ1Y3QgcmVzaXplX3Bhcm1zICopIF9fbXVzdF9ob2xkKGxvY2FsKTtcXG4tZXh0ZXJuIHZvaWQgcmVzeW5jX2FmdGVyX29ubGluZV9ncm93KHN0cnVjdCBkcmJkX2RldmljZSAqKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9yZWNvbnNpZGVyX3F1ZXVlX3BhcmFtZXRlcnMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuLVxcdFxcdFxcdHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LCBzdHJ1Y3Qgb19xbGltICpvKTtcXG4tZXh0ZXJuIGVudW0gZHJiZF9zdGF0ZV9ydiBkcmJkX3NldF9yb2xlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbi1cXHRcXHRcXHRcXHRcXHRlbnVtIGRyYmRfcm9sZSBuZXdfcm9sZSxcXG4tXFx0XFx0XFx0XFx0XFx0aW50IGZvcmNlKTtcXG4tZXh0ZXJuIGJvb2wgY29ubl90cnlfb3V0ZGF0ZV9wZWVyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xcbi1leHRlcm4gdm9pZCBjb25uX3RyeV9vdXRkYXRlX3BlZXJfYXN5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XFxuLWV4dGVybiBlbnVtIGRyYmRfcGVlcl9zdGF0ZSBjb25uX2toZWxwZXIoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgY2hhciAqY21kKTtcXG4tZXh0ZXJuIGludCBkcmJkX2toZWxwZXIoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNoYXIgKmNtZCk7XFxuK2VudW0gZGV0ZXJtaW5lX2Rldl9zaXplIGRyYmRfZGV0ZXJtaW5lX2Rldl9zaXplKHN0cnVjdCBkcmJkX2RldmljZSAqLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRlbnVtIGRkc19mbGFncyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IHJlc2l6ZV9wYXJtcyAqKTtcXG4rdm9pZCByZXN5bmNfYWZ0ZXJfb25saW5lX2dyb3coc3RydWN0IGRyYmRfZGV2aWNlICopO1xcbit2b2lkIGRyYmRfcmVjb25zaWRlcl9xdWV1ZV9wYXJhbWV0ZXJzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldixcXG4rXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG9fcWxpbSAqbyk7XFxuK2VudW0gZHJiZF9zdGF0ZV9ydiBkcmJkX3NldF9yb2xlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHRcXHQgZW51bSBkcmJkX3JvbGUgbmV3X3JvbGUsIGludCBmb3JjZSk7XFxuK2Jvb2wgY29ubl90cnlfb3V0ZGF0ZV9wZWVyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xcbit2b2lkIGNvbm5fdHJ5X291dGRhdGVfcGVlcl9hc3luYyhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcXG4rZW51bSBkcmJkX3BlZXJfc3RhdGUgY29ubl9raGVscGVyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sXFxuK1xcdFxcdFxcdFxcdCAgY2hhciAqY21kKTtcXG4raW50IGRyYmRfa2hlbHBlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY2hhciAqY21kKTtcXG4gXFxuIC8qIGRyYmRfd29ya2VyLmMgKi9cXG4gLyogYmlfZW5kX2lvIGhhbmRsZXJzICovXFxuLWV4dGVybiB2b2lkIGRyYmRfbWRfZW5kaW8oc3RydWN0IGJpbyAqYmlvKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9wZWVyX3JlcXVlc3RfZW5kaW8oc3RydWN0IGJpbyAqYmlvKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9yZXF1ZXN0X2VuZGlvKHN0cnVjdCBiaW8gKmJpbyk7XFxuLWV4dGVybiBpbnQgZHJiZF93b3JrZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xcbit2b2lkIGRyYmRfbWRfZW5kaW8oc3RydWN0IGJpbyAqYmlvKTtcXG4rdm9pZCBkcmJkX3BlZXJfcmVxdWVzdF9lbmRpbyhzdHJ1Y3QgYmlvICpiaW8pO1xcbit2b2lkIGRyYmRfcmVxdWVzdF9lbmRpbyhzdHJ1Y3QgYmlvICpiaW8pO1xcbitpbnQgZHJiZF93b3JrZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xcbiBlbnVtIGRyYmRfcmV0X2NvZGUgZHJiZF9yZXN5bmNfYWZ0ZXJfdmFsaWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBvX21pbm9yKTtcXG4gdm9pZCBkcmJkX3Jlc3luY19hZnRlcl9jaGFuZ2VkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9zdGFydF9yZXN5bmMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGVudW0gZHJiZF9jb25ucyBzaWRlKTtcXG4tZXh0ZXJuIHZvaWQgcmVzdW1lX25leHRfc2coc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbi1leHRlcm4gdm9pZCBzdXNwZW5kX290aGVyX3NnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4tZXh0ZXJuIGludCBkcmJkX3Jlc3luY19maW5pc2hlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xcbit2b2lkIGRyYmRfc3RhcnRfcmVzeW5jKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBlbnVtIGRyYmRfY29ubnMgc2lkZSk7XFxuK3ZvaWQgcmVzdW1lX25leHRfc2coc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbit2b2lkIHN1c3BlbmRfb3RoZXJfc2coc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbitpbnQgZHJiZF9yZXN5bmNfZmluaXNoZWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcXG4gLyogbWF5YmUgcmF0aGVyIGRyYmRfbWFpbi5jID8gKi9cXG4tZXh0ZXJuIHZvaWQgKmRyYmRfbWRfZ2V0X2J1ZmZlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqaW50ZW50KTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9tZF9wdXRfYnVmZmVyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4tZXh0ZXJuIGludCBkcmJkX21kX3N5bmNfcGFnZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4tXFx0XFx0c3RydWN0IGRyYmRfYmFja2luZ19kZXYgKmJkZXYsIHNlY3Rvcl90IHNlY3RvciwgZW51bSByZXFfb3Agb3ApO1xcbi1leHRlcm4gdm9pZCBkcmJkX292X291dF9vZl9zeW5jX2ZvdW5kKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcXG4tXFx0XFx0c2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSk7XFxuLWV4dGVybiB2b2lkIHdhaXRfdW50aWxfZG9uZV9vcl9mb3JjZV9kZXRhY2hlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4tXFx0XFx0c3RydWN0IGRyYmRfYmFja2luZ19kZXYgKmJkZXYsIHVuc2lnbmVkIGludCAqZG9uZSk7XFxuLWV4dGVybiB2b2lkIGRyYmRfcnNfY29udHJvbGxlcl9yZXNldChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xcbit2b2lkICpkcmJkX21kX2dldF9idWZmZXIoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKmludGVudCk7XFxuK3ZvaWQgZHJiZF9tZF9wdXRfYnVmZmVyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4raW50IGRyYmRfbWRfc3luY19wYWdlX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHQgc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKmJkZXYsIHNlY3Rvcl90IHNlY3RvcixcXG4rXFx0XFx0XFx0IGVudW0gcmVxX29wIG9wKTtcXG4rdm9pZCBkcmJkX292X291dF9vZl9zeW5jX2ZvdW5kKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcXG4rXFx0XFx0XFx0ICAgICAgIHNlY3Rvcl90IHNlY3RvciwgaW50IHNpemUpO1xcbit2b2lkIHdhaXRfdW50aWxfZG9uZV9vcl9mb3JjZV9kZXRhY2hlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LFxcbitcXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgaW50ICpkb25lKTtcXG4rdm9pZCBkcmJkX3JzX2NvbnRyb2xsZXJfcmVzZXQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcXG4gXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBvdl9vdXRfb2Zfc3luY19wcmludChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXFxuIHtcXG5AQCAtMTQzOCw0OCArMTQ2Myw0NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgb3Zfb3V0X29mX3N5bmNfcHJpbnQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxcbiBcXHRkZXZpY2UtXFx1MDAzZW92X2xhc3Rfb29zX3NpemUgPSAwO1xcbiB9XFxuIFxcbi1cXG4tZXh0ZXJuIHZvaWQgZHJiZF9jc3VtX2JpbyhzdHJ1Y3QgY3J5cHRvX3NoYXNoICosIHN0cnVjdCBiaW8gKiwgdm9pZCAqKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9jc3VtX2VlKHN0cnVjdCBjcnlwdG9fc2hhc2ggKiwgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICosXFxuLVxcdFxcdFxcdCB2b2lkICopO1xcbit2b2lkIGRyYmRfY3N1bV9iaW8oc3RydWN0IGNyeXB0b19zaGFzaCAqLCBzdHJ1Y3QgYmlvICosIHZvaWQgKik7XFxuK3ZvaWQgZHJiZF9jc3VtX2VlKHN0cnVjdCBjcnlwdG9fc2hhc2ggKiwgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICosIHZvaWQgKik7XFxuIC8qIHdvcmtlciBjYWxsYmFja3MgKi9cXG4tZXh0ZXJuIGludCB3X2VfZW5kX2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcXG4tZXh0ZXJuIGludCB3X2VfZW5kX3JzZGF0YV9yZXEoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xcbi1leHRlcm4gaW50IHdfZV9lbmRfY3N1bV9yc19yZXEoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xcbi1leHRlcm4gaW50IHdfZV9lbmRfb3ZfcmVwbHkoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xcbi1leHRlcm4gaW50IHdfZV9lbmRfb3ZfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcXG4tZXh0ZXJuIGludCB3X292X2ZpbmlzaGVkKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcXG4tZXh0ZXJuIGludCB3X3Jlc3luY190aW1lcihzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XFxuLWV4dGVybiBpbnQgd19zZW5kX3dyaXRlX2hpbnQoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xcbi1leHRlcm4gaW50IHdfc2VuZF9kYmxvY2soc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xcbi1leHRlcm4gaW50IHdfc2VuZF9yZWFkX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XFxuLWV4dGVybiBpbnQgd19yZXN0YXJ0X2Rpc2tfaW8oc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xcbi1leHRlcm4gaW50IHdfc2VuZF9vdXRfb2Zfc3luYyhzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XFxuLVxcbi1leHRlcm4gdm9pZCByZXN5bmNfdGltZXJfZm4oc3RydWN0IHRpbWVyX2xpc3QgKnQpO1xcbi1leHRlcm4gdm9pZCBzdGFydF9yZXN5bmNfdGltZXJfZm4oc3RydWN0IHRpbWVyX2xpc3QgKnQpO1xcbi1cXG4tZXh0ZXJuIHZvaWQgZHJiZF9lbmRpb193cml0ZV9zZWNfZmluYWwoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSk7XFxuK2ludCB3X2VfZW5kX2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcXG4raW50IHdfZV9lbmRfcnNkYXRhX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XFxuK2ludCB3X2VfZW5kX2NzdW1fcnNfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcXG4raW50IHdfZV9lbmRfb3ZfcmVwbHkoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xcbitpbnQgd19lX2VuZF9vdl9yZXEoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xcbitpbnQgd19vdl9maW5pc2hlZChzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XFxuK2ludCB3X3Jlc3luY190aW1lcihzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XFxuK2ludCB3X3NlbmRfd3JpdGVfaGludChzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XFxuK2ludCB3X3NlbmRfZGJsb2NrKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcXG4raW50IHdfc2VuZF9yZWFkX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XFxuK2ludCB3X3Jlc3RhcnRfZGlza19pbyhzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XFxuK2ludCB3X3NlbmRfb3V0X29mX3N5bmMoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xcbitcXG4rdm9pZCByZXN5bmNfdGltZXJfZm4oc3RydWN0IHRpbWVyX2xpc3QgKnQpO1xcbit2b2lkIHN0YXJ0X3Jlc3luY190aW1lcl9mbihzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7XFxuK1xcbit2b2lkIGRyYmRfZW5kaW9fd3JpdGVfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpO1xcbiBcXG4gLyogZHJiZF9yZWNlaXZlci5jICovXFxuLWV4dGVybiBpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbi1cXHRcXHRzZWN0b3JfdCBzdGFydCwgdW5zaWduZWQgaW50IG5yX3NlY3RvcnMsIGludCBmbGFncyk7XFxuLWV4dGVybiBpbnQgZHJiZF9yZWNlaXZlcihzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7XFxuLWV4dGVybiBpbnQgZHJiZF9hY2tfcmVjZWl2ZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xcbi1leHRlcm4gdm9pZCBkcmJkX3NlbmRfYWNrc193ZihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndzKTtcXG4tZXh0ZXJuIGJvb2wgZHJiZF9yc19jX21pbl9yYXRlX3Rocm90dGxlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4tZXh0ZXJuIGJvb2wgZHJiZF9yc19zaG91bGRfc2xvd19kb3duKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc2VjdG9yX3Qgc2VjdG9yLFxcbi1cXHRcXHRib29sIHRocm90dGxlX2lmX2FwcF9pc193YWl0aW5nKTtcXG4tZXh0ZXJuIGludCBkcmJkX3N1Ym1pdF9wZWVyX3JlcXVlc3Qoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSk7XFxuLWV4dGVybiBpbnQgZHJiZF9mcmVlX3BlZXJfcmVxcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgc3RydWN0IGxpc3RfaGVhZCAqKTtcXG4tZXh0ZXJuIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqZHJiZF9hbGxvY19wZWVyX3JlcShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1NjQsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgc2VjdG9yX3QsIHVuc2lnbmVkIGludCxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgZ2ZwX3QpIF9fbXVzdF9ob2xkKGxvY2FsKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9mcmVlX3BlZXJfcmVxKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnJlcSk7XFxuLWV4dGVybiBzdHJ1Y3QgcGFnZSAqZHJiZF9hbGxvY19wYWdlcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bnNpZ25lZCBpbnQsIGJvb2wpO1xcbi1leHRlcm4gdm9pZCBfZHJiZF9jbGVhcl9kb25lX2VlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgbGlzdF9oZWFkICp0b19iZV9mcmVlZCk7XFxuLWV4dGVybiBpbnQgZHJiZF9jb25uZWN0ZWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7XFxuK2ludCBkcmJkX2lzc3VlX2Rpc2NhcmRfb3JfemVyb19vdXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHN0YXJ0LFxcbitcXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgbnJfc2VjdG9ycywgaW50IGZsYWdzKTtcXG4raW50IGRyYmRfcmVjZWl2ZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xcbitpbnQgZHJiZF9hY2tfcmVjZWl2ZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xcbit2b2lkIGRyYmRfc2VuZF9hY2tzX3dmKHN0cnVjdCB3b3JrX3N0cnVjdCAqd3MpO1xcbitib29sIGRyYmRfcnNfY19taW5fcmF0ZV90aHJvdHRsZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuK2Jvb2wgZHJiZF9yc19zaG91bGRfc2xvd19kb3duKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcXG4rXFx0XFx0XFx0ICAgICAgc2VjdG9yX3Qgc2VjdG9yLCBib29sIHRocm90dGxlX2lmX2FwcF9pc193YWl0aW5nKTtcXG4raW50IGRyYmRfc3VibWl0X3BlZXJfcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKTtcXG4raW50IGRyYmRfZnJlZV9wZWVyX3JlcXMoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBsaXN0X2hlYWQgKik7XFxuK3N0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqZHJiZF9hbGxvY19wZWVyX3JlcShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1NjQsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIHNlY3Rvcl90LCB1bnNpZ25lZCBpbnQsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGludCwgZ2ZwX3QpO1xcbit2b2lkIGRyYmRfZnJlZV9wZWVyX3JlcShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4rXFx0XFx0XFx0c3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpyZXEpO1xcbitzdHJ1Y3QgcGFnZSAqZHJiZF9hbGxvY19wYWdlcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bnNpZ25lZCBpbnQsIGJvb2wpO1xcbit2b2lkIF9kcmJkX2NsZWFyX2RvbmVfZWUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuK1xcdFxcdFxcdCBzdHJ1Y3QgbGlzdF9oZWFkICp0b19iZV9mcmVlZCk7XFxuK2ludCBkcmJkX2Nvbm5lY3RlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcXG4gXFxuIC8qIHNldHMgdGhlIG51bWJlciBvZiA1MTIgYnl0ZSBzZWN0b3JzIG9mIG91ciB2aXJ0dWFsIGRldmljZSAqL1xcbiB2b2lkIGRyYmRfc2V0X215X2NhcGFjaXR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzaXplKTtcXG5AQCAtMTQ5MCw3ICsxNTE0LDYgQEAgdm9pZCBkcmJkX3NldF9teV9jYXBhY2l0eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2l6ZSk7XFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmJkX3N1Ym1pdF9iaW9fbm9hY2N0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgIGludCBmYXVsdF90eXBlLCBzdHJ1Y3QgYmlvICpiaW8pXFxuIHtcXG4tXFx0X19yZWxlYXNlKGxvY2FsKTtcXG4gXFx0aWYgKCFiaW8tXFx1MDAzZWJpX2JkZXYpIHtcXG4gXFx0XFx0ZHJiZF9lcnIoZGV2aWNlLCBcXFwiZHJiZF9zdWJtaXRfYmlvX25vYWNjdDogYmlvLVxcdTAwM2ViaV9iZGV2ID09IE5VTExcXFxcblxcXCIpO1xcbiBcXHRcXHRiaW8tXFx1MDAzZWJpX3N0YXR1cyA9IEJMS19TVFNfSU9FUlI7XFxuQEAgLTE1MTIsMzIgKzE1MzUsMzYgQEAgZXh0ZXJuIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqZHJiZF9wcm9jO1xcbiBpbnQgZHJiZF9zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdik7XFxuIFxcbiAvKiBkcmJkX2FjdGxvZy5jICovXFxuLWV4dGVybiBib29sIGRyYmRfYWxfYmVnaW5faW9fcHJlcGFyZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpO1xcbi1leHRlcm4gaW50IGRyYmRfYWxfYmVnaW5faW9fbm9uYmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9hbF9iZWdpbl9pb19jb21taXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbi1leHRlcm4gYm9vbCBkcmJkX2FsX2JlZ2luX2lvX2Zhc3RwYXRoKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSk7XFxuLWV4dGVybiB2b2lkIGRyYmRfYWxfYmVnaW5faW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9hbF9jb21wbGV0ZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpO1xcbi1leHRlcm4gdm9pZCBkcmJkX3JzX2NvbXBsZXRlX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IpO1xcbi1leHRlcm4gaW50IGRyYmRfcnNfYmVnaW5faW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3Rvcik7XFxuLWV4dGVybiBpbnQgZHJiZF90cnlfcnNfYmVnaW5faW8oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IpO1xcbi1leHRlcm4gdm9pZCBkcmJkX3JzX2NhbmNlbF9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbi1leHRlcm4gaW50IGRyYmRfcnNfZGVsX2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLWV4dGVybiB2b2lkIGRyYmRfcnNfZmFpbGVkX2lvKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcXG4tXFx0XFx0c2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSk7XFxuLWV4dGVybiB2b2lkIGRyYmRfYWR2YW5jZV9yc19tYXJrcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHVuc2lnbmVkIGxvbmcgc3RpbGxfdG9fZ28pO1xcbitib29sIGRyYmRfYWxfYmVnaW5faW9fcHJlcGFyZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4rXFx0XFx0XFx0ICAgICAgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpO1xcbitpbnQgZHJiZF9hbF9iZWdpbl9pb19ub25ibG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4rXFx0XFx0XFx0ICAgICAgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpO1xcbit2b2lkIGRyYmRfYWxfYmVnaW5faW9fY29tbWl0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4rYm9vbCBkcmJkX2FsX2JlZ2luX2lvX2Zhc3RwYXRoKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHQgICAgICAgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpO1xcbit2b2lkIGRyYmRfYWxfYmVnaW5faW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcXG4rdm9pZCBkcmJkX2FsX2NvbXBsZXRlX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSk7XFxuK3ZvaWQgZHJiZF9yc19jb21wbGV0ZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9yKTtcXG4raW50IGRyYmRfcnNfYmVnaW5faW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3Rvcik7XFxuK2ludCBkcmJkX3RyeV9yc19iZWdpbl9pbyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHNlY3Rvcl90IHNlY3Rvcik7XFxuK3ZvaWQgZHJiZF9yc19jYW5jZWxfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4raW50IGRyYmRfcnNfZGVsX2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuK3ZvaWQgZHJiZF9yc19mYWlsZWRfaW8oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IsXFxuK1xcdFxcdCAgICAgICBpbnQgc2l6ZSk7XFxuK3ZvaWQgZHJiZF9hZHZhbmNlX3JzX21hcmtzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcXG4rXFx0XFx0XFx0ICAgdW5zaWduZWQgbG9uZyBzdGlsbF90b19nbyk7XFxuIFxcbiBlbnVtIHVwZGF0ZV9zeW5jX2JpdHNfbW9kZSB7IFJFQ09SRF9SU19GQUlMRUQsIFNFVF9PVVRfT0ZfU1lOQywgU0VUX0lOX1NZTkMgfTtcXG4tZXh0ZXJuIGludCBfX2RyYmRfY2hhbmdlX3N5bmMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplLFxcbi1cXHRcXHRlbnVtIHVwZGF0ZV9zeW5jX2JpdHNfbW9kZSBtb2RlKTtcXG4raW50IF9fZHJiZF9jaGFuZ2Vfc3luYyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHNlY3Rvcl90IHNlY3RvcixcXG4rXFx0XFx0ICAgICAgIGludCBzaXplLCBlbnVtIHVwZGF0ZV9zeW5jX2JpdHNfbW9kZSBtb2RlKTtcXG4gI2RlZmluZSBkcmJkX3NldF9pbl9zeW5jKHBlZXJfZGV2aWNlLCBzZWN0b3IsIHNpemUpIFxcXFxcXG4gXFx0X19kcmJkX2NoYW5nZV9zeW5jKHBlZXJfZGV2aWNlLCBzZWN0b3IsIHNpemUsIFNFVF9JTl9TWU5DKVxcbiAjZGVmaW5lIGRyYmRfc2V0X291dF9vZl9zeW5jKHBlZXJfZGV2aWNlLCBzZWN0b3IsIHNpemUpIFxcXFxcXG4gXFx0X19kcmJkX2NoYW5nZV9zeW5jKHBlZXJfZGV2aWNlLCBzZWN0b3IsIHNpemUsIFNFVF9PVVRfT0ZfU1lOQylcXG4gI2RlZmluZSBkcmJkX3JzX2ZhaWxlZF9pbyhwZWVyX2RldmljZSwgc2VjdG9yLCBzaXplKSBcXFxcXFxuIFxcdF9fZHJiZF9jaGFuZ2Vfc3luYyhwZWVyX2RldmljZSwgc2VjdG9yLCBzaXplLCBSRUNPUkRfUlNfRkFJTEVEKVxcbi1leHRlcm4gdm9pZCBkcmJkX2FsX3NocmluayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XFxuLWV4dGVybiBpbnQgZHJiZF9hbF9pbml0aWFsaXplKHN0cnVjdCBkcmJkX2RldmljZSAqLCB2b2lkICopO1xcbit2b2lkIGRyYmRfYWxfc2hyaW5rKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4raW50IGRyYmRfYWxfaW5pdGlhbGl6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdm9pZCAqKTtcXG4gXFxuIC8qIGRyYmRfbmwuYyAqL1xcbiAvKiBzdGF0ZSBpbmZvIGJyb2FkY2FzdCAqL1xcbkBAIC0xNTU2LDI4ICsxNTgzLDIwIEBAIHN0cnVjdCBzaWJfaW5mbyB7XFxuIH07XFxuIHZvaWQgZHJiZF9iY2FzdF9ldmVudChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3Qgc3RydWN0IHNpYl9pbmZvICpzaWIpO1xcbiBcXG4tZXh0ZXJuIGludCBub3RpZnlfcmVzb3VyY2Vfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKixcXG4tXFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQsXFxuLVxcdFxcdFxcdFxcdCAgc3RydWN0IGRyYmRfcmVzb3VyY2UgKixcXG4tXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgcmVzb3VyY2VfaW5mbyAqLFxcbi1cXHRcXHRcXHRcXHQgIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSk7XFxuLWV4dGVybiBpbnQgbm90aWZ5X2RldmljZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLFxcbi1cXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQsXFxuLVxcdFxcdFxcdFxcdHN0cnVjdCBkcmJkX2RldmljZSAqLFxcbi1cXHRcXHRcXHRcXHRzdHJ1Y3QgZGV2aWNlX2luZm8gKixcXG4tXFx0XFx0XFx0XFx0ZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTtcXG4tZXh0ZXJuIGludCBub3RpZnlfY29ubmVjdGlvbl9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLFxcbi1cXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgaW50LFxcbi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLFxcbi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGNvbm5lY3Rpb25faW5mbyAqLFxcbi1cXHRcXHRcXHRcXHQgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTtcXG4tZXh0ZXJuIGludCBub3RpZnlfcGVlcl9kZXZpY2Vfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKixcXG4tXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQsXFxuLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKixcXG4tXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgcGVlcl9kZXZpY2VfaW5mbyAqLFxcbi1cXHRcXHRcXHRcXHQgICAgIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSk7XFxuLWV4dGVybiB2b2lkIG5vdGlmeV9oZWxwZXIoZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlLCBzdHJ1Y3QgZHJiZF9kZXZpY2UgKixcXG4tXFx0XFx0XFx0ICBzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIGNvbnN0IGNoYXIgKiwgaW50KTtcXG4raW50IG5vdGlmeV9yZXNvdXJjZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsXFxuK1xcdFxcdFxcdCAgc3RydWN0IGRyYmRfcmVzb3VyY2UgKiwgc3RydWN0IHJlc291cmNlX2luZm8gKixcXG4rXFx0XFx0XFx0ICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpO1xcbitpbnQgbm90aWZ5X2RldmljZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBkcmJkX2RldmljZSAqLFxcbitcXHRcXHRcXHRzdHJ1Y3QgZGV2aWNlX2luZm8gKiwgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTtcXG4raW50IG5vdGlmeV9jb25uZWN0aW9uX3N0YXRlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCxcXG4rXFx0XFx0XFx0ICAgIHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwgc3RydWN0IGNvbm5lY3Rpb25faW5mbyAqLFxcbitcXHRcXHRcXHQgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTtcXG4raW50IG5vdGlmeV9wZWVyX2RldmljZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsXFxuK1xcdFxcdFxcdCAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKixcXG4rXFx0XFx0XFx0ICAgICBzdHJ1Y3QgcGVlcl9kZXZpY2VfaW5mbyAqLFxcbitcXHRcXHRcXHQgICAgIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSk7XFxuK3ZvaWQgbm90aWZ5X2hlbHBlcihlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUsIHN0cnVjdCBkcmJkX2RldmljZSAqLFxcbitcXHRcXHQgICBzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIGNvbnN0IGNoYXIgKiwgaW50KTtcXG4gXFxuIC8qXFxuICAqIGlubGluZSBoZWxwZXIgZnVuY3Rpb25zXFxuQEAgLTE4MjIsNyArMTg0MSw3IEBAIGRyYmRfZGV2aWNlX3Bvc3Rfd29yayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IHdvcmtfYml0KVxcbiBcXHR9XFxuIH1cXG4gXFxuLWV4dGVybiB2b2lkIGRyYmRfZmx1c2hfd29ya3F1ZXVlKHN0cnVjdCBkcmJkX3dvcmtfcXVldWUgKndvcmtfcXVldWUpO1xcbit2b2lkIGRyYmRfZmx1c2hfd29ya3F1ZXVlKHN0cnVjdCBkcmJkX3dvcmtfcXVldWUgKndvcmtfcXVldWUpO1xcbiBcXG4gLyogVG8gZ2V0IHRoZSBhY2tfcmVjZWl2ZXIgb3V0IG9mIHRoZSBibG9ja2luZyBuZXR3b3JrIHN0YWNrLFxcbiAgKiBzbyBpdCBjYW4gY2hhbmdlIGl0cyBza19yY3Z0aW1lbyBmcm9tIGlkbGUtIHRvIHBpbmctdGltZW91dCxcXG5AQCAtMTg0MSwxOSArMTg2MCwyNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVxdWVzdF9waW5nKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pXFxuIFxcdHdha2VfYWNrX3JlY2VpdmVyKGNvbm5lY3Rpb24pO1xcbiB9XFxuIFxcbi1leHRlcm4gdm9pZCAqY29ubl9wcmVwYXJlX2NvbW1hbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKik7XFxuLWV4dGVybiB2b2lkICpkcmJkX3ByZXBhcmVfY29tbWFuZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKik7XFxuLWV4dGVybiBpbnQgY29ubl9zZW5kX2NvbW1hbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKixcXG4tXFx0XFx0XFx0ICAgICBlbnVtIGRyYmRfcGFja2V0LCB1bnNpZ25lZCBpbnQsIHZvaWQgKixcXG4tXFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQpO1xcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9jb21tYW5kKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3NvY2tldCAqLFxcbi1cXHRcXHRcXHQgICAgIGVudW0gZHJiZF9wYWNrZXQsIHVuc2lnbmVkIGludCwgdm9pZCAqLFxcbi1cXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCk7XFxuLVxcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9waW5nKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9waW5nX2FjayhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcXG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfc3RhdGVfcmVxKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsIHVuaW9uIGRyYmRfc3RhdGUpO1xcbi1leHRlcm4gaW50IGNvbm5fc2VuZF9zdGF0ZV9yZXEoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCB1bmlvbiBkcmJkX3N0YXRlLCB1bmlvbiBkcmJkX3N0YXRlKTtcXG4rdm9pZCAqY29ubl9wcmVwYXJlX2NvbW1hbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbixcXG4rXFx0XFx0XFx0ICAgc3RydWN0IGRyYmRfc29ja2V0ICpzb2NrKVxcbitcXHRfX2NvbmRfYWNxdWlyZXModHJ1ZSwgXFx1MDAyNnNvY2stXFx1MDAzZW11dGV4KTtcXG4rdm9pZCAqZHJiZF9wcmVwYXJlX2NvbW1hbmQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKnNvY2spXFxuK1xcdF9fY29uZF9hY3F1aXJlcyh0cnVlLCBcXHUwMDI2c29jay1cXHUwMDNlbXV0ZXgpO1xcbitpbnQgY29ubl9zZW5kX2NvbW1hbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbixcXG4rXFx0XFx0ICAgICAgc3RydWN0IGRyYmRfc29ja2V0ICpzb2NrLFxcbitcXHRcXHQgICAgICBlbnVtIGRyYmRfcGFja2V0IGNtZCwgdW5zaWduZWQgaW50IGhlYWRlcl9zaXplLFxcbitcXHRcXHQgICAgICB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSlcXG4rXFx0X19yZWxlYXNlcyhcXHUwMDI2c29jay1cXHUwMDNlbXV0ZXgpO1xcbitpbnQgZHJiZF9zZW5kX2NvbW1hbmQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKnNvY2ssXFxuK1xcdFxcdCAgICAgIGVudW0gZHJiZF9wYWNrZXQgY21kLCB1bnNpZ25lZCBpbnQgaGVhZGVyX3NpemUsXFxuK1xcdFxcdCAgICAgIHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBzaXplKVxcbitcXHRfX3JlbGVhc2VzKFxcdTAwMjZzb2NrLVxcdTAwM2VtdXRleCk7XFxuK1xcbitpbnQgZHJiZF9zZW5kX3Bpbmcoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XFxuK2ludCBkcmJkX3NlbmRfcGluZ19hY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XFxuK2ludCBkcmJkX3NlbmRfc3RhdGVfcmVxKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsXFxuK1xcdFxcdFxcdHVuaW9uIGRyYmRfc3RhdGUpO1xcbitpbnQgY29ubl9zZW5kX3N0YXRlX3JlcShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHVuaW9uIGRyYmRfc3RhdGUsXFxuK1xcdFxcdFxcdHVuaW9uIGRyYmRfc3RhdGUpO1xcbiBcXG4gc3RhdGljIGlubGluZSB2b2lkIGRyYmRfdGhyZWFkX3N0b3Aoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpXFxuIHtcXG5AQCAtMTk3Niw5ICsyMDAzLDYgQEAgc3RhdGljIGlubGluZSBib29sIGlzX3N5bmNfc3RhdGUoZW51bSBkcmJkX2Nvbm5zIGNvbm5lY3Rpb25fc3RhdGUpXFxuICAqXFxuICAqIFlvdSBoYXZlIHRvIGNhbGwgcHV0X2xkZXYoKSB3aGVuIGZpbmlzaGVkIHdvcmtpbmcgd2l0aCBkZXZpY2UtXFx1MDAzZWxkZXYuXFxuICAqL1xcbi0jZGVmaW5lIGdldF9sZGV2X2lmX3N0YXRlKF9kZXZpY2UsIF9taW5fc3RhdGUpXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHQoX2dldF9sZGV2X2lmX3N0YXRlKChfZGV2aWNlKSwgKF9taW5fc3RhdGUpKSA/XFx0XFx0XFx0XFxcXFxcbi1cXHQgKHsgX19hY3F1aXJlKHgpOyB0cnVlOyB9KSA6IGZhbHNlKVxcbiAjZGVmaW5lIGdldF9sZGV2KF9kZXZpY2UpIGdldF9sZGV2X2lmX3N0YXRlKF9kZXZpY2UsIERfSU5DT05TSVNURU5UKVxcbiBcXG4gc3RhdGljIGlubGluZSB2b2lkIHB1dF9sZGV2KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxcbkBAIC0xOTkzLDcgKzIwMTcsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHV0X2xkZXYoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXFxuIFxcdC8qIFRoaXMgbWF5IGJlIGNhbGxlZCBmcm9tIHNvbWUgZW5kaW8gaGFuZGxlcixcXG4gXFx0ICogc28gd2UgbXVzdCBub3Qgc2xlZXAgaGVyZS4gKi9cXG4gXFxuLVxcdF9fcmVsZWFzZShsb2NhbCk7XFxuIFxcdERfQVNTRVJUKGRldmljZSwgaSBcXHUwMDNlPSAwKTtcXG4gXFx0aWYgKGkgPT0gMCkge1xcbiBcXHRcXHRpZiAoZGlza19zdGF0ZSA9PSBEX0RJU0tMRVNTKVxcbkBAIC0yMDA3LDggKzIwMzAsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHV0X2xkZXYoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXFxuIFxcdH1cXG4gfVxcbiBcXG4tI2lmbmRlZiBfX0NIRUNLRVJfX1xcbi1zdGF0aWMgaW5saW5lIGludCBfZ2V0X2xkZXZfaWZfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGVudW0gZHJiZF9kaXNrX3N0YXRlIG1pbnMpXFxuK3N0YXRpYyBpbmxpbmUgaW50IGdldF9sZGV2X2lmX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHRcXHQgICAgZW51bSBkcmJkX2Rpc2tfc3RhdGUgbWlucylcXG4ge1xcbiBcXHRpbnQgaW9fYWxsb3dlZDtcXG4gXFxuQEAgLTIwMjIsOSArMjA0NSw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IF9nZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Rpc2tfXFxuIFxcdFxcdHB1dF9sZGV2KGRldmljZSk7XFxuIFxcdHJldHVybiBpb19hbGxvd2VkO1xcbiB9XFxuLSNlbHNlXFxuLWV4dGVybiBpbnQgX2dldF9sZGV2X2lmX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBlbnVtIGRyYmRfZGlza19zdGF0ZSBtaW5zKTtcXG4tI2VuZGlmXFxuIFxcbiAvKiB0aGlzIHRocm90dGxlcyBvbi10aGUtZmx5IGFwcGxpY2F0aW9uIHJlcXVlc3RzXFxuICAqIGFjY29yZGluZyB0byBtYXhfYnVmZmVycyBzZXR0aW5ncztcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50ZXJ2YWwuaCBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludGVydmFsLmhcXG5pbmRleCA1ZDMyMTNiODFlZWRlNy4uMjU1ZTlkMDcxYWUxZDQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50ZXJ2YWwuaFxcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludGVydmFsLmhcXG5AQCAtMjksMTMgKzI5LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBkcmJkX2ludGVydmFsX2VtcHR5KHN0cnVjdCBkcmJkX2ludGVydmFsICppKVxcbiBcXHRyZXR1cm4gUkJfRU1QVFlfTk9ERShcXHUwMDI2aS1cXHUwMDNlcmIpO1xcbiB9XFxuIFxcbi1leHRlcm4gYm9vbCBkcmJkX2luc2VydF9pbnRlcnZhbChzdHJ1Y3QgcmJfcm9vdCAqLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqKTtcXG4tZXh0ZXJuIGJvb2wgZHJiZF9jb250YWluc19pbnRlcnZhbChzdHJ1Y3QgcmJfcm9vdCAqLCBzZWN0b3JfdCxcXG4tXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7XFxuLWV4dGVybiB2b2lkIGRyYmRfcmVtb3ZlX2ludGVydmFsKHN0cnVjdCByYl9yb290ICosIHN0cnVjdCBkcmJkX2ludGVydmFsICopO1xcbi1leHRlcm4gc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmRyYmRfZmluZF9vdmVybGFwKHN0cnVjdCByYl9yb290ICosIHNlY3Rvcl90LFxcbitib29sIGRyYmRfaW5zZXJ0X2ludGVydmFsKHN0cnVjdCByYl9yb290ICosIHN0cnVjdCBkcmJkX2ludGVydmFsICopO1xcbitib29sIGRyYmRfY29udGFpbnNfaW50ZXJ2YWwoc3RydWN0IHJiX3Jvb3QgKiwgc2VjdG9yX3QsIHN0cnVjdCBkcmJkX2ludGVydmFsICopO1xcbit2b2lkIGRyYmRfcmVtb3ZlX2ludGVydmFsKHN0cnVjdCByYl9yb290ICosIHN0cnVjdCBkcmJkX2ludGVydmFsICopO1xcbitzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqZHJiZF9maW5kX292ZXJsYXAoc3RydWN0IHJiX3Jvb3QgKiwgc2VjdG9yX3QsXFxuIFxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCk7XFxuLWV4dGVybiBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqZHJiZF9uZXh0X292ZXJsYXAoc3RydWN0IGRyYmRfaW50ZXJ2YWwgKiwgc2VjdG9yX3QsXFxuK3N0cnVjdCBkcmJkX2ludGVydmFsICpkcmJkX25leHRfb3ZlcmxhcChzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqLCBzZWN0b3JfdCxcXG4gXFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgaW50KTtcXG4gXFxuICNkZWZpbmUgZHJiZF9mb3JfZWFjaF9vdmVybGFwKGksIHJvb3QsIHNlY3Rvciwgc2l6ZSlcXHRcXHRcXFxcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uY1xcbmluZGV4IGEyYTg0MWM4OTIwMTExLi42ZjNjMDQyNTJiNWRlZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmNcXG5AQCAtMTI4LDI1ICsxMjgsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIGRyYmRfb3BzID0ge1xcbiBcXHQucmVsZWFzZVxcdD0gZHJiZF9yZWxlYXNlLFxcbiB9O1xcbiBcXG4tI2lmZGVmIF9fQ0hFQ0tFUl9fXFxuLS8qIFdoZW4gY2hlY2tpbmcgd2l0aCBzcGFyc2UsIGFuZCB0aGlzIGlzIGFuIGlubGluZSBmdW5jdGlvbiwgc3BhcnNlIHdpbGxcXG4tICAgZ2l2ZSB0b25zIG9mIGZhbHNlIHBvc2l0aXZlcy4gV2hlbiB0aGlzIGlzIGEgcmVhbCBmdW5jdGlvbnMgc3BhcnNlIHdvcmtzLlxcbi0gKi9cXG4taW50IF9nZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Rpc2tfc3RhdGUgbWlucylcXG4te1xcbi1cXHRpbnQgaW9fYWxsb3dlZDtcXG4tXFxuLVxcdGF0b21pY19pbmMoXFx1MDAyNmRldmljZS1cXHUwMDNlbG9jYWxfY250KTtcXG4tXFx0aW9fYWxsb3dlZCA9IChkZXZpY2UtXFx1MDAzZXN0YXRlLmRpc2sgXFx1MDAzZT0gbWlucyk7XFxuLVxcdGlmICghaW9fYWxsb3dlZCkge1xcbi1cXHRcXHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcXHUwMDI2ZGV2aWNlLVxcdTAwM2Vsb2NhbF9jbnQpKVxcbi1cXHRcXHRcXHR3YWtlX3VwKFxcdTAwMjZkZXZpY2UtXFx1MDAzZW1pc2Nfd2FpdCk7XFxuLVxcdH1cXG4tXFx0cmV0dXJuIGlvX2FsbG93ZWQ7XFxuLX1cXG4tXFxuLSNlbmRpZlxcbi1cXG4gLyoqXFxuICAqIHRsX3JlbGVhc2UoKSAtIG1hcmsgYXMgQkFSUklFUl9BQ0tFRCBhbGwgcmVxdWVzdHMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgdHJhbnNmZXIgbG9nIGVwb2NoXFxuICAqIEBjb25uZWN0aW9uOlxcdERSQkQgY29ubmVjdGlvbi5cXG5AQCAtMzI4Miw3ICszMjYzLDcgQEAgdm9pZCBkcmJkX21kX21hcmtfZGlydHkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXFxuIFxcdFxcdG1vZF90aW1lcihcXHUwMDI2ZGV2aWNlLVxcdTAwM2VtZF9zeW5jX3RpbWVyLCBqaWZmaWVzICsgNSpIWik7XFxuIH1cXG4gXFxuLXZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXFxuK3ZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcXG4ge1xcbiBcXHRpbnQgaTtcXG4gXFxuQEAgLTMyOTAsNyArMzI3MSw3IEBAIHZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXFxuIFxcdFxcdGRldmljZS1cXHUwMDNlbGRldi1cXHUwMDNlbWQudXVpZFtpKzFdID0gZGV2aWNlLVxcdTAwM2VsZGV2LVxcdTAwM2VtZC51dWlkW2ldO1xcbiB9XFxuIFxcbi12b2lkIF9fZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpXFxuK3ZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKVxcbiB7XFxuIFxcdGlmIChpZHggPT0gVUlfQ1VSUkVOVCkge1xcbiBcXHRcXHRpZiAoZGV2aWNlLVxcdTAwM2VzdGF0ZS5yb2xlID09IFJfUFJJTUFSWSlcXG5AQCAtMzMwNSw3ICszMjg2LDcgQEAgdm9pZCBfX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxcXG4gXFx0ZHJiZF9tZF9tYXJrX2RpcnR5KGRldmljZSk7XFxuIH1cXG4gXFxuLXZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxvY2FsKVxcbit2b2lkIF9kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKVxcbiB7XFxuIFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuIFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkZXZpY2UtXFx1MDAzZWxkZXYtXFx1MDAzZW1kLnV1aWRfbG9jaywgZmxhZ3MpO1xcbkBAIC0zMzEzLDcgKzMyOTQsNyBAQCB2b2lkIF9kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb1xcbiBcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkZXZpY2UtXFx1MDAzZWxkZXYtXFx1MDAzZW1kLnV1aWRfbG9jaywgZmxhZ3MpO1xcbiB9XFxuIFxcbi12b2lkIGRyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxvY2FsKVxcbit2b2lkIGRyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpXFxuIHtcXG4gXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4gXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRldmljZS1cXHUwMDNlbGRldi1cXHUwMDNlbWQudXVpZF9sb2NrLCBmbGFncyk7XFxuQEAgLTMzMzIsNyArMzMxMyw3IEBAIHZvaWQgZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jXFxuICAqIENyZWF0ZXMgYSBuZXcgY3VycmVudCBVVUlELCBhbmQgcm90YXRlcyB0aGUgb2xkIGN1cnJlbnQgVVVJRCBpbnRvXFxuICAqIHRoZSBiaXRtYXAgc2xvdC4gQ2F1c2VzIGFuIGluY3JlbWVudGFsIHJlc3luYyB1cG9uIG5leHQgY29ubmVjdC5cXG4gICovXFxuLXZvaWQgZHJiZF91dWlkX25ld19jdXJyZW50KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcXG4rdm9pZCBkcmJkX3V1aWRfbmV3X2N1cnJlbnQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXFxuIHtcXG4gXFx0dTY0IHZhbDtcXG4gXFx0dW5zaWduZWQgbG9uZyBsb25nIGJtX3V1aWQ7XFxuQEAgLTMzNTQsNyArMzMzNSw3IEBAIHZvaWQgZHJiZF91dWlkX25ld19jdXJyZW50KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcXG4gXFx0ZHJiZF9tZF9zeW5jKGRldmljZSk7XFxuIH1cXG4gXFxuLXZvaWQgZHJiZF91dWlkX3NldF9ibShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpXFxuK3ZvaWQgZHJiZF91dWlkX3NldF9ibShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdTY0IHZhbClcXG4ge1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiBcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGV2aWNlLVxcdTAwM2VsZGV2LVxcdTAwM2VtZC51dWlkX2xvY2ssIGZsYWdzKTtcXG5AQCAtMzM4Nyw3ICszMzY4LDcgQEAgdm9pZCBkcmJkX3V1aWRfc2V0X2JtKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbClcXG4gICogU2V0cyBhbGwgYml0cyBpbiB0aGUgYml0bWFwIGFuZCB3cml0ZXMgdGhlIHdob2xlIGJpdG1hcCB0byBzdGFibGUgc3RvcmFnZS5cXG4gICovXFxuIGludCBkcmJkX2JtaW9fc2V0X25fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuLVxcdFxcdFxcdCAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcXG4rXFx0XFx0XFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXFxuIFxcbiB7XFxuIFxcdGludCBydiA9IC1FSU87XFxuQEAgLTM0MTQsNyArMzM5NSw3IEBAIGludCBkcmJkX2JtaW9fc2V0X25fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuICAqIENsZWFycyBhbGwgYml0cyBpbiB0aGUgYml0bWFwIGFuZCB3cml0ZXMgdGhlIHdob2xlIGJpdG1hcCB0byBzdGFibGUgc3RvcmFnZS5cXG4gICovXFxuIGludCBkcmJkX2JtaW9fY2xlYXJfbl93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4tXFx0XFx0XFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxcbitcXHRcXHRcXHQgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxcbiBcXG4ge1xcbiBcXHRkcmJkX3Jlc3VtZV9hbChkZXZpY2UpO1xcbkBAIC0zNTQxLDcgKzM1MjIsNyBAQCBpbnQgZHJiZF9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuIFxcdHJldHVybiBydjtcXG4gfVxcbiBcXG4tdm9pZCBkcmJkX21kX3NldF9mbGFnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgZmxhZykgX19tdXN0X2hvbGQobG9jYWwpXFxuK3ZvaWQgZHJiZF9tZF9zZXRfZmxhZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGZsYWcpXFxuIHtcXG4gXFx0aWYgKChkZXZpY2UtXFx1MDAzZWxkZXYtXFx1MDAzZW1kLmZsYWdzIFxcdTAwMjYgZmxhZykgIT0gZmxhZykge1xcbiBcXHRcXHRkcmJkX21kX21hcmtfZGlydHkoZGV2aWNlKTtcXG5AQCAtMzU0OSw3ICszNTMwLDcgQEAgdm9pZCBkcmJkX21kX3NldF9mbGFnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgZmxhZykgX19tdXN0X2hvbGQobG9jYWwpXFxuIFxcdH1cXG4gfVxcbiBcXG4tdm9pZCBkcmJkX21kX2NsZWFyX2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFnKSBfX211c3RfaG9sZChsb2NhbClcXG4rdm9pZCBkcmJkX21kX2NsZWFyX2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFnKVxcbiB7XFxuIFxcdGlmICgoZGV2aWNlLVxcdTAwM2VsZGV2LVxcdTAwM2VtZC5mbGFncyBcXHUwMDI2IGZsYWcpICE9IDApIHtcXG4gXFx0XFx0ZHJiZF9tZF9tYXJrX2RpcnR5KGRldmljZSk7XFxuQEAgLTM2NzgsNiArMzY1OSw3IEBAIGludCBkcmJkX3dhaXRfbWlzYyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpXFxuIH1cXG4gXFxuIHZvaWQgbG9ja19hbGxfcmVzb3VyY2VzKHZvaWQpXFxuK1xcdF9fY29udGV4dF91bnNhZmUobG9ja2luZyBsb29wKVxcbiB7XFxuIFxcdHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZTtcXG4gXFx0aW50IF9fbWF5YmVfdW51c2VkIGkgPSAwO1xcbkBAIC0zNjg5LDYgKzM2NzEsNyBAQCB2b2lkIGxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKVxcbiB9XFxuIFxcbiB2b2lkIHVubG9ja19hbGxfcmVzb3VyY2VzKHZvaWQpXFxuK1xcdF9fY29udGV4dF91bnNhZmUobG9ja2luZyBsb29wKVxcbiB7XFxuIFxcdHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jXFxuaW5kZXggZjlmZmNkNjc2MDdiNTUuLjc0OGIxZDA5M2YyZTY3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9ubC5jXFxuQEAgLTk2OCw4ICs5NjgsOSBAQCB2b2lkIGRyYmRfcmVzdW1lX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxcbiAgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgcmV0dXJuIHZhbHVlcyBpbmRpY2F0ZSBlcnJvcnMuXFxuICAqIFlvdSBzaG91bGQgY2FsbCBkcmJkX21kX3N5bmMoKSBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXFxuICAqL1xcbi1lbnVtIGRldGVybWluZV9kZXZfc2l6ZVxcbi1kcmJkX2RldGVybWluZV9kZXZfc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkZHNfZmxhZ3MgZmxhZ3MsIHN0cnVjdCByZXNpemVfcGFybXMgKnJzKSBfX211c3RfaG9sZChsb2NhbClcXG4rZW51bSBkZXRlcm1pbmVfZGV2X3NpemUgZHJiZF9kZXRlcm1pbmVfZGV2X3NpemUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdGVudW0gZGRzX2ZsYWdzIGZsYWdzLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgcmVzaXplX3Bhcm1zICpycylcXG4ge1xcbiBcXHRzdHJ1Y3QgbWRfb2Zmc2V0c19hbmRfc2l6ZXMge1xcbiBcXHRcXHR1NjQgbGFzdF9hZ3JlZWRfc2VjdDtcXG5AQCAtMzA5Nyw3ICszMDk4LDcgQEAgc3RhdGljIGludCBkcmJkX2FkbV9zaW1wbGVfcmVxdWVzdF9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICpcXG4gfVxcbiBcXG4gc3RhdGljIGludCBkcmJkX2JtaW9fc2V0X3N1c3BfYWwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXFxuLVxcdFxcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXFxuK1xcdFxcdFxcdFxcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXFxuIHtcXG4gXFx0aW50IHJ2O1xcbiBcXG5AQCAtMzUyOCwxNSArMzUyOSw1NiBAQCBpbnQgZHJiZF9hZG1fZHVtcF9jb25uZWN0aW9uc19kb25lKHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG4gXFxuIGVudW0geyBTSU5HTEVfUkVTT1VSQ0UsIElURVJBVEVfUkVTT1VSQ0VTIH07XFxuIFxcbitzdGF0aWMgaW50IGRyYmRfbmxfcHV0X2R1bXBfY29ubmVjdGlvbnNfcmVzdWx0KFxcbitcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IsXFxuK1xcdFxcdHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSxcXG4rXFx0XFx0c3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgZW51bSBkcmJkX3JldF9jb2RlIHJldGNvZGUpXFxuK3tcXG4rXFx0c3RydWN0IGRyYmRfZ2VubG1zZ2hkciAqZGg7XFxuK1xcbitcXHRkaCA9IGdlbmxtc2dfcHV0KHNrYiwgTkVUTElOS19DQihjYi1cXHUwMDNlc2tiKS5wb3J0aWQsIGNiLVxcdTAwM2VubGgtXFx1MDAzZW5sbXNnX3NlcSxcXG4rXFx0XFx0XFx0IFxcdTAwMjZkcmJkX25sX2ZhbWlseSwgTkxNX0ZfTVVMVEksXFxuK1xcdFxcdFxcdCBEUkJEX0FETV9HRVRfQ09OTkVDVElPTlMpO1xcbitcXHRpZiAoIWRoKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0ZGgtXFx1MDAzZXJldF9jb2RlID0gcmV0Y29kZTtcXG4rXFx0ZGgtXFx1MDAzZW1pbm9yID0gLTFVO1xcbitcXHRpZiAocmV0Y29kZSA9PSBOT19FUlJPUikge1xcbitcXHRcXHRzdHJ1Y3QgY29ubmVjdGlvbl9zdGF0aXN0aWNzIGNvbm5lY3Rpb25fc3RhdGlzdGljcztcXG4rXFx0XFx0c3RydWN0IGNvbm5lY3Rpb25faW5mbyBjb25uZWN0aW9uX2luZm87XFxuK1xcdFxcdHN0cnVjdCBuZXRfY29uZiAqbmV0X2NvbmY7XFxuK1xcdFxcdGludCBlcnI7XFxuK1xcbitcXHRcXHRlcnIgPSBubGFfcHV0X2RyYmRfY2ZnX2NvbnRleHQoc2tiLCByZXNvdXJjZSwgY29ubmVjdGlvbiwgTlVMTCk7XFxuK1xcdFxcdGlmIChlcnIpXFxuK1xcdFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdG5ldF9jb25mID0gcmN1X2RlcmVmZXJlbmNlKGNvbm5lY3Rpb24tXFx1MDAzZW5ldF9jb25mKTtcXG4rXFx0XFx0aWYgKG5ldF9jb25mKSB7XFxuK1xcdFxcdFxcdGVyciA9IG5ldF9jb25mX3RvX3NrYihza2IsIG5ldF9jb25mKTtcXG4rXFx0XFx0XFx0aWYgKGVycilcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0XFx0fVxcbitcXHRcXHRjb25uZWN0aW9uX3RvX2luZm8oXFx1MDAyNmNvbm5lY3Rpb25faW5mbywgY29ubmVjdGlvbik7XFxuK1xcdFxcdGVyciA9IGNvbm5lY3Rpb25faW5mb190b19za2Ioc2tiLCBcXHUwMDI2Y29ubmVjdGlvbl9pbmZvKTtcXG4rXFx0XFx0aWYgKGVycilcXG4rXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0XFx0Y29ubmVjdGlvbl9zdGF0aXN0aWNzLmNvbm5fY29uZ2VzdGVkID1cXG4rXFx0XFx0XFx0dGVzdF9iaXQoTkVUX0NPTkdFU1RFRCwgXFx1MDAyNmNvbm5lY3Rpb24tXFx1MDAzZWZsYWdzKTtcXG4rXFx0XFx0ZXJyID0gY29ubmVjdGlvbl9zdGF0aXN0aWNzX3RvX3NrYihza2IsIFxcdTAwMjZjb25uZWN0aW9uX3N0YXRpc3RpY3MpO1xcbitcXHRcXHRpZiAoZXJyKVxcbitcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRcXHRjYi1cXHUwMDNlYXJnc1syXSA9IChsb25nKWNvbm5lY3Rpb247XFxuK1xcdH1cXG4rXFx0Z2VubG1zZ19lbmQoc2tiLCBkaCk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBpbnQgZHJiZF9ubF9nZXRfY29ubmVjdGlvbnNfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG4ge1xcbiBcXHRzdHJ1Y3QgbmxhdHRyICpyZXNvdXJjZV9maWx0ZXI7XFxuIFxcdHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSA9IE5VTEwsICpuZXh0X3Jlc291cmNlO1xcbiBcXHRzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uO1xcbi1cXHRpbnQgZXJyID0gMCwgcmV0Y29kZTtcXG4tXFx0c3RydWN0IGRyYmRfZ2VubG1zZ2hkciAqZGg7XFxuLVxcdHN0cnVjdCBjb25uZWN0aW9uX2luZm8gY29ubmVjdGlvbl9pbmZvO1xcbi1cXHRzdHJ1Y3QgY29ubmVjdGlvbl9zdGF0aXN0aWNzIGNvbm5lY3Rpb25fc3RhdGlzdGljcztcXG4rXFx0aW50IGVyciA9IDA7XFxuIFxcbiBcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIFxcdHJlc291cmNlID0gKHN0cnVjdCBkcmJkX3Jlc291cmNlICopY2ItXFx1MDAzZWFyZ3NbMF07XFxuQEAgLTM1NDQsMTcgKzM1ODYsMjMgQEAgaW50IGRyYmRfbmxfZ2V0X2Nvbm5lY3Rpb25zX2R1bXBpdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFja1xcbiBcXHRcXHRyZXNvdXJjZV9maWx0ZXIgPSBmaW5kX2NmZ19jb250ZXh0X2F0dHIoY2ItXFx1MDAzZW5saCxcXG4gXFx0XFx0XFx0XFx0RFJCRF9BX0RSQkRfQ0ZHX0NPTlRFWFRfQ1RYX1JFU09VUkNFX05BTUUpO1xcbiBcXHRcXHRpZiAocmVzb3VyY2VfZmlsdGVyKSB7XFxuLVxcdFxcdFxcdHJldGNvZGUgPSBFUlJfUkVTX05PVF9LTk9XTjtcXG4gXFx0XFx0XFx0cmVzb3VyY2UgPSBkcmJkX2ZpbmRfcmVzb3VyY2UobmxhX2RhdGEocmVzb3VyY2VfZmlsdGVyKSk7XFxuLVxcdFxcdFxcdGlmICghcmVzb3VyY2UpXFxuLVxcdFxcdFxcdFxcdGdvdG8gcHV0X3Jlc3VsdDtcXG4rXFx0XFx0XFx0aWYgKCFyZXNvdXJjZSkge1xcbitcXHRcXHRcXHRcXHRlcnIgPSBkcmJkX25sX3B1dF9kdW1wX2Nvbm5lY3Rpb25zX3Jlc3VsdChcXG4rXFx0XFx0XFx0XFx0XFx0c2tiLCBjYiwgcmVzb3VyY2UsIE5VTEwsXFxuK1xcdFxcdFxcdFxcdFxcdEVSUl9SRVNfTk9UX0tOT1dOKTtcXG4rXFx0XFx0XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK1xcdFxcdFxcdFxcdGdvdG8gcmV0O1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdGNiLVxcdTAwM2VhcmdzWzBdID0gKGxvbmcpcmVzb3VyY2U7XFxuIFxcdFxcdFxcdGNiLVxcdTAwM2VhcmdzWzFdID0gU0lOR0xFX1JFU09VUkNFO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFx0aWYgKCFyZXNvdXJjZSkge1xcbi1cXHRcXHRpZiAobGlzdF9lbXB0eShcXHUwMDI2ZHJiZF9yZXNvdXJjZXMpKVxcbi1cXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNmRyYmRfcmVzb3VyY2VzKSkge1xcbitcXHRcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4rXFx0XFx0XFx0Z290byByZXQ7XFxuK1xcdFxcdH1cXG4gXFx0XFx0cmVzb3VyY2UgPSBsaXN0X2ZpcnN0X2VudHJ5KFxcdTAwMjZkcmJkX3Jlc291cmNlcywgc3RydWN0IGRyYmRfcmVzb3VyY2UsIHJlc291cmNlcyk7XFxuIFxcdFxcdGtyZWZfZ2V0KFxcdTAwMjZyZXNvdXJjZS1cXHUwMDNla3JlZik7XFxuIFxcdFxcdGNiLVxcdTAwM2VhcmdzWzBdID0gKGxvbmcpcmVzb3VyY2U7XFxuQEAgLTM1NzgsOCArMzYyNiw5IEBAIGludCBkcmJkX25sX2dldF9jb25uZWN0aW9uc19kdW1waXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2tcXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoY29ubmVjdGlvbiwgXFx1MDAyNnJlc291cmNlLVxcdTAwM2Vjb25uZWN0aW9ucywgY29ubmVjdGlvbnMpIHtcXG4gXFx0XFx0aWYgKCFoYXNfbmV0X2NvbmYoY29ubmVjdGlvbikpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHRyZXRjb2RlID0gTk9fRVJST1I7XFxuLVxcdFxcdGdvdG8gcHV0X3Jlc3VsdDsgIC8qIG9ubHkgb25lIGl0ZXJhdGlvbiAqL1xcbitcXHRcXHRlcnIgPSBkcmJkX25sX3B1dF9kdW1wX2Nvbm5lY3Rpb25zX3Jlc3VsdChza2IsIGNiLCByZXNvdXJjZSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBjb25uZWN0aW9uLCBOT19FUlJPUik7XFxuK1xcdFxcdGdvdG8gb3V0OyAvKiBvbmx5IG9uZSBpdGVyYXRpb24gKi9cXG4gXFx0fVxcbiBcXG4gbm9fbW9yZV9jb25uZWN0aW9uczpcXG5AQCAtMzYwMiw0NiArMzY1MSwxNCBAQCBpbnQgZHJiZF9ubF9nZXRfY29ubmVjdGlvbnNfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrXFxuIFxcdFxcdGNiLVxcdTAwM2VhcmdzWzJdID0gMDtcXG4gXFx0XFx0Z290byBuZXh0X3Jlc291cmNlO1xcbiBcXHR9XFxuLVxcdGdvdG8gb3V0OyAgLyogbm8gbW9yZSByZXNvdXJjZXMgKi9cXG4gXFxuLXB1dF9yZXN1bHQ6XFxuLVxcdGRoID0gZ2VubG1zZ19wdXQoc2tiLCBORVRMSU5LX0NCKGNiLVxcdTAwM2Vza2IpLnBvcnRpZCxcXG4tXFx0XFx0XFx0Y2ItXFx1MDAzZW5saC1cXHUwMDNlbmxtc2dfc2VxLCBcXHUwMDI2ZHJiZF9ubF9mYW1pbHksXFxuLVxcdFxcdFxcdE5MTV9GX01VTFRJLCBEUkJEX0FETV9HRVRfQ09OTkVDVElPTlMpO1xcbi1cXHRlcnIgPSAtRU5PTUVNO1xcbi1cXHRpZiAoIWRoKVxcbi1cXHRcXHRnb3RvIG91dDtcXG4tXFx0ZGgtXFx1MDAzZXJldF9jb2RlID0gcmV0Y29kZTtcXG4tXFx0ZGgtXFx1MDAzZW1pbm9yID0gLTFVO1xcbi1cXHRpZiAocmV0Y29kZSA9PSBOT19FUlJPUikge1xcbi1cXHRcXHRzdHJ1Y3QgbmV0X2NvbmYgKm5ldF9jb25mO1xcbi1cXG4tXFx0XFx0ZXJyID0gbmxhX3B1dF9kcmJkX2NmZ19jb250ZXh0KHNrYiwgcmVzb3VyY2UsIGNvbm5lY3Rpb24sIE5VTEwpO1xcbi1cXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRnb3RvIG91dDtcXG4tXFx0XFx0bmV0X2NvbmYgPSByY3VfZGVyZWZlcmVuY2UoY29ubmVjdGlvbi1cXHUwMDNlbmV0X2NvbmYpO1xcbi1cXHRcXHRpZiAobmV0X2NvbmYpIHtcXG4tXFx0XFx0XFx0ZXJyID0gbmV0X2NvbmZfdG9fc2tiKHNrYiwgbmV0X2NvbmYpO1xcbi1cXHRcXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4tXFx0XFx0fVxcbi1cXHRcXHRjb25uZWN0aW9uX3RvX2luZm8oXFx1MDAyNmNvbm5lY3Rpb25faW5mbywgY29ubmVjdGlvbik7XFxuLVxcdFxcdGVyciA9IGNvbm5lY3Rpb25faW5mb190b19za2Ioc2tiLCBcXHUwMDI2Y29ubmVjdGlvbl9pbmZvKTtcXG4tXFx0XFx0aWYgKGVycilcXG4tXFx0XFx0XFx0Z290byBvdXQ7XFxuLVxcdFxcdGNvbm5lY3Rpb25fc3RhdGlzdGljcy5jb25uX2Nvbmdlc3RlZCA9IHRlc3RfYml0KE5FVF9DT05HRVNURUQsIFxcdTAwMjZjb25uZWN0aW9uLVxcdTAwM2VmbGFncyk7XFxuLVxcdFxcdGVyciA9IGNvbm5lY3Rpb25fc3RhdGlzdGljc190b19za2Ioc2tiLCBcXHUwMDI2Y29ubmVjdGlvbl9zdGF0aXN0aWNzKTtcXG4tXFx0XFx0aWYgKGVycilcXG4tXFx0XFx0XFx0Z290byBvdXQ7XFxuLVxcdFxcdGNiLVxcdTAwM2VhcmdzWzJdID0gKGxvbmcpY29ubmVjdGlvbjtcXG4tXFx0fVxcbi1cXHRnZW5sbXNnX2VuZChza2IsIGRoKTtcXG4tXFx0ZXJyID0gMDtcXG4rXFx0Lyogbm8gbW9yZSByZXNvdXJjZXMgKi9cXG4gXFxuIG91dDpcXG4gXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLVxcdGlmIChyZXNvdXJjZSlcXG4tXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZyZXNvdXJjZS1cXHUwMDNlY29uZl91cGRhdGUpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnJlc291cmNlLVxcdTAwM2Vjb25mX3VwZGF0ZSk7XFxuK1xcbityZXQ6XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcdHJldHVybiBza2ItXFx1MDAzZWxlbjtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmNcXG5pbmRleCA1OGI5NWJmNGJkY2E2YS4uYjRhMzUwY2QwM2IwNGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmNcXG5AQCAtMTc0LDggKzE3NCw5IEBAIFlvdSBtdXN0IG5vdCBoYXZlIHRoZSByZXFfbG9jazpcXG4gICogd19zYW1lOiBwYXlsb2FkX3NpemUgPT0gbG9naWNhbF9ibG9ja19zaXplXFxuICAqIHRyaW06IHBheWxvYWRfc2l6ZSA9PSAwICovXFxuIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqXFxuLWRyYmRfYWxsb2NfcGVlcl9yZXEoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCB1NjQgaWQsIHNlY3Rvcl90IHNlY3RvcixcXG4tXFx0XFx0ICAgIHVuc2lnbmVkIGludCByZXF1ZXN0X3NpemUsIHVuc2lnbmVkIGludCBwYXlsb2FkX3NpemUsIGdmcF90IGdmcF9tYXNrKSBfX211c3RfaG9sZChsb2NhbClcXG4rZHJiZF9hbGxvY19wZWVyX3JlcShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHU2NCBpZCxcXG4rXFx0XFx0ICAgIHNlY3Rvcl90IHNlY3RvciwgdW5zaWduZWQgaW50IHJlcXVlc3Rfc2l6ZSxcXG4rXFx0XFx0ICAgIHVuc2lnbmVkIGludCBwYXlsb2FkX3NpemUsIGdmcF90IGdmcF9tYXNrKVxcbiB7XFxuIFxcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtXFx1MDAzZWRldmljZTtcXG4gXFx0c3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcTtcXG5AQCAtMjg3LDYgKzI4OCw3IEBAIHN0YXRpYyBpbnQgZHJiZF9maW5pc2hfcGVlcl9yZXFzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxcbiBcXG4gc3RhdGljIHZvaWQgX2RyYmRfd2FpdF9lZV9saXN0X2VtcHR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbiBcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXFxuK1xcdF9fbXVzdF9ob2xkKFxcdTAwMjZkZXZpY2UtXFx1MDAzZXJlc291cmNlLVxcdTAwM2VyZXFfbG9jaylcXG4ge1xcbiBcXHRERUZJTkVfV0FJVCh3YWl0KTtcXG4gXFxuQEAgLTg5Niw2ICs4OTgsOCBAQCBzdGF0aWMgaW50IGNvbm5fY29ubmVjdChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKVxcbiBcXHRpZiAoZHJiZF9zZW5kX3Byb3RvY29sKGNvbm5lY3Rpb24pID09IC1FT1BOT1RTVVBQKVxcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcbitcXHQvKiBjb250ZXh0X3Vuc2FmZSgpIGJlY2F1c2Ugb2YgdHdvIGxvY2tpbmcgbG9vcHMgKi9cXG4rXFx0Y29udGV4dF91bnNhZmUoXFxuIFxcdC8qIFByZXZlbnQgYSByYWNlIGJldHdlZW4gcmVzeW5jLWhhbmRzaGFrZSBhbmRcXG4gXFx0ICogYmVpbmcgcHJvbW90ZWQgdG8gUHJpbWFyeS5cXG4gXFx0ICpcXG5AQCAtOTEzLDYgKzkxNyw3IEBAIHN0YXRpYyBpbnQgY29ubl9jb25uZWN0KHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pXFxuIFxcbiBcXHRpZHJfZm9yX2VhY2hfZW50cnkoXFx1MDAyNmNvbm5lY3Rpb24tXFx1MDAzZXBlZXJfZGV2aWNlcywgcGVlcl9kZXZpY2UsIHZucilcXG4gXFx0XFx0bXV0ZXhfdW5sb2NrKHBlZXJfZGV2aWNlLVxcdTAwM2VkZXZpY2UtXFx1MDAzZXN0YXRlX211dGV4KTtcXG4rXFx0KTtcXG4gXFxuIFxcdHJjdV9yZWFkX2xvY2soKTtcXG4gXFx0aWRyX2Zvcl9lYWNoX2VudHJ5KFxcdTAwMjZjb25uZWN0aW9uLVxcdTAwM2VwZWVyX2RldmljZXMsIHBlZXJfZGV2aWNlLCB2bnIpIHtcXG5AQCAtMTY1Nyw3ICsxNjYyLDcgQEAgc3RhdGljIHZvaWQgZHJiZF9jc3VtX2VlX3NpemUoc3RydWN0IGNyeXB0b19zaGFzaCAqaCxcXG4gICovXFxuIHN0YXRpYyBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKlxcbiByZWFkX2luX2Jsb2NrKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgdTY0IGlkLCBzZWN0b3JfdCBzZWN0b3IsXFxuLVxcdCAgICAgIHN0cnVjdCBwYWNrZXRfaW5mbyAqcGkpIF9fbXVzdF9ob2xkKGxvY2FsKVxcbitcXHQgICAgICBzdHJ1Y3QgcGFja2V0X2luZm8gKnBpKVxcbiB7XFxuIFxcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtXFx1MDAzZWRldmljZTtcXG4gXFx0Y29uc3Qgc2VjdG9yX3QgY2FwYWNpdHkgPSBnZXRfY2FwYWNpdHkoZGV2aWNlLVxcdTAwM2V2ZGlzayk7XFxuQEAgLTE4NjgsOCArMTg3Myw4IEBAIHN0YXRpYyBpbnQgZV9lbmRfcmVzeW5jX2Jsb2NrKHN0cnVjdCBkcmJkX3dvcmsgKncsIGludCB1bnVzZWQpXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgcmVjdl9yZXN5bmNfcmVhZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHNlY3Rvcl90IHNlY3RvcixcXG4tXFx0XFx0XFx0ICAgIHN0cnVjdCBwYWNrZXRfaW5mbyAqcGkpIF9fcmVsZWFzZXMobG9jYWwpXFxuK3N0YXRpYyBpbnQgcmVjdl9yZXN5bmNfcmVhZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsXFxuK1xcdFxcdFxcdCAgICBzZWN0b3JfdCBzZWN0b3IsIHN0cnVjdCBwYWNrZXRfaW5mbyAqcGkpXFxuIHtcXG4gXFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBwZWVyX2RldmljZS1cXHUwMDNlZGV2aWNlO1xcbiBcXHRzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxO1xcbkBAIC0yMjMwLDYgKzIyMzUsNyBAQCBzdGF0aWMgYmxrX29wZl90IHdpcmVfZmxhZ3NfdG9fYmlvKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHUzMiBkcGYpXFxuIFxcbiBzdGF0aWMgdm9pZCBmYWlsX3Bvc3Rwb25lZF9yZXF1ZXN0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9yLFxcbiBcXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgaW50IHNpemUpXFxuK1xcdF9fbXVzdF9ob2xkKFxcdTAwMjZkZXZpY2UtXFx1MDAzZXJlc291cmNlLVxcdTAwM2VyZXFfbG9jaylcXG4ge1xcbiBcXHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UgPSBmaXJzdF9wZWVyX2RldmljZShkZXZpY2UpO1xcbiBcXHRzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaTtcXG5AQCAtMjI1Niw2ICsyMjYyLDcgQEAgc3RhdGljIHZvaWQgZmFpbF9wb3N0cG9uZWRfcmVxdWVzdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3RvcixcXG4gXFxuIHN0YXRpYyBpbnQgaGFuZGxlX3dyaXRlX2NvbmZsaWN0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4gXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKVxcbitcXHRfX211c3RfaG9sZChcXHUwMDI2ZGV2aWNlLVxcdTAwM2VyZXNvdXJjZS1cXHUwMDNlcmVxX2xvY2spXFxuIHtcXG4gXFx0c3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiA9IHBlZXJfcmVxLVxcdTAwM2VwZWVyX2RldmljZS1cXHUwMDNlY29ubmVjdGlvbjtcXG4gXFx0Ym9vbCByZXNvbHZlX2NvbmZsaWN0cyA9IHRlc3RfYml0KFJFU09MVkVfQ09ORkxJQ1RTLCBcXHUwMDI2Y29ubmVjdGlvbi1cXHUwMDNlZmxhZ3MpO1xcbkBAIC0yODI2LDcgKzI4MzMsNyBAQCBzdGF0aWMgaW50IHJlY2VpdmVfRGF0YVJlcXVlc3Qoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgc3RydWN0IHBhY2tldFxcbiAvKlxcbiAgKiBkcmJkX2FzYl9yZWNvdmVyXzBwICAtICBSZWNvdmVyIGFmdGVyIHNwbGl0LWJyYWluIHdpdGggbm8gcmVtYWluaW5nIHByaW1hcmllc1xcbiAgKi9cXG4tc3RhdGljIGludCBkcmJkX2FzYl9yZWNvdmVyXzBwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXFxuK3N0YXRpYyBpbnQgZHJiZF9hc2JfcmVjb3Zlcl8wcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXFxuIHtcXG4gXFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBwZWVyX2RldmljZS1cXHUwMDNlZGV2aWNlO1xcbiBcXHRpbnQgc2VsZiwgcGVlciwgcnYgPSAtMTAwO1xcbkBAIC0yOTA5LDcgKzI5MTYsNyBAQCBzdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMHAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZFxcbiAvKlxcbiAgKiBkcmJkX2FzYl9yZWNvdmVyXzFwICAtICBSZWNvdmVyIGFmdGVyIHNwbGl0LWJyYWluIHdpdGggb25lIHJlbWFpbmluZyBwcmltYXJ5XFxuICAqL1xcbi1zdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMXAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcXG4rc3RhdGljIGludCBkcmJkX2FzYl9yZWNvdmVyXzFwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHBlZXJfZGV2aWNlLVxcdTAwM2VkZXZpY2U7XFxuIFxcdGludCBoZywgcnYgPSAtMTAwO1xcbkBAIC0yOTY2LDcgKzI5NzMsNyBAQCBzdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMXAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZFxcbiAvKlxcbiAgKiBkcmJkX2FzYl9yZWNvdmVyXzJwICAtICBSZWNvdmVyIGFmdGVyIHNwbGl0LWJyYWluIHdpdGggdHdvIHJlbWFpbmluZyBwcmltYXJpZXNcXG4gICovXFxuLXN0YXRpYyBpbnQgZHJiZF9hc2JfcmVjb3Zlcl8ycChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxcbitzdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMnAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxcbiB7XFxuIFxcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtXFx1MDAzZWRldmljZTtcXG4gXFx0aW50IGhnLCBydiA9IC0xMDA7XFxuQEAgLTMwNDQsNyArMzA1MSw3IEBAIHN0YXRpYyB2b2lkIGRyYmRfdXVpZF9kdW1wKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICp0ZXh0LCB1NjQgKnV1aWQsXFxuICAqL1xcbiBcXG4gc3RhdGljIGludCBkcmJkX3V1aWRfY29tcGFyZShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqY29uc3QgcGVlcl9kZXZpY2UsXFxuLVxcdFxcdGVudW0gZHJiZF9yb2xlIGNvbnN0IHBlZXJfcm9sZSwgaW50ICpydWxlX25yKSBfX211c3RfaG9sZChsb2NhbClcXG4rXFx0XFx0XFx0ICAgICBlbnVtIGRyYmRfcm9sZSBjb25zdCBwZWVyX3JvbGUsIGludCAqcnVsZV9ucilcXG4ge1xcbiBcXHRzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25zdCBjb25uZWN0aW9uID0gcGVlcl9kZXZpY2UtXFx1MDAzZWNvbm5lY3Rpb247XFxuIFxcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtXFx1MDAzZWRldmljZTtcXG5AQCAtMzI2NCw3ICszMjcxLDcgQEAgc3RhdGljIGludCBkcmJkX3V1aWRfY29tcGFyZShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqY29uc3QgcGVlcl9kZXZpY2UsXFxuICAqL1xcbiBzdGF0aWMgZW51bSBkcmJkX2Nvbm5zIGRyYmRfc3luY19oYW5kc2hha2Uoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBlbnVtIGRyYmRfcm9sZSBwZWVyX3JvbGUsXFxuLVxcdFxcdFxcdFxcdFxcdCAgIGVudW0gZHJiZF9kaXNrX3N0YXRlIHBlZXJfZGlzaykgX19tdXN0X2hvbGQobG9jYWwpXFxuK1xcdFxcdFxcdFxcdFxcdCAgIGVudW0gZHJiZF9kaXNrX3N0YXRlIHBlZXJfZGlzaylcXG4ge1xcbiBcXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHBlZXJfZGV2aWNlLVxcdTAwM2VkZXZpY2U7XFxuIFxcdGVudW0gZHJiZF9jb25ucyBydiA9IENfTUFTSztcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuY1xcbmluZGV4IDcwZjc1ZWYwNzk0NTdkLi4xY2M0NTU4NDZmOTIwMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5jXFxuQEAgLTk1MSw3ICs5NTEsOSBAQCBzdGF0aWMgYm9vbCByZW1vdGVfZHVlX3RvX3JlYWRfYmFsYW5jaW5nKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzZVxcbiAgKlxcbiAgKiBPbmx5IHdheSBvdXQ6IHJlbW92ZSB0aGUgY29uZmxpY3RpbmcgaW50ZXJ2YWxzIGZyb20gdGhlIHRyZWUuXFxuICAqL1xcbi1zdGF0aWMgdm9pZCBjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKVxcbitzdGF0aWMgdm9pZCBjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMoc3RydWN0IGRyYmRfcmVzb3VyY2UgKnJlc291cmNlLFxcbitcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICpyZXEpXFxuK1xcdF9fbXVzdF9ob2xkKFxcdTAwMjZyZXNvdXJjZS1cXHUwMDNlcmVxX2xvY2spXFxuIHtcXG4gXFx0REVGSU5FX1dBSVQod2FpdCk7XFxuIFxcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcmVxLVxcdTAwM2VkZXZpY2U7XFxuQEAgLTk3NCw5ICs5NzYsOSBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKVxcbiBcXHRcXHQvKiBJbmRpY2F0ZSB0byB3YWtlIHVwIGRldmljZS1cXHUwMDNlbWlzY193YWl0IG9uIHByb2dyZXNzLiAgKi9cXG4gXFx0XFx0cHJlcGFyZV90b193YWl0KFxcdTAwMjZkZXZpY2UtXFx1MDAzZW1pc2Nfd2FpdCwgXFx1MDAyNndhaXQsIFRBU0tfVU5JTlRFUlJVUFRJQkxFKTtcXG4gXFx0XFx0aS1cXHUwMDNld2FpdGluZyA9IHRydWU7XFxuLVxcdFxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2ZGV2aWNlLVxcdTAwM2VyZXNvdXJjZS1cXHUwMDNlcmVxX2xvY2spO1xcbitcXHRcXHRzcGluX3VubG9ja19pcnEoXFx1MDAyNnJlc291cmNlLVxcdTAwM2VyZXFfbG9jayk7XFxuIFxcdFxcdHNjaGVkdWxlKCk7XFxuLVxcdFxcdHNwaW5fbG9ja19pcnEoXFx1MDAyNmRldmljZS1cXHUwMDNlcmVzb3VyY2UtXFx1MDAzZXJlcV9sb2NrKTtcXG4rXFx0XFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2cmVzb3VyY2UtXFx1MDAzZXJlcV9sb2NrKTtcXG4gXFx0fVxcbiBcXHRmaW5pc2hfd2FpdChcXHUwMDI2ZGV2aWNlLVxcdTAwM2VtaXNjX3dhaXQsIFxcdTAwMjZ3YWl0KTtcXG4gfVxcbkBAIC0xMzI5LDcgKzEzMzEsNyBAQCBzdGF0aWMgdm9pZCBkcmJkX3NlbmRfYW5kX3N1Ym1pdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfcmVxdWVzdFxcbiBcXHRcXHQvKiBUaGlzIG1heSB0ZW1wb3JhcmlseSBnaXZlIHVwIHRoZSByZXFfbG9jayxcXG4gXFx0XFx0ICogYnV0IHdpbGwgcmUtYXF1aXJlIGl0IGJlZm9yZSBpdCByZXR1cm5zIGhlcmUuXFxuIFxcdFxcdCAqIE5lZWRzIHRvIGJlIGJlZm9yZSB0aGUgY2hlY2sgb24gZHJiZF9zdXNwZW5kZWQoKSAqL1xcbi1cXHRcXHRjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMocmVxKTtcXG4rXFx0XFx0Y29tcGxldGVfY29uZmxpY3Rpbmdfd3JpdGVzKHJlc291cmNlLCByZXEpO1xcbiBcXHRcXHQvKiBubyBtb3JlIGdpdmluZyB1cCByZXFfbG9jayBmcm9tIG5vdyBvbiEgKi9cXG4gXFxuIFxcdFxcdC8qIGNoZWNrIGZvciBjb25nZXN0aW9uLCBhbmQgcG90ZW50aWFsbHkgc3RvcCBzZW5kaW5nXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5oIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmhcXG5pbmRleCA5YWU4NjBlNzU5MWIzMi4uN2YyNGNiOGU1NDI5YTMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmhcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuaFxcbkBAIC0yNjQsMjAgKzI2NCwxOCBAQCBzdHJ1Y3QgYmlvX2FuZF9lcnJvciB7XFxuIFxcdGludCBlcnJvcjtcXG4gfTtcXG4gXFxuLWV4dGVybiB2b2lkIHN0YXJ0X25ld190bF9lcG9jaChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcXG4tZXh0ZXJuIHZvaWQgZHJiZF9yZXFfZGVzdHJveShzdHJ1Y3Qga3JlZiAqa3JlZik7XFxuLWV4dGVybiBpbnQgX19yZXFfbW9kKHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSwgZW51bSBkcmJkX3JlcV9ldmVudCB3aGF0LFxcbi1cXHRcXHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsXFxuLVxcdFxcdHN0cnVjdCBiaW9fYW5kX2Vycm9yICptKTtcXG4tZXh0ZXJuIHZvaWQgY29tcGxldGVfbWFzdGVyX2JpbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4tXFx0XFx0c3RydWN0IGJpb19hbmRfZXJyb3IgKm0pO1xcbi1leHRlcm4gdm9pZCByZXF1ZXN0X3RpbWVyX2ZuKHN0cnVjdCB0aW1lcl9saXN0ICp0KTtcXG4tZXh0ZXJuIHZvaWQgdGxfcmVzdGFydChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQpO1xcbi1leHRlcm4gdm9pZCBfdGxfcmVzdGFydChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQpO1xcbi1leHRlcm4gdm9pZCB0bF9hYm9ydF9kaXNrX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4rdm9pZCBzdGFydF9uZXdfdGxfZXBvY2goc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XFxuK3ZvaWQgZHJiZF9yZXFfZGVzdHJveShzdHJ1Y3Qga3JlZiAqa3JlZik7XFxuK2ludCBfX3JlcV9tb2Qoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQsXFxuK1xcdCAgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc3RydWN0IGJpb19hbmRfZXJyb3IgKm0pO1xcbit2b2lkIGNvbXBsZXRlX21hc3Rlcl9iaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBiaW9fYW5kX2Vycm9yICptKTtcXG4rdm9pZCByZXF1ZXN0X3RpbWVyX2ZuKHN0cnVjdCB0aW1lcl9saXN0ICp0KTtcXG4rdm9pZCB0bF9yZXN0YXJ0KHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGVudW0gZHJiZF9yZXFfZXZlbnQgd2hhdCk7XFxuK3ZvaWQgX3RsX3Jlc3RhcnQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgZW51bSBkcmJkX3JlcV9ldmVudCB3aGF0KTtcXG4rdm9pZCB0bF9hYm9ydF9kaXNrX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4gXFxuIC8qIHRoaXMgaXMgaW4gZHJiZF9tYWluLmMgKi9cXG4tZXh0ZXJuIHZvaWQgZHJiZF9yZXN0YXJ0X3JlcXVlc3Qoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKTtcXG4rdm9pZCBkcmJkX3Jlc3RhcnRfcmVxdWVzdChzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICpyZXEpO1xcbiBcXG4gLyogdXNlIHRoaXMgaWYgeW91IGRvbid0IHdhbnQgdG8gZGVhbCB3aXRoIGNhbGxpbmcgY29tcGxldGVfbWFzdGVyX2JpbygpXFxuICAqIG91dHNpZGUgdGhlIHNwaW5sb2NrLCBlLmcuIHdoZW4gd2Fsa2luZyBzb21lIGxpc3Qgb24gY2xlYW51cC4gKi9cXG5AQCAtMzE5LDYgKzMxNyw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJlcV9tb2Qoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxLFxcbiBcXHRyZXR1cm4gcnY7XFxuIH1cXG4gXFxuLWV4dGVybiBib29sIGRyYmRfc2hvdWxkX2RvX3JlbW90ZSh1bmlvbiBkcmJkX2Rldl9zdGF0ZSk7XFxuK2Jvb2wgZHJiZF9zaG91bGRfZG9fcmVtb3RlKHVuaW9uIGRyYmRfZGV2X3N0YXRlKTtcXG4gXFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuY1xcbmluZGV4IGFkY2JhN2YxZDhlYTQ5Li40MTZhNzFkN2E2MWMwNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5jXFxuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuY1xcbkBAIC01NDksMTkgKzU0OSwxMCBAQCBfcmVxX3N0X2NvbmQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuaW9uIGRyYmRfc3RhdGUgbWFzayxcXG4gXFx0cmV0dXJuIHJ2O1xcbiB9XFxuIFxcbi0vKipcXG4tICogZHJiZF9yZXFfc3RhdGUoKSAtIFBlcmZvcm0gYW4gZXZlbnR1YWxseSBjbHVzdGVyIHdpZGUgc3RhdGUgY2hhbmdlXFxuLSAqIEBkZXZpY2U6XFx0RFJCRCBkZXZpY2UuXFxuLSAqIEBtYXNrOlxcdG1hc2sgb2Ygc3RhdGUgYml0cyB0byBjaGFuZ2UuXFxuLSAqIEB2YWw6XFx0dmFsdWUgb2YgbmV3IHN0YXRlIGJpdHMuXFxuLSAqIEBmOlxcdFxcdGZsYWdzXFxuLSAqXFxuLSAqIFNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LCB1c2UgZHJiZF9yZXF1ZXN0X3N0YXRlKCkgb3JcXG4tICogX2RyYmRfcmVxdWVzdF9zdGF0ZSgpLlxcbi0gKi9cXG4tc3RhdGljIGVudW0gZHJiZF9zdGF0ZV9ydlxcbi1kcmJkX3JlcV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxcbi1cXHQgICAgICAgdW5pb24gZHJiZF9zdGF0ZSB2YWwsIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYpXFxuK3N0YXRpYyBlbnVtIGRyYmRfc3RhdGVfcnYgX19kcmJkX3JlcV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxcbitcXHRcXHRcXHRcXHRcXHQgICB1bmlvbiBkcmJkX3N0YXRlIHZhbCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgZW51bSBjaGdfc3RhdGVfZmxhZ3MgZilcXG4ge1xcbiBcXHRzdHJ1Y3QgY29tcGxldGlvbiBkb25lO1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbkBAIC01NzEsOCArNTYyLDYgQEAgZHJiZF9yZXFfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuaW9uIGRyYmRfc3RhdGUgbWFzayxcXG4gXFxuIFxcdGluaXRfY29tcGxldGlvbihcXHUwMDI2ZG9uZSk7XFxuIFxcbi1cXHRpZiAoZiBcXHUwMDI2IENTX1NFUklBTElaRSlcXG4tXFx0XFx0bXV0ZXhfbG9jayhkZXZpY2UtXFx1MDAzZXN0YXRlX211dGV4KTtcXG4gXFx0aWYgKGYgXFx1MDAyNiBDU19JTkhJQklUX01EX0lPKVxcbiBcXHRcXHRidWZmZXIgPSBkcmJkX21kX2dldF9idWZmZXIoZGV2aWNlLCBfX2Z1bmNfXyk7XFxuIFxcbkBAIC02MjksOCArNjE4LDM0IEBAIGRyYmRfcmVxX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXFxuIGFib3J0OlxcbiBcXHRpZiAoYnVmZmVyKVxcbiBcXHRcXHRkcmJkX21kX3B1dF9idWZmZXIoZGV2aWNlKTtcXG4tXFx0aWYgKGYgXFx1MDAyNiBDU19TRVJJQUxJWkUpXFxuK1xcbitcXHRyZXR1cm4gcnY7XFxuK31cXG4rXFxuKy8qKlxcbisgKiBkcmJkX3JlcV9zdGF0ZSgpIC0gUGVyZm9ybSBhbiBldmVudHVhbGx5IGNsdXN0ZXIgd2lkZSBzdGF0ZSBjaGFuZ2VcXG4rICogQGRldmljZTpcXHREUkJEIGRldmljZS5cXG4rICogQG1hc2s6XFx0bWFzayBvZiBzdGF0ZSBiaXRzIHRvIGNoYW5nZS5cXG4rICogQHZhbDpcXHR2YWx1ZSBvZiBuZXcgc3RhdGUgYml0cy5cXG4rICogQGY6XFx0XFx0ZmxhZ3NcXG4rICpcXG4rICogU2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHksIHVzZSBkcmJkX3JlcXVlc3Rfc3RhdGUoKSBvclxcbisgKiBfZHJiZF9yZXF1ZXN0X3N0YXRlKCkuXFxuKyAqL1xcbitzdGF0aWMgZW51bSBkcmJkX3N0YXRlX3J2IGRyYmRfcmVxX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHRcXHRcXHQgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxcbitcXHRcXHRcXHRcXHRcXHQgdW5pb24gZHJiZF9zdGF0ZSB2YWwsXFxuK1xcdFxcdFxcdFxcdFxcdCBlbnVtIGNoZ19zdGF0ZV9mbGFncyBmKVxcbit7XFxuK1xcdGVudW0gZHJiZF9zdGF0ZV9ydiBydjtcXG4rXFxuK1xcdGlmIChmIFxcdTAwMjYgQ1NfU0VSSUFMSVpFKSB7XFxuK1xcdFxcdG11dGV4X2xvY2soZGV2aWNlLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuK1xcdFxcdHJ2ID0gX19kcmJkX3JlcV9zdGF0ZShkZXZpY2UsIG1hc2ssIHZhbCwgZik7XFxuIFxcdFxcdG11dGV4X3VubG9jayhkZXZpY2UtXFx1MDAzZXN0YXRlX211dGV4KTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0cnYgPSBfX2RyYmRfcmVxX3N0YXRlKGRldmljZSwgbWFzaywgdmFsLCBmKTtcXG4rXFx0fVxcbiBcXG4gXFx0cmV0dXJuIHJ2O1xcbiB9XFxuQEAgLTY5OSw2ICs3MTQsNyBAQCBpbnQgZHJiZF9yZXF1ZXN0X2RldGFjaF9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxcbiBlbnVtIGRyYmRfc3RhdGVfcnZcXG4gX2RyYmRfcmVxdWVzdF9zdGF0ZV9ob2xkaW5nX3N0YXRlX211dGV4KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXFxuIFxcdFxcdCAgICB1bmlvbiBkcmJkX3N0YXRlIHZhbCwgZW51bSBjaGdfc3RhdGVfZmxhZ3MgZilcXG4rXFx0X19tdXN0X2hvbGQoXFx1MDAyNmRldmljZS1cXHUwMDNlc3RhdGVfbXV0ZXgpXFxuIHtcXG4gXFx0ZW51bSBkcmJkX3N0YXRlX3J2IHJ2O1xcbiBcXG5AQCAtMjI5Miw2ICsyMzA4LDcgQEAgX2Nvbm5fcnFfY29uZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssIHVuaW9uIGRcXG4gZW51bSBkcmJkX3N0YXRlX3J2XFxuIF9jb25uX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLCB1bmlvbiBkcmJkX3N0YXRlIHZhbCxcXG4gXFx0XFx0ICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGZsYWdzKVxcbitcXHRfX2NvbnRleHRfdW5zYWZlKGNvbmRpdGlvbmFsIGxvY2tpbmcpXFxuIHtcXG4gXFx0ZW51bSBkcmJkX3N0YXRlX3J2IHJ2ID0gU1NfU1VDQ0VTUztcXG4gXFx0c3RydWN0IGFmdGVyX2Nvbm5fc3RhdGVfY2hnX3dvcmsgKmFjc2N3O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5oIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuaFxcbmluZGV4IGNiYWViODAxOGRiZjU5Li5hN2UzMWQwOTIwMzk2YiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5oXFxuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuaFxcbkBAIC0xMTIsMjYgKzExMiwyMyBAQCB1bmlvbiBkcmJkX2Rldl9zdGF0ZSB7XFxuIFxcdHVuc2lnbmVkIGludCBpO1xcbiB9O1xcbiBcXG4tZXh0ZXJuIGVudW0gZHJiZF9zdGF0ZV9ydiBkcmJkX2NoYW5nZV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXFxuLVxcdFxcdFxcdFxcdFxcdCAgICB1bmlvbiBkcmJkX3N0YXRlIHZhbCk7XFxuLWV4dGVybiB2b2lkIGRyYmRfZm9yY2Vfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsXFxuLVxcdFxcdFxcdHVuaW9uIGRyYmRfc3RhdGUpO1xcbi1leHRlcm4gZW51bSBkcmJkX3N0YXRlX3J2IF9kcmJkX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICosXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgIHVuaW9uIGRyYmRfc3RhdGUsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgIHVuaW9uIGRyYmRfc3RhdGUsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzKTtcXG4tXFxuLWV4dGVybiBlbnVtIGRyYmRfc3RhdGVfcnZcXG4rZW51bSBkcmJkX3N0YXRlX3J2IGRyYmRfY2hhbmdlX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxcbitcXHRcXHRcXHRcXHQgICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYsXFxuK1xcdFxcdFxcdFxcdCAgICAgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxcbitcXHRcXHRcXHRcXHQgICAgIHVuaW9uIGRyYmRfc3RhdGUgdmFsKTtcXG4rdm9pZCBkcmJkX2ZvcmNlX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLCB1bmlvbiBkcmJkX3N0YXRlKTtcXG4rZW51bSBkcmJkX3N0YXRlX3J2IF9kcmJkX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsXFxuK1xcdFxcdFxcdFxcdCAgICAgICB1bmlvbiBkcmJkX3N0YXRlLCBlbnVtIGNoZ19zdGF0ZV9mbGFncyk7XFxuK1xcbitlbnVtIGRyYmRfc3RhdGVfcnZcXG4gX2RyYmRfcmVxdWVzdF9zdGF0ZV9ob2xkaW5nX3N0YXRlX211dGV4KHN0cnVjdCBkcmJkX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLFxcbiBcXHRcXHRcXHRcXHRcXHR1bmlvbiBkcmJkX3N0YXRlLCBlbnVtIGNoZ19zdGF0ZV9mbGFncyk7XFxuIFxcbi1leHRlcm4gZW51bSBkcmJkX3N0YXRlX3J2IF9kcmJkX3NldF9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSxcXG4tXFx0XFx0XFx0XFx0XFx0ICBlbnVtIGNoZ19zdGF0ZV9mbGFncyxcXG4tXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgY29tcGxldGlvbiAqZG9uZSk7XFxuLWV4dGVybiB2b2lkIHByaW50X3N0X2VycihzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSxcXG4tXFx0XFx0XFx0dW5pb24gZHJiZF9zdGF0ZSwgZW51bSBkcmJkX3N0YXRlX3J2KTtcXG4rZW51bSBkcmJkX3N0YXRlX3J2IF9kcmJkX3NldF9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSxcXG4rXFx0XFx0XFx0XFx0ICAgZW51bSBjaGdfc3RhdGVfZmxhZ3MsXFxuK1xcdFxcdFxcdFxcdCAgIHN0cnVjdCBjb21wbGV0aW9uICpkb25lKTtcXG4rdm9pZCBwcmludF9zdF9lcnIoc3RydWN0IGRyYmRfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsIHVuaW9uIGRyYmRfc3RhdGUsXFxuK1xcdFxcdCAgZW51bSBkcmJkX3N0YXRlX3J2KTtcXG4gXFxuIGVudW0gZHJiZF9zdGF0ZV9ydlxcbiBfY29ubl9yZXF1ZXN0X3N0YXRlKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHVuaW9uIGRyYmRfc3RhdGUgbWFzaywgdW5pb24gZHJiZF9zdGF0ZSB2YWwsXFxuQEAgLTE0MSw4ICsxMzgsOCBAQCBlbnVtIGRyYmRfc3RhdGVfcnZcXG4gY29ubl9yZXF1ZXN0X3N0YXRlKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHVuaW9uIGRyYmRfc3RhdGUgbWFzaywgdW5pb24gZHJiZF9zdGF0ZSB2YWwsXFxuIFxcdFxcdCAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGZsYWdzKTtcXG4gXFxuLWV4dGVybiB2b2lkIGRyYmRfcmVzdW1lX2FsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcXG4tZXh0ZXJuIGJvb2wgY29ubl9hbGxfdm9sc191bmNvbmYoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XFxuK3ZvaWQgZHJiZF9yZXN1bWVfYWwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xcbitib29sIGNvbm5fYWxsX3ZvbHNfdW5jb25mKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xcbiBcXG4gLyoqXFxuICAqIGRyYmRfcmVxdWVzdF9zdGF0ZSgpIC0gUmVxdWVzdCBhIHN0YXRlIGNoYW5nZVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZV9jaGFuZ2UuaCBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3N0YXRlX2NoYW5nZS5oXFxuaW5kZXggYTU2YTU3ZDY3Njg2MjkuLmY1OGE1NTAxNDE3N2RlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3N0YXRlX2NoYW5nZS5oXFxuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGVfY2hhbmdlLmhcXG5AQCAtNDAsMjUgKzQwLDE3IEBAIHN0cnVjdCBkcmJkX3N0YXRlX2NoYW5nZSB7XFxuIFxcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlX3N0YXRlX2NoYW5nZSAqcGVlcl9kZXZpY2VzO1xcbiB9O1xcbiBcXG4tZXh0ZXJuIHN0cnVjdCBkcmJkX3N0YXRlX2NoYW5nZSAqcmVtZW1iZXJfb2xkX3N0YXRlKHN0cnVjdCBkcmJkX3Jlc291cmNlICosIGdmcF90KTtcXG4tZXh0ZXJuIHZvaWQgY29weV9vbGRfdG9fbmV3X3N0YXRlX2NoYW5nZShzdHJ1Y3QgZHJiZF9zdGF0ZV9jaGFuZ2UgKik7XFxuLWV4dGVybiB2b2lkIGZvcmdldF9zdGF0ZV9jaGFuZ2Uoc3RydWN0IGRyYmRfc3RhdGVfY2hhbmdlICopO1xcbi1cXG4tZXh0ZXJuIGludCBub3RpZnlfcmVzb3VyY2Vfc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosXFxuLVxcdFxcdFxcdFxcdFxcdCB1bnNpZ25lZCBpbnQsXFxuLVxcdFxcdFxcdFxcdFxcdCB2b2lkICosXFxuLVxcdFxcdFxcdFxcdFxcdCBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7XFxuLWV4dGVybiBpbnQgbm90aWZ5X2Nvbm5lY3Rpb25fc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosXFxuLVxcdFxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgdm9pZCAqLFxcbi1cXHRcXHRcXHRcXHRcXHQgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7XFxuLWV4dGVybiBpbnQgbm90aWZ5X2RldmljZV9zdGF0ZV9jaGFuZ2Uoc3RydWN0IHNrX2J1ZmYgKixcXG4tXFx0XFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGludCxcXG4tXFx0XFx0XFx0XFx0ICAgICAgIHZvaWQgKixcXG4tXFx0XFx0XFx0XFx0ICAgICAgIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSB0eXBlKTtcXG4tZXh0ZXJuIGludCBub3RpZnlfcGVlcl9kZXZpY2Vfc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosXFxuLVxcdFxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICB2b2lkICosXFxuLVxcdFxcdFxcdFxcdFxcdCAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7XFxuK3N0cnVjdCBkcmJkX3N0YXRlX2NoYW5nZSAqcmVtZW1iZXJfb2xkX3N0YXRlKHN0cnVjdCBkcmJkX3Jlc291cmNlICosIGdmcF90KTtcXG4rdm9pZCBjb3B5X29sZF90b19uZXdfc3RhdGVfY2hhbmdlKHN0cnVjdCBkcmJkX3N0YXRlX2NoYW5nZSAqKTtcXG4rdm9pZCBmb3JnZXRfc3RhdGVfY2hhbmdlKHN0cnVjdCBkcmJkX3N0YXRlX2NoYW5nZSAqKTtcXG4rXFxuK2ludCBub3RpZnlfcmVzb3VyY2Vfc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCwgdm9pZCAqLFxcbitcXHRcXHRcXHRcXHQgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xcbitpbnQgbm90aWZ5X2Nvbm5lY3Rpb25fc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCwgdm9pZCAqLFxcbitcXHRcXHRcXHRcXHQgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7XFxuK2ludCBub3RpZnlfZGV2aWNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsIHZvaWQgKixcXG4rXFx0XFx0XFx0ICAgICAgIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSB0eXBlKTtcXG4raW50IG5vdGlmeV9wZWVyX2RldmljZV9zdGF0ZV9jaGFuZ2Uoc3RydWN0IHNrX2J1ZmYgKiwgdW5zaWduZWQgaW50LCB2b2lkICosXFxuK1xcdFxcdFxcdFxcdCAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7XFxuIFxcbiAjZW5kaWYgIC8qIERSQkRfU1RBVEVfQ0hBTkdFX0ggKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfd29ya2VyLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF93b3JrZXIuY1xcbmluZGV4IDA2OTdmOTlmZWQxOGQ3Li42ZmVjNTliYmYwZTlhNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF93b3JrZXIuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3dvcmtlci5jXFxuQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBkcmJkX21kX2VuZGlvKHN0cnVjdCBiaW8gKmJpbylcXG4gLyogcmVhZHMgb24gYmVoYWxmIG9mIHRoZSBwYXJ0bmVyLFxcbiAgKiBcXFwic3VibWl0dGVkXFxcIiBieSB0aGUgcmVjZWl2ZXJcXG4gICovXFxuLXN0YXRpYyB2b2lkIGRyYmRfZW5kaW9fcmVhZF9zZWNfZmluYWwoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSkgX19yZWxlYXNlcyhsb2NhbClcXG4rc3RhdGljIHZvaWQgZHJiZF9lbmRpb19yZWFkX3NlY19maW5hbChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKVxcbiB7XFxuIFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwO1xcbiBcXHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UgPSBwZWVyX3JlcS1cXHUwMDNlcGVlcl9kZXZpY2U7XFxuQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIHZvaWQgZHJiZF9lbmRpb19yZWFkX3NlY19maW5hbChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKSBfX3JlbGVcXG4gXFxuIC8qIHdyaXRlcyBvbiBiZWhhbGYgb2YgdGhlIHBhcnRuZXIsIG9yIHJlc3luYyB3cml0ZXMsXFxuICAqIFxcXCJzdWJtaXR0ZWRcXFwiIGJ5IHRoZSByZWNlaXZlciwgZmluYWwgc3RhZ2UuICAqL1xcbi12b2lkIGRyYmRfZW5kaW9fd3JpdGVfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpIF9fcmVsZWFzZXMobG9jYWwpXFxuK3ZvaWQgZHJiZF9lbmRpb193cml0ZV9zZWNfZmluYWwoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSlcXG4ge1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzID0gMDtcXG4gXFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlID0gcGVlcl9yZXEtXFx1MDAzZXBlZXJfZGV2aWNlO1xcbkBAIC0xOTIzLDEwICsxOTIzLDggQEAgc3RhdGljIHZvaWQgZHJiZF9sZGV2X2Rlc3Ryb3koc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXFxuIFxcdGxjX2Rlc3Ryb3koZGV2aWNlLVxcdTAwM2VhY3RfbG9nKTtcXG4gXFx0ZGV2aWNlLVxcdTAwM2VhY3RfbG9nID0gTlVMTDtcXG4gXFxuLVxcdF9fYWNxdWlyZShsb2NhbCk7XFxuIFxcdGRyYmRfYmFja2luZ19kZXZfZnJlZShkZXZpY2UsIGRldmljZS1cXHUwMDNlbGRldik7XFxuIFxcdGRldmljZS1cXHUwMDNlbGRldiA9IE5VTEw7XFxuLVxcdF9fcmVsZWFzZShsb2NhbCk7XFxuIFxcbiBcXHRjbGVhcl9iaXQoR09JTkdfRElTS0xFU1MsIFxcdTAwMjZkZXZpY2UtXFx1MDAzZWZsYWdzKTtcXG4gXFx0d2FrZV91cChcXHUwMDI2ZGV2aWNlLVxcdTAwM2VtaXNjX3dhaXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxOTo0OTo0My4zNjM5NzI5NzFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNjExMTg2MDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIGxhcmdlIHJlZmFjdG9yaW5nIGFpbWVkIGF0IGZpeGluZyBzcGFyc2Ugd2FybmluZ3MuIEl0IHJlbW92ZXMgYGV4dGVybmAgZnJvbSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW4gaGVhZGVycywgcmVtb3ZlcyBjdXN0b20gc3BhcnNlIGFubm90YXRpb25zIGxpa2UgYF9fbXVzdF9ob2xkKGxvY2FsKWAsIGBfX2FjcXVpcmUobG9jYWwpYCwgYF9fcmVsZWFzZShsb2NhbClgLCBhbmQgcmVmYWN0b3JzIGNvZGUgdG8gYXZvaWQgY29uZGl0aW9uYWwgbG9ja2luZyAoZS5nLiBgZHJiZF9yZXFfc3RhdGVgKS4gSXQgYWxzbyByZW1vdmVzIGEgZmV3IGRlZmVuc2l2ZSBOVUxMIGNoZWNrcyBhbmQgYSB3YXJuaW5nIG9uIGxvY2sgY29udGVudGlvbiBpbiBgZHJiZF9ibV9sb2NrYC4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29yZSBsb2dpYyB0aGF0IHdvdWxkIHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDViYjRhODBkYzk1MzhkOTNjYzlmOTVlZTUxNzQ4NzBiMDBjZGFkMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDEwIDE5OjQ5OjQxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL01ha2VmaWxlIGIvZHJpdmVycy9ibG9jay9kcmJkL01ha2VmaWxlXG5pbmRleCA1ZmFhYThhOGU3ZjAyOS4uY2FlNjU1NzgwMDFiYzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvTWFrZWZpbGVcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9NYWtlZmlsZVxuQEAgLTEsNCArMSw3IEBAXG4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4rXG4rQ09OVEVYVF9BTkFMWVNJUyA6PSB5XG4rXG4gZHJiZC15IDo9IGRyYmRfYnVpbGR0YWcubyBkcmJkX2JpdG1hcC5vIGRyYmRfcHJvYy5vXG4gZHJiZC15ICs9IGRyYmRfd29ya2VyLm8gZHJiZF9yZWNlaXZlci5vIGRyYmRfcmVxLm8gZHJiZF9hY3Rsb2cub1xuIGRyYmQteSArPSBkcmJkX21haW4ubyBkcmJkX3N0cmluZ3MubyBkcmJkX25sLm9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9iaXRtYXAuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2JpdG1hcC5jXG5pbmRleCA2NWVhNmVjNjZiZmQ1Yy4uZDg0OWJkNzgwY2E5NjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9iaXRtYXAuY1xuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYml0bWFwLmNcbkBAIC0xMjIsMjQgKzEyMiwxMyBAQCBzdGF0aWMgdm9pZCBfX2JtX3ByaW50X2xvY2tfaW5mbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqZnVuYylcbiB9XG4gXG4gdm9pZCBkcmJkX2JtX2xvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNoYXIgKndoeSwgZW51bSBibV9mbGFnIGZsYWdzKVxuK1x0X19hY3F1aXJlcyhkcmJkX2Rldl9ibV9sb2NrKVxuK1x0X19hY3F1aXJlcyhcdTAwMjZkZXZpY2UtXHUwMDNlYml0bWFwLVx1MDAzZWJtX2NoYW5nZSlcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9iaXRtYXAgKmIgPSBkZXZpY2UtXHUwMDNlYml0bWFwO1xuLVx0aW50IHRyeWxvY2tfZmFpbGVkO1xuIFxuLVx0aWYgKCFiKSB7XG4tXHRcdGRyYmRfZXJyKGRldmljZSwgXCJGSVhNRSBubyBiaXRtYXAgaW4gZHJiZF9ibV9sb2NrIT9cXG5cIik7XG4tXHRcdHJldHVybjtcbi1cdH1cbi1cbi1cdHRyeWxvY2tfZmFpbGVkID0gIW11dGV4X3RyeWxvY2soXHUwMDI2Yi1cdTAwM2VibV9jaGFuZ2UpO1xuLVxuLVx0aWYgKHRyeWxvY2tfZmFpbGVkKSB7XG4tXHRcdGRyYmRfd2FybihkZXZpY2UsIFwiJXNbJWRdIGdvaW5nIHRvICclcycgYnV0IGJpdG1hcCBhbHJlYWR5IGxvY2tlZCBmb3IgJyVzJyBieSAlc1slZF1cXG5cIixcbi1cdFx0XHQgIGN1cnJlbnQtXHUwMDNlY29tbSwgdGFza19waWRfbnIoY3VycmVudCksXG4tXHRcdFx0ICB3aHksIGItXHUwMDNlYm1fd2h5ID86IFwiP1wiLFxuLVx0XHRcdCAgYi1cdTAwM2VibV90YXNrLVx1MDAzZWNvbW0sIHRhc2tfcGlkX25yKGItXHUwMDNlYm1fdGFzaykpO1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNmItXHUwMDNlYm1fY2hhbmdlKTtcbi1cdH1cbitcdF9fYWNxdWlyZShkcmJkX2Rldl9ibV9sb2NrKTtcbitcdG11dGV4X2xvY2soXHUwMDI2Yi1cdTAwM2VibV9jaGFuZ2UpO1xuIFx0aWYgKEJNX0xPQ0tFRF9NQVNLIFx1MDAyNiBiLVx1MDAzZWJtX2ZsYWdzKVxuIFx0XHRkcmJkX2VycihkZXZpY2UsIFwiRklYTUUgYml0bWFwIGFscmVhZHkgbG9ja2VkIGluIGJtX2xvY2tcXG5cIik7XG4gXHRiLVx1MDAzZWJtX2ZsYWdzIHw9IGZsYWdzIFx1MDAyNiBCTV9MT0NLRURfTUFTSztcbkBAIC0xNDksMTIgKzEzOCwxMCBAQCB2b2lkIGRyYmRfYm1fbG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MpXG4gfVxuIFxuIHZvaWQgZHJiZF9ibV91bmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXG4rXHRfX3JlbGVhc2VzKGRyYmRfZGV2X2JtX2xvY2spXG4rXHRfX3JlbGVhc2VzKFx1MDAyNmRldmljZS1cdTAwM2ViaXRtYXAtXHUwMDNlYm1fY2hhbmdlKVxuIHtcbiBcdHN0cnVjdCBkcmJkX2JpdG1hcCAqYiA9IGRldmljZS1cdTAwM2ViaXRtYXA7XG4tXHRpZiAoIWIpIHtcbi1cdFx0ZHJiZF9lcnIoZGV2aWNlLCBcIkZJWE1FIG5vIGJpdG1hcCBpbiBkcmJkX2JtX3VubG9jayE/XFxuXCIpO1xuLVx0XHRyZXR1cm47XG4tXHR9XG4gXG4gXHRpZiAoIShCTV9MT0NLRURfTUFTSyBcdTAwMjYgZGV2aWNlLVx1MDAzZWJpdG1hcC1cdTAwM2VibV9mbGFncykpXG4gXHRcdGRyYmRfZXJyKGRldmljZSwgXCJGSVhNRSBiaXRtYXAgbm90IGxvY2tlZCBpbiBibV91bmxvY2tcXG5cIik7XG5AQCAtMTYzLDYgKzE1MCw3IEBAIHZvaWQgZHJiZF9ibV91bmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXG4gXHRiLVx1MDAzZWJtX3doeSAgPSBOVUxMO1xuIFx0Yi1cdTAwM2VibV90YXNrID0gTlVMTDtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZiLVx1MDAzZWJtX2NoYW5nZSk7XG4rXHRfX3JlbGVhc2UoZHJiZF9kZXZfYm1fbG9jayk7XG4gfVxuIFxuIC8qIHdlIHN0b3JlIHNvbWUgXCJtZXRhXCIgaW5mbyBhYm91dCBvdXIgcGFnZXMgaW4gcGFnZS1cdTAwM2Vwcml2YXRlICovXG5AQCAtOTg3LDcgKzk3NSw3IEBAIHN0YXRpYyBpbmxpbmUgc2VjdG9yX3QgZHJiZF9tZF9sYXN0X2JpdG1hcF9zZWN0b3Ioc3RydWN0IGRyYmRfYmFja2luZ19kZXYgKmJkZXYpXG4gXHR9XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGJtX3BhZ2VfaW9fYXN5bmMoc3RydWN0IGRyYmRfYm1fYWlvX2N0eCAqY3R4LCBpbnQgcGFnZV9ucikgX19tdXN0X2hvbGQobG9jYWwpXG4rc3RhdGljIHZvaWQgYm1fcGFnZV9pb19hc3luYyhzdHJ1Y3QgZHJiZF9ibV9haW9fY3R4ICpjdHgsIGludCBwYWdlX25yKVxuIHtcbiBcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gY3R4LVx1MDAzZWRldmljZTtcbiBcdGVudW0gcmVxX29wIG9wID0gY3R4LVx1MDAzZWZsYWdzIFx1MDAyNiBCTV9BSU9fUkVBRCA/IFJFUV9PUF9SRUFEIDogUkVRX09QX1dSSVRFO1xuQEAgLTEwNjAsNyArMTA0OCw4IEBAIHN0YXRpYyB2b2lkIGJtX3BhZ2VfaW9fYXN5bmMoc3RydWN0IGRyYmRfYm1fYWlvX2N0eCAqY3R4LCBpbnQgcGFnZV9ucikgX19tdXN0X2hvXG4gLypcbiAgKiBibV9ydzogcmVhZC93cml0ZSB0aGUgd2hvbGUgYml0bWFwIGZyb20vdG8gaXRzIG9uIGRpc2sgbG9jYXRpb24uXG4gICovXG4tc3RhdGljIGludCBibV9ydyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgdW5zaWduZWQgaW50IGZsYWdzLCB1bnNpZ25lZCBsYXp5X3dyaXRlb3V0X3VwcGVyX2lkeCkgX19tdXN0X2hvbGQobG9jYWwpXG4rc3RhdGljIGludCBibV9ydyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgdW5zaWduZWQgaW50IGZsYWdzLFxuK1x0XHQgdW5zaWduZWQgbGF6eV93cml0ZW91dF91cHBlcl9pZHgpXG4ge1xuIFx0c3RydWN0IGRyYmRfYm1fYWlvX2N0eCAqY3R4O1xuIFx0c3RydWN0IGRyYmRfYml0bWFwICpiID0gZGV2aWNlLVx1MDAzZWJpdG1hcDtcbkBAIC0xMjE1LDcgKzEyMDQsNyBAQCBzdGF0aWMgaW50IGJtX3J3KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCB1bnNpZ25lZCBpbnQgZmxhZ3MsIHVuc2lnbmVkXG4gICogQGRldmljZTpcdERSQkQgZGV2aWNlLlxuICAqL1xuIGludCBkcmJkX2JtX3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxuK1x0XHQgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxuIFxuIHtcbiBcdHJldHVybiBibV9ydyhkZXZpY2UsIEJNX0FJT19SRUFELCAwKTtcbkBAIC0xMjI4LDcgKzEyMTcsNyBAQCBpbnQgZHJiZF9ibV9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuICAqIFdpbGwgb25seSB3cml0ZSBwYWdlcyB0aGF0IGhhdmUgY2hhbmdlZCBzaW5jZSBsYXN0IElPLlxuICAqL1xuIGludCBkcmJkX2JtX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHQgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbitcdFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXG4ge1xuIFx0cmV0dXJuIGJtX3J3KGRldmljZSwgMCwgMCk7XG4gfVxuQEAgLTEyNDAsNyArMTIyOSw3IEBAIGludCBkcmJkX2JtX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuICAqIFdpbGwgd3JpdGUgYWxsIHBhZ2VzLlxuICAqL1xuIGludCBkcmJkX2JtX3dyaXRlX2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbitcdFx0ICAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxuIHtcbiBcdHJldHVybiBibV9ydyhkZXZpY2UsIEJNX0FJT19XUklURV9BTExfUEFHRVMsIDApO1xuIH1cbkBAIC0xMjUwLDcgKzEyMzksNyBAQCBpbnQgZHJiZF9ibV93cml0ZV9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4gICogQGRldmljZTpcdERSQkQgZGV2aWNlLlxuICAqIEB1cHBlcl9pZHg6XHQwOiB3cml0ZSBhbGwgY2hhbmdlZCBwYWdlczsgK3ZlOiBwYWdlIGluZGV4IHRvIHN0b3Agc2Nhbm5pbmcgZm9yIGNoYW5nZWQgcGFnZXNcbiAgKi9cbi1pbnQgZHJiZF9ibV93cml0ZV9sYXp5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCB1cHBlcl9pZHgpIF9fbXVzdF9ob2xkKGxvY2FsKVxuK2ludCBkcmJkX2JtX3dyaXRlX2xhenkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIHVwcGVyX2lkeClcbiB7XG4gXHRyZXR1cm4gYm1fcncoZGV2aWNlLCBCTV9BSU9fQ09QWV9QQUdFUywgdXBwZXJfaWR4KTtcbiB9XG5AQCAtMTI2Nyw3ICsxMjU2LDcgQEAgaW50IGRyYmRfYm1fd3JpdGVfbGF6eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgdXBwZXJfaWR4KSBfX211c3RfaG9cbiAgKiBwZW5kaW5nIHJlc3luYyBhY2tzIGFyZSBzdGlsbCBiZWluZyBwcm9jZXNzZWQuXG4gICovXG4gaW50IGRyYmRfYm1fd3JpdGVfY29weV9wYWdlcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbitcdFx0XHQgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcbiB7XG4gXHRyZXR1cm4gYm1fcncoZGV2aWNlLCBCTV9BSU9fQ09QWV9QQUdFUywgMCk7XG4gfVxuQEAgLTEyNzYsNyArMTI2NSw3IEBAIGludCBkcmJkX2JtX3dyaXRlX2NvcHlfcGFnZXMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4gICogZHJiZF9ibV93cml0ZV9oaW50ZWQoKSAtIFdyaXRlIGJpdG1hcCBwYWdlcyB3aXRoIFwiaGludFwiIG1hcmtzLCBpZiB0aGV5IGhhdmUgY2hhbmdlZC5cbiAgKiBAZGV2aWNlOlx0RFJCRCBkZXZpY2UuXG4gICovXG4taW50IGRyYmRfYm1fd3JpdGVfaGludGVkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbitpbnQgZHJiZF9ibV93cml0ZV9oaW50ZWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXG4ge1xuIFx0cmV0dXJuIGJtX3J3KGRldmljZSwgQk1fQUlPX1dSSVRFX0hJTlRFRCB8IEJNX0FJT19DT1BZX1BBR0VTLCAwKTtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfY29uZmlnLmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9jb25maWcuaFxuaW5kZXggZDIxNTM2NWM2YmIxYjAuLjE2YTk4NWIzMGRkM2ZmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfY29uZmlnLmhcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2NvbmZpZy5oXG5AQCAtNyw3ICs3LDcgQEBcbiAjaWZuZGVmIERSQkRfQ09ORklHX0hcbiAjZGVmaW5lIERSQkRfQ09ORklHX0hcbiBcbi1leHRlcm4gY29uc3QgY2hhciAqZHJiZF9idWlsZHRhZyh2b2lkKTtcbitjb25zdCBjaGFyICpkcmJkX2J1aWxkdGFnKHZvaWQpO1xuIFxuICNkZWZpbmUgUkVMX1ZFUlNJT04gXCI4LjQuMTFcIlxuICNkZWZpbmUgUFJPX1ZFUlNJT05fTUlOIDg2XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50LmggYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9pbnQuaFxuaW5kZXggNDhiNDVjMzE0MmY3NmEuLjczY2VhYWIzODQyZDBlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50LmhcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2ludC5oXG5AQCAtMTA5LDcgKzEwOSw3IEBAIGV4dGVybiBzdHJ1Y3QgcmF0ZWxpbWl0X3N0YXRlIGRyYmRfcmF0ZWxpbWl0X3N0YXRlO1xuIGV4dGVybiBzdHJ1Y3QgaWRyIGRyYmRfZGV2aWNlczsgLyogUkNVLCB1cGRhdGVzOiBnZW5sX2xvY2soKSAqL1xuIGV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGRyYmRfcmVzb3VyY2VzOyAvKiBSQ1UsIHVwZGF0ZXM6IGdlbmxfbG9jaygpICovXG4gXG4tZXh0ZXJuIGNvbnN0IGNoYXIgKmNtZG5hbWUoZW51bSBkcmJkX3BhY2tldCBjbWQpO1xuK2NvbnN0IGNoYXIgKmNtZG5hbWUoZW51bSBkcmJkX3BhY2tldCBjbWQpO1xuIFxuIC8qIGZvciBzZW5kaW5nL3JlY2VpdmluZyB0aGUgYml0bWFwLFxuICAqIHBvc3NpYmx5IGluIHNvbWUgZW5jb2Rpbmcgc2NoZW1lICovXG5AQCAtMTI5LDggKzEyOSw4IEBAIHN0cnVjdCBibV94ZmVyX2N0eCB7XG4gXHR1bnNpZ25lZCBieXRlc1syXTtcbiB9O1xuIFxuLWV4dGVybiB2b2lkIElORk9fYm1feGZlcl9zdGF0cyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsXG4tXHRcdFx0ICAgICAgIGNvbnN0IGNoYXIgKmRpcmVjdGlvbiwgc3RydWN0IGJtX3hmZXJfY3R4ICpjKTtcbit2b2lkIElORk9fYm1feGZlcl9zdGF0cyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsXG4rXHRcdFx0Y29uc3QgY2hhciAqZGlyZWN0aW9uLCBzdHJ1Y3QgYm1feGZlcl9jdHggKmMpO1xuIFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBibV94ZmVyX2N0eF9iaXRfdG9fd29yZF9vZmZzZXQoc3RydWN0IGJtX3hmZXJfY3R4ICpjKVxuIHtcbkBAIC0xNTEsNyArMTUxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGJtX3hmZXJfY3R4X2JpdF90b193b3JkX29mZnNldChzdHJ1Y3QgYm1feGZlcl9jdHggKmMpXG4gI2VuZGlmXG4gfVxuIFxuLWV4dGVybiB1bnNpZ25lZCBpbnQgZHJiZF9oZWFkZXJfc2l6ZShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbit1bnNpZ25lZCBpbnQgZHJiZF9oZWFkZXJfc2l6ZShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbiBcbiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiBlbnVtIGRyYmRfdGhyZWFkX3N0YXRlIHtcbkBAIC0xOTUsMTAgKzE5NSwxMCBAQCBzdHJ1Y3QgZHJiZF9kZXZpY2Vfd29yayB7XG4gXG4gI2luY2x1ZGUgXCJkcmJkX2ludGVydmFsLmhcIlxuIFxuLWV4dGVybiBpbnQgZHJiZF93YWl0X21pc2Moc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBkcmJkX2ludGVydmFsICopO1xuK2V4dGVybiBzdHJ1Y3QgbXV0ZXggcmVzb3VyY2VzX211dGV4O1xuIFxuLWV4dGVybiB2b2lkIGxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKTtcbi1leHRlcm4gdm9pZCB1bmxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKTtcbit2b2lkIGxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKSBfX2FjcXVpcmVzKFx1MDAyNnJlc291cmNlc19tdXRleCk7XG4rdm9pZCB1bmxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKSBfX3JlbGVhc2VzKFx1MDAyNnJlc291cmNlc19tdXRleCk7XG4gXG4gc3RydWN0IGRyYmRfcmVxdWVzdCB7XG4gXHRzdHJ1Y3QgZHJiZF93b3JrIHc7XG5AQCAtNTU5LDcgKzU1OSw3IEBAIHN0cnVjdCBmaWZvX2J1ZmZlciB7XG4gXHRpbnQgdG90YWw7IC8qIHN1bSBvZiBhbGwgdmFsdWVzICovXG4gXHRpbnQgdmFsdWVzW10gX19jb3VudGVkX2J5KHNpemUpO1xuIH07XG4tZXh0ZXJuIHN0cnVjdCBmaWZvX2J1ZmZlciAqZmlmb19hbGxvYyh1bnNpZ25lZCBpbnQgZmlmb19zaXplKTtcbitzdHJ1Y3QgZmlmb19idWZmZXIgKmZpZm9fYWxsb2ModW5zaWduZWQgaW50IGZpZm9fc2l6ZSk7XG4gXG4gLyogZmxhZyBiaXRzIHBlciBjb25uZWN0aW9uICovXG4gZW51bSB7XG5AQCAtOTk4LDkzICs5OTgsMTA0IEBAIGVudW0gZGRzX2ZsYWdzIHtcbiBcdEREU0ZfTk9fUkVTWU5DID0gMiwgLyogRG8gbm90IHJ1biBhIHJlc3luYyBmb3IgdGhlIG5ldyBzcGFjZSAqL1xuIH07XG4gXG4tZXh0ZXJuIHZvaWQgZHJiZF9pbml0X3NldF9kZWZhdWx0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIGludCAgZHJiZF90aHJlYWRfc3RhcnQoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xuLWV4dGVybiB2b2lkIF9kcmJkX3RocmVhZF9zdG9wKHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpLCBpbnQgcmVzdGFydCwgaW50IHdhaXQpO1xuK3ZvaWQgZHJiZF9pbml0X3NldF9kZWZhdWx0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4raW50IGRyYmRfdGhyZWFkX3N0YXJ0KHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTtcbit2b2lkIF9kcmJkX3RocmVhZF9zdG9wKHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpLCBpbnQgcmVzdGFydCwgaW50IHdhaXQpO1xuICNpZmRlZiBDT05GSUdfU01QXG4tZXh0ZXJuIHZvaWQgZHJiZF90aHJlYWRfY3VycmVudF9zZXRfY3B1KHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTtcbit2b2lkIGRyYmRfdGhyZWFkX2N1cnJlbnRfc2V0X2NwdShzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7XG4gI2Vsc2VcbiAjZGVmaW5lIGRyYmRfdGhyZWFkX2N1cnJlbnRfc2V0X2NwdShBKSAoe30pXG4gI2VuZGlmXG4tZXh0ZXJuIHZvaWQgdGxfcmVsZWFzZShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHVuc2lnbmVkIGludCBiYXJyaWVyX25yLFxuLVx0XHQgICAgICAgdW5zaWduZWQgaW50IHNldF9zaXplKTtcbi1leHRlcm4gdm9pZCB0bF9jbGVhcihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICopO1xuLWV4dGVybiB2b2lkIGRyYmRfZnJlZV9zb2NrKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHN0cnVjdCBzb2NrZXQgKnNvY2ssXG4tXHRcdCAgICAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSwgdW5zaWduZWQgbXNnX2ZsYWdzKTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9hbGwoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBzdHJ1Y3Qgc29ja2V0ICosIHZvaWQgKiwgc2l6ZV90LFxuLVx0XHRcdCB1bnNpZ25lZCk7XG4tXG4tZXh0ZXJuIGludCBfX2RyYmRfc2VuZF9wcm90b2NvbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBlbnVtIGRyYmRfcGFja2V0IGNtZCk7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfcHJvdG9jb2woc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfdXVpZHMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfdXVpZHNfc2tpcF9pbml0aWFsX3N5bmMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9nZW5fYW5kX3NlbmRfc3luY191dWlkKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kX3NpemVzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGludCB0cmlnZ2VyX3JlcGx5LCBlbnVtIGRkc19mbGFncyBmbGFncyk7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfc3RhdGUoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSBzKTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9jdXJyZW50X3N0YXRlKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kX3N5bmNfcGFyYW0oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9zZW5kX2JfYWNrKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHUzMiBiYXJyaWVyX25yLFxuLVx0XHRcdCAgICB1MzIgc2V0X3NpemUpO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kX2FjayhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuLVx0XHRcdCBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9zZW5kX2Fja19ycChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuLVx0XHRcdCAgICAgc3RydWN0IHBfYmxvY2tfcmVxICpycCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9zZW5kX2Fja19kcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuLVx0XHRcdCAgICAgc3RydWN0IHBfZGF0YSAqZHAsIGludCBkYXRhX3NpemUpO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kX2Fja19leChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuLVx0XHRcdCAgICBzZWN0b3JfdCBzZWN0b3IsIGludCBibGtzaXplLCB1NjQgYmxvY2tfaWQpO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kX291dF9vZl9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3JlcXVlc3QgKik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfYmxvY2soc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCxcbi1cdFx0XHQgICBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfZGJsb2NrKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSk7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfZHJlcXVlc3Qoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgaW50IGNtZCxcbi1cdFx0XHQgICAgICBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplLCB1NjQgYmxvY2tfaWQpO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kX2RyZXF1ZXN0X2NzdW0oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc2VjdG9yX3Qgc2VjdG9yLFxuLVx0XHRcdFx0ICAgaW50IHNpemUsIHZvaWQgKmRpZ2VzdCwgaW50IGRpZ2VzdF9zaXplLFxuLVx0XHRcdFx0ICAgZW51bSBkcmJkX3BhY2tldCBjbWQpO1xuLWV4dGVybiBpbnQgZHJiZF9zZW5kX292X3JlcXVlc3Qoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSk7XG4tXG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfYml0bWFwKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuLWV4dGVybiB2b2lkIGRyYmRfc2VuZF9zcl9yZXBseShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfc3RhdGVfcnYgcmV0Y29kZSk7XG4tZXh0ZXJuIHZvaWQgY29ubl9zZW5kX3NyX3JlcGx5KHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGVudW0gZHJiZF9zdGF0ZV9ydiByZXRjb2RlKTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9yc19kZWFsbG9jYXRlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9iYWNraW5nX2Rldl9mcmVlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqbGRldik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9kZXZpY2VfY2xlYW51cChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9wcmludF91dWlkcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqdGV4dCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9xdWV1ZV91bnBsdWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLVxuLWV4dGVybiB2b2lkIGNvbm5fbWRfc3luYyhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbi1leHRlcm4gdm9pZCBkcmJkX21kX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB2b2lkICpidWZmZXIpO1xuLWV4dGVybiB2b2lkIGRyYmRfbWRfc3luYyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIGludCAgZHJiZF9tZF9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldik7XG4tZXh0ZXJuIHZvaWQgZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpO1xuLWV4dGVybiB2b2lkIF9kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF91dWlkX25ld19jdXJyZW50KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF91dWlkX3NldF9ibShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdTY0IHZhbCkgX19tdXN0X2hvbGQobG9jYWwpO1xuLWV4dGVybiB2b2lkIGRyYmRfdXVpZF9tb3ZlX2hpc3Rvcnkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gdm9pZCBfX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gdm9pZCBkcmJkX21kX3NldF9mbGFnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgZmxhZ3MpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gdm9pZCBkcmJkX21kX2NsZWFyX2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFncylfX211c3RfaG9sZChsb2NhbCk7XG4tZXh0ZXJuIGludCBkcmJkX21kX3Rlc3RfZmxhZyhzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqLCBpbnQpO1xuLWV4dGVybiB2b2lkIGRyYmRfbWRfbWFya19kaXJ0eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9xdWV1ZV9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdFx0XHQgaW50ICgqaW9fZm4pKHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKSxcbi1cdFx0XHRcdCB2b2lkICgqZG9uZSkoc3RydWN0IGRyYmRfZGV2aWNlICosIGludCksXG4tXHRcdFx0XHQgY2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MsXG4tXHRcdFx0XHQgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcbi1leHRlcm4gaW50IGRyYmRfYml0bWFwX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopLFxuLVx0XHRjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncyxcbi1cdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcbi1leHRlcm4gaW50IGRyYmRfYml0bWFwX2lvX2Zyb21fd29ya2VyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopLFxuLVx0XHRjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncyxcbi1cdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcbi1leHRlcm4gaW50IGRyYmRfYm1pb19zZXRfbl93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7XG4tZXh0ZXJuIGludCBkcmJkX2JtaW9fY2xlYXJfbl93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7XG4rdm9pZCB0bF9yZWxlYXNlKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwgdW5zaWduZWQgaW50IGJhcnJpZXJfbnIsXG4rXHRcdHVuc2lnbmVkIGludCBzZXRfc2l6ZSk7XG4rdm9pZCB0bF9jbGVhcihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICopO1xuK3ZvaWQgZHJiZF9mcmVlX3NvY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4raW50IGRyYmRfc2VuZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxuK1x0ICAgICAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSwgdW5zaWduZWQgbXNnX2ZsYWdzKTtcbitpbnQgZHJiZF9zZW5kX2FsbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHN0cnVjdCBzb2NrZXQgKiwgdm9pZCAqLCBzaXplX3QsXG4rXHRcdCAgdW5zaWduZWQpO1xuK1xuK2ludCBfX2RyYmRfc2VuZF9wcm90b2NvbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLFxuK1x0XHRcdCBlbnVtIGRyYmRfcGFja2V0IGNtZCk7XG4raW50IGRyYmRfc2VuZF9wcm90b2NvbChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbitpbnQgZHJiZF9zZW5kX3V1aWRzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xuK2ludCBkcmJkX3NlbmRfdXVpZHNfc2tpcF9pbml0aWFsX3N5bmMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7XG4rdm9pZCBkcmJkX2dlbl9hbmRfc2VuZF9zeW5jX3V1aWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKik7XG4raW50IGRyYmRfc2VuZF9zaXplcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBpbnQgdHJpZ2dlcl9yZXBseSxcbitcdFx0ICAgIGVudW0gZGRzX2ZsYWdzIGZsYWdzKTtcbitpbnQgZHJiZF9zZW5kX3N0YXRlKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUgcyk7XG4raW50IGRyYmRfc2VuZF9jdXJyZW50X3N0YXRlKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xuK2ludCBkcmJkX3NlbmRfc3luY19wYXJhbShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcbit2b2lkIGRyYmRfc2VuZF9iX2FjayhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCB1MzIgYmFycmllcl9ucixcbitcdFx0ICAgICB1MzIgc2V0X3NpemUpO1xuK2ludCBkcmJkX3NlbmRfYWNrKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsXG4rXHRcdCAgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICopO1xuK3ZvaWQgZHJiZF9zZW5kX2Fja19ycChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuK1x0XHQgICAgICBzdHJ1Y3QgcF9ibG9ja19yZXEgKnJwKTtcbit2b2lkIGRyYmRfc2VuZF9hY2tfZHAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgZW51bSBkcmJkX3BhY2tldCxcbitcdFx0ICAgICAgc3RydWN0IHBfZGF0YSAqZHAsIGludCBkYXRhX3NpemUpO1xuK2ludCBkcmJkX3NlbmRfYWNrX2V4KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIGVudW0gZHJiZF9wYWNrZXQsXG4rXHRcdCAgICAgc2VjdG9yX3Qgc2VjdG9yLCBpbnQgYmxrc2l6ZSwgdTY0IGJsb2NrX2lkKTtcbitpbnQgZHJiZF9zZW5kX291dF9vZl9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3JlcXVlc3QgKik7XG4raW50IGRyYmRfc2VuZF9ibG9jayhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfcGFja2V0LFxuK1x0XHQgICAgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICopO1xuK2ludCBkcmJkX3NlbmRfZGJsb2NrKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSk7XG4raW50IGRyYmRfc2VuZF9kcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBpbnQgY21kLCBzZWN0b3JfdCBzZWN0b3IsXG4rXHRcdCAgICAgICBpbnQgc2l6ZSwgdTY0IGJsb2NrX2lkKTtcbitpbnQgZHJiZF9zZW5kX2RyZXF1ZXN0X2NzdW0oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc2VjdG9yX3Qgc2VjdG9yLFxuK1x0XHRcdCAgICBpbnQgc2l6ZSwgdm9pZCAqZGlnZXN0LCBpbnQgZGlnZXN0X3NpemUsXG4rXHRcdFx0ICAgIGVudW0gZHJiZF9wYWNrZXQgY21kKTtcbitpbnQgZHJiZF9zZW5kX292X3JlcXVlc3Qoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSk7XG4rXG4raW50IGRyYmRfc2VuZF9iaXRtYXAoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4rXHRcdCAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcbit2b2lkIGRyYmRfc2VuZF9zcl9yZXBseShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCBlbnVtIGRyYmRfc3RhdGVfcnYgcmV0Y29kZSk7XG4rdm9pZCBjb25uX3NlbmRfc3JfcmVwbHkoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbixcbitcdFx0XHRlbnVtIGRyYmRfc3RhdGVfcnYgcmV0Y29kZSk7XG4raW50IGRyYmRfc2VuZF9yc19kZWFsbG9jYXRlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLFxuK1x0XHRcdCAgICAgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICopO1xuK3ZvaWQgZHJiZF9iYWNraW5nX2Rldl9mcmVlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHRcdCAgIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpsZGV2KTtcbit2b2lkIGRyYmRfZGV2aWNlX2NsZWFudXAoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuK3ZvaWQgZHJiZF9wcmludF91dWlkcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqdGV4dCk7XG4rdm9pZCBkcmJkX3F1ZXVlX3VucGx1ZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4rXG4rdm9pZCBjb25uX21kX3N5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4rdm9pZCBkcmJkX21kX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB2b2lkICpidWZmZXIpO1xuK3ZvaWQgZHJiZF9tZF9zeW5jKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbitpbnQgZHJiZF9tZF9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldik7XG4rdm9pZCBkcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKTtcbit2b2lkIF9kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKTtcbit2b2lkIGRyYmRfdXVpZF9uZXdfY3VycmVudChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4rdm9pZCBkcmJkX3V1aWRfc2V0X2JtKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1NjQgdmFsKTtcbit2b2lkIGRyYmRfdXVpZF9tb3ZlX2hpc3Rvcnkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuK3ZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKTtcbit2b2lkIGRyYmRfbWRfc2V0X2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFncyk7XG4rdm9pZCBkcmJkX21kX2NsZWFyX2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFncyk7XG4raW50IGRyYmRfbWRfdGVzdF9mbGFnKHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICosIGludCk7XG4rdm9pZCBkcmJkX21kX21hcmtfZGlydHkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuK3ZvaWQgZHJiZF9xdWV1ZV9iaXRtYXBfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4rXHRcdFx0ICBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosXG4rXHRcdFx0XHQgICAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiksXG4rXHRcdFx0ICB2b2lkICgqZG9uZSkoc3RydWN0IGRyYmRfZGV2aWNlICosIGludCksIGNoYXIgKndoeSxcbitcdFx0XHQgIGVudW0gYm1fZmxhZyBmbGFncyxcbitcdFx0XHQgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4raW50IGRyYmRfYml0bWFwX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHQgICBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosXG4rXHRcdFx0XHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKSxcbitcdFx0ICAgY2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MsXG4rXHRcdCAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4raW50IGRyYmRfYml0bWFwX2lvX2Zyb21fd29ya2VyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHRcdCAgICAgICBpbnQgKCppb19mbikoc3RydWN0IGRyYmRfZGV2aWNlICosXG4rXHRcdFx0XHRcdCAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKSxcbitcdFx0XHQgICAgICAgY2hhciAqd2h5LCBlbnVtIGJtX2ZsYWcgZmxhZ3MsXG4rXHRcdFx0ICAgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4raW50IGRyYmRfYm1pb19zZXRfbl93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbitcdFx0XHQgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4raW50IGRyYmRfYm1pb19jbGVhcl9uX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHRcdCAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuK2ludCBkcmJkX3dhaXRfbWlzYyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpXG4rXHRfX211c3RfaG9sZChcdTAwMjZkZXZpY2UtXHUwMDNlcmVzb3VyY2UtXHUwMDNlcmVxX2xvY2spO1xuIFxuIC8qIE1ldGEgZGF0YSBsYXlvdXRcbiAgKlxuQEAgLTEyNzUsNTYgKzEyODYsNjQgQEAgc3RydWN0IGJtX2V4dGVudCB7XG4gI2RlZmluZSBEUkJEX01BWF9CQVRDSF9CSU9fU0laRVx0IChBTF9VUERBVEVTX1BFUl9UUkFOU0FDVElPTi8yKkFMX0VYVEVOVF9TSVpFKVxuICNkZWZpbmUgRFJCRF9NQVhfQkJJT19TRUNUT1JTICAgIChEUkJEX01BWF9CQVRDSF9CSU9fU0laRSBcdTAwM2VcdTAwM2UgOSlcbiBcbi1leHRlcm4gaW50ICBkcmJkX2JtX2luaXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiBpbnQgIGRyYmRfYm1fcmVzaXplKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3JzLCBpbnQgc2V0X25ld19iaXRzKTtcbi1leHRlcm4gdm9pZCBkcmJkX2JtX2NsZWFudXAoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiB2b2lkIGRyYmRfYm1fc2V0X2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV9jbGVhcl9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuK2ludCBkcmJkX2JtX2luaXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuK2ludCBkcmJkX2JtX3Jlc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VjdG9ycyxcbitcdFx0ICAgaW50IHNldF9uZXdfYml0cyk7XG4rdm9pZCBkcmJkX2JtX2NsZWFudXAoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuK3ZvaWQgZHJiZF9ibV9zZXRfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbit2b2lkIGRyYmRfYm1fY2xlYXJfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbiAvKiBzZXQvY2xlYXIvdGVzdCBvbmx5IGEgZmV3IGJpdHMgYXQgYSB0aW1lICovXG4tZXh0ZXJuIGludCAgZHJiZF9ibV9zZXRfYml0cyhcbi1cdFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIGxvbmcgcywgdW5zaWduZWQgbG9uZyBlKTtcbi1leHRlcm4gaW50ICBkcmJkX2JtX2NsZWFyX2JpdHMoXG4tXHRcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIHMsIHVuc2lnbmVkIGxvbmcgZSk7XG4tZXh0ZXJuIGludCBkcmJkX2JtX2NvdW50X2JpdHMoXG4tXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY29uc3QgdW5zaWduZWQgbG9uZyBzLCBjb25zdCB1bnNpZ25lZCBsb25nIGUpO1xuK2ludCBkcmJkX2JtX3NldF9iaXRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIHMsXG4rXHRcdCAgICAgdW5zaWduZWQgbG9uZyBlKTtcbitpbnQgZHJiZF9ibV9jbGVhcl9iaXRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIHMsXG4rXHRcdCAgICAgICB1bnNpZ25lZCBsb25nIGUpO1xuK2ludCBkcmJkX2JtX2NvdW50X2JpdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IHVuc2lnbmVkIGxvbmcgcyxcbitcdFx0ICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgZSk7XG4gLyogYm1fc2V0X2JpdHMgdmFyaWFudCBmb3IgdXNlIHdoaWxlIGhvbGRpbmcgZHJiZF9ibV9sb2NrLFxuICAqIG1heSBwcm9jZXNzIHRoZSB3aG9sZSBiaXRtYXAgaW4gb25lIGdvICovXG4tZXh0ZXJuIHZvaWQgX2RyYmRfYm1fc2V0X2JpdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdGNvbnN0IHVuc2lnbmVkIGxvbmcgcywgY29uc3QgdW5zaWduZWQgbG9uZyBlKTtcbi1leHRlcm4gaW50ICBkcmJkX2JtX3Rlc3RfYml0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGJpdG5yKTtcbi1leHRlcm4gaW50ICBkcmJkX2JtX2Vfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGVucik7XG4tZXh0ZXJuIGludCAgZHJiZF9ibV9yZWFkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gdm9pZCBkcmJkX2JtX21hcmtfZm9yX3dyaXRlb3V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgcGFnZV9ucik7XG4tZXh0ZXJuIGludCAgZHJiZF9ibV93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV9yZXNldF9hbF9oaW50cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpO1xuLWV4dGVybiBpbnQgIGRyYmRfYm1fd3JpdGVfaGludGVkKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbCk7XG4tZXh0ZXJuIGludCAgZHJiZF9ibV93cml0ZV9sYXp5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCB1cHBlcl9pZHgpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gaW50IGRyYmRfYm1fd3JpdGVfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gaW50ICBkcmJkX2JtX3dyaXRlX2NvcHlfcGFnZXMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpO1xuLWV4dGVybiBzaXplX3RcdCAgICAgZHJiZF9ibV93b3JkcyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZHJiZF9ibV9iaXRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gc2VjdG9yX3QgICAgICBkcmJkX2JtX2NhcGFjaXR5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbit2b2lkIF9kcmJkX2JtX3NldF9iaXRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCB1bnNpZ25lZCBsb25nIHMsXG4rXHRcdCAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGUpO1xuK2ludCBkcmJkX2JtX3Rlc3RfYml0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGJpdG5yKTtcbitpbnQgZHJiZF9ibV9lX3dlaWdodChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBlbnIpO1xuK2ludCBkcmJkX2JtX3JlYWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4rXHRcdCBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuK3ZvaWQgZHJiZF9ibV9tYXJrX2Zvcl93cml0ZW91dChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IHBhZ2VfbnIpO1xuK2ludCBkcmJkX2JtX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHQgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4rdm9pZCBkcmJkX2JtX3Jlc2V0X2FsX2hpbnRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbitpbnQgZHJiZF9ibV93cml0ZV9oaW50ZWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuK2ludCBkcmJkX2JtX3dyaXRlX2xhenkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHVuc2lnbmVkIHVwcGVyX2lkeCk7XG4raW50IGRyYmRfYm1fd3JpdGVfYWxsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHQgICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuK2ludCBkcmJkX2JtX3dyaXRlX2NvcHlfcGFnZXMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4rXHRcdFx0ICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpO1xuK3NpemVfdCBkcmJkX2JtX3dvcmRzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbit1bnNpZ25lZCBsb25nIGRyYmRfYm1fYml0cyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4rc2VjdG9yX3QgZHJiZF9ibV9jYXBhY2l0eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4gXG4gI2RlZmluZSBEUkJEX0VORF9PRl9CSVRNQVBcdCh+KHVuc2lnbmVkIGxvbmcpMClcbi1leHRlcm4gdW5zaWduZWQgbG9uZyBkcmJkX2JtX2ZpbmRfbmV4dChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBibV9mbyk7XG4rdW5zaWduZWQgbG9uZyBkcmJkX2JtX2ZpbmRfbmV4dChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbitcdFx0XHRcdHVuc2lnbmVkIGxvbmcgYm1fZm8pO1xuIC8qIGJtX2ZpbmRfbmV4dCB2YXJpYW50cyBmb3IgdXNlIHdoaWxlIHlvdSBob2xkIGRyYmRfYm1fbG9jaygpICovXG4tZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX2RyYmRfYm1fZmluZF9uZXh0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bnNpZ25lZCBsb25nIGJtX2ZvKTtcbi1leHRlcm4gdW5zaWduZWQgbG9uZyBfZHJiZF9ibV9maW5kX25leHRfemVybyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5zaWduZWQgbG9uZyBibV9mbyk7XG4tZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX2RyYmRfYm1fdG90YWxfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gdW5zaWduZWQgbG9uZyBkcmJkX2JtX3RvdGFsX3dlaWdodChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4rdW5zaWduZWQgbG9uZyBfZHJiZF9ibV9maW5kX25leHQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4rXHRcdFx0XHQgdW5zaWduZWQgbG9uZyBibV9mbyk7XG4rdW5zaWduZWQgbG9uZyBfZHJiZF9ibV9maW5kX25leHRfemVybyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbitcdFx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgYm1fZm8pO1xuK3Vuc2lnbmVkIGxvbmcgX2RyYmRfYm1fdG90YWxfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbit1bnNpZ25lZCBsb25nIGRyYmRfYm1fdG90YWxfd2VpZ2h0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbiAvKiBmb3IgcmVjZWl2ZV9iaXRtYXAgKi9cbi1leHRlcm4gdm9pZCBkcmJkX2JtX21lcmdlX2xlbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2l6ZV90IG9mZnNldCxcbi1cdFx0c2l6ZV90IG51bWJlciwgdW5zaWduZWQgbG9uZyAqYnVmZmVyKTtcbit2b2lkIGRyYmRfYm1fbWVyZ2VfbGVsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbnVtYmVyLFxuK1x0XHQgICAgICAgdW5zaWduZWQgbG9uZyAqYnVmZmVyKTtcbiAvKiBmb3IgX2RyYmRfc2VuZF9iaXRtYXAgKi9cbi1leHRlcm4gdm9pZCBkcmJkX2JtX2dldF9sZWwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNpemVfdCBvZmZzZXQsXG4tXHRcdHNpemVfdCBudW1iZXIsIHVuc2lnbmVkIGxvbmcgKmJ1ZmZlcik7XG4rdm9pZCBkcmJkX2JtX2dldF9sZWwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBudW1iZXIsXG4rXHRcdCAgICAgdW5zaWduZWQgbG9uZyAqYnVmZmVyKTtcbitcbit0b2tlbl9jb250ZXh0X2xvY2soZHJiZF9kZXZfYm1fbG9jayk7XG4gXG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV9sb2NrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncyk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9ibV91bmxvY2soc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuK3ZvaWQgZHJiZF9ibV9sb2NrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjaGFyICp3aHksIGVudW0gYm1fZmxhZyBmbGFncylcbitcdF9fYWNxdWlyZXMoZHJiZF9kZXZfYm1fbG9jayk7XG4rdm9pZCBkcmJkX2JtX3VubG9jayhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbitcdF9fcmVsZWFzZXMoZHJiZF9kZXZfYm1fbG9jayk7XG4gLyogZHJiZF9tYWluLmMgKi9cbiBcbiBleHRlcm4gc3RydWN0IGttZW1fY2FjaGUgKmRyYmRfcmVxdWVzdF9jYWNoZTtcbkBAIC0xMzUwLDM3ICsxMzY5LDM5IEBAIGV4dGVybiBzdHJ1Y3QgYmlvX3NldCBkcmJkX21kX2lvX2Jpb19zZXQ7XG4gLyogQW5kIGEgYmlvX3NldCBmb3IgY2xvbmluZyAqL1xuIGV4dGVybiBzdHJ1Y3QgYmlvX3NldCBkcmJkX2lvX2Jpb19zZXQ7XG4gXG4tZXh0ZXJuIHN0cnVjdCBtdXRleCByZXNvdXJjZXNfbXV0ZXg7XG4tXG4tZXh0ZXJuIGVudW0gZHJiZF9yZXRfY29kZSBkcmJkX2NyZWF0ZV9kZXZpY2Uoc3RydWN0IGRyYmRfY29uZmlnX2NvbnRleHQgKmFkbV9jdHgsIHVuc2lnbmVkIGludCBtaW5vcik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9kZXN0cm95X2RldmljZShzdHJ1Y3Qga3JlZiAqa3JlZik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9kZWxldGVfZGV2aWNlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1cbi1leHRlcm4gc3RydWN0IGRyYmRfcmVzb3VyY2UgKmRyYmRfY3JlYXRlX3Jlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUpO1xuLWV4dGVybiB2b2lkIGRyYmRfZnJlZV9yZXNvdXJjZShzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UpO1xuLVxuLWV4dGVybiBpbnQgc2V0X3Jlc291cmNlX29wdGlvbnMoc3RydWN0IGRyYmRfcmVzb3VyY2UgKnJlc291cmNlLCBzdHJ1Y3QgcmVzX29wdHMgKnJlc19vcHRzKTtcbi1leHRlcm4gc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubl9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHJlc19vcHRzICpyZXNfb3B0cyk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9kZXN0cm95X2Nvbm5lY3Rpb24oc3RydWN0IGtyZWYgKmtyZWYpO1xuLWV4dGVybiBzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uX2dldF9ieV9hZGRycyh2b2lkICpteV9hZGRyLCBpbnQgbXlfYWRkcl9sZW4sXG4tXHRcdFx0XHRcdCAgICB2b2lkICpwZWVyX2FkZHIsIGludCBwZWVyX2FkZHJfbGVuKTtcbi1leHRlcm4gc3RydWN0IGRyYmRfcmVzb3VyY2UgKmRyYmRfZmluZF9yZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKTtcbi1leHRlcm4gdm9pZCBkcmJkX2Rlc3Ryb3lfcmVzb3VyY2Uoc3RydWN0IGtyZWYgKmtyZWYpO1xuLWV4dGVybiB2b2lkIGNvbm5fZnJlZV9jcnlwdG8oc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4rZW51bSBkcmJkX3JldF9jb2RlIGRyYmRfY3JlYXRlX2RldmljZShzdHJ1Y3QgZHJiZF9jb25maWdfY29udGV4dCAqYWRtX2N0eCxcbitcdFx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBtaW5vcik7XG4rdm9pZCBkcmJkX2Rlc3Ryb3lfZGV2aWNlKHN0cnVjdCBrcmVmICprcmVmKTtcbit2b2lkIGRyYmRfZGVsZXRlX2RldmljZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4rXG4rc3RydWN0IGRyYmRfcmVzb3VyY2UgKmRyYmRfY3JlYXRlX3Jlc291cmNlKGNvbnN0IGNoYXIgKm5hbWUpO1xuK3ZvaWQgZHJiZF9mcmVlX3Jlc291cmNlKHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSk7XG4rXG4raW50IHNldF9yZXNvdXJjZV9vcHRpb25zKHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZSxcbitcdFx0XHQgc3RydWN0IHJlc19vcHRzICpyZXNfb3B0cyk7XG4rc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubl9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSxcbitcdFx0XHRcdCAgICBzdHJ1Y3QgcmVzX29wdHMgKnJlc19vcHRzKTtcbit2b2lkIGRyYmRfZGVzdHJveV9jb25uZWN0aW9uKHN0cnVjdCBrcmVmICprcmVmKTtcbitzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uX2dldF9ieV9hZGRycyh2b2lkICpteV9hZGRyLCBpbnQgbXlfYWRkcl9sZW4sXG4rXHRcdFx0XHRcdCAgdm9pZCAqcGVlcl9hZGRyLCBpbnQgcGVlcl9hZGRyX2xlbik7XG4rc3RydWN0IGRyYmRfcmVzb3VyY2UgKmRyYmRfZmluZF9yZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKTtcbit2b2lkIGRyYmRfZGVzdHJveV9yZXNvdXJjZShzdHJ1Y3Qga3JlZiAqa3JlZik7XG4rdm9pZCBjb25uX2ZyZWVfY3J5cHRvKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xuIFxuIC8qIGRyYmRfcmVxICovXG4tZXh0ZXJuIHZvaWQgZG9fc3VibWl0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd3MpO1xuLWV4dGVybiB2b2lkIF9fZHJiZF9tYWtlX3JlcXVlc3Qoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBiaW8gKik7XG4rdm9pZCBkb19zdWJtaXQoc3RydWN0IHdvcmtfc3RydWN0ICp3cyk7XG4rdm9pZCBfX2RyYmRfbWFrZV9yZXF1ZXN0KHN0cnVjdCBkcmJkX2RldmljZSAqLCBzdHJ1Y3QgYmlvICopO1xuIHZvaWQgZHJiZF9zdWJtaXRfYmlvKHN0cnVjdCBiaW8gKmJpbyk7XG4gXG4gLyogZHJiZF9ubC5jICovXG4gXG4gZXh0ZXJuIHN0cnVjdCBtdXRleCBub3RpZmljYXRpb25fbXV0ZXg7XG4gXG4tZXh0ZXJuIHZvaWQgZHJiZF9zdXNwZW5kX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gdm9pZCBkcmJkX3Jlc3VtZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIGNoYXIgKnBwc2l6ZShjaGFyICpidWYsIHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKTtcbi1leHRlcm4gc2VjdG9yX3QgZHJiZF9uZXdfZGV2X3NpemUoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICosIHNlY3Rvcl90LCBpbnQpO1xuK3ZvaWQgZHJiZF9zdXNwZW5kX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbit2b2lkIGRyYmRfcmVzdW1lX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbitjaGFyICpwcHNpemUoY2hhciAqYnVmLCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSk7XG4rc2VjdG9yX3QgZHJiZF9uZXdfZGV2X3NpemUoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICosXG4rXHRcdFx0ICAgc2VjdG9yX3QsIGludCk7XG4gZW51bSBkZXRlcm1pbmVfZGV2X3NpemUge1xuIFx0RFNfRVJST1JfU0hSSU5LID0gLTMsXG4gXHREU19FUlJPUl9TUEFDRV9NRCA9IC0yLFxuQEAgLTEzOTAsNDEgKzE0MTEsNDUgQEAgZW51bSBkZXRlcm1pbmVfZGV2X3NpemUge1xuIFx0RFNfR1JFVyA9IDIsXG4gXHREU19HUkVXX0ZST01fWkVSTyA9IDMsXG4gfTtcbi1leHRlcm4gZW51bSBkZXRlcm1pbmVfZGV2X3NpemVcbi1kcmJkX2RldGVybWluZV9kZXZfc2l6ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgZW51bSBkZHNfZmxhZ3MsIHN0cnVjdCByZXNpemVfcGFybXMgKikgX19tdXN0X2hvbGQobG9jYWwpO1xuLWV4dGVybiB2b2lkIHJlc3luY19hZnRlcl9vbmxpbmVfZ3JvdyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9yZWNvbnNpZGVyX3F1ZXVlX3BhcmFtZXRlcnMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdFx0c3RydWN0IGRyYmRfYmFja2luZ19kZXYgKmJkZXYsIHN0cnVjdCBvX3FsaW0gKm8pO1xuLWV4dGVybiBlbnVtIGRyYmRfc3RhdGVfcnYgZHJiZF9zZXRfcm9sZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0XHRcdFx0ZW51bSBkcmJkX3JvbGUgbmV3X3JvbGUsXG4tXHRcdFx0XHRcdGludCBmb3JjZSk7XG4tZXh0ZXJuIGJvb2wgY29ubl90cnlfb3V0ZGF0ZV9wZWVyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xuLWV4dGVybiB2b2lkIGNvbm5fdHJ5X291dGRhdGVfcGVlcl9hc3luYyhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbi1leHRlcm4gZW51bSBkcmJkX3BlZXJfc3RhdGUgY29ubl9raGVscGVyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGNoYXIgKmNtZCk7XG4tZXh0ZXJuIGludCBkcmJkX2toZWxwZXIoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNoYXIgKmNtZCk7XG4rZW51bSBkZXRlcm1pbmVfZGV2X3NpemUgZHJiZF9kZXRlcm1pbmVfZGV2X3NpemUoc3RydWN0IGRyYmRfZGV2aWNlICosXG4rXHRcdFx0XHRcdFx0ZW51bSBkZHNfZmxhZ3MsXG4rXHRcdFx0XHRcdFx0c3RydWN0IHJlc2l6ZV9wYXJtcyAqKTtcbit2b2lkIHJlc3luY19hZnRlcl9vbmxpbmVfZ3JvdyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKik7XG4rdm9pZCBkcmJkX3JlY29uc2lkZXJfcXVldWVfcGFyYW1ldGVycyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbitcdFx0XHRcdCAgICAgIHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LFxuK1x0XHRcdFx0ICAgICAgc3RydWN0IG9fcWxpbSAqbyk7XG4rZW51bSBkcmJkX3N0YXRlX3J2IGRyYmRfc2V0X3JvbGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4rXHRcdFx0XHQgZW51bSBkcmJkX3JvbGUgbmV3X3JvbGUsIGludCBmb3JjZSk7XG4rYm9vbCBjb25uX3RyeV9vdXRkYXRlX3BlZXIoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4rdm9pZCBjb25uX3RyeV9vdXRkYXRlX3BlZXJfYXN5bmMoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4rZW51bSBkcmJkX3BlZXJfc3RhdGUgY29ubl9raGVscGVyKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sXG4rXHRcdFx0XHQgIGNoYXIgKmNtZCk7XG4raW50IGRyYmRfa2hlbHBlcihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgY2hhciAqY21kKTtcbiBcbiAvKiBkcmJkX3dvcmtlci5jICovXG4gLyogYmlfZW5kX2lvIGhhbmRsZXJzICovXG4tZXh0ZXJuIHZvaWQgZHJiZF9tZF9lbmRpbyhzdHJ1Y3QgYmlvICpiaW8pO1xuLWV4dGVybiB2b2lkIGRyYmRfcGVlcl9yZXF1ZXN0X2VuZGlvKHN0cnVjdCBiaW8gKmJpbyk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9yZXF1ZXN0X2VuZGlvKHN0cnVjdCBiaW8gKmJpbyk7XG4tZXh0ZXJuIGludCBkcmJkX3dvcmtlcihzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSk7XG4rdm9pZCBkcmJkX21kX2VuZGlvKHN0cnVjdCBiaW8gKmJpbyk7XG4rdm9pZCBkcmJkX3BlZXJfcmVxdWVzdF9lbmRpbyhzdHJ1Y3QgYmlvICpiaW8pO1xuK3ZvaWQgZHJiZF9yZXF1ZXN0X2VuZGlvKHN0cnVjdCBiaW8gKmJpbyk7XG4raW50IGRyYmRfd29ya2VyKHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTtcbiBlbnVtIGRyYmRfcmV0X2NvZGUgZHJiZF9yZXN5bmNfYWZ0ZXJfdmFsaWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBvX21pbm9yKTtcbiB2b2lkIGRyYmRfcmVzeW5jX2FmdGVyX2NoYW5nZWQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiB2b2lkIGRyYmRfc3RhcnRfcmVzeW5jKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBlbnVtIGRyYmRfY29ubnMgc2lkZSk7XG4tZXh0ZXJuIHZvaWQgcmVzdW1lX25leHRfc2coc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiB2b2lkIHN1c3BlbmRfb3RoZXJfc2coc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiBpbnQgZHJiZF9yZXN5bmNfZmluaXNoZWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcbit2b2lkIGRyYmRfc3RhcnRfcmVzeW5jKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBlbnVtIGRyYmRfY29ubnMgc2lkZSk7XG4rdm9pZCByZXN1bWVfbmV4dF9zZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4rdm9pZCBzdXNwZW5kX290aGVyX3NnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbitpbnQgZHJiZF9yZXN5bmNfZmluaXNoZWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKTtcbiAvKiBtYXliZSByYXRoZXIgZHJiZF9tYWluLmMgPyAqL1xuLWV4dGVybiB2b2lkICpkcmJkX21kX2dldF9idWZmZXIoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKmludGVudCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9tZF9wdXRfYnVmZmVyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gaW50IGRyYmRfbWRfc3luY19wYWdlX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldiwgc2VjdG9yX3Qgc2VjdG9yLCBlbnVtIHJlcV9vcCBvcCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9vdl9vdXRfb2Zfc3luY19mb3VuZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsXG4tXHRcdHNlY3Rvcl90IHNlY3RvciwgaW50IHNpemUpO1xuLWV4dGVybiB2b2lkIHdhaXRfdW50aWxfZG9uZV9vcl9mb3JjZV9kZXRhY2hlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0c3RydWN0IGRyYmRfYmFja2luZ19kZXYgKmJkZXYsIHVuc2lnbmVkIGludCAqZG9uZSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9yc19jb250cm9sbGVyX3Jlc2V0KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4rdm9pZCAqZHJiZF9tZF9nZXRfYnVmZmVyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBjb25zdCBjaGFyICppbnRlbnQpO1xuK3ZvaWQgZHJiZF9tZF9wdXRfYnVmZmVyKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbitpbnQgZHJiZF9tZF9zeW5jX3BhZ2VfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4rXHRcdFx0IHN0cnVjdCBkcmJkX2JhY2tpbmdfZGV2ICpiZGV2LCBzZWN0b3JfdCBzZWN0b3IsXG4rXHRcdFx0IGVudW0gcmVxX29wIG9wKTtcbit2b2lkIGRyYmRfb3Zfb3V0X29mX3N5bmNfZm91bmQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLFxuK1x0XHRcdCAgICAgICBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplKTtcbit2b2lkIHdhaXRfdW50aWxfZG9uZV9vcl9mb3JjZV9kZXRhY2hlZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbitcdFx0XHRcdCAgICAgICBzdHJ1Y3QgZHJiZF9iYWNraW5nX2RldiAqYmRldixcbitcdFx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgKmRvbmUpO1xuK3ZvaWQgZHJiZF9yc19jb250cm9sbGVyX3Jlc2V0KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSk7XG4gXG4gc3RhdGljIGlubGluZSB2b2lkIG92X291dF9vZl9zeW5jX3ByaW50KHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcbiB7XG5AQCAtMTQzOCw0OCArMTQ2Myw0NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgb3Zfb3V0X29mX3N5bmNfcHJpbnQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxuIFx0ZGV2aWNlLVx1MDAzZW92X2xhc3Rfb29zX3NpemUgPSAwO1xuIH1cbiBcbi1cbi1leHRlcm4gdm9pZCBkcmJkX2NzdW1fYmlvKHN0cnVjdCBjcnlwdG9fc2hhc2ggKiwgc3RydWN0IGJpbyAqLCB2b2lkICopO1xuLWV4dGVybiB2b2lkIGRyYmRfY3N1bV9lZShzdHJ1Y3QgY3J5cHRvX3NoYXNoICosIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqLFxuLVx0XHRcdCB2b2lkICopO1xuK3ZvaWQgZHJiZF9jc3VtX2JpbyhzdHJ1Y3QgY3J5cHRvX3NoYXNoICosIHN0cnVjdCBiaW8gKiwgdm9pZCAqKTtcbit2b2lkIGRyYmRfY3N1bV9lZShzdHJ1Y3QgY3J5cHRvX3NoYXNoICosIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqLCB2b2lkICopO1xuIC8qIHdvcmtlciBjYWxsYmFja3MgKi9cbi1leHRlcm4gaW50IHdfZV9lbmRfZGF0YV9yZXEoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuLWV4dGVybiBpbnQgd19lX2VuZF9yc2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbi1leHRlcm4gaW50IHdfZV9lbmRfY3N1bV9yc19yZXEoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuLWV4dGVybiBpbnQgd19lX2VuZF9vdl9yZXBseShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4tZXh0ZXJuIGludCB3X2VfZW5kX292X3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4tZXh0ZXJuIGludCB3X292X2ZpbmlzaGVkKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbi1leHRlcm4gaW50IHdfcmVzeW5jX3RpbWVyKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbi1leHRlcm4gaW50IHdfc2VuZF93cml0ZV9oaW50KHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbi1leHRlcm4gaW50IHdfc2VuZF9kYmxvY2soc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuLWV4dGVybiBpbnQgd19zZW5kX3JlYWRfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbi1leHRlcm4gaW50IHdfcmVzdGFydF9kaXNrX2lvKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbi1leHRlcm4gaW50IHdfc2VuZF9vdXRfb2Zfc3luYyhzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4tXG4tZXh0ZXJuIHZvaWQgcmVzeW5jX3RpbWVyX2ZuKHN0cnVjdCB0aW1lcl9saXN0ICp0KTtcbi1leHRlcm4gdm9pZCBzdGFydF9yZXN5bmNfdGltZXJfZm4oc3RydWN0IHRpbWVyX2xpc3QgKnQpO1xuLVxuLWV4dGVybiB2b2lkIGRyYmRfZW5kaW9fd3JpdGVfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpO1xuK2ludCB3X2VfZW5kX2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbitpbnQgd19lX2VuZF9yc2RhdGFfcmVxKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbitpbnQgd19lX2VuZF9jc3VtX3JzX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4raW50IHdfZV9lbmRfb3ZfcmVwbHkoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuK2ludCB3X2VfZW5kX292X3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4raW50IHdfb3ZfZmluaXNoZWQoc3RydWN0IGRyYmRfd29yayAqLCBpbnQpO1xuK2ludCB3X3Jlc3luY190aW1lcihzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4raW50IHdfc2VuZF93cml0ZV9oaW50KHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbitpbnQgd19zZW5kX2RibG9jayhzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4raW50IHdfc2VuZF9yZWFkX3JlcShzdHJ1Y3QgZHJiZF93b3JrICosIGludCk7XG4raW50IHdfcmVzdGFydF9kaXNrX2lvKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbitpbnQgd19zZW5kX291dF9vZl9zeW5jKHN0cnVjdCBkcmJkX3dvcmsgKiwgaW50KTtcbitcbit2b2lkIHJlc3luY190aW1lcl9mbihzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7XG4rdm9pZCBzdGFydF9yZXN5bmNfdGltZXJfZm4oc3RydWN0IHRpbWVyX2xpc3QgKnQpO1xuK1xuK3ZvaWQgZHJiZF9lbmRpb193cml0ZV9zZWNfZmluYWwoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSk7XG4gXG4gLyogZHJiZF9yZWNlaXZlci5jICovXG4tZXh0ZXJuIGludCBkcmJkX2lzc3VlX2Rpc2NhcmRfb3JfemVyb19vdXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdHNlY3Rvcl90IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnJfc2VjdG9ycywgaW50IGZsYWdzKTtcbi1leHRlcm4gaW50IGRyYmRfcmVjZWl2ZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xuLWV4dGVybiBpbnQgZHJiZF9hY2tfcmVjZWl2ZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xuLWV4dGVybiB2b2lkIGRyYmRfc2VuZF9hY2tzX3dmKHN0cnVjdCB3b3JrX3N0cnVjdCAqd3MpO1xuLWV4dGVybiBib29sIGRyYmRfcnNfY19taW5fcmF0ZV90aHJvdHRsZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIGJvb2wgZHJiZF9yc19zaG91bGRfc2xvd19kb3duKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc2VjdG9yX3Qgc2VjdG9yLFxuLVx0XHRib29sIHRocm90dGxlX2lmX2FwcF9pc193YWl0aW5nKTtcbi1leHRlcm4gaW50IGRyYmRfc3VibWl0X3BlZXJfcmVxdWVzdChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKTtcbi1leHRlcm4gaW50IGRyYmRfZnJlZV9wZWVyX3JlcXMoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBsaXN0X2hlYWQgKik7XG4tZXh0ZXJuIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqZHJiZF9hbGxvY19wZWVyX3JlcShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1NjQsXG4tXHRcdFx0XHRcdFx0ICAgICBzZWN0b3JfdCwgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0XHRcdCAgICAgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0XHRcdCAgICAgZ2ZwX3QpIF9fbXVzdF9ob2xkKGxvY2FsKTtcbi1leHRlcm4gdm9pZCBkcmJkX2ZyZWVfcGVlcl9yZXEoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcmVxKTtcbi1leHRlcm4gc3RydWN0IHBhZ2UgKmRyYmRfYWxsb2NfcGFnZXMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgdW5zaWduZWQgaW50LCBib29sKTtcbi1leHRlcm4gdm9pZCBfZHJiZF9jbGVhcl9kb25lX2VlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgbGlzdF9oZWFkICp0b19iZV9mcmVlZCk7XG4tZXh0ZXJuIGludCBkcmJkX2Nvbm5lY3RlZChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqKTtcbitpbnQgZHJiZF9pc3N1ZV9kaXNjYXJkX29yX3plcm9fb3V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzdGFydCxcbitcdFx0XHRcdCAgIHVuc2lnbmVkIGludCBucl9zZWN0b3JzLCBpbnQgZmxhZ3MpO1xuK2ludCBkcmJkX3JlY2VpdmVyKHN0cnVjdCBkcmJkX3RocmVhZCAqdGhpKTtcbitpbnQgZHJiZF9hY2tfcmVjZWl2ZXIoc3RydWN0IGRyYmRfdGhyZWFkICp0aGkpO1xuK3ZvaWQgZHJiZF9zZW5kX2Fja3Nfd2Yoc3RydWN0IHdvcmtfc3RydWN0ICp3cyk7XG4rYm9vbCBkcmJkX3JzX2NfbWluX3JhdGVfdGhyb3R0bGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuK2Jvb2wgZHJiZF9yc19zaG91bGRfc2xvd19kb3duKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcbitcdFx0XHQgICAgICBzZWN0b3JfdCBzZWN0b3IsIGJvb2wgdGhyb3R0bGVfaWZfYXBwX2lzX3dhaXRpbmcpO1xuK2ludCBkcmJkX3N1Ym1pdF9wZWVyX3JlcXVlc3Qoc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcSk7XG4raW50IGRyYmRfZnJlZV9wZWVyX3JlcXMoc3RydWN0IGRyYmRfZGV2aWNlICosIHN0cnVjdCBsaXN0X2hlYWQgKik7XG4rc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpkcmJkX2FsbG9jX3BlZXJfcmVxKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHU2NCxcbitcdFx0XHRcdFx0ICAgICAgc2VjdG9yX3QsIHVuc2lnbmVkIGludCxcbitcdFx0XHRcdFx0ICAgICAgdW5zaWduZWQgaW50LCBnZnBfdCk7XG4rdm9pZCBkcmJkX2ZyZWVfcGVlcl9yZXEoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4rXHRcdFx0c3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpyZXEpO1xuK3N0cnVjdCBwYWdlICpkcmJkX2FsbG9jX3BhZ2VzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHVuc2lnbmVkIGludCwgYm9vbCk7XG4rdm9pZCBfZHJiZF9jbGVhcl9kb25lX2VlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHRcdCBzdHJ1Y3QgbGlzdF9oZWFkICp0b19iZV9mcmVlZCk7XG4raW50IGRyYmRfY29ubmVjdGVkKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICopO1xuIFxuIC8qIHNldHMgdGhlIG51bWJlciBvZiA1MTIgYnl0ZSBzZWN0b3JzIG9mIG91ciB2aXJ0dWFsIGRldmljZSAqL1xuIHZvaWQgZHJiZF9zZXRfbXlfY2FwYWNpdHkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNpemUpO1xuQEAgLTE0OTAsNyArMTUxNCw2IEBAIHZvaWQgZHJiZF9zZXRfbXlfY2FwYWNpdHkoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNpemUpO1xuIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmJkX3N1Ym1pdF9iaW9fbm9hY2N0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuIFx0XHRcdFx0XHQgICAgIGludCBmYXVsdF90eXBlLCBzdHJ1Y3QgYmlvICpiaW8pXG4ge1xuLVx0X19yZWxlYXNlKGxvY2FsKTtcbiBcdGlmICghYmlvLVx1MDAzZWJpX2JkZXYpIHtcbiBcdFx0ZHJiZF9lcnIoZGV2aWNlLCBcImRyYmRfc3VibWl0X2Jpb19ub2FjY3Q6IGJpby1cdTAwM2ViaV9iZGV2ID09IE5VTExcXG5cIik7XG4gXHRcdGJpby1cdTAwM2ViaV9zdGF0dXMgPSBCTEtfU1RTX0lPRVJSO1xuQEAgLTE1MTIsMzIgKzE1MzUsMzYgQEAgZXh0ZXJuIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqZHJiZF9wcm9jO1xuIGludCBkcmJkX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KTtcbiBcbiAvKiBkcmJkX2FjdGxvZy5jICovXG4tZXh0ZXJuIGJvb2wgZHJiZF9hbF9iZWdpbl9pb19wcmVwYXJlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSk7XG4tZXh0ZXJuIGludCBkcmJkX2FsX2JlZ2luX2lvX25vbmJsb2NrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9hbF9iZWdpbl9pb19jb21taXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiBib29sIGRyYmRfYWxfYmVnaW5faW9fZmFzdHBhdGgoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbi1leHRlcm4gdm9pZCBkcmJkX2FsX2JlZ2luX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9hbF9jb21wbGV0ZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpO1xuLWV4dGVybiB2b2lkIGRyYmRfcnNfY29tcGxldGVfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3Rvcik7XG4tZXh0ZXJuIGludCBkcmJkX3JzX2JlZ2luX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IpO1xuLWV4dGVybiBpbnQgZHJiZF90cnlfcnNfYmVnaW5faW8oc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IpO1xuLWV4dGVybiB2b2lkIGRyYmRfcnNfY2FuY2VsX2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4tZXh0ZXJuIGludCBkcmJkX3JzX2RlbF9hbGwoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiB2b2lkIGRyYmRfcnNfZmFpbGVkX2lvKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcbi1cdFx0c2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9hZHZhbmNlX3JzX21hcmtzKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgdW5zaWduZWQgbG9uZyBzdGlsbF90b19nbyk7XG4rYm9vbCBkcmJkX2FsX2JlZ2luX2lvX3ByZXBhcmUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4rXHRcdFx0ICAgICAgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKmkpO1xuK2ludCBkcmJkX2FsX2JlZ2luX2lvX25vbmJsb2NrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHRcdCAgICAgIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbit2b2lkIGRyYmRfYWxfYmVnaW5faW9fY29tbWl0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbitib29sIGRyYmRfYWxfYmVnaW5faW9fZmFzdHBhdGgoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4rXHRcdFx0ICAgICAgIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbit2b2lkIGRyYmRfYWxfYmVnaW5faW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbit2b2lkIGRyYmRfYWxfY29tcGxldGVfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBkcmJkX2ludGVydmFsICppKTtcbit2b2lkIGRyYmRfcnNfY29tcGxldGVfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3Rvcik7XG4raW50IGRyYmRfcnNfYmVnaW5faW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3Rvcik7XG4raW50IGRyYmRfdHJ5X3JzX2JlZ2luX2lvKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc2VjdG9yX3Qgc2VjdG9yKTtcbit2b2lkIGRyYmRfcnNfY2FuY2VsX2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4raW50IGRyYmRfcnNfZGVsX2FsbChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSk7XG4rdm9pZCBkcmJkX3JzX2ZhaWxlZF9pbyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHNlY3Rvcl90IHNlY3RvcixcbitcdFx0ICAgICAgIGludCBzaXplKTtcbit2b2lkIGRyYmRfYWR2YW5jZV9yc19tYXJrcyhzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsXG4rXHRcdFx0ICAgdW5zaWduZWQgbG9uZyBzdGlsbF90b19nbyk7XG4gXG4gZW51bSB1cGRhdGVfc3luY19iaXRzX21vZGUgeyBSRUNPUkRfUlNfRkFJTEVELCBTRVRfT1VUX09GX1NZTkMsIFNFVF9JTl9TWU5DIH07XG4tZXh0ZXJuIGludCBfX2RyYmRfY2hhbmdlX3N5bmMoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplLFxuLVx0XHRlbnVtIHVwZGF0ZV9zeW5jX2JpdHNfbW9kZSBtb2RlKTtcbitpbnQgX19kcmJkX2NoYW5nZV9zeW5jKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc2VjdG9yX3Qgc2VjdG9yLFxuK1x0XHQgICAgICAgaW50IHNpemUsIGVudW0gdXBkYXRlX3N5bmNfYml0c19tb2RlIG1vZGUpO1xuICNkZWZpbmUgZHJiZF9zZXRfaW5fc3luYyhwZWVyX2RldmljZSwgc2VjdG9yLCBzaXplKSBcXFxuIFx0X19kcmJkX2NoYW5nZV9zeW5jKHBlZXJfZGV2aWNlLCBzZWN0b3IsIHNpemUsIFNFVF9JTl9TWU5DKVxuICNkZWZpbmUgZHJiZF9zZXRfb3V0X29mX3N5bmMocGVlcl9kZXZpY2UsIHNlY3Rvciwgc2l6ZSkgXFxcbiBcdF9fZHJiZF9jaGFuZ2Vfc3luYyhwZWVyX2RldmljZSwgc2VjdG9yLCBzaXplLCBTRVRfT1VUX09GX1NZTkMpXG4gI2RlZmluZSBkcmJkX3JzX2ZhaWxlZF9pbyhwZWVyX2RldmljZSwgc2VjdG9yLCBzaXplKSBcXFxuIFx0X19kcmJkX2NoYW5nZV9zeW5jKHBlZXJfZGV2aWNlLCBzZWN0b3IsIHNpemUsIFJFQ09SRF9SU19GQUlMRUQpXG4tZXh0ZXJuIHZvaWQgZHJiZF9hbF9zaHJpbmsoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuLWV4dGVybiBpbnQgZHJiZF9hbF9pbml0aWFsaXplKHN0cnVjdCBkcmJkX2RldmljZSAqLCB2b2lkICopO1xuK3ZvaWQgZHJiZF9hbF9zaHJpbmsoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuK2ludCBkcmJkX2FsX2luaXRpYWxpemUoc3RydWN0IGRyYmRfZGV2aWNlICosIHZvaWQgKik7XG4gXG4gLyogZHJiZF9ubC5jICovXG4gLyogc3RhdGUgaW5mbyBicm9hZGNhc3QgKi9cbkBAIC0xNTU2LDI4ICsxNTgzLDIwIEBAIHN0cnVjdCBzaWJfaW5mbyB7XG4gfTtcbiB2b2lkIGRyYmRfYmNhc3RfZXZlbnQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNvbnN0IHN0cnVjdCBzaWJfaW5mbyAqc2liKTtcbiBcbi1leHRlcm4gaW50IG5vdGlmeV9yZXNvdXJjZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLFxuLVx0XHRcdFx0ICB1bnNpZ25lZCBpbnQsXG4tXHRcdFx0XHQgIHN0cnVjdCBkcmJkX3Jlc291cmNlICosXG4tXHRcdFx0XHQgIHN0cnVjdCByZXNvdXJjZV9pbmZvICosXG4tXHRcdFx0XHQgIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSk7XG4tZXh0ZXJuIGludCBub3RpZnlfZGV2aWNlX3N0YXRlKHN0cnVjdCBza19idWZmICosXG4tXHRcdFx0XHR1bnNpZ25lZCBpbnQsXG4tXHRcdFx0XHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKixcbi1cdFx0XHRcdHN0cnVjdCBkZXZpY2VfaW5mbyAqLFxuLVx0XHRcdFx0ZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTtcbi1leHRlcm4gaW50IG5vdGlmeV9jb25uZWN0aW9uX3N0YXRlKHN0cnVjdCBza19idWZmICosXG4tXHRcdFx0XHQgICAgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0ICAgIHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKixcbi1cdFx0XHRcdCAgICBzdHJ1Y3QgY29ubmVjdGlvbl9pbmZvICosXG4tXHRcdFx0XHQgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTtcbi1leHRlcm4gaW50IG5vdGlmeV9wZWVyX2RldmljZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLFxuLVx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQsXG4tXHRcdFx0XHQgICAgIHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosXG4tXHRcdFx0XHQgICAgIHN0cnVjdCBwZWVyX2RldmljZV9pbmZvICosXG4tXHRcdFx0XHQgICAgIGVudW0gZHJiZF9ub3RpZmljYXRpb25fdHlwZSk7XG4tZXh0ZXJuIHZvaWQgbm90aWZ5X2hlbHBlcihlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUsIHN0cnVjdCBkcmJkX2RldmljZSAqLFxuLVx0XHRcdCAgc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBjb25zdCBjaGFyICosIGludCk7XG4raW50IG5vdGlmeV9yZXNvdXJjZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsXG4rXHRcdFx0ICBzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqLCBzdHJ1Y3QgcmVzb3VyY2VfaW5mbyAqLFxuK1x0XHRcdCAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlKTtcbitpbnQgbm90aWZ5X2RldmljZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBkcmJkX2RldmljZSAqLFxuK1x0XHRcdHN0cnVjdCBkZXZpY2VfaW5mbyAqLCBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpO1xuK2ludCBub3RpZnlfY29ubmVjdGlvbl9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqLCB1bnNpZ25lZCBpbnQsXG4rXHRcdFx0ICAgIHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwgc3RydWN0IGNvbm5lY3Rpb25faW5mbyAqLFxuK1x0XHRcdCAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpO1xuK2ludCBub3RpZnlfcGVlcl9kZXZpY2Vfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKiwgdW5zaWduZWQgaW50LFxuK1x0XHRcdCAgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKixcbitcdFx0XHQgICAgIHN0cnVjdCBwZWVyX2RldmljZV9pbmZvICosXG4rXHRcdFx0ICAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUpO1xuK3ZvaWQgbm90aWZ5X2hlbHBlcihlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUsIHN0cnVjdCBkcmJkX2RldmljZSAqLFxuK1x0XHQgICBzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIGNvbnN0IGNoYXIgKiwgaW50KTtcbiBcbiAvKlxuICAqIGlubGluZSBoZWxwZXIgZnVuY3Rpb25zXG5AQCAtMTgyMiw3ICsxODQxLDcgQEAgZHJiZF9kZXZpY2VfcG9zdF93b3JrKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgd29ya19iaXQpXG4gXHR9XG4gfVxuIFxuLWV4dGVybiB2b2lkIGRyYmRfZmx1c2hfd29ya3F1ZXVlKHN0cnVjdCBkcmJkX3dvcmtfcXVldWUgKndvcmtfcXVldWUpO1xuK3ZvaWQgZHJiZF9mbHVzaF93b3JrcXVldWUoc3RydWN0IGRyYmRfd29ya19xdWV1ZSAqd29ya19xdWV1ZSk7XG4gXG4gLyogVG8gZ2V0IHRoZSBhY2tfcmVjZWl2ZXIgb3V0IG9mIHRoZSBibG9ja2luZyBuZXR3b3JrIHN0YWNrLFxuICAqIHNvIGl0IGNhbiBjaGFuZ2UgaXRzIHNrX3JjdnRpbWVvIGZyb20gaWRsZS0gdG8gcGluZy10aW1lb3V0LFxuQEAgLTE4NDEsMTkgKzE4NjAsMjcgQEAgc3RhdGljIGlubGluZSB2b2lkIHJlcXVlc3RfcGluZyhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKVxuIFx0d2FrZV9hY2tfcmVjZWl2ZXIoY29ubmVjdGlvbik7XG4gfVxuIFxuLWV4dGVybiB2b2lkICpjb25uX3ByZXBhcmVfY29tbWFuZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHN0cnVjdCBkcmJkX3NvY2tldCAqKTtcbi1leHRlcm4gdm9pZCAqZHJiZF9wcmVwYXJlX2NvbW1hbmQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKiwgc3RydWN0IGRyYmRfc29ja2V0ICopO1xuLWV4dGVybiBpbnQgY29ubl9zZW5kX2NvbW1hbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKixcbi1cdFx0XHQgICAgIGVudW0gZHJiZF9wYWNrZXQsIHVuc2lnbmVkIGludCwgdm9pZCAqLFxuLVx0XHRcdCAgICAgdW5zaWduZWQgaW50KTtcbi1leHRlcm4gaW50IGRyYmRfc2VuZF9jb21tYW5kKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHN0cnVjdCBkcmJkX3NvY2tldCAqLFxuLVx0XHRcdCAgICAgZW51bSBkcmJkX3BhY2tldCwgdW5zaWduZWQgaW50LCB2b2lkICosXG4tXHRcdFx0ICAgICB1bnNpZ25lZCBpbnQpO1xuLVxuLWV4dGVybiBpbnQgZHJiZF9zZW5kX3Bpbmcoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfcGluZ19hY2soc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4tZXh0ZXJuIGludCBkcmJkX3NlbmRfc3RhdGVfcmVxKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsIHVuaW9uIGRyYmRfc3RhdGUpO1xuLWV4dGVybiBpbnQgY29ubl9zZW5kX3N0YXRlX3JlcShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICosIHVuaW9uIGRyYmRfc3RhdGUsIHVuaW9uIGRyYmRfc3RhdGUpO1xuK3ZvaWQgKmNvbm5fcHJlcGFyZV9jb21tYW5kKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sXG4rXHRcdFx0ICAgc3RydWN0IGRyYmRfc29ja2V0ICpzb2NrKVxuK1x0X19jb25kX2FjcXVpcmVzKHRydWUsIFx1MDAyNnNvY2stXHUwMDNlbXV0ZXgpO1xuK3ZvaWQgKmRyYmRfcHJlcGFyZV9jb21tYW5kKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgc3RydWN0IGRyYmRfc29ja2V0ICpzb2NrKVxuK1x0X19jb25kX2FjcXVpcmVzKHRydWUsIFx1MDAyNnNvY2stXHUwMDNlbXV0ZXgpO1xuK2ludCBjb25uX3NlbmRfY29tbWFuZChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLFxuK1x0XHQgICAgICBzdHJ1Y3QgZHJiZF9zb2NrZXQgKnNvY2ssXG4rXHRcdCAgICAgIGVudW0gZHJiZF9wYWNrZXQgY21kLCB1bnNpZ25lZCBpbnQgaGVhZGVyX3NpemUsXG4rXHRcdCAgICAgIHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBzaXplKVxuK1x0X19yZWxlYXNlcyhcdTAwMjZzb2NrLVx1MDAzZW11dGV4KTtcbitpbnQgZHJiZF9zZW5kX2NvbW1hbmQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzdHJ1Y3QgZHJiZF9zb2NrZXQgKnNvY2ssXG4rXHRcdCAgICAgIGVudW0gZHJiZF9wYWNrZXQgY21kLCB1bnNpZ25lZCBpbnQgaGVhZGVyX3NpemUsXG4rXHRcdCAgICAgIHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBzaXplKVxuK1x0X19yZWxlYXNlcyhcdTAwMjZzb2NrLVx1MDAzZW11dGV4KTtcbitcbitpbnQgZHJiZF9zZW5kX3Bpbmcoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4raW50IGRyYmRfc2VuZF9waW5nX2FjayhzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbitpbnQgZHJiZF9zZW5kX3N0YXRlX3JlcShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLFxuK1x0XHRcdHVuaW9uIGRyYmRfc3RhdGUpO1xuK2ludCBjb25uX3NlbmRfc3RhdGVfcmVxKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKiwgdW5pb24gZHJiZF9zdGF0ZSxcbitcdFx0XHR1bmlvbiBkcmJkX3N0YXRlKTtcbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgZHJiZF90aHJlYWRfc3RvcChzdHJ1Y3QgZHJiZF90aHJlYWQgKnRoaSlcbiB7XG5AQCAtMTk3Niw5ICsyMDAzLDYgQEAgc3RhdGljIGlubGluZSBib29sIGlzX3N5bmNfc3RhdGUoZW51bSBkcmJkX2Nvbm5zIGNvbm5lY3Rpb25fc3RhdGUpXG4gICpcbiAgKiBZb3UgaGF2ZSB0byBjYWxsIHB1dF9sZGV2KCkgd2hlbiBmaW5pc2hlZCB3b3JraW5nIHdpdGggZGV2aWNlLVx1MDAzZWxkZXYuXG4gICovXG4tI2RlZmluZSBnZXRfbGRldl9pZl9zdGF0ZShfZGV2aWNlLCBfbWluX3N0YXRlKVx0XHRcdFx0XFxcbi1cdChfZ2V0X2xkZXZfaWZfc3RhdGUoKF9kZXZpY2UpLCAoX21pbl9zdGF0ZSkpID9cdFx0XHRcXFxuLVx0ICh7IF9fYWNxdWlyZSh4KTsgdHJ1ZTsgfSkgOiBmYWxzZSlcbiAjZGVmaW5lIGdldF9sZGV2KF9kZXZpY2UpIGdldF9sZGV2X2lmX3N0YXRlKF9kZXZpY2UsIERfSU5DT05TSVNURU5UKVxuIFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfbGRldihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbkBAIC0xOTkzLDcgKzIwMTcsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHV0X2xkZXYoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXG4gXHQvKiBUaGlzIG1heSBiZSBjYWxsZWQgZnJvbSBzb21lIGVuZGlvIGhhbmRsZXIsXG4gXHQgKiBzbyB3ZSBtdXN0IG5vdCBzbGVlcCBoZXJlLiAqL1xuIFxuLVx0X19yZWxlYXNlKGxvY2FsKTtcbiBcdERfQVNTRVJUKGRldmljZSwgaSBcdTAwM2U9IDApO1xuIFx0aWYgKGkgPT0gMCkge1xuIFx0XHRpZiAoZGlza19zdGF0ZSA9PSBEX0RJU0tMRVNTKVxuQEAgLTIwMDcsOCArMjAzMCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfbGRldihzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbiBcdH1cbiB9XG4gXG4tI2lmbmRlZiBfX0NIRUNLRVJfX1xuLXN0YXRpYyBpbmxpbmUgaW50IF9nZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Rpc2tfc3RhdGUgbWlucylcbitzdGF0aWMgaW5saW5lIGludCBnZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbitcdFx0XHRcdCAgICBlbnVtIGRyYmRfZGlza19zdGF0ZSBtaW5zKVxuIHtcbiBcdGludCBpb19hbGxvd2VkO1xuIFxuQEAgLTIwMjIsOSArMjA0NSw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IF9nZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Rpc2tfXG4gXHRcdHB1dF9sZGV2KGRldmljZSk7XG4gXHRyZXR1cm4gaW9fYWxsb3dlZDtcbiB9XG4tI2Vsc2Vcbi1leHRlcm4gaW50IF9nZXRfbGRldl9pZl9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgZW51bSBkcmJkX2Rpc2tfc3RhdGUgbWlucyk7XG4tI2VuZGlmXG4gXG4gLyogdGhpcyB0aHJvdHRsZXMgb24tdGhlLWZseSBhcHBsaWNhdGlvbiByZXF1ZXN0c1xuICAqIGFjY29yZGluZyB0byBtYXhfYnVmZmVycyBzZXR0aW5ncztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9pbnRlcnZhbC5oIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50ZXJ2YWwuaFxuaW5kZXggNWQzMjEzYjgxZWVkZTcuLjI1NWU5ZDA3MWFlMWQ0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50ZXJ2YWwuaFxuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfaW50ZXJ2YWwuaFxuQEAgLTI5LDEzICsyOSwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZHJiZF9pbnRlcnZhbF9lbXB0eShzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSlcbiBcdHJldHVybiBSQl9FTVBUWV9OT0RFKFx1MDAyNmktXHUwMDNlcmIpO1xuIH1cbiBcbi1leHRlcm4gYm9vbCBkcmJkX2luc2VydF9pbnRlcnZhbChzdHJ1Y3QgcmJfcm9vdCAqLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqKTtcbi1leHRlcm4gYm9vbCBkcmJkX2NvbnRhaW5zX2ludGVydmFsKHN0cnVjdCByYl9yb290ICosIHNlY3Rvcl90LFxuLVx0XHRcdFx0ICAgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9yZW1vdmVfaW50ZXJ2YWwoc3RydWN0IHJiX3Jvb3QgKiwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7XG4tZXh0ZXJuIHN0cnVjdCBkcmJkX2ludGVydmFsICpkcmJkX2ZpbmRfb3ZlcmxhcChzdHJ1Y3QgcmJfcm9vdCAqLCBzZWN0b3JfdCxcbitib29sIGRyYmRfaW5zZXJ0X2ludGVydmFsKHN0cnVjdCByYl9yb290ICosIHN0cnVjdCBkcmJkX2ludGVydmFsICopO1xuK2Jvb2wgZHJiZF9jb250YWluc19pbnRlcnZhbChzdHJ1Y3QgcmJfcm9vdCAqLCBzZWN0b3JfdCwgc3RydWN0IGRyYmRfaW50ZXJ2YWwgKik7XG4rdm9pZCBkcmJkX3JlbW92ZV9pbnRlcnZhbChzdHJ1Y3QgcmJfcm9vdCAqLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqKTtcbitzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqZHJiZF9maW5kX292ZXJsYXAoc3RydWN0IHJiX3Jvb3QgKiwgc2VjdG9yX3QsXG4gXHRcdFx0XHRcdHVuc2lnbmVkIGludCk7XG4tZXh0ZXJuIHN0cnVjdCBkcmJkX2ludGVydmFsICpkcmJkX25leHRfb3ZlcmxhcChzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqLCBzZWN0b3JfdCxcbitzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqZHJiZF9uZXh0X292ZXJsYXAoc3RydWN0IGRyYmRfaW50ZXJ2YWwgKiwgc2VjdG9yX3QsXG4gXHRcdFx0XHRcdHVuc2lnbmVkIGludCk7XG4gXG4gI2RlZmluZSBkcmJkX2Zvcl9lYWNoX292ZXJsYXAoaSwgcm9vdCwgc2VjdG9yLCBzaXplKVx0XHRcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX21haW4uY1xuaW5kZXggYTJhODQxYzg5MjAxMTEuLjZmM2MwNDI1MmI1ZGVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbWFpbi5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9tYWluLmNcbkBAIC0xMjgsMjUgKzEyOCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgZHJiZF9vcHMgPSB7XG4gXHQucmVsZWFzZVx0PSBkcmJkX3JlbGVhc2UsXG4gfTtcbiBcbi0jaWZkZWYgX19DSEVDS0VSX19cbi0vKiBXaGVuIGNoZWNraW5nIHdpdGggc3BhcnNlLCBhbmQgdGhpcyBpcyBhbiBpbmxpbmUgZnVuY3Rpb24sIHNwYXJzZSB3aWxsXG4tICAgZ2l2ZSB0b25zIG9mIGZhbHNlIHBvc2l0aXZlcy4gV2hlbiB0aGlzIGlzIGEgcmVhbCBmdW5jdGlvbnMgc3BhcnNlIHdvcmtzLlxuLSAqL1xuLWludCBfZ2V0X2xkZXZfaWZfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGVudW0gZHJiZF9kaXNrX3N0YXRlIG1pbnMpXG4te1xuLVx0aW50IGlvX2FsbG93ZWQ7XG4tXG4tXHRhdG9taWNfaW5jKFx1MDAyNmRldmljZS1cdTAwM2Vsb2NhbF9jbnQpO1xuLVx0aW9fYWxsb3dlZCA9IChkZXZpY2UtXHUwMDNlc3RhdGUuZGlzayBcdTAwM2U9IG1pbnMpO1xuLVx0aWYgKCFpb19hbGxvd2VkKSB7XG4tXHRcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFx1MDAyNmRldmljZS1cdTAwM2Vsb2NhbF9jbnQpKVxuLVx0XHRcdHdha2VfdXAoXHUwMDI2ZGV2aWNlLVx1MDAzZW1pc2Nfd2FpdCk7XG4tXHR9XG4tXHRyZXR1cm4gaW9fYWxsb3dlZDtcbi19XG4tXG4tI2VuZGlmXG4tXG4gLyoqXG4gICogdGxfcmVsZWFzZSgpIC0gbWFyayBhcyBCQVJSSUVSX0FDS0VEIGFsbCByZXF1ZXN0cyBpbiB0aGUgY29ycmVzcG9uZGluZyB0cmFuc2ZlciBsb2cgZXBvY2hcbiAgKiBAY29ubmVjdGlvbjpcdERSQkQgY29ubmVjdGlvbi5cbkBAIC0zMjgyLDcgKzMyNjMsNyBAQCB2b2lkIGRyYmRfbWRfbWFya19kaXJ0eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbiBcdFx0bW9kX3RpbWVyKFx1MDAyNmRldmljZS1cdTAwM2VtZF9zeW5jX3RpbWVyLCBqaWZmaWVzICsgNSpIWik7XG4gfVxuIFxuLXZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXG4rdm9pZCBkcmJkX3V1aWRfbW92ZV9oaXN0b3J5KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxuIHtcbiBcdGludCBpO1xuIFxuQEAgLTMyOTAsNyArMzI3MSw3IEBAIHZvaWQgZHJiZF91dWlkX21vdmVfaGlzdG9yeShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXG4gXHRcdGRldmljZS1cdTAwM2VsZGV2LVx1MDAzZW1kLnV1aWRbaSsxXSA9IGRldmljZS1cdTAwM2VsZGV2LVx1MDAzZW1kLnV1aWRbaV07XG4gfVxuIFxuLXZvaWQgX19kcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbClcbit2b2lkIF9fZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbClcbiB7XG4gXHRpZiAoaWR4ID09IFVJX0NVUlJFTlQpIHtcbiBcdFx0aWYgKGRldmljZS1cdTAwM2VzdGF0ZS5yb2xlID09IFJfUFJJTUFSWSlcbkBAIC0zMzA1LDcgKzMyODYsNyBAQCB2b2lkIF9fZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbCkgX19tdXN0X2hvbGQobFxuIFx0ZHJiZF9tZF9tYXJrX2RpcnR5KGRldmljZSk7XG4gfVxuIFxuLXZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxvY2FsKVxuK3ZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpXG4ge1xuIFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldmljZS1cdTAwM2VsZGV2LVx1MDAzZW1kLnV1aWRfbG9jaywgZmxhZ3MpO1xuQEAgLTMzMTMsNyArMzI5NCw3IEBAIHZvaWQgX2RyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxvXG4gXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldmljZS1cdTAwM2VsZGV2LVx1MDAzZW1kLnV1aWRfbG9jaywgZmxhZ3MpO1xuIH1cbiBcbi12b2lkIGRyYmRfdXVpZF9zZXQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBpZHgsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxvY2FsKVxuK3ZvaWQgZHJiZF91dWlkX3NldChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgaW50IGlkeCwgdTY0IHZhbClcbiB7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2aWNlLVx1MDAzZWxkZXYtXHUwMDNlbWQudXVpZF9sb2NrLCBmbGFncyk7XG5AQCAtMzMzMiw3ICszMzEzLDcgQEAgdm9pZCBkcmJkX3V1aWRfc2V0KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgaWR4LCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NcbiAgKiBDcmVhdGVzIGEgbmV3IGN1cnJlbnQgVVVJRCwgYW5kIHJvdGF0ZXMgdGhlIG9sZCBjdXJyZW50IFVVSUQgaW50b1xuICAqIHRoZSBiaXRtYXAgc2xvdC4gQ2F1c2VzIGFuIGluY3JlbWVudGFsIHJlc3luYyB1cG9uIG5leHQgY29ubmVjdC5cbiAgKi9cbi12b2lkIGRyYmRfdXVpZF9uZXdfY3VycmVudChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXG4rdm9pZCBkcmJkX3V1aWRfbmV3X2N1cnJlbnQoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpXG4ge1xuIFx0dTY0IHZhbDtcbiBcdHVuc2lnbmVkIGxvbmcgbG9uZyBibV91dWlkO1xuQEAgLTMzNTQsNyArMzMzNSw3IEBAIHZvaWQgZHJiZF91dWlkX25ld19jdXJyZW50KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbiBcdGRyYmRfbWRfc3luYyhkZXZpY2UpO1xuIH1cbiBcbi12b2lkIGRyYmRfdXVpZF9zZXRfYm0oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHU2NCB2YWwpIF9fbXVzdF9ob2xkKGxvY2FsKVxuK3ZvaWQgZHJiZF91dWlkX3NldF9ibShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdTY0IHZhbClcbiB7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2aWNlLVx1MDAzZWxkZXYtXHUwMDNlbWQudXVpZF9sb2NrLCBmbGFncyk7XG5AQCAtMzM4Nyw3ICszMzY4LDcgQEAgdm9pZCBkcmJkX3V1aWRfc2V0X2JtKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1NjQgdmFsKSBfX211c3RfaG9sZChsb2NhbClcbiAgKiBTZXRzIGFsbCBiaXRzIGluIHRoZSBiaXRtYXAgYW5kIHdyaXRlcyB0aGUgd2hvbGUgYml0bWFwIHRvIHN0YWJsZSBzdG9yYWdlLlxuICAqL1xuIGludCBkcmJkX2JtaW9fc2V0X25fd3JpdGUoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdFx0ICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxuK1x0XHRcdCAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxuIFxuIHtcbiBcdGludCBydiA9IC1FSU87XG5AQCAtMzQxNCw3ICszMzk1LDcgQEAgaW50IGRyYmRfYm1pb19zZXRfbl93cml0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiAgKiBDbGVhcnMgYWxsIGJpdHMgaW4gdGhlIGJpdG1hcCBhbmQgd3JpdGVzIHRoZSB3aG9sZSBiaXRtYXAgdG8gc3RhYmxlIHN0b3JhZ2UuXG4gICovXG4gaW50IGRyYmRfYm1pb19jbGVhcl9uX3dyaXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRcdCAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbitcdFx0XHQgICAgc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxuIFxuIHtcbiBcdGRyYmRfcmVzdW1lX2FsKGRldmljZSk7XG5AQCAtMzU0MSw3ICszNTIyLDcgQEAgaW50IGRyYmRfYml0bWFwX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuIFx0cmV0dXJuIHJ2O1xuIH1cbiBcbi12b2lkIGRyYmRfbWRfc2V0X2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFnKSBfX211c3RfaG9sZChsb2NhbClcbit2b2lkIGRyYmRfbWRfc2V0X2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFnKVxuIHtcbiBcdGlmICgoZGV2aWNlLVx1MDAzZWxkZXYtXHUwMDNlbWQuZmxhZ3MgXHUwMDI2IGZsYWcpICE9IGZsYWcpIHtcbiBcdFx0ZHJiZF9tZF9tYXJrX2RpcnR5KGRldmljZSk7XG5AQCAtMzU0OSw3ICszNTMwLDcgQEAgdm9pZCBkcmJkX21kX3NldF9mbGFnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgZmxhZykgX19tdXN0X2hvbGQobG9jYWwpXG4gXHR9XG4gfVxuIFxuLXZvaWQgZHJiZF9tZF9jbGVhcl9mbGFnKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBpbnQgZmxhZykgX19tdXN0X2hvbGQobG9jYWwpXG4rdm9pZCBkcmJkX21kX2NsZWFyX2ZsYWcoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGludCBmbGFnKVxuIHtcbiBcdGlmICgoZGV2aWNlLVx1MDAzZWxkZXYtXHUwMDNlbWQuZmxhZ3MgXHUwMDI2IGZsYWcpICE9IDApIHtcbiBcdFx0ZHJiZF9tZF9tYXJrX2RpcnR5KGRldmljZSk7XG5AQCAtMzY3OCw2ICszNjU5LDcgQEAgaW50IGRyYmRfd2FpdF9taXNjKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBzdHJ1Y3QgZHJiZF9pbnRlcnZhbCAqaSlcbiB9XG4gXG4gdm9pZCBsb2NrX2FsbF9yZXNvdXJjZXModm9pZClcbitcdF9fY29udGV4dF91bnNhZmUobG9ja2luZyBsb29wKVxuIHtcbiBcdHN0cnVjdCBkcmJkX3Jlc291cmNlICpyZXNvdXJjZTtcbiBcdGludCBfX21heWJlX3VudXNlZCBpID0gMDtcbkBAIC0zNjg5LDYgKzM2NzEsNyBAQCB2b2lkIGxvY2tfYWxsX3Jlc291cmNlcyh2b2lkKVxuIH1cbiBcbiB2b2lkIHVubG9ja19hbGxfcmVzb3VyY2VzKHZvaWQpXG4rXHRfX2NvbnRleHRfdW5zYWZlKGxvY2tpbmcgbG9vcClcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2U7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfbmwuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmNcbmluZGV4IGY5ZmZjZDY3NjA3YjU1Li43NDhiMWQwOTNmMmU2NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX25sLmNcbkBAIC05NjgsOCArOTY4LDkgQEAgdm9pZCBkcmJkX3Jlc3VtZV9pbyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSlcbiAgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgcmV0dXJuIHZhbHVlcyBpbmRpY2F0ZSBlcnJvcnMuXG4gICogWW91IHNob3VsZCBjYWxsIGRyYmRfbWRfc3luYygpIGFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5cbiAgKi9cbi1lbnVtIGRldGVybWluZV9kZXZfc2l6ZVxuLWRyYmRfZGV0ZXJtaW5lX2Rldl9zaXplKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCBlbnVtIGRkc19mbGFncyBmbGFncywgc3RydWN0IHJlc2l6ZV9wYXJtcyAqcnMpIF9fbXVzdF9ob2xkKGxvY2FsKVxuK2VudW0gZGV0ZXJtaW5lX2Rldl9zaXplIGRyYmRfZGV0ZXJtaW5lX2Rldl9zaXplKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHRcdFx0XHRcdGVudW0gZGRzX2ZsYWdzIGZsYWdzLFxuK1x0XHRcdFx0XHRcdHN0cnVjdCByZXNpemVfcGFybXMgKnJzKVxuIHtcbiBcdHN0cnVjdCBtZF9vZmZzZXRzX2FuZF9zaXplcyB7XG4gXHRcdHU2NCBsYXN0X2FncmVlZF9zZWN0O1xuQEAgLTMwOTcsNyArMzA5OCw3IEBAIHN0YXRpYyBpbnQgZHJiZF9hZG1fc2ltcGxlX3JlcXVlc3Rfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqXG4gfVxuIFxuIHN0YXRpYyBpbnQgZHJiZF9ibWlvX3NldF9zdXNwX2FsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuLVx0XHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxuK1x0XHRcdFx0IHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcbiB7XG4gXHRpbnQgcnY7XG4gXG5AQCAtMzUyOCwxNSArMzUyOSw1NiBAQCBpbnQgZHJiZF9hZG1fZHVtcF9jb25uZWN0aW9uc19kb25lKHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbiBcbiBlbnVtIHsgU0lOR0xFX1JFU09VUkNFLCBJVEVSQVRFX1JFU09VUkNFUyB9O1xuIFxuK3N0YXRpYyBpbnQgZHJiZF9ubF9wdXRfZHVtcF9jb25uZWN0aW9uc19yZXN1bHQoXG4rXHRcdHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYixcbitcdFx0c3RydWN0IGRyYmRfcmVzb3VyY2UgKnJlc291cmNlLFxuK1x0XHRzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBlbnVtIGRyYmRfcmV0X2NvZGUgcmV0Y29kZSlcbit7XG4rXHRzdHJ1Y3QgZHJiZF9nZW5sbXNnaGRyICpkaDtcbitcbitcdGRoID0gZ2VubG1zZ19wdXQoc2tiLCBORVRMSU5LX0NCKGNiLVx1MDAzZXNrYikucG9ydGlkLCBjYi1cdTAwM2VubGgtXHUwMDNlbmxtc2dfc2VxLFxuK1x0XHRcdCBcdTAwMjZkcmJkX25sX2ZhbWlseSwgTkxNX0ZfTVVMVEksXG4rXHRcdFx0IERSQkRfQURNX0dFVF9DT05ORUNUSU9OUyk7XG4rXHRpZiAoIWRoKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcdGRoLVx1MDAzZXJldF9jb2RlID0gcmV0Y29kZTtcbitcdGRoLVx1MDAzZW1pbm9yID0gLTFVO1xuK1x0aWYgKHJldGNvZGUgPT0gTk9fRVJST1IpIHtcbitcdFx0c3RydWN0IGNvbm5lY3Rpb25fc3RhdGlzdGljcyBjb25uZWN0aW9uX3N0YXRpc3RpY3M7XG4rXHRcdHN0cnVjdCBjb25uZWN0aW9uX2luZm8gY29ubmVjdGlvbl9pbmZvO1xuK1x0XHRzdHJ1Y3QgbmV0X2NvbmYgKm5ldF9jb25mO1xuK1x0XHRpbnQgZXJyO1xuK1xuK1x0XHRlcnIgPSBubGFfcHV0X2RyYmRfY2ZnX2NvbnRleHQoc2tiLCByZXNvdXJjZSwgY29ubmVjdGlvbiwgTlVMTCk7XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0cmV0dXJuIGVycjtcbitcdFx0bmV0X2NvbmYgPSByY3VfZGVyZWZlcmVuY2UoY29ubmVjdGlvbi1cdTAwM2VuZXRfY29uZik7XG4rXHRcdGlmIChuZXRfY29uZikge1xuK1x0XHRcdGVyciA9IG5ldF9jb25mX3RvX3NrYihza2IsIG5ldF9jb25mKTtcbitcdFx0XHRpZiAoZXJyKVxuK1x0XHRcdFx0cmV0dXJuIGVycjtcbitcdFx0fVxuK1x0XHRjb25uZWN0aW9uX3RvX2luZm8oXHUwMDI2Y29ubmVjdGlvbl9pbmZvLCBjb25uZWN0aW9uKTtcbitcdFx0ZXJyID0gY29ubmVjdGlvbl9pbmZvX3RvX3NrYihza2IsIFx1MDAyNmNvbm5lY3Rpb25faW5mbyk7XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0cmV0dXJuIGVycjtcbitcdFx0Y29ubmVjdGlvbl9zdGF0aXN0aWNzLmNvbm5fY29uZ2VzdGVkID1cbitcdFx0XHR0ZXN0X2JpdChORVRfQ09OR0VTVEVELCBcdTAwMjZjb25uZWN0aW9uLVx1MDAzZWZsYWdzKTtcbitcdFx0ZXJyID0gY29ubmVjdGlvbl9zdGF0aXN0aWNzX3RvX3NrYihza2IsIFx1MDAyNmNvbm5lY3Rpb25fc3RhdGlzdGljcyk7XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0cmV0dXJuIGVycjtcbitcdFx0Y2ItXHUwMDNlYXJnc1syXSA9IChsb25nKWNvbm5lY3Rpb247XG4rXHR9XG4rXHRnZW5sbXNnX2VuZChza2IsIGRoKTtcbitcdHJldHVybiAwO1xuK31cbitcbiBpbnQgZHJiZF9ubF9nZXRfY29ubmVjdGlvbnNfZHVtcGl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbiB7XG4gXHRzdHJ1Y3QgbmxhdHRyICpyZXNvdXJjZV9maWx0ZXI7XG4gXHRzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UgPSBOVUxMLCAqbmV4dF9yZXNvdXJjZTtcbiBcdHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb247XG4tXHRpbnQgZXJyID0gMCwgcmV0Y29kZTtcbi1cdHN0cnVjdCBkcmJkX2dlbmxtc2doZHIgKmRoO1xuLVx0c3RydWN0IGNvbm5lY3Rpb25faW5mbyBjb25uZWN0aW9uX2luZm87XG4tXHRzdHJ1Y3QgY29ubmVjdGlvbl9zdGF0aXN0aWNzIGNvbm5lY3Rpb25fc3RhdGlzdGljcztcbitcdGludCBlcnIgPSAwO1xuIFxuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0cmVzb3VyY2UgPSAoc3RydWN0IGRyYmRfcmVzb3VyY2UgKiljYi1cdTAwM2VhcmdzWzBdO1xuQEAgLTM1NDQsMTcgKzM1ODYsMjMgQEAgaW50IGRyYmRfbmxfZ2V0X2Nvbm5lY3Rpb25zX2R1bXBpdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFja1xuIFx0XHRyZXNvdXJjZV9maWx0ZXIgPSBmaW5kX2NmZ19jb250ZXh0X2F0dHIoY2ItXHUwMDNlbmxoLFxuIFx0XHRcdFx0RFJCRF9BX0RSQkRfQ0ZHX0NPTlRFWFRfQ1RYX1JFU09VUkNFX05BTUUpO1xuIFx0XHRpZiAocmVzb3VyY2VfZmlsdGVyKSB7XG4tXHRcdFx0cmV0Y29kZSA9IEVSUl9SRVNfTk9UX0tOT1dOO1xuIFx0XHRcdHJlc291cmNlID0gZHJiZF9maW5kX3Jlc291cmNlKG5sYV9kYXRhKHJlc291cmNlX2ZpbHRlcikpO1xuLVx0XHRcdGlmICghcmVzb3VyY2UpXG4tXHRcdFx0XHRnb3RvIHB1dF9yZXN1bHQ7XG4rXHRcdFx0aWYgKCFyZXNvdXJjZSkge1xuK1x0XHRcdFx0ZXJyID0gZHJiZF9ubF9wdXRfZHVtcF9jb25uZWN0aW9uc19yZXN1bHQoXG4rXHRcdFx0XHRcdHNrYiwgY2IsIHJlc291cmNlLCBOVUxMLFxuK1x0XHRcdFx0XHRFUlJfUkVTX05PVF9LTk9XTik7XG4rXHRcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbitcdFx0XHRcdGdvdG8gcmV0O1xuK1x0XHRcdH1cbiBcdFx0XHRjYi1cdTAwM2VhcmdzWzBdID0gKGxvbmcpcmVzb3VyY2U7XG4gXHRcdFx0Y2ItXHUwMDNlYXJnc1sxXSA9IFNJTkdMRV9SRVNPVVJDRTtcbiBcdFx0fVxuIFx0fVxuIFx0aWYgKCFyZXNvdXJjZSkge1xuLVx0XHRpZiAobGlzdF9lbXB0eShcdTAwMjZkcmJkX3Jlc291cmNlcykpXG4tXHRcdFx0Z290byBvdXQ7XG4rXHRcdGlmIChsaXN0X2VtcHR5KFx1MDAyNmRyYmRfcmVzb3VyY2VzKSkge1xuK1x0XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0XHRcdGdvdG8gcmV0O1xuK1x0XHR9XG4gXHRcdHJlc291cmNlID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZkcmJkX3Jlc291cmNlcywgc3RydWN0IGRyYmRfcmVzb3VyY2UsIHJlc291cmNlcyk7XG4gXHRcdGtyZWZfZ2V0KFx1MDAyNnJlc291cmNlLVx1MDAzZWtyZWYpO1xuIFx0XHRjYi1cdTAwM2VhcmdzWzBdID0gKGxvbmcpcmVzb3VyY2U7XG5AQCAtMzU3OCw4ICszNjI2LDkgQEAgaW50IGRyYmRfbmxfZ2V0X2Nvbm5lY3Rpb25zX2R1bXBpdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFja1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UoY29ubmVjdGlvbiwgXHUwMDI2cmVzb3VyY2UtXHUwMDNlY29ubmVjdGlvbnMsIGNvbm5lY3Rpb25zKSB7XG4gXHRcdGlmICghaGFzX25ldF9jb25mKGNvbm5lY3Rpb24pKVxuIFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRyZXRjb2RlID0gTk9fRVJST1I7XG4tXHRcdGdvdG8gcHV0X3Jlc3VsdDsgIC8qIG9ubHkgb25lIGl0ZXJhdGlvbiAqL1xuK1x0XHRlcnIgPSBkcmJkX25sX3B1dF9kdW1wX2Nvbm5lY3Rpb25zX3Jlc3VsdChza2IsIGNiLCByZXNvdXJjZSxcbitcdFx0XHRcdFx0XHRcdCAgY29ubmVjdGlvbiwgTk9fRVJST1IpO1xuK1x0XHRnb3RvIG91dDsgLyogb25seSBvbmUgaXRlcmF0aW9uICovXG4gXHR9XG4gXG4gbm9fbW9yZV9jb25uZWN0aW9uczpcbkBAIC0zNjAyLDQ2ICszNjUxLDE0IEBAIGludCBkcmJkX25sX2dldF9jb25uZWN0aW9uc19kdW1waXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2tcbiBcdFx0Y2ItXHUwMDNlYXJnc1syXSA9IDA7XG4gXHRcdGdvdG8gbmV4dF9yZXNvdXJjZTtcbiBcdH1cbi1cdGdvdG8gb3V0OyAgLyogbm8gbW9yZSByZXNvdXJjZXMgKi9cbiBcbi1wdXRfcmVzdWx0OlxuLVx0ZGggPSBnZW5sbXNnX3B1dChza2IsIE5FVExJTktfQ0IoY2ItXHUwMDNlc2tiKS5wb3J0aWQsXG4tXHRcdFx0Y2ItXHUwMDNlbmxoLVx1MDAzZW5sbXNnX3NlcSwgXHUwMDI2ZHJiZF9ubF9mYW1pbHksXG4tXHRcdFx0TkxNX0ZfTVVMVEksIERSQkRfQURNX0dFVF9DT05ORUNUSU9OUyk7XG4tXHRlcnIgPSAtRU5PTUVNO1xuLVx0aWYgKCFkaClcbi1cdFx0Z290byBvdXQ7XG4tXHRkaC1cdTAwM2VyZXRfY29kZSA9IHJldGNvZGU7XG4tXHRkaC1cdTAwM2VtaW5vciA9IC0xVTtcbi1cdGlmIChyZXRjb2RlID09IE5PX0VSUk9SKSB7XG4tXHRcdHN0cnVjdCBuZXRfY29uZiAqbmV0X2NvbmY7XG4tXG4tXHRcdGVyciA9IG5sYV9wdXRfZHJiZF9jZmdfY29udGV4dChza2IsIHJlc291cmNlLCBjb25uZWN0aW9uLCBOVUxMKTtcbi1cdFx0aWYgKGVycilcbi1cdFx0XHRnb3RvIG91dDtcbi1cdFx0bmV0X2NvbmYgPSByY3VfZGVyZWZlcmVuY2UoY29ubmVjdGlvbi1cdTAwM2VuZXRfY29uZik7XG4tXHRcdGlmIChuZXRfY29uZikge1xuLVx0XHRcdGVyciA9IG5ldF9jb25mX3RvX3NrYihza2IsIG5ldF9jb25mKTtcbi1cdFx0XHRpZiAoZXJyKVxuLVx0XHRcdFx0Z290byBvdXQ7XG4tXHRcdH1cbi1cdFx0Y29ubmVjdGlvbl90b19pbmZvKFx1MDAyNmNvbm5lY3Rpb25faW5mbywgY29ubmVjdGlvbik7XG4tXHRcdGVyciA9IGNvbm5lY3Rpb25faW5mb190b19za2Ioc2tiLCBcdTAwMjZjb25uZWN0aW9uX2luZm8pO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdGdvdG8gb3V0O1xuLVx0XHRjb25uZWN0aW9uX3N0YXRpc3RpY3MuY29ubl9jb25nZXN0ZWQgPSB0ZXN0X2JpdChORVRfQ09OR0VTVEVELCBcdTAwMjZjb25uZWN0aW9uLVx1MDAzZWZsYWdzKTtcbi1cdFx0ZXJyID0gY29ubmVjdGlvbl9zdGF0aXN0aWNzX3RvX3NrYihza2IsIFx1MDAyNmNvbm5lY3Rpb25fc3RhdGlzdGljcyk7XG4tXHRcdGlmIChlcnIpXG4tXHRcdFx0Z290byBvdXQ7XG4tXHRcdGNiLVx1MDAzZWFyZ3NbMl0gPSAobG9uZyljb25uZWN0aW9uO1xuLVx0fVxuLVx0Z2VubG1zZ19lbmQoc2tiLCBkaCk7XG4tXHRlcnIgPSAwO1xuK1x0Lyogbm8gbW9yZSByZXNvdXJjZXMgKi9cbiBcbiBvdXQ6XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbi1cdGlmIChyZXNvdXJjZSlcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnJlc291cmNlLVx1MDAzZWNvbmZfdXBkYXRlKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZyZXNvdXJjZS1cdTAwM2Vjb25mX3VwZGF0ZSk7XG4rXG4rcmV0OlxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcdHJldHVybiBza2ItXHUwMDNlbGVuO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jXG5pbmRleCA1OGI5NWJmNGJkY2E2YS4uYjRhMzUwY2QwM2IwNGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jXG5AQCAtMTc0LDggKzE3NCw5IEBAIFlvdSBtdXN0IG5vdCBoYXZlIHRoZSByZXFfbG9jazpcbiAgKiB3X3NhbWU6IHBheWxvYWRfc2l6ZSA9PSBsb2dpY2FsX2Jsb2NrX3NpemVcbiAgKiB0cmltOiBwYXlsb2FkX3NpemUgPT0gMCAqL1xuIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqXG4tZHJiZF9hbGxvY19wZWVyX3JlcShzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHU2NCBpZCwgc2VjdG9yX3Qgc2VjdG9yLFxuLVx0XHQgICAgdW5zaWduZWQgaW50IHJlcXVlc3Rfc2l6ZSwgdW5zaWduZWQgaW50IHBheWxvYWRfc2l6ZSwgZ2ZwX3QgZ2ZwX21hc2spIF9fbXVzdF9ob2xkKGxvY2FsKVxuK2RyYmRfYWxsb2NfcGVlcl9yZXEoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCB1NjQgaWQsXG4rXHRcdCAgICBzZWN0b3JfdCBzZWN0b3IsIHVuc2lnbmVkIGludCByZXF1ZXN0X3NpemUsXG4rXHRcdCAgICB1bnNpZ25lZCBpbnQgcGF5bG9hZF9zaXplLCBnZnBfdCBnZnBfbWFzaylcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHBlZXJfZGV2aWNlLVx1MDAzZWRldmljZTtcbiBcdHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXE7XG5AQCAtMjg3LDYgKzI4OCw3IEBAIHN0YXRpYyBpbnQgZHJiZF9maW5pc2hfcGVlcl9yZXFzKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxuIFxuIHN0YXRpYyB2b2lkIF9kcmJkX3dhaXRfZWVfbGlzdF9lbXB0eShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbiBcdFx0XHRcdCAgICAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcbitcdF9fbXVzdF9ob2xkKFx1MDAyNmRldmljZS1cdTAwM2VyZXNvdXJjZS1cdTAwM2VyZXFfbG9jaylcbiB7XG4gXHRERUZJTkVfV0FJVCh3YWl0KTtcbiBcbkBAIC04OTYsNiArODk4LDggQEAgc3RhdGljIGludCBjb25uX2Nvbm5lY3Qoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbilcbiBcdGlmIChkcmJkX3NlbmRfcHJvdG9jb2woY29ubmVjdGlvbikgPT0gLUVPUE5PVFNVUFApXG4gXHRcdHJldHVybiAtMTtcbiBcbitcdC8qIGNvbnRleHRfdW5zYWZlKCkgYmVjYXVzZSBvZiB0d28gbG9ja2luZyBsb29wcyAqL1xuK1x0Y29udGV4dF91bnNhZmUoXG4gXHQvKiBQcmV2ZW50IGEgcmFjZSBiZXR3ZWVuIHJlc3luYy1oYW5kc2hha2UgYW5kXG4gXHQgKiBiZWluZyBwcm9tb3RlZCB0byBQcmltYXJ5LlxuIFx0ICpcbkBAIC05MTMsNiArOTE3LDcgQEAgc3RhdGljIGludCBjb25uX2Nvbm5lY3Qoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbilcbiBcbiBcdGlkcl9mb3JfZWFjaF9lbnRyeShcdTAwMjZjb25uZWN0aW9uLVx1MDAzZXBlZXJfZGV2aWNlcywgcGVlcl9kZXZpY2UsIHZucilcbiBcdFx0bXV0ZXhfdW5sb2NrKHBlZXJfZGV2aWNlLVx1MDAzZWRldmljZS1cdTAwM2VzdGF0ZV9tdXRleCk7XG4rXHQpO1xuIFxuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0aWRyX2Zvcl9lYWNoX2VudHJ5KFx1MDAyNmNvbm5lY3Rpb24tXHUwMDNlcGVlcl9kZXZpY2VzLCBwZWVyX2RldmljZSwgdm5yKSB7XG5AQCAtMTY1Nyw3ICsxNjYyLDcgQEAgc3RhdGljIHZvaWQgZHJiZF9jc3VtX2VlX3NpemUoc3RydWN0IGNyeXB0b19zaGFzaCAqaCxcbiAgKi9cbiBzdGF0aWMgc3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpcbiByZWFkX2luX2Jsb2NrKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSwgdTY0IGlkLCBzZWN0b3JfdCBzZWN0b3IsXG4tXHQgICAgICBzdHJ1Y3QgcGFja2V0X2luZm8gKnBpKSBfX211c3RfaG9sZChsb2NhbClcbitcdCAgICAgIHN0cnVjdCBwYWNrZXRfaW5mbyAqcGkpXG4ge1xuIFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBwZWVyX2RldmljZS1cdTAwM2VkZXZpY2U7XG4gXHRjb25zdCBzZWN0b3JfdCBjYXBhY2l0eSA9IGdldF9jYXBhY2l0eShkZXZpY2UtXHUwMDNldmRpc2spO1xuQEAgLTE4NjgsOCArMTg3Myw4IEBAIHN0YXRpYyBpbnQgZV9lbmRfcmVzeW5jX2Jsb2NrKHN0cnVjdCBkcmJkX3dvcmsgKncsIGludCB1bnVzZWQpXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbi1zdGF0aWMgaW50IHJlY3ZfcmVzeW5jX3JlYWQoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLCBzZWN0b3JfdCBzZWN0b3IsXG4tXHRcdFx0ICAgIHN0cnVjdCBwYWNrZXRfaW5mbyAqcGkpIF9fcmVsZWFzZXMobG9jYWwpXG4rc3RhdGljIGludCByZWN2X3Jlc3luY19yZWFkKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcbitcdFx0XHQgICAgc2VjdG9yX3Qgc2VjdG9yLCBzdHJ1Y3QgcGFja2V0X2luZm8gKnBpKVxuIHtcbiBcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtXHUwMDNlZGV2aWNlO1xuIFx0c3RydWN0IGRyYmRfcGVlcl9yZXF1ZXN0ICpwZWVyX3JlcTtcbkBAIC0yMjMwLDYgKzIyMzUsNyBAQCBzdGF0aWMgYmxrX29wZl90IHdpcmVfZmxhZ3NfdG9fYmlvKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIHUzMiBkcGYpXG4gXG4gc3RhdGljIHZvaWQgZmFpbF9wb3N0cG9uZWRfcmVxdWVzdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3RvcixcbiBcdFx0XHRcdCAgICB1bnNpZ25lZCBpbnQgc2l6ZSlcbitcdF9fbXVzdF9ob2xkKFx1MDAyNmRldmljZS1cdTAwM2VyZXNvdXJjZS1cdTAwM2VyZXFfbG9jaylcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UgPSBmaXJzdF9wZWVyX2RldmljZShkZXZpY2UpO1xuIFx0c3RydWN0IGRyYmRfaW50ZXJ2YWwgKmk7XG5AQCAtMjI1Niw2ICsyMjYyLDcgQEAgc3RhdGljIHZvaWQgZmFpbF9wb3N0cG9uZWRfcmVxdWVzdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHNlY3Rvcl90IHNlY3RvcixcbiBcbiBzdGF0aWMgaW50IGhhbmRsZV93cml0ZV9jb25mbGljdHMoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4gXHRcdFx0XHQgIHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpXG4rXHRfX211c3RfaG9sZChcdTAwMjZkZXZpY2UtXHUwMDNlcmVzb3VyY2UtXHUwMDNlcmVxX2xvY2spXG4ge1xuIFx0c3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiA9IHBlZXJfcmVxLVx1MDAzZXBlZXJfZGV2aWNlLVx1MDAzZWNvbm5lY3Rpb247XG4gXHRib29sIHJlc29sdmVfY29uZmxpY3RzID0gdGVzdF9iaXQoUkVTT0xWRV9DT05GTElDVFMsIFx1MDAyNmNvbm5lY3Rpb24tXHUwMDNlZmxhZ3MpO1xuQEAgLTI4MjYsNyArMjgzMyw3IEBAIHN0YXRpYyBpbnQgcmVjZWl2ZV9EYXRhUmVxdWVzdChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBzdHJ1Y3QgcGFja2V0XG4gLypcbiAgKiBkcmJkX2FzYl9yZWNvdmVyXzBwICAtICBSZWNvdmVyIGFmdGVyIHNwbGl0LWJyYWluIHdpdGggbm8gcmVtYWluaW5nIHByaW1hcmllc1xuICAqL1xuLXN0YXRpYyBpbnQgZHJiZF9hc2JfcmVjb3Zlcl8wcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkKGxvY2FsKVxuK3N0YXRpYyBpbnQgZHJiZF9hc2JfcmVjb3Zlcl8wcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpXG4ge1xuIFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSBwZWVyX2RldmljZS1cdTAwM2VkZXZpY2U7XG4gXHRpbnQgc2VsZiwgcGVlciwgcnYgPSAtMTAwO1xuQEAgLTI5MDksNyArMjkxNiw3IEBAIHN0YXRpYyBpbnQgZHJiZF9hc2JfcmVjb3Zlcl8wcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkXG4gLypcbiAgKiBkcmJkX2FzYl9yZWNvdmVyXzFwICAtICBSZWNvdmVyIGFmdGVyIHNwbGl0LWJyYWluIHdpdGggb25lIHJlbWFpbmluZyBwcmltYXJ5XG4gICovXG4tc3RhdGljIGludCBkcmJkX2FzYl9yZWNvdmVyXzFwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSkgX19tdXN0X2hvbGQobG9jYWwpXG4rc3RhdGljIGludCBkcmJkX2FzYl9yZWNvdmVyXzFwKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSlcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHBlZXJfZGV2aWNlLVx1MDAzZWRldmljZTtcbiBcdGludCBoZywgcnYgPSAtMTAwO1xuQEAgLTI5NjYsNyArMjk3Myw3IEBAIHN0YXRpYyBpbnQgZHJiZF9hc2JfcmVjb3Zlcl8xcChzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UpIF9fbXVzdF9ob2xkXG4gLypcbiAgKiBkcmJkX2FzYl9yZWNvdmVyXzJwICAtICBSZWNvdmVyIGFmdGVyIHNwbGl0LWJyYWluIHdpdGggdHdvIHJlbWFpbmluZyBwcmltYXJpZXNcbiAgKi9cbi1zdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMnAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKSBfX211c3RfaG9sZChsb2NhbClcbitzdGF0aWMgaW50IGRyYmRfYXNiX3JlY292ZXJfMnAoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlKVxuIHtcbiBcdHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlID0gcGVlcl9kZXZpY2UtXHUwMDNlZGV2aWNlO1xuIFx0aW50IGhnLCBydiA9IC0xMDA7XG5AQCAtMzA0NCw3ICszMDUxLDcgQEAgc3RhdGljIHZvaWQgZHJiZF91dWlkX2R1bXAoc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIGNoYXIgKnRleHQsIHU2NCAqdXVpZCxcbiAgKi9cbiBcbiBzdGF0aWMgaW50IGRyYmRfdXVpZF9jb21wYXJlKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpjb25zdCBwZWVyX2RldmljZSxcbi1cdFx0ZW51bSBkcmJkX3JvbGUgY29uc3QgcGVlcl9yb2xlLCBpbnQgKnJ1bGVfbnIpIF9fbXVzdF9ob2xkKGxvY2FsKVxuK1x0XHRcdCAgICAgZW51bSBkcmJkX3JvbGUgY29uc3QgcGVlcl9yb2xlLCBpbnQgKnJ1bGVfbnIpXG4ge1xuIFx0c3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29uc3QgY29ubmVjdGlvbiA9IHBlZXJfZGV2aWNlLVx1MDAzZWNvbm5lY3Rpb247XG4gXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHBlZXJfZGV2aWNlLVx1MDAzZWRldmljZTtcbkBAIC0zMjY0LDcgKzMyNzEsNyBAQCBzdGF0aWMgaW50IGRyYmRfdXVpZF9jb21wYXJlKHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpjb25zdCBwZWVyX2RldmljZSxcbiAgKi9cbiBzdGF0aWMgZW51bSBkcmJkX2Nvbm5zIGRyYmRfc3luY19oYW5kc2hha2Uoc3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlLFxuIFx0XHRcdFx0XHQgICBlbnVtIGRyYmRfcm9sZSBwZWVyX3JvbGUsXG4tXHRcdFx0XHRcdCAgIGVudW0gZHJiZF9kaXNrX3N0YXRlIHBlZXJfZGlzaykgX19tdXN0X2hvbGQobG9jYWwpXG4rXHRcdFx0XHRcdCAgIGVudW0gZHJiZF9kaXNrX3N0YXRlIHBlZXJfZGlzaylcbiB7XG4gXHRzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSA9IHBlZXJfZGV2aWNlLVx1MDAzZWRldmljZTtcbiBcdGVudW0gZHJiZF9jb25ucyBydiA9IENfTUFTSztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5jXG5pbmRleCA3MGY3NWVmMDc5NDU3ZC4uMWNjNDU1ODQ2ZjkyMDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuY1xuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmNcbkBAIC05NTEsNyArOTUxLDkgQEAgc3RhdGljIGJvb2wgcmVtb3RlX2R1ZV90b19yZWFkX2JhbGFuY2luZyhzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc2VjdG9yX3Qgc2VcbiAgKlxuICAqIE9ubHkgd2F5IG91dDogcmVtb3ZlIHRoZSBjb25mbGljdGluZyBpbnRlcnZhbHMgZnJvbSB0aGUgdHJlZS5cbiAgKi9cbi1zdGF0aWMgdm9pZCBjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKVxuK3N0YXRpYyB2b2lkIGNvbXBsZXRlX2NvbmZsaWN0aW5nX3dyaXRlcyhzdHJ1Y3QgZHJiZF9yZXNvdXJjZSAqcmVzb3VyY2UsXG4rXHRcdFx0XHRcdHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSlcbitcdF9fbXVzdF9ob2xkKFx1MDAyNnJlc291cmNlLVx1MDAzZXJlcV9sb2NrKVxuIHtcbiBcdERFRklORV9XQUlUKHdhaXQpO1xuIFx0c3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UgPSByZXEtXHUwMDNlZGV2aWNlO1xuQEAgLTk3NCw5ICs5NzYsOSBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKVxuIFx0XHQvKiBJbmRpY2F0ZSB0byB3YWtlIHVwIGRldmljZS1cdTAwM2VtaXNjX3dhaXQgb24gcHJvZ3Jlc3MuICAqL1xuIFx0XHRwcmVwYXJlX3RvX3dhaXQoXHUwMDI2ZGV2aWNlLVx1MDAzZW1pc2Nfd2FpdCwgXHUwMDI2d2FpdCwgVEFTS19VTklOVEVSUlVQVElCTEUpO1xuIFx0XHRpLVx1MDAzZXdhaXRpbmcgPSB0cnVlO1xuLVx0XHRzcGluX3VubG9ja19pcnEoXHUwMDI2ZGV2aWNlLVx1MDAzZXJlc291cmNlLVx1MDAzZXJlcV9sb2NrKTtcbitcdFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNnJlc291cmNlLVx1MDAzZXJlcV9sb2NrKTtcbiBcdFx0c2NoZWR1bGUoKTtcbi1cdFx0c3Bpbl9sb2NrX2lycShcdTAwMjZkZXZpY2UtXHUwMDNlcmVzb3VyY2UtXHUwMDNlcmVxX2xvY2spO1xuK1x0XHRzcGluX2xvY2tfaXJxKFx1MDAyNnJlc291cmNlLVx1MDAzZXJlcV9sb2NrKTtcbiBcdH1cbiBcdGZpbmlzaF93YWl0KFx1MDAyNmRldmljZS1cdTAwM2VtaXNjX3dhaXQsIFx1MDAyNndhaXQpO1xuIH1cbkBAIC0xMzI5LDcgKzEzMzEsNyBAQCBzdGF0aWMgdm9pZCBkcmJkX3NlbmRfYW5kX3N1Ym1pdChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgc3RydWN0IGRyYmRfcmVxdWVzdFxuIFx0XHQvKiBUaGlzIG1heSB0ZW1wb3JhcmlseSBnaXZlIHVwIHRoZSByZXFfbG9jayxcbiBcdFx0ICogYnV0IHdpbGwgcmUtYXF1aXJlIGl0IGJlZm9yZSBpdCByZXR1cm5zIGhlcmUuXG4gXHRcdCAqIE5lZWRzIHRvIGJlIGJlZm9yZSB0aGUgY2hlY2sgb24gZHJiZF9zdXNwZW5kZWQoKSAqL1xuLVx0XHRjb21wbGV0ZV9jb25mbGljdGluZ193cml0ZXMocmVxKTtcbitcdFx0Y29tcGxldGVfY29uZmxpY3Rpbmdfd3JpdGVzKHJlc291cmNlLCByZXEpO1xuIFx0XHQvKiBubyBtb3JlIGdpdmluZyB1cCByZXFfbG9jayBmcm9tIG5vdyBvbiEgKi9cbiBcbiBcdFx0LyogY2hlY2sgZm9yIGNvbmdlc3Rpb24sIGFuZCBwb3RlbnRpYWxseSBzdG9wIHNlbmRpbmdcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuaCBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5oXG5pbmRleCA5YWU4NjBlNzU5MWIzMi4uN2YyNGNiOGU1NDI5YTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuaFxuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmhcbkBAIC0yNjQsMjAgKzI2NCwxOCBAQCBzdHJ1Y3QgYmlvX2FuZF9lcnJvciB7XG4gXHRpbnQgZXJyb3I7XG4gfTtcbiBcbi1leHRlcm4gdm9pZCBzdGFydF9uZXdfdGxfZXBvY2goc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbik7XG4tZXh0ZXJuIHZvaWQgZHJiZF9yZXFfZGVzdHJveShzdHJ1Y3Qga3JlZiAqa3JlZik7XG4tZXh0ZXJuIGludCBfX3JlcV9tb2Qoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQsXG4tXHRcdHN0cnVjdCBkcmJkX3BlZXJfZGV2aWNlICpwZWVyX2RldmljZSxcbi1cdFx0c3RydWN0IGJpb19hbmRfZXJyb3IgKm0pO1xuLWV4dGVybiB2b2lkIGNvbXBsZXRlX21hc3Rlcl9iaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsXG4tXHRcdHN0cnVjdCBiaW9fYW5kX2Vycm9yICptKTtcbi1leHRlcm4gdm9pZCByZXF1ZXN0X3RpbWVyX2ZuKHN0cnVjdCB0aW1lcl9saXN0ICp0KTtcbi1leHRlcm4gdm9pZCB0bF9yZXN0YXJ0KHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGVudW0gZHJiZF9yZXFfZXZlbnQgd2hhdCk7XG4tZXh0ZXJuIHZvaWQgX3RsX3Jlc3RhcnQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgZW51bSBkcmJkX3JlcV9ldmVudCB3aGF0KTtcbi1leHRlcm4gdm9pZCB0bF9hYm9ydF9kaXNrX2lvKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbit2b2lkIHN0YXJ0X25ld190bF9lcG9jaChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbit2b2lkIGRyYmRfcmVxX2Rlc3Ryb3koc3RydWN0IGtyZWYgKmtyZWYpO1xuK2ludCBfX3JlcV9tb2Qoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQsXG4rXHQgICAgICBzdHJ1Y3QgZHJiZF9wZWVyX2RldmljZSAqcGVlcl9kZXZpY2UsIHN0cnVjdCBiaW9fYW5kX2Vycm9yICptKTtcbit2b2lkIGNvbXBsZXRlX21hc3Rlcl9iaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UsIHN0cnVjdCBiaW9fYW5kX2Vycm9yICptKTtcbit2b2lkIHJlcXVlc3RfdGltZXJfZm4oc3RydWN0IHRpbWVyX2xpc3QgKnQpO1xuK3ZvaWQgdGxfcmVzdGFydChzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCBlbnVtIGRyYmRfcmVxX2V2ZW50IHdoYXQpO1xuK3ZvaWQgX3RsX3Jlc3RhcnQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgZW51bSBkcmJkX3JlcV9ldmVudCB3aGF0KTtcbit2b2lkIHRsX2Fib3J0X2Rpc2tfaW8oc3RydWN0IGRyYmRfZGV2aWNlICpkZXZpY2UpO1xuIFxuIC8qIHRoaXMgaXMgaW4gZHJiZF9tYWluLmMgKi9cbi1leHRlcm4gdm9pZCBkcmJkX3Jlc3RhcnRfcmVxdWVzdChzdHJ1Y3QgZHJiZF9yZXF1ZXN0ICpyZXEpO1xuK3ZvaWQgZHJiZF9yZXN0YXJ0X3JlcXVlc3Qoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxKTtcbiBcbiAvKiB1c2UgdGhpcyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBkZWFsIHdpdGggY2FsbGluZyBjb21wbGV0ZV9tYXN0ZXJfYmlvKClcbiAgKiBvdXRzaWRlIHRoZSBzcGlubG9jaywgZS5nLiB3aGVuIHdhbGtpbmcgc29tZSBsaXN0IG9uIGNsZWFudXAuICovXG5AQCAtMzE5LDYgKzMxNyw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJlcV9tb2Qoc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxLFxuIFx0cmV0dXJuIHJ2O1xuIH1cbiBcbi1leHRlcm4gYm9vbCBkcmJkX3Nob3VsZF9kb19yZW1vdGUodW5pb24gZHJiZF9kZXZfc3RhdGUpO1xuK2Jvb2wgZHJiZF9zaG91bGRfZG9fcmVtb3RlKHVuaW9uIGRyYmRfZGV2X3N0YXRlKTtcbiBcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuY1xuaW5kZXggYWRjYmE3ZjFkOGVhNDkuLjQxNmE3MWQ3YTYxYzA2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuY1xuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuY1xuQEAgLTU0OSwxOSArNTQ5LDEwIEBAIF9yZXFfc3RfY29uZChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxuIFx0cmV0dXJuIHJ2O1xuIH1cbiBcbi0vKipcbi0gKiBkcmJkX3JlcV9zdGF0ZSgpIC0gUGVyZm9ybSBhbiBldmVudHVhbGx5IGNsdXN0ZXIgd2lkZSBzdGF0ZSBjaGFuZ2Vcbi0gKiBAZGV2aWNlOlx0RFJCRCBkZXZpY2UuXG4tICogQG1hc2s6XHRtYXNrIG9mIHN0YXRlIGJpdHMgdG8gY2hhbmdlLlxuLSAqIEB2YWw6XHR2YWx1ZSBvZiBuZXcgc3RhdGUgYml0cy5cbi0gKiBAZjpcdFx0ZmxhZ3Ncbi0gKlxuLSAqIFNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LCB1c2UgZHJiZF9yZXF1ZXN0X3N0YXRlKCkgb3Jcbi0gKiBfZHJiZF9yZXF1ZXN0X3N0YXRlKCkuXG4tICovXG4tc3RhdGljIGVudW0gZHJiZF9zdGF0ZV9ydlxuLWRyYmRfcmVxX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXG4tXHQgICAgICAgdW5pb24gZHJiZF9zdGF0ZSB2YWwsIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYpXG4rc3RhdGljIGVudW0gZHJiZF9zdGF0ZV9ydiBfX2RyYmRfcmVxX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHRcdFx0XHQgICB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXG4rXHRcdFx0XHRcdCAgIHVuaW9uIGRyYmRfc3RhdGUgdmFsLFxuK1x0XHRcdFx0XHQgICBlbnVtIGNoZ19zdGF0ZV9mbGFncyBmKVxuIHtcbiBcdHN0cnVjdCBjb21wbGV0aW9uIGRvbmU7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuQEAgLTU3MSw4ICs1NjIsNiBAQCBkcmJkX3JlcV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxuIFxuIFx0aW5pdF9jb21wbGV0aW9uKFx1MDAyNmRvbmUpO1xuIFxuLVx0aWYgKGYgXHUwMDI2IENTX1NFUklBTElaRSlcbi1cdFx0bXV0ZXhfbG9jayhkZXZpY2UtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuIFx0aWYgKGYgXHUwMDI2IENTX0lOSElCSVRfTURfSU8pXG4gXHRcdGJ1ZmZlciA9IGRyYmRfbWRfZ2V0X2J1ZmZlcihkZXZpY2UsIF9fZnVuY19fKTtcbiBcbkBAIC02MjksOCArNjE4LDM0IEBAIGRyYmRfcmVxX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXG4gYWJvcnQ6XG4gXHRpZiAoYnVmZmVyKVxuIFx0XHRkcmJkX21kX3B1dF9idWZmZXIoZGV2aWNlKTtcbi1cdGlmIChmIFx1MDAyNiBDU19TRVJJQUxJWkUpXG4rXG4rXHRyZXR1cm4gcnY7XG4rfVxuK1xuKy8qKlxuKyAqIGRyYmRfcmVxX3N0YXRlKCkgLSBQZXJmb3JtIGFuIGV2ZW50dWFsbHkgY2x1c3RlciB3aWRlIHN0YXRlIGNoYW5nZVxuKyAqIEBkZXZpY2U6XHREUkJEIGRldmljZS5cbisgKiBAbWFzazpcdG1hc2sgb2Ygc3RhdGUgYml0cyB0byBjaGFuZ2UuXG4rICogQHZhbDpcdHZhbHVlIG9mIG5ldyBzdGF0ZSBiaXRzLlxuKyAqIEBmOlx0XHRmbGFnc1xuKyAqXG4rICogU2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHksIHVzZSBkcmJkX3JlcXVlc3Rfc3RhdGUoKSBvclxuKyAqIF9kcmJkX3JlcXVlc3Rfc3RhdGUoKS5cbisgKi9cbitzdGF0aWMgZW51bSBkcmJkX3N0YXRlX3J2IGRyYmRfcmVxX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHRcdFx0XHQgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxuK1x0XHRcdFx0XHQgdW5pb24gZHJiZF9zdGF0ZSB2YWwsXG4rXHRcdFx0XHRcdCBlbnVtIGNoZ19zdGF0ZV9mbGFncyBmKVxuK3tcbitcdGVudW0gZHJiZF9zdGF0ZV9ydiBydjtcbitcbitcdGlmIChmIFx1MDAyNiBDU19TRVJJQUxJWkUpIHtcbitcdFx0bXV0ZXhfbG9jayhkZXZpY2UtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuK1x0XHRydiA9IF9fZHJiZF9yZXFfc3RhdGUoZGV2aWNlLCBtYXNrLCB2YWwsIGYpO1xuIFx0XHRtdXRleF91bmxvY2soZGV2aWNlLVx1MDAzZXN0YXRlX211dGV4KTtcbitcdH0gZWxzZSB7XG4rXHRcdHJ2ID0gX19kcmJkX3JlcV9zdGF0ZShkZXZpY2UsIG1hc2ssIHZhbCwgZik7XG4rXHR9XG4gXG4gXHRyZXR1cm4gcnY7XG4gfVxuQEAgLTY5OSw2ICs3MTQsNyBAQCBpbnQgZHJiZF9yZXF1ZXN0X2RldGFjaF9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxuIGVudW0gZHJiZF9zdGF0ZV9ydlxuIF9kcmJkX3JlcXVlc3Rfc3RhdGVfaG9sZGluZ19zdGF0ZV9tdXRleChzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLFxuIFx0XHQgICAgdW5pb24gZHJiZF9zdGF0ZSB2YWwsIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYpXG4rXHRfX211c3RfaG9sZChcdTAwMjZkZXZpY2UtXHUwMDNlc3RhdGVfbXV0ZXgpXG4ge1xuIFx0ZW51bSBkcmJkX3N0YXRlX3J2IHJ2O1xuIFxuQEAgLTIyOTIsNiArMjMwOCw3IEBAIF9jb25uX3JxX2NvbmQoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLCB1bmlvbiBkXG4gZW51bSBkcmJkX3N0YXRlX3J2XG4gX2Nvbm5fcmVxdWVzdF9zdGF0ZShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssIHVuaW9uIGRyYmRfc3RhdGUgdmFsLFxuIFx0XHQgICAgZW51bSBjaGdfc3RhdGVfZmxhZ3MgZmxhZ3MpXG4rXHRfX2NvbnRleHRfdW5zYWZlKGNvbmRpdGlvbmFsIGxvY2tpbmcpXG4ge1xuIFx0ZW51bSBkcmJkX3N0YXRlX3J2IHJ2ID0gU1NfU1VDQ0VTUztcbiBcdHN0cnVjdCBhZnRlcl9jb25uX3N0YXRlX2NoZ193b3JrICphY3NjdztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZS5oIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuaFxuaW5kZXggY2JhZWI4MDE4ZGJmNTkuLmE3ZTMxZDA5MjAzOTZiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuaFxuKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGUuaFxuQEAgLTExMiwyNiArMTEyLDIzIEBAIHVuaW9uIGRyYmRfZGV2X3N0YXRlIHtcbiBcdHVuc2lnbmVkIGludCBpO1xuIH07XG4gXG4tZXh0ZXJuIGVudW0gZHJiZF9zdGF0ZV9ydiBkcmJkX2NoYW5nZV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKmRldmljZSxcbi1cdFx0XHRcdFx0ICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzIGYsXG4tXHRcdFx0XHRcdCAgICB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXG4tXHRcdFx0XHRcdCAgICB1bmlvbiBkcmJkX3N0YXRlIHZhbCk7XG4tZXh0ZXJuIHZvaWQgZHJiZF9mb3JjZV9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSxcbi1cdFx0XHR1bmlvbiBkcmJkX3N0YXRlKTtcbi1leHRlcm4gZW51bSBkcmJkX3N0YXRlX3J2IF9kcmJkX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICosXG4tXHRcdFx0XHRcdCAgICAgIHVuaW9uIGRyYmRfc3RhdGUsXG4tXHRcdFx0XHRcdCAgICAgIHVuaW9uIGRyYmRfc3RhdGUsXG4tXHRcdFx0XHRcdCAgICAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzKTtcbi1cbi1leHRlcm4gZW51bSBkcmJkX3N0YXRlX3J2XG4rZW51bSBkcmJkX3N0YXRlX3J2IGRyYmRfY2hhbmdlX3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlLFxuK1x0XHRcdFx0ICAgICBlbnVtIGNoZ19zdGF0ZV9mbGFncyBmLFxuK1x0XHRcdFx0ICAgICB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssXG4rXHRcdFx0XHQgICAgIHVuaW9uIGRyYmRfc3RhdGUgdmFsKTtcbit2b2lkIGRyYmRfZm9yY2Vfc3RhdGUoc3RydWN0IGRyYmRfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsIHVuaW9uIGRyYmRfc3RhdGUpO1xuK2VudW0gZHJiZF9zdGF0ZV9ydiBfZHJiZF9yZXF1ZXN0X3N0YXRlKHN0cnVjdCBkcmJkX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLFxuK1x0XHRcdFx0ICAgICAgIHVuaW9uIGRyYmRfc3RhdGUsIGVudW0gY2hnX3N0YXRlX2ZsYWdzKTtcbitcbitlbnVtIGRyYmRfc3RhdGVfcnZcbiBfZHJiZF9yZXF1ZXN0X3N0YXRlX2hvbGRpbmdfc3RhdGVfbXV0ZXgoc3RydWN0IGRyYmRfZGV2aWNlICosIHVuaW9uIGRyYmRfc3RhdGUsXG4gXHRcdFx0XHRcdHVuaW9uIGRyYmRfc3RhdGUsIGVudW0gY2hnX3N0YXRlX2ZsYWdzKTtcbiBcbi1leHRlcm4gZW51bSBkcmJkX3N0YXRlX3J2IF9kcmJkX3NldF9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSxcbi1cdFx0XHRcdFx0ICBlbnVtIGNoZ19zdGF0ZV9mbGFncyxcbi1cdFx0XHRcdFx0ICBzdHJ1Y3QgY29tcGxldGlvbiAqZG9uZSk7XG4tZXh0ZXJuIHZvaWQgcHJpbnRfc3RfZXJyKHN0cnVjdCBkcmJkX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLFxuLVx0XHRcdHVuaW9uIGRyYmRfc3RhdGUsIGVudW0gZHJiZF9zdGF0ZV9ydik7XG4rZW51bSBkcmJkX3N0YXRlX3J2IF9kcmJkX3NldF9zdGF0ZShzdHJ1Y3QgZHJiZF9kZXZpY2UgKiwgdW5pb24gZHJiZF9zdGF0ZSxcbitcdFx0XHRcdCAgIGVudW0gY2hnX3N0YXRlX2ZsYWdzLFxuK1x0XHRcdFx0ICAgc3RydWN0IGNvbXBsZXRpb24gKmRvbmUpO1xuK3ZvaWQgcHJpbnRfc3RfZXJyKHN0cnVjdCBkcmJkX2RldmljZSAqLCB1bmlvbiBkcmJkX3N0YXRlLCB1bmlvbiBkcmJkX3N0YXRlLFxuK1x0XHQgIGVudW0gZHJiZF9zdGF0ZV9ydik7XG4gXG4gZW51bSBkcmJkX3N0YXRlX3J2XG4gX2Nvbm5fcmVxdWVzdF9zdGF0ZShzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLCB1bmlvbiBkcmJkX3N0YXRlIG1hc2ssIHVuaW9uIGRyYmRfc3RhdGUgdmFsLFxuQEAgLTE0MSw4ICsxMzgsOCBAQCBlbnVtIGRyYmRfc3RhdGVfcnZcbiBjb25uX3JlcXVlc3Rfc3RhdGUoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgdW5pb24gZHJiZF9zdGF0ZSBtYXNrLCB1bmlvbiBkcmJkX3N0YXRlIHZhbCxcbiBcdFx0ICAgZW51bSBjaGdfc3RhdGVfZmxhZ3MgZmxhZ3MpO1xuIFxuLWV4dGVybiB2b2lkIGRyYmRfcmVzdW1lX2FsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbi1leHRlcm4gYm9vbCBjb25uX2FsbF92b2xzX3VuY29uZihzdHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKTtcbit2b2lkIGRyYmRfcmVzdW1lX2FsKHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKTtcbitib29sIGNvbm5fYWxsX3ZvbHNfdW5jb25mKHN0cnVjdCBkcmJkX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24pO1xuIFxuIC8qKlxuICAqIGRyYmRfcmVxdWVzdF9zdGF0ZSgpIC0gUmVxdWVzdCBhIHN0YXRlIGNoYW5nZVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3N0YXRlX2NoYW5nZS5oIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfc3RhdGVfY2hhbmdlLmhcbmluZGV4IGE1NmE1N2Q2NzY4NjI5Li5mNThhNTUwMTQxNzdkZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3N0YXRlX2NoYW5nZS5oXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9zdGF0ZV9jaGFuZ2UuaFxuQEAgLTQwLDI1ICs0MCwxNyBAQCBzdHJ1Y3QgZHJiZF9zdGF0ZV9jaGFuZ2Uge1xuIFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2Vfc3RhdGVfY2hhbmdlICpwZWVyX2RldmljZXM7XG4gfTtcbiBcbi1leHRlcm4gc3RydWN0IGRyYmRfc3RhdGVfY2hhbmdlICpyZW1lbWJlcl9vbGRfc3RhdGUoc3RydWN0IGRyYmRfcmVzb3VyY2UgKiwgZ2ZwX3QpO1xuLWV4dGVybiB2b2lkIGNvcHlfb2xkX3RvX25ld19zdGF0ZV9jaGFuZ2Uoc3RydWN0IGRyYmRfc3RhdGVfY2hhbmdlICopO1xuLWV4dGVybiB2b2lkIGZvcmdldF9zdGF0ZV9jaGFuZ2Uoc3RydWN0IGRyYmRfc3RhdGVfY2hhbmdlICopO1xuLVxuLWV4dGVybiBpbnQgbm90aWZ5X3Jlc291cmNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLFxuLVx0XHRcdFx0XHQgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0XHQgdm9pZCAqLFxuLVx0XHRcdFx0XHQgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuLWV4dGVybiBpbnQgbm90aWZ5X2Nvbm5lY3Rpb25fc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosXG4tXHRcdFx0XHRcdCAgIHVuc2lnbmVkIGludCxcbi1cdFx0XHRcdFx0ICAgdm9pZCAqLFxuLVx0XHRcdFx0XHQgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7XG4tZXh0ZXJuIGludCBub3RpZnlfZGV2aWNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLFxuLVx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCxcbi1cdFx0XHRcdCAgICAgICB2b2lkICosXG4tXHRcdFx0XHQgICAgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuLWV4dGVybiBpbnQgbm90aWZ5X3BlZXJfZGV2aWNlX3N0YXRlX2NoYW5nZShzdHJ1Y3Qgc2tfYnVmZiAqLFxuLVx0XHRcdFx0XHQgICAgdW5zaWduZWQgaW50LFxuLVx0XHRcdFx0XHQgICAgdm9pZCAqLFxuLVx0XHRcdFx0XHQgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuK3N0cnVjdCBkcmJkX3N0YXRlX2NoYW5nZSAqcmVtZW1iZXJfb2xkX3N0YXRlKHN0cnVjdCBkcmJkX3Jlc291cmNlICosIGdmcF90KTtcbit2b2lkIGNvcHlfb2xkX3RvX25ld19zdGF0ZV9jaGFuZ2Uoc3RydWN0IGRyYmRfc3RhdGVfY2hhbmdlICopO1xuK3ZvaWQgZm9yZ2V0X3N0YXRlX2NoYW5nZShzdHJ1Y3QgZHJiZF9zdGF0ZV9jaGFuZ2UgKik7XG4rXG4raW50IG5vdGlmeV9yZXNvdXJjZV9zdGF0ZV9jaGFuZ2Uoc3RydWN0IHNrX2J1ZmYgKiwgdW5zaWduZWQgaW50LCB2b2lkICosXG4rXHRcdFx0XHQgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuK2ludCBub3RpZnlfY29ubmVjdGlvbl9zdGF0ZV9jaGFuZ2Uoc3RydWN0IHNrX2J1ZmYgKiwgdW5zaWduZWQgaW50LCB2b2lkICosXG4rXHRcdFx0XHQgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7XG4raW50IG5vdGlmeV9kZXZpY2Vfc3RhdGVfY2hhbmdlKHN0cnVjdCBza19idWZmICosIHVuc2lnbmVkIGludCwgdm9pZCAqLFxuK1x0XHRcdCAgICAgICBlbnVtIGRyYmRfbm90aWZpY2F0aW9uX3R5cGUgdHlwZSk7XG4raW50IG5vdGlmeV9wZWVyX2RldmljZV9zdGF0ZV9jaGFuZ2Uoc3RydWN0IHNrX2J1ZmYgKiwgdW5zaWduZWQgaW50LCB2b2lkICosXG4rXHRcdFx0XHQgICAgZW51bSBkcmJkX25vdGlmaWNhdGlvbl90eXBlIHR5cGUpO1xuIFxuICNlbmRpZiAgLyogRFJCRF9TVEFURV9DSEFOR0VfSCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3dvcmtlci5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfd29ya2VyLmNcbmluZGV4IDA2OTdmOTlmZWQxOGQ3Li42ZmVjNTliYmYwZTlhNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3dvcmtlci5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF93b3JrZXIuY1xuQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBkcmJkX21kX2VuZGlvKHN0cnVjdCBiaW8gKmJpbylcbiAvKiByZWFkcyBvbiBiZWhhbGYgb2YgdGhlIHBhcnRuZXIsXG4gICogXCJzdWJtaXR0ZWRcIiBieSB0aGUgcmVjZWl2ZXJcbiAgKi9cbi1zdGF0aWMgdm9pZCBkcmJkX2VuZGlvX3JlYWRfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpIF9fcmVsZWFzZXMobG9jYWwpXG4rc3RhdGljIHZvaWQgZHJiZF9lbmRpb19yZWFkX3NlY19maW5hbChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwO1xuIFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlID0gcGVlcl9yZXEtXHUwMDNlcGVlcl9kZXZpY2U7XG5AQCAtOTksNyArOTksNyBAQCBzdGF0aWMgdm9pZCBkcmJkX2VuZGlvX3JlYWRfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpIF9fcmVsZVxuIFxuIC8qIHdyaXRlcyBvbiBiZWhhbGYgb2YgdGhlIHBhcnRuZXIsIG9yIHJlc3luYyB3cml0ZXMsXG4gICogXCJzdWJtaXR0ZWRcIiBieSB0aGUgcmVjZWl2ZXIsIGZpbmFsIHN0YWdlLiAgKi9cbi12b2lkIGRyYmRfZW5kaW9fd3JpdGVfc2VjX2ZpbmFsKHN0cnVjdCBkcmJkX3BlZXJfcmVxdWVzdCAqcGVlcl9yZXEpIF9fcmVsZWFzZXMobG9jYWwpXG4rdm9pZCBkcmJkX2VuZGlvX3dyaXRlX3NlY19maW5hbChzdHJ1Y3QgZHJiZF9wZWVyX3JlcXVlc3QgKnBlZXJfcmVxKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwO1xuIFx0c3RydWN0IGRyYmRfcGVlcl9kZXZpY2UgKnBlZXJfZGV2aWNlID0gcGVlcl9yZXEtXHUwMDNlcGVlcl9kZXZpY2U7XG5AQCAtMTkyMywxMCArMTkyMyw4IEBAIHN0YXRpYyB2b2lkIGRyYmRfbGRldl9kZXN0cm95KHN0cnVjdCBkcmJkX2RldmljZSAqZGV2aWNlKVxuIFx0bGNfZGVzdHJveShkZXZpY2UtXHUwMDNlYWN0X2xvZyk7XG4gXHRkZXZpY2UtXHUwMDNlYWN0X2xvZyA9IE5VTEw7XG4gXG4tXHRfX2FjcXVpcmUobG9jYWwpO1xuIFx0ZHJiZF9iYWNraW5nX2Rldl9mcmVlKGRldmljZSwgZGV2aWNlLVx1MDAzZWxkZXYpO1xuIFx0ZGV2aWNlLVx1MDAzZWxkZXYgPSBOVUxMO1xuLVx0X19yZWxlYXNlKGxvY2FsKTtcbiBcbiBcdGNsZWFyX2JpdChHT0lOR19ESVNLTEVTUywgXHUwMDI2ZGV2aWNlLVx1MDAzZWZsYWdzKTtcbiBcdHdha2VfdXAoXHUwMDI2ZGV2aWNlLVx1MDAzZW1pc2Nfd2FpdCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxOTo0OTo0My4zNjM5NzQ4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA2MTExNDgxOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggQW5hbHlzaXM6IFNwYXJzZSBBbm5vdGF0aW9uIFx1MDAyNiBSZWZhY3RvcmluZyBmb3IgQ29udGV4dCBUcmFja2luZyoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggZm9yIHRoZSBEUkJEIGJsb2NrIGRyaXZlciwgYW5kIHRoZSBjb21taXQgbWVzc2FnZSBpbmRpY2F0ZXMgaXQncyBhIHJlc3BvbnNlIHRvIGEgc3RhdGljIGFuYWx5c2lzIHJlcG9ydCwgc3BlY2lmaWNhbGx5IGZyb20gdGhlIFwic3l6LWNsdXN0ZXJcIi4gTXkgaW5pdGlhbCBnbGFuY2Ugc3VnZ2VzdHMgYSBmb2N1cyBvbiBjbGVhbmluZyB1cCB0aGUgY29kZSBmb3IgYmV0dGVyIHN0YXRpYyBhbmFseXNpcyBjb21wYXRpYmlsaXR5LiBJdCBsb29rcyBsaWtlIGl0IG1vZGlmaWVzIGEgZmV3IGZpbGVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvYmxvY2svZHJiZC9gIGRpcmVjdG9yeS5cblxuVGhlIGZpcnN0IHRoaW5nIHRoYXQgZ3JhYnMgbXkgYXR0ZW50aW9uIGlzIHRoZSBhZGRpdGlvbiBvZiBgQ09OVEVYVF9BTkFMWVNJUyA6PSB5YCB0byB0aGUgYE1ha2VmaWxlYC4gVGhhdCdzIGEgc3Ryb25nIGluZGljYXRvciB0aGF0IHRoZSBwcmltYXJ5IGdvYWwgaXMgdG8gYWRkcmVzcyBjb250ZXh0IHRyYWNraW5nIGlzc3VlcyBmbGFnZ2VkIGJ5IHRoZSBzdGF0aWMgYW5hbHl6ZXIsIGxpa2VseSBTcGFyc2UuICBUaGVuLCBjaGFuZ2VzIGluIGBkcmJkX2JpdG1hcC5jYCByZWFsbHkgaGlnaGxpZ2h0IHRoaXM6IHRoZSBhZGRpdGlvbiBhbmQgcmVtb3ZhbCBvZiBzcGFyc2UgYW5ub3RhdGlvbnMgKGBfX2FjcXVpcmVzYCwgYF9fcmVsZWFzZXNgLCBgX19hY3F1aXJlYCwgYF9fcmVsZWFzZWAsIGBfX211c3RfaG9sZGApLCBhbmQgdGhhdCBgZHJiZF9ibV9sb2NrYCB1cGRhdGUgaXMgYSBnb29kIGV4YW1wbGUuICBUaGUgb3JpZ2luYWwgY29kZSB1c2VkIGBtdXRleF90cnlsb2NrYCBmb2xsb3dlZCBieSBhIGBtdXRleF9sb2NrYCBpZiB0aGUgYHRyeWxvY2tgIGZhaWxlZCwgd2l0aCBhIHdhcm5pbmcuIFRoaXMgcGF0Y2ggc2ltcGx5IHJlcGxhY2VzIHRoZSBgbXV0ZXhfdHJ5bG9ja2Agd2l0aCBhIGRpcmVjdCBgbXV0ZXhfbG9ja2AgYWxvbmcgd2l0aCB0aGUgYXBwcm9wcmlhdGUgYF9fYWNxdWlyZWAgYW5ub3RhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudDsgaXQgc2ltcGxpZmllcyB0aGUgY29kZSBhbmQgcmVkdWNlcyBhIHNwdXJpb3VzIHdhcm5pbmcuIFRoZXJlJ3MgYWxzbyB0aGUgcmVtb3ZhbCBvZiBgaWYgKCFiKWAgY2hlY2tzIGluIGBkcmJkX2JtX2xvY2tgIGFuZCBgZHJiZF9ibV91bmxvY2tgLiAgVGhpcyAqY291bGQqIGJlIGEgYnVnIGlmIGBiYCBjYW4gYmUgYE5VTExgIHVuZGVyIGFueSBjaXJjdW1zdGFuY2UuIEhvd2V2ZXIsIGl0J3MgdmVyeSBsaWtlbHkgdGhhdCB0aGlzIGNoZWNrIHdhcyBkZWZlbnNpdmUgYW5kIHRoZSBhdXRob3IgZmVsdCBpdCB3YXMgbm90IG5lY2Vzc2FyeS5cblxuTW92aW5nIG9uIHRvIGBkcmJkX25sLmNgLCB0aGVyZSdzIHNvbWUgcmVmYWN0b3JpbmcgaW4gYGRyYmRfbmxfZ2V0X2Nvbm5lY3Rpb25zX2R1bXBpdGAuIEkgc2VlIHRoZSBgZ290byBwdXRfcmVzdWx0YCByZXBsYWNlZCB3aXRoIGNvbmRpdGlvbmFsIGxvZ2ljIHRvIGhhbmRsZSB0aGUgcmVzb3VyY2Ugbm90IGZvdW5kIGNhc2UuIFRoaXMgaXMgZnVuY3Rpb25hbGx5IGlkZW50aWNhbCwganVzdCBtb3JlIGV4cGxpY2l0IGFib3V0IHRoZSBlcnJvciBwYXRoLiBUaGUgcGF0dGVybiBjb250aW51ZXMsIHdpdGggYF9fbXVzdF9ob2xkYCBhbmQgb3RoZXIgYW5ub3RhdGlvbnMgYWRkZWQgYW5kIHJlbW92ZWQgaW4gdGhlIGNvZGUgdG8gc2F0aXNmeSBzcGFyc2UuXG5cbkFmdGVyIGEgdGhvcm91Z2ggcmV2aWV3IG9mIHRoZSBjb2RlIGRpZmYsIHRoZSBjaGFuZ2VzIGluIGBkcmJkX3JlcV9zdGF0ZWAgc2VlbSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudC4gSXTigJlzIGp1c3QgcmVmYWN0b3JpbmcgdG8gYXZvaWQgY29uZGl0aW9uYWwgbG9ja2luZywgd2hpY2gsIGFnYWluLCBTcGFyc2UgZG9lc24ndCBsaWtlLiBUaGUgYWRkaXRpb24gb2YgYGNvbnRleHRfdW5zYWZlYCBhcm91bmQgYSBmZXcgYmxvY2tzIGFsc28gc3VnZ2VzdHMgaGFuZGxpbmcgbmVzdGVkIGxvY2tpbmcgc2NlbmFyaW9zLCBhbmQgdGhlIGBDT05URVhUX0FOQUxZU0lTIDo9IHlgIGluIHRoZSBgTWFrZWZpbGVgIGNvbmZpcm1zIHRoYXQgY29udGV4dCBhbmFseXNpcyBpcyBlbmFibGVkLiBUaGlzIGxpa2VseSB1c2VzIGEgbWFjcm8gZGVmaW5lZCBzb21ld2hlcmUsIG5vdCBhbiBhY3R1YWwga2VybmVsIGZ1bmN0aW9uLiAgSSBhbSBkaWdnaW5nIGludG8gYGRyYmRfbWFpbi5jYCB3aGVyZSB0aGUgaW5saW5lIGZ1bmN0aW9ucyB3ZXJlIHJlc3RvcmVkIGFmdGVyIHRoZSBgI2lmZGVmIF9fQ0hFQ0tFUl9fYC5cblxuVGhpcyBwYXRjaCBpcyBlc3NlbnRpYWxseSBhIHJlZmFjdG9yaW5nIGVmZm9ydCB0byBtYWtlIHRoZSBjb2RlIGNvbXBseSB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YgdGhlIHN0YXRpYyBhbmFseXNpcyB0b29sLCBsaWtlbHkgU3BhcnNlLiBJdCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGZlYXR1cmVzIG9yIGFueSBjaGFuZ2UgdG8gZnVuZGFtZW50YWwgbG9naWMgdGhhdCB3b3VsZCB3YXJyYW50IGEgZGVlcCBmdXp6aW5nIGNhbXBhaWduLiBUaGUgY2hhbmdlcyBhcmUgYWxtb3N0IHB1cmVseSBhYm91dCBnZXR0aW5nIHRoZSBjb2RlIHRvIFwiY2hlY2sgb3V0XCIgd2l0aCBTcGFyc2UuIFJlbW92aW5nIHRoZSBgaWYgKCFiKWAgY2hlY2tzIGluIGBkcmJkX2JtX2xvY2tgIGFuZCBgZHJiZF9ibV91bmxvY2tgLCBpcyBhIHBvc3NpYmxlIGJ1Zy4gSG93ZXZlciwgaXQgaXMgdW5saWtlbHkgdGhpcyBjaGVjayBpcyByZWFjaGVkLCBpdCBpcyBkZWZlbnNpdmUgYW5kIG5vdCBuZWNlc3NhcnkuXG5cblNvLCBpbiBzdW1tYXJ5LCBJJ20gY29uZmlkZW50IHRoYXQgdGhpcyBpcyBhIHBhdGNoIGFpbWVkIGF0IGltcHJvdmluZyB0aGUgY29kZSdzIHN0YXRpYyBhbmFseXNpcyBwcm9wZXJ0aWVzIGFuZCB3b3VsZCBub3QgYmUgd29ydGggZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg3OTYsIk91dHB1dFRva2VucyI6MTM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUzMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE5OjUwOjIzLjk3NTEyNTA0OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaXMgYSBsYXJnZSByZWZhY3RvcmluZyBhaW1lZCBhdCBmaXhpbmcgc3BhcnNlIHdhcm5pbmdzLiBJdCByZW1vdmVzIGBleHRlcm5gIGZyb20gZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluIGhlYWRlcnMsIHJlbW92ZXMgY3VzdG9tIHNwYXJzZSBhbm5vdGF0aW9ucyBsaWtlIGBfX211c3RfaG9sZChsb2NhbClgLCBgX19hY3F1aXJlKGxvY2FsKWAsIGBfX3JlbGVhc2UobG9jYWwpYCwgYW5kIHJlZmFjdG9ycyBjb2RlIHRvIGF2b2lkIGNvbmRpdGlvbmFsIGxvY2tpbmcgKGUuZy4gYGRyYmRfcmVxX3N0YXRlYCkuIEl0IGFsc28gcmVtb3ZlcyBhIGZldyBkZWZlbnNpdmUgTlVMTCBjaGVja3MgYW5kIGEgd2FybmluZyBvbiBsb2NrIGNvbnRlbnRpb24gaW4gYGRyYmRfYm1fbG9ja2AuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUgbG9naWMgdGhhdCB3b3VsZCByZXF1aXJlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIGxhcmdlIHJlZmFjdG9yaW5nIGFpbWVkIGF0IGZpeGluZyBzcGFyc2Ugd2FybmluZ3MuIEl0IHJlbW92ZXMgYGV4dGVybmAgZnJvbSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW4gaGVhZGVycywgcmVtb3ZlcyBjdXN0b20gc3BhcnNlIGFubm90YXRpb25zIGxpa2UgYF9fbXVzdF9ob2xkKGxvY2FsKWAsIGBfX2FjcXVpcmUobG9jYWwpYCwgYF9fcmVsZWFzZShsb2NhbClgLCBhbmQgcmVmYWN0b3JzIGNvZGUgdG8gYXZvaWQgY29uZGl0aW9uYWwgbG9ja2luZyAoZS5nLiBgZHJiZF9yZXFfc3RhdGVgKS4gSXQgYWxzbyByZW1vdmVzIGEgZmV3IGRlZmVuc2l2ZSBOVUxMIGNoZWNrcyBhbmQgYSB3YXJuaW5nIG9uIGxvY2sgY29udGVudGlvbiBpbiBgZHJiZF9ibV9sb2NrYC4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29yZSBsb2dpYyB0aGF0IHdvdWxkIHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowghd2g[1] Phase: Running StartedAt: 2026-07-10 19:50:36 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowghd2g[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-10 19:50:36 +0000 UTC FinishedAt: 2026-07-10 19:50:40 +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,}