Name: series-workflowbpfn8 Phase: Failed StartedAt: 2026-06-22 08:45:03 +0000 UTC FinishedAt: 2026-06-22 08:54:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbpfn8[0] Phase: Succeeded StartedAt: 2026-06-22 08:45:03 +0000 UTC FinishedAt: 2026-06-22 08:53:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbpfn8[0].run-triage Phase: Succeeded StartedAt: 2026-06-22 08:45:03 +0000 UTC FinishedAt: 2026-06-22 08:53:45 +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+CgkJCTx0ZD4yMDI2LzA2LzIyIDA4OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBTaW5jZSBzeXprYWxsZXIgZG9lcyBub3QgZW11bGF0ZSBNZWxsYW5veCBoYXJkd2FyZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUpLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA4OjUzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOWY2NWM5NTU0NjljYmQ1NzM0MzU1ZWUyZTZhMTZkYmZjNTc5MjEwOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDIyIDA4OjUyOjU5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmhcbmluZGV4IDIyNzBlMmU1NTBkZDllLi5kNTA3Mjg5MDk2YzIwNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaFxuQEAgLTk4Nyw2ICYjNDM7OTg3LDE4IEBAIHN0cnVjdCBtbHg1ZV9wcml2IHtcbiBcdHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3JhbmdlICpmZWNfcmFuZ2VzO1xuIH07XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgdTE2IG1seDVlX3N0YXRzX25jaF9yZWFkKGNvbnN0IHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuJiM0Mzt7XG4mIzQzO1x0LyogUGFpcnMgd2l0aCBzbXBfc3RvcmVfcmVsZWFzZSBpbiBtbHg1ZV9zdGF0c19uY2hfd3JpdGUoKS4gKi9cbiYjNDM7XHRyZXR1cm4gc21wX2xvYWRfYWNxdWlyZShcdTAwMjZwcml2LVx1MDAzZXN0YXRzX25jaCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBtbHg1ZV9zdGF0c19uY2hfd3JpdGUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHUxNiBuKVxuJiM0Mzt7XG4mIzQzO1x0LyogUGFpcnMgd2l0aCBzbXBfbG9hZF9hY3F1aXJlIGluIG1seDVlX3N0YXRzX25jaF9yZWFkKCkuICovXG4mIzQzO1x0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2cHJpdi1cdTAwM2VzdGF0c19uY2gsIG4pO1xuJiM0Mzt9XG4mIzQzO1xuIHN0cnVjdCBtbHg1ZV9kZXYge1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbiBcdHN0cnVjdCBkZXZsaW5rX3BvcnQgZGxfcG9ydDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vaHZfdmhjYV9zdGF0cy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2h2X3ZoY2Ffc3RhdHMuY1xuaW5kZXggMTk1ODYzYjJjMDEzZTIuLjk3NDdkNzczNmQzN2FmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2h2X3ZoY2Ffc3RhdHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2h2X3ZoY2Ffc3RhdHMuY1xuQEAgLTMzLDkgJiM0MzszMywxMCBAQCBtbHg1ZV9odl92aGNhX2ZpbGxfcmluZ19zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgaW50IGNoLFxuIHN0YXRpYyB2b2lkIG1seDVlX2h2X3ZoY2FfZmlsbF9zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgdm9pZCAqZGF0YSxcbiBcdFx0XHRcdCAgICAgaW50IGJ1Zl9sZW4pXG4ge1xuJiM0MztcdHUxNiBuY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcbiBcdGludCBjaCwgaSA9IDA7XG4gXG4tXHRmb3IgKGNoID0gMDsgY2ggXHUwMDNjIHByaXYtXHUwMDNlc3RhdHNfbmNoOyBjaCYjNDM7JiM0MzspIHtcbiYjNDM7XHRmb3IgKGNoID0gMDsgY2ggXHUwMDNjIG5jaDsgY2gmIzQzOyYjNDM7KSB7XG4gXHRcdHZvaWQgKmJ1ZiA9IGRhdGEgJiM0MzsgaTtcbiBcbiBcdFx0aWYgKFdBUk5fT05fT05DRShidWYgJiM0MztcbkBAIC00OSw5ICYjNDM7NTAsMTYgQEAgc3RhdGljIHZvaWQgbWx4NWVfaHZfdmhjYV9maWxsX3N0YXRzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCB2b2lkICpkYXRhLFxuIH1cbiBcbiBzdGF0aWMgaW50IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX3NpemUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4mIzQzO3tcbiYjNDM7XHR1MTYgbmNoID0gbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdik7XG4mIzQzO1xuJiM0MztcdHJldHVybiBzaXplb2Yoc3RydWN0IG1seDVlX2h2X3ZoY2FfcGVyX3Jpbmdfc3RhdHMpICogbmNoO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX21heF9zaXplKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuIHtcbiBcdHJldHVybiAoc2l6ZW9mKHN0cnVjdCBtbHg1ZV9odl92aGNhX3Blcl9yaW5nX3N0YXRzKSAqXG4tXHRcdHByaXYtXHUwMDNlc3RhdHNfbmNoKTtcbiYjNDM7XHRcdG1heChwcml2LVx1MDAzZW1heF9uY2gsIHByaXYtXHUwMDNlc3RhdHNfbmNoKSk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG1seDVlX2h2X3ZoY2Ffc3RhdHNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5AQCAtNjcsNyAmIzQzOzc1LDcgQEAgc3RhdGljIHZvaWQgbWx4NWVfaHZfdmhjYV9zdGF0c193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHNhZ2VudCA9IGNvbnRhaW5lcl9vZihkd29yaywgc3RydWN0IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYWdlbnQsIHdvcmspO1xuIFx0cHJpdiA9IGNvbnRhaW5lcl9vZihzYWdlbnQsIHN0cnVjdCBtbHg1ZV9wcml2LCBzdGF0c19hZ2VudCk7XG4gXHRidWZfbGVuID0gbWx4NWVfaHZfdmhjYV9zdGF0c19idWZfc2l6ZShwcml2KTtcbi1cdGFnZW50ID0gc2FnZW50LVx1MDAzZWFnZW50O1xuJiM0MztcdGFnZW50ID0gUkVBRF9PTkNFKHNhZ2VudC1cdTAwM2VhZ2VudCk7XG4gXHRidWYgPSBzYWdlbnQtXHUwMDNlYnVmO1xuIFxuIFx0bWVtc2V0KGJ1ZiwgMCwgYnVmX2xlbik7XG5AQCAtMTAwLDcgJiM0MzsxMDgsNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX2NvbnRyb2woc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQsXG4gXHRzYWdlbnQgPSBcdTAwMjZwcml2LVx1MDAzZXN0YXRzX2FnZW50O1xuIFxuIFx0YmxvY2stXHUwMDNldmVyc2lvbiA9IE1MWDVfSFZfVkhDQV9TVEFUU19WRVJTSU9OO1xuLVx0YmxvY2stXHUwMDNlcmluZ3MgICA9IHByaXYtXHUwMDNlc3RhdHNfbmNoO1xuJiM0MztcdGJsb2NrLVx1MDAzZXJpbmdzICAgPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcbiBcbiBcdGlmICghYmxvY2stXHUwMDNlY29tbWFuZCkge1xuIFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2cHJpdi1cdTAwM2VzdGF0c19hZ2VudC53b3JrKTtcbkBAIC0xMjIsMTggJiM0MzsxMzAsMjEgQEAgc3RhdGljIHZvaWQgbWx4NWVfaHZfdmhjYV9zdGF0c19jbGVhbnVwKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50KVxuIFxuIHZvaWQgbWx4NWVfaHZfdmhjYV9zdGF0c19jcmVhdGUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4ge1xuLVx0aW50IGJ1Zl9sZW4gPSBtbHg1ZV9odl92aGNhX3N0YXRzX2J1Zl9zaXplKHByaXYpO1xuJiM0MztcdGludCBidWZfbGVuID0gbWx4NWVfaHZfdmhjYV9zdGF0c19idWZfbWF4X3NpemUocHJpdik7XG4gXHRzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudDtcbiBcbiBcdHByaXYtXHUwMDNlc3RhdHNfYWdlbnQuYnVmID0ga3Z6YWxsb2MoYnVmX2xlbiwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAoIXByaXYtXHUwMDNlc3RhdHNfYWdlbnQuYnVmKVxuIFx0XHRyZXR1cm47XG4gXG4mIzQzO1x0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VzdGF0c19hZ2VudC53b3JrLCBtbHg1ZV9odl92aGNhX3N0YXRzX3dvcmspO1xuJiM0MztcbiBcdGFnZW50ID0gbWx4NV9odl92aGNhX2FnZW50X2NyZWF0ZShwcml2LVx1MDAzZW1kZXYtXHUwMDNlaHZfdmhjYSxcbiBcdFx0XHRcdFx0ICBNTFg1X0hWX1ZIQ0FfQUdFTlRfU1RBVFMsXG4gXHRcdFx0XHRcdCAgbWx4NWVfaHZfdmhjYV9zdGF0c19jb250cm9sLCBOVUxMLFxuIFx0XHRcdFx0XHQgIG1seDVlX2h2X3ZoY2Ffc3RhdHNfY2xlYW51cCxcbi1cdFx0XHRcdFx0ICBwcml2KTtcbiYjNDM7XHRcdFx0XHRcdCAgcHJpdixcbiYjNDM7XHRcdFx0XHRcdCAgXHUwMDI2cHJpdi1cdTAwM2VzdGF0c19hZ2VudC5hZ2VudCk7XG4gXG4gXHRpZiAoSVNfRVJSX09SX05VTEwoYWdlbnQpKSB7XG4gXHRcdGlmIChJU19FUlIoYWdlbnQpKVxuQEAgLTE0MiwxOCAmIzQzOzE1MywyMSBAQCB2b2lkIG1seDVlX2h2X3ZoY2Ffc3RhdHNfY3JlYXRlKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuIFx0XHRcdFx0ICAgIGFnZW50KTtcbiBcbiBcdFx0a3ZmcmVlKHByaXYtXHUwMDNlc3RhdHNfYWdlbnQuYnVmKTtcbi1cdFx0cmV0dXJuO1xuJiM0MztcdFx0cHJpdi1cdTAwM2VzdGF0c19hZ2VudC5idWYgPSBOVUxMO1xuIFx0fVxuLVxuLVx0cHJpdi1cdTAwM2VzdGF0c19hZ2VudC5hZ2VudCA9IGFnZW50O1xuLVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VzdGF0c19hZ2VudC53b3JrLCBtbHg1ZV9odl92aGNhX3N0YXRzX3dvcmspO1xuIH1cbiBcbiB2b2lkIG1seDVlX2h2X3ZoY2Ffc3RhdHNfZGVzdHJveShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcbiB7XG4tXHRpZiAoSVNfRVJSX09SX05VTEwocHJpdi1cdTAwM2VzdGF0c19hZ2VudC5hZ2VudCkpXG4mIzQzO1x0c3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQ7XG4mIzQzO1xuJiM0MztcdGFnZW50ID0gUkVBRF9PTkNFKHByaXYtXHUwMDNlc3RhdHNfYWdlbnQuYWdlbnQpO1xuJiM0MztcdGlmIChJU19FUlJfT1JfTlVMTChhZ2VudCkpXG4gXHRcdHJldHVybjtcbiBcbi1cdG1seDVfaHZfdmhjYV9hZ2VudF9kZXN0cm95KHByaXYtXHUwMDNlc3RhdHNfYWdlbnQuYWdlbnQpO1xuJiM0MztcdG1seDVfaHZfdmhjYV9hZ2VudF9kZXN0cm95KGFnZW50KTtcbiBcdGt2ZnJlZShwcml2LVx1MDAzZXN0YXRzX2FnZW50LmJ1Zik7XG4mIzQzO1xuJiM0MztcdFdSSVRFX09OQ0UocHJpdi1cdTAwM2VzdGF0c19hZ2VudC5hZ2VudCwgTlVMTCk7XG4mIzQzO1x0cHJpdi1cdTAwM2VzdGF0c19hZ2VudC5idWYgPSBOVUxMO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uY1xuaW5kZXggNzc1ZjBjNmU1NWM5NTUuLmFhODYxMGNlZGFhODViIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uY1xuQEAgLTI3NzMsNyAmIzQzOzI3NzMsNyBAQCBzdGF0aWMgaW50IG1seDVlX2NoYW5uZWxfc3RhdHNfYWxsb2Moc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBpeCwgaW50IGNwdSlcbiBcdFx0XHRcdFx0XHRHRlBfS0VSTkVMLCBjcHVfdG9fbm9kZShjcHUpKTtcbiBcdGlmICghcHJpdi1cdTAwM2VjaGFubmVsX3N0YXRzW2l4XSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4tXHRwcml2LVx1MDAzZXN0YXRzX25jaCYjNDM7JiM0Mzs7XG4mIzQzO1x0bWx4NWVfc3RhdHNfbmNoX3dyaXRlKHByaXYsIHByaXYtXHUwMDNlc3RhdHNfbmNoICYjNDM7IDEpO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTQwNDAsOSAmIzQzOzQwNDAsMTAgQEAgc3RhdGljIGludCBtbHg1ZV9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcbiBcbiB2b2lkIG1seDVlX2ZvbGRfc3dfc3RhdHM2NChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IHJ0bmxfbGlua19zdGF0czY0ICpzKVxuIHtcbiYjNDM7XHR1MTYgbmNoID0gbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdik7XG4gXHRpbnQgaTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHByaXYtXHUwMDNlc3RhdHNfbmNoOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5jaDsgaSYjNDM7JiM0MzspIHtcbiBcdFx0c3RydWN0IG1seDVlX2NoYW5uZWxfc3RhdHMgKmNoYW5uZWxfc3RhdHMgPSBwcml2LVx1MDAzZWNoYW5uZWxfc3RhdHNbaV07XG4gXHRcdHN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqeHNrcnFfc3RhdHMgPSBcdTAwMjZjaGFubmVsX3N0YXRzLVx1MDAzZXhza3JxO1xuIFx0XHRzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMgKnJxX3N0YXRzID0gXHUwMDI2Y2hhbm5lbF9zdGF0cy1cdTAwM2VycTtcbkBAIC01NDg4LDcgJiM0Mzs1NDg5LDcgQEAgc3RhdGljIHZvaWQgbWx4NWVfZ2V0X3F1ZXVlX3N0YXRzX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBpLFxuIFx0c3RydWN0IG1seDVlX3JxX3N0YXRzICp4c2tycV9zdGF0cztcbiBcdHN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqcnFfc3RhdHM7XG4gXG4tXHRpZiAobWx4NWVfaXNfdXBsaW5rX3JlcChwcml2KSB8fCAhcHJpdi1cdTAwM2VzdGF0c19uY2gpXG4mIzQzO1x0aWYgKG1seDVlX2lzX3VwbGlua19yZXAocHJpdikgfHwgIW1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRjaGFubmVsX3N0YXRzID0gcHJpdi1cdTAwM2VjaGFubmVsX3N0YXRzW2ldO1xuQEAgLTU1MTIsNyAmIzQzOzU1MTMsNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9nZXRfcXVldWVfc3RhdHNfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IGksXG4gXHRzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4gXHRzdHJ1Y3QgbWx4NWVfc3Ffc3RhdHMgKnNxX3N0YXRzO1xuIFxuLVx0aWYgKCFwcml2LVx1MDAzZXN0YXRzX25jaClcbiYjNDM7XHRpZiAoIW1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpKVxuIFx0XHRyZXR1cm47XG4gXG4gXHQvKiBubyBzcGVjaWFsIGNhc2UgbmVlZGVkIGZvciBwdHAgaHRiIGV0YyBzaW5jZSB0eHEyc3Ffc3RhdHMgaXMga2VwdCB1cFxuQEAgLTU1MzgsNiAmIzQzOzU1MzksNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9nZXRfYmFzZV9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdFx0IHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfdHggKnR4KVxuIHtcbiBcdHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiYjNDM7XHR1MTYgbmNoID0gbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdik7XG4gXHRzdHJ1Y3QgbWx4NWVfcHRwICpwdHBfY2hhbm5lbDtcbiBcdGludCBpLCB0YztcbiBcbkBAIC01NTQ5LDcgJiM0Mzs1NTUxLDcgQEAgc3RhdGljIHZvaWQgbWx4NWVfZ2V0X2Jhc2Vfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0cngtXHUwMDNlaHdfZ3JvX3dpcmVfcGFja2V0cyA9IDA7XG4gXHRcdHJ4LVx1MDAzZWh3X2dyb193aXJlX2J5dGVzID0gMDtcbiBcbi1cdFx0Zm9yIChpID0gcHJpdi1cdTAwM2VjaGFubmVscy5wYXJhbXMubnVtX2NoYW5uZWxzOyBpIFx1MDAzYyBwcml2LVx1MDAzZXN0YXRzX25jaDsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGZvciAoaSA9IHByaXYtXHUwMDNlY2hhbm5lbHMucGFyYW1zLm51bV9jaGFubmVsczsgaSBcdTAwM2MgbmNoOyBpJiM0MzsmIzQzOykge1xuIFx0XHRcdHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfcnggcnhfaSA9IHswfTtcbiBcbiBcdFx0XHRtbHg1ZV9nZXRfcXVldWVfc3RhdHNfcngoZGV2LCBpLCBcdTAwMjZyeF9pKTtcbkBAIC01NTg1LDcgJiM0Mzs1NTg3LDcgQEAgc3RhdGljIHZvaWQgbWx4NWVfZ2V0X2Jhc2Vfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdHR4LVx1MDAzZXN0b3AgPSAwO1xuIFx0dHgtXHUwMDNld2FrZSA9IDA7XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwcml2LVx1MDAzZXN0YXRzX25jaDsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuY2g7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdHN0cnVjdCBtbHg1ZV9jaGFubmVsX3N0YXRzICpjaGFubmVsX3N0YXRzID0gcHJpdi1cdTAwM2VjaGFubmVsX3N0YXRzW2ldO1xuIFxuIFx0XHQvKiBoYW5kbGUgdHdvIGNhc2VzOlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmNcbmluZGV4IDdmMzMyNjFiYTY1NTNiLi5kZTM4YjYwODA2YzI2NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuY1xuQEAgLTUxNSw2ICYjNDM7NTE1LDcgQEAgc3RhdGljIHZvaWQgbWx4NWVfc3RhdHNfdXBkYXRlX3N0YXRzX3JxX3BhZ2VfcG9vbChzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYylcbiBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfVVBEQVRFX1NUQVRTKHN3KVxuIHtcbiBcdHN0cnVjdCBtbHg1ZV9zd19zdGF0cyAqcyA9IFx1MDAyNnByaXYtXHUwMDNlc3RhdHMuc3c7XG4mIzQzO1x0dTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xuIFx0aW50IGk7XG4gXG4gXHRtZW1zZXQocywgMCwgc2l6ZW9mKCpzKSk7XG5AQCAtNTIyLDcgJiM0Mzs1MjMsNyBAQCBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfVVBEQVRFX1NUQVRTKHN3KVxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcHJpdi1cdTAwM2VjaGFubmVscy5udW07IGkmIzQzOyYjNDM7KSAvKiBmb3IgYWN0aXZlIGNoYW5uZWxzIG9ubHkgKi9cbiBcdFx0bWx4NWVfc3RhdHNfdXBkYXRlX3N0YXRzX3JxX3BhZ2VfcG9vbChwcml2LVx1MDAzZWNoYW5uZWxzLmNbaV0pO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcHJpdi1cdTAwM2VzdGF0c19uY2g7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgbmNoOyBpJiM0MzsmIzQzOykge1xuIFx0XHRzdHJ1Y3QgbWx4NWVfY2hhbm5lbF9zdGF0cyAqY2hhbm5lbF9zdGF0cyA9XG4gXHRcdFx0cHJpdi1cdTAwM2VjaGFubmVsX3N0YXRzW2ldO1xuIFxuQEAgLTI2MTQsNyAmIzQzOzI2MTUsNyBAQCBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfVVBEQVRFX1NUQVRTKHB0cCkgeyByZXR1cm47IH1cbiBcbiBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfTlVNX1NUQVRTKGNoYW5uZWxzKVxuIHtcbi1cdGludCBtYXhfbmNoID0gcHJpdi1cdTAwM2VzdGF0c19uY2g7XG4mIzQzO1x0aW50IG1heF9uY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcbiBcbiBcdHJldHVybiAoTlVNX1JRX1NUQVRTICogbWF4X25jaCkgJiM0MztcbiBcdCAgICAgICAoTlVNX0NIX1NUQVRTICogbWF4X25jaCkgJiM0MztcbkBAIC0yNjI3LDggJiM0MzsyNjI4LDggQEAgc3RhdGljIE1MWDVFX0RFQ0xBUkVfU1RBVFNfR1JQX09QX05VTV9TVEFUUyhjaGFubmVscylcbiBcbiBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfRklMTF9TVFJTKGNoYW5uZWxzKVxuIHtcbiYjNDM7XHRpbnQgbWF4X25jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xuIFx0Ym9vbCBpc194c2sgPSBwcml2LVx1MDAzZXhzay5ldmVyX3VzZWQ7XG4tXHRpbnQgbWF4X25jaCA9IHByaXYtXHUwMDNlc3RhdHNfbmNoO1xuIFx0aW50IGksIGosIHRjO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbWF4X25jaDsgaSYjNDM7JiM0MzspXG5AQCAtMjY2MCw4ICYjNDM7MjY2MSw4IEBAIHN0YXRpYyBNTFg1RV9ERUNMQVJFX1NUQVRTX0dSUF9PUF9GSUxMX1NUUlMoY2hhbm5lbHMpXG4gXG4gc3RhdGljIE1MWDVFX0RFQ0xBUkVfU1RBVFNfR1JQX09QX0ZJTExfU1RBVFMoY2hhbm5lbHMpXG4ge1xuJiM0MztcdGludCBtYXhfbmNoID0gbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdik7XG4gXHRib29sIGlzX3hzayA9IHByaXYtXHUwMDNleHNrLmV2ZXJfdXNlZDtcbi1cdGludCBtYXhfbmNoID0gcHJpdi1cdTAwM2VzdGF0c19uY2g7XG4gXHRpbnQgaSwgaiwgdGM7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBtYXhfbmNoOyBpJiM0MzsmIzQzOylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jXG5pbmRleCAwYTYwMDNmZTYwZTlmOC4uNjc0YmVkNzIxZTYzNzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmNcbkBAIC0xMzUsMTAgJiM0MzsxMzUsMTEgQEAgdm9pZCBtbHg1aV9jbGVhbnVwKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuIFxuIHN0YXRpYyB2b2lkIG1seDVpX2dycF9zd191cGRhdGVfc3RhdHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4ge1xuJiM0MztcdHUxNiBuY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcbiBcdHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCBzID0ge307XG4gXHRpbnQgaSwgajtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHByaXYtXHUwMDNlc3RhdHNfbmNoOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5jaDsgaSYjNDM7JiM0MzspIHtcbiBcdFx0c3RydWN0IG1seDVlX2NoYW5uZWxfc3RhdHMgKmNoYW5uZWxfc3RhdHM7XG4gXHRcdHN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqcnFfc3RhdHM7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuY1xuaW5kZXggZDZkYzdiY2U4NTVlMGIuLjMwNTc1MmRhYjdiZGY0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5jXG5AQCAtMTkwLDcgJiM0MzsxOTAsNyBAQCBtbHg1X2h2X3ZoY2FfY29udHJvbF9hZ2VudF9jcmVhdGUoc3RydWN0IG1seDVfaHZfdmhjYSAqaHZfdmhjYSlcbiBcdHJldHVybiBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKGh2X3ZoY2EsIE1MWDVfSFZfVkhDQV9BR0VOVF9DT05UUk9MLFxuIFx0XHRcdFx0XHQgTlVMTCxcbiBcdFx0XHRcdFx0IG1seDVfaHZfdmhjYV9jb250cm9sX2FnZW50X2ludmFsaWRhdGUsXG4tXHRcdFx0XHRcdCBOVUxMLCBOVUxMKTtcbiYjNDM7XHRcdFx0XHRcdCBOVUxMLCBOVUxMLCBOVUxMKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgbWx4NV9odl92aGNhX2NvbnRyb2xfYWdlbnRfZGVzdHJveShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudClcbkBAIC0yNTYsNyAmIzQzOzI1Niw4IEBAIG1seDVfaHZfdmhjYV9hZ2VudF9jcmVhdGUoc3RydWN0IG1seDVfaHZfdmhjYSAqaHZfdmhjYSxcbiBcdFx0XHQgIHZvaWQgKCppbnZhbGlkYXRlKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50KixcbiBcdFx0XHRcdFx0ICAgICB1NjQgYmxvY2tfbWFzayksXG4gXHRcdFx0ICB2b2lkICgqY2xlYXVwKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCksXG4tXHRcdFx0ICB2b2lkICpwcml2KVxuJiM0MztcdFx0XHQgIHZvaWQgKnByaXYsXG4mIzQzO1x0XHRcdCAgc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqKmN0eF91cGRhdGUpXG4ge1xuIFx0c3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQ7XG4gXG5AQCAtMjg0LDYgJiM0MzsyODUsOSBAQCBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHN0cnVjdCBtbHg1X2h2X3ZoY2EgKmh2X3ZoY2EsXG4gXHRhZ2VudC1cdTAwM2VpbnZhbGlkYXRlID0gaW52YWxpZGF0ZTtcbiBcdGFnZW50LVx1MDAzZWNsZWFudXAgICA9IGNsZWF1cDtcbiBcbiYjNDM7XHRpZiAoY3R4X3VwZGF0ZSlcbiYjNDM7XHRcdFdSSVRFX09OQ0UoKmN0eF91cGRhdGUsIGFnZW50KTtcbiYjNDM7XG4gXHRtdXRleF9sb2NrKFx1MDAyNmh2X3ZoY2EtXHUwMDNlYWdlbnRzX2xvY2spO1xuIFx0aHZfdmhjYS1cdTAwM2VhZ2VudHNbdHlwZV0gPSBhZ2VudDtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZodl92aGNhLVx1MDAzZWFnZW50c19sb2NrKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5oXG5pbmRleCBmMjQwZmZlNTExNmM1Yi4uOGIzOTc0Y2YwZWU0OWEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmhcbkBAIC00Myw3ICYjNDM7NDMsOCBAQCBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHN0cnVjdCBtbHg1X2h2X3ZoY2EgKmh2X3ZoY2EsXG4gXHRcdFx0ICB2b2lkICgqaW52YWxpZGF0ZSkoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCosXG4gXHRcdFx0XHRcdCAgICAgdTY0IGJsb2NrX21hc2spLFxuIFx0XHRcdCAgdm9pZCAoKmNsZWFudXApKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50KSxcbi1cdFx0XHQgIHZvaWQgKmNvbnRleHQpO1xuJiM0MztcdFx0XHQgIHZvaWQgKmNvbnRleHQsXG4mIzQzO1x0XHRcdCAgc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqKmN0eF91cGRhdGUpO1xuIFxuIHZvaWQgbWx4NV9odl92aGNhX2FnZW50X2Rlc3Ryb3koc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpO1xuIGludCBtbHg1X2h2X3ZoY2FfYWdlbnRfd3JpdGUoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQsXG5AQCAtODQsNyAmIzQzOzg1LDggQEAgbWx4NV9odl92aGNhX2FnZW50X2NyZWF0ZShzdHJ1Y3QgbWx4NV9odl92aGNhICpodl92aGNhLFxuIFx0XHRcdCAgdm9pZCAoKmludmFsaWRhdGUpKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQqLFxuIFx0XHRcdFx0XHQgICAgIHU2NCBibG9ja19tYXNrKSxcbiBcdFx0XHQgIHZvaWQgKCpjbGVhbnVwKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCksXG4tXHRcdFx0ICB2b2lkICpjb250ZXh0KVxuJiM0MztcdFx0XHQgIHZvaWQgKmNvbnRleHQsXG4mIzQzO1x0XHRcdCAgc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqKmN0eF91cGRhdGUpXG4ge1xuIFx0cmV0dXJuIE5VTEw7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA4OjUzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBTaW5jZSBzeXprYWxsZXIgZG9lcyBub3QgZW11bGF0ZSBNZWxsYW5veCBoYXJkd2FyZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUpLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5ZjY1Yzk1NTQ2OWNiZDU3MzQzNTVlZTJlNmExNmRiZmM1NzkyMTA5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdW4gMjIgMDg6NTI6NTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oCmluZGV4IDIyNzBlMmU1NTBkZDllLi5kNTA3Mjg5MDk2YzIwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgKQEAgLTk4Nyw2ICYjNDM7OTg3LDE4IEBAIHN0cnVjdCBtbHg1ZV9wcml2IHsKIAlzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqZmVjX3JhbmdlczsKIH07CiAKJiM0MztzdGF0aWMgaW5saW5lIHUxNiBtbHg1ZV9zdGF0c19uY2hfcmVhZChjb25zdCBzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikKJiM0Mzt7CiYjNDM7CS8qIFBhaXJzIHdpdGggc21wX3N0b3JlX3JlbGVhc2UgaW4gbWx4NWVfc3RhdHNfbmNoX3dyaXRlKCkuICovCiYjNDM7CXJldHVybiBzbXBfbG9hZF9hY3F1aXJlKCZhbXA7cHJpdi0mZ3Q7c3RhdHNfbmNoKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGlubGluZSB2b2lkIG1seDVlX3N0YXRzX25jaF93cml0ZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgdTE2IG4pCiYjNDM7ewomIzQzOwkvKiBQYWlycyB3aXRoIHNtcF9sb2FkX2FjcXVpcmUgaW4gbWx4NWVfc3RhdHNfbmNoX3JlYWQoKS4gKi8KJiM0MzsJc21wX3N0b3JlX3JlbGVhc2UoJmFtcDtwcml2LSZndDtzdGF0c19uY2gsIG4pOwomIzQzO30KJiM0MzsKIHN0cnVjdCBtbHg1ZV9kZXYgewogCXN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7CiAJc3RydWN0IGRldmxpbmtfcG9ydCBkbF9wb3J0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2h2X3ZoY2Ffc3RhdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9odl92aGNhX3N0YXRzLmMKaW5kZXggMTk1ODYzYjJjMDEzZTIuLjk3NDdkNzczNmQzN2FmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vaHZfdmhjYV9zdGF0cy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9odl92aGNhX3N0YXRzLmMKQEAgLTMzLDkgJiM0MzszMywxMCBAQCBtbHg1ZV9odl92aGNhX2ZpbGxfcmluZ19zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgaW50IGNoLAogc3RhdGljIHZvaWQgbWx4NWVfaHZfdmhjYV9maWxsX3N0YXRzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCB2b2lkICpkYXRhLAogCQkJCSAgICAgaW50IGJ1Zl9sZW4pCiB7CiYjNDM7CXUxNiBuY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTsKIAlpbnQgY2gsIGkgPSAwOwogCi0JZm9yIChjaCA9IDA7IGNoICZsdDsgcHJpdi0mZ3Q7c3RhdHNfbmNoOyBjaCYjNDM7JiM0MzspIHsKJiM0MzsJZm9yIChjaCA9IDA7IGNoICZsdDsgbmNoOyBjaCYjNDM7JiM0MzspIHsKIAkJdm9pZCAqYnVmID0gZGF0YSAmIzQzOyBpOwogCiAJCWlmIChXQVJOX09OX09OQ0UoYnVmICYjNDM7CkBAIC00OSw5ICYjNDM7NTAsMTYgQEAgc3RhdGljIHZvaWQgbWx4NWVfaHZfdmhjYV9maWxsX3N0YXRzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCB2b2lkICpkYXRhLAogfQogCiBzdGF0aWMgaW50IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX3NpemUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpCiYjNDM7ewomIzQzOwl1MTYgbmNoID0gbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdik7CiYjNDM7CiYjNDM7CXJldHVybiBzaXplb2Yoc3RydWN0IG1seDVlX2h2X3ZoY2FfcGVyX3Jpbmdfc3RhdHMpICogbmNoOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX21heF9zaXplKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KQogewogCXJldHVybiAoc2l6ZW9mKHN0cnVjdCBtbHg1ZV9odl92aGNhX3Blcl9yaW5nX3N0YXRzKSAqCi0JCXByaXYtJmd0O3N0YXRzX25jaCk7CiYjNDM7CQltYXgocHJpdi0mZ3Q7bWF4X25jaCwgcHJpdi0mZ3Q7c3RhdHNfbmNoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIG1seDVlX2h2X3ZoY2Ffc3RhdHNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCkBAIC02Nyw3ICYjNDM7NzUsNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXNhZ2VudCA9IGNvbnRhaW5lcl9vZihkd29yaywgc3RydWN0IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYWdlbnQsIHdvcmspOwogCXByaXYgPSBjb250YWluZXJfb2Yoc2FnZW50LCBzdHJ1Y3QgbWx4NWVfcHJpdiwgc3RhdHNfYWdlbnQpOwogCWJ1Zl9sZW4gPSBtbHg1ZV9odl92aGNhX3N0YXRzX2J1Zl9zaXplKHByaXYpOwotCWFnZW50ID0gc2FnZW50LSZndDthZ2VudDsKJiM0MzsJYWdlbnQgPSBSRUFEX09OQ0Uoc2FnZW50LSZndDthZ2VudCk7CiAJYnVmID0gc2FnZW50LSZndDtidWY7CiAKIAltZW1zZXQoYnVmLCAwLCBidWZfbGVuKTsKQEAgLTEwMCw3ICYjNDM7MTA4LDcgQEAgc3RhdGljIHZvaWQgbWx4NWVfaHZfdmhjYV9zdGF0c19jb250cm9sKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50LAogCXNhZ2VudCA9ICZhbXA7cHJpdi0mZ3Q7c3RhdHNfYWdlbnQ7CiAKIAlibG9jay0mZ3Q7dmVyc2lvbiA9IE1MWDVfSFZfVkhDQV9TVEFUU19WRVJTSU9OOwotCWJsb2NrLSZndDtyaW5ncyAgID0gcHJpdi0mZ3Q7c3RhdHNfbmNoOwomIzQzOwlibG9jay0mZ3Q7cmluZ3MgICA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpOwogCiAJaWYgKCFibG9jay0mZ3Q7Y29tbWFuZCkgewogCQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFtcDtwcml2LSZndDtzdGF0c19hZ2VudC53b3JrKTsKQEAgLTEyMiwxOCAmIzQzOzEzMCwyMSBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX2NsZWFudXAoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpCiAKIHZvaWQgbWx4NWVfaHZfdmhjYV9zdGF0c19jcmVhdGUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpCiB7Ci0JaW50IGJ1Zl9sZW4gPSBtbHg1ZV9odl92aGNhX3N0YXRzX2J1Zl9zaXplKHByaXYpOwomIzQzOwlpbnQgYnVmX2xlbiA9IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX21heF9zaXplKHByaXYpOwogCXN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50OwogCiAJcHJpdi0mZ3Q7c3RhdHNfYWdlbnQuYnVmID0ga3Z6YWxsb2MoYnVmX2xlbiwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwcml2LSZndDtzdGF0c19hZ2VudC5idWYpCiAJCXJldHVybjsKIAomIzQzOwlJTklUX0RFTEFZRURfV09SSygmYW1wO3ByaXYtJmd0O3N0YXRzX2FnZW50LndvcmssIG1seDVlX2h2X3ZoY2Ffc3RhdHNfd29yayk7CiYjNDM7CiAJYWdlbnQgPSBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHByaXYtJmd0O21kZXYtJmd0O2h2X3ZoY2EsCiAJCQkJCSAgTUxYNV9IVl9WSENBX0FHRU5UX1NUQVRTLAogCQkJCQkgIG1seDVlX2h2X3ZoY2Ffc3RhdHNfY29udHJvbCwgTlVMTCwKIAkJCQkJICBtbHg1ZV9odl92aGNhX3N0YXRzX2NsZWFudXAsCi0JCQkJCSAgcHJpdik7CiYjNDM7CQkJCQkgIHByaXYsCiYjNDM7CQkJCQkgICZhbXA7cHJpdi0mZ3Q7c3RhdHNfYWdlbnQuYWdlbnQpOwogCiAJaWYgKElTX0VSUl9PUl9OVUxMKGFnZW50KSkgewogCQlpZiAoSVNfRVJSKGFnZW50KSkKQEAgLTE0MiwxOCAmIzQzOzE1MywyMSBAQCB2b2lkIG1seDVlX2h2X3ZoY2Ffc3RhdHNfY3JlYXRlKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KQogCQkJCSAgICBhZ2VudCk7CiAKIAkJa3ZmcmVlKHByaXYtJmd0O3N0YXRzX2FnZW50LmJ1Zik7Ci0JCXJldHVybjsKJiM0MzsJCXByaXYtJmd0O3N0YXRzX2FnZW50LmJ1ZiA9IE5VTEw7CiAJfQotCi0JcHJpdi0mZ3Q7c3RhdHNfYWdlbnQuYWdlbnQgPSBhZ2VudDsKLQlJTklUX0RFTEFZRURfV09SSygmYW1wO3ByaXYtJmd0O3N0YXRzX2FnZW50LndvcmssIG1seDVlX2h2X3ZoY2Ffc3RhdHNfd29yayk7CiB9CiAKIHZvaWQgbWx4NWVfaHZfdmhjYV9zdGF0c19kZXN0cm95KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KQogewotCWlmIChJU19FUlJfT1JfTlVMTChwcml2LSZndDtzdGF0c19hZ2VudC5hZ2VudCkpCiYjNDM7CXN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50OwomIzQzOwomIzQzOwlhZ2VudCA9IFJFQURfT05DRShwcml2LSZndDtzdGF0c19hZ2VudC5hZ2VudCk7CiYjNDM7CWlmIChJU19FUlJfT1JfTlVMTChhZ2VudCkpCiAJCXJldHVybjsKIAotCW1seDVfaHZfdmhjYV9hZ2VudF9kZXN0cm95KHByaXYtJmd0O3N0YXRzX2FnZW50LmFnZW50KTsKJiM0MzsJbWx4NV9odl92aGNhX2FnZW50X2Rlc3Ryb3koYWdlbnQpOwogCWt2ZnJlZShwcml2LSZndDtzdGF0c19hZ2VudC5idWYpOwomIzQzOwomIzQzOwlXUklURV9PTkNFKHByaXYtJmd0O3N0YXRzX2FnZW50LmFnZW50LCBOVUxMKTsKJiM0MzsJcHJpdi0mZ3Q7c3RhdHNfYWdlbnQuYnVmID0gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jCmluZGV4IDc3NWYwYzZlNTVjOTU1Li5hYTg2MTBjZWRhYTg1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jCkBAIC0yNzczLDcgJiM0MzsyNzczLDcgQEAgc3RhdGljIGludCBtbHg1ZV9jaGFubmVsX3N0YXRzX2FsbG9jKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBpbnQgaXgsIGludCBjcHUpCiAJCQkJCQlHRlBfS0VSTkVMLCBjcHVfdG9fbm9kZShjcHUpKTsKIAlpZiAoIXByaXYtJmd0O2NoYW5uZWxfc3RhdHNbaXhdKQogCQlyZXR1cm4gLUVOT01FTTsKLQlwcml2LSZndDtzdGF0c19uY2gmIzQzOyYjNDM7OwomIzQzOwltbHg1ZV9zdGF0c19uY2hfd3JpdGUocHJpdiwgcHJpdi0mZ3Q7c3RhdHNfbmNoICYjNDM7IDEpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC00MDQwLDkgJiM0Mzs0MDQwLDEwIEBAIHN0YXRpYyBpbnQgbWx4NWVfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsCiAKIHZvaWQgbWx4NWVfZm9sZF9zd19zdGF0czY0KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3QgcnRubF9saW5rX3N0YXRzNjQgKnMpCiB7CiYjNDM7CXUxNiBuY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTsKIAlpbnQgaTsKIAotCWZvciAoaSA9IDA7IGkgJmx0OyBwcml2LSZndDtzdGF0c19uY2g7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBuY2g7IGkmIzQzOyYjNDM7KSB7CiAJCXN0cnVjdCBtbHg1ZV9jaGFubmVsX3N0YXRzICpjaGFubmVsX3N0YXRzID0gcHJpdi0mZ3Q7Y2hhbm5lbF9zdGF0c1tpXTsKIAkJc3RydWN0IG1seDVlX3JxX3N0YXRzICp4c2tycV9zdGF0cyA9ICZhbXA7Y2hhbm5lbF9zdGF0cy0mZ3Q7eHNrcnE7CiAJCXN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqcnFfc3RhdHMgPSAmYW1wO2NoYW5uZWxfc3RhdHMtJmd0O3JxOwpAQCAtNTQ4OCw3ICYjNDM7NTQ4OSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9xdWV1ZV9zdGF0c19yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaSwKIAlzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMgKnhza3JxX3N0YXRzOwogCXN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqcnFfc3RhdHM7CiAKLQlpZiAobWx4NWVfaXNfdXBsaW5rX3JlcChwcml2KSB8fCAhcHJpdi0mZ3Q7c3RhdHNfbmNoKQomIzQzOwlpZiAobWx4NWVfaXNfdXBsaW5rX3JlcChwcml2KSB8fCAhbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdikpCiAJCXJldHVybjsKIAogCWNoYW5uZWxfc3RhdHMgPSBwcml2LSZndDtjaGFubmVsX3N0YXRzW2ldOwpAQCAtNTUxMiw3ICYjNDM7NTUxMyw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9xdWV1ZV9zdGF0c190eChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaSwKIAlzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7CiAJc3RydWN0IG1seDVlX3NxX3N0YXRzICpzcV9zdGF0czsKIAotCWlmICghcHJpdi0mZ3Q7c3RhdHNfbmNoKQomIzQzOwlpZiAoIW1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpKQogCQlyZXR1cm47CiAKIAkvKiBubyBzcGVjaWFsIGNhc2UgbmVlZGVkIGZvciBwdHAgaHRiIGV0YyBzaW5jZSB0eHEyc3Ffc3RhdHMgaXMga2VwdCB1cApAQCAtNTUzOCw2ICYjNDM7NTUzOSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9iYXNlX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkJIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfdHggKnR4KQogewogCXN0cnVjdCBtbHg1ZV9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTsKJiM0MzsJdTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpOwogCXN0cnVjdCBtbHg1ZV9wdHAgKnB0cF9jaGFubmVsOwogCWludCBpLCB0YzsKIApAQCAtNTU0OSw3ICYjNDM7NTU1MSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9iYXNlX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCXJ4LSZndDtod19ncm9fd2lyZV9wYWNrZXRzID0gMDsKIAkJcngtJmd0O2h3X2dyb193aXJlX2J5dGVzID0gMDsKIAotCQlmb3IgKGkgPSBwcml2LSZndDtjaGFubmVscy5wYXJhbXMubnVtX2NoYW5uZWxzOyBpICZsdDsgcHJpdi0mZ3Q7c3RhdHNfbmNoOyBpJiM0MzsmIzQzOykgewomIzQzOwkJZm9yIChpID0gcHJpdi0mZ3Q7Y2hhbm5lbHMucGFyYW1zLm51bV9jaGFubmVsczsgaSAmbHQ7IG5jaDsgaSYjNDM7JiM0MzspIHsKIAkJCXN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfcnggcnhfaSA9IHswfTsKIAogCQkJbWx4NWVfZ2V0X3F1ZXVlX3N0YXRzX3J4KGRldiwgaSwgJmFtcDtyeF9pKTsKQEAgLTU1ODUsNyAmIzQzOzU1ODcsNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9nZXRfYmFzZV9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCXR4LSZndDtzdG9wID0gMDsKIAl0eC0mZ3Q7d2FrZSA9IDA7CiAKLQlmb3IgKGkgPSAwOyBpICZsdDsgcHJpdi0mZ3Q7c3RhdHNfbmNoOyBpJiM0MzsmIzQzOykgewomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgbmNoOyBpJiM0MzsmIzQzOykgewogCQlzdHJ1Y3QgbWx4NWVfY2hhbm5lbF9zdGF0cyAqY2hhbm5lbF9zdGF0cyA9IHByaXYtJmd0O2NoYW5uZWxfc3RhdHNbaV07CiAKIAkJLyogaGFuZGxlIHR3byBjYXNlczoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmMKaW5kZXggN2YzMzI2MWJhNjU1M2IuLmRlMzhiNjA4MDZjMjY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYwpAQCAtNTE1LDYgJiM0Mzs1MTUsNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9zdGF0c191cGRhdGVfc3RhdHNfcnFfcGFnZV9wb29sKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjKQogc3RhdGljIE1MWDVFX0RFQ0xBUkVfU1RBVFNfR1JQX09QX1VQREFURV9TVEFUUyhzdykKIHsKIAlzdHJ1Y3QgbWx4NWVfc3dfc3RhdHMgKnMgPSAmYW1wO3ByaXYtJmd0O3N0YXRzLnN3OwomIzQzOwl1MTYgbmNoID0gbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdik7CiAJaW50IGk7CiAKIAltZW1zZXQocywgMCwgc2l6ZW9mKCpzKSk7CkBAIC01MjIsNyAmIzQzOzUyMyw3IEBAIHN0YXRpYyBNTFg1RV9ERUNMQVJFX1NUQVRTX0dSUF9PUF9VUERBVEVfU1RBVFMoc3cpCiAJZm9yIChpID0gMDsgaSAmbHQ7IHByaXYtJmd0O2NoYW5uZWxzLm51bTsgaSYjNDM7JiM0MzspIC8qIGZvciBhY3RpdmUgY2hhbm5lbHMgb25seSAqLwogCQltbHg1ZV9zdGF0c191cGRhdGVfc3RhdHNfcnFfcGFnZV9wb29sKHByaXYtJmd0O2NoYW5uZWxzLmNbaV0pOwogCi0JZm9yIChpID0gMDsgaSAmbHQ7IHByaXYtJmd0O3N0YXRzX25jaDsgaSYjNDM7JiM0MzspIHsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IG5jaDsgaSYjNDM7JiM0MzspIHsKIAkJc3RydWN0IG1seDVlX2NoYW5uZWxfc3RhdHMgKmNoYW5uZWxfc3RhdHMgPQogCQkJcHJpdi0mZ3Q7Y2hhbm5lbF9zdGF0c1tpXTsKIApAQCAtMjYxNCw3ICYjNDM7MjYxNSw3IEBAIHN0YXRpYyBNTFg1RV9ERUNMQVJFX1NUQVRTX0dSUF9PUF9VUERBVEVfU1RBVFMocHRwKSB7IHJldHVybjsgfQogCiBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfTlVNX1NUQVRTKGNoYW5uZWxzKQogewotCWludCBtYXhfbmNoID0gcHJpdi0mZ3Q7c3RhdHNfbmNoOwomIzQzOwlpbnQgbWF4X25jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpOwogCiAJcmV0dXJuIChOVU1fUlFfU1RBVFMgKiBtYXhfbmNoKSAmIzQzOwogCSAgICAgICAoTlVNX0NIX1NUQVRTICogbWF4X25jaCkgJiM0MzsKQEAgLTI2MjcsOCAmIzQzOzI2MjgsOCBAQCBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfTlVNX1NUQVRTKGNoYW5uZWxzKQogCiBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfRklMTF9TVFJTKGNoYW5uZWxzKQogewomIzQzOwlpbnQgbWF4X25jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpOwogCWJvb2wgaXNfeHNrID0gcHJpdi0mZ3Q7eHNrLmV2ZXJfdXNlZDsKLQlpbnQgbWF4X25jaCA9IHByaXYtJmd0O3N0YXRzX25jaDsKIAlpbnQgaSwgaiwgdGM7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgbWF4X25jaDsgaSYjNDM7JiM0MzspCkBAIC0yNjYwLDggJiM0MzsyNjYxLDggQEAgc3RhdGljIE1MWDVFX0RFQ0xBUkVfU1RBVFNfR1JQX09QX0ZJTExfU1RSUyhjaGFubmVscykKIAogc3RhdGljIE1MWDVFX0RFQ0xBUkVfU1RBVFNfR1JQX09QX0ZJTExfU1RBVFMoY2hhbm5lbHMpCiB7CiYjNDM7CWludCBtYXhfbmNoID0gbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdik7CiAJYm9vbCBpc194c2sgPSBwcml2LSZndDt4c2suZXZlcl91c2VkOwotCWludCBtYXhfbmNoID0gcHJpdi0mZ3Q7c3RhdHNfbmNoOwogCWludCBpLCBqLCB0YzsKIAogCWZvciAoaSA9IDA7IGkgJmx0OyBtYXhfbmNoOyBpJiM0MzsmIzQzOykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmMKaW5kZXggMGE2MDAzZmU2MGU5ZjguLjY3NGJlZDcyMWU2Mzc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYwpAQCAtMTM1LDEwICYjNDM7MTM1LDExIEBAIHZvaWQgbWx4NWlfY2xlYW51cChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikKIAogc3RhdGljIHZvaWQgbWx4NWlfZ3JwX3N3X3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikKIHsKJiM0MzsJdTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpOwogCXN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCBzID0ge307CiAJaW50IGksIGo7CiAKLQlmb3IgKGkgPSAwOyBpICZsdDsgcHJpdi0mZ3Q7c3RhdHNfbmNoOyBpJiM0MzsmIzQzOykgewomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgbmNoOyBpJiM0MzsmIzQzOykgewogCQlzdHJ1Y3QgbWx4NWVfY2hhbm5lbF9zdGF0cyAqY2hhbm5lbF9zdGF0czsKIAkJc3RydWN0IG1seDVlX3JxX3N0YXRzICpycV9zdGF0czsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuYwppbmRleCBkNmRjN2JjZTg1NWUwYi4uMzA1NzUyZGFiN2JkZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5jCkBAIC0xOTAsNyAmIzQzOzE5MCw3IEBAIG1seDVfaHZfdmhjYV9jb250cm9sX2FnZW50X2NyZWF0ZShzdHJ1Y3QgbWx4NV9odl92aGNhICpodl92aGNhKQogCXJldHVybiBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKGh2X3ZoY2EsIE1MWDVfSFZfVkhDQV9BR0VOVF9DT05UUk9MLAogCQkJCQkgTlVMTCwKIAkJCQkJIG1seDVfaHZfdmhjYV9jb250cm9sX2FnZW50X2ludmFsaWRhdGUsCi0JCQkJCSBOVUxMLCBOVUxMKTsKJiM0MzsJCQkJCSBOVUxMLCBOVUxMLCBOVUxMKTsKIH0KIAogc3RhdGljIHZvaWQgbWx4NV9odl92aGNhX2NvbnRyb2xfYWdlbnRfZGVzdHJveShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCkKQEAgLTI1Niw3ICYjNDM7MjU2LDggQEAgbWx4NV9odl92aGNhX2FnZW50X2NyZWF0ZShzdHJ1Y3QgbWx4NV9odl92aGNhICpodl92aGNhLAogCQkJICB2b2lkICgqaW52YWxpZGF0ZSkoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCosCiAJCQkJCSAgICAgdTY0IGJsb2NrX21hc2spLAogCQkJICB2b2lkICgqY2xlYXVwKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCksCi0JCQkgIHZvaWQgKnByaXYpCiYjNDM7CQkJICB2b2lkICpwcml2LAomIzQzOwkJCSAgc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqKmN0eF91cGRhdGUpCiB7CiAJc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQ7CiAKQEAgLTI4NCw2ICYjNDM7Mjg1LDkgQEAgbWx4NV9odl92aGNhX2FnZW50X2NyZWF0ZShzdHJ1Y3QgbWx4NV9odl92aGNhICpodl92aGNhLAogCWFnZW50LSZndDtpbnZhbGlkYXRlID0gaW52YWxpZGF0ZTsKIAlhZ2VudC0mZ3Q7Y2xlYW51cCAgID0gY2xlYXVwOwogCiYjNDM7CWlmIChjdHhfdXBkYXRlKQomIzQzOwkJV1JJVEVfT05DRSgqY3R4X3VwZGF0ZSwgYWdlbnQpOwomIzQzOwogCW11dGV4X2xvY2soJmFtcDtodl92aGNhLSZndDthZ2VudHNfbG9jayk7CiAJaHZfdmhjYS0mZ3Q7YWdlbnRzW3R5cGVdID0gYWdlbnQ7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7aHZfdmhjYS0mZ3Q7YWdlbnRzX2xvY2spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuaAppbmRleCBmMjQwZmZlNTExNmM1Yi4uOGIzOTc0Y2YwZWU0OWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5oCkBAIC00Myw3ICYjNDM7NDMsOCBAQCBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHN0cnVjdCBtbHg1X2h2X3ZoY2EgKmh2X3ZoY2EsCiAJCQkgIHZvaWQgKCppbnZhbGlkYXRlKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50KiwKIAkJCQkJICAgICB1NjQgYmxvY2tfbWFzayksCiAJCQkgIHZvaWQgKCpjbGVhbnVwKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCksCi0JCQkgIHZvaWQgKmNvbnRleHQpOwomIzQzOwkJCSAgdm9pZCAqY29udGV4dCwKJiM0MzsJCQkgIHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKipjdHhfdXBkYXRlKTsKIAogdm9pZCBtbHg1X2h2X3ZoY2FfYWdlbnRfZGVzdHJveShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCk7CiBpbnQgbWx4NV9odl92aGNhX2FnZW50X3dyaXRlKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50LApAQCAtODQsNyAmIzQzOzg1LDggQEAgbWx4NV9odl92aGNhX2FnZW50X2NyZWF0ZShzdHJ1Y3QgbWx4NV9odl92aGNhICpodl92aGNhLAogCQkJICB2b2lkICgqaW52YWxpZGF0ZSkoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCosCiAJCQkJCSAgICAgdTY0IGJsb2NrX21hc2spLAogCQkJICB2b2lkICgqY2xlYW51cCkoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpLAotCQkJICB2b2lkICpjb250ZXh0KQomIzQzOwkJCSAgdm9pZCAqY29udGV4dCwKJiM0MzsJCQkgIHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKipjdHhfdXBkYXRlKQogewogCXJldHVybiBOVUxMOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwODo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTEwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNjA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudDogTWVsbGFub3ggbWx4NSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIE1lbGxhbm94IG1seDUgRXRoZXJuZXQgZHJpdmVyLiBJdCYjMzk7cyB0b3VjaGluZyBgcHJpdi0mZ3Q7c3RhdHNfbmNoYCB3aXRoIGBzbXBfbG9hZF9hY3F1aXJlYCBhbmQgYHNtcF9zdG9yZV9yZWxlYXNlYCwgYW5kIHRoZW4gaXQmIzM5O3MgbW9kaWZ5aW5nIGBtbHg1ZV9odl92aGNhX3N0YXRzX2NyZWF0ZWAsIGBtbHg1ZV9odl92aGNhX3N0YXRzX2Rlc3Ryb3lgLCBhbmQgYG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX21heF9zaXplYCBmb3IgdGhyZWFkIHNhZmV0eSBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuIFRoZSBmaWxlcyBhZmZlY3RlZCBhcmUgc2NhdHRlcmVkIGFjcm9zcyB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDVgIGRpcmVjdG9yeSBzdHJ1Y3R1cmU6IGBjb3JlL2VuL2h2X3ZoY2Ffc3RhdHMuY2AsIGBjb3JlL2VuX21haW4uY2AsIGBjb3JlL2VuX3N0YXRzLmNgLCBgY29yZS9pcG9pYi9pcG9pYi5jYCwgYW5kIGBjb3JlL2xpYi9odl92aGNhLmNgLgoKVGhlIGJpZyBxdWVzdGlvbiBpczogY2FuIEkgZnV6eiB0aGlzIGVmZmVjdGl2ZWx5PyBUaGlzIGlzIGEgaGFyZHdhcmUgZHJpdmVyIGZvciBDb25uZWN0WC00LzUvNi83LCBzbyBJIGtub3cgSSYjMzk7bSBkZWFsaW5nIHdpdGggUENJIGRldmljZXMgaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgc3RhbmRhcmQgVk0gZnV6emluZyB3b24mIzM5O3QgY3V0IGl0LiBTeXprYWxsZXIgZG9lc24mIzM5O3Qgc2VlbSB0byBoYXZlIGVtdWxhdGVkIE1lbGxhbm94IG1seDUgaGFyZHdhcmUsIGFuZCB0aGF0JiMzOTtzIHVzdWFsbHkgYSBkZWFsYnJlYWtlci4gVW5sZXNzIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgZW11bGF0aW9uIGxheWVyIG9yIGEgdmlydHVhbCBkcml2ZXIgZXF1aXZhbGVudCwgZHJpdmVycyBsaWtlIHRoZXNlIGFyZSBub3RvcmlvdXNseSBkaWZmaWN1bHQgdG8gdGFyZ2V0IHdpdGhvdXQgcmVhbCBoYXJkd2FyZSBvciBhIG1ldGhvZCBvZiBQQ0kgcGFzc3Rocm91Z2guCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBpcyAqYW55KiB3YXkgdG8gcnVuIHRoaXMgY29kZSB3aXRob3V0IGRpcmVjdCBoYXJkd2FyZSBhY2Nlc3MuIERvZXMgc3l6a2FsbGVyIGhhdmUgYW4gYWx0ZXJuYXRpdmUgdG8gdGVzdCBtbHg1PyBUaGUgb2J2aW91cyBhbnN3ZXIgaXMgbm8uIFRoaXMgZHJpdmVyIHNlZW1zIHRvIGJlIHB1cmVseSB0aWVkIHRvIHBoeXNpY2FsIFBDSSBkZXZpY2VzLiBXaXRob3V0IHRoYXQgUENJIGRldmljZSwgdGhlIHByb2JlIGZ1bmN0aW9uIGlzIG5ldmVyIGNhbGxlZCwgYW5kIHRoZSBkcml2ZXIgY29kZSBpcyBuZXZlciBleGVjdXRlZCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuIFRoaXMgbWVhbnMgY29kZSByZWxhdGVkIHRvIGBtbHg1ZV9odl92aGNhX3N0YXRzX2NyZWF0ZWAgY2FuJiMzOTt0IGJlIHJlYWNoZWQuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBjaGVjayBmb3IgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiwgbW9jayBpbXBsZW1lbnRhdGlvbnMsIG9yIHZpcnR1YWwgZHJpdmVyIGNvbXBvbmVudHMuIEkgd2lsbCB1c2UgYGdyZXBwZXJgIHRvIHNlYXJjaCB0aHJvdWdoIHRoZSBjb2RlYmFzZSBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byBtbHg1IGluIHRoZSBgdG9vbHMvYCBvciBgZHJpdmVycy9gIGRpcmVjdG9yaWVzLgoKQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgd2l0aG91dCBQQ0kgcGFzc3Rocm91Z2gsIHdoaWNoIGlzIG9mdGVuIGNvbXBsZXggYW5kIHJlc291cmNlLWludGVuc2l2ZSwgZnV6emluZyB0aGlzIHBhdGNoIGluIGEgdHlwaWNhbCBWTSBzZXR1cCBsb29rcyBoaWdobHkgdW5saWtlbHkuIE15IGFzc2Vzc21lbnQgaXMgdGhhdCBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwODo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDk5MTExIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz0xOT1jb25maWcgTUxYNV9GUEdBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMjUtXHQgIGFuZCBhbiBGUEdBIGNoaXAgb24gb25lIGJvYXJkLiBJZiB5b3Ugc2VsZWN0IHRoaXMgb3B0aW9uLCB0aGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjI2Olx0ICBtbHg1X2NvcmUgZHJpdmVyIHdpbGwgaW5jbHVkZSB0aGUgSW5ub3ZhIEZQR0EgY29yZSBhbmQgYWxsb3cgYnVpbGRpbmdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTI3LVx0ICBzYW5kYm94LXNwZWNpZmljIGNsaWVudCBkcml2ZXJzLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTc3PWNvbmZpZyBNTFg1X0JSSURHRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTgxLVx0aGVscFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6ODI6XHQgIG1seDUgQ29ubmVjdFggb2ZmbG9hZHMgc3VwcG9ydCBmb3IgRXRoZXJuZXQgQnJpZGdpbmcgKEJSSURHRSkuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy04My1cdCAgRW5hYmxlIG9mZmxvYWRpbmcgRkRCIHJ1bGVzIGZyb20gYSBicmlkZ2UgZGV2aWNlIGNvbnRhaW5pbmdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjg0Olx0ICByZXByZXNlbnRvcnMgb2YgbWx4NSB1cGxpbmsgYW5kIFZGIHBvcnRzLiBTdXBwb3J0cyBWTEFOcyAodHJ1bmsgYW5kXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy04NS1cdCAgYWNjZXNzIG1vZGVzKS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz04Nz1jb25maWcgTUxYNV9DTFNfQUNUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctOTEtXHRoZWxwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzo5MjpcdCAgbWx4NSBDb25uZWN0WCBvZmZsb2FkcyBzdXBwb3J0IGZvciBUQyBjbGFzc2lmaWVyIGFjdGlvbiAoTkVUX0NMU19BQ1QpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctOTMtXHQgIHdvcmtzIGluIGJvdGggbmF0aXZlIE5JQyBtb2RlIGFuZCBTd2l0Y2hkZXYgU1JJT1YgbW9kZS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz0yMTA9Y29uZmlnIE1MWDVfRU5fUFNQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMjE1LVx0aGVscFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MjE2Olx0ICBtbHg1IGRldmljZSBvZmZsb2FkIHN1cHBvcnQgZm9yIEdvb2dsZSBQU1AgU2VjdXJpdHkgUHJvdG9jb2wgb2ZmbG9hZC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTIxNy1cdCAgQWRkcyBzdXBwb3J0IGZvciBQU1AgZW5jcnlwdGlvbiBvZmZsb2FkIGFuZCBmb3IgU1BJIGFuZCBrZXkgZ2VuZXJhdGlvblxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZT03PXN1YmRpci1jY2ZsYWdzLXkgJiM0Mzs9IC1JJChzcmMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19NTFg1X0NPUkUpICYjNDM7PSBtbHg1X2NvcmUub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTExLSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxMjojIG1seDUgY29yZSBiYXNpY1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEzLSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxNDptbHg1X2NvcmUteSA6PVx0bWFpbi5vIGNtZC5vIGRlYnVnZnMubyBmdy5vIGVxLm8gdWFyLm8gcGFnZWFsbG9jLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xNS1cdFx0aGVhbHRoLm8gbWNnLm8gY3EubyBhbGxvYy5vIHBvcnQubyBtci5vIHBkLm8gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMjUtI1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjI2Om1seDVfY29yZS0kKENPTkZJR19NTFg1X0NPUkVfRU4pICYjNDM7PSBlbi9ycXQubyBlbi90aXIubyBlbi9yc3MubyBlbi9yeF9yZXMubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTI3LVx0XHRlbi9jaGFubmVscy5vIGVuX21haW4ubyBlbl9jb21tb24ubyBlbl9mcy5vIGVuX2V0aHRvb2wubyBcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0zNy0jXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6Mzg6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRU5fQVJGUykgICAgICYjNDM7PSBlbl9hcmZzLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTozOTptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9FTl9SWE5GQykgICAgJiM0Mzs9IGVuX2ZzX2V0aHRvb2wub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjQwOm1seDVfY29yZS0kKENPTkZJR19NTFg1X0NPUkVfRU5fRENCKSAmIzQzOz0gZW5fZGNibmwubyBlbi9wb3J0X2J1ZmZlci5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6NDE6bWx4NV9jb3JlLSQoQ09ORklHX1BDSV9IWVBFUlZfSU5URVJGQUNFKSAmIzQzOz0gZW4vaHZfdmhjYV9zdGF0cy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6NDI6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRVNXSVRDSCkgICAgICYjNDM7PSBsYWcvbXAubyBsYWcvcG9ydF9zZWwubyBsaWIvZ2VuZXZlLm8gbGliL3BvcnRfdHVuLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS00My1cdFx0XHRcdFx0ZW5fcmVwLm8gZW4vcmVwL2JvbmQubyBlbi9tb2RfaGRyLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS00NC1cdFx0XHRcdFx0ZW4vbWFwcGluZy5vIGxhZy9tcGVzdy5vIGxhZy9zaGFyZWRfZmRiLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo0NTptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DTFNfQUNUKSAgICAgJiM0Mzs9IGVuX3RjLm8gZW4vcmVwL3RjLm8gZW4vcmVwL25laWdoLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS00Ni1cdFx0XHRcdFx0bGliL2ZzX2NoYWlucy5vIGVuL3RjX3R1bi5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjUzOm1seDVfY29yZS0kKENPTkZJR19NTFg1X0NMU19BQ1QpICAgICAmIzQzOz0gZW4vdGMvYWN0L2FjdC5vIGVuL3RjL2FjdC9kcm9wLm8gZW4vdGMvYWN0L3RyYXAubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTU0LVx0XHRcdFx0XHRlbi90Yy9hY3QvYWNjZXB0Lm8gZW4vdGMvYWN0L21hcmsubyBlbi90Yy9hY3QvZ290by5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTYxPWlmbmVxICgkKENPTkZJR19NTFg1X1RDX0NUKSwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6NjI6XHRtbHg1X2NvcmUteVx0XHRcdCAgICAgJiM0Mzs9IGVuL3RjX2N0Lm8gZW4vdGMvY3RfZnNfZG1mcy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6NjM6XHRtbHg1X2NvcmUtJChDT05GSUdfTUxYNV9TV19TVEVFUklORykgJiM0Mzs9IGVuL3RjL2N0X2ZzX3NtZnMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjY0Olx0bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfSFdfU1RFRVJJTkcpICYjNDM7PSBlbi90Yy9jdF9mc19obWZzLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS02NS1lbmRpZlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjY3Om1seDVfY29yZS0kKENPTkZJR19NTFg1X1RDX1NBTVBMRSkgICAmIzQzOz0gZW4vdGMvc2FtcGxlLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS02OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtNzEtI1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjcyOm1seDVfY29yZS0kKENPTkZJR19NTFg1X0VTV0lUQ0gpICAgJiM0Mzs9IGVzd2l0Y2gubyBlc3dpdGNoX29mZmxvYWRzLm8gZXN3aXRjaF9vZmZsb2Fkc190ZXJtdGJsLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS03My1cdFx0XHRcdCAgICAgIGVjcGYubyByZG1hLm8gZXN3L2xlZ2FjeS5vIGVzdy9hZGpfdnBvcnQubyBcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS03NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo3NjptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9FU1dJVENIKSAgICYjNDM7PSBlc3cvYWNsL2hlbHBlci5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtNzctXHRcdFx0XHQgICAgICBlc3cvYWNsL2VncmVzc19sZ2N5Lm8gZXN3L2FjbC9lZ3Jlc3Nfb2ZsZC5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTgwPWlmbmVxICgkKENPTkZJR19NTFg1X0VOX0lQU0VDKSwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6ODE6XHRtbHg1X2NvcmUtJChDT05GSUdfTUxYNV9FU1dJVENIKSAgICYjNDM7PSBlc3cvaXBzZWNfZnMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTgyLWVuZGlmXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6ODQ6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQlJJREdFKSAgICAmIzQzOz0gZXN3L2JyaWRnZS5vIGVzdy9icmlkZ2VfbWNhc3QubyBlc3cvYnJpZGdlX2RlYnVnZnMubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTg1LVx0XHRcdFx0ICAgICAgZW4vcmVwL2JyaWRnZS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtODYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6ODc6bWx4NV9jb3JlLSQoQ09ORklHX0hXTU9OKSAgICAgICAgICAmIzQzOz0gaHdtb24ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjg4Om1seDVfY29yZS0kKENPTkZJR19NTFg1X01QRlMpICAgICAgJiM0Mzs9IGxpYi9tcGZzLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS04OS1pZm5lcSAoJChDT05GSUdfVlhMQU4pLClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5MDpcdG1seDVfY29yZS15XHRcdCAgICYjNDM7PSBsaWIvdnhsYW4ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTkxLWVuZGlmXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6OTI6bWx4NV9jb3JlLSQoQ09ORklHX1BUUF8xNTg4X0NMT0NLKSAmIzQzOz0gbGliL2Nsb2NrLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5MzptbHg1X2NvcmUtJChDT05GSUdfUENJX0hZUEVSVl9JTlRFUkZBQ0UpICYjNDM7PSBsaWIvaHYubyBsaWIvaHZfdmhjYS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtOTQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTk3LSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5ODptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0lQT0lCKSAmIzQzOz0gaXBvaWIvaXBvaWIubyBpcG9pYi9ldGh0b29sLm8gaXBvaWIvaXBvaWJfdmxhbi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtOTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEwMi0jXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MTAzOm1seDVfY29yZS0kKENPTkZJR19NTFg1X0ZQR0EpICYjNDM7PSBmcGdhL2NtZC5vIGZwZ2EvY29yZS5vIGZwZ2EvY29ubi5vIGZwZ2Evc2RrLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MTA1Om1seDVfY29yZS0kKENPTkZJR19NTFg1X01BQ1NFQykgJiM0Mzs9IGVuX2FjY2VsL21hY3NlYy5vIGxpYi9tYWNzZWNfZnMubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEwNi1cdFx0XHRcdCAgICAgIGVuX2FjY2VsL21hY3NlY19zdGF0cy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjEwODptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9FTl9JUFNFQykgJiM0Mzs9IGVuX2FjY2VsL2lwc2VjLm8gZW5fYWNjZWwvaXBzZWNfcnh0eC5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTA5LVx0XHRcdFx0ICAgICBlbl9hY2NlbC9pcHNlY19zdGF0cy5vIGVuX2FjY2VsL2lwc2VjX2ZzLm8gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjExMjptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9FTl9UTFMpICYjNDM7PSBlbl9hY2NlbC9rdGxzX3N0YXRzLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMTMtXHRcdFx0XHQgICBlbl9hY2NlbC9mc190Y3AubyBlbl9hY2NlbC9rdGxzLm8gZW5fYWNjZWwva3Rsc190eHJ4Lm8gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjExNjptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9FTl9QU1ApICYjNDM7PSBlbl9hY2NlbC9wc3AubyBlbl9hY2NlbC9wc3Bfcnh0eC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTE3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMjAtI1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjEyMTptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9TV19TVEVFUklORykgJiM0Mzs9IHN0ZWVyaW5nL3N3cy9kcl9kb21haW4ubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEyMi1cdFx0XHRcdFx0c3RlZXJpbmcvc3dzL2RyX3RhYmxlLm8gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTQ1LSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxNDY6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfSFdfU1RFRVJJTkcpICYjNDM7PSBzdGVlcmluZy9od3MvY21kLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xNDctXHRcdFx0XHRcdHN0ZWVyaW5nL2h3cy9jb250ZXh0Lm8gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTY3LSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxNjg6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfU0YpICYjNDM7PSBzZi92aGNhX2V2ZW50Lm8gc2YvZGV2L2Rldi5vIHNmL2Rldi9kcml2ZXIubyBpcnFfYWZmaW5pdHkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTE2OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTcyLSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxNzM6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfU0ZfTUFOQUdFUikgJiM0Mzs9IHNmL2NtZC5vIHNmL2h3X3RhYmxlLm8gc2YvZGV2bGluay5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTc0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xNzctI1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjE3ODptbHg1X2NvcmUtJChDT05GSUdfUENJRV9UUEgpICYjNDM7PSBsaWIvc3Qub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTE3OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxODA6b2JqLSQoQ09ORklHX01MWDVfRFBMTCkgJiM0Mzs9IG1seDVfZHBsbC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MTgxOm1seDVfZHBsbC15IDo9XHRkcGxsLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00Mi0jaW5jbHVkZSBcdTAwM2NsaW51eC9zZXFfZmlsZS5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0MzojaW5jbHVkZSBcdTAwM2NsaW51eC9tbHg1L2RyaXZlci5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ1OiNpbmNsdWRlIFwmIzM0O21seDVfY29yZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUxOnN0cnVjdCBtbHg1X2RiX3BnZGlyIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUyLVx0c3RydWN0IGxpc3RfaGVhZFx0bGlzdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjU4OnN0cnVjdCBtbHg1X2RtYV9wb29sIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTU5LVx0LyogUHJvdGVjdHMgcGFnZV9saXN0IGFuZCBwZXItcGFnZSBhbGxvY2F0aW9uIGJpdG1hcHMuICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNjEtXHRzdHJ1Y3QgbGlzdF9oZWFkIHBhZ2VfbGlzdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjYyOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTYzLVx0aW50IG5vZGU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo2NzpzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjY4Olx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy02OS1cdHN0cnVjdCBsaXN0X2hlYWQgcG9vbF9saW5rO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTc0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NzU6c3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo3NjpcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sc1tNTFg1X0ZSQUdfQlVGX1BPT0xTX05VTV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy03Ny19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo3OTpzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9zdGF0cyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy04MC1cdGludCBub2RlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6OTA6c3RhdGljIHZvaWQgKm1seDVfZG1hX3phbGxvY19jb2hlcmVudF9ub2RlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy05MS1cdFx0XHRcdFx0ICAgc2l6ZV90IHNpemUsIGRtYV9hZGRyX3QgKmRtYV9oYW5kbGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtOTMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6OTQ6XHRzdHJ1Y3QgZGV2aWNlICpkZXZpY2UgPSBtbHg1X2NvcmVfZG1hX2RldihkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6OTU6XHRzdHJ1Y3QgbWx4NV9wcml2ICpwcml2ID0gXHUwMDI2ZGV2LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy05Ni1cdGludCBvcmlnaW5hbF9ub2RlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTEwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjEwOTpzdGF0aWMgdm9pZCBtbHg1X2RtYV9wb29sX2Rlc3Ryb3koc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMTAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTExNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjExNTpzdGF0aWMgc3RydWN0IG1seDVfZG1hX3Bvb2wgKm1seDVfZG1hX3Bvb2xfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMTYtXHRcdFx0XHRcdFx0ICBpbnQgbm9kZSwgdTggYmxvY2tfc2hpZnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMTcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTE4Olx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTMyOnN0YXRpYyBzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjEzMzptbHg1X2RtYV9wb29sX3BhZ2VfYWxsb2Moc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMzQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTM1LVx0aW50IGJsb2Nrc19wZXJfcGFnZSA9IEJJVChQQUdFX1NISUZUIC0gcG9vbC1cdTAwM2VibG9ja19zaGlmdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxMzY6XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTM3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE0Ny1cdGJpdG1hcF9maWxsKHBhZ2UtXHUwMDNlYml0bWFwLCBibG9ja3NfcGVyX3BhZ2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTQ4Olx0cGFnZS1cdTAwM2VidWYgPSBtbHg1X2RtYV96YWxsb2NfY29oZXJlbnRfbm9kZShwb29sLVx1MDAzZWRldiwgUEFHRV9TSVpFLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTQ5LVx0XHRcdFx0XHRcdCAgXHUwMDI2cGFnZS1cdTAwM2VkbWEsIHBvb2wtXHUwMDNlbm9kZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTYzOnN0YXRpYyB2b2lkIG1seDVfZG1hX3Bvb2xfcGFnZV9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxNjQ6XHRcdFx0XHQgICAgc3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE2NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxNjY6XHRkbWFfZnJlZV9jb2hlcmVudChtbHg1X2NvcmVfZG1hX2RldihkZXYpLCBQQUdFX1NJWkUsIHBhZ2UtXHUwMDNlYnVmLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTY3LVx0XHRcdCAgcGFnZS1cdTAwM2VkbWEpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE3MjpzdGF0aWMgaW50IG1seDVfZG1hX3Bvb2xfYWxsb2NfZnJvbV9wYWdlKHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTczOlx0XHRcdFx0XHQgc3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE3NC1cdFx0XHRcdFx0IHVuc2lnbmVkIGxvbmcgKmlkeF9vdXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTkwOnN0YXRpYyBzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE5MTptbHg1X2RtYV9wb29sX2FsbG9jKHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sLCB1bnNpZ25lZCBsb25nICppZHhfb3V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTkyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE5MzpcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xOTQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTk3LVx0cGFnZSA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcdTAwMjZwb29sLVx1MDAzZXBhZ2VfbGlzdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE5ODpcdFx0XHRcdFx0c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSwgcG9vbF9saW5rKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE5OTpcdGlmIChwYWdlIFx1MDAyNlx1MDAyNiAhbWx4NV9kbWFfcG9vbF9hbGxvY19mcm9tX3BhZ2UocG9vbCwgcGFnZSwgaWR4X291dCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMDAtXHRcdGdvdG8gdW5sb2NrOyAvKiBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGZyb20gZXhpc3RpbmcgcGFnZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjAyOlx0cGFnZSA9IG1seDVfZG1hX3Bvb2xfcGFnZV9hbGxvYyhwb29sKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIwMy1cdGlmICghcGFnZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMDYtXHRsaXN0X2FkZChcdTAwMjZwYWdlLVx1MDAzZXBvb2xfbGluaywgXHUwMDI2cG9vbC1cdTAwM2VwYWdlX2xpc3QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjA3Olx0bWx4NV9kbWFfcG9vbF9hbGxvY19mcm9tX3BhZ2UocG9vbCwgcGFnZSwgaWR4X291dCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMDgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjEzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjE0OnN0YXRpYyB2b2lkIG1seDVfZG1hX3Bvb2xfZnJlZShzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjIxNTpcdFx0XHQgICAgICAgc3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIxNi1cdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBpZHgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjI2LVx0XHRsaXN0X2RlbChcdTAwMjZwYWdlLVx1MDAzZXBvb2xfbGluayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyMjc6XHRcdG1seDVfZG1hX3Bvb2xfcGFnZV9mcmVlKHBvb2wtXHUwMDNlZGV2LCBwYWdlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIyOC1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjM3OnN0YXRpYyB2b2lkIG1seDVfZG1hX3Bvb2xfZGVidWdmc19nZXRfc3RhdHMoc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyMzg6XHRcdFx0XHRcdCAgICBzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9zdGF0cyAqc3RhdHMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMzkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjQwLVx0aW50IGJsb2Nrc19wZXJfcGFnZSA9IEJJVChQQUdFX1NISUZUIC0gcG9vbC1cdTAwM2VibG9ja19zaGlmdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyNDE6XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjQyLVx0c2l6ZV90IGZyZWVfYmxvY2tzID0gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyNTg6c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbF9kZWJ1Z2ZzX3N0YXRzX3ByaW50KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI1OTpcdFx0XHRcdFx0ICAgICAgc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yNjAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjYxOlx0c3RydWN0IG1seDVfZG1hX3Bvb2xfc3RhdHMgc3RhdHMgPSB7fTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI2MzpcdG1seDVfZG1hX3Bvb2xfZGVidWdmc19nZXRfc3RhdHMocG9vbCwgXHUwMDI2c3RhdHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjY0LVx0c2VxX3ByaW50ZihmaWxlLCBcJiMzNDslNGQgICAgICAgJTV6dSAgICAgICU3enUgICAgICAgICAgICU3enVcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjY5OnN0YXRpYyB2b2lkIG1seDVfZG1hX3Bvb2xzX2RlYnVnZnNfcHJpbnRfaGVhZGVyKHN0cnVjdCBzZXFfZmlsZSAqZmlsZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI3MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9Mjc0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyNzU6bWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzX2Rlc3Ryb3koc3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scyAqbm9kZV9wb29scylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI3Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjc4LVx0XHRpZiAobm9kZV9wb29scy1cdTAwM2Vwb29sc1tpXSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI3OTpcdFx0XHRtbHg1X2RtYV9wb29sX2Rlc3Ryb3kobm9kZV9wb29scy1cdTAwM2Vwb29sc1tpXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yODAtXHRrZnJlZShub2RlX3Bvb2xzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyODM6c3RhdGljIHN0cnVjdCBtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHMgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6Mjg0Om1seDVfZnJhZ19idWZfbm9kZV9wb29sc19jcmVhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IG5vZGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yODUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6Mjg2Olx0c3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scyAqbm9kZV9wb29scztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI4Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yOTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyOTU6XHRcdG5vZGVfcG9vbHMtXHUwMDNlcG9vbHNbaV0gPSBtbHg1X2RtYV9wb29sX2NyZWF0ZShkZXYsIG5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yOTYtXHRcdFx0XHRcdFx0XHQgICAgYmxvY2tfc2hpZnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjk3LVx0XHRpZiAoIW5vZGVfcG9vbHMtXHUwMDNlcG9vbHNbaV0pIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI5ODpcdFx0XHRtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHNfZGVzdHJveShub2RlX3Bvb2xzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI5OS1cdFx0XHRyZXR1cm4gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0zMDY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzA3Om1seDVfZnJhZ19idWZfZG1hX3Bvb2xzX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMDgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzA5Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGZpbGUtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMxMC1cdGludCBub2RlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzEyOlx0bWx4NV9kbWFfcG9vbHNfZGVidWdmc19wcmludF9oZWFkZXIoZmlsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzE3LVx0Zm9yX2VhY2hfbm9kZV9zdGF0ZShub2RlLCBOX1BPU1NJQkxFKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozMTg6XHRcdHN0cnVjdCBtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHMgKm5vZGVfcG9vbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzI0LVx0XHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgTUxYNV9GUkFHX0JVRl9QT09MU19OVU07IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozMjU6XHRcdFx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wgPSBub2RlX3Bvb2xzLVx1MDAzZXBvb2xzW2ldO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzI2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjMzMDpcdFx0XHRtbHg1X2RtYV9wb29sX2RlYnVnZnNfc3RhdHNfcHJpbnQoZmlsZSwgcG9vbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMzEtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMzUtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzM2OkRFRklORV9TSE9XX0FUVFJJQlVURShtbHg1X2ZyYWdfYnVmX2RtYV9wb29sc19kZWJ1Z2ZzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjMzODp2b2lkIG1seDVfZnJhZ19idWZfcG9vbHNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzM5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM0MDpcdHN0cnVjdCBtbHg1X3ByaXYgKnByaXYgPSBcdTAwMjZkZXYtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM0MS1cdGludCBub2RlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM0Ni1cdGZvcl9lYWNoX25vZGVfc3RhdGUobm9kZSwgTl9QT1NTSUJMRSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzQ3Olx0XHRzdHJ1Y3QgbWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzICpub2RlX3Bvb2xzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzQ4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM1MS1cdFx0XHRjb250aW51ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM1MjpcdFx0bWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzX2Rlc3Ryb3kobm9kZV9wb29scyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zNTMtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzU5OmludCBtbHg1X2ZyYWdfYnVmX3Bvb2xzX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM2MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozNjE6XHRzdHJ1Y3QgbWx4NV9wcml2ICpwcml2ID0gXHUwMDI2ZGV2LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zNjItXHRpbnQgbm9kZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zNjktXHRmb3JfZWFjaF9ub2RlX3N0YXRlKG5vZGUsIE5fUE9TU0lCTEUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM3MDpcdFx0c3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scyAqbm9kZV9wb29scztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM3MjpcdFx0bm9kZV9wb29scyA9IG1seDVfZnJhZ19idWZfbm9kZV9wb29sc19jcmVhdGUoZGV2LCBub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM3My1cdFx0aWYgKCFub2RlX3Bvb2xzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozNzQ6XHRcdFx0bWx4NV9mcmFnX2J1Zl9wb29sc19jbGVhbnVwKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zNzUtXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzgyLVx0XHRcdFx0ICAgIHByaXYtXHUwMDNlZGJnLmRiZ19yb290LCBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozODM6XHRcdFx0XHQgICAgXHUwMDI2bWx4NV9mcmFnX2J1Zl9kbWFfcG9vbHNfZGVidWdmc19mb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozODg6aW50IG1seDVfZnJhZ19idWZfYWxsb2Nfbm9kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgc2l6ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM4OTpcdFx0XHQgICAgIHN0cnVjdCBtbHg1X2ZyYWdfYnVmICpidWYsIGludCBub2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzkwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM5MTpcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzkyLVx0aW50IHBvb2xfaWR4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQwOC1cdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBidWYtXHUwMDNlbnBhZ2VzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDA5Olx0XHRzdHJ1Y3QgbWx4NV9idWZfbGlzdCAqZnJhZyA9IFx1MDAyNmJ1Zi1cdTAwM2VmcmFnc1tpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQxMDpcdFx0c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQxMS1cdFx0dW5zaWduZWQgbG9uZyBpZHg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0MTM6XHRcdHBhZ2UgPSBtbHg1X2RtYV9wb29sX2FsbG9jKHBvb2wsIFx1MDAyNmlkeCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MTQtXHRcdGlmICghcGFnZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDE1Olx0XHRcdG1seDVfZnJhZ19idWZfZnJlZShkZXYsIGJ1Zik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MTYtXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDI0LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQyNTpFWFBPUlRfU1lNQk9MX0dQTChtbHg1X2ZyYWdfYnVmX2FsbG9jX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDI3OnZvaWQgbWx4NV9mcmFnX2J1Zl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2ZyYWdfYnVmICpidWYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00Mjgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDI5LVx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIGJ1Zi1cdTAwM2VucGFnZXM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0MzA6XHRcdHN0cnVjdCBtbHg1X2J1Zl9saXN0ICpmcmFnID0gXHUwMDI2YnVmLVx1MDAzZWZyYWdzW2ldO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDMxOlx0XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDMyOlx0XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQzMy1cdFx0dW5zaWduZWQgbG9uZyBpZHg7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDQwLVx0XHRpZHggPSAoZnJhZy1cdTAwM2VtYXAgLSBwYWdlLVx1MDAzZWRtYSkgXHUwMDNlXHUwMDNlIHBvb2wtXHUwMDNlYmxvY2tfc2hpZnQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NDE6XHRcdG1seDVfZG1hX3Bvb2xfZnJlZShwb29sLCBwYWdlLCBpZHgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDQyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ0NC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NDU6RVhQT1JUX1NZTUJPTF9HUEwobWx4NV9mcmFnX2J1Zl9mcmVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ0NzpzdGF0aWMgc3RydWN0IG1seDVfZGJfcGdkaXIgKm1seDVfYWxsb2NfZGJfcGdkaXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ0OC1cdFx0XHRcdFx0XHQgaW50IG5vZGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDUwLVx0dTMyIGRiX3Blcl9wYWdlID0gUEFHRV9TSVpFIC8gY2FjaGVfbGluZV9zaXplKCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NTE6XHRzdHJ1Y3QgbWx4NV9kYl9wZ2RpciAqcGdkaXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00NTItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDY1Olx0cGdkaXItXHUwMDNlZGJfcGFnZSA9IG1seDVfZG1hX3phbGxvY19jb2hlcmVudF9ub2RlKGRldiwgUEFHRV9TSVpFLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDY2LVx0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZwZ2Rpci1cdTAwM2VkYl9kbWEsIG5vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ3NjpzdGF0aWMgaW50IG1seDVfYWxsb2NfZGJfZnJvbV9wZ2RpcihzdHJ1Y3QgbWx4NV9kYl9wZ2RpciAqcGdkaXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0Nzc6XHRcdFx0XHQgICAgc3RydWN0IG1seDVfZGIgKmRiKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDc4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MDE6aW50IG1seDVfZGJfYWxsb2Nfbm9kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9kYiAqZGIsIGludCBub2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTAyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUwMzpcdHN0cnVjdCBtbHg1X2RiX3BnZGlyICpwZ2RpcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUwNC1cdGludCByZXQgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUwOC1cdGxpc3RfZm9yX2VhY2hfZW50cnkocGdkaXIsIFx1MDAyNmRldi1cdTAwM2Vwcml2LnBnZGlyX2xpc3QsIGxpc3QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MDk6XHRcdGlmICghbWx4NV9hbGxvY19kYl9mcm9tX3BnZGlyKHBnZGlyLCBkYikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MTAtXHRcdFx0Z290byBvdXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MTI6XHRwZ2RpciA9IG1seDVfYWxsb2NfZGJfcGdkaXIoZGV2LCBub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUxMy1cdGlmICghcGdkaXIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MjAtXHQvKiBUaGlzIHNob3VsZCBuZXZlciBmYWlsIC0tIHdlIGp1c3QgYWxsb2NhdGVkIGFuIGVtcHR5IHBhZ2U6ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MjE6XHRXQVJOX09OKG1seDVfYWxsb2NfZGJfZnJvbV9wZ2RpcihwZ2RpciwgZGIpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUyMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MjctfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTI4OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfZGJfYWxsb2Nfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MzA6dm9pZCBtbHg1X2RiX2ZyZWUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZGIgKmRiKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTMxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MzgtXHRpZiAoYml0bWFwX2Z1bGwoZGItXHUwMDNldS5wZ2Rpci1cdTAwM2ViaXRtYXAsIGRiX3Blcl9wYWdlKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTM5Olx0XHRkbWFfZnJlZV9jb2hlcmVudChtbHg1X2NvcmVfZG1hX2RldihkZXYpLCBQQUdFX1NJWkUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01NDAtXHRcdFx0XHQgIGRiLVx1MDAzZXUucGdkaXItXHUwMDNlZGJfcGFnZSwgZGItXHUwMDNldS5wZ2Rpci1cdTAwM2VkYl9kbWEpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTU0Ny19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1NDg6RVhQT1JUX1NZTUJPTF9HUEwobWx4NV9kYl9mcmVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTU0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjU1MDp2b2lkIG1seDVfZmlsbF9wYWdlX2ZyYWdfYXJyYXlfcGVybShzdHJ1Y3QgbWx4NV9mcmFnX2J1ZiAqYnVmLCBfX2JlNjQgKnBhcywgdTggcGVybSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTU1MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTU3LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjU1ODpFWFBPUlRfU1lNQk9MX0dQTChtbHg1X2ZpbGxfcGFnZV9mcmFnX2FycmF5X3Blcm0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTYwOnZvaWQgbWx4NV9maWxsX3BhZ2VfZnJhZ19hcnJheShzdHJ1Y3QgbWx4NV9mcmFnX2J1ZiAqYnVmLCBfX2JlNjQgKnBhcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTU2MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1NjI6XHRtbHg1X2ZpbGxfcGFnZV9mcmFnX2FycmF5X3Blcm0oYnVmLCBwYXMsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTYzLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjU2NDpFWFBPUlRfU1lNQk9MX0dQTChtbHg1X2ZpbGxfcGFnZV9mcmFnX2FycmF5KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMzktI2luY2x1ZGUgXHUwMDNjbGludXgvcmFuZG9tLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo0MDojaW5jbHVkZSBcdTAwM2NsaW51eC9tbHg1L2RyaXZlci5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6NDE6I2luY2x1ZGUgXHUwMDNjbGludXgvbWx4NS9lcS5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtNDItI2luY2x1ZGUgXHUwMDNjbGludXgvZGVidWdmcy5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtNDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6NDQ6I2luY2x1ZGUgXCYjMzQ7bWx4NV9jb3JlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy00NS0jaW5jbHVkZSBcJiMzNDtsaWIvZXEuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy00OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo1MDpzdHJ1Y3QgbWx4NV9pZmNfbWJveF9vdXRfYml0cyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtNTEtXHR1OCAgICAgICAgIHN0YXR1c1sweDhdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy01OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo1OTpzdHJ1Y3QgbWx4NV9pZmNfbWJveF9pbl9iaXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy02MC1cdHU4ICAgICAgICAgb3Bjb2RlWzB4MTBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz05Nz1zdGF0aWMgdTE2IGluX3RvX3VpZCh2b2lkICppbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTA0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjEwNTpzdGF0aWMgYm9vbCBtbHg1X2NtZF9pc190aHJvdHRsZV9vcGNvZGUodTE2IG9wKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTEwNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTExNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxMTg6c3RhdGljIHN0cnVjdCBtbHg1X2NtZF93b3JrX2VudCAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTE5OmNtZF9hbGxvY19lbnQoc3RydWN0IG1seDVfY21kICpjbWQsIHN0cnVjdCBtbHg1X2NtZF9tc2cgKmluLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjEyMDpcdCAgICAgIHN0cnVjdCBtbHg1X2NtZF9tc2cgKm91dCwgdm9pZCAqdW91dCwgaW50IHVvdXRfc2l6ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxMjE6XHQgICAgICBtbHg1X2NtZF9jYmtfdCBjYmssIHZvaWQgKmNvbnRleHQsIGludCBwYWdlX3F1ZXVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTEyMi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTIzLVx0Z2ZwX3QgYWxsb2NfZmxhZ3MgPSBjYmsgPyBHRlBfQVRPTUlDIDogR0ZQX0tFUk5FTDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxMjQ6XHRzdHJ1Y3QgbWx4NV9jbWRfd29ya19lbnQgKmVudDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xMjUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNDU6c3RhdGljIHZvaWQgY21kX2ZyZWVfZW50KHN0cnVjdCBtbHg1X2NtZF93b3JrX2VudCAqZW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE0Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNTA6c3RhdGljIHU4IGFsbG9jX3Rva2VuKHN0cnVjdCBtbHg1X2NtZCAqY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE1MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE2My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNjQ6c3RhdGljIGludCBjbWRfYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY21kICpjbWQsIHN0cnVjdCBtbHg1X2NtZF93b3JrX2VudCAqZW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE2NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE4MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxODE6c3RhdGljIHZvaWQgY21kX2ZyZWVfaW5kZXgoc3RydWN0IG1seDVfY21kICpjbWQsIGludCBpZHgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTgyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE4ODpzdGF0aWMgdm9pZCBjbWRfZW50X2dldChzdHJ1Y3QgbWx4NV9jbWRfd29ya19lbnQgKmVudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xODkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTkzOnN0YXRpYyB2b2lkIGNtZF9lbnRfcHV0KHN0cnVjdCBtbHg1X2NtZF93b3JrX2VudCAqZW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE5NC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTk1Olx0c3RydWN0IG1seDVfY21kICpjbWQgPSBlbnQtXHUwMDNlY21kO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE5Ni1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTM6c3RhdGljIHN0cnVjdCBtbHg1X2NtZF9sYXlvdXQgKmdldF9pbnN0KHN0cnVjdCBtbHg1X2NtZCAqY21kLCBpbnQgaWR4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTg6c3RhdGljIGludCBtbHg1X2NhbGNfY21kX2Jsb2NrcyhzdHJ1Y3QgbWx4NV9jbWRfbXNnICptc2cpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MjI2PXN0YXRpYyB1OCB4b3I4X2J1Zih2b2lkICpidWYsIHNpemVfdCBvZmZzZXQsIGludCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIzOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMzk6c3RhdGljIGludCB2ZXJpZnlfYmxvY2tfc2lnKHN0cnVjdCBtbHg1X2NtZF9wcm90X2Jsb2NrICpibG9jaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjI0MTpcdHNpemVfdCByc3ZkMF9vZmYgPSBvZmZzZXRvZihzdHJ1Y3QgbWx4NV9jbWRfcHJvdF9ibG9jaywgcnN2ZDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI0Mi1cdGludCB4b3JfbGVuID0gc2l6ZW9mKCpibG9jaykgLSBzaXplb2YoYmxvY2stXHUwMDNlZGF0YSkgLSAxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNTItXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwODo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzI5MgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDExOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIG1seDUgRHJpdmVyKioKCk9rYXksIHNvIHRoZSB0ZXh0IGNvbmZpcm1zIHRoaXMgaXMgYSBoYXJkd2FyZSBkcml2ZXIsIG5vdCBzb21ldGhpbmcgc3l6a2FsbGVyJiMzOTtzIGVtdWxhdGluZy4gR29vZCwgdGhhdCBlbGltaW5hdGVzIGEgcG9zc2liaWxpdHkuIE5vdywgbGV0JiMzOTtzIGRpZyBhIGxpdHRsZSBkZWVwZXIuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uY2AgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBzb3J0IG9mIHNvZnR3YXJlIGludGVyZmFjZSBpbnZvbHZlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBpbnRlcmFjdHMgc29sZWx5IHRocm91Z2ggUENJLCBvciBpZiB0aGVyZSYjMzk7cyBzb21lIGludGVybmFsIHNvZnR3YXJlIGFzcGVjdC4gQWgsIHRoZSBgbWx4NV9jb3JlYCBkcml2ZXIgKmRvZXMqIGJpbmQgdG8gUENJIGRldmljZXMsIHdoaWNoIGlzbiYjMzk7dCBlbnRpcmVseSB1bmV4cGVjdGVkLiBCdXQgdGhhdCBicmluZ3MgdXAgYW5vdGhlciBxdWVzdGlvbjogaXMgdGhlcmUgYW55IHZpcnR1YWwgYnVzIG1lY2hhbmlzbSB0aGF0IHRoaXMgZHJpdmVyIHV0aWxpemVzLCBwZXJoYXBzIHRvIGhhbmRsZSByZXNvdXJjZSBhbGxvY2F0aW9uIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jYCB0byBzZWUgaWYgaXQgcHJvdmlkZXMgYW55IGNsdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA4OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTIzNDM9c3RhdGljIGludCBfX2luaXQgbWx4NV9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoyMzYzOlx0ZXJyID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZtbHg1X2NvcmVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjM2NC1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDg6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM4MDEKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBY2Nlc3NpYmlsaXR5IG9mIFRoaXMgQ29kZSBTbmlwcGV0KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kLCB5ZWFoLCBpdCYjMzk7cyBkZWZpbml0ZWx5IGEgUENJIGRyaXZlciwgc3BlY2lmaWNhbGx5IG9uZSByZWxhdGVkIHRvIE1lbGxhbm94IGhhcmR3YXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBJIHJlYWNoIHRoaXMgY29kZSB2aWEgc29tZXRoaW5nIGxpa2UgbmV0bGluaywgb3IgYSBtb3JlIGFic3RyYWN0ZWQgaW50ZXJmYWNlLCB3aXRob3V0IGFjdHVhbGx5IGhhdmluZyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcHJlc2VudD8gQmVjYXVzZSwgaWRlYWxseSwgSSYjMzk7ZCB3YW50IHRvIHRlc3QgaXQgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LgoKVW5mb3J0dW5hdGVseSwgbm8uIFRoZSBgbWx4NWVfcHJpdmAgc3RydWN0dXJlLCB3aGljaCBJIGFzc3VtZSBpcyBjZW50cmFsIHRvIHRoaXMgd2hvbGUgdGhpbmcsIGdldHMgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXplZCBkdXJpbmcgdGhlIFBDSSBkZXZpY2UgcHJvYmUuIFdpdGhvdXQgdGhlIGhhcmR3YXJlLCB0aGUgZHJpdmVyIGRvZXNuJiMzOTt0IGdldCBwcm9iZWQsIG1lYW5pbmcgdGhhdCBgcHJpdmAgc3RydWN0dXJlIHNpbXBseSB3b24mIzM5O3QgZXhpc3QuIEluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQg4oCTIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIFFFTVUg4oCTIEkmIzM5O20gcHJldHR5IGNvbmZpZGVudCB0aGF0IHRoZSBtb2RpZmllZCBjb2RlIHdvdWxkIGJlIHVucmVhY2hhYmxlIHdpdGhvdXQgZG9pbmcgUENJIHBhc3N0aHJvdWdoLiBTbywgYmFzZWQgb24gdGhhdCwgdGhlIGZ1enppbmcgcG90ZW50aWFsIGhlcmUgc2VlbXMgbG93LiBMZXQmIzM5O3MgbWFyayBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3Igbm93LgoKQnV0IHdhaXQgYSBtaW51dGUuLi4gY291bGQgdGhpcyBzb21laG93IGJlIGFjY2Vzc2VkIHRocm91Z2ggc29tZXRoaW5nIGxpa2UgYG5ldGRldnNpbWAsIG9yIHNvbWUgb3RoZXIgc29ydCBvZiBtb2NrIGRldmljZSBkcml2ZXI/IE5vLCBgbmV0ZGV2c2ltYCBpcyBhIGNvbXBsZXRlbHkgc2VwYXJhdGUgZHJpdmVyLCBzbyB0aGF0IHdvdWxkbiYjMzk7dCB3b3JrLiBIbW1tLCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgaWYgdGhlcmUmIzM5O3MgYW55IHNvcnQgb2YgYG1seDVgIG1vY2sgZHJpdmVyIHByZXNlbnQgaW4gdGhlIGtlcm5lbC4gVGhpcyBuZWVkcyBhIGxpdHRsZSBkZWVwZXIgZGl2ZSwgYXMgYSBkZWRpY2F0ZWQgbW9jayBjb3VsZCBiZSB0aGUga2V5IHRvIGNvbnRyb2xsZWQgZnV6emluZy4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA4OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVfY29yZV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0yMjY1PWludCBtbHg1X3JlY292ZXJfZGV2aWNlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMjc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoyMjc2OnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtbHg1X2NvcmVfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMjc3LVx0Lm5hbWUgICAgICAgICAgID0gS0JVSUxEX01PRE5BTUUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0yMzAxPXN0cnVjdCBtbHg1X2NvcmVfZGV2ICptbHg1X3ZmX2dldF9jb3JlX2RldihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjIzMDU6XHRtZGV2ID0gcGNpX2lvdl9nZXRfcGZfZHJ2ZGF0YShwZGV2LCBcdTAwMjZtbHg1X2NvcmVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjMwNi1cdGlmIChJU19FUlIobWRldikpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0yMzQzPXN0YXRpYyBpbnQgX19pbml0IG1seDVfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjM2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MjM2MzpcdGVyciA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2bWx4NV9jb3JlX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzNjQtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MjM3OD1zdGF0aWMgdm9pZCBfX2V4aXQgbWx4NV9jbGVhbnVwKHZvaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzNzkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoyMzgwOlx0cGNpX3VucmVnaXN0ZXJfZHJpdmVyKFx1MDAyNm1seDVfY29yZV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzgxLVx0bWx4NV9zZl9kcml2ZXJfdW5yZWdpc3RlcigpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA4OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0OTI4CgkJCQkJCQlvdXRwdXQ6IDg2CgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXNzZXNzbWVudCBvZiB0aGlzIHNpdHVhdGlvbjoKCioqVW5yZWFjaGFibGUgQ29kZSBpbiB0aGUgTWVsbGFub3ggRHJpdmVyKioKCkFscmlnaHQsIEkmIzM5O3ZlIHRha2VuIGEgbG9vayBhdCB0aGlzIHBhdGNoLCBhbmQgdGhlIGNvbmNsdXNpb24gaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlcmUmIzM5O3Mgbm8gcG9pbnQgaW4gZXZlbiBjb25zaWRlcmluZyB0aGlzIGNvZGUgZm9yIGZ1enppbmcgd2l0aCB0aGUgc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwLiBUaGUgY3J1Y2lhbCB0aGluZyBpcyB0aGF0IHRoaXMgcGF0Y2ggdGFyZ2V0cyB0aGUgTWVsbGFub3ggbWx4NSBldGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgKmhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIqLiBTaW5jZSBzeXprYWxsZXIsIGluIGl0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIGZvciBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZG9lc24mIzM5O3QgYWN0dWFsbHkgKmVtdWxhdGUqIE1lbGxhbm94IGhhcmR3YXJlLCB0aGUgY29kZSBtb2RpZmllZCBieSB0aGlzIHBhdGNoIGlzIHNpbXBseSB1bnJlYWNoYWJsZSBkdXJpbmcgYW55IHN0YW5kYXJkIGZ1enppbmcgcnVucy4gSXQmIzM5O3Mgbm90IGEgcXVlc3Rpb24gb2YgY29tcGxleGl0eSBvciBwb3RlbnRpYWwgZm9yIGJ1Z3M7IGl0JiMzOTtzIGEgbWF0dGVyIG9mIHRoZSBoYXJkd2FyZSBiZWluZyBmdW5kYW1lbnRhbGx5IGFic2VudCBpbiB0aGUgdGFyZ2V0IGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXTigJlzIGp1c3Qgbm90IGdvaW5nIHRvIGJlIHRyaWdnZXJlZCBpbiBhIHdheSB0aGF04oCZcyB1c2VmdWwgZm9yIGZpbmRpbmcgdnVsbmVyYWJpbGl0aWVzIHdpdGggdGhlIHJlc291cmNlcyB3ZSBoYXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwODo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBTaW5jZSBzeXprYWxsZXIgZG9lcyBub3QgZW11bGF0ZSBNZWxsYW5veCBoYXJkd2FyZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUpLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVsbGFub3ggbWx4NSBldGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2Ugc3l6a2FsbGVyIGRvZXMgbm90IGVtdWxhdGUgTWVsbGFub3ggaGFyZHdhcmUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA4OjUzOjAxLjQ3OTU0MzY0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMDI3NjAyNjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVsbGFub3ggbWx4NSBldGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2Ugc3l6a2FsbGVyIGRvZXMgbm90IGVtdWxhdGUgTWVsbGFub3ggaGFyZHdhcmUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDg6NTM6MDEuNDc5NTUxOTIzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDkwMjIzNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5ZjY1Yzk1NTQ2OWNiZDU3MzQzNTVlZTJlNmExNmRiZmM1NzkyMTA5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVuIDIyIDA4OjUyOjU5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmhcXG5pbmRleCAyMjcwZTJlNTUwZGQ5ZS4uZDUwNzI4OTA5NmMyMDYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaFxcbkBAIC05ODcsNiArOTg3LDE4IEBAIHN0cnVjdCBtbHg1ZV9wcml2IHtcXG4gXFx0c3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgKmZlY19yYW5nZXM7XFxuIH07XFxuIFxcbitzdGF0aWMgaW5saW5lIHUxNiBtbHg1ZV9zdGF0c19uY2hfcmVhZChjb25zdCBzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcXG4re1xcbitcXHQvKiBQYWlycyB3aXRoIHNtcF9zdG9yZV9yZWxlYXNlIGluIG1seDVlX3N0YXRzX25jaF93cml0ZSgpLiAqL1xcbitcXHRyZXR1cm4gc21wX2xvYWRfYWNxdWlyZShcXHUwMDI2cHJpdi1cXHUwMDNlc3RhdHNfbmNoKTtcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSB2b2lkIG1seDVlX3N0YXRzX25jaF93cml0ZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgdTE2IG4pXFxuK3tcXG4rXFx0LyogUGFpcnMgd2l0aCBzbXBfbG9hZF9hY3F1aXJlIGluIG1seDVlX3N0YXRzX25jaF9yZWFkKCkuICovXFxuK1xcdHNtcF9zdG9yZV9yZWxlYXNlKFxcdTAwMjZwcml2LVxcdTAwM2VzdGF0c19uY2gsIG4pO1xcbit9XFxuK1xcbiBzdHJ1Y3QgbWx4NWVfZGV2IHtcXG4gXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcXG4gXFx0c3RydWN0IGRldmxpbmtfcG9ydCBkbF9wb3J0O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vaHZfdmhjYV9zdGF0cy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2h2X3ZoY2Ffc3RhdHMuY1xcbmluZGV4IDE5NTg2M2IyYzAxM2UyLi45NzQ3ZDc3MzZkMzdhZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vaHZfdmhjYV9zdGF0cy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2h2X3ZoY2Ffc3RhdHMuY1xcbkBAIC0zMyw5ICszMywxMCBAQCBtbHg1ZV9odl92aGNhX2ZpbGxfcmluZ19zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgaW50IGNoLFxcbiBzdGF0aWMgdm9pZCBtbHg1ZV9odl92aGNhX2ZpbGxfc3RhdHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHZvaWQgKmRhdGEsXFxuIFxcdFxcdFxcdFxcdCAgICAgaW50IGJ1Zl9sZW4pXFxuIHtcXG4rXFx0dTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xcbiBcXHRpbnQgY2gsIGkgPSAwO1xcbiBcXG4tXFx0Zm9yIChjaCA9IDA7IGNoIFxcdTAwM2MgcHJpdi1cXHUwMDNlc3RhdHNfbmNoOyBjaCsrKSB7XFxuK1xcdGZvciAoY2ggPSAwOyBjaCBcXHUwMDNjIG5jaDsgY2grKykge1xcbiBcXHRcXHR2b2lkICpidWYgPSBkYXRhICsgaTtcXG4gXFxuIFxcdFxcdGlmIChXQVJOX09OX09OQ0UoYnVmICtcXG5AQCAtNDksOSArNTAsMTYgQEAgc3RhdGljIHZvaWQgbWx4NWVfaHZfdmhjYV9maWxsX3N0YXRzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCB2b2lkICpkYXRhLFxcbiB9XFxuIFxcbiBzdGF0aWMgaW50IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX3NpemUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXFxuK3tcXG4rXFx0dTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xcbitcXG4rXFx0cmV0dXJuIHNpemVvZihzdHJ1Y3QgbWx4NWVfaHZfdmhjYV9wZXJfcmluZ19zdGF0cykgKiBuY2g7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgbWx4NWVfaHZfdmhjYV9zdGF0c19idWZfbWF4X3NpemUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXFxuIHtcXG4gXFx0cmV0dXJuIChzaXplb2Yoc3RydWN0IG1seDVlX2h2X3ZoY2FfcGVyX3Jpbmdfc3RhdHMpICpcXG4tXFx0XFx0cHJpdi1cXHUwMDNlc3RhdHNfbmNoKTtcXG4rXFx0XFx0bWF4KHByaXYtXFx1MDAzZW1heF9uY2gsIHByaXYtXFx1MDAzZXN0YXRzX25jaCkpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbkBAIC02Nyw3ICs3NSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2h2X3ZoY2Ffc3RhdHNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdHNhZ2VudCA9IGNvbnRhaW5lcl9vZihkd29yaywgc3RydWN0IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYWdlbnQsIHdvcmspO1xcbiBcXHRwcml2ID0gY29udGFpbmVyX29mKHNhZ2VudCwgc3RydWN0IG1seDVlX3ByaXYsIHN0YXRzX2FnZW50KTtcXG4gXFx0YnVmX2xlbiA9IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX3NpemUocHJpdik7XFxuLVxcdGFnZW50ID0gc2FnZW50LVxcdTAwM2VhZ2VudDtcXG4rXFx0YWdlbnQgPSBSRUFEX09OQ0Uoc2FnZW50LVxcdTAwM2VhZ2VudCk7XFxuIFxcdGJ1ZiA9IHNhZ2VudC1cXHUwMDNlYnVmO1xcbiBcXG4gXFx0bWVtc2V0KGJ1ZiwgMCwgYnVmX2xlbik7XFxuQEAgLTEwMCw3ICsxMDgsNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX2NvbnRyb2woc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQsXFxuIFxcdHNhZ2VudCA9IFxcdTAwMjZwcml2LVxcdTAwM2VzdGF0c19hZ2VudDtcXG4gXFxuIFxcdGJsb2NrLVxcdTAwM2V2ZXJzaW9uID0gTUxYNV9IVl9WSENBX1NUQVRTX1ZFUlNJT047XFxuLVxcdGJsb2NrLVxcdTAwM2VyaW5ncyAgID0gcHJpdi1cXHUwMDNlc3RhdHNfbmNoO1xcbitcXHRibG9jay1cXHUwMDNlcmluZ3MgICA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xcbiBcXG4gXFx0aWYgKCFibG9jay1cXHUwMDNlY29tbWFuZCkge1xcbiBcXHRcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRzX2FnZW50LndvcmspO1xcbkBAIC0xMjIsMTggKzEzMCwyMSBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX2NsZWFudXAoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpXFxuIFxcbiB2b2lkIG1seDVlX2h2X3ZoY2Ffc3RhdHNfY3JlYXRlKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxcbiB7XFxuLVxcdGludCBidWZfbGVuID0gbWx4NWVfaHZfdmhjYV9zdGF0c19idWZfc2l6ZShwcml2KTtcXG4rXFx0aW50IGJ1Zl9sZW4gPSBtbHg1ZV9odl92aGNhX3N0YXRzX2J1Zl9tYXhfc2l6ZShwcml2KTtcXG4gXFx0c3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQ7XFxuIFxcbiBcXHRwcml2LVxcdTAwM2VzdGF0c19hZ2VudC5idWYgPSBrdnphbGxvYyhidWZfbGVuLCBHRlBfS0VSTkVMKTtcXG4gXFx0aWYgKCFwcml2LVxcdTAwM2VzdGF0c19hZ2VudC5idWYpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuK1xcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZwcml2LVxcdTAwM2VzdGF0c19hZ2VudC53b3JrLCBtbHg1ZV9odl92aGNhX3N0YXRzX3dvcmspO1xcbitcXG4gXFx0YWdlbnQgPSBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHByaXYtXFx1MDAzZW1kZXYtXFx1MDAzZWh2X3ZoY2EsXFxuIFxcdFxcdFxcdFxcdFxcdCAgTUxYNV9IVl9WSENBX0FHRU5UX1NUQVRTLFxcbiBcXHRcXHRcXHRcXHRcXHQgIG1seDVlX2h2X3ZoY2Ffc3RhdHNfY29udHJvbCwgTlVMTCxcXG4gXFx0XFx0XFx0XFx0XFx0ICBtbHg1ZV9odl92aGNhX3N0YXRzX2NsZWFudXAsXFxuLVxcdFxcdFxcdFxcdFxcdCAgcHJpdik7XFxuK1xcdFxcdFxcdFxcdFxcdCAgcHJpdixcXG4rXFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2cHJpdi1cXHUwMDNlc3RhdHNfYWdlbnQuYWdlbnQpO1xcbiBcXG4gXFx0aWYgKElTX0VSUl9PUl9OVUxMKGFnZW50KSkge1xcbiBcXHRcXHRpZiAoSVNfRVJSKGFnZW50KSlcXG5AQCAtMTQyLDE4ICsxNTMsMjEgQEAgdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX2NyZWF0ZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcXG4gXFx0XFx0XFx0XFx0ICAgIGFnZW50KTtcXG4gXFxuIFxcdFxcdGt2ZnJlZShwcml2LVxcdTAwM2VzdGF0c19hZ2VudC5idWYpO1xcbi1cXHRcXHRyZXR1cm47XFxuK1xcdFxcdHByaXYtXFx1MDAzZXN0YXRzX2FnZW50LmJ1ZiA9IE5VTEw7XFxuIFxcdH1cXG4tXFxuLVxcdHByaXYtXFx1MDAzZXN0YXRzX2FnZW50LmFnZW50ID0gYWdlbnQ7XFxuLVxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZwcml2LVxcdTAwM2VzdGF0c19hZ2VudC53b3JrLCBtbHg1ZV9odl92aGNhX3N0YXRzX3dvcmspO1xcbiB9XFxuIFxcbiB2b2lkIG1seDVlX2h2X3ZoY2Ffc3RhdHNfZGVzdHJveShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcXG4ge1xcbi1cXHRpZiAoSVNfRVJSX09SX05VTEwocHJpdi1cXHUwMDNlc3RhdHNfYWdlbnQuYWdlbnQpKVxcbitcXHRzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudDtcXG4rXFxuK1xcdGFnZW50ID0gUkVBRF9PTkNFKHByaXYtXFx1MDAzZXN0YXRzX2FnZW50LmFnZW50KTtcXG4rXFx0aWYgKElTX0VSUl9PUl9OVUxMKGFnZW50KSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4tXFx0bWx4NV9odl92aGNhX2FnZW50X2Rlc3Ryb3kocHJpdi1cXHUwMDNlc3RhdHNfYWdlbnQuYWdlbnQpO1xcbitcXHRtbHg1X2h2X3ZoY2FfYWdlbnRfZGVzdHJveShhZ2VudCk7XFxuIFxcdGt2ZnJlZShwcml2LVxcdTAwM2VzdGF0c19hZ2VudC5idWYpO1xcbitcXG4rXFx0V1JJVEVfT05DRShwcml2LVxcdTAwM2VzdGF0c19hZ2VudC5hZ2VudCwgTlVMTCk7XFxuK1xcdHByaXYtXFx1MDAzZXN0YXRzX2FnZW50LmJ1ZiA9IE5VTEw7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmNcXG5pbmRleCA3NzVmMGM2ZTU1Yzk1NS4uYWE4NjEwY2VkYWE4NWIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmNcXG5AQCAtMjc3Myw3ICsyNzczLDcgQEAgc3RhdGljIGludCBtbHg1ZV9jaGFubmVsX3N0YXRzX2FsbG9jKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBpbnQgaXgsIGludCBjcHUpXFxuIFxcdFxcdFxcdFxcdFxcdFxcdEdGUF9LRVJORUwsIGNwdV90b19ub2RlKGNwdSkpO1xcbiBcXHRpZiAoIXByaXYtXFx1MDAzZWNoYW5uZWxfc3RhdHNbaXhdKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4tXFx0cHJpdi1cXHUwMDNlc3RhdHNfbmNoKys7XFxuK1xcdG1seDVlX3N0YXRzX25jaF93cml0ZShwcml2LCBwcml2LVxcdTAwM2VzdGF0c19uY2ggKyAxKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuQEAgLTQwNDAsOSArNDA0MCwxMCBAQCBzdGF0aWMgaW50IG1seDVlX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxcbiBcXG4gdm9pZCBtbHg1ZV9mb2xkX3N3X3N0YXRzNjQoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCAqcylcXG4ge1xcbitcXHR1MTYgbmNoID0gbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdik7XFxuIFxcdGludCBpO1xcbiBcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHByaXYtXFx1MDAzZXN0YXRzX25jaDsgaSsrKSB7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBuY2g7IGkrKykge1xcbiBcXHRcXHRzdHJ1Y3QgbWx4NWVfY2hhbm5lbF9zdGF0cyAqY2hhbm5lbF9zdGF0cyA9IHByaXYtXFx1MDAzZWNoYW5uZWxfc3RhdHNbaV07XFxuIFxcdFxcdHN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqeHNrcnFfc3RhdHMgPSBcXHUwMDI2Y2hhbm5lbF9zdGF0cy1cXHUwMDNleHNrcnE7XFxuIFxcdFxcdHN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqcnFfc3RhdHMgPSBcXHUwMDI2Y2hhbm5lbF9zdGF0cy1cXHUwMDNlcnE7XFxuQEAgLTU0ODgsNyArNTQ4OSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9xdWV1ZV9zdGF0c19yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaSxcXG4gXFx0c3RydWN0IG1seDVlX3JxX3N0YXRzICp4c2tycV9zdGF0cztcXG4gXFx0c3RydWN0IG1seDVlX3JxX3N0YXRzICpycV9zdGF0cztcXG4gXFxuLVxcdGlmIChtbHg1ZV9pc191cGxpbmtfcmVwKHByaXYpIHx8ICFwcml2LVxcdTAwM2VzdGF0c19uY2gpXFxuK1xcdGlmIChtbHg1ZV9pc191cGxpbmtfcmVwKHByaXYpIHx8ICFtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0Y2hhbm5lbF9zdGF0cyA9IHByaXYtXFx1MDAzZWNoYW5uZWxfc3RhdHNbaV07XFxuQEAgLTU1MTIsNyArNTUxMyw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9xdWV1ZV9zdGF0c190eChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaSxcXG4gXFx0c3RydWN0IG1seDVlX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiBcXHRzdHJ1Y3QgbWx4NWVfc3Ffc3RhdHMgKnNxX3N0YXRzO1xcbiBcXG4tXFx0aWYgKCFwcml2LVxcdTAwM2VzdGF0c19uY2gpXFxuK1xcdGlmICghbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdikpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdC8qIG5vIHNwZWNpYWwgY2FzZSBuZWVkZWQgZm9yIHB0cCBodGIgZXRjIHNpbmNlIHR4cTJzcV9zdGF0cyBpcyBrZXB0IHVwXFxuQEAgLTU1MzgsNiArNTUzOSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9iYXNlX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX3N0YXRzX3R4ICp0eClcXG4ge1xcbiBcXHRzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XFxuK1xcdHUxNiBuY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcXG4gXFx0c3RydWN0IG1seDVlX3B0cCAqcHRwX2NoYW5uZWw7XFxuIFxcdGludCBpLCB0YztcXG4gXFxuQEAgLTU1NDksNyArNTU1MSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9iYXNlX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdHJ4LVxcdTAwM2Vod19ncm9fd2lyZV9wYWNrZXRzID0gMDtcXG4gXFx0XFx0cngtXFx1MDAzZWh3X2dyb193aXJlX2J5dGVzID0gMDtcXG4gXFxuLVxcdFxcdGZvciAoaSA9IHByaXYtXFx1MDAzZWNoYW5uZWxzLnBhcmFtcy5udW1fY2hhbm5lbHM7IGkgXFx1MDAzYyBwcml2LVxcdTAwM2VzdGF0c19uY2g7IGkrKykge1xcbitcXHRcXHRmb3IgKGkgPSBwcml2LVxcdTAwM2VjaGFubmVscy5wYXJhbXMubnVtX2NoYW5uZWxzOyBpIFxcdTAwM2MgbmNoOyBpKyspIHtcXG4gXFx0XFx0XFx0c3RydWN0IG5ldGRldl9xdWV1ZV9zdGF0c19yeCByeF9pID0gezB9O1xcbiBcXG4gXFx0XFx0XFx0bWx4NWVfZ2V0X3F1ZXVlX3N0YXRzX3J4KGRldiwgaSwgXFx1MDAyNnJ4X2kpO1xcbkBAIC01NTg1LDcgKzU1ODcsNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9nZXRfYmFzZV9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHR0eC1cXHUwMDNlc3RvcCA9IDA7XFxuIFxcdHR4LVxcdTAwM2V3YWtlID0gMDtcXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwcml2LVxcdTAwM2VzdGF0c19uY2g7IGkrKykge1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbmNoOyBpKyspIHtcXG4gXFx0XFx0c3RydWN0IG1seDVlX2NoYW5uZWxfc3RhdHMgKmNoYW5uZWxfc3RhdHMgPSBwcml2LVxcdTAwM2VjaGFubmVsX3N0YXRzW2ldO1xcbiBcXG4gXFx0XFx0LyogaGFuZGxlIHR3byBjYXNlczpcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuY1xcbmluZGV4IDdmMzMyNjFiYTY1NTNiLi5kZTM4YjYwODA2YzI2NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jXFxuQEAgLTUxNSw2ICs1MTUsNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9zdGF0c191cGRhdGVfc3RhdHNfcnFfcGFnZV9wb29sKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjKVxcbiBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfVVBEQVRFX1NUQVRTKHN3KVxcbiB7XFxuIFxcdHN0cnVjdCBtbHg1ZV9zd19zdGF0cyAqcyA9IFxcdTAwMjZwcml2LVxcdTAwM2VzdGF0cy5zdztcXG4rXFx0dTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xcbiBcXHRpbnQgaTtcXG4gXFxuIFxcdG1lbXNldChzLCAwLCBzaXplb2YoKnMpKTtcXG5AQCAtNTIyLDcgKzUyMyw3IEBAIHN0YXRpYyBNTFg1RV9ERUNMQVJFX1NUQVRTX0dSUF9PUF9VUERBVEVfU1RBVFMoc3cpXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwcml2LVxcdTAwM2VjaGFubmVscy5udW07IGkrKykgLyogZm9yIGFjdGl2ZSBjaGFubmVscyBvbmx5ICovXFxuIFxcdFxcdG1seDVlX3N0YXRzX3VwZGF0ZV9zdGF0c19ycV9wYWdlX3Bvb2wocHJpdi1cXHUwMDNlY2hhbm5lbHMuY1tpXSk7XFxuIFxcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcHJpdi1cXHUwMDNlc3RhdHNfbmNoOyBpKyspIHtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5jaDsgaSsrKSB7XFxuIFxcdFxcdHN0cnVjdCBtbHg1ZV9jaGFubmVsX3N0YXRzICpjaGFubmVsX3N0YXRzID1cXG4gXFx0XFx0XFx0cHJpdi1cXHUwMDNlY2hhbm5lbF9zdGF0c1tpXTtcXG4gXFxuQEAgLTI2MTQsNyArMjYxNSw3IEBAIHN0YXRpYyBNTFg1RV9ERUNMQVJFX1NUQVRTX0dSUF9PUF9VUERBVEVfU1RBVFMocHRwKSB7IHJldHVybjsgfVxcbiBcXG4gc3RhdGljIE1MWDVFX0RFQ0xBUkVfU1RBVFNfR1JQX09QX05VTV9TVEFUUyhjaGFubmVscylcXG4ge1xcbi1cXHRpbnQgbWF4X25jaCA9IHByaXYtXFx1MDAzZXN0YXRzX25jaDtcXG4rXFx0aW50IG1heF9uY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcXG4gXFxuIFxcdHJldHVybiAoTlVNX1JRX1NUQVRTICogbWF4X25jaCkgK1xcbiBcXHQgICAgICAgKE5VTV9DSF9TVEFUUyAqIG1heF9uY2gpICtcXG5AQCAtMjYyNyw4ICsyNjI4LDggQEAgc3RhdGljIE1MWDVFX0RFQ0xBUkVfU1RBVFNfR1JQX09QX05VTV9TVEFUUyhjaGFubmVscylcXG4gXFxuIHN0YXRpYyBNTFg1RV9ERUNMQVJFX1NUQVRTX0dSUF9PUF9GSUxMX1NUUlMoY2hhbm5lbHMpXFxuIHtcXG4rXFx0aW50IG1heF9uY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcXG4gXFx0Ym9vbCBpc194c2sgPSBwcml2LVxcdTAwM2V4c2suZXZlcl91c2VkO1xcbi1cXHRpbnQgbWF4X25jaCA9IHByaXYtXFx1MDAzZXN0YXRzX25jaDtcXG4gXFx0aW50IGksIGosIHRjO1xcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG1heF9uY2g7IGkrKylcXG5AQCAtMjY2MCw4ICsyNjYxLDggQEAgc3RhdGljIE1MWDVFX0RFQ0xBUkVfU1RBVFNfR1JQX09QX0ZJTExfU1RSUyhjaGFubmVscylcXG4gXFxuIHN0YXRpYyBNTFg1RV9ERUNMQVJFX1NUQVRTX0dSUF9PUF9GSUxMX1NUQVRTKGNoYW5uZWxzKVxcbiB7XFxuK1xcdGludCBtYXhfbmNoID0gbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdik7XFxuIFxcdGJvb2wgaXNfeHNrID0gcHJpdi1cXHUwMDNleHNrLmV2ZXJfdXNlZDtcXG4tXFx0aW50IG1heF9uY2ggPSBwcml2LVxcdTAwM2VzdGF0c19uY2g7XFxuIFxcdGludCBpLCBqLCB0YztcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBtYXhfbmNoOyBpKyspXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmNcXG5pbmRleCAwYTYwMDNmZTYwZTlmOC4uNjc0YmVkNzIxZTYzNzUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuY1xcbkBAIC0xMzUsMTAgKzEzNSwxMSBAQCB2b2lkIG1seDVpX2NsZWFudXAoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXFxuIFxcbiBzdGF0aWMgdm9pZCBtbHg1aV9ncnBfc3dfdXBkYXRlX3N0YXRzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxcbiB7XFxuK1xcdHUxNiBuY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcXG4gXFx0c3RydWN0IHJ0bmxfbGlua19zdGF0czY0IHMgPSB7fTtcXG4gXFx0aW50IGksIGo7XFxuIFxcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcHJpdi1cXHUwMDNlc3RhdHNfbmNoOyBpKyspIHtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5jaDsgaSsrKSB7XFxuIFxcdFxcdHN0cnVjdCBtbHg1ZV9jaGFubmVsX3N0YXRzICpjaGFubmVsX3N0YXRzO1xcbiBcXHRcXHRzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMgKnJxX3N0YXRzO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuY1xcbmluZGV4IGQ2ZGM3YmNlODU1ZTBiLi4zMDU3NTJkYWI3YmRmNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5jXFxuQEAgLTE5MCw3ICsxOTAsNyBAQCBtbHg1X2h2X3ZoY2FfY29udHJvbF9hZ2VudF9jcmVhdGUoc3RydWN0IG1seDVfaHZfdmhjYSAqaHZfdmhjYSlcXG4gXFx0cmV0dXJuIG1seDVfaHZfdmhjYV9hZ2VudF9jcmVhdGUoaHZfdmhjYSwgTUxYNV9IVl9WSENBX0FHRU5UX0NPTlRST0wsXFxuIFxcdFxcdFxcdFxcdFxcdCBOVUxMLFxcbiBcXHRcXHRcXHRcXHRcXHQgbWx4NV9odl92aGNhX2NvbnRyb2xfYWdlbnRfaW52YWxpZGF0ZSxcXG4tXFx0XFx0XFx0XFx0XFx0IE5VTEwsIE5VTEwpO1xcbitcXHRcXHRcXHRcXHRcXHQgTlVMTCwgTlVMTCwgTlVMTCk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIG1seDVfaHZfdmhjYV9jb250cm9sX2FnZW50X2Rlc3Ryb3koc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpXFxuQEAgLTI1Niw3ICsyNTYsOCBAQCBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHN0cnVjdCBtbHg1X2h2X3ZoY2EgKmh2X3ZoY2EsXFxuIFxcdFxcdFxcdCAgdm9pZCAoKmludmFsaWRhdGUpKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQqLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgIHU2NCBibG9ja19tYXNrKSxcXG4gXFx0XFx0XFx0ICB2b2lkICgqY2xlYXVwKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCksXFxuLVxcdFxcdFxcdCAgdm9pZCAqcHJpdilcXG4rXFx0XFx0XFx0ICB2b2lkICpwcml2LFxcbitcXHRcXHRcXHQgIHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKipjdHhfdXBkYXRlKVxcbiB7XFxuIFxcdHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50O1xcbiBcXG5AQCAtMjg0LDYgKzI4NSw5IEBAIG1seDVfaHZfdmhjYV9hZ2VudF9jcmVhdGUoc3RydWN0IG1seDVfaHZfdmhjYSAqaHZfdmhjYSxcXG4gXFx0YWdlbnQtXFx1MDAzZWludmFsaWRhdGUgPSBpbnZhbGlkYXRlO1xcbiBcXHRhZ2VudC1cXHUwMDNlY2xlYW51cCAgID0gY2xlYXVwO1xcbiBcXG4rXFx0aWYgKGN0eF91cGRhdGUpXFxuK1xcdFxcdFdSSVRFX09OQ0UoKmN0eF91cGRhdGUsIGFnZW50KTtcXG4rXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNmh2X3ZoY2EtXFx1MDAzZWFnZW50c19sb2NrKTtcXG4gXFx0aHZfdmhjYS1cXHUwMDNlYWdlbnRzW3R5cGVdID0gYWdlbnQ7XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2aHZfdmhjYS1cXHUwMDNlYWdlbnRzX2xvY2spO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5oXFxuaW5kZXggZjI0MGZmZTUxMTZjNWIuLjhiMzk3NGNmMGVlNDlhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmhcXG5AQCAtNDMsNyArNDMsOCBAQCBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHN0cnVjdCBtbHg1X2h2X3ZoY2EgKmh2X3ZoY2EsXFxuIFxcdFxcdFxcdCAgdm9pZCAoKmludmFsaWRhdGUpKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQqLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgIHU2NCBibG9ja19tYXNrKSxcXG4gXFx0XFx0XFx0ICB2b2lkICgqY2xlYW51cCkoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpLFxcbi1cXHRcXHRcXHQgIHZvaWQgKmNvbnRleHQpO1xcbitcXHRcXHRcXHQgIHZvaWQgKmNvbnRleHQsXFxuK1xcdFxcdFxcdCAgc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqKmN0eF91cGRhdGUpO1xcbiBcXG4gdm9pZCBtbHg1X2h2X3ZoY2FfYWdlbnRfZGVzdHJveShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCk7XFxuIGludCBtbHg1X2h2X3ZoY2FfYWdlbnRfd3JpdGUoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQsXFxuQEAgLTg0LDcgKzg1LDggQEAgbWx4NV9odl92aGNhX2FnZW50X2NyZWF0ZShzdHJ1Y3QgbWx4NV9odl92aGNhICpodl92aGNhLFxcbiBcXHRcXHRcXHQgIHZvaWQgKCppbnZhbGlkYXRlKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50KixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICB1NjQgYmxvY2tfbWFzayksXFxuIFxcdFxcdFxcdCAgdm9pZCAoKmNsZWFudXApKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50KSxcXG4tXFx0XFx0XFx0ICB2b2lkICpjb250ZXh0KVxcbitcXHRcXHRcXHQgIHZvaWQgKmNvbnRleHQsXFxuK1xcdFxcdFxcdCAgc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqKmN0eF91cGRhdGUpXFxuIHtcXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDg6NTM6MDIuMjg5NzE3NjUzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTIxNzQxOTc4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lbGxhbm94IG1seDUgZXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIFNpbmNlIHN5emthbGxlciBkb2VzIG5vdCBlbXVsYXRlIE1lbGxhbm94IGhhcmR3YXJlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSksIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOWY2NWM5NTU0NjljYmQ1NzM0MzU1ZWUyZTZhMTZkYmZjNTc5MjEwOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDIyIDA4OjUyOjU5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaFxuaW5kZXggMjI3MGUyZTU1MGRkOWUuLmQ1MDcyODkwOTZjMjA2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oXG5AQCAtOTg3LDYgKzk4NywxOCBAQCBzdHJ1Y3QgbWx4NWVfcHJpdiB7XG4gXHRzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqZmVjX3JhbmdlcztcbiB9O1xuIFxuK3N0YXRpYyBpbmxpbmUgdTE2IG1seDVlX3N0YXRzX25jaF9yZWFkKGNvbnN0IHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuK3tcbitcdC8qIFBhaXJzIHdpdGggc21wX3N0b3JlX3JlbGVhc2UgaW4gbWx4NWVfc3RhdHNfbmNoX3dyaXRlKCkuICovXG4rXHRyZXR1cm4gc21wX2xvYWRfYWNxdWlyZShcdTAwMjZwcml2LVx1MDAzZXN0YXRzX25jaCk7XG4rfVxuK1xuK3N0YXRpYyBpbmxpbmUgdm9pZCBtbHg1ZV9zdGF0c19uY2hfd3JpdGUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHUxNiBuKVxuK3tcbitcdC8qIFBhaXJzIHdpdGggc21wX2xvYWRfYWNxdWlyZSBpbiBtbHg1ZV9zdGF0c19uY2hfcmVhZCgpLiAqL1xuK1x0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2cHJpdi1cdTAwM2VzdGF0c19uY2gsIG4pO1xuK31cbitcbiBzdHJ1Y3QgbWx4NWVfZGV2IHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG4gXHRzdHJ1Y3QgZGV2bGlua19wb3J0IGRsX3BvcnQ7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2h2X3ZoY2Ffc3RhdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9odl92aGNhX3N0YXRzLmNcbmluZGV4IDE5NTg2M2IyYzAxM2UyLi45NzQ3ZDc3MzZkMzdhZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9odl92aGNhX3N0YXRzLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9odl92aGNhX3N0YXRzLmNcbkBAIC0zMyw5ICszMywxMCBAQCBtbHg1ZV9odl92aGNhX2ZpbGxfcmluZ19zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgaW50IGNoLFxuIHN0YXRpYyB2b2lkIG1seDVlX2h2X3ZoY2FfZmlsbF9zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgdm9pZCAqZGF0YSxcbiBcdFx0XHRcdCAgICAgaW50IGJ1Zl9sZW4pXG4ge1xuK1x0dTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xuIFx0aW50IGNoLCBpID0gMDtcbiBcbi1cdGZvciAoY2ggPSAwOyBjaCBcdTAwM2MgcHJpdi1cdTAwM2VzdGF0c19uY2g7IGNoKyspIHtcbitcdGZvciAoY2ggPSAwOyBjaCBcdTAwM2MgbmNoOyBjaCsrKSB7XG4gXHRcdHZvaWQgKmJ1ZiA9IGRhdGEgKyBpO1xuIFxuIFx0XHRpZiAoV0FSTl9PTl9PTkNFKGJ1ZiArXG5AQCAtNDksOSArNTAsMTYgQEAgc3RhdGljIHZvaWQgbWx4NWVfaHZfdmhjYV9maWxsX3N0YXRzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCB2b2lkICpkYXRhLFxuIH1cbiBcbiBzdGF0aWMgaW50IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX3NpemUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4re1xuK1x0dTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xuK1xuK1x0cmV0dXJuIHNpemVvZihzdHJ1Y3QgbWx4NWVfaHZfdmhjYV9wZXJfcmluZ19zdGF0cykgKiBuY2g7XG4rfVxuK1xuK3N0YXRpYyBpbnQgbWx4NWVfaHZfdmhjYV9zdGF0c19idWZfbWF4X3NpemUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4ge1xuIFx0cmV0dXJuIChzaXplb2Yoc3RydWN0IG1seDVlX2h2X3ZoY2FfcGVyX3Jpbmdfc3RhdHMpICpcbi1cdFx0cHJpdi1cdTAwM2VzdGF0c19uY2gpO1xuK1x0XHRtYXgocHJpdi1cdTAwM2VtYXhfbmNoLCBwcml2LVx1MDAzZXN0YXRzX25jaCkpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuQEAgLTY3LDcgKzc1LDcgQEAgc3RhdGljIHZvaWQgbWx4NWVfaHZfdmhjYV9zdGF0c193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHNhZ2VudCA9IGNvbnRhaW5lcl9vZihkd29yaywgc3RydWN0IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYWdlbnQsIHdvcmspO1xuIFx0cHJpdiA9IGNvbnRhaW5lcl9vZihzYWdlbnQsIHN0cnVjdCBtbHg1ZV9wcml2LCBzdGF0c19hZ2VudCk7XG4gXHRidWZfbGVuID0gbWx4NWVfaHZfdmhjYV9zdGF0c19idWZfc2l6ZShwcml2KTtcbi1cdGFnZW50ID0gc2FnZW50LVx1MDAzZWFnZW50O1xuK1x0YWdlbnQgPSBSRUFEX09OQ0Uoc2FnZW50LVx1MDAzZWFnZW50KTtcbiBcdGJ1ZiA9IHNhZ2VudC1cdTAwM2VidWY7XG4gXG4gXHRtZW1zZXQoYnVmLCAwLCBidWZfbGVuKTtcbkBAIC0xMDAsNyArMTA4LDcgQEAgc3RhdGljIHZvaWQgbWx4NWVfaHZfdmhjYV9zdGF0c19jb250cm9sKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50LFxuIFx0c2FnZW50ID0gXHUwMDI2cHJpdi1cdTAwM2VzdGF0c19hZ2VudDtcbiBcbiBcdGJsb2NrLVx1MDAzZXZlcnNpb24gPSBNTFg1X0hWX1ZIQ0FfU1RBVFNfVkVSU0lPTjtcbi1cdGJsb2NrLVx1MDAzZXJpbmdzICAgPSBwcml2LVx1MDAzZXN0YXRzX25jaDtcbitcdGJsb2NrLVx1MDAzZXJpbmdzICAgPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcbiBcbiBcdGlmICghYmxvY2stXHUwMDNlY29tbWFuZCkge1xuIFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2cHJpdi1cdTAwM2VzdGF0c19hZ2VudC53b3JrKTtcbkBAIC0xMjIsMTggKzEzMCwyMSBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX2NsZWFudXAoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpXG4gXG4gdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX2NyZWF0ZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcbiB7XG4tXHRpbnQgYnVmX2xlbiA9IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX3NpemUocHJpdik7XG4rXHRpbnQgYnVmX2xlbiA9IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX21heF9zaXplKHByaXYpO1xuIFx0c3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQ7XG4gXG4gXHRwcml2LVx1MDAzZXN0YXRzX2FnZW50LmJ1ZiA9IGt2emFsbG9jKGJ1Zl9sZW4sIEdGUF9LRVJORUwpO1xuIFx0aWYgKCFwcml2LVx1MDAzZXN0YXRzX2FnZW50LmJ1ZilcbiBcdFx0cmV0dXJuO1xuIFxuK1x0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VzdGF0c19hZ2VudC53b3JrLCBtbHg1ZV9odl92aGNhX3N0YXRzX3dvcmspO1xuK1xuIFx0YWdlbnQgPSBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHByaXYtXHUwMDNlbWRldi1cdTAwM2Vodl92aGNhLFxuIFx0XHRcdFx0XHQgIE1MWDVfSFZfVkhDQV9BR0VOVF9TVEFUUyxcbiBcdFx0XHRcdFx0ICBtbHg1ZV9odl92aGNhX3N0YXRzX2NvbnRyb2wsIE5VTEwsXG4gXHRcdFx0XHRcdCAgbWx4NWVfaHZfdmhjYV9zdGF0c19jbGVhbnVwLFxuLVx0XHRcdFx0XHQgIHByaXYpO1xuK1x0XHRcdFx0XHQgIHByaXYsXG4rXHRcdFx0XHRcdCAgXHUwMDI2cHJpdi1cdTAwM2VzdGF0c19hZ2VudC5hZ2VudCk7XG4gXG4gXHRpZiAoSVNfRVJSX09SX05VTEwoYWdlbnQpKSB7XG4gXHRcdGlmIChJU19FUlIoYWdlbnQpKVxuQEAgLTE0MiwxOCArMTUzLDIxIEBAIHZvaWQgbWx4NWVfaHZfdmhjYV9zdGF0c19jcmVhdGUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4gXHRcdFx0XHQgICAgYWdlbnQpO1xuIFxuIFx0XHRrdmZyZWUocHJpdi1cdTAwM2VzdGF0c19hZ2VudC5idWYpO1xuLVx0XHRyZXR1cm47XG4rXHRcdHByaXYtXHUwMDNlc3RhdHNfYWdlbnQuYnVmID0gTlVMTDtcbiBcdH1cbi1cbi1cdHByaXYtXHUwMDNlc3RhdHNfYWdlbnQuYWdlbnQgPSBhZ2VudDtcbi1cdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnByaXYtXHUwMDNlc3RhdHNfYWdlbnQud29yaywgbWx4NWVfaHZfdmhjYV9zdGF0c193b3JrKTtcbiB9XG4gXG4gdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX2Rlc3Ryb3koc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4ge1xuLVx0aWYgKElTX0VSUl9PUl9OVUxMKHByaXYtXHUwMDNlc3RhdHNfYWdlbnQuYWdlbnQpKVxuK1x0c3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQ7XG4rXG4rXHRhZ2VudCA9IFJFQURfT05DRShwcml2LVx1MDAzZXN0YXRzX2FnZW50LmFnZW50KTtcbitcdGlmIChJU19FUlJfT1JfTlVMTChhZ2VudCkpXG4gXHRcdHJldHVybjtcbiBcbi1cdG1seDVfaHZfdmhjYV9hZ2VudF9kZXN0cm95KHByaXYtXHUwMDNlc3RhdHNfYWdlbnQuYWdlbnQpO1xuK1x0bWx4NV9odl92aGNhX2FnZW50X2Rlc3Ryb3koYWdlbnQpO1xuIFx0a3ZmcmVlKHByaXYtXHUwMDNlc3RhdHNfYWdlbnQuYnVmKTtcbitcbitcdFdSSVRFX09OQ0UocHJpdi1cdTAwM2VzdGF0c19hZ2VudC5hZ2VudCwgTlVMTCk7XG4rXHRwcml2LVx1MDAzZXN0YXRzX2FnZW50LmJ1ZiA9IE5VTEw7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jXG5pbmRleCA3NzVmMGM2ZTU1Yzk1NS4uYWE4NjEwY2VkYWE4NWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jXG5AQCAtMjc3Myw3ICsyNzczLDcgQEAgc3RhdGljIGludCBtbHg1ZV9jaGFubmVsX3N0YXRzX2FsbG9jKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBpbnQgaXgsIGludCBjcHUpXG4gXHRcdFx0XHRcdFx0R0ZQX0tFUk5FTCwgY3B1X3RvX25vZGUoY3B1KSk7XG4gXHRpZiAoIXByaXYtXHUwMDNlY2hhbm5lbF9zdGF0c1tpeF0pXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuLVx0cHJpdi1cdTAwM2VzdGF0c19uY2grKztcbitcdG1seDVlX3N0YXRzX25jaF93cml0ZShwcml2LCBwcml2LVx1MDAzZXN0YXRzX25jaCArIDEpO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTQwNDAsOSArNDA0MCwxMCBAQCBzdGF0aWMgaW50IG1seDVlX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxuIFxuIHZvaWQgbWx4NWVfZm9sZF9zd19zdGF0czY0KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3QgcnRubF9saW5rX3N0YXRzNjQgKnMpXG4ge1xuK1x0dTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xuIFx0aW50IGk7XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwcml2LVx1MDAzZXN0YXRzX25jaDsgaSsrKSB7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuY2g7IGkrKykge1xuIFx0XHRzdHJ1Y3QgbWx4NWVfY2hhbm5lbF9zdGF0cyAqY2hhbm5lbF9zdGF0cyA9IHByaXYtXHUwMDNlY2hhbm5lbF9zdGF0c1tpXTtcbiBcdFx0c3RydWN0IG1seDVlX3JxX3N0YXRzICp4c2tycV9zdGF0cyA9IFx1MDAyNmNoYW5uZWxfc3RhdHMtXHUwMDNleHNrcnE7XG4gXHRcdHN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqcnFfc3RhdHMgPSBcdTAwMjZjaGFubmVsX3N0YXRzLVx1MDAzZXJxO1xuQEAgLTU0ODgsNyArNTQ4OSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9xdWV1ZV9zdGF0c19yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaSxcbiBcdHN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqeHNrcnFfc3RhdHM7XG4gXHRzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMgKnJxX3N0YXRzO1xuIFxuLVx0aWYgKG1seDVlX2lzX3VwbGlua19yZXAocHJpdikgfHwgIXByaXYtXHUwMDNlc3RhdHNfbmNoKVxuK1x0aWYgKG1seDVlX2lzX3VwbGlua19yZXAocHJpdikgfHwgIW1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRjaGFubmVsX3N0YXRzID0gcHJpdi1cdTAwM2VjaGFubmVsX3N0YXRzW2ldO1xuQEAgLTU1MTIsNyArNTUxMyw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9xdWV1ZV9zdGF0c190eChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaSxcbiBcdHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcdHN0cnVjdCBtbHg1ZV9zcV9zdGF0cyAqc3Ffc3RhdHM7XG4gXG4tXHRpZiAoIXByaXYtXHUwMDNlc3RhdHNfbmNoKVxuK1x0aWYgKCFtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KSlcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Lyogbm8gc3BlY2lhbCBjYXNlIG5lZWRlZCBmb3IgcHRwIGh0YiBldGMgc2luY2UgdHhxMnNxX3N0YXRzIGlzIGtlcHQgdXBcbkBAIC01NTM4LDYgKzU1MzksNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9nZXRfYmFzZV9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdFx0IHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfdHggKnR4KVxuIHtcbiBcdHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbitcdHUxNiBuY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcbiBcdHN0cnVjdCBtbHg1ZV9wdHAgKnB0cF9jaGFubmVsO1xuIFx0aW50IGksIHRjO1xuIFxuQEAgLTU1NDksNyArNTU1MSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9iYXNlX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdHJ4LVx1MDAzZWh3X2dyb193aXJlX3BhY2tldHMgPSAwO1xuIFx0XHRyeC1cdTAwM2Vod19ncm9fd2lyZV9ieXRlcyA9IDA7XG4gXG4tXHRcdGZvciAoaSA9IHByaXYtXHUwMDNlY2hhbm5lbHMucGFyYW1zLm51bV9jaGFubmVsczsgaSBcdTAwM2MgcHJpdi1cdTAwM2VzdGF0c19uY2g7IGkrKykge1xuK1x0XHRmb3IgKGkgPSBwcml2LVx1MDAzZWNoYW5uZWxzLnBhcmFtcy5udW1fY2hhbm5lbHM7IGkgXHUwMDNjIG5jaDsgaSsrKSB7XG4gXHRcdFx0c3RydWN0IG5ldGRldl9xdWV1ZV9zdGF0c19yeCByeF9pID0gezB9O1xuIFxuIFx0XHRcdG1seDVlX2dldF9xdWV1ZV9zdGF0c19yeChkZXYsIGksIFx1MDAyNnJ4X2kpO1xuQEAgLTU1ODUsNyArNTU4Nyw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9iYXNlX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHR0eC1cdTAwM2VzdG9wID0gMDtcbiBcdHR4LVx1MDAzZXdha2UgPSAwO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcHJpdi1cdTAwM2VzdGF0c19uY2g7IGkrKykge1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgbmNoOyBpKyspIHtcbiBcdFx0c3RydWN0IG1seDVlX2NoYW5uZWxfc3RhdHMgKmNoYW5uZWxfc3RhdHMgPSBwcml2LVx1MDAzZWNoYW5uZWxfc3RhdHNbaV07XG4gXG4gXHRcdC8qIGhhbmRsZSB0d28gY2FzZXM6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuY1xuaW5kZXggN2YzMzI2MWJhNjU1M2IuLmRlMzhiNjA4MDZjMjY0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jXG5AQCAtNTE1LDYgKzUxNSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX3N0YXRzX3VwZGF0ZV9zdGF0c19ycV9wYWdlX3Bvb2woc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpXG4gc3RhdGljIE1MWDVFX0RFQ0xBUkVfU1RBVFNfR1JQX09QX1VQREFURV9TVEFUUyhzdylcbiB7XG4gXHRzdHJ1Y3QgbWx4NWVfc3dfc3RhdHMgKnMgPSBcdTAwMjZwcml2LVx1MDAzZXN0YXRzLnN3O1xuK1x0dTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xuIFx0aW50IGk7XG4gXG4gXHRtZW1zZXQocywgMCwgc2l6ZW9mKCpzKSk7XG5AQCAtNTIyLDcgKzUyMyw3IEBAIHN0YXRpYyBNTFg1RV9ERUNMQVJFX1NUQVRTX0dSUF9PUF9VUERBVEVfU1RBVFMoc3cpXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwcml2LVx1MDAzZWNoYW5uZWxzLm51bTsgaSsrKSAvKiBmb3IgYWN0aXZlIGNoYW5uZWxzIG9ubHkgKi9cbiBcdFx0bWx4NWVfc3RhdHNfdXBkYXRlX3N0YXRzX3JxX3BhZ2VfcG9vbChwcml2LVx1MDAzZWNoYW5uZWxzLmNbaV0pO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcHJpdi1cdTAwM2VzdGF0c19uY2g7IGkrKykge1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgbmNoOyBpKyspIHtcbiBcdFx0c3RydWN0IG1seDVlX2NoYW5uZWxfc3RhdHMgKmNoYW5uZWxfc3RhdHMgPVxuIFx0XHRcdHByaXYtXHUwMDNlY2hhbm5lbF9zdGF0c1tpXTtcbiBcbkBAIC0yNjE0LDcgKzI2MTUsNyBAQCBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfVVBEQVRFX1NUQVRTKHB0cCkgeyByZXR1cm47IH1cbiBcbiBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfTlVNX1NUQVRTKGNoYW5uZWxzKVxuIHtcbi1cdGludCBtYXhfbmNoID0gcHJpdi1cdTAwM2VzdGF0c19uY2g7XG4rXHRpbnQgbWF4X25jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xuIFxuIFx0cmV0dXJuIChOVU1fUlFfU1RBVFMgKiBtYXhfbmNoKSArXG4gXHQgICAgICAgKE5VTV9DSF9TVEFUUyAqIG1heF9uY2gpICtcbkBAIC0yNjI3LDggKzI2MjgsOCBAQCBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfTlVNX1NUQVRTKGNoYW5uZWxzKVxuIFxuIHN0YXRpYyBNTFg1RV9ERUNMQVJFX1NUQVRTX0dSUF9PUF9GSUxMX1NUUlMoY2hhbm5lbHMpXG4ge1xuK1x0aW50IG1heF9uY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcbiBcdGJvb2wgaXNfeHNrID0gcHJpdi1cdTAwM2V4c2suZXZlcl91c2VkO1xuLVx0aW50IG1heF9uY2ggPSBwcml2LVx1MDAzZXN0YXRzX25jaDtcbiBcdGludCBpLCBqLCB0YztcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG1heF9uY2g7IGkrKylcbkBAIC0yNjYwLDggKzI2NjEsOCBAQCBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfRklMTF9TVFJTKGNoYW5uZWxzKVxuIFxuIHN0YXRpYyBNTFg1RV9ERUNMQVJFX1NUQVRTX0dSUF9PUF9GSUxMX1NUQVRTKGNoYW5uZWxzKVxuIHtcbitcdGludCBtYXhfbmNoID0gbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdik7XG4gXHRib29sIGlzX3hzayA9IHByaXYtXHUwMDNleHNrLmV2ZXJfdXNlZDtcbi1cdGludCBtYXhfbmNoID0gcHJpdi1cdTAwM2VzdGF0c19uY2g7XG4gXHRpbnQgaSwgaiwgdGM7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBtYXhfbmNoOyBpKyspXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuY1xuaW5kZXggMGE2MDAzZmU2MGU5ZjguLjY3NGJlZDcyMWU2Mzc1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jXG5AQCAtMTM1LDEwICsxMzUsMTEgQEAgdm9pZCBtbHg1aV9jbGVhbnVwKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuIFxuIHN0YXRpYyB2b2lkIG1seDVpX2dycF9zd191cGRhdGVfc3RhdHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4ge1xuK1x0dTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xuIFx0c3RydWN0IHJ0bmxfbGlua19zdGF0czY0IHMgPSB7fTtcbiBcdGludCBpLCBqO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcHJpdi1cdTAwM2VzdGF0c19uY2g7IGkrKykge1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgbmNoOyBpKyspIHtcbiBcdFx0c3RydWN0IG1seDVlX2NoYW5uZWxfc3RhdHMgKmNoYW5uZWxfc3RhdHM7XG4gXHRcdHN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqcnFfc3RhdHM7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuY1xuaW5kZXggZDZkYzdiY2U4NTVlMGIuLjMwNTc1MmRhYjdiZGY0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5jXG5AQCAtMTkwLDcgKzE5MCw3IEBAIG1seDVfaHZfdmhjYV9jb250cm9sX2FnZW50X2NyZWF0ZShzdHJ1Y3QgbWx4NV9odl92aGNhICpodl92aGNhKVxuIFx0cmV0dXJuIG1seDVfaHZfdmhjYV9hZ2VudF9jcmVhdGUoaHZfdmhjYSwgTUxYNV9IVl9WSENBX0FHRU5UX0NPTlRST0wsXG4gXHRcdFx0XHRcdCBOVUxMLFxuIFx0XHRcdFx0XHQgbWx4NV9odl92aGNhX2NvbnRyb2xfYWdlbnRfaW52YWxpZGF0ZSxcbi1cdFx0XHRcdFx0IE5VTEwsIE5VTEwpO1xuK1x0XHRcdFx0XHQgTlVMTCwgTlVMTCwgTlVMTCk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG1seDVfaHZfdmhjYV9jb250cm9sX2FnZW50X2Rlc3Ryb3koc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpXG5AQCAtMjU2LDcgKzI1Niw4IEBAIG1seDVfaHZfdmhjYV9hZ2VudF9jcmVhdGUoc3RydWN0IG1seDVfaHZfdmhjYSAqaHZfdmhjYSxcbiBcdFx0XHQgIHZvaWQgKCppbnZhbGlkYXRlKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50KixcbiBcdFx0XHRcdFx0ICAgICB1NjQgYmxvY2tfbWFzayksXG4gXHRcdFx0ICB2b2lkICgqY2xlYXVwKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCksXG4tXHRcdFx0ICB2b2lkICpwcml2KVxuK1x0XHRcdCAgdm9pZCAqcHJpdixcbitcdFx0XHQgIHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKipjdHhfdXBkYXRlKVxuIHtcbiBcdHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50O1xuIFxuQEAgLTI4NCw2ICsyODUsOSBAQCBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHN0cnVjdCBtbHg1X2h2X3ZoY2EgKmh2X3ZoY2EsXG4gXHRhZ2VudC1cdTAwM2VpbnZhbGlkYXRlID0gaW52YWxpZGF0ZTtcbiBcdGFnZW50LVx1MDAzZWNsZWFudXAgICA9IGNsZWF1cDtcbiBcbitcdGlmIChjdHhfdXBkYXRlKVxuK1x0XHRXUklURV9PTkNFKCpjdHhfdXBkYXRlLCBhZ2VudCk7XG4rXG4gXHRtdXRleF9sb2NrKFx1MDAyNmh2X3ZoY2EtXHUwMDNlYWdlbnRzX2xvY2spO1xuIFx0aHZfdmhjYS1cdTAwM2VhZ2VudHNbdHlwZV0gPSBhZ2VudDtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZodl92aGNhLVx1MDAzZWFnZW50c19sb2NrKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5oXG5pbmRleCBmMjQwZmZlNTExNmM1Yi4uOGIzOTc0Y2YwZWU0OWEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmhcbkBAIC00Myw3ICs0Myw4IEBAIG1seDVfaHZfdmhjYV9hZ2VudF9jcmVhdGUoc3RydWN0IG1seDVfaHZfdmhjYSAqaHZfdmhjYSxcbiBcdFx0XHQgIHZvaWQgKCppbnZhbGlkYXRlKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50KixcbiBcdFx0XHRcdFx0ICAgICB1NjQgYmxvY2tfbWFzayksXG4gXHRcdFx0ICB2b2lkICgqY2xlYW51cCkoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpLFxuLVx0XHRcdCAgdm9pZCAqY29udGV4dCk7XG4rXHRcdFx0ICB2b2lkICpjb250ZXh0LFxuK1x0XHRcdCAgc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqKmN0eF91cGRhdGUpO1xuIFxuIHZvaWQgbWx4NV9odl92aGNhX2FnZW50X2Rlc3Ryb3koc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpO1xuIGludCBtbHg1X2h2X3ZoY2FfYWdlbnRfd3JpdGUoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQsXG5AQCAtODQsNyArODUsOCBAQCBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHN0cnVjdCBtbHg1X2h2X3ZoY2EgKmh2X3ZoY2EsXG4gXHRcdFx0ICB2b2lkICgqaW52YWxpZGF0ZSkoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCosXG4gXHRcdFx0XHRcdCAgICAgdTY0IGJsb2NrX21hc2spLFxuIFx0XHRcdCAgdm9pZCAoKmNsZWFudXApKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50KSxcbi1cdFx0XHQgIHZvaWQgKmNvbnRleHQpXG4rXHRcdFx0ICB2b2lkICpjb250ZXh0LFxuK1x0XHRcdCAgc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqKmN0eF91cGRhdGUpXG4ge1xuIFx0cmV0dXJuIE5VTEw7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDg6NTM6MDIuMjg5NzIwNDI0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAwNzg0OTE5ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGZWFzaWJpbGl0eSBBc3Nlc3NtZW50OiBNZWxsYW5veCBtbHg1IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIE1lbGxhbm94IG1seDUgRXRoZXJuZXQgZHJpdmVyLiBJdCdzIHRvdWNoaW5nIGBwcml2LVx1MDAzZXN0YXRzX25jaGAgd2l0aCBgc21wX2xvYWRfYWNxdWlyZWAgYW5kIGBzbXBfc3RvcmVfcmVsZWFzZWAsIGFuZCB0aGVuIGl0J3MgbW9kaWZ5aW5nIGBtbHg1ZV9odl92aGNhX3N0YXRzX2NyZWF0ZWAsIGBtbHg1ZV9odl92aGNhX3N0YXRzX2Rlc3Ryb3lgLCBhbmQgYG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX21heF9zaXplYCBmb3IgdGhyZWFkIHNhZmV0eSBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuIFRoZSBmaWxlcyBhZmZlY3RlZCBhcmUgc2NhdHRlcmVkIGFjcm9zcyB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDVgIGRpcmVjdG9yeSBzdHJ1Y3R1cmU6IGBjb3JlL2VuL2h2X3ZoY2Ffc3RhdHMuY2AsIGBjb3JlL2VuX21haW4uY2AsIGBjb3JlL2VuX3N0YXRzLmNgLCBgY29yZS9pcG9pYi9pcG9pYi5jYCwgYW5kIGBjb3JlL2xpYi9odl92aGNhLmNgLlxuXG5UaGUgYmlnIHF1ZXN0aW9uIGlzOiBjYW4gSSBmdXp6IHRoaXMgZWZmZWN0aXZlbHk/IFRoaXMgaXMgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIENvbm5lY3RYLTQvNS82LzcsIHNvIEkga25vdyBJJ20gZGVhbGluZyB3aXRoIFBDSSBkZXZpY2VzIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHN0YW5kYXJkIFZNIGZ1enppbmcgd29uJ3QgY3V0IGl0LiBTeXprYWxsZXIgZG9lc24ndCBzZWVtIHRvIGhhdmUgZW11bGF0ZWQgTWVsbGFub3ggbWx4NSBoYXJkd2FyZSwgYW5kIHRoYXQncyB1c3VhbGx5IGEgZGVhbGJyZWFrZXIuIFVubGVzcyB0aGVyZSdzIGEgc3BlY2lmaWMgZW11bGF0aW9uIGxheWVyIG9yIGEgdmlydHVhbCBkcml2ZXIgZXF1aXZhbGVudCwgZHJpdmVycyBsaWtlIHRoZXNlIGFyZSBub3RvcmlvdXNseSBkaWZmaWN1bHQgdG8gdGFyZ2V0IHdpdGhvdXQgcmVhbCBoYXJkd2FyZSBvciBhIG1ldGhvZCBvZiBQQ0kgcGFzc3Rocm91Z2guXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGlzICphbnkqIHdheSB0byBydW4gdGhpcyBjb2RlIHdpdGhvdXQgZGlyZWN0IGhhcmR3YXJlIGFjY2Vzcy4gRG9lcyBzeXprYWxsZXIgaGF2ZSBhbiBhbHRlcm5hdGl2ZSB0byB0ZXN0IG1seDU/IFRoZSBvYnZpb3VzIGFuc3dlciBpcyBuby4gVGhpcyBkcml2ZXIgc2VlbXMgdG8gYmUgcHVyZWx5IHRpZWQgdG8gcGh5c2ljYWwgUENJIGRldmljZXMuIFdpdGhvdXQgdGhhdCBQQ0kgZGV2aWNlLCB0aGUgcHJvYmUgZnVuY3Rpb24gaXMgbmV2ZXIgY2FsbGVkLCBhbmQgdGhlIGRyaXZlciBjb2RlIGlzIG5ldmVyIGV4ZWN1dGVkIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudC4gVGhpcyBtZWFucyBjb2RlIHJlbGF0ZWQgdG8gYG1seDVlX2h2X3ZoY2Ffc3RhdHNfY3JlYXRlYCBjYW4ndCBiZSByZWFjaGVkLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBxdWlja2x5IGNoZWNrIGZvciBhbnkgc29mdHdhcmUgZW11bGF0aW9uLCBtb2NrIGltcGxlbWVudGF0aW9ucywgb3IgdmlydHVhbCBkcml2ZXIgY29tcG9uZW50cy4gSSB3aWxsIHVzZSBgZ3JlcHBlcmAgdG8gc2VhcmNoIHRocm91Z2ggdGhlIGNvZGViYXNlIGZvciBhbnl0aGluZyByZWxhdGVkIHRvIG1seDUgaW4gdGhlIGB0b29scy9gIG9yIGBkcml2ZXJzL2AgZGlyZWN0b3JpZXMuXG5cbkJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcsIHdpdGhvdXQgUENJIHBhc3N0aHJvdWdoLCB3aGljaCBpcyBvZnRlbiBjb21wbGV4IGFuZCByZXNvdXJjZS1pbnRlbnNpdmUsIGZ1enppbmcgdGhpcyBwYXRjaCBpbiBhIHR5cGljYWwgVk0gc2V0dXAgbG9va3MgaGlnaGx5IHVubGlrZWx5LiBNeSBhc3Nlc3NtZW50IGlzIHRoYXQgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxMTAsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwODo1MzoxMi4zNjgyMTU1MzhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkyOTQyMTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA5OTExMSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc9MTk9Y29uZmlnIE1MWDVfRlBHQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMjUtXFx0ICBhbmQgYW4gRlBHQSBjaGlwIG9uIG9uZSBib2FyZC4gSWYgeW91IHNlbGVjdCB0aGlzIG9wdGlvbiwgdGhlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MjY6XFx0ICBtbHg1X2NvcmUgZHJpdmVyIHdpbGwgaW5jbHVkZSB0aGUgSW5ub3ZhIEZQR0EgY29yZSBhbmQgYWxsb3cgYnVpbGRpbmdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0yNy1cXHQgIHNhbmRib3gtc3BlY2lmaWMgY2xpZW50IGRyaXZlcnMuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz03Nz1jb25maWcgTUxYNV9CUklER0VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTgxLVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzo4MjpcXHQgIG1seDUgQ29ubmVjdFggb2ZmbG9hZHMgc3VwcG9ydCBmb3IgRXRoZXJuZXQgQnJpZGdpbmcgKEJSSURHRSkuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctODMtXFx0ICBFbmFibGUgb2ZmbG9hZGluZyBGREIgcnVsZXMgZnJvbSBhIGJyaWRnZSBkZXZpY2UgY29udGFpbmluZ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjg0OlxcdCAgcmVwcmVzZW50b3JzIG9mIG1seDUgdXBsaW5rIGFuZCBWRiBwb3J0cy4gU3VwcG9ydHMgVkxBTnMgKHRydW5rIGFuZFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTg1LVxcdCAgYWNjZXNzIG1vZGVzKS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTg3PWNvbmZpZyBNTFg1X0NMU19BQ1RcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTkxLVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzo5MjpcXHQgIG1seDUgQ29ubmVjdFggb2ZmbG9hZHMgc3VwcG9ydCBmb3IgVEMgY2xhc3NpZmllciBhY3Rpb24gKE5FVF9DTFNfQUNUKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy05My1cXHQgIHdvcmtzIGluIGJvdGggbmF0aXZlIE5JQyBtb2RlIGFuZCBTd2l0Y2hkZXYgU1JJT1YgbW9kZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTIxMD1jb25maWcgTUxYNV9FTl9QU1BcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTIxNS1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MjE2OlxcdCAgbWx4NSBkZXZpY2Ugb2ZmbG9hZCBzdXBwb3J0IGZvciBHb29nbGUgUFNQIFNlY3VyaXR5IFByb3RvY29sIG9mZmxvYWQuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMjE3LVxcdCAgQWRkcyBzdXBwb3J0IGZvciBQU1AgZW5jcnlwdGlvbiBvZmZsb2FkIGFuZCBmb3IgU1BJIGFuZCBrZXkgZ2VuZXJhdGlvblxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTc9c3ViZGlyLWNjZmxhZ3MteSArPSAtSSQoc3JjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS04LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19NTFg1X0NPUkUpICs9IG1seDVfY29yZS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMS0jXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjEyOiMgbWx4NSBjb3JlIGJhc2ljXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEzLSNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MTQ6bWx4NV9jb3JlLXkgOj1cXHRtYWluLm8gY21kLm8gZGVidWdmcy5vIGZ3Lm8gZXEubyB1YXIubyBwYWdlYWxsb2MubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTE1LVxcdFxcdGhlYWx0aC5vIG1jZy5vIGNxLm8gYWxsb2MubyBwb3J0Lm8gbXIubyBwZC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0yNS0jXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjI2Om1seDVfY29yZS0kKENPTkZJR19NTFg1X0NPUkVfRU4pICs9IGVuL3JxdC5vIGVuL3Rpci5vIGVuL3Jzcy5vIGVuL3J4X3Jlcy5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMjctXFx0XFx0ZW4vY2hhbm5lbHMubyBlbl9tYWluLm8gZW5fY29tbW9uLm8gZW5fZnMubyBlbl9ldGh0b29sLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTM3LSNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6Mzg6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRU5fQVJGUykgICAgICs9IGVuX2FyZnMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTozOTptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9FTl9SWE5GQykgICAgKz0gZW5fZnNfZXRodG9vbC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjQwOm1seDVfY29yZS0kKENPTkZJR19NTFg1X0NPUkVfRU5fRENCKSArPSBlbl9kY2JubC5vIGVuL3BvcnRfYnVmZmVyLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6NDE6bWx4NV9jb3JlLSQoQ09ORklHX1BDSV9IWVBFUlZfSU5URVJGQUNFKSArPSBlbi9odl92aGNhX3N0YXRzLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6NDI6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRVNXSVRDSCkgICAgICs9IGxhZy9tcC5vIGxhZy9wb3J0X3NlbC5vIGxpYi9nZW5ldmUubyBsaWIvcG9ydF90dW4ubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTQzLVxcdFxcdFxcdFxcdFxcdGVuX3JlcC5vIGVuL3JlcC9ib25kLm8gZW4vbW9kX2hkci5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtNDQtXFx0XFx0XFx0XFx0XFx0ZW4vbWFwcGluZy5vIGxhZy9tcGVzdy5vIGxhZy9zaGFyZWRfZmRiLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6NDU6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQ0xTX0FDVCkgICAgICs9IGVuX3RjLm8gZW4vcmVwL3RjLm8gZW4vcmVwL25laWdoLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS00Ni1cXHRcXHRcXHRcXHRcXHRsaWIvZnNfY2hhaW5zLm8gZW4vdGNfdHVuLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo1MzptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DTFNfQUNUKSAgICAgKz0gZW4vdGMvYWN0L2FjdC5vIGVuL3RjL2FjdC9kcm9wLm8gZW4vdGMvYWN0L3RyYXAubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTU0LVxcdFxcdFxcdFxcdFxcdGVuL3RjL2FjdC9hY2NlcHQubyBlbi90Yy9hY3QvbWFyay5vIGVuL3RjL2FjdC9nb3RvLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTYxPWlmbmVxICgkKENPTkZJR19NTFg1X1RDX0NUKSwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjYyOlxcdG1seDVfY29yZS15XFx0XFx0XFx0ICAgICArPSBlbi90Y19jdC5vIGVuL3RjL2N0X2ZzX2RtZnMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo2MzpcXHRtbHg1X2NvcmUtJChDT05GSUdfTUxYNV9TV19TVEVFUklORykgKz0gZW4vdGMvY3RfZnNfc21mcy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjY0OlxcdG1seDVfY29yZS0kKENPTkZJR19NTFg1X0hXX1NURUVSSU5HKSArPSBlbi90Yy9jdF9mc19obWZzLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtNjUtZW5kaWZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtNjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjY3Om1seDVfY29yZS0kKENPTkZJR19NTFg1X1RDX1NBTVBMRSkgICArPSBlbi90Yy9zYW1wbGUub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS02OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS03MS0jXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjcyOm1seDVfY29yZS0kKENPTkZJR19NTFg1X0VTV0lUQ0gpICAgKz0gZXN3aXRjaC5vIGVzd2l0Y2hfb2ZmbG9hZHMubyBlc3dpdGNoX29mZmxvYWRzX3Rlcm10YmwubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTczLVxcdFxcdFxcdFxcdCAgICAgIGVjcGYubyByZG1hLm8gZXN3L2xlZ2FjeS5vIGVzdy9hZGpfdnBvcnQubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtNzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjc2Om1seDVfY29yZS0kKENPTkZJR19NTFg1X0VTV0lUQ0gpICAgKz0gZXN3L2FjbC9oZWxwZXIubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTc3LVxcdFxcdFxcdFxcdCAgICAgIGVzdy9hY2wvZWdyZXNzX2xnY3kubyBlc3cvYWNsL2VncmVzc19vZmxkLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTgwPWlmbmVxICgkKENPTkZJR19NTFg1X0VOX0lQU0VDKSwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjgxOlxcdG1seDVfY29yZS0kKENPTkZJR19NTFg1X0VTV0lUQ0gpICAgKz0gZXN3L2lwc2VjX2ZzLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtODItZW5kaWZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjg0Om1seDVfY29yZS0kKENPTkZJR19NTFg1X0JSSURHRSkgICAgKz0gZXN3L2JyaWRnZS5vIGVzdy9icmlkZ2VfbWNhc3QubyBlc3cvYnJpZGdlX2RlYnVnZnMubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTg1LVxcdFxcdFxcdFxcdCAgICAgIGVuL3JlcC9icmlkZ2Uub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS04Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6ODc6bWx4NV9jb3JlLSQoQ09ORklHX0hXTU9OKSAgICAgICAgICArPSBod21vbi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjg4Om1seDVfY29yZS0kKENPTkZJR19NTFg1X01QRlMpICAgICAgKz0gbGliL21wZnMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS04OS1pZm5lcSAoJChDT05GSUdfVlhMQU4pLClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6OTA6XFx0bWx4NV9jb3JlLXlcXHRcXHQgICArPSBsaWIvdnhsYW4ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS05MS1lbmRpZlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5MjptbHg1X2NvcmUtJChDT05GSUdfUFRQXzE1ODhfQ0xPQ0spICs9IGxpYi9jbG9jay5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjkzOm1seDVfY29yZS0kKENPTkZJR19QQ0lfSFlQRVJWX0lOVEVSRkFDRSkgKz0gbGliL2h2Lm8gbGliL2h2X3ZoY2Eub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS05NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS05Ny0jXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjk4Om1seDVfY29yZS0kKENPTkZJR19NTFg1X0NPUkVfSVBPSUIpICs9IGlwb2liL2lwb2liLm8gaXBvaWIvZXRodG9vbC5vIGlwb2liL2lwb2liX3ZsYW4ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS05OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMDItI1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxMDM6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRlBHQSkgKz0gZnBnYS9jbWQubyBmcGdhL2NvcmUubyBmcGdhL2Nvbm4ubyBmcGdhL3Nkay5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MTA1Om1seDVfY29yZS0kKENPTkZJR19NTFg1X01BQ1NFQykgKz0gZW5fYWNjZWwvbWFjc2VjLm8gbGliL21hY3NlY19mcy5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTA2LVxcdFxcdFxcdFxcdCAgICAgIGVuX2FjY2VsL21hY3NlY19zdGF0cy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEwNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MTA4Om1seDVfY29yZS0kKENPTkZJR19NTFg1X0VOX0lQU0VDKSArPSBlbl9hY2NlbC9pcHNlYy5vIGVuX2FjY2VsL2lwc2VjX3J4dHgubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEwOS1cXHRcXHRcXHRcXHQgICAgIGVuX2FjY2VsL2lwc2VjX3N0YXRzLm8gZW5fYWNjZWwvaXBzZWNfZnMubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxMTI6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRU5fVExTKSArPSBlbl9hY2NlbC9rdGxzX3N0YXRzLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMTMtXFx0XFx0XFx0XFx0ICAgZW5fYWNjZWwvZnNfdGNwLm8gZW5fYWNjZWwva3Rscy5vIGVuX2FjY2VsL2t0bHNfdHhyeC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjExNjptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9FTl9QU1ApICs9IGVuX2FjY2VsL3BzcC5vIGVuX2FjY2VsL3BzcF9yeHR4Lm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEyMC0jXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjEyMTptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9TV19TVEVFUklORykgKz0gc3RlZXJpbmcvc3dzL2RyX2RvbWFpbi5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTIyLVxcdFxcdFxcdFxcdFxcdHN0ZWVyaW5nL3N3cy9kcl90YWJsZS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xNDUtI1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxNDY6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfSFdfU1RFRVJJTkcpICs9IHN0ZWVyaW5nL2h3cy9jbWQubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTE0Ny1cXHRcXHRcXHRcXHRcXHRzdGVlcmluZy9od3MvY29udGV4dC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xNjctI1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxNjg6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfU0YpICs9IHNmL3ZoY2FfZXZlbnQubyBzZi9kZXYvZGV2Lm8gc2YvZGV2L2RyaXZlci5vIGlycV9hZmZpbml0eS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTE2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xNzItI1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxNzM6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfU0ZfTUFOQUdFUikgKz0gc2YvY21kLm8gc2YvaHdfdGFibGUubyBzZi9kZXZsaW5rLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTE3Ny0jXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjE3ODptbHg1X2NvcmUtJChDT05GSUdfUENJRV9UUEgpICs9IGxpYi9zdC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTE3OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MTgwOm9iai0kKENPTkZJR19NTFg1X0RQTEwpICs9IG1seDVfZHBsbC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjE4MTptbHg1X2RwbGwteSA6PVxcdGRwbGwub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDItI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NlcV9maWxlLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDM6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21seDUvZHJpdmVyLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDU6I2luY2x1ZGUgXFxcIm1seDVfY29yZS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTE6c3RydWN0IG1seDVfZGJfcGdkaXIge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUyLVxcdHN0cnVjdCBsaXN0X2hlYWRcXHRsaXN0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTg6c3RydWN0IG1seDVfZG1hX3Bvb2wge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTU5LVxcdC8qIFByb3RlY3RzIHBhZ2VfbGlzdCBhbmQgcGVyLXBhZ2UgYWxsb2NhdGlvbiBiaXRtYXBzLiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNjEtXFx0c3RydWN0IGxpc3RfaGVhZCBwYWdlX2xpc3Q7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NjI6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy02My1cXHRpbnQgbm9kZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjY3OnN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjY4OlxcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTY5LVxcdHN0cnVjdCBsaXN0X2hlYWQgcG9vbF9saW5rO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NzU6c3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NzY6XFx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2xzW01MWDVfRlJBR19CVUZfUE9PTFNfTlVNXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy03Ny19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjc5OnN0cnVjdCBtbHg1X2RtYV9wb29sX3N0YXRzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy04MC1cXHRpbnQgbm9kZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjkwOnN0YXRpYyB2b2lkICptbHg1X2RtYV96YWxsb2NfY29oZXJlbnRfbm9kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTkxLVxcdFxcdFxcdFxcdFxcdCAgIHNpemVfdCBzaXplLCBkbWFfYWRkcl90ICpkbWFfaGFuZGxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtOTMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjk0OlxcdHN0cnVjdCBkZXZpY2UgKmRldmljZSA9IG1seDVfY29yZV9kbWFfZGV2KGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6OTU6XFx0c3RydWN0IG1seDVfcHJpdiAqcHJpdiA9IFxcdTAwMjZkZXYtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtOTYtXFx0aW50IG9yaWdpbmFsX25vZGU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTA5OnN0YXRpYyB2b2lkIG1seDVfZG1hX3Bvb2xfZGVzdHJveShzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjExNTpzdGF0aWMgc3RydWN0IG1seDVfZG1hX3Bvb2wgKm1seDVfZG1hX3Bvb2xfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTE2LVxcdFxcdFxcdFxcdFxcdFxcdCAgaW50IG5vZGUsIHU4IGJsb2NrX3NoaWZ0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTExNy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTE4OlxcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTExOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTEzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxMzI6c3RhdGljIHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjEzMzptbHg1X2RtYV9wb29sX3BhZ2VfYWxsb2Moc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTM0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMzUtXFx0aW50IGJsb2Nrc19wZXJfcGFnZSA9IEJJVChQQUdFX1NISUZUIC0gcG9vbC1cXHUwMDNlYmxvY2tfc2hpZnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjEzNjpcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTEzNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE0Ny1cXHRiaXRtYXBfZmlsbChwYWdlLVxcdTAwM2ViaXRtYXAsIGJsb2Nrc19wZXJfcGFnZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTQ4OlxcdHBhZ2UtXFx1MDAzZWJ1ZiA9IG1seDVfZG1hX3phbGxvY19jb2hlcmVudF9ub2RlKHBvb2wtXFx1MDAzZWRldiwgUEFHRV9TSVpFLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE0OS1cXHRcXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZwYWdlLVxcdTAwM2VkbWEsIHBvb2wtXFx1MDAzZW5vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE2MzpzdGF0aWMgdm9pZCBtbHg1X2RtYV9wb29sX3BhZ2VfZnJlZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE2NDpcXHRcXHRcXHRcXHQgICAgc3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xNjUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE2NjpcXHRkbWFfZnJlZV9jb2hlcmVudChtbHg1X2NvcmVfZG1hX2RldihkZXYpLCBQQUdFX1NJWkUsIHBhZ2UtXFx1MDAzZWJ1ZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xNjctXFx0XFx0XFx0ICBwYWdlLVxcdTAwM2VkbWEpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE3MjpzdGF0aWMgaW50IG1seDVfZG1hX3Bvb2xfYWxsb2NfZnJvbV9wYWdlKHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE3MzpcXHRcXHRcXHRcXHRcXHQgc3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xNzQtXFx0XFx0XFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgKmlkeF9vdXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTkwOnN0YXRpYyBzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxOTE6bWx4NV9kbWFfcG9vbF9hbGxvYyhzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCwgdW5zaWduZWQgbG9uZyAqaWR4X291dClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xOTIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE5MzpcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE5NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE5Ny1cXHRwYWdlID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFxcdTAwMjZwb29sLVxcdTAwM2VwYWdlX2xpc3QsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTk4OlxcdFxcdFxcdFxcdFxcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UsIHBvb2xfbGluayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTk5OlxcdGlmIChwYWdlIFxcdTAwMjZcXHUwMDI2ICFtbHg1X2RtYV9wb29sX2FsbG9jX2Zyb21fcGFnZShwb29sLCBwYWdlLCBpZHhfb3V0KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMDAtXFx0XFx0Z290byB1bmxvY2s7IC8qIHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgZnJvbSBleGlzdGluZyBwYWdlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjIwMjpcXHRwYWdlID0gbWx4NV9kbWFfcG9vbF9wYWdlX2FsbG9jKHBvb2wpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIwMy1cXHRpZiAoIXBhZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMDYtXFx0bGlzdF9hZGQoXFx1MDAyNnBhZ2UtXFx1MDAzZXBvb2xfbGluaywgXFx1MDAyNnBvb2wtXFx1MDAzZXBhZ2VfbGlzdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjA3OlxcdG1seDVfZG1hX3Bvb2xfYWxsb2NfZnJvbV9wYWdlKHBvb2wsIHBhZ2UsIGlkeF9vdXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIwOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIxMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyMTQ6c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbF9mcmVlKHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjIxNTpcXHRcXHRcXHQgICAgICAgc3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMTYtXFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjI2LVxcdFxcdGxpc3RfZGVsKFxcdTAwMjZwYWdlLVxcdTAwM2Vwb29sX2xpbmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjIyNzpcXHRcXHRtbHg1X2RtYV9wb29sX3BhZ2VfZnJlZShwb29sLVxcdTAwM2VkZXYsIHBhZ2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIyOC1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjIzNzpzdGF0aWMgdm9pZCBtbHg1X2RtYV9wb29sX2RlYnVnZnNfZ2V0X3N0YXRzKHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjIzODpcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IG1seDVfZG1hX3Bvb2xfc3RhdHMgKnN0YXRzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIzOS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjQwLVxcdGludCBibG9ja3NfcGVyX3BhZ2UgPSBCSVQoUEFHRV9TSElGVCAtIHBvb2wtXFx1MDAzZWJsb2NrX3NoaWZ0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyNDE6XFx0c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yNDItXFx0c2l6ZV90IGZyZWVfYmxvY2tzID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyNTg6c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbF9kZWJ1Z2ZzX3N0YXRzX3ByaW50KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyNTk6XFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjYwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyNjE6XFx0c3RydWN0IG1seDVfZG1hX3Bvb2xfc3RhdHMgc3RhdHMgPSB7fTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjYzOlxcdG1seDVfZG1hX3Bvb2xfZGVidWdmc19nZXRfc3RhdHMocG9vbCwgXFx1MDAyNnN0YXRzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yNjQtXFx0c2VxX3ByaW50ZihmaWxlLCBcXFwiJTRkICAgICAgICU1enUgICAgICAlN3p1ICAgICAgICAgICAlN3p1XFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjY4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI2OTpzdGF0aWMgdm9pZCBtbHg1X2RtYV9wb29sc19kZWJ1Z2ZzX3ByaW50X2hlYWRlcihzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjcwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTI3ND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI3NTptbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHNfZGVzdHJveShzdHJ1Y3QgbWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzICpub2RlX3Bvb2xzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI3Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yNzgtXFx0XFx0aWYgKG5vZGVfcG9vbHMtXFx1MDAzZXBvb2xzW2ldKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI3OTpcXHRcXHRcXHRtbHg1X2RtYV9wb29sX2Rlc3Ryb3kobm9kZV9wb29scy1cXHUwMDNlcG9vbHNbaV0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI4MC1cXHRrZnJlZShub2RlX3Bvb2xzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyODM6c3RhdGljIHN0cnVjdCBtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHMgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI4NDptbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHNfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBub2RlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI4NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6Mjg2OlxcdHN0cnVjdCBtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHMgKm5vZGVfcG9vbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI5NTpcXHRcXHRub2RlX3Bvb2xzLVxcdTAwM2Vwb29sc1tpXSA9IG1seDVfZG1hX3Bvb2xfY3JlYXRlKGRldiwgbm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yOTYtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIGJsb2NrX3NoaWZ0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yOTctXFx0XFx0aWYgKCFub2RlX3Bvb2xzLVxcdTAwM2Vwb29sc1tpXSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI5ODpcXHRcXHRcXHRtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHNfZGVzdHJveShub2RlX3Bvb2xzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yOTktXFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0zMDY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjMwNzptbHg1X2ZyYWdfYnVmX2RtYV9wb29sc19kZWJ1Z2ZzX3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMwOC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzA5OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMxMC1cXHRpbnQgbm9kZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzEyOlxcdG1seDVfZG1hX3Bvb2xzX2RlYnVnZnNfcHJpbnRfaGVhZGVyKGZpbGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMxNy1cXHRmb3JfZWFjaF9ub2RlX3N0YXRlKG5vZGUsIE5fUE9TU0lCTEUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozMTg6XFx0XFx0c3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scyAqbm9kZV9wb29scztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMjQtXFx0XFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBNTFg1X0ZSQUdfQlVGX1BPT0xTX05VTTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzI1OlxcdFxcdFxcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sID0gbm9kZV9wb29scy1cXHUwMDNlcG9vbHNbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzI2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjMzMDpcXHRcXHRcXHRtbHg1X2RtYV9wb29sX2RlYnVnZnNfc3RhdHNfcHJpbnQoZmlsZSwgcG9vbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzMxLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMzNS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzM2OkRFRklORV9TSE9XX0FUVFJJQlVURShtbHg1X2ZyYWdfYnVmX2RtYV9wb29sc19kZWJ1Z2ZzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzM4OnZvaWQgbWx4NV9mcmFnX2J1Zl9wb29sc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzM5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozNDA6XFx0c3RydWN0IG1seDVfcHJpdiAqcHJpdiA9IFxcdTAwMjZkZXYtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzQxLVxcdGludCBub2RlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzQ2LVxcdGZvcl9lYWNoX25vZGVfc3RhdGUobm9kZSwgTl9QT1NTSUJMRSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM0NzpcXHRcXHRzdHJ1Y3QgbWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzICpub2RlX3Bvb2xzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM0OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM1MS1cXHRcXHRcXHRjb250aW51ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozNTI6XFx0XFx0bWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzX2Rlc3Ryb3kobm9kZV9wb29scyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzUzLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozNTk6aW50IG1seDVfZnJhZ19idWZfcG9vbHNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM2MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzYxOlxcdHN0cnVjdCBtbHg1X3ByaXYgKnByaXYgPSBcXHUwMDI2ZGV2LVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM2Mi1cXHRpbnQgbm9kZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM2OS1cXHRmb3JfZWFjaF9ub2RlX3N0YXRlKG5vZGUsIE5fUE9TU0lCTEUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozNzA6XFx0XFx0c3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scyAqbm9kZV9wb29scztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zNzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzcyOlxcdFxcdG5vZGVfcG9vbHMgPSBtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHNfY3JlYXRlKGRldiwgbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzczLVxcdFxcdGlmICghbm9kZV9wb29scykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM3NDpcXHRcXHRcXHRtbHg1X2ZyYWdfYnVmX3Bvb2xzX2NsZWFudXAoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zNzUtXFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zODItXFx0XFx0XFx0XFx0ICAgIHByaXYtXFx1MDAzZWRiZy5kYmdfcm9vdCwgZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM4MzpcXHRcXHRcXHRcXHQgICAgXFx1MDAyNm1seDVfZnJhZ19idWZfZG1hX3Bvb2xzX2RlYnVnZnNfZm9wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM4ODppbnQgbWx4NV9mcmFnX2J1Zl9hbGxvY19ub2RlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBzaXplLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM4OTpcXHRcXHRcXHQgICAgIHN0cnVjdCBtbHg1X2ZyYWdfYnVmICpidWYsIGludCBub2RlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM5MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzkxOlxcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM5Mi1cXHRpbnQgcG9vbF9pZHg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MDgtXFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBidWYtXFx1MDAzZW5wYWdlczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDA5OlxcdFxcdHN0cnVjdCBtbHg1X2J1Zl9saXN0ICpmcmFnID0gXFx1MDAyNmJ1Zi1cXHUwMDNlZnJhZ3NbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDEwOlxcdFxcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDExLVxcdFxcdHVuc2lnbmVkIGxvbmcgaWR4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0MTM6XFx0XFx0cGFnZSA9IG1seDVfZG1hX3Bvb2xfYWxsb2MocG9vbCwgXFx1MDAyNmlkeCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDE0LVxcdFxcdGlmICghcGFnZSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQxNTpcXHRcXHRcXHRtbHg1X2ZyYWdfYnVmX2ZyZWUoZGV2LCBidWYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQxNi1cXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQyNC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDI1OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfZnJhZ19idWZfYWxsb2Nfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQyNzp2b2lkIG1seDVfZnJhZ19idWZfZnJlZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9mcmFnX2J1ZiAqYnVmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQyOC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDI5LVxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgYnVmLVxcdTAwM2VucGFnZXM7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQzMDpcXHRcXHRzdHJ1Y3QgbWx4NV9idWZfbGlzdCAqZnJhZyA9IFxcdTAwMjZidWYtXFx1MDAzZWZyYWdzW2ldO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQzMTpcXHRcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQzMjpcXHRcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MzMtXFx0XFx0dW5zaWduZWQgbG9uZyBpZHg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00NDAtXFx0XFx0aWR4ID0gKGZyYWctXFx1MDAzZW1hcCAtIHBhZ2UtXFx1MDAzZWRtYSkgXFx1MDAzZVxcdTAwM2UgcG9vbC1cXHUwMDNlYmxvY2tfc2hpZnQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDQxOlxcdFxcdG1seDVfZG1hX3Bvb2xfZnJlZShwb29sLCBwYWdlLCBpZHgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ0Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00NDQtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ0NTpFWFBPUlRfU1lNQk9MX0dQTChtbHg1X2ZyYWdfYnVmX2ZyZWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ0Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NDc6c3RhdGljIHN0cnVjdCBtbHg1X2RiX3BnZGlyICptbHg1X2FsbG9jX2RiX3BnZGlyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDQ4LVxcdFxcdFxcdFxcdFxcdFxcdCBpbnQgbm9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ1MC1cXHR1MzIgZGJfcGVyX3BhZ2UgPSBQQUdFX1NJWkUgLyBjYWNoZV9saW5lX3NpemUoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NTE6XFx0c3RydWN0IG1seDVfZGJfcGdkaXIgKnBnZGlyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NjU6XFx0cGdkaXItXFx1MDAzZWRiX3BhZ2UgPSBtbHg1X2RtYV96YWxsb2NfY29oZXJlbnRfbm9kZShkZXYsIFBBR0VfU0laRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00NjYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZwZ2Rpci1cXHUwMDNlZGJfZG1hLCBub2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NzY6c3RhdGljIGludCBtbHg1X2FsbG9jX2RiX2Zyb21fcGdkaXIoc3RydWN0IG1seDVfZGJfcGdkaXIgKnBnZGlyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ3NzpcXHRcXHRcXHRcXHQgICAgc3RydWN0IG1seDVfZGIgKmRiKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ3OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTAxOmludCBtbHg1X2RiX2FsbG9jX25vZGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZGIgKmRiLCBpbnQgbm9kZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MDIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUwMzpcXHRzdHJ1Y3QgbWx4NV9kYl9wZ2RpciAqcGdkaXI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTA0LVxcdGludCByZXQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTA4LVxcdGxpc3RfZm9yX2VhY2hfZW50cnkocGdkaXIsIFxcdTAwMjZkZXYtXFx1MDAzZXByaXYucGdkaXJfbGlzdCwgbGlzdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MDk6XFx0XFx0aWYgKCFtbHg1X2FsbG9jX2RiX2Zyb21fcGdkaXIocGdkaXIsIGRiKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MTAtXFx0XFx0XFx0Z290byBvdXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUxMjpcXHRwZ2RpciA9IG1seDVfYWxsb2NfZGJfcGdkaXIoZGV2LCBub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MTMtXFx0aWYgKCFwZ2Rpcikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTIwLVxcdC8qIFRoaXMgc2hvdWxkIG5ldmVyIGZhaWwgLS0gd2UganVzdCBhbGxvY2F0ZWQgYW4gZW1wdHkgcGFnZTogKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MjE6XFx0V0FSTl9PTihtbHg1X2FsbG9jX2RiX2Zyb21fcGdkaXIocGdkaXIsIGRiKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTIyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTI3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1Mjg6RVhQT1JUX1NZTUJPTF9HUEwobWx4NV9kYl9hbGxvY19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTMwOnZvaWQgbWx4NV9kYl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MzEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTM4LVxcdGlmIChiaXRtYXBfZnVsbChkYi1cXHUwMDNldS5wZ2Rpci1cXHUwMDNlYml0bWFwLCBkYl9wZXJfcGFnZSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1Mzk6XFx0XFx0ZG1hX2ZyZWVfY29oZXJlbnQobWx4NV9jb3JlX2RtYV9kZXYoZGV2KSwgUEFHRV9TSVpFLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTU0MC1cXHRcXHRcXHRcXHQgIGRiLVxcdTAwM2V1LnBnZGlyLVxcdTAwM2VkYl9wYWdlLCBkYi1cXHUwMDNldS5wZ2Rpci1cXHUwMDNlZGJfZG1hKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTU0Ny19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTQ4OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfZGJfZnJlZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjU1MDp2b2lkIG1seDVfZmlsbF9wYWdlX2ZyYWdfYXJyYXlfcGVybShzdHJ1Y3QgbWx4NV9mcmFnX2J1ZiAqYnVmLCBfX2JlNjQgKnBhcywgdTggcGVybSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01NTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTU3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1NTg6RVhQT1JUX1NZTUJPTF9HUEwobWx4NV9maWxsX3BhZ2VfZnJhZ19hcnJheV9wZXJtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01NTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTYwOnZvaWQgbWx4NV9maWxsX3BhZ2VfZnJhZ19hcnJheShzdHJ1Y3QgbWx4NV9mcmFnX2J1ZiAqYnVmLCBfX2JlNjQgKnBhcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01NjEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjU2MjpcXHRtbHg1X2ZpbGxfcGFnZV9mcmFnX2FycmF5X3Blcm0oYnVmLCBwYXMsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTU2My19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTY0OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfZmlsbF9wYWdlX2ZyYWdfYXJyYXkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTM5LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9yYW5kb20uaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6NDA6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21seDUvZHJpdmVyLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjQxOiNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbHg1L2VxLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTQyLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZWJ1Z2ZzLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTQzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo0NDojaW5jbHVkZSBcXFwibWx4NV9jb3JlLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTQ1LSNpbmNsdWRlIFxcXCJsaWIvZXEuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy00OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6NTA6c3RydWN0IG1seDVfaWZjX21ib3hfb3V0X2JpdHMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy01MS1cXHR1OCAgICAgICAgIHN0YXR1c1sweDhdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo1OTpzdHJ1Y3QgbWx4NV9pZmNfbWJveF9pbl9iaXRzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtNjAtXFx0dTggICAgICAgICBvcGNvZGVbMHgxMF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9OTc9c3RhdGljIHUxNiBpbl90b191aWQodm9pZCAqaW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTA0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxMDU6c3RhdGljIGJvb2wgbWx4NV9jbWRfaXNfdGhyb3R0bGVfb3Bjb2RlKHUxNiBvcClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTA2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjExODpzdGF0aWMgc3RydWN0IG1seDVfY21kX3dvcmtfZW50ICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTE5OmNtZF9hbGxvY19lbnQoc3RydWN0IG1seDVfY21kICpjbWQsIHN0cnVjdCBtbHg1X2NtZF9tc2cgKmluLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxMjA6XFx0ICAgICAgc3RydWN0IG1seDVfY21kX21zZyAqb3V0LCB2b2lkICp1b3V0LCBpbnQgdW91dF9zaXplLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxMjE6XFx0ICAgICAgbWx4NV9jbWRfY2JrX3QgY2JrLCB2b2lkICpjb250ZXh0LCBpbnQgcGFnZV9xdWV1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTIyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTIzLVxcdGdmcF90IGFsbG9jX2ZsYWdzID0gY2JrID8gR0ZQX0FUT01JQyA6IEdGUF9LRVJORUw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjEyNDpcXHRzdHJ1Y3QgbWx4NV9jbWRfd29ya19lbnQgKmVudDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTI1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTQ1OnN0YXRpYyB2b2lkIGNtZF9mcmVlX2VudChzdHJ1Y3QgbWx4NV9jbWRfd29ya19lbnQgKmVudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE1MDpzdGF0aWMgdTggYWxsb2NfdG9rZW4oc3RydWN0IG1seDVfY21kICpjbWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNjQ6c3RhdGljIGludCBjbWRfYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY21kICpjbWQsIHN0cnVjdCBtbHg1X2NtZF93b3JrX2VudCAqZW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTgxOnN0YXRpYyB2b2lkIGNtZF9mcmVlX2luZGV4KHN0cnVjdCBtbHg1X2NtZCAqY21kLCBpbnQgaWR4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xODIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTg4OnN0YXRpYyB2b2lkIGNtZF9lbnRfZ2V0KHN0cnVjdCBtbHg1X2NtZF93b3JrX2VudCAqZW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xODkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTkzOnN0YXRpYyB2b2lkIGNtZF9lbnRfcHV0KHN0cnVjdCBtbHg1X2NtZF93b3JrX2VudCAqZW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xOTQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxOTU6XFx0c3RydWN0IG1seDVfY21kICpjbWQgPSBlbnQtXFx1MDAzZWNtZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTk2LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTM6c3RhdGljIHN0cnVjdCBtbHg1X2NtZF9sYXlvdXQgKmdldF9pbnN0KHN0cnVjdCBtbHg1X2NtZCAqY21kLCBpbnQgaWR4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjE4OnN0YXRpYyBpbnQgbWx4NV9jYWxjX2NtZF9ibG9ja3Moc3RydWN0IG1seDVfY21kX21zZyAqbXNnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTIyNj1zdGF0aWMgdTggeG9yOF9idWYodm9pZCAqYnVmLCBzaXplX3Qgb2Zmc2V0LCBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIzOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjM5OnN0YXRpYyBpbnQgdmVyaWZ5X2Jsb2NrX3NpZyhzdHJ1Y3QgbWx4NV9jbWRfcHJvdF9ibG9jayAqYmxvY2spXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI0MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjI0MTpcXHRzaXplX3QgcnN2ZDBfb2ZmID0gb2Zmc2V0b2Yoc3RydWN0IG1seDVfY21kX3Byb3RfYmxvY2ssIHJzdmQwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjQyLVxcdGludCB4b3JfbGVuID0gc2l6ZW9mKCpibG9jaykgLSBzaXplb2YoYmxvY2stXFx1MDAzZWRhdGEpIC0gMTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNTItXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA4OjUzOjEzLjA2MTE2OTAxMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MjU4MjI3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtbHg1IERyaXZlcioqXG5cbk9rYXksIHNvIHRoZSB0ZXh0IGNvbmZpcm1zIHRoaXMgaXMgYSBoYXJkd2FyZSBkcml2ZXIsIG5vdCBzb21ldGhpbmcgc3l6a2FsbGVyJ3MgZW11bGF0aW5nLiBHb29kLCB0aGF0IGVsaW1pbmF0ZXMgYSBwb3NzaWJpbGl0eS4gTm93LCBsZXQncyBkaWcgYSBsaXR0bGUgZGVlcGVyLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uY2AgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IHNvcnQgb2Ygc29mdHdhcmUgaW50ZXJmYWNlIGludm9sdmVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGludGVyYWN0cyBzb2xlbHkgdGhyb3VnaCBQQ0ksIG9yIGlmIHRoZXJlJ3Mgc29tZSBpbnRlcm5hbCBzb2Z0d2FyZSBhc3BlY3QuIEFoLCB0aGUgYG1seDVfY29yZWAgZHJpdmVyICpkb2VzKiBiaW5kIHRvIFBDSSBkZXZpY2VzLCB3aGljaCBpc24ndCBlbnRpcmVseSB1bmV4cGVjdGVkLiBCdXQgdGhhdCBicmluZ3MgdXAgYW5vdGhlciBxdWVzdGlvbjogaXMgdGhlcmUgYW55IHZpcnR1YWwgYnVzIG1lY2hhbmlzbSB0aGF0IHRoaXMgZHJpdmVyIHV0aWxpemVzLCBwZXJoYXBzIHRvIGhhbmRsZSByZXNvdXJjZSBhbGxvY2F0aW9uIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBJJ2xsIHF1aWNrbHkgY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmNgIHRvIHNlZSBpZiBpdCBwcm92aWRlcyBhbnkgY2x1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMjkyLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA4OjUzOjE3Ljg4Njk5NTMwNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTIyMDA3OTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTIzNDM9c3RhdGljIGludCBfX2luaXQgbWx4NV9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoyMzYzOlxcdGVyciA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNm1seDVfY29yZV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjM2NC1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwODo1MzoxOC4xOTkyMTAwNjZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTA5NTc0Njc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQWNjZXNzaWJpbGl0eSBvZiBUaGlzIENvZGUgU25pcHBldCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQsIHllYWgsIGl0J3MgZGVmaW5pdGVseSBhIFBDSSBkcml2ZXIsIHNwZWNpZmljYWxseSBvbmUgcmVsYXRlZCB0byBNZWxsYW5veCBoYXJkd2FyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gSSByZWFjaCB0aGlzIGNvZGUgdmlhIHNvbWV0aGluZyBsaWtlIG5ldGxpbmssIG9yIGEgbW9yZSBhYnN0cmFjdGVkIGludGVyZmFjZSwgd2l0aG91dCBhY3R1YWxseSBoYXZpbmcgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHByZXNlbnQ/IEJlY2F1c2UsIGlkZWFsbHksIEknZCB3YW50IHRvIHRlc3QgaXQgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LlxuXG5VbmZvcnR1bmF0ZWx5LCBuby4gVGhlIGBtbHg1ZV9wcml2YCBzdHJ1Y3R1cmUsIHdoaWNoIEkgYXNzdW1lIGlzIGNlbnRyYWwgdG8gdGhpcyB3aG9sZSB0aGluZywgZ2V0cyBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkIGR1cmluZyB0aGUgUENJIGRldmljZSBwcm9iZS4gV2l0aG91dCB0aGUgaGFyZHdhcmUsIHRoZSBkcml2ZXIgZG9lc24ndCBnZXQgcHJvYmVkLCBtZWFuaW5nIHRoYXQgYHByaXZgIHN0cnVjdHVyZSBzaW1wbHkgd29uJ3QgZXhpc3QuIEluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQg4oCTIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIFFFTVUg4oCTIEknbSBwcmV0dHkgY29uZmlkZW50IHRoYXQgdGhlIG1vZGlmaWVkIGNvZGUgd291bGQgYmUgdW5yZWFjaGFibGUgd2l0aG91dCBkb2luZyBQQ0kgcGFzc3Rocm91Z2guIFNvLCBiYXNlZCBvbiB0aGF0LCB0aGUgZnV6emluZyBwb3RlbnRpYWwgaGVyZSBzZWVtcyBsb3cuIExldCdzIG1hcmsgYFdvcnRoRnV6emluZz1mYWxzZWAgZm9yIG5vdy5cblxuQnV0IHdhaXQgYSBtaW51dGUuLi4gY291bGQgdGhpcyBzb21laG93IGJlIGFjY2Vzc2VkIHRocm91Z2ggc29tZXRoaW5nIGxpa2UgYG5ldGRldnNpbWAsIG9yIHNvbWUgb3RoZXIgc29ydCBvZiBtb2NrIGRldmljZSBkcml2ZXI/IE5vLCBgbmV0ZGV2c2ltYCBpcyBhIGNvbXBsZXRlbHkgc2VwYXJhdGUgZHJpdmVyLCBzbyB0aGF0IHdvdWxkbid0IHdvcmsuIEhtbW0sIGxldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayBpZiB0aGVyZSdzIGFueSBzb3J0IG9mIGBtbHg1YCBtb2NrIGRyaXZlciBwcmVzZW50IGluIHRoZSBrZXJuZWwuIFRoaXMgbmVlZHMgYSBsaXR0bGUgZGVlcGVyIGRpdmUsIGFzIGEgZGVkaWNhdGVkIG1vY2sgY291bGQgYmUgdGhlIGtleSB0byBjb250cm9sbGVkIGZ1enppbmcuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzgwMSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwODo1MzoyMy43MDg3ODc5NTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQyMTg2MDQyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1X2NvcmVfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTIyNjU9aW50IG1seDVfcmVjb3Zlcl9kZXZpY2Uoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjI3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjIyNzY6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1seDVfY29yZV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMjc3LVxcdC5uYW1lICAgICAgICAgICA9IEtCVUlMRF9NT0ROQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0yMzAxPXN0cnVjdCBtbHg1X2NvcmVfZGV2ICptbHg1X3ZmX2dldF9jb3JlX2RldihzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjMwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjIzMDU6XFx0bWRldiA9IHBjaV9pb3ZfZ2V0X3BmX2RydmRhdGEocGRldiwgXFx1MDAyNm1seDVfY29yZV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjMwNi1cXHRpZiAoSVNfRVJSKG1kZXYpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0yMzQzPXN0YXRpYyBpbnQgX19pbml0IG1seDVfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MjM2MzpcXHRlcnIgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZtbHg1X2NvcmVfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzNjQtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MjM3OD1zdGF0aWMgdm9pZCBfX2V4aXQgbWx4NV9jbGVhbnVwKHZvaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzc5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjIzODA6XFx0cGNpX3VucmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZtbHg1X2NvcmVfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzODEtXFx0bWx4NV9zZl9kcml2ZXJfdW5yZWdpc3RlcigpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwODo1MzoyOS4xMzA2NTU5OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNzY0MzE4ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhc3Nlc3NtZW50IG9mIHRoaXMgc2l0dWF0aW9uOlxuXG4qKlVucmVhY2hhYmxlIENvZGUgaW4gdGhlIE1lbGxhbm94IERyaXZlcioqXG5cbkFscmlnaHQsIEkndmUgdGFrZW4gYSBsb29rIGF0IHRoaXMgcGF0Y2gsIGFuZCB0aGUgY29uY2x1c2lvbiBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGVyZSdzIG5vIHBvaW50IGluIGV2ZW4gY29uc2lkZXJpbmcgdGhpcyBjb2RlIGZvciBmdXp6aW5nIHdpdGggdGhlIHN0YW5kYXJkIHN5emthbGxlciBzZXR1cC4gVGhlIGNydWNpYWwgdGhpbmcgaXMgdGhhdCB0aGlzIHBhdGNoIHRhcmdldHMgdGhlIE1lbGxhbm94IG1seDUgZXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBhICpoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyKi4gU2luY2Ugc3l6a2FsbGVyLCBpbiBpdHMgZGVmYXVsdCBjb25maWd1cmF0aW9ucyBmb3IgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGRvZXNuJ3QgYWN0dWFsbHkgKmVtdWxhdGUqIE1lbGxhbm94IGhhcmR3YXJlLCB0aGUgY29kZSBtb2RpZmllZCBieSB0aGlzIHBhdGNoIGlzIHNpbXBseSB1bnJlYWNoYWJsZSBkdXJpbmcgYW55IHN0YW5kYXJkIGZ1enppbmcgcnVucy4gSXQncyBub3QgYSBxdWVzdGlvbiBvZiBjb21wbGV4aXR5IG9yIHBvdGVudGlhbCBmb3IgYnVnczsgaXQncyBhIG1hdHRlciBvZiB0aGUgaGFyZHdhcmUgYmVpbmcgZnVuZGFtZW50YWxseSBhYnNlbnQgaW4gdGhlIHRhcmdldCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXTigJlzIGp1c3Qgbm90IGdvaW5nIHRvIGJlIHRyaWdnZXJlZCBpbiBhIHdheSB0aGF04oCZcyB1c2VmdWwgZm9yIGZpbmRpbmcgdnVsbmVyYWJpbGl0aWVzIHdpdGggdGhlIHJlc291cmNlcyB3ZSBoYXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDkyOCwiT3V0cHV0VG9rZW5zIjo4NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA4OjUzOjMzLjUwNzA5MjI1M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBTaW5jZSBzeXprYWxsZXIgZG9lcyBub3QgZW11bGF0ZSBNZWxsYW5veCBoYXJkd2FyZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUpLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVsbGFub3ggbWx4NSBldGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2Ugc3l6a2FsbGVyIGRvZXMgbm90IGVtdWxhdGUgTWVsbGFub3ggaGFyZHdhcmUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowbpfn8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-22 08:45:03 +0000 UTC FinishedAt: 2026-06-22 08:53:35 +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+CgkJCTx0ZD4yMDI2LzA2LzIyIDA4OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBTaW5jZSBzeXprYWxsZXIgZG9lcyBub3QgZW11bGF0ZSBNZWxsYW5veCBoYXJkd2FyZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUpLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA4OjUzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOWY2NWM5NTU0NjljYmQ1NzM0MzU1ZWUyZTZhMTZkYmZjNTc5MjEwOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDIyIDA4OjUyOjU5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmhcbmluZGV4IDIyNzBlMmU1NTBkZDllLi5kNTA3Mjg5MDk2YzIwNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaFxuQEAgLTk4Nyw2ICYjNDM7OTg3LDE4IEBAIHN0cnVjdCBtbHg1ZV9wcml2IHtcbiBcdHN0cnVjdCBldGh0b29sX2ZlY19oaXN0X3JhbmdlICpmZWNfcmFuZ2VzO1xuIH07XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgdTE2IG1seDVlX3N0YXRzX25jaF9yZWFkKGNvbnN0IHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuJiM0Mzt7XG4mIzQzO1x0LyogUGFpcnMgd2l0aCBzbXBfc3RvcmVfcmVsZWFzZSBpbiBtbHg1ZV9zdGF0c19uY2hfd3JpdGUoKS4gKi9cbiYjNDM7XHRyZXR1cm4gc21wX2xvYWRfYWNxdWlyZShcdTAwMjZwcml2LVx1MDAzZXN0YXRzX25jaCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBtbHg1ZV9zdGF0c19uY2hfd3JpdGUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHUxNiBuKVxuJiM0Mzt7XG4mIzQzO1x0LyogUGFpcnMgd2l0aCBzbXBfbG9hZF9hY3F1aXJlIGluIG1seDVlX3N0YXRzX25jaF9yZWFkKCkuICovXG4mIzQzO1x0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2cHJpdi1cdTAwM2VzdGF0c19uY2gsIG4pO1xuJiM0Mzt9XG4mIzQzO1xuIHN0cnVjdCBtbHg1ZV9kZXYge1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbiBcdHN0cnVjdCBkZXZsaW5rX3BvcnQgZGxfcG9ydDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vaHZfdmhjYV9zdGF0cy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2h2X3ZoY2Ffc3RhdHMuY1xuaW5kZXggMTk1ODYzYjJjMDEzZTIuLjk3NDdkNzczNmQzN2FmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2h2X3ZoY2Ffc3RhdHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2h2X3ZoY2Ffc3RhdHMuY1xuQEAgLTMzLDkgJiM0MzszMywxMCBAQCBtbHg1ZV9odl92aGNhX2ZpbGxfcmluZ19zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgaW50IGNoLFxuIHN0YXRpYyB2b2lkIG1seDVlX2h2X3ZoY2FfZmlsbF9zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgdm9pZCAqZGF0YSxcbiBcdFx0XHRcdCAgICAgaW50IGJ1Zl9sZW4pXG4ge1xuJiM0MztcdHUxNiBuY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcbiBcdGludCBjaCwgaSA9IDA7XG4gXG4tXHRmb3IgKGNoID0gMDsgY2ggXHUwMDNjIHByaXYtXHUwMDNlc3RhdHNfbmNoOyBjaCYjNDM7JiM0MzspIHtcbiYjNDM7XHRmb3IgKGNoID0gMDsgY2ggXHUwMDNjIG5jaDsgY2gmIzQzOyYjNDM7KSB7XG4gXHRcdHZvaWQgKmJ1ZiA9IGRhdGEgJiM0MzsgaTtcbiBcbiBcdFx0aWYgKFdBUk5fT05fT05DRShidWYgJiM0MztcbkBAIC00OSw5ICYjNDM7NTAsMTYgQEAgc3RhdGljIHZvaWQgbWx4NWVfaHZfdmhjYV9maWxsX3N0YXRzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCB2b2lkICpkYXRhLFxuIH1cbiBcbiBzdGF0aWMgaW50IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX3NpemUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4mIzQzO3tcbiYjNDM7XHR1MTYgbmNoID0gbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdik7XG4mIzQzO1xuJiM0MztcdHJldHVybiBzaXplb2Yoc3RydWN0IG1seDVlX2h2X3ZoY2FfcGVyX3Jpbmdfc3RhdHMpICogbmNoO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX21heF9zaXplKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuIHtcbiBcdHJldHVybiAoc2l6ZW9mKHN0cnVjdCBtbHg1ZV9odl92aGNhX3Blcl9yaW5nX3N0YXRzKSAqXG4tXHRcdHByaXYtXHUwMDNlc3RhdHNfbmNoKTtcbiYjNDM7XHRcdG1heChwcml2LVx1MDAzZW1heF9uY2gsIHByaXYtXHUwMDNlc3RhdHNfbmNoKSk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG1seDVlX2h2X3ZoY2Ffc3RhdHNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5AQCAtNjcsNyAmIzQzOzc1LDcgQEAgc3RhdGljIHZvaWQgbWx4NWVfaHZfdmhjYV9zdGF0c193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHNhZ2VudCA9IGNvbnRhaW5lcl9vZihkd29yaywgc3RydWN0IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYWdlbnQsIHdvcmspO1xuIFx0cHJpdiA9IGNvbnRhaW5lcl9vZihzYWdlbnQsIHN0cnVjdCBtbHg1ZV9wcml2LCBzdGF0c19hZ2VudCk7XG4gXHRidWZfbGVuID0gbWx4NWVfaHZfdmhjYV9zdGF0c19idWZfc2l6ZShwcml2KTtcbi1cdGFnZW50ID0gc2FnZW50LVx1MDAzZWFnZW50O1xuJiM0MztcdGFnZW50ID0gUkVBRF9PTkNFKHNhZ2VudC1cdTAwM2VhZ2VudCk7XG4gXHRidWYgPSBzYWdlbnQtXHUwMDNlYnVmO1xuIFxuIFx0bWVtc2V0KGJ1ZiwgMCwgYnVmX2xlbik7XG5AQCAtMTAwLDcgJiM0MzsxMDgsNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX2NvbnRyb2woc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQsXG4gXHRzYWdlbnQgPSBcdTAwMjZwcml2LVx1MDAzZXN0YXRzX2FnZW50O1xuIFxuIFx0YmxvY2stXHUwMDNldmVyc2lvbiA9IE1MWDVfSFZfVkhDQV9TVEFUU19WRVJTSU9OO1xuLVx0YmxvY2stXHUwMDNlcmluZ3MgICA9IHByaXYtXHUwMDNlc3RhdHNfbmNoO1xuJiM0MztcdGJsb2NrLVx1MDAzZXJpbmdzICAgPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcbiBcbiBcdGlmICghYmxvY2stXHUwMDNlY29tbWFuZCkge1xuIFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2cHJpdi1cdTAwM2VzdGF0c19hZ2VudC53b3JrKTtcbkBAIC0xMjIsMTggJiM0MzsxMzAsMjEgQEAgc3RhdGljIHZvaWQgbWx4NWVfaHZfdmhjYV9zdGF0c19jbGVhbnVwKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50KVxuIFxuIHZvaWQgbWx4NWVfaHZfdmhjYV9zdGF0c19jcmVhdGUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4ge1xuLVx0aW50IGJ1Zl9sZW4gPSBtbHg1ZV9odl92aGNhX3N0YXRzX2J1Zl9zaXplKHByaXYpO1xuJiM0MztcdGludCBidWZfbGVuID0gbWx4NWVfaHZfdmhjYV9zdGF0c19idWZfbWF4X3NpemUocHJpdik7XG4gXHRzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudDtcbiBcbiBcdHByaXYtXHUwMDNlc3RhdHNfYWdlbnQuYnVmID0ga3Z6YWxsb2MoYnVmX2xlbiwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAoIXByaXYtXHUwMDNlc3RhdHNfYWdlbnQuYnVmKVxuIFx0XHRyZXR1cm47XG4gXG4mIzQzO1x0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VzdGF0c19hZ2VudC53b3JrLCBtbHg1ZV9odl92aGNhX3N0YXRzX3dvcmspO1xuJiM0MztcbiBcdGFnZW50ID0gbWx4NV9odl92aGNhX2FnZW50X2NyZWF0ZShwcml2LVx1MDAzZW1kZXYtXHUwMDNlaHZfdmhjYSxcbiBcdFx0XHRcdFx0ICBNTFg1X0hWX1ZIQ0FfQUdFTlRfU1RBVFMsXG4gXHRcdFx0XHRcdCAgbWx4NWVfaHZfdmhjYV9zdGF0c19jb250cm9sLCBOVUxMLFxuIFx0XHRcdFx0XHQgIG1seDVlX2h2X3ZoY2Ffc3RhdHNfY2xlYW51cCxcbi1cdFx0XHRcdFx0ICBwcml2KTtcbiYjNDM7XHRcdFx0XHRcdCAgcHJpdixcbiYjNDM7XHRcdFx0XHRcdCAgXHUwMDI2cHJpdi1cdTAwM2VzdGF0c19hZ2VudC5hZ2VudCk7XG4gXG4gXHRpZiAoSVNfRVJSX09SX05VTEwoYWdlbnQpKSB7XG4gXHRcdGlmIChJU19FUlIoYWdlbnQpKVxuQEAgLTE0MiwxOCAmIzQzOzE1MywyMSBAQCB2b2lkIG1seDVlX2h2X3ZoY2Ffc3RhdHNfY3JlYXRlKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuIFx0XHRcdFx0ICAgIGFnZW50KTtcbiBcbiBcdFx0a3ZmcmVlKHByaXYtXHUwMDNlc3RhdHNfYWdlbnQuYnVmKTtcbi1cdFx0cmV0dXJuO1xuJiM0MztcdFx0cHJpdi1cdTAwM2VzdGF0c19hZ2VudC5idWYgPSBOVUxMO1xuIFx0fVxuLVxuLVx0cHJpdi1cdTAwM2VzdGF0c19hZ2VudC5hZ2VudCA9IGFnZW50O1xuLVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VzdGF0c19hZ2VudC53b3JrLCBtbHg1ZV9odl92aGNhX3N0YXRzX3dvcmspO1xuIH1cbiBcbiB2b2lkIG1seDVlX2h2X3ZoY2Ffc3RhdHNfZGVzdHJveShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcbiB7XG4tXHRpZiAoSVNfRVJSX09SX05VTEwocHJpdi1cdTAwM2VzdGF0c19hZ2VudC5hZ2VudCkpXG4mIzQzO1x0c3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQ7XG4mIzQzO1xuJiM0MztcdGFnZW50ID0gUkVBRF9PTkNFKHByaXYtXHUwMDNlc3RhdHNfYWdlbnQuYWdlbnQpO1xuJiM0MztcdGlmIChJU19FUlJfT1JfTlVMTChhZ2VudCkpXG4gXHRcdHJldHVybjtcbiBcbi1cdG1seDVfaHZfdmhjYV9hZ2VudF9kZXN0cm95KHByaXYtXHUwMDNlc3RhdHNfYWdlbnQuYWdlbnQpO1xuJiM0MztcdG1seDVfaHZfdmhjYV9hZ2VudF9kZXN0cm95KGFnZW50KTtcbiBcdGt2ZnJlZShwcml2LVx1MDAzZXN0YXRzX2FnZW50LmJ1Zik7XG4mIzQzO1xuJiM0MztcdFdSSVRFX09OQ0UocHJpdi1cdTAwM2VzdGF0c19hZ2VudC5hZ2VudCwgTlVMTCk7XG4mIzQzO1x0cHJpdi1cdTAwM2VzdGF0c19hZ2VudC5idWYgPSBOVUxMO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uY1xuaW5kZXggNzc1ZjBjNmU1NWM5NTUuLmFhODYxMGNlZGFhODViIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uY1xuQEAgLTI3NzMsNyAmIzQzOzI3NzMsNyBAQCBzdGF0aWMgaW50IG1seDVlX2NoYW5uZWxfc3RhdHNfYWxsb2Moc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIGludCBpeCwgaW50IGNwdSlcbiBcdFx0XHRcdFx0XHRHRlBfS0VSTkVMLCBjcHVfdG9fbm9kZShjcHUpKTtcbiBcdGlmICghcHJpdi1cdTAwM2VjaGFubmVsX3N0YXRzW2l4XSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4tXHRwcml2LVx1MDAzZXN0YXRzX25jaCYjNDM7JiM0Mzs7XG4mIzQzO1x0bWx4NWVfc3RhdHNfbmNoX3dyaXRlKHByaXYsIHByaXYtXHUwMDNlc3RhdHNfbmNoICYjNDM7IDEpO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTQwNDAsOSAmIzQzOzQwNDAsMTAgQEAgc3RhdGljIGludCBtbHg1ZV9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcbiBcbiB2b2lkIG1seDVlX2ZvbGRfc3dfc3RhdHM2NChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IHJ0bmxfbGlua19zdGF0czY0ICpzKVxuIHtcbiYjNDM7XHR1MTYgbmNoID0gbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdik7XG4gXHRpbnQgaTtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHByaXYtXHUwMDNlc3RhdHNfbmNoOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5jaDsgaSYjNDM7JiM0MzspIHtcbiBcdFx0c3RydWN0IG1seDVlX2NoYW5uZWxfc3RhdHMgKmNoYW5uZWxfc3RhdHMgPSBwcml2LVx1MDAzZWNoYW5uZWxfc3RhdHNbaV07XG4gXHRcdHN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqeHNrcnFfc3RhdHMgPSBcdTAwMjZjaGFubmVsX3N0YXRzLVx1MDAzZXhza3JxO1xuIFx0XHRzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMgKnJxX3N0YXRzID0gXHUwMDI2Y2hhbm5lbF9zdGF0cy1cdTAwM2VycTtcbkBAIC01NDg4LDcgJiM0Mzs1NDg5LDcgQEAgc3RhdGljIHZvaWQgbWx4NWVfZ2V0X3F1ZXVlX3N0YXRzX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBpLFxuIFx0c3RydWN0IG1seDVlX3JxX3N0YXRzICp4c2tycV9zdGF0cztcbiBcdHN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqcnFfc3RhdHM7XG4gXG4tXHRpZiAobWx4NWVfaXNfdXBsaW5rX3JlcChwcml2KSB8fCAhcHJpdi1cdTAwM2VzdGF0c19uY2gpXG4mIzQzO1x0aWYgKG1seDVlX2lzX3VwbGlua19yZXAocHJpdikgfHwgIW1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRjaGFubmVsX3N0YXRzID0gcHJpdi1cdTAwM2VjaGFubmVsX3N0YXRzW2ldO1xuQEAgLTU1MTIsNyAmIzQzOzU1MTMsNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9nZXRfcXVldWVfc3RhdHNfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IGksXG4gXHRzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG4gXHRzdHJ1Y3QgbWx4NWVfc3Ffc3RhdHMgKnNxX3N0YXRzO1xuIFxuLVx0aWYgKCFwcml2LVx1MDAzZXN0YXRzX25jaClcbiYjNDM7XHRpZiAoIW1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpKVxuIFx0XHRyZXR1cm47XG4gXG4gXHQvKiBubyBzcGVjaWFsIGNhc2UgbmVlZGVkIGZvciBwdHAgaHRiIGV0YyBzaW5jZSB0eHEyc3Ffc3RhdHMgaXMga2VwdCB1cFxuQEAgLTU1MzgsNiAmIzQzOzU1MzksNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9nZXRfYmFzZV9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdFx0IHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfdHggKnR4KVxuIHtcbiBcdHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiYjNDM7XHR1MTYgbmNoID0gbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdik7XG4gXHRzdHJ1Y3QgbWx4NWVfcHRwICpwdHBfY2hhbm5lbDtcbiBcdGludCBpLCB0YztcbiBcbkBAIC01NTQ5LDcgJiM0Mzs1NTUxLDcgQEAgc3RhdGljIHZvaWQgbWx4NWVfZ2V0X2Jhc2Vfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0cngtXHUwMDNlaHdfZ3JvX3dpcmVfcGFja2V0cyA9IDA7XG4gXHRcdHJ4LVx1MDAzZWh3X2dyb193aXJlX2J5dGVzID0gMDtcbiBcbi1cdFx0Zm9yIChpID0gcHJpdi1cdTAwM2VjaGFubmVscy5wYXJhbXMubnVtX2NoYW5uZWxzOyBpIFx1MDAzYyBwcml2LVx1MDAzZXN0YXRzX25jaDsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGZvciAoaSA9IHByaXYtXHUwMDNlY2hhbm5lbHMucGFyYW1zLm51bV9jaGFubmVsczsgaSBcdTAwM2MgbmNoOyBpJiM0MzsmIzQzOykge1xuIFx0XHRcdHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfcnggcnhfaSA9IHswfTtcbiBcbiBcdFx0XHRtbHg1ZV9nZXRfcXVldWVfc3RhdHNfcngoZGV2LCBpLCBcdTAwMjZyeF9pKTtcbkBAIC01NTg1LDcgJiM0Mzs1NTg3LDcgQEAgc3RhdGljIHZvaWQgbWx4NWVfZ2V0X2Jhc2Vfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdHR4LVx1MDAzZXN0b3AgPSAwO1xuIFx0dHgtXHUwMDNld2FrZSA9IDA7XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwcml2LVx1MDAzZXN0YXRzX25jaDsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuY2g7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdHN0cnVjdCBtbHg1ZV9jaGFubmVsX3N0YXRzICpjaGFubmVsX3N0YXRzID0gcHJpdi1cdTAwM2VjaGFubmVsX3N0YXRzW2ldO1xuIFxuIFx0XHQvKiBoYW5kbGUgdHdvIGNhc2VzOlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmNcbmluZGV4IDdmMzMyNjFiYTY1NTNiLi5kZTM4YjYwODA2YzI2NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuY1xuQEAgLTUxNSw2ICYjNDM7NTE1LDcgQEAgc3RhdGljIHZvaWQgbWx4NWVfc3RhdHNfdXBkYXRlX3N0YXRzX3JxX3BhZ2VfcG9vbChzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYylcbiBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfVVBEQVRFX1NUQVRTKHN3KVxuIHtcbiBcdHN0cnVjdCBtbHg1ZV9zd19zdGF0cyAqcyA9IFx1MDAyNnByaXYtXHUwMDNlc3RhdHMuc3c7XG4mIzQzO1x0dTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xuIFx0aW50IGk7XG4gXG4gXHRtZW1zZXQocywgMCwgc2l6ZW9mKCpzKSk7XG5AQCAtNTIyLDcgJiM0Mzs1MjMsNyBAQCBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfVVBEQVRFX1NUQVRTKHN3KVxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcHJpdi1cdTAwM2VjaGFubmVscy5udW07IGkmIzQzOyYjNDM7KSAvKiBmb3IgYWN0aXZlIGNoYW5uZWxzIG9ubHkgKi9cbiBcdFx0bWx4NWVfc3RhdHNfdXBkYXRlX3N0YXRzX3JxX3BhZ2VfcG9vbChwcml2LVx1MDAzZWNoYW5uZWxzLmNbaV0pO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcHJpdi1cdTAwM2VzdGF0c19uY2g7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgbmNoOyBpJiM0MzsmIzQzOykge1xuIFx0XHRzdHJ1Y3QgbWx4NWVfY2hhbm5lbF9zdGF0cyAqY2hhbm5lbF9zdGF0cyA9XG4gXHRcdFx0cHJpdi1cdTAwM2VjaGFubmVsX3N0YXRzW2ldO1xuIFxuQEAgLTI2MTQsNyAmIzQzOzI2MTUsNyBAQCBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfVVBEQVRFX1NUQVRTKHB0cCkgeyByZXR1cm47IH1cbiBcbiBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfTlVNX1NUQVRTKGNoYW5uZWxzKVxuIHtcbi1cdGludCBtYXhfbmNoID0gcHJpdi1cdTAwM2VzdGF0c19uY2g7XG4mIzQzO1x0aW50IG1heF9uY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcbiBcbiBcdHJldHVybiAoTlVNX1JRX1NUQVRTICogbWF4X25jaCkgJiM0MztcbiBcdCAgICAgICAoTlVNX0NIX1NUQVRTICogbWF4X25jaCkgJiM0MztcbkBAIC0yNjI3LDggJiM0MzsyNjI4LDggQEAgc3RhdGljIE1MWDVFX0RFQ0xBUkVfU1RBVFNfR1JQX09QX05VTV9TVEFUUyhjaGFubmVscylcbiBcbiBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfRklMTF9TVFJTKGNoYW5uZWxzKVxuIHtcbiYjNDM7XHRpbnQgbWF4X25jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xuIFx0Ym9vbCBpc194c2sgPSBwcml2LVx1MDAzZXhzay5ldmVyX3VzZWQ7XG4tXHRpbnQgbWF4X25jaCA9IHByaXYtXHUwMDNlc3RhdHNfbmNoO1xuIFx0aW50IGksIGosIHRjO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbWF4X25jaDsgaSYjNDM7JiM0MzspXG5AQCAtMjY2MCw4ICYjNDM7MjY2MSw4IEBAIHN0YXRpYyBNTFg1RV9ERUNMQVJFX1NUQVRTX0dSUF9PUF9GSUxMX1NUUlMoY2hhbm5lbHMpXG4gXG4gc3RhdGljIE1MWDVFX0RFQ0xBUkVfU1RBVFNfR1JQX09QX0ZJTExfU1RBVFMoY2hhbm5lbHMpXG4ge1xuJiM0MztcdGludCBtYXhfbmNoID0gbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdik7XG4gXHRib29sIGlzX3hzayA9IHByaXYtXHUwMDNleHNrLmV2ZXJfdXNlZDtcbi1cdGludCBtYXhfbmNoID0gcHJpdi1cdTAwM2VzdGF0c19uY2g7XG4gXHRpbnQgaSwgaiwgdGM7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBtYXhfbmNoOyBpJiM0MzsmIzQzOylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jXG5pbmRleCAwYTYwMDNmZTYwZTlmOC4uNjc0YmVkNzIxZTYzNzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmNcbkBAIC0xMzUsMTAgJiM0MzsxMzUsMTEgQEAgdm9pZCBtbHg1aV9jbGVhbnVwKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuIFxuIHN0YXRpYyB2b2lkIG1seDVpX2dycF9zd191cGRhdGVfc3RhdHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4ge1xuJiM0MztcdHUxNiBuY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcbiBcdHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCBzID0ge307XG4gXHRpbnQgaSwgajtcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHByaXYtXHUwMDNlc3RhdHNfbmNoOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5jaDsgaSYjNDM7JiM0MzspIHtcbiBcdFx0c3RydWN0IG1seDVlX2NoYW5uZWxfc3RhdHMgKmNoYW5uZWxfc3RhdHM7XG4gXHRcdHN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqcnFfc3RhdHM7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuY1xuaW5kZXggZDZkYzdiY2U4NTVlMGIuLjMwNTc1MmRhYjdiZGY0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5jXG5AQCAtMTkwLDcgJiM0MzsxOTAsNyBAQCBtbHg1X2h2X3ZoY2FfY29udHJvbF9hZ2VudF9jcmVhdGUoc3RydWN0IG1seDVfaHZfdmhjYSAqaHZfdmhjYSlcbiBcdHJldHVybiBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKGh2X3ZoY2EsIE1MWDVfSFZfVkhDQV9BR0VOVF9DT05UUk9MLFxuIFx0XHRcdFx0XHQgTlVMTCxcbiBcdFx0XHRcdFx0IG1seDVfaHZfdmhjYV9jb250cm9sX2FnZW50X2ludmFsaWRhdGUsXG4tXHRcdFx0XHRcdCBOVUxMLCBOVUxMKTtcbiYjNDM7XHRcdFx0XHRcdCBOVUxMLCBOVUxMLCBOVUxMKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgbWx4NV9odl92aGNhX2NvbnRyb2xfYWdlbnRfZGVzdHJveShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudClcbkBAIC0yNTYsNyAmIzQzOzI1Niw4IEBAIG1seDVfaHZfdmhjYV9hZ2VudF9jcmVhdGUoc3RydWN0IG1seDVfaHZfdmhjYSAqaHZfdmhjYSxcbiBcdFx0XHQgIHZvaWQgKCppbnZhbGlkYXRlKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50KixcbiBcdFx0XHRcdFx0ICAgICB1NjQgYmxvY2tfbWFzayksXG4gXHRcdFx0ICB2b2lkICgqY2xlYXVwKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCksXG4tXHRcdFx0ICB2b2lkICpwcml2KVxuJiM0MztcdFx0XHQgIHZvaWQgKnByaXYsXG4mIzQzO1x0XHRcdCAgc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqKmN0eF91cGRhdGUpXG4ge1xuIFx0c3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQ7XG4gXG5AQCAtMjg0LDYgJiM0MzsyODUsOSBAQCBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHN0cnVjdCBtbHg1X2h2X3ZoY2EgKmh2X3ZoY2EsXG4gXHRhZ2VudC1cdTAwM2VpbnZhbGlkYXRlID0gaW52YWxpZGF0ZTtcbiBcdGFnZW50LVx1MDAzZWNsZWFudXAgICA9IGNsZWF1cDtcbiBcbiYjNDM7XHRpZiAoY3R4X3VwZGF0ZSlcbiYjNDM7XHRcdFdSSVRFX09OQ0UoKmN0eF91cGRhdGUsIGFnZW50KTtcbiYjNDM7XG4gXHRtdXRleF9sb2NrKFx1MDAyNmh2X3ZoY2EtXHUwMDNlYWdlbnRzX2xvY2spO1xuIFx0aHZfdmhjYS1cdTAwM2VhZ2VudHNbdHlwZV0gPSBhZ2VudDtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZodl92aGNhLVx1MDAzZWFnZW50c19sb2NrKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5oXG5pbmRleCBmMjQwZmZlNTExNmM1Yi4uOGIzOTc0Y2YwZWU0OWEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmhcbkBAIC00Myw3ICYjNDM7NDMsOCBAQCBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHN0cnVjdCBtbHg1X2h2X3ZoY2EgKmh2X3ZoY2EsXG4gXHRcdFx0ICB2b2lkICgqaW52YWxpZGF0ZSkoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCosXG4gXHRcdFx0XHRcdCAgICAgdTY0IGJsb2NrX21hc2spLFxuIFx0XHRcdCAgdm9pZCAoKmNsZWFudXApKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50KSxcbi1cdFx0XHQgIHZvaWQgKmNvbnRleHQpO1xuJiM0MztcdFx0XHQgIHZvaWQgKmNvbnRleHQsXG4mIzQzO1x0XHRcdCAgc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqKmN0eF91cGRhdGUpO1xuIFxuIHZvaWQgbWx4NV9odl92aGNhX2FnZW50X2Rlc3Ryb3koc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpO1xuIGludCBtbHg1X2h2X3ZoY2FfYWdlbnRfd3JpdGUoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQsXG5AQCAtODQsNyAmIzQzOzg1LDggQEAgbWx4NV9odl92aGNhX2FnZW50X2NyZWF0ZShzdHJ1Y3QgbWx4NV9odl92aGNhICpodl92aGNhLFxuIFx0XHRcdCAgdm9pZCAoKmludmFsaWRhdGUpKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQqLFxuIFx0XHRcdFx0XHQgICAgIHU2NCBibG9ja19tYXNrKSxcbiBcdFx0XHQgIHZvaWQgKCpjbGVhbnVwKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCksXG4tXHRcdFx0ICB2b2lkICpjb250ZXh0KVxuJiM0MztcdFx0XHQgIHZvaWQgKmNvbnRleHQsXG4mIzQzO1x0XHRcdCAgc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqKmN0eF91cGRhdGUpXG4ge1xuIFx0cmV0dXJuIE5VTEw7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA4OjUzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBTaW5jZSBzeXprYWxsZXIgZG9lcyBub3QgZW11bGF0ZSBNZWxsYW5veCBoYXJkd2FyZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUpLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5ZjY1Yzk1NTQ2OWNiZDU3MzQzNTVlZTJlNmExNmRiZmM1NzkyMTA5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdW4gMjIgMDg6NTI6NTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oCmluZGV4IDIyNzBlMmU1NTBkZDllLi5kNTA3Mjg5MDk2YzIwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgKQEAgLTk4Nyw2ICYjNDM7OTg3LDE4IEBAIHN0cnVjdCBtbHg1ZV9wcml2IHsKIAlzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqZmVjX3JhbmdlczsKIH07CiAKJiM0MztzdGF0aWMgaW5saW5lIHUxNiBtbHg1ZV9zdGF0c19uY2hfcmVhZChjb25zdCBzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikKJiM0Mzt7CiYjNDM7CS8qIFBhaXJzIHdpdGggc21wX3N0b3JlX3JlbGVhc2UgaW4gbWx4NWVfc3RhdHNfbmNoX3dyaXRlKCkuICovCiYjNDM7CXJldHVybiBzbXBfbG9hZF9hY3F1aXJlKCZhbXA7cHJpdi0mZ3Q7c3RhdHNfbmNoKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGlubGluZSB2b2lkIG1seDVlX3N0YXRzX25jaF93cml0ZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgdTE2IG4pCiYjNDM7ewomIzQzOwkvKiBQYWlycyB3aXRoIHNtcF9sb2FkX2FjcXVpcmUgaW4gbWx4NWVfc3RhdHNfbmNoX3JlYWQoKS4gKi8KJiM0MzsJc21wX3N0b3JlX3JlbGVhc2UoJmFtcDtwcml2LSZndDtzdGF0c19uY2gsIG4pOwomIzQzO30KJiM0MzsKIHN0cnVjdCBtbHg1ZV9kZXYgewogCXN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7CiAJc3RydWN0IGRldmxpbmtfcG9ydCBkbF9wb3J0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2h2X3ZoY2Ffc3RhdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9odl92aGNhX3N0YXRzLmMKaW5kZXggMTk1ODYzYjJjMDEzZTIuLjk3NDdkNzczNmQzN2FmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vaHZfdmhjYV9zdGF0cy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9odl92aGNhX3N0YXRzLmMKQEAgLTMzLDkgJiM0MzszMywxMCBAQCBtbHg1ZV9odl92aGNhX2ZpbGxfcmluZ19zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgaW50IGNoLAogc3RhdGljIHZvaWQgbWx4NWVfaHZfdmhjYV9maWxsX3N0YXRzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCB2b2lkICpkYXRhLAogCQkJCSAgICAgaW50IGJ1Zl9sZW4pCiB7CiYjNDM7CXUxNiBuY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTsKIAlpbnQgY2gsIGkgPSAwOwogCi0JZm9yIChjaCA9IDA7IGNoICZsdDsgcHJpdi0mZ3Q7c3RhdHNfbmNoOyBjaCYjNDM7JiM0MzspIHsKJiM0MzsJZm9yIChjaCA9IDA7IGNoICZsdDsgbmNoOyBjaCYjNDM7JiM0MzspIHsKIAkJdm9pZCAqYnVmID0gZGF0YSAmIzQzOyBpOwogCiAJCWlmIChXQVJOX09OX09OQ0UoYnVmICYjNDM7CkBAIC00OSw5ICYjNDM7NTAsMTYgQEAgc3RhdGljIHZvaWQgbWx4NWVfaHZfdmhjYV9maWxsX3N0YXRzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCB2b2lkICpkYXRhLAogfQogCiBzdGF0aWMgaW50IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX3NpemUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpCiYjNDM7ewomIzQzOwl1MTYgbmNoID0gbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdik7CiYjNDM7CiYjNDM7CXJldHVybiBzaXplb2Yoc3RydWN0IG1seDVlX2h2X3ZoY2FfcGVyX3Jpbmdfc3RhdHMpICogbmNoOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX21heF9zaXplKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KQogewogCXJldHVybiAoc2l6ZW9mKHN0cnVjdCBtbHg1ZV9odl92aGNhX3Blcl9yaW5nX3N0YXRzKSAqCi0JCXByaXYtJmd0O3N0YXRzX25jaCk7CiYjNDM7CQltYXgocHJpdi0mZ3Q7bWF4X25jaCwgcHJpdi0mZ3Q7c3RhdHNfbmNoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIG1seDVlX2h2X3ZoY2Ffc3RhdHNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCkBAIC02Nyw3ICYjNDM7NzUsNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXNhZ2VudCA9IGNvbnRhaW5lcl9vZihkd29yaywgc3RydWN0IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYWdlbnQsIHdvcmspOwogCXByaXYgPSBjb250YWluZXJfb2Yoc2FnZW50LCBzdHJ1Y3QgbWx4NWVfcHJpdiwgc3RhdHNfYWdlbnQpOwogCWJ1Zl9sZW4gPSBtbHg1ZV9odl92aGNhX3N0YXRzX2J1Zl9zaXplKHByaXYpOwotCWFnZW50ID0gc2FnZW50LSZndDthZ2VudDsKJiM0MzsJYWdlbnQgPSBSRUFEX09OQ0Uoc2FnZW50LSZndDthZ2VudCk7CiAJYnVmID0gc2FnZW50LSZndDtidWY7CiAKIAltZW1zZXQoYnVmLCAwLCBidWZfbGVuKTsKQEAgLTEwMCw3ICYjNDM7MTA4LDcgQEAgc3RhdGljIHZvaWQgbWx4NWVfaHZfdmhjYV9zdGF0c19jb250cm9sKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50LAogCXNhZ2VudCA9ICZhbXA7cHJpdi0mZ3Q7c3RhdHNfYWdlbnQ7CiAKIAlibG9jay0mZ3Q7dmVyc2lvbiA9IE1MWDVfSFZfVkhDQV9TVEFUU19WRVJTSU9OOwotCWJsb2NrLSZndDtyaW5ncyAgID0gcHJpdi0mZ3Q7c3RhdHNfbmNoOwomIzQzOwlibG9jay0mZ3Q7cmluZ3MgICA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpOwogCiAJaWYgKCFibG9jay0mZ3Q7Y29tbWFuZCkgewogCQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFtcDtwcml2LSZndDtzdGF0c19hZ2VudC53b3JrKTsKQEAgLTEyMiwxOCAmIzQzOzEzMCwyMSBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX2NsZWFudXAoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpCiAKIHZvaWQgbWx4NWVfaHZfdmhjYV9zdGF0c19jcmVhdGUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpCiB7Ci0JaW50IGJ1Zl9sZW4gPSBtbHg1ZV9odl92aGNhX3N0YXRzX2J1Zl9zaXplKHByaXYpOwomIzQzOwlpbnQgYnVmX2xlbiA9IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX21heF9zaXplKHByaXYpOwogCXN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50OwogCiAJcHJpdi0mZ3Q7c3RhdHNfYWdlbnQuYnVmID0ga3Z6YWxsb2MoYnVmX2xlbiwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwcml2LSZndDtzdGF0c19hZ2VudC5idWYpCiAJCXJldHVybjsKIAomIzQzOwlJTklUX0RFTEFZRURfV09SSygmYW1wO3ByaXYtJmd0O3N0YXRzX2FnZW50LndvcmssIG1seDVlX2h2X3ZoY2Ffc3RhdHNfd29yayk7CiYjNDM7CiAJYWdlbnQgPSBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHByaXYtJmd0O21kZXYtJmd0O2h2X3ZoY2EsCiAJCQkJCSAgTUxYNV9IVl9WSENBX0FHRU5UX1NUQVRTLAogCQkJCQkgIG1seDVlX2h2X3ZoY2Ffc3RhdHNfY29udHJvbCwgTlVMTCwKIAkJCQkJICBtbHg1ZV9odl92aGNhX3N0YXRzX2NsZWFudXAsCi0JCQkJCSAgcHJpdik7CiYjNDM7CQkJCQkgIHByaXYsCiYjNDM7CQkJCQkgICZhbXA7cHJpdi0mZ3Q7c3RhdHNfYWdlbnQuYWdlbnQpOwogCiAJaWYgKElTX0VSUl9PUl9OVUxMKGFnZW50KSkgewogCQlpZiAoSVNfRVJSKGFnZW50KSkKQEAgLTE0MiwxOCAmIzQzOzE1MywyMSBAQCB2b2lkIG1seDVlX2h2X3ZoY2Ffc3RhdHNfY3JlYXRlKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KQogCQkJCSAgICBhZ2VudCk7CiAKIAkJa3ZmcmVlKHByaXYtJmd0O3N0YXRzX2FnZW50LmJ1Zik7Ci0JCXJldHVybjsKJiM0MzsJCXByaXYtJmd0O3N0YXRzX2FnZW50LmJ1ZiA9IE5VTEw7CiAJfQotCi0JcHJpdi0mZ3Q7c3RhdHNfYWdlbnQuYWdlbnQgPSBhZ2VudDsKLQlJTklUX0RFTEFZRURfV09SSygmYW1wO3ByaXYtJmd0O3N0YXRzX2FnZW50LndvcmssIG1seDVlX2h2X3ZoY2Ffc3RhdHNfd29yayk7CiB9CiAKIHZvaWQgbWx4NWVfaHZfdmhjYV9zdGF0c19kZXN0cm95KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KQogewotCWlmIChJU19FUlJfT1JfTlVMTChwcml2LSZndDtzdGF0c19hZ2VudC5hZ2VudCkpCiYjNDM7CXN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50OwomIzQzOwomIzQzOwlhZ2VudCA9IFJFQURfT05DRShwcml2LSZndDtzdGF0c19hZ2VudC5hZ2VudCk7CiYjNDM7CWlmIChJU19FUlJfT1JfTlVMTChhZ2VudCkpCiAJCXJldHVybjsKIAotCW1seDVfaHZfdmhjYV9hZ2VudF9kZXN0cm95KHByaXYtJmd0O3N0YXRzX2FnZW50LmFnZW50KTsKJiM0MzsJbWx4NV9odl92aGNhX2FnZW50X2Rlc3Ryb3koYWdlbnQpOwogCWt2ZnJlZShwcml2LSZndDtzdGF0c19hZ2VudC5idWYpOwomIzQzOwomIzQzOwlXUklURV9PTkNFKHByaXYtJmd0O3N0YXRzX2FnZW50LmFnZW50LCBOVUxMKTsKJiM0MzsJcHJpdi0mZ3Q7c3RhdHNfYWdlbnQuYnVmID0gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jCmluZGV4IDc3NWYwYzZlNTVjOTU1Li5hYTg2MTBjZWRhYTg1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jCkBAIC0yNzczLDcgJiM0MzsyNzczLDcgQEAgc3RhdGljIGludCBtbHg1ZV9jaGFubmVsX3N0YXRzX2FsbG9jKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBpbnQgaXgsIGludCBjcHUpCiAJCQkJCQlHRlBfS0VSTkVMLCBjcHVfdG9fbm9kZShjcHUpKTsKIAlpZiAoIXByaXYtJmd0O2NoYW5uZWxfc3RhdHNbaXhdKQogCQlyZXR1cm4gLUVOT01FTTsKLQlwcml2LSZndDtzdGF0c19uY2gmIzQzOyYjNDM7OwomIzQzOwltbHg1ZV9zdGF0c19uY2hfd3JpdGUocHJpdiwgcHJpdi0mZ3Q7c3RhdHNfbmNoICYjNDM7IDEpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC00MDQwLDkgJiM0Mzs0MDQwLDEwIEBAIHN0YXRpYyBpbnQgbWx4NWVfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsCiAKIHZvaWQgbWx4NWVfZm9sZF9zd19zdGF0czY0KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3QgcnRubF9saW5rX3N0YXRzNjQgKnMpCiB7CiYjNDM7CXUxNiBuY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTsKIAlpbnQgaTsKIAotCWZvciAoaSA9IDA7IGkgJmx0OyBwcml2LSZndDtzdGF0c19uY2g7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBuY2g7IGkmIzQzOyYjNDM7KSB7CiAJCXN0cnVjdCBtbHg1ZV9jaGFubmVsX3N0YXRzICpjaGFubmVsX3N0YXRzID0gcHJpdi0mZ3Q7Y2hhbm5lbF9zdGF0c1tpXTsKIAkJc3RydWN0IG1seDVlX3JxX3N0YXRzICp4c2tycV9zdGF0cyA9ICZhbXA7Y2hhbm5lbF9zdGF0cy0mZ3Q7eHNrcnE7CiAJCXN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqcnFfc3RhdHMgPSAmYW1wO2NoYW5uZWxfc3RhdHMtJmd0O3JxOwpAQCAtNTQ4OCw3ICYjNDM7NTQ4OSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9xdWV1ZV9zdGF0c19yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaSwKIAlzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMgKnhza3JxX3N0YXRzOwogCXN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqcnFfc3RhdHM7CiAKLQlpZiAobWx4NWVfaXNfdXBsaW5rX3JlcChwcml2KSB8fCAhcHJpdi0mZ3Q7c3RhdHNfbmNoKQomIzQzOwlpZiAobWx4NWVfaXNfdXBsaW5rX3JlcChwcml2KSB8fCAhbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdikpCiAJCXJldHVybjsKIAogCWNoYW5uZWxfc3RhdHMgPSBwcml2LSZndDtjaGFubmVsX3N0YXRzW2ldOwpAQCAtNTUxMiw3ICYjNDM7NTUxMyw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9xdWV1ZV9zdGF0c190eChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaSwKIAlzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7CiAJc3RydWN0IG1seDVlX3NxX3N0YXRzICpzcV9zdGF0czsKIAotCWlmICghcHJpdi0mZ3Q7c3RhdHNfbmNoKQomIzQzOwlpZiAoIW1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpKQogCQlyZXR1cm47CiAKIAkvKiBubyBzcGVjaWFsIGNhc2UgbmVlZGVkIGZvciBwdHAgaHRiIGV0YyBzaW5jZSB0eHEyc3Ffc3RhdHMgaXMga2VwdCB1cApAQCAtNTUzOCw2ICYjNDM7NTUzOSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9iYXNlX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkJIHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfdHggKnR4KQogewogCXN0cnVjdCBtbHg1ZV9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTsKJiM0MzsJdTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpOwogCXN0cnVjdCBtbHg1ZV9wdHAgKnB0cF9jaGFubmVsOwogCWludCBpLCB0YzsKIApAQCAtNTU0OSw3ICYjNDM7NTU1MSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9iYXNlX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCXJ4LSZndDtod19ncm9fd2lyZV9wYWNrZXRzID0gMDsKIAkJcngtJmd0O2h3X2dyb193aXJlX2J5dGVzID0gMDsKIAotCQlmb3IgKGkgPSBwcml2LSZndDtjaGFubmVscy5wYXJhbXMubnVtX2NoYW5uZWxzOyBpICZsdDsgcHJpdi0mZ3Q7c3RhdHNfbmNoOyBpJiM0MzsmIzQzOykgewomIzQzOwkJZm9yIChpID0gcHJpdi0mZ3Q7Y2hhbm5lbHMucGFyYW1zLm51bV9jaGFubmVsczsgaSAmbHQ7IG5jaDsgaSYjNDM7JiM0MzspIHsKIAkJCXN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfcnggcnhfaSA9IHswfTsKIAogCQkJbWx4NWVfZ2V0X3F1ZXVlX3N0YXRzX3J4KGRldiwgaSwgJmFtcDtyeF9pKTsKQEAgLTU1ODUsNyAmIzQzOzU1ODcsNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9nZXRfYmFzZV9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCXR4LSZndDtzdG9wID0gMDsKIAl0eC0mZ3Q7d2FrZSA9IDA7CiAKLQlmb3IgKGkgPSAwOyBpICZsdDsgcHJpdi0mZ3Q7c3RhdHNfbmNoOyBpJiM0MzsmIzQzOykgewomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgbmNoOyBpJiM0MzsmIzQzOykgewogCQlzdHJ1Y3QgbWx4NWVfY2hhbm5lbF9zdGF0cyAqY2hhbm5lbF9zdGF0cyA9IHByaXYtJmd0O2NoYW5uZWxfc3RhdHNbaV07CiAKIAkJLyogaGFuZGxlIHR3byBjYXNlczoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmMKaW5kZXggN2YzMzI2MWJhNjU1M2IuLmRlMzhiNjA4MDZjMjY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuYwpAQCAtNTE1LDYgJiM0Mzs1MTUsNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9zdGF0c191cGRhdGVfc3RhdHNfcnFfcGFnZV9wb29sKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjKQogc3RhdGljIE1MWDVFX0RFQ0xBUkVfU1RBVFNfR1JQX09QX1VQREFURV9TVEFUUyhzdykKIHsKIAlzdHJ1Y3QgbWx4NWVfc3dfc3RhdHMgKnMgPSAmYW1wO3ByaXYtJmd0O3N0YXRzLnN3OwomIzQzOwl1MTYgbmNoID0gbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdik7CiAJaW50IGk7CiAKIAltZW1zZXQocywgMCwgc2l6ZW9mKCpzKSk7CkBAIC01MjIsNyAmIzQzOzUyMyw3IEBAIHN0YXRpYyBNTFg1RV9ERUNMQVJFX1NUQVRTX0dSUF9PUF9VUERBVEVfU1RBVFMoc3cpCiAJZm9yIChpID0gMDsgaSAmbHQ7IHByaXYtJmd0O2NoYW5uZWxzLm51bTsgaSYjNDM7JiM0MzspIC8qIGZvciBhY3RpdmUgY2hhbm5lbHMgb25seSAqLwogCQltbHg1ZV9zdGF0c191cGRhdGVfc3RhdHNfcnFfcGFnZV9wb29sKHByaXYtJmd0O2NoYW5uZWxzLmNbaV0pOwogCi0JZm9yIChpID0gMDsgaSAmbHQ7IHByaXYtJmd0O3N0YXRzX25jaDsgaSYjNDM7JiM0MzspIHsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IG5jaDsgaSYjNDM7JiM0MzspIHsKIAkJc3RydWN0IG1seDVlX2NoYW5uZWxfc3RhdHMgKmNoYW5uZWxfc3RhdHMgPQogCQkJcHJpdi0mZ3Q7Y2hhbm5lbF9zdGF0c1tpXTsKIApAQCAtMjYxNCw3ICYjNDM7MjYxNSw3IEBAIHN0YXRpYyBNTFg1RV9ERUNMQVJFX1NUQVRTX0dSUF9PUF9VUERBVEVfU1RBVFMocHRwKSB7IHJldHVybjsgfQogCiBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfTlVNX1NUQVRTKGNoYW5uZWxzKQogewotCWludCBtYXhfbmNoID0gcHJpdi0mZ3Q7c3RhdHNfbmNoOwomIzQzOwlpbnQgbWF4X25jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpOwogCiAJcmV0dXJuIChOVU1fUlFfU1RBVFMgKiBtYXhfbmNoKSAmIzQzOwogCSAgICAgICAoTlVNX0NIX1NUQVRTICogbWF4X25jaCkgJiM0MzsKQEAgLTI2MjcsOCAmIzQzOzI2MjgsOCBAQCBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfTlVNX1NUQVRTKGNoYW5uZWxzKQogCiBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfRklMTF9TVFJTKGNoYW5uZWxzKQogewomIzQzOwlpbnQgbWF4X25jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpOwogCWJvb2wgaXNfeHNrID0gcHJpdi0mZ3Q7eHNrLmV2ZXJfdXNlZDsKLQlpbnQgbWF4X25jaCA9IHByaXYtJmd0O3N0YXRzX25jaDsKIAlpbnQgaSwgaiwgdGM7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgbWF4X25jaDsgaSYjNDM7JiM0MzspCkBAIC0yNjYwLDggJiM0MzsyNjYxLDggQEAgc3RhdGljIE1MWDVFX0RFQ0xBUkVfU1RBVFNfR1JQX09QX0ZJTExfU1RSUyhjaGFubmVscykKIAogc3RhdGljIE1MWDVFX0RFQ0xBUkVfU1RBVFNfR1JQX09QX0ZJTExfU1RBVFMoY2hhbm5lbHMpCiB7CiYjNDM7CWludCBtYXhfbmNoID0gbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdik7CiAJYm9vbCBpc194c2sgPSBwcml2LSZndDt4c2suZXZlcl91c2VkOwotCWludCBtYXhfbmNoID0gcHJpdi0mZ3Q7c3RhdHNfbmNoOwogCWludCBpLCBqLCB0YzsKIAogCWZvciAoaSA9IDA7IGkgJmx0OyBtYXhfbmNoOyBpJiM0MzsmIzQzOykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmMKaW5kZXggMGE2MDAzZmU2MGU5ZjguLjY3NGJlZDcyMWU2Mzc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuYwpAQCAtMTM1LDEwICYjNDM7MTM1LDExIEBAIHZvaWQgbWx4NWlfY2xlYW51cChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikKIAogc3RhdGljIHZvaWQgbWx4NWlfZ3JwX3N3X3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdikKIHsKJiM0MzsJdTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpOwogCXN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCBzID0ge307CiAJaW50IGksIGo7CiAKLQlmb3IgKGkgPSAwOyBpICZsdDsgcHJpdi0mZ3Q7c3RhdHNfbmNoOyBpJiM0MzsmIzQzOykgewomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgbmNoOyBpJiM0MzsmIzQzOykgewogCQlzdHJ1Y3QgbWx4NWVfY2hhbm5lbF9zdGF0cyAqY2hhbm5lbF9zdGF0czsKIAkJc3RydWN0IG1seDVlX3JxX3N0YXRzICpycV9zdGF0czsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuYwppbmRleCBkNmRjN2JjZTg1NWUwYi4uMzA1NzUyZGFiN2JkZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5jCkBAIC0xOTAsNyAmIzQzOzE5MCw3IEBAIG1seDVfaHZfdmhjYV9jb250cm9sX2FnZW50X2NyZWF0ZShzdHJ1Y3QgbWx4NV9odl92aGNhICpodl92aGNhKQogCXJldHVybiBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKGh2X3ZoY2EsIE1MWDVfSFZfVkhDQV9BR0VOVF9DT05UUk9MLAogCQkJCQkgTlVMTCwKIAkJCQkJIG1seDVfaHZfdmhjYV9jb250cm9sX2FnZW50X2ludmFsaWRhdGUsCi0JCQkJCSBOVUxMLCBOVUxMKTsKJiM0MzsJCQkJCSBOVUxMLCBOVUxMLCBOVUxMKTsKIH0KIAogc3RhdGljIHZvaWQgbWx4NV9odl92aGNhX2NvbnRyb2xfYWdlbnRfZGVzdHJveShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCkKQEAgLTI1Niw3ICYjNDM7MjU2LDggQEAgbWx4NV9odl92aGNhX2FnZW50X2NyZWF0ZShzdHJ1Y3QgbWx4NV9odl92aGNhICpodl92aGNhLAogCQkJICB2b2lkICgqaW52YWxpZGF0ZSkoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCosCiAJCQkJCSAgICAgdTY0IGJsb2NrX21hc2spLAogCQkJICB2b2lkICgqY2xlYXVwKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCksCi0JCQkgIHZvaWQgKnByaXYpCiYjNDM7CQkJICB2b2lkICpwcml2LAomIzQzOwkJCSAgc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqKmN0eF91cGRhdGUpCiB7CiAJc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQ7CiAKQEAgLTI4NCw2ICYjNDM7Mjg1LDkgQEAgbWx4NV9odl92aGNhX2FnZW50X2NyZWF0ZShzdHJ1Y3QgbWx4NV9odl92aGNhICpodl92aGNhLAogCWFnZW50LSZndDtpbnZhbGlkYXRlID0gaW52YWxpZGF0ZTsKIAlhZ2VudC0mZ3Q7Y2xlYW51cCAgID0gY2xlYXVwOwogCiYjNDM7CWlmIChjdHhfdXBkYXRlKQomIzQzOwkJV1JJVEVfT05DRSgqY3R4X3VwZGF0ZSwgYWdlbnQpOwomIzQzOwogCW11dGV4X2xvY2soJmFtcDtodl92aGNhLSZndDthZ2VudHNfbG9jayk7CiAJaHZfdmhjYS0mZ3Q7YWdlbnRzW3R5cGVdID0gYWdlbnQ7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7aHZfdmhjYS0mZ3Q7YWdlbnRzX2xvY2spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuaAppbmRleCBmMjQwZmZlNTExNmM1Yi4uOGIzOTc0Y2YwZWU0OWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5oCkBAIC00Myw3ICYjNDM7NDMsOCBAQCBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHN0cnVjdCBtbHg1X2h2X3ZoY2EgKmh2X3ZoY2EsCiAJCQkgIHZvaWQgKCppbnZhbGlkYXRlKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50KiwKIAkJCQkJICAgICB1NjQgYmxvY2tfbWFzayksCiAJCQkgIHZvaWQgKCpjbGVhbnVwKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCksCi0JCQkgIHZvaWQgKmNvbnRleHQpOwomIzQzOwkJCSAgdm9pZCAqY29udGV4dCwKJiM0MzsJCQkgIHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKipjdHhfdXBkYXRlKTsKIAogdm9pZCBtbHg1X2h2X3ZoY2FfYWdlbnRfZGVzdHJveShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCk7CiBpbnQgbWx4NV9odl92aGNhX2FnZW50X3dyaXRlKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50LApAQCAtODQsNyAmIzQzOzg1LDggQEAgbWx4NV9odl92aGNhX2FnZW50X2NyZWF0ZShzdHJ1Y3QgbWx4NV9odl92aGNhICpodl92aGNhLAogCQkJICB2b2lkICgqaW52YWxpZGF0ZSkoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCosCiAJCQkJCSAgICAgdTY0IGJsb2NrX21hc2spLAogCQkJICB2b2lkICgqY2xlYW51cCkoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpLAotCQkJICB2b2lkICpjb250ZXh0KQomIzQzOwkJCSAgdm9pZCAqY29udGV4dCwKJiM0MzsJCQkgIHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKipjdHhfdXBkYXRlKQogewogCXJldHVybiBOVUxMOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwODo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTEwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNjA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudDogTWVsbGFub3ggbWx4NSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIE1lbGxhbm94IG1seDUgRXRoZXJuZXQgZHJpdmVyLiBJdCYjMzk7cyB0b3VjaGluZyBgcHJpdi0mZ3Q7c3RhdHNfbmNoYCB3aXRoIGBzbXBfbG9hZF9hY3F1aXJlYCBhbmQgYHNtcF9zdG9yZV9yZWxlYXNlYCwgYW5kIHRoZW4gaXQmIzM5O3MgbW9kaWZ5aW5nIGBtbHg1ZV9odl92aGNhX3N0YXRzX2NyZWF0ZWAsIGBtbHg1ZV9odl92aGNhX3N0YXRzX2Rlc3Ryb3lgLCBhbmQgYG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX21heF9zaXplYCBmb3IgdGhyZWFkIHNhZmV0eSBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuIFRoZSBmaWxlcyBhZmZlY3RlZCBhcmUgc2NhdHRlcmVkIGFjcm9zcyB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDVgIGRpcmVjdG9yeSBzdHJ1Y3R1cmU6IGBjb3JlL2VuL2h2X3ZoY2Ffc3RhdHMuY2AsIGBjb3JlL2VuX21haW4uY2AsIGBjb3JlL2VuX3N0YXRzLmNgLCBgY29yZS9pcG9pYi9pcG9pYi5jYCwgYW5kIGBjb3JlL2xpYi9odl92aGNhLmNgLgoKVGhlIGJpZyBxdWVzdGlvbiBpczogY2FuIEkgZnV6eiB0aGlzIGVmZmVjdGl2ZWx5PyBUaGlzIGlzIGEgaGFyZHdhcmUgZHJpdmVyIGZvciBDb25uZWN0WC00LzUvNi83LCBzbyBJIGtub3cgSSYjMzk7bSBkZWFsaW5nIHdpdGggUENJIGRldmljZXMgaGVyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgc3RhbmRhcmQgVk0gZnV6emluZyB3b24mIzM5O3QgY3V0IGl0LiBTeXprYWxsZXIgZG9lc24mIzM5O3Qgc2VlbSB0byBoYXZlIGVtdWxhdGVkIE1lbGxhbm94IG1seDUgaGFyZHdhcmUsIGFuZCB0aGF0JiMzOTtzIHVzdWFsbHkgYSBkZWFsYnJlYWtlci4gVW5sZXNzIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgZW11bGF0aW9uIGxheWVyIG9yIGEgdmlydHVhbCBkcml2ZXIgZXF1aXZhbGVudCwgZHJpdmVycyBsaWtlIHRoZXNlIGFyZSBub3RvcmlvdXNseSBkaWZmaWN1bHQgdG8gdGFyZ2V0IHdpdGhvdXQgcmVhbCBoYXJkd2FyZSBvciBhIG1ldGhvZCBvZiBQQ0kgcGFzc3Rocm91Z2guCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBpcyAqYW55KiB3YXkgdG8gcnVuIHRoaXMgY29kZSB3aXRob3V0IGRpcmVjdCBoYXJkd2FyZSBhY2Nlc3MuIERvZXMgc3l6a2FsbGVyIGhhdmUgYW4gYWx0ZXJuYXRpdmUgdG8gdGVzdCBtbHg1PyBUaGUgb2J2aW91cyBhbnN3ZXIgaXMgbm8uIFRoaXMgZHJpdmVyIHNlZW1zIHRvIGJlIHB1cmVseSB0aWVkIHRvIHBoeXNpY2FsIFBDSSBkZXZpY2VzLiBXaXRob3V0IHRoYXQgUENJIGRldmljZSwgdGhlIHByb2JlIGZ1bmN0aW9uIGlzIG5ldmVyIGNhbGxlZCwgYW5kIHRoZSBkcml2ZXIgY29kZSBpcyBuZXZlciBleGVjdXRlZCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuIFRoaXMgbWVhbnMgY29kZSByZWxhdGVkIHRvIGBtbHg1ZV9odl92aGNhX3N0YXRzX2NyZWF0ZWAgY2FuJiMzOTt0IGJlIHJlYWNoZWQuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBjaGVjayBmb3IgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiwgbW9jayBpbXBsZW1lbnRhdGlvbnMsIG9yIHZpcnR1YWwgZHJpdmVyIGNvbXBvbmVudHMuIEkgd2lsbCB1c2UgYGdyZXBwZXJgIHRvIHNlYXJjaCB0aHJvdWdoIHRoZSBjb2RlYmFzZSBmb3IgYW55dGhpbmcgcmVsYXRlZCB0byBtbHg1IGluIHRoZSBgdG9vbHMvYCBvciBgZHJpdmVycy9gIGRpcmVjdG9yaWVzLgoKQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgd2l0aG91dCBQQ0kgcGFzc3Rocm91Z2gsIHdoaWNoIGlzIG9mdGVuIGNvbXBsZXggYW5kIHJlc291cmNlLWludGVuc2l2ZSwgZnV6emluZyB0aGlzIHBhdGNoIGluIGEgdHlwaWNhbCBWTSBzZXR1cCBsb29rcyBoaWdobHkgdW5saWtlbHkuIE15IGFzc2Vzc21lbnQgaXMgdGhhdCBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwODo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDk5MTExIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz0xOT1jb25maWcgTUxYNV9GUEdBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMjUtXHQgIGFuZCBhbiBGUEdBIGNoaXAgb24gb25lIGJvYXJkLiBJZiB5b3Ugc2VsZWN0IHRoaXMgb3B0aW9uLCB0aGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjI2Olx0ICBtbHg1X2NvcmUgZHJpdmVyIHdpbGwgaW5jbHVkZSB0aGUgSW5ub3ZhIEZQR0EgY29yZSBhbmQgYWxsb3cgYnVpbGRpbmdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTI3LVx0ICBzYW5kYm94LXNwZWNpZmljIGNsaWVudCBkcml2ZXJzLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTc3PWNvbmZpZyBNTFg1X0JSSURHRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTgxLVx0aGVscFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6ODI6XHQgIG1seDUgQ29ubmVjdFggb2ZmbG9hZHMgc3VwcG9ydCBmb3IgRXRoZXJuZXQgQnJpZGdpbmcgKEJSSURHRSkuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy04My1cdCAgRW5hYmxlIG9mZmxvYWRpbmcgRkRCIHJ1bGVzIGZyb20gYSBicmlkZ2UgZGV2aWNlIGNvbnRhaW5pbmdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjg0Olx0ICByZXByZXNlbnRvcnMgb2YgbWx4NSB1cGxpbmsgYW5kIFZGIHBvcnRzLiBTdXBwb3J0cyBWTEFOcyAodHJ1bmsgYW5kXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy04NS1cdCAgYWNjZXNzIG1vZGVzKS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz04Nz1jb25maWcgTUxYNV9DTFNfQUNUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctOTEtXHRoZWxwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzo5MjpcdCAgbWx4NSBDb25uZWN0WCBvZmZsb2FkcyBzdXBwb3J0IGZvciBUQyBjbGFzc2lmaWVyIGFjdGlvbiAoTkVUX0NMU19BQ1QpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctOTMtXHQgIHdvcmtzIGluIGJvdGggbmF0aXZlIE5JQyBtb2RlIGFuZCBTd2l0Y2hkZXYgU1JJT1YgbW9kZS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz0yMTA9Y29uZmlnIE1MWDVfRU5fUFNQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMjE1LVx0aGVscFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MjE2Olx0ICBtbHg1IGRldmljZSBvZmZsb2FkIHN1cHBvcnQgZm9yIEdvb2dsZSBQU1AgU2VjdXJpdHkgUHJvdG9jb2wgb2ZmbG9hZC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTIxNy1cdCAgQWRkcyBzdXBwb3J0IGZvciBQU1AgZW5jcnlwdGlvbiBvZmZsb2FkIGFuZCBmb3IgU1BJIGFuZCBrZXkgZ2VuZXJhdGlvblxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZT03PXN1YmRpci1jY2ZsYWdzLXkgJiM0Mzs9IC1JJChzcmMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19NTFg1X0NPUkUpICYjNDM7PSBtbHg1X2NvcmUub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTExLSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxMjojIG1seDUgY29yZSBiYXNpY1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEzLSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxNDptbHg1X2NvcmUteSA6PVx0bWFpbi5vIGNtZC5vIGRlYnVnZnMubyBmdy5vIGVxLm8gdWFyLm8gcGFnZWFsbG9jLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xNS1cdFx0aGVhbHRoLm8gbWNnLm8gY3EubyBhbGxvYy5vIHBvcnQubyBtci5vIHBkLm8gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMjUtI1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjI2Om1seDVfY29yZS0kKENPTkZJR19NTFg1X0NPUkVfRU4pICYjNDM7PSBlbi9ycXQubyBlbi90aXIubyBlbi9yc3MubyBlbi9yeF9yZXMubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTI3LVx0XHRlbi9jaGFubmVscy5vIGVuX21haW4ubyBlbl9jb21tb24ubyBlbl9mcy5vIGVuX2V0aHRvb2wubyBcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0zNy0jXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6Mzg6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRU5fQVJGUykgICAgICYjNDM7PSBlbl9hcmZzLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTozOTptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9FTl9SWE5GQykgICAgJiM0Mzs9IGVuX2ZzX2V0aHRvb2wub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjQwOm1seDVfY29yZS0kKENPTkZJR19NTFg1X0NPUkVfRU5fRENCKSAmIzQzOz0gZW5fZGNibmwubyBlbi9wb3J0X2J1ZmZlci5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6NDE6bWx4NV9jb3JlLSQoQ09ORklHX1BDSV9IWVBFUlZfSU5URVJGQUNFKSAmIzQzOz0gZW4vaHZfdmhjYV9zdGF0cy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6NDI6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRVNXSVRDSCkgICAgICYjNDM7PSBsYWcvbXAubyBsYWcvcG9ydF9zZWwubyBsaWIvZ2VuZXZlLm8gbGliL3BvcnRfdHVuLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS00My1cdFx0XHRcdFx0ZW5fcmVwLm8gZW4vcmVwL2JvbmQubyBlbi9tb2RfaGRyLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS00NC1cdFx0XHRcdFx0ZW4vbWFwcGluZy5vIGxhZy9tcGVzdy5vIGxhZy9zaGFyZWRfZmRiLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo0NTptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DTFNfQUNUKSAgICAgJiM0Mzs9IGVuX3RjLm8gZW4vcmVwL3RjLm8gZW4vcmVwL25laWdoLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS00Ni1cdFx0XHRcdFx0bGliL2ZzX2NoYWlucy5vIGVuL3RjX3R1bi5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjUzOm1seDVfY29yZS0kKENPTkZJR19NTFg1X0NMU19BQ1QpICAgICAmIzQzOz0gZW4vdGMvYWN0L2FjdC5vIGVuL3RjL2FjdC9kcm9wLm8gZW4vdGMvYWN0L3RyYXAubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTU0LVx0XHRcdFx0XHRlbi90Yy9hY3QvYWNjZXB0Lm8gZW4vdGMvYWN0L21hcmsubyBlbi90Yy9hY3QvZ290by5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTYxPWlmbmVxICgkKENPTkZJR19NTFg1X1RDX0NUKSwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6NjI6XHRtbHg1X2NvcmUteVx0XHRcdCAgICAgJiM0Mzs9IGVuL3RjX2N0Lm8gZW4vdGMvY3RfZnNfZG1mcy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6NjM6XHRtbHg1X2NvcmUtJChDT05GSUdfTUxYNV9TV19TVEVFUklORykgJiM0Mzs9IGVuL3RjL2N0X2ZzX3NtZnMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjY0Olx0bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfSFdfU1RFRVJJTkcpICYjNDM7PSBlbi90Yy9jdF9mc19obWZzLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS02NS1lbmRpZlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjY3Om1seDVfY29yZS0kKENPTkZJR19NTFg1X1RDX1NBTVBMRSkgICAmIzQzOz0gZW4vdGMvc2FtcGxlLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS02OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtNzEtI1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjcyOm1seDVfY29yZS0kKENPTkZJR19NTFg1X0VTV0lUQ0gpICAgJiM0Mzs9IGVzd2l0Y2gubyBlc3dpdGNoX29mZmxvYWRzLm8gZXN3aXRjaF9vZmZsb2Fkc190ZXJtdGJsLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS03My1cdFx0XHRcdCAgICAgIGVjcGYubyByZG1hLm8gZXN3L2xlZ2FjeS5vIGVzdy9hZGpfdnBvcnQubyBcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS03NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo3NjptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9FU1dJVENIKSAgICYjNDM7PSBlc3cvYWNsL2hlbHBlci5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtNzctXHRcdFx0XHQgICAgICBlc3cvYWNsL2VncmVzc19sZ2N5Lm8gZXN3L2FjbC9lZ3Jlc3Nfb2ZsZC5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTgwPWlmbmVxICgkKENPTkZJR19NTFg1X0VOX0lQU0VDKSwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6ODE6XHRtbHg1X2NvcmUtJChDT05GSUdfTUxYNV9FU1dJVENIKSAgICYjNDM7PSBlc3cvaXBzZWNfZnMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTgyLWVuZGlmXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6ODQ6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQlJJREdFKSAgICAmIzQzOz0gZXN3L2JyaWRnZS5vIGVzdy9icmlkZ2VfbWNhc3QubyBlc3cvYnJpZGdlX2RlYnVnZnMubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTg1LVx0XHRcdFx0ICAgICAgZW4vcmVwL2JyaWRnZS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtODYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6ODc6bWx4NV9jb3JlLSQoQ09ORklHX0hXTU9OKSAgICAgICAgICAmIzQzOz0gaHdtb24ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjg4Om1seDVfY29yZS0kKENPTkZJR19NTFg1X01QRlMpICAgICAgJiM0Mzs9IGxpYi9tcGZzLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS04OS1pZm5lcSAoJChDT05GSUdfVlhMQU4pLClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5MDpcdG1seDVfY29yZS15XHRcdCAgICYjNDM7PSBsaWIvdnhsYW4ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTkxLWVuZGlmXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6OTI6bWx4NV9jb3JlLSQoQ09ORklHX1BUUF8xNTg4X0NMT0NLKSAmIzQzOz0gbGliL2Nsb2NrLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5MzptbHg1X2NvcmUtJChDT05GSUdfUENJX0hZUEVSVl9JTlRFUkZBQ0UpICYjNDM7PSBsaWIvaHYubyBsaWIvaHZfdmhjYS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtOTQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTk3LSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5ODptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0lQT0lCKSAmIzQzOz0gaXBvaWIvaXBvaWIubyBpcG9pYi9ldGh0b29sLm8gaXBvaWIvaXBvaWJfdmxhbi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtOTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEwMi0jXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MTAzOm1seDVfY29yZS0kKENPTkZJR19NTFg1X0ZQR0EpICYjNDM7PSBmcGdhL2NtZC5vIGZwZ2EvY29yZS5vIGZwZ2EvY29ubi5vIGZwZ2Evc2RrLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MTA1Om1seDVfY29yZS0kKENPTkZJR19NTFg1X01BQ1NFQykgJiM0Mzs9IGVuX2FjY2VsL21hY3NlYy5vIGxpYi9tYWNzZWNfZnMubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEwNi1cdFx0XHRcdCAgICAgIGVuX2FjY2VsL21hY3NlY19zdGF0cy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjEwODptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9FTl9JUFNFQykgJiM0Mzs9IGVuX2FjY2VsL2lwc2VjLm8gZW5fYWNjZWwvaXBzZWNfcnh0eC5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTA5LVx0XHRcdFx0ICAgICBlbl9hY2NlbC9pcHNlY19zdGF0cy5vIGVuX2FjY2VsL2lwc2VjX2ZzLm8gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjExMjptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9FTl9UTFMpICYjNDM7PSBlbl9hY2NlbC9rdGxzX3N0YXRzLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMTMtXHRcdFx0XHQgICBlbl9hY2NlbC9mc190Y3AubyBlbl9hY2NlbC9rdGxzLm8gZW5fYWNjZWwva3Rsc190eHJ4Lm8gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjExNjptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9FTl9QU1ApICYjNDM7PSBlbl9hY2NlbC9wc3AubyBlbl9hY2NlbC9wc3Bfcnh0eC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTE3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMjAtI1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjEyMTptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9TV19TVEVFUklORykgJiM0Mzs9IHN0ZWVyaW5nL3N3cy9kcl9kb21haW4ubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEyMi1cdFx0XHRcdFx0c3RlZXJpbmcvc3dzL2RyX3RhYmxlLm8gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTQ1LSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxNDY6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfSFdfU1RFRVJJTkcpICYjNDM7PSBzdGVlcmluZy9od3MvY21kLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xNDctXHRcdFx0XHRcdHN0ZWVyaW5nL2h3cy9jb250ZXh0Lm8gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTY3LSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxNjg6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfU0YpICYjNDM7PSBzZi92aGNhX2V2ZW50Lm8gc2YvZGV2L2Rldi5vIHNmL2Rldi9kcml2ZXIubyBpcnFfYWZmaW5pdHkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTE2OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTcyLSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxNzM6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfU0ZfTUFOQUdFUikgJiM0Mzs9IHNmL2NtZC5vIHNmL2h3X3RhYmxlLm8gc2YvZGV2bGluay5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTc0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xNzctI1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjE3ODptbHg1X2NvcmUtJChDT05GSUdfUENJRV9UUEgpICYjNDM7PSBsaWIvc3Qub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTE3OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxODA6b2JqLSQoQ09ORklHX01MWDVfRFBMTCkgJiM0Mzs9IG1seDVfZHBsbC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MTgxOm1seDVfZHBsbC15IDo9XHRkcGxsLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00Mi0jaW5jbHVkZSBcdTAwM2NsaW51eC9zZXFfZmlsZS5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0MzojaW5jbHVkZSBcdTAwM2NsaW51eC9tbHg1L2RyaXZlci5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ1OiNpbmNsdWRlIFwmIzM0O21seDVfY29yZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUxOnN0cnVjdCBtbHg1X2RiX3BnZGlyIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUyLVx0c3RydWN0IGxpc3RfaGVhZFx0bGlzdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjU4OnN0cnVjdCBtbHg1X2RtYV9wb29sIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTU5LVx0LyogUHJvdGVjdHMgcGFnZV9saXN0IGFuZCBwZXItcGFnZSBhbGxvY2F0aW9uIGJpdG1hcHMuICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNjEtXHRzdHJ1Y3QgbGlzdF9oZWFkIHBhZ2VfbGlzdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjYyOlx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTYzLVx0aW50IG5vZGU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo2NzpzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjY4Olx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy02OS1cdHN0cnVjdCBsaXN0X2hlYWQgcG9vbF9saW5rO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTc0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NzU6c3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo3NjpcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sc1tNTFg1X0ZSQUdfQlVGX1BPT0xTX05VTV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy03Ny19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo3OTpzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9zdGF0cyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy04MC1cdGludCBub2RlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6OTA6c3RhdGljIHZvaWQgKm1seDVfZG1hX3phbGxvY19jb2hlcmVudF9ub2RlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy05MS1cdFx0XHRcdFx0ICAgc2l6ZV90IHNpemUsIGRtYV9hZGRyX3QgKmRtYV9oYW5kbGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtOTMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6OTQ6XHRzdHJ1Y3QgZGV2aWNlICpkZXZpY2UgPSBtbHg1X2NvcmVfZG1hX2RldihkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6OTU6XHRzdHJ1Y3QgbWx4NV9wcml2ICpwcml2ID0gXHUwMDI2ZGV2LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy05Ni1cdGludCBvcmlnaW5hbF9ub2RlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTEwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjEwOTpzdGF0aWMgdm9pZCBtbHg1X2RtYV9wb29sX2Rlc3Ryb3koc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMTAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTExNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjExNTpzdGF0aWMgc3RydWN0IG1seDVfZG1hX3Bvb2wgKm1seDVfZG1hX3Bvb2xfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMTYtXHRcdFx0XHRcdFx0ICBpbnQgbm9kZSwgdTggYmxvY2tfc2hpZnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMTcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTE4Olx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2w7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTMyOnN0YXRpYyBzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjEzMzptbHg1X2RtYV9wb29sX3BhZ2VfYWxsb2Moc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMzQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTM1LVx0aW50IGJsb2Nrc19wZXJfcGFnZSA9IEJJVChQQUdFX1NISUZUIC0gcG9vbC1cdTAwM2VibG9ja19zaGlmdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxMzY6XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTM3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE0Ny1cdGJpdG1hcF9maWxsKHBhZ2UtXHUwMDNlYml0bWFwLCBibG9ja3NfcGVyX3BhZ2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTQ4Olx0cGFnZS1cdTAwM2VidWYgPSBtbHg1X2RtYV96YWxsb2NfY29oZXJlbnRfbm9kZShwb29sLVx1MDAzZWRldiwgUEFHRV9TSVpFLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTQ5LVx0XHRcdFx0XHRcdCAgXHUwMDI2cGFnZS1cdTAwM2VkbWEsIHBvb2wtXHUwMDNlbm9kZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTYzOnN0YXRpYyB2b2lkIG1seDVfZG1hX3Bvb2xfcGFnZV9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxNjQ6XHRcdFx0XHQgICAgc3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE2NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxNjY6XHRkbWFfZnJlZV9jb2hlcmVudChtbHg1X2NvcmVfZG1hX2RldihkZXYpLCBQQUdFX1NJWkUsIHBhZ2UtXHUwMDNlYnVmLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTY3LVx0XHRcdCAgcGFnZS1cdTAwM2VkbWEpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE3MjpzdGF0aWMgaW50IG1seDVfZG1hX3Bvb2xfYWxsb2NfZnJvbV9wYWdlKHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTczOlx0XHRcdFx0XHQgc3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE3NC1cdFx0XHRcdFx0IHVuc2lnbmVkIGxvbmcgKmlkeF9vdXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTkwOnN0YXRpYyBzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE5MTptbHg1X2RtYV9wb29sX2FsbG9jKHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sLCB1bnNpZ25lZCBsb25nICppZHhfb3V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTkyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE5MzpcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xOTQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTk3LVx0cGFnZSA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChcdTAwMjZwb29sLVx1MDAzZXBhZ2VfbGlzdCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE5ODpcdFx0XHRcdFx0c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSwgcG9vbF9saW5rKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE5OTpcdGlmIChwYWdlIFx1MDAyNlx1MDAyNiAhbWx4NV9kbWFfcG9vbF9hbGxvY19mcm9tX3BhZ2UocG9vbCwgcGFnZSwgaWR4X291dCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMDAtXHRcdGdvdG8gdW5sb2NrOyAvKiBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGZyb20gZXhpc3RpbmcgcGFnZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjAyOlx0cGFnZSA9IG1seDVfZG1hX3Bvb2xfcGFnZV9hbGxvYyhwb29sKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIwMy1cdGlmICghcGFnZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMDYtXHRsaXN0X2FkZChcdTAwMjZwYWdlLVx1MDAzZXBvb2xfbGluaywgXHUwMDI2cG9vbC1cdTAwM2VwYWdlX2xpc3QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjA3Olx0bWx4NV9kbWFfcG9vbF9hbGxvY19mcm9tX3BhZ2UocG9vbCwgcGFnZSwgaWR4X291dCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMDgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjEzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjE0OnN0YXRpYyB2b2lkIG1seDVfZG1hX3Bvb2xfZnJlZShzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjIxNTpcdFx0XHQgICAgICAgc3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIxNi1cdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBpZHgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjI2LVx0XHRsaXN0X2RlbChcdTAwMjZwYWdlLVx1MDAzZXBvb2xfbGluayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyMjc6XHRcdG1seDVfZG1hX3Bvb2xfcGFnZV9mcmVlKHBvb2wtXHUwMDNlZGV2LCBwYWdlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIyOC1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjM3OnN0YXRpYyB2b2lkIG1seDVfZG1hX3Bvb2xfZGVidWdmc19nZXRfc3RhdHMoc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyMzg6XHRcdFx0XHRcdCAgICBzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9zdGF0cyAqc3RhdHMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMzkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjQwLVx0aW50IGJsb2Nrc19wZXJfcGFnZSA9IEJJVChQQUdFX1NISUZUIC0gcG9vbC1cdTAwM2VibG9ja19zaGlmdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyNDE6XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjQyLVx0c2l6ZV90IGZyZWVfYmxvY2tzID0gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyNTg6c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbF9kZWJ1Z2ZzX3N0YXRzX3ByaW50KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI1OTpcdFx0XHRcdFx0ICAgICAgc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yNjAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjYxOlx0c3RydWN0IG1seDVfZG1hX3Bvb2xfc3RhdHMgc3RhdHMgPSB7fTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI2MzpcdG1seDVfZG1hX3Bvb2xfZGVidWdmc19nZXRfc3RhdHMocG9vbCwgXHUwMDI2c3RhdHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjY0LVx0c2VxX3ByaW50ZihmaWxlLCBcJiMzNDslNGQgICAgICAgJTV6dSAgICAgICU3enUgICAgICAgICAgICU3enVcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjY5OnN0YXRpYyB2b2lkIG1seDVfZG1hX3Bvb2xzX2RlYnVnZnNfcHJpbnRfaGVhZGVyKHN0cnVjdCBzZXFfZmlsZSAqZmlsZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI3MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM9Mjc0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyNzU6bWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzX2Rlc3Ryb3koc3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scyAqbm9kZV9wb29scylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI3Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjc4LVx0XHRpZiAobm9kZV9wb29scy1cdTAwM2Vwb29sc1tpXSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI3OTpcdFx0XHRtbHg1X2RtYV9wb29sX2Rlc3Ryb3kobm9kZV9wb29scy1cdTAwM2Vwb29sc1tpXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yODAtXHRrZnJlZShub2RlX3Bvb2xzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyODM6c3RhdGljIHN0cnVjdCBtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHMgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6Mjg0Om1seDVfZnJhZ19idWZfbm9kZV9wb29sc19jcmVhdGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50IG5vZGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yODUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6Mjg2Olx0c3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scyAqbm9kZV9wb29scztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI4Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yOTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyOTU6XHRcdG5vZGVfcG9vbHMtXHUwMDNlcG9vbHNbaV0gPSBtbHg1X2RtYV9wb29sX2NyZWF0ZShkZXYsIG5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yOTYtXHRcdFx0XHRcdFx0XHQgICAgYmxvY2tfc2hpZnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjk3LVx0XHRpZiAoIW5vZGVfcG9vbHMtXHUwMDNlcG9vbHNbaV0pIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI5ODpcdFx0XHRtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHNfZGVzdHJveShub2RlX3Bvb2xzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI5OS1cdFx0XHRyZXR1cm4gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0zMDY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzA3Om1seDVfZnJhZ19idWZfZG1hX3Bvb2xzX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIHZvaWQgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMDgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzA5Olx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldiA9IGZpbGUtXHUwMDNlcHJpdmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMxMC1cdGludCBub2RlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzEyOlx0bWx4NV9kbWFfcG9vbHNfZGVidWdmc19wcmludF9oZWFkZXIoZmlsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzE3LVx0Zm9yX2VhY2hfbm9kZV9zdGF0ZShub2RlLCBOX1BPU1NJQkxFKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozMTg6XHRcdHN0cnVjdCBtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHMgKm5vZGVfcG9vbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzI0LVx0XHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgTUxYNV9GUkFHX0JVRl9QT09MU19OVU07IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozMjU6XHRcdFx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wgPSBub2RlX3Bvb2xzLVx1MDAzZXBvb2xzW2ldO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzI2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjMzMDpcdFx0XHRtbHg1X2RtYV9wb29sX2RlYnVnZnNfc3RhdHNfcHJpbnQoZmlsZSwgcG9vbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMzEtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMzUtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzM2OkRFRklORV9TSE9XX0FUVFJJQlVURShtbHg1X2ZyYWdfYnVmX2RtYV9wb29sc19kZWJ1Z2ZzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjMzODp2b2lkIG1seDVfZnJhZ19idWZfcG9vbHNfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzM5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM0MDpcdHN0cnVjdCBtbHg1X3ByaXYgKnByaXYgPSBcdTAwMjZkZXYtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM0MS1cdGludCBub2RlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM0Ni1cdGZvcl9lYWNoX25vZGVfc3RhdGUobm9kZSwgTl9QT1NTSUJMRSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzQ3Olx0XHRzdHJ1Y3QgbWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzICpub2RlX3Bvb2xzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzQ4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM1MS1cdFx0XHRjb250aW51ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM1MjpcdFx0bWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzX2Rlc3Ryb3kobm9kZV9wb29scyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zNTMtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzU5OmludCBtbHg1X2ZyYWdfYnVmX3Bvb2xzX2luaXQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM2MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozNjE6XHRzdHJ1Y3QgbWx4NV9wcml2ICpwcml2ID0gXHUwMDI2ZGV2LVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zNjItXHRpbnQgbm9kZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zNjktXHRmb3JfZWFjaF9ub2RlX3N0YXRlKG5vZGUsIE5fUE9TU0lCTEUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM3MDpcdFx0c3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scyAqbm9kZV9wb29scztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM3MjpcdFx0bm9kZV9wb29scyA9IG1seDVfZnJhZ19idWZfbm9kZV9wb29sc19jcmVhdGUoZGV2LCBub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM3My1cdFx0aWYgKCFub2RlX3Bvb2xzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozNzQ6XHRcdFx0bWx4NV9mcmFnX2J1Zl9wb29sc19jbGVhbnVwKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zNzUtXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzgyLVx0XHRcdFx0ICAgIHByaXYtXHUwMDNlZGJnLmRiZ19yb290LCBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozODM6XHRcdFx0XHQgICAgXHUwMDI2bWx4NV9mcmFnX2J1Zl9kbWFfcG9vbHNfZGVidWdmc19mb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozODg6aW50IG1seDVfZnJhZ19idWZfYWxsb2Nfbm9kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgc2l6ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM4OTpcdFx0XHQgICAgIHN0cnVjdCBtbHg1X2ZyYWdfYnVmICpidWYsIGludCBub2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzkwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM5MTpcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzkyLVx0aW50IHBvb2xfaWR4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQwOC1cdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBidWYtXHUwMDNlbnBhZ2VzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDA5Olx0XHRzdHJ1Y3QgbWx4NV9idWZfbGlzdCAqZnJhZyA9IFx1MDAyNmJ1Zi1cdTAwM2VmcmFnc1tpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQxMDpcdFx0c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQxMS1cdFx0dW5zaWduZWQgbG9uZyBpZHg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0MTM6XHRcdHBhZ2UgPSBtbHg1X2RtYV9wb29sX2FsbG9jKHBvb2wsIFx1MDAyNmlkeCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MTQtXHRcdGlmICghcGFnZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDE1Olx0XHRcdG1seDVfZnJhZ19idWZfZnJlZShkZXYsIGJ1Zik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MTYtXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDI0LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQyNTpFWFBPUlRfU1lNQk9MX0dQTChtbHg1X2ZyYWdfYnVmX2FsbG9jX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDI3OnZvaWQgbWx4NV9mcmFnX2J1Zl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2ZyYWdfYnVmICpidWYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00Mjgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDI5LVx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIGJ1Zi1cdTAwM2VucGFnZXM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0MzA6XHRcdHN0cnVjdCBtbHg1X2J1Zl9saXN0ICpmcmFnID0gXHUwMDI2YnVmLVx1MDAzZWZyYWdzW2ldO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDMxOlx0XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDMyOlx0XHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQzMy1cdFx0dW5zaWduZWQgbG9uZyBpZHg7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDQwLVx0XHRpZHggPSAoZnJhZy1cdTAwM2VtYXAgLSBwYWdlLVx1MDAzZWRtYSkgXHUwMDNlXHUwMDNlIHBvb2wtXHUwMDNlYmxvY2tfc2hpZnQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NDE6XHRcdG1seDVfZG1hX3Bvb2xfZnJlZShwb29sLCBwYWdlLCBpZHgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDQyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ0NC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NDU6RVhQT1JUX1NZTUJPTF9HUEwobWx4NV9mcmFnX2J1Zl9mcmVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ0NzpzdGF0aWMgc3RydWN0IG1seDVfZGJfcGdkaXIgKm1seDVfYWxsb2NfZGJfcGdkaXIoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ0OC1cdFx0XHRcdFx0XHQgaW50IG5vZGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDUwLVx0dTMyIGRiX3Blcl9wYWdlID0gUEFHRV9TSVpFIC8gY2FjaGVfbGluZV9zaXplKCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NTE6XHRzdHJ1Y3QgbWx4NV9kYl9wZ2RpciAqcGdkaXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00NTItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDY1Olx0cGdkaXItXHUwMDNlZGJfcGFnZSA9IG1seDVfZG1hX3phbGxvY19jb2hlcmVudF9ub2RlKGRldiwgUEFHRV9TSVpFLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDY2LVx0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZwZ2Rpci1cdTAwM2VkYl9kbWEsIG5vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ3NjpzdGF0aWMgaW50IG1seDVfYWxsb2NfZGJfZnJvbV9wZ2RpcihzdHJ1Y3QgbWx4NV9kYl9wZ2RpciAqcGdkaXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0Nzc6XHRcdFx0XHQgICAgc3RydWN0IG1seDVfZGIgKmRiKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDc4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MDE6aW50IG1seDVfZGJfYWxsb2Nfbm9kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9kYiAqZGIsIGludCBub2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTAyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUwMzpcdHN0cnVjdCBtbHg1X2RiX3BnZGlyICpwZ2RpcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUwNC1cdGludCByZXQgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUwOC1cdGxpc3RfZm9yX2VhY2hfZW50cnkocGdkaXIsIFx1MDAyNmRldi1cdTAwM2Vwcml2LnBnZGlyX2xpc3QsIGxpc3QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MDk6XHRcdGlmICghbWx4NV9hbGxvY19kYl9mcm9tX3BnZGlyKHBnZGlyLCBkYikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MTAtXHRcdFx0Z290byBvdXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MTI6XHRwZ2RpciA9IG1seDVfYWxsb2NfZGJfcGdkaXIoZGV2LCBub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUxMy1cdGlmICghcGdkaXIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MjAtXHQvKiBUaGlzIHNob3VsZCBuZXZlciBmYWlsIC0tIHdlIGp1c3QgYWxsb2NhdGVkIGFuIGVtcHR5IHBhZ2U6ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MjE6XHRXQVJOX09OKG1seDVfYWxsb2NfZGJfZnJvbV9wZ2RpcihwZ2RpciwgZGIpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUyMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MjctfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTI4OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfZGJfYWxsb2Nfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MzA6dm9pZCBtbHg1X2RiX2ZyZWUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZGIgKmRiKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTMxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MzgtXHRpZiAoYml0bWFwX2Z1bGwoZGItXHUwMDNldS5wZ2Rpci1cdTAwM2ViaXRtYXAsIGRiX3Blcl9wYWdlKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTM5Olx0XHRkbWFfZnJlZV9jb2hlcmVudChtbHg1X2NvcmVfZG1hX2RldihkZXYpLCBQQUdFX1NJWkUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01NDAtXHRcdFx0XHQgIGRiLVx1MDAzZXUucGdkaXItXHUwMDNlZGJfcGFnZSwgZGItXHUwMDNldS5wZ2Rpci1cdTAwM2VkYl9kbWEpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTU0Ny19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1NDg6RVhQT1JUX1NZTUJPTF9HUEwobWx4NV9kYl9mcmVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTU0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjU1MDp2b2lkIG1seDVfZmlsbF9wYWdlX2ZyYWdfYXJyYXlfcGVybShzdHJ1Y3QgbWx4NV9mcmFnX2J1ZiAqYnVmLCBfX2JlNjQgKnBhcywgdTggcGVybSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTU1MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTU3LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjU1ODpFWFBPUlRfU1lNQk9MX0dQTChtbHg1X2ZpbGxfcGFnZV9mcmFnX2FycmF5X3Blcm0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTYwOnZvaWQgbWx4NV9maWxsX3BhZ2VfZnJhZ19hcnJheShzdHJ1Y3QgbWx4NV9mcmFnX2J1ZiAqYnVmLCBfX2JlNjQgKnBhcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTU2MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1NjI6XHRtbHg1X2ZpbGxfcGFnZV9mcmFnX2FycmF5X3Blcm0oYnVmLCBwYXMsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTYzLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjU2NDpFWFBPUlRfU1lNQk9MX0dQTChtbHg1X2ZpbGxfcGFnZV9mcmFnX2FycmF5KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMzktI2luY2x1ZGUgXHUwMDNjbGludXgvcmFuZG9tLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo0MDojaW5jbHVkZSBcdTAwM2NsaW51eC9tbHg1L2RyaXZlci5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6NDE6I2luY2x1ZGUgXHUwMDNjbGludXgvbWx4NS9lcS5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtNDItI2luY2x1ZGUgXHUwMDNjbGludXgvZGVidWdmcy5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtNDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6NDQ6I2luY2x1ZGUgXCYjMzQ7bWx4NV9jb3JlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy00NS0jaW5jbHVkZSBcJiMzNDtsaWIvZXEuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy00OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo1MDpzdHJ1Y3QgbWx4NV9pZmNfbWJveF9vdXRfYml0cyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtNTEtXHR1OCAgICAgICAgIHN0YXR1c1sweDhdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy01OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo1OTpzdHJ1Y3QgbWx4NV9pZmNfbWJveF9pbl9iaXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy02MC1cdHU4ICAgICAgICAgb3Bjb2RlWzB4MTBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYz05Nz1zdGF0aWMgdTE2IGluX3RvX3VpZCh2b2lkICppbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTA0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjEwNTpzdGF0aWMgYm9vbCBtbHg1X2NtZF9pc190aHJvdHRsZV9vcGNvZGUodTE2IG9wKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTEwNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTExNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxMTg6c3RhdGljIHN0cnVjdCBtbHg1X2NtZF93b3JrX2VudCAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTE5OmNtZF9hbGxvY19lbnQoc3RydWN0IG1seDVfY21kICpjbWQsIHN0cnVjdCBtbHg1X2NtZF9tc2cgKmluLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjEyMDpcdCAgICAgIHN0cnVjdCBtbHg1X2NtZF9tc2cgKm91dCwgdm9pZCAqdW91dCwgaW50IHVvdXRfc2l6ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxMjE6XHQgICAgICBtbHg1X2NtZF9jYmtfdCBjYmssIHZvaWQgKmNvbnRleHQsIGludCBwYWdlX3F1ZXVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTEyMi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTIzLVx0Z2ZwX3QgYWxsb2NfZmxhZ3MgPSBjYmsgPyBHRlBfQVRPTUlDIDogR0ZQX0tFUk5FTDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxMjQ6XHRzdHJ1Y3QgbWx4NV9jbWRfd29ya19lbnQgKmVudDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xMjUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNDU6c3RhdGljIHZvaWQgY21kX2ZyZWVfZW50KHN0cnVjdCBtbHg1X2NtZF93b3JrX2VudCAqZW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE0Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNTA6c3RhdGljIHU4IGFsbG9jX3Rva2VuKHN0cnVjdCBtbHg1X2NtZCAqY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE1MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE2My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNjQ6c3RhdGljIGludCBjbWRfYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY21kICpjbWQsIHN0cnVjdCBtbHg1X2NtZF93b3JrX2VudCAqZW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE2NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE4MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxODE6c3RhdGljIHZvaWQgY21kX2ZyZWVfaW5kZXgoc3RydWN0IG1seDVfY21kICpjbWQsIGludCBpZHgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTgyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE4ODpzdGF0aWMgdm9pZCBjbWRfZW50X2dldChzdHJ1Y3QgbWx4NV9jbWRfd29ya19lbnQgKmVudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xODkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTkzOnN0YXRpYyB2b2lkIGNtZF9lbnRfcHV0KHN0cnVjdCBtbHg1X2NtZF93b3JrX2VudCAqZW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE5NC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTk1Olx0c3RydWN0IG1seDVfY21kICpjbWQgPSBlbnQtXHUwMDNlY21kO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE5Ni1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTM6c3RhdGljIHN0cnVjdCBtbHg1X2NtZF9sYXlvdXQgKmdldF9pbnN0KHN0cnVjdCBtbHg1X2NtZCAqY21kLCBpbnQgaWR4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTg6c3RhdGljIGludCBtbHg1X2NhbGNfY21kX2Jsb2NrcyhzdHJ1Y3QgbWx4NV9jbWRfbXNnICptc2cpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjE5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9MjI2PXN0YXRpYyB1OCB4b3I4X2J1Zih2b2lkICpidWYsIHNpemVfdCBvZmZzZXQsIGludCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIzOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMzk6c3RhdGljIGludCB2ZXJpZnlfYmxvY2tfc2lnKHN0cnVjdCBtbHg1X2NtZF9wcm90X2Jsb2NrICpibG9jaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNDAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjI0MTpcdHNpemVfdCByc3ZkMF9vZmYgPSBvZmZzZXRvZihzdHJ1Y3QgbWx4NV9jbWRfcHJvdF9ibG9jaywgcnN2ZDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI0Mi1cdGludCB4b3JfbGVuID0gc2l6ZW9mKCpibG9jaykgLSBzaXplb2YoYmxvY2stXHUwMDNlZGF0YSkgLSAxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNTItXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwODo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzI5MgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDExOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIG1seDUgRHJpdmVyKioKCk9rYXksIHNvIHRoZSB0ZXh0IGNvbmZpcm1zIHRoaXMgaXMgYSBoYXJkd2FyZSBkcml2ZXIsIG5vdCBzb21ldGhpbmcgc3l6a2FsbGVyJiMzOTtzIGVtdWxhdGluZy4gR29vZCwgdGhhdCBlbGltaW5hdGVzIGEgcG9zc2liaWxpdHkuIE5vdywgbGV0JiMzOTtzIGRpZyBhIGxpdHRsZSBkZWVwZXIuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uY2AgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBzb3J0IG9mIHNvZnR3YXJlIGludGVyZmFjZSBpbnZvbHZlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBpbnRlcmFjdHMgc29sZWx5IHRocm91Z2ggUENJLCBvciBpZiB0aGVyZSYjMzk7cyBzb21lIGludGVybmFsIHNvZnR3YXJlIGFzcGVjdC4gQWgsIHRoZSBgbWx4NV9jb3JlYCBkcml2ZXIgKmRvZXMqIGJpbmQgdG8gUENJIGRldmljZXMsIHdoaWNoIGlzbiYjMzk7dCBlbnRpcmVseSB1bmV4cGVjdGVkLiBCdXQgdGhhdCBicmluZ3MgdXAgYW5vdGhlciBxdWVzdGlvbjogaXMgdGhlcmUgYW55IHZpcnR1YWwgYnVzIG1lY2hhbmlzbSB0aGF0IHRoaXMgZHJpdmVyIHV0aWxpemVzLCBwZXJoYXBzIHRvIGhhbmRsZSByZXNvdXJjZSBhbGxvY2F0aW9uIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jYCB0byBzZWUgaWYgaXQgcHJvdmlkZXMgYW55IGNsdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA4OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTIzNDM9c3RhdGljIGludCBfX2luaXQgbWx4NV9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoyMzYzOlx0ZXJyID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZtbHg1X2NvcmVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjM2NC1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDg6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM4MDEKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBY2Nlc3NpYmlsaXR5IG9mIFRoaXMgQ29kZSBTbmlwcGV0KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kLCB5ZWFoLCBpdCYjMzk7cyBkZWZpbml0ZWx5IGEgUENJIGRyaXZlciwgc3BlY2lmaWNhbGx5IG9uZSByZWxhdGVkIHRvIE1lbGxhbm94IGhhcmR3YXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBJIHJlYWNoIHRoaXMgY29kZSB2aWEgc29tZXRoaW5nIGxpa2UgbmV0bGluaywgb3IgYSBtb3JlIGFic3RyYWN0ZWQgaW50ZXJmYWNlLCB3aXRob3V0IGFjdHVhbGx5IGhhdmluZyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcHJlc2VudD8gQmVjYXVzZSwgaWRlYWxseSwgSSYjMzk7ZCB3YW50IHRvIHRlc3QgaXQgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LgoKVW5mb3J0dW5hdGVseSwgbm8uIFRoZSBgbWx4NWVfcHJpdmAgc3RydWN0dXJlLCB3aGljaCBJIGFzc3VtZSBpcyBjZW50cmFsIHRvIHRoaXMgd2hvbGUgdGhpbmcsIGdldHMgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXplZCBkdXJpbmcgdGhlIFBDSSBkZXZpY2UgcHJvYmUuIFdpdGhvdXQgdGhlIGhhcmR3YXJlLCB0aGUgZHJpdmVyIGRvZXNuJiMzOTt0IGdldCBwcm9iZWQsIG1lYW5pbmcgdGhhdCBgcHJpdmAgc3RydWN0dXJlIHNpbXBseSB3b24mIzM5O3QgZXhpc3QuIEluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQg4oCTIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIFFFTVUg4oCTIEkmIzM5O20gcHJldHR5IGNvbmZpZGVudCB0aGF0IHRoZSBtb2RpZmllZCBjb2RlIHdvdWxkIGJlIHVucmVhY2hhYmxlIHdpdGhvdXQgZG9pbmcgUENJIHBhc3N0aHJvdWdoLiBTbywgYmFzZWQgb24gdGhhdCwgdGhlIGZ1enppbmcgcG90ZW50aWFsIGhlcmUgc2VlbXMgbG93LiBMZXQmIzM5O3MgbWFyayBgV29ydGhGdXp6aW5nPWZhbHNlYCBmb3Igbm93LgoKQnV0IHdhaXQgYSBtaW51dGUuLi4gY291bGQgdGhpcyBzb21laG93IGJlIGFjY2Vzc2VkIHRocm91Z2ggc29tZXRoaW5nIGxpa2UgYG5ldGRldnNpbWAsIG9yIHNvbWUgb3RoZXIgc29ydCBvZiBtb2NrIGRldmljZSBkcml2ZXI/IE5vLCBgbmV0ZGV2c2ltYCBpcyBhIGNvbXBsZXRlbHkgc2VwYXJhdGUgZHJpdmVyLCBzbyB0aGF0IHdvdWxkbiYjMzk7dCB3b3JrLiBIbW1tLCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgaWYgdGhlcmUmIzM5O3MgYW55IHNvcnQgb2YgYG1seDVgIG1vY2sgZHJpdmVyIHByZXNlbnQgaW4gdGhlIGtlcm5lbC4gVGhpcyBuZWVkcyBhIGxpdHRsZSBkZWVwZXIgZGl2ZSwgYXMgYSBkZWRpY2F0ZWQgbW9jayBjb3VsZCBiZSB0aGUga2V5IHRvIGNvbnRyb2xsZWQgZnV6emluZy4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA4OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21seDVfY29yZV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0yMjY1PWludCBtbHg1X3JlY292ZXJfZGV2aWNlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMjc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoyMjc2OnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtbHg1X2NvcmVfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMjc3LVx0Lm5hbWUgICAgICAgICAgID0gS0JVSUxEX01PRE5BTUUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0yMzAxPXN0cnVjdCBtbHg1X2NvcmVfZGV2ICptbHg1X3ZmX2dldF9jb3JlX2RldihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjIzMDU6XHRtZGV2ID0gcGNpX2lvdl9nZXRfcGZfZHJ2ZGF0YShwZGV2LCBcdTAwMjZtbHg1X2NvcmVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjMwNi1cdGlmIChJU19FUlIobWRldikpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0yMzQzPXN0YXRpYyBpbnQgX19pbml0IG1seDVfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjM2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MjM2MzpcdGVyciA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2bWx4NV9jb3JlX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzNjQtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MjM3OD1zdGF0aWMgdm9pZCBfX2V4aXQgbWx4NV9jbGVhbnVwKHZvaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzNzkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoyMzgwOlx0cGNpX3VucmVnaXN0ZXJfZHJpdmVyKFx1MDAyNm1seDVfY29yZV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzgxLVx0bWx4NV9zZl9kcml2ZXJfdW5yZWdpc3RlcigpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA4OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0OTI4CgkJCQkJCQlvdXRwdXQ6IDg2CgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXNzZXNzbWVudCBvZiB0aGlzIHNpdHVhdGlvbjoKCioqVW5yZWFjaGFibGUgQ29kZSBpbiB0aGUgTWVsbGFub3ggRHJpdmVyKioKCkFscmlnaHQsIEkmIzM5O3ZlIHRha2VuIGEgbG9vayBhdCB0aGlzIHBhdGNoLCBhbmQgdGhlIGNvbmNsdXNpb24gaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlcmUmIzM5O3Mgbm8gcG9pbnQgaW4gZXZlbiBjb25zaWRlcmluZyB0aGlzIGNvZGUgZm9yIGZ1enppbmcgd2l0aCB0aGUgc3RhbmRhcmQgc3l6a2FsbGVyIHNldHVwLiBUaGUgY3J1Y2lhbCB0aGluZyBpcyB0aGF0IHRoaXMgcGF0Y2ggdGFyZ2V0cyB0aGUgTWVsbGFub3ggbWx4NSBldGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgKmhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIqLiBTaW5jZSBzeXprYWxsZXIsIGluIGl0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIGZvciBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZG9lc24mIzM5O3QgYWN0dWFsbHkgKmVtdWxhdGUqIE1lbGxhbm94IGhhcmR3YXJlLCB0aGUgY29kZSBtb2RpZmllZCBieSB0aGlzIHBhdGNoIGlzIHNpbXBseSB1bnJlYWNoYWJsZSBkdXJpbmcgYW55IHN0YW5kYXJkIGZ1enppbmcgcnVucy4gSXQmIzM5O3Mgbm90IGEgcXVlc3Rpb24gb2YgY29tcGxleGl0eSBvciBwb3RlbnRpYWwgZm9yIGJ1Z3M7IGl0JiMzOTtzIGEgbWF0dGVyIG9mIHRoZSBoYXJkd2FyZSBiZWluZyBmdW5kYW1lbnRhbGx5IGFic2VudCBpbiB0aGUgdGFyZ2V0IGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXTigJlzIGp1c3Qgbm90IGdvaW5nIHRvIGJlIHRyaWdnZXJlZCBpbiBhIHdheSB0aGF04oCZcyB1c2VmdWwgZm9yIGZpbmRpbmcgdnVsbmVyYWJpbGl0aWVzIHdpdGggdGhlIHJlc291cmNlcyB3ZSBoYXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwODo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBTaW5jZSBzeXprYWxsZXIgZG9lcyBub3QgZW11bGF0ZSBNZWxsYW5veCBoYXJkd2FyZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUpLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVsbGFub3ggbWx4NSBldGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2Ugc3l6a2FsbGVyIGRvZXMgbm90IGVtdWxhdGUgTWVsbGFub3ggaGFyZHdhcmUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA4OjUzOjAxLjQ3OTU0MzY0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMDI3NjAyNjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVsbGFub3ggbWx4NSBldGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2Ugc3l6a2FsbGVyIGRvZXMgbm90IGVtdWxhdGUgTWVsbGFub3ggaGFyZHdhcmUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDg6NTM6MDEuNDc5NTUxOTIzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDkwMjIzNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5ZjY1Yzk1NTQ2OWNiZDU3MzQzNTVlZTJlNmExNmRiZmM1NzkyMTA5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVuIDIyIDA4OjUyOjU5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmhcXG5pbmRleCAyMjcwZTJlNTUwZGQ5ZS4uZDUwNzI4OTA5NmMyMDYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaFxcbkBAIC05ODcsNiArOTg3LDE4IEBAIHN0cnVjdCBtbHg1ZV9wcml2IHtcXG4gXFx0c3RydWN0IGV0aHRvb2xfZmVjX2hpc3RfcmFuZ2UgKmZlY19yYW5nZXM7XFxuIH07XFxuIFxcbitzdGF0aWMgaW5saW5lIHUxNiBtbHg1ZV9zdGF0c19uY2hfcmVhZChjb25zdCBzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcXG4re1xcbitcXHQvKiBQYWlycyB3aXRoIHNtcF9zdG9yZV9yZWxlYXNlIGluIG1seDVlX3N0YXRzX25jaF93cml0ZSgpLiAqL1xcbitcXHRyZXR1cm4gc21wX2xvYWRfYWNxdWlyZShcXHUwMDI2cHJpdi1cXHUwMDNlc3RhdHNfbmNoKTtcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSB2b2lkIG1seDVlX3N0YXRzX25jaF93cml0ZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgdTE2IG4pXFxuK3tcXG4rXFx0LyogUGFpcnMgd2l0aCBzbXBfbG9hZF9hY3F1aXJlIGluIG1seDVlX3N0YXRzX25jaF9yZWFkKCkuICovXFxuK1xcdHNtcF9zdG9yZV9yZWxlYXNlKFxcdTAwMjZwcml2LVxcdTAwM2VzdGF0c19uY2gsIG4pO1xcbit9XFxuK1xcbiBzdHJ1Y3QgbWx4NWVfZGV2IHtcXG4gXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcXG4gXFx0c3RydWN0IGRldmxpbmtfcG9ydCBkbF9wb3J0O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vaHZfdmhjYV9zdGF0cy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2h2X3ZoY2Ffc3RhdHMuY1xcbmluZGV4IDE5NTg2M2IyYzAxM2UyLi45NzQ3ZDc3MzZkMzdhZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vaHZfdmhjYV9zdGF0cy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2h2X3ZoY2Ffc3RhdHMuY1xcbkBAIC0zMyw5ICszMywxMCBAQCBtbHg1ZV9odl92aGNhX2ZpbGxfcmluZ19zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgaW50IGNoLFxcbiBzdGF0aWMgdm9pZCBtbHg1ZV9odl92aGNhX2ZpbGxfc3RhdHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHZvaWQgKmRhdGEsXFxuIFxcdFxcdFxcdFxcdCAgICAgaW50IGJ1Zl9sZW4pXFxuIHtcXG4rXFx0dTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xcbiBcXHRpbnQgY2gsIGkgPSAwO1xcbiBcXG4tXFx0Zm9yIChjaCA9IDA7IGNoIFxcdTAwM2MgcHJpdi1cXHUwMDNlc3RhdHNfbmNoOyBjaCsrKSB7XFxuK1xcdGZvciAoY2ggPSAwOyBjaCBcXHUwMDNjIG5jaDsgY2grKykge1xcbiBcXHRcXHR2b2lkICpidWYgPSBkYXRhICsgaTtcXG4gXFxuIFxcdFxcdGlmIChXQVJOX09OX09OQ0UoYnVmICtcXG5AQCAtNDksOSArNTAsMTYgQEAgc3RhdGljIHZvaWQgbWx4NWVfaHZfdmhjYV9maWxsX3N0YXRzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCB2b2lkICpkYXRhLFxcbiB9XFxuIFxcbiBzdGF0aWMgaW50IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX3NpemUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXFxuK3tcXG4rXFx0dTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xcbitcXG4rXFx0cmV0dXJuIHNpemVvZihzdHJ1Y3QgbWx4NWVfaHZfdmhjYV9wZXJfcmluZ19zdGF0cykgKiBuY2g7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgbWx4NWVfaHZfdmhjYV9zdGF0c19idWZfbWF4X3NpemUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXFxuIHtcXG4gXFx0cmV0dXJuIChzaXplb2Yoc3RydWN0IG1seDVlX2h2X3ZoY2FfcGVyX3Jpbmdfc3RhdHMpICpcXG4tXFx0XFx0cHJpdi1cXHUwMDNlc3RhdHNfbmNoKTtcXG4rXFx0XFx0bWF4KHByaXYtXFx1MDAzZW1heF9uY2gsIHByaXYtXFx1MDAzZXN0YXRzX25jaCkpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbkBAIC02Nyw3ICs3NSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2h2X3ZoY2Ffc3RhdHNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdHNhZ2VudCA9IGNvbnRhaW5lcl9vZihkd29yaywgc3RydWN0IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYWdlbnQsIHdvcmspO1xcbiBcXHRwcml2ID0gY29udGFpbmVyX29mKHNhZ2VudCwgc3RydWN0IG1seDVlX3ByaXYsIHN0YXRzX2FnZW50KTtcXG4gXFx0YnVmX2xlbiA9IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX3NpemUocHJpdik7XFxuLVxcdGFnZW50ID0gc2FnZW50LVxcdTAwM2VhZ2VudDtcXG4rXFx0YWdlbnQgPSBSRUFEX09OQ0Uoc2FnZW50LVxcdTAwM2VhZ2VudCk7XFxuIFxcdGJ1ZiA9IHNhZ2VudC1cXHUwMDNlYnVmO1xcbiBcXG4gXFx0bWVtc2V0KGJ1ZiwgMCwgYnVmX2xlbik7XFxuQEAgLTEwMCw3ICsxMDgsNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX2NvbnRyb2woc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQsXFxuIFxcdHNhZ2VudCA9IFxcdTAwMjZwcml2LVxcdTAwM2VzdGF0c19hZ2VudDtcXG4gXFxuIFxcdGJsb2NrLVxcdTAwM2V2ZXJzaW9uID0gTUxYNV9IVl9WSENBX1NUQVRTX1ZFUlNJT047XFxuLVxcdGJsb2NrLVxcdTAwM2VyaW5ncyAgID0gcHJpdi1cXHUwMDNlc3RhdHNfbmNoO1xcbitcXHRibG9jay1cXHUwMDNlcmluZ3MgICA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xcbiBcXG4gXFx0aWYgKCFibG9jay1cXHUwMDNlY29tbWFuZCkge1xcbiBcXHRcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNnByaXYtXFx1MDAzZXN0YXRzX2FnZW50LndvcmspO1xcbkBAIC0xMjIsMTggKzEzMCwyMSBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX2NsZWFudXAoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpXFxuIFxcbiB2b2lkIG1seDVlX2h2X3ZoY2Ffc3RhdHNfY3JlYXRlKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxcbiB7XFxuLVxcdGludCBidWZfbGVuID0gbWx4NWVfaHZfdmhjYV9zdGF0c19idWZfc2l6ZShwcml2KTtcXG4rXFx0aW50IGJ1Zl9sZW4gPSBtbHg1ZV9odl92aGNhX3N0YXRzX2J1Zl9tYXhfc2l6ZShwcml2KTtcXG4gXFx0c3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQ7XFxuIFxcbiBcXHRwcml2LVxcdTAwM2VzdGF0c19hZ2VudC5idWYgPSBrdnphbGxvYyhidWZfbGVuLCBHRlBfS0VSTkVMKTtcXG4gXFx0aWYgKCFwcml2LVxcdTAwM2VzdGF0c19hZ2VudC5idWYpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuK1xcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZwcml2LVxcdTAwM2VzdGF0c19hZ2VudC53b3JrLCBtbHg1ZV9odl92aGNhX3N0YXRzX3dvcmspO1xcbitcXG4gXFx0YWdlbnQgPSBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHByaXYtXFx1MDAzZW1kZXYtXFx1MDAzZWh2X3ZoY2EsXFxuIFxcdFxcdFxcdFxcdFxcdCAgTUxYNV9IVl9WSENBX0FHRU5UX1NUQVRTLFxcbiBcXHRcXHRcXHRcXHRcXHQgIG1seDVlX2h2X3ZoY2Ffc3RhdHNfY29udHJvbCwgTlVMTCxcXG4gXFx0XFx0XFx0XFx0XFx0ICBtbHg1ZV9odl92aGNhX3N0YXRzX2NsZWFudXAsXFxuLVxcdFxcdFxcdFxcdFxcdCAgcHJpdik7XFxuK1xcdFxcdFxcdFxcdFxcdCAgcHJpdixcXG4rXFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2cHJpdi1cXHUwMDNlc3RhdHNfYWdlbnQuYWdlbnQpO1xcbiBcXG4gXFx0aWYgKElTX0VSUl9PUl9OVUxMKGFnZW50KSkge1xcbiBcXHRcXHRpZiAoSVNfRVJSKGFnZW50KSlcXG5AQCAtMTQyLDE4ICsxNTMsMjEgQEAgdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX2NyZWF0ZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcXG4gXFx0XFx0XFx0XFx0ICAgIGFnZW50KTtcXG4gXFxuIFxcdFxcdGt2ZnJlZShwcml2LVxcdTAwM2VzdGF0c19hZ2VudC5idWYpO1xcbi1cXHRcXHRyZXR1cm47XFxuK1xcdFxcdHByaXYtXFx1MDAzZXN0YXRzX2FnZW50LmJ1ZiA9IE5VTEw7XFxuIFxcdH1cXG4tXFxuLVxcdHByaXYtXFx1MDAzZXN0YXRzX2FnZW50LmFnZW50ID0gYWdlbnQ7XFxuLVxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZwcml2LVxcdTAwM2VzdGF0c19hZ2VudC53b3JrLCBtbHg1ZV9odl92aGNhX3N0YXRzX3dvcmspO1xcbiB9XFxuIFxcbiB2b2lkIG1seDVlX2h2X3ZoY2Ffc3RhdHNfZGVzdHJveShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcXG4ge1xcbi1cXHRpZiAoSVNfRVJSX09SX05VTEwocHJpdi1cXHUwMDNlc3RhdHNfYWdlbnQuYWdlbnQpKVxcbitcXHRzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudDtcXG4rXFxuK1xcdGFnZW50ID0gUkVBRF9PTkNFKHByaXYtXFx1MDAzZXN0YXRzX2FnZW50LmFnZW50KTtcXG4rXFx0aWYgKElTX0VSUl9PUl9OVUxMKGFnZW50KSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4tXFx0bWx4NV9odl92aGNhX2FnZW50X2Rlc3Ryb3kocHJpdi1cXHUwMDNlc3RhdHNfYWdlbnQuYWdlbnQpO1xcbitcXHRtbHg1X2h2X3ZoY2FfYWdlbnRfZGVzdHJveShhZ2VudCk7XFxuIFxcdGt2ZnJlZShwcml2LVxcdTAwM2VzdGF0c19hZ2VudC5idWYpO1xcbitcXG4rXFx0V1JJVEVfT05DRShwcml2LVxcdTAwM2VzdGF0c19hZ2VudC5hZ2VudCwgTlVMTCk7XFxuK1xcdHByaXYtXFx1MDAzZXN0YXRzX2FnZW50LmJ1ZiA9IE5VTEw7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmNcXG5pbmRleCA3NzVmMGM2ZTU1Yzk1NS4uYWE4NjEwY2VkYWE4NWIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmNcXG5AQCAtMjc3Myw3ICsyNzczLDcgQEAgc3RhdGljIGludCBtbHg1ZV9jaGFubmVsX3N0YXRzX2FsbG9jKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBpbnQgaXgsIGludCBjcHUpXFxuIFxcdFxcdFxcdFxcdFxcdFxcdEdGUF9LRVJORUwsIGNwdV90b19ub2RlKGNwdSkpO1xcbiBcXHRpZiAoIXByaXYtXFx1MDAzZWNoYW5uZWxfc3RhdHNbaXhdKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4tXFx0cHJpdi1cXHUwMDNlc3RhdHNfbmNoKys7XFxuK1xcdG1seDVlX3N0YXRzX25jaF93cml0ZShwcml2LCBwcml2LVxcdTAwM2VzdGF0c19uY2ggKyAxKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuQEAgLTQwNDAsOSArNDA0MCwxMCBAQCBzdGF0aWMgaW50IG1seDVlX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxcbiBcXG4gdm9pZCBtbHg1ZV9mb2xkX3N3X3N0YXRzNjQoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCAqcylcXG4ge1xcbitcXHR1MTYgbmNoID0gbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdik7XFxuIFxcdGludCBpO1xcbiBcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHByaXYtXFx1MDAzZXN0YXRzX25jaDsgaSsrKSB7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBuY2g7IGkrKykge1xcbiBcXHRcXHRzdHJ1Y3QgbWx4NWVfY2hhbm5lbF9zdGF0cyAqY2hhbm5lbF9zdGF0cyA9IHByaXYtXFx1MDAzZWNoYW5uZWxfc3RhdHNbaV07XFxuIFxcdFxcdHN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqeHNrcnFfc3RhdHMgPSBcXHUwMDI2Y2hhbm5lbF9zdGF0cy1cXHUwMDNleHNrcnE7XFxuIFxcdFxcdHN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqcnFfc3RhdHMgPSBcXHUwMDI2Y2hhbm5lbF9zdGF0cy1cXHUwMDNlcnE7XFxuQEAgLTU0ODgsNyArNTQ4OSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9xdWV1ZV9zdGF0c19yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaSxcXG4gXFx0c3RydWN0IG1seDVlX3JxX3N0YXRzICp4c2tycV9zdGF0cztcXG4gXFx0c3RydWN0IG1seDVlX3JxX3N0YXRzICpycV9zdGF0cztcXG4gXFxuLVxcdGlmIChtbHg1ZV9pc191cGxpbmtfcmVwKHByaXYpIHx8ICFwcml2LVxcdTAwM2VzdGF0c19uY2gpXFxuK1xcdGlmIChtbHg1ZV9pc191cGxpbmtfcmVwKHByaXYpIHx8ICFtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0Y2hhbm5lbF9zdGF0cyA9IHByaXYtXFx1MDAzZWNoYW5uZWxfc3RhdHNbaV07XFxuQEAgLTU1MTIsNyArNTUxMyw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9xdWV1ZV9zdGF0c190eChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaSxcXG4gXFx0c3RydWN0IG1seDVlX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiBcXHRzdHJ1Y3QgbWx4NWVfc3Ffc3RhdHMgKnNxX3N0YXRzO1xcbiBcXG4tXFx0aWYgKCFwcml2LVxcdTAwM2VzdGF0c19uY2gpXFxuK1xcdGlmICghbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdikpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdC8qIG5vIHNwZWNpYWwgY2FzZSBuZWVkZWQgZm9yIHB0cCBodGIgZXRjIHNpbmNlIHR4cTJzcV9zdGF0cyBpcyBrZXB0IHVwXFxuQEAgLTU1MzgsNiArNTUzOSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9iYXNlX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX3N0YXRzX3R4ICp0eClcXG4ge1xcbiBcXHRzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XFxuK1xcdHUxNiBuY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcXG4gXFx0c3RydWN0IG1seDVlX3B0cCAqcHRwX2NoYW5uZWw7XFxuIFxcdGludCBpLCB0YztcXG4gXFxuQEAgLTU1NDksNyArNTU1MSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9iYXNlX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdHJ4LVxcdTAwM2Vod19ncm9fd2lyZV9wYWNrZXRzID0gMDtcXG4gXFx0XFx0cngtXFx1MDAzZWh3X2dyb193aXJlX2J5dGVzID0gMDtcXG4gXFxuLVxcdFxcdGZvciAoaSA9IHByaXYtXFx1MDAzZWNoYW5uZWxzLnBhcmFtcy5udW1fY2hhbm5lbHM7IGkgXFx1MDAzYyBwcml2LVxcdTAwM2VzdGF0c19uY2g7IGkrKykge1xcbitcXHRcXHRmb3IgKGkgPSBwcml2LVxcdTAwM2VjaGFubmVscy5wYXJhbXMubnVtX2NoYW5uZWxzOyBpIFxcdTAwM2MgbmNoOyBpKyspIHtcXG4gXFx0XFx0XFx0c3RydWN0IG5ldGRldl9xdWV1ZV9zdGF0c19yeCByeF9pID0gezB9O1xcbiBcXG4gXFx0XFx0XFx0bWx4NWVfZ2V0X3F1ZXVlX3N0YXRzX3J4KGRldiwgaSwgXFx1MDAyNnJ4X2kpO1xcbkBAIC01NTg1LDcgKzU1ODcsNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9nZXRfYmFzZV9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHR0eC1cXHUwMDNlc3RvcCA9IDA7XFxuIFxcdHR4LVxcdTAwM2V3YWtlID0gMDtcXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwcml2LVxcdTAwM2VzdGF0c19uY2g7IGkrKykge1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbmNoOyBpKyspIHtcXG4gXFx0XFx0c3RydWN0IG1seDVlX2NoYW5uZWxfc3RhdHMgKmNoYW5uZWxfc3RhdHMgPSBwcml2LVxcdTAwM2VjaGFubmVsX3N0YXRzW2ldO1xcbiBcXG4gXFx0XFx0LyogaGFuZGxlIHR3byBjYXNlczpcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuY1xcbmluZGV4IDdmMzMyNjFiYTY1NTNiLi5kZTM4YjYwODA2YzI2NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jXFxuQEAgLTUxNSw2ICs1MTUsNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9zdGF0c191cGRhdGVfc3RhdHNfcnFfcGFnZV9wb29sKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjKVxcbiBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfVVBEQVRFX1NUQVRTKHN3KVxcbiB7XFxuIFxcdHN0cnVjdCBtbHg1ZV9zd19zdGF0cyAqcyA9IFxcdTAwMjZwcml2LVxcdTAwM2VzdGF0cy5zdztcXG4rXFx0dTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xcbiBcXHRpbnQgaTtcXG4gXFxuIFxcdG1lbXNldChzLCAwLCBzaXplb2YoKnMpKTtcXG5AQCAtNTIyLDcgKzUyMyw3IEBAIHN0YXRpYyBNTFg1RV9ERUNMQVJFX1NUQVRTX0dSUF9PUF9VUERBVEVfU1RBVFMoc3cpXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwcml2LVxcdTAwM2VjaGFubmVscy5udW07IGkrKykgLyogZm9yIGFjdGl2ZSBjaGFubmVscyBvbmx5ICovXFxuIFxcdFxcdG1seDVlX3N0YXRzX3VwZGF0ZV9zdGF0c19ycV9wYWdlX3Bvb2wocHJpdi1cXHUwMDNlY2hhbm5lbHMuY1tpXSk7XFxuIFxcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcHJpdi1cXHUwMDNlc3RhdHNfbmNoOyBpKyspIHtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5jaDsgaSsrKSB7XFxuIFxcdFxcdHN0cnVjdCBtbHg1ZV9jaGFubmVsX3N0YXRzICpjaGFubmVsX3N0YXRzID1cXG4gXFx0XFx0XFx0cHJpdi1cXHUwMDNlY2hhbm5lbF9zdGF0c1tpXTtcXG4gXFxuQEAgLTI2MTQsNyArMjYxNSw3IEBAIHN0YXRpYyBNTFg1RV9ERUNMQVJFX1NUQVRTX0dSUF9PUF9VUERBVEVfU1RBVFMocHRwKSB7IHJldHVybjsgfVxcbiBcXG4gc3RhdGljIE1MWDVFX0RFQ0xBUkVfU1RBVFNfR1JQX09QX05VTV9TVEFUUyhjaGFubmVscylcXG4ge1xcbi1cXHRpbnQgbWF4X25jaCA9IHByaXYtXFx1MDAzZXN0YXRzX25jaDtcXG4rXFx0aW50IG1heF9uY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcXG4gXFxuIFxcdHJldHVybiAoTlVNX1JRX1NUQVRTICogbWF4X25jaCkgK1xcbiBcXHQgICAgICAgKE5VTV9DSF9TVEFUUyAqIG1heF9uY2gpICtcXG5AQCAtMjYyNyw4ICsyNjI4LDggQEAgc3RhdGljIE1MWDVFX0RFQ0xBUkVfU1RBVFNfR1JQX09QX05VTV9TVEFUUyhjaGFubmVscylcXG4gXFxuIHN0YXRpYyBNTFg1RV9ERUNMQVJFX1NUQVRTX0dSUF9PUF9GSUxMX1NUUlMoY2hhbm5lbHMpXFxuIHtcXG4rXFx0aW50IG1heF9uY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcXG4gXFx0Ym9vbCBpc194c2sgPSBwcml2LVxcdTAwM2V4c2suZXZlcl91c2VkO1xcbi1cXHRpbnQgbWF4X25jaCA9IHByaXYtXFx1MDAzZXN0YXRzX25jaDtcXG4gXFx0aW50IGksIGosIHRjO1xcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG1heF9uY2g7IGkrKylcXG5AQCAtMjY2MCw4ICsyNjYxLDggQEAgc3RhdGljIE1MWDVFX0RFQ0xBUkVfU1RBVFNfR1JQX09QX0ZJTExfU1RSUyhjaGFubmVscylcXG4gXFxuIHN0YXRpYyBNTFg1RV9ERUNMQVJFX1NUQVRTX0dSUF9PUF9GSUxMX1NUQVRTKGNoYW5uZWxzKVxcbiB7XFxuK1xcdGludCBtYXhfbmNoID0gbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdik7XFxuIFxcdGJvb2wgaXNfeHNrID0gcHJpdi1cXHUwMDNleHNrLmV2ZXJfdXNlZDtcXG4tXFx0aW50IG1heF9uY2ggPSBwcml2LVxcdTAwM2VzdGF0c19uY2g7XFxuIFxcdGludCBpLCBqLCB0YztcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBtYXhfbmNoOyBpKyspXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmNcXG5pbmRleCAwYTYwMDNmZTYwZTlmOC4uNjc0YmVkNzIxZTYzNzUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuY1xcbkBAIC0xMzUsMTAgKzEzNSwxMSBAQCB2b2lkIG1seDVpX2NsZWFudXAoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXFxuIFxcbiBzdGF0aWMgdm9pZCBtbHg1aV9ncnBfc3dfdXBkYXRlX3N0YXRzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxcbiB7XFxuK1xcdHUxNiBuY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcXG4gXFx0c3RydWN0IHJ0bmxfbGlua19zdGF0czY0IHMgPSB7fTtcXG4gXFx0aW50IGksIGo7XFxuIFxcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcHJpdi1cXHUwMDNlc3RhdHNfbmNoOyBpKyspIHtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5jaDsgaSsrKSB7XFxuIFxcdFxcdHN0cnVjdCBtbHg1ZV9jaGFubmVsX3N0YXRzICpjaGFubmVsX3N0YXRzO1xcbiBcXHRcXHRzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMgKnJxX3N0YXRzO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuY1xcbmluZGV4IGQ2ZGM3YmNlODU1ZTBiLi4zMDU3NTJkYWI3YmRmNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5jXFxuQEAgLTE5MCw3ICsxOTAsNyBAQCBtbHg1X2h2X3ZoY2FfY29udHJvbF9hZ2VudF9jcmVhdGUoc3RydWN0IG1seDVfaHZfdmhjYSAqaHZfdmhjYSlcXG4gXFx0cmV0dXJuIG1seDVfaHZfdmhjYV9hZ2VudF9jcmVhdGUoaHZfdmhjYSwgTUxYNV9IVl9WSENBX0FHRU5UX0NPTlRST0wsXFxuIFxcdFxcdFxcdFxcdFxcdCBOVUxMLFxcbiBcXHRcXHRcXHRcXHRcXHQgbWx4NV9odl92aGNhX2NvbnRyb2xfYWdlbnRfaW52YWxpZGF0ZSxcXG4tXFx0XFx0XFx0XFx0XFx0IE5VTEwsIE5VTEwpO1xcbitcXHRcXHRcXHRcXHRcXHQgTlVMTCwgTlVMTCwgTlVMTCk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIG1seDVfaHZfdmhjYV9jb250cm9sX2FnZW50X2Rlc3Ryb3koc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpXFxuQEAgLTI1Niw3ICsyNTYsOCBAQCBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHN0cnVjdCBtbHg1X2h2X3ZoY2EgKmh2X3ZoY2EsXFxuIFxcdFxcdFxcdCAgdm9pZCAoKmludmFsaWRhdGUpKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQqLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgIHU2NCBibG9ja19tYXNrKSxcXG4gXFx0XFx0XFx0ICB2b2lkICgqY2xlYXVwKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCksXFxuLVxcdFxcdFxcdCAgdm9pZCAqcHJpdilcXG4rXFx0XFx0XFx0ICB2b2lkICpwcml2LFxcbitcXHRcXHRcXHQgIHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKipjdHhfdXBkYXRlKVxcbiB7XFxuIFxcdHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50O1xcbiBcXG5AQCAtMjg0LDYgKzI4NSw5IEBAIG1seDVfaHZfdmhjYV9hZ2VudF9jcmVhdGUoc3RydWN0IG1seDVfaHZfdmhjYSAqaHZfdmhjYSxcXG4gXFx0YWdlbnQtXFx1MDAzZWludmFsaWRhdGUgPSBpbnZhbGlkYXRlO1xcbiBcXHRhZ2VudC1cXHUwMDNlY2xlYW51cCAgID0gY2xlYXVwO1xcbiBcXG4rXFx0aWYgKGN0eF91cGRhdGUpXFxuK1xcdFxcdFdSSVRFX09OQ0UoKmN0eF91cGRhdGUsIGFnZW50KTtcXG4rXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNmh2X3ZoY2EtXFx1MDAzZWFnZW50c19sb2NrKTtcXG4gXFx0aHZfdmhjYS1cXHUwMDNlYWdlbnRzW3R5cGVdID0gYWdlbnQ7XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2aHZfdmhjYS1cXHUwMDNlYWdlbnRzX2xvY2spO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5oXFxuaW5kZXggZjI0MGZmZTUxMTZjNWIuLjhiMzk3NGNmMGVlNDlhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmhcXG5AQCAtNDMsNyArNDMsOCBAQCBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHN0cnVjdCBtbHg1X2h2X3ZoY2EgKmh2X3ZoY2EsXFxuIFxcdFxcdFxcdCAgdm9pZCAoKmludmFsaWRhdGUpKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQqLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgIHU2NCBibG9ja19tYXNrKSxcXG4gXFx0XFx0XFx0ICB2b2lkICgqY2xlYW51cCkoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpLFxcbi1cXHRcXHRcXHQgIHZvaWQgKmNvbnRleHQpO1xcbitcXHRcXHRcXHQgIHZvaWQgKmNvbnRleHQsXFxuK1xcdFxcdFxcdCAgc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqKmN0eF91cGRhdGUpO1xcbiBcXG4gdm9pZCBtbHg1X2h2X3ZoY2FfYWdlbnRfZGVzdHJveShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCk7XFxuIGludCBtbHg1X2h2X3ZoY2FfYWdlbnRfd3JpdGUoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQsXFxuQEAgLTg0LDcgKzg1LDggQEAgbWx4NV9odl92aGNhX2FnZW50X2NyZWF0ZShzdHJ1Y3QgbWx4NV9odl92aGNhICpodl92aGNhLFxcbiBcXHRcXHRcXHQgIHZvaWQgKCppbnZhbGlkYXRlKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50KixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICB1NjQgYmxvY2tfbWFzayksXFxuIFxcdFxcdFxcdCAgdm9pZCAoKmNsZWFudXApKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50KSxcXG4tXFx0XFx0XFx0ICB2b2lkICpjb250ZXh0KVxcbitcXHRcXHRcXHQgIHZvaWQgKmNvbnRleHQsXFxuK1xcdFxcdFxcdCAgc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqKmN0eF91cGRhdGUpXFxuIHtcXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDg6NTM6MDIuMjg5NzE3NjUzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTIxNzQxOTc4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lbGxhbm94IG1seDUgZXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIuIFNpbmNlIHN5emthbGxlciBkb2VzIG5vdCBlbXVsYXRlIE1lbGxhbm94IGhhcmR3YXJlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSksIHRoaXMgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOWY2NWM5NTU0NjljYmQ1NzM0MzU1ZWUyZTZhMTZkYmZjNTc5MjEwOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDIyIDA4OjUyOjU5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaFxuaW5kZXggMjI3MGUyZTU1MGRkOWUuLmQ1MDcyODkwOTZjMjA2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oXG5AQCAtOTg3LDYgKzk4NywxOCBAQCBzdHJ1Y3QgbWx4NWVfcHJpdiB7XG4gXHRzdHJ1Y3QgZXRodG9vbF9mZWNfaGlzdF9yYW5nZSAqZmVjX3JhbmdlcztcbiB9O1xuIFxuK3N0YXRpYyBpbmxpbmUgdTE2IG1seDVlX3N0YXRzX25jaF9yZWFkKGNvbnN0IHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuK3tcbitcdC8qIFBhaXJzIHdpdGggc21wX3N0b3JlX3JlbGVhc2UgaW4gbWx4NWVfc3RhdHNfbmNoX3dyaXRlKCkuICovXG4rXHRyZXR1cm4gc21wX2xvYWRfYWNxdWlyZShcdTAwMjZwcml2LVx1MDAzZXN0YXRzX25jaCk7XG4rfVxuK1xuK3N0YXRpYyBpbmxpbmUgdm9pZCBtbHg1ZV9zdGF0c19uY2hfd3JpdGUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHUxNiBuKVxuK3tcbitcdC8qIFBhaXJzIHdpdGggc21wX2xvYWRfYWNxdWlyZSBpbiBtbHg1ZV9zdGF0c19uY2hfcmVhZCgpLiAqL1xuK1x0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2cHJpdi1cdTAwM2VzdGF0c19uY2gsIG4pO1xuK31cbitcbiBzdHJ1Y3QgbWx4NWVfZGV2IHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG4gXHRzdHJ1Y3QgZGV2bGlua19wb3J0IGRsX3BvcnQ7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2h2X3ZoY2Ffc3RhdHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9odl92aGNhX3N0YXRzLmNcbmluZGV4IDE5NTg2M2IyYzAxM2UyLi45NzQ3ZDc3MzZkMzdhZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9odl92aGNhX3N0YXRzLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9odl92aGNhX3N0YXRzLmNcbkBAIC0zMyw5ICszMywxMCBAQCBtbHg1ZV9odl92aGNhX2ZpbGxfcmluZ19zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgaW50IGNoLFxuIHN0YXRpYyB2b2lkIG1seDVlX2h2X3ZoY2FfZmlsbF9zdGF0cyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgdm9pZCAqZGF0YSxcbiBcdFx0XHRcdCAgICAgaW50IGJ1Zl9sZW4pXG4ge1xuK1x0dTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xuIFx0aW50IGNoLCBpID0gMDtcbiBcbi1cdGZvciAoY2ggPSAwOyBjaCBcdTAwM2MgcHJpdi1cdTAwM2VzdGF0c19uY2g7IGNoKyspIHtcbitcdGZvciAoY2ggPSAwOyBjaCBcdTAwM2MgbmNoOyBjaCsrKSB7XG4gXHRcdHZvaWQgKmJ1ZiA9IGRhdGEgKyBpO1xuIFxuIFx0XHRpZiAoV0FSTl9PTl9PTkNFKGJ1ZiArXG5AQCAtNDksOSArNTAsMTYgQEAgc3RhdGljIHZvaWQgbWx4NWVfaHZfdmhjYV9maWxsX3N0YXRzKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCB2b2lkICpkYXRhLFxuIH1cbiBcbiBzdGF0aWMgaW50IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX3NpemUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4re1xuK1x0dTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xuK1xuK1x0cmV0dXJuIHNpemVvZihzdHJ1Y3QgbWx4NWVfaHZfdmhjYV9wZXJfcmluZ19zdGF0cykgKiBuY2g7XG4rfVxuK1xuK3N0YXRpYyBpbnQgbWx4NWVfaHZfdmhjYV9zdGF0c19idWZfbWF4X3NpemUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4ge1xuIFx0cmV0dXJuIChzaXplb2Yoc3RydWN0IG1seDVlX2h2X3ZoY2FfcGVyX3Jpbmdfc3RhdHMpICpcbi1cdFx0cHJpdi1cdTAwM2VzdGF0c19uY2gpO1xuK1x0XHRtYXgocHJpdi1cdTAwM2VtYXhfbmNoLCBwcml2LVx1MDAzZXN0YXRzX25jaCkpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuQEAgLTY3LDcgKzc1LDcgQEAgc3RhdGljIHZvaWQgbWx4NWVfaHZfdmhjYV9zdGF0c193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHNhZ2VudCA9IGNvbnRhaW5lcl9vZihkd29yaywgc3RydWN0IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYWdlbnQsIHdvcmspO1xuIFx0cHJpdiA9IGNvbnRhaW5lcl9vZihzYWdlbnQsIHN0cnVjdCBtbHg1ZV9wcml2LCBzdGF0c19hZ2VudCk7XG4gXHRidWZfbGVuID0gbWx4NWVfaHZfdmhjYV9zdGF0c19idWZfc2l6ZShwcml2KTtcbi1cdGFnZW50ID0gc2FnZW50LVx1MDAzZWFnZW50O1xuK1x0YWdlbnQgPSBSRUFEX09OQ0Uoc2FnZW50LVx1MDAzZWFnZW50KTtcbiBcdGJ1ZiA9IHNhZ2VudC1cdTAwM2VidWY7XG4gXG4gXHRtZW1zZXQoYnVmLCAwLCBidWZfbGVuKTtcbkBAIC0xMDAsNyArMTA4LDcgQEAgc3RhdGljIHZvaWQgbWx4NWVfaHZfdmhjYV9zdGF0c19jb250cm9sKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50LFxuIFx0c2FnZW50ID0gXHUwMDI2cHJpdi1cdTAwM2VzdGF0c19hZ2VudDtcbiBcbiBcdGJsb2NrLVx1MDAzZXZlcnNpb24gPSBNTFg1X0hWX1ZIQ0FfU1RBVFNfVkVSU0lPTjtcbi1cdGJsb2NrLVx1MDAzZXJpbmdzICAgPSBwcml2LVx1MDAzZXN0YXRzX25jaDtcbitcdGJsb2NrLVx1MDAzZXJpbmdzICAgPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcbiBcbiBcdGlmICghYmxvY2stXHUwMDNlY29tbWFuZCkge1xuIFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2cHJpdi1cdTAwM2VzdGF0c19hZ2VudC53b3JrKTtcbkBAIC0xMjIsMTggKzEzMCwyMSBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX2NsZWFudXAoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpXG4gXG4gdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX2NyZWF0ZShzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcbiB7XG4tXHRpbnQgYnVmX2xlbiA9IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX3NpemUocHJpdik7XG4rXHRpbnQgYnVmX2xlbiA9IG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX21heF9zaXplKHByaXYpO1xuIFx0c3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQ7XG4gXG4gXHRwcml2LVx1MDAzZXN0YXRzX2FnZW50LmJ1ZiA9IGt2emFsbG9jKGJ1Zl9sZW4sIEdGUF9LRVJORUwpO1xuIFx0aWYgKCFwcml2LVx1MDAzZXN0YXRzX2FnZW50LmJ1ZilcbiBcdFx0cmV0dXJuO1xuIFxuK1x0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VzdGF0c19hZ2VudC53b3JrLCBtbHg1ZV9odl92aGNhX3N0YXRzX3dvcmspO1xuK1xuIFx0YWdlbnQgPSBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHByaXYtXHUwMDNlbWRldi1cdTAwM2Vodl92aGNhLFxuIFx0XHRcdFx0XHQgIE1MWDVfSFZfVkhDQV9BR0VOVF9TVEFUUyxcbiBcdFx0XHRcdFx0ICBtbHg1ZV9odl92aGNhX3N0YXRzX2NvbnRyb2wsIE5VTEwsXG4gXHRcdFx0XHRcdCAgbWx4NWVfaHZfdmhjYV9zdGF0c19jbGVhbnVwLFxuLVx0XHRcdFx0XHQgIHByaXYpO1xuK1x0XHRcdFx0XHQgIHByaXYsXG4rXHRcdFx0XHRcdCAgXHUwMDI2cHJpdi1cdTAwM2VzdGF0c19hZ2VudC5hZ2VudCk7XG4gXG4gXHRpZiAoSVNfRVJSX09SX05VTEwoYWdlbnQpKSB7XG4gXHRcdGlmIChJU19FUlIoYWdlbnQpKVxuQEAgLTE0MiwxOCArMTUzLDIxIEBAIHZvaWQgbWx4NWVfaHZfdmhjYV9zdGF0c19jcmVhdGUoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4gXHRcdFx0XHQgICAgYWdlbnQpO1xuIFxuIFx0XHRrdmZyZWUocHJpdi1cdTAwM2VzdGF0c19hZ2VudC5idWYpO1xuLVx0XHRyZXR1cm47XG4rXHRcdHByaXYtXHUwMDNlc3RhdHNfYWdlbnQuYnVmID0gTlVMTDtcbiBcdH1cbi1cbi1cdHByaXYtXHUwMDNlc3RhdHNfYWdlbnQuYWdlbnQgPSBhZ2VudDtcbi1cdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnByaXYtXHUwMDNlc3RhdHNfYWdlbnQud29yaywgbWx4NWVfaHZfdmhjYV9zdGF0c193b3JrKTtcbiB9XG4gXG4gdm9pZCBtbHg1ZV9odl92aGNhX3N0YXRzX2Rlc3Ryb3koc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4ge1xuLVx0aWYgKElTX0VSUl9PUl9OVUxMKHByaXYtXHUwMDNlc3RhdHNfYWdlbnQuYWdlbnQpKVxuK1x0c3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQ7XG4rXG4rXHRhZ2VudCA9IFJFQURfT05DRShwcml2LVx1MDAzZXN0YXRzX2FnZW50LmFnZW50KTtcbitcdGlmIChJU19FUlJfT1JfTlVMTChhZ2VudCkpXG4gXHRcdHJldHVybjtcbiBcbi1cdG1seDVfaHZfdmhjYV9hZ2VudF9kZXN0cm95KHByaXYtXHUwMDNlc3RhdHNfYWdlbnQuYWdlbnQpO1xuK1x0bWx4NV9odl92aGNhX2FnZW50X2Rlc3Ryb3koYWdlbnQpO1xuIFx0a3ZmcmVlKHByaXYtXHUwMDNlc3RhdHNfYWdlbnQuYnVmKTtcbitcbitcdFdSSVRFX09OQ0UocHJpdi1cdTAwM2VzdGF0c19hZ2VudC5hZ2VudCwgTlVMTCk7XG4rXHRwcml2LVx1MDAzZXN0YXRzX2FnZW50LmJ1ZiA9IE5VTEw7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jXG5pbmRleCA3NzVmMGM2ZTU1Yzk1NS4uYWE4NjEwY2VkYWE4NWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jXG5AQCAtMjc3Myw3ICsyNzczLDcgQEAgc3RhdGljIGludCBtbHg1ZV9jaGFubmVsX3N0YXRzX2FsbG9jKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBpbnQgaXgsIGludCBjcHUpXG4gXHRcdFx0XHRcdFx0R0ZQX0tFUk5FTCwgY3B1X3RvX25vZGUoY3B1KSk7XG4gXHRpZiAoIXByaXYtXHUwMDNlY2hhbm5lbF9zdGF0c1tpeF0pXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuLVx0cHJpdi1cdTAwM2VzdGF0c19uY2grKztcbitcdG1seDVlX3N0YXRzX25jaF93cml0ZShwcml2LCBwcml2LVx1MDAzZXN0YXRzX25jaCArIDEpO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTQwNDAsOSArNDA0MCwxMCBAQCBzdGF0aWMgaW50IG1seDVlX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxuIFxuIHZvaWQgbWx4NWVfZm9sZF9zd19zdGF0czY0KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3QgcnRubF9saW5rX3N0YXRzNjQgKnMpXG4ge1xuK1x0dTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xuIFx0aW50IGk7XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwcml2LVx1MDAzZXN0YXRzX25jaDsgaSsrKSB7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuY2g7IGkrKykge1xuIFx0XHRzdHJ1Y3QgbWx4NWVfY2hhbm5lbF9zdGF0cyAqY2hhbm5lbF9zdGF0cyA9IHByaXYtXHUwMDNlY2hhbm5lbF9zdGF0c1tpXTtcbiBcdFx0c3RydWN0IG1seDVlX3JxX3N0YXRzICp4c2tycV9zdGF0cyA9IFx1MDAyNmNoYW5uZWxfc3RhdHMtXHUwMDNleHNrcnE7XG4gXHRcdHN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqcnFfc3RhdHMgPSBcdTAwMjZjaGFubmVsX3N0YXRzLVx1MDAzZXJxO1xuQEAgLTU0ODgsNyArNTQ4OSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9xdWV1ZV9zdGF0c19yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaSxcbiBcdHN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqeHNrcnFfc3RhdHM7XG4gXHRzdHJ1Y3QgbWx4NWVfcnFfc3RhdHMgKnJxX3N0YXRzO1xuIFxuLVx0aWYgKG1seDVlX2lzX3VwbGlua19yZXAocHJpdikgfHwgIXByaXYtXHUwMDNlc3RhdHNfbmNoKVxuK1x0aWYgKG1seDVlX2lzX3VwbGlua19yZXAocHJpdikgfHwgIW1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRjaGFubmVsX3N0YXRzID0gcHJpdi1cdTAwM2VjaGFubmVsX3N0YXRzW2ldO1xuQEAgLTU1MTIsNyArNTUxMyw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9xdWV1ZV9zdGF0c190eChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaSxcbiBcdHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcdHN0cnVjdCBtbHg1ZV9zcV9zdGF0cyAqc3Ffc3RhdHM7XG4gXG4tXHRpZiAoIXByaXYtXHUwMDNlc3RhdHNfbmNoKVxuK1x0aWYgKCFtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KSlcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Lyogbm8gc3BlY2lhbCBjYXNlIG5lZWRlZCBmb3IgcHRwIGh0YiBldGMgc2luY2UgdHhxMnNxX3N0YXRzIGlzIGtlcHQgdXBcbkBAIC01NTM4LDYgKzU1MzksNyBAQCBzdGF0aWMgdm9pZCBtbHg1ZV9nZXRfYmFzZV9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdFx0IHN0cnVjdCBuZXRkZXZfcXVldWVfc3RhdHNfdHggKnR4KVxuIHtcbiBcdHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbitcdHUxNiBuY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcbiBcdHN0cnVjdCBtbHg1ZV9wdHAgKnB0cF9jaGFubmVsO1xuIFx0aW50IGksIHRjO1xuIFxuQEAgLTU1NDksNyArNTU1MSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9iYXNlX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdHJ4LVx1MDAzZWh3X2dyb193aXJlX3BhY2tldHMgPSAwO1xuIFx0XHRyeC1cdTAwM2Vod19ncm9fd2lyZV9ieXRlcyA9IDA7XG4gXG4tXHRcdGZvciAoaSA9IHByaXYtXHUwMDNlY2hhbm5lbHMucGFyYW1zLm51bV9jaGFubmVsczsgaSBcdTAwM2MgcHJpdi1cdTAwM2VzdGF0c19uY2g7IGkrKykge1xuK1x0XHRmb3IgKGkgPSBwcml2LVx1MDAzZWNoYW5uZWxzLnBhcmFtcy5udW1fY2hhbm5lbHM7IGkgXHUwMDNjIG5jaDsgaSsrKSB7XG4gXHRcdFx0c3RydWN0IG5ldGRldl9xdWV1ZV9zdGF0c19yeCByeF9pID0gezB9O1xuIFxuIFx0XHRcdG1seDVlX2dldF9xdWV1ZV9zdGF0c19yeChkZXYsIGksIFx1MDAyNnJ4X2kpO1xuQEAgLTU1ODUsNyArNTU4Nyw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX2dldF9iYXNlX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHR0eC1cdTAwM2VzdG9wID0gMDtcbiBcdHR4LVx1MDAzZXdha2UgPSAwO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcHJpdi1cdTAwM2VzdGF0c19uY2g7IGkrKykge1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgbmNoOyBpKyspIHtcbiBcdFx0c3RydWN0IG1seDVlX2NoYW5uZWxfc3RhdHMgKmNoYW5uZWxfc3RhdHMgPSBwcml2LVx1MDAzZWNoYW5uZWxfc3RhdHNbaV07XG4gXG4gXHRcdC8qIGhhbmRsZSB0d28gY2FzZXM6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fc3RhdHMuY1xuaW5kZXggN2YzMzI2MWJhNjU1M2IuLmRlMzhiNjA4MDZjMjY0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3N0YXRzLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9zdGF0cy5jXG5AQCAtNTE1LDYgKzUxNSw3IEBAIHN0YXRpYyB2b2lkIG1seDVlX3N0YXRzX3VwZGF0ZV9zdGF0c19ycV9wYWdlX3Bvb2woc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpXG4gc3RhdGljIE1MWDVFX0RFQ0xBUkVfU1RBVFNfR1JQX09QX1VQREFURV9TVEFUUyhzdylcbiB7XG4gXHRzdHJ1Y3QgbWx4NWVfc3dfc3RhdHMgKnMgPSBcdTAwMjZwcml2LVx1MDAzZXN0YXRzLnN3O1xuK1x0dTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xuIFx0aW50IGk7XG4gXG4gXHRtZW1zZXQocywgMCwgc2l6ZW9mKCpzKSk7XG5AQCAtNTIyLDcgKzUyMyw3IEBAIHN0YXRpYyBNTFg1RV9ERUNMQVJFX1NUQVRTX0dSUF9PUF9VUERBVEVfU1RBVFMoc3cpXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwcml2LVx1MDAzZWNoYW5uZWxzLm51bTsgaSsrKSAvKiBmb3IgYWN0aXZlIGNoYW5uZWxzIG9ubHkgKi9cbiBcdFx0bWx4NWVfc3RhdHNfdXBkYXRlX3N0YXRzX3JxX3BhZ2VfcG9vbChwcml2LVx1MDAzZWNoYW5uZWxzLmNbaV0pO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcHJpdi1cdTAwM2VzdGF0c19uY2g7IGkrKykge1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgbmNoOyBpKyspIHtcbiBcdFx0c3RydWN0IG1seDVlX2NoYW5uZWxfc3RhdHMgKmNoYW5uZWxfc3RhdHMgPVxuIFx0XHRcdHByaXYtXHUwMDNlY2hhbm5lbF9zdGF0c1tpXTtcbiBcbkBAIC0yNjE0LDcgKzI2MTUsNyBAQCBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfVVBEQVRFX1NUQVRTKHB0cCkgeyByZXR1cm47IH1cbiBcbiBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfTlVNX1NUQVRTKGNoYW5uZWxzKVxuIHtcbi1cdGludCBtYXhfbmNoID0gcHJpdi1cdTAwM2VzdGF0c19uY2g7XG4rXHRpbnQgbWF4X25jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xuIFxuIFx0cmV0dXJuIChOVU1fUlFfU1RBVFMgKiBtYXhfbmNoKSArXG4gXHQgICAgICAgKE5VTV9DSF9TVEFUUyAqIG1heF9uY2gpICtcbkBAIC0yNjI3LDggKzI2MjgsOCBAQCBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfTlVNX1NUQVRTKGNoYW5uZWxzKVxuIFxuIHN0YXRpYyBNTFg1RV9ERUNMQVJFX1NUQVRTX0dSUF9PUF9GSUxMX1NUUlMoY2hhbm5lbHMpXG4ge1xuK1x0aW50IG1heF9uY2ggPSBtbHg1ZV9zdGF0c19uY2hfcmVhZChwcml2KTtcbiBcdGJvb2wgaXNfeHNrID0gcHJpdi1cdTAwM2V4c2suZXZlcl91c2VkO1xuLVx0aW50IG1heF9uY2ggPSBwcml2LVx1MDAzZXN0YXRzX25jaDtcbiBcdGludCBpLCBqLCB0YztcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG1heF9uY2g7IGkrKylcbkBAIC0yNjYwLDggKzI2NjEsOCBAQCBzdGF0aWMgTUxYNUVfREVDTEFSRV9TVEFUU19HUlBfT1BfRklMTF9TVFJTKGNoYW5uZWxzKVxuIFxuIHN0YXRpYyBNTFg1RV9ERUNMQVJFX1NUQVRTX0dSUF9PUF9GSUxMX1NUQVRTKGNoYW5uZWxzKVxuIHtcbitcdGludCBtYXhfbmNoID0gbWx4NWVfc3RhdHNfbmNoX3JlYWQocHJpdik7XG4gXHRib29sIGlzX3hzayA9IHByaXYtXHUwMDNleHNrLmV2ZXJfdXNlZDtcbi1cdGludCBtYXhfbmNoID0gcHJpdi1cdTAwM2VzdGF0c19uY2g7XG4gXHRpbnQgaSwgaiwgdGM7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBtYXhfbmNoOyBpKyspXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuY1xuaW5kZXggMGE2MDAzZmU2MGU5ZjguLjY3NGJlZDcyMWU2Mzc1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5jXG5AQCAtMTM1LDEwICsxMzUsMTEgQEAgdm9pZCBtbHg1aV9jbGVhbnVwKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuIFxuIHN0YXRpYyB2b2lkIG1seDVpX2dycF9zd191cGRhdGVfc3RhdHMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXG4ge1xuK1x0dTE2IG5jaCA9IG1seDVlX3N0YXRzX25jaF9yZWFkKHByaXYpO1xuIFx0c3RydWN0IHJ0bmxfbGlua19zdGF0czY0IHMgPSB7fTtcbiBcdGludCBpLCBqO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcHJpdi1cdTAwM2VzdGF0c19uY2g7IGkrKykge1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgbmNoOyBpKyspIHtcbiBcdFx0c3RydWN0IG1seDVlX2NoYW5uZWxfc3RhdHMgKmNoYW5uZWxfc3RhdHM7XG4gXHRcdHN0cnVjdCBtbHg1ZV9ycV9zdGF0cyAqcnFfc3RhdHM7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuY1xuaW5kZXggZDZkYzdiY2U4NTVlMGIuLjMwNTc1MmRhYjdiZGY0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5jXG5AQCAtMTkwLDcgKzE5MCw3IEBAIG1seDVfaHZfdmhjYV9jb250cm9sX2FnZW50X2NyZWF0ZShzdHJ1Y3QgbWx4NV9odl92aGNhICpodl92aGNhKVxuIFx0cmV0dXJuIG1seDVfaHZfdmhjYV9hZ2VudF9jcmVhdGUoaHZfdmhjYSwgTUxYNV9IVl9WSENBX0FHRU5UX0NPTlRST0wsXG4gXHRcdFx0XHRcdCBOVUxMLFxuIFx0XHRcdFx0XHQgbWx4NV9odl92aGNhX2NvbnRyb2xfYWdlbnRfaW52YWxpZGF0ZSxcbi1cdFx0XHRcdFx0IE5VTEwsIE5VTEwpO1xuK1x0XHRcdFx0XHQgTlVMTCwgTlVMTCwgTlVMTCk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG1seDVfaHZfdmhjYV9jb250cm9sX2FnZW50X2Rlc3Ryb3koc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpXG5AQCAtMjU2LDcgKzI1Niw4IEBAIG1seDVfaHZfdmhjYV9hZ2VudF9jcmVhdGUoc3RydWN0IG1seDVfaHZfdmhjYSAqaHZfdmhjYSxcbiBcdFx0XHQgIHZvaWQgKCppbnZhbGlkYXRlKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50KixcbiBcdFx0XHRcdFx0ICAgICB1NjQgYmxvY2tfbWFzayksXG4gXHRcdFx0ICB2b2lkICgqY2xlYXVwKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50ICphZ2VudCksXG4tXHRcdFx0ICB2b2lkICpwcml2KVxuK1x0XHRcdCAgdm9pZCAqcHJpdixcbitcdFx0XHQgIHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKipjdHhfdXBkYXRlKVxuIHtcbiBcdHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50O1xuIFxuQEAgLTI4NCw2ICsyODUsOSBAQCBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHN0cnVjdCBtbHg1X2h2X3ZoY2EgKmh2X3ZoY2EsXG4gXHRhZ2VudC1cdTAwM2VpbnZhbGlkYXRlID0gaW52YWxpZGF0ZTtcbiBcdGFnZW50LVx1MDAzZWNsZWFudXAgICA9IGNsZWF1cDtcbiBcbitcdGlmIChjdHhfdXBkYXRlKVxuK1x0XHRXUklURV9PTkNFKCpjdHhfdXBkYXRlLCBhZ2VudCk7XG4rXG4gXHRtdXRleF9sb2NrKFx1MDAyNmh2X3ZoY2EtXHUwMDNlYWdlbnRzX2xvY2spO1xuIFx0aHZfdmhjYS1cdTAwM2VhZ2VudHNbdHlwZV0gPSBhZ2VudDtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZodl92aGNhLVx1MDAzZWFnZW50c19sb2NrKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvaHZfdmhjYS5oXG5pbmRleCBmMjQwZmZlNTExNmM1Yi4uOGIzOTc0Y2YwZWU0OWEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2h2X3ZoY2EuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9odl92aGNhLmhcbkBAIC00Myw3ICs0Myw4IEBAIG1seDVfaHZfdmhjYV9hZ2VudF9jcmVhdGUoc3RydWN0IG1seDVfaHZfdmhjYSAqaHZfdmhjYSxcbiBcdFx0XHQgIHZvaWQgKCppbnZhbGlkYXRlKShzdHJ1Y3QgbWx4NV9odl92aGNhX2FnZW50KixcbiBcdFx0XHRcdFx0ICAgICB1NjQgYmxvY2tfbWFzayksXG4gXHRcdFx0ICB2b2lkICgqY2xlYW51cCkoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpLFxuLVx0XHRcdCAgdm9pZCAqY29udGV4dCk7XG4rXHRcdFx0ICB2b2lkICpjb250ZXh0LFxuK1x0XHRcdCAgc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqKmN0eF91cGRhdGUpO1xuIFxuIHZvaWQgbWx4NV9odl92aGNhX2FnZW50X2Rlc3Ryb3koc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQpO1xuIGludCBtbHg1X2h2X3ZoY2FfYWdlbnRfd3JpdGUoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqYWdlbnQsXG5AQCAtODQsNyArODUsOCBAQCBtbHg1X2h2X3ZoY2FfYWdlbnRfY3JlYXRlKHN0cnVjdCBtbHg1X2h2X3ZoY2EgKmh2X3ZoY2EsXG4gXHRcdFx0ICB2b2lkICgqaW52YWxpZGF0ZSkoc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCosXG4gXHRcdFx0XHRcdCAgICAgdTY0IGJsb2NrX21hc2spLFxuIFx0XHRcdCAgdm9pZCAoKmNsZWFudXApKHN0cnVjdCBtbHg1X2h2X3ZoY2FfYWdlbnQgKmFnZW50KSxcbi1cdFx0XHQgIHZvaWQgKmNvbnRleHQpXG4rXHRcdFx0ICB2b2lkICpjb250ZXh0LFxuK1x0XHRcdCAgc3RydWN0IG1seDVfaHZfdmhjYV9hZ2VudCAqKmN0eF91cGRhdGUpXG4ge1xuIFx0cmV0dXJuIE5VTEw7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDg6NTM6MDIuMjg5NzIwNDI0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAwNzg0OTE5ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGZWFzaWJpbGl0eSBBc3Nlc3NtZW50OiBNZWxsYW5veCBtbHg1IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIE1lbGxhbm94IG1seDUgRXRoZXJuZXQgZHJpdmVyLiBJdCdzIHRvdWNoaW5nIGBwcml2LVx1MDAzZXN0YXRzX25jaGAgd2l0aCBgc21wX2xvYWRfYWNxdWlyZWAgYW5kIGBzbXBfc3RvcmVfcmVsZWFzZWAsIGFuZCB0aGVuIGl0J3MgbW9kaWZ5aW5nIGBtbHg1ZV9odl92aGNhX3N0YXRzX2NyZWF0ZWAsIGBtbHg1ZV9odl92aGNhX3N0YXRzX2Rlc3Ryb3lgLCBhbmQgYG1seDVlX2h2X3ZoY2Ffc3RhdHNfYnVmX21heF9zaXplYCBmb3IgdGhyZWFkIHNhZmV0eSBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuIFRoZSBmaWxlcyBhZmZlY3RlZCBhcmUgc2NhdHRlcmVkIGFjcm9zcyB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDVgIGRpcmVjdG9yeSBzdHJ1Y3R1cmU6IGBjb3JlL2VuL2h2X3ZoY2Ffc3RhdHMuY2AsIGBjb3JlL2VuX21haW4uY2AsIGBjb3JlL2VuX3N0YXRzLmNgLCBgY29yZS9pcG9pYi9pcG9pYi5jYCwgYW5kIGBjb3JlL2xpYi9odl92aGNhLmNgLlxuXG5UaGUgYmlnIHF1ZXN0aW9uIGlzOiBjYW4gSSBmdXp6IHRoaXMgZWZmZWN0aXZlbHk/IFRoaXMgaXMgYSBoYXJkd2FyZSBkcml2ZXIgZm9yIENvbm5lY3RYLTQvNS82LzcsIHNvIEkga25vdyBJJ20gZGVhbGluZyB3aXRoIFBDSSBkZXZpY2VzIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHN0YW5kYXJkIFZNIGZ1enppbmcgd29uJ3QgY3V0IGl0LiBTeXprYWxsZXIgZG9lc24ndCBzZWVtIHRvIGhhdmUgZW11bGF0ZWQgTWVsbGFub3ggbWx4NSBoYXJkd2FyZSwgYW5kIHRoYXQncyB1c3VhbGx5IGEgZGVhbGJyZWFrZXIuIFVubGVzcyB0aGVyZSdzIGEgc3BlY2lmaWMgZW11bGF0aW9uIGxheWVyIG9yIGEgdmlydHVhbCBkcml2ZXIgZXF1aXZhbGVudCwgZHJpdmVycyBsaWtlIHRoZXNlIGFyZSBub3RvcmlvdXNseSBkaWZmaWN1bHQgdG8gdGFyZ2V0IHdpdGhvdXQgcmVhbCBoYXJkd2FyZSBvciBhIG1ldGhvZCBvZiBQQ0kgcGFzc3Rocm91Z2guXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGlzICphbnkqIHdheSB0byBydW4gdGhpcyBjb2RlIHdpdGhvdXQgZGlyZWN0IGhhcmR3YXJlIGFjY2Vzcy4gRG9lcyBzeXprYWxsZXIgaGF2ZSBhbiBhbHRlcm5hdGl2ZSB0byB0ZXN0IG1seDU/IFRoZSBvYnZpb3VzIGFuc3dlciBpcyBuby4gVGhpcyBkcml2ZXIgc2VlbXMgdG8gYmUgcHVyZWx5IHRpZWQgdG8gcGh5c2ljYWwgUENJIGRldmljZXMuIFdpdGhvdXQgdGhhdCBQQ0kgZGV2aWNlLCB0aGUgcHJvYmUgZnVuY3Rpb24gaXMgbmV2ZXIgY2FsbGVkLCBhbmQgdGhlIGRyaXZlciBjb2RlIGlzIG5ldmVyIGV4ZWN1dGVkIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudC4gVGhpcyBtZWFucyBjb2RlIHJlbGF0ZWQgdG8gYG1seDVlX2h2X3ZoY2Ffc3RhdHNfY3JlYXRlYCBjYW4ndCBiZSByZWFjaGVkLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBxdWlja2x5IGNoZWNrIGZvciBhbnkgc29mdHdhcmUgZW11bGF0aW9uLCBtb2NrIGltcGxlbWVudGF0aW9ucywgb3IgdmlydHVhbCBkcml2ZXIgY29tcG9uZW50cy4gSSB3aWxsIHVzZSBgZ3JlcHBlcmAgdG8gc2VhcmNoIHRocm91Z2ggdGhlIGNvZGViYXNlIGZvciBhbnl0aGluZyByZWxhdGVkIHRvIG1seDUgaW4gdGhlIGB0b29scy9gIG9yIGBkcml2ZXJzL2AgZGlyZWN0b3JpZXMuXG5cbkJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcsIHdpdGhvdXQgUENJIHBhc3N0aHJvdWdoLCB3aGljaCBpcyBvZnRlbiBjb21wbGV4IGFuZCByZXNvdXJjZS1pbnRlbnNpdmUsIGZ1enppbmcgdGhpcyBwYXRjaCBpbiBhIHR5cGljYWwgVk0gc2V0dXAgbG9va3MgaGlnaGx5IHVubGlrZWx5LiBNeSBhc3Nlc3NtZW50IGlzIHRoYXQgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxMTAsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwODo1MzoxMi4zNjgyMTU1MzhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkyOTQyMTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA5OTExMSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc9MTk9Y29uZmlnIE1MWDVfRlBHQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMjUtXFx0ICBhbmQgYW4gRlBHQSBjaGlwIG9uIG9uZSBib2FyZC4gSWYgeW91IHNlbGVjdCB0aGlzIG9wdGlvbiwgdGhlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MjY6XFx0ICBtbHg1X2NvcmUgZHJpdmVyIHdpbGwgaW5jbHVkZSB0aGUgSW5ub3ZhIEZQR0EgY29yZSBhbmQgYWxsb3cgYnVpbGRpbmdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0yNy1cXHQgIHNhbmRib3gtc3BlY2lmaWMgY2xpZW50IGRyaXZlcnMuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz03Nz1jb25maWcgTUxYNV9CUklER0VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTgxLVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzo4MjpcXHQgIG1seDUgQ29ubmVjdFggb2ZmbG9hZHMgc3VwcG9ydCBmb3IgRXRoZXJuZXQgQnJpZGdpbmcgKEJSSURHRSkuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctODMtXFx0ICBFbmFibGUgb2ZmbG9hZGluZyBGREIgcnVsZXMgZnJvbSBhIGJyaWRnZSBkZXZpY2UgY29udGFpbmluZ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjg0OlxcdCAgcmVwcmVzZW50b3JzIG9mIG1seDUgdXBsaW5rIGFuZCBWRiBwb3J0cy4gU3VwcG9ydHMgVkxBTnMgKHRydW5rIGFuZFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTg1LVxcdCAgYWNjZXNzIG1vZGVzKS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTg3PWNvbmZpZyBNTFg1X0NMU19BQ1RcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTkxLVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzo5MjpcXHQgIG1seDUgQ29ubmVjdFggb2ZmbG9hZHMgc3VwcG9ydCBmb3IgVEMgY2xhc3NpZmllciBhY3Rpb24gKE5FVF9DTFNfQUNUKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy05My1cXHQgIHdvcmtzIGluIGJvdGggbmF0aXZlIE5JQyBtb2RlIGFuZCBTd2l0Y2hkZXYgU1JJT1YgbW9kZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTIxMD1jb25maWcgTUxYNV9FTl9QU1BcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTIxNS1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MjE2OlxcdCAgbWx4NSBkZXZpY2Ugb2ZmbG9hZCBzdXBwb3J0IGZvciBHb29nbGUgUFNQIFNlY3VyaXR5IFByb3RvY29sIG9mZmxvYWQuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMjE3LVxcdCAgQWRkcyBzdXBwb3J0IGZvciBQU1AgZW5jcnlwdGlvbiBvZmZsb2FkIGFuZCBmb3IgU1BJIGFuZCBrZXkgZ2VuZXJhdGlvblxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTc9c3ViZGlyLWNjZmxhZ3MteSArPSAtSSQoc3JjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS04LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19NTFg1X0NPUkUpICs9IG1seDVfY29yZS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMS0jXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjEyOiMgbWx4NSBjb3JlIGJhc2ljXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEzLSNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MTQ6bWx4NV9jb3JlLXkgOj1cXHRtYWluLm8gY21kLm8gZGVidWdmcy5vIGZ3Lm8gZXEubyB1YXIubyBwYWdlYWxsb2MubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTE1LVxcdFxcdGhlYWx0aC5vIG1jZy5vIGNxLm8gYWxsb2MubyBwb3J0Lm8gbXIubyBwZC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0yNS0jXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjI2Om1seDVfY29yZS0kKENPTkZJR19NTFg1X0NPUkVfRU4pICs9IGVuL3JxdC5vIGVuL3Rpci5vIGVuL3Jzcy5vIGVuL3J4X3Jlcy5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMjctXFx0XFx0ZW4vY2hhbm5lbHMubyBlbl9tYWluLm8gZW5fY29tbW9uLm8gZW5fZnMubyBlbl9ldGh0b29sLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTM3LSNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6Mzg6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRU5fQVJGUykgICAgICs9IGVuX2FyZnMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTozOTptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9FTl9SWE5GQykgICAgKz0gZW5fZnNfZXRodG9vbC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjQwOm1seDVfY29yZS0kKENPTkZJR19NTFg1X0NPUkVfRU5fRENCKSArPSBlbl9kY2JubC5vIGVuL3BvcnRfYnVmZmVyLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6NDE6bWx4NV9jb3JlLSQoQ09ORklHX1BDSV9IWVBFUlZfSU5URVJGQUNFKSArPSBlbi9odl92aGNhX3N0YXRzLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6NDI6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRVNXSVRDSCkgICAgICs9IGxhZy9tcC5vIGxhZy9wb3J0X3NlbC5vIGxpYi9nZW5ldmUubyBsaWIvcG9ydF90dW4ubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTQzLVxcdFxcdFxcdFxcdFxcdGVuX3JlcC5vIGVuL3JlcC9ib25kLm8gZW4vbW9kX2hkci5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtNDQtXFx0XFx0XFx0XFx0XFx0ZW4vbWFwcGluZy5vIGxhZy9tcGVzdy5vIGxhZy9zaGFyZWRfZmRiLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6NDU6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQ0xTX0FDVCkgICAgICs9IGVuX3RjLm8gZW4vcmVwL3RjLm8gZW4vcmVwL25laWdoLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS00Ni1cXHRcXHRcXHRcXHRcXHRsaWIvZnNfY2hhaW5zLm8gZW4vdGNfdHVuLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo1MzptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DTFNfQUNUKSAgICAgKz0gZW4vdGMvYWN0L2FjdC5vIGVuL3RjL2FjdC9kcm9wLm8gZW4vdGMvYWN0L3RyYXAubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTU0LVxcdFxcdFxcdFxcdFxcdGVuL3RjL2FjdC9hY2NlcHQubyBlbi90Yy9hY3QvbWFyay5vIGVuL3RjL2FjdC9nb3RvLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTYxPWlmbmVxICgkKENPTkZJR19NTFg1X1RDX0NUKSwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjYyOlxcdG1seDVfY29yZS15XFx0XFx0XFx0ICAgICArPSBlbi90Y19jdC5vIGVuL3RjL2N0X2ZzX2RtZnMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo2MzpcXHRtbHg1X2NvcmUtJChDT05GSUdfTUxYNV9TV19TVEVFUklORykgKz0gZW4vdGMvY3RfZnNfc21mcy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjY0OlxcdG1seDVfY29yZS0kKENPTkZJR19NTFg1X0hXX1NURUVSSU5HKSArPSBlbi90Yy9jdF9mc19obWZzLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtNjUtZW5kaWZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtNjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjY3Om1seDVfY29yZS0kKENPTkZJR19NTFg1X1RDX1NBTVBMRSkgICArPSBlbi90Yy9zYW1wbGUub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS02OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS03MS0jXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjcyOm1seDVfY29yZS0kKENPTkZJR19NTFg1X0VTV0lUQ0gpICAgKz0gZXN3aXRjaC5vIGVzd2l0Y2hfb2ZmbG9hZHMubyBlc3dpdGNoX29mZmxvYWRzX3Rlcm10YmwubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTczLVxcdFxcdFxcdFxcdCAgICAgIGVjcGYubyByZG1hLm8gZXN3L2xlZ2FjeS5vIGVzdy9hZGpfdnBvcnQubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtNzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjc2Om1seDVfY29yZS0kKENPTkZJR19NTFg1X0VTV0lUQ0gpICAgKz0gZXN3L2FjbC9oZWxwZXIubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTc3LVxcdFxcdFxcdFxcdCAgICAgIGVzdy9hY2wvZWdyZXNzX2xnY3kubyBlc3cvYWNsL2VncmVzc19vZmxkLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTgwPWlmbmVxICgkKENPTkZJR19NTFg1X0VOX0lQU0VDKSwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjgxOlxcdG1seDVfY29yZS0kKENPTkZJR19NTFg1X0VTV0lUQ0gpICAgKz0gZXN3L2lwc2VjX2ZzLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtODItZW5kaWZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjg0Om1seDVfY29yZS0kKENPTkZJR19NTFg1X0JSSURHRSkgICAgKz0gZXN3L2JyaWRnZS5vIGVzdy9icmlkZ2VfbWNhc3QubyBlc3cvYnJpZGdlX2RlYnVnZnMubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTg1LVxcdFxcdFxcdFxcdCAgICAgIGVuL3JlcC9icmlkZ2Uub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS04Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6ODc6bWx4NV9jb3JlLSQoQ09ORklHX0hXTU9OKSAgICAgICAgICArPSBod21vbi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjg4Om1seDVfY29yZS0kKENPTkZJR19NTFg1X01QRlMpICAgICAgKz0gbGliL21wZnMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS04OS1pZm5lcSAoJChDT05GSUdfVlhMQU4pLClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6OTA6XFx0bWx4NV9jb3JlLXlcXHRcXHQgICArPSBsaWIvdnhsYW4ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS05MS1lbmRpZlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5MjptbHg1X2NvcmUtJChDT05GSUdfUFRQXzE1ODhfQ0xPQ0spICs9IGxpYi9jbG9jay5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjkzOm1seDVfY29yZS0kKENPTkZJR19QQ0lfSFlQRVJWX0lOVEVSRkFDRSkgKz0gbGliL2h2Lm8gbGliL2h2X3ZoY2Eub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS05NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS05Ny0jXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjk4Om1seDVfY29yZS0kKENPTkZJR19NTFg1X0NPUkVfSVBPSUIpICs9IGlwb2liL2lwb2liLm8gaXBvaWIvZXRodG9vbC5vIGlwb2liL2lwb2liX3ZsYW4ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS05OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMDItI1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxMDM6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRlBHQSkgKz0gZnBnYS9jbWQubyBmcGdhL2NvcmUubyBmcGdhL2Nvbm4ubyBmcGdhL3Nkay5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MTA1Om1seDVfY29yZS0kKENPTkZJR19NTFg1X01BQ1NFQykgKz0gZW5fYWNjZWwvbWFjc2VjLm8gbGliL21hY3NlY19mcy5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTA2LVxcdFxcdFxcdFxcdCAgICAgIGVuX2FjY2VsL21hY3NlY19zdGF0cy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEwNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MTA4Om1seDVfY29yZS0kKENPTkZJR19NTFg1X0VOX0lQU0VDKSArPSBlbl9hY2NlbC9pcHNlYy5vIGVuX2FjY2VsL2lwc2VjX3J4dHgubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEwOS1cXHRcXHRcXHRcXHQgICAgIGVuX2FjY2VsL2lwc2VjX3N0YXRzLm8gZW5fYWNjZWwvaXBzZWNfZnMubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxMTI6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRU5fVExTKSArPSBlbl9hY2NlbC9rdGxzX3N0YXRzLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMTMtXFx0XFx0XFx0XFx0ICAgZW5fYWNjZWwvZnNfdGNwLm8gZW5fYWNjZWwva3Rscy5vIGVuX2FjY2VsL2t0bHNfdHhyeC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjExNjptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9FTl9QU1ApICs9IGVuX2FjY2VsL3BzcC5vIGVuX2FjY2VsL3BzcF9yeHR4Lm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEyMC0jXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjEyMTptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9TV19TVEVFUklORykgKz0gc3RlZXJpbmcvc3dzL2RyX2RvbWFpbi5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTIyLVxcdFxcdFxcdFxcdFxcdHN0ZWVyaW5nL3N3cy9kcl90YWJsZS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xNDUtI1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxNDY6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfSFdfU1RFRVJJTkcpICs9IHN0ZWVyaW5nL2h3cy9jbWQubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTE0Ny1cXHRcXHRcXHRcXHRcXHRzdGVlcmluZy9od3MvY29udGV4dC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xNjctI1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxNjg6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfU0YpICs9IHNmL3ZoY2FfZXZlbnQubyBzZi9kZXYvZGV2Lm8gc2YvZGV2L2RyaXZlci5vIGlycV9hZmZpbml0eS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTE2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xNzItI1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToxNzM6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfU0ZfTUFOQUdFUikgKz0gc2YvY21kLm8gc2YvaHdfdGFibGUubyBzZi9kZXZsaW5rLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTE3Ny0jXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjE3ODptbHg1X2NvcmUtJChDT05GSUdfUENJRV9UUEgpICs9IGxpYi9zdC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTE3OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MTgwOm9iai0kKENPTkZJR19NTFg1X0RQTEwpICs9IG1seDVfZHBsbC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjE4MTptbHg1X2RwbGwteSA6PVxcdGRwbGwub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDItI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NlcV9maWxlLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDM6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21seDUvZHJpdmVyLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDU6I2luY2x1ZGUgXFxcIm1seDVfY29yZS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTE6c3RydWN0IG1seDVfZGJfcGdkaXIge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTUyLVxcdHN0cnVjdCBsaXN0X2hlYWRcXHRsaXN0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTg6c3RydWN0IG1seDVfZG1hX3Bvb2wge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTU5LVxcdC8qIFByb3RlY3RzIHBhZ2VfbGlzdCBhbmQgcGVyLXBhZ2UgYWxsb2NhdGlvbiBiaXRtYXBzLiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNjEtXFx0c3RydWN0IGxpc3RfaGVhZCBwYWdlX2xpc3Q7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NjI6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKmRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy02My1cXHRpbnQgbm9kZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjY3OnN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjY4OlxcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTY5LVxcdHN0cnVjdCBsaXN0X2hlYWQgcG9vbF9saW5rO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NzU6c3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NzY6XFx0c3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2xzW01MWDVfRlJBR19CVUZfUE9PTFNfTlVNXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy03Ny19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjc5OnN0cnVjdCBtbHg1X2RtYV9wb29sX3N0YXRzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy04MC1cXHRpbnQgbm9kZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjkwOnN0YXRpYyB2b2lkICptbHg1X2RtYV96YWxsb2NfY29oZXJlbnRfbm9kZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTkxLVxcdFxcdFxcdFxcdFxcdCAgIHNpemVfdCBzaXplLCBkbWFfYWRkcl90ICpkbWFfaGFuZGxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtOTMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjk0OlxcdHN0cnVjdCBkZXZpY2UgKmRldmljZSA9IG1seDVfY29yZV9kbWFfZGV2KGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6OTU6XFx0c3RydWN0IG1seDVfcHJpdiAqcHJpdiA9IFxcdTAwMjZkZXYtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtOTYtXFx0aW50IG9yaWdpbmFsX25vZGU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTA5OnN0YXRpYyB2b2lkIG1seDVfZG1hX3Bvb2xfZGVzdHJveShzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjExNTpzdGF0aWMgc3RydWN0IG1seDVfZG1hX3Bvb2wgKm1seDVfZG1hX3Bvb2xfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTE2LVxcdFxcdFxcdFxcdFxcdFxcdCAgaW50IG5vZGUsIHU4IGJsb2NrX3NoaWZ0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTExNy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTE4OlxcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTExOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTEzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxMzI6c3RhdGljIHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjEzMzptbHg1X2RtYV9wb29sX3BhZ2VfYWxsb2Moc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTM0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xMzUtXFx0aW50IGJsb2Nrc19wZXJfcGFnZSA9IEJJVChQQUdFX1NISUZUIC0gcG9vbC1cXHUwMDNlYmxvY2tfc2hpZnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjEzNjpcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTEzNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE0Ny1cXHRiaXRtYXBfZmlsbChwYWdlLVxcdTAwM2ViaXRtYXAsIGJsb2Nrc19wZXJfcGFnZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTQ4OlxcdHBhZ2UtXFx1MDAzZWJ1ZiA9IG1seDVfZG1hX3phbGxvY19jb2hlcmVudF9ub2RlKHBvb2wtXFx1MDAzZWRldiwgUEFHRV9TSVpFLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE0OS1cXHRcXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZwYWdlLVxcdTAwM2VkbWEsIHBvb2wtXFx1MDAzZW5vZGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE2MzpzdGF0aWMgdm9pZCBtbHg1X2RtYV9wb29sX3BhZ2VfZnJlZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE2NDpcXHRcXHRcXHRcXHQgICAgc3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xNjUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE2NjpcXHRkbWFfZnJlZV9jb2hlcmVudChtbHg1X2NvcmVfZG1hX2RldihkZXYpLCBQQUdFX1NJWkUsIHBhZ2UtXFx1MDAzZWJ1ZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xNjctXFx0XFx0XFx0ICBwYWdlLVxcdTAwM2VkbWEpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMTcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE3MjpzdGF0aWMgaW50IG1seDVfZG1hX3Bvb2xfYWxsb2NfZnJvbV9wYWdlKHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE3MzpcXHRcXHRcXHRcXHRcXHQgc3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xNzQtXFx0XFx0XFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgKmlkeF9vdXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTkwOnN0YXRpYyBzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoxOTE6bWx4NV9kbWFfcG9vbF9hbGxvYyhzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbCwgdW5zaWduZWQgbG9uZyAqaWR4X291dClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0xOTIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjE5MzpcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE5NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTE5Ny1cXHRwYWdlID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKFxcdTAwMjZwb29sLVxcdTAwM2VwYWdlX2xpc3QsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTk4OlxcdFxcdFxcdFxcdFxcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UsIHBvb2xfbGluayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MTk5OlxcdGlmIChwYWdlIFxcdTAwMjZcXHUwMDI2ICFtbHg1X2RtYV9wb29sX2FsbG9jX2Zyb21fcGFnZShwb29sLCBwYWdlLCBpZHhfb3V0KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMDAtXFx0XFx0Z290byB1bmxvY2s7IC8qIHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgZnJvbSBleGlzdGluZyBwYWdlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjIwMjpcXHRwYWdlID0gbWx4NV9kbWFfcG9vbF9wYWdlX2FsbG9jKHBvb2wpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIwMy1cXHRpZiAoIXBhZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMDYtXFx0bGlzdF9hZGQoXFx1MDAyNnBhZ2UtXFx1MDAzZXBvb2xfbGluaywgXFx1MDAyNnBvb2wtXFx1MDAzZXBhZ2VfbGlzdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjA3OlxcdG1seDVfZG1hX3Bvb2xfYWxsb2NfZnJvbV9wYWdlKHBvb2wsIHBhZ2UsIGlkeF9vdXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIwOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIxMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyMTQ6c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbF9mcmVlKHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjIxNTpcXHRcXHRcXHQgICAgICAgc3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yMTYtXFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjI2LVxcdFxcdGxpc3RfZGVsKFxcdTAwMjZwYWdlLVxcdTAwM2Vwb29sX2xpbmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjIyNzpcXHRcXHRtbHg1X2RtYV9wb29sX3BhZ2VfZnJlZShwb29sLVxcdTAwM2VkZXYsIHBhZ2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIyOC1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjIzNzpzdGF0aWMgdm9pZCBtbHg1X2RtYV9wb29sX2RlYnVnZnNfZ2V0X3N0YXRzKHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjIzODpcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IG1seDVfZG1hX3Bvb2xfc3RhdHMgKnN0YXRzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTIzOS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjQwLVxcdGludCBibG9ja3NfcGVyX3BhZ2UgPSBCSVQoUEFHRV9TSElGVCAtIHBvb2wtXFx1MDAzZWJsb2NrX3NoaWZ0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyNDE6XFx0c3RydWN0IG1seDVfZG1hX3Bvb2xfcGFnZSAqcGFnZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yNDItXFx0c2l6ZV90IGZyZWVfYmxvY2tzID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyNTg6c3RhdGljIHZvaWQgbWx4NV9kbWFfcG9vbF9kZWJ1Z2ZzX3N0YXRzX3ByaW50KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyNTk6XFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG1seDVfZG1hX3Bvb2wgKnBvb2wpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjYwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyNjE6XFx0c3RydWN0IG1seDVfZG1hX3Bvb2xfc3RhdHMgc3RhdHMgPSB7fTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MjYzOlxcdG1seDVfZG1hX3Bvb2xfZGVidWdmc19nZXRfc3RhdHMocG9vbCwgXFx1MDAyNnN0YXRzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yNjQtXFx0c2VxX3ByaW50ZihmaWxlLCBcXFwiJTRkICAgICAgICU1enUgICAgICAlN3p1ICAgICAgICAgICAlN3p1XFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjY4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI2OTpzdGF0aWMgdm9pZCBtbHg1X2RtYV9wb29sc19kZWJ1Z2ZzX3ByaW50X2hlYWRlcihzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjcwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jPTI3ND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI3NTptbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHNfZGVzdHJveShzdHJ1Y3QgbWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzICpub2RlX3Bvb2xzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI3Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yNzgtXFx0XFx0aWYgKG5vZGVfcG9vbHMtXFx1MDAzZXBvb2xzW2ldKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI3OTpcXHRcXHRcXHRtbHg1X2RtYV9wb29sX2Rlc3Ryb3kobm9kZV9wb29scy1cXHUwMDNlcG9vbHNbaV0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI4MC1cXHRrZnJlZShub2RlX3Bvb2xzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzoyODM6c3RhdGljIHN0cnVjdCBtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHMgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI4NDptbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHNfY3JlYXRlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBub2RlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTI4NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6Mjg2OlxcdHN0cnVjdCBtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHMgKm5vZGVfcG9vbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMjk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI5NTpcXHRcXHRub2RlX3Bvb2xzLVxcdTAwM2Vwb29sc1tpXSA9IG1seDVfZG1hX3Bvb2xfY3JlYXRlKGRldiwgbm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yOTYtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIGJsb2NrX3NoaWZ0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yOTctXFx0XFx0aWYgKCFub2RlX3Bvb2xzLVxcdTAwM2Vwb29sc1tpXSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjI5ODpcXHRcXHRcXHRtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHNfZGVzdHJveShub2RlX3Bvb2xzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0yOTktXFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYz0zMDY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjMwNzptbHg1X2ZyYWdfYnVmX2RtYV9wb29sc19kZWJ1Z2ZzX3Nob3coc3RydWN0IHNlcV9maWxlICpmaWxlLCB2b2lkICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMwOC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzA5OlxcdHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMxMC1cXHRpbnQgbm9kZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzEyOlxcdG1seDVfZG1hX3Bvb2xzX2RlYnVnZnNfcHJpbnRfaGVhZGVyKGZpbGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMxNy1cXHRmb3JfZWFjaF9ub2RlX3N0YXRlKG5vZGUsIE5fUE9TU0lCTEUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozMTg6XFx0XFx0c3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scyAqbm9kZV9wb29scztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMjQtXFx0XFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBNTFg1X0ZSQUdfQlVGX1BPT0xTX05VTTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzI1OlxcdFxcdFxcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sID0gbm9kZV9wb29scy1cXHUwMDNlcG9vbHNbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzI2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjMzMDpcXHRcXHRcXHRtbHg1X2RtYV9wb29sX2RlYnVnZnNfc3RhdHNfcHJpbnQoZmlsZSwgcG9vbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzMxLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTMzNS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzM2OkRFRklORV9TSE9XX0FUVFJJQlVURShtbHg1X2ZyYWdfYnVmX2RtYV9wb29sc19kZWJ1Z2ZzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzM4OnZvaWQgbWx4NV9mcmFnX2J1Zl9wb29sc19jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzM5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozNDA6XFx0c3RydWN0IG1seDVfcHJpdiAqcHJpdiA9IFxcdTAwMjZkZXYtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzQxLVxcdGludCBub2RlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzQ2LVxcdGZvcl9lYWNoX25vZGVfc3RhdGUobm9kZSwgTl9QT1NTSUJMRSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM0NzpcXHRcXHRzdHJ1Y3QgbWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzICpub2RlX3Bvb2xzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM0OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM1MS1cXHRcXHRcXHRjb250aW51ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozNTI6XFx0XFx0bWx4NV9mcmFnX2J1Zl9ub2RlX3Bvb2xzX2Rlc3Ryb3kobm9kZV9wb29scyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzUzLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozNTk6aW50IG1seDVfZnJhZ19idWZfcG9vbHNfaW5pdChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM2MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzYxOlxcdHN0cnVjdCBtbHg1X3ByaXYgKnByaXYgPSBcXHUwMDI2ZGV2LVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM2Mi1cXHRpbnQgbm9kZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM2OS1cXHRmb3JfZWFjaF9ub2RlX3N0YXRlKG5vZGUsIE5fUE9TU0lCTEUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzozNzA6XFx0XFx0c3RydWN0IG1seDVfZnJhZ19idWZfbm9kZV9wb29scyAqbm9kZV9wb29scztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zNzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzcyOlxcdFxcdG5vZGVfcG9vbHMgPSBtbHg1X2ZyYWdfYnVmX25vZGVfcG9vbHNfY3JlYXRlKGRldiwgbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzczLVxcdFxcdGlmICghbm9kZV9wb29scykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM3NDpcXHRcXHRcXHRtbHg1X2ZyYWdfYnVmX3Bvb2xzX2NsZWFudXAoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zNzUtXFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy0zODItXFx0XFx0XFx0XFx0ICAgIHByaXYtXFx1MDAzZWRiZy5kYmdfcm9vdCwgZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM4MzpcXHRcXHRcXHRcXHQgICAgXFx1MDAyNm1seDVfZnJhZ19idWZfZG1hX3Bvb2xzX2RlYnVnZnNfZm9wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtMzg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM4ODppbnQgbWx4NV9mcmFnX2J1Zl9hbGxvY19ub2RlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCBzaXplLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjM4OTpcXHRcXHRcXHQgICAgIHN0cnVjdCBtbHg1X2ZyYWdfYnVmICpidWYsIGludCBub2RlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM5MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6MzkxOlxcdHN0cnVjdCBtbHg1X2RtYV9wb29sICpwb29sO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTM5Mi1cXHRpbnQgcG9vbF9pZHg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MDgtXFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBidWYtXFx1MDAzZW5wYWdlczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDA5OlxcdFxcdHN0cnVjdCBtbHg1X2J1Zl9saXN0ICpmcmFnID0gXFx1MDAyNmJ1Zi1cXHUwMDNlZnJhZ3NbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDEwOlxcdFxcdHN0cnVjdCBtbHg1X2RtYV9wb29sX3BhZ2UgKnBhZ2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDExLVxcdFxcdHVuc2lnbmVkIGxvbmcgaWR4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0MTM6XFx0XFx0cGFnZSA9IG1seDVfZG1hX3Bvb2xfYWxsb2MocG9vbCwgXFx1MDAyNmlkeCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDE0LVxcdFxcdGlmICghcGFnZSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQxNTpcXHRcXHRcXHRtbHg1X2ZyYWdfYnVmX2ZyZWUoZGV2LCBidWYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQxNi1cXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQyNC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDI1OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfZnJhZ19idWZfYWxsb2Nfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQyNzp2b2lkIG1seDVfZnJhZ19idWZfZnJlZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9mcmFnX2J1ZiAqYnVmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQyOC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDI5LVxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgYnVmLVxcdTAwM2VucGFnZXM7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQzMDpcXHRcXHRzdHJ1Y3QgbWx4NV9idWZfbGlzdCAqZnJhZyA9IFxcdTAwMjZidWYtXFx1MDAzZWZyYWdzW2ldO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQzMTpcXHRcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbF9wYWdlICpwYWdlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQzMjpcXHRcXHRzdHJ1Y3QgbWx4NV9kbWFfcG9vbCAqcG9vbDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00MzMtXFx0XFx0dW5zaWduZWQgbG9uZyBpZHg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00NDAtXFx0XFx0aWR4ID0gKGZyYWctXFx1MDAzZW1hcCAtIHBhZ2UtXFx1MDAzZWRtYSkgXFx1MDAzZVxcdTAwM2UgcG9vbC1cXHUwMDNlYmxvY2tfc2hpZnQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NDQxOlxcdFxcdG1seDVfZG1hX3Bvb2xfZnJlZShwb29sLCBwYWdlLCBpZHgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ0Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00NDQtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ0NTpFWFBPUlRfU1lNQk9MX0dQTChtbHg1X2ZyYWdfYnVmX2ZyZWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ0Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NDc6c3RhdGljIHN0cnVjdCBtbHg1X2RiX3BnZGlyICptbHg1X2FsbG9jX2RiX3BnZGlyKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNDQ4LVxcdFxcdFxcdFxcdFxcdFxcdCBpbnQgbm9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ1MC1cXHR1MzIgZGJfcGVyX3BhZ2UgPSBQQUdFX1NJWkUgLyBjYWNoZV9saW5lX3NpemUoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NTE6XFx0c3RydWN0IG1seDVfZGJfcGdkaXIgKnBnZGlyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NjU6XFx0cGdkaXItXFx1MDAzZWRiX3BhZ2UgPSBtbHg1X2RtYV96YWxsb2NfY29oZXJlbnRfbm9kZShkZXYsIFBBR0VfU0laRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy00NjYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZwZ2Rpci1cXHUwMDNlZGJfZG1hLCBub2RlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo0NzY6c3RhdGljIGludCBtbHg1X2FsbG9jX2RiX2Zyb21fcGdkaXIoc3RydWN0IG1seDVfZGJfcGdkaXIgKnBnZGlyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjQ3NzpcXHRcXHRcXHRcXHQgICAgc3RydWN0IG1seDVfZGIgKmRiKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTQ3OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTAxOmludCBtbHg1X2RiX2FsbG9jX25vZGUoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZGIgKmRiLCBpbnQgbm9kZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MDIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUwMzpcXHRzdHJ1Y3QgbWx4NV9kYl9wZ2RpciAqcGdkaXI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTA0LVxcdGludCByZXQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTA4LVxcdGxpc3RfZm9yX2VhY2hfZW50cnkocGdkaXIsIFxcdTAwMjZkZXYtXFx1MDAzZXByaXYucGdkaXJfbGlzdCwgbGlzdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MDk6XFx0XFx0aWYgKCFtbHg1X2FsbG9jX2RiX2Zyb21fcGdkaXIocGdkaXIsIGRiKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MTAtXFx0XFx0XFx0Z290byBvdXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjUxMjpcXHRwZ2RpciA9IG1seDVfYWxsb2NfZGJfcGdkaXIoZGV2LCBub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MTMtXFx0aWYgKCFwZ2Rpcikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTIwLVxcdC8qIFRoaXMgc2hvdWxkIG5ldmVyIGZhaWwgLS0gd2UganVzdCBhbGxvY2F0ZWQgYW4gZW1wdHkgcGFnZTogKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1MjE6XFx0V0FSTl9PTihtbHg1X2FsbG9jX2RiX2Zyb21fcGdkaXIocGdkaXIsIGRiKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTIyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTI3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1Mjg6RVhQT1JUX1NZTUJPTF9HUEwobWx4NV9kYl9hbGxvY19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTMwOnZvaWQgbWx4NV9kYl9mcmVlKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2RiICpkYilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01MzEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTM4LVxcdGlmIChiaXRtYXBfZnVsbChkYi1cXHUwMDNldS5wZ2Rpci1cXHUwMDNlYml0bWFwLCBkYl9wZXJfcGFnZSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1Mzk6XFx0XFx0ZG1hX2ZyZWVfY29oZXJlbnQobWx4NV9jb3JlX2RtYV9kZXYoZGV2KSwgUEFHRV9TSVpFLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTU0MC1cXHRcXHRcXHRcXHQgIGRiLVxcdTAwM2V1LnBnZGlyLVxcdTAwM2VkYl9wYWdlLCBkYi1cXHUwMDNldS5wZ2Rpci1cXHUwMDNlZGJfZG1hKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTU0Ny19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTQ4OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfZGJfZnJlZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjU1MDp2b2lkIG1seDVfZmlsbF9wYWdlX2ZyYWdfYXJyYXlfcGVybShzdHJ1Y3QgbWx4NV9mcmFnX2J1ZiAqYnVmLCBfX2JlNjQgKnBhcywgdTggcGVybSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01NTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmMtNTU3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYzo1NTg6RVhQT1JUX1NZTUJPTF9HUEwobWx4NV9maWxsX3BhZ2VfZnJhZ19hcnJheV9wZXJtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01NTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTYwOnZvaWQgbWx4NV9maWxsX3BhZ2VfZnJhZ19hcnJheShzdHJ1Y3QgbWx4NV9mcmFnX2J1ZiAqYnVmLCBfX2JlNjQgKnBhcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvYWxsb2MuYy01NjEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jOjU2MjpcXHRtbHg1X2ZpbGxfcGFnZV9mcmFnX2FycmF5X3Blcm0oYnVmLCBwYXMsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9hbGxvYy5jLTU2My19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2FsbG9jLmM6NTY0OkVYUE9SVF9TWU1CT0xfR1BMKG1seDVfZmlsbF9wYWdlX2ZyYWdfYXJyYXkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTM5LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9yYW5kb20uaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6NDA6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21seDUvZHJpdmVyLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjQxOiNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbHg1L2VxLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTQyLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZWJ1Z2ZzLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTQzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo0NDojaW5jbHVkZSBcXFwibWx4NV9jb3JlLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTQ1LSNpbmNsdWRlIFxcXCJsaWIvZXEuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy00OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6NTA6c3RydWN0IG1seDVfaWZjX21ib3hfb3V0X2JpdHMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy01MS1cXHR1OCAgICAgICAgIHN0YXR1c1sweDhdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzo1OTpzdHJ1Y3QgbWx4NV9pZmNfbWJveF9pbl9iaXRzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtNjAtXFx0dTggICAgICAgICBvcGNvZGVbMHgxMF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM9OTc9c3RhdGljIHUxNiBpbl90b191aWQodm9pZCAqaW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTA0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxMDU6c3RhdGljIGJvb2wgbWx4NV9jbWRfaXNfdGhyb3R0bGVfb3Bjb2RlKHUxNiBvcClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTA2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjExODpzdGF0aWMgc3RydWN0IG1seDVfY21kX3dvcmtfZW50ICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTE5OmNtZF9hbGxvY19lbnQoc3RydWN0IG1seDVfY21kICpjbWQsIHN0cnVjdCBtbHg1X2NtZF9tc2cgKmluLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxMjA6XFx0ICAgICAgc3RydWN0IG1seDVfY21kX21zZyAqb3V0LCB2b2lkICp1b3V0LCBpbnQgdW91dF9zaXplLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxMjE6XFx0ICAgICAgbWx4NV9jbWRfY2JrX3QgY2JrLCB2b2lkICpjb250ZXh0LCBpbnQgcGFnZV9xdWV1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTIyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTIzLVxcdGdmcF90IGFsbG9jX2ZsYWdzID0gY2JrID8gR0ZQX0FUT01JQyA6IEdGUF9LRVJORUw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjEyNDpcXHRzdHJ1Y3QgbWx4NV9jbWRfd29ya19lbnQgKmVudDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTI1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTQ1OnN0YXRpYyB2b2lkIGNtZF9mcmVlX2VudChzdHJ1Y3QgbWx4NV9jbWRfd29ya19lbnQgKmVudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjE1MDpzdGF0aWMgdTggYWxsb2NfdG9rZW4oc3RydWN0IG1seDVfY21kICpjbWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxNjQ6c3RhdGljIGludCBjbWRfYWxsb2NfaW5kZXgoc3RydWN0IG1seDVfY21kICpjbWQsIHN0cnVjdCBtbHg1X2NtZF93b3JrX2VudCAqZW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTgxOnN0YXRpYyB2b2lkIGNtZF9mcmVlX2luZGV4KHN0cnVjdCBtbHg1X2NtZCAqY21kLCBpbnQgaWR4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xODIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTg4OnN0YXRpYyB2b2lkIGNtZF9lbnRfZ2V0KHN0cnVjdCBtbHg1X2NtZF93b3JrX2VudCAqZW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xODkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTE5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MTkzOnN0YXRpYyB2b2lkIGNtZF9lbnRfcHV0KHN0cnVjdCBtbHg1X2NtZF93b3JrX2VudCAqZW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0xOTQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoxOTU6XFx0c3RydWN0IG1seDVfY21kICpjbWQgPSBlbnQtXFx1MDAzZWNtZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMTk2LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYzoyMTM6c3RhdGljIHN0cnVjdCBtbHg1X2NtZF9sYXlvdXQgKmdldF9pbnN0KHN0cnVjdCBtbHg1X2NtZCAqY21kLCBpbnQgaWR4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjE4OnN0YXRpYyBpbnQgbWx4NV9jYWxjX2NtZF9ibG9ja3Moc3RydWN0IG1seDVfY21kX21zZyAqbXNnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yMTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jPTIyNj1zdGF0aWMgdTggeG9yOF9idWYodm9pZCAqYnVmLCBzaXplX3Qgb2Zmc2V0LCBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTIzOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmM6MjM5OnN0YXRpYyBpbnQgdmVyaWZ5X2Jsb2NrX3NpZyhzdHJ1Y3QgbWx4NV9jbWRfcHJvdF9ibG9jayAqYmxvY2spXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jLTI0MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jOjI0MTpcXHRzaXplX3QgcnN2ZDBfb2ZmID0gb2Zmc2V0b2Yoc3RydWN0IG1seDVfY21kX3Byb3RfYmxvY2ssIHJzdmQwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMtMjQyLVxcdGludCB4b3JfbGVuID0gc2l6ZW9mKCpibG9jaykgLSBzaXplb2YoYmxvY2stXFx1MDAzZWRhdGEpIC0gMTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYy0yNTItXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA4OjUzOjEzLjA2MTE2OTAxMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MjU4MjI3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtbHg1IERyaXZlcioqXG5cbk9rYXksIHNvIHRoZSB0ZXh0IGNvbmZpcm1zIHRoaXMgaXMgYSBoYXJkd2FyZSBkcml2ZXIsIG5vdCBzb21ldGhpbmcgc3l6a2FsbGVyJ3MgZW11bGF0aW5nLiBHb29kLCB0aGF0IGVsaW1pbmF0ZXMgYSBwb3NzaWJpbGl0eS4gTm93LCBsZXQncyBkaWcgYSBsaXR0bGUgZGVlcGVyLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uY2AgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IHNvcnQgb2Ygc29mdHdhcmUgaW50ZXJmYWNlIGludm9sdmVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGludGVyYWN0cyBzb2xlbHkgdGhyb3VnaCBQQ0ksIG9yIGlmIHRoZXJlJ3Mgc29tZSBpbnRlcm5hbCBzb2Z0d2FyZSBhc3BlY3QuIEFoLCB0aGUgYG1seDVfY29yZWAgZHJpdmVyICpkb2VzKiBiaW5kIHRvIFBDSSBkZXZpY2VzLCB3aGljaCBpc24ndCBlbnRpcmVseSB1bmV4cGVjdGVkLiBCdXQgdGhhdCBicmluZ3MgdXAgYW5vdGhlciBxdWVzdGlvbjogaXMgdGhlcmUgYW55IHZpcnR1YWwgYnVzIG1lY2hhbmlzbSB0aGF0IHRoaXMgZHJpdmVyIHV0aWxpemVzLCBwZXJoYXBzIHRvIGhhbmRsZSByZXNvdXJjZSBhbGxvY2F0aW9uIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBJJ2xsIHF1aWNrbHkgY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmNgIHRvIHNlZSBpZiBpdCBwcm92aWRlcyBhbnkgY2x1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMjkyLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA4OjUzOjE3Ljg4Njk5NTMwNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTIyMDA3OTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTIzNDM9c3RhdGljIGludCBfX2luaXQgbWx4NV9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoyMzYzOlxcdGVyciA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNm1seDVfY29yZV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjM2NC1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwODo1MzoxOC4xOTkyMTAwNjZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTA5NTc0Njc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQWNjZXNzaWJpbGl0eSBvZiBUaGlzIENvZGUgU25pcHBldCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQsIHllYWgsIGl0J3MgZGVmaW5pdGVseSBhIFBDSSBkcml2ZXIsIHNwZWNpZmljYWxseSBvbmUgcmVsYXRlZCB0byBNZWxsYW5veCBoYXJkd2FyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gSSByZWFjaCB0aGlzIGNvZGUgdmlhIHNvbWV0aGluZyBsaWtlIG5ldGxpbmssIG9yIGEgbW9yZSBhYnN0cmFjdGVkIGludGVyZmFjZSwgd2l0aG91dCBhY3R1YWxseSBoYXZpbmcgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHByZXNlbnQ/IEJlY2F1c2UsIGlkZWFsbHksIEknZCB3YW50IHRvIHRlc3QgaXQgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LlxuXG5VbmZvcnR1bmF0ZWx5LCBuby4gVGhlIGBtbHg1ZV9wcml2YCBzdHJ1Y3R1cmUsIHdoaWNoIEkgYXNzdW1lIGlzIGNlbnRyYWwgdG8gdGhpcyB3aG9sZSB0aGluZywgZ2V0cyBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkIGR1cmluZyB0aGUgUENJIGRldmljZSBwcm9iZS4gV2l0aG91dCB0aGUgaGFyZHdhcmUsIHRoZSBkcml2ZXIgZG9lc24ndCBnZXQgcHJvYmVkLCBtZWFuaW5nIHRoYXQgYHByaXZgIHN0cnVjdHVyZSBzaW1wbHkgd29uJ3QgZXhpc3QuIEluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQg4oCTIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIFFFTVUg4oCTIEknbSBwcmV0dHkgY29uZmlkZW50IHRoYXQgdGhlIG1vZGlmaWVkIGNvZGUgd291bGQgYmUgdW5yZWFjaGFibGUgd2l0aG91dCBkb2luZyBQQ0kgcGFzc3Rocm91Z2guIFNvLCBiYXNlZCBvbiB0aGF0LCB0aGUgZnV6emluZyBwb3RlbnRpYWwgaGVyZSBzZWVtcyBsb3cuIExldCdzIG1hcmsgYFdvcnRoRnV6emluZz1mYWxzZWAgZm9yIG5vdy5cblxuQnV0IHdhaXQgYSBtaW51dGUuLi4gY291bGQgdGhpcyBzb21laG93IGJlIGFjY2Vzc2VkIHRocm91Z2ggc29tZXRoaW5nIGxpa2UgYG5ldGRldnNpbWAsIG9yIHNvbWUgb3RoZXIgc29ydCBvZiBtb2NrIGRldmljZSBkcml2ZXI/IE5vLCBgbmV0ZGV2c2ltYCBpcyBhIGNvbXBsZXRlbHkgc2VwYXJhdGUgZHJpdmVyLCBzbyB0aGF0IHdvdWxkbid0IHdvcmsuIEhtbW0sIGxldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayBpZiB0aGVyZSdzIGFueSBzb3J0IG9mIGBtbHg1YCBtb2NrIGRyaXZlciBwcmVzZW50IGluIHRoZSBrZXJuZWwuIFRoaXMgbmVlZHMgYSBsaXR0bGUgZGVlcGVyIGRpdmUsIGFzIGEgZGVkaWNhdGVkIG1vY2sgY291bGQgYmUgdGhlIGtleSB0byBjb250cm9sbGVkIGZ1enppbmcuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzgwMSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwODo1MzoyMy43MDg3ODc5NTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQyMTg2MDQyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1X2NvcmVfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTIyNjU9aW50IG1seDVfcmVjb3Zlcl9kZXZpY2Uoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjI3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjIyNzY6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1seDVfY29yZV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMjc3LVxcdC5uYW1lICAgICAgICAgICA9IEtCVUlMRF9NT0ROQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0yMzAxPXN0cnVjdCBtbHg1X2NvcmVfZGV2ICptbHg1X3ZmX2dldF9jb3JlX2RldihzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjMwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjIzMDU6XFx0bWRldiA9IHBjaV9pb3ZfZ2V0X3BmX2RydmRhdGEocGRldiwgXFx1MDAyNm1seDVfY29yZV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjMwNi1cXHRpZiAoSVNfRVJSKG1kZXYpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0yMzQzPXN0YXRpYyBpbnQgX19pbml0IG1seDVfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MjM2MzpcXHRlcnIgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZtbHg1X2NvcmVfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzNjQtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MjM3OD1zdGF0aWMgdm9pZCBfX2V4aXQgbWx4NV9jbGVhbnVwKHZvaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzc5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjIzODA6XFx0cGNpX3VucmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZtbHg1X2NvcmVfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzODEtXFx0bWx4NV9zZl9kcml2ZXJfdW5yZWdpc3RlcigpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwODo1MzoyOS4xMzA2NTU5OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNzY0MzE4ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhc3Nlc3NtZW50IG9mIHRoaXMgc2l0dWF0aW9uOlxuXG4qKlVucmVhY2hhYmxlIENvZGUgaW4gdGhlIE1lbGxhbm94IERyaXZlcioqXG5cbkFscmlnaHQsIEkndmUgdGFrZW4gYSBsb29rIGF0IHRoaXMgcGF0Y2gsIGFuZCB0aGUgY29uY2x1c2lvbiBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGVyZSdzIG5vIHBvaW50IGluIGV2ZW4gY29uc2lkZXJpbmcgdGhpcyBjb2RlIGZvciBmdXp6aW5nIHdpdGggdGhlIHN0YW5kYXJkIHN5emthbGxlciBzZXR1cC4gVGhlIGNydWNpYWwgdGhpbmcgaXMgdGhhdCB0aGlzIHBhdGNoIHRhcmdldHMgdGhlIE1lbGxhbm94IG1seDUgZXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyBhICpoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyKi4gU2luY2Ugc3l6a2FsbGVyLCBpbiBpdHMgZGVmYXVsdCBjb25maWd1cmF0aW9ucyBmb3IgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGRvZXNuJ3QgYWN0dWFsbHkgKmVtdWxhdGUqIE1lbGxhbm94IGhhcmR3YXJlLCB0aGUgY29kZSBtb2RpZmllZCBieSB0aGlzIHBhdGNoIGlzIHNpbXBseSB1bnJlYWNoYWJsZSBkdXJpbmcgYW55IHN0YW5kYXJkIGZ1enppbmcgcnVucy4gSXQncyBub3QgYSBxdWVzdGlvbiBvZiBjb21wbGV4aXR5IG9yIHBvdGVudGlhbCBmb3IgYnVnczsgaXQncyBhIG1hdHRlciBvZiB0aGUgaGFyZHdhcmUgYmVpbmcgZnVuZGFtZW50YWxseSBhYnNlbnQgaW4gdGhlIHRhcmdldCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXTigJlzIGp1c3Qgbm90IGdvaW5nIHRvIGJlIHRyaWdnZXJlZCBpbiBhIHdheSB0aGF04oCZcyB1c2VmdWwgZm9yIGZpbmRpbmcgdnVsbmVyYWJpbGl0aWVzIHdpdGggdGhlIHJlc291cmNlcyB3ZSBoYXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDkyOCwiT3V0cHV0VG9rZW5zIjo4NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA4OjUzOjMzLjUwNzA5MjI1M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWxsYW5veCBtbHg1IGV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyLiBTaW5jZSBzeXprYWxsZXIgZG9lcyBub3QgZW11bGF0ZSBNZWxsYW5veCBoYXJkd2FyZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUpLCB0aGlzIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVsbGFub3ggbWx4NSBldGhlcm5ldCBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlci4gU2luY2Ugc3l6a2FsbGVyIGRvZXMgbm90IGVtdWxhdGUgTWVsbGFub3ggaGFyZHdhcmUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSwgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowbpfn8[1] Phase: Running StartedAt: 2026-06-22 08:53:45 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbpfn8[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-22 08:53:45 +0000 UTC FinishedAt: 2026-06-22 08:54:32 +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,}