Name: series-workflowwvcsr Phase: Succeeded StartedAt: 2026-08-01 12:08:32 +0000 UTC FinishedAt: 2026-08-01 16:19:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[0] Phase: Succeeded StartedAt: 2026-08-01 12:08:32 +0000 UTC FinishedAt: 2026-08-01 12:31:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 12:08:32 +0000 UTC FinishedAt: 2026-08-01 12:31:40 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DEV_REFCNT_TRACKER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DEV_REFCNT_TRACKER" ], "series_id": "cf4a6393-5a6e-4df2-af94-53e457275dbe" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "unregister_netdevice_many_notify", "netdev_work_cancel_all" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9ERVZfUkVGQ05UX1RSQUNLRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeSYjMzQ7LAogICAgJiMzNDtuZXRkZXZfd29ya19jYW5jZWxfYWxsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgbmV0d29ya2luZyBkZXZpY2UgdGVhcmRvd24gbG9naWMgYnkgYWRkaW5nIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCB0byBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgIGFuZCBjaGFuZ2luZyBgbmV0ZGV2X3B1dGAgYW5kIGBuZXRkZXZfcmVmX3JlcGxhY2VgIHRvIHNraXAgYF9fZGV2X3B1dGAgaWYgYG5ldGRldl90cmFja2VyX2ZyZWVgIHJldHVybnMgYC1FSU5WQUxgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb3JlIG5ldHdvcmsgZGV2aWNlIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGFuZCBzaG91bGQgYmUgZnV6emVkLiBUaGUgYC1FSU5WQUxgIHBhdGggcmVxdWlyZXMgYENPTkZJR19ORVRfREVWX1JFRkNOVF9UUkFDS0VSYCB0byBiZSBlbmFibGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjMxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTBlZWQ1YWU2NjJjNzFmNGEyMzBhY2RlZDdiNjA0NDZkMTcxZTcxZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMTI6MzA6NTkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbmluZGV4IDk5ODFkNjM3ZjhiNTQuLjVlOGNmM2ZjNmM4M2EgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG5AQCAtNDUxMiwxMSAmIzQzOzQ1MTIsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIG5ldGRldl90cmFja2VyX2FsbG9jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gI2VuZGlmXG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfdHJhY2tlcl9mcmVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4mIzQzO3N0YXRpYyBpbmxpbmUgaW50IG5ldGRldl90cmFja2VyX2ZyZWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgICAgICBuZXRkZXZpY2VfdHJhY2tlciAqdHJhY2tlcilcbiB7XG4gI2lmZGVmIENPTkZJR19ORVRfREVWX1JFRkNOVF9UUkFDS0VSXG4tXHRyZWZfdHJhY2tlcl9mcmVlKFx1MDAyNmRldi1cdTAwM2VyZWZjbnRfdHJhY2tlciwgdHJhY2tlcik7XG4mIzQzO1x0cmV0dXJuIHJlZl90cmFja2VyX2ZyZWUoXHUwMDI2ZGV2LVx1MDAzZXJlZmNudF90cmFja2VyLCB0cmFja2VyKTtcbiYjNDM7I2Vsc2VcbiYjNDM7XHRyZXR1cm4gMDtcbiAjZW5kaWZcbiB9XG4gXG5AQCAtNDUzMyw4ICYjNDM7NDUzNSwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3B1dChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdCAgICAgIG5ldGRldmljZV90cmFja2VyICp0cmFja2VyKVxuIHtcbiBcdGlmIChkZXYpIHtcbi1cdFx0bmV0ZGV2X3RyYWNrZXJfZnJlZShkZXYsIHRyYWNrZXIpO1xuLVx0XHRfX2Rldl9wdXQoZGV2KTtcbiYjNDM7XHRcdC8qIFNraXAgX19kZXZfcHV0KCkgb24gLUVJTlZBTDogcmVmX3RyYWNrZXJfZnJlZSgpIGFscmVhZHlcbiYjNDM7XHRcdCAqIHdhcm5lZCBhbmQgdGhlIHJlZmNvdW50IHdhcyBkZWNyZW1lbnRlZCBieSB0aGUgZmlyc3RcbiYjNDM7XHRcdCAqIHN1Y2Nlc3NmdWwgZnJlZS5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKG5ldGRldl90cmFja2VyX2ZyZWUoZGV2LCB0cmFja2VyKSAhPSAtRUlOVkFMKVxuJiM0MztcdFx0XHRfX2Rldl9wdXQoZGV2KTtcbiBcdH1cbiB9XG4gXG5AQCAtNDU2OSwxMSAmIzQzOzQ1NzUsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9yZWZfcmVwbGFjZShzdHJ1Y3QgbmV0X2RldmljZSAqb2RldixcbiBcdFx0XHRcdCAgICAgIG5ldGRldmljZV90cmFja2VyICp0cmFja2VyLFxuIFx0XHRcdFx0ICAgICAgZ2ZwX3QgZ2ZwKVxuIHtcbi1cdGlmIChvZGV2KVxuLVx0XHRuZXRkZXZfdHJhY2tlcl9mcmVlKG9kZXYsIHRyYWNrZXIpO1xuJiM0MztcdGlmIChvZGV2IFx1MDAyNlx1MDAyNiBuZXRkZXZfdHJhY2tlcl9mcmVlKG9kZXYsIHRyYWNrZXIpICE9IC1FSU5WQUwpXG4mIzQzO1x0XHRfX2Rldl9wdXQob2Rldik7XG4gXG4gXHRfX2Rldl9ob2xkKG5kZXYpO1xuLVx0X19kZXZfcHV0KG9kZXYpO1xuIFxuIFx0aWYgKG5kZXYpXG4gXHRcdF9fbmV0ZGV2X3RyYWNrZXJfYWxsb2MobmRldiwgdHJhY2tlciwgZ2ZwKTtcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jXG5pbmRleCA1OTMzYzVkYWIwOWVlLi5iNDYxYjAxMmUyYWIyIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL2Rldi5jXG5AQCAtMTI0NTYsNyAmIzQzOzEyNDU2LDcgQEAgdm9pZCB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxuIFx0XHRkZXZfdWNfZmx1c2goZGV2KTtcbiBcdFx0ZGV2X21jX2ZsdXNoKGRldik7XG4gXG4tXG4mIzQzO1x0XHRuZXRkZXZfd29ya19jYW5jZWxfYWxsKGRldik7XG4gXHRcdG5ldGRldl9yc3NfY29udGV4dHNfZnJlZShkZXYpO1xuIFxuIFx0XHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX1BSRV9VTklOSVQsIGRldik7XG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmggYi9uZXQvY29yZS9kZXYuaFxuaW5kZXggNWQwYjAzMDVkM2JhYS4uZDNhYzNiYTRiMmEwMCAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL2Rldi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9kZXYuaFxuQEAgLTE4MCw2ICYjNDM7MTgwLDggQEAgdm9pZCBfX25ldGRldl93b3JrX2NvcmVfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudCk7XG4gdW5zaWduZWQgbG9uZ1xuIF9fbmV0ZGV2X3dvcmtfY29yZV9jYW5jZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBtYXNrKTtcbiBcbiYjNDM7dm9pZCBuZXRkZXZfd29ya19jYW5jZWxfYWxsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuJiM0MztcbiB2b2lkIF9fZGV2X25vdGlmeV9mbGFncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgb2xkX2ZsYWdzLFxuIFx0XHRcdHVuc2lnbmVkIGludCBnY2hhbmdlcywgdTMyIHBvcnRpZCxcbiBcdFx0XHRjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCk7XG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuYyBiL25ldC9jb3JlL25ldGRldl93b3JrLmNcbmluZGV4IDMxMDlmYWUxMzJhZDEuLmQ2OTM2M2QyNDdiM2UgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9uZXRkZXZfd29yay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9uZXRkZXZfd29yay5jXG5AQCAtOTksNiAmIzQzOzk5LDE2IEBAIF9fbmV0ZGV2X3dvcmtfY29yZV9jYW5jZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBtYXNrKVxuIFx0cmV0dXJuIG5ldGRldl93b3JrX2RlcXVldWUoZGV2LCBcdTAwMjZkZXYtXHUwMDNld29ya19jb3JlX3BlbmRpbmcsIG1hc2spO1xuIH1cbiBcbiYjNDM7LyogQ2FuY2VsIGFsbCBwZW5kaW5nIGNvcmUgYW5kIGRyaXZlciB3b3JrIGFuZCByZWxlYXNlIHRoZSB3b3JrX3RyYWNrZXJcbiYjNDM7ICogcmVmZXJlbmNlLiAgTXVzdCBiZSBjYWxsZWQgdW5kZXIgUlROTCwgd2hpY2ggbXV0dWFsbHkgZXhjbHVkZXNcbiYjNDM7ICogbmV0ZGV2X3dvcmtfcHJvYygpLlxuJiM0MzsgKi9cbiYjNDM7dm9pZCBuZXRkZXZfd29ya19jYW5jZWxfYWxsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4mIzQzO3tcbiYjNDM7XHRfX25ldGRldl93b3JrX2NvcmVfY2FuY2VsKGRldiwgfjBVTCk7XG4mIzQzO1x0bmV0ZGV2X3dvcmtfY2FuY2VsKGRldiwgfjBVTCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgbmV0ZGV2X3dvcmtfcnVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzLFxuIFx0XHRcdCAgICB1bnNpZ25lZCBsb25nIGNvcmUpXG4ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjMxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfREVWX1JFRkNOVF9UUkFDS0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkmIzM0OywKICAgICYjMzQ7bmV0ZGV2X3dvcmtfY2FuY2VsX2FsbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG5ldHdvcmtpbmcgZGV2aWNlIHRlYXJkb3duIGxvZ2ljIGJ5IGFkZGluZyBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAgdG8gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBhbmQgY2hhbmdpbmcgYG5ldGRldl9wdXRgIGFuZCBgbmV0ZGV2X3JlZl9yZXBsYWNlYCB0byBza2lwIGBfX2Rldl9wdXRgIGlmIGBuZXRkZXZfdHJhY2tlcl9mcmVlYCByZXR1cm5zIGAtRUlOVkFMYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29yZSBuZXR3b3JrIGRldmljZSBsaWZlY3ljbGUgbWFuYWdlbWVudCBhbmQgc2hvdWxkIGJlIGZ1enplZC4gVGhlIGAtRUlOVkFMYCBwYXRoIHJlcXVpcmVzIGBDT05GSUdfTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUmAgdG8gYmUgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGUwZWVkNWFlNjYyYzcxZjRhMjMwYWNkZWQ3YjYwNDQ2ZDE3MWU3MWUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxIDEyOjMwOjU5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgKaW5kZXggOTk4MWQ2MzdmOGI1NC4uNWU4Y2YzZmM2YzgzYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oCkBAIC00NTEyLDExICYjNDM7NDUxMiwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3RyYWNrZXJfYWxsb2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3RyYWNrZXJfZnJlZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAomIzQzO3N0YXRpYyBpbmxpbmUgaW50IG5ldGRldl90cmFja2VyX2ZyZWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCQkgICAgICAgbmV0ZGV2aWNlX3RyYWNrZXIgKnRyYWNrZXIpCiB7CiAjaWZkZWYgQ09ORklHX05FVF9ERVZfUkVGQ05UX1RSQUNLRVIKLQlyZWZfdHJhY2tlcl9mcmVlKCZhbXA7ZGV2LSZndDtyZWZjbnRfdHJhY2tlciwgdHJhY2tlcik7CiYjNDM7CXJldHVybiByZWZfdHJhY2tlcl9mcmVlKCZhbXA7ZGV2LSZndDtyZWZjbnRfdHJhY2tlciwgdHJhY2tlcik7CiYjNDM7I2Vsc2UKJiM0MzsJcmV0dXJuIDA7CiAjZW5kaWYKIH0KIApAQCAtNDUzMyw4ICYjNDM7NDUzNSwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3B1dChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJICAgICAgbmV0ZGV2aWNlX3RyYWNrZXIgKnRyYWNrZXIpCiB7CiAJaWYgKGRldikgewotCQluZXRkZXZfdHJhY2tlcl9mcmVlKGRldiwgdHJhY2tlcik7Ci0JCV9fZGV2X3B1dChkZXYpOwomIzQzOwkJLyogU2tpcCBfX2Rldl9wdXQoKSBvbiAtRUlOVkFMOiByZWZfdHJhY2tlcl9mcmVlKCkgYWxyZWFkeQomIzQzOwkJICogd2FybmVkIGFuZCB0aGUgcmVmY291bnQgd2FzIGRlY3JlbWVudGVkIGJ5IHRoZSBmaXJzdAomIzQzOwkJICogc3VjY2Vzc2Z1bCBmcmVlLgomIzQzOwkJICovCiYjNDM7CQlpZiAobmV0ZGV2X3RyYWNrZXJfZnJlZShkZXYsIHRyYWNrZXIpICE9IC1FSU5WQUwpCiYjNDM7CQkJX19kZXZfcHV0KGRldik7CiAJfQogfQogCkBAIC00NTY5LDExICYjNDM7NDU3NSwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3JlZl9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpvZGV2LAogCQkJCSAgICAgIG5ldGRldmljZV90cmFja2VyICp0cmFja2VyLAogCQkJCSAgICAgIGdmcF90IGdmcCkKIHsKLQlpZiAob2RldikKLQkJbmV0ZGV2X3RyYWNrZXJfZnJlZShvZGV2LCB0cmFja2VyKTsKJiM0MzsJaWYgKG9kZXYgJmFtcDsmYW1wOyBuZXRkZXZfdHJhY2tlcl9mcmVlKG9kZXYsIHRyYWNrZXIpICE9IC1FSU5WQUwpCiYjNDM7CQlfX2Rldl9wdXQob2Rldik7CiAKIAlfX2Rldl9ob2xkKG5kZXYpOwotCV9fZGV2X3B1dChvZGV2KTsKIAogCWlmIChuZGV2KQogCQlfX25ldGRldl90cmFja2VyX2FsbG9jKG5kZXYsIHRyYWNrZXIsIGdmcCk7CmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jCmluZGV4IDU5MzNjNWRhYjA5ZWUuLmI0NjFiMDEyZTJhYjIgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL2Rldi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL2Rldi5jCkBAIC0xMjQ1Niw3ICYjNDM7MTI0NTYsNyBAQCB2b2lkIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsCiAJCWRldl91Y19mbHVzaChkZXYpOwogCQlkZXZfbWNfZmx1c2goZGV2KTsKIAotCiYjNDM7CQluZXRkZXZfd29ya19jYW5jZWxfYWxsKGRldik7CiAJCW5ldGRldl9yc3NfY29udGV4dHNfZnJlZShkZXYpOwogCiAJCWNhbGxfbmV0ZGV2aWNlX25vdGlmaWVycyhORVRERVZfUFJFX1VOSU5JVCwgZGV2KTsKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5oIGIvbmV0L2NvcmUvZGV2LmgKaW5kZXggNWQwYjAzMDVkM2JhYS4uZDNhYzNiYTRiMmEwMCAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvZGV2LmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvZGV2LmgKQEAgLTE4MCw2ICYjNDM7MTgwLDggQEAgdm9pZCBfX25ldGRldl93b3JrX2NvcmVfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudCk7CiB1bnNpZ25lZCBsb25nCiBfX25ldGRldl93b3JrX2NvcmVfY2FuY2VsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgbWFzayk7CiAKJiM0Mzt2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CiYjNDM7CiB2b2lkIF9fZGV2X25vdGlmeV9mbGFncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgb2xkX2ZsYWdzLAogCQkJdW5zaWduZWQgaW50IGdjaGFuZ2VzLCB1MzIgcG9ydGlkLAogCQkJY29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgpOwpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuYyBiL25ldC9jb3JlL25ldGRldl93b3JrLmMKaW5kZXggMzEwOWZhZTEzMmFkMS4uZDY5MzYzZDI0N2IzZSAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9uZXRkZXZfd29yay5jCkBAIC05OSw2ICYjNDM7OTksMTYgQEAgX19uZXRkZXZfd29ya19jb3JlX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spCiAJcmV0dXJuIG5ldGRldl93b3JrX2RlcXVldWUoZGV2LCAmYW1wO2Rldi0mZ3Q7d29ya19jb3JlX3BlbmRpbmcsIG1hc2spOwogfQogCiYjNDM7LyogQ2FuY2VsIGFsbCBwZW5kaW5nIGNvcmUgYW5kIGRyaXZlciB3b3JrIGFuZCByZWxlYXNlIHRoZSB3b3JrX3RyYWNrZXIKJiM0MzsgKiByZWZlcmVuY2UuICBNdXN0IGJlIGNhbGxlZCB1bmRlciBSVE5MLCB3aGljaCBtdXR1YWxseSBleGNsdWRlcwomIzQzOyAqIG5ldGRldl93b3JrX3Byb2MoKS4KJiM0MzsgKi8KJiM0Mzt2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKJiM0Mzt7CiYjNDM7CV9fbmV0ZGV2X3dvcmtfY29yZV9jYW5jZWwoZGV2LCB+MFVMKTsKJiM0MzsJbmV0ZGV2X3dvcmtfY2FuY2VsKGRldiwgfjBVTCk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgbmV0ZGV2X3dvcmtfcnVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzLAogCQkJICAgIHVuc2lnbmVkIGxvbmcgY29yZSkKIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzExNwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldHdvcmsgRGV2aWNlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBzZXZlcmFsIGNvcmUgbmV0d29ya2luZyBmaWxlczogYGluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhgLCBgbmV0L2NvcmUvZGV2LmNgLCBgbmV0L2NvcmUvZGV2LmhgLCBhbmQgYG5ldC9jb3JlL25ldGRldl93b3JrLmNgLiBTZWVtcyBsaWtlIHRoZSBtYWluIHRocnVzdCBpcyB0byBjaGFuZ2UgdGhlIHJldHVybiB0eXBlIG9mIGBuZXRkZXZfdHJhY2tlcl9mcmVlYCB0byBgaW50YC4gIFRoYXQmIzM5O3MgYSBwcmV0dHkgbG93LWxldmVsIGNoYW5nZSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4KClRoZSBwYXRjaCB0aGVuIHVwZGF0ZXMgYG5ldGRldl9wdXRgIGFuZCBgbmV0ZGV2X3JlZl9yZXBsYWNlYCB0byBjb25kaXRpb25hbGx5ICpub3QqIGNhbGwgYF9fZGV2X3B1dGAgaWYgYG5ldGRldl90cmFja2VyX2ZyZWVgIHJldHVybnMgYC1FSU5WQUxgLiAgVGhhdCYjMzk7cyBpbnRlcmVzdGluZzsgaXQgc3VnZ2VzdHMgdGhhdCBgLUVJTlZBTGAgaXMgbm93IGEgdmFsaWQsIGVycm9yLWluZGljYXRpbmcgcmV0dXJuIGZyb20gYG5ldGRldl90cmFja2VyX2ZyZWVgIHdoaWNoLCBpZiB0cnVlLCBuZWVkcyBhIGNsb3NlIHJlYWQgb24gdGhlIGltcGxpY2F0aW9ucyBvZiBhIG5ldHdvcmsgZHJpdmVyIG5vIGxvbmdlciBjYWxsaW5nIHRoZSBkZXZpY2UgcHV0IGZ1bmN0aW9uLgoKQWRkaXRpb25hbGx5LCB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24sIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCwgYW5kIGNhbGxzIGl0IHdpdGhpbiBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgLiAgVGhhdCYjMzk7cyBzaWduaWZpY2FudCEgIFRoaXMgbGlrZWx5IG1lYW5zIHRoZXkmIzM5O3JlIHRyeWluZyB0byBwcmV2ZW50IHNvbWUgcmFjZSBjb25kaXRpb24gb3IgZG91YmxlLWZyZWUgc2NlbmFyaW8gZHVyaW5nIG5ldHdvcmsgZGV2aWNlIHVucmVnaXN0cmF0aW9uLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCYjMzk7cyBjYW5jZWxsaW5nIHRvIGZ1bGx5IGdyYXNwIHRoZSBjaGFuZ2UuCgpNeSBuZXh0IHN0ZXBzIGFyZSBjbGVhcjogIEkgbmVlZCB0byBkaXZlIGludG8gdGhvc2UgZnVuY3Rpb25zLiAgYG5ldGRldl9wdXRgIGFuZCBgbmV0ZGV2X3JlZl9yZXBsYWNlYCBhcmUgaW5saW5lLCBzbyB0aGF0IHNpbXBsaWZpZXMgdGhpbmdzIGEgYml0OyBJIGp1c3QgaGF2ZSB0byB0cmFjZSB0aGVpciB1c2FnZS4gIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCBpcyB0aGUgbmV3IGtpZCBvbiB0aGUgYmxvY2ssIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbiBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIG90aGVyIGNvcmUgZnVuY3Rpb25zLiBBbmQgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBpcyBtb2RpZmllZCwgc28gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgZGlmZiB0byB1bmRlcnN0YW5kIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZS4KCkZpbmFsbHksIEkgbmVlZCB0byBjaGVjayBob3cgYG5ldC9jb3JlL25ldGRldl93b3JrLmNgIGlzIGNvbXBpbGVkLiAgSXMgaXQgYWx3YXlzIGluY2x1ZGVkLCBvciBpcyBpdCBndWFyZGVkIGJ5IHNvbWUgY29uZmlndXJhdGlvbiBmbGFnPyAgSSYjMzk7bGwgY2hlY2sgdGhlIGBuZXQvY29yZS9NYWtlZmlsZWAgdG8gbWFrZSBzdXJlIEkgZ2V0IGEgZ29vZCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGRldl93b3JrLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9NYWtlZmlsZT0xMj1vYmoteVx0XHQgICAgICYjNDM7PSBkZXYubyBkZXZfYXBpLm8gZGV2X2FkZHJfbGlzdHMubyBkc3QubyBuZXRldmVudC5vIFxcXG4tLVxubmV0L2NvcmUvTWFrZWZpbGUtMTUtXHRcdFx0ZmliX25vdGlmaWVyLm8geGRwLm8gZmxvd19vZmZsb2FkLm8gZ3JvLm8gXFxcbm5ldC9jb3JlL01ha2VmaWxlOjE2Olx0XHRcdG5ldGRldi1nZW5sLm8gbmV0ZGV2LWdlbmwtZ2VuLm8gbmV0ZGV2X3dvcmsubyBnc28ub1xubmV0L2NvcmUvTWFrZWZpbGUtMTctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAyNgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDIwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgTmV0d29yayBEZXZpY2UgUmVmZXJlbmNlIENvdW50aW5nKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhlIGJ1aWxkIHN5c3RlbSwgaXQmIzM5O3MgY2xlYXIgdGhhdCBgbmV0ZGV2X3dvcmsub2AgYW5kIGBkZXYub2AgYXJlIGFsd2F5cyBpbmNsdWRlZCBpbiB0aGUgYnVpbGQsIHdoaWNoIG1ha2VzIHNlbnNlLiBOb3csIEkgbmVlZCB0byBmb2N1cyBteSBlZmZvcnRzIG9uIHNwZWNpZmljIGZ1bmN0aW9ucyB0byB0ZXN0LCBhbmQgbmFycm93IGRvd24gdGhlIGFyZWEgdG8gc3R1ZHkuCgpMZXQmIzM5O3Mgc2VlLi4uIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgbG9va3MgcHJvbWlzaW5nLCBhbmQgc28gZG9lcyBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAuIFRoZXkgc2VlbSBsaWtlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzIGZvciBkZWJ1Z2dpbmcgb3IgcGVyZm9ybWFuY2UgYW5hbHlzaXMuIEkgYWxzbyBzZWUgYG5ldGRldl9wdXRgIGFuZCBgbmV0ZGV2X3JlZl9yZXBsYWNlYCwgYnV0IHRob3NlIGFyZSBpbmxpbmUsIHNvIEkgY2FuJiMzOTt0IGRpcmVjdGx5IHRhcmdldCB0aGVtLiBIb3dldmVyLCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoZXkgYXJlIHVzZWQgZXh0ZW5zaXZlbHksIG1lYW5pbmcgdGhleSB3aWxsIGJlIHJlbGV2YW50IGR1cmluZyBhbnkgYW5hbHlzaXMuCgpOb3csIGEga2V5IGNvbnNpZGVyYXRpb24gZm9yIHRlc3RpbmcsIHRoZSBgQ09ORklHX05FVF9ERVZfUkVGQ05UX1RSQUNLRVJgIG9wdGlvbiBjb21lcyBpbnRvIHBsYXksIG9idmlvdXNseS4gSWYgaXQmIzM5O3MgZW5hYmxlZCwgYG5ldGRldl90cmFja2VyX2ZyZWVgIHVzZXMgYHJlZl90cmFja2VyX2ZyZWVgLiBJZiBpdCYjMzk7cyAqbm90KiBlbmFibGVkLCBpdCByZXR1cm5zIDAuIFNvLCB0byBzcGVjaWZpY2FsbHkgdHJpZ2dlciBhbmQgdGVzdCB0aGUgYC1FSU5WQUxgIGVycm9yIHBhdGgsIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGBDT05GSUdfTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUmAgaW4gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIFRoYXQgaXMga2V5IHRvIGlzb2xhdGluZyBhIGNlcnRhaW4gcHJvYmxlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZy5kZWJ1Zy0yLVxubmV0L0tjb25maWcuZGVidWc6Mzpjb25maWcgTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUlxubmV0L0tjb25maWcuZGVidWctNC1cdGJvb2wgXCYjMzQ7RW5hYmxlIG5ldCBkZXZpY2UgcmVmY291bnQgdHJhY2tpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjA1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczoKCioqSW52ZXN0aWdhdGluZyBORVRfREVWX1JFRkNOVF9UUkFDS0VSIERlcGVuZGVuY2llcyoqCgpSaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIGBORVRfREVWX1JFRkNOVF9UUkFDS0VSYC4gVGhpcyBmZWF0dXJlLCBvciB3aGF0ZXZlciBpdCBpcywgc291bmRzIGltcG9ydGFudCBmb3IgZGVidWdnaW5nIG5ldHdvcmsgZGV2aWNlIHJlZmVyZW5jZSBjb3VudHMuIEkmIzM5O20gZ3Vlc3NpbmcgaXQmIzM5O3MgdXNlZCBmb3IgdHJhY2tpbmcgZG93biB0aG9zZSBwZXNreSBtZW1vcnkgbGVha3Mgb3IgcHJlbWF0dXJlIHJlbGVhc2VzIHRoYXQgY2FuIHBsYWd1ZSBuZXR3b3JraW5nIGNvZGUuCgpNeSBmaXJzdCBwb3J0IG9mIGNhbGwgaXMgYWx3YXlzIHRoZSBgS2NvbmZpZ2AgZmlsZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgZ28gc3RyYWlnaHQgZm9yIGBuZXQvS2NvbmZpZy5kZWJ1Z2AuIEl0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGJlY2F1c2UgdGhhdCYjMzk7cyB3aGVyZSBkZWJ1ZyBvcHRpb25zIHVzdWFsbHkgcmVzaWRlLiBJJiMzOTtsbCBzZWFyY2ggdGhhdCBmaWxlIGZvciB0aGUgZGVwZW5kZW5jaWVzIG9mIGBORVRfREVWX1JFRkNOVF9UUkFDS0VSYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgdGhpcyB0aGluZywgd2hpY2ggZmVhdHVyZXMgbXVzdCBiZSBlbmFibGVkIGZvciBpdCB0byB3b3JrLiBUaGF0IGZpbGUgd2lsbCBnaXZlIG1lIHRoZSBsb3dkb3duIG9uIGFueSBvdGhlciBjb25maWcgc3ltYm9scyB0aGF0IG5lZWQgdG8gYmUgaW4gcGxhY2UuIFRoaXMgd2lsbCBnaXZlIG1lIGFsbCB0aGUgaW5mb3JtYXRpb24gdGhhdCBJIHJlcXVpcmUgYmVmb3JlIEkgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBhY3R1YWwgY29kZS4gRnJvbSB0aGVyZSwgSSBjYW4gZ2V0IGEgYmV0dGVyIHNlbnNlIG9mIGhvdyBpdCYjMzk7cyB1c2VkIGFuZCB3aGF0IGl0IGludGVyYWN0cyB3aXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L0tjb25maWcuZGVidWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRjb25maWcgTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUlxuICAgNDpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgbmV0IGRldmljZSByZWZjb3VudCB0cmFja2luZ1wmIzM0O1xuICAgNTpcdFx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUwgXHUwMDI2XHUwMDI2IFNUQUNLVFJBQ0VfU1VQUE9SVCBcdTAwMjZcdTAwMjYgTkVUXG4gICA2Olx0XHRzZWxlY3QgUkVGX1RSQUNLRVJcbiAgIDc6XHRcdGRlZmF1bHQgblxuICAgODpcdFx0aGVscFxuICAgOTpcdFx0ICBFbmFibGUgZGVidWdnaW5nIGZlYXR1cmUgdG8gdHJhY2sgZGV2aWNlIHJlZmVyZW5jZXMuXG4gIDEwOlx0XHQgIFRoaXMgYWRkcyBtZW1vcnkgYW5kIGNwdSBjb3N0cy5cbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgTkVUX05TX1JFRkNOVF9UUkFDS0VSXG4gIDEzOlx0XHRib29sIFwmIzM0O0VuYWJsZSBuZXR3b3JraW5nIG5hbWVzcGFjZSByZWZjb3VudCB0cmFja2luZ1wmIzM0O1xuICAxNDpcdFx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUwgXHUwMDI2XHUwMDI2IFNUQUNLVFJBQ0VfU1VQUE9SVCBcdTAwMjZcdTAwMjYgTkVUXG4gIDE1Olx0XHRzZWxlY3QgUkVGX1RSQUNLRVJcbiAgMTY6XHRcdGRlZmF1bHQgblxuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBFbmFibGUgZGVidWdnaW5nIGZlYXR1cmUgdG8gdHJhY2sgbmV0bnMgcmVmZXJlbmNlcy5cbiAgMTk6XHRcdCAgVGhpcyBhZGRzIG1lbW9yeSBhbmQgY3B1IGNvc3RzLlxuICAyMDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNzEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQcm9wb3NlZCBDb25maWd1cmF0aW9uIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwcm9wb3NlZCBjb25maWd1cmF0aW9uIGFuZCBpbW1lZGlhdGVseSBzZWUgdGhhdCBgTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUmAgaGFzIHNvbWUgZGVwZW5kZW5jaWVzLiBJdCYjMzk7cyB0aWVkIHRvIGBERUJVR19LRVJORUxgLCBgU1RBQ0tUUkFDRV9TVVBQT1JUYCwgYW5kIGBORVRgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGdpdmVuIGl0cyBmdW5jdGlvbi4gV2UgbmVlZCB0byBlbnN1cmUgYE5FVF9ERVZfUkVGQ05UX1RSQUNLRVJgIGlzIHByb3Blcmx5IGludGVncmF0ZWQgaW50byBgRW5hYmxlQ29uZmlnc2AgdG8gZW5zdXJlIGl0JiMzOTtzIGVuYWJsZWQgd2hlbiBpdCBuZWVkcyB0byBiZS4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUsIHRoZSBncm91bmR3b3JrIHRoYXQgbmVlZHMgdG8gYmUgbGFpZCBmaXJzdC4KCk5vdywgdGhlIGNvZGUgY2hhbmdlcy4gVGhlIHBhdGNoIG1vZGlmaWVzIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgdG8gaW5jbHVkZSBhIGNhbGwgdG8gYG5ldGRldl93b3JrX2NhbmNlbF9hbGwoZGV2KWAuIFRoYXQmIzM5O3MgYSBnb29kIGFkZGl0aW9uLCBhbmQgaXQmIzM5O3MgZGVmaW5pdGVseSByZWFjaGFibGUgY29kZSBwYXRoLiBJdCYjMzk7cyBhIHN0YW5kYXJkIGNsZWFudXAgb3BlcmF0aW9uLiBUaGVuIHRoZXJlIGFyZSBjaGFuZ2VzIHRvIGBuZXRkZXZfcHV0YCBhbmQgYG5ldGRldl9yZWZfcmVwbGFjZWAgd2hlcmUgYF9fZGV2X3B1dGAgaXMgc2tpcHBlZCBpZiBgbmV0ZGV2X3RyYWNrZXJfZnJlZWAgcmV0dXJucyBgLUVJTlZBTGAuIEFub3RoZXIgZnVuY3Rpb25hbCBjaGFuZ2UgYW5kIGFnYWluLCBwZXJmZWN0bHkgcmVhY2hhYmxlLiBJIGNhbiBzZWUgdGhlIGludGVudCBoZXJlOiBncmFjZWZ1bCBoYW5kbGluZyBvZiByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzLgoKVGhlIGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uIGFyZSBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgIGFuZCBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAuIEkgbmVlZCB0byBjb25maXJtIHNvbWV0aGluZyBxdWlja2x5IGFib3V0IGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWA6IElzIGl0IGEgc3RhdGljIGZ1bmN0aW9uPyBUaGF0JiMzOTtzIGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZSBhbmQgaWYgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIEkgbmVlZCB0byBjb25zaWRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9kZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9kZXYuYz0xMjM2ND1ib29sIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlZChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9jb3JlL2Rldi5jLTEyMzY5LVxubmV0L2NvcmUvZGV2LmM6MTIzNzA6dm9pZCB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxubmV0L2NvcmUvZGV2LmMtMTIzNzEtXHRcdFx0XHQgICAgICB1MzIgcG9ydGlkLCBjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saClcbi0tXG5uZXQvY29yZS9kZXYuYz0xMjUwNT12b2lkIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcbm5ldC9jb3JlL2Rldi5jLTEyNTA2LXtcbm5ldC9jb3JlL2Rldi5jOjEyNTA3Olx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkoaGVhZCwgMCwgTlVMTCk7XG5uZXQvY29yZS9kZXYuYy0xMjUwOC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5MzAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIER5bmFtaWMgTmF0dXJlIG9mIHRoZSBQcm9ibGVtKioKClJpZ2h0LCBzbyB0aGUgc2l0dWF0aW9uIGlzbiYjMzk7dCBmaXhlZCwgaXQmIzM5O3Mgbm90IGEgc25hcHNob3QuIFRoYXQgbWVhbnMgSSBuZWVkIHRvIGFwcHJvYWNoIHRoaXMgd2l0aCB0aGF0IGluIG1pbmQsIG5vdCBhc3N1bWluZyBzb21ldGhpbmcgY29uc3RhbnQuIEkgbmVlZCB0byBsb29rIGZvciBhbnkgcG9pbnRzIHRoYXQgc2hpZnQgYW5kIG1vdmUuIExldCYjMzk7cyBtYWtlIHN1cmUgd2UmIzM5O3JlIG5vdCBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHRyYW5zaWVudCBoZXJlLiBUaGlzIGlzIGltcG9ydGFudCB0byBkZXRlcm1pbmUgd2hhdCBpcyB0aGUgcHJvcGVyIGRpcmVjdGlvbiB0byB0YWtlLgoKTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgYmVnaW4gdG8gYWRkcmVzcyB0aGUgcHJvYmxlbS4gTGV0IG1lIHNlZSB3aGVyZSB0aGF0IGxhbmRzLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgc3lzdGVtIGlzIGJlaGF2aW5nIGFzIEkgZXhwZWN0LCBpZiBzb21ldGhpbmcgc2hvdWxkIGJlIHJlbW92ZWQsIGl0IHNob3VsZCBiZSBkb25lIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGRldl93b3JrX2NhbmNlbF9hbGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9uZXRkZXZfd29yay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl93b3JrLmM9OTc9X19uZXRkZXZfd29ya19jb3JlX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xMDUtICovXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjEwNjp2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTA3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI2OAoJCQkJCQkJb3V0cHV0OiAxNzYKCQkJCQkJCXRob3VnaHRzOiAxMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBhbiBleHBlcnQgaW4gbXkgZmllbGQ6CgoqKkZ1enppbmcgRGlyZWN0aW9uOiBOZXR3b3JrIERldmljZSBXb3JrIENhbmNlbGxhdGlvbioqCgpPa2F5LCB0aGlzIGlzbiYjMzk7dCBhIHN0YXRpYyBzaXR1YXRpb247IHRoaW5ncyBhcmUgZXZvbHZpbmcuIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IGBXb3J0aEZ1enppbmdgIGlzIGluZGVlZCB0cnVlIGluIHRoaXMgY29udGV4dC4gTGV0JiMzOTtzIGRpZyBkZWVwZXIuIFRoZSBpbml0aWFsIGxpc3Qgb2YgaW50ZXJlc3Rpbmcgc3ltYm9scyBsb29rcyBzb2xpZDogYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBhbmQgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgIGhhdmUgZmxhZ2dlZCBteSBhdHRlbnRpb24uIEkmIzM5O20gYWxzbyBzZWVpbmcgYE5FVF9ERVZfUkVGQ05UX1RSQUNLRVJgIGVuYWJsZWQgd2hpY2ggaXMgYSBoZWxwZnVsIGNvbmZpZy4KCkEgcXVpY2sgc2FuaXR5IGNoZWNrIGlzIGFsd2F5cyB3aXNlLiBJIHdhbnQgdG8gdmVyaWZ5IGlmIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCBpcyBleHBvcnRlZC4gV2hpbGUgU3l6a2FsbGVyIGRvZXNuJiMzOTt0ICpyZXF1aXJlKiBleHBsaWNpdCBleHBvcnRzIGZvciBtb2R1bGFyIGZ1enppbmcsIGtub3dpbmcgdGhlIGV4cG9ydCBzdGF0dXMgaXMgdmFsdWFibGUgaW5mb3JtYXRpb24uIEtub3dpbmcgaWYgaXQgY2FuIGJlIHJlYWNoZWQgdmlhIG1vZHVsZXMgaGVscHMgbWUgcHJpb3JpdGl6ZSBhbmQgdGhpbmsgdGhyb3VnaCBwb3RlbnRpYWwgZnV6emluZyBzdHJhdGVnaWVzLiBSZWdhcmRsZXNzLCB0aGVzZSBjaGFuZ2VzIGFyZSBkZWVwbHkgZW1iZWRkZWQgd2l0aGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3Vic3lzdGVtIOKAkyBhIGhpZ2hseSBjb21wbGV4IGFuZCBhY3RpdmUgYXJlYSDigJMgc28gdGhleSYjMzk7cmUgZGVmaW5pdGVseSByZWFjaGFibGUgb25lIHdheSBvciBhbm90aGVyLgoKVGltZSB0byBzeW50aGVzaXplIHRoaXMgaW50byBhIGNvbmNyZXRlIHBsYW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfREVWX1JFRkNOVF9UUkFDS0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkmIzM0OywKICAgICYjMzQ7bmV0ZGV2X3dvcmtfY2FuY2VsX2FsbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG5ldHdvcmtpbmcgZGV2aWNlIHRlYXJkb3duIGxvZ2ljIGJ5IGFkZGluZyBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAgdG8gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBhbmQgY2hhbmdpbmcgYG5ldGRldl9wdXRgIGFuZCBgbmV0ZGV2X3JlZl9yZXBsYWNlYCB0byBza2lwIGBfX2Rldl9wdXRgIGlmIGBuZXRkZXZfdHJhY2tlcl9mcmVlYCByZXR1cm5zIGAtRUlOVkFMYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29yZSBuZXR3b3JrIGRldmljZSBsaWZlY3ljbGUgbWFuYWdlbWVudCBhbmQgc2hvdWxkIGJlIGZ1enplZC4gVGhlIGAtRUlOVkFMYCBwYXRoIHJlcXVpcmVzIGBDT05GSUdfTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUmAgdG8gYmUgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0RFVl9SRUZDTlRfVFJBQ0tFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5JiMzNDssCiAgICAmIzM0O25ldGRldl93b3JrX2NhbmNlbF9hbGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBuZXR3b3JraW5nIGRldmljZSB0ZWFyZG93biBsb2dpYyBieSBhZGRpbmcgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgIHRvIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgYW5kIGNoYW5naW5nIGBuZXRkZXZfcHV0YCBhbmQgYG5ldGRldl9yZWZfcmVwbGFjZWAgdG8gc2tpcCBgX19kZXZfcHV0YCBpZiBgbmV0ZGV2X3RyYWNrZXJfZnJlZWAgcmV0dXJucyBgLUVJTlZBTGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGNvcmUgbmV0d29yayBkZXZpY2UgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgYW5kIHNob3VsZCBiZSBmdXp6ZWQuIFRoZSBgLUVJTlZBTGAgcGF0aCByZXF1aXJlcyBgQ09ORklHX05FVF9ERVZfUkVGQ05UX1RSQUNLRVJgIHRvIGJlIGVuYWJsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjozMTowMC40MzExNzAzMThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTA4MTY5NzI4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfREVWX1JFRkNOVF9UUkFDS0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlcIixcbiAgICBcIm5ldGRldl93b3JrX2NhbmNlbF9hbGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG5ldHdvcmtpbmcgZGV2aWNlIHRlYXJkb3duIGxvZ2ljIGJ5IGFkZGluZyBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAgdG8gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBhbmQgY2hhbmdpbmcgYG5ldGRldl9wdXRgIGFuZCBgbmV0ZGV2X3JlZl9yZXBsYWNlYCB0byBza2lwIGBfX2Rldl9wdXRgIGlmIGBuZXRkZXZfdHJhY2tlcl9mcmVlYCByZXR1cm5zIGAtRUlOVkFMYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29yZSBuZXR3b3JrIGRldmljZSBsaWZlY3ljbGUgbWFuYWdlbWVudCBhbmQgc2hvdWxkIGJlIGZ1enplZC4gVGhlIGAtRUlOVkFMYCBwYXRoIHJlcXVpcmVzIGBDT05GSUdfTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUmAgdG8gYmUgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MzE6MDAuNDMxMTc4MTI4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzE4ODMxODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlMGVlZDVhZTY2MmM3MWY0YTIzMGFjZGVkN2I2MDQ0NmQxNzFlNzFlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMTI6MzA6NTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcXG5pbmRleCA5OTgxZDYzN2Y4YjU0Li41ZThjZjNmYzZjODNhIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXFxuQEAgLTQ1MTIsMTEgKzQ1MTIsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIG5ldGRldl90cmFja2VyX2FsbG9jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuICNlbmRpZlxcbiB9XFxuIFxcbi1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3RyYWNrZXJfZnJlZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbitzdGF0aWMgaW5saW5lIGludCBuZXRkZXZfdHJhY2tlcl9mcmVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBuZXRkZXZpY2VfdHJhY2tlciAqdHJhY2tlcilcXG4ge1xcbiAjaWZkZWYgQ09ORklHX05FVF9ERVZfUkVGQ05UX1RSQUNLRVJcXG4tXFx0cmVmX3RyYWNrZXJfZnJlZShcXHUwMDI2ZGV2LVxcdTAwM2VyZWZjbnRfdHJhY2tlciwgdHJhY2tlcik7XFxuK1xcdHJldHVybiByZWZfdHJhY2tlcl9mcmVlKFxcdTAwMjZkZXYtXFx1MDAzZXJlZmNudF90cmFja2VyLCB0cmFja2VyKTtcXG4rI2Vsc2VcXG4rXFx0cmV0dXJuIDA7XFxuICNlbmRpZlxcbiB9XFxuIFxcbkBAIC00NTMzLDggKzQ1MzUsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9wdXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0ICAgICAgbmV0ZGV2aWNlX3RyYWNrZXIgKnRyYWNrZXIpXFxuIHtcXG4gXFx0aWYgKGRldikge1xcbi1cXHRcXHRuZXRkZXZfdHJhY2tlcl9mcmVlKGRldiwgdHJhY2tlcik7XFxuLVxcdFxcdF9fZGV2X3B1dChkZXYpO1xcbitcXHRcXHQvKiBTa2lwIF9fZGV2X3B1dCgpIG9uIC1FSU5WQUw6IHJlZl90cmFja2VyX2ZyZWUoKSBhbHJlYWR5XFxuK1xcdFxcdCAqIHdhcm5lZCBhbmQgdGhlIHJlZmNvdW50IHdhcyBkZWNyZW1lbnRlZCBieSB0aGUgZmlyc3RcXG4rXFx0XFx0ICogc3VjY2Vzc2Z1bCBmcmVlLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0aWYgKG5ldGRldl90cmFja2VyX2ZyZWUoZGV2LCB0cmFja2VyKSAhPSAtRUlOVkFMKVxcbitcXHRcXHRcXHRfX2Rldl9wdXQoZGV2KTtcXG4gXFx0fVxcbiB9XFxuIFxcbkBAIC00NTY5LDExICs0NTc1LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfcmVmX3JlcGxhY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm9kZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgIG5ldGRldmljZV90cmFja2VyICp0cmFja2VyLFxcbiBcXHRcXHRcXHRcXHQgICAgICBnZnBfdCBnZnApXFxuIHtcXG4tXFx0aWYgKG9kZXYpXFxuLVxcdFxcdG5ldGRldl90cmFja2VyX2ZyZWUob2RldiwgdHJhY2tlcik7XFxuK1xcdGlmIChvZGV2IFxcdTAwMjZcXHUwMDI2IG5ldGRldl90cmFja2VyX2ZyZWUob2RldiwgdHJhY2tlcikgIT0gLUVJTlZBTClcXG4rXFx0XFx0X19kZXZfcHV0KG9kZXYpO1xcbiBcXG4gXFx0X19kZXZfaG9sZChuZGV2KTtcXG4tXFx0X19kZXZfcHV0KG9kZXYpO1xcbiBcXG4gXFx0aWYgKG5kZXYpXFxuIFxcdFxcdF9fbmV0ZGV2X3RyYWNrZXJfYWxsb2MobmRldiwgdHJhY2tlciwgZ2ZwKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmMgYi9uZXQvY29yZS9kZXYuY1xcbmluZGV4IDU5MzNjNWRhYjA5ZWUuLmI0NjFiMDEyZTJhYjIgMTAwNjQ0XFxuLS0tIGEvbmV0L2NvcmUvZGV2LmNcXG4rKysgYi9uZXQvY29yZS9kZXYuY1xcbkBAIC0xMjQ1Niw3ICsxMjQ1Niw3IEBAIHZvaWQgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCxcXG4gXFx0XFx0ZGV2X3VjX2ZsdXNoKGRldik7XFxuIFxcdFxcdGRldl9tY19mbHVzaChkZXYpO1xcbiBcXG4tXFxuK1xcdFxcdG5ldGRldl93b3JrX2NhbmNlbF9hbGwoZGV2KTtcXG4gXFx0XFx0bmV0ZGV2X3Jzc19jb250ZXh0c19mcmVlKGRldik7XFxuIFxcbiBcXHRcXHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX1BSRV9VTklOSVQsIGRldik7XFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5oIGIvbmV0L2NvcmUvZGV2LmhcXG5pbmRleCA1ZDBiMDMwNWQzYmFhLi5kM2FjM2JhNGIyYTAwIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL2Rldi5oXFxuKysrIGIvbmV0L2NvcmUvZGV2LmhcXG5AQCAtMTgwLDYgKzE4MCw4IEBAIHZvaWQgX19uZXRkZXZfd29ya19jb3JlX3NjaGVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnQpO1xcbiB1bnNpZ25lZCBsb25nXFxuIF9fbmV0ZGV2X3dvcmtfY29yZV9jYW5jZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBtYXNrKTtcXG4gXFxuK3ZvaWQgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG4rXFxuIHZvaWQgX19kZXZfbm90aWZ5X2ZsYWdzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBvbGRfZmxhZ3MsXFxuIFxcdFxcdFxcdHVuc2lnbmVkIGludCBnY2hhbmdlcywgdTMyIHBvcnRpZCxcXG4gXFx0XFx0XFx0Y29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgpO1xcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9uZXRkZXZfd29yay5jIGIvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuY1xcbmluZGV4IDMxMDlmYWUxMzJhZDEuLmQ2OTM2M2QyNDdiM2UgMTAwNjQ0XFxuLS0tIGEvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuY1xcbisrKyBiL25ldC9jb3JlL25ldGRldl93b3JrLmNcXG5AQCAtOTksNiArOTksMTYgQEAgX19uZXRkZXZfd29ya19jb3JlX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spXFxuIFxcdHJldHVybiBuZXRkZXZfd29ya19kZXF1ZXVlKGRldiwgXFx1MDAyNmRldi1cXHUwMDNld29ya19jb3JlX3BlbmRpbmcsIG1hc2spO1xcbiB9XFxuIFxcbisvKiBDYW5jZWwgYWxsIHBlbmRpbmcgY29yZSBhbmQgZHJpdmVyIHdvcmsgYW5kIHJlbGVhc2UgdGhlIHdvcmtfdHJhY2tlclxcbisgKiByZWZlcmVuY2UuICBNdXN0IGJlIGNhbGxlZCB1bmRlciBSVE5MLCB3aGljaCBtdXR1YWxseSBleGNsdWRlc1xcbisgKiBuZXRkZXZfd29ya19wcm9jKCkuXFxuKyAqL1xcbit2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4re1xcbitcXHRfX25ldGRldl93b3JrX2NvcmVfY2FuY2VsKGRldiwgfjBVTCk7XFxuK1xcdG5ldGRldl93b3JrX2NhbmNlbChkZXYsIH4wVUwpO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBuZXRkZXZfd29ya19ydW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMsXFxuIFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nIGNvcmUpXFxuIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MzE6MDEuMDAzODA5MTEzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mjg1MDkwNDg0MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5XCIsXG4gICAgXCJuZXRkZXZfd29ya19jYW5jZWxfYWxsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBuZXR3b3JraW5nIGRldmljZSB0ZWFyZG93biBsb2dpYyBieSBhZGRpbmcgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgIHRvIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgYW5kIGNoYW5naW5nIGBuZXRkZXZfcHV0YCBhbmQgYG5ldGRldl9yZWZfcmVwbGFjZWAgdG8gc2tpcCBgX19kZXZfcHV0YCBpZiBgbmV0ZGV2X3RyYWNrZXJfZnJlZWAgcmV0dXJucyBgLUVJTlZBTGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGNvcmUgbmV0d29yayBkZXZpY2UgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgYW5kIHNob3VsZCBiZSBmdXp6ZWQuIFRoZSBgLUVJTlZBTGAgcGF0aCByZXF1aXJlcyBgQ09ORklHX05FVF9ERVZfUkVGQ05UX1RSQUNLRVJgIHRvIGJlIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGUwZWVkNWFlNjYyYzcxZjRhMjMwYWNkZWQ3YjYwNDQ2ZDE3MWU3MWVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDEyOjMwOjU5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbmluZGV4IDk5ODFkNjM3ZjhiNTQuLjVlOGNmM2ZjNmM4M2EgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG5AQCAtNDUxMiwxMSArNDUxMiwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3RyYWNrZXJfYWxsb2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiAjZW5kaWZcbiB9XG4gXG4tc3RhdGljIGlubGluZSB2b2lkIG5ldGRldl90cmFja2VyX2ZyZWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbitzdGF0aWMgaW5saW5lIGludCBuZXRkZXZfdHJhY2tlcl9mcmVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHQgICAgICAgbmV0ZGV2aWNlX3RyYWNrZXIgKnRyYWNrZXIpXG4ge1xuICNpZmRlZiBDT05GSUdfTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUlxuLVx0cmVmX3RyYWNrZXJfZnJlZShcdTAwMjZkZXYtXHUwMDNlcmVmY250X3RyYWNrZXIsIHRyYWNrZXIpO1xuK1x0cmV0dXJuIHJlZl90cmFja2VyX2ZyZWUoXHUwMDI2ZGV2LVx1MDAzZXJlZmNudF90cmFja2VyLCB0cmFja2VyKTtcbisjZWxzZVxuK1x0cmV0dXJuIDA7XG4gI2VuZGlmXG4gfVxuIFxuQEAgLTQ1MzMsOCArNDUzNSwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3B1dChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdCAgICAgIG5ldGRldmljZV90cmFja2VyICp0cmFja2VyKVxuIHtcbiBcdGlmIChkZXYpIHtcbi1cdFx0bmV0ZGV2X3RyYWNrZXJfZnJlZShkZXYsIHRyYWNrZXIpO1xuLVx0XHRfX2Rldl9wdXQoZGV2KTtcbitcdFx0LyogU2tpcCBfX2Rldl9wdXQoKSBvbiAtRUlOVkFMOiByZWZfdHJhY2tlcl9mcmVlKCkgYWxyZWFkeVxuK1x0XHQgKiB3YXJuZWQgYW5kIHRoZSByZWZjb3VudCB3YXMgZGVjcmVtZW50ZWQgYnkgdGhlIGZpcnN0XG4rXHRcdCAqIHN1Y2Nlc3NmdWwgZnJlZS5cbitcdFx0ICovXG4rXHRcdGlmIChuZXRkZXZfdHJhY2tlcl9mcmVlKGRldiwgdHJhY2tlcikgIT0gLUVJTlZBTClcbitcdFx0XHRfX2Rldl9wdXQoZGV2KTtcbiBcdH1cbiB9XG4gXG5AQCAtNDU2OSwxMSArNDU3NSwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3JlZl9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpvZGV2LFxuIFx0XHRcdFx0ICAgICAgbmV0ZGV2aWNlX3RyYWNrZXIgKnRyYWNrZXIsXG4gXHRcdFx0XHQgICAgICBnZnBfdCBnZnApXG4ge1xuLVx0aWYgKG9kZXYpXG4tXHRcdG5ldGRldl90cmFja2VyX2ZyZWUob2RldiwgdHJhY2tlcik7XG4rXHRpZiAob2RldiBcdTAwMjZcdTAwMjYgbmV0ZGV2X3RyYWNrZXJfZnJlZShvZGV2LCB0cmFja2VyKSAhPSAtRUlOVkFMKVxuK1x0XHRfX2Rldl9wdXQob2Rldik7XG4gXG4gXHRfX2Rldl9ob2xkKG5kZXYpO1xuLVx0X19kZXZfcHV0KG9kZXYpO1xuIFxuIFx0aWYgKG5kZXYpXG4gXHRcdF9fbmV0ZGV2X3RyYWNrZXJfYWxsb2MobmRldiwgdHJhY2tlciwgZ2ZwKTtcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jXG5pbmRleCA1OTMzYzVkYWIwOWVlLi5iNDYxYjAxMmUyYWIyIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZGV2LmNcbisrKyBiL25ldC9jb3JlL2Rldi5jXG5AQCAtMTI0NTYsNyArMTI0NTYsNyBAQCB2b2lkIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXG4gXHRcdGRldl91Y19mbHVzaChkZXYpO1xuIFx0XHRkZXZfbWNfZmx1c2goZGV2KTtcbiBcbi1cbitcdFx0bmV0ZGV2X3dvcmtfY2FuY2VsX2FsbChkZXYpO1xuIFx0XHRuZXRkZXZfcnNzX2NvbnRleHRzX2ZyZWUoZGV2KTtcbiBcbiBcdFx0Y2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKE5FVERFVl9QUkVfVU5JTklULCBkZXYpO1xuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5oIGIvbmV0L2NvcmUvZGV2LmhcbmluZGV4IDVkMGIwMzA1ZDNiYWEuLmQzYWMzYmE0YjJhMDAgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9kZXYuaFxuKysrIGIvbmV0L2NvcmUvZGV2LmhcbkBAIC0xODAsNiArMTgwLDggQEAgdm9pZCBfX25ldGRldl93b3JrX2NvcmVfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudCk7XG4gdW5zaWduZWQgbG9uZ1xuIF9fbmV0ZGV2X3dvcmtfY29yZV9jYW5jZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBtYXNrKTtcbiBcbit2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG4rXG4gdm9pZCBfX2Rldl9ub3RpZnlfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG9sZF9mbGFncyxcbiBcdFx0XHR1bnNpZ25lZCBpbnQgZ2NoYW5nZXMsIHUzMiBwb3J0aWQsXG4gXHRcdFx0Y29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgpO1xuZGlmZiAtLWdpdCBhL25ldC9jb3JlL25ldGRldl93b3JrLmMgYi9uZXQvY29yZS9uZXRkZXZfd29yay5jXG5pbmRleCAzMTA5ZmFlMTMyYWQxLi5kNjkzNjNkMjQ3YjNlIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuY1xuKysrIGIvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuY1xuQEAgLTk5LDYgKzk5LDE2IEBAIF9fbmV0ZGV2X3dvcmtfY29yZV9jYW5jZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBtYXNrKVxuIFx0cmV0dXJuIG5ldGRldl93b3JrX2RlcXVldWUoZGV2LCBcdTAwMjZkZXYtXHUwMDNld29ya19jb3JlX3BlbmRpbmcsIG1hc2spO1xuIH1cbiBcbisvKiBDYW5jZWwgYWxsIHBlbmRpbmcgY29yZSBhbmQgZHJpdmVyIHdvcmsgYW5kIHJlbGVhc2UgdGhlIHdvcmtfdHJhY2tlclxuKyAqIHJlZmVyZW5jZS4gIE11c3QgYmUgY2FsbGVkIHVuZGVyIFJUTkwsIHdoaWNoIG11dHVhbGx5IGV4Y2x1ZGVzXG4rICogbmV0ZGV2X3dvcmtfcHJvYygpLlxuKyAqL1xuK3ZvaWQgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuK3tcbitcdF9fbmV0ZGV2X3dvcmtfY29yZV9jYW5jZWwoZGV2LCB+MFVMKTtcbitcdG5ldGRldl93b3JrX2NhbmNlbChkZXYsIH4wVUwpO1xuK31cbitcbiBzdGF0aWMgdm9pZCBuZXRkZXZfd29ya19ydW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMsXG4gXHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgY29yZSlcbiB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjozMTowMS4wMDM4MTAxODNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzUyNjk4NTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0d29yayBEZXZpY2UgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBzZXZlcmFsIGNvcmUgbmV0d29ya2luZyBmaWxlczogYGluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhgLCBgbmV0L2NvcmUvZGV2LmNgLCBgbmV0L2NvcmUvZGV2LmhgLCBhbmQgYG5ldC9jb3JlL25ldGRldl93b3JrLmNgLiBTZWVtcyBsaWtlIHRoZSBtYWluIHRocnVzdCBpcyB0byBjaGFuZ2UgdGhlIHJldHVybiB0eXBlIG9mIGBuZXRkZXZfdHJhY2tlcl9mcmVlYCB0byBgaW50YC4gIFRoYXQncyBhIHByZXR0eSBsb3ctbGV2ZWwgY2hhbmdlLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLlxuXG5UaGUgcGF0Y2ggdGhlbiB1cGRhdGVzIGBuZXRkZXZfcHV0YCBhbmQgYG5ldGRldl9yZWZfcmVwbGFjZWAgdG8gY29uZGl0aW9uYWxseSAqbm90KiBjYWxsIGBfX2Rldl9wdXRgIGlmIGBuZXRkZXZfdHJhY2tlcl9mcmVlYCByZXR1cm5zIGAtRUlOVkFMYC4gIFRoYXQncyBpbnRlcmVzdGluZzsgaXQgc3VnZ2VzdHMgdGhhdCBgLUVJTlZBTGAgaXMgbm93IGEgdmFsaWQsIGVycm9yLWluZGljYXRpbmcgcmV0dXJuIGZyb20gYG5ldGRldl90cmFja2VyX2ZyZWVgIHdoaWNoLCBpZiB0cnVlLCBuZWVkcyBhIGNsb3NlIHJlYWQgb24gdGhlIGltcGxpY2F0aW9ucyBvZiBhIG5ldHdvcmsgZHJpdmVyIG5vIGxvbmdlciBjYWxsaW5nIHRoZSBkZXZpY2UgcHV0IGZ1bmN0aW9uLlxuXG5BZGRpdGlvbmFsbHksIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiwgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgLCBhbmQgY2FsbHMgaXQgd2l0aGluIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAuICBUaGF0J3Mgc2lnbmlmaWNhbnQhICBUaGlzIGxpa2VseSBtZWFucyB0aGV5J3JlIHRyeWluZyB0byBwcmV2ZW50IHNvbWUgcmFjZSBjb25kaXRpb24gb3IgZG91YmxlLWZyZWUgc2NlbmFyaW8gZHVyaW5nIG5ldHdvcmsgZGV2aWNlIHVucmVnaXN0cmF0aW9uLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCdzIGNhbmNlbGxpbmcgdG8gZnVsbHkgZ3Jhc3AgdGhlIGNoYW5nZS5cblxuTXkgbmV4dCBzdGVwcyBhcmUgY2xlYXI6ICBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRob3NlIGZ1bmN0aW9ucy4gIGBuZXRkZXZfcHV0YCBhbmQgYG5ldGRldl9yZWZfcmVwbGFjZWAgYXJlIGlubGluZSwgc28gdGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdDsgSSBqdXN0IGhhdmUgdG8gdHJhY2UgdGhlaXIgdXNhZ2UuICBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAgaXMgdGhlIG5ldyBraWQgb24gdGhlIGJsb2NrLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb24gYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBvdGhlciBjb3JlIGZ1bmN0aW9ucy4gQW5kIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgaXMgbW9kaWZpZWQsIHNvIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgZGlmZiB0byB1bmRlcnN0YW5kIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZS5cblxuRmluYWxseSwgSSBuZWVkIHRvIGNoZWNrIGhvdyBgbmV0L2NvcmUvbmV0ZGV2X3dvcmsuY2AgaXMgY29tcGlsZWQuICBJcyBpdCBhbHdheXMgaW5jbHVkZWQsIG9yIGlzIGl0IGd1YXJkZWQgYnkgc29tZSBjb25maWd1cmF0aW9uIGZsYWc/ICBJJ2xsIGNoZWNrIHRoZSBgbmV0L2NvcmUvTWFrZWZpbGVgIHRvIG1ha2Ugc3VyZSBJIGdldCBhIGdvb2QgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzExNywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjMxOjA2Ljc1NjUxMTk0OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTg1MDc1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRkZXZfd29yay5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlPTEyPW9iai15XFx0XFx0ICAgICArPSBkZXYubyBkZXZfYXBpLm8gZGV2X2FkZHJfbGlzdHMubyBkc3QubyBuZXRldmVudC5vIFxcXFxcXG4tLVxcbm5ldC9jb3JlL01ha2VmaWxlLTE1LVxcdFxcdFxcdGZpYl9ub3RpZmllci5vIHhkcC5vIGZsb3dfb2ZmbG9hZC5vIGdyby5vIFxcXFxcXG5uZXQvY29yZS9NYWtlZmlsZToxNjpcXHRcXHRcXHRuZXRkZXYtZ2VubC5vIG5ldGRldi1nZW5sLWdlbi5vIG5ldGRldl93b3JrLm8gZ3NvLm9cXG5uZXQvY29yZS9NYWtlZmlsZS0xNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MzE6MDYuODEyMzcwODg1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ0ODQ0NTEzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTmV0d29yayBEZXZpY2UgUmVmZXJlbmNlIENvdW50aW5nKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGUgYnVpbGQgc3lzdGVtLCBpdCdzIGNsZWFyIHRoYXQgYG5ldGRldl93b3JrLm9gIGFuZCBgZGV2Lm9gIGFyZSBhbHdheXMgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkLCB3aGljaCBtYWtlcyBzZW5zZS4gTm93LCBJIG5lZWQgdG8gZm9jdXMgbXkgZWZmb3J0cyBvbiBzcGVjaWZpYyBmdW5jdGlvbnMgdG8gdGVzdCwgYW5kIG5hcnJvdyBkb3duIHRoZSBhcmVhIHRvIHN0dWR5LlxuXG5MZXQncyBzZWUuLi4gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBsb29rcyBwcm9taXNpbmcsIGFuZCBzbyBkb2VzIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYC4gVGhleSBzZWVtIGxpa2UgZ29vZCBzdGFydGluZyBwb2ludHMgZm9yIGRlYnVnZ2luZyBvciBwZXJmb3JtYW5jZSBhbmFseXNpcy4gSSBhbHNvIHNlZSBgbmV0ZGV2X3B1dGAgYW5kIGBuZXRkZXZfcmVmX3JlcGxhY2VgLCBidXQgdGhvc2UgYXJlIGlubGluZSwgc28gSSBjYW4ndCBkaXJlY3RseSB0YXJnZXQgdGhlbS4gSG93ZXZlciwgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCB0aGV5IGFyZSB1c2VkIGV4dGVuc2l2ZWx5LCBtZWFuaW5nIHRoZXkgd2lsbCBiZSByZWxldmFudCBkdXJpbmcgYW55IGFuYWx5c2lzLlxuXG5Ob3csIGEga2V5IGNvbnNpZGVyYXRpb24gZm9yIHRlc3RpbmcsIHRoZSBgQ09ORklHX05FVF9ERVZfUkVGQ05UX1RSQUNLRVJgIG9wdGlvbiBjb21lcyBpbnRvIHBsYXksIG9idmlvdXNseS4gSWYgaXQncyBlbmFibGVkLCBgbmV0ZGV2X3RyYWNrZXJfZnJlZWAgdXNlcyBgcmVmX3RyYWNrZXJfZnJlZWAuIElmIGl0J3MgKm5vdCogZW5hYmxlZCwgaXQgcmV0dXJucyAwLiBTbywgdG8gc3BlY2lmaWNhbGx5IHRyaWdnZXIgYW5kIHRlc3QgdGhlIGAtRUlOVkFMYCBlcnJvciBwYXRoLCBJJ2xsIG5lZWQgdG8gZW5hYmxlIGBDT05GSUdfTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUmAgaW4gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIFRoYXQgaXMga2V5IHRvIGlzb2xhdGluZyBhIGNlcnRhaW4gcHJvYmxlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAyNiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjozMToxMS4yNjA4MjAzMjJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY2MDk2Mjc1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWcuZGVidWctMi1cXG5uZXQvS2NvbmZpZy5kZWJ1ZzozOmNvbmZpZyBORVRfREVWX1JFRkNOVF9UUkFDS0VSXFxubmV0L0tjb25maWcuZGVidWctNC1cXHRib29sIFxcXCJFbmFibGUgbmV0IGRldmljZSByZWZjb3VudCB0cmFja2luZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MzE6MTMuOTIxNzkwMTg4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM2NDQzNzk4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczpcblxuKipJbnZlc3RpZ2F0aW5nIE5FVF9ERVZfUkVGQ05UX1RSQUNLRVIgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbiB3aXRoIGBORVRfREVWX1JFRkNOVF9UUkFDS0VSYC4gVGhpcyBmZWF0dXJlLCBvciB3aGF0ZXZlciBpdCBpcywgc291bmRzIGltcG9ydGFudCBmb3IgZGVidWdnaW5nIG5ldHdvcmsgZGV2aWNlIHJlZmVyZW5jZSBjb3VudHMuIEknbSBndWVzc2luZyBpdCdzIHVzZWQgZm9yIHRyYWNraW5nIGRvd24gdGhvc2UgcGVza3kgbWVtb3J5IGxlYWtzIG9yIHByZW1hdHVyZSByZWxlYXNlcyB0aGF0IGNhbiBwbGFndWUgbmV0d29ya2luZyBjb2RlLlxuXG5NeSBmaXJzdCBwb3J0IG9mIGNhbGwgaXMgYWx3YXlzIHRoZSBgS2NvbmZpZ2AgZmlsZXMuIFNwZWNpZmljYWxseSwgSSdsbCBnbyBzdHJhaWdodCBmb3IgYG5ldC9LY29uZmlnLmRlYnVnYC4gSXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBiZWNhdXNlIHRoYXQncyB3aGVyZSBkZWJ1ZyBvcHRpb25zIHVzdWFsbHkgcmVzaWRlLiBJJ2xsIHNlYXJjaCB0aGF0IGZpbGUgZm9yIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5FVF9ERVZfUkVGQ05UX1RSQUNLRVJgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSB0aGlzIHRoaW5nLCB3aGljaCBmZWF0dXJlcyBtdXN0IGJlIGVuYWJsZWQgZm9yIGl0IHRvIHdvcmsuIFRoYXQgZmlsZSB3aWxsIGdpdmUgbWUgdGhlIGxvd2Rvd24gb24gYW55IG90aGVyIGNvbmZpZyBzeW1ib2xzIHRoYXQgbmVlZCB0byBiZSBpbiBwbGFjZS4gVGhpcyB3aWxsIGdpdmUgbWUgYWxsIHRoZSBpbmZvcm1hdGlvbiB0aGF0IEkgcmVxdWlyZSBiZWZvcmUgSSBzdGFydCBkaWdnaW5nIGludG8gdGhlIGFjdHVhbCBjb2RlLiBGcm9tIHRoZXJlLCBJIGNhbiBnZXQgYSBiZXR0ZXIgc2Vuc2Ugb2YgaG93IGl0J3MgdXNlZCBhbmQgd2hhdCBpdCBpbnRlcmFjdHMgd2l0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYwNSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjMxOjE3LjI4NjIzMDUyMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5MDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9LY29uZmlnLmRlYnVnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRcXG4gICAzOlxcdGNvbmZpZyBORVRfREVWX1JFRkNOVF9UUkFDS0VSXFxuICAgNDpcXHRcXHRib29sIFxcXCJFbmFibGUgbmV0IGRldmljZSByZWZjb3VudCB0cmFja2luZ1xcXCJcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gREVCVUdfS0VSTkVMIFxcdTAwMjZcXHUwMDI2IFNUQUNLVFJBQ0VfU1VQUE9SVCBcXHUwMDI2XFx1MDAyNiBORVRcXG4gICA2OlxcdFxcdHNlbGVjdCBSRUZfVFJBQ0tFUlxcbiAgIDc6XFx0XFx0ZGVmYXVsdCBuXFxuICAgODpcXHRcXHRoZWxwXFxuICAgOTpcXHRcXHQgIEVuYWJsZSBkZWJ1Z2dpbmcgZmVhdHVyZSB0byB0cmFjayBkZXZpY2UgcmVmZXJlbmNlcy5cXG4gIDEwOlxcdFxcdCAgVGhpcyBhZGRzIG1lbW9yeSBhbmQgY3B1IGNvc3RzLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgTkVUX05TX1JFRkNOVF9UUkFDS0VSXFxuICAxMzpcXHRcXHRib29sIFxcXCJFbmFibGUgbmV0d29ya2luZyBuYW1lc3BhY2UgcmVmY291bnQgdHJhY2tpbmdcXFwiXFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIERFQlVHX0tFUk5FTCBcXHUwMDI2XFx1MDAyNiBTVEFDS1RSQUNFX1NVUFBPUlQgXFx1MDAyNlxcdTAwMjYgTkVUXFxuICAxNTpcXHRcXHRzZWxlY3QgUkVGX1RSQUNLRVJcXG4gIDE2OlxcdFxcdGRlZmF1bHQgblxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBFbmFibGUgZGVidWdnaW5nIGZlYXR1cmUgdG8gdHJhY2sgbmV0bnMgcmVmZXJlbmNlcy5cXG4gIDE5OlxcdFxcdCAgVGhpcyBhZGRzIG1lbW9yeSBhbmQgY3B1IGNvc3RzLlxcbiAgMjA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjMxOjE3LjI4NjMwMTA3MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNDAzNzA3NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQcm9wb3NlZCBDb25maWd1cmF0aW9uIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcHJvcG9zZWQgY29uZmlndXJhdGlvbiBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoYXQgYE5FVF9ERVZfUkVGQ05UX1RSQUNLRVJgIGhhcyBzb21lIGRlcGVuZGVuY2llcy4gSXQncyB0aWVkIHRvIGBERUJVR19LRVJORUxgLCBgU1RBQ0tUUkFDRV9TVVBQT1JUYCwgYW5kIGBORVRgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGdpdmVuIGl0cyBmdW5jdGlvbi4gV2UgbmVlZCB0byBlbnN1cmUgYE5FVF9ERVZfUkVGQ05UX1RSQUNLRVJgIGlzIHByb3Blcmx5IGludGVncmF0ZWQgaW50byBgRW5hYmxlQ29uZmlnc2AgdG8gZW5zdXJlIGl0J3MgZW5hYmxlZCB3aGVuIGl0IG5lZWRzIHRvIGJlLiBUaGF0J3MgdGhlIGJhc2VsaW5lLCB0aGUgZ3JvdW5kd29yayB0aGF0IG5lZWRzIHRvIGJlIGxhaWQgZmlyc3QuXG5cbk5vdywgdGhlIGNvZGUgY2hhbmdlcy4gVGhlIHBhdGNoIG1vZGlmaWVzIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgdG8gaW5jbHVkZSBhIGNhbGwgdG8gYG5ldGRldl93b3JrX2NhbmNlbF9hbGwoZGV2KWAuIFRoYXQncyBhIGdvb2QgYWRkaXRpb24sIGFuZCBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvZGUgcGF0aC4gSXQncyBhIHN0YW5kYXJkIGNsZWFudXAgb3BlcmF0aW9uLiBUaGVuIHRoZXJlIGFyZSBjaGFuZ2VzIHRvIGBuZXRkZXZfcHV0YCBhbmQgYG5ldGRldl9yZWZfcmVwbGFjZWAgd2hlcmUgYF9fZGV2X3B1dGAgaXMgc2tpcHBlZCBpZiBgbmV0ZGV2X3RyYWNrZXJfZnJlZWAgcmV0dXJucyBgLUVJTlZBTGAuIEFub3RoZXIgZnVuY3Rpb25hbCBjaGFuZ2UgYW5kIGFnYWluLCBwZXJmZWN0bHkgcmVhY2hhYmxlLiBJIGNhbiBzZWUgdGhlIGludGVudCBoZXJlOiBncmFjZWZ1bCBoYW5kbGluZyBvZiByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzLlxuXG5UaGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb24gYXJlIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgYW5kIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYC4gSSBuZWVkIHRvIGNvbmZpcm0gc29tZXRoaW5nIHF1aWNrbHkgYWJvdXQgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YDogSXMgaXQgYSBzdGF0aWMgZnVuY3Rpb24/IFRoYXQncyBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cyBJIG5lZWQgdG8gY29uc2lkZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNzEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjozMToyMS41MjY2NzUzNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzkxOTM5MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvZGV2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvZGV2LmM9MTIzNjQ9Ym9vbCB1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZWQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTEyMzY5LVxcbm5ldC9jb3JlL2Rldi5jOjEyMzcwOnZvaWQgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCxcXG5uZXQvY29yZS9kZXYuYy0xMjM3MS1cXHRcXHRcXHRcXHQgICAgICB1MzIgcG9ydGlkLCBjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saClcXG4tLVxcbm5ldC9jb3JlL2Rldi5jPTEyNTA1PXZvaWQgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxcbm5ldC9jb3JlL2Rldi5jLTEyNTA2LXtcXG5uZXQvY29yZS9kZXYuYzoxMjUwNzpcXHR1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShoZWFkLCAwLCBOVUxMKTtcXG5uZXQvY29yZS9kZXYuYy0xMjUwOC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjMxOjIxLjYwNTg3NjAwNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODI5MDk3MzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIER5bmFtaWMgTmF0dXJlIG9mIHRoZSBQcm9ibGVtKipcblxuUmlnaHQsIHNvIHRoZSBzaXR1YXRpb24gaXNuJ3QgZml4ZWQsIGl0J3Mgbm90IGEgc25hcHNob3QuIFRoYXQgbWVhbnMgSSBuZWVkIHRvIGFwcHJvYWNoIHRoaXMgd2l0aCB0aGF0IGluIG1pbmQsIG5vdCBhc3N1bWluZyBzb21ldGhpbmcgY29uc3RhbnQuIEkgbmVlZCB0byBsb29rIGZvciBhbnkgcG9pbnRzIHRoYXQgc2hpZnQgYW5kIG1vdmUuIExldCdzIG1ha2Ugc3VyZSB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIHNvbWV0aGluZyB0cmFuc2llbnQgaGVyZS4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gZGV0ZXJtaW5lIHdoYXQgaXMgdGhlIHByb3BlciBkaXJlY3Rpb24gdG8gdGFrZS5cblxuTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAuIFRoaXMgaXMgd2hlcmUgSSdsbCBiZWdpbiB0byBhZGRyZXNzIHRoZSBwcm9ibGVtLiBMZXQgbWUgc2VlIHdoZXJlIHRoYXQgbGFuZHMuIEkgbmVlZCB0byBiZSBzdXJlIHRoZSBzeXN0ZW0gaXMgYmVoYXZpbmcgYXMgSSBleHBlY3QsIGlmIHNvbWV0aGluZyBzaG91bGQgYmUgcmVtb3ZlZCwgaXQgc2hvdWxkIGJlIGRvbmUgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTkzMCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjMxOjI0LjQzNDk3NzIxMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkyOTA3NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0ZGV2X3dvcmtfY2FuY2VsX2FsbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9uZXRkZXZfd29yay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL25ldGRldl93b3JrLmM9OTc9X19uZXRkZXZfd29ya19jb3JlX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTEwNS0gKi9cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjEwNjp2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTEwNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjMxOjI0LjUwNDI3MzI2N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODc5NDI3MDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBhbiBleHBlcnQgaW4gbXkgZmllbGQ6XG5cbioqRnV6emluZyBEaXJlY3Rpb246IE5ldHdvcmsgRGV2aWNlIFdvcmsgQ2FuY2VsbGF0aW9uKipcblxuT2theSwgdGhpcyBpc24ndCBhIHN0YXRpYyBzaXR1YXRpb247IHRoaW5ncyBhcmUgZXZvbHZpbmcuIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IGBXb3J0aEZ1enppbmdgIGlzIGluZGVlZCB0cnVlIGluIHRoaXMgY29udGV4dC4gTGV0J3MgZGlnIGRlZXBlci4gVGhlIGluaXRpYWwgbGlzdCBvZiBpbnRlcmVzdGluZyBzeW1ib2xzIGxvb2tzIHNvbGlkOiBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgIGFuZCBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAgaGF2ZSBmbGFnZ2VkIG15IGF0dGVudGlvbi4gSSdtIGFsc28gc2VlaW5nIGBORVRfREVWX1JFRkNOVF9UUkFDS0VSYCBlbmFibGVkIHdoaWNoIGlzIGEgaGVscGZ1bCBjb25maWcuXG5cbkEgcXVpY2sgc2FuaXR5IGNoZWNrIGlzIGFsd2F5cyB3aXNlLiBJIHdhbnQgdG8gdmVyaWZ5IGlmIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCBpcyBleHBvcnRlZC4gV2hpbGUgU3l6a2FsbGVyIGRvZXNuJ3QgKnJlcXVpcmUqIGV4cGxpY2l0IGV4cG9ydHMgZm9yIG1vZHVsYXIgZnV6emluZywga25vd2luZyB0aGUgZXhwb3J0IHN0YXR1cyBpcyB2YWx1YWJsZSBpbmZvcm1hdGlvbi4gS25vd2luZyBpZiBpdCBjYW4gYmUgcmVhY2hlZCB2aWEgbW9kdWxlcyBoZWxwcyBtZSBwcmlvcml0aXplIGFuZCB0aGluayB0aHJvdWdoIHBvdGVudGlhbCBmdXp6aW5nIHN0cmF0ZWdpZXMuIFJlZ2FyZGxlc3MsIHRoZXNlIGNoYW5nZXMgYXJlIGRlZXBseSBlbWJlZGRlZCB3aXRoaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdWJzeXN0ZW0g4oCTIGEgaGlnaGx5IGNvbXBsZXggYW5kIGFjdGl2ZSBhcmVhIOKAkyBzbyB0aGV5J3JlIGRlZmluaXRlbHkgcmVhY2hhYmxlIG9uZSB3YXkgb3IgYW5vdGhlci5cblxuVGltZSB0byBzeW50aGVzaXplIHRoaXMgaW50byBhIGNvbmNyZXRlIHBsYW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNjgsIk91dHB1dFRva2VucyI6MTc2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjMxOjI5LjM4MzcwMzI0N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTE1MDk2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5XCIsXG4gICAgXCJuZXRkZXZfd29ya19jYW5jZWxfYWxsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBuZXR3b3JraW5nIGRldmljZSB0ZWFyZG93biBsb2dpYyBieSBhZGRpbmcgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgIHRvIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgYW5kIGNoYW5naW5nIGBuZXRkZXZfcHV0YCBhbmQgYG5ldGRldl9yZWZfcmVwbGFjZWAgdG8gc2tpcCBgX19kZXZfcHV0YCBpZiBgbmV0ZGV2X3RyYWNrZXJfZnJlZWAgcmV0dXJucyBgLUVJTlZBTGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGNvcmUgbmV0d29yayBkZXZpY2UgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgYW5kIHNob3VsZCBiZSBmdXp6ZWQuIFRoZSBgLUVJTlZBTGAgcGF0aCByZXF1aXJlcyBgQ09ORklHX05FVF9ERVZfUkVGQ05UX1RSQUNLRVJgIHRvIGJlIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5XCIsXG4gICAgXCJuZXRkZXZfd29ya19jYW5jZWxfYWxsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBuZXR3b3JraW5nIGRldmljZSB0ZWFyZG93biBsb2dpYyBieSBhZGRpbmcgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgIHRvIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgYW5kIGNoYW5naW5nIGBuZXRkZXZfcHV0YCBhbmQgYG5ldGRldl9yZWZfcmVwbGFjZWAgdG8gc2tpcCBgX19kZXZfcHV0YCBpZiBgbmV0ZGV2X3RyYWNrZXJfZnJlZWAgcmV0dXJucyBgLUVJTlZBTGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGNvcmUgbmV0d29yayBkZXZpY2UgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgYW5kIHNob3VsZCBiZSBmdXp6ZWQuIFRoZSBgLUVJTlZBTGAgcGF0aCByZXF1aXJlcyBgQ09ORklHX05FVF9ERVZfUkVGQ05UX1RSQUNLRVJgIHRvIGJlIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwvcsr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 12:08:32 +0000 UTC FinishedAt: 2026-08-01 12:31:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DEV_REFCNT_TRACKER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DEV_REFCNT_TRACKER" ], "series_id": "cf4a6393-5a6e-4df2-af94-53e457275dbe" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "unregister_netdevice_many_notify", "netdev_work_cancel_all" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9ERVZfUkVGQ05UX1RSQUNLRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeSYjMzQ7LAogICAgJiMzNDtuZXRkZXZfd29ya19jYW5jZWxfYWxsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgbmV0d29ya2luZyBkZXZpY2UgdGVhcmRvd24gbG9naWMgYnkgYWRkaW5nIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCB0byBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgIGFuZCBjaGFuZ2luZyBgbmV0ZGV2X3B1dGAgYW5kIGBuZXRkZXZfcmVmX3JlcGxhY2VgIHRvIHNraXAgYF9fZGV2X3B1dGAgaWYgYG5ldGRldl90cmFja2VyX2ZyZWVgIHJldHVybnMgYC1FSU5WQUxgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb3JlIG5ldHdvcmsgZGV2aWNlIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGFuZCBzaG91bGQgYmUgZnV6emVkLiBUaGUgYC1FSU5WQUxgIHBhdGggcmVxdWlyZXMgYENPTkZJR19ORVRfREVWX1JFRkNOVF9UUkFDS0VSYCB0byBiZSBlbmFibGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjMxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTBlZWQ1YWU2NjJjNzFmNGEyMzBhY2RlZDdiNjA0NDZkMTcxZTcxZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMTI6MzA6NTkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbmluZGV4IDk5ODFkNjM3ZjhiNTQuLjVlOGNmM2ZjNmM4M2EgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG5AQCAtNDUxMiwxMSAmIzQzOzQ1MTIsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIG5ldGRldl90cmFja2VyX2FsbG9jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gI2VuZGlmXG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfdHJhY2tlcl9mcmVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4mIzQzO3N0YXRpYyBpbmxpbmUgaW50IG5ldGRldl90cmFja2VyX2ZyZWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgICAgICBuZXRkZXZpY2VfdHJhY2tlciAqdHJhY2tlcilcbiB7XG4gI2lmZGVmIENPTkZJR19ORVRfREVWX1JFRkNOVF9UUkFDS0VSXG4tXHRyZWZfdHJhY2tlcl9mcmVlKFx1MDAyNmRldi1cdTAwM2VyZWZjbnRfdHJhY2tlciwgdHJhY2tlcik7XG4mIzQzO1x0cmV0dXJuIHJlZl90cmFja2VyX2ZyZWUoXHUwMDI2ZGV2LVx1MDAzZXJlZmNudF90cmFja2VyLCB0cmFja2VyKTtcbiYjNDM7I2Vsc2VcbiYjNDM7XHRyZXR1cm4gMDtcbiAjZW5kaWZcbiB9XG4gXG5AQCAtNDUzMyw4ICYjNDM7NDUzNSwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3B1dChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdCAgICAgIG5ldGRldmljZV90cmFja2VyICp0cmFja2VyKVxuIHtcbiBcdGlmIChkZXYpIHtcbi1cdFx0bmV0ZGV2X3RyYWNrZXJfZnJlZShkZXYsIHRyYWNrZXIpO1xuLVx0XHRfX2Rldl9wdXQoZGV2KTtcbiYjNDM7XHRcdC8qIFNraXAgX19kZXZfcHV0KCkgb24gLUVJTlZBTDogcmVmX3RyYWNrZXJfZnJlZSgpIGFscmVhZHlcbiYjNDM7XHRcdCAqIHdhcm5lZCBhbmQgdGhlIHJlZmNvdW50IHdhcyBkZWNyZW1lbnRlZCBieSB0aGUgZmlyc3RcbiYjNDM7XHRcdCAqIHN1Y2Nlc3NmdWwgZnJlZS5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKG5ldGRldl90cmFja2VyX2ZyZWUoZGV2LCB0cmFja2VyKSAhPSAtRUlOVkFMKVxuJiM0MztcdFx0XHRfX2Rldl9wdXQoZGV2KTtcbiBcdH1cbiB9XG4gXG5AQCAtNDU2OSwxMSAmIzQzOzQ1NzUsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9yZWZfcmVwbGFjZShzdHJ1Y3QgbmV0X2RldmljZSAqb2RldixcbiBcdFx0XHRcdCAgICAgIG5ldGRldmljZV90cmFja2VyICp0cmFja2VyLFxuIFx0XHRcdFx0ICAgICAgZ2ZwX3QgZ2ZwKVxuIHtcbi1cdGlmIChvZGV2KVxuLVx0XHRuZXRkZXZfdHJhY2tlcl9mcmVlKG9kZXYsIHRyYWNrZXIpO1xuJiM0MztcdGlmIChvZGV2IFx1MDAyNlx1MDAyNiBuZXRkZXZfdHJhY2tlcl9mcmVlKG9kZXYsIHRyYWNrZXIpICE9IC1FSU5WQUwpXG4mIzQzO1x0XHRfX2Rldl9wdXQob2Rldik7XG4gXG4gXHRfX2Rldl9ob2xkKG5kZXYpO1xuLVx0X19kZXZfcHV0KG9kZXYpO1xuIFxuIFx0aWYgKG5kZXYpXG4gXHRcdF9fbmV0ZGV2X3RyYWNrZXJfYWxsb2MobmRldiwgdHJhY2tlciwgZ2ZwKTtcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jXG5pbmRleCA1OTMzYzVkYWIwOWVlLi5iNDYxYjAxMmUyYWIyIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL2Rldi5jXG5AQCAtMTI0NTYsNyAmIzQzOzEyNDU2LDcgQEAgdm9pZCB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxuIFx0XHRkZXZfdWNfZmx1c2goZGV2KTtcbiBcdFx0ZGV2X21jX2ZsdXNoKGRldik7XG4gXG4tXG4mIzQzO1x0XHRuZXRkZXZfd29ya19jYW5jZWxfYWxsKGRldik7XG4gXHRcdG5ldGRldl9yc3NfY29udGV4dHNfZnJlZShkZXYpO1xuIFxuIFx0XHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX1BSRV9VTklOSVQsIGRldik7XG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmggYi9uZXQvY29yZS9kZXYuaFxuaW5kZXggNWQwYjAzMDVkM2JhYS4uZDNhYzNiYTRiMmEwMCAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL2Rldi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9kZXYuaFxuQEAgLTE4MCw2ICYjNDM7MTgwLDggQEAgdm9pZCBfX25ldGRldl93b3JrX2NvcmVfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudCk7XG4gdW5zaWduZWQgbG9uZ1xuIF9fbmV0ZGV2X3dvcmtfY29yZV9jYW5jZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBtYXNrKTtcbiBcbiYjNDM7dm9pZCBuZXRkZXZfd29ya19jYW5jZWxfYWxsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuJiM0MztcbiB2b2lkIF9fZGV2X25vdGlmeV9mbGFncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgb2xkX2ZsYWdzLFxuIFx0XHRcdHVuc2lnbmVkIGludCBnY2hhbmdlcywgdTMyIHBvcnRpZCxcbiBcdFx0XHRjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCk7XG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuYyBiL25ldC9jb3JlL25ldGRldl93b3JrLmNcbmluZGV4IDMxMDlmYWUxMzJhZDEuLmQ2OTM2M2QyNDdiM2UgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9uZXRkZXZfd29yay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9uZXRkZXZfd29yay5jXG5AQCAtOTksNiAmIzQzOzk5LDE2IEBAIF9fbmV0ZGV2X3dvcmtfY29yZV9jYW5jZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBtYXNrKVxuIFx0cmV0dXJuIG5ldGRldl93b3JrX2RlcXVldWUoZGV2LCBcdTAwMjZkZXYtXHUwMDNld29ya19jb3JlX3BlbmRpbmcsIG1hc2spO1xuIH1cbiBcbiYjNDM7LyogQ2FuY2VsIGFsbCBwZW5kaW5nIGNvcmUgYW5kIGRyaXZlciB3b3JrIGFuZCByZWxlYXNlIHRoZSB3b3JrX3RyYWNrZXJcbiYjNDM7ICogcmVmZXJlbmNlLiAgTXVzdCBiZSBjYWxsZWQgdW5kZXIgUlROTCwgd2hpY2ggbXV0dWFsbHkgZXhjbHVkZXNcbiYjNDM7ICogbmV0ZGV2X3dvcmtfcHJvYygpLlxuJiM0MzsgKi9cbiYjNDM7dm9pZCBuZXRkZXZfd29ya19jYW5jZWxfYWxsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4mIzQzO3tcbiYjNDM7XHRfX25ldGRldl93b3JrX2NvcmVfY2FuY2VsKGRldiwgfjBVTCk7XG4mIzQzO1x0bmV0ZGV2X3dvcmtfY2FuY2VsKGRldiwgfjBVTCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgbmV0ZGV2X3dvcmtfcnVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzLFxuIFx0XHRcdCAgICB1bnNpZ25lZCBsb25nIGNvcmUpXG4ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjMxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfREVWX1JFRkNOVF9UUkFDS0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkmIzM0OywKICAgICYjMzQ7bmV0ZGV2X3dvcmtfY2FuY2VsX2FsbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG5ldHdvcmtpbmcgZGV2aWNlIHRlYXJkb3duIGxvZ2ljIGJ5IGFkZGluZyBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAgdG8gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBhbmQgY2hhbmdpbmcgYG5ldGRldl9wdXRgIGFuZCBgbmV0ZGV2X3JlZl9yZXBsYWNlYCB0byBza2lwIGBfX2Rldl9wdXRgIGlmIGBuZXRkZXZfdHJhY2tlcl9mcmVlYCByZXR1cm5zIGAtRUlOVkFMYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29yZSBuZXR3b3JrIGRldmljZSBsaWZlY3ljbGUgbWFuYWdlbWVudCBhbmQgc2hvdWxkIGJlIGZ1enplZC4gVGhlIGAtRUlOVkFMYCBwYXRoIHJlcXVpcmVzIGBDT05GSUdfTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUmAgdG8gYmUgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGUwZWVkNWFlNjYyYzcxZjRhMjMwYWNkZWQ3YjYwNDQ2ZDE3MWU3MWUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxIDEyOjMwOjU5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgKaW5kZXggOTk4MWQ2MzdmOGI1NC4uNWU4Y2YzZmM2YzgzYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oCkBAIC00NTEyLDExICYjNDM7NDUxMiwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3RyYWNrZXJfYWxsb2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3RyYWNrZXJfZnJlZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAomIzQzO3N0YXRpYyBpbmxpbmUgaW50IG5ldGRldl90cmFja2VyX2ZyZWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCQkgICAgICAgbmV0ZGV2aWNlX3RyYWNrZXIgKnRyYWNrZXIpCiB7CiAjaWZkZWYgQ09ORklHX05FVF9ERVZfUkVGQ05UX1RSQUNLRVIKLQlyZWZfdHJhY2tlcl9mcmVlKCZhbXA7ZGV2LSZndDtyZWZjbnRfdHJhY2tlciwgdHJhY2tlcik7CiYjNDM7CXJldHVybiByZWZfdHJhY2tlcl9mcmVlKCZhbXA7ZGV2LSZndDtyZWZjbnRfdHJhY2tlciwgdHJhY2tlcik7CiYjNDM7I2Vsc2UKJiM0MzsJcmV0dXJuIDA7CiAjZW5kaWYKIH0KIApAQCAtNDUzMyw4ICYjNDM7NDUzNSwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3B1dChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJICAgICAgbmV0ZGV2aWNlX3RyYWNrZXIgKnRyYWNrZXIpCiB7CiAJaWYgKGRldikgewotCQluZXRkZXZfdHJhY2tlcl9mcmVlKGRldiwgdHJhY2tlcik7Ci0JCV9fZGV2X3B1dChkZXYpOwomIzQzOwkJLyogU2tpcCBfX2Rldl9wdXQoKSBvbiAtRUlOVkFMOiByZWZfdHJhY2tlcl9mcmVlKCkgYWxyZWFkeQomIzQzOwkJICogd2FybmVkIGFuZCB0aGUgcmVmY291bnQgd2FzIGRlY3JlbWVudGVkIGJ5IHRoZSBmaXJzdAomIzQzOwkJICogc3VjY2Vzc2Z1bCBmcmVlLgomIzQzOwkJICovCiYjNDM7CQlpZiAobmV0ZGV2X3RyYWNrZXJfZnJlZShkZXYsIHRyYWNrZXIpICE9IC1FSU5WQUwpCiYjNDM7CQkJX19kZXZfcHV0KGRldik7CiAJfQogfQogCkBAIC00NTY5LDExICYjNDM7NDU3NSwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3JlZl9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpvZGV2LAogCQkJCSAgICAgIG5ldGRldmljZV90cmFja2VyICp0cmFja2VyLAogCQkJCSAgICAgIGdmcF90IGdmcCkKIHsKLQlpZiAob2RldikKLQkJbmV0ZGV2X3RyYWNrZXJfZnJlZShvZGV2LCB0cmFja2VyKTsKJiM0MzsJaWYgKG9kZXYgJmFtcDsmYW1wOyBuZXRkZXZfdHJhY2tlcl9mcmVlKG9kZXYsIHRyYWNrZXIpICE9IC1FSU5WQUwpCiYjNDM7CQlfX2Rldl9wdXQob2Rldik7CiAKIAlfX2Rldl9ob2xkKG5kZXYpOwotCV9fZGV2X3B1dChvZGV2KTsKIAogCWlmIChuZGV2KQogCQlfX25ldGRldl90cmFja2VyX2FsbG9jKG5kZXYsIHRyYWNrZXIsIGdmcCk7CmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jCmluZGV4IDU5MzNjNWRhYjA5ZWUuLmI0NjFiMDEyZTJhYjIgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL2Rldi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL2Rldi5jCkBAIC0xMjQ1Niw3ICYjNDM7MTI0NTYsNyBAQCB2b2lkIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsCiAJCWRldl91Y19mbHVzaChkZXYpOwogCQlkZXZfbWNfZmx1c2goZGV2KTsKIAotCiYjNDM7CQluZXRkZXZfd29ya19jYW5jZWxfYWxsKGRldik7CiAJCW5ldGRldl9yc3NfY29udGV4dHNfZnJlZShkZXYpOwogCiAJCWNhbGxfbmV0ZGV2aWNlX25vdGlmaWVycyhORVRERVZfUFJFX1VOSU5JVCwgZGV2KTsKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5oIGIvbmV0L2NvcmUvZGV2LmgKaW5kZXggNWQwYjAzMDVkM2JhYS4uZDNhYzNiYTRiMmEwMCAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvZGV2LmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvZGV2LmgKQEAgLTE4MCw2ICYjNDM7MTgwLDggQEAgdm9pZCBfX25ldGRldl93b3JrX2NvcmVfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudCk7CiB1bnNpZ25lZCBsb25nCiBfX25ldGRldl93b3JrX2NvcmVfY2FuY2VsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgbWFzayk7CiAKJiM0Mzt2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CiYjNDM7CiB2b2lkIF9fZGV2X25vdGlmeV9mbGFncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgb2xkX2ZsYWdzLAogCQkJdW5zaWduZWQgaW50IGdjaGFuZ2VzLCB1MzIgcG9ydGlkLAogCQkJY29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgpOwpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuYyBiL25ldC9jb3JlL25ldGRldl93b3JrLmMKaW5kZXggMzEwOWZhZTEzMmFkMS4uZDY5MzYzZDI0N2IzZSAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9uZXRkZXZfd29yay5jCkBAIC05OSw2ICYjNDM7OTksMTYgQEAgX19uZXRkZXZfd29ya19jb3JlX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spCiAJcmV0dXJuIG5ldGRldl93b3JrX2RlcXVldWUoZGV2LCAmYW1wO2Rldi0mZ3Q7d29ya19jb3JlX3BlbmRpbmcsIG1hc2spOwogfQogCiYjNDM7LyogQ2FuY2VsIGFsbCBwZW5kaW5nIGNvcmUgYW5kIGRyaXZlciB3b3JrIGFuZCByZWxlYXNlIHRoZSB3b3JrX3RyYWNrZXIKJiM0MzsgKiByZWZlcmVuY2UuICBNdXN0IGJlIGNhbGxlZCB1bmRlciBSVE5MLCB3aGljaCBtdXR1YWxseSBleGNsdWRlcwomIzQzOyAqIG5ldGRldl93b3JrX3Byb2MoKS4KJiM0MzsgKi8KJiM0Mzt2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKJiM0Mzt7CiYjNDM7CV9fbmV0ZGV2X3dvcmtfY29yZV9jYW5jZWwoZGV2LCB+MFVMKTsKJiM0MzsJbmV0ZGV2X3dvcmtfY2FuY2VsKGRldiwgfjBVTCk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgbmV0ZGV2X3dvcmtfcnVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnRzLAogCQkJICAgIHVuc2lnbmVkIGxvbmcgY29yZSkKIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzExNwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldHdvcmsgRGV2aWNlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBzZXZlcmFsIGNvcmUgbmV0d29ya2luZyBmaWxlczogYGluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhgLCBgbmV0L2NvcmUvZGV2LmNgLCBgbmV0L2NvcmUvZGV2LmhgLCBhbmQgYG5ldC9jb3JlL25ldGRldl93b3JrLmNgLiBTZWVtcyBsaWtlIHRoZSBtYWluIHRocnVzdCBpcyB0byBjaGFuZ2UgdGhlIHJldHVybiB0eXBlIG9mIGBuZXRkZXZfdHJhY2tlcl9mcmVlYCB0byBgaW50YC4gIFRoYXQmIzM5O3MgYSBwcmV0dHkgbG93LWxldmVsIGNoYW5nZSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucy4KClRoZSBwYXRjaCB0aGVuIHVwZGF0ZXMgYG5ldGRldl9wdXRgIGFuZCBgbmV0ZGV2X3JlZl9yZXBsYWNlYCB0byBjb25kaXRpb25hbGx5ICpub3QqIGNhbGwgYF9fZGV2X3B1dGAgaWYgYG5ldGRldl90cmFja2VyX2ZyZWVgIHJldHVybnMgYC1FSU5WQUxgLiAgVGhhdCYjMzk7cyBpbnRlcmVzdGluZzsgaXQgc3VnZ2VzdHMgdGhhdCBgLUVJTlZBTGAgaXMgbm93IGEgdmFsaWQsIGVycm9yLWluZGljYXRpbmcgcmV0dXJuIGZyb20gYG5ldGRldl90cmFja2VyX2ZyZWVgIHdoaWNoLCBpZiB0cnVlLCBuZWVkcyBhIGNsb3NlIHJlYWQgb24gdGhlIGltcGxpY2F0aW9ucyBvZiBhIG5ldHdvcmsgZHJpdmVyIG5vIGxvbmdlciBjYWxsaW5nIHRoZSBkZXZpY2UgcHV0IGZ1bmN0aW9uLgoKQWRkaXRpb25hbGx5LCB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24sIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCwgYW5kIGNhbGxzIGl0IHdpdGhpbiBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgLiAgVGhhdCYjMzk7cyBzaWduaWZpY2FudCEgIFRoaXMgbGlrZWx5IG1lYW5zIHRoZXkmIzM5O3JlIHRyeWluZyB0byBwcmV2ZW50IHNvbWUgcmFjZSBjb25kaXRpb24gb3IgZG91YmxlLWZyZWUgc2NlbmFyaW8gZHVyaW5nIG5ldHdvcmsgZGV2aWNlIHVucmVnaXN0cmF0aW9uLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCYjMzk7cyBjYW5jZWxsaW5nIHRvIGZ1bGx5IGdyYXNwIHRoZSBjaGFuZ2UuCgpNeSBuZXh0IHN0ZXBzIGFyZSBjbGVhcjogIEkgbmVlZCB0byBkaXZlIGludG8gdGhvc2UgZnVuY3Rpb25zLiAgYG5ldGRldl9wdXRgIGFuZCBgbmV0ZGV2X3JlZl9yZXBsYWNlYCBhcmUgaW5saW5lLCBzbyB0aGF0IHNpbXBsaWZpZXMgdGhpbmdzIGEgYml0OyBJIGp1c3QgaGF2ZSB0byB0cmFjZSB0aGVpciB1c2FnZS4gIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCBpcyB0aGUgbmV3IGtpZCBvbiB0aGUgYmxvY2ssIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbiBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIG90aGVyIGNvcmUgZnVuY3Rpb25zLiBBbmQgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBpcyBtb2RpZmllZCwgc28gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgZGlmZiB0byB1bmRlcnN0YW5kIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZS4KCkZpbmFsbHksIEkgbmVlZCB0byBjaGVjayBob3cgYG5ldC9jb3JlL25ldGRldl93b3JrLmNgIGlzIGNvbXBpbGVkLiAgSXMgaXQgYWx3YXlzIGluY2x1ZGVkLCBvciBpcyBpdCBndWFyZGVkIGJ5IHNvbWUgY29uZmlndXJhdGlvbiBmbGFnPyAgSSYjMzk7bGwgY2hlY2sgdGhlIGBuZXQvY29yZS9NYWtlZmlsZWAgdG8gbWFrZSBzdXJlIEkgZ2V0IGEgZ29vZCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGRldl93b3JrLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9NYWtlZmlsZT0xMj1vYmoteVx0XHQgICAgICYjNDM7PSBkZXYubyBkZXZfYXBpLm8gZGV2X2FkZHJfbGlzdHMubyBkc3QubyBuZXRldmVudC5vIFxcXG4tLVxubmV0L2NvcmUvTWFrZWZpbGUtMTUtXHRcdFx0ZmliX25vdGlmaWVyLm8geGRwLm8gZmxvd19vZmZsb2FkLm8gZ3JvLm8gXFxcbm5ldC9jb3JlL01ha2VmaWxlOjE2Olx0XHRcdG5ldGRldi1nZW5sLm8gbmV0ZGV2LWdlbmwtZ2VuLm8gbmV0ZGV2X3dvcmsubyBnc28ub1xubmV0L2NvcmUvTWFrZWZpbGUtMTctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAyNgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDIwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgTmV0d29yayBEZXZpY2UgUmVmZXJlbmNlIENvdW50aW5nKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhlIGJ1aWxkIHN5c3RlbSwgaXQmIzM5O3MgY2xlYXIgdGhhdCBgbmV0ZGV2X3dvcmsub2AgYW5kIGBkZXYub2AgYXJlIGFsd2F5cyBpbmNsdWRlZCBpbiB0aGUgYnVpbGQsIHdoaWNoIG1ha2VzIHNlbnNlLiBOb3csIEkgbmVlZCB0byBmb2N1cyBteSBlZmZvcnRzIG9uIHNwZWNpZmljIGZ1bmN0aW9ucyB0byB0ZXN0LCBhbmQgbmFycm93IGRvd24gdGhlIGFyZWEgdG8gc3R1ZHkuCgpMZXQmIzM5O3Mgc2VlLi4uIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgbG9va3MgcHJvbWlzaW5nLCBhbmQgc28gZG9lcyBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAuIFRoZXkgc2VlbSBsaWtlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzIGZvciBkZWJ1Z2dpbmcgb3IgcGVyZm9ybWFuY2UgYW5hbHlzaXMuIEkgYWxzbyBzZWUgYG5ldGRldl9wdXRgIGFuZCBgbmV0ZGV2X3JlZl9yZXBsYWNlYCwgYnV0IHRob3NlIGFyZSBpbmxpbmUsIHNvIEkgY2FuJiMzOTt0IGRpcmVjdGx5IHRhcmdldCB0aGVtLiBIb3dldmVyLCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoZXkgYXJlIHVzZWQgZXh0ZW5zaXZlbHksIG1lYW5pbmcgdGhleSB3aWxsIGJlIHJlbGV2YW50IGR1cmluZyBhbnkgYW5hbHlzaXMuCgpOb3csIGEga2V5IGNvbnNpZGVyYXRpb24gZm9yIHRlc3RpbmcsIHRoZSBgQ09ORklHX05FVF9ERVZfUkVGQ05UX1RSQUNLRVJgIG9wdGlvbiBjb21lcyBpbnRvIHBsYXksIG9idmlvdXNseS4gSWYgaXQmIzM5O3MgZW5hYmxlZCwgYG5ldGRldl90cmFja2VyX2ZyZWVgIHVzZXMgYHJlZl90cmFja2VyX2ZyZWVgLiBJZiBpdCYjMzk7cyAqbm90KiBlbmFibGVkLCBpdCByZXR1cm5zIDAuIFNvLCB0byBzcGVjaWZpY2FsbHkgdHJpZ2dlciBhbmQgdGVzdCB0aGUgYC1FSU5WQUxgIGVycm9yIHBhdGgsIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGBDT05GSUdfTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUmAgaW4gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIFRoYXQgaXMga2V5IHRvIGlzb2xhdGluZyBhIGNlcnRhaW4gcHJvYmxlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZy5kZWJ1Zy0yLVxubmV0L0tjb25maWcuZGVidWc6Mzpjb25maWcgTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUlxubmV0L0tjb25maWcuZGVidWctNC1cdGJvb2wgXCYjMzQ7RW5hYmxlIG5ldCBkZXZpY2UgcmVmY291bnQgdHJhY2tpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxMjozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjA1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczoKCioqSW52ZXN0aWdhdGluZyBORVRfREVWX1JFRkNOVF9UUkFDS0VSIERlcGVuZGVuY2llcyoqCgpSaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIGBORVRfREVWX1JFRkNOVF9UUkFDS0VSYC4gVGhpcyBmZWF0dXJlLCBvciB3aGF0ZXZlciBpdCBpcywgc291bmRzIGltcG9ydGFudCBmb3IgZGVidWdnaW5nIG5ldHdvcmsgZGV2aWNlIHJlZmVyZW5jZSBjb3VudHMuIEkmIzM5O20gZ3Vlc3NpbmcgaXQmIzM5O3MgdXNlZCBmb3IgdHJhY2tpbmcgZG93biB0aG9zZSBwZXNreSBtZW1vcnkgbGVha3Mgb3IgcHJlbWF0dXJlIHJlbGVhc2VzIHRoYXQgY2FuIHBsYWd1ZSBuZXR3b3JraW5nIGNvZGUuCgpNeSBmaXJzdCBwb3J0IG9mIGNhbGwgaXMgYWx3YXlzIHRoZSBgS2NvbmZpZ2AgZmlsZXMuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgZ28gc3RyYWlnaHQgZm9yIGBuZXQvS2NvbmZpZy5kZWJ1Z2AuIEl0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGJlY2F1c2UgdGhhdCYjMzk7cyB3aGVyZSBkZWJ1ZyBvcHRpb25zIHVzdWFsbHkgcmVzaWRlLiBJJiMzOTtsbCBzZWFyY2ggdGhhdCBmaWxlIGZvciB0aGUgZGVwZW5kZW5jaWVzIG9mIGBORVRfREVWX1JFRkNOVF9UUkFDS0VSYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvdGhlciBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgdGhpcyB0aGluZywgd2hpY2ggZmVhdHVyZXMgbXVzdCBiZSBlbmFibGVkIGZvciBpdCB0byB3b3JrLiBUaGF0IGZpbGUgd2lsbCBnaXZlIG1lIHRoZSBsb3dkb3duIG9uIGFueSBvdGhlciBjb25maWcgc3ltYm9scyB0aGF0IG5lZWQgdG8gYmUgaW4gcGxhY2UuIFRoaXMgd2lsbCBnaXZlIG1lIGFsbCB0aGUgaW5mb3JtYXRpb24gdGhhdCBJIHJlcXVpcmUgYmVmb3JlIEkgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBhY3R1YWwgY29kZS4gRnJvbSB0aGVyZSwgSSBjYW4gZ2V0IGEgYmV0dGVyIHNlbnNlIG9mIGhvdyBpdCYjMzk7cyB1c2VkIGFuZCB3aGF0IGl0IGludGVyYWN0cyB3aXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L0tjb25maWcuZGVidWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRjb25maWcgTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUlxuICAgNDpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgbmV0IGRldmljZSByZWZjb3VudCB0cmFja2luZ1wmIzM0O1xuICAgNTpcdFx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUwgXHUwMDI2XHUwMDI2IFNUQUNLVFJBQ0VfU1VQUE9SVCBcdTAwMjZcdTAwMjYgTkVUXG4gICA2Olx0XHRzZWxlY3QgUkVGX1RSQUNLRVJcbiAgIDc6XHRcdGRlZmF1bHQgblxuICAgODpcdFx0aGVscFxuICAgOTpcdFx0ICBFbmFibGUgZGVidWdnaW5nIGZlYXR1cmUgdG8gdHJhY2sgZGV2aWNlIHJlZmVyZW5jZXMuXG4gIDEwOlx0XHQgIFRoaXMgYWRkcyBtZW1vcnkgYW5kIGNwdSBjb3N0cy5cbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgTkVUX05TX1JFRkNOVF9UUkFDS0VSXG4gIDEzOlx0XHRib29sIFwmIzM0O0VuYWJsZSBuZXR3b3JraW5nIG5hbWVzcGFjZSByZWZjb3VudCB0cmFja2luZ1wmIzM0O1xuICAxNDpcdFx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUwgXHUwMDI2XHUwMDI2IFNUQUNLVFJBQ0VfU1VQUE9SVCBcdTAwMjZcdTAwMjYgTkVUXG4gIDE1Olx0XHRzZWxlY3QgUkVGX1RSQUNLRVJcbiAgMTY6XHRcdGRlZmF1bHQgblxuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBFbmFibGUgZGVidWdnaW5nIGZlYXR1cmUgdG8gdHJhY2sgbmV0bnMgcmVmZXJlbmNlcy5cbiAgMTk6XHRcdCAgVGhpcyBhZGRzIG1lbW9yeSBhbmQgY3B1IGNvc3RzLlxuICAyMDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNzEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQcm9wb3NlZCBDb25maWd1cmF0aW9uIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwcm9wb3NlZCBjb25maWd1cmF0aW9uIGFuZCBpbW1lZGlhdGVseSBzZWUgdGhhdCBgTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUmAgaGFzIHNvbWUgZGVwZW5kZW5jaWVzLiBJdCYjMzk7cyB0aWVkIHRvIGBERUJVR19LRVJORUxgLCBgU1RBQ0tUUkFDRV9TVVBQT1JUYCwgYW5kIGBORVRgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGdpdmVuIGl0cyBmdW5jdGlvbi4gV2UgbmVlZCB0byBlbnN1cmUgYE5FVF9ERVZfUkVGQ05UX1RSQUNLRVJgIGlzIHByb3Blcmx5IGludGVncmF0ZWQgaW50byBgRW5hYmxlQ29uZmlnc2AgdG8gZW5zdXJlIGl0JiMzOTtzIGVuYWJsZWQgd2hlbiBpdCBuZWVkcyB0byBiZS4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUsIHRoZSBncm91bmR3b3JrIHRoYXQgbmVlZHMgdG8gYmUgbGFpZCBmaXJzdC4KCk5vdywgdGhlIGNvZGUgY2hhbmdlcy4gVGhlIHBhdGNoIG1vZGlmaWVzIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgdG8gaW5jbHVkZSBhIGNhbGwgdG8gYG5ldGRldl93b3JrX2NhbmNlbF9hbGwoZGV2KWAuIFRoYXQmIzM5O3MgYSBnb29kIGFkZGl0aW9uLCBhbmQgaXQmIzM5O3MgZGVmaW5pdGVseSByZWFjaGFibGUgY29kZSBwYXRoLiBJdCYjMzk7cyBhIHN0YW5kYXJkIGNsZWFudXAgb3BlcmF0aW9uLiBUaGVuIHRoZXJlIGFyZSBjaGFuZ2VzIHRvIGBuZXRkZXZfcHV0YCBhbmQgYG5ldGRldl9yZWZfcmVwbGFjZWAgd2hlcmUgYF9fZGV2X3B1dGAgaXMgc2tpcHBlZCBpZiBgbmV0ZGV2X3RyYWNrZXJfZnJlZWAgcmV0dXJucyBgLUVJTlZBTGAuIEFub3RoZXIgZnVuY3Rpb25hbCBjaGFuZ2UgYW5kIGFnYWluLCBwZXJmZWN0bHkgcmVhY2hhYmxlLiBJIGNhbiBzZWUgdGhlIGludGVudCBoZXJlOiBncmFjZWZ1bCBoYW5kbGluZyBvZiByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzLgoKVGhlIGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uIGFyZSBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgIGFuZCBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAuIEkgbmVlZCB0byBjb25maXJtIHNvbWV0aGluZyBxdWlja2x5IGFib3V0IGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWA6IElzIGl0IGEgc3RhdGljIGZ1bmN0aW9uPyBUaGF0JiMzOTtzIGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZSBhbmQgaWYgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIEkgbmVlZCB0byBjb25zaWRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9kZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9kZXYuYz0xMjM2ND1ib29sIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlZChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9jb3JlL2Rldi5jLTEyMzY5LVxubmV0L2NvcmUvZGV2LmM6MTIzNzA6dm9pZCB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLFxubmV0L2NvcmUvZGV2LmMtMTIzNzEtXHRcdFx0XHQgICAgICB1MzIgcG9ydGlkLCBjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saClcbi0tXG5uZXQvY29yZS9kZXYuYz0xMjUwNT12b2lkIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcbm5ldC9jb3JlL2Rldi5jLTEyNTA2LXtcbm5ldC9jb3JlL2Rldi5jOjEyNTA3Olx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkoaGVhZCwgMCwgTlVMTCk7XG5uZXQvY29yZS9kZXYuYy0xMjUwOC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5MzAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIER5bmFtaWMgTmF0dXJlIG9mIHRoZSBQcm9ibGVtKioKClJpZ2h0LCBzbyB0aGUgc2l0dWF0aW9uIGlzbiYjMzk7dCBmaXhlZCwgaXQmIzM5O3Mgbm90IGEgc25hcHNob3QuIFRoYXQgbWVhbnMgSSBuZWVkIHRvIGFwcHJvYWNoIHRoaXMgd2l0aCB0aGF0IGluIG1pbmQsIG5vdCBhc3N1bWluZyBzb21ldGhpbmcgY29uc3RhbnQuIEkgbmVlZCB0byBsb29rIGZvciBhbnkgcG9pbnRzIHRoYXQgc2hpZnQgYW5kIG1vdmUuIExldCYjMzk7cyBtYWtlIHN1cmUgd2UmIzM5O3JlIG5vdCBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHRyYW5zaWVudCBoZXJlLiBUaGlzIGlzIGltcG9ydGFudCB0byBkZXRlcm1pbmUgd2hhdCBpcyB0aGUgcHJvcGVyIGRpcmVjdGlvbiB0byB0YWtlLgoKTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgYmVnaW4gdG8gYWRkcmVzcyB0aGUgcHJvYmxlbS4gTGV0IG1lIHNlZSB3aGVyZSB0aGF0IGxhbmRzLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgc3lzdGVtIGlzIGJlaGF2aW5nIGFzIEkgZXhwZWN0LCBpZiBzb21ldGhpbmcgc2hvdWxkIGJlIHJlbW92ZWQsIGl0IHNob3VsZCBiZSBkb25lIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGRldl93b3JrX2NhbmNlbF9hbGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9uZXRkZXZfd29yay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl93b3JrLmM9OTc9X19uZXRkZXZfd29ya19jb3JlX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3dvcmsuYy0xMDUtICovXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjEwNjp2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9jb3JlL25ldGRldl93b3JrLmMtMTA3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTI6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI2OAoJCQkJCQkJb3V0cHV0OiAxNzYKCQkJCQkJCXRob3VnaHRzOiAxMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBhbiBleHBlcnQgaW4gbXkgZmllbGQ6CgoqKkZ1enppbmcgRGlyZWN0aW9uOiBOZXR3b3JrIERldmljZSBXb3JrIENhbmNlbGxhdGlvbioqCgpPa2F5LCB0aGlzIGlzbiYjMzk7dCBhIHN0YXRpYyBzaXR1YXRpb247IHRoaW5ncyBhcmUgZXZvbHZpbmcuIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IGBXb3J0aEZ1enppbmdgIGlzIGluZGVlZCB0cnVlIGluIHRoaXMgY29udGV4dC4gTGV0JiMzOTtzIGRpZyBkZWVwZXIuIFRoZSBpbml0aWFsIGxpc3Qgb2YgaW50ZXJlc3Rpbmcgc3ltYm9scyBsb29rcyBzb2xpZDogYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBhbmQgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgIGhhdmUgZmxhZ2dlZCBteSBhdHRlbnRpb24uIEkmIzM5O20gYWxzbyBzZWVpbmcgYE5FVF9ERVZfUkVGQ05UX1RSQUNLRVJgIGVuYWJsZWQgd2hpY2ggaXMgYSBoZWxwZnVsIGNvbmZpZy4KCkEgcXVpY2sgc2FuaXR5IGNoZWNrIGlzIGFsd2F5cyB3aXNlLiBJIHdhbnQgdG8gdmVyaWZ5IGlmIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCBpcyBleHBvcnRlZC4gV2hpbGUgU3l6a2FsbGVyIGRvZXNuJiMzOTt0ICpyZXF1aXJlKiBleHBsaWNpdCBleHBvcnRzIGZvciBtb2R1bGFyIGZ1enppbmcsIGtub3dpbmcgdGhlIGV4cG9ydCBzdGF0dXMgaXMgdmFsdWFibGUgaW5mb3JtYXRpb24uIEtub3dpbmcgaWYgaXQgY2FuIGJlIHJlYWNoZWQgdmlhIG1vZHVsZXMgaGVscHMgbWUgcHJpb3JpdGl6ZSBhbmQgdGhpbmsgdGhyb3VnaCBwb3RlbnRpYWwgZnV6emluZyBzdHJhdGVnaWVzLiBSZWdhcmRsZXNzLCB0aGVzZSBjaGFuZ2VzIGFyZSBkZWVwbHkgZW1iZWRkZWQgd2l0aGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3Vic3lzdGVtIOKAkyBhIGhpZ2hseSBjb21wbGV4IGFuZCBhY3RpdmUgYXJlYSDigJMgc28gdGhleSYjMzk7cmUgZGVmaW5pdGVseSByZWFjaGFibGUgb25lIHdheSBvciBhbm90aGVyLgoKVGltZSB0byBzeW50aGVzaXplIHRoaXMgaW50byBhIGNvbmNyZXRlIHBsYW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDEyOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfREVWX1JFRkNOVF9UUkFDS0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkmIzM0OywKICAgICYjMzQ7bmV0ZGV2X3dvcmtfY2FuY2VsX2FsbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG5ldHdvcmtpbmcgZGV2aWNlIHRlYXJkb3duIGxvZ2ljIGJ5IGFkZGluZyBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAgdG8gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBhbmQgY2hhbmdpbmcgYG5ldGRldl9wdXRgIGFuZCBgbmV0ZGV2X3JlZl9yZXBsYWNlYCB0byBza2lwIGBfX2Rldl9wdXRgIGlmIGBuZXRkZXZfdHJhY2tlcl9mcmVlYCByZXR1cm5zIGAtRUlOVkFMYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29yZSBuZXR3b3JrIGRldmljZSBsaWZlY3ljbGUgbWFuYWdlbWVudCBhbmQgc2hvdWxkIGJlIGZ1enplZC4gVGhlIGAtRUlOVkFMYCBwYXRoIHJlcXVpcmVzIGBDT05GSUdfTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUmAgdG8gYmUgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0RFVl9SRUZDTlRfVFJBQ0tFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5JiMzNDssCiAgICAmIzM0O25ldGRldl93b3JrX2NhbmNlbF9hbGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBuZXR3b3JraW5nIGRldmljZSB0ZWFyZG93biBsb2dpYyBieSBhZGRpbmcgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgIHRvIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgYW5kIGNoYW5naW5nIGBuZXRkZXZfcHV0YCBhbmQgYG5ldGRldl9yZWZfcmVwbGFjZWAgdG8gc2tpcCBgX19kZXZfcHV0YCBpZiBgbmV0ZGV2X3RyYWNrZXJfZnJlZWAgcmV0dXJucyBgLUVJTlZBTGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGNvcmUgbmV0d29yayBkZXZpY2UgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgYW5kIHNob3VsZCBiZSBmdXp6ZWQuIFRoZSBgLUVJTlZBTGAgcGF0aCByZXF1aXJlcyBgQ09ORklHX05FVF9ERVZfUkVGQ05UX1RSQUNLRVJgIHRvIGJlIGVuYWJsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjozMTowMC40MzExNzAzMThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTA4MTY5NzI4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfREVWX1JFRkNOVF9UUkFDS0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlcIixcbiAgICBcIm5ldGRldl93b3JrX2NhbmNlbF9hbGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG5ldHdvcmtpbmcgZGV2aWNlIHRlYXJkb3duIGxvZ2ljIGJ5IGFkZGluZyBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAgdG8gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBhbmQgY2hhbmdpbmcgYG5ldGRldl9wdXRgIGFuZCBgbmV0ZGV2X3JlZl9yZXBsYWNlYCB0byBza2lwIGBfX2Rldl9wdXRgIGlmIGBuZXRkZXZfdHJhY2tlcl9mcmVlYCByZXR1cm5zIGAtRUlOVkFMYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29yZSBuZXR3b3JrIGRldmljZSBsaWZlY3ljbGUgbWFuYWdlbWVudCBhbmQgc2hvdWxkIGJlIGZ1enplZC4gVGhlIGAtRUlOVkFMYCBwYXRoIHJlcXVpcmVzIGBDT05GSUdfTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUmAgdG8gYmUgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MzE6MDAuNDMxMTc4MTI4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzE4ODMxODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlMGVlZDVhZTY2MmM3MWY0YTIzMGFjZGVkN2I2MDQ0NmQxNzFlNzFlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMTI6MzA6NTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcXG5pbmRleCA5OTgxZDYzN2Y4YjU0Li41ZThjZjNmYzZjODNhIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXFxuQEAgLTQ1MTIsMTEgKzQ1MTIsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIG5ldGRldl90cmFja2VyX2FsbG9jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuICNlbmRpZlxcbiB9XFxuIFxcbi1zdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3RyYWNrZXJfZnJlZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbitzdGF0aWMgaW5saW5lIGludCBuZXRkZXZfdHJhY2tlcl9mcmVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBuZXRkZXZpY2VfdHJhY2tlciAqdHJhY2tlcilcXG4ge1xcbiAjaWZkZWYgQ09ORklHX05FVF9ERVZfUkVGQ05UX1RSQUNLRVJcXG4tXFx0cmVmX3RyYWNrZXJfZnJlZShcXHUwMDI2ZGV2LVxcdTAwM2VyZWZjbnRfdHJhY2tlciwgdHJhY2tlcik7XFxuK1xcdHJldHVybiByZWZfdHJhY2tlcl9mcmVlKFxcdTAwMjZkZXYtXFx1MDAzZXJlZmNudF90cmFja2VyLCB0cmFja2VyKTtcXG4rI2Vsc2VcXG4rXFx0cmV0dXJuIDA7XFxuICNlbmRpZlxcbiB9XFxuIFxcbkBAIC00NTMzLDggKzQ1MzUsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIG5ldGRldl9wdXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0ICAgICAgbmV0ZGV2aWNlX3RyYWNrZXIgKnRyYWNrZXIpXFxuIHtcXG4gXFx0aWYgKGRldikge1xcbi1cXHRcXHRuZXRkZXZfdHJhY2tlcl9mcmVlKGRldiwgdHJhY2tlcik7XFxuLVxcdFxcdF9fZGV2X3B1dChkZXYpO1xcbitcXHRcXHQvKiBTa2lwIF9fZGV2X3B1dCgpIG9uIC1FSU5WQUw6IHJlZl90cmFja2VyX2ZyZWUoKSBhbHJlYWR5XFxuK1xcdFxcdCAqIHdhcm5lZCBhbmQgdGhlIHJlZmNvdW50IHdhcyBkZWNyZW1lbnRlZCBieSB0aGUgZmlyc3RcXG4rXFx0XFx0ICogc3VjY2Vzc2Z1bCBmcmVlLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0aWYgKG5ldGRldl90cmFja2VyX2ZyZWUoZGV2LCB0cmFja2VyKSAhPSAtRUlOVkFMKVxcbitcXHRcXHRcXHRfX2Rldl9wdXQoZGV2KTtcXG4gXFx0fVxcbiB9XFxuIFxcbkBAIC00NTY5LDExICs0NTc1LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBuZXRkZXZfcmVmX3JlcGxhY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm9kZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgIG5ldGRldmljZV90cmFja2VyICp0cmFja2VyLFxcbiBcXHRcXHRcXHRcXHQgICAgICBnZnBfdCBnZnApXFxuIHtcXG4tXFx0aWYgKG9kZXYpXFxuLVxcdFxcdG5ldGRldl90cmFja2VyX2ZyZWUob2RldiwgdHJhY2tlcik7XFxuK1xcdGlmIChvZGV2IFxcdTAwMjZcXHUwMDI2IG5ldGRldl90cmFja2VyX2ZyZWUob2RldiwgdHJhY2tlcikgIT0gLUVJTlZBTClcXG4rXFx0XFx0X19kZXZfcHV0KG9kZXYpO1xcbiBcXG4gXFx0X19kZXZfaG9sZChuZGV2KTtcXG4tXFx0X19kZXZfcHV0KG9kZXYpO1xcbiBcXG4gXFx0aWYgKG5kZXYpXFxuIFxcdFxcdF9fbmV0ZGV2X3RyYWNrZXJfYWxsb2MobmRldiwgdHJhY2tlciwgZ2ZwKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmMgYi9uZXQvY29yZS9kZXYuY1xcbmluZGV4IDU5MzNjNWRhYjA5ZWUuLmI0NjFiMDEyZTJhYjIgMTAwNjQ0XFxuLS0tIGEvbmV0L2NvcmUvZGV2LmNcXG4rKysgYi9uZXQvY29yZS9kZXYuY1xcbkBAIC0xMjQ1Niw3ICsxMjQ1Niw3IEBAIHZvaWQgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCxcXG4gXFx0XFx0ZGV2X3VjX2ZsdXNoKGRldik7XFxuIFxcdFxcdGRldl9tY19mbHVzaChkZXYpO1xcbiBcXG4tXFxuK1xcdFxcdG5ldGRldl93b3JrX2NhbmNlbF9hbGwoZGV2KTtcXG4gXFx0XFx0bmV0ZGV2X3Jzc19jb250ZXh0c19mcmVlKGRldik7XFxuIFxcbiBcXHRcXHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX1BSRV9VTklOSVQsIGRldik7XFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5oIGIvbmV0L2NvcmUvZGV2LmhcXG5pbmRleCA1ZDBiMDMwNWQzYmFhLi5kM2FjM2JhNGIyYTAwIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL2Rldi5oXFxuKysrIGIvbmV0L2NvcmUvZGV2LmhcXG5AQCAtMTgwLDYgKzE4MCw4IEBAIHZvaWQgX19uZXRkZXZfd29ya19jb3JlX3NjaGVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnQpO1xcbiB1bnNpZ25lZCBsb25nXFxuIF9fbmV0ZGV2X3dvcmtfY29yZV9jYW5jZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBtYXNrKTtcXG4gXFxuK3ZvaWQgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG4rXFxuIHZvaWQgX19kZXZfbm90aWZ5X2ZsYWdzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBvbGRfZmxhZ3MsXFxuIFxcdFxcdFxcdHVuc2lnbmVkIGludCBnY2hhbmdlcywgdTMyIHBvcnRpZCxcXG4gXFx0XFx0XFx0Y29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgpO1xcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9uZXRkZXZfd29yay5jIGIvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuY1xcbmluZGV4IDMxMDlmYWUxMzJhZDEuLmQ2OTM2M2QyNDdiM2UgMTAwNjQ0XFxuLS0tIGEvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuY1xcbisrKyBiL25ldC9jb3JlL25ldGRldl93b3JrLmNcXG5AQCAtOTksNiArOTksMTYgQEAgX19uZXRkZXZfd29ya19jb3JlX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spXFxuIFxcdHJldHVybiBuZXRkZXZfd29ya19kZXF1ZXVlKGRldiwgXFx1MDAyNmRldi1cXHUwMDNld29ya19jb3JlX3BlbmRpbmcsIG1hc2spO1xcbiB9XFxuIFxcbisvKiBDYW5jZWwgYWxsIHBlbmRpbmcgY29yZSBhbmQgZHJpdmVyIHdvcmsgYW5kIHJlbGVhc2UgdGhlIHdvcmtfdHJhY2tlclxcbisgKiByZWZlcmVuY2UuICBNdXN0IGJlIGNhbGxlZCB1bmRlciBSVE5MLCB3aGljaCBtdXR1YWxseSBleGNsdWRlc1xcbisgKiBuZXRkZXZfd29ya19wcm9jKCkuXFxuKyAqL1xcbit2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4re1xcbitcXHRfX25ldGRldl93b3JrX2NvcmVfY2FuY2VsKGRldiwgfjBVTCk7XFxuK1xcdG5ldGRldl93b3JrX2NhbmNlbChkZXYsIH4wVUwpO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBuZXRkZXZfd29ya19ydW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMsXFxuIFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nIGNvcmUpXFxuIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MzE6MDEuMDAzODA5MTEzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mjg1MDkwNDg0MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5XCIsXG4gICAgXCJuZXRkZXZfd29ya19jYW5jZWxfYWxsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBuZXR3b3JraW5nIGRldmljZSB0ZWFyZG93biBsb2dpYyBieSBhZGRpbmcgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgIHRvIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgYW5kIGNoYW5naW5nIGBuZXRkZXZfcHV0YCBhbmQgYG5ldGRldl9yZWZfcmVwbGFjZWAgdG8gc2tpcCBgX19kZXZfcHV0YCBpZiBgbmV0ZGV2X3RyYWNrZXJfZnJlZWAgcmV0dXJucyBgLUVJTlZBTGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGNvcmUgbmV0d29yayBkZXZpY2UgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgYW5kIHNob3VsZCBiZSBmdXp6ZWQuIFRoZSBgLUVJTlZBTGAgcGF0aCByZXF1aXJlcyBgQ09ORklHX05FVF9ERVZfUkVGQ05UX1RSQUNLRVJgIHRvIGJlIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGUwZWVkNWFlNjYyYzcxZjRhMjMwYWNkZWQ3YjYwNDQ2ZDE3MWU3MWVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDEyOjMwOjU5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbmluZGV4IDk5ODFkNjM3ZjhiNTQuLjVlOGNmM2ZjNmM4M2EgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG5AQCAtNDUxMiwxMSArNDUxMiwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3RyYWNrZXJfYWxsb2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiAjZW5kaWZcbiB9XG4gXG4tc3RhdGljIGlubGluZSB2b2lkIG5ldGRldl90cmFja2VyX2ZyZWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbitzdGF0aWMgaW5saW5lIGludCBuZXRkZXZfdHJhY2tlcl9mcmVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHQgICAgICAgbmV0ZGV2aWNlX3RyYWNrZXIgKnRyYWNrZXIpXG4ge1xuICNpZmRlZiBDT05GSUdfTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUlxuLVx0cmVmX3RyYWNrZXJfZnJlZShcdTAwMjZkZXYtXHUwMDNlcmVmY250X3RyYWNrZXIsIHRyYWNrZXIpO1xuK1x0cmV0dXJuIHJlZl90cmFja2VyX2ZyZWUoXHUwMDI2ZGV2LVx1MDAzZXJlZmNudF90cmFja2VyLCB0cmFja2VyKTtcbisjZWxzZVxuK1x0cmV0dXJuIDA7XG4gI2VuZGlmXG4gfVxuIFxuQEAgLTQ1MzMsOCArNDUzNSwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3B1dChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdCAgICAgIG5ldGRldmljZV90cmFja2VyICp0cmFja2VyKVxuIHtcbiBcdGlmIChkZXYpIHtcbi1cdFx0bmV0ZGV2X3RyYWNrZXJfZnJlZShkZXYsIHRyYWNrZXIpO1xuLVx0XHRfX2Rldl9wdXQoZGV2KTtcbitcdFx0LyogU2tpcCBfX2Rldl9wdXQoKSBvbiAtRUlOVkFMOiByZWZfdHJhY2tlcl9mcmVlKCkgYWxyZWFkeVxuK1x0XHQgKiB3YXJuZWQgYW5kIHRoZSByZWZjb3VudCB3YXMgZGVjcmVtZW50ZWQgYnkgdGhlIGZpcnN0XG4rXHRcdCAqIHN1Y2Nlc3NmdWwgZnJlZS5cbitcdFx0ICovXG4rXHRcdGlmIChuZXRkZXZfdHJhY2tlcl9mcmVlKGRldiwgdHJhY2tlcikgIT0gLUVJTlZBTClcbitcdFx0XHRfX2Rldl9wdXQoZGV2KTtcbiBcdH1cbiB9XG4gXG5AQCAtNDU2OSwxMSArNDU3NSwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbmV0ZGV2X3JlZl9yZXBsYWNlKHN0cnVjdCBuZXRfZGV2aWNlICpvZGV2LFxuIFx0XHRcdFx0ICAgICAgbmV0ZGV2aWNlX3RyYWNrZXIgKnRyYWNrZXIsXG4gXHRcdFx0XHQgICAgICBnZnBfdCBnZnApXG4ge1xuLVx0aWYgKG9kZXYpXG4tXHRcdG5ldGRldl90cmFja2VyX2ZyZWUob2RldiwgdHJhY2tlcik7XG4rXHRpZiAob2RldiBcdTAwMjZcdTAwMjYgbmV0ZGV2X3RyYWNrZXJfZnJlZShvZGV2LCB0cmFja2VyKSAhPSAtRUlOVkFMKVxuK1x0XHRfX2Rldl9wdXQob2Rldik7XG4gXG4gXHRfX2Rldl9ob2xkKG5kZXYpO1xuLVx0X19kZXZfcHV0KG9kZXYpO1xuIFxuIFx0aWYgKG5kZXYpXG4gXHRcdF9fbmV0ZGV2X3RyYWNrZXJfYWxsb2MobmRldiwgdHJhY2tlciwgZ2ZwKTtcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jXG5pbmRleCA1OTMzYzVkYWIwOWVlLi5iNDYxYjAxMmUyYWIyIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZGV2LmNcbisrKyBiL25ldC9jb3JlL2Rldi5jXG5AQCAtMTI0NTYsNyArMTI0NTYsNyBAQCB2b2lkIHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsXG4gXHRcdGRldl91Y19mbHVzaChkZXYpO1xuIFx0XHRkZXZfbWNfZmx1c2goZGV2KTtcbiBcbi1cbitcdFx0bmV0ZGV2X3dvcmtfY2FuY2VsX2FsbChkZXYpO1xuIFx0XHRuZXRkZXZfcnNzX2NvbnRleHRzX2ZyZWUoZGV2KTtcbiBcbiBcdFx0Y2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKE5FVERFVl9QUkVfVU5JTklULCBkZXYpO1xuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5oIGIvbmV0L2NvcmUvZGV2LmhcbmluZGV4IDVkMGIwMzA1ZDNiYWEuLmQzYWMzYmE0YjJhMDAgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9kZXYuaFxuKysrIGIvbmV0L2NvcmUvZGV2LmhcbkBAIC0xODAsNiArMTgwLDggQEAgdm9pZCBfX25ldGRldl93b3JrX2NvcmVfc2NoZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudCk7XG4gdW5zaWduZWQgbG9uZ1xuIF9fbmV0ZGV2X3dvcmtfY29yZV9jYW5jZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBtYXNrKTtcbiBcbit2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG4rXG4gdm9pZCBfX2Rldl9ub3RpZnlfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG9sZF9mbGFncyxcbiBcdFx0XHR1bnNpZ25lZCBpbnQgZ2NoYW5nZXMsIHUzMiBwb3J0aWQsXG4gXHRcdFx0Y29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgpO1xuZGlmZiAtLWdpdCBhL25ldC9jb3JlL25ldGRldl93b3JrLmMgYi9uZXQvY29yZS9uZXRkZXZfd29yay5jXG5pbmRleCAzMTA5ZmFlMTMyYWQxLi5kNjkzNjNkMjQ3YjNlIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuY1xuKysrIGIvbmV0L2NvcmUvbmV0ZGV2X3dvcmsuY1xuQEAgLTk5LDYgKzk5LDE2IEBAIF9fbmV0ZGV2X3dvcmtfY29yZV9jYW5jZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBtYXNrKVxuIFx0cmV0dXJuIG5ldGRldl93b3JrX2RlcXVldWUoZGV2LCBcdTAwMjZkZXYtXHUwMDNld29ya19jb3JlX3BlbmRpbmcsIG1hc2spO1xuIH1cbiBcbisvKiBDYW5jZWwgYWxsIHBlbmRpbmcgY29yZSBhbmQgZHJpdmVyIHdvcmsgYW5kIHJlbGVhc2UgdGhlIHdvcmtfdHJhY2tlclxuKyAqIHJlZmVyZW5jZS4gIE11c3QgYmUgY2FsbGVkIHVuZGVyIFJUTkwsIHdoaWNoIG11dHVhbGx5IGV4Y2x1ZGVzXG4rICogbmV0ZGV2X3dvcmtfcHJvYygpLlxuKyAqL1xuK3ZvaWQgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuK3tcbitcdF9fbmV0ZGV2X3dvcmtfY29yZV9jYW5jZWwoZGV2LCB+MFVMKTtcbitcdG5ldGRldl93b3JrX2NhbmNlbChkZXYsIH4wVUwpO1xuK31cbitcbiBzdGF0aWMgdm9pZCBuZXRkZXZfd29ya19ydW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBldmVudHMsXG4gXHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgY29yZSlcbiB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjozMTowMS4wMDM4MTAxODNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzUyNjk4NTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0d29yayBEZXZpY2UgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBzZXZlcmFsIGNvcmUgbmV0d29ya2luZyBmaWxlczogYGluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhgLCBgbmV0L2NvcmUvZGV2LmNgLCBgbmV0L2NvcmUvZGV2LmhgLCBhbmQgYG5ldC9jb3JlL25ldGRldl93b3JrLmNgLiBTZWVtcyBsaWtlIHRoZSBtYWluIHRocnVzdCBpcyB0byBjaGFuZ2UgdGhlIHJldHVybiB0eXBlIG9mIGBuZXRkZXZfdHJhY2tlcl9mcmVlYCB0byBgaW50YC4gIFRoYXQncyBhIHByZXR0eSBsb3ctbGV2ZWwgY2hhbmdlLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLlxuXG5UaGUgcGF0Y2ggdGhlbiB1cGRhdGVzIGBuZXRkZXZfcHV0YCBhbmQgYG5ldGRldl9yZWZfcmVwbGFjZWAgdG8gY29uZGl0aW9uYWxseSAqbm90KiBjYWxsIGBfX2Rldl9wdXRgIGlmIGBuZXRkZXZfdHJhY2tlcl9mcmVlYCByZXR1cm5zIGAtRUlOVkFMYC4gIFRoYXQncyBpbnRlcmVzdGluZzsgaXQgc3VnZ2VzdHMgdGhhdCBgLUVJTlZBTGAgaXMgbm93IGEgdmFsaWQsIGVycm9yLWluZGljYXRpbmcgcmV0dXJuIGZyb20gYG5ldGRldl90cmFja2VyX2ZyZWVgIHdoaWNoLCBpZiB0cnVlLCBuZWVkcyBhIGNsb3NlIHJlYWQgb24gdGhlIGltcGxpY2F0aW9ucyBvZiBhIG5ldHdvcmsgZHJpdmVyIG5vIGxvbmdlciBjYWxsaW5nIHRoZSBkZXZpY2UgcHV0IGZ1bmN0aW9uLlxuXG5BZGRpdGlvbmFsbHksIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiwgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgLCBhbmQgY2FsbHMgaXQgd2l0aGluIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAuICBUaGF0J3Mgc2lnbmlmaWNhbnQhICBUaGlzIGxpa2VseSBtZWFucyB0aGV5J3JlIHRyeWluZyB0byBwcmV2ZW50IHNvbWUgcmFjZSBjb25kaXRpb24gb3IgZG91YmxlLWZyZWUgc2NlbmFyaW8gZHVyaW5nIG5ldHdvcmsgZGV2aWNlIHVucmVnaXN0cmF0aW9uLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCdzIGNhbmNlbGxpbmcgdG8gZnVsbHkgZ3Jhc3AgdGhlIGNoYW5nZS5cblxuTXkgbmV4dCBzdGVwcyBhcmUgY2xlYXI6ICBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRob3NlIGZ1bmN0aW9ucy4gIGBuZXRkZXZfcHV0YCBhbmQgYG5ldGRldl9yZWZfcmVwbGFjZWAgYXJlIGlubGluZSwgc28gdGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdDsgSSBqdXN0IGhhdmUgdG8gdHJhY2UgdGhlaXIgdXNhZ2UuICBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAgaXMgdGhlIG5ldyBraWQgb24gdGhlIGJsb2NrLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb24gYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBvdGhlciBjb3JlIGZ1bmN0aW9ucy4gQW5kIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgaXMgbW9kaWZpZWQsIHNvIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgZGlmZiB0byB1bmRlcnN0YW5kIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZS5cblxuRmluYWxseSwgSSBuZWVkIHRvIGNoZWNrIGhvdyBgbmV0L2NvcmUvbmV0ZGV2X3dvcmsuY2AgaXMgY29tcGlsZWQuICBJcyBpdCBhbHdheXMgaW5jbHVkZWQsIG9yIGlzIGl0IGd1YXJkZWQgYnkgc29tZSBjb25maWd1cmF0aW9uIGZsYWc/ICBJJ2xsIGNoZWNrIHRoZSBgbmV0L2NvcmUvTWFrZWZpbGVgIHRvIG1ha2Ugc3VyZSBJIGdldCBhIGdvb2QgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzExNywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjMxOjA2Ljc1NjUxMTk0OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTg1MDc1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRkZXZfd29yay5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlPTEyPW9iai15XFx0XFx0ICAgICArPSBkZXYubyBkZXZfYXBpLm8gZGV2X2FkZHJfbGlzdHMubyBkc3QubyBuZXRldmVudC5vIFxcXFxcXG4tLVxcbm5ldC9jb3JlL01ha2VmaWxlLTE1LVxcdFxcdFxcdGZpYl9ub3RpZmllci5vIHhkcC5vIGZsb3dfb2ZmbG9hZC5vIGdyby5vIFxcXFxcXG5uZXQvY29yZS9NYWtlZmlsZToxNjpcXHRcXHRcXHRuZXRkZXYtZ2VubC5vIG5ldGRldi1nZW5sLWdlbi5vIG5ldGRldl93b3JrLm8gZ3NvLm9cXG5uZXQvY29yZS9NYWtlZmlsZS0xNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MzE6MDYuODEyMzcwODg1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ0ODQ0NTEzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTmV0d29yayBEZXZpY2UgUmVmZXJlbmNlIENvdW50aW5nKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGUgYnVpbGQgc3lzdGVtLCBpdCdzIGNsZWFyIHRoYXQgYG5ldGRldl93b3JrLm9gIGFuZCBgZGV2Lm9gIGFyZSBhbHdheXMgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkLCB3aGljaCBtYWtlcyBzZW5zZS4gTm93LCBJIG5lZWQgdG8gZm9jdXMgbXkgZWZmb3J0cyBvbiBzcGVjaWZpYyBmdW5jdGlvbnMgdG8gdGVzdCwgYW5kIG5hcnJvdyBkb3duIHRoZSBhcmVhIHRvIHN0dWR5LlxuXG5MZXQncyBzZWUuLi4gYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YCBsb29rcyBwcm9taXNpbmcsIGFuZCBzbyBkb2VzIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYC4gVGhleSBzZWVtIGxpa2UgZ29vZCBzdGFydGluZyBwb2ludHMgZm9yIGRlYnVnZ2luZyBvciBwZXJmb3JtYW5jZSBhbmFseXNpcy4gSSBhbHNvIHNlZSBgbmV0ZGV2X3B1dGAgYW5kIGBuZXRkZXZfcmVmX3JlcGxhY2VgLCBidXQgdGhvc2UgYXJlIGlubGluZSwgc28gSSBjYW4ndCBkaXJlY3RseSB0YXJnZXQgdGhlbS4gSG93ZXZlciwgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCB0aGV5IGFyZSB1c2VkIGV4dGVuc2l2ZWx5LCBtZWFuaW5nIHRoZXkgd2lsbCBiZSByZWxldmFudCBkdXJpbmcgYW55IGFuYWx5c2lzLlxuXG5Ob3csIGEga2V5IGNvbnNpZGVyYXRpb24gZm9yIHRlc3RpbmcsIHRoZSBgQ09ORklHX05FVF9ERVZfUkVGQ05UX1RSQUNLRVJgIG9wdGlvbiBjb21lcyBpbnRvIHBsYXksIG9idmlvdXNseS4gSWYgaXQncyBlbmFibGVkLCBgbmV0ZGV2X3RyYWNrZXJfZnJlZWAgdXNlcyBgcmVmX3RyYWNrZXJfZnJlZWAuIElmIGl0J3MgKm5vdCogZW5hYmxlZCwgaXQgcmV0dXJucyAwLiBTbywgdG8gc3BlY2lmaWNhbGx5IHRyaWdnZXIgYW5kIHRlc3QgdGhlIGAtRUlOVkFMYCBlcnJvciBwYXRoLCBJJ2xsIG5lZWQgdG8gZW5hYmxlIGBDT05GSUdfTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUmAgaW4gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIFRoYXQgaXMga2V5IHRvIGlzb2xhdGluZyBhIGNlcnRhaW4gcHJvYmxlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAyNiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjozMToxMS4yNjA4MjAzMjJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY2MDk2Mjc1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWcuZGVidWctMi1cXG5uZXQvS2NvbmZpZy5kZWJ1ZzozOmNvbmZpZyBORVRfREVWX1JFRkNOVF9UUkFDS0VSXFxubmV0L0tjb25maWcuZGVidWctNC1cXHRib29sIFxcXCJFbmFibGUgbmV0IGRldmljZSByZWZjb3VudCB0cmFja2luZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTI6MzE6MTMuOTIxNzkwMTg4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM2NDQzNzk4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczpcblxuKipJbnZlc3RpZ2F0aW5nIE5FVF9ERVZfUkVGQ05UX1RSQUNLRVIgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbiB3aXRoIGBORVRfREVWX1JFRkNOVF9UUkFDS0VSYC4gVGhpcyBmZWF0dXJlLCBvciB3aGF0ZXZlciBpdCBpcywgc291bmRzIGltcG9ydGFudCBmb3IgZGVidWdnaW5nIG5ldHdvcmsgZGV2aWNlIHJlZmVyZW5jZSBjb3VudHMuIEknbSBndWVzc2luZyBpdCdzIHVzZWQgZm9yIHRyYWNraW5nIGRvd24gdGhvc2UgcGVza3kgbWVtb3J5IGxlYWtzIG9yIHByZW1hdHVyZSByZWxlYXNlcyB0aGF0IGNhbiBwbGFndWUgbmV0d29ya2luZyBjb2RlLlxuXG5NeSBmaXJzdCBwb3J0IG9mIGNhbGwgaXMgYWx3YXlzIHRoZSBgS2NvbmZpZ2AgZmlsZXMuIFNwZWNpZmljYWxseSwgSSdsbCBnbyBzdHJhaWdodCBmb3IgYG5ldC9LY29uZmlnLmRlYnVnYC4gSXQncyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBiZWNhdXNlIHRoYXQncyB3aGVyZSBkZWJ1ZyBvcHRpb25zIHVzdWFsbHkgcmVzaWRlLiBJJ2xsIHNlYXJjaCB0aGF0IGZpbGUgZm9yIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5FVF9ERVZfUkVGQ05UX1RSQUNLRVJgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSB0aGlzIHRoaW5nLCB3aGljaCBmZWF0dXJlcyBtdXN0IGJlIGVuYWJsZWQgZm9yIGl0IHRvIHdvcmsuIFRoYXQgZmlsZSB3aWxsIGdpdmUgbWUgdGhlIGxvd2Rvd24gb24gYW55IG90aGVyIGNvbmZpZyBzeW1ib2xzIHRoYXQgbmVlZCB0byBiZSBpbiBwbGFjZS4gVGhpcyB3aWxsIGdpdmUgbWUgYWxsIHRoZSBpbmZvcm1hdGlvbiB0aGF0IEkgcmVxdWlyZSBiZWZvcmUgSSBzdGFydCBkaWdnaW5nIGludG8gdGhlIGFjdHVhbCBjb2RlLiBGcm9tIHRoZXJlLCBJIGNhbiBnZXQgYSBiZXR0ZXIgc2Vuc2Ugb2YgaG93IGl0J3MgdXNlZCBhbmQgd2hhdCBpdCBpbnRlcmFjdHMgd2l0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYwNSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjMxOjE3LjI4NjIzMDUyMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5MDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9LY29uZmlnLmRlYnVnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRcXG4gICAzOlxcdGNvbmZpZyBORVRfREVWX1JFRkNOVF9UUkFDS0VSXFxuICAgNDpcXHRcXHRib29sIFxcXCJFbmFibGUgbmV0IGRldmljZSByZWZjb3VudCB0cmFja2luZ1xcXCJcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gREVCVUdfS0VSTkVMIFxcdTAwMjZcXHUwMDI2IFNUQUNLVFJBQ0VfU1VQUE9SVCBcXHUwMDI2XFx1MDAyNiBORVRcXG4gICA2OlxcdFxcdHNlbGVjdCBSRUZfVFJBQ0tFUlxcbiAgIDc6XFx0XFx0ZGVmYXVsdCBuXFxuICAgODpcXHRcXHRoZWxwXFxuICAgOTpcXHRcXHQgIEVuYWJsZSBkZWJ1Z2dpbmcgZmVhdHVyZSB0byB0cmFjayBkZXZpY2UgcmVmZXJlbmNlcy5cXG4gIDEwOlxcdFxcdCAgVGhpcyBhZGRzIG1lbW9yeSBhbmQgY3B1IGNvc3RzLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgTkVUX05TX1JFRkNOVF9UUkFDS0VSXFxuICAxMzpcXHRcXHRib29sIFxcXCJFbmFibGUgbmV0d29ya2luZyBuYW1lc3BhY2UgcmVmY291bnQgdHJhY2tpbmdcXFwiXFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIERFQlVHX0tFUk5FTCBcXHUwMDI2XFx1MDAyNiBTVEFDS1RSQUNFX1NVUFBPUlQgXFx1MDAyNlxcdTAwMjYgTkVUXFxuICAxNTpcXHRcXHRzZWxlY3QgUkVGX1RSQUNLRVJcXG4gIDE2OlxcdFxcdGRlZmF1bHQgblxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBFbmFibGUgZGVidWdnaW5nIGZlYXR1cmUgdG8gdHJhY2sgbmV0bnMgcmVmZXJlbmNlcy5cXG4gIDE5OlxcdFxcdCAgVGhpcyBhZGRzIG1lbW9yeSBhbmQgY3B1IGNvc3RzLlxcbiAgMjA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjMxOjE3LjI4NjMwMTA3MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNDAzNzA3NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQcm9wb3NlZCBDb25maWd1cmF0aW9uIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcHJvcG9zZWQgY29uZmlndXJhdGlvbiBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoYXQgYE5FVF9ERVZfUkVGQ05UX1RSQUNLRVJgIGhhcyBzb21lIGRlcGVuZGVuY2llcy4gSXQncyB0aWVkIHRvIGBERUJVR19LRVJORUxgLCBgU1RBQ0tUUkFDRV9TVVBQT1JUYCwgYW5kIGBORVRgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGdpdmVuIGl0cyBmdW5jdGlvbi4gV2UgbmVlZCB0byBlbnN1cmUgYE5FVF9ERVZfUkVGQ05UX1RSQUNLRVJgIGlzIHByb3Blcmx5IGludGVncmF0ZWQgaW50byBgRW5hYmxlQ29uZmlnc2AgdG8gZW5zdXJlIGl0J3MgZW5hYmxlZCB3aGVuIGl0IG5lZWRzIHRvIGJlLiBUaGF0J3MgdGhlIGJhc2VsaW5lLCB0aGUgZ3JvdW5kd29yayB0aGF0IG5lZWRzIHRvIGJlIGxhaWQgZmlyc3QuXG5cbk5vdywgdGhlIGNvZGUgY2hhbmdlcy4gVGhlIHBhdGNoIG1vZGlmaWVzIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgdG8gaW5jbHVkZSBhIGNhbGwgdG8gYG5ldGRldl93b3JrX2NhbmNlbF9hbGwoZGV2KWAuIFRoYXQncyBhIGdvb2QgYWRkaXRpb24sIGFuZCBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvZGUgcGF0aC4gSXQncyBhIHN0YW5kYXJkIGNsZWFudXAgb3BlcmF0aW9uLiBUaGVuIHRoZXJlIGFyZSBjaGFuZ2VzIHRvIGBuZXRkZXZfcHV0YCBhbmQgYG5ldGRldl9yZWZfcmVwbGFjZWAgd2hlcmUgYF9fZGV2X3B1dGAgaXMgc2tpcHBlZCBpZiBgbmV0ZGV2X3RyYWNrZXJfZnJlZWAgcmV0dXJucyBgLUVJTlZBTGAuIEFub3RoZXIgZnVuY3Rpb25hbCBjaGFuZ2UgYW5kIGFnYWluLCBwZXJmZWN0bHkgcmVhY2hhYmxlLiBJIGNhbiBzZWUgdGhlIGludGVudCBoZXJlOiBncmFjZWZ1bCBoYW5kbGluZyBvZiByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzLlxuXG5UaGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb24gYXJlIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgYW5kIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYC4gSSBuZWVkIHRvIGNvbmZpcm0gc29tZXRoaW5nIHF1aWNrbHkgYWJvdXQgYHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5YDogSXMgaXQgYSBzdGF0aWMgZnVuY3Rpb24/IFRoYXQncyBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UgYW5kIGlmIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cyBJIG5lZWQgdG8gY29uc2lkZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNzEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxMjozMToyMS41MjY2NzUzNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzkxOTM5MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvZGV2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvZGV2LmM9MTIzNjQ9Ym9vbCB1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZWQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTEyMzY5LVxcbm5ldC9jb3JlL2Rldi5jOjEyMzcwOnZvaWQgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnkoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCxcXG5uZXQvY29yZS9kZXYuYy0xMjM3MS1cXHRcXHRcXHRcXHQgICAgICB1MzIgcG9ydGlkLCBjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saClcXG4tLVxcbm5ldC9jb3JlL2Rldi5jPTEyNTA1PXZvaWQgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxcbm5ldC9jb3JlL2Rldi5jLTEyNTA2LXtcXG5uZXQvY29yZS9kZXYuYzoxMjUwNzpcXHR1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeShoZWFkLCAwLCBOVUxMKTtcXG5uZXQvY29yZS9kZXYuYy0xMjUwOC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjMxOjIxLjYwNTg3NjAwNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODI5MDk3MzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIER5bmFtaWMgTmF0dXJlIG9mIHRoZSBQcm9ibGVtKipcblxuUmlnaHQsIHNvIHRoZSBzaXR1YXRpb24gaXNuJ3QgZml4ZWQsIGl0J3Mgbm90IGEgc25hcHNob3QuIFRoYXQgbWVhbnMgSSBuZWVkIHRvIGFwcHJvYWNoIHRoaXMgd2l0aCB0aGF0IGluIG1pbmQsIG5vdCBhc3N1bWluZyBzb21ldGhpbmcgY29uc3RhbnQuIEkgbmVlZCB0byBsb29rIGZvciBhbnkgcG9pbnRzIHRoYXQgc2hpZnQgYW5kIG1vdmUuIExldCdzIG1ha2Ugc3VyZSB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIHNvbWV0aGluZyB0cmFuc2llbnQgaGVyZS4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gZGV0ZXJtaW5lIHdoYXQgaXMgdGhlIHByb3BlciBkaXJlY3Rpb24gdG8gdGFrZS5cblxuTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAuIFRoaXMgaXMgd2hlcmUgSSdsbCBiZWdpbiB0byBhZGRyZXNzIHRoZSBwcm9ibGVtLiBMZXQgbWUgc2VlIHdoZXJlIHRoYXQgbGFuZHMuIEkgbmVlZCB0byBiZSBzdXJlIHRoZSBzeXN0ZW0gaXMgYmVoYXZpbmcgYXMgSSBleHBlY3QsIGlmIHNvbWV0aGluZyBzaG91bGQgYmUgcmVtb3ZlZCwgaXQgc2hvdWxkIGJlIGRvbmUgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTkzMCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjMxOjI0LjQzNDk3NzIxMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkyOTA3NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0ZGV2X3dvcmtfY2FuY2VsX2FsbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9uZXRkZXZfd29yay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL25ldGRldl93b3JrLmM9OTc9X19uZXRkZXZfd29ya19jb3JlX2NhbmNlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIG1hc2spXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTEwNS0gKi9cXG5uZXQvY29yZS9uZXRkZXZfd29yay5jOjEwNjp2b2lkIG5ldGRldl93b3JrX2NhbmNlbF9hbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvY29yZS9uZXRkZXZfd29yay5jLTEwNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjMxOjI0LjUwNDI3MzI2N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODc5NDI3MDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBhbiBleHBlcnQgaW4gbXkgZmllbGQ6XG5cbioqRnV6emluZyBEaXJlY3Rpb246IE5ldHdvcmsgRGV2aWNlIFdvcmsgQ2FuY2VsbGF0aW9uKipcblxuT2theSwgdGhpcyBpc24ndCBhIHN0YXRpYyBzaXR1YXRpb247IHRoaW5ncyBhcmUgZXZvbHZpbmcuIE15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IGBXb3J0aEZ1enppbmdgIGlzIGluZGVlZCB0cnVlIGluIHRoaXMgY29udGV4dC4gTGV0J3MgZGlnIGRlZXBlci4gVGhlIGluaXRpYWwgbGlzdCBvZiBpbnRlcmVzdGluZyBzeW1ib2xzIGxvb2tzIHNvbGlkOiBgdW5yZWdpc3Rlcl9uZXRkZXZpY2VfbWFueV9ub3RpZnlgIGFuZCBgbmV0ZGV2X3dvcmtfY2FuY2VsX2FsbGAgaGF2ZSBmbGFnZ2VkIG15IGF0dGVudGlvbi4gSSdtIGFsc28gc2VlaW5nIGBORVRfREVWX1JFRkNOVF9UUkFDS0VSYCBlbmFibGVkIHdoaWNoIGlzIGEgaGVscGZ1bCBjb25maWcuXG5cbkEgcXVpY2sgc2FuaXR5IGNoZWNrIGlzIGFsd2F5cyB3aXNlLiBJIHdhbnQgdG8gdmVyaWZ5IGlmIGBuZXRkZXZfd29ya19jYW5jZWxfYWxsYCBpcyBleHBvcnRlZC4gV2hpbGUgU3l6a2FsbGVyIGRvZXNuJ3QgKnJlcXVpcmUqIGV4cGxpY2l0IGV4cG9ydHMgZm9yIG1vZHVsYXIgZnV6emluZywga25vd2luZyB0aGUgZXhwb3J0IHN0YXR1cyBpcyB2YWx1YWJsZSBpbmZvcm1hdGlvbi4gS25vd2luZyBpZiBpdCBjYW4gYmUgcmVhY2hlZCB2aWEgbW9kdWxlcyBoZWxwcyBtZSBwcmlvcml0aXplIGFuZCB0aGluayB0aHJvdWdoIHBvdGVudGlhbCBmdXp6aW5nIHN0cmF0ZWdpZXMuIFJlZ2FyZGxlc3MsIHRoZXNlIGNoYW5nZXMgYXJlIGRlZXBseSBlbWJlZGRlZCB3aXRoaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdWJzeXN0ZW0g4oCTIGEgaGlnaGx5IGNvbXBsZXggYW5kIGFjdGl2ZSBhcmVhIOKAkyBzbyB0aGV5J3JlIGRlZmluaXRlbHkgcmVhY2hhYmxlIG9uZSB3YXkgb3IgYW5vdGhlci5cblxuVGltZSB0byBzeW50aGVzaXplIHRoaXMgaW50byBhIGNvbmNyZXRlIHBsYW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNjgsIk91dHB1dFRva2VucyI6MTc2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDEyOjMxOjI5LjM4MzcwMzI0N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTE1MDk2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5XCIsXG4gICAgXCJuZXRkZXZfd29ya19jYW5jZWxfYWxsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBuZXR3b3JraW5nIGRldmljZSB0ZWFyZG93biBsb2dpYyBieSBhZGRpbmcgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgIHRvIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgYW5kIGNoYW5naW5nIGBuZXRkZXZfcHV0YCBhbmQgYG5ldGRldl9yZWZfcmVwbGFjZWAgdG8gc2tpcCBgX19kZXZfcHV0YCBpZiBgbmV0ZGV2X3RyYWNrZXJfZnJlZWAgcmV0dXJucyBgLUVJTlZBTGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGNvcmUgbmV0d29yayBkZXZpY2UgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgYW5kIHNob3VsZCBiZSBmdXp6ZWQuIFRoZSBgLUVJTlZBTGAgcGF0aCByZXF1aXJlcyBgQ09ORklHX05FVF9ERVZfUkVGQ05UX1RSQUNLRVJgIHRvIGJlIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RFVl9SRUZDTlRfVFJBQ0tFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnlfbm90aWZ5XCIsXG4gICAgXCJuZXRkZXZfd29ya19jYW5jZWxfYWxsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBuZXR3b3JraW5nIGRldmljZSB0ZWFyZG93biBsb2dpYyBieSBhZGRpbmcgYG5ldGRldl93b3JrX2NhbmNlbF9hbGxgIHRvIGB1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55X25vdGlmeWAgYW5kIGNoYW5naW5nIGBuZXRkZXZfcHV0YCBhbmQgYG5ldGRldl9yZWZfcmVwbGFjZWAgdG8gc2tpcCBgX19kZXZfcHV0YCBpZiBgbmV0ZGV2X3RyYWNrZXJfZnJlZWAgcmV0dXJucyBgLUVJTlZBTGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGNvcmUgbmV0d29yayBkZXZpY2UgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgYW5kIHNob3VsZCBiZSBmdXp6ZWQuIFRoZSBgLUVJTlZBTGAgcGF0aCByZXF1aXJlcyBgQ09ORklHX05FVF9ERVZfUkVGQ05UX1RSQUNLRVJgIHRvIGJlIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwvcsr[1] Phase: Succeeded StartedAt: 2026-08-01 12:31:40 +0000 UTC FinishedAt: 2026-08-01 12:31:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-01 12:31:40 +0000 UTC FinishedAt: 2026-08-01 12:31:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[2] Phase: Succeeded StartedAt: 2026-08-01 12:31:40 +0000 UTC FinishedAt: 2026-08-01 16:19:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-01 12:31:41 +0000 UTC FinishedAt: 2026-08-01 16:19:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-01 12:31:41 +0000 UTC FinishedAt: 2026-08-01 12:31:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-01 12:31:41 +0000 UTC FinishedAt: 2026-08-01 12:31:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},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-workflowwvcsr/series-workflowwvcsr-convert-artifact-2993070877/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-01 12:31:51 +0000 UTC FinishedAt: 2026-08-01 12:53:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-01 12:31:51 +0000 UTC FinishedAt: 2026-08-01 12: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:*8c1293b8-96a6-4c9d-98ff-a326efe96093,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-workflowwvcsr/series-workflowwvcsr-convert-artifact-2993070877/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": "52658a56-e020-437b-926f-9ca563dae14d", "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-workflowwvcsr/series-workflowwvcsr-build-action-3004896339/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-01 12:31:51 +0000 UTC FinishedAt: 2026-08-01 12:53:25 +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:*8c1293b8-96a6-4c9d-98ff-a326efe96093,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-workflowwvcsr/series-workflowwvcsr-convert-artifact-2993070877/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": "52658a56-e020-437b-926f-9ca563dae14d", "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-workflowwvcsr/series-workflowwvcsr-build-action-3004896339/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-01 12:53:35 +0000 UTC FinishedAt: 2026-08-01 12:53:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-01 12:53:35 +0000 UTC FinishedAt: 2026-08-01 12:53:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-01 12:53:35 +0000 UTC FinishedAt: 2026-08-01 12:54:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-01 12:53:35 +0000 UTC FinishedAt: 2026-08-01 12:53:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},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-workflowwvcsr/series-workflowwvcsr-convert-artifact-3821823224/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-01 12:54:11 +0000 UTC FinishedAt: 2026-08-01 12:56:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-01 12:54:11 +0000 UTC FinishedAt: 2026-08-01 12:56:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*52658a56-e020-437b-926f-9ca563dae14d,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-workflowwvcsr/series-workflowwvcsr-build-action-3004896339/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-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-01 12:56:11 +0000 UTC FinishedAt: 2026-08-01 12:56:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-01 12:56:11 +0000 UTC FinishedAt: 2026-08-01 12:56:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-01 12:56:11 +0000 UTC FinishedAt: 2026-08-01 13:15:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-01 12:56:11 +0000 UTC FinishedAt: 2026-08-01 13:15:43 +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:*8c1293b8-96a6-4c9d-98ff-a326efe96093,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-workflowwvcsr/series-workflowwvcsr-convert-artifact-3821823224/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": "3e8aa44b-3b41-4c7f-9968-65cb36135534", "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-workflowwvcsr/series-workflowwvcsr-build-action-1836452324/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-01 12:56:11 +0000 UTC FinishedAt: 2026-08-01 13:15:33 +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:*8c1293b8-96a6-4c9d-98ff-a326efe96093,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-workflowwvcsr/series-workflowwvcsr-convert-artifact-3821823224/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": "3e8aa44b-3b41-4c7f-9968-65cb36135534", "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-workflowwvcsr/series-workflowwvcsr-build-action-1836452324/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-01 13:15:43 +0000 UTC FinishedAt: 2026-08-01 13:15:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-01 13:15:43 +0000 UTC FinishedAt: 2026-08-01 13:15:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-01 13:15:43 +0000 UTC FinishedAt: 2026-08-01 13:17:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-01 13:15:43 +0000 UTC FinishedAt: 2026-08-01 13:17:30 +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:*3e8aa44b-3b41-4c7f-9968-65cb36135534,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-workflowwvcsr/series-workflowwvcsr-build-action-1836452324/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-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-01 13:17:39 +0000 UTC FinishedAt: 2026-08-01 16:19:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-01 13:17:39 +0000 UTC FinishedAt: 2026-08-01 16:19:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"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:*52658a56-e020-437b-926f-9ca563dae14d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3e8aa44b-3b41-4c7f-9968-65cb36135534,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-workflowwvcsr/series-workflowwvcsr-build-action-3004896339/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-workflowwvcsr/series-workflowwvcsr-build-action-1836452324/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-01 13:17:39 +0000 UTC FinishedAt: 2026-08-01 13:17:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-01 13:17:39 +0000 UTC FinishedAt: 2026-08-01 13:17:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"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-workflowwvcsr/series-workflowwvcsr-convert-artifact-4136899409/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-01 13:17:39 +0000 UTC FinishedAt: 2026-08-01 13:17:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-01 13:17:39 +0000 UTC FinishedAt: 2026-08-01 13:17:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-01 13:17:39 +0000 UTC FinishedAt: 2026-08-01 13:17:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-01 13:17:49 +0000 UTC FinishedAt: 2026-08-01 16:19:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcsr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unregister_netdevice_many_notify","netdev_work_cancel_all"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEV_REFCNT_TRACKER"],"series_id":"cf4a6393-5a6e-4df2-af94-53e457275dbe","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-01 13:17:49 +0000 UTC FinishedAt: 2026-08-01 16:19:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*52658a56-e020-437b-926f-9ca563dae14d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3e8aa44b-3b41-4c7f-9968-65cb36135534,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-workflowwvcsr/series-workflowwvcsr-build-action-3004896339/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-workflowwvcsr/series-workflowwvcsr-build-action-1836452324/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-workflowwvcsr/series-workflowwvcsr-convert-artifact-4136899409/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,}