Name: series-workflowdddvw Phase: Failed StartedAt: 2026-08-02 06:02:44 +0000 UTC FinishedAt: 2026-08-02 06:20:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdddvw[0] Phase: Succeeded StartedAt: 2026-08-02 06:02:44 +0000 UTC FinishedAt: 2026-08-02 06:20:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdddvw[0].run-triage Phase: Succeeded StartedAt: 2026-08-02 06:02:44 +0000 UTC FinishedAt: 2026-08-02 06:20:08 +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+CgkJCTx0ZD4yMDI2LzA4LzAyIDA2OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIgdG8gYWRkIHN1cHBvcnQgZm9yIENRRSA4LXBhY2tldCBjb2FsZXNjaW5nLiBNQU5BIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgU21hcnROSUMgZGV2aWNlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBzbyB0aGlzIGNvZGUgY2Fubm90IGJlIHJlYWNoZWQgb3IgdGVzdGVkIGJ5IHRoZSBmdXp6ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA2OjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDdhNDAxMDBiNzNmN2IwODE5ZWRiZWFlODRlZDhjNTRiN2Y3YjI3ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIgMDY6MTk6NDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jXG5pbmRleCBhODBjZjBiYzQ2MmNmLi5hM2MyOTA3N2RhZjVmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmNcbkBAIC0xMjQxLDYgJiM0MzsxMjQxLDkgQEAgaW50IG1hbmFfZ2RfcXVlcnlfZGV2aWNlX2NmZyhzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgdTMyIHByb3RvX21ham9yX3ZlcixcbiBcdFx0cmV0dXJuIGVycjtcbiBcdH1cbiBcbiYjNDM7XHRnYy1cdTAwM2VjcWU4X2NvYWxlc2Npbmdfc3VwID0gISEocmVzcC5wZl9jYXBfZmxhZ3MxIFx1MDAyNlxuJiM0MztcdFx0XHRcdCAgICAgTUFOQV9QRl9GTEFHXzFfQ1FFXzhfQ09BTEVTQ0lOR19TVVBQT1JURUQpO1xuJiM0MztcbiBcdCptYXhfbnVtX3Zwb3J0cyA9IHJlc3AubWF4X251bV92cG9ydHM7XG4gXG4gXHRpZiAocmVzcC5oZHIucmVzcG9uc2UubXNnX3ZlcnNpb24gXHUwMDNlPSBHRE1BX01FU1NBR0VfVjIpIHtcbkBAIC0xNDI2LDcgJiM0MzsxNDI5LDExIEBAIHN0YXRpYyBpbnQgbWFuYV9jZmdfdnBvcnRfc3RlZXJpbmcoc3RydWN0IG1hbmFfcG9ydF9jb250ZXh0ICphcGMsXG4gXHRtYW5hX2dkX2luaXRfcmVxX2hkcihcdTAwMjZyZXEtXHUwMDNlaGRyLCBNQU5BX0NPTkZJR19WUE9SVF9SWCwgcmVxX2J1Zl9zaXplLFxuIFx0XHRcdCAgICAgc2l6ZW9mKHJlc3ApKTtcbiBcbi1cdHJlcS1cdTAwM2VoZHIucmVxLm1zZ192ZXJzaW9uID0gR0RNQV9NRVNTQUdFX1YyO1xuJiM0MztcdC8qIFJlcXVlc3QgXHUwMDI2IHJlc3BvbnNlIHZlcnNpb25zIGNhbiBiZSBkaWZmZXJlbnQuXG4mIzQzO1x0ICogSFcgY2FuIGhhbmRsZSBuZXdlciBtc2cgdmVyc2lvbnMsIGJ5IHNraXBwaW5nXG4mIzQzO1x0ICogbmV3IGZpZWxkcy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRyZXEtXHUwMDNlaGRyLnJlcS5tc2dfdmVyc2lvbiA9IEdETUFfTUVTU0FHRV9WNTtcbiBcdHJlcS1cdTAwM2VoZHIucmVzcC5tc2dfdmVyc2lvbiA9IEdETUFfTUVTU0FHRV9WMjtcbiBcbiBcdHJlcS1cdTAwM2V2cG9ydCA9IGFwYy1cdTAwM2Vwb3J0X2hhbmRsZTtcbkBAIC0xNDQwLDggJiM0MzsxNDQ3LDEzIEBAIHN0YXRpYyBpbnQgbWFuYV9jZmdfdnBvcnRfc3RlZXJpbmcoc3RydWN0IG1hbmFfcG9ydF9jb250ZXh0ICphcGMsXG4gXHRyZXEtXHUwMDNldXBkYXRlX2luZGlyX3RhYiA9IHVwZGF0ZV90YWI7XG4gXHRyZXEtXHUwMDNlZGVmYXVsdF9yeG9iaiA9IGFwYy1cdTAwM2VkZWZhdWx0X3J4b2JqO1xuIFxuLVx0aWYgKHJ4ICE9IFRSSV9TVEFURV9GQUxTRSlcbiYjNDM7XHQvKiBSZXF1ZXN0LW1zZyB2NSByZXF1aXJlcyB0aGlzIGZpZWxkICovXG4mIzQzO1x0cmVxLVx1MDAzZXJzc19oYXNoX3R5cGVzID0gTUFOQV9IQVNIX0VOQUJMRV9TVVBQT1JURUQ7XG4mIzQzO1xuJiM0MztcdGlmIChyeCAhPSBUUklfU1RBVEVfRkFMU0UpIHtcbiBcdFx0cmVxLVx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZSA9IGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGU7XG4mIzQzO1x0XHRyZXEtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9IGFwYy1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlO1xuJiM0MztcdH1cbiBcbiBcdGlmICh1cGRhdGVfa2V5KVxuIFx0XHRtZW1jcHkoXHUwMDI2cmVxLVx1MDAzZWhhc2hrZXksIGFwYy1cdTAwM2VoYXNoa2V5LCBNQU5BX0hBU0hfS0VZX1NJWkUpO1xuQEAgLTIwNDYsMTYgJiM0MzsyMDU4LDE0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbWFuYV9idWlsZF9za2Ioc3RydWN0IG1hbmFfcnhxICpyeHEsIHZvaWQgKmJ1Zl92YSxcbiBcbiBzdGF0aWMgdm9pZCBtYW5hX3J4X3NrYih2b2lkICpidWZfdmEsIGJvb2wgZnJvbV9wb29sLFxuIFx0XHRcdHN0cnVjdCBtYW5hX3J4Y29tcF9vb2IgKmNxZSwgc3RydWN0IG1hbmFfcnhxICpyeHEsXG4tXHRcdFx0aW50IGkpXG4mIzQzO1x0XHRcdHUzMiBwa3RfbGVuLCB1MzIgcGt0X2hhc2gpXG4ge1xuIFx0c3RydWN0IG1hbmFfc3RhdHNfcnggKnJ4X3N0YXRzID0gXHUwMDI2cnhxLVx1MDAzZXN0YXRzO1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSByeHEtXHUwMDNlbmRldjtcbi1cdHVpbnQgcGt0X2xlbiA9IGNxZS1cdTAwM2VwcGlbaV0ucGt0X2xlbjtcbiBcdHUxNiByeHFfaWR4ID0gcnhxLVx1MDAzZXJ4cV9pZHg7XG4gXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGk7XG4gXHRzdHJ1Y3QgeGRwX2J1ZmYgeGRwID0ge307XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLVx0dTMyIGhhc2hfdmFsdWU7XG4gXHR1MzIgYWN0O1xuIFxuIFx0cnhxLVx1MDAzZXJ4X2NxLndvcmtfZG9uZSYjNDM7JiM0Mzs7XG5AQCAtMjA5NCwxMiAmIzQzOzIxMDQsMTAgQEAgc3RhdGljIHZvaWQgbWFuYV9yeF9za2Iodm9pZCAqYnVmX3ZhLCBib29sIGZyb21fcG9vbCxcbiBcdH1cbiBcbiBcdGlmIChjcWUtXHUwMDNlcnhfaGFzaHR5cGUgIT0gMCBcdTAwMjZcdTAwMjYgKG5kZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfUlhIQVNIKSkge1xuLVx0XHRoYXNoX3ZhbHVlID0gY3FlLVx1MDAzZXBwaVtpXS5wa3RfaGFzaDtcbi1cbiBcdFx0aWYgKGNxZS1cdTAwM2VyeF9oYXNodHlwZSBcdTAwMjYgTUFOQV9IQVNIX0w0KVxuLVx0XHRcdHNrYl9zZXRfaGFzaChza2IsIGhhc2hfdmFsdWUsIFBLVF9IQVNIX1RZUEVfTDQpO1xuJiM0MztcdFx0XHRza2Jfc2V0X2hhc2goc2tiLCBwa3RfaGFzaCwgUEtUX0hBU0hfVFlQRV9MNCk7XG4gXHRcdGVsc2Vcbi1cdFx0XHRza2Jfc2V0X2hhc2goc2tiLCBoYXNoX3ZhbHVlLCBQS1RfSEFTSF9UWVBFX0wzKTtcbiYjNDM7XHRcdFx0c2tiX3NldF9oYXNoKHNrYiwgcGt0X2hhc2gsIFBLVF9IQVNIX1RZUEVfTDMpO1xuIFx0fVxuIFxuIFx0aWYgKGNxZS1cdTAwM2VyeF92bGFudGFnX3ByZXNlbnQpIHtcbkBAIC0yMjQwLDYgJiM0MzsyMjQ4LDQzIEBAIHN0YXRpYyB2b2lkIG1hbmFfcmVmaWxsX3J4X29vYihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtYW5hX3J4cSAqcnhxLFxuIFx0cnhvb2ItXHUwMDNlZG1hX3N5bmNfb2Zmc2V0ID0gZG1hX3N5bmNfb2Zmc2V0O1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX29uZV9yeF9wa3Qoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSxcbiYjNDM7XHRcdFx0XHQgICAgc3RydWN0IG1hbmFfcnhjb21wX29vYiAqb29iLFxuJiM0MztcdFx0XHRcdCAgICB1MzIgcGt0bGVuLCB1MzIgcGt0X2hhc2gpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbWFuYV9yZWN2X2J1Zl9vb2IgKnJ4YnVmX29vYjtcbiYjNDM7XHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHJ4cS1cdTAwM2VuZGV2O1xuJiM0MztcdHZvaWQgKm9sZF9idWYgPSBOVUxMO1xuJiM0MztcdGJvb2wgb2xkX2ZwO1xuJiM0MztcbiYjNDM7XHRyeGJ1Zl9vb2IgPSBcdTAwMjZyeHEtXHUwMDNlcnhfb29ic1tyeHEtXHUwMDNlYnVmX2luZGV4XTtcbiYjNDM7XHRXQVJOX09OX09OQ0UocnhidWZfb29iLVx1MDAzZXdxZV9pbmYud3FlX3NpemVfaW5fYnUgIT0gMSk7XG4mIzQzO1xuJiM0MztcdGlmICh1bmxpa2VseShwa3RsZW4gXHUwMDNlIHJ4cS1cdTAwM2VkYXRhc2l6ZSkpIHtcbiYjNDM7XHRcdC8qIEluY3JlYXNlIGl0IGV2ZW4gaWYgbWFuYV9yeF9za2IoKSBpc24mIzM5O3QgY2FsbGVkLiAqL1xuJiM0MztcdFx0cnhxLVx1MDAzZXJ4X2NxLndvcmtfZG9uZSYjNDM7JiM0Mzs7XG4mIzQzO1xuJiM0MztcdFx0JiM0MzsmIzQzO25kZXYtXHUwMDNlc3RhdHMucnhfZHJvcHBlZDtcbiYjNDM7XHRcdG5ldGRldl93YXJuX29uY2UobmRldixcbiYjNDM7XHRcdFx0XHQgXCYjMzQ7RHJvcHBlZCBvdmVyc2l6ZWQgUlggcGFja2V0OiBsZW49JXUsIGRhdGFzaXplPSV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCBwa3RsZW4sIHJ4cS1cdTAwM2VkYXRhc2l6ZSk7XG4mIzQzO1xuJiM0MztcdFx0LyogUmV1c2UgdGhlIFJYIGJ1ZmZlciBzaW5jZSByeGJ1Zl9vb2IgaXMgdW5jaGFuZ2VkLiAqL1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRtYW5hX3JlZmlsbF9yeF9vb2IoZGV2LCByeHEsIHJ4YnVmX29vYiwgcGt0bGVuLFxuJiM0MztcdFx0XHRcdCAgIFx1MDAyNm9sZF9idWYsIFx1MDAyNm9sZF9mcCk7XG4mIzQzO1xuJiM0MztcdFx0LyogVW5zdWNjZXNzZnVsIHJlZmlsbCB3aWxsIGhhdmUgb2xkX2J1ZiA9PSBOVUxMLlxuJiM0MztcdFx0ICogSW4gdGhpcyBjYXNlLCBtYW5hX3J4X3NrYigpIHdpbGwgZHJvcCB0aGUgcGFja2V0LlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRtYW5hX3J4X3NrYihvbGRfYnVmLCBvbGRfZnAsIG9vYiwgcnhxLCBwa3RsZW4sIHBrdF9oYXNoKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdG1hbmFfbW92ZV93cV90YWlsKHJ4cS1cdTAwM2VnZG1hX3JxLCByeGJ1Zl9vb2ItXHUwMDNld3FlX2luZi53cWVfc2l6ZV9pbl9idSk7XG4mIzQzO1xuJiM0MztcdG1hbmFfcG9zdF9wa3RfcnhxKHJ4cSk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLFxuIFx0XHRcdFx0c3RydWN0IGdkbWFfY29tcCAqY3FlKVxuIHtcbkBAIC0yMjQ5LDEwICYjNDM7MjI5NCwxMCBAQCBzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3NfcnhfY3FlKHN0cnVjdCBtYW5hX3J4cSAqcnhxLCBzdHJ1Y3QgbWFuYV9jcSAqY3EsXG4gXHRzdHJ1Y3QgbWFuYV9yZWN2X2J1Zl9vb2IgKnJ4YnVmX29vYjtcbiBcdHN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCAqYXBjO1xuIFx0c3RydWN0IGRldmljZSAqZGV2ID0gZ2MtXHUwMDNlZGV2O1xuJiM0MztcdGJvb2wgY29hbGVzY2VkXzggPSBmYWxzZTtcbiBcdGJvb2wgY29hbGVzY2VkID0gZmFsc2U7XG4tXHR2b2lkICpvbGRfYnVmID0gTlVMTDtcbi1cdHUzMiBjdXJyLCBwa3RsZW47XG4tXHRib29sIG9sZF9mcDtcbiYjNDM7XHR1MzIgcGt0bGVuO1xuJiM0MztcdGludCBwa3RfaTtcbiBcdGludCBpO1xuIFxuIFx0YXBjID0gbmV0ZGV2X3ByaXYobmRldik7XG5AQCAtMjI3NSw2ICYjNDM7MjMyMCwxMSBAQCBzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3NfcnhfY3FlKHN0cnVjdCBtYW5hX3J4cSAqcnhxLCBzdHJ1Y3QgbWFuYV9jcSAqY3EsXG4gXHRcdGNvYWxlc2NlZCA9IHRydWU7XG4gXHRcdGJyZWFrO1xuIFxuJiM0MztcdGNhc2UgQ1FFX1JYX0NPQUxFU0NFRF84OlxuJiM0MztcdFx0Y29hbGVzY2VkID0gdHJ1ZTtcbiYjNDM7XHRcdGNvYWxlc2NlZF84ID0gdHJ1ZTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcbiBcdGNhc2UgQ1FFX1JYX09CSkVDVF9GRU5DRTpcbiBcdFx0Y29tcGxldGUoXHUwMDI2cnhxLVx1MDAzZWZlbmNlX2V2ZW50KTtcbiBcdFx0cmV0dXJuO1xuQEAgLTIyODYsNTQgJiM0MzsyMzM2LDQ4IEBAIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSxcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuJiM0MztcdHBrdF9pID0gMDtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJOyBpJiM0MzsmIzQzOykge1xuLVx0XHRvbGRfYnVmID0gTlVMTDtcbi1cdFx0cGt0bGVuID0gb29iLVx1MDAzZXBwaVtpXS5wa3RfbGVuO1xuLVx0XHRpZiAocGt0bGVuID09IDApXG4tXHRcdFx0YnJlYWs7XG4tXG4tXHRcdGN1cnIgPSByeHEtXHUwMDNlYnVmX2luZGV4O1xuLVx0XHRyeGJ1Zl9vb2IgPSBcdTAwMjZyeHEtXHUwMDNlcnhfb29ic1tjdXJyXTtcbi1cdFx0V0FSTl9PTl9PTkNFKHJ4YnVmX29vYi1cdTAwM2V3cWVfaW5mLndxZV9zaXplX2luX2J1ICE9IDEpO1xuLVxuLVx0XHRpZiAodW5saWtlbHkocGt0bGVuIFx1MDAzZSByeHEtXHUwMDNlZGF0YXNpemUpKSB7XG4tXHRcdFx0LyogSW5jcmVhc2UgaXQgZXZlbiBpZiBtYW5hX3J4X3NrYigpIGlzbiYjMzk7dCBjYWxsZWQuICovXG4tXHRcdFx0cnhxLVx1MDAzZXJ4X2NxLndvcmtfZG9uZSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHR1MzIgcGt0X2hhc2g7XG4gXG4tXHRcdFx0JiM0MzsmIzQzO25kZXYtXHUwMDNlc3RhdHMucnhfZHJvcHBlZDtcbi1cdFx0XHRuZXRkZXZfd2Fybl9vbmNlKG5kZXYsXG4tXHRcdFx0XHRcJiMzNDtEcm9wcGVkIG92ZXJzaXplZCBSWCBwYWNrZXQ6IGxlbj0ldSwgZGF0YXNpemU9JXVcXG5cJiMzNDssXG4tXHRcdFx0XHRwa3RsZW4sIHJ4cS1cdTAwM2VkYXRhc2l6ZSk7XG4tXG4tXHRcdFx0LyogUmV1c2UgdGhlIFJYIGJ1ZmZlciBzaW5jZSByeGJ1Zl9vb2IgaXMgdW5jaGFuZ2VkLiAqL1xuJiM0MztcdFx0aWYgKGNvYWxlc2NlZF84KSB7XG4mIzQzO1x0XHRcdC8qIDgtcGt0IG1vZGU6IDIgcGFja2V0cyBwZXIgUFBJIGVudHJ5ICovXG4mIzQzO1x0XHRcdHBrdGxlbiA9IG9vYi1cdTAwM2VwcGlbaV0ucGt0X2xlbjA7XG4mIzQzO1x0XHRcdHBrdF9oYXNoID0gb29iLVx1MDAzZXBwaVtpXS5wa3RfaGFzaDA7XG4gXHRcdH0gZWxzZSB7XG4tXG4tXHRcdFx0bWFuYV9yZWZpbGxfcnhfb29iKGRldiwgcnhxLCByeGJ1Zl9vb2IsIHBrdGxlbixcbi1cdFx0XHRcdFx0ICAgXHUwMDI2b2xkX2J1ZiwgXHUwMDI2b2xkX2ZwKTtcbi1cbi1cdFx0XHQvKiBVbnN1Y2Nlc3NmdWwgcmVmaWxsIHdpbGwgaGF2ZSBvbGRfYnVmID09IE5VTEwuXG4tXHRcdFx0ICogSW4gdGhpcyBjYXNlLCBtYW5hX3J4X3NrYigpIHdpbGwgZHJvcCB0aGUgcGFja2V0LlxuLVx0XHRcdCAqL1xuLVx0XHRcdG1hbmFfcnhfc2tiKG9sZF9idWYsIG9sZF9mcCwgb29iLCByeHEsIGkpO1xuJiM0MztcdFx0XHRwa3RsZW4gPSBvb2ItXHUwMDNlcHBpW2ldLnBrdF9sZW47XG4mIzQzO1x0XHRcdHBrdF9oYXNoID0gb29iLVx1MDAzZXBwaVtpXS5wa3RfaGFzaDtcbiBcdFx0fVxuJiM0MztcdFx0aWYgKHBrdGxlbiA9PSAwKVxuJiM0MztcdFx0XHRicmVhaztcbiBcbi1cdFx0bWFuYV9tb3ZlX3dxX3RhaWwocnhxLVx1MDAzZWdkbWFfcnEsXG4tXHRcdFx0XHQgIHJ4YnVmX29vYi1cdTAwM2V3cWVfaW5mLndxZV9zaXplX2luX2J1KTtcbi1cbi1cdFx0bWFuYV9wb3N0X3BrdF9yeHEocnhxKTtcbiYjNDM7XHRcdG1hbmFfcHJvY2Vzc19vbmVfcnhfcGt0KGRldiwgcnhxLCBvb2IsIHBrdGxlbiwgcGt0X2hhc2gpO1xuJiM0MztcdFx0cGt0X2kmIzQzOyYjNDM7O1xuIFxuIFx0XHRpZiAoIWNvYWxlc2NlZClcbiBcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHQvKiBQcm9jZXNzIDJuZCBwYWNrZXQgZnJvbSB0aGUgc2FtZSBQUEkgaW4gOC1wa3QgbW9kZSAqL1xuJiM0MztcdFx0aWYgKGNvYWxlc2NlZF84KSB7XG4mIzQzO1x0XHRcdHBrdGxlbiA9IG9vYi1cdTAwM2VwcGlbaV0ucGt0X2xlbjE7XG4mIzQzO1x0XHRcdHBrdF9oYXNoID0gb29iLVx1MDAzZXBwaVtpXS5wa3RfaGFzaDE7XG4mIzQzO1x0XHRcdGlmIChwa3RsZW4gPT0gMClcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRcdG1hbmFfcHJvY2Vzc19vbmVfcnhfcGt0KGRldiwgcnhxLCBvb2IsIHBrdGxlbixcbiYjNDM7XHRcdFx0XHRcdFx0cGt0X2hhc2gpO1xuJiM0MztcdFx0XHRwa3RfaSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4gXHQvKiBDb2xsZWN0IGNvYWxlc2NlZCBDUUUgY291bnQgYmFzZWQgb24gcGFja2V0cyBwcm9jZXNzZWQuXG4tXHQgKiBDb2FsZXNjZWQgQ1FFcyBoYXZlIGF0IGxlYXN0IDIgcGFja2V0cywgc28gaW5kZXggaXMgaSAtIDIuXG4mIzQzO1x0ICogQ29hbGVzY2VkIENRRXMgaGF2ZSBhdCBsZWFzdCAyIHBhY2tldHMsIHNvIGluZGV4IGlzIHBrdF9pIC0gMi5cbiBcdCAqL1xuLVx0aWYgKGkgXHUwMDNlIDEpIHtcbiYjNDM7XHRpZiAocGt0X2kgXHUwMDNlIDEpIHtcbiBcdFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZyeHEtXHUwMDNlc3RhdHMuc3luY3ApO1xuLVx0XHRyeHEtXHUwMDNlc3RhdHMuY29hbGVzY2VkX2NxZVtpIC0gMl0mIzQzOyYjNDM7O1xuJiM0MztcdFx0cnhxLVx1MDAzZXN0YXRzLmNvYWxlc2NlZF9jcWVbcGt0X2kgLSAyXSYjNDM7JiM0Mzs7XG4gXHRcdHU2NF9zdGF0c191cGRhdGVfZW5kKFx1MDAyNnJ4cS1cdTAwM2VzdGF0cy5zeW5jcCk7XG4tXHR9IGVsc2UgaWYgKCFpIFx1MDAyNlx1MDAyNiAhcGt0bGVuKSB7XG4mIzQzO1x0fSBlbHNlIGlmICghcGt0X2kgXHUwMDI2XHUwMDI2ICFwa3RsZW4pIHtcbiBcdFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZyeHEtXHUwMDNlc3RhdHMuc3luY3ApO1xuIFx0XHRyeHEtXHUwMDNlc3RhdHMucGt0X2xlbjBfZXJyJiM0MzsmIzQzOztcbiBcdFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2cnhxLVx1MDAzZXN0YXRzLnN5bmNwKTtcbkBAIC0zNzYzLDYgJiM0MzszODA3LDcgQEAgc3RhdGljIGludCBtYW5hX3Byb2JlX3BvcnQoc3RydWN0IG1hbmFfY29udGV4dCAqYWMsIGludCBwb3J0X2lkeCxcbiBcdGFwYy1cdTAwM2Vwb3J0X2lkeCA9IHBvcnRfaWR4O1xuIFx0YXBjLVx1MDAzZWxpbmtfY2ZnX2Vycm9yID0gMTtcbiBcdGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPSAwO1xuJiM0MztcdGFwYy1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlID0gMDtcbiBcbiBcdC8qIEluaXRpYWxpemUgaW50ZXJydXB0IG1vZGVyYXRpb24gc2V0dGluZ3MgaWYgc3VwcG9ydGVkIGJ5IEhXICovXG4gXHRpZiAoZ2MtXHUwMDNlcGZfY2FwX2ZsYWdzMSBcdTAwMjYgR0RNQV9QRl9DQVBfRkxBR18xX0RZTl9JTlRFUlJVUFRfTU9ERVJBVElPTikge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmNcbmluZGV4IDllMzFlMjU5NWFlMzIuLjA0Zjg3NzcwN2NjNmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmNcbkBAIC0xNjksNyAmIzQzOzE2OSw3IEBAIHN0YXRpYyB2b2lkIG1hbmFfZ2V0X3N0cmluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBzdHJpbmdzZXQsIHU4ICpkYXRhKVxuIFx0XHRldGh0b29sX3NwcmludGYoXHUwMDI2ZGF0YSwgXCYjMzQ7cnhfJWRfeGRwX3R4XCYjMzQ7LCBpKTtcbiBcdFx0ZXRodG9vbF9zcHJpbnRmKFx1MDAyNmRhdGEsIFwmIzM0O3J4XyVkX3hkcF9yZWRpcmVjdFwmIzM0OywgaSk7XG4gXHRcdGV0aHRvb2xfc3ByaW50ZihcdTAwMjZkYXRhLCBcJiMzNDtyeF8lZF9wa3RfbGVuMF9lcnJcJiMzNDssIGkpO1xuLVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDE7IGomIzQzOyYjNDM7KVxuJiM0MztcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqJiM0MzsmIzQzOylcbiBcdFx0XHRldGh0b29sX3NwcmludGYoXHUwMDI2ZGF0YSwgXCYjMzQ7cnhfJWRfY29hbGVzY2VkX2NxZV8lZFwmIzM0OywgaSwgaiAmIzQzOyAyKTtcbiBcdH1cbiBcbkBAIC0yMDUsNyAmIzQzOzIwNSw3IEBAIHN0YXRpYyB2b2lkIG1hbmFfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHR1NjQgeGRwX2Ryb3A7XG4gXHR1NjQgeGRwX3R4O1xuIFx0dTY0IHBrdF9sZW4wX2Vycjtcbi1cdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMV07XG4mIzQzO1x0dTY0IGNvYWxlc2NlZF9jcWVbTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxXTtcbiBcdHU2NCB0c29fcGFja2V0cztcbiBcdHU2NCB0c29fYnl0ZXM7XG4gXHR1NjQgdHNvX2lubmVyX3BhY2tldHM7XG5AQCAtMjQ1LDcgJiM0MzsyNDUsNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHRcdHhkcF90eCA9IHJ4X3N0YXRzLVx1MDAzZXhkcF90eDtcbiBcdFx0XHR4ZHBfcmVkaXJlY3QgPSByeF9zdGF0cy1cdTAwM2V4ZHBfcmVkaXJlY3Q7XG4gXHRcdFx0cGt0X2xlbjBfZXJyID0gcnhfc3RhdHMtXHUwMDNlcGt0X2xlbjBfZXJyO1xuLVx0XHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaiYjNDM7JiM0MzspXG4mIzQzO1x0XHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMTsgaiYjNDM7JiM0MzspXG4gXHRcdFx0XHRjb2FsZXNjZWRfY3FlW2pdID0gcnhfc3RhdHMtXHUwMDNlY29hbGVzY2VkX2NxZVtqXTtcbiBcdFx0fSB3aGlsZSAodTY0X3N0YXRzX2ZldGNoX3JldHJ5KFx1MDAyNnJ4X3N0YXRzLVx1MDAzZXN5bmNwLCBzdGFydCkpO1xuIFxuQEAgLTI1NSw3ICYjNDM7MjU1LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0ZGF0YVtpJiM0MzsmIzQzO10gPSB4ZHBfdHg7XG4gXHRcdGRhdGFbaSYjNDM7JiM0MztdID0geGRwX3JlZGlyZWN0O1xuIFx0XHRkYXRhW2kmIzQzOyYjNDM7XSA9IHBrdF9sZW4wX2Vycjtcbi1cdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxOyBqJiM0MzsmIzQzOylcbiYjNDM7XHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMTsgaiYjNDM7JiM0MzspXG4gXHRcdFx0ZGF0YVtpJiM0MzsmIzQzO10gPSBjb2FsZXNjZWRfY3FlW2pdO1xuIFx0fVxuIFxuQEAgLTQwOCw2ICYjNDM7NDA4LDcgQEAgc3RhdGljIGludCBtYW5hX2dldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdHN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCAqYXBjID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXG4gXHRrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzID1cbiYjNDM7XHRcdGFwYy1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlID8gTUFOQV9DUUVfQ09BTF9QS1RTXzggOlxuIFx0XHRhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlID8gTUFOQV9SWENPTVBfT09CX05VTV9QUEkgOiAxO1xuIFxuIFx0a2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX25zZWNzID0gYXBjLVx1MDAzZWNxZV9jb2FsZXNjaW5nX3RpbWVvdXRfbnM7XG5AQCAtNDQzLDE1ICYjNDM7NDQ0LDE5IEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdHUxNiBpbnRyX21vZHJfdHhfdXNlYztcbiBcdFx0dTE2IGludHJfbW9kcl90eF9jb21wO1xuIFx0XHR1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7XG4mIzQzO1x0XHR1OCBjcWU4X2NvYWxlc2NpbmdfZW5hYmxlO1xuIFx0XHRib29sIHJ4X2RpbV9lbmFibGVkO1xuIFx0XHRib29sIHR4X2RpbV9lbmFibGVkO1xuIFx0fSBzYXZlZDtcbiBcdGJvb2wgbW9kcl9jaGFuZ2VkID0gZmFsc2U7XG4gXHRib29sIGRpbV9jaGFuZ2VkID0gZmFsc2U7XG4gXHRzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYztcbiYjNDM7XHR1MzIgbWF4X2NxZV9mcmFtZXM7XG4gXHRpbnQgZXJyO1xuIFxuIFx0Z2MgPSBhcGMtXHUwMDNlYWMtXHUwMDNlZ2RtYV9kZXYtXHUwMDNlZ2RtYV9jb250ZXh0O1xuJiM0MztcdG1heF9jcWVfZnJhbWVzID0gZ2MtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX3N1cCA/IE1BTkFfQ1FFX0NPQUxfUEtUU184IDpcbiYjNDM7XHRcdFx0XHRcdFx0ICAgTUFOQV9SWENPTVBfT09CX05VTV9QUEk7XG4gXG4gXHQvKiBCb3RoIHN0YXRpYyBhbmQgZHluYW1pYyBpbnRlcnJ1cHQgbW9kZXJhdGlvbiAoRElNKSByZWx5IG9uIHRoZVxuIFx0ICogc2FtZSBIVyBjYXBhYmlsaXR5IGFkdmVydGlzZWQgYnkgdGhlIFBGLlxuQEAgLTQ2NiwxMCAmIzQzOzQ3MSwxMiBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0fVxuIFxuIFx0aWYgKGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgIT0gMSBcdTAwMjZcdTAwMjZcbi1cdCAgICBrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzICE9IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJKSB7XG4mIzQzO1x0ICAgIGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgIT0gTUFOQV9SWENPTVBfT09CX05VTV9QUEkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgIT0gbWF4X2NxZV9mcmFtZXMpIHtcbiBcdFx0TkxfU0VUX0VSUl9NU0dfRk1UKGV4dGFjayxcbi1cdFx0XHRcdCAgIFwmIzM0O3J4LWZyYW1lcyBtdXN0IGJlIDEgb3IgJXUsIGdvdCAldVwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgICBcJiMzNDtyeC1mcmFtZXMgbXVzdCBiZSAxIG9yICV1JXMsIGdvdCAldVwmIzM0OyxcbiBcdFx0XHRcdCAgIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJLFxuJiM0MztcdFx0XHRcdCAgIGdjLVx1MDAzZWNxZThfY29hbGVzY2luZ19zdXAgPyBcJiMzNDsgb3IgOFwmIzM0OyA6IFwmIzM0O1wmIzM0OyxcbiBcdFx0XHRcdCAgIGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbkBAIC01MTQsOCAmIzQzOzUyMSwxMSBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0c2F2ZWQudHhfZGltX2VuYWJsZWQgPSBhcGMtXHUwMDNldHhfZGltX2VuYWJsZWQ7XG4gXG4gXHRzYXZlZC5jcWVfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlO1xuJiM0MztcdHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcbiBcdGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPVxuLVx0XHRrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzID09IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJO1xuJiM0MztcdFx0a2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX2ZyYW1lcyBcdTAwM2U9IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJO1xuJiM0MztcdGFwYy1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlID1cbiYjNDM7XHRcdGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgPT0gTUFOQV9DUUVfQ09BTF9QS1RTXzg7XG4gXG4gXHRpZiAoIWFwYy1cdTAwM2Vwb3J0X2lzX3VwKSB7XG4gXHRcdFdSSVRFX09OQ0UoYXBjLVx1MDAzZXJ4X2RpbV9lbmFibGVkLCAhIWVjLVx1MDAzZXVzZV9hZGFwdGl2ZV9yeF9jb2FsZXNjZSk7XG5AQCAtNTIzLDcgJiM0Mzs1MzMsOCBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbi1cdGlmIChhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlICE9IHNhdmVkLmNxZV9jb2FsZXNjaW5nX2VuYWJsZSkge1xuJiM0MztcdGlmIChhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlICE9IHNhdmVkLmNxZV9jb2FsZXNjaW5nX2VuYWJsZSB8fFxuJiM0MztcdCAgICBhcGMtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSAhPSBzYXZlZC5jcWU4X2NvYWxlc2NpbmdfZW5hYmxlKSB7XG4gXHRcdC8qIENRRSBjb2FsZXNjaW5nIHNldHRpbmcgaXMgYXBwbGllZCB2aWEgUlNTIGNvbmZpZ3VyYXRpb24uICovXG4gXHRcdGVyciA9IG1hbmFfY29uZmlnX3JzcyhhcGMsIFRSSV9TVEFURV9UUlVFLCBmYWxzZSwgZmFsc2UpO1xuIFx0XHRpZiAoZXJyKSB7XG5AQCAtNTMxLDYgJiM0Mzs1NDIsOCBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHRcdFx0ICAgZXJyKTtcbiBcdFx0XHRhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlID1cbiBcdFx0XHRcdHNhdmVkLmNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcbiYjNDM7XHRcdFx0YXBjLVx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPVxuJiM0MztcdFx0XHRcdHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGU7XG4gXHRcdFx0YXBjLVx1MDAzZWludHJfbW9kcl9yeF91c2VjID0gc2F2ZWQuaW50cl9tb2RyX3J4X3VzZWM7XG4gXHRcdFx0YXBjLVx1MDAzZWludHJfbW9kcl9yeF9jb21wID0gc2F2ZWQuaW50cl9tb2RyX3J4X2NvbXA7XG4gXHRcdFx0YXBjLVx1MDAzZWludHJfbW9kcl90eF91c2VjID0gc2F2ZWQuaW50cl9tb2RyX3R4X3VzZWM7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFuYS9nZG1hLmggYi9pbmNsdWRlL25ldC9tYW5hL2dkbWEuaFxuaW5kZXggODUyOWNlZjBkN2M0NS4uNzBhN2YxZmVlNWQzYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9tYW5hL2dkbWEuaFxuQEAgLTE4Miw2ICYjNDM7MTgyLDcgQEAgc3RydWN0IGdkbWFfZ2VuZXJhbF9yZXEge1xuICNkZWZpbmUgR0RNQV9NRVNTQUdFX1YyIDJcbiAjZGVmaW5lIEdETUFfTUVTU0FHRV9WMyAzXG4gI2RlZmluZSBHRE1BX01FU1NBR0VfVjQgNFxuJiM0MzsjZGVmaW5lIEdETUFfTUVTU0FHRV9WNSA1XG4gXG4gc3RydWN0IGdkbWFfZ2VuZXJhbF9yZXNwIHtcbiBcdHN0cnVjdCBnZG1hX3Jlc3BfaGRyIGhkcjtcbkBAIC00MjgsNiAmIzQzOzQyOSw5IEBAIHN0cnVjdCBnZG1hX2NvbnRleHQge1xuIFx0LyogTDIgTVRVICovXG4gXHR1MTYgYWRhcHRlcl9tdHU7XG4gXG4mIzQzO1x0LyogTklDIHN1cHBvcnRzIENRRSB4OCBjb2FsZXNjaW5nICovXG4mIzQzO1x0Ym9vbCBjcWU4X2NvYWxlc2Npbmdfc3VwO1xuJiM0MztcbiBcdC8qIFRoaXMgbWFwcyBhIENRIGluZGV4IHRvIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUuICovXG4gXHR1bnNpZ25lZCBpbnRcdFx0bWF4X251bV9jcXM7XG4gXHRzdHJ1Y3QgZ2RtYV9xdWV1ZVx0KipjcV90YWJsZTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9tYW5hL21hbmEuaCBiL2luY2x1ZGUvbmV0L21hbmEvbWFuYS5oXG5pbmRleCA0ZDA0MWZiODQzN2Y1Li41MGFjYjZiZjhmMTI1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L21hbmEvbWFuYS5oXG5AQCAtNjIsOSAmIzQzOzYyLDEyIEBAIGVudW0gVFJJX1NUQVRFIHtcbiBcbiAjZGVmaW5lIE1BWF9QT1JUU19JTl9NQU5BX0RFViAyNTZcbiBcbi0vKiBNYXhpbXVtIG51bWJlciBvZiBwYWNrZXRzIHBlciBjb2FsZXNjZWQgQ1FFICovXG4mIzQzOy8qIE1heGltdW0gbnVtYmVyIG9mIFBQSXMgcGVyIGNvYWxlc2NlZCBDUUUgKi9cbiAjZGVmaW5lIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIDRcbiBcbiYjNDM7LyogOC1wa3QgbW9kZSBwYWNrcyB1cCB0byAyIHBhY2tldHMgcGVyIFBQSSBlbnRyeSAqL1xuJiM0MzsjZGVmaW5lIE1BTkFfQ1FFX0NPQUxfUEtUU184IDhcbiYjNDM7XG4gLyogRGVmYXVsdC9tYXggaW50ZXJydXB0IG1vZGVyYXRpb24gc2V0dGluZ3MgKi9cbiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX1VTRUNfREVGIDBcbiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX0NPTVBfREVGIDBcbkBAIC03OSw3ICYjNDM7ODIsNyBAQCBlbnVtIFRSSV9TVEFURSB7XG4gI2RlZmluZSBNQU5BX0lOVFJfTU9EUl9DT01QX01BU0sgICBHRU5NQVNLKDIzLCAxNilcbiBcbiAvKiBVcGRhdGUgdGhpcyBjb3VudCB3aGVuZXZlciB0aGUgcmVzcGVjdGl2ZSBzdHJ1Y3R1cmVzIGFyZSBjaGFuZ2VkICovXG4tI2RlZmluZSBNQU5BX1NUQVRTX1JYX0NPVU5UICg2ICYjNDM7IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMSlcbiYjNDM7I2RlZmluZSBNQU5BX1NUQVRTX1JYX0NPVU5UICg2ICYjNDM7IE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMSlcbiAjZGVmaW5lIE1BTkFfU1RBVFNfVFhfQ09VTlQgMTFcbiBcbiAjZGVmaW5lIE1BTkFfUlhfRlJBR19BTElHTk1FTlQgNjRcbkBAIC05MSw3ICYjNDM7OTQsNyBAQCBzdHJ1Y3QgbWFuYV9zdGF0c19yeCB7XG4gXHR1NjQgeGRwX3R4O1xuIFx0dTY0IHhkcF9yZWRpcmVjdDtcbiBcdHU2NCBwa3RfbGVuMF9lcnI7XG4tXHR1NjQgY29hbGVzY2VkX2NxZVtNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDFdO1xuJiM0MztcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfQ1FFX0NPQUxfUEtUU184IC0gMV07XG4gXHRzdHJ1Y3QgdTY0X3N0YXRzX3N5bmMgc3luY3A7XG4gfTtcbiBcbkBAIC0yMDIsNiAmIzQzOzIwNSw3IEBAIGVudW0gbWFuYV9jcWVfdHlwZSB7XG4gXHRDUUVfUlhfQ09BTEVTQ0VEXzRcdFx0PSAyLFxuIFx0Q1FFX1JYX09CSkVDVF9GRU5DRVx0XHQ9IDMsXG4gXHRDUUVfUlhfVFJVTkNBVEVEXHRcdD0gNCxcbiYjNDM7XHRDUUVfUlhfQ09BTEVTQ0VEXzhcdFx0PSA3LFxuIFxuIFx0Q1FFX1RYX09LQVlcdFx0XHQ9IDMyLFxuIFx0Q1FFX1RYX1NBX0RST1BcdFx0XHQ9IDMzLFxuQEAgLTIzOCwxMiAmIzQzOzI0MiwyNiBAQCBzdHJ1Y3QgbWFuYV9jcWVfaGVhZGVyIHtcbiAjZGVmaW5lIE1BTkFfSEFTSF9MNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gXHQoTkRJU19IQVNIX1RDUF9JUFY0IHwgTkRJU19IQVNIX1VEUF9JUFY0IHwgTkRJU19IQVNIX1RDUF9JUFY2IHwgICAgICBcXFxuIFx0IE5ESVNfSEFTSF9VRFBfSVBWNiB8IE5ESVNfSEFTSF9UQ1BfSVBWNl9FWCB8IE5ESVNfSEFTSF9VRFBfSVBWNl9FWClcbiYjNDM7I2RlZmluZSBNQU5BX0hBU0hfRU5BQkxFX1NVUFBPUlRFRCBcXFxuJiM0MztcdChORElTX0hBU0hfSVBWNCB8IE5ESVNfSEFTSF9UQ1BfSVBWNCB8IE5ESVNfSEFTSF9VRFBfSVBWNCB8IFxcXG4mIzQzO1x0IE5ESVNfSEFTSF9JUFY2IHwgTkRJU19IQVNIX1RDUF9JUFY2IHwgTkRJU19IQVNIX1VEUF9JUFY2KVxuJiM0MztcbiYjNDM7LyogUmVhZCBQUEkgaW4gdHdvIGRpZmZlcmVudCBsYXlvdXRzIGJhc2VkIG9uIGNxZV90eXBlICovXG4mIzQzO3VuaW9uIG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHtcbiYjNDM7XHRzdHJ1Y3Qge1xuJiM0MztcdFx0dTMyIHBrdF9sZW4gOiAxNjtcbiYjNDM7XHRcdHUzMiByZXNlcnZlZDEgOiAxNjtcbiYjNDM7XHRcdHUzMiByZXNlcnZlZDI7XG4mIzQzO1x0XHR1MzIgcGt0X2hhc2g7XG4mIzQzO1x0fTtcbiBcbi1zdHJ1Y3QgbWFuYV9yeGNvbXBfcGVycGt0X2luZm8ge1xuLVx0dTMyIHBrdF9sZW5cdDogMTY7XG4tXHR1MzIgcmVzZXJ2ZWQxXHQ6IDE2O1xuLVx0dTMyIHJlc2VydmVkMjtcbi1cdHUzMiBwa3RfaGFzaDtcbiYjNDM7XHQvKiBVcCB0byB0d28gcGt0cyBwZXIgUFBJIGVudHJ5ICovXG4mIzQzO1x0c3RydWN0IHtcbiYjNDM7XHRcdHUzMiBwa3RfaGFzaDA7XG4mIzQzO1x0XHR1MTYgcGt0X2xlbjA7XG4mIzQzO1x0XHR1MTYgcGt0X2xlbjE7XG4mIzQzO1x0XHR1MzIgcGt0X2hhc2gxO1xuJiM0MztcdH07XG4gfTsgLyogSFcgREFUQSAqL1xuIFxuIC8qIFJlY2VpdmUgY29tcGxldGlvbiBPT0IgKi9cbkBAIC0yNjQsNyAmIzQzOzI4Miw3IEBAIHN0cnVjdCBtYW5hX3J4Y29tcF9vb2Ige1xuIFx0dTMyIHJ4X3VkcF9jc3VtX2ZhaWxcdFx0OiAxO1xuIFx0dTMyIHJlc2VydmVkMlx0XHRcdDogMTtcbiBcbi1cdHN0cnVjdCBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyBwcGlbTUFOQV9SWENPTVBfT09CX05VTV9QUEldO1xuJiM0MztcdHVuaW9uIG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHBwaVtNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSV07XG4gXG4gXHR1MzIgcnhfd3FlX29mZnNldDtcbiB9OyAvKiBIVyBEQVRBICovXG5AQCAtNjA3LDYgJiM0Mzs2MjUsNyBAQCBzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQge1xuIFx0Ym9vbCBwb3J0X3N0X3NhdmU7IC8qIFNhdmVkIHBvcnQgc3RhdGUgKi9cbiBcbiBcdHU4IGNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcbiYjNDM7XHR1OCBjcWU4X2NvYWxlc2NpbmdfZW5hYmxlO1xuIFx0dTMyIGNxZV9jb2FsZXNjaW5nX3RpbWVvdXRfbnM7XG4gXG4gXHQvKiBJbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyAqL1xuQEAgLTc1MSw2ICYjNDM7NzcwLDggQEAgc3RydWN0IG1hbmFfcXVlcnlfZGV2aWNlX2NmZ19yZXEge1xuIFx0dTMyIHJlc2VydmVkO1xuIH07IC8qIEhXIERBVEEgKi9cbiBcbiYjNDM7I2RlZmluZSBNQU5BX1BGX0ZMQUdfMV9DUUVfOF9DT0FMRVNDSU5HX1NVUFBPUlRFRCBCSVQoNSlcbiYjNDM7XG4gc3RydWN0IG1hbmFfcXVlcnlfZGV2aWNlX2NmZ19yZXNwIHtcbiBcdHN0cnVjdCBnZG1hX3Jlc3BfaGRyIGhkcjtcbiBcbkBAIC05ODYsNyAmIzQzOzEwMDcsMTAgQEAgc3RydWN0IG1hbmFfY2ZnX3J4X3N0ZWVyX3JlcV92MiB7XG4gXHRtYW5hX2hhbmRsZV90IGRlZmF1bHRfcnhvYmo7XG4gXHR1OCBoYXNoa2V5W01BTkFfSEFTSF9LRVlfU0laRV07XG4gXHR1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7XG4tXHR1OCByZXNlcnZlZDJbN107XG4mIzQzO1x0dTggcmVzZXJ2ZWQyWzNdO1xuJiM0MztcdHUxNiByc3NfaGFzaF90eXBlcztcbiYjNDM7XHR1OCBjcWU4X2NvYWxlc2NpbmdfZW5hYmxlOyAvKiB2NSBtZXNzYWdlICovXG4mIzQzO1x0dTggcmVzZXJ2ZWQzO1xuIFx0bWFuYV9oYW5kbGVfdCBpbmRpcl90YWJbXSBfX2NvdW50ZWRfYnkobnVtX2luZGlyX2VudHJpZXMpO1xuIH07IC8qIEhXIERBVEEgKi9cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNjoxOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciB0byBhZGQgc3VwcG9ydCBmb3IgQ1FFIDgtcGFja2V0IGNvYWxlc2NpbmcuIE1BTkEgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBTbWFydE5JQyBkZXZpY2UgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIHNvIHRoaXMgY29kZSBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgYnkgdGhlIGZ1enplci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkN2E0MDEwMGI3M2Y3YjA4MTllZGJlYWU4NGVkOGM1NGI3ZjdiMjdmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAwNjoxOTo0MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYwppbmRleCBhODBjZjBiYzQ2MmNmLi5hM2MyOTA3N2RhZjVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jCkBAIC0xMjQxLDYgJiM0MzsxMjQxLDkgQEAgaW50IG1hbmFfZ2RfcXVlcnlfZGV2aWNlX2NmZyhzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgdTMyIHByb3RvX21ham9yX3ZlciwKIAkJcmV0dXJuIGVycjsKIAl9CiAKJiM0MzsJZ2MtJmd0O2NxZThfY29hbGVzY2luZ19zdXAgPSAhIShyZXNwLnBmX2NhcF9mbGFnczEgJmFtcDsKJiM0MzsJCQkJICAgICBNQU5BX1BGX0ZMQUdfMV9DUUVfOF9DT0FMRVNDSU5HX1NVUFBPUlRFRCk7CiYjNDM7CiAJKm1heF9udW1fdnBvcnRzID0gcmVzcC5tYXhfbnVtX3Zwb3J0czsKIAogCWlmIChyZXNwLmhkci5yZXNwb25zZS5tc2dfdmVyc2lvbiAmZ3Q7PSBHRE1BX01FU1NBR0VfVjIpIHsKQEAgLTE0MjYsNyAmIzQzOzE0MjksMTEgQEAgc3RhdGljIGludCBtYW5hX2NmZ192cG9ydF9zdGVlcmluZyhzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYywKIAltYW5hX2dkX2luaXRfcmVxX2hkcigmYW1wO3JlcS0mZ3Q7aGRyLCBNQU5BX0NPTkZJR19WUE9SVF9SWCwgcmVxX2J1Zl9zaXplLAogCQkJICAgICBzaXplb2YocmVzcCkpOwogCi0JcmVxLSZndDtoZHIucmVxLm1zZ192ZXJzaW9uID0gR0RNQV9NRVNTQUdFX1YyOwomIzQzOwkvKiBSZXF1ZXN0ICZhbXA7IHJlc3BvbnNlIHZlcnNpb25zIGNhbiBiZSBkaWZmZXJlbnQuCiYjNDM7CSAqIEhXIGNhbiBoYW5kbGUgbmV3ZXIgbXNnIHZlcnNpb25zLCBieSBza2lwcGluZwomIzQzOwkgKiBuZXcgZmllbGRzLgomIzQzOwkgKi8KJiM0MzsJcmVxLSZndDtoZHIucmVxLm1zZ192ZXJzaW9uID0gR0RNQV9NRVNTQUdFX1Y1OwogCXJlcS0mZ3Q7aGRyLnJlc3AubXNnX3ZlcnNpb24gPSBHRE1BX01FU1NBR0VfVjI7CiAKIAlyZXEtJmd0O3Zwb3J0ID0gYXBjLSZndDtwb3J0X2hhbmRsZTsKQEAgLTE0NDAsOCAmIzQzOzE0NDcsMTMgQEAgc3RhdGljIGludCBtYW5hX2NmZ192cG9ydF9zdGVlcmluZyhzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYywKIAlyZXEtJmd0O3VwZGF0ZV9pbmRpcl90YWIgPSB1cGRhdGVfdGFiOwogCXJlcS0mZ3Q7ZGVmYXVsdF9yeG9iaiA9IGFwYy0mZ3Q7ZGVmYXVsdF9yeG9iajsKIAotCWlmIChyeCAhPSBUUklfU1RBVEVfRkFMU0UpCiYjNDM7CS8qIFJlcXVlc3QtbXNnIHY1IHJlcXVpcmVzIHRoaXMgZmllbGQgKi8KJiM0MzsJcmVxLSZndDtyc3NfaGFzaF90eXBlcyA9IE1BTkFfSEFTSF9FTkFCTEVfU1VQUE9SVEVEOwomIzQzOwomIzQzOwlpZiAocnggIT0gVFJJX1NUQVRFX0ZBTFNFKSB7CiAJCXJlcS0mZ3Q7Y3FlX2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLSZndDtjcWVfY29hbGVzY2luZ19lbmFibGU7CiYjNDM7CQlyZXEtJmd0O2NxZThfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtJmd0O2NxZThfY29hbGVzY2luZ19lbmFibGU7CiYjNDM7CX0KIAogCWlmICh1cGRhdGVfa2V5KQogCQltZW1jcHkoJmFtcDtyZXEtJmd0O2hhc2hrZXksIGFwYy0mZ3Q7aGFzaGtleSwgTUFOQV9IQVNIX0tFWV9TSVpFKTsKQEAgLTIwNDYsMTYgJiM0MzsyMDU4LDE0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbWFuYV9idWlsZF9za2Ioc3RydWN0IG1hbmFfcnhxICpyeHEsIHZvaWQgKmJ1Zl92YSwKIAogc3RhdGljIHZvaWQgbWFuYV9yeF9za2Iodm9pZCAqYnVmX3ZhLCBib29sIGZyb21fcG9vbCwKIAkJCXN0cnVjdCBtYW5hX3J4Y29tcF9vb2IgKmNxZSwgc3RydWN0IG1hbmFfcnhxICpyeHEsCi0JCQlpbnQgaSkKJiM0MzsJCQl1MzIgcGt0X2xlbiwgdTMyIHBrdF9oYXNoKQogewogCXN0cnVjdCBtYW5hX3N0YXRzX3J4ICpyeF9zdGF0cyA9ICZhbXA7cnhxLSZndDtzdGF0czsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHJ4cS0mZ3Q7bmRldjsKLQl1aW50IHBrdF9sZW4gPSBjcWUtJmd0O3BwaVtpXS5wa3RfbGVuOwogCXUxNiByeHFfaWR4ID0gcnhxLSZndDtyeHFfaWR4OwogCXN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaTsKIAlzdHJ1Y3QgeGRwX2J1ZmYgeGRwID0ge307CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKLQl1MzIgaGFzaF92YWx1ZTsKIAl1MzIgYWN0OwogCiAJcnhxLSZndDtyeF9jcS53b3JrX2RvbmUmIzQzOyYjNDM7OwpAQCAtMjA5NCwxMiAmIzQzOzIxMDQsMTAgQEAgc3RhdGljIHZvaWQgbWFuYV9yeF9za2Iodm9pZCAqYnVmX3ZhLCBib29sIGZyb21fcG9vbCwKIAl9CiAKIAlpZiAoY3FlLSZndDtyeF9oYXNodHlwZSAhPSAwICZhbXA7JmFtcDsgKG5kZXYtJmd0O2ZlYXR1cmVzICZhbXA7IE5FVElGX0ZfUlhIQVNIKSkgewotCQloYXNoX3ZhbHVlID0gY3FlLSZndDtwcGlbaV0ucGt0X2hhc2g7Ci0KIAkJaWYgKGNxZS0mZ3Q7cnhfaGFzaHR5cGUgJmFtcDsgTUFOQV9IQVNIX0w0KQotCQkJc2tiX3NldF9oYXNoKHNrYiwgaGFzaF92YWx1ZSwgUEtUX0hBU0hfVFlQRV9MNCk7CiYjNDM7CQkJc2tiX3NldF9oYXNoKHNrYiwgcGt0X2hhc2gsIFBLVF9IQVNIX1RZUEVfTDQpOwogCQllbHNlCi0JCQlza2Jfc2V0X2hhc2goc2tiLCBoYXNoX3ZhbHVlLCBQS1RfSEFTSF9UWVBFX0wzKTsKJiM0MzsJCQlza2Jfc2V0X2hhc2goc2tiLCBwa3RfaGFzaCwgUEtUX0hBU0hfVFlQRV9MMyk7CiAJfQogCiAJaWYgKGNxZS0mZ3Q7cnhfdmxhbnRhZ19wcmVzZW50KSB7CkBAIC0yMjQwLDYgJiM0MzsyMjQ4LDQzIEBAIHN0YXRpYyB2b2lkIG1hbmFfcmVmaWxsX3J4X29vYihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtYW5hX3J4cSAqcnhxLAogCXJ4b29iLSZndDtkbWFfc3luY19vZmZzZXQgPSBkbWFfc3luY19vZmZzZXQ7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtYW5hX3J4cSAqcnhxLAomIzQzOwkJCQkgICAgc3RydWN0IG1hbmFfcnhjb21wX29vYiAqb29iLAomIzQzOwkJCQkgICAgdTMyIHBrdGxlbiwgdTMyIHBrdF9oYXNoKQomIzQzO3sKJiM0MzsJc3RydWN0IG1hbmFfcmVjdl9idWZfb29iICpyeGJ1Zl9vb2I7CiYjNDM7CXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcnhxLSZndDtuZGV2OwomIzQzOwl2b2lkICpvbGRfYnVmID0gTlVMTDsKJiM0MzsJYm9vbCBvbGRfZnA7CiYjNDM7CiYjNDM7CXJ4YnVmX29vYiA9ICZhbXA7cnhxLSZndDtyeF9vb2JzW3J4cS0mZ3Q7YnVmX2luZGV4XTsKJiM0MzsJV0FSTl9PTl9PTkNFKHJ4YnVmX29vYi0mZ3Q7d3FlX2luZi53cWVfc2l6ZV9pbl9idSAhPSAxKTsKJiM0MzsKJiM0MzsJaWYgKHVubGlrZWx5KHBrdGxlbiAmZ3Q7IHJ4cS0mZ3Q7ZGF0YXNpemUpKSB7CiYjNDM7CQkvKiBJbmNyZWFzZSBpdCBldmVuIGlmIG1hbmFfcnhfc2tiKCkgaXNuJiMzOTt0IGNhbGxlZC4gKi8KJiM0MzsJCXJ4cS0mZ3Q7cnhfY3Eud29ya19kb25lJiM0MzsmIzQzOzsKJiM0MzsKJiM0MzsJCSYjNDM7JiM0MztuZGV2LSZndDtzdGF0cy5yeF9kcm9wcGVkOwomIzQzOwkJbmV0ZGV2X3dhcm5fb25jZShuZGV2LAomIzQzOwkJCQkgJiMzNDtEcm9wcGVkIG92ZXJzaXplZCBSWCBwYWNrZXQ6IGxlbj0ldSwgZGF0YXNpemU9JXVcbiYjMzQ7LAomIzQzOwkJCQkgcGt0bGVuLCByeHEtJmd0O2RhdGFzaXplKTsKJiM0MzsKJiM0MzsJCS8qIFJldXNlIHRoZSBSWCBidWZmZXIgc2luY2UgcnhidWZfb29iIGlzIHVuY2hhbmdlZC4gKi8KJiM0MzsJfSBlbHNlIHsKJiM0MzsJCW1hbmFfcmVmaWxsX3J4X29vYihkZXYsIHJ4cSwgcnhidWZfb29iLCBwa3RsZW4sCiYjNDM7CQkJCSAgICZhbXA7b2xkX2J1ZiwgJmFtcDtvbGRfZnApOwomIzQzOwomIzQzOwkJLyogVW5zdWNjZXNzZnVsIHJlZmlsbCB3aWxsIGhhdmUgb2xkX2J1ZiA9PSBOVUxMLgomIzQzOwkJICogSW4gdGhpcyBjYXNlLCBtYW5hX3J4X3NrYigpIHdpbGwgZHJvcCB0aGUgcGFja2V0LgomIzQzOwkJICovCiYjNDM7CQltYW5hX3J4X3NrYihvbGRfYnVmLCBvbGRfZnAsIG9vYiwgcnhxLCBwa3RsZW4sIHBrdF9oYXNoKTsKJiM0MzsJfQomIzQzOwomIzQzOwltYW5hX21vdmVfd3FfdGFpbChyeHEtJmd0O2dkbWFfcnEsIHJ4YnVmX29vYi0mZ3Q7d3FlX2luZi53cWVfc2l6ZV9pbl9idSk7CiYjNDM7CiYjNDM7CW1hbmFfcG9zdF9wa3RfcnhxKHJ4cSk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLAogCQkJCXN0cnVjdCBnZG1hX2NvbXAgKmNxZSkKIHsKQEAgLTIyNDksMTAgJiM0MzsyMjk0LDEwIEBAIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSwKIAlzdHJ1Y3QgbWFuYV9yZWN2X2J1Zl9vb2IgKnJ4YnVmX29vYjsKIAlzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYzsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBnYy0mZ3Q7ZGV2OwomIzQzOwlib29sIGNvYWxlc2NlZF84ID0gZmFsc2U7CiAJYm9vbCBjb2FsZXNjZWQgPSBmYWxzZTsKLQl2b2lkICpvbGRfYnVmID0gTlVMTDsKLQl1MzIgY3VyciwgcGt0bGVuOwotCWJvb2wgb2xkX2ZwOwomIzQzOwl1MzIgcGt0bGVuOwomIzQzOwlpbnQgcGt0X2k7CiAJaW50IGk7CiAKIAlhcGMgPSBuZXRkZXZfcHJpdihuZGV2KTsKQEAgLTIyNzUsNiAmIzQzOzIzMjAsMTEgQEAgc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLAogCQljb2FsZXNjZWQgPSB0cnVlOwogCQlicmVhazsKIAomIzQzOwljYXNlIENRRV9SWF9DT0FMRVNDRURfODoKJiM0MzsJCWNvYWxlc2NlZCA9IHRydWU7CiYjNDM7CQljb2FsZXNjZWRfOCA9IHRydWU7CiYjNDM7CQlicmVhazsKJiM0MzsKIAljYXNlIENRRV9SWF9PQkpFQ1RfRkVOQ0U6CiAJCWNvbXBsZXRlKCZhbXA7cnhxLSZndDtmZW5jZV9ldmVudCk7CiAJCXJldHVybjsKQEAgLTIyODYsNTQgJiM0MzsyMzM2LDQ4IEBAIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSwKIAkJcmV0dXJuOwogCX0KIAomIzQzOwlwa3RfaSA9IDA7CiAJZm9yIChpID0gMDsgaSAmbHQ7IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJOyBpJiM0MzsmIzQzOykgewotCQlvbGRfYnVmID0gTlVMTDsKLQkJcGt0bGVuID0gb29iLSZndDtwcGlbaV0ucGt0X2xlbjsKLQkJaWYgKHBrdGxlbiA9PSAwKQotCQkJYnJlYWs7Ci0KLQkJY3VyciA9IHJ4cS0mZ3Q7YnVmX2luZGV4OwotCQlyeGJ1Zl9vb2IgPSAmYW1wO3J4cS0mZ3Q7cnhfb29ic1tjdXJyXTsKLQkJV0FSTl9PTl9PTkNFKHJ4YnVmX29vYi0mZ3Q7d3FlX2luZi53cWVfc2l6ZV9pbl9idSAhPSAxKTsKLQotCQlpZiAodW5saWtlbHkocGt0bGVuICZndDsgcnhxLSZndDtkYXRhc2l6ZSkpIHsKLQkJCS8qIEluY3JlYXNlIGl0IGV2ZW4gaWYgbWFuYV9yeF9za2IoKSBpc24mIzM5O3QgY2FsbGVkLiAqLwotCQkJcnhxLSZndDtyeF9jcS53b3JrX2RvbmUmIzQzOyYjNDM7OwomIzQzOwkJdTMyIHBrdF9oYXNoOwogCi0JCQkmIzQzOyYjNDM7bmRldi0mZ3Q7c3RhdHMucnhfZHJvcHBlZDsKLQkJCW5ldGRldl93YXJuX29uY2UobmRldiwKLQkJCQkmIzM0O0Ryb3BwZWQgb3ZlcnNpemVkIFJYIHBhY2tldDogbGVuPSV1LCBkYXRhc2l6ZT0ldVxuJiMzNDssCi0JCQkJcGt0bGVuLCByeHEtJmd0O2RhdGFzaXplKTsKLQotCQkJLyogUmV1c2UgdGhlIFJYIGJ1ZmZlciBzaW5jZSByeGJ1Zl9vb2IgaXMgdW5jaGFuZ2VkLiAqLwomIzQzOwkJaWYgKGNvYWxlc2NlZF84KSB7CiYjNDM7CQkJLyogOC1wa3QgbW9kZTogMiBwYWNrZXRzIHBlciBQUEkgZW50cnkgKi8KJiM0MzsJCQlwa3RsZW4gPSBvb2ItJmd0O3BwaVtpXS5wa3RfbGVuMDsKJiM0MzsJCQlwa3RfaGFzaCA9IG9vYi0mZ3Q7cHBpW2ldLnBrdF9oYXNoMDsKIAkJfSBlbHNlIHsKLQotCQkJbWFuYV9yZWZpbGxfcnhfb29iKGRldiwgcnhxLCByeGJ1Zl9vb2IsIHBrdGxlbiwKLQkJCQkJICAgJmFtcDtvbGRfYnVmLCAmYW1wO29sZF9mcCk7Ci0KLQkJCS8qIFVuc3VjY2Vzc2Z1bCByZWZpbGwgd2lsbCBoYXZlIG9sZF9idWYgPT0gTlVMTC4KLQkJCSAqIEluIHRoaXMgY2FzZSwgbWFuYV9yeF9za2IoKSB3aWxsIGRyb3AgdGhlIHBhY2tldC4KLQkJCSAqLwotCQkJbWFuYV9yeF9za2Iob2xkX2J1Ziwgb2xkX2ZwLCBvb2IsIHJ4cSwgaSk7CiYjNDM7CQkJcGt0bGVuID0gb29iLSZndDtwcGlbaV0ucGt0X2xlbjsKJiM0MzsJCQlwa3RfaGFzaCA9IG9vYi0mZ3Q7cHBpW2ldLnBrdF9oYXNoOwogCQl9CiYjNDM7CQlpZiAocGt0bGVuID09IDApCiYjNDM7CQkJYnJlYWs7CiAKLQkJbWFuYV9tb3ZlX3dxX3RhaWwocnhxLSZndDtnZG1hX3JxLAotCQkJCSAgcnhidWZfb29iLSZndDt3cWVfaW5mLndxZV9zaXplX2luX2J1KTsKLQotCQltYW5hX3Bvc3RfcGt0X3J4cShyeHEpOwomIzQzOwkJbWFuYV9wcm9jZXNzX29uZV9yeF9wa3QoZGV2LCByeHEsIG9vYiwgcGt0bGVuLCBwa3RfaGFzaCk7CiYjNDM7CQlwa3RfaSYjNDM7JiM0Mzs7CiAKIAkJaWYgKCFjb2FsZXNjZWQpCiAJCQlicmVhazsKJiM0MzsKJiM0MzsJCS8qIFByb2Nlc3MgMm5kIHBhY2tldCBmcm9tIHRoZSBzYW1lIFBQSSBpbiA4LXBrdCBtb2RlICovCiYjNDM7CQlpZiAoY29hbGVzY2VkXzgpIHsKJiM0MzsJCQlwa3RsZW4gPSBvb2ItJmd0O3BwaVtpXS5wa3RfbGVuMTsKJiM0MzsJCQlwa3RfaGFzaCA9IG9vYi0mZ3Q7cHBpW2ldLnBrdF9oYXNoMTsKJiM0MzsJCQlpZiAocGt0bGVuID09IDApCiYjNDM7CQkJCWJyZWFrOwomIzQzOwomIzQzOwkJCW1hbmFfcHJvY2Vzc19vbmVfcnhfcGt0KGRldiwgcnhxLCBvb2IsIHBrdGxlbiwKJiM0MzsJCQkJCQlwa3RfaGFzaCk7CiYjNDM7CQkJcGt0X2kmIzQzOyYjNDM7OwomIzQzOwkJfQogCX0KIAogCS8qIENvbGxlY3QgY29hbGVzY2VkIENRRSBjb3VudCBiYXNlZCBvbiBwYWNrZXRzIHByb2Nlc3NlZC4KLQkgKiBDb2FsZXNjZWQgQ1FFcyBoYXZlIGF0IGxlYXN0IDIgcGFja2V0cywgc28gaW5kZXggaXMgaSAtIDIuCiYjNDM7CSAqIENvYWxlc2NlZCBDUUVzIGhhdmUgYXQgbGVhc3QgMiBwYWNrZXRzLCBzbyBpbmRleCBpcyBwa3RfaSAtIDIuCiAJICovCi0JaWYgKGkgJmd0OyAxKSB7CiYjNDM7CWlmIChwa3RfaSAmZ3Q7IDEpIHsKIAkJdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbigmYW1wO3J4cS0mZ3Q7c3RhdHMuc3luY3ApOwotCQlyeHEtJmd0O3N0YXRzLmNvYWxlc2NlZF9jcWVbaSAtIDJdJiM0MzsmIzQzOzsKJiM0MzsJCXJ4cS0mZ3Q7c3RhdHMuY29hbGVzY2VkX2NxZVtwa3RfaSAtIDJdJiM0MzsmIzQzOzsKIAkJdTY0X3N0YXRzX3VwZGF0ZV9lbmQoJmFtcDtyeHEtJmd0O3N0YXRzLnN5bmNwKTsKLQl9IGVsc2UgaWYgKCFpICZhbXA7JmFtcDsgIXBrdGxlbikgewomIzQzOwl9IGVsc2UgaWYgKCFwa3RfaSAmYW1wOyZhbXA7ICFwa3RsZW4pIHsKIAkJdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbigmYW1wO3J4cS0mZ3Q7c3RhdHMuc3luY3ApOwogCQlyeHEtJmd0O3N0YXRzLnBrdF9sZW4wX2VyciYjNDM7JiM0Mzs7CiAJCXU2NF9zdGF0c191cGRhdGVfZW5kKCZhbXA7cnhxLSZndDtzdGF0cy5zeW5jcCk7CkBAIC0zNzYzLDYgJiM0MzszODA3LDcgQEAgc3RhdGljIGludCBtYW5hX3Byb2JlX3BvcnQoc3RydWN0IG1hbmFfY29udGV4dCAqYWMsIGludCBwb3J0X2lkeCwKIAlhcGMtJmd0O3BvcnRfaWR4ID0gcG9ydF9pZHg7CiAJYXBjLSZndDtsaW5rX2NmZ19lcnJvciA9IDE7CiAJYXBjLSZndDtjcWVfY29hbGVzY2luZ19lbmFibGUgPSAwOwomIzQzOwlhcGMtJmd0O2NxZThfY29hbGVzY2luZ19lbmFibGUgPSAwOwogCiAJLyogSW5pdGlhbGl6ZSBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyBpZiBzdXBwb3J0ZWQgYnkgSFcgKi8KIAlpZiAoZ2MtJmd0O3BmX2NhcF9mbGFnczEgJmFtcDsgR0RNQV9QRl9DQVBfRkxBR18xX0RZTl9JTlRFUlJVUFRfTU9ERVJBVElPTikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuYwppbmRleCA5ZTMxZTI1OTVhZTMyLi4wNGY4Nzc3MDdjYzZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuYwpAQCAtMTY5LDcgJiM0MzsxNjksNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9zdHJpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgc3RyaW5nc2V0LCB1OCAqZGF0YSkKIAkJZXRodG9vbF9zcHJpbnRmKCZhbXA7ZGF0YSwgJiMzNDtyeF8lZF94ZHBfdHgmIzM0OywgaSk7CiAJCWV0aHRvb2xfc3ByaW50ZigmYW1wO2RhdGEsICYjMzQ7cnhfJWRfeGRwX3JlZGlyZWN0JiMzNDssIGkpOwogCQlldGh0b29sX3NwcmludGYoJmFtcDtkYXRhLCAmIzM0O3J4XyVkX3BrdF9sZW4wX2VyciYjMzQ7LCBpKTsKLQkJZm9yIChqID0gMDsgaiAmbHQ7IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaiYjNDM7JiM0MzspCiYjNDM7CQlmb3IgKGogPSAwOyBqICZsdDsgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqJiM0MzsmIzQzOykKIAkJCWV0aHRvb2xfc3ByaW50ZigmYW1wO2RhdGEsICYjMzQ7cnhfJWRfY29hbGVzY2VkX2NxZV8lZCYjMzQ7LCBpLCBqICYjNDM7IDIpOwogCX0KIApAQCAtMjA1LDcgJiM0MzsyMDUsNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCXU2NCB4ZHBfZHJvcDsKIAl1NjQgeGRwX3R4OwogCXU2NCBwa3RfbGVuMF9lcnI7Ci0JdTY0IGNvYWxlc2NlZF9jcWVbTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxXTsKJiM0MzsJdTY0IGNvYWxlc2NlZF9jcWVbTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxXTsKIAl1NjQgdHNvX3BhY2tldHM7CiAJdTY0IHRzb19ieXRlczsKIAl1NjQgdHNvX2lubmVyX3BhY2tldHM7CkBAIC0yNDUsNyAmIzQzOzI0NSw3IEBAIHN0YXRpYyB2b2lkIG1hbmFfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJCQl4ZHBfdHggPSByeF9zdGF0cy0mZ3Q7eGRwX3R4OwogCQkJeGRwX3JlZGlyZWN0ID0gcnhfc3RhdHMtJmd0O3hkcF9yZWRpcmVjdDsKIAkJCXBrdF9sZW4wX2VyciA9IHJ4X3N0YXRzLSZndDtwa3RfbGVuMF9lcnI7Ci0JCQlmb3IgKGogPSAwOyBqICZsdDsgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxOyBqJiM0MzsmIzQzOykKJiM0MzsJCQlmb3IgKGogPSAwOyBqICZsdDsgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqJiM0MzsmIzQzOykKIAkJCQljb2FsZXNjZWRfY3FlW2pdID0gcnhfc3RhdHMtJmd0O2NvYWxlc2NlZF9jcWVbal07CiAJCX0gd2hpbGUgKHU2NF9zdGF0c19mZXRjaF9yZXRyeSgmYW1wO3J4X3N0YXRzLSZndDtzeW5jcCwgc3RhcnQpKTsKIApAQCAtMjU1LDcgJiM0MzsyNTUsNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQlkYXRhW2kmIzQzOyYjNDM7XSA9IHhkcF90eDsKIAkJZGF0YVtpJiM0MzsmIzQzO10gPSB4ZHBfcmVkaXJlY3Q7CiAJCWRhdGFbaSYjNDM7JiM0MztdID0gcGt0X2xlbjBfZXJyOwotCQlmb3IgKGogPSAwOyBqICZsdDsgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxOyBqJiM0MzsmIzQzOykKJiM0MzsJCWZvciAoaiA9IDA7IGogJmx0OyBNQU5BX0NRRV9DT0FMX1BLVFNfOCAtIDE7IGomIzQzOyYjNDM7KQogCQkJZGF0YVtpJiM0MzsmIzQzO10gPSBjb2FsZXNjZWRfY3FlW2pdOwogCX0KIApAQCAtNDA4LDYgJiM0Mzs0MDgsNyBAQCBzdGF0aWMgaW50IG1hbmFfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCXN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCAqYXBjID0gbmV0ZGV2X3ByaXYobmRldik7CiAKIAlrZXJuZWxfY29hbC0mZ3Q7cnhfY3FlX2ZyYW1lcyA9CiYjNDM7CQlhcGMtJmd0O2NxZThfY29hbGVzY2luZ19lbmFibGUgPyBNQU5BX0NRRV9DT0FMX1BLVFNfOCA6CiAJCWFwYy0mZ3Q7Y3FlX2NvYWxlc2NpbmdfZW5hYmxlID8gTUFOQV9SWENPTVBfT09CX05VTV9QUEkgOiAxOwogCiAJa2VybmVsX2NvYWwtJmd0O3J4X2NxZV9uc2VjcyA9IGFwYy0mZ3Q7Y3FlX2NvYWxlc2NpbmdfdGltZW91dF9uczsKQEAgLTQ0MywxNSAmIzQzOzQ0NCwxOSBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQl1MTYgaW50cl9tb2RyX3R4X3VzZWM7CiAJCXUxNiBpbnRyX21vZHJfdHhfY29tcDsKIAkJdTggY3FlX2NvYWxlc2NpbmdfZW5hYmxlOwomIzQzOwkJdTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTsKIAkJYm9vbCByeF9kaW1fZW5hYmxlZDsKIAkJYm9vbCB0eF9kaW1fZW5hYmxlZDsKIAl9IHNhdmVkOwogCWJvb2wgbW9kcl9jaGFuZ2VkID0gZmFsc2U7CiAJYm9vbCBkaW1fY2hhbmdlZCA9IGZhbHNlOwogCXN0cnVjdCBnZG1hX2NvbnRleHQgKmdjOwomIzQzOwl1MzIgbWF4X2NxZV9mcmFtZXM7CiAJaW50IGVycjsKIAogCWdjID0gYXBjLSZndDthYy0mZ3Q7Z2RtYV9kZXYtJmd0O2dkbWFfY29udGV4dDsKJiM0MzsJbWF4X2NxZV9mcmFtZXMgPSBnYy0mZ3Q7Y3FlOF9jb2FsZXNjaW5nX3N1cCA/IE1BTkFfQ1FFX0NPQUxfUEtUU184IDoKJiM0MzsJCQkJCQkgICBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSTsKIAogCS8qIEJvdGggc3RhdGljIGFuZCBkeW5hbWljIGludGVycnVwdCBtb2RlcmF0aW9uIChESU0pIHJlbHkgb24gdGhlCiAJICogc2FtZSBIVyBjYXBhYmlsaXR5IGFkdmVydGlzZWQgYnkgdGhlIFBGLgpAQCAtNDY2LDEwICYjNDM7NDcxLDEyIEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJfQogCiAJaWYgKGtlcm5lbF9jb2FsLSZndDtyeF9jcWVfZnJhbWVzICE9IDEgJmFtcDsmYW1wOwotCSAgICBrZXJuZWxfY29hbC0mZ3Q7cnhfY3FlX2ZyYW1lcyAhPSBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSkgewomIzQzOwkgICAga2VybmVsX2NvYWwtJmd0O3J4X2NxZV9mcmFtZXMgIT0gTUFOQV9SWENPTVBfT09CX05VTV9QUEkgJmFtcDsmYW1wOwomIzQzOwkgICAga2VybmVsX2NvYWwtJmd0O3J4X2NxZV9mcmFtZXMgIT0gbWF4X2NxZV9mcmFtZXMpIHsKIAkJTkxfU0VUX0VSUl9NU0dfRk1UKGV4dGFjaywKLQkJCQkgICAmIzM0O3J4LWZyYW1lcyBtdXN0IGJlIDEgb3IgJXUsIGdvdCAldSYjMzQ7LAomIzQzOwkJCQkgICAmIzM0O3J4LWZyYW1lcyBtdXN0IGJlIDEgb3IgJXUlcywgZ290ICV1JiMzNDssCiAJCQkJICAgTUFOQV9SWENPTVBfT09CX05VTV9QUEksCiYjNDM7CQkJCSAgIGdjLSZndDtjcWU4X2NvYWxlc2Npbmdfc3VwID8gJiMzNDsgb3IgOCYjMzQ7IDogJiMzNDsmIzM0OywKIAkJCQkgICBrZXJuZWxfY29hbC0mZ3Q7cnhfY3FlX2ZyYW1lcyk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KQEAgLTUxNCw4ICYjNDM7NTIxLDExIEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJc2F2ZWQudHhfZGltX2VuYWJsZWQgPSBhcGMtJmd0O3R4X2RpbV9lbmFibGVkOwogCiAJc2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLSZndDtjcWVfY29hbGVzY2luZ19lbmFibGU7CiYjNDM7CXNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtJmd0O2NxZThfY29hbGVzY2luZ19lbmFibGU7CiAJYXBjLSZndDtjcWVfY29hbGVzY2luZ19lbmFibGUgPQotCQlrZXJuZWxfY29hbC0mZ3Q7cnhfY3FlX2ZyYW1lcyA9PSBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSTsKJiM0MzsJCWtlcm5lbF9jb2FsLSZndDtyeF9jcWVfZnJhbWVzICZndDs9IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJOwomIzQzOwlhcGMtJmd0O2NxZThfY29hbGVzY2luZ19lbmFibGUgPQomIzQzOwkJa2VybmVsX2NvYWwtJmd0O3J4X2NxZV9mcmFtZXMgPT0gTUFOQV9DUUVfQ09BTF9QS1RTXzg7CiAKIAlpZiAoIWFwYy0mZ3Q7cG9ydF9pc191cCkgewogCQlXUklURV9PTkNFKGFwYy0mZ3Q7cnhfZGltX2VuYWJsZWQsICEhZWMtJmd0O3VzZV9hZGFwdGl2ZV9yeF9jb2FsZXNjZSk7CkBAIC01MjMsNyAmIzQzOzUzMyw4IEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJCXJldHVybiAwOwogCX0KIAotCWlmIChhcGMtJmd0O2NxZV9jb2FsZXNjaW5nX2VuYWJsZSAhPSBzYXZlZC5jcWVfY29hbGVzY2luZ19lbmFibGUpIHsKJiM0MzsJaWYgKGFwYy0mZ3Q7Y3FlX2NvYWxlc2NpbmdfZW5hYmxlICE9IHNhdmVkLmNxZV9jb2FsZXNjaW5nX2VuYWJsZSB8fAomIzQzOwkgICAgYXBjLSZndDtjcWU4X2NvYWxlc2NpbmdfZW5hYmxlICE9IHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGUpIHsKIAkJLyogQ1FFIGNvYWxlc2Npbmcgc2V0dGluZyBpcyBhcHBsaWVkIHZpYSBSU1MgY29uZmlndXJhdGlvbi4gKi8KIAkJZXJyID0gbWFuYV9jb25maWdfcnNzKGFwYywgVFJJX1NUQVRFX1RSVUUsIGZhbHNlLCBmYWxzZSk7CiAJCWlmIChlcnIpIHsKQEAgLTUzMSw2ICYjNDM7NTQyLDggQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKIAkJCQkgICBlcnIpOwogCQkJYXBjLSZndDtjcWVfY29hbGVzY2luZ19lbmFibGUgPQogCQkJCXNhdmVkLmNxZV9jb2FsZXNjaW5nX2VuYWJsZTsKJiM0MzsJCQlhcGMtJmd0O2NxZThfY29hbGVzY2luZ19lbmFibGUgPQomIzQzOwkJCQlzYXZlZC5jcWU4X2NvYWxlc2NpbmdfZW5hYmxlOwogCQkJYXBjLSZndDtpbnRyX21vZHJfcnhfdXNlYyA9IHNhdmVkLmludHJfbW9kcl9yeF91c2VjOwogCQkJYXBjLSZndDtpbnRyX21vZHJfcnhfY29tcCA9IHNhdmVkLmludHJfbW9kcl9yeF9jb21wOwogCQkJYXBjLSZndDtpbnRyX21vZHJfdHhfdXNlYyA9IHNhdmVkLmludHJfbW9kcl90eF91c2VjOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFuYS9nZG1hLmggYi9pbmNsdWRlL25ldC9tYW5hL2dkbWEuaAppbmRleCA4NTI5Y2VmMGQ3YzQ1Li43MGE3ZjFmZWU1ZDNiIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9tYW5hL2dkbWEuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9tYW5hL2dkbWEuaApAQCAtMTgyLDYgJiM0MzsxODIsNyBAQCBzdHJ1Y3QgZ2RtYV9nZW5lcmFsX3JlcSB7CiAjZGVmaW5lIEdETUFfTUVTU0FHRV9WMiAyCiAjZGVmaW5lIEdETUFfTUVTU0FHRV9WMyAzCiAjZGVmaW5lIEdETUFfTUVTU0FHRV9WNCA0CiYjNDM7I2RlZmluZSBHRE1BX01FU1NBR0VfVjUgNQogCiBzdHJ1Y3QgZ2RtYV9nZW5lcmFsX3Jlc3AgewogCXN0cnVjdCBnZG1hX3Jlc3BfaGRyIGhkcjsKQEAgLTQyOCw2ICYjNDM7NDI5LDkgQEAgc3RydWN0IGdkbWFfY29udGV4dCB7CiAJLyogTDIgTVRVICovCiAJdTE2IGFkYXB0ZXJfbXR1OwogCiYjNDM7CS8qIE5JQyBzdXBwb3J0cyBDUUUgeDggY29hbGVzY2luZyAqLwomIzQzOwlib29sIGNxZThfY29hbGVzY2luZ19zdXA7CiYjNDM7CiAJLyogVGhpcyBtYXBzIGEgQ1EgaW5kZXggdG8gdGhlIHF1ZXVlIHN0cnVjdHVyZS4gKi8KIAl1bnNpZ25lZCBpbnQJCW1heF9udW1fY3FzOwogCXN0cnVjdCBnZG1hX3F1ZXVlCSoqY3FfdGFibGU7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9tYW5hL21hbmEuaCBiL2luY2x1ZGUvbmV0L21hbmEvbWFuYS5oCmluZGV4IDRkMDQxZmI4NDM3ZjUuLjUwYWNiNmJmOGYxMjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L21hbmEvbWFuYS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L21hbmEvbWFuYS5oCkBAIC02Miw5ICYjNDM7NjIsMTIgQEAgZW51bSBUUklfU1RBVEUgewogCiAjZGVmaW5lIE1BWF9QT1JUU19JTl9NQU5BX0RFViAyNTYKIAotLyogTWF4aW11bSBudW1iZXIgb2YgcGFja2V0cyBwZXIgY29hbGVzY2VkIENRRSAqLwomIzQzOy8qIE1heGltdW0gbnVtYmVyIG9mIFBQSXMgcGVyIGNvYWxlc2NlZCBDUUUgKi8KICNkZWZpbmUgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgNAogCiYjNDM7LyogOC1wa3QgbW9kZSBwYWNrcyB1cCB0byAyIHBhY2tldHMgcGVyIFBQSSBlbnRyeSAqLwomIzQzOyNkZWZpbmUgTUFOQV9DUUVfQ09BTF9QS1RTXzggOAomIzQzOwogLyogRGVmYXVsdC9tYXggaW50ZXJydXB0IG1vZGVyYXRpb24gc2V0dGluZ3MgKi8KICNkZWZpbmUgTUFOQV9JTlRSX01PRFJfVVNFQ19ERUYgMAogI2RlZmluZSBNQU5BX0lOVFJfTU9EUl9DT01QX0RFRiAwCkBAIC03OSw3ICYjNDM7ODIsNyBAQCBlbnVtIFRSSV9TVEFURSB7CiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX0NPTVBfTUFTSyAgIEdFTk1BU0soMjMsIDE2KQogCiAvKiBVcGRhdGUgdGhpcyBjb3VudCB3aGVuZXZlciB0aGUgcmVzcGVjdGl2ZSBzdHJ1Y3R1cmVzIGFyZSBjaGFuZ2VkICovCi0jZGVmaW5lIE1BTkFfU1RBVFNfUlhfQ09VTlQgKDYgJiM0MzsgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxKQomIzQzOyNkZWZpbmUgTUFOQV9TVEFUU19SWF9DT1VOVCAoNiAmIzQzOyBNQU5BX0NRRV9DT0FMX1BLVFNfOCAtIDEpCiAjZGVmaW5lIE1BTkFfU1RBVFNfVFhfQ09VTlQgMTEKIAogI2RlZmluZSBNQU5BX1JYX0ZSQUdfQUxJR05NRU5UIDY0CkBAIC05MSw3ICYjNDM7OTQsNyBAQCBzdHJ1Y3QgbWFuYV9zdGF0c19yeCB7CiAJdTY0IHhkcF90eDsKIAl1NjQgeGRwX3JlZGlyZWN0OwogCXU2NCBwa3RfbGVuMF9lcnI7Ci0JdTY0IGNvYWxlc2NlZF9jcWVbTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxXTsKJiM0MzsJdTY0IGNvYWxlc2NlZF9jcWVbTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxXTsKIAlzdHJ1Y3QgdTY0X3N0YXRzX3N5bmMgc3luY3A7CiB9OwogCkBAIC0yMDIsNiAmIzQzOzIwNSw3IEBAIGVudW0gbWFuYV9jcWVfdHlwZSB7CiAJQ1FFX1JYX0NPQUxFU0NFRF80CQk9IDIsCiAJQ1FFX1JYX09CSkVDVF9GRU5DRQkJPSAzLAogCUNRRV9SWF9UUlVOQ0FURUQJCT0gNCwKJiM0MzsJQ1FFX1JYX0NPQUxFU0NFRF84CQk9IDcsCiAKIAlDUUVfVFhfT0tBWQkJCT0gMzIsCiAJQ1FFX1RYX1NBX0RST1AJCQk9IDMzLApAQCAtMjM4LDEyICYjNDM7MjQyLDI2IEBAIHN0cnVjdCBtYW5hX2NxZV9oZWFkZXIgewogI2RlZmluZSBNQU5BX0hBU0hfTDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAJKE5ESVNfSEFTSF9UQ1BfSVBWNCB8IE5ESVNfSEFTSF9VRFBfSVBWNCB8IE5ESVNfSEFTSF9UQ1BfSVBWNiB8ICAgICAgXAogCSBORElTX0hBU0hfVURQX0lQVjYgfCBORElTX0hBU0hfVENQX0lQVjZfRVggfCBORElTX0hBU0hfVURQX0lQVjZfRVgpCiYjNDM7I2RlZmluZSBNQU5BX0hBU0hfRU5BQkxFX1NVUFBPUlRFRCBcCiYjNDM7CShORElTX0hBU0hfSVBWNCB8IE5ESVNfSEFTSF9UQ1BfSVBWNCB8IE5ESVNfSEFTSF9VRFBfSVBWNCB8IFwKJiM0MzsJIE5ESVNfSEFTSF9JUFY2IHwgTkRJU19IQVNIX1RDUF9JUFY2IHwgTkRJU19IQVNIX1VEUF9JUFY2KQomIzQzOwomIzQzOy8qIFJlYWQgUFBJIGluIHR3byBkaWZmZXJlbnQgbGF5b3V0cyBiYXNlZCBvbiBjcWVfdHlwZSAqLwomIzQzO3VuaW9uIG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHsKJiM0MzsJc3RydWN0IHsKJiM0MzsJCXUzMiBwa3RfbGVuIDogMTY7CiYjNDM7CQl1MzIgcmVzZXJ2ZWQxIDogMTY7CiYjNDM7CQl1MzIgcmVzZXJ2ZWQyOwomIzQzOwkJdTMyIHBrdF9oYXNoOwomIzQzOwl9OwogCi1zdHJ1Y3QgbWFuYV9yeGNvbXBfcGVycGt0X2luZm8gewotCXUzMiBwa3RfbGVuCTogMTY7Ci0JdTMyIHJlc2VydmVkMQk6IDE2OwotCXUzMiByZXNlcnZlZDI7Ci0JdTMyIHBrdF9oYXNoOwomIzQzOwkvKiBVcCB0byB0d28gcGt0cyBwZXIgUFBJIGVudHJ5ICovCiYjNDM7CXN0cnVjdCB7CiYjNDM7CQl1MzIgcGt0X2hhc2gwOwomIzQzOwkJdTE2IHBrdF9sZW4wOwomIzQzOwkJdTE2IHBrdF9sZW4xOwomIzQzOwkJdTMyIHBrdF9oYXNoMTsKJiM0MzsJfTsKIH07IC8qIEhXIERBVEEgKi8KIAogLyogUmVjZWl2ZSBjb21wbGV0aW9uIE9PQiAqLwpAQCAtMjY0LDcgJiM0MzsyODIsNyBAQCBzdHJ1Y3QgbWFuYV9yeGNvbXBfb29iIHsKIAl1MzIgcnhfdWRwX2NzdW1fZmFpbAkJOiAxOwogCXUzMiByZXNlcnZlZDIJCQk6IDE7CiAKLQlzdHJ1Y3QgbWFuYV9yeGNvbXBfcGVycGt0X2luZm8gcHBpW01BTkFfUlhDT01QX09PQl9OVU1fUFBJXTsKJiM0MzsJdW5pb24gbWFuYV9yeGNvbXBfcGVycGt0X2luZm8gcHBpW01BTkFfUlhDT01QX09PQl9OVU1fUFBJXTsKIAogCXUzMiByeF93cWVfb2Zmc2V0OwogfTsgLyogSFcgREFUQSAqLwpAQCAtNjA3LDYgJiM0Mzs2MjUsNyBAQCBzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgewogCWJvb2wgcG9ydF9zdF9zYXZlOyAvKiBTYXZlZCBwb3J0IHN0YXRlICovCiAKIAl1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7CiYjNDM7CXU4IGNxZThfY29hbGVzY2luZ19lbmFibGU7CiAJdTMyIGNxZV9jb2FsZXNjaW5nX3RpbWVvdXRfbnM7CiAKIAkvKiBJbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyAqLwpAQCAtNzUxLDYgJiM0Mzs3NzAsOCBAQCBzdHJ1Y3QgbWFuYV9xdWVyeV9kZXZpY2VfY2ZnX3JlcSB7CiAJdTMyIHJlc2VydmVkOwogfTsgLyogSFcgREFUQSAqLwogCiYjNDM7I2RlZmluZSBNQU5BX1BGX0ZMQUdfMV9DUUVfOF9DT0FMRVNDSU5HX1NVUFBPUlRFRCBCSVQoNSkKJiM0MzsKIHN0cnVjdCBtYW5hX3F1ZXJ5X2RldmljZV9jZmdfcmVzcCB7CiAJc3RydWN0IGdkbWFfcmVzcF9oZHIgaGRyOwogCkBAIC05ODYsNyAmIzQzOzEwMDcsMTAgQEAgc3RydWN0IG1hbmFfY2ZnX3J4X3N0ZWVyX3JlcV92MiB7CiAJbWFuYV9oYW5kbGVfdCBkZWZhdWx0X3J4b2JqOwogCXU4IGhhc2hrZXlbTUFOQV9IQVNIX0tFWV9TSVpFXTsKIAl1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7Ci0JdTggcmVzZXJ2ZWQyWzddOwomIzQzOwl1OCByZXNlcnZlZDJbM107CiYjNDM7CXUxNiByc3NfaGFzaF90eXBlczsKJiM0MzsJdTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTsgLyogdjUgbWVzc2FnZSAqLwomIzQzOwl1OCByZXNlcnZlZDM7CiAJbWFuYV9oYW5kbGVfdCBpbmRpcl90YWJbXSBfX2NvdW50ZWRfYnkobnVtX2luZGlyX2VudHJpZXMpOwogfTsgLyogSFcgREFUQSAqLwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzMDMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQU5BIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlci4gSXQmIzM5O3MgYWRkaW5nIHN1cHBvcnQgZm9yIDgtcGFja2V0IGNvYWxlc2NpbmcgaW4gdGhlIENvbXBsZXRpb24gUXVldWUgRW50cnkgKENRRSksIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGUgY2hhbmdlcyBhcmUgc3ByZWFkIGFjcm9zcyBgbWFuYV9lbi5jYCwgYG1hbmFfZXRodG9vbC5jYCwgYGdkbWEuaGAsIGFuZCBgbWFuYS5oYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHZpYWJsZSB0aGlzIGlzIHRvIHRlc3QuCgpGaXJzdCwgdGhlIGRyaXZlciYjMzk7cyBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9gLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIEkgZXZlbiAqcmVhY2gqIHRoaXMgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50PyBNQU5BIGlzIHVzdWFsbHkgYSBTbWFydE5JQywgc3BlY2lmaWMgdG8gTWljcm9zb2Z0IEF6dXJlLCB3aGljaCBzdWdnZXN0cyBpdCBtaWdodCByZWx5IG9uIHBoeXNpY2FsIGhhcmR3YXJlLiBJIGNhbiYjMzk7dCByZWNhbGwgc2VlaW5nIGFueSBlbXVsYXRpb24gZm9yIGl0IGluIHZhbmlsbGEgUUVNVS4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIGZpcnN0IGh1cmRsZS4KCkxldCBtZSBjbGFyaWZ5IOKAkyBpcyB0aGVyZSBhbnkgc29mdHdhcmUgZW11bGF0aW9uIG9mIE1BTkEgYXQgYWxsLCBvciBpcyBpdCBzdHJpY3RseSBhIHBoeXNpY2FsIG9yIEF6dXJlLXNwZWNpZmljIGRldmljZT8gUmlnaHQsIGl04oCZcyB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciwgYSBQQ0kgZGV2aWNlLCBzbyBpZiB0aGVyZSYjMzk7cyBubyBlbXVsYXRpb24sIHRoZSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50IHdvbiYjMzk7dCB3b3JrLiBUaGUgZmFjdCBpdCYjMzk7cyBhIFBDSSBkZXZpY2UgdGhhdCYjMzk7cyBub3QgZW11bGF0ZWQgbWVhbnMgZnV6emluZyBpcyB1bmxpa2VseSB0byB3b3JrIGluIHRoZSBzdGFuZGFyZCBlbnZpcm9ubWVudC4KCkxldCBtZSB2ZXJpZnkgdGhhdCBNQU5BIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgZGV2aWNlLCBub3QgZW11bGF0ZWQgYnkgUUVNVS4gVGhlIGRvY3VtZW50YXRpb24gbWVudGlvbnMgdGhhdCBjb2RlIGluIGRyaXZlcnMgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgYW5kIGBhbWRncHVgIHdoaWNoIHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBpc24mIzM5O3QgZW11bGF0ZWQuIFRoYXQgc2VlbXMgbGlrZSB0aGUgY2FzZSBoZXJlLgoKU28sIGVpdGhlciBJIG5lZWQgdG8gc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSBRRU1VIHNvdXJjZSBjb2RlIHRvIGV4cGxpY2l0bHkgY29uZmlybSBpdCYjMzk7cyBub3QgZW11bGF0ZWQsIG9yIEkmIzM5O20ganVzdCBnb2luZyB0byBoYXZlIHRvIG1ha2UgdGhlIGVkdWNhdGVkIGFzc3VtcHRpb24gdGhhdCBpdCBpc24mIzM5O3QuIFRoZSBkcml2ZXIgaXRzZWxmIGlzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9gIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGEgUENJIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG9uIGBtYW5hX2VuLmNgLiBUaGlzIG1lYW5zIEkgbmVlZCB0byBmaW5kIGEgd29ya2Fyb3VuZCB0byB0ZXN0IHRoZSBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfcmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI1Njk9c3RhdGljIGludCBfX2luaXQgbWFuYV9kcml2ZXJfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1NzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNTc5Olx0ZXJyID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZtYW5hX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTgwLVx0aWYgKGVycikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzAwCgkJCQkJCQlvdXRwdXQ6IDk0CgkJCQkJCQl0aG91Z2h0czogMTQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBc3Nlc3NtZW50OiBNQU5BIERyaXZlcioqCgpPa2F5LCBzbyB0aGlzIGlzIGRlZmluaXRlbHkgYSBQQ0kgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGFzc2VzcyBpdHMgZnV6emFiaWxpdHkuIElzIHRoaXMgc29tZXRoaW5nIHRoYXQmIzM5O3MgZW11bGF0ZWQgd2l0aGluIFFFTVUsIHNpbmNlIHRoYXQmIzM5O3Mgb3VyIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudD8gTm8sIGl0JiMzOTtzIG5vdC4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBTbWFydE5JQyDigJMgc3BlY2lmaWNhbGx5LCB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciwgb3IgTUFOQS4gIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSBjb25jZXJuLiAgV2UgYXJlIGdvaW5nIHRvIG5lZWQgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBvciBBenVyZSBWTXMgdG8gaW50ZXJhY3Qgd2l0aCB0aGlzLCBhbmQgd2UgZG9uJiMzOTt0IHR5cGljYWxseSBydW4gQXp1cmUgVk1zIHdpdGhpbiBzdGFuZGFyZCBRRU1VIGZvciBmdXp6aW5nLgoKR2l2ZW4gdGhhdCByZXN0cmljdGlvbiwgSSBzaG91bGQgcXVpY2tseSBkb3VibGUtY2hlY2sg4oCTIGlzIHRoZXJlIGFueSBvdGhlciBwb3NzaWJsZSBwYXRoIHRvIHRoaXMgdGhhdCBieXBhc3NlcyB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jeT8gTm9wZS4gSXQmIzM5O3MgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIE1BTkEsIGFuZCB0aGF0JiMzOTtzIHRoZSBvbmx5IHdheSB0byBnZXQgYXQgaXQuCgpUaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgY2xlYXI6IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJJiMzOTtsbCByZXR1cm4gdGhhdCB2YWx1ZS4gTXkgcmVhc29uaW5nIGlzIHNvbGlkIOKAkyBpdCYjMzk7cyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgKE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIpIGFuZCBpdCYjMzk7cyBub3QgZW11bGF0ZWQgaW4gdGhlIHN0YW5kYXJkIFFFTVUgc2V0dXAgdGhhdCB3ZSB1c2UgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDY6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyIHRvIGFkZCBzdXBwb3J0IGZvciBDUUUgOC1wYWNrZXQgY29hbGVzY2luZy4gTUFOQSBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIFNtYXJ0TklDIGRldmljZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgc28gdGhpcyBjb2RlIGNhbm5vdCBiZSByZWFjaGVkIG9yIHRlc3RlZCBieSB0aGUgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciB0byBhZGQgc3VwcG9ydCBmb3IgQ1FFIDgtcGFja2V0IGNvYWxlc2NpbmcuIE1BTkEgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBTbWFydE5JQyBkZXZpY2UgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIHNvIHRoaXMgY29kZSBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgYnkgdGhlIGZ1enplci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNjoxOTo0NC41MjU0MjQwODhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMyMjIxNDQ2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciB0byBhZGQgc3VwcG9ydCBmb3IgQ1FFIDgtcGFja2V0IGNvYWxlc2NpbmcuIE1BTkEgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBTbWFydE5JQyBkZXZpY2UgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIHNvIHRoaXMgY29kZSBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgYnkgdGhlIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA2OjE5OjQ0LjUyNTQzMDMyOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzExMzg4MzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDdhNDAxMDBiNzNmN2IwODE5ZWRiZWFlODRlZDhjNTRiN2Y3YjI3ZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAyIDA2OjE5OjQzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uY1xcbmluZGV4IGE4MGNmMGJjNDYyY2YuLmEzYzI5MDc3ZGFmNWYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jXFxuQEAgLTEyNDEsNiArMTI0MSw5IEBAIGludCBtYW5hX2dkX3F1ZXJ5X2RldmljZV9jZmcoc3RydWN0IGdkbWFfY29udGV4dCAqZ2MsIHUzMiBwcm90b19tYWpvcl92ZXIsXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcdH1cXG4gXFxuK1xcdGdjLVxcdTAwM2VjcWU4X2NvYWxlc2Npbmdfc3VwID0gISEocmVzcC5wZl9jYXBfZmxhZ3MxIFxcdTAwMjZcXG4rXFx0XFx0XFx0XFx0ICAgICBNQU5BX1BGX0ZMQUdfMV9DUUVfOF9DT0FMRVNDSU5HX1NVUFBPUlRFRCk7XFxuK1xcbiBcXHQqbWF4X251bV92cG9ydHMgPSByZXNwLm1heF9udW1fdnBvcnRzO1xcbiBcXG4gXFx0aWYgKHJlc3AuaGRyLnJlc3BvbnNlLm1zZ192ZXJzaW9uIFxcdTAwM2U9IEdETUFfTUVTU0FHRV9WMikge1xcbkBAIC0xNDI2LDcgKzE0MjksMTEgQEAgc3RhdGljIGludCBtYW5hX2NmZ192cG9ydF9zdGVlcmluZyhzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYyxcXG4gXFx0bWFuYV9nZF9pbml0X3JlcV9oZHIoXFx1MDAyNnJlcS1cXHUwMDNlaGRyLCBNQU5BX0NPTkZJR19WUE9SVF9SWCwgcmVxX2J1Zl9zaXplLFxcbiBcXHRcXHRcXHQgICAgIHNpemVvZihyZXNwKSk7XFxuIFxcbi1cXHRyZXEtXFx1MDAzZWhkci5yZXEubXNnX3ZlcnNpb24gPSBHRE1BX01FU1NBR0VfVjI7XFxuK1xcdC8qIFJlcXVlc3QgXFx1MDAyNiByZXNwb25zZSB2ZXJzaW9ucyBjYW4gYmUgZGlmZmVyZW50LlxcbitcXHQgKiBIVyBjYW4gaGFuZGxlIG5ld2VyIG1zZyB2ZXJzaW9ucywgYnkgc2tpcHBpbmdcXG4rXFx0ICogbmV3IGZpZWxkcy5cXG4rXFx0ICovXFxuK1xcdHJlcS1cXHUwMDNlaGRyLnJlcS5tc2dfdmVyc2lvbiA9IEdETUFfTUVTU0FHRV9WNTtcXG4gXFx0cmVxLVxcdTAwM2VoZHIucmVzcC5tc2dfdmVyc2lvbiA9IEdETUFfTUVTU0FHRV9WMjtcXG4gXFxuIFxcdHJlcS1cXHUwMDNldnBvcnQgPSBhcGMtXFx1MDAzZXBvcnRfaGFuZGxlO1xcbkBAIC0xNDQwLDggKzE0NDcsMTMgQEAgc3RhdGljIGludCBtYW5hX2NmZ192cG9ydF9zdGVlcmluZyhzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYyxcXG4gXFx0cmVxLVxcdTAwM2V1cGRhdGVfaW5kaXJfdGFiID0gdXBkYXRlX3RhYjtcXG4gXFx0cmVxLVxcdTAwM2VkZWZhdWx0X3J4b2JqID0gYXBjLVxcdTAwM2VkZWZhdWx0X3J4b2JqO1xcbiBcXG4tXFx0aWYgKHJ4ICE9IFRSSV9TVEFURV9GQUxTRSlcXG4rXFx0LyogUmVxdWVzdC1tc2cgdjUgcmVxdWlyZXMgdGhpcyBmaWVsZCAqL1xcbitcXHRyZXEtXFx1MDAzZXJzc19oYXNoX3R5cGVzID0gTUFOQV9IQVNIX0VOQUJMRV9TVVBQT1JURUQ7XFxuK1xcbitcXHRpZiAocnggIT0gVFJJX1NUQVRFX0ZBTFNFKSB7XFxuIFxcdFxcdHJlcS1cXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLVxcdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGU7XFxuK1xcdFxcdHJlcS1cXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9IGFwYy1cXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcXG4rXFx0fVxcbiBcXG4gXFx0aWYgKHVwZGF0ZV9rZXkpXFxuIFxcdFxcdG1lbWNweShcXHUwMDI2cmVxLVxcdTAwM2VoYXNoa2V5LCBhcGMtXFx1MDAzZWhhc2hrZXksIE1BTkFfSEFTSF9LRVlfU0laRSk7XFxuQEAgLTIwNDYsMTYgKzIwNTgsMTQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICptYW5hX2J1aWxkX3NrYihzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgdm9pZCAqYnVmX3ZhLFxcbiBcXG4gc3RhdGljIHZvaWQgbWFuYV9yeF9za2Iodm9pZCAqYnVmX3ZhLCBib29sIGZyb21fcG9vbCxcXG4gXFx0XFx0XFx0c3RydWN0IG1hbmFfcnhjb21wX29vYiAqY3FlLCBzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSxcXG4tXFx0XFx0XFx0aW50IGkpXFxuK1xcdFxcdFxcdHUzMiBwa3RfbGVuLCB1MzIgcGt0X2hhc2gpXFxuIHtcXG4gXFx0c3RydWN0IG1hbmFfc3RhdHNfcnggKnJ4X3N0YXRzID0gXFx1MDAyNnJ4cS1cXHUwMDNlc3RhdHM7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcnhxLVxcdTAwM2VuZGV2O1xcbi1cXHR1aW50IHBrdF9sZW4gPSBjcWUtXFx1MDAzZXBwaVtpXS5wa3RfbGVuO1xcbiBcXHR1MTYgcnhxX2lkeCA9IHJ4cS1cXHUwMDNlcnhxX2lkeDtcXG4gXFx0c3RydWN0IG5hcGlfc3RydWN0ICpuYXBpO1xcbiBcXHRzdHJ1Y3QgeGRwX2J1ZmYgeGRwID0ge307XFxuIFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLVxcdHUzMiBoYXNoX3ZhbHVlO1xcbiBcXHR1MzIgYWN0O1xcbiBcXG4gXFx0cnhxLVxcdTAwM2VyeF9jcS53b3JrX2RvbmUrKztcXG5AQCAtMjA5NCwxMiArMjEwNCwxMCBAQCBzdGF0aWMgdm9pZCBtYW5hX3J4X3NrYih2b2lkICpidWZfdmEsIGJvb2wgZnJvbV9wb29sLFxcbiBcXHR9XFxuIFxcbiBcXHRpZiAoY3FlLVxcdTAwM2VyeF9oYXNodHlwZSAhPSAwIFxcdTAwMjZcXHUwMDI2IChuZGV2LVxcdTAwM2VmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfUlhIQVNIKSkge1xcbi1cXHRcXHRoYXNoX3ZhbHVlID0gY3FlLVxcdTAwM2VwcGlbaV0ucGt0X2hhc2g7XFxuLVxcbiBcXHRcXHRpZiAoY3FlLVxcdTAwM2VyeF9oYXNodHlwZSBcXHUwMDI2IE1BTkFfSEFTSF9MNClcXG4tXFx0XFx0XFx0c2tiX3NldF9oYXNoKHNrYiwgaGFzaF92YWx1ZSwgUEtUX0hBU0hfVFlQRV9MNCk7XFxuK1xcdFxcdFxcdHNrYl9zZXRfaGFzaChza2IsIHBrdF9oYXNoLCBQS1RfSEFTSF9UWVBFX0w0KTtcXG4gXFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRza2Jfc2V0X2hhc2goc2tiLCBoYXNoX3ZhbHVlLCBQS1RfSEFTSF9UWVBFX0wzKTtcXG4rXFx0XFx0XFx0c2tiX3NldF9oYXNoKHNrYiwgcGt0X2hhc2gsIFBLVF9IQVNIX1RZUEVfTDMpO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoY3FlLVxcdTAwM2VyeF92bGFudGFnX3ByZXNlbnQpIHtcXG5AQCAtMjI0MCw2ICsyMjQ4LDQzIEBAIHN0YXRpYyB2b2lkIG1hbmFfcmVmaWxsX3J4X29vYihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtYW5hX3J4cSAqcnhxLFxcbiBcXHRyeG9vYi1cXHUwMDNlZG1hX3N5bmNfb2Zmc2V0ID0gZG1hX3N5bmNfb2Zmc2V0O1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtYW5hX3J4cSAqcnhxLFxcbitcXHRcXHRcXHRcXHQgICAgc3RydWN0IG1hbmFfcnhjb21wX29vYiAqb29iLFxcbitcXHRcXHRcXHRcXHQgICAgdTMyIHBrdGxlbiwgdTMyIHBrdF9oYXNoKVxcbit7XFxuK1xcdHN0cnVjdCBtYW5hX3JlY3ZfYnVmX29vYiAqcnhidWZfb29iO1xcbitcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHJ4cS1cXHUwMDNlbmRldjtcXG4rXFx0dm9pZCAqb2xkX2J1ZiA9IE5VTEw7XFxuK1xcdGJvb2wgb2xkX2ZwO1xcbitcXG4rXFx0cnhidWZfb29iID0gXFx1MDAyNnJ4cS1cXHUwMDNlcnhfb29ic1tyeHEtXFx1MDAzZWJ1Zl9pbmRleF07XFxuK1xcdFdBUk5fT05fT05DRShyeGJ1Zl9vb2ItXFx1MDAzZXdxZV9pbmYud3FlX3NpemVfaW5fYnUgIT0gMSk7XFxuK1xcbitcXHRpZiAodW5saWtlbHkocGt0bGVuIFxcdTAwM2UgcnhxLVxcdTAwM2VkYXRhc2l6ZSkpIHtcXG4rXFx0XFx0LyogSW5jcmVhc2UgaXQgZXZlbiBpZiBtYW5hX3J4X3NrYigpIGlzbid0IGNhbGxlZC4gKi9cXG4rXFx0XFx0cnhxLVxcdTAwM2VyeF9jcS53b3JrX2RvbmUrKztcXG4rXFxuK1xcdFxcdCsrbmRldi1cXHUwMDNlc3RhdHMucnhfZHJvcHBlZDtcXG4rXFx0XFx0bmV0ZGV2X3dhcm5fb25jZShuZGV2LFxcbitcXHRcXHRcXHRcXHQgXFxcIkRyb3BwZWQgb3ZlcnNpemVkIFJYIHBhY2tldDogbGVuPSV1LCBkYXRhc2l6ZT0ldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0IHBrdGxlbiwgcnhxLVxcdTAwM2VkYXRhc2l6ZSk7XFxuK1xcbitcXHRcXHQvKiBSZXVzZSB0aGUgUlggYnVmZmVyIHNpbmNlIHJ4YnVmX29vYiBpcyB1bmNoYW5nZWQuICovXFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdG1hbmFfcmVmaWxsX3J4X29vYihkZXYsIHJ4cSwgcnhidWZfb29iLCBwa3RsZW4sXFxuK1xcdFxcdFxcdFxcdCAgIFxcdTAwMjZvbGRfYnVmLCBcXHUwMDI2b2xkX2ZwKTtcXG4rXFxuK1xcdFxcdC8qIFVuc3VjY2Vzc2Z1bCByZWZpbGwgd2lsbCBoYXZlIG9sZF9idWYgPT0gTlVMTC5cXG4rXFx0XFx0ICogSW4gdGhpcyBjYXNlLCBtYW5hX3J4X3NrYigpIHdpbGwgZHJvcCB0aGUgcGFja2V0LlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0bWFuYV9yeF9za2Iob2xkX2J1Ziwgb2xkX2ZwLCBvb2IsIHJ4cSwgcGt0bGVuLCBwa3RfaGFzaCk7XFxuK1xcdH1cXG4rXFxuK1xcdG1hbmFfbW92ZV93cV90YWlsKHJ4cS1cXHUwMDNlZ2RtYV9ycSwgcnhidWZfb29iLVxcdTAwM2V3cWVfaW5mLndxZV9zaXplX2luX2J1KTtcXG4rXFxuK1xcdG1hbmFfcG9zdF9wa3RfcnhxKHJ4cSk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSxcXG4gXFx0XFx0XFx0XFx0c3RydWN0IGdkbWFfY29tcCAqY3FlKVxcbiB7XFxuQEAgLTIyNDksMTAgKzIyOTQsMTAgQEAgc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLFxcbiBcXHRzdHJ1Y3QgbWFuYV9yZWN2X2J1Zl9vb2IgKnJ4YnVmX29vYjtcXG4gXFx0c3RydWN0IG1hbmFfcG9ydF9jb250ZXh0ICphcGM7XFxuIFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGdjLVxcdTAwM2VkZXY7XFxuK1xcdGJvb2wgY29hbGVzY2VkXzggPSBmYWxzZTtcXG4gXFx0Ym9vbCBjb2FsZXNjZWQgPSBmYWxzZTtcXG4tXFx0dm9pZCAqb2xkX2J1ZiA9IE5VTEw7XFxuLVxcdHUzMiBjdXJyLCBwa3RsZW47XFxuLVxcdGJvb2wgb2xkX2ZwO1xcbitcXHR1MzIgcGt0bGVuO1xcbitcXHRpbnQgcGt0X2k7XFxuIFxcdGludCBpO1xcbiBcXG4gXFx0YXBjID0gbmV0ZGV2X3ByaXYobmRldik7XFxuQEAgLTIyNzUsNiArMjMyMCwxMSBAQCBzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3NfcnhfY3FlKHN0cnVjdCBtYW5hX3J4cSAqcnhxLCBzdHJ1Y3QgbWFuYV9jcSAqY3EsXFxuIFxcdFxcdGNvYWxlc2NlZCA9IHRydWU7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXG4rXFx0Y2FzZSBDUUVfUlhfQ09BTEVTQ0VEXzg6XFxuK1xcdFxcdGNvYWxlc2NlZCA9IHRydWU7XFxuK1xcdFxcdGNvYWxlc2NlZF84ID0gdHJ1ZTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcbiBcXHRjYXNlIENRRV9SWF9PQkpFQ1RfRkVOQ0U6XFxuIFxcdFxcdGNvbXBsZXRlKFxcdTAwMjZyeHEtXFx1MDAzZWZlbmNlX2V2ZW50KTtcXG4gXFx0XFx0cmV0dXJuO1xcbkBAIC0yMjg2LDU0ICsyMzM2LDQ4IEBAIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSxcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuIFxcbitcXHRwa3RfaSA9IDA7XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSTsgaSsrKSB7XFxuLVxcdFxcdG9sZF9idWYgPSBOVUxMO1xcbi1cXHRcXHRwa3RsZW4gPSBvb2ItXFx1MDAzZXBwaVtpXS5wa3RfbGVuO1xcbi1cXHRcXHRpZiAocGt0bGVuID09IDApXFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXG4tXFx0XFx0Y3VyciA9IHJ4cS1cXHUwMDNlYnVmX2luZGV4O1xcbi1cXHRcXHRyeGJ1Zl9vb2IgPSBcXHUwMDI2cnhxLVxcdTAwM2VyeF9vb2JzW2N1cnJdO1xcbi1cXHRcXHRXQVJOX09OX09OQ0UocnhidWZfb29iLVxcdTAwM2V3cWVfaW5mLndxZV9zaXplX2luX2J1ICE9IDEpO1xcbi1cXG4tXFx0XFx0aWYgKHVubGlrZWx5KHBrdGxlbiBcXHUwMDNlIHJ4cS1cXHUwMDNlZGF0YXNpemUpKSB7XFxuLVxcdFxcdFxcdC8qIEluY3JlYXNlIGl0IGV2ZW4gaWYgbWFuYV9yeF9za2IoKSBpc24ndCBjYWxsZWQuICovXFxuLVxcdFxcdFxcdHJ4cS1cXHUwMDNlcnhfY3Eud29ya19kb25lKys7XFxuK1xcdFxcdHUzMiBwa3RfaGFzaDtcXG4gXFxuLVxcdFxcdFxcdCsrbmRldi1cXHUwMDNlc3RhdHMucnhfZHJvcHBlZDtcXG4tXFx0XFx0XFx0bmV0ZGV2X3dhcm5fb25jZShuZGV2LFxcbi1cXHRcXHRcXHRcXHRcXFwiRHJvcHBlZCBvdmVyc2l6ZWQgUlggcGFja2V0OiBsZW49JXUsIGRhdGFzaXplPSV1XFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRwa3RsZW4sIHJ4cS1cXHUwMDNlZGF0YXNpemUpO1xcbi1cXG4tXFx0XFx0XFx0LyogUmV1c2UgdGhlIFJYIGJ1ZmZlciBzaW5jZSByeGJ1Zl9vb2IgaXMgdW5jaGFuZ2VkLiAqL1xcbitcXHRcXHRpZiAoY29hbGVzY2VkXzgpIHtcXG4rXFx0XFx0XFx0LyogOC1wa3QgbW9kZTogMiBwYWNrZXRzIHBlciBQUEkgZW50cnkgKi9cXG4rXFx0XFx0XFx0cGt0bGVuID0gb29iLVxcdTAwM2VwcGlbaV0ucGt0X2xlbjA7XFxuK1xcdFxcdFxcdHBrdF9oYXNoID0gb29iLVxcdTAwM2VwcGlbaV0ucGt0X2hhc2gwO1xcbiBcXHRcXHR9IGVsc2Uge1xcbi1cXG4tXFx0XFx0XFx0bWFuYV9yZWZpbGxfcnhfb29iKGRldiwgcnhxLCByeGJ1Zl9vb2IsIHBrdGxlbixcXG4tXFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNm9sZF9idWYsIFxcdTAwMjZvbGRfZnApO1xcbi1cXG4tXFx0XFx0XFx0LyogVW5zdWNjZXNzZnVsIHJlZmlsbCB3aWxsIGhhdmUgb2xkX2J1ZiA9PSBOVUxMLlxcbi1cXHRcXHRcXHQgKiBJbiB0aGlzIGNhc2UsIG1hbmFfcnhfc2tiKCkgd2lsbCBkcm9wIHRoZSBwYWNrZXQuXFxuLVxcdFxcdFxcdCAqL1xcbi1cXHRcXHRcXHRtYW5hX3J4X3NrYihvbGRfYnVmLCBvbGRfZnAsIG9vYiwgcnhxLCBpKTtcXG4rXFx0XFx0XFx0cGt0bGVuID0gb29iLVxcdTAwM2VwcGlbaV0ucGt0X2xlbjtcXG4rXFx0XFx0XFx0cGt0X2hhc2ggPSBvb2ItXFx1MDAzZXBwaVtpXS5wa3RfaGFzaDtcXG4gXFx0XFx0fVxcbitcXHRcXHRpZiAocGt0bGVuID09IDApXFxuK1xcdFxcdFxcdGJyZWFrO1xcbiBcXG4tXFx0XFx0bWFuYV9tb3ZlX3dxX3RhaWwocnhxLVxcdTAwM2VnZG1hX3JxLFxcbi1cXHRcXHRcXHRcXHQgIHJ4YnVmX29vYi1cXHUwMDNld3FlX2luZi53cWVfc2l6ZV9pbl9idSk7XFxuLVxcbi1cXHRcXHRtYW5hX3Bvc3RfcGt0X3J4cShyeHEpO1xcbitcXHRcXHRtYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChkZXYsIHJ4cSwgb29iLCBwa3RsZW4sIHBrdF9oYXNoKTtcXG4rXFx0XFx0cGt0X2krKztcXG4gXFxuIFxcdFxcdGlmICghY29hbGVzY2VkKVxcbiBcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdC8qIFByb2Nlc3MgMm5kIHBhY2tldCBmcm9tIHRoZSBzYW1lIFBQSSBpbiA4LXBrdCBtb2RlICovXFxuK1xcdFxcdGlmIChjb2FsZXNjZWRfOCkge1xcbitcXHRcXHRcXHRwa3RsZW4gPSBvb2ItXFx1MDAzZXBwaVtpXS5wa3RfbGVuMTtcXG4rXFx0XFx0XFx0cGt0X2hhc2ggPSBvb2ItXFx1MDAzZXBwaVtpXS5wa3RfaGFzaDE7XFxuK1xcdFxcdFxcdGlmIChwa3RsZW4gPT0gMClcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcbitcXHRcXHRcXHRtYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChkZXYsIHJ4cSwgb29iLCBwa3RsZW4sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHBrdF9oYXNoKTtcXG4rXFx0XFx0XFx0cGt0X2krKztcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHQvKiBDb2xsZWN0IGNvYWxlc2NlZCBDUUUgY291bnQgYmFzZWQgb24gcGFja2V0cyBwcm9jZXNzZWQuXFxuLVxcdCAqIENvYWxlc2NlZCBDUUVzIGhhdmUgYXQgbGVhc3QgMiBwYWNrZXRzLCBzbyBpbmRleCBpcyBpIC0gMi5cXG4rXFx0ICogQ29hbGVzY2VkIENRRXMgaGF2ZSBhdCBsZWFzdCAyIHBhY2tldHMsIHNvIGluZGV4IGlzIHBrdF9pIC0gMi5cXG4gXFx0ICovXFxuLVxcdGlmIChpIFxcdTAwM2UgMSkge1xcbitcXHRpZiAocGt0X2kgXFx1MDAzZSAxKSB7XFxuIFxcdFxcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXFx1MDAyNnJ4cS1cXHUwMDNlc3RhdHMuc3luY3ApO1xcbi1cXHRcXHRyeHEtXFx1MDAzZXN0YXRzLmNvYWxlc2NlZF9jcWVbaSAtIDJdKys7XFxuK1xcdFxcdHJ4cS1cXHUwMDNlc3RhdHMuY29hbGVzY2VkX2NxZVtwa3RfaSAtIDJdKys7XFxuIFxcdFxcdHU2NF9zdGF0c191cGRhdGVfZW5kKFxcdTAwMjZyeHEtXFx1MDAzZXN0YXRzLnN5bmNwKTtcXG4tXFx0fSBlbHNlIGlmICghaSBcXHUwMDI2XFx1MDAyNiAhcGt0bGVuKSB7XFxuK1xcdH0gZWxzZSBpZiAoIXBrdF9pIFxcdTAwMjZcXHUwMDI2ICFwa3RsZW4pIHtcXG4gXFx0XFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcXHUwMDI2cnhxLVxcdTAwM2VzdGF0cy5zeW5jcCk7XFxuIFxcdFxcdHJ4cS1cXHUwMDNlc3RhdHMucGt0X2xlbjBfZXJyKys7XFxuIFxcdFxcdHU2NF9zdGF0c191cGRhdGVfZW5kKFxcdTAwMjZyeHEtXFx1MDAzZXN0YXRzLnN5bmNwKTtcXG5AQCAtMzc2Myw2ICszODA3LDcgQEAgc3RhdGljIGludCBtYW5hX3Byb2JlX3BvcnQoc3RydWN0IG1hbmFfY29udGV4dCAqYWMsIGludCBwb3J0X2lkeCxcXG4gXFx0YXBjLVxcdTAwM2Vwb3J0X2lkeCA9IHBvcnRfaWR4O1xcbiBcXHRhcGMtXFx1MDAzZWxpbmtfY2ZnX2Vycm9yID0gMTtcXG4gXFx0YXBjLVxcdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPSAwO1xcbitcXHRhcGMtXFx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPSAwO1xcbiBcXG4gXFx0LyogSW5pdGlhbGl6ZSBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyBpZiBzdXBwb3J0ZWQgYnkgSFcgKi9cXG4gXFx0aWYgKGdjLVxcdTAwM2VwZl9jYXBfZmxhZ3MxIFxcdTAwMjYgR0RNQV9QRl9DQVBfRkxBR18xX0RZTl9JTlRFUlJVUFRfTU9ERVJBVElPTikge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jXFxuaW5kZXggOWUzMWUyNTk1YWUzMi4uMDRmODc3NzA3Y2M2YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jXFxuQEAgLTE2OSw3ICsxNjksNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9zdHJpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgc3RyaW5nc2V0LCB1OCAqZGF0YSlcXG4gXFx0XFx0ZXRodG9vbF9zcHJpbnRmKFxcdTAwMjZkYXRhLCBcXFwicnhfJWRfeGRwX3R4XFxcIiwgaSk7XFxuIFxcdFxcdGV0aHRvb2xfc3ByaW50ZihcXHUwMDI2ZGF0YSwgXFxcInJ4XyVkX3hkcF9yZWRpcmVjdFxcXCIsIGkpO1xcbiBcXHRcXHRldGh0b29sX3NwcmludGYoXFx1MDAyNmRhdGEsIFxcXCJyeF8lZF9wa3RfbGVuMF9lcnJcXFwiLCBpKTtcXG4tXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaisrKVxcbitcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqKyspXFxuIFxcdFxcdFxcdGV0aHRvb2xfc3ByaW50ZihcXHUwMDI2ZGF0YSwgXFxcInJ4XyVkX2NvYWxlc2NlZF9jcWVfJWRcXFwiLCBpLCBqICsgMik7XFxuIFxcdH1cXG4gXFxuQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHR1NjQgeGRwX2Ryb3A7XFxuIFxcdHU2NCB4ZHBfdHg7XFxuIFxcdHU2NCBwa3RfbGVuMF9lcnI7XFxuLVxcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMV07XFxuK1xcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfQ1FFX0NPQUxfUEtUU184IC0gMV07XFxuIFxcdHU2NCB0c29fcGFja2V0cztcXG4gXFx0dTY0IHRzb19ieXRlcztcXG4gXFx0dTY0IHRzb19pbm5lcl9wYWNrZXRzO1xcbkBAIC0yNDUsNyArMjQ1LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0XFx0eGRwX3R4ID0gcnhfc3RhdHMtXFx1MDAzZXhkcF90eDtcXG4gXFx0XFx0XFx0eGRwX3JlZGlyZWN0ID0gcnhfc3RhdHMtXFx1MDAzZXhkcF9yZWRpcmVjdDtcXG4gXFx0XFx0XFx0cGt0X2xlbjBfZXJyID0gcnhfc3RhdHMtXFx1MDAzZXBrdF9sZW4wX2VycjtcXG4tXFx0XFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaisrKVxcbitcXHRcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqKyspXFxuIFxcdFxcdFxcdFxcdGNvYWxlc2NlZF9jcWVbal0gPSByeF9zdGF0cy1cXHUwMDNlY29hbGVzY2VkX2NxZVtqXTtcXG4gXFx0XFx0fSB3aGlsZSAodTY0X3N0YXRzX2ZldGNoX3JldHJ5KFxcdTAwMjZyeF9zdGF0cy1cXHUwMDNlc3luY3AsIHN0YXJ0KSk7XFxuIFxcbkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0ZGF0YVtpKytdID0geGRwX3R4O1xcbiBcXHRcXHRkYXRhW2krK10gPSB4ZHBfcmVkaXJlY3Q7XFxuIFxcdFxcdGRhdGFbaSsrXSA9IHBrdF9sZW4wX2VycjtcXG4tXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaisrKVxcbitcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqKyspXFxuIFxcdFxcdFxcdGRhdGFbaSsrXSA9IGNvYWxlc2NlZF9jcWVbal07XFxuIFxcdH1cXG4gXFxuQEAgLTQwOCw2ICs0MDgsNyBAQCBzdGF0aWMgaW50IG1hbmFfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHRzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYyA9IG5ldGRldl9wcml2KG5kZXYpO1xcbiBcXG4gXFx0a2VybmVsX2NvYWwtXFx1MDAzZXJ4X2NxZV9mcmFtZXMgPVxcbitcXHRcXHRhcGMtXFx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPyBNQU5BX0NRRV9DT0FMX1BLVFNfOCA6XFxuIFxcdFxcdGFwYy1cXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlID8gTUFOQV9SWENPTVBfT09CX05VTV9QUEkgOiAxO1xcbiBcXG4gXFx0a2VybmVsX2NvYWwtXFx1MDAzZXJ4X2NxZV9uc2VjcyA9IGFwYy1cXHUwMDNlY3FlX2NvYWxlc2NpbmdfdGltZW91dF9ucztcXG5AQCAtNDQzLDE1ICs0NDQsMTkgQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0dTE2IGludHJfbW9kcl90eF91c2VjO1xcbiBcXHRcXHR1MTYgaW50cl9tb2RyX3R4X2NvbXA7XFxuIFxcdFxcdHU4IGNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcXG4rXFx0XFx0dTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcXG4gXFx0XFx0Ym9vbCByeF9kaW1fZW5hYmxlZDtcXG4gXFx0XFx0Ym9vbCB0eF9kaW1fZW5hYmxlZDtcXG4gXFx0fSBzYXZlZDtcXG4gXFx0Ym9vbCBtb2RyX2NoYW5nZWQgPSBmYWxzZTtcXG4gXFx0Ym9vbCBkaW1fY2hhbmdlZCA9IGZhbHNlO1xcbiBcXHRzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYztcXG4rXFx0dTMyIG1heF9jcWVfZnJhbWVzO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4gXFx0Z2MgPSBhcGMtXFx1MDAzZWFjLVxcdTAwM2VnZG1hX2Rldi1cXHUwMDNlZ2RtYV9jb250ZXh0O1xcbitcXHRtYXhfY3FlX2ZyYW1lcyA9IGdjLVxcdTAwM2VjcWU4X2NvYWxlc2Npbmdfc3VwID8gTUFOQV9DUUVfQ09BTF9QS1RTXzggOlxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSTtcXG4gXFxuIFxcdC8qIEJvdGggc3RhdGljIGFuZCBkeW5hbWljIGludGVycnVwdCBtb2RlcmF0aW9uIChESU0pIHJlbHkgb24gdGhlXFxuIFxcdCAqIHNhbWUgSFcgY2FwYWJpbGl0eSBhZHZlcnRpc2VkIGJ5IHRoZSBQRi5cXG5AQCAtNDY2LDEwICs0NzEsMTIgQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGtlcm5lbF9jb2FsLVxcdTAwM2VyeF9jcWVfZnJhbWVzICE9IDEgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgIGtlcm5lbF9jb2FsLVxcdTAwM2VyeF9jcWVfZnJhbWVzICE9IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJKSB7XFxuK1xcdCAgICBrZXJuZWxfY29hbC1cXHUwMDNlcnhfY3FlX2ZyYW1lcyAhPSBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAga2VybmVsX2NvYWwtXFx1MDAzZXJ4X2NxZV9mcmFtZXMgIT0gbWF4X2NxZV9mcmFtZXMpIHtcXG4gXFx0XFx0TkxfU0VUX0VSUl9NU0dfRk1UKGV4dGFjayxcXG4tXFx0XFx0XFx0XFx0ICAgXFxcInJ4LWZyYW1lcyBtdXN0IGJlIDEgb3IgJXUsIGdvdCAldVxcXCIsXFxuK1xcdFxcdFxcdFxcdCAgIFxcXCJyeC1mcmFtZXMgbXVzdCBiZSAxIG9yICV1JXMsIGdvdCAldVxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJLFxcbitcXHRcXHRcXHRcXHQgICBnYy1cXHUwMDNlY3FlOF9jb2FsZXNjaW5nX3N1cCA/IFxcXCIgb3IgOFxcXCIgOiBcXFwiXFxcIixcXG4gXFx0XFx0XFx0XFx0ICAga2VybmVsX2NvYWwtXFx1MDAzZXJ4X2NxZV9mcmFtZXMpO1xcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbkBAIC01MTQsOCArNTIxLDExIEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuIFxcdHNhdmVkLnR4X2RpbV9lbmFibGVkID0gYXBjLVxcdTAwM2V0eF9kaW1fZW5hYmxlZDtcXG4gXFxuIFxcdHNhdmVkLmNxZV9jb2FsZXNjaW5nX2VuYWJsZSA9IGFwYy1cXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlO1xcbitcXHRzYXZlZC5jcWU4X2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLVxcdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlO1xcbiBcXHRhcGMtXFx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZSA9XFxuLVxcdFxcdGtlcm5lbF9jb2FsLVxcdTAwM2VyeF9jcWVfZnJhbWVzID09IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJO1xcbitcXHRcXHRrZXJuZWxfY29hbC1cXHUwMDNlcnhfY3FlX2ZyYW1lcyBcXHUwMDNlPSBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSTtcXG4rXFx0YXBjLVxcdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlID1cXG4rXFx0XFx0a2VybmVsX2NvYWwtXFx1MDAzZXJ4X2NxZV9mcmFtZXMgPT0gTUFOQV9DUUVfQ09BTF9QS1RTXzg7XFxuIFxcbiBcXHRpZiAoIWFwYy1cXHUwMDNlcG9ydF9pc191cCkge1xcbiBcXHRcXHRXUklURV9PTkNFKGFwYy1cXHUwMDNlcnhfZGltX2VuYWJsZWQsICEhZWMtXFx1MDAzZXVzZV9hZGFwdGl2ZV9yeF9jb2FsZXNjZSk7XFxuQEAgLTUyMyw3ICs1MzMsOCBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGFwYy1cXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlICE9IHNhdmVkLmNxZV9jb2FsZXNjaW5nX2VuYWJsZSkge1xcbitcXHRpZiAoYXBjLVxcdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgIT0gc2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlIHx8XFxuK1xcdCAgICBhcGMtXFx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgIT0gc2F2ZWQuY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSkge1xcbiBcXHRcXHQvKiBDUUUgY29hbGVzY2luZyBzZXR0aW5nIGlzIGFwcGxpZWQgdmlhIFJTUyBjb25maWd1cmF0aW9uLiAqL1xcbiBcXHRcXHRlcnIgPSBtYW5hX2NvbmZpZ19yc3MoYXBjLCBUUklfU1RBVEVfVFJVRSwgZmFsc2UsIGZhbHNlKTtcXG4gXFx0XFx0aWYgKGVycikge1xcbkBAIC01MzEsNiArNTQyLDggQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0XFx0XFx0ICAgZXJyKTtcXG4gXFx0XFx0XFx0YXBjLVxcdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPVxcbiBcXHRcXHRcXHRcXHRzYXZlZC5jcWVfY29hbGVzY2luZ19lbmFibGU7XFxuK1xcdFxcdFxcdGFwYy1cXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9XFxuK1xcdFxcdFxcdFxcdHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGU7XFxuIFxcdFxcdFxcdGFwYy1cXHUwMDNlaW50cl9tb2RyX3J4X3VzZWMgPSBzYXZlZC5pbnRyX21vZHJfcnhfdXNlYztcXG4gXFx0XFx0XFx0YXBjLVxcdTAwM2VpbnRyX21vZHJfcnhfY29tcCA9IHNhdmVkLmludHJfbW9kcl9yeF9jb21wO1xcbiBcXHRcXHRcXHRhcGMtXFx1MDAzZWludHJfbW9kcl90eF91c2VjID0gc2F2ZWQuaW50cl9tb2RyX3R4X3VzZWM7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oIGIvaW5jbHVkZS9uZXQvbWFuYS9nZG1hLmhcXG5pbmRleCA4NTI5Y2VmMGQ3YzQ1Li43MGE3ZjFmZWU1ZDNiIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oXFxuKysrIGIvaW5jbHVkZS9uZXQvbWFuYS9nZG1hLmhcXG5AQCAtMTgyLDYgKzE4Miw3IEBAIHN0cnVjdCBnZG1hX2dlbmVyYWxfcmVxIHtcXG4gI2RlZmluZSBHRE1BX01FU1NBR0VfVjIgMlxcbiAjZGVmaW5lIEdETUFfTUVTU0FHRV9WMyAzXFxuICNkZWZpbmUgR0RNQV9NRVNTQUdFX1Y0IDRcXG4rI2RlZmluZSBHRE1BX01FU1NBR0VfVjUgNVxcbiBcXG4gc3RydWN0IGdkbWFfZ2VuZXJhbF9yZXNwIHtcXG4gXFx0c3RydWN0IGdkbWFfcmVzcF9oZHIgaGRyO1xcbkBAIC00MjgsNiArNDI5LDkgQEAgc3RydWN0IGdkbWFfY29udGV4dCB7XFxuIFxcdC8qIEwyIE1UVSAqL1xcbiBcXHR1MTYgYWRhcHRlcl9tdHU7XFxuIFxcbitcXHQvKiBOSUMgc3VwcG9ydHMgQ1FFIHg4IGNvYWxlc2NpbmcgKi9cXG4rXFx0Ym9vbCBjcWU4X2NvYWxlc2Npbmdfc3VwO1xcbitcXG4gXFx0LyogVGhpcyBtYXBzIGEgQ1EgaW5kZXggdG8gdGhlIHF1ZXVlIHN0cnVjdHVyZS4gKi9cXG4gXFx0dW5zaWduZWQgaW50XFx0XFx0bWF4X251bV9jcXM7XFxuIFxcdHN0cnVjdCBnZG1hX3F1ZXVlXFx0KipjcV90YWJsZTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmggYi9pbmNsdWRlL25ldC9tYW5hL21hbmEuaFxcbmluZGV4IDRkMDQxZmI4NDM3ZjUuLjUwYWNiNmJmOGYxMjUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmhcXG4rKysgYi9pbmNsdWRlL25ldC9tYW5hL21hbmEuaFxcbkBAIC02Miw5ICs2MiwxMiBAQCBlbnVtIFRSSV9TVEFURSB7XFxuIFxcbiAjZGVmaW5lIE1BWF9QT1JUU19JTl9NQU5BX0RFViAyNTZcXG4gXFxuLS8qIE1heGltdW0gbnVtYmVyIG9mIHBhY2tldHMgcGVyIGNvYWxlc2NlZCBDUUUgKi9cXG4rLyogTWF4aW11bSBudW1iZXIgb2YgUFBJcyBwZXIgY29hbGVzY2VkIENRRSAqL1xcbiAjZGVmaW5lIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIDRcXG4gXFxuKy8qIDgtcGt0IG1vZGUgcGFja3MgdXAgdG8gMiBwYWNrZXRzIHBlciBQUEkgZW50cnkgKi9cXG4rI2RlZmluZSBNQU5BX0NRRV9DT0FMX1BLVFNfOCA4XFxuK1xcbiAvKiBEZWZhdWx0L21heCBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyAqL1xcbiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX1VTRUNfREVGIDBcXG4gI2RlZmluZSBNQU5BX0lOVFJfTU9EUl9DT01QX0RFRiAwXFxuQEAgLTc5LDcgKzgyLDcgQEAgZW51bSBUUklfU1RBVEUge1xcbiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX0NPTVBfTUFTSyAgIEdFTk1BU0soMjMsIDE2KVxcbiBcXG4gLyogVXBkYXRlIHRoaXMgY291bnQgd2hlbmV2ZXIgdGhlIHJlc3BlY3RpdmUgc3RydWN0dXJlcyBhcmUgY2hhbmdlZCAqL1xcbi0jZGVmaW5lIE1BTkFfU1RBVFNfUlhfQ09VTlQgKDYgKyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDEpXFxuKyNkZWZpbmUgTUFOQV9TVEFUU19SWF9DT1VOVCAoNiArIE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMSlcXG4gI2RlZmluZSBNQU5BX1NUQVRTX1RYX0NPVU5UIDExXFxuIFxcbiAjZGVmaW5lIE1BTkFfUlhfRlJBR19BTElHTk1FTlQgNjRcXG5AQCAtOTEsNyArOTQsNyBAQCBzdHJ1Y3QgbWFuYV9zdGF0c19yeCB7XFxuIFxcdHU2NCB4ZHBfdHg7XFxuIFxcdHU2NCB4ZHBfcmVkaXJlY3Q7XFxuIFxcdHU2NCBwa3RfbGVuMF9lcnI7XFxuLVxcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMV07XFxuK1xcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfQ1FFX0NPQUxfUEtUU184IC0gMV07XFxuIFxcdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBzeW5jcDtcXG4gfTtcXG4gXFxuQEAgLTIwMiw2ICsyMDUsNyBAQCBlbnVtIG1hbmFfY3FlX3R5cGUge1xcbiBcXHRDUUVfUlhfQ09BTEVTQ0VEXzRcXHRcXHQ9IDIsXFxuIFxcdENRRV9SWF9PQkpFQ1RfRkVOQ0VcXHRcXHQ9IDMsXFxuIFxcdENRRV9SWF9UUlVOQ0FURURcXHRcXHQ9IDQsXFxuK1xcdENRRV9SWF9DT0FMRVNDRURfOFxcdFxcdD0gNyxcXG4gXFxuIFxcdENRRV9UWF9PS0FZXFx0XFx0XFx0PSAzMixcXG4gXFx0Q1FFX1RYX1NBX0RST1BcXHRcXHRcXHQ9IDMzLFxcbkBAIC0yMzgsMTIgKzI0MiwyNiBAQCBzdHJ1Y3QgbWFuYV9jcWVfaGVhZGVyIHtcXG4gI2RlZmluZSBNQU5BX0hBU0hfTDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuIFxcdChORElTX0hBU0hfVENQX0lQVjQgfCBORElTX0hBU0hfVURQX0lQVjQgfCBORElTX0hBU0hfVENQX0lQVjYgfCAgICAgIFxcXFxcXG4gXFx0IE5ESVNfSEFTSF9VRFBfSVBWNiB8IE5ESVNfSEFTSF9UQ1BfSVBWNl9FWCB8IE5ESVNfSEFTSF9VRFBfSVBWNl9FWClcXG4rI2RlZmluZSBNQU5BX0hBU0hfRU5BQkxFX1NVUFBPUlRFRCBcXFxcXFxuK1xcdChORElTX0hBU0hfSVBWNCB8IE5ESVNfSEFTSF9UQ1BfSVBWNCB8IE5ESVNfSEFTSF9VRFBfSVBWNCB8IFxcXFxcXG4rXFx0IE5ESVNfSEFTSF9JUFY2IHwgTkRJU19IQVNIX1RDUF9JUFY2IHwgTkRJU19IQVNIX1VEUF9JUFY2KVxcbitcXG4rLyogUmVhZCBQUEkgaW4gdHdvIGRpZmZlcmVudCBsYXlvdXRzIGJhc2VkIG9uIGNxZV90eXBlICovXFxuK3VuaW9uIG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHtcXG4rXFx0c3RydWN0IHtcXG4rXFx0XFx0dTMyIHBrdF9sZW4gOiAxNjtcXG4rXFx0XFx0dTMyIHJlc2VydmVkMSA6IDE2O1xcbitcXHRcXHR1MzIgcmVzZXJ2ZWQyO1xcbitcXHRcXHR1MzIgcGt0X2hhc2g7XFxuK1xcdH07XFxuIFxcbi1zdHJ1Y3QgbWFuYV9yeGNvbXBfcGVycGt0X2luZm8ge1xcbi1cXHR1MzIgcGt0X2xlblxcdDogMTY7XFxuLVxcdHUzMiByZXNlcnZlZDFcXHQ6IDE2O1xcbi1cXHR1MzIgcmVzZXJ2ZWQyO1xcbi1cXHR1MzIgcGt0X2hhc2g7XFxuK1xcdC8qIFVwIHRvIHR3byBwa3RzIHBlciBQUEkgZW50cnkgKi9cXG4rXFx0c3RydWN0IHtcXG4rXFx0XFx0dTMyIHBrdF9oYXNoMDtcXG4rXFx0XFx0dTE2IHBrdF9sZW4wO1xcbitcXHRcXHR1MTYgcGt0X2xlbjE7XFxuK1xcdFxcdHUzMiBwa3RfaGFzaDE7XFxuK1xcdH07XFxuIH07IC8qIEhXIERBVEEgKi9cXG4gXFxuIC8qIFJlY2VpdmUgY29tcGxldGlvbiBPT0IgKi9cXG5AQCAtMjY0LDcgKzI4Miw3IEBAIHN0cnVjdCBtYW5hX3J4Y29tcF9vb2Ige1xcbiBcXHR1MzIgcnhfdWRwX2NzdW1fZmFpbFxcdFxcdDogMTtcXG4gXFx0dTMyIHJlc2VydmVkMlxcdFxcdFxcdDogMTtcXG4gXFxuLVxcdHN0cnVjdCBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyBwcGlbTUFOQV9SWENPTVBfT09CX05VTV9QUEldO1xcbitcXHR1bmlvbiBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyBwcGlbTUFOQV9SWENPTVBfT09CX05VTV9QUEldO1xcbiBcXG4gXFx0dTMyIHJ4X3dxZV9vZmZzZXQ7XFxuIH07IC8qIEhXIERBVEEgKi9cXG5AQCAtNjA3LDYgKzYyNSw3IEBAIHN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCB7XFxuIFxcdGJvb2wgcG9ydF9zdF9zYXZlOyAvKiBTYXZlZCBwb3J0IHN0YXRlICovXFxuIFxcbiBcXHR1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7XFxuK1xcdHU4IGNxZThfY29hbGVzY2luZ19lbmFibGU7XFxuIFxcdHUzMiBjcWVfY29hbGVzY2luZ190aW1lb3V0X25zO1xcbiBcXG4gXFx0LyogSW50ZXJydXB0IG1vZGVyYXRpb24gc2V0dGluZ3MgKi9cXG5AQCAtNzUxLDYgKzc3MCw4IEBAIHN0cnVjdCBtYW5hX3F1ZXJ5X2RldmljZV9jZmdfcmVxIHtcXG4gXFx0dTMyIHJlc2VydmVkO1xcbiB9OyAvKiBIVyBEQVRBICovXFxuIFxcbisjZGVmaW5lIE1BTkFfUEZfRkxBR18xX0NRRV84X0NPQUxFU0NJTkdfU1VQUE9SVEVEIEJJVCg1KVxcbitcXG4gc3RydWN0IG1hbmFfcXVlcnlfZGV2aWNlX2NmZ19yZXNwIHtcXG4gXFx0c3RydWN0IGdkbWFfcmVzcF9oZHIgaGRyO1xcbiBcXG5AQCAtOTg2LDcgKzEwMDcsMTAgQEAgc3RydWN0IG1hbmFfY2ZnX3J4X3N0ZWVyX3JlcV92MiB7XFxuIFxcdG1hbmFfaGFuZGxlX3QgZGVmYXVsdF9yeG9iajtcXG4gXFx0dTggaGFzaGtleVtNQU5BX0hBU0hfS0VZX1NJWkVdO1xcbiBcXHR1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7XFxuLVxcdHU4IHJlc2VydmVkMls3XTtcXG4rXFx0dTggcmVzZXJ2ZWQyWzNdO1xcbitcXHR1MTYgcnNzX2hhc2hfdHlwZXM7XFxuK1xcdHU4IGNxZThfY29hbGVzY2luZ19lbmFibGU7IC8qIHY1IG1lc3NhZ2UgKi9cXG4rXFx0dTggcmVzZXJ2ZWQzO1xcbiBcXHRtYW5hX2hhbmRsZV90IGluZGlyX3RhYltdIF9fY291bnRlZF9ieShudW1faW5kaXJfZW50cmllcyk7XFxuIH07IC8qIEhXIERBVEEgKi9cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA2OjE5OjQ0LjgzNzQ4MTA5M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyMDEwMTQ1NjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyIHRvIGFkZCBzdXBwb3J0IGZvciBDUUUgOC1wYWNrZXQgY29hbGVzY2luZy4gTUFOQSBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIFNtYXJ0TklDIGRldmljZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgc28gdGhpcyBjb2RlIGNhbm5vdCBiZSByZWFjaGVkIG9yIHRlc3RlZCBieSB0aGUgZnV6emVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDdhNDAxMDBiNzNmN2IwODE5ZWRiZWFlODRlZDhjNTRiN2Y3YjI3ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIgMDY6MTk6NDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmNcbmluZGV4IGE4MGNmMGJjNDYyY2YuLmEzYzI5MDc3ZGFmNWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uY1xuQEAgLTEyNDEsNiArMTI0MSw5IEBAIGludCBtYW5hX2dkX3F1ZXJ5X2RldmljZV9jZmcoc3RydWN0IGdkbWFfY29udGV4dCAqZ2MsIHUzMiBwcm90b19tYWpvcl92ZXIsXG4gXHRcdHJldHVybiBlcnI7XG4gXHR9XG4gXG4rXHRnYy1cdTAwM2VjcWU4X2NvYWxlc2Npbmdfc3VwID0gISEocmVzcC5wZl9jYXBfZmxhZ3MxIFx1MDAyNlxuK1x0XHRcdFx0ICAgICBNQU5BX1BGX0ZMQUdfMV9DUUVfOF9DT0FMRVNDSU5HX1NVUFBPUlRFRCk7XG4rXG4gXHQqbWF4X251bV92cG9ydHMgPSByZXNwLm1heF9udW1fdnBvcnRzO1xuIFxuIFx0aWYgKHJlc3AuaGRyLnJlc3BvbnNlLm1zZ192ZXJzaW9uIFx1MDAzZT0gR0RNQV9NRVNTQUdFX1YyKSB7XG5AQCAtMTQyNiw3ICsxNDI5LDExIEBAIHN0YXRpYyBpbnQgbWFuYV9jZmdfdnBvcnRfc3RlZXJpbmcoc3RydWN0IG1hbmFfcG9ydF9jb250ZXh0ICphcGMsXG4gXHRtYW5hX2dkX2luaXRfcmVxX2hkcihcdTAwMjZyZXEtXHUwMDNlaGRyLCBNQU5BX0NPTkZJR19WUE9SVF9SWCwgcmVxX2J1Zl9zaXplLFxuIFx0XHRcdCAgICAgc2l6ZW9mKHJlc3ApKTtcbiBcbi1cdHJlcS1cdTAwM2VoZHIucmVxLm1zZ192ZXJzaW9uID0gR0RNQV9NRVNTQUdFX1YyO1xuK1x0LyogUmVxdWVzdCBcdTAwMjYgcmVzcG9uc2UgdmVyc2lvbnMgY2FuIGJlIGRpZmZlcmVudC5cbitcdCAqIEhXIGNhbiBoYW5kbGUgbmV3ZXIgbXNnIHZlcnNpb25zLCBieSBza2lwcGluZ1xuK1x0ICogbmV3IGZpZWxkcy5cbitcdCAqL1xuK1x0cmVxLVx1MDAzZWhkci5yZXEubXNnX3ZlcnNpb24gPSBHRE1BX01FU1NBR0VfVjU7XG4gXHRyZXEtXHUwMDNlaGRyLnJlc3AubXNnX3ZlcnNpb24gPSBHRE1BX01FU1NBR0VfVjI7XG4gXG4gXHRyZXEtXHUwMDNldnBvcnQgPSBhcGMtXHUwMDNlcG9ydF9oYW5kbGU7XG5AQCAtMTQ0MCw4ICsxNDQ3LDEzIEBAIHN0YXRpYyBpbnQgbWFuYV9jZmdfdnBvcnRfc3RlZXJpbmcoc3RydWN0IG1hbmFfcG9ydF9jb250ZXh0ICphcGMsXG4gXHRyZXEtXHUwMDNldXBkYXRlX2luZGlyX3RhYiA9IHVwZGF0ZV90YWI7XG4gXHRyZXEtXHUwMDNlZGVmYXVsdF9yeG9iaiA9IGFwYy1cdTAwM2VkZWZhdWx0X3J4b2JqO1xuIFxuLVx0aWYgKHJ4ICE9IFRSSV9TVEFURV9GQUxTRSlcbitcdC8qIFJlcXVlc3QtbXNnIHY1IHJlcXVpcmVzIHRoaXMgZmllbGQgKi9cbitcdHJlcS1cdTAwM2Vyc3NfaGFzaF90eXBlcyA9IE1BTkFfSEFTSF9FTkFCTEVfU1VQUE9SVEVEO1xuK1xuK1x0aWYgKHJ4ICE9IFRSSV9TVEFURV9GQUxTRSkge1xuIFx0XHRyZXEtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLVx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcbitcdFx0cmVxLVx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcbitcdH1cbiBcbiBcdGlmICh1cGRhdGVfa2V5KVxuIFx0XHRtZW1jcHkoXHUwMDI2cmVxLVx1MDAzZWhhc2hrZXksIGFwYy1cdTAwM2VoYXNoa2V5LCBNQU5BX0hBU0hfS0VZX1NJWkUpO1xuQEAgLTIwNDYsMTYgKzIwNTgsMTQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICptYW5hX2J1aWxkX3NrYihzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgdm9pZCAqYnVmX3ZhLFxuIFxuIHN0YXRpYyB2b2lkIG1hbmFfcnhfc2tiKHZvaWQgKmJ1Zl92YSwgYm9vbCBmcm9tX3Bvb2wsXG4gXHRcdFx0c3RydWN0IG1hbmFfcnhjb21wX29vYiAqY3FlLCBzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSxcbi1cdFx0XHRpbnQgaSlcbitcdFx0XHR1MzIgcGt0X2xlbiwgdTMyIHBrdF9oYXNoKVxuIHtcbiBcdHN0cnVjdCBtYW5hX3N0YXRzX3J4ICpyeF9zdGF0cyA9IFx1MDAyNnJ4cS1cdTAwM2VzdGF0cztcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcnhxLVx1MDAzZW5kZXY7XG4tXHR1aW50IHBrdF9sZW4gPSBjcWUtXHUwMDNlcHBpW2ldLnBrdF9sZW47XG4gXHR1MTYgcnhxX2lkeCA9IHJ4cS1cdTAwM2VyeHFfaWR4O1xuIFx0c3RydWN0IG5hcGlfc3RydWN0ICpuYXBpO1xuIFx0c3RydWN0IHhkcF9idWZmIHhkcCA9IHt9O1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi1cdHUzMiBoYXNoX3ZhbHVlO1xuIFx0dTMyIGFjdDtcbiBcbiBcdHJ4cS1cdTAwM2VyeF9jcS53b3JrX2RvbmUrKztcbkBAIC0yMDk0LDEyICsyMTA0LDEwIEBAIHN0YXRpYyB2b2lkIG1hbmFfcnhfc2tiKHZvaWQgKmJ1Zl92YSwgYm9vbCBmcm9tX3Bvb2wsXG4gXHR9XG4gXG4gXHRpZiAoY3FlLVx1MDAzZXJ4X2hhc2h0eXBlICE9IDAgXHUwMDI2XHUwMDI2IChuZGV2LVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX1JYSEFTSCkpIHtcbi1cdFx0aGFzaF92YWx1ZSA9IGNxZS1cdTAwM2VwcGlbaV0ucGt0X2hhc2g7XG4tXG4gXHRcdGlmIChjcWUtXHUwMDNlcnhfaGFzaHR5cGUgXHUwMDI2IE1BTkFfSEFTSF9MNClcbi1cdFx0XHRza2Jfc2V0X2hhc2goc2tiLCBoYXNoX3ZhbHVlLCBQS1RfSEFTSF9UWVBFX0w0KTtcbitcdFx0XHRza2Jfc2V0X2hhc2goc2tiLCBwa3RfaGFzaCwgUEtUX0hBU0hfVFlQRV9MNCk7XG4gXHRcdGVsc2Vcbi1cdFx0XHRza2Jfc2V0X2hhc2goc2tiLCBoYXNoX3ZhbHVlLCBQS1RfSEFTSF9UWVBFX0wzKTtcbitcdFx0XHRza2Jfc2V0X2hhc2goc2tiLCBwa3RfaGFzaCwgUEtUX0hBU0hfVFlQRV9MMyk7XG4gXHR9XG4gXG4gXHRpZiAoY3FlLVx1MDAzZXJ4X3ZsYW50YWdfcHJlc2VudCkge1xuQEAgLTIyNDAsNiArMjI0OCw0MyBAQCBzdGF0aWMgdm9pZCBtYW5hX3JlZmlsbF9yeF9vb2Ioc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSxcbiBcdHJ4b29iLVx1MDAzZWRtYV9zeW5jX29mZnNldCA9IGRtYV9zeW5jX29mZnNldDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX29uZV9yeF9wa3Qoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSxcbitcdFx0XHRcdCAgICBzdHJ1Y3QgbWFuYV9yeGNvbXBfb29iICpvb2IsXG4rXHRcdFx0XHQgICAgdTMyIHBrdGxlbiwgdTMyIHBrdF9oYXNoKVxuK3tcbitcdHN0cnVjdCBtYW5hX3JlY3ZfYnVmX29vYiAqcnhidWZfb29iO1xuK1x0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSByeHEtXHUwMDNlbmRldjtcbitcdHZvaWQgKm9sZF9idWYgPSBOVUxMO1xuK1x0Ym9vbCBvbGRfZnA7XG4rXG4rXHRyeGJ1Zl9vb2IgPSBcdTAwMjZyeHEtXHUwMDNlcnhfb29ic1tyeHEtXHUwMDNlYnVmX2luZGV4XTtcbitcdFdBUk5fT05fT05DRShyeGJ1Zl9vb2ItXHUwMDNld3FlX2luZi53cWVfc2l6ZV9pbl9idSAhPSAxKTtcbitcbitcdGlmICh1bmxpa2VseShwa3RsZW4gXHUwMDNlIHJ4cS1cdTAwM2VkYXRhc2l6ZSkpIHtcbitcdFx0LyogSW5jcmVhc2UgaXQgZXZlbiBpZiBtYW5hX3J4X3NrYigpIGlzbid0IGNhbGxlZC4gKi9cbitcdFx0cnhxLVx1MDAzZXJ4X2NxLndvcmtfZG9uZSsrO1xuK1xuK1x0XHQrK25kZXYtXHUwMDNlc3RhdHMucnhfZHJvcHBlZDtcbitcdFx0bmV0ZGV2X3dhcm5fb25jZShuZGV2LFxuK1x0XHRcdFx0IFwiRHJvcHBlZCBvdmVyc2l6ZWQgUlggcGFja2V0OiBsZW49JXUsIGRhdGFzaXplPSV1XFxuXCIsXG4rXHRcdFx0XHQgcGt0bGVuLCByeHEtXHUwMDNlZGF0YXNpemUpO1xuK1xuK1x0XHQvKiBSZXVzZSB0aGUgUlggYnVmZmVyIHNpbmNlIHJ4YnVmX29vYiBpcyB1bmNoYW5nZWQuICovXG4rXHR9IGVsc2Uge1xuK1x0XHRtYW5hX3JlZmlsbF9yeF9vb2IoZGV2LCByeHEsIHJ4YnVmX29vYiwgcGt0bGVuLFxuK1x0XHRcdFx0ICAgXHUwMDI2b2xkX2J1ZiwgXHUwMDI2b2xkX2ZwKTtcbitcbitcdFx0LyogVW5zdWNjZXNzZnVsIHJlZmlsbCB3aWxsIGhhdmUgb2xkX2J1ZiA9PSBOVUxMLlxuK1x0XHQgKiBJbiB0aGlzIGNhc2UsIG1hbmFfcnhfc2tiKCkgd2lsbCBkcm9wIHRoZSBwYWNrZXQuXG4rXHRcdCAqL1xuK1x0XHRtYW5hX3J4X3NrYihvbGRfYnVmLCBvbGRfZnAsIG9vYiwgcnhxLCBwa3RsZW4sIHBrdF9oYXNoKTtcbitcdH1cbitcbitcdG1hbmFfbW92ZV93cV90YWlsKHJ4cS1cdTAwM2VnZG1hX3JxLCByeGJ1Zl9vb2ItXHUwMDNld3FlX2luZi53cWVfc2l6ZV9pbl9idSk7XG4rXG4rXHRtYW5hX3Bvc3RfcGt0X3J4cShyeHEpO1xuK31cbitcbiBzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3NfcnhfY3FlKHN0cnVjdCBtYW5hX3J4cSAqcnhxLCBzdHJ1Y3QgbWFuYV9jcSAqY3EsXG4gXHRcdFx0XHRzdHJ1Y3QgZ2RtYV9jb21wICpjcWUpXG4ge1xuQEAgLTIyNDksMTAgKzIyOTQsMTAgQEAgc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLFxuIFx0c3RydWN0IG1hbmFfcmVjdl9idWZfb29iICpyeGJ1Zl9vb2I7XG4gXHRzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYztcbiBcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGdjLVx1MDAzZWRldjtcbitcdGJvb2wgY29hbGVzY2VkXzggPSBmYWxzZTtcbiBcdGJvb2wgY29hbGVzY2VkID0gZmFsc2U7XG4tXHR2b2lkICpvbGRfYnVmID0gTlVMTDtcbi1cdHUzMiBjdXJyLCBwa3RsZW47XG4tXHRib29sIG9sZF9mcDtcbitcdHUzMiBwa3RsZW47XG4rXHRpbnQgcGt0X2k7XG4gXHRpbnQgaTtcbiBcbiBcdGFwYyA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTIyNzUsNiArMjMyMCwxMSBAQCBzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3NfcnhfY3FlKHN0cnVjdCBtYW5hX3J4cSAqcnhxLCBzdHJ1Y3QgbWFuYV9jcSAqY3EsXG4gXHRcdGNvYWxlc2NlZCA9IHRydWU7XG4gXHRcdGJyZWFrO1xuIFxuK1x0Y2FzZSBDUUVfUlhfQ09BTEVTQ0VEXzg6XG4rXHRcdGNvYWxlc2NlZCA9IHRydWU7XG4rXHRcdGNvYWxlc2NlZF84ID0gdHJ1ZTtcbitcdFx0YnJlYWs7XG4rXG4gXHRjYXNlIENRRV9SWF9PQkpFQ1RfRkVOQ0U6XG4gXHRcdGNvbXBsZXRlKFx1MDAyNnJ4cS1cdTAwM2VmZW5jZV9ldmVudCk7XG4gXHRcdHJldHVybjtcbkBAIC0yMjg2LDU0ICsyMzM2LDQ4IEBAIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSxcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuK1x0cGt0X2kgPSAwO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUFOQV9SWENPTVBfT09CX05VTV9QUEk7IGkrKykge1xuLVx0XHRvbGRfYnVmID0gTlVMTDtcbi1cdFx0cGt0bGVuID0gb29iLVx1MDAzZXBwaVtpXS5wa3RfbGVuO1xuLVx0XHRpZiAocGt0bGVuID09IDApXG4tXHRcdFx0YnJlYWs7XG4tXG4tXHRcdGN1cnIgPSByeHEtXHUwMDNlYnVmX2luZGV4O1xuLVx0XHRyeGJ1Zl9vb2IgPSBcdTAwMjZyeHEtXHUwMDNlcnhfb29ic1tjdXJyXTtcbi1cdFx0V0FSTl9PTl9PTkNFKHJ4YnVmX29vYi1cdTAwM2V3cWVfaW5mLndxZV9zaXplX2luX2J1ICE9IDEpO1xuLVxuLVx0XHRpZiAodW5saWtlbHkocGt0bGVuIFx1MDAzZSByeHEtXHUwMDNlZGF0YXNpemUpKSB7XG4tXHRcdFx0LyogSW5jcmVhc2UgaXQgZXZlbiBpZiBtYW5hX3J4X3NrYigpIGlzbid0IGNhbGxlZC4gKi9cbi1cdFx0XHRyeHEtXHUwMDNlcnhfY3Eud29ya19kb25lKys7XG4rXHRcdHUzMiBwa3RfaGFzaDtcbiBcbi1cdFx0XHQrK25kZXYtXHUwMDNlc3RhdHMucnhfZHJvcHBlZDtcbi1cdFx0XHRuZXRkZXZfd2Fybl9vbmNlKG5kZXYsXG4tXHRcdFx0XHRcIkRyb3BwZWQgb3ZlcnNpemVkIFJYIHBhY2tldDogbGVuPSV1LCBkYXRhc2l6ZT0ldVxcblwiLFxuLVx0XHRcdFx0cGt0bGVuLCByeHEtXHUwMDNlZGF0YXNpemUpO1xuLVxuLVx0XHRcdC8qIFJldXNlIHRoZSBSWCBidWZmZXIgc2luY2UgcnhidWZfb29iIGlzIHVuY2hhbmdlZC4gKi9cbitcdFx0aWYgKGNvYWxlc2NlZF84KSB7XG4rXHRcdFx0LyogOC1wa3QgbW9kZTogMiBwYWNrZXRzIHBlciBQUEkgZW50cnkgKi9cbitcdFx0XHRwa3RsZW4gPSBvb2ItXHUwMDNlcHBpW2ldLnBrdF9sZW4wO1xuK1x0XHRcdHBrdF9oYXNoID0gb29iLVx1MDAzZXBwaVtpXS5wa3RfaGFzaDA7XG4gXHRcdH0gZWxzZSB7XG4tXG4tXHRcdFx0bWFuYV9yZWZpbGxfcnhfb29iKGRldiwgcnhxLCByeGJ1Zl9vb2IsIHBrdGxlbixcbi1cdFx0XHRcdFx0ICAgXHUwMDI2b2xkX2J1ZiwgXHUwMDI2b2xkX2ZwKTtcbi1cbi1cdFx0XHQvKiBVbnN1Y2Nlc3NmdWwgcmVmaWxsIHdpbGwgaGF2ZSBvbGRfYnVmID09IE5VTEwuXG4tXHRcdFx0ICogSW4gdGhpcyBjYXNlLCBtYW5hX3J4X3NrYigpIHdpbGwgZHJvcCB0aGUgcGFja2V0LlxuLVx0XHRcdCAqL1xuLVx0XHRcdG1hbmFfcnhfc2tiKG9sZF9idWYsIG9sZF9mcCwgb29iLCByeHEsIGkpO1xuK1x0XHRcdHBrdGxlbiA9IG9vYi1cdTAwM2VwcGlbaV0ucGt0X2xlbjtcbitcdFx0XHRwa3RfaGFzaCA9IG9vYi1cdTAwM2VwcGlbaV0ucGt0X2hhc2g7XG4gXHRcdH1cbitcdFx0aWYgKHBrdGxlbiA9PSAwKVxuK1x0XHRcdGJyZWFrO1xuIFxuLVx0XHRtYW5hX21vdmVfd3FfdGFpbChyeHEtXHUwMDNlZ2RtYV9ycSxcbi1cdFx0XHRcdCAgcnhidWZfb29iLVx1MDAzZXdxZV9pbmYud3FlX3NpemVfaW5fYnUpO1xuLVxuLVx0XHRtYW5hX3Bvc3RfcGt0X3J4cShyeHEpO1xuK1x0XHRtYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChkZXYsIHJ4cSwgb29iLCBwa3RsZW4sIHBrdF9oYXNoKTtcbitcdFx0cGt0X2krKztcbiBcbiBcdFx0aWYgKCFjb2FsZXNjZWQpXG4gXHRcdFx0YnJlYWs7XG4rXG4rXHRcdC8qIFByb2Nlc3MgMm5kIHBhY2tldCBmcm9tIHRoZSBzYW1lIFBQSSBpbiA4LXBrdCBtb2RlICovXG4rXHRcdGlmIChjb2FsZXNjZWRfOCkge1xuK1x0XHRcdHBrdGxlbiA9IG9vYi1cdTAwM2VwcGlbaV0ucGt0X2xlbjE7XG4rXHRcdFx0cGt0X2hhc2ggPSBvb2ItXHUwMDNlcHBpW2ldLnBrdF9oYXNoMTtcbitcdFx0XHRpZiAocGt0bGVuID09IDApXG4rXHRcdFx0XHRicmVhaztcbitcbitcdFx0XHRtYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChkZXYsIHJ4cSwgb29iLCBwa3RsZW4sXG4rXHRcdFx0XHRcdFx0cGt0X2hhc2gpO1xuK1x0XHRcdHBrdF9pKys7XG4rXHRcdH1cbiBcdH1cbiBcbiBcdC8qIENvbGxlY3QgY29hbGVzY2VkIENRRSBjb3VudCBiYXNlZCBvbiBwYWNrZXRzIHByb2Nlc3NlZC5cbi1cdCAqIENvYWxlc2NlZCBDUUVzIGhhdmUgYXQgbGVhc3QgMiBwYWNrZXRzLCBzbyBpbmRleCBpcyBpIC0gMi5cbitcdCAqIENvYWxlc2NlZCBDUUVzIGhhdmUgYXQgbGVhc3QgMiBwYWNrZXRzLCBzbyBpbmRleCBpcyBwa3RfaSAtIDIuXG4gXHQgKi9cbi1cdGlmIChpIFx1MDAzZSAxKSB7XG4rXHRpZiAocGt0X2kgXHUwMDNlIDEpIHtcbiBcdFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZyeHEtXHUwMDNlc3RhdHMuc3luY3ApO1xuLVx0XHRyeHEtXHUwMDNlc3RhdHMuY29hbGVzY2VkX2NxZVtpIC0gMl0rKztcbitcdFx0cnhxLVx1MDAzZXN0YXRzLmNvYWxlc2NlZF9jcWVbcGt0X2kgLSAyXSsrO1xuIFx0XHR1NjRfc3RhdHNfdXBkYXRlX2VuZChcdTAwMjZyeHEtXHUwMDNlc3RhdHMuc3luY3ApO1xuLVx0fSBlbHNlIGlmICghaSBcdTAwMjZcdTAwMjYgIXBrdGxlbikge1xuK1x0fSBlbHNlIGlmICghcGt0X2kgXHUwMDI2XHUwMDI2ICFwa3RsZW4pIHtcbiBcdFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZyeHEtXHUwMDNlc3RhdHMuc3luY3ApO1xuIFx0XHRyeHEtXHUwMDNlc3RhdHMucGt0X2xlbjBfZXJyKys7XG4gXHRcdHU2NF9zdGF0c191cGRhdGVfZW5kKFx1MDAyNnJ4cS1cdTAwM2VzdGF0cy5zeW5jcCk7XG5AQCAtMzc2Myw2ICszODA3LDcgQEAgc3RhdGljIGludCBtYW5hX3Byb2JlX3BvcnQoc3RydWN0IG1hbmFfY29udGV4dCAqYWMsIGludCBwb3J0X2lkeCxcbiBcdGFwYy1cdTAwM2Vwb3J0X2lkeCA9IHBvcnRfaWR4O1xuIFx0YXBjLVx1MDAzZWxpbmtfY2ZnX2Vycm9yID0gMTtcbiBcdGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPSAwO1xuK1x0YXBjLVx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPSAwO1xuIFxuIFx0LyogSW5pdGlhbGl6ZSBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyBpZiBzdXBwb3J0ZWQgYnkgSFcgKi9cbiBcdGlmIChnYy1cdTAwM2VwZl9jYXBfZmxhZ3MxIFx1MDAyNiBHRE1BX1BGX0NBUF9GTEFHXzFfRFlOX0lOVEVSUlVQVF9NT0RFUkFUSU9OKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuY1xuaW5kZXggOWUzMWUyNTk1YWUzMi4uMDRmODc3NzA3Y2M2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuY1xuQEAgLTE2OSw3ICsxNjksNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9zdHJpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgc3RyaW5nc2V0LCB1OCAqZGF0YSlcbiBcdFx0ZXRodG9vbF9zcHJpbnRmKFx1MDAyNmRhdGEsIFwicnhfJWRfeGRwX3R4XCIsIGkpO1xuIFx0XHRldGh0b29sX3NwcmludGYoXHUwMDI2ZGF0YSwgXCJyeF8lZF94ZHBfcmVkaXJlY3RcIiwgaSk7XG4gXHRcdGV0aHRvb2xfc3ByaW50ZihcdTAwMjZkYXRhLCBcInJ4XyVkX3BrdF9sZW4wX2VyclwiLCBpKTtcbi1cdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxOyBqKyspXG4rXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMTsgaisrKVxuIFx0XHRcdGV0aHRvb2xfc3ByaW50ZihcdTAwMjZkYXRhLCBcInJ4XyVkX2NvYWxlc2NlZF9jcWVfJWRcIiwgaSwgaiArIDIpO1xuIFx0fVxuIFxuQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0dTY0IHhkcF9kcm9wO1xuIFx0dTY0IHhkcF90eDtcbiBcdHU2NCBwa3RfbGVuMF9lcnI7XG4tXHR1NjQgY29hbGVzY2VkX2NxZVtNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDFdO1xuK1x0dTY0IGNvYWxlc2NlZF9jcWVbTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxXTtcbiBcdHU2NCB0c29fcGFja2V0cztcbiBcdHU2NCB0c29fYnl0ZXM7XG4gXHR1NjQgdHNvX2lubmVyX3BhY2tldHM7XG5AQCAtMjQ1LDcgKzI0NSw3IEBAIHN0YXRpYyB2b2lkIG1hbmFfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdFx0eGRwX3R4ID0gcnhfc3RhdHMtXHUwMDNleGRwX3R4O1xuIFx0XHRcdHhkcF9yZWRpcmVjdCA9IHJ4X3N0YXRzLVx1MDAzZXhkcF9yZWRpcmVjdDtcbiBcdFx0XHRwa3RfbGVuMF9lcnIgPSByeF9zdGF0cy1cdTAwM2Vwa3RfbGVuMF9lcnI7XG4tXHRcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxOyBqKyspXG4rXHRcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqKyspXG4gXHRcdFx0XHRjb2FsZXNjZWRfY3FlW2pdID0gcnhfc3RhdHMtXHUwMDNlY29hbGVzY2VkX2NxZVtqXTtcbiBcdFx0fSB3aGlsZSAodTY0X3N0YXRzX2ZldGNoX3JldHJ5KFx1MDAyNnJ4X3N0YXRzLVx1MDAzZXN5bmNwLCBzdGFydCkpO1xuIFxuQEAgLTI1NSw3ICsyNTUsNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHRkYXRhW2krK10gPSB4ZHBfdHg7XG4gXHRcdGRhdGFbaSsrXSA9IHhkcF9yZWRpcmVjdDtcbiBcdFx0ZGF0YVtpKytdID0gcGt0X2xlbjBfZXJyO1xuLVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDE7IGorKylcbitcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqKyspXG4gXHRcdFx0ZGF0YVtpKytdID0gY29hbGVzY2VkX2NxZVtqXTtcbiBcdH1cbiBcbkBAIC00MDgsNiArNDA4LDcgQEAgc3RhdGljIGludCBtYW5hX2dldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdHN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCAqYXBjID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXG4gXHRrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzID1cbitcdFx0YXBjLVx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPyBNQU5BX0NRRV9DT0FMX1BLVFNfOCA6XG4gXHRcdGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSA6IDE7XG4gXG4gXHRrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfbnNlY3MgPSBhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfdGltZW91dF9ucztcbkBAIC00NDMsMTUgKzQ0NCwxOSBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHR1MTYgaW50cl9tb2RyX3R4X3VzZWM7XG4gXHRcdHUxNiBpbnRyX21vZHJfdHhfY29tcDtcbiBcdFx0dTggY3FlX2NvYWxlc2NpbmdfZW5hYmxlO1xuK1x0XHR1OCBjcWU4X2NvYWxlc2NpbmdfZW5hYmxlO1xuIFx0XHRib29sIHJ4X2RpbV9lbmFibGVkO1xuIFx0XHRib29sIHR4X2RpbV9lbmFibGVkO1xuIFx0fSBzYXZlZDtcbiBcdGJvb2wgbW9kcl9jaGFuZ2VkID0gZmFsc2U7XG4gXHRib29sIGRpbV9jaGFuZ2VkID0gZmFsc2U7XG4gXHRzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYztcbitcdHUzMiBtYXhfY3FlX2ZyYW1lcztcbiBcdGludCBlcnI7XG4gXG4gXHRnYyA9IGFwYy1cdTAwM2VhYy1cdTAwM2VnZG1hX2Rldi1cdTAwM2VnZG1hX2NvbnRleHQ7XG4rXHRtYXhfY3FlX2ZyYW1lcyA9IGdjLVx1MDAzZWNxZThfY29hbGVzY2luZ19zdXAgPyBNQU5BX0NRRV9DT0FMX1BLVFNfOCA6XG4rXHRcdFx0XHRcdFx0ICAgTUFOQV9SWENPTVBfT09CX05VTV9QUEk7XG4gXG4gXHQvKiBCb3RoIHN0YXRpYyBhbmQgZHluYW1pYyBpbnRlcnJ1cHQgbW9kZXJhdGlvbiAoRElNKSByZWx5IG9uIHRoZVxuIFx0ICogc2FtZSBIVyBjYXBhYmlsaXR5IGFkdmVydGlzZWQgYnkgdGhlIFBGLlxuQEAgLTQ2NiwxMCArNDcxLDEyIEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHR9XG4gXG4gXHRpZiAoa2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX2ZyYW1lcyAhPSAxIFx1MDAyNlx1MDAyNlxuLVx0ICAgIGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgIT0gTUFOQV9SWENPTVBfT09CX05VTV9QUEkpIHtcbitcdCAgICBrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzICE9IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIFx1MDAyNlx1MDAyNlxuK1x0ICAgIGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgIT0gbWF4X2NxZV9mcmFtZXMpIHtcbiBcdFx0TkxfU0VUX0VSUl9NU0dfRk1UKGV4dGFjayxcbi1cdFx0XHRcdCAgIFwicngtZnJhbWVzIG11c3QgYmUgMSBvciAldSwgZ290ICV1XCIsXG4rXHRcdFx0XHQgICBcInJ4LWZyYW1lcyBtdXN0IGJlIDEgb3IgJXUlcywgZ290ICV1XCIsXG4gXHRcdFx0XHQgICBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSxcbitcdFx0XHRcdCAgIGdjLVx1MDAzZWNxZThfY29hbGVzY2luZ19zdXAgPyBcIiBvciA4XCIgOiBcIlwiLFxuIFx0XHRcdFx0ICAga2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX2ZyYW1lcyk7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuQEAgLTUxNCw4ICs1MjEsMTEgQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdHNhdmVkLnR4X2RpbV9lbmFibGVkID0gYXBjLVx1MDAzZXR4X2RpbV9lbmFibGVkO1xuIFxuIFx0c2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLVx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcbitcdHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcbiBcdGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPVxuLVx0XHRrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzID09IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJO1xuK1x0XHRrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzIFx1MDAzZT0gTUFOQV9SWENPTVBfT09CX05VTV9QUEk7XG4rXHRhcGMtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9XG4rXHRcdGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgPT0gTUFOQV9DUUVfQ09BTF9QS1RTXzg7XG4gXG4gXHRpZiAoIWFwYy1cdTAwM2Vwb3J0X2lzX3VwKSB7XG4gXHRcdFdSSVRFX09OQ0UoYXBjLVx1MDAzZXJ4X2RpbV9lbmFibGVkLCAhIWVjLVx1MDAzZXVzZV9hZGFwdGl2ZV9yeF9jb2FsZXNjZSk7XG5AQCAtNTIzLDcgKzUzMyw4IEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFxuLVx0aWYgKGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgIT0gc2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlKSB7XG4rXHRpZiAoYXBjLVx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZSAhPSBzYXZlZC5jcWVfY29hbGVzY2luZ19lbmFibGUgfHxcbitcdCAgICBhcGMtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSAhPSBzYXZlZC5jcWU4X2NvYWxlc2NpbmdfZW5hYmxlKSB7XG4gXHRcdC8qIENRRSBjb2FsZXNjaW5nIHNldHRpbmcgaXMgYXBwbGllZCB2aWEgUlNTIGNvbmZpZ3VyYXRpb24uICovXG4gXHRcdGVyciA9IG1hbmFfY29uZmlnX3JzcyhhcGMsIFRSSV9TVEFURV9UUlVFLCBmYWxzZSwgZmFsc2UpO1xuIFx0XHRpZiAoZXJyKSB7XG5AQCAtNTMxLDYgKzU0Miw4IEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdFx0XHQgICBlcnIpO1xuIFx0XHRcdGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPVxuIFx0XHRcdFx0c2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlO1xuK1x0XHRcdGFwYy1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlID1cbitcdFx0XHRcdHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGU7XG4gXHRcdFx0YXBjLVx1MDAzZWludHJfbW9kcl9yeF91c2VjID0gc2F2ZWQuaW50cl9tb2RyX3J4X3VzZWM7XG4gXHRcdFx0YXBjLVx1MDAzZWludHJfbW9kcl9yeF9jb21wID0gc2F2ZWQuaW50cl9tb2RyX3J4X2NvbXA7XG4gXHRcdFx0YXBjLVx1MDAzZWludHJfbW9kcl90eF91c2VjID0gc2F2ZWQuaW50cl9tb2RyX3R4X3VzZWM7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFuYS9nZG1hLmggYi9pbmNsdWRlL25ldC9tYW5hL2dkbWEuaFxuaW5kZXggODUyOWNlZjBkN2M0NS4uNzBhN2YxZmVlNWQzYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oXG4rKysgYi9pbmNsdWRlL25ldC9tYW5hL2dkbWEuaFxuQEAgLTE4Miw2ICsxODIsNyBAQCBzdHJ1Y3QgZ2RtYV9nZW5lcmFsX3JlcSB7XG4gI2RlZmluZSBHRE1BX01FU1NBR0VfVjIgMlxuICNkZWZpbmUgR0RNQV9NRVNTQUdFX1YzIDNcbiAjZGVmaW5lIEdETUFfTUVTU0FHRV9WNCA0XG4rI2RlZmluZSBHRE1BX01FU1NBR0VfVjUgNVxuIFxuIHN0cnVjdCBnZG1hX2dlbmVyYWxfcmVzcCB7XG4gXHRzdHJ1Y3QgZ2RtYV9yZXNwX2hkciBoZHI7XG5AQCAtNDI4LDYgKzQyOSw5IEBAIHN0cnVjdCBnZG1hX2NvbnRleHQge1xuIFx0LyogTDIgTVRVICovXG4gXHR1MTYgYWRhcHRlcl9tdHU7XG4gXG4rXHQvKiBOSUMgc3VwcG9ydHMgQ1FFIHg4IGNvYWxlc2NpbmcgKi9cbitcdGJvb2wgY3FlOF9jb2FsZXNjaW5nX3N1cDtcbitcbiBcdC8qIFRoaXMgbWFwcyBhIENRIGluZGV4IHRvIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUuICovXG4gXHR1bnNpZ25lZCBpbnRcdFx0bWF4X251bV9jcXM7XG4gXHRzdHJ1Y3QgZ2RtYV9xdWV1ZVx0KipjcV90YWJsZTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9tYW5hL21hbmEuaCBiL2luY2x1ZGUvbmV0L21hbmEvbWFuYS5oXG5pbmRleCA0ZDA0MWZiODQzN2Y1Li41MGFjYjZiZjhmMTI1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmhcbisrKyBiL2luY2x1ZGUvbmV0L21hbmEvbWFuYS5oXG5AQCAtNjIsOSArNjIsMTIgQEAgZW51bSBUUklfU1RBVEUge1xuIFxuICNkZWZpbmUgTUFYX1BPUlRTX0lOX01BTkFfREVWIDI1NlxuIFxuLS8qIE1heGltdW0gbnVtYmVyIG9mIHBhY2tldHMgcGVyIGNvYWxlc2NlZCBDUUUgKi9cbisvKiBNYXhpbXVtIG51bWJlciBvZiBQUElzIHBlciBjb2FsZXNjZWQgQ1FFICovXG4gI2RlZmluZSBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSA0XG4gXG4rLyogOC1wa3QgbW9kZSBwYWNrcyB1cCB0byAyIHBhY2tldHMgcGVyIFBQSSBlbnRyeSAqL1xuKyNkZWZpbmUgTUFOQV9DUUVfQ09BTF9QS1RTXzggOFxuK1xuIC8qIERlZmF1bHQvbWF4IGludGVycnVwdCBtb2RlcmF0aW9uIHNldHRpbmdzICovXG4gI2RlZmluZSBNQU5BX0lOVFJfTU9EUl9VU0VDX0RFRiAwXG4gI2RlZmluZSBNQU5BX0lOVFJfTU9EUl9DT01QX0RFRiAwXG5AQCAtNzksNyArODIsNyBAQCBlbnVtIFRSSV9TVEFURSB7XG4gI2RlZmluZSBNQU5BX0lOVFJfTU9EUl9DT01QX01BU0sgICBHRU5NQVNLKDIzLCAxNilcbiBcbiAvKiBVcGRhdGUgdGhpcyBjb3VudCB3aGVuZXZlciB0aGUgcmVzcGVjdGl2ZSBzdHJ1Y3R1cmVzIGFyZSBjaGFuZ2VkICovXG4tI2RlZmluZSBNQU5BX1NUQVRTX1JYX0NPVU5UICg2ICsgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxKVxuKyNkZWZpbmUgTUFOQV9TVEFUU19SWF9DT1VOVCAoNiArIE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMSlcbiAjZGVmaW5lIE1BTkFfU1RBVFNfVFhfQ09VTlQgMTFcbiBcbiAjZGVmaW5lIE1BTkFfUlhfRlJBR19BTElHTk1FTlQgNjRcbkBAIC05MSw3ICs5NCw3IEBAIHN0cnVjdCBtYW5hX3N0YXRzX3J4IHtcbiBcdHU2NCB4ZHBfdHg7XG4gXHR1NjQgeGRwX3JlZGlyZWN0O1xuIFx0dTY0IHBrdF9sZW4wX2Vycjtcbi1cdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMV07XG4rXHR1NjQgY29hbGVzY2VkX2NxZVtNQU5BX0NRRV9DT0FMX1BLVFNfOCAtIDFdO1xuIFx0c3RydWN0IHU2NF9zdGF0c19zeW5jIHN5bmNwO1xuIH07XG4gXG5AQCAtMjAyLDYgKzIwNSw3IEBAIGVudW0gbWFuYV9jcWVfdHlwZSB7XG4gXHRDUUVfUlhfQ09BTEVTQ0VEXzRcdFx0PSAyLFxuIFx0Q1FFX1JYX09CSkVDVF9GRU5DRVx0XHQ9IDMsXG4gXHRDUUVfUlhfVFJVTkNBVEVEXHRcdD0gNCxcbitcdENRRV9SWF9DT0FMRVNDRURfOFx0XHQ9IDcsXG4gXG4gXHRDUUVfVFhfT0tBWVx0XHRcdD0gMzIsXG4gXHRDUUVfVFhfU0FfRFJPUFx0XHRcdD0gMzMsXG5AQCAtMjM4LDEyICsyNDIsMjYgQEAgc3RydWN0IG1hbmFfY3FlX2hlYWRlciB7XG4gI2RlZmluZSBNQU5BX0hBU0hfTDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuIFx0KE5ESVNfSEFTSF9UQ1BfSVBWNCB8IE5ESVNfSEFTSF9VRFBfSVBWNCB8IE5ESVNfSEFTSF9UQ1BfSVBWNiB8ICAgICAgXFxcbiBcdCBORElTX0hBU0hfVURQX0lQVjYgfCBORElTX0hBU0hfVENQX0lQVjZfRVggfCBORElTX0hBU0hfVURQX0lQVjZfRVgpXG4rI2RlZmluZSBNQU5BX0hBU0hfRU5BQkxFX1NVUFBPUlRFRCBcXFxuK1x0KE5ESVNfSEFTSF9JUFY0IHwgTkRJU19IQVNIX1RDUF9JUFY0IHwgTkRJU19IQVNIX1VEUF9JUFY0IHwgXFxcbitcdCBORElTX0hBU0hfSVBWNiB8IE5ESVNfSEFTSF9UQ1BfSVBWNiB8IE5ESVNfSEFTSF9VRFBfSVBWNilcbitcbisvKiBSZWFkIFBQSSBpbiB0d28gZGlmZmVyZW50IGxheW91dHMgYmFzZWQgb24gY3FlX3R5cGUgKi9cbit1bmlvbiBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyB7XG4rXHRzdHJ1Y3Qge1xuK1x0XHR1MzIgcGt0X2xlbiA6IDE2O1xuK1x0XHR1MzIgcmVzZXJ2ZWQxIDogMTY7XG4rXHRcdHUzMiByZXNlcnZlZDI7XG4rXHRcdHUzMiBwa3RfaGFzaDtcbitcdH07XG4gXG4tc3RydWN0IG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHtcbi1cdHUzMiBwa3RfbGVuXHQ6IDE2O1xuLVx0dTMyIHJlc2VydmVkMVx0OiAxNjtcbi1cdHUzMiByZXNlcnZlZDI7XG4tXHR1MzIgcGt0X2hhc2g7XG4rXHQvKiBVcCB0byB0d28gcGt0cyBwZXIgUFBJIGVudHJ5ICovXG4rXHRzdHJ1Y3Qge1xuK1x0XHR1MzIgcGt0X2hhc2gwO1xuK1x0XHR1MTYgcGt0X2xlbjA7XG4rXHRcdHUxNiBwa3RfbGVuMTtcbitcdFx0dTMyIHBrdF9oYXNoMTtcbitcdH07XG4gfTsgLyogSFcgREFUQSAqL1xuIFxuIC8qIFJlY2VpdmUgY29tcGxldGlvbiBPT0IgKi9cbkBAIC0yNjQsNyArMjgyLDcgQEAgc3RydWN0IG1hbmFfcnhjb21wX29vYiB7XG4gXHR1MzIgcnhfdWRwX2NzdW1fZmFpbFx0XHQ6IDE7XG4gXHR1MzIgcmVzZXJ2ZWQyXHRcdFx0OiAxO1xuIFxuLVx0c3RydWN0IG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHBwaVtNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSV07XG4rXHR1bmlvbiBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyBwcGlbTUFOQV9SWENPTVBfT09CX05VTV9QUEldO1xuIFxuIFx0dTMyIHJ4X3dxZV9vZmZzZXQ7XG4gfTsgLyogSFcgREFUQSAqL1xuQEAgLTYwNyw2ICs2MjUsNyBAQCBzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQge1xuIFx0Ym9vbCBwb3J0X3N0X3NhdmU7IC8qIFNhdmVkIHBvcnQgc3RhdGUgKi9cbiBcbiBcdHU4IGNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcbitcdHU4IGNxZThfY29hbGVzY2luZ19lbmFibGU7XG4gXHR1MzIgY3FlX2NvYWxlc2NpbmdfdGltZW91dF9ucztcbiBcbiBcdC8qIEludGVycnVwdCBtb2RlcmF0aW9uIHNldHRpbmdzICovXG5AQCAtNzUxLDYgKzc3MCw4IEBAIHN0cnVjdCBtYW5hX3F1ZXJ5X2RldmljZV9jZmdfcmVxIHtcbiBcdHUzMiByZXNlcnZlZDtcbiB9OyAvKiBIVyBEQVRBICovXG4gXG4rI2RlZmluZSBNQU5BX1BGX0ZMQUdfMV9DUUVfOF9DT0FMRVNDSU5HX1NVUFBPUlRFRCBCSVQoNSlcbitcbiBzdHJ1Y3QgbWFuYV9xdWVyeV9kZXZpY2VfY2ZnX3Jlc3Age1xuIFx0c3RydWN0IGdkbWFfcmVzcF9oZHIgaGRyO1xuIFxuQEAgLTk4Niw3ICsxMDA3LDEwIEBAIHN0cnVjdCBtYW5hX2NmZ19yeF9zdGVlcl9yZXFfdjIge1xuIFx0bWFuYV9oYW5kbGVfdCBkZWZhdWx0X3J4b2JqO1xuIFx0dTggaGFzaGtleVtNQU5BX0hBU0hfS0VZX1NJWkVdO1xuIFx0dTggY3FlX2NvYWxlc2NpbmdfZW5hYmxlO1xuLVx0dTggcmVzZXJ2ZWQyWzddO1xuK1x0dTggcmVzZXJ2ZWQyWzNdO1xuK1x0dTE2IHJzc19oYXNoX3R5cGVzO1xuK1x0dTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTsgLyogdjUgbWVzc2FnZSAqL1xuK1x0dTggcmVzZXJ2ZWQzO1xuIFx0bWFuYV9oYW5kbGVfdCBpbmRpcl90YWJbXSBfX2NvdW50ZWRfYnkobnVtX2luZGlyX2VudHJpZXMpO1xuIH07IC8qIEhXIERBVEEgKi9cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA2OjE5OjQ0LjgzNzQ4MjM0M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNTgwMjcyMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNQU5BIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggZm9yIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIuIEl0J3MgYWRkaW5nIHN1cHBvcnQgZm9yIDgtcGFja2V0IGNvYWxlc2NpbmcgaW4gdGhlIENvbXBsZXRpb24gUXVldWUgRW50cnkgKENRRSksIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGUgY2hhbmdlcyBhcmUgc3ByZWFkIGFjcm9zcyBgbWFuYV9lbi5jYCwgYG1hbmFfZXRodG9vbC5jYCwgYGdkbWEuaGAsIGFuZCBgbWFuYS5oYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHZpYWJsZSB0aGlzIGlzIHRvIHRlc3QuXG5cbkZpcnN0LCB0aGUgZHJpdmVyJ3MgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudD8gTUFOQSBpcyB1c3VhbGx5IGEgU21hcnROSUMsIHNwZWNpZmljIHRvIE1pY3Jvc29mdCBBenVyZSwgd2hpY2ggc3VnZ2VzdHMgaXQgbWlnaHQgcmVseSBvbiBwaHlzaWNhbCBoYXJkd2FyZS4gSSBjYW4ndCByZWNhbGwgc2VlaW5nIGFueSBlbXVsYXRpb24gZm9yIGl0IGluIHZhbmlsbGEgUUVNVS4gVGhhdCdzIGEgY3JpdGljYWwgZmlyc3QgaHVyZGxlLlxuXG5MZXQgbWUgY2xhcmlmeSDigJMgaXMgdGhlcmUgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBvZiBNQU5BIGF0IGFsbCwgb3IgaXMgaXQgc3RyaWN0bHkgYSBwaHlzaWNhbCBvciBBenVyZS1zcGVjaWZpYyBkZXZpY2U/IFJpZ2h0LCBpdOKAmXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIsIGEgUENJIGRldmljZSwgc28gaWYgdGhlcmUncyBubyBlbXVsYXRpb24sIHRoZSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50IHdvbid0IHdvcmsuIFRoZSBmYWN0IGl0J3MgYSBQQ0kgZGV2aWNlIHRoYXQncyBub3QgZW11bGF0ZWQgbWVhbnMgZnV6emluZyBpcyB1bmxpa2VseSB0byB3b3JrIGluIHRoZSBzdGFuZGFyZCBlbnZpcm9ubWVudC5cblxuTGV0IG1lIHZlcmlmeSB0aGF0IE1BTkEgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkZXZpY2UsIG5vdCBlbXVsYXRlZCBieSBRRU1VLiBUaGUgZG9jdW1lbnRhdGlvbiBtZW50aW9ucyB0aGF0IGNvZGUgaW4gZHJpdmVycyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBhbmQgYGFtZGdwdWAgd2hpY2ggcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIGlzbid0IGVtdWxhdGVkLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGNhc2UgaGVyZS5cblxuU28sIGVpdGhlciBJIG5lZWQgdG8gc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSBRRU1VIHNvdXJjZSBjb2RlIHRvIGV4cGxpY2l0bHkgY29uZmlybSBpdCdzIG5vdCBlbXVsYXRlZCwgb3IgSSdtIGp1c3QgZ29pbmcgdG8gaGF2ZSB0byBtYWtlIHRoZSBlZHVjYXRlZCBhc3N1bXB0aW9uIHRoYXQgaXQgaXNuJ3QuIFRoZSBkcml2ZXIgaXRzZWxmIGlzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9gIHdoaWNoIG1lYW5zIGl0J3MgYSBQQ0kgZHJpdmVyLiBTcGVjaWZpY2FsbHksIEknbGwgbmVlZCB0byBmb2N1cyBvbiBgbWFuYV9lbi5jYC4gVGhpcyBtZWFucyBJIG5lZWQgdG8gZmluZCBhIHdvcmthcm91bmQgdG8gdGVzdCB0aGUgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMDMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNjoxOTo1MS44OTU1MTE3NDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI0ODc4NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjU2OT1zdGF0aWMgaW50IF9faW5pdCBtYW5hX2RyaXZlcl9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI1Nzk6XFx0ZXJyID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2bWFuYV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1ODAtXFx0aWYgKGVycikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNjoxOTo1MS45MzgwMDU0NDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTA5NTgxMjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBBc3Nlc3NtZW50OiBNQU5BIERyaXZlcioqXG5cbk9rYXksIHNvIHRoaXMgaXMgZGVmaW5pdGVseSBhIFBDSSBkcml2ZXIuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gYXNzZXNzIGl0cyBmdXp6YWJpbGl0eS4gSXMgdGhpcyBzb21ldGhpbmcgdGhhdCdzIGVtdWxhdGVkIHdpdGhpbiBRRU1VLCBzaW5jZSB0aGF0J3Mgb3VyIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudD8gTm8sIGl0J3Mgbm90LiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIFNtYXJ0TklDIOKAkyBzcGVjaWZpY2FsbHksIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyLCBvciBNQU5BLiAgVGhhdCBpbW1lZGlhdGVseSBmbGFncyBhIGNvbmNlcm4uICBXZSBhcmUgZ29pbmcgdG8gbmVlZCBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG9yIEF6dXJlIFZNcyB0byBpbnRlcmFjdCB3aXRoIHRoaXMsIGFuZCB3ZSBkb24ndCB0eXBpY2FsbHkgcnVuIEF6dXJlIFZNcyB3aXRoaW4gc3RhbmRhcmQgUUVNVSBmb3IgZnV6emluZy5cblxuR2l2ZW4gdGhhdCByZXN0cmljdGlvbiwgSSBzaG91bGQgcXVpY2tseSBkb3VibGUtY2hlY2sg4oCTIGlzIHRoZXJlIGFueSBvdGhlciBwb3NzaWJsZSBwYXRoIHRvIHRoaXMgdGhhdCBieXBhc3NlcyB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jeT8gTm9wZS4gSXQncyBhIGhhcmR3YXJlIGRyaXZlciBmb3IgTUFOQSwgYW5kIHRoYXQncyB0aGUgb25seSB3YXkgdG8gZ2V0IGF0IGl0LlxuXG5UaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgY2xlYXI6IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJJ2xsIHJldHVybiB0aGF0IHZhbHVlLiBNeSByZWFzb25pbmcgaXMgc29saWQg4oCTIGl0J3MgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIChNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyKSBhbmQgaXQncyBub3QgZW11bGF0ZWQgaW4gdGhlIHN0YW5kYXJkIFFFTVUgc2V0dXAgdGhhdCB3ZSB1c2UgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzAwLCJPdXRwdXRUb2tlbnMiOjk0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA2OjE5OjU2Ljg0NzU4OTE5OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzUyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciB0byBhZGQgc3VwcG9ydCBmb3IgQ1FFIDgtcGFja2V0IGNvYWxlc2NpbmcuIE1BTkEgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBTbWFydE5JQyBkZXZpY2UgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIHNvIHRoaXMgY29kZSBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgYnkgdGhlIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIgdG8gYWRkIHN1cHBvcnQgZm9yIENRRSA4LXBhY2tldCBjb2FsZXNjaW5nLiBNQU5BIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgU21hcnROSUMgZGV2aWNlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBzbyB0aGlzIGNvZGUgY2Fubm90IGJlIHJlYWNoZWQgb3IgdGVzdGVkIGJ5IHRoZSBmdXp6ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowdddvw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-02 06:02:44 +0000 UTC FinishedAt: 2026-08-02 06:19:58 +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+CgkJCTx0ZD4yMDI2LzA4LzAyIDA2OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIgdG8gYWRkIHN1cHBvcnQgZm9yIENRRSA4LXBhY2tldCBjb2FsZXNjaW5nLiBNQU5BIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgU21hcnROSUMgZGV2aWNlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBzbyB0aGlzIGNvZGUgY2Fubm90IGJlIHJlYWNoZWQgb3IgdGVzdGVkIGJ5IHRoZSBmdXp6ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA2OjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZDdhNDAxMDBiNzNmN2IwODE5ZWRiZWFlODRlZDhjNTRiN2Y3YjI3ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIgMDY6MTk6NDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jXG5pbmRleCBhODBjZjBiYzQ2MmNmLi5hM2MyOTA3N2RhZjVmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmNcbkBAIC0xMjQxLDYgJiM0MzsxMjQxLDkgQEAgaW50IG1hbmFfZ2RfcXVlcnlfZGV2aWNlX2NmZyhzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgdTMyIHByb3RvX21ham9yX3ZlcixcbiBcdFx0cmV0dXJuIGVycjtcbiBcdH1cbiBcbiYjNDM7XHRnYy1cdTAwM2VjcWU4X2NvYWxlc2Npbmdfc3VwID0gISEocmVzcC5wZl9jYXBfZmxhZ3MxIFx1MDAyNlxuJiM0MztcdFx0XHRcdCAgICAgTUFOQV9QRl9GTEFHXzFfQ1FFXzhfQ09BTEVTQ0lOR19TVVBQT1JURUQpO1xuJiM0MztcbiBcdCptYXhfbnVtX3Zwb3J0cyA9IHJlc3AubWF4X251bV92cG9ydHM7XG4gXG4gXHRpZiAocmVzcC5oZHIucmVzcG9uc2UubXNnX3ZlcnNpb24gXHUwMDNlPSBHRE1BX01FU1NBR0VfVjIpIHtcbkBAIC0xNDI2LDcgJiM0MzsxNDI5LDExIEBAIHN0YXRpYyBpbnQgbWFuYV9jZmdfdnBvcnRfc3RlZXJpbmcoc3RydWN0IG1hbmFfcG9ydF9jb250ZXh0ICphcGMsXG4gXHRtYW5hX2dkX2luaXRfcmVxX2hkcihcdTAwMjZyZXEtXHUwMDNlaGRyLCBNQU5BX0NPTkZJR19WUE9SVF9SWCwgcmVxX2J1Zl9zaXplLFxuIFx0XHRcdCAgICAgc2l6ZW9mKHJlc3ApKTtcbiBcbi1cdHJlcS1cdTAwM2VoZHIucmVxLm1zZ192ZXJzaW9uID0gR0RNQV9NRVNTQUdFX1YyO1xuJiM0MztcdC8qIFJlcXVlc3QgXHUwMDI2IHJlc3BvbnNlIHZlcnNpb25zIGNhbiBiZSBkaWZmZXJlbnQuXG4mIzQzO1x0ICogSFcgY2FuIGhhbmRsZSBuZXdlciBtc2cgdmVyc2lvbnMsIGJ5IHNraXBwaW5nXG4mIzQzO1x0ICogbmV3IGZpZWxkcy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRyZXEtXHUwMDNlaGRyLnJlcS5tc2dfdmVyc2lvbiA9IEdETUFfTUVTU0FHRV9WNTtcbiBcdHJlcS1cdTAwM2VoZHIucmVzcC5tc2dfdmVyc2lvbiA9IEdETUFfTUVTU0FHRV9WMjtcbiBcbiBcdHJlcS1cdTAwM2V2cG9ydCA9IGFwYy1cdTAwM2Vwb3J0X2hhbmRsZTtcbkBAIC0xNDQwLDggJiM0MzsxNDQ3LDEzIEBAIHN0YXRpYyBpbnQgbWFuYV9jZmdfdnBvcnRfc3RlZXJpbmcoc3RydWN0IG1hbmFfcG9ydF9jb250ZXh0ICphcGMsXG4gXHRyZXEtXHUwMDNldXBkYXRlX2luZGlyX3RhYiA9IHVwZGF0ZV90YWI7XG4gXHRyZXEtXHUwMDNlZGVmYXVsdF9yeG9iaiA9IGFwYy1cdTAwM2VkZWZhdWx0X3J4b2JqO1xuIFxuLVx0aWYgKHJ4ICE9IFRSSV9TVEFURV9GQUxTRSlcbiYjNDM7XHQvKiBSZXF1ZXN0LW1zZyB2NSByZXF1aXJlcyB0aGlzIGZpZWxkICovXG4mIzQzO1x0cmVxLVx1MDAzZXJzc19oYXNoX3R5cGVzID0gTUFOQV9IQVNIX0VOQUJMRV9TVVBQT1JURUQ7XG4mIzQzO1xuJiM0MztcdGlmIChyeCAhPSBUUklfU1RBVEVfRkFMU0UpIHtcbiBcdFx0cmVxLVx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZSA9IGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGU7XG4mIzQzO1x0XHRyZXEtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9IGFwYy1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlO1xuJiM0MztcdH1cbiBcbiBcdGlmICh1cGRhdGVfa2V5KVxuIFx0XHRtZW1jcHkoXHUwMDI2cmVxLVx1MDAzZWhhc2hrZXksIGFwYy1cdTAwM2VoYXNoa2V5LCBNQU5BX0hBU0hfS0VZX1NJWkUpO1xuQEAgLTIwNDYsMTYgJiM0MzsyMDU4LDE0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbWFuYV9idWlsZF9za2Ioc3RydWN0IG1hbmFfcnhxICpyeHEsIHZvaWQgKmJ1Zl92YSxcbiBcbiBzdGF0aWMgdm9pZCBtYW5hX3J4X3NrYih2b2lkICpidWZfdmEsIGJvb2wgZnJvbV9wb29sLFxuIFx0XHRcdHN0cnVjdCBtYW5hX3J4Y29tcF9vb2IgKmNxZSwgc3RydWN0IG1hbmFfcnhxICpyeHEsXG4tXHRcdFx0aW50IGkpXG4mIzQzO1x0XHRcdHUzMiBwa3RfbGVuLCB1MzIgcGt0X2hhc2gpXG4ge1xuIFx0c3RydWN0IG1hbmFfc3RhdHNfcnggKnJ4X3N0YXRzID0gXHUwMDI2cnhxLVx1MDAzZXN0YXRzO1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSByeHEtXHUwMDNlbmRldjtcbi1cdHVpbnQgcGt0X2xlbiA9IGNxZS1cdTAwM2VwcGlbaV0ucGt0X2xlbjtcbiBcdHUxNiByeHFfaWR4ID0gcnhxLVx1MDAzZXJ4cV9pZHg7XG4gXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGk7XG4gXHRzdHJ1Y3QgeGRwX2J1ZmYgeGRwID0ge307XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLVx0dTMyIGhhc2hfdmFsdWU7XG4gXHR1MzIgYWN0O1xuIFxuIFx0cnhxLVx1MDAzZXJ4X2NxLndvcmtfZG9uZSYjNDM7JiM0Mzs7XG5AQCAtMjA5NCwxMiAmIzQzOzIxMDQsMTAgQEAgc3RhdGljIHZvaWQgbWFuYV9yeF9za2Iodm9pZCAqYnVmX3ZhLCBib29sIGZyb21fcG9vbCxcbiBcdH1cbiBcbiBcdGlmIChjcWUtXHUwMDNlcnhfaGFzaHR5cGUgIT0gMCBcdTAwMjZcdTAwMjYgKG5kZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfUlhIQVNIKSkge1xuLVx0XHRoYXNoX3ZhbHVlID0gY3FlLVx1MDAzZXBwaVtpXS5wa3RfaGFzaDtcbi1cbiBcdFx0aWYgKGNxZS1cdTAwM2VyeF9oYXNodHlwZSBcdTAwMjYgTUFOQV9IQVNIX0w0KVxuLVx0XHRcdHNrYl9zZXRfaGFzaChza2IsIGhhc2hfdmFsdWUsIFBLVF9IQVNIX1RZUEVfTDQpO1xuJiM0MztcdFx0XHRza2Jfc2V0X2hhc2goc2tiLCBwa3RfaGFzaCwgUEtUX0hBU0hfVFlQRV9MNCk7XG4gXHRcdGVsc2Vcbi1cdFx0XHRza2Jfc2V0X2hhc2goc2tiLCBoYXNoX3ZhbHVlLCBQS1RfSEFTSF9UWVBFX0wzKTtcbiYjNDM7XHRcdFx0c2tiX3NldF9oYXNoKHNrYiwgcGt0X2hhc2gsIFBLVF9IQVNIX1RZUEVfTDMpO1xuIFx0fVxuIFxuIFx0aWYgKGNxZS1cdTAwM2VyeF92bGFudGFnX3ByZXNlbnQpIHtcbkBAIC0yMjQwLDYgJiM0MzsyMjQ4LDQzIEBAIHN0YXRpYyB2b2lkIG1hbmFfcmVmaWxsX3J4X29vYihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtYW5hX3J4cSAqcnhxLFxuIFx0cnhvb2ItXHUwMDNlZG1hX3N5bmNfb2Zmc2V0ID0gZG1hX3N5bmNfb2Zmc2V0O1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX29uZV9yeF9wa3Qoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSxcbiYjNDM7XHRcdFx0XHQgICAgc3RydWN0IG1hbmFfcnhjb21wX29vYiAqb29iLFxuJiM0MztcdFx0XHRcdCAgICB1MzIgcGt0bGVuLCB1MzIgcGt0X2hhc2gpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbWFuYV9yZWN2X2J1Zl9vb2IgKnJ4YnVmX29vYjtcbiYjNDM7XHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHJ4cS1cdTAwM2VuZGV2O1xuJiM0MztcdHZvaWQgKm9sZF9idWYgPSBOVUxMO1xuJiM0MztcdGJvb2wgb2xkX2ZwO1xuJiM0MztcbiYjNDM7XHRyeGJ1Zl9vb2IgPSBcdTAwMjZyeHEtXHUwMDNlcnhfb29ic1tyeHEtXHUwMDNlYnVmX2luZGV4XTtcbiYjNDM7XHRXQVJOX09OX09OQ0UocnhidWZfb29iLVx1MDAzZXdxZV9pbmYud3FlX3NpemVfaW5fYnUgIT0gMSk7XG4mIzQzO1xuJiM0MztcdGlmICh1bmxpa2VseShwa3RsZW4gXHUwMDNlIHJ4cS1cdTAwM2VkYXRhc2l6ZSkpIHtcbiYjNDM7XHRcdC8qIEluY3JlYXNlIGl0IGV2ZW4gaWYgbWFuYV9yeF9za2IoKSBpc24mIzM5O3QgY2FsbGVkLiAqL1xuJiM0MztcdFx0cnhxLVx1MDAzZXJ4X2NxLndvcmtfZG9uZSYjNDM7JiM0Mzs7XG4mIzQzO1xuJiM0MztcdFx0JiM0MzsmIzQzO25kZXYtXHUwMDNlc3RhdHMucnhfZHJvcHBlZDtcbiYjNDM7XHRcdG5ldGRldl93YXJuX29uY2UobmRldixcbiYjNDM7XHRcdFx0XHQgXCYjMzQ7RHJvcHBlZCBvdmVyc2l6ZWQgUlggcGFja2V0OiBsZW49JXUsIGRhdGFzaXplPSV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCBwa3RsZW4sIHJ4cS1cdTAwM2VkYXRhc2l6ZSk7XG4mIzQzO1xuJiM0MztcdFx0LyogUmV1c2UgdGhlIFJYIGJ1ZmZlciBzaW5jZSByeGJ1Zl9vb2IgaXMgdW5jaGFuZ2VkLiAqL1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRtYW5hX3JlZmlsbF9yeF9vb2IoZGV2LCByeHEsIHJ4YnVmX29vYiwgcGt0bGVuLFxuJiM0MztcdFx0XHRcdCAgIFx1MDAyNm9sZF9idWYsIFx1MDAyNm9sZF9mcCk7XG4mIzQzO1xuJiM0MztcdFx0LyogVW5zdWNjZXNzZnVsIHJlZmlsbCB3aWxsIGhhdmUgb2xkX2J1ZiA9PSBOVUxMLlxuJiM0MztcdFx0ICogSW4gdGhpcyBjYXNlLCBtYW5hX3J4X3NrYigpIHdpbGwgZHJvcCB0aGUgcGFja2V0LlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRtYW5hX3J4X3NrYihvbGRfYnVmLCBvbGRfZnAsIG9vYiwgcnhxLCBwa3RsZW4sIHBrdF9oYXNoKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdG1hbmFfbW92ZV93cV90YWlsKHJ4cS1cdTAwM2VnZG1hX3JxLCByeGJ1Zl9vb2ItXHUwMDNld3FlX2luZi53cWVfc2l6ZV9pbl9idSk7XG4mIzQzO1xuJiM0MztcdG1hbmFfcG9zdF9wa3RfcnhxKHJ4cSk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLFxuIFx0XHRcdFx0c3RydWN0IGdkbWFfY29tcCAqY3FlKVxuIHtcbkBAIC0yMjQ5LDEwICYjNDM7MjI5NCwxMCBAQCBzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3NfcnhfY3FlKHN0cnVjdCBtYW5hX3J4cSAqcnhxLCBzdHJ1Y3QgbWFuYV9jcSAqY3EsXG4gXHRzdHJ1Y3QgbWFuYV9yZWN2X2J1Zl9vb2IgKnJ4YnVmX29vYjtcbiBcdHN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCAqYXBjO1xuIFx0c3RydWN0IGRldmljZSAqZGV2ID0gZ2MtXHUwMDNlZGV2O1xuJiM0MztcdGJvb2wgY29hbGVzY2VkXzggPSBmYWxzZTtcbiBcdGJvb2wgY29hbGVzY2VkID0gZmFsc2U7XG4tXHR2b2lkICpvbGRfYnVmID0gTlVMTDtcbi1cdHUzMiBjdXJyLCBwa3RsZW47XG4tXHRib29sIG9sZF9mcDtcbiYjNDM7XHR1MzIgcGt0bGVuO1xuJiM0MztcdGludCBwa3RfaTtcbiBcdGludCBpO1xuIFxuIFx0YXBjID0gbmV0ZGV2X3ByaXYobmRldik7XG5AQCAtMjI3NSw2ICYjNDM7MjMyMCwxMSBAQCBzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3NfcnhfY3FlKHN0cnVjdCBtYW5hX3J4cSAqcnhxLCBzdHJ1Y3QgbWFuYV9jcSAqY3EsXG4gXHRcdGNvYWxlc2NlZCA9IHRydWU7XG4gXHRcdGJyZWFrO1xuIFxuJiM0MztcdGNhc2UgQ1FFX1JYX0NPQUxFU0NFRF84OlxuJiM0MztcdFx0Y29hbGVzY2VkID0gdHJ1ZTtcbiYjNDM7XHRcdGNvYWxlc2NlZF84ID0gdHJ1ZTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcbiBcdGNhc2UgQ1FFX1JYX09CSkVDVF9GRU5DRTpcbiBcdFx0Y29tcGxldGUoXHUwMDI2cnhxLVx1MDAzZWZlbmNlX2V2ZW50KTtcbiBcdFx0cmV0dXJuO1xuQEAgLTIyODYsNTQgJiM0MzsyMzM2LDQ4IEBAIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSxcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuJiM0MztcdHBrdF9pID0gMDtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJOyBpJiM0MzsmIzQzOykge1xuLVx0XHRvbGRfYnVmID0gTlVMTDtcbi1cdFx0cGt0bGVuID0gb29iLVx1MDAzZXBwaVtpXS5wa3RfbGVuO1xuLVx0XHRpZiAocGt0bGVuID09IDApXG4tXHRcdFx0YnJlYWs7XG4tXG4tXHRcdGN1cnIgPSByeHEtXHUwMDNlYnVmX2luZGV4O1xuLVx0XHRyeGJ1Zl9vb2IgPSBcdTAwMjZyeHEtXHUwMDNlcnhfb29ic1tjdXJyXTtcbi1cdFx0V0FSTl9PTl9PTkNFKHJ4YnVmX29vYi1cdTAwM2V3cWVfaW5mLndxZV9zaXplX2luX2J1ICE9IDEpO1xuLVxuLVx0XHRpZiAodW5saWtlbHkocGt0bGVuIFx1MDAzZSByeHEtXHUwMDNlZGF0YXNpemUpKSB7XG4tXHRcdFx0LyogSW5jcmVhc2UgaXQgZXZlbiBpZiBtYW5hX3J4X3NrYigpIGlzbiYjMzk7dCBjYWxsZWQuICovXG4tXHRcdFx0cnhxLVx1MDAzZXJ4X2NxLndvcmtfZG9uZSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHR1MzIgcGt0X2hhc2g7XG4gXG4tXHRcdFx0JiM0MzsmIzQzO25kZXYtXHUwMDNlc3RhdHMucnhfZHJvcHBlZDtcbi1cdFx0XHRuZXRkZXZfd2Fybl9vbmNlKG5kZXYsXG4tXHRcdFx0XHRcJiMzNDtEcm9wcGVkIG92ZXJzaXplZCBSWCBwYWNrZXQ6IGxlbj0ldSwgZGF0YXNpemU9JXVcXG5cJiMzNDssXG4tXHRcdFx0XHRwa3RsZW4sIHJ4cS1cdTAwM2VkYXRhc2l6ZSk7XG4tXG4tXHRcdFx0LyogUmV1c2UgdGhlIFJYIGJ1ZmZlciBzaW5jZSByeGJ1Zl9vb2IgaXMgdW5jaGFuZ2VkLiAqL1xuJiM0MztcdFx0aWYgKGNvYWxlc2NlZF84KSB7XG4mIzQzO1x0XHRcdC8qIDgtcGt0IG1vZGU6IDIgcGFja2V0cyBwZXIgUFBJIGVudHJ5ICovXG4mIzQzO1x0XHRcdHBrdGxlbiA9IG9vYi1cdTAwM2VwcGlbaV0ucGt0X2xlbjA7XG4mIzQzO1x0XHRcdHBrdF9oYXNoID0gb29iLVx1MDAzZXBwaVtpXS5wa3RfaGFzaDA7XG4gXHRcdH0gZWxzZSB7XG4tXG4tXHRcdFx0bWFuYV9yZWZpbGxfcnhfb29iKGRldiwgcnhxLCByeGJ1Zl9vb2IsIHBrdGxlbixcbi1cdFx0XHRcdFx0ICAgXHUwMDI2b2xkX2J1ZiwgXHUwMDI2b2xkX2ZwKTtcbi1cbi1cdFx0XHQvKiBVbnN1Y2Nlc3NmdWwgcmVmaWxsIHdpbGwgaGF2ZSBvbGRfYnVmID09IE5VTEwuXG4tXHRcdFx0ICogSW4gdGhpcyBjYXNlLCBtYW5hX3J4X3NrYigpIHdpbGwgZHJvcCB0aGUgcGFja2V0LlxuLVx0XHRcdCAqL1xuLVx0XHRcdG1hbmFfcnhfc2tiKG9sZF9idWYsIG9sZF9mcCwgb29iLCByeHEsIGkpO1xuJiM0MztcdFx0XHRwa3RsZW4gPSBvb2ItXHUwMDNlcHBpW2ldLnBrdF9sZW47XG4mIzQzO1x0XHRcdHBrdF9oYXNoID0gb29iLVx1MDAzZXBwaVtpXS5wa3RfaGFzaDtcbiBcdFx0fVxuJiM0MztcdFx0aWYgKHBrdGxlbiA9PSAwKVxuJiM0MztcdFx0XHRicmVhaztcbiBcbi1cdFx0bWFuYV9tb3ZlX3dxX3RhaWwocnhxLVx1MDAzZWdkbWFfcnEsXG4tXHRcdFx0XHQgIHJ4YnVmX29vYi1cdTAwM2V3cWVfaW5mLndxZV9zaXplX2luX2J1KTtcbi1cbi1cdFx0bWFuYV9wb3N0X3BrdF9yeHEocnhxKTtcbiYjNDM7XHRcdG1hbmFfcHJvY2Vzc19vbmVfcnhfcGt0KGRldiwgcnhxLCBvb2IsIHBrdGxlbiwgcGt0X2hhc2gpO1xuJiM0MztcdFx0cGt0X2kmIzQzOyYjNDM7O1xuIFxuIFx0XHRpZiAoIWNvYWxlc2NlZClcbiBcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHQvKiBQcm9jZXNzIDJuZCBwYWNrZXQgZnJvbSB0aGUgc2FtZSBQUEkgaW4gOC1wa3QgbW9kZSAqL1xuJiM0MztcdFx0aWYgKGNvYWxlc2NlZF84KSB7XG4mIzQzO1x0XHRcdHBrdGxlbiA9IG9vYi1cdTAwM2VwcGlbaV0ucGt0X2xlbjE7XG4mIzQzO1x0XHRcdHBrdF9oYXNoID0gb29iLVx1MDAzZXBwaVtpXS5wa3RfaGFzaDE7XG4mIzQzO1x0XHRcdGlmIChwa3RsZW4gPT0gMClcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRcdG1hbmFfcHJvY2Vzc19vbmVfcnhfcGt0KGRldiwgcnhxLCBvb2IsIHBrdGxlbixcbiYjNDM7XHRcdFx0XHRcdFx0cGt0X2hhc2gpO1xuJiM0MztcdFx0XHRwa3RfaSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4gXHQvKiBDb2xsZWN0IGNvYWxlc2NlZCBDUUUgY291bnQgYmFzZWQgb24gcGFja2V0cyBwcm9jZXNzZWQuXG4tXHQgKiBDb2FsZXNjZWQgQ1FFcyBoYXZlIGF0IGxlYXN0IDIgcGFja2V0cywgc28gaW5kZXggaXMgaSAtIDIuXG4mIzQzO1x0ICogQ29hbGVzY2VkIENRRXMgaGF2ZSBhdCBsZWFzdCAyIHBhY2tldHMsIHNvIGluZGV4IGlzIHBrdF9pIC0gMi5cbiBcdCAqL1xuLVx0aWYgKGkgXHUwMDNlIDEpIHtcbiYjNDM7XHRpZiAocGt0X2kgXHUwMDNlIDEpIHtcbiBcdFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZyeHEtXHUwMDNlc3RhdHMuc3luY3ApO1xuLVx0XHRyeHEtXHUwMDNlc3RhdHMuY29hbGVzY2VkX2NxZVtpIC0gMl0mIzQzOyYjNDM7O1xuJiM0MztcdFx0cnhxLVx1MDAzZXN0YXRzLmNvYWxlc2NlZF9jcWVbcGt0X2kgLSAyXSYjNDM7JiM0Mzs7XG4gXHRcdHU2NF9zdGF0c191cGRhdGVfZW5kKFx1MDAyNnJ4cS1cdTAwM2VzdGF0cy5zeW5jcCk7XG4tXHR9IGVsc2UgaWYgKCFpIFx1MDAyNlx1MDAyNiAhcGt0bGVuKSB7XG4mIzQzO1x0fSBlbHNlIGlmICghcGt0X2kgXHUwMDI2XHUwMDI2ICFwa3RsZW4pIHtcbiBcdFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZyeHEtXHUwMDNlc3RhdHMuc3luY3ApO1xuIFx0XHRyeHEtXHUwMDNlc3RhdHMucGt0X2xlbjBfZXJyJiM0MzsmIzQzOztcbiBcdFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmQoXHUwMDI2cnhxLVx1MDAzZXN0YXRzLnN5bmNwKTtcbkBAIC0zNzYzLDYgJiM0MzszODA3LDcgQEAgc3RhdGljIGludCBtYW5hX3Byb2JlX3BvcnQoc3RydWN0IG1hbmFfY29udGV4dCAqYWMsIGludCBwb3J0X2lkeCxcbiBcdGFwYy1cdTAwM2Vwb3J0X2lkeCA9IHBvcnRfaWR4O1xuIFx0YXBjLVx1MDAzZWxpbmtfY2ZnX2Vycm9yID0gMTtcbiBcdGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPSAwO1xuJiM0MztcdGFwYy1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlID0gMDtcbiBcbiBcdC8qIEluaXRpYWxpemUgaW50ZXJydXB0IG1vZGVyYXRpb24gc2V0dGluZ3MgaWYgc3VwcG9ydGVkIGJ5IEhXICovXG4gXHRpZiAoZ2MtXHUwMDNlcGZfY2FwX2ZsYWdzMSBcdTAwMjYgR0RNQV9QRl9DQVBfRkxBR18xX0RZTl9JTlRFUlJVUFRfTU9ERVJBVElPTikge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmNcbmluZGV4IDllMzFlMjU5NWFlMzIuLjA0Zjg3NzcwN2NjNmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmNcbkBAIC0xNjksNyAmIzQzOzE2OSw3IEBAIHN0YXRpYyB2b2lkIG1hbmFfZ2V0X3N0cmluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBzdHJpbmdzZXQsIHU4ICpkYXRhKVxuIFx0XHRldGh0b29sX3NwcmludGYoXHUwMDI2ZGF0YSwgXCYjMzQ7cnhfJWRfeGRwX3R4XCYjMzQ7LCBpKTtcbiBcdFx0ZXRodG9vbF9zcHJpbnRmKFx1MDAyNmRhdGEsIFwmIzM0O3J4XyVkX3hkcF9yZWRpcmVjdFwmIzM0OywgaSk7XG4gXHRcdGV0aHRvb2xfc3ByaW50ZihcdTAwMjZkYXRhLCBcJiMzNDtyeF8lZF9wa3RfbGVuMF9lcnJcJiMzNDssIGkpO1xuLVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDE7IGomIzQzOyYjNDM7KVxuJiM0MztcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqJiM0MzsmIzQzOylcbiBcdFx0XHRldGh0b29sX3NwcmludGYoXHUwMDI2ZGF0YSwgXCYjMzQ7cnhfJWRfY29hbGVzY2VkX2NxZV8lZFwmIzM0OywgaSwgaiAmIzQzOyAyKTtcbiBcdH1cbiBcbkBAIC0yMDUsNyAmIzQzOzIwNSw3IEBAIHN0YXRpYyB2b2lkIG1hbmFfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHR1NjQgeGRwX2Ryb3A7XG4gXHR1NjQgeGRwX3R4O1xuIFx0dTY0IHBrdF9sZW4wX2Vycjtcbi1cdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMV07XG4mIzQzO1x0dTY0IGNvYWxlc2NlZF9jcWVbTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxXTtcbiBcdHU2NCB0c29fcGFja2V0cztcbiBcdHU2NCB0c29fYnl0ZXM7XG4gXHR1NjQgdHNvX2lubmVyX3BhY2tldHM7XG5AQCAtMjQ1LDcgJiM0MzsyNDUsNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHRcdHhkcF90eCA9IHJ4X3N0YXRzLVx1MDAzZXhkcF90eDtcbiBcdFx0XHR4ZHBfcmVkaXJlY3QgPSByeF9zdGF0cy1cdTAwM2V4ZHBfcmVkaXJlY3Q7XG4gXHRcdFx0cGt0X2xlbjBfZXJyID0gcnhfc3RhdHMtXHUwMDNlcGt0X2xlbjBfZXJyO1xuLVx0XHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaiYjNDM7JiM0MzspXG4mIzQzO1x0XHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMTsgaiYjNDM7JiM0MzspXG4gXHRcdFx0XHRjb2FsZXNjZWRfY3FlW2pdID0gcnhfc3RhdHMtXHUwMDNlY29hbGVzY2VkX2NxZVtqXTtcbiBcdFx0fSB3aGlsZSAodTY0X3N0YXRzX2ZldGNoX3JldHJ5KFx1MDAyNnJ4X3N0YXRzLVx1MDAzZXN5bmNwLCBzdGFydCkpO1xuIFxuQEAgLTI1NSw3ICYjNDM7MjU1LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0ZGF0YVtpJiM0MzsmIzQzO10gPSB4ZHBfdHg7XG4gXHRcdGRhdGFbaSYjNDM7JiM0MztdID0geGRwX3JlZGlyZWN0O1xuIFx0XHRkYXRhW2kmIzQzOyYjNDM7XSA9IHBrdF9sZW4wX2Vycjtcbi1cdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxOyBqJiM0MzsmIzQzOylcbiYjNDM7XHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMTsgaiYjNDM7JiM0MzspXG4gXHRcdFx0ZGF0YVtpJiM0MzsmIzQzO10gPSBjb2FsZXNjZWRfY3FlW2pdO1xuIFx0fVxuIFxuQEAgLTQwOCw2ICYjNDM7NDA4LDcgQEAgc3RhdGljIGludCBtYW5hX2dldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdHN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCAqYXBjID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXG4gXHRrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzID1cbiYjNDM7XHRcdGFwYy1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlID8gTUFOQV9DUUVfQ09BTF9QS1RTXzggOlxuIFx0XHRhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlID8gTUFOQV9SWENPTVBfT09CX05VTV9QUEkgOiAxO1xuIFxuIFx0a2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX25zZWNzID0gYXBjLVx1MDAzZWNxZV9jb2FsZXNjaW5nX3RpbWVvdXRfbnM7XG5AQCAtNDQzLDE1ICYjNDM7NDQ0LDE5IEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdHUxNiBpbnRyX21vZHJfdHhfdXNlYztcbiBcdFx0dTE2IGludHJfbW9kcl90eF9jb21wO1xuIFx0XHR1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7XG4mIzQzO1x0XHR1OCBjcWU4X2NvYWxlc2NpbmdfZW5hYmxlO1xuIFx0XHRib29sIHJ4X2RpbV9lbmFibGVkO1xuIFx0XHRib29sIHR4X2RpbV9lbmFibGVkO1xuIFx0fSBzYXZlZDtcbiBcdGJvb2wgbW9kcl9jaGFuZ2VkID0gZmFsc2U7XG4gXHRib29sIGRpbV9jaGFuZ2VkID0gZmFsc2U7XG4gXHRzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYztcbiYjNDM7XHR1MzIgbWF4X2NxZV9mcmFtZXM7XG4gXHRpbnQgZXJyO1xuIFxuIFx0Z2MgPSBhcGMtXHUwMDNlYWMtXHUwMDNlZ2RtYV9kZXYtXHUwMDNlZ2RtYV9jb250ZXh0O1xuJiM0MztcdG1heF9jcWVfZnJhbWVzID0gZ2MtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX3N1cCA/IE1BTkFfQ1FFX0NPQUxfUEtUU184IDpcbiYjNDM7XHRcdFx0XHRcdFx0ICAgTUFOQV9SWENPTVBfT09CX05VTV9QUEk7XG4gXG4gXHQvKiBCb3RoIHN0YXRpYyBhbmQgZHluYW1pYyBpbnRlcnJ1cHQgbW9kZXJhdGlvbiAoRElNKSByZWx5IG9uIHRoZVxuIFx0ICogc2FtZSBIVyBjYXBhYmlsaXR5IGFkdmVydGlzZWQgYnkgdGhlIFBGLlxuQEAgLTQ2NiwxMCAmIzQzOzQ3MSwxMiBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0fVxuIFxuIFx0aWYgKGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgIT0gMSBcdTAwMjZcdTAwMjZcbi1cdCAgICBrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzICE9IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJKSB7XG4mIzQzO1x0ICAgIGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgIT0gTUFOQV9SWENPTVBfT09CX05VTV9QUEkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgIT0gbWF4X2NxZV9mcmFtZXMpIHtcbiBcdFx0TkxfU0VUX0VSUl9NU0dfRk1UKGV4dGFjayxcbi1cdFx0XHRcdCAgIFwmIzM0O3J4LWZyYW1lcyBtdXN0IGJlIDEgb3IgJXUsIGdvdCAldVwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgICBcJiMzNDtyeC1mcmFtZXMgbXVzdCBiZSAxIG9yICV1JXMsIGdvdCAldVwmIzM0OyxcbiBcdFx0XHRcdCAgIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJLFxuJiM0MztcdFx0XHRcdCAgIGdjLVx1MDAzZWNxZThfY29hbGVzY2luZ19zdXAgPyBcJiMzNDsgb3IgOFwmIzM0OyA6IFwmIzM0O1wmIzM0OyxcbiBcdFx0XHRcdCAgIGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbkBAIC01MTQsOCAmIzQzOzUyMSwxMSBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0c2F2ZWQudHhfZGltX2VuYWJsZWQgPSBhcGMtXHUwMDNldHhfZGltX2VuYWJsZWQ7XG4gXG4gXHRzYXZlZC5jcWVfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlO1xuJiM0MztcdHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcbiBcdGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPVxuLVx0XHRrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzID09IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJO1xuJiM0MztcdFx0a2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX2ZyYW1lcyBcdTAwM2U9IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJO1xuJiM0MztcdGFwYy1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlID1cbiYjNDM7XHRcdGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgPT0gTUFOQV9DUUVfQ09BTF9QS1RTXzg7XG4gXG4gXHRpZiAoIWFwYy1cdTAwM2Vwb3J0X2lzX3VwKSB7XG4gXHRcdFdSSVRFX09OQ0UoYXBjLVx1MDAzZXJ4X2RpbV9lbmFibGVkLCAhIWVjLVx1MDAzZXVzZV9hZGFwdGl2ZV9yeF9jb2FsZXNjZSk7XG5AQCAtNTIzLDcgJiM0Mzs1MzMsOCBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbi1cdGlmIChhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlICE9IHNhdmVkLmNxZV9jb2FsZXNjaW5nX2VuYWJsZSkge1xuJiM0MztcdGlmIChhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlICE9IHNhdmVkLmNxZV9jb2FsZXNjaW5nX2VuYWJsZSB8fFxuJiM0MztcdCAgICBhcGMtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSAhPSBzYXZlZC5jcWU4X2NvYWxlc2NpbmdfZW5hYmxlKSB7XG4gXHRcdC8qIENRRSBjb2FsZXNjaW5nIHNldHRpbmcgaXMgYXBwbGllZCB2aWEgUlNTIGNvbmZpZ3VyYXRpb24uICovXG4gXHRcdGVyciA9IG1hbmFfY29uZmlnX3JzcyhhcGMsIFRSSV9TVEFURV9UUlVFLCBmYWxzZSwgZmFsc2UpO1xuIFx0XHRpZiAoZXJyKSB7XG5AQCAtNTMxLDYgJiM0Mzs1NDIsOCBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHRcdFx0ICAgZXJyKTtcbiBcdFx0XHRhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlID1cbiBcdFx0XHRcdHNhdmVkLmNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcbiYjNDM7XHRcdFx0YXBjLVx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPVxuJiM0MztcdFx0XHRcdHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGU7XG4gXHRcdFx0YXBjLVx1MDAzZWludHJfbW9kcl9yeF91c2VjID0gc2F2ZWQuaW50cl9tb2RyX3J4X3VzZWM7XG4gXHRcdFx0YXBjLVx1MDAzZWludHJfbW9kcl9yeF9jb21wID0gc2F2ZWQuaW50cl9tb2RyX3J4X2NvbXA7XG4gXHRcdFx0YXBjLVx1MDAzZWludHJfbW9kcl90eF91c2VjID0gc2F2ZWQuaW50cl9tb2RyX3R4X3VzZWM7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFuYS9nZG1hLmggYi9pbmNsdWRlL25ldC9tYW5hL2dkbWEuaFxuaW5kZXggODUyOWNlZjBkN2M0NS4uNzBhN2YxZmVlNWQzYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9tYW5hL2dkbWEuaFxuQEAgLTE4Miw2ICYjNDM7MTgyLDcgQEAgc3RydWN0IGdkbWFfZ2VuZXJhbF9yZXEge1xuICNkZWZpbmUgR0RNQV9NRVNTQUdFX1YyIDJcbiAjZGVmaW5lIEdETUFfTUVTU0FHRV9WMyAzXG4gI2RlZmluZSBHRE1BX01FU1NBR0VfVjQgNFxuJiM0MzsjZGVmaW5lIEdETUFfTUVTU0FHRV9WNSA1XG4gXG4gc3RydWN0IGdkbWFfZ2VuZXJhbF9yZXNwIHtcbiBcdHN0cnVjdCBnZG1hX3Jlc3BfaGRyIGhkcjtcbkBAIC00MjgsNiAmIzQzOzQyOSw5IEBAIHN0cnVjdCBnZG1hX2NvbnRleHQge1xuIFx0LyogTDIgTVRVICovXG4gXHR1MTYgYWRhcHRlcl9tdHU7XG4gXG4mIzQzO1x0LyogTklDIHN1cHBvcnRzIENRRSB4OCBjb2FsZXNjaW5nICovXG4mIzQzO1x0Ym9vbCBjcWU4X2NvYWxlc2Npbmdfc3VwO1xuJiM0MztcbiBcdC8qIFRoaXMgbWFwcyBhIENRIGluZGV4IHRvIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUuICovXG4gXHR1bnNpZ25lZCBpbnRcdFx0bWF4X251bV9jcXM7XG4gXHRzdHJ1Y3QgZ2RtYV9xdWV1ZVx0KipjcV90YWJsZTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9tYW5hL21hbmEuaCBiL2luY2x1ZGUvbmV0L21hbmEvbWFuYS5oXG5pbmRleCA0ZDA0MWZiODQzN2Y1Li41MGFjYjZiZjhmMTI1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L21hbmEvbWFuYS5oXG5AQCAtNjIsOSAmIzQzOzYyLDEyIEBAIGVudW0gVFJJX1NUQVRFIHtcbiBcbiAjZGVmaW5lIE1BWF9QT1JUU19JTl9NQU5BX0RFViAyNTZcbiBcbi0vKiBNYXhpbXVtIG51bWJlciBvZiBwYWNrZXRzIHBlciBjb2FsZXNjZWQgQ1FFICovXG4mIzQzOy8qIE1heGltdW0gbnVtYmVyIG9mIFBQSXMgcGVyIGNvYWxlc2NlZCBDUUUgKi9cbiAjZGVmaW5lIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIDRcbiBcbiYjNDM7LyogOC1wa3QgbW9kZSBwYWNrcyB1cCB0byAyIHBhY2tldHMgcGVyIFBQSSBlbnRyeSAqL1xuJiM0MzsjZGVmaW5lIE1BTkFfQ1FFX0NPQUxfUEtUU184IDhcbiYjNDM7XG4gLyogRGVmYXVsdC9tYXggaW50ZXJydXB0IG1vZGVyYXRpb24gc2V0dGluZ3MgKi9cbiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX1VTRUNfREVGIDBcbiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX0NPTVBfREVGIDBcbkBAIC03OSw3ICYjNDM7ODIsNyBAQCBlbnVtIFRSSV9TVEFURSB7XG4gI2RlZmluZSBNQU5BX0lOVFJfTU9EUl9DT01QX01BU0sgICBHRU5NQVNLKDIzLCAxNilcbiBcbiAvKiBVcGRhdGUgdGhpcyBjb3VudCB3aGVuZXZlciB0aGUgcmVzcGVjdGl2ZSBzdHJ1Y3R1cmVzIGFyZSBjaGFuZ2VkICovXG4tI2RlZmluZSBNQU5BX1NUQVRTX1JYX0NPVU5UICg2ICYjNDM7IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMSlcbiYjNDM7I2RlZmluZSBNQU5BX1NUQVRTX1JYX0NPVU5UICg2ICYjNDM7IE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMSlcbiAjZGVmaW5lIE1BTkFfU1RBVFNfVFhfQ09VTlQgMTFcbiBcbiAjZGVmaW5lIE1BTkFfUlhfRlJBR19BTElHTk1FTlQgNjRcbkBAIC05MSw3ICYjNDM7OTQsNyBAQCBzdHJ1Y3QgbWFuYV9zdGF0c19yeCB7XG4gXHR1NjQgeGRwX3R4O1xuIFx0dTY0IHhkcF9yZWRpcmVjdDtcbiBcdHU2NCBwa3RfbGVuMF9lcnI7XG4tXHR1NjQgY29hbGVzY2VkX2NxZVtNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDFdO1xuJiM0MztcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfQ1FFX0NPQUxfUEtUU184IC0gMV07XG4gXHRzdHJ1Y3QgdTY0X3N0YXRzX3N5bmMgc3luY3A7XG4gfTtcbiBcbkBAIC0yMDIsNiAmIzQzOzIwNSw3IEBAIGVudW0gbWFuYV9jcWVfdHlwZSB7XG4gXHRDUUVfUlhfQ09BTEVTQ0VEXzRcdFx0PSAyLFxuIFx0Q1FFX1JYX09CSkVDVF9GRU5DRVx0XHQ9IDMsXG4gXHRDUUVfUlhfVFJVTkNBVEVEXHRcdD0gNCxcbiYjNDM7XHRDUUVfUlhfQ09BTEVTQ0VEXzhcdFx0PSA3LFxuIFxuIFx0Q1FFX1RYX09LQVlcdFx0XHQ9IDMyLFxuIFx0Q1FFX1RYX1NBX0RST1BcdFx0XHQ9IDMzLFxuQEAgLTIzOCwxMiAmIzQzOzI0MiwyNiBAQCBzdHJ1Y3QgbWFuYV9jcWVfaGVhZGVyIHtcbiAjZGVmaW5lIE1BTkFfSEFTSF9MNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gXHQoTkRJU19IQVNIX1RDUF9JUFY0IHwgTkRJU19IQVNIX1VEUF9JUFY0IHwgTkRJU19IQVNIX1RDUF9JUFY2IHwgICAgICBcXFxuIFx0IE5ESVNfSEFTSF9VRFBfSVBWNiB8IE5ESVNfSEFTSF9UQ1BfSVBWNl9FWCB8IE5ESVNfSEFTSF9VRFBfSVBWNl9FWClcbiYjNDM7I2RlZmluZSBNQU5BX0hBU0hfRU5BQkxFX1NVUFBPUlRFRCBcXFxuJiM0MztcdChORElTX0hBU0hfSVBWNCB8IE5ESVNfSEFTSF9UQ1BfSVBWNCB8IE5ESVNfSEFTSF9VRFBfSVBWNCB8IFxcXG4mIzQzO1x0IE5ESVNfSEFTSF9JUFY2IHwgTkRJU19IQVNIX1RDUF9JUFY2IHwgTkRJU19IQVNIX1VEUF9JUFY2KVxuJiM0MztcbiYjNDM7LyogUmVhZCBQUEkgaW4gdHdvIGRpZmZlcmVudCBsYXlvdXRzIGJhc2VkIG9uIGNxZV90eXBlICovXG4mIzQzO3VuaW9uIG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHtcbiYjNDM7XHRzdHJ1Y3Qge1xuJiM0MztcdFx0dTMyIHBrdF9sZW4gOiAxNjtcbiYjNDM7XHRcdHUzMiByZXNlcnZlZDEgOiAxNjtcbiYjNDM7XHRcdHUzMiByZXNlcnZlZDI7XG4mIzQzO1x0XHR1MzIgcGt0X2hhc2g7XG4mIzQzO1x0fTtcbiBcbi1zdHJ1Y3QgbWFuYV9yeGNvbXBfcGVycGt0X2luZm8ge1xuLVx0dTMyIHBrdF9sZW5cdDogMTY7XG4tXHR1MzIgcmVzZXJ2ZWQxXHQ6IDE2O1xuLVx0dTMyIHJlc2VydmVkMjtcbi1cdHUzMiBwa3RfaGFzaDtcbiYjNDM7XHQvKiBVcCB0byB0d28gcGt0cyBwZXIgUFBJIGVudHJ5ICovXG4mIzQzO1x0c3RydWN0IHtcbiYjNDM7XHRcdHUzMiBwa3RfaGFzaDA7XG4mIzQzO1x0XHR1MTYgcGt0X2xlbjA7XG4mIzQzO1x0XHR1MTYgcGt0X2xlbjE7XG4mIzQzO1x0XHR1MzIgcGt0X2hhc2gxO1xuJiM0MztcdH07XG4gfTsgLyogSFcgREFUQSAqL1xuIFxuIC8qIFJlY2VpdmUgY29tcGxldGlvbiBPT0IgKi9cbkBAIC0yNjQsNyAmIzQzOzI4Miw3IEBAIHN0cnVjdCBtYW5hX3J4Y29tcF9vb2Ige1xuIFx0dTMyIHJ4X3VkcF9jc3VtX2ZhaWxcdFx0OiAxO1xuIFx0dTMyIHJlc2VydmVkMlx0XHRcdDogMTtcbiBcbi1cdHN0cnVjdCBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyBwcGlbTUFOQV9SWENPTVBfT09CX05VTV9QUEldO1xuJiM0MztcdHVuaW9uIG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHBwaVtNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSV07XG4gXG4gXHR1MzIgcnhfd3FlX29mZnNldDtcbiB9OyAvKiBIVyBEQVRBICovXG5AQCAtNjA3LDYgJiM0Mzs2MjUsNyBAQCBzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQge1xuIFx0Ym9vbCBwb3J0X3N0X3NhdmU7IC8qIFNhdmVkIHBvcnQgc3RhdGUgKi9cbiBcbiBcdHU4IGNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcbiYjNDM7XHR1OCBjcWU4X2NvYWxlc2NpbmdfZW5hYmxlO1xuIFx0dTMyIGNxZV9jb2FsZXNjaW5nX3RpbWVvdXRfbnM7XG4gXG4gXHQvKiBJbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyAqL1xuQEAgLTc1MSw2ICYjNDM7NzcwLDggQEAgc3RydWN0IG1hbmFfcXVlcnlfZGV2aWNlX2NmZ19yZXEge1xuIFx0dTMyIHJlc2VydmVkO1xuIH07IC8qIEhXIERBVEEgKi9cbiBcbiYjNDM7I2RlZmluZSBNQU5BX1BGX0ZMQUdfMV9DUUVfOF9DT0FMRVNDSU5HX1NVUFBPUlRFRCBCSVQoNSlcbiYjNDM7XG4gc3RydWN0IG1hbmFfcXVlcnlfZGV2aWNlX2NmZ19yZXNwIHtcbiBcdHN0cnVjdCBnZG1hX3Jlc3BfaGRyIGhkcjtcbiBcbkBAIC05ODYsNyAmIzQzOzEwMDcsMTAgQEAgc3RydWN0IG1hbmFfY2ZnX3J4X3N0ZWVyX3JlcV92MiB7XG4gXHRtYW5hX2hhbmRsZV90IGRlZmF1bHRfcnhvYmo7XG4gXHR1OCBoYXNoa2V5W01BTkFfSEFTSF9LRVlfU0laRV07XG4gXHR1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7XG4tXHR1OCByZXNlcnZlZDJbN107XG4mIzQzO1x0dTggcmVzZXJ2ZWQyWzNdO1xuJiM0MztcdHUxNiByc3NfaGFzaF90eXBlcztcbiYjNDM7XHR1OCBjcWU4X2NvYWxlc2NpbmdfZW5hYmxlOyAvKiB2NSBtZXNzYWdlICovXG4mIzQzO1x0dTggcmVzZXJ2ZWQzO1xuIFx0bWFuYV9oYW5kbGVfdCBpbmRpcl90YWJbXSBfX2NvdW50ZWRfYnkobnVtX2luZGlyX2VudHJpZXMpO1xuIH07IC8qIEhXIERBVEEgKi9cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNjoxOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciB0byBhZGQgc3VwcG9ydCBmb3IgQ1FFIDgtcGFja2V0IGNvYWxlc2NpbmcuIE1BTkEgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBTbWFydE5JQyBkZXZpY2UgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIHNvIHRoaXMgY29kZSBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgYnkgdGhlIGZ1enplci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkN2E0MDEwMGI3M2Y3YjA4MTllZGJlYWU4NGVkOGM1NGI3ZjdiMjdmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAwNjoxOTo0MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYwppbmRleCBhODBjZjBiYzQ2MmNmLi5hM2MyOTA3N2RhZjVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jCkBAIC0xMjQxLDYgJiM0MzsxMjQxLDkgQEAgaW50IG1hbmFfZ2RfcXVlcnlfZGV2aWNlX2NmZyhzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYywgdTMyIHByb3RvX21ham9yX3ZlciwKIAkJcmV0dXJuIGVycjsKIAl9CiAKJiM0MzsJZ2MtJmd0O2NxZThfY29hbGVzY2luZ19zdXAgPSAhIShyZXNwLnBmX2NhcF9mbGFnczEgJmFtcDsKJiM0MzsJCQkJICAgICBNQU5BX1BGX0ZMQUdfMV9DUUVfOF9DT0FMRVNDSU5HX1NVUFBPUlRFRCk7CiYjNDM7CiAJKm1heF9udW1fdnBvcnRzID0gcmVzcC5tYXhfbnVtX3Zwb3J0czsKIAogCWlmIChyZXNwLmhkci5yZXNwb25zZS5tc2dfdmVyc2lvbiAmZ3Q7PSBHRE1BX01FU1NBR0VfVjIpIHsKQEAgLTE0MjYsNyAmIzQzOzE0MjksMTEgQEAgc3RhdGljIGludCBtYW5hX2NmZ192cG9ydF9zdGVlcmluZyhzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYywKIAltYW5hX2dkX2luaXRfcmVxX2hkcigmYW1wO3JlcS0mZ3Q7aGRyLCBNQU5BX0NPTkZJR19WUE9SVF9SWCwgcmVxX2J1Zl9zaXplLAogCQkJICAgICBzaXplb2YocmVzcCkpOwogCi0JcmVxLSZndDtoZHIucmVxLm1zZ192ZXJzaW9uID0gR0RNQV9NRVNTQUdFX1YyOwomIzQzOwkvKiBSZXF1ZXN0ICZhbXA7IHJlc3BvbnNlIHZlcnNpb25zIGNhbiBiZSBkaWZmZXJlbnQuCiYjNDM7CSAqIEhXIGNhbiBoYW5kbGUgbmV3ZXIgbXNnIHZlcnNpb25zLCBieSBza2lwcGluZwomIzQzOwkgKiBuZXcgZmllbGRzLgomIzQzOwkgKi8KJiM0MzsJcmVxLSZndDtoZHIucmVxLm1zZ192ZXJzaW9uID0gR0RNQV9NRVNTQUdFX1Y1OwogCXJlcS0mZ3Q7aGRyLnJlc3AubXNnX3ZlcnNpb24gPSBHRE1BX01FU1NBR0VfVjI7CiAKIAlyZXEtJmd0O3Zwb3J0ID0gYXBjLSZndDtwb3J0X2hhbmRsZTsKQEAgLTE0NDAsOCAmIzQzOzE0NDcsMTMgQEAgc3RhdGljIGludCBtYW5hX2NmZ192cG9ydF9zdGVlcmluZyhzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYywKIAlyZXEtJmd0O3VwZGF0ZV9pbmRpcl90YWIgPSB1cGRhdGVfdGFiOwogCXJlcS0mZ3Q7ZGVmYXVsdF9yeG9iaiA9IGFwYy0mZ3Q7ZGVmYXVsdF9yeG9iajsKIAotCWlmIChyeCAhPSBUUklfU1RBVEVfRkFMU0UpCiYjNDM7CS8qIFJlcXVlc3QtbXNnIHY1IHJlcXVpcmVzIHRoaXMgZmllbGQgKi8KJiM0MzsJcmVxLSZndDtyc3NfaGFzaF90eXBlcyA9IE1BTkFfSEFTSF9FTkFCTEVfU1VQUE9SVEVEOwomIzQzOwomIzQzOwlpZiAocnggIT0gVFJJX1NUQVRFX0ZBTFNFKSB7CiAJCXJlcS0mZ3Q7Y3FlX2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLSZndDtjcWVfY29hbGVzY2luZ19lbmFibGU7CiYjNDM7CQlyZXEtJmd0O2NxZThfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtJmd0O2NxZThfY29hbGVzY2luZ19lbmFibGU7CiYjNDM7CX0KIAogCWlmICh1cGRhdGVfa2V5KQogCQltZW1jcHkoJmFtcDtyZXEtJmd0O2hhc2hrZXksIGFwYy0mZ3Q7aGFzaGtleSwgTUFOQV9IQVNIX0tFWV9TSVpFKTsKQEAgLTIwNDYsMTYgJiM0MzsyMDU4LDE0IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbWFuYV9idWlsZF9za2Ioc3RydWN0IG1hbmFfcnhxICpyeHEsIHZvaWQgKmJ1Zl92YSwKIAogc3RhdGljIHZvaWQgbWFuYV9yeF9za2Iodm9pZCAqYnVmX3ZhLCBib29sIGZyb21fcG9vbCwKIAkJCXN0cnVjdCBtYW5hX3J4Y29tcF9vb2IgKmNxZSwgc3RydWN0IG1hbmFfcnhxICpyeHEsCi0JCQlpbnQgaSkKJiM0MzsJCQl1MzIgcGt0X2xlbiwgdTMyIHBrdF9oYXNoKQogewogCXN0cnVjdCBtYW5hX3N0YXRzX3J4ICpyeF9zdGF0cyA9ICZhbXA7cnhxLSZndDtzdGF0czsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHJ4cS0mZ3Q7bmRldjsKLQl1aW50IHBrdF9sZW4gPSBjcWUtJmd0O3BwaVtpXS5wa3RfbGVuOwogCXUxNiByeHFfaWR4ID0gcnhxLSZndDtyeHFfaWR4OwogCXN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaTsKIAlzdHJ1Y3QgeGRwX2J1ZmYgeGRwID0ge307CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKLQl1MzIgaGFzaF92YWx1ZTsKIAl1MzIgYWN0OwogCiAJcnhxLSZndDtyeF9jcS53b3JrX2RvbmUmIzQzOyYjNDM7OwpAQCAtMjA5NCwxMiAmIzQzOzIxMDQsMTAgQEAgc3RhdGljIHZvaWQgbWFuYV9yeF9za2Iodm9pZCAqYnVmX3ZhLCBib29sIGZyb21fcG9vbCwKIAl9CiAKIAlpZiAoY3FlLSZndDtyeF9oYXNodHlwZSAhPSAwICZhbXA7JmFtcDsgKG5kZXYtJmd0O2ZlYXR1cmVzICZhbXA7IE5FVElGX0ZfUlhIQVNIKSkgewotCQloYXNoX3ZhbHVlID0gY3FlLSZndDtwcGlbaV0ucGt0X2hhc2g7Ci0KIAkJaWYgKGNxZS0mZ3Q7cnhfaGFzaHR5cGUgJmFtcDsgTUFOQV9IQVNIX0w0KQotCQkJc2tiX3NldF9oYXNoKHNrYiwgaGFzaF92YWx1ZSwgUEtUX0hBU0hfVFlQRV9MNCk7CiYjNDM7CQkJc2tiX3NldF9oYXNoKHNrYiwgcGt0X2hhc2gsIFBLVF9IQVNIX1RZUEVfTDQpOwogCQllbHNlCi0JCQlza2Jfc2V0X2hhc2goc2tiLCBoYXNoX3ZhbHVlLCBQS1RfSEFTSF9UWVBFX0wzKTsKJiM0MzsJCQlza2Jfc2V0X2hhc2goc2tiLCBwa3RfaGFzaCwgUEtUX0hBU0hfVFlQRV9MMyk7CiAJfQogCiAJaWYgKGNxZS0mZ3Q7cnhfdmxhbnRhZ19wcmVzZW50KSB7CkBAIC0yMjQwLDYgJiM0MzsyMjQ4LDQzIEBAIHN0YXRpYyB2b2lkIG1hbmFfcmVmaWxsX3J4X29vYihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtYW5hX3J4cSAqcnhxLAogCXJ4b29iLSZndDtkbWFfc3luY19vZmZzZXQgPSBkbWFfc3luY19vZmZzZXQ7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtYW5hX3J4cSAqcnhxLAomIzQzOwkJCQkgICAgc3RydWN0IG1hbmFfcnhjb21wX29vYiAqb29iLAomIzQzOwkJCQkgICAgdTMyIHBrdGxlbiwgdTMyIHBrdF9oYXNoKQomIzQzO3sKJiM0MzsJc3RydWN0IG1hbmFfcmVjdl9idWZfb29iICpyeGJ1Zl9vb2I7CiYjNDM7CXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcnhxLSZndDtuZGV2OwomIzQzOwl2b2lkICpvbGRfYnVmID0gTlVMTDsKJiM0MzsJYm9vbCBvbGRfZnA7CiYjNDM7CiYjNDM7CXJ4YnVmX29vYiA9ICZhbXA7cnhxLSZndDtyeF9vb2JzW3J4cS0mZ3Q7YnVmX2luZGV4XTsKJiM0MzsJV0FSTl9PTl9PTkNFKHJ4YnVmX29vYi0mZ3Q7d3FlX2luZi53cWVfc2l6ZV9pbl9idSAhPSAxKTsKJiM0MzsKJiM0MzsJaWYgKHVubGlrZWx5KHBrdGxlbiAmZ3Q7IHJ4cS0mZ3Q7ZGF0YXNpemUpKSB7CiYjNDM7CQkvKiBJbmNyZWFzZSBpdCBldmVuIGlmIG1hbmFfcnhfc2tiKCkgaXNuJiMzOTt0IGNhbGxlZC4gKi8KJiM0MzsJCXJ4cS0mZ3Q7cnhfY3Eud29ya19kb25lJiM0MzsmIzQzOzsKJiM0MzsKJiM0MzsJCSYjNDM7JiM0MztuZGV2LSZndDtzdGF0cy5yeF9kcm9wcGVkOwomIzQzOwkJbmV0ZGV2X3dhcm5fb25jZShuZGV2LAomIzQzOwkJCQkgJiMzNDtEcm9wcGVkIG92ZXJzaXplZCBSWCBwYWNrZXQ6IGxlbj0ldSwgZGF0YXNpemU9JXVcbiYjMzQ7LAomIzQzOwkJCQkgcGt0bGVuLCByeHEtJmd0O2RhdGFzaXplKTsKJiM0MzsKJiM0MzsJCS8qIFJldXNlIHRoZSBSWCBidWZmZXIgc2luY2UgcnhidWZfb29iIGlzIHVuY2hhbmdlZC4gKi8KJiM0MzsJfSBlbHNlIHsKJiM0MzsJCW1hbmFfcmVmaWxsX3J4X29vYihkZXYsIHJ4cSwgcnhidWZfb29iLCBwa3RsZW4sCiYjNDM7CQkJCSAgICZhbXA7b2xkX2J1ZiwgJmFtcDtvbGRfZnApOwomIzQzOwomIzQzOwkJLyogVW5zdWNjZXNzZnVsIHJlZmlsbCB3aWxsIGhhdmUgb2xkX2J1ZiA9PSBOVUxMLgomIzQzOwkJICogSW4gdGhpcyBjYXNlLCBtYW5hX3J4X3NrYigpIHdpbGwgZHJvcCB0aGUgcGFja2V0LgomIzQzOwkJICovCiYjNDM7CQltYW5hX3J4X3NrYihvbGRfYnVmLCBvbGRfZnAsIG9vYiwgcnhxLCBwa3RsZW4sIHBrdF9oYXNoKTsKJiM0MzsJfQomIzQzOwomIzQzOwltYW5hX21vdmVfd3FfdGFpbChyeHEtJmd0O2dkbWFfcnEsIHJ4YnVmX29vYi0mZ3Q7d3FlX2luZi53cWVfc2l6ZV9pbl9idSk7CiYjNDM7CiYjNDM7CW1hbmFfcG9zdF9wa3RfcnhxKHJ4cSk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLAogCQkJCXN0cnVjdCBnZG1hX2NvbXAgKmNxZSkKIHsKQEAgLTIyNDksMTAgJiM0MzsyMjk0LDEwIEBAIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSwKIAlzdHJ1Y3QgbWFuYV9yZWN2X2J1Zl9vb2IgKnJ4YnVmX29vYjsKIAlzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYzsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBnYy0mZ3Q7ZGV2OwomIzQzOwlib29sIGNvYWxlc2NlZF84ID0gZmFsc2U7CiAJYm9vbCBjb2FsZXNjZWQgPSBmYWxzZTsKLQl2b2lkICpvbGRfYnVmID0gTlVMTDsKLQl1MzIgY3VyciwgcGt0bGVuOwotCWJvb2wgb2xkX2ZwOwomIzQzOwl1MzIgcGt0bGVuOwomIzQzOwlpbnQgcGt0X2k7CiAJaW50IGk7CiAKIAlhcGMgPSBuZXRkZXZfcHJpdihuZGV2KTsKQEAgLTIyNzUsNiAmIzQzOzIzMjAsMTEgQEAgc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLAogCQljb2FsZXNjZWQgPSB0cnVlOwogCQlicmVhazsKIAomIzQzOwljYXNlIENRRV9SWF9DT0FMRVNDRURfODoKJiM0MzsJCWNvYWxlc2NlZCA9IHRydWU7CiYjNDM7CQljb2FsZXNjZWRfOCA9IHRydWU7CiYjNDM7CQlicmVhazsKJiM0MzsKIAljYXNlIENRRV9SWF9PQkpFQ1RfRkVOQ0U6CiAJCWNvbXBsZXRlKCZhbXA7cnhxLSZndDtmZW5jZV9ldmVudCk7CiAJCXJldHVybjsKQEAgLTIyODYsNTQgJiM0MzsyMzM2LDQ4IEBAIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSwKIAkJcmV0dXJuOwogCX0KIAomIzQzOwlwa3RfaSA9IDA7CiAJZm9yIChpID0gMDsgaSAmbHQ7IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJOyBpJiM0MzsmIzQzOykgewotCQlvbGRfYnVmID0gTlVMTDsKLQkJcGt0bGVuID0gb29iLSZndDtwcGlbaV0ucGt0X2xlbjsKLQkJaWYgKHBrdGxlbiA9PSAwKQotCQkJYnJlYWs7Ci0KLQkJY3VyciA9IHJ4cS0mZ3Q7YnVmX2luZGV4OwotCQlyeGJ1Zl9vb2IgPSAmYW1wO3J4cS0mZ3Q7cnhfb29ic1tjdXJyXTsKLQkJV0FSTl9PTl9PTkNFKHJ4YnVmX29vYi0mZ3Q7d3FlX2luZi53cWVfc2l6ZV9pbl9idSAhPSAxKTsKLQotCQlpZiAodW5saWtlbHkocGt0bGVuICZndDsgcnhxLSZndDtkYXRhc2l6ZSkpIHsKLQkJCS8qIEluY3JlYXNlIGl0IGV2ZW4gaWYgbWFuYV9yeF9za2IoKSBpc24mIzM5O3QgY2FsbGVkLiAqLwotCQkJcnhxLSZndDtyeF9jcS53b3JrX2RvbmUmIzQzOyYjNDM7OwomIzQzOwkJdTMyIHBrdF9oYXNoOwogCi0JCQkmIzQzOyYjNDM7bmRldi0mZ3Q7c3RhdHMucnhfZHJvcHBlZDsKLQkJCW5ldGRldl93YXJuX29uY2UobmRldiwKLQkJCQkmIzM0O0Ryb3BwZWQgb3ZlcnNpemVkIFJYIHBhY2tldDogbGVuPSV1LCBkYXRhc2l6ZT0ldVxuJiMzNDssCi0JCQkJcGt0bGVuLCByeHEtJmd0O2RhdGFzaXplKTsKLQotCQkJLyogUmV1c2UgdGhlIFJYIGJ1ZmZlciBzaW5jZSByeGJ1Zl9vb2IgaXMgdW5jaGFuZ2VkLiAqLwomIzQzOwkJaWYgKGNvYWxlc2NlZF84KSB7CiYjNDM7CQkJLyogOC1wa3QgbW9kZTogMiBwYWNrZXRzIHBlciBQUEkgZW50cnkgKi8KJiM0MzsJCQlwa3RsZW4gPSBvb2ItJmd0O3BwaVtpXS5wa3RfbGVuMDsKJiM0MzsJCQlwa3RfaGFzaCA9IG9vYi0mZ3Q7cHBpW2ldLnBrdF9oYXNoMDsKIAkJfSBlbHNlIHsKLQotCQkJbWFuYV9yZWZpbGxfcnhfb29iKGRldiwgcnhxLCByeGJ1Zl9vb2IsIHBrdGxlbiwKLQkJCQkJICAgJmFtcDtvbGRfYnVmLCAmYW1wO29sZF9mcCk7Ci0KLQkJCS8qIFVuc3VjY2Vzc2Z1bCByZWZpbGwgd2lsbCBoYXZlIG9sZF9idWYgPT0gTlVMTC4KLQkJCSAqIEluIHRoaXMgY2FzZSwgbWFuYV9yeF9za2IoKSB3aWxsIGRyb3AgdGhlIHBhY2tldC4KLQkJCSAqLwotCQkJbWFuYV9yeF9za2Iob2xkX2J1Ziwgb2xkX2ZwLCBvb2IsIHJ4cSwgaSk7CiYjNDM7CQkJcGt0bGVuID0gb29iLSZndDtwcGlbaV0ucGt0X2xlbjsKJiM0MzsJCQlwa3RfaGFzaCA9IG9vYi0mZ3Q7cHBpW2ldLnBrdF9oYXNoOwogCQl9CiYjNDM7CQlpZiAocGt0bGVuID09IDApCiYjNDM7CQkJYnJlYWs7CiAKLQkJbWFuYV9tb3ZlX3dxX3RhaWwocnhxLSZndDtnZG1hX3JxLAotCQkJCSAgcnhidWZfb29iLSZndDt3cWVfaW5mLndxZV9zaXplX2luX2J1KTsKLQotCQltYW5hX3Bvc3RfcGt0X3J4cShyeHEpOwomIzQzOwkJbWFuYV9wcm9jZXNzX29uZV9yeF9wa3QoZGV2LCByeHEsIG9vYiwgcGt0bGVuLCBwa3RfaGFzaCk7CiYjNDM7CQlwa3RfaSYjNDM7JiM0Mzs7CiAKIAkJaWYgKCFjb2FsZXNjZWQpCiAJCQlicmVhazsKJiM0MzsKJiM0MzsJCS8qIFByb2Nlc3MgMm5kIHBhY2tldCBmcm9tIHRoZSBzYW1lIFBQSSBpbiA4LXBrdCBtb2RlICovCiYjNDM7CQlpZiAoY29hbGVzY2VkXzgpIHsKJiM0MzsJCQlwa3RsZW4gPSBvb2ItJmd0O3BwaVtpXS5wa3RfbGVuMTsKJiM0MzsJCQlwa3RfaGFzaCA9IG9vYi0mZ3Q7cHBpW2ldLnBrdF9oYXNoMTsKJiM0MzsJCQlpZiAocGt0bGVuID09IDApCiYjNDM7CQkJCWJyZWFrOwomIzQzOwomIzQzOwkJCW1hbmFfcHJvY2Vzc19vbmVfcnhfcGt0KGRldiwgcnhxLCBvb2IsIHBrdGxlbiwKJiM0MzsJCQkJCQlwa3RfaGFzaCk7CiYjNDM7CQkJcGt0X2kmIzQzOyYjNDM7OwomIzQzOwkJfQogCX0KIAogCS8qIENvbGxlY3QgY29hbGVzY2VkIENRRSBjb3VudCBiYXNlZCBvbiBwYWNrZXRzIHByb2Nlc3NlZC4KLQkgKiBDb2FsZXNjZWQgQ1FFcyBoYXZlIGF0IGxlYXN0IDIgcGFja2V0cywgc28gaW5kZXggaXMgaSAtIDIuCiYjNDM7CSAqIENvYWxlc2NlZCBDUUVzIGhhdmUgYXQgbGVhc3QgMiBwYWNrZXRzLCBzbyBpbmRleCBpcyBwa3RfaSAtIDIuCiAJICovCi0JaWYgKGkgJmd0OyAxKSB7CiYjNDM7CWlmIChwa3RfaSAmZ3Q7IDEpIHsKIAkJdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbigmYW1wO3J4cS0mZ3Q7c3RhdHMuc3luY3ApOwotCQlyeHEtJmd0O3N0YXRzLmNvYWxlc2NlZF9jcWVbaSAtIDJdJiM0MzsmIzQzOzsKJiM0MzsJCXJ4cS0mZ3Q7c3RhdHMuY29hbGVzY2VkX2NxZVtwa3RfaSAtIDJdJiM0MzsmIzQzOzsKIAkJdTY0X3N0YXRzX3VwZGF0ZV9lbmQoJmFtcDtyeHEtJmd0O3N0YXRzLnN5bmNwKTsKLQl9IGVsc2UgaWYgKCFpICZhbXA7JmFtcDsgIXBrdGxlbikgewomIzQzOwl9IGVsc2UgaWYgKCFwa3RfaSAmYW1wOyZhbXA7ICFwa3RsZW4pIHsKIAkJdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbigmYW1wO3J4cS0mZ3Q7c3RhdHMuc3luY3ApOwogCQlyeHEtJmd0O3N0YXRzLnBrdF9sZW4wX2VyciYjNDM7JiM0Mzs7CiAJCXU2NF9zdGF0c191cGRhdGVfZW5kKCZhbXA7cnhxLSZndDtzdGF0cy5zeW5jcCk7CkBAIC0zNzYzLDYgJiM0MzszODA3LDcgQEAgc3RhdGljIGludCBtYW5hX3Byb2JlX3BvcnQoc3RydWN0IG1hbmFfY29udGV4dCAqYWMsIGludCBwb3J0X2lkeCwKIAlhcGMtJmd0O3BvcnRfaWR4ID0gcG9ydF9pZHg7CiAJYXBjLSZndDtsaW5rX2NmZ19lcnJvciA9IDE7CiAJYXBjLSZndDtjcWVfY29hbGVzY2luZ19lbmFibGUgPSAwOwomIzQzOwlhcGMtJmd0O2NxZThfY29hbGVzY2luZ19lbmFibGUgPSAwOwogCiAJLyogSW5pdGlhbGl6ZSBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyBpZiBzdXBwb3J0ZWQgYnkgSFcgKi8KIAlpZiAoZ2MtJmd0O3BmX2NhcF9mbGFnczEgJmFtcDsgR0RNQV9QRl9DQVBfRkxBR18xX0RZTl9JTlRFUlJVUFRfTU9ERVJBVElPTikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuYwppbmRleCA5ZTMxZTI1OTVhZTMyLi4wNGY4Nzc3MDdjYzZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuYwpAQCAtMTY5LDcgJiM0MzsxNjksNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9zdHJpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgc3RyaW5nc2V0LCB1OCAqZGF0YSkKIAkJZXRodG9vbF9zcHJpbnRmKCZhbXA7ZGF0YSwgJiMzNDtyeF8lZF94ZHBfdHgmIzM0OywgaSk7CiAJCWV0aHRvb2xfc3ByaW50ZigmYW1wO2RhdGEsICYjMzQ7cnhfJWRfeGRwX3JlZGlyZWN0JiMzNDssIGkpOwogCQlldGh0b29sX3NwcmludGYoJmFtcDtkYXRhLCAmIzM0O3J4XyVkX3BrdF9sZW4wX2VyciYjMzQ7LCBpKTsKLQkJZm9yIChqID0gMDsgaiAmbHQ7IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaiYjNDM7JiM0MzspCiYjNDM7CQlmb3IgKGogPSAwOyBqICZsdDsgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqJiM0MzsmIzQzOykKIAkJCWV0aHRvb2xfc3ByaW50ZigmYW1wO2RhdGEsICYjMzQ7cnhfJWRfY29hbGVzY2VkX2NxZV8lZCYjMzQ7LCBpLCBqICYjNDM7IDIpOwogCX0KIApAQCAtMjA1LDcgJiM0MzsyMDUsNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCXU2NCB4ZHBfZHJvcDsKIAl1NjQgeGRwX3R4OwogCXU2NCBwa3RfbGVuMF9lcnI7Ci0JdTY0IGNvYWxlc2NlZF9jcWVbTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxXTsKJiM0MzsJdTY0IGNvYWxlc2NlZF9jcWVbTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxXTsKIAl1NjQgdHNvX3BhY2tldHM7CiAJdTY0IHRzb19ieXRlczsKIAl1NjQgdHNvX2lubmVyX3BhY2tldHM7CkBAIC0yNDUsNyAmIzQzOzI0NSw3IEBAIHN0YXRpYyB2b2lkIG1hbmFfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJCQl4ZHBfdHggPSByeF9zdGF0cy0mZ3Q7eGRwX3R4OwogCQkJeGRwX3JlZGlyZWN0ID0gcnhfc3RhdHMtJmd0O3hkcF9yZWRpcmVjdDsKIAkJCXBrdF9sZW4wX2VyciA9IHJ4X3N0YXRzLSZndDtwa3RfbGVuMF9lcnI7Ci0JCQlmb3IgKGogPSAwOyBqICZsdDsgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxOyBqJiM0MzsmIzQzOykKJiM0MzsJCQlmb3IgKGogPSAwOyBqICZsdDsgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqJiM0MzsmIzQzOykKIAkJCQljb2FsZXNjZWRfY3FlW2pdID0gcnhfc3RhdHMtJmd0O2NvYWxlc2NlZF9jcWVbal07CiAJCX0gd2hpbGUgKHU2NF9zdGF0c19mZXRjaF9yZXRyeSgmYW1wO3J4X3N0YXRzLSZndDtzeW5jcCwgc3RhcnQpKTsKIApAQCAtMjU1LDcgJiM0MzsyNTUsNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQlkYXRhW2kmIzQzOyYjNDM7XSA9IHhkcF90eDsKIAkJZGF0YVtpJiM0MzsmIzQzO10gPSB4ZHBfcmVkaXJlY3Q7CiAJCWRhdGFbaSYjNDM7JiM0MztdID0gcGt0X2xlbjBfZXJyOwotCQlmb3IgKGogPSAwOyBqICZsdDsgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxOyBqJiM0MzsmIzQzOykKJiM0MzsJCWZvciAoaiA9IDA7IGogJmx0OyBNQU5BX0NRRV9DT0FMX1BLVFNfOCAtIDE7IGomIzQzOyYjNDM7KQogCQkJZGF0YVtpJiM0MzsmIzQzO10gPSBjb2FsZXNjZWRfY3FlW2pdOwogCX0KIApAQCAtNDA4LDYgJiM0Mzs0MDgsNyBAQCBzdGF0aWMgaW50IG1hbmFfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCXN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCAqYXBjID0gbmV0ZGV2X3ByaXYobmRldik7CiAKIAlrZXJuZWxfY29hbC0mZ3Q7cnhfY3FlX2ZyYW1lcyA9CiYjNDM7CQlhcGMtJmd0O2NxZThfY29hbGVzY2luZ19lbmFibGUgPyBNQU5BX0NRRV9DT0FMX1BLVFNfOCA6CiAJCWFwYy0mZ3Q7Y3FlX2NvYWxlc2NpbmdfZW5hYmxlID8gTUFOQV9SWENPTVBfT09CX05VTV9QUEkgOiAxOwogCiAJa2VybmVsX2NvYWwtJmd0O3J4X2NxZV9uc2VjcyA9IGFwYy0mZ3Q7Y3FlX2NvYWxlc2NpbmdfdGltZW91dF9uczsKQEAgLTQ0MywxNSAmIzQzOzQ0NCwxOSBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQl1MTYgaW50cl9tb2RyX3R4X3VzZWM7CiAJCXUxNiBpbnRyX21vZHJfdHhfY29tcDsKIAkJdTggY3FlX2NvYWxlc2NpbmdfZW5hYmxlOwomIzQzOwkJdTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTsKIAkJYm9vbCByeF9kaW1fZW5hYmxlZDsKIAkJYm9vbCB0eF9kaW1fZW5hYmxlZDsKIAl9IHNhdmVkOwogCWJvb2wgbW9kcl9jaGFuZ2VkID0gZmFsc2U7CiAJYm9vbCBkaW1fY2hhbmdlZCA9IGZhbHNlOwogCXN0cnVjdCBnZG1hX2NvbnRleHQgKmdjOwomIzQzOwl1MzIgbWF4X2NxZV9mcmFtZXM7CiAJaW50IGVycjsKIAogCWdjID0gYXBjLSZndDthYy0mZ3Q7Z2RtYV9kZXYtJmd0O2dkbWFfY29udGV4dDsKJiM0MzsJbWF4X2NxZV9mcmFtZXMgPSBnYy0mZ3Q7Y3FlOF9jb2FsZXNjaW5nX3N1cCA/IE1BTkFfQ1FFX0NPQUxfUEtUU184IDoKJiM0MzsJCQkJCQkgICBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSTsKIAogCS8qIEJvdGggc3RhdGljIGFuZCBkeW5hbWljIGludGVycnVwdCBtb2RlcmF0aW9uIChESU0pIHJlbHkgb24gdGhlCiAJICogc2FtZSBIVyBjYXBhYmlsaXR5IGFkdmVydGlzZWQgYnkgdGhlIFBGLgpAQCAtNDY2LDEwICYjNDM7NDcxLDEyIEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJfQogCiAJaWYgKGtlcm5lbF9jb2FsLSZndDtyeF9jcWVfZnJhbWVzICE9IDEgJmFtcDsmYW1wOwotCSAgICBrZXJuZWxfY29hbC0mZ3Q7cnhfY3FlX2ZyYW1lcyAhPSBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSkgewomIzQzOwkgICAga2VybmVsX2NvYWwtJmd0O3J4X2NxZV9mcmFtZXMgIT0gTUFOQV9SWENPTVBfT09CX05VTV9QUEkgJmFtcDsmYW1wOwomIzQzOwkgICAga2VybmVsX2NvYWwtJmd0O3J4X2NxZV9mcmFtZXMgIT0gbWF4X2NxZV9mcmFtZXMpIHsKIAkJTkxfU0VUX0VSUl9NU0dfRk1UKGV4dGFjaywKLQkJCQkgICAmIzM0O3J4LWZyYW1lcyBtdXN0IGJlIDEgb3IgJXUsIGdvdCAldSYjMzQ7LAomIzQzOwkJCQkgICAmIzM0O3J4LWZyYW1lcyBtdXN0IGJlIDEgb3IgJXUlcywgZ290ICV1JiMzNDssCiAJCQkJICAgTUFOQV9SWENPTVBfT09CX05VTV9QUEksCiYjNDM7CQkJCSAgIGdjLSZndDtjcWU4X2NvYWxlc2Npbmdfc3VwID8gJiMzNDsgb3IgOCYjMzQ7IDogJiMzNDsmIzM0OywKIAkJCQkgICBrZXJuZWxfY29hbC0mZ3Q7cnhfY3FlX2ZyYW1lcyk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KQEAgLTUxNCw4ICYjNDM7NTIxLDExIEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJc2F2ZWQudHhfZGltX2VuYWJsZWQgPSBhcGMtJmd0O3R4X2RpbV9lbmFibGVkOwogCiAJc2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLSZndDtjcWVfY29hbGVzY2luZ19lbmFibGU7CiYjNDM7CXNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtJmd0O2NxZThfY29hbGVzY2luZ19lbmFibGU7CiAJYXBjLSZndDtjcWVfY29hbGVzY2luZ19lbmFibGUgPQotCQlrZXJuZWxfY29hbC0mZ3Q7cnhfY3FlX2ZyYW1lcyA9PSBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSTsKJiM0MzsJCWtlcm5lbF9jb2FsLSZndDtyeF9jcWVfZnJhbWVzICZndDs9IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJOwomIzQzOwlhcGMtJmd0O2NxZThfY29hbGVzY2luZ19lbmFibGUgPQomIzQzOwkJa2VybmVsX2NvYWwtJmd0O3J4X2NxZV9mcmFtZXMgPT0gTUFOQV9DUUVfQ09BTF9QS1RTXzg7CiAKIAlpZiAoIWFwYy0mZ3Q7cG9ydF9pc191cCkgewogCQlXUklURV9PTkNFKGFwYy0mZ3Q7cnhfZGltX2VuYWJsZWQsICEhZWMtJmd0O3VzZV9hZGFwdGl2ZV9yeF9jb2FsZXNjZSk7CkBAIC01MjMsNyAmIzQzOzUzMyw4IEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJCXJldHVybiAwOwogCX0KIAotCWlmIChhcGMtJmd0O2NxZV9jb2FsZXNjaW5nX2VuYWJsZSAhPSBzYXZlZC5jcWVfY29hbGVzY2luZ19lbmFibGUpIHsKJiM0MzsJaWYgKGFwYy0mZ3Q7Y3FlX2NvYWxlc2NpbmdfZW5hYmxlICE9IHNhdmVkLmNxZV9jb2FsZXNjaW5nX2VuYWJsZSB8fAomIzQzOwkgICAgYXBjLSZndDtjcWU4X2NvYWxlc2NpbmdfZW5hYmxlICE9IHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGUpIHsKIAkJLyogQ1FFIGNvYWxlc2Npbmcgc2V0dGluZyBpcyBhcHBsaWVkIHZpYSBSU1MgY29uZmlndXJhdGlvbi4gKi8KIAkJZXJyID0gbWFuYV9jb25maWdfcnNzKGFwYywgVFJJX1NUQVRFX1RSVUUsIGZhbHNlLCBmYWxzZSk7CiAJCWlmIChlcnIpIHsKQEAgLTUzMSw2ICYjNDM7NTQyLDggQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwKIAkJCQkgICBlcnIpOwogCQkJYXBjLSZndDtjcWVfY29hbGVzY2luZ19lbmFibGUgPQogCQkJCXNhdmVkLmNxZV9jb2FsZXNjaW5nX2VuYWJsZTsKJiM0MzsJCQlhcGMtJmd0O2NxZThfY29hbGVzY2luZ19lbmFibGUgPQomIzQzOwkJCQlzYXZlZC5jcWU4X2NvYWxlc2NpbmdfZW5hYmxlOwogCQkJYXBjLSZndDtpbnRyX21vZHJfcnhfdXNlYyA9IHNhdmVkLmludHJfbW9kcl9yeF91c2VjOwogCQkJYXBjLSZndDtpbnRyX21vZHJfcnhfY29tcCA9IHNhdmVkLmludHJfbW9kcl9yeF9jb21wOwogCQkJYXBjLSZndDtpbnRyX21vZHJfdHhfdXNlYyA9IHNhdmVkLmludHJfbW9kcl90eF91c2VjOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFuYS9nZG1hLmggYi9pbmNsdWRlL25ldC9tYW5hL2dkbWEuaAppbmRleCA4NTI5Y2VmMGQ3YzQ1Li43MGE3ZjFmZWU1ZDNiIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9tYW5hL2dkbWEuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9tYW5hL2dkbWEuaApAQCAtMTgyLDYgJiM0MzsxODIsNyBAQCBzdHJ1Y3QgZ2RtYV9nZW5lcmFsX3JlcSB7CiAjZGVmaW5lIEdETUFfTUVTU0FHRV9WMiAyCiAjZGVmaW5lIEdETUFfTUVTU0FHRV9WMyAzCiAjZGVmaW5lIEdETUFfTUVTU0FHRV9WNCA0CiYjNDM7I2RlZmluZSBHRE1BX01FU1NBR0VfVjUgNQogCiBzdHJ1Y3QgZ2RtYV9nZW5lcmFsX3Jlc3AgewogCXN0cnVjdCBnZG1hX3Jlc3BfaGRyIGhkcjsKQEAgLTQyOCw2ICYjNDM7NDI5LDkgQEAgc3RydWN0IGdkbWFfY29udGV4dCB7CiAJLyogTDIgTVRVICovCiAJdTE2IGFkYXB0ZXJfbXR1OwogCiYjNDM7CS8qIE5JQyBzdXBwb3J0cyBDUUUgeDggY29hbGVzY2luZyAqLwomIzQzOwlib29sIGNxZThfY29hbGVzY2luZ19zdXA7CiYjNDM7CiAJLyogVGhpcyBtYXBzIGEgQ1EgaW5kZXggdG8gdGhlIHF1ZXVlIHN0cnVjdHVyZS4gKi8KIAl1bnNpZ25lZCBpbnQJCW1heF9udW1fY3FzOwogCXN0cnVjdCBnZG1hX3F1ZXVlCSoqY3FfdGFibGU7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9tYW5hL21hbmEuaCBiL2luY2x1ZGUvbmV0L21hbmEvbWFuYS5oCmluZGV4IDRkMDQxZmI4NDM3ZjUuLjUwYWNiNmJmOGYxMjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L21hbmEvbWFuYS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L21hbmEvbWFuYS5oCkBAIC02Miw5ICYjNDM7NjIsMTIgQEAgZW51bSBUUklfU1RBVEUgewogCiAjZGVmaW5lIE1BWF9QT1JUU19JTl9NQU5BX0RFViAyNTYKIAotLyogTWF4aW11bSBudW1iZXIgb2YgcGFja2V0cyBwZXIgY29hbGVzY2VkIENRRSAqLwomIzQzOy8qIE1heGltdW0gbnVtYmVyIG9mIFBQSXMgcGVyIGNvYWxlc2NlZCBDUUUgKi8KICNkZWZpbmUgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgNAogCiYjNDM7LyogOC1wa3QgbW9kZSBwYWNrcyB1cCB0byAyIHBhY2tldHMgcGVyIFBQSSBlbnRyeSAqLwomIzQzOyNkZWZpbmUgTUFOQV9DUUVfQ09BTF9QS1RTXzggOAomIzQzOwogLyogRGVmYXVsdC9tYXggaW50ZXJydXB0IG1vZGVyYXRpb24gc2V0dGluZ3MgKi8KICNkZWZpbmUgTUFOQV9JTlRSX01PRFJfVVNFQ19ERUYgMAogI2RlZmluZSBNQU5BX0lOVFJfTU9EUl9DT01QX0RFRiAwCkBAIC03OSw3ICYjNDM7ODIsNyBAQCBlbnVtIFRSSV9TVEFURSB7CiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX0NPTVBfTUFTSyAgIEdFTk1BU0soMjMsIDE2KQogCiAvKiBVcGRhdGUgdGhpcyBjb3VudCB3aGVuZXZlciB0aGUgcmVzcGVjdGl2ZSBzdHJ1Y3R1cmVzIGFyZSBjaGFuZ2VkICovCi0jZGVmaW5lIE1BTkFfU1RBVFNfUlhfQ09VTlQgKDYgJiM0MzsgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxKQomIzQzOyNkZWZpbmUgTUFOQV9TVEFUU19SWF9DT1VOVCAoNiAmIzQzOyBNQU5BX0NRRV9DT0FMX1BLVFNfOCAtIDEpCiAjZGVmaW5lIE1BTkFfU1RBVFNfVFhfQ09VTlQgMTEKIAogI2RlZmluZSBNQU5BX1JYX0ZSQUdfQUxJR05NRU5UIDY0CkBAIC05MSw3ICYjNDM7OTQsNyBAQCBzdHJ1Y3QgbWFuYV9zdGF0c19yeCB7CiAJdTY0IHhkcF90eDsKIAl1NjQgeGRwX3JlZGlyZWN0OwogCXU2NCBwa3RfbGVuMF9lcnI7Ci0JdTY0IGNvYWxlc2NlZF9jcWVbTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxXTsKJiM0MzsJdTY0IGNvYWxlc2NlZF9jcWVbTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxXTsKIAlzdHJ1Y3QgdTY0X3N0YXRzX3N5bmMgc3luY3A7CiB9OwogCkBAIC0yMDIsNiAmIzQzOzIwNSw3IEBAIGVudW0gbWFuYV9jcWVfdHlwZSB7CiAJQ1FFX1JYX0NPQUxFU0NFRF80CQk9IDIsCiAJQ1FFX1JYX09CSkVDVF9GRU5DRQkJPSAzLAogCUNRRV9SWF9UUlVOQ0FURUQJCT0gNCwKJiM0MzsJQ1FFX1JYX0NPQUxFU0NFRF84CQk9IDcsCiAKIAlDUUVfVFhfT0tBWQkJCT0gMzIsCiAJQ1FFX1RYX1NBX0RST1AJCQk9IDMzLApAQCAtMjM4LDEyICYjNDM7MjQyLDI2IEBAIHN0cnVjdCBtYW5hX2NxZV9oZWFkZXIgewogI2RlZmluZSBNQU5BX0hBU0hfTDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAJKE5ESVNfSEFTSF9UQ1BfSVBWNCB8IE5ESVNfSEFTSF9VRFBfSVBWNCB8IE5ESVNfSEFTSF9UQ1BfSVBWNiB8ICAgICAgXAogCSBORElTX0hBU0hfVURQX0lQVjYgfCBORElTX0hBU0hfVENQX0lQVjZfRVggfCBORElTX0hBU0hfVURQX0lQVjZfRVgpCiYjNDM7I2RlZmluZSBNQU5BX0hBU0hfRU5BQkxFX1NVUFBPUlRFRCBcCiYjNDM7CShORElTX0hBU0hfSVBWNCB8IE5ESVNfSEFTSF9UQ1BfSVBWNCB8IE5ESVNfSEFTSF9VRFBfSVBWNCB8IFwKJiM0MzsJIE5ESVNfSEFTSF9JUFY2IHwgTkRJU19IQVNIX1RDUF9JUFY2IHwgTkRJU19IQVNIX1VEUF9JUFY2KQomIzQzOwomIzQzOy8qIFJlYWQgUFBJIGluIHR3byBkaWZmZXJlbnQgbGF5b3V0cyBiYXNlZCBvbiBjcWVfdHlwZSAqLwomIzQzO3VuaW9uIG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHsKJiM0MzsJc3RydWN0IHsKJiM0MzsJCXUzMiBwa3RfbGVuIDogMTY7CiYjNDM7CQl1MzIgcmVzZXJ2ZWQxIDogMTY7CiYjNDM7CQl1MzIgcmVzZXJ2ZWQyOwomIzQzOwkJdTMyIHBrdF9oYXNoOwomIzQzOwl9OwogCi1zdHJ1Y3QgbWFuYV9yeGNvbXBfcGVycGt0X2luZm8gewotCXUzMiBwa3RfbGVuCTogMTY7Ci0JdTMyIHJlc2VydmVkMQk6IDE2OwotCXUzMiByZXNlcnZlZDI7Ci0JdTMyIHBrdF9oYXNoOwomIzQzOwkvKiBVcCB0byB0d28gcGt0cyBwZXIgUFBJIGVudHJ5ICovCiYjNDM7CXN0cnVjdCB7CiYjNDM7CQl1MzIgcGt0X2hhc2gwOwomIzQzOwkJdTE2IHBrdF9sZW4wOwomIzQzOwkJdTE2IHBrdF9sZW4xOwomIzQzOwkJdTMyIHBrdF9oYXNoMTsKJiM0MzsJfTsKIH07IC8qIEhXIERBVEEgKi8KIAogLyogUmVjZWl2ZSBjb21wbGV0aW9uIE9PQiAqLwpAQCAtMjY0LDcgJiM0MzsyODIsNyBAQCBzdHJ1Y3QgbWFuYV9yeGNvbXBfb29iIHsKIAl1MzIgcnhfdWRwX2NzdW1fZmFpbAkJOiAxOwogCXUzMiByZXNlcnZlZDIJCQk6IDE7CiAKLQlzdHJ1Y3QgbWFuYV9yeGNvbXBfcGVycGt0X2luZm8gcHBpW01BTkFfUlhDT01QX09PQl9OVU1fUFBJXTsKJiM0MzsJdW5pb24gbWFuYV9yeGNvbXBfcGVycGt0X2luZm8gcHBpW01BTkFfUlhDT01QX09PQl9OVU1fUFBJXTsKIAogCXUzMiByeF93cWVfb2Zmc2V0OwogfTsgLyogSFcgREFUQSAqLwpAQCAtNjA3LDYgJiM0Mzs2MjUsNyBAQCBzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgewogCWJvb2wgcG9ydF9zdF9zYXZlOyAvKiBTYXZlZCBwb3J0IHN0YXRlICovCiAKIAl1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7CiYjNDM7CXU4IGNxZThfY29hbGVzY2luZ19lbmFibGU7CiAJdTMyIGNxZV9jb2FsZXNjaW5nX3RpbWVvdXRfbnM7CiAKIAkvKiBJbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyAqLwpAQCAtNzUxLDYgJiM0Mzs3NzAsOCBAQCBzdHJ1Y3QgbWFuYV9xdWVyeV9kZXZpY2VfY2ZnX3JlcSB7CiAJdTMyIHJlc2VydmVkOwogfTsgLyogSFcgREFUQSAqLwogCiYjNDM7I2RlZmluZSBNQU5BX1BGX0ZMQUdfMV9DUUVfOF9DT0FMRVNDSU5HX1NVUFBPUlRFRCBCSVQoNSkKJiM0MzsKIHN0cnVjdCBtYW5hX3F1ZXJ5X2RldmljZV9jZmdfcmVzcCB7CiAJc3RydWN0IGdkbWFfcmVzcF9oZHIgaGRyOwogCkBAIC05ODYsNyAmIzQzOzEwMDcsMTAgQEAgc3RydWN0IG1hbmFfY2ZnX3J4X3N0ZWVyX3JlcV92MiB7CiAJbWFuYV9oYW5kbGVfdCBkZWZhdWx0X3J4b2JqOwogCXU4IGhhc2hrZXlbTUFOQV9IQVNIX0tFWV9TSVpFXTsKIAl1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7Ci0JdTggcmVzZXJ2ZWQyWzddOwomIzQzOwl1OCByZXNlcnZlZDJbM107CiYjNDM7CXUxNiByc3NfaGFzaF90eXBlczsKJiM0MzsJdTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTsgLyogdjUgbWVzc2FnZSAqLwomIzQzOwl1OCByZXNlcnZlZDM7CiAJbWFuYV9oYW5kbGVfdCBpbmRpcl90YWJbXSBfX2NvdW50ZWRfYnkobnVtX2luZGlyX2VudHJpZXMpOwogfTsgLyogSFcgREFUQSAqLwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzMDMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQU5BIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlci4gSXQmIzM5O3MgYWRkaW5nIHN1cHBvcnQgZm9yIDgtcGFja2V0IGNvYWxlc2NpbmcgaW4gdGhlIENvbXBsZXRpb24gUXVldWUgRW50cnkgKENRRSksIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGUgY2hhbmdlcyBhcmUgc3ByZWFkIGFjcm9zcyBgbWFuYV9lbi5jYCwgYG1hbmFfZXRodG9vbC5jYCwgYGdkbWEuaGAsIGFuZCBgbWFuYS5oYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHZpYWJsZSB0aGlzIGlzIHRvIHRlc3QuCgpGaXJzdCwgdGhlIGRyaXZlciYjMzk7cyBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9gLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIEkgZXZlbiAqcmVhY2gqIHRoaXMgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50PyBNQU5BIGlzIHVzdWFsbHkgYSBTbWFydE5JQywgc3BlY2lmaWMgdG8gTWljcm9zb2Z0IEF6dXJlLCB3aGljaCBzdWdnZXN0cyBpdCBtaWdodCByZWx5IG9uIHBoeXNpY2FsIGhhcmR3YXJlLiBJIGNhbiYjMzk7dCByZWNhbGwgc2VlaW5nIGFueSBlbXVsYXRpb24gZm9yIGl0IGluIHZhbmlsbGEgUUVNVS4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIGZpcnN0IGh1cmRsZS4KCkxldCBtZSBjbGFyaWZ5IOKAkyBpcyB0aGVyZSBhbnkgc29mdHdhcmUgZW11bGF0aW9uIG9mIE1BTkEgYXQgYWxsLCBvciBpcyBpdCBzdHJpY3RseSBhIHBoeXNpY2FsIG9yIEF6dXJlLXNwZWNpZmljIGRldmljZT8gUmlnaHQsIGl04oCZcyB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciwgYSBQQ0kgZGV2aWNlLCBzbyBpZiB0aGVyZSYjMzk7cyBubyBlbXVsYXRpb24sIHRoZSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50IHdvbiYjMzk7dCB3b3JrLiBUaGUgZmFjdCBpdCYjMzk7cyBhIFBDSSBkZXZpY2UgdGhhdCYjMzk7cyBub3QgZW11bGF0ZWQgbWVhbnMgZnV6emluZyBpcyB1bmxpa2VseSB0byB3b3JrIGluIHRoZSBzdGFuZGFyZCBlbnZpcm9ubWVudC4KCkxldCBtZSB2ZXJpZnkgdGhhdCBNQU5BIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgZGV2aWNlLCBub3QgZW11bGF0ZWQgYnkgUUVNVS4gVGhlIGRvY3VtZW50YXRpb24gbWVudGlvbnMgdGhhdCBjb2RlIGluIGRyaXZlcnMgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgYW5kIGBhbWRncHVgIHdoaWNoIHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBpc24mIzM5O3QgZW11bGF0ZWQuIFRoYXQgc2VlbXMgbGlrZSB0aGUgY2FzZSBoZXJlLgoKU28sIGVpdGhlciBJIG5lZWQgdG8gc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSBRRU1VIHNvdXJjZSBjb2RlIHRvIGV4cGxpY2l0bHkgY29uZmlybSBpdCYjMzk7cyBub3QgZW11bGF0ZWQsIG9yIEkmIzM5O20ganVzdCBnb2luZyB0byBoYXZlIHRvIG1ha2UgdGhlIGVkdWNhdGVkIGFzc3VtcHRpb24gdGhhdCBpdCBpc24mIzM5O3QuIFRoZSBkcml2ZXIgaXRzZWxmIGlzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9gIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGEgUENJIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG9uIGBtYW5hX2VuLmNgLiBUaGlzIG1lYW5zIEkgbmVlZCB0byBmaW5kIGEgd29ya2Fyb3VuZCB0byB0ZXN0IHRoZSBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfcmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI1Njk9c3RhdGljIGludCBfX2luaXQgbWFuYV9kcml2ZXJfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1NzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNTc5Olx0ZXJyID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZtYW5hX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTgwLVx0aWYgKGVycikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA2OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzAwCgkJCQkJCQlvdXRwdXQ6IDk0CgkJCQkJCQl0aG91Z2h0czogMTQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBc3Nlc3NtZW50OiBNQU5BIERyaXZlcioqCgpPa2F5LCBzbyB0aGlzIGlzIGRlZmluaXRlbHkgYSBQQ0kgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGFzc2VzcyBpdHMgZnV6emFiaWxpdHkuIElzIHRoaXMgc29tZXRoaW5nIHRoYXQmIzM5O3MgZW11bGF0ZWQgd2l0aGluIFFFTVUsIHNpbmNlIHRoYXQmIzM5O3Mgb3VyIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudD8gTm8sIGl0JiMzOTtzIG5vdC4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBTbWFydE5JQyDigJMgc3BlY2lmaWNhbGx5LCB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciwgb3IgTUFOQS4gIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSBjb25jZXJuLiAgV2UgYXJlIGdvaW5nIHRvIG5lZWQgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBvciBBenVyZSBWTXMgdG8gaW50ZXJhY3Qgd2l0aCB0aGlzLCBhbmQgd2UgZG9uJiMzOTt0IHR5cGljYWxseSBydW4gQXp1cmUgVk1zIHdpdGhpbiBzdGFuZGFyZCBRRU1VIGZvciBmdXp6aW5nLgoKR2l2ZW4gdGhhdCByZXN0cmljdGlvbiwgSSBzaG91bGQgcXVpY2tseSBkb3VibGUtY2hlY2sg4oCTIGlzIHRoZXJlIGFueSBvdGhlciBwb3NzaWJsZSBwYXRoIHRvIHRoaXMgdGhhdCBieXBhc3NlcyB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jeT8gTm9wZS4gSXQmIzM5O3MgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIE1BTkEsIGFuZCB0aGF0JiMzOTtzIHRoZSBvbmx5IHdheSB0byBnZXQgYXQgaXQuCgpUaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgY2xlYXI6IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJJiMzOTtsbCByZXR1cm4gdGhhdCB2YWx1ZS4gTXkgcmVhc29uaW5nIGlzIHNvbGlkIOKAkyBpdCYjMzk7cyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgKE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIpIGFuZCBpdCYjMzk7cyBub3QgZW11bGF0ZWQgaW4gdGhlIHN0YW5kYXJkIFFFTVUgc2V0dXAgdGhhdCB3ZSB1c2UgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDY6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyIHRvIGFkZCBzdXBwb3J0IGZvciBDUUUgOC1wYWNrZXQgY29hbGVzY2luZy4gTUFOQSBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIFNtYXJ0TklDIGRldmljZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgc28gdGhpcyBjb2RlIGNhbm5vdCBiZSByZWFjaGVkIG9yIHRlc3RlZCBieSB0aGUgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciB0byBhZGQgc3VwcG9ydCBmb3IgQ1FFIDgtcGFja2V0IGNvYWxlc2NpbmcuIE1BTkEgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBTbWFydE5JQyBkZXZpY2UgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIHNvIHRoaXMgY29kZSBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgYnkgdGhlIGZ1enplci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNjoxOTo0NC41MjU0MjQwODhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMyMjIxNDQ2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciB0byBhZGQgc3VwcG9ydCBmb3IgQ1FFIDgtcGFja2V0IGNvYWxlc2NpbmcuIE1BTkEgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBTbWFydE5JQyBkZXZpY2UgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIHNvIHRoaXMgY29kZSBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgYnkgdGhlIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA2OjE5OjQ0LjUyNTQzMDMyOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzExMzg4MzQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDdhNDAxMDBiNzNmN2IwODE5ZWRiZWFlODRlZDhjNTRiN2Y3YjI3ZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAyIDA2OjE5OjQzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uY1xcbmluZGV4IGE4MGNmMGJjNDYyY2YuLmEzYzI5MDc3ZGFmNWYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jXFxuQEAgLTEyNDEsNiArMTI0MSw5IEBAIGludCBtYW5hX2dkX3F1ZXJ5X2RldmljZV9jZmcoc3RydWN0IGdkbWFfY29udGV4dCAqZ2MsIHUzMiBwcm90b19tYWpvcl92ZXIsXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcdH1cXG4gXFxuK1xcdGdjLVxcdTAwM2VjcWU4X2NvYWxlc2Npbmdfc3VwID0gISEocmVzcC5wZl9jYXBfZmxhZ3MxIFxcdTAwMjZcXG4rXFx0XFx0XFx0XFx0ICAgICBNQU5BX1BGX0ZMQUdfMV9DUUVfOF9DT0FMRVNDSU5HX1NVUFBPUlRFRCk7XFxuK1xcbiBcXHQqbWF4X251bV92cG9ydHMgPSByZXNwLm1heF9udW1fdnBvcnRzO1xcbiBcXG4gXFx0aWYgKHJlc3AuaGRyLnJlc3BvbnNlLm1zZ192ZXJzaW9uIFxcdTAwM2U9IEdETUFfTUVTU0FHRV9WMikge1xcbkBAIC0xNDI2LDcgKzE0MjksMTEgQEAgc3RhdGljIGludCBtYW5hX2NmZ192cG9ydF9zdGVlcmluZyhzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYyxcXG4gXFx0bWFuYV9nZF9pbml0X3JlcV9oZHIoXFx1MDAyNnJlcS1cXHUwMDNlaGRyLCBNQU5BX0NPTkZJR19WUE9SVF9SWCwgcmVxX2J1Zl9zaXplLFxcbiBcXHRcXHRcXHQgICAgIHNpemVvZihyZXNwKSk7XFxuIFxcbi1cXHRyZXEtXFx1MDAzZWhkci5yZXEubXNnX3ZlcnNpb24gPSBHRE1BX01FU1NBR0VfVjI7XFxuK1xcdC8qIFJlcXVlc3QgXFx1MDAyNiByZXNwb25zZSB2ZXJzaW9ucyBjYW4gYmUgZGlmZmVyZW50LlxcbitcXHQgKiBIVyBjYW4gaGFuZGxlIG5ld2VyIG1zZyB2ZXJzaW9ucywgYnkgc2tpcHBpbmdcXG4rXFx0ICogbmV3IGZpZWxkcy5cXG4rXFx0ICovXFxuK1xcdHJlcS1cXHUwMDNlaGRyLnJlcS5tc2dfdmVyc2lvbiA9IEdETUFfTUVTU0FHRV9WNTtcXG4gXFx0cmVxLVxcdTAwM2VoZHIucmVzcC5tc2dfdmVyc2lvbiA9IEdETUFfTUVTU0FHRV9WMjtcXG4gXFxuIFxcdHJlcS1cXHUwMDNldnBvcnQgPSBhcGMtXFx1MDAzZXBvcnRfaGFuZGxlO1xcbkBAIC0xNDQwLDggKzE0NDcsMTMgQEAgc3RhdGljIGludCBtYW5hX2NmZ192cG9ydF9zdGVlcmluZyhzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYyxcXG4gXFx0cmVxLVxcdTAwM2V1cGRhdGVfaW5kaXJfdGFiID0gdXBkYXRlX3RhYjtcXG4gXFx0cmVxLVxcdTAwM2VkZWZhdWx0X3J4b2JqID0gYXBjLVxcdTAwM2VkZWZhdWx0X3J4b2JqO1xcbiBcXG4tXFx0aWYgKHJ4ICE9IFRSSV9TVEFURV9GQUxTRSlcXG4rXFx0LyogUmVxdWVzdC1tc2cgdjUgcmVxdWlyZXMgdGhpcyBmaWVsZCAqL1xcbitcXHRyZXEtXFx1MDAzZXJzc19oYXNoX3R5cGVzID0gTUFOQV9IQVNIX0VOQUJMRV9TVVBQT1JURUQ7XFxuK1xcbitcXHRpZiAocnggIT0gVFJJX1NUQVRFX0ZBTFNFKSB7XFxuIFxcdFxcdHJlcS1cXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLVxcdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGU7XFxuK1xcdFxcdHJlcS1cXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9IGFwYy1cXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcXG4rXFx0fVxcbiBcXG4gXFx0aWYgKHVwZGF0ZV9rZXkpXFxuIFxcdFxcdG1lbWNweShcXHUwMDI2cmVxLVxcdTAwM2VoYXNoa2V5LCBhcGMtXFx1MDAzZWhhc2hrZXksIE1BTkFfSEFTSF9LRVlfU0laRSk7XFxuQEAgLTIwNDYsMTYgKzIwNTgsMTQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICptYW5hX2J1aWxkX3NrYihzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgdm9pZCAqYnVmX3ZhLFxcbiBcXG4gc3RhdGljIHZvaWQgbWFuYV9yeF9za2Iodm9pZCAqYnVmX3ZhLCBib29sIGZyb21fcG9vbCxcXG4gXFx0XFx0XFx0c3RydWN0IG1hbmFfcnhjb21wX29vYiAqY3FlLCBzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSxcXG4tXFx0XFx0XFx0aW50IGkpXFxuK1xcdFxcdFxcdHUzMiBwa3RfbGVuLCB1MzIgcGt0X2hhc2gpXFxuIHtcXG4gXFx0c3RydWN0IG1hbmFfc3RhdHNfcnggKnJ4X3N0YXRzID0gXFx1MDAyNnJ4cS1cXHUwMDNlc3RhdHM7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcnhxLVxcdTAwM2VuZGV2O1xcbi1cXHR1aW50IHBrdF9sZW4gPSBjcWUtXFx1MDAzZXBwaVtpXS5wa3RfbGVuO1xcbiBcXHR1MTYgcnhxX2lkeCA9IHJ4cS1cXHUwMDNlcnhxX2lkeDtcXG4gXFx0c3RydWN0IG5hcGlfc3RydWN0ICpuYXBpO1xcbiBcXHRzdHJ1Y3QgeGRwX2J1ZmYgeGRwID0ge307XFxuIFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLVxcdHUzMiBoYXNoX3ZhbHVlO1xcbiBcXHR1MzIgYWN0O1xcbiBcXG4gXFx0cnhxLVxcdTAwM2VyeF9jcS53b3JrX2RvbmUrKztcXG5AQCAtMjA5NCwxMiArMjEwNCwxMCBAQCBzdGF0aWMgdm9pZCBtYW5hX3J4X3NrYih2b2lkICpidWZfdmEsIGJvb2wgZnJvbV9wb29sLFxcbiBcXHR9XFxuIFxcbiBcXHRpZiAoY3FlLVxcdTAwM2VyeF9oYXNodHlwZSAhPSAwIFxcdTAwMjZcXHUwMDI2IChuZGV2LVxcdTAwM2VmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfUlhIQVNIKSkge1xcbi1cXHRcXHRoYXNoX3ZhbHVlID0gY3FlLVxcdTAwM2VwcGlbaV0ucGt0X2hhc2g7XFxuLVxcbiBcXHRcXHRpZiAoY3FlLVxcdTAwM2VyeF9oYXNodHlwZSBcXHUwMDI2IE1BTkFfSEFTSF9MNClcXG4tXFx0XFx0XFx0c2tiX3NldF9oYXNoKHNrYiwgaGFzaF92YWx1ZSwgUEtUX0hBU0hfVFlQRV9MNCk7XFxuK1xcdFxcdFxcdHNrYl9zZXRfaGFzaChza2IsIHBrdF9oYXNoLCBQS1RfSEFTSF9UWVBFX0w0KTtcXG4gXFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRza2Jfc2V0X2hhc2goc2tiLCBoYXNoX3ZhbHVlLCBQS1RfSEFTSF9UWVBFX0wzKTtcXG4rXFx0XFx0XFx0c2tiX3NldF9oYXNoKHNrYiwgcGt0X2hhc2gsIFBLVF9IQVNIX1RZUEVfTDMpO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoY3FlLVxcdTAwM2VyeF92bGFudGFnX3ByZXNlbnQpIHtcXG5AQCAtMjI0MCw2ICsyMjQ4LDQzIEBAIHN0YXRpYyB2b2lkIG1hbmFfcmVmaWxsX3J4X29vYihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtYW5hX3J4cSAqcnhxLFxcbiBcXHRyeG9vYi1cXHUwMDNlZG1hX3N5bmNfb2Zmc2V0ID0gZG1hX3N5bmNfb2Zmc2V0O1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtYW5hX3J4cSAqcnhxLFxcbitcXHRcXHRcXHRcXHQgICAgc3RydWN0IG1hbmFfcnhjb21wX29vYiAqb29iLFxcbitcXHRcXHRcXHRcXHQgICAgdTMyIHBrdGxlbiwgdTMyIHBrdF9oYXNoKVxcbit7XFxuK1xcdHN0cnVjdCBtYW5hX3JlY3ZfYnVmX29vYiAqcnhidWZfb29iO1xcbitcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IHJ4cS1cXHUwMDNlbmRldjtcXG4rXFx0dm9pZCAqb2xkX2J1ZiA9IE5VTEw7XFxuK1xcdGJvb2wgb2xkX2ZwO1xcbitcXG4rXFx0cnhidWZfb29iID0gXFx1MDAyNnJ4cS1cXHUwMDNlcnhfb29ic1tyeHEtXFx1MDAzZWJ1Zl9pbmRleF07XFxuK1xcdFdBUk5fT05fT05DRShyeGJ1Zl9vb2ItXFx1MDAzZXdxZV9pbmYud3FlX3NpemVfaW5fYnUgIT0gMSk7XFxuK1xcbitcXHRpZiAodW5saWtlbHkocGt0bGVuIFxcdTAwM2UgcnhxLVxcdTAwM2VkYXRhc2l6ZSkpIHtcXG4rXFx0XFx0LyogSW5jcmVhc2UgaXQgZXZlbiBpZiBtYW5hX3J4X3NrYigpIGlzbid0IGNhbGxlZC4gKi9cXG4rXFx0XFx0cnhxLVxcdTAwM2VyeF9jcS53b3JrX2RvbmUrKztcXG4rXFxuK1xcdFxcdCsrbmRldi1cXHUwMDNlc3RhdHMucnhfZHJvcHBlZDtcXG4rXFx0XFx0bmV0ZGV2X3dhcm5fb25jZShuZGV2LFxcbitcXHRcXHRcXHRcXHQgXFxcIkRyb3BwZWQgb3ZlcnNpemVkIFJYIHBhY2tldDogbGVuPSV1LCBkYXRhc2l6ZT0ldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0IHBrdGxlbiwgcnhxLVxcdTAwM2VkYXRhc2l6ZSk7XFxuK1xcbitcXHRcXHQvKiBSZXVzZSB0aGUgUlggYnVmZmVyIHNpbmNlIHJ4YnVmX29vYiBpcyB1bmNoYW5nZWQuICovXFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdG1hbmFfcmVmaWxsX3J4X29vYihkZXYsIHJ4cSwgcnhidWZfb29iLCBwa3RsZW4sXFxuK1xcdFxcdFxcdFxcdCAgIFxcdTAwMjZvbGRfYnVmLCBcXHUwMDI2b2xkX2ZwKTtcXG4rXFxuK1xcdFxcdC8qIFVuc3VjY2Vzc2Z1bCByZWZpbGwgd2lsbCBoYXZlIG9sZF9idWYgPT0gTlVMTC5cXG4rXFx0XFx0ICogSW4gdGhpcyBjYXNlLCBtYW5hX3J4X3NrYigpIHdpbGwgZHJvcCB0aGUgcGFja2V0LlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0bWFuYV9yeF9za2Iob2xkX2J1Ziwgb2xkX2ZwLCBvb2IsIHJ4cSwgcGt0bGVuLCBwa3RfaGFzaCk7XFxuK1xcdH1cXG4rXFxuK1xcdG1hbmFfbW92ZV93cV90YWlsKHJ4cS1cXHUwMDNlZ2RtYV9ycSwgcnhidWZfb29iLVxcdTAwM2V3cWVfaW5mLndxZV9zaXplX2luX2J1KTtcXG4rXFxuK1xcdG1hbmFfcG9zdF9wa3RfcnhxKHJ4cSk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSxcXG4gXFx0XFx0XFx0XFx0c3RydWN0IGdkbWFfY29tcCAqY3FlKVxcbiB7XFxuQEAgLTIyNDksMTAgKzIyOTQsMTAgQEAgc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLFxcbiBcXHRzdHJ1Y3QgbWFuYV9yZWN2X2J1Zl9vb2IgKnJ4YnVmX29vYjtcXG4gXFx0c3RydWN0IG1hbmFfcG9ydF9jb250ZXh0ICphcGM7XFxuIFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGdjLVxcdTAwM2VkZXY7XFxuK1xcdGJvb2wgY29hbGVzY2VkXzggPSBmYWxzZTtcXG4gXFx0Ym9vbCBjb2FsZXNjZWQgPSBmYWxzZTtcXG4tXFx0dm9pZCAqb2xkX2J1ZiA9IE5VTEw7XFxuLVxcdHUzMiBjdXJyLCBwa3RsZW47XFxuLVxcdGJvb2wgb2xkX2ZwO1xcbitcXHR1MzIgcGt0bGVuO1xcbitcXHRpbnQgcGt0X2k7XFxuIFxcdGludCBpO1xcbiBcXG4gXFx0YXBjID0gbmV0ZGV2X3ByaXYobmRldik7XFxuQEAgLTIyNzUsNiArMjMyMCwxMSBAQCBzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3NfcnhfY3FlKHN0cnVjdCBtYW5hX3J4cSAqcnhxLCBzdHJ1Y3QgbWFuYV9jcSAqY3EsXFxuIFxcdFxcdGNvYWxlc2NlZCA9IHRydWU7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXG4rXFx0Y2FzZSBDUUVfUlhfQ09BTEVTQ0VEXzg6XFxuK1xcdFxcdGNvYWxlc2NlZCA9IHRydWU7XFxuK1xcdFxcdGNvYWxlc2NlZF84ID0gdHJ1ZTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcbiBcXHRjYXNlIENRRV9SWF9PQkpFQ1RfRkVOQ0U6XFxuIFxcdFxcdGNvbXBsZXRlKFxcdTAwMjZyeHEtXFx1MDAzZWZlbmNlX2V2ZW50KTtcXG4gXFx0XFx0cmV0dXJuO1xcbkBAIC0yMjg2LDU0ICsyMzM2LDQ4IEBAIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSxcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHR9XFxuIFxcbitcXHRwa3RfaSA9IDA7XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSTsgaSsrKSB7XFxuLVxcdFxcdG9sZF9idWYgPSBOVUxMO1xcbi1cXHRcXHRwa3RsZW4gPSBvb2ItXFx1MDAzZXBwaVtpXS5wa3RfbGVuO1xcbi1cXHRcXHRpZiAocGt0bGVuID09IDApXFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXG4tXFx0XFx0Y3VyciA9IHJ4cS1cXHUwMDNlYnVmX2luZGV4O1xcbi1cXHRcXHRyeGJ1Zl9vb2IgPSBcXHUwMDI2cnhxLVxcdTAwM2VyeF9vb2JzW2N1cnJdO1xcbi1cXHRcXHRXQVJOX09OX09OQ0UocnhidWZfb29iLVxcdTAwM2V3cWVfaW5mLndxZV9zaXplX2luX2J1ICE9IDEpO1xcbi1cXG4tXFx0XFx0aWYgKHVubGlrZWx5KHBrdGxlbiBcXHUwMDNlIHJ4cS1cXHUwMDNlZGF0YXNpemUpKSB7XFxuLVxcdFxcdFxcdC8qIEluY3JlYXNlIGl0IGV2ZW4gaWYgbWFuYV9yeF9za2IoKSBpc24ndCBjYWxsZWQuICovXFxuLVxcdFxcdFxcdHJ4cS1cXHUwMDNlcnhfY3Eud29ya19kb25lKys7XFxuK1xcdFxcdHUzMiBwa3RfaGFzaDtcXG4gXFxuLVxcdFxcdFxcdCsrbmRldi1cXHUwMDNlc3RhdHMucnhfZHJvcHBlZDtcXG4tXFx0XFx0XFx0bmV0ZGV2X3dhcm5fb25jZShuZGV2LFxcbi1cXHRcXHRcXHRcXHRcXFwiRHJvcHBlZCBvdmVyc2l6ZWQgUlggcGFja2V0OiBsZW49JXUsIGRhdGFzaXplPSV1XFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRwa3RsZW4sIHJ4cS1cXHUwMDNlZGF0YXNpemUpO1xcbi1cXG4tXFx0XFx0XFx0LyogUmV1c2UgdGhlIFJYIGJ1ZmZlciBzaW5jZSByeGJ1Zl9vb2IgaXMgdW5jaGFuZ2VkLiAqL1xcbitcXHRcXHRpZiAoY29hbGVzY2VkXzgpIHtcXG4rXFx0XFx0XFx0LyogOC1wa3QgbW9kZTogMiBwYWNrZXRzIHBlciBQUEkgZW50cnkgKi9cXG4rXFx0XFx0XFx0cGt0bGVuID0gb29iLVxcdTAwM2VwcGlbaV0ucGt0X2xlbjA7XFxuK1xcdFxcdFxcdHBrdF9oYXNoID0gb29iLVxcdTAwM2VwcGlbaV0ucGt0X2hhc2gwO1xcbiBcXHRcXHR9IGVsc2Uge1xcbi1cXG4tXFx0XFx0XFx0bWFuYV9yZWZpbGxfcnhfb29iKGRldiwgcnhxLCByeGJ1Zl9vb2IsIHBrdGxlbixcXG4tXFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNm9sZF9idWYsIFxcdTAwMjZvbGRfZnApO1xcbi1cXG4tXFx0XFx0XFx0LyogVW5zdWNjZXNzZnVsIHJlZmlsbCB3aWxsIGhhdmUgb2xkX2J1ZiA9PSBOVUxMLlxcbi1cXHRcXHRcXHQgKiBJbiB0aGlzIGNhc2UsIG1hbmFfcnhfc2tiKCkgd2lsbCBkcm9wIHRoZSBwYWNrZXQuXFxuLVxcdFxcdFxcdCAqL1xcbi1cXHRcXHRcXHRtYW5hX3J4X3NrYihvbGRfYnVmLCBvbGRfZnAsIG9vYiwgcnhxLCBpKTtcXG4rXFx0XFx0XFx0cGt0bGVuID0gb29iLVxcdTAwM2VwcGlbaV0ucGt0X2xlbjtcXG4rXFx0XFx0XFx0cGt0X2hhc2ggPSBvb2ItXFx1MDAzZXBwaVtpXS5wa3RfaGFzaDtcXG4gXFx0XFx0fVxcbitcXHRcXHRpZiAocGt0bGVuID09IDApXFxuK1xcdFxcdFxcdGJyZWFrO1xcbiBcXG4tXFx0XFx0bWFuYV9tb3ZlX3dxX3RhaWwocnhxLVxcdTAwM2VnZG1hX3JxLFxcbi1cXHRcXHRcXHRcXHQgIHJ4YnVmX29vYi1cXHUwMDNld3FlX2luZi53cWVfc2l6ZV9pbl9idSk7XFxuLVxcbi1cXHRcXHRtYW5hX3Bvc3RfcGt0X3J4cShyeHEpO1xcbitcXHRcXHRtYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChkZXYsIHJ4cSwgb29iLCBwa3RsZW4sIHBrdF9oYXNoKTtcXG4rXFx0XFx0cGt0X2krKztcXG4gXFxuIFxcdFxcdGlmICghY29hbGVzY2VkKVxcbiBcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdC8qIFByb2Nlc3MgMm5kIHBhY2tldCBmcm9tIHRoZSBzYW1lIFBQSSBpbiA4LXBrdCBtb2RlICovXFxuK1xcdFxcdGlmIChjb2FsZXNjZWRfOCkge1xcbitcXHRcXHRcXHRwa3RsZW4gPSBvb2ItXFx1MDAzZXBwaVtpXS5wa3RfbGVuMTtcXG4rXFx0XFx0XFx0cGt0X2hhc2ggPSBvb2ItXFx1MDAzZXBwaVtpXS5wa3RfaGFzaDE7XFxuK1xcdFxcdFxcdGlmIChwa3RsZW4gPT0gMClcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcbitcXHRcXHRcXHRtYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChkZXYsIHJ4cSwgb29iLCBwa3RsZW4sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHBrdF9oYXNoKTtcXG4rXFx0XFx0XFx0cGt0X2krKztcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHQvKiBDb2xsZWN0IGNvYWxlc2NlZCBDUUUgY291bnQgYmFzZWQgb24gcGFja2V0cyBwcm9jZXNzZWQuXFxuLVxcdCAqIENvYWxlc2NlZCBDUUVzIGhhdmUgYXQgbGVhc3QgMiBwYWNrZXRzLCBzbyBpbmRleCBpcyBpIC0gMi5cXG4rXFx0ICogQ29hbGVzY2VkIENRRXMgaGF2ZSBhdCBsZWFzdCAyIHBhY2tldHMsIHNvIGluZGV4IGlzIHBrdF9pIC0gMi5cXG4gXFx0ICovXFxuLVxcdGlmIChpIFxcdTAwM2UgMSkge1xcbitcXHRpZiAocGt0X2kgXFx1MDAzZSAxKSB7XFxuIFxcdFxcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXFx1MDAyNnJ4cS1cXHUwMDNlc3RhdHMuc3luY3ApO1xcbi1cXHRcXHRyeHEtXFx1MDAzZXN0YXRzLmNvYWxlc2NlZF9jcWVbaSAtIDJdKys7XFxuK1xcdFxcdHJ4cS1cXHUwMDNlc3RhdHMuY29hbGVzY2VkX2NxZVtwa3RfaSAtIDJdKys7XFxuIFxcdFxcdHU2NF9zdGF0c191cGRhdGVfZW5kKFxcdTAwMjZyeHEtXFx1MDAzZXN0YXRzLnN5bmNwKTtcXG4tXFx0fSBlbHNlIGlmICghaSBcXHUwMDI2XFx1MDAyNiAhcGt0bGVuKSB7XFxuK1xcdH0gZWxzZSBpZiAoIXBrdF9pIFxcdTAwMjZcXHUwMDI2ICFwa3RsZW4pIHtcXG4gXFx0XFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcXHUwMDI2cnhxLVxcdTAwM2VzdGF0cy5zeW5jcCk7XFxuIFxcdFxcdHJ4cS1cXHUwMDNlc3RhdHMucGt0X2xlbjBfZXJyKys7XFxuIFxcdFxcdHU2NF9zdGF0c191cGRhdGVfZW5kKFxcdTAwMjZyeHEtXFx1MDAzZXN0YXRzLnN5bmNwKTtcXG5AQCAtMzc2Myw2ICszODA3LDcgQEAgc3RhdGljIGludCBtYW5hX3Byb2JlX3BvcnQoc3RydWN0IG1hbmFfY29udGV4dCAqYWMsIGludCBwb3J0X2lkeCxcXG4gXFx0YXBjLVxcdTAwM2Vwb3J0X2lkeCA9IHBvcnRfaWR4O1xcbiBcXHRhcGMtXFx1MDAzZWxpbmtfY2ZnX2Vycm9yID0gMTtcXG4gXFx0YXBjLVxcdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPSAwO1xcbitcXHRhcGMtXFx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPSAwO1xcbiBcXG4gXFx0LyogSW5pdGlhbGl6ZSBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyBpZiBzdXBwb3J0ZWQgYnkgSFcgKi9cXG4gXFx0aWYgKGdjLVxcdTAwM2VwZl9jYXBfZmxhZ3MxIFxcdTAwMjYgR0RNQV9QRl9DQVBfRkxBR18xX0RZTl9JTlRFUlJVUFRfTU9ERVJBVElPTikge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jXFxuaW5kZXggOWUzMWUyNTk1YWUzMi4uMDRmODc3NzA3Y2M2YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jXFxuQEAgLTE2OSw3ICsxNjksNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9zdHJpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgc3RyaW5nc2V0LCB1OCAqZGF0YSlcXG4gXFx0XFx0ZXRodG9vbF9zcHJpbnRmKFxcdTAwMjZkYXRhLCBcXFwicnhfJWRfeGRwX3R4XFxcIiwgaSk7XFxuIFxcdFxcdGV0aHRvb2xfc3ByaW50ZihcXHUwMDI2ZGF0YSwgXFxcInJ4XyVkX3hkcF9yZWRpcmVjdFxcXCIsIGkpO1xcbiBcXHRcXHRldGh0b29sX3NwcmludGYoXFx1MDAyNmRhdGEsIFxcXCJyeF8lZF9wa3RfbGVuMF9lcnJcXFwiLCBpKTtcXG4tXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaisrKVxcbitcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqKyspXFxuIFxcdFxcdFxcdGV0aHRvb2xfc3ByaW50ZihcXHUwMDI2ZGF0YSwgXFxcInJ4XyVkX2NvYWxlc2NlZF9jcWVfJWRcXFwiLCBpLCBqICsgMik7XFxuIFxcdH1cXG4gXFxuQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHR1NjQgeGRwX2Ryb3A7XFxuIFxcdHU2NCB4ZHBfdHg7XFxuIFxcdHU2NCBwa3RfbGVuMF9lcnI7XFxuLVxcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMV07XFxuK1xcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfQ1FFX0NPQUxfUEtUU184IC0gMV07XFxuIFxcdHU2NCB0c29fcGFja2V0cztcXG4gXFx0dTY0IHRzb19ieXRlcztcXG4gXFx0dTY0IHRzb19pbm5lcl9wYWNrZXRzO1xcbkBAIC0yNDUsNyArMjQ1LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0XFx0eGRwX3R4ID0gcnhfc3RhdHMtXFx1MDAzZXhkcF90eDtcXG4gXFx0XFx0XFx0eGRwX3JlZGlyZWN0ID0gcnhfc3RhdHMtXFx1MDAzZXhkcF9yZWRpcmVjdDtcXG4gXFx0XFx0XFx0cGt0X2xlbjBfZXJyID0gcnhfc3RhdHMtXFx1MDAzZXBrdF9sZW4wX2VycjtcXG4tXFx0XFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaisrKVxcbitcXHRcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqKyspXFxuIFxcdFxcdFxcdFxcdGNvYWxlc2NlZF9jcWVbal0gPSByeF9zdGF0cy1cXHUwMDNlY29hbGVzY2VkX2NxZVtqXTtcXG4gXFx0XFx0fSB3aGlsZSAodTY0X3N0YXRzX2ZldGNoX3JldHJ5KFxcdTAwMjZyeF9zdGF0cy1cXHUwMDNlc3luY3AsIHN0YXJ0KSk7XFxuIFxcbkBAIC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIHZvaWQgbWFuYV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0ZGF0YVtpKytdID0geGRwX3R4O1xcbiBcXHRcXHRkYXRhW2krK10gPSB4ZHBfcmVkaXJlY3Q7XFxuIFxcdFxcdGRhdGFbaSsrXSA9IHBrdF9sZW4wX2VycjtcXG4tXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMTsgaisrKVxcbitcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqKyspXFxuIFxcdFxcdFxcdGRhdGFbaSsrXSA9IGNvYWxlc2NlZF9jcWVbal07XFxuIFxcdH1cXG4gXFxuQEAgLTQwOCw2ICs0MDgsNyBAQCBzdGF0aWMgaW50IG1hbmFfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHRzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYyA9IG5ldGRldl9wcml2KG5kZXYpO1xcbiBcXG4gXFx0a2VybmVsX2NvYWwtXFx1MDAzZXJ4X2NxZV9mcmFtZXMgPVxcbitcXHRcXHRhcGMtXFx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPyBNQU5BX0NRRV9DT0FMX1BLVFNfOCA6XFxuIFxcdFxcdGFwYy1cXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlID8gTUFOQV9SWENPTVBfT09CX05VTV9QUEkgOiAxO1xcbiBcXG4gXFx0a2VybmVsX2NvYWwtXFx1MDAzZXJ4X2NxZV9uc2VjcyA9IGFwYy1cXHUwMDNlY3FlX2NvYWxlc2NpbmdfdGltZW91dF9ucztcXG5AQCAtNDQzLDE1ICs0NDQsMTkgQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0dTE2IGludHJfbW9kcl90eF91c2VjO1xcbiBcXHRcXHR1MTYgaW50cl9tb2RyX3R4X2NvbXA7XFxuIFxcdFxcdHU4IGNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcXG4rXFx0XFx0dTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcXG4gXFx0XFx0Ym9vbCByeF9kaW1fZW5hYmxlZDtcXG4gXFx0XFx0Ym9vbCB0eF9kaW1fZW5hYmxlZDtcXG4gXFx0fSBzYXZlZDtcXG4gXFx0Ym9vbCBtb2RyX2NoYW5nZWQgPSBmYWxzZTtcXG4gXFx0Ym9vbCBkaW1fY2hhbmdlZCA9IGZhbHNlO1xcbiBcXHRzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYztcXG4rXFx0dTMyIG1heF9jcWVfZnJhbWVzO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4gXFx0Z2MgPSBhcGMtXFx1MDAzZWFjLVxcdTAwM2VnZG1hX2Rldi1cXHUwMDNlZ2RtYV9jb250ZXh0O1xcbitcXHRtYXhfY3FlX2ZyYW1lcyA9IGdjLVxcdTAwM2VjcWU4X2NvYWxlc2Npbmdfc3VwID8gTUFOQV9DUUVfQ09BTF9QS1RTXzggOlxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSTtcXG4gXFxuIFxcdC8qIEJvdGggc3RhdGljIGFuZCBkeW5hbWljIGludGVycnVwdCBtb2RlcmF0aW9uIChESU0pIHJlbHkgb24gdGhlXFxuIFxcdCAqIHNhbWUgSFcgY2FwYWJpbGl0eSBhZHZlcnRpc2VkIGJ5IHRoZSBQRi5cXG5AQCAtNDY2LDEwICs0NzEsMTIgQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGtlcm5lbF9jb2FsLVxcdTAwM2VyeF9jcWVfZnJhbWVzICE9IDEgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgIGtlcm5lbF9jb2FsLVxcdTAwM2VyeF9jcWVfZnJhbWVzICE9IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJKSB7XFxuK1xcdCAgICBrZXJuZWxfY29hbC1cXHUwMDNlcnhfY3FlX2ZyYW1lcyAhPSBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAga2VybmVsX2NvYWwtXFx1MDAzZXJ4X2NxZV9mcmFtZXMgIT0gbWF4X2NxZV9mcmFtZXMpIHtcXG4gXFx0XFx0TkxfU0VUX0VSUl9NU0dfRk1UKGV4dGFjayxcXG4tXFx0XFx0XFx0XFx0ICAgXFxcInJ4LWZyYW1lcyBtdXN0IGJlIDEgb3IgJXUsIGdvdCAldVxcXCIsXFxuK1xcdFxcdFxcdFxcdCAgIFxcXCJyeC1mcmFtZXMgbXVzdCBiZSAxIG9yICV1JXMsIGdvdCAldVxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJLFxcbitcXHRcXHRcXHRcXHQgICBnYy1cXHUwMDNlY3FlOF9jb2FsZXNjaW5nX3N1cCA/IFxcXCIgb3IgOFxcXCIgOiBcXFwiXFxcIixcXG4gXFx0XFx0XFx0XFx0ICAga2VybmVsX2NvYWwtXFx1MDAzZXJ4X2NxZV9mcmFtZXMpO1xcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbkBAIC01MTQsOCArNTIxLDExIEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuIFxcdHNhdmVkLnR4X2RpbV9lbmFibGVkID0gYXBjLVxcdTAwM2V0eF9kaW1fZW5hYmxlZDtcXG4gXFxuIFxcdHNhdmVkLmNxZV9jb2FsZXNjaW5nX2VuYWJsZSA9IGFwYy1cXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlO1xcbitcXHRzYXZlZC5jcWU4X2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLVxcdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlO1xcbiBcXHRhcGMtXFx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZSA9XFxuLVxcdFxcdGtlcm5lbF9jb2FsLVxcdTAwM2VyeF9jcWVfZnJhbWVzID09IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJO1xcbitcXHRcXHRrZXJuZWxfY29hbC1cXHUwMDNlcnhfY3FlX2ZyYW1lcyBcXHUwMDNlPSBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSTtcXG4rXFx0YXBjLVxcdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlID1cXG4rXFx0XFx0a2VybmVsX2NvYWwtXFx1MDAzZXJ4X2NxZV9mcmFtZXMgPT0gTUFOQV9DUUVfQ09BTF9QS1RTXzg7XFxuIFxcbiBcXHRpZiAoIWFwYy1cXHUwMDNlcG9ydF9pc191cCkge1xcbiBcXHRcXHRXUklURV9PTkNFKGFwYy1cXHUwMDNlcnhfZGltX2VuYWJsZWQsICEhZWMtXFx1MDAzZXVzZV9hZGFwdGl2ZV9yeF9jb2FsZXNjZSk7XFxuQEAgLTUyMyw3ICs1MzMsOCBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGFwYy1cXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlICE9IHNhdmVkLmNxZV9jb2FsZXNjaW5nX2VuYWJsZSkge1xcbitcXHRpZiAoYXBjLVxcdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgIT0gc2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlIHx8XFxuK1xcdCAgICBhcGMtXFx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgIT0gc2F2ZWQuY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSkge1xcbiBcXHRcXHQvKiBDUUUgY29hbGVzY2luZyBzZXR0aW5nIGlzIGFwcGxpZWQgdmlhIFJTUyBjb25maWd1cmF0aW9uLiAqL1xcbiBcXHRcXHRlcnIgPSBtYW5hX2NvbmZpZ19yc3MoYXBjLCBUUklfU1RBVEVfVFJVRSwgZmFsc2UsIGZhbHNlKTtcXG4gXFx0XFx0aWYgKGVycikge1xcbkBAIC01MzEsNiArNTQyLDggQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0XFx0XFx0ICAgZXJyKTtcXG4gXFx0XFx0XFx0YXBjLVxcdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPVxcbiBcXHRcXHRcXHRcXHRzYXZlZC5jcWVfY29hbGVzY2luZ19lbmFibGU7XFxuK1xcdFxcdFxcdGFwYy1cXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9XFxuK1xcdFxcdFxcdFxcdHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGU7XFxuIFxcdFxcdFxcdGFwYy1cXHUwMDNlaW50cl9tb2RyX3J4X3VzZWMgPSBzYXZlZC5pbnRyX21vZHJfcnhfdXNlYztcXG4gXFx0XFx0XFx0YXBjLVxcdTAwM2VpbnRyX21vZHJfcnhfY29tcCA9IHNhdmVkLmludHJfbW9kcl9yeF9jb21wO1xcbiBcXHRcXHRcXHRhcGMtXFx1MDAzZWludHJfbW9kcl90eF91c2VjID0gc2F2ZWQuaW50cl9tb2RyX3R4X3VzZWM7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oIGIvaW5jbHVkZS9uZXQvbWFuYS9nZG1hLmhcXG5pbmRleCA4NTI5Y2VmMGQ3YzQ1Li43MGE3ZjFmZWU1ZDNiIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oXFxuKysrIGIvaW5jbHVkZS9uZXQvbWFuYS9nZG1hLmhcXG5AQCAtMTgyLDYgKzE4Miw3IEBAIHN0cnVjdCBnZG1hX2dlbmVyYWxfcmVxIHtcXG4gI2RlZmluZSBHRE1BX01FU1NBR0VfVjIgMlxcbiAjZGVmaW5lIEdETUFfTUVTU0FHRV9WMyAzXFxuICNkZWZpbmUgR0RNQV9NRVNTQUdFX1Y0IDRcXG4rI2RlZmluZSBHRE1BX01FU1NBR0VfVjUgNVxcbiBcXG4gc3RydWN0IGdkbWFfZ2VuZXJhbF9yZXNwIHtcXG4gXFx0c3RydWN0IGdkbWFfcmVzcF9oZHIgaGRyO1xcbkBAIC00MjgsNiArNDI5LDkgQEAgc3RydWN0IGdkbWFfY29udGV4dCB7XFxuIFxcdC8qIEwyIE1UVSAqL1xcbiBcXHR1MTYgYWRhcHRlcl9tdHU7XFxuIFxcbitcXHQvKiBOSUMgc3VwcG9ydHMgQ1FFIHg4IGNvYWxlc2NpbmcgKi9cXG4rXFx0Ym9vbCBjcWU4X2NvYWxlc2Npbmdfc3VwO1xcbitcXG4gXFx0LyogVGhpcyBtYXBzIGEgQ1EgaW5kZXggdG8gdGhlIHF1ZXVlIHN0cnVjdHVyZS4gKi9cXG4gXFx0dW5zaWduZWQgaW50XFx0XFx0bWF4X251bV9jcXM7XFxuIFxcdHN0cnVjdCBnZG1hX3F1ZXVlXFx0KipjcV90YWJsZTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmggYi9pbmNsdWRlL25ldC9tYW5hL21hbmEuaFxcbmluZGV4IDRkMDQxZmI4NDM3ZjUuLjUwYWNiNmJmOGYxMjUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmhcXG4rKysgYi9pbmNsdWRlL25ldC9tYW5hL21hbmEuaFxcbkBAIC02Miw5ICs2MiwxMiBAQCBlbnVtIFRSSV9TVEFURSB7XFxuIFxcbiAjZGVmaW5lIE1BWF9QT1JUU19JTl9NQU5BX0RFViAyNTZcXG4gXFxuLS8qIE1heGltdW0gbnVtYmVyIG9mIHBhY2tldHMgcGVyIGNvYWxlc2NlZCBDUUUgKi9cXG4rLyogTWF4aW11bSBudW1iZXIgb2YgUFBJcyBwZXIgY29hbGVzY2VkIENRRSAqL1xcbiAjZGVmaW5lIE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIDRcXG4gXFxuKy8qIDgtcGt0IG1vZGUgcGFja3MgdXAgdG8gMiBwYWNrZXRzIHBlciBQUEkgZW50cnkgKi9cXG4rI2RlZmluZSBNQU5BX0NRRV9DT0FMX1BLVFNfOCA4XFxuK1xcbiAvKiBEZWZhdWx0L21heCBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyAqL1xcbiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX1VTRUNfREVGIDBcXG4gI2RlZmluZSBNQU5BX0lOVFJfTU9EUl9DT01QX0RFRiAwXFxuQEAgLTc5LDcgKzgyLDcgQEAgZW51bSBUUklfU1RBVEUge1xcbiAjZGVmaW5lIE1BTkFfSU5UUl9NT0RSX0NPTVBfTUFTSyAgIEdFTk1BU0soMjMsIDE2KVxcbiBcXG4gLyogVXBkYXRlIHRoaXMgY291bnQgd2hlbmV2ZXIgdGhlIHJlc3BlY3RpdmUgc3RydWN0dXJlcyBhcmUgY2hhbmdlZCAqL1xcbi0jZGVmaW5lIE1BTkFfU1RBVFNfUlhfQ09VTlQgKDYgKyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDEpXFxuKyNkZWZpbmUgTUFOQV9TVEFUU19SWF9DT1VOVCAoNiArIE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMSlcXG4gI2RlZmluZSBNQU5BX1NUQVRTX1RYX0NPVU5UIDExXFxuIFxcbiAjZGVmaW5lIE1BTkFfUlhfRlJBR19BTElHTk1FTlQgNjRcXG5AQCAtOTEsNyArOTQsNyBAQCBzdHJ1Y3QgbWFuYV9zdGF0c19yeCB7XFxuIFxcdHU2NCB4ZHBfdHg7XFxuIFxcdHU2NCB4ZHBfcmVkaXJlY3Q7XFxuIFxcdHU2NCBwa3RfbGVuMF9lcnI7XFxuLVxcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMV07XFxuK1xcdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfQ1FFX0NPQUxfUEtUU184IC0gMV07XFxuIFxcdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBzeW5jcDtcXG4gfTtcXG4gXFxuQEAgLTIwMiw2ICsyMDUsNyBAQCBlbnVtIG1hbmFfY3FlX3R5cGUge1xcbiBcXHRDUUVfUlhfQ09BTEVTQ0VEXzRcXHRcXHQ9IDIsXFxuIFxcdENRRV9SWF9PQkpFQ1RfRkVOQ0VcXHRcXHQ9IDMsXFxuIFxcdENRRV9SWF9UUlVOQ0FURURcXHRcXHQ9IDQsXFxuK1xcdENRRV9SWF9DT0FMRVNDRURfOFxcdFxcdD0gNyxcXG4gXFxuIFxcdENRRV9UWF9PS0FZXFx0XFx0XFx0PSAzMixcXG4gXFx0Q1FFX1RYX1NBX0RST1BcXHRcXHRcXHQ9IDMzLFxcbkBAIC0yMzgsMTIgKzI0MiwyNiBAQCBzdHJ1Y3QgbWFuYV9jcWVfaGVhZGVyIHtcXG4gI2RlZmluZSBNQU5BX0hBU0hfTDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuIFxcdChORElTX0hBU0hfVENQX0lQVjQgfCBORElTX0hBU0hfVURQX0lQVjQgfCBORElTX0hBU0hfVENQX0lQVjYgfCAgICAgIFxcXFxcXG4gXFx0IE5ESVNfSEFTSF9VRFBfSVBWNiB8IE5ESVNfSEFTSF9UQ1BfSVBWNl9FWCB8IE5ESVNfSEFTSF9VRFBfSVBWNl9FWClcXG4rI2RlZmluZSBNQU5BX0hBU0hfRU5BQkxFX1NVUFBPUlRFRCBcXFxcXFxuK1xcdChORElTX0hBU0hfSVBWNCB8IE5ESVNfSEFTSF9UQ1BfSVBWNCB8IE5ESVNfSEFTSF9VRFBfSVBWNCB8IFxcXFxcXG4rXFx0IE5ESVNfSEFTSF9JUFY2IHwgTkRJU19IQVNIX1RDUF9JUFY2IHwgTkRJU19IQVNIX1VEUF9JUFY2KVxcbitcXG4rLyogUmVhZCBQUEkgaW4gdHdvIGRpZmZlcmVudCBsYXlvdXRzIGJhc2VkIG9uIGNxZV90eXBlICovXFxuK3VuaW9uIG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHtcXG4rXFx0c3RydWN0IHtcXG4rXFx0XFx0dTMyIHBrdF9sZW4gOiAxNjtcXG4rXFx0XFx0dTMyIHJlc2VydmVkMSA6IDE2O1xcbitcXHRcXHR1MzIgcmVzZXJ2ZWQyO1xcbitcXHRcXHR1MzIgcGt0X2hhc2g7XFxuK1xcdH07XFxuIFxcbi1zdHJ1Y3QgbWFuYV9yeGNvbXBfcGVycGt0X2luZm8ge1xcbi1cXHR1MzIgcGt0X2xlblxcdDogMTY7XFxuLVxcdHUzMiByZXNlcnZlZDFcXHQ6IDE2O1xcbi1cXHR1MzIgcmVzZXJ2ZWQyO1xcbi1cXHR1MzIgcGt0X2hhc2g7XFxuK1xcdC8qIFVwIHRvIHR3byBwa3RzIHBlciBQUEkgZW50cnkgKi9cXG4rXFx0c3RydWN0IHtcXG4rXFx0XFx0dTMyIHBrdF9oYXNoMDtcXG4rXFx0XFx0dTE2IHBrdF9sZW4wO1xcbitcXHRcXHR1MTYgcGt0X2xlbjE7XFxuK1xcdFxcdHUzMiBwa3RfaGFzaDE7XFxuK1xcdH07XFxuIH07IC8qIEhXIERBVEEgKi9cXG4gXFxuIC8qIFJlY2VpdmUgY29tcGxldGlvbiBPT0IgKi9cXG5AQCAtMjY0LDcgKzI4Miw3IEBAIHN0cnVjdCBtYW5hX3J4Y29tcF9vb2Ige1xcbiBcXHR1MzIgcnhfdWRwX2NzdW1fZmFpbFxcdFxcdDogMTtcXG4gXFx0dTMyIHJlc2VydmVkMlxcdFxcdFxcdDogMTtcXG4gXFxuLVxcdHN0cnVjdCBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyBwcGlbTUFOQV9SWENPTVBfT09CX05VTV9QUEldO1xcbitcXHR1bmlvbiBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyBwcGlbTUFOQV9SWENPTVBfT09CX05VTV9QUEldO1xcbiBcXG4gXFx0dTMyIHJ4X3dxZV9vZmZzZXQ7XFxuIH07IC8qIEhXIERBVEEgKi9cXG5AQCAtNjA3LDYgKzYyNSw3IEBAIHN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCB7XFxuIFxcdGJvb2wgcG9ydF9zdF9zYXZlOyAvKiBTYXZlZCBwb3J0IHN0YXRlICovXFxuIFxcbiBcXHR1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7XFxuK1xcdHU4IGNxZThfY29hbGVzY2luZ19lbmFibGU7XFxuIFxcdHUzMiBjcWVfY29hbGVzY2luZ190aW1lb3V0X25zO1xcbiBcXG4gXFx0LyogSW50ZXJydXB0IG1vZGVyYXRpb24gc2V0dGluZ3MgKi9cXG5AQCAtNzUxLDYgKzc3MCw4IEBAIHN0cnVjdCBtYW5hX3F1ZXJ5X2RldmljZV9jZmdfcmVxIHtcXG4gXFx0dTMyIHJlc2VydmVkO1xcbiB9OyAvKiBIVyBEQVRBICovXFxuIFxcbisjZGVmaW5lIE1BTkFfUEZfRkxBR18xX0NRRV84X0NPQUxFU0NJTkdfU1VQUE9SVEVEIEJJVCg1KVxcbitcXG4gc3RydWN0IG1hbmFfcXVlcnlfZGV2aWNlX2NmZ19yZXNwIHtcXG4gXFx0c3RydWN0IGdkbWFfcmVzcF9oZHIgaGRyO1xcbiBcXG5AQCAtOTg2LDcgKzEwMDcsMTAgQEAgc3RydWN0IG1hbmFfY2ZnX3J4X3N0ZWVyX3JlcV92MiB7XFxuIFxcdG1hbmFfaGFuZGxlX3QgZGVmYXVsdF9yeG9iajtcXG4gXFx0dTggaGFzaGtleVtNQU5BX0hBU0hfS0VZX1NJWkVdO1xcbiBcXHR1OCBjcWVfY29hbGVzY2luZ19lbmFibGU7XFxuLVxcdHU4IHJlc2VydmVkMls3XTtcXG4rXFx0dTggcmVzZXJ2ZWQyWzNdO1xcbitcXHR1MTYgcnNzX2hhc2hfdHlwZXM7XFxuK1xcdHU4IGNxZThfY29hbGVzY2luZ19lbmFibGU7IC8qIHY1IG1lc3NhZ2UgKi9cXG4rXFx0dTggcmVzZXJ2ZWQzO1xcbiBcXHRtYW5hX2hhbmRsZV90IGluZGlyX3RhYltdIF9fY291bnRlZF9ieShudW1faW5kaXJfZW50cmllcyk7XFxuIH07IC8qIEhXIERBVEEgKi9cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA2OjE5OjQ0LjgzNzQ4MTA5M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyMDEwMTQ1NjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgZHJpdmVyIHRvIGFkZCBzdXBwb3J0IGZvciBDUUUgOC1wYWNrZXQgY29hbGVzY2luZy4gTUFOQSBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIFNtYXJ0TklDIGRldmljZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgc28gdGhpcyBjb2RlIGNhbm5vdCBiZSByZWFjaGVkIG9yIHRlc3RlZCBieSB0aGUgZnV6emVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDdhNDAxMDBiNzNmN2IwODE5ZWRiZWFlODRlZDhjNTRiN2Y3YjI3ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIgMDY6MTk6NDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmNcbmluZGV4IGE4MGNmMGJjNDYyY2YuLmEzYzI5MDc3ZGFmNWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uY1xuQEAgLTEyNDEsNiArMTI0MSw5IEBAIGludCBtYW5hX2dkX3F1ZXJ5X2RldmljZV9jZmcoc3RydWN0IGdkbWFfY29udGV4dCAqZ2MsIHUzMiBwcm90b19tYWpvcl92ZXIsXG4gXHRcdHJldHVybiBlcnI7XG4gXHR9XG4gXG4rXHRnYy1cdTAwM2VjcWU4X2NvYWxlc2Npbmdfc3VwID0gISEocmVzcC5wZl9jYXBfZmxhZ3MxIFx1MDAyNlxuK1x0XHRcdFx0ICAgICBNQU5BX1BGX0ZMQUdfMV9DUUVfOF9DT0FMRVNDSU5HX1NVUFBPUlRFRCk7XG4rXG4gXHQqbWF4X251bV92cG9ydHMgPSByZXNwLm1heF9udW1fdnBvcnRzO1xuIFxuIFx0aWYgKHJlc3AuaGRyLnJlc3BvbnNlLm1zZ192ZXJzaW9uIFx1MDAzZT0gR0RNQV9NRVNTQUdFX1YyKSB7XG5AQCAtMTQyNiw3ICsxNDI5LDExIEBAIHN0YXRpYyBpbnQgbWFuYV9jZmdfdnBvcnRfc3RlZXJpbmcoc3RydWN0IG1hbmFfcG9ydF9jb250ZXh0ICphcGMsXG4gXHRtYW5hX2dkX2luaXRfcmVxX2hkcihcdTAwMjZyZXEtXHUwMDNlaGRyLCBNQU5BX0NPTkZJR19WUE9SVF9SWCwgcmVxX2J1Zl9zaXplLFxuIFx0XHRcdCAgICAgc2l6ZW9mKHJlc3ApKTtcbiBcbi1cdHJlcS1cdTAwM2VoZHIucmVxLm1zZ192ZXJzaW9uID0gR0RNQV9NRVNTQUdFX1YyO1xuK1x0LyogUmVxdWVzdCBcdTAwMjYgcmVzcG9uc2UgdmVyc2lvbnMgY2FuIGJlIGRpZmZlcmVudC5cbitcdCAqIEhXIGNhbiBoYW5kbGUgbmV3ZXIgbXNnIHZlcnNpb25zLCBieSBza2lwcGluZ1xuK1x0ICogbmV3IGZpZWxkcy5cbitcdCAqL1xuK1x0cmVxLVx1MDAzZWhkci5yZXEubXNnX3ZlcnNpb24gPSBHRE1BX01FU1NBR0VfVjU7XG4gXHRyZXEtXHUwMDNlaGRyLnJlc3AubXNnX3ZlcnNpb24gPSBHRE1BX01FU1NBR0VfVjI7XG4gXG4gXHRyZXEtXHUwMDNldnBvcnQgPSBhcGMtXHUwMDNlcG9ydF9oYW5kbGU7XG5AQCAtMTQ0MCw4ICsxNDQ3LDEzIEBAIHN0YXRpYyBpbnQgbWFuYV9jZmdfdnBvcnRfc3RlZXJpbmcoc3RydWN0IG1hbmFfcG9ydF9jb250ZXh0ICphcGMsXG4gXHRyZXEtXHUwMDNldXBkYXRlX2luZGlyX3RhYiA9IHVwZGF0ZV90YWI7XG4gXHRyZXEtXHUwMDNlZGVmYXVsdF9yeG9iaiA9IGFwYy1cdTAwM2VkZWZhdWx0X3J4b2JqO1xuIFxuLVx0aWYgKHJ4ICE9IFRSSV9TVEFURV9GQUxTRSlcbitcdC8qIFJlcXVlc3QtbXNnIHY1IHJlcXVpcmVzIHRoaXMgZmllbGQgKi9cbitcdHJlcS1cdTAwM2Vyc3NfaGFzaF90eXBlcyA9IE1BTkFfSEFTSF9FTkFCTEVfU1VQUE9SVEVEO1xuK1xuK1x0aWYgKHJ4ICE9IFRSSV9TVEFURV9GQUxTRSkge1xuIFx0XHRyZXEtXHUwMDNlY3FlX2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLVx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcbitcdFx0cmVxLVx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcbitcdH1cbiBcbiBcdGlmICh1cGRhdGVfa2V5KVxuIFx0XHRtZW1jcHkoXHUwMDI2cmVxLVx1MDAzZWhhc2hrZXksIGFwYy1cdTAwM2VoYXNoa2V5LCBNQU5BX0hBU0hfS0VZX1NJWkUpO1xuQEAgLTIwNDYsMTYgKzIwNTgsMTQgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICptYW5hX2J1aWxkX3NrYihzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgdm9pZCAqYnVmX3ZhLFxuIFxuIHN0YXRpYyB2b2lkIG1hbmFfcnhfc2tiKHZvaWQgKmJ1Zl92YSwgYm9vbCBmcm9tX3Bvb2wsXG4gXHRcdFx0c3RydWN0IG1hbmFfcnhjb21wX29vYiAqY3FlLCBzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSxcbi1cdFx0XHRpbnQgaSlcbitcdFx0XHR1MzIgcGt0X2xlbiwgdTMyIHBrdF9oYXNoKVxuIHtcbiBcdHN0cnVjdCBtYW5hX3N0YXRzX3J4ICpyeF9zdGF0cyA9IFx1MDAyNnJ4cS1cdTAwM2VzdGF0cztcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gcnhxLVx1MDAzZW5kZXY7XG4tXHR1aW50IHBrdF9sZW4gPSBjcWUtXHUwMDNlcHBpW2ldLnBrdF9sZW47XG4gXHR1MTYgcnhxX2lkeCA9IHJ4cS1cdTAwM2VyeHFfaWR4O1xuIFx0c3RydWN0IG5hcGlfc3RydWN0ICpuYXBpO1xuIFx0c3RydWN0IHhkcF9idWZmIHhkcCA9IHt9O1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi1cdHUzMiBoYXNoX3ZhbHVlO1xuIFx0dTMyIGFjdDtcbiBcbiBcdHJ4cS1cdTAwM2VyeF9jcS53b3JrX2RvbmUrKztcbkBAIC0yMDk0LDEyICsyMTA0LDEwIEBAIHN0YXRpYyB2b2lkIG1hbmFfcnhfc2tiKHZvaWQgKmJ1Zl92YSwgYm9vbCBmcm9tX3Bvb2wsXG4gXHR9XG4gXG4gXHRpZiAoY3FlLVx1MDAzZXJ4X2hhc2h0eXBlICE9IDAgXHUwMDI2XHUwMDI2IChuZGV2LVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX1JYSEFTSCkpIHtcbi1cdFx0aGFzaF92YWx1ZSA9IGNxZS1cdTAwM2VwcGlbaV0ucGt0X2hhc2g7XG4tXG4gXHRcdGlmIChjcWUtXHUwMDNlcnhfaGFzaHR5cGUgXHUwMDI2IE1BTkFfSEFTSF9MNClcbi1cdFx0XHRza2Jfc2V0X2hhc2goc2tiLCBoYXNoX3ZhbHVlLCBQS1RfSEFTSF9UWVBFX0w0KTtcbitcdFx0XHRza2Jfc2V0X2hhc2goc2tiLCBwa3RfaGFzaCwgUEtUX0hBU0hfVFlQRV9MNCk7XG4gXHRcdGVsc2Vcbi1cdFx0XHRza2Jfc2V0X2hhc2goc2tiLCBoYXNoX3ZhbHVlLCBQS1RfSEFTSF9UWVBFX0wzKTtcbitcdFx0XHRza2Jfc2V0X2hhc2goc2tiLCBwa3RfaGFzaCwgUEtUX0hBU0hfVFlQRV9MMyk7XG4gXHR9XG4gXG4gXHRpZiAoY3FlLVx1MDAzZXJ4X3ZsYW50YWdfcHJlc2VudCkge1xuQEAgLTIyNDAsNiArMjI0OCw0MyBAQCBzdGF0aWMgdm9pZCBtYW5hX3JlZmlsbF9yeF9vb2Ioc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSxcbiBcdHJ4b29iLVx1MDAzZWRtYV9zeW5jX29mZnNldCA9IGRtYV9zeW5jX29mZnNldDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX29uZV9yeF9wa3Qoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSxcbitcdFx0XHRcdCAgICBzdHJ1Y3QgbWFuYV9yeGNvbXBfb29iICpvb2IsXG4rXHRcdFx0XHQgICAgdTMyIHBrdGxlbiwgdTMyIHBrdF9oYXNoKVxuK3tcbitcdHN0cnVjdCBtYW5hX3JlY3ZfYnVmX29vYiAqcnhidWZfb29iO1xuK1x0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSByeHEtXHUwMDNlbmRldjtcbitcdHZvaWQgKm9sZF9idWYgPSBOVUxMO1xuK1x0Ym9vbCBvbGRfZnA7XG4rXG4rXHRyeGJ1Zl9vb2IgPSBcdTAwMjZyeHEtXHUwMDNlcnhfb29ic1tyeHEtXHUwMDNlYnVmX2luZGV4XTtcbitcdFdBUk5fT05fT05DRShyeGJ1Zl9vb2ItXHUwMDNld3FlX2luZi53cWVfc2l6ZV9pbl9idSAhPSAxKTtcbitcbitcdGlmICh1bmxpa2VseShwa3RsZW4gXHUwMDNlIHJ4cS1cdTAwM2VkYXRhc2l6ZSkpIHtcbitcdFx0LyogSW5jcmVhc2UgaXQgZXZlbiBpZiBtYW5hX3J4X3NrYigpIGlzbid0IGNhbGxlZC4gKi9cbitcdFx0cnhxLVx1MDAzZXJ4X2NxLndvcmtfZG9uZSsrO1xuK1xuK1x0XHQrK25kZXYtXHUwMDNlc3RhdHMucnhfZHJvcHBlZDtcbitcdFx0bmV0ZGV2X3dhcm5fb25jZShuZGV2LFxuK1x0XHRcdFx0IFwiRHJvcHBlZCBvdmVyc2l6ZWQgUlggcGFja2V0OiBsZW49JXUsIGRhdGFzaXplPSV1XFxuXCIsXG4rXHRcdFx0XHQgcGt0bGVuLCByeHEtXHUwMDNlZGF0YXNpemUpO1xuK1xuK1x0XHQvKiBSZXVzZSB0aGUgUlggYnVmZmVyIHNpbmNlIHJ4YnVmX29vYiBpcyB1bmNoYW5nZWQuICovXG4rXHR9IGVsc2Uge1xuK1x0XHRtYW5hX3JlZmlsbF9yeF9vb2IoZGV2LCByeHEsIHJ4YnVmX29vYiwgcGt0bGVuLFxuK1x0XHRcdFx0ICAgXHUwMDI2b2xkX2J1ZiwgXHUwMDI2b2xkX2ZwKTtcbitcbitcdFx0LyogVW5zdWNjZXNzZnVsIHJlZmlsbCB3aWxsIGhhdmUgb2xkX2J1ZiA9PSBOVUxMLlxuK1x0XHQgKiBJbiB0aGlzIGNhc2UsIG1hbmFfcnhfc2tiKCkgd2lsbCBkcm9wIHRoZSBwYWNrZXQuXG4rXHRcdCAqL1xuK1x0XHRtYW5hX3J4X3NrYihvbGRfYnVmLCBvbGRfZnAsIG9vYiwgcnhxLCBwa3RsZW4sIHBrdF9oYXNoKTtcbitcdH1cbitcbitcdG1hbmFfbW92ZV93cV90YWlsKHJ4cS1cdTAwM2VnZG1hX3JxLCByeGJ1Zl9vb2ItXHUwMDNld3FlX2luZi53cWVfc2l6ZV9pbl9idSk7XG4rXG4rXHRtYW5hX3Bvc3RfcGt0X3J4cShyeHEpO1xuK31cbitcbiBzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3NfcnhfY3FlKHN0cnVjdCBtYW5hX3J4cSAqcnhxLCBzdHJ1Y3QgbWFuYV9jcSAqY3EsXG4gXHRcdFx0XHRzdHJ1Y3QgZ2RtYV9jb21wICpjcWUpXG4ge1xuQEAgLTIyNDksMTAgKzIyOTQsMTAgQEAgc3RhdGljIHZvaWQgbWFuYV9wcm9jZXNzX3J4X2NxZShzdHJ1Y3QgbWFuYV9yeHEgKnJ4cSwgc3RydWN0IG1hbmFfY3EgKmNxLFxuIFx0c3RydWN0IG1hbmFfcmVjdl9idWZfb29iICpyeGJ1Zl9vb2I7XG4gXHRzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQgKmFwYztcbiBcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGdjLVx1MDAzZWRldjtcbitcdGJvb2wgY29hbGVzY2VkXzggPSBmYWxzZTtcbiBcdGJvb2wgY29hbGVzY2VkID0gZmFsc2U7XG4tXHR2b2lkICpvbGRfYnVmID0gTlVMTDtcbi1cdHUzMiBjdXJyLCBwa3RsZW47XG4tXHRib29sIG9sZF9mcDtcbitcdHUzMiBwa3RsZW47XG4rXHRpbnQgcGt0X2k7XG4gXHRpbnQgaTtcbiBcbiBcdGFwYyA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTIyNzUsNiArMjMyMCwxMSBAQCBzdGF0aWMgdm9pZCBtYW5hX3Byb2Nlc3NfcnhfY3FlKHN0cnVjdCBtYW5hX3J4cSAqcnhxLCBzdHJ1Y3QgbWFuYV9jcSAqY3EsXG4gXHRcdGNvYWxlc2NlZCA9IHRydWU7XG4gXHRcdGJyZWFrO1xuIFxuK1x0Y2FzZSBDUUVfUlhfQ09BTEVTQ0VEXzg6XG4rXHRcdGNvYWxlc2NlZCA9IHRydWU7XG4rXHRcdGNvYWxlc2NlZF84ID0gdHJ1ZTtcbitcdFx0YnJlYWs7XG4rXG4gXHRjYXNlIENRRV9SWF9PQkpFQ1RfRkVOQ0U6XG4gXHRcdGNvbXBsZXRlKFx1MDAyNnJ4cS1cdTAwM2VmZW5jZV9ldmVudCk7XG4gXHRcdHJldHVybjtcbkBAIC0yMjg2LDU0ICsyMzM2LDQ4IEBAIHN0YXRpYyB2b2lkIG1hbmFfcHJvY2Vzc19yeF9jcWUoc3RydWN0IG1hbmFfcnhxICpyeHEsIHN0cnVjdCBtYW5hX2NxICpjcSxcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuK1x0cGt0X2kgPSAwO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUFOQV9SWENPTVBfT09CX05VTV9QUEk7IGkrKykge1xuLVx0XHRvbGRfYnVmID0gTlVMTDtcbi1cdFx0cGt0bGVuID0gb29iLVx1MDAzZXBwaVtpXS5wa3RfbGVuO1xuLVx0XHRpZiAocGt0bGVuID09IDApXG4tXHRcdFx0YnJlYWs7XG4tXG4tXHRcdGN1cnIgPSByeHEtXHUwMDNlYnVmX2luZGV4O1xuLVx0XHRyeGJ1Zl9vb2IgPSBcdTAwMjZyeHEtXHUwMDNlcnhfb29ic1tjdXJyXTtcbi1cdFx0V0FSTl9PTl9PTkNFKHJ4YnVmX29vYi1cdTAwM2V3cWVfaW5mLndxZV9zaXplX2luX2J1ICE9IDEpO1xuLVxuLVx0XHRpZiAodW5saWtlbHkocGt0bGVuIFx1MDAzZSByeHEtXHUwMDNlZGF0YXNpemUpKSB7XG4tXHRcdFx0LyogSW5jcmVhc2UgaXQgZXZlbiBpZiBtYW5hX3J4X3NrYigpIGlzbid0IGNhbGxlZC4gKi9cbi1cdFx0XHRyeHEtXHUwMDNlcnhfY3Eud29ya19kb25lKys7XG4rXHRcdHUzMiBwa3RfaGFzaDtcbiBcbi1cdFx0XHQrK25kZXYtXHUwMDNlc3RhdHMucnhfZHJvcHBlZDtcbi1cdFx0XHRuZXRkZXZfd2Fybl9vbmNlKG5kZXYsXG4tXHRcdFx0XHRcIkRyb3BwZWQgb3ZlcnNpemVkIFJYIHBhY2tldDogbGVuPSV1LCBkYXRhc2l6ZT0ldVxcblwiLFxuLVx0XHRcdFx0cGt0bGVuLCByeHEtXHUwMDNlZGF0YXNpemUpO1xuLVxuLVx0XHRcdC8qIFJldXNlIHRoZSBSWCBidWZmZXIgc2luY2UgcnhidWZfb29iIGlzIHVuY2hhbmdlZC4gKi9cbitcdFx0aWYgKGNvYWxlc2NlZF84KSB7XG4rXHRcdFx0LyogOC1wa3QgbW9kZTogMiBwYWNrZXRzIHBlciBQUEkgZW50cnkgKi9cbitcdFx0XHRwa3RsZW4gPSBvb2ItXHUwMDNlcHBpW2ldLnBrdF9sZW4wO1xuK1x0XHRcdHBrdF9oYXNoID0gb29iLVx1MDAzZXBwaVtpXS5wa3RfaGFzaDA7XG4gXHRcdH0gZWxzZSB7XG4tXG4tXHRcdFx0bWFuYV9yZWZpbGxfcnhfb29iKGRldiwgcnhxLCByeGJ1Zl9vb2IsIHBrdGxlbixcbi1cdFx0XHRcdFx0ICAgXHUwMDI2b2xkX2J1ZiwgXHUwMDI2b2xkX2ZwKTtcbi1cbi1cdFx0XHQvKiBVbnN1Y2Nlc3NmdWwgcmVmaWxsIHdpbGwgaGF2ZSBvbGRfYnVmID09IE5VTEwuXG4tXHRcdFx0ICogSW4gdGhpcyBjYXNlLCBtYW5hX3J4X3NrYigpIHdpbGwgZHJvcCB0aGUgcGFja2V0LlxuLVx0XHRcdCAqL1xuLVx0XHRcdG1hbmFfcnhfc2tiKG9sZF9idWYsIG9sZF9mcCwgb29iLCByeHEsIGkpO1xuK1x0XHRcdHBrdGxlbiA9IG9vYi1cdTAwM2VwcGlbaV0ucGt0X2xlbjtcbitcdFx0XHRwa3RfaGFzaCA9IG9vYi1cdTAwM2VwcGlbaV0ucGt0X2hhc2g7XG4gXHRcdH1cbitcdFx0aWYgKHBrdGxlbiA9PSAwKVxuK1x0XHRcdGJyZWFrO1xuIFxuLVx0XHRtYW5hX21vdmVfd3FfdGFpbChyeHEtXHUwMDNlZ2RtYV9ycSxcbi1cdFx0XHRcdCAgcnhidWZfb29iLVx1MDAzZXdxZV9pbmYud3FlX3NpemVfaW5fYnUpO1xuLVxuLVx0XHRtYW5hX3Bvc3RfcGt0X3J4cShyeHEpO1xuK1x0XHRtYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChkZXYsIHJ4cSwgb29iLCBwa3RsZW4sIHBrdF9oYXNoKTtcbitcdFx0cGt0X2krKztcbiBcbiBcdFx0aWYgKCFjb2FsZXNjZWQpXG4gXHRcdFx0YnJlYWs7XG4rXG4rXHRcdC8qIFByb2Nlc3MgMm5kIHBhY2tldCBmcm9tIHRoZSBzYW1lIFBQSSBpbiA4LXBrdCBtb2RlICovXG4rXHRcdGlmIChjb2FsZXNjZWRfOCkge1xuK1x0XHRcdHBrdGxlbiA9IG9vYi1cdTAwM2VwcGlbaV0ucGt0X2xlbjE7XG4rXHRcdFx0cGt0X2hhc2ggPSBvb2ItXHUwMDNlcHBpW2ldLnBrdF9oYXNoMTtcbitcdFx0XHRpZiAocGt0bGVuID09IDApXG4rXHRcdFx0XHRicmVhaztcbitcbitcdFx0XHRtYW5hX3Byb2Nlc3Nfb25lX3J4X3BrdChkZXYsIHJ4cSwgb29iLCBwa3RsZW4sXG4rXHRcdFx0XHRcdFx0cGt0X2hhc2gpO1xuK1x0XHRcdHBrdF9pKys7XG4rXHRcdH1cbiBcdH1cbiBcbiBcdC8qIENvbGxlY3QgY29hbGVzY2VkIENRRSBjb3VudCBiYXNlZCBvbiBwYWNrZXRzIHByb2Nlc3NlZC5cbi1cdCAqIENvYWxlc2NlZCBDUUVzIGhhdmUgYXQgbGVhc3QgMiBwYWNrZXRzLCBzbyBpbmRleCBpcyBpIC0gMi5cbitcdCAqIENvYWxlc2NlZCBDUUVzIGhhdmUgYXQgbGVhc3QgMiBwYWNrZXRzLCBzbyBpbmRleCBpcyBwa3RfaSAtIDIuXG4gXHQgKi9cbi1cdGlmIChpIFx1MDAzZSAxKSB7XG4rXHRpZiAocGt0X2kgXHUwMDNlIDEpIHtcbiBcdFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZyeHEtXHUwMDNlc3RhdHMuc3luY3ApO1xuLVx0XHRyeHEtXHUwMDNlc3RhdHMuY29hbGVzY2VkX2NxZVtpIC0gMl0rKztcbitcdFx0cnhxLVx1MDAzZXN0YXRzLmNvYWxlc2NlZF9jcWVbcGt0X2kgLSAyXSsrO1xuIFx0XHR1NjRfc3RhdHNfdXBkYXRlX2VuZChcdTAwMjZyeHEtXHUwMDNlc3RhdHMuc3luY3ApO1xuLVx0fSBlbHNlIGlmICghaSBcdTAwMjZcdTAwMjYgIXBrdGxlbikge1xuK1x0fSBlbHNlIGlmICghcGt0X2kgXHUwMDI2XHUwMDI2ICFwa3RsZW4pIHtcbiBcdFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZyeHEtXHUwMDNlc3RhdHMuc3luY3ApO1xuIFx0XHRyeHEtXHUwMDNlc3RhdHMucGt0X2xlbjBfZXJyKys7XG4gXHRcdHU2NF9zdGF0c191cGRhdGVfZW5kKFx1MDAyNnJ4cS1cdTAwM2VzdGF0cy5zeW5jcCk7XG5AQCAtMzc2Myw2ICszODA3LDcgQEAgc3RhdGljIGludCBtYW5hX3Byb2JlX3BvcnQoc3RydWN0IG1hbmFfY29udGV4dCAqYWMsIGludCBwb3J0X2lkeCxcbiBcdGFwYy1cdTAwM2Vwb3J0X2lkeCA9IHBvcnRfaWR4O1xuIFx0YXBjLVx1MDAzZWxpbmtfY2ZnX2Vycm9yID0gMTtcbiBcdGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPSAwO1xuK1x0YXBjLVx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPSAwO1xuIFxuIFx0LyogSW5pdGlhbGl6ZSBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBzZXR0aW5ncyBpZiBzdXBwb3J0ZWQgYnkgSFcgKi9cbiBcdGlmIChnYy1cdTAwM2VwZl9jYXBfZmxhZ3MxIFx1MDAyNiBHRE1BX1BGX0NBUF9GTEFHXzFfRFlOX0lOVEVSUlVQVF9NT0RFUkFUSU9OKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuY1xuaW5kZXggOWUzMWUyNTk1YWUzMi4uMDRmODc3NzA3Y2M2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZXRodG9vbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2V0aHRvb2wuY1xuQEAgLTE2OSw3ICsxNjksNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9zdHJpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgc3RyaW5nc2V0LCB1OCAqZGF0YSlcbiBcdFx0ZXRodG9vbF9zcHJpbnRmKFx1MDAyNmRhdGEsIFwicnhfJWRfeGRwX3R4XCIsIGkpO1xuIFx0XHRldGh0b29sX3NwcmludGYoXHUwMDI2ZGF0YSwgXCJyeF8lZF94ZHBfcmVkaXJlY3RcIiwgaSk7XG4gXHRcdGV0aHRvb2xfc3ByaW50ZihcdTAwMjZkYXRhLCBcInJ4XyVkX3BrdF9sZW4wX2VyclwiLCBpKTtcbi1cdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxOyBqKyspXG4rXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMTsgaisrKVxuIFx0XHRcdGV0aHRvb2xfc3ByaW50ZihcdTAwMjZkYXRhLCBcInJ4XyVkX2NvYWxlc2NlZF9jcWVfJWRcIiwgaSwgaiArIDIpO1xuIFx0fVxuIFxuQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0dTY0IHhkcF9kcm9wO1xuIFx0dTY0IHhkcF90eDtcbiBcdHU2NCBwa3RfbGVuMF9lcnI7XG4tXHR1NjQgY29hbGVzY2VkX2NxZVtNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDFdO1xuK1x0dTY0IGNvYWxlc2NlZF9jcWVbTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxXTtcbiBcdHU2NCB0c29fcGFja2V0cztcbiBcdHU2NCB0c29fYnl0ZXM7XG4gXHR1NjQgdHNvX2lubmVyX3BhY2tldHM7XG5AQCAtMjQ1LDcgKzI0NSw3IEBAIHN0YXRpYyB2b2lkIG1hbmFfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdFx0eGRwX3R4ID0gcnhfc3RhdHMtXHUwMDNleGRwX3R4O1xuIFx0XHRcdHhkcF9yZWRpcmVjdCA9IHJ4X3N0YXRzLVx1MDAzZXhkcF9yZWRpcmVjdDtcbiBcdFx0XHRwa3RfbGVuMF9lcnIgPSByeF9zdGF0cy1cdTAwM2Vwa3RfbGVuMF9lcnI7XG4tXHRcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxOyBqKyspXG4rXHRcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqKyspXG4gXHRcdFx0XHRjb2FsZXNjZWRfY3FlW2pdID0gcnhfc3RhdHMtXHUwMDNlY29hbGVzY2VkX2NxZVtqXTtcbiBcdFx0fSB3aGlsZSAodTY0X3N0YXRzX2ZldGNoX3JldHJ5KFx1MDAyNnJ4X3N0YXRzLVx1MDAzZXN5bmNwLCBzdGFydCkpO1xuIFxuQEAgLTI1NSw3ICsyNTUsNyBAQCBzdGF0aWMgdm9pZCBtYW5hX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHRkYXRhW2krK10gPSB4ZHBfdHg7XG4gXHRcdGRhdGFbaSsrXSA9IHhkcF9yZWRpcmVjdDtcbiBcdFx0ZGF0YVtpKytdID0gcGt0X2xlbjBfZXJyO1xuLVx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSAtIDE7IGorKylcbitcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgTUFOQV9DUUVfQ09BTF9QS1RTXzggLSAxOyBqKyspXG4gXHRcdFx0ZGF0YVtpKytdID0gY29hbGVzY2VkX2NxZVtqXTtcbiBcdH1cbiBcbkBAIC00MDgsNiArNDA4LDcgQEAgc3RhdGljIGludCBtYW5hX2dldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdHN0cnVjdCBtYW5hX3BvcnRfY29udGV4dCAqYXBjID0gbmV0ZGV2X3ByaXYobmRldik7XG4gXG4gXHRrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzID1cbitcdFx0YXBjLVx1MDAzZWNxZThfY29hbGVzY2luZ19lbmFibGUgPyBNQU5BX0NRRV9DT0FMX1BLVFNfOCA6XG4gXHRcdGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPyBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSA6IDE7XG4gXG4gXHRrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfbnNlY3MgPSBhcGMtXHUwMDNlY3FlX2NvYWxlc2NpbmdfdGltZW91dF9ucztcbkBAIC00NDMsMTUgKzQ0NCwxOSBAQCBzdGF0aWMgaW50IG1hbmFfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHR1MTYgaW50cl9tb2RyX3R4X3VzZWM7XG4gXHRcdHUxNiBpbnRyX21vZHJfdHhfY29tcDtcbiBcdFx0dTggY3FlX2NvYWxlc2NpbmdfZW5hYmxlO1xuK1x0XHR1OCBjcWU4X2NvYWxlc2NpbmdfZW5hYmxlO1xuIFx0XHRib29sIHJ4X2RpbV9lbmFibGVkO1xuIFx0XHRib29sIHR4X2RpbV9lbmFibGVkO1xuIFx0fSBzYXZlZDtcbiBcdGJvb2wgbW9kcl9jaGFuZ2VkID0gZmFsc2U7XG4gXHRib29sIGRpbV9jaGFuZ2VkID0gZmFsc2U7XG4gXHRzdHJ1Y3QgZ2RtYV9jb250ZXh0ICpnYztcbitcdHUzMiBtYXhfY3FlX2ZyYW1lcztcbiBcdGludCBlcnI7XG4gXG4gXHRnYyA9IGFwYy1cdTAwM2VhYy1cdTAwM2VnZG1hX2Rldi1cdTAwM2VnZG1hX2NvbnRleHQ7XG4rXHRtYXhfY3FlX2ZyYW1lcyA9IGdjLVx1MDAzZWNxZThfY29hbGVzY2luZ19zdXAgPyBNQU5BX0NRRV9DT0FMX1BLVFNfOCA6XG4rXHRcdFx0XHRcdFx0ICAgTUFOQV9SWENPTVBfT09CX05VTV9QUEk7XG4gXG4gXHQvKiBCb3RoIHN0YXRpYyBhbmQgZHluYW1pYyBpbnRlcnJ1cHQgbW9kZXJhdGlvbiAoRElNKSByZWx5IG9uIHRoZVxuIFx0ICogc2FtZSBIVyBjYXBhYmlsaXR5IGFkdmVydGlzZWQgYnkgdGhlIFBGLlxuQEAgLTQ2NiwxMCArNDcxLDEyIEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHR9XG4gXG4gXHRpZiAoa2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX2ZyYW1lcyAhPSAxIFx1MDAyNlx1MDAyNlxuLVx0ICAgIGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgIT0gTUFOQV9SWENPTVBfT09CX05VTV9QUEkpIHtcbitcdCAgICBrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzICE9IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJIFx1MDAyNlx1MDAyNlxuK1x0ICAgIGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgIT0gbWF4X2NxZV9mcmFtZXMpIHtcbiBcdFx0TkxfU0VUX0VSUl9NU0dfRk1UKGV4dGFjayxcbi1cdFx0XHRcdCAgIFwicngtZnJhbWVzIG11c3QgYmUgMSBvciAldSwgZ290ICV1XCIsXG4rXHRcdFx0XHQgICBcInJ4LWZyYW1lcyBtdXN0IGJlIDEgb3IgJXUlcywgZ290ICV1XCIsXG4gXHRcdFx0XHQgICBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSxcbitcdFx0XHRcdCAgIGdjLVx1MDAzZWNxZThfY29hbGVzY2luZ19zdXAgPyBcIiBvciA4XCIgOiBcIlwiLFxuIFx0XHRcdFx0ICAga2VybmVsX2NvYWwtXHUwMDNlcnhfY3FlX2ZyYW1lcyk7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuQEAgLTUxNCw4ICs1MjEsMTEgQEAgc3RhdGljIGludCBtYW5hX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdHNhdmVkLnR4X2RpbV9lbmFibGVkID0gYXBjLVx1MDAzZXR4X2RpbV9lbmFibGVkO1xuIFxuIFx0c2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlID0gYXBjLVx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcbitcdHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGUgPSBhcGMtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTtcbiBcdGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPVxuLVx0XHRrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzID09IE1BTkFfUlhDT01QX09PQl9OVU1fUFBJO1xuK1x0XHRrZXJuZWxfY29hbC1cdTAwM2VyeF9jcWVfZnJhbWVzIFx1MDAzZT0gTUFOQV9SWENPTVBfT09CX05VTV9QUEk7XG4rXHRhcGMtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSA9XG4rXHRcdGtlcm5lbF9jb2FsLVx1MDAzZXJ4X2NxZV9mcmFtZXMgPT0gTUFOQV9DUUVfQ09BTF9QS1RTXzg7XG4gXG4gXHRpZiAoIWFwYy1cdTAwM2Vwb3J0X2lzX3VwKSB7XG4gXHRcdFdSSVRFX09OQ0UoYXBjLVx1MDAzZXJ4X2RpbV9lbmFibGVkLCAhIWVjLVx1MDAzZXVzZV9hZGFwdGl2ZV9yeF9jb2FsZXNjZSk7XG5AQCAtNTIzLDcgKzUzMyw4IEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdHJldHVybiAwO1xuIFx0fVxuIFxuLVx0aWYgKGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgIT0gc2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlKSB7XG4rXHRpZiAoYXBjLVx1MDAzZWNxZV9jb2FsZXNjaW5nX2VuYWJsZSAhPSBzYXZlZC5jcWVfY29hbGVzY2luZ19lbmFibGUgfHxcbitcdCAgICBhcGMtXHUwMDNlY3FlOF9jb2FsZXNjaW5nX2VuYWJsZSAhPSBzYXZlZC5jcWU4X2NvYWxlc2NpbmdfZW5hYmxlKSB7XG4gXHRcdC8qIENRRSBjb2FsZXNjaW5nIHNldHRpbmcgaXMgYXBwbGllZCB2aWEgUlNTIGNvbmZpZ3VyYXRpb24uICovXG4gXHRcdGVyciA9IG1hbmFfY29uZmlnX3JzcyhhcGMsIFRSSV9TVEFURV9UUlVFLCBmYWxzZSwgZmFsc2UpO1xuIFx0XHRpZiAoZXJyKSB7XG5AQCAtNTMxLDYgKzU0Miw4IEBAIHN0YXRpYyBpbnQgbWFuYV9zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdFx0XHQgICBlcnIpO1xuIFx0XHRcdGFwYy1cdTAwM2VjcWVfY29hbGVzY2luZ19lbmFibGUgPVxuIFx0XHRcdFx0c2F2ZWQuY3FlX2NvYWxlc2NpbmdfZW5hYmxlO1xuK1x0XHRcdGFwYy1cdTAwM2VjcWU4X2NvYWxlc2NpbmdfZW5hYmxlID1cbitcdFx0XHRcdHNhdmVkLmNxZThfY29hbGVzY2luZ19lbmFibGU7XG4gXHRcdFx0YXBjLVx1MDAzZWludHJfbW9kcl9yeF91c2VjID0gc2F2ZWQuaW50cl9tb2RyX3J4X3VzZWM7XG4gXHRcdFx0YXBjLVx1MDAzZWludHJfbW9kcl9yeF9jb21wID0gc2F2ZWQuaW50cl9tb2RyX3J4X2NvbXA7XG4gXHRcdFx0YXBjLVx1MDAzZWludHJfbW9kcl90eF91c2VjID0gc2F2ZWQuaW50cl9tb2RyX3R4X3VzZWM7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFuYS9nZG1hLmggYi9pbmNsdWRlL25ldC9tYW5hL2dkbWEuaFxuaW5kZXggODUyOWNlZjBkN2M0NS4uNzBhN2YxZmVlNWQzYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L21hbmEvZ2RtYS5oXG4rKysgYi9pbmNsdWRlL25ldC9tYW5hL2dkbWEuaFxuQEAgLTE4Miw2ICsxODIsNyBAQCBzdHJ1Y3QgZ2RtYV9nZW5lcmFsX3JlcSB7XG4gI2RlZmluZSBHRE1BX01FU1NBR0VfVjIgMlxuICNkZWZpbmUgR0RNQV9NRVNTQUdFX1YzIDNcbiAjZGVmaW5lIEdETUFfTUVTU0FHRV9WNCA0XG4rI2RlZmluZSBHRE1BX01FU1NBR0VfVjUgNVxuIFxuIHN0cnVjdCBnZG1hX2dlbmVyYWxfcmVzcCB7XG4gXHRzdHJ1Y3QgZ2RtYV9yZXNwX2hkciBoZHI7XG5AQCAtNDI4LDYgKzQyOSw5IEBAIHN0cnVjdCBnZG1hX2NvbnRleHQge1xuIFx0LyogTDIgTVRVICovXG4gXHR1MTYgYWRhcHRlcl9tdHU7XG4gXG4rXHQvKiBOSUMgc3VwcG9ydHMgQ1FFIHg4IGNvYWxlc2NpbmcgKi9cbitcdGJvb2wgY3FlOF9jb2FsZXNjaW5nX3N1cDtcbitcbiBcdC8qIFRoaXMgbWFwcyBhIENRIGluZGV4IHRvIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUuICovXG4gXHR1bnNpZ25lZCBpbnRcdFx0bWF4X251bV9jcXM7XG4gXHRzdHJ1Y3QgZ2RtYV9xdWV1ZVx0KipjcV90YWJsZTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9tYW5hL21hbmEuaCBiL2luY2x1ZGUvbmV0L21hbmEvbWFuYS5oXG5pbmRleCA0ZDA0MWZiODQzN2Y1Li41MGFjYjZiZjhmMTI1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbWFuYS9tYW5hLmhcbisrKyBiL2luY2x1ZGUvbmV0L21hbmEvbWFuYS5oXG5AQCAtNjIsOSArNjIsMTIgQEAgZW51bSBUUklfU1RBVEUge1xuIFxuICNkZWZpbmUgTUFYX1BPUlRTX0lOX01BTkFfREVWIDI1NlxuIFxuLS8qIE1heGltdW0gbnVtYmVyIG9mIHBhY2tldHMgcGVyIGNvYWxlc2NlZCBDUUUgKi9cbisvKiBNYXhpbXVtIG51bWJlciBvZiBQUElzIHBlciBjb2FsZXNjZWQgQ1FFICovXG4gI2RlZmluZSBNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSSA0XG4gXG4rLyogOC1wa3QgbW9kZSBwYWNrcyB1cCB0byAyIHBhY2tldHMgcGVyIFBQSSBlbnRyeSAqL1xuKyNkZWZpbmUgTUFOQV9DUUVfQ09BTF9QS1RTXzggOFxuK1xuIC8qIERlZmF1bHQvbWF4IGludGVycnVwdCBtb2RlcmF0aW9uIHNldHRpbmdzICovXG4gI2RlZmluZSBNQU5BX0lOVFJfTU9EUl9VU0VDX0RFRiAwXG4gI2RlZmluZSBNQU5BX0lOVFJfTU9EUl9DT01QX0RFRiAwXG5AQCAtNzksNyArODIsNyBAQCBlbnVtIFRSSV9TVEFURSB7XG4gI2RlZmluZSBNQU5BX0lOVFJfTU9EUl9DT01QX01BU0sgICBHRU5NQVNLKDIzLCAxNilcbiBcbiAvKiBVcGRhdGUgdGhpcyBjb3VudCB3aGVuZXZlciB0aGUgcmVzcGVjdGl2ZSBzdHJ1Y3R1cmVzIGFyZSBjaGFuZ2VkICovXG4tI2RlZmluZSBNQU5BX1NUQVRTX1JYX0NPVU5UICg2ICsgTUFOQV9SWENPTVBfT09CX05VTV9QUEkgLSAxKVxuKyNkZWZpbmUgTUFOQV9TVEFUU19SWF9DT1VOVCAoNiArIE1BTkFfQ1FFX0NPQUxfUEtUU184IC0gMSlcbiAjZGVmaW5lIE1BTkFfU1RBVFNfVFhfQ09VTlQgMTFcbiBcbiAjZGVmaW5lIE1BTkFfUlhfRlJBR19BTElHTk1FTlQgNjRcbkBAIC05MSw3ICs5NCw3IEBAIHN0cnVjdCBtYW5hX3N0YXRzX3J4IHtcbiBcdHU2NCB4ZHBfdHg7XG4gXHR1NjQgeGRwX3JlZGlyZWN0O1xuIFx0dTY0IHBrdF9sZW4wX2Vycjtcbi1cdHU2NCBjb2FsZXNjZWRfY3FlW01BTkFfUlhDT01QX09PQl9OVU1fUFBJIC0gMV07XG4rXHR1NjQgY29hbGVzY2VkX2NxZVtNQU5BX0NRRV9DT0FMX1BLVFNfOCAtIDFdO1xuIFx0c3RydWN0IHU2NF9zdGF0c19zeW5jIHN5bmNwO1xuIH07XG4gXG5AQCAtMjAyLDYgKzIwNSw3IEBAIGVudW0gbWFuYV9jcWVfdHlwZSB7XG4gXHRDUUVfUlhfQ09BTEVTQ0VEXzRcdFx0PSAyLFxuIFx0Q1FFX1JYX09CSkVDVF9GRU5DRVx0XHQ9IDMsXG4gXHRDUUVfUlhfVFJVTkNBVEVEXHRcdD0gNCxcbitcdENRRV9SWF9DT0FMRVNDRURfOFx0XHQ9IDcsXG4gXG4gXHRDUUVfVFhfT0tBWVx0XHRcdD0gMzIsXG4gXHRDUUVfVFhfU0FfRFJPUFx0XHRcdD0gMzMsXG5AQCAtMjM4LDEyICsyNDIsMjYgQEAgc3RydWN0IG1hbmFfY3FlX2hlYWRlciB7XG4gI2RlZmluZSBNQU5BX0hBU0hfTDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuIFx0KE5ESVNfSEFTSF9UQ1BfSVBWNCB8IE5ESVNfSEFTSF9VRFBfSVBWNCB8IE5ESVNfSEFTSF9UQ1BfSVBWNiB8ICAgICAgXFxcbiBcdCBORElTX0hBU0hfVURQX0lQVjYgfCBORElTX0hBU0hfVENQX0lQVjZfRVggfCBORElTX0hBU0hfVURQX0lQVjZfRVgpXG4rI2RlZmluZSBNQU5BX0hBU0hfRU5BQkxFX1NVUFBPUlRFRCBcXFxuK1x0KE5ESVNfSEFTSF9JUFY0IHwgTkRJU19IQVNIX1RDUF9JUFY0IHwgTkRJU19IQVNIX1VEUF9JUFY0IHwgXFxcbitcdCBORElTX0hBU0hfSVBWNiB8IE5ESVNfSEFTSF9UQ1BfSVBWNiB8IE5ESVNfSEFTSF9VRFBfSVBWNilcbitcbisvKiBSZWFkIFBQSSBpbiB0d28gZGlmZmVyZW50IGxheW91dHMgYmFzZWQgb24gY3FlX3R5cGUgKi9cbit1bmlvbiBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyB7XG4rXHRzdHJ1Y3Qge1xuK1x0XHR1MzIgcGt0X2xlbiA6IDE2O1xuK1x0XHR1MzIgcmVzZXJ2ZWQxIDogMTY7XG4rXHRcdHUzMiByZXNlcnZlZDI7XG4rXHRcdHUzMiBwa3RfaGFzaDtcbitcdH07XG4gXG4tc3RydWN0IG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHtcbi1cdHUzMiBwa3RfbGVuXHQ6IDE2O1xuLVx0dTMyIHJlc2VydmVkMVx0OiAxNjtcbi1cdHUzMiByZXNlcnZlZDI7XG4tXHR1MzIgcGt0X2hhc2g7XG4rXHQvKiBVcCB0byB0d28gcGt0cyBwZXIgUFBJIGVudHJ5ICovXG4rXHRzdHJ1Y3Qge1xuK1x0XHR1MzIgcGt0X2hhc2gwO1xuK1x0XHR1MTYgcGt0X2xlbjA7XG4rXHRcdHUxNiBwa3RfbGVuMTtcbitcdFx0dTMyIHBrdF9oYXNoMTtcbitcdH07XG4gfTsgLyogSFcgREFUQSAqL1xuIFxuIC8qIFJlY2VpdmUgY29tcGxldGlvbiBPT0IgKi9cbkBAIC0yNjQsNyArMjgyLDcgQEAgc3RydWN0IG1hbmFfcnhjb21wX29vYiB7XG4gXHR1MzIgcnhfdWRwX2NzdW1fZmFpbFx0XHQ6IDE7XG4gXHR1MzIgcmVzZXJ2ZWQyXHRcdFx0OiAxO1xuIFxuLVx0c3RydWN0IG1hbmFfcnhjb21wX3BlcnBrdF9pbmZvIHBwaVtNQU5BX1JYQ09NUF9PT0JfTlVNX1BQSV07XG4rXHR1bmlvbiBtYW5hX3J4Y29tcF9wZXJwa3RfaW5mbyBwcGlbTUFOQV9SWENPTVBfT09CX05VTV9QUEldO1xuIFxuIFx0dTMyIHJ4X3dxZV9vZmZzZXQ7XG4gfTsgLyogSFcgREFUQSAqL1xuQEAgLTYwNyw2ICs2MjUsNyBAQCBzdHJ1Y3QgbWFuYV9wb3J0X2NvbnRleHQge1xuIFx0Ym9vbCBwb3J0X3N0X3NhdmU7IC8qIFNhdmVkIHBvcnQgc3RhdGUgKi9cbiBcbiBcdHU4IGNxZV9jb2FsZXNjaW5nX2VuYWJsZTtcbitcdHU4IGNxZThfY29hbGVzY2luZ19lbmFibGU7XG4gXHR1MzIgY3FlX2NvYWxlc2NpbmdfdGltZW91dF9ucztcbiBcbiBcdC8qIEludGVycnVwdCBtb2RlcmF0aW9uIHNldHRpbmdzICovXG5AQCAtNzUxLDYgKzc3MCw4IEBAIHN0cnVjdCBtYW5hX3F1ZXJ5X2RldmljZV9jZmdfcmVxIHtcbiBcdHUzMiByZXNlcnZlZDtcbiB9OyAvKiBIVyBEQVRBICovXG4gXG4rI2RlZmluZSBNQU5BX1BGX0ZMQUdfMV9DUUVfOF9DT0FMRVNDSU5HX1NVUFBPUlRFRCBCSVQoNSlcbitcbiBzdHJ1Y3QgbWFuYV9xdWVyeV9kZXZpY2VfY2ZnX3Jlc3Age1xuIFx0c3RydWN0IGdkbWFfcmVzcF9oZHIgaGRyO1xuIFxuQEAgLTk4Niw3ICsxMDA3LDEwIEBAIHN0cnVjdCBtYW5hX2NmZ19yeF9zdGVlcl9yZXFfdjIge1xuIFx0bWFuYV9oYW5kbGVfdCBkZWZhdWx0X3J4b2JqO1xuIFx0dTggaGFzaGtleVtNQU5BX0hBU0hfS0VZX1NJWkVdO1xuIFx0dTggY3FlX2NvYWxlc2NpbmdfZW5hYmxlO1xuLVx0dTggcmVzZXJ2ZWQyWzddO1xuK1x0dTggcmVzZXJ2ZWQyWzNdO1xuK1x0dTE2IHJzc19oYXNoX3R5cGVzO1xuK1x0dTggY3FlOF9jb2FsZXNjaW5nX2VuYWJsZTsgLyogdjUgbWVzc2FnZSAqL1xuK1x0dTggcmVzZXJ2ZWQzO1xuIFx0bWFuYV9oYW5kbGVfdCBpbmRpcl90YWJbXSBfX2NvdW50ZWRfYnkobnVtX2luZGlyX2VudHJpZXMpO1xuIH07IC8qIEhXIERBVEEgKi9cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA2OjE5OjQ0LjgzNzQ4MjM0M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNTgwMjcyMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNQU5BIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggZm9yIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIuIEl0J3MgYWRkaW5nIHN1cHBvcnQgZm9yIDgtcGFja2V0IGNvYWxlc2NpbmcgaW4gdGhlIENvbXBsZXRpb24gUXVldWUgRW50cnkgKENRRSksIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGUgY2hhbmdlcyBhcmUgc3ByZWFkIGFjcm9zcyBgbWFuYV9lbi5jYCwgYG1hbmFfZXRodG9vbC5jYCwgYGdkbWEuaGAsIGFuZCBgbWFuYS5oYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHZpYWJsZSB0aGlzIGlzIHRvIHRlc3QuXG5cbkZpcnN0LCB0aGUgZHJpdmVyJ3MgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudD8gTUFOQSBpcyB1c3VhbGx5IGEgU21hcnROSUMsIHNwZWNpZmljIHRvIE1pY3Jvc29mdCBBenVyZSwgd2hpY2ggc3VnZ2VzdHMgaXQgbWlnaHQgcmVseSBvbiBwaHlzaWNhbCBoYXJkd2FyZS4gSSBjYW4ndCByZWNhbGwgc2VlaW5nIGFueSBlbXVsYXRpb24gZm9yIGl0IGluIHZhbmlsbGEgUUVNVS4gVGhhdCdzIGEgY3JpdGljYWwgZmlyc3QgaHVyZGxlLlxuXG5MZXQgbWUgY2xhcmlmeSDigJMgaXMgdGhlcmUgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBvZiBNQU5BIGF0IGFsbCwgb3IgaXMgaXQgc3RyaWN0bHkgYSBwaHlzaWNhbCBvciBBenVyZS1zcGVjaWZpYyBkZXZpY2U/IFJpZ2h0LCBpdOKAmXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIsIGEgUENJIGRldmljZSwgc28gaWYgdGhlcmUncyBubyBlbXVsYXRpb24sIHRoZSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50IHdvbid0IHdvcmsuIFRoZSBmYWN0IGl0J3MgYSBQQ0kgZGV2aWNlIHRoYXQncyBub3QgZW11bGF0ZWQgbWVhbnMgZnV6emluZyBpcyB1bmxpa2VseSB0byB3b3JrIGluIHRoZSBzdGFuZGFyZCBlbnZpcm9ubWVudC5cblxuTGV0IG1lIHZlcmlmeSB0aGF0IE1BTkEgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkZXZpY2UsIG5vdCBlbXVsYXRlZCBieSBRRU1VLiBUaGUgZG9jdW1lbnRhdGlvbiBtZW50aW9ucyB0aGF0IGNvZGUgaW4gZHJpdmVycyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBhbmQgYGFtZGdwdWAgd2hpY2ggcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIGlzbid0IGVtdWxhdGVkLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGNhc2UgaGVyZS5cblxuU28sIGVpdGhlciBJIG5lZWQgdG8gc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSBRRU1VIHNvdXJjZSBjb2RlIHRvIGV4cGxpY2l0bHkgY29uZmlybSBpdCdzIG5vdCBlbXVsYXRlZCwgb3IgSSdtIGp1c3QgZ29pbmcgdG8gaGF2ZSB0byBtYWtlIHRoZSBlZHVjYXRlZCBhc3N1bXB0aW9uIHRoYXQgaXQgaXNuJ3QuIFRoZSBkcml2ZXIgaXRzZWxmIGlzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9gIHdoaWNoIG1lYW5zIGl0J3MgYSBQQ0kgZHJpdmVyLiBTcGVjaWZpY2FsbHksIEknbGwgbmVlZCB0byBmb2N1cyBvbiBgbWFuYV9lbi5jYC4gVGhpcyBtZWFucyBJIG5lZWQgdG8gZmluZCBhIHdvcmthcm91bmQgdG8gdGVzdCB0aGUgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMDMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNjoxOTo1MS44OTU1MTE3NDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI0ODc4NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjU2OT1zdGF0aWMgaW50IF9faW5pdCBtYW5hX2RyaXZlcl9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI1Nzk6XFx0ZXJyID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2bWFuYV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1ODAtXFx0aWYgKGVycikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNjoxOTo1MS45MzgwMDU0NDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTA5NTgxMjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBBc3Nlc3NtZW50OiBNQU5BIERyaXZlcioqXG5cbk9rYXksIHNvIHRoaXMgaXMgZGVmaW5pdGVseSBhIFBDSSBkcml2ZXIuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gYXNzZXNzIGl0cyBmdXp6YWJpbGl0eS4gSXMgdGhpcyBzb21ldGhpbmcgdGhhdCdzIGVtdWxhdGVkIHdpdGhpbiBRRU1VLCBzaW5jZSB0aGF0J3Mgb3VyIHR5cGljYWwgZnV6emluZyBlbnZpcm9ubWVudD8gTm8sIGl0J3Mgbm90LiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIFNtYXJ0TklDIOKAkyBzcGVjaWZpY2FsbHksIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyLCBvciBNQU5BLiAgVGhhdCBpbW1lZGlhdGVseSBmbGFncyBhIGNvbmNlcm4uICBXZSBhcmUgZ29pbmcgdG8gbmVlZCBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG9yIEF6dXJlIFZNcyB0byBpbnRlcmFjdCB3aXRoIHRoaXMsIGFuZCB3ZSBkb24ndCB0eXBpY2FsbHkgcnVuIEF6dXJlIFZNcyB3aXRoaW4gc3RhbmRhcmQgUUVNVSBmb3IgZnV6emluZy5cblxuR2l2ZW4gdGhhdCByZXN0cmljdGlvbiwgSSBzaG91bGQgcXVpY2tseSBkb3VibGUtY2hlY2sg4oCTIGlzIHRoZXJlIGFueSBvdGhlciBwb3NzaWJsZSBwYXRoIHRvIHRoaXMgdGhhdCBieXBhc3NlcyB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jeT8gTm9wZS4gSXQncyBhIGhhcmR3YXJlIGRyaXZlciBmb3IgTUFOQSwgYW5kIHRoYXQncyB0aGUgb25seSB3YXkgdG8gZ2V0IGF0IGl0LlxuXG5UaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgY2xlYXI6IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJJ2xsIHJldHVybiB0aGF0IHZhbHVlLiBNeSByZWFzb25pbmcgaXMgc29saWQg4oCTIGl0J3MgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIChNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyKSBhbmQgaXQncyBub3QgZW11bGF0ZWQgaW4gdGhlIHN0YW5kYXJkIFFFTVUgc2V0dXAgdGhhdCB3ZSB1c2UgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzAwLCJPdXRwdXRUb2tlbnMiOjk0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA2OjE5OjU2Ljg0NzU4OTE5OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzUyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIGRyaXZlciB0byBhZGQgc3VwcG9ydCBmb3IgQ1FFIDgtcGFja2V0IGNvYWxlc2NpbmcuIE1BTkEgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBTbWFydE5JQyBkZXZpY2UgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIHNvIHRoaXMgY29kZSBjYW5ub3QgYmUgcmVhY2hlZCBvciB0ZXN0ZWQgYnkgdGhlIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb3NvZnQgQXp1cmUgTmV0d29yayBBZGFwdGVyIChNQU5BKSBkcml2ZXIgdG8gYWRkIHN1cHBvcnQgZm9yIENRRSA4LXBhY2tldCBjb2FsZXNjaW5nLiBNQU5BIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgU21hcnROSUMgZGV2aWNlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBzbyB0aGlzIGNvZGUgY2Fubm90IGJlIHJlYWNoZWQgb3IgdGVzdGVkIGJ5IHRoZSBmdXp6ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowdddvw[1] Phase: Running StartedAt: 2026-08-02 06:20:08 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdddvw[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-02 06:20:08 +0000 UTC FinishedAt: 2026-08-02 06:20:12 +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,}