Name: series-workflowjjnwn Phase: Succeeded StartedAt: 2026-07-08 18:58:05 +0000 UTC FinishedAt: 2026-07-08 23:31:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[0] Phase: Succeeded StartedAt: 2026-07-08 18:58:05 +0000 UTC FinishedAt: 2026-07-08 19:25:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[0].run-triage Phase: Succeeded StartedAt: 2026-07-08 18:58:05 +0000 UTC FinishedAt: 2026-07-08 19:25:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK", "BLK_DEV_ZONED" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK", "BLK_DEV_ZONED" ], "series_id": "53ad5c3f-a327-4a23-940a-545325dc73ff" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "nullb_device_power_store", "nullb_apply_submit_queues", "nullb_apply_poll_queues", "null_validate_conf", "null_add_dev", "null_init_zoned_dev" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE5OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9aT05FRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2FwcGx5X3BvbGxfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxfdmFsaWRhdGVfY29uZiYjMzQ7LAogICAgJiMzNDtudWxsX2FkZF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbF9pbml0X3pvbmVkX2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBkYXRhIHJhY2VzIGFuZCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgaW4gdGhlIG51bGxfYmxrIGRyaXZlci4gVGhlIGRyaXZlciBpcyBzb2Z0d2FyZS1lbXVsYXRlZCBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG1vZGlmaWVkIGNvbmZpZ2ZzIGF0dHJpYnV0ZSBzdG9yZSBmdW5jdGlvbnMgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbiBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxOToyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY0ZGYzZDJlOWIyZjNjMzU4NDlmOTE4NDQ5MzA4NjllMmM2ZWM4N2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCA4IDE5OjIzOjI1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbmluZGV4IGY4YzBmZDU3ZTA0MWE4Li5mZDNjOTkzYTY3YjJiZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuQEAgLTY2LDcgJiM0Mzs2Niw3IEBAIHN0cnVjdCBudWxsYl9wYWdlIHtcbiAjZGVmaW5lIE5VTExCX1BBR0VfRlJFRSAoTUFQX1NaIC0gMilcbiBcbiBzdGF0aWMgTElTVF9IRUFEKG51bGxiX2xpc3QpO1xuLXN0YXRpYyBzdHJ1Y3QgbXV0ZXggbG9jaztcbiYjNDM7c3RhdGljIERFRklORV9NVVRFWChsb2NrKTtcbiBzdGF0aWMgaW50IG51bGxfbWFqb3I7XG4gc3RhdGljIERFRklORV9JREEobnVsbGJfaW5kZXhlcyk7XG4gc3RhdGljIHN0cnVjdCBibGtfbXFfdGFnX3NldCB0YWdfc2V0O1xuQEAgLTM0Niw3ICYjNDM7MzQ2LDcgQEAgc3RhdGljIHNzaXplX3RcdFx0XHRcdFx0XHRcdFx0XFxcbiBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXHRcXFxuIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0cmV0dXJuIG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3Nob3coXHRcdFx0XHRcXFxuLVx0XHRcdFx0dG9fbnVsbGJfZGV2aWNlKGl0ZW0pLVx1MDAzZU5BTUUsIHBhZ2UpO1x0XFxcbiYjNDM7XHRcdFx0UkVBRF9PTkNFKHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2VOQU1FKSwgcGFnZSk7XHRcXFxuIH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuIHN0YXRpYyBzc2l6ZV90XHRcdFx0XHRcdFx0XHRcdFxcXG4gbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcdFxcXG5AQCAtMzYwLDEzICYjNDM7MzYwLDE2IEBAIG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnBhZ2UsXHRcXFxuIFx0cmV0ID0gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc3RvcmUoXHUwMDI2bmV3X3ZhbHVlLCBwYWdlLCBjb3VudCk7XFxcbiBcdGlmIChyZXQgXHUwMDNjIDApXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKGFwcGx5X2ZuKVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0cmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpO1x0XHRcdFx0XFxcbiBcdGVsc2UgaWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSBcdFxcXG4gXHRcdHJldCA9IC1FQlVTWTtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGlmICghcmV0KVx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZU5BTUUsIG5ld192YWx1ZSk7XHRcdFx0XFxcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbiBcdGlmIChyZXQgXHUwMDNjIDApXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFxcXG4tXHRkZXYtXHUwMDNlTkFNRSA9IG5ld192YWx1ZTtcdFx0XHRcdFx0XHRcXFxuIFx0cmV0dXJuIGNvdW50O1x0XHRcdFx0XHRcdFx0XFxcbiB9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIE5BTUUpO1xuQEAgLTQwMSw4ICYjNDM7NDA0LDggQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdCAqL1xuIFx0ZGV2LVx1MDAzZXByZXZfc3VibWl0X3F1ZXVlcyA9IGRldi1cdTAwM2VzdWJtaXRfcXVldWVzO1xuIFx0ZGV2LVx1MDAzZXByZXZfcG9sbF9xdWV1ZXMgPSBkZXYtXHUwMDNlcG9sbF9xdWV1ZXM7XG4tXHRkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcyA9IHN1Ym1pdF9xdWV1ZXM7XG4tXHRkZXYtXHUwMDNlcG9sbF9xdWV1ZXMgPSBwb2xsX3F1ZXVlcztcbiYjNDM7XHRXUklURV9PTkNFKGRldi1cdTAwM2VzdWJtaXRfcXVldWVzLCBzdWJtaXRfcXVldWVzKTtcbiYjNDM7XHRXUklURV9PTkNFKGRldi1cdTAwM2Vwb2xsX3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xuIFxuIFx0c2V0ID0gZGV2LVx1MDAzZW51bGxiLVx1MDAzZXRhZ19zZXQ7XG4gXHRucl9od19xdWV1ZXMgPSBzdWJtaXRfcXVldWVzICYjNDM7IHBvbGxfcXVldWVzO1xuQEAgLTQxMSw4ICYjNDM7NDE0LDggQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcbiBcdGlmIChyZXQpIHtcbiBcdFx0Lyogb24gZXJyb3IsIHJldmVydCB0aGUgcXVldWUgbnVtYmVycyAqL1xuLVx0XHRkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcyA9IGRldi1cdTAwM2VwcmV2X3N1Ym1pdF9xdWV1ZXM7XG4tXHRcdGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyA9IGRldi1cdTAwM2VwcmV2X3BvbGxfcXVldWVzO1xuJiM0MztcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgZGV2LVx1MDAzZXByZXZfc3VibWl0X3F1ZXVlcyk7XG4mIzQzO1x0XHRXUklURV9PTkNFKGRldi1cdTAwM2Vwb2xsX3F1ZXVlcywgZGV2LVx1MDAzZXByZXZfcG9sbF9xdWV1ZXMpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIHJldDtcbkBAIC00MjEsMjUgJiM0Mzs0MjQsMTMgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgc3VibWl0X3F1ZXVlcylcbiB7XG4tXHRpbnQgcmV0O1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbi1cdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXHUwMDNlcG9sbF9xdWV1ZXMpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuLVxuLVx0cmV0dXJuIHJldDtcbiYjNDM7XHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgdW5zaWduZWQgaW50IHBvbGxfcXVldWVzKVxuIHtcbi1cdGludCByZXQ7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuLVx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4tXG4tXHRyZXR1cm4gcmV0O1xuJiM0MztcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcbiB9XG4gXG4gTlVMTEJfREVWSUNFX0FUVFIoc2l6ZSwgdWxvbmcsIE5VTEwpO1xuQEAgLTQ3OCw3ICYjNDM7NDY5LDggQEAgTlVMTEJfREVWSUNFX0FUVFIoYmFkYmxvY2tzX3BhcnRpYWxfaW8sIGJvb2wsIE5VTEwpO1xuIFxuIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcbiB7XG4tXHRyZXR1cm4gbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zaG93KHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2Vwb3dlciwgcGFnZSk7XG4mIzQzO1x0cmV0dXJuIG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyhcbiYjNDM7XHRcdFx0UkVBRF9PTkNFKHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2Vwb3dlciksIHBhZ2UpO1xuIH1cbiBcbiBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuQEAgLTUwNSwxMSAmIzQzOzQ5NywxMSBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuIFx0XHR9XG4gXG4gXHRcdHNldF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncyk7XG4tXHRcdGRldi1cdTAwM2Vwb3dlciA9IG5ld3A7XG4mIzQzO1x0XHRXUklURV9PTkNFKGRldi1cdTAwM2Vwb3dlciwgbmV3cCk7XG4gXHRcdHJldCA9IGNvdW50O1xuIFx0fSBlbHNlIGlmIChkZXYtXHUwMDNlcG93ZXIgXHUwMDI2XHUwMDI2ICFuZXdwKSB7XG4gXHRcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTlVMTEJfREVWX0ZMX1VQLCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSB7XG4tXHRcdFx0ZGV2LVx1MDAzZXBvd2VyID0gbmV3cDtcbiYjNDM7XHRcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlcG93ZXIsIG5ld3ApO1xuIFx0XHRcdG51bGxfZGVsX2RldihkZXYtXHUwMDNlbnVsbGIpO1xuIFx0XHR9XG4gXHRcdGNsZWFyX2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKTtcbkBAIC0xNzkyLDEzICYjNDM7MTc4NCwxMyBAQCBzdGF0aWMgdm9pZCBudWxsX2NvbmZpZ19kaXNjYXJkKHN0cnVjdCBudWxsYiAqbnVsbGIsIHN0cnVjdCBxdWV1ZV9saW1pdHMgKmxpbSlcbiBcdFx0cmV0dXJuO1xuIFxuIFx0aWYgKCFudWxsYi1cdTAwM2VkZXYtXHUwMDNlbWVtb3J5X2JhY2tlZCkge1xuLVx0XHRudWxsYi1cdTAwM2VkZXYtXHUwMDNlZGlzY2FyZCA9IGZhbHNlO1xuJiM0MztcdFx0V1JJVEVfT05DRShudWxsYi1cdTAwM2VkZXYtXHUwMDNlZGlzY2FyZCwgZmFsc2UpO1xuIFx0XHRwcl9pbmZvKFwmIzM0O2Rpc2NhcmQgb3B0aW9uIGlzIGlnbm9yZWQgd2l0aG91dCBtZW1vcnkgYmFja2luZ1xcblwmIzM0Oyk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbiBcdGlmIChudWxsYi1cdTAwM2VkZXYtXHUwMDNlem9uZWQpIHtcbi1cdFx0bnVsbGItXHUwMDNlZGV2LVx1MDAzZWRpc2NhcmQgPSBmYWxzZTtcbiYjNDM7XHRcdFdSSVRFX09OQ0UobnVsbGItXHUwMDNlZGV2LVx1MDAzZWRpc2NhcmQsIGZhbHNlKTtcbiBcdFx0cHJfaW5mbyhcJiMzNDtkaXNjYXJkIG9wdGlvbiBpcyBpZ25vcmVkIGluIHpvbmVkIG1vZGVcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm47XG4gXHR9XG5AQCAtMTg5MCwzMSAmIzQzOzE4ODIsMzEgQEAgc3RhdGljIGludCBudWxsX3ZhbGlkYXRlX2NvbmYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuIFx0fVxuIFx0aWYgKGRldi1cdTAwM2VxdWV1ZV9tb2RlID09IE5VTExfUV9CSU8pIHtcbiBcdFx0cHJfZXJyKFwmIzM0O0JJTy1iYXNlZCBJTyBwYXRoIGlzIG5vIGxvbmdlciBhdmFpbGFibGUsIHVzaW5nIGJsay1tcSBpbnN0ZWFkLlxcblwmIzM0Oyk7XG4tXHRcdGRldi1cdTAwM2VxdWV1ZV9tb2RlID0gTlVMTF9RX01RO1xuJiM0MztcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlcXVldWVfbW9kZSwgTlVMTF9RX01RKTtcbiBcdH1cbiBcbiBcdGlmIChkZXYtXHUwMDNldXNlX3Blcl9ub2RlX2hjdHgpIHtcbiBcdFx0aWYgKGRldi1cdTAwM2VzdWJtaXRfcXVldWVzICE9IG5yX29ubGluZV9ub2Rlcylcbi1cdFx0XHRkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcyA9IG5yX29ubGluZV9ub2RlcztcbiYjNDM7XHRcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgbnJfb25saW5lX25vZGVzKTtcbiBcdH0gZWxzZSBpZiAoZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMgXHUwMDNlIG5yX2NwdV9pZHMpXG4tXHRcdGRldi1cdTAwM2VzdWJtaXRfcXVldWVzID0gbnJfY3B1X2lkcztcbiYjNDM7XHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIG5yX2NwdV9pZHMpO1xuIFx0ZWxzZSBpZiAoZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMgPT0gMClcbi1cdFx0ZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMgPSAxO1xuJiM0MztcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgMSk7XG4gXHRkZXYtXHUwMDNlcHJldl9zdWJtaXRfcXVldWVzID0gZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXM7XG4gXG4gXHRpZiAoZGV2LVx1MDAzZXBvbGxfcXVldWVzIFx1MDAzZSBnX3BvbGxfcXVldWVzKVxuLVx0XHRkZXYtXHUwMDNlcG9sbF9xdWV1ZXMgPSBnX3BvbGxfcXVldWVzO1xuJiM0MztcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlcG9sbF9xdWV1ZXMsIGdfcG9sbF9xdWV1ZXMpO1xuIFx0ZGV2LVx1MDAzZXByZXZfcG9sbF9xdWV1ZXMgPSBkZXYtXHUwMDNlcG9sbF9xdWV1ZXM7XG4tXHRkZXYtXHUwMDNlaXJxbW9kZSA9IG1pbl90KHVuc2lnbmVkIGludCwgZGV2LVx1MDAzZWlycW1vZGUsIE5VTExfSVJRX1RJTUVSKTtcbiYjNDM7XHRXUklURV9PTkNFKGRldi1cdTAwM2VpcnFtb2RlLCBtaW5fdCh1bnNpZ25lZCBpbnQsIGRldi1cdTAwM2VpcnFtb2RlLCBOVUxMX0lSUV9USU1FUikpO1xuIFxuIFx0LyogRG8gbWVtb3J5IGFsbG9jYXRpb24sIHNvIHNldCBibG9ja2luZyAqL1xuIFx0aWYgKGRldi1cdTAwM2VtZW1vcnlfYmFja2VkKVxuLVx0XHRkZXYtXHUwMDNlYmxvY2tpbmcgPSB0cnVlO1xuJiM0MztcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlYmxvY2tpbmcsIHRydWUpO1xuIFx0ZWxzZSAvKiBjYWNoZSBpcyBtZWFuaW5nbGVzcyAqL1xuLVx0XHRkZXYtXHUwMDNlY2FjaGVfc2l6ZSA9IDA7XG4tXHRkZXYtXHUwMDNlY2FjaGVfc2l6ZSA9IG1pbl90KHVuc2lnbmVkIGxvbmcsIFVMT05HX01BWCAvIDEwMjQgLyAxMDI0LFxuLVx0XHRcdFx0XHRcdGRldi1cdTAwM2VjYWNoZV9zaXplKTtcbi1cdGRldi1cdTAwM2VtYnBzID0gbWluX3QodW5zaWduZWQgaW50LCAxMDI0ICogNDAsIGRldi1cdTAwM2VtYnBzKTtcbiYjNDM7XHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZWNhY2hlX3NpemUsIDApO1xuJiM0MztcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZWNhY2hlX3NpemUsIG1pbl90KHVuc2lnbmVkIGxvbmcsIFVMT05HX01BWCAvIDEwMjQgLyAxMDI0LFxuJiM0MztcdFx0XHRcdFx0ICBkZXYtXHUwMDNlY2FjaGVfc2l6ZSkpO1xuJiM0MztcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZW1icHMsIG1pbl90KHVuc2lnbmVkIGludCwgMTAyNCAqIDQwLCBkZXYtXHUwMDNlbWJwcykpO1xuIFxuIFx0aWYgKGRldi1cdTAwM2V6b25lZCBcdTAwMjZcdTAwMjZcbiBcdCAgICAoIWRldi1cdTAwM2V6b25lX3NpemUgfHwgIWlzX3Bvd2VyX29mXzIoZGV2LVx1MDAzZXpvbmVfc2l6ZSkpKSB7XG5AQCAtMjAyNCw3ICYjNDM7MjAxNiw3IEBAIHN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbiBcdFx0Z290byBvdXRfY2xlYW51cF9kaXNrO1xuIFxuIFx0bnVsbGItXHUwMDNlaW5kZXggPSBydjtcbi1cdGRldi1cdTAwM2VpbmRleCA9IHJ2O1xuJiM0MztcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZWluZGV4LCBydik7XG4gXG4gXHRpZiAoY29uZmlnX2l0ZW1fbmFtZShcdTAwMjZkZXYtXHUwMDNlZ3JvdXAuY2dfaXRlbSkpIHtcbiBcdFx0LyogVXNlIGNvbmZpZ2ZzIGRpciBuYW1lIGFzIHRoZSBkZXZpY2UgbmFtZSAqL1xuQEAgLTIxNjIsMTcgJiM0MzsyMTU0LDkgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRjb25maWdfZ3JvdXBfaW5pdChcdTAwMjZudWxsYl9zdWJzeXMuc3VfZ3JvdXApO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZudWxsYl9zdWJzeXMuc3VfbXV0ZXgpO1xuIFxuLVx0cmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNm51bGxiX3N1YnN5cyk7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0bXV0ZXhfaW5pdChcdTAwMjZsb2NrKTtcbi1cbiBcdG51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgXCYjMzQ7bnVsbGJcJiMzNDspO1xuLVx0aWYgKG51bGxfbWFqb3IgXHUwMDNjIDApIHtcbi1cdFx0cmV0ID0gbnVsbF9tYWpvcjtcbi1cdFx0Z290byBlcnJfY29uZjtcbi1cdH1cbiYjNDM7XHRpZiAobnVsbF9tYWpvciBcdTAwM2MgMClcbiYjNDM7XHRcdHJldHVybiBudWxsX21ham9yO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfZGV2aWNlczsgaSYjNDM7JiM0MzspIHtcbiBcdFx0cmV0ID0gbnVsbF9jcmVhdGVfZGV2KCk7XG5AQCAtMjE4MCw2ICYjNDM7MjE2NCwxMCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbiBcdFx0XHRnb3RvIGVycl9kZXY7XG4gXHR9XG4gXG4mIzQzO1x0cmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNm51bGxiX3N1YnN5cyk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdGdvdG8gZXJyX2RldjtcbiYjNDM7XG4gXHRwcl9pbmZvKFwmIzM0O21vZHVsZSBsb2FkZWRcXG5cJiMzNDspO1xuIFx0cmV0dXJuIDA7XG4gXG5AQCAtMjE4OSw4ICYjNDM7MjE3Nyw4IEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxuIFx0XHRudWxsX2Rlc3Ryb3lfZGV2KG51bGxiKTtcbiBcdH1cbiBcdHVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsIFwmIzM0O251bGxiXCYjMzQ7KTtcbi1lcnJfY29uZjpcbi1cdGNvbmZpZ2ZzX3VucmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNm51bGxiX3N1YnN5cyk7XG4mIzQzO1x0aWYgKHRhZ19zZXQub3BzKVxuJiM0MztcdFx0YmxrX21xX2ZyZWVfdGFnX3NldChcdTAwMjZ0YWdfc2V0KTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTIyMDAsOCAmIzQzOzIxODgsNiBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpXG4gXG4gXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuIFxuLVx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCYjMzQ7bnVsbGJcJiMzNDspO1xuLVxuIFx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbiBcdHdoaWxlICghbGlzdF9lbXB0eShcdTAwMjZudWxsYl9saXN0KSkge1xuIFx0XHRudWxsYiA9IGxpc3RfZW50cnkobnVsbGJfbGlzdC5uZXh0LCBzdHJ1Y3QgbnVsbGIsIGxpc3QpO1xuQEAgLTIyMDksNiAmIzQzOzIxOTUsOCBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpXG4gXHR9XG4gXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4gXG4mIzQzO1x0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCYjMzQ7bnVsbGJcJiMzNDspO1xuJiM0MztcbiBcdGlmICh0YWdfc2V0Lm9wcylcbiBcdFx0YmxrX21xX2ZyZWVfdGFnX3NldChcdTAwMjZ0YWdfc2V0KTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmNcbmluZGV4IDM4NGJkY2U2YTliN2YzLi43NTYxM2VhZjNlYTllZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jXG5AQCAtNjYsNyAmIzQzOzY2LDcgQEAgaW50IG51bGxfaW5pdF96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0fVxuIFxuIFx0aWYgKCFkZXYtXHUwMDNlem9uZV9jYXBhY2l0eSlcbi1cdFx0ZGV2LVx1MDAzZXpvbmVfY2FwYWNpdHkgPSBkZXYtXHUwMDNlem9uZV9zaXplO1xuJiM0MztcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlem9uZV9jYXBhY2l0eSwgZGV2LVx1MDAzZXpvbmVfc2l6ZSk7XG4gXG4gXHRpZiAoZGV2LVx1MDAzZXpvbmVfY2FwYWNpdHkgXHUwMDNlIGRldi1cdTAwM2V6b25lX3NpemUpIHtcbiBcdFx0cHJfZXJyKFwmIzM0O3pvbmUgY2FwYWNpdHkgKCVsdSBNQikgbGFyZ2VyIHRoYW4gem9uZSBzaXplICglbHUgTUIpXFxuXCYjMzQ7LFxuQEAgLTk5LDI5ICYjNDM7OTksMjkgQEAgaW50IG51bGxfaW5pdF96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZGV2LVx1MDAzZXpvbmVfcmVzX2xvY2spO1xuIFxuIFx0aWYgKGRldi1cdTAwM2V6b25lX25yX2NvbnYgXHUwMDNlPSBkZXYtXHUwMDNlbnJfem9uZXMpIHtcbi1cdFx0ZGV2LVx1MDAzZXpvbmVfbnJfY29udiA9IGRldi1cdTAwM2Vucl96b25lcyAtIDE7XG4mIzQzO1x0XHRXUklURV9PTkNFKGRldi1cdTAwM2V6b25lX25yX2NvbnYsIGRldi1cdTAwM2Vucl96b25lcyAtIDEpO1xuIFx0XHRwcl9pbmZvKFwmIzM0O2NoYW5nZWQgdGhlIG51bWJlciBvZiBjb252ZW50aW9uYWwgem9uZXMgdG8gJXVcJiMzNDssXG4gXHRcdFx0ZGV2LVx1MDAzZXpvbmVfbnJfY29udik7XG4gXHR9XG4gXG4tXHRkZXYtXHUwMDNlem9uZV9hcHBlbmRfbWF4X3NlY3RvcnMgPVxuLVx0XHRtaW4oQUxJR05fRE9XTihkZXYtXHUwMDNlem9uZV9hcHBlbmRfbWF4X3NlY3RvcnMsXG4tXHRcdFx0ICAgICAgIGRldi1cdTAwM2VibG9ja3NpemUgXHUwMDNlXHUwMDNlIFNFQ1RPUl9TSElGVCksXG4tXHRcdCAgICB6b25lX2NhcGFjaXR5X3NlY3RzKTtcbiYjNDM7XHRXUklURV9PTkNFKGRldi1cdTAwM2V6b25lX2FwcGVuZF9tYXhfc2VjdG9ycyxcbiYjNDM7XHRcdCAgIG1pbihBTElHTl9ET1dOKGRldi1cdTAwM2V6b25lX2FwcGVuZF9tYXhfc2VjdG9ycyxcbiYjNDM7XHRcdFx0XHQgIGRldi1cdTAwM2VibG9ja3NpemUgXHUwMDNlXHUwMDNlIFNFQ1RPUl9TSElGVCksXG4mIzQzO1x0XHQgICAgICAgem9uZV9jYXBhY2l0eV9zZWN0cykpO1xuIFxuIFx0LyogTWF4IGFjdGl2ZSB6b25lcyBoYXMgdG8gYmUgXHUwMDNjIG5iciBvZiBzZXEgem9uZXMgaW4gb3JkZXIgdG8gYmUgZW5mb3JjZWFibGUgKi9cbiBcdGlmIChkZXYtXHUwMDNlem9uZV9tYXhfYWN0aXZlIFx1MDAzZT0gZGV2LVx1MDAzZW5yX3pvbmVzIC0gZGV2LVx1MDAzZXpvbmVfbnJfY29udikge1xuLVx0XHRkZXYtXHUwMDNlem9uZV9tYXhfYWN0aXZlID0gMDtcbiYjNDM7XHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZXpvbmVfbWF4X2FjdGl2ZSwgMCk7XG4gXHRcdHByX2luZm8oXCYjMzQ7em9uZV9tYXhfYWN0aXZlIGxpbWl0IGRpc2FibGVkLCBsaW1pdCBcdTAwM2U9IHpvbmUgY291bnRcXG5cJiMzNDspO1xuIFx0fVxuIFxuIFx0LyogTWF4IG9wZW4gem9uZXMgaGFzIHRvIGJlIFx1MDAzYz0gbWF4IGFjdGl2ZSB6b25lcyAqL1xuIFx0aWYgKGRldi1cdTAwM2V6b25lX21heF9hY3RpdmUgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2V6b25lX21heF9vcGVuIFx1MDAzZSBkZXYtXHUwMDNlem9uZV9tYXhfYWN0aXZlKSB7XG4tXHRcdGRldi1cdTAwM2V6b25lX21heF9vcGVuID0gZGV2LVx1MDAzZXpvbmVfbWF4X2FjdGl2ZTtcbiYjNDM7XHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZXpvbmVfbWF4X29wZW4sIGRldi1cdTAwM2V6b25lX21heF9hY3RpdmUpO1xuIFx0XHRwcl9pbmZvKFwmIzM0O2NoYW5nZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIG9wZW4gem9uZXMgdG8gJXVcXG5cJiMzNDssXG4gXHRcdFx0ZGV2LVx1MDAzZXpvbmVfbWF4X29wZW4pO1xuIFx0fSBlbHNlIGlmIChkZXYtXHUwMDNlem9uZV9tYXhfb3BlbiBcdTAwM2U9IGRldi1cdTAwM2Vucl96b25lcyAtIGRldi1cdTAwM2V6b25lX25yX2NvbnYpIHtcbi1cdFx0ZGV2LVx1MDAzZXpvbmVfbWF4X29wZW4gPSAwO1xuJiM0MztcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlem9uZV9tYXhfb3BlbiwgMCk7XG4gXHRcdHByX2luZm8oXCYjMzQ7em9uZV9tYXhfb3BlbiBsaW1pdCBkaXNhYmxlZCwgbGltaXQgXHUwMDNlPSB6b25lIGNvdW50XFxuXCYjMzQ7KTtcbiBcdH1cbiBcdGRldi1cdTAwM2VuZWVkX3pvbmVfcmVzX21nbXQgPSBkZXYtXHUwMDNlem9uZV9tYXhfYWN0aXZlIHx8IGRldi1cdTAwM2V6b25lX21heF9vcGVuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE5OjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9aT05FRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2FwcGx5X3BvbGxfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxfdmFsaWRhdGVfY29uZiYjMzQ7LAogICAgJiMzNDtudWxsX2FkZF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbF9pbml0X3pvbmVkX2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBkYXRhIHJhY2VzIGFuZCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgaW4gdGhlIG51bGxfYmxrIGRyaXZlci4gVGhlIGRyaXZlciBpcyBzb2Z0d2FyZS1lbXVsYXRlZCBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG1vZGlmaWVkIGNvbmZpZ2ZzIGF0dHJpYnV0ZSBzdG9yZSBmdW5jdGlvbnMgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbiBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjRkZjNkMmU5YjJmM2MzNTg0OWY5MTg0NDkzMDg2OWUyYzZlYzg3ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDggMTk6MjM6MjUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jCmluZGV4IGY4YzBmZDU3ZTA0MWE4Li5mZDNjOTkzYTY3YjJiZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKQEAgLTY2LDcgJiM0Mzs2Niw3IEBAIHN0cnVjdCBudWxsYl9wYWdlIHsKICNkZWZpbmUgTlVMTEJfUEFHRV9GUkVFIChNQVBfU1ogLSAyKQogCiBzdGF0aWMgTElTVF9IRUFEKG51bGxiX2xpc3QpOwotc3RhdGljIHN0cnVjdCBtdXRleCBsb2NrOwomIzQzO3N0YXRpYyBERUZJTkVfTVVURVgobG9jayk7CiBzdGF0aWMgaW50IG51bGxfbWFqb3I7CiBzdGF0aWMgREVGSU5FX0lEQShudWxsYl9pbmRleGVzKTsKIHN0YXRpYyBzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgdGFnX3NldDsKQEAgLTM0Niw3ICYjNDM7MzQ2LDcgQEAgc3RhdGljIHNzaXplX3QJCQkJCQkJCVwKIG51bGxiX2RldmljZV8jI05BTUUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSkJXAogewkJCQkJCQkJCVwKIAlyZXR1cm4gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc2hvdygJCQkJXAotCQkJCXRvX251bGxiX2RldmljZShpdGVtKS0mZ3Q7TkFNRSwgcGFnZSk7CVwKJiM0MzsJCQlSRUFEX09OQ0UodG9fbnVsbGJfZGV2aWNlKGl0ZW0pLSZndDtOQU1FKSwgcGFnZSk7CVwKIH0JCQkJCQkJCQlcCiBzdGF0aWMgc3NpemVfdAkJCQkJCQkJXAogbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSwJXApAQCAtMzYwLDEzICYjNDM7MzYwLDE2IEBAIG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnBhZ2UsCVwKIAlyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zdG9yZSgmYW1wO25ld192YWx1ZSwgcGFnZSwgY291bnQpO1wKIAlpZiAocmV0ICZsdDsgMCkJCQkJCQkJXAogCQlyZXR1cm4gcmV0OwkJCQkJCVwKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2xvY2spOwkJCQkJCVwKIAlpZiAoYXBwbHlfZm4pCQkJCQkJCVwKIAkJcmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpOwkJCQlcCiAJZWxzZSBpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsICZhbXA7ZGV2LSZndDtmbGFncykpIAlcCiAJCXJldCA9IC1FQlVTWTsJCQkJCQlcCiYjNDM7CWlmICghcmV0KQkJCQkJCQlcCiYjNDM7CQlXUklURV9PTkNFKGRldi0mZ3Q7TkFNRSwgbmV3X3ZhbHVlKTsJCQlcCiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2xvY2spOwkJCQkJCVwKIAlpZiAocmV0ICZsdDsgMCkJCQkJCQkJXAogCQlyZXR1cm4gcmV0OwkJCQkJCVwKLQlkZXYtJmd0O05BTUUgPSBuZXdfdmFsdWU7CQkJCQkJXAogCXJldHVybiBjb3VudDsJCQkJCQkJXAogfQkJCQkJCQkJCVwKIENPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgTkFNRSk7CkBAIC00MDEsOCAmIzQzOzQwNCw4IEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsCiAJICovCiAJZGV2LSZndDtwcmV2X3N1Ym1pdF9xdWV1ZXMgPSBkZXYtJmd0O3N1Ym1pdF9xdWV1ZXM7CiAJZGV2LSZndDtwcmV2X3BvbGxfcXVldWVzID0gZGV2LSZndDtwb2xsX3F1ZXVlczsKLQlkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMgPSBzdWJtaXRfcXVldWVzOwotCWRldi0mZ3Q7cG9sbF9xdWV1ZXMgPSBwb2xsX3F1ZXVlczsKJiM0MzsJV1JJVEVfT05DRShkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMsIHN1Ym1pdF9xdWV1ZXMpOwomIzQzOwlXUklURV9PTkNFKGRldi0mZ3Q7cG9sbF9xdWV1ZXMsIHBvbGxfcXVldWVzKTsKIAogCXNldCA9IGRldi0mZ3Q7bnVsbGItJmd0O3RhZ19zZXQ7CiAJbnJfaHdfcXVldWVzID0gc3VibWl0X3F1ZXVlcyAmIzQzOyBwb2xsX3F1ZXVlczsKQEAgLTQxMSw4ICYjNDM7NDE0LDggQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwKIAogCWlmIChyZXQpIHsKIAkJLyogb24gZXJyb3IsIHJldmVydCB0aGUgcXVldWUgbnVtYmVycyAqLwotCQlkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMgPSBkZXYtJmd0O3ByZXZfc3VibWl0X3F1ZXVlczsKLQkJZGV2LSZndDtwb2xsX3F1ZXVlcyA9IGRldi0mZ3Q7cHJldl9wb2xsX3F1ZXVlczsKJiM0MzsJCVdSSVRFX09OQ0UoZGV2LSZndDtzdWJtaXRfcXVldWVzLCBkZXYtJmd0O3ByZXZfc3VibWl0X3F1ZXVlcyk7CiYjNDM7CQlXUklURV9PTkNFKGRldi0mZ3Q7cG9sbF9xdWV1ZXMsIGRldi0mZ3Q7cHJldl9wb2xsX3F1ZXVlcyk7CiAJfQogCiAJcmV0dXJuIHJldDsKQEAgLTQyMSwyNSAmIzQzOzQyNCwxMyBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LAogc3RhdGljIGludCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwKIAkJCQkgICAgIHVuc2lnbmVkIGludCBzdWJtaXRfcXVldWVzKQogewotCWludCByZXQ7Ci0KLQltdXRleF9sb2NrKCZhbXA7bG9jayk7Ci0JcmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi0mZ3Q7cG9sbF9xdWV1ZXMpOwotCW11dGV4X3VubG9jaygmYW1wO2xvY2spOwotCi0JcmV0dXJuIHJldDsKJiM0MzsJcmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtJmd0O3BvbGxfcXVldWVzKTsKIH0KIAogc3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsCiAJCQkJICAgdW5zaWduZWQgaW50IHBvbGxfcXVldWVzKQogewotCWludCByZXQ7Ci0KLQltdXRleF9sb2NrKCZhbXA7bG9jayk7Ci0JcmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi0mZ3Q7c3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpOwotCW11dGV4X3VubG9jaygmYW1wO2xvY2spOwotCi0JcmV0dXJuIHJldDsKJiM0MzsJcmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTsKIH0KIAogTlVMTEJfREVWSUNFX0FUVFIoc2l6ZSwgdWxvbmcsIE5VTEwpOwpAQCAtNDc4LDcgJiM0Mzs0NjksOCBAQCBOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7CiAKIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSkKIHsKLQlyZXR1cm4gbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zaG93KHRvX251bGxiX2RldmljZShpdGVtKS0mZ3Q7cG93ZXIsIHBhZ2UpOwomIzQzOwlyZXR1cm4gbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zaG93KAomIzQzOwkJCVJFQURfT05DRSh0b19udWxsYl9kZXZpY2UoaXRlbSktJmd0O3Bvd2VyKSwgcGFnZSk7CiB9CiAKIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCkBAIC01MDUsMTEgJiM0Mzs0OTcsMTEgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwKIAkJfQogCiAJCXNldF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsICZhbXA7ZGV2LSZndDtmbGFncyk7Ci0JCWRldi0mZ3Q7cG93ZXIgPSBuZXdwOwomIzQzOwkJV1JJVEVfT05DRShkZXYtJmd0O3Bvd2VyLCBuZXdwKTsKIAkJcmV0ID0gY291bnQ7CiAJfSBlbHNlIGlmIChkZXYtJmd0O3Bvd2VyICZhbXA7JmFtcDsgIW5ld3ApIHsKIAkJaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOVUxMQl9ERVZfRkxfVVAsICZhbXA7ZGV2LSZndDtmbGFncykpIHsKLQkJCWRldi0mZ3Q7cG93ZXIgPSBuZXdwOwomIzQzOwkJCVdSSVRFX09OQ0UoZGV2LSZndDtwb3dlciwgbmV3cCk7CiAJCQludWxsX2RlbF9kZXYoZGV2LSZndDtudWxsYik7CiAJCX0KIAkJY2xlYXJfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCAmYW1wO2Rldi0mZ3Q7ZmxhZ3MpOwpAQCAtMTc5MiwxMyAmIzQzOzE3ODQsMTMgQEAgc3RhdGljIHZvaWQgbnVsbF9jb25maWdfZGlzY2FyZChzdHJ1Y3QgbnVsbGIgKm51bGxiLCBzdHJ1Y3QgcXVldWVfbGltaXRzICpsaW0pCiAJCXJldHVybjsKIAogCWlmICghbnVsbGItJmd0O2Rldi0mZ3Q7bWVtb3J5X2JhY2tlZCkgewotCQludWxsYi0mZ3Q7ZGV2LSZndDtkaXNjYXJkID0gZmFsc2U7CiYjNDM7CQlXUklURV9PTkNFKG51bGxiLSZndDtkZXYtJmd0O2Rpc2NhcmQsIGZhbHNlKTsKIAkJcHJfaW5mbygmIzM0O2Rpc2NhcmQgb3B0aW9uIGlzIGlnbm9yZWQgd2l0aG91dCBtZW1vcnkgYmFja2luZ1xuJiMzNDspOwogCQlyZXR1cm47CiAJfQogCiAJaWYgKG51bGxiLSZndDtkZXYtJmd0O3pvbmVkKSB7Ci0JCW51bGxiLSZndDtkZXYtJmd0O2Rpc2NhcmQgPSBmYWxzZTsKJiM0MzsJCVdSSVRFX09OQ0UobnVsbGItJmd0O2Rldi0mZ3Q7ZGlzY2FyZCwgZmFsc2UpOwogCQlwcl9pbmZvKCYjMzQ7ZGlzY2FyZCBvcHRpb24gaXMgaWdub3JlZCBpbiB6b25lZCBtb2RlXG4mIzM0Oyk7CiAJCXJldHVybjsKIAl9CkBAIC0xODkwLDMxICYjNDM7MTg4MiwzMSBAQCBzdGF0aWMgaW50IG51bGxfdmFsaWRhdGVfY29uZihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpCiAJfQogCWlmIChkZXYtJmd0O3F1ZXVlX21vZGUgPT0gTlVMTF9RX0JJTykgewogCQlwcl9lcnIoJiMzNDtCSU8tYmFzZWQgSU8gcGF0aCBpcyBubyBsb25nZXIgYXZhaWxhYmxlLCB1c2luZyBibGstbXEgaW5zdGVhZC5cbiYjMzQ7KTsKLQkJZGV2LSZndDtxdWV1ZV9tb2RlID0gTlVMTF9RX01ROwomIzQzOwkJV1JJVEVfT05DRShkZXYtJmd0O3F1ZXVlX21vZGUsIE5VTExfUV9NUSk7CiAJfQogCiAJaWYgKGRldi0mZ3Q7dXNlX3Blcl9ub2RlX2hjdHgpIHsKIAkJaWYgKGRldi0mZ3Q7c3VibWl0X3F1ZXVlcyAhPSBucl9vbmxpbmVfbm9kZXMpCi0JCQlkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMgPSBucl9vbmxpbmVfbm9kZXM7CiYjNDM7CQkJV1JJVEVfT05DRShkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMsIG5yX29ubGluZV9ub2Rlcyk7CiAJfSBlbHNlIGlmIChkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMgJmd0OyBucl9jcHVfaWRzKQotCQlkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMgPSBucl9jcHVfaWRzOwomIzQzOwkJV1JJVEVfT05DRShkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMsIG5yX2NwdV9pZHMpOwogCWVsc2UgaWYgKGRldi0mZ3Q7c3VibWl0X3F1ZXVlcyA9PSAwKQotCQlkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMgPSAxOwomIzQzOwkJV1JJVEVfT05DRShkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMsIDEpOwogCWRldi0mZ3Q7cHJldl9zdWJtaXRfcXVldWVzID0gZGV2LSZndDtzdWJtaXRfcXVldWVzOwogCiAJaWYgKGRldi0mZ3Q7cG9sbF9xdWV1ZXMgJmd0OyBnX3BvbGxfcXVldWVzKQotCQlkZXYtJmd0O3BvbGxfcXVldWVzID0gZ19wb2xsX3F1ZXVlczsKJiM0MzsJCVdSSVRFX09OQ0UoZGV2LSZndDtwb2xsX3F1ZXVlcywgZ19wb2xsX3F1ZXVlcyk7CiAJZGV2LSZndDtwcmV2X3BvbGxfcXVldWVzID0gZGV2LSZndDtwb2xsX3F1ZXVlczsKLQlkZXYtJmd0O2lycW1vZGUgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGRldi0mZ3Q7aXJxbW9kZSwgTlVMTF9JUlFfVElNRVIpOwomIzQzOwlXUklURV9PTkNFKGRldi0mZ3Q7aXJxbW9kZSwgbWluX3QodW5zaWduZWQgaW50LCBkZXYtJmd0O2lycW1vZGUsIE5VTExfSVJRX1RJTUVSKSk7CiAKIAkvKiBEbyBtZW1vcnkgYWxsb2NhdGlvbiwgc28gc2V0IGJsb2NraW5nICovCiAJaWYgKGRldi0mZ3Q7bWVtb3J5X2JhY2tlZCkKLQkJZGV2LSZndDtibG9ja2luZyA9IHRydWU7CiYjNDM7CQlXUklURV9PTkNFKGRldi0mZ3Q7YmxvY2tpbmcsIHRydWUpOwogCWVsc2UgLyogY2FjaGUgaXMgbWVhbmluZ2xlc3MgKi8KLQkJZGV2LSZndDtjYWNoZV9zaXplID0gMDsKLQlkZXYtJmd0O2NhY2hlX3NpemUgPSBtaW5fdCh1bnNpZ25lZCBsb25nLCBVTE9OR19NQVggLyAxMDI0IC8gMTAyNCwKLQkJCQkJCWRldi0mZ3Q7Y2FjaGVfc2l6ZSk7Ci0JZGV2LSZndDttYnBzID0gbWluX3QodW5zaWduZWQgaW50LCAxMDI0ICogNDAsIGRldi0mZ3Q7bWJwcyk7CiYjNDM7CQlXUklURV9PTkNFKGRldi0mZ3Q7Y2FjaGVfc2l6ZSwgMCk7CiYjNDM7CVdSSVRFX09OQ0UoZGV2LSZndDtjYWNoZV9zaXplLCBtaW5fdCh1bnNpZ25lZCBsb25nLCBVTE9OR19NQVggLyAxMDI0IC8gMTAyNCwKJiM0MzsJCQkJCSAgZGV2LSZndDtjYWNoZV9zaXplKSk7CiYjNDM7CVdSSVRFX09OQ0UoZGV2LSZndDttYnBzLCBtaW5fdCh1bnNpZ25lZCBpbnQsIDEwMjQgKiA0MCwgZGV2LSZndDttYnBzKSk7CiAKIAlpZiAoZGV2LSZndDt6b25lZCAmYW1wOyZhbXA7CiAJICAgICghZGV2LSZndDt6b25lX3NpemUgfHwgIWlzX3Bvd2VyX29mXzIoZGV2LSZndDt6b25lX3NpemUpKSkgewpAQCAtMjAyNCw3ICYjNDM7MjAxNiw3IEBAIHN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldikKIAkJZ290byBvdXRfY2xlYW51cF9kaXNrOwogCiAJbnVsbGItJmd0O2luZGV4ID0gcnY7Ci0JZGV2LSZndDtpbmRleCA9IHJ2OwomIzQzOwlXUklURV9PTkNFKGRldi0mZ3Q7aW5kZXgsIHJ2KTsKIAogCWlmIChjb25maWdfaXRlbV9uYW1lKCZhbXA7ZGV2LSZndDtncm91cC5jZ19pdGVtKSkgewogCQkvKiBVc2UgY29uZmlnZnMgZGlyIG5hbWUgYXMgdGhlIGRldmljZSBuYW1lICovCkBAIC0yMTYyLDE3ICYjNDM7MjE1NCw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKQogCWNvbmZpZ19ncm91cF9pbml0KCZhbXA7bnVsbGJfc3Vic3lzLnN1X2dyb3VwKTsKIAltdXRleF9pbml0KCZhbXA7bnVsbGJfc3Vic3lzLnN1X211dGV4KTsKIAotCXJldCA9IGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbSgmYW1wO251bGxiX3N1YnN5cyk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCW11dGV4X2luaXQoJmFtcDtsb2NrKTsKLQogCW51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgJiMzNDtudWxsYiYjMzQ7KTsKLQlpZiAobnVsbF9tYWpvciAmbHQ7IDApIHsKLQkJcmV0ID0gbnVsbF9tYWpvcjsKLQkJZ290byBlcnJfY29uZjsKLQl9CiYjNDM7CWlmIChudWxsX21ham9yICZsdDsgMCkKJiM0MzsJCXJldHVybiBudWxsX21ham9yOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IG5yX2RldmljZXM7IGkmIzQzOyYjNDM7KSB7CiAJCXJldCA9IG51bGxfY3JlYXRlX2RldigpOwpAQCAtMjE4MCw2ICYjNDM7MjE2NCwxMCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZCkKIAkJCWdvdG8gZXJyX2RldjsKIAl9CiAKJiM0MzsJcmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKCZhbXA7bnVsbGJfc3Vic3lzKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCWdvdG8gZXJyX2RldjsKJiM0MzsKIAlwcl9pbmZvKCYjMzQ7bW9kdWxlIGxvYWRlZFxuJiMzNDspOwogCXJldHVybiAwOwogCkBAIC0yMTg5LDggJiM0MzsyMTc3LDggQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpCiAJCW51bGxfZGVzdHJveV9kZXYobnVsbGIpOwogCX0KIAl1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCAmIzM0O251bGxiJiMzNDspOwotZXJyX2NvbmY6Ci0JY29uZmlnZnNfdW5yZWdpc3Rlcl9zdWJzeXN0ZW0oJmFtcDtudWxsYl9zdWJzeXMpOwomIzQzOwlpZiAodGFnX3NldC5vcHMpCiYjNDM7CQlibGtfbXFfZnJlZV90YWdfc2V0KCZhbXA7dGFnX3NldCk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMjIwMCw4ICYjNDM7MjE4OCw2IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZCkKIAogCWNvbmZpZ2ZzX3VucmVnaXN0ZXJfc3Vic3lzdGVtKCZhbXA7bnVsbGJfc3Vic3lzKTsKIAotCXVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsICYjMzQ7bnVsbGImIzM0Oyk7Ci0KIAltdXRleF9sb2NrKCZhbXA7bG9jayk7CiAJd2hpbGUgKCFsaXN0X2VtcHR5KCZhbXA7bnVsbGJfbGlzdCkpIHsKIAkJbnVsbGIgPSBsaXN0X2VudHJ5KG51bGxiX2xpc3QubmV4dCwgc3RydWN0IG51bGxiLCBsaXN0KTsKQEAgLTIyMDksNiAmIzQzOzIxOTUsOCBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpCiAJfQogCW11dGV4X3VubG9jaygmYW1wO2xvY2spOwogCiYjNDM7CXVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsICYjMzQ7bnVsbGImIzM0Oyk7CiYjNDM7CiAJaWYgKHRhZ19zZXQub3BzKQogCQlibGtfbXFfZnJlZV90YWdfc2V0KCZhbXA7dGFnX3NldCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYwppbmRleCAzODRiZGNlNmE5YjdmMy4uNzU2MTNlYWYzZWE5ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmMKQEAgLTY2LDcgJiM0Mzs2Niw3IEBAIGludCBudWxsX2luaXRfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwKIAl9CiAKIAlpZiAoIWRldi0mZ3Q7em9uZV9jYXBhY2l0eSkKLQkJZGV2LSZndDt6b25lX2NhcGFjaXR5ID0gZGV2LSZndDt6b25lX3NpemU7CiYjNDM7CQlXUklURV9PTkNFKGRldi0mZ3Q7em9uZV9jYXBhY2l0eSwgZGV2LSZndDt6b25lX3NpemUpOwogCiAJaWYgKGRldi0mZ3Q7em9uZV9jYXBhY2l0eSAmZ3Q7IGRldi0mZ3Q7em9uZV9zaXplKSB7CiAJCXByX2VycigmIzM0O3pvbmUgY2FwYWNpdHkgKCVsdSBNQikgbGFyZ2VyIHRoYW4gem9uZSBzaXplICglbHUgTUIpXG4mIzM0OywKQEAgLTk5LDI5ICYjNDM7OTksMjkgQEAgaW50IG51bGxfaW5pdF96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LAogCXNwaW5fbG9ja19pbml0KCZhbXA7ZGV2LSZndDt6b25lX3Jlc19sb2NrKTsKIAogCWlmIChkZXYtJmd0O3pvbmVfbnJfY29udiAmZ3Q7PSBkZXYtJmd0O25yX3pvbmVzKSB7Ci0JCWRldi0mZ3Q7em9uZV9ucl9jb252ID0gZGV2LSZndDtucl96b25lcyAtIDE7CiYjNDM7CQlXUklURV9PTkNFKGRldi0mZ3Q7em9uZV9ucl9jb252LCBkZXYtJmd0O25yX3pvbmVzIC0gMSk7CiAJCXByX2luZm8oJiMzNDtjaGFuZ2VkIHRoZSBudW1iZXIgb2YgY29udmVudGlvbmFsIHpvbmVzIHRvICV1JiMzNDssCiAJCQlkZXYtJmd0O3pvbmVfbnJfY29udik7CiAJfQogCi0JZGV2LSZndDt6b25lX2FwcGVuZF9tYXhfc2VjdG9ycyA9Ci0JCW1pbihBTElHTl9ET1dOKGRldi0mZ3Q7em9uZV9hcHBlbmRfbWF4X3NlY3RvcnMsCi0JCQkgICAgICAgZGV2LSZndDtibG9ja3NpemUgJmd0OyZndDsgU0VDVE9SX1NISUZUKSwKLQkJICAgIHpvbmVfY2FwYWNpdHlfc2VjdHMpOwomIzQzOwlXUklURV9PTkNFKGRldi0mZ3Q7em9uZV9hcHBlbmRfbWF4X3NlY3RvcnMsCiYjNDM7CQkgICBtaW4oQUxJR05fRE9XTihkZXYtJmd0O3pvbmVfYXBwZW5kX21heF9zZWN0b3JzLAomIzQzOwkJCQkgIGRldi0mZ3Q7YmxvY2tzaXplICZndDsmZ3Q7IFNFQ1RPUl9TSElGVCksCiYjNDM7CQkgICAgICAgem9uZV9jYXBhY2l0eV9zZWN0cykpOwogCiAJLyogTWF4IGFjdGl2ZSB6b25lcyBoYXMgdG8gYmUgJmx0OyBuYnIgb2Ygc2VxIHpvbmVzIGluIG9yZGVyIHRvIGJlIGVuZm9yY2VhYmxlICovCiAJaWYgKGRldi0mZ3Q7em9uZV9tYXhfYWN0aXZlICZndDs9IGRldi0mZ3Q7bnJfem9uZXMgLSBkZXYtJmd0O3pvbmVfbnJfY29udikgewotCQlkZXYtJmd0O3pvbmVfbWF4X2FjdGl2ZSA9IDA7CiYjNDM7CQlXUklURV9PTkNFKGRldi0mZ3Q7em9uZV9tYXhfYWN0aXZlLCAwKTsKIAkJcHJfaW5mbygmIzM0O3pvbmVfbWF4X2FjdGl2ZSBsaW1pdCBkaXNhYmxlZCwgbGltaXQgJmd0Oz0gem9uZSBjb3VudFxuJiMzNDspOwogCX0KIAogCS8qIE1heCBvcGVuIHpvbmVzIGhhcyB0byBiZSAmbHQ7PSBtYXggYWN0aXZlIHpvbmVzICovCiAJaWYgKGRldi0mZ3Q7em9uZV9tYXhfYWN0aXZlICZhbXA7JmFtcDsgZGV2LSZndDt6b25lX21heF9vcGVuICZndDsgZGV2LSZndDt6b25lX21heF9hY3RpdmUpIHsKLQkJZGV2LSZndDt6b25lX21heF9vcGVuID0gZGV2LSZndDt6b25lX21heF9hY3RpdmU7CiYjNDM7CQlXUklURV9PTkNFKGRldi0mZ3Q7em9uZV9tYXhfb3BlbiwgZGV2LSZndDt6b25lX21heF9hY3RpdmUpOwogCQlwcl9pbmZvKCYjMzQ7Y2hhbmdlZCB0aGUgbWF4aW11bSBudW1iZXIgb2Ygb3BlbiB6b25lcyB0byAldVxuJiMzNDssCiAJCQlkZXYtJmd0O3pvbmVfbWF4X29wZW4pOwogCX0gZWxzZSBpZiAoZGV2LSZndDt6b25lX21heF9vcGVuICZndDs9IGRldi0mZ3Q7bnJfem9uZXMgLSBkZXYtJmd0O3pvbmVfbnJfY29udikgewotCQlkZXYtJmd0O3pvbmVfbWF4X29wZW4gPSAwOwomIzQzOwkJV1JJVEVfT05DRShkZXYtJmd0O3pvbmVfbWF4X29wZW4sIDApOwogCQlwcl9pbmZvKCYjMzQ7em9uZV9tYXhfb3BlbiBsaW1pdCBkaXNhYmxlZCwgbGltaXQgJmd0Oz0gem9uZSBjb3VudFxuJiMzNDspOwogCX0KIAlkZXYtJmd0O25lZWRfem9uZV9yZXNfbWdtdCA9IGRldi0mZ3Q7em9uZV9tYXhfYWN0aXZlIHx8IGRldi0mZ3Q7em9uZV9tYXhfb3BlbjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTk6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc2MwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDMyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZlYXNpYmlsaXR5IG9mIHRoZSBOdWxsIEJsb2NrIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jYCBhbmQgYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2VzIHJldm9sdmUgYXJvdW5kIG1lbW9yeSBhY2Nlc3Mgc3luY2hyb25pemF0aW9uIHdpdGggYFdSSVRFX09OQ0VgIGFuZCBgUkVBRF9PTkNFYCwgYW5kIHNvbWUgcmVvcmRlcmluZyBvZiBpbml0aWFsaXphdGlvbiBhbmQgY2xlYW51cCBjYWxscyB3aXRoaW4gdGhlIGRyaXZlciAoc3BlY2lmaWNhbGx5IGBjb25maWdmc19yZWdpc3Rlci91bnJlZ2lzdGVyX3N1YnN5c3RlbWAgYW5kIGByZWdpc3Rlci91bnJlZ2lzdGVyX2Jsa2RldmApLiBUaGVyZSYjMzk7cyBhbHNvIGEgbW9kaWZpY2F0aW9uIGxvY2tpbmcgYXJvdW5kIGFuIGVudGlyZSBgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlYCBmdW5jdGlvbiwgYW5kIGEgYERFRklORV9NVVRFWGAgYWRkZWQuCgpUaGUgcXVlc3Rpb24gbm93IGlzLCBkb2VzIHRoaXMgd2FycmFudCBmdXp6aW5nPyBXZWxsLCB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBgbnVsbF9ibGtgIGRyaXZlci4gQ29uc2lkZXJpbmcgdGhhdCB0aGlzIGRyaXZlciBpcyBhIHZpcnR1YWwgYmxvY2sgZGV2aWNlLCBmcmVxdWVudGx5IHVzZWQgZm9yIHRlc3RpbmcgYW5kIGJlbmNobWFya2luZyB0aGUgYmxvY2sgbGF5ZXIsIGFuZCBpbnN0YW50aWF0ZWQgdGhyb3VnaCBlaXRoZXIgY29uZmlnZnMgb3IgbW9kdWxlIHBhcmFtZXRlcnMsIHRoZXJlIGlzIHNpZ25pZmljYW50IHBvdGVudGlhbC4gVGhlIGNoYW5nZXMgdGhlbXNlbHZlcyBhcmUgZXhwbGljaXRseSBhZGRyZXNzaW5nIGRhdGEgcmFjZXMgYnkgZW1wbG95aW5nIGBSRUFEX09OQ0VgL2BXUklURV9PTkNFYCBhbmQgYW4gZXh0ZW5kZWQgbXV0ZXggbG9jay4gVGhlIG1vZHVsZSBpbml0L2V4aXQgb3JkZXJpbmcgZml4ZXMgc2hvdWxkIGFsc28gZWxpbWluYXRlIGEgc291cmNlIG9mIGlzc3VlcywgYW5kIHRoZXJlZm9yZSB0aGUgY29kZSBpcyBpbmRlZWQgZnVuY3Rpb25hbC4KCkNhbiB3ZSByZWFjaCB0aGlzIGZ1bmN0aW9uYWxpdHkgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gQWJzb2x1dGVseS4gQXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBibG9jayBkZXZpY2UsIGBudWxsX2Jsa2AgaXMgZGVzaWduZWQgdG8gcnVuIGFueXdoZXJlIHRoZSBrZXJuZWwgcnVucywgc28gdGhlcmUgYXJlIG5vIGVudmlyb25tZW50YWwgY29uc3RyYWludHMuCgpUaGUgbmV4dCBzdGVwIGlzIHRvIGNvbmZpcm0gdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24uIFdlIG5lZWQgYENPTkZJR19CTEtfREVWX05VTExfQkxLYCBlbmFibGVkLiBMZXQmIzM5O3MgdmVyaWZ5IHRoYXQgcXVpY2tseSB3aXRoIGBncmVwcGVyYCBhbmQgbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE5OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL01ha2VmaWxlPTM1PW9iai0kKENPTkZJR19CTEtfREVWX1JOQkQpXHQmIzQzOz0gcm5iZC9cbmRyaXZlcnMvYmxvY2svTWFrZWZpbGUtMzYtXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVx0JiM0Mzs9IG51bGxfYmxrL1xuZHJpdmVycy9ibG9jay9NYWtlZmlsZS0zOC1vYmotJChDT05GSUdfQkxLX0RFVl9SVVNUX05VTEwpICYjNDM7PSBybnVsbC9cbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzo2OmNvbmZpZyBCTEtfREVWX05VTExfQkxLXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O051bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctOS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzoxMDpjb25maWcgQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy0xMS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzoxMjpcdGRlcGVuZHMgb24gQkxLX0RFVl9OVUxMX0JMSyBcdTAwMjZcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZT00PWNjZmxhZ3MteVx0XHRcdCYjNDM7PSAtSSQoc3JjKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZS01LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVx0JiM0Mzs9IG51bGxfYmxrLm9cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvTWFrZWZpbGUtNy1udWxsX2Jsay1vYmpzXHRcdFx0Oj0gbWFpbi5vXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMjojaWZkZWYgQ09ORklHX0JMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMy1zdGF0aWMgREVDTEFSRV9GQVVMVF9BVFRSKG51bGxfdGltZW91dF9hdHRyKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz05OD1NT0RVTEVfUEFSTV9ERVNDKGhvbWVfbm9kZSwgXCYjMzQ7SG9tZSBub2RlIGZvciB0aGUgZGV2aWNlXCYjMzQ7KTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTAwOiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEwMS0vKlxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTY0MT1zdGF0aWMgY29uc3Qgc3RydWN0IGNvbmZpZ19pdGVtX3R5cGUgbnVsbGJfZGV2aWNlX3R5cGUgPSB7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjQ2LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NjQ3OiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY0OC1cbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz03Njk9c3RhdGljIHN0cnVjdCBudWxsYl9kZXZpY2UgKm51bGxfYWxsb2NfZGV2KHZvaWQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzc2LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Nzc3OiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc3OC1cdGRldi1cdTAwM2V0aW1lb3V0X2NvbmZpZy5hdHRyID0gbnVsbF90aW1lb3V0X2F0dHI7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTQ3Nj1zdGF0aWMgdm9pZCBudWxsYl9zZXR1cF9id3RpbWVyKHN0cnVjdCBudWxsYiAqbnVsbGIpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQ4NC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE0ODU6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQ4Ni1cbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xODc3PXN0YXRpYyBpbnQgbnVsbF92YWxpZGF0ZV9jb25mKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTE5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTkyMDojaWZkZWYgQ09ORklHX0JMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTIxLXN0YXRpYyBib29sIF9fbnVsbF9zZXR1cF9mYXVsdChzdHJ1Y3QgZmF1bHRfYXR0ciAqYXR0ciwgY2hhciAqc3RyKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE5MzQ9c3RhdGljIGJvb2wgbnVsbF9zZXR1cF9mYXVsdCh2b2lkKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTkzNS17XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxOTM2OiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5MzctXHRpZiAoIV9fbnVsbF9zZXR1cF9mYXVsdChcdTAwMjZudWxsX3RpbWVvdXRfYXR0ciwgZ190aW1lb3V0X3N0cikpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oPTUzPXN0cnVjdCBudWxsYl9kZXZpY2Uge1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC01NS1cdHN0cnVjdCBjb25maWdfZ3JvdXAgZ3JvdXA7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmg6NTY6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTU3LVx0c3RydWN0IGZhdWx0X2NvbmZpZyB0aW1lb3V0X2NvbmZpZztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxOToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NzAzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIE51bGwgQmxvY2sgRGV2aWNlIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgemVyb2VkIGluIG9uIHRoZSBgQkxLX0RFVl9OVUxMX0JMS2AgY29uZmlndXJhdGlvbiDigJMgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IHRoZSBrZXkgdG8gdGhpcy4gTm93LCB0aGlzIHBhdGNoIGdvZXMgaW4gYW5kIHR3ZWFrcyBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGl0LiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1lc3Npbmcgd2l0aCBgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlYCwgd2hpY2ggaXMgdGhhdCBtYWNybyBmb3IgZ2VuZXJhdGluZyBzdG9yZSBmdW5jdGlvbnMgaW4gY29uZmlnZnMsIGFuZCB0aGVuIGl0IHRvdWNoZXMgYSBidW5jaCBvZiBvdGhlcnMuIEkgc2VlIG1vZGlmaWNhdGlvbnMgaW4gYG51bGxfdXBkYXRlX25yX2h3X3F1ZXVlc2AsIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCwgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYCwgYG51bGxiX2RldmljZV9wb3dlcl9zaG93YCwgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGBudWxsX2NvbmZpZ19kaXNjYXJkYCwgYG51bGxfdmFsaWRhdGVfY29uZmAsIGBudWxsX2FkZF9kZXZgLCBgbnVsbF9pbml0YCwgYG51bGxfZXhpdGAsIGFuZCBgbnVsbF9pbml0X3pvbmVkX2RldmAuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIG1vc3QgcHJvbWlzaW5nIGZ1bmN0aW9ucyBmb3IgZnV6emluZy4gSSYjMzk7bSB0aGlua2luZyB0aGF0IEkgd2FudCB0byB0YXJnZXQgYXJlYXMgd2hlcmUgZXh0ZXJuYWwgaW5wdXQgY2FuIGJlIHByb2Nlc3NlZCBhbmQgdGhhdCBjb3VsZCBsZWFkIHRvIHNvbWV0aGluZyBpbnRlcmVzdGluZy4gQmFzZWQgb24gYSBxdWljayBza2ltLCBJJiMzOTttIHRoaW5raW5nIHRoYXQgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCwgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYCwgYG51bGxfdmFsaWRhdGVfY29uZmAsIGBudWxsX2FkZF9kZXZgLCBhbmQgYG51bGxfaW5pdF96b25lZF9kZXZgIGFyZSBmdW5jdGlvbnMgdG8gZm9jdXMgb24uCgpCdXQsIEkgc2hvdWxkIHByb2JhYmx5IHRha2UgYSBtb21lbnQgdG8gZG91YmxlLWNoZWNrIG15IHdvcmsuIEp1c3QgdG8gYmUgc3VyZSwgSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBjb2RlIGFnYWluIHRvIHNlZSBpZiBJIG1pc3NlZCBhbnkgb3RoZXIgcHJvbWlzaW5nIHRhcmdldHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTk6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnVsbGJfZGV2aWNlXy4qX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9Mjk2PXN0YXRpYyBpbmxpbmUgc3NpemVfdCBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3coYm9vbCB2YWwsIGNoYXIgKnBhZ2UpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzAwLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzAxOnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV91aW50X2F0dHJfc3RvcmUodW5zaWduZWQgaW50ICp2YWwsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zMDItXHRjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzE0LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzE1OnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV91bG9uZ19hdHRyX3N0b3JlKHVuc2lnbmVkIGxvbmcgKnZhbCxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTMxNi1cdGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zMjgtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozMjk6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zMzAtXHRzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MzUxPXN0YXRpYyBzc2l6ZV90XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozNTI6bnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcdFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNTMtXHRcdFx0ICAgIHNpemVfdCBjb3VudClcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzU5LVx0XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozNjA6XHRyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zdG9yZShcdTAwMjZuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzYxLVx0aWYgKHJldCBcdTAwM2MgMClcdFx0XHRcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDcwPXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NzUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzY6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ3Ny1cdFx0XHRcdCAgICAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ4Mi1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ4MzpcdHJldCA9IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoXHUwMDI2bmV3cCwgcGFnZSwgY291bnQpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDg0LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz01MTc9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MjMtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1MjQ6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MjUtXHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz01Njg9Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBiYWRibG9ja3MpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTY5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTcwOnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTU3MS1cdFx0XHRcdFx0XHRjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NTc3PUNPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9yZWFkb25seSk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01NzgtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1Nzk6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01ODAtXHRcdFx0XHRcdCAgICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTk6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTM3NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgU3l6a2FsbGVyJiMzOTtzIEludGVyYWN0aW9uIHdpdGggRHluYW1pY2FsbHkgR2VuZXJhdGVkIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgYSBtYWNybywgYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAsIHdoaWNoIGlzIGdvaW5nIHRvIGdlbmVyYXRlIGZ1bmN0aW9ucyBsaWtlIGBudWxsYl9kZXZpY2Vfc2l6ZV9zdG9yZWAsIGBudWxsYl9kZXZpY2Vfc3VibWl0X3F1ZXVlc19zdG9yZWAsIGFuZCBzbyBvbi4gTXkgY29uY2VybiBpcyB0aGF0IFN5emthbGxlciBtaWdodCBoYXZlIHRyb3VibGUgdGFyZ2V0aW5nIHRoZXNlICpkeW5hbWljYWxseSogZ2VuZXJhdGVkIGZ1bmN0aW9ucyBkaXJlY3RseSBieSBuYW1lLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBwcm9ibGVtIHdpdGggY29kZSBnZW5lcmF0aW9uLCBpc24mIzM5O3QgaXQ/CgpUaGUgc3RhbmRhcmQgYXBwcm9hY2ggaXMgdG8gZXhwbGljaXRseSBsaXN0IGFsbCBmdW5jdGlvbnMgc3l6a2FsbGVyIG5lZWRzIHRvIGhhdmUgYWNjZXNzIHRvLiBJIHNlZSBhIGZldyBmdW5jdGlvbnMgZGVmaW5lZCBvdXRzaWRlIHRoZSBtYWNybzogYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGFuZCB0aGUgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgLCBgbnVsbF92YWxpZGF0ZV9jb25mYCwgYG51bGxfYWRkX2RldmAsIGFuZCBgbnVsbF9pbml0X3pvbmVkX2RldmAuIFRoZXNlIGFyZSBlYXN5IHdpbnMhIFdlIGNhbiBkZWZpbml0ZWx5IGxpc3QgdGhvc2UuCgpTbywgaGVyZSYjMzk7cyB0aGUgbGlzdCBvZiBmdW5jdGlvbnMgdGhhdCB3ZSBzaG91bGQgYmUgYWJsZSB0byBtYWtlIHVzZSBvZjoKLSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYAotIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYAotIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AKLSBgbnVsbF92YWxpZGF0ZV9jb25mYAotIGBudWxsX2FkZF9kZXZgCi0gYG51bGxfaW5pdF96b25lZF9kZXZgCgpCdXQgd2FpdCwgaG9sZCBvbi4uLnRoYXQgYCMjTkFNRSMjYCBpbiB0aGUgbWFjcm8uLi4gdGhhdCYjMzk7cyB0aGUga2V5LiBJIG5lZWQgdG8gZmlndXJlIG91dCAqd2hhdCogbmFtZXMgdGhhdCBtYWNybyBpcyBnZW5lcmF0aW5nLiBJIGNhbiYjMzk7dCBiZSBzdXJlIHRoaXMgaXMgYSBjb21wcmVoZW5zaXZlIGxpc3Qgd2l0aG91dCBrbm93aW5nIHRoZSBvdXRwdXRzIG9mIHRoYXQgbWFjcm8uIExldCYjMzk7cyBzZWUgaWYgSSBjYW4gZmluZCBhbiBleGFtcGxlIHVzYWdlIG9mIHRoZSBtYWNybyB0byBkZXRlcm1pbmUgdGhlIGdlbmVyYXRlZCBmdW5jdGlvbiBuYW1lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxOToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtOVUxMQl9ERVZJQ0VfQVRUUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTMyOT1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3N0b3JlKGJvb2wgKnZhbCwgY29uc3QgY2hhciAqcGFnZSxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNDMtLyogVGhlIGZvbGxvd2luZyBtYWNybyBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggVFlQRSA9IHt1aW50LCB1bG9uZywgYm9vbH0uICovXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozNDQ6I2RlZmluZSBOVUxMQl9ERVZJQ0VfQVRUUihOQU1FLCBUWVBFLCBBUFBMWSlcdFx0XHRcdFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNDUtc3RhdGljIHNzaXplX3RcdFx0XHRcdFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00MzA9c3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDM1LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDM2Ok5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQzNzpOVUxMQl9ERVZJQ0VfQVRUUihjb21wbGV0aW9uX25zZWMsIHVsb25nLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQzODpOVUxMQl9ERVZJQ0VfQVRUUihzdWJtaXRfcXVldWVzLCB1aW50LCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQzOTpOVUxMQl9ERVZJQ0VfQVRUUihwb2xsX3F1ZXVlcywgdWludCwgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQwOk5VTExCX0RFVklDRV9BVFRSKGhvbWVfbm9kZSwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NDE6TlVMTEJfREVWSUNFX0FUVFIocXVldWVfbW9kZSwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NDI6TlVMTEJfREVWSUNFX0FUVFIoYmxvY2tzaXplLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0MzpOVUxMQl9ERVZJQ0VfQVRUUihtYXhfc2VjdG9ycywgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NDQ6TlVMTEJfREVWSUNFX0FUVFIoaXJxbW9kZSwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NDU6TlVMTEJfREVWSUNFX0FUVFIoaHdfcXVldWVfZGVwdGgsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ2Ok5VTExCX0RFVklDRV9BVFRSKGluZGV4LCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0NzpOVUxMQl9ERVZJQ0VfQVRUUihibG9ja2luZywgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NDg6TlVMTEJfREVWSUNFX0FUVFIodXNlX3Blcl9ub2RlX2hjdHgsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ5Ok5VTExCX0RFVklDRV9BVFRSKG1lbW9yeV9iYWNrZWQsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDUwOk5VTExCX0RFVklDRV9BVFRSKGRpc2NhcmQsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDUxOk5VTExCX0RFVklDRV9BVFRSKG1icHMsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDUyOk5VTExCX0RFVklDRV9BVFRSKGNhY2hlX3NpemUsIHVsb25nLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1MzpOVUxMQl9ERVZJQ0VfQVRUUih6b25lZCwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTQ6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9zaXplLCB1bG9uZywgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTU6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9jYXBhY2l0eSwgdWxvbmcsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU2Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVfbnJfY29udiwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTc6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9tYXhfb3BlbiwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTg6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9tYXhfYWN0aXZlLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1OTpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX2FwcGVuZF9tYXhfc2VjdG9ycywgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjA6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9mdWxsLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MTpOVUxMQl9ERVZJQ0VfQVRUUih2aXJ0X2JvdW5kYXJ5LCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MjpOVUxMQl9ERVZJQ0VfQVRUUihub19zY2hlZCwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjM6TlVMTEJfREVWSUNFX0FUVFIoc2hhcmVkX3RhZ3MsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY0Ok5VTExCX0RFVklDRV9BVFRSKHNoYXJlZF90YWdfYml0bWFwLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2NTpOVUxMQl9ERVZJQ0VfQVRUUihmdWEsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY2Ok5VTExCX0RFVklDRV9BVFRSKHJvdGF0aW9uYWwsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY3Ok5VTExCX0RFVklDRV9BVFRSKGJhZGJsb2Nrc19vbmNlLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2ODpOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NjktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTk6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzNDgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBudWxsIGJsb2NrIGRldmljZSBjb2RlIGFuZCBwaW5wb2ludGluZyBzb21lIGtleSBhcmVhcy4gVGhlIHBhdGNoIGlzIGNsZWFybHkgdG91Y2hpbmcgdGhlIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgIGZ1bmN0aW9ucywgd2hpY2ggYXJlIGdlbmVyYXRlZCBmb3IgdmFyaW91cyBhdHRyaWJ1dGVzLiBNeSBpbml0aWFsIGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZXNlIHNwZWNpZmljIHN5bWJvbHM6IGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLCBgbnVsbF92YWxpZGF0ZV9jb25mYCwgYG51bGxfYWRkX2RldmAsIGBudWxsX2luaXRfem9uZWRfZGV2YCwgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgLCBhbmQgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYC4gVGhlc2Ugc2VlbSBsaWtlIGV4Y2VsbGVudCBzdGFydGluZyBwb2ludHMgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlcyBhbmQgdGhlaXIgaW1wYWN0LgoKTm93LCBJIG5lZWQgdG8gY29uc2lkZXIgYW55IHBvdGVudGlhbCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gVGhlIGluY2x1c2lvbiBvZiBgbnVsbF9pbml0X3pvbmVkX2RldmAgcmFpc2VzIGEgcmVkIGZsYWcgcmVnYXJkaW5nIHpvbmVkIGJsb2NrIGRldmljZXMuIEkgc3VzcGVjdCB0aGF0IGBDT05GSUdfQkxLX0RFVl9aT05FRGAgbWlnaHQgYmUgcmVxdWlyZWQgZm9yIHRoYXQgZnVuY3Rpb24gdG8gb3BlcmF0ZSBjb3JyZWN0bHkuIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBjaGVjayB0aGUgYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuY2AgZmlsZSB0byBjb25maXJtLiBVbmRlcnN0YW5kaW5nIHRoaXMgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudCB3aWxsIGJlIGNydWNpYWwgZm9yIHRoZSBvdmVyYWxsIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE5OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O251bGxfaW5pdF96b25lZF9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xOTQ3PXN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTg0LVx0aWYgKGRldi1cdTAwM2V6b25lZCkge1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTk4NTpcdFx0cnYgPSBudWxsX2luaXRfem9uZWRfZGV2KGRldiwgXHUwMDI2bGltKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5ODYtXHRcdGlmIChydilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmg9MTM4PWJsa19zdGF0dXNfdCBudWxsX2hhbmRsZV9tZW1vcnlfYmFja2VkKHN0cnVjdCBudWxsYl9jbWQgKmNtZCwgZW51bSByZXFfb3Agb3AsXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE0MS0jaWZkZWYgQ09ORklHX0JMS19ERVZfWk9ORURcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNDI6aW50IG51bGxfaW5pdF96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LCBzdHJ1Y3QgcXVldWVfbGltaXRzICpsaW0pO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE0My1pbnQgbnVsbF9yZWdpc3Rlcl96b25lZF9kZXYoc3RydWN0IG51bGxiICpudWxsYik7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oPTE1Mj1zc2l6ZV90IHpvbmVfY29uZF9zdG9yZShzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKnBhZ2UsXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE1NC0jZWxzZVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oOjE1NTpzdGF0aWMgaW5saW5lIGludCBudWxsX2luaXRfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNTYtXHRcdHN0cnVjdCBxdWV1ZV9saW1pdHMgKmxpbSlcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM9NDI9c3RhdGljIGlubGluZSB2b2lkIG51bGxfdW5sb2NrX3pvbmUoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYy01MC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYzo1MTppbnQgbnVsbF9pbml0X3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmMtNTItXHRcdFx0c3RydWN0IHF1ZXVlX2xpbWl0cyAqbGltKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxOToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjI4OAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbmZpZ3VyYXRpb24gRGVjaXNpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgdGhpcyBzdHJhaWdodC4gV2UgZGVmaW5pdGVseSBuZWVkIGBDT05GSUdfQkxLX0RFVl9aT05FRGAuIFNvLCB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QgbmVlZHMgdG8gaW5jbHVkZSBgQkxLX0RFVl9OVUxMX0JMS2AgYW5kIGBCTEtfREVWX1pPTkVEYC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLgoKTm93LCBJIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgb3Igbm90IGBDT05GSUdfQ09ORklHRlNfRlNgIGlzIHJlcXVpcmVkLiBUaGUgY29kZSBmb3IgYG51bGxfYmxrYCBpbmRpY2F0ZXMgdGhhdCBpdCB1c2VzIGNvbmZpZ2ZzLCBzbyBJIHNob3VsZCBiZSBhYmxlIHRvIGdldCB0aGUgYW5zd2VyIGJ5IGNoZWNraW5nIHRoZSBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnYCBmaWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxOToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQkxLX0RFVl9OVUxMX0JMSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjY6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy05LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjEwOmNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZhdWx0IGluamVjdGlvbiBmb3IgTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxOToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjY4MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyB0aGUgcGVyc3BlY3RpdmUgb2Ygc29tZW9uZSBpbW1lcnNlZCBpbiB0aGlzIGNvZGU6CgoqKlVucmF2ZWxpbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgQkxLX0RFVl9OVUxMX0JMS2AqKgoKUmlnaHQsIGxldCBtZSBwYXVzZSBhbmQgdGhpbmsgdGhpcyB0aHJvdWdoLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgYEJMS19ERVZfTlVMTF9CTEtgIGFjdHVhbGx5ICpkb2VzKi4gQmVmb3JlIEkgZGl2ZSBpbnRvIGl0cyBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5LCBJIGhhdmUgdG8gdHJhY2UgaXRzIGRlcGVuZGVuY2llcy4gV2hlcmUgZG9lcyB0aGlzIGNvbnN0YW50IHNob3cgdXA/IFdoYXQgb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSByZWx5IG9uIGl0PyBBcmUgdGhlcmUgYW55IG9idmlvdXMgbW9kdWxlcyB0aGF0IGFyZSB0aWdodGx5IGNvdXBsZWQgdG8gaXRzIHZhbHVlIG9yIHB1cnBvc2U/IFRoaXMgY291bGQgaW52b2x2ZSBsb29raW5nIGF0IGAjZGVmaW5lYCBzdGF0ZW1lbnRzLCBtYWNybyBleHBhbnNpb25zLCBhbmQgY3Jvc3MtcmVmZXJlbmNlcyB3aXRoaW4gdGhlIHJlbGV2YW50IGhlYWRlciBmaWxlcyBhbmQgc291cmNlIGNvZGUuIFVuZGVyc3RhbmRpbmcgdGhvc2UgcmVsYXRpb25zaGlwcyBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIG92ZXJhbGwgcm9sZSBpbiB0aGlzIGFyZWEuIEl0JiMzOTtzIHRoZSBvbmx5IHdheSB0byBhdm9pZCBtYWtpbmcgY2hhbmdlcyB0aGF0IGhhdmUgdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMgZWxzZXdoZXJlIGluIHRoZSBjb2RlLiBJIG5lZWQgdG8gbWFrZSBhIG1lbnRhbCBtYXAgb2YgaXRzIGNvbm5lY3Rpb25zIGJlZm9yZSBjb250aW51aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxOToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBOdWxsIGJsb2NrIGRldmljZSBkcml2ZXIgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgQkxLX0RFVl9OVUxMX0JMS1xuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7TnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuICAgODpcdFx0c2VsZWN0IENPTkZJR0ZTX0ZTXG4gICA5Olx0XG4gIDEwOlx0Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXG4gIDExOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXCYjMzQ7XG4gIDEyOlx0XHRkZXBlbmRzIG9uIEJMS19ERVZfTlVMTF9CTEsgXHUwMDI2XHUwMDI2IEZBVUxUX0lOSkVDVElPTl9DT05GSUdGU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxOToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzA4OQoJCQkJCQkJb3V0cHV0OiAxNTgKCQkJCQkJCXRob3VnaHRzOiAzMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTnVsbCBCbG9jayBEcml2ZXIgRnV6emluZyBTdHJhdGVneSoqCgpPa2F5LCBzbyBJJiMzOTttIHB1dHRpbmcgdG9nZXRoZXIgYSBmdXp6aW5nIHBsYW4gZm9yIHRoaXMgbnVsbF9ibGsgZHJpdmVyIHBhdGNoLiBUaGUgZmlyc3QgdGhpbmcgdG8gcmVtZW1iZXIgaXMgdGhhdCBgQ09ORklHRlNfRlNgIGlzIGF1dG9tYXRpY2FsbHkgcHVsbGVkIGluIGJ5IGBCTEtfREVWX05VTExfQkxLYCwgc28gSSBkb24mIzM5O3QgaGF2ZSB0byB3b3JyeSBhYm91dCBsaXN0aW5nIGl0IGV4cGxpY2l0bHkuIFRoYXQgc2F2ZXMgYSBzdGVwLgoKQWxyaWdodCwgbGV0JiMzOTtzIHN1bW1hcml6ZSB0aGUga2V5IHBvaW50cyBoZXJlOiB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlc2Ugc3ltYm9sczogYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCwgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYCwgYG51bGxfdmFsaWRhdGVfY29uZmAsIGBudWxsX2FkZF9kZXZgLCBhbmQgYG51bGxfaW5pdF96b25lZF9kZXZgLgoKSSYjMzk7bSBlbmFibGluZyB0aGVzZSBjb25maWcgb3B0aW9uczogYEJMS19ERVZfTlVMTF9CTEtgIGFuZCBgQkxLX0RFVl9aT05FRGAsIGJlY2F1c2UgdGhpcyBkcml2ZXIgaXMgc29mdHdhcmUtZW11bGF0ZWQsIG1ha2luZyBpdCBpZGVhbCBmb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBhbmQgdGhlIHBhdGNoIGFkZHJlc3NlcyBkYXRhIHJhY2VzIGFuZCBzb21lIGluaXRpYWxpemF0aW9uIGlzc3Vlcy4gTXkgcHJpbWFyeSBmdXp6aW5nIHRhcmdldHMgc2hvdWxkIGJlIHRoZSB1cGRhdGVkIGNvbmZpZ2ZzIGF0dHJpYnV0ZSBzdG9yZSBmdW5jdGlvbnMgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbiBsb2dpYywgZXNwZWNpYWxseSBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBmaXguCgpOb3csIGEgcXVpY2sgY2hlY2sgb24gdGhlIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgIG1hY3JvLiBBaCwgcmlnaHQsIHRob3NlIGFyZSBzdGF0aWMgZnVuY3Rpb25zLCBsaWtlIGBudWxsYl9kZXZpY2Vfc2l6ZV9zdG9yZWAuIFN5emthbGxlciAqY2FuKiBzdGlsbCBnZXQgdG8gdGhlbSBpZiB0aGV5JiMzOTtyZSByZWFjaGFibGUsIGV2ZW4gaWYgdGhleSYjMzk7cmUgc3RhdGljLCBidXQgbGlzdGluZyBldmVyeSBzaW5nbGUgb25lIGlzbiYjMzk7dCBmZWFzaWJsZS4gSSB0aGluayBmb2N1c2luZyBvbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBhbmQgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgIGlzIHN1ZmZpY2llbnQgZm9yIGluaXRpYWwgY292ZXJhZ2UuCgpIb2xkIG9uLi4uIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCBpcyBjYWxsZWQgZnJvbSBgbnVsbGJfZGV2aWNlX3N1Ym1pdF9xdWV1ZXNfc3RvcmVgLiBPa2F5LCB0aGF0JiMzOTtzIGdvb2QuIExpc3RpbmcgdGhlIGZvcm1lciBjb3ZlcnMgdGhlIGxhdHRlci4gUGVyZmVjdC4KCkFscmlnaHQsIHdpdGggdGhhdCBjb25maXJtZWQsIGxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX05VTExfQkxLJiMzNDssCiAgICAmIzM0O0JMS19ERVZfWk9ORUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsX3ZhbGlkYXRlX2NvbmYmIzM0OywKICAgICYjMzQ7bnVsbF9hZGRfZGV2JiMzNDssCiAgICAmIzM0O251bGxfaW5pdF96b25lZF9kZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgZGF0YSByYWNlcyBhbmQgbW9kdWxlIGluaXRpYWxpemF0aW9uIG9yZGVyaW5nIGluIHRoZSBudWxsX2JsayBkcml2ZXIuIFRoZSBkcml2ZXIgaXMgc29mdHdhcmUtZW11bGF0ZWQgYW5kIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBtb2RpZmllZCBjb25maWdmcyBhdHRyaWJ1dGUgc3RvcmUgZnVuY3Rpb25zIGFuZCBkZXZpY2UgaW5pdGlhbGl6YXRpb24gbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9aT05FRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2FwcGx5X3BvbGxfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxfdmFsaWRhdGVfY29uZiYjMzQ7LAogICAgJiMzNDtudWxsX2FkZF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbF9pbml0X3pvbmVkX2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBkYXRhIHJhY2VzIGFuZCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgaW4gdGhlIG51bGxfYmxrIGRyaXZlci4gVGhlIGRyaXZlciBpcyBzb2Z0d2FyZS1lbXVsYXRlZCBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG1vZGlmaWVkIGNvbmZpZ2ZzIGF0dHJpYnV0ZSBzdG9yZSBmdW5jdGlvbnMgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbiBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE5OjIzOjI3LjMwMTkzMjc0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjE3NTQzODQ1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCIsXG4gICAgXCJCTEtfREVWX1pPTkVEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCIsXG4gICAgXCJudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzXCIsXG4gICAgXCJudWxsYl9hcHBseV9wb2xsX3F1ZXVlc1wiLFxuICAgIFwibnVsbF92YWxpZGF0ZV9jb25mXCIsXG4gICAgXCJudWxsX2FkZF9kZXZcIixcbiAgICBcIm51bGxfaW5pdF96b25lZF9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBkYXRhIHJhY2VzIGFuZCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgaW4gdGhlIG51bGxfYmxrIGRyaXZlci4gVGhlIGRyaXZlciBpcyBzb2Z0d2FyZS1lbXVsYXRlZCBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG1vZGlmaWVkIGNvbmZpZ2ZzIGF0dHJpYnV0ZSBzdG9yZSBmdW5jdGlvbnMgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbiBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTk6MjM6MjcuMzAxOTQyODczWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTQzOTA0NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmNGRmM2QyZTliMmYzYzM1ODQ5ZjkxODQ0OTMwODY5ZTJjNmVjODdmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDggMTk6MjM6MjUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xcbmluZGV4IGY4YzBmZDU3ZTA0MWE4Li5mZDNjOTkzYTY3YjJiZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXFxuQEAgLTY2LDcgKzY2LDcgQEAgc3RydWN0IG51bGxiX3BhZ2Uge1xcbiAjZGVmaW5lIE5VTExCX1BBR0VfRlJFRSAoTUFQX1NaIC0gMilcXG4gXFxuIHN0YXRpYyBMSVNUX0hFQUQobnVsbGJfbGlzdCk7XFxuLXN0YXRpYyBzdHJ1Y3QgbXV0ZXggbG9jaztcXG4rc3RhdGljIERFRklORV9NVVRFWChsb2NrKTtcXG4gc3RhdGljIGludCBudWxsX21ham9yO1xcbiBzdGF0aWMgREVGSU5FX0lEQShudWxsYl9pbmRleGVzKTtcXG4gc3RhdGljIHN0cnVjdCBibGtfbXFfdGFnX3NldCB0YWdfc2V0O1xcbkBAIC0zNDYsNyArMzQ2LDcgQEAgc3RhdGljIHNzaXplX3RcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIG51bGxiX2RldmljZV8jI05BTUUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcXHRcXFxcXFxuIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdHJldHVybiBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zaG93KFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0XFx0dG9fbnVsbGJfZGV2aWNlKGl0ZW0pLVxcdTAwM2VOQU1FLCBwYWdlKTtcXHRcXFxcXFxuK1xcdFxcdFxcdFJFQURfT05DRSh0b19udWxsYl9kZXZpY2UoaXRlbSktXFx1MDAzZU5BTUUpLCBwYWdlKTtcXHRcXFxcXFxuIH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIHN0YXRpYyBzc2l6ZV90XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLFxcdFxcXFxcXG5AQCAtMzYwLDEzICszNjAsMTYgQEAgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcXHRcXFxcXFxuIFxcdHJldCA9IG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3N0b3JlKFxcdTAwMjZuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcXFxcXFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0cmV0dXJuIHJldDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0aWYgKGFwcGx5X2ZuKVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0cmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpO1xcdFxcdFxcdFxcdFxcXFxcXG4gXFx0ZWxzZSBpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKSkgXFx0XFxcXFxcbiBcXHRcXHRyZXQgPSAtRUJVU1k7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRpZiAoIXJldClcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFdSSVRFX09OQ0UoZGV2LVxcdTAwM2VOQU1FLCBuZXdfdmFsdWUpO1xcdFxcdFxcdFxcXFxcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0cmV0dXJuIHJldDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdGRldi1cXHUwMDNlTkFNRSA9IG5ld192YWx1ZTtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdHJldHVybiBjb3VudDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIENPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgTkFNRSk7XFxuQEAgLTQwMSw4ICs0MDQsOCBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbiBcXHQgKi9cXG4gXFx0ZGV2LVxcdTAwM2VwcmV2X3N1Ym1pdF9xdWV1ZXMgPSBkZXYtXFx1MDAzZXN1Ym1pdF9xdWV1ZXM7XFxuIFxcdGRldi1cXHUwMDNlcHJldl9wb2xsX3F1ZXVlcyA9IGRldi1cXHUwMDNlcG9sbF9xdWV1ZXM7XFxuLVxcdGRldi1cXHUwMDNlc3VibWl0X3F1ZXVlcyA9IHN1Ym1pdF9xdWV1ZXM7XFxuLVxcdGRldi1cXHUwMDNlcG9sbF9xdWV1ZXMgPSBwb2xsX3F1ZXVlcztcXG4rXFx0V1JJVEVfT05DRShkZXYtXFx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHN1Ym1pdF9xdWV1ZXMpO1xcbitcXHRXUklURV9PTkNFKGRldi1cXHUwMDNlcG9sbF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcXG4gXFxuIFxcdHNldCA9IGRldi1cXHUwMDNlbnVsbGItXFx1MDAzZXRhZ19zZXQ7XFxuIFxcdG5yX2h3X3F1ZXVlcyA9IHN1Ym1pdF9xdWV1ZXMgKyBwb2xsX3F1ZXVlcztcXG5AQCAtNDExLDggKzQxNCw4IEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuIFxcbiBcXHRpZiAocmV0KSB7XFxuIFxcdFxcdC8qIG9uIGVycm9yLCByZXZlcnQgdGhlIHF1ZXVlIG51bWJlcnMgKi9cXG4tXFx0XFx0ZGV2LVxcdTAwM2VzdWJtaXRfcXVldWVzID0gZGV2LVxcdTAwM2VwcmV2X3N1Ym1pdF9xdWV1ZXM7XFxuLVxcdFxcdGRldi1cXHUwMDNlcG9sbF9xdWV1ZXMgPSBkZXYtXFx1MDAzZXByZXZfcG9sbF9xdWV1ZXM7XFxuK1xcdFxcdFdSSVRFX09OQ0UoZGV2LVxcdTAwM2VzdWJtaXRfcXVldWVzLCBkZXYtXFx1MDAzZXByZXZfc3VibWl0X3F1ZXVlcyk7XFxuK1xcdFxcdFdSSVRFX09OQ0UoZGV2LVxcdTAwM2Vwb2xsX3F1ZXVlcywgZGV2LVxcdTAwM2VwcmV2X3BvbGxfcXVldWVzKTtcXG4gXFx0fVxcbiBcXG4gXFx0cmV0dXJuIHJldDtcXG5AQCAtNDIxLDI1ICs0MjQsMTMgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgc3VibWl0X3F1ZXVlcylcXG4ge1xcbi1cXHRpbnQgcmV0O1xcbi1cXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuLVxcdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXFx1MDAzZXBvbGxfcXVldWVzKTtcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXG4tXFxuLVxcdHJldHVybiByZXQ7XFxuK1xcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVxcdTAwM2Vwb2xsX3F1ZXVlcyk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgcG9sbF9xdWV1ZXMpXFxuIHtcXG4tXFx0aW50IHJldDtcXG4tXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbi1cXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVxcdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuLVxcbi1cXHRyZXR1cm4gcmV0O1xcbitcXHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xcbiB9XFxuIFxcbiBOVUxMQl9ERVZJQ0VfQVRUUihzaXplLCB1bG9uZywgTlVMTCk7XFxuQEAgLTQ3OCw3ICs0NjksOCBAQCBOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7XFxuIFxcbiBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXFxuIHtcXG4tXFx0cmV0dXJuIG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktXFx1MDAzZXBvd2VyLCBwYWdlKTtcXG4rXFx0cmV0dXJuIG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyhcXG4rXFx0XFx0XFx0UkVBRF9PTkNFKHRvX251bGxiX2RldmljZShpdGVtKS1cXHUwMDNlcG93ZXIpLCBwYWdlKTtcXG4gfVxcbiBcXG4gc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5AQCAtNTA1LDExICs0OTcsMTEgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0c2V0X2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpO1xcbi1cXHRcXHRkZXYtXFx1MDAzZXBvd2VyID0gbmV3cDtcXG4rXFx0XFx0V1JJVEVfT05DRShkZXYtXFx1MDAzZXBvd2VyLCBuZXdwKTtcXG4gXFx0XFx0cmV0ID0gY291bnQ7XFxuIFxcdH0gZWxzZSBpZiAoZGV2LVxcdTAwM2Vwb3dlciBcXHUwMDI2XFx1MDAyNiAhbmV3cCkge1xcbiBcXHRcXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpKSB7XFxuLVxcdFxcdFxcdGRldi1cXHUwMDNlcG93ZXIgPSBuZXdwO1xcbitcXHRcXHRcXHRXUklURV9PTkNFKGRldi1cXHUwMDNlcG93ZXIsIG5ld3ApO1xcbiBcXHRcXHRcXHRudWxsX2RlbF9kZXYoZGV2LVxcdTAwM2VudWxsYik7XFxuIFxcdFxcdH1cXG4gXFx0XFx0Y2xlYXJfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcXHUwMDI2ZGV2LVxcdTAwM2VmbGFncyk7XFxuQEAgLTE3OTIsMTMgKzE3ODQsMTMgQEAgc3RhdGljIHZvaWQgbnVsbF9jb25maWdfZGlzY2FyZChzdHJ1Y3QgbnVsbGIgKm51bGxiLCBzdHJ1Y3QgcXVldWVfbGltaXRzICpsaW0pXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdGlmICghbnVsbGItXFx1MDAzZWRldi1cXHUwMDNlbWVtb3J5X2JhY2tlZCkge1xcbi1cXHRcXHRudWxsYi1cXHUwMDNlZGV2LVxcdTAwM2VkaXNjYXJkID0gZmFsc2U7XFxuK1xcdFxcdFdSSVRFX09OQ0UobnVsbGItXFx1MDAzZWRldi1cXHUwMDNlZGlzY2FyZCwgZmFsc2UpO1xcbiBcXHRcXHRwcl9pbmZvKFxcXCJkaXNjYXJkIG9wdGlvbiBpcyBpZ25vcmVkIHdpdGhvdXQgbWVtb3J5IGJhY2tpbmdcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChudWxsYi1cXHUwMDNlZGV2LVxcdTAwM2V6b25lZCkge1xcbi1cXHRcXHRudWxsYi1cXHUwMDNlZGV2LVxcdTAwM2VkaXNjYXJkID0gZmFsc2U7XFxuK1xcdFxcdFdSSVRFX09OQ0UobnVsbGItXFx1MDAzZWRldi1cXHUwMDNlZGlzY2FyZCwgZmFsc2UpO1xcbiBcXHRcXHRwcl9pbmZvKFxcXCJkaXNjYXJkIG9wdGlvbiBpcyBpZ25vcmVkIGluIHpvbmVkIG1vZGVcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG5AQCAtMTg5MCwzMSArMTg4MiwzMSBAQCBzdGF0aWMgaW50IG51bGxfdmFsaWRhdGVfY29uZihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuIFxcdH1cXG4gXFx0aWYgKGRldi1cXHUwMDNlcXVldWVfbW9kZSA9PSBOVUxMX1FfQklPKSB7XFxuIFxcdFxcdHByX2VycihcXFwiQklPLWJhc2VkIElPIHBhdGggaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZSwgdXNpbmcgYmxrLW1xIGluc3RlYWQuXFxcXG5cXFwiKTtcXG4tXFx0XFx0ZGV2LVxcdTAwM2VxdWV1ZV9tb2RlID0gTlVMTF9RX01RO1xcbitcXHRcXHRXUklURV9PTkNFKGRldi1cXHUwMDNlcXVldWVfbW9kZSwgTlVMTF9RX01RKTtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGRldi1cXHUwMDNldXNlX3Blcl9ub2RlX2hjdHgpIHtcXG4gXFx0XFx0aWYgKGRldi1cXHUwMDNlc3VibWl0X3F1ZXVlcyAhPSBucl9vbmxpbmVfbm9kZXMpXFxuLVxcdFxcdFxcdGRldi1cXHUwMDNlc3VibWl0X3F1ZXVlcyA9IG5yX29ubGluZV9ub2RlcztcXG4rXFx0XFx0XFx0V1JJVEVfT05DRShkZXYtXFx1MDAzZXN1Ym1pdF9xdWV1ZXMsIG5yX29ubGluZV9ub2Rlcyk7XFxuIFxcdH0gZWxzZSBpZiAoZGV2LVxcdTAwM2VzdWJtaXRfcXVldWVzIFxcdTAwM2UgbnJfY3B1X2lkcylcXG4tXFx0XFx0ZGV2LVxcdTAwM2VzdWJtaXRfcXVldWVzID0gbnJfY3B1X2lkcztcXG4rXFx0XFx0V1JJVEVfT05DRShkZXYtXFx1MDAzZXN1Ym1pdF9xdWV1ZXMsIG5yX2NwdV9pZHMpO1xcbiBcXHRlbHNlIGlmIChkZXYtXFx1MDAzZXN1Ym1pdF9xdWV1ZXMgPT0gMClcXG4tXFx0XFx0ZGV2LVxcdTAwM2VzdWJtaXRfcXVldWVzID0gMTtcXG4rXFx0XFx0V1JJVEVfT05DRShkZXYtXFx1MDAzZXN1Ym1pdF9xdWV1ZXMsIDEpO1xcbiBcXHRkZXYtXFx1MDAzZXByZXZfc3VibWl0X3F1ZXVlcyA9IGRldi1cXHUwMDNlc3VibWl0X3F1ZXVlcztcXG4gXFxuIFxcdGlmIChkZXYtXFx1MDAzZXBvbGxfcXVldWVzIFxcdTAwM2UgZ19wb2xsX3F1ZXVlcylcXG4tXFx0XFx0ZGV2LVxcdTAwM2Vwb2xsX3F1ZXVlcyA9IGdfcG9sbF9xdWV1ZXM7XFxuK1xcdFxcdFdSSVRFX09OQ0UoZGV2LVxcdTAwM2Vwb2xsX3F1ZXVlcywgZ19wb2xsX3F1ZXVlcyk7XFxuIFxcdGRldi1cXHUwMDNlcHJldl9wb2xsX3F1ZXVlcyA9IGRldi1cXHUwMDNlcG9sbF9xdWV1ZXM7XFxuLVxcdGRldi1cXHUwMDNlaXJxbW9kZSA9IG1pbl90KHVuc2lnbmVkIGludCwgZGV2LVxcdTAwM2VpcnFtb2RlLCBOVUxMX0lSUV9USU1FUik7XFxuK1xcdFdSSVRFX09OQ0UoZGV2LVxcdTAwM2VpcnFtb2RlLCBtaW5fdCh1bnNpZ25lZCBpbnQsIGRldi1cXHUwMDNlaXJxbW9kZSwgTlVMTF9JUlFfVElNRVIpKTtcXG4gXFxuIFxcdC8qIERvIG1lbW9yeSBhbGxvY2F0aW9uLCBzbyBzZXQgYmxvY2tpbmcgKi9cXG4gXFx0aWYgKGRldi1cXHUwMDNlbWVtb3J5X2JhY2tlZClcXG4tXFx0XFx0ZGV2LVxcdTAwM2VibG9ja2luZyA9IHRydWU7XFxuK1xcdFxcdFdSSVRFX09OQ0UoZGV2LVxcdTAwM2VibG9ja2luZywgdHJ1ZSk7XFxuIFxcdGVsc2UgLyogY2FjaGUgaXMgbWVhbmluZ2xlc3MgKi9cXG4tXFx0XFx0ZGV2LVxcdTAwM2VjYWNoZV9zaXplID0gMDtcXG4tXFx0ZGV2LVxcdTAwM2VjYWNoZV9zaXplID0gbWluX3QodW5zaWduZWQgbG9uZywgVUxPTkdfTUFYIC8gMTAyNCAvIDEwMjQsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdGRldi1cXHUwMDNlY2FjaGVfc2l6ZSk7XFxuLVxcdGRldi1cXHUwMDNlbWJwcyA9IG1pbl90KHVuc2lnbmVkIGludCwgMTAyNCAqIDQwLCBkZXYtXFx1MDAzZW1icHMpO1xcbitcXHRcXHRXUklURV9PTkNFKGRldi1cXHUwMDNlY2FjaGVfc2l6ZSwgMCk7XFxuK1xcdFdSSVRFX09OQ0UoZGV2LVxcdTAwM2VjYWNoZV9zaXplLCBtaW5fdCh1bnNpZ25lZCBsb25nLCBVTE9OR19NQVggLyAxMDI0IC8gMTAyNCxcXG4rXFx0XFx0XFx0XFx0XFx0ICBkZXYtXFx1MDAzZWNhY2hlX3NpemUpKTtcXG4rXFx0V1JJVEVfT05DRShkZXYtXFx1MDAzZW1icHMsIG1pbl90KHVuc2lnbmVkIGludCwgMTAyNCAqIDQwLCBkZXYtXFx1MDAzZW1icHMpKTtcXG4gXFxuIFxcdGlmIChkZXYtXFx1MDAzZXpvbmVkIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICAoIWRldi1cXHUwMDNlem9uZV9zaXplIHx8ICFpc19wb3dlcl9vZl8yKGRldi1cXHUwMDNlem9uZV9zaXplKSkpIHtcXG5AQCAtMjAyNCw3ICsyMDE2LDcgQEAgc3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxcbiBcXHRcXHRnb3RvIG91dF9jbGVhbnVwX2Rpc2s7XFxuIFxcbiBcXHRudWxsYi1cXHUwMDNlaW5kZXggPSBydjtcXG4tXFx0ZGV2LVxcdTAwM2VpbmRleCA9IHJ2O1xcbitcXHRXUklURV9PTkNFKGRldi1cXHUwMDNlaW5kZXgsIHJ2KTtcXG4gXFxuIFxcdGlmIChjb25maWdfaXRlbV9uYW1lKFxcdTAwMjZkZXYtXFx1MDAzZWdyb3VwLmNnX2l0ZW0pKSB7XFxuIFxcdFxcdC8qIFVzZSBjb25maWdmcyBkaXIgbmFtZSBhcyB0aGUgZGV2aWNlIG5hbWUgKi9cXG5AQCAtMjE2MiwxNyArMjE1NCw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxcbiBcXHRjb25maWdfZ3JvdXBfaW5pdChcXHUwMDI2bnVsbGJfc3Vic3lzLnN1X2dyb3VwKTtcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2bnVsbGJfc3Vic3lzLnN1X211dGV4KTtcXG4gXFxuLVxcdHJldCA9IGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbShcXHUwMDI2bnVsbGJfc3Vic3lzKTtcXG4tXFx0aWYgKHJldClcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4tXFxuLVxcdG11dGV4X2luaXQoXFx1MDAyNmxvY2spO1xcbi1cXG4gXFx0bnVsbF9tYWpvciA9IHJlZ2lzdGVyX2Jsa2RldigwLCBcXFwibnVsbGJcXFwiKTtcXG4tXFx0aWYgKG51bGxfbWFqb3IgXFx1MDAzYyAwKSB7XFxuLVxcdFxcdHJldCA9IG51bGxfbWFqb3I7XFxuLVxcdFxcdGdvdG8gZXJyX2NvbmY7XFxuLVxcdH1cXG4rXFx0aWYgKG51bGxfbWFqb3IgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gbnVsbF9tYWpvcjtcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl9kZXZpY2VzOyBpKyspIHtcXG4gXFx0XFx0cmV0ID0gbnVsbF9jcmVhdGVfZGV2KCk7XFxuQEAgLTIxODAsNiArMjE2NCwxMCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcXG4gXFx0XFx0XFx0Z290byBlcnJfZGV2O1xcbiBcXHR9XFxuIFxcbitcXHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXFx1MDAyNm51bGxiX3N1YnN5cyk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdGdvdG8gZXJyX2RldjtcXG4rXFxuIFxcdHByX2luZm8oXFxcIm1vZHVsZSBsb2FkZWRcXFxcblxcXCIpO1xcbiBcXHRyZXR1cm4gMDtcXG4gXFxuQEAgLTIxODksOCArMjE3Nyw4IEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxcbiBcXHRcXHRudWxsX2Rlc3Ryb3lfZGV2KG51bGxiKTtcXG4gXFx0fVxcbiBcXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcXFwibnVsbGJcXFwiKTtcXG4tZXJyX2NvbmY6XFxuLVxcdGNvbmZpZ2ZzX3VucmVnaXN0ZXJfc3Vic3lzdGVtKFxcdTAwMjZudWxsYl9zdWJzeXMpO1xcbitcXHRpZiAodGFnX3NldC5vcHMpXFxuK1xcdFxcdGJsa19tcV9mcmVlX3RhZ19zZXQoXFx1MDAyNnRhZ19zZXQpO1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbkBAIC0yMjAwLDggKzIxODgsNiBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpXFxuIFxcbiBcXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcXHUwMDI2bnVsbGJfc3Vic3lzKTtcXG4gXFxuLVxcdHVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsIFxcXCJudWxsYlxcXCIpO1xcbi1cXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuIFxcdHdoaWxlICghbGlzdF9lbXB0eShcXHUwMDI2bnVsbGJfbGlzdCkpIHtcXG4gXFx0XFx0bnVsbGIgPSBsaXN0X2VudHJ5KG51bGxiX2xpc3QubmV4dCwgc3RydWN0IG51bGxiLCBsaXN0KTtcXG5AQCAtMjIwOSw2ICsyMTk1LDggQEAgc3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKVxcbiBcXHR9XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuIFxcbitcXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcXFwibnVsbGJcXFwiKTtcXG4rXFxuIFxcdGlmICh0YWdfc2V0Lm9wcylcXG4gXFx0XFx0YmxrX21xX2ZyZWVfdGFnX3NldChcXHUwMDI2dGFnX3NldCk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmNcXG5pbmRleCAzODRiZGNlNmE5YjdmMy4uNzU2MTNlYWYzZWE5ZWYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jXFxuKysrIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jXFxuQEAgLTY2LDcgKzY2LDcgQEAgaW50IG51bGxfaW5pdF96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbiBcXHR9XFxuIFxcbiBcXHRpZiAoIWRldi1cXHUwMDNlem9uZV9jYXBhY2l0eSlcXG4tXFx0XFx0ZGV2LVxcdTAwM2V6b25lX2NhcGFjaXR5ID0gZGV2LVxcdTAwM2V6b25lX3NpemU7XFxuK1xcdFxcdFdSSVRFX09OQ0UoZGV2LVxcdTAwM2V6b25lX2NhcGFjaXR5LCBkZXYtXFx1MDAzZXpvbmVfc2l6ZSk7XFxuIFxcbiBcXHRpZiAoZGV2LVxcdTAwM2V6b25lX2NhcGFjaXR5IFxcdTAwM2UgZGV2LVxcdTAwM2V6b25lX3NpemUpIHtcXG4gXFx0XFx0cHJfZXJyKFxcXCJ6b25lIGNhcGFjaXR5ICglbHUgTUIpIGxhcmdlciB0aGFuIHpvbmUgc2l6ZSAoJWx1IE1CKVxcXFxuXFxcIixcXG5AQCAtOTksMjkgKzk5LDI5IEBAIGludCBudWxsX2luaXRfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcXG4gXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmRldi1cXHUwMDNlem9uZV9yZXNfbG9jayk7XFxuIFxcbiBcXHRpZiAoZGV2LVxcdTAwM2V6b25lX25yX2NvbnYgXFx1MDAzZT0gZGV2LVxcdTAwM2Vucl96b25lcykge1xcbi1cXHRcXHRkZXYtXFx1MDAzZXpvbmVfbnJfY29udiA9IGRldi1cXHUwMDNlbnJfem9uZXMgLSAxO1xcbitcXHRcXHRXUklURV9PTkNFKGRldi1cXHUwMDNlem9uZV9ucl9jb252LCBkZXYtXFx1MDAzZW5yX3pvbmVzIC0gMSk7XFxuIFxcdFxcdHByX2luZm8oXFxcImNoYW5nZWQgdGhlIG51bWJlciBvZiBjb252ZW50aW9uYWwgem9uZXMgdG8gJXVcXFwiLFxcbiBcXHRcXHRcXHRkZXYtXFx1MDAzZXpvbmVfbnJfY29udik7XFxuIFxcdH1cXG4gXFxuLVxcdGRldi1cXHUwMDNlem9uZV9hcHBlbmRfbWF4X3NlY3RvcnMgPVxcbi1cXHRcXHRtaW4oQUxJR05fRE9XTihkZXYtXFx1MDAzZXpvbmVfYXBwZW5kX21heF9zZWN0b3JzLFxcbi1cXHRcXHRcXHQgICAgICAgZGV2LVxcdTAwM2VibG9ja3NpemUgXFx1MDAzZVxcdTAwM2UgU0VDVE9SX1NISUZUKSxcXG4tXFx0XFx0ICAgIHpvbmVfY2FwYWNpdHlfc2VjdHMpO1xcbitcXHRXUklURV9PTkNFKGRldi1cXHUwMDNlem9uZV9hcHBlbmRfbWF4X3NlY3RvcnMsXFxuK1xcdFxcdCAgIG1pbihBTElHTl9ET1dOKGRldi1cXHUwMDNlem9uZV9hcHBlbmRfbWF4X3NlY3RvcnMsXFxuK1xcdFxcdFxcdFxcdCAgZGV2LVxcdTAwM2VibG9ja3NpemUgXFx1MDAzZVxcdTAwM2UgU0VDVE9SX1NISUZUKSxcXG4rXFx0XFx0ICAgICAgIHpvbmVfY2FwYWNpdHlfc2VjdHMpKTtcXG4gXFxuIFxcdC8qIE1heCBhY3RpdmUgem9uZXMgaGFzIHRvIGJlIFxcdTAwM2MgbmJyIG9mIHNlcSB6b25lcyBpbiBvcmRlciB0byBiZSBlbmZvcmNlYWJsZSAqL1xcbiBcXHRpZiAoZGV2LVxcdTAwM2V6b25lX21heF9hY3RpdmUgXFx1MDAzZT0gZGV2LVxcdTAwM2Vucl96b25lcyAtIGRldi1cXHUwMDNlem9uZV9ucl9jb252KSB7XFxuLVxcdFxcdGRldi1cXHUwMDNlem9uZV9tYXhfYWN0aXZlID0gMDtcXG4rXFx0XFx0V1JJVEVfT05DRShkZXYtXFx1MDAzZXpvbmVfbWF4X2FjdGl2ZSwgMCk7XFxuIFxcdFxcdHByX2luZm8oXFxcInpvbmVfbWF4X2FjdGl2ZSBsaW1pdCBkaXNhYmxlZCwgbGltaXQgXFx1MDAzZT0gem9uZSBjb3VudFxcXFxuXFxcIik7XFxuIFxcdH1cXG4gXFxuIFxcdC8qIE1heCBvcGVuIHpvbmVzIGhhcyB0byBiZSBcXHUwMDNjPSBtYXggYWN0aXZlIHpvbmVzICovXFxuIFxcdGlmIChkZXYtXFx1MDAzZXpvbmVfbWF4X2FjdGl2ZSBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZXpvbmVfbWF4X29wZW4gXFx1MDAzZSBkZXYtXFx1MDAzZXpvbmVfbWF4X2FjdGl2ZSkge1xcbi1cXHRcXHRkZXYtXFx1MDAzZXpvbmVfbWF4X29wZW4gPSBkZXYtXFx1MDAzZXpvbmVfbWF4X2FjdGl2ZTtcXG4rXFx0XFx0V1JJVEVfT05DRShkZXYtXFx1MDAzZXpvbmVfbWF4X29wZW4sIGRldi1cXHUwMDNlem9uZV9tYXhfYWN0aXZlKTtcXG4gXFx0XFx0cHJfaW5mbyhcXFwiY2hhbmdlZCB0aGUgbWF4aW11bSBudW1iZXIgb2Ygb3BlbiB6b25lcyB0byAldVxcXFxuXFxcIixcXG4gXFx0XFx0XFx0ZGV2LVxcdTAwM2V6b25lX21heF9vcGVuKTtcXG4gXFx0fSBlbHNlIGlmIChkZXYtXFx1MDAzZXpvbmVfbWF4X29wZW4gXFx1MDAzZT0gZGV2LVxcdTAwM2Vucl96b25lcyAtIGRldi1cXHUwMDNlem9uZV9ucl9jb252KSB7XFxuLVxcdFxcdGRldi1cXHUwMDNlem9uZV9tYXhfb3BlbiA9IDA7XFxuK1xcdFxcdFdSSVRFX09OQ0UoZGV2LVxcdTAwM2V6b25lX21heF9vcGVuLCAwKTtcXG4gXFx0XFx0cHJfaW5mbyhcXFwiem9uZV9tYXhfb3BlbiBsaW1pdCBkaXNhYmxlZCwgbGltaXQgXFx1MDAzZT0gem9uZSBjb3VudFxcXFxuXFxcIik7XFxuIFxcdH1cXG4gXFx0ZGV2LVxcdTAwM2VuZWVkX3pvbmVfcmVzX21nbXQgPSBkZXYtXFx1MDAzZXpvbmVfbWF4X2FjdGl2ZSB8fCBkZXYtXFx1MDAzZXpvbmVfbWF4X29wZW47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE5OjIzOjI3LjgxNzIyOTU2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTE2NjAwNzg3NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiLFxuICAgIFwiQkxLX0RFVl9aT05FRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxiX2RldmljZV9wb3dlcl9zdG9yZVwiLFxuICAgIFwibnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNcIixcbiAgICBcIm51bGxfdmFsaWRhdGVfY29uZlwiLFxuICAgIFwibnVsbF9hZGRfZGV2XCIsXG4gICAgXCJudWxsX2luaXRfem9uZWRfZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgZGF0YSByYWNlcyBhbmQgbW9kdWxlIGluaXRpYWxpemF0aW9uIG9yZGVyaW5nIGluIHRoZSBudWxsX2JsayBkcml2ZXIuIFRoZSBkcml2ZXIgaXMgc29mdHdhcmUtZW11bGF0ZWQgYW5kIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBtb2RpZmllZCBjb25maWdmcyBhdHRyaWJ1dGUgc3RvcmUgZnVuY3Rpb25zIGFuZCBkZXZpY2UgaW5pdGlhbGl6YXRpb24gbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjRkZjNkMmU5YjJmM2MzNTg0OWY5MTg0NDkzMDg2OWUyYzZlYzg3ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTk6MjM6MjUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uZmQzYzk5M2E2N2IyYmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuKysrIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbkBAIC02Niw3ICs2Niw3IEBAIHN0cnVjdCBudWxsYl9wYWdlIHtcbiAjZGVmaW5lIE5VTExCX1BBR0VfRlJFRSAoTUFQX1NaIC0gMilcbiBcbiBzdGF0aWMgTElTVF9IRUFEKG51bGxiX2xpc3QpO1xuLXN0YXRpYyBzdHJ1Y3QgbXV0ZXggbG9jaztcbitzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spO1xuIHN0YXRpYyBpbnQgbnVsbF9tYWpvcjtcbiBzdGF0aWMgREVGSU5FX0lEQShudWxsYl9pbmRleGVzKTtcbiBzdGF0aWMgc3RydWN0IGJsa19tcV90YWdfc2V0IHRhZ19zZXQ7XG5AQCAtMzQ2LDcgKzM0Niw3IEBAIHN0YXRpYyBzc2l6ZV90XHRcdFx0XHRcdFx0XHRcdFxcXG4gbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVx0XFxcbiB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdHJldHVybiBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zaG93KFx0XHRcdFx0XFxcbi1cdFx0XHRcdHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2VOQU1FLCBwYWdlKTtcdFxcXG4rXHRcdFx0UkVBRF9PTkNFKHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2VOQU1FKSwgcGFnZSk7XHRcXFxuIH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuIHN0YXRpYyBzc2l6ZV90XHRcdFx0XHRcdFx0XHRcdFxcXG4gbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcdFxcXG5AQCAtMzYwLDEzICszNjAsMTYgQEAgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcdFxcXG4gXHRyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zdG9yZShcdTAwMjZuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcXFxuIFx0aWYgKHJldCBcdTAwM2MgMClcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XFxcbitcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbiBcdGlmIChhcHBseV9mbilcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldCA9IGFwcGx5X2ZuKGRldiwgbmV3X3ZhbHVlKTtcdFx0XHRcdFxcXG4gXHRlbHNlIGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkgXHRcXFxuIFx0XHRyZXQgPSAtRUJVU1k7XHRcdFx0XHRcdFx0XFxcbitcdGlmICghcmV0KVx0XHRcdFx0XHRcdFx0XFxcbitcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlTkFNRSwgbmV3X3ZhbHVlKTtcdFx0XHRcXFxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1x0XHRcdFx0XHRcdFxcXG4gXHRpZiAocmV0IFx1MDAzYyAwKVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0cmV0dXJuIHJldDtcdFx0XHRcdFx0XHRcXFxuLVx0ZGV2LVx1MDAzZU5BTUUgPSBuZXdfdmFsdWU7XHRcdFx0XHRcdFx0XFxcbiBcdHJldHVybiBjb3VudDtcdFx0XHRcdFx0XHRcdFxcXG4gfVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gQ09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBOQU1FKTtcbkBAIC00MDEsOCArNDA0LDggQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdCAqL1xuIFx0ZGV2LVx1MDAzZXByZXZfc3VibWl0X3F1ZXVlcyA9IGRldi1cdTAwM2VzdWJtaXRfcXVldWVzO1xuIFx0ZGV2LVx1MDAzZXByZXZfcG9sbF9xdWV1ZXMgPSBkZXYtXHUwMDNlcG9sbF9xdWV1ZXM7XG4tXHRkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcyA9IHN1Ym1pdF9xdWV1ZXM7XG4tXHRkZXYtXHUwMDNlcG9sbF9xdWV1ZXMgPSBwb2xsX3F1ZXVlcztcbitcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHN1Ym1pdF9xdWV1ZXMpO1xuK1x0V1JJVEVfT05DRShkZXYtXHUwMDNlcG9sbF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcbiBcbiBcdHNldCA9IGRldi1cdTAwM2VudWxsYi1cdTAwM2V0YWdfc2V0O1xuIFx0bnJfaHdfcXVldWVzID0gc3VibWl0X3F1ZXVlcyArIHBvbGxfcXVldWVzO1xuQEAgLTQxMSw4ICs0MTQsOCBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFxuIFx0aWYgKHJldCkge1xuIFx0XHQvKiBvbiBlcnJvciwgcmV2ZXJ0IHRoZSBxdWV1ZSBudW1iZXJzICovXG4tXHRcdGRldi1cdTAwM2VzdWJtaXRfcXVldWVzID0gZGV2LVx1MDAzZXByZXZfc3VibWl0X3F1ZXVlcztcbi1cdFx0ZGV2LVx1MDAzZXBvbGxfcXVldWVzID0gZGV2LVx1MDAzZXByZXZfcG9sbF9xdWV1ZXM7XG4rXHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIGRldi1cdTAwM2VwcmV2X3N1Ym1pdF9xdWV1ZXMpO1xuK1x0XHRXUklURV9PTkNFKGRldi1cdTAwM2Vwb2xsX3F1ZXVlcywgZGV2LVx1MDAzZXByZXZfcG9sbF9xdWV1ZXMpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIHJldDtcbkBAIC00MjEsMjUgKzQyNCwxMyBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBzdWJtaXRfcXVldWVzKVxuIHtcbi1cdGludCByZXQ7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuLVx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4tXG4tXHRyZXR1cm4gcmV0O1xuK1x0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXHUwMDNlcG9sbF9xdWV1ZXMpO1xuIH1cbiBcbiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgIHVuc2lnbmVkIGludCBwb2xsX3F1ZXVlcylcbiB7XG4tXHRpbnQgcmV0O1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbi1cdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuLVxuLVx0cmV0dXJuIHJldDtcbitcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcbiB9XG4gXG4gTlVMTEJfREVWSUNFX0FUVFIoc2l6ZSwgdWxvbmcsIE5VTEwpO1xuQEAgLTQ3OCw3ICs0NjksOCBAQCBOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7XG4gXG4gc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxuIHtcbi1cdHJldHVybiBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3codG9fbnVsbGJfZGV2aWNlKGl0ZW0pLVx1MDAzZXBvd2VyLCBwYWdlKTtcbitcdHJldHVybiBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3coXG4rXHRcdFx0UkVBRF9PTkNFKHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2Vwb3dlciksIHBhZ2UpO1xuIH1cbiBcbiBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuQEAgLTUwNSwxMSArNDk3LDExIEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG4gXHRcdH1cbiBcbiBcdFx0c2V0X2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKTtcbi1cdFx0ZGV2LVx1MDAzZXBvd2VyID0gbmV3cDtcbitcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlcG93ZXIsIG5ld3ApO1xuIFx0XHRyZXQgPSBjb3VudDtcbiBcdH0gZWxzZSBpZiAoZGV2LVx1MDAzZXBvd2VyIFx1MDAyNlx1MDAyNiAhbmV3cCkge1xuIFx0XHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkge1xuLVx0XHRcdGRldi1cdTAwM2Vwb3dlciA9IG5ld3A7XG4rXHRcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlcG93ZXIsIG5ld3ApO1xuIFx0XHRcdG51bGxfZGVsX2RldihkZXYtXHUwMDNlbnVsbGIpO1xuIFx0XHR9XG4gXHRcdGNsZWFyX2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKTtcbkBAIC0xNzkyLDEzICsxNzg0LDEzIEBAIHN0YXRpYyB2b2lkIG51bGxfY29uZmlnX2Rpc2NhcmQoc3RydWN0IG51bGxiICpudWxsYiwgc3RydWN0IHF1ZXVlX2xpbWl0cyAqbGltKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRpZiAoIW51bGxiLVx1MDAzZWRldi1cdTAwM2VtZW1vcnlfYmFja2VkKSB7XG4tXHRcdG51bGxiLVx1MDAzZWRldi1cdTAwM2VkaXNjYXJkID0gZmFsc2U7XG4rXHRcdFdSSVRFX09OQ0UobnVsbGItXHUwMDNlZGV2LVx1MDAzZWRpc2NhcmQsIGZhbHNlKTtcbiBcdFx0cHJfaW5mbyhcImRpc2NhcmQgb3B0aW9uIGlzIGlnbm9yZWQgd2l0aG91dCBtZW1vcnkgYmFja2luZ1xcblwiKTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuIFx0aWYgKG51bGxiLVx1MDAzZWRldi1cdTAwM2V6b25lZCkge1xuLVx0XHRudWxsYi1cdTAwM2VkZXYtXHUwMDNlZGlzY2FyZCA9IGZhbHNlO1xuK1x0XHRXUklURV9PTkNFKG51bGxiLVx1MDAzZWRldi1cdTAwM2VkaXNjYXJkLCBmYWxzZSk7XG4gXHRcdHByX2luZm8oXCJkaXNjYXJkIG9wdGlvbiBpcyBpZ25vcmVkIGluIHpvbmVkIG1vZGVcXG5cIik7XG4gXHRcdHJldHVybjtcbiBcdH1cbkBAIC0xODkwLDMxICsxODgyLDMxIEBAIHN0YXRpYyBpbnQgbnVsbF92YWxpZGF0ZV9jb25mKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbiBcdH1cbiBcdGlmIChkZXYtXHUwMDNlcXVldWVfbW9kZSA9PSBOVUxMX1FfQklPKSB7XG4gXHRcdHByX2VycihcIkJJTy1iYXNlZCBJTyBwYXRoIGlzIG5vIGxvbmdlciBhdmFpbGFibGUsIHVzaW5nIGJsay1tcSBpbnN0ZWFkLlxcblwiKTtcbi1cdFx0ZGV2LVx1MDAzZXF1ZXVlX21vZGUgPSBOVUxMX1FfTVE7XG4rXHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZXF1ZXVlX21vZGUsIE5VTExfUV9NUSk7XG4gXHR9XG4gXG4gXHRpZiAoZGV2LVx1MDAzZXVzZV9wZXJfbm9kZV9oY3R4KSB7XG4gXHRcdGlmIChkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcyAhPSBucl9vbmxpbmVfbm9kZXMpXG4tXHRcdFx0ZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMgPSBucl9vbmxpbmVfbm9kZXM7XG4rXHRcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgbnJfb25saW5lX25vZGVzKTtcbiBcdH0gZWxzZSBpZiAoZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMgXHUwMDNlIG5yX2NwdV9pZHMpXG4tXHRcdGRldi1cdTAwM2VzdWJtaXRfcXVldWVzID0gbnJfY3B1X2lkcztcbitcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgbnJfY3B1X2lkcyk7XG4gXHRlbHNlIGlmIChkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcyA9PSAwKVxuLVx0XHRkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcyA9IDE7XG4rXHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIDEpO1xuIFx0ZGV2LVx1MDAzZXByZXZfc3VibWl0X3F1ZXVlcyA9IGRldi1cdTAwM2VzdWJtaXRfcXVldWVzO1xuIFxuIFx0aWYgKGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyBcdTAwM2UgZ19wb2xsX3F1ZXVlcylcbi1cdFx0ZGV2LVx1MDAzZXBvbGxfcXVldWVzID0gZ19wb2xsX3F1ZXVlcztcbitcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlcG9sbF9xdWV1ZXMsIGdfcG9sbF9xdWV1ZXMpO1xuIFx0ZGV2LVx1MDAzZXByZXZfcG9sbF9xdWV1ZXMgPSBkZXYtXHUwMDNlcG9sbF9xdWV1ZXM7XG4tXHRkZXYtXHUwMDNlaXJxbW9kZSA9IG1pbl90KHVuc2lnbmVkIGludCwgZGV2LVx1MDAzZWlycW1vZGUsIE5VTExfSVJRX1RJTUVSKTtcbitcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZWlycW1vZGUsIG1pbl90KHVuc2lnbmVkIGludCwgZGV2LVx1MDAzZWlycW1vZGUsIE5VTExfSVJRX1RJTUVSKSk7XG4gXG4gXHQvKiBEbyBtZW1vcnkgYWxsb2NhdGlvbiwgc28gc2V0IGJsb2NraW5nICovXG4gXHRpZiAoZGV2LVx1MDAzZW1lbW9yeV9iYWNrZWQpXG4tXHRcdGRldi1cdTAwM2VibG9ja2luZyA9IHRydWU7XG4rXHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZWJsb2NraW5nLCB0cnVlKTtcbiBcdGVsc2UgLyogY2FjaGUgaXMgbWVhbmluZ2xlc3MgKi9cbi1cdFx0ZGV2LVx1MDAzZWNhY2hlX3NpemUgPSAwO1xuLVx0ZGV2LVx1MDAzZWNhY2hlX3NpemUgPSBtaW5fdCh1bnNpZ25lZCBsb25nLCBVTE9OR19NQVggLyAxMDI0IC8gMTAyNCxcbi1cdFx0XHRcdFx0XHRkZXYtXHUwMDNlY2FjaGVfc2l6ZSk7XG4tXHRkZXYtXHUwMDNlbWJwcyA9IG1pbl90KHVuc2lnbmVkIGludCwgMTAyNCAqIDQwLCBkZXYtXHUwMDNlbWJwcyk7XG4rXHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZWNhY2hlX3NpemUsIDApO1xuK1x0V1JJVEVfT05DRShkZXYtXHUwMDNlY2FjaGVfc2l6ZSwgbWluX3QodW5zaWduZWQgbG9uZywgVUxPTkdfTUFYIC8gMTAyNCAvIDEwMjQsXG4rXHRcdFx0XHRcdCAgZGV2LVx1MDAzZWNhY2hlX3NpemUpKTtcbitcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZW1icHMsIG1pbl90KHVuc2lnbmVkIGludCwgMTAyNCAqIDQwLCBkZXYtXHUwMDNlbWJwcykpO1xuIFxuIFx0aWYgKGRldi1cdTAwM2V6b25lZCBcdTAwMjZcdTAwMjZcbiBcdCAgICAoIWRldi1cdTAwM2V6b25lX3NpemUgfHwgIWlzX3Bvd2VyX29mXzIoZGV2LVx1MDAzZXpvbmVfc2l6ZSkpKSB7XG5AQCAtMjAyNCw3ICsyMDE2LDcgQEAgc3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuIFx0XHRnb3RvIG91dF9jbGVhbnVwX2Rpc2s7XG4gXG4gXHRudWxsYi1cdTAwM2VpbmRleCA9IHJ2O1xuLVx0ZGV2LVx1MDAzZWluZGV4ID0gcnY7XG4rXHRXUklURV9PTkNFKGRldi1cdTAwM2VpbmRleCwgcnYpO1xuIFxuIFx0aWYgKGNvbmZpZ19pdGVtX25hbWUoXHUwMDI2ZGV2LVx1MDAzZWdyb3VwLmNnX2l0ZW0pKSB7XG4gXHRcdC8qIFVzZSBjb25maWdmcyBkaXIgbmFtZSBhcyB0aGUgZGV2aWNlIG5hbWUgKi9cbkBAIC0yMTYyLDE3ICsyMTU0LDkgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRjb25maWdfZ3JvdXBfaW5pdChcdTAwMjZudWxsYl9zdWJzeXMuc3VfZ3JvdXApO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZudWxsYl9zdWJzeXMuc3VfbXV0ZXgpO1xuIFxuLVx0cmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNm51bGxiX3N1YnN5cyk7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0bXV0ZXhfaW5pdChcdTAwMjZsb2NrKTtcbi1cbiBcdG51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgXCJudWxsYlwiKTtcbi1cdGlmIChudWxsX21ham9yIFx1MDAzYyAwKSB7XG4tXHRcdHJldCA9IG51bGxfbWFqb3I7XG4tXHRcdGdvdG8gZXJyX2NvbmY7XG4tXHR9XG4rXHRpZiAobnVsbF9tYWpvciBcdTAwM2MgMClcbitcdFx0cmV0dXJuIG51bGxfbWFqb3I7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9kZXZpY2VzOyBpKyspIHtcbiBcdFx0cmV0ID0gbnVsbF9jcmVhdGVfZGV2KCk7XG5AQCAtMjE4MCw2ICsyMTY0LDEwIEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxuIFx0XHRcdGdvdG8gZXJyX2RldjtcbiBcdH1cbiBcbitcdHJldCA9IGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuK1x0aWYgKHJldClcbitcdFx0Z290byBlcnJfZGV2O1xuK1xuIFx0cHJfaW5mbyhcIm1vZHVsZSBsb2FkZWRcXG5cIik7XG4gXHRyZXR1cm4gMDtcbiBcbkBAIC0yMTg5LDggKzIxNzcsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbiBcdFx0bnVsbF9kZXN0cm95X2RldihudWxsYik7XG4gXHR9XG4gXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcIm51bGxiXCIpO1xuLWVycl9jb25mOlxuLVx0Y29uZmlnZnNfdW5yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbitcdGlmICh0YWdfc2V0Lm9wcylcbitcdFx0YmxrX21xX2ZyZWVfdGFnX3NldChcdTAwMjZ0YWdfc2V0KTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTIyMDAsOCArMjE4OCw2IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZClcbiBcbiBcdGNvbmZpZ2ZzX3VucmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNm51bGxiX3N1YnN5cyk7XG4gXG4tXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcIm51bGxiXCIpO1xuLVxuIFx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbiBcdHdoaWxlICghbGlzdF9lbXB0eShcdTAwMjZudWxsYl9saXN0KSkge1xuIFx0XHRudWxsYiA9IGxpc3RfZW50cnkobnVsbGJfbGlzdC5uZXh0LCBzdHJ1Y3QgbnVsbGIsIGxpc3QpO1xuQEAgLTIyMDksNiArMjE5NSw4IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZClcbiBcdH1cbiBcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiBcbitcdHVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsIFwibnVsbGJcIik7XG4rXG4gXHRpZiAodGFnX3NldC5vcHMpXG4gXHRcdGJsa19tcV9mcmVlX3RhZ19zZXQoXHUwMDI2dGFnX3NldCk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jXG5pbmRleCAzODRiZGNlNmE5YjdmMy4uNzU2MTNlYWYzZWE5ZWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuY1xuQEAgLTY2LDcgKzY2LDcgQEAgaW50IG51bGxfaW5pdF96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0fVxuIFxuIFx0aWYgKCFkZXYtXHUwMDNlem9uZV9jYXBhY2l0eSlcbi1cdFx0ZGV2LVx1MDAzZXpvbmVfY2FwYWNpdHkgPSBkZXYtXHUwMDNlem9uZV9zaXplO1xuK1x0XHRXUklURV9PTkNFKGRldi1cdTAwM2V6b25lX2NhcGFjaXR5LCBkZXYtXHUwMDNlem9uZV9zaXplKTtcbiBcbiBcdGlmIChkZXYtXHUwMDNlem9uZV9jYXBhY2l0eSBcdTAwM2UgZGV2LVx1MDAzZXpvbmVfc2l6ZSkge1xuIFx0XHRwcl9lcnIoXCJ6b25lIGNhcGFjaXR5ICglbHUgTUIpIGxhcmdlciB0aGFuIHpvbmUgc2l6ZSAoJWx1IE1CKVxcblwiLFxuQEAgLTk5LDI5ICs5OSwyOSBAQCBpbnQgbnVsbF9pbml0X3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZkZXYtXHUwMDNlem9uZV9yZXNfbG9jayk7XG4gXG4gXHRpZiAoZGV2LVx1MDAzZXpvbmVfbnJfY29udiBcdTAwM2U9IGRldi1cdTAwM2Vucl96b25lcykge1xuLVx0XHRkZXYtXHUwMDNlem9uZV9ucl9jb252ID0gZGV2LVx1MDAzZW5yX3pvbmVzIC0gMTtcbitcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlem9uZV9ucl9jb252LCBkZXYtXHUwMDNlbnJfem9uZXMgLSAxKTtcbiBcdFx0cHJfaW5mbyhcImNoYW5nZWQgdGhlIG51bWJlciBvZiBjb252ZW50aW9uYWwgem9uZXMgdG8gJXVcIixcbiBcdFx0XHRkZXYtXHUwMDNlem9uZV9ucl9jb252KTtcbiBcdH1cbiBcbi1cdGRldi1cdTAwM2V6b25lX2FwcGVuZF9tYXhfc2VjdG9ycyA9XG4tXHRcdG1pbihBTElHTl9ET1dOKGRldi1cdTAwM2V6b25lX2FwcGVuZF9tYXhfc2VjdG9ycyxcbi1cdFx0XHQgICAgICAgZGV2LVx1MDAzZWJsb2Nrc2l6ZSBcdTAwM2VcdTAwM2UgU0VDVE9SX1NISUZUKSxcbi1cdFx0ICAgIHpvbmVfY2FwYWNpdHlfc2VjdHMpO1xuK1x0V1JJVEVfT05DRShkZXYtXHUwMDNlem9uZV9hcHBlbmRfbWF4X3NlY3RvcnMsXG4rXHRcdCAgIG1pbihBTElHTl9ET1dOKGRldi1cdTAwM2V6b25lX2FwcGVuZF9tYXhfc2VjdG9ycyxcbitcdFx0XHRcdCAgZGV2LVx1MDAzZWJsb2Nrc2l6ZSBcdTAwM2VcdTAwM2UgU0VDVE9SX1NISUZUKSxcbitcdFx0ICAgICAgIHpvbmVfY2FwYWNpdHlfc2VjdHMpKTtcbiBcbiBcdC8qIE1heCBhY3RpdmUgem9uZXMgaGFzIHRvIGJlIFx1MDAzYyBuYnIgb2Ygc2VxIHpvbmVzIGluIG9yZGVyIHRvIGJlIGVuZm9yY2VhYmxlICovXG4gXHRpZiAoZGV2LVx1MDAzZXpvbmVfbWF4X2FjdGl2ZSBcdTAwM2U9IGRldi1cdTAwM2Vucl96b25lcyAtIGRldi1cdTAwM2V6b25lX25yX2NvbnYpIHtcbi1cdFx0ZGV2LVx1MDAzZXpvbmVfbWF4X2FjdGl2ZSA9IDA7XG4rXHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZXpvbmVfbWF4X2FjdGl2ZSwgMCk7XG4gXHRcdHByX2luZm8oXCJ6b25lX21heF9hY3RpdmUgbGltaXQgZGlzYWJsZWQsIGxpbWl0IFx1MDAzZT0gem9uZSBjb3VudFxcblwiKTtcbiBcdH1cbiBcbiBcdC8qIE1heCBvcGVuIHpvbmVzIGhhcyB0byBiZSBcdTAwM2M9IG1heCBhY3RpdmUgem9uZXMgKi9cbiBcdGlmIChkZXYtXHUwMDNlem9uZV9tYXhfYWN0aXZlIFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNlem9uZV9tYXhfb3BlbiBcdTAwM2UgZGV2LVx1MDAzZXpvbmVfbWF4X2FjdGl2ZSkge1xuLVx0XHRkZXYtXHUwMDNlem9uZV9tYXhfb3BlbiA9IGRldi1cdTAwM2V6b25lX21heF9hY3RpdmU7XG4rXHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZXpvbmVfbWF4X29wZW4sIGRldi1cdTAwM2V6b25lX21heF9hY3RpdmUpO1xuIFx0XHRwcl9pbmZvKFwiY2hhbmdlZCB0aGUgbWF4aW11bSBudW1iZXIgb2Ygb3BlbiB6b25lcyB0byAldVxcblwiLFxuIFx0XHRcdGRldi1cdTAwM2V6b25lX21heF9vcGVuKTtcbiBcdH0gZWxzZSBpZiAoZGV2LVx1MDAzZXpvbmVfbWF4X29wZW4gXHUwMDNlPSBkZXYtXHUwMDNlbnJfem9uZXMgLSBkZXYtXHUwMDNlem9uZV9ucl9jb252KSB7XG4tXHRcdGRldi1cdTAwM2V6b25lX21heF9vcGVuID0gMDtcbitcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlem9uZV9tYXhfb3BlbiwgMCk7XG4gXHRcdHByX2luZm8oXCJ6b25lX21heF9vcGVuIGxpbWl0IGRpc2FibGVkLCBsaW1pdCBcdTAwM2U9IHpvbmUgY291bnRcXG5cIik7XG4gXHR9XG4gXHRkZXYtXHUwMDNlbmVlZF96b25lX3Jlc19tZ210ID0gZGV2LVx1MDAzZXpvbmVfbWF4X2FjdGl2ZSB8fCBkZXYtXHUwMDNlem9uZV9tYXhfb3BlbjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE5OjIzOjI3LjgxNzIzMTUwOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0ODEzNTc3NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGZWFzaWJpbGl0eSBvZiB0aGUgTnVsbCBCbG9jayBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGFmZmVjdGluZyBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgIGFuZCBgZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZXMgcmV2b2x2ZSBhcm91bmQgbWVtb3J5IGFjY2VzcyBzeW5jaHJvbml6YXRpb24gd2l0aCBgV1JJVEVfT05DRWAgYW5kIGBSRUFEX09OQ0VgLCBhbmQgc29tZSByZW9yZGVyaW5nIG9mIGluaXRpYWxpemF0aW9uIGFuZCBjbGVhbnVwIGNhbGxzIHdpdGhpbiB0aGUgZHJpdmVyIChzcGVjaWZpY2FsbHkgYGNvbmZpZ2ZzX3JlZ2lzdGVyL3VucmVnaXN0ZXJfc3Vic3lzdGVtYCBhbmQgYHJlZ2lzdGVyL3VucmVnaXN0ZXJfYmxrZGV2YCkuIFRoZXJlJ3MgYWxzbyBhIG1vZGlmaWNhdGlvbiBsb2NraW5nIGFyb3VuZCBhbiBlbnRpcmUgYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAgZnVuY3Rpb24sIGFuZCBhIGBERUZJTkVfTVVURVhgIGFkZGVkLlxuXG5UaGUgcXVlc3Rpb24gbm93IGlzLCBkb2VzIHRoaXMgd2FycmFudCBmdXp6aW5nPyBXZWxsLCB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBgbnVsbF9ibGtgIGRyaXZlci4gQ29uc2lkZXJpbmcgdGhhdCB0aGlzIGRyaXZlciBpcyBhIHZpcnR1YWwgYmxvY2sgZGV2aWNlLCBmcmVxdWVudGx5IHVzZWQgZm9yIHRlc3RpbmcgYW5kIGJlbmNobWFya2luZyB0aGUgYmxvY2sgbGF5ZXIsIGFuZCBpbnN0YW50aWF0ZWQgdGhyb3VnaCBlaXRoZXIgY29uZmlnZnMgb3IgbW9kdWxlIHBhcmFtZXRlcnMsIHRoZXJlIGlzIHNpZ25pZmljYW50IHBvdGVudGlhbC4gVGhlIGNoYW5nZXMgdGhlbXNlbHZlcyBhcmUgZXhwbGljaXRseSBhZGRyZXNzaW5nIGRhdGEgcmFjZXMgYnkgZW1wbG95aW5nIGBSRUFEX09OQ0VgL2BXUklURV9PTkNFYCBhbmQgYW4gZXh0ZW5kZWQgbXV0ZXggbG9jay4gVGhlIG1vZHVsZSBpbml0L2V4aXQgb3JkZXJpbmcgZml4ZXMgc2hvdWxkIGFsc28gZWxpbWluYXRlIGEgc291cmNlIG9mIGlzc3VlcywgYW5kIHRoZXJlZm9yZSB0aGUgY29kZSBpcyBpbmRlZWQgZnVuY3Rpb25hbC5cblxuQ2FuIHdlIHJlYWNoIHRoaXMgZnVuY3Rpb25hbGl0eSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBBYnNvbHV0ZWx5LiBBcyBhIHNvZnR3YXJlLWVtdWxhdGVkIGJsb2NrIGRldmljZSwgYG51bGxfYmxrYCBpcyBkZXNpZ25lZCB0byBydW4gYW55d2hlcmUgdGhlIGtlcm5lbCBydW5zLCBzbyB0aGVyZSBhcmUgbm8gZW52aXJvbm1lbnRhbCBjb25zdHJhaW50cy5cblxuVGhlIG5leHQgc3RlcCBpcyB0byBjb25maXJtIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9uLiBXZSBuZWVkIGBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS2AgZW5hYmxlZC4gTGV0J3MgdmVyaWZ5IHRoYXQgcXVpY2tseSB3aXRoIGBncmVwcGVyYCBhbmQgbW92ZSBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzYzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTk6MjM6MzQuMjk4NTkyMjk3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0NDI2ODkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJMS19ERVZfTlVMTF9CTEtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9NYWtlZmlsZT0zNT1vYmotJChDT05GSUdfQkxLX0RFVl9STkJEKVxcdCs9IHJuYmQvXFxuZHJpdmVycy9ibG9jay9NYWtlZmlsZS0zNi1cXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVxcdCs9IG51bGxfYmxrL1xcbmRyaXZlcnMvYmxvY2svTWFrZWZpbGUtMzgtb2JqLSQoQ09ORklHX0JMS19ERVZfUlVTVF9OVUxMKSArPSBybnVsbC9cXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzo2OmNvbmZpZyBCTEtfREVWX05VTExfQkxLXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctOS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6MTA6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVxcdGJvb2wgXFxcIlN1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzoxMjpcXHRkZXBlbmRzIG9uIEJMS19ERVZfTlVMTF9CTEsgXFx1MDAyNlxcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL01ha2VmaWxlPTQ9Y2NmbGFncy15XFx0XFx0XFx0Kz0gLUkkKHNyYylcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL01ha2VmaWxlLTUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVxcdCs9IG51bGxfYmxrLm9cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL01ha2VmaWxlLTctbnVsbF9ibGstb2Jqc1xcdFxcdFxcdDo9IG1haW4ub1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjI6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIzLXN0YXRpYyBERUNMQVJFX0ZBVUxUX0FUVFIobnVsbF90aW1lb3V0X2F0dHIpO1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9OTg9TU9EVUxFX1BBUk1fREVTQyhob21lX25vZGUsIFxcXCJIb21lIG5vZGUgZm9yIHRoZSBkZXZpY2VcXFwiKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05OS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMDA6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEwMS0vKlxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NjQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uZmlnX2l0ZW1fdHlwZSBudWxsYl9kZXZpY2VfdHlwZSA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY0Ni1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2NDc6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY0OC1cXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTc2OT1zdGF0aWMgc3RydWN0IG51bGxiX2RldmljZSAqbnVsbF9hbGxvY19kZXYodm9pZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc3Ni1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo3Nzc6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc3OC1cXHRkZXYtXFx1MDAzZXRpbWVvdXRfY29uZmlnLmF0dHIgPSBudWxsX3RpbWVvdXRfYXR0cjtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE0NzY9c3RhdGljIHZvaWQgbnVsbGJfc2V0dXBfYnd0aW1lcihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQ4NC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNDg1OiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNDg2LVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTg3Nz1zdGF0aWMgaW50IG51bGxfdmFsaWRhdGVfY29uZihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTE5LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE5MjA6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5MjEtc3RhdGljIGJvb2wgX19udWxsX3NldHVwX2ZhdWx0KHN0cnVjdCBmYXVsdF9hdHRyICphdHRyLCBjaGFyICpzdHIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xOTM0PXN0YXRpYyBib29sIG51bGxfc2V0dXBfZmF1bHQodm9pZClcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTM1LXtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxOTM2OiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTM3LVxcdGlmICghX19udWxsX3NldHVwX2ZhdWx0KFxcdTAwMjZudWxsX3RpbWVvdXRfYXR0ciwgZ190aW1lb3V0X3N0cikpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmg9NTM9c3RydWN0IG51bGxiX2RldmljZSB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmgtNTUtXFx0c3RydWN0IGNvbmZpZ19ncm91cCBncm91cDtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmg6NTY6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC01Ny1cXHRzdHJ1Y3QgZmF1bHRfY29uZmlnIHRpbWVvdXRfY29uZmlnO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxOToyMzozNC4zODMwMzI1NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyMTYyNjcyNDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE51bGwgQmxvY2sgRGV2aWNlIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIHplcm9lZCBpbiBvbiB0aGUgYEJMS19ERVZfTlVMTF9CTEtgIGNvbmZpZ3VyYXRpb24g4oCTIHRoYXQncyBkZWZpbml0ZWx5IHRoZSBrZXkgdG8gdGhpcy4gTm93LCB0aGlzIHBhdGNoIGdvZXMgaW4gYW5kIHR3ZWFrcyBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGl0LiBTcGVjaWZpY2FsbHksIGl0J3MgbWVzc2luZyB3aXRoIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgLCB3aGljaCBpcyB0aGF0IG1hY3JvIGZvciBnZW5lcmF0aW5nIHN0b3JlIGZ1bmN0aW9ucyBpbiBjb25maWdmcywgYW5kIHRoZW4gaXQgdG91Y2hlcyBhIGJ1bmNoIG9mIG90aGVycy4gSSBzZWUgbW9kaWZpY2F0aW9ucyBpbiBgbnVsbF91cGRhdGVfbnJfaHdfcXVldWVzYCwgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgLCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3dgLCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgYG51bGxfY29uZmlnX2Rpc2NhcmRgLCBgbnVsbF92YWxpZGF0ZV9jb25mYCwgYG51bGxfYWRkX2RldmAsIGBudWxsX2luaXRgLCBgbnVsbF9leGl0YCwgYW5kIGBudWxsX2luaXRfem9uZWRfZGV2YC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IHRoZSBtb3N0IHByb21pc2luZyBmdW5jdGlvbnMgZm9yIGZ1enppbmcuIEknbSB0aGlua2luZyB0aGF0IEkgd2FudCB0byB0YXJnZXQgYXJlYXMgd2hlcmUgZXh0ZXJuYWwgaW5wdXQgY2FuIGJlIHByb2Nlc3NlZCBhbmQgdGhhdCBjb3VsZCBsZWFkIHRvIHNvbWV0aGluZyBpbnRlcmVzdGluZy4gQmFzZWQgb24gYSBxdWljayBza2ltLCBJJ20gdGhpbmtpbmcgdGhhdCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgLCBgbnVsbF92YWxpZGF0ZV9jb25mYCwgYG51bGxfYWRkX2RldmAsIGFuZCBgbnVsbF9pbml0X3pvbmVkX2RldmAgYXJlIGZ1bmN0aW9ucyB0byBmb2N1cyBvbi5cblxuQnV0LCBJIHNob3VsZCBwcm9iYWJseSB0YWtlIGEgbW9tZW50IHRvIGRvdWJsZS1jaGVjayBteSB3b3JrLiBKdXN0IHRvIGJlIHN1cmUsIEknbSBnb2luZyB0byBzY2FuIHRoZSBjb2RlIGFnYWluIHRvIHNlZSBpZiBJIG1pc3NlZCBhbnkgb3RoZXIgcHJvbWlzaW5nIHRhcmdldHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3MDMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTk6MjM6NTYuNTQ1NzA4MzU2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3Nzg0MzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm51bGxiX2RldmljZV8uKl9zdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yOTY9c3RhdGljIGlubGluZSBzc2l6ZV90IG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyhib29sIHZhbCwgY2hhciAqcGFnZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTMwMC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozMDE6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3VpbnRfYXR0cl9zdG9yZSh1bnNpZ25lZCBpbnQgKnZhbCxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zMDItXFx0Y29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzE0LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjMxNTpzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfdWxvbmdfYXR0cl9zdG9yZSh1bnNpZ25lZCBsb25nICp2YWwsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzE2LVxcdGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTMyOC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozMjk6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzMwLVxcdHNpemVfdCBjb3VudClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTM1MT1zdGF0aWMgc3NpemVfdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozNTI6bnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcXHRcXFxcXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzUzLVxcdFxcdFxcdCAgICBzaXplX3QgY291bnQpXFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzU5LVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozNjA6XFx0cmV0ID0gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc3RvcmUoXFx1MDAyNm5ld192YWx1ZSwgcGFnZSwgY291bnQpO1xcXFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNjEtXFx0aWYgKHJldCBcXHUwMDNjIDApXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDcwPXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ3NS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzY6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NzctXFx0XFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00ODItXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDgzOlxcdHJldCA9IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoXFx1MDAyNm5ld3AsIHBhZ2UsIGNvdW50KTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00ODQtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz01MTc9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTUyMy1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1MjQ6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTI1LVxcdFxcdFxcdFxcdCAgICAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NTY4PUNPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgYmFkYmxvY2tzKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01NjktXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTcwOnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01NzEtXFx0XFx0XFx0XFx0XFx0XFx0Y29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NTc3PUNPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9yZWFkb25seSk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTc4LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjU3OTpzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01ODAtXFx0XFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTk6MjM6NTYuNjQzNTAzMTI5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM2MjMxNzMwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgU3l6a2FsbGVyJ3MgSW50ZXJhY3Rpb24gd2l0aCBEeW5hbWljYWxseSBHZW5lcmF0ZWQgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgYSBtYWNybywgYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAsIHdoaWNoIGlzIGdvaW5nIHRvIGdlbmVyYXRlIGZ1bmN0aW9ucyBsaWtlIGBudWxsYl9kZXZpY2Vfc2l6ZV9zdG9yZWAsIGBudWxsYl9kZXZpY2Vfc3VibWl0X3F1ZXVlc19zdG9yZWAsIGFuZCBzbyBvbi4gTXkgY29uY2VybiBpcyB0aGF0IFN5emthbGxlciBtaWdodCBoYXZlIHRyb3VibGUgdGFyZ2V0aW5nIHRoZXNlICpkeW5hbWljYWxseSogZ2VuZXJhdGVkIGZ1bmN0aW9ucyBkaXJlY3RseSBieSBuYW1lLiBUaGF0J3MgYSBjbGFzc2ljIHByb2JsZW0gd2l0aCBjb2RlIGdlbmVyYXRpb24sIGlzbid0IGl0P1xuXG5UaGUgc3RhbmRhcmQgYXBwcm9hY2ggaXMgdG8gZXhwbGljaXRseSBsaXN0IGFsbCBmdW5jdGlvbnMgc3l6a2FsbGVyIG5lZWRzIHRvIGhhdmUgYWNjZXNzIHRvLiBJIHNlZSBhIGZldyBmdW5jdGlvbnMgZGVmaW5lZCBvdXRzaWRlIHRoZSBtYWNybzogYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGFuZCB0aGUgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgLCBgbnVsbF92YWxpZGF0ZV9jb25mYCwgYG51bGxfYWRkX2RldmAsIGFuZCBgbnVsbF9pbml0X3pvbmVkX2RldmAuIFRoZXNlIGFyZSBlYXN5IHdpbnMhIFdlIGNhbiBkZWZpbml0ZWx5IGxpc3QgdGhvc2UuXG5cblNvLCBoZXJlJ3MgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRoYXQgd2Ugc2hvdWxkIGJlIGFibGUgdG8gbWFrZSB1c2Ugb2Y6XG4tIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgXG4tIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYFxuLSBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgXG4tIGBudWxsX3ZhbGlkYXRlX2NvbmZgXG4tIGBudWxsX2FkZF9kZXZgXG4tIGBudWxsX2luaXRfem9uZWRfZGV2YFxuXG5CdXQgd2FpdCwgaG9sZCBvbi4uLnRoYXQgYCMjTkFNRSMjYCBpbiB0aGUgbWFjcm8uLi4gdGhhdCdzIHRoZSBrZXkuIEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGF0KiBuYW1lcyB0aGF0IG1hY3JvIGlzIGdlbmVyYXRpbmcuIEkgY2FuJ3QgYmUgc3VyZSB0aGlzIGlzIGEgY29tcHJlaGVuc2l2ZSBsaXN0IHdpdGhvdXQga25vd2luZyB0aGUgb3V0cHV0cyBvZiB0aGF0IG1hY3JvLiBMZXQncyBzZWUgaWYgSSBjYW4gZmluZCBhbiBleGFtcGxlIHVzYWdlIG9mIHRoZSBtYWNybyB0byBkZXRlcm1pbmUgdGhlIGdlbmVyYXRlZCBmdW5jdGlvbiBuYW1lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTM3NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxOToyNDowMi4wMDU4MjQ0MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzA2Mzg5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJOVUxMQl9ERVZJQ0VfQVRUUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0zMjk9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNDMtLyogVGhlIGZvbGxvd2luZyBtYWNybyBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggVFlQRSA9IHt1aW50LCB1bG9uZywgYm9vbH0uICovXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzQ0OiNkZWZpbmUgTlVMTEJfREVWSUNFX0FUVFIoTkFNRSwgVFlQRSwgQVBQTFkpXFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM0NS1zdGF0aWMgc3NpemVfdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQzMD1zdGF0aWMgaW50IG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQzNS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0MzY6TlVMTEJfREVWSUNFX0FUVFIoc2l6ZSwgdWxvbmcsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQzNzpOVUxMQl9ERVZJQ0VfQVRUUihjb21wbGV0aW9uX25zZWMsIHVsb25nLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Mzg6TlVMTEJfREVWSUNFX0FUVFIoc3VibWl0X3F1ZXVlcywgdWludCwgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDM5Ok5VTExCX0RFVklDRV9BVFRSKHBvbGxfcXVldWVzLCB1aW50LCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQwOk5VTExCX0RFVklDRV9BVFRSKGhvbWVfbm9kZSwgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQxOk5VTExCX0RFVklDRV9BVFRSKHF1ZXVlX21vZGUsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0MjpOVUxMQl9ERVZJQ0VfQVRUUihibG9ja3NpemUsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0MzpOVUxMQl9ERVZJQ0VfQVRUUihtYXhfc2VjdG9ycywgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ0Ok5VTExCX0RFVklDRV9BVFRSKGlycW1vZGUsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0NTpOVUxMQl9ERVZJQ0VfQVRUUihod19xdWV1ZV9kZXB0aCwgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ2Ok5VTExCX0RFVklDRV9BVFRSKGluZGV4LCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NDc6TlVMTEJfREVWSUNFX0FUVFIoYmxvY2tpbmcsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0ODpOVUxMQl9ERVZJQ0VfQVRUUih1c2VfcGVyX25vZGVfaGN0eCwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ5Ok5VTExCX0RFVklDRV9BVFRSKG1lbW9yeV9iYWNrZWQsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1MDpOVUxMQl9ERVZJQ0VfQVRUUihkaXNjYXJkLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTE6TlVMTEJfREVWSUNFX0FUVFIobWJwcywgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDUyOk5VTExCX0RFVklDRV9BVFRSKGNhY2hlX3NpemUsIHVsb25nLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTM6TlVMTEJfREVWSUNFX0FUVFIoem9uZWQsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NDpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX3NpemUsIHVsb25nLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTU6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9jYXBhY2l0eSwgdWxvbmcsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NjpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX25yX2NvbnYsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NzpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX21heF9vcGVuLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTg6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9tYXhfYWN0aXZlLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTk6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9hcHBlbmRfbWF4X3NlY3RvcnMsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MDpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX2Z1bGwsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MTpOVUxMQl9ERVZJQ0VfQVRUUih2aXJ0X2JvdW5kYXJ5LCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjI6TlVMTEJfREVWSUNFX0FUVFIobm9fc2NoZWQsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MzpOVUxMQl9ERVZJQ0VfQVRUUihzaGFyZWRfdGFncywgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY0Ok5VTExCX0RFVklDRV9BVFRSKHNoYXJlZF90YWdfYml0bWFwLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjU6TlVMTEJfREVWSUNFX0FUVFIoZnVhLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjY6TlVMTEJfREVWSUNFX0FUVFIocm90YXRpb25hbCwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY3Ok5VTExCX0RFVklDRV9BVFRSKGJhZGJsb2Nrc19vbmNlLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Njg6TlVMTEJfREVWSUNFX0FUVFIoYmFkYmxvY2tzX3BhcnRpYWxfaW8sIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ2OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTk6MjQ6MDIuMDY4OTIwOTY3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjczNjk3NjA3ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBDb2RlKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgbnVsbCBibG9jayBkZXZpY2UgY29kZSBhbmQgcGlucG9pbnRpbmcgc29tZSBrZXkgYXJlYXMuIFRoZSBwYXRjaCBpcyBjbGVhcmx5IHRvdWNoaW5nIHRoZSBgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlYCBmdW5jdGlvbnMsIHdoaWNoIGFyZSBnZW5lcmF0ZWQgZm9yIHZhcmlvdXMgYXR0cmlidXRlcy4gTXkgaW5pdGlhbCBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB0aGVzZSBzcGVjaWZpYyBzeW1ib2xzOiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgYG51bGxfdmFsaWRhdGVfY29uZmAsIGBudWxsX2FkZF9kZXZgLCBgbnVsbF9pbml0X3pvbmVkX2RldmAsIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCwgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AuIFRoZXNlIHNlZW0gbGlrZSBleGNlbGxlbnQgc3RhcnRpbmcgcG9pbnRzIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZXMgYW5kIHRoZWlyIGltcGFjdC5cblxuTm93LCBJIG5lZWQgdG8gY29uc2lkZXIgYW55IHBvdGVudGlhbCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gVGhlIGluY2x1c2lvbiBvZiBgbnVsbF9pbml0X3pvbmVkX2RldmAgcmFpc2VzIGEgcmVkIGZsYWcgcmVnYXJkaW5nIHpvbmVkIGJsb2NrIGRldmljZXMuIEkgc3VzcGVjdCB0aGF0IGBDT05GSUdfQkxLX0RFVl9aT05FRGAgbWlnaHQgYmUgcmVxdWlyZWQgZm9yIHRoYXQgZnVuY3Rpb24gdG8gb3BlcmF0ZSBjb3JyZWN0bHkuIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBgZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jYCBmaWxlIHRvIGNvbmZpcm0uIFVuZGVyc3RhbmRpbmcgdGhpcyBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50IHdpbGwgYmUgY3J1Y2lhbCBmb3IgdGhlIG92ZXJhbGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEzNDgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTk6MjQ6MjkuNDM4Njk1ODEyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDYyNjkwMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnVsbF9pbml0X3pvbmVkX2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xOTQ3PXN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5ODQtXFx0aWYgKGRldi1cXHUwMDNlem9uZWQpIHtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxOTg1OlxcdFxcdHJ2ID0gbnVsbF9pbml0X3pvbmVkX2RldihkZXYsIFxcdTAwMjZsaW0pO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5ODYtXFx0XFx0aWYgKHJ2KVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oPTEzOD1ibGtfc3RhdHVzX3QgbnVsbF9oYW5kbGVfbWVtb3J5X2JhY2tlZChzdHJ1Y3QgbnVsbGJfY21kICpjbWQsIGVudW0gcmVxX29wIG9wLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE0MS0jaWZkZWYgQ09ORklHX0JMS19ERVZfWk9ORURcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmg6MTQyOmludCBudWxsX2luaXRfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwgc3RydWN0IHF1ZXVlX2xpbWl0cyAqbGltKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmgtMTQzLWludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNTI9c3NpemVfdCB6b25lX2NvbmRfc3RvcmUoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LCBjb25zdCBjaGFyICpwYWdlLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE1NC0jZWxzZVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNTU6c3RhdGljIGlubGluZSBpbnQgbnVsbF9pbml0X3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE1Ni1cXHRcXHRzdHJ1Y3QgcXVldWVfbGltaXRzICpsaW0pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM9NDI9c3RhdGljIGlubGluZSB2b2lkIG51bGxfdW5sb2NrX3pvbmUoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jLTUwLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYzo1MTppbnQgbnVsbF9pbml0X3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jLTUyLVxcdFxcdFxcdHN0cnVjdCBxdWV1ZV9saW1pdHMgKmxpbSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTk6MjQ6MjkuODg0OTgwNjQ2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MzA2MTIzMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uZmlndXJhdGlvbiBEZWNpc2lvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgdGhpcyBzdHJhaWdodC4gV2UgZGVmaW5pdGVseSBuZWVkIGBDT05GSUdfQkxLX0RFVl9aT05FRGAuIFNvLCB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QgbmVlZHMgdG8gaW5jbHVkZSBgQkxLX0RFVl9OVUxMX0JMS2AgYW5kIGBCTEtfREVWX1pPTkVEYC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLlxuXG5Ob3csIEkgbmVlZCB0byB2ZXJpZnkgd2hldGhlciBvciBub3QgYENPTkZJR19DT05GSUdGU19GU2AgaXMgcmVxdWlyZWQuIFRoZSBjb2RlIGZvciBgbnVsbF9ibGtgIGluZGljYXRlcyB0aGF0IGl0IHVzZXMgY29uZmlnZnMsIHNvIEkgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IHRoZSBhbnN3ZXIgYnkgY2hlY2tpbmcgdGhlIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdgIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjg4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTk6MjQ6MzMuODE1NTk3OTE5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjkxMzk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9OVUxMX0JMS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6Njpjb25maWcgQkxLX0RFVl9OVUxMX0JMS1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTktXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjEwOmNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy0xMS1cXHRib29sIFxcXCJTdXBwb3J0IGZhdWx0IGluamVjdGlvbiBmb3IgTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTk6MjQ6MzMuODg4NTI1OTk5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwOTI0MDYxODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUgaW1tZXJzZWQgaW4gdGhpcyBjb2RlOlxuXG4qKlVucmF2ZWxpbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgQkxLX0RFVl9OVUxMX0JMS2AqKlxuXG5SaWdodCwgbGV0IG1lIHBhdXNlIGFuZCB0aGluayB0aGlzIHRocm91Z2guIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCBgQkxLX0RFVl9OVUxMX0JMS2AgYWN0dWFsbHkgKmRvZXMqLiBCZWZvcmUgSSBkaXZlIGludG8gaXRzIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHksIEkgaGF2ZSB0byB0cmFjZSBpdHMgZGVwZW5kZW5jaWVzLiBXaGVyZSBkb2VzIHRoaXMgY29uc3RhbnQgc2hvdyB1cD8gV2hhdCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIHJlbHkgb24gaXQ/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBtb2R1bGVzIHRoYXQgYXJlIHRpZ2h0bHkgY291cGxlZCB0byBpdHMgdmFsdWUgb3IgcHVycG9zZT8gVGhpcyBjb3VsZCBpbnZvbHZlIGxvb2tpbmcgYXQgYCNkZWZpbmVgIHN0YXRlbWVudHMsIG1hY3JvIGV4cGFuc2lvbnMsIGFuZCBjcm9zcy1yZWZlcmVuY2VzIHdpdGhpbiB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzIGFuZCBzb3VyY2UgY29kZS4gVW5kZXJzdGFuZGluZyB0aG9zZSByZWxhdGlvbnNoaXBzIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgb3ZlcmFsbCByb2xlIGluIHRoaXMgYXJlYS4gSXQncyB0aGUgb25seSB3YXkgdG8gYXZvaWQgbWFraW5nIGNoYW5nZXMgdGhhdCBoYXZlIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIGVsc2V3aGVyZSBpbiB0aGUgY29kZS4gSSBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbWFwIG9mIGl0cyBjb25uZWN0aW9ucyBiZWZvcmUgY29udGludWluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI2ODMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxOToyNDozNi45ODA5Mzk1OThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTnVsbCBibG9jayBkZXZpY2UgZHJpdmVyIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IENPTkZJR0ZTX0ZTXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbiAgMTE6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIEJMS19ERVZfTlVMTF9CTEsgXFx1MDAyNlxcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE5OjI0OjM2Ljk4MTA4Nzg5OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjMyNjczNTQ5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipOdWxsIEJsb2NrIERyaXZlciBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSdtIHB1dHRpbmcgdG9nZXRoZXIgYSBmdXp6aW5nIHBsYW4gZm9yIHRoaXMgbnVsbF9ibGsgZHJpdmVyIHBhdGNoLiBUaGUgZmlyc3QgdGhpbmcgdG8gcmVtZW1iZXIgaXMgdGhhdCBgQ09ORklHRlNfRlNgIGlzIGF1dG9tYXRpY2FsbHkgcHVsbGVkIGluIGJ5IGBCTEtfREVWX05VTExfQkxLYCwgc28gSSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IGxpc3RpbmcgaXQgZXhwbGljaXRseS4gVGhhdCBzYXZlcyBhIHN0ZXAuXG5cbkFscmlnaHQsIGxldCdzIHN1bW1hcml6ZSB0aGUga2V5IHBvaW50cyBoZXJlOiB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlc2Ugc3ltYm9sczogYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCwgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYCwgYG51bGxfdmFsaWRhdGVfY29uZmAsIGBudWxsX2FkZF9kZXZgLCBhbmQgYG51bGxfaW5pdF96b25lZF9kZXZgLlxuXG5JJ20gZW5hYmxpbmcgdGhlc2UgY29uZmlnIG9wdGlvbnM6IGBCTEtfREVWX05VTExfQkxLYCBhbmQgYEJMS19ERVZfWk9ORURgLCBiZWNhdXNlIHRoaXMgZHJpdmVyIGlzIHNvZnR3YXJlLWVtdWxhdGVkLCBtYWtpbmcgaXQgaWRlYWwgZm9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYW5kIHRoZSBwYXRjaCBhZGRyZXNzZXMgZGF0YSByYWNlcyBhbmQgc29tZSBpbml0aWFsaXphdGlvbiBpc3N1ZXMuIE15IHByaW1hcnkgZnV6emluZyB0YXJnZXRzIHNob3VsZCBiZSB0aGUgdXBkYXRlZCBjb25maWdmcyBhdHRyaWJ1dGUgc3RvcmUgZnVuY3Rpb25zIGFuZCBkZXZpY2UgaW5pdGlhbGl6YXRpb24gbG9naWMsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgZml4LlxuXG5Ob3csIGEgcXVpY2sgY2hlY2sgb24gdGhlIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgIG1hY3JvLiBBaCwgcmlnaHQsIHRob3NlIGFyZSBzdGF0aWMgZnVuY3Rpb25zLCBsaWtlIGBudWxsYl9kZXZpY2Vfc2l6ZV9zdG9yZWAuIFN5emthbGxlciAqY2FuKiBzdGlsbCBnZXQgdG8gdGhlbSBpZiB0aGV5J3JlIHJlYWNoYWJsZSwgZXZlbiBpZiB0aGV5J3JlIHN0YXRpYywgYnV0IGxpc3RpbmcgZXZlcnkgc2luZ2xlIG9uZSBpc24ndCBmZWFzaWJsZS4gSSB0aGluayBmb2N1c2luZyBvbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBhbmQgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgIGlzIHN1ZmZpY2llbnQgZm9yIGluaXRpYWwgY292ZXJhZ2UuXG5cbkhvbGQgb24uLi4gYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgIGlzIGNhbGxlZCBmcm9tIGBudWxsYl9kZXZpY2Vfc3VibWl0X3F1ZXVlc19zdG9yZWAuIE9rYXksIHRoYXQncyBnb29kLiBMaXN0aW5nIHRoZSBmb3JtZXIgY292ZXJzIHRoZSBsYXR0ZXIuIFBlcmZlY3QuXG5cbkFscmlnaHQsIHdpdGggdGhhdCBjb25maXJtZWQsIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMwODksIk91dHB1dFRva2VucyI6MTU4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTk6MjU6MTkuMzA3ODI3NTYyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NDU5NjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCIsXG4gICAgXCJCTEtfREVWX1pPTkVEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCIsXG4gICAgXCJudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzXCIsXG4gICAgXCJudWxsYl9hcHBseV9wb2xsX3F1ZXVlc1wiLFxuICAgIFwibnVsbF92YWxpZGF0ZV9jb25mXCIsXG4gICAgXCJudWxsX2FkZF9kZXZcIixcbiAgICBcIm51bGxfaW5pdF96b25lZF9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBkYXRhIHJhY2VzIGFuZCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgaW4gdGhlIG51bGxfYmxrIGRyaXZlci4gVGhlIGRyaXZlciBpcyBzb2Z0d2FyZS1lbXVsYXRlZCBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG1vZGlmaWVkIGNvbmZpZ2ZzIGF0dHJpYnV0ZSBzdG9yZSBmdW5jdGlvbnMgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbiBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCIsXG4gICAgXCJCTEtfREVWX1pPTkVEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCIsXG4gICAgXCJudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzXCIsXG4gICAgXCJudWxsYl9hcHBseV9wb2xsX3F1ZXVlc1wiLFxuICAgIFwibnVsbF92YWxpZGF0ZV9jb25mXCIsXG4gICAgXCJudWxsX2FkZF9kZXZcIixcbiAgICBcIm51bGxfaW5pdF96b25lZF9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBkYXRhIHJhY2VzIGFuZCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgaW4gdGhlIG51bGxfYmxrIGRyaXZlci4gVGhlIGRyaXZlciBpcyBzb2Z0d2FyZS1lbXVsYXRlZCBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG1vZGlmaWVkIGNvbmZpZ2ZzIGF0dHJpYnV0ZSBzdG9yZSBmdW5jdGlvbnMgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbiBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowjjnwn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-08 18:58:05 +0000 UTC FinishedAt: 2026-07-08 19:25:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK", "BLK_DEV_ZONED" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK", "BLK_DEV_ZONED" ], "series_id": "53ad5c3f-a327-4a23-940a-545325dc73ff" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "nullb_device_power_store", "nullb_apply_submit_queues", "nullb_apply_poll_queues", "null_validate_conf", "null_add_dev", "null_init_zoned_dev" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE5OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9aT05FRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2FwcGx5X3BvbGxfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxfdmFsaWRhdGVfY29uZiYjMzQ7LAogICAgJiMzNDtudWxsX2FkZF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbF9pbml0X3pvbmVkX2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBkYXRhIHJhY2VzIGFuZCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgaW4gdGhlIG51bGxfYmxrIGRyaXZlci4gVGhlIGRyaXZlciBpcyBzb2Z0d2FyZS1lbXVsYXRlZCBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG1vZGlmaWVkIGNvbmZpZ2ZzIGF0dHJpYnV0ZSBzdG9yZSBmdW5jdGlvbnMgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbiBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxOToyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY0ZGYzZDJlOWIyZjNjMzU4NDlmOTE4NDQ5MzA4NjllMmM2ZWM4N2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCA4IDE5OjIzOjI1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbmluZGV4IGY4YzBmZDU3ZTA0MWE4Li5mZDNjOTkzYTY3YjJiZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuQEAgLTY2LDcgJiM0Mzs2Niw3IEBAIHN0cnVjdCBudWxsYl9wYWdlIHtcbiAjZGVmaW5lIE5VTExCX1BBR0VfRlJFRSAoTUFQX1NaIC0gMilcbiBcbiBzdGF0aWMgTElTVF9IRUFEKG51bGxiX2xpc3QpO1xuLXN0YXRpYyBzdHJ1Y3QgbXV0ZXggbG9jaztcbiYjNDM7c3RhdGljIERFRklORV9NVVRFWChsb2NrKTtcbiBzdGF0aWMgaW50IG51bGxfbWFqb3I7XG4gc3RhdGljIERFRklORV9JREEobnVsbGJfaW5kZXhlcyk7XG4gc3RhdGljIHN0cnVjdCBibGtfbXFfdGFnX3NldCB0YWdfc2V0O1xuQEAgLTM0Niw3ICYjNDM7MzQ2LDcgQEAgc3RhdGljIHNzaXplX3RcdFx0XHRcdFx0XHRcdFx0XFxcbiBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXHRcXFxuIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0cmV0dXJuIG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3Nob3coXHRcdFx0XHRcXFxuLVx0XHRcdFx0dG9fbnVsbGJfZGV2aWNlKGl0ZW0pLVx1MDAzZU5BTUUsIHBhZ2UpO1x0XFxcbiYjNDM7XHRcdFx0UkVBRF9PTkNFKHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2VOQU1FKSwgcGFnZSk7XHRcXFxuIH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuIHN0YXRpYyBzc2l6ZV90XHRcdFx0XHRcdFx0XHRcdFxcXG4gbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcdFxcXG5AQCAtMzYwLDEzICYjNDM7MzYwLDE2IEBAIG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnBhZ2UsXHRcXFxuIFx0cmV0ID0gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc3RvcmUoXHUwMDI2bmV3X3ZhbHVlLCBwYWdlLCBjb3VudCk7XFxcbiBcdGlmIChyZXQgXHUwMDNjIDApXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKGFwcGx5X2ZuKVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0cmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpO1x0XHRcdFx0XFxcbiBcdGVsc2UgaWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSBcdFxcXG4gXHRcdHJldCA9IC1FQlVTWTtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGlmICghcmV0KVx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZU5BTUUsIG5ld192YWx1ZSk7XHRcdFx0XFxcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbiBcdGlmIChyZXQgXHUwMDNjIDApXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFxcXG4tXHRkZXYtXHUwMDNlTkFNRSA9IG5ld192YWx1ZTtcdFx0XHRcdFx0XHRcXFxuIFx0cmV0dXJuIGNvdW50O1x0XHRcdFx0XHRcdFx0XFxcbiB9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIE5BTUUpO1xuQEAgLTQwMSw4ICYjNDM7NDA0LDggQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdCAqL1xuIFx0ZGV2LVx1MDAzZXByZXZfc3VibWl0X3F1ZXVlcyA9IGRldi1cdTAwM2VzdWJtaXRfcXVldWVzO1xuIFx0ZGV2LVx1MDAzZXByZXZfcG9sbF9xdWV1ZXMgPSBkZXYtXHUwMDNlcG9sbF9xdWV1ZXM7XG4tXHRkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcyA9IHN1Ym1pdF9xdWV1ZXM7XG4tXHRkZXYtXHUwMDNlcG9sbF9xdWV1ZXMgPSBwb2xsX3F1ZXVlcztcbiYjNDM7XHRXUklURV9PTkNFKGRldi1cdTAwM2VzdWJtaXRfcXVldWVzLCBzdWJtaXRfcXVldWVzKTtcbiYjNDM7XHRXUklURV9PTkNFKGRldi1cdTAwM2Vwb2xsX3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xuIFxuIFx0c2V0ID0gZGV2LVx1MDAzZW51bGxiLVx1MDAzZXRhZ19zZXQ7XG4gXHRucl9od19xdWV1ZXMgPSBzdWJtaXRfcXVldWVzICYjNDM7IHBvbGxfcXVldWVzO1xuQEAgLTQxMSw4ICYjNDM7NDE0LDggQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcbiBcdGlmIChyZXQpIHtcbiBcdFx0Lyogb24gZXJyb3IsIHJldmVydCB0aGUgcXVldWUgbnVtYmVycyAqL1xuLVx0XHRkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcyA9IGRldi1cdTAwM2VwcmV2X3N1Ym1pdF9xdWV1ZXM7XG4tXHRcdGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyA9IGRldi1cdTAwM2VwcmV2X3BvbGxfcXVldWVzO1xuJiM0MztcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgZGV2LVx1MDAzZXByZXZfc3VibWl0X3F1ZXVlcyk7XG4mIzQzO1x0XHRXUklURV9PTkNFKGRldi1cdTAwM2Vwb2xsX3F1ZXVlcywgZGV2LVx1MDAzZXByZXZfcG9sbF9xdWV1ZXMpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIHJldDtcbkBAIC00MjEsMjUgJiM0Mzs0MjQsMTMgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgc3VibWl0X3F1ZXVlcylcbiB7XG4tXHRpbnQgcmV0O1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbi1cdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXHUwMDNlcG9sbF9xdWV1ZXMpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuLVxuLVx0cmV0dXJuIHJldDtcbiYjNDM7XHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgdW5zaWduZWQgaW50IHBvbGxfcXVldWVzKVxuIHtcbi1cdGludCByZXQ7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuLVx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4tXG4tXHRyZXR1cm4gcmV0O1xuJiM0MztcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcbiB9XG4gXG4gTlVMTEJfREVWSUNFX0FUVFIoc2l6ZSwgdWxvbmcsIE5VTEwpO1xuQEAgLTQ3OCw3ICYjNDM7NDY5LDggQEAgTlVMTEJfREVWSUNFX0FUVFIoYmFkYmxvY2tzX3BhcnRpYWxfaW8sIGJvb2wsIE5VTEwpO1xuIFxuIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcbiB7XG4tXHRyZXR1cm4gbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zaG93KHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2Vwb3dlciwgcGFnZSk7XG4mIzQzO1x0cmV0dXJuIG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyhcbiYjNDM7XHRcdFx0UkVBRF9PTkNFKHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2Vwb3dlciksIHBhZ2UpO1xuIH1cbiBcbiBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuQEAgLTUwNSwxMSAmIzQzOzQ5NywxMSBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuIFx0XHR9XG4gXG4gXHRcdHNldF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncyk7XG4tXHRcdGRldi1cdTAwM2Vwb3dlciA9IG5ld3A7XG4mIzQzO1x0XHRXUklURV9PTkNFKGRldi1cdTAwM2Vwb3dlciwgbmV3cCk7XG4gXHRcdHJldCA9IGNvdW50O1xuIFx0fSBlbHNlIGlmIChkZXYtXHUwMDNlcG93ZXIgXHUwMDI2XHUwMDI2ICFuZXdwKSB7XG4gXHRcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTlVMTEJfREVWX0ZMX1VQLCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSB7XG4tXHRcdFx0ZGV2LVx1MDAzZXBvd2VyID0gbmV3cDtcbiYjNDM7XHRcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlcG93ZXIsIG5ld3ApO1xuIFx0XHRcdG51bGxfZGVsX2RldihkZXYtXHUwMDNlbnVsbGIpO1xuIFx0XHR9XG4gXHRcdGNsZWFyX2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKTtcbkBAIC0xNzkyLDEzICYjNDM7MTc4NCwxMyBAQCBzdGF0aWMgdm9pZCBudWxsX2NvbmZpZ19kaXNjYXJkKHN0cnVjdCBudWxsYiAqbnVsbGIsIHN0cnVjdCBxdWV1ZV9saW1pdHMgKmxpbSlcbiBcdFx0cmV0dXJuO1xuIFxuIFx0aWYgKCFudWxsYi1cdTAwM2VkZXYtXHUwMDNlbWVtb3J5X2JhY2tlZCkge1xuLVx0XHRudWxsYi1cdTAwM2VkZXYtXHUwMDNlZGlzY2FyZCA9IGZhbHNlO1xuJiM0MztcdFx0V1JJVEVfT05DRShudWxsYi1cdTAwM2VkZXYtXHUwMDNlZGlzY2FyZCwgZmFsc2UpO1xuIFx0XHRwcl9pbmZvKFwmIzM0O2Rpc2NhcmQgb3B0aW9uIGlzIGlnbm9yZWQgd2l0aG91dCBtZW1vcnkgYmFja2luZ1xcblwmIzM0Oyk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbiBcdGlmIChudWxsYi1cdTAwM2VkZXYtXHUwMDNlem9uZWQpIHtcbi1cdFx0bnVsbGItXHUwMDNlZGV2LVx1MDAzZWRpc2NhcmQgPSBmYWxzZTtcbiYjNDM7XHRcdFdSSVRFX09OQ0UobnVsbGItXHUwMDNlZGV2LVx1MDAzZWRpc2NhcmQsIGZhbHNlKTtcbiBcdFx0cHJfaW5mbyhcJiMzNDtkaXNjYXJkIG9wdGlvbiBpcyBpZ25vcmVkIGluIHpvbmVkIG1vZGVcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm47XG4gXHR9XG5AQCAtMTg5MCwzMSAmIzQzOzE4ODIsMzEgQEAgc3RhdGljIGludCBudWxsX3ZhbGlkYXRlX2NvbmYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuIFx0fVxuIFx0aWYgKGRldi1cdTAwM2VxdWV1ZV9tb2RlID09IE5VTExfUV9CSU8pIHtcbiBcdFx0cHJfZXJyKFwmIzM0O0JJTy1iYXNlZCBJTyBwYXRoIGlzIG5vIGxvbmdlciBhdmFpbGFibGUsIHVzaW5nIGJsay1tcSBpbnN0ZWFkLlxcblwmIzM0Oyk7XG4tXHRcdGRldi1cdTAwM2VxdWV1ZV9tb2RlID0gTlVMTF9RX01RO1xuJiM0MztcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlcXVldWVfbW9kZSwgTlVMTF9RX01RKTtcbiBcdH1cbiBcbiBcdGlmIChkZXYtXHUwMDNldXNlX3Blcl9ub2RlX2hjdHgpIHtcbiBcdFx0aWYgKGRldi1cdTAwM2VzdWJtaXRfcXVldWVzICE9IG5yX29ubGluZV9ub2Rlcylcbi1cdFx0XHRkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcyA9IG5yX29ubGluZV9ub2RlcztcbiYjNDM7XHRcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgbnJfb25saW5lX25vZGVzKTtcbiBcdH0gZWxzZSBpZiAoZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMgXHUwMDNlIG5yX2NwdV9pZHMpXG4tXHRcdGRldi1cdTAwM2VzdWJtaXRfcXVldWVzID0gbnJfY3B1X2lkcztcbiYjNDM7XHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIG5yX2NwdV9pZHMpO1xuIFx0ZWxzZSBpZiAoZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMgPT0gMClcbi1cdFx0ZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMgPSAxO1xuJiM0MztcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgMSk7XG4gXHRkZXYtXHUwMDNlcHJldl9zdWJtaXRfcXVldWVzID0gZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXM7XG4gXG4gXHRpZiAoZGV2LVx1MDAzZXBvbGxfcXVldWVzIFx1MDAzZSBnX3BvbGxfcXVldWVzKVxuLVx0XHRkZXYtXHUwMDNlcG9sbF9xdWV1ZXMgPSBnX3BvbGxfcXVldWVzO1xuJiM0MztcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlcG9sbF9xdWV1ZXMsIGdfcG9sbF9xdWV1ZXMpO1xuIFx0ZGV2LVx1MDAzZXByZXZfcG9sbF9xdWV1ZXMgPSBkZXYtXHUwMDNlcG9sbF9xdWV1ZXM7XG4tXHRkZXYtXHUwMDNlaXJxbW9kZSA9IG1pbl90KHVuc2lnbmVkIGludCwgZGV2LVx1MDAzZWlycW1vZGUsIE5VTExfSVJRX1RJTUVSKTtcbiYjNDM7XHRXUklURV9PTkNFKGRldi1cdTAwM2VpcnFtb2RlLCBtaW5fdCh1bnNpZ25lZCBpbnQsIGRldi1cdTAwM2VpcnFtb2RlLCBOVUxMX0lSUV9USU1FUikpO1xuIFxuIFx0LyogRG8gbWVtb3J5IGFsbG9jYXRpb24sIHNvIHNldCBibG9ja2luZyAqL1xuIFx0aWYgKGRldi1cdTAwM2VtZW1vcnlfYmFja2VkKVxuLVx0XHRkZXYtXHUwMDNlYmxvY2tpbmcgPSB0cnVlO1xuJiM0MztcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlYmxvY2tpbmcsIHRydWUpO1xuIFx0ZWxzZSAvKiBjYWNoZSBpcyBtZWFuaW5nbGVzcyAqL1xuLVx0XHRkZXYtXHUwMDNlY2FjaGVfc2l6ZSA9IDA7XG4tXHRkZXYtXHUwMDNlY2FjaGVfc2l6ZSA9IG1pbl90KHVuc2lnbmVkIGxvbmcsIFVMT05HX01BWCAvIDEwMjQgLyAxMDI0LFxuLVx0XHRcdFx0XHRcdGRldi1cdTAwM2VjYWNoZV9zaXplKTtcbi1cdGRldi1cdTAwM2VtYnBzID0gbWluX3QodW5zaWduZWQgaW50LCAxMDI0ICogNDAsIGRldi1cdTAwM2VtYnBzKTtcbiYjNDM7XHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZWNhY2hlX3NpemUsIDApO1xuJiM0MztcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZWNhY2hlX3NpemUsIG1pbl90KHVuc2lnbmVkIGxvbmcsIFVMT05HX01BWCAvIDEwMjQgLyAxMDI0LFxuJiM0MztcdFx0XHRcdFx0ICBkZXYtXHUwMDNlY2FjaGVfc2l6ZSkpO1xuJiM0MztcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZW1icHMsIG1pbl90KHVuc2lnbmVkIGludCwgMTAyNCAqIDQwLCBkZXYtXHUwMDNlbWJwcykpO1xuIFxuIFx0aWYgKGRldi1cdTAwM2V6b25lZCBcdTAwMjZcdTAwMjZcbiBcdCAgICAoIWRldi1cdTAwM2V6b25lX3NpemUgfHwgIWlzX3Bvd2VyX29mXzIoZGV2LVx1MDAzZXpvbmVfc2l6ZSkpKSB7XG5AQCAtMjAyNCw3ICYjNDM7MjAxNiw3IEBAIHN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbiBcdFx0Z290byBvdXRfY2xlYW51cF9kaXNrO1xuIFxuIFx0bnVsbGItXHUwMDNlaW5kZXggPSBydjtcbi1cdGRldi1cdTAwM2VpbmRleCA9IHJ2O1xuJiM0MztcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZWluZGV4LCBydik7XG4gXG4gXHRpZiAoY29uZmlnX2l0ZW1fbmFtZShcdTAwMjZkZXYtXHUwMDNlZ3JvdXAuY2dfaXRlbSkpIHtcbiBcdFx0LyogVXNlIGNvbmZpZ2ZzIGRpciBuYW1lIGFzIHRoZSBkZXZpY2UgbmFtZSAqL1xuQEAgLTIxNjIsMTcgJiM0MzsyMTU0LDkgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRjb25maWdfZ3JvdXBfaW5pdChcdTAwMjZudWxsYl9zdWJzeXMuc3VfZ3JvdXApO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZudWxsYl9zdWJzeXMuc3VfbXV0ZXgpO1xuIFxuLVx0cmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNm51bGxiX3N1YnN5cyk7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0bXV0ZXhfaW5pdChcdTAwMjZsb2NrKTtcbi1cbiBcdG51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgXCYjMzQ7bnVsbGJcJiMzNDspO1xuLVx0aWYgKG51bGxfbWFqb3IgXHUwMDNjIDApIHtcbi1cdFx0cmV0ID0gbnVsbF9tYWpvcjtcbi1cdFx0Z290byBlcnJfY29uZjtcbi1cdH1cbiYjNDM7XHRpZiAobnVsbF9tYWpvciBcdTAwM2MgMClcbiYjNDM7XHRcdHJldHVybiBudWxsX21ham9yO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfZGV2aWNlczsgaSYjNDM7JiM0MzspIHtcbiBcdFx0cmV0ID0gbnVsbF9jcmVhdGVfZGV2KCk7XG5AQCAtMjE4MCw2ICYjNDM7MjE2NCwxMCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbiBcdFx0XHRnb3RvIGVycl9kZXY7XG4gXHR9XG4gXG4mIzQzO1x0cmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNm51bGxiX3N1YnN5cyk7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdGdvdG8gZXJyX2RldjtcbiYjNDM7XG4gXHRwcl9pbmZvKFwmIzM0O21vZHVsZSBsb2FkZWRcXG5cJiMzNDspO1xuIFx0cmV0dXJuIDA7XG4gXG5AQCAtMjE4OSw4ICYjNDM7MjE3Nyw4IEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxuIFx0XHRudWxsX2Rlc3Ryb3lfZGV2KG51bGxiKTtcbiBcdH1cbiBcdHVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsIFwmIzM0O251bGxiXCYjMzQ7KTtcbi1lcnJfY29uZjpcbi1cdGNvbmZpZ2ZzX3VucmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNm51bGxiX3N1YnN5cyk7XG4mIzQzO1x0aWYgKHRhZ19zZXQub3BzKVxuJiM0MztcdFx0YmxrX21xX2ZyZWVfdGFnX3NldChcdTAwMjZ0YWdfc2V0KTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTIyMDAsOCAmIzQzOzIxODgsNiBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpXG4gXG4gXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuIFxuLVx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCYjMzQ7bnVsbGJcJiMzNDspO1xuLVxuIFx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbiBcdHdoaWxlICghbGlzdF9lbXB0eShcdTAwMjZudWxsYl9saXN0KSkge1xuIFx0XHRudWxsYiA9IGxpc3RfZW50cnkobnVsbGJfbGlzdC5uZXh0LCBzdHJ1Y3QgbnVsbGIsIGxpc3QpO1xuQEAgLTIyMDksNiAmIzQzOzIxOTUsOCBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpXG4gXHR9XG4gXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4gXG4mIzQzO1x0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCYjMzQ7bnVsbGJcJiMzNDspO1xuJiM0MztcbiBcdGlmICh0YWdfc2V0Lm9wcylcbiBcdFx0YmxrX21xX2ZyZWVfdGFnX3NldChcdTAwMjZ0YWdfc2V0KTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmNcbmluZGV4IDM4NGJkY2U2YTliN2YzLi43NTYxM2VhZjNlYTllZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jXG5AQCAtNjYsNyAmIzQzOzY2LDcgQEAgaW50IG51bGxfaW5pdF96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0fVxuIFxuIFx0aWYgKCFkZXYtXHUwMDNlem9uZV9jYXBhY2l0eSlcbi1cdFx0ZGV2LVx1MDAzZXpvbmVfY2FwYWNpdHkgPSBkZXYtXHUwMDNlem9uZV9zaXplO1xuJiM0MztcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlem9uZV9jYXBhY2l0eSwgZGV2LVx1MDAzZXpvbmVfc2l6ZSk7XG4gXG4gXHRpZiAoZGV2LVx1MDAzZXpvbmVfY2FwYWNpdHkgXHUwMDNlIGRldi1cdTAwM2V6b25lX3NpemUpIHtcbiBcdFx0cHJfZXJyKFwmIzM0O3pvbmUgY2FwYWNpdHkgKCVsdSBNQikgbGFyZ2VyIHRoYW4gem9uZSBzaXplICglbHUgTUIpXFxuXCYjMzQ7LFxuQEAgLTk5LDI5ICYjNDM7OTksMjkgQEAgaW50IG51bGxfaW5pdF96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZGV2LVx1MDAzZXpvbmVfcmVzX2xvY2spO1xuIFxuIFx0aWYgKGRldi1cdTAwM2V6b25lX25yX2NvbnYgXHUwMDNlPSBkZXYtXHUwMDNlbnJfem9uZXMpIHtcbi1cdFx0ZGV2LVx1MDAzZXpvbmVfbnJfY29udiA9IGRldi1cdTAwM2Vucl96b25lcyAtIDE7XG4mIzQzO1x0XHRXUklURV9PTkNFKGRldi1cdTAwM2V6b25lX25yX2NvbnYsIGRldi1cdTAwM2Vucl96b25lcyAtIDEpO1xuIFx0XHRwcl9pbmZvKFwmIzM0O2NoYW5nZWQgdGhlIG51bWJlciBvZiBjb252ZW50aW9uYWwgem9uZXMgdG8gJXVcJiMzNDssXG4gXHRcdFx0ZGV2LVx1MDAzZXpvbmVfbnJfY29udik7XG4gXHR9XG4gXG4tXHRkZXYtXHUwMDNlem9uZV9hcHBlbmRfbWF4X3NlY3RvcnMgPVxuLVx0XHRtaW4oQUxJR05fRE9XTihkZXYtXHUwMDNlem9uZV9hcHBlbmRfbWF4X3NlY3RvcnMsXG4tXHRcdFx0ICAgICAgIGRldi1cdTAwM2VibG9ja3NpemUgXHUwMDNlXHUwMDNlIFNFQ1RPUl9TSElGVCksXG4tXHRcdCAgICB6b25lX2NhcGFjaXR5X3NlY3RzKTtcbiYjNDM7XHRXUklURV9PTkNFKGRldi1cdTAwM2V6b25lX2FwcGVuZF9tYXhfc2VjdG9ycyxcbiYjNDM7XHRcdCAgIG1pbihBTElHTl9ET1dOKGRldi1cdTAwM2V6b25lX2FwcGVuZF9tYXhfc2VjdG9ycyxcbiYjNDM7XHRcdFx0XHQgIGRldi1cdTAwM2VibG9ja3NpemUgXHUwMDNlXHUwMDNlIFNFQ1RPUl9TSElGVCksXG4mIzQzO1x0XHQgICAgICAgem9uZV9jYXBhY2l0eV9zZWN0cykpO1xuIFxuIFx0LyogTWF4IGFjdGl2ZSB6b25lcyBoYXMgdG8gYmUgXHUwMDNjIG5iciBvZiBzZXEgem9uZXMgaW4gb3JkZXIgdG8gYmUgZW5mb3JjZWFibGUgKi9cbiBcdGlmIChkZXYtXHUwMDNlem9uZV9tYXhfYWN0aXZlIFx1MDAzZT0gZGV2LVx1MDAzZW5yX3pvbmVzIC0gZGV2LVx1MDAzZXpvbmVfbnJfY29udikge1xuLVx0XHRkZXYtXHUwMDNlem9uZV9tYXhfYWN0aXZlID0gMDtcbiYjNDM7XHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZXpvbmVfbWF4X2FjdGl2ZSwgMCk7XG4gXHRcdHByX2luZm8oXCYjMzQ7em9uZV9tYXhfYWN0aXZlIGxpbWl0IGRpc2FibGVkLCBsaW1pdCBcdTAwM2U9IHpvbmUgY291bnRcXG5cJiMzNDspO1xuIFx0fVxuIFxuIFx0LyogTWF4IG9wZW4gem9uZXMgaGFzIHRvIGJlIFx1MDAzYz0gbWF4IGFjdGl2ZSB6b25lcyAqL1xuIFx0aWYgKGRldi1cdTAwM2V6b25lX21heF9hY3RpdmUgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2V6b25lX21heF9vcGVuIFx1MDAzZSBkZXYtXHUwMDNlem9uZV9tYXhfYWN0aXZlKSB7XG4tXHRcdGRldi1cdTAwM2V6b25lX21heF9vcGVuID0gZGV2LVx1MDAzZXpvbmVfbWF4X2FjdGl2ZTtcbiYjNDM7XHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZXpvbmVfbWF4X29wZW4sIGRldi1cdTAwM2V6b25lX21heF9hY3RpdmUpO1xuIFx0XHRwcl9pbmZvKFwmIzM0O2NoYW5nZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIG9wZW4gem9uZXMgdG8gJXVcXG5cJiMzNDssXG4gXHRcdFx0ZGV2LVx1MDAzZXpvbmVfbWF4X29wZW4pO1xuIFx0fSBlbHNlIGlmIChkZXYtXHUwMDNlem9uZV9tYXhfb3BlbiBcdTAwM2U9IGRldi1cdTAwM2Vucl96b25lcyAtIGRldi1cdTAwM2V6b25lX25yX2NvbnYpIHtcbi1cdFx0ZGV2LVx1MDAzZXpvbmVfbWF4X29wZW4gPSAwO1xuJiM0MztcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlem9uZV9tYXhfb3BlbiwgMCk7XG4gXHRcdHByX2luZm8oXCYjMzQ7em9uZV9tYXhfb3BlbiBsaW1pdCBkaXNhYmxlZCwgbGltaXQgXHUwMDNlPSB6b25lIGNvdW50XFxuXCYjMzQ7KTtcbiBcdH1cbiBcdGRldi1cdTAwM2VuZWVkX3pvbmVfcmVzX21nbXQgPSBkZXYtXHUwMDNlem9uZV9tYXhfYWN0aXZlIHx8IGRldi1cdTAwM2V6b25lX21heF9vcGVuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE5OjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9aT05FRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2FwcGx5X3BvbGxfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxfdmFsaWRhdGVfY29uZiYjMzQ7LAogICAgJiMzNDtudWxsX2FkZF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbF9pbml0X3pvbmVkX2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBkYXRhIHJhY2VzIGFuZCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgaW4gdGhlIG51bGxfYmxrIGRyaXZlci4gVGhlIGRyaXZlciBpcyBzb2Z0d2FyZS1lbXVsYXRlZCBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG1vZGlmaWVkIGNvbmZpZ2ZzIGF0dHJpYnV0ZSBzdG9yZSBmdW5jdGlvbnMgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbiBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjRkZjNkMmU5YjJmM2MzNTg0OWY5MTg0NDkzMDg2OWUyYzZlYzg3ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDggMTk6MjM6MjUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jCmluZGV4IGY4YzBmZDU3ZTA0MWE4Li5mZDNjOTkzYTY3YjJiZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKQEAgLTY2LDcgJiM0Mzs2Niw3IEBAIHN0cnVjdCBudWxsYl9wYWdlIHsKICNkZWZpbmUgTlVMTEJfUEFHRV9GUkVFIChNQVBfU1ogLSAyKQogCiBzdGF0aWMgTElTVF9IRUFEKG51bGxiX2xpc3QpOwotc3RhdGljIHN0cnVjdCBtdXRleCBsb2NrOwomIzQzO3N0YXRpYyBERUZJTkVfTVVURVgobG9jayk7CiBzdGF0aWMgaW50IG51bGxfbWFqb3I7CiBzdGF0aWMgREVGSU5FX0lEQShudWxsYl9pbmRleGVzKTsKIHN0YXRpYyBzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgdGFnX3NldDsKQEAgLTM0Niw3ICYjNDM7MzQ2LDcgQEAgc3RhdGljIHNzaXplX3QJCQkJCQkJCVwKIG51bGxiX2RldmljZV8jI05BTUUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSkJXAogewkJCQkJCQkJCVwKIAlyZXR1cm4gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc2hvdygJCQkJXAotCQkJCXRvX251bGxiX2RldmljZShpdGVtKS0mZ3Q7TkFNRSwgcGFnZSk7CVwKJiM0MzsJCQlSRUFEX09OQ0UodG9fbnVsbGJfZGV2aWNlKGl0ZW0pLSZndDtOQU1FKSwgcGFnZSk7CVwKIH0JCQkJCQkJCQlcCiBzdGF0aWMgc3NpemVfdAkJCQkJCQkJXAogbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSwJXApAQCAtMzYwLDEzICYjNDM7MzYwLDE2IEBAIG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnBhZ2UsCVwKIAlyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zdG9yZSgmYW1wO25ld192YWx1ZSwgcGFnZSwgY291bnQpO1wKIAlpZiAocmV0ICZsdDsgMCkJCQkJCQkJXAogCQlyZXR1cm4gcmV0OwkJCQkJCVwKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2xvY2spOwkJCQkJCVwKIAlpZiAoYXBwbHlfZm4pCQkJCQkJCVwKIAkJcmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpOwkJCQlcCiAJZWxzZSBpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsICZhbXA7ZGV2LSZndDtmbGFncykpIAlcCiAJCXJldCA9IC1FQlVTWTsJCQkJCQlcCiYjNDM7CWlmICghcmV0KQkJCQkJCQlcCiYjNDM7CQlXUklURV9PTkNFKGRldi0mZ3Q7TkFNRSwgbmV3X3ZhbHVlKTsJCQlcCiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2xvY2spOwkJCQkJCVwKIAlpZiAocmV0ICZsdDsgMCkJCQkJCQkJXAogCQlyZXR1cm4gcmV0OwkJCQkJCVwKLQlkZXYtJmd0O05BTUUgPSBuZXdfdmFsdWU7CQkJCQkJXAogCXJldHVybiBjb3VudDsJCQkJCQkJXAogfQkJCQkJCQkJCVwKIENPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgTkFNRSk7CkBAIC00MDEsOCAmIzQzOzQwNCw4IEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsCiAJICovCiAJZGV2LSZndDtwcmV2X3N1Ym1pdF9xdWV1ZXMgPSBkZXYtJmd0O3N1Ym1pdF9xdWV1ZXM7CiAJZGV2LSZndDtwcmV2X3BvbGxfcXVldWVzID0gZGV2LSZndDtwb2xsX3F1ZXVlczsKLQlkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMgPSBzdWJtaXRfcXVldWVzOwotCWRldi0mZ3Q7cG9sbF9xdWV1ZXMgPSBwb2xsX3F1ZXVlczsKJiM0MzsJV1JJVEVfT05DRShkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMsIHN1Ym1pdF9xdWV1ZXMpOwomIzQzOwlXUklURV9PTkNFKGRldi0mZ3Q7cG9sbF9xdWV1ZXMsIHBvbGxfcXVldWVzKTsKIAogCXNldCA9IGRldi0mZ3Q7bnVsbGItJmd0O3RhZ19zZXQ7CiAJbnJfaHdfcXVldWVzID0gc3VibWl0X3F1ZXVlcyAmIzQzOyBwb2xsX3F1ZXVlczsKQEAgLTQxMSw4ICYjNDM7NDE0LDggQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwKIAogCWlmIChyZXQpIHsKIAkJLyogb24gZXJyb3IsIHJldmVydCB0aGUgcXVldWUgbnVtYmVycyAqLwotCQlkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMgPSBkZXYtJmd0O3ByZXZfc3VibWl0X3F1ZXVlczsKLQkJZGV2LSZndDtwb2xsX3F1ZXVlcyA9IGRldi0mZ3Q7cHJldl9wb2xsX3F1ZXVlczsKJiM0MzsJCVdSSVRFX09OQ0UoZGV2LSZndDtzdWJtaXRfcXVldWVzLCBkZXYtJmd0O3ByZXZfc3VibWl0X3F1ZXVlcyk7CiYjNDM7CQlXUklURV9PTkNFKGRldi0mZ3Q7cG9sbF9xdWV1ZXMsIGRldi0mZ3Q7cHJldl9wb2xsX3F1ZXVlcyk7CiAJfQogCiAJcmV0dXJuIHJldDsKQEAgLTQyMSwyNSAmIzQzOzQyNCwxMyBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LAogc3RhdGljIGludCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwKIAkJCQkgICAgIHVuc2lnbmVkIGludCBzdWJtaXRfcXVldWVzKQogewotCWludCByZXQ7Ci0KLQltdXRleF9sb2NrKCZhbXA7bG9jayk7Ci0JcmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi0mZ3Q7cG9sbF9xdWV1ZXMpOwotCW11dGV4X3VubG9jaygmYW1wO2xvY2spOwotCi0JcmV0dXJuIHJldDsKJiM0MzsJcmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtJmd0O3BvbGxfcXVldWVzKTsKIH0KIAogc3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsCiAJCQkJICAgdW5zaWduZWQgaW50IHBvbGxfcXVldWVzKQogewotCWludCByZXQ7Ci0KLQltdXRleF9sb2NrKCZhbXA7bG9jayk7Ci0JcmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi0mZ3Q7c3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpOwotCW11dGV4X3VubG9jaygmYW1wO2xvY2spOwotCi0JcmV0dXJuIHJldDsKJiM0MzsJcmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTsKIH0KIAogTlVMTEJfREVWSUNFX0FUVFIoc2l6ZSwgdWxvbmcsIE5VTEwpOwpAQCAtNDc4LDcgJiM0Mzs0NjksOCBAQCBOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7CiAKIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSkKIHsKLQlyZXR1cm4gbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zaG93KHRvX251bGxiX2RldmljZShpdGVtKS0mZ3Q7cG93ZXIsIHBhZ2UpOwomIzQzOwlyZXR1cm4gbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zaG93KAomIzQzOwkJCVJFQURfT05DRSh0b19udWxsYl9kZXZpY2UoaXRlbSktJmd0O3Bvd2VyKSwgcGFnZSk7CiB9CiAKIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCkBAIC01MDUsMTEgJiM0Mzs0OTcsMTEgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwKIAkJfQogCiAJCXNldF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsICZhbXA7ZGV2LSZndDtmbGFncyk7Ci0JCWRldi0mZ3Q7cG93ZXIgPSBuZXdwOwomIzQzOwkJV1JJVEVfT05DRShkZXYtJmd0O3Bvd2VyLCBuZXdwKTsKIAkJcmV0ID0gY291bnQ7CiAJfSBlbHNlIGlmIChkZXYtJmd0O3Bvd2VyICZhbXA7JmFtcDsgIW5ld3ApIHsKIAkJaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChOVUxMQl9ERVZfRkxfVVAsICZhbXA7ZGV2LSZndDtmbGFncykpIHsKLQkJCWRldi0mZ3Q7cG93ZXIgPSBuZXdwOwomIzQzOwkJCVdSSVRFX09OQ0UoZGV2LSZndDtwb3dlciwgbmV3cCk7CiAJCQludWxsX2RlbF9kZXYoZGV2LSZndDtudWxsYik7CiAJCX0KIAkJY2xlYXJfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCAmYW1wO2Rldi0mZ3Q7ZmxhZ3MpOwpAQCAtMTc5MiwxMyAmIzQzOzE3ODQsMTMgQEAgc3RhdGljIHZvaWQgbnVsbF9jb25maWdfZGlzY2FyZChzdHJ1Y3QgbnVsbGIgKm51bGxiLCBzdHJ1Y3QgcXVldWVfbGltaXRzICpsaW0pCiAJCXJldHVybjsKIAogCWlmICghbnVsbGItJmd0O2Rldi0mZ3Q7bWVtb3J5X2JhY2tlZCkgewotCQludWxsYi0mZ3Q7ZGV2LSZndDtkaXNjYXJkID0gZmFsc2U7CiYjNDM7CQlXUklURV9PTkNFKG51bGxiLSZndDtkZXYtJmd0O2Rpc2NhcmQsIGZhbHNlKTsKIAkJcHJfaW5mbygmIzM0O2Rpc2NhcmQgb3B0aW9uIGlzIGlnbm9yZWQgd2l0aG91dCBtZW1vcnkgYmFja2luZ1xuJiMzNDspOwogCQlyZXR1cm47CiAJfQogCiAJaWYgKG51bGxiLSZndDtkZXYtJmd0O3pvbmVkKSB7Ci0JCW51bGxiLSZndDtkZXYtJmd0O2Rpc2NhcmQgPSBmYWxzZTsKJiM0MzsJCVdSSVRFX09OQ0UobnVsbGItJmd0O2Rldi0mZ3Q7ZGlzY2FyZCwgZmFsc2UpOwogCQlwcl9pbmZvKCYjMzQ7ZGlzY2FyZCBvcHRpb24gaXMgaWdub3JlZCBpbiB6b25lZCBtb2RlXG4mIzM0Oyk7CiAJCXJldHVybjsKIAl9CkBAIC0xODkwLDMxICYjNDM7MTg4MiwzMSBAQCBzdGF0aWMgaW50IG51bGxfdmFsaWRhdGVfY29uZihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpCiAJfQogCWlmIChkZXYtJmd0O3F1ZXVlX21vZGUgPT0gTlVMTF9RX0JJTykgewogCQlwcl9lcnIoJiMzNDtCSU8tYmFzZWQgSU8gcGF0aCBpcyBubyBsb25nZXIgYXZhaWxhYmxlLCB1c2luZyBibGstbXEgaW5zdGVhZC5cbiYjMzQ7KTsKLQkJZGV2LSZndDtxdWV1ZV9tb2RlID0gTlVMTF9RX01ROwomIzQzOwkJV1JJVEVfT05DRShkZXYtJmd0O3F1ZXVlX21vZGUsIE5VTExfUV9NUSk7CiAJfQogCiAJaWYgKGRldi0mZ3Q7dXNlX3Blcl9ub2RlX2hjdHgpIHsKIAkJaWYgKGRldi0mZ3Q7c3VibWl0X3F1ZXVlcyAhPSBucl9vbmxpbmVfbm9kZXMpCi0JCQlkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMgPSBucl9vbmxpbmVfbm9kZXM7CiYjNDM7CQkJV1JJVEVfT05DRShkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMsIG5yX29ubGluZV9ub2Rlcyk7CiAJfSBlbHNlIGlmIChkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMgJmd0OyBucl9jcHVfaWRzKQotCQlkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMgPSBucl9jcHVfaWRzOwomIzQzOwkJV1JJVEVfT05DRShkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMsIG5yX2NwdV9pZHMpOwogCWVsc2UgaWYgKGRldi0mZ3Q7c3VibWl0X3F1ZXVlcyA9PSAwKQotCQlkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMgPSAxOwomIzQzOwkJV1JJVEVfT05DRShkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMsIDEpOwogCWRldi0mZ3Q7cHJldl9zdWJtaXRfcXVldWVzID0gZGV2LSZndDtzdWJtaXRfcXVldWVzOwogCiAJaWYgKGRldi0mZ3Q7cG9sbF9xdWV1ZXMgJmd0OyBnX3BvbGxfcXVldWVzKQotCQlkZXYtJmd0O3BvbGxfcXVldWVzID0gZ19wb2xsX3F1ZXVlczsKJiM0MzsJCVdSSVRFX09OQ0UoZGV2LSZndDtwb2xsX3F1ZXVlcywgZ19wb2xsX3F1ZXVlcyk7CiAJZGV2LSZndDtwcmV2X3BvbGxfcXVldWVzID0gZGV2LSZndDtwb2xsX3F1ZXVlczsKLQlkZXYtJmd0O2lycW1vZGUgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGRldi0mZ3Q7aXJxbW9kZSwgTlVMTF9JUlFfVElNRVIpOwomIzQzOwlXUklURV9PTkNFKGRldi0mZ3Q7aXJxbW9kZSwgbWluX3QodW5zaWduZWQgaW50LCBkZXYtJmd0O2lycW1vZGUsIE5VTExfSVJRX1RJTUVSKSk7CiAKIAkvKiBEbyBtZW1vcnkgYWxsb2NhdGlvbiwgc28gc2V0IGJsb2NraW5nICovCiAJaWYgKGRldi0mZ3Q7bWVtb3J5X2JhY2tlZCkKLQkJZGV2LSZndDtibG9ja2luZyA9IHRydWU7CiYjNDM7CQlXUklURV9PTkNFKGRldi0mZ3Q7YmxvY2tpbmcsIHRydWUpOwogCWVsc2UgLyogY2FjaGUgaXMgbWVhbmluZ2xlc3MgKi8KLQkJZGV2LSZndDtjYWNoZV9zaXplID0gMDsKLQlkZXYtJmd0O2NhY2hlX3NpemUgPSBtaW5fdCh1bnNpZ25lZCBsb25nLCBVTE9OR19NQVggLyAxMDI0IC8gMTAyNCwKLQkJCQkJCWRldi0mZ3Q7Y2FjaGVfc2l6ZSk7Ci0JZGV2LSZndDttYnBzID0gbWluX3QodW5zaWduZWQgaW50LCAxMDI0ICogNDAsIGRldi0mZ3Q7bWJwcyk7CiYjNDM7CQlXUklURV9PTkNFKGRldi0mZ3Q7Y2FjaGVfc2l6ZSwgMCk7CiYjNDM7CVdSSVRFX09OQ0UoZGV2LSZndDtjYWNoZV9zaXplLCBtaW5fdCh1bnNpZ25lZCBsb25nLCBVTE9OR19NQVggLyAxMDI0IC8gMTAyNCwKJiM0MzsJCQkJCSAgZGV2LSZndDtjYWNoZV9zaXplKSk7CiYjNDM7CVdSSVRFX09OQ0UoZGV2LSZndDttYnBzLCBtaW5fdCh1bnNpZ25lZCBpbnQsIDEwMjQgKiA0MCwgZGV2LSZndDttYnBzKSk7CiAKIAlpZiAoZGV2LSZndDt6b25lZCAmYW1wOyZhbXA7CiAJICAgICghZGV2LSZndDt6b25lX3NpemUgfHwgIWlzX3Bvd2VyX29mXzIoZGV2LSZndDt6b25lX3NpemUpKSkgewpAQCAtMjAyNCw3ICYjNDM7MjAxNiw3IEBAIHN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldikKIAkJZ290byBvdXRfY2xlYW51cF9kaXNrOwogCiAJbnVsbGItJmd0O2luZGV4ID0gcnY7Ci0JZGV2LSZndDtpbmRleCA9IHJ2OwomIzQzOwlXUklURV9PTkNFKGRldi0mZ3Q7aW5kZXgsIHJ2KTsKIAogCWlmIChjb25maWdfaXRlbV9uYW1lKCZhbXA7ZGV2LSZndDtncm91cC5jZ19pdGVtKSkgewogCQkvKiBVc2UgY29uZmlnZnMgZGlyIG5hbWUgYXMgdGhlIGRldmljZSBuYW1lICovCkBAIC0yMTYyLDE3ICYjNDM7MjE1NCw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKQogCWNvbmZpZ19ncm91cF9pbml0KCZhbXA7bnVsbGJfc3Vic3lzLnN1X2dyb3VwKTsKIAltdXRleF9pbml0KCZhbXA7bnVsbGJfc3Vic3lzLnN1X211dGV4KTsKIAotCXJldCA9IGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbSgmYW1wO251bGxiX3N1YnN5cyk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCW11dGV4X2luaXQoJmFtcDtsb2NrKTsKLQogCW51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgJiMzNDtudWxsYiYjMzQ7KTsKLQlpZiAobnVsbF9tYWpvciAmbHQ7IDApIHsKLQkJcmV0ID0gbnVsbF9tYWpvcjsKLQkJZ290byBlcnJfY29uZjsKLQl9CiYjNDM7CWlmIChudWxsX21ham9yICZsdDsgMCkKJiM0MzsJCXJldHVybiBudWxsX21ham9yOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IG5yX2RldmljZXM7IGkmIzQzOyYjNDM7KSB7CiAJCXJldCA9IG51bGxfY3JlYXRlX2RldigpOwpAQCAtMjE4MCw2ICYjNDM7MjE2NCwxMCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZCkKIAkJCWdvdG8gZXJyX2RldjsKIAl9CiAKJiM0MzsJcmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKCZhbXA7bnVsbGJfc3Vic3lzKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCWdvdG8gZXJyX2RldjsKJiM0MzsKIAlwcl9pbmZvKCYjMzQ7bW9kdWxlIGxvYWRlZFxuJiMzNDspOwogCXJldHVybiAwOwogCkBAIC0yMTg5LDggJiM0MzsyMTc3LDggQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpCiAJCW51bGxfZGVzdHJveV9kZXYobnVsbGIpOwogCX0KIAl1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCAmIzM0O251bGxiJiMzNDspOwotZXJyX2NvbmY6Ci0JY29uZmlnZnNfdW5yZWdpc3Rlcl9zdWJzeXN0ZW0oJmFtcDtudWxsYl9zdWJzeXMpOwomIzQzOwlpZiAodGFnX3NldC5vcHMpCiYjNDM7CQlibGtfbXFfZnJlZV90YWdfc2V0KCZhbXA7dGFnX3NldCk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMjIwMCw4ICYjNDM7MjE4OCw2IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZCkKIAogCWNvbmZpZ2ZzX3VucmVnaXN0ZXJfc3Vic3lzdGVtKCZhbXA7bnVsbGJfc3Vic3lzKTsKIAotCXVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsICYjMzQ7bnVsbGImIzM0Oyk7Ci0KIAltdXRleF9sb2NrKCZhbXA7bG9jayk7CiAJd2hpbGUgKCFsaXN0X2VtcHR5KCZhbXA7bnVsbGJfbGlzdCkpIHsKIAkJbnVsbGIgPSBsaXN0X2VudHJ5KG51bGxiX2xpc3QubmV4dCwgc3RydWN0IG51bGxiLCBsaXN0KTsKQEAgLTIyMDksNiAmIzQzOzIxOTUsOCBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpCiAJfQogCW11dGV4X3VubG9jaygmYW1wO2xvY2spOwogCiYjNDM7CXVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsICYjMzQ7bnVsbGImIzM0Oyk7CiYjNDM7CiAJaWYgKHRhZ19zZXQub3BzKQogCQlibGtfbXFfZnJlZV90YWdfc2V0KCZhbXA7dGFnX3NldCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYwppbmRleCAzODRiZGNlNmE5YjdmMy4uNzU2MTNlYWYzZWE5ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmMKQEAgLTY2LDcgJiM0Mzs2Niw3IEBAIGludCBudWxsX2luaXRfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwKIAl9CiAKIAlpZiAoIWRldi0mZ3Q7em9uZV9jYXBhY2l0eSkKLQkJZGV2LSZndDt6b25lX2NhcGFjaXR5ID0gZGV2LSZndDt6b25lX3NpemU7CiYjNDM7CQlXUklURV9PTkNFKGRldi0mZ3Q7em9uZV9jYXBhY2l0eSwgZGV2LSZndDt6b25lX3NpemUpOwogCiAJaWYgKGRldi0mZ3Q7em9uZV9jYXBhY2l0eSAmZ3Q7IGRldi0mZ3Q7em9uZV9zaXplKSB7CiAJCXByX2VycigmIzM0O3pvbmUgY2FwYWNpdHkgKCVsdSBNQikgbGFyZ2VyIHRoYW4gem9uZSBzaXplICglbHUgTUIpXG4mIzM0OywKQEAgLTk5LDI5ICYjNDM7OTksMjkgQEAgaW50IG51bGxfaW5pdF96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LAogCXNwaW5fbG9ja19pbml0KCZhbXA7ZGV2LSZndDt6b25lX3Jlc19sb2NrKTsKIAogCWlmIChkZXYtJmd0O3pvbmVfbnJfY29udiAmZ3Q7PSBkZXYtJmd0O25yX3pvbmVzKSB7Ci0JCWRldi0mZ3Q7em9uZV9ucl9jb252ID0gZGV2LSZndDtucl96b25lcyAtIDE7CiYjNDM7CQlXUklURV9PTkNFKGRldi0mZ3Q7em9uZV9ucl9jb252LCBkZXYtJmd0O25yX3pvbmVzIC0gMSk7CiAJCXByX2luZm8oJiMzNDtjaGFuZ2VkIHRoZSBudW1iZXIgb2YgY29udmVudGlvbmFsIHpvbmVzIHRvICV1JiMzNDssCiAJCQlkZXYtJmd0O3pvbmVfbnJfY29udik7CiAJfQogCi0JZGV2LSZndDt6b25lX2FwcGVuZF9tYXhfc2VjdG9ycyA9Ci0JCW1pbihBTElHTl9ET1dOKGRldi0mZ3Q7em9uZV9hcHBlbmRfbWF4X3NlY3RvcnMsCi0JCQkgICAgICAgZGV2LSZndDtibG9ja3NpemUgJmd0OyZndDsgU0VDVE9SX1NISUZUKSwKLQkJICAgIHpvbmVfY2FwYWNpdHlfc2VjdHMpOwomIzQzOwlXUklURV9PTkNFKGRldi0mZ3Q7em9uZV9hcHBlbmRfbWF4X3NlY3RvcnMsCiYjNDM7CQkgICBtaW4oQUxJR05fRE9XTihkZXYtJmd0O3pvbmVfYXBwZW5kX21heF9zZWN0b3JzLAomIzQzOwkJCQkgIGRldi0mZ3Q7YmxvY2tzaXplICZndDsmZ3Q7IFNFQ1RPUl9TSElGVCksCiYjNDM7CQkgICAgICAgem9uZV9jYXBhY2l0eV9zZWN0cykpOwogCiAJLyogTWF4IGFjdGl2ZSB6b25lcyBoYXMgdG8gYmUgJmx0OyBuYnIgb2Ygc2VxIHpvbmVzIGluIG9yZGVyIHRvIGJlIGVuZm9yY2VhYmxlICovCiAJaWYgKGRldi0mZ3Q7em9uZV9tYXhfYWN0aXZlICZndDs9IGRldi0mZ3Q7bnJfem9uZXMgLSBkZXYtJmd0O3pvbmVfbnJfY29udikgewotCQlkZXYtJmd0O3pvbmVfbWF4X2FjdGl2ZSA9IDA7CiYjNDM7CQlXUklURV9PTkNFKGRldi0mZ3Q7em9uZV9tYXhfYWN0aXZlLCAwKTsKIAkJcHJfaW5mbygmIzM0O3pvbmVfbWF4X2FjdGl2ZSBsaW1pdCBkaXNhYmxlZCwgbGltaXQgJmd0Oz0gem9uZSBjb3VudFxuJiMzNDspOwogCX0KIAogCS8qIE1heCBvcGVuIHpvbmVzIGhhcyB0byBiZSAmbHQ7PSBtYXggYWN0aXZlIHpvbmVzICovCiAJaWYgKGRldi0mZ3Q7em9uZV9tYXhfYWN0aXZlICZhbXA7JmFtcDsgZGV2LSZndDt6b25lX21heF9vcGVuICZndDsgZGV2LSZndDt6b25lX21heF9hY3RpdmUpIHsKLQkJZGV2LSZndDt6b25lX21heF9vcGVuID0gZGV2LSZndDt6b25lX21heF9hY3RpdmU7CiYjNDM7CQlXUklURV9PTkNFKGRldi0mZ3Q7em9uZV9tYXhfb3BlbiwgZGV2LSZndDt6b25lX21heF9hY3RpdmUpOwogCQlwcl9pbmZvKCYjMzQ7Y2hhbmdlZCB0aGUgbWF4aW11bSBudW1iZXIgb2Ygb3BlbiB6b25lcyB0byAldVxuJiMzNDssCiAJCQlkZXYtJmd0O3pvbmVfbWF4X29wZW4pOwogCX0gZWxzZSBpZiAoZGV2LSZndDt6b25lX21heF9vcGVuICZndDs9IGRldi0mZ3Q7bnJfem9uZXMgLSBkZXYtJmd0O3pvbmVfbnJfY29udikgewotCQlkZXYtJmd0O3pvbmVfbWF4X29wZW4gPSAwOwomIzQzOwkJV1JJVEVfT05DRShkZXYtJmd0O3pvbmVfbWF4X29wZW4sIDApOwogCQlwcl9pbmZvKCYjMzQ7em9uZV9tYXhfb3BlbiBsaW1pdCBkaXNhYmxlZCwgbGltaXQgJmd0Oz0gem9uZSBjb3VudFxuJiMzNDspOwogCX0KIAlkZXYtJmd0O25lZWRfem9uZV9yZXNfbWdtdCA9IGRldi0mZ3Q7em9uZV9tYXhfYWN0aXZlIHx8IGRldi0mZ3Q7em9uZV9tYXhfb3BlbjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTk6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc2MwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDMyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZlYXNpYmlsaXR5IG9mIHRoZSBOdWxsIEJsb2NrIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jYCBhbmQgYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2VzIHJldm9sdmUgYXJvdW5kIG1lbW9yeSBhY2Nlc3Mgc3luY2hyb25pemF0aW9uIHdpdGggYFdSSVRFX09OQ0VgIGFuZCBgUkVBRF9PTkNFYCwgYW5kIHNvbWUgcmVvcmRlcmluZyBvZiBpbml0aWFsaXphdGlvbiBhbmQgY2xlYW51cCBjYWxscyB3aXRoaW4gdGhlIGRyaXZlciAoc3BlY2lmaWNhbGx5IGBjb25maWdmc19yZWdpc3Rlci91bnJlZ2lzdGVyX3N1YnN5c3RlbWAgYW5kIGByZWdpc3Rlci91bnJlZ2lzdGVyX2Jsa2RldmApLiBUaGVyZSYjMzk7cyBhbHNvIGEgbW9kaWZpY2F0aW9uIGxvY2tpbmcgYXJvdW5kIGFuIGVudGlyZSBgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlYCBmdW5jdGlvbiwgYW5kIGEgYERFRklORV9NVVRFWGAgYWRkZWQuCgpUaGUgcXVlc3Rpb24gbm93IGlzLCBkb2VzIHRoaXMgd2FycmFudCBmdXp6aW5nPyBXZWxsLCB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBgbnVsbF9ibGtgIGRyaXZlci4gQ29uc2lkZXJpbmcgdGhhdCB0aGlzIGRyaXZlciBpcyBhIHZpcnR1YWwgYmxvY2sgZGV2aWNlLCBmcmVxdWVudGx5IHVzZWQgZm9yIHRlc3RpbmcgYW5kIGJlbmNobWFya2luZyB0aGUgYmxvY2sgbGF5ZXIsIGFuZCBpbnN0YW50aWF0ZWQgdGhyb3VnaCBlaXRoZXIgY29uZmlnZnMgb3IgbW9kdWxlIHBhcmFtZXRlcnMsIHRoZXJlIGlzIHNpZ25pZmljYW50IHBvdGVudGlhbC4gVGhlIGNoYW5nZXMgdGhlbXNlbHZlcyBhcmUgZXhwbGljaXRseSBhZGRyZXNzaW5nIGRhdGEgcmFjZXMgYnkgZW1wbG95aW5nIGBSRUFEX09OQ0VgL2BXUklURV9PTkNFYCBhbmQgYW4gZXh0ZW5kZWQgbXV0ZXggbG9jay4gVGhlIG1vZHVsZSBpbml0L2V4aXQgb3JkZXJpbmcgZml4ZXMgc2hvdWxkIGFsc28gZWxpbWluYXRlIGEgc291cmNlIG9mIGlzc3VlcywgYW5kIHRoZXJlZm9yZSB0aGUgY29kZSBpcyBpbmRlZWQgZnVuY3Rpb25hbC4KCkNhbiB3ZSByZWFjaCB0aGlzIGZ1bmN0aW9uYWxpdHkgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gQWJzb2x1dGVseS4gQXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBibG9jayBkZXZpY2UsIGBudWxsX2Jsa2AgaXMgZGVzaWduZWQgdG8gcnVuIGFueXdoZXJlIHRoZSBrZXJuZWwgcnVucywgc28gdGhlcmUgYXJlIG5vIGVudmlyb25tZW50YWwgY29uc3RyYWludHMuCgpUaGUgbmV4dCBzdGVwIGlzIHRvIGNvbmZpcm0gdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24uIFdlIG5lZWQgYENPTkZJR19CTEtfREVWX05VTExfQkxLYCBlbmFibGVkLiBMZXQmIzM5O3MgdmVyaWZ5IHRoYXQgcXVpY2tseSB3aXRoIGBncmVwcGVyYCBhbmQgbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE5OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL01ha2VmaWxlPTM1PW9iai0kKENPTkZJR19CTEtfREVWX1JOQkQpXHQmIzQzOz0gcm5iZC9cbmRyaXZlcnMvYmxvY2svTWFrZWZpbGUtMzYtXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVx0JiM0Mzs9IG51bGxfYmxrL1xuZHJpdmVycy9ibG9jay9NYWtlZmlsZS0zOC1vYmotJChDT05GSUdfQkxLX0RFVl9SVVNUX05VTEwpICYjNDM7PSBybnVsbC9cbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzo2OmNvbmZpZyBCTEtfREVWX05VTExfQkxLXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O051bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctOS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzoxMDpjb25maWcgQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy0xMS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzoxMjpcdGRlcGVuZHMgb24gQkxLX0RFVl9OVUxMX0JMSyBcdTAwMjZcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZT00PWNjZmxhZ3MteVx0XHRcdCYjNDM7PSAtSSQoc3JjKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZS01LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVx0JiM0Mzs9IG51bGxfYmxrLm9cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvTWFrZWZpbGUtNy1udWxsX2Jsay1vYmpzXHRcdFx0Oj0gbWFpbi5vXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMjojaWZkZWYgQ09ORklHX0JMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMy1zdGF0aWMgREVDTEFSRV9GQVVMVF9BVFRSKG51bGxfdGltZW91dF9hdHRyKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz05OD1NT0RVTEVfUEFSTV9ERVNDKGhvbWVfbm9kZSwgXCYjMzQ7SG9tZSBub2RlIGZvciB0aGUgZGV2aWNlXCYjMzQ7KTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTAwOiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEwMS0vKlxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTY0MT1zdGF0aWMgY29uc3Qgc3RydWN0IGNvbmZpZ19pdGVtX3R5cGUgbnVsbGJfZGV2aWNlX3R5cGUgPSB7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjQ2LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NjQ3OiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY0OC1cbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz03Njk9c3RhdGljIHN0cnVjdCBudWxsYl9kZXZpY2UgKm51bGxfYWxsb2NfZGV2KHZvaWQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzc2LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Nzc3OiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc3OC1cdGRldi1cdTAwM2V0aW1lb3V0X2NvbmZpZy5hdHRyID0gbnVsbF90aW1lb3V0X2F0dHI7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTQ3Nj1zdGF0aWMgdm9pZCBudWxsYl9zZXR1cF9id3RpbWVyKHN0cnVjdCBudWxsYiAqbnVsbGIpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQ4NC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE0ODU6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQ4Ni1cbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xODc3PXN0YXRpYyBpbnQgbnVsbF92YWxpZGF0ZV9jb25mKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTE5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTkyMDojaWZkZWYgQ09ORklHX0JMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTIxLXN0YXRpYyBib29sIF9fbnVsbF9zZXR1cF9mYXVsdChzdHJ1Y3QgZmF1bHRfYXR0ciAqYXR0ciwgY2hhciAqc3RyKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE5MzQ9c3RhdGljIGJvb2wgbnVsbF9zZXR1cF9mYXVsdCh2b2lkKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTkzNS17XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxOTM2OiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5MzctXHRpZiAoIV9fbnVsbF9zZXR1cF9mYXVsdChcdTAwMjZudWxsX3RpbWVvdXRfYXR0ciwgZ190aW1lb3V0X3N0cikpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oPTUzPXN0cnVjdCBudWxsYl9kZXZpY2Uge1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC01NS1cdHN0cnVjdCBjb25maWdfZ3JvdXAgZ3JvdXA7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmg6NTY6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTU3LVx0c3RydWN0IGZhdWx0X2NvbmZpZyB0aW1lb3V0X2NvbmZpZztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxOToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NzAzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIE51bGwgQmxvY2sgRGV2aWNlIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgemVyb2VkIGluIG9uIHRoZSBgQkxLX0RFVl9OVUxMX0JMS2AgY29uZmlndXJhdGlvbiDigJMgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IHRoZSBrZXkgdG8gdGhpcy4gTm93LCB0aGlzIHBhdGNoIGdvZXMgaW4gYW5kIHR3ZWFrcyBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGl0LiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1lc3Npbmcgd2l0aCBgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlYCwgd2hpY2ggaXMgdGhhdCBtYWNybyBmb3IgZ2VuZXJhdGluZyBzdG9yZSBmdW5jdGlvbnMgaW4gY29uZmlnZnMsIGFuZCB0aGVuIGl0IHRvdWNoZXMgYSBidW5jaCBvZiBvdGhlcnMuIEkgc2VlIG1vZGlmaWNhdGlvbnMgaW4gYG51bGxfdXBkYXRlX25yX2h3X3F1ZXVlc2AsIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCwgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYCwgYG51bGxiX2RldmljZV9wb3dlcl9zaG93YCwgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGBudWxsX2NvbmZpZ19kaXNjYXJkYCwgYG51bGxfdmFsaWRhdGVfY29uZmAsIGBudWxsX2FkZF9kZXZgLCBgbnVsbF9pbml0YCwgYG51bGxfZXhpdGAsIGFuZCBgbnVsbF9pbml0X3pvbmVkX2RldmAuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIG1vc3QgcHJvbWlzaW5nIGZ1bmN0aW9ucyBmb3IgZnV6emluZy4gSSYjMzk7bSB0aGlua2luZyB0aGF0IEkgd2FudCB0byB0YXJnZXQgYXJlYXMgd2hlcmUgZXh0ZXJuYWwgaW5wdXQgY2FuIGJlIHByb2Nlc3NlZCBhbmQgdGhhdCBjb3VsZCBsZWFkIHRvIHNvbWV0aGluZyBpbnRlcmVzdGluZy4gQmFzZWQgb24gYSBxdWljayBza2ltLCBJJiMzOTttIHRoaW5raW5nIHRoYXQgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCwgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYCwgYG51bGxfdmFsaWRhdGVfY29uZmAsIGBudWxsX2FkZF9kZXZgLCBhbmQgYG51bGxfaW5pdF96b25lZF9kZXZgIGFyZSBmdW5jdGlvbnMgdG8gZm9jdXMgb24uCgpCdXQsIEkgc2hvdWxkIHByb2JhYmx5IHRha2UgYSBtb21lbnQgdG8gZG91YmxlLWNoZWNrIG15IHdvcmsuIEp1c3QgdG8gYmUgc3VyZSwgSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBjb2RlIGFnYWluIHRvIHNlZSBpZiBJIG1pc3NlZCBhbnkgb3RoZXIgcHJvbWlzaW5nIHRhcmdldHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTk6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnVsbGJfZGV2aWNlXy4qX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9Mjk2PXN0YXRpYyBpbmxpbmUgc3NpemVfdCBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3coYm9vbCB2YWwsIGNoYXIgKnBhZ2UpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzAwLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzAxOnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV91aW50X2F0dHJfc3RvcmUodW5zaWduZWQgaW50ICp2YWwsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zMDItXHRjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzE0LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzE1OnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV91bG9uZ19hdHRyX3N0b3JlKHVuc2lnbmVkIGxvbmcgKnZhbCxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTMxNi1cdGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zMjgtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozMjk6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zMzAtXHRzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MzUxPXN0YXRpYyBzc2l6ZV90XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozNTI6bnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcdFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNTMtXHRcdFx0ICAgIHNpemVfdCBjb3VudClcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzU5LVx0XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozNjA6XHRyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zdG9yZShcdTAwMjZuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzYxLVx0aWYgKHJldCBcdTAwM2MgMClcdFx0XHRcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDcwPXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NzUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzY6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ3Ny1cdFx0XHRcdCAgICAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ4Mi1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ4MzpcdHJldCA9IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoXHUwMDI2bmV3cCwgcGFnZSwgY291bnQpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDg0LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz01MTc9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MjMtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1MjQ6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MjUtXHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz01Njg9Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBiYWRibG9ja3MpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTY5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTcwOnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTU3MS1cdFx0XHRcdFx0XHRjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NTc3PUNPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9yZWFkb25seSk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01NzgtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1Nzk6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01ODAtXHRcdFx0XHRcdCAgICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTk6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTM3NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgU3l6a2FsbGVyJiMzOTtzIEludGVyYWN0aW9uIHdpdGggRHluYW1pY2FsbHkgR2VuZXJhdGVkIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgYSBtYWNybywgYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAsIHdoaWNoIGlzIGdvaW5nIHRvIGdlbmVyYXRlIGZ1bmN0aW9ucyBsaWtlIGBudWxsYl9kZXZpY2Vfc2l6ZV9zdG9yZWAsIGBudWxsYl9kZXZpY2Vfc3VibWl0X3F1ZXVlc19zdG9yZWAsIGFuZCBzbyBvbi4gTXkgY29uY2VybiBpcyB0aGF0IFN5emthbGxlciBtaWdodCBoYXZlIHRyb3VibGUgdGFyZ2V0aW5nIHRoZXNlICpkeW5hbWljYWxseSogZ2VuZXJhdGVkIGZ1bmN0aW9ucyBkaXJlY3RseSBieSBuYW1lLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBwcm9ibGVtIHdpdGggY29kZSBnZW5lcmF0aW9uLCBpc24mIzM5O3QgaXQ/CgpUaGUgc3RhbmRhcmQgYXBwcm9hY2ggaXMgdG8gZXhwbGljaXRseSBsaXN0IGFsbCBmdW5jdGlvbnMgc3l6a2FsbGVyIG5lZWRzIHRvIGhhdmUgYWNjZXNzIHRvLiBJIHNlZSBhIGZldyBmdW5jdGlvbnMgZGVmaW5lZCBvdXRzaWRlIHRoZSBtYWNybzogYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGFuZCB0aGUgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgLCBgbnVsbF92YWxpZGF0ZV9jb25mYCwgYG51bGxfYWRkX2RldmAsIGFuZCBgbnVsbF9pbml0X3pvbmVkX2RldmAuIFRoZXNlIGFyZSBlYXN5IHdpbnMhIFdlIGNhbiBkZWZpbml0ZWx5IGxpc3QgdGhvc2UuCgpTbywgaGVyZSYjMzk7cyB0aGUgbGlzdCBvZiBmdW5jdGlvbnMgdGhhdCB3ZSBzaG91bGQgYmUgYWJsZSB0byBtYWtlIHVzZSBvZjoKLSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYAotIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYAotIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AKLSBgbnVsbF92YWxpZGF0ZV9jb25mYAotIGBudWxsX2FkZF9kZXZgCi0gYG51bGxfaW5pdF96b25lZF9kZXZgCgpCdXQgd2FpdCwgaG9sZCBvbi4uLnRoYXQgYCMjTkFNRSMjYCBpbiB0aGUgbWFjcm8uLi4gdGhhdCYjMzk7cyB0aGUga2V5LiBJIG5lZWQgdG8gZmlndXJlIG91dCAqd2hhdCogbmFtZXMgdGhhdCBtYWNybyBpcyBnZW5lcmF0aW5nLiBJIGNhbiYjMzk7dCBiZSBzdXJlIHRoaXMgaXMgYSBjb21wcmVoZW5zaXZlIGxpc3Qgd2l0aG91dCBrbm93aW5nIHRoZSBvdXRwdXRzIG9mIHRoYXQgbWFjcm8uIExldCYjMzk7cyBzZWUgaWYgSSBjYW4gZmluZCBhbiBleGFtcGxlIHVzYWdlIG9mIHRoZSBtYWNybyB0byBkZXRlcm1pbmUgdGhlIGdlbmVyYXRlZCBmdW5jdGlvbiBuYW1lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxOToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtOVUxMQl9ERVZJQ0VfQVRUUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTMyOT1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3N0b3JlKGJvb2wgKnZhbCwgY29uc3QgY2hhciAqcGFnZSxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNDMtLyogVGhlIGZvbGxvd2luZyBtYWNybyBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggVFlQRSA9IHt1aW50LCB1bG9uZywgYm9vbH0uICovXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozNDQ6I2RlZmluZSBOVUxMQl9ERVZJQ0VfQVRUUihOQU1FLCBUWVBFLCBBUFBMWSlcdFx0XHRcdFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNDUtc3RhdGljIHNzaXplX3RcdFx0XHRcdFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00MzA9c3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDM1LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDM2Ok5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQzNzpOVUxMQl9ERVZJQ0VfQVRUUihjb21wbGV0aW9uX25zZWMsIHVsb25nLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQzODpOVUxMQl9ERVZJQ0VfQVRUUihzdWJtaXRfcXVldWVzLCB1aW50LCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQzOTpOVUxMQl9ERVZJQ0VfQVRUUihwb2xsX3F1ZXVlcywgdWludCwgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQwOk5VTExCX0RFVklDRV9BVFRSKGhvbWVfbm9kZSwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NDE6TlVMTEJfREVWSUNFX0FUVFIocXVldWVfbW9kZSwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NDI6TlVMTEJfREVWSUNFX0FUVFIoYmxvY2tzaXplLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0MzpOVUxMQl9ERVZJQ0VfQVRUUihtYXhfc2VjdG9ycywgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NDQ6TlVMTEJfREVWSUNFX0FUVFIoaXJxbW9kZSwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NDU6TlVMTEJfREVWSUNFX0FUVFIoaHdfcXVldWVfZGVwdGgsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ2Ok5VTExCX0RFVklDRV9BVFRSKGluZGV4LCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0NzpOVUxMQl9ERVZJQ0VfQVRUUihibG9ja2luZywgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NDg6TlVMTEJfREVWSUNFX0FUVFIodXNlX3Blcl9ub2RlX2hjdHgsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ5Ok5VTExCX0RFVklDRV9BVFRSKG1lbW9yeV9iYWNrZWQsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDUwOk5VTExCX0RFVklDRV9BVFRSKGRpc2NhcmQsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDUxOk5VTExCX0RFVklDRV9BVFRSKG1icHMsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDUyOk5VTExCX0RFVklDRV9BVFRSKGNhY2hlX3NpemUsIHVsb25nLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1MzpOVUxMQl9ERVZJQ0VfQVRUUih6b25lZCwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTQ6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9zaXplLCB1bG9uZywgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTU6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9jYXBhY2l0eSwgdWxvbmcsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU2Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVfbnJfY29udiwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTc6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9tYXhfb3BlbiwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTg6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9tYXhfYWN0aXZlLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1OTpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX2FwcGVuZF9tYXhfc2VjdG9ycywgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjA6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9mdWxsLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MTpOVUxMQl9ERVZJQ0VfQVRUUih2aXJ0X2JvdW5kYXJ5LCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MjpOVUxMQl9ERVZJQ0VfQVRUUihub19zY2hlZCwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjM6TlVMTEJfREVWSUNFX0FUVFIoc2hhcmVkX3RhZ3MsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY0Ok5VTExCX0RFVklDRV9BVFRSKHNoYXJlZF90YWdfYml0bWFwLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2NTpOVUxMQl9ERVZJQ0VfQVRUUihmdWEsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY2Ok5VTExCX0RFVklDRV9BVFRSKHJvdGF0aW9uYWwsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY3Ok5VTExCX0RFVklDRV9BVFRSKGJhZGJsb2Nrc19vbmNlLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2ODpOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NjktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTk6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzNDgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBudWxsIGJsb2NrIGRldmljZSBjb2RlIGFuZCBwaW5wb2ludGluZyBzb21lIGtleSBhcmVhcy4gVGhlIHBhdGNoIGlzIGNsZWFybHkgdG91Y2hpbmcgdGhlIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgIGZ1bmN0aW9ucywgd2hpY2ggYXJlIGdlbmVyYXRlZCBmb3IgdmFyaW91cyBhdHRyaWJ1dGVzLiBNeSBpbml0aWFsIGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZXNlIHNwZWNpZmljIHN5bWJvbHM6IGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLCBgbnVsbF92YWxpZGF0ZV9jb25mYCwgYG51bGxfYWRkX2RldmAsIGBudWxsX2luaXRfem9uZWRfZGV2YCwgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgLCBhbmQgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYC4gVGhlc2Ugc2VlbSBsaWtlIGV4Y2VsbGVudCBzdGFydGluZyBwb2ludHMgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlcyBhbmQgdGhlaXIgaW1wYWN0LgoKTm93LCBJIG5lZWQgdG8gY29uc2lkZXIgYW55IHBvdGVudGlhbCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gVGhlIGluY2x1c2lvbiBvZiBgbnVsbF9pbml0X3pvbmVkX2RldmAgcmFpc2VzIGEgcmVkIGZsYWcgcmVnYXJkaW5nIHpvbmVkIGJsb2NrIGRldmljZXMuIEkgc3VzcGVjdCB0aGF0IGBDT05GSUdfQkxLX0RFVl9aT05FRGAgbWlnaHQgYmUgcmVxdWlyZWQgZm9yIHRoYXQgZnVuY3Rpb24gdG8gb3BlcmF0ZSBjb3JyZWN0bHkuIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBjaGVjayB0aGUgYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuY2AgZmlsZSB0byBjb25maXJtLiBVbmRlcnN0YW5kaW5nIHRoaXMgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudCB3aWxsIGJlIGNydWNpYWwgZm9yIHRoZSBvdmVyYWxsIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE5OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O251bGxfaW5pdF96b25lZF9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xOTQ3PXN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTg0LVx0aWYgKGRldi1cdTAwM2V6b25lZCkge1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTk4NTpcdFx0cnYgPSBudWxsX2luaXRfem9uZWRfZGV2KGRldiwgXHUwMDI2bGltKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5ODYtXHRcdGlmIChydilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmg9MTM4PWJsa19zdGF0dXNfdCBudWxsX2hhbmRsZV9tZW1vcnlfYmFja2VkKHN0cnVjdCBudWxsYl9jbWQgKmNtZCwgZW51bSByZXFfb3Agb3AsXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE0MS0jaWZkZWYgQ09ORklHX0JMS19ERVZfWk9ORURcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNDI6aW50IG51bGxfaW5pdF96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LCBzdHJ1Y3QgcXVldWVfbGltaXRzICpsaW0pO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE0My1pbnQgbnVsbF9yZWdpc3Rlcl96b25lZF9kZXYoc3RydWN0IG51bGxiICpudWxsYik7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oPTE1Mj1zc2l6ZV90IHpvbmVfY29uZF9zdG9yZShzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKnBhZ2UsXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE1NC0jZWxzZVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oOjE1NTpzdGF0aWMgaW5saW5lIGludCBudWxsX2luaXRfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNTYtXHRcdHN0cnVjdCBxdWV1ZV9saW1pdHMgKmxpbSlcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM9NDI9c3RhdGljIGlubGluZSB2b2lkIG51bGxfdW5sb2NrX3pvbmUoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYy01MC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYzo1MTppbnQgbnVsbF9pbml0X3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmMtNTItXHRcdFx0c3RydWN0IHF1ZXVlX2xpbWl0cyAqbGltKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxOToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjI4OAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbmZpZ3VyYXRpb24gRGVjaXNpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgdGhpcyBzdHJhaWdodC4gV2UgZGVmaW5pdGVseSBuZWVkIGBDT05GSUdfQkxLX0RFVl9aT05FRGAuIFNvLCB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QgbmVlZHMgdG8gaW5jbHVkZSBgQkxLX0RFVl9OVUxMX0JMS2AgYW5kIGBCTEtfREVWX1pPTkVEYC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLgoKTm93LCBJIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgb3Igbm90IGBDT05GSUdfQ09ORklHRlNfRlNgIGlzIHJlcXVpcmVkLiBUaGUgY29kZSBmb3IgYG51bGxfYmxrYCBpbmRpY2F0ZXMgdGhhdCBpdCB1c2VzIGNvbmZpZ2ZzLCBzbyBJIHNob3VsZCBiZSBhYmxlIHRvIGdldCB0aGUgYW5zd2VyIGJ5IGNoZWNraW5nIHRoZSBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnYCBmaWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxOToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQkxLX0RFVl9OVUxMX0JMSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjY6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy05LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjEwOmNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZhdWx0IGluamVjdGlvbiBmb3IgTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxOToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjY4MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyB0aGUgcGVyc3BlY3RpdmUgb2Ygc29tZW9uZSBpbW1lcnNlZCBpbiB0aGlzIGNvZGU6CgoqKlVucmF2ZWxpbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgQkxLX0RFVl9OVUxMX0JMS2AqKgoKUmlnaHQsIGxldCBtZSBwYXVzZSBhbmQgdGhpbmsgdGhpcyB0aHJvdWdoLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgYEJMS19ERVZfTlVMTF9CTEtgIGFjdHVhbGx5ICpkb2VzKi4gQmVmb3JlIEkgZGl2ZSBpbnRvIGl0cyBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5LCBJIGhhdmUgdG8gdHJhY2UgaXRzIGRlcGVuZGVuY2llcy4gV2hlcmUgZG9lcyB0aGlzIGNvbnN0YW50IHNob3cgdXA/IFdoYXQgb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSByZWx5IG9uIGl0PyBBcmUgdGhlcmUgYW55IG9idmlvdXMgbW9kdWxlcyB0aGF0IGFyZSB0aWdodGx5IGNvdXBsZWQgdG8gaXRzIHZhbHVlIG9yIHB1cnBvc2U/IFRoaXMgY291bGQgaW52b2x2ZSBsb29raW5nIGF0IGAjZGVmaW5lYCBzdGF0ZW1lbnRzLCBtYWNybyBleHBhbnNpb25zLCBhbmQgY3Jvc3MtcmVmZXJlbmNlcyB3aXRoaW4gdGhlIHJlbGV2YW50IGhlYWRlciBmaWxlcyBhbmQgc291cmNlIGNvZGUuIFVuZGVyc3RhbmRpbmcgdGhvc2UgcmVsYXRpb25zaGlwcyBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIG92ZXJhbGwgcm9sZSBpbiB0aGlzIGFyZWEuIEl0JiMzOTtzIHRoZSBvbmx5IHdheSB0byBhdm9pZCBtYWtpbmcgY2hhbmdlcyB0aGF0IGhhdmUgdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMgZWxzZXdoZXJlIGluIHRoZSBjb2RlLiBJIG5lZWQgdG8gbWFrZSBhIG1lbnRhbCBtYXAgb2YgaXRzIGNvbm5lY3Rpb25zIGJlZm9yZSBjb250aW51aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxOToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBOdWxsIGJsb2NrIGRldmljZSBkcml2ZXIgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgQkxLX0RFVl9OVUxMX0JMS1xuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7TnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuICAgODpcdFx0c2VsZWN0IENPTkZJR0ZTX0ZTXG4gICA5Olx0XG4gIDEwOlx0Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXG4gIDExOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXCYjMzQ7XG4gIDEyOlx0XHRkZXBlbmRzIG9uIEJMS19ERVZfTlVMTF9CTEsgXHUwMDI2XHUwMDI2IEZBVUxUX0lOSkVDVElPTl9DT05GSUdGU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxOToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzA4OQoJCQkJCQkJb3V0cHV0OiAxNTgKCQkJCQkJCXRob3VnaHRzOiAzMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTnVsbCBCbG9jayBEcml2ZXIgRnV6emluZyBTdHJhdGVneSoqCgpPa2F5LCBzbyBJJiMzOTttIHB1dHRpbmcgdG9nZXRoZXIgYSBmdXp6aW5nIHBsYW4gZm9yIHRoaXMgbnVsbF9ibGsgZHJpdmVyIHBhdGNoLiBUaGUgZmlyc3QgdGhpbmcgdG8gcmVtZW1iZXIgaXMgdGhhdCBgQ09ORklHRlNfRlNgIGlzIGF1dG9tYXRpY2FsbHkgcHVsbGVkIGluIGJ5IGBCTEtfREVWX05VTExfQkxLYCwgc28gSSBkb24mIzM5O3QgaGF2ZSB0byB3b3JyeSBhYm91dCBsaXN0aW5nIGl0IGV4cGxpY2l0bHkuIFRoYXQgc2F2ZXMgYSBzdGVwLgoKQWxyaWdodCwgbGV0JiMzOTtzIHN1bW1hcml6ZSB0aGUga2V5IHBvaW50cyBoZXJlOiB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlc2Ugc3ltYm9sczogYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCwgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYCwgYG51bGxfdmFsaWRhdGVfY29uZmAsIGBudWxsX2FkZF9kZXZgLCBhbmQgYG51bGxfaW5pdF96b25lZF9kZXZgLgoKSSYjMzk7bSBlbmFibGluZyB0aGVzZSBjb25maWcgb3B0aW9uczogYEJMS19ERVZfTlVMTF9CTEtgIGFuZCBgQkxLX0RFVl9aT05FRGAsIGJlY2F1c2UgdGhpcyBkcml2ZXIgaXMgc29mdHdhcmUtZW11bGF0ZWQsIG1ha2luZyBpdCBpZGVhbCBmb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBhbmQgdGhlIHBhdGNoIGFkZHJlc3NlcyBkYXRhIHJhY2VzIGFuZCBzb21lIGluaXRpYWxpemF0aW9uIGlzc3Vlcy4gTXkgcHJpbWFyeSBmdXp6aW5nIHRhcmdldHMgc2hvdWxkIGJlIHRoZSB1cGRhdGVkIGNvbmZpZ2ZzIGF0dHJpYnV0ZSBzdG9yZSBmdW5jdGlvbnMgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbiBsb2dpYywgZXNwZWNpYWxseSBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBmaXguCgpOb3csIGEgcXVpY2sgY2hlY2sgb24gdGhlIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgIG1hY3JvLiBBaCwgcmlnaHQsIHRob3NlIGFyZSBzdGF0aWMgZnVuY3Rpb25zLCBsaWtlIGBudWxsYl9kZXZpY2Vfc2l6ZV9zdG9yZWAuIFN5emthbGxlciAqY2FuKiBzdGlsbCBnZXQgdG8gdGhlbSBpZiB0aGV5JiMzOTtyZSByZWFjaGFibGUsIGV2ZW4gaWYgdGhleSYjMzk7cmUgc3RhdGljLCBidXQgbGlzdGluZyBldmVyeSBzaW5nbGUgb25lIGlzbiYjMzk7dCBmZWFzaWJsZS4gSSB0aGluayBmb2N1c2luZyBvbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBhbmQgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgIGlzIHN1ZmZpY2llbnQgZm9yIGluaXRpYWwgY292ZXJhZ2UuCgpIb2xkIG9uLi4uIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCBpcyBjYWxsZWQgZnJvbSBgbnVsbGJfZGV2aWNlX3N1Ym1pdF9xdWV1ZXNfc3RvcmVgLiBPa2F5LCB0aGF0JiMzOTtzIGdvb2QuIExpc3RpbmcgdGhlIGZvcm1lciBjb3ZlcnMgdGhlIGxhdHRlci4gUGVyZmVjdC4KCkFscmlnaHQsIHdpdGggdGhhdCBjb25maXJtZWQsIGxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX05VTExfQkxLJiMzNDssCiAgICAmIzM0O0JMS19ERVZfWk9ORUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsX3ZhbGlkYXRlX2NvbmYmIzM0OywKICAgICYjMzQ7bnVsbF9hZGRfZGV2JiMzNDssCiAgICAmIzM0O251bGxfaW5pdF96b25lZF9kZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgZGF0YSByYWNlcyBhbmQgbW9kdWxlIGluaXRpYWxpemF0aW9uIG9yZGVyaW5nIGluIHRoZSBudWxsX2JsayBkcml2ZXIuIFRoZSBkcml2ZXIgaXMgc29mdHdhcmUtZW11bGF0ZWQgYW5kIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBtb2RpZmllZCBjb25maWdmcyBhdHRyaWJ1dGUgc3RvcmUgZnVuY3Rpb25zIGFuZCBkZXZpY2UgaW5pdGlhbGl6YXRpb24gbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9aT05FRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2FwcGx5X3BvbGxfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxfdmFsaWRhdGVfY29uZiYjMzQ7LAogICAgJiMzNDtudWxsX2FkZF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbF9pbml0X3pvbmVkX2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBkYXRhIHJhY2VzIGFuZCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgaW4gdGhlIG51bGxfYmxrIGRyaXZlci4gVGhlIGRyaXZlciBpcyBzb2Z0d2FyZS1lbXVsYXRlZCBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG1vZGlmaWVkIGNvbmZpZ2ZzIGF0dHJpYnV0ZSBzdG9yZSBmdW5jdGlvbnMgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbiBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE5OjIzOjI3LjMwMTkzMjc0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjE3NTQzODQ1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCIsXG4gICAgXCJCTEtfREVWX1pPTkVEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCIsXG4gICAgXCJudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzXCIsXG4gICAgXCJudWxsYl9hcHBseV9wb2xsX3F1ZXVlc1wiLFxuICAgIFwibnVsbF92YWxpZGF0ZV9jb25mXCIsXG4gICAgXCJudWxsX2FkZF9kZXZcIixcbiAgICBcIm51bGxfaW5pdF96b25lZF9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBkYXRhIHJhY2VzIGFuZCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgaW4gdGhlIG51bGxfYmxrIGRyaXZlci4gVGhlIGRyaXZlciBpcyBzb2Z0d2FyZS1lbXVsYXRlZCBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG1vZGlmaWVkIGNvbmZpZ2ZzIGF0dHJpYnV0ZSBzdG9yZSBmdW5jdGlvbnMgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbiBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTk6MjM6MjcuMzAxOTQyODczWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTQzOTA0NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmNGRmM2QyZTliMmYzYzM1ODQ5ZjkxODQ0OTMwODY5ZTJjNmVjODdmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDggMTk6MjM6MjUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xcbmluZGV4IGY4YzBmZDU3ZTA0MWE4Li5mZDNjOTkzYTY3YjJiZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXFxuQEAgLTY2LDcgKzY2LDcgQEAgc3RydWN0IG51bGxiX3BhZ2Uge1xcbiAjZGVmaW5lIE5VTExCX1BBR0VfRlJFRSAoTUFQX1NaIC0gMilcXG4gXFxuIHN0YXRpYyBMSVNUX0hFQUQobnVsbGJfbGlzdCk7XFxuLXN0YXRpYyBzdHJ1Y3QgbXV0ZXggbG9jaztcXG4rc3RhdGljIERFRklORV9NVVRFWChsb2NrKTtcXG4gc3RhdGljIGludCBudWxsX21ham9yO1xcbiBzdGF0aWMgREVGSU5FX0lEQShudWxsYl9pbmRleGVzKTtcXG4gc3RhdGljIHN0cnVjdCBibGtfbXFfdGFnX3NldCB0YWdfc2V0O1xcbkBAIC0zNDYsNyArMzQ2LDcgQEAgc3RhdGljIHNzaXplX3RcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIG51bGxiX2RldmljZV8jI05BTUUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcXHRcXFxcXFxuIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdHJldHVybiBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zaG93KFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0XFx0dG9fbnVsbGJfZGV2aWNlKGl0ZW0pLVxcdTAwM2VOQU1FLCBwYWdlKTtcXHRcXFxcXFxuK1xcdFxcdFxcdFJFQURfT05DRSh0b19udWxsYl9kZXZpY2UoaXRlbSktXFx1MDAzZU5BTUUpLCBwYWdlKTtcXHRcXFxcXFxuIH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIHN0YXRpYyBzc2l6ZV90XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLFxcdFxcXFxcXG5AQCAtMzYwLDEzICszNjAsMTYgQEAgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcXHRcXFxcXFxuIFxcdHJldCA9IG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3N0b3JlKFxcdTAwMjZuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcXFxcXFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0cmV0dXJuIHJldDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0aWYgKGFwcGx5X2ZuKVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0cmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpO1xcdFxcdFxcdFxcdFxcXFxcXG4gXFx0ZWxzZSBpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKSkgXFx0XFxcXFxcbiBcXHRcXHRyZXQgPSAtRUJVU1k7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRpZiAoIXJldClcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFdSSVRFX09OQ0UoZGV2LVxcdTAwM2VOQU1FLCBuZXdfdmFsdWUpO1xcdFxcdFxcdFxcXFxcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0cmV0dXJuIHJldDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdGRldi1cXHUwMDNlTkFNRSA9IG5ld192YWx1ZTtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdHJldHVybiBjb3VudDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIENPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgTkFNRSk7XFxuQEAgLTQwMSw4ICs0MDQsOCBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbiBcXHQgKi9cXG4gXFx0ZGV2LVxcdTAwM2VwcmV2X3N1Ym1pdF9xdWV1ZXMgPSBkZXYtXFx1MDAzZXN1Ym1pdF9xdWV1ZXM7XFxuIFxcdGRldi1cXHUwMDNlcHJldl9wb2xsX3F1ZXVlcyA9IGRldi1cXHUwMDNlcG9sbF9xdWV1ZXM7XFxuLVxcdGRldi1cXHUwMDNlc3VibWl0X3F1ZXVlcyA9IHN1Ym1pdF9xdWV1ZXM7XFxuLVxcdGRldi1cXHUwMDNlcG9sbF9xdWV1ZXMgPSBwb2xsX3F1ZXVlcztcXG4rXFx0V1JJVEVfT05DRShkZXYtXFx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHN1Ym1pdF9xdWV1ZXMpO1xcbitcXHRXUklURV9PTkNFKGRldi1cXHUwMDNlcG9sbF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcXG4gXFxuIFxcdHNldCA9IGRldi1cXHUwMDNlbnVsbGItXFx1MDAzZXRhZ19zZXQ7XFxuIFxcdG5yX2h3X3F1ZXVlcyA9IHN1Ym1pdF9xdWV1ZXMgKyBwb2xsX3F1ZXVlcztcXG5AQCAtNDExLDggKzQxNCw4IEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuIFxcbiBcXHRpZiAocmV0KSB7XFxuIFxcdFxcdC8qIG9uIGVycm9yLCByZXZlcnQgdGhlIHF1ZXVlIG51bWJlcnMgKi9cXG4tXFx0XFx0ZGV2LVxcdTAwM2VzdWJtaXRfcXVldWVzID0gZGV2LVxcdTAwM2VwcmV2X3N1Ym1pdF9xdWV1ZXM7XFxuLVxcdFxcdGRldi1cXHUwMDNlcG9sbF9xdWV1ZXMgPSBkZXYtXFx1MDAzZXByZXZfcG9sbF9xdWV1ZXM7XFxuK1xcdFxcdFdSSVRFX09OQ0UoZGV2LVxcdTAwM2VzdWJtaXRfcXVldWVzLCBkZXYtXFx1MDAzZXByZXZfc3VibWl0X3F1ZXVlcyk7XFxuK1xcdFxcdFdSSVRFX09OQ0UoZGV2LVxcdTAwM2Vwb2xsX3F1ZXVlcywgZGV2LVxcdTAwM2VwcmV2X3BvbGxfcXVldWVzKTtcXG4gXFx0fVxcbiBcXG4gXFx0cmV0dXJuIHJldDtcXG5AQCAtNDIxLDI1ICs0MjQsMTMgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgc3VibWl0X3F1ZXVlcylcXG4ge1xcbi1cXHRpbnQgcmV0O1xcbi1cXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuLVxcdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXFx1MDAzZXBvbGxfcXVldWVzKTtcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXG4tXFxuLVxcdHJldHVybiByZXQ7XFxuK1xcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVxcdTAwM2Vwb2xsX3F1ZXVlcyk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgcG9sbF9xdWV1ZXMpXFxuIHtcXG4tXFx0aW50IHJldDtcXG4tXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbi1cXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVxcdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuLVxcbi1cXHRyZXR1cm4gcmV0O1xcbitcXHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xcbiB9XFxuIFxcbiBOVUxMQl9ERVZJQ0VfQVRUUihzaXplLCB1bG9uZywgTlVMTCk7XFxuQEAgLTQ3OCw3ICs0NjksOCBAQCBOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7XFxuIFxcbiBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXFxuIHtcXG4tXFx0cmV0dXJuIG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktXFx1MDAzZXBvd2VyLCBwYWdlKTtcXG4rXFx0cmV0dXJuIG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyhcXG4rXFx0XFx0XFx0UkVBRF9PTkNFKHRvX251bGxiX2RldmljZShpdGVtKS1cXHUwMDNlcG93ZXIpLCBwYWdlKTtcXG4gfVxcbiBcXG4gc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5AQCAtNTA1LDExICs0OTcsMTEgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0c2V0X2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpO1xcbi1cXHRcXHRkZXYtXFx1MDAzZXBvd2VyID0gbmV3cDtcXG4rXFx0XFx0V1JJVEVfT05DRShkZXYtXFx1MDAzZXBvd2VyLCBuZXdwKTtcXG4gXFx0XFx0cmV0ID0gY291bnQ7XFxuIFxcdH0gZWxzZSBpZiAoZGV2LVxcdTAwM2Vwb3dlciBcXHUwMDI2XFx1MDAyNiAhbmV3cCkge1xcbiBcXHRcXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpKSB7XFxuLVxcdFxcdFxcdGRldi1cXHUwMDNlcG93ZXIgPSBuZXdwO1xcbitcXHRcXHRcXHRXUklURV9PTkNFKGRldi1cXHUwMDNlcG93ZXIsIG5ld3ApO1xcbiBcXHRcXHRcXHRudWxsX2RlbF9kZXYoZGV2LVxcdTAwM2VudWxsYik7XFxuIFxcdFxcdH1cXG4gXFx0XFx0Y2xlYXJfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcXHUwMDI2ZGV2LVxcdTAwM2VmbGFncyk7XFxuQEAgLTE3OTIsMTMgKzE3ODQsMTMgQEAgc3RhdGljIHZvaWQgbnVsbF9jb25maWdfZGlzY2FyZChzdHJ1Y3QgbnVsbGIgKm51bGxiLCBzdHJ1Y3QgcXVldWVfbGltaXRzICpsaW0pXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdGlmICghbnVsbGItXFx1MDAzZWRldi1cXHUwMDNlbWVtb3J5X2JhY2tlZCkge1xcbi1cXHRcXHRudWxsYi1cXHUwMDNlZGV2LVxcdTAwM2VkaXNjYXJkID0gZmFsc2U7XFxuK1xcdFxcdFdSSVRFX09OQ0UobnVsbGItXFx1MDAzZWRldi1cXHUwMDNlZGlzY2FyZCwgZmFsc2UpO1xcbiBcXHRcXHRwcl9pbmZvKFxcXCJkaXNjYXJkIG9wdGlvbiBpcyBpZ25vcmVkIHdpdGhvdXQgbWVtb3J5IGJhY2tpbmdcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChudWxsYi1cXHUwMDNlZGV2LVxcdTAwM2V6b25lZCkge1xcbi1cXHRcXHRudWxsYi1cXHUwMDNlZGV2LVxcdTAwM2VkaXNjYXJkID0gZmFsc2U7XFxuK1xcdFxcdFdSSVRFX09OQ0UobnVsbGItXFx1MDAzZWRldi1cXHUwMDNlZGlzY2FyZCwgZmFsc2UpO1xcbiBcXHRcXHRwcl9pbmZvKFxcXCJkaXNjYXJkIG9wdGlvbiBpcyBpZ25vcmVkIGluIHpvbmVkIG1vZGVcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG5AQCAtMTg5MCwzMSArMTg4MiwzMSBAQCBzdGF0aWMgaW50IG51bGxfdmFsaWRhdGVfY29uZihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuIFxcdH1cXG4gXFx0aWYgKGRldi1cXHUwMDNlcXVldWVfbW9kZSA9PSBOVUxMX1FfQklPKSB7XFxuIFxcdFxcdHByX2VycihcXFwiQklPLWJhc2VkIElPIHBhdGggaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZSwgdXNpbmcgYmxrLW1xIGluc3RlYWQuXFxcXG5cXFwiKTtcXG4tXFx0XFx0ZGV2LVxcdTAwM2VxdWV1ZV9tb2RlID0gTlVMTF9RX01RO1xcbitcXHRcXHRXUklURV9PTkNFKGRldi1cXHUwMDNlcXVldWVfbW9kZSwgTlVMTF9RX01RKTtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGRldi1cXHUwMDNldXNlX3Blcl9ub2RlX2hjdHgpIHtcXG4gXFx0XFx0aWYgKGRldi1cXHUwMDNlc3VibWl0X3F1ZXVlcyAhPSBucl9vbmxpbmVfbm9kZXMpXFxuLVxcdFxcdFxcdGRldi1cXHUwMDNlc3VibWl0X3F1ZXVlcyA9IG5yX29ubGluZV9ub2RlcztcXG4rXFx0XFx0XFx0V1JJVEVfT05DRShkZXYtXFx1MDAzZXN1Ym1pdF9xdWV1ZXMsIG5yX29ubGluZV9ub2Rlcyk7XFxuIFxcdH0gZWxzZSBpZiAoZGV2LVxcdTAwM2VzdWJtaXRfcXVldWVzIFxcdTAwM2UgbnJfY3B1X2lkcylcXG4tXFx0XFx0ZGV2LVxcdTAwM2VzdWJtaXRfcXVldWVzID0gbnJfY3B1X2lkcztcXG4rXFx0XFx0V1JJVEVfT05DRShkZXYtXFx1MDAzZXN1Ym1pdF9xdWV1ZXMsIG5yX2NwdV9pZHMpO1xcbiBcXHRlbHNlIGlmIChkZXYtXFx1MDAzZXN1Ym1pdF9xdWV1ZXMgPT0gMClcXG4tXFx0XFx0ZGV2LVxcdTAwM2VzdWJtaXRfcXVldWVzID0gMTtcXG4rXFx0XFx0V1JJVEVfT05DRShkZXYtXFx1MDAzZXN1Ym1pdF9xdWV1ZXMsIDEpO1xcbiBcXHRkZXYtXFx1MDAzZXByZXZfc3VibWl0X3F1ZXVlcyA9IGRldi1cXHUwMDNlc3VibWl0X3F1ZXVlcztcXG4gXFxuIFxcdGlmIChkZXYtXFx1MDAzZXBvbGxfcXVldWVzIFxcdTAwM2UgZ19wb2xsX3F1ZXVlcylcXG4tXFx0XFx0ZGV2LVxcdTAwM2Vwb2xsX3F1ZXVlcyA9IGdfcG9sbF9xdWV1ZXM7XFxuK1xcdFxcdFdSSVRFX09OQ0UoZGV2LVxcdTAwM2Vwb2xsX3F1ZXVlcywgZ19wb2xsX3F1ZXVlcyk7XFxuIFxcdGRldi1cXHUwMDNlcHJldl9wb2xsX3F1ZXVlcyA9IGRldi1cXHUwMDNlcG9sbF9xdWV1ZXM7XFxuLVxcdGRldi1cXHUwMDNlaXJxbW9kZSA9IG1pbl90KHVuc2lnbmVkIGludCwgZGV2LVxcdTAwM2VpcnFtb2RlLCBOVUxMX0lSUV9USU1FUik7XFxuK1xcdFdSSVRFX09OQ0UoZGV2LVxcdTAwM2VpcnFtb2RlLCBtaW5fdCh1bnNpZ25lZCBpbnQsIGRldi1cXHUwMDNlaXJxbW9kZSwgTlVMTF9JUlFfVElNRVIpKTtcXG4gXFxuIFxcdC8qIERvIG1lbW9yeSBhbGxvY2F0aW9uLCBzbyBzZXQgYmxvY2tpbmcgKi9cXG4gXFx0aWYgKGRldi1cXHUwMDNlbWVtb3J5X2JhY2tlZClcXG4tXFx0XFx0ZGV2LVxcdTAwM2VibG9ja2luZyA9IHRydWU7XFxuK1xcdFxcdFdSSVRFX09OQ0UoZGV2LVxcdTAwM2VibG9ja2luZywgdHJ1ZSk7XFxuIFxcdGVsc2UgLyogY2FjaGUgaXMgbWVhbmluZ2xlc3MgKi9cXG4tXFx0XFx0ZGV2LVxcdTAwM2VjYWNoZV9zaXplID0gMDtcXG4tXFx0ZGV2LVxcdTAwM2VjYWNoZV9zaXplID0gbWluX3QodW5zaWduZWQgbG9uZywgVUxPTkdfTUFYIC8gMTAyNCAvIDEwMjQsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdGRldi1cXHUwMDNlY2FjaGVfc2l6ZSk7XFxuLVxcdGRldi1cXHUwMDNlbWJwcyA9IG1pbl90KHVuc2lnbmVkIGludCwgMTAyNCAqIDQwLCBkZXYtXFx1MDAzZW1icHMpO1xcbitcXHRcXHRXUklURV9PTkNFKGRldi1cXHUwMDNlY2FjaGVfc2l6ZSwgMCk7XFxuK1xcdFdSSVRFX09OQ0UoZGV2LVxcdTAwM2VjYWNoZV9zaXplLCBtaW5fdCh1bnNpZ25lZCBsb25nLCBVTE9OR19NQVggLyAxMDI0IC8gMTAyNCxcXG4rXFx0XFx0XFx0XFx0XFx0ICBkZXYtXFx1MDAzZWNhY2hlX3NpemUpKTtcXG4rXFx0V1JJVEVfT05DRShkZXYtXFx1MDAzZW1icHMsIG1pbl90KHVuc2lnbmVkIGludCwgMTAyNCAqIDQwLCBkZXYtXFx1MDAzZW1icHMpKTtcXG4gXFxuIFxcdGlmIChkZXYtXFx1MDAzZXpvbmVkIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICAoIWRldi1cXHUwMDNlem9uZV9zaXplIHx8ICFpc19wb3dlcl9vZl8yKGRldi1cXHUwMDNlem9uZV9zaXplKSkpIHtcXG5AQCAtMjAyNCw3ICsyMDE2LDcgQEAgc3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxcbiBcXHRcXHRnb3RvIG91dF9jbGVhbnVwX2Rpc2s7XFxuIFxcbiBcXHRudWxsYi1cXHUwMDNlaW5kZXggPSBydjtcXG4tXFx0ZGV2LVxcdTAwM2VpbmRleCA9IHJ2O1xcbitcXHRXUklURV9PTkNFKGRldi1cXHUwMDNlaW5kZXgsIHJ2KTtcXG4gXFxuIFxcdGlmIChjb25maWdfaXRlbV9uYW1lKFxcdTAwMjZkZXYtXFx1MDAzZWdyb3VwLmNnX2l0ZW0pKSB7XFxuIFxcdFxcdC8qIFVzZSBjb25maWdmcyBkaXIgbmFtZSBhcyB0aGUgZGV2aWNlIG5hbWUgKi9cXG5AQCAtMjE2MiwxNyArMjE1NCw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxcbiBcXHRjb25maWdfZ3JvdXBfaW5pdChcXHUwMDI2bnVsbGJfc3Vic3lzLnN1X2dyb3VwKTtcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2bnVsbGJfc3Vic3lzLnN1X211dGV4KTtcXG4gXFxuLVxcdHJldCA9IGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbShcXHUwMDI2bnVsbGJfc3Vic3lzKTtcXG4tXFx0aWYgKHJldClcXG4tXFx0XFx0cmV0dXJuIHJldDtcXG4tXFxuLVxcdG11dGV4X2luaXQoXFx1MDAyNmxvY2spO1xcbi1cXG4gXFx0bnVsbF9tYWpvciA9IHJlZ2lzdGVyX2Jsa2RldigwLCBcXFwibnVsbGJcXFwiKTtcXG4tXFx0aWYgKG51bGxfbWFqb3IgXFx1MDAzYyAwKSB7XFxuLVxcdFxcdHJldCA9IG51bGxfbWFqb3I7XFxuLVxcdFxcdGdvdG8gZXJyX2NvbmY7XFxuLVxcdH1cXG4rXFx0aWYgKG51bGxfbWFqb3IgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gbnVsbF9tYWpvcjtcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl9kZXZpY2VzOyBpKyspIHtcXG4gXFx0XFx0cmV0ID0gbnVsbF9jcmVhdGVfZGV2KCk7XFxuQEAgLTIxODAsNiArMjE2NCwxMCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcXG4gXFx0XFx0XFx0Z290byBlcnJfZGV2O1xcbiBcXHR9XFxuIFxcbitcXHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXFx1MDAyNm51bGxiX3N1YnN5cyk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdGdvdG8gZXJyX2RldjtcXG4rXFxuIFxcdHByX2luZm8oXFxcIm1vZHVsZSBsb2FkZWRcXFxcblxcXCIpO1xcbiBcXHRyZXR1cm4gMDtcXG4gXFxuQEAgLTIxODksOCArMjE3Nyw4IEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxcbiBcXHRcXHRudWxsX2Rlc3Ryb3lfZGV2KG51bGxiKTtcXG4gXFx0fVxcbiBcXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcXFwibnVsbGJcXFwiKTtcXG4tZXJyX2NvbmY6XFxuLVxcdGNvbmZpZ2ZzX3VucmVnaXN0ZXJfc3Vic3lzdGVtKFxcdTAwMjZudWxsYl9zdWJzeXMpO1xcbitcXHRpZiAodGFnX3NldC5vcHMpXFxuK1xcdFxcdGJsa19tcV9mcmVlX3RhZ19zZXQoXFx1MDAyNnRhZ19zZXQpO1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbkBAIC0yMjAwLDggKzIxODgsNiBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpXFxuIFxcbiBcXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcXHUwMDI2bnVsbGJfc3Vic3lzKTtcXG4gXFxuLVxcdHVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsIFxcXCJudWxsYlxcXCIpO1xcbi1cXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuIFxcdHdoaWxlICghbGlzdF9lbXB0eShcXHUwMDI2bnVsbGJfbGlzdCkpIHtcXG4gXFx0XFx0bnVsbGIgPSBsaXN0X2VudHJ5KG51bGxiX2xpc3QubmV4dCwgc3RydWN0IG51bGxiLCBsaXN0KTtcXG5AQCAtMjIwOSw2ICsyMTk1LDggQEAgc3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKVxcbiBcXHR9XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuIFxcbitcXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcXFwibnVsbGJcXFwiKTtcXG4rXFxuIFxcdGlmICh0YWdfc2V0Lm9wcylcXG4gXFx0XFx0YmxrX21xX2ZyZWVfdGFnX3NldChcXHUwMDI2dGFnX3NldCk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmNcXG5pbmRleCAzODRiZGNlNmE5YjdmMy4uNzU2MTNlYWYzZWE5ZWYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jXFxuKysrIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jXFxuQEAgLTY2LDcgKzY2LDcgQEAgaW50IG51bGxfaW5pdF96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbiBcXHR9XFxuIFxcbiBcXHRpZiAoIWRldi1cXHUwMDNlem9uZV9jYXBhY2l0eSlcXG4tXFx0XFx0ZGV2LVxcdTAwM2V6b25lX2NhcGFjaXR5ID0gZGV2LVxcdTAwM2V6b25lX3NpemU7XFxuK1xcdFxcdFdSSVRFX09OQ0UoZGV2LVxcdTAwM2V6b25lX2NhcGFjaXR5LCBkZXYtXFx1MDAzZXpvbmVfc2l6ZSk7XFxuIFxcbiBcXHRpZiAoZGV2LVxcdTAwM2V6b25lX2NhcGFjaXR5IFxcdTAwM2UgZGV2LVxcdTAwM2V6b25lX3NpemUpIHtcXG4gXFx0XFx0cHJfZXJyKFxcXCJ6b25lIGNhcGFjaXR5ICglbHUgTUIpIGxhcmdlciB0aGFuIHpvbmUgc2l6ZSAoJWx1IE1CKVxcXFxuXFxcIixcXG5AQCAtOTksMjkgKzk5LDI5IEBAIGludCBudWxsX2luaXRfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcXG4gXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmRldi1cXHUwMDNlem9uZV9yZXNfbG9jayk7XFxuIFxcbiBcXHRpZiAoZGV2LVxcdTAwM2V6b25lX25yX2NvbnYgXFx1MDAzZT0gZGV2LVxcdTAwM2Vucl96b25lcykge1xcbi1cXHRcXHRkZXYtXFx1MDAzZXpvbmVfbnJfY29udiA9IGRldi1cXHUwMDNlbnJfem9uZXMgLSAxO1xcbitcXHRcXHRXUklURV9PTkNFKGRldi1cXHUwMDNlem9uZV9ucl9jb252LCBkZXYtXFx1MDAzZW5yX3pvbmVzIC0gMSk7XFxuIFxcdFxcdHByX2luZm8oXFxcImNoYW5nZWQgdGhlIG51bWJlciBvZiBjb252ZW50aW9uYWwgem9uZXMgdG8gJXVcXFwiLFxcbiBcXHRcXHRcXHRkZXYtXFx1MDAzZXpvbmVfbnJfY29udik7XFxuIFxcdH1cXG4gXFxuLVxcdGRldi1cXHUwMDNlem9uZV9hcHBlbmRfbWF4X3NlY3RvcnMgPVxcbi1cXHRcXHRtaW4oQUxJR05fRE9XTihkZXYtXFx1MDAzZXpvbmVfYXBwZW5kX21heF9zZWN0b3JzLFxcbi1cXHRcXHRcXHQgICAgICAgZGV2LVxcdTAwM2VibG9ja3NpemUgXFx1MDAzZVxcdTAwM2UgU0VDVE9SX1NISUZUKSxcXG4tXFx0XFx0ICAgIHpvbmVfY2FwYWNpdHlfc2VjdHMpO1xcbitcXHRXUklURV9PTkNFKGRldi1cXHUwMDNlem9uZV9hcHBlbmRfbWF4X3NlY3RvcnMsXFxuK1xcdFxcdCAgIG1pbihBTElHTl9ET1dOKGRldi1cXHUwMDNlem9uZV9hcHBlbmRfbWF4X3NlY3RvcnMsXFxuK1xcdFxcdFxcdFxcdCAgZGV2LVxcdTAwM2VibG9ja3NpemUgXFx1MDAzZVxcdTAwM2UgU0VDVE9SX1NISUZUKSxcXG4rXFx0XFx0ICAgICAgIHpvbmVfY2FwYWNpdHlfc2VjdHMpKTtcXG4gXFxuIFxcdC8qIE1heCBhY3RpdmUgem9uZXMgaGFzIHRvIGJlIFxcdTAwM2MgbmJyIG9mIHNlcSB6b25lcyBpbiBvcmRlciB0byBiZSBlbmZvcmNlYWJsZSAqL1xcbiBcXHRpZiAoZGV2LVxcdTAwM2V6b25lX21heF9hY3RpdmUgXFx1MDAzZT0gZGV2LVxcdTAwM2Vucl96b25lcyAtIGRldi1cXHUwMDNlem9uZV9ucl9jb252KSB7XFxuLVxcdFxcdGRldi1cXHUwMDNlem9uZV9tYXhfYWN0aXZlID0gMDtcXG4rXFx0XFx0V1JJVEVfT05DRShkZXYtXFx1MDAzZXpvbmVfbWF4X2FjdGl2ZSwgMCk7XFxuIFxcdFxcdHByX2luZm8oXFxcInpvbmVfbWF4X2FjdGl2ZSBsaW1pdCBkaXNhYmxlZCwgbGltaXQgXFx1MDAzZT0gem9uZSBjb3VudFxcXFxuXFxcIik7XFxuIFxcdH1cXG4gXFxuIFxcdC8qIE1heCBvcGVuIHpvbmVzIGhhcyB0byBiZSBcXHUwMDNjPSBtYXggYWN0aXZlIHpvbmVzICovXFxuIFxcdGlmIChkZXYtXFx1MDAzZXpvbmVfbWF4X2FjdGl2ZSBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZXpvbmVfbWF4X29wZW4gXFx1MDAzZSBkZXYtXFx1MDAzZXpvbmVfbWF4X2FjdGl2ZSkge1xcbi1cXHRcXHRkZXYtXFx1MDAzZXpvbmVfbWF4X29wZW4gPSBkZXYtXFx1MDAzZXpvbmVfbWF4X2FjdGl2ZTtcXG4rXFx0XFx0V1JJVEVfT05DRShkZXYtXFx1MDAzZXpvbmVfbWF4X29wZW4sIGRldi1cXHUwMDNlem9uZV9tYXhfYWN0aXZlKTtcXG4gXFx0XFx0cHJfaW5mbyhcXFwiY2hhbmdlZCB0aGUgbWF4aW11bSBudW1iZXIgb2Ygb3BlbiB6b25lcyB0byAldVxcXFxuXFxcIixcXG4gXFx0XFx0XFx0ZGV2LVxcdTAwM2V6b25lX21heF9vcGVuKTtcXG4gXFx0fSBlbHNlIGlmIChkZXYtXFx1MDAzZXpvbmVfbWF4X29wZW4gXFx1MDAzZT0gZGV2LVxcdTAwM2Vucl96b25lcyAtIGRldi1cXHUwMDNlem9uZV9ucl9jb252KSB7XFxuLVxcdFxcdGRldi1cXHUwMDNlem9uZV9tYXhfb3BlbiA9IDA7XFxuK1xcdFxcdFdSSVRFX09OQ0UoZGV2LVxcdTAwM2V6b25lX21heF9vcGVuLCAwKTtcXG4gXFx0XFx0cHJfaW5mbyhcXFwiem9uZV9tYXhfb3BlbiBsaW1pdCBkaXNhYmxlZCwgbGltaXQgXFx1MDAzZT0gem9uZSBjb3VudFxcXFxuXFxcIik7XFxuIFxcdH1cXG4gXFx0ZGV2LVxcdTAwM2VuZWVkX3pvbmVfcmVzX21nbXQgPSBkZXYtXFx1MDAzZXpvbmVfbWF4X2FjdGl2ZSB8fCBkZXYtXFx1MDAzZXpvbmVfbWF4X29wZW47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE5OjIzOjI3LjgxNzIyOTU2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTE2NjAwNzg3NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiLFxuICAgIFwiQkxLX0RFVl9aT05FRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxiX2RldmljZV9wb3dlcl9zdG9yZVwiLFxuICAgIFwibnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNcIixcbiAgICBcIm51bGxfdmFsaWRhdGVfY29uZlwiLFxuICAgIFwibnVsbF9hZGRfZGV2XCIsXG4gICAgXCJudWxsX2luaXRfem9uZWRfZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgZGF0YSByYWNlcyBhbmQgbW9kdWxlIGluaXRpYWxpemF0aW9uIG9yZGVyaW5nIGluIHRoZSBudWxsX2JsayBkcml2ZXIuIFRoZSBkcml2ZXIgaXMgc29mdHdhcmUtZW11bGF0ZWQgYW5kIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBtb2RpZmllZCBjb25maWdmcyBhdHRyaWJ1dGUgc3RvcmUgZnVuY3Rpb25zIGFuZCBkZXZpY2UgaW5pdGlhbGl6YXRpb24gbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjRkZjNkMmU5YjJmM2MzNTg0OWY5MTg0NDkzMDg2OWUyYzZlYzg3ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTk6MjM6MjUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uZmQzYzk5M2E2N2IyYmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuKysrIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbkBAIC02Niw3ICs2Niw3IEBAIHN0cnVjdCBudWxsYl9wYWdlIHtcbiAjZGVmaW5lIE5VTExCX1BBR0VfRlJFRSAoTUFQX1NaIC0gMilcbiBcbiBzdGF0aWMgTElTVF9IRUFEKG51bGxiX2xpc3QpO1xuLXN0YXRpYyBzdHJ1Y3QgbXV0ZXggbG9jaztcbitzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spO1xuIHN0YXRpYyBpbnQgbnVsbF9tYWpvcjtcbiBzdGF0aWMgREVGSU5FX0lEQShudWxsYl9pbmRleGVzKTtcbiBzdGF0aWMgc3RydWN0IGJsa19tcV90YWdfc2V0IHRhZ19zZXQ7XG5AQCAtMzQ2LDcgKzM0Niw3IEBAIHN0YXRpYyBzc2l6ZV90XHRcdFx0XHRcdFx0XHRcdFxcXG4gbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVx0XFxcbiB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdHJldHVybiBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zaG93KFx0XHRcdFx0XFxcbi1cdFx0XHRcdHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2VOQU1FLCBwYWdlKTtcdFxcXG4rXHRcdFx0UkVBRF9PTkNFKHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2VOQU1FKSwgcGFnZSk7XHRcXFxuIH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuIHN0YXRpYyBzc2l6ZV90XHRcdFx0XHRcdFx0XHRcdFxcXG4gbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcdFxcXG5AQCAtMzYwLDEzICszNjAsMTYgQEAgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcdFxcXG4gXHRyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zdG9yZShcdTAwMjZuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcXFxuIFx0aWYgKHJldCBcdTAwM2MgMClcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XFxcbitcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbiBcdGlmIChhcHBseV9mbilcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldCA9IGFwcGx5X2ZuKGRldiwgbmV3X3ZhbHVlKTtcdFx0XHRcdFxcXG4gXHRlbHNlIGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkgXHRcXFxuIFx0XHRyZXQgPSAtRUJVU1k7XHRcdFx0XHRcdFx0XFxcbitcdGlmICghcmV0KVx0XHRcdFx0XHRcdFx0XFxcbitcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlTkFNRSwgbmV3X3ZhbHVlKTtcdFx0XHRcXFxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1x0XHRcdFx0XHRcdFxcXG4gXHRpZiAocmV0IFx1MDAzYyAwKVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0cmV0dXJuIHJldDtcdFx0XHRcdFx0XHRcXFxuLVx0ZGV2LVx1MDAzZU5BTUUgPSBuZXdfdmFsdWU7XHRcdFx0XHRcdFx0XFxcbiBcdHJldHVybiBjb3VudDtcdFx0XHRcdFx0XHRcdFxcXG4gfVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gQ09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBOQU1FKTtcbkBAIC00MDEsOCArNDA0LDggQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdCAqL1xuIFx0ZGV2LVx1MDAzZXByZXZfc3VibWl0X3F1ZXVlcyA9IGRldi1cdTAwM2VzdWJtaXRfcXVldWVzO1xuIFx0ZGV2LVx1MDAzZXByZXZfcG9sbF9xdWV1ZXMgPSBkZXYtXHUwMDNlcG9sbF9xdWV1ZXM7XG4tXHRkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcyA9IHN1Ym1pdF9xdWV1ZXM7XG4tXHRkZXYtXHUwMDNlcG9sbF9xdWV1ZXMgPSBwb2xsX3F1ZXVlcztcbitcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHN1Ym1pdF9xdWV1ZXMpO1xuK1x0V1JJVEVfT05DRShkZXYtXHUwMDNlcG9sbF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcbiBcbiBcdHNldCA9IGRldi1cdTAwM2VudWxsYi1cdTAwM2V0YWdfc2V0O1xuIFx0bnJfaHdfcXVldWVzID0gc3VibWl0X3F1ZXVlcyArIHBvbGxfcXVldWVzO1xuQEAgLTQxMSw4ICs0MTQsOCBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFxuIFx0aWYgKHJldCkge1xuIFx0XHQvKiBvbiBlcnJvciwgcmV2ZXJ0IHRoZSBxdWV1ZSBudW1iZXJzICovXG4tXHRcdGRldi1cdTAwM2VzdWJtaXRfcXVldWVzID0gZGV2LVx1MDAzZXByZXZfc3VibWl0X3F1ZXVlcztcbi1cdFx0ZGV2LVx1MDAzZXBvbGxfcXVldWVzID0gZGV2LVx1MDAzZXByZXZfcG9sbF9xdWV1ZXM7XG4rXHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIGRldi1cdTAwM2VwcmV2X3N1Ym1pdF9xdWV1ZXMpO1xuK1x0XHRXUklURV9PTkNFKGRldi1cdTAwM2Vwb2xsX3F1ZXVlcywgZGV2LVx1MDAzZXByZXZfcG9sbF9xdWV1ZXMpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIHJldDtcbkBAIC00MjEsMjUgKzQyNCwxMyBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBzdWJtaXRfcXVldWVzKVxuIHtcbi1cdGludCByZXQ7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuLVx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4tXG4tXHRyZXR1cm4gcmV0O1xuK1x0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXHUwMDNlcG9sbF9xdWV1ZXMpO1xuIH1cbiBcbiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgIHVuc2lnbmVkIGludCBwb2xsX3F1ZXVlcylcbiB7XG4tXHRpbnQgcmV0O1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbi1cdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuLVxuLVx0cmV0dXJuIHJldDtcbitcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcbiB9XG4gXG4gTlVMTEJfREVWSUNFX0FUVFIoc2l6ZSwgdWxvbmcsIE5VTEwpO1xuQEAgLTQ3OCw3ICs0NjksOCBAQCBOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7XG4gXG4gc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxuIHtcbi1cdHJldHVybiBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3codG9fbnVsbGJfZGV2aWNlKGl0ZW0pLVx1MDAzZXBvd2VyLCBwYWdlKTtcbitcdHJldHVybiBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3coXG4rXHRcdFx0UkVBRF9PTkNFKHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2Vwb3dlciksIHBhZ2UpO1xuIH1cbiBcbiBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuQEAgLTUwNSwxMSArNDk3LDExIEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG4gXHRcdH1cbiBcbiBcdFx0c2V0X2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKTtcbi1cdFx0ZGV2LVx1MDAzZXBvd2VyID0gbmV3cDtcbitcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlcG93ZXIsIG5ld3ApO1xuIFx0XHRyZXQgPSBjb3VudDtcbiBcdH0gZWxzZSBpZiAoZGV2LVx1MDAzZXBvd2VyIFx1MDAyNlx1MDAyNiAhbmV3cCkge1xuIFx0XHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkge1xuLVx0XHRcdGRldi1cdTAwM2Vwb3dlciA9IG5ld3A7XG4rXHRcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlcG93ZXIsIG5ld3ApO1xuIFx0XHRcdG51bGxfZGVsX2RldihkZXYtXHUwMDNlbnVsbGIpO1xuIFx0XHR9XG4gXHRcdGNsZWFyX2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKTtcbkBAIC0xNzkyLDEzICsxNzg0LDEzIEBAIHN0YXRpYyB2b2lkIG51bGxfY29uZmlnX2Rpc2NhcmQoc3RydWN0IG51bGxiICpudWxsYiwgc3RydWN0IHF1ZXVlX2xpbWl0cyAqbGltKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRpZiAoIW51bGxiLVx1MDAzZWRldi1cdTAwM2VtZW1vcnlfYmFja2VkKSB7XG4tXHRcdG51bGxiLVx1MDAzZWRldi1cdTAwM2VkaXNjYXJkID0gZmFsc2U7XG4rXHRcdFdSSVRFX09OQ0UobnVsbGItXHUwMDNlZGV2LVx1MDAzZWRpc2NhcmQsIGZhbHNlKTtcbiBcdFx0cHJfaW5mbyhcImRpc2NhcmQgb3B0aW9uIGlzIGlnbm9yZWQgd2l0aG91dCBtZW1vcnkgYmFja2luZ1xcblwiKTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuIFx0aWYgKG51bGxiLVx1MDAzZWRldi1cdTAwM2V6b25lZCkge1xuLVx0XHRudWxsYi1cdTAwM2VkZXYtXHUwMDNlZGlzY2FyZCA9IGZhbHNlO1xuK1x0XHRXUklURV9PTkNFKG51bGxiLVx1MDAzZWRldi1cdTAwM2VkaXNjYXJkLCBmYWxzZSk7XG4gXHRcdHByX2luZm8oXCJkaXNjYXJkIG9wdGlvbiBpcyBpZ25vcmVkIGluIHpvbmVkIG1vZGVcXG5cIik7XG4gXHRcdHJldHVybjtcbiBcdH1cbkBAIC0xODkwLDMxICsxODgyLDMxIEBAIHN0YXRpYyBpbnQgbnVsbF92YWxpZGF0ZV9jb25mKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbiBcdH1cbiBcdGlmIChkZXYtXHUwMDNlcXVldWVfbW9kZSA9PSBOVUxMX1FfQklPKSB7XG4gXHRcdHByX2VycihcIkJJTy1iYXNlZCBJTyBwYXRoIGlzIG5vIGxvbmdlciBhdmFpbGFibGUsIHVzaW5nIGJsay1tcSBpbnN0ZWFkLlxcblwiKTtcbi1cdFx0ZGV2LVx1MDAzZXF1ZXVlX21vZGUgPSBOVUxMX1FfTVE7XG4rXHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZXF1ZXVlX21vZGUsIE5VTExfUV9NUSk7XG4gXHR9XG4gXG4gXHRpZiAoZGV2LVx1MDAzZXVzZV9wZXJfbm9kZV9oY3R4KSB7XG4gXHRcdGlmIChkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcyAhPSBucl9vbmxpbmVfbm9kZXMpXG4tXHRcdFx0ZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMgPSBucl9vbmxpbmVfbm9kZXM7XG4rXHRcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgbnJfb25saW5lX25vZGVzKTtcbiBcdH0gZWxzZSBpZiAoZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMgXHUwMDNlIG5yX2NwdV9pZHMpXG4tXHRcdGRldi1cdTAwM2VzdWJtaXRfcXVldWVzID0gbnJfY3B1X2lkcztcbitcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgbnJfY3B1X2lkcyk7XG4gXHRlbHNlIGlmIChkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcyA9PSAwKVxuLVx0XHRkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcyA9IDE7XG4rXHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIDEpO1xuIFx0ZGV2LVx1MDAzZXByZXZfc3VibWl0X3F1ZXVlcyA9IGRldi1cdTAwM2VzdWJtaXRfcXVldWVzO1xuIFxuIFx0aWYgKGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyBcdTAwM2UgZ19wb2xsX3F1ZXVlcylcbi1cdFx0ZGV2LVx1MDAzZXBvbGxfcXVldWVzID0gZ19wb2xsX3F1ZXVlcztcbitcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlcG9sbF9xdWV1ZXMsIGdfcG9sbF9xdWV1ZXMpO1xuIFx0ZGV2LVx1MDAzZXByZXZfcG9sbF9xdWV1ZXMgPSBkZXYtXHUwMDNlcG9sbF9xdWV1ZXM7XG4tXHRkZXYtXHUwMDNlaXJxbW9kZSA9IG1pbl90KHVuc2lnbmVkIGludCwgZGV2LVx1MDAzZWlycW1vZGUsIE5VTExfSVJRX1RJTUVSKTtcbitcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZWlycW1vZGUsIG1pbl90KHVuc2lnbmVkIGludCwgZGV2LVx1MDAzZWlycW1vZGUsIE5VTExfSVJRX1RJTUVSKSk7XG4gXG4gXHQvKiBEbyBtZW1vcnkgYWxsb2NhdGlvbiwgc28gc2V0IGJsb2NraW5nICovXG4gXHRpZiAoZGV2LVx1MDAzZW1lbW9yeV9iYWNrZWQpXG4tXHRcdGRldi1cdTAwM2VibG9ja2luZyA9IHRydWU7XG4rXHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZWJsb2NraW5nLCB0cnVlKTtcbiBcdGVsc2UgLyogY2FjaGUgaXMgbWVhbmluZ2xlc3MgKi9cbi1cdFx0ZGV2LVx1MDAzZWNhY2hlX3NpemUgPSAwO1xuLVx0ZGV2LVx1MDAzZWNhY2hlX3NpemUgPSBtaW5fdCh1bnNpZ25lZCBsb25nLCBVTE9OR19NQVggLyAxMDI0IC8gMTAyNCxcbi1cdFx0XHRcdFx0XHRkZXYtXHUwMDNlY2FjaGVfc2l6ZSk7XG4tXHRkZXYtXHUwMDNlbWJwcyA9IG1pbl90KHVuc2lnbmVkIGludCwgMTAyNCAqIDQwLCBkZXYtXHUwMDNlbWJwcyk7XG4rXHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZWNhY2hlX3NpemUsIDApO1xuK1x0V1JJVEVfT05DRShkZXYtXHUwMDNlY2FjaGVfc2l6ZSwgbWluX3QodW5zaWduZWQgbG9uZywgVUxPTkdfTUFYIC8gMTAyNCAvIDEwMjQsXG4rXHRcdFx0XHRcdCAgZGV2LVx1MDAzZWNhY2hlX3NpemUpKTtcbitcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZW1icHMsIG1pbl90KHVuc2lnbmVkIGludCwgMTAyNCAqIDQwLCBkZXYtXHUwMDNlbWJwcykpO1xuIFxuIFx0aWYgKGRldi1cdTAwM2V6b25lZCBcdTAwMjZcdTAwMjZcbiBcdCAgICAoIWRldi1cdTAwM2V6b25lX3NpemUgfHwgIWlzX3Bvd2VyX29mXzIoZGV2LVx1MDAzZXpvbmVfc2l6ZSkpKSB7XG5AQCAtMjAyNCw3ICsyMDE2LDcgQEAgc3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuIFx0XHRnb3RvIG91dF9jbGVhbnVwX2Rpc2s7XG4gXG4gXHRudWxsYi1cdTAwM2VpbmRleCA9IHJ2O1xuLVx0ZGV2LVx1MDAzZWluZGV4ID0gcnY7XG4rXHRXUklURV9PTkNFKGRldi1cdTAwM2VpbmRleCwgcnYpO1xuIFxuIFx0aWYgKGNvbmZpZ19pdGVtX25hbWUoXHUwMDI2ZGV2LVx1MDAzZWdyb3VwLmNnX2l0ZW0pKSB7XG4gXHRcdC8qIFVzZSBjb25maWdmcyBkaXIgbmFtZSBhcyB0aGUgZGV2aWNlIG5hbWUgKi9cbkBAIC0yMTYyLDE3ICsyMTU0LDkgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRjb25maWdfZ3JvdXBfaW5pdChcdTAwMjZudWxsYl9zdWJzeXMuc3VfZ3JvdXApO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZudWxsYl9zdWJzeXMuc3VfbXV0ZXgpO1xuIFxuLVx0cmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNm51bGxiX3N1YnN5cyk7XG4tXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0bXV0ZXhfaW5pdChcdTAwMjZsb2NrKTtcbi1cbiBcdG51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgXCJudWxsYlwiKTtcbi1cdGlmIChudWxsX21ham9yIFx1MDAzYyAwKSB7XG4tXHRcdHJldCA9IG51bGxfbWFqb3I7XG4tXHRcdGdvdG8gZXJyX2NvbmY7XG4tXHR9XG4rXHRpZiAobnVsbF9tYWpvciBcdTAwM2MgMClcbitcdFx0cmV0dXJuIG51bGxfbWFqb3I7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9kZXZpY2VzOyBpKyspIHtcbiBcdFx0cmV0ID0gbnVsbF9jcmVhdGVfZGV2KCk7XG5AQCAtMjE4MCw2ICsyMTY0LDEwIEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxuIFx0XHRcdGdvdG8gZXJyX2RldjtcbiBcdH1cbiBcbitcdHJldCA9IGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuK1x0aWYgKHJldClcbitcdFx0Z290byBlcnJfZGV2O1xuK1xuIFx0cHJfaW5mbyhcIm1vZHVsZSBsb2FkZWRcXG5cIik7XG4gXHRyZXR1cm4gMDtcbiBcbkBAIC0yMTg5LDggKzIxNzcsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbiBcdFx0bnVsbF9kZXN0cm95X2RldihudWxsYik7XG4gXHR9XG4gXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcIm51bGxiXCIpO1xuLWVycl9jb25mOlxuLVx0Y29uZmlnZnNfdW5yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbitcdGlmICh0YWdfc2V0Lm9wcylcbitcdFx0YmxrX21xX2ZyZWVfdGFnX3NldChcdTAwMjZ0YWdfc2V0KTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTIyMDAsOCArMjE4OCw2IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZClcbiBcbiBcdGNvbmZpZ2ZzX3VucmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNm51bGxiX3N1YnN5cyk7XG4gXG4tXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcIm51bGxiXCIpO1xuLVxuIFx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbiBcdHdoaWxlICghbGlzdF9lbXB0eShcdTAwMjZudWxsYl9saXN0KSkge1xuIFx0XHRudWxsYiA9IGxpc3RfZW50cnkobnVsbGJfbGlzdC5uZXh0LCBzdHJ1Y3QgbnVsbGIsIGxpc3QpO1xuQEAgLTIyMDksNiArMjE5NSw4IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZClcbiBcdH1cbiBcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiBcbitcdHVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsIFwibnVsbGJcIik7XG4rXG4gXHRpZiAodGFnX3NldC5vcHMpXG4gXHRcdGJsa19tcV9mcmVlX3RhZ19zZXQoXHUwMDI2dGFnX3NldCk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jXG5pbmRleCAzODRiZGNlNmE5YjdmMy4uNzU2MTNlYWYzZWE5ZWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuY1xuQEAgLTY2LDcgKzY2LDcgQEAgaW50IG51bGxfaW5pdF96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0fVxuIFxuIFx0aWYgKCFkZXYtXHUwMDNlem9uZV9jYXBhY2l0eSlcbi1cdFx0ZGV2LVx1MDAzZXpvbmVfY2FwYWNpdHkgPSBkZXYtXHUwMDNlem9uZV9zaXplO1xuK1x0XHRXUklURV9PTkNFKGRldi1cdTAwM2V6b25lX2NhcGFjaXR5LCBkZXYtXHUwMDNlem9uZV9zaXplKTtcbiBcbiBcdGlmIChkZXYtXHUwMDNlem9uZV9jYXBhY2l0eSBcdTAwM2UgZGV2LVx1MDAzZXpvbmVfc2l6ZSkge1xuIFx0XHRwcl9lcnIoXCJ6b25lIGNhcGFjaXR5ICglbHUgTUIpIGxhcmdlciB0aGFuIHpvbmUgc2l6ZSAoJWx1IE1CKVxcblwiLFxuQEAgLTk5LDI5ICs5OSwyOSBAQCBpbnQgbnVsbF9pbml0X3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZkZXYtXHUwMDNlem9uZV9yZXNfbG9jayk7XG4gXG4gXHRpZiAoZGV2LVx1MDAzZXpvbmVfbnJfY29udiBcdTAwM2U9IGRldi1cdTAwM2Vucl96b25lcykge1xuLVx0XHRkZXYtXHUwMDNlem9uZV9ucl9jb252ID0gZGV2LVx1MDAzZW5yX3pvbmVzIC0gMTtcbitcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlem9uZV9ucl9jb252LCBkZXYtXHUwMDNlbnJfem9uZXMgLSAxKTtcbiBcdFx0cHJfaW5mbyhcImNoYW5nZWQgdGhlIG51bWJlciBvZiBjb252ZW50aW9uYWwgem9uZXMgdG8gJXVcIixcbiBcdFx0XHRkZXYtXHUwMDNlem9uZV9ucl9jb252KTtcbiBcdH1cbiBcbi1cdGRldi1cdTAwM2V6b25lX2FwcGVuZF9tYXhfc2VjdG9ycyA9XG4tXHRcdG1pbihBTElHTl9ET1dOKGRldi1cdTAwM2V6b25lX2FwcGVuZF9tYXhfc2VjdG9ycyxcbi1cdFx0XHQgICAgICAgZGV2LVx1MDAzZWJsb2Nrc2l6ZSBcdTAwM2VcdTAwM2UgU0VDVE9SX1NISUZUKSxcbi1cdFx0ICAgIHpvbmVfY2FwYWNpdHlfc2VjdHMpO1xuK1x0V1JJVEVfT05DRShkZXYtXHUwMDNlem9uZV9hcHBlbmRfbWF4X3NlY3RvcnMsXG4rXHRcdCAgIG1pbihBTElHTl9ET1dOKGRldi1cdTAwM2V6b25lX2FwcGVuZF9tYXhfc2VjdG9ycyxcbitcdFx0XHRcdCAgZGV2LVx1MDAzZWJsb2Nrc2l6ZSBcdTAwM2VcdTAwM2UgU0VDVE9SX1NISUZUKSxcbitcdFx0ICAgICAgIHpvbmVfY2FwYWNpdHlfc2VjdHMpKTtcbiBcbiBcdC8qIE1heCBhY3RpdmUgem9uZXMgaGFzIHRvIGJlIFx1MDAzYyBuYnIgb2Ygc2VxIHpvbmVzIGluIG9yZGVyIHRvIGJlIGVuZm9yY2VhYmxlICovXG4gXHRpZiAoZGV2LVx1MDAzZXpvbmVfbWF4X2FjdGl2ZSBcdTAwM2U9IGRldi1cdTAwM2Vucl96b25lcyAtIGRldi1cdTAwM2V6b25lX25yX2NvbnYpIHtcbi1cdFx0ZGV2LVx1MDAzZXpvbmVfbWF4X2FjdGl2ZSA9IDA7XG4rXHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZXpvbmVfbWF4X2FjdGl2ZSwgMCk7XG4gXHRcdHByX2luZm8oXCJ6b25lX21heF9hY3RpdmUgbGltaXQgZGlzYWJsZWQsIGxpbWl0IFx1MDAzZT0gem9uZSBjb3VudFxcblwiKTtcbiBcdH1cbiBcbiBcdC8qIE1heCBvcGVuIHpvbmVzIGhhcyB0byBiZSBcdTAwM2M9IG1heCBhY3RpdmUgem9uZXMgKi9cbiBcdGlmIChkZXYtXHUwMDNlem9uZV9tYXhfYWN0aXZlIFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNlem9uZV9tYXhfb3BlbiBcdTAwM2UgZGV2LVx1MDAzZXpvbmVfbWF4X2FjdGl2ZSkge1xuLVx0XHRkZXYtXHUwMDNlem9uZV9tYXhfb3BlbiA9IGRldi1cdTAwM2V6b25lX21heF9hY3RpdmU7XG4rXHRcdFdSSVRFX09OQ0UoZGV2LVx1MDAzZXpvbmVfbWF4X29wZW4sIGRldi1cdTAwM2V6b25lX21heF9hY3RpdmUpO1xuIFx0XHRwcl9pbmZvKFwiY2hhbmdlZCB0aGUgbWF4aW11bSBudW1iZXIgb2Ygb3BlbiB6b25lcyB0byAldVxcblwiLFxuIFx0XHRcdGRldi1cdTAwM2V6b25lX21heF9vcGVuKTtcbiBcdH0gZWxzZSBpZiAoZGV2LVx1MDAzZXpvbmVfbWF4X29wZW4gXHUwMDNlPSBkZXYtXHUwMDNlbnJfem9uZXMgLSBkZXYtXHUwMDNlem9uZV9ucl9jb252KSB7XG4tXHRcdGRldi1cdTAwM2V6b25lX21heF9vcGVuID0gMDtcbitcdFx0V1JJVEVfT05DRShkZXYtXHUwMDNlem9uZV9tYXhfb3BlbiwgMCk7XG4gXHRcdHByX2luZm8oXCJ6b25lX21heF9vcGVuIGxpbWl0IGRpc2FibGVkLCBsaW1pdCBcdTAwM2U9IHpvbmUgY291bnRcXG5cIik7XG4gXHR9XG4gXHRkZXYtXHUwMDNlbmVlZF96b25lX3Jlc19tZ210ID0gZGV2LVx1MDAzZXpvbmVfbWF4X2FjdGl2ZSB8fCBkZXYtXHUwMDNlem9uZV9tYXhfb3BlbjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE5OjIzOjI3LjgxNzIzMTUwOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0ODEzNTc3NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGZWFzaWJpbGl0eSBvZiB0aGUgTnVsbCBCbG9jayBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGFmZmVjdGluZyBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgIGFuZCBgZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZXMgcmV2b2x2ZSBhcm91bmQgbWVtb3J5IGFjY2VzcyBzeW5jaHJvbml6YXRpb24gd2l0aCBgV1JJVEVfT05DRWAgYW5kIGBSRUFEX09OQ0VgLCBhbmQgc29tZSByZW9yZGVyaW5nIG9mIGluaXRpYWxpemF0aW9uIGFuZCBjbGVhbnVwIGNhbGxzIHdpdGhpbiB0aGUgZHJpdmVyIChzcGVjaWZpY2FsbHkgYGNvbmZpZ2ZzX3JlZ2lzdGVyL3VucmVnaXN0ZXJfc3Vic3lzdGVtYCBhbmQgYHJlZ2lzdGVyL3VucmVnaXN0ZXJfYmxrZGV2YCkuIFRoZXJlJ3MgYWxzbyBhIG1vZGlmaWNhdGlvbiBsb2NraW5nIGFyb3VuZCBhbiBlbnRpcmUgYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAgZnVuY3Rpb24sIGFuZCBhIGBERUZJTkVfTVVURVhgIGFkZGVkLlxuXG5UaGUgcXVlc3Rpb24gbm93IGlzLCBkb2VzIHRoaXMgd2FycmFudCBmdXp6aW5nPyBXZWxsLCB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBgbnVsbF9ibGtgIGRyaXZlci4gQ29uc2lkZXJpbmcgdGhhdCB0aGlzIGRyaXZlciBpcyBhIHZpcnR1YWwgYmxvY2sgZGV2aWNlLCBmcmVxdWVudGx5IHVzZWQgZm9yIHRlc3RpbmcgYW5kIGJlbmNobWFya2luZyB0aGUgYmxvY2sgbGF5ZXIsIGFuZCBpbnN0YW50aWF0ZWQgdGhyb3VnaCBlaXRoZXIgY29uZmlnZnMgb3IgbW9kdWxlIHBhcmFtZXRlcnMsIHRoZXJlIGlzIHNpZ25pZmljYW50IHBvdGVudGlhbC4gVGhlIGNoYW5nZXMgdGhlbXNlbHZlcyBhcmUgZXhwbGljaXRseSBhZGRyZXNzaW5nIGRhdGEgcmFjZXMgYnkgZW1wbG95aW5nIGBSRUFEX09OQ0VgL2BXUklURV9PTkNFYCBhbmQgYW4gZXh0ZW5kZWQgbXV0ZXggbG9jay4gVGhlIG1vZHVsZSBpbml0L2V4aXQgb3JkZXJpbmcgZml4ZXMgc2hvdWxkIGFsc28gZWxpbWluYXRlIGEgc291cmNlIG9mIGlzc3VlcywgYW5kIHRoZXJlZm9yZSB0aGUgY29kZSBpcyBpbmRlZWQgZnVuY3Rpb25hbC5cblxuQ2FuIHdlIHJlYWNoIHRoaXMgZnVuY3Rpb25hbGl0eSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBBYnNvbHV0ZWx5LiBBcyBhIHNvZnR3YXJlLWVtdWxhdGVkIGJsb2NrIGRldmljZSwgYG51bGxfYmxrYCBpcyBkZXNpZ25lZCB0byBydW4gYW55d2hlcmUgdGhlIGtlcm5lbCBydW5zLCBzbyB0aGVyZSBhcmUgbm8gZW52aXJvbm1lbnRhbCBjb25zdHJhaW50cy5cblxuVGhlIG5leHQgc3RlcCBpcyB0byBjb25maXJtIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9uLiBXZSBuZWVkIGBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS2AgZW5hYmxlZC4gTGV0J3MgdmVyaWZ5IHRoYXQgcXVpY2tseSB3aXRoIGBncmVwcGVyYCBhbmQgbW92ZSBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzYzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTk6MjM6MzQuMjk4NTkyMjk3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0NDI2ODkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJMS19ERVZfTlVMTF9CTEtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9NYWtlZmlsZT0zNT1vYmotJChDT05GSUdfQkxLX0RFVl9STkJEKVxcdCs9IHJuYmQvXFxuZHJpdmVycy9ibG9jay9NYWtlZmlsZS0zNi1cXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVxcdCs9IG51bGxfYmxrL1xcbmRyaXZlcnMvYmxvY2svTWFrZWZpbGUtMzgtb2JqLSQoQ09ORklHX0JMS19ERVZfUlVTVF9OVUxMKSArPSBybnVsbC9cXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzo2OmNvbmZpZyBCTEtfREVWX05VTExfQkxLXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctOS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6MTA6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVxcdGJvb2wgXFxcIlN1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzoxMjpcXHRkZXBlbmRzIG9uIEJMS19ERVZfTlVMTF9CTEsgXFx1MDAyNlxcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL01ha2VmaWxlPTQ9Y2NmbGFncy15XFx0XFx0XFx0Kz0gLUkkKHNyYylcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL01ha2VmaWxlLTUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVxcdCs9IG51bGxfYmxrLm9cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL01ha2VmaWxlLTctbnVsbF9ibGstb2Jqc1xcdFxcdFxcdDo9IG1haW4ub1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjI6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIzLXN0YXRpYyBERUNMQVJFX0ZBVUxUX0FUVFIobnVsbF90aW1lb3V0X2F0dHIpO1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9OTg9TU9EVUxFX1BBUk1fREVTQyhob21lX25vZGUsIFxcXCJIb21lIG5vZGUgZm9yIHRoZSBkZXZpY2VcXFwiKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05OS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMDA6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEwMS0vKlxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NjQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uZmlnX2l0ZW1fdHlwZSBudWxsYl9kZXZpY2VfdHlwZSA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY0Ni1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2NDc6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY0OC1cXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTc2OT1zdGF0aWMgc3RydWN0IG51bGxiX2RldmljZSAqbnVsbF9hbGxvY19kZXYodm9pZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc3Ni1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo3Nzc6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc3OC1cXHRkZXYtXFx1MDAzZXRpbWVvdXRfY29uZmlnLmF0dHIgPSBudWxsX3RpbWVvdXRfYXR0cjtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE0NzY9c3RhdGljIHZvaWQgbnVsbGJfc2V0dXBfYnd0aW1lcihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQ4NC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNDg1OiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNDg2LVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTg3Nz1zdGF0aWMgaW50IG51bGxfdmFsaWRhdGVfY29uZihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTE5LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE5MjA6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5MjEtc3RhdGljIGJvb2wgX19udWxsX3NldHVwX2ZhdWx0KHN0cnVjdCBmYXVsdF9hdHRyICphdHRyLCBjaGFyICpzdHIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xOTM0PXN0YXRpYyBib29sIG51bGxfc2V0dXBfZmF1bHQodm9pZClcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTM1LXtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxOTM2OiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTM3LVxcdGlmICghX19udWxsX3NldHVwX2ZhdWx0KFxcdTAwMjZudWxsX3RpbWVvdXRfYXR0ciwgZ190aW1lb3V0X3N0cikpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmg9NTM9c3RydWN0IG51bGxiX2RldmljZSB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmgtNTUtXFx0c3RydWN0IGNvbmZpZ19ncm91cCBncm91cDtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmg6NTY6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC01Ny1cXHRzdHJ1Y3QgZmF1bHRfY29uZmlnIHRpbWVvdXRfY29uZmlnO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxOToyMzozNC4zODMwMzI1NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyMTYyNjcyNDE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE51bGwgQmxvY2sgRGV2aWNlIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIHplcm9lZCBpbiBvbiB0aGUgYEJMS19ERVZfTlVMTF9CTEtgIGNvbmZpZ3VyYXRpb24g4oCTIHRoYXQncyBkZWZpbml0ZWx5IHRoZSBrZXkgdG8gdGhpcy4gTm93LCB0aGlzIHBhdGNoIGdvZXMgaW4gYW5kIHR3ZWFrcyBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGl0LiBTcGVjaWZpY2FsbHksIGl0J3MgbWVzc2luZyB3aXRoIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgLCB3aGljaCBpcyB0aGF0IG1hY3JvIGZvciBnZW5lcmF0aW5nIHN0b3JlIGZ1bmN0aW9ucyBpbiBjb25maWdmcywgYW5kIHRoZW4gaXQgdG91Y2hlcyBhIGJ1bmNoIG9mIG90aGVycy4gSSBzZWUgbW9kaWZpY2F0aW9ucyBpbiBgbnVsbF91cGRhdGVfbnJfaHdfcXVldWVzYCwgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgLCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3dgLCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgYG51bGxfY29uZmlnX2Rpc2NhcmRgLCBgbnVsbF92YWxpZGF0ZV9jb25mYCwgYG51bGxfYWRkX2RldmAsIGBudWxsX2luaXRgLCBgbnVsbF9leGl0YCwgYW5kIGBudWxsX2luaXRfem9uZWRfZGV2YC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IHRoZSBtb3N0IHByb21pc2luZyBmdW5jdGlvbnMgZm9yIGZ1enppbmcuIEknbSB0aGlua2luZyB0aGF0IEkgd2FudCB0byB0YXJnZXQgYXJlYXMgd2hlcmUgZXh0ZXJuYWwgaW5wdXQgY2FuIGJlIHByb2Nlc3NlZCBhbmQgdGhhdCBjb3VsZCBsZWFkIHRvIHNvbWV0aGluZyBpbnRlcmVzdGluZy4gQmFzZWQgb24gYSBxdWljayBza2ltLCBJJ20gdGhpbmtpbmcgdGhhdCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgLCBgbnVsbF92YWxpZGF0ZV9jb25mYCwgYG51bGxfYWRkX2RldmAsIGFuZCBgbnVsbF9pbml0X3pvbmVkX2RldmAgYXJlIGZ1bmN0aW9ucyB0byBmb2N1cyBvbi5cblxuQnV0LCBJIHNob3VsZCBwcm9iYWJseSB0YWtlIGEgbW9tZW50IHRvIGRvdWJsZS1jaGVjayBteSB3b3JrLiBKdXN0IHRvIGJlIHN1cmUsIEknbSBnb2luZyB0byBzY2FuIHRoZSBjb2RlIGFnYWluIHRvIHNlZSBpZiBJIG1pc3NlZCBhbnkgb3RoZXIgcHJvbWlzaW5nIHRhcmdldHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3MDMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTk6MjM6NTYuNTQ1NzA4MzU2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3Nzg0MzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm51bGxiX2RldmljZV8uKl9zdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yOTY9c3RhdGljIGlubGluZSBzc2l6ZV90IG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyhib29sIHZhbCwgY2hhciAqcGFnZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTMwMC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozMDE6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3VpbnRfYXR0cl9zdG9yZSh1bnNpZ25lZCBpbnQgKnZhbCxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zMDItXFx0Y29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzE0LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjMxNTpzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfdWxvbmdfYXR0cl9zdG9yZSh1bnNpZ25lZCBsb25nICp2YWwsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzE2LVxcdGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTMyOC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozMjk6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzMwLVxcdHNpemVfdCBjb3VudClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTM1MT1zdGF0aWMgc3NpemVfdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozNTI6bnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcXHRcXFxcXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzUzLVxcdFxcdFxcdCAgICBzaXplX3QgY291bnQpXFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzU5LVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozNjA6XFx0cmV0ID0gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc3RvcmUoXFx1MDAyNm5ld192YWx1ZSwgcGFnZSwgY291bnQpO1xcXFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNjEtXFx0aWYgKHJldCBcXHUwMDNjIDApXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDcwPXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ3NS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzY6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NzctXFx0XFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00ODItXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDgzOlxcdHJldCA9IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoXFx1MDAyNm5ld3AsIHBhZ2UsIGNvdW50KTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00ODQtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz01MTc9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTUyMy1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1MjQ6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTI1LVxcdFxcdFxcdFxcdCAgICAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NTY4PUNPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgYmFkYmxvY2tzKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01NjktXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTcwOnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01NzEtXFx0XFx0XFx0XFx0XFx0XFx0Y29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NTc3PUNPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9yZWFkb25seSk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTc4LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjU3OTpzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01ODAtXFx0XFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTk6MjM6NTYuNjQzNTAzMTI5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM2MjMxNzMwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgU3l6a2FsbGVyJ3MgSW50ZXJhY3Rpb24gd2l0aCBEeW5hbWljYWxseSBHZW5lcmF0ZWQgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgYSBtYWNybywgYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAsIHdoaWNoIGlzIGdvaW5nIHRvIGdlbmVyYXRlIGZ1bmN0aW9ucyBsaWtlIGBudWxsYl9kZXZpY2Vfc2l6ZV9zdG9yZWAsIGBudWxsYl9kZXZpY2Vfc3VibWl0X3F1ZXVlc19zdG9yZWAsIGFuZCBzbyBvbi4gTXkgY29uY2VybiBpcyB0aGF0IFN5emthbGxlciBtaWdodCBoYXZlIHRyb3VibGUgdGFyZ2V0aW5nIHRoZXNlICpkeW5hbWljYWxseSogZ2VuZXJhdGVkIGZ1bmN0aW9ucyBkaXJlY3RseSBieSBuYW1lLiBUaGF0J3MgYSBjbGFzc2ljIHByb2JsZW0gd2l0aCBjb2RlIGdlbmVyYXRpb24sIGlzbid0IGl0P1xuXG5UaGUgc3RhbmRhcmQgYXBwcm9hY2ggaXMgdG8gZXhwbGljaXRseSBsaXN0IGFsbCBmdW5jdGlvbnMgc3l6a2FsbGVyIG5lZWRzIHRvIGhhdmUgYWNjZXNzIHRvLiBJIHNlZSBhIGZldyBmdW5jdGlvbnMgZGVmaW5lZCBvdXRzaWRlIHRoZSBtYWNybzogYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGFuZCB0aGUgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgLCBgbnVsbF92YWxpZGF0ZV9jb25mYCwgYG51bGxfYWRkX2RldmAsIGFuZCBgbnVsbF9pbml0X3pvbmVkX2RldmAuIFRoZXNlIGFyZSBlYXN5IHdpbnMhIFdlIGNhbiBkZWZpbml0ZWx5IGxpc3QgdGhvc2UuXG5cblNvLCBoZXJlJ3MgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRoYXQgd2Ugc2hvdWxkIGJlIGFibGUgdG8gbWFrZSB1c2Ugb2Y6XG4tIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgXG4tIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYFxuLSBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgXG4tIGBudWxsX3ZhbGlkYXRlX2NvbmZgXG4tIGBudWxsX2FkZF9kZXZgXG4tIGBudWxsX2luaXRfem9uZWRfZGV2YFxuXG5CdXQgd2FpdCwgaG9sZCBvbi4uLnRoYXQgYCMjTkFNRSMjYCBpbiB0aGUgbWFjcm8uLi4gdGhhdCdzIHRoZSBrZXkuIEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGF0KiBuYW1lcyB0aGF0IG1hY3JvIGlzIGdlbmVyYXRpbmcuIEkgY2FuJ3QgYmUgc3VyZSB0aGlzIGlzIGEgY29tcHJlaGVuc2l2ZSBsaXN0IHdpdGhvdXQga25vd2luZyB0aGUgb3V0cHV0cyBvZiB0aGF0IG1hY3JvLiBMZXQncyBzZWUgaWYgSSBjYW4gZmluZCBhbiBleGFtcGxlIHVzYWdlIG9mIHRoZSBtYWNybyB0byBkZXRlcm1pbmUgdGhlIGdlbmVyYXRlZCBmdW5jdGlvbiBuYW1lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTM3NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxOToyNDowMi4wMDU4MjQ0MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzA2Mzg5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJOVUxMQl9ERVZJQ0VfQVRUUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0zMjk9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNDMtLyogVGhlIGZvbGxvd2luZyBtYWNybyBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggVFlQRSA9IHt1aW50LCB1bG9uZywgYm9vbH0uICovXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzQ0OiNkZWZpbmUgTlVMTEJfREVWSUNFX0FUVFIoTkFNRSwgVFlQRSwgQVBQTFkpXFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM0NS1zdGF0aWMgc3NpemVfdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQzMD1zdGF0aWMgaW50IG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQzNS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0MzY6TlVMTEJfREVWSUNFX0FUVFIoc2l6ZSwgdWxvbmcsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQzNzpOVUxMQl9ERVZJQ0VfQVRUUihjb21wbGV0aW9uX25zZWMsIHVsb25nLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Mzg6TlVMTEJfREVWSUNFX0FUVFIoc3VibWl0X3F1ZXVlcywgdWludCwgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDM5Ok5VTExCX0RFVklDRV9BVFRSKHBvbGxfcXVldWVzLCB1aW50LCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQwOk5VTExCX0RFVklDRV9BVFRSKGhvbWVfbm9kZSwgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQxOk5VTExCX0RFVklDRV9BVFRSKHF1ZXVlX21vZGUsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0MjpOVUxMQl9ERVZJQ0VfQVRUUihibG9ja3NpemUsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0MzpOVUxMQl9ERVZJQ0VfQVRUUihtYXhfc2VjdG9ycywgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ0Ok5VTExCX0RFVklDRV9BVFRSKGlycW1vZGUsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0NTpOVUxMQl9ERVZJQ0VfQVRUUihod19xdWV1ZV9kZXB0aCwgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ2Ok5VTExCX0RFVklDRV9BVFRSKGluZGV4LCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NDc6TlVMTEJfREVWSUNFX0FUVFIoYmxvY2tpbmcsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0ODpOVUxMQl9ERVZJQ0VfQVRUUih1c2VfcGVyX25vZGVfaGN0eCwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ5Ok5VTExCX0RFVklDRV9BVFRSKG1lbW9yeV9iYWNrZWQsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1MDpOVUxMQl9ERVZJQ0VfQVRUUihkaXNjYXJkLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTE6TlVMTEJfREVWSUNFX0FUVFIobWJwcywgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDUyOk5VTExCX0RFVklDRV9BVFRSKGNhY2hlX3NpemUsIHVsb25nLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTM6TlVMTEJfREVWSUNFX0FUVFIoem9uZWQsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NDpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX3NpemUsIHVsb25nLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTU6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9jYXBhY2l0eSwgdWxvbmcsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NjpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX25yX2NvbnYsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NzpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX21heF9vcGVuLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTg6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9tYXhfYWN0aXZlLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTk6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9hcHBlbmRfbWF4X3NlY3RvcnMsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MDpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX2Z1bGwsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MTpOVUxMQl9ERVZJQ0VfQVRUUih2aXJ0X2JvdW5kYXJ5LCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjI6TlVMTEJfREVWSUNFX0FUVFIobm9fc2NoZWQsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MzpOVUxMQl9ERVZJQ0VfQVRUUihzaGFyZWRfdGFncywgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY0Ok5VTExCX0RFVklDRV9BVFRSKHNoYXJlZF90YWdfYml0bWFwLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjU6TlVMTEJfREVWSUNFX0FUVFIoZnVhLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjY6TlVMTEJfREVWSUNFX0FUVFIocm90YXRpb25hbCwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY3Ok5VTExCX0RFVklDRV9BVFRSKGJhZGJsb2Nrc19vbmNlLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Njg6TlVMTEJfREVWSUNFX0FUVFIoYmFkYmxvY2tzX3BhcnRpYWxfaW8sIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ2OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTk6MjQ6MDIuMDY4OTIwOTY3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjczNjk3NjA3ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBDb2RlKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgbnVsbCBibG9jayBkZXZpY2UgY29kZSBhbmQgcGlucG9pbnRpbmcgc29tZSBrZXkgYXJlYXMuIFRoZSBwYXRjaCBpcyBjbGVhcmx5IHRvdWNoaW5nIHRoZSBgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlYCBmdW5jdGlvbnMsIHdoaWNoIGFyZSBnZW5lcmF0ZWQgZm9yIHZhcmlvdXMgYXR0cmlidXRlcy4gTXkgaW5pdGlhbCBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB0aGVzZSBzcGVjaWZpYyBzeW1ib2xzOiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgYG51bGxfdmFsaWRhdGVfY29uZmAsIGBudWxsX2FkZF9kZXZgLCBgbnVsbF9pbml0X3pvbmVkX2RldmAsIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCwgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AuIFRoZXNlIHNlZW0gbGlrZSBleGNlbGxlbnQgc3RhcnRpbmcgcG9pbnRzIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZXMgYW5kIHRoZWlyIGltcGFjdC5cblxuTm93LCBJIG5lZWQgdG8gY29uc2lkZXIgYW55IHBvdGVudGlhbCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gVGhlIGluY2x1c2lvbiBvZiBgbnVsbF9pbml0X3pvbmVkX2RldmAgcmFpc2VzIGEgcmVkIGZsYWcgcmVnYXJkaW5nIHpvbmVkIGJsb2NrIGRldmljZXMuIEkgc3VzcGVjdCB0aGF0IGBDT05GSUdfQkxLX0RFVl9aT05FRGAgbWlnaHQgYmUgcmVxdWlyZWQgZm9yIHRoYXQgZnVuY3Rpb24gdG8gb3BlcmF0ZSBjb3JyZWN0bHkuIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBgZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jYCBmaWxlIHRvIGNvbmZpcm0uIFVuZGVyc3RhbmRpbmcgdGhpcyBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50IHdpbGwgYmUgY3J1Y2lhbCBmb3IgdGhlIG92ZXJhbGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEzNDgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTk6MjQ6MjkuNDM4Njk1ODEyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDYyNjkwMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnVsbF9pbml0X3pvbmVkX2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xOTQ3PXN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5ODQtXFx0aWYgKGRldi1cXHUwMDNlem9uZWQpIHtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxOTg1OlxcdFxcdHJ2ID0gbnVsbF9pbml0X3pvbmVkX2RldihkZXYsIFxcdTAwMjZsaW0pO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5ODYtXFx0XFx0aWYgKHJ2KVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oPTEzOD1ibGtfc3RhdHVzX3QgbnVsbF9oYW5kbGVfbWVtb3J5X2JhY2tlZChzdHJ1Y3QgbnVsbGJfY21kICpjbWQsIGVudW0gcmVxX29wIG9wLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE0MS0jaWZkZWYgQ09ORklHX0JMS19ERVZfWk9ORURcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmg6MTQyOmludCBudWxsX2luaXRfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwgc3RydWN0IHF1ZXVlX2xpbWl0cyAqbGltKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmgtMTQzLWludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNTI9c3NpemVfdCB6b25lX2NvbmRfc3RvcmUoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LCBjb25zdCBjaGFyICpwYWdlLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE1NC0jZWxzZVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNTU6c3RhdGljIGlubGluZSBpbnQgbnVsbF9pbml0X3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE1Ni1cXHRcXHRzdHJ1Y3QgcXVldWVfbGltaXRzICpsaW0pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM9NDI9c3RhdGljIGlubGluZSB2b2lkIG51bGxfdW5sb2NrX3pvbmUoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jLTUwLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYzo1MTppbnQgbnVsbF9pbml0X3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jLTUyLVxcdFxcdFxcdHN0cnVjdCBxdWV1ZV9saW1pdHMgKmxpbSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTk6MjQ6MjkuODg0OTgwNjQ2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MzA2MTIzMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uZmlndXJhdGlvbiBEZWNpc2lvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgdGhpcyBzdHJhaWdodC4gV2UgZGVmaW5pdGVseSBuZWVkIGBDT05GSUdfQkxLX0RFVl9aT05FRGAuIFNvLCB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QgbmVlZHMgdG8gaW5jbHVkZSBgQkxLX0RFVl9OVUxMX0JMS2AgYW5kIGBCTEtfREVWX1pPTkVEYC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLlxuXG5Ob3csIEkgbmVlZCB0byB2ZXJpZnkgd2hldGhlciBvciBub3QgYENPTkZJR19DT05GSUdGU19GU2AgaXMgcmVxdWlyZWQuIFRoZSBjb2RlIGZvciBgbnVsbF9ibGtgIGluZGljYXRlcyB0aGF0IGl0IHVzZXMgY29uZmlnZnMsIHNvIEkgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IHRoZSBhbnN3ZXIgYnkgY2hlY2tpbmcgdGhlIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdgIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjg4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTk6MjQ6MzMuODE1NTk3OTE5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjkxMzk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9OVUxMX0JMS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6Njpjb25maWcgQkxLX0RFVl9OVUxMX0JMS1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTktXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjEwOmNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy0xMS1cXHRib29sIFxcXCJTdXBwb3J0IGZhdWx0IGluamVjdGlvbiBmb3IgTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTk6MjQ6MzMuODg4NTI1OTk5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwOTI0MDYxODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUgaW1tZXJzZWQgaW4gdGhpcyBjb2RlOlxuXG4qKlVucmF2ZWxpbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgQkxLX0RFVl9OVUxMX0JMS2AqKlxuXG5SaWdodCwgbGV0IG1lIHBhdXNlIGFuZCB0aGluayB0aGlzIHRocm91Z2guIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCBgQkxLX0RFVl9OVUxMX0JMS2AgYWN0dWFsbHkgKmRvZXMqLiBCZWZvcmUgSSBkaXZlIGludG8gaXRzIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHksIEkgaGF2ZSB0byB0cmFjZSBpdHMgZGVwZW5kZW5jaWVzLiBXaGVyZSBkb2VzIHRoaXMgY29uc3RhbnQgc2hvdyB1cD8gV2hhdCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIHJlbHkgb24gaXQ/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBtb2R1bGVzIHRoYXQgYXJlIHRpZ2h0bHkgY291cGxlZCB0byBpdHMgdmFsdWUgb3IgcHVycG9zZT8gVGhpcyBjb3VsZCBpbnZvbHZlIGxvb2tpbmcgYXQgYCNkZWZpbmVgIHN0YXRlbWVudHMsIG1hY3JvIGV4cGFuc2lvbnMsIGFuZCBjcm9zcy1yZWZlcmVuY2VzIHdpdGhpbiB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzIGFuZCBzb3VyY2UgY29kZS4gVW5kZXJzdGFuZGluZyB0aG9zZSByZWxhdGlvbnNoaXBzIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgb3ZlcmFsbCByb2xlIGluIHRoaXMgYXJlYS4gSXQncyB0aGUgb25seSB3YXkgdG8gYXZvaWQgbWFraW5nIGNoYW5nZXMgdGhhdCBoYXZlIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIGVsc2V3aGVyZSBpbiB0aGUgY29kZS4gSSBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbWFwIG9mIGl0cyBjb25uZWN0aW9ucyBiZWZvcmUgY29udGludWluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI2ODMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxOToyNDozNi45ODA5Mzk1OThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTnVsbCBibG9jayBkZXZpY2UgZHJpdmVyIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IENPTkZJR0ZTX0ZTXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbiAgMTE6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIEJMS19ERVZfTlVMTF9CTEsgXFx1MDAyNlxcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE5OjI0OjM2Ljk4MTA4Nzg5OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjMyNjczNTQ5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipOdWxsIEJsb2NrIERyaXZlciBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSdtIHB1dHRpbmcgdG9nZXRoZXIgYSBmdXp6aW5nIHBsYW4gZm9yIHRoaXMgbnVsbF9ibGsgZHJpdmVyIHBhdGNoLiBUaGUgZmlyc3QgdGhpbmcgdG8gcmVtZW1iZXIgaXMgdGhhdCBgQ09ORklHRlNfRlNgIGlzIGF1dG9tYXRpY2FsbHkgcHVsbGVkIGluIGJ5IGBCTEtfREVWX05VTExfQkxLYCwgc28gSSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IGxpc3RpbmcgaXQgZXhwbGljaXRseS4gVGhhdCBzYXZlcyBhIHN0ZXAuXG5cbkFscmlnaHQsIGxldCdzIHN1bW1hcml6ZSB0aGUga2V5IHBvaW50cyBoZXJlOiB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlc2Ugc3ltYm9sczogYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCwgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYCwgYG51bGxfdmFsaWRhdGVfY29uZmAsIGBudWxsX2FkZF9kZXZgLCBhbmQgYG51bGxfaW5pdF96b25lZF9kZXZgLlxuXG5JJ20gZW5hYmxpbmcgdGhlc2UgY29uZmlnIG9wdGlvbnM6IGBCTEtfREVWX05VTExfQkxLYCBhbmQgYEJMS19ERVZfWk9ORURgLCBiZWNhdXNlIHRoaXMgZHJpdmVyIGlzIHNvZnR3YXJlLWVtdWxhdGVkLCBtYWtpbmcgaXQgaWRlYWwgZm9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYW5kIHRoZSBwYXRjaCBhZGRyZXNzZXMgZGF0YSByYWNlcyBhbmQgc29tZSBpbml0aWFsaXphdGlvbiBpc3N1ZXMuIE15IHByaW1hcnkgZnV6emluZyB0YXJnZXRzIHNob3VsZCBiZSB0aGUgdXBkYXRlZCBjb25maWdmcyBhdHRyaWJ1dGUgc3RvcmUgZnVuY3Rpb25zIGFuZCBkZXZpY2UgaW5pdGlhbGl6YXRpb24gbG9naWMsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgZml4LlxuXG5Ob3csIGEgcXVpY2sgY2hlY2sgb24gdGhlIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgIG1hY3JvLiBBaCwgcmlnaHQsIHRob3NlIGFyZSBzdGF0aWMgZnVuY3Rpb25zLCBsaWtlIGBudWxsYl9kZXZpY2Vfc2l6ZV9zdG9yZWAuIFN5emthbGxlciAqY2FuKiBzdGlsbCBnZXQgdG8gdGhlbSBpZiB0aGV5J3JlIHJlYWNoYWJsZSwgZXZlbiBpZiB0aGV5J3JlIHN0YXRpYywgYnV0IGxpc3RpbmcgZXZlcnkgc2luZ2xlIG9uZSBpc24ndCBmZWFzaWJsZS4gSSB0aGluayBmb2N1c2luZyBvbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBhbmQgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgIGlzIHN1ZmZpY2llbnQgZm9yIGluaXRpYWwgY292ZXJhZ2UuXG5cbkhvbGQgb24uLi4gYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgIGlzIGNhbGxlZCBmcm9tIGBudWxsYl9kZXZpY2Vfc3VibWl0X3F1ZXVlc19zdG9yZWAuIE9rYXksIHRoYXQncyBnb29kLiBMaXN0aW5nIHRoZSBmb3JtZXIgY292ZXJzIHRoZSBsYXR0ZXIuIFBlcmZlY3QuXG5cbkFscmlnaHQsIHdpdGggdGhhdCBjb25maXJtZWQsIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMwODksIk91dHB1dFRva2VucyI6MTU4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTk6MjU6MTkuMzA3ODI3NTYyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NDU5NjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCIsXG4gICAgXCJCTEtfREVWX1pPTkVEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCIsXG4gICAgXCJudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzXCIsXG4gICAgXCJudWxsYl9hcHBseV9wb2xsX3F1ZXVlc1wiLFxuICAgIFwibnVsbF92YWxpZGF0ZV9jb25mXCIsXG4gICAgXCJudWxsX2FkZF9kZXZcIixcbiAgICBcIm51bGxfaW5pdF96b25lZF9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBkYXRhIHJhY2VzIGFuZCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgaW4gdGhlIG51bGxfYmxrIGRyaXZlci4gVGhlIGRyaXZlciBpcyBzb2Z0d2FyZS1lbXVsYXRlZCBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG1vZGlmaWVkIGNvbmZpZ2ZzIGF0dHJpYnV0ZSBzdG9yZSBmdW5jdGlvbnMgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbiBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCIsXG4gICAgXCJCTEtfREVWX1pPTkVEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCIsXG4gICAgXCJudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzXCIsXG4gICAgXCJudWxsYl9hcHBseV9wb2xsX3F1ZXVlc1wiLFxuICAgIFwibnVsbF92YWxpZGF0ZV9jb25mXCIsXG4gICAgXCJudWxsX2FkZF9kZXZcIixcbiAgICBcIm51bGxfaW5pdF96b25lZF9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBkYXRhIHJhY2VzIGFuZCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgaW4gdGhlIG51bGxfYmxrIGRyaXZlci4gVGhlIGRyaXZlciBpcyBzb2Z0d2FyZS1lbXVsYXRlZCBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIG1vZGlmaWVkIGNvbmZpZ2ZzIGF0dHJpYnV0ZSBzdG9yZSBmdW5jdGlvbnMgYW5kIGRldmljZSBpbml0aWFsaXphdGlvbiBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowjjnwn[1] Phase: Succeeded StartedAt: 2026-07-08 19:25:31 +0000 UTC FinishedAt: 2026-07-08 19:25:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-08 19:25:31 +0000 UTC FinishedAt: 2026-07-08 19:25:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[2] Phase: Succeeded StartedAt: 2026-07-08 19:25:31 +0000 UTC FinishedAt: 2026-07-08 23:31:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-08 19:25:31 +0000 UTC FinishedAt: 2026-07-08 23:31:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-08 19:25:31 +0000 UTC FinishedAt: 2026-07-08 19:25:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-08 19:25:31 +0000 UTC FinishedAt: 2026-07-08 19:25:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjjnwn/series-workflowjjnwn-convert-artifact-2146010177/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-08 19:25:41 +0000 UTC FinishedAt: 2026-07-08 19:53:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-08 19:25:41 +0000 UTC FinishedAt: 2026-07-08 19:53:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*2fa3ddd5-08cf-467f-bec3-ab796440bf75,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjjnwn/series-workflowjjnwn-convert-artifact-2146010177/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "32c57309-1caa-42d0-bd49-948cde5ef06f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjjnwn/series-workflowjjnwn-build-action-972466799/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-08 19:25:41 +0000 UTC FinishedAt: 2026-07-08 19:53:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*2fa3ddd5-08cf-467f-bec3-ab796440bf75,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjjnwn/series-workflowjjnwn-convert-artifact-2146010177/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "32c57309-1caa-42d0-bd49-948cde5ef06f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjjnwn/series-workflowjjnwn-build-action-972466799/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-08 19:53:45 +0000 UTC FinishedAt: 2026-07-08 19:53:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-08 19:53:45 +0000 UTC FinishedAt: 2026-07-08 19:53:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-08 19:53:45 +0000 UTC FinishedAt: 2026-07-08 19:53:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-08 19:53:45 +0000 UTC FinishedAt: 2026-07-08 19:53:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjjnwn/series-workflowjjnwn-convert-artifact-1442604052/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-08 19:53:55 +0000 UTC FinishedAt: 2026-07-08 19:56:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-08 19:53:55 +0000 UTC FinishedAt: 2026-07-08 19:55:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*32c57309-1caa-42d0-bd49-948cde5ef06f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjjnwn/series-workflowjjnwn-build-action-972466799/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-08 19:56:06 +0000 UTC FinishedAt: 2026-07-08 19:56:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-08 19:56:06 +0000 UTC FinishedAt: 2026-07-08 19:56:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-08 19:56:06 +0000 UTC FinishedAt: 2026-07-08 20:25:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-08 19:56:06 +0000 UTC FinishedAt: 2026-07-08 20:25:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*2fa3ddd5-08cf-467f-bec3-ab796440bf75,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjjnwn/series-workflowjjnwn-convert-artifact-1442604052/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "5d38f9ea-39a3-4a46-8b4a-df5205789876", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjjnwn/series-workflowjjnwn-build-action-3410283744/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-08 19:56:06 +0000 UTC FinishedAt: 2026-07-08 20:25:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*2fa3ddd5-08cf-467f-bec3-ab796440bf75,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjjnwn/series-workflowjjnwn-convert-artifact-1442604052/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "5d38f9ea-39a3-4a46-8b4a-df5205789876", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjjnwn/series-workflowjjnwn-build-action-3410283744/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-08 20:25:54 +0000 UTC FinishedAt: 2026-07-08 20:25:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-08 20:25:54 +0000 UTC FinishedAt: 2026-07-08 20:25:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-08 20:25:54 +0000 UTC FinishedAt: 2026-07-08 20:27:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-08 20:25:54 +0000 UTC FinishedAt: 2026-07-08 20:27:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5d38f9ea-39a3-4a46-8b4a-df5205789876,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjjnwn/series-workflowjjnwn-build-action-3410283744/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-08 20:27:52 +0000 UTC FinishedAt: 2026-07-08 23:31:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-08 20:27:52 +0000 UTC FinishedAt: 2026-07-08 23:31:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*32c57309-1caa-42d0-bd49-948cde5ef06f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5d38f9ea-39a3-4a46-8b4a-df5205789876,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjjnwn/series-workflowjjnwn-build-action-972466799/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjjnwn/series-workflowjjnwn-build-action-3410283744/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-08 20:27:52 +0000 UTC FinishedAt: 2026-07-08 20:28:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-08 20:27:52 +0000 UTC FinishedAt: 2026-07-08 20:27:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjjnwn/series-workflowjjnwn-convert-artifact-3938583101/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-08 20:27:52 +0000 UTC FinishedAt: 2026-07-08 20:27:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-08 20:27:52 +0000 UTC FinishedAt: 2026-07-08 20:27:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-08 20:27:52 +0000 UTC FinishedAt: 2026-07-08 20:27:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-08 20:28:02 +0000 UTC FinishedAt: 2026-07-08 23:31:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjjnwn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_device_power_store","nullb_apply_submit_queues","nullb_apply_poll_queues","null_validate_conf","null_add_dev","null_init_zoned_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"53ad5c3f-a327-4a23-940a-545325dc73ff","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-08 20:28:02 +0000 UTC FinishedAt: 2026-07-08 23:31:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*32c57309-1caa-42d0-bd49-948cde5ef06f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5d38f9ea-39a3-4a46-8b4a-df5205789876,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjjnwn/series-workflowjjnwn-build-action-972466799/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjjnwn/series-workflowjjnwn-build-action-3410283744/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjjnwn/series-workflowjjnwn-convert-artifact-3938583101/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}