Name: series-workflowbhgmc Phase: Succeeded StartedAt: 2026-07-02 22:45:05 +0000 UTC FinishedAt: 2026-07-03 03:03:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[0] Phase: Succeeded StartedAt: 2026-07-02 22:45:05 +0000 UTC FinishedAt: 2026-07-02 22:55:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 22:45:05 +0000 UTC FinishedAt: 2026-07-02 22:55:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "08bc5b2636afcbadc31bb17243eec094e048bd79", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DSA", "NET_MEDIATEK_SOC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "08bc5b2636afcbadc31bb17243eec094e048bd79", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DSA", "NET_MEDIATEK_SOC" ], "series_id": "d3487729-a233-4f9d-bbe6-18a85ca5338f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "netif_close_many", "call_netdevice_unregister_notifiers", "rtnl_configure_link", "rtnl_newlink_create", "dsa_switch_shutdown", "dsa_user_netdevice_event", "mtk_eth_set_dma_device" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9EU0EmIzM0OywKICAgICYjMzQ7TkVUX01FRElBVEVLX1NPQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25ldGlmX2Nsb3NlX21hbnkmIzM0OywKICAgICYjMzQ7Y2FsbF9uZXRkZXZpY2VfdW5yZWdpc3Rlcl9ub3RpZmllcnMmIzM0OywKICAgICYjMzQ7cnRubF9jb25maWd1cmVfbGluayYjMzQ7LAogICAgJiMzNDtydG5sX25ld2xpbmtfY3JlYXRlJiMzNDssCiAgICAmIzM0O2RzYV9zd2l0Y2hfc2h1dGRvd24mIzM0OywKICAgICYjMzQ7ZHNhX3VzZXJfbmV0ZGV2aWNlX2V2ZW50JiMzNDssCiAgICAmIzM0O210a19ldGhfc2V0X2RtYV9kZXZpY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tpbmcgYmVoYXZpb3Igb2YgbmV0ZGV2aWNlIGV2ZW50cywgc3BlY2lmaWNhbGx5IHRha2luZyB0aGUgbmV0ZGV2X2xvY2tfb3BzIGxvY2sgYXJvdW5kIE5FVERFVl9ET1dOIGFuZCBORVRERVZfR09JTkdfRE9XTiBldmVudHMsIGFuZCB1cGRhdGluZyBzZXZlcmFsIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbnMgYW5kIGRyaXZlcnMgdG8gY29tcGx5IHdpdGggdGhpcyBuZXcgbG9ja2luZyByZXF1aXJlbWVudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2sgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIGRlYWRsb2NrcyBvciBsb2NrZGVwIHdhcm5pbmdzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzAyNjRkMmNjMDg1ZGY1NjNkMTJhYjg0YTk5NjM0MjQ4NGFhNjJiZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMjI6NTQ6NTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0XG5pbmRleCBkMmEyMzhmOGNjOGI5MS4uZGI3MWQ0MjgzMDMyYTMgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdFxuQEAgLTQyMSwxMCAmIzQzOzQyMSwxNyBAQCBydW5uaW5nIHVuZGVyIHRoZSBsb2NrOlxuICogYGBORVRERVZfQ0hBTkdFTkFNRWBgXG4gKiBgYE5FVERFVl9SRUdJU1RFUmBgXG4gKiBgYE5FVERFVl9VUGBgXG4mIzQzOyogYGBORVRERVZfRE9XTmBgXG4mIzQzOyogYGBORVRERVZfR09JTkdfRE9XTmBgXG4gXG4gVGhlIGZvbGxvd2luZyBub3RpZmllcnMgYXJlIHJ1bm5pbmcgd2l0aG91dCB0aGUgbG9jazpcbiAqIGBgTkVUREVWX1VOUkVHSVNURVJgYFxuIFxuJiM0MztNYW55IFNXIGRldmljZXMgKHVwcGVycykgY2F0Y2ggdGhlaXIgbG93ZXImIzM5O3MgYGBORVRERVZfVU5SRUdJU1RFUmBgXG4mIzQzO2V2ZW50cyBhbmQgbWF5IGludGVyYWN0IHdpdGggdGhlbSB2aWEgYGBkZXZfKigpYGAgaGFuZGxlcnMsIHdoaWNoIHRha2VcbiYjNDM7dGhlIGluc3RhbmNlIGxvY2suIFVudGlsIHdlIGNvbnZlcnQgdGhlc2UgZGV2aWNlcyB0byBgYG5ldGlmXyooKWBgIHZhcmlhbnRzLFxuJiM0MztgYE5FVERFVl9VTlJFR0lTVEVSYGAgc3RheXMgdW5sb2NrZWQuXG4mIzQzO1xuIFRoZXJlIGFyZSBubyBjbGVhciBleHBlY3RhdGlvbnMgZm9yIHRoZSByZW1haW5pbmcgbm90aWZpZXJzLiBOb3RpZmllcnMgbm90IG9uXG4gdGhlIGxpc3QgbWF5IHJ1biB3aXRoIG9yIHdpdGhvdXQgdGhlIGluc3RhbmNlIGxvY2ssIHBvdGVudGlhbGx5IGV2ZW4gaW52b2tpbmdcbiB0aGUgc2FtZSBub3RpZmllciB0eXBlIHdpdGggYW5kIHdpdGhvdXQgdGhlIGxvY2sgZnJvbSBkaWZmZXJlbnQgY29kZSBwYXRocy5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xuaW5kZXggNWQyOTFlNTBhNDdiYjkuLmZlNzYxMGM0MmU1ZDM5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xuQEAgLTI2LDYgJiM0MzsyNiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYml0ZmllbGQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9kc2EuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9kc3RfbWV0YWRhdGEuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZGV2X2xvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9wYWdlX3Bvb2wvaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZ2VuYWxsb2MuaFx1MDAzZVxuIFxuQEAgLTUwMzAsMTAgJiM0Mzs1MDMxLDE0IEBAIHZvaWQgbXRrX2V0aF9zZXRfZG1hX2RldmljZShzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlICpkbWFfZGV2KVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRldi1cdTAwM2VjbG9zZV9saXN0LCBcdTAwMjZkZXZfbGlzdCk7XG4mIzQzO1x0XHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcbiBcdH1cbiBcbiBcdG5ldGlmX2Nsb3NlX21hbnkoXHUwMDI2ZGV2X2xpc3QsIGZhbHNlKTtcbiBcbiYjNDM7XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgXHUwMDI2ZGV2X2xpc3QsIGNsb3NlX2xpc3QpXG4mIzQzO1x0XHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xuJiM0MztcbiBcdGV0aC1cdTAwM2VkbWFfZGV2ID0gZG1hX2RldjtcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXYsIHRtcCwgXHUwMDI2ZGV2X2xpc3QsIGNsb3NlX2xpc3QpIHtcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jXG5pbmRleCA0YjNkNWNmZGY2ZTAwZi4uNzE0ZDA1MjgzNTAwOGMgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9kZXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvZGV2LmNcbkBAIC0xODAyLDYgJiM0MzsxODAyLDcgQEAgdm9pZCBuZXRpZl9jbG9zZV9tYW55KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsIGJvb2wgdW5saW5rKVxuIFx0X19kZXZfY2xvc2VfbWFueShoZWFkKTtcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXYsIHRtcCwgaGVhZCwgY2xvc2VfbGlzdCkge1xuJiM0MztcdFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3BzX2NvbXBhdChkZXYpO1xuIFx0XHRydG1zZ19pZmluZm8oUlRNX05FV0xJTkssIGRldiwgSUZGX1VQIHwgSUZGX1JVTk5JTkcsIEdGUF9LRVJORUwsIDAsIE5VTEwpO1xuIFx0XHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX0RPV04sIGRldik7XG4gXHRcdGlmICh1bmxpbmspXG5AQCAtMTkxMiw5ICYjNDM7MTkxMywxMSBAQCBzdGF0aWMgdm9pZCBjYWxsX25ldGRldmljZV91bnJlZ2lzdGVyX25vdGlmaWVycyhzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxuIFx0XHRcdFx0XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuIFx0aWYgKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1VQKSB7XG4mIzQzO1x0XHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcbiBcdFx0Y2FsbF9uZXRkZXZpY2Vfbm90aWZpZXIobmIsIE5FVERFVl9HT0lOR19ET1dOLFxuIFx0XHRcdFx0XHRkZXYpO1xuIFx0XHRjYWxsX25ldGRldmljZV9ub3RpZmllcihuYiwgTkVUREVWX0RPV04sIGRldik7XG4mIzQzO1x0XHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xuIFx0fVxuIFx0Y2FsbF9uZXRkZXZpY2Vfbm90aWZpZXIobmIsIE5FVERFVl9VTlJFR0lTVEVSLCBkZXYpO1xuIH1cbkBAIC05Nzg1LDYgJiM0Mzs5Nzg4LDggQEAgdm9pZCBfX2Rldl9ub3RpZnlfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG9sZF9mbGFncyxcbiB7XG4gXHR1bnNpZ25lZCBpbnQgY2hhbmdlcyA9IGRldi1cdTAwM2VmbGFncyBeIG9sZF9mbGFncztcbiBcbiYjNDM7XHRuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGRldik7XG4mIzQzO1xuIFx0aWYgKGdjaGFuZ2VzKVxuIFx0XHRydG1zZ19pZmluZm8oUlRNX05FV0xJTkssIGRldiwgZ2NoYW5nZXMsIEdGUF9BVE9NSUMsIHBvcnRpZCwgbmxoKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9sb2NrX2RlYnVnLmMgYi9uZXQvY29yZS9sb2NrX2RlYnVnLmNcbmluZGV4IDhhODFjNTQzMDcwNTM2Li5hYmM0YzAwNzI4YjE2ZiAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL2xvY2tfZGVidWcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvbG9ja19kZWJ1Zy5jXG5AQCAtMjQsMTUgJiM0MzsyNCwxNSBAQCBpbnQgbmV0ZGV2X2RlYnVnX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsXG4gXHRjYXNlIE5FVERFVl9DSEFOR0U6XG4gXHRjYXNlIE5FVERFVl9SRUdJU1RFUjpcbiBcdGNhc2UgTkVUREVWX1VQOlxuJiM0MztcdGNhc2UgTkVUREVWX0RPV046XG4mIzQzO1x0Y2FzZSBORVRERVZfR09JTkdfRE9XTjpcbiBcdFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3BzX2NvbXBhdChkZXYpO1xuIFx0XHRmYWxsdGhyb3VnaDtcbi1cdGNhc2UgTkVUREVWX0RPV046XG4gXHRjYXNlIE5FVERFVl9SRUJPT1Q6XG4gXHRjYXNlIE5FVERFVl9VTlJFR0lTVEVSOlxuIFx0Y2FzZSBORVRERVZfQ0hBTkdFTVRVOlxuIFx0Y2FzZSBORVRERVZfQ0hBTkdFQUREUjpcbiBcdGNhc2UgTkVUREVWX1BSRV9DSEFOR0VBRERSOlxuLVx0Y2FzZSBORVRERVZfR09JTkdfRE9XTjpcbiBcdGNhc2UgTkVUREVWX0ZFQVRfQ0hBTkdFOlxuIFx0Y2FzZSBORVRERVZfQk9ORElOR19GQUlMT1ZFUjpcbiBcdGNhc2UgTkVUREVWX1BSRV9VUDpcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9ydG5ldGxpbmsuYyBiL25ldC9jb3JlL3J0bmV0bGluay5jXG5pbmRleCAxMmFhM2FhMTY4OGIxMy4uMWI3ZDZmNmI4YjY4NjggMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9ydG5ldGxpbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvcnRuZXRsaW5rLmNcbkBAIC0zNjYwLDE0ICYjNDM7MzY2MCwxNiBAQCBpbnQgcnRubF9jb25maWd1cmVfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgaWZpbmZvbXNnICppZm0sXG4gXHRcdFx0dTMyIHBvcnRpZCwgY29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgpXG4ge1xuIFx0dW5zaWduZWQgaW50IG9sZF9mbGFncywgY2hhbmdlZDtcbi1cdGludCBlcnI7XG4mIzQzO1x0aW50IGVyciA9IDA7XG4mIzQzO1xuJiM0MztcdG5ldGRldl9sb2NrX29wcyhkZXYpO1xuIFxuIFx0b2xkX2ZsYWdzID0gZGV2LVx1MDAzZWZsYWdzO1xuIFx0aWYgKGlmbSBcdTAwMjZcdTAwMjYgKGlmbS1cdTAwM2VpZmlfZmxhZ3MgfHwgaWZtLVx1MDAzZWlmaV9jaGFuZ2UpKSB7XG4gXHRcdGVyciA9IF9fZGV2X2NoYW5nZV9mbGFncyhkZXYsIHJ0bmxfZGV2X2NvbWJpbmVfZmxhZ3MoZGV2LCBpZm0pLFxuIFx0XHRcdFx0XHQgTlVMTCk7XG4gXHRcdGlmIChlcnIgXHUwMDNjIDApXG4tXHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdFx0Z290byBvdXQ7XG4gXHR9XG4gXG4gXHRjaGFuZ2VkID0gb2xkX2ZsYWdzIF4gZGV2LVx1MDAzZWZsYWdzO1xuQEAgLTM2NzcsNyAmIzQzOzM2NzksMTAgQEAgaW50IHJ0bmxfY29uZmlndXJlX2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGlmaW5mb21zZyAqaWZtLFxuIFx0fVxuIFxuIFx0X19kZXZfbm90aWZ5X2ZsYWdzKGRldiwgb2xkX2ZsYWdzLCBjaGFuZ2VkLCBwb3J0aWQsIG5saCk7XG4tXHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO291dDpcbiYjNDM7XHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xuJiM0MztcdHJldHVybiBlcnI7XG4gfVxuIEVYUE9SVF9TWU1CT0wocnRubF9jb25maWd1cmVfbGluayk7XG4gXG5AQCAtMzkxOCwyMiAmIzQzOzM5MjMsMjAgQEAgc3RhdGljIGludCBydG5sX25ld2xpbmtfY3JlYXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpZmluZm9tc2cgKmlmbSxcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG4gXG4tXHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcbi1cbiBcdGVyciA9IHJ0bmxfY29uZmlndXJlX2xpbmsoZGV2LCBpZm0sIHBvcnRpZCwgbmxoKTtcbiBcdGlmIChlcnIgXHUwMDNjIDApXG4gXHRcdGdvdG8gb3V0X3VucmVnaXN0ZXI7XG4gXHRpZiAodGJbSUZMQV9NQVNURVJdKSB7XG4mIzQzO1x0XHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcbiBcdFx0ZXJyID0gZG9fc2V0X21hc3RlcihkZXYsIG5sYV9nZXRfdTMyKHRiW0lGTEFfTUFTVEVSXSksIGV4dGFjayk7XG4mIzQzO1x0XHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdGdvdG8gb3V0X3VucmVnaXN0ZXI7XG4gXHR9XG4gXG4tXHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xuIG91dDpcbiBcdHJldHVybiBlcnI7XG4gb3V0X3VucmVnaXN0ZXI6XG4tXHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xuIFx0aWYgKG9wcy1cdTAwM2VuZXdsaW5rKSB7XG4gXHRcdExJU1RfSEVBRChsaXN0X2tpbGwpO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvZHNhLmMgYi9uZXQvZHNhL2RzYS5jXG5pbmRleCA5Y2I3MzJmNmIxZTNlZC4uZGE1M2E2NjZkNGI4MmUgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL2RzYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL2RzYS5jXG5AQCAtMTgsNiAmIzQzOzE4LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbmV0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHNhX3N0dWJzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbmV0L25ldGRldl9sb2NrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvc2NoX2dlbmVyaWMuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O2NvbmR1aXQuaFwmIzM0O1xuQEAgLTE2MjAsMTAgJiM0MzsxNjIxLDIzIEBAIHZvaWQgZHNhX3N3aXRjaF9zaHV0ZG93bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4gXG4gXHRydG5sX2xvY2soKTtcbiBcbi1cdGRzYV9zd2l0Y2hfZm9yX2VhY2hfY3B1X3BvcnQoZHAsIGRzKVxuLVx0XHRsaXN0X2FkZChcdTAwMjZkcC1cdTAwM2Vjb25kdWl0LVx1MDAzZWNsb3NlX2xpc3QsIFx1MDAyNmNsb3NlX2xpc3QpO1xuJiM0MztcdGRzYV9zd2l0Y2hfZm9yX2VhY2hfY3B1X3BvcnQoZHAsIGRzKSB7XG4mIzQzO1x0XHRpZiAoIShkcC1cdTAwM2Vjb25kdWl0LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfVVApKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZHAtXHUwMDNlY29uZHVpdC1cdTAwM2VjbG9zZV9saXN0LCBcdTAwMjZjbG9zZV9saXN0KTtcbiYjNDM7XHRcdG5ldGRldl9sb2NrX29wcyhkcC1cdTAwM2Vjb25kdWl0KTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdG5ldGlmX2Nsb3NlX21hbnkoXHUwMDI2Y2xvc2VfbGlzdCwgZmFsc2UpO1xuIFxuLVx0bmV0aWZfY2xvc2VfbWFueShcdTAwMjZjbG9zZV9saXN0LCB0cnVlKTtcbiYjNDM7XHR3aGlsZSAoIWxpc3RfZW1wdHkoXHUwMDI2Y2xvc2VfbGlzdCkpIHtcbiYjNDM7XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpjb25kdWl0O1xuJiM0MztcbiYjNDM7XHRcdGNvbmR1aXQgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNmNsb3NlX2xpc3QsIHN0cnVjdCBuZXRfZGV2aWNlLFxuJiM0MztcdFx0XHRcdFx0ICAgY2xvc2VfbGlzdCk7XG4mIzQzO1x0XHRuZXRkZXZfdW5sb2NrX29wcyhjb25kdWl0KTtcbiYjNDM7XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2Y29uZHVpdC1cdTAwM2VjbG9zZV9saXN0KTtcbiYjNDM7XHR9XG4gXG4gXHRkc2Ffc3dpdGNoX2Zvcl9lYWNoX3VzZXJfcG9ydChkcCwgZHMpIHtcbiBcdFx0Y29uZHVpdCA9IGRzYV9wb3J0X3RvX2NvbmR1aXQoZHApO1xuZGlmZiAtLWdpdCBhL25ldC9kc2EvdXNlci5jIGIvbmV0L2RzYS91c2VyLmNcbmluZGV4IDg3MDRjMWEzYTViNzQxLi44ZWE0NzQ0NGQ2ZDU0NyAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdXNlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3VzZXIuY1xuQEAgLTEzLDYgJiM0MzsxMyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbmV0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZGlvLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbmV0L25ldGRldl9sb2NrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvcnRuZXRsaW5rLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvcGt0X2Nscy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3NlbGZ0ZXN0cy5oXHUwMDNlXG5AQCAtMzYwMCwxMCAmIzQzOzM2MDEsMjQgQEAgc3RhdGljIGludCBkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbiBcdFx0XHRpZiAoZHAtXHUwMDNlY3B1X2RwICE9IGNwdV9kcClcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuLVx0XHRcdGxpc3RfYWRkKFx1MDAyNmRwLVx1MDAzZXVzZXItXHUwMDNlY2xvc2VfbGlzdCwgXHUwMDI2Y2xvc2VfbGlzdCk7XG4mIzQzO1x0XHRcdGlmICghKGRwLVx1MDAzZXVzZXItXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9VUCkpXG4mIzQzO1x0XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRwLVx1MDAzZXVzZXItXHUwMDNlY2xvc2VfbGlzdCwgXHUwMDI2Y2xvc2VfbGlzdCk7XG4mIzQzO1x0XHRcdG5ldGRldl9sb2NrX29wcyhkcC1cdTAwM2V1c2VyKTtcbiBcdFx0fVxuIFxuLVx0XHRuZXRpZl9jbG9zZV9tYW55KFx1MDAyNmNsb3NlX2xpc3QsIHRydWUpO1xuJiM0MztcdFx0bmV0aWZfY2xvc2VfbWFueShcdTAwMjZjbG9zZV9saXN0LCBmYWxzZSk7XG4mIzQzO1xuJiM0MztcdFx0d2hpbGUgKCFsaXN0X2VtcHR5KFx1MDAyNmNsb3NlX2xpc3QpKSB7XG4mIzQzO1x0XHRcdHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyX2RldjtcbiYjNDM7XG4mIzQzO1x0XHRcdHVzZXJfZGV2ID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZjbG9zZV9saXN0LFxuJiM0MztcdFx0XHRcdFx0XHQgICAgc3RydWN0IG5ldF9kZXZpY2UsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICBjbG9zZV9saXN0KTtcbiYjNDM7XHRcdFx0bmV0ZGV2X3VubG9ja19vcHModXNlcl9kZXYpO1xuJiM0MztcdFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnVzZXJfZGV2LVx1MDAzZWNsb3NlX2xpc3QpO1xuJiM0MztcdFx0fVxuIFxuIFx0XHRyZXR1cm4gTk9USUZZX09LO1xuIFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9EU0EmIzM0OywKICAgICYjMzQ7TkVUX01FRElBVEVLX1NPQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25ldGlmX2Nsb3NlX21hbnkmIzM0OywKICAgICYjMzQ7Y2FsbF9uZXRkZXZpY2VfdW5yZWdpc3Rlcl9ub3RpZmllcnMmIzM0OywKICAgICYjMzQ7cnRubF9jb25maWd1cmVfbGluayYjMzQ7LAogICAgJiMzNDtydG5sX25ld2xpbmtfY3JlYXRlJiMzNDssCiAgICAmIzM0O2RzYV9zd2l0Y2hfc2h1dGRvd24mIzM0OywKICAgICYjMzQ7ZHNhX3VzZXJfbmV0ZGV2aWNlX2V2ZW50JiMzNDssCiAgICAmIzM0O210a19ldGhfc2V0X2RtYV9kZXZpY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tpbmcgYmVoYXZpb3Igb2YgbmV0ZGV2aWNlIGV2ZW50cywgc3BlY2lmaWNhbGx5IHRha2luZyB0aGUgbmV0ZGV2X2xvY2tfb3BzIGxvY2sgYXJvdW5kIE5FVERFVl9ET1dOIGFuZCBORVRERVZfR09JTkdfRE9XTiBldmVudHMsIGFuZCB1cGRhdGluZyBzZXZlcmFsIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbnMgYW5kIGRyaXZlcnMgdG8gY29tcGx5IHdpdGggdGhpcyBuZXcgbG9ja2luZyByZXF1aXJlbWVudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2sgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIGRlYWRsb2NrcyBvciBsb2NrZGVwIHdhcm5pbmdzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzMDI2NGQyY2MwODVkZjU2M2QxMmFiODRhOTk2MzQyNDg0YWE2MmJmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAyMjo1NDo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdAppbmRleCBkMmEyMzhmOGNjOGI5MS4uZGI3MWQ0MjgzMDMyYTMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3QKQEAgLTQyMSwxMCAmIzQzOzQyMSwxNyBAQCBydW5uaW5nIHVuZGVyIHRoZSBsb2NrOgogKiBgYE5FVERFVl9DSEFOR0VOQU1FYGAKICogYGBORVRERVZfUkVHSVNURVJgYAogKiBgYE5FVERFVl9VUGBgCiYjNDM7KiBgYE5FVERFVl9ET1dOYGAKJiM0MzsqIGBgTkVUREVWX0dPSU5HX0RPV05gYAogCiBUaGUgZm9sbG93aW5nIG5vdGlmaWVycyBhcmUgcnVubmluZyB3aXRob3V0IHRoZSBsb2NrOgogKiBgYE5FVERFVl9VTlJFR0lTVEVSYGAKIAomIzQzO01hbnkgU1cgZGV2aWNlcyAodXBwZXJzKSBjYXRjaCB0aGVpciBsb3dlciYjMzk7cyBgYE5FVERFVl9VTlJFR0lTVEVSYGAKJiM0MztldmVudHMgYW5kIG1heSBpbnRlcmFjdCB3aXRoIHRoZW0gdmlhIGBgZGV2XyooKWBgIGhhbmRsZXJzLCB3aGljaCB0YWtlCiYjNDM7dGhlIGluc3RhbmNlIGxvY2suIFVudGlsIHdlIGNvbnZlcnQgdGhlc2UgZGV2aWNlcyB0byBgYG5ldGlmXyooKWBgIHZhcmlhbnRzLAomIzQzO2BgTkVUREVWX1VOUkVHSVNURVJgYCBzdGF5cyB1bmxvY2tlZC4KJiM0MzsKIFRoZXJlIGFyZSBubyBjbGVhciBleHBlY3RhdGlvbnMgZm9yIHRoZSByZW1haW5pbmcgbm90aWZpZXJzLiBOb3RpZmllcnMgbm90IG9uCiB0aGUgbGlzdCBtYXkgcnVuIHdpdGggb3Igd2l0aG91dCB0aGUgaW5zdGFuY2UgbG9jaywgcG90ZW50aWFsbHkgZXZlbiBpbnZva2luZwogdGhlIHNhbWUgbm90aWZpZXIgdHlwZSB3aXRoIGFuZCB3aXRob3V0IHRoZSBsb2NrIGZyb20gZGlmZmVyZW50IGNvZGUgcGF0aHMuCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYwppbmRleCA1ZDI5MWU1MGE0N2JiOS4uZmU3NjEwYzQyZTVkMzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYwpAQCAtMjYsNiAmIzQzOzI2LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9iaXRmaWVsZC5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9kc2EuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvZHN0X21ldGFkYXRhLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O25ldC9uZXRkZXZfbG9jay5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9wYWdlX3Bvb2wvaGVscGVycy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2dlbmFsbG9jLmgmZ3Q7CiAKQEAgLTUwMzAsMTAgJiM0Mzs1MDMxLDE0IEBAIHZvaWQgbXRrX2V0aF9zZXRfZG1hX2RldmljZShzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlICpkbWFfZGV2KQogCQkJY29udGludWU7CiAKIAkJbGlzdF9hZGRfdGFpbCgmYW1wO2Rldi0mZ3Q7Y2xvc2VfbGlzdCwgJmFtcDtkZXZfbGlzdCk7CiYjNDM7CQluZXRkZXZfbG9ja19vcHMoZGV2KTsKIAl9CiAKIAluZXRpZl9jbG9zZV9tYW55KCZhbXA7ZGV2X2xpc3QsIGZhbHNlKTsKIAomIzQzOwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgJmFtcDtkZXZfbGlzdCwgY2xvc2VfbGlzdCkKJiM0MzsJCW5ldGRldl91bmxvY2tfb3BzKGRldik7CiYjNDM7CiAJZXRoLSZndDtkbWFfZGV2ID0gZG1hX2RldjsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXYsIHRtcCwgJmFtcDtkZXZfbGlzdCwgY2xvc2VfbGlzdCkgewpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmMgYi9uZXQvY29yZS9kZXYuYwppbmRleCA0YjNkNWNmZGY2ZTAwZi4uNzE0ZDA1MjgzNTAwOGMgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL2Rldi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL2Rldi5jCkBAIC0xODAyLDYgJiM0MzsxODAyLDcgQEAgdm9pZCBuZXRpZl9jbG9zZV9tYW55KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsIGJvb2wgdW5saW5rKQogCV9fZGV2X2Nsb3NlX21hbnkoaGVhZCk7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGV2LCB0bXAsIGhlYWQsIGNsb3NlX2xpc3QpIHsKJiM0MzsJCW5ldGRldl9hc3NlcnRfbG9ja2VkX29wc19jb21wYXQoZGV2KTsKIAkJcnRtc2dfaWZpbmZvKFJUTV9ORVdMSU5LLCBkZXYsIElGRl9VUCB8IElGRl9SVU5OSU5HLCBHRlBfS0VSTkVMLCAwLCBOVUxMKTsKIAkJY2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKE5FVERFVl9ET1dOLCBkZXYpOwogCQlpZiAodW5saW5rKQpAQCAtMTkxMiw5ICYjNDM7MTkxMywxMSBAQCBzdGF0aWMgdm9pZCBjYWxsX25ldGRldmljZV91bnJlZ2lzdGVyX25vdGlmaWVycyhzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLAogCQkJCQkJc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKIAlpZiAoZGV2LSZndDtmbGFncyAmYW1wOyBJRkZfVVApIHsKJiM0MzsJCW5ldGRldl9sb2NrX29wcyhkZXYpOwogCQljYWxsX25ldGRldmljZV9ub3RpZmllcihuYiwgTkVUREVWX0dPSU5HX0RPV04sCiAJCQkJCWRldik7CiAJCWNhbGxfbmV0ZGV2aWNlX25vdGlmaWVyKG5iLCBORVRERVZfRE9XTiwgZGV2KTsKJiM0MzsJCW5ldGRldl91bmxvY2tfb3BzKGRldik7CiAJfQogCWNhbGxfbmV0ZGV2aWNlX25vdGlmaWVyKG5iLCBORVRERVZfVU5SRUdJU1RFUiwgZGV2KTsKIH0KQEAgLTk3ODUsNiAmIzQzOzk3ODgsOCBAQCB2b2lkIF9fZGV2X25vdGlmeV9mbGFncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgb2xkX2ZsYWdzLAogewogCXVuc2lnbmVkIGludCBjaGFuZ2VzID0gZGV2LSZndDtmbGFncyBeIG9sZF9mbGFnczsKIAomIzQzOwluZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGRldik7CiYjNDM7CiAJaWYgKGdjaGFuZ2VzKQogCQlydG1zZ19pZmluZm8oUlRNX05FV0xJTkssIGRldiwgZ2NoYW5nZXMsIEdGUF9BVE9NSUMsIHBvcnRpZCwgbmxoKTsKIApkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvbG9ja19kZWJ1Zy5jIGIvbmV0L2NvcmUvbG9ja19kZWJ1Zy5jCmluZGV4IDhhODFjNTQzMDcwNTM2Li5hYmM0YzAwNzI4YjE2ZiAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvbG9ja19kZWJ1Zy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL2xvY2tfZGVidWcuYwpAQCAtMjQsMTUgJiM0MzsyNCwxNSBAQCBpbnQgbmV0ZGV2X2RlYnVnX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsCiAJY2FzZSBORVRERVZfQ0hBTkdFOgogCWNhc2UgTkVUREVWX1JFR0lTVEVSOgogCWNhc2UgTkVUREVWX1VQOgomIzQzOwljYXNlIE5FVERFVl9ET1dOOgomIzQzOwljYXNlIE5FVERFVl9HT0lOR19ET1dOOgogCQluZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGRldik7CiAJCWZhbGx0aHJvdWdoOwotCWNhc2UgTkVUREVWX0RPV046CiAJY2FzZSBORVRERVZfUkVCT09UOgogCWNhc2UgTkVUREVWX1VOUkVHSVNURVI6CiAJY2FzZSBORVRERVZfQ0hBTkdFTVRVOgogCWNhc2UgTkVUREVWX0NIQU5HRUFERFI6CiAJY2FzZSBORVRERVZfUFJFX0NIQU5HRUFERFI6Ci0JY2FzZSBORVRERVZfR09JTkdfRE9XTjoKIAljYXNlIE5FVERFVl9GRUFUX0NIQU5HRToKIAljYXNlIE5FVERFVl9CT05ESU5HX0ZBSUxPVkVSOgogCWNhc2UgTkVUREVWX1BSRV9VUDoKZGlmZiAtLWdpdCBhL25ldC9jb3JlL3J0bmV0bGluay5jIGIvbmV0L2NvcmUvcnRuZXRsaW5rLmMKaW5kZXggMTJhYTNhYTE2ODhiMTMuLjFiN2Q2ZjZiOGI2ODY4IDEwMDY0NAotLS0gYS9uZXQvY29yZS9ydG5ldGxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9ydG5ldGxpbmsuYwpAQCAtMzY2MCwxNCAmIzQzOzM2NjAsMTYgQEAgaW50IHJ0bmxfY29uZmlndXJlX2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGlmaW5mb21zZyAqaWZtLAogCQkJdTMyIHBvcnRpZCwgY29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgpCiB7CiAJdW5zaWduZWQgaW50IG9sZF9mbGFncywgY2hhbmdlZDsKLQlpbnQgZXJyOwomIzQzOwlpbnQgZXJyID0gMDsKJiM0MzsKJiM0MzsJbmV0ZGV2X2xvY2tfb3BzKGRldik7CiAKIAlvbGRfZmxhZ3MgPSBkZXYtJmd0O2ZsYWdzOwogCWlmIChpZm0gJmFtcDsmYW1wOyAoaWZtLSZndDtpZmlfZmxhZ3MgfHwgaWZtLSZndDtpZmlfY2hhbmdlKSkgewogCQllcnIgPSBfX2Rldl9jaGFuZ2VfZmxhZ3MoZGV2LCBydG5sX2Rldl9jb21iaW5lX2ZsYWdzKGRldiwgaWZtKSwKIAkJCQkJIE5VTEwpOwogCQlpZiAoZXJyICZsdDsgMCkKLQkJCXJldHVybiBlcnI7CiYjNDM7CQkJZ290byBvdXQ7CiAJfQogCiAJY2hhbmdlZCA9IG9sZF9mbGFncyBeIGRldi0mZ3Q7ZmxhZ3M7CkBAIC0zNjc3LDcgJiM0MzszNjc5LDEwIEBAIGludCBydG5sX2NvbmZpZ3VyZV9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBpZmluZm9tc2cgKmlmbSwKIAl9CiAKIAlfX2Rldl9ub3RpZnlfZmxhZ3MoZGV2LCBvbGRfZmxhZ3MsIGNoYW5nZWQsIHBvcnRpZCwgbmxoKTsKLQlyZXR1cm4gMDsKJiM0MzsKJiM0MztvdXQ6CiYjNDM7CW5ldGRldl91bmxvY2tfb3BzKGRldik7CiYjNDM7CXJldHVybiBlcnI7CiB9CiBFWFBPUlRfU1lNQk9MKHJ0bmxfY29uZmlndXJlX2xpbmspOwogCkBAIC0zOTE4LDIyICYjNDM7MzkyMywyMCBAQCBzdGF0aWMgaW50IHJ0bmxfbmV3bGlua19jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlmaW5mb21zZyAqaWZtLAogCQlnb3RvIG91dDsKIAl9CiAKLQluZXRkZXZfbG9ja19vcHMoZGV2KTsKLQogCWVyciA9IHJ0bmxfY29uZmlndXJlX2xpbmsoZGV2LCBpZm0sIHBvcnRpZCwgbmxoKTsKIAlpZiAoZXJyICZsdDsgMCkKIAkJZ290byBvdXRfdW5yZWdpc3RlcjsKIAlpZiAodGJbSUZMQV9NQVNURVJdKSB7CiYjNDM7CQluZXRkZXZfbG9ja19vcHMoZGV2KTsKIAkJZXJyID0gZG9fc2V0X21hc3RlcihkZXYsIG5sYV9nZXRfdTMyKHRiW0lGTEFfTUFTVEVSXSksIGV4dGFjayk7CiYjNDM7CQluZXRkZXZfdW5sb2NrX29wcyhkZXYpOwogCQlpZiAoZXJyKQogCQkJZ290byBvdXRfdW5yZWdpc3RlcjsKIAl9CiAKLQluZXRkZXZfdW5sb2NrX29wcyhkZXYpOwogb3V0OgogCXJldHVybiBlcnI7CiBvdXRfdW5yZWdpc3RlcjoKLQluZXRkZXZfdW5sb2NrX29wcyhkZXYpOwogCWlmIChvcHMtJmd0O25ld2xpbmspIHsKIAkJTElTVF9IRUFEKGxpc3Rfa2lsbCk7CiAKZGlmZiAtLWdpdCBhL25ldC9kc2EvZHNhLmMgYi9uZXQvZHNhL2RzYS5jCmluZGV4IDljYjczMmY2YjFlM2VkLi5kYTUzYTY2NmQ0YjgyZSAxMDA2NDQKLS0tIGEvbmV0L2RzYS9kc2EuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL2RzYS5jCkBAIC0xOCw2ICYjNDM7MTgsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L29mLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvb2ZfbmV0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L2RzYV9zdHVicy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtuZXQvbmV0ZGV2X2xvY2suaCZndDsKICNpbmNsdWRlICZsdDtuZXQvc2NoX2dlbmVyaWMuaCZndDsKIAogI2luY2x1ZGUgJiMzNDtjb25kdWl0LmgmIzM0OwpAQCAtMTYyMCwxMCAmIzQzOzE2MjEsMjMgQEAgdm9pZCBkc2Ffc3dpdGNoX3NodXRkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykKIAogCXJ0bmxfbG9jaygpOwogCi0JZHNhX3N3aXRjaF9mb3JfZWFjaF9jcHVfcG9ydChkcCwgZHMpCi0JCWxpc3RfYWRkKCZhbXA7ZHAtJmd0O2NvbmR1aXQtJmd0O2Nsb3NlX2xpc3QsICZhbXA7Y2xvc2VfbGlzdCk7CiYjNDM7CWRzYV9zd2l0Y2hfZm9yX2VhY2hfY3B1X3BvcnQoZHAsIGRzKSB7CiYjNDM7CQlpZiAoIShkcC0mZ3Q7Y29uZHVpdC0mZ3Q7ZmxhZ3MgJmFtcDsgSUZGX1VQKSkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCWxpc3RfYWRkX3RhaWwoJmFtcDtkcC0mZ3Q7Y29uZHVpdC0mZ3Q7Y2xvc2VfbGlzdCwgJmFtcDtjbG9zZV9saXN0KTsKJiM0MzsJCW5ldGRldl9sb2NrX29wcyhkcC0mZ3Q7Y29uZHVpdCk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJbmV0aWZfY2xvc2VfbWFueSgmYW1wO2Nsb3NlX2xpc3QsIGZhbHNlKTsKIAotCW5ldGlmX2Nsb3NlX21hbnkoJmFtcDtjbG9zZV9saXN0LCB0cnVlKTsKJiM0MzsJd2hpbGUgKCFsaXN0X2VtcHR5KCZhbXA7Y2xvc2VfbGlzdCkpIHsKJiM0MzsJCXN0cnVjdCBuZXRfZGV2aWNlICpjb25kdWl0OwomIzQzOwomIzQzOwkJY29uZHVpdCA9IGxpc3RfZmlyc3RfZW50cnkoJmFtcDtjbG9zZV9saXN0LCBzdHJ1Y3QgbmV0X2RldmljZSwKJiM0MzsJCQkJCSAgIGNsb3NlX2xpc3QpOwomIzQzOwkJbmV0ZGV2X3VubG9ja19vcHMoY29uZHVpdCk7CiYjNDM7CQlsaXN0X2RlbF9pbml0KCZhbXA7Y29uZHVpdC0mZ3Q7Y2xvc2VfbGlzdCk7CiYjNDM7CX0KIAogCWRzYV9zd2l0Y2hfZm9yX2VhY2hfdXNlcl9wb3J0KGRwLCBkcykgewogCQljb25kdWl0ID0gZHNhX3BvcnRfdG9fY29uZHVpdChkcCk7CmRpZmYgLS1naXQgYS9uZXQvZHNhL3VzZXIuYyBiL25ldC9kc2EvdXNlci5jCmluZGV4IDg3MDRjMWEzYTViNzQxLi44ZWE0NzQ0NGQ2ZDU0NyAxMDA2NDQKLS0tIGEvbmV0L2RzYS91c2VyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS91c2VyLmMKQEAgLTEzLDYgJiM0MzsxMyw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvb2ZfbmV0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvb2ZfbWRpby5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21kaW8uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bmV0L25ldGRldl9sb2NrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L3J0bmV0bGluay5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9wa3RfY2xzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L3NlbGZ0ZXN0cy5oJmd0OwpAQCAtMzYwMCwxMCAmIzQzOzM2MDEsMjQgQEAgc3RhdGljIGludCBkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwKIAkJCWlmIChkcC0mZ3Q7Y3B1X2RwICE9IGNwdV9kcCkKIAkJCQljb250aW51ZTsKIAotCQkJbGlzdF9hZGQoJmFtcDtkcC0mZ3Q7dXNlci0mZ3Q7Y2xvc2VfbGlzdCwgJmFtcDtjbG9zZV9saXN0KTsKJiM0MzsJCQlpZiAoIShkcC0mZ3Q7dXNlci0mZ3Q7ZmxhZ3MgJmFtcDsgSUZGX1VQKSkKJiM0MzsJCQkJY29udGludWU7CiYjNDM7CiYjNDM7CQkJbGlzdF9hZGRfdGFpbCgmYW1wO2RwLSZndDt1c2VyLSZndDtjbG9zZV9saXN0LCAmYW1wO2Nsb3NlX2xpc3QpOwomIzQzOwkJCW5ldGRldl9sb2NrX29wcyhkcC0mZ3Q7dXNlcik7CiAJCX0KIAotCQluZXRpZl9jbG9zZV9tYW55KCZhbXA7Y2xvc2VfbGlzdCwgdHJ1ZSk7CiYjNDM7CQluZXRpZl9jbG9zZV9tYW55KCZhbXA7Y2xvc2VfbGlzdCwgZmFsc2UpOwomIzQzOwomIzQzOwkJd2hpbGUgKCFsaXN0X2VtcHR5KCZhbXA7Y2xvc2VfbGlzdCkpIHsKJiM0MzsJCQlzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcl9kZXY7CiYjNDM7CiYjNDM7CQkJdXNlcl9kZXYgPSBsaXN0X2ZpcnN0X2VudHJ5KCZhbXA7Y2xvc2VfbGlzdCwKJiM0MzsJCQkJCQkgICAgc3RydWN0IG5ldF9kZXZpY2UsCiYjNDM7CQkJCQkJICAgIGNsb3NlX2xpc3QpOwomIzQzOwkJCW5ldGRldl91bmxvY2tfb3BzKHVzZXJfZGV2KTsKJiM0MzsJCQlsaXN0X2RlbF9pbml0KCZhbXA7dXNlcl9kZXYtJmd0O2Nsb3NlX2xpc3QpOwomIzQzOwkJfQogCiAJCXJldHVybiBOT1RJRllfT0s7CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODA0CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNjI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENvcmUgTmV0d29ya2luZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IGZ1bmRhbWVudGFsbHkgYWx0ZXJzIG5ldGRldmljZSBsb2NraW5nIGJlaGF2aW9yLiBJdCYjMzk7cyBhZGRpbmcgYE5FVERFVl9ET1dOYCBhbmQgYE5FVERFVl9HT0lOR19ET1dOYCB0byB0aGUgbGlzdCBvZiBub3RpZmllcnMgdGhhdCBydW4gdW5kZXIgdGhlIGluc3RhbmNlIGxvY2ssIGFuZCBpdCB1cGRhdGVzIGEgYnVuY2ggb2YgZnVuY3Rpb25zIHRvIHVzZSB0aGUgYG5ldGRldl9sb2NrX29wc2AgbG9jay4gVGhpcyB0b3VjaGVzIHNvbWUgY3JpdGljYWwgcGFydHMgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2ssIHNvIGl0JiMzOTtzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgaW1wbGljYXRpb25zLgoKSGVyZSYjMzk7cyB0aGUgYnJlYWtkb3duLCBhcyBJIHNlZSBpdDoKCjEuICBGaXJzdCwgdGhlIHBhdGNoIGluY2x1ZGVzIGRvY3VtZW50YXRpb24gdXBkYXRlcyBpbiBgRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0YC4gQWx3YXlzIGdvb2QgdG8gc2VlLCBjbGFyaWZpZXMgdGhlIGludGVudC4KMi4gIFRoZW4sIGNoYW5nZXMgaW4gc3BlY2lmaWMgZHJpdmVyczogdGhlIE1lZGlhdGVrIGV0aGVybmV0IGRyaXZlciAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmNgKSBub3cgdGFrZXMgYG5ldGRldl9sb2NrX29wc2AgYXJvdW5kIGBuZXRpZl9jbG9zZV9tYW55YC4KMy4gIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgaW4gYG5ldC9jb3JlL2Rldi5jYC4gIGBjYWxsX25ldGRldmljZV91bnJlZ2lzdGVyX25vdGlmaWVyc2Agbm93IHVzZXMgYG5ldGRldl9sb2NrX29wc2AgYXJvdW5kIGBORVRERVZfR09JTkdfRE9XTmAgYW5kIGBORVRERVZfRE9XTmAuIEltcG9ydGFudGx5LCBpdCBhc3NlcnRzIHRoZSBsb2NrIGlzIGhlbGQgaW4gYG5ldGlmX2Nsb3NlX21hbnlgIGFuZCBgX19kZXZfbm90aWZ5X2ZsYWdzYC4gVGhpcyBzdHJlbmd0aGVucyB0aGUgbG9ja2luZyBndWFyYW50ZWVzLgo0LiAgYG5ldC9jb3JlL2xvY2tfZGVidWcuY2AgaGFzIGJlZW4gdXBkYXRlZCB0byBpbmNsdWRlIGBORVRERVZfRE9XTmAgYW5kIGBORVRERVZfR09JTkdfRE9XTmAgaW4gdGhlIGxpc3Qgb2YgZXZlbnRzIHJlcXVpcmluZyBgbmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3BzX2NvbXBhdGAuIEFub3RoZXIgbG9jayByZWxhdGVkIGNoZWNrLgo1LiAgSW4gYG5ldC9jb3JlL3J0bmV0bGluay5jYCwgYHJ0bmxfY29uZmlndXJlX2xpbmtgIG5vdyB1c2VzIGBuZXRkZXZfbG9ja19vcHNgLiBgcnRubF9uZXdsaW5rX2NyZWF0ZWAgZHJvcHMgdGhlIHByZXZpb3VzIGxvY2sgYXJvdW5kIGBydG5sX2NvbmZpZ3VyZV9saW5rYCAoYmVjYXVzZSBpdCYjMzk7cyBub3cgdGFrZW4gd2l0aGluIHRoYXQgZnVuY3Rpb24pIGJ1dCAqYWRkcyogdGhlIGxvY2sgYXJvdW5kIGBkb19zZXRfbWFzdGVyYC4KNi4gIGBuZXQvZHNhL2RzYS5jYCBhbHNvIGdldHMgbW9kaWZpZWQ7IGBkc2Ffc3dpdGNoX3NodXRkb3duYCBub3cgdGFrZXMgYG5ldGRldl9sb2NrX29wc2AgYXJvdW5kIGBuZXRpZl9jbG9zZV9tYW55YC4KNy4gIEFuZCwgaW4gYG5ldC9kc2EvdXNlci5jYCwgYGRzYV91c2VyX25ldGRldmljZV9ldmVudGAgbm93IHRha2VzIHRoZSBsb2NrIGFyb3VuZCBgbmV0aWZfY2xvc2VfbWFueWAuCgpHaXZlbiB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdmVyeSBjb3JlIG9mIGhvdyBuZXRkZXZpY2VzIGFyZSBsb2NrZWQsIHRoaXMgKmFic29sdXRlbHkqIHJlcXVpcmVzIGZ1enppbmcuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGZ1bmRhbWVudGFsIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzLgoKU28sIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGFyZWFzIHRvIGZvY3VzIG9uIGluIHRlc3RpbmcgYW5kIGRlYnVnZ2luZy4gVGhlIGNyaXRpY2FsIHN5bWJvbHMgdGhhdCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIGFyZToKCiogICBgbmV0aWZfY2xvc2VfbWFueWAKKiAgIGBjYWxsX25ldGRldmljZV91bnJlZ2lzdGVyX25vdGlmaWVyc2AKKiAgIGBfX2Rldl9ub3RpZnlfZmxhZ3NgCiogICBgcnRubF9jb25maWd1cmVfbGlua2AKKiAgIGBydG5sX25ld2xpbmtfY3JlYXRlYAoqICAgYGRzYV9zd2l0Y2hfc2h1dGRvd25gCiogICBgZHNhX3VzZXJfbmV0ZGV2aWNlX2V2ZW50YAoqICAgYG10a19ldGhfc2V0X2RtYV9kZXZpY2VgCgpGaW5hbGx5LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgaW1wb3J0YW50IGhlcmUuIFdlIG5lZWQgYE5FVF9EU0FgIGZvciB0aGUgRFNBIGNoYW5nZXMsIG9idmlvdXNseS4gQW5kLCBmb3IgdGhlIE1lZGlhdGVrIGNoYW5nZXMsIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZy4gSSYjMzk7bSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhhdCBgTkVUX1ZFTkRPUl9NRURJQVRFS2AgYW5kIGBORVRfTUVESUFURUtfU09DYCBhcmUgY29ycmVjdGx5IGVuYWJsZWQgd2hlbiBydW5uaW5nIG9uIE1lZGlhdGVrIGhhcmR3YXJlLiBMZXQmIzM5O3MgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9NRURJQVRFS19TT0MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc9OD1pZiBORVRfVkVORE9SX01FRElBVEVLXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjEwOmNvbmZpZyBORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xMS1cdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1Rcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoxNDpjb25maWcgTkVUX01FRElBVEVLX1NPQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xNS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIFNvQyBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDQxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBjb25maWd1cmF0aW9uczoKCioqQW5hbHl6aW5nIE5ldHdvcmsgRGV2aWNlIFN1cHBvcnQqKgoKQWxyaWdodCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiBuZXR3b3JraW5nIGhhcmR3YXJlLCBlbmFibGluZyBgTkVUX01FRElBVEVLX1NPQ2AgYW5kIGBORVRfRFNBYCBzZWVtcyBsaWtlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGJyb2FkIHN1cHBvcnQuIEkgZmlndXJlLCBnb2luZyBpbiwgdGhhdCB0aGVzZSBhcmUgZ29vZCBnZW5lcmFsIGNvbmZpZ3VyYXRpb25zLiBOb3csIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsLCBhbmQgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSwgSSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIGBORVRfRFNBYCBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZXRhaWxzIHdpdGhpbiBgbmV0L2RzYS9LY29uZmlnYCB0byBjb25maXJtIGFzc3VtcHRpb25zIGFuZCBjb25zaWRlciBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvciBzcGVjaWZpYyBvcHRpb25zIGl0IG9mZmVycy4gRG9pbmcgdGhpcyBJIHNob3VsZCBnYWluIGNvbXBsZXRlIGNsYXJpdHkgb24gd2hhdCB0aGlzIGVuYWJsZW1lbnQgZW50YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0RTQSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9kc2EvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvZHNhL0tjb25maWctMi1cbm5ldC9kc2EvS2NvbmZpZzozOm1lbnVjb25maWcgTkVUX0RTQVxubmV0L2RzYS9LY29uZmlnLTQtXHR0cmlzdGF0ZSBcJiMzNDtEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnPTE3PWlmIE5FVF9EU0Fcbi0tXG5uZXQvZHNhL0tjb25maWctMjAtXG5uZXQvZHNhL0tjb25maWc6MjE6Y29uZmlnIE5FVF9EU0FfVEFHX05PTkVcbm5ldC9kc2EvS2NvbmZpZy0yMi1cdHRyaXN0YXRlIFwmIzM0O05vLW9wIHRhZyBkcml2ZXJcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMjYtXG5uZXQvZHNhL0tjb25maWc6Mjc6Y29uZmlnIE5FVF9EU0FfVEFHX0FSOTMzMVxubmV0L2RzYS9LY29uZmlnLTI4LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgQXRoZXJvcyBBUjkzMzEgU29DIHdpdGggYnVpbHQtaW4gc3dpdGNoXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTMyLVxubmV0L2RzYS9LY29uZmlnOjMzOmNvbmZpZyBORVRfRFNBX1RBR19CUkNNX0NPTU1PTlxubmV0L2RzYS9LY29uZmlnLTM0LVx0dHJpc3RhdGVcbi0tXG5uZXQvZHNhL0tjb25maWctMzYtXG5uZXQvZHNhL0tjb25maWc6Mzc6Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01cbm5ldC9kc2EvS2NvbmZpZy0zOC1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIEJyb2FkY29tIHN3aXRjaGVzIHVzaW5nIGluLWZyYW1lIGhlYWRlcnNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctNDMtXG5uZXQvZHNhL0tjb25maWc6NDQ6Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01fTEVHQUNZXG5uZXQvZHNhL0tjb25maWctNDUtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBCQ002M3h4IGxlZ2FjeSBzd2l0Y2hlcyB1c2luZyBpbi1mcmFtZSBoZWFkZXJzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTUzLVxubmV0L2RzYS9LY29uZmlnOjU0OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNX0xFR0FDWV9GQ1Ncbm5ldC9kc2EvS2NvbmZpZy01NS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIEJDTTUzeHggbGVnYWN5IHN3aXRjaGVzIHVzaW5nIGluLWZyYW1lIGhlYWRlcnNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctNjMtXG5uZXQvZHNhL0tjb25maWc6NjQ6Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01fUFJFUEVORFxubmV0L2RzYS9LY29uZmlnLTY1LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgQnJvYWRjb20gc3dpdGNoZXMgdXNpbmcgcHJlcGVuZGVkIGhlYWRlcnNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctNzEtXG5uZXQvZHNhL0tjb25maWc6NzI6Y29uZmlnIE5FVF9EU0FfVEFHX0hFTExDUkVFS1xubmV0L2RzYS9LY29uZmlnLTczLVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgSGlyc2NobWFubiBIZWxsY3JlZWsgVFNOIHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTc3LVxubmV0L2RzYS9LY29uZmlnOjc4OmNvbmZpZyBORVRfRFNBX1RBR19HU1dJUFxubmV0L2RzYS9LY29uZmlnLTc5LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTGFudGlxIC8gSW50ZWwgR1NXSVAgc3dpdGNoZXNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctODMtXG5uZXQvZHNhL0tjb25maWc6ODQ6Y29uZmlnIE5FVF9EU0FfVEFHX0RTQV9DT01NT05cbm5ldC9kc2EvS2NvbmZpZy04NS1cdHRyaXN0YXRlXG5uZXQvZHNhL0tjb25maWctODYtXG5uZXQvZHNhL0tjb25maWc6ODc6Y29uZmlnIE5FVF9EU0FfVEFHX0RTQVxubmV0L2RzYS9LY29uZmlnLTg4LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTWFydmVsbCBzd2l0Y2hlcyB1c2luZyBEU0EgaGVhZGVyc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy05My1cbm5ldC9kc2EvS2NvbmZpZzo5NDpjb25maWcgTkVUX0RTQV9UQUdfRURTQVxubmV0L2RzYS9LY29uZmlnLTk1LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTWFydmVsbCBzd2l0Y2hlcyB1c2luZyBFdGhlclR5cGUgRFNBIGhlYWRlcnNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTAwLVxubmV0L2RzYS9LY29uZmlnOjEwMTpjb25maWcgTkVUX0RTQV9UQUdfTVRLXG5uZXQvZHNhL0tjb25maWctMTAyLVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTWVkaWF0ZWsgc3dpdGNoZXNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTA2LVxubmV0L2RzYS9LY29uZmlnOjEwNzpjb25maWcgTkVUX0RTQV9UQUdfTVhMXzg2MlhYXG5uZXQvZHNhL0tjb25maWctMTA4LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTWF4TGluZWFyIE14TDg2Mnh4IHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTExMy1cbm5ldC9kc2EvS2NvbmZpZzoxMTQ6Y29uZmlnIE5FVF9EU0FfVEFHX01YTF9HU1cxWFhcbm5ldC9kc2EvS2NvbmZpZy0xMTUtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBNYXhMaW5lYXIgR1NXMXh4IHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTEyMS1cbm5ldC9kc2EvS2NvbmZpZzoxMjI6Y29uZmlnIE5FVF9EU0FfVEFHX0tTWlxubmV0L2RzYS9LY29uZmlnLTEyMy1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1pY3JvY2hpcCA4Nzk1LzkzN3gvOTQ3Ny85ODkzIGZhbWlsaWVzIG9mIHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTEyNy1cbm5ldC9kc2EvS2NvbmZpZzoxMjg6Y29uZmlnIE5FVF9EU0FfVEFHX05FVENcbm5ldC9kc2EvS2NvbmZpZy0xMjktXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBOWFAgTkVUQyBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xMzctXG5uZXQvZHNhL0tjb25maWc6MTM4OmNvbmZpZyBORVRfRFNBX1RBR19PQ0VMT1Rcbm5ldC9kc2EvS2NvbmZpZy0xMzktXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBPY2Vsb3QgZmFtaWx5IG9mIHN3aXRjaGVzLCB1c2luZyBOUEkgcG9ydFwmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xNDgtXG5uZXQvZHNhL0tjb25maWc6MTQ5OmNvbmZpZyBORVRfRFNBX1RBR19PQ0VMT1RfODAyMVFcbm5ldC9kc2EvS2NvbmZpZy0xNTAtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBPY2Vsb3QgZmFtaWx5IG9mIHN3aXRjaGVzLCB1c2luZyBWTEFOXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTE1OC1cbm5ldC9kc2EvS2NvbmZpZzoxNTk6Y29uZmlnIE5FVF9EU0FfVEFHX1FDQVxubmV0L2RzYS9LY29uZmlnLTE2MC1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgc3dpdGNoZXNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTY0LVxubmV0L2RzYS9LY29uZmlnOjE2NTpjb25maWcgTkVUX0RTQV9UQUdfUlRMNF9BXG5uZXQvZHNhL0tjb25maWctMTY2LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgUmVhbHRlayA0IGJ5dGUgcHJvdG9jb2wgQSB0YWdzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTE3MS1cbm5ldC9kc2EvS2NvbmZpZzoxNzI6Y29uZmlnIE5FVF9EU0FfVEFHX1JUTDhfNFxubmV0L2RzYS9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIFJlYWx0ZWsgOCBieXRlIHByb3RvY29sIDQgdGFnc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xNzctXG5uZXQvZHNhL0tjb25maWc6MTc4OmNvbmZpZyBORVRfRFNBX1RBR19SWk4xX0E1UFNXXG5uZXQvZHNhL0tjb25maWctMTc5LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgUmVuZXNhcyBSWi9OMSBBNVBTVyBzd2l0Y2hcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTg0LVxubmV0L2RzYS9LY29uZmlnOjE4NTpjb25maWcgTkVUX0RTQV9UQUdfTEFOOTMwM1xubmV0L2RzYS9LY29uZmlnLTE4Ni1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIFNNU0MvTWljcm9jaGlwIExBTjkzMDMgZmFtaWx5IG9mIHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTE5MC1cbm5ldC9kc2EvS2NvbmZpZzoxOTE6Y29uZmlnIE5FVF9EU0FfVEFHX1NKQTExMDVcbm5ldC9kc2EvS2NvbmZpZy0xOTItXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBOWFAgU0pBMTEwNSBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xOTktXG5uZXQvZHNhL0tjb25maWc6MjAwOmNvbmZpZyBORVRfRFNBX1RBR19UUkFJTEVSXG5uZXQvZHNhL0tjb25maWctMjAxLVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3Igc3dpdGNoZXMgdXNpbmcgYSB0cmFpbGVyIHRhZ1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0yMDUtXG5uZXQvZHNhL0tjb25maWc6MjA2OmNvbmZpZyBORVRfRFNBX1RBR19WU0M3M1hYXzgwMjFRXG5uZXQvZHNhL0tjb25maWctMjA3LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTWljcm9jaGlwL1ZpdGVzc2UgVlNDNzN4eCBmYW1pbHkgb2Ygc3dpdGNoZXMsIHVzaW5nIFZMQU5cJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMjExLVxubmV0L2RzYS9LY29uZmlnOjIxMjpjb25maWcgTkVUX0RTQV9UQUdfWFJTNzAwWFxubmV0L2RzYS9LY29uZmlnLTIxMy1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIFhSUzcwMHggc3dpdGNoZXNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMjE3LVxubmV0L2RzYS9LY29uZmlnOjIxODpjb25maWcgTkVUX0RTQV9UQUdfWVQ5MjFYXG5uZXQvZHNhL0tjb25maWctMjE5LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTW90b3Jjb21tIFlUOTIxeCBzd2l0Y2hlc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3MjEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1OTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIE5ldHdvcmtpbmcgUGF0Y2gqKgoKT2theSwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGVuYWJsaW5nIGBORVRfRFNBYCBhbmQgYE5FVF9NRURJQVRFS19TT0NgIGlzIHRoZSByaWdodCBhcHByb2FjaC4gTm93IEkgbmVlZCB0byBjb25maXJtIGlmIGBORVRfRFNBYCBhbG9uZSBpcyBzdWZmaWNpZW50LCBvciBpZiBhIG1vcmUgc3BlY2lmaWMgZHJpdmVyIHRhZyBpcyBuZWNlc3NhcnkuIEl0IHNlZW1zIGBORVRfRFNBYCBlbmFibGVzIHRoZSBjb3JlIERTQSBmcmFtZXdvcmssIGFuZCB0aGF0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIGZpbmQgYGRzYV9zd2l0Y2hfc2h1dGRvd25gIGFuZCBgZHNhX3VzZXJfbmV0ZGV2aWNlX2V2ZW50YC4KCkxldCYjMzk7cyBsb29rIGF0IHRoZSBzeW1ib2xzIGFnYWluLiBJJiMzOTt2ZSBjb21waWxlZCBhIGxpc3Q6IGBuZXRpZl9jbG9zZV9tYW55YCwgYGNhbGxfbmV0ZGV2aWNlX3VucmVnaXN0ZXJfbm90aWZpZXJzYCwgYF9fZGV2X25vdGlmeV9mbGFnc2AsIGBydG5sX2NvbmZpZ3VyZV9saW5rYCwgYHJ0bmxfbmV3bGlua19jcmVhdGVgLCBgZHNhX3N3aXRjaF9zaHV0ZG93bmAsIGBkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnRgLCBhbmQgYG10a19ldGhfc2V0X2RtYV9kZXZpY2VgLgoKSG1tLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGhlcmUuIEkgc2VlIHRoYXQgYF9fZGV2X25vdGlmeV9mbGFnc2AgaXMgaW4gYG5ldC9jb3JlL2Rldi5jYCBidXQgaXMgaXQgc3RhdGljPyBZZXMsIHNvIGl0JiMzOTtzIG5vdCBleHBvcnRlZC4gYHJ0bmxfbmV3bGlua19jcmVhdGVgIGlzIGFsc28gc3RhdGljLCB3aXRoaW4gYG5ldC9jb3JlL3J0bmV0bGluay5jYC4gYGNhbGxfbmV0ZGV2aWNlX3VucmVnaXN0ZXJfbm90aWZpZXJzYCBpcyBzdGF0aWMgdG9vLCBpbiBgbmV0L2NvcmUvZGV2LmNgLiBIb3dldmVyLCBgbmV0aWZfY2xvc2VfbWFueWAsIGBydG5sX2NvbmZpZ3VyZV9saW5rYCwgYGRzYV9zd2l0Y2hfc2h1dGRvd25gLCBhbmQgYG10a19ldGhfc2V0X2RtYV9kZXZpY2VgIGFyZSBhbGwgZXhwb3J0ZWQuIGBkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnRgIGlzIHN0YXRpYyB3aXRoaW4gYG5ldC9kc2EvdXNlci5jYC4KCk9rYXksIHRha2luZyB0aGlzIGludG8gY29uc2lkZXJhdGlvbiwgdGhlc2UgYXJlIGFsbCBnb29kIGluZGljYXRvcnMgZm9yIGZ1enppbmcuIEkmIzM5O2xsIGZvY3VzIG9uOgotIGBuZXRpZl9jbG9zZV9tYW55YAotIGBjYWxsX25ldGRldmljZV91bnJlZ2lzdGVyX25vdGlmaWVyc2AKLSBgcnRubF9jb25maWd1cmVfbGlua2AKLSBgcnRubF9uZXdsaW5rX2NyZWF0ZWAKLSBgZHNhX3N3aXRjaF9zaHV0ZG93bmAKLSBgZHNhX3VzZXJfbmV0ZGV2aWNlX2V2ZW50YAotIGBtdGtfZXRoX3NldF9kbWFfZGV2aWNlYAoKVGhlc2UgYXJlIHNvbGlkIHRhcmdldHMgZm9yIGFuYWx5c2lzLgoKQWxyaWdodCwgbGV0JiMzOTtzIHJlY2FwIHRoZSByYXRpb25hbGUgZm9yIHRoaXMgZnV6emluZyBlZmZvcnQuIFRoZSBwYXRjaCBpcyBjaGFuZ2luZyBob3cgdGhlIGxvY2tpbmcgaXMgbWFuYWdlZCBmb3IgbmV0d29yayBkZXZpY2UgZXZlbnRzLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGludHJvZHVjaW5nIHRoZSBgbmV0ZGV2X2xvY2tfb3BzYCBsb2NrIGFyb3VuZCBgTkVUREVWX0RPV05gIGFuZCBgTkVUREVWX0dPSU5HX0RPV05gIGV2ZW50cy4gVGhpcyBpbXBhY3RzIHNldmVyYWwgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9ucyBhbmQgcG90ZW50aWFsbHkgZHJpdmVycy4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrLiBUaGVyZWZvcmUsIGl0JiMzOTtzIGFic29sdXRlbHkgY3J1Y2lhbCB0byBmdXp6IHRoaXMgdG8gY2hlY2sgZm9yIHBvc3NpYmxlIGRlYWRsb2NrcyBvciBsb2NrZGVwIHdhcm5pbmdzIHRoYXQgdGhpcyBjb3VsZCBpbnRyb2R1Y2UuCgpGaW5hbGx5LCBJIGNvbmZpcm1lZCB0aGF0IGBORVRfTUVESUFURUtfU09DYCBoYXMgZGVwZW5kZW5jaWVzIG9uIGEgYG10a19ldGhfc29jLmNgIGRyaXZlciwgd2hpY2ggaXMgY29tcGlsZWQgd2hlbiB0aGlzIGNvbmZpZyBpcyBlbmFibGVkLiBTbyBpdCBzZWVtcyBsaWtlIGBORVRfTUVESUFURUtfU09DYCBpcyB0aGUgY29ycmVjdCBzZXR0aW5nLiBJJiMzOTttIGFsbCBzZXQgdG8gcHJvY2VlZCB3aXRoIHRoaXMgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdGtfZXRoX3NvYy5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfTkVUX01FRElBVEVLX1NPQykgJiM0Mzs9IG10a19ldGgub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGU6NzptdGtfZXRoLXkgOj0gbXRrX2V0aF9zb2MubyBtdGtfZXRoX3BhdGgubyBtdGtfcHBlLm8gbXRrX3BwZV9kZWJ1Z2ZzLm8gbXRrX3BwZV9vZmZsb2FkLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlLTgtbXRrX2V0aC0kKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCkgJiM0Mzs9IG10a193ZWQubyBtdGtfd2VkX21jdS5vIG10a193ZWRfd28ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTc5CgkJCQkJCQlvdXRwdXQ6IDE5OQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIGlmIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZCB0aGlua2luZyB0aHJvdWdoIHRoaXM6CgoqKkluaXRpYWwgQXNzZXNzbWVudCBhbmQgQ29tbWFuZCBDb25maXJtYXRpb24qKgoKWWVzLCB0aGF0IGNvbmZpcm1zIGl0IOKAkyBgTkVUX01FRElBVEVLX1NPQ2AgKmlzKiB0aGUgY29ycmVjdCBpZGVudGlmaWVyIGZvciB0aGUgc2l0dWF0aW9uIHdlJiMzOTtyZSBhZGRyZXNzaW5nLiBUaGF0JiMzOTtzIGdvb2QsIHRoYXQmIzM5O3Mgd2hlcmUgd2UgbmVlZCB0byBiZS4gTm93IHRoYXQgd2UgaGF2ZSB0aGF0IGNvbmZpcm1hdGlvbiwgaXQmIzM5O3MgdGltZSB0byB0cmlnZ2VyIHRoZSBuZXh0IHN0ZXAuIEkgbmVlZCB0byBjYWxsIHRoZSBhcHByb3ByaWF0ZSBwcm9jZWR1cmUgdG8gbG9nIHRoaXMgY29uY2x1c2lvbiBhbmQgdHJpZ2dlciB0aGUgbmV4dCBzdGFnZSwgdGhhdCB3b3VsZCBiZSBgc2V0LXJlc3VsdHNgLiBMZXQmIzM5O3MgZ2V0IHRoYXQgZG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9EU0EmIzM0OywKICAgICYjMzQ7TkVUX01FRElBVEVLX1NPQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25ldGlmX2Nsb3NlX21hbnkmIzM0OywKICAgICYjMzQ7Y2FsbF9uZXRkZXZpY2VfdW5yZWdpc3Rlcl9ub3RpZmllcnMmIzM0OywKICAgICYjMzQ7cnRubF9jb25maWd1cmVfbGluayYjMzQ7LAogICAgJiMzNDtydG5sX25ld2xpbmtfY3JlYXRlJiMzNDssCiAgICAmIzM0O2RzYV9zd2l0Y2hfc2h1dGRvd24mIzM0OywKICAgICYjMzQ7ZHNhX3VzZXJfbmV0ZGV2aWNlX2V2ZW50JiMzNDssCiAgICAmIzM0O210a19ldGhfc2V0X2RtYV9kZXZpY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tpbmcgYmVoYXZpb3Igb2YgbmV0ZGV2aWNlIGV2ZW50cywgc3BlY2lmaWNhbGx5IHRha2luZyB0aGUgbmV0ZGV2X2xvY2tfb3BzIGxvY2sgYXJvdW5kIE5FVERFVl9ET1dOIGFuZCBORVRERVZfR09JTkdfRE9XTiBldmVudHMsIGFuZCB1cGRhdGluZyBzZXZlcmFsIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbnMgYW5kIGRyaXZlcnMgdG8gY29tcGx5IHdpdGggdGhpcyBuZXcgbG9ja2luZyByZXF1aXJlbWVudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2sgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIGRlYWRsb2NrcyBvciBsb2NrZGVwIHdhcm5pbmdzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfRFNBJiMzNDssCiAgICAmIzM0O05FVF9NRURJQVRFS19TT0MmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZXRpZl9jbG9zZV9tYW55JiMzNDssCiAgICAmIzM0O2NhbGxfbmV0ZGV2aWNlX3VucmVnaXN0ZXJfbm90aWZpZXJzJiMzNDssCiAgICAmIzM0O3J0bmxfY29uZmlndXJlX2xpbmsmIzM0OywKICAgICYjMzQ7cnRubF9uZXdsaW5rX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtkc2Ffc3dpdGNoX3NodXRkb3duJiMzNDssCiAgICAmIzM0O2RzYV91c2VyX25ldGRldmljZV9ldmVudCYjMzQ7LAogICAgJiMzNDttdGtfZXRoX3NldF9kbWFfZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGJlaGF2aW9yIG9mIG5ldGRldmljZSBldmVudHMsIHNwZWNpZmljYWxseSB0YWtpbmcgdGhlIG5ldGRldl9sb2NrX29wcyBsb2NrIGFyb3VuZCBORVRERVZfRE9XTiBhbmQgTkVUREVWX0dPSU5HX0RPV04gZXZlbnRzLCBhbmQgdXBkYXRpbmcgc2V2ZXJhbCBjb3JlIG5ldHdvcmtpbmcgZnVuY3Rpb25zIGFuZCBkcml2ZXJzIHRvIGNvbXBseSB3aXRoIHRoaXMgbmV3IGxvY2tpbmcgcmVxdWlyZW1lbnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyBkZWFkbG9ja3Mgb3IgbG9ja2RlcCB3YXJuaW5ncyBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU0OjU5LjA1MTEwMjAxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg0OTQyMzYxMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RTQVwiLFxuICAgIFwiTkVUX01FRElBVEVLX1NPQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5ldGlmX2Nsb3NlX21hbnlcIixcbiAgICBcImNhbGxfbmV0ZGV2aWNlX3VucmVnaXN0ZXJfbm90aWZpZXJzXCIsXG4gICAgXCJydG5sX2NvbmZpZ3VyZV9saW5rXCIsXG4gICAgXCJydG5sX25ld2xpbmtfY3JlYXRlXCIsXG4gICAgXCJkc2Ffc3dpdGNoX3NodXRkb3duXCIsXG4gICAgXCJkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnRcIixcbiAgICBcIm10a19ldGhfc2V0X2RtYV9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBiZWhhdmlvciBvZiBuZXRkZXZpY2UgZXZlbnRzLCBzcGVjaWZpY2FsbHkgdGFraW5nIHRoZSBuZXRkZXZfbG9ja19vcHMgbG9jayBhcm91bmQgTkVUREVWX0RPV04gYW5kIE5FVERFVl9HT0lOR19ET1dOIGV2ZW50cywgYW5kIHVwZGF0aW5nIHNldmVyYWwgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9ucyBhbmQgZHJpdmVycyB0byBjb21wbHkgd2l0aCB0aGlzIG5ldyBsb2NraW5nIHJlcXVpcmVtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjayBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gZGVhZGxvY2tzIG9yIGxvY2tkZXAgd2FybmluZ3MgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU0OjU5LjA1MTEwNzlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1MjAwMTkxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDMwMjY0ZDJjYzA4NWRmNTYzZDEyYWI4NGE5OTYzNDI0ODRhYTYyYmZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMiAyMjo1NDo1OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3QgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3RcXG5pbmRleCBkMmEyMzhmOGNjOGI5MS4uZGI3MWQ0MjgzMDMyYTMgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0XFxuKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0XFxuQEAgLTQyMSwxMCArNDIxLDE3IEBAIHJ1bm5pbmcgdW5kZXIgdGhlIGxvY2s6XFxuICogYGBORVRERVZfQ0hBTkdFTkFNRWBgXFxuICogYGBORVRERVZfUkVHSVNURVJgYFxcbiAqIGBgTkVUREVWX1VQYGBcXG4rKiBgYE5FVERFVl9ET1dOYGBcXG4rKiBgYE5FVERFVl9HT0lOR19ET1dOYGBcXG4gXFxuIFRoZSBmb2xsb3dpbmcgbm90aWZpZXJzIGFyZSBydW5uaW5nIHdpdGhvdXQgdGhlIGxvY2s6XFxuICogYGBORVRERVZfVU5SRUdJU1RFUmBgXFxuIFxcbitNYW55IFNXIGRldmljZXMgKHVwcGVycykgY2F0Y2ggdGhlaXIgbG93ZXIncyBgYE5FVERFVl9VTlJFR0lTVEVSYGBcXG4rZXZlbnRzIGFuZCBtYXkgaW50ZXJhY3Qgd2l0aCB0aGVtIHZpYSBgYGRldl8qKClgYCBoYW5kbGVycywgd2hpY2ggdGFrZVxcbit0aGUgaW5zdGFuY2UgbG9jay4gVW50aWwgd2UgY29udmVydCB0aGVzZSBkZXZpY2VzIHRvIGBgbmV0aWZfKigpYGAgdmFyaWFudHMsXFxuK2BgTkVUREVWX1VOUkVHSVNURVJgYCBzdGF5cyB1bmxvY2tlZC5cXG4rXFxuIFRoZXJlIGFyZSBubyBjbGVhciBleHBlY3RhdGlvbnMgZm9yIHRoZSByZW1haW5pbmcgbm90aWZpZXJzLiBOb3RpZmllcnMgbm90IG9uXFxuIHRoZSBsaXN0IG1heSBydW4gd2l0aCBvciB3aXRob3V0IHRoZSBpbnN0YW5jZSBsb2NrLCBwb3RlbnRpYWxseSBldmVuIGludm9raW5nXFxuIHRoZSBzYW1lIG5vdGlmaWVyIHR5cGUgd2l0aCBhbmQgd2l0aG91dCB0aGUgbG9jayBmcm9tIGRpZmZlcmVudCBjb2RlIHBhdGhzLlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xcbmluZGV4IDVkMjkxZTUwYTQ3YmI5Li5mZTc2MTBjNDJlNWQzOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xcbkBAIC0yNiw2ICsyNiw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRmaWVsZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2RzYS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2RzdF9tZXRhZGF0YS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbmV0L25ldGRldl9sb2NrLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvcGFnZV9wb29sL2hlbHBlcnMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2dlbmFsbG9jLmhcXHUwMDNlXFxuIFxcbkBAIC01MDMwLDEwICs1MDMxLDE0IEBAIHZvaWQgbXRrX2V0aF9zZXRfZG1hX2RldmljZShzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlICpkbWFfZGV2KVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmRldi1cXHUwMDNlY2xvc2VfbGlzdCwgXFx1MDAyNmRldl9saXN0KTtcXG4rXFx0XFx0bmV0ZGV2X2xvY2tfb3BzKGRldik7XFxuIFxcdH1cXG4gXFxuIFxcdG5ldGlmX2Nsb3NlX21hbnkoXFx1MDAyNmRldl9saXN0LCBmYWxzZSk7XFxuIFxcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgXFx1MDAyNmRldl9saXN0LCBjbG9zZV9saXN0KVxcbitcXHRcXHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xcbitcXG4gXFx0ZXRoLVxcdTAwM2VkbWFfZGV2ID0gZG1hX2RldjtcXG4gXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXYsIHRtcCwgXFx1MDAyNmRldl9saXN0LCBjbG9zZV9saXN0KSB7XFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmNcXG5pbmRleCA0YjNkNWNmZGY2ZTAwZi4uNzE0ZDA1MjgzNTAwOGMgMTAwNjQ0XFxuLS0tIGEvbmV0L2NvcmUvZGV2LmNcXG4rKysgYi9uZXQvY29yZS9kZXYuY1xcbkBAIC0xODAyLDYgKzE4MDIsNyBAQCB2b2lkIG5ldGlmX2Nsb3NlX21hbnkoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwgYm9vbCB1bmxpbmspXFxuIFxcdF9fZGV2X2Nsb3NlX21hbnkoaGVhZCk7XFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGV2LCB0bXAsIGhlYWQsIGNsb3NlX2xpc3QpIHtcXG4rXFx0XFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3BzX2NvbXBhdChkZXYpO1xcbiBcXHRcXHRydG1zZ19pZmluZm8oUlRNX05FV0xJTkssIGRldiwgSUZGX1VQIHwgSUZGX1JVTk5JTkcsIEdGUF9LRVJORUwsIDAsIE5VTEwpO1xcbiBcXHRcXHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX0RPV04sIGRldik7XFxuIFxcdFxcdGlmICh1bmxpbmspXFxuQEAgLTE5MTIsOSArMTkxMywxMSBAQCBzdGF0aWMgdm9pZCBjYWxsX25ldGRldmljZV91bnJlZ2lzdGVyX25vdGlmaWVycyhzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiB7XFxuIFxcdGlmIChkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX1VQKSB7XFxuK1xcdFxcdG5ldGRldl9sb2NrX29wcyhkZXYpO1xcbiBcXHRcXHRjYWxsX25ldGRldmljZV9ub3RpZmllcihuYiwgTkVUREVWX0dPSU5HX0RPV04sXFxuIFxcdFxcdFxcdFxcdFxcdGRldik7XFxuIFxcdFxcdGNhbGxfbmV0ZGV2aWNlX25vdGlmaWVyKG5iLCBORVRERVZfRE9XTiwgZGV2KTtcXG4rXFx0XFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcXG4gXFx0fVxcbiBcXHRjYWxsX25ldGRldmljZV9ub3RpZmllcihuYiwgTkVUREVWX1VOUkVHSVNURVIsIGRldik7XFxuIH1cXG5AQCAtOTc4NSw2ICs5Nzg4LDggQEAgdm9pZCBfX2Rldl9ub3RpZnlfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG9sZF9mbGFncyxcXG4ge1xcbiBcXHR1bnNpZ25lZCBpbnQgY2hhbmdlcyA9IGRldi1cXHUwMDNlZmxhZ3MgXiBvbGRfZmxhZ3M7XFxuIFxcbitcXHRuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGRldik7XFxuK1xcbiBcXHRpZiAoZ2NoYW5nZXMpXFxuIFxcdFxcdHJ0bXNnX2lmaW5mbyhSVE1fTkVXTElOSywgZGV2LCBnY2hhbmdlcywgR0ZQX0FUT01JQywgcG9ydGlkLCBubGgpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvbG9ja19kZWJ1Zy5jIGIvbmV0L2NvcmUvbG9ja19kZWJ1Zy5jXFxuaW5kZXggOGE4MWM1NDMwNzA1MzYuLmFiYzRjMDA3MjhiMTZmIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL2xvY2tfZGVidWcuY1xcbisrKyBiL25ldC9jb3JlL2xvY2tfZGVidWcuY1xcbkBAIC0yNCwxNSArMjQsMTUgQEAgaW50IG5ldGRldl9kZWJ1Z19ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LFxcbiBcXHRjYXNlIE5FVERFVl9DSEFOR0U6XFxuIFxcdGNhc2UgTkVUREVWX1JFR0lTVEVSOlxcbiBcXHRjYXNlIE5FVERFVl9VUDpcXG4rXFx0Y2FzZSBORVRERVZfRE9XTjpcXG4rXFx0Y2FzZSBORVRERVZfR09JTkdfRE9XTjpcXG4gXFx0XFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3BzX2NvbXBhdChkZXYpO1xcbiBcXHRcXHRmYWxsdGhyb3VnaDtcXG4tXFx0Y2FzZSBORVRERVZfRE9XTjpcXG4gXFx0Y2FzZSBORVRERVZfUkVCT09UOlxcbiBcXHRjYXNlIE5FVERFVl9VTlJFR0lTVEVSOlxcbiBcXHRjYXNlIE5FVERFVl9DSEFOR0VNVFU6XFxuIFxcdGNhc2UgTkVUREVWX0NIQU5HRUFERFI6XFxuIFxcdGNhc2UgTkVUREVWX1BSRV9DSEFOR0VBRERSOlxcbi1cXHRjYXNlIE5FVERFVl9HT0lOR19ET1dOOlxcbiBcXHRjYXNlIE5FVERFVl9GRUFUX0NIQU5HRTpcXG4gXFx0Y2FzZSBORVRERVZfQk9ORElOR19GQUlMT1ZFUjpcXG4gXFx0Y2FzZSBORVRERVZfUFJFX1VQOlxcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9ydG5ldGxpbmsuYyBiL25ldC9jb3JlL3J0bmV0bGluay5jXFxuaW5kZXggMTJhYTNhYTE2ODhiMTMuLjFiN2Q2ZjZiOGI2ODY4IDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL3J0bmV0bGluay5jXFxuKysrIGIvbmV0L2NvcmUvcnRuZXRsaW5rLmNcXG5AQCAtMzY2MCwxNCArMzY2MCwxNiBAQCBpbnQgcnRubF9jb25maWd1cmVfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgaWZpbmZvbXNnICppZm0sXFxuIFxcdFxcdFxcdHUzMiBwb3J0aWQsIGNvbnN0IHN0cnVjdCBubG1zZ2hkciAqbmxoKVxcbiB7XFxuIFxcdHVuc2lnbmVkIGludCBvbGRfZmxhZ3MsIGNoYW5nZWQ7XFxuLVxcdGludCBlcnI7XFxuK1xcdGludCBlcnIgPSAwO1xcbitcXG4rXFx0bmV0ZGV2X2xvY2tfb3BzKGRldik7XFxuIFxcbiBcXHRvbGRfZmxhZ3MgPSBkZXYtXFx1MDAzZWZsYWdzO1xcbiBcXHRpZiAoaWZtIFxcdTAwMjZcXHUwMDI2IChpZm0tXFx1MDAzZWlmaV9mbGFncyB8fCBpZm0tXFx1MDAzZWlmaV9jaGFuZ2UpKSB7XFxuIFxcdFxcdGVyciA9IF9fZGV2X2NoYW5nZV9mbGFncyhkZXYsIHJ0bmxfZGV2X2NvbWJpbmVfZmxhZ3MoZGV2LCBpZm0pLFxcbiBcXHRcXHRcXHRcXHRcXHQgTlVMTCk7XFxuIFxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi1cXHRcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbiBcXG4gXFx0Y2hhbmdlZCA9IG9sZF9mbGFncyBeIGRldi1cXHUwMDNlZmxhZ3M7XFxuQEAgLTM2NzcsNyArMzY3OSwxMCBAQCBpbnQgcnRubF9jb25maWd1cmVfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgaWZpbmZvbXNnICppZm0sXFxuIFxcdH1cXG4gXFxuIFxcdF9fZGV2X25vdGlmeV9mbGFncyhkZXYsIG9sZF9mbGFncywgY2hhbmdlZCwgcG9ydGlkLCBubGgpO1xcbi1cXHRyZXR1cm4gMDtcXG4rXFxuK291dDpcXG4rXFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcXG4rXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHJ0bmxfY29uZmlndXJlX2xpbmspO1xcbiBcXG5AQCAtMzkxOCwyMiArMzkyMywyMCBAQCBzdGF0aWMgaW50IHJ0bmxfbmV3bGlua19jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlmaW5mb21zZyAqaWZtLFxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbiBcXG4tXFx0bmV0ZGV2X2xvY2tfb3BzKGRldik7XFxuLVxcbiBcXHRlcnIgPSBydG5sX2NvbmZpZ3VyZV9saW5rKGRldiwgaWZtLCBwb3J0aWQsIG5saCk7XFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiBcXHRcXHRnb3RvIG91dF91bnJlZ2lzdGVyO1xcbiBcXHRpZiAodGJbSUZMQV9NQVNURVJdKSB7XFxuK1xcdFxcdG5ldGRldl9sb2NrX29wcyhkZXYpO1xcbiBcXHRcXHRlcnIgPSBkb19zZXRfbWFzdGVyKGRldiwgbmxhX2dldF91MzIodGJbSUZMQV9NQVNURVJdKSwgZXh0YWNrKTtcXG4rXFx0XFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcXG4gXFx0XFx0aWYgKGVycilcXG4gXFx0XFx0XFx0Z290byBvdXRfdW5yZWdpc3RlcjtcXG4gXFx0fVxcbiBcXG4tXFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcXG4gb3V0OlxcbiBcXHRyZXR1cm4gZXJyO1xcbiBvdXRfdW5yZWdpc3RlcjpcXG4tXFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcXG4gXFx0aWYgKG9wcy1cXHUwMDNlbmV3bGluaykge1xcbiBcXHRcXHRMSVNUX0hFQUQobGlzdF9raWxsKTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvZHNhLmMgYi9uZXQvZHNhL2RzYS5jXFxuaW5kZXggOWNiNzMyZjZiMWUzZWQuLmRhNTNhNjY2ZDRiODJlIDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvZHNhLmNcXG4rKysgYi9uZXQvZHNhL2RzYS5jXFxuQEAgLTE4LDYgKzE4LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9uZXQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9kc2Ffc3R1YnMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRkZXZfbG9jay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L3NjaF9nZW5lcmljLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXFwiY29uZHVpdC5oXFxcIlxcbkBAIC0xNjIwLDEwICsxNjIxLDIzIEBAIHZvaWQgZHNhX3N3aXRjaF9zaHV0ZG93bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuIFxcbiBcXHRydG5sX2xvY2soKTtcXG4gXFxuLVxcdGRzYV9zd2l0Y2hfZm9yX2VhY2hfY3B1X3BvcnQoZHAsIGRzKVxcbi1cXHRcXHRsaXN0X2FkZChcXHUwMDI2ZHAtXFx1MDAzZWNvbmR1aXQtXFx1MDAzZWNsb3NlX2xpc3QsIFxcdTAwMjZjbG9zZV9saXN0KTtcXG4rXFx0ZHNhX3N3aXRjaF9mb3JfZWFjaF9jcHVfcG9ydChkcCwgZHMpIHtcXG4rXFx0XFx0aWYgKCEoZHAtXFx1MDAzZWNvbmR1aXQtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX1VQKSlcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmRwLVxcdTAwM2Vjb25kdWl0LVxcdTAwM2VjbG9zZV9saXN0LCBcXHUwMDI2Y2xvc2VfbGlzdCk7XFxuK1xcdFxcdG5ldGRldl9sb2NrX29wcyhkcC1cXHUwMDNlY29uZHVpdCk7XFxuK1xcdH1cXG4rXFxuK1xcdG5ldGlmX2Nsb3NlX21hbnkoXFx1MDAyNmNsb3NlX2xpc3QsIGZhbHNlKTtcXG4gXFxuLVxcdG5ldGlmX2Nsb3NlX21hbnkoXFx1MDAyNmNsb3NlX2xpc3QsIHRydWUpO1xcbitcXHR3aGlsZSAoIWxpc3RfZW1wdHkoXFx1MDAyNmNsb3NlX2xpc3QpKSB7XFxuK1xcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpjb25kdWl0O1xcbitcXG4rXFx0XFx0Y29uZHVpdCA9IGxpc3RfZmlyc3RfZW50cnkoXFx1MDAyNmNsb3NlX2xpc3QsIHN0cnVjdCBuZXRfZGV2aWNlLFxcbitcXHRcXHRcXHRcXHRcXHQgICBjbG9zZV9saXN0KTtcXG4rXFx0XFx0bmV0ZGV2X3VubG9ja19vcHMoY29uZHVpdCk7XFxuK1xcdFxcdGxpc3RfZGVsX2luaXQoXFx1MDAyNmNvbmR1aXQtXFx1MDAzZWNsb3NlX2xpc3QpO1xcbitcXHR9XFxuIFxcbiBcXHRkc2Ffc3dpdGNoX2Zvcl9lYWNoX3VzZXJfcG9ydChkcCwgZHMpIHtcXG4gXFx0XFx0Y29uZHVpdCA9IGRzYV9wb3J0X3RvX2NvbmR1aXQoZHApO1xcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3VzZXIuYyBiL25ldC9kc2EvdXNlci5jXFxuaW5kZXggODcwNGMxYTNhNWI3NDEuLjhlYTQ3NDQ0ZDZkNTQ3IDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdXNlci5jXFxuKysrIGIvbmV0L2RzYS91c2VyLmNcXG5AQCAtMTMsNiArMTMsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvb2ZfbmV0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9tZGlvLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tZGlvLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZGV2X2xvY2suaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9ydG5ldGxpbmsuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9wa3RfY2xzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvc2VsZnRlc3RzLmhcXHUwMDNlXFxuQEAgLTM2MDAsMTAgKzM2MDEsMjQgQEAgc3RhdGljIGludCBkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcXG4gXFx0XFx0XFx0aWYgKGRwLVxcdTAwM2VjcHVfZHAgIT0gY3B1X2RwKVxcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuLVxcdFxcdFxcdGxpc3RfYWRkKFxcdTAwMjZkcC1cXHUwMDNldXNlci1cXHUwMDNlY2xvc2VfbGlzdCwgXFx1MDAyNmNsb3NlX2xpc3QpO1xcbitcXHRcXHRcXHRpZiAoIShkcC1cXHUwMDNldXNlci1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfVVApKVxcbitcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuK1xcdFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmRwLVxcdTAwM2V1c2VyLVxcdTAwM2VjbG9zZV9saXN0LCBcXHUwMDI2Y2xvc2VfbGlzdCk7XFxuK1xcdFxcdFxcdG5ldGRldl9sb2NrX29wcyhkcC1cXHUwMDNldXNlcik7XFxuIFxcdFxcdH1cXG4gXFxuLVxcdFxcdG5ldGlmX2Nsb3NlX21hbnkoXFx1MDAyNmNsb3NlX2xpc3QsIHRydWUpO1xcbitcXHRcXHRuZXRpZl9jbG9zZV9tYW55KFxcdTAwMjZjbG9zZV9saXN0LCBmYWxzZSk7XFxuK1xcbitcXHRcXHR3aGlsZSAoIWxpc3RfZW1wdHkoXFx1MDAyNmNsb3NlX2xpc3QpKSB7XFxuK1xcdFxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyX2RldjtcXG4rXFxuK1xcdFxcdFxcdHVzZXJfZGV2ID0gbGlzdF9maXJzdF9lbnRyeShcXHUwMDI2Y2xvc2VfbGlzdCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBuZXRfZGV2aWNlLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgY2xvc2VfbGlzdCk7XFxuK1xcdFxcdFxcdG5ldGRldl91bmxvY2tfb3BzKHVzZXJfZGV2KTtcXG4rXFx0XFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2dXNlcl9kZXYtXFx1MDAzZWNsb3NlX2xpc3QpO1xcbitcXHRcXHR9XFxuIFxcbiBcXHRcXHRyZXR1cm4gTk9USUZZX09LO1xcbiBcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU0OjU5LjQwMzY5MzI1N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgxNDE2MzYwOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RTQVwiLFxuICAgIFwiTkVUX01FRElBVEVLX1NPQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5ldGlmX2Nsb3NlX21hbnlcIixcbiAgICBcImNhbGxfbmV0ZGV2aWNlX3VucmVnaXN0ZXJfbm90aWZpZXJzXCIsXG4gICAgXCJydG5sX2NvbmZpZ3VyZV9saW5rXCIsXG4gICAgXCJydG5sX25ld2xpbmtfY3JlYXRlXCIsXG4gICAgXCJkc2Ffc3dpdGNoX3NodXRkb3duXCIsXG4gICAgXCJkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnRcIixcbiAgICBcIm10a19ldGhfc2V0X2RtYV9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBiZWhhdmlvciBvZiBuZXRkZXZpY2UgZXZlbnRzLCBzcGVjaWZpY2FsbHkgdGFraW5nIHRoZSBuZXRkZXZfbG9ja19vcHMgbG9jayBhcm91bmQgTkVUREVWX0RPV04gYW5kIE5FVERFVl9HT0lOR19ET1dOIGV2ZW50cywgYW5kIHVwZGF0aW5nIHNldmVyYWwgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9ucyBhbmQgZHJpdmVycyB0byBjb21wbHkgd2l0aCB0aGlzIG5ldyBsb2NraW5nIHJlcXVpcmVtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjayBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gZGVhZGxvY2tzIG9yIGxvY2tkZXAgd2FybmluZ3MgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzAyNjRkMmNjMDg1ZGY1NjNkMTJhYjg0YTk5NjM0MjQ4NGFhNjJiZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMjI6NTQ6NTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3QgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3RcbmluZGV4IGQyYTIzOGY4Y2M4YjkxLi5kYjcxZDQyODMwMzJhMyAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdFxuKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0XG5AQCAtNDIxLDEwICs0MjEsMTcgQEAgcnVubmluZyB1bmRlciB0aGUgbG9jazpcbiAqIGBgTkVUREVWX0NIQU5HRU5BTUVgYFxuICogYGBORVRERVZfUkVHSVNURVJgYFxuICogYGBORVRERVZfVVBgYFxuKyogYGBORVRERVZfRE9XTmBgXG4rKiBgYE5FVERFVl9HT0lOR19ET1dOYGBcbiBcbiBUaGUgZm9sbG93aW5nIG5vdGlmaWVycyBhcmUgcnVubmluZyB3aXRob3V0IHRoZSBsb2NrOlxuICogYGBORVRERVZfVU5SRUdJU1RFUmBgXG4gXG4rTWFueSBTVyBkZXZpY2VzICh1cHBlcnMpIGNhdGNoIHRoZWlyIGxvd2VyJ3MgYGBORVRERVZfVU5SRUdJU1RFUmBgXG4rZXZlbnRzIGFuZCBtYXkgaW50ZXJhY3Qgd2l0aCB0aGVtIHZpYSBgYGRldl8qKClgYCBoYW5kbGVycywgd2hpY2ggdGFrZVxuK3RoZSBpbnN0YW5jZSBsb2NrLiBVbnRpbCB3ZSBjb252ZXJ0IHRoZXNlIGRldmljZXMgdG8gYGBuZXRpZl8qKClgYCB2YXJpYW50cyxcbitgYE5FVERFVl9VTlJFR0lTVEVSYGAgc3RheXMgdW5sb2NrZWQuXG4rXG4gVGhlcmUgYXJlIG5vIGNsZWFyIGV4cGVjdGF0aW9ucyBmb3IgdGhlIHJlbWFpbmluZyBub3RpZmllcnMuIE5vdGlmaWVycyBub3Qgb25cbiB0aGUgbGlzdCBtYXkgcnVuIHdpdGggb3Igd2l0aG91dCB0aGUgaW5zdGFuY2UgbG9jaywgcG90ZW50aWFsbHkgZXZlbiBpbnZva2luZ1xuIHRoZSBzYW1lIG5vdGlmaWVyIHR5cGUgd2l0aCBhbmQgd2l0aG91dCB0aGUgbG9jayBmcm9tIGRpZmZlcmVudCBjb2RlIHBhdGhzLlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXG5pbmRleCA1ZDI5MWU1MGE0N2JiOS4uZmU3NjEwYzQyZTVkMzkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXG5AQCAtMjYsNiArMjYsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHNhLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHN0X21ldGFkYXRhLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZGV2X2xvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9wYWdlX3Bvb2wvaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZ2VuYWxsb2MuaFx1MDAzZVxuIFxuQEAgLTUwMzAsMTAgKzUwMzEsMTQgQEAgdm9pZCBtdGtfZXRoX3NldF9kbWFfZGV2aWNlKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2UgKmRtYV9kZXYpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZGV2LVx1MDAzZWNsb3NlX2xpc3QsIFx1MDAyNmRldl9saXN0KTtcbitcdFx0bmV0ZGV2X2xvY2tfb3BzKGRldik7XG4gXHR9XG4gXG4gXHRuZXRpZl9jbG9zZV9tYW55KFx1MDAyNmRldl9saXN0LCBmYWxzZSk7XG4gXG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgXHUwMDI2ZGV2X2xpc3QsIGNsb3NlX2xpc3QpXG4rXHRcdG5ldGRldl91bmxvY2tfb3BzKGRldik7XG4rXG4gXHRldGgtXHUwMDNlZG1hX2RldiA9IGRtYV9kZXY7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGV2LCB0bXAsIFx1MDAyNmRldl9saXN0LCBjbG9zZV9saXN0KSB7XG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmMgYi9uZXQvY29yZS9kZXYuY1xuaW5kZXggNGIzZDVjZmRmNmUwMGYuLjcxNGQwNTI4MzUwMDhjIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZGV2LmNcbisrKyBiL25ldC9jb3JlL2Rldi5jXG5AQCAtMTgwMiw2ICsxODAyLDcgQEAgdm9pZCBuZXRpZl9jbG9zZV9tYW55KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsIGJvb2wgdW5saW5rKVxuIFx0X19kZXZfY2xvc2VfbWFueShoZWFkKTtcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXYsIHRtcCwgaGVhZCwgY2xvc2VfbGlzdCkge1xuK1x0XHRuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGRldik7XG4gXHRcdHJ0bXNnX2lmaW5mbyhSVE1fTkVXTElOSywgZGV2LCBJRkZfVVAgfCBJRkZfUlVOTklORywgR0ZQX0tFUk5FTCwgMCwgTlVMTCk7XG4gXHRcdGNhbGxfbmV0ZGV2aWNlX25vdGlmaWVycyhORVRERVZfRE9XTiwgZGV2KTtcbiBcdFx0aWYgKHVubGluaylcbkBAIC0xOTEyLDkgKzE5MTMsMTEgQEAgc3RhdGljIHZvaWQgY2FsbF9uZXRkZXZpY2VfdW5yZWdpc3Rlcl9ub3RpZmllcnMoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbiBcdFx0XHRcdFx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbiBcdGlmIChkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9VUCkge1xuK1x0XHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcbiBcdFx0Y2FsbF9uZXRkZXZpY2Vfbm90aWZpZXIobmIsIE5FVERFVl9HT0lOR19ET1dOLFxuIFx0XHRcdFx0XHRkZXYpO1xuIFx0XHRjYWxsX25ldGRldmljZV9ub3RpZmllcihuYiwgTkVUREVWX0RPV04sIGRldik7XG4rXHRcdG5ldGRldl91bmxvY2tfb3BzKGRldik7XG4gXHR9XG4gXHRjYWxsX25ldGRldmljZV9ub3RpZmllcihuYiwgTkVUREVWX1VOUkVHSVNURVIsIGRldik7XG4gfVxuQEAgLTk3ODUsNiArOTc4OCw4IEBAIHZvaWQgX19kZXZfbm90aWZ5X2ZsYWdzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBvbGRfZmxhZ3MsXG4ge1xuIFx0dW5zaWduZWQgaW50IGNoYW5nZXMgPSBkZXYtXHUwMDNlZmxhZ3MgXiBvbGRfZmxhZ3M7XG4gXG4rXHRuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGRldik7XG4rXG4gXHRpZiAoZ2NoYW5nZXMpXG4gXHRcdHJ0bXNnX2lmaW5mbyhSVE1fTkVXTElOSywgZGV2LCBnY2hhbmdlcywgR0ZQX0FUT01JQywgcG9ydGlkLCBubGgpO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2xvY2tfZGVidWcuYyBiL25ldC9jb3JlL2xvY2tfZGVidWcuY1xuaW5kZXggOGE4MWM1NDMwNzA1MzYuLmFiYzRjMDA3MjhiMTZmIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvbG9ja19kZWJ1Zy5jXG4rKysgYi9uZXQvY29yZS9sb2NrX2RlYnVnLmNcbkBAIC0yNCwxNSArMjQsMTUgQEAgaW50IG5ldGRldl9kZWJ1Z19ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LFxuIFx0Y2FzZSBORVRERVZfQ0hBTkdFOlxuIFx0Y2FzZSBORVRERVZfUkVHSVNURVI6XG4gXHRjYXNlIE5FVERFVl9VUDpcbitcdGNhc2UgTkVUREVWX0RPV046XG4rXHRjYXNlIE5FVERFVl9HT0lOR19ET1dOOlxuIFx0XHRuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGRldik7XG4gXHRcdGZhbGx0aHJvdWdoO1xuLVx0Y2FzZSBORVRERVZfRE9XTjpcbiBcdGNhc2UgTkVUREVWX1JFQk9PVDpcbiBcdGNhc2UgTkVUREVWX1VOUkVHSVNURVI6XG4gXHRjYXNlIE5FVERFVl9DSEFOR0VNVFU6XG4gXHRjYXNlIE5FVERFVl9DSEFOR0VBRERSOlxuIFx0Y2FzZSBORVRERVZfUFJFX0NIQU5HRUFERFI6XG4tXHRjYXNlIE5FVERFVl9HT0lOR19ET1dOOlxuIFx0Y2FzZSBORVRERVZfRkVBVF9DSEFOR0U6XG4gXHRjYXNlIE5FVERFVl9CT05ESU5HX0ZBSUxPVkVSOlxuIFx0Y2FzZSBORVRERVZfUFJFX1VQOlxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL3J0bmV0bGluay5jIGIvbmV0L2NvcmUvcnRuZXRsaW5rLmNcbmluZGV4IDEyYWEzYWExNjg4YjEzLi4xYjdkNmY2YjhiNjg2OCAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL3J0bmV0bGluay5jXG4rKysgYi9uZXQvY29yZS9ydG5ldGxpbmsuY1xuQEAgLTM2NjAsMTQgKzM2NjAsMTYgQEAgaW50IHJ0bmxfY29uZmlndXJlX2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGlmaW5mb21zZyAqaWZtLFxuIFx0XHRcdHUzMiBwb3J0aWQsIGNvbnN0IHN0cnVjdCBubG1zZ2hkciAqbmxoKVxuIHtcbiBcdHVuc2lnbmVkIGludCBvbGRfZmxhZ3MsIGNoYW5nZWQ7XG4tXHRpbnQgZXJyO1xuK1x0aW50IGVyciA9IDA7XG4rXG4rXHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcbiBcbiBcdG9sZF9mbGFncyA9IGRldi1cdTAwM2VmbGFncztcbiBcdGlmIChpZm0gXHUwMDI2XHUwMDI2IChpZm0tXHUwMDNlaWZpX2ZsYWdzIHx8IGlmbS1cdTAwM2VpZmlfY2hhbmdlKSkge1xuIFx0XHRlcnIgPSBfX2Rldl9jaGFuZ2VfZmxhZ3MoZGV2LCBydG5sX2Rldl9jb21iaW5lX2ZsYWdzKGRldiwgaWZtKSxcbiBcdFx0XHRcdFx0IE5VTEwpO1xuIFx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuLVx0XHRcdHJldHVybiBlcnI7XG4rXHRcdFx0Z290byBvdXQ7XG4gXHR9XG4gXG4gXHRjaGFuZ2VkID0gb2xkX2ZsYWdzIF4gZGV2LVx1MDAzZWZsYWdzO1xuQEAgLTM2NzcsNyArMzY3OSwxMCBAQCBpbnQgcnRubF9jb25maWd1cmVfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgaWZpbmZvbXNnICppZm0sXG4gXHR9XG4gXG4gXHRfX2Rldl9ub3RpZnlfZmxhZ3MoZGV2LCBvbGRfZmxhZ3MsIGNoYW5nZWQsIHBvcnRpZCwgbmxoKTtcbi1cdHJldHVybiAwO1xuK1xuK291dDpcbitcdG5ldGRldl91bmxvY2tfb3BzKGRldik7XG4rXHRyZXR1cm4gZXJyO1xuIH1cbiBFWFBPUlRfU1lNQk9MKHJ0bmxfY29uZmlndXJlX2xpbmspO1xuIFxuQEAgLTM5MTgsMjIgKzM5MjMsMjAgQEAgc3RhdGljIGludCBydG5sX25ld2xpbmtfY3JlYXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpZmluZm9tc2cgKmlmbSxcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG4gXG4tXHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcbi1cbiBcdGVyciA9IHJ0bmxfY29uZmlndXJlX2xpbmsoZGV2LCBpZm0sIHBvcnRpZCwgbmxoKTtcbiBcdGlmIChlcnIgXHUwMDNjIDApXG4gXHRcdGdvdG8gb3V0X3VucmVnaXN0ZXI7XG4gXHRpZiAodGJbSUZMQV9NQVNURVJdKSB7XG4rXHRcdG5ldGRldl9sb2NrX29wcyhkZXYpO1xuIFx0XHRlcnIgPSBkb19zZXRfbWFzdGVyKGRldiwgbmxhX2dldF91MzIodGJbSUZMQV9NQVNURVJdKSwgZXh0YWNrKTtcbitcdFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRnb3RvIG91dF91bnJlZ2lzdGVyO1xuIFx0fVxuIFxuLVx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcbiBvdXQ6XG4gXHRyZXR1cm4gZXJyO1xuIG91dF91bnJlZ2lzdGVyOlxuLVx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcbiBcdGlmIChvcHMtXHUwMDNlbmV3bGluaykge1xuIFx0XHRMSVNUX0hFQUQobGlzdF9raWxsKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL2RzYS5jIGIvbmV0L2RzYS9kc2EuY1xuaW5kZXggOWNiNzMyZjZiMWUzZWQuLmRhNTNhNjY2ZDRiODJlIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS9kc2EuY1xuKysrIGIvbmV0L2RzYS9kc2EuY1xuQEAgLTE4LDYgKzE4LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbmV0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHNhX3N0dWJzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZGV2X2xvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9zY2hfZ2VuZXJpYy5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJjb25kdWl0LmhcIlxuQEAgLTE2MjAsMTAgKzE2MjEsMjMgQEAgdm9pZCBkc2Ffc3dpdGNoX3NodXRkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbiBcbiBcdHJ0bmxfbG9jaygpO1xuIFxuLVx0ZHNhX3N3aXRjaF9mb3JfZWFjaF9jcHVfcG9ydChkcCwgZHMpXG4tXHRcdGxpc3RfYWRkKFx1MDAyNmRwLVx1MDAzZWNvbmR1aXQtXHUwMDNlY2xvc2VfbGlzdCwgXHUwMDI2Y2xvc2VfbGlzdCk7XG4rXHRkc2Ffc3dpdGNoX2Zvcl9lYWNoX2NwdV9wb3J0KGRwLCBkcykge1xuK1x0XHRpZiAoIShkcC1cdTAwM2Vjb25kdWl0LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfVVApKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRwLVx1MDAzZWNvbmR1aXQtXHUwMDNlY2xvc2VfbGlzdCwgXHUwMDI2Y2xvc2VfbGlzdCk7XG4rXHRcdG5ldGRldl9sb2NrX29wcyhkcC1cdTAwM2Vjb25kdWl0KTtcbitcdH1cbitcbitcdG5ldGlmX2Nsb3NlX21hbnkoXHUwMDI2Y2xvc2VfbGlzdCwgZmFsc2UpO1xuIFxuLVx0bmV0aWZfY2xvc2VfbWFueShcdTAwMjZjbG9zZV9saXN0LCB0cnVlKTtcbitcdHdoaWxlICghbGlzdF9lbXB0eShcdTAwMjZjbG9zZV9saXN0KSkge1xuK1x0XHRzdHJ1Y3QgbmV0X2RldmljZSAqY29uZHVpdDtcbitcbitcdFx0Y29uZHVpdCA9IGxpc3RfZmlyc3RfZW50cnkoXHUwMDI2Y2xvc2VfbGlzdCwgc3RydWN0IG5ldF9kZXZpY2UsXG4rXHRcdFx0XHRcdCAgIGNsb3NlX2xpc3QpO1xuK1x0XHRuZXRkZXZfdW5sb2NrX29wcyhjb25kdWl0KTtcbitcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZjb25kdWl0LVx1MDAzZWNsb3NlX2xpc3QpO1xuK1x0fVxuIFxuIFx0ZHNhX3N3aXRjaF9mb3JfZWFjaF91c2VyX3BvcnQoZHAsIGRzKSB7XG4gXHRcdGNvbmR1aXQgPSBkc2FfcG9ydF90b19jb25kdWl0KGRwKTtcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3VzZXIuYyBiL25ldC9kc2EvdXNlci5jXG5pbmRleCA4NzA0YzFhM2E1Yjc0MS4uOGVhNDc0NDRkNmQ1NDcgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3VzZXIuY1xuKysrIGIvbmV0L2RzYS91c2VyLmNcbkBAIC0xMyw2ICsxMyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbmV0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZGlvLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZGV2X2xvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9ydG5ldGxpbmsuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9wa3RfY2xzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvc2VsZnRlc3RzLmhcdTAwM2VcbkBAIC0zNjAwLDEwICszNjAxLDI0IEBAIHN0YXRpYyBpbnQgZHNhX3VzZXJfbmV0ZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4gXHRcdFx0aWYgKGRwLVx1MDAzZWNwdV9kcCAhPSBjcHVfZHApXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbi1cdFx0XHRsaXN0X2FkZChcdTAwMjZkcC1cdTAwM2V1c2VyLVx1MDAzZWNsb3NlX2xpc3QsIFx1MDAyNmNsb3NlX2xpc3QpO1xuK1x0XHRcdGlmICghKGRwLVx1MDAzZXVzZXItXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9VUCkpXG4rXHRcdFx0XHRjb250aW51ZTtcbitcbitcdFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRwLVx1MDAzZXVzZXItXHUwMDNlY2xvc2VfbGlzdCwgXHUwMDI2Y2xvc2VfbGlzdCk7XG4rXHRcdFx0bmV0ZGV2X2xvY2tfb3BzKGRwLVx1MDAzZXVzZXIpO1xuIFx0XHR9XG4gXG4tXHRcdG5ldGlmX2Nsb3NlX21hbnkoXHUwMDI2Y2xvc2VfbGlzdCwgdHJ1ZSk7XG4rXHRcdG5ldGlmX2Nsb3NlX21hbnkoXHUwMDI2Y2xvc2VfbGlzdCwgZmFsc2UpO1xuK1xuK1x0XHR3aGlsZSAoIWxpc3RfZW1wdHkoXHUwMDI2Y2xvc2VfbGlzdCkpIHtcbitcdFx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcl9kZXY7XG4rXG4rXHRcdFx0dXNlcl9kZXYgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNmNsb3NlX2xpc3QsXG4rXHRcdFx0XHRcdFx0ICAgIHN0cnVjdCBuZXRfZGV2aWNlLFxuK1x0XHRcdFx0XHRcdCAgICBjbG9zZV9saXN0KTtcbitcdFx0XHRuZXRkZXZfdW5sb2NrX29wcyh1c2VyX2Rldik7XG4rXHRcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZ1c2VyX2Rldi1cdTAwM2VjbG9zZV9saXN0KTtcbitcdFx0fVxuIFxuIFx0XHRyZXR1cm4gTk9USUZZX09LO1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTQ6NTkuNDAzNjk0Nzc3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTIzNjU5MzY4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDb3JlIE5ldHdvcmtpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgZnVuZGFtZW50YWxseSBhbHRlcnMgbmV0ZGV2aWNlIGxvY2tpbmcgYmVoYXZpb3IuIEl0J3MgYWRkaW5nIGBORVRERVZfRE9XTmAgYW5kIGBORVRERVZfR09JTkdfRE9XTmAgdG8gdGhlIGxpc3Qgb2Ygbm90aWZpZXJzIHRoYXQgcnVuIHVuZGVyIHRoZSBpbnN0YW5jZSBsb2NrLCBhbmQgaXQgdXBkYXRlcyBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyB0byB1c2UgdGhlIGBuZXRkZXZfbG9ja19vcHNgIGxvY2suIFRoaXMgdG91Y2hlcyBzb21lIGNyaXRpY2FsIHBhcnRzIG9mIHRoZSBuZXR3b3JraW5nIHN0YWNrLCBzbyBpdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgaW1wbGljYXRpb25zLlxuXG5IZXJlJ3MgdGhlIGJyZWFrZG93biwgYXMgSSBzZWUgaXQ6XG5cbjEuICBGaXJzdCwgdGhlIHBhdGNoIGluY2x1ZGVzIGRvY3VtZW50YXRpb24gdXBkYXRlcyBpbiBgRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0YC4gQWx3YXlzIGdvb2QgdG8gc2VlLCBjbGFyaWZpZXMgdGhlIGludGVudC5cbjIuICBUaGVuLCBjaGFuZ2VzIGluIHNwZWNpZmljIGRyaXZlcnM6IHRoZSBNZWRpYXRlayBldGhlcm5ldCBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jYCkgbm93IHRha2VzIGBuZXRkZXZfbG9ja19vcHNgIGFyb3VuZCBgbmV0aWZfY2xvc2VfbWFueWAuXG4zLiAgVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiBgbmV0L2NvcmUvZGV2LmNgLiAgYGNhbGxfbmV0ZGV2aWNlX3VucmVnaXN0ZXJfbm90aWZpZXJzYCBub3cgdXNlcyBgbmV0ZGV2X2xvY2tfb3BzYCBhcm91bmQgYE5FVERFVl9HT0lOR19ET1dOYCBhbmQgYE5FVERFVl9ET1dOYC4gSW1wb3J0YW50bHksIGl0IGFzc2VydHMgdGhlIGxvY2sgaXMgaGVsZCBpbiBgbmV0aWZfY2xvc2VfbWFueWAgYW5kIGBfX2Rldl9ub3RpZnlfZmxhZ3NgLiBUaGlzIHN0cmVuZ3RoZW5zIHRoZSBsb2NraW5nIGd1YXJhbnRlZXMuXG40LiAgYG5ldC9jb3JlL2xvY2tfZGVidWcuY2AgaGFzIGJlZW4gdXBkYXRlZCB0byBpbmNsdWRlIGBORVRERVZfRE9XTmAgYW5kIGBORVRERVZfR09JTkdfRE9XTmAgaW4gdGhlIGxpc3Qgb2YgZXZlbnRzIHJlcXVpcmluZyBgbmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3BzX2NvbXBhdGAuIEFub3RoZXIgbG9jayByZWxhdGVkIGNoZWNrLlxuNS4gIEluIGBuZXQvY29yZS9ydG5ldGxpbmsuY2AsIGBydG5sX2NvbmZpZ3VyZV9saW5rYCBub3cgdXNlcyBgbmV0ZGV2X2xvY2tfb3BzYC4gYHJ0bmxfbmV3bGlua19jcmVhdGVgIGRyb3BzIHRoZSBwcmV2aW91cyBsb2NrIGFyb3VuZCBgcnRubF9jb25maWd1cmVfbGlua2AgKGJlY2F1c2UgaXQncyBub3cgdGFrZW4gd2l0aGluIHRoYXQgZnVuY3Rpb24pIGJ1dCAqYWRkcyogdGhlIGxvY2sgYXJvdW5kIGBkb19zZXRfbWFzdGVyYC5cbjYuICBgbmV0L2RzYS9kc2EuY2AgYWxzbyBnZXRzIG1vZGlmaWVkOyBgZHNhX3N3aXRjaF9zaHV0ZG93bmAgbm93IHRha2VzIGBuZXRkZXZfbG9ja19vcHNgIGFyb3VuZCBgbmV0aWZfY2xvc2VfbWFueWAuXG43LiAgQW5kLCBpbiBgbmV0L2RzYS91c2VyLmNgLCBgZHNhX3VzZXJfbmV0ZGV2aWNlX2V2ZW50YCBub3cgdGFrZXMgdGhlIGxvY2sgYXJvdW5kIGBuZXRpZl9jbG9zZV9tYW55YC5cblxuR2l2ZW4gdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHZlcnkgY29yZSBvZiBob3cgbmV0ZGV2aWNlcyBhcmUgbG9ja2VkLCB0aGlzICphYnNvbHV0ZWx5KiByZXF1aXJlcyBmdXp6aW5nLiBXZSdyZSB0YWxraW5nIGFib3V0IGZ1bmRhbWVudGFsIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzLlxuXG5TbywgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgYXJlYXMgdG8gZm9jdXMgb24gaW4gdGVzdGluZyBhbmQgZGVidWdnaW5nLiBUaGUgY3JpdGljYWwgc3ltYm9scyB0aGF0IEkgbmVlZCB0byBrZWVwIGluIG1pbmQgYXJlOlxuXG4qICAgYG5ldGlmX2Nsb3NlX21hbnlgXG4qICAgYGNhbGxfbmV0ZGV2aWNlX3VucmVnaXN0ZXJfbm90aWZpZXJzYFxuKiAgIGBfX2Rldl9ub3RpZnlfZmxhZ3NgXG4qICAgYHJ0bmxfY29uZmlndXJlX2xpbmtgXG4qICAgYHJ0bmxfbmV3bGlua19jcmVhdGVgXG4qICAgYGRzYV9zd2l0Y2hfc2h1dGRvd25gXG4qICAgYGRzYV91c2VyX25ldGRldmljZV9ldmVudGBcbiogICBgbXRrX2V0aF9zZXRfZG1hX2RldmljZWBcblxuRmluYWxseSwgbGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgaW1wb3J0YW50IGhlcmUuIFdlIG5lZWQgYE5FVF9EU0FgIGZvciB0aGUgRFNBIGNoYW5nZXMsIG9idmlvdXNseS4gQW5kLCBmb3IgdGhlIE1lZGlhdGVrIGNoYW5nZXMsIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZy4gSSdtIGdvaW5nIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBORVRfVkVORE9SX01FRElBVEVLYCBhbmQgYE5FVF9NRURJQVRFS19TT0NgIGFyZSBjb3JyZWN0bHkgZW5hYmxlZCB3aGVuIHJ1bm5pbmcgb24gTWVkaWF0ZWsgaGFyZHdhcmUuIExldCdzIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODA0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjI0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTU6MDguNjQwMjkwNDhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc3MjI3NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9NRURJQVRFS19TT0NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnPTg9aWYgTkVUX1ZFTkRPUl9NRURJQVRFS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjEwOmNvbmZpZyBORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMTEtXFx0ZGVwZW5kcyBvbiBBUkNIX01FRElBVEVLIHx8IENPTVBJTEVfVEVTVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjE0OmNvbmZpZyBORVRfTUVESUFURUtfU09DXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgU29DIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTU6MDguNjk4MDIxMjg4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM2ODYyNzI1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgY29uZmlndXJhdGlvbnM6XG5cbioqQW5hbHl6aW5nIE5ldHdvcmsgRGV2aWNlIFN1cHBvcnQqKlxuXG5BbHJpZ2h0LCBiYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nIG9mIG5ldHdvcmtpbmcgaGFyZHdhcmUsIGVuYWJsaW5nIGBORVRfTUVESUFURUtfU09DYCBhbmQgYE5FVF9EU0FgIHNlZW1zIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgYnJvYWQgc3VwcG9ydC4gSSBmaWd1cmUsIGdvaW5nIGluLCB0aGF0IHRoZXNlIGFyZSBnb29kIGdlbmVyYWwgY29uZmlndXJhdGlvbnMuIE5vdywgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbCwgYW5kIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUsIEkgbmVlZCB0byBkZWx2ZSBpbnRvIHRoZSBgTkVUX0RTQWAgY29uZmlndXJhdGlvbi4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZXRhaWxzIHdpdGhpbiBgbmV0L2RzYS9LY29uZmlnYCB0byBjb25maXJtIGFzc3VtcHRpb25zIGFuZCBjb25zaWRlciBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvciBzcGVjaWZpYyBvcHRpb25zIGl0IG9mZmVycy4gRG9pbmcgdGhpcyBJIHNob3VsZCBnYWluIGNvbXBsZXRlIGNsYXJpdHkgb24gd2hhdCB0aGlzIGVuYWJsZW1lbnQgZW50YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ0MSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU1OjEyLjA2NjY1MDIwMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQwNjE5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0RTQVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZHNhL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2RzYS9LY29uZmlnLTItXFxubmV0L2RzYS9LY29uZmlnOjM6bWVudWNvbmZpZyBORVRfRFNBXFxubmV0L2RzYS9LY29uZmlnLTQtXFx0dHJpc3RhdGUgXFxcIkRpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmVcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWc9MTc9aWYgTkVUX0RTQVxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTIwLVxcbm5ldC9kc2EvS2NvbmZpZzoyMTpjb25maWcgTkVUX0RTQV9UQUdfTk9ORVxcbm5ldC9kc2EvS2NvbmZpZy0yMi1cXHR0cmlzdGF0ZSBcXFwiTm8tb3AgdGFnIGRyaXZlclxcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0yNi1cXG5uZXQvZHNhL0tjb25maWc6Mjc6Y29uZmlnIE5FVF9EU0FfVEFHX0FSOTMzMVxcbm5ldC9kc2EvS2NvbmZpZy0yOC1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgQXRoZXJvcyBBUjkzMzEgU29DIHdpdGggYnVpbHQtaW4gc3dpdGNoXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTMyLVxcbm5ldC9kc2EvS2NvbmZpZzozMzpjb25maWcgTkVUX0RTQV9UQUdfQlJDTV9DT01NT05cXG5uZXQvZHNhL0tjb25maWctMzQtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0zNi1cXG5uZXQvZHNhL0tjb25maWc6Mzc6Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01cXG5uZXQvZHNhL0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIEJyb2FkY29tIHN3aXRjaGVzIHVzaW5nIGluLWZyYW1lIGhlYWRlcnNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctNDMtXFxubmV0L2RzYS9LY29uZmlnOjQ0OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNX0xFR0FDWVxcbm5ldC9kc2EvS2NvbmZpZy00NS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgQkNNNjN4eCBsZWdhY3kgc3dpdGNoZXMgdXNpbmcgaW4tZnJhbWUgaGVhZGVyc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy01My1cXG5uZXQvZHNhL0tjb25maWc6NTQ6Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01fTEVHQUNZX0ZDU1xcbm5ldC9kc2EvS2NvbmZpZy01NS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgQkNNNTN4eCBsZWdhY3kgc3dpdGNoZXMgdXNpbmcgaW4tZnJhbWUgaGVhZGVyc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy02My1cXG5uZXQvZHNhL0tjb25maWc6NjQ6Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01fUFJFUEVORFxcbm5ldC9kc2EvS2NvbmZpZy02NS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgQnJvYWRjb20gc3dpdGNoZXMgdXNpbmcgcHJlcGVuZGVkIGhlYWRlcnNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctNzEtXFxubmV0L2RzYS9LY29uZmlnOjcyOmNvbmZpZyBORVRfRFNBX1RBR19IRUxMQ1JFRUtcXG5uZXQvZHNhL0tjb25maWctNzMtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIEhpcnNjaG1hbm4gSGVsbGNyZWVrIFRTTiBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy03Ny1cXG5uZXQvZHNhL0tjb25maWc6Nzg6Y29uZmlnIE5FVF9EU0FfVEFHX0dTV0lQXFxubmV0L2RzYS9LY29uZmlnLTc5LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBMYW50aXEgLyBJbnRlbCBHU1dJUCBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy04My1cXG5uZXQvZHNhL0tjb25maWc6ODQ6Y29uZmlnIE5FVF9EU0FfVEFHX0RTQV9DT01NT05cXG5uZXQvZHNhL0tjb25maWctODUtXFx0dHJpc3RhdGVcXG5uZXQvZHNhL0tjb25maWctODYtXFxubmV0L2RzYS9LY29uZmlnOjg3OmNvbmZpZyBORVRfRFNBX1RBR19EU0FcXG5uZXQvZHNhL0tjb25maWctODgtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE1hcnZlbGwgc3dpdGNoZXMgdXNpbmcgRFNBIGhlYWRlcnNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctOTMtXFxubmV0L2RzYS9LY29uZmlnOjk0OmNvbmZpZyBORVRfRFNBX1RBR19FRFNBXFxubmV0L2RzYS9LY29uZmlnLTk1LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBNYXJ2ZWxsIHN3aXRjaGVzIHVzaW5nIEV0aGVyVHlwZSBEU0EgaGVhZGVyc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xMDAtXFxubmV0L2RzYS9LY29uZmlnOjEwMTpjb25maWcgTkVUX0RTQV9UQUdfTVRLXFxubmV0L2RzYS9LY29uZmlnLTEwMi1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTWVkaWF0ZWsgc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTA2LVxcbm5ldC9kc2EvS2NvbmZpZzoxMDc6Y29uZmlnIE5FVF9EU0FfVEFHX01YTF84NjJYWFxcbm5ldC9kc2EvS2NvbmZpZy0xMDgtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE1heExpbmVhciBNeEw4NjJ4eCBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xMTMtXFxubmV0L2RzYS9LY29uZmlnOjExNDpjb25maWcgTkVUX0RTQV9UQUdfTVhMX0dTVzFYWFxcbm5ldC9kc2EvS2NvbmZpZy0xMTUtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE1heExpbmVhciBHU1cxeHggc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTIxLVxcbm5ldC9kc2EvS2NvbmZpZzoxMjI6Y29uZmlnIE5FVF9EU0FfVEFHX0tTWlxcbm5ldC9kc2EvS2NvbmZpZy0xMjMtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE1pY3JvY2hpcCA4Nzk1LzkzN3gvOTQ3Ny85ODkzIGZhbWlsaWVzIG9mIHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTEyNy1cXG5uZXQvZHNhL0tjb25maWc6MTI4OmNvbmZpZyBORVRfRFNBX1RBR19ORVRDXFxubmV0L2RzYS9LY29uZmlnLTEyOS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTlhQIE5FVEMgc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTM3LVxcbm5ldC9kc2EvS2NvbmZpZzoxMzg6Y29uZmlnIE5FVF9EU0FfVEFHX09DRUxPVFxcbm5ldC9kc2EvS2NvbmZpZy0xMzktXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE9jZWxvdCBmYW1pbHkgb2Ygc3dpdGNoZXMsIHVzaW5nIE5QSSBwb3J0XFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTE0OC1cXG5uZXQvZHNhL0tjb25maWc6MTQ5OmNvbmZpZyBORVRfRFNBX1RBR19PQ0VMT1RfODAyMVFcXG5uZXQvZHNhL0tjb25maWctMTUwLVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBPY2Vsb3QgZmFtaWx5IG9mIHN3aXRjaGVzLCB1c2luZyBWTEFOXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTE1OC1cXG5uZXQvZHNhL0tjb25maWc6MTU5OmNvbmZpZyBORVRfRFNBX1RBR19RQ0FcXG5uZXQvZHNhL0tjb25maWctMTYwLVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBRdWFsY29tbSBBdGhlcm9zIFFDQThLIHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTE2NC1cXG5uZXQvZHNhL0tjb25maWc6MTY1OmNvbmZpZyBORVRfRFNBX1RBR19SVEw0X0FcXG5uZXQvZHNhL0tjb25maWctMTY2LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBSZWFsdGVrIDQgYnl0ZSBwcm90b2NvbCBBIHRhZ3NcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTcxLVxcbm5ldC9kc2EvS2NvbmZpZzoxNzI6Y29uZmlnIE5FVF9EU0FfVEFHX1JUTDhfNFxcbm5ldC9kc2EvS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIFJlYWx0ZWsgOCBieXRlIHByb3RvY29sIDQgdGFnc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xNzctXFxubmV0L2RzYS9LY29uZmlnOjE3ODpjb25maWcgTkVUX0RTQV9UQUdfUlpOMV9BNVBTV1xcbm5ldC9kc2EvS2NvbmZpZy0xNzktXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIFJlbmVzYXMgUlovTjEgQTVQU1cgc3dpdGNoXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTE4NC1cXG5uZXQvZHNhL0tjb25maWc6MTg1OmNvbmZpZyBORVRfRFNBX1RBR19MQU45MzAzXFxubmV0L2RzYS9LY29uZmlnLTE4Ni1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgU01TQy9NaWNyb2NoaXAgTEFOOTMwMyBmYW1pbHkgb2Ygc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTkwLVxcbm5ldC9kc2EvS2NvbmZpZzoxOTE6Y29uZmlnIE5FVF9EU0FfVEFHX1NKQTExMDVcXG5uZXQvZHNhL0tjb25maWctMTkyLVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBOWFAgU0pBMTEwNSBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xOTktXFxubmV0L2RzYS9LY29uZmlnOjIwMDpjb25maWcgTkVUX0RTQV9UQUdfVFJBSUxFUlxcbm5ldC9kc2EvS2NvbmZpZy0yMDEtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIHN3aXRjaGVzIHVzaW5nIGEgdHJhaWxlciB0YWdcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMjA1LVxcbm5ldC9kc2EvS2NvbmZpZzoyMDY6Y29uZmlnIE5FVF9EU0FfVEFHX1ZTQzczWFhfODAyMVFcXG5uZXQvZHNhL0tjb25maWctMjA3LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBNaWNyb2NoaXAvVml0ZXNzZSBWU0M3M3h4IGZhbWlseSBvZiBzd2l0Y2hlcywgdXNpbmcgVkxBTlxcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0yMTEtXFxubmV0L2RzYS9LY29uZmlnOjIxMjpjb25maWcgTkVUX0RTQV9UQUdfWFJTNzAwWFxcbm5ldC9kc2EvS2NvbmZpZy0yMTMtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIFhSUzcwMHggc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMjE3LVxcbm5ldC9kc2EvS2NvbmZpZzoyMTg6Y29uZmlnIE5FVF9EU0FfVEFHX1lUOTIxWFxcbm5ldC9kc2EvS2NvbmZpZy0yMTktXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE1vdG9yY29tbSBZVDkyMXggc3dpdGNoZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU1OjEyLjEyMzA2MTQzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODMwNjUyOTEzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTmV0d29ya2luZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBlbmFibGluZyBgTkVUX0RTQWAgYW5kIGBORVRfTUVESUFURUtfU09DYCBpcyB0aGUgcmlnaHQgYXBwcm9hY2guIE5vdyBJIG5lZWQgdG8gY29uZmlybSBpZiBgTkVUX0RTQWAgYWxvbmUgaXMgc3VmZmljaWVudCwgb3IgaWYgYSBtb3JlIHNwZWNpZmljIGRyaXZlciB0YWcgaXMgbmVjZXNzYXJ5LiBJdCBzZWVtcyBgTkVUX0RTQWAgZW5hYmxlcyB0aGUgY29yZSBEU0EgZnJhbWV3b3JrLCBhbmQgdGhhdCdzIHdoZXJlIEknbGwgZmluZCBgZHNhX3N3aXRjaF9zaHV0ZG93bmAgYW5kIGBkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnRgLlxuXG5MZXQncyBsb29rIGF0IHRoZSBzeW1ib2xzIGFnYWluLiBJJ3ZlIGNvbXBpbGVkIGEgbGlzdDogYG5ldGlmX2Nsb3NlX21hbnlgLCBgY2FsbF9uZXRkZXZpY2VfdW5yZWdpc3Rlcl9ub3RpZmllcnNgLCBgX19kZXZfbm90aWZ5X2ZsYWdzYCwgYHJ0bmxfY29uZmlndXJlX2xpbmtgLCBgcnRubF9uZXdsaW5rX2NyZWF0ZWAsIGBkc2Ffc3dpdGNoX3NodXRkb3duYCwgYGRzYV91c2VyX25ldGRldmljZV9ldmVudGAsIGFuZCBgbXRrX2V0aF9zZXRfZG1hX2RldmljZWAuXG5cbkhtbSwgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBoZXJlLiBJIHNlZSB0aGF0IGBfX2Rldl9ub3RpZnlfZmxhZ3NgIGlzIGluIGBuZXQvY29yZS9kZXYuY2AgYnV0IGlzIGl0IHN0YXRpYz8gWWVzLCBzbyBpdCdzIG5vdCBleHBvcnRlZC4gYHJ0bmxfbmV3bGlua19jcmVhdGVgIGlzIGFsc28gc3RhdGljLCB3aXRoaW4gYG5ldC9jb3JlL3J0bmV0bGluay5jYC4gYGNhbGxfbmV0ZGV2aWNlX3VucmVnaXN0ZXJfbm90aWZpZXJzYCBpcyBzdGF0aWMgdG9vLCBpbiBgbmV0L2NvcmUvZGV2LmNgLiBIb3dldmVyLCBgbmV0aWZfY2xvc2VfbWFueWAsIGBydG5sX2NvbmZpZ3VyZV9saW5rYCwgYGRzYV9zd2l0Y2hfc2h1dGRvd25gLCBhbmQgYG10a19ldGhfc2V0X2RtYV9kZXZpY2VgIGFyZSBhbGwgZXhwb3J0ZWQuIGBkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnRgIGlzIHN0YXRpYyB3aXRoaW4gYG5ldC9kc2EvdXNlci5jYC5cblxuT2theSwgdGFraW5nIHRoaXMgaW50byBjb25zaWRlcmF0aW9uLCB0aGVzZSBhcmUgYWxsIGdvb2QgaW5kaWNhdG9ycyBmb3IgZnV6emluZy4gSSdsbCBmb2N1cyBvbjpcbi0gYG5ldGlmX2Nsb3NlX21hbnlgXG4tIGBjYWxsX25ldGRldmljZV91bnJlZ2lzdGVyX25vdGlmaWVyc2Bcbi0gYHJ0bmxfY29uZmlndXJlX2xpbmtgXG4tIGBydG5sX25ld2xpbmtfY3JlYXRlYFxuLSBgZHNhX3N3aXRjaF9zaHV0ZG93bmBcbi0gYGRzYV91c2VyX25ldGRldmljZV9ldmVudGBcbi0gYG10a19ldGhfc2V0X2RtYV9kZXZpY2VgXG5cblRoZXNlIGFyZSBzb2xpZCB0YXJnZXRzIGZvciBhbmFseXNpcy5cblxuQWxyaWdodCwgbGV0J3MgcmVjYXAgdGhlIHJhdGlvbmFsZSBmb3IgdGhpcyBmdXp6aW5nIGVmZm9ydC4gVGhlIHBhdGNoIGlzIGNoYW5naW5nIGhvdyB0aGUgbG9ja2luZyBpcyBtYW5hZ2VkIGZvciBuZXR3b3JrIGRldmljZSBldmVudHMuIFNwZWNpZmljYWxseSwgaXQncyBpbnRyb2R1Y2luZyB0aGUgYG5ldGRldl9sb2NrX29wc2AgbG9jayBhcm91bmQgYE5FVERFVl9ET1dOYCBhbmQgYE5FVERFVl9HT0lOR19ET1dOYCBldmVudHMuIFRoaXMgaW1wYWN0cyBzZXZlcmFsIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbnMgYW5kIHBvdGVudGlhbGx5IGRyaXZlcnMuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrLiBUaGVyZWZvcmUsIGl0J3MgYWJzb2x1dGVseSBjcnVjaWFsIHRvIGZ1enogdGhpcyB0byBjaGVjayBmb3IgcG9zc2libGUgZGVhZGxvY2tzIG9yIGxvY2tkZXAgd2FybmluZ3MgdGhhdCB0aGlzIGNvdWxkIGludHJvZHVjZS5cblxuRmluYWxseSwgSSBjb25maXJtZWQgdGhhdCBgTkVUX01FRElBVEVLX1NPQ2AgaGFzIGRlcGVuZGVuY2llcyBvbiBhIGBtdGtfZXRoX3NvYy5jYCBkcml2ZXIsIHdoaWNoIGlzIGNvbXBpbGVkIHdoZW4gdGhpcyBjb25maWcgaXMgZW5hYmxlZC4gU28gaXQgc2VlbXMgbGlrZSBgTkVUX01FRElBVEVLX1NPQ2AgaXMgdGhlIGNvcnJlY3Qgc2V0dGluZy4gSSdtIGFsbCBzZXQgdG8gcHJvY2VlZCB3aXRoIHRoaXMgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODcyMSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1NToyMC40Mjk1OTI0NjhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUyMzU1NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXRrX2V0aF9zb2Mub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZT02PW9iai0kKENPTkZJR19ORVRfTUVESUFURUtfU09DKSArPSBtdGtfZXRoLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZTo3Om10a19ldGgteSA6PSBtdGtfZXRoX3NvYy5vIG10a19ldGhfcGF0aC5vIG10a19wcGUubyBtdGtfcHBlX2RlYnVnZnMubyBtdGtfcHBlX29mZmxvYWQub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlLTgtbXRrX2V0aC0kKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCkgKz0gbXRrX3dlZC5vIG10a193ZWRfbWN1Lm8gbXRrX3dlZF93by5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU1OjIwLjQ4NDgzMzQ4NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5NzM1NDg3NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyBpZiBJJ20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZCB0aGlua2luZyB0aHJvdWdoIHRoaXM6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBDb21tYW5kIENvbmZpcm1hdGlvbioqXG5cblllcywgdGhhdCBjb25maXJtcyBpdCDigJMgYE5FVF9NRURJQVRFS19TT0NgICppcyogdGhlIGNvcnJlY3QgaWRlbnRpZmllciBmb3IgdGhlIHNpdHVhdGlvbiB3ZSdyZSBhZGRyZXNzaW5nLiBUaGF0J3MgZ29vZCwgdGhhdCdzIHdoZXJlIHdlIG5lZWQgdG8gYmUuIE5vdyB0aGF0IHdlIGhhdmUgdGhhdCBjb25maXJtYXRpb24sIGl0J3MgdGltZSB0byB0cmlnZ2VyIHRoZSBuZXh0IHN0ZXAuIEkgbmVlZCB0byBjYWxsIHRoZSBhcHByb3ByaWF0ZSBwcm9jZWR1cmUgdG8gbG9nIHRoaXMgY29uY2x1c2lvbiBhbmQgdHJpZ2dlciB0aGUgbmV4dCBzdGFnZSwgdGhhdCB3b3VsZCBiZSBgc2V0LXJlc3VsdHNgLiBMZXQncyBnZXQgdGhhdCBkb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDE3OSwiT3V0cHV0VG9rZW5zIjoxOTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1NToyNy40NTgzODQ3MDRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjkzOTcwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RTQVwiLFxuICAgIFwiTkVUX01FRElBVEVLX1NPQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5ldGlmX2Nsb3NlX21hbnlcIixcbiAgICBcImNhbGxfbmV0ZGV2aWNlX3VucmVnaXN0ZXJfbm90aWZpZXJzXCIsXG4gICAgXCJydG5sX2NvbmZpZ3VyZV9saW5rXCIsXG4gICAgXCJydG5sX25ld2xpbmtfY3JlYXRlXCIsXG4gICAgXCJkc2Ffc3dpdGNoX3NodXRkb3duXCIsXG4gICAgXCJkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnRcIixcbiAgICBcIm10a19ldGhfc2V0X2RtYV9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBiZWhhdmlvciBvZiBuZXRkZXZpY2UgZXZlbnRzLCBzcGVjaWZpY2FsbHkgdGFraW5nIHRoZSBuZXRkZXZfbG9ja19vcHMgbG9jayBhcm91bmQgTkVUREVWX0RPV04gYW5kIE5FVERFVl9HT0lOR19ET1dOIGV2ZW50cywgYW5kIHVwZGF0aW5nIHNldmVyYWwgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9ucyBhbmQgZHJpdmVycyB0byBjb21wbHkgd2l0aCB0aGlzIG5ldyBsb2NraW5nIHJlcXVpcmVtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjayBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gZGVhZGxvY2tzIG9yIGxvY2tkZXAgd2FybmluZ3MgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RTQVwiLFxuICAgIFwiTkVUX01FRElBVEVLX1NPQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5ldGlmX2Nsb3NlX21hbnlcIixcbiAgICBcImNhbGxfbmV0ZGV2aWNlX3VucmVnaXN0ZXJfbm90aWZpZXJzXCIsXG4gICAgXCJydG5sX2NvbmZpZ3VyZV9saW5rXCIsXG4gICAgXCJydG5sX25ld2xpbmtfY3JlYXRlXCIsXG4gICAgXCJkc2Ffc3dpdGNoX3NodXRkb3duXCIsXG4gICAgXCJkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnRcIixcbiAgICBcIm10a19ldGhfc2V0X2RtYV9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBiZWhhdmlvciBvZiBuZXRkZXZpY2UgZXZlbnRzLCBzcGVjaWZpY2FsbHkgdGFraW5nIHRoZSBuZXRkZXZfbG9ja19vcHMgbG9jayBhcm91bmQgTkVUREVWX0RPV04gYW5kIE5FVERFVl9HT0lOR19ET1dOIGV2ZW50cywgYW5kIHVwZGF0aW5nIHNldmVyYWwgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9ucyBhbmQgZHJpdmVycyB0byBjb21wbHkgd2l0aCB0aGlzIG5ldyBsb2NraW5nIHJlcXVpcmVtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjayBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gZGVhZGxvY2tzIG9yIGxvY2tkZXAgd2FybmluZ3MgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowbhgmc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 22:45:05 +0000 UTC FinishedAt: 2026-07-02 22:55:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "08bc5b2636afcbadc31bb17243eec094e048bd79", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DSA", "NET_MEDIATEK_SOC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "08bc5b2636afcbadc31bb17243eec094e048bd79", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DSA", "NET_MEDIATEK_SOC" ], "series_id": "d3487729-a233-4f9d-bbe6-18a85ca5338f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "netif_close_many", "call_netdevice_unregister_notifiers", "rtnl_configure_link", "rtnl_newlink_create", "dsa_switch_shutdown", "dsa_user_netdevice_event", "mtk_eth_set_dma_device" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9EU0EmIzM0OywKICAgICYjMzQ7TkVUX01FRElBVEVLX1NPQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25ldGlmX2Nsb3NlX21hbnkmIzM0OywKICAgICYjMzQ7Y2FsbF9uZXRkZXZpY2VfdW5yZWdpc3Rlcl9ub3RpZmllcnMmIzM0OywKICAgICYjMzQ7cnRubF9jb25maWd1cmVfbGluayYjMzQ7LAogICAgJiMzNDtydG5sX25ld2xpbmtfY3JlYXRlJiMzNDssCiAgICAmIzM0O2RzYV9zd2l0Y2hfc2h1dGRvd24mIzM0OywKICAgICYjMzQ7ZHNhX3VzZXJfbmV0ZGV2aWNlX2V2ZW50JiMzNDssCiAgICAmIzM0O210a19ldGhfc2V0X2RtYV9kZXZpY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tpbmcgYmVoYXZpb3Igb2YgbmV0ZGV2aWNlIGV2ZW50cywgc3BlY2lmaWNhbGx5IHRha2luZyB0aGUgbmV0ZGV2X2xvY2tfb3BzIGxvY2sgYXJvdW5kIE5FVERFVl9ET1dOIGFuZCBORVRERVZfR09JTkdfRE9XTiBldmVudHMsIGFuZCB1cGRhdGluZyBzZXZlcmFsIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbnMgYW5kIGRyaXZlcnMgdG8gY29tcGx5IHdpdGggdGhpcyBuZXcgbG9ja2luZyByZXF1aXJlbWVudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2sgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIGRlYWRsb2NrcyBvciBsb2NrZGVwIHdhcm5pbmdzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzAyNjRkMmNjMDg1ZGY1NjNkMTJhYjg0YTk5NjM0MjQ4NGFhNjJiZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMjI6NTQ6NTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0XG5pbmRleCBkMmEyMzhmOGNjOGI5MS4uZGI3MWQ0MjgzMDMyYTMgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdFxuQEAgLTQyMSwxMCAmIzQzOzQyMSwxNyBAQCBydW5uaW5nIHVuZGVyIHRoZSBsb2NrOlxuICogYGBORVRERVZfQ0hBTkdFTkFNRWBgXG4gKiBgYE5FVERFVl9SRUdJU1RFUmBgXG4gKiBgYE5FVERFVl9VUGBgXG4mIzQzOyogYGBORVRERVZfRE9XTmBgXG4mIzQzOyogYGBORVRERVZfR09JTkdfRE9XTmBgXG4gXG4gVGhlIGZvbGxvd2luZyBub3RpZmllcnMgYXJlIHJ1bm5pbmcgd2l0aG91dCB0aGUgbG9jazpcbiAqIGBgTkVUREVWX1VOUkVHSVNURVJgYFxuIFxuJiM0MztNYW55IFNXIGRldmljZXMgKHVwcGVycykgY2F0Y2ggdGhlaXIgbG93ZXImIzM5O3MgYGBORVRERVZfVU5SRUdJU1RFUmBgXG4mIzQzO2V2ZW50cyBhbmQgbWF5IGludGVyYWN0IHdpdGggdGhlbSB2aWEgYGBkZXZfKigpYGAgaGFuZGxlcnMsIHdoaWNoIHRha2VcbiYjNDM7dGhlIGluc3RhbmNlIGxvY2suIFVudGlsIHdlIGNvbnZlcnQgdGhlc2UgZGV2aWNlcyB0byBgYG5ldGlmXyooKWBgIHZhcmlhbnRzLFxuJiM0MztgYE5FVERFVl9VTlJFR0lTVEVSYGAgc3RheXMgdW5sb2NrZWQuXG4mIzQzO1xuIFRoZXJlIGFyZSBubyBjbGVhciBleHBlY3RhdGlvbnMgZm9yIHRoZSByZW1haW5pbmcgbm90aWZpZXJzLiBOb3RpZmllcnMgbm90IG9uXG4gdGhlIGxpc3QgbWF5IHJ1biB3aXRoIG9yIHdpdGhvdXQgdGhlIGluc3RhbmNlIGxvY2ssIHBvdGVudGlhbGx5IGV2ZW4gaW52b2tpbmdcbiB0aGUgc2FtZSBub3RpZmllciB0eXBlIHdpdGggYW5kIHdpdGhvdXQgdGhlIGxvY2sgZnJvbSBkaWZmZXJlbnQgY29kZSBwYXRocy5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xuaW5kZXggNWQyOTFlNTBhNDdiYjkuLmZlNzYxMGM0MmU1ZDM5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xuQEAgLTI2LDYgJiM0MzsyNiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYml0ZmllbGQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9kc2EuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9kc3RfbWV0YWRhdGEuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZGV2X2xvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9wYWdlX3Bvb2wvaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZ2VuYWxsb2MuaFx1MDAzZVxuIFxuQEAgLTUwMzAsMTAgJiM0Mzs1MDMxLDE0IEBAIHZvaWQgbXRrX2V0aF9zZXRfZG1hX2RldmljZShzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlICpkbWFfZGV2KVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRldi1cdTAwM2VjbG9zZV9saXN0LCBcdTAwMjZkZXZfbGlzdCk7XG4mIzQzO1x0XHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcbiBcdH1cbiBcbiBcdG5ldGlmX2Nsb3NlX21hbnkoXHUwMDI2ZGV2X2xpc3QsIGZhbHNlKTtcbiBcbiYjNDM7XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgXHUwMDI2ZGV2X2xpc3QsIGNsb3NlX2xpc3QpXG4mIzQzO1x0XHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xuJiM0MztcbiBcdGV0aC1cdTAwM2VkbWFfZGV2ID0gZG1hX2RldjtcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXYsIHRtcCwgXHUwMDI2ZGV2X2xpc3QsIGNsb3NlX2xpc3QpIHtcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jXG5pbmRleCA0YjNkNWNmZGY2ZTAwZi4uNzE0ZDA1MjgzNTAwOGMgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9kZXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvZGV2LmNcbkBAIC0xODAyLDYgJiM0MzsxODAyLDcgQEAgdm9pZCBuZXRpZl9jbG9zZV9tYW55KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsIGJvb2wgdW5saW5rKVxuIFx0X19kZXZfY2xvc2VfbWFueShoZWFkKTtcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXYsIHRtcCwgaGVhZCwgY2xvc2VfbGlzdCkge1xuJiM0MztcdFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3BzX2NvbXBhdChkZXYpO1xuIFx0XHRydG1zZ19pZmluZm8oUlRNX05FV0xJTkssIGRldiwgSUZGX1VQIHwgSUZGX1JVTk5JTkcsIEdGUF9LRVJORUwsIDAsIE5VTEwpO1xuIFx0XHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX0RPV04sIGRldik7XG4gXHRcdGlmICh1bmxpbmspXG5AQCAtMTkxMiw5ICYjNDM7MTkxMywxMSBAQCBzdGF0aWMgdm9pZCBjYWxsX25ldGRldmljZV91bnJlZ2lzdGVyX25vdGlmaWVycyhzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxuIFx0XHRcdFx0XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuIFx0aWYgKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1VQKSB7XG4mIzQzO1x0XHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcbiBcdFx0Y2FsbF9uZXRkZXZpY2Vfbm90aWZpZXIobmIsIE5FVERFVl9HT0lOR19ET1dOLFxuIFx0XHRcdFx0XHRkZXYpO1xuIFx0XHRjYWxsX25ldGRldmljZV9ub3RpZmllcihuYiwgTkVUREVWX0RPV04sIGRldik7XG4mIzQzO1x0XHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xuIFx0fVxuIFx0Y2FsbF9uZXRkZXZpY2Vfbm90aWZpZXIobmIsIE5FVERFVl9VTlJFR0lTVEVSLCBkZXYpO1xuIH1cbkBAIC05Nzg1LDYgJiM0Mzs5Nzg4LDggQEAgdm9pZCBfX2Rldl9ub3RpZnlfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG9sZF9mbGFncyxcbiB7XG4gXHR1bnNpZ25lZCBpbnQgY2hhbmdlcyA9IGRldi1cdTAwM2VmbGFncyBeIG9sZF9mbGFncztcbiBcbiYjNDM7XHRuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGRldik7XG4mIzQzO1xuIFx0aWYgKGdjaGFuZ2VzKVxuIFx0XHRydG1zZ19pZmluZm8oUlRNX05FV0xJTkssIGRldiwgZ2NoYW5nZXMsIEdGUF9BVE9NSUMsIHBvcnRpZCwgbmxoKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9sb2NrX2RlYnVnLmMgYi9uZXQvY29yZS9sb2NrX2RlYnVnLmNcbmluZGV4IDhhODFjNTQzMDcwNTM2Li5hYmM0YzAwNzI4YjE2ZiAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL2xvY2tfZGVidWcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvbG9ja19kZWJ1Zy5jXG5AQCAtMjQsMTUgJiM0MzsyNCwxNSBAQCBpbnQgbmV0ZGV2X2RlYnVnX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsXG4gXHRjYXNlIE5FVERFVl9DSEFOR0U6XG4gXHRjYXNlIE5FVERFVl9SRUdJU1RFUjpcbiBcdGNhc2UgTkVUREVWX1VQOlxuJiM0MztcdGNhc2UgTkVUREVWX0RPV046XG4mIzQzO1x0Y2FzZSBORVRERVZfR09JTkdfRE9XTjpcbiBcdFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3BzX2NvbXBhdChkZXYpO1xuIFx0XHRmYWxsdGhyb3VnaDtcbi1cdGNhc2UgTkVUREVWX0RPV046XG4gXHRjYXNlIE5FVERFVl9SRUJPT1Q6XG4gXHRjYXNlIE5FVERFVl9VTlJFR0lTVEVSOlxuIFx0Y2FzZSBORVRERVZfQ0hBTkdFTVRVOlxuIFx0Y2FzZSBORVRERVZfQ0hBTkdFQUREUjpcbiBcdGNhc2UgTkVUREVWX1BSRV9DSEFOR0VBRERSOlxuLVx0Y2FzZSBORVRERVZfR09JTkdfRE9XTjpcbiBcdGNhc2UgTkVUREVWX0ZFQVRfQ0hBTkdFOlxuIFx0Y2FzZSBORVRERVZfQk9ORElOR19GQUlMT1ZFUjpcbiBcdGNhc2UgTkVUREVWX1BSRV9VUDpcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9ydG5ldGxpbmsuYyBiL25ldC9jb3JlL3J0bmV0bGluay5jXG5pbmRleCAxMmFhM2FhMTY4OGIxMy4uMWI3ZDZmNmI4YjY4NjggMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9ydG5ldGxpbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvcnRuZXRsaW5rLmNcbkBAIC0zNjYwLDE0ICYjNDM7MzY2MCwxNiBAQCBpbnQgcnRubF9jb25maWd1cmVfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgaWZpbmZvbXNnICppZm0sXG4gXHRcdFx0dTMyIHBvcnRpZCwgY29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgpXG4ge1xuIFx0dW5zaWduZWQgaW50IG9sZF9mbGFncywgY2hhbmdlZDtcbi1cdGludCBlcnI7XG4mIzQzO1x0aW50IGVyciA9IDA7XG4mIzQzO1xuJiM0MztcdG5ldGRldl9sb2NrX29wcyhkZXYpO1xuIFxuIFx0b2xkX2ZsYWdzID0gZGV2LVx1MDAzZWZsYWdzO1xuIFx0aWYgKGlmbSBcdTAwMjZcdTAwMjYgKGlmbS1cdTAwM2VpZmlfZmxhZ3MgfHwgaWZtLVx1MDAzZWlmaV9jaGFuZ2UpKSB7XG4gXHRcdGVyciA9IF9fZGV2X2NoYW5nZV9mbGFncyhkZXYsIHJ0bmxfZGV2X2NvbWJpbmVfZmxhZ3MoZGV2LCBpZm0pLFxuIFx0XHRcdFx0XHQgTlVMTCk7XG4gXHRcdGlmIChlcnIgXHUwMDNjIDApXG4tXHRcdFx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdFx0Z290byBvdXQ7XG4gXHR9XG4gXG4gXHRjaGFuZ2VkID0gb2xkX2ZsYWdzIF4gZGV2LVx1MDAzZWZsYWdzO1xuQEAgLTM2NzcsNyAmIzQzOzM2NzksMTAgQEAgaW50IHJ0bmxfY29uZmlndXJlX2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGlmaW5mb21zZyAqaWZtLFxuIFx0fVxuIFxuIFx0X19kZXZfbm90aWZ5X2ZsYWdzKGRldiwgb2xkX2ZsYWdzLCBjaGFuZ2VkLCBwb3J0aWQsIG5saCk7XG4tXHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO291dDpcbiYjNDM7XHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xuJiM0MztcdHJldHVybiBlcnI7XG4gfVxuIEVYUE9SVF9TWU1CT0wocnRubF9jb25maWd1cmVfbGluayk7XG4gXG5AQCAtMzkxOCwyMiAmIzQzOzM5MjMsMjAgQEAgc3RhdGljIGludCBydG5sX25ld2xpbmtfY3JlYXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpZmluZm9tc2cgKmlmbSxcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG4gXG4tXHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcbi1cbiBcdGVyciA9IHJ0bmxfY29uZmlndXJlX2xpbmsoZGV2LCBpZm0sIHBvcnRpZCwgbmxoKTtcbiBcdGlmIChlcnIgXHUwMDNjIDApXG4gXHRcdGdvdG8gb3V0X3VucmVnaXN0ZXI7XG4gXHRpZiAodGJbSUZMQV9NQVNURVJdKSB7XG4mIzQzO1x0XHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcbiBcdFx0ZXJyID0gZG9fc2V0X21hc3RlcihkZXYsIG5sYV9nZXRfdTMyKHRiW0lGTEFfTUFTVEVSXSksIGV4dGFjayk7XG4mIzQzO1x0XHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdGdvdG8gb3V0X3VucmVnaXN0ZXI7XG4gXHR9XG4gXG4tXHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xuIG91dDpcbiBcdHJldHVybiBlcnI7XG4gb3V0X3VucmVnaXN0ZXI6XG4tXHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xuIFx0aWYgKG9wcy1cdTAwM2VuZXdsaW5rKSB7XG4gXHRcdExJU1RfSEVBRChsaXN0X2tpbGwpO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvZHNhLmMgYi9uZXQvZHNhL2RzYS5jXG5pbmRleCA5Y2I3MzJmNmIxZTNlZC4uZGE1M2E2NjZkNGI4MmUgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL2RzYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL2RzYS5jXG5AQCAtMTgsNiAmIzQzOzE4LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbmV0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHNhX3N0dWJzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbmV0L25ldGRldl9sb2NrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvc2NoX2dlbmVyaWMuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O2NvbmR1aXQuaFwmIzM0O1xuQEAgLTE2MjAsMTAgJiM0MzsxNjIxLDIzIEBAIHZvaWQgZHNhX3N3aXRjaF9zaHV0ZG93bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4gXG4gXHRydG5sX2xvY2soKTtcbiBcbi1cdGRzYV9zd2l0Y2hfZm9yX2VhY2hfY3B1X3BvcnQoZHAsIGRzKVxuLVx0XHRsaXN0X2FkZChcdTAwMjZkcC1cdTAwM2Vjb25kdWl0LVx1MDAzZWNsb3NlX2xpc3QsIFx1MDAyNmNsb3NlX2xpc3QpO1xuJiM0MztcdGRzYV9zd2l0Y2hfZm9yX2VhY2hfY3B1X3BvcnQoZHAsIGRzKSB7XG4mIzQzO1x0XHRpZiAoIShkcC1cdTAwM2Vjb25kdWl0LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfVVApKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZHAtXHUwMDNlY29uZHVpdC1cdTAwM2VjbG9zZV9saXN0LCBcdTAwMjZjbG9zZV9saXN0KTtcbiYjNDM7XHRcdG5ldGRldl9sb2NrX29wcyhkcC1cdTAwM2Vjb25kdWl0KTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdG5ldGlmX2Nsb3NlX21hbnkoXHUwMDI2Y2xvc2VfbGlzdCwgZmFsc2UpO1xuIFxuLVx0bmV0aWZfY2xvc2VfbWFueShcdTAwMjZjbG9zZV9saXN0LCB0cnVlKTtcbiYjNDM7XHR3aGlsZSAoIWxpc3RfZW1wdHkoXHUwMDI2Y2xvc2VfbGlzdCkpIHtcbiYjNDM7XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpjb25kdWl0O1xuJiM0MztcbiYjNDM7XHRcdGNvbmR1aXQgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNmNsb3NlX2xpc3QsIHN0cnVjdCBuZXRfZGV2aWNlLFxuJiM0MztcdFx0XHRcdFx0ICAgY2xvc2VfbGlzdCk7XG4mIzQzO1x0XHRuZXRkZXZfdW5sb2NrX29wcyhjb25kdWl0KTtcbiYjNDM7XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2Y29uZHVpdC1cdTAwM2VjbG9zZV9saXN0KTtcbiYjNDM7XHR9XG4gXG4gXHRkc2Ffc3dpdGNoX2Zvcl9lYWNoX3VzZXJfcG9ydChkcCwgZHMpIHtcbiBcdFx0Y29uZHVpdCA9IGRzYV9wb3J0X3RvX2NvbmR1aXQoZHApO1xuZGlmZiAtLWdpdCBhL25ldC9kc2EvdXNlci5jIGIvbmV0L2RzYS91c2VyLmNcbmluZGV4IDg3MDRjMWEzYTViNzQxLi44ZWE0NzQ0NGQ2ZDU0NyAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdXNlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3VzZXIuY1xuQEAgLTEzLDYgJiM0MzsxMyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbmV0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZGlvLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbmV0L25ldGRldl9sb2NrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvcnRuZXRsaW5rLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvcGt0X2Nscy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3NlbGZ0ZXN0cy5oXHUwMDNlXG5AQCAtMzYwMCwxMCAmIzQzOzM2MDEsMjQgQEAgc3RhdGljIGludCBkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbiBcdFx0XHRpZiAoZHAtXHUwMDNlY3B1X2RwICE9IGNwdV9kcClcbiBcdFx0XHRcdGNvbnRpbnVlO1xuIFxuLVx0XHRcdGxpc3RfYWRkKFx1MDAyNmRwLVx1MDAzZXVzZXItXHUwMDNlY2xvc2VfbGlzdCwgXHUwMDI2Y2xvc2VfbGlzdCk7XG4mIzQzO1x0XHRcdGlmICghKGRwLVx1MDAzZXVzZXItXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9VUCkpXG4mIzQzO1x0XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRwLVx1MDAzZXVzZXItXHUwMDNlY2xvc2VfbGlzdCwgXHUwMDI2Y2xvc2VfbGlzdCk7XG4mIzQzO1x0XHRcdG5ldGRldl9sb2NrX29wcyhkcC1cdTAwM2V1c2VyKTtcbiBcdFx0fVxuIFxuLVx0XHRuZXRpZl9jbG9zZV9tYW55KFx1MDAyNmNsb3NlX2xpc3QsIHRydWUpO1xuJiM0MztcdFx0bmV0aWZfY2xvc2VfbWFueShcdTAwMjZjbG9zZV9saXN0LCBmYWxzZSk7XG4mIzQzO1xuJiM0MztcdFx0d2hpbGUgKCFsaXN0X2VtcHR5KFx1MDAyNmNsb3NlX2xpc3QpKSB7XG4mIzQzO1x0XHRcdHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyX2RldjtcbiYjNDM7XG4mIzQzO1x0XHRcdHVzZXJfZGV2ID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZjbG9zZV9saXN0LFxuJiM0MztcdFx0XHRcdFx0XHQgICAgc3RydWN0IG5ldF9kZXZpY2UsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICBjbG9zZV9saXN0KTtcbiYjNDM7XHRcdFx0bmV0ZGV2X3VubG9ja19vcHModXNlcl9kZXYpO1xuJiM0MztcdFx0XHRsaXN0X2RlbF9pbml0KFx1MDAyNnVzZXJfZGV2LVx1MDAzZWNsb3NlX2xpc3QpO1xuJiM0MztcdFx0fVxuIFxuIFx0XHRyZXR1cm4gTk9USUZZX09LO1xuIFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9EU0EmIzM0OywKICAgICYjMzQ7TkVUX01FRElBVEVLX1NPQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25ldGlmX2Nsb3NlX21hbnkmIzM0OywKICAgICYjMzQ7Y2FsbF9uZXRkZXZpY2VfdW5yZWdpc3Rlcl9ub3RpZmllcnMmIzM0OywKICAgICYjMzQ7cnRubF9jb25maWd1cmVfbGluayYjMzQ7LAogICAgJiMzNDtydG5sX25ld2xpbmtfY3JlYXRlJiMzNDssCiAgICAmIzM0O2RzYV9zd2l0Y2hfc2h1dGRvd24mIzM0OywKICAgICYjMzQ7ZHNhX3VzZXJfbmV0ZGV2aWNlX2V2ZW50JiMzNDssCiAgICAmIzM0O210a19ldGhfc2V0X2RtYV9kZXZpY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tpbmcgYmVoYXZpb3Igb2YgbmV0ZGV2aWNlIGV2ZW50cywgc3BlY2lmaWNhbGx5IHRha2luZyB0aGUgbmV0ZGV2X2xvY2tfb3BzIGxvY2sgYXJvdW5kIE5FVERFVl9ET1dOIGFuZCBORVRERVZfR09JTkdfRE9XTiBldmVudHMsIGFuZCB1cGRhdGluZyBzZXZlcmFsIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbnMgYW5kIGRyaXZlcnMgdG8gY29tcGx5IHdpdGggdGhpcyBuZXcgbG9ja2luZyByZXF1aXJlbWVudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2sgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIGRlYWRsb2NrcyBvciBsb2NrZGVwIHdhcm5pbmdzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzMDI2NGQyY2MwODVkZjU2M2QxMmFiODRhOTk2MzQyNDg0YWE2MmJmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAyMjo1NDo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdAppbmRleCBkMmEyMzhmOGNjOGI5MS4uZGI3MWQ0MjgzMDMyYTMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3QKQEAgLTQyMSwxMCAmIzQzOzQyMSwxNyBAQCBydW5uaW5nIHVuZGVyIHRoZSBsb2NrOgogKiBgYE5FVERFVl9DSEFOR0VOQU1FYGAKICogYGBORVRERVZfUkVHSVNURVJgYAogKiBgYE5FVERFVl9VUGBgCiYjNDM7KiBgYE5FVERFVl9ET1dOYGAKJiM0MzsqIGBgTkVUREVWX0dPSU5HX0RPV05gYAogCiBUaGUgZm9sbG93aW5nIG5vdGlmaWVycyBhcmUgcnVubmluZyB3aXRob3V0IHRoZSBsb2NrOgogKiBgYE5FVERFVl9VTlJFR0lTVEVSYGAKIAomIzQzO01hbnkgU1cgZGV2aWNlcyAodXBwZXJzKSBjYXRjaCB0aGVpciBsb3dlciYjMzk7cyBgYE5FVERFVl9VTlJFR0lTVEVSYGAKJiM0MztldmVudHMgYW5kIG1heSBpbnRlcmFjdCB3aXRoIHRoZW0gdmlhIGBgZGV2XyooKWBgIGhhbmRsZXJzLCB3aGljaCB0YWtlCiYjNDM7dGhlIGluc3RhbmNlIGxvY2suIFVudGlsIHdlIGNvbnZlcnQgdGhlc2UgZGV2aWNlcyB0byBgYG5ldGlmXyooKWBgIHZhcmlhbnRzLAomIzQzO2BgTkVUREVWX1VOUkVHSVNURVJgYCBzdGF5cyB1bmxvY2tlZC4KJiM0MzsKIFRoZXJlIGFyZSBubyBjbGVhciBleHBlY3RhdGlvbnMgZm9yIHRoZSByZW1haW5pbmcgbm90aWZpZXJzLiBOb3RpZmllcnMgbm90IG9uCiB0aGUgbGlzdCBtYXkgcnVuIHdpdGggb3Igd2l0aG91dCB0aGUgaW5zdGFuY2UgbG9jaywgcG90ZW50aWFsbHkgZXZlbiBpbnZva2luZwogdGhlIHNhbWUgbm90aWZpZXIgdHlwZSB3aXRoIGFuZCB3aXRob3V0IHRoZSBsb2NrIGZyb20gZGlmZmVyZW50IGNvZGUgcGF0aHMuCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYwppbmRleCA1ZDI5MWU1MGE0N2JiOS4uZmU3NjEwYzQyZTVkMzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYwpAQCAtMjYsNiAmIzQzOzI2LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9iaXRmaWVsZC5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9kc2EuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvZHN0X21ldGFkYXRhLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O25ldC9uZXRkZXZfbG9jay5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9wYWdlX3Bvb2wvaGVscGVycy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2dlbmFsbG9jLmgmZ3Q7CiAKQEAgLTUwMzAsMTAgJiM0Mzs1MDMxLDE0IEBAIHZvaWQgbXRrX2V0aF9zZXRfZG1hX2RldmljZShzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlICpkbWFfZGV2KQogCQkJY29udGludWU7CiAKIAkJbGlzdF9hZGRfdGFpbCgmYW1wO2Rldi0mZ3Q7Y2xvc2VfbGlzdCwgJmFtcDtkZXZfbGlzdCk7CiYjNDM7CQluZXRkZXZfbG9ja19vcHMoZGV2KTsKIAl9CiAKIAluZXRpZl9jbG9zZV9tYW55KCZhbXA7ZGV2X2xpc3QsIGZhbHNlKTsKIAomIzQzOwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgJmFtcDtkZXZfbGlzdCwgY2xvc2VfbGlzdCkKJiM0MzsJCW5ldGRldl91bmxvY2tfb3BzKGRldik7CiYjNDM7CiAJZXRoLSZndDtkbWFfZGV2ID0gZG1hX2RldjsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXYsIHRtcCwgJmFtcDtkZXZfbGlzdCwgY2xvc2VfbGlzdCkgewpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmMgYi9uZXQvY29yZS9kZXYuYwppbmRleCA0YjNkNWNmZGY2ZTAwZi4uNzE0ZDA1MjgzNTAwOGMgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL2Rldi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL2Rldi5jCkBAIC0xODAyLDYgJiM0MzsxODAyLDcgQEAgdm9pZCBuZXRpZl9jbG9zZV9tYW55KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsIGJvb2wgdW5saW5rKQogCV9fZGV2X2Nsb3NlX21hbnkoaGVhZCk7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGV2LCB0bXAsIGhlYWQsIGNsb3NlX2xpc3QpIHsKJiM0MzsJCW5ldGRldl9hc3NlcnRfbG9ja2VkX29wc19jb21wYXQoZGV2KTsKIAkJcnRtc2dfaWZpbmZvKFJUTV9ORVdMSU5LLCBkZXYsIElGRl9VUCB8IElGRl9SVU5OSU5HLCBHRlBfS0VSTkVMLCAwLCBOVUxMKTsKIAkJY2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKE5FVERFVl9ET1dOLCBkZXYpOwogCQlpZiAodW5saW5rKQpAQCAtMTkxMiw5ICYjNDM7MTkxMywxMSBAQCBzdGF0aWMgdm9pZCBjYWxsX25ldGRldmljZV91bnJlZ2lzdGVyX25vdGlmaWVycyhzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLAogCQkJCQkJc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKIAlpZiAoZGV2LSZndDtmbGFncyAmYW1wOyBJRkZfVVApIHsKJiM0MzsJCW5ldGRldl9sb2NrX29wcyhkZXYpOwogCQljYWxsX25ldGRldmljZV9ub3RpZmllcihuYiwgTkVUREVWX0dPSU5HX0RPV04sCiAJCQkJCWRldik7CiAJCWNhbGxfbmV0ZGV2aWNlX25vdGlmaWVyKG5iLCBORVRERVZfRE9XTiwgZGV2KTsKJiM0MzsJCW5ldGRldl91bmxvY2tfb3BzKGRldik7CiAJfQogCWNhbGxfbmV0ZGV2aWNlX25vdGlmaWVyKG5iLCBORVRERVZfVU5SRUdJU1RFUiwgZGV2KTsKIH0KQEAgLTk3ODUsNiAmIzQzOzk3ODgsOCBAQCB2b2lkIF9fZGV2X25vdGlmeV9mbGFncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgb2xkX2ZsYWdzLAogewogCXVuc2lnbmVkIGludCBjaGFuZ2VzID0gZGV2LSZndDtmbGFncyBeIG9sZF9mbGFnczsKIAomIzQzOwluZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGRldik7CiYjNDM7CiAJaWYgKGdjaGFuZ2VzKQogCQlydG1zZ19pZmluZm8oUlRNX05FV0xJTkssIGRldiwgZ2NoYW5nZXMsIEdGUF9BVE9NSUMsIHBvcnRpZCwgbmxoKTsKIApkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvbG9ja19kZWJ1Zy5jIGIvbmV0L2NvcmUvbG9ja19kZWJ1Zy5jCmluZGV4IDhhODFjNTQzMDcwNTM2Li5hYmM0YzAwNzI4YjE2ZiAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvbG9ja19kZWJ1Zy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL2xvY2tfZGVidWcuYwpAQCAtMjQsMTUgJiM0MzsyNCwxNSBAQCBpbnQgbmV0ZGV2X2RlYnVnX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsCiAJY2FzZSBORVRERVZfQ0hBTkdFOgogCWNhc2UgTkVUREVWX1JFR0lTVEVSOgogCWNhc2UgTkVUREVWX1VQOgomIzQzOwljYXNlIE5FVERFVl9ET1dOOgomIzQzOwljYXNlIE5FVERFVl9HT0lOR19ET1dOOgogCQluZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGRldik7CiAJCWZhbGx0aHJvdWdoOwotCWNhc2UgTkVUREVWX0RPV046CiAJY2FzZSBORVRERVZfUkVCT09UOgogCWNhc2UgTkVUREVWX1VOUkVHSVNURVI6CiAJY2FzZSBORVRERVZfQ0hBTkdFTVRVOgogCWNhc2UgTkVUREVWX0NIQU5HRUFERFI6CiAJY2FzZSBORVRERVZfUFJFX0NIQU5HRUFERFI6Ci0JY2FzZSBORVRERVZfR09JTkdfRE9XTjoKIAljYXNlIE5FVERFVl9GRUFUX0NIQU5HRToKIAljYXNlIE5FVERFVl9CT05ESU5HX0ZBSUxPVkVSOgogCWNhc2UgTkVUREVWX1BSRV9VUDoKZGlmZiAtLWdpdCBhL25ldC9jb3JlL3J0bmV0bGluay5jIGIvbmV0L2NvcmUvcnRuZXRsaW5rLmMKaW5kZXggMTJhYTNhYTE2ODhiMTMuLjFiN2Q2ZjZiOGI2ODY4IDEwMDY0NAotLS0gYS9uZXQvY29yZS9ydG5ldGxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9ydG5ldGxpbmsuYwpAQCAtMzY2MCwxNCAmIzQzOzM2NjAsMTYgQEAgaW50IHJ0bmxfY29uZmlndXJlX2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGlmaW5mb21zZyAqaWZtLAogCQkJdTMyIHBvcnRpZCwgY29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgpCiB7CiAJdW5zaWduZWQgaW50IG9sZF9mbGFncywgY2hhbmdlZDsKLQlpbnQgZXJyOwomIzQzOwlpbnQgZXJyID0gMDsKJiM0MzsKJiM0MzsJbmV0ZGV2X2xvY2tfb3BzKGRldik7CiAKIAlvbGRfZmxhZ3MgPSBkZXYtJmd0O2ZsYWdzOwogCWlmIChpZm0gJmFtcDsmYW1wOyAoaWZtLSZndDtpZmlfZmxhZ3MgfHwgaWZtLSZndDtpZmlfY2hhbmdlKSkgewogCQllcnIgPSBfX2Rldl9jaGFuZ2VfZmxhZ3MoZGV2LCBydG5sX2Rldl9jb21iaW5lX2ZsYWdzKGRldiwgaWZtKSwKIAkJCQkJIE5VTEwpOwogCQlpZiAoZXJyICZsdDsgMCkKLQkJCXJldHVybiBlcnI7CiYjNDM7CQkJZ290byBvdXQ7CiAJfQogCiAJY2hhbmdlZCA9IG9sZF9mbGFncyBeIGRldi0mZ3Q7ZmxhZ3M7CkBAIC0zNjc3LDcgJiM0MzszNjc5LDEwIEBAIGludCBydG5sX2NvbmZpZ3VyZV9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBpZmluZm9tc2cgKmlmbSwKIAl9CiAKIAlfX2Rldl9ub3RpZnlfZmxhZ3MoZGV2LCBvbGRfZmxhZ3MsIGNoYW5nZWQsIHBvcnRpZCwgbmxoKTsKLQlyZXR1cm4gMDsKJiM0MzsKJiM0MztvdXQ6CiYjNDM7CW5ldGRldl91bmxvY2tfb3BzKGRldik7CiYjNDM7CXJldHVybiBlcnI7CiB9CiBFWFBPUlRfU1lNQk9MKHJ0bmxfY29uZmlndXJlX2xpbmspOwogCkBAIC0zOTE4LDIyICYjNDM7MzkyMywyMCBAQCBzdGF0aWMgaW50IHJ0bmxfbmV3bGlua19jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlmaW5mb21zZyAqaWZtLAogCQlnb3RvIG91dDsKIAl9CiAKLQluZXRkZXZfbG9ja19vcHMoZGV2KTsKLQogCWVyciA9IHJ0bmxfY29uZmlndXJlX2xpbmsoZGV2LCBpZm0sIHBvcnRpZCwgbmxoKTsKIAlpZiAoZXJyICZsdDsgMCkKIAkJZ290byBvdXRfdW5yZWdpc3RlcjsKIAlpZiAodGJbSUZMQV9NQVNURVJdKSB7CiYjNDM7CQluZXRkZXZfbG9ja19vcHMoZGV2KTsKIAkJZXJyID0gZG9fc2V0X21hc3RlcihkZXYsIG5sYV9nZXRfdTMyKHRiW0lGTEFfTUFTVEVSXSksIGV4dGFjayk7CiYjNDM7CQluZXRkZXZfdW5sb2NrX29wcyhkZXYpOwogCQlpZiAoZXJyKQogCQkJZ290byBvdXRfdW5yZWdpc3RlcjsKIAl9CiAKLQluZXRkZXZfdW5sb2NrX29wcyhkZXYpOwogb3V0OgogCXJldHVybiBlcnI7CiBvdXRfdW5yZWdpc3RlcjoKLQluZXRkZXZfdW5sb2NrX29wcyhkZXYpOwogCWlmIChvcHMtJmd0O25ld2xpbmspIHsKIAkJTElTVF9IRUFEKGxpc3Rfa2lsbCk7CiAKZGlmZiAtLWdpdCBhL25ldC9kc2EvZHNhLmMgYi9uZXQvZHNhL2RzYS5jCmluZGV4IDljYjczMmY2YjFlM2VkLi5kYTUzYTY2NmQ0YjgyZSAxMDA2NDQKLS0tIGEvbmV0L2RzYS9kc2EuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL2RzYS5jCkBAIC0xOCw2ICYjNDM7MTgsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L29mLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvb2ZfbmV0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L2RzYV9zdHVicy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtuZXQvbmV0ZGV2X2xvY2suaCZndDsKICNpbmNsdWRlICZsdDtuZXQvc2NoX2dlbmVyaWMuaCZndDsKIAogI2luY2x1ZGUgJiMzNDtjb25kdWl0LmgmIzM0OwpAQCAtMTYyMCwxMCAmIzQzOzE2MjEsMjMgQEAgdm9pZCBkc2Ffc3dpdGNoX3NodXRkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykKIAogCXJ0bmxfbG9jaygpOwogCi0JZHNhX3N3aXRjaF9mb3JfZWFjaF9jcHVfcG9ydChkcCwgZHMpCi0JCWxpc3RfYWRkKCZhbXA7ZHAtJmd0O2NvbmR1aXQtJmd0O2Nsb3NlX2xpc3QsICZhbXA7Y2xvc2VfbGlzdCk7CiYjNDM7CWRzYV9zd2l0Y2hfZm9yX2VhY2hfY3B1X3BvcnQoZHAsIGRzKSB7CiYjNDM7CQlpZiAoIShkcC0mZ3Q7Y29uZHVpdC0mZ3Q7ZmxhZ3MgJmFtcDsgSUZGX1VQKSkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCWxpc3RfYWRkX3RhaWwoJmFtcDtkcC0mZ3Q7Y29uZHVpdC0mZ3Q7Y2xvc2VfbGlzdCwgJmFtcDtjbG9zZV9saXN0KTsKJiM0MzsJCW5ldGRldl9sb2NrX29wcyhkcC0mZ3Q7Y29uZHVpdCk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJbmV0aWZfY2xvc2VfbWFueSgmYW1wO2Nsb3NlX2xpc3QsIGZhbHNlKTsKIAotCW5ldGlmX2Nsb3NlX21hbnkoJmFtcDtjbG9zZV9saXN0LCB0cnVlKTsKJiM0MzsJd2hpbGUgKCFsaXN0X2VtcHR5KCZhbXA7Y2xvc2VfbGlzdCkpIHsKJiM0MzsJCXN0cnVjdCBuZXRfZGV2aWNlICpjb25kdWl0OwomIzQzOwomIzQzOwkJY29uZHVpdCA9IGxpc3RfZmlyc3RfZW50cnkoJmFtcDtjbG9zZV9saXN0LCBzdHJ1Y3QgbmV0X2RldmljZSwKJiM0MzsJCQkJCSAgIGNsb3NlX2xpc3QpOwomIzQzOwkJbmV0ZGV2X3VubG9ja19vcHMoY29uZHVpdCk7CiYjNDM7CQlsaXN0X2RlbF9pbml0KCZhbXA7Y29uZHVpdC0mZ3Q7Y2xvc2VfbGlzdCk7CiYjNDM7CX0KIAogCWRzYV9zd2l0Y2hfZm9yX2VhY2hfdXNlcl9wb3J0KGRwLCBkcykgewogCQljb25kdWl0ID0gZHNhX3BvcnRfdG9fY29uZHVpdChkcCk7CmRpZmYgLS1naXQgYS9uZXQvZHNhL3VzZXIuYyBiL25ldC9kc2EvdXNlci5jCmluZGV4IDg3MDRjMWEzYTViNzQxLi44ZWE0NzQ0NGQ2ZDU0NyAxMDA2NDQKLS0tIGEvbmV0L2RzYS91c2VyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS91c2VyLmMKQEAgLTEzLDYgJiM0MzsxMyw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvb2ZfbmV0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvb2ZfbWRpby5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21kaW8uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bmV0L25ldGRldl9sb2NrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L3J0bmV0bGluay5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9wa3RfY2xzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L3NlbGZ0ZXN0cy5oJmd0OwpAQCAtMzYwMCwxMCAmIzQzOzM2MDEsMjQgQEAgc3RhdGljIGludCBkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwKIAkJCWlmIChkcC0mZ3Q7Y3B1X2RwICE9IGNwdV9kcCkKIAkJCQljb250aW51ZTsKIAotCQkJbGlzdF9hZGQoJmFtcDtkcC0mZ3Q7dXNlci0mZ3Q7Y2xvc2VfbGlzdCwgJmFtcDtjbG9zZV9saXN0KTsKJiM0MzsJCQlpZiAoIShkcC0mZ3Q7dXNlci0mZ3Q7ZmxhZ3MgJmFtcDsgSUZGX1VQKSkKJiM0MzsJCQkJY29udGludWU7CiYjNDM7CiYjNDM7CQkJbGlzdF9hZGRfdGFpbCgmYW1wO2RwLSZndDt1c2VyLSZndDtjbG9zZV9saXN0LCAmYW1wO2Nsb3NlX2xpc3QpOwomIzQzOwkJCW5ldGRldl9sb2NrX29wcyhkcC0mZ3Q7dXNlcik7CiAJCX0KIAotCQluZXRpZl9jbG9zZV9tYW55KCZhbXA7Y2xvc2VfbGlzdCwgdHJ1ZSk7CiYjNDM7CQluZXRpZl9jbG9zZV9tYW55KCZhbXA7Y2xvc2VfbGlzdCwgZmFsc2UpOwomIzQzOwomIzQzOwkJd2hpbGUgKCFsaXN0X2VtcHR5KCZhbXA7Y2xvc2VfbGlzdCkpIHsKJiM0MzsJCQlzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcl9kZXY7CiYjNDM7CiYjNDM7CQkJdXNlcl9kZXYgPSBsaXN0X2ZpcnN0X2VudHJ5KCZhbXA7Y2xvc2VfbGlzdCwKJiM0MzsJCQkJCQkgICAgc3RydWN0IG5ldF9kZXZpY2UsCiYjNDM7CQkJCQkJICAgIGNsb3NlX2xpc3QpOwomIzQzOwkJCW5ldGRldl91bmxvY2tfb3BzKHVzZXJfZGV2KTsKJiM0MzsJCQlsaXN0X2RlbF9pbml0KCZhbXA7dXNlcl9kZXYtJmd0O2Nsb3NlX2xpc3QpOwomIzQzOwkJfQogCiAJCXJldHVybiBOT1RJRllfT0s7CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODA0CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNjI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENvcmUgTmV0d29ya2luZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IGZ1bmRhbWVudGFsbHkgYWx0ZXJzIG5ldGRldmljZSBsb2NraW5nIGJlaGF2aW9yLiBJdCYjMzk7cyBhZGRpbmcgYE5FVERFVl9ET1dOYCBhbmQgYE5FVERFVl9HT0lOR19ET1dOYCB0byB0aGUgbGlzdCBvZiBub3RpZmllcnMgdGhhdCBydW4gdW5kZXIgdGhlIGluc3RhbmNlIGxvY2ssIGFuZCBpdCB1cGRhdGVzIGEgYnVuY2ggb2YgZnVuY3Rpb25zIHRvIHVzZSB0aGUgYG5ldGRldl9sb2NrX29wc2AgbG9jay4gVGhpcyB0b3VjaGVzIHNvbWUgY3JpdGljYWwgcGFydHMgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2ssIHNvIGl0JiMzOTtzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgaW1wbGljYXRpb25zLgoKSGVyZSYjMzk7cyB0aGUgYnJlYWtkb3duLCBhcyBJIHNlZSBpdDoKCjEuICBGaXJzdCwgdGhlIHBhdGNoIGluY2x1ZGVzIGRvY3VtZW50YXRpb24gdXBkYXRlcyBpbiBgRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0YC4gQWx3YXlzIGdvb2QgdG8gc2VlLCBjbGFyaWZpZXMgdGhlIGludGVudC4KMi4gIFRoZW4sIGNoYW5nZXMgaW4gc3BlY2lmaWMgZHJpdmVyczogdGhlIE1lZGlhdGVrIGV0aGVybmV0IGRyaXZlciAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmNgKSBub3cgdGFrZXMgYG5ldGRldl9sb2NrX29wc2AgYXJvdW5kIGBuZXRpZl9jbG9zZV9tYW55YC4KMy4gIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgaW4gYG5ldC9jb3JlL2Rldi5jYC4gIGBjYWxsX25ldGRldmljZV91bnJlZ2lzdGVyX25vdGlmaWVyc2Agbm93IHVzZXMgYG5ldGRldl9sb2NrX29wc2AgYXJvdW5kIGBORVRERVZfR09JTkdfRE9XTmAgYW5kIGBORVRERVZfRE9XTmAuIEltcG9ydGFudGx5LCBpdCBhc3NlcnRzIHRoZSBsb2NrIGlzIGhlbGQgaW4gYG5ldGlmX2Nsb3NlX21hbnlgIGFuZCBgX19kZXZfbm90aWZ5X2ZsYWdzYC4gVGhpcyBzdHJlbmd0aGVucyB0aGUgbG9ja2luZyBndWFyYW50ZWVzLgo0LiAgYG5ldC9jb3JlL2xvY2tfZGVidWcuY2AgaGFzIGJlZW4gdXBkYXRlZCB0byBpbmNsdWRlIGBORVRERVZfRE9XTmAgYW5kIGBORVRERVZfR09JTkdfRE9XTmAgaW4gdGhlIGxpc3Qgb2YgZXZlbnRzIHJlcXVpcmluZyBgbmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3BzX2NvbXBhdGAuIEFub3RoZXIgbG9jayByZWxhdGVkIGNoZWNrLgo1LiAgSW4gYG5ldC9jb3JlL3J0bmV0bGluay5jYCwgYHJ0bmxfY29uZmlndXJlX2xpbmtgIG5vdyB1c2VzIGBuZXRkZXZfbG9ja19vcHNgLiBgcnRubF9uZXdsaW5rX2NyZWF0ZWAgZHJvcHMgdGhlIHByZXZpb3VzIGxvY2sgYXJvdW5kIGBydG5sX2NvbmZpZ3VyZV9saW5rYCAoYmVjYXVzZSBpdCYjMzk7cyBub3cgdGFrZW4gd2l0aGluIHRoYXQgZnVuY3Rpb24pIGJ1dCAqYWRkcyogdGhlIGxvY2sgYXJvdW5kIGBkb19zZXRfbWFzdGVyYC4KNi4gIGBuZXQvZHNhL2RzYS5jYCBhbHNvIGdldHMgbW9kaWZpZWQ7IGBkc2Ffc3dpdGNoX3NodXRkb3duYCBub3cgdGFrZXMgYG5ldGRldl9sb2NrX29wc2AgYXJvdW5kIGBuZXRpZl9jbG9zZV9tYW55YC4KNy4gIEFuZCwgaW4gYG5ldC9kc2EvdXNlci5jYCwgYGRzYV91c2VyX25ldGRldmljZV9ldmVudGAgbm93IHRha2VzIHRoZSBsb2NrIGFyb3VuZCBgbmV0aWZfY2xvc2VfbWFueWAuCgpHaXZlbiB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdmVyeSBjb3JlIG9mIGhvdyBuZXRkZXZpY2VzIGFyZSBsb2NrZWQsIHRoaXMgKmFic29sdXRlbHkqIHJlcXVpcmVzIGZ1enppbmcuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGZ1bmRhbWVudGFsIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzLgoKU28sIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGFyZWFzIHRvIGZvY3VzIG9uIGluIHRlc3RpbmcgYW5kIGRlYnVnZ2luZy4gVGhlIGNyaXRpY2FsIHN5bWJvbHMgdGhhdCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIGFyZToKCiogICBgbmV0aWZfY2xvc2VfbWFueWAKKiAgIGBjYWxsX25ldGRldmljZV91bnJlZ2lzdGVyX25vdGlmaWVyc2AKKiAgIGBfX2Rldl9ub3RpZnlfZmxhZ3NgCiogICBgcnRubF9jb25maWd1cmVfbGlua2AKKiAgIGBydG5sX25ld2xpbmtfY3JlYXRlYAoqICAgYGRzYV9zd2l0Y2hfc2h1dGRvd25gCiogICBgZHNhX3VzZXJfbmV0ZGV2aWNlX2V2ZW50YAoqICAgYG10a19ldGhfc2V0X2RtYV9kZXZpY2VgCgpGaW5hbGx5LCBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgaW1wb3J0YW50IGhlcmUuIFdlIG5lZWQgYE5FVF9EU0FgIGZvciB0aGUgRFNBIGNoYW5nZXMsIG9idmlvdXNseS4gQW5kLCBmb3IgdGhlIE1lZGlhdGVrIGNoYW5nZXMsIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZy4gSSYjMzk7bSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhhdCBgTkVUX1ZFTkRPUl9NRURJQVRFS2AgYW5kIGBORVRfTUVESUFURUtfU09DYCBhcmUgY29ycmVjdGx5IGVuYWJsZWQgd2hlbiBydW5uaW5nIG9uIE1lZGlhdGVrIGhhcmR3YXJlLiBMZXQmIzM5O3MgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9NRURJQVRFS19TT0MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc9OD1pZiBORVRfVkVORE9SX01FRElBVEVLXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjEwOmNvbmZpZyBORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xMS1cdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1Rcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoxNDpjb25maWcgTkVUX01FRElBVEVLX1NPQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xNS1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIFNvQyBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDQxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBjb25maWd1cmF0aW9uczoKCioqQW5hbHl6aW5nIE5ldHdvcmsgRGV2aWNlIFN1cHBvcnQqKgoKQWxyaWdodCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiBuZXR3b3JraW5nIGhhcmR3YXJlLCBlbmFibGluZyBgTkVUX01FRElBVEVLX1NPQ2AgYW5kIGBORVRfRFNBYCBzZWVtcyBsaWtlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGJyb2FkIHN1cHBvcnQuIEkgZmlndXJlLCBnb2luZyBpbiwgdGhhdCB0aGVzZSBhcmUgZ29vZCBnZW5lcmFsIGNvbmZpZ3VyYXRpb25zLiBOb3csIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsLCBhbmQgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSwgSSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIGBORVRfRFNBYCBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZXRhaWxzIHdpdGhpbiBgbmV0L2RzYS9LY29uZmlnYCB0byBjb25maXJtIGFzc3VtcHRpb25zIGFuZCBjb25zaWRlciBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvciBzcGVjaWZpYyBvcHRpb25zIGl0IG9mZmVycy4gRG9pbmcgdGhpcyBJIHNob3VsZCBnYWluIGNvbXBsZXRlIGNsYXJpdHkgb24gd2hhdCB0aGlzIGVuYWJsZW1lbnQgZW50YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0RTQSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9kc2EvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvZHNhL0tjb25maWctMi1cbm5ldC9kc2EvS2NvbmZpZzozOm1lbnVjb25maWcgTkVUX0RTQVxubmV0L2RzYS9LY29uZmlnLTQtXHR0cmlzdGF0ZSBcJiMzNDtEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnPTE3PWlmIE5FVF9EU0Fcbi0tXG5uZXQvZHNhL0tjb25maWctMjAtXG5uZXQvZHNhL0tjb25maWc6MjE6Y29uZmlnIE5FVF9EU0FfVEFHX05PTkVcbm5ldC9kc2EvS2NvbmZpZy0yMi1cdHRyaXN0YXRlIFwmIzM0O05vLW9wIHRhZyBkcml2ZXJcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMjYtXG5uZXQvZHNhL0tjb25maWc6Mjc6Y29uZmlnIE5FVF9EU0FfVEFHX0FSOTMzMVxubmV0L2RzYS9LY29uZmlnLTI4LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgQXRoZXJvcyBBUjkzMzEgU29DIHdpdGggYnVpbHQtaW4gc3dpdGNoXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTMyLVxubmV0L2RzYS9LY29uZmlnOjMzOmNvbmZpZyBORVRfRFNBX1RBR19CUkNNX0NPTU1PTlxubmV0L2RzYS9LY29uZmlnLTM0LVx0dHJpc3RhdGVcbi0tXG5uZXQvZHNhL0tjb25maWctMzYtXG5uZXQvZHNhL0tjb25maWc6Mzc6Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01cbm5ldC9kc2EvS2NvbmZpZy0zOC1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIEJyb2FkY29tIHN3aXRjaGVzIHVzaW5nIGluLWZyYW1lIGhlYWRlcnNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctNDMtXG5uZXQvZHNhL0tjb25maWc6NDQ6Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01fTEVHQUNZXG5uZXQvZHNhL0tjb25maWctNDUtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBCQ002M3h4IGxlZ2FjeSBzd2l0Y2hlcyB1c2luZyBpbi1mcmFtZSBoZWFkZXJzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTUzLVxubmV0L2RzYS9LY29uZmlnOjU0OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNX0xFR0FDWV9GQ1Ncbm5ldC9kc2EvS2NvbmZpZy01NS1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIEJDTTUzeHggbGVnYWN5IHN3aXRjaGVzIHVzaW5nIGluLWZyYW1lIGhlYWRlcnNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctNjMtXG5uZXQvZHNhL0tjb25maWc6NjQ6Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01fUFJFUEVORFxubmV0L2RzYS9LY29uZmlnLTY1LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgQnJvYWRjb20gc3dpdGNoZXMgdXNpbmcgcHJlcGVuZGVkIGhlYWRlcnNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctNzEtXG5uZXQvZHNhL0tjb25maWc6NzI6Y29uZmlnIE5FVF9EU0FfVEFHX0hFTExDUkVFS1xubmV0L2RzYS9LY29uZmlnLTczLVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgSGlyc2NobWFubiBIZWxsY3JlZWsgVFNOIHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTc3LVxubmV0L2RzYS9LY29uZmlnOjc4OmNvbmZpZyBORVRfRFNBX1RBR19HU1dJUFxubmV0L2RzYS9LY29uZmlnLTc5LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTGFudGlxIC8gSW50ZWwgR1NXSVAgc3dpdGNoZXNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctODMtXG5uZXQvZHNhL0tjb25maWc6ODQ6Y29uZmlnIE5FVF9EU0FfVEFHX0RTQV9DT01NT05cbm5ldC9kc2EvS2NvbmZpZy04NS1cdHRyaXN0YXRlXG5uZXQvZHNhL0tjb25maWctODYtXG5uZXQvZHNhL0tjb25maWc6ODc6Y29uZmlnIE5FVF9EU0FfVEFHX0RTQVxubmV0L2RzYS9LY29uZmlnLTg4LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTWFydmVsbCBzd2l0Y2hlcyB1c2luZyBEU0EgaGVhZGVyc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy05My1cbm5ldC9kc2EvS2NvbmZpZzo5NDpjb25maWcgTkVUX0RTQV9UQUdfRURTQVxubmV0L2RzYS9LY29uZmlnLTk1LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTWFydmVsbCBzd2l0Y2hlcyB1c2luZyBFdGhlclR5cGUgRFNBIGhlYWRlcnNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTAwLVxubmV0L2RzYS9LY29uZmlnOjEwMTpjb25maWcgTkVUX0RTQV9UQUdfTVRLXG5uZXQvZHNhL0tjb25maWctMTAyLVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTWVkaWF0ZWsgc3dpdGNoZXNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTA2LVxubmV0L2RzYS9LY29uZmlnOjEwNzpjb25maWcgTkVUX0RTQV9UQUdfTVhMXzg2MlhYXG5uZXQvZHNhL0tjb25maWctMTA4LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTWF4TGluZWFyIE14TDg2Mnh4IHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTExMy1cbm5ldC9kc2EvS2NvbmZpZzoxMTQ6Y29uZmlnIE5FVF9EU0FfVEFHX01YTF9HU1cxWFhcbm5ldC9kc2EvS2NvbmZpZy0xMTUtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBNYXhMaW5lYXIgR1NXMXh4IHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTEyMS1cbm5ldC9kc2EvS2NvbmZpZzoxMjI6Y29uZmlnIE5FVF9EU0FfVEFHX0tTWlxubmV0L2RzYS9LY29uZmlnLTEyMy1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIE1pY3JvY2hpcCA4Nzk1LzkzN3gvOTQ3Ny85ODkzIGZhbWlsaWVzIG9mIHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTEyNy1cbm5ldC9kc2EvS2NvbmZpZzoxMjg6Y29uZmlnIE5FVF9EU0FfVEFHX05FVENcbm5ldC9kc2EvS2NvbmZpZy0xMjktXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBOWFAgTkVUQyBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xMzctXG5uZXQvZHNhL0tjb25maWc6MTM4OmNvbmZpZyBORVRfRFNBX1RBR19PQ0VMT1Rcbm5ldC9kc2EvS2NvbmZpZy0xMzktXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBPY2Vsb3QgZmFtaWx5IG9mIHN3aXRjaGVzLCB1c2luZyBOUEkgcG9ydFwmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xNDgtXG5uZXQvZHNhL0tjb25maWc6MTQ5OmNvbmZpZyBORVRfRFNBX1RBR19PQ0VMT1RfODAyMVFcbm5ldC9kc2EvS2NvbmZpZy0xNTAtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBPY2Vsb3QgZmFtaWx5IG9mIHN3aXRjaGVzLCB1c2luZyBWTEFOXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTE1OC1cbm5ldC9kc2EvS2NvbmZpZzoxNTk6Y29uZmlnIE5FVF9EU0FfVEFHX1FDQVxubmV0L2RzYS9LY29uZmlnLTE2MC1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgc3dpdGNoZXNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTY0LVxubmV0L2RzYS9LY29uZmlnOjE2NTpjb25maWcgTkVUX0RTQV9UQUdfUlRMNF9BXG5uZXQvZHNhL0tjb25maWctMTY2LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgUmVhbHRlayA0IGJ5dGUgcHJvdG9jb2wgQSB0YWdzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTE3MS1cbm5ldC9kc2EvS2NvbmZpZzoxNzI6Y29uZmlnIE5FVF9EU0FfVEFHX1JUTDhfNFxubmV0L2RzYS9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIFJlYWx0ZWsgOCBieXRlIHByb3RvY29sIDQgdGFnc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xNzctXG5uZXQvZHNhL0tjb25maWc6MTc4OmNvbmZpZyBORVRfRFNBX1RBR19SWk4xX0E1UFNXXG5uZXQvZHNhL0tjb25maWctMTc5LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgUmVuZXNhcyBSWi9OMSBBNVBTVyBzd2l0Y2hcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMTg0LVxubmV0L2RzYS9LY29uZmlnOjE4NTpjb25maWcgTkVUX0RTQV9UQUdfTEFOOTMwM1xubmV0L2RzYS9LY29uZmlnLTE4Ni1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIFNNU0MvTWljcm9jaGlwIExBTjkzMDMgZmFtaWx5IG9mIHN3aXRjaGVzXCYjMzQ7XG4tLVxubmV0L2RzYS9LY29uZmlnLTE5MC1cbm5ldC9kc2EvS2NvbmZpZzoxOTE6Y29uZmlnIE5FVF9EU0FfVEFHX1NKQTExMDVcbm5ldC9kc2EvS2NvbmZpZy0xOTItXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBOWFAgU0pBMTEwNSBzd2l0Y2hlc1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0xOTktXG5uZXQvZHNhL0tjb25maWc6MjAwOmNvbmZpZyBORVRfRFNBX1RBR19UUkFJTEVSXG5uZXQvZHNhL0tjb25maWctMjAxLVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3Igc3dpdGNoZXMgdXNpbmcgYSB0cmFpbGVyIHRhZ1wmIzM0O1xuLS1cbm5ldC9kc2EvS2NvbmZpZy0yMDUtXG5uZXQvZHNhL0tjb25maWc6MjA2OmNvbmZpZyBORVRfRFNBX1RBR19WU0M3M1hYXzgwMjFRXG5uZXQvZHNhL0tjb25maWctMjA3LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTWljcm9jaGlwL1ZpdGVzc2UgVlNDNzN4eCBmYW1pbHkgb2Ygc3dpdGNoZXMsIHVzaW5nIFZMQU5cJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMjExLVxubmV0L2RzYS9LY29uZmlnOjIxMjpjb25maWcgTkVUX0RTQV9UQUdfWFJTNzAwWFxubmV0L2RzYS9LY29uZmlnLTIxMy1cdHRyaXN0YXRlIFwmIzM0O1RhZyBkcml2ZXIgZm9yIFhSUzcwMHggc3dpdGNoZXNcJiMzNDtcbi0tXG5uZXQvZHNhL0tjb25maWctMjE3LVxubmV0L2RzYS9LY29uZmlnOjIxODpjb25maWcgTkVUX0RTQV9UQUdfWVQ5MjFYXG5uZXQvZHNhL0tjb25maWctMjE5LVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgTW90b3Jjb21tIFlUOTIxeCBzd2l0Y2hlc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3MjEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1OTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIE5ldHdvcmtpbmcgUGF0Y2gqKgoKT2theSwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGVuYWJsaW5nIGBORVRfRFNBYCBhbmQgYE5FVF9NRURJQVRFS19TT0NgIGlzIHRoZSByaWdodCBhcHByb2FjaC4gTm93IEkgbmVlZCB0byBjb25maXJtIGlmIGBORVRfRFNBYCBhbG9uZSBpcyBzdWZmaWNpZW50LCBvciBpZiBhIG1vcmUgc3BlY2lmaWMgZHJpdmVyIHRhZyBpcyBuZWNlc3NhcnkuIEl0IHNlZW1zIGBORVRfRFNBYCBlbmFibGVzIHRoZSBjb3JlIERTQSBmcmFtZXdvcmssIGFuZCB0aGF0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIGZpbmQgYGRzYV9zd2l0Y2hfc2h1dGRvd25gIGFuZCBgZHNhX3VzZXJfbmV0ZGV2aWNlX2V2ZW50YC4KCkxldCYjMzk7cyBsb29rIGF0IHRoZSBzeW1ib2xzIGFnYWluLiBJJiMzOTt2ZSBjb21waWxlZCBhIGxpc3Q6IGBuZXRpZl9jbG9zZV9tYW55YCwgYGNhbGxfbmV0ZGV2aWNlX3VucmVnaXN0ZXJfbm90aWZpZXJzYCwgYF9fZGV2X25vdGlmeV9mbGFnc2AsIGBydG5sX2NvbmZpZ3VyZV9saW5rYCwgYHJ0bmxfbmV3bGlua19jcmVhdGVgLCBgZHNhX3N3aXRjaF9zaHV0ZG93bmAsIGBkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnRgLCBhbmQgYG10a19ldGhfc2V0X2RtYV9kZXZpY2VgLgoKSG1tLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGhlcmUuIEkgc2VlIHRoYXQgYF9fZGV2X25vdGlmeV9mbGFnc2AgaXMgaW4gYG5ldC9jb3JlL2Rldi5jYCBidXQgaXMgaXQgc3RhdGljPyBZZXMsIHNvIGl0JiMzOTtzIG5vdCBleHBvcnRlZC4gYHJ0bmxfbmV3bGlua19jcmVhdGVgIGlzIGFsc28gc3RhdGljLCB3aXRoaW4gYG5ldC9jb3JlL3J0bmV0bGluay5jYC4gYGNhbGxfbmV0ZGV2aWNlX3VucmVnaXN0ZXJfbm90aWZpZXJzYCBpcyBzdGF0aWMgdG9vLCBpbiBgbmV0L2NvcmUvZGV2LmNgLiBIb3dldmVyLCBgbmV0aWZfY2xvc2VfbWFueWAsIGBydG5sX2NvbmZpZ3VyZV9saW5rYCwgYGRzYV9zd2l0Y2hfc2h1dGRvd25gLCBhbmQgYG10a19ldGhfc2V0X2RtYV9kZXZpY2VgIGFyZSBhbGwgZXhwb3J0ZWQuIGBkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnRgIGlzIHN0YXRpYyB3aXRoaW4gYG5ldC9kc2EvdXNlci5jYC4KCk9rYXksIHRha2luZyB0aGlzIGludG8gY29uc2lkZXJhdGlvbiwgdGhlc2UgYXJlIGFsbCBnb29kIGluZGljYXRvcnMgZm9yIGZ1enppbmcuIEkmIzM5O2xsIGZvY3VzIG9uOgotIGBuZXRpZl9jbG9zZV9tYW55YAotIGBjYWxsX25ldGRldmljZV91bnJlZ2lzdGVyX25vdGlmaWVyc2AKLSBgcnRubF9jb25maWd1cmVfbGlua2AKLSBgcnRubF9uZXdsaW5rX2NyZWF0ZWAKLSBgZHNhX3N3aXRjaF9zaHV0ZG93bmAKLSBgZHNhX3VzZXJfbmV0ZGV2aWNlX2V2ZW50YAotIGBtdGtfZXRoX3NldF9kbWFfZGV2aWNlYAoKVGhlc2UgYXJlIHNvbGlkIHRhcmdldHMgZm9yIGFuYWx5c2lzLgoKQWxyaWdodCwgbGV0JiMzOTtzIHJlY2FwIHRoZSByYXRpb25hbGUgZm9yIHRoaXMgZnV6emluZyBlZmZvcnQuIFRoZSBwYXRjaCBpcyBjaGFuZ2luZyBob3cgdGhlIGxvY2tpbmcgaXMgbWFuYWdlZCBmb3IgbmV0d29yayBkZXZpY2UgZXZlbnRzLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGludHJvZHVjaW5nIHRoZSBgbmV0ZGV2X2xvY2tfb3BzYCBsb2NrIGFyb3VuZCBgTkVUREVWX0RPV05gIGFuZCBgTkVUREVWX0dPSU5HX0RPV05gIGV2ZW50cy4gVGhpcyBpbXBhY3RzIHNldmVyYWwgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9ucyBhbmQgcG90ZW50aWFsbHkgZHJpdmVycy4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrLiBUaGVyZWZvcmUsIGl0JiMzOTtzIGFic29sdXRlbHkgY3J1Y2lhbCB0byBmdXp6IHRoaXMgdG8gY2hlY2sgZm9yIHBvc3NpYmxlIGRlYWRsb2NrcyBvciBsb2NrZGVwIHdhcm5pbmdzIHRoYXQgdGhpcyBjb3VsZCBpbnRyb2R1Y2UuCgpGaW5hbGx5LCBJIGNvbmZpcm1lZCB0aGF0IGBORVRfTUVESUFURUtfU09DYCBoYXMgZGVwZW5kZW5jaWVzIG9uIGEgYG10a19ldGhfc29jLmNgIGRyaXZlciwgd2hpY2ggaXMgY29tcGlsZWQgd2hlbiB0aGlzIGNvbmZpZyBpcyBlbmFibGVkLiBTbyBpdCBzZWVtcyBsaWtlIGBORVRfTUVESUFURUtfU09DYCBpcyB0aGUgY29ycmVjdCBzZXR0aW5nLiBJJiMzOTttIGFsbCBzZXQgdG8gcHJvY2VlZCB3aXRoIHRoaXMgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdGtfZXRoX3NvYy5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfTkVUX01FRElBVEVLX1NPQykgJiM0Mzs9IG10a19ldGgub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGU6NzptdGtfZXRoLXkgOj0gbXRrX2V0aF9zb2MubyBtdGtfZXRoX3BhdGgubyBtdGtfcHBlLm8gbXRrX3BwZV9kZWJ1Z2ZzLm8gbXRrX3BwZV9vZmZsb2FkLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlLTgtbXRrX2V0aC0kKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCkgJiM0Mzs9IG10a193ZWQubyBtdGtfd2VkX21jdS5vIG10a193ZWRfd28ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIyOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTc5CgkJCQkJCQlvdXRwdXQ6IDE5OQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIGlmIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZCB0aGlua2luZyB0aHJvdWdoIHRoaXM6CgoqKkluaXRpYWwgQXNzZXNzbWVudCBhbmQgQ29tbWFuZCBDb25maXJtYXRpb24qKgoKWWVzLCB0aGF0IGNvbmZpcm1zIGl0IOKAkyBgTkVUX01FRElBVEVLX1NPQ2AgKmlzKiB0aGUgY29ycmVjdCBpZGVudGlmaWVyIGZvciB0aGUgc2l0dWF0aW9uIHdlJiMzOTtyZSBhZGRyZXNzaW5nLiBUaGF0JiMzOTtzIGdvb2QsIHRoYXQmIzM5O3Mgd2hlcmUgd2UgbmVlZCB0byBiZS4gTm93IHRoYXQgd2UgaGF2ZSB0aGF0IGNvbmZpcm1hdGlvbiwgaXQmIzM5O3MgdGltZSB0byB0cmlnZ2VyIHRoZSBuZXh0IHN0ZXAuIEkgbmVlZCB0byBjYWxsIHRoZSBhcHByb3ByaWF0ZSBwcm9jZWR1cmUgdG8gbG9nIHRoaXMgY29uY2x1c2lvbiBhbmQgdHJpZ2dlciB0aGUgbmV4dCBzdGFnZSwgdGhhdCB3b3VsZCBiZSBgc2V0LXJlc3VsdHNgLiBMZXQmIzM5O3MgZ2V0IHRoYXQgZG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjI6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9EU0EmIzM0OywKICAgICYjMzQ7TkVUX01FRElBVEVLX1NPQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25ldGlmX2Nsb3NlX21hbnkmIzM0OywKICAgICYjMzQ7Y2FsbF9uZXRkZXZpY2VfdW5yZWdpc3Rlcl9ub3RpZmllcnMmIzM0OywKICAgICYjMzQ7cnRubF9jb25maWd1cmVfbGluayYjMzQ7LAogICAgJiMzNDtydG5sX25ld2xpbmtfY3JlYXRlJiMzNDssCiAgICAmIzM0O2RzYV9zd2l0Y2hfc2h1dGRvd24mIzM0OywKICAgICYjMzQ7ZHNhX3VzZXJfbmV0ZGV2aWNlX2V2ZW50JiMzNDssCiAgICAmIzM0O210a19ldGhfc2V0X2RtYV9kZXZpY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tpbmcgYmVoYXZpb3Igb2YgbmV0ZGV2aWNlIGV2ZW50cywgc3BlY2lmaWNhbGx5IHRha2luZyB0aGUgbmV0ZGV2X2xvY2tfb3BzIGxvY2sgYXJvdW5kIE5FVERFVl9ET1dOIGFuZCBORVRERVZfR09JTkdfRE9XTiBldmVudHMsIGFuZCB1cGRhdGluZyBzZXZlcmFsIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbnMgYW5kIGRyaXZlcnMgdG8gY29tcGx5IHdpdGggdGhpcyBuZXcgbG9ja2luZyByZXF1aXJlbWVudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2sgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIGRlYWRsb2NrcyBvciBsb2NrZGVwIHdhcm5pbmdzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfRFNBJiMzNDssCiAgICAmIzM0O05FVF9NRURJQVRFS19TT0MmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZXRpZl9jbG9zZV9tYW55JiMzNDssCiAgICAmIzM0O2NhbGxfbmV0ZGV2aWNlX3VucmVnaXN0ZXJfbm90aWZpZXJzJiMzNDssCiAgICAmIzM0O3J0bmxfY29uZmlndXJlX2xpbmsmIzM0OywKICAgICYjMzQ7cnRubF9uZXdsaW5rX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtkc2Ffc3dpdGNoX3NodXRkb3duJiMzNDssCiAgICAmIzM0O2RzYV91c2VyX25ldGRldmljZV9ldmVudCYjMzQ7LAogICAgJiMzNDttdGtfZXRoX3NldF9kbWFfZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGJlaGF2aW9yIG9mIG5ldGRldmljZSBldmVudHMsIHNwZWNpZmljYWxseSB0YWtpbmcgdGhlIG5ldGRldl9sb2NrX29wcyBsb2NrIGFyb3VuZCBORVRERVZfRE9XTiBhbmQgTkVUREVWX0dPSU5HX0RPV04gZXZlbnRzLCBhbmQgdXBkYXRpbmcgc2V2ZXJhbCBjb3JlIG5ldHdvcmtpbmcgZnVuY3Rpb25zIGFuZCBkcml2ZXJzIHRvIGNvbXBseSB3aXRoIHRoaXMgbmV3IGxvY2tpbmcgcmVxdWlyZW1lbnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyBkZWFkbG9ja3Mgb3IgbG9ja2RlcCB3YXJuaW5ncyBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU0OjU5LjA1MTEwMjAxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg0OTQyMzYxMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RTQVwiLFxuICAgIFwiTkVUX01FRElBVEVLX1NPQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5ldGlmX2Nsb3NlX21hbnlcIixcbiAgICBcImNhbGxfbmV0ZGV2aWNlX3VucmVnaXN0ZXJfbm90aWZpZXJzXCIsXG4gICAgXCJydG5sX2NvbmZpZ3VyZV9saW5rXCIsXG4gICAgXCJydG5sX25ld2xpbmtfY3JlYXRlXCIsXG4gICAgXCJkc2Ffc3dpdGNoX3NodXRkb3duXCIsXG4gICAgXCJkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnRcIixcbiAgICBcIm10a19ldGhfc2V0X2RtYV9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBiZWhhdmlvciBvZiBuZXRkZXZpY2UgZXZlbnRzLCBzcGVjaWZpY2FsbHkgdGFraW5nIHRoZSBuZXRkZXZfbG9ja19vcHMgbG9jayBhcm91bmQgTkVUREVWX0RPV04gYW5kIE5FVERFVl9HT0lOR19ET1dOIGV2ZW50cywgYW5kIHVwZGF0aW5nIHNldmVyYWwgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9ucyBhbmQgZHJpdmVycyB0byBjb21wbHkgd2l0aCB0aGlzIG5ldyBsb2NraW5nIHJlcXVpcmVtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjayBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gZGVhZGxvY2tzIG9yIGxvY2tkZXAgd2FybmluZ3MgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU0OjU5LjA1MTEwNzlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1MjAwMTkxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDMwMjY0ZDJjYzA4NWRmNTYzZDEyYWI4NGE5OTYzNDI0ODRhYTYyYmZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMiAyMjo1NDo1OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3QgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3RcXG5pbmRleCBkMmEyMzhmOGNjOGI5MS4uZGI3MWQ0MjgzMDMyYTMgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0XFxuKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0XFxuQEAgLTQyMSwxMCArNDIxLDE3IEBAIHJ1bm5pbmcgdW5kZXIgdGhlIGxvY2s6XFxuICogYGBORVRERVZfQ0hBTkdFTkFNRWBgXFxuICogYGBORVRERVZfUkVHSVNURVJgYFxcbiAqIGBgTkVUREVWX1VQYGBcXG4rKiBgYE5FVERFVl9ET1dOYGBcXG4rKiBgYE5FVERFVl9HT0lOR19ET1dOYGBcXG4gXFxuIFRoZSBmb2xsb3dpbmcgbm90aWZpZXJzIGFyZSBydW5uaW5nIHdpdGhvdXQgdGhlIGxvY2s6XFxuICogYGBORVRERVZfVU5SRUdJU1RFUmBgXFxuIFxcbitNYW55IFNXIGRldmljZXMgKHVwcGVycykgY2F0Y2ggdGhlaXIgbG93ZXIncyBgYE5FVERFVl9VTlJFR0lTVEVSYGBcXG4rZXZlbnRzIGFuZCBtYXkgaW50ZXJhY3Qgd2l0aCB0aGVtIHZpYSBgYGRldl8qKClgYCBoYW5kbGVycywgd2hpY2ggdGFrZVxcbit0aGUgaW5zdGFuY2UgbG9jay4gVW50aWwgd2UgY29udmVydCB0aGVzZSBkZXZpY2VzIHRvIGBgbmV0aWZfKigpYGAgdmFyaWFudHMsXFxuK2BgTkVUREVWX1VOUkVHSVNURVJgYCBzdGF5cyB1bmxvY2tlZC5cXG4rXFxuIFRoZXJlIGFyZSBubyBjbGVhciBleHBlY3RhdGlvbnMgZm9yIHRoZSByZW1haW5pbmcgbm90aWZpZXJzLiBOb3RpZmllcnMgbm90IG9uXFxuIHRoZSBsaXN0IG1heSBydW4gd2l0aCBvciB3aXRob3V0IHRoZSBpbnN0YW5jZSBsb2NrLCBwb3RlbnRpYWxseSBldmVuIGludm9raW5nXFxuIHRoZSBzYW1lIG5vdGlmaWVyIHR5cGUgd2l0aCBhbmQgd2l0aG91dCB0aGUgbG9jayBmcm9tIGRpZmZlcmVudCBjb2RlIHBhdGhzLlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xcbmluZGV4IDVkMjkxZTUwYTQ3YmI5Li5mZTc2MTBjNDJlNWQzOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xcbkBAIC0yNiw2ICsyNiw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRmaWVsZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2RzYS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L2RzdF9tZXRhZGF0YS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbmV0L25ldGRldl9sb2NrLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvcGFnZV9wb29sL2hlbHBlcnMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2dlbmFsbG9jLmhcXHUwMDNlXFxuIFxcbkBAIC01MDMwLDEwICs1MDMxLDE0IEBAIHZvaWQgbXRrX2V0aF9zZXRfZG1hX2RldmljZShzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlICpkbWFfZGV2KVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmRldi1cXHUwMDNlY2xvc2VfbGlzdCwgXFx1MDAyNmRldl9saXN0KTtcXG4rXFx0XFx0bmV0ZGV2X2xvY2tfb3BzKGRldik7XFxuIFxcdH1cXG4gXFxuIFxcdG5ldGlmX2Nsb3NlX21hbnkoXFx1MDAyNmRldl9saXN0LCBmYWxzZSk7XFxuIFxcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgXFx1MDAyNmRldl9saXN0LCBjbG9zZV9saXN0KVxcbitcXHRcXHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xcbitcXG4gXFx0ZXRoLVxcdTAwM2VkbWFfZGV2ID0gZG1hX2RldjtcXG4gXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXYsIHRtcCwgXFx1MDAyNmRldl9saXN0LCBjbG9zZV9saXN0KSB7XFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmNcXG5pbmRleCA0YjNkNWNmZGY2ZTAwZi4uNzE0ZDA1MjgzNTAwOGMgMTAwNjQ0XFxuLS0tIGEvbmV0L2NvcmUvZGV2LmNcXG4rKysgYi9uZXQvY29yZS9kZXYuY1xcbkBAIC0xODAyLDYgKzE4MDIsNyBAQCB2b2lkIG5ldGlmX2Nsb3NlX21hbnkoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwgYm9vbCB1bmxpbmspXFxuIFxcdF9fZGV2X2Nsb3NlX21hbnkoaGVhZCk7XFxuIFxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGV2LCB0bXAsIGhlYWQsIGNsb3NlX2xpc3QpIHtcXG4rXFx0XFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3BzX2NvbXBhdChkZXYpO1xcbiBcXHRcXHRydG1zZ19pZmluZm8oUlRNX05FV0xJTkssIGRldiwgSUZGX1VQIHwgSUZGX1JVTk5JTkcsIEdGUF9LRVJORUwsIDAsIE5VTEwpO1xcbiBcXHRcXHRjYWxsX25ldGRldmljZV9ub3RpZmllcnMoTkVUREVWX0RPV04sIGRldik7XFxuIFxcdFxcdGlmICh1bmxpbmspXFxuQEAgLTE5MTIsOSArMTkxMywxMSBAQCBzdGF0aWMgdm9pZCBjYWxsX25ldGRldmljZV91bnJlZ2lzdGVyX25vdGlmaWVycyhzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiB7XFxuIFxcdGlmIChkZXYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX1VQKSB7XFxuK1xcdFxcdG5ldGRldl9sb2NrX29wcyhkZXYpO1xcbiBcXHRcXHRjYWxsX25ldGRldmljZV9ub3RpZmllcihuYiwgTkVUREVWX0dPSU5HX0RPV04sXFxuIFxcdFxcdFxcdFxcdFxcdGRldik7XFxuIFxcdFxcdGNhbGxfbmV0ZGV2aWNlX25vdGlmaWVyKG5iLCBORVRERVZfRE9XTiwgZGV2KTtcXG4rXFx0XFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcXG4gXFx0fVxcbiBcXHRjYWxsX25ldGRldmljZV9ub3RpZmllcihuYiwgTkVUREVWX1VOUkVHSVNURVIsIGRldik7XFxuIH1cXG5AQCAtOTc4NSw2ICs5Nzg4LDggQEAgdm9pZCBfX2Rldl9ub3RpZnlfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG9sZF9mbGFncyxcXG4ge1xcbiBcXHR1bnNpZ25lZCBpbnQgY2hhbmdlcyA9IGRldi1cXHUwMDNlZmxhZ3MgXiBvbGRfZmxhZ3M7XFxuIFxcbitcXHRuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGRldik7XFxuK1xcbiBcXHRpZiAoZ2NoYW5nZXMpXFxuIFxcdFxcdHJ0bXNnX2lmaW5mbyhSVE1fTkVXTElOSywgZGV2LCBnY2hhbmdlcywgR0ZQX0FUT01JQywgcG9ydGlkLCBubGgpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvbG9ja19kZWJ1Zy5jIGIvbmV0L2NvcmUvbG9ja19kZWJ1Zy5jXFxuaW5kZXggOGE4MWM1NDMwNzA1MzYuLmFiYzRjMDA3MjhiMTZmIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL2xvY2tfZGVidWcuY1xcbisrKyBiL25ldC9jb3JlL2xvY2tfZGVidWcuY1xcbkBAIC0yNCwxNSArMjQsMTUgQEAgaW50IG5ldGRldl9kZWJ1Z19ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LFxcbiBcXHRjYXNlIE5FVERFVl9DSEFOR0U6XFxuIFxcdGNhc2UgTkVUREVWX1JFR0lTVEVSOlxcbiBcXHRjYXNlIE5FVERFVl9VUDpcXG4rXFx0Y2FzZSBORVRERVZfRE9XTjpcXG4rXFx0Y2FzZSBORVRERVZfR09JTkdfRE9XTjpcXG4gXFx0XFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3BzX2NvbXBhdChkZXYpO1xcbiBcXHRcXHRmYWxsdGhyb3VnaDtcXG4tXFx0Y2FzZSBORVRERVZfRE9XTjpcXG4gXFx0Y2FzZSBORVRERVZfUkVCT09UOlxcbiBcXHRjYXNlIE5FVERFVl9VTlJFR0lTVEVSOlxcbiBcXHRjYXNlIE5FVERFVl9DSEFOR0VNVFU6XFxuIFxcdGNhc2UgTkVUREVWX0NIQU5HRUFERFI6XFxuIFxcdGNhc2UgTkVUREVWX1BSRV9DSEFOR0VBRERSOlxcbi1cXHRjYXNlIE5FVERFVl9HT0lOR19ET1dOOlxcbiBcXHRjYXNlIE5FVERFVl9GRUFUX0NIQU5HRTpcXG4gXFx0Y2FzZSBORVRERVZfQk9ORElOR19GQUlMT1ZFUjpcXG4gXFx0Y2FzZSBORVRERVZfUFJFX1VQOlxcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9ydG5ldGxpbmsuYyBiL25ldC9jb3JlL3J0bmV0bGluay5jXFxuaW5kZXggMTJhYTNhYTE2ODhiMTMuLjFiN2Q2ZjZiOGI2ODY4IDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL3J0bmV0bGluay5jXFxuKysrIGIvbmV0L2NvcmUvcnRuZXRsaW5rLmNcXG5AQCAtMzY2MCwxNCArMzY2MCwxNiBAQCBpbnQgcnRubF9jb25maWd1cmVfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgaWZpbmZvbXNnICppZm0sXFxuIFxcdFxcdFxcdHUzMiBwb3J0aWQsIGNvbnN0IHN0cnVjdCBubG1zZ2hkciAqbmxoKVxcbiB7XFxuIFxcdHVuc2lnbmVkIGludCBvbGRfZmxhZ3MsIGNoYW5nZWQ7XFxuLVxcdGludCBlcnI7XFxuK1xcdGludCBlcnIgPSAwO1xcbitcXG4rXFx0bmV0ZGV2X2xvY2tfb3BzKGRldik7XFxuIFxcbiBcXHRvbGRfZmxhZ3MgPSBkZXYtXFx1MDAzZWZsYWdzO1xcbiBcXHRpZiAoaWZtIFxcdTAwMjZcXHUwMDI2IChpZm0tXFx1MDAzZWlmaV9mbGFncyB8fCBpZm0tXFx1MDAzZWlmaV9jaGFuZ2UpKSB7XFxuIFxcdFxcdGVyciA9IF9fZGV2X2NoYW5nZV9mbGFncyhkZXYsIHJ0bmxfZGV2X2NvbWJpbmVfZmxhZ3MoZGV2LCBpZm0pLFxcbiBcXHRcXHRcXHRcXHRcXHQgTlVMTCk7XFxuIFxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi1cXHRcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbiBcXG4gXFx0Y2hhbmdlZCA9IG9sZF9mbGFncyBeIGRldi1cXHUwMDNlZmxhZ3M7XFxuQEAgLTM2NzcsNyArMzY3OSwxMCBAQCBpbnQgcnRubF9jb25maWd1cmVfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgaWZpbmZvbXNnICppZm0sXFxuIFxcdH1cXG4gXFxuIFxcdF9fZGV2X25vdGlmeV9mbGFncyhkZXYsIG9sZF9mbGFncywgY2hhbmdlZCwgcG9ydGlkLCBubGgpO1xcbi1cXHRyZXR1cm4gMDtcXG4rXFxuK291dDpcXG4rXFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcXG4rXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHJ0bmxfY29uZmlndXJlX2xpbmspO1xcbiBcXG5AQCAtMzkxOCwyMiArMzkyMywyMCBAQCBzdGF0aWMgaW50IHJ0bmxfbmV3bGlua19jcmVhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlmaW5mb21zZyAqaWZtLFxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbiBcXG4tXFx0bmV0ZGV2X2xvY2tfb3BzKGRldik7XFxuLVxcbiBcXHRlcnIgPSBydG5sX2NvbmZpZ3VyZV9saW5rKGRldiwgaWZtLCBwb3J0aWQsIG5saCk7XFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiBcXHRcXHRnb3RvIG91dF91bnJlZ2lzdGVyO1xcbiBcXHRpZiAodGJbSUZMQV9NQVNURVJdKSB7XFxuK1xcdFxcdG5ldGRldl9sb2NrX29wcyhkZXYpO1xcbiBcXHRcXHRlcnIgPSBkb19zZXRfbWFzdGVyKGRldiwgbmxhX2dldF91MzIodGJbSUZMQV9NQVNURVJdKSwgZXh0YWNrKTtcXG4rXFx0XFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcXG4gXFx0XFx0aWYgKGVycilcXG4gXFx0XFx0XFx0Z290byBvdXRfdW5yZWdpc3RlcjtcXG4gXFx0fVxcbiBcXG4tXFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcXG4gb3V0OlxcbiBcXHRyZXR1cm4gZXJyO1xcbiBvdXRfdW5yZWdpc3RlcjpcXG4tXFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcXG4gXFx0aWYgKG9wcy1cXHUwMDNlbmV3bGluaykge1xcbiBcXHRcXHRMSVNUX0hFQUQobGlzdF9raWxsKTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvZHNhLmMgYi9uZXQvZHNhL2RzYS5jXFxuaW5kZXggOWNiNzMyZjZiMWUzZWQuLmRhNTNhNjY2ZDRiODJlIDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvZHNhLmNcXG4rKysgYi9uZXQvZHNhL2RzYS5jXFxuQEAgLTE4LDYgKzE4LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9uZXQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9kc2Ffc3R1YnMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRkZXZfbG9jay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L3NjaF9nZW5lcmljLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXFwiY29uZHVpdC5oXFxcIlxcbkBAIC0xNjIwLDEwICsxNjIxLDIzIEBAIHZvaWQgZHNhX3N3aXRjaF9zaHV0ZG93bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuIFxcbiBcXHRydG5sX2xvY2soKTtcXG4gXFxuLVxcdGRzYV9zd2l0Y2hfZm9yX2VhY2hfY3B1X3BvcnQoZHAsIGRzKVxcbi1cXHRcXHRsaXN0X2FkZChcXHUwMDI2ZHAtXFx1MDAzZWNvbmR1aXQtXFx1MDAzZWNsb3NlX2xpc3QsIFxcdTAwMjZjbG9zZV9saXN0KTtcXG4rXFx0ZHNhX3N3aXRjaF9mb3JfZWFjaF9jcHVfcG9ydChkcCwgZHMpIHtcXG4rXFx0XFx0aWYgKCEoZHAtXFx1MDAzZWNvbmR1aXQtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUZGX1VQKSlcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmRwLVxcdTAwM2Vjb25kdWl0LVxcdTAwM2VjbG9zZV9saXN0LCBcXHUwMDI2Y2xvc2VfbGlzdCk7XFxuK1xcdFxcdG5ldGRldl9sb2NrX29wcyhkcC1cXHUwMDNlY29uZHVpdCk7XFxuK1xcdH1cXG4rXFxuK1xcdG5ldGlmX2Nsb3NlX21hbnkoXFx1MDAyNmNsb3NlX2xpc3QsIGZhbHNlKTtcXG4gXFxuLVxcdG5ldGlmX2Nsb3NlX21hbnkoXFx1MDAyNmNsb3NlX2xpc3QsIHRydWUpO1xcbitcXHR3aGlsZSAoIWxpc3RfZW1wdHkoXFx1MDAyNmNsb3NlX2xpc3QpKSB7XFxuK1xcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpjb25kdWl0O1xcbitcXG4rXFx0XFx0Y29uZHVpdCA9IGxpc3RfZmlyc3RfZW50cnkoXFx1MDAyNmNsb3NlX2xpc3QsIHN0cnVjdCBuZXRfZGV2aWNlLFxcbitcXHRcXHRcXHRcXHRcXHQgICBjbG9zZV9saXN0KTtcXG4rXFx0XFx0bmV0ZGV2X3VubG9ja19vcHMoY29uZHVpdCk7XFxuK1xcdFxcdGxpc3RfZGVsX2luaXQoXFx1MDAyNmNvbmR1aXQtXFx1MDAzZWNsb3NlX2xpc3QpO1xcbitcXHR9XFxuIFxcbiBcXHRkc2Ffc3dpdGNoX2Zvcl9lYWNoX3VzZXJfcG9ydChkcCwgZHMpIHtcXG4gXFx0XFx0Y29uZHVpdCA9IGRzYV9wb3J0X3RvX2NvbmR1aXQoZHApO1xcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3VzZXIuYyBiL25ldC9kc2EvdXNlci5jXFxuaW5kZXggODcwNGMxYTNhNWI3NDEuLjhlYTQ3NDQ0ZDZkNTQ3IDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdXNlci5jXFxuKysrIGIvbmV0L2RzYS91c2VyLmNcXG5AQCAtMTMsNiArMTMsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvb2ZfbmV0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9tZGlvLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tZGlvLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0ZGV2X2xvY2suaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9ydG5ldGxpbmsuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9wa3RfY2xzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvc2VsZnRlc3RzLmhcXHUwMDNlXFxuQEAgLTM2MDAsMTAgKzM2MDEsMjQgQEAgc3RhdGljIGludCBkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcXG4gXFx0XFx0XFx0aWYgKGRwLVxcdTAwM2VjcHVfZHAgIT0gY3B1X2RwKVxcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuLVxcdFxcdFxcdGxpc3RfYWRkKFxcdTAwMjZkcC1cXHUwMDNldXNlci1cXHUwMDNlY2xvc2VfbGlzdCwgXFx1MDAyNmNsb3NlX2xpc3QpO1xcbitcXHRcXHRcXHRpZiAoIShkcC1cXHUwMDNldXNlci1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRkZfVVApKVxcbitcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuK1xcdFxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNmRwLVxcdTAwM2V1c2VyLVxcdTAwM2VjbG9zZV9saXN0LCBcXHUwMDI2Y2xvc2VfbGlzdCk7XFxuK1xcdFxcdFxcdG5ldGRldl9sb2NrX29wcyhkcC1cXHUwMDNldXNlcik7XFxuIFxcdFxcdH1cXG4gXFxuLVxcdFxcdG5ldGlmX2Nsb3NlX21hbnkoXFx1MDAyNmNsb3NlX2xpc3QsIHRydWUpO1xcbitcXHRcXHRuZXRpZl9jbG9zZV9tYW55KFxcdTAwMjZjbG9zZV9saXN0LCBmYWxzZSk7XFxuK1xcbitcXHRcXHR3aGlsZSAoIWxpc3RfZW1wdHkoXFx1MDAyNmNsb3NlX2xpc3QpKSB7XFxuK1xcdFxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyX2RldjtcXG4rXFxuK1xcdFxcdFxcdHVzZXJfZGV2ID0gbGlzdF9maXJzdF9lbnRyeShcXHUwMDI2Y2xvc2VfbGlzdCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBuZXRfZGV2aWNlLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgY2xvc2VfbGlzdCk7XFxuK1xcdFxcdFxcdG5ldGRldl91bmxvY2tfb3BzKHVzZXJfZGV2KTtcXG4rXFx0XFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2dXNlcl9kZXYtXFx1MDAzZWNsb3NlX2xpc3QpO1xcbitcXHRcXHR9XFxuIFxcbiBcXHRcXHRyZXR1cm4gTk9USUZZX09LO1xcbiBcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU0OjU5LjQwMzY5MzI1N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgxNDE2MzYwOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RTQVwiLFxuICAgIFwiTkVUX01FRElBVEVLX1NPQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5ldGlmX2Nsb3NlX21hbnlcIixcbiAgICBcImNhbGxfbmV0ZGV2aWNlX3VucmVnaXN0ZXJfbm90aWZpZXJzXCIsXG4gICAgXCJydG5sX2NvbmZpZ3VyZV9saW5rXCIsXG4gICAgXCJydG5sX25ld2xpbmtfY3JlYXRlXCIsXG4gICAgXCJkc2Ffc3dpdGNoX3NodXRkb3duXCIsXG4gICAgXCJkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnRcIixcbiAgICBcIm10a19ldGhfc2V0X2RtYV9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBiZWhhdmlvciBvZiBuZXRkZXZpY2UgZXZlbnRzLCBzcGVjaWZpY2FsbHkgdGFraW5nIHRoZSBuZXRkZXZfbG9ja19vcHMgbG9jayBhcm91bmQgTkVUREVWX0RPV04gYW5kIE5FVERFVl9HT0lOR19ET1dOIGV2ZW50cywgYW5kIHVwZGF0aW5nIHNldmVyYWwgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9ucyBhbmQgZHJpdmVycyB0byBjb21wbHkgd2l0aCB0aGlzIG5ldyBsb2NraW5nIHJlcXVpcmVtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjayBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gZGVhZGxvY2tzIG9yIGxvY2tkZXAgd2FybmluZ3MgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzAyNjRkMmNjMDg1ZGY1NjNkMTJhYjg0YTk5NjM0MjQ4NGFhNjJiZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDIgMjI6NTQ6NTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3QgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3RcbmluZGV4IGQyYTIzOGY4Y2M4YjkxLi5kYjcxZDQyODMwMzJhMyAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdFxuKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0XG5AQCAtNDIxLDEwICs0MjEsMTcgQEAgcnVubmluZyB1bmRlciB0aGUgbG9jazpcbiAqIGBgTkVUREVWX0NIQU5HRU5BTUVgYFxuICogYGBORVRERVZfUkVHSVNURVJgYFxuICogYGBORVRERVZfVVBgYFxuKyogYGBORVRERVZfRE9XTmBgXG4rKiBgYE5FVERFVl9HT0lOR19ET1dOYGBcbiBcbiBUaGUgZm9sbG93aW5nIG5vdGlmaWVycyBhcmUgcnVubmluZyB3aXRob3V0IHRoZSBsb2NrOlxuICogYGBORVRERVZfVU5SRUdJU1RFUmBgXG4gXG4rTWFueSBTVyBkZXZpY2VzICh1cHBlcnMpIGNhdGNoIHRoZWlyIGxvd2VyJ3MgYGBORVRERVZfVU5SRUdJU1RFUmBgXG4rZXZlbnRzIGFuZCBtYXkgaW50ZXJhY3Qgd2l0aCB0aGVtIHZpYSBgYGRldl8qKClgYCBoYW5kbGVycywgd2hpY2ggdGFrZVxuK3RoZSBpbnN0YW5jZSBsb2NrLiBVbnRpbCB3ZSBjb252ZXJ0IHRoZXNlIGRldmljZXMgdG8gYGBuZXRpZl8qKClgYCB2YXJpYW50cyxcbitgYE5FVERFVl9VTlJFR0lTVEVSYGAgc3RheXMgdW5sb2NrZWQuXG4rXG4gVGhlcmUgYXJlIG5vIGNsZWFyIGV4cGVjdGF0aW9ucyBmb3IgdGhlIHJlbWFpbmluZyBub3RpZmllcnMuIE5vdGlmaWVycyBub3Qgb25cbiB0aGUgbGlzdCBtYXkgcnVuIHdpdGggb3Igd2l0aG91dCB0aGUgaW5zdGFuY2UgbG9jaywgcG90ZW50aWFsbHkgZXZlbiBpbnZva2luZ1xuIHRoZSBzYW1lIG5vdGlmaWVyIHR5cGUgd2l0aCBhbmQgd2l0aG91dCB0aGUgbG9jayBmcm9tIGRpZmZlcmVudCBjb2RlIHBhdGhzLlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXG5pbmRleCA1ZDI5MWU1MGE0N2JiOS4uZmU3NjEwYzQyZTVkMzkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXG5AQCAtMjYsNiArMjYsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHNhLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHN0X21ldGFkYXRhLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZGV2X2xvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9wYWdlX3Bvb2wvaGVscGVycy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZ2VuYWxsb2MuaFx1MDAzZVxuIFxuQEAgLTUwMzAsMTAgKzUwMzEsMTQgQEAgdm9pZCBtdGtfZXRoX3NldF9kbWFfZGV2aWNlKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2UgKmRtYV9kZXYpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZGV2LVx1MDAzZWNsb3NlX2xpc3QsIFx1MDAyNmRldl9saXN0KTtcbitcdFx0bmV0ZGV2X2xvY2tfb3BzKGRldik7XG4gXHR9XG4gXG4gXHRuZXRpZl9jbG9zZV9tYW55KFx1MDAyNmRldl9saXN0LCBmYWxzZSk7XG4gXG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRldiwgXHUwMDI2ZGV2X2xpc3QsIGNsb3NlX2xpc3QpXG4rXHRcdG5ldGRldl91bmxvY2tfb3BzKGRldik7XG4rXG4gXHRldGgtXHUwMDNlZG1hX2RldiA9IGRtYV9kZXY7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGV2LCB0bXAsIFx1MDAyNmRldl9saXN0LCBjbG9zZV9saXN0KSB7XG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmMgYi9uZXQvY29yZS9kZXYuY1xuaW5kZXggNGIzZDVjZmRmNmUwMGYuLjcxNGQwNTI4MzUwMDhjIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZGV2LmNcbisrKyBiL25ldC9jb3JlL2Rldi5jXG5AQCAtMTgwMiw2ICsxODAyLDcgQEAgdm9pZCBuZXRpZl9jbG9zZV9tYW55KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsIGJvb2wgdW5saW5rKVxuIFx0X19kZXZfY2xvc2VfbWFueShoZWFkKTtcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXYsIHRtcCwgaGVhZCwgY2xvc2VfbGlzdCkge1xuK1x0XHRuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGRldik7XG4gXHRcdHJ0bXNnX2lmaW5mbyhSVE1fTkVXTElOSywgZGV2LCBJRkZfVVAgfCBJRkZfUlVOTklORywgR0ZQX0tFUk5FTCwgMCwgTlVMTCk7XG4gXHRcdGNhbGxfbmV0ZGV2aWNlX25vdGlmaWVycyhORVRERVZfRE9XTiwgZGV2KTtcbiBcdFx0aWYgKHVubGluaylcbkBAIC0xOTEyLDkgKzE5MTMsMTEgQEAgc3RhdGljIHZvaWQgY2FsbF9uZXRkZXZpY2VfdW5yZWdpc3Rlcl9ub3RpZmllcnMoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbiBcdFx0XHRcdFx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbiBcdGlmIChkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9VUCkge1xuK1x0XHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcbiBcdFx0Y2FsbF9uZXRkZXZpY2Vfbm90aWZpZXIobmIsIE5FVERFVl9HT0lOR19ET1dOLFxuIFx0XHRcdFx0XHRkZXYpO1xuIFx0XHRjYWxsX25ldGRldmljZV9ub3RpZmllcihuYiwgTkVUREVWX0RPV04sIGRldik7XG4rXHRcdG5ldGRldl91bmxvY2tfb3BzKGRldik7XG4gXHR9XG4gXHRjYWxsX25ldGRldmljZV9ub3RpZmllcihuYiwgTkVUREVWX1VOUkVHSVNURVIsIGRldik7XG4gfVxuQEAgLTk3ODUsNiArOTc4OCw4IEBAIHZvaWQgX19kZXZfbm90aWZ5X2ZsYWdzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBvbGRfZmxhZ3MsXG4ge1xuIFx0dW5zaWduZWQgaW50IGNoYW5nZXMgPSBkZXYtXHUwMDNlZmxhZ3MgXiBvbGRfZmxhZ3M7XG4gXG4rXHRuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGRldik7XG4rXG4gXHRpZiAoZ2NoYW5nZXMpXG4gXHRcdHJ0bXNnX2lmaW5mbyhSVE1fTkVXTElOSywgZGV2LCBnY2hhbmdlcywgR0ZQX0FUT01JQywgcG9ydGlkLCBubGgpO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2xvY2tfZGVidWcuYyBiL25ldC9jb3JlL2xvY2tfZGVidWcuY1xuaW5kZXggOGE4MWM1NDMwNzA1MzYuLmFiYzRjMDA3MjhiMTZmIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvbG9ja19kZWJ1Zy5jXG4rKysgYi9uZXQvY29yZS9sb2NrX2RlYnVnLmNcbkBAIC0yNCwxNSArMjQsMTUgQEAgaW50IG5ldGRldl9kZWJ1Z19ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LFxuIFx0Y2FzZSBORVRERVZfQ0hBTkdFOlxuIFx0Y2FzZSBORVRERVZfUkVHSVNURVI6XG4gXHRjYXNlIE5FVERFVl9VUDpcbitcdGNhc2UgTkVUREVWX0RPV046XG4rXHRjYXNlIE5FVERFVl9HT0lOR19ET1dOOlxuIFx0XHRuZXRkZXZfYXNzZXJ0X2xvY2tlZF9vcHNfY29tcGF0KGRldik7XG4gXHRcdGZhbGx0aHJvdWdoO1xuLVx0Y2FzZSBORVRERVZfRE9XTjpcbiBcdGNhc2UgTkVUREVWX1JFQk9PVDpcbiBcdGNhc2UgTkVUREVWX1VOUkVHSVNURVI6XG4gXHRjYXNlIE5FVERFVl9DSEFOR0VNVFU6XG4gXHRjYXNlIE5FVERFVl9DSEFOR0VBRERSOlxuIFx0Y2FzZSBORVRERVZfUFJFX0NIQU5HRUFERFI6XG4tXHRjYXNlIE5FVERFVl9HT0lOR19ET1dOOlxuIFx0Y2FzZSBORVRERVZfRkVBVF9DSEFOR0U6XG4gXHRjYXNlIE5FVERFVl9CT05ESU5HX0ZBSUxPVkVSOlxuIFx0Y2FzZSBORVRERVZfUFJFX1VQOlxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL3J0bmV0bGluay5jIGIvbmV0L2NvcmUvcnRuZXRsaW5rLmNcbmluZGV4IDEyYWEzYWExNjg4YjEzLi4xYjdkNmY2YjhiNjg2OCAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL3J0bmV0bGluay5jXG4rKysgYi9uZXQvY29yZS9ydG5ldGxpbmsuY1xuQEAgLTM2NjAsMTQgKzM2NjAsMTYgQEAgaW50IHJ0bmxfY29uZmlndXJlX2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGlmaW5mb21zZyAqaWZtLFxuIFx0XHRcdHUzMiBwb3J0aWQsIGNvbnN0IHN0cnVjdCBubG1zZ2hkciAqbmxoKVxuIHtcbiBcdHVuc2lnbmVkIGludCBvbGRfZmxhZ3MsIGNoYW5nZWQ7XG4tXHRpbnQgZXJyO1xuK1x0aW50IGVyciA9IDA7XG4rXG4rXHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcbiBcbiBcdG9sZF9mbGFncyA9IGRldi1cdTAwM2VmbGFncztcbiBcdGlmIChpZm0gXHUwMDI2XHUwMDI2IChpZm0tXHUwMDNlaWZpX2ZsYWdzIHx8IGlmbS1cdTAwM2VpZmlfY2hhbmdlKSkge1xuIFx0XHRlcnIgPSBfX2Rldl9jaGFuZ2VfZmxhZ3MoZGV2LCBydG5sX2Rldl9jb21iaW5lX2ZsYWdzKGRldiwgaWZtKSxcbiBcdFx0XHRcdFx0IE5VTEwpO1xuIFx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuLVx0XHRcdHJldHVybiBlcnI7XG4rXHRcdFx0Z290byBvdXQ7XG4gXHR9XG4gXG4gXHRjaGFuZ2VkID0gb2xkX2ZsYWdzIF4gZGV2LVx1MDAzZWZsYWdzO1xuQEAgLTM2NzcsNyArMzY3OSwxMCBAQCBpbnQgcnRubF9jb25maWd1cmVfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgaWZpbmZvbXNnICppZm0sXG4gXHR9XG4gXG4gXHRfX2Rldl9ub3RpZnlfZmxhZ3MoZGV2LCBvbGRfZmxhZ3MsIGNoYW5nZWQsIHBvcnRpZCwgbmxoKTtcbi1cdHJldHVybiAwO1xuK1xuK291dDpcbitcdG5ldGRldl91bmxvY2tfb3BzKGRldik7XG4rXHRyZXR1cm4gZXJyO1xuIH1cbiBFWFBPUlRfU1lNQk9MKHJ0bmxfY29uZmlndXJlX2xpbmspO1xuIFxuQEAgLTM5MTgsMjIgKzM5MjMsMjAgQEAgc3RhdGljIGludCBydG5sX25ld2xpbmtfY3JlYXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpZmluZm9tc2cgKmlmbSxcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG4gXG4tXHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcbi1cbiBcdGVyciA9IHJ0bmxfY29uZmlndXJlX2xpbmsoZGV2LCBpZm0sIHBvcnRpZCwgbmxoKTtcbiBcdGlmIChlcnIgXHUwMDNjIDApXG4gXHRcdGdvdG8gb3V0X3VucmVnaXN0ZXI7XG4gXHRpZiAodGJbSUZMQV9NQVNURVJdKSB7XG4rXHRcdG5ldGRldl9sb2NrX29wcyhkZXYpO1xuIFx0XHRlcnIgPSBkb19zZXRfbWFzdGVyKGRldiwgbmxhX2dldF91MzIodGJbSUZMQV9NQVNURVJdKSwgZXh0YWNrKTtcbitcdFx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRnb3RvIG91dF91bnJlZ2lzdGVyO1xuIFx0fVxuIFxuLVx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcbiBvdXQ6XG4gXHRyZXR1cm4gZXJyO1xuIG91dF91bnJlZ2lzdGVyOlxuLVx0bmV0ZGV2X3VubG9ja19vcHMoZGV2KTtcbiBcdGlmIChvcHMtXHUwMDNlbmV3bGluaykge1xuIFx0XHRMSVNUX0hFQUQobGlzdF9raWxsKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvZHNhL2RzYS5jIGIvbmV0L2RzYS9kc2EuY1xuaW5kZXggOWNiNzMyZjZiMWUzZWQuLmRhNTNhNjY2ZDRiODJlIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS9kc2EuY1xuKysrIGIvbmV0L2RzYS9kc2EuY1xuQEAgLTE4LDYgKzE4LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbmV0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvZHNhX3N0dWJzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZGV2X2xvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9zY2hfZ2VuZXJpYy5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJjb25kdWl0LmhcIlxuQEAgLTE2MjAsMTAgKzE2MjEsMjMgQEAgdm9pZCBkc2Ffc3dpdGNoX3NodXRkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbiBcbiBcdHJ0bmxfbG9jaygpO1xuIFxuLVx0ZHNhX3N3aXRjaF9mb3JfZWFjaF9jcHVfcG9ydChkcCwgZHMpXG4tXHRcdGxpc3RfYWRkKFx1MDAyNmRwLVx1MDAzZWNvbmR1aXQtXHUwMDNlY2xvc2VfbGlzdCwgXHUwMDI2Y2xvc2VfbGlzdCk7XG4rXHRkc2Ffc3dpdGNoX2Zvcl9lYWNoX2NwdV9wb3J0KGRwLCBkcykge1xuK1x0XHRpZiAoIShkcC1cdTAwM2Vjb25kdWl0LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfVVApKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRwLVx1MDAzZWNvbmR1aXQtXHUwMDNlY2xvc2VfbGlzdCwgXHUwMDI2Y2xvc2VfbGlzdCk7XG4rXHRcdG5ldGRldl9sb2NrX29wcyhkcC1cdTAwM2Vjb25kdWl0KTtcbitcdH1cbitcbitcdG5ldGlmX2Nsb3NlX21hbnkoXHUwMDI2Y2xvc2VfbGlzdCwgZmFsc2UpO1xuIFxuLVx0bmV0aWZfY2xvc2VfbWFueShcdTAwMjZjbG9zZV9saXN0LCB0cnVlKTtcbitcdHdoaWxlICghbGlzdF9lbXB0eShcdTAwMjZjbG9zZV9saXN0KSkge1xuK1x0XHRzdHJ1Y3QgbmV0X2RldmljZSAqY29uZHVpdDtcbitcbitcdFx0Y29uZHVpdCA9IGxpc3RfZmlyc3RfZW50cnkoXHUwMDI2Y2xvc2VfbGlzdCwgc3RydWN0IG5ldF9kZXZpY2UsXG4rXHRcdFx0XHRcdCAgIGNsb3NlX2xpc3QpO1xuK1x0XHRuZXRkZXZfdW5sb2NrX29wcyhjb25kdWl0KTtcbitcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZjb25kdWl0LVx1MDAzZWNsb3NlX2xpc3QpO1xuK1x0fVxuIFxuIFx0ZHNhX3N3aXRjaF9mb3JfZWFjaF91c2VyX3BvcnQoZHAsIGRzKSB7XG4gXHRcdGNvbmR1aXQgPSBkc2FfcG9ydF90b19jb25kdWl0KGRwKTtcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3VzZXIuYyBiL25ldC9kc2EvdXNlci5jXG5pbmRleCA4NzA0YzFhM2E1Yjc0MS4uOGVhNDc0NDRkNmQ1NDcgMTAwNjQ0XG4tLS0gYS9uZXQvZHNhL3VzZXIuY1xuKysrIGIvbmV0L2RzYS91c2VyLmNcbkBAIC0xMyw2ICsxMyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbmV0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9tZGlvLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZGlvLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NuZXQvbmV0ZGV2X2xvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9ydG5ldGxpbmsuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9wa3RfY2xzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvc2VsZnRlc3RzLmhcdTAwM2VcbkBAIC0zNjAwLDEwICszNjAxLDI0IEBAIHN0YXRpYyBpbnQgZHNhX3VzZXJfbmV0ZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4gXHRcdFx0aWYgKGRwLVx1MDAzZWNwdV9kcCAhPSBjcHVfZHApXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbi1cdFx0XHRsaXN0X2FkZChcdTAwMjZkcC1cdTAwM2V1c2VyLVx1MDAzZWNsb3NlX2xpc3QsIFx1MDAyNmNsb3NlX2xpc3QpO1xuK1x0XHRcdGlmICghKGRwLVx1MDAzZXVzZXItXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9VUCkpXG4rXHRcdFx0XHRjb250aW51ZTtcbitcbitcdFx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRwLVx1MDAzZXVzZXItXHUwMDNlY2xvc2VfbGlzdCwgXHUwMDI2Y2xvc2VfbGlzdCk7XG4rXHRcdFx0bmV0ZGV2X2xvY2tfb3BzKGRwLVx1MDAzZXVzZXIpO1xuIFx0XHR9XG4gXG4tXHRcdG5ldGlmX2Nsb3NlX21hbnkoXHUwMDI2Y2xvc2VfbGlzdCwgdHJ1ZSk7XG4rXHRcdG5ldGlmX2Nsb3NlX21hbnkoXHUwMDI2Y2xvc2VfbGlzdCwgZmFsc2UpO1xuK1xuK1x0XHR3aGlsZSAoIWxpc3RfZW1wdHkoXHUwMDI2Y2xvc2VfbGlzdCkpIHtcbitcdFx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcl9kZXY7XG4rXG4rXHRcdFx0dXNlcl9kZXYgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNmNsb3NlX2xpc3QsXG4rXHRcdFx0XHRcdFx0ICAgIHN0cnVjdCBuZXRfZGV2aWNlLFxuK1x0XHRcdFx0XHRcdCAgICBjbG9zZV9saXN0KTtcbitcdFx0XHRuZXRkZXZfdW5sb2NrX29wcyh1c2VyX2Rldik7XG4rXHRcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZ1c2VyX2Rldi1cdTAwM2VjbG9zZV9saXN0KTtcbitcdFx0fVxuIFxuIFx0XHRyZXR1cm4gTk9USUZZX09LO1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTQ6NTkuNDAzNjk0Nzc3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTIzNjU5MzY4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDb3JlIE5ldHdvcmtpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgZnVuZGFtZW50YWxseSBhbHRlcnMgbmV0ZGV2aWNlIGxvY2tpbmcgYmVoYXZpb3IuIEl0J3MgYWRkaW5nIGBORVRERVZfRE9XTmAgYW5kIGBORVRERVZfR09JTkdfRE9XTmAgdG8gdGhlIGxpc3Qgb2Ygbm90aWZpZXJzIHRoYXQgcnVuIHVuZGVyIHRoZSBpbnN0YW5jZSBsb2NrLCBhbmQgaXQgdXBkYXRlcyBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyB0byB1c2UgdGhlIGBuZXRkZXZfbG9ja19vcHNgIGxvY2suIFRoaXMgdG91Y2hlcyBzb21lIGNyaXRpY2FsIHBhcnRzIG9mIHRoZSBuZXR3b3JraW5nIHN0YWNrLCBzbyBpdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgaW1wbGljYXRpb25zLlxuXG5IZXJlJ3MgdGhlIGJyZWFrZG93biwgYXMgSSBzZWUgaXQ6XG5cbjEuICBGaXJzdCwgdGhlIHBhdGNoIGluY2x1ZGVzIGRvY3VtZW50YXRpb24gdXBkYXRlcyBpbiBgRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0YC4gQWx3YXlzIGdvb2QgdG8gc2VlLCBjbGFyaWZpZXMgdGhlIGludGVudC5cbjIuICBUaGVuLCBjaGFuZ2VzIGluIHNwZWNpZmljIGRyaXZlcnM6IHRoZSBNZWRpYXRlayBldGhlcm5ldCBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jYCkgbm93IHRha2VzIGBuZXRkZXZfbG9ja19vcHNgIGFyb3VuZCBgbmV0aWZfY2xvc2VfbWFueWAuXG4zLiAgVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiBgbmV0L2NvcmUvZGV2LmNgLiAgYGNhbGxfbmV0ZGV2aWNlX3VucmVnaXN0ZXJfbm90aWZpZXJzYCBub3cgdXNlcyBgbmV0ZGV2X2xvY2tfb3BzYCBhcm91bmQgYE5FVERFVl9HT0lOR19ET1dOYCBhbmQgYE5FVERFVl9ET1dOYC4gSW1wb3J0YW50bHksIGl0IGFzc2VydHMgdGhlIGxvY2sgaXMgaGVsZCBpbiBgbmV0aWZfY2xvc2VfbWFueWAgYW5kIGBfX2Rldl9ub3RpZnlfZmxhZ3NgLiBUaGlzIHN0cmVuZ3RoZW5zIHRoZSBsb2NraW5nIGd1YXJhbnRlZXMuXG40LiAgYG5ldC9jb3JlL2xvY2tfZGVidWcuY2AgaGFzIGJlZW4gdXBkYXRlZCB0byBpbmNsdWRlIGBORVRERVZfRE9XTmAgYW5kIGBORVRERVZfR09JTkdfRE9XTmAgaW4gdGhlIGxpc3Qgb2YgZXZlbnRzIHJlcXVpcmluZyBgbmV0ZGV2X2Fzc2VydF9sb2NrZWRfb3BzX2NvbXBhdGAuIEFub3RoZXIgbG9jayByZWxhdGVkIGNoZWNrLlxuNS4gIEluIGBuZXQvY29yZS9ydG5ldGxpbmsuY2AsIGBydG5sX2NvbmZpZ3VyZV9saW5rYCBub3cgdXNlcyBgbmV0ZGV2X2xvY2tfb3BzYC4gYHJ0bmxfbmV3bGlua19jcmVhdGVgIGRyb3BzIHRoZSBwcmV2aW91cyBsb2NrIGFyb3VuZCBgcnRubF9jb25maWd1cmVfbGlua2AgKGJlY2F1c2UgaXQncyBub3cgdGFrZW4gd2l0aGluIHRoYXQgZnVuY3Rpb24pIGJ1dCAqYWRkcyogdGhlIGxvY2sgYXJvdW5kIGBkb19zZXRfbWFzdGVyYC5cbjYuICBgbmV0L2RzYS9kc2EuY2AgYWxzbyBnZXRzIG1vZGlmaWVkOyBgZHNhX3N3aXRjaF9zaHV0ZG93bmAgbm93IHRha2VzIGBuZXRkZXZfbG9ja19vcHNgIGFyb3VuZCBgbmV0aWZfY2xvc2VfbWFueWAuXG43LiAgQW5kLCBpbiBgbmV0L2RzYS91c2VyLmNgLCBgZHNhX3VzZXJfbmV0ZGV2aWNlX2V2ZW50YCBub3cgdGFrZXMgdGhlIGxvY2sgYXJvdW5kIGBuZXRpZl9jbG9zZV9tYW55YC5cblxuR2l2ZW4gdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHZlcnkgY29yZSBvZiBob3cgbmV0ZGV2aWNlcyBhcmUgbG9ja2VkLCB0aGlzICphYnNvbHV0ZWx5KiByZXF1aXJlcyBmdXp6aW5nLiBXZSdyZSB0YWxraW5nIGFib3V0IGZ1bmRhbWVudGFsIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzLlxuXG5TbywgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgYXJlYXMgdG8gZm9jdXMgb24gaW4gdGVzdGluZyBhbmQgZGVidWdnaW5nLiBUaGUgY3JpdGljYWwgc3ltYm9scyB0aGF0IEkgbmVlZCB0byBrZWVwIGluIG1pbmQgYXJlOlxuXG4qICAgYG5ldGlmX2Nsb3NlX21hbnlgXG4qICAgYGNhbGxfbmV0ZGV2aWNlX3VucmVnaXN0ZXJfbm90aWZpZXJzYFxuKiAgIGBfX2Rldl9ub3RpZnlfZmxhZ3NgXG4qICAgYHJ0bmxfY29uZmlndXJlX2xpbmtgXG4qICAgYHJ0bmxfbmV3bGlua19jcmVhdGVgXG4qICAgYGRzYV9zd2l0Y2hfc2h1dGRvd25gXG4qICAgYGRzYV91c2VyX25ldGRldmljZV9ldmVudGBcbiogICBgbXRrX2V0aF9zZXRfZG1hX2RldmljZWBcblxuRmluYWxseSwgbGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgaW1wb3J0YW50IGhlcmUuIFdlIG5lZWQgYE5FVF9EU0FgIGZvciB0aGUgRFNBIGNoYW5nZXMsIG9idmlvdXNseS4gQW5kLCBmb3IgdGhlIE1lZGlhdGVrIGNoYW5nZXMsIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZy4gSSdtIGdvaW5nIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBORVRfVkVORE9SX01FRElBVEVLYCBhbmQgYE5FVF9NRURJQVRFS19TT0NgIGFyZSBjb3JyZWN0bHkgZW5hYmxlZCB3aGVuIHJ1bm5pbmcgb24gTWVkaWF0ZWsgaGFyZHdhcmUuIExldCdzIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODA0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjI0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTU6MDguNjQwMjkwNDhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc3MjI3NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9NRURJQVRFS19TT0NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnPTg9aWYgTkVUX1ZFTkRPUl9NRURJQVRFS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjEwOmNvbmZpZyBORVRfTUVESUFURUtfU09DX1dFRFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMTEtXFx0ZGVwZW5kcyBvbiBBUkNIX01FRElBVEVLIHx8IENPTVBJTEVfVEVTVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjE0OmNvbmZpZyBORVRfTUVESUFURUtfU09DXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgU29DIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjI6NTU6MDguNjk4MDIxMjg4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM2ODYyNzI1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgY29uZmlndXJhdGlvbnM6XG5cbioqQW5hbHl6aW5nIE5ldHdvcmsgRGV2aWNlIFN1cHBvcnQqKlxuXG5BbHJpZ2h0LCBiYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nIG9mIG5ldHdvcmtpbmcgaGFyZHdhcmUsIGVuYWJsaW5nIGBORVRfTUVESUFURUtfU09DYCBhbmQgYE5FVF9EU0FgIHNlZW1zIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgYnJvYWQgc3VwcG9ydC4gSSBmaWd1cmUsIGdvaW5nIGluLCB0aGF0IHRoZXNlIGFyZSBnb29kIGdlbmVyYWwgY29uZmlndXJhdGlvbnMuIE5vdywgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbCwgYW5kIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUsIEkgbmVlZCB0byBkZWx2ZSBpbnRvIHRoZSBgTkVUX0RTQWAgY29uZmlndXJhdGlvbi4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZXRhaWxzIHdpdGhpbiBgbmV0L2RzYS9LY29uZmlnYCB0byBjb25maXJtIGFzc3VtcHRpb25zIGFuZCBjb25zaWRlciBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvciBzcGVjaWZpYyBvcHRpb25zIGl0IG9mZmVycy4gRG9pbmcgdGhpcyBJIHNob3VsZCBnYWluIGNvbXBsZXRlIGNsYXJpdHkgb24gd2hhdCB0aGlzIGVuYWJsZW1lbnQgZW50YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ0MSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU1OjEyLjA2NjY1MDIwMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQwNjE5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0RTQVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZHNhL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2RzYS9LY29uZmlnLTItXFxubmV0L2RzYS9LY29uZmlnOjM6bWVudWNvbmZpZyBORVRfRFNBXFxubmV0L2RzYS9LY29uZmlnLTQtXFx0dHJpc3RhdGUgXFxcIkRpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmVcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWc9MTc9aWYgTkVUX0RTQVxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTIwLVxcbm5ldC9kc2EvS2NvbmZpZzoyMTpjb25maWcgTkVUX0RTQV9UQUdfTk9ORVxcbm5ldC9kc2EvS2NvbmZpZy0yMi1cXHR0cmlzdGF0ZSBcXFwiTm8tb3AgdGFnIGRyaXZlclxcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0yNi1cXG5uZXQvZHNhL0tjb25maWc6Mjc6Y29uZmlnIE5FVF9EU0FfVEFHX0FSOTMzMVxcbm5ldC9kc2EvS2NvbmZpZy0yOC1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgQXRoZXJvcyBBUjkzMzEgU29DIHdpdGggYnVpbHQtaW4gc3dpdGNoXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTMyLVxcbm5ldC9kc2EvS2NvbmZpZzozMzpjb25maWcgTkVUX0RTQV9UQUdfQlJDTV9DT01NT05cXG5uZXQvZHNhL0tjb25maWctMzQtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0zNi1cXG5uZXQvZHNhL0tjb25maWc6Mzc6Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01cXG5uZXQvZHNhL0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIEJyb2FkY29tIHN3aXRjaGVzIHVzaW5nIGluLWZyYW1lIGhlYWRlcnNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctNDMtXFxubmV0L2RzYS9LY29uZmlnOjQ0OmNvbmZpZyBORVRfRFNBX1RBR19CUkNNX0xFR0FDWVxcbm5ldC9kc2EvS2NvbmZpZy00NS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgQkNNNjN4eCBsZWdhY3kgc3dpdGNoZXMgdXNpbmcgaW4tZnJhbWUgaGVhZGVyc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy01My1cXG5uZXQvZHNhL0tjb25maWc6NTQ6Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01fTEVHQUNZX0ZDU1xcbm5ldC9kc2EvS2NvbmZpZy01NS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgQkNNNTN4eCBsZWdhY3kgc3dpdGNoZXMgdXNpbmcgaW4tZnJhbWUgaGVhZGVyc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy02My1cXG5uZXQvZHNhL0tjb25maWc6NjQ6Y29uZmlnIE5FVF9EU0FfVEFHX0JSQ01fUFJFUEVORFxcbm5ldC9kc2EvS2NvbmZpZy02NS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgQnJvYWRjb20gc3dpdGNoZXMgdXNpbmcgcHJlcGVuZGVkIGhlYWRlcnNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctNzEtXFxubmV0L2RzYS9LY29uZmlnOjcyOmNvbmZpZyBORVRfRFNBX1RBR19IRUxMQ1JFRUtcXG5uZXQvZHNhL0tjb25maWctNzMtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIEhpcnNjaG1hbm4gSGVsbGNyZWVrIFRTTiBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy03Ny1cXG5uZXQvZHNhL0tjb25maWc6Nzg6Y29uZmlnIE5FVF9EU0FfVEFHX0dTV0lQXFxubmV0L2RzYS9LY29uZmlnLTc5LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBMYW50aXEgLyBJbnRlbCBHU1dJUCBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy04My1cXG5uZXQvZHNhL0tjb25maWc6ODQ6Y29uZmlnIE5FVF9EU0FfVEFHX0RTQV9DT01NT05cXG5uZXQvZHNhL0tjb25maWctODUtXFx0dHJpc3RhdGVcXG5uZXQvZHNhL0tjb25maWctODYtXFxubmV0L2RzYS9LY29uZmlnOjg3OmNvbmZpZyBORVRfRFNBX1RBR19EU0FcXG5uZXQvZHNhL0tjb25maWctODgtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE1hcnZlbGwgc3dpdGNoZXMgdXNpbmcgRFNBIGhlYWRlcnNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctOTMtXFxubmV0L2RzYS9LY29uZmlnOjk0OmNvbmZpZyBORVRfRFNBX1RBR19FRFNBXFxubmV0L2RzYS9LY29uZmlnLTk1LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBNYXJ2ZWxsIHN3aXRjaGVzIHVzaW5nIEV0aGVyVHlwZSBEU0EgaGVhZGVyc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xMDAtXFxubmV0L2RzYS9LY29uZmlnOjEwMTpjb25maWcgTkVUX0RTQV9UQUdfTVRLXFxubmV0L2RzYS9LY29uZmlnLTEwMi1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTWVkaWF0ZWsgc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTA2LVxcbm5ldC9kc2EvS2NvbmZpZzoxMDc6Y29uZmlnIE5FVF9EU0FfVEFHX01YTF84NjJYWFxcbm5ldC9kc2EvS2NvbmZpZy0xMDgtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE1heExpbmVhciBNeEw4NjJ4eCBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xMTMtXFxubmV0L2RzYS9LY29uZmlnOjExNDpjb25maWcgTkVUX0RTQV9UQUdfTVhMX0dTVzFYWFxcbm5ldC9kc2EvS2NvbmZpZy0xMTUtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE1heExpbmVhciBHU1cxeHggc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTIxLVxcbm5ldC9kc2EvS2NvbmZpZzoxMjI6Y29uZmlnIE5FVF9EU0FfVEFHX0tTWlxcbm5ldC9kc2EvS2NvbmZpZy0xMjMtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE1pY3JvY2hpcCA4Nzk1LzkzN3gvOTQ3Ny85ODkzIGZhbWlsaWVzIG9mIHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTEyNy1cXG5uZXQvZHNhL0tjb25maWc6MTI4OmNvbmZpZyBORVRfRFNBX1RBR19ORVRDXFxubmV0L2RzYS9LY29uZmlnLTEyOS1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgTlhQIE5FVEMgc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTM3LVxcbm5ldC9kc2EvS2NvbmZpZzoxMzg6Y29uZmlnIE5FVF9EU0FfVEFHX09DRUxPVFxcbm5ldC9kc2EvS2NvbmZpZy0xMzktXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE9jZWxvdCBmYW1pbHkgb2Ygc3dpdGNoZXMsIHVzaW5nIE5QSSBwb3J0XFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTE0OC1cXG5uZXQvZHNhL0tjb25maWc6MTQ5OmNvbmZpZyBORVRfRFNBX1RBR19PQ0VMT1RfODAyMVFcXG5uZXQvZHNhL0tjb25maWctMTUwLVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBPY2Vsb3QgZmFtaWx5IG9mIHN3aXRjaGVzLCB1c2luZyBWTEFOXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTE1OC1cXG5uZXQvZHNhL0tjb25maWc6MTU5OmNvbmZpZyBORVRfRFNBX1RBR19RQ0FcXG5uZXQvZHNhL0tjb25maWctMTYwLVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBRdWFsY29tbSBBdGhlcm9zIFFDQThLIHN3aXRjaGVzXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTE2NC1cXG5uZXQvZHNhL0tjb25maWc6MTY1OmNvbmZpZyBORVRfRFNBX1RBR19SVEw0X0FcXG5uZXQvZHNhL0tjb25maWctMTY2LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBSZWFsdGVrIDQgYnl0ZSBwcm90b2NvbCBBIHRhZ3NcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTcxLVxcbm5ldC9kc2EvS2NvbmZpZzoxNzI6Y29uZmlnIE5FVF9EU0FfVEFHX1JUTDhfNFxcbm5ldC9kc2EvS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIFJlYWx0ZWsgOCBieXRlIHByb3RvY29sIDQgdGFnc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xNzctXFxubmV0L2RzYS9LY29uZmlnOjE3ODpjb25maWcgTkVUX0RTQV9UQUdfUlpOMV9BNVBTV1xcbm5ldC9kc2EvS2NvbmZpZy0xNzktXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIFJlbmVzYXMgUlovTjEgQTVQU1cgc3dpdGNoXFxcIlxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTE4NC1cXG5uZXQvZHNhL0tjb25maWc6MTg1OmNvbmZpZyBORVRfRFNBX1RBR19MQU45MzAzXFxubmV0L2RzYS9LY29uZmlnLTE4Ni1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgU01TQy9NaWNyb2NoaXAgTEFOOTMwMyBmYW1pbHkgb2Ygc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTkwLVxcbm5ldC9kc2EvS2NvbmZpZzoxOTE6Y29uZmlnIE5FVF9EU0FfVEFHX1NKQTExMDVcXG5uZXQvZHNhL0tjb25maWctMTkyLVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBOWFAgU0pBMTEwNSBzd2l0Y2hlc1xcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xOTktXFxubmV0L2RzYS9LY29uZmlnOjIwMDpjb25maWcgTkVUX0RTQV9UQUdfVFJBSUxFUlxcbm5ldC9kc2EvS2NvbmZpZy0yMDEtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIHN3aXRjaGVzIHVzaW5nIGEgdHJhaWxlciB0YWdcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMjA1LVxcbm5ldC9kc2EvS2NvbmZpZzoyMDY6Y29uZmlnIE5FVF9EU0FfVEFHX1ZTQzczWFhfODAyMVFcXG5uZXQvZHNhL0tjb25maWctMjA3LVxcdHRyaXN0YXRlIFxcXCJUYWcgZHJpdmVyIGZvciBNaWNyb2NoaXAvVml0ZXNzZSBWU0M3M3h4IGZhbWlseSBvZiBzd2l0Y2hlcywgdXNpbmcgVkxBTlxcXCJcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0yMTEtXFxubmV0L2RzYS9LY29uZmlnOjIxMjpjb25maWcgTkVUX0RTQV9UQUdfWFJTNzAwWFxcbm5ldC9kc2EvS2NvbmZpZy0yMTMtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIFhSUzcwMHggc3dpdGNoZXNcXFwiXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMjE3LVxcbm5ldC9kc2EvS2NvbmZpZzoyMTg6Y29uZmlnIE5FVF9EU0FfVEFHX1lUOTIxWFxcbm5ldC9kc2EvS2NvbmZpZy0yMTktXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE1vdG9yY29tbSBZVDkyMXggc3dpdGNoZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU1OjEyLjEyMzA2MTQzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODMwNjUyOTEzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTmV0d29ya2luZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBlbmFibGluZyBgTkVUX0RTQWAgYW5kIGBORVRfTUVESUFURUtfU09DYCBpcyB0aGUgcmlnaHQgYXBwcm9hY2guIE5vdyBJIG5lZWQgdG8gY29uZmlybSBpZiBgTkVUX0RTQWAgYWxvbmUgaXMgc3VmZmljaWVudCwgb3IgaWYgYSBtb3JlIHNwZWNpZmljIGRyaXZlciB0YWcgaXMgbmVjZXNzYXJ5LiBJdCBzZWVtcyBgTkVUX0RTQWAgZW5hYmxlcyB0aGUgY29yZSBEU0EgZnJhbWV3b3JrLCBhbmQgdGhhdCdzIHdoZXJlIEknbGwgZmluZCBgZHNhX3N3aXRjaF9zaHV0ZG93bmAgYW5kIGBkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnRgLlxuXG5MZXQncyBsb29rIGF0IHRoZSBzeW1ib2xzIGFnYWluLiBJJ3ZlIGNvbXBpbGVkIGEgbGlzdDogYG5ldGlmX2Nsb3NlX21hbnlgLCBgY2FsbF9uZXRkZXZpY2VfdW5yZWdpc3Rlcl9ub3RpZmllcnNgLCBgX19kZXZfbm90aWZ5X2ZsYWdzYCwgYHJ0bmxfY29uZmlndXJlX2xpbmtgLCBgcnRubF9uZXdsaW5rX2NyZWF0ZWAsIGBkc2Ffc3dpdGNoX3NodXRkb3duYCwgYGRzYV91c2VyX25ldGRldmljZV9ldmVudGAsIGFuZCBgbXRrX2V0aF9zZXRfZG1hX2RldmljZWAuXG5cbkhtbSwgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBoZXJlLiBJIHNlZSB0aGF0IGBfX2Rldl9ub3RpZnlfZmxhZ3NgIGlzIGluIGBuZXQvY29yZS9kZXYuY2AgYnV0IGlzIGl0IHN0YXRpYz8gWWVzLCBzbyBpdCdzIG5vdCBleHBvcnRlZC4gYHJ0bmxfbmV3bGlua19jcmVhdGVgIGlzIGFsc28gc3RhdGljLCB3aXRoaW4gYG5ldC9jb3JlL3J0bmV0bGluay5jYC4gYGNhbGxfbmV0ZGV2aWNlX3VucmVnaXN0ZXJfbm90aWZpZXJzYCBpcyBzdGF0aWMgdG9vLCBpbiBgbmV0L2NvcmUvZGV2LmNgLiBIb3dldmVyLCBgbmV0aWZfY2xvc2VfbWFueWAsIGBydG5sX2NvbmZpZ3VyZV9saW5rYCwgYGRzYV9zd2l0Y2hfc2h1dGRvd25gLCBhbmQgYG10a19ldGhfc2V0X2RtYV9kZXZpY2VgIGFyZSBhbGwgZXhwb3J0ZWQuIGBkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnRgIGlzIHN0YXRpYyB3aXRoaW4gYG5ldC9kc2EvdXNlci5jYC5cblxuT2theSwgdGFraW5nIHRoaXMgaW50byBjb25zaWRlcmF0aW9uLCB0aGVzZSBhcmUgYWxsIGdvb2QgaW5kaWNhdG9ycyBmb3IgZnV6emluZy4gSSdsbCBmb2N1cyBvbjpcbi0gYG5ldGlmX2Nsb3NlX21hbnlgXG4tIGBjYWxsX25ldGRldmljZV91bnJlZ2lzdGVyX25vdGlmaWVyc2Bcbi0gYHJ0bmxfY29uZmlndXJlX2xpbmtgXG4tIGBydG5sX25ld2xpbmtfY3JlYXRlYFxuLSBgZHNhX3N3aXRjaF9zaHV0ZG93bmBcbi0gYGRzYV91c2VyX25ldGRldmljZV9ldmVudGBcbi0gYG10a19ldGhfc2V0X2RtYV9kZXZpY2VgXG5cblRoZXNlIGFyZSBzb2xpZCB0YXJnZXRzIGZvciBhbmFseXNpcy5cblxuQWxyaWdodCwgbGV0J3MgcmVjYXAgdGhlIHJhdGlvbmFsZSBmb3IgdGhpcyBmdXp6aW5nIGVmZm9ydC4gVGhlIHBhdGNoIGlzIGNoYW5naW5nIGhvdyB0aGUgbG9ja2luZyBpcyBtYW5hZ2VkIGZvciBuZXR3b3JrIGRldmljZSBldmVudHMuIFNwZWNpZmljYWxseSwgaXQncyBpbnRyb2R1Y2luZyB0aGUgYG5ldGRldl9sb2NrX29wc2AgbG9jayBhcm91bmQgYE5FVERFVl9ET1dOYCBhbmQgYE5FVERFVl9HT0lOR19ET1dOYCBldmVudHMuIFRoaXMgaW1wYWN0cyBzZXZlcmFsIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbnMgYW5kIHBvdGVudGlhbGx5IGRyaXZlcnMuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrLiBUaGVyZWZvcmUsIGl0J3MgYWJzb2x1dGVseSBjcnVjaWFsIHRvIGZ1enogdGhpcyB0byBjaGVjayBmb3IgcG9zc2libGUgZGVhZGxvY2tzIG9yIGxvY2tkZXAgd2FybmluZ3MgdGhhdCB0aGlzIGNvdWxkIGludHJvZHVjZS5cblxuRmluYWxseSwgSSBjb25maXJtZWQgdGhhdCBgTkVUX01FRElBVEVLX1NPQ2AgaGFzIGRlcGVuZGVuY2llcyBvbiBhIGBtdGtfZXRoX3NvYy5jYCBkcml2ZXIsIHdoaWNoIGlzIGNvbXBpbGVkIHdoZW4gdGhpcyBjb25maWcgaXMgZW5hYmxlZC4gU28gaXQgc2VlbXMgbGlrZSBgTkVUX01FRElBVEVLX1NPQ2AgaXMgdGhlIGNvcnJlY3Qgc2V0dGluZy4gSSdtIGFsbCBzZXQgdG8gcHJvY2VlZCB3aXRoIHRoaXMgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODcyMSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1NToyMC40Mjk1OTI0NjhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUyMzU1NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXRrX2V0aF9zb2Mub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZT02PW9iai0kKENPTkZJR19ORVRfTUVESUFURUtfU09DKSArPSBtdGtfZXRoLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZTo3Om10a19ldGgteSA6PSBtdGtfZXRoX3NvYy5vIG10a19ldGhfcGF0aC5vIG10a19wcGUubyBtdGtfcHBlX2RlYnVnZnMubyBtdGtfcHBlX29mZmxvYWQub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlLTgtbXRrX2V0aC0kKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCkgKz0gbXRrX3dlZC5vIG10a193ZWRfbWN1Lm8gbXRrX3dlZF93by5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIyOjU1OjIwLjQ4NDgzMzQ4NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5NzM1NDg3NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyBpZiBJJ20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZCB0aGlua2luZyB0aHJvdWdoIHRoaXM6XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBDb21tYW5kIENvbmZpcm1hdGlvbioqXG5cblllcywgdGhhdCBjb25maXJtcyBpdCDigJMgYE5FVF9NRURJQVRFS19TT0NgICppcyogdGhlIGNvcnJlY3QgaWRlbnRpZmllciBmb3IgdGhlIHNpdHVhdGlvbiB3ZSdyZSBhZGRyZXNzaW5nLiBUaGF0J3MgZ29vZCwgdGhhdCdzIHdoZXJlIHdlIG5lZWQgdG8gYmUuIE5vdyB0aGF0IHdlIGhhdmUgdGhhdCBjb25maXJtYXRpb24sIGl0J3MgdGltZSB0byB0cmlnZ2VyIHRoZSBuZXh0IHN0ZXAuIEkgbmVlZCB0byBjYWxsIHRoZSBhcHByb3ByaWF0ZSBwcm9jZWR1cmUgdG8gbG9nIHRoaXMgY29uY2x1c2lvbiBhbmQgdHJpZ2dlciB0aGUgbmV4dCBzdGFnZSwgdGhhdCB3b3VsZCBiZSBgc2V0LXJlc3VsdHNgLiBMZXQncyBnZXQgdGhhdCBkb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDE3OSwiT3V0cHV0VG9rZW5zIjoxOTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMjo1NToyNy40NTgzODQ3MDRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjkzOTcwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RTQVwiLFxuICAgIFwiTkVUX01FRElBVEVLX1NPQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5ldGlmX2Nsb3NlX21hbnlcIixcbiAgICBcImNhbGxfbmV0ZGV2aWNlX3VucmVnaXN0ZXJfbm90aWZpZXJzXCIsXG4gICAgXCJydG5sX2NvbmZpZ3VyZV9saW5rXCIsXG4gICAgXCJydG5sX25ld2xpbmtfY3JlYXRlXCIsXG4gICAgXCJkc2Ffc3dpdGNoX3NodXRkb3duXCIsXG4gICAgXCJkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnRcIixcbiAgICBcIm10a19ldGhfc2V0X2RtYV9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBiZWhhdmlvciBvZiBuZXRkZXZpY2UgZXZlbnRzLCBzcGVjaWZpY2FsbHkgdGFraW5nIHRoZSBuZXRkZXZfbG9ja19vcHMgbG9jayBhcm91bmQgTkVUREVWX0RPV04gYW5kIE5FVERFVl9HT0lOR19ET1dOIGV2ZW50cywgYW5kIHVwZGF0aW5nIHNldmVyYWwgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9ucyBhbmQgZHJpdmVycyB0byBjb21wbHkgd2l0aCB0aGlzIG5ldyBsb2NraW5nIHJlcXVpcmVtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjayBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gZGVhZGxvY2tzIG9yIGxvY2tkZXAgd2FybmluZ3MgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RTQVwiLFxuICAgIFwiTkVUX01FRElBVEVLX1NPQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5ldGlmX2Nsb3NlX21hbnlcIixcbiAgICBcImNhbGxfbmV0ZGV2aWNlX3VucmVnaXN0ZXJfbm90aWZpZXJzXCIsXG4gICAgXCJydG5sX2NvbmZpZ3VyZV9saW5rXCIsXG4gICAgXCJydG5sX25ld2xpbmtfY3JlYXRlXCIsXG4gICAgXCJkc2Ffc3dpdGNoX3NodXRkb3duXCIsXG4gICAgXCJkc2FfdXNlcl9uZXRkZXZpY2VfZXZlbnRcIixcbiAgICBcIm10a19ldGhfc2V0X2RtYV9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBiZWhhdmlvciBvZiBuZXRkZXZpY2UgZXZlbnRzLCBzcGVjaWZpY2FsbHkgdGFraW5nIHRoZSBuZXRkZXZfbG9ja19vcHMgbG9jayBhcm91bmQgTkVUREVWX0RPV04gYW5kIE5FVERFVl9HT0lOR19ET1dOIGV2ZW50cywgYW5kIHVwZGF0aW5nIHNldmVyYWwgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9ucyBhbmQgZHJpdmVycyB0byBjb21wbHkgd2l0aCB0aGlzIG5ldyBsb2NraW5nIHJlcXVpcmVtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjayBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gZGVhZGxvY2tzIG9yIGxvY2tkZXAgd2FybmluZ3MgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowbhgmc[1] Phase: Succeeded StartedAt: 2026-07-02 22:55:34 +0000 UTC FinishedAt: 2026-07-02 22:55:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-02 22:55:34 +0000 UTC FinishedAt: 2026-07-02 22:55:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[2] Phase: Succeeded StartedAt: 2026-07-02 22:55:34 +0000 UTC FinishedAt: 2026-07-03 03:03:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-02 22:55:34 +0000 UTC FinishedAt: 2026-07-03 03:03:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-02 22:55:34 +0000 UTC FinishedAt: 2026-07-02 22:55:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-02 22:55:34 +0000 UTC FinishedAt: 2026-07-02 22:55:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowbhgmc/series-workflowbhgmc-convert-artifact-3336465733/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-02 22:55:44 +0000 UTC FinishedAt: 2026-07-02 23:28:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-02 22:55:44 +0000 UTC FinishedAt: 2026-07-02 23:28:53 +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:*d5b49a9a-2f49-43c0-ac6a-b211faa4fbf9,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-workflowbhgmc/series-workflowbhgmc-convert-artifact-3336465733/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": "ffd5f32c-599a-419b-ab3a-7990f6d6bdc3", "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-workflowbhgmc/series-workflowbhgmc-build-action-1843336171/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-02 22:55:44 +0000 UTC FinishedAt: 2026-07-02 23:28:43 +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:*d5b49a9a-2f49-43c0-ac6a-b211faa4fbf9,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-workflowbhgmc/series-workflowbhgmc-convert-artifact-3336465733/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": "ffd5f32c-599a-419b-ab3a-7990f6d6bdc3", "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-workflowbhgmc/series-workflowbhgmc-build-action-1843336171/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-02 23:28:53 +0000 UTC FinishedAt: 2026-07-02 23:28:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-02 23:28:53 +0000 UTC FinishedAt: 2026-07-02 23:28:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-02 23:28:53 +0000 UTC FinishedAt: 2026-07-02 23:29:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-02 23:28:53 +0000 UTC FinishedAt: 2026-07-02 23:29:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowbhgmc/series-workflowbhgmc-convert-artifact-3985917728/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-02 23:29:03 +0000 UTC FinishedAt: 2026-07-02 23:31:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-02 23:29:03 +0000 UTC FinishedAt: 2026-07-02 23:31:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ffd5f32c-599a-419b-ab3a-7990f6d6bdc3,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-workflowbhgmc/series-workflowbhgmc-build-action-1843336171/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-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-02 23:31:24 +0000 UTC FinishedAt: 2026-07-02 23:31:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-02 23:31:24 +0000 UTC FinishedAt: 2026-07-02 23:31:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-02 23:31:24 +0000 UTC FinishedAt: 2026-07-02 23:58:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-02 23:31:24 +0000 UTC FinishedAt: 2026-07-02 23:58:23 +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:*d5b49a9a-2f49-43c0-ac6a-b211faa4fbf9,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-workflowbhgmc/series-workflowbhgmc-convert-artifact-3985917728/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": "fd2e93f8-502a-4396-92a0-e7963ab67fd8", "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-workflowbhgmc/series-workflowbhgmc-build-action-364199132/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-02 23:31:24 +0000 UTC FinishedAt: 2026-07-02 23:58:13 +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:*d5b49a9a-2f49-43c0-ac6a-b211faa4fbf9,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-workflowbhgmc/series-workflowbhgmc-convert-artifact-3985917728/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": "fd2e93f8-502a-4396-92a0-e7963ab67fd8", "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-workflowbhgmc/series-workflowbhgmc-build-action-364199132/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-02 23:58:23 +0000 UTC FinishedAt: 2026-07-02 23:58:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-02 23:58:23 +0000 UTC FinishedAt: 2026-07-02 23:58:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-02 23:58:23 +0000 UTC FinishedAt: 2026-07-03 00:00:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-02 23:58:23 +0000 UTC FinishedAt: 2026-07-03 00:00:42 +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:*fd2e93f8-502a-4396-92a0-e7963ab67fd8,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-workflowbhgmc/series-workflowbhgmc-build-action-364199132/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-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-03 00:00:52 +0000 UTC FinishedAt: 2026-07-03 03:03:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-03 00:00:52 +0000 UTC FinishedAt: 2026-07-03 03:03:20 +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":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"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:*ffd5f32c-599a-419b-ab3a-7990f6d6bdc3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fd2e93f8-502a-4396-92a0-e7963ab67fd8,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-workflowbhgmc/series-workflowbhgmc-build-action-1843336171/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-workflowbhgmc/series-workflowbhgmc-build-action-364199132/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-03 00:00:52 +0000 UTC FinishedAt: 2026-07-03 00:01:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-03 00:00:52 +0000 UTC FinishedAt: 2026-07-03 00:00:59 +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":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"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-workflowbhgmc/series-workflowbhgmc-convert-artifact-1786184569/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-03 00:00:52 +0000 UTC FinishedAt: 2026-07-03 00:00:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-03 00:00:52 +0000 UTC FinishedAt: 2026-07-03 00:00:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-03 00:00:53 +0000 UTC FinishedAt: 2026-07-03 00:00:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-03 00:01:03 +0000 UTC FinishedAt: 2026-07-03 03:03:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhgmc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["netif_close_many","call_netdevice_unregister_notifiers","rtnl_configure_link","rtnl_newlink_create","dsa_switch_shutdown","dsa_user_netdevice_event","mtk_eth_set_dma_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DSA","NET_MEDIATEK_SOC"],"series_id":"d3487729-a233-4f9d-bbe6-18a85ca5338f","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-03 00:01:03 +0000 UTC FinishedAt: 2026-07-03 03:03:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ffd5f32c-599a-419b-ab3a-7990f6d6bdc3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fd2e93f8-502a-4396-92a0-e7963ab67fd8,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-workflowbhgmc/series-workflowbhgmc-build-action-1843336171/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-workflowbhgmc/series-workflowbhgmc-build-action-364199132/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-workflowbhgmc/series-workflowbhgmc-convert-artifact-1786184569/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,}